Built motion from commit e0f774a0.|2.5.34
authorAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 31 Aug 2021 11:55:30 +0000 (13:55 +0200)
committerAndrea Amorese <andrea.amorese@xenialab.it>
Tue, 31 Aug 2021 11:55:30 +0000 (13:55 +0200)
1192 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/marketplace/i18n/ar.json
public/app/main/apps/marketplace/i18n/cs.json
public/app/main/apps/marketplace/i18n/da.json
public/app/main/apps/marketplace/i18n/de.json
public/app/main/apps/marketplace/i18n/en.json
public/app/main/apps/marketplace/i18n/es.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/marketplace/i18n/fa.json
public/app/main/apps/marketplace/i18n/fi.json
public/app/main/apps/marketplace/i18n/fr.json
public/app/main/apps/marketplace/i18n/he.json
public/app/main/apps/marketplace/i18n/hi.json
public/app/main/apps/marketplace/i18n/id.json
public/app/main/apps/marketplace/i18n/it.json
public/app/main/apps/marketplace/i18n/ja.json
public/app/main/apps/marketplace/i18n/ko.json
public/app/main/apps/marketplace/i18n/lt.json
public/app/main/apps/marketplace/i18n/lv.json
public/app/main/apps/marketplace/i18n/nl.json
public/app/main/apps/marketplace/i18n/no.json
public/app/main/apps/marketplace/i18n/pl.json
public/app/main/apps/marketplace/i18n/pt-BR.json
public/app/main/apps/marketplace/i18n/pt-PT.json
public/app/main/apps/marketplace/i18n/ru.json
public/app/main/apps/marketplace/i18n/sv.json
public/app/main/apps/marketplace/i18n/tr.json
public/app/main/apps/marketplace/i18n/zh-CN.json
public/app/main/apps/marketplace/i18n/zh-TW.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.61649c54.js [moved from public/scripts/app.69c9b812.js with 54% 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 bbca9b7..458d7ab 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-08-31T11:21:54.169Z",
+    "time": "2021-08-31T11:43:18.730Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index dcf219d..f39fd6e 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2021-08-31T11:21:54.169Z",
+    "time": "2021-08-31T11:43:18.730Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 53a27fb..5c4734e 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Ihr Passwort wiederherstellen",
-    "EMAIL_ADRESS": "E-mail Adresse",
+    "TITLE": "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 Kennworts wurde an Ihre Adresse gesendet!",
-    "PASSWORD_RESET_ERROR": "Passwort Fehler zurücksetzen",
+    "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",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Im Feld E-Mail ist erforderlich",
-      "EMAIL_MUST_VALID": "E-Mail muss eine gültige e-mail Adresse"
+      "EMAIL_REQUIRED": "Eingabe E-Mail Adresse erforderlich",
+      "EMAIL_MUST_VALID": "Es muss eine gültige E-Mail Adresse eingegeben werden"
     }
   }
 }
index c090dfa..bced170 100644 (file)
@@ -1,16 +1,16 @@
 {
   "LOGIN": {
-    "TITLE": "Melden Sie sich bei Ihrem Konto an",
+    "TITLE": "Bitte mit Ihrem Konto anmelden",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
-    "REMEMBER_ME": "Erinnere Dich an Mich",
+    "REMEMBER_ME": "Anmeldedaten merken",
     "FORGOT_PASSWORD": "Passwort vergessen?",
-    "LOG_IN": "LOG IN",
+    "LOG_IN": "ANMELDEN",
     "OR": "Oder",
-    "WITH_GOOGLE": "Melden Sie sich mit Google",
-    "WITH_FACEBOOK": "Mit Facebook anmelden",
+    "WITH_GOOGLE": "Anmeldung mit Google",
+    "WITH_FACEBOOK": "Anmeldung mit Facebook",
     "DONT_HAVE_ACCOUNT": "Sie haben noch kein Konto?",
-    "CREATE_ACCOUNT": "Erstellen Sie ein Konto",
+    "CREATE_ACCOUNT": "Konto erstellen",
     "ERRORS": {
       "EMAIL_REQUIRED": "Pflichtfeld",
       "EMAIL_MUST_VALID": "Falsches Format",
@@ -18,8 +18,8 @@
       "USERNAME_REQUIRED": "Pflichtfeld"
     },
     "USERNAME": "Benutzername",
-    "CANCEL": "Stornieren",
-    "SELECT": "Wählen",
+    "CANCEL": "Abbrechen",
+    "SELECT": "Auswählen",
     "TELEPHONES": "Telefone"
   }
 }
index e60162b..e6b577a 100644 (file)
@@ -13,7 +13,7 @@
       "METRIC_REQUIRED": "Pflichtfeld",
       "COLUMN_REQUIRED": "Pflichtfeld",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "CUSTOM_METRIC_REQUIRED": "benutzerdefinierte Metrik (erforderlich)",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
       "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
@@ -23,8 +23,8 @@
     "SAVE": "Speichern",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
     "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "GENERAL": "Allgemein",
     "FIELDS": "Felder",
     "CONDITION": "Bedingung",
-    "OPERATOR": "Betreiber",
+    "OPERATOR": "Operator",
     "GROUP": "Gruppe",
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "BEGRENZTES ERGEBNIS",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
     "FUNCTION": "Funktion",
     "GROUP_BY": "Gruppieren nach",
-    "ORDER_BY": "Bestellung von",
+    "ORDER_BY": "Sortieren nach",
     "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": "Löschen extrahierte Berichte",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
     "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Herunterladen extrahierte Berichte",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "DELETE": "Löschen",
     "REPORTNAME": "Berichtsname",
     "SEND_IF_EMPTY": "Senden, wenn leer",
index 4bc9896..02f4f10 100644 (file)
@@ -2,12 +2,12 @@
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzahl von Malen pro Interaktion",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "NEW_CHATDISPOSITION": "Neue Chat-Disposition",
+    "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
     "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
-    "OFFLINE_CHAT_BUTTON": "Offline-Chat-Taste",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
     "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Key",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
     "VARIABLE": "Variable",
     "INTERVAL": "Intervall",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
     "ADVANCED": "Erweitert",
     "FORWARDTRANSCRIPT": "Transkript weiterleiten",
     "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
-    "SKIPMESSAGEBUTTON": "Nachrichtentaste überspringen",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Bedingungsvereinbarung",
-    "NONE": "Keine",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
+    "NONE": "Nichts",
     "PRIORITY": "Priorität",
     "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Nicht verwalteter Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
     "AUTOCLOSE": "Automatisches Schließen aktivieren",
-    "ENABLEUNMANAGEDNOTE": "Nicht verwaltete Nachricht aktivieren",
-    "UNMANAGEDMESSAGE": "Nachricht",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
     "SKIPUNMANAGED": "Nachricht überspringen",
     "SENDUNMANAGED": "Nachricht senden",
-    "WEBSITESCRIPT": "Website-Script",
+    "WEBSITESCRIPT": "Webseiten-Skript",
     "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": "Dem Kunden \"schreiben\" erlauben, bevor der Agent akzeptiert",
+    "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
     "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht schließen",
-    "CLOSINGMESSAGEBUTTON": "Nachrichtentaste schließen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
     "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
     "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Echte Priorität",
+    "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
       "TEXT_REQUIRED": "Pflichtfeld",
       "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}} ",
       "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": "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",
+      "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",
       "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
       "WAITINGTITLE_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "KEY_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}} ",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "FONTSIZE_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "CUSTOMERALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "AGENTALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "SYSTEMALIAS_MAX_LENGTH": "Der Wert muss eine maximale Länge gleich {{max}} haben",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "BOTNAME_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld",
       "VIDAOOTOPIC_REQUIRED": "Pflichtfeld"
     },
-    "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",
+    "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",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
-    "MOUSEOVER": "Maus über",
+    "MOUSEOVER": "Mouse-Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Wählschalter",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "QUEUE": "Warteschlange",
     "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_GOTO": "Goto bearbeiten",
     "EDIT_GOTOIf": "GotoIf bearbeiten",
     "LIST": "Liste",
     "SNIPPET": "Snippet",
     "FORMS": "Formulare",
-    "UP": "Bis",
-    "DOWN": "Unten",
-    "COLLAPSE": "Zusammenklappen",
-    "PROACTIVEACTIONS": "Proaktive Aktionen",
-    "DISPOSITIONS": "Dispositionen",
+    "UP": "Nach Oben",
+    "DOWN": "Nach Unten",
+    "COLLAPSE": "Einklappen",
+    "PROACTIVEACTIONS": "Proaktive Anfragen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Aussehen",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
-    "BUTTONCOLOR": "Tastenfarbe",
+    "BUTTONCOLOR": "Buttonfarbe",
     "HEADERSHAPE": "Kopfzeilenform",
     "ANIMATION": "Animation",
     "DEFAULT": "Standard",
     "LABELS": "Labels",
     "HEADER_ONLINE": "Online-Kopfzeile",
     "ONLINE_MESSAGE": "Online Nachricht",
-    "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",
+    "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",
     "HEADER_OFFLINE": "Offline-Kopfzeile",
     "OFFLINE_MESSAGE": "Offline Nachricht",
-    "MESSAGE_TITLE": "Nachrichtenbezeichnung",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für die Eingabe von Anfragenachrichten",
-    "ENQUIRY_BUTTON": "Anfrage-Taste Text",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
     "RATING_MESSAGE": "Bewertungsnachricht",
-    "RATING_SEND": "Bewertung Senden Tasten-Text",
-    "RATING_SKIP": "Bewertung Überspringen Tasten-Text",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
-    "PROACTIVE": "Proaktive",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schliessen",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "EMBEDDING": "Einbettung",
+    "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
     "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
-      "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",
+      "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
+      "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "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": "Contact Manager-Liste, die zum Zuordnen von Kontakten verwendet wird",
+      "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
       "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
-      "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",
+      "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",
       "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
-      "AGENTIDENTIFIER": "Repräsentiert die Agentenkennung innerhalb der Chat-Sitzung im Snippet",
+      "AGENTIDENTIFIER": "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": "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"
+      "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
     "ONLINESTATE": "Online Status",
     "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
     "OFFLINETEMPLATE": "Offline Vorlage",
-    "CHATDISPOSITIONS": "Chat-Dispositionen",
-    "NO_CHATDISPOSITION_AVAILABLE": "Keine Chat-Dispositionen verfügbar",
-    "ADD_CHATDISPOSITION": "Chat Disposition hinzufügen",
+    "CHATDISPOSITIONS": "Chat-Qualifizierungen",
+    "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
+    "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "DELETE": "Löschen",
-    "EDIT_CHATDISPOSITION": "Chat-Disposition bearbeiten",
-    "DELETE_CHATDISPOSITION": "Chat-Disposition löschen",
+    "EDIT_CHATDISPOSITION": "Qualifizierung bearbeiten",
+    "DELETE_CHATDISPOSITION": "Qualifizierung löschen",
     "CHAT": "Chat",
     "ID": "ID",
     "NEW_CHATQUEUE": "Neue Chat-Warteschlange",
     "NEW_CHATWEBSITE": "Neue Chat-Website",
-    "ROUNDED": "Abgerundet",
-    "SQUARED": "Quadratisch",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ROUNDED": "Rundes Design",
+    "SQUARED": "Eckiges Design",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "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": "Öffnen",
-    "OPEN": "Öffnen",
+    "OPENED": "Geöffnet",
+    "OPEN": "Offen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
     "INTERACTIONS": "Interaktionen",
     "WEBSITE": "Website",
-    "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alles",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "TEAMADD_CHATQUEUE": "Team zur Chat-Warteschlange hinzufügen",
-    "AGENTADD_CHATQUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_CHATQUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CREATEDAT": "Erstellt am",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
-    "SELECTED_WEBSITE": "Wählen Sie eine Website",
+    "SELECTED_WEBSITE": "Ausgewählte Webseite",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "SELECT_WEBSITE": "Wählen Sie eine Website",
+    "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
-    "WAITINGTITLE": "Wartetitel",
-    "WAITINGMESSAGE": "Wartende Nachricht",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
-    "AGENTSADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "Pausiert",
+    "PAUSED": "in Pause",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "WRITING": "Schreiben",
+    "WAITING": "Wartezustand",
+    "WRITING": "am Schreiben",
     "MAIL": "E-Mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "PAUSE": "Pause",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Interne",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
-    "AGENTADD_QUEUE": "Agent zur Chat-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "DEFAULT_PAUSE": "Standard Pause",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
     "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "VOICE": "Sprache",
+    "IN_USE": "In Verwendung",
+    "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go to Echtzeit-Chat-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spion",
+    "AGENTAVATAR": "Agenten-Avatar",
+    "SPYINTERACTION": "Mitlesen",
     "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage schließen",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
-    "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",
+    "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",
     "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Ton",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "HIDEWHENOFFLINE": "Ausblenden",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
+    "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
     "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
     "AGENTIDENTIFIER": "Identifikator",
-    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
     "ALIGNMENT": "Ausrichtung",
     "BOTTOM_RIGHT": "Unten rechts",
     "LEFT": "Links",
     "CUSTOMERALIAS": "Kunden-Alias",
     "EDIT_TAG": "Tag bearbeiten",
     "TAG": "Tag",
-    "AGENTADD_CHATWEBSITE": "Agent zur Chat-Website hinzufügen",
+    "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
     "AGENTTRANSFER": "Agententransfer",
     "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
     "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
     "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Aktivieren vom Kunden gelieferten / gelesenen Benachrichtigungen",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
-    "CHATCANNEDANSWERS": "Vordefinierte Antworten",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Bot-Name",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "TEAMS_ASSOCIATION": "Teams Verband",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pausieren Sie die Verwendung, wenn die obligatorische Disposition aktiviert ist",
-    "ENABLESENDBUTTON": "Sendetaste aktivieren",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
     "FEEDBACKTITLE": "Feedback-Titel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api Key",
     "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Key",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "EMAIL_ACCOUNT": "Email-Konto",
     "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
-    "SUBJECT": "Gegenstand",
+    "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
-    "NOTE": "Hinweis",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "NOTE": "Notiz",
     "VIDAOOMETADATA": "Vidaoo-Metadaten",
     "VIDAOONOTE": "Vidaoo-Hinweis",
     "VIDAOOTOPIC": "Vidaoo-Thema"
index da8b00a..3c27f23 100644 (file)
@@ -1,8 +1,8 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "Sprachwarteschlange ID",
-    "CAMPAIGNID": "Kampagne ID",
-    "STATE": "Zustand",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
+    "CAMPAIGNID": "Kampagnen-ID",
+    "STATE": "Status",
     "NAME": "Name",
     "LISTS": "Listen",
     "UNIQUEID": "Eindeutige ID",
@@ -11,8 +11,8 @@
     "ENDTIME": "Endzeit",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper Geschichte",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "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 verfügbaren Artikel",
+    "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Der Name ist erforderlich",
-      "FIRSTNAME_REQUIRED": "Der Vorname ist erforderlich",
-      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
       "ALIAS_REQUIRED": "Alias ist erforderlich",
-      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
       "EMAIL_MUST_VALID": "Falsches Format",
-      "PHONEBAR_API": "Prüfen, ob die MotionBar ausgeführt wird und der Fernbedienungsschalter für den Agenten eingeschaltet ist",
+      "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
       "ACTIONTYPE_REQUIRED": "Pflichtfeld",
       "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositionen",
-    "VOICEDISPOSITIONS": "Sprachdispositionen",
-    "NEW_VOICEDISPOSITION": "Neue Sprachdisposition",
+    "DISPOSITION": "Qualifizierung",
+    "DISPOSITIONS": "Qualifizierungen",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
     "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Keine auswählen",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts 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": "Alle Löschen",
+    "DELETE_ALL": "Alles Löschen",
     "CONTACTMANAGER": "Kontaktmanager",
     "ID": "ID",
     "SETTINGS": "Einstellungen",
     "NEW_CONTACT": "Neuer Kontakt",
     "NEW_TAG": "Neuer Tag",
     "UPLOAD_CONTACTS": "Kontakte hochladen",
-    "FINISH": "Fertig",
-    "SUCCESS": "Erfolgreich",
+    "FINISH": "Beenden",
+    "SUCCESS": "Erfolg",
     "FAILURE": "Fehler",
     "ALL_CONTACTS": "Alle Kontakte",
     "NEW_CUSTOMFIELD": "Neues benutzerdefiniertes Feld",
-    "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",
+    "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",
     "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 Info",
-    "NONE": "Keine",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
-    "CHECK_DUPLICATES": "Duplikate prüfen",
+    "CHECK_DUPLICATES": "auf Duplikate prüfen",
     "DUPLICATES": "Duplikate",
-    "UPLOAD_CSV": "Hochladen von CSV",
+    "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "ALL_AGENTS": "Alle Agenten",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "DATEOFBIRTH": "Geburtsdatum",
     "NOTES": "Notizen",
-    "EXPORTCSVCONTACTS_LIST": "In CSV exportieren",
+    "EXPORTCSVCONTACTS_LIST": "In CSV-Datei exportieren",
     "GOTO_LIST": "Kontakte anzeigen",
     "GOTO_COMPANY": "Kontakte anzeigen",
     "REQUIRED": "Erforderlich",
     "SESSIONS": "Sitzungen",
     "AGENT": "Agent",
     "PROJECT": "Projekt",
-    "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",
+    "SELECT_LIST": "Liste auswählen",
+    "SELECT_COMPANY": "Unternehmen auswählen",
+    "SELECT_TAGS": "Tags auswählen",
     "HELP": {
-      "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"
+      "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"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "SOCIAL": "Social",
     "ROW": "Reihe",
-    "EXPORT_ERRORS": "Fehler exportieren",
+    "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
     "STOP": "Stopp",
-    "SELECT_FILE": "Datei aussuchen",
+    "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
     "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
-    "CUSTOMER_JOURNEY": "Kundenreise",
-    "SELECT_TAG": "Wählen Sie Tags aus",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
+    "SELECT_TAG": "Tag auswählen",
     "ALL": "Alle",
     "BILLINGINFORMATION": "Abrechnungsdaten",
     "COMPANY_FISCAL_TYPE": "Unternehmenssteuerart",
     "CREATE": "Erstellen",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Ablauftage",
+    "EXPIREDAY": "Ablauftag",
     "FLATDISCOUNT": "Firmenrabatt",
     "INVOICEARTICLE": "Gesetzliche Artikel",
     "ISOCODE": "Nationaler ISO-Code",
     "RELATIONSHIPCOMPANY": " ... mit",
     "SDICODE": "SDI-Code",
     "SOCIAL_CAPITAL": "Aktienkapital",
-    "VATNUMBER_CF": "Codice Fiscale / VAT",
-    "RECALLME": "Ruf mich zurück",
+    "VATNUMBER_CF": "Umsatzsteuer Identnummer / VAT",
+    "RECALLME": "Rückruf anfordern",
     "ACTIONTYPE": "Aktionstyp",
-    "CLICKTOACTION": "Zur Aktion klicken"
+    "CLICKTOACTION": "Klicken für Aktion"
   }
 }
index df9fabe..dbfb7c7 100644 (file)
@@ -1,10 +1,10 @@
 {
   "DASHBOARDS": {
-    "HOME": "Home",
+    "HOME": "Startseite",
     "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "MAIL": "E-Mail",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "RATING": "Bewertung",
     "FEEDBACK": "Feedback",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
-    "DISPOSITION": "Disposition",
+    "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
     "BROWSER_NAME": "Browser Name",
     "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Name des Betriebssystems",
-    "OS_VERSION": "Version des Betriebssystems",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Ruf mich zurück",
-    "DROP_RATE": "Abgebrochene Anrufrate",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
     "DROPPED": "Abgebrochen",
-    "DROPPED_TEXT": "Abgebrochene Anrufe aus der Warteschlange",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Aufnahmen",
-    "TODAY_MOTION_BULL_STATS": "Warteschlangen-Kampagnen Tagesstatistiken",
+    "RECORDINGS": "Aufzeichnungen",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
     "ORIGINATED": "Gewählt",
     "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
     "MOTIONDIALER": "Motion Dialer",
-    "DISPOSE": "Entsorgen",
+    "DISPOSE": "Qualifizieren",
     "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": "Keine",
+    "NONE": "Nichts",
     "NAME": "Name",
     "ANSWER_MACHINE": "Anrufbeantworter",
     "INTERESTED": "Interessiert",
     "NOT_INTERESTED": "Kein Interesse",
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
-    "SPECIAL": "Spezielle",
+    "SPECIAL": "Speziell",
     "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Verschieben",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
-    "MOBILE": "Mobile",
+    "MOBILE": "Mobilnummer",
     "DATE_OF_BIRTH": "Geburtsdatum",
     "COMPANY": "Unternehmen",
     "TAG": "Tag",
     "POSTALCODE": "Postleitzahl",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
-    "VOICE": "Sprache",
+    "VOICE": "Sprachanrufe",
     "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
-    "TODAY_INBOUND_STATS": "Inbound Warteschlangen Tagesstatistiken",
-    "TODAY_OUTBOUND_STATS": "Outbound Warteschlangen Tagesstatistiken",
-    "WAITING": "Anrufe in der Warteschlange",
+    "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
+    "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
-    "INBOUND_ANSWERED": "Angenommen",
-    "OUTBOUND_ANSWERED": "Angenommen",
-    "ABANDONED": "Verlassen",
-    "TOTAL_OFFERED": "Insgesamt",
+    "INBOUND_ANSWERED": "Angenommen eingehend",
+    "OUTBOUND_ANSWERED": "Angenommen ausgehend",
+    "ABANDONED": "Abgebrochen",
+    "TOTAL_OFFERED": "Gesamt angeboten",
     "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "INBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "OUTBOUND_ANSWER_RATE": "Angenommene Anrufrate",
-    "ABANDON_RATE": "Verlassene Anrufrate",
-    "UNMANAGED": "Nicht verwaltete",
-    "TOTAL": "Insgesamt",
+    "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
+    "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
+    "ABANDON_RATE": "Abbruchrate",
+    "UNMANAGED": "Nicht bearbeitet",
+    "TOTAL": "Gesamt",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "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"
+      "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"
     },
     "ERRORS": {
       "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
       "CAMPAIGN_REQUIRED": "Pflichtfeld",
       "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "WELCOME_TO_MOTION": "Willkommen bei Motion",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
-    "CONTACTMANAGER": "Contact Manager",
+    "CONTACTMANAGER": "Kontaktmanager",
     "DASHBOARD": "Dashboard",
     "EDIT_CONTACT": "Kontakt bearbeiten",
     "EMAIL": "E-Mail",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Eingehende Anrufe in der Warteschlange",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
     "CONTACTS": "Kontakte",
     "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
-    "RELOAD": "Neu laden",
+    "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
-    "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 ",
+    "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) ",
     "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": "Geben Sie ein und drücken Sie die Eingabetaste, um eine Nachricht zu senden",
+    "OF": "von",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
-    "CLOSE_AND_DISPOSE": "Schließen und Entsorgen",
-    "DISPOSITIONS": "Dispositionen",
-    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Entsorgen",
-    "ACCEPT": "Akzeptieren",
+    "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
+    "DISPOSITIONS": "Qualifizierungen",
+    "CLOSE_WITHOUT_DISPOSE": "Schließen ohne Qualifizierung",
+    "ACCEPT": "Annehmen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
-    "INFO": "Info",
+    "INFO": "Information",
     "NOTE": "Hinweis",
-    "ACCEPT_ELSEWHERE": "Anderswo akzeptiert",
+    "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "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": "Wählen Sie die Webseite",
-    "ALL": "Alle",
+    "SELECT_WEBSITE": "Webseite auswählen",
+    "ALL": "Alles",
     "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
     "OPEN": "Öffnen",
-    "SHOW": "Zeigen",
+    "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "UNKNOWN": "Unbekannt",
-    "SELECT_USER": "Wählen Sie einen Benutzer",
+    "SELECT_USER": "Benutzer auswählen",
     "LAST_MESSAGE": "Letzte Nachricht",
     "USER": "Benutzer",
     "TAGS": "Tags",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "CALLERID": "Anrufer-ID",
-    "END_AT": "Ende am",
+    "END_AT": "Beendet 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": "Es wurden keine vordefinierten Antworten gefunden",
-    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
+    "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein 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": "Sprachwarteschlangen filtern",
-    "LOADING_INTERACTION": "Wir laden die Interaktion ...",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
+    "LOADING_INTERACTION": "Interaktion wird geladen",
     "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": "Anruf",
+    "CALL_NUMBER": "Anrufen",
     "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Anruf richtig gespeichert",
-    "CALL_DISPOSED": "Anruf richtig entsorgt",
-    "CHANNEL_WAITING_TEXT": "Wartende Warteschlangen-Interaktionen",
+    "CALL_SAVED": "Anruf erfolgreich gespeichert",
+    "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "SELECT_AGENT": "Wählen Sie den Agenten aus",
+    "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
-    "SELECT_READ_UNREAD": "Wählen Sie Lesen/Ungelesen",
-    "SELECT_SUBSTATUS": "Wählen Sie Substatus",
+    "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
+    "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Verlassen",
-    "ABANDONEDQUEUECALLS": "Verlassene Warteschlangenanrufe",
+    "ABANDONAT": "Abgebrochen",
+    "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
     "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
-    "SELECT_CAMPAIGN": "Wählen Sie eine Warteschlange",
+    "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Neue verlassene Anrufe! Bitte neu laden",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
-    "CURRENTLY_IN_USE_BY": "Derzeit im Einsatz von",
-    "CUSTOMER_JOURNEY": "Kundenreise",
+    "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
+    "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "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",
+    "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",
     "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
-    "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",
+    "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",
     "VOICE_ANSWERED": "Angenommen",
     "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
-    "VOICE_ANSWER_RATE": "Angenommene Rate",
+    "VOICE_ANSWER_RATE": "Antwortrate",
     "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
     "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "Queue ruft AVG HOLD TIME an",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
     "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Gesprächszeit der Anrufe in der Warteschlage",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
     "VOICE_TALKING": "IM GESPRÄCH",
     "VOICE_TALKING_TEXT": "Aktive 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_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_WAITING": "Wartende Anrufe",
     "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "PRIVATE": "Privat",
+    "PRIVATE": "Persönlich",
     "PUBLIC": "Öffentlich",
-    "PUBLIC_INTERACTION": "Die Interaktion ist öffentlich",
+    "PUBLIC_INTERACTION": "Öffentliche Interaktion",
     "VISIBILITY": "Sichtbarkeit",
-    "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",
+    "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",
     "CHAT_INTERACTIONS": "Chat-Interaktionen",
     "FAX_INTERACTIONS": "Fax-Interaktionen",
-    "ID": "Id",
+    "ID": "ID",
     "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS": "Open Channel-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
     "SMS_INTERACTIONS": "SMS-Interaktionen",
-    "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?",
+    "CANCEL": "Abbrechen",
+    "DRAFT": "Entwurf speichern",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "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": "Buchhaltung",
+    "ACCOUNTINGDOC": "Abrechnungsdokumente",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle",
-    "ALL_STATUS": "Alle",
-    "ALL_STEP": "Alle",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "AUTHORIZED": "AUTORISIERT",
     "AUTOINVOICE": "SELBSTABRECHNUNG",
     "AUTOPROFORMA": "SELBST-PROFORMA",
-    "BALANCE": "BALANCE",
+    "BALANCE": "SALDO",
     "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": "Insgesamt",
+    "INVOICETOTAL": "Gesamt",
     "INVOICE_INFO": "Rechnung",
     "MANAGESALES": "Abonnements",
     "MOVEASSET": "Kapital",
     "QUOTATIONSTATUS": "Status",
     "QUOTATIONSUBSCRIPTION": "Dauer",
     "QUOTATIONTAX": "MwSt",
-    "QUOTATIONTOTAL": "Insgesamt",
+    "QUOTATIONTOTAL": "Gesamt",
     "QUOTATIONTOTALPRICE": "Gesamt netto",
-    "QUOTATIONTOTALS": "Insgesamt",
+    "QUOTATIONTOTALS": "Gesamt",
     "QUOTATIONTOTALTAX": "Gesamtsteuer",
     "QUOTATIONUNIT": "Einheit",
     "QUOTATIONVAT": "VAT",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
-    "WORKFLOW": "Wählen Sie einen Arbeitsablauf",
+    "WORKFLOW": "Arbeitsablauf wählen",
     "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 unter",
-    "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 innerhalb",
+    "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": "Wählen",
+    "CHOOSE": "Auswählen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-    "SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+    "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
-    "SELECT": "Wählen",
+    "SELECT": "Auswählen",
     "SELECT_CONTACT": "Kontakt auswählen",
-    "WHICH_ONE_TO_USE": "Welches möchten Sie verwenden?",
+    "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung 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 überprüfe deine Internetverbindung.",
+    "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AUTOCLOSE": "Schließen Sie die Kontaktlasche nach der Entsorgung automatisch",
-    "AGENT_PRESENCE": "Agentenpräsenz",
-    "SELECT_TEAM": "Team auswählen",
-    "AVAILABLE": "Erhältlich"
+    "AUTOCLOSE": "Tab nach Qualifizierung automatisch schließen",
+    "AGENT_PRESENCE": "Bereitschaftsstatus",
+    "SELECT_TEAM": "Team auswählen"
   }
 }
index 4b2f44e..fd1c6a8 100644 (file)
@@ -1,83 +1,83 @@
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "Zu",
+    "TO": "An",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "Cc",
-    "REPLY": "Antwort",
+    "CC": "CC",
+    "REPLY": "Antworten",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Vorwärts",
+    "FORWARD": "Weiterleiten",
     "SUBJECT": "Betreff",
-    "BCC": "Bcc",
+    "BCC": "BCC",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "SEARCH_FOR_ANYONE": "Suche",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "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",
+      "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",
       "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
-      "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",
+      "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}}",
       "VALUE_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "COMMAND_REQUIRED": "Pflichtfeld",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_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-Konten löschen",
-    "DISPOSITIONS": "Bestimmungen",
+    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "OTHERS": "Andere",
     "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
     "WHITELABEL": "White Label",
-    "SIGNATURE": "Unterschrift",
+    "SIGNATURE": "Signatur",
     "IMAP": "IMAP",
     "HOST": "Host",
     "USERNAME": "Benutzername",
-    "PORT": "Hafen",
+    "PORT": "Port",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
     "CONNTIMEOUT": "Connection Timeout [sek]",
     "SMTP": "SMTP",
     "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "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",
+    "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",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ALL_TEAMS": "Alle Teams",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "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",
+      "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",
       "FONT_SIZE": "Standard Schriftgröße",
-      "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"
+      "MARK_AS_UNREAD": "Aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
+    "OF": "von",
+    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
     "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "DISPOSITION": "Disposition",
-    "GOTOIF": "GotoIf",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "DISPOSITION": "Qualifizierung",
+    "GOTOIF": "GoToIf",
     "EDIT_GOTOIF": "Bearbeiten GotoIf",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "GOTOP": "GotoP",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Wechselwirkungen",
-    "STARTEDAT": "Gestartet am",
+    "INTERACTIONS": "Interaktionen",
+    "STARTEDAT": "Startdatum",
     "CONTACT": "Kontakt",
     "CLOSEDAT": "Geschlossen",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sichere",
+    "SECURE": "Sicher",
     "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": "Öffnen",
+    "OPENED": "Geöffnet",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
-    "VOICE": "Voice",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Channel öffnen",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Voller Name",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "TOTAL": "Insgesamt",
-    "IN": "In",
-    "OUT": "Aus",
+    "WAITING": "Wartezustand",
+    "TOTAL": "Gesamt",
+    "IN": "Eingehend",
+    "OUT": "Ausgehend",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Nie verifiziert",
+    "NEVER_VERIFIED": "Noch nicht verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
+    "VERIFY_SMTP": "Bitte SMTP-Einstellungen prüfen",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
-    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
-    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "VERIFYSMTP_MAILACCOUNT": "Bitte SMTP-Einstellungen prüfen",
+    "GOTOREALTIME_MAILACCOUNT": "Zum E-Mail-Konto Echtzeitmonitoring",
+    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
-    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
-    "INFO": "Info",
+    "IN_USE": "In Verwendung",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "INFO": "Information",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_MAILQUEUE": "Echtzeitmonitoring E-Mail Warteschlangen",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Spy",
+    "SPYINTERACTION": "Mithören",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis",
+    "NOTE": "Notiz",
     "TAGS": "Tags",
-    "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",
+    "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",
     "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": "Unterstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Löschen",
-    "EDIT_MAILSUBSTATUS": "Bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
-    "SEND_AS": "Senden Als",
-    "COMMAND": "Befehl",
+    "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",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DOWNLOAD": "Herunterladen",
-    "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",
+    "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",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp"
   }
index 235afae..97c6fe2 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "وصف",
     "DOWNLOAD_PLUGIN": "تنزيل المكون الإضافي",
     "DROP_TO_UPLOAD": "إسقاط للتحميل",
-    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "أسقط ملفك هنا للتحميل. فقط الرمز البريدي - ماكس. 4MB",
     "EDITOR": "محرر",
     "EDIT_PLUGIN": "تحرير المكوّن الإضافي",
     "FINISH": "إنهاء",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 3bd5ad2..495ea1e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop til upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop din fil her for at uploade. Kun ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Afslut",
index f150ff2..054564e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschreibung",
     "DOWNLOAD_PLUGIN": "Plugin herunterladen",
     "DROP_TO_UPLOAD": "Hochladen",
-    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Legen Sie Ihre Datei zum Hochladen hier ab. Nur PLZ - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Plugin bearbeiten",
     "FINISH": "Fertig",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index a85d3cb..56d6276 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descripción",
     "DOWNLOAD_PLUGIN": "Descargar plugin",
     "DROP_TO_UPLOAD": "Suelta para subir",
-    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Suelta tu archivo aquí para subirlo. Solo ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index bf299e5..0202268 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "شرح",
     "DOWNLOAD_PLUGIN": "دانلود پلاگین",
     "DROP_TO_UPLOAD": "قطره برای آپلود",
-    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 2 مگابایت",
+    "DROP_TO_UPLOAD_MESSAGE": "فایل خود را اینجا بگذارید تا آپلود شود فقط ZIP - حداکثر. 4 مگابایت",
     "EDITOR": "ویرایشگر",
     "EDIT_PLUGIN": "ویرایش پلاگین",
     "FINISH": "پایان دادن",
index be3860b..b934012 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Kuvaus",
     "DOWNLOAD_PLUGIN": "Lataa laajennus",
     "DROP_TO_UPLOAD": "Pudota lähetettäväksi",
-    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 2 Mt",
+    "DROP_TO_UPLOAD_MESSAGE": "Pudota tiedosto täällä lähetettäväksi. Vain ZIP - Max. 4 Mt",
     "EDITOR": "toimittaja",
     "EDIT_PLUGIN": "Muokkaa lisäosaa",
     "FINISH": "Suorittaa loppuun",
index edbcd90..bbf8e7b 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "La description",
     "DOWNLOAD_PLUGIN": "Télécharger le plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 2 Mo",
+    "DROP_TO_UPLOAD_MESSAGE": "Déposez votre fichier ici pour le télécharger. Seulement ZIP - Max. 4 Mo",
     "EDITOR": "Éditeur",
     "EDIT_PLUGIN": "Modifier le plugin",
     "FINISH": "terminer",
index c3cb181..d5a9a13 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "שמור",
     "INSTALLING": "התקנה",
     "DROP_TO_UPLOAD": "שחרר כדי להעלות",
-    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "כדי להעלות את הקובץ, שחרר אותו כאן. ZIP בלבד – מקס' 4MB",
     "UPLOAD_PLUGIN": "יישום Plug-in להעלאות",
     "UPLOADING": "העלאה",
     "CREATED_AT": "נוצר ב-",
index 1170227..043d58e 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "विवरण",
     "DOWNLOAD_PLUGIN": "प्लगइन डाउनलोड करें",
     "DROP_TO_UPLOAD": "अपलोड करने के लिए ड्रॉप",
-    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 2 एमबी",
+    "DROP_TO_UPLOAD_MESSAGE": "अपलोड करने के लिए अपनी फाइल यहां ड्रॉप करें। केवल ज़िप - अधिकतम। 4 एमबी",
     "EDITOR": "संपादक",
     "EDIT_PLUGIN": "प्लगइन संपादित करें",
     "FINISH": "समाप्त",
index c4fbe7e..86fb87a 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Deskripsi",
     "DOWNLOAD_PLUGIN": "Unduh plugin",
     "DROP_TO_UPLOAD": "Jatuhkan Untuk Mengunggah",
-    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Jatuhkan file Anda di sini untuk mengunggah. Hanya ZIP - Max. 4 MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Edit plugin",
     "FINISH": "Selesai",
index 68e0c53..212fdff 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Salva",
     "INSTALLING": "Installazione in corso",
     "DROP_TO_UPLOAD": "Trascina il file da caricare",
-    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Trascina qui il tuo plugin da caricare. Solo ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Upload in corso",
     "CREATED_AT": "Creato il",
index 3fd4f57..190c600 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "説明",
     "DOWNLOAD_PLUGIN": "プラグインをダウンロード",
     "DROP_TO_UPLOAD": "アップロードするドロップ",
-    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "アップロードするファイルをここにドロップします。 ZIP  -  Max。 4MB",
     "EDITOR": "編集者",
     "EDIT_PLUGIN": "プラグインを編集",
     "FINISH": "フィニッシュ",
index 29c0869..a3774d1 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "기술",
     "DOWNLOAD_PLUGIN": "플러그인 다운로드",
     "DROP_TO_UPLOAD": "올리기",
-    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "여기에 파일을 올려 업로드하십시오. ZIP - Max. 4MB",
     "EDITOR": "편집자",
     "EDIT_PLUGIN": "플러그인 편집",
     "FINISH": "끝",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index 154c0b7..aad4d13 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Apraksts",
     "DOWNLOAD_PLUGIN": "Lejupielādēt spraudni",
     "DROP_TO_UPLOAD": "Pārvelciet šeit, lai augšupielādētu",
-    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Pārvelciet datni šeit, lai augšupielādētu Tikai<i> ZIP</i> – maks. 4 MB",
     "EDITOR": "Redaktors",
     "EDIT_PLUGIN": "Rediģēt spraudni",
     "FINISH": "Pabeigt",
index 361f77e..0ab1946 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beschrijving",
     "DOWNLOAD_PLUGIN": "Download plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Zet je bestand hier neer om te uploaden. Alleen ZIP - Max. 4MB",
     "EDITOR": "Editor",
     "EDIT_PLUGIN": "Bewerk plugin",
     "FINISH": "Af hebben",
index d49bd20..0fbd637 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivelse",
     "DOWNLOAD_PLUGIN": "Last ned plugin",
     "DROP_TO_UPLOAD": "Drop til opplasting",
-    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Slett filen din her for å laste opp. Kun ZIP - Maks. 4MB",
     "EDITOR": "Redaktør",
     "EDIT_PLUGIN": "Rediger plugin",
     "FINISH": "Bli ferdig",
index d694357..2bda13c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Opis",
     "DOWNLOAD_PLUGIN": "Pobierz wtyczkę",
     "DROP_TO_UPLOAD": "Upuść, aby przesłać",
-    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 2 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Upuść swój plik tutaj, aby przesłać. Tylko ZIP - Max. 4 MB",
     "EDITOR": "Redaktor",
     "EDIT_PLUGIN": "Edytuj wtyczkę",
     "FINISH": "koniec",
index e80fbe2..312c4ab 100644 (file)
@@ -33,7 +33,7 @@
     "SAVE": "Save",
     "INSTALLING": "Installing",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 4MB",
     "UPLOAD_PLUGIN": "Upload plugin",
     "UPLOADING": "Uploading",
     "CREATED_AT": "Created at",
index ac5383c..e93ddba 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Descrição",
     "DOWNLOAD_PLUGIN": "Download do plugin",
     "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Solte seu arquivo aqui para fazer o upload. Apenas ZIP - Máx. 4MB",
     "EDITOR": "editor",
     "EDIT_PLUGIN": "Editar plugin",
     "FINISH": "Terminar",
index 39efe9f..534d51d 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Описание",
     "DOWNLOAD_PLUGIN": "Скачать плагин",
     "DROP_TO_UPLOAD": "Загрузить",
-    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 4MB",
     "EDITOR": "редактор",
     "EDIT_PLUGIN": "Изменить плагин",
     "FINISH": "Конец",
index 171327a..4085544 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Beskrivning",
     "DOWNLOAD_PLUGIN": "Hämta plugin",
     "DROP_TO_UPLOAD": "Släpp för att ladda upp",
-    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Släpp din fil här för att ladda upp. Endast ZIP - Max. 4MB",
     "EDITOR": "Redaktör",
     "EDIT_PLUGIN": "Redigera plugin",
     "FINISH": "Avsluta",
index 4646459..0c17adc 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "Açıklama",
     "DOWNLOAD_PLUGIN": "Eklentiyi indir",
     "DROP_TO_UPLOAD": "Yüklenmeye Bırak",
-    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Yüklemek için dosyanızı buraya bırakın. Sadece ZIP - Maks. 4MB",
     "EDITOR": "Editör",
     "EDIT_PLUGIN": "Eklentiyi düzenle",
     "FINISH": "Bitiş",
index 18246b8..ac2f84c 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下载插件",
     "DROP_TO_UPLOAD": "删除上传",
-    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "将您的文件放在此处上传。只有ZIP  -  Max。 4MB",
     "EDITOR": "编辑",
     "EDIT_PLUGIN": "编辑插件",
     "FINISH": "完",
index 2956f0d..98dc201 100644 (file)
@@ -15,7 +15,7 @@
     "DESCRIPTION": "描述",
     "DOWNLOAD_PLUGIN": "下載插件",
     "DROP_TO_UPLOAD": "刪除上傳",
-    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 2MB",
+    "DROP_TO_UPLOAD_MESSAGE": "將您的文件放在此處上傳。只有ZIP  -  Max。 4MB",
     "EDITOR": "編輯",
     "EDIT_PLUGIN": "編輯插件",
     "FINISH": "完",
index 0ef1225..d002733 100644 (file)
@@ -1,59 +1,59 @@
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
-    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
+    "TIMES": "Zeitstempel",
+    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "OPENCHANNELQUEUES": "Warteschlangen offener Kanal",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "AGENT_REQUIRED": "Pflichtfeld",
-      "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",
+      "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",
       "DISPOSITION_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
-      "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",
+      "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}}",
       "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",
-      "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",
+      "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",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
-      "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_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_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
-      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel ist erforderlich",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agent bearbeiten",
-    "EDIT_GOTO": "Bearbeiten Gehe zu",
-    "EDIT_NOOP": "Bearbeiten Noop",
-    "EDIT_GOTOIF": "Bearbeiten Gotoif",
+    "EDIT_AGENT": "Agenteb bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Zustand",
+    "CONDITION": "Bedingung",
     "TRUEPRIORITY": "Wahre Priorität",
     "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
     "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "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",
+    "ADD_OPENCHANNELQUEUE": "Warteschlange offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELQUEUE": "Warteschlange offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Warteschlange offener Kanal löschen",
+    "PENALTY": "Verzögerung",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
+    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
     "MOTIONADDRESS": "Motion Adresse",
-    "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.",
+    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
     "API": "API",
-    "DISPOSITIONS": "Bestimmungen",
+    "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Die Methode",
+    "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "In der Nähe",
-    "CLOSEMETHOD": "In der Nähe Methode",
-    "CLOSEURL": "Der URL",
-    "SELECTED": "Ausgewählte",
+    "CLOSE": "Schließen",
+    "CLOSEMETHOD": "Methode schließen",
+    "CLOSEURL": "URL schließen",
+    "SELECTED": "Ausgewählt",
     "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "Id",
+    "ID": "ID",
     "TIMEOUT": "Timeout",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
     "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "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",
+      "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",
       "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": "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"
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Gestartet am",
+    "STARTEDAT": "Startdatum",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Öffnen",
+    "OPENED": "Geöffnet",
     "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Wechselwirkungen",
+    "INTERACTIONS": "Interaktionen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Wählen Sie einen Status",
+    "SELECT_STATUS": "Status auswählen",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Hinweise",
-    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
-    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Anmerkungen",
+    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "SELECT_ACCOUNT": "Konto auswählen",
     "GOTOP": "Gotop",
     "EDIT_GOTOP": "Gotop bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "INFO": "Info",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "INFO": "Information",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Gebrauch",
+    "NOT_INUSE": "Nicht in Verwendung",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "Im Einsatz",
+    "IN_USE": "In Verwendung",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Interne",
+    "FULLNAME": "Vollständiger Name",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "UNPAUSE": "Pause beenden",
     "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
-    "WAITING": "Warten",
-    "VOICE": "Voice",
+    "WAITING": "Wartezustand",
+    "VOICE": "Anrufe",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
-    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Zum offener Kanal Echtzeitmonitoring",
+    "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
-    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "SPYINTERACTION": "Mithören",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Interaktionen gehen",
+    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
     "DELETE": "Löschen",
-    "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",
+    "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",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
     "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klingen",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
     "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
-    "ADVANCED": "Fortgeschritten",
+    "ADVANCED": "Erweitert",
     "PROXY": "Proxy",
-    "TOKEN": "Zeichen",
+    "TOKEN": "Token",
     "EDIT_TAG": "Tag bearbeiten",
-    "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",
+    "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",
     "SEND": "Senden",
-    "TO": "Zu",
-    "AGENTTRANSFER": "Agent Transfer",
+    "TO": "An",
+    "AGENTTRANSFER": "Weiterleitung Agent",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
-    "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "QUEUETRANSFER": "Weiterleitung Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "TRANSFER": "Weiterleitung",
+    "CANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
-    "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",
+    "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",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommen Messsage",
+    "WELCOMEMESSAGE": "Willkommensnachricht",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "Bot-Name",
-    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
-    "LEXREGION": "Region",
-    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "BOTNAME": "Botname",
+    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "LEXREGION": "Lex Region",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme angehalten",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterlagen ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterlagen inkl. Anhänge",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Hinweis"
+    "NOTE": "Notiz"
   }
 }
index b5e8a7a..ee88755 100644 (file)
 {
   "STAFF": {
     "CONTEXT": "Kontext",
-    "RINGINUSE": "Ring im Einsatz",
+    "RINGINUSE": "Innerhalb Verteilungsgrupppe",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Um sidenav",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
-    "SELECTED": "Ausgewählte",
+    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählt",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger 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": "Bedienplatz löschen",
-    "EDIT_AGENT": "Agent bearbeiten",
+    "DELETE_AGENT": "Agenten löschen",
+    "EDIT_AGENT": "Agenten 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": "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",
+      "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",
       "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 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
       "ALLOWCODECS_REQUIRED": "Pflichtfeld",
       "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
       "USERPROFILE_REQUIRED": "Pflichtfeld",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
       "CONFIRM_REQUIRED": "Pflichtfeld",
       "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
     "ACCOUNT": "Konto",
-    "VOICE": "Voice",
+    "VOICE": "Anrufe",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Infos",
+    "PERSONAL_INFO": "Persönliche Informationen",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern.",
+    "CHANGE_AVATAR": "Avatar ändern",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne",
-    "TRANSPORT": "Verkehr",
+    "INTERNAL": "Intern",
+    "TRANSPORT": "Transport",
     "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. 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",
+      "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",
       "SIPPORT": "Standardeinstellung: 5160",
-      "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",
+      "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",
       "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 Modul Tools verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "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)",
+      "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)",
       "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 Kennwort",
+    "NEW_PASSWORD": "Neues Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort ändern",
-    "CHANGEPASSWORD_USER": "Passwort ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
-    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
+    "CHANGEPASSWORD_AGENT": "Agent",
+    "CHANGEPASSWORD_USER": "Nutzer",
+    "CHANGEPASSWORD_TELEPHONE": "Telefon",
+    "LOGININPAUSE": "Pause nach Anmelden",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "ChanSpy",
+    "CHANSPY": "Listen-In",
     "OTHER_CHANNELS": "Andere Kanäle",
-    "CHATCAPACITY": "Chat Kapazität",
-    "MAILCAPACITY": "E-Kapazität",
-    "FAXCAPACITY": "Fax Kapazität",
-    "SMSCAPACITY": "Sms-Kapazität",
-    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
+    "CHATCAPACITY": "Kapazität Chats",
+    "MAILCAPACITY": "Kapazität E-Mail",
+    "FAXCAPACITY": "Kapazität Fax",
+    "SMSCAPACITY": "Kapazität SMSW",
+    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "\"Autom. Antwort\"",
+    "AUTOANSWER": "Auto-Antwort",
     "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "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",
+    "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",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP läuft [sec]",
+    "SIPEXPIRES": "SIP-Ablaufdatum",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Strafe",
+    "PENALTY": "Verzögerung",
     "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": "Hinzufügen von Agenten zu einer Gruppe",
-    "EDIT_TEAM": "Team bearbeiten.",
+    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
+    "EDIT_TEAM": "Team bearbeiten",
     "TYPE": "Typ",
-    "TELEPHONES": "Telefone",
-    "CALLERID": "Die Anrufer-ID",
-    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
+    "TELEPHONES": "Telefonnummern",
+    "CALLERID": "Anrufer-ID",
+    "ENABLERECORDING": "Aufzeichnung aktiv",
     "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": "Melden Sie Warteschlange",
+    "JOIN_QUEUE": "In Warteschlange beitreten",
     "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "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",
+    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
+    "TEAMADD_AGENT": "Zum Team hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Gruppenruf",
+    "CALLGROUP": "Gruppenanruf",
     "PICKUPGROUP": "Übernahmegruppe",
-    "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",
+    "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",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "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",
+    "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",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Anzeigen Web Control",
+    "SHOWWEBCONTROL": "WebControl anzeigen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
+    "OF": "von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Während der Pause nicht stören",
-    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
-    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
-    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
+    "DND": "Nicht stören",
+    "UNANSWEREDCALLBADGE": "Badge unbeantwortete Anrufe",
+    "ENABLEDTMFTONE": "DMFT-Töne aktivieren",
+    "AUTOANSWERDELAY": "Automatische Antwort nach",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "Sms",
+    "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
-    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu Warteschlange für eingehende Anrufe hinzufügen",
+    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
-    "SIP_WEBRTC": "Schluck",
-    "SETTINGS_WEBRTC": "die Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
+    "SIP_WEBRTC": "SIP/WebRTC",
+    "SETTINGS_WEBRTC": "Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "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",
+    "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",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
+    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
     "ALL_CHATWEBSITES": "Alle Chat-Websites",
     "ALL_FAXACCOUNTS": "Alle Faxkonten",
-    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
+    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
     "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 Faxwarteschlangen",
+    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
     "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 Sprachwarteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
     "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": "Faxwarteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-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": "Sprachwarteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Heißer Schreibtisch",
+    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Wechselnder Arbeitsplatz",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "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": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
+    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
+    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "USERPROFILE": "Benutzerprofil",
     "USERPROFILES": "Benutzerprofil",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
-    "VIDEOSUPPORT": "Video-Unterstützung",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
+    "VIDEOSUPPORT": "Unterstützt Video",
     "APIKEY": "API-Schlüssel",
     "APIKEYMANAGER_USER": "API Key Manager",
-    "GENERATE": "(Regenerieren",
+    "GENERATE": "Erneut generieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Löschen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
-    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
-    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
+    "REMOVE": "Entfernen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
+    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
+    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Regenerieren",
+    "REGENERATE": "Erneut generieren",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten 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": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
     "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
     "ATTACHMENTS": "Anhänge",
     "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
-    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanager Listen",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
     "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
     "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
-    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
-    "VOICE_RECORDINGS": "Sprachaufnahmen"
+    "SCREEN_RECORDINGS": "Bildschirmaufzeichnungen",
+    "VOICE_RECORDINGS": "Sprachaufzeichnungen"
   }
 }
index 6207bf0..d62768d 100644 (file)
     "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "Amtsleitungen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "TRUNKS": "Trunks",
+    "SEARCH_FOR_ANYONE": "Suche",
     "ERRORS": {
-      "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",
+      "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",
       "MONTHDAY_REQUIRED": "Tag des Monats ist 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",
+      "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",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
-      "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"
+      "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"
     },
     "HOST": "Host",
-    "SECRET": "Geheimnis",
-    "DEFAULTUSER": "Default User",
+    "SECRET": "Secret",
+    "DEFAULTUSER": "Standardnutzer",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Amtsleitung hinzufügen",
+    "ADD_TRUNK": "Trunk hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
       "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 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.",
+      "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.",
       "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 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.",
+      "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.",
       "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
       "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
-      "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).",
+      "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.",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "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)",
+      "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)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
+      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
       "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": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
       "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 gesendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
+      "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."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Löschen Sie Trunk",
+    "DELETE_TRUNK": "Trunk löschen",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweiterte",
+    "ADVANCED": "Erweitert",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Die Anrufer-ID",
+    "CALLERID": "Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "Mfv-Modus",
+    "DTMFMODE": "DTMF-Modus",
     "NAT": "NAT",
     "QUALIFY": "Qualifizieren",
     "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direkte Medien",
+    "DIRECTMEDIA": "Direct Media",
     "CALLCOUNTER": "Anrufzähler",
-    "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",
+    "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",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Hafen",
-    "TRANSPORT": "Verkehr",
+    "PORT": "Port",
+    "TRANSPORT": "Transport",
     "SAVE": "Speichern",
     "VARIABLES": "Variablen",
     "ADD_VARIABLE": "Variable hinzufügen",
     "EDIT_VARIABLE": "Variable bearbeiten",
     "DELETE_VARIABLE": "Variable löschen",
-    "SELECTED": "Ausgewählte",
-    "SELECT_ALL": "Alle auswählen",
-    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "TAGS": "Tags",
-    "ADD_TAG": "Variable hinzufügen",
-    "EDIT_TAG": "Variable bearbeiten",
-    "DELETE_TAG": "Variable löschen",
+    "ADD_TAG": "Tag hinzufügen",
+    "EDIT_TAG": "Tag bearbeiten",
+    "DELETE_TAG": "Tag löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
-    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
+    "ADD_CANNEDANSWER": "Textvorlage hinzufügen",
+    "EDIT_CANNEDANSWER": "Textvorlage bearbeiten",
+    "DELETE_CANNEDANSWER": "Testvorlage löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Ton bearbeiten",
-    "DELETE_SOUND": "Sound löschen",
-    "FINISH": "Fertig stellen",
+    "SOUNDS": "Audiodateien",
+    "EDIT_SOUND": "Audiodatei bearbeiten",
+    "DELETE_SOUND": "Audiodatei löschen",
+    "FINISH": "Abschließen",
     "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Auslöser bearbeiten",
-    "DELETE_TRIGGER": "Auslöser löschen",
+    "EDIT_TRIGGER": "Trigger bearbeiten",
+    "DELETE_TRIGGER": "Trigger löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automatisierungen",
-    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
+    "AUTOMATIONS": "Automation",
+    "EDIT_AUTOMATION": "Automation bearbeiten",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
     "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall für Löschen.",
+    "DELETE_INTERVAL": "Intervall löschen",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "Id",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Werkzeuge",
+    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
+    "UPLOAD_SOUND": "Audiodatei hochladen",
     "CHANNEL": "Kanal",
     "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
-    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
-    "ACTIONS": "Aktionen:",
+    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
+    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
+    "ACTIONS": "Aktionen",
     "NEW_AUTOMATION": "Neue Automation",
     "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe beschränken",
-    "OTHERFIELDS": "Andere Felder",
+    "CALL_LIMIT": "Anrufe limitieren",
+    "OTHERFIELDS": "Weitere Felder",
     "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
+    "NEW_CANNEDANSWER": "Neue Textvorlage",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neue Leitung",
-    "FROM": "Von",
-    "TO": "Zu",
-    "WEEKDAY": "Woche Tag",
-    "MONTHDAY": "Monat Tag",
+    "NEW_TRUNK": "Neuer Trunk",
+    "FROM": "von",
+    "TO": "an",
+    "WEEKDAY": "Wochentag",
+    "MONTHDAY": "Monatstag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "PASSWORD": "Passwort",
     "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "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",
+    "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",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgang",
+    "OUTPUT": "Ausgabe",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Berichtsbereich",
+    "REPORTRANGE": "Bereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
     "LAST_SEVEN_DAYS": "Letzte sieben Tage",
-    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
+    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Woche Tage",
+    "WEEKDAYS": "Wochentage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Voice",
+    "VOICE": "Sprachanrufe",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Maßnahme",
+    "NEW_ACTION": "Neue Aktion",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Abgehende Routen",
-    "EQUALS": "Ist gleich",
-    "NOT_EQUALS": "Nicht gleich",
-    "CONTACT_MANAGER": "Contacts Manager",
+    "OUTBOUNDROUTE": "Ausgehende Routen",
+    "EQUALS": "ist gleich",
+    "NOT_EQUALS": "ist nicht gleich",
+    "CONTACT_MANAGER": "Kontaktmanager",
     "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": "Keine",
+    "NO": "Nein",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Info",
+    "INFO": "Information",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Woche Tage",
-    "MONTH_DAYS": "Monat Tage",
+    "WEEK_DAYS": "Wochentage",
+    "MONTH_DAYS": "Monatstage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Armaturenbrett",
-    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
+    "DASHBOARD": "Dashboard",
+    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
-    "EDIT_WIDGET": "Bearbeiten Widget",
-    "DELETE_WIDGET": "Löschen Widget",
-    "FLIP_WIDGET": "Flip Widget",
+    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
+    "EDIT_WIDGET": "Widget bearbeiten",
+    "DELETE_WIDGET": "Widget löschen",
+    "FLIP_WIDGET": "Widget drehen",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
     "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
     "THEME": "Thema",
-    "LIGHT": "Licht",
+    "LIGHT": "Hell",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitale Datum Format",
+    "DIGITAL_FORMAT": "Digitales Datumsformat",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Wählen Sie",
+    "SELECT": "Auswählen",
     "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
-    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
-    "CRON": "Cron",
+    "GOTOREALTIME_TRUNK": "Zum Echtzeitmonitoring SIP-Trunks gehen",
+    "GOTO_TRUNK": "Zum SIP-Trunk gehen",
+    "CRON": "CrOn",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
     "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Im 2.",
-    "HOUR_ON_MINUTE": "Stunde Minute",
-    "AND_SECOND": "Und 2.",
-    "DAY_AT": "Tag an",
+    "ON_SECOND": "Zur Sekunde",
+    "HOUR_ON_MINUTE": "Stunde zur Minute",
+    "AND_SECOND": "und Sekunde",
+    "DAY_AT": "Am Tag",
     "START_TIME": "Startzeit",
-    "ON_THE": "Auf der",
-    "OF_EVERY": "Jedes",
+    "ON_THE": "Am",
+    "OF_EVERY": "An jedem",
     "MONTH_AT": "Monat",
-    "AT": "An",
+    "AT": "Um",
     "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": "Auf",
+    "ON": "Am",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Abgehende Routen",
-    "EVENTVARIABLES": "Bei Variablen",
+    "OUTBOUND_ROUTE": "Ausgehende Routen",
+    "EVENTVARIABLES": "Event-Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
     "T38PT_UDPTL": "T38 pt Udptl",
-    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
+    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
     "COLOR": "Farbe",
-    "LOCATION": "Lage",
-    "NEW_TAB": "Neue Registerkarte",
+    "LOCATION": "Standort",
+    "NEW_TAB": "Neuer Tab",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fenster Breite (px)",
+    "WINDOWWIDTH": "Fensterbreite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Verlassen",
+    "ABANDONED": "Abgebrochen",
     "WAITING": "Warten",
-    "TALKING": "Reden",
-    "ANSWERED": "Antwortete",
-    "UNMANAGED": "Nicht verwaltet",
+    "TALKING": "im Gespräch",
+    "ANSWERED": "Beantwortet",
+    "UNMANAGED": "Nicht bearbeitet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
     "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
     "METRIC": "Metrisch",
-    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
+    "FILTERVOICEQUEUES": "Anruf-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",
+    "NEXTCONTACT": "Nächster Kontakt",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "UPLOADING": "Hochladen",
-    "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",
+    "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",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner melden",
-    "PREVIOUSCONTACT": "Bisherige",
+    "REPORTSUBFOLDER": "Unterordner",
+    "PREVIOUSCONTACT": "Vorherigen Kontakt",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Info",
+    "SCRIPT_INFO": "Information",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globals",
+    "GLOBALS": "Globale Werte",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "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"
+    "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"
   }
 }
index c698d09..b21bd68 100644 (file)
@@ -1,68 +1,68 @@
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zur Echtzeitansicht Anruf-Warteschlange gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Voice Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "VOICEQUEUES": "Anruf-Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche",
     "BACK": "Zurück",
-    "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",
+    "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",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
+    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
     "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": "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",
+      "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",
       "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
       "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
       "VARIABLE_REQUIRED": "Pflichtfeld",
       "TRUNK_REQUIRED": "Pflichtfeld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
       "PROJECT_REQUIRED": "Pflichtfeld",
-      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
+      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
     },
     "GENERAL": "Allgemein",
     "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Versuchen Sie es erneut",
-    "WRAPUPTIME": "-Zeit",
-    "WEIGHT": "Gewicht",
-    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
-    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
+    "RETRY": "Bitte erneut versuchen",
+    "WRAPUPTIME": "Nacharbeit",
+    "WEIGHT": "Gewichtung",
+    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "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)",
+      "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. ",
       "RECORDING": "Aktivieren der Aufzeichnung",
-      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
+      "VOICEMAIL_CONTEXT": "Kontext der verwendeten Nebenstellen",
       "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, 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."
+      "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"
     },
-    "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,",
+    "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",
     "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
     "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "Arbeit nach Anruf",
-    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
-    "RINGINUSE": "Ring in Verwendung",
-    "MEMBERDELAY": "Die Verzögerung",
-    "TIMEOUTRESTART": "Timeout starten",
+    "AFTERCALLWORK": "Nacharbeit",
+    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
+    "RINGINUSE": "Klingeln bei Besetzt",
+    "MEMBERDELAY": "Verzögerung",
+    "TIMEOUTRESTART": "Zeitüberschreitung",
     "MONITORFORMAT": "Aufzeichnungsformat",
-    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
-    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
-    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
+    "SETINTERFACEVARIABLES": "Interface-Variablen",
+    "SETQUEUEVARIABLES": "Warteschlangen-Variablen",
+    "SETQUEUEENTRYVARIABLES": "Warteschlangen-Eintritts-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext",
+    "CONTEXT": "Kontext Austritt aus Warteschlange",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Ankommende Routen",
+    "INBOUNDROUTES": "Eingehende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
-    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
+    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
     "ACTIONS": "Aktionen",
-    "OUTBOUNDROUTES": "Abgehende Routen",
-    "DESTINATIONPATTERN": "Ziel Muster",
+    "OUTBOUNDROUTES": "Ausgehende Routen",
+    "DESTINATIONPATTERN": "Ziel-Pattern",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
-    "CUTDIGITS": "Die Ziffern",
-    "RECORDING": "Aufnahme",
+    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
+    "CUTDIGITS": "Ziffern",
+    "RECORDING": "Aufzeichnung",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
+    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Routen löschen",
+    "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "ADD_CONTEXT": "Kontext hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Löschen von Rahmen",
-    "VOICEMAILS": "Von Voicemails",
-    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
-    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
+    "DELETE_CONTEXT": "Kontext löschen",
+    "VOICEMAILS": "Voicemails",
+    "ADD_VOICEMAIL": "Voicemail hinzufügen",
+    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Voller Name",
+    "FULLNAME": "Vollständiger Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Befestigen Sie",
+    "ATTACH": "Anhängen",
     "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "Betreff der E-Mail",
-    "MAXSECONDS": "In Sekunden",
+    "MAXSECONDS": "Max. Sekunden",
     "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "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",
+    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
+    "MUSICONHOLDS": "Wartemusik",
+    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
+    "DELETE_MUSICONHOLD": "Wartemusik löschen",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufnahmen",
-    "CHANSPY": "ChanSpy",
+    "RECORDINGS": "Aufzeichnungen",
+    "CHANSPY": "Listen-In",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Fügen Sie ChanSpy",
-    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
-    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
+    "AUTH": "Authentifizierung",
+    "ADD_CHANSPY": "Listen-In hinzufügen",
+    "EDIT_CHANSPY": "Listen-In bearbeiten",
+    "DELETE_CHANSPY": "Listen-In löschen",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
-    "QUEUE_PARAMETERS": "Queue Parameter",
+    "QUEUE_CALLS": "Anrufe in Warteschlange",
+    "QUEUE_PARAMETERS": "Warteschlangen Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Kurzwahl",
+    "DIAL": "Wählen",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Interne Wahl",
-    "EXTERNALDIAL": "Externes Wählen",
-    "RINGGROUP": "Ring-Gruppe",
+    "INTERNALDIAL": "Interner Anruf",
+    "EXTERNALDIAL": "Externer Anruf",
+    "RINGGROUP": "Rufgruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Set",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefinierte",
+    "CUSTOM": "Benutzerdefiniert",
     "PROJECT": "Cally-Square Projekt",
     "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_APP": "App bearbeiten.",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_APP": "Anwendung löschen",
+    "DELETE_APP": "App löschen",
     "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "Amtsleitung",
+    "TRUNK": "Trunk",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
+    "ANNOUNCE_OVERRIDES": "Überschreibungen ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Erweiterung",
+    "EXTENSION": "Nebenstelle",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Ursache auflegen",
-    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
-    "CALLER_ID": "Die Anrufer-ID",
+    "HANGUP_CAUSE": "Ablehnungsgrund",
+    "OUTBOUNDDIAL": "Extern wählen",
+    "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufnahmen",
-    "CHANSPIES": "Chan Spies",
-    "VOICE": "Voice",
+    "VOICERECORDINGS": "Sprachaufzeichnungen",
+    "CHANSPIES": "Listen-Ins",
+    "VOICE": "Anrufe",
     "REALTIME": "Echtzeit",
-    "ID": "Id",
+    "ID": "ID",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "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",
+    "ADD_MOHSOUND": "Musik bei Halten hinzufügen",
+    "DOWNLOAD_MOHSOUND": "Musik bei Halten herunterladen",
+    "DELETE_MOHSOUND": "Musik bei Halten löschen",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "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_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue eingehende Route",
+    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Route",
+    "NEW_CONTEXT": "Neuer Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "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.",
+    "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",
     "EDIT_AGI": "AGI 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",
+    "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",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Empfangen am",
+    "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "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)",
+    "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)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Anzahl geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
-    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
+    "HANGUPCAUSE_22": "22 = Nummer geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
+    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Random",
+    "RANDOM": "Zufall",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
-    "INTERNAL": "Interne",
+    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
+    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
+    "INTERNAL": "Intern",
     "PHONE_STATE": "Telefonstatus",
     "PHONE_STATUS": "Telefonstatus",
     "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Unregistrierte",
+    "UNREGISTERED": "Nicht registriert",
     "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Gebrauch",
-    "INUSE": "Im Einsatz",
+    "NOT_INUSE": "Nicht in Verwendung",
+    "INUSE": "In Verwendung",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Auf Halten",
-    "RING": "Ring",
-    "UP": "Bis",
-    "INFO": "Info",
-    "TRUNKS": "Amtsleitungen",
+    "ONHOLD": "Halten",
+    "RING": "Klingeln",
+    "UP": "Nach Oben",
+    "INFO": "Information",
+    "TRUNKS": "Trunks",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine registry",
+    "NO_REGISTRY": "Keine Registrierung",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Warten",
-    "TALKING": "Sprechen",
-    "DID": "Haben",
+    "WAITING": "Wartezustand",
+    "TALKING": "Im Gespräch",
+    "DID": "DID",
     "CALLER": "Anrufer",
-    "TOTAL": "Insgesamt",
+    "TOTAL": "Gesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltete",
-    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
-    "AVG_DURATION": "Av-Dauer",
-    "AVG_BILLABLE": "Avg Fakturierbaren",
-    "SOURCE": "Quelle",
+    "UNMANAGED": "Nicht bearbeitet",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "AVG_DURATION": "Durchschnittliche Dauer",
+    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
+    "SOURCE": "Ursprung",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Aufgerufen",
+    "CALLED": "Angerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
+    "EDIT_VOICERECORDING": "Sprachaufzeichnungen verwalten",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
-    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard PAUSE",
+    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard Pause",
     "PAUSE": "Pause",
-    "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",
+    "UNPAUSE": "Fortsetzen",
+    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
+    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
+    "AGENTADD_VOICEQUEUE": "Agenten zu Anruf-Warteschlange hinzufügen",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
-    "NEW_MOHSOUND": "Neue Musik auf Halten",
-    "DOWNLOAD_MESSAGE": "Download",
+    "TEAMADD_VOICEQUEUE": "Team zur Anruf-Warteschlange hinzufügen",
+    "NEW_MOHSOUND": "Neue Wartemusik",
+    "DOWNLOAD_MESSAGE": "Herunterladen",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Insgesamt",
+    "TOTAL_OFFERED": "Gesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
-    "ALL_TEAMS": "Alle Mannschaften",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Teams",
     "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": "Bearbeiten ausgehenden DFÜ",
-    "ACCOUNTNAME": "Konto Name",
+    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
+    "ACCOUNTNAME": "Kontoname",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "Von",
-    "DISPOSITION": "Disposition",
+    "OF": "von",
+    "DISPOSITION": "Qualifizierung",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilweise Pause",
+    "PARTIALPAUSE": "Teilpause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Bearbeiten Trunk",
+    "EDIT_TRUNK": "Trunk bearbeiten",
     "ACTIVE": "Aktiv",
-    "CLEAR": "klar",
+    "CLEAR": "Leeren",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Fing an bei",
-    "ENDEDAT": "Beendet bei",
-    "TAG": "Etikett",
-    "DETAILS": "Einzelheiten",
+    "STARTEDAT": "Startdatum",
+    "ENDEDAT": "Enddatum",
+    "TAG": "Tag",
+    "DETAILS": "Details",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet bei",
-    "NOTE": "Hinweis",
+    "ANSWEREDAT": "Beantwortet am",
+    "NOTE": "Notiz",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Wählen Sie Startdatum",
-    "SELECT_TYPE": "Art auswählen",
-    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "SELECT_DATE": "Startdatum auswählen",
+    "SELECT_TYPE": "Typ auswählen",
+    "ABANDONEDCALLS": "Abgebrochene Anrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
+    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Vorgegebene Präfixe",
+    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Login-Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehende",
+    "INBOUND": "Eingehend",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Zwingende Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
-    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "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",
+    "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",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "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",
+    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
+    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
+    "SENTIMENT": "Sentiment",
+    "SENTIMENTANALYSIS": "Sentiment-Analyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
+    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
-    "ALIAS": "Alias"
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene"
   }
 }
index 80b51fd..c10b0a5 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Pflichtfeld",
       "ACCOUNTSID_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": "Der Wert muss kleiner oder gleich sein",
+      "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_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": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
-      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "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": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "PRIORITY_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": "Der Wert muss kleiner oder gleich sein",
+      "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_REQUIRED": "Pflichtfeld",
       "QUEUE_REQUIRED": "Pflichtfeld",
       "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
       "TAG_REQUIRED": "Pflichtfeld",
       "TEXT_REQUIRED": "Pflichtfeld",
-      "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_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": "Pflichtfeld",
       "TIMES_REQUIRED": "Pflichtfeld",
       "TOKEN_REQUIRED": "Pflichtfeld",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "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": "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_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_REQUIRED": "Pflichtfeld",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
       "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
       "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
       "PRIVATEKEY_REQUIRED": "Pflichtfeld",
       "PROJECTID_REQUIRED": "Pflichtfeld"
     },
     "HELP": {
-      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
-      "MANDATORYDISPOSITION": "Obligatorische Disposition",
-      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "LIST": "Liste für die Zuordnung von Kontakten",
+      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
       "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, die an neue Interaktionen gesendet wird"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, welche bei einer neuen Interaktion gesendet wird"
     },
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
-    "ACCOUNTSID": "Konto-SID",
+    "ACCOUNTSID": "Konto-ID",
     "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Whatsapp Konto konzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Textvorlage hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Fortgeschrittene",
+    "ADVANCED": "Erweitert",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agenten zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
-    "AGENTTRANSFER": "Agententransfer",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
-    "AGENT_TIMEOUT": "Agent Timeout",
+    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTTRANSFER": "Transfer Agent",
+    "AGENTTRANSFERTIMEOUT": "Timeout Agententransfer",
+    "AGENT_TIMEOUT": "Timeout Agent",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "Bot Name",
+    "BOTNAME": "Botname",
     "BUSY": "Beschäftigt",
-    "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",
+    "CANNEDANSWERS": "Textvorlagen",
+    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
+    "CANNED_ANSWER_SEARCH": "Suchen nach Textvorlagen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Befehl",
+    "COMMAND": "Eingabe",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Hergestellt in",
-    "DEFAULT_PAUSE": "STANDARD PAUSE",
+    "CREATED_AT": "Erstellt am",
+    "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": "Vordefinierte Antwort löschen",
-    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
+    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
     "DIALOGFLOW": "DialogFlow",
-    "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",
+    "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",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeiten Schließen",
-    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
-    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
-    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
+    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "EDIT_GOTOIF": "GoToIf bearbeiten",
+    "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": "Vordefinierte Antwort bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
-    "FALSEPRIORITY": "Falsche Priorität",
-    "GENERAL": "Allgemeines",
+    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Whatsapp-Warteschlange bearbeiten",
+    "FALSEPRIORITY": "Priorität falsch",
+    "GENERAL": "Allgemein",
     "GOTOIF": "Gotoif",
     "GOTOP": "Zum Seitenanfang",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
-    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
-    "ID": "Ich würde",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Zur Echtzeitansicht gehen",
+    "GO_TO_WHATSAPPACCOUNTS": "Zum Whatsapp-Konto gehen",
+    "ID": "ID",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Zu Interaktionen gehen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "Region",
-    "LIST": "Aufführen",
-    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LEXREGION": "LexRegion",
+    "LIST": "Liste",
+    "LOGGED_IN": "Eingeloggt (Verbunden mit SIP)",
     "LOGIN_TIME": "Anmeldezeit",
     "LOGOUT": "Ausloggen",
-    "MANDATORYDISPOSITION": "Obligatorische Disposition",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
+    "MANDATORYDISPOSITIONPAUSEID": "Qualifizierung pausieren, sofern erforderlich",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
+    "MOTIONPROXY": "Proxy",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Quailifizierung",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
     "NOOP": "Noop",
-    "NOTE": "Hinweis",
+    "NOTE": "Anmerkung",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONSOUND": "Klang",
+    "NOTIFICATIONSHAKE": "Schütteln",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "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_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_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Warteschlangenübertragung",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "QUEUETRANSFER": "Transfer an Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangentransfer",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "URL für Erhalt",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Fernbedienung",
+    "REMOTE": "Remote",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "sparen",
+    "SAVE": "Speichern",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
+    "SECRETACCESSKEY": "Geheimer Schlüssel",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Wählen Sie Alle",
-    "SELECT_NONE": "Nichts ausgewählt",
+    "SELECT_ALL": "Alles auswählen",
+    "SELECT_NONE": "Nichts auswählen",
     "SEND": "Senden",
-    "SETTINGS": "die Einstellungen",
-    "SPYINTERACTION": "Spionage-Interaktion",
-    "STARTEDAT": "Fing an bei",
-    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
+    "SETTINGS": "Einstellungen",
+    "SPYINTERACTION": "Mitlesen",
+    "STARTEDAT": "Startdatum",
+    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
     "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Etikett",
-    "TAGS": "Stichworte",
+    "TAG": "Tag",
+    "TAGS": "Tags",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Mannschaftsverband",
+    "TEAMS_ASSOCIATION": "Teamzuweisung",
     "TEXT": "Text",
-    "TIMEOUT": "Auszeit",
+    "TIMEOUT": "Zeitüberschreitung",
     "TIMER": "Timer",
-    "TIMES": "Mal",
-    "TO": "Zu",
-    "TOKEN": "Zeichen",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-    "TRANSFER": "Transfer",
+    "TIMES": "Zeiten",
+    "TO": "an",
+    "TOKEN": "Token",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
+    "TRANSFER": "Weiterleiten",
     "TRUEPRIORITY": "Wahre Priorität",
-    "TYPE": "Art",
+    "TYPE": "Typ",
     "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
     "VARIABLE": "Variable",
-    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
+    "WAITFORTHEASSIGNEDAGENT": "Auf den zugewiesenen Mitarbeiter warten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
-    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
+    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden-E-Mail",
+    "CLIENTEMAIL": "Kunden E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privat Schlüssel",
+    "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID"
   }
 }
index 3162f7a..fd8ccd9 100644 (file)
     "CHAT": "CHAT",
     "ACTIVITY": "Aktivität",
     "FRIENDS": "Freunde",
-    "APP_SERVERS": "Anwendungsserver",
-    "USER_STATS": "Benutzer Stats",
-    "EVENTS": "Veranstaltungen",
-    "NOTES": "Hinweise",
-    "QUICK_SETTINGS": "Schnelle Einstellungen",
+    "APP_SERVERS": "Server Anwendung",
+    "USER_STATS": "Benutzer Statistiken",
+    "EVENTS": "Ereignisse",
+    "NOTES": "Notizen",
+    "QUICK_SETTINGS": "Schnelleinstellungen",
     "NOTIFICATIONS": "Benachrichtigungen",
     "CLOUD_SYNC": "Cloud Synchronisieren",
-    "RETRO_THRUSTERS": "Retro Triebwerke",
-    "RECENT": "Die jüngsten",
+    "RETRO_THRUSTERS": "Retro Thrusters",
+    "RECENT": "Neuste",
     "START_NEW_CHAT": "Neuen Chat starten",
     "BACK": "Zurück",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "MORE": "Mehr",
     "SEND_MESSAGE": "Nachricht senden",
-    "REPLY_PLACEHOLDER": "Geben Sie ein, und drücken Sie die Eingabetaste, um Nachricht senden",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Kontakt xCALLY Motion Support",
+    "REPLY_PLACEHOLDER": "Nachricht eingeben und Enter drücken zum Senden",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Support kontaktieren",
     "EXPIRATION_DATE": "Ablaufdatum",
     "EXPIRATION_REASON": "Ablauf Grund",
     "LICENSE": "Lizenz",
-    "NEW_TOKEN": "Neue Token",
-    "OLD_TOKEN": "Alte Token",
+    "NEW_TOKEN": "Neuer Token",
+    "OLD_TOKEN": "Alter Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
     "TOKEN": "Token",
-    "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",
+    "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",
     "ERRORS": {
       "NAME_REQUIRED": "Pflichtfeld"
     },
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Grauzeit",
-    "NO_AVAILABLE_GROUPS": "Keine verfügbaren Gruppen",
-    "SAVE": "sparen",
-    "INFO": "Info",
+    "EXPIRATION_GRAY_PERIOD": "Ablauf Testphase",
+    "NO_AVAILABLE_GROUPS": "Keine Gruppen verfügbar",
+    "SAVE": "Speichern",
+    "INFO": "Information",
     "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. 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!",
+    "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",
     "WARNING": "Warnung"
   }
 }
index 1d7248b..6eb58fc 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Ihr Kennwort zurücksetzen",
-    "EMAIL_ADRESS": "E-mail Adresse",
-    "PASSWORD": "Kennwort",
-    "PASSWORD_CONFIRM": "Kennwort (bestätigen)",
-    "UPDATE_PASSWORD": "Kennwort zurücksetzen",
+    "TITLE": "Passwort zurücksetzen",
+    "EMAIL_ADRESS": "E-Mail Adresse",
+    "PASSWORD": "Passwort",
+    "PASSWORD_CONFIRM": "Passwort bestätigen",
+    "UPDATE_PASSWORD": "Passwort zurücksetzen",
     "GO_BACK": "Zurück zum Login",
-    "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",
+    "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",
     "ERRORS": {
-      "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.",
+      "EMAIL_REQUIRED": "E-Mail Adresse erfoderlich",
+      "EMAIL_MUST_VALID": "E-Mail Adresse ungültig",
+      "PASSWORD_REQUIRED": "Passwort erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, mit einem Minimum von 1 Kleinbuchstaben, Großbuchstaben, 1 numerisches und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
+      "SECURE_PASSWORD_PATTERN": "Muss mindestens 8 Zeichen enthalten, Minimum von 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index a399ee6..b6abdf2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "TOOLBAR": {
-    "TOGGLE_NAVIGATION": "Navigation wechseln",
-    "TOGGLE_NAVIGATION_FOLD": "Navigation wechseln Fach",
-    "TOGGLE_NAVIGATION_MODE": "Navigation Modus umschalten",
+    "TOGGLE_NAVIGATION": "Navigation umschalten",
+    "TOGGLE_NAVIGATION_FOLD": "Navigation einklappen",
+    "TOGGLE_NAVIGATION_MODE": "Navigation Moduswechsel",
     "SEARCH": "Suche",
-    "USER_SETTINGS": "Benutzereinstellungen",
-    "TOGGLE_QUICK_PANEL": "Um schnelle Panel",
+    "USER_SETTINGS": "Nutzereinstellungen",
+    "TOGGLE_QUICK_PANEL": "Schnelles Panel umschalten",
     "ENGLISH": "Englisch",
     "ITALIAN": "Italienisch",
     "FRENCH": "Französisch",
     "CHINESESIMPLIFIED": "Vereinfachtes Chinesisch",
     "CHINESETRADITIONAL": "Traditionelles Chinesisch",
     "DUTCH": "Niederländisch",
-    "FINNISH": "Finnische",
+    "FINNISH": "Finnisch",
     "DANISH": "Dänisch",
     "PORTUGUESE": "Portugiesisch",
     "NORWEGIAN": "Norwegisch",
     "HINDI": "Hindi",
     "TURKISH": "Türkisch",
     "PERSIAN": "Persisch",
-    "LOGIN_TIME": "Login Zeit",
-    "PAUSE_TIME": "Pausenzeit",
+    "LOGIN_TIME": "Zeit angemeldet",
+    "PAUSE_TIME": "Zeit in Pause",
     "PREVIEW": "Vorschau",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "NEW_PASSWORD": "Neues Passwort",
     "OLD_PASSWORD": "Altes Passwort",
     "SAVE": "Speichern",
     "TRIAL_VERSION": "Testversion",
-    "SOMEONE_LOGGED_YOU_OUT": "Jemand eingeloggt haben, möchten Sie angemeldet bleiben?",
+    "SOMEONE_LOGGED_YOU_OUT": "Sie wurden von einem anderen Benutzer abgemeldet. Erneut anmelden?",
     "STAY_LOGGED": "Angemeldet bleiben",
     "WARNING": "Warnung",
     "PAUSE": "Pause",
-    "RESUME": "Lebenslauf",
-    "NO_PAUSES_AVAILABLE": "Keine Pausen zur Verfügung",
-    "LATVIAN": "Lettische",
+    "RESUME": "Fortsetzen",
+    "NO_PAUSES_AVAILABLE": "Keine Pausen verfügbar",
+    "LATVIAN": "Lettisch",
     "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 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
-      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden"
+      "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"
     },
     "RESETPASSWORD": "Passwort zurücksetzen",
-    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bevor Ihr Passwort abläuft",
+    "PASSWORD_EXPIRE_REMAINING_DAYS": "Verbleibende Tage, bis zum Ablauf des Passwortes",
     "BROWSER_COMPATIBILITY": "Browserkompatibilität [Chrome, Opera, Safari]",
     "RECORDING": "Aufzeichnung",
-    "INVALID_LICENSE": "Ungültige Lizenz",
+    "INVALID_LICENSE": "Lizenz ungültig",
     "BROWSER": "Browser",
     "OS": "Betriebssystem",
-    "REQUIREMENTS": "Bedarf",
+    "REQUIREMENTS": "Anforderungen",
     "LICENSE": "Lizenz",
     "HTTPS": "HTTPS",
     "WEBRTCSUPPORT": "WebRTC-Unterstützung",
-    "REGISTERED": "Eingetragen",
+    "REGISTERED": "Registriert",
     "NOT_REGISTERED": "Nicht registriert",
-    "WEBRTC_LICENSE_NOT_ENABELD": "Die WebRTC-Lizenz ist nicht aktiviert",
-    "ATTENDED_TRANSFER": "Begleiteter Tranfer",
+    "WEBRTC_LICENSE_NOT_ENABELD": "WebRTC-Lizenz ist nicht aktiviert",
+    "ATTENDED_TRANSFER": "Warmer Transfer",
     "TRANSFER": "Transfer",
     "TARGET": "Ziel",
-    "CANCEL": "Stornieren",
+    "CANCEL": "Abbrechen",
     "FILENAME": "Dateiname",
     "STATUS": "Status",
     "ACTIONS": "Aktionen",
-    "SPEAKER": "Redner",
-    "RINGING": "Klingelton",
+    "SPEAKER": "Lautsprecher",
+    "RINGING": "Klingeln",
     "MICROPHONE": "Mikrofon",
     "PROFILE": "Profil",
-    "SERVICES": "Dienstleistungen",
+    "SERVICES": "Dienste",
     "AUDIO": "Audio",
     "FULLNAME": "Vollständiger Name",
     "NAME": "Name",
     "INTERNAL": "Intern",
-    "RINGINGDEVICE": "Klingelgerät",
-    "SPEAKERDEVICE": "Lautsprechergerät",
-    "MICROPHONEDEVICE": "Mikrofon Gerät",
+    "RINGINGDEVICE": "Klingeln auf Gerät",
+    "SPEAKERDEVICE": "Verwendeter Lautsprecher",
+    "MICROPHONEDEVICE": "Verwendetes Mikrofon",
     "CHANGEPASSWORD": "Passwort ändern",
-    "SETTINGS": "die Einstellungen",
+    "SETTINGS": "Einstellungen",
     "AUTOANSWER": "Automatische Antwort",
     "INDONESIAN": "Indonesisch",
     "ARABIC": "Arabisch",
-    "CALL": "Anruf",
+    "CALL": "Anrufen",
     "PREFIXES": "Präfixe",
     "HEBREW": "Hebräisch",
-    "ESTONIAN": "estnisch",
+    "ESTONIAN": "Estnisch",
     "CZECH": "Tschechisch",
-    "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).",
+    "BRAZILIAN": "Brasilianisch",
+    "CONFERENCE": "Konferenz mit 2 aktiven Sitzungen",
+    "CHANGE_LANGUAGE_MESSAGE": "Bitte Seite aktualisieren, um Änderungen zu übernehmen",
     "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 fa8d4b3..d1e6c4c 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.69c9b812.js"></script>
+  <script src="scripts/app.61649c54.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 54%
rename from public/scripts/app.69c9b812.js
rename to public/scripts/app.61649c54.js
index 37b9483..f5e5b16 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,s,r,l,d){var c;return{getToken:e,getCurrentUser:m,getPermissions:b,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return n(e)})},hasModulePermissions:function(i){return o(function(a,n){h()?a(!0):l.userProfileSection.get({userProfileId:c.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={};h()?(s.forEach(function(e){i[e]=!0}),a(i)):l.userProfileSection.get({userProfileId:c.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!!c&&c.role===e},hasPermission:n,hasResourcePermission:function(e,s){return o(function(a,i){return l.userProfileSection.get({userProfileId:c.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=d.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():l.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 A().then(function(){_.includes(c.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!h())return A().then(function(){a.forEach(function(e){_.includes(c.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:v,isAdmin:h,isLoggedIn:function(){return!!e()},isTelephone:function(){return"telephone"===c.role},isUser:f,login:function(e){return o(function(n,t){l.auth.local(e).$promise.then(function(e){return i.put("motion.token",e.token),l.user.get({id:e.id}).$promise}).then(function(e){(c=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),E("LOCAL_LOGIN")}).then(function(){if(v()&&1===c.showWebBar&&c.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(r.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 v()&&0!==c.showWebBar?u(e):h()||f()?p(!0):void 0}).then(function(e){c=_.assign(c,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(g(),e()):o.resolve().then(function(){return v()&&0!==c.showWebBar?o(function(e,n){l.user.logout({id:c.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):h()||f()?p(!1):void 0}).then(function(){g(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return h()?{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:u,reloadPermissions:A,removeCookies:g,retrieveUser:function(){return o(function(n,t){l.user.whoami().$promise.then(function(n){return"user"===n.role?b(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(c=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){c=_.merge(c,e)},getAuthenticationType:function(){var e=m(),n=s.localStorage.getItem("motion.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){return E("SSO_LOGIN"),"/api/auth/"+e}};function e(){return i.get("motion.token")}function m(){return c}function u(e){return o(function(n,t){l.user.login({id:c.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function p(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};l.user.update({id:c.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){i.remove("motion.token"),c&&(s.localStorage.removeItem("motion.user:"+c.id),c=null)}function v(){return"agent"===c.role}function h(){return"admin"===c.role}function f(){return"user"===c.role}function n(e){return!!c&&_.includes(c.permissions,e)}function b(e){var a=[];return o(function(n,t){return e||n(a),l.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 A(){return o(function(n,t){b(c.userProfileId).then(function(e){c.permissions=e,n()}).catch(function(e){t(e)})})}function E(e){var n=m(),t={authenticationType:e};s.localStorage.setItem("motion.user:"+n.id,JSON.stringify(t))}}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().$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=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,_.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?(n.paused=!0,e.paused+=1,0<e.available&&(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?(n.paused=!0,e.paused+=1,0<e.available&&(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
index 8e8008a..d03a0f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41fe=['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)]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','action','STRING','contactManager'];(function(_0x3bca0c,_0x4a125e){var _0x1b2a94=function(_0x52a5f7){while(--_0x52a5f7){_0x3bca0c['push'](_0x3bca0c['shift']());}};_0x1b2a94(++_0x4a125e);}(_0x41fe,0xd1));var _0xe41f=function(_0x26b80e,_0x5c9333){_0x26b80e=_0x26b80e-0x0;var _0x84a8a8=_0x41fe[_0x26b80e];return _0x84a8a8;};'use strict';var Sequelize=require(_0xe41f('0x0'));module[_0xe41f('0x1')]={'name':{'type':Sequelize[_0xe41f('0x2')],'get':function(_0x2c527f){return this[_0xe41f('0x3')](_0xe41f('0x4'));}},'action':{'type':Sequelize[_0xe41f('0x5')],'allowNull':![],'validate':{'isIn':{'args':[[_0xe41f('0x6'),_0xe41f('0x7'),_0xe41f('0x8'),_0xe41f('0x9'),_0xe41f('0xa'),_0xe41f('0xb'),_0xe41f('0xc'),_0xe41f('0xd')]],'msg':_0xe41f('0xe')}},'comment':_0xe41f('0xe')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0xe41f('0xf')},'data2':{'type':Sequelize[_0xe41f('0x5')](0x1000),'comment':'contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]'},'data3':{'type':Sequelize[_0xe41f('0x5')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize['STRING'](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0xe41f('0x5')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth]'},'data6':{'type':Sequelize['STRING'],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0xe41f('0x10')],'comments':_0xe41f('0x11')}};
\ No newline at end of file
+var _0x6455=['VIRTUAL','getDataValue','action','STRING','contactManager','motionbar','jscripty','urlForward','browser','bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','sequelize'];(function(_0x491faa,_0x4f2907){var _0x414440=function(_0x310864){while(--_0x310864){_0x491faa['push'](_0x491faa['shift']());}};_0x414440(++_0x4f2907);}(_0x6455,0x97));var _0x5645=function(_0x3159ef,_0x28c81b){_0x3159ef=_0x3159ef-0x0;var _0x47111f=_0x6455[_0x3159ef];return _0x47111f;};'use strict';var Sequelize=require(_0x5645('0x0'));module['exports']={'name':{'type':Sequelize[_0x5645('0x1')],'get':function(_0x2294f5){return this[_0x5645('0x2')](_0x5645('0x3'));}},'action':{'type':Sequelize[_0x5645('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x5645('0x5'),'integration',_0x5645('0x6'),_0x5645('0x7'),_0x5645('0x8'),_0x5645('0x9'),_0x5645('0xa'),_0x5645('0xb')]],'msg':_0x5645('0xc')}},'comment':_0x5645('0xc')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':'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)]'},'data2':{'type':Sequelize[_0x5645('0x4')](0x1000),'comment':_0x5645('0xd')},'data3':{'type':Sequelize[_0x5645('0x4')](0x1000),'comment':_0x5645('0xe')},'data4':{'type':Sequelize[_0x5645('0x4')](0x1000),'comments':_0x5645('0xf')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x5645('0x10')},'data6':{'type':Sequelize[_0x5645('0x4')],'comments':_0x5645('0x11')},'data7':{'type':Sequelize[_0x5645('0x12')],'comments':'urlForward[body]'}};
\ No newline at end of file
index cb32036..9c79910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef14=['json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','body','Action','params','catch','find','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status'];(function(_0x1c67e4,_0x4fb7c1){var _0x35f59=function(_0x4b5a7a){while(--_0x4b5a7a){_0x1c67e4['push'](_0x1c67e4['shift']());}};_0x35f59(++_0x4fb7c1);}(_0xef14,0x1aa));var _0x4ef1=function(_0xcd322f,_0x1985a3){_0xcd322f=_0xcd322f-0x0;var _0x7dc7cf=_0xef14[_0xcd322f];return _0x7dc7cf;};'use strict';var emlformat=require(_0x4ef1('0x0'));var rimraf=require(_0x4ef1('0x1'));var zipdir=require(_0x4ef1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4ef1('0x3'));var moment=require('moment');var BPromise=require(_0x4ef1('0x4'));var Mustache=require('mustache');var util=require(_0x4ef1('0x5'));var path=require(_0x4ef1('0x6'));var sox=require(_0x4ef1('0x7'));var csv=require(_0x4ef1('0x8'));var ejs=require(_0x4ef1('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4ef1('0xa'));var squel=require('squel');var crypto=require(_0x4ef1('0xb'));var jsforce=require(_0x4ef1('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4ef1('0x8'));var querystring=require(_0x4ef1('0xd'));var Papa=require('papaparse');var Redis=require(_0x4ef1('0xe'));var authService=require(_0x4ef1('0xf'));var qs=require(_0x4ef1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4ef1('0x11'))(_0x4ef1('0x12'));var utils=require(_0x4ef1('0x13'));var config=require(_0x4ef1('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x496fed,_0x4780c9){_0x4780c9=_0x4780c9||0xcc;return function(_0x2eafab){if(_0x2eafab){return _0x496fed[_0x4ef1('0x15')](_0x4780c9);}return _0x496fed['status'](_0x4780c9)[_0x4ef1('0x16')]();};}function respondWithResult(_0x2b1373,_0x1c4479){_0x1c4479=_0x1c4479||0xc8;return function(_0x21a31d){if(_0x21a31d){return _0x2b1373[_0x4ef1('0x17')](_0x1c4479)[_0x4ef1('0x18')](_0x21a31d);}};}function respondWithFilteredResult(_0x1c6371,_0x338e0a){return function(_0xde3145){if(_0xde3145){var _0x27368a=typeof _0x338e0a[_0x4ef1('0x19')]===_0x4ef1('0x1a')&&typeof _0x338e0a[_0x4ef1('0x1b')]===_0x4ef1('0x1a');var _0x1a86ef=_0xde3145[_0x4ef1('0x1c')];var _0x22b525=_0x27368a?0x0:_0x338e0a[_0x4ef1('0x19')];var _0xf89731=_0x27368a?_0xde3145[_0x4ef1('0x1c')]:_0x338e0a[_0x4ef1('0x19')]+_0x338e0a[_0x4ef1('0x1b')];var _0x4da2f0;if(_0xf89731>=_0x1a86ef){_0xf89731=_0x1a86ef;_0x4da2f0=0xc8;}else{_0x4da2f0=0xce;}_0x1c6371[_0x4ef1('0x17')](_0x4da2f0);return _0x1c6371[_0x4ef1('0x1d')](_0x4ef1('0x1e'),_0x22b525+'-'+_0xf89731+'/'+_0x1a86ef)[_0x4ef1('0x18')](_0xde3145);}return null;};}function patchUpdates(_0x44a1b2){return function(_0xd4e03a){try{jsonpatch['apply'](_0xd4e03a,_0x44a1b2,!![]);}catch(_0x1c70d5){return BPromise[_0x4ef1('0x1f')](_0x1c70d5);}return _0xd4e03a[_0x4ef1('0x20')]();};}function saveUpdates(_0x3dba85,_0x56a18c){return function(_0x483222){if(_0x483222){return _0x483222[_0x4ef1('0x21')](_0x3dba85)['then'](function(_0x3d6b45){return _0x3d6b45;});}return null;};}function removeEntity(_0x530c2a,_0x5d3e0b){return function(_0x859fff){if(_0x859fff){return _0x859fff[_0x4ef1('0x22')]()[_0x4ef1('0x23')](function(){_0x530c2a[_0x4ef1('0x17')](0xcc)[_0x4ef1('0x16')]();});}};}function handleEntityNotFound(_0xd29b08,_0x2fc891){return function(_0x2a60c0){if(!_0x2a60c0){_0xd29b08[_0x4ef1('0x15')](0x194);}return _0x2a60c0;};}function handleError(_0x227d16,_0x1cd3aa){_0x1cd3aa=_0x1cd3aa||0x1f4;return function(_0x4e94de){logger[_0x4ef1('0x24')](_0x4e94de[_0x4ef1('0x25')]);if(_0x4e94de[_0x4ef1('0x26')]){delete _0x4e94de[_0x4ef1('0x26')];}_0x227d16[_0x4ef1('0x17')](_0x1cd3aa)[_0x4ef1('0x27')](_0x4e94de);};}exports[_0x4ef1('0x21')]=function(_0x35e7cb,_0x27dac4){if(_0x35e7cb[_0x4ef1('0x28')]['id']){delete _0x35e7cb[_0x4ef1('0x28')]['id'];}return db[_0x4ef1('0x29')]['find']({'where':{'id':_0x35e7cb[_0x4ef1('0x2a')]['id']}})[_0x4ef1('0x23')](handleEntityNotFound(_0x27dac4,null))[_0x4ef1('0x23')](saveUpdates(_0x35e7cb[_0x4ef1('0x28')],null))[_0x4ef1('0x23')](respondWithResult(_0x27dac4,null))[_0x4ef1('0x2b')](handleError(_0x27dac4,null));};exports[_0x4ef1('0x22')]=function(_0x127690,_0x54b964){return db['Action'][_0x4ef1('0x2c')]({'where':{'id':_0x127690['params']['id']}})['then'](handleEntityNotFound(_0x54b964,null))[_0x4ef1('0x23')](removeEntity(_0x54b964,null))[_0x4ef1('0x2b')](handleError(_0x54b964,null));};
\ No newline at end of file
+var _0xe3fa=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','save','then','destroy','sendStatus','error','stack','name','send','update','body','find','params','catch','Action','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x374c4a,_0x5afa32){var _0x103f4a=function(_0x5a70e1){while(--_0x5a70e1){_0x374c4a['push'](_0x374c4a['shift']());}};_0x103f4a(++_0x5afa32);}(_0xe3fa,0xa5));var _0xae3f=function(_0x149016,_0x374450){_0x149016=_0x149016-0x0;var _0x326a70=_0xe3fa[_0x149016];return _0x326a70;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xae3f('0x0'));var zipdir=require(_0xae3f('0x1'));var jsonpatch=require(_0xae3f('0x2'));var rp=require(_0xae3f('0x3'));var moment=require(_0xae3f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xae3f('0x5'));var util=require('util');var path=require(_0xae3f('0x6'));var sox=require(_0xae3f('0x7'));var csv=require(_0xae3f('0x8'));var ejs=require(_0xae3f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xae3f('0xa'));var squel=require(_0xae3f('0xb'));var crypto=require(_0xae3f('0xc'));var jsforce=require(_0xae3f('0xd'));var deskjs=require(_0xae3f('0xe'));var toCsv=require(_0xae3f('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xae3f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xae3f('0x10'));var as=require(_0xae3f('0x11'));var hardwareService=require(_0xae3f('0x12'));var logger=require(_0xae3f('0x13'))(_0xae3f('0x14'));var utils=require(_0xae3f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xae3f('0x16'));var db=require(_0xae3f('0x17'))['db'];function respondWithStatusCode(_0x2f6156,_0x168c75){_0x168c75=_0x168c75||0xcc;return function(_0x140b6b){if(_0x140b6b){return _0x2f6156['sendStatus'](_0x168c75);}return _0x2f6156[_0xae3f('0x18')](_0x168c75)[_0xae3f('0x19')]();};}function respondWithResult(_0x35d3c6,_0x159655){_0x159655=_0x159655||0xc8;return function(_0x1eb132){if(_0x1eb132){return _0x35d3c6['status'](_0x159655)[_0xae3f('0x1a')](_0x1eb132);}};}function respondWithFilteredResult(_0x16eb7c,_0x278df1){return function(_0x1a5aac){if(_0x1a5aac){var _0xcf9883=typeof _0x278df1[_0xae3f('0x1b')]===_0xae3f('0x1c')&&typeof _0x278df1['limit']==='undefined';var _0x29bb13=_0x1a5aac[_0xae3f('0x1d')];var _0xc9e92f=_0xcf9883?0x0:_0x278df1[_0xae3f('0x1b')];var _0x294f47=_0xcf9883?_0x1a5aac[_0xae3f('0x1d')]:_0x278df1[_0xae3f('0x1b')]+_0x278df1[_0xae3f('0x1e')];var _0x4efa5d;if(_0x294f47>=_0x29bb13){_0x294f47=_0x29bb13;_0x4efa5d=0xc8;}else{_0x4efa5d=0xce;}_0x16eb7c[_0xae3f('0x18')](_0x4efa5d);return _0x16eb7c['set']('Content-Range',_0xc9e92f+'-'+_0x294f47+'/'+_0x29bb13)[_0xae3f('0x1a')](_0x1a5aac);}return null;};}function patchUpdates(_0x22326a){return function(_0x1a158){try{jsonpatch['apply'](_0x1a158,_0x22326a,!![]);}catch(_0x409fce){return BPromise['reject'](_0x409fce);}return _0x1a158[_0xae3f('0x1f')]();};}function saveUpdates(_0x499bcc,_0x40b056){return function(_0x979460){if(_0x979460){return _0x979460['update'](_0x499bcc)[_0xae3f('0x20')](function(_0x5dc916){return _0x5dc916;});}return null;};}function removeEntity(_0xc47e79,_0x4236e7){return function(_0x4b8d9c){if(_0x4b8d9c){return _0x4b8d9c[_0xae3f('0x21')]()[_0xae3f('0x20')](function(){_0xc47e79[_0xae3f('0x18')](0xcc)[_0xae3f('0x19')]();});}};}function handleEntityNotFound(_0x2c9a72,_0x1cc48c){return function(_0x16a83d){if(!_0x16a83d){_0x2c9a72[_0xae3f('0x22')](0x194);}return _0x16a83d;};}function handleError(_0x4c37ee,_0x145809){_0x145809=_0x145809||0x1f4;return function(_0xa38a0a){logger[_0xae3f('0x23')](_0xa38a0a[_0xae3f('0x24')]);if(_0xa38a0a[_0xae3f('0x25')]){delete _0xa38a0a[_0xae3f('0x25')];}_0x4c37ee[_0xae3f('0x18')](_0x145809)[_0xae3f('0x26')](_0xa38a0a);};}exports[_0xae3f('0x27')]=function(_0x4e5fee,_0x3ce093){if(_0x4e5fee[_0xae3f('0x28')]['id']){delete _0x4e5fee[_0xae3f('0x28')]['id'];}return db['Action'][_0xae3f('0x29')]({'where':{'id':_0x4e5fee[_0xae3f('0x2a')]['id']}})['then'](handleEntityNotFound(_0x3ce093,null))['then'](saveUpdates(_0x4e5fee[_0xae3f('0x28')],null))[_0xae3f('0x20')](respondWithResult(_0x3ce093,null))[_0xae3f('0x2b')](handleError(_0x3ce093,null));};exports[_0xae3f('0x21')]=function(_0x260fb2,_0xa740c4){return db[_0xae3f('0x2c')][_0xae3f('0x29')]({'where':{'id':_0x260fb2[_0xae3f('0x2a')]['id']}})[_0xae3f('0x20')](handleEntityNotFound(_0xa740c4,null))[_0xae3f('0x20')](removeEntity(_0xa740c4,null))['catch'](handleError(_0xa740c4,null));};
\ No newline at end of file
index 543b9c2..afda099 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6a1=['lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./action.attributes','exports','define','tools_actions'];(function(_0x15b51c,_0x49d742){var _0x54bdf3=function(_0x5c663a){while(--_0x5c663a){_0x15b51c['push'](_0x15b51c['shift']());}};_0x54bdf3(++_0x49d742);}(_0xb6a1,0x14a));var _0x1b6a=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xb6a1[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0x1b6a('0x0'));var util=require(_0x1b6a('0x1'));var logger=require(_0x1b6a('0x2'))(_0x1b6a('0x3'));var moment=require('moment');var BPromise=require(_0x1b6a('0x4'));var rp=require(_0x1b6a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1b6a('0x6'));var attributes=require(_0x1b6a('0x7'));module[_0x1b6a('0x8')]=function(_0x24a9c6,_0x4a9684){return _0x24a9c6[_0x1b6a('0x9')]('Action',attributes,{'tableName':_0x1b6a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9895=['lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./action.attributes','exports','Action'];(function(_0x584373,_0x57bc88){var _0x43c9d2=function(_0x1c9fab){while(--_0x1c9fab){_0x584373['push'](_0x584373['shift']());}};_0x43c9d2(++_0x57bc88);}(_0x9895,0x113));var _0x5989=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x9895[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x5989('0x0'));var util=require('util');var logger=require(_0x5989('0x1'))(_0x5989('0x2'));var moment=require(_0x5989('0x3'));var BPromise=require(_0x5989('0x4'));var rp=require(_0x5989('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5989('0x6'));var config=require(_0x5989('0x7'));var attributes=require(_0x5989('0x8'));module[_0x5989('0x9')]=function(_0x179865,_0x99111f){return _0x179865['define'](_0x5989('0xa'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de7f71b..c8a60b3 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(_0x1d94c8,_0x43f20e){var _0x27ff1b=function(_0x4a22fd){while(--_0x4a22fd){_0x1d94c8['push'](_0x1d94c8['shift']());}};_0x27ff1b(++_0x43f20e);}(_0x326f,0xd1));var _0xf326=function(_0x135128,_0x62d9b){_0x135128=_0x135128-0x0;var _0x579ef3=_0x326f[_0x135128];return _0x579ef3;};'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 _0x7fbe=['request','then','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4d09c1,_0x539a27){var _0x191480=function(_0x5d2526){while(--_0x5d2526){_0x4d09c1['push'](_0x4d09c1['shift']());}};_0x191480(++_0x539a27);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x25f280,_0x78272f){_0x25f280=_0x25f280-0x0;var _0x291cc9=_0x7fbe[_0x25f280];return _0x291cc9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7fb('0x0'));var BPromise=require(_0xe7fb('0x1'));var rs=require(_0xe7fb('0x2'));var fs=require('fs');var Redis=require(_0xe7fb('0x3'));var db=require(_0xe7fb('0x4'))['db'];var utils=require(_0xe7fb('0x5'));var logger=require(_0xe7fb('0x6'))(_0xe7fb('0x7'));var config=require(_0xe7fb('0x8'));var jayson=require(_0xe7fb('0x9'));var client=jayson[_0xe7fb('0xa')][_0xe7fb('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24cd67,_0x1f943f,_0x5ad75b){return new BPromise(function(_0x213ebc,_0x228f6b){return client[_0xe7fb('0xc')](_0x24cd67,_0x5ad75b)[_0xe7fb('0xd')](function(_0x4ba197){logger['info'](_0xe7fb('0xe'),_0x1f943f,_0xe7fb('0xf'));logger[_0xe7fb('0x10')](_0xe7fb('0x11'),_0x1f943f,_0xe7fb('0xf'),JSON[_0xe7fb('0x12')](_0x4ba197));if(_0x4ba197[_0xe7fb('0x13')]){if(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x14')]===0x1f4){logger[_0xe7fb('0x13')](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);return _0x228f6b(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x4ba197[_0xe7fb('0x13')]['message']);return _0x213ebc(_0x4ba197[_0xe7fb('0x13')][_0xe7fb('0x15')]);}else{logger['info'](_0xe7fb('0xe'),_0x1f943f,'request\x20sent');_0x213ebc(_0x4ba197[_0xe7fb('0x16')][_0xe7fb('0x15')]);}})[_0xe7fb('0x17')](function(_0x17e8a8){logger['error'](_0xe7fb('0xe'),_0x1f943f,_0x17e8a8);_0x228f6b(_0x17e8a8);});});}
\ No newline at end of file
index 9d9c3fb..b97c616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f15=['./action.controller','/:id','isAuthenticated','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3a9635,_0x1ab817){var _0x10d08c=function(_0x222242){while(--_0x222242){_0x3a9635['push'](_0x3a9635['shift']());}};_0x10d08c(++_0x1ab817);}(_0x1f15,0x1a6));var _0x51f1=function(_0xa5e64d,_0x31d8d8){_0xa5e64d=_0xa5e64d-0x0;var _0x4a6b15=_0x1f15[_0xa5e64d];return _0x4a6b15;};'use strict';var multer=require(_0x51f1('0x0'));var util=require(_0x51f1('0x1'));var path=require(_0x51f1('0x2'));var timeout=require(_0x51f1('0x3'));var express=require(_0x51f1('0x4'));var router=express[_0x51f1('0x5')]();var fs_extra=require(_0x51f1('0x6'));var auth=require(_0x51f1('0x7'));var interaction=require(_0x51f1('0x8'));var config=require(_0x51f1('0x9'));var controller=require(_0x51f1('0xa'));router['put'](_0x51f1('0xb'),auth[_0x51f1('0xc')](),controller['update']);router[_0x51f1('0xd')](_0x51f1('0xb'),auth[_0x51f1('0xc')](),controller[_0x51f1('0xe')]);module[_0x51f1('0xf')]=router;
\ No newline at end of file
+var _0x811d=['fs-extra','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x57344e,_0x3f539f){var _0x13c772=function(_0x4d4210){while(--_0x4d4210){_0x57344e['push'](_0x57344e['shift']());}};_0x13c772(++_0x3f539f);}(_0x811d,0xaf));var _0xd811=function(_0x5b3256,_0x4e2c6d){_0x5b3256=_0x5b3256-0x0;var _0x3fcd34=_0x811d[_0x5b3256];return _0x3fcd34;};'use strict';var multer=require(_0xd811('0x0'));var util=require(_0xd811('0x1'));var path=require(_0xd811('0x2'));var timeout=require(_0xd811('0x3'));var express=require(_0xd811('0x4'));var router=express['Router']();var fs_extra=require(_0xd811('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd811('0x6'));var config=require(_0xd811('0x7'));var controller=require(_0xd811('0x8'));router[_0xd811('0x9')](_0xd811('0xa'),auth[_0xd811('0xb')](),controller['update']);router[_0xd811('0xc')](_0xd811('0xa'),auth[_0xd811('0xb')](),controller[_0xd811('0xd')]);module[_0xd811('0xe')]=router;
\ No newline at end of file
index ad49e1a..1a589f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['exports','STRING','TEXT','sequelize'];(function(_0x1fd7f5,_0x1dfc07){var _0x38aaaf=function(_0x247cd3){while(--_0x247cd3){_0x1fd7f5['push'](_0x1fd7f5['shift']());}};_0x38aaaf(++_0x1dfc07);}(_0x1883,0xab));var _0x3188=function(_0x2109ff,_0x59366e){_0x2109ff=_0x2109ff-0x0;var _0x1b22e6=_0x1883[_0x2109ff];return _0x1b22e6;};'use strict';var Sequelize=require(_0x3188('0x0'));module[_0x3188('0x1')]={'name':{'type':Sequelize[_0x3188('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x3188('0x2')]},'parent':{'type':Sequelize[_0x3188('0x2')]},'table':{'type':Sequelize[_0x3188('0x2')]},'conditions':{'type':Sequelize[_0x3188('0x3')]},'joins':{'type':Sequelize[_0x3188('0x3')]}};
\ No newline at end of file
+var _0xb138=['TEXT','sequelize','exports','STRING'];(function(_0xfbaf4c,_0x6ad496){var _0x4513c9=function(_0x29e5a4){while(--_0x29e5a4){_0xfbaf4c['push'](_0xfbaf4c['shift']());}};_0x4513c9(++_0x6ad496);}(_0xb138,0x1dd));var _0x8b13=function(_0x23202d,_0x2c1b45){_0x23202d=_0x23202d-0x0;var _0x39bb25=_0xb138[_0x23202d];return _0x39bb25;};'use strict';var Sequelize=require(_0x8b13('0x0'));module[_0x8b13('0x1')]={'name':{'type':Sequelize[_0x8b13('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x8b13('0x2')]},'parent':{'type':Sequelize[_0x8b13('0x2')]},'table':{'type':Sequelize[_0x8b13('0x2')]},'conditions':{'type':Sequelize[_0x8b13('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 37a43c9..592c571 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6149=['run','Limited\x20Query:','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','update','UserProfileResource','destroy','then','error','stack','name','send','index','map','fieldName','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','AnalyticCustomReport','count','includeAll','include','findAll','catch','show','params','rawAttributes','length','create','body','user','get','Reports','UserProfileSection','userProfileId','autoAssociation','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','preview','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','table','MetricId','metric','function','replace','format','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','foreignKey','conditions','clone','debug','toString','sequelize','join','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','SEC_TO_TIME(%s)','HOUR(%s)','IS\x20NULL','IS\x20NOT\x20EMPTY','value','keyBy','select','groupBy','web','fullPath','%s-%s.%s','generate','output','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','countTable','COUNT(*)','QueryTypes','SELECT'];(function(_0x42fad8,_0x27d529){var _0x1f1705=function(_0x55ff33){while(--_0x55ff33){_0x42fad8['push'](_0x42fad8['shift']());}};_0x1f1705(++_0x27d529);}(_0x6149,0xaa));var _0x9614=function(_0x538406,_0x25c40b){_0x538406=_0x538406-0x0;var _0x18f8fd=_0x6149[_0x538406];return _0x18f8fd;};'use strict';var emlformat=require(_0x9614('0x0'));var rimraf=require(_0x9614('0x1'));var zipdir=require(_0x9614('0x2'));var jsonpatch=require(_0x9614('0x3'));var rp=require(_0x9614('0x4'));var moment=require(_0x9614('0x5'));var BPromise=require(_0x9614('0x6'));var Mustache=require(_0x9614('0x7'));var util=require(_0x9614('0x8'));var path=require('path');var sox=require(_0x9614('0x9'));var csv=require(_0x9614('0xa'));var ejs=require(_0x9614('0xb'));var fs=require('fs');var fs_extra=require(_0x9614('0xc'));var _=require(_0x9614('0xd'));var squel=require(_0x9614('0xe'));var crypto=require(_0x9614('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9614('0xa'));var querystring=require(_0x9614('0x10'));var Papa=require('papaparse');var Redis=require(_0x9614('0x11'));var authService=require(_0x9614('0x12'));var qs=require(_0x9614('0x13'));var as=require(_0x9614('0x14'));var hardwareService=require(_0x9614('0x15'));var logger=require(_0x9614('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x9614('0x17'));var licenseUtil=require(_0x9614('0x18'));var db=require('../../mysqldb')['db'];var dbH=require(_0x9614('0x19'))['dbH'];function respondWithStatusCode(_0x6bbb13,_0x3380c2){_0x3380c2=_0x3380c2||0xcc;return function(_0x2328a1){if(_0x2328a1){return _0x6bbb13[_0x9614('0x1a')](_0x3380c2);}return _0x6bbb13[_0x9614('0x1b')](_0x3380c2)[_0x9614('0x1c')]();};}function respondWithResult(_0x50f391,_0x235e63){_0x235e63=_0x235e63||0xc8;return function(_0x3a60cd){if(_0x3a60cd){return _0x50f391[_0x9614('0x1b')](_0x235e63)[_0x9614('0x1d')](_0x3a60cd);}};}function respondWithFilteredResult(_0xb0c54a,_0x5dc8af){return function(_0x5d85d5){if(_0x5d85d5){var _0x40af1e=typeof _0x5dc8af[_0x9614('0x1e')]===_0x9614('0x1f')&&typeof _0x5dc8af[_0x9614('0x20')]===_0x9614('0x1f');var _0x2da904=_0x5d85d5['count'];var _0x53d08c=_0x40af1e?0x0:_0x5dc8af[_0x9614('0x1e')];var _0x500b5c=_0x40af1e?_0x5d85d5['count']:_0x5dc8af['offset']+_0x5dc8af['limit'];var _0x1a3d4b;if(_0x500b5c>=_0x2da904){_0x500b5c=_0x2da904;_0x1a3d4b=0xc8;}else{_0x1a3d4b=0xce;}_0xb0c54a[_0x9614('0x1b')](_0x1a3d4b);return _0xb0c54a[_0x9614('0x21')](_0x9614('0x22'),_0x53d08c+'-'+_0x500b5c+'/'+_0x2da904)[_0x9614('0x1d')](_0x5d85d5);}return null;};}function patchUpdates(_0x1f7a0f){return function(_0x1d307e){try{jsonpatch['apply'](_0x1d307e,_0x1f7a0f,!![]);}catch(_0x95e90){return BPromise[_0x9614('0x23')](_0x95e90);}return _0x1d307e['save']();};}function saveUpdates(_0x4d80f8,_0x64ab93){return function(_0x3a6c19){if(_0x3a6c19){return _0x3a6c19[_0x9614('0x24')](_0x4d80f8)['then'](function(_0x427710){return _0x427710;});}return null;};}function removeEntity(_0xe160a4,_0x5988d4){return function(_0xcb05dc){if(_0xcb05dc){return _0xcb05dc['destroy']()['then'](function(){var _0x3a0f2f=_0xcb05dc['get']({'plain':!![]});var _0x3c906d='CustomReports';return db[_0x9614('0x25')][_0x9614('0x26')]({'where':{'type':_0x3c906d,'resourceId':_0x3a0f2f['id']}})[_0x9614('0x27')](function(){return _0xcb05dc;});})[_0x9614('0x27')](function(){_0xe160a4[_0x9614('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3f36fe,_0x324855){return function(_0x26c0f9){if(!_0x26c0f9){_0x3f36fe[_0x9614('0x1a')](0x194);}return _0x26c0f9;};}function handleError(_0x41236f,_0x51c541){_0x51c541=_0x51c541||0x1f4;return function(_0x256df8){logger[_0x9614('0x28')](_0x256df8[_0x9614('0x29')]);if(_0x256df8[_0x9614('0x2a')]){delete _0x256df8['name'];}_0x41236f[_0x9614('0x1b')](_0x51c541)[_0x9614('0x2b')](_0x256df8);};}exports[_0x9614('0x2c')]=function(_0xf78a08,_0x4a0d20){var _0x2b7886={},_0x591b2d={},_0x15321a={'count':0x0,'rows':[]};var _0x9f09e6=_[_0x9614('0x2d')](db['AnalyticCustomReport']['rawAttributes'],function(_0x79d39a){return{'name':_0x79d39a[_0x9614('0x2e')],'type':_0x79d39a[_0x9614('0x2f')]['key']};});_0x591b2d['model']=_[_0x9614('0x2d')](_0x9f09e6,'name');_0x591b2d[_0x9614('0x30')]=_[_0x9614('0x31')](_0xf78a08[_0x9614('0x30')]);_0x591b2d[_0x9614('0x32')]=_[_0x9614('0x33')](_0x591b2d[_0x9614('0x34')],_0x591b2d['query']);_0x2b7886[_0x9614('0x35')]=_[_0x9614('0x33')](_0x591b2d[_0x9614('0x34')],qs[_0x9614('0x36')](_0xf78a08[_0x9614('0x30')]['fields']));_0x2b7886['attributes']=_0x2b7886[_0x9614('0x35')]['length']?_0x2b7886[_0x9614('0x35')]:_0x591b2d[_0x9614('0x34')];if(!_0xf78a08[_0x9614('0x30')][_0x9614('0x37')](_0x9614('0x38'))){_0x2b7886['limit']=qs[_0x9614('0x20')](_0xf78a08['query'][_0x9614('0x20')]);_0x2b7886[_0x9614('0x1e')]=qs[_0x9614('0x1e')](_0xf78a08['query'][_0x9614('0x1e')]);}_0x2b7886[_0x9614('0x39')]=qs[_0x9614('0x3a')](_0xf78a08[_0x9614('0x30')][_0x9614('0x3a')]);_0x2b7886[_0x9614('0x3b')]=qs[_0x9614('0x32')](_[_0x9614('0x3c')](_0xf78a08['query'],_0x591b2d[_0x9614('0x32')]),_0x9f09e6);if(_0xf78a08[_0x9614('0x30')][_0x9614('0x3d')]){_0x2b7886[_0x9614('0x3b')]=_[_0x9614('0x3e')](_0x2b7886[_0x9614('0x3b')],{'$or':_[_0x9614('0x2d')](_0x9f09e6,function(_0x521777){if(_0x521777[_0x9614('0x2f')]!=='VIRTUAL'){var _0xefa9cb={};_0xefa9cb[_0x521777['name']]={'$like':'%'+_0xf78a08[_0x9614('0x30')][_0x9614('0x3d')]+'%'};return _0xefa9cb;}})});}_0x2b7886=_[_0x9614('0x3e')]({},_0x2b7886,_0xf78a08[_0x9614('0x3f')]);var _0x47d945={'where':_0x2b7886[_0x9614('0x3b')]};return db[_0x9614('0x40')][_0x9614('0x41')](_0x47d945)[_0x9614('0x27')](function(_0x502253){_0x15321a[_0x9614('0x41')]=_0x502253;if(_0xf78a08['query'][_0x9614('0x42')]){_0x2b7886[_0x9614('0x43')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0x9614('0x44')](_0x2b7886);})[_0x9614('0x27')](function(_0x2a3f81){_0x15321a['rows']=_0x2a3f81;return _0x15321a;})['then'](respondWithFilteredResult(_0x4a0d20,_0x2b7886))[_0x9614('0x45')](handleError(_0x4a0d20,null));};exports[_0x9614('0x46')]=function(_0x1e60e9,_0x4ddd4b){var _0x555d8b={'raw':![],'where':{'id':_0x1e60e9[_0x9614('0x47')]['id']}},_0x4425bb={};_0x4425bb['model']=_[_0x9614('0x31')](db[_0x9614('0x40')][_0x9614('0x48')]);_0x4425bb[_0x9614('0x30')]=_['keys'](_0x1e60e9['query']);_0x4425bb[_0x9614('0x32')]=_[_0x9614('0x33')](_0x4425bb[_0x9614('0x34')],_0x4425bb[_0x9614('0x30')]);_0x555d8b[_0x9614('0x35')]=_['intersection'](_0x4425bb[_0x9614('0x34')],qs[_0x9614('0x36')](_0x1e60e9['query']['fields']));_0x555d8b[_0x9614('0x35')]=_0x555d8b[_0x9614('0x35')][_0x9614('0x49')]?_0x555d8b[_0x9614('0x35')]:_0x4425bb[_0x9614('0x34')];if(_0x1e60e9[_0x9614('0x30')][_0x9614('0x42')]){_0x555d8b['include']=[{'all':!![]}];}_0x555d8b=_['merge']({},_0x555d8b,_0x1e60e9[_0x9614('0x3f')]);return db[_0x9614('0x40')]['find'](_0x555d8b)[_0x9614('0x27')](handleEntityNotFound(_0x4ddd4b,null))['then'](respondWithResult(_0x4ddd4b,null))[_0x9614('0x45')](handleError(_0x4ddd4b,null));};exports[_0x9614('0x4a')]=function(_0x3d7925,_0x169df5){return db['AnalyticCustomReport'][_0x9614('0x4a')](_0x3d7925[_0x9614('0x4b')],{})[_0x9614('0x27')](function(_0x19a4cb){var _0x56e752=_0x3d7925[_0x9614('0x4c')][_0x9614('0x4d')]({'plain':!![]});if(!_0x56e752)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x56e752['role']===_0x9614('0x4c')){var _0x2f1154=_0x19a4cb[_0x9614('0x4d')]({'plain':!![]});var _0x28795e=_0x9614('0x4e');return db[_0x9614('0x4f')]['find']({'where':{'name':_0x28795e,'userProfileId':_0x56e752[_0x9614('0x50')]},'raw':!![]})[_0x9614('0x27')](function(_0x320cda){if(_0x320cda&&_0x320cda[_0x9614('0x51')]===0x0){return db[_0x9614('0x25')][_0x9614('0x4a')]({'name':_0x2f1154[_0x9614('0x2a')],'resourceId':_0x2f1154['id'],'type':_0x9614('0x52'),'sectionId':_0x320cda['id']},{})[_0x9614('0x27')](function(){return _0x19a4cb;});}else{return _0x19a4cb;}})[_0x9614('0x45')](function(_0x5d42ae){logger[_0x9614('0x28')](_0x9614('0x53'),_0x5d42ae);throw _0x5d42ae;});}return _0x19a4cb;})[_0x9614('0x27')](respondWithResult(_0x169df5,0xc9))['catch'](handleError(_0x169df5,null));};exports[_0x9614('0x24')]=function(_0x427f59,_0x52ce08){if(_0x427f59['body']['id']){delete _0x427f59[_0x9614('0x4b')]['id'];}return db['AnalyticCustomReport']['find']({'where':{'id':_0x427f59[_0x9614('0x47')]['id']}})['then'](handleEntityNotFound(_0x52ce08,null))[_0x9614('0x27')](saveUpdates(_0x427f59[_0x9614('0x4b')],null))[_0x9614('0x27')](respondWithResult(_0x52ce08,null))['catch'](handleError(_0x52ce08,null));};exports[_0x9614('0x26')]=function(_0x22ca96,_0x571ac8){return db['AnalyticCustomReport'][_0x9614('0x54')]({'where':{'id':_0x22ca96['params']['id']}})['then'](handleEntityNotFound(_0x571ac8,null))[_0x9614('0x27')](removeEntity(_0x571ac8,null))[_0x9614('0x45')](handleError(_0x571ac8,null));};exports[_0x9614('0x55')]=function(_0x393616,_0x159130){var _0x43b9e8=0xa;var _0x3712e8=['join',_0x9614('0x56'),_0x9614('0x57'),_0x9614('0x58')];var _0x213ada={'SUM':_0x9614('0x59'),'COUNT':_0x9614('0x5a'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x9614('0x5b'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x9614('0x5c'),'GROUP_CONCAT ASC':_0x9614('0x5d'),'GROUP_CONCAT DESC':_0x9614('0x5e')};var _0x16308d={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x9614('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0x9614('0x60'),'UNIX_TIMESTAMP':_0x9614('0x61')};var _0x45f89b=function(_0x594e3c){return!_[_0x9614('0x62')](['IS\x20NULL',_0x9614('0x63'),_0x9614('0x64'),'IS\x20NOT\x20EMPTY'],_0x594e3c);};var _0x244f64=function(_0x1705b1){if(!_0x1705b1||!_0x1705b1[_0x9614('0x65')]['length']){return'';}for(var _0x5a32c7='(',_0x39f0a2=0x0;_0x39f0a2<_0x1705b1[_0x9614('0x65')][_0x9614('0x49')];_0x39f0a2+=0x1){_0x39f0a2>0x0&&(_0x5a32c7+='\x20'+_0x1705b1[_0x9614('0x66')]+'\x20');_0x5a32c7+=_0x1705b1['rules'][_0x39f0a2][_0x9614('0x67')]?_0x244f64(_0x1705b1['rules'][_0x39f0a2][_0x9614('0x67')]):_0x1705b1[_0x9614('0x65')][_0x39f0a2][_0x9614('0x68')]+'\x20'+_0x1705b1[_0x9614('0x65')][_0x39f0a2][_0x9614('0x69')]+(_0x45f89b(_0x1705b1[_0x9614('0x65')][_0x39f0a2][_0x9614('0x69')])?'\x20'+_0x1705b1[_0x9614('0x65')][_0x39f0a2]['value']:'');}return _0x5a32c7+')';};var _0x398f14={'where':{'id':_0x393616['params']['id']}},_0x3733ca,_0x54fe24,_0xcad205,_0x1122ee,_0x5b50da;_0x398f14=_[_0x9614('0x3e')]({},_0x398f14,_0x393616[_0x9614('0x3f')]);return db[_0x9614('0x40')][_0x9614('0x54')](_0x398f14)[_0x9614('0x27')](function(_0x3cfdd8){if(_0x3cfdd8){_0x3733ca=_0x3cfdd8;return _0x3cfdd8[_0x9614('0x6a')]();}return null;})[_0x9614('0x27')](function(_0x42f119){if(_0x42f119){if(!_0x42f119[_0x9614('0x49')]){throw new db[(_0x9614('0x6b'))][(_0x9614('0x6c'))](_0x9614('0x6d'),0x193);}_0x54fe24=_0x42f119;return db[_0x9614('0x6e')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x175270){if(_0x175270){_0xcad205=_['keyBy'](_0x175270,'id');var _0x3a41ae;var _0x334187=squel['select']();_0x334187[_0x9614('0x6f')](_0x3733ca[_0x9614('0x70')]);for(var _0x57651f=0x0;_0x57651f<_0x54fe24[_0x9614('0x49')];_0x57651f+=0x1){_0x3a41ae=_0x54fe24[_0x57651f][_0x9614('0x71')]?_0xcad205[_0x54fe24[_0x57651f][_0x9614('0x71')]][_0x9614('0x72')]:_0x54fe24[_0x57651f][_0x9614('0x68')];_0x3a41ae=_0x54fe24[_0x57651f][_0x9614('0x73')]?_[_0x9614('0x74')](_0x213ada[_0x54fe24[_0x57651f][_0x9614('0x73')]],'%s',_0x3a41ae):_0x3a41ae;_0x3a41ae=_0x54fe24[_0x57651f][_0x9614('0x75')]?_[_0x9614('0x74')](_0x16308d[_0x54fe24[_0x57651f][_0x9614('0x75')]],'%s',_0x3a41ae):_0x3a41ae;if(_0x54fe24[_0x57651f]['groupBy']){_0x334187[_0x9614('0x67')](_0x3a41ae);}_0x54fe24[_0x57651f][_0x9614('0x76')]&&_0x334187[_0x9614('0x39')](_0x3a41ae,_0x54fe24[_0x57651f][_0x9614('0x76')]===_0x9614('0x77')?![]:!![]);_0x334187[_0x9614('0x68')](_0x3a41ae,_0x54fe24[_0x57651f][_0x9614('0x78')]||_0x3a41ae);}if(_0x3733ca['joins']){_0x3733ca[_0x9614('0x79')]=JSON[_0x9614('0x7a')](_0x3733ca[_0x9614('0x79')]);for(var _0x3ca530=0x0;_0x3ca530<_0x3733ca[_0x9614('0x79')][_0x9614('0x49')];_0x3ca530+=0x1){if(_0x3733ca[_0x9614('0x79')][_0x3ca530][_0x9614('0x2f')]&&_[_0x9614('0x62')](_0x3712e8,_0x3733ca[_0x9614('0x79')][_0x3ca530]['type'])&&_0x3733ca['joins'][_0x3ca530][_0x9614('0x7b')]&&_0x3733ca['joins'][_0x3ca530][_0x9614('0x7c')]&&_0x3733ca['joins'][_0x3ca530]['foreignKey']){_0x334187[_0x3733ca[_0x9614('0x79')][_0x3ca530][_0x9614('0x2f')]](_0x3733ca[_0x9614('0x79')][_0x3ca530]['foreignTable'],null,util[_0x9614('0x75')](_0x9614('0x7d'),_0x3733ca[_0x9614('0x70')],_0x3733ca[_0x9614('0x79')][_0x3ca530][_0x9614('0x7b')],_0x3733ca[_0x9614('0x79')][_0x3ca530][_0x9614('0x7c')],_0x3733ca[_0x9614('0x79')][_0x3ca530][_0x9614('0x7e')]));}}}if(_0x3733ca['conditions']){_0x3733ca['conditions']=JSON['parse'](_0x3733ca['conditions']);_0x334187['where'](_0x244f64(_0x3733ca[_0x9614('0x7f')]['group']));}_0x5b50da=_0x334187[_0x9614('0x80')]();_0x334187[_0x9614('0x20')](_0x43b9e8);_0x334187['offset'](0x0);logger[_0x9614('0x81')]('Limited\x20Query:',_0x334187[_0x9614('0x82')]());return dbH[_0x9614('0x83')][_0x9614('0x30')](_0x334187[_0x9614('0x82')](),{'type':dbH[_0x9614('0x83')]['QueryTypes']['SELECT']});}})['then'](respondWithResult(_0x159130,null))[_0x9614('0x45')](handleError(_0x159130,null));};function runReport(_0x980901,_0x47b636,_0x39cc05){var _0x13cdc6=_0x47b636[_0x9614('0x2a')];var _0x4e06e7=0xa;var _0x46feaa=[_0x9614('0x84'),_0x9614('0x56'),_0x9614('0x57'),_0x9614('0x58')];var _0x36ea42={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x9614('0x85'),'MAX':_0x9614('0x5b'),'MIN':_0x9614('0x86'),'AVG':_0x9614('0x87'),'GROUP_CONCAT':_0x9614('0x5c'),'GROUP_CONCAT ASC':_0x9614('0x5d'),'GROUP_CONCAT DESC':_0x9614('0x5e')};var _0xdb990e={'SEC_TO_TIME':_0x9614('0x88'),'DATE':_0x9614('0x5f'),'HOUR':_0x9614('0x89'),'ROUND':_0x9614('0x60'),'UNIX_TIMESTAMP':_0x9614('0x61')};var _0x470223=function(_0x2bfc79){return!_[_0x9614('0x62')]([_0x9614('0x8a'),'IS\x20NOT\x20NULL',_0x9614('0x64'),_0x9614('0x8b')],_0x2bfc79);};var _0x316f4f=function(_0x4849ca){if(!_0x4849ca||!_0x4849ca[_0x9614('0x65')][_0x9614('0x49')]){return'';}for(var _0x5eb92c='(',_0x222f7d=0x0;_0x222f7d<_0x4849ca[_0x9614('0x65')]['length'];_0x222f7d+=0x1){_0x222f7d>0x0&&(_0x5eb92c+='\x20'+_0x4849ca[_0x9614('0x66')]+'\x20');_0x5eb92c+=_0x4849ca[_0x9614('0x65')][_0x222f7d][_0x9614('0x67')]?_0x316f4f(_0x4849ca[_0x9614('0x65')][_0x222f7d][_0x9614('0x67')]):_0x4849ca[_0x9614('0x65')][_0x222f7d][_0x9614('0x68')]+'\x20'+_0x4849ca[_0x9614('0x65')][_0x222f7d][_0x9614('0x69')]+(_0x470223(_0x4849ca[_0x9614('0x65')][_0x222f7d][_0x9614('0x69')])?'\x20'+_0x4849ca[_0x9614('0x65')][_0x222f7d][_0x9614('0x8c')]:'');}return _0x5eb92c+')';};var _0x5023ad={'where':{'id':_0x980901['id']}},_0xc9a244,_0x3cd612,_0x147ea9,_0x210e9d,_0x46924f;_0x5023ad=_[_0x9614('0x3e')]({},_0x5023ad,_0x39cc05);return db['AnalyticCustomReport']['find'](_0x5023ad)[_0x9614('0x27')](function(_0x222fc6){if(_0x222fc6){_0xc9a244=_0x222fc6;return _0x222fc6[_0x9614('0x6a')]();}return null;})[_0x9614('0x27')](function(_0x39bca3){if(_0x39bca3){if(!_0x39bca3[_0x9614('0x49')]){throw new db[(_0x9614('0x6b'))]['ValidationErrorItem'](_0x9614('0x6d'),0x193);}_0x3cd612=_0x39bca3;return db[_0x9614('0x6e')][_0x9614('0x44')]({'raw':!![]});}return null;})[_0x9614('0x27')](function(_0x2800ad){if(_0x2800ad){_0x147ea9=_[_0x9614('0x8d')](_0x2800ad,'id');var _0x1e3dad;var _0x48e340=squel[_0x9614('0x8e')]();_0x48e340[_0x9614('0x6f')](_0xc9a244['table']);for(var _0x434f43=0x0;_0x434f43<_0x3cd612[_0x9614('0x49')];_0x434f43+=0x1){_0x1e3dad=_0x3cd612[_0x434f43]['MetricId']?_0x147ea9[_0x3cd612[_0x434f43][_0x9614('0x71')]]['metric']:_0x3cd612[_0x434f43][_0x9614('0x68')];_0x1e3dad=_0x3cd612[_0x434f43][_0x9614('0x73')]?_[_0x9614('0x74')](_0x36ea42[_0x3cd612[_0x434f43]['function']],'%s',_0x1e3dad):_0x1e3dad;_0x1e3dad=_0x3cd612[_0x434f43]['format']?_[_0x9614('0x74')](_0xdb990e[_0x3cd612[_0x434f43][_0x9614('0x75')]],'%s',_0x1e3dad):_0x1e3dad;if(_0x3cd612[_0x434f43][_0x9614('0x8f')]){_0x48e340['group'](_0x1e3dad);}_0x3cd612[_0x434f43]['orderBy']&&_0x48e340[_0x9614('0x39')](_0x1e3dad,_0x3cd612[_0x434f43][_0x9614('0x76')]===_0x9614('0x77')?![]:!![]);_0x48e340[_0x9614('0x68')](_0x1e3dad,_0x3cd612[_0x434f43][_0x9614('0x78')]||_0x1e3dad);}if(_0xc9a244[_0x9614('0x79')]){_0xc9a244[_0x9614('0x79')]=JSON[_0x9614('0x7a')](_0xc9a244[_0x9614('0x79')]);for(var _0xa1d571=0x0;_0xa1d571<_0xc9a244[_0x9614('0x79')]['length'];_0xa1d571+=0x1){if(_0xc9a244[_0x9614('0x79')][_0xa1d571][_0x9614('0x2f')]&&_[_0x9614('0x62')](_0x46feaa,_0xc9a244[_0x9614('0x79')][_0xa1d571][_0x9614('0x2f')])&&_0xc9a244['joins'][_0xa1d571][_0x9614('0x7b')]&&_0xc9a244[_0x9614('0x79')][_0xa1d571][_0x9614('0x7c')]&&_0xc9a244[_0x9614('0x79')][_0xa1d571]['foreignKey']){_0x48e340[_0xc9a244[_0x9614('0x79')][_0xa1d571]['type']](_0xc9a244['joins'][_0xa1d571][_0x9614('0x7c')],null,util['format'](_0x9614('0x7d'),_0xc9a244[_0x9614('0x70')],_0xc9a244[_0x9614('0x79')][_0xa1d571]['parentKey'],_0xc9a244['joins'][_0xa1d571][_0x9614('0x7c')],_0xc9a244[_0x9614('0x79')][_0xa1d571][_0x9614('0x7e')]));}}}if(_0xc9a244[_0x9614('0x7f')]){_0xc9a244[_0x9614('0x7f')]=JSON['parse'](_0xc9a244['conditions']);_0x48e340[_0x9614('0x3b')](_0x316f4f(_0xc9a244[_0x9614('0x7f')][_0x9614('0x67')]));}_0x46924f=_0x48e340[_0x9614('0x80')]();_0x48e340[_0x9614('0x20')](_0x4e06e7);_0x48e340[_0x9614('0x1e')](0x0);return;}})[_0x9614('0x27')](function(){if(_0x47b636['output']===_0x9614('0x90')){return null;}var _0x5ebf2b=_[_0x9614('0x3e')](_0x47b636,{'name':_0x47b636[_0x9614('0x91')]||_0x47b636[_0x9614('0x2a')]||_0xc9a244[_0x9614('0x2a')],'basename':_0x13cdc6,'savename':util[_0x9614('0x75')](_0x9614('0x92'),_0x47b636[_0x9614('0x2a')]||_0xc9a244[_0x9614('0x2a')],require('randomstring')[_0x9614('0x93')](0x4),_0x47b636[_0x9614('0x94')]||'csv'),'reportId':_0xc9a244['id'],'reportType':_0x9614('0x95')});return db[_0x9614('0x96')][_0x9614('0x4a')](_0x5ebf2b,{'raw':!![]});})[_0x9614('0x27')](function(_0x30a150){if(_0xc9a244[_0x9614('0x70')]===_0x9614('0x97')){_0x46924f[_0x9614('0x3b')](_0xc9a244['table']+_0x9614('0x98'),_0x47b636[_0x9614('0x99')],_0x47b636[_0x9614('0x9a')]);}else{_0x46924f[_0x9614('0x3b')](_0xc9a244[_0x9614('0x70')]+_0x9614('0x9b'),_0x47b636[_0x9614('0x99')],_0x47b636[_0x9614('0x9a')]);}if(_0x30a150){logger[_0x9614('0x9c')](_0x9614('0x9d'),_0x46924f['toString']());require(_0x9614('0x9e'))[_0x9614('0x9f')](path[_0x9614('0x84')](__dirname,_0x9614('0xa0'),_0x30a150[_0x9614('0x94')]),[_0x30a150['id'],_0x46924f[_0x9614('0x82')](),path[_0x9614('0x84')](__dirname,_0x9614('0xa1'),_0x30a150['savename']),_0x13cdc6]);return _0x30a150;}else{var _0x5801d9=squel[_0x9614('0x8e')]();_0x5801d9[_0x9614('0x6f')]('('+_0x46924f[_0x9614('0x82')]()+')',_0x9614('0xa2'));_0x5801d9[_0x9614('0x68')](_0x9614('0xa3'),'count');_0x46924f[_0x9614('0x20')](_0x47b636[_0x9614('0x20')]||_0x4e06e7);_0x46924f[_0x9614('0x1e')](_0x47b636[_0x9614('0x1e')]||0x0);return dbH[_0x9614('0x83')]['query'](_0x5801d9[_0x9614('0x82')](),{'type':dbH[_0x9614('0x83')][_0x9614('0xa4')][_0x9614('0xa5')]})['then'](function(_0x544b56){if(!_0x544b56['length']){_0x210e9d=0x0;}else{_0x210e9d=_0x544b56[0x0][_0x9614('0x41')]||0x0;}return dbH[_0x9614('0x83')][_0x9614('0x30')](_0x46924f[_0x9614('0x82')](),{'type':dbH[_0x9614('0x83')][_0x9614('0xa4')][_0x9614('0xa5')]});})['then'](function(_0x2cace0){return{'rows':_0x2cace0||[],'count':_0x210e9d};});}});}exports[_0x9614('0xa6')]=function(_0x39a1af,_0x48bc10){return runReport(_0x39a1af[_0x9614('0x47')],_0x39a1af[_0x9614('0x30')],_0x39a1af[_0x9614('0x3f')])[_0x9614('0x27')](respondWithResult(_0x48bc10,null))[_0x9614('0x45')](handleError(_0x48bc10,null));};exports['runReport']=runReport;exports[_0x9614('0x30')]=function(_0x2242ed,_0x54ab12){var _0x49ff5d=0xa;var _0x419c9d=['join',_0x9614('0x56'),_0x9614('0x57'),_0x9614('0x58')];var _0x13074f={'SUM':_0x9614('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x9614('0x85'),'MAX':_0x9614('0x5b'),'MIN':'MIN(%s)','AVG':_0x9614('0x87'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x9614('0x5e')};var _0xd29f13={'SEC_TO_TIME':_0x9614('0x88'),'DATE':_0x9614('0x5f'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x9614('0x61')};var _0x326c10=function(_0x19fb6a){return!_[_0x9614('0x62')]([_0x9614('0x8a'),_0x9614('0x63'),_0x9614('0x64'),'IS\x20NOT\x20EMPTY'],_0x19fb6a);};var _0x576f7e=function(_0x99eccd){if(!_0x99eccd||!_0x99eccd['rules'][_0x9614('0x49')]){return'';}for(var _0x892fe1='(',_0x3b2bdd=0x0;_0x3b2bdd<_0x99eccd[_0x9614('0x65')][_0x9614('0x49')];_0x3b2bdd+=0x1){_0x3b2bdd>0x0&&(_0x892fe1+='\x20'+_0x99eccd[_0x9614('0x66')]+'\x20');_0x892fe1+=_0x99eccd['rules'][_0x3b2bdd][_0x9614('0x67')]?_0x576f7e(_0x99eccd[_0x9614('0x65')][_0x3b2bdd][_0x9614('0x67')]):_0x99eccd[_0x9614('0x65')][_0x3b2bdd][_0x9614('0x68')]+'\x20'+_0x99eccd[_0x9614('0x65')][_0x3b2bdd][_0x9614('0x69')]+(_0x326c10(_0x99eccd[_0x9614('0x65')][_0x3b2bdd]['condition'])?'\x20'+_0x99eccd[_0x9614('0x65')][_0x3b2bdd]['value']:'');}return _0x892fe1+')';};var _0x452271={'where':{'id':_0x2242ed[_0x9614('0x47')]['id']}},_0x5d7d2a,_0x41f2c0,_0xcc87a0,_0x376ce5,_0x5e7956;_0x452271=_[_0x9614('0x3e')]({},_0x452271,_0x2242ed['options']);return db[_0x9614('0x40')]['find'](_0x452271)[_0x9614('0x27')](function(_0x35cf5a){if(_0x35cf5a){_0x5d7d2a=_0x35cf5a;return _0x35cf5a[_0x9614('0x6a')]();}return null;})[_0x9614('0x27')](function(_0x5491be){if(_0x5491be){if(!_0x5491be[_0x9614('0x49')]){throw new db['Sequelize'][(_0x9614('0x6c'))](_0x9614('0x6d'),0x193);}_0x41f2c0=_0x5491be;return db[_0x9614('0x6e')]['findAll']({'raw':!![]});}return null;})[_0x9614('0x27')](function(_0x3fb3eb){if(_0x3fb3eb){_0xcc87a0=_['keyBy'](_0x3fb3eb,'id');var _0x45223d;var _0x497d89=squel[_0x9614('0x8e')]();_0x497d89[_0x9614('0x6f')](_0x5d7d2a[_0x9614('0x70')]);for(var _0x26316a=0x0;_0x26316a<_0x41f2c0[_0x9614('0x49')];_0x26316a+=0x1){_0x45223d=_0x41f2c0[_0x26316a]['MetricId']?_0xcc87a0[_0x41f2c0[_0x26316a]['MetricId']][_0x9614('0x72')]:_0x41f2c0[_0x26316a][_0x9614('0x68')];_0x45223d=_0x41f2c0[_0x26316a]['function']?_['replace'](_0x13074f[_0x41f2c0[_0x26316a][_0x9614('0x73')]],'%s',_0x45223d):_0x45223d;_0x45223d=_0x41f2c0[_0x26316a]['format']?_['replace'](_0xd29f13[_0x41f2c0[_0x26316a][_0x9614('0x75')]],'%s',_0x45223d):_0x45223d;if(_0x41f2c0[_0x26316a][_0x9614('0x8f')]){_0x497d89[_0x9614('0x67')](_0x45223d);}_0x41f2c0[_0x26316a][_0x9614('0x76')]&&_0x497d89['order'](_0x45223d,_0x41f2c0[_0x26316a][_0x9614('0x76')]===_0x9614('0x77')?![]:!![]);_0x497d89[_0x9614('0x68')](_0x45223d,_0x41f2c0[_0x26316a]['alias']||_0x45223d);}if(_0x5d7d2a[_0x9614('0x79')]){_0x5d7d2a[_0x9614('0x79')]=JSON[_0x9614('0x7a')](_0x5d7d2a[_0x9614('0x79')]);for(var _0x1e6995=0x0;_0x1e6995<_0x5d7d2a[_0x9614('0x79')]['length'];_0x1e6995+=0x1){if(_0x5d7d2a[_0x9614('0x79')][_0x1e6995][_0x9614('0x2f')]&&_['includes'](_0x419c9d,_0x5d7d2a[_0x9614('0x79')][_0x1e6995][_0x9614('0x2f')])&&_0x5d7d2a[_0x9614('0x79')][_0x1e6995]['parentKey']&&_0x5d7d2a[_0x9614('0x79')][_0x1e6995]['foreignTable']&&_0x5d7d2a['joins'][_0x1e6995]['foreignKey']){_0x497d89[_0x5d7d2a['joins'][_0x1e6995][_0x9614('0x2f')]](_0x5d7d2a[_0x9614('0x79')][_0x1e6995]['foreignTable'],null,util[_0x9614('0x75')](_0x9614('0x7d'),_0x5d7d2a[_0x9614('0x70')],_0x5d7d2a[_0x9614('0x79')][_0x1e6995]['parentKey'],_0x5d7d2a[_0x9614('0x79')][_0x1e6995][_0x9614('0x7c')],_0x5d7d2a[_0x9614('0x79')][_0x1e6995][_0x9614('0x7e')]));}}}if(_0x5d7d2a['conditions']){_0x5d7d2a[_0x9614('0x7f')]=JSON[_0x9614('0x7a')](_0x5d7d2a[_0x9614('0x7f')]);_0x497d89[_0x9614('0x3b')](_0x576f7e(_0x5d7d2a[_0x9614('0x7f')]['group']));}_0x5e7956=_0x497d89[_0x9614('0x80')]();_0x497d89[_0x9614('0x20')](_0x49ff5d);_0x497d89[_0x9614('0x1e')](0x0);logger[_0x9614('0x81')](_0x9614('0xa7'),_0x497d89[_0x9614('0x82')]());return dbH[_0x9614('0x83')][_0x9614('0x30')](_0x497d89[_0x9614('0x82')](),{'type':dbH[_0x9614('0x83')][_0x9614('0xa4')][_0x9614('0xa5')]});}})[_0x9614('0x27')](function(){return{'sql':_0x5e7956[_0x9614('0x82')]()};})[_0x9614('0x27')](respondWithResult(_0x54ab12,null))[_0x9614('0x45')](handleError(_0x54ab12,null));};
\ No newline at end of file
+var _0x8127=['offset','limit','status','set','Content-Range','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','index','map','AnalyticCustomReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','rawAttributes','length','create','body','user','Reports','UserProfileSection','find','userProfileId','preview','left_join','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','select','table','MetricId','metric','function','format','replace','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','conditions','debug','toString','sequelize','QueryTypes','join','right_join','cross_join','SUM(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','UNIX_TIMESTAMP(%s)','getFields','Sequelize','ValidationErrorItem','AnalyticMetric','clone','output','web','fullPath','%s-%s.%s','randomstring','generate','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','../../files/reports','savename','from','countTable','COUNT(*)','SELECT','run','Limited\x20Query:','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','end','json','undefined','count'];(function(_0x1cbc6b,_0x2b13b5){var _0x46da0d=function(_0x4f3a8d){while(--_0x4f3a8d){_0x1cbc6b['push'](_0x1cbc6b['shift']());}};_0x46da0d(++_0x2b13b5);}(_0x8127,0x1d1));var _0x7812=function(_0x2c63fd,_0x301cb3){_0x2c63fd=_0x2c63fd-0x0;var _0x4ce068=_0x8127[_0x2c63fd];return _0x4ce068;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7812('0x0'));var zipdir=require(_0x7812('0x1'));var jsonpatch=require(_0x7812('0x2'));var rp=require(_0x7812('0x3'));var moment=require(_0x7812('0x4'));var BPromise=require(_0x7812('0x5'));var Mustache=require('mustache');var util=require(_0x7812('0x6'));var path=require(_0x7812('0x7'));var sox=require(_0x7812('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7812('0x9'));var _=require('lodash');var squel=require(_0x7812('0xa'));var crypto=require(_0x7812('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7812('0xc'));var toCsv=require(_0x7812('0xd'));var querystring=require(_0x7812('0xe'));var Papa=require(_0x7812('0xf'));var Redis=require('ioredis');var authService=require(_0x7812('0x10'));var qs=require(_0x7812('0x11'));var as=require(_0x7812('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7812('0x13'))(_0x7812('0x14'));var utils=require('../../config/utils');var config=require(_0x7812('0x15'));var licenseUtil=require(_0x7812('0x16'));var db=require(_0x7812('0x17'))['db'];var dbH=require(_0x7812('0x17'))[_0x7812('0x18')];function respondWithStatusCode(_0x1776ec,_0xa2db16){_0xa2db16=_0xa2db16||0xcc;return function(_0x4b8e67){if(_0x4b8e67){return _0x1776ec[_0x7812('0x19')](_0xa2db16);}return _0x1776ec['status'](_0xa2db16)[_0x7812('0x1a')]();};}function respondWithResult(_0x20d856,_0xec495d){_0xec495d=_0xec495d||0xc8;return function(_0x2466ba){if(_0x2466ba){return _0x20d856['status'](_0xec495d)[_0x7812('0x1b')](_0x2466ba);}};}function respondWithFilteredResult(_0x44c292,_0x1e772d){return function(_0x13dd41){if(_0x13dd41){var _0x202053=typeof _0x1e772d['offset']==='undefined'&&typeof _0x1e772d['limit']===_0x7812('0x1c');var _0x5a6bf7=_0x13dd41[_0x7812('0x1d')];var _0x1c5fb1=_0x202053?0x0:_0x1e772d[_0x7812('0x1e')];var _0x798495=_0x202053?_0x13dd41['count']:_0x1e772d[_0x7812('0x1e')]+_0x1e772d[_0x7812('0x1f')];var _0x3730df;if(_0x798495>=_0x5a6bf7){_0x798495=_0x5a6bf7;_0x3730df=0xc8;}else{_0x3730df=0xce;}_0x44c292[_0x7812('0x20')](_0x3730df);return _0x44c292[_0x7812('0x21')](_0x7812('0x22'),_0x1c5fb1+'-'+_0x798495+'/'+_0x5a6bf7)[_0x7812('0x1b')](_0x13dd41);}return null;};}function patchUpdates(_0x4a4dae){return function(_0x28b019){try{jsonpatch['apply'](_0x28b019,_0x4a4dae,!![]);}catch(_0x5bc6e9){return BPromise[_0x7812('0x23')](_0x5bc6e9);}return _0x28b019[_0x7812('0x24')]();};}function saveUpdates(_0x5e0d45,_0x1d612f){return function(_0x12c7a0){if(_0x12c7a0){return _0x12c7a0[_0x7812('0x25')](_0x5e0d45)[_0x7812('0x26')](function(_0x34845a){return _0x34845a;});}return null;};}function removeEntity(_0x543dfe,_0x106170){return function(_0x3d0338){if(_0x3d0338){return _0x3d0338[_0x7812('0x27')]()[_0x7812('0x26')](function(){var _0x12ef83=_0x3d0338[_0x7812('0x28')]({'plain':!![]});var _0x574ab4=_0x7812('0x29');return db[_0x7812('0x2a')][_0x7812('0x27')]({'where':{'type':_0x574ab4,'resourceId':_0x12ef83['id']}})[_0x7812('0x26')](function(){return _0x3d0338;});})['then'](function(){_0x543dfe[_0x7812('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1676d9,_0x1d0047){return function(_0x308640){if(!_0x308640){_0x1676d9[_0x7812('0x19')](0x194);}return _0x308640;};}function handleError(_0xf2480b,_0x510590){_0x510590=_0x510590||0x1f4;return function(_0x3ea950){logger[_0x7812('0x2b')](_0x3ea950[_0x7812('0x2c')]);if(_0x3ea950[_0x7812('0x2d')]){delete _0x3ea950['name'];}_0xf2480b['status'](_0x510590)['send'](_0x3ea950);};}exports[_0x7812('0x2e')]=function(_0xa616,_0x106a63){var _0x1464af={},_0x1be491={},_0x47407f={'count':0x0,'rows':[]};var _0x53d60a=_[_0x7812('0x2f')](db[_0x7812('0x30')]['rawAttributes'],function(_0x57eac5){return{'name':_0x57eac5[_0x7812('0x31')],'type':_0x57eac5[_0x7812('0x32')][_0x7812('0x33')]};});_0x1be491[_0x7812('0x34')]=_[_0x7812('0x2f')](_0x53d60a,_0x7812('0x2d'));_0x1be491[_0x7812('0x35')]=_[_0x7812('0x36')](_0xa616['query']);_0x1be491[_0x7812('0x37')]=_[_0x7812('0x38')](_0x1be491[_0x7812('0x34')],_0x1be491['query']);_0x1464af[_0x7812('0x39')]=_[_0x7812('0x38')](_0x1be491[_0x7812('0x34')],qs[_0x7812('0x3a')](_0xa616['query']['fields']));_0x1464af[_0x7812('0x39')]=_0x1464af[_0x7812('0x39')]['length']?_0x1464af[_0x7812('0x39')]:_0x1be491[_0x7812('0x34')];if(!_0xa616['query'][_0x7812('0x3b')]('nolimit')){_0x1464af[_0x7812('0x1f')]=qs['limit'](_0xa616[_0x7812('0x35')][_0x7812('0x1f')]);_0x1464af[_0x7812('0x1e')]=qs[_0x7812('0x1e')](_0xa616[_0x7812('0x35')]['offset']);}_0x1464af[_0x7812('0x3c')]=qs[_0x7812('0x3d')](_0xa616['query'][_0x7812('0x3d')]);_0x1464af[_0x7812('0x3e')]=qs[_0x7812('0x37')](_[_0x7812('0x3f')](_0xa616[_0x7812('0x35')],_0x1be491['filters']),_0x53d60a);if(_0xa616[_0x7812('0x35')]['filter']){_0x1464af[_0x7812('0x3e')]=_[_0x7812('0x40')](_0x1464af[_0x7812('0x3e')],{'$or':_['map'](_0x53d60a,function(_0x3e2387){if(_0x3e2387['type']!==_0x7812('0x41')){var _0x183a17={};_0x183a17[_0x3e2387['name']]={'$like':'%'+_0xa616[_0x7812('0x35')][_0x7812('0x42')]+'%'};return _0x183a17;}})});}_0x1464af=_[_0x7812('0x40')]({},_0x1464af,_0xa616[_0x7812('0x43')]);var _0x14cfa5={'where':_0x1464af[_0x7812('0x3e')]};return db[_0x7812('0x30')][_0x7812('0x1d')](_0x14cfa5)[_0x7812('0x26')](function(_0x55e9b0){_0x47407f[_0x7812('0x1d')]=_0x55e9b0;if(_0xa616[_0x7812('0x35')][_0x7812('0x44')]){_0x1464af[_0x7812('0x45')]=[{'all':!![]}];}return db[_0x7812('0x30')][_0x7812('0x46')](_0x1464af);})['then'](function(_0x201c46){_0x47407f['rows']=_0x201c46;return _0x47407f;})[_0x7812('0x26')](respondWithFilteredResult(_0x106a63,_0x1464af))[_0x7812('0x47')](handleError(_0x106a63,null));};exports[_0x7812('0x48')]=function(_0x5c0e93,_0x50dbb1){var _0x19d9e7={'raw':![],'where':{'id':_0x5c0e93[_0x7812('0x49')]['id']}},_0x764ad6={};_0x764ad6[_0x7812('0x34')]=_['keys'](db[_0x7812('0x30')][_0x7812('0x4a')]);_0x764ad6[_0x7812('0x35')]=_[_0x7812('0x36')](_0x5c0e93[_0x7812('0x35')]);_0x764ad6[_0x7812('0x37')]=_['intersection'](_0x764ad6[_0x7812('0x34')],_0x764ad6[_0x7812('0x35')]);_0x19d9e7[_0x7812('0x39')]=_['intersection'](_0x764ad6[_0x7812('0x34')],qs['fields'](_0x5c0e93[_0x7812('0x35')][_0x7812('0x3a')]));_0x19d9e7[_0x7812('0x39')]=_0x19d9e7[_0x7812('0x39')][_0x7812('0x4b')]?_0x19d9e7[_0x7812('0x39')]:_0x764ad6['model'];if(_0x5c0e93[_0x7812('0x35')][_0x7812('0x44')]){_0x19d9e7[_0x7812('0x45')]=[{'all':!![]}];}_0x19d9e7=_[_0x7812('0x40')]({},_0x19d9e7,_0x5c0e93[_0x7812('0x43')]);return db[_0x7812('0x30')]['find'](_0x19d9e7)[_0x7812('0x26')](handleEntityNotFound(_0x50dbb1,null))[_0x7812('0x26')](respondWithResult(_0x50dbb1,null))[_0x7812('0x47')](handleError(_0x50dbb1,null));};exports[_0x7812('0x4c')]=function(_0x10ef12,_0x36e91c){return db['AnalyticCustomReport'][_0x7812('0x4c')](_0x10ef12[_0x7812('0x4d')],{})[_0x7812('0x26')](function(_0x1ee43e){var _0x1759a5=_0x10ef12[_0x7812('0x4e')]['get']({'plain':!![]});if(!_0x1759a5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1759a5['role']===_0x7812('0x4e')){var _0x4e6aac=_0x1ee43e[_0x7812('0x28')]({'plain':!![]});var _0x3a40d2=_0x7812('0x4f');return db[_0x7812('0x50')][_0x7812('0x51')]({'where':{'name':_0x3a40d2,'userProfileId':_0x1759a5[_0x7812('0x52')]},'raw':!![]})[_0x7812('0x26')](function(_0x81d81e){if(_0x81d81e&&_0x81d81e['autoAssociation']===0x0){return db[_0x7812('0x2a')]['create']({'name':_0x4e6aac[_0x7812('0x2d')],'resourceId':_0x4e6aac['id'],'type':_0x7812('0x29'),'sectionId':_0x81d81e['id']},{})[_0x7812('0x26')](function(){return _0x1ee43e;});}else{return _0x1ee43e;}})['catch'](function(_0xe434ef){logger[_0x7812('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xe434ef);throw _0xe434ef;});}return _0x1ee43e;})['then'](respondWithResult(_0x36e91c,0xc9))[_0x7812('0x47')](handleError(_0x36e91c,null));};exports[_0x7812('0x25')]=function(_0x64298,_0x278b64){if(_0x64298[_0x7812('0x4d')]['id']){delete _0x64298[_0x7812('0x4d')]['id'];}return db['AnalyticCustomReport'][_0x7812('0x51')]({'where':{'id':_0x64298['params']['id']}})[_0x7812('0x26')](handleEntityNotFound(_0x278b64,null))[_0x7812('0x26')](saveUpdates(_0x64298['body'],null))['then'](respondWithResult(_0x278b64,null))[_0x7812('0x47')](handleError(_0x278b64,null));};exports[_0x7812('0x27')]=function(_0x207326,_0x1f693d){return db[_0x7812('0x30')]['find']({'where':{'id':_0x207326['params']['id']}})['then'](handleEntityNotFound(_0x1f693d,null))[_0x7812('0x26')](removeEntity(_0x1f693d,null))['catch'](handleError(_0x1f693d,null));};exports[_0x7812('0x53')]=function(_0x95d941,_0x56dea2){var _0x3ece7f=0xa;var _0x3c456c=['join',_0x7812('0x54'),'right_join','cross_join'];var _0xb77742={'SUM':'SUM(%s)','COUNT':_0x7812('0x55'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7812('0x56'),'MIN':_0x7812('0x57'),'AVG':_0x7812('0x58'),'GROUP_CONCAT':_0x7812('0x59'),'GROUP_CONCAT ASC':_0x7812('0x5a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x3e181f={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x7812('0x5b'),'HOUR':_0x7812('0x5c'),'ROUND':_0x7812('0x5d'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2d8a27=function(_0x12403f){return!_[_0x7812('0x5e')]([_0x7812('0x5f'),_0x7812('0x60'),_0x7812('0x61'),_0x7812('0x62')],_0x12403f);};var _0x5ac3db=function(_0x19c0cc){if(!_0x19c0cc||!_0x19c0cc[_0x7812('0x63')][_0x7812('0x4b')]){return'';}for(var _0x3f80bd='(',_0x3cadf3=0x0;_0x3cadf3<_0x19c0cc[_0x7812('0x63')][_0x7812('0x4b')];_0x3cadf3+=0x1){_0x3cadf3>0x0&&(_0x3f80bd+='\x20'+_0x19c0cc[_0x7812('0x64')]+'\x20');_0x3f80bd+=_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x65')]?_0x5ac3db(_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x65')]):_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x66')]+'\x20'+_0x19c0cc[_0x7812('0x63')][_0x3cadf3]['condition']+(_0x2d8a27(_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x67')])?'\x20'+_0x19c0cc[_0x7812('0x63')][_0x3cadf3][_0x7812('0x68')]:'');}return _0x3f80bd+')';};var _0x3153ba={'where':{'id':_0x95d941[_0x7812('0x49')]['id']}},_0x4b7c1b,_0x2f6590,_0x1a5e3e,_0xb59f91,_0x3a374b;_0x3153ba=_[_0x7812('0x40')]({},_0x3153ba,_0x95d941[_0x7812('0x43')]);return db[_0x7812('0x30')][_0x7812('0x51')](_0x3153ba)[_0x7812('0x26')](function(_0x3227d2){if(_0x3227d2){_0x4b7c1b=_0x3227d2;return _0x3227d2['getFields']();}return null;})[_0x7812('0x26')](function(_0x1a3dca){if(_0x1a3dca){if(!_0x1a3dca['length']){throw new db['Sequelize']['ValidationErrorItem'](_0x7812('0x69'),0x193);}_0x2f6590=_0x1a3dca;return db['AnalyticMetric'][_0x7812('0x46')]({'raw':!![]});}return null;})[_0x7812('0x26')](function(_0x47d404){if(_0x47d404){_0x1a5e3e=_[_0x7812('0x6a')](_0x47d404,'id');var _0xfa4327;var _0x3ca34f=squel[_0x7812('0x6b')]();_0x3ca34f['from'](_0x4b7c1b[_0x7812('0x6c')]);for(var _0x13f1f1=0x0;_0x13f1f1<_0x2f6590['length'];_0x13f1f1+=0x1){_0xfa4327=_0x2f6590[_0x13f1f1][_0x7812('0x6d')]?_0x1a5e3e[_0x2f6590[_0x13f1f1][_0x7812('0x6d')]][_0x7812('0x6e')]:_0x2f6590[_0x13f1f1][_0x7812('0x66')];_0xfa4327=_0x2f6590[_0x13f1f1][_0x7812('0x6f')]?_['replace'](_0xb77742[_0x2f6590[_0x13f1f1][_0x7812('0x6f')]],'%s',_0xfa4327):_0xfa4327;_0xfa4327=_0x2f6590[_0x13f1f1][_0x7812('0x70')]?_[_0x7812('0x71')](_0x3e181f[_0x2f6590[_0x13f1f1][_0x7812('0x70')]],'%s',_0xfa4327):_0xfa4327;if(_0x2f6590[_0x13f1f1][_0x7812('0x72')]){_0x3ca34f[_0x7812('0x65')](_0xfa4327);}_0x2f6590[_0x13f1f1][_0x7812('0x73')]&&_0x3ca34f[_0x7812('0x3c')](_0xfa4327,_0x2f6590[_0x13f1f1][_0x7812('0x73')]===_0x7812('0x74')?![]:!![]);_0x3ca34f['field'](_0xfa4327,_0x2f6590[_0x13f1f1][_0x7812('0x75')]||_0xfa4327);}if(_0x4b7c1b[_0x7812('0x76')]){_0x4b7c1b[_0x7812('0x76')]=JSON[_0x7812('0x77')](_0x4b7c1b['joins']);for(var _0x43508e=0x0;_0x43508e<_0x4b7c1b[_0x7812('0x76')][_0x7812('0x4b')];_0x43508e+=0x1){if(_0x4b7c1b[_0x7812('0x76')][_0x43508e]['type']&&_['includes'](_0x3c456c,_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x32')])&&_0x4b7c1b['joins'][_0x43508e][_0x7812('0x78')]&&_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x79')]&&_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x7a')]){_0x3ca34f[_0x4b7c1b['joins'][_0x43508e][_0x7812('0x32')]](_0x4b7c1b['joins'][_0x43508e][_0x7812('0x79')],null,util[_0x7812('0x70')](_0x7812('0x7b'),_0x4b7c1b['table'],_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x78')],_0x4b7c1b[_0x7812('0x76')][_0x43508e][_0x7812('0x79')],_0x4b7c1b['joins'][_0x43508e]['foreignKey']));}}}if(_0x4b7c1b[_0x7812('0x7c')]){_0x4b7c1b[_0x7812('0x7c')]=JSON['parse'](_0x4b7c1b[_0x7812('0x7c')]);_0x3ca34f[_0x7812('0x3e')](_0x5ac3db(_0x4b7c1b['conditions'][_0x7812('0x65')]));}_0x3a374b=_0x3ca34f['clone']();_0x3ca34f['limit'](_0x3ece7f);_0x3ca34f[_0x7812('0x1e')](0x0);logger[_0x7812('0x7d')]('Limited\x20Query:',_0x3ca34f[_0x7812('0x7e')]());return dbH['sequelize']['query'](_0x3ca34f['toString'](),{'type':dbH[_0x7812('0x7f')][_0x7812('0x80')]['SELECT']});}})['then'](respondWithResult(_0x56dea2,null))[_0x7812('0x47')](handleError(_0x56dea2,null));};function runReport(_0x36e050,_0x5cbf06,_0x2b7bec){var _0x50edf5=_0x5cbf06[_0x7812('0x2d')];var _0x307948=0xa;var _0x261294=[_0x7812('0x81'),_0x7812('0x54'),_0x7812('0x82'),_0x7812('0x83')];var _0x16ff1c={'SUM':_0x7812('0x84'),'COUNT':_0x7812('0x55'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7812('0x56'),'MIN':_0x7812('0x57'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x7812('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x7812('0x85')};var _0x1df641={'SEC_TO_TIME':_0x7812('0x86'),'DATE':_0x7812('0x5b'),'HOUR':_0x7812('0x5c'),'ROUND':_0x7812('0x5d'),'UNIX_TIMESTAMP':_0x7812('0x87')};var _0x210db1=function(_0x5a034a){return!_[_0x7812('0x5e')]([_0x7812('0x5f'),_0x7812('0x60'),'IS\x20EMPTY',_0x7812('0x62')],_0x5a034a);};var _0x2cf988=function(_0x389102){if(!_0x389102||!_0x389102[_0x7812('0x63')][_0x7812('0x4b')]){return'';}for(var _0x13ad02='(',_0x5698d9=0x0;_0x5698d9<_0x389102[_0x7812('0x63')][_0x7812('0x4b')];_0x5698d9+=0x1){_0x5698d9>0x0&&(_0x13ad02+='\x20'+_0x389102[_0x7812('0x64')]+'\x20');_0x13ad02+=_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x65')]?_0x2cf988(_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x65')]):_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x66')]+'\x20'+_0x389102[_0x7812('0x63')][_0x5698d9][_0x7812('0x67')]+(_0x210db1(_0x389102['rules'][_0x5698d9][_0x7812('0x67')])?'\x20'+_0x389102['rules'][_0x5698d9][_0x7812('0x68')]:'');}return _0x13ad02+')';};var _0x13620f={'where':{'id':_0x36e050['id']}},_0x5e2a3d,_0x7f9469,_0x574afa,_0x310f51,_0x25e145;_0x13620f=_[_0x7812('0x40')]({},_0x13620f,_0x2b7bec);return db[_0x7812('0x30')][_0x7812('0x51')](_0x13620f)[_0x7812('0x26')](function(_0x57a85e){if(_0x57a85e){_0x5e2a3d=_0x57a85e;return _0x57a85e[_0x7812('0x88')]();}return null;})[_0x7812('0x26')](function(_0x3bf854){if(_0x3bf854){if(!_0x3bf854[_0x7812('0x4b')]){throw new db[(_0x7812('0x89'))][(_0x7812('0x8a'))](_0x7812('0x69'),0x193);}_0x7f9469=_0x3bf854;return db[_0x7812('0x8b')][_0x7812('0x46')]({'raw':!![]});}return null;})[_0x7812('0x26')](function(_0x4f10ba){if(_0x4f10ba){_0x574afa=_[_0x7812('0x6a')](_0x4f10ba,'id');var _0x279ea2;var _0x364c15=squel[_0x7812('0x6b')]();_0x364c15['from'](_0x5e2a3d[_0x7812('0x6c')]);for(var _0x557923=0x0;_0x557923<_0x7f9469['length'];_0x557923+=0x1){_0x279ea2=_0x7f9469[_0x557923]['MetricId']?_0x574afa[_0x7f9469[_0x557923]['MetricId']][_0x7812('0x6e')]:_0x7f9469[_0x557923]['field'];_0x279ea2=_0x7f9469[_0x557923][_0x7812('0x6f')]?_[_0x7812('0x71')](_0x16ff1c[_0x7f9469[_0x557923][_0x7812('0x6f')]],'%s',_0x279ea2):_0x279ea2;_0x279ea2=_0x7f9469[_0x557923][_0x7812('0x70')]?_['replace'](_0x1df641[_0x7f9469[_0x557923][_0x7812('0x70')]],'%s',_0x279ea2):_0x279ea2;if(_0x7f9469[_0x557923][_0x7812('0x72')]){_0x364c15['group'](_0x279ea2);}_0x7f9469[_0x557923][_0x7812('0x73')]&&_0x364c15[_0x7812('0x3c')](_0x279ea2,_0x7f9469[_0x557923][_0x7812('0x73')]==='DESC'?![]:!![]);_0x364c15[_0x7812('0x66')](_0x279ea2,_0x7f9469[_0x557923][_0x7812('0x75')]||_0x279ea2);}if(_0x5e2a3d[_0x7812('0x76')]){_0x5e2a3d[_0x7812('0x76')]=JSON['parse'](_0x5e2a3d[_0x7812('0x76')]);for(var _0x56d189=0x0;_0x56d189<_0x5e2a3d[_0x7812('0x76')]['length'];_0x56d189+=0x1){if(_0x5e2a3d[_0x7812('0x76')][_0x56d189]['type']&&_['includes'](_0x261294,_0x5e2a3d['joins'][_0x56d189][_0x7812('0x32')])&&_0x5e2a3d[_0x7812('0x76')][_0x56d189][_0x7812('0x78')]&&_0x5e2a3d['joins'][_0x56d189][_0x7812('0x79')]&&_0x5e2a3d[_0x7812('0x76')][_0x56d189][_0x7812('0x7a')]){_0x364c15[_0x5e2a3d[_0x7812('0x76')][_0x56d189]['type']](_0x5e2a3d['joins'][_0x56d189][_0x7812('0x79')],null,util[_0x7812('0x70')](_0x7812('0x7b'),_0x5e2a3d[_0x7812('0x6c')],_0x5e2a3d[_0x7812('0x76')][_0x56d189][_0x7812('0x78')],_0x5e2a3d['joins'][_0x56d189][_0x7812('0x79')],_0x5e2a3d['joins'][_0x56d189]['foreignKey']));}}}if(_0x5e2a3d[_0x7812('0x7c')]){_0x5e2a3d['conditions']=JSON['parse'](_0x5e2a3d['conditions']);_0x364c15['where'](_0x2cf988(_0x5e2a3d[_0x7812('0x7c')]['group']));}_0x25e145=_0x364c15[_0x7812('0x8c')]();_0x364c15[_0x7812('0x1f')](_0x307948);_0x364c15['offset'](0x0);return;}})[_0x7812('0x26')](function(){if(_0x5cbf06[_0x7812('0x8d')]===_0x7812('0x8e')){return null;}var _0x39ae33=_['merge'](_0x5cbf06,{'name':_0x5cbf06[_0x7812('0x8f')]||_0x5cbf06[_0x7812('0x2d')]||_0x5e2a3d[_0x7812('0x2d')],'basename':_0x50edf5,'savename':util[_0x7812('0x70')](_0x7812('0x90'),_0x5cbf06[_0x7812('0x2d')]||_0x5e2a3d[_0x7812('0x2d')],require(_0x7812('0x91'))[_0x7812('0x92')](0x4),_0x5cbf06[_0x7812('0x8d')]||'csv'),'reportId':_0x5e2a3d['id'],'reportType':_0x7812('0x93')});return db[_0x7812('0x94')]['create'](_0x39ae33,{'raw':!![]});})[_0x7812('0x26')](function(_0x5ef5e0){if(_0x5e2a3d['table']===_0x7812('0x95')){_0x25e145['where'](_0x5e2a3d[_0x7812('0x6c')]+_0x7812('0x96'),_0x5cbf06['startDate'],_0x5cbf06[_0x7812('0x97')]);}else{_0x25e145[_0x7812('0x3e')](_0x5e2a3d[_0x7812('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5cbf06[_0x7812('0x98')],_0x5cbf06['endDate']);}if(_0x5ef5e0){logger[_0x7812('0x99')](_0x7812('0x9a'),_0x25e145['toString']());require(_0x7812('0x9b'))[_0x7812('0x9c')](path[_0x7812('0x81')](__dirname,'../../components/export/',_0x5ef5e0[_0x7812('0x8d')]),[_0x5ef5e0['id'],_0x25e145['toString'](),path[_0x7812('0x81')](__dirname,_0x7812('0x9d'),_0x5ef5e0[_0x7812('0x9e')]),_0x50edf5]);return _0x5ef5e0;}else{var _0x51a54d=squel[_0x7812('0x6b')]();_0x51a54d[_0x7812('0x9f')]('('+_0x25e145[_0x7812('0x7e')]()+')',_0x7812('0xa0'));_0x51a54d[_0x7812('0x66')](_0x7812('0xa1'),_0x7812('0x1d'));_0x25e145[_0x7812('0x1f')](_0x5cbf06['limit']||_0x307948);_0x25e145[_0x7812('0x1e')](_0x5cbf06[_0x7812('0x1e')]||0x0);return dbH[_0x7812('0x7f')]['query'](_0x51a54d[_0x7812('0x7e')](),{'type':dbH[_0x7812('0x7f')][_0x7812('0x80')][_0x7812('0xa2')]})['then'](function(_0x439290){if(!_0x439290[_0x7812('0x4b')]){_0x310f51=0x0;}else{_0x310f51=_0x439290[0x0][_0x7812('0x1d')]||0x0;}return dbH[_0x7812('0x7f')][_0x7812('0x35')](_0x25e145[_0x7812('0x7e')](),{'type':dbH['sequelize']['QueryTypes'][_0x7812('0xa2')]});})[_0x7812('0x26')](function(_0x3340db){return{'rows':_0x3340db||[],'count':_0x310f51};});}});}exports[_0x7812('0xa3')]=function(_0x587041,_0x7b9f4c){return runReport(_0x587041[_0x7812('0x49')],_0x587041[_0x7812('0x35')],_0x587041['options'])['then'](respondWithResult(_0x7b9f4c,null))[_0x7812('0x47')](handleError(_0x7b9f4c,null));};exports['runReport']=runReport;exports[_0x7812('0x35')]=function(_0x3fd918,_0x19c5b2){var _0x564090=0xa;var _0x1ae574=[_0x7812('0x81'),_0x7812('0x54'),_0x7812('0x82'),_0x7812('0x83')];var _0x2d1e47={'SUM':_0x7812('0x84'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x7812('0x56'),'MIN':_0x7812('0x57'),'AVG':_0x7812('0x58'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1c9da8={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x7812('0x5b'),'HOUR':'HOUR(%s)','ROUND':_0x7812('0x5d'),'UNIX_TIMESTAMP':_0x7812('0x87')};var _0x107d9a=function(_0x55f1af){return!_[_0x7812('0x5e')]([_0x7812('0x5f'),'IS\x20NOT\x20NULL',_0x7812('0x61'),_0x7812('0x62')],_0x55f1af);};var _0x28f47c=function(_0x5a7c97){if(!_0x5a7c97||!_0x5a7c97[_0x7812('0x63')][_0x7812('0x4b')]){return'';}for(var _0x16e3e8='(',_0x2610b4=0x0;_0x2610b4<_0x5a7c97[_0x7812('0x63')][_0x7812('0x4b')];_0x2610b4+=0x1){_0x2610b4>0x0&&(_0x16e3e8+='\x20'+_0x5a7c97['operator']+'\x20');_0x16e3e8+=_0x5a7c97[_0x7812('0x63')][_0x2610b4][_0x7812('0x65')]?_0x28f47c(_0x5a7c97[_0x7812('0x63')][_0x2610b4][_0x7812('0x65')]):_0x5a7c97[_0x7812('0x63')][_0x2610b4]['field']+'\x20'+_0x5a7c97[_0x7812('0x63')][_0x2610b4][_0x7812('0x67')]+(_0x107d9a(_0x5a7c97[_0x7812('0x63')][_0x2610b4]['condition'])?'\x20'+_0x5a7c97['rules'][_0x2610b4][_0x7812('0x68')]:'');}return _0x16e3e8+')';};var _0x290cc3={'where':{'id':_0x3fd918[_0x7812('0x49')]['id']}},_0x3ade25,_0x3cb77c,_0x4db50b,_0x4297b4,_0x58c34f;_0x290cc3=_['merge']({},_0x290cc3,_0x3fd918[_0x7812('0x43')]);return db[_0x7812('0x30')][_0x7812('0x51')](_0x290cc3)[_0x7812('0x26')](function(_0x2e8e1f){if(_0x2e8e1f){_0x3ade25=_0x2e8e1f;return _0x2e8e1f[_0x7812('0x88')]();}return null;})[_0x7812('0x26')](function(_0x2e3c2e){if(_0x2e3c2e){if(!_0x2e3c2e[_0x7812('0x4b')]){throw new db['Sequelize'][(_0x7812('0x8a'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x3cb77c=_0x2e3c2e;return db[_0x7812('0x8b')][_0x7812('0x46')]({'raw':!![]});}return null;})['then'](function(_0x41b5a1){if(_0x41b5a1){_0x4db50b=_[_0x7812('0x6a')](_0x41b5a1,'id');var _0x5b794c;var _0x5306c5=squel['select']();_0x5306c5[_0x7812('0x9f')](_0x3ade25['table']);for(var _0x545f69=0x0;_0x545f69<_0x3cb77c[_0x7812('0x4b')];_0x545f69+=0x1){_0x5b794c=_0x3cb77c[_0x545f69][_0x7812('0x6d')]?_0x4db50b[_0x3cb77c[_0x545f69][_0x7812('0x6d')]][_0x7812('0x6e')]:_0x3cb77c[_0x545f69][_0x7812('0x66')];_0x5b794c=_0x3cb77c[_0x545f69][_0x7812('0x6f')]?_[_0x7812('0x71')](_0x2d1e47[_0x3cb77c[_0x545f69]['function']],'%s',_0x5b794c):_0x5b794c;_0x5b794c=_0x3cb77c[_0x545f69][_0x7812('0x70')]?_[_0x7812('0x71')](_0x1c9da8[_0x3cb77c[_0x545f69][_0x7812('0x70')]],'%s',_0x5b794c):_0x5b794c;if(_0x3cb77c[_0x545f69][_0x7812('0x72')]){_0x5306c5[_0x7812('0x65')](_0x5b794c);}_0x3cb77c[_0x545f69][_0x7812('0x73')]&&_0x5306c5[_0x7812('0x3c')](_0x5b794c,_0x3cb77c[_0x545f69][_0x7812('0x73')]===_0x7812('0x74')?![]:!![]);_0x5306c5[_0x7812('0x66')](_0x5b794c,_0x3cb77c[_0x545f69]['alias']||_0x5b794c);}if(_0x3ade25[_0x7812('0x76')]){_0x3ade25['joins']=JSON[_0x7812('0x77')](_0x3ade25[_0x7812('0x76')]);for(var _0x3db77f=0x0;_0x3db77f<_0x3ade25[_0x7812('0x76')][_0x7812('0x4b')];_0x3db77f+=0x1){if(_0x3ade25[_0x7812('0x76')][_0x3db77f][_0x7812('0x32')]&&_[_0x7812('0x5e')](_0x1ae574,_0x3ade25['joins'][_0x3db77f][_0x7812('0x32')])&&_0x3ade25[_0x7812('0x76')][_0x3db77f][_0x7812('0x78')]&&_0x3ade25[_0x7812('0x76')][_0x3db77f]['foreignTable']&&_0x3ade25[_0x7812('0x76')][_0x3db77f][_0x7812('0x7a')]){_0x5306c5[_0x3ade25[_0x7812('0x76')][_0x3db77f]['type']](_0x3ade25['joins'][_0x3db77f][_0x7812('0x79')],null,util['format'](_0x7812('0x7b'),_0x3ade25[_0x7812('0x6c')],_0x3ade25['joins'][_0x3db77f][_0x7812('0x78')],_0x3ade25['joins'][_0x3db77f]['foreignTable'],_0x3ade25[_0x7812('0x76')][_0x3db77f]['foreignKey']));}}}if(_0x3ade25[_0x7812('0x7c')]){_0x3ade25[_0x7812('0x7c')]=JSON[_0x7812('0x77')](_0x3ade25[_0x7812('0x7c')]);_0x5306c5[_0x7812('0x3e')](_0x28f47c(_0x3ade25[_0x7812('0x7c')][_0x7812('0x65')]));}_0x58c34f=_0x5306c5[_0x7812('0x8c')]();_0x5306c5[_0x7812('0x1f')](_0x564090);_0x5306c5['offset'](0x0);logger[_0x7812('0x7d')](_0x7812('0xa4'),_0x5306c5[_0x7812('0x7e')]());return dbH[_0x7812('0x7f')][_0x7812('0x35')](_0x5306c5[_0x7812('0x7e')](),{'type':dbH[_0x7812('0x7f')][_0x7812('0x80')][_0x7812('0xa2')]});}})[_0x7812('0x26')](function(){return{'sql':_0x58c34f[_0x7812('0x7e')]()};})['then'](respondWithResult(_0x19c5b2,null))['catch'](handleError(_0x19c5b2,null));};
\ No newline at end of file
index f7882ff..56e5242 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f9=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','analytics_custom_reports','lodash'];(function(_0x3ce2c4,_0x4544c1){var _0x4047c1=function(_0x3fece6){while(--_0x3fece6){_0x3ce2c4['push'](_0x3ce2c4['shift']());}};_0x4047c1(++_0x4544c1);}(_0x08f9,0x1c2));var _0x908f=function(_0x20d043,_0x136865){_0x20d043=_0x20d043-0x0;var _0xd60556=_0x08f9[_0x20d043];return _0xd60556;};'use strict';var _=require(_0x908f('0x0'));var util=require('util');var logger=require(_0x908f('0x1'))(_0x908f('0x2'));var moment=require(_0x908f('0x3'));var BPromise=require(_0x908f('0x4'));var rp=require(_0x908f('0x5'));var fs=require('fs');var path=require(_0x908f('0x6'));var rimraf=require(_0x908f('0x7'));var config=require(_0x908f('0x8'));var attributes=require('./analyticCustomReport.attributes');module[_0x908f('0x9')]=function(_0x21b80a,_0x3c9ea1){return _0x21b80a['define']('AnalyticCustomReport',attributes,{'tableName':_0x908f('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7002=['analytics_custom_reports','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport'];(function(_0x5e66b8,_0x2ef22c){var _0x1dbd86=function(_0x4ba030){while(--_0x4ba030){_0x5e66b8['push'](_0x5e66b8['shift']());}};_0x1dbd86(++_0x2ef22c);}(_0x7002,0x12d));var _0x2700=function(_0x2a18b7,_0x5041c8){_0x2a18b7=_0x2a18b7-0x0;var _0x45e74e=_0x7002[_0x2a18b7];return _0x45e74e;};'use strict';var _=require(_0x2700('0x0'));var util=require(_0x2700('0x1'));var logger=require('../../config/logger')(_0x2700('0x2'));var moment=require('moment');var BPromise=require(_0x2700('0x3'));var rp=require(_0x2700('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2700('0x5'));var config=require(_0x2700('0x6'));var attributes=require(_0x2700('0x7'));module[_0x2700('0x8')]=function(_0x5a7ee1,_0x16fdd7){return _0x5a7ee1[_0x2700('0x9')](_0x2700('0xa'),attributes,{'tableName':_0x2700('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd6ffb9..cbc895b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa199=['result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message'];(function(_0x3deca4,_0x669c82){var _0x35d6fe=function(_0x2245b3){while(--_0x2245b3){_0x3deca4['push'](_0x3deca4['shift']());}};_0x35d6fe(++_0x669c82);}(_0xa199,0x15b));var _0x9a19=function(_0xd707b9,_0x24ab69){_0xd707b9=_0xd707b9-0x0;var _0xf81c9e=_0xa199[_0xd707b9];return _0xf81c9e;};'use strict';var _=require(_0x9a19('0x0'));var util=require(_0x9a19('0x1'));var moment=require(_0x9a19('0x2'));var BPromise=require(_0x9a19('0x3'));var rs=require(_0x9a19('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9a19('0x5'))['db'];var utils=require(_0x9a19('0x6'));var logger=require(_0x9a19('0x7'))(_0x9a19('0x8'));var config=require(_0x9a19('0x9'));var jayson=require(_0x9a19('0xa'));var client=jayson[_0x9a19('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x172244,_0x41155a,_0x2d65b5){return new BPromise(function(_0x483f81,_0x4d1168){return client[_0x9a19('0xc')](_0x172244,_0x2d65b5)[_0x9a19('0xd')](function(_0xf3755a){logger[_0x9a19('0xe')](_0x9a19('0xf'),_0x41155a,_0x9a19('0x10'));logger[_0x9a19('0x11')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x41155a,_0x9a19('0x10'),JSON[_0x9a19('0x12')](_0xf3755a));if(_0xf3755a['error']){if(_0xf3755a[_0x9a19('0x13')]['code']===0x1f4){logger['error'](_0x9a19('0xf'),_0x41155a,_0xf3755a[_0x9a19('0x13')][_0x9a19('0x14')]);return _0x4d1168(_0xf3755a[_0x9a19('0x13')][_0x9a19('0x14')]);}logger[_0x9a19('0x13')](_0x9a19('0xf'),_0x41155a,_0xf3755a['error']['message']);return _0x483f81(_0xf3755a[_0x9a19('0x13')][_0x9a19('0x14')]);}else{logger[_0x9a19('0xe')](_0x9a19('0xf'),_0x41155a,_0x9a19('0x10'));_0x483f81(_0xf3755a[_0x9a19('0x15')][_0x9a19('0x14')]);}})[_0x9a19('0x16')](function(_0x5c29af){logger[_0x9a19('0x13')](_0x9a19('0xf'),_0x41155a,_0x5c29af);_0x4d1168(_0x5c29af);});});}
\ No newline at end of file
+var _0x7a30=['AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent'];(function(_0x1ac120,_0x3e7e45){var _0x19b703=function(_0x5f32cb){while(--_0x5f32cb){_0x1ac120['push'](_0x1ac120['shift']());}};_0x19b703(++_0x3e7e45);}(_0x7a30,0x142));var _0x07a3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7a30[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0x07a3('0x0'));var moment=require(_0x07a3('0x1'));var BPromise=require(_0x07a3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x07a3('0x3'))['db'];var utils=require(_0x07a3('0x4'));var logger=require(_0x07a3('0x5'))(_0x07a3('0x6'));var config=require(_0x07a3('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x07a3('0x8')][_0x07a3('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x206be1,_0x25eead,_0x4e376c){return new BPromise(function(_0x43829f,_0x43b2d5){return client[_0x07a3('0xa')](_0x206be1,_0x4e376c)[_0x07a3('0xb')](function(_0x2495c7){logger[_0x07a3('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x25eead,_0x07a3('0xd'));logger['debug'](_0x07a3('0xe'),_0x25eead,_0x07a3('0xd'),JSON[_0x07a3('0xf')](_0x2495c7));if(_0x2495c7[_0x07a3('0x10')]){if(_0x2495c7['error']['code']===0x1f4){logger[_0x07a3('0x10')](_0x07a3('0x11'),_0x25eead,_0x2495c7[_0x07a3('0x10')]['message']);return _0x43b2d5(_0x2495c7[_0x07a3('0x10')][_0x07a3('0x12')]);}logger[_0x07a3('0x10')](_0x07a3('0x11'),_0x25eead,_0x2495c7[_0x07a3('0x10')][_0x07a3('0x12')]);return _0x43829f(_0x2495c7[_0x07a3('0x10')][_0x07a3('0x12')]);}else{logger[_0x07a3('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x25eead,_0x07a3('0xd'));_0x43829f(_0x2495c7[_0x07a3('0x13')][_0x07a3('0x12')]);}})[_0x07a3('0x14')](function(_0x3b2f99){logger['error'](_0x07a3('0x11'),_0x25eead,_0x3b2f99);_0x43b2d5(_0x3b2f99);});});}
\ No newline at end of file
index 4344b47..6c72536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eee=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id/preview','preview','/:id/query','query','create','put','/:id','update','delete','exports','multer','util','connect-timeout','Router'];(function(_0x537e72,_0x52125e){var _0x2d43d2=function(_0x4b275a){while(--_0x4b275a){_0x537e72['push'](_0x537e72['shift']());}};_0x2d43d2(++_0x52125e);}(_0x2eee,0x128));var _0xe2ee=function(_0x2fee96,_0x2f735d){_0x2fee96=_0x2fee96-0x0;var _0x2e6ad1=_0x2eee[_0x2fee96];return _0x2e6ad1;};'use strict';var multer=require(_0xe2ee('0x0'));var util=require(_0xe2ee('0x1'));var path=require('path');var timeout=require(_0xe2ee('0x2'));var express=require('express');var router=express[_0xe2ee('0x3')]();var fs_extra=require(_0xe2ee('0x4'));var auth=require(_0xe2ee('0x5'));var interaction=require(_0xe2ee('0x6'));var config=require(_0xe2ee('0x7'));var controller=require('./analyticCustomReport.controller');router[_0xe2ee('0x8')]('/',auth[_0xe2ee('0x9')](),controller['index']);router[_0xe2ee('0x8')]('/:id',auth[_0xe2ee('0x9')](),controller['show']);router[_0xe2ee('0x8')](_0xe2ee('0xa'),auth[_0xe2ee('0x9')](),controller[_0xe2ee('0xb')]);router['get']('/:id/run',auth[_0xe2ee('0x9')](),controller['run']);router[_0xe2ee('0x8')](_0xe2ee('0xc'),auth[_0xe2ee('0x9')](),controller[_0xe2ee('0xd')]);router['post']('/',auth[_0xe2ee('0x9')](),controller[_0xe2ee('0xe')]);router[_0xe2ee('0xf')](_0xe2ee('0x10'),auth['isAuthenticated'](),controller[_0xe2ee('0x11')]);router[_0xe2ee('0x12')]('/:id',auth[_0xe2ee('0x9')](),controller['destroy']);module[_0xe2ee('0x13')]=router;
\ No newline at end of file
+var _0x1369=['/:id/run','/:id/query','query','create','put','/:id','update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','show','/:id/preview','isAuthenticated','preview'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1369,0xb9));var _0x9136=function(_0x2a59cf,_0x5cf844){_0x2a59cf=_0x2a59cf-0x0;var _0x321661=_0x1369[_0x2a59cf];return _0x321661;};'use strict';var multer=require(_0x9136('0x0'));var util=require('util');var path=require(_0x9136('0x1'));var timeout=require(_0x9136('0x2'));var express=require(_0x9136('0x3'));var router=express['Router']();var fs_extra=require(_0x9136('0x4'));var auth=require(_0x9136('0x5'));var interaction=require(_0x9136('0x6'));var config=require('../../config/environment');var controller=require(_0x9136('0x7'));router[_0x9136('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x9136('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x9136('0x9')]);router[_0x9136('0x8')](_0x9136('0xa'),auth[_0x9136('0xb')](),controller[_0x9136('0xc')]);router[_0x9136('0x8')](_0x9136('0xd'),auth[_0x9136('0xb')](),controller['run']);router[_0x9136('0x8')](_0x9136('0xe'),auth['isAuthenticated'](),controller[_0x9136('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9136('0x10')]);router[_0x9136('0x11')](_0x9136('0x12'),auth[_0x9136('0xb')](),controller[_0x9136('0x13')]);router[_0x9136('0x14')](_0x9136('0x12'),auth[_0x9136('0xb')](),controller[_0x9136('0x15')]);module['exports']=router;
\ No newline at end of file
index 2d5499a..782cf43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['sequelize','STRING','TEXT'];(function(_0xbd69b0,_0x30a5d0){var _0x17a820=function(_0x5402ab){while(--_0x5402ab){_0xbd69b0['push'](_0xbd69b0['shift']());}};_0x17a820(++_0x30a5d0);}(_0x31f0,0xb7));var _0x031f=function(_0x315fa2,_0x3761b4){_0x315fa2=_0x315fa2-0x0;var _0x1175fc=_0x31f0[_0x315fa2];return _0x1175fc;};'use strict';var Sequelize=require(_0x031f('0x0'));module['exports']={'name':{'type':Sequelize[_0x031f('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x031f('0x1')]},'table':{'type':Sequelize[_0x031f('0x1')]},'conditions':{'type':Sequelize[_0x031f('0x2')]},'joins':{'type':Sequelize[_0x031f('0x2')]}};
\ No newline at end of file
+var _0xbd51=['sequelize','STRING'];(function(_0x2a3653,_0x2b5804){var _0x2d9e61=function(_0x40ef96){while(--_0x40ef96){_0x2a3653['push'](_0x2a3653['shift']());}};_0x2d9e61(++_0x2b5804);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x4a1828,_0x888d6){_0x4a1828=_0x4a1828-0x0;var _0x59aa93=_0xbd51[_0x4a1828];return _0x59aa93;};'use strict';var Sequelize=require(_0x1bd5('0x0'));module['exports']={'name':{'type':Sequelize[_0x1bd5('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x1bd5('0x1')]},'parent':{'type':Sequelize[_0x1bd5('0x1')]},'table':{'type':Sequelize[_0x1bd5('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ab2cea4..4485184 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d38=['Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','select','countTable','COUNT(*)','sequelize','run','SEC_TO_TIME(%s)','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','get','destroy','error','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','AnalyticDefaultReport','findAll','rows','show','keys','fields','find','catch','create','body','user','role','Reports','autoAssociation','UserProfileResource','DefaultReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','AnalyticMetric','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','alias','joins','parse','parentKey','foreignTable','foreignKey','conditions','clone','debug','toString','QueryTypes','SELECT','left_join','COUNT(DISTINCT\x20%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','DESC','%s.%s\x20=\x20%s.%s','output','web','fullPath','randomstring','generate','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','info'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6d38,0x1ef));var _0x86d3=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x6d38[_0x278e3c];return _0x3e2d9b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x86d3('0x0'));var zipdir=require(_0x86d3('0x1'));var jsonpatch=require(_0x86d3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x86d3('0x3'));var Mustache=require('mustache');var util=require(_0x86d3('0x4'));var path=require(_0x86d3('0x5'));var sox=require(_0x86d3('0x6'));var csv=require('to-csv');var ejs=require(_0x86d3('0x7'));var fs=require('fs');var fs_extra=require(_0x86d3('0x8'));var _=require(_0x86d3('0x9'));var squel=require(_0x86d3('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x86d3('0xb'));var toCsv=require(_0x86d3('0xc'));var querystring=require(_0x86d3('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86d3('0xe'));var qs=require(_0x86d3('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x86d3('0x10'))(_0x86d3('0x11'));var utils=require('../../config/utils');var config=require(_0x86d3('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x86d3('0x13'))['db'];var dbH=require(_0x86d3('0x13'))[_0x86d3('0x14')];function respondWithStatusCode(_0x26d64c,_0xe1b3d7){_0xe1b3d7=_0xe1b3d7||0xcc;return function(_0x1b8d0a){if(_0x1b8d0a){return _0x26d64c[_0x86d3('0x15')](_0xe1b3d7);}return _0x26d64c[_0x86d3('0x16')](_0xe1b3d7)['end']();};}function respondWithResult(_0x1c1ba8,_0x1f35cf){_0x1f35cf=_0x1f35cf||0xc8;return function(_0x356e7d){if(_0x356e7d){return _0x1c1ba8[_0x86d3('0x16')](_0x1f35cf)[_0x86d3('0x17')](_0x356e7d);}};}function respondWithFilteredResult(_0x34fb3b,_0x1ff008){return function(_0x44436d){if(_0x44436d){var _0x53b437=typeof _0x1ff008[_0x86d3('0x18')]===_0x86d3('0x19')&&typeof _0x1ff008[_0x86d3('0x1a')]===_0x86d3('0x19');var _0x46feec=_0x44436d[_0x86d3('0x1b')];var _0x33e459=_0x53b437?0x0:_0x1ff008[_0x86d3('0x18')];var _0x9b76f2=_0x53b437?_0x44436d['count']:_0x1ff008[_0x86d3('0x18')]+_0x1ff008['limit'];var _0x6ced9e;if(_0x9b76f2>=_0x46feec){_0x9b76f2=_0x46feec;_0x6ced9e=0xc8;}else{_0x6ced9e=0xce;}_0x34fb3b['status'](_0x6ced9e);return _0x34fb3b['set'](_0x86d3('0x1c'),_0x33e459+'-'+_0x9b76f2+'/'+_0x46feec)[_0x86d3('0x17')](_0x44436d);}return null;};}function patchUpdates(_0x988066){return function(_0x1720ae){try{jsonpatch['apply'](_0x1720ae,_0x988066,!![]);}catch(_0x2901de){return BPromise['reject'](_0x2901de);}return _0x1720ae[_0x86d3('0x1d')]();};}function saveUpdates(_0x3fdf67,_0x1ce849){return function(_0x5b990d){if(_0x5b990d){return _0x5b990d[_0x86d3('0x1e')](_0x3fdf67)[_0x86d3('0x1f')](function(_0x1fa4ac){return _0x1fa4ac;});}return null;};}function removeEntity(_0x4bf5b8,_0x58ba51){return function(_0x26262a){if(_0x26262a){return _0x26262a['destroy']()[_0x86d3('0x1f')](function(){var _0x1bea5e=_0x26262a[_0x86d3('0x20')]({'plain':!![]});var _0x3c5fe4='DefaultReports';return db['UserProfileResource'][_0x86d3('0x21')]({'where':{'type':_0x3c5fe4,'resourceId':_0x1bea5e['id']}})[_0x86d3('0x1f')](function(){return _0x26262a;});})['then'](function(){_0x4bf5b8[_0x86d3('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42413c,_0x41e2f0){return function(_0x287b96){if(!_0x287b96){_0x42413c[_0x86d3('0x15')](0x194);}return _0x287b96;};}function handleError(_0x11a6fd,_0x14c9ff){_0x14c9ff=_0x14c9ff||0x1f4;return function(_0x1f203e){logger[_0x86d3('0x22')](_0x1f203e[_0x86d3('0x23')]);if(_0x1f203e[_0x86d3('0x24')]){delete _0x1f203e[_0x86d3('0x24')];}_0x11a6fd[_0x86d3('0x16')](_0x14c9ff)[_0x86d3('0x25')](_0x1f203e);};}exports[_0x86d3('0x26')]=function(_0x5b09f6,_0x120a0c){var _0x403be3={},_0x2bda35={},_0x31cefe={'count':0x0,'rows':[]};var _0x7709f0=_[_0x86d3('0x27')](db['AnalyticDefaultReport'][_0x86d3('0x28')],function(_0x5c71df){return{'name':_0x5c71df['fieldName'],'type':_0x5c71df[_0x86d3('0x29')][_0x86d3('0x2a')]};});_0x2bda35[_0x86d3('0x2b')]=_['map'](_0x7709f0,_0x86d3('0x24'));_0x2bda35[_0x86d3('0x2c')]=_['keys'](_0x5b09f6[_0x86d3('0x2c')]);_0x2bda35[_0x86d3('0x2d')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],_0x2bda35[_0x86d3('0x2c')]);_0x403be3[_0x86d3('0x2f')]=_[_0x86d3('0x2e')](_0x2bda35[_0x86d3('0x2b')],qs['fields'](_0x5b09f6['query']['fields']));_0x403be3[_0x86d3('0x2f')]=_0x403be3['attributes'][_0x86d3('0x30')]?_0x403be3['attributes']:_0x2bda35[_0x86d3('0x2b')];if(!_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x31')](_0x86d3('0x32'))){_0x403be3[_0x86d3('0x1a')]=qs[_0x86d3('0x1a')](_0x5b09f6[_0x86d3('0x2c')]['limit']);_0x403be3[_0x86d3('0x18')]=qs[_0x86d3('0x18')](_0x5b09f6['query'][_0x86d3('0x18')]);}_0x403be3[_0x86d3('0x33')]=qs[_0x86d3('0x34')](_0x5b09f6[_0x86d3('0x2c')]['sort']);_0x403be3[_0x86d3('0x35')]=qs[_0x86d3('0x2d')](_[_0x86d3('0x36')](_0x5b09f6['query'],_0x2bda35[_0x86d3('0x2d')]),_0x7709f0);if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x37')]){_0x403be3[_0x86d3('0x35')]=_[_0x86d3('0x38')](_0x403be3[_0x86d3('0x35')],{'$or':_[_0x86d3('0x27')](_0x7709f0,function(_0x436065){if(_0x436065['type']!==_0x86d3('0x39')){var _0x470978={};_0x470978[_0x436065[_0x86d3('0x24')]]={'$like':'%'+_0x5b09f6[_0x86d3('0x2c')]['filter']+'%'};return _0x470978;}})});}_0x403be3=_[_0x86d3('0x38')]({},_0x403be3,_0x5b09f6[_0x86d3('0x3a')]);var _0x6f72be={'where':_0x403be3[_0x86d3('0x35')]};return db['AnalyticDefaultReport']['count'](_0x6f72be)[_0x86d3('0x1f')](function(_0x4f422b){_0x31cefe['count']=_0x4f422b;if(_0x5b09f6[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x403be3[_0x86d3('0x3c')]=[{'all':!![]}];}return db[_0x86d3('0x3d')][_0x86d3('0x3e')](_0x403be3);})['then'](function(_0x2a5f6c){_0x31cefe[_0x86d3('0x3f')]=_0x2a5f6c;return _0x31cefe;})[_0x86d3('0x1f')](respondWithFilteredResult(_0x120a0c,_0x403be3))['catch'](handleError(_0x120a0c,null));};exports[_0x86d3('0x40')]=function(_0x810d10,_0x5dfae8){var _0x369f68={'raw':!![],'where':{'id':_0x810d10['params']['id']}},_0xcf6c9e={};_0xcf6c9e['model']=_['keys'](db[_0x86d3('0x3d')][_0x86d3('0x28')]);_0xcf6c9e[_0x86d3('0x2c')]=_[_0x86d3('0x41')](_0x810d10[_0x86d3('0x2c')]);_0xcf6c9e[_0x86d3('0x2d')]=_['intersection'](_0xcf6c9e[_0x86d3('0x2b')],_0xcf6c9e[_0x86d3('0x2c')]);_0x369f68['attributes']=_[_0x86d3('0x2e')](_0xcf6c9e[_0x86d3('0x2b')],qs[_0x86d3('0x42')](_0x810d10[_0x86d3('0x2c')][_0x86d3('0x42')]));_0x369f68[_0x86d3('0x2f')]=_0x369f68['attributes'][_0x86d3('0x30')]?_0x369f68[_0x86d3('0x2f')]:_0xcf6c9e['model'];if(_0x810d10[_0x86d3('0x2c')][_0x86d3('0x3b')]){_0x369f68[_0x86d3('0x3c')]=[{'all':!![]}];}_0x369f68=_[_0x86d3('0x38')]({},_0x369f68,_0x810d10[_0x86d3('0x3a')]);return db['AnalyticDefaultReport'][_0x86d3('0x43')](_0x369f68)[_0x86d3('0x1f')](handleEntityNotFound(_0x5dfae8,null))[_0x86d3('0x1f')](respondWithResult(_0x5dfae8,null))[_0x86d3('0x44')](handleError(_0x5dfae8,null));};exports[_0x86d3('0x45')]=function(_0x7af7b3,_0x1a4345){return db[_0x86d3('0x3d')][_0x86d3('0x45')](_0x7af7b3[_0x86d3('0x46')],{})[_0x86d3('0x1f')](function(_0x1236ea){var _0x4ea940=_0x7af7b3[_0x86d3('0x47')][_0x86d3('0x20')]({'plain':!![]});if(!_0x4ea940)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ea940[_0x86d3('0x48')]===_0x86d3('0x47')){var _0x197047=_0x1236ea[_0x86d3('0x20')]({'plain':!![]});var _0x1dcff0=_0x86d3('0x49');return db['UserProfileSection']['find']({'where':{'name':_0x1dcff0,'userProfileId':_0x4ea940['userProfileId']},'raw':!![]})['then'](function(_0x159253){if(_0x159253&&_0x159253[_0x86d3('0x4a')]===0x0){return db[_0x86d3('0x4b')][_0x86d3('0x45')]({'name':_0x197047[_0x86d3('0x24')],'resourceId':_0x197047['id'],'type':_0x86d3('0x4c'),'sectionId':_0x159253['id']},{})[_0x86d3('0x1f')](function(){return _0x1236ea;});}else{return _0x1236ea;}})['catch'](function(_0x2afb07){logger[_0x86d3('0x22')](_0x86d3('0x4d'),_0x2afb07);throw _0x2afb07;});}return _0x1236ea;})[_0x86d3('0x1f')](respondWithResult(_0x1a4345,0xc9))[_0x86d3('0x44')](handleError(_0x1a4345,null));};exports[_0x86d3('0x1e')]=function(_0x34935f,_0x4c8828){if(_0x34935f[_0x86d3('0x46')]['id']){delete _0x34935f['body']['id'];}return db[_0x86d3('0x3d')][_0x86d3('0x43')]({'where':{'id':_0x34935f[_0x86d3('0x4e')]['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4c8828,null))[_0x86d3('0x1f')](saveUpdates(_0x34935f['body'],null))[_0x86d3('0x1f')](respondWithResult(_0x4c8828,null))[_0x86d3('0x44')](handleError(_0x4c8828,null));};exports[_0x86d3('0x21')]=function(_0x4e10d9,_0x4ad164){return db['AnalyticDefaultReport'][_0x86d3('0x43')]({'where':{'id':_0x4e10d9['params']['id']}})[_0x86d3('0x1f')](handleEntityNotFound(_0x4ad164,null))[_0x86d3('0x1f')](removeEntity(_0x4ad164,null))[_0x86d3('0x44')](handleError(_0x4ad164,null));};exports[_0x86d3('0x4f')]=function(_0x5963bb,_0x4cd835){var _0x551806=0xa;var _0x28655a=[_0x86d3('0x50'),'left_join',_0x86d3('0x51'),_0x86d3('0x52')];var _0xa085b2={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x86d3('0x59')};var _0x41fad7={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x86d3('0x5a'),'HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':_0x86d3('0x5d')};var _0x4598d4=function(_0x4029a4){return!_[_0x86d3('0x5e')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x86d3('0x5f'),'IS\x20NOT\x20EMPTY'],_0x4029a4);};var _0x528ca8=function(_0x58e4b6){if(!_0x58e4b6||!_0x58e4b6[_0x86d3('0x60')]['length']){return'';}for(var _0x254ac3='(',_0x5f2ed6=0x0;_0x5f2ed6<_0x58e4b6[_0x86d3('0x60')][_0x86d3('0x30')];_0x5f2ed6+=0x1){_0x5f2ed6>0x0&&(_0x254ac3+='\x20'+_0x58e4b6[_0x86d3('0x61')]+'\x20');_0x254ac3+=_0x58e4b6['rules'][_0x5f2ed6]['group']?_0x528ca8(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x62')]):_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x63')]+'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')]+(_0x4598d4(_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x64')])?'\x20'+_0x58e4b6[_0x86d3('0x60')][_0x5f2ed6][_0x86d3('0x65')]:'');}return _0x254ac3+')';};var _0x1e3479={'where':{'id':_0x5963bb[_0x86d3('0x4e')]['id']}},_0x265beb,_0xfaf168,_0xf0dbbb,_0x3f978c,_0x5e1835;_0x1e3479=_[_0x86d3('0x38')]({},_0x1e3479,_0x5963bb['options']);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x1e3479)[_0x86d3('0x1f')](function(_0x52dc99){if(_0x52dc99){_0x265beb=_0x52dc99;return _0x52dc99[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x45e8d9){if(_0x45e8d9){if(!_0x45e8d9[_0x86d3('0x30')]){throw new db['Sequelize'][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0xfaf168=_0x45e8d9;return db[_0x86d3('0x68')][_0x86d3('0x3e')]({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2d4bc1){if(_0x2d4bc1){_0xf0dbbb=_[_0x86d3('0x69')](_0x2d4bc1,'id');var _0x56fd96;var _0x3cc1d8=squel['select']();_0x3cc1d8[_0x86d3('0x6a')](_0x265beb[_0x86d3('0x6b')]);for(var _0x5866fe=0x0;_0x5866fe<_0xfaf168[_0x86d3('0x30')];_0x5866fe+=0x1){_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6c')]?_0xf0dbbb[_0xfaf168[_0x5866fe][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0xfaf168[_0x5866fe][_0x86d3('0x63')];_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0xa085b2[_0xfaf168[_0x5866fe]['function']],'%s',_0x56fd96):_0x56fd96;_0x56fd96=_0xfaf168[_0x5866fe][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x41fad7[_0xfaf168[_0x5866fe][_0x86d3('0x70')]],'%s',_0x56fd96):_0x56fd96;if(_0xfaf168[_0x5866fe][_0x86d3('0x71')]){_0x3cc1d8[_0x86d3('0x62')](_0x56fd96);}_0xfaf168[_0x5866fe]['orderBy']&&_0x3cc1d8[_0x86d3('0x33')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x72')]==='DESC'?![]:!![]);_0x3cc1d8[_0x86d3('0x63')](_0x56fd96,_0xfaf168[_0x5866fe][_0x86d3('0x73')]||_0x56fd96);}if(_0x265beb[_0x86d3('0x74')]){_0x265beb[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x265beb[_0x86d3('0x74')]);for(var _0x1bf5ba=0x0;_0x1bf5ba<_0x265beb[_0x86d3('0x74')][_0x86d3('0x30')];_0x1bf5ba+=0x1){if(_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x28655a,_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')])&&_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')]&&_0x265beb[_0x86d3('0x74')][_0x1bf5ba]['foreignKey']){_0x3cc1d8[_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x29')]](_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x77')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x265beb[_0x86d3('0x6b')],_0x265beb['joins'][_0x1bf5ba][_0x86d3('0x76')],_0x265beb['joins'][_0x1bf5ba]['foreignTable'],_0x265beb[_0x86d3('0x74')][_0x1bf5ba][_0x86d3('0x78')]));}}}if(_0x265beb[_0x86d3('0x79')]){_0x265beb[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x265beb['conditions']);_0x3cc1d8[_0x86d3('0x35')](_0x528ca8(_0x265beb[_0x86d3('0x79')]['group']));}_0x5e1835=_0x3cc1d8[_0x86d3('0x7a')]();_0x3cc1d8[_0x86d3('0x1a')](_0x551806);_0x3cc1d8['offset'](0x0);logger[_0x86d3('0x7b')]('Limited\x20Query:',_0x3cc1d8[_0x86d3('0x7c')]());return dbH['sequelize']['query'](_0x3cc1d8[_0x86d3('0x7c')](),{'type':dbH['sequelize'][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})[_0x86d3('0x1f')](respondWithResult(_0x4cd835,null))[_0x86d3('0x44')](handleError(_0x4cd835,null));};function runReport(_0x3193d5,_0x3a1acc,_0x268c93){var _0x3b989c=_0x3a1acc['name'];var _0x245b39=0xa;var _0x158f56=[_0x86d3('0x50'),_0x86d3('0x7f'),_0x86d3('0x51'),'cross_join'];var _0x3d8b35={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':_0x86d3('0x57'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0xca2e0={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':_0x86d3('0x5c'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x1b503a=function(_0x24410c){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x24410c);};var _0x5f4a38=function(_0x593b85){if(!_0x593b85||!_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x3fac94='(',_0x28d98e=0x0;_0x28d98e<_0x593b85[_0x86d3('0x60')][_0x86d3('0x30')];_0x28d98e+=0x1){_0x28d98e>0x0&&(_0x3fac94+='\x20'+_0x593b85['operator']+'\x20');_0x3fac94+=_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]?_0x5f4a38(_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x62')]):_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x63')]+'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x64')]+(_0x1b503a(_0x593b85[_0x86d3('0x60')][_0x28d98e]['condition'])?'\x20'+_0x593b85[_0x86d3('0x60')][_0x28d98e][_0x86d3('0x65')]:'');}return _0x3fac94+')';};var _0x4b871b={'where':{'id':_0x3193d5['id']}},_0x584a57,_0x36ee46,_0x1cbc3a,_0x682a6d,_0x5004cd;_0x4b871b=_[_0x86d3('0x38')]({},_0x4b871b,_0x268c93);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x4b871b)[_0x86d3('0x1f')](function(_0x3d3e7f){if(_0x3d3e7f){_0x584a57=_0x3d3e7f;return _0x3d3e7f['getFields']();}return null;})[_0x86d3('0x1f')](function(_0x1aaf08){if(_0x1aaf08){if(!_0x1aaf08['length']){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))](_0x86d3('0x86'),0x193);}_0x36ee46=_0x1aaf08;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})[_0x86d3('0x1f')](function(_0x2896e1){if(_0x2896e1){_0x1cbc3a=_[_0x86d3('0x69')](_0x2896e1,'id');var _0x18295c;var _0x44af1c=squel['select']();_0x44af1c[_0x86d3('0x6a')](_0x584a57[_0x86d3('0x6b')]);for(var _0x3582a2=0x0;_0x3582a2<_0x36ee46[_0x86d3('0x30')];_0x3582a2+=0x1){_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6c')]?_0x1cbc3a[_0x36ee46[_0x3582a2][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x36ee46[_0x3582a2][_0x86d3('0x63')];_0x18295c=_0x36ee46[_0x3582a2][_0x86d3('0x6e')]?_[_0x86d3('0x6f')](_0x3d8b35[_0x36ee46[_0x3582a2]['function']],'%s',_0x18295c):_0x18295c;_0x18295c=_0x36ee46[_0x3582a2]['format']?_[_0x86d3('0x6f')](_0xca2e0[_0x36ee46[_0x3582a2][_0x86d3('0x70')]],'%s',_0x18295c):_0x18295c;if(_0x36ee46[_0x3582a2]['groupBy']){_0x44af1c[_0x86d3('0x62')](_0x18295c);}_0x36ee46[_0x3582a2][_0x86d3('0x72')]&&_0x44af1c[_0x86d3('0x33')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x72')]===_0x86d3('0x87')?![]:!![]);_0x44af1c[_0x86d3('0x63')](_0x18295c,_0x36ee46[_0x3582a2][_0x86d3('0x73')]||_0x18295c);}if(_0x584a57[_0x86d3('0x74')]){_0x584a57[_0x86d3('0x74')]=JSON['parse'](_0x584a57['joins']);for(var _0x48a6d7=0x0;_0x48a6d7<_0x584a57['joins'][_0x86d3('0x30')];_0x48a6d7+=0x1){if(_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x158f56,_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x29')])&&_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey']&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x77')]&&_0x584a57[_0x86d3('0x74')][_0x48a6d7][_0x86d3('0x78')]){_0x44af1c[_0x584a57['joins'][_0x48a6d7][_0x86d3('0x29')]](_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],null,util[_0x86d3('0x70')](_0x86d3('0x88'),_0x584a57[_0x86d3('0x6b')],_0x584a57[_0x86d3('0x74')][_0x48a6d7]['parentKey'],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x77')],_0x584a57['joins'][_0x48a6d7][_0x86d3('0x78')]));}}}if(_0x584a57['conditions']){_0x584a57[_0x86d3('0x79')]=JSON['parse'](_0x584a57['conditions']);_0x44af1c[_0x86d3('0x35')](_0x5f4a38(_0x584a57[_0x86d3('0x79')][_0x86d3('0x62')]));}_0x5004cd=_0x44af1c[_0x86d3('0x7a')]();_0x44af1c[_0x86d3('0x1a')](_0x245b39);_0x44af1c[_0x86d3('0x18')](0x0);return;}})[_0x86d3('0x1f')](function(){if(_0x3a1acc[_0x86d3('0x89')]===_0x86d3('0x8a')){return null;}var _0x120a85=_[_0x86d3('0x38')](_0x3a1acc,{'name':_0x3a1acc[_0x86d3('0x8b')]||_0x3a1acc[_0x86d3('0x24')]||_0x584a57[_0x86d3('0x24')],'basename':_0x3b989c,'savename':util[_0x86d3('0x70')]('%s-%s.%s',_0x3a1acc['name']||_0x584a57['name'],require(_0x86d3('0x8c'))[_0x86d3('0x8d')](0x4),_0x3a1acc[_0x86d3('0x89')]||_0x86d3('0x8e')),'reportId':_0x584a57['id'],'reportType':_0x86d3('0x8f')});return db[_0x86d3('0x90')][_0x86d3('0x45')](_0x120a85,{'raw':!![]});})[_0x86d3('0x1f')](function(_0x10e23d){if(_0x584a57[_0x86d3('0x6b')]===_0x86d3('0x91')){_0x5004cd['where'](_0x584a57[_0x86d3('0x6b')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}else{_0x5004cd[_0x86d3('0x35')](_0x584a57[_0x86d3('0x6b')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3a1acc[_0x86d3('0x92')],_0x3a1acc[_0x86d3('0x93')]);}if(_0x10e23d){logger[_0x86d3('0x94')](_0x86d3('0x95'),_0x5004cd[_0x86d3('0x7c')]());require(_0x86d3('0x96'))[_0x86d3('0x97')](path[_0x86d3('0x50')](__dirname,_0x86d3('0x98'),_0x10e23d[_0x86d3('0x89')]),[_0x10e23d['id'],_0x5004cd[_0x86d3('0x7c')](),path[_0x86d3('0x50')](__dirname,_0x86d3('0x99'),_0x10e23d[_0x86d3('0x9a')]),_0x3b989c]);return _0x10e23d;}else{var _0x428b11=squel[_0x86d3('0x9b')]();_0x428b11[_0x86d3('0x6a')]('('+_0x5004cd['toString']()+')',_0x86d3('0x9c'));_0x428b11[_0x86d3('0x63')](_0x86d3('0x9d'),_0x86d3('0x1b'));_0x5004cd['limit'](_0x3a1acc[_0x86d3('0x1a')]||_0x245b39);_0x5004cd['offset'](_0x3a1acc['offset']||0x0);return dbH[_0x86d3('0x9e')][_0x86d3('0x2c')](_0x428b11[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]})[_0x86d3('0x1f')](function(_0x4777f1){if(!_0x4777f1['length']){_0x682a6d=0x0;}else{_0x682a6d=_0x4777f1[0x0]['count']||0x0;}return dbH['sequelize'][_0x86d3('0x2c')](_0x5004cd[_0x86d3('0x7c')](),{'type':dbH[_0x86d3('0x9e')]['QueryTypes'][_0x86d3('0x7e')]});})['then'](function(_0x435b8e){return{'rows':_0x435b8e||[],'count':_0x682a6d};});}});}exports[_0x86d3('0x9f')]=function(_0x73b8e6,_0x2c98e1){return runReport(_0x73b8e6['params'],_0x73b8e6[_0x86d3('0x2c')],_0x73b8e6[_0x86d3('0x3a')])[_0x86d3('0x1f')](respondWithResult(_0x2c98e1,null))['catch'](handleError(_0x2c98e1,null));};exports['runReport']=runReport;exports['query']=function(_0x458997,_0x1e3559){var _0x49a101=0xa;var _0x38d724=['join',_0x86d3('0x7f'),_0x86d3('0x51'),_0x86d3('0x52')];var _0x56ff91={'SUM':_0x86d3('0x53'),'COUNT':_0x86d3('0x54'),'COUNT DISTINCT':_0x86d3('0x80'),'MAX':_0x86d3('0x55'),'MIN':_0x86d3('0x56'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x86d3('0x58'),'GROUP_CONCAT ASC':_0x86d3('0x81'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1f347e={'SEC_TO_TIME':_0x86d3('0xa0'),'DATE':'DATE(%s)','HOUR':_0x86d3('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x45b210=function(_0x144e43){return!_[_0x86d3('0x5e')]([_0x86d3('0x82'),_0x86d3('0x83'),_0x86d3('0x5f'),_0x86d3('0x84')],_0x144e43);};var _0xdc7c21=function(_0x2e0397){if(!_0x2e0397||!_0x2e0397[_0x86d3('0x60')][_0x86d3('0x30')]){return'';}for(var _0x2cc617='(',_0x25339c=0x0;_0x25339c<_0x2e0397['rules'][_0x86d3('0x30')];_0x25339c+=0x1){_0x25339c>0x0&&(_0x2cc617+='\x20'+_0x2e0397[_0x86d3('0x61')]+'\x20');_0x2cc617+=_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]?_0xdc7c21(_0x2e0397[_0x86d3('0x60')][_0x25339c][_0x86d3('0x62')]):_0x2e0397['rules'][_0x25339c][_0x86d3('0x63')]+'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x64')]+(_0x45b210(_0x2e0397[_0x86d3('0x60')][_0x25339c]['condition'])?'\x20'+_0x2e0397['rules'][_0x25339c][_0x86d3('0x65')]:'');}return _0x2cc617+')';};var _0x2c0070={'where':{'id':_0x458997[_0x86d3('0x4e')]['id']}},_0x31d436,_0x56e713,_0x525559,_0x3b9e1e,_0x1d8d7c;_0x2c0070=_['merge']({},_0x2c0070,_0x458997[_0x86d3('0x3a')]);return db[_0x86d3('0x3d')][_0x86d3('0x43')](_0x2c0070)[_0x86d3('0x1f')](function(_0x1f80be){if(_0x1f80be){_0x31d436=_0x1f80be;return _0x1f80be[_0x86d3('0x66')]();}return null;})[_0x86d3('0x1f')](function(_0x3dddbe){if(_0x3dddbe){if(!_0x3dddbe[_0x86d3('0x30')]){throw new db[(_0x86d3('0x85'))][(_0x86d3('0x67'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x56e713=_0x3dddbe;return db[_0x86d3('0x68')]['findAll']({'raw':!![]});}return null;})['then'](function(_0x1d7e83){if(_0x1d7e83){_0x525559=_[_0x86d3('0x69')](_0x1d7e83,'id');var _0x5d9385;var _0x49a499=squel[_0x86d3('0x9b')]();_0x49a499[_0x86d3('0x6a')](_0x31d436[_0x86d3('0x6b')]);for(var _0x33e0a5=0x0;_0x33e0a5<_0x56e713['length'];_0x33e0a5+=0x1){_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6c')]?_0x525559[_0x56e713[_0x33e0a5][_0x86d3('0x6c')]][_0x86d3('0x6d')]:_0x56e713[_0x33e0a5][_0x86d3('0x63')];_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x6e')]?_['replace'](_0x56ff91[_0x56e713[_0x33e0a5][_0x86d3('0x6e')]],'%s',_0x5d9385):_0x5d9385;_0x5d9385=_0x56e713[_0x33e0a5][_0x86d3('0x70')]?_[_0x86d3('0x6f')](_0x1f347e[_0x56e713[_0x33e0a5]['format']],'%s',_0x5d9385):_0x5d9385;if(_0x56e713[_0x33e0a5][_0x86d3('0x71')]){_0x49a499['group'](_0x5d9385);}_0x56e713[_0x33e0a5][_0x86d3('0x72')]&&_0x49a499[_0x86d3('0x33')](_0x5d9385,_0x56e713[_0x33e0a5]['orderBy']===_0x86d3('0x87')?![]:!![]);_0x49a499[_0x86d3('0x63')](_0x5d9385,_0x56e713[_0x33e0a5][_0x86d3('0x73')]||_0x5d9385);}if(_0x31d436[_0x86d3('0x74')]){_0x31d436[_0x86d3('0x74')]=JSON[_0x86d3('0x75')](_0x31d436['joins']);for(var _0x10af91=0x0;_0x10af91<_0x31d436['joins'][_0x86d3('0x30')];_0x10af91+=0x1){if(_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]&&_[_0x86d3('0x5e')](_0x38d724,_0x31d436['joins'][_0x10af91][_0x86d3('0x29')])&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')]&&_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x77')]&&_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignKey']){_0x49a499[_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x29')]](_0x31d436['joins'][_0x10af91]['foreignTable'],null,util[_0x86d3('0x70')]('%s.%s\x20=\x20%s.%s',_0x31d436['table'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x76')],_0x31d436[_0x86d3('0x74')][_0x10af91]['foreignTable'],_0x31d436[_0x86d3('0x74')][_0x10af91][_0x86d3('0x78')]));}}}if(_0x31d436[_0x86d3('0x79')]){_0x31d436[_0x86d3('0x79')]=JSON[_0x86d3('0x75')](_0x31d436['conditions']);_0x49a499[_0x86d3('0x35')](_0xdc7c21(_0x31d436[_0x86d3('0x79')]['group']));}_0x1d8d7c=_0x49a499['clone']();_0x49a499['limit'](_0x49a101);_0x49a499[_0x86d3('0x18')](0x0);logger['debug']('Limited\x20Query:',_0x49a499[_0x86d3('0x7c')]());return dbH[_0x86d3('0x9e')]['query'](_0x49a499['toString'](),{'type':dbH[_0x86d3('0x9e')][_0x86d3('0x7d')][_0x86d3('0x7e')]});}})['then'](function(){return{'sql':_0x1d8d7c[_0x86d3('0x7c')]()};})[_0x86d3('0x1f')](respondWithResult(_0x1e3559,null))[_0x86d3('0x44')](handleError(_0x1e3559,null));};
\ No newline at end of file
+var _0x1261=['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','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','offset','limit','undefined','set','json','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','error','name','index','AnalyticDefaultReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','count','include','findAll','rows','show','length','includeAll','options','find','catch','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','params','preview','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%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)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parentKey','foreignTable','foreignKey','conditions','parse','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','AVG(%s)','DATE(%s)','value','keyBy','select','order','%s.%s\x20=\x20%s.%s','clone','web','fullPath','randomstring','generate','output','csv','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','Run\x20Query:','../../components/export/','savename','COUNT(*)','run','runReport','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','Sequelize','debug'];(function(_0x3e172a,_0x3f7f3a){var _0x5ef081=function(_0x234853){while(--_0x234853){_0x3e172a['push'](_0x3e172a['shift']());}};_0x5ef081(++_0x3f7f3a);}(_0x1261,0x144));var _0x1126=function(_0x5c619e,_0x1bccdf){_0x5c619e=_0x5c619e-0x0;var _0x445cf8=_0x1261[_0x5c619e];return _0x445cf8;};'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'];var dbH=require(_0x1126('0x17'))[_0x1126('0x18')];function respondWithStatusCode(_0xca0355,_0x3f10e9){_0x3f10e9=_0x3f10e9||0xcc;return function(_0xd8ca42){if(_0xd8ca42){return _0xca0355[_0x1126('0x19')](_0x3f10e9);}return _0xca0355[_0x1126('0x1a')](_0x3f10e9)['end']();};}function respondWithResult(_0x5de9a7,_0x1af673){_0x1af673=_0x1af673||0xc8;return function(_0x154e20){if(_0x154e20){return _0x5de9a7[_0x1126('0x1a')](_0x1af673)['json'](_0x154e20);}};}function respondWithFilteredResult(_0x45149c,_0x4794a7){return function(_0x35fe9f){if(_0x35fe9f){var _0x42f379=typeof _0x4794a7[_0x1126('0x1b')]==='undefined'&&typeof _0x4794a7[_0x1126('0x1c')]===_0x1126('0x1d');var _0x4a7b49=_0x35fe9f['count'];var _0x22ae0b=_0x42f379?0x0:_0x4794a7[_0x1126('0x1b')];var _0x58d11a=_0x42f379?_0x35fe9f['count']:_0x4794a7[_0x1126('0x1b')]+_0x4794a7['limit'];var _0x22ed37;if(_0x58d11a>=_0x4a7b49){_0x58d11a=_0x4a7b49;_0x22ed37=0xc8;}else{_0x22ed37=0xce;}_0x45149c[_0x1126('0x1a')](_0x22ed37);return _0x45149c[_0x1126('0x1e')]('Content-Range',_0x22ae0b+'-'+_0x58d11a+'/'+_0x4a7b49)[_0x1126('0x1f')](_0x35fe9f);}return null;};}function patchUpdates(_0x49d209){return function(_0x56efeb){try{jsonpatch[_0x1126('0x20')](_0x56efeb,_0x49d209,!![]);}catch(_0x3a9bed){return BPromise[_0x1126('0x21')](_0x3a9bed);}return _0x56efeb[_0x1126('0x22')]();};}function saveUpdates(_0x526ca1,_0x29ab60){return function(_0x477e6a){if(_0x477e6a){return _0x477e6a['update'](_0x526ca1)[_0x1126('0x23')](function(_0x59cd8e){return _0x59cd8e;});}return null;};}function removeEntity(_0x529dd9,_0x4b57ab){return function(_0x2199d9){if(_0x2199d9){return _0x2199d9[_0x1126('0x24')]()[_0x1126('0x23')](function(){var _0x34bcf1=_0x2199d9[_0x1126('0x25')]({'plain':!![]});var _0x1b07a7=_0x1126('0x26');return db[_0x1126('0x27')]['destroy']({'where':{'type':_0x1b07a7,'resourceId':_0x34bcf1['id']}})[_0x1126('0x23')](function(){return _0x2199d9;});})[_0x1126('0x23')](function(){_0x529dd9[_0x1126('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x541bc9,_0xeb7d89){return function(_0x39bf0e){if(!_0x39bf0e){_0x541bc9['sendStatus'](0x194);}return _0x39bf0e;};}function handleError(_0x2fb797,_0x23d2bc){_0x23d2bc=_0x23d2bc||0x1f4;return function(_0x4a334a){logger[_0x1126('0x28')](_0x4a334a['stack']);if(_0x4a334a[_0x1126('0x29')]){delete _0x4a334a['name'];}_0x2fb797[_0x1126('0x1a')](_0x23d2bc)['send'](_0x4a334a);};}exports[_0x1126('0x2a')]=function(_0x5f2611,_0x5252e0){var _0x4a53ab={},_0x17646e={},_0xa8906d={'count':0x0,'rows':[]};var _0x1cef48=_['map'](db[_0x1126('0x2b')][_0x1126('0x2c')],function(_0x56f7f8){return{'name':_0x56f7f8[_0x1126('0x2d')],'type':_0x56f7f8[_0x1126('0x2e')][_0x1126('0x2f')]};});_0x17646e[_0x1126('0x30')]=_['map'](_0x1cef48,'name');_0x17646e[_0x1126('0x31')]=_[_0x1126('0x32')](_0x5f2611[_0x1126('0x31')]);_0x17646e[_0x1126('0x33')]=_['intersection'](_0x17646e[_0x1126('0x30')],_0x17646e[_0x1126('0x31')]);_0x4a53ab[_0x1126('0x34')]=_[_0x1126('0x35')](_0x17646e[_0x1126('0x30')],qs['fields'](_0x5f2611[_0x1126('0x31')][_0x1126('0x36')]));_0x4a53ab[_0x1126('0x34')]=_0x4a53ab[_0x1126('0x34')]['length']?_0x4a53ab['attributes']:_0x17646e[_0x1126('0x30')];if(!_0x5f2611[_0x1126('0x31')]['hasOwnProperty'](_0x1126('0x37'))){_0x4a53ab[_0x1126('0x1c')]=qs[_0x1126('0x1c')](_0x5f2611['query']['limit']);_0x4a53ab[_0x1126('0x1b')]=qs[_0x1126('0x1b')](_0x5f2611[_0x1126('0x31')][_0x1126('0x1b')]);}_0x4a53ab['order']=qs[_0x1126('0x38')](_0x5f2611['query'][_0x1126('0x38')]);_0x4a53ab[_0x1126('0x39')]=qs[_0x1126('0x33')](_[_0x1126('0x3a')](_0x5f2611[_0x1126('0x31')],_0x17646e['filters']),_0x1cef48);if(_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]){_0x4a53ab[_0x1126('0x39')]=_[_0x1126('0x3c')](_0x4a53ab[_0x1126('0x39')],{'$or':_[_0x1126('0x3d')](_0x1cef48,function(_0x3052f9){if(_0x3052f9['type']!==_0x1126('0x3e')){var _0x154c28={};_0x154c28[_0x3052f9[_0x1126('0x29')]]={'$like':'%'+_0x5f2611[_0x1126('0x31')][_0x1126('0x3b')]+'%'};return _0x154c28;}})});}_0x4a53ab=_['merge']({},_0x4a53ab,_0x5f2611['options']);var _0x1c4f06={'where':_0x4a53ab[_0x1126('0x39')]};return db[_0x1126('0x2b')][_0x1126('0x3f')](_0x1c4f06)[_0x1126('0x23')](function(_0x276fd5){_0xa8906d['count']=_0x276fd5;if(_0x5f2611['query']['includeAll']){_0x4a53ab[_0x1126('0x40')]=[{'all':!![]}];}return db['AnalyticDefaultReport'][_0x1126('0x41')](_0x4a53ab);})[_0x1126('0x23')](function(_0x3584a3){_0xa8906d[_0x1126('0x42')]=_0x3584a3;return _0xa8906d;})['then'](respondWithFilteredResult(_0x5252e0,_0x4a53ab))['catch'](handleError(_0x5252e0,null));};exports[_0x1126('0x43')]=function(_0xa93167,_0x1d63b9){var _0x5f5d3a={'raw':!![],'where':{'id':_0xa93167['params']['id']}},_0x2f8551={};_0x2f8551[_0x1126('0x30')]=_['keys'](db[_0x1126('0x2b')][_0x1126('0x2c')]);_0x2f8551[_0x1126('0x31')]=_['keys'](_0xa93167[_0x1126('0x31')]);_0x2f8551[_0x1126('0x33')]=_[_0x1126('0x35')](_0x2f8551['model'],_0x2f8551['query']);_0x5f5d3a['attributes']=_[_0x1126('0x35')](_0x2f8551['model'],qs[_0x1126('0x36')](_0xa93167['query'][_0x1126('0x36')]));_0x5f5d3a[_0x1126('0x34')]=_0x5f5d3a[_0x1126('0x34')][_0x1126('0x44')]?_0x5f5d3a[_0x1126('0x34')]:_0x2f8551['model'];if(_0xa93167[_0x1126('0x31')][_0x1126('0x45')]){_0x5f5d3a['include']=[{'all':!![]}];}_0x5f5d3a=_[_0x1126('0x3c')]({},_0x5f5d3a,_0xa93167[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x5f5d3a)[_0x1126('0x23')](handleEntityNotFound(_0x1d63b9,null))['then'](respondWithResult(_0x1d63b9,null))[_0x1126('0x48')](handleError(_0x1d63b9,null));};exports[_0x1126('0x49')]=function(_0x213a76,_0x59656d){return db[_0x1126('0x2b')][_0x1126('0x49')](_0x213a76[_0x1126('0x4a')],{})[_0x1126('0x23')](function(_0x224456){var _0x2081f2=_0x213a76[_0x1126('0x4b')][_0x1126('0x25')]({'plain':!![]});if(!_0x2081f2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2081f2[_0x1126('0x4c')]==='user'){var _0x40168e=_0x224456[_0x1126('0x25')]({'plain':!![]});var _0x4a1831='Reports';return db[_0x1126('0x4d')][_0x1126('0x47')]({'where':{'name':_0x4a1831,'userProfileId':_0x2081f2[_0x1126('0x4e')]},'raw':!![]})['then'](function(_0x3cb44c){if(_0x3cb44c&&_0x3cb44c[_0x1126('0x4f')]===0x0){return db[_0x1126('0x27')][_0x1126('0x49')]({'name':_0x40168e['name'],'resourceId':_0x40168e['id'],'type':_0x1126('0x26'),'sectionId':_0x3cb44c['id']},{})[_0x1126('0x23')](function(){return _0x224456;});}else{return _0x224456;}})['catch'](function(_0x4bcc08){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4bcc08);throw _0x4bcc08;});}return _0x224456;})[_0x1126('0x23')](respondWithResult(_0x59656d,0xc9))[_0x1126('0x48')](handleError(_0x59656d,null));};exports['update']=function(_0x16552b,_0x1c7a2b){if(_0x16552b[_0x1126('0x4a')]['id']){delete _0x16552b[_0x1126('0x4a')]['id'];}return db[_0x1126('0x2b')]['find']({'where':{'id':_0x16552b[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x1c7a2b,null))['then'](saveUpdates(_0x16552b[_0x1126('0x4a')],null))[_0x1126('0x23')](respondWithResult(_0x1c7a2b,null))[_0x1126('0x48')](handleError(_0x1c7a2b,null));};exports[_0x1126('0x24')]=function(_0xc8a0f,_0x59c3d0){return db[_0x1126('0x2b')]['find']({'where':{'id':_0xc8a0f[_0x1126('0x50')]['id']}})[_0x1126('0x23')](handleEntityNotFound(_0x59c3d0,null))[_0x1126('0x23')](removeEntity(_0x59c3d0,null))['catch'](handleError(_0x59c3d0,null));};exports[_0x1126('0x51')]=function(_0x2340f8,_0x5763b4){var _0x30812d=0xa;var _0x25038f=[_0x1126('0x52'),'left_join',_0x1126('0x53'),_0x1126('0x54')];var _0x22ab18={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x2a5422={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':'DATE(%s)','HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x3767e4=function(_0x5246aa){return!_[_0x1126('0x60')]([_0x1126('0x61'),'IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0x5246aa);};var _0x375b76=function(_0x592960){if(!_0x592960||!_0x592960[_0x1126('0x64')]['length']){return'';}for(var _0x558b6e='(',_0xbdc58=0x0;_0xbdc58<_0x592960[_0x1126('0x64')][_0x1126('0x44')];_0xbdc58+=0x1){_0xbdc58>0x0&&(_0x558b6e+='\x20'+_0x592960[_0x1126('0x65')]+'\x20');_0x558b6e+=_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x66')]?_0x375b76(_0x592960[_0x1126('0x64')][_0xbdc58]['group']):_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x67')]+'\x20'+_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')]+(_0x3767e4(_0x592960[_0x1126('0x64')][_0xbdc58][_0x1126('0x68')])?'\x20'+_0x592960['rules'][_0xbdc58]['value']:'');}return _0x558b6e+')';};var _0x16a343={'where':{'id':_0x2340f8[_0x1126('0x50')]['id']}},_0x3921c2,_0x4bf2b3,_0x5ee130,_0x5e9260,_0x51a28d;_0x16a343=_[_0x1126('0x3c')]({},_0x16a343,_0x2340f8[_0x1126('0x46')]);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x16a343)[_0x1126('0x23')](function(_0x170bf0){if(_0x170bf0){_0x3921c2=_0x170bf0;return _0x170bf0[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x3f007b){if(_0x3f007b){if(!_0x3f007b[_0x1126('0x44')]){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4bf2b3=_0x3f007b;return db[_0x1126('0x6c')][_0x1126('0x41')]({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x56c003){if(_0x56c003){_0x5ee130=_['keyBy'](_0x56c003,'id');var _0x15cf3d;var _0x2643d7=squel['select']();_0x2643d7[_0x1126('0x6d')](_0x3921c2[_0x1126('0x6e')]);for(var _0x366675=0x0;_0x366675<_0x4bf2b3[_0x1126('0x44')];_0x366675+=0x1){_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x6f')]?_0x5ee130[_0x4bf2b3[_0x366675][_0x1126('0x6f')]][_0x1126('0x70')]:_0x4bf2b3[_0x366675][_0x1126('0x67')];_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x71')]?_[_0x1126('0x72')](_0x22ab18[_0x4bf2b3[_0x366675][_0x1126('0x71')]],'%s',_0x15cf3d):_0x15cf3d;_0x15cf3d=_0x4bf2b3[_0x366675][_0x1126('0x73')]?_[_0x1126('0x72')](_0x2a5422[_0x4bf2b3[_0x366675]['format']],'%s',_0x15cf3d):_0x15cf3d;if(_0x4bf2b3[_0x366675][_0x1126('0x74')]){_0x2643d7[_0x1126('0x66')](_0x15cf3d);}_0x4bf2b3[_0x366675][_0x1126('0x75')]&&_0x2643d7['order'](_0x15cf3d,_0x4bf2b3[_0x366675]['orderBy']===_0x1126('0x76')?![]:!![]);_0x2643d7[_0x1126('0x67')](_0x15cf3d,_0x4bf2b3[_0x366675][_0x1126('0x77')]||_0x15cf3d);}if(_0x3921c2[_0x1126('0x78')]){_0x3921c2['joins']=JSON['parse'](_0x3921c2['joins']);for(var _0x79afca=0x0;_0x79afca<_0x3921c2[_0x1126('0x78')][_0x1126('0x44')];_0x79afca+=0x1){if(_0x3921c2[_0x1126('0x78')][_0x79afca]['type']&&_[_0x1126('0x60')](_0x25038f,_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')])&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x79')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')]&&_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7b')]){_0x2643d7[_0x3921c2['joins'][_0x79afca][_0x1126('0x2e')]](_0x3921c2['joins'][_0x79afca][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x3921c2[_0x1126('0x6e')],_0x3921c2[_0x1126('0x78')][_0x79afca]['parentKey'],_0x3921c2[_0x1126('0x78')][_0x79afca][_0x1126('0x7a')],_0x3921c2['joins'][_0x79afca]['foreignKey']));}}}if(_0x3921c2[_0x1126('0x7c')]){_0x3921c2[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x3921c2['conditions']);_0x2643d7['where'](_0x375b76(_0x3921c2['conditions'][_0x1126('0x66')]));}_0x51a28d=_0x2643d7['clone']();_0x2643d7['limit'](_0x30812d);_0x2643d7[_0x1126('0x1b')](0x0);logger['debug'](_0x1126('0x7e'),_0x2643d7[_0x1126('0x7f')]());return dbH['sequelize'][_0x1126('0x31')](_0x2643d7[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](respondWithResult(_0x5763b4,null))[_0x1126('0x48')](handleError(_0x5763b4,null));};function runReport(_0x426faa,_0x5679ec,_0xd182b1){var _0x2d6fcf=_0x5679ec[_0x1126('0x29')];var _0x2af2d0=0xa;var _0x2598a7=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x9a2af0={'SUM':_0x1126('0x55'),'COUNT':_0x1126('0x56'),'COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':_0x1126('0x59'),'AVG':_0x1126('0x84'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x33cccf={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':'HOUR(%s)','ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x5bdb30=function(_0xb1199b){return!_[_0x1126('0x60')](['IS\x20NULL','IS\x20NOT\x20NULL',_0x1126('0x62'),_0x1126('0x63')],_0xb1199b);};var _0x228552=function(_0x1ee970){if(!_0x1ee970||!_0x1ee970[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x2d7150='(',_0x35a9a4=0x0;_0x35a9a4<_0x1ee970[_0x1126('0x64')]['length'];_0x35a9a4+=0x1){_0x35a9a4>0x0&&(_0x2d7150+='\x20'+_0x1ee970[_0x1126('0x65')]+'\x20');_0x2d7150+=_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]?_0x228552(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x66')]):_0x1ee970[_0x1126('0x64')][_0x35a9a4]['field']+'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')]+(_0x5bdb30(_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x68')])?'\x20'+_0x1ee970[_0x1126('0x64')][_0x35a9a4][_0x1126('0x86')]:'');}return _0x2d7150+')';};var _0x2418ca={'where':{'id':_0x426faa['id']}},_0x2d2dfc,_0x38eac6,_0xc3503b,_0x5d6edb,_0x50238d;_0x2418ca=_[_0x1126('0x3c')]({},_0x2418ca,_0xd182b1);return db['AnalyticDefaultReport'][_0x1126('0x47')](_0x2418ca)['then'](function(_0x4461ae){if(_0x4461ae){_0x2d2dfc=_0x4461ae;return _0x4461ae['getFields']();}return null;})[_0x1126('0x23')](function(_0x4fbd44){if(_0x4fbd44){if(!_0x4fbd44['length']){throw new db['Sequelize'][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x38eac6=_0x4fbd44;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0xe2f82d){if(_0xe2f82d){_0xc3503b=_[_0x1126('0x87')](_0xe2f82d,'id');var _0x5dfb8f;var _0x48f914=squel[_0x1126('0x88')]();_0x48f914['from'](_0x2d2dfc[_0x1126('0x6e')]);for(var _0x39d9a0=0x0;_0x39d9a0<_0x38eac6[_0x1126('0x44')];_0x39d9a0+=0x1){_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x6f')]?_0xc3503b[_0x38eac6[_0x39d9a0][_0x1126('0x6f')]]['metric']:_0x38eac6[_0x39d9a0]['field'];_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x71')]?_[_0x1126('0x72')](_0x9a2af0[_0x38eac6[_0x39d9a0][_0x1126('0x71')]],'%s',_0x5dfb8f):_0x5dfb8f;_0x5dfb8f=_0x38eac6[_0x39d9a0][_0x1126('0x73')]?_[_0x1126('0x72')](_0x33cccf[_0x38eac6[_0x39d9a0][_0x1126('0x73')]],'%s',_0x5dfb8f):_0x5dfb8f;if(_0x38eac6[_0x39d9a0][_0x1126('0x74')]){_0x48f914[_0x1126('0x66')](_0x5dfb8f);}_0x38eac6[_0x39d9a0][_0x1126('0x75')]&&_0x48f914[_0x1126('0x89')](_0x5dfb8f,_0x38eac6[_0x39d9a0][_0x1126('0x75')]==='DESC'?![]:!![]);_0x48f914[_0x1126('0x67')](_0x5dfb8f,_0x38eac6[_0x39d9a0]['alias']||_0x5dfb8f);}if(_0x2d2dfc[_0x1126('0x78')]){_0x2d2dfc['joins']=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x78')]);for(var _0x215d4d=0x0;_0x215d4d<_0x2d2dfc[_0x1126('0x78')]['length'];_0x215d4d+=0x1){if(_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x2e')]&&_['includes'](_0x2598a7,_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x2e')])&&_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x79')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7a')]&&_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x7b')]){_0x48f914[_0x2d2dfc[_0x1126('0x78')][_0x215d4d]['type']](_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],null,util[_0x1126('0x73')](_0x1126('0x8a'),_0x2d2dfc[_0x1126('0x6e')],_0x2d2dfc['joins'][_0x215d4d][_0x1126('0x79')],_0x2d2dfc[_0x1126('0x78')][_0x215d4d][_0x1126('0x7a')],_0x2d2dfc['joins'][_0x215d4d]['foreignKey']));}}}if(_0x2d2dfc['conditions']){_0x2d2dfc[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2d2dfc[_0x1126('0x7c')]);_0x48f914[_0x1126('0x39')](_0x228552(_0x2d2dfc['conditions'][_0x1126('0x66')]));}_0x50238d=_0x48f914[_0x1126('0x8b')]();_0x48f914[_0x1126('0x1c')](_0x2af2d0);_0x48f914[_0x1126('0x1b')](0x0);return;}})[_0x1126('0x23')](function(){if(_0x5679ec['output']===_0x1126('0x8c')){return null;}var _0x21c487=_['merge'](_0x5679ec,{'name':_0x5679ec[_0x1126('0x8d')]||_0x5679ec['name']||_0x2d2dfc['name'],'basename':_0x2d6fcf,'savename':util[_0x1126('0x73')]('%s-%s.%s',_0x5679ec[_0x1126('0x29')]||_0x2d2dfc[_0x1126('0x29')],require(_0x1126('0x8e'))[_0x1126('0x8f')](0x4),_0x5679ec[_0x1126('0x90')]||_0x1126('0x91')),'reportId':_0x2d2dfc['id'],'reportType':_0x1126('0x92')});return db[_0x1126('0x93')][_0x1126('0x49')](_0x21c487,{'raw':!![]});})['then'](function(_0x2577f5){if(_0x2d2dfc[_0x1126('0x6e')]===_0x1126('0x94')){_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+_0x1126('0x95'),_0x5679ec[_0x1126('0x96')],_0x5679ec[_0x1126('0x97')]);}else{_0x50238d[_0x1126('0x39')](_0x2d2dfc['table']+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x5679ec['startDate'],_0x5679ec[_0x1126('0x97')]);}if(_0x2577f5){logger['info'](_0x1126('0x98'),_0x50238d[_0x1126('0x7f')]());require('child_process')['fork'](path[_0x1126('0x52')](__dirname,_0x1126('0x99'),_0x2577f5['output']),[_0x2577f5['id'],_0x50238d[_0x1126('0x7f')](),path[_0x1126('0x52')](__dirname,'../../files/reports',_0x2577f5[_0x1126('0x9a')]),_0x2d6fcf]);return _0x2577f5;}else{var _0x4a9941=squel[_0x1126('0x88')]();_0x4a9941[_0x1126('0x6d')]('('+_0x50238d[_0x1126('0x7f')]()+')','countTable');_0x4a9941[_0x1126('0x67')](_0x1126('0x9b'),_0x1126('0x3f'));_0x50238d[_0x1126('0x1c')](_0x5679ec[_0x1126('0x1c')]||_0x2af2d0);_0x50238d[_0x1126('0x1b')](_0x5679ec[_0x1126('0x1b')]||0x0);return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x4a9941[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]})[_0x1126('0x23')](function(_0x12ffa5){if(!_0x12ffa5[_0x1126('0x44')]){_0x5d6edb=0x0;}else{_0x5d6edb=_0x12ffa5[0x0][_0x1126('0x3f')]||0x0;}return dbH['sequelize'][_0x1126('0x31')](_0x50238d[_0x1126('0x7f')](),{'type':dbH['sequelize']['QueryTypes'][_0x1126('0x82')]});})[_0x1126('0x23')](function(_0x35065c){return{'rows':_0x35065c||[],'count':_0x5d6edb};});}});}exports[_0x1126('0x9c')]=function(_0x5c0215,_0x444f94){return runReport(_0x5c0215[_0x1126('0x50')],_0x5c0215['query'],_0x5c0215[_0x1126('0x46')])['then'](respondWithResult(_0x444f94,null))[_0x1126('0x48')](handleError(_0x444f94,null));};exports[_0x1126('0x9d')]=runReport;exports['query']=function(_0x4d43ad,_0xa02d9e){var _0x548f9e=0xa;var _0x5edb83=[_0x1126('0x52'),_0x1126('0x83'),_0x1126('0x53'),_0x1126('0x54')];var _0x4f29ce={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0x1126('0x57'),'MAX':_0x1126('0x58'),'MIN':'MIN(%s)','AVG':_0x1126('0x84'),'GROUP_CONCAT':_0x1126('0x5a'),'GROUP_CONCAT ASC':_0x1126('0x5b'),'GROUP_CONCAT DESC':_0x1126('0x5c')};var _0x17b25d={'SEC_TO_TIME':_0x1126('0x5d'),'DATE':_0x1126('0x85'),'HOUR':_0x1126('0x5e'),'ROUND':_0x1126('0x5f'),'UNIX_TIMESTAMP':_0x1126('0x9e')};var _0x3a4a91=function(_0x55145f){return!_[_0x1126('0x60')](['IS\x20NULL',_0x1126('0x9f'),_0x1126('0x62'),_0x1126('0x63')],_0x55145f);};var _0x4c7dc7=function(_0x33a27b){if(!_0x33a27b||!_0x33a27b[_0x1126('0x64')][_0x1126('0x44')]){return'';}for(var _0x578c1b='(',_0x1562b2=0x0;_0x1562b2<_0x33a27b[_0x1126('0x64')][_0x1126('0x44')];_0x1562b2+=0x1){_0x1562b2>0x0&&(_0x578c1b+='\x20'+_0x33a27b[_0x1126('0x65')]+'\x20');_0x578c1b+=_0x33a27b[_0x1126('0x64')][_0x1562b2]['group']?_0x4c7dc7(_0x33a27b['rules'][_0x1562b2][_0x1126('0x66')]):_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x67')]+'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')]+(_0x3a4a91(_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x68')])?'\x20'+_0x33a27b[_0x1126('0x64')][_0x1562b2][_0x1126('0x86')]:'');}return _0x578c1b+')';};var _0x2fb228={'where':{'id':_0x4d43ad[_0x1126('0x50')]['id']}},_0x2c95b6,_0x4a4b43,_0x588f4f,_0x5ac4d6,_0x1168a5;_0x2fb228=_['merge']({},_0x2fb228,_0x4d43ad['options']);return db[_0x1126('0x2b')][_0x1126('0x47')](_0x2fb228)[_0x1126('0x23')](function(_0x48b088){if(_0x48b088){_0x2c95b6=_0x48b088;return _0x48b088[_0x1126('0x69')]();}return null;})[_0x1126('0x23')](function(_0x5a28f9){if(_0x5a28f9){if(!_0x5a28f9[_0x1126('0x44')]){throw new db[(_0x1126('0xa0'))][(_0x1126('0x6a'))](_0x1126('0x6b'),0x193);}_0x4a4b43=_0x5a28f9;return db[_0x1126('0x6c')]['findAll']({'raw':!![]});}return null;})[_0x1126('0x23')](function(_0x1140ec){if(_0x1140ec){_0x588f4f=_['keyBy'](_0x1140ec,'id');var _0x578f5c;var _0x559dae=squel[_0x1126('0x88')]();_0x559dae[_0x1126('0x6d')](_0x2c95b6[_0x1126('0x6e')]);for(var _0x9d7819=0x0;_0x9d7819<_0x4a4b43[_0x1126('0x44')];_0x9d7819+=0x1){_0x578f5c=_0x4a4b43[_0x9d7819]['MetricId']?_0x588f4f[_0x4a4b43[_0x9d7819][_0x1126('0x6f')]]['metric']:_0x4a4b43[_0x9d7819][_0x1126('0x67')];_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x71')]?_['replace'](_0x4f29ce[_0x4a4b43[_0x9d7819]['function']],'%s',_0x578f5c):_0x578f5c;_0x578f5c=_0x4a4b43[_0x9d7819][_0x1126('0x73')]?_[_0x1126('0x72')](_0x17b25d[_0x4a4b43[_0x9d7819]['format']],'%s',_0x578f5c):_0x578f5c;if(_0x4a4b43[_0x9d7819]['groupBy']){_0x559dae[_0x1126('0x66')](_0x578f5c);}_0x4a4b43[_0x9d7819][_0x1126('0x75')]&&_0x559dae[_0x1126('0x89')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x75')]===_0x1126('0x76')?![]:!![]);_0x559dae[_0x1126('0x67')](_0x578f5c,_0x4a4b43[_0x9d7819][_0x1126('0x77')]||_0x578f5c);}if(_0x2c95b6[_0x1126('0x78')]){_0x2c95b6[_0x1126('0x78')]=JSON[_0x1126('0x7d')](_0x2c95b6['joins']);for(var _0x4d6528=0x0;_0x4d6528<_0x2c95b6[_0x1126('0x78')][_0x1126('0x44')];_0x4d6528+=0x1){if(_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x2e')]&&_[_0x1126('0x60')](_0x5edb83,_0x2c95b6[_0x1126('0x78')][_0x4d6528]['type'])&&_0x2c95b6['joins'][_0x4d6528][_0x1126('0x79')]&&_0x2c95b6['joins'][_0x4d6528]['foreignTable']&&_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]){_0x559dae[_0x2c95b6['joins'][_0x4d6528][_0x1126('0x2e')]](_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],null,util[_0x1126('0x73')]('%s.%s\x20=\x20%s.%s',_0x2c95b6[_0x1126('0x6e')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x79')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7a')],_0x2c95b6[_0x1126('0x78')][_0x4d6528][_0x1126('0x7b')]));}}}if(_0x2c95b6['conditions']){_0x2c95b6[_0x1126('0x7c')]=JSON[_0x1126('0x7d')](_0x2c95b6[_0x1126('0x7c')]);_0x559dae[_0x1126('0x39')](_0x4c7dc7(_0x2c95b6['conditions'][_0x1126('0x66')]));}_0x1168a5=_0x559dae[_0x1126('0x8b')]();_0x559dae['limit'](_0x548f9e);_0x559dae[_0x1126('0x1b')](0x0);logger[_0x1126('0xa1')](_0x1126('0x7e'),_0x559dae['toString']());return dbH[_0x1126('0x80')][_0x1126('0x31')](_0x559dae[_0x1126('0x7f')](),{'type':dbH[_0x1126('0x80')][_0x1126('0x81')][_0x1126('0x82')]});}})['then'](function(){return{'sql':_0x1168a5[_0x1126('0x7f')]()};})[_0x1126('0x23')](respondWithResult(_0xa02d9e,null))['catch'](handleError(_0xa02d9e,null));};
\ No newline at end of file
index 14fbb4a..f3c322d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd81=['./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x580d0c,_0x2d778c){var _0x4a56b7=function(_0x97c50f){while(--_0x97c50f){_0x580d0c['push'](_0x580d0c['shift']());}};_0x4a56b7(++_0x2d778c);}(_0xfd81,0x74));var _0x1fd8=function(_0xc1ede1,_0x27c567){_0xc1ede1=_0xc1ede1-0x0;var _0x36f293=_0xfd81[_0xc1ede1];return _0x36f293;};'use strict';var _=require(_0x1fd8('0x0'));var util=require(_0x1fd8('0x1'));var logger=require(_0x1fd8('0x2'))(_0x1fd8('0x3'));var moment=require(_0x1fd8('0x4'));var BPromise=require(_0x1fd8('0x5'));var rp=require(_0x1fd8('0x6'));var fs=require('fs');var path=require(_0x1fd8('0x7'));var rimraf=require(_0x1fd8('0x8'));var config=require(_0x1fd8('0x9'));var attributes=require(_0x1fd8('0xa'));module[_0x1fd8('0xb')]=function(_0x35ef2,_0x4c3bc1){return _0x35ef2['define'](_0x1fd8('0xc'),attributes,{'tableName':_0x1fd8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabe6=['moment','bluebird','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','AnalyticDefaultReport','lodash','util','../../config/logger','api'];(function(_0x4ed265,_0x10d097){var _0x308d3c=function(_0x13ae17){while(--_0x13ae17){_0x4ed265['push'](_0x4ed265['shift']());}};_0x308d3c(++_0x10d097);}(_0xabe6,0x1d0));var _0x6abe=function(_0x42a400,_0x22f45b){_0x42a400=_0x42a400-0x0;var _0x35498e=_0xabe6[_0x42a400];return _0x35498e;};'use strict';var _=require(_0x6abe('0x0'));var util=require(_0x6abe('0x1'));var logger=require(_0x6abe('0x2'))(_0x6abe('0x3'));var moment=require(_0x6abe('0x4'));var BPromise=require(_0x6abe('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6abe('0x6'));var rimraf=require(_0x6abe('0x7'));var config=require(_0x6abe('0x8'));var attributes=require(_0x6abe('0x9'));module[_0x6abe('0xa')]=function(_0x1d204e,_0xdd7972){return _0x1d204e['define'](_0x6abe('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c1908f8..f428ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6cb=['then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x329e45,_0x2a09db){var _0x25c632=function(_0x257b65){while(--_0x257b65){_0x329e45['push'](_0x329e45['shift']());}};_0x25c632(++_0x2a09db);}(_0xb6cb,0x94));var _0xbb6c=function(_0xcd26a9,_0x512e77){_0xcd26a9=_0xcd26a9-0x0;var _0x3afcbc=_0xb6cb[_0xcd26a9];return _0x3afcbc;};'use strict';var _=require(_0xbb6c('0x0'));var util=require(_0xbb6c('0x1'));var moment=require(_0xbb6c('0x2'));var BPromise=require(_0xbb6c('0x3'));var rs=require(_0xbb6c('0x4'));var fs=require('fs');var Redis=require(_0xbb6c('0x5'));var db=require(_0xbb6c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb6c('0x7'))(_0xbb6c('0x8'));var config=require(_0xbb6c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xbb6c('0xa')][_0xbb6c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa51950,_0x3055f0,_0x34a95c){return new BPromise(function(_0x1fa8ba,_0x4517a8){return client[_0xbb6c('0xc')](_0xa51950,_0x34a95c)[_0xbb6c('0xd')](function(_0x25a6f6){logger[_0xbb6c('0xe')](_0xbb6c('0xf'),_0x3055f0,'request\x20sent');logger[_0xbb6c('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x3055f0,_0xbb6c('0x11'),JSON[_0xbb6c('0x12')](_0x25a6f6));if(_0x25a6f6[_0xbb6c('0x13')]){if(_0x25a6f6[_0xbb6c('0x13')][_0xbb6c('0x14')]===0x1f4){logger['error'](_0xbb6c('0xf'),_0x3055f0,_0x25a6f6[_0xbb6c('0x13')][_0xbb6c('0x15')]);return _0x4517a8(_0x25a6f6[_0xbb6c('0x13')][_0xbb6c('0x15')]);}logger[_0xbb6c('0x13')](_0xbb6c('0xf'),_0x3055f0,_0x25a6f6['error'][_0xbb6c('0x15')]);return _0x1fa8ba(_0x25a6f6[_0xbb6c('0x13')][_0xbb6c('0x15')]);}else{logger['info'](_0xbb6c('0xf'),_0x3055f0,_0xbb6c('0x11'));_0x1fa8ba(_0x25a6f6[_0xbb6c('0x16')][_0xbb6c('0x15')]);}})['catch'](function(_0x49583c){logger[_0xbb6c('0x13')](_0xbb6c('0xf'),_0x3055f0,_0x49583c);_0x4517a8(_0x49583c);});});}
\ No newline at end of file
+var _0xb0eb=['stringify','error','code','message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x31d3b8,_0xd47928){var _0x258cac=function(_0x5a2cc0){while(--_0x5a2cc0){_0x31d3b8['push'](_0x31d3b8['shift']());}};_0x258cac(++_0xd47928);}(_0xb0eb,0x165));var _0xbb0e=function(_0x1cf77f,_0x575de1){_0x1cf77f=_0x1cf77f-0x0;var _0x537398=_0xb0eb[_0x1cf77f];return _0x537398;};'use strict';var _=require(_0xbb0e('0x0'));var util=require(_0xbb0e('0x1'));var moment=require(_0xbb0e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb0e('0x3'));var db=require(_0xbb0e('0x4'))['db'];var utils=require(_0xbb0e('0x5'));var logger=require(_0xbb0e('0x6'))(_0xbb0e('0x7'));var config=require(_0xbb0e('0x8'));var jayson=require(_0xbb0e('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5f2686,_0x4ce4f9,_0x556486){return new BPromise(function(_0x54d757,_0x458b4d){return client[_0xbb0e('0xa')](_0x5f2686,_0x556486)[_0xbb0e('0xb')](function(_0xf18844){logger[_0xbb0e('0xc')](_0xbb0e('0xd'),_0x4ce4f9,'request\x20sent');logger[_0xbb0e('0xe')](_0xbb0e('0xf'),_0x4ce4f9,_0xbb0e('0x10'),JSON[_0xbb0e('0x11')](_0xf18844));if(_0xf18844[_0xbb0e('0x12')]){if(_0xf18844['error'][_0xbb0e('0x13')]===0x1f4){logger['error'](_0xbb0e('0xd'),_0x4ce4f9,_0xf18844['error']['message']);return _0x458b4d(_0xf18844[_0xbb0e('0x12')][_0xbb0e('0x14')]);}logger['error'](_0xbb0e('0xd'),_0x4ce4f9,_0xf18844['error'][_0xbb0e('0x14')]);return _0x54d757(_0xf18844[_0xbb0e('0x12')][_0xbb0e('0x14')]);}else{logger[_0xbb0e('0xc')](_0xbb0e('0xd'),_0x4ce4f9,_0xbb0e('0x10'));_0x54d757(_0xf18844[_0xbb0e('0x15')][_0xbb0e('0x14')]);}})['catch'](function(_0x56c843){logger[_0xbb0e('0x12')](_0xbb0e('0xd'),_0x4ce4f9,_0x56c843);_0x458b4d(_0x56c843);});});}
\ No newline at end of file
index e4bd839..0a0129c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x228d=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','/:id/preview','run','query','post','create','put','update','destroy'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0x228d,0xfe));var _0xd228=function(_0x5e2eb5,_0x3f4e6c){_0x5e2eb5=_0x5e2eb5-0x0;var _0x180baf=_0x228d[_0x5e2eb5];return _0x180baf;};'use strict';var multer=require(_0xd228('0x0'));var util=require(_0xd228('0x1'));var path=require(_0xd228('0x2'));var timeout=require(_0xd228('0x3'));var express=require('express');var router=express[_0xd228('0x4')]();var fs_extra=require(_0xd228('0x5'));var auth=require(_0xd228('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd228('0x7'));var controller=require(_0xd228('0x8'));router[_0xd228('0x9')]('/',auth[_0xd228('0xa')](),controller[_0xd228('0xb')]);router[_0xd228('0x9')](_0xd228('0xc'),auth[_0xd228('0xa')](),controller[_0xd228('0xd')]);router['get'](_0xd228('0xe'),auth[_0xd228('0xa')](),controller['preview']);router[_0xd228('0x9')]('/:id/run',auth['isAuthenticated'](),controller[_0xd228('0xf')]);router['get']('/:id/query',auth[_0xd228('0xa')](),controller[_0xd228('0x10')]);router[_0xd228('0x11')]('/',auth[_0xd228('0xa')](),controller[_0xd228('0x12')]);router[_0xd228('0x13')](_0xd228('0xc'),auth[_0xd228('0xa')](),controller[_0xd228('0x14')]);router['delete'](_0xd228('0xc'),auth[_0xd228('0xa')](),controller[_0xd228('0x15')]);module[_0xd228('0x16')]=router;
\ No newline at end of file
+var _0x6fe4=['/:id/preview','/:id/query','query','post','create','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show'];(function(_0x16ae34,_0x1dc6d){var _0x184836=function(_0x1e48b7){while(--_0x1e48b7){_0x16ae34['push'](_0x16ae34['shift']());}};_0x184836(++_0x1dc6d);}(_0x6fe4,0x144));var _0x46fe=function(_0x318c4d,_0x58aa0f){_0x318c4d=_0x318c4d-0x0;var _0x336ace=_0x6fe4[_0x318c4d];return _0x336ace;};'use strict';var multer=require('multer');var util=require(_0x46fe('0x0'));var path=require(_0x46fe('0x1'));var timeout=require(_0x46fe('0x2'));var express=require('express');var router=express[_0x46fe('0x3')]();var fs_extra=require(_0x46fe('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x46fe('0x5'));var config=require('../../config/environment');var controller=require(_0x46fe('0x6'));router[_0x46fe('0x7')]('/',auth[_0x46fe('0x8')](),controller[_0x46fe('0x9')]);router['get'](_0x46fe('0xa'),auth[_0x46fe('0x8')](),controller[_0x46fe('0xb')]);router[_0x46fe('0x7')](_0x46fe('0xc'),auth[_0x46fe('0x8')](),controller['preview']);router['get']('/:id/run',auth[_0x46fe('0x8')](),controller['run']);router[_0x46fe('0x7')](_0x46fe('0xd'),auth[_0x46fe('0x8')](),controller[_0x46fe('0xe')]);router[_0x46fe('0xf')]('/',auth[_0x46fe('0x8')](),controller[_0x46fe('0x10')]);router[_0x46fe('0x11')](_0x46fe('0xa'),auth['isAuthenticated'](),controller[_0x46fe('0x12')]);router['delete'](_0x46fe('0xa'),auth[_0x46fe('0x8')](),controller[_0x46fe('0x13')]);module[_0x46fe('0x14')]=router;
\ No newline at end of file
index 424531c..37d78e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x910f=['ENUM','csv','xlsx','DATE','Loading','manual','UNSIGNED','sequelize','exports','STRING'];(function(_0x11e69,_0x34c97b){var _0x20568e=function(_0x41b032){while(--_0x41b032){_0x11e69['push'](_0x11e69['shift']());}};_0x20568e(++_0x34c97b);}(_0x910f,0x165));var _0xf910=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0x910f[_0x9fd887];return _0x1a54ab;};'use strict';var Sequelize=require(_0xf910('0x0'));var moment=require('moment');module[_0xf910('0x1')]={'name':{'type':Sequelize[_0xf910('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xf910('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xf910('0x3')](_0xf910('0x4'),'pdf',_0xf910('0x5')),'allowNull':![],'defaultValue':_0xf910('0x4')},'savename':{'type':Sequelize[_0xf910('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0xf910('0x6')]},'endDate':{'type':Sequelize[_0xf910('0x6')]},'status':{'type':Sequelize[_0xf910('0x2')],'defaultValue':_0xf910('0x7')},'type':{'type':Sequelize['ENUM']('manual','scheduled'),'allowNull':![],'defaultValue':_0xf910('0x8')},'reportId':{'type':Sequelize['INTEGER'](0xb)[_0xf910('0x9')]},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xf163=['Loading','manual','scheduled','INTEGER','sequelize','moment','STRING','ENUM','csv','xlsx','DATE'];(function(_0x41570e,_0x3945dc){var _0x52a7e6=function(_0x479526){while(--_0x479526){_0x41570e['push'](_0x41570e['shift']());}};_0x52a7e6(++_0x3945dc);}(_0xf163,0xf6));var _0x3f16=function(_0x30cd7e,_0x4db10a){_0x30cd7e=_0x30cd7e-0x0;var _0x462a02=_0xf163[_0x30cd7e];return _0x462a02;};'use strict';var Sequelize=require(_0x3f16('0x0'));var moment=require(_0x3f16('0x1'));module['exports']={'name':{'type':Sequelize[_0x3f16('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x3f16('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x3f16('0x3')](_0x3f16('0x4'),'pdf',_0x3f16('0x5')),'allowNull':![],'defaultValue':_0x3f16('0x4')},'savename':{'type':Sequelize[_0x3f16('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3f16('0x6')]},'endDate':{'type':Sequelize[_0x3f16('0x6')]},'status':{'type':Sequelize[_0x3f16('0x2')],'defaultValue':_0x3f16('0x7')},'type':{'type':Sequelize['ENUM'](_0x3f16('0x8'),_0x3f16('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x3f16('0xa')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x3f16('0x2')]}};
\ No newline at end of file
index dc4dfff..74d0178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04fe=['existsSync','server/files/reports','savename','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','join','root','toLowerCase','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','apply','reject','then','destroy','ExtractedReports','UserProfileResource','error','stack','name','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','order','sort','pick','filter','merge','where','VIRTUAL','count','includeAll','findAll','rows','show','params','fields','include','options','catch','create','body','user','get','role','UserProfileSection','find','userProfileId','autoAssociation','download','basename','output'];(function(_0x5bc105,_0x1d7b42){var _0x44307b=function(_0x2e0efa){while(--_0x2e0efa){_0x5bc105['push'](_0x5bc105['shift']());}};_0x44307b(++_0x1d7b42);}(_0x04fe,0x65));var _0xe04f=function(_0x189e68,_0x4b25b9){_0x189e68=_0x189e68-0x0;var _0x183d06=_0x04fe[_0x189e68];return _0x183d06;};'use strict';var emlformat=require(_0xe04f('0x0'));var rimraf=require(_0xe04f('0x1'));var zipdir=require(_0xe04f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe04f('0x3'));var moment=require('moment');var BPromise=require(_0xe04f('0x4'));var Mustache=require(_0xe04f('0x5'));var util=require(_0xe04f('0x6'));var path=require(_0xe04f('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe04f('0x8'));var fs=require('fs');var fs_extra=require(_0xe04f('0x9'));var _=require(_0xe04f('0xa'));var squel=require(_0xe04f('0xb'));var crypto=require('crypto');var jsforce=require(_0xe04f('0xc'));var deskjs=require(_0xe04f('0xd'));var toCsv=require(_0xe04f('0xe'));var querystring=require('querystring');var Papa=require(_0xe04f('0xf'));var Redis=require(_0xe04f('0x10'));var authService=require(_0xe04f('0x11'));var qs=require(_0xe04f('0x12'));var as=require(_0xe04f('0x13'));var hardwareService=require(_0xe04f('0x14'));var logger=require(_0xe04f('0x15'))(_0xe04f('0x16'));var utils=require(_0xe04f('0x17'));var config=require(_0xe04f('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x10ca06,_0x98615e){_0x98615e=_0x98615e||0xcc;return function(_0x3b7524){if(_0x3b7524){return _0x10ca06[_0xe04f('0x19')](_0x98615e);}return _0x10ca06[_0xe04f('0x1a')](_0x98615e)[_0xe04f('0x1b')]();};}function respondWithResult(_0x4ab027,_0x2a2e30){_0x2a2e30=_0x2a2e30||0xc8;return function(_0x2237a6){if(_0x2237a6){return _0x4ab027[_0xe04f('0x1a')](_0x2a2e30)[_0xe04f('0x1c')](_0x2237a6);}};}function respondWithFilteredResult(_0x583a74,_0x2920f8){return function(_0xcf0492){if(_0xcf0492){var _0x3df233=typeof _0x2920f8[_0xe04f('0x1d')]==='undefined'&&typeof _0x2920f8[_0xe04f('0x1e')]===_0xe04f('0x1f');var _0x3f9228=_0xcf0492['count'];var _0x5469db=_0x3df233?0x0:_0x2920f8['offset'];var _0x364d88=_0x3df233?_0xcf0492['count']:_0x2920f8[_0xe04f('0x1d')]+_0x2920f8['limit'];var _0x2f8025;if(_0x364d88>=_0x3f9228){_0x364d88=_0x3f9228;_0x2f8025=0xc8;}else{_0x2f8025=0xce;}_0x583a74[_0xe04f('0x1a')](_0x2f8025);return _0x583a74['set']('Content-Range',_0x5469db+'-'+_0x364d88+'/'+_0x3f9228)[_0xe04f('0x1c')](_0xcf0492);}return null;};}function patchUpdates(_0x3c4520){return function(_0x1cb87c){try{jsonpatch[_0xe04f('0x20')](_0x1cb87c,_0x3c4520,!![]);}catch(_0xa660c6){return BPromise[_0xe04f('0x21')](_0xa660c6);}return _0x1cb87c['save']();};}function saveUpdates(_0xd8b37b,_0xc2d876){return function(_0x5c704c){if(_0x5c704c){return _0x5c704c['update'](_0xd8b37b)[_0xe04f('0x22')](function(_0x1b2bcd){return _0x1b2bcd;});}return null;};}function removeEntity(_0x251d9f,_0x2f44ed){return function(_0x1057fa){if(_0x1057fa){return _0x1057fa[_0xe04f('0x23')]()['then'](function(){var _0x9f38fb=_0x1057fa['get']({'plain':!![]});var _0x38b4ae=_0xe04f('0x24');return db[_0xe04f('0x25')]['destroy']({'where':{'type':_0x38b4ae,'resourceId':_0x9f38fb['id']}})[_0xe04f('0x22')](function(){return _0x1057fa;});})[_0xe04f('0x22')](function(){_0x251d9f[_0xe04f('0x1a')](0xcc)[_0xe04f('0x1b')]();});}};}function handleEntityNotFound(_0x33daa6,_0x7af19b){return function(_0x52b6f5){if(!_0x52b6f5){_0x33daa6['sendStatus'](0x194);}return _0x52b6f5;};}function handleError(_0x5dfbd4,_0x88f4d6){_0x88f4d6=_0x88f4d6||0x1f4;return function(_0x5c595c){logger[_0xe04f('0x26')](_0x5c595c[_0xe04f('0x27')]);if(_0x5c595c[_0xe04f('0x28')]){delete _0x5c595c[_0xe04f('0x28')];}_0x5dfbd4['status'](_0x88f4d6)['send'](_0x5c595c);};}exports[_0xe04f('0x29')]=function(_0x127d88,_0x1a84de){var _0x3ab1f9={},_0x5acebf={},_0x144be6={'count':0x0,'rows':[]};var _0x48470c=_[_0xe04f('0x2a')](db[_0xe04f('0x2b')][_0xe04f('0x2c')],function(_0x1fa7b0){return{'name':_0x1fa7b0[_0xe04f('0x2d')],'type':_0x1fa7b0[_0xe04f('0x2e')]['key']};});_0x5acebf[_0xe04f('0x2f')]=_[_0xe04f('0x2a')](_0x48470c,_0xe04f('0x28'));_0x5acebf[_0xe04f('0x30')]=_[_0xe04f('0x31')](_0x127d88[_0xe04f('0x30')]);_0x5acebf[_0xe04f('0x32')]=_[_0xe04f('0x33')](_0x5acebf[_0xe04f('0x2f')],_0x5acebf[_0xe04f('0x30')]);_0x3ab1f9[_0xe04f('0x34')]=_[_0xe04f('0x33')](_0x5acebf[_0xe04f('0x2f')],qs['fields'](_0x127d88[_0xe04f('0x30')]['fields']));_0x3ab1f9[_0xe04f('0x34')]=_0x3ab1f9[_0xe04f('0x34')][_0xe04f('0x35')]?_0x3ab1f9[_0xe04f('0x34')]:_0x5acebf[_0xe04f('0x2f')];if(!_0x127d88[_0xe04f('0x30')]['hasOwnProperty']('nolimit')){_0x3ab1f9[_0xe04f('0x1e')]=qs['limit'](_0x127d88[_0xe04f('0x30')][_0xe04f('0x1e')]);_0x3ab1f9[_0xe04f('0x1d')]=qs[_0xe04f('0x1d')](_0x127d88['query']['offset']);}_0x3ab1f9[_0xe04f('0x36')]=qs[_0xe04f('0x37')](_0x127d88[_0xe04f('0x30')][_0xe04f('0x37')]);_0x3ab1f9['where']=qs[_0xe04f('0x32')](_[_0xe04f('0x38')](_0x127d88[_0xe04f('0x30')],_0x5acebf['filters']),_0x48470c);if(_0x127d88['query'][_0xe04f('0x39')]){_0x3ab1f9['where']=_[_0xe04f('0x3a')](_0x3ab1f9[_0xe04f('0x3b')],{'$or':_['map'](_0x48470c,function(_0x48c2cc){if(_0x48c2cc[_0xe04f('0x2e')]!==_0xe04f('0x3c')){var _0x7e8507={};_0x7e8507[_0x48c2cc[_0xe04f('0x28')]]={'$like':'%'+_0x127d88[_0xe04f('0x30')][_0xe04f('0x39')]+'%'};return _0x7e8507;}})});}_0x3ab1f9=_[_0xe04f('0x3a')]({},_0x3ab1f9,_0x127d88['options']);var _0x1838c6={'where':_0x3ab1f9['where']};return db['AnalyticExtractedReport']['count'](_0x1838c6)[_0xe04f('0x22')](function(_0x10a3d7){_0x144be6[_0xe04f('0x3d')]=_0x10a3d7;if(_0x127d88[_0xe04f('0x30')][_0xe04f('0x3e')]){_0x3ab1f9['include']=[{'all':!![]}];}return db[_0xe04f('0x2b')][_0xe04f('0x3f')](_0x3ab1f9);})['then'](function(_0x31475b){_0x144be6[_0xe04f('0x40')]=_0x31475b;return _0x144be6;})[_0xe04f('0x22')](respondWithFilteredResult(_0x1a84de,_0x3ab1f9))['catch'](handleError(_0x1a84de,null));};exports[_0xe04f('0x41')]=function(_0x2c0c46,_0x3839fc){var _0x57ef27={'raw':!![],'where':{'id':_0x2c0c46[_0xe04f('0x42')]['id']}},_0x22e5b1={};_0x22e5b1[_0xe04f('0x2f')]=_[_0xe04f('0x31')](db['AnalyticExtractedReport'][_0xe04f('0x2c')]);_0x22e5b1[_0xe04f('0x30')]=_['keys'](_0x2c0c46['query']);_0x22e5b1['filters']=_[_0xe04f('0x33')](_0x22e5b1['model'],_0x22e5b1[_0xe04f('0x30')]);_0x57ef27[_0xe04f('0x34')]=_['intersection'](_0x22e5b1[_0xe04f('0x2f')],qs[_0xe04f('0x43')](_0x2c0c46[_0xe04f('0x30')][_0xe04f('0x43')]));_0x57ef27[_0xe04f('0x34')]=_0x57ef27['attributes'][_0xe04f('0x35')]?_0x57ef27['attributes']:_0x22e5b1[_0xe04f('0x2f')];if(_0x2c0c46['query'][_0xe04f('0x3e')]){_0x57ef27[_0xe04f('0x44')]=[{'all':!![]}];}_0x57ef27=_[_0xe04f('0x3a')]({},_0x57ef27,_0x2c0c46[_0xe04f('0x45')]);return db[_0xe04f('0x2b')]['find'](_0x57ef27)['then'](handleEntityNotFound(_0x3839fc,null))['then'](respondWithResult(_0x3839fc,null))[_0xe04f('0x46')](handleError(_0x3839fc,null));};exports[_0xe04f('0x47')]=function(_0x91c625,_0x3e1db2){return db[_0xe04f('0x2b')][_0xe04f('0x47')](_0x91c625[_0xe04f('0x48')],{})['then'](function(_0x2bfdb7){var _0x4f8dd2=_0x91c625[_0xe04f('0x49')][_0xe04f('0x4a')]({'plain':!![]});if(!_0x4f8dd2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4f8dd2[_0xe04f('0x4b')]==='user'){var _0x15de54=_0x2bfdb7[_0xe04f('0x4a')]({'plain':!![]});var _0x1c6691=_0xe04f('0x24');return db[_0xe04f('0x4c')][_0xe04f('0x4d')]({'where':{'name':_0x1c6691,'userProfileId':_0x4f8dd2[_0xe04f('0x4e')]},'raw':!![]})[_0xe04f('0x22')](function(_0x4f12a9){if(_0x4f12a9&&_0x4f12a9[_0xe04f('0x4f')]===0x0){return db['UserProfileResource'][_0xe04f('0x47')]({'name':_0x15de54[_0xe04f('0x28')],'resourceId':_0x15de54['id'],'type':_0x4f12a9[_0xe04f('0x28')],'sectionId':_0x4f12a9['id']},{})[_0xe04f('0x22')](function(){return _0x2bfdb7;});}else{return _0x2bfdb7;}})[_0xe04f('0x46')](function(_0x3f925a){logger[_0xe04f('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f925a);throw _0x3f925a;});}return _0x2bfdb7;})[_0xe04f('0x22')](respondWithResult(_0x3e1db2,0xc9))[_0xe04f('0x46')](handleError(_0x3e1db2,null));};exports['update']=function(_0x17c67c,_0x55f23){if(_0x17c67c['body']['id']){delete _0x17c67c['body']['id'];}return db[_0xe04f('0x2b')][_0xe04f('0x4d')]({'where':{'id':_0x17c67c['params']['id']}})[_0xe04f('0x22')](handleEntityNotFound(_0x55f23,null))['then'](saveUpdates(_0x17c67c[_0xe04f('0x48')],null))[_0xe04f('0x22')](respondWithResult(_0x55f23,null))[_0xe04f('0x46')](handleError(_0x55f23,null));};exports[_0xe04f('0x23')]=function(_0xb4bc9a,_0xa393d2){return db[_0xe04f('0x2b')][_0xe04f('0x4d')]({'where':{'id':_0xb4bc9a[_0xe04f('0x42')]['id']}})[_0xe04f('0x22')](handleEntityNotFound(_0xa393d2,null))['then'](removeEntity(_0xa393d2,null))['catch'](handleError(_0xa393d2,null));};exports[_0xe04f('0x50')]=function(_0x2892a0,_0x33922e,_0x33ac7d){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x2892a0[_0xe04f('0x42')]['id']},'attributes':[_0xe04f('0x28'),_0xe04f('0x51'),'savename',_0xe04f('0x52')],'raw':!![]})[_0xe04f('0x22')](handleEntityNotFound(_0x33922e,null))[_0xe04f('0x22')](function(_0x5cb915){if(_0x5cb915){if(!fs[_0xe04f('0x53')](path['join'](config['root'],_0xe04f('0x54'),_0x5cb915[_0xe04f('0x55')]))){throw new db['Sequelize'][(_0xe04f('0x56'))](_0xe04f('0x57'));}if(_0x2892a0[_0xe04f('0x30')][_0xe04f('0x58')]){return _0x33922e[_0xe04f('0x19')](0xc8);}return _0x33922e[_0xe04f('0x50')](path[_0xe04f('0x59')](config[_0xe04f('0x5a')],'server/files/reports',_0x5cb915[_0xe04f('0x55')]),util['format']('%s.%s',_0x5cb915[_0xe04f('0x51')]||_0x5cb915[_0xe04f('0x28')],_0x5cb915[_0xe04f('0x52')][_0xe04f('0x5b')]()));}})[_0xe04f('0x46')](handleError(_0x33922e,null));};
\ No newline at end of file
+var _0xdb31=['body','download','basename','savename','existsSync','join','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','output','toLowerCase','eml-format','rimraf','fast-json-patch','request-promise','moment','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','ExtractedReports','UserProfileResource','sendStatus','error','stack','name','send','index','AnalyticExtractedReport','fieldName','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','findAll','rows','catch','params','rawAttributes','includeAll','include','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'];(function(_0x9eab14,_0x5f5ced){var _0x10b998=function(_0x297e17){while(--_0x297e17){_0x9eab14['push'](_0x9eab14['shift']());}};_0x10b998(++_0x5f5ced);}(_0xdb31,0x6e));var _0x1db3=function(_0x456032,_0x1a799d){_0x456032=_0x456032-0x0;var _0x1a53cd=_0xdb31[_0x456032];return _0x1a53cd;};'use strict';var emlformat=require(_0x1db3('0x0'));var rimraf=require(_0x1db3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1db3('0x2'));var rp=require(_0x1db3('0x3'));var moment=require(_0x1db3('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1db3('0x5'));var path=require(_0x1db3('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1db3('0x7'));var fs=require('fs');var fs_extra=require(_0x1db3('0x8'));var _=require(_0x1db3('0x9'));var squel=require(_0x1db3('0xa'));var crypto=require('crypto');var jsforce=require(_0x1db3('0xb'));var deskjs=require(_0x1db3('0xc'));var toCsv=require(_0x1db3('0xd'));var querystring=require(_0x1db3('0xe'));var Papa=require('papaparse');var Redis=require(_0x1db3('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1db3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1db3('0x11'))(_0x1db3('0x12'));var utils=require(_0x1db3('0x13'));var config=require(_0x1db3('0x14'));var licenseUtil=require(_0x1db3('0x15'));var db=require(_0x1db3('0x16'))['db'];function respondWithStatusCode(_0x28d90e,_0x2cd717){_0x2cd717=_0x2cd717||0xcc;return function(_0x4a9706){if(_0x4a9706){return _0x28d90e['sendStatus'](_0x2cd717);}return _0x28d90e['status'](_0x2cd717)[_0x1db3('0x17')]();};}function respondWithResult(_0xc7c90e,_0x1c1ac1){_0x1c1ac1=_0x1c1ac1||0xc8;return function(_0x17b506){if(_0x17b506){return _0xc7c90e[_0x1db3('0x18')](_0x1c1ac1)[_0x1db3('0x19')](_0x17b506);}};}function respondWithFilteredResult(_0x21a35a,_0x32a04b){return function(_0x227a11){if(_0x227a11){var _0x44044d=typeof _0x32a04b[_0x1db3('0x1a')]===_0x1db3('0x1b')&&typeof _0x32a04b[_0x1db3('0x1c')]===_0x1db3('0x1b');var _0x3973f3=_0x227a11[_0x1db3('0x1d')];var _0x2ff7a4=_0x44044d?0x0:_0x32a04b[_0x1db3('0x1a')];var _0x3f9c4d=_0x44044d?_0x227a11[_0x1db3('0x1d')]:_0x32a04b[_0x1db3('0x1a')]+_0x32a04b['limit'];var _0x55dfa9;if(_0x3f9c4d>=_0x3973f3){_0x3f9c4d=_0x3973f3;_0x55dfa9=0xc8;}else{_0x55dfa9=0xce;}_0x21a35a['status'](_0x55dfa9);return _0x21a35a['set'](_0x1db3('0x1e'),_0x2ff7a4+'-'+_0x3f9c4d+'/'+_0x3973f3)['json'](_0x227a11);}return null;};}function patchUpdates(_0x2fc9c6){return function(_0x2e8e88){try{jsonpatch[_0x1db3('0x1f')](_0x2e8e88,_0x2fc9c6,!![]);}catch(_0xb9aa37){return BPromise['reject'](_0xb9aa37);}return _0x2e8e88['save']();};}function saveUpdates(_0x563120,_0x4e8459){return function(_0x34aa04){if(_0x34aa04){return _0x34aa04[_0x1db3('0x20')](_0x563120)[_0x1db3('0x21')](function(_0x5b97dc){return _0x5b97dc;});}return null;};}function removeEntity(_0x52031b,_0x513b49){return function(_0x4cf14d){if(_0x4cf14d){return _0x4cf14d[_0x1db3('0x22')]()[_0x1db3('0x21')](function(){var _0x4ce350=_0x4cf14d['get']({'plain':!![]});var _0x2c9bd9=_0x1db3('0x23');return db[_0x1db3('0x24')][_0x1db3('0x22')]({'where':{'type':_0x2c9bd9,'resourceId':_0x4ce350['id']}})[_0x1db3('0x21')](function(){return _0x4cf14d;});})[_0x1db3('0x21')](function(){_0x52031b[_0x1db3('0x18')](0xcc)[_0x1db3('0x17')]();});}};}function handleEntityNotFound(_0x1f2021,_0x6701d5){return function(_0x558eeb){if(!_0x558eeb){_0x1f2021[_0x1db3('0x25')](0x194);}return _0x558eeb;};}function handleError(_0x4ccb5f,_0x2acdb3){_0x2acdb3=_0x2acdb3||0x1f4;return function(_0x56b625){logger[_0x1db3('0x26')](_0x56b625[_0x1db3('0x27')]);if(_0x56b625[_0x1db3('0x28')]){delete _0x56b625[_0x1db3('0x28')];}_0x4ccb5f[_0x1db3('0x18')](_0x2acdb3)[_0x1db3('0x29')](_0x56b625);};}exports[_0x1db3('0x2a')]=function(_0x599ce5,_0x119282){var _0x2b90d6={},_0x1a6f31={},_0x36264f={'count':0x0,'rows':[]};var _0x401116=_['map'](db[_0x1db3('0x2b')]['rawAttributes'],function(_0x419a46){return{'name':_0x419a46[_0x1db3('0x2c')],'type':_0x419a46['type']['key']};});_0x1a6f31[_0x1db3('0x2d')]=_[_0x1db3('0x2e')](_0x401116,_0x1db3('0x28'));_0x1a6f31[_0x1db3('0x2f')]=_[_0x1db3('0x30')](_0x599ce5[_0x1db3('0x2f')]);_0x1a6f31[_0x1db3('0x31')]=_[_0x1db3('0x32')](_0x1a6f31[_0x1db3('0x2d')],_0x1a6f31[_0x1db3('0x2f')]);_0x2b90d6[_0x1db3('0x33')]=_['intersection'](_0x1a6f31[_0x1db3('0x2d')],qs[_0x1db3('0x34')](_0x599ce5[_0x1db3('0x2f')][_0x1db3('0x34')]));_0x2b90d6[_0x1db3('0x33')]=_0x2b90d6['attributes'][_0x1db3('0x35')]?_0x2b90d6[_0x1db3('0x33')]:_0x1a6f31[_0x1db3('0x2d')];if(!_0x599ce5[_0x1db3('0x2f')]['hasOwnProperty']('nolimit')){_0x2b90d6[_0x1db3('0x1c')]=qs[_0x1db3('0x1c')](_0x599ce5[_0x1db3('0x2f')][_0x1db3('0x1c')]);_0x2b90d6[_0x1db3('0x1a')]=qs[_0x1db3('0x1a')](_0x599ce5['query'][_0x1db3('0x1a')]);}_0x2b90d6[_0x1db3('0x36')]=qs[_0x1db3('0x37')](_0x599ce5[_0x1db3('0x2f')]['sort']);_0x2b90d6[_0x1db3('0x38')]=qs[_0x1db3('0x31')](_['pick'](_0x599ce5['query'],_0x1a6f31[_0x1db3('0x31')]),_0x401116);if(_0x599ce5['query'][_0x1db3('0x39')]){_0x2b90d6['where']=_[_0x1db3('0x3a')](_0x2b90d6[_0x1db3('0x38')],{'$or':_[_0x1db3('0x2e')](_0x401116,function(_0x39a06d){if(_0x39a06d['type']!==_0x1db3('0x3b')){var _0x4fd999={};_0x4fd999[_0x39a06d[_0x1db3('0x28')]]={'$like':'%'+_0x599ce5[_0x1db3('0x2f')][_0x1db3('0x39')]+'%'};return _0x4fd999;}})});}_0x2b90d6=_['merge']({},_0x2b90d6,_0x599ce5['options']);var _0x282195={'where':_0x2b90d6[_0x1db3('0x38')]};return db[_0x1db3('0x2b')]['count'](_0x282195)[_0x1db3('0x21')](function(_0x2dbf81){_0x36264f[_0x1db3('0x1d')]=_0x2dbf81;if(_0x599ce5['query']['includeAll']){_0x2b90d6['include']=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x1db3('0x3c')](_0x2b90d6);})[_0x1db3('0x21')](function(_0x3f3c87){_0x36264f[_0x1db3('0x3d')]=_0x3f3c87;return _0x36264f;})[_0x1db3('0x21')](respondWithFilteredResult(_0x119282,_0x2b90d6))[_0x1db3('0x3e')](handleError(_0x119282,null));};exports['show']=function(_0xc47b48,_0x2bab80){var _0x597766={'raw':!![],'where':{'id':_0xc47b48[_0x1db3('0x3f')]['id']}},_0x4c8da7={};_0x4c8da7[_0x1db3('0x2d')]=_[_0x1db3('0x30')](db['AnalyticExtractedReport'][_0x1db3('0x40')]);_0x4c8da7[_0x1db3('0x2f')]=_[_0x1db3('0x30')](_0xc47b48[_0x1db3('0x2f')]);_0x4c8da7[_0x1db3('0x31')]=_[_0x1db3('0x32')](_0x4c8da7[_0x1db3('0x2d')],_0x4c8da7[_0x1db3('0x2f')]);_0x597766['attributes']=_[_0x1db3('0x32')](_0x4c8da7[_0x1db3('0x2d')],qs['fields'](_0xc47b48[_0x1db3('0x2f')][_0x1db3('0x34')]));_0x597766[_0x1db3('0x33')]=_0x597766[_0x1db3('0x33')]['length']?_0x597766[_0x1db3('0x33')]:_0x4c8da7['model'];if(_0xc47b48[_0x1db3('0x2f')][_0x1db3('0x41')]){_0x597766[_0x1db3('0x42')]=[{'all':!![]}];}_0x597766=_[_0x1db3('0x3a')]({},_0x597766,_0xc47b48[_0x1db3('0x43')]);return db['AnalyticExtractedReport'][_0x1db3('0x44')](_0x597766)[_0x1db3('0x21')](handleEntityNotFound(_0x2bab80,null))[_0x1db3('0x21')](respondWithResult(_0x2bab80,null))[_0x1db3('0x3e')](handleError(_0x2bab80,null));};exports['create']=function(_0x5591b3,_0x23abc6){return db['AnalyticExtractedReport'][_0x1db3('0x45')](_0x5591b3['body'],{})['then'](function(_0x5f1fa2){var _0x4a7637=_0x5591b3[_0x1db3('0x46')][_0x1db3('0x47')]({'plain':!![]});if(!_0x4a7637)throw new Error(_0x1db3('0x48'));if(_0x4a7637[_0x1db3('0x49')]==='user'){var _0x5f7101=_0x5f1fa2[_0x1db3('0x47')]({'plain':!![]});var _0x2a4adf=_0x1db3('0x23');return db[_0x1db3('0x4a')][_0x1db3('0x44')]({'where':{'name':_0x2a4adf,'userProfileId':_0x4a7637[_0x1db3('0x4b')]},'raw':!![]})[_0x1db3('0x21')](function(_0x145b72){if(_0x145b72&&_0x145b72[_0x1db3('0x4c')]===0x0){return db[_0x1db3('0x24')][_0x1db3('0x45')]({'name':_0x5f7101[_0x1db3('0x28')],'resourceId':_0x5f7101['id'],'type':_0x145b72['name'],'sectionId':_0x145b72['id']},{})[_0x1db3('0x21')](function(){return _0x5f1fa2;});}else{return _0x5f1fa2;}})[_0x1db3('0x3e')](function(_0x3a2e95){logger[_0x1db3('0x26')](_0x1db3('0x4d'),_0x3a2e95);throw _0x3a2e95;});}return _0x5f1fa2;})[_0x1db3('0x21')](respondWithResult(_0x23abc6,0xc9))['catch'](handleError(_0x23abc6,null));};exports[_0x1db3('0x20')]=function(_0x46615a,_0x360f4c){if(_0x46615a[_0x1db3('0x4e')]['id']){delete _0x46615a[_0x1db3('0x4e')]['id'];}return db[_0x1db3('0x2b')]['find']({'where':{'id':_0x46615a[_0x1db3('0x3f')]['id']}})[_0x1db3('0x21')](handleEntityNotFound(_0x360f4c,null))[_0x1db3('0x21')](saveUpdates(_0x46615a['body'],null))[_0x1db3('0x21')](respondWithResult(_0x360f4c,null))[_0x1db3('0x3e')](handleError(_0x360f4c,null));};exports[_0x1db3('0x22')]=function(_0x3da2ea,_0x184305){return db[_0x1db3('0x2b')]['find']({'where':{'id':_0x3da2ea[_0x1db3('0x3f')]['id']}})[_0x1db3('0x21')](handleEntityNotFound(_0x184305,null))[_0x1db3('0x21')](removeEntity(_0x184305,null))[_0x1db3('0x3e')](handleError(_0x184305,null));};exports[_0x1db3('0x4f')]=function(_0x239e8e,_0x17cf27,_0x46cb3d){return db['AnalyticExtractedReport']['find']({'where':{'id':_0x239e8e[_0x1db3('0x3f')]['id']},'attributes':[_0x1db3('0x28'),_0x1db3('0x50'),_0x1db3('0x51'),'output'],'raw':!![]})[_0x1db3('0x21')](handleEntityNotFound(_0x17cf27,null))[_0x1db3('0x21')](function(_0x927c06){if(_0x927c06){if(!fs[_0x1db3('0x52')](path[_0x1db3('0x53')](config[_0x1db3('0x54')],_0x1db3('0x55'),_0x927c06['savename']))){throw new db[(_0x1db3('0x56'))][(_0x1db3('0x57'))](_0x1db3('0x58'));}if(_0x239e8e[_0x1db3('0x2f')][_0x1db3('0x59')]){return _0x17cf27['sendStatus'](0xc8);}return _0x17cf27['download'](path[_0x1db3('0x53')](config[_0x1db3('0x54')],_0x1db3('0x55'),_0x927c06[_0x1db3('0x51')]),util[_0x1db3('0x5a')](_0x1db3('0x5b'),_0x927c06[_0x1db3('0x50')]||_0x927c06['name'],_0x927c06[_0x1db3('0x5c')][_0x1db3('0x5d')]()));}})['catch'](handleError(_0x17cf27,null));};
\ No newline at end of file
index 07c55a7..f5be4f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf40=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','analytics_extracted_reports','util','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xdf40,0x136));var _0x0df4=function(_0x2f0057,_0x448b27){_0x2f0057=_0x2f0057-0x0;var _0x17f2c3=_0xdf40[_0x2f0057];return _0x17f2c3;};'use strict';var _=require('lodash');var util=require(_0x0df4('0x0'));var logger=require(_0x0df4('0x1'))(_0x0df4('0x2'));var moment=require(_0x0df4('0x3'));var BPromise=require(_0x0df4('0x4'));var rp=require(_0x0df4('0x5'));var fs=require('fs');var path=require(_0x0df4('0x6'));var rimraf=require(_0x0df4('0x7'));var config=require(_0x0df4('0x8'));var attributes=require('./analyticExtractedReport.attributes');module[_0x0df4('0x9')]=function(_0x60461d,_0x49dcdf){return _0x60461d[_0x0df4('0xa')]('AnalyticExtractedReport',attributes,{'tableName':_0x0df4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4254=['AnalyticExtractedReport','analytics_extracted_reports','../../config/logger','api','moment','exports','define'];(function(_0x549246,_0x3f3ee1){var _0x52d1b2=function(_0x5c331d){while(--_0x5c331d){_0x549246['push'](_0x549246['shift']());}};_0x52d1b2(++_0x3f3ee1);}(_0x4254,0x79));var _0x4425=function(_0x2416f6,_0x57b60e){_0x2416f6=_0x2416f6-0x0;var _0x37641e=_0x4254[_0x2416f6];return _0x37641e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4425('0x0'))(_0x4425('0x1'));var moment=require(_0x4425('0x2'));var BPromise=require('bluebird');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('./analyticExtractedReport.attributes');module[_0x4425('0x3')]=function(_0x3434fb,_0x11ebe5){return _0x3434fb[_0x4425('0x4')](_0x4425('0x5'),attributes,{'tableName':_0x4425('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 39e649a..5835616 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4790=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch'];(function(_0x1e8abf,_0x2eda49){var _0x4f2681=function(_0x54b566){while(--_0x54b566){_0x1e8abf['push'](_0x1e8abf['shift']());}};_0x4f2681(++_0x2eda49);}(_0x4790,0x84));var _0x0479=function(_0x111e94,_0x31c837){_0x111e94=_0x111e94-0x0;var _0x3de107=_0x4790[_0x111e94];return _0x3de107;};'use strict';var _=require(_0x0479('0x0'));var util=require(_0x0479('0x1'));var moment=require(_0x0479('0x2'));var BPromise=require(_0x0479('0x3'));var rs=require(_0x0479('0x4'));var fs=require('fs');var Redis=require(_0x0479('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x0479('0x6'));var logger=require(_0x0479('0x7'))(_0x0479('0x8'));var config=require(_0x0479('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0479('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2612e3,_0x42ef9e,_0x480830){return new BPromise(function(_0x1b6e6c,_0x3e885d){return client[_0x0479('0xb')](_0x2612e3,_0x480830)[_0x0479('0xc')](function(_0x417637){logger['info'](_0x0479('0xd'),_0x42ef9e,_0x0479('0xe'));logger['debug'](_0x0479('0xf'),_0x42ef9e,_0x0479('0xe'),JSON['stringify'](_0x417637));if(_0x417637['error']){if(_0x417637[_0x0479('0x10')][_0x0479('0x11')]===0x1f4){logger['error'](_0x0479('0xd'),_0x42ef9e,_0x417637[_0x0479('0x10')][_0x0479('0x12')]);return _0x3e885d(_0x417637['error'][_0x0479('0x12')]);}logger[_0x0479('0x10')](_0x0479('0xd'),_0x42ef9e,_0x417637['error']['message']);return _0x1b6e6c(_0x417637['error'][_0x0479('0x12')]);}else{logger[_0x0479('0x13')](_0x0479('0xd'),_0x42ef9e,_0x0479('0xe'));_0x1b6e6c(_0x417637[_0x0479('0x14')][_0x0479('0x12')]);}})[_0x0479('0x15')](function(_0x4a79aa){logger[_0x0479('0x10')](_0x0479('0xd'),_0x42ef9e,_0x4a79aa);_0x3e885d(_0x4a79aa);});});}
\ No newline at end of file
+var _0xdec2=['debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x2f70b3,_0x225cab){var _0x302f9c=function(_0xef057f){while(--_0xef057f){_0x2f70b3['push'](_0x2f70b3['shift']());}};_0x302f9c(++_0x225cab);}(_0xdec2,0x14a));var _0x2dec=function(_0x251d23,_0x2730f2){_0x251d23=_0x251d23-0x0;var _0xc557dc=_0xdec2[_0x251d23];return _0xc557dc;};'use strict';var _=require(_0x2dec('0x0'));var util=require(_0x2dec('0x1'));var moment=require(_0x2dec('0x2'));var BPromise=require(_0x2dec('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2dec('0x4'))['db'];var utils=require(_0x2dec('0x5'));var logger=require(_0x2dec('0x6'))('rpc');var config=require(_0x2dec('0x7'));var jayson=require(_0x2dec('0x8'));var client=jayson[_0x2dec('0x9')][_0x2dec('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1cf1df,_0x4d3b0f,_0x2f6724){return new BPromise(function(_0x27e64b,_0x154c72){return client[_0x2dec('0xb')](_0x1cf1df,_0x2f6724)[_0x2dec('0xc')](function(_0x5541b6){logger[_0x2dec('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4d3b0f,_0x2dec('0xe'));logger[_0x2dec('0xf')](_0x2dec('0x10'),_0x4d3b0f,_0x2dec('0xe'),JSON[_0x2dec('0x11')](_0x5541b6));if(_0x5541b6[_0x2dec('0x12')]){if(_0x5541b6['error'][_0x2dec('0x13')]===0x1f4){logger[_0x2dec('0x12')](_0x2dec('0x14'),_0x4d3b0f,_0x5541b6[_0x2dec('0x12')][_0x2dec('0x15')]);return _0x154c72(_0x5541b6[_0x2dec('0x12')]['message']);}logger[_0x2dec('0x12')](_0x2dec('0x14'),_0x4d3b0f,_0x5541b6[_0x2dec('0x12')][_0x2dec('0x15')]);return _0x27e64b(_0x5541b6[_0x2dec('0x12')][_0x2dec('0x15')]);}else{logger[_0x2dec('0xd')](_0x2dec('0x14'),_0x4d3b0f,_0x2dec('0xe'));_0x27e64b(_0x5541b6[_0x2dec('0x16')][_0x2dec('0x15')]);}})['catch'](function(_0xbaf479){logger[_0x2dec('0x12')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x4d3b0f,_0xbaf479);_0x154c72(_0xbaf479);});});}
\ No newline at end of file
index 8382a39..6e789c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ff0=['get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','update','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller'];(function(_0x56eca1,_0x55c0fa){var _0x4f098f=function(_0x35f128){while(--_0x35f128){_0x56eca1['push'](_0x56eca1['shift']());}};_0x4f098f(++_0x55c0fa);}(_0x3ff0,0x14c));var _0x03ff=function(_0x11155f,_0x57b687){_0x11155f=_0x11155f-0x0;var _0xd07e48=_0x3ff0[_0x11155f];return _0xd07e48;};'use strict';var multer=require(_0x03ff('0x0'));var util=require(_0x03ff('0x1'));var path=require(_0x03ff('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x03ff('0x3'));var auth=require(_0x03ff('0x4'));var interaction=require(_0x03ff('0x5'));var config=require(_0x03ff('0x6'));var controller=require(_0x03ff('0x7'));router[_0x03ff('0x8')]('/',auth[_0x03ff('0x9')](),controller[_0x03ff('0xa')]);router['get'](_0x03ff('0xb'),auth['isAuthenticated'](),controller[_0x03ff('0xc')]);router['get'](_0x03ff('0xd'),auth[_0x03ff('0x9')](),controller[_0x03ff('0xe')]);router[_0x03ff('0xf')]('/',auth[_0x03ff('0x9')](),controller[_0x03ff('0x10')]);router['put'](_0x03ff('0xb'),auth[_0x03ff('0x9')](),controller[_0x03ff('0x11')]);router['delete'](_0x03ff('0xb'),auth[_0x03ff('0x9')](),controller[_0x03ff('0x12')]);module[_0x03ff('0x13')]=router;
\ No newline at end of file
+var _0xad02=['../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','/:id/download','download','post','create','put','/:id','update','delete','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x26f22b,_0x5c77fc){var _0x4bf48f=function(_0x41c49d){while(--_0x41c49d){_0x26f22b['push'](_0x26f22b['shift']());}};_0x4bf48f(++_0x5c77fc);}(_0xad02,0xde));var _0x2ad0=function(_0x1488cd,_0x25a893){_0x1488cd=_0x1488cd-0x0;var _0x63fa13=_0xad02[_0x1488cd];return _0x63fa13;};'use strict';var multer=require('multer');var util=require(_0x2ad0('0x0'));var path=require('path');var timeout=require(_0x2ad0('0x1'));var express=require('express');var router=express[_0x2ad0('0x2')]();var fs_extra=require(_0x2ad0('0x3'));var auth=require(_0x2ad0('0x4'));var interaction=require(_0x2ad0('0x5'));var config=require(_0x2ad0('0x6'));var controller=require(_0x2ad0('0x7'));router[_0x2ad0('0x8')]('/',auth[_0x2ad0('0x9')](),controller['index']);router[_0x2ad0('0x8')]('/:id',auth[_0x2ad0('0x9')](),controller['show']);router[_0x2ad0('0x8')](_0x2ad0('0xa'),auth[_0x2ad0('0x9')](),controller[_0x2ad0('0xb')]);router[_0x2ad0('0xc')]('/',auth[_0x2ad0('0x9')](),controller[_0x2ad0('0xd')]);router[_0x2ad0('0xe')](_0x2ad0('0xf'),auth[_0x2ad0('0x9')](),controller[_0x2ad0('0x10')]);router[_0x2ad0('0x11')](_0x2ad0('0xf'),auth[_0x2ad0('0x9')](),controller['destroy']);module[_0x2ad0('0x12')]=router;
\ No newline at end of file
index ed2ae2d..fa85b00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba42=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x5d8623,_0x225c42){var _0x260db7=function(_0x35758c){while(--_0x35758c){_0x5d8623['push'](_0x5d8623['shift']());}};_0x260db7(++_0x225c42);}(_0xba42,0xc5));var _0x2ba4=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xba42[_0x4a53d];return _0x27410e;};'use strict';var Sequelize=require(_0x2ba4('0x0'));module[_0x2ba4('0x1')]={'field':{'type':Sequelize[_0x2ba4('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x2ba4('0x3')]},'format':{'type':Sequelize['STRING']},'groupBy':{'type':Sequelize[_0x2ba4('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x2ba4('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd770=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x520e13,_0x1a7084){var _0x5a3975=function(_0x3290b2){while(--_0x3290b2){_0x520e13['push'](_0x520e13['shift']());}};_0x5a3975(++_0x1a7084);}(_0xd770,0xfe));var _0x0d77=function(_0x5f2db0,_0x5e01fd){_0x5f2db0=_0x5f2db0-0x0;var _0x1343c5=_0xd770[_0x5f2db0];return _0x1343c5;};'use strict';var Sequelize=require(_0x0d77('0x0'));module[_0x0d77('0x1')]={'field':{'type':Sequelize[_0x0d77('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0x0d77('0x3')]},'format':{'type':Sequelize[_0x0d77('0x3')]},'groupBy':{'type':Sequelize[_0x0d77('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x0d77('0x3')]},'custom':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index a06d9d5..478f828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f15=['status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','then','end','error','stack','name','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','find','create','body','bulkCreate','destroy','params','ids','addFields','AnalyticCustomReport','findOne','transaction','CustomReportId','eml-format','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x3879a1,_0x12df62){var _0x43986b=function(_0x30ef20){while(--_0x30ef20){_0x3879a1['push'](_0x3879a1['shift']());}};_0x43986b(++_0x12df62);}(_0x0f15,0xd6));var _0x50f1=function(_0x41eb44,_0x229d85){_0x41eb44=_0x41eb44-0x0;var _0x334ba7=_0x0f15[_0x41eb44];return _0x334ba7;};'use strict';var emlformat=require(_0x50f1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x50f1('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x50f1('0x2'));var Mustache=require('mustache');var util=require(_0x50f1('0x3'));var path=require(_0x50f1('0x4'));var sox=require(_0x50f1('0x5'));var csv=require(_0x50f1('0x6'));var ejs=require(_0x50f1('0x7'));var fs=require('fs');var fs_extra=require(_0x50f1('0x8'));var _=require(_0x50f1('0x9'));var squel=require('squel');var crypto=require(_0x50f1('0xa'));var jsforce=require(_0x50f1('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x50f1('0x6'));var querystring=require(_0x50f1('0xc'));var Papa=require(_0x50f1('0xd'));var Redis=require(_0x50f1('0xe'));var authService=require(_0x50f1('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x50f1('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x50f1('0x11'))(_0x50f1('0x12'));var utils=require('../../config/utils');var config=require(_0x50f1('0x13'));var licenseUtil=require(_0x50f1('0x14'));var db=require(_0x50f1('0x15'))['db'];function respondWithStatusCode(_0x8732b4,_0xc51ef9){_0xc51ef9=_0xc51ef9||0xcc;return function(_0x5e5c02){if(_0x5e5c02){return _0x8732b4[_0x50f1('0x16')](_0xc51ef9);}return _0x8732b4['status'](_0xc51ef9)['end']();};}function respondWithResult(_0x26bc97,_0x757a8b){_0x757a8b=_0x757a8b||0xc8;return function(_0x3a71b7){if(_0x3a71b7){return _0x26bc97[_0x50f1('0x17')](_0x757a8b)[_0x50f1('0x18')](_0x3a71b7);}};}function respondWithFilteredResult(_0x56e920,_0xed9dac){return function(_0x1c6af3){if(_0x1c6af3){var _0x2e93db=typeof _0xed9dac['offset']===_0x50f1('0x19')&&typeof _0xed9dac[_0x50f1('0x1a')]===_0x50f1('0x19');var _0xc3fed3=_0x1c6af3[_0x50f1('0x1b')];var _0x202272=_0x2e93db?0x0:_0xed9dac['offset'];var _0x35c249=_0x2e93db?_0x1c6af3[_0x50f1('0x1b')]:_0xed9dac[_0x50f1('0x1c')]+_0xed9dac[_0x50f1('0x1a')];var _0x402fea;if(_0x35c249>=_0xc3fed3){_0x35c249=_0xc3fed3;_0x402fea=0xc8;}else{_0x402fea=0xce;}_0x56e920[_0x50f1('0x17')](_0x402fea);return _0x56e920['set'](_0x50f1('0x1d'),_0x202272+'-'+_0x35c249+'/'+_0xc3fed3)[_0x50f1('0x18')](_0x1c6af3);}return null;};}function patchUpdates(_0x14c13f){return function(_0xb7b703){try{jsonpatch[_0x50f1('0x1e')](_0xb7b703,_0x14c13f,!![]);}catch(_0x2674b0){return BPromise[_0x50f1('0x1f')](_0x2674b0);}return _0xb7b703[_0x50f1('0x20')]();};}function saveUpdates(_0x2820ee,_0x450d2e){return function(_0x418887){if(_0x418887){return _0x418887['update'](_0x2820ee)['then'](function(_0x5e19fb){return _0x5e19fb;});}return null;};}function removeEntity(_0x4d2c22,_0x50927d){return function(_0x40efc2){if(_0x40efc2){return _0x40efc2['destroy']()[_0x50f1('0x21')](function(){_0x4d2c22[_0x50f1('0x17')](0xcc)[_0x50f1('0x22')]();});}};}function handleEntityNotFound(_0x1c51d2,_0x25bbf8){return function(_0x5ccb21){if(!_0x5ccb21){_0x1c51d2['sendStatus'](0x194);}return _0x5ccb21;};}function handleError(_0x53e4bd,_0x3847bd){_0x3847bd=_0x3847bd||0x1f4;return function(_0x437ca3){logger[_0x50f1('0x23')](_0x437ca3[_0x50f1('0x24')]);if(_0x437ca3['name']){delete _0x437ca3[_0x50f1('0x25')];}_0x53e4bd[_0x50f1('0x17')](_0x3847bd)['send'](_0x437ca3);};}exports[_0x50f1('0x26')]=function(_0x56d925,_0x2efea7){var _0x9ab9e3={},_0x46b1dd={},_0x3ce7a5={'count':0x0,'rows':[]};var _0x3a1301=_[_0x50f1('0x27')](db[_0x50f1('0x28')][_0x50f1('0x29')],function(_0x3a9e59){return{'name':_0x3a9e59[_0x50f1('0x2a')],'type':_0x3a9e59[_0x50f1('0x2b')][_0x50f1('0x2c')]};});_0x46b1dd[_0x50f1('0x2d')]=_[_0x50f1('0x27')](_0x3a1301,_0x50f1('0x25'));_0x46b1dd[_0x50f1('0x2e')]=_[_0x50f1('0x2f')](_0x56d925['query']);_0x46b1dd[_0x50f1('0x30')]=_[_0x50f1('0x31')](_0x46b1dd[_0x50f1('0x2d')],_0x46b1dd[_0x50f1('0x2e')]);_0x9ab9e3[_0x50f1('0x32')]=_[_0x50f1('0x31')](_0x46b1dd[_0x50f1('0x2d')],qs[_0x50f1('0x33')](_0x56d925['query']['fields']));_0x9ab9e3['attributes']=_0x9ab9e3[_0x50f1('0x32')][_0x50f1('0x34')]?_0x9ab9e3['attributes']:_0x46b1dd[_0x50f1('0x2d')];if(!_0x56d925['query'][_0x50f1('0x35')](_0x50f1('0x36'))){_0x9ab9e3['limit']=qs[_0x50f1('0x1a')](_0x56d925[_0x50f1('0x2e')][_0x50f1('0x1a')]);_0x9ab9e3[_0x50f1('0x1c')]=qs[_0x50f1('0x1c')](_0x56d925[_0x50f1('0x2e')][_0x50f1('0x1c')]);}_0x9ab9e3[_0x50f1('0x37')]=qs[_0x50f1('0x38')](_0x56d925['query'][_0x50f1('0x38')]);_0x9ab9e3['where']=qs['filters'](_['pick'](_0x56d925[_0x50f1('0x2e')],_0x46b1dd[_0x50f1('0x30')]),_0x3a1301);if(_0x56d925[_0x50f1('0x2e')][_0x50f1('0x39')]){_0x9ab9e3[_0x50f1('0x3a')]=_[_0x50f1('0x3b')](_0x9ab9e3[_0x50f1('0x3a')],{'$or':_[_0x50f1('0x27')](_0x3a1301,function(_0x469edc){if(_0x469edc[_0x50f1('0x2b')]!==_0x50f1('0x3c')){var _0x329ca0={};_0x329ca0[_0x469edc[_0x50f1('0x25')]]={'$like':'%'+_0x56d925[_0x50f1('0x2e')][_0x50f1('0x39')]+'%'};return _0x329ca0;}})});}_0x9ab9e3=_[_0x50f1('0x3b')]({},_0x9ab9e3,_0x56d925[_0x50f1('0x3d')]);var _0x52c052={'where':_0x9ab9e3[_0x50f1('0x3a')]};return db['AnalyticFieldReport']['count'](_0x52c052)[_0x50f1('0x21')](function(_0x845f0c){_0x3ce7a5[_0x50f1('0x1b')]=_0x845f0c;if(_0x56d925[_0x50f1('0x2e')][_0x50f1('0x3e')]){_0x9ab9e3['include']=[{'all':!![]}];}return db[_0x50f1('0x28')][_0x50f1('0x3f')](_0x9ab9e3);})[_0x50f1('0x21')](function(_0x374041){_0x3ce7a5[_0x50f1('0x40')]=_0x374041;return _0x3ce7a5;})[_0x50f1('0x21')](respondWithFilteredResult(_0x2efea7,_0x9ab9e3))[_0x50f1('0x41')](handleError(_0x2efea7,null));};exports[_0x50f1('0x42')]=function(_0x1a750d,_0x560b3c){var _0x5e9e4d={'raw':![],'where':{'id':_0x1a750d['params']['id']}},_0x70b7b2={};_0x70b7b2[_0x50f1('0x2d')]=_[_0x50f1('0x2f')](db[_0x50f1('0x28')][_0x50f1('0x29')]);_0x70b7b2[_0x50f1('0x2e')]=_[_0x50f1('0x2f')](_0x1a750d[_0x50f1('0x2e')]);_0x70b7b2['filters']=_['intersection'](_0x70b7b2['model'],_0x70b7b2['query']);_0x5e9e4d[_0x50f1('0x32')]=_[_0x50f1('0x31')](_0x70b7b2['model'],qs['fields'](_0x1a750d['query'][_0x50f1('0x33')]));_0x5e9e4d['attributes']=_0x5e9e4d[_0x50f1('0x32')]['length']?_0x5e9e4d['attributes']:_0x70b7b2[_0x50f1('0x2d')];if(_0x1a750d[_0x50f1('0x2e')][_0x50f1('0x3e')]){_0x5e9e4d['include']=[{'all':!![]}];}_0x5e9e4d=_[_0x50f1('0x3b')]({},_0x5e9e4d,_0x1a750d[_0x50f1('0x3d')]);return db[_0x50f1('0x28')][_0x50f1('0x43')](_0x5e9e4d)[_0x50f1('0x21')](handleEntityNotFound(_0x560b3c,null))[_0x50f1('0x21')](respondWithResult(_0x560b3c,null))[_0x50f1('0x41')](handleError(_0x560b3c,null));};exports[_0x50f1('0x44')]=function(_0x1a03fc,_0x311e65){return db[_0x50f1('0x28')][_0x50f1('0x44')](_0x1a03fc[_0x50f1('0x45')],{})[_0x50f1('0x21')](respondWithResult(_0x311e65,0xc9))[_0x50f1('0x41')](handleError(_0x311e65,null));};exports[_0x50f1('0x46')]=function(_0x37efa6,_0x912d43){return db['AnalyticFieldReport'][_0x50f1('0x46')](_0x37efa6[_0x50f1('0x45')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x912d43,0xc9))[_0x50f1('0x41')](handleError(_0x912d43,null));};exports['update']=function(_0x5f229f,_0x3cde0a){if(_0x5f229f[_0x50f1('0x45')]['id']){delete _0x5f229f[_0x50f1('0x45')]['id'];}return db[_0x50f1('0x28')]['find']({'where':{'id':_0x5f229f['params']['id']}})[_0x50f1('0x21')](handleEntityNotFound(_0x3cde0a,null))[_0x50f1('0x21')](saveUpdates(_0x5f229f['body'],null))[_0x50f1('0x21')](respondWithResult(_0x3cde0a,null))[_0x50f1('0x41')](handleError(_0x3cde0a,null));};exports[_0x50f1('0x47')]=function(_0x4327e0,_0x4b6c81){return db[_0x50f1('0x28')][_0x50f1('0x43')]({'where':{'id':_0x4327e0[_0x50f1('0x48')]['id']}})[_0x50f1('0x21')](handleEntityNotFound(_0x4b6c81,null))['then'](removeEntity(_0x4b6c81,null))[_0x50f1('0x41')](handleError(_0x4b6c81,null));};exports['bulkDestroy']=function(_0x54dec4,_0x252186){return db[_0x50f1('0x28')][_0x50f1('0x47')]({'where':{'id':_0x54dec4['query'][_0x50f1('0x49')]||[]},'raw':![],'individualHooks':!![]})[_0x50f1('0x21')](respondWithResult(_0x252186,0xcc))[_0x50f1('0x41')](handleError(_0x252186,null));};exports[_0x50f1('0x4a')]=function(_0x50dea4,_0x428311,_0xccca6b){return db[_0x50f1('0x4b')][_0x50f1('0x4c')]({'where':{'id':_0x50dea4[_0x50f1('0x48')]['id']}})[_0x50f1('0x21')](handleEntityNotFound(_0x428311,null))[_0x50f1('0x21')](function(_0xa7d332){if(_0xa7d332){return db['sequelize'][_0x50f1('0x4d')](function(_0xa3772d){return db['AnalyticFieldReport']['destroy']({'where':{'CustomReportId':_0x50dea4[_0x50f1('0x48')]['id']},'transaction':_0xa3772d})[_0x50f1('0x21')](function(_0x3e49d5){var _0xf2bfa0=_['map'](_0x50dea4[_0x50f1('0x45')],function(_0x27c4ea){delete _0x27c4ea['id'];_0x27c4ea[_0x50f1('0x4e')]=_0x50dea4[_0x50f1('0x48')]['id'];return _0x27c4ea;});return db[_0x50f1('0x28')]['bulkCreate'](_0xf2bfa0,{'transaction':_0xa3772d});});})[_0x50f1('0x21')](function(){return db['AnalyticFieldReport']['findAll']({'where':{'CustomReportId':_0x50dea4[_0x50f1('0x48')]['id']}});});}})[_0x50f1('0x21')](respondWithResult(_0x428311,null))[_0x50f1('0x41')](handleError(_0x428311,null));};
\ No newline at end of file
+var _0x979d=['nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','AnalyticFieldReport','includeAll','include','rows','catch','intersection','find','create','body','bulkCreate','params','ids','addFields','AnalyticCustomReport','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','limit','count','set','apply','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','attributes','fields','length','hasOwnProperty'];(function(_0x40c58d,_0xca539f){var _0x2a8381=function(_0x4a1f4d){while(--_0x4a1f4d){_0x40c58d['push'](_0x40c58d['shift']());}};_0x2a8381(++_0xca539f);}(_0x979d,0x1a2));var _0xd979=function(_0x23278f,_0x360004){_0x23278f=_0x23278f-0x0;var _0x307d3e=_0x979d[_0x23278f];return _0x307d3e;};'use strict';var emlformat=require(_0xd979('0x0'));var rimraf=require(_0xd979('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd979('0x2'));var moment=require(_0xd979('0x3'));var BPromise=require(_0xd979('0x4'));var Mustache=require(_0xd979('0x5'));var util=require('util');var path=require(_0xd979('0x6'));var sox=require('sox');var csv=require(_0xd979('0x7'));var ejs=require(_0xd979('0x8'));var fs=require('fs');var fs_extra=require(_0xd979('0x9'));var _=require(_0xd979('0xa'));var squel=require(_0xd979('0xb'));var crypto=require(_0xd979('0xc'));var jsforce=require(_0xd979('0xd'));var deskjs=require(_0xd979('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd979('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd979('0x10'));var as=require(_0xd979('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xd979('0x12'));var utils=require(_0xd979('0x13'));var config=require(_0xd979('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd979('0x15'))['db'];function respondWithStatusCode(_0x4188a9,_0x368292){_0x368292=_0x368292||0xcc;return function(_0x2fa55d){if(_0x2fa55d){return _0x4188a9[_0xd979('0x16')](_0x368292);}return _0x4188a9[_0xd979('0x17')](_0x368292)[_0xd979('0x18')]();};}function respondWithResult(_0x1b366b,_0x525ca4){_0x525ca4=_0x525ca4||0xc8;return function(_0x4e28e0){if(_0x4e28e0){return _0x1b366b['status'](_0x525ca4)['json'](_0x4e28e0);}};}function respondWithFilteredResult(_0x543bd1,_0x586ed0){return function(_0x5cc0dd){if(_0x5cc0dd){var _0x1f012c=typeof _0x586ed0[_0xd979('0x19')]==='undefined'&&typeof _0x586ed0[_0xd979('0x1a')]==='undefined';var _0x230277=_0x5cc0dd[_0xd979('0x1b')];var _0xc8c42=_0x1f012c?0x0:_0x586ed0['offset'];var _0x4c3197=_0x1f012c?_0x5cc0dd['count']:_0x586ed0[_0xd979('0x19')]+_0x586ed0['limit'];var _0x36fc8d;if(_0x4c3197>=_0x230277){_0x4c3197=_0x230277;_0x36fc8d=0xc8;}else{_0x36fc8d=0xce;}_0x543bd1[_0xd979('0x17')](_0x36fc8d);return _0x543bd1[_0xd979('0x1c')]('Content-Range',_0xc8c42+'-'+_0x4c3197+'/'+_0x230277)['json'](_0x5cc0dd);}return null;};}function patchUpdates(_0x220491){return function(_0x4fe578){try{jsonpatch[_0xd979('0x1d')](_0x4fe578,_0x220491,!![]);}catch(_0x40c470){return BPromise['reject'](_0x40c470);}return _0x4fe578[_0xd979('0x1e')]();};}function saveUpdates(_0x3987b2,_0x35ea8b){return function(_0x44cecc){if(_0x44cecc){return _0x44cecc[_0xd979('0x1f')](_0x3987b2)[_0xd979('0x20')](function(_0x4c29c5){return _0x4c29c5;});}return null;};}function removeEntity(_0x367366,_0x3326d6){return function(_0x206421){if(_0x206421){return _0x206421[_0xd979('0x21')]()['then'](function(){_0x367366[_0xd979('0x17')](0xcc)[_0xd979('0x18')]();});}};}function handleEntityNotFound(_0x34ac95,_0x2b0a53){return function(_0x1cc3fb){if(!_0x1cc3fb){_0x34ac95[_0xd979('0x16')](0x194);}return _0x1cc3fb;};}function handleError(_0x3423fc,_0x25d291){_0x25d291=_0x25d291||0x1f4;return function(_0x5a32e8){logger[_0xd979('0x22')](_0x5a32e8[_0xd979('0x23')]);if(_0x5a32e8['name']){delete _0x5a32e8[_0xd979('0x24')];}_0x3423fc[_0xd979('0x17')](_0x25d291)['send'](_0x5a32e8);};}exports[_0xd979('0x25')]=function(_0x98bab,_0x1f95d3){var _0x2c93a0={},_0x183987={},_0x127205={'count':0x0,'rows':[]};var _0x32ba66=_[_0xd979('0x26')](db['AnalyticFieldReport'][_0xd979('0x27')],function(_0x2380cc){return{'name':_0x2380cc[_0xd979('0x28')],'type':_0x2380cc[_0xd979('0x29')][_0xd979('0x2a')]};});_0x183987[_0xd979('0x2b')]=_[_0xd979('0x26')](_0x32ba66,_0xd979('0x24'));_0x183987[_0xd979('0x2c')]=_[_0xd979('0x2d')](_0x98bab[_0xd979('0x2c')]);_0x183987['filters']=_['intersection'](_0x183987[_0xd979('0x2b')],_0x183987[_0xd979('0x2c')]);_0x2c93a0[_0xd979('0x2e')]=_['intersection'](_0x183987[_0xd979('0x2b')],qs[_0xd979('0x2f')](_0x98bab[_0xd979('0x2c')][_0xd979('0x2f')]));_0x2c93a0[_0xd979('0x2e')]=_0x2c93a0[_0xd979('0x2e')][_0xd979('0x30')]?_0x2c93a0[_0xd979('0x2e')]:_0x183987[_0xd979('0x2b')];if(!_0x98bab[_0xd979('0x2c')][_0xd979('0x31')](_0xd979('0x32'))){_0x2c93a0[_0xd979('0x1a')]=qs[_0xd979('0x1a')](_0x98bab[_0xd979('0x2c')][_0xd979('0x1a')]);_0x2c93a0[_0xd979('0x19')]=qs['offset'](_0x98bab['query']['offset']);}_0x2c93a0[_0xd979('0x33')]=qs[_0xd979('0x34')](_0x98bab[_0xd979('0x2c')][_0xd979('0x34')]);_0x2c93a0[_0xd979('0x35')]=qs[_0xd979('0x36')](_[_0xd979('0x37')](_0x98bab[_0xd979('0x2c')],_0x183987[_0xd979('0x36')]),_0x32ba66);if(_0x98bab[_0xd979('0x2c')]['filter']){_0x2c93a0[_0xd979('0x35')]=_[_0xd979('0x38')](_0x2c93a0[_0xd979('0x35')],{'$or':_[_0xd979('0x26')](_0x32ba66,function(_0xea6543){if(_0xea6543[_0xd979('0x29')]!==_0xd979('0x39')){var _0x48f8d6={};_0x48f8d6[_0xea6543[_0xd979('0x24')]]={'$like':'%'+_0x98bab[_0xd979('0x2c')][_0xd979('0x3a')]+'%'};return _0x48f8d6;}})});}_0x2c93a0=_['merge']({},_0x2c93a0,_0x98bab[_0xd979('0x3b')]);var _0x21235c={'where':_0x2c93a0['where']};return db[_0xd979('0x3c')][_0xd979('0x1b')](_0x21235c)['then'](function(_0x11a2b3){_0x127205[_0xd979('0x1b')]=_0x11a2b3;if(_0x98bab['query'][_0xd979('0x3d')]){_0x2c93a0[_0xd979('0x3e')]=[{'all':!![]}];}return db['AnalyticFieldReport']['findAll'](_0x2c93a0);})[_0xd979('0x20')](function(_0x5d74eb){_0x127205[_0xd979('0x3f')]=_0x5d74eb;return _0x127205;})['then'](respondWithFilteredResult(_0x1f95d3,_0x2c93a0))[_0xd979('0x40')](handleError(_0x1f95d3,null));};exports['show']=function(_0x5a712b,_0x2aa864){var _0x16c2e7={'raw':![],'where':{'id':_0x5a712b['params']['id']}},_0x5bf84f={};_0x5bf84f[_0xd979('0x2b')]=_[_0xd979('0x2d')](db[_0xd979('0x3c')]['rawAttributes']);_0x5bf84f[_0xd979('0x2c')]=_[_0xd979('0x2d')](_0x5a712b[_0xd979('0x2c')]);_0x5bf84f['filters']=_['intersection'](_0x5bf84f['model'],_0x5bf84f[_0xd979('0x2c')]);_0x16c2e7[_0xd979('0x2e')]=_[_0xd979('0x41')](_0x5bf84f['model'],qs[_0xd979('0x2f')](_0x5a712b[_0xd979('0x2c')]['fields']));_0x16c2e7[_0xd979('0x2e')]=_0x16c2e7['attributes'][_0xd979('0x30')]?_0x16c2e7[_0xd979('0x2e')]:_0x5bf84f[_0xd979('0x2b')];if(_0x5a712b[_0xd979('0x2c')][_0xd979('0x3d')]){_0x16c2e7[_0xd979('0x3e')]=[{'all':!![]}];}_0x16c2e7=_[_0xd979('0x38')]({},_0x16c2e7,_0x5a712b['options']);return db[_0xd979('0x3c')][_0xd979('0x42')](_0x16c2e7)[_0xd979('0x20')](handleEntityNotFound(_0x2aa864,null))['then'](respondWithResult(_0x2aa864,null))[_0xd979('0x40')](handleError(_0x2aa864,null));};exports[_0xd979('0x43')]=function(_0x417615,_0x3e9611){return db[_0xd979('0x3c')]['create'](_0x417615[_0xd979('0x44')],{})['then'](respondWithResult(_0x3e9611,0xc9))[_0xd979('0x40')](handleError(_0x3e9611,null));};exports['bulkCreate']=function(_0x10a3cb,_0x2587da){return db[_0xd979('0x3c')][_0xd979('0x45')](_0x10a3cb[_0xd979('0x44')],{'raw':![],'individualHooks':!![]})[_0xd979('0x20')](respondWithResult(_0x2587da,0xc9))[_0xd979('0x40')](handleError(_0x2587da,null));};exports[_0xd979('0x1f')]=function(_0x59ed01,_0x50c484){if(_0x59ed01[_0xd979('0x44')]['id']){delete _0x59ed01['body']['id'];}return db[_0xd979('0x3c')][_0xd979('0x42')]({'where':{'id':_0x59ed01[_0xd979('0x46')]['id']}})[_0xd979('0x20')](handleEntityNotFound(_0x50c484,null))['then'](saveUpdates(_0x59ed01[_0xd979('0x44')],null))[_0xd979('0x20')](respondWithResult(_0x50c484,null))[_0xd979('0x40')](handleError(_0x50c484,null));};exports['destroy']=function(_0x454310,_0x39915d){return db[_0xd979('0x3c')][_0xd979('0x42')]({'where':{'id':_0x454310[_0xd979('0x46')]['id']}})[_0xd979('0x20')](handleEntityNotFound(_0x39915d,null))[_0xd979('0x20')](removeEntity(_0x39915d,null))[_0xd979('0x40')](handleError(_0x39915d,null));};exports['bulkDestroy']=function(_0x3f6814,_0x7fc739){return db[_0xd979('0x3c')][_0xd979('0x21')]({'where':{'id':_0x3f6814['query'][_0xd979('0x47')]||[]},'raw':![],'individualHooks':!![]})[_0xd979('0x20')](respondWithResult(_0x7fc739,0xcc))[_0xd979('0x40')](handleError(_0x7fc739,null));};exports[_0xd979('0x48')]=function(_0xdeafe4,_0x423773,_0x1fb91c){return db[_0xd979('0x49')]['findOne']({'where':{'id':_0xdeafe4[_0xd979('0x46')]['id']}})[_0xd979('0x20')](handleEntityNotFound(_0x423773,null))['then'](function(_0x4c843d){if(_0x4c843d){return db[_0xd979('0x4a')][_0xd979('0x4b')](function(_0x2f700f){return db[_0xd979('0x3c')][_0xd979('0x21')]({'where':{'CustomReportId':_0xdeafe4[_0xd979('0x46')]['id']},'transaction':_0x2f700f})['then'](function(_0x4143d4){var _0x544c24=_[_0xd979('0x26')](_0xdeafe4[_0xd979('0x44')],function(_0x543c9b){delete _0x543c9b['id'];_0x543c9b[_0xd979('0x4c')]=_0xdeafe4[_0xd979('0x46')]['id'];return _0x543c9b;});return db[_0xd979('0x3c')][_0xd979('0x45')](_0x544c24,{'transaction':_0x2f700f});});})[_0xd979('0x20')](function(){return db[_0xd979('0x3c')][_0xd979('0x4d')]({'where':{'CustomReportId':_0xdeafe4[_0xd979('0x46')]['id']}});});}})[_0xd979('0x20')](respondWithResult(_0x423773,null))[_0xd979('0x40')](handleError(_0x423773,null));};
\ No newline at end of file
index 50b28b0..5773b5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53e3=['api','moment','request-promise','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','../../config/logger'];(function(_0x237160,_0x1be8ec){var _0x1b2492=function(_0x5243b4){while(--_0x5243b4){_0x237160['push'](_0x237160['shift']());}};_0x1b2492(++_0x1be8ec);}(_0x53e3,0xb2));var _0x353e=function(_0x1aec15,_0x10b26c){_0x1aec15=_0x1aec15-0x0;var _0x28b124=_0x53e3[_0x1aec15];return _0x28b124;};'use strict';var _=require(_0x353e('0x0'));var util=require('util');var logger=require(_0x353e('0x1'))(_0x353e('0x2'));var moment=require(_0x353e('0x3'));var BPromise=require('bluebird');var rp=require(_0x353e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x353e('0x5'));var config=require(_0x353e('0x6'));var attributes=require(_0x353e('0x7'));module[_0x353e('0x8')]=function(_0x390b3f,_0x18579c){return _0x390b3f[_0x353e('0x9')](_0x353e('0xa'),attributes,{'tableName':_0x353e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb790=['AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./analyticFieldReport.attributes','exports','define'];(function(_0x158f01,_0x12af3e){var _0x5ef74e=function(_0x5e7adc){while(--_0x5e7adc){_0x158f01['push'](_0x158f01['shift']());}};_0x5ef74e(++_0x12af3e);}(_0xb790,0x77));var _0x0b79=function(_0x149319,_0x4182b5){_0x149319=_0x149319-0x0;var _0x4637c9=_0xb790[_0x149319];return _0x4637c9;};'use strict';var _=require(_0x0b79('0x0'));var util=require(_0x0b79('0x1'));var logger=require(_0x0b79('0x2'))(_0x0b79('0x3'));var moment=require(_0x0b79('0x4'));var BPromise=require('bluebird');var rp=require(_0x0b79('0x5'));var fs=require('fs');var path=require(_0x0b79('0x6'));var rimraf=require(_0x0b79('0x7'));var config=require('../../config/environment');var attributes=require(_0x0b79('0x8'));module[_0x0b79('0x9')]=function(_0x3a54fb,_0x1bc56d){return _0x3a54fb[_0x0b79('0xa')](_0x0b79('0xb'),attributes,{'tableName':_0x0b79('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d125c1b..67c1b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b59=['result','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x3522d8,_0x40233e){var _0x38d499=function(_0x5d823c){while(--_0x5d823c){_0x3522d8['push'](_0x3522d8['shift']());}};_0x38d499(++_0x40233e);}(_0x9b59,0x74));var _0x99b5=function(_0x10ae21,_0x502de1){_0x10ae21=_0x10ae21-0x0;var _0x2a1237=_0x9b59[_0x10ae21];return _0x2a1237;};'use strict';var _=require(_0x99b5('0x0'));var util=require(_0x99b5('0x1'));var moment=require(_0x99b5('0x2'));var BPromise=require(_0x99b5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x99b5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x99b5('0x5'));var logger=require(_0x99b5('0x6'))(_0x99b5('0x7'));var config=require(_0x99b5('0x8'));var jayson=require(_0x99b5('0x9'));var client=jayson[_0x99b5('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3bc983,_0x37fda5,_0x41b2d2){return new BPromise(function(_0x4317f2,_0x2ad78a){return client[_0x99b5('0xb')](_0x3bc983,_0x41b2d2)[_0x99b5('0xc')](function(_0x4c5123){logger['info'](_0x99b5('0xd'),_0x37fda5,_0x99b5('0xe'));logger[_0x99b5('0xf')](_0x99b5('0x10'),_0x37fda5,_0x99b5('0xe'),JSON[_0x99b5('0x11')](_0x4c5123));if(_0x4c5123[_0x99b5('0x12')]){if(_0x4c5123[_0x99b5('0x12')][_0x99b5('0x13')]===0x1f4){logger[_0x99b5('0x12')]('AnalyticFieldReport,\x20%s,\x20%s',_0x37fda5,_0x4c5123['error'][_0x99b5('0x14')]);return _0x2ad78a(_0x4c5123[_0x99b5('0x12')]['message']);}logger[_0x99b5('0x12')]('AnalyticFieldReport,\x20%s,\x20%s',_0x37fda5,_0x4c5123['error'][_0x99b5('0x14')]);return _0x4317f2(_0x4c5123['error'][_0x99b5('0x14')]);}else{logger[_0x99b5('0x15')](_0x99b5('0xd'),_0x37fda5,'request\x20sent');_0x4317f2(_0x4c5123[_0x99b5('0x16')]['message']);}})['catch'](function(_0x258ee0){logger[_0x99b5('0x12')](_0x99b5('0xd'),_0x37fda5,_0x258ee0);_0x2ad78a(_0x258ee0);});});}
\ No newline at end of file
+var _0xde3c=['catch','util','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','request','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticFieldReport,\x20%s,\x20%s','message','result'];(function(_0x1b4af6,_0xd59625){var _0x105d96=function(_0x31995e){while(--_0x31995e){_0x1b4af6['push'](_0x1b4af6['shift']());}};_0x105d96(++_0xd59625);}(_0xde3c,0x157));var _0xcde3=function(_0x15267f,_0x394070){_0x15267f=_0x15267f-0x0;var _0x1f4b40=_0xde3c[_0x15267f];return _0x1f4b40;};'use strict';var _=require('lodash');var util=require(_0xcde3('0x0'));var moment=require('moment');var BPromise=require(_0xcde3('0x1'));var rs=require(_0xcde3('0x2'));var fs=require('fs');var Redis=require(_0xcde3('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcde3('0x4'))('rpc');var config=require(_0xcde3('0x5'));var jayson=require(_0xcde3('0x6'));var client=jayson['client'][_0xcde3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46c882,_0x4d6375,_0x14eef3){return new BPromise(function(_0x4c6615,_0x41e515){return client[_0xcde3('0x8')](_0x46c882,_0x14eef3)['then'](function(_0x540571){logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x4d6375,_0xcde3('0x9'));logger[_0xcde3('0xa')](_0xcde3('0xb'),_0x4d6375,_0xcde3('0x9'),JSON[_0xcde3('0xc')](_0x540571));if(_0x540571[_0xcde3('0xd')]){if(_0x540571['error'][_0xcde3('0xe')]===0x1f4){logger[_0xcde3('0xd')](_0xcde3('0xf'),_0x4d6375,_0x540571[_0xcde3('0xd')][_0xcde3('0x10')]);return _0x41e515(_0x540571[_0xcde3('0xd')]['message']);}logger[_0xcde3('0xd')](_0xcde3('0xf'),_0x4d6375,_0x540571[_0xcde3('0xd')][_0xcde3('0x10')]);return _0x4c6615(_0x540571[_0xcde3('0xd')]['message']);}else{logger['info'](_0xcde3('0xf'),_0x4d6375,'request\x20sent');_0x4c6615(_0x540571[_0xcde3('0x11')][_0xcde3('0x10')]);}})[_0xcde3('0x12')](function(_0x39188c){logger['error'](_0xcde3('0xf'),_0x4d6375,_0x39188c);_0x41e515(_0x39188c);});});}
\ No newline at end of file
index 97d6390..ce89657 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(_0x15648d,_0x1ed0b8){var _0x2a80bd=function(_0x5d3ef7){while(--_0x5d3ef7){_0x15648d['push'](_0x15648d['shift']());}};_0x2a80bd(++_0x1ed0b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'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(_0xfbdead,_0x1bf870){var _0x2c2432=function(_0x2de951){while(--_0x2de951){_0xfbdead['push'](_0xfbdead['shift']());}};_0x2c2432(++_0x1bf870);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'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 91b9ded..b817446 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['exports','STRING','TEXT'];(function(_0x212348,_0x55415c){var _0x1696e9=function(_0x2b87cb){while(--_0x2b87cb){_0x212348['push'](_0x212348['shift']());}};_0x1696e9(++_0x55415c);}(_0xbee3,0xd5));var _0x3bee=function(_0x3da212,_0x578b5a){_0x3da212=_0x3da212-0x0;var _0x33b6f1=_0xbee3[_0x3da212];return _0x33b6f1;};'use strict';var Sequelize=require('sequelize');module[_0x3bee('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'table':{'type':Sequelize[_0x3bee('0x1')]},'metric':{'type':Sequelize[_0x3bee('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0c71=['name','STRING','TEXT','exports'];(function(_0x2d6c3a,_0x350a69){var _0x3e686=function(_0x256f60){while(--_0x256f60){_0x2d6c3a['push'](_0x2d6c3a['shift']());}};_0x3e686(++_0x350a69);}(_0x0c71,0xfb));var _0x10c7=function(_0x56b68b,_0x15832b){_0x56b68b=_0x56b68b-0x0;var _0x4ab7ac=_0x0c71[_0x56b68b];return _0x4ab7ac;};'use strict';var Sequelize=require('sequelize');module[_0x10c7('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x10c7('0x1')},'table':{'type':Sequelize[_0x10c7('0x2')]},'metric':{'type':Sequelize[_0x10c7('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b12bce1..3391dff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params'];(function(_0x2bb649,_0x2e75f5){var _0x10487c=function(_0x59ceee){while(--_0x59ceee){_0x2bb649['push'](_0x2bb649['shift']());}};_0x10487c(++_0x2e75f5);}(_0x24ca,0x1bc));var _0xa24c=function(_0x344adc,_0x183c37){_0x344adc=_0x344adc-0x0;var _0x4014b2=_0x24ca[_0x344adc];return _0x4014b2;};'use strict';var emlformat=require(_0xa24c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa24c('0x1'));var jsonpatch=require(_0xa24c('0x2'));var rp=require(_0xa24c('0x3'));var moment=require('moment');var BPromise=require(_0xa24c('0x4'));var Mustache=require(_0xa24c('0x5'));var util=require(_0xa24c('0x6'));var path=require(_0xa24c('0x7'));var sox=require(_0xa24c('0x8'));var csv=require(_0xa24c('0x9'));var ejs=require(_0xa24c('0xa'));var fs=require('fs');var fs_extra=require(_0xa24c('0xb'));var _=require(_0xa24c('0xc'));var squel=require(_0xa24c('0xd'));var crypto=require(_0xa24c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa24c('0xf'));var toCsv=require(_0xa24c('0x9'));var querystring=require(_0xa24c('0x10'));var Papa=require('papaparse');var Redis=require(_0xa24c('0x11'));var authService=require(_0xa24c('0x12'));var qs=require(_0xa24c('0x13'));var as=require(_0xa24c('0x14'));var hardwareService=require(_0xa24c('0x15'));var logger=require(_0xa24c('0x16'))(_0xa24c('0x17'));var utils=require(_0xa24c('0x18'));var config=require(_0xa24c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xa24c('0x1a'))['db'];function respondWithStatusCode(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xcc;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['sendStatus'](_0xcee4fe);}return _0x11090c[_0xa24c('0x1b')](_0xcee4fe)[_0xa24c('0x1c')]();};}function respondWithResult(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0xc8;return function(_0x1cb08e){if(_0x1cb08e){return _0x26ff28[_0xa24c('0x1b')](_0x2fcd8b)[_0xa24c('0x1d')](_0x1cb08e);}};}function respondWithFilteredResult(_0x5d4727,_0x47a063){return function(_0xb80781){if(_0xb80781){var _0x87aa90=typeof _0x47a063['offset']==='undefined'&&typeof _0x47a063[_0xa24c('0x1e')]===_0xa24c('0x1f');var _0x5c479e=_0xb80781[_0xa24c('0x20')];var _0x5de3e6=_0x87aa90?0x0:_0x47a063[_0xa24c('0x21')];var _0x2a610a=_0x87aa90?_0xb80781[_0xa24c('0x20')]:_0x47a063[_0xa24c('0x21')]+_0x47a063['limit'];var _0x16d363;if(_0x2a610a>=_0x5c479e){_0x2a610a=_0x5c479e;_0x16d363=0xc8;}else{_0x16d363=0xce;}_0x5d4727[_0xa24c('0x1b')](_0x16d363);return _0x5d4727[_0xa24c('0x22')]('Content-Range',_0x5de3e6+'-'+_0x2a610a+'/'+_0x5c479e)['json'](_0xb80781);}return null;};}function patchUpdates(_0x506424){return function(_0x4cd77e){try{jsonpatch[_0xa24c('0x23')](_0x4cd77e,_0x506424,!![]);}catch(_0x174b69){return BPromise[_0xa24c('0x24')](_0x174b69);}return _0x4cd77e[_0xa24c('0x25')]();};}function saveUpdates(_0x51a275,_0x30ec21){return function(_0x5f299e){if(_0x5f299e){return _0x5f299e[_0xa24c('0x26')](_0x51a275)[_0xa24c('0x27')](function(_0x4a1cda){return _0x4a1cda;});}return null;};}function removeEntity(_0x346ee8,_0x363d52){return function(_0x43a0c0){if(_0x43a0c0){return _0x43a0c0[_0xa24c('0x28')]()[_0xa24c('0x27')](function(){var _0x47e0eb=_0x43a0c0[_0xa24c('0x29')]({'plain':!![]});var _0x5cc9cb=_0xa24c('0x2a');return db[_0xa24c('0x2b')][_0xa24c('0x28')]({'where':{'type':_0x5cc9cb,'resourceId':_0x47e0eb['id']}})['then'](function(){return _0x43a0c0;});})[_0xa24c('0x27')](function(){_0x346ee8[_0xa24c('0x1b')](0xcc)[_0xa24c('0x1c')]();});}};}function handleEntityNotFound(_0x314121,_0x11e4e0){return function(_0x3ad0e6){if(!_0x3ad0e6){_0x314121[_0xa24c('0x2c')](0x194);}return _0x3ad0e6;};}function handleError(_0x5b23f4,_0xa0c48e){_0xa0c48e=_0xa0c48e||0x1f4;return function(_0x28675f){logger[_0xa24c('0x2d')](_0x28675f[_0xa24c('0x2e')]);if(_0x28675f['name']){delete _0x28675f[_0xa24c('0x2f')];}_0x5b23f4[_0xa24c('0x1b')](_0xa0c48e)[_0xa24c('0x30')](_0x28675f);};}exports['index']=function(_0x15eaaf,_0x3dcb1b){var _0x253d83={},_0x4ae35c={},_0x245fb2={'count':0x0,'rows':[]};var _0x5e0226=_[_0xa24c('0x31')](db[_0xa24c('0x32')][_0xa24c('0x33')],function(_0x5d025a){return{'name':_0x5d025a[_0xa24c('0x34')],'type':_0x5d025a[_0xa24c('0x35')][_0xa24c('0x36')]};});_0x4ae35c['model']=_[_0xa24c('0x31')](_0x5e0226,'name');_0x4ae35c[_0xa24c('0x37')]=_[_0xa24c('0x38')](_0x15eaaf['query']);_0x4ae35c['filters']=_[_0xa24c('0x39')](_0x4ae35c[_0xa24c('0x3a')],_0x4ae35c[_0xa24c('0x37')]);_0x253d83[_0xa24c('0x3b')]=_[_0xa24c('0x39')](_0x4ae35c[_0xa24c('0x3a')],qs[_0xa24c('0x3c')](_0x15eaaf['query'][_0xa24c('0x3c')]));_0x253d83[_0xa24c('0x3b')]=_0x253d83[_0xa24c('0x3b')][_0xa24c('0x3d')]?_0x253d83[_0xa24c('0x3b')]:_0x4ae35c[_0xa24c('0x3a')];if(!_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x3e')](_0xa24c('0x3f'))){_0x253d83[_0xa24c('0x1e')]=qs['limit'](_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x1e')]);_0x253d83[_0xa24c('0x21')]=qs[_0xa24c('0x21')](_0x15eaaf['query']['offset']);}_0x253d83[_0xa24c('0x40')]=qs['sort'](_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x41')]);_0x253d83[_0xa24c('0x42')]=qs[_0xa24c('0x43')](_[_0xa24c('0x44')](_0x15eaaf['query'],_0x4ae35c['filters']),_0x5e0226);if(_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x45')]){_0x253d83[_0xa24c('0x42')]=_[_0xa24c('0x46')](_0x253d83[_0xa24c('0x42')],{'$or':_[_0xa24c('0x31')](_0x5e0226,function(_0x5080d0){if(_0x5080d0['type']!==_0xa24c('0x47')){var _0x1ce83e={};_0x1ce83e[_0x5080d0[_0xa24c('0x2f')]]={'$like':'%'+_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x45')]+'%'};return _0x1ce83e;}})});}_0x253d83=_['merge']({},_0x253d83,_0x15eaaf[_0xa24c('0x48')]);var _0x7895e={'where':_0x253d83['where']};return db['AnalyticMetric'][_0xa24c('0x20')](_0x7895e)[_0xa24c('0x27')](function(_0x231eea){_0x245fb2['count']=_0x231eea;if(_0x15eaaf['query'][_0xa24c('0x49')]){_0x253d83[_0xa24c('0x4a')]=[{'all':!![]}];}return db[_0xa24c('0x32')][_0xa24c('0x4b')](_0x253d83);})[_0xa24c('0x27')](function(_0x1b7faf){_0x245fb2[_0xa24c('0x4c')]=_0x1b7faf;return _0x245fb2;})[_0xa24c('0x27')](respondWithFilteredResult(_0x3dcb1b,_0x253d83))['catch'](handleError(_0x3dcb1b,null));};exports['show']=function(_0x430ba3,_0x44f7d4){var _0x455256={'raw':!![],'where':{'id':_0x430ba3[_0xa24c('0x4d')]['id']}},_0x5972d7={};_0x5972d7[_0xa24c('0x3a')]=_[_0xa24c('0x38')](db[_0xa24c('0x32')][_0xa24c('0x33')]);_0x5972d7[_0xa24c('0x37')]=_[_0xa24c('0x38')](_0x430ba3[_0xa24c('0x37')]);_0x5972d7[_0xa24c('0x43')]=_[_0xa24c('0x39')](_0x5972d7['model'],_0x5972d7[_0xa24c('0x37')]);_0x455256[_0xa24c('0x3b')]=_[_0xa24c('0x39')](_0x5972d7['model'],qs[_0xa24c('0x3c')](_0x430ba3[_0xa24c('0x37')][_0xa24c('0x3c')]));_0x455256[_0xa24c('0x3b')]=_0x455256[_0xa24c('0x3b')][_0xa24c('0x3d')]?_0x455256[_0xa24c('0x3b')]:_0x5972d7[_0xa24c('0x3a')];if(_0x430ba3[_0xa24c('0x37')][_0xa24c('0x49')]){_0x455256[_0xa24c('0x4a')]=[{'all':!![]}];}_0x455256=_['merge']({},_0x455256,_0x430ba3[_0xa24c('0x48')]);return db[_0xa24c('0x32')][_0xa24c('0x4e')](_0x455256)[_0xa24c('0x27')](handleEntityNotFound(_0x44f7d4,null))[_0xa24c('0x27')](respondWithResult(_0x44f7d4,null))[_0xa24c('0x4f')](handleError(_0x44f7d4,null));};exports[_0xa24c('0x50')]=function(_0x2250b9,_0x184179){return db['AnalyticMetric']['create'](_0x2250b9[_0xa24c('0x51')],{})['then'](function(_0xc078ef){var _0x1f436c=_0x2250b9['user'][_0xa24c('0x29')]({'plain':!![]});if(!_0x1f436c)throw new Error(_0xa24c('0x52'));if(_0x1f436c[_0xa24c('0x53')]==='user'){var _0x55978e=_0xc078ef[_0xa24c('0x29')]({'plain':!![]});var _0x5ba726=_0xa24c('0x2a');return db[_0xa24c('0x54')][_0xa24c('0x4e')]({'where':{'name':_0x5ba726,'userProfileId':_0x1f436c[_0xa24c('0x55')]},'raw':!![]})[_0xa24c('0x27')](function(_0x1fa739){if(_0x1fa739&&_0x1fa739[_0xa24c('0x56')]===0x0){return db[_0xa24c('0x2b')][_0xa24c('0x50')]({'name':_0x55978e[_0xa24c('0x2f')],'resourceId':_0x55978e['id'],'type':_0x1fa739['name'],'sectionId':_0x1fa739['id']},{})[_0xa24c('0x27')](function(){return _0xc078ef;});}else{return _0xc078ef;}})[_0xa24c('0x4f')](function(_0x233f8e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x233f8e);throw _0x233f8e;});}return _0xc078ef;})['then'](respondWithResult(_0x184179,0xc9))[_0xa24c('0x4f')](handleError(_0x184179,null));};exports['update']=function(_0x4757ff,_0x21d0fc){if(_0x4757ff['body']['id']){delete _0x4757ff[_0xa24c('0x51')]['id'];}return db[_0xa24c('0x32')][_0xa24c('0x4e')]({'where':{'id':_0x4757ff[_0xa24c('0x4d')]['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x21d0fc,null))[_0xa24c('0x27')](saveUpdates(_0x4757ff[_0xa24c('0x51')],null))[_0xa24c('0x27')](respondWithResult(_0x21d0fc,null))['catch'](handleError(_0x21d0fc,null));};exports[_0xa24c('0x28')]=function(_0x47af80,_0x5abd45){return db['AnalyticMetric']['find']({'where':{'id':_0x47af80['params']['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x5abd45,null))['then'](removeEntity(_0x5abd45,null))[_0xa24c('0x4f')](handleError(_0x5abd45,null));};
\ No newline at end of file
+var _0x24ca=['find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','stack','name','send','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params'];(function(_0x1d213c,_0x1dde7e){var _0x3ea25f=function(_0x313281){while(--_0x313281){_0x1d213c['push'](_0x1d213c['shift']());}};_0x3ea25f(++_0x1dde7e);}(_0x24ca,0x1bc));var _0xa24c=function(_0x4c7935,_0x4a53fb){_0x4c7935=_0x4c7935-0x0;var _0x30651d=_0x24ca[_0x4c7935];return _0x30651d;};'use strict';var emlformat=require(_0xa24c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa24c('0x1'));var jsonpatch=require(_0xa24c('0x2'));var rp=require(_0xa24c('0x3'));var moment=require('moment');var BPromise=require(_0xa24c('0x4'));var Mustache=require(_0xa24c('0x5'));var util=require(_0xa24c('0x6'));var path=require(_0xa24c('0x7'));var sox=require(_0xa24c('0x8'));var csv=require(_0xa24c('0x9'));var ejs=require(_0xa24c('0xa'));var fs=require('fs');var fs_extra=require(_0xa24c('0xb'));var _=require(_0xa24c('0xc'));var squel=require(_0xa24c('0xd'));var crypto=require(_0xa24c('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xa24c('0xf'));var toCsv=require(_0xa24c('0x9'));var querystring=require(_0xa24c('0x10'));var Papa=require('papaparse');var Redis=require(_0xa24c('0x11'));var authService=require(_0xa24c('0x12'));var qs=require(_0xa24c('0x13'));var as=require(_0xa24c('0x14'));var hardwareService=require(_0xa24c('0x15'));var logger=require(_0xa24c('0x16'))(_0xa24c('0x17'));var utils=require(_0xa24c('0x18'));var config=require(_0xa24c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xa24c('0x1a'))['db'];function respondWithStatusCode(_0x11090c,_0xcee4fe){_0xcee4fe=_0xcee4fe||0xcc;return function(_0x2c2af8){if(_0x2c2af8){return _0x11090c['sendStatus'](_0xcee4fe);}return _0x11090c[_0xa24c('0x1b')](_0xcee4fe)[_0xa24c('0x1c')]();};}function respondWithResult(_0x26ff28,_0x2fcd8b){_0x2fcd8b=_0x2fcd8b||0xc8;return function(_0x1cb08e){if(_0x1cb08e){return _0x26ff28[_0xa24c('0x1b')](_0x2fcd8b)[_0xa24c('0x1d')](_0x1cb08e);}};}function respondWithFilteredResult(_0x5d4727,_0x47a063){return function(_0xb80781){if(_0xb80781){var _0x87aa90=typeof _0x47a063['offset']==='undefined'&&typeof _0x47a063[_0xa24c('0x1e')]===_0xa24c('0x1f');var _0x5c479e=_0xb80781[_0xa24c('0x20')];var _0x5de3e6=_0x87aa90?0x0:_0x47a063[_0xa24c('0x21')];var _0x2a610a=_0x87aa90?_0xb80781[_0xa24c('0x20')]:_0x47a063[_0xa24c('0x21')]+_0x47a063['limit'];var _0x16d363;if(_0x2a610a>=_0x5c479e){_0x2a610a=_0x5c479e;_0x16d363=0xc8;}else{_0x16d363=0xce;}_0x5d4727[_0xa24c('0x1b')](_0x16d363);return _0x5d4727[_0xa24c('0x22')]('Content-Range',_0x5de3e6+'-'+_0x2a610a+'/'+_0x5c479e)['json'](_0xb80781);}return null;};}function patchUpdates(_0x506424){return function(_0x4cd77e){try{jsonpatch[_0xa24c('0x23')](_0x4cd77e,_0x506424,!![]);}catch(_0x174b69){return BPromise[_0xa24c('0x24')](_0x174b69);}return _0x4cd77e[_0xa24c('0x25')]();};}function saveUpdates(_0x51a275,_0x30ec21){return function(_0x5f299e){if(_0x5f299e){return _0x5f299e[_0xa24c('0x26')](_0x51a275)[_0xa24c('0x27')](function(_0x4a1cda){return _0x4a1cda;});}return null;};}function removeEntity(_0x346ee8,_0x363d52){return function(_0x43a0c0){if(_0x43a0c0){return _0x43a0c0[_0xa24c('0x28')]()[_0xa24c('0x27')](function(){var _0x47e0eb=_0x43a0c0[_0xa24c('0x29')]({'plain':!![]});var _0x5cc9cb=_0xa24c('0x2a');return db[_0xa24c('0x2b')][_0xa24c('0x28')]({'where':{'type':_0x5cc9cb,'resourceId':_0x47e0eb['id']}})['then'](function(){return _0x43a0c0;});})[_0xa24c('0x27')](function(){_0x346ee8[_0xa24c('0x1b')](0xcc)[_0xa24c('0x1c')]();});}};}function handleEntityNotFound(_0x314121,_0x11e4e0){return function(_0x3ad0e6){if(!_0x3ad0e6){_0x314121[_0xa24c('0x2c')](0x194);}return _0x3ad0e6;};}function handleError(_0x5b23f4,_0xa0c48e){_0xa0c48e=_0xa0c48e||0x1f4;return function(_0x28675f){logger[_0xa24c('0x2d')](_0x28675f[_0xa24c('0x2e')]);if(_0x28675f['name']){delete _0x28675f[_0xa24c('0x2f')];}_0x5b23f4[_0xa24c('0x1b')](_0xa0c48e)[_0xa24c('0x30')](_0x28675f);};}exports['index']=function(_0x15eaaf,_0x3dcb1b){var _0x253d83={},_0x4ae35c={},_0x245fb2={'count':0x0,'rows':[]};var _0x5e0226=_[_0xa24c('0x31')](db[_0xa24c('0x32')][_0xa24c('0x33')],function(_0x5d025a){return{'name':_0x5d025a[_0xa24c('0x34')],'type':_0x5d025a[_0xa24c('0x35')][_0xa24c('0x36')]};});_0x4ae35c['model']=_[_0xa24c('0x31')](_0x5e0226,'name');_0x4ae35c[_0xa24c('0x37')]=_[_0xa24c('0x38')](_0x15eaaf['query']);_0x4ae35c['filters']=_[_0xa24c('0x39')](_0x4ae35c[_0xa24c('0x3a')],_0x4ae35c[_0xa24c('0x37')]);_0x253d83[_0xa24c('0x3b')]=_[_0xa24c('0x39')](_0x4ae35c[_0xa24c('0x3a')],qs[_0xa24c('0x3c')](_0x15eaaf['query'][_0xa24c('0x3c')]));_0x253d83[_0xa24c('0x3b')]=_0x253d83[_0xa24c('0x3b')][_0xa24c('0x3d')]?_0x253d83[_0xa24c('0x3b')]:_0x4ae35c[_0xa24c('0x3a')];if(!_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x3e')](_0xa24c('0x3f'))){_0x253d83[_0xa24c('0x1e')]=qs['limit'](_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x1e')]);_0x253d83[_0xa24c('0x21')]=qs[_0xa24c('0x21')](_0x15eaaf['query']['offset']);}_0x253d83[_0xa24c('0x40')]=qs['sort'](_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x41')]);_0x253d83[_0xa24c('0x42')]=qs[_0xa24c('0x43')](_[_0xa24c('0x44')](_0x15eaaf['query'],_0x4ae35c['filters']),_0x5e0226);if(_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x45')]){_0x253d83[_0xa24c('0x42')]=_[_0xa24c('0x46')](_0x253d83[_0xa24c('0x42')],{'$or':_[_0xa24c('0x31')](_0x5e0226,function(_0x5080d0){if(_0x5080d0['type']!==_0xa24c('0x47')){var _0x1ce83e={};_0x1ce83e[_0x5080d0[_0xa24c('0x2f')]]={'$like':'%'+_0x15eaaf[_0xa24c('0x37')][_0xa24c('0x45')]+'%'};return _0x1ce83e;}})});}_0x253d83=_['merge']({},_0x253d83,_0x15eaaf[_0xa24c('0x48')]);var _0x7895e={'where':_0x253d83['where']};return db['AnalyticMetric'][_0xa24c('0x20')](_0x7895e)[_0xa24c('0x27')](function(_0x231eea){_0x245fb2['count']=_0x231eea;if(_0x15eaaf['query'][_0xa24c('0x49')]){_0x253d83[_0xa24c('0x4a')]=[{'all':!![]}];}return db[_0xa24c('0x32')][_0xa24c('0x4b')](_0x253d83);})[_0xa24c('0x27')](function(_0x1b7faf){_0x245fb2[_0xa24c('0x4c')]=_0x1b7faf;return _0x245fb2;})[_0xa24c('0x27')](respondWithFilteredResult(_0x3dcb1b,_0x253d83))['catch'](handleError(_0x3dcb1b,null));};exports['show']=function(_0x430ba3,_0x44f7d4){var _0x455256={'raw':!![],'where':{'id':_0x430ba3[_0xa24c('0x4d')]['id']}},_0x5972d7={};_0x5972d7[_0xa24c('0x3a')]=_[_0xa24c('0x38')](db[_0xa24c('0x32')][_0xa24c('0x33')]);_0x5972d7[_0xa24c('0x37')]=_[_0xa24c('0x38')](_0x430ba3[_0xa24c('0x37')]);_0x5972d7[_0xa24c('0x43')]=_[_0xa24c('0x39')](_0x5972d7['model'],_0x5972d7[_0xa24c('0x37')]);_0x455256[_0xa24c('0x3b')]=_[_0xa24c('0x39')](_0x5972d7['model'],qs[_0xa24c('0x3c')](_0x430ba3[_0xa24c('0x37')][_0xa24c('0x3c')]));_0x455256[_0xa24c('0x3b')]=_0x455256[_0xa24c('0x3b')][_0xa24c('0x3d')]?_0x455256[_0xa24c('0x3b')]:_0x5972d7[_0xa24c('0x3a')];if(_0x430ba3[_0xa24c('0x37')][_0xa24c('0x49')]){_0x455256[_0xa24c('0x4a')]=[{'all':!![]}];}_0x455256=_['merge']({},_0x455256,_0x430ba3[_0xa24c('0x48')]);return db[_0xa24c('0x32')][_0xa24c('0x4e')](_0x455256)[_0xa24c('0x27')](handleEntityNotFound(_0x44f7d4,null))[_0xa24c('0x27')](respondWithResult(_0x44f7d4,null))[_0xa24c('0x4f')](handleError(_0x44f7d4,null));};exports[_0xa24c('0x50')]=function(_0x2250b9,_0x184179){return db['AnalyticMetric']['create'](_0x2250b9[_0xa24c('0x51')],{})['then'](function(_0xc078ef){var _0x1f436c=_0x2250b9['user'][_0xa24c('0x29')]({'plain':!![]});if(!_0x1f436c)throw new Error(_0xa24c('0x52'));if(_0x1f436c[_0xa24c('0x53')]==='user'){var _0x55978e=_0xc078ef[_0xa24c('0x29')]({'plain':!![]});var _0x5ba726=_0xa24c('0x2a');return db[_0xa24c('0x54')][_0xa24c('0x4e')]({'where':{'name':_0x5ba726,'userProfileId':_0x1f436c[_0xa24c('0x55')]},'raw':!![]})[_0xa24c('0x27')](function(_0x1fa739){if(_0x1fa739&&_0x1fa739[_0xa24c('0x56')]===0x0){return db[_0xa24c('0x2b')][_0xa24c('0x50')]({'name':_0x55978e[_0xa24c('0x2f')],'resourceId':_0x55978e['id'],'type':_0x1fa739['name'],'sectionId':_0x1fa739['id']},{})[_0xa24c('0x27')](function(){return _0xc078ef;});}else{return _0xc078ef;}})[_0xa24c('0x4f')](function(_0x233f8e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x233f8e);throw _0x233f8e;});}return _0xc078ef;})['then'](respondWithResult(_0x184179,0xc9))[_0xa24c('0x4f')](handleError(_0x184179,null));};exports['update']=function(_0x4757ff,_0x21d0fc){if(_0x4757ff['body']['id']){delete _0x4757ff[_0xa24c('0x51')]['id'];}return db[_0xa24c('0x32')][_0xa24c('0x4e')]({'where':{'id':_0x4757ff[_0xa24c('0x4d')]['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x21d0fc,null))[_0xa24c('0x27')](saveUpdates(_0x4757ff[_0xa24c('0x51')],null))[_0xa24c('0x27')](respondWithResult(_0x21d0fc,null))['catch'](handleError(_0x21d0fc,null));};exports[_0xa24c('0x28')]=function(_0x47af80,_0x5abd45){return db['AnalyticMetric']['find']({'where':{'id':_0x47af80['params']['id']}})[_0xa24c('0x27')](handleEntityNotFound(_0x5abd45,null))['then'](removeEntity(_0x5abd45,null))[_0xa24c('0x4f')](handleError(_0x5abd45,null));};
\ No newline at end of file
index 289cbc9..bb6adb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd0=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','lodash','util'];(function(_0x15e750,_0x521bd4){var _0x551053=function(_0x2b0f64){while(--_0x2b0f64){_0x15e750['push'](_0x15e750['shift']());}};_0x551053(++_0x521bd4);}(_0x2cd0,0x10f));var _0x02cd=function(_0x4aac14,_0x361b03){_0x4aac14=_0x4aac14-0x0;var _0x2b58dc=_0x2cd0[_0x4aac14];return _0x2b58dc;};'use strict';var _=require(_0x02cd('0x0'));var util=require(_0x02cd('0x1'));var logger=require(_0x02cd('0x2'))(_0x02cd('0x3'));var moment=require(_0x02cd('0x4'));var BPromise=require(_0x02cd('0x5'));var rp=require(_0x02cd('0x6'));var fs=require('fs');var path=require(_0x02cd('0x7'));var rimraf=require('rimraf');var config=require(_0x02cd('0x8'));var attributes=require(_0x02cd('0x9'));module[_0x02cd('0xa')]=function(_0x17860f,_0x5172cc){return _0x17860f[_0x02cd('0xb')](_0x02cd('0xc'),attributes,{'tableName':'analytics_metrics','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2bae=['../../config/environment','exports','AnalyticMetric','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x2da04d,_0x45a533){var _0x34cb1e=function(_0x29ebf0){while(--_0x29ebf0){_0x2da04d['push'](_0x2da04d['shift']());}};_0x34cb1e(++_0x45a533);}(_0x2bae,0x164));var _0xe2ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bae[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe2ba('0x0'));var util=require(_0xe2ba('0x1'));var logger=require(_0xe2ba('0x2'))(_0xe2ba('0x3'));var moment=require(_0xe2ba('0x4'));var BPromise=require(_0xe2ba('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe2ba('0x6'));var rimraf=require('rimraf');var config=require(_0xe2ba('0x7'));var attributes=require('./analyticMetric.attributes');module[_0xe2ba('0x8')]=function(_0x129677,_0x21601e){return _0x129677['define'](_0xe2ba('0x9'),attributes,{'tableName':_0xe2ba('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d31ce4..5b0c98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b16=['request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticMetric,\x20%s,\x20%s','message','info','result','catch','lodash','moment','bluebird','../../config/utils','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x1fcf1b,_0x214549){var _0x5d2952=function(_0x3331b7){while(--_0x3331b7){_0x1fcf1b['push'](_0x1fcf1b['shift']());}};_0x5d2952(++_0x214549);}(_0x9b16,0xb3));var _0x69b1=function(_0x51e675,_0xabd4cb){_0x51e675=_0x51e675-0x0;var _0x49a5f7=_0x9b16[_0x51e675];return _0x49a5f7;};'use strict';var _=require(_0x69b1('0x0'));var util=require('util');var moment=require(_0x69b1('0x1'));var BPromise=require(_0x69b1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x69b1('0x3'));var logger=require('../../config/logger')('rpc');var config=require(_0x69b1('0x4'));var jayson=require(_0x69b1('0x5'));var client=jayson[_0x69b1('0x6')][_0x69b1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4e07f9,_0x5001df,_0x768175){return new BPromise(function(_0x1e7a65,_0x38dead){return client[_0x69b1('0x8')](_0x4e07f9,_0x768175)[_0x69b1('0x9')](function(_0x5c9951){logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x5001df,_0x69b1('0xa'));logger[_0x69b1('0xb')](_0x69b1('0xc'),_0x5001df,_0x69b1('0xa'),JSON[_0x69b1('0xd')](_0x5c9951));if(_0x5c9951[_0x69b1('0xe')]){if(_0x5c9951['error'][_0x69b1('0xf')]===0x1f4){logger[_0x69b1('0xe')](_0x69b1('0x10'),_0x5001df,_0x5c9951[_0x69b1('0xe')][_0x69b1('0x11')]);return _0x38dead(_0x5c9951['error'][_0x69b1('0x11')]);}logger['error'](_0x69b1('0x10'),_0x5001df,_0x5c9951['error']['message']);return _0x1e7a65(_0x5c9951[_0x69b1('0xe')][_0x69b1('0x11')]);}else{logger[_0x69b1('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x5001df,_0x69b1('0xa'));_0x1e7a65(_0x5c9951[_0x69b1('0x13')][_0x69b1('0x11')]);}})[_0x69b1('0x14')](function(_0x146b0b){logger[_0x69b1('0xe')](_0x69b1('0x10'),_0x5001df,_0x146b0b);_0x38dead(_0x146b0b);});});}
\ No newline at end of file
+var _0x4ae3=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','http','request','then','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','code','error','AnalyticMetric,\x20%s,\x20%s','message','info'];(function(_0x2002b3,_0x11e91c){var _0x2756f0=function(_0x4bf0b3){while(--_0x4bf0b3){_0x2002b3['push'](_0x2002b3['shift']());}};_0x2756f0(++_0x11e91c);}(_0x4ae3,0xca));var _0x34ae=function(_0x2c534a,_0x18a19e){_0x2c534a=_0x2c534a-0x0;var _0x3f5c99=_0x4ae3[_0x2c534a];return _0x3f5c99;};'use strict';var _=require(_0x34ae('0x0'));var util=require(_0x34ae('0x1'));var moment=require('moment');var BPromise=require(_0x34ae('0x2'));var rs=require(_0x34ae('0x3'));var fs=require('fs');var Redis=require(_0x34ae('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x34ae('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x34ae('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x32ce87,_0x7190ab,_0x14c479){return new BPromise(function(_0x2975f2,_0x6accd0){return client[_0x34ae('0x7')](_0x32ce87,_0x14c479)[_0x34ae('0x8')](function(_0x4357fe){logger['info']('AnalyticMetric,\x20%s,\x20%s',_0x7190ab,_0x34ae('0x9'));logger[_0x34ae('0xa')](_0x34ae('0xb'),_0x7190ab,_0x34ae('0x9'),JSON[_0x34ae('0xc')](_0x4357fe));if(_0x4357fe['error']){if(_0x4357fe['error'][_0x34ae('0xd')]===0x1f4){logger[_0x34ae('0xe')](_0x34ae('0xf'),_0x7190ab,_0x4357fe['error'][_0x34ae('0x10')]);return _0x6accd0(_0x4357fe['error'][_0x34ae('0x10')]);}logger['error'](_0x34ae('0xf'),_0x7190ab,_0x4357fe[_0x34ae('0xe')][_0x34ae('0x10')]);return _0x2975f2(_0x4357fe['error']['message']);}else{logger[_0x34ae('0x11')](_0x34ae('0xf'),_0x7190ab,_0x34ae('0x9'));_0x2975f2(_0x4357fe[_0x34ae('0x12')][_0x34ae('0x10')]);}})[_0x34ae('0x13')](function(_0x92834f){logger[_0x34ae('0xe')](_0x34ae('0xf'),_0x7190ab,_0x92834f);_0x6accd0(_0x92834f);});});}
\ No newline at end of file
index f9815be..95eb465 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x644f=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','post','create','/:id','update','delete','destroy','util','path','connect-timeout','express','Router'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x644f,0x177));var _0xf644=function(_0x5678b5,_0x1c4aa8){_0x5678b5=_0x5678b5-0x0;var _0x4c09a5=_0x644f[_0x5678b5];return _0x4c09a5;};'use strict';var multer=require('multer');var util=require(_0xf644('0x0'));var path=require(_0xf644('0x1'));var timeout=require(_0xf644('0x2'));var express=require(_0xf644('0x3'));var router=express[_0xf644('0x4')]();var fs_extra=require(_0xf644('0x5'));var auth=require(_0xf644('0x6'));var interaction=require(_0xf644('0x7'));var config=require(_0xf644('0x8'));var controller=require('./analyticMetric.controller');router['get']('/',auth[_0xf644('0x9')](),controller[_0xf644('0xa')]);router[_0xf644('0xb')]('/:id',auth[_0xf644('0x9')](),controller[_0xf644('0xc')]);router[_0xf644('0xd')]('/',auth[_0xf644('0x9')](),controller[_0xf644('0xe')]);router['put'](_0xf644('0xf'),auth[_0xf644('0x9')](),controller[_0xf644('0x10')]);router[_0xf644('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xf644('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x13fe=['index','show','create','put','update','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated'];(function(_0x3cd168,_0xb328b6){var _0xd278b0=function(_0x2135de){while(--_0x2135de){_0x3cd168['push'](_0x3cd168['shift']());}};_0xd278b0(++_0xb328b6);}(_0x13fe,0x138));var _0xe13f=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x13fe[_0xc6be3a];return _0x56a310;};'use strict';var multer=require(_0xe13f('0x0'));var util=require(_0xe13f('0x1'));var path=require(_0xe13f('0x2'));var timeout=require(_0xe13f('0x3'));var express=require(_0xe13f('0x4'));var router=express[_0xe13f('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe13f('0x6'));var interaction=require(_0xe13f('0x7'));var config=require(_0xe13f('0x8'));var controller=require(_0xe13f('0x9'));router[_0xe13f('0xa')]('/',auth[_0xe13f('0xb')](),controller[_0xe13f('0xc')]);router['get']('/:id',auth[_0xe13f('0xb')](),controller[_0xe13f('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe13f('0xe')]);router[_0xe13f('0xf')]('/:id',auth[_0xe13f('0xb')](),controller[_0xe13f('0x10')]);router['delete']('/:id',auth[_0xe13f('0xb')](),controller[_0xe13f('0x11')]);module['exports']=router;
\ No newline at end of file
index c9848d7..1fdc8dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fae=['sequelize','exports','TEXT'];(function(_0x2e9d8e,_0x3a377e){var _0x4dfc9b=function(_0x499ec4){while(--_0x499ec4){_0x2e9d8e['push'](_0x2e9d8e['shift']());}};_0x4dfc9b(++_0x3a377e);}(_0x5fae,0x159));var _0xe5fa=function(_0x3e8662,_0x591bd1){_0x3e8662=_0x3e8662-0x0;var _0xa09455=_0x5fae[_0x3e8662];return _0xa09455;};'use strict';var Sequelize=require(_0xe5fa('0x0'));module[_0xe5fa('0x1')]={'tree':{'type':Sequelize[_0xe5fa('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x0e28=['TEXT','exports'];(function(_0x242ce5,_0x9322b7){var _0xe34da7=function(_0x55f306){while(--_0x55f306){_0x242ce5['push'](_0x242ce5['shift']());}};_0xe34da7(++_0x9322b7);}(_0x0e28,0x12d));var _0x80e2=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x0e28[_0x59ee6f];return _0x4c0979;};'use strict';var Sequelize=require('sequelize');module[_0x80e2('0x0')]={'tree':{'type':Sequelize[_0x80e2('0x1')],'allowNull':![]}};
\ No newline at end of file
index ec9539b..74b7b47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c9b=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','json','apply','save','then','destroy','end','error','stack','name','send','index','map','AnalyticTreeReport','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x103722,_0x18533b){var _0x22f5c8=function(_0x272a8e){while(--_0x272a8e){_0x103722['push'](_0x103722['shift']());}};_0x22f5c8(++_0x18533b);}(_0x4c9b,0x1c6));var _0xb4c9=function(_0x204a52,_0x9f6d1c){_0x204a52=_0x204a52-0x0;var _0x389d2c=_0x4c9b[_0x204a52];return _0x389d2c;};'use strict';var emlformat=require(_0xb4c9('0x0'));var rimraf=require(_0xb4c9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb4c9('0x2'));var rp=require(_0xb4c9('0x3'));var moment=require(_0xb4c9('0x4'));var BPromise=require(_0xb4c9('0x5'));var Mustache=require(_0xb4c9('0x6'));var util=require('util');var path=require(_0xb4c9('0x7'));var sox=require(_0xb4c9('0x8'));var csv=require(_0xb4c9('0x9'));var ejs=require(_0xb4c9('0xa'));var fs=require('fs');var fs_extra=require(_0xb4c9('0xb'));var _=require('lodash');var squel=require(_0xb4c9('0xc'));var crypto=require(_0xb4c9('0xd'));var jsforce=require(_0xb4c9('0xe'));var deskjs=require(_0xb4c9('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb4c9('0x10'));var Papa=require('papaparse');var Redis=require(_0xb4c9('0x11'));var authService=require(_0xb4c9('0x12'));var qs=require(_0xb4c9('0x13'));var as=require(_0xb4c9('0x14'));var hardwareService=require(_0xb4c9('0x15'));var logger=require(_0xb4c9('0x16'))(_0xb4c9('0x17'));var utils=require(_0xb4c9('0x18'));var config=require(_0xb4c9('0x19'));var licenseUtil=require(_0xb4c9('0x1a'));var db=require(_0xb4c9('0x1b'))['db'];function respondWithStatusCode(_0x3e8236,_0x4e96e3){_0x4e96e3=_0x4e96e3||0xcc;return function(_0x5b4496){if(_0x5b4496){return _0x3e8236[_0xb4c9('0x1c')](_0x4e96e3);}return _0x3e8236[_0xb4c9('0x1d')](_0x4e96e3)['end']();};}function respondWithResult(_0x2d8234,_0x31fbec){_0x31fbec=_0x31fbec||0xc8;return function(_0x636dd2){if(_0x636dd2){return _0x2d8234[_0xb4c9('0x1d')](_0x31fbec)['json'](_0x636dd2);}};}function respondWithFilteredResult(_0x1096f0,_0x441ed7){return function(_0x3cffa8){if(_0x3cffa8){var _0x378e97=typeof _0x441ed7['offset']===_0xb4c9('0x1e')&&typeof _0x441ed7[_0xb4c9('0x1f')]===_0xb4c9('0x1e');var _0x410ffb=_0x3cffa8[_0xb4c9('0x20')];var _0xb84390=_0x378e97?0x0:_0x441ed7[_0xb4c9('0x21')];var _0x231aba=_0x378e97?_0x3cffa8[_0xb4c9('0x20')]:_0x441ed7['offset']+_0x441ed7[_0xb4c9('0x1f')];var _0x19f48c;if(_0x231aba>=_0x410ffb){_0x231aba=_0x410ffb;_0x19f48c=0xc8;}else{_0x19f48c=0xce;}_0x1096f0['status'](_0x19f48c);return _0x1096f0[_0xb4c9('0x22')]('Content-Range',_0xb84390+'-'+_0x231aba+'/'+_0x410ffb)[_0xb4c9('0x23')](_0x3cffa8);}return null;};}function patchUpdates(_0x1fa859){return function(_0x5e4ecc){try{jsonpatch[_0xb4c9('0x24')](_0x5e4ecc,_0x1fa859,!![]);}catch(_0x2bddf8){return BPromise['reject'](_0x2bddf8);}return _0x5e4ecc[_0xb4c9('0x25')]();};}function saveUpdates(_0x57c9f4,_0x38960e){return function(_0x500d8f){if(_0x500d8f){return _0x500d8f['update'](_0x57c9f4)[_0xb4c9('0x26')](function(_0x1d5d20){return _0x1d5d20;});}return null;};}function removeEntity(_0x3b6eea,_0x4b446b){return function(_0x2dc6ed){if(_0x2dc6ed){return _0x2dc6ed[_0xb4c9('0x27')]()['then'](function(){_0x3b6eea['status'](0xcc)[_0xb4c9('0x28')]();});}};}function handleEntityNotFound(_0x29e977,_0x34e34c){return function(_0x5f34eb){if(!_0x5f34eb){_0x29e977[_0xb4c9('0x1c')](0x194);}return _0x5f34eb;};}function handleError(_0x4fe143,_0x30176b){_0x30176b=_0x30176b||0x1f4;return function(_0x39b44e){logger[_0xb4c9('0x29')](_0x39b44e[_0xb4c9('0x2a')]);if(_0x39b44e['name']){delete _0x39b44e[_0xb4c9('0x2b')];}_0x4fe143[_0xb4c9('0x1d')](_0x30176b)[_0xb4c9('0x2c')](_0x39b44e);};}exports[_0xb4c9('0x2d')]=function(_0x172535,_0x5f49fb){var _0x220242={},_0x2b2f0e={},_0x40e363={'count':0x0,'rows':[]};var _0x287b2d=_[_0xb4c9('0x2e')](db[_0xb4c9('0x2f')][_0xb4c9('0x30')],function(_0x59e9ce){return{'name':_0x59e9ce['fieldName'],'type':_0x59e9ce['type'][_0xb4c9('0x31')]};});_0x2b2f0e[_0xb4c9('0x32')]=_[_0xb4c9('0x2e')](_0x287b2d,'name');_0x2b2f0e[_0xb4c9('0x33')]=_[_0xb4c9('0x34')](_0x172535['query']);_0x2b2f0e[_0xb4c9('0x35')]=_[_0xb4c9('0x36')](_0x2b2f0e[_0xb4c9('0x32')],_0x2b2f0e['query']);_0x220242[_0xb4c9('0x37')]=_[_0xb4c9('0x36')](_0x2b2f0e['model'],qs[_0xb4c9('0x38')](_0x172535[_0xb4c9('0x33')]['fields']));_0x220242[_0xb4c9('0x37')]=_0x220242['attributes'][_0xb4c9('0x39')]?_0x220242[_0xb4c9('0x37')]:_0x2b2f0e['model'];if(!_0x172535['query'][_0xb4c9('0x3a')](_0xb4c9('0x3b'))){_0x220242[_0xb4c9('0x1f')]=qs[_0xb4c9('0x1f')](_0x172535[_0xb4c9('0x33')][_0xb4c9('0x1f')]);_0x220242[_0xb4c9('0x21')]=qs[_0xb4c9('0x21')](_0x172535[_0xb4c9('0x33')][_0xb4c9('0x21')]);}_0x220242[_0xb4c9('0x3c')]=qs[_0xb4c9('0x3d')](_0x172535[_0xb4c9('0x33')][_0xb4c9('0x3d')]);_0x220242[_0xb4c9('0x3e')]=qs[_0xb4c9('0x35')](_[_0xb4c9('0x3f')](_0x172535[_0xb4c9('0x33')],_0x2b2f0e[_0xb4c9('0x35')]),_0x287b2d);if(_0x172535[_0xb4c9('0x33')][_0xb4c9('0x40')]){_0x220242['where']=_[_0xb4c9('0x41')](_0x220242[_0xb4c9('0x3e')],{'$or':_['map'](_0x287b2d,function(_0x3e0b25){if(_0x3e0b25[_0xb4c9('0x42')]!==_0xb4c9('0x43')){var _0x3caa9f={};_0x3caa9f[_0x3e0b25['name']]={'$like':'%'+_0x172535['query'][_0xb4c9('0x40')]+'%'};return _0x3caa9f;}})});}_0x220242=_[_0xb4c9('0x41')]({},_0x220242,_0x172535[_0xb4c9('0x44')]);var _0x1e1834={'where':_0x220242[_0xb4c9('0x3e')]};return db[_0xb4c9('0x2f')][_0xb4c9('0x20')](_0x1e1834)[_0xb4c9('0x26')](function(_0x5100d2){_0x40e363[_0xb4c9('0x20')]=_0x5100d2;if(_0x172535[_0xb4c9('0x33')][_0xb4c9('0x45')]){_0x220242[_0xb4c9('0x46')]=[{'all':!![]}];}return db[_0xb4c9('0x2f')][_0xb4c9('0x47')](_0x220242);})[_0xb4c9('0x26')](function(_0x5ebcb5){_0x40e363[_0xb4c9('0x48')]=_0x5ebcb5;return _0x40e363;})[_0xb4c9('0x26')](respondWithFilteredResult(_0x5f49fb,_0x220242))[_0xb4c9('0x49')](handleError(_0x5f49fb,null));};exports[_0xb4c9('0x4a')]=function(_0x454551,_0x28c84a){var _0xd2fcdb={'raw':!![],'where':{'id':_0x454551[_0xb4c9('0x4b')]['id']}},_0x478c04={};_0x478c04[_0xb4c9('0x32')]=_['keys'](db[_0xb4c9('0x2f')][_0xb4c9('0x30')]);_0x478c04[_0xb4c9('0x33')]=_[_0xb4c9('0x34')](_0x454551[_0xb4c9('0x33')]);_0x478c04[_0xb4c9('0x35')]=_[_0xb4c9('0x36')](_0x478c04[_0xb4c9('0x32')],_0x478c04[_0xb4c9('0x33')]);_0xd2fcdb[_0xb4c9('0x37')]=_['intersection'](_0x478c04[_0xb4c9('0x32')],qs['fields'](_0x454551['query']['fields']));_0xd2fcdb['attributes']=_0xd2fcdb[_0xb4c9('0x37')]['length']?_0xd2fcdb[_0xb4c9('0x37')]:_0x478c04[_0xb4c9('0x32')];if(_0x454551[_0xb4c9('0x33')][_0xb4c9('0x45')]){_0xd2fcdb['include']=[{'all':!![]}];}_0xd2fcdb=_[_0xb4c9('0x41')]({},_0xd2fcdb,_0x454551['options']);return db[_0xb4c9('0x2f')][_0xb4c9('0x4c')](_0xd2fcdb)[_0xb4c9('0x26')](handleEntityNotFound(_0x28c84a,null))['then'](respondWithResult(_0x28c84a,null))['catch'](handleError(_0x28c84a,null));};exports['create']=function(_0xe987bb,_0x2f3863){return db[_0xb4c9('0x2f')][_0xb4c9('0x4d')](_0xe987bb['body'],{})[_0xb4c9('0x26')](respondWithResult(_0x2f3863,0xc9))[_0xb4c9('0x49')](handleError(_0x2f3863,null));};exports['update']=function(_0x3b382c,_0x3262e4){if(_0x3b382c[_0xb4c9('0x4e')]['id']){delete _0x3b382c[_0xb4c9('0x4e')]['id'];}return db['AnalyticTreeReport'][_0xb4c9('0x4c')]({'where':{'id':_0x3b382c['params']['id']}})[_0xb4c9('0x26')](handleEntityNotFound(_0x3262e4,null))[_0xb4c9('0x26')](saveUpdates(_0x3b382c[_0xb4c9('0x4e')],null))[_0xb4c9('0x26')](respondWithResult(_0x3262e4,null))[_0xb4c9('0x49')](handleError(_0x3262e4,null));};exports[_0xb4c9('0x27')]=function(_0x26570e,_0x4a932f){return db['AnalyticTreeReport'][_0xb4c9('0x4c')]({'where':{'id':_0x26570e[_0xb4c9('0x4b')]['id']}})[_0xb4c9('0x26')](handleEntityNotFound(_0x4a932f,null))['then'](removeEntity(_0x4a932f,null))['catch'](handleError(_0x4a932f,null));};
\ No newline at end of file
+var _0xae7d=['zip-dir','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','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','json','offset','undefined','count','limit','status','set','Content-Range','apply','update','then','destroy','end','sendStatus','stack','name','index','AnalyticTreeReport','rawAttributes','key','model','map','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','params','find','create','body','eml-format'];(function(_0x3a31fe,_0x2b38e8){var _0x11c235=function(_0x5086d7){while(--_0x5086d7){_0x3a31fe['push'](_0x3a31fe['shift']());}};_0x11c235(++_0x2b38e8);}(_0xae7d,0x123));var _0xdae7=function(_0xe17be8,_0x43c5b0){_0xe17be8=_0xe17be8-0x0;var _0x48bc81=_0xae7d[_0xe17be8];return _0x48bc81;};'use strict';var emlformat=require(_0xdae7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdae7('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdae7('0x2'));var BPromise=require(_0xdae7('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xdae7('0x4'));var sox=require(_0xdae7('0x5'));var csv=require(_0xdae7('0x6'));var ejs=require(_0xdae7('0x7'));var fs=require('fs');var fs_extra=require(_0xdae7('0x8'));var _=require(_0xdae7('0x9'));var squel=require(_0xdae7('0xa'));var crypto=require(_0xdae7('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdae7('0xc'));var toCsv=require(_0xdae7('0x6'));var querystring=require(_0xdae7('0xd'));var Papa=require(_0xdae7('0xe'));var Redis=require(_0xdae7('0xf'));var authService=require(_0xdae7('0x10'));var qs=require(_0xdae7('0x11'));var as=require(_0xdae7('0x12'));var hardwareService=require(_0xdae7('0x13'));var logger=require(_0xdae7('0x14'))(_0xdae7('0x15'));var utils=require(_0xdae7('0x16'));var config=require(_0xdae7('0x17'));var licenseUtil=require(_0xdae7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1619bc,_0x5816b1){_0x5816b1=_0x5816b1||0xcc;return function(_0x491b22){if(_0x491b22){return _0x1619bc['sendStatus'](_0x5816b1);}return _0x1619bc['status'](_0x5816b1)['end']();};}function respondWithResult(_0x110a3e,_0xac746e){_0xac746e=_0xac746e||0xc8;return function(_0x53fd04){if(_0x53fd04){return _0x110a3e['status'](_0xac746e)[_0xdae7('0x19')](_0x53fd04);}};}function respondWithFilteredResult(_0x13d898,_0x536765){return function(_0x1743a3){if(_0x1743a3){var _0x33f7c3=typeof _0x536765[_0xdae7('0x1a')]===_0xdae7('0x1b')&&typeof _0x536765['limit']==='undefined';var _0x3706ee=_0x1743a3[_0xdae7('0x1c')];var _0x16ee18=_0x33f7c3?0x0:_0x536765[_0xdae7('0x1a')];var _0x3e99fd=_0x33f7c3?_0x1743a3[_0xdae7('0x1c')]:_0x536765[_0xdae7('0x1a')]+_0x536765[_0xdae7('0x1d')];var _0x1c70c7;if(_0x3e99fd>=_0x3706ee){_0x3e99fd=_0x3706ee;_0x1c70c7=0xc8;}else{_0x1c70c7=0xce;}_0x13d898[_0xdae7('0x1e')](_0x1c70c7);return _0x13d898[_0xdae7('0x1f')](_0xdae7('0x20'),_0x16ee18+'-'+_0x3e99fd+'/'+_0x3706ee)['json'](_0x1743a3);}return null;};}function patchUpdates(_0x7ccff0){return function(_0x7e9333){try{jsonpatch[_0xdae7('0x21')](_0x7e9333,_0x7ccff0,!![]);}catch(_0x2348c7){return BPromise['reject'](_0x2348c7);}return _0x7e9333['save']();};}function saveUpdates(_0x4f4ff0,_0x484d8e){return function(_0x5c1e02){if(_0x5c1e02){return _0x5c1e02[_0xdae7('0x22')](_0x4f4ff0)[_0xdae7('0x23')](function(_0x4065b4){return _0x4065b4;});}return null;};}function removeEntity(_0x54a5f3,_0x1526e8){return function(_0x12f6f7){if(_0x12f6f7){return _0x12f6f7[_0xdae7('0x24')]()[_0xdae7('0x23')](function(){_0x54a5f3['status'](0xcc)[_0xdae7('0x25')]();});}};}function handleEntityNotFound(_0x4177ea,_0x225360){return function(_0x28cc84){if(!_0x28cc84){_0x4177ea[_0xdae7('0x26')](0x194);}return _0x28cc84;};}function handleError(_0x36591c,_0x5e0dc7){_0x5e0dc7=_0x5e0dc7||0x1f4;return function(_0xb7a21){logger['error'](_0xb7a21[_0xdae7('0x27')]);if(_0xb7a21['name']){delete _0xb7a21[_0xdae7('0x28')];}_0x36591c[_0xdae7('0x1e')](_0x5e0dc7)['send'](_0xb7a21);};}exports[_0xdae7('0x29')]=function(_0x2bb160,_0x32288e){var _0x2a19cf={},_0x6dcbd6={},_0x49dec4={'count':0x0,'rows':[]};var _0x121ad7=_['map'](db[_0xdae7('0x2a')][_0xdae7('0x2b')],function(_0x2eb91d){return{'name':_0x2eb91d['fieldName'],'type':_0x2eb91d['type'][_0xdae7('0x2c')]};});_0x6dcbd6[_0xdae7('0x2d')]=_[_0xdae7('0x2e')](_0x121ad7,'name');_0x6dcbd6['query']=_[_0xdae7('0x2f')](_0x2bb160[_0xdae7('0x30')]);_0x6dcbd6['filters']=_['intersection'](_0x6dcbd6[_0xdae7('0x2d')],_0x6dcbd6[_0xdae7('0x30')]);_0x2a19cf[_0xdae7('0x31')]=_[_0xdae7('0x32')](_0x6dcbd6['model'],qs[_0xdae7('0x33')](_0x2bb160['query']['fields']));_0x2a19cf[_0xdae7('0x31')]=_0x2a19cf['attributes'][_0xdae7('0x34')]?_0x2a19cf[_0xdae7('0x31')]:_0x6dcbd6[_0xdae7('0x2d')];if(!_0x2bb160[_0xdae7('0x30')][_0xdae7('0x35')](_0xdae7('0x36'))){_0x2a19cf[_0xdae7('0x1d')]=qs[_0xdae7('0x1d')](_0x2bb160['query'][_0xdae7('0x1d')]);_0x2a19cf[_0xdae7('0x1a')]=qs[_0xdae7('0x1a')](_0x2bb160[_0xdae7('0x30')][_0xdae7('0x1a')]);}_0x2a19cf[_0xdae7('0x37')]=qs[_0xdae7('0x38')](_0x2bb160[_0xdae7('0x30')][_0xdae7('0x38')]);_0x2a19cf[_0xdae7('0x39')]=qs[_0xdae7('0x3a')](_[_0xdae7('0x3b')](_0x2bb160['query'],_0x6dcbd6['filters']),_0x121ad7);if(_0x2bb160[_0xdae7('0x30')]['filter']){_0x2a19cf[_0xdae7('0x39')]=_[_0xdae7('0x3c')](_0x2a19cf[_0xdae7('0x39')],{'$or':_[_0xdae7('0x2e')](_0x121ad7,function(_0x2c280a){if(_0x2c280a[_0xdae7('0x3d')]!==_0xdae7('0x3e')){var _0x4aa141={};_0x4aa141[_0x2c280a[_0xdae7('0x28')]]={'$like':'%'+_0x2bb160['query'][_0xdae7('0x3f')]+'%'};return _0x4aa141;}})});}_0x2a19cf=_['merge']({},_0x2a19cf,_0x2bb160[_0xdae7('0x40')]);var _0x1fbb8a={'where':_0x2a19cf[_0xdae7('0x39')]};return db[_0xdae7('0x2a')][_0xdae7('0x1c')](_0x1fbb8a)['then'](function(_0x119920){_0x49dec4[_0xdae7('0x1c')]=_0x119920;if(_0x2bb160['query'][_0xdae7('0x41')]){_0x2a19cf[_0xdae7('0x42')]=[{'all':!![]}];}return db[_0xdae7('0x2a')][_0xdae7('0x43')](_0x2a19cf);})['then'](function(_0x5dfbe6){_0x49dec4['rows']=_0x5dfbe6;return _0x49dec4;})['then'](respondWithFilteredResult(_0x32288e,_0x2a19cf))[_0xdae7('0x44')](handleError(_0x32288e,null));};exports['show']=function(_0x5da419,_0x3d2963){var _0x4e583d={'raw':!![],'where':{'id':_0x5da419[_0xdae7('0x45')]['id']}},_0x3ae3e8={};_0x3ae3e8['model']=_[_0xdae7('0x2f')](db['AnalyticTreeReport']['rawAttributes']);_0x3ae3e8['query']=_[_0xdae7('0x2f')](_0x5da419[_0xdae7('0x30')]);_0x3ae3e8[_0xdae7('0x3a')]=_[_0xdae7('0x32')](_0x3ae3e8[_0xdae7('0x2d')],_0x3ae3e8[_0xdae7('0x30')]);_0x4e583d['attributes']=_[_0xdae7('0x32')](_0x3ae3e8[_0xdae7('0x2d')],qs['fields'](_0x5da419['query'][_0xdae7('0x33')]));_0x4e583d[_0xdae7('0x31')]=_0x4e583d[_0xdae7('0x31')]['length']?_0x4e583d['attributes']:_0x3ae3e8[_0xdae7('0x2d')];if(_0x5da419[_0xdae7('0x30')]['includeAll']){_0x4e583d[_0xdae7('0x42')]=[{'all':!![]}];}_0x4e583d=_[_0xdae7('0x3c')]({},_0x4e583d,_0x5da419[_0xdae7('0x40')]);return db['AnalyticTreeReport'][_0xdae7('0x46')](_0x4e583d)[_0xdae7('0x23')](handleEntityNotFound(_0x3d2963,null))[_0xdae7('0x23')](respondWithResult(_0x3d2963,null))[_0xdae7('0x44')](handleError(_0x3d2963,null));};exports[_0xdae7('0x47')]=function(_0x3f7811,_0x352854){return db[_0xdae7('0x2a')][_0xdae7('0x47')](_0x3f7811['body'],{})[_0xdae7('0x23')](respondWithResult(_0x352854,0xc9))[_0xdae7('0x44')](handleError(_0x352854,null));};exports[_0xdae7('0x22')]=function(_0x4035bf,_0x2e1dc3){if(_0x4035bf['body']['id']){delete _0x4035bf[_0xdae7('0x48')]['id'];}return db[_0xdae7('0x2a')]['find']({'where':{'id':_0x4035bf[_0xdae7('0x45')]['id']}})['then'](handleEntityNotFound(_0x2e1dc3,null))[_0xdae7('0x23')](saveUpdates(_0x4035bf[_0xdae7('0x48')],null))[_0xdae7('0x23')](respondWithResult(_0x2e1dc3,null))[_0xdae7('0x44')](handleError(_0x2e1dc3,null));};exports[_0xdae7('0x24')]=function(_0x55a428,_0x17bc7b){return db['AnalyticTreeReport'][_0xdae7('0x46')]({'where':{'id':_0x55a428[_0xdae7('0x45')]['id']}})['then'](handleEntityNotFound(_0x17bc7b,null))['then'](removeEntity(_0x17bc7b,null))[_0xdae7('0x44')](handleError(_0x17bc7b,null));};
\ No newline at end of file
index e905b0b..191b989 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a97=['exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes'];(function(_0x1634d8,_0x201ed9){var _0x218a1f=function(_0x1dede4){while(--_0x1dede4){_0x1634d8['push'](_0x1634d8['shift']());}};_0x218a1f(++_0x201ed9);}(_0x4a97,0x163));var _0x74a9=function(_0x33c70e,_0xd8cb0b){_0x33c70e=_0x33c70e-0x0;var _0x5a33e5=_0x4a97[_0x33c70e];return _0x5a33e5;};'use strict';var _=require(_0x74a9('0x0'));var util=require(_0x74a9('0x1'));var logger=require(_0x74a9('0x2'))(_0x74a9('0x3'));var moment=require('moment');var BPromise=require(_0x74a9('0x4'));var rp=require(_0x74a9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x74a9('0x6'));var config=require(_0x74a9('0x7'));var attributes=require(_0x74a9('0x8'));module[_0x74a9('0x9')]=function(_0x5d32da,_0x33954a){return _0x5d32da[_0x74a9('0xa')](_0x74a9('0xb'),attributes,{'tableName':_0x74a9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e65=['exports','define','AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes'];(function(_0x5ad190,_0xd39c9e){var _0x518ed3=function(_0x57f03a){while(--_0x57f03a){_0x5ad190['push'](_0x5ad190['shift']());}};_0x518ed3(++_0xd39c9e);}(_0x0e65,0x154));var _0x50e6=function(_0xb0a611,_0x53d688){_0xb0a611=_0xb0a611-0x0;var _0x2a800e=_0x0e65[_0xb0a611];return _0x2a800e;};'use strict';var _=require('lodash');var util=require(_0x50e6('0x0'));var logger=require(_0x50e6('0x1'))(_0x50e6('0x2'));var moment=require(_0x50e6('0x3'));var BPromise=require(_0x50e6('0x4'));var rp=require(_0x50e6('0x5'));var fs=require('fs');var path=require(_0x50e6('0x6'));var rimraf=require(_0x50e6('0x7'));var config=require(_0x50e6('0x8'));var attributes=require(_0x50e6('0x9'));module[_0x50e6('0xa')]=function(_0x10bd5d,_0x1d028a){return _0x10bd5d[_0x50e6('0xb')](_0x50e6('0xc'),attributes,{'tableName':_0x50e6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b2b70d..e74f1ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x33f5d5,_0x4ac89e){var _0x397d8c=function(_0x5ab938){while(--_0x5ab938){_0x33f5d5['push'](_0x33f5d5['shift']());}};_0x397d8c(++_0x4ac89e);}(_0x1261,0x144));var _0x1126=function(_0x361e5d,_0x15e1a4){_0x361e5d=_0x361e5d-0x0;var _0x4c303d=_0x1261[_0x361e5d];return _0x4c303d;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
+var _0x5f66=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','stringify','code','message','error','info','catch','util','bluebird','randomstring','ioredis'];(function(_0x4cdd55,_0x25111d){var _0x2f4d62=function(_0x5bda55){while(--_0x5bda55){_0x4cdd55['push'](_0x4cdd55['shift']());}};_0x2f4d62(++_0x25111d);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require('lodash');var util=require(_0x65f6('0x0'));var moment=require('moment');var BPromise=require(_0x65f6('0x1'));var rs=require(_0x65f6('0x2'));var fs=require('fs');var Redis=require(_0x65f6('0x3'));var db=require(_0x65f6('0x4'))['db'];var utils=require(_0x65f6('0x5'));var logger=require('../../config/logger')(_0x65f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x65f6('0x7'));var client=jayson[_0x65f6('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4ed98f,_0x1c0e12,_0x2c6571){return new BPromise(function(_0x112079,_0x8f6451){return client[_0x65f6('0x9')](_0x4ed98f,_0x2c6571)[_0x65f6('0xa')](function(_0x48d85c){logger['info'](_0x65f6('0xb'),_0x1c0e12,_0x65f6('0xc'));logger[_0x65f6('0xd')](_0x65f6('0xe'),_0x1c0e12,'request\x20sent',JSON[_0x65f6('0xf')](_0x48d85c));if(_0x48d85c['error']){if(_0x48d85c['error'][_0x65f6('0x10')]===0x1f4){logger['error'](_0x65f6('0xb'),_0x1c0e12,_0x48d85c['error'][_0x65f6('0x11')]);return _0x8f6451(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);return _0x112079(_0x48d85c[_0x65f6('0x12')][_0x65f6('0x11')]);}else{logger[_0x65f6('0x13')]('AnalyticTreeReport,\x20%s,\x20%s',_0x1c0e12,_0x65f6('0xc'));_0x112079(_0x48d85c['result']['message']);}})[_0x65f6('0x14')](function(_0x5c69f8){logger[_0x65f6('0x12')](_0x65f6('0xb'),_0x1c0e12,_0x5c69f8);_0x8f6451(_0x5c69f8);});});}
\ No newline at end of file
index 4ee07a2..081013a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31d4=['multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','post','create','put','update','/:id','destroy','exports'];(function(_0x6204d8,_0x3b0d2c){var _0x3b0910=function(_0x351104){while(--_0x351104){_0x6204d8['push'](_0x6204d8['shift']());}};_0x3b0910(++_0x3b0d2c);}(_0x31d4,0x6c));var _0x431d=function(_0x324f7d,_0x3a0184){_0x324f7d=_0x324f7d-0x0;var _0x158d1e=_0x31d4[_0x324f7d];return _0x158d1e;};'use strict';var multer=require(_0x431d('0x0'));var util=require(_0x431d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x431d('0x2')]();var fs_extra=require(_0x431d('0x3'));var auth=require(_0x431d('0x4'));var interaction=require(_0x431d('0x5'));var config=require(_0x431d('0x6'));var controller=require('./analyticTreeReport.controller');router[_0x431d('0x7')]('/',auth['isAuthenticated'](),controller[_0x431d('0x8')]);router[_0x431d('0x7')]('/:id',auth[_0x431d('0x9')](),controller[_0x431d('0xa')]);router[_0x431d('0xb')]('/',auth['isAuthenticated'](),controller[_0x431d('0xc')]);router[_0x431d('0xd')]('/:id',auth[_0x431d('0x9')](),controller[_0x431d('0xe')]);router['delete'](_0x431d('0xf'),auth[_0x431d('0x9')](),controller[_0x431d('0x10')]);module[_0x431d('0x11')]=router;
\ No newline at end of file
+var _0x94fa=['index','/:id','show','post','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated'];(function(_0x47f551,_0x4ea97f){var _0x100233=function(_0x1a1726){while(--_0x1a1726){_0x47f551['push'](_0x47f551['shift']());}};_0x100233(++_0x4ea97f);}(_0x94fa,0x104));var _0xa94f=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x94fa[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0xa94f('0x0'));var util=require(_0xa94f('0x1'));var path=require(_0xa94f('0x2'));var timeout=require(_0xa94f('0x3'));var express=require(_0xa94f('0x4'));var router=express[_0xa94f('0x5')]();var fs_extra=require(_0xa94f('0x6'));var auth=require(_0xa94f('0x7'));var interaction=require(_0xa94f('0x8'));var config=require(_0xa94f('0x9'));var controller=require(_0xa94f('0xa'));router[_0xa94f('0xb')]('/',auth[_0xa94f('0xc')](),controller[_0xa94f('0xd')]);router[_0xa94f('0xb')](_0xa94f('0xe'),auth['isAuthenticated'](),controller[_0xa94f('0xf')]);router[_0xa94f('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa94f('0x11')](_0xa94f('0xe'),auth[_0xa94f('0xc')](),controller[_0xa94f('0x12')]);router[_0xa94f('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xa94f('0x14')]);module['exports']=router;
\ No newline at end of file
index 9855c00..105afd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd382=['sequelize','exports','STRING'];(function(_0x2a6d45,_0x3c9321){var _0x295253=function(_0x51d622){while(--_0x51d622){_0x2a6d45['push'](_0x2a6d45['shift']());}};_0x295253(++_0x3c9321);}(_0xd382,0x1b6));var _0x2d38=function(_0x20d781,_0x50bdfe){_0x20d781=_0x20d781-0x0;var _0x270932=_0xd382[_0x20d781];return _0x270932;};'use strict';var Sequelize=require(_0x2d38('0x0'));module[_0x2d38('0x1')]={'name':{'type':Sequelize[_0x2d38('0x2')]},'basename':{'type':Sequelize[_0x2d38('0x2')]},'type':{'type':Sequelize[_0x2d38('0x2')]}};
\ No newline at end of file
+var _0xe43c=['sequelize','exports','STRING'];(function(_0xb80049,_0x442f7d){var _0x4ece41=function(_0x571734){while(--_0x571734){_0xb80049['push'](_0xb80049['shift']());}};_0x4ece41(++_0x442f7d);}(_0xe43c,0x180));var _0xce43=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xe43c[_0x5f1391];return _0x50ebe3;};'use strict';var Sequelize=require(_0xce43('0x0'));module[_0xce43('0x1')]={'name':{'type':Sequelize[_0xce43('0x2')]},'basename':{'type':Sequelize[_0xce43('0x2')]},'type':{'type':Sequelize[_0xce43('0x2')]}};
\ No newline at end of file
index 8a4b1b3..1e985b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69bf=['update','then','destroy','error','stack','name','send','index','Attachment','fieldName','type','key','model','map','keys','query','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','VIRTUAL','merge','options','includeAll','include','catch','show','params','rawAttributes','intersection','find','get','omit','createdAt','updatedAt','create','body','file','originalname','basename','filename','mimetype','download','findOne','server/files/attachments/','join','offline-chat/','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject'];(function(_0x511bd1,_0x223e5b){var _0x4c48ec=function(_0x31814e){while(--_0x31814e){_0x511bd1['push'](_0x511bd1['shift']());}};_0x4c48ec(++_0x223e5b);}(_0x69bf,0x136));var _0xf69b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x69bf[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xf69b('0x0'));var rimraf=require(_0xf69b('0x1'));var zipdir=require(_0xf69b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf69b('0x3'));var moment=require(_0xf69b('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf69b('0x5'));var util=require(_0xf69b('0x6'));var path=require('path');var sox=require(_0xf69b('0x7'));var csv=require(_0xf69b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf69b('0x9'));var _=require('lodash');var squel=require(_0xf69b('0xa'));var crypto=require(_0xf69b('0xb'));var jsforce=require(_0xf69b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xf69b('0x8'));var querystring=require(_0xf69b('0xd'));var Papa=require(_0xf69b('0xe'));var Redis=require(_0xf69b('0xf'));var authService=require(_0xf69b('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xf69b('0x11'));var hardwareService=require(_0xf69b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xf69b('0x13'));var config=require(_0xf69b('0x14'));var licenseUtil=require(_0xf69b('0x15'));var db=require(_0xf69b('0x16'))['db'];function respondWithStatusCode(_0x5352a3,_0x525965){_0x525965=_0x525965||0xcc;return function(_0x1812e1){if(_0x1812e1){return _0x5352a3[_0xf69b('0x17')](_0x525965);}return _0x5352a3[_0xf69b('0x18')](_0x525965)[_0xf69b('0x19')]();};}function respondWithResult(_0x6586ae,_0x323ce2){_0x323ce2=_0x323ce2||0xc8;return function(_0x2a9144){if(_0x2a9144){return _0x6586ae[_0xf69b('0x18')](_0x323ce2)[_0xf69b('0x1a')](_0x2a9144);}};}function respondWithFilteredResult(_0x18c73e,_0x3721e4){return function(_0x378d8b){if(_0x378d8b){var _0x10c110=typeof _0x3721e4['offset']===_0xf69b('0x1b')&&typeof _0x3721e4[_0xf69b('0x1c')]==='undefined';var _0x1c1229=_0x378d8b[_0xf69b('0x1d')];var _0x817052=_0x10c110?0x0:_0x3721e4[_0xf69b('0x1e')];var _0x1aab1b=_0x10c110?_0x378d8b[_0xf69b('0x1d')]:_0x3721e4[_0xf69b('0x1e')]+_0x3721e4[_0xf69b('0x1c')];var _0x50df12;if(_0x1aab1b>=_0x1c1229){_0x1aab1b=_0x1c1229;_0x50df12=0xc8;}else{_0x50df12=0xce;}_0x18c73e[_0xf69b('0x18')](_0x50df12);return _0x18c73e[_0xf69b('0x1f')](_0xf69b('0x20'),_0x817052+'-'+_0x1aab1b+'/'+_0x1c1229)[_0xf69b('0x1a')](_0x378d8b);}return null;};}function patchUpdates(_0x5e6ef4){return function(_0x8425e0){try{jsonpatch['apply'](_0x8425e0,_0x5e6ef4,!![]);}catch(_0x12eb59){return BPromise[_0xf69b('0x21')](_0x12eb59);}return _0x8425e0['save']();};}function saveUpdates(_0x1bd827,_0x551ad7){return function(_0x49400c){if(_0x49400c){return _0x49400c[_0xf69b('0x22')](_0x1bd827)[_0xf69b('0x23')](function(_0x238e80){return _0x238e80;});}return null;};}function removeEntity(_0x1dea28,_0x125fc7){return function(_0xb2f4e7){if(_0xb2f4e7){return _0xb2f4e7[_0xf69b('0x24')]()[_0xf69b('0x23')](function(){_0x1dea28[_0xf69b('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x185458,_0x37a7cc){return function(_0x2ba07a){if(!_0x2ba07a){_0x185458[_0xf69b('0x17')](0x194);}return _0x2ba07a;};}function handleError(_0x59628a,_0x294483){_0x294483=_0x294483||0x1f4;return function(_0x4a08d1){logger[_0xf69b('0x25')](_0x4a08d1[_0xf69b('0x26')]);if(_0x4a08d1[_0xf69b('0x27')]){delete _0x4a08d1['name'];}_0x59628a[_0xf69b('0x18')](_0x294483)[_0xf69b('0x28')](_0x4a08d1);};}exports[_0xf69b('0x29')]=function(_0x1f0229,_0x4d137a){var _0x34a4d3={},_0x4fb793={},_0x15340f={'count':0x0,'rows':[]};var _0x226239=_['map'](db[_0xf69b('0x2a')]['rawAttributes'],function(_0x9f5b8d){return{'name':_0x9f5b8d[_0xf69b('0x2b')],'type':_0x9f5b8d[_0xf69b('0x2c')][_0xf69b('0x2d')]};});_0x4fb793[_0xf69b('0x2e')]=_[_0xf69b('0x2f')](_0x226239,_0xf69b('0x27'));_0x4fb793['query']=_[_0xf69b('0x30')](_0x1f0229[_0xf69b('0x31')]);_0x4fb793['filters']=_['intersection'](_0x4fb793[_0xf69b('0x2e')],_0x4fb793[_0xf69b('0x31')]);_0x34a4d3[_0xf69b('0x32')]=_['intersection'](_0x4fb793['model'],qs[_0xf69b('0x33')](_0x1f0229[_0xf69b('0x31')][_0xf69b('0x33')]));_0x34a4d3[_0xf69b('0x32')]=_0x34a4d3[_0xf69b('0x32')][_0xf69b('0x34')]?_0x34a4d3[_0xf69b('0x32')]:_0x4fb793[_0xf69b('0x2e')];if(!_0x1f0229['query'][_0xf69b('0x35')](_0xf69b('0x36'))){_0x34a4d3[_0xf69b('0x1c')]=qs['limit'](_0x1f0229[_0xf69b('0x31')][_0xf69b('0x1c')]);_0x34a4d3[_0xf69b('0x1e')]=qs[_0xf69b('0x1e')](_0x1f0229[_0xf69b('0x31')][_0xf69b('0x1e')]);}_0x34a4d3['order']=qs[_0xf69b('0x37')](_0x1f0229[_0xf69b('0x31')][_0xf69b('0x37')]);_0x34a4d3['where']=qs[_0xf69b('0x38')](_['pick'](_0x1f0229[_0xf69b('0x31')],_0x4fb793[_0xf69b('0x38')]),_0x226239);if(_0x1f0229[_0xf69b('0x31')][_0xf69b('0x39')]){_0x34a4d3[_0xf69b('0x3a')]=_['merge'](_0x34a4d3[_0xf69b('0x3a')],{'$or':_[_0xf69b('0x2f')](_0x226239,function(_0x442640){if(_0x442640[_0xf69b('0x2c')]!==_0xf69b('0x3b')){var _0x1a9452={};_0x1a9452[_0x442640['name']]={'$like':'%'+_0x1f0229[_0xf69b('0x31')][_0xf69b('0x39')]+'%'};return _0x1a9452;}})});}_0x34a4d3=_[_0xf69b('0x3c')]({},_0x34a4d3,_0x1f0229[_0xf69b('0x3d')]);var _0x3dbb77={'where':_0x34a4d3[_0xf69b('0x3a')]};return db[_0xf69b('0x2a')][_0xf69b('0x1d')](_0x3dbb77)[_0xf69b('0x23')](function(_0x24fc8e){_0x15340f[_0xf69b('0x1d')]=_0x24fc8e;if(_0x1f0229[_0xf69b('0x31')][_0xf69b('0x3e')]){_0x34a4d3[_0xf69b('0x3f')]=[{'all':!![]}];}return db[_0xf69b('0x2a')]['findAll'](_0x34a4d3);})['then'](function(_0x52c67f){_0x15340f['rows']=_0x52c67f;return _0x15340f;})[_0xf69b('0x23')](respondWithFilteredResult(_0x4d137a,_0x34a4d3))[_0xf69b('0x40')](handleError(_0x4d137a,null));};exports[_0xf69b('0x41')]=function(_0x4cdaf7,_0x439838){var _0x4c69ea={'raw':!![],'where':{'id':_0x4cdaf7[_0xf69b('0x42')]['id']}},_0x287e46={};_0x287e46[_0xf69b('0x2e')]=_[_0xf69b('0x30')](db[_0xf69b('0x2a')][_0xf69b('0x43')]);_0x287e46[_0xf69b('0x31')]=_['keys'](_0x4cdaf7[_0xf69b('0x31')]);_0x287e46[_0xf69b('0x38')]=_[_0xf69b('0x44')](_0x287e46[_0xf69b('0x2e')],_0x287e46[_0xf69b('0x31')]);_0x4c69ea[_0xf69b('0x32')]=_[_0xf69b('0x44')](_0x287e46[_0xf69b('0x2e')],qs[_0xf69b('0x33')](_0x4cdaf7[_0xf69b('0x31')]['fields']));_0x4c69ea['attributes']=_0x4c69ea[_0xf69b('0x32')][_0xf69b('0x34')]?_0x4c69ea['attributes']:_0x287e46['model'];if(_0x4cdaf7[_0xf69b('0x31')]['includeAll']){_0x4c69ea['include']=[{'all':!![]}];}_0x4c69ea=_['merge']({},_0x4c69ea,_0x4cdaf7[_0xf69b('0x3d')]);return db[_0xf69b('0x2a')]['find'](_0x4c69ea)[_0xf69b('0x23')](handleEntityNotFound(_0x439838,null))[_0xf69b('0x23')](respondWithResult(_0x439838,null))[_0xf69b('0x40')](handleError(_0x439838,null));};exports['clone']=function(_0x4b14f8,_0x593eb1){var _0x24e601={'where':{'id':_0x4b14f8[_0xf69b('0x42')]['id']}},_0x332790={};_0x332790[_0xf69b('0x2e')]=_['keys'](db['Attachment'][_0xf69b('0x43')]);_0x24e601[_0xf69b('0x32')]=_[_0xf69b('0x44')](_0x332790['model'],qs['fields'](_0x4b14f8['query'][_0xf69b('0x33')]));_0x24e601['attributes']=_0x24e601[_0xf69b('0x32')][_0xf69b('0x34')]?_0x24e601[_0xf69b('0x32')]:_0x332790['model'];if(_0x4b14f8[_0xf69b('0x31')]['includeAll']){_0x24e601[_0xf69b('0x3f')]=[{'all':!![]}];}_0x24e601=_[_0xf69b('0x3c')]({},_0x24e601,_0x4b14f8[_0xf69b('0x3d')]);return db[_0xf69b('0x2a')][_0xf69b('0x45')](_0x24e601)[_0xf69b('0x23')](handleEntityNotFound(_0x593eb1,null))['then'](function(_0x1e5514){if(_0x1e5514){var _0x31f952=_0x1e5514[_0xf69b('0x46')]({'plain':!![]});_0x31f952=qs[_0xf69b('0x47')](_0x31f952,['id',_0xf69b('0x48'),_0xf69b('0x49')]);_0x4b14f8['body']=_['omit'](_0x4b14f8['body'],['id',_0xf69b('0x48'),_0xf69b('0x49')]);return db[_0xf69b('0x2a')][_0xf69b('0x4a')](_['merge'](_0x31f952,_0x4b14f8[_0xf69b('0x4b')]),{'include':_0x4b14f8[_0xf69b('0x31')][_0xf69b('0x3e')]?[{'all':!![]}]:undefined});}})[_0xf69b('0x23')](respondWithResult(_0x593eb1,0xc9))['catch'](handleError(_0x593eb1,null));};exports[_0xf69b('0x22')]=function(_0x403f85,_0x4dcc9c){if(_0x403f85[_0xf69b('0x4b')]['id']){delete _0x403f85['body']['id'];}return db[_0xf69b('0x2a')][_0xf69b('0x45')]({'where':{'id':_0x403f85[_0xf69b('0x42')]['id']}})[_0xf69b('0x23')](handleEntityNotFound(_0x4dcc9c,null))[_0xf69b('0x23')](saveUpdates(_0x403f85['body'],null))[_0xf69b('0x23')](respondWithResult(_0x4dcc9c,null))['catch'](handleError(_0x4dcc9c,null));};exports[_0xf69b('0x24')]=function(_0x28a76e,_0x21a97f){return db[_0xf69b('0x2a')][_0xf69b('0x45')]({'where':{'id':_0x28a76e['params']['id']}})[_0xf69b('0x23')](handleEntityNotFound(_0x21a97f,null))[_0xf69b('0x23')](removeEntity(_0x21a97f,null))[_0xf69b('0x40')](handleError(_0x21a97f,null));};exports['create']=function(_0x431d16,_0x37211f,_0x4a781c){_0x431d16[_0xf69b('0x4b')][_0xf69b('0x27')]=_0x431d16[_0xf69b('0x4c')][_0xf69b('0x4d')];_0x431d16[_0xf69b('0x4b')][_0xf69b('0x4e')]=_0x431d16['file'][_0xf69b('0x4f')];_0x431d16['body'][_0xf69b('0x2c')]=_0x431d16[_0xf69b('0x4c')][_0xf69b('0x50')];return db['Attachment'][_0xf69b('0x4a')](_0x431d16[_0xf69b('0x4b')])[_0xf69b('0x23')](respondWithResult(_0x37211f,0xc9))[_0xf69b('0x40')](handleError(_0x37211f,null));};exports[_0xf69b('0x51')]=function(_0x1b0af4,_0xca2b9e,_0x20c01f){return db['Attachment'][_0xf69b('0x52')]({'where':{'id':_0x1b0af4[_0xf69b('0x42')]['id']},'raw':!![]})[_0xf69b('0x23')](handleEntityNotFound(_0xca2b9e,null))[_0xf69b('0x23')](function(_0x145c59){if(_0x145c59){var _0x3770d5=_0x145c59['ChatOfflineMessageId']!==null;var _0x4dead5=path['join'](config['root'],_0xf69b('0x53'));if(_0x3770d5){_0x4dead5=path[_0xf69b('0x54')](_0x4dead5,_0xf69b('0x55'));}var _0x851adb=path['join'](_0x4dead5,_0x145c59[_0xf69b('0x4e')]);return _0xca2b9e[_0xf69b('0x51')](_0x851adb);}})[_0xf69b('0x40')](handleError(_0xca2b9e,null));};
\ No newline at end of file
+var _0xfca3=['hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','merge','includeAll','include','findAll','rows','catch','show','params','options','clone','find','get','omit','updatedAt','body','create','file','mimetype','download','findOne','join','root','server/files/attachments/','offline-chat/','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','destroy','sendStatus','error','stack','name','send','index','map','Attachment','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','length'];(function(_0x3da6ae,_0x13fdf4){var _0x1aa8df=function(_0xaac51){while(--_0xaac51){_0x3da6ae['push'](_0x3da6ae['shift']());}};_0x1aa8df(++_0x13fdf4);}(_0xfca3,0x1ee));var _0x3fca=function(_0x45e392,_0x4241bb){_0x45e392=_0x45e392-0x0;var _0x585b85=_0xfca3[_0x45e392];return _0x585b85;};'use strict';var emlformat=require(_0x3fca('0x0'));var rimraf=require(_0x3fca('0x1'));var zipdir=require(_0x3fca('0x2'));var jsonpatch=require(_0x3fca('0x3'));var rp=require(_0x3fca('0x4'));var moment=require(_0x3fca('0x5'));var BPromise=require(_0x3fca('0x6'));var Mustache=require('mustache');var util=require(_0x3fca('0x7'));var path=require(_0x3fca('0x8'));var sox=require(_0x3fca('0x9'));var csv=require('to-csv');var ejs=require(_0x3fca('0xa'));var fs=require('fs');var fs_extra=require(_0x3fca('0xb'));var _=require(_0x3fca('0xc'));var squel=require(_0x3fca('0xd'));var crypto=require(_0x3fca('0xe'));var jsforce=require(_0x3fca('0xf'));var deskjs=require(_0x3fca('0x10'));var toCsv=require(_0x3fca('0x11'));var querystring=require(_0x3fca('0x12'));var Papa=require(_0x3fca('0x13'));var Redis=require(_0x3fca('0x14'));var authService=require(_0x3fca('0x15'));var qs=require(_0x3fca('0x16'));var as=require(_0x3fca('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3fca('0x18'))(_0x3fca('0x19'));var utils=require('../../config/utils');var config=require(_0x3fca('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x228982,_0x5d7f77){_0x5d7f77=_0x5d7f77||0xcc;return function(_0x424280){if(_0x424280){return _0x228982['sendStatus'](_0x5d7f77);}return _0x228982[_0x3fca('0x1b')](_0x5d7f77)[_0x3fca('0x1c')]();};}function respondWithResult(_0x46f2f0,_0x563a5a){_0x563a5a=_0x563a5a||0xc8;return function(_0x1586dc){if(_0x1586dc){return _0x46f2f0['status'](_0x563a5a)[_0x3fca('0x1d')](_0x1586dc);}};}function respondWithFilteredResult(_0x57c7cc,_0x2e80b8){return function(_0x83dfba){if(_0x83dfba){var _0x24a636=typeof _0x2e80b8['offset']===_0x3fca('0x1e')&&typeof _0x2e80b8[_0x3fca('0x1f')]==='undefined';var _0x4c4315=_0x83dfba[_0x3fca('0x20')];var _0x3ab131=_0x24a636?0x0:_0x2e80b8[_0x3fca('0x21')];var _0x3bf17e=_0x24a636?_0x83dfba[_0x3fca('0x20')]:_0x2e80b8[_0x3fca('0x21')]+_0x2e80b8[_0x3fca('0x1f')];var _0xfd0919;if(_0x3bf17e>=_0x4c4315){_0x3bf17e=_0x4c4315;_0xfd0919=0xc8;}else{_0xfd0919=0xce;}_0x57c7cc[_0x3fca('0x1b')](_0xfd0919);return _0x57c7cc[_0x3fca('0x22')](_0x3fca('0x23'),_0x3ab131+'-'+_0x3bf17e+'/'+_0x4c4315)['json'](_0x83dfba);}return null;};}function patchUpdates(_0x487122){return function(_0x5c802d){try{jsonpatch[_0x3fca('0x24')](_0x5c802d,_0x487122,!![]);}catch(_0x5a46a0){return BPromise['reject'](_0x5a46a0);}return _0x5c802d['save']();};}function saveUpdates(_0x4be6fc,_0x3c680d){return function(_0x3d2785){if(_0x3d2785){return _0x3d2785[_0x3fca('0x25')](_0x4be6fc)[_0x3fca('0x26')](function(_0x8dc359){return _0x8dc359;});}return null;};}function removeEntity(_0x236582,_0x13f097){return function(_0x10ead3){if(_0x10ead3){return _0x10ead3[_0x3fca('0x27')]()[_0x3fca('0x26')](function(){_0x236582[_0x3fca('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x19cb36,_0x1a2ee8){return function(_0xdfe4a){if(!_0xdfe4a){_0x19cb36[_0x3fca('0x28')](0x194);}return _0xdfe4a;};}function handleError(_0x1d8997,_0x110c28){_0x110c28=_0x110c28||0x1f4;return function(_0x50a668){logger[_0x3fca('0x29')](_0x50a668[_0x3fca('0x2a')]);if(_0x50a668[_0x3fca('0x2b')]){delete _0x50a668[_0x3fca('0x2b')];}_0x1d8997['status'](_0x110c28)[_0x3fca('0x2c')](_0x50a668);};}exports[_0x3fca('0x2d')]=function(_0x450ae1,_0x140246){var _0x56ae9d={},_0x3cb031={},_0x509d2d={'count':0x0,'rows':[]};var _0x3dc16f=_[_0x3fca('0x2e')](db[_0x3fca('0x2f')][_0x3fca('0x30')],function(_0x1f6ef6){return{'name':_0x1f6ef6[_0x3fca('0x31')],'type':_0x1f6ef6['type'][_0x3fca('0x32')]};});_0x3cb031[_0x3fca('0x33')]=_['map'](_0x3dc16f,_0x3fca('0x2b'));_0x3cb031[_0x3fca('0x34')]=_[_0x3fca('0x35')](_0x450ae1[_0x3fca('0x34')]);_0x3cb031['filters']=_[_0x3fca('0x36')](_0x3cb031[_0x3fca('0x33')],_0x3cb031['query']);_0x56ae9d['attributes']=_[_0x3fca('0x36')](_0x3cb031[_0x3fca('0x33')],qs['fields'](_0x450ae1['query'][_0x3fca('0x37')]));_0x56ae9d[_0x3fca('0x38')]=_0x56ae9d[_0x3fca('0x38')][_0x3fca('0x39')]?_0x56ae9d[_0x3fca('0x38')]:_0x3cb031[_0x3fca('0x33')];if(!_0x450ae1['query'][_0x3fca('0x3a')](_0x3fca('0x3b'))){_0x56ae9d[_0x3fca('0x1f')]=qs[_0x3fca('0x1f')](_0x450ae1[_0x3fca('0x34')][_0x3fca('0x1f')]);_0x56ae9d[_0x3fca('0x21')]=qs['offset'](_0x450ae1['query']['offset']);}_0x56ae9d[_0x3fca('0x3c')]=qs[_0x3fca('0x3d')](_0x450ae1[_0x3fca('0x34')][_0x3fca('0x3d')]);_0x56ae9d[_0x3fca('0x3e')]=qs[_0x3fca('0x3f')](_[_0x3fca('0x40')](_0x450ae1['query'],_0x3cb031[_0x3fca('0x3f')]),_0x3dc16f);if(_0x450ae1['query'][_0x3fca('0x41')]){_0x56ae9d[_0x3fca('0x3e')]=_['merge'](_0x56ae9d[_0x3fca('0x3e')],{'$or':_[_0x3fca('0x2e')](_0x3dc16f,function(_0x386574){if(_0x386574[_0x3fca('0x42')]!=='VIRTUAL'){var _0xc619d4={};_0xc619d4[_0x386574['name']]={'$like':'%'+_0x450ae1[_0x3fca('0x34')][_0x3fca('0x41')]+'%'};return _0xc619d4;}})});}_0x56ae9d=_[_0x3fca('0x43')]({},_0x56ae9d,_0x450ae1['options']);var _0x13f1bb={'where':_0x56ae9d[_0x3fca('0x3e')]};return db['Attachment']['count'](_0x13f1bb)['then'](function(_0x9ff020){_0x509d2d[_0x3fca('0x20')]=_0x9ff020;if(_0x450ae1[_0x3fca('0x34')][_0x3fca('0x44')]){_0x56ae9d[_0x3fca('0x45')]=[{'all':!![]}];}return db['Attachment'][_0x3fca('0x46')](_0x56ae9d);})['then'](function(_0x450f78){_0x509d2d[_0x3fca('0x47')]=_0x450f78;return _0x509d2d;})[_0x3fca('0x26')](respondWithFilteredResult(_0x140246,_0x56ae9d))[_0x3fca('0x48')](handleError(_0x140246,null));};exports[_0x3fca('0x49')]=function(_0xd37613,_0xdab028){var _0x25c87e={'raw':!![],'where':{'id':_0xd37613[_0x3fca('0x4a')]['id']}},_0x19277a={};_0x19277a['model']=_[_0x3fca('0x35')](db[_0x3fca('0x2f')][_0x3fca('0x30')]);_0x19277a[_0x3fca('0x34')]=_[_0x3fca('0x35')](_0xd37613['query']);_0x19277a[_0x3fca('0x3f')]=_[_0x3fca('0x36')](_0x19277a[_0x3fca('0x33')],_0x19277a[_0x3fca('0x34')]);_0x25c87e['attributes']=_[_0x3fca('0x36')](_0x19277a[_0x3fca('0x33')],qs[_0x3fca('0x37')](_0xd37613[_0x3fca('0x34')]['fields']));_0x25c87e[_0x3fca('0x38')]=_0x25c87e[_0x3fca('0x38')][_0x3fca('0x39')]?_0x25c87e[_0x3fca('0x38')]:_0x19277a[_0x3fca('0x33')];if(_0xd37613[_0x3fca('0x34')][_0x3fca('0x44')]){_0x25c87e[_0x3fca('0x45')]=[{'all':!![]}];}_0x25c87e=_[_0x3fca('0x43')]({},_0x25c87e,_0xd37613[_0x3fca('0x4b')]);return db['Attachment']['find'](_0x25c87e)[_0x3fca('0x26')](handleEntityNotFound(_0xdab028,null))[_0x3fca('0x26')](respondWithResult(_0xdab028,null))['catch'](handleError(_0xdab028,null));};exports[_0x3fca('0x4c')]=function(_0x291a9c,_0x525cde){var _0x143280={'where':{'id':_0x291a9c[_0x3fca('0x4a')]['id']}},_0x39f8cb={};_0x39f8cb[_0x3fca('0x33')]=_[_0x3fca('0x35')](db['Attachment'][_0x3fca('0x30')]);_0x143280[_0x3fca('0x38')]=_[_0x3fca('0x36')](_0x39f8cb['model'],qs[_0x3fca('0x37')](_0x291a9c['query'][_0x3fca('0x37')]));_0x143280[_0x3fca('0x38')]=_0x143280[_0x3fca('0x38')][_0x3fca('0x39')]?_0x143280[_0x3fca('0x38')]:_0x39f8cb['model'];if(_0x291a9c[_0x3fca('0x34')]['includeAll']){_0x143280[_0x3fca('0x45')]=[{'all':!![]}];}_0x143280=_[_0x3fca('0x43')]({},_0x143280,_0x291a9c[_0x3fca('0x4b')]);return db[_0x3fca('0x2f')][_0x3fca('0x4d')](_0x143280)[_0x3fca('0x26')](handleEntityNotFound(_0x525cde,null))['then'](function(_0x5ab4e5){if(_0x5ab4e5){var _0x5b2fcf=_0x5ab4e5[_0x3fca('0x4e')]({'plain':!![]});_0x5b2fcf=qs[_0x3fca('0x4f')](_0x5b2fcf,['id','createdAt',_0x3fca('0x50')]);_0x291a9c['body']=_[_0x3fca('0x4f')](_0x291a9c['body'],['id','createdAt','updatedAt']);return db[_0x3fca('0x2f')]['create'](_[_0x3fca('0x43')](_0x5b2fcf,_0x291a9c[_0x3fca('0x51')]),{'include':_0x291a9c[_0x3fca('0x34')]['includeAll']?[{'all':!![]}]:undefined});}})[_0x3fca('0x26')](respondWithResult(_0x525cde,0xc9))[_0x3fca('0x48')](handleError(_0x525cde,null));};exports[_0x3fca('0x25')]=function(_0x4408e4,_0xde3305){if(_0x4408e4[_0x3fca('0x51')]['id']){delete _0x4408e4[_0x3fca('0x51')]['id'];}return db[_0x3fca('0x2f')][_0x3fca('0x4d')]({'where':{'id':_0x4408e4[_0x3fca('0x4a')]['id']}})[_0x3fca('0x26')](handleEntityNotFound(_0xde3305,null))[_0x3fca('0x26')](saveUpdates(_0x4408e4[_0x3fca('0x51')],null))[_0x3fca('0x26')](respondWithResult(_0xde3305,null))[_0x3fca('0x48')](handleError(_0xde3305,null));};exports[_0x3fca('0x27')]=function(_0x3412d8,_0x269b7d){return db[_0x3fca('0x2f')][_0x3fca('0x4d')]({'where':{'id':_0x3412d8['params']['id']}})[_0x3fca('0x26')](handleEntityNotFound(_0x269b7d,null))[_0x3fca('0x26')](removeEntity(_0x269b7d,null))[_0x3fca('0x48')](handleError(_0x269b7d,null));};exports[_0x3fca('0x52')]=function(_0x569aa9,_0x42d946,_0x39e20d){_0x569aa9[_0x3fca('0x51')][_0x3fca('0x2b')]=_0x569aa9[_0x3fca('0x53')]['originalname'];_0x569aa9['body']['basename']=_0x569aa9[_0x3fca('0x53')]['filename'];_0x569aa9[_0x3fca('0x51')][_0x3fca('0x42')]=_0x569aa9['file'][_0x3fca('0x54')];return db[_0x3fca('0x2f')][_0x3fca('0x52')](_0x569aa9[_0x3fca('0x51')])[_0x3fca('0x26')](respondWithResult(_0x42d946,0xc9))[_0x3fca('0x48')](handleError(_0x42d946,null));};exports[_0x3fca('0x55')]=function(_0x5b1a01,_0x111d24,_0x399279){return db['Attachment'][_0x3fca('0x56')]({'where':{'id':_0x5b1a01[_0x3fca('0x4a')]['id']},'raw':!![]})[_0x3fca('0x26')](handleEntityNotFound(_0x111d24,null))[_0x3fca('0x26')](function(_0x422e6e){if(_0x422e6e){var _0x581b85=_0x422e6e['ChatOfflineMessageId']!==null;var _0x2f42bf=path[_0x3fca('0x57')](config[_0x3fca('0x58')],_0x3fca('0x59'));if(_0x581b85){_0x2f42bf=path[_0x3fca('0x57')](_0x2f42bf,_0x3fca('0x5a'));}var _0xfabbf7=path[_0x3fca('0x57')](_0x2f42bf,_0x422e6e[_0x3fca('0x5b')]);return _0x111d24[_0x3fca('0x55')](_0xfabbf7);}})[_0x3fca('0x48')](handleError(_0x111d24,null));};
\ No newline at end of file
index 7a005b1..c2762de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4ef=['define','attachments','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports'];(function(_0x27d94f,_0x18ae26){var _0x3a0f7b=function(_0x42a4e9){while(--_0x42a4e9){_0x27d94f['push'](_0x27d94f['shift']());}};_0x3a0f7b(++_0x18ae26);}(_0xc4ef,0x144));var _0xfc4e=function(_0x3c487b,_0x44c5e2){_0x3c487b=_0x3c487b-0x0;var _0x1d65f6=_0xc4ef[_0x3c487b];return _0x1d65f6;};'use strict';var _=require(_0xfc4e('0x0'));var util=require(_0xfc4e('0x1'));var logger=require(_0xfc4e('0x2'))(_0xfc4e('0x3'));var moment=require(_0xfc4e('0x4'));var BPromise=require(_0xfc4e('0x5'));var rp=require(_0xfc4e('0x6'));var fs=require('fs');var path=require(_0xfc4e('0x7'));var rimraf=require(_0xfc4e('0x8'));var config=require(_0xfc4e('0x9'));var attributes=require(_0xfc4e('0xa'));module[_0xfc4e('0xb')]=function(_0x3f2910,_0x496a05){return _0x3f2910[_0xfc4e('0xc')]('Attachment',attributes,{'tableName':_0xfc4e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc85a=['path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5edd05,_0x8ac1d3){var _0x19b62e=function(_0x2a25d5){while(--_0x2a25d5){_0x5edd05['push'](_0x5edd05['shift']());}};_0x19b62e(++_0x8ac1d3);}(_0xc85a,0x19e));var _0xac85=function(_0x141985,_0x454aae){_0x141985=_0x141985-0x0;var _0x29ae7f=_0xc85a[_0x141985];return _0x29ae7f;};'use strict';var _=require(_0xac85('0x0'));var util=require(_0xac85('0x1'));var logger=require(_0xac85('0x2'))(_0xac85('0x3'));var moment=require(_0xac85('0x4'));var BPromise=require(_0xac85('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xac85('0x6'));var rimraf=require(_0xac85('0x7'));var config=require(_0xac85('0x8'));var attributes=require(_0xac85('0x9'));module[_0xac85('0xa')]=function(_0x4da635,_0x1ed19d){return _0x4da635[_0xac85('0xb')](_0xac85('0xc'),attributes,{'tableName':_0xac85('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2489488..3e87dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8664=['options','CreateAttachment','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','Attachment,\x20%s,\x20%s','debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','create','body'];(function(_0x25662e,_0x4cec68){var _0x59b7bc=function(_0xafb159){while(--_0xafb159){_0x25662e['push'](_0x25662e['shift']());}};_0x59b7bc(++_0x4cec68);}(_0x8664,0x11a));var _0x4866=function(_0xd1179e,_0x5c65de){_0xd1179e=_0xd1179e-0x0;var _0x1c7c8e=_0x8664[_0xd1179e];return _0x1c7c8e;};'use strict';var _=require(_0x4866('0x0'));var util=require(_0x4866('0x1'));var moment=require(_0x4866('0x2'));var BPromise=require(_0x4866('0x3'));var rs=require(_0x4866('0x4'));var fs=require('fs');var Redis=require(_0x4866('0x5'));var db=require(_0x4866('0x6'))['db'];var utils=require(_0x4866('0x7'));var logger=require(_0x4866('0x8'))('rpc');var config=require(_0x4866('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4866('0xa')][_0x4866('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x439f55,_0x10f7c1,_0x2b4bb0){return new BPromise(function(_0x142f18,_0x4e07e3){return client[_0x4866('0xc')](_0x439f55,_0x2b4bb0)[_0x4866('0xd')](function(_0x10a369){logger[_0x4866('0xe')](_0x4866('0xf'),_0x10f7c1,'request\x20sent');logger[_0x4866('0x10')](_0x4866('0x11'),_0x10f7c1,'request\x20sent',JSON[_0x4866('0x12')](_0x10a369));if(_0x10a369[_0x4866('0x13')]){if(_0x10a369['error']['code']===0x1f4){logger['error'](_0x4866('0xf'),_0x10f7c1,_0x10a369[_0x4866('0x13')][_0x4866('0x14')]);return _0x4e07e3(_0x10a369[_0x4866('0x13')][_0x4866('0x14')]);}logger[_0x4866('0x13')]('Attachment,\x20%s,\x20%s',_0x10f7c1,_0x10a369[_0x4866('0x13')][_0x4866('0x14')]);return _0x142f18(_0x10a369['error'][_0x4866('0x14')]);}else{logger[_0x4866('0xe')](_0x4866('0xf'),_0x10f7c1,_0x4866('0x15'));_0x142f18(_0x10a369[_0x4866('0x16')][_0x4866('0x14')]);}})[_0x4866('0x17')](function(_0x653916){logger[_0x4866('0x13')]('Attachment,\x20%s,\x20%s',_0x10f7c1,_0x653916);_0x4e07e3(_0x653916);});});}exports['CreateAttachment']=function(_0x423490){var _0x137ddf=this;return new Promise(function(_0x176c99,_0x51038a){return db['Attachment'][_0x4866('0x18')](_0x423490[_0x4866('0x19')],{'raw':_0x423490['options']?_0x423490[_0x4866('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x4866('0xd')](function(_0x579621){logger[_0x4866('0xe')](_0x4866('0x1b'),_0x423490);logger[_0x4866('0x10')](_0x4866('0x1b'),_0x423490,JSON[_0x4866('0x12')](_0x579621));_0x176c99(_0x579621);})['catch'](function(_0x5d1401){logger[_0x4866('0x13')](_0x4866('0x1b'),_0x5d1401[_0x4866('0x14')],_0x423490);_0x51038a(_0x137ddf['error'](0x1f4,_0x5d1401[_0x4866('0x14')]));});});};
\ No newline at end of file
+var _0x3685=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateAttachment','Attachment','options','raw','catch','lodash','moment','bluebird','randomstring'];(function(_0x1caf6a,_0x26a5bf){var _0x1bf493=function(_0x3982f5){while(--_0x3982f5){_0x1caf6a['push'](_0x1caf6a['shift']());}};_0x1bf493(++_0x26a5bf);}(_0x3685,0xf8));var _0x5368=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x3685[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x5368('0x0'));var util=require('util');var moment=require(_0x5368('0x1'));var BPromise=require(_0x5368('0x2'));var rs=require(_0x5368('0x3'));var fs=require('fs');var Redis=require(_0x5368('0x4'));var db=require(_0x5368('0x5'))['db'];var utils=require(_0x5368('0x6'));var logger=require(_0x5368('0x7'))(_0x5368('0x8'));var config=require(_0x5368('0x9'));var jayson=require(_0x5368('0xa'));var client=jayson['client'][_0x5368('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2529a2,_0x39223d,_0xaf4549){return new BPromise(function(_0x55fb7d,_0x14e621){return client[_0x5368('0xc')](_0x2529a2,_0xaf4549)[_0x5368('0xd')](function(_0x2a6ce8){logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,_0x5368('0x10'));logger[_0x5368('0x11')]('Attachment,\x20%s,\x20%s,\x20%s',_0x39223d,_0x5368('0x10'),JSON[_0x5368('0x12')](_0x2a6ce8));if(_0x2a6ce8[_0x5368('0x13')]){if(_0x2a6ce8['error'][_0x5368('0x14')]===0x1f4){logger[_0x5368('0x13')]('Attachment,\x20%s,\x20%s',_0x39223d,_0x2a6ce8['error']['message']);return _0x14e621(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);return _0x55fb7d(_0x2a6ce8[_0x5368('0x13')][_0x5368('0x15')]);}else{logger[_0x5368('0xe')](_0x5368('0xf'),_0x39223d,'request\x20sent');_0x55fb7d(_0x2a6ce8[_0x5368('0x16')][_0x5368('0x15')]);}})['catch'](function(_0x19790d){logger[_0x5368('0x13')](_0x5368('0xf'),_0x39223d,_0x19790d);_0x14e621(_0x19790d);});});}exports[_0x5368('0x17')]=function(_0x5b10e9){var _0x3fcae0=this;return new Promise(function(_0x56ac4d,_0x4baaa9){return db[_0x5368('0x18')]['create'](_0x5b10e9['body'],{'raw':_0x5b10e9['options']?_0x5b10e9[_0x5368('0x19')][_0x5368('0x1a')]===undefined?!![]:![]:!![]})[_0x5368('0xd')](function(_0x5cef40){logger['info'](_0x5368('0x17'),_0x5b10e9);logger[_0x5368('0x11')](_0x5368('0x17'),_0x5b10e9,JSON[_0x5368('0x12')](_0x5cef40));_0x56ac4d(_0x5cef40);})[_0x5368('0x1b')](function(_0x1093e2){logger[_0x5368('0x13')](_0x5368('0x17'),_0x1093e2[_0x5368('0x15')],_0x5b10e9);_0x4baaa9(_0x3fcae0[_0x5368('0x13')](0x1f4,_0x1093e2['message']));});});};
\ No newline at end of file
index e9e05a6..879a518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['root','format','%s-%s','originalname','replace','file','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/download','download','post','/:id/clone'];(function(_0x420242,_0x26bdde){var _0x26ab29=function(_0x3266f8){while(--_0x3266f8){_0x420242['push'](_0x420242['shift']());}};_0x26ab29(++_0x26bdde);}(_0xadb5,0xad));var _0x5adb=function(_0x2e0cb8,_0x4fb008){_0x2e0cb8=_0x2e0cb8-0x0;var _0x5bae14=_0xadb5[_0x2e0cb8];return _0x5bae14;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./attachment.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller['clone']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1a8f66,_0x1ea238,_0x82e67e){_0x82e67e(null,path['join'](config[_0x5adb('0x10')],'server/files/attachments/'));},'filename':function(_0x2a0b70,_0x5433bf,_0x8cfcc6){_0x8cfcc6(null,util[_0x5adb('0x11')](_0x5adb('0x12'),Date['now'](),_0x5433bf[_0x5adb('0x13')][_0x5adb('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x5adb('0xe')]('/',upload['single'](_0x5adb('0x15')),controller['create']);router[_0x5adb('0x16')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x17')]);router[_0x5adb('0x18')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x19')]);module[_0x5adb('0x1a')]=router;
\ No newline at end of file
+var _0xb10b=['originalname','replace','single','file','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','download','post','/:id/clone','diskStorage','join','server/files/attachments/','format','%s-%s'];(function(_0x369f4f,_0x29ae7d){var _0x2df1f6=function(_0x164fdb){while(--_0x164fdb){_0x369f4f['push'](_0x369f4f['shift']());}};_0x2df1f6(++_0x29ae7d);}(_0xb10b,0x12a));var _0xbb10=function(_0x133f69,_0x2d4632){_0x133f69=_0x133f69-0x0;var _0x3b67bb=_0xb10b[_0x133f69];return _0x3b67bb;};'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 2b4d6ee..f3117fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5e9=['clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','moment','../../config/environment','../../components/auth/service','signToken','authenticate','google','/login','profile','email','callback','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','then','find','map','emails','value','admin','user','agent','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','add','minutes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf5e9,0x17f));var _0x9f5e=function(_0x5a7da7,_0x4f132a){_0x5a7da7=_0x5a7da7-0x0;var _0x14459e=_0xf5e9[_0x5a7da7];return _0x14459e;};'use strict';var _=require(_0x9f5e('0x0'));var passport=require(_0x9f5e('0x1'));var GoogleStrategy=require(_0x9f5e('0x2'))[_0x9f5e('0x3')];var moment=require(_0x9f5e('0x4'));var db=require('../../mysqldb')['db'];var config=require(_0x9f5e('0x5'));var signToken=require(_0x9f5e('0x6'))[_0x9f5e('0x7')];var utils=require('../../config/utils');exports['login']=passport[_0x9f5e('0x8')](_0x9f5e('0x9'),{'failureRedirect':_0x9f5e('0xa'),'scope':[_0x9f5e('0xb'),_0x9f5e('0xc')],'session':![]});exports[_0x9f5e('0xd')]=passport[_0x9f5e('0x8')]('google',{'failureRedirect':_0x9f5e('0xa'),'session':![]});passport[_0x9f5e('0xe')](new GoogleStrategy({'clientID':config[_0x9f5e('0x9')]?config[_0x9f5e('0x9')][_0x9f5e('0xf')]:'id','clientSecret':config[_0x9f5e('0x9')]?config['google'][_0x9f5e('0x10')]:_0x9f5e('0x11'),'callbackURL':config[_0x9f5e('0x9')]?config[_0x9f5e('0x9')][_0x9f5e('0x12')]:''},function(_0x422e97,_0x10209f,_0x45d6c9,_0x4e038b){var _0x3c8dc4,_0x429e03;return db[_0x9f5e('0x13')][_0x9f5e('0x14')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0x9f5e('0x15')](function(_0x5055be){_0x3c8dc4=_0x5055be;return db['User'][_0x9f5e('0x16')]({'where':{'email':_[_0x9f5e('0x17')](_0x45d6c9[_0x9f5e('0x18')],_0x9f5e('0x19')),'role':{'$or':[_0x9f5e('0x1a'),_0x9f5e('0x1b'),_0x9f5e('0x1c')]}}});})[_0x9f5e('0x15')](function(_0x241f07){_0x429e03=_0x241f07;if(_0x429e03){if(_0x429e03[_0x9f5e('0x1d')]){return _0x4e038b(_0x9f5e('0x1e'));}else if(_0x3c8dc4[_0x9f5e('0x1f')]>0x0){if(_0x429e03[_0x9f5e('0x20')]){if(moment(_0x429e03['blockedAt'])[_0x9f5e('0x21')](_0x3c8dc4['blockDuration'],_0x9f5e('0x22'))>moment()){return _0x4e038b(_0x9f5e('0x1e'));}else{return utils[_0x9f5e('0x23')](_0x429e03,0x0,![],null)[_0x9f5e('0x15')](function(){return utils[_0x9f5e('0x24')](_0x429e03);})[_0x9f5e('0x15')](function(){return _0x4e038b(null,_0x429e03);});}}else{return utils[_0x9f5e('0x24')](_0x429e03)[_0x9f5e('0x15')](function(){return _0x4e038b(null,_0x429e03);});}}else{return utils[_0x9f5e('0x24')](_0x429e03)['then'](function(){return _0x4e038b(null,_0x429e03);});}}return _0x4e038b('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0x9f5e('0x25')](function(_0x2afe0e){_0x4e038b(_0x2afe0e);});}));
\ No newline at end of file
+var _0xac8e=['getLicense','catch','lodash','passport-google-oauth20','moment','../../mysqldb','../../config/environment','../../components/auth/service','signToken','../../config/utils','login','authenticate','google','/login','profile','email','callback','use','clientID','clientSecret','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','map','emails','value','admin','agent','disabled','blocked','add','clearBlockUser'];(function(_0x30abdf,_0x2fe412){var _0x5b9f63=function(_0x3e76d9){while(--_0x3e76d9){_0x30abdf['push'](_0x30abdf['shift']());}};_0x5b9f63(++_0x2fe412);}(_0xac8e,0x16a));var _0xeac8=function(_0x4a8d58,_0x416d41){_0x4a8d58=_0x4a8d58-0x0;var _0x26912e=_0xac8e[_0x4a8d58];return _0x26912e;};'use strict';var _=require(_0xeac8('0x0'));var passport=require('passport');var GoogleStrategy=require(_0xeac8('0x1'))['Strategy'];var moment=require(_0xeac8('0x2'));var db=require(_0xeac8('0x3'))['db'];var config=require(_0xeac8('0x4'));var signToken=require(_0xeac8('0x5'))[_0xeac8('0x6')];var utils=require(_0xeac8('0x7'));exports[_0xeac8('0x8')]=passport[_0xeac8('0x9')](_0xeac8('0xa'),{'failureRedirect':_0xeac8('0xb'),'scope':[_0xeac8('0xc'),_0xeac8('0xd')],'session':![]});exports[_0xeac8('0xe')]=passport[_0xeac8('0x9')](_0xeac8('0xa'),{'failureRedirect':'/login','session':![]});passport[_0xeac8('0xf')](new GoogleStrategy({'clientID':config[_0xeac8('0xa')]?config[_0xeac8('0xa')][_0xeac8('0x10')]:'id','clientSecret':config['google']?config[_0xeac8('0xa')][_0xeac8('0x11')]:_0xeac8('0x12'),'callbackURL':config[_0xeac8('0xa')]?config[_0xeac8('0xa')][_0xeac8('0x13')]:''},function(_0x245783,_0x41e0ad,_0x1e219e,_0x58a85a){var _0x147fc6,_0x2e1233;return db['Setting'][_0xeac8('0x14')]({'where':{'id':0x1},'attributes':[_0xeac8('0x15'),_0xeac8('0x16')],'raw':!![]})[_0xeac8('0x17')](function(_0x18909c){_0x147fc6=_0x18909c;return db[_0xeac8('0x18')]['find']({'where':{'email':_[_0xeac8('0x19')](_0x1e219e[_0xeac8('0x1a')],_0xeac8('0x1b')),'role':{'$or':[_0xeac8('0x1c'),'user',_0xeac8('0x1d')]}}});})[_0xeac8('0x17')](function(_0x4c96a0){_0x2e1233=_0x4c96a0;if(_0x2e1233){if(_0x2e1233[_0xeac8('0x1e')]){return _0x58a85a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(_0x147fc6[_0xeac8('0x16')]>0x0){if(_0x2e1233[_0xeac8('0x1f')]){if(moment(_0x2e1233['blockedAt'])[_0xeac8('0x20')](_0x147fc6['blockDuration'],'minutes')>moment()){return _0x58a85a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{return utils[_0xeac8('0x21')](_0x2e1233,0x0,![],null)['then'](function(){return utils[_0xeac8('0x22')](_0x2e1233);})['then'](function(){return _0x58a85a(null,_0x2e1233);});}}else{return utils[_0xeac8('0x22')](_0x2e1233)[_0xeac8('0x17')](function(){return _0x58a85a(null,_0x2e1233);});}}else{return utils[_0xeac8('0x22')](_0x2e1233)[_0xeac8('0x17')](function(){return _0x58a85a(null,_0x2e1233);});}}return _0x58a85a('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');})[_0xeac8('0x23')](function(_0x44b122){_0x58a85a(_0x44b122);});}));
\ No newline at end of file
index 9a8d461..2dae2da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabd2=['../user/user.controller.js','../../components/auth/service','get','login','/callback','setTokenCookie','exports','express','Router','./authGoogle.controller'];(function(_0x194e12,_0x2f8d3e){var _0x16788c=function(_0x59b79e){while(--_0x59b79e){_0x194e12['push'](_0x194e12['shift']());}};_0x16788c(++_0x2f8d3e);}(_0xabd2,0x93));var _0x2abd=function(_0x2e27ea,_0x3bea3d){_0x2e27ea=_0x2e27ea-0x0;var _0x13f47e=_0xabd2[_0x2e27ea];return _0x13f47e;};'use strict';var express=require(_0x2abd('0x0'));var passport=require('passport');var router=express[_0x2abd('0x1')]();var controller=require(_0x2abd('0x2'));var userController=require(_0x2abd('0x3'));var authService=require(_0x2abd('0x4'));router[_0x2abd('0x5')]('/',controller[_0x2abd('0x6')]);router[_0x2abd('0x5')](_0x2abd('0x7'),controller['callback'],authService['isMiddleware'],userController[_0x2abd('0x6')],authService[_0x2abd('0x8')]);module[_0x2abd('0x9')]=router;
\ No newline at end of file
+var _0x316b=['callback','isMiddleware','setTokenCookie','exports','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login'];(function(_0x5c85c8,_0x16110b){var _0x42d66f=function(_0x2c6dda){while(--_0x2c6dda){_0x5c85c8['push'](_0x5c85c8['shift']());}};_0x42d66f(++_0x16110b);}(_0x316b,0x1bd));var _0xb316=function(_0x261522,_0x1adc1f){_0x261522=_0x261522-0x0;var _0x98a25a=_0x316b[_0x261522];return _0x98a25a;};'use strict';var express=require('express');var passport=require('passport');var router=express['Router']();var controller=require(_0xb316('0x0'));var userController=require(_0xb316('0x1'));var authService=require(_0xb316('0x2'));router[_0xb316('0x3')]('/',controller[_0xb316('0x4')]);router[_0xb316('0x3')]('/callback',controller[_0xb316('0x5')],authService[_0xb316('0x6')],userController['login'],authService[_0xb316('0x7')]);module[_0xb316('0x8')]=router;
\ No newline at end of file
index 83a945a..6c9d2d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81dc=['disabled','blocked','blockedAt','admin','agent','authenticate','minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','add','getLicense','catch','MailAccount','email','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','secure','auth','user','pass','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','stringify','status','send','message','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','Setting','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','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','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','headers','/reset/','Reset\x20Email\x20sent!','params','token','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','Password\x20reset!','use','passport','passport-local','Strategy','jayson/promise','lodash','../../mysqldb','../../components/auth/service','client','findOne','allowedLoginAttempts','blockDuration','then','name','password','salt'];(function(_0x493bcc,_0x3e9066){var _0x51ddd9=function(_0x5985ad){while(--_0x5985ad){_0x493bcc['push'](_0x493bcc['shift']());}};_0x51ddd9(++_0x3e9066);}(_0x81dc,0x1e9));var _0xc81d=function(_0x4a0e68,_0x45c08c){_0x4a0e68=_0x4a0e68-0x0;var _0x4fb274=_0x81dc[_0x4a0e68];return _0x4fb274;};'use strict';var util=require('util');var passport=require(_0xc81d('0x0'));var LocalStrategy=require(_0xc81d('0x1'))[_0xc81d('0x2')];var jayson=require(_0xc81d('0x3'));var _=require(_0xc81d('0x4'));var rs=require('randomstring');var moment=require('moment');var db=require(_0xc81d('0x5'))['db'];var authService=require(_0xc81d('0x6'));var utils=require('../../config/utils');var client=jayson[_0xc81d('0x7')]['http']({'port':0x232b});function localAuthenticate(_0x474057,_0x526591,_0x353e56,_0x46fec5){var _0x24ad98,_0x33b3aa;return db['Setting'][_0xc81d('0x8')]({'where':{'id':0x1},'attributes':[_0xc81d('0x9'),_0xc81d('0xa')],'raw':!![]})[_0xc81d('0xb')](function(_0xf488e8){_0x24ad98=_0xf488e8;return _0x474057[_0xc81d('0x8')]({'attributes':['id',_0xc81d('0xc'),_0xc81d('0xd'),_0xc81d('0xe'),'role',_0xc81d('0xf'),_0xc81d('0x10'),_0xc81d('0x11'),'loginAttempts'],'where':{'name':_0x526591,'role':{'$or':[_0xc81d('0x12'),'user',_0xc81d('0x13')]}}});})['then'](function(_0x508047){if(!_0x508047||_0x508047&&_0x508047['name']!==_0x526591){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x33b3aa=_0x508047;return _0x33b3aa;}})[_0xc81d('0xb')](function(){_0x33b3aa[_0xc81d('0x14')](_0x353e56,function(_0x3c49e7,_0x47856e){var _0x25d574=_0x33b3aa['loginAttempts']+0x1;if(_0x3c49e7){return _0x46fec5(_0x3c49e7);}else if(!_0x47856e){if(_0x33b3aa[_0xc81d('0xf')]){return _0x46fec5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x24ad98[_0xc81d('0x9')]>0x0){if(_0x33b3aa['blocked']){if(_0x24ad98[_0xc81d('0xa')]>0x0){if(moment(_0x33b3aa[_0xc81d('0x11')])['add'](_0x24ad98['blockDuration'],_0xc81d('0x15'))>moment()){return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}else{return utils['clearBlockUser'](_0x33b3aa,_0x25d574,![],null)['then'](function(){return _0x46fec5(null,![],{'message':_0xc81d('0x16')});});}}else{return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}}else{if(_0x25d574>=_0x24ad98[_0xc81d('0x9')]){return utils['clearBlockUser'](_0x33b3aa,0x0,!![],moment())['then'](function(){return _0x46fec5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xc81d('0x17')](_0x33b3aa,_0x25d574,![],null)[_0xc81d('0xb')](function(){return _0x46fec5(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}}else{if(_0x33b3aa[_0xc81d('0xf')]){return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}else if(_0x24ad98[_0xc81d('0x9')]>0x0){if(_0x33b3aa[_0xc81d('0x10')]){if(_0x24ad98['blockDuration']>0x0){if(moment(_0x33b3aa[_0xc81d('0x11')])[_0xc81d('0x18')](_0x24ad98['blockDuration'],'minutes')>moment()){return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}else{return utils['clearBlockUser'](_0x33b3aa,0x0,![],null)[_0xc81d('0xb')](function(){return utils[_0xc81d('0x19')](_0x33b3aa);})[_0xc81d('0xb')](function(){return _0x46fec5(null,_0x33b3aa);});}}else{return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}}else{return utils[_0xc81d('0x17')](_0x33b3aa,0x0,![],null)[_0xc81d('0xb')](function(){return utils[_0xc81d('0x19')](_0x33b3aa);})['then'](function(){return _0x46fec5(null,_0x33b3aa);})['catch'](function(_0x2f004f){return _0x46fec5(null,![],_0x2f004f);});}}else{if(_0x33b3aa[_0xc81d('0x10')]){return _0x46fec5(null,![],{'message':_0xc81d('0x16')});}else{return utils[_0xc81d('0x19')](_0x33b3aa)[_0xc81d('0xb')](function(){return _0x46fec5(null,_0x33b3aa);});}}}});})[_0xc81d('0x1a')](function(_0x2a2429){return _0x46fec5(null,![],_0x2a2429);});}function sendServiceMail(_0x5ccd3c){return db[_0xc81d('0x1b')]['find']({'where':{'service':!![]},'attributes':['id',_0xc81d('0xc'),_0xc81d('0x1c')],'include':[{'model':db['MailServerOut'],'as':'Smtp'}]})['then'](function(_0x153253){if(!_0x153253){throw new Error(_0xc81d('0x1d'));}var _0x5f4cc2={'tls':{'rejectUnauthorized':![]}};if(_0x153253[_0xc81d('0x1e')][_0xc81d('0x1f')]){_0x5f4cc2[_0xc81d('0x1f')]=_0x153253['Smtp'][_0xc81d('0x1f')];}else{_0x5f4cc2[_0xc81d('0x20')]=_0x153253[_0xc81d('0x1e')][_0xc81d('0x20')];_0x5f4cc2['port']=_0x153253['Smtp']['port'];_0x5f4cc2[_0xc81d('0x21')]=_0x153253[_0xc81d('0x1e')][_0xc81d('0x21')];}if(_0x153253[_0xc81d('0x1e')]['authentication']){_0x5f4cc2[_0xc81d('0x22')]={'user':_0x153253[_0xc81d('0x1e')][_0xc81d('0x23')],'pass':_0x153253[_0xc81d('0x1e')][_0xc81d('0x24')]};}var _0x21b0f4={'account':_0x5f4cc2,'message':_['merge']({'from':util[_0xc81d('0x25')](_0xc81d('0x26'),_0x153253['name'],_0x153253[_0xc81d('0x1c')]||_0x153253['Smtp'][_0xc81d('0x23')])},_0x5ccd3c)};return client[_0xc81d('0x27')](_0xc81d('0x28'),_0x21b0f4);})['then'](function(_0x564b24){if(_0x564b24[_0xc81d('0x29')]){throw new Error(util[_0xc81d('0x25')](_0xc81d('0x2a'),_0x564b24['error']['message']||JSON[_0xc81d('0x2b')](_0x564b24[_0xc81d('0x29')])));}return!![];});}function handleError(_0x5defc1,_0x16d53a,_0x1e51bd){return _0x5defc1[_0xc81d('0x2c')](_0x16d53a||0x1f4)[_0xc81d('0x2d')]({'message':_0x1e51bd?_0x1e51bd[_0xc81d('0x2e')]||_0x1e51bd:''});}exports[_0xc81d('0x2f')]=function(_0x4bef4a,_0x1c39ba,_0x2f7507){passport[_0xc81d('0x14')](_0xc81d('0x30'),function(_0x216c24,_0x2c23e9,_0x284bc4){var _0xee31c3=_0x216c24||_0x284bc4;if(_0xee31c3){return handleError(_0x1c39ba,0x191,_0xee31c3);}if(!_0x2c23e9){return handleError(_0x1c39ba,0x194,{'message':_0xc81d('0x31')});}else{var _0x15bc4b={'payload':{'id':_0x2c23e9['id'],'role':_0x2c23e9['role']},'options':{'expiresIn':0x15180}};return authService[_0xc81d('0x32')](_0x15bc4b)[_0xc81d('0xb')](function(_0x7d964b){_0x1c39ba['json']({'id':_0x2c23e9['id'],'token':_0x7d964b,'statusCall':'','isAlreadyLogged':_0x2c23e9[_0xc81d('0x33')]});});}})(_0x4bef4a,_0x1c39ba,_0x2f7507);};exports[_0xc81d('0x34')]=function(_0x48a4f6,_0x5a1fb4,_0x3851e3){if(!_0x48a4f6[_0xc81d('0x35')][_0xc81d('0x1c')]){return handleError(_0x5a1fb4,0x1f4,{'message':_0xc81d('0x36')});}var _0x5e5740=rs[_0xc81d('0x37')]();_0x48a4f6[_0xc81d('0x35')][_0xc81d('0x1c')]=_0x48a4f6[_0xc81d('0x35')][_0xc81d('0x1c')][_0xc81d('0x38')]()[_0xc81d('0x39')]();var _0x59e9b7;return db[_0xc81d('0x3a')]['findOne']({'where':{'id':0x1},'attributes':[_0xc81d('0x9'),'blockDuration'],'raw':!![]})[_0xc81d('0xb')](function(_0x420ca5){_0x59e9b7=_0x420ca5;return db[_0xc81d('0x3b')][_0xc81d('0x3c')]({'where':{'email':_0x48a4f6[_0xc81d('0x35')]['email']}});})[_0xc81d('0xb')](function(_0x4225f6){if(!_0x4225f6){throw new Error(_0xc81d('0x3d'));}if(_0x4225f6[_0xc81d('0xf')]){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0x4225f6[_0xc81d('0x10')]){if(moment(_0x4225f6[_0xc81d('0x11')])[_0xc81d('0x18')](_0x59e9b7[_0xc81d('0xa')],_0xc81d('0x15'))>moment()){throw new Error(_0xc81d('0x3e'));}else{_0x4225f6['blocked']=![];_0x4225f6[_0xc81d('0x11')]=null;}}_0x4225f6[_0xc81d('0x3f')]=_0x5e5740;_0x4225f6[_0xc81d('0x40')]=Date[_0xc81d('0x41')]()+0x36ee80;return _0x4225f6[_0xc81d('0x42')]();})[_0xc81d('0xb')](function(){return sendServiceMail({'to':_0x48a4f6[_0xc81d('0x35')][_0xc81d('0x1c')],'subject':_0xc81d('0x43'),'text':_0xc81d('0x44')+_0xc81d('0x45')+_0xc81d('0x46')+_0x48a4f6[_0xc81d('0x47')]['host']+_0xc81d('0x48')+_0x5e5740+'\x0a\x0a'+'If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a'});})[_0xc81d('0xb')](function(){_0x5a1fb4['status'](0xc8)[_0xc81d('0x2d')]({'message':_0xc81d('0x49')});})['catch'](function(_0x5ac526){return handleError(_0x5a1fb4,0x1f4,_0x5ac526);});};exports['reset']=function(_0x2264e3,_0x2c8dd0,_0x23d6f7){return db['User'][_0xc81d('0x3c')]({'where':{'resetPasswordToken':_0x2264e3[_0xc81d('0x4a')][_0xc81d('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xc81d('0x41')]()}}})[_0xc81d('0xb')](function(_0x4f0fc2){if(!_0x4f0fc2){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xc81d('0x3a')][_0xc81d('0x8')]({'attributes':['id',_0xc81d('0x4c'),_0xc81d('0x4d'),_0xc81d('0x4e')]})[_0xc81d('0xb')](function(_0x91d99f){if(_0x91d99f['securePassword'])authService[_0xc81d('0x4f')](_0x2264e3[_0xc81d('0x35')][_0xc81d('0xd')]);if(!_0x91d99f[_0xc81d('0x4d')]||!_0x4f0fc2[_0xc81d('0x50')])return _0x4f0fc2;authService[_0xc81d('0x51')](_0x2264e3[_0xc81d('0x35')][_0xc81d('0xd')],_0x4f0fc2[_0xc81d('0x50')],_0x91d99f[_0xc81d('0x4e')]);return _0x4f0fc2;})['then'](function(){_0x4f0fc2[_0xc81d('0xd')]=_0x2264e3[_0xc81d('0x35')][_0xc81d('0xd')];_0x4f0fc2[_0xc81d('0x3f')]=null;_0x4f0fc2[_0xc81d('0x40')]=null;return _0x4f0fc2[_0xc81d('0x42')]();});})['then'](function(){_0x2c8dd0['status'](0xc8)['send']({'message':_0xc81d('0x52')});})[_0xc81d('0x1a')](function(_0x25b7db){return handleError(_0x2c8dd0,0x1f4,_0x25b7db);});};passport[_0xc81d('0x53')](new LocalStrategy({'usernameField':_0xc81d('0xc'),'passwordField':'password'},function(_0x580268,_0x2f9e10,_0xd4b89b){return localAuthenticate(db[_0xc81d('0x3b')],_0x580268,_0x2f9e10,_0xd4b89b);}));
\ No newline at end of file
+var _0x902b=['find','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','now','save','xCally\x20Motion\x20Password\x20Reset','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\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','enforcePasswordHistory','securePassword','previousPasswords','validatePasswordHistory','passwordHistoryLimit','resetPasswordToken','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','client','Setting','findOne','then','name','password','salt','role','disabled','blockedAt','loginAttempts','admin','user','authenticate','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','allowedLoginAttempts','blocked','blockDuration','minutes','clearBlockUser','add','getLicense','catch','MailAccount','email','MailServerOut','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','Smtp','service','host','port','secure','authentication','pass','merge','format','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','local','Something\x20went\x20wrong,\x20please\x20try\x20again.','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','User'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x902b,0x6a));var _0xb902=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x902b[_0x344a3f];return _0x264712;};'use strict';var util=require(_0xb902('0x0'));var passport=require('passport');var LocalStrategy=require(_0xb902('0x1'))[_0xb902('0x2')];var jayson=require(_0xb902('0x3'));var _=require(_0xb902('0x4'));var rs=require(_0xb902('0x5'));var moment=require(_0xb902('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xb902('0x7'));var utils=require('../../config/utils');var client=jayson[_0xb902('0x8')]['http']({'port':0x232b});function localAuthenticate(_0x157e14,_0x5e7240,_0x49f60d,_0x5b0b74){var _0x55331d,_0x534c79;return db[_0xb902('0x9')][_0xb902('0xa')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts','blockDuration'],'raw':!![]})[_0xb902('0xb')](function(_0x2cfedd){_0x55331d=_0x2cfedd;return _0x157e14[_0xb902('0xa')]({'attributes':['id',_0xb902('0xc'),_0xb902('0xd'),_0xb902('0xe'),_0xb902('0xf'),_0xb902('0x10'),'blocked',_0xb902('0x11'),_0xb902('0x12')],'where':{'name':_0x5e7240,'role':{'$or':[_0xb902('0x13'),_0xb902('0x14'),'agent']}}});})['then'](function(_0xe413ef){if(!_0xe413ef||_0xe413ef&&_0xe413ef[_0xb902('0xc')]!==_0x5e7240){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x534c79=_0xe413ef;return _0x534c79;}})[_0xb902('0xb')](function(){_0x534c79[_0xb902('0x15')](_0x49f60d,function(_0x355beb,_0x39170a){var _0x1f03d2=_0x534c79[_0xb902('0x12')]+0x1;if(_0x355beb){return _0x5b0b74(_0x355beb);}else if(!_0x39170a){if(_0x534c79['disabled']){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else if(_0x55331d[_0xb902('0x17')]>0x0){if(_0x534c79[_0xb902('0x18')]){if(_0x55331d[_0xb902('0x19')]>0x0){if(moment(_0x534c79[_0xb902('0x11')])['add'](_0x55331d[_0xb902('0x19')],_0xb902('0x1a'))>moment()){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else{return utils[_0xb902('0x1b')](_0x534c79,_0x1f03d2,![],null)['then'](function(){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});});}}else{return _0x5b0b74(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x1f03d2>=_0x55331d[_0xb902('0x17')]){return utils[_0xb902('0x1b')](_0x534c79,0x0,!![],moment())[_0xb902('0xb')](function(){return _0x5b0b74(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils['clearBlockUser'](_0x534c79,_0x1f03d2,![],null)[_0xb902('0xb')](function(){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});});}}}else{return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}}else{if(_0x534c79['disabled']){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else if(_0x55331d[_0xb902('0x17')]>0x0){if(_0x534c79[_0xb902('0x18')]){if(_0x55331d[_0xb902('0x19')]>0x0){if(moment(_0x534c79[_0xb902('0x11')])[_0xb902('0x1c')](_0x55331d[_0xb902('0x19')],_0xb902('0x1a'))>moment()){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else{return utils[_0xb902('0x1b')](_0x534c79,0x0,![],null)['then'](function(){return utils[_0xb902('0x1d')](_0x534c79);})[_0xb902('0xb')](function(){return _0x5b0b74(null,_0x534c79);});}}else{return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}}else{return utils['clearBlockUser'](_0x534c79,0x0,![],null)[_0xb902('0xb')](function(){return utils['getLicense'](_0x534c79);})[_0xb902('0xb')](function(){return _0x5b0b74(null,_0x534c79);})[_0xb902('0x1e')](function(_0x5a7e71){return _0x5b0b74(null,![],_0x5a7e71);});}}else{if(_0x534c79[_0xb902('0x18')]){return _0x5b0b74(null,![],{'message':_0xb902('0x16')});}else{return utils[_0xb902('0x1d')](_0x534c79)[_0xb902('0xb')](function(){return _0x5b0b74(null,_0x534c79);});}}}});})['catch'](function(_0x4625fa){return _0x5b0b74(null,![],_0x4625fa);});}function sendServiceMail(_0x115f02){return db[_0xb902('0x1f')]['find']({'where':{'service':!![]},'attributes':['id',_0xb902('0xc'),_0xb902('0x20')],'include':[{'model':db[_0xb902('0x21')],'as':'Smtp'}]})['then'](function(_0x378772){if(!_0x378772){throw new Error(_0xb902('0x22'));}var _0x33995f={'tls':{'rejectUnauthorized':![]}};if(_0x378772[_0xb902('0x23')][_0xb902('0x24')]){_0x33995f[_0xb902('0x24')]=_0x378772[_0xb902('0x23')]['service'];}else{_0x33995f[_0xb902('0x25')]=_0x378772[_0xb902('0x23')][_0xb902('0x25')];_0x33995f['port']=_0x378772[_0xb902('0x23')][_0xb902('0x26')];_0x33995f['secure']=_0x378772[_0xb902('0x23')][_0xb902('0x27')];}if(_0x378772[_0xb902('0x23')][_0xb902('0x28')]){_0x33995f['auth']={'user':_0x378772[_0xb902('0x23')]['user'],'pass':_0x378772['Smtp'][_0xb902('0x29')]};}var _0xdddee={'account':_0x33995f,'message':_[_0xb902('0x2a')]({'from':util[_0xb902('0x2b')]('\x22%s\x22\x20<%s>',_0x378772[_0xb902('0xc')],_0x378772['email']||_0x378772[_0xb902('0x23')][_0xb902('0x14')])},_0x115f02)};return client['request'](_0xb902('0x2c'),_0xdddee);})[_0xb902('0xb')](function(_0x4eee40){if(_0x4eee40[_0xb902('0x2d')]){throw new Error(util[_0xb902('0x2b')](_0xb902('0x2e'),_0x4eee40[_0xb902('0x2d')][_0xb902('0x2f')]||JSON[_0xb902('0x30')](_0x4eee40[_0xb902('0x2d')])));}return!![];});}function handleError(_0x8053b2,_0x53bc3a,_0x56b180){return _0x8053b2[_0xb902('0x31')](_0x53bc3a||0x1f4)[_0xb902('0x32')]({'message':_0x56b180?_0x56b180[_0xb902('0x2f')]||_0x56b180:''});}exports[_0xb902('0x33')]=function(_0x16c9f3,_0x2f5e35,_0x45f10f){passport[_0xb902('0x15')](_0xb902('0x34'),function(_0x77e150,_0x1ed101,_0x1cb3c5){var _0x1a2ba7=_0x77e150||_0x1cb3c5;if(_0x1a2ba7){return handleError(_0x2f5e35,0x191,_0x1a2ba7);}if(!_0x1ed101){return handleError(_0x2f5e35,0x194,{'message':_0xb902('0x35')});}else{var _0x232f7a={'payload':{'id':_0x1ed101['id'],'role':_0x1ed101[_0xb902('0xf')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x232f7a)[_0xb902('0xb')](function(_0x41508d){_0x2f5e35[_0xb902('0x36')]({'id':_0x1ed101['id'],'token':_0x41508d,'statusCall':'','isAlreadyLogged':_0x1ed101[_0xb902('0x37')]});});}})(_0x16c9f3,_0x2f5e35,_0x45f10f);};exports[_0xb902('0x38')]=function(_0x52b557,_0x5c50c7,_0x582906){if(!_0x52b557['body'][_0xb902('0x20')]){return handleError(_0x5c50c7,0x1f4,{'message':_0xb902('0x39')});}var _0x2b426d=rs[_0xb902('0x3a')]();_0x52b557[_0xb902('0x3b')][_0xb902('0x20')]=_0x52b557[_0xb902('0x3b')]['email'][_0xb902('0x3c')]()['toLowerCase']();var _0x4b3003;return db['Setting'][_0xb902('0xa')]({'where':{'id':0x1},'attributes':[_0xb902('0x17'),_0xb902('0x19')],'raw':!![]})['then'](function(_0x2fb9c2){_0x4b3003=_0x2fb9c2;return db[_0xb902('0x3d')][_0xb902('0x3e')]({'where':{'email':_0x52b557['body'][_0xb902('0x20')]}});})['then'](function(_0x4547de){if(!_0x4547de){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x4547de[_0xb902('0x10')]){throw new Error(_0xb902('0x3f'));}if(_0x4547de[_0xb902('0x18')]){if(moment(_0x4547de['blockedAt'])[_0xb902('0x1c')](_0x4b3003['blockDuration'],_0xb902('0x1a'))>moment()){throw new Error(_0xb902('0x40'));}else{_0x4547de[_0xb902('0x18')]=![];_0x4547de[_0xb902('0x11')]=null;}}_0x4547de['resetPasswordToken']=_0x2b426d;_0x4547de['resetPasswordExpires']=Date[_0xb902('0x41')]()+0x36ee80;return _0x4547de[_0xb902('0x42')]();})[_0xb902('0xb')](function(){return sendServiceMail({'to':_0x52b557[_0xb902('0x3b')]['email'],'subject':_0xb902('0x43'),'text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+_0xb902('0x44')+'https://'+_0x52b557[_0xb902('0x45')][_0xb902('0x25')]+_0xb902('0x46')+_0x2b426d+'\x0a\x0a'+_0xb902('0x47')});})[_0xb902('0xb')](function(){_0x5c50c7[_0xb902('0x31')](0xc8)[_0xb902('0x32')]({'message':_0xb902('0x48')});})[_0xb902('0x1e')](function(_0x7405dc){return handleError(_0x5c50c7,0x1f4,_0x7405dc);});};exports[_0xb902('0x49')]=function(_0x904564,_0x25aee6,_0x2fa767){return db[_0xb902('0x3d')]['find']({'where':{'resetPasswordToken':_0x904564[_0xb902('0x4a')][_0xb902('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xb902('0x41')]()}}})[_0xb902('0xb')](function(_0x119ad3){if(!_0x119ad3){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xb902('0x9')][_0xb902('0xa')]({'attributes':['id','securePassword',_0xb902('0x4c'),'passwordHistoryLimit']})[_0xb902('0xb')](function(_0x3f1efc){if(_0x3f1efc[_0xb902('0x4d')])authService['validatePasswordPattern'](_0x904564[_0xb902('0x3b')][_0xb902('0xd')]);if(!_0x3f1efc[_0xb902('0x4c')]||!_0x119ad3[_0xb902('0x4e')])return _0x119ad3;authService[_0xb902('0x4f')](_0x904564['body'][_0xb902('0xd')],_0x119ad3[_0xb902('0x4e')],_0x3f1efc[_0xb902('0x50')]);return _0x119ad3;})[_0xb902('0xb')](function(){_0x119ad3[_0xb902('0xd')]=_0x904564[_0xb902('0x3b')]['password'];_0x119ad3[_0xb902('0x51')]=null;_0x119ad3['resetPasswordExpires']=null;return _0x119ad3['save']();});})[_0xb902('0xb')](function(){_0x25aee6['status'](0xc8)['send']({'message':_0xb902('0x52')});})[_0xb902('0x1e')](function(_0x4e7c22){return handleError(_0x25aee6,0x1f4,_0x4e7c22);});};passport[_0xb902('0x53')](new LocalStrategy({'usernameField':_0xb902('0xc'),'passwordField':_0xb902('0xd')},function(_0x2e316b,_0x58467b,_0x239a34){return localAuthenticate(db['User'],_0x2e316b,_0x58467b,_0x239a34);}));
\ No newline at end of file
index 484716d..a10464d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc5=['/forgot','forgot','/reset/:token','reset','exports','Router','./authLocal.controller','post','login'];(function(_0x4dc16b,_0xb58e2c){var _0x30a136=function(_0xcc1ee7){while(--_0xcc1ee7){_0x4dc16b['push'](_0x4dc16b['shift']());}};_0x30a136(++_0xb58e2c);}(_0xecc5,0x1be));var _0x5ecc=function(_0x923619,_0x2af4f4){_0x923619=_0x923619-0x0;var _0xf855df=_0xecc5[_0x923619];return _0xf855df;};'use strict';var express=require('express');var router=express[_0x5ecc('0x0')]();var controller=require(_0x5ecc('0x1'));router[_0x5ecc('0x2')]('/',controller[_0x5ecc('0x3')]);router[_0x5ecc('0x2')](_0x5ecc('0x4'),controller[_0x5ecc('0x5')]);router[_0x5ecc('0x2')](_0x5ecc('0x6'),controller[_0x5ecc('0x7')]);module[_0x5ecc('0x8')]=router;
\ No newline at end of file
+var _0xbe78=['/reset/:token','reset','exports','Router','post','login','forgot'];(function(_0x972dd2,_0x530ef8){var _0x32c8eb=function(_0x7fb2d4){while(--_0x7fb2d4){_0x972dd2['push'](_0x972dd2['shift']());}};_0x32c8eb(++_0x530ef8);}(_0xbe78,0x81));var _0x8be7=function(_0x14a084,_0x265682){_0x14a084=_0x14a084-0x0;var _0x4ff7d1=_0xbe78[_0x14a084];return _0x4ff7d1;};'use strict';var express=require('express');var router=express[_0x8be7('0x0')]();var controller=require('./authLocal.controller');router[_0x8be7('0x1')]('/',controller[_0x8be7('0x2')]);router[_0x8be7('0x1')]('/forgot',controller[_0x8be7('0x3')]);router[_0x8be7('0x1')](_0x8be7('0x4'),controller[_0x8be7('0x5')]);module[_0x8be7('0x6')]=router;
\ No newline at end of file
index 446fc42..5797323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4280=['sequelize'];(function(_0x2f20c5,_0x54129f){var _0x5f2169=function(_0x19cda0){while(--_0x19cda0){_0x2f20c5['push'](_0x2f20c5['shift']());}};_0x5f2169(++_0x54129f);}(_0x4280,0xf0));var _0x0428=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4280[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0428('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa}};
\ No newline at end of file
+var _0xf0eb=['sequelize','STRING','BOOLEAN','INTEGER'];(function(_0x2d40bc,_0x41393a){var _0x25151a=function(_0x3b0e55){while(--_0x3b0e55){_0x2d40bc['push'](_0x2d40bc['shift']());}};_0x25151a(++_0x41393a);}(_0xf0eb,0x68));var _0xbf0e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xf0eb[_0x2763f2];return _0x3ef471;};'use strict';var Sequelize=require(_0xbf0e('0x0'));module['exports']={'name':{'type':Sequelize[_0xbf0e('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0xbf0e('0x1')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xbf0e('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xbf0e('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 18a05a4..14235e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefec=['undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','filter','where','merge','Automation','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','update','addConditions','Condition','ids','omit','getConditions','findOne','hasOwnProperty','Action','addActions','getActions','pick','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json'];(function(_0x18ac15,_0x4f76ba){var _0x31fd73=function(_0x5112da){while(--_0x5112da){_0x18ac15['push'](_0x18ac15['shift']());}};_0x31fd73(++_0x4f76ba);}(_0xefec,0x1e3));var _0xcefe=function(_0x3df30e,_0x4c5e6f){_0x3df30e=_0x3df30e-0x0;var _0x531356=_0xefec[_0x3df30e];return _0x531356;};'use strict';var emlformat=require(_0xcefe('0x0'));var rimraf=require(_0xcefe('0x1'));var zipdir=require(_0xcefe('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcefe('0x3'));var moment=require(_0xcefe('0x4'));var BPromise=require(_0xcefe('0x5'));var Mustache=require(_0xcefe('0x6'));var util=require(_0xcefe('0x7'));var path=require(_0xcefe('0x8'));var sox=require('sox');var csv=require(_0xcefe('0x9'));var ejs=require(_0xcefe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xcefe('0xb'));var crypto=require('crypto');var jsforce=require(_0xcefe('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xcefe('0x9'));var querystring=require('querystring');var Papa=require(_0xcefe('0xd'));var Redis=require(_0xcefe('0xe'));var authService=require(_0xcefe('0xf'));var qs=require(_0xcefe('0x10'));var as=require(_0xcefe('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcefe('0x12'))('api');var utils=require(_0xcefe('0x13'));var config=require(_0xcefe('0x14'));var licenseUtil=require(_0xcefe('0x15'));var db=require(_0xcefe('0x16'))['db'];function respondWithStatusCode(_0x43b886,_0x32911c){_0x32911c=_0x32911c||0xcc;return function(_0x1be5d7){if(_0x1be5d7){return _0x43b886[_0xcefe('0x17')](_0x32911c);}return _0x43b886['status'](_0x32911c)[_0xcefe('0x18')]();};}function respondWithResult(_0x218850,_0x3712ed){_0x3712ed=_0x3712ed||0xc8;return function(_0x325b6c){if(_0x325b6c){return _0x218850[_0xcefe('0x19')](_0x3712ed)[_0xcefe('0x1a')](_0x325b6c);}};}function respondWithFilteredResult(_0x415616,_0x171eae){return function(_0x17e462){if(_0x17e462){var _0x42e30d=typeof _0x171eae['offset']===_0xcefe('0x1b')&&typeof _0x171eae[_0xcefe('0x1c')]===_0xcefe('0x1b');var _0x636244=_0x17e462[_0xcefe('0x1d')];var _0x56d2d7=_0x42e30d?0x0:_0x171eae[_0xcefe('0x1e')];var _0x4dee43=_0x42e30d?_0x17e462[_0xcefe('0x1d')]:_0x171eae['offset']+_0x171eae['limit'];var _0x1091c6;if(_0x4dee43>=_0x636244){_0x4dee43=_0x636244;_0x1091c6=0xc8;}else{_0x1091c6=0xce;}_0x415616[_0xcefe('0x19')](_0x1091c6);return _0x415616[_0xcefe('0x1f')](_0xcefe('0x20'),_0x56d2d7+'-'+_0x4dee43+'/'+_0x636244)[_0xcefe('0x1a')](_0x17e462);}return null;};}function patchUpdates(_0x52b135){return function(_0x4ee464){try{jsonpatch[_0xcefe('0x21')](_0x4ee464,_0x52b135,!![]);}catch(_0xf4060d){return BPromise['reject'](_0xf4060d);}return _0x4ee464[_0xcefe('0x22')]();};}function saveUpdates(_0x5a08fe,_0x4568e8){return function(_0x4d6462){if(_0x4d6462){return _0x4d6462['update'](_0x5a08fe)[_0xcefe('0x23')](function(_0x545528){return _0x545528;});}return null;};}function removeEntity(_0x4bff31,_0xe362d0){return function(_0x29b9bc){if(_0x29b9bc){return _0x29b9bc[_0xcefe('0x24')]()[_0xcefe('0x23')](function(){_0x4bff31['status'](0xcc)[_0xcefe('0x18')]();});}};}function handleEntityNotFound(_0x27afe2,_0x2af208){return function(_0x1c760c){if(!_0x1c760c){_0x27afe2[_0xcefe('0x17')](0x194);}return _0x1c760c;};}function handleError(_0x178903,_0x27abee){_0x27abee=_0x27abee||0x1f4;return function(_0xfb3995){logger[_0xcefe('0x25')](_0xfb3995[_0xcefe('0x26')]);if(_0xfb3995[_0xcefe('0x27')]){delete _0xfb3995[_0xcefe('0x27')];}_0x178903[_0xcefe('0x19')](_0x27abee)[_0xcefe('0x28')](_0xfb3995);};}exports[_0xcefe('0x29')]=function(_0x3334fe,_0xbeba97){var _0x3735b3={},_0x1be554={},_0x22bec5={'count':0x0,'rows':[]};var _0x898432=_[_0xcefe('0x2a')](db['Automation'][_0xcefe('0x2b')],function(_0x164154){return{'name':_0x164154[_0xcefe('0x2c')],'type':_0x164154[_0xcefe('0x2d')][_0xcefe('0x2e')]};});_0x1be554[_0xcefe('0x2f')]=_[_0xcefe('0x2a')](_0x898432,_0xcefe('0x27'));_0x1be554[_0xcefe('0x30')]=_['keys'](_0x3334fe[_0xcefe('0x30')]);_0x1be554[_0xcefe('0x31')]=_[_0xcefe('0x32')](_0x1be554[_0xcefe('0x2f')],_0x1be554['query']);_0x3735b3['attributes']=_[_0xcefe('0x32')](_0x1be554[_0xcefe('0x2f')],qs[_0xcefe('0x33')](_0x3334fe[_0xcefe('0x30')]['fields']));_0x3735b3[_0xcefe('0x34')]=_0x3735b3[_0xcefe('0x34')][_0xcefe('0x35')]?_0x3735b3[_0xcefe('0x34')]:_0x1be554[_0xcefe('0x2f')];if(!_0x3334fe['query']['hasOwnProperty'](_0xcefe('0x36'))){_0x3735b3['limit']=qs['limit'](_0x3334fe[_0xcefe('0x30')][_0xcefe('0x1c')]);_0x3735b3['offset']=qs['offset'](_0x3334fe[_0xcefe('0x30')][_0xcefe('0x1e')]);}_0x3735b3[_0xcefe('0x37')]=qs['sort'](_0x3334fe[_0xcefe('0x30')][_0xcefe('0x38')]);_0x3735b3['where']=qs[_0xcefe('0x31')](_['pick'](_0x3334fe['query'],_0x1be554[_0xcefe('0x31')]),_0x898432);if(_0x3334fe[_0xcefe('0x30')][_0xcefe('0x39')]){_0x3735b3[_0xcefe('0x3a')]=_[_0xcefe('0x3b')](_0x3735b3[_0xcefe('0x3a')],{'$or':_['map'](_0x898432,function(_0x5b3195){if(_0x5b3195[_0xcefe('0x2d')]!=='VIRTUAL'){var _0x153a9a={};_0x153a9a[_0x5b3195[_0xcefe('0x27')]]={'$like':'%'+_0x3334fe[_0xcefe('0x30')]['filter']+'%'};return _0x153a9a;}})});}_0x3735b3=_['merge']({},_0x3735b3,_0x3334fe['options']);var _0xc1f823={'where':_0x3735b3[_0xcefe('0x3a')]};return db[_0xcefe('0x3c')][_0xcefe('0x1d')](_0xc1f823)[_0xcefe('0x23')](function(_0x4ae582){_0x22bec5[_0xcefe('0x1d')]=_0x4ae582;if(_0x3334fe[_0xcefe('0x30')][_0xcefe('0x3d')]){_0x3735b3[_0xcefe('0x3e')]=[{'all':!![]}];}return db[_0xcefe('0x3c')][_0xcefe('0x3f')](_0x3735b3);})[_0xcefe('0x23')](function(_0x63981){_0x22bec5[_0xcefe('0x40')]=_0x63981;return _0x22bec5;})['then'](respondWithFilteredResult(_0xbeba97,_0x3735b3))[_0xcefe('0x41')](handleError(_0xbeba97,null));};exports[_0xcefe('0x42')]=function(_0x21212a,_0x4847f3){var _0x138500={'raw':![],'where':{'id':_0x21212a[_0xcefe('0x43')]['id']}},_0x4a7854={};_0x4a7854[_0xcefe('0x2f')]=_[_0xcefe('0x44')](db['Automation'][_0xcefe('0x2b')]);_0x4a7854[_0xcefe('0x30')]=_[_0xcefe('0x44')](_0x21212a['query']);_0x4a7854[_0xcefe('0x31')]=_[_0xcefe('0x32')](_0x4a7854[_0xcefe('0x2f')],_0x4a7854[_0xcefe('0x30')]);_0x138500[_0xcefe('0x34')]=_[_0xcefe('0x32')](_0x4a7854[_0xcefe('0x2f')],qs['fields'](_0x21212a['query'][_0xcefe('0x33')]));_0x138500[_0xcefe('0x34')]=_0x138500['attributes'][_0xcefe('0x35')]?_0x138500[_0xcefe('0x34')]:_0x4a7854[_0xcefe('0x2f')];if(_0x21212a['query'][_0xcefe('0x3d')]){_0x138500[_0xcefe('0x3e')]=[{'all':!![]}];}_0x138500=_['merge']({},_0x138500,_0x21212a[_0xcefe('0x45')]);return db[_0xcefe('0x3c')][_0xcefe('0x46')](_0x138500)[_0xcefe('0x23')](handleEntityNotFound(_0x4847f3,null))['then'](respondWithResult(_0x4847f3,null))['catch'](handleError(_0x4847f3,null));};exports[_0xcefe('0x47')]=function(_0x317f9b,_0x22e4af){return db[_0xcefe('0x3c')][_0xcefe('0x47')](_0x317f9b[_0xcefe('0x48')],{})[_0xcefe('0x23')](respondWithResult(_0x22e4af,0xc9))[_0xcefe('0x41')](handleError(_0x22e4af,null));};exports[_0xcefe('0x49')]=function(_0x241b9d,_0x528ab3){if(_0x241b9d[_0xcefe('0x48')]['id']){delete _0x241b9d[_0xcefe('0x48')]['id'];}return db[_0xcefe('0x3c')][_0xcefe('0x46')]({'where':{'id':_0x241b9d[_0xcefe('0x43')]['id']}})[_0xcefe('0x23')](handleEntityNotFound(_0x528ab3,null))[_0xcefe('0x23')](saveUpdates(_0x241b9d[_0xcefe('0x48')],null))['then'](respondWithResult(_0x528ab3,null))[_0xcefe('0x41')](handleError(_0x528ab3,null));};exports[_0xcefe('0x24')]=function(_0x121d28,_0x5adad0){return db[_0xcefe('0x3c')]['find']({'where':{'id':_0x121d28[_0xcefe('0x43')]['id']}})[_0xcefe('0x23')](handleEntityNotFound(_0x5adad0,null))['then'](removeEntity(_0x5adad0,null))[_0xcefe('0x41')](handleError(_0x5adad0,null));};exports[_0xcefe('0x4a')]=function(_0x458782,_0x24b512,_0x3089c5){return db[_0xcefe('0x4b')]['find']({'where':{'id':_0x458782[_0xcefe('0x43')]['id']}})[_0xcefe('0x23')](handleEntityNotFound(_0x24b512,null))[_0xcefe('0x23')](function(_0x1ed051){if(_0x1ed051){return _0x1ed051[_0xcefe('0x4a')](_0x458782[_0xcefe('0x48')][_0xcefe('0x4c')],_[_0xcefe('0x4d')](_0x458782['body'],[_0xcefe('0x4c'),'id'])||{});}})[_0xcefe('0x23')](respondWithResult(_0x24b512,null))[_0xcefe('0x41')](handleError(_0x24b512,null));};exports[_0xcefe('0x4e')]=function(_0x873290,_0x13b15d,_0x3992ae){var _0x4979ba={};var _0x21132c={};var _0x1659fe;var _0x5ba35e;return db[_0xcefe('0x3c')][_0xcefe('0x4f')]({'where':{'id':_0x873290[_0xcefe('0x43')]['id']}})[_0xcefe('0x23')](handleEntityNotFound(_0x13b15d,null))[_0xcefe('0x23')](function(_0x21fe8d){if(_0x21fe8d){_0x1659fe=_0x21fe8d;_0x21132c[_0xcefe('0x2f')]=_['keys'](db[_0xcefe('0x4b')][_0xcefe('0x2b')]);_0x21132c[_0xcefe('0x30')]=_[_0xcefe('0x44')](_0x873290[_0xcefe('0x30')]);_0x21132c[_0xcefe('0x31')]=_[_0xcefe('0x32')](_0x21132c['model'],_0x21132c[_0xcefe('0x30')]);_0x4979ba['attributes']=_[_0xcefe('0x32')](_0x21132c[_0xcefe('0x2f')],qs[_0xcefe('0x33')](_0x873290['query'][_0xcefe('0x33')]));_0x4979ba['attributes']=_0x4979ba['attributes'][_0xcefe('0x35')]?_0x4979ba[_0xcefe('0x34')]:_0x21132c[_0xcefe('0x2f')];_0x4979ba[_0xcefe('0x37')]=qs['sort'](_0x873290[_0xcefe('0x30')]['sort']);_0x4979ba['where']=qs[_0xcefe('0x31')](_['pick'](_0x873290[_0xcefe('0x30')],_0x21132c[_0xcefe('0x31')]));if(_0x873290[_0xcefe('0x30')][_0xcefe('0x39')]){_0x4979ba[_0xcefe('0x3a')]=_[_0xcefe('0x3b')](_0x4979ba[_0xcefe('0x3a')],{'$or':_[_0xcefe('0x2a')](_0x4979ba['attributes'],function(_0x50a0c8){var _0x11d2ee={};_0x11d2ee[_0x50a0c8]={'$like':'%'+_0x873290[_0xcefe('0x30')][_0xcefe('0x39')]+'%'};return _0x11d2ee;})});}_0x4979ba=_['merge']({},_0x4979ba,_0x873290[_0xcefe('0x45')]);return _0x1659fe[_0xcefe('0x4e')](_0x4979ba);}})['then'](function(_0x5d4411){if(_0x5d4411){_0x5ba35e=_0x5d4411[_0xcefe('0x35')];if(!_0x873290[_0xcefe('0x30')][_0xcefe('0x50')](_0xcefe('0x36'))){_0x4979ba['limit']=qs[_0xcefe('0x1c')](_0x873290['query'][_0xcefe('0x1c')]);_0x4979ba['offset']=qs[_0xcefe('0x1e')](_0x873290[_0xcefe('0x30')]['offset']);}return _0x1659fe['getConditions'](_0x4979ba);}})[_0xcefe('0x23')](function(_0x1e0b4e){if(_0x1e0b4e){return _0x1e0b4e?{'count':_0x5ba35e,'rows':_0x1e0b4e}:null;}})[_0xcefe('0x23')](respondWithResult(_0x13b15d,null))[_0xcefe('0x41')](handleError(_0x13b15d,null));};exports['addActions']=function(_0x54d181,_0x37a06b,_0x37dc87){return db[_0xcefe('0x51')][_0xcefe('0x46')]({'where':{'id':_0x54d181['params']['id']}})[_0xcefe('0x23')](handleEntityNotFound(_0x37a06b,null))[_0xcefe('0x23')](function(_0x180ae7){if(_0x180ae7){return _0x180ae7[_0xcefe('0x52')](_0x54d181[_0xcefe('0x48')][_0xcefe('0x4c')],_['omit'](_0x54d181[_0xcefe('0x48')],['ids','id'])||{});}})[_0xcefe('0x23')](respondWithResult(_0x37a06b,null))['catch'](handleError(_0x37a06b,null));};exports[_0xcefe('0x53')]=function(_0x4c2be0,_0x4446ff,_0xc0930b){var _0x105c79={};var _0x4f6e2d={};var _0x3806e9;var _0x2b84bf;return db['Automation'][_0xcefe('0x4f')]({'where':{'id':_0x4c2be0['params']['id']}})['then'](handleEntityNotFound(_0x4446ff,null))[_0xcefe('0x23')](function(_0x53ddb5){if(_0x53ddb5){_0x3806e9=_0x53ddb5;_0x4f6e2d[_0xcefe('0x2f')]=_[_0xcefe('0x44')](db[_0xcefe('0x51')]['rawAttributes']);_0x4f6e2d[_0xcefe('0x30')]=_[_0xcefe('0x44')](_0x4c2be0[_0xcefe('0x30')]);_0x4f6e2d[_0xcefe('0x31')]=_[_0xcefe('0x32')](_0x4f6e2d['model'],_0x4f6e2d[_0xcefe('0x30')]);_0x105c79['attributes']=_[_0xcefe('0x32')](_0x4f6e2d[_0xcefe('0x2f')],qs[_0xcefe('0x33')](_0x4c2be0['query'][_0xcefe('0x33')]));_0x105c79['attributes']=_0x105c79[_0xcefe('0x34')][_0xcefe('0x35')]?_0x105c79['attributes']:_0x4f6e2d['model'];_0x105c79['order']=qs[_0xcefe('0x38')](_0x4c2be0[_0xcefe('0x30')]['sort']);_0x105c79[_0xcefe('0x3a')]=qs[_0xcefe('0x31')](_[_0xcefe('0x54')](_0x4c2be0[_0xcefe('0x30')],_0x4f6e2d[_0xcefe('0x31')]));if(_0x4c2be0[_0xcefe('0x30')][_0xcefe('0x39')]){_0x105c79[_0xcefe('0x3a')]=_['merge'](_0x105c79[_0xcefe('0x3a')],{'$or':_[_0xcefe('0x2a')](_0x105c79[_0xcefe('0x34')],function(_0x5c6dd8){var _0x59e5b2={};_0x59e5b2[_0x5c6dd8]={'$like':'%'+_0x4c2be0['query'][_0xcefe('0x39')]+'%'};return _0x59e5b2;})});}_0x105c79=_[_0xcefe('0x3b')]({},_0x105c79,_0x4c2be0[_0xcefe('0x45')]);return _0x3806e9[_0xcefe('0x53')](_0x105c79);}})[_0xcefe('0x23')](function(_0x52aae9){if(_0x52aae9){_0x2b84bf=_0x52aae9[_0xcefe('0x35')];if(!_0x4c2be0[_0xcefe('0x30')][_0xcefe('0x50')](_0xcefe('0x36'))){_0x105c79[_0xcefe('0x1c')]=qs['limit'](_0x4c2be0[_0xcefe('0x30')]['limit']);_0x105c79[_0xcefe('0x1e')]=qs['offset'](_0x4c2be0[_0xcefe('0x30')][_0xcefe('0x1e')]);}return _0x3806e9[_0xcefe('0x53')](_0x105c79);}})['then'](function(_0x31d69b){if(_0x31d69b){return _0x31d69b?{'count':_0x2b84bf,'rows':_0x31d69b}:null;}})[_0xcefe('0x23')](respondWithResult(_0x4446ff,null))[_0xcefe('0x41')](handleError(_0x4446ff,null));};
\ No newline at end of file
+var _0x1e38=['name','send','index','map','Automation','rawAttributes','key','model','query','keys','filters','attributes','intersection','fields','order','sort','pick','where','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','create','body','find','params','addConditions','Condition','ids','getConditions','findOne','length','hasOwnProperty','nolimit','Action','addActions','omit','getActions','eml-format','rimraf','fast-json-patch','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','error'];(function(_0x89a2b8,_0x2ffa6d){var _0x46b849=function(_0x592d20){while(--_0x592d20){_0x89a2b8['push'](_0x89a2b8['shift']());}};_0x46b849(++_0x2ffa6d);}(_0x1e38,0x178));var _0x81e3=function(_0x5f49c0,_0x27a1b4){_0x5f49c0=_0x5f49c0-0x0;var _0x5ab653=_0x1e38[_0x5f49c0];return _0x5ab653;};'use strict';var emlformat=require(_0x81e3('0x0'));var rimraf=require(_0x81e3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x81e3('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x81e3('0x3'));var util=require(_0x81e3('0x4'));var path=require(_0x81e3('0x5'));var sox=require(_0x81e3('0x6'));var csv=require(_0x81e3('0x7'));var ejs=require(_0x81e3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x81e3('0x9'));var crypto=require(_0x81e3('0xa'));var jsforce=require(_0x81e3('0xb'));var deskjs=require(_0x81e3('0xc'));var toCsv=require(_0x81e3('0x7'));var querystring=require(_0x81e3('0xd'));var Papa=require(_0x81e3('0xe'));var Redis=require('ioredis');var authService=require(_0x81e3('0xf'));var qs=require(_0x81e3('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x81e3('0x11'));var logger=require(_0x81e3('0x12'))(_0x81e3('0x13'));var utils=require(_0x81e3('0x14'));var config=require(_0x81e3('0x15'));var licenseUtil=require(_0x81e3('0x16'));var db=require(_0x81e3('0x17'))['db'];function respondWithStatusCode(_0xa16c94,_0x2222e3){_0x2222e3=_0x2222e3||0xcc;return function(_0x2915ee){if(_0x2915ee){return _0xa16c94[_0x81e3('0x18')](_0x2222e3);}return _0xa16c94[_0x81e3('0x19')](_0x2222e3)[_0x81e3('0x1a')]();};}function respondWithResult(_0x424bc5,_0x32b722){_0x32b722=_0x32b722||0xc8;return function(_0x3715a9){if(_0x3715a9){return _0x424bc5['status'](_0x32b722)[_0x81e3('0x1b')](_0x3715a9);}};}function respondWithFilteredResult(_0x12e3d0,_0x44c521){return function(_0x4b8aff){if(_0x4b8aff){var _0x2b10d8=typeof _0x44c521[_0x81e3('0x1c')]===_0x81e3('0x1d')&&typeof _0x44c521[_0x81e3('0x1e')]==='undefined';var _0xab0ce7=_0x4b8aff[_0x81e3('0x1f')];var _0x3d1cbb=_0x2b10d8?0x0:_0x44c521['offset'];var _0x224e88=_0x2b10d8?_0x4b8aff[_0x81e3('0x1f')]:_0x44c521[_0x81e3('0x1c')]+_0x44c521[_0x81e3('0x1e')];var _0x14520b;if(_0x224e88>=_0xab0ce7){_0x224e88=_0xab0ce7;_0x14520b=0xc8;}else{_0x14520b=0xce;}_0x12e3d0['status'](_0x14520b);return _0x12e3d0['set'](_0x81e3('0x20'),_0x3d1cbb+'-'+_0x224e88+'/'+_0xab0ce7)[_0x81e3('0x1b')](_0x4b8aff);}return null;};}function patchUpdates(_0x1e1082){return function(_0x38e349){try{jsonpatch[_0x81e3('0x21')](_0x38e349,_0x1e1082,!![]);}catch(_0x3203d2){return BPromise['reject'](_0x3203d2);}return _0x38e349[_0x81e3('0x22')]();};}function saveUpdates(_0x26b4f2,_0x4534d1){return function(_0x43cd83){if(_0x43cd83){return _0x43cd83[_0x81e3('0x23')](_0x26b4f2)[_0x81e3('0x24')](function(_0x4372b5){return _0x4372b5;});}return null;};}function removeEntity(_0x30b8dd,_0x20d198){return function(_0x28bae2){if(_0x28bae2){return _0x28bae2[_0x81e3('0x25')]()[_0x81e3('0x24')](function(){_0x30b8dd['status'](0xcc)[_0x81e3('0x1a')]();});}};}function handleEntityNotFound(_0x4ebe11,_0x253e62){return function(_0x498fb4){if(!_0x498fb4){_0x4ebe11[_0x81e3('0x18')](0x194);}return _0x498fb4;};}function handleError(_0x3eac25,_0x13fda7){_0x13fda7=_0x13fda7||0x1f4;return function(_0x22d025){logger[_0x81e3('0x26')](_0x22d025['stack']);if(_0x22d025[_0x81e3('0x27')]){delete _0x22d025[_0x81e3('0x27')];}_0x3eac25[_0x81e3('0x19')](_0x13fda7)[_0x81e3('0x28')](_0x22d025);};}exports[_0x81e3('0x29')]=function(_0x17c9ee,_0x4fe825){var _0x4e9b71={},_0x5bc461={},_0x4a1237={'count':0x0,'rows':[]};var _0x2ae2d5=_[_0x81e3('0x2a')](db[_0x81e3('0x2b')][_0x81e3('0x2c')],function(_0x3e8e4c){return{'name':_0x3e8e4c['fieldName'],'type':_0x3e8e4c['type'][_0x81e3('0x2d')]};});_0x5bc461[_0x81e3('0x2e')]=_['map'](_0x2ae2d5,_0x81e3('0x27'));_0x5bc461[_0x81e3('0x2f')]=_[_0x81e3('0x30')](_0x17c9ee[_0x81e3('0x2f')]);_0x5bc461[_0x81e3('0x31')]=_['intersection'](_0x5bc461['model'],_0x5bc461[_0x81e3('0x2f')]);_0x4e9b71[_0x81e3('0x32')]=_[_0x81e3('0x33')](_0x5bc461['model'],qs[_0x81e3('0x34')](_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x34')]));_0x4e9b71[_0x81e3('0x32')]=_0x4e9b71['attributes']['length']?_0x4e9b71[_0x81e3('0x32')]:_0x5bc461['model'];if(!_0x17c9ee[_0x81e3('0x2f')]['hasOwnProperty']('nolimit')){_0x4e9b71[_0x81e3('0x1e')]=qs[_0x81e3('0x1e')](_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x1e')]);_0x4e9b71[_0x81e3('0x1c')]=qs['offset'](_0x17c9ee['query'][_0x81e3('0x1c')]);}_0x4e9b71[_0x81e3('0x35')]=qs[_0x81e3('0x36')](_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x36')]);_0x4e9b71['where']=qs[_0x81e3('0x31')](_[_0x81e3('0x37')](_0x17c9ee[_0x81e3('0x2f')],_0x5bc461[_0x81e3('0x31')]),_0x2ae2d5);if(_0x17c9ee[_0x81e3('0x2f')]['filter']){_0x4e9b71[_0x81e3('0x38')]=_[_0x81e3('0x39')](_0x4e9b71[_0x81e3('0x38')],{'$or':_[_0x81e3('0x2a')](_0x2ae2d5,function(_0x3253dc){if(_0x3253dc[_0x81e3('0x3a')]!=='VIRTUAL'){var _0x23e968={};_0x23e968[_0x3253dc[_0x81e3('0x27')]]={'$like':'%'+_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x3b')]+'%'};return _0x23e968;}})});}_0x4e9b71=_[_0x81e3('0x39')]({},_0x4e9b71,_0x17c9ee[_0x81e3('0x3c')]);var _0x49724c={'where':_0x4e9b71[_0x81e3('0x38')]};return db['Automation']['count'](_0x49724c)[_0x81e3('0x24')](function(_0x46c7b0){_0x4a1237[_0x81e3('0x1f')]=_0x46c7b0;if(_0x17c9ee[_0x81e3('0x2f')][_0x81e3('0x3d')]){_0x4e9b71[_0x81e3('0x3e')]=[{'all':!![]}];}return db[_0x81e3('0x2b')][_0x81e3('0x3f')](_0x4e9b71);})[_0x81e3('0x24')](function(_0x9eae81){_0x4a1237[_0x81e3('0x40')]=_0x9eae81;return _0x4a1237;})[_0x81e3('0x24')](respondWithFilteredResult(_0x4fe825,_0x4e9b71))[_0x81e3('0x41')](handleError(_0x4fe825,null));};exports[_0x81e3('0x42')]=function(_0x4529d4,_0xccec7e){var _0x5d2041={'raw':![],'where':{'id':_0x4529d4['params']['id']}},_0x163bf6={};_0x163bf6[_0x81e3('0x2e')]=_['keys'](db[_0x81e3('0x2b')][_0x81e3('0x2c')]);_0x163bf6[_0x81e3('0x2f')]=_[_0x81e3('0x30')](_0x4529d4[_0x81e3('0x2f')]);_0x163bf6[_0x81e3('0x31')]=_['intersection'](_0x163bf6[_0x81e3('0x2e')],_0x163bf6[_0x81e3('0x2f')]);_0x5d2041[_0x81e3('0x32')]=_['intersection'](_0x163bf6[_0x81e3('0x2e')],qs[_0x81e3('0x34')](_0x4529d4[_0x81e3('0x2f')][_0x81e3('0x34')]));_0x5d2041[_0x81e3('0x32')]=_0x5d2041['attributes']['length']?_0x5d2041[_0x81e3('0x32')]:_0x163bf6['model'];if(_0x4529d4[_0x81e3('0x2f')][_0x81e3('0x3d')]){_0x5d2041[_0x81e3('0x3e')]=[{'all':!![]}];}_0x5d2041=_[_0x81e3('0x39')]({},_0x5d2041,_0x4529d4[_0x81e3('0x3c')]);return db[_0x81e3('0x2b')]['find'](_0x5d2041)[_0x81e3('0x24')](handleEntityNotFound(_0xccec7e,null))[_0x81e3('0x24')](respondWithResult(_0xccec7e,null))['catch'](handleError(_0xccec7e,null));};exports[_0x81e3('0x43')]=function(_0x1e82b6,_0x370a80){return db['Automation']['create'](_0x1e82b6[_0x81e3('0x44')],{})[_0x81e3('0x24')](respondWithResult(_0x370a80,0xc9))[_0x81e3('0x41')](handleError(_0x370a80,null));};exports[_0x81e3('0x23')]=function(_0x14045e,_0x12e7f7){if(_0x14045e['body']['id']){delete _0x14045e[_0x81e3('0x44')]['id'];}return db[_0x81e3('0x2b')][_0x81e3('0x45')]({'where':{'id':_0x14045e[_0x81e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x12e7f7,null))[_0x81e3('0x24')](saveUpdates(_0x14045e[_0x81e3('0x44')],null))['then'](respondWithResult(_0x12e7f7,null))[_0x81e3('0x41')](handleError(_0x12e7f7,null));};exports[_0x81e3('0x25')]=function(_0x57d58a,_0x347e5f){return db[_0x81e3('0x2b')][_0x81e3('0x45')]({'where':{'id':_0x57d58a[_0x81e3('0x46')]['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0x347e5f,null))[_0x81e3('0x24')](removeEntity(_0x347e5f,null))[_0x81e3('0x41')](handleError(_0x347e5f,null));};exports[_0x81e3('0x47')]=function(_0x3fc65a,_0x1c86a8,_0xc02986){return db[_0x81e3('0x48')][_0x81e3('0x45')]({'where':{'id':_0x3fc65a[_0x81e3('0x46')]['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0x1c86a8,null))[_0x81e3('0x24')](function(_0x3f8690){if(_0x3f8690){return _0x3f8690[_0x81e3('0x47')](_0x3fc65a[_0x81e3('0x44')][_0x81e3('0x49')],_['omit'](_0x3fc65a['body'],[_0x81e3('0x49'),'id'])||{});}})[_0x81e3('0x24')](respondWithResult(_0x1c86a8,null))[_0x81e3('0x41')](handleError(_0x1c86a8,null));};exports[_0x81e3('0x4a')]=function(_0x3ca6be,_0x3040e0,_0x586dbf){var _0x1278db={};var _0x4bde6b={};var _0x1cd7b5;var _0x360e0b;return db[_0x81e3('0x2b')][_0x81e3('0x4b')]({'where':{'id':_0x3ca6be['params']['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0x3040e0,null))['then'](function(_0x553733){if(_0x553733){_0x1cd7b5=_0x553733;_0x4bde6b[_0x81e3('0x2e')]=_[_0x81e3('0x30')](db['Condition'][_0x81e3('0x2c')]);_0x4bde6b[_0x81e3('0x2f')]=_[_0x81e3('0x30')](_0x3ca6be[_0x81e3('0x2f')]);_0x4bde6b[_0x81e3('0x31')]=_[_0x81e3('0x33')](_0x4bde6b[_0x81e3('0x2e')],_0x4bde6b['query']);_0x1278db['attributes']=_[_0x81e3('0x33')](_0x4bde6b['model'],qs[_0x81e3('0x34')](_0x3ca6be['query'][_0x81e3('0x34')]));_0x1278db['attributes']=_0x1278db[_0x81e3('0x32')][_0x81e3('0x4c')]?_0x1278db[_0x81e3('0x32')]:_0x4bde6b[_0x81e3('0x2e')];_0x1278db['order']=qs[_0x81e3('0x36')](_0x3ca6be['query']['sort']);_0x1278db['where']=qs[_0x81e3('0x31')](_['pick'](_0x3ca6be[_0x81e3('0x2f')],_0x4bde6b[_0x81e3('0x31')]));if(_0x3ca6be[_0x81e3('0x2f')][_0x81e3('0x3b')]){_0x1278db[_0x81e3('0x38')]=_[_0x81e3('0x39')](_0x1278db[_0x81e3('0x38')],{'$or':_[_0x81e3('0x2a')](_0x1278db[_0x81e3('0x32')],function(_0x311051){var _0x22f552={};_0x22f552[_0x311051]={'$like':'%'+_0x3ca6be['query'][_0x81e3('0x3b')]+'%'};return _0x22f552;})});}_0x1278db=_[_0x81e3('0x39')]({},_0x1278db,_0x3ca6be['options']);return _0x1cd7b5[_0x81e3('0x4a')](_0x1278db);}})[_0x81e3('0x24')](function(_0x21573b){if(_0x21573b){_0x360e0b=_0x21573b[_0x81e3('0x4c')];if(!_0x3ca6be['query'][_0x81e3('0x4d')](_0x81e3('0x4e'))){_0x1278db[_0x81e3('0x1e')]=qs[_0x81e3('0x1e')](_0x3ca6be[_0x81e3('0x2f')]['limit']);_0x1278db['offset']=qs[_0x81e3('0x1c')](_0x3ca6be[_0x81e3('0x2f')][_0x81e3('0x1c')]);}return _0x1cd7b5[_0x81e3('0x4a')](_0x1278db);}})[_0x81e3('0x24')](function(_0x12672f){if(_0x12672f){return _0x12672f?{'count':_0x360e0b,'rows':_0x12672f}:null;}})[_0x81e3('0x24')](respondWithResult(_0x3040e0,null))[_0x81e3('0x41')](handleError(_0x3040e0,null));};exports['addActions']=function(_0xb1565e,_0x4a5209,_0xcdf2d3){return db[_0x81e3('0x4f')][_0x81e3('0x45')]({'where':{'id':_0xb1565e[_0x81e3('0x46')]['id']}})['then'](handleEntityNotFound(_0x4a5209,null))['then'](function(_0xb7cbdc){if(_0xb7cbdc){return _0xb7cbdc[_0x81e3('0x50')](_0xb1565e[_0x81e3('0x44')]['ids'],_[_0x81e3('0x51')](_0xb1565e[_0x81e3('0x44')],[_0x81e3('0x49'),'id'])||{});}})['then'](respondWithResult(_0x4a5209,null))[_0x81e3('0x41')](handleError(_0x4a5209,null));};exports['getActions']=function(_0x40c92a,_0xb937a7,_0x1dfdc9){var _0x14e108={};var _0x2afdd2={};var _0x4ae441;var _0x34198c;return db[_0x81e3('0x2b')]['findOne']({'where':{'id':_0x40c92a[_0x81e3('0x46')]['id']}})[_0x81e3('0x24')](handleEntityNotFound(_0xb937a7,null))['then'](function(_0x131b07){if(_0x131b07){_0x4ae441=_0x131b07;_0x2afdd2[_0x81e3('0x2e')]=_[_0x81e3('0x30')](db['Action'][_0x81e3('0x2c')]);_0x2afdd2[_0x81e3('0x2f')]=_['keys'](_0x40c92a[_0x81e3('0x2f')]);_0x2afdd2[_0x81e3('0x31')]=_['intersection'](_0x2afdd2[_0x81e3('0x2e')],_0x2afdd2[_0x81e3('0x2f')]);_0x14e108['attributes']=_[_0x81e3('0x33')](_0x2afdd2['model'],qs[_0x81e3('0x34')](_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x34')]));_0x14e108[_0x81e3('0x32')]=_0x14e108[_0x81e3('0x32')][_0x81e3('0x4c')]?_0x14e108[_0x81e3('0x32')]:_0x2afdd2[_0x81e3('0x2e')];_0x14e108[_0x81e3('0x35')]=qs[_0x81e3('0x36')](_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x36')]);_0x14e108[_0x81e3('0x38')]=qs[_0x81e3('0x31')](_[_0x81e3('0x37')](_0x40c92a[_0x81e3('0x2f')],_0x2afdd2['filters']));if(_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x3b')]){_0x14e108[_0x81e3('0x38')]=_[_0x81e3('0x39')](_0x14e108[_0x81e3('0x38')],{'$or':_[_0x81e3('0x2a')](_0x14e108[_0x81e3('0x32')],function(_0x2c731a){var _0x2d9fc3={};_0x2d9fc3[_0x2c731a]={'$like':'%'+_0x40c92a['query'][_0x81e3('0x3b')]+'%'};return _0x2d9fc3;})});}_0x14e108=_['merge']({},_0x14e108,_0x40c92a[_0x81e3('0x3c')]);return _0x4ae441[_0x81e3('0x52')](_0x14e108);}})['then'](function(_0x14fa53){if(_0x14fa53){_0x34198c=_0x14fa53[_0x81e3('0x4c')];if(!_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x4d')](_0x81e3('0x4e'))){_0x14e108[_0x81e3('0x1e')]=qs[_0x81e3('0x1e')](_0x40c92a['query'][_0x81e3('0x1e')]);_0x14e108[_0x81e3('0x1c')]=qs[_0x81e3('0x1c')](_0x40c92a[_0x81e3('0x2f')][_0x81e3('0x1c')]);}return _0x4ae441[_0x81e3('0x52')](_0x14e108);}})[_0x81e3('0x24')](function(_0x3c6a01){if(_0x3c6a01){return _0x3c6a01?{'count':_0x34198c,'rows':_0x3c6a01}:null;}})['then'](respondWithResult(_0xb937a7,null))[_0x81e3('0x41')](handleError(_0xb937a7,null));};
\ No newline at end of file
index dafa315..30f8273 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7535=['../../config/environment','./automation.attributes','define','Automation','lodash','util','../../config/logger','moment','path','rimraf'];(function(_0x53f37f,_0xfb0b18){var _0x2fe5f8=function(_0x76ef2d){while(--_0x76ef2d){_0x53f37f['push'](_0x53f37f['shift']());}};_0x2fe5f8(++_0xfb0b18);}(_0x7535,0x7c));var _0x5753=function(_0x519756,_0x288785){_0x519756=_0x519756-0x0;var _0x37047e=_0x7535[_0x519756];return _0x37047e;};'use strict';var _=require(_0x5753('0x0'));var util=require(_0x5753('0x1'));var logger=require(_0x5753('0x2'))('api');var moment=require(_0x5753('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5753('0x4'));var rimraf=require(_0x5753('0x5'));var config=require(_0x5753('0x6'));var attributes=require(_0x5753('0x7'));module['exports']=function(_0x119701,_0x5960dc){return _0x119701[_0x5753('0x8')](_0x5753('0x9'),attributes,{'tableName':'tools_automations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1b3e=['exports','define','tools_automations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes'];(function(_0x41da6,_0x42431b){var _0x282340=function(_0x3481f2){while(--_0x3481f2){_0x41da6['push'](_0x41da6['shift']());}};_0x282340(++_0x42431b);}(_0x1b3e,0x87));var _0xe1b3=function(_0x41e20b,_0x573d6c){_0x41e20b=_0x41e20b-0x0;var _0x59a15c=_0x1b3e[_0x41e20b];return _0x59a15c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe1b3('0x0'))(_0xe1b3('0x1'));var moment=require(_0xe1b3('0x2'));var BPromise=require(_0xe1b3('0x3'));var rp=require(_0xe1b3('0x4'));var fs=require('fs');var path=require(_0xe1b3('0x5'));var rimraf=require(_0xe1b3('0x6'));var config=require(_0xe1b3('0x7'));var attributes=require(_0xe1b3('0x8'));module[_0xe1b3('0x9')]=function(_0xf0fede,_0x492e88){return _0xf0fede[_0xe1b3('0xa')]('Automation',attributes,{'tableName':_0xe1b3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index db3e946..78d760e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d8=['randomstring','ioredis','../../mysqldb','rpc','client','request','then','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird'];(function(_0x17c1da,_0x36ecce){var _0x5552f5=function(_0x1cfc88){while(--_0x1cfc88){_0x17c1da['push'](_0x17c1da['shift']());}};_0x5552f5(++_0x36ecce);}(_0x98d8,0xce));var _0x898d=function(_0x295b1a,_0x1e31a){_0x295b1a=_0x295b1a-0x0;var _0x2bb42b=_0x98d8[_0x295b1a];return _0x2bb42b;};'use strict';var _=require(_0x898d('0x0'));var util=require(_0x898d('0x1'));var moment=require(_0x898d('0x2'));var BPromise=require(_0x898d('0x3'));var rs=require(_0x898d('0x4'));var fs=require('fs');var Redis=require(_0x898d('0x5'));var db=require(_0x898d('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x898d('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x898d('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16b99a,_0x4e8c68,_0x1de5df){return new BPromise(function(_0x4fe1bf,_0x3e9ba6){return client[_0x898d('0x9')](_0x16b99a,_0x1de5df)[_0x898d('0xa')](function(_0x40f217){logger[_0x898d('0xb')](_0x898d('0xc'),_0x4e8c68,_0x898d('0xd'));logger[_0x898d('0xe')](_0x898d('0xf'),_0x4e8c68,_0x898d('0xd'),JSON[_0x898d('0x10')](_0x40f217));if(_0x40f217[_0x898d('0x11')]){if(_0x40f217[_0x898d('0x11')][_0x898d('0x12')]===0x1f4){logger[_0x898d('0x11')]('Automation,\x20%s,\x20%s',_0x4e8c68,_0x40f217[_0x898d('0x11')][_0x898d('0x13')]);return _0x3e9ba6(_0x40f217['error'][_0x898d('0x13')]);}logger[_0x898d('0x11')](_0x898d('0xc'),_0x4e8c68,_0x40f217[_0x898d('0x11')][_0x898d('0x13')]);return _0x4fe1bf(_0x40f217[_0x898d('0x11')][_0x898d('0x13')]);}else{logger['info'](_0x898d('0xc'),_0x4e8c68,_0x898d('0xd'));_0x4fe1bf(_0x40f217['result']['message']);}})[_0x898d('0x14')](function(_0x42a098){logger[_0x898d('0x11')](_0x898d('0xc'),_0x4e8c68,_0x42a098);_0x3e9ba6(_0x42a098);});});}
\ No newline at end of file
+var _0xa3e8=['Automation,\x20%s,\x20%s','request\x20sent','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info'];(function(_0x544745,_0x581565){var _0x4f41dc=function(_0x106ae9){while(--_0x106ae9){_0x544745['push'](_0x544745['shift']());}};_0x4f41dc(++_0x581565);}(_0xa3e8,0x127));var _0x8a3e=function(_0x221837,_0x194718){_0x221837=_0x221837-0x0;var _0x44164a=_0xa3e8[_0x221837];return _0x44164a;};'use strict';var _=require(_0x8a3e('0x0'));var util=require(_0x8a3e('0x1'));var moment=require(_0x8a3e('0x2'));var BPromise=require('bluebird');var rs=require(_0x8a3e('0x3'));var fs=require('fs');var Redis=require(_0x8a3e('0x4'));var db=require(_0x8a3e('0x5'))['db'];var utils=require(_0x8a3e('0x6'));var logger=require(_0x8a3e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8a3e('0x8')][_0x8a3e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2052a8,_0x5a2a25,_0x27f08d){return new BPromise(function(_0x4c7f41,_0x437cde){return client[_0x8a3e('0xa')](_0x2052a8,_0x27f08d)[_0x8a3e('0xb')](function(_0x402a96){logger[_0x8a3e('0xc')](_0x8a3e('0xd'),_0x5a2a25,_0x8a3e('0xe'));logger['debug'](_0x8a3e('0xf'),_0x5a2a25,_0x8a3e('0xe'),JSON[_0x8a3e('0x10')](_0x402a96));if(_0x402a96['error']){if(_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x12')]===0x1f4){logger[_0x8a3e('0x11')](_0x8a3e('0xd'),_0x5a2a25,_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);return _0x437cde(_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);}logger[_0x8a3e('0x11')](_0x8a3e('0xd'),_0x5a2a25,_0x402a96[_0x8a3e('0x11')][_0x8a3e('0x13')]);return _0x4c7f41(_0x402a96[_0x8a3e('0x11')]['message']);}else{logger[_0x8a3e('0xc')](_0x8a3e('0xd'),_0x5a2a25,_0x8a3e('0xe'));_0x4c7f41(_0x402a96[_0x8a3e('0x14')][_0x8a3e('0x13')]);}})[_0x8a3e('0x15')](function(_0x48e5a8){logger[_0x8a3e('0x11')]('Automation,\x20%s,\x20%s',_0x5a2a25,_0x48e5a8);_0x437cde(_0x48e5a8);});});}
\ No newline at end of file
index 17e7342..fe69bc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbab0=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addActions','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x5f42f1,_0x956be5){var _0x5534ee=function(_0x532333){while(--_0x532333){_0x5f42f1['push'](_0x5f42f1['shift']());}};_0x5534ee(++_0x956be5);}(_0xbab0,0x183));var _0x0bab=function(_0x5f5205,_0x6c342){_0x5f5205=_0x5f5205-0x0;var _0x2dcf9f=_0xbab0[_0x5f5205];return _0x2dcf9f;};'use strict';var multer=require(_0x0bab('0x0'));var util=require(_0x0bab('0x1'));var path=require(_0x0bab('0x2'));var timeout=require(_0x0bab('0x3'));var express=require('express');var router=express[_0x0bab('0x4')]();var fs_extra=require(_0x0bab('0x5'));var auth=require(_0x0bab('0x6'));var interaction=require(_0x0bab('0x7'));var config=require(_0x0bab('0x8'));var controller=require(_0x0bab('0x9'));router[_0x0bab('0xa')]('/',auth[_0x0bab('0xb')](),controller[_0x0bab('0xc')]);router[_0x0bab('0xa')]('/:id',auth[_0x0bab('0xb')](),controller[_0x0bab('0xd')]);router['get'](_0x0bab('0xe'),auth[_0x0bab('0xb')](),controller[_0x0bab('0xf')]);router[_0x0bab('0xa')](_0x0bab('0x10'),auth['isAuthenticated'](),controller[_0x0bab('0x11')]);router[_0x0bab('0x12')]('/',auth[_0x0bab('0xb')](),controller[_0x0bab('0x13')]);router['post'](_0x0bab('0xe'),auth[_0x0bab('0xb')](),controller['addConditions']);router[_0x0bab('0x12')](_0x0bab('0x10'),auth[_0x0bab('0xb')](),controller[_0x0bab('0x14')]);router['put'](_0x0bab('0x15'),auth[_0x0bab('0xb')](),controller[_0x0bab('0x16')]);router[_0x0bab('0x17')](_0x0bab('0x15'),auth[_0x0bab('0xb')](),controller[_0x0bab('0x18')]);module[_0x0bab('0x19')]=router;
\ No newline at end of file
+var _0x6263=['put','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','/:id/conditions','/:id/actions','post','create','addConditions','addActions'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0x6263,0x19d));var _0x3626=function(_0x488dd0,_0x1e0044){_0x488dd0=_0x488dd0-0x0;var _0xb0577d=_0x6263[_0x488dd0];return _0xb0577d;};'use strict';var multer=require(_0x3626('0x0'));var util=require(_0x3626('0x1'));var path=require(_0x3626('0x2'));var timeout=require(_0x3626('0x3'));var express=require(_0x3626('0x4'));var router=express['Router']();var fs_extra=require(_0x3626('0x5'));var auth=require(_0x3626('0x6'));var interaction=require(_0x3626('0x7'));var config=require(_0x3626('0x8'));var controller=require('./automation.controller');router[_0x3626('0x9')]('/',auth['isAuthenticated'](),controller[_0x3626('0xa')]);router[_0x3626('0x9')]('/:id',auth[_0x3626('0xb')](),controller[_0x3626('0xc')]);router['get'](_0x3626('0xd'),auth[_0x3626('0xb')](),controller['getConditions']);router['get'](_0x3626('0xe'),auth[_0x3626('0xb')](),controller['getActions']);router[_0x3626('0xf')]('/',auth[_0x3626('0xb')](),controller[_0x3626('0x10')]);router[_0x3626('0xf')](_0x3626('0xd'),auth['isAuthenticated'](),controller[_0x3626('0x11')]);router[_0x3626('0xf')]('/:id/actions',auth[_0x3626('0xb')](),controller[_0x3626('0x12')]);router[_0x3626('0x13')](_0x3626('0x14'),auth[_0x3626('0xb')](),controller[_0x3626('0x15')]);router[_0x3626('0x16')](_0x3626('0x14'),auth[_0x3626('0xb')](),controller[_0x3626('0x17')]);module['exports']=router;
\ No newline at end of file
index ac1e895..86bf44f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa56=['Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','exports','STRING','name','ivr','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','INTEGER','#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)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','ENUM','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)'];(function(_0x165f01,_0x368fe0){var _0x425b96=function(_0x2425a7){while(--_0x2425a7){_0x165f01['push'](_0x165f01['shift']());}};_0x425b96(++_0x368fe0);}(_0xaa56,0xc6));var _0x6aa5=function(_0x375c6c,_0x48b546){_0x375c6c=_0x375c6c-0x0;var _0x42ef3e=_0xaa56[_0x375c6c];return _0x42ef3e;};'use strict';var Sequelize=require('sequelize');module[_0x6aa5('0x0')]={'name':{'type':Sequelize[_0x6aa5('0x1')],'unique':_0x6aa5('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x6aa5('0x3')),'allowNull':![],'defaultValue':_0x6aa5('0x3')},'description':{'type':Sequelize[_0x6aa5('0x1')]},'active':{'type':Sequelize[_0x6aa5('0x4')],'defaultValue':0x0,'comment':_0x6aa5('0x5')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0x6aa5('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':'Max\x20200\x20calls.'},'dialOriginateCallerIdName':{'type':Sequelize[_0x6aa5('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x6aa5('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x6aa5('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x7')},'dialCongestionMaxRetry':{'type':Sequelize[_0x6aa5('0x8')](0x3)[_0x6aa5('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x6aa5('0x8')](0x5)[_0x6aa5('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6aa5('0xa')},'dialBusyMaxRetry':{'type':Sequelize[_0x6aa5('0x8')](0x3)[_0x6aa5('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0xb')},'dialBusyRetryFrequency':{'type':Sequelize[_0x6aa5('0x8')](0x5)[_0x6aa5('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6aa5('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x6aa5('0x6')],'defaultValue':0x3,'comment':_0x6aa5('0xd')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x6aa5('0x8')](0x5)[_0x6aa5('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x6aa5('0xe')},'dialTimezone':{'type':Sequelize[_0x6aa5('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x6aa5('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0x6aa5('0xf')](_0x6aa5('0x10'),'never',_0x6aa5('0x11')),'defaultValue':_0x6aa5('0x10')},'dialAMDActive':{'type':Sequelize[_0x6aa5('0x4')],'defaultValue':0x0,'comment':_0x6aa5('0x12')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x6aa5('0x13')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x6aa5('0x6')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x6aa5('0x14')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x6aa5('0x15')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x6aa5('0x8')](0x9)[_0x6aa5('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x6aa5('0x8')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x6aa5('0x16')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x6aa5('0x8')](0x9)[_0x6aa5('0x6')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x6aa5('0x17')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0x6aa5('0x6')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x6aa5('0x18')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x6aa5('0x8')](0x5)[_0x6aa5('0x6')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x6aa5('0x19')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x6aa5('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0x6aa5('0xf')]('DESC',_0x6aa5('0x1a')),'defaultValue':_0x6aa5('0x1b')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0x6aa5('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6aa5('0x1c')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x6aa5('0x6')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x6aa5('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x6aa5('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x6aa5('0x8')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6aa5('0x1f')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x20')},'dialDropRetryFrequency':{'type':Sequelize[_0x6aa5('0x8')](0x5)[_0x6aa5('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x6aa5('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x21')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6aa5('0x22')},'dialMachineMaxRetry':{'type':Sequelize[_0x6aa5('0x8')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x23')},'dialMachineRetryFrequency':{'type':Sequelize[_0x6aa5('0x8')](0x5)[_0x6aa5('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6aa5('0x24')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x6aa5('0x8')](0x3)[_0x6aa5('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x6aa5('0x25')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x6aa5('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x6aa5('0x26')}};
\ No newline at end of file
+var _0xb12a=['name','ENUM','ivr','BOOLEAN','Active/Disactive\x20Campaign','Max\x20200\x20calls.','UNSIGNED','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','INTEGER','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','ASC','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xb12a,0x145));var _0xab12=function(_0x429f9a,_0x143de1){_0x429f9a=_0x429f9a-0x0;var _0x231284=_0xb12a[_0x429f9a];return _0x231284;};'use strict';var Sequelize=require(_0xab12('0x0'));module[_0xab12('0x1')]={'name':{'type':Sequelize[_0xab12('0x2')],'unique':_0xab12('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xab12('0x4')](_0xab12('0x5')),'allowNull':![],'defaultValue':_0xab12('0x5')},'description':{'type':Sequelize[_0xab12('0x2')]},'active':{'type':Sequelize[_0xab12('0x6')],'defaultValue':0x0,'comment':_0xab12('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xab12('0x8')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xab12('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xab12('0x9')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'comment':_0xab12('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xab12('0x10')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xab12('0x2')],'defaultValue':_0xab12('0x11')},'dialCheckDuplicateType':{'type':Sequelize[_0xab12('0x4')](_0xab12('0x12'),_0xab12('0x13'),'onlyIfOpen'),'defaultValue':_0xab12('0x12')},'dialAMDActive':{'type':Sequelize[_0xab12('0x6')],'defaultValue':0x0,'comment':_0xab12('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xab12('0x15')},'dialAMDGreeting':{'type':Sequelize[_0xab12('0xb')](0x9)[_0xab12('0x9')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xab12('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xab12('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0xab12('0xb')](0x9)[_0xab12('0x9')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xab12('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xab12('0xb')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xab12('0x19')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xab12('0xb')](0x9)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xab12('0x1a')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xab12('0x1b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC',_0xab12('0x1c')),'defaultValue':_0xab12('0x1d')},'dialPrefix':{'type':Sequelize[_0xab12('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xab12('0xb')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xab12('0x1e')},'dialCutDigit':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xab12('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x21')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x22')},'dialDropRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x24')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x25')},'dialMachineRetryFrequency':{'type':Sequelize[_0xab12('0xb')](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x26')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xab12('0xb')](0x3)[_0xab12('0x9')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xab12('0x27')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xab12('0x9')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xab12('0x28')}};
\ No newline at end of file
index 34312e6..b1f48b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfaf=['error','name','index','map','Campaign','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','merge','options','omit','createdAt','updatedAt','IvrCampaigns','UserProfileSection','UserProfileResource','destroy','getHoppers','findOne','CmHopper','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','spread','dialCheckDuplicateType','always','into','cm_hopper','phone','scheduledAt','ContactId','ListId','select','field','NOW()','CmListId','toString','from','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','insert','fromQuery','cm_contacts','ListId\x20=\x20?','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','deletedAt\x20IS\x20NULL','push','sequelize','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','fs-extra','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','sendStatus'];(function(_0x51d269,_0x1972d4){var _0x15d897=function(_0x3cc856){while(--_0x3cc856){_0x51d269['push'](_0x51d269['shift']());}};_0x15d897(++_0x1972d4);}(_0xdfaf,0x1ee));var _0xfdfa=function(_0xa02f8c,_0x1d27a6){_0xa02f8c=_0xa02f8c-0x0;var _0x1172e0=_0xdfaf[_0xa02f8c];return _0x1172e0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfdfa('0x0'));var jsonpatch=require(_0xfdfa('0x1'));var rp=require(_0xfdfa('0x2'));var moment=require(_0xfdfa('0x3'));var BPromise=require(_0xfdfa('0x4'));var Mustache=require(_0xfdfa('0x5'));var util=require(_0xfdfa('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfdfa('0x7'));var fs=require('fs');var fs_extra=require(_0xfdfa('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xfdfa('0x9'));var jsforce=require(_0xfdfa('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfdfa('0xb'));var Papa=require(_0xfdfa('0xc'));var Redis=require('ioredis');var authService=require(_0xfdfa('0xd'));var qs=require(_0xfdfa('0xe'));var as=require(_0xfdfa('0xf'));var hardwareService=require(_0xfdfa('0x10'));var logger=require(_0xfdfa('0x11'))(_0xfdfa('0x12'));var utils=require(_0xfdfa('0x13'));var config=require(_0xfdfa('0x14'));var licenseUtil=require(_0xfdfa('0x15'));var db=require(_0xfdfa('0x16'))['db'];function respondWithStatusCode(_0x39f078,_0x2bf5b8){_0x2bf5b8=_0x2bf5b8||0xcc;return function(_0x100ebf){if(_0x100ebf){return _0x39f078['sendStatus'](_0x2bf5b8);}return _0x39f078[_0xfdfa('0x17')](_0x2bf5b8)[_0xfdfa('0x18')]();};}function respondWithResult(_0xe0d280,_0x485bf5){_0x485bf5=_0x485bf5||0xc8;return function(_0x482643){if(_0x482643){return _0xe0d280['status'](_0x485bf5)[_0xfdfa('0x19')](_0x482643);}};}function respondWithFilteredResult(_0x3cef1d,_0x2f0592){return function(_0x1d544c){if(_0x1d544c){var _0x37c332=typeof _0x2f0592[_0xfdfa('0x1a')]===_0xfdfa('0x1b')&&typeof _0x2f0592[_0xfdfa('0x1c')]===_0xfdfa('0x1b');var _0x32fda8=_0x1d544c[_0xfdfa('0x1d')];var _0x568c8a=_0x37c332?0x0:_0x2f0592[_0xfdfa('0x1a')];var _0x4599fd=_0x37c332?_0x1d544c[_0xfdfa('0x1d')]:_0x2f0592['offset']+_0x2f0592[_0xfdfa('0x1c')];var _0x463251;if(_0x4599fd>=_0x32fda8){_0x4599fd=_0x32fda8;_0x463251=0xc8;}else{_0x463251=0xce;}_0x3cef1d['status'](_0x463251);return _0x3cef1d[_0xfdfa('0x1e')]('Content-Range',_0x568c8a+'-'+_0x4599fd+'/'+_0x32fda8)[_0xfdfa('0x19')](_0x1d544c);}return null;};}function patchUpdates(_0x4b20e0){return function(_0xda41a1){try{jsonpatch[_0xfdfa('0x1f')](_0xda41a1,_0x4b20e0,!![]);}catch(_0x13534c){return BPromise[_0xfdfa('0x20')](_0x13534c);}return _0xda41a1[_0xfdfa('0x21')]();};}function saveUpdates(_0x2447a3,_0x40e703){return function(_0x393208){if(_0x393208){return _0x393208[_0xfdfa('0x22')](_0x2447a3)[_0xfdfa('0x23')](function(_0x2878ec){return _0x2878ec;});}return null;};}function removeEntity(_0x1138a7,_0x37d9e1){return function(_0x103b51){if(_0x103b51){return _0x103b51['destroy']()[_0xfdfa('0x23')](function(){var _0x361e86=_0x103b51[_0xfdfa('0x24')]({'plain':!![]});var _0x5cca55='IvrCampaigns';return db['UserProfileResource']['destroy']({'where':{'type':_0x5cca55,'resourceId':_0x361e86['id']}})[_0xfdfa('0x23')](function(){return _0x103b51;});})[_0xfdfa('0x23')](function(){_0x1138a7[_0xfdfa('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0xa09508,_0x7ec796){return function(_0x58aec7){if(!_0x58aec7){_0xa09508[_0xfdfa('0x25')](0x194);}return _0x58aec7;};}function handleError(_0x24d742,_0x144264){_0x144264=_0x144264||0x1f4;return function(_0x39d054){logger[_0xfdfa('0x26')](_0x39d054['stack']);if(_0x39d054['name']){delete _0x39d054[_0xfdfa('0x27')];}_0x24d742[_0xfdfa('0x17')](_0x144264)['send'](_0x39d054);};}exports[_0xfdfa('0x28')]=function(_0x8977ab,_0x58203f){var _0x44a87f={},_0x42e6d6={},_0x5b78c5={'count':0x0,'rows':[]};var _0x451a60=_[_0xfdfa('0x29')](db[_0xfdfa('0x2a')][_0xfdfa('0x2b')],function(_0x57ad35){return{'name':_0x57ad35[_0xfdfa('0x2c')],'type':_0x57ad35['type']['key']};});_0x42e6d6[_0xfdfa('0x2d')]=_[_0xfdfa('0x29')](_0x451a60,_0xfdfa('0x27'));_0x42e6d6['query']=_[_0xfdfa('0x2e')](_0x8977ab[_0xfdfa('0x2f')]);_0x42e6d6[_0xfdfa('0x30')]=_[_0xfdfa('0x31')](_0x42e6d6[_0xfdfa('0x2d')],_0x42e6d6[_0xfdfa('0x2f')]);_0x44a87f[_0xfdfa('0x32')]=_[_0xfdfa('0x31')](_0x42e6d6['model'],qs['fields'](_0x8977ab['query'][_0xfdfa('0x33')]));_0x44a87f['attributes']=_0x44a87f[_0xfdfa('0x32')][_0xfdfa('0x34')]?_0x44a87f[_0xfdfa('0x32')]:_0x42e6d6[_0xfdfa('0x2d')];if(!_0x8977ab['query'][_0xfdfa('0x35')](_0xfdfa('0x36'))){_0x44a87f['limit']=qs[_0xfdfa('0x1c')](_0x8977ab['query']['limit']);_0x44a87f[_0xfdfa('0x1a')]=qs['offset'](_0x8977ab['query']['offset']);}_0x44a87f[_0xfdfa('0x37')]=qs[_0xfdfa('0x38')](_0x8977ab[_0xfdfa('0x2f')][_0xfdfa('0x38')]);_0x44a87f[_0xfdfa('0x39')]=qs[_0xfdfa('0x30')](_[_0xfdfa('0x3a')](_0x8977ab['query'],_0x42e6d6[_0xfdfa('0x30')]),_0x451a60);if(_0x8977ab[_0xfdfa('0x2f')][_0xfdfa('0x3b')]){_0x44a87f[_0xfdfa('0x39')]=_['merge'](_0x44a87f[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0x451a60,function(_0x340811){if(_0x340811[_0xfdfa('0x3c')]!==_0xfdfa('0x3d')){var _0x329df5={};_0x329df5[_0x340811[_0xfdfa('0x27')]]={'$like':'%'+_0x8977ab[_0xfdfa('0x2f')][_0xfdfa('0x3b')]+'%'};return _0x329df5;}})});}_0x44a87f=_['merge']({},_0x44a87f,_0x8977ab['options']);var _0x12c79c={'where':_0x44a87f[_0xfdfa('0x39')]};return db['Campaign'][_0xfdfa('0x1d')](_0x12c79c)['then'](function(_0x241164){_0x5b78c5['count']=_0x241164;if(_0x8977ab[_0xfdfa('0x2f')][_0xfdfa('0x3e')]){_0x44a87f[_0xfdfa('0x3f')]=[{'all':!![]}];}return db['Campaign'][_0xfdfa('0x40')](_0x44a87f);})[_0xfdfa('0x23')](function(_0x42f4d6){_0x5b78c5[_0xfdfa('0x41')]=_0x42f4d6;return _0x5b78c5;})[_0xfdfa('0x23')](respondWithFilteredResult(_0x58203f,_0x44a87f))[_0xfdfa('0x42')](handleError(_0x58203f,null));};exports[_0xfdfa('0x43')]=function(_0x2ab34a,_0x1d879a){var _0x5ca31d={'raw':![],'where':{'id':_0x2ab34a[_0xfdfa('0x44')]['id']}},_0x153cf1={};_0x153cf1['model']=_[_0xfdfa('0x2e')](db['Campaign'][_0xfdfa('0x2b')]);_0x153cf1[_0xfdfa('0x2f')]=_[_0xfdfa('0x2e')](_0x2ab34a[_0xfdfa('0x2f')]);_0x153cf1['filters']=_[_0xfdfa('0x31')](_0x153cf1[_0xfdfa('0x2d')],_0x153cf1[_0xfdfa('0x2f')]);_0x5ca31d['attributes']=_['intersection'](_0x153cf1[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x2ab34a[_0xfdfa('0x2f')][_0xfdfa('0x33')]));_0x5ca31d[_0xfdfa('0x32')]=_0x5ca31d[_0xfdfa('0x32')][_0xfdfa('0x34')]?_0x5ca31d[_0xfdfa('0x32')]:_0x153cf1[_0xfdfa('0x2d')];if(_0x2ab34a[_0xfdfa('0x2f')][_0xfdfa('0x3e')]){_0x5ca31d[_0xfdfa('0x3f')]=[{'all':!![]}];}_0x5ca31d=_['merge']({},_0x5ca31d,_0x2ab34a['options']);return db[_0xfdfa('0x2a')][_0xfdfa('0x45')](_0x5ca31d)['then'](handleEntityNotFound(_0x1d879a,null))['then'](respondWithResult(_0x1d879a,null))[_0xfdfa('0x42')](handleError(_0x1d879a,null));};exports[_0xfdfa('0x46')]=function(_0x160f5c,_0xf149ff){return db[_0xfdfa('0x2a')][_0xfdfa('0x46')](_0x160f5c[_0xfdfa('0x47')],{})[_0xfdfa('0x23')](function(_0x211969){var _0xe1b6a8=_0x160f5c[_0xfdfa('0x48')][_0xfdfa('0x24')]({'plain':!![]});if(!_0xe1b6a8)throw new Error(_0xfdfa('0x49'));if(_0xe1b6a8[_0xfdfa('0x4a')]===_0xfdfa('0x48')){var _0x883f58=_0x211969[_0xfdfa('0x24')]({'plain':!![]});var _0x59ce18='IvrCampaigns';return db['UserProfileSection']['find']({'where':{'name':_0x59ce18,'userProfileId':_0xe1b6a8[_0xfdfa('0x4b')]},'raw':!![]})[_0xfdfa('0x23')](function(_0x553a04){if(_0x553a04&&_0x553a04[_0xfdfa('0x4c')]===0x0){return db['UserProfileResource'][_0xfdfa('0x46')]({'name':_0x883f58[_0xfdfa('0x27')],'resourceId':_0x883f58['id'],'type':_0x553a04[_0xfdfa('0x27')],'sectionId':_0x553a04['id']},{})[_0xfdfa('0x23')](function(){return _0x211969;});}else{return _0x211969;}})[_0xfdfa('0x42')](function(_0x4f6e9f){logger['error'](_0xfdfa('0x4d'),_0x4f6e9f);throw _0x4f6e9f;});}return _0x211969;})[_0xfdfa('0x23')](respondWithResult(_0xf149ff,0xc9))['catch'](handleError(_0xf149ff,null));};exports[_0xfdfa('0x4e')]=function(_0x33a9e2,_0x21ed5e){var _0x155032={'where':{'id':_0x33a9e2[_0xfdfa('0x44')]['id']}},_0x52950a={};_0x52950a[_0xfdfa('0x2d')]=_['keys'](db[_0xfdfa('0x2a')][_0xfdfa('0x2b')]);_0x155032[_0xfdfa('0x32')]=_[_0xfdfa('0x31')](_0x52950a[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x33a9e2[_0xfdfa('0x2f')][_0xfdfa('0x33')]));_0x155032['attributes']=_0x155032['attributes'][_0xfdfa('0x34')]?_0x155032['attributes']:_0x52950a[_0xfdfa('0x2d')];if(_0x33a9e2[_0xfdfa('0x2f')][_0xfdfa('0x3e')]){_0x155032[_0xfdfa('0x3f')]=[{'all':!![]}];}_0x155032=_[_0xfdfa('0x4f')]({},_0x155032,_0x33a9e2[_0xfdfa('0x50')]);return db[_0xfdfa('0x2a')]['find'](_0x155032)[_0xfdfa('0x23')](handleEntityNotFound(_0x21ed5e,null))[_0xfdfa('0x23')](function(_0x5c7fb6){if(_0x5c7fb6){var _0x1f898f=_0x5c7fb6[_0xfdfa('0x24')]({'plain':!![]});_0x1f898f=qs[_0xfdfa('0x51')](_0x1f898f,['id',_0xfdfa('0x52'),_0xfdfa('0x53')]);_0x33a9e2[_0xfdfa('0x47')]=_['omit'](_0x33a9e2[_0xfdfa('0x47')],['id',_0xfdfa('0x52'),'updatedAt']);return db[_0xfdfa('0x2a')]['create'](_[_0xfdfa('0x4f')](_0x1f898f,_0x33a9e2[_0xfdfa('0x47')]),{'include':_0x33a9e2[_0xfdfa('0x2f')][_0xfdfa('0x3e')]?[{'all':!![]}]:undefined})[_0xfdfa('0x23')](function(_0x31fa9c){var _0x5ada56=_0x33a9e2[_0xfdfa('0x48')][_0xfdfa('0x24')]({'plain':!![]});if(!_0x5ada56)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5ada56[_0xfdfa('0x4a')]===_0xfdfa('0x48')){var _0x2b6245=_0x31fa9c[_0xfdfa('0x24')]({'plain':!![]});var _0x963c90=_0xfdfa('0x54');return db[_0xfdfa('0x55')][_0xfdfa('0x45')]({'where':{'name':_0x963c90,'userProfileId':_0x5ada56[_0xfdfa('0x4b')]},'raw':!![]})['then'](function(_0x545d16){if(_0x545d16&&_0x545d16['autoAssociation']===0x0){return db[_0xfdfa('0x56')][_0xfdfa('0x46')]({'name':_0x2b6245[_0xfdfa('0x27')],'resourceId':_0x2b6245['id'],'type':_0x545d16[_0xfdfa('0x27')],'sectionId':_0x545d16['id']},{})['then'](function(){return _0x31fa9c;});}else{return _0x31fa9c;}})['catch'](function(_0x5ebd0e){logger[_0xfdfa('0x26')](_0xfdfa('0x4d'),_0x5ebd0e);throw _0x5ebd0e;});}return _0x31fa9c;});}})[_0xfdfa('0x23')](respondWithResult(_0x21ed5e,0xc9))[_0xfdfa('0x42')](handleError(_0x21ed5e,null));};exports[_0xfdfa('0x22')]=function(_0x299722,_0x442464){if(_0x299722['body']['id']){delete _0x299722[_0xfdfa('0x47')]['id'];}return db['Campaign'][_0xfdfa('0x45')]({'where':{'id':_0x299722[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x442464,null))[_0xfdfa('0x23')](saveUpdates(_0x299722[_0xfdfa('0x47')],null))[_0xfdfa('0x23')](respondWithResult(_0x442464,null))[_0xfdfa('0x42')](handleError(_0x442464,null));};exports[_0xfdfa('0x57')]=function(_0x17a8b1,_0x4d0967){return db['Campaign'][_0xfdfa('0x45')]({'where':{'id':_0x17a8b1[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x4d0967,null))[_0xfdfa('0x23')](removeEntity(_0x4d0967,null))[_0xfdfa('0x42')](handleError(_0x4d0967,null));};exports[_0xfdfa('0x58')]=function(_0x2b04aa,_0x283c07,_0x33d974){var _0x37f70f={'raw':!![],'where':{}};var _0x95ada2={};var _0xb0cfa4={'count':0x0,'rows':[]};return db['Campaign'][_0xfdfa('0x59')]({'where':{'id':_0x2b04aa[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x283c07,null))[_0xfdfa('0x23')](function(_0x598ba6){if(_0x598ba6){_0x95ada2[_0xfdfa('0x2d')]=_['keys'](db[_0xfdfa('0x5a')]['rawAttributes']);_0x95ada2['query']=_['keys'](_0x2b04aa[_0xfdfa('0x2f')]);_0x95ada2[_0xfdfa('0x30')]=_['intersection'](_0x95ada2['model'],_0x95ada2['query']);_0x37f70f['attributes']=_[_0xfdfa('0x31')](_0x95ada2[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x2b04aa['query'][_0xfdfa('0x33')]));_0x37f70f[_0xfdfa('0x32')]=_0x37f70f['attributes']['length']?_0x37f70f[_0xfdfa('0x32')]:_0x95ada2[_0xfdfa('0x2d')];if(!_0x2b04aa['query'][_0xfdfa('0x35')](_0xfdfa('0x36'))){_0x37f70f['limit']=qs[_0xfdfa('0x1c')](_0x2b04aa[_0xfdfa('0x2f')][_0xfdfa('0x1c')]);_0x37f70f[_0xfdfa('0x1a')]=qs[_0xfdfa('0x1a')](_0x2b04aa[_0xfdfa('0x2f')][_0xfdfa('0x1a')]);}_0x37f70f[_0xfdfa('0x37')]=qs[_0xfdfa('0x38')](_0x2b04aa['query'][_0xfdfa('0x38')]);_0x37f70f['where']=qs[_0xfdfa('0x30')](_[_0xfdfa('0x3a')](_0x2b04aa[_0xfdfa('0x2f')],_0x95ada2[_0xfdfa('0x30')]));_0x37f70f[_0xfdfa('0x39')]['CampaignId']=_0x598ba6['id'];if(_0x2b04aa['query'][_0xfdfa('0x3b')]){_0x37f70f[_0xfdfa('0x39')]=_[_0xfdfa('0x4f')](_0x37f70f[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0x37f70f[_0xfdfa('0x32')],function(_0x4c12b2){var _0x28d0db={};_0x28d0db[_0x4c12b2]={'$like':'%'+_0x2b04aa[_0xfdfa('0x2f')][_0xfdfa('0x3b')]+'%'};return _0x28d0db;})});}_0x37f70f=_[_0xfdfa('0x4f')]({},_0x37f70f,_0x2b04aa[_0xfdfa('0x50')]);return db[_0xfdfa('0x5a')][_0xfdfa('0x1d')]({'where':_0x37f70f[_0xfdfa('0x39')]})[_0xfdfa('0x23')](function(_0x2543f4){_0xb0cfa4['count']=_0x2543f4;if(_0x2b04aa[_0xfdfa('0x2f')]['includeAll']){_0x37f70f[_0xfdfa('0x3f')]=[{'all':!![]}];}return db['CmHopper'][_0xfdfa('0x40')](_0x37f70f);})[_0xfdfa('0x23')](function(_0x131c13){_0xb0cfa4['rows']=_0x131c13;return _0xb0cfa4;});}})[_0xfdfa('0x23')](respondWithFilteredResult(_0x283c07,_0x37f70f))[_0xfdfa('0x42')](handleError(_0x283c07,null));};exports['getHopperHistories']=function(_0x1feb98,_0xd322b7,_0x10e28d){var _0xeae12c={'raw':!![],'where':{}};var _0x1cca08={};var _0x47310e={'count':0x0,'rows':[]};return db[_0xfdfa('0x2a')]['findOne']({'where':{'id':_0x1feb98['params']['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0xd322b7,null))[_0xfdfa('0x23')](function(_0x50393d){if(_0x50393d){_0x1cca08[_0xfdfa('0x2d')]=_[_0xfdfa('0x2e')](db[_0xfdfa('0x5b')][_0xfdfa('0x2b')]);_0x1cca08[_0xfdfa('0x2f')]=_['keys'](_0x1feb98[_0xfdfa('0x2f')]);_0x1cca08[_0xfdfa('0x30')]=_[_0xfdfa('0x31')](_0x1cca08[_0xfdfa('0x2d')],_0x1cca08[_0xfdfa('0x2f')]);_0xeae12c['attributes']=_[_0xfdfa('0x31')](_0x1cca08[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x1feb98['query'][_0xfdfa('0x33')]));_0xeae12c[_0xfdfa('0x32')]=_0xeae12c[_0xfdfa('0x32')][_0xfdfa('0x34')]?_0xeae12c['attributes']:_0x1cca08[_0xfdfa('0x2d')];if(!_0x1feb98['query']['hasOwnProperty'](_0xfdfa('0x36'))){_0xeae12c[_0xfdfa('0x1c')]=qs['limit'](_0x1feb98[_0xfdfa('0x2f')]['limit']);_0xeae12c[_0xfdfa('0x1a')]=qs['offset'](_0x1feb98[_0xfdfa('0x2f')][_0xfdfa('0x1a')]);}_0xeae12c[_0xfdfa('0x37')]=qs['sort'](_0x1feb98['query']['sort']);_0xeae12c[_0xfdfa('0x39')]=qs[_0xfdfa('0x30')](_[_0xfdfa('0x3a')](_0x1feb98[_0xfdfa('0x2f')],_0x1cca08[_0xfdfa('0x30')]));_0xeae12c[_0xfdfa('0x39')][_0xfdfa('0x5c')]=_0x50393d['id'];if(_0x1feb98[_0xfdfa('0x2f')][_0xfdfa('0x3b')]){_0xeae12c[_0xfdfa('0x39')]=_[_0xfdfa('0x4f')](_0xeae12c[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0xeae12c['attributes'],function(_0x4e865a){var _0x2b7ee0={};_0x2b7ee0[_0x4e865a]={'$like':'%'+_0x1feb98[_0xfdfa('0x2f')][_0xfdfa('0x3b')]+'%'};return _0x2b7ee0;})});}_0xeae12c=_[_0xfdfa('0x4f')]({},_0xeae12c,_0x1feb98['options']);return db['CmHopperHistory'][_0xfdfa('0x1d')]({'where':_0xeae12c[_0xfdfa('0x39')]})['then'](function(_0x3420ff){_0x47310e[_0xfdfa('0x1d')]=_0x3420ff;if(_0x1feb98[_0xfdfa('0x2f')]['includeAll']){_0xeae12c['include']=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0xeae12c);})[_0xfdfa('0x23')](function(_0x53b4a0){_0x47310e['rows']=_0x53b4a0;return _0x47310e;});}})[_0xfdfa('0x23')](respondWithFilteredResult(_0xd322b7,_0xeae12c))[_0xfdfa('0x42')](handleError(_0xd322b7,null));};exports[_0xfdfa('0x5d')]=function(_0x384473,_0x246671,_0x4aa06b){var _0x554a6d={'raw':!![],'where':{}};var _0x2b7bef={};var _0xff03db={'count':0x0,'rows':[]};return db[_0xfdfa('0x2a')][_0xfdfa('0x59')]({'where':{'id':_0x384473[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x246671,null))[_0xfdfa('0x23')](function(_0x4165cd){if(_0x4165cd){_0x2b7bef[_0xfdfa('0x2d')]=_['keys'](db[_0xfdfa('0x5e')]['rawAttributes']);_0x2b7bef[_0xfdfa('0x2f')]=_['keys'](_0x384473['query']);_0x2b7bef[_0xfdfa('0x30')]=_[_0xfdfa('0x31')](_0x2b7bef[_0xfdfa('0x2d')],_0x2b7bef['query']);_0x554a6d['attributes']=_[_0xfdfa('0x31')](_0x2b7bef[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x384473['query']['fields']));_0x554a6d[_0xfdfa('0x32')]=_0x554a6d['attributes'][_0xfdfa('0x34')]?_0x554a6d['attributes']:_0x2b7bef[_0xfdfa('0x2d')];if(!_0x384473[_0xfdfa('0x2f')][_0xfdfa('0x35')](_0xfdfa('0x36'))){_0x554a6d[_0xfdfa('0x1c')]=qs['limit'](_0x384473[_0xfdfa('0x2f')]['limit']);_0x554a6d['offset']=qs['offset'](_0x384473[_0xfdfa('0x2f')]['offset']);}_0x554a6d[_0xfdfa('0x37')]=qs[_0xfdfa('0x38')](_0x384473['query'][_0xfdfa('0x38')]);_0x554a6d[_0xfdfa('0x39')]=qs[_0xfdfa('0x30')](_['pick'](_0x384473[_0xfdfa('0x2f')],_0x2b7bef[_0xfdfa('0x30')]));_0x554a6d[_0xfdfa('0x39')][_0xfdfa('0x5c')]=_0x4165cd['id'];if(_0x384473['query'][_0xfdfa('0x3b')]){_0x554a6d['where']=_[_0xfdfa('0x4f')](_0x554a6d[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0x554a6d['attributes'],function(_0x2fa548){var _0x39f9e3={};_0x39f9e3[_0x2fa548]={'$like':'%'+_0x384473[_0xfdfa('0x2f')]['filter']+'%'};return _0x39f9e3;})});}_0x554a6d=_[_0xfdfa('0x4f')]({},_0x554a6d,_0x384473['options']);return db[_0xfdfa('0x5e')][_0xfdfa('0x1d')]({'where':_0x554a6d['where']})['then'](function(_0x3ec21f){_0xff03db['count']=_0x3ec21f;if(_0x384473[_0xfdfa('0x2f')]['includeAll']){_0x554a6d[_0xfdfa('0x3f')]=[{'all':!![]}];}return db['CmHopperFinal'][_0xfdfa('0x40')](_0x554a6d);})['then'](function(_0x38ce95){_0xff03db['rows']=_0x38ce95;return _0xff03db;});}})['then'](respondWithFilteredResult(_0x246671,_0x554a6d))[_0xfdfa('0x42')](handleError(_0x246671,null));};exports[_0xfdfa('0x5f')]=function(_0x2677f6,_0x486ccf,_0x111b88){var _0xd3751d={'raw':!![],'where':{}};var _0x3da91d={};var _0x572870={'count':0x0,'rows':[]};return db[_0xfdfa('0x2a')][_0xfdfa('0x59')]({'where':{'id':_0x2677f6[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x486ccf,null))[_0xfdfa('0x23')](function(_0x5260cf){if(_0x5260cf){_0x3da91d[_0xfdfa('0x2d')]=_[_0xfdfa('0x2e')](db[_0xfdfa('0x60')]['rawAttributes']);_0x3da91d[_0xfdfa('0x2f')]=_[_0xfdfa('0x2e')](_0x2677f6[_0xfdfa('0x2f')]);_0x3da91d['filters']=_[_0xfdfa('0x31')](_0x3da91d['model'],_0x3da91d[_0xfdfa('0x2f')]);_0xd3751d[_0xfdfa('0x32')]=_[_0xfdfa('0x31')](_0x3da91d[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x2677f6['query'][_0xfdfa('0x33')]));_0xd3751d[_0xfdfa('0x32')]=_0xd3751d['attributes']['length']?_0xd3751d[_0xfdfa('0x32')]:_0x3da91d[_0xfdfa('0x2d')];if(!_0x2677f6[_0xfdfa('0x2f')][_0xfdfa('0x35')](_0xfdfa('0x36'))){_0xd3751d[_0xfdfa('0x1c')]=qs[_0xfdfa('0x1c')](_0x2677f6['query'][_0xfdfa('0x1c')]);_0xd3751d[_0xfdfa('0x1a')]=qs[_0xfdfa('0x1a')](_0x2677f6[_0xfdfa('0x2f')][_0xfdfa('0x1a')]);}_0xd3751d['order']=qs[_0xfdfa('0x38')](_0x2677f6['query'][_0xfdfa('0x38')]);_0xd3751d[_0xfdfa('0x39')]=qs[_0xfdfa('0x30')](_[_0xfdfa('0x3a')](_0x2677f6[_0xfdfa('0x2f')],_0x3da91d[_0xfdfa('0x30')]));_0xd3751d[_0xfdfa('0x39')][_0xfdfa('0x5c')]=_0x5260cf['id'];if(_0x2677f6[_0xfdfa('0x2f')][_0xfdfa('0x3b')]){_0xd3751d[_0xfdfa('0x39')]=_[_0xfdfa('0x4f')](_0xd3751d[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0xd3751d[_0xfdfa('0x32')],function(_0x1421cb){var _0x505c98={};_0x505c98[_0x1421cb]={'$like':'%'+_0x2677f6[_0xfdfa('0x2f')][_0xfdfa('0x3b')]+'%'};return _0x505c98;})});}_0xd3751d=_[_0xfdfa('0x4f')]({},_0xd3751d,_0x2677f6[_0xfdfa('0x50')]);return db[_0xfdfa('0x60')][_0xfdfa('0x1d')]({'where':_0xd3751d['where']})[_0xfdfa('0x23')](function(_0x16f2b0){_0x572870[_0xfdfa('0x1d')]=_0x16f2b0;if(_0x2677f6[_0xfdfa('0x2f')]['includeAll']){_0xd3751d[_0xfdfa('0x3f')]=[{'all':!![]}];}return db[_0xfdfa('0x60')]['findAll'](_0xd3751d);})['then'](function(_0x141bcf){_0x572870[_0xfdfa('0x41')]=_0x141bcf;return _0x572870;});}})[_0xfdfa('0x23')](respondWithFilteredResult(_0x486ccf,_0xd3751d))[_0xfdfa('0x42')](handleError(_0x486ccf,null));};exports[_0xfdfa('0x61')]=function(_0x165c72,_0x400f5d,_0x17a20f){var _0x35dc9c={};var _0x102f25={};var _0x5adf63;var _0x1f226a;return db[_0xfdfa('0x2a')][_0xfdfa('0x59')]({'where':{'id':_0x165c72[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x400f5d,null))[_0xfdfa('0x23')](function(_0x161c45){if(_0x161c45){_0x5adf63=_0x161c45;_0x102f25[_0xfdfa('0x2d')]=_[_0xfdfa('0x2e')](db['CmList']['rawAttributes']);_0x102f25['query']=_['keys'](_0x165c72['query']);_0x102f25[_0xfdfa('0x30')]=_[_0xfdfa('0x31')](_0x102f25['model'],_0x102f25['query']);_0x35dc9c[_0xfdfa('0x32')]=_['intersection'](_0x102f25['model'],qs[_0xfdfa('0x33')](_0x165c72[_0xfdfa('0x2f')][_0xfdfa('0x33')]));_0x35dc9c['attributes']=_0x35dc9c[_0xfdfa('0x32')][_0xfdfa('0x34')]?_0x35dc9c[_0xfdfa('0x32')]:_0x102f25[_0xfdfa('0x2d')];_0x35dc9c[_0xfdfa('0x37')]=qs['sort'](_0x165c72[_0xfdfa('0x2f')][_0xfdfa('0x38')]);_0x35dc9c[_0xfdfa('0x39')]=qs[_0xfdfa('0x30')](_['pick'](_0x165c72[_0xfdfa('0x2f')],_0x102f25[_0xfdfa('0x30')]));if(_0x165c72[_0xfdfa('0x2f')]['filter']){_0x35dc9c[_0xfdfa('0x39')]=_[_0xfdfa('0x4f')](_0x35dc9c[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0x35dc9c[_0xfdfa('0x32')],function(_0x15a75c){var _0x26c251={};_0x26c251[_0x15a75c]={'$like':'%'+_0x165c72[_0xfdfa('0x2f')][_0xfdfa('0x3b')]+'%'};return _0x26c251;})});}_0x35dc9c=_['merge']({},_0x35dc9c,_0x165c72[_0xfdfa('0x50')]);return _0x5adf63[_0xfdfa('0x61')](_0x35dc9c);}})['then'](function(_0x415d1b){if(_0x415d1b){_0x1f226a=_0x415d1b[_0xfdfa('0x34')];if(!_0x165c72[_0xfdfa('0x2f')]['hasOwnProperty'](_0xfdfa('0x36'))){_0x35dc9c[_0xfdfa('0x1c')]=qs[_0xfdfa('0x1c')](_0x165c72[_0xfdfa('0x2f')]['limit']);_0x35dc9c[_0xfdfa('0x1a')]=qs[_0xfdfa('0x1a')](_0x165c72[_0xfdfa('0x2f')][_0xfdfa('0x1a')]);}return _0x5adf63['getLists'](_0x35dc9c);}})[_0xfdfa('0x23')](function(_0x256067){if(_0x256067){return _0x256067?{'count':_0x1f226a,'rows':_0x256067}:null;}})[_0xfdfa('0x23')](respondWithResult(_0x400f5d,null))[_0xfdfa('0x42')](handleError(_0x400f5d,null));};exports[_0xfdfa('0x62')]=function(_0x5032e5,_0x47d0a8,_0xbb3056){var _0x2a63e9,_0x281ac9;return db[_0xfdfa('0x2a')]['find']({'where':{'id':_0x5032e5[_0xfdfa('0x44')]['id']}})['then'](handleEntityNotFound(_0x47d0a8,null))[_0xfdfa('0x23')](function(_0xffe6f1){if(_0xffe6f1){_0x281ac9=_0xffe6f1;return _0xffe6f1['addLists'](_0x5032e5[_0xfdfa('0x47')][_0xfdfa('0x63')],_['omit'](_0x5032e5[_0xfdfa('0x47')],[_0xfdfa('0x63'),'id'])||{});}return null;})[_0xfdfa('0x64')](function(_0x44f150){var _0x12d6e1;_0x2a63e9=_0x44f150||[];var _0x7ea7b5=[];if(_0x44f150){for(var _0x2cb8ba=0x0;_0x2cb8ba<_0x44f150[_0xfdfa('0x34')];_0x2cb8ba+=0x1){var _0xe51dd9=_0x44f150[_0x2cb8ba][_0xfdfa('0x24')]({'plain':!![]});_0x281ac9[_0xfdfa('0x65')]=_0x5032e5[_0xfdfa('0x47')][_0xfdfa('0x65')]?_0x5032e5[_0xfdfa('0x47')][_0xfdfa('0x65')]:_0x281ac9[_0xfdfa('0x65')];switch(_0x281ac9['dialCheckDuplicateType']){case _0xfdfa('0x66'):_0x12d6e1=squel['insert']()[_0xfdfa('0x67')](_0xfdfa('0x68'))['fromQuery']([_0xfdfa('0x69'),_0xfdfa('0x6a'),_0xfdfa('0x6b'),_0xfdfa('0x6c'),_0xfdfa('0x5c'),_0xfdfa('0x52'),'updatedAt'],squel[_0xfdfa('0x6d')]()[_0xfdfa('0x6e')](_0xfdfa('0x69'),_0xfdfa('0x69'))[_0xfdfa('0x6e')](_0xfdfa('0x6f'),_0xfdfa('0x6a'))[_0xfdfa('0x6e')]('id',_0xfdfa('0x6b'))['field'](_0xe51dd9[_0xfdfa('0x70')]['toString'](),_0xfdfa('0x6c'))[_0xfdfa('0x6e')](_0x5032e5['params']['id'][_0xfdfa('0x71')](),'CampaignId')[_0xfdfa('0x6e')](_0xfdfa('0x6f'),'createdAt')[_0xfdfa('0x6e')](_0xfdfa('0x6f'),_0xfdfa('0x53'))[_0xfdfa('0x72')]('cm_contacts')[_0xfdfa('0x39')]('deletedAt\x20IS\x20NULL')[_0xfdfa('0x39')]('ListId\x20=\x20?',_0xe51dd9[_0xfdfa('0x70')]['toString']())['where'](_0xfdfa('0x73'))[_0xfdfa('0x39')](_0xfdfa('0x74'),squel[_0xfdfa('0x6d')]()[_0xfdfa('0x6e')](_0xfdfa('0x75'))[_0xfdfa('0x72')](_0xfdfa('0x76'))['where'](_0xfdfa('0x77'),_0x5032e5[_0xfdfa('0x44')]['id']['toString']()))[_0xfdfa('0x39')]('phone\x20NOT\x20IN\x20(?)',squel[_0xfdfa('0x6d')]()['field'](_0xfdfa('0x78'))[_0xfdfa('0x72')](_0xfdfa('0x68'))[_0xfdfa('0x39')](_0xfdfa('0x77'),_0x5032e5[_0xfdfa('0x44')]['id'][_0xfdfa('0x71')]())))[_0xfdfa('0x71')]();break;case'onlyIfOpen':_0x12d6e1=squel[_0xfdfa('0x79')]()[_0xfdfa('0x67')](_0xfdfa('0x68'))[_0xfdfa('0x7a')]([_0xfdfa('0x69'),_0xfdfa('0x6a'),_0xfdfa('0x6b'),_0xfdfa('0x6c'),_0xfdfa('0x5c'),_0xfdfa('0x52'),'updatedAt'],squel[_0xfdfa('0x6d')]()[_0xfdfa('0x6e')](_0xfdfa('0x69'),_0xfdfa('0x69'))[_0xfdfa('0x6e')](_0xfdfa('0x6f'),_0xfdfa('0x6a'))[_0xfdfa('0x6e')]('id',_0xfdfa('0x6b'))['field'](_0xe51dd9['CmListId'][_0xfdfa('0x71')](),_0xfdfa('0x6c'))[_0xfdfa('0x6e')](_0x5032e5['params']['id'][_0xfdfa('0x71')](),_0xfdfa('0x5c'))[_0xfdfa('0x6e')]('NOW()','createdAt')['field'](_0xfdfa('0x6f'),_0xfdfa('0x53'))[_0xfdfa('0x72')](_0xfdfa('0x7b'))[_0xfdfa('0x39')]('deletedAt\x20IS\x20NULL')[_0xfdfa('0x39')](_0xfdfa('0x7c'),_0xe51dd9[_0xfdfa('0x70')][_0xfdfa('0x71')]())[_0xfdfa('0x39')](_0xfdfa('0x73'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xfdfa('0x6d')]()[_0xfdfa('0x6e')](_0xfdfa('0x78'))['from'](_0xfdfa('0x68'))[_0xfdfa('0x39')](_0xfdfa('0x77'),_0x5032e5[_0xfdfa('0x44')]['id'][_0xfdfa('0x71')]())))[_0xfdfa('0x71')]();break;default:_0x12d6e1=squel['insert']()[_0xfdfa('0x67')](_0xfdfa('0x68'))['fromQuery']([_0xfdfa('0x69'),_0xfdfa('0x6a'),'ContactId',_0xfdfa('0x6c'),_0xfdfa('0x5c'),'createdAt','updatedAt'],squel[_0xfdfa('0x6d')]()[_0xfdfa('0x6e')]('phone','phone')[_0xfdfa('0x6e')]('NOW()',_0xfdfa('0x6a'))['field']('id',_0xfdfa('0x6b'))[_0xfdfa('0x6e')](_0xe51dd9['CmListId'][_0xfdfa('0x71')](),_0xfdfa('0x6c'))['field'](_0x5032e5[_0xfdfa('0x44')]['id'][_0xfdfa('0x71')](),_0xfdfa('0x5c'))[_0xfdfa('0x6e')](_0xfdfa('0x6f'),_0xfdfa('0x52'))[_0xfdfa('0x6e')]('NOW()',_0xfdfa('0x53'))[_0xfdfa('0x72')]('cm_contacts')[_0xfdfa('0x39')]('deletedAt\x20IS\x20NULL')[_0xfdfa('0x39')](_0xfdfa('0x7c'),_0xe51dd9[_0xfdfa('0x70')][_0xfdfa('0x71')]())[_0xfdfa('0x39')]('phone\x20IS\x20NOT\x20NULL'))[_0xfdfa('0x71')]();}_0x7ea7b5['push'](db['sequelize'][_0xfdfa('0x2f')](_0x12d6e1));}return BPromise[_0xfdfa('0x7d')](_0x7ea7b5);}})[_0xfdfa('0x23')](function(){return _0x2a63e9;})[_0xfdfa('0x23')](respondWithResult(_0x47d0a8,null))[_0xfdfa('0x42')](handleError(_0x47d0a8,null));};exports['removeLists']=function(_0x1fa831,_0x243844,_0x5d069e){return db['Campaign'][_0xfdfa('0x45')]({'where':{'id':_0x1fa831[_0xfdfa('0x44')]['id']}})['then'](handleEntityNotFound(_0x243844,null))[_0xfdfa('0x23')](function(_0x1a7bfc){if(_0x1a7bfc){return _0x1a7bfc[_0xfdfa('0x7e')](_0x1fa831[_0xfdfa('0x2f')][_0xfdfa('0x63')]);}})['then'](function(_0x476b81){if(_0x476b81){return db[_0xfdfa('0x5a')]['destroy']({'where':{'ListId':_0x1fa831[_0xfdfa('0x2f')][_0xfdfa('0x63')],'CampaignId':_0x1fa831[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](function(){return _0x476b81;});}})[_0xfdfa('0x23')](respondWithStatusCode(_0x243844,null))[_0xfdfa('0x42')](handleError(_0x243844,null));};exports[_0xfdfa('0x7f')]=function(_0x1ced78,_0x4472c4,_0x5e9ea7){var _0x47a0a6={};var _0x5f1f41={};var _0x3b52f2;var _0xa6bed7;return db['Campaign'][_0xfdfa('0x59')]({'where':{'id':_0x1ced78[_0xfdfa('0x44')]['id']}})['then'](handleEntityNotFound(_0x4472c4,null))[_0xfdfa('0x23')](function(_0x518a45){if(_0x518a45){_0x3b52f2=_0x518a45;_0x5f1f41['model']=_[_0xfdfa('0x2e')](db['CmList']['rawAttributes']);_0x5f1f41[_0xfdfa('0x2f')]=_[_0xfdfa('0x2e')](_0x1ced78[_0xfdfa('0x2f')]);_0x5f1f41['filters']=_['intersection'](_0x5f1f41['model'],_0x5f1f41[_0xfdfa('0x2f')]);_0x47a0a6[_0xfdfa('0x32')]=_['intersection'](_0x5f1f41[_0xfdfa('0x2d')],qs[_0xfdfa('0x33')](_0x1ced78['query'][_0xfdfa('0x33')]));_0x47a0a6[_0xfdfa('0x32')]=_0x47a0a6['attributes']['length']?_0x47a0a6[_0xfdfa('0x32')]:_0x5f1f41[_0xfdfa('0x2d')];_0x47a0a6[_0xfdfa('0x37')]=qs[_0xfdfa('0x38')](_0x1ced78[_0xfdfa('0x2f')][_0xfdfa('0x38')]);_0x47a0a6[_0xfdfa('0x39')]=qs['filters'](_['pick'](_0x1ced78[_0xfdfa('0x2f')],_0x5f1f41[_0xfdfa('0x30')]));if(_0x1ced78['query'][_0xfdfa('0x3b')]){_0x47a0a6[_0xfdfa('0x39')]=_['merge'](_0x47a0a6[_0xfdfa('0x39')],{'$or':_[_0xfdfa('0x29')](_0x47a0a6[_0xfdfa('0x32')],function(_0x138a36){var _0x12e208={};_0x12e208[_0x138a36]={'$like':'%'+_0x1ced78['query'][_0xfdfa('0x3b')]+'%'};return _0x12e208;})});}_0x47a0a6=_[_0xfdfa('0x4f')]({},_0x47a0a6,_0x1ced78[_0xfdfa('0x50')]);return _0x3b52f2[_0xfdfa('0x7f')](_0x47a0a6);}})[_0xfdfa('0x23')](function(_0x399453){if(_0x399453){_0xa6bed7=_0x399453[_0xfdfa('0x34')];if(!_0x1ced78['query'][_0xfdfa('0x35')](_0xfdfa('0x36'))){_0x47a0a6[_0xfdfa('0x1c')]=qs[_0xfdfa('0x1c')](_0x1ced78['query']['limit']);_0x47a0a6[_0xfdfa('0x1a')]=qs[_0xfdfa('0x1a')](_0x1ced78[_0xfdfa('0x2f')][_0xfdfa('0x1a')]);}return _0x3b52f2[_0xfdfa('0x7f')](_0x47a0a6);}})[_0xfdfa('0x23')](function(_0x5fe088){if(_0x5fe088){return _0x5fe088?{'count':_0xa6bed7,'rows':_0x5fe088}:null;}})[_0xfdfa('0x23')](respondWithResult(_0x4472c4,null))['catch'](handleError(_0x4472c4,null));};exports[_0xfdfa('0x80')]=function(_0x497d57,_0x5357a2,_0x11deaa){var _0x50a9b8,_0x473dcf;return db[_0xfdfa('0x2a')][_0xfdfa('0x45')]({'where':{'id':_0x497d57[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x5357a2,null))[_0xfdfa('0x23')](function(_0x50fdae){if(_0x50fdae){_0x473dcf=_0x50fdae;return _0x50fdae[_0xfdfa('0x80')](_0x497d57[_0xfdfa('0x47')][_0xfdfa('0x63')],_[_0xfdfa('0x51')](_0x497d57[_0xfdfa('0x47')],[_0xfdfa('0x63'),'id'])||{});}return null;})[_0xfdfa('0x64')](function(_0x52e3f5){var _0xf416fa;_0x50a9b8=_0x52e3f5||[];var _0x2b32f0=[];if(_0x52e3f5){for(var _0x2b993b=0x0;_0x2b993b<_0x52e3f5[_0xfdfa('0x34')];_0x2b993b+=0x1){var _0x940f82=_0x52e3f5[_0x2b993b][_0xfdfa('0x24')]({'plain':!![]});_0xf416fa=squel[_0xfdfa('0x79')]()[_0xfdfa('0x67')](_0xfdfa('0x81'))[_0xfdfa('0x7a')]([_0xfdfa('0x69'),_0xfdfa('0x6b'),_0xfdfa('0x6c'),_0xfdfa('0x5c'),_0xfdfa('0x52'),_0xfdfa('0x53')],squel[_0xfdfa('0x6d')]()[_0xfdfa('0x6e')](_0xfdfa('0x69'),_0xfdfa('0x69'))[_0xfdfa('0x6e')]('id',_0xfdfa('0x6b'))[_0xfdfa('0x6e')](_0x940f82[_0xfdfa('0x70')][_0xfdfa('0x71')](),_0xfdfa('0x6c'))[_0xfdfa('0x6e')](_0x497d57[_0xfdfa('0x44')]['id'][_0xfdfa('0x71')](),_0xfdfa('0x5c'))[_0xfdfa('0x6e')](_0xfdfa('0x6f'),_0xfdfa('0x52'))[_0xfdfa('0x6e')]('NOW()',_0xfdfa('0x53'))[_0xfdfa('0x72')](_0xfdfa('0x7b'))[_0xfdfa('0x39')](_0xfdfa('0x82'))[_0xfdfa('0x39')](_0xfdfa('0x7c'),_0x940f82[_0xfdfa('0x70')][_0xfdfa('0x71')]())['where'](_0xfdfa('0x73')))[_0xfdfa('0x71')]();_0x2b32f0[_0xfdfa('0x83')](db[_0xfdfa('0x84')]['query'](_0xf416fa));}return BPromise[_0xfdfa('0x7d')](_0x2b32f0);}})[_0xfdfa('0x23')](function(){return _0x50a9b8;})[_0xfdfa('0x23')](respondWithResult(_0x5357a2,null))[_0xfdfa('0x42')](handleError(_0x5357a2,null));};exports['removeBlackLists']=function(_0x3ae16b,_0x478cd5,_0x8c903a){return db['Campaign'][_0xfdfa('0x45')]({'where':{'id':_0x3ae16b[_0xfdfa('0x44')]['id']}})[_0xfdfa('0x23')](handleEntityNotFound(_0x478cd5,null))['then'](function(_0x98fcd5){if(_0x98fcd5){return _0x98fcd5['removeBlackLists'](_0x3ae16b[_0xfdfa('0x2f')]['ids']);}})[_0xfdfa('0x23')](function(_0x2e7654){if(_0x2e7654){return db[_0xfdfa('0x60')][_0xfdfa('0x57')]({'where':{'ListId':_0x3ae16b[_0xfdfa('0x2f')][_0xfdfa('0x63')],'CampaignId':_0x3ae16b['params']['id']}})[_0xfdfa('0x23')](function(){return _0x2e7654;});}})[_0xfdfa('0x23')](respondWithStatusCode(_0x478cd5,null))[_0xfdfa('0x42')](handleError(_0x478cd5,null));};
\ No newline at end of file
+var _0x0317=['findAll','catch','show','keys','merge','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','clone','params','createdAt','omit','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','nolimit','CampaignId','CmHopper','rows','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','addLists','ids','spread','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','updatedAt','field','NOW()','CmListId','toString','from','cm_contacts','select','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','ListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','COALESCE(phone,\x27\x27)','phone\x20IS\x20NOT\x20NULL','push','sequelize','all','removeLists','getBlackLists','CmList','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','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','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','IvrCampaigns','UserProfileResource','sendStatus','error','stack','name','send','index','Campaign','rawAttributes','fieldName','type','key','model','map','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include'];(function(_0xa8e9e9,_0x3b7e63){var _0x5466bc=function(_0x40e383){while(--_0x40e383){_0xa8e9e9['push'](_0xa8e9e9['shift']());}};_0x5466bc(++_0x3b7e63);}(_0x0317,0xd5));var _0x7031=function(_0x59f5a2,_0x1a15eb){_0x59f5a2=_0x59f5a2-0x0;var _0x1038a8=_0x0317[_0x59f5a2];return _0x1038a8;};'use strict';var emlformat=require(_0x7031('0x0'));var rimraf=require(_0x7031('0x1'));var zipdir=require(_0x7031('0x2'));var jsonpatch=require(_0x7031('0x3'));var rp=require('request-promise');var moment=require(_0x7031('0x4'));var BPromise=require(_0x7031('0x5'));var Mustache=require(_0x7031('0x6'));var util=require(_0x7031('0x7'));var path=require(_0x7031('0x8'));var sox=require(_0x7031('0x9'));var csv=require(_0x7031('0xa'));var ejs=require(_0x7031('0xb'));var fs=require('fs');var fs_extra=require(_0x7031('0xc'));var _=require(_0x7031('0xd'));var squel=require(_0x7031('0xe'));var crypto=require('crypto');var jsforce=require(_0x7031('0xf'));var deskjs=require(_0x7031('0x10'));var toCsv=require(_0x7031('0xa'));var querystring=require('querystring');var Papa=require(_0x7031('0x11'));var Redis=require('ioredis');var authService=require(_0x7031('0x12'));var qs=require(_0x7031('0x13'));var as=require(_0x7031('0x14'));var hardwareService=require(_0x7031('0x15'));var logger=require(_0x7031('0x16'))(_0x7031('0x17'));var utils=require(_0x7031('0x18'));var config=require(_0x7031('0x19'));var licenseUtil=require(_0x7031('0x1a'));var db=require(_0x7031('0x1b'))['db'];function respondWithStatusCode(_0x3669a0,_0x2bb10a){_0x2bb10a=_0x2bb10a||0xcc;return function(_0x5ac2d1){if(_0x5ac2d1){return _0x3669a0['sendStatus'](_0x2bb10a);}return _0x3669a0[_0x7031('0x1c')](_0x2bb10a)[_0x7031('0x1d')]();};}function respondWithResult(_0x58985f,_0xebdb60){_0xebdb60=_0xebdb60||0xc8;return function(_0x59a72b){if(_0x59a72b){return _0x58985f[_0x7031('0x1c')](_0xebdb60)[_0x7031('0x1e')](_0x59a72b);}};}function respondWithFilteredResult(_0x1c9b1c,_0x27f07e){return function(_0x3673bc){if(_0x3673bc){var _0x3ed75b=typeof _0x27f07e[_0x7031('0x1f')]===_0x7031('0x20')&&typeof _0x27f07e[_0x7031('0x21')]===_0x7031('0x20');var _0x3c9e44=_0x3673bc['count'];var _0x118f41=_0x3ed75b?0x0:_0x27f07e[_0x7031('0x1f')];var _0x13a1c1=_0x3ed75b?_0x3673bc[_0x7031('0x22')]:_0x27f07e[_0x7031('0x1f')]+_0x27f07e[_0x7031('0x21')];var _0x31cc64;if(_0x13a1c1>=_0x3c9e44){_0x13a1c1=_0x3c9e44;_0x31cc64=0xc8;}else{_0x31cc64=0xce;}_0x1c9b1c[_0x7031('0x1c')](_0x31cc64);return _0x1c9b1c[_0x7031('0x23')](_0x7031('0x24'),_0x118f41+'-'+_0x13a1c1+'/'+_0x3c9e44)['json'](_0x3673bc);}return null;};}function patchUpdates(_0x2cc425){return function(_0x25de49){try{jsonpatch[_0x7031('0x25')](_0x25de49,_0x2cc425,!![]);}catch(_0x58af37){return BPromise[_0x7031('0x26')](_0x58af37);}return _0x25de49[_0x7031('0x27')]();};}function saveUpdates(_0x3ce5fb,_0x385a34){return function(_0x281623){if(_0x281623){return _0x281623['update'](_0x3ce5fb)['then'](function(_0x2d580d){return _0x2d580d;});}return null;};}function removeEntity(_0x17d9ba,_0x5977ff){return function(_0x3fe534){if(_0x3fe534){return _0x3fe534[_0x7031('0x28')]()[_0x7031('0x29')](function(){var _0x61c1af=_0x3fe534['get']({'plain':!![]});var _0x59f428=_0x7031('0x2a');return db[_0x7031('0x2b')][_0x7031('0x28')]({'where':{'type':_0x59f428,'resourceId':_0x61c1af['id']}})[_0x7031('0x29')](function(){return _0x3fe534;});})['then'](function(){_0x17d9ba[_0x7031('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c4f7b,_0xa5e2bf){return function(_0x4c0fa9){if(!_0x4c0fa9){_0x2c4f7b[_0x7031('0x2c')](0x194);}return _0x4c0fa9;};}function handleError(_0x2b3d88,_0x13b656){_0x13b656=_0x13b656||0x1f4;return function(_0x11e8f4){logger[_0x7031('0x2d')](_0x11e8f4[_0x7031('0x2e')]);if(_0x11e8f4[_0x7031('0x2f')]){delete _0x11e8f4['name'];}_0x2b3d88[_0x7031('0x1c')](_0x13b656)[_0x7031('0x30')](_0x11e8f4);};}exports[_0x7031('0x31')]=function(_0x29fbb5,_0x5c4275){var _0xdb5efa={},_0x55c0d3={},_0xb45fc4={'count':0x0,'rows':[]};var _0x59bbba=_['map'](db[_0x7031('0x32')][_0x7031('0x33')],function(_0x430bdb){return{'name':_0x430bdb[_0x7031('0x34')],'type':_0x430bdb[_0x7031('0x35')][_0x7031('0x36')]};});_0x55c0d3[_0x7031('0x37')]=_[_0x7031('0x38')](_0x59bbba,_0x7031('0x2f'));_0x55c0d3[_0x7031('0x39')]=_['keys'](_0x29fbb5[_0x7031('0x39')]);_0x55c0d3['filters']=_[_0x7031('0x3a')](_0x55c0d3['model'],_0x55c0d3[_0x7031('0x39')]);_0xdb5efa[_0x7031('0x3b')]=_['intersection'](_0x55c0d3[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x29fbb5[_0x7031('0x39')]['fields']));_0xdb5efa[_0x7031('0x3b')]=_0xdb5efa[_0x7031('0x3b')][_0x7031('0x3d')]?_0xdb5efa['attributes']:_0x55c0d3[_0x7031('0x37')];if(!_0x29fbb5[_0x7031('0x39')][_0x7031('0x3e')]('nolimit')){_0xdb5efa[_0x7031('0x21')]=qs['limit'](_0x29fbb5[_0x7031('0x39')]['limit']);_0xdb5efa[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x29fbb5['query'][_0x7031('0x1f')]);}_0xdb5efa[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x29fbb5[_0x7031('0x39')]['sort']);_0xdb5efa[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x29fbb5[_0x7031('0x39')],_0x55c0d3[_0x7031('0x42')]),_0x59bbba);if(_0x29fbb5[_0x7031('0x39')][_0x7031('0x44')]){_0xdb5efa[_0x7031('0x41')]=_['merge'](_0xdb5efa['where'],{'$or':_[_0x7031('0x38')](_0x59bbba,function(_0x10cde4){if(_0x10cde4[_0x7031('0x35')]!==_0x7031('0x45')){var _0x33454={};_0x33454[_0x10cde4[_0x7031('0x2f')]]={'$like':'%'+_0x29fbb5[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x33454;}})});}_0xdb5efa=_['merge']({},_0xdb5efa,_0x29fbb5[_0x7031('0x46')]);var _0x3de88b={'where':_0xdb5efa[_0x7031('0x41')]};return db[_0x7031('0x32')][_0x7031('0x22')](_0x3de88b)['then'](function(_0x201e2b){_0xb45fc4['count']=_0x201e2b;if(_0x29fbb5['query'][_0x7031('0x47')]){_0xdb5efa[_0x7031('0x48')]=[{'all':!![]}];}return db['Campaign'][_0x7031('0x49')](_0xdb5efa);})[_0x7031('0x29')](function(_0x493786){_0xb45fc4['rows']=_0x493786;return _0xb45fc4;})[_0x7031('0x29')](respondWithFilteredResult(_0x5c4275,_0xdb5efa))[_0x7031('0x4a')](handleError(_0x5c4275,null));};exports[_0x7031('0x4b')]=function(_0x4be191,_0x585cf3){var _0xa04a65={'raw':![],'where':{'id':_0x4be191['params']['id']}},_0x2ccdb1={};_0x2ccdb1['model']=_[_0x7031('0x4c')](db[_0x7031('0x32')][_0x7031('0x33')]);_0x2ccdb1[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x4be191[_0x7031('0x39')]);_0x2ccdb1['filters']=_[_0x7031('0x3a')](_0x2ccdb1[_0x7031('0x37')],_0x2ccdb1[_0x7031('0x39')]);_0xa04a65[_0x7031('0x3b')]=_['intersection'](_0x2ccdb1[_0x7031('0x37')],qs['fields'](_0x4be191[_0x7031('0x39')][_0x7031('0x3c')]));_0xa04a65[_0x7031('0x3b')]=_0xa04a65[_0x7031('0x3b')]['length']?_0xa04a65[_0x7031('0x3b')]:_0x2ccdb1['model'];if(_0x4be191[_0x7031('0x39')][_0x7031('0x47')]){_0xa04a65[_0x7031('0x48')]=[{'all':!![]}];}_0xa04a65=_[_0x7031('0x4d')]({},_0xa04a65,_0x4be191[_0x7031('0x46')]);return db[_0x7031('0x32')][_0x7031('0x4e')](_0xa04a65)['then'](handleEntityNotFound(_0x585cf3,null))[_0x7031('0x29')](respondWithResult(_0x585cf3,null))['catch'](handleError(_0x585cf3,null));};exports['create']=function(_0x1d8364,_0x526bba){return db[_0x7031('0x32')][_0x7031('0x4f')](_0x1d8364[_0x7031('0x50')],{})['then'](function(_0x2ba7b7){var _0x222ad2=_0x1d8364['user'][_0x7031('0x51')]({'plain':!![]});if(!_0x222ad2)throw new Error(_0x7031('0x52'));if(_0x222ad2[_0x7031('0x53')]===_0x7031('0x54')){var _0x161bcb=_0x2ba7b7[_0x7031('0x51')]({'plain':!![]});var _0x4ec9d1='IvrCampaigns';return db[_0x7031('0x55')][_0x7031('0x4e')]({'where':{'name':_0x4ec9d1,'userProfileId':_0x222ad2['userProfileId']},'raw':!![]})[_0x7031('0x29')](function(_0x4329bb){if(_0x4329bb&&_0x4329bb['autoAssociation']===0x0){return db[_0x7031('0x2b')][_0x7031('0x4f')]({'name':_0x161bcb[_0x7031('0x2f')],'resourceId':_0x161bcb['id'],'type':_0x4329bb['name'],'sectionId':_0x4329bb['id']},{})[_0x7031('0x29')](function(){return _0x2ba7b7;});}else{return _0x2ba7b7;}})[_0x7031('0x4a')](function(_0x4b9203){logger[_0x7031('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4b9203);throw _0x4b9203;});}return _0x2ba7b7;})[_0x7031('0x29')](respondWithResult(_0x526bba,0xc9))['catch'](handleError(_0x526bba,null));};exports[_0x7031('0x56')]=function(_0x454b45,_0x53c1c5){var _0x208b31={'where':{'id':_0x454b45[_0x7031('0x57')]['id']}},_0x213a58={};_0x213a58[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x32')][_0x7031('0x33')]);_0x208b31[_0x7031('0x3b')]=_['intersection'](_0x213a58[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x454b45[_0x7031('0x39')]['fields']));_0x208b31['attributes']=_0x208b31[_0x7031('0x3b')][_0x7031('0x3d')]?_0x208b31[_0x7031('0x3b')]:_0x213a58['model'];if(_0x454b45['query'][_0x7031('0x47')]){_0x208b31[_0x7031('0x48')]=[{'all':!![]}];}_0x208b31=_[_0x7031('0x4d')]({},_0x208b31,_0x454b45[_0x7031('0x46')]);return db[_0x7031('0x32')][_0x7031('0x4e')](_0x208b31)[_0x7031('0x29')](handleEntityNotFound(_0x53c1c5,null))[_0x7031('0x29')](function(_0x19e853){if(_0x19e853){var _0x59ef87=_0x19e853[_0x7031('0x51')]({'plain':!![]});_0x59ef87=qs['omit'](_0x59ef87,['id',_0x7031('0x58'),'updatedAt']);_0x454b45[_0x7031('0x50')]=_[_0x7031('0x59')](_0x454b45[_0x7031('0x50')],['id',_0x7031('0x58'),'updatedAt']);return db[_0x7031('0x32')]['create'](_['merge'](_0x59ef87,_0x454b45[_0x7031('0x50')]),{'include':_0x454b45[_0x7031('0x39')][_0x7031('0x47')]?[{'all':!![]}]:undefined})[_0x7031('0x29')](function(_0x2a45c9){var _0x4da781=_0x454b45[_0x7031('0x54')][_0x7031('0x51')]({'plain':!![]});if(!_0x4da781)throw new Error(_0x7031('0x52'));if(_0x4da781['role']==='user'){var _0x566bc0=_0x2a45c9['get']({'plain':!![]});var _0x4049de=_0x7031('0x2a');return db[_0x7031('0x55')]['find']({'where':{'name':_0x4049de,'userProfileId':_0x4da781[_0x7031('0x5a')]},'raw':!![]})[_0x7031('0x29')](function(_0x19c174){if(_0x19c174&&_0x19c174[_0x7031('0x5b')]===0x0){return db[_0x7031('0x2b')][_0x7031('0x4f')]({'name':_0x566bc0['name'],'resourceId':_0x566bc0['id'],'type':_0x19c174['name'],'sectionId':_0x19c174['id']},{})['then'](function(){return _0x2a45c9;});}else{return _0x2a45c9;}})[_0x7031('0x4a')](function(_0x3f756c){logger[_0x7031('0x2d')](_0x7031('0x5c'),_0x3f756c);throw _0x3f756c;});}return _0x2a45c9;});}})['then'](respondWithResult(_0x53c1c5,0xc9))[_0x7031('0x4a')](handleError(_0x53c1c5,null));};exports['update']=function(_0x40aeda,_0x381df2){if(_0x40aeda['body']['id']){delete _0x40aeda[_0x7031('0x50')]['id'];}return db['Campaign'][_0x7031('0x4e')]({'where':{'id':_0x40aeda[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x381df2,null))['then'](saveUpdates(_0x40aeda['body'],null))[_0x7031('0x29')](respondWithResult(_0x381df2,null))[_0x7031('0x4a')](handleError(_0x381df2,null));};exports[_0x7031('0x28')]=function(_0xad67b4,_0x5abc6e){return db[_0x7031('0x32')][_0x7031('0x4e')]({'where':{'id':_0xad67b4[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x5abc6e,null))[_0x7031('0x29')](removeEntity(_0x5abc6e,null))['catch'](handleError(_0x5abc6e,null));};exports['getHoppers']=function(_0x2c0f79,_0x5d3b95,_0x599581){var _0x2db9b0={'raw':!![],'where':{}};var _0x4a8c39={};var _0x216afa={'count':0x0,'rows':[]};return db[_0x7031('0x32')]['findOne']({'where':{'id':_0x2c0f79[_0x7031('0x57')]['id']}})['then'](handleEntityNotFound(_0x5d3b95,null))['then'](function(_0x3fc2b0){if(_0x3fc2b0){_0x4a8c39[_0x7031('0x37')]=_[_0x7031('0x4c')](db['CmHopper']['rawAttributes']);_0x4a8c39['query']=_['keys'](_0x2c0f79[_0x7031('0x39')]);_0x4a8c39[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x4a8c39['model'],_0x4a8c39[_0x7031('0x39')]);_0x2db9b0['attributes']=_['intersection'](_0x4a8c39[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x2c0f79[_0x7031('0x39')][_0x7031('0x3c')]));_0x2db9b0[_0x7031('0x3b')]=_0x2db9b0['attributes'][_0x7031('0x3d')]?_0x2db9b0['attributes']:_0x4a8c39[_0x7031('0x37')];if(!_0x2c0f79[_0x7031('0x39')]['hasOwnProperty'](_0x7031('0x5d'))){_0x2db9b0[_0x7031('0x21')]=qs['limit'](_0x2c0f79[_0x7031('0x39')][_0x7031('0x21')]);_0x2db9b0[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x2c0f79[_0x7031('0x39')][_0x7031('0x1f')]);}_0x2db9b0['order']=qs[_0x7031('0x40')](_0x2c0f79[_0x7031('0x39')]['sort']);_0x2db9b0[_0x7031('0x41')]=qs['filters'](_[_0x7031('0x43')](_0x2c0f79[_0x7031('0x39')],_0x4a8c39[_0x7031('0x42')]));_0x2db9b0['where'][_0x7031('0x5e')]=_0x3fc2b0['id'];if(_0x2c0f79['query'][_0x7031('0x44')]){_0x2db9b0['where']=_[_0x7031('0x4d')](_0x2db9b0[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x2db9b0[_0x7031('0x3b')],function(_0x1e429d){var _0x5c0ba3={};_0x5c0ba3[_0x1e429d]={'$like':'%'+_0x2c0f79[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x5c0ba3;})});}_0x2db9b0=_['merge']({},_0x2db9b0,_0x2c0f79[_0x7031('0x46')]);return db['CmHopper'][_0x7031('0x22')]({'where':_0x2db9b0[_0x7031('0x41')]})[_0x7031('0x29')](function(_0x47c147){_0x216afa[_0x7031('0x22')]=_0x47c147;if(_0x2c0f79[_0x7031('0x39')][_0x7031('0x47')]){_0x2db9b0[_0x7031('0x48')]=[{'all':!![]}];}return db[_0x7031('0x5f')][_0x7031('0x49')](_0x2db9b0);})['then'](function(_0x5216ba){_0x216afa[_0x7031('0x60')]=_0x5216ba;return _0x216afa;});}})[_0x7031('0x29')](respondWithFilteredResult(_0x5d3b95,_0x2db9b0))[_0x7031('0x4a')](handleError(_0x5d3b95,null));};exports[_0x7031('0x61')]=function(_0x56d3d6,_0x51dcbd,_0x54332a){var _0x645c4={'raw':!![],'where':{}};var _0x2281f7={};var _0x253681={'count':0x0,'rows':[]};return db[_0x7031('0x32')][_0x7031('0x62')]({'where':{'id':_0x56d3d6[_0x7031('0x57')]['id']}})['then'](handleEntityNotFound(_0x51dcbd,null))[_0x7031('0x29')](function(_0x16cee5){if(_0x16cee5){_0x2281f7[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x63')][_0x7031('0x33')]);_0x2281f7['query']=_['keys'](_0x56d3d6[_0x7031('0x39')]);_0x2281f7[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x2281f7[_0x7031('0x37')],_0x2281f7[_0x7031('0x39')]);_0x645c4[_0x7031('0x3b')]=_[_0x7031('0x3a')](_0x2281f7[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x56d3d6[_0x7031('0x39')][_0x7031('0x3c')]));_0x645c4[_0x7031('0x3b')]=_0x645c4[_0x7031('0x3b')][_0x7031('0x3d')]?_0x645c4[_0x7031('0x3b')]:_0x2281f7[_0x7031('0x37')];if(!_0x56d3d6['query'][_0x7031('0x3e')](_0x7031('0x5d'))){_0x645c4[_0x7031('0x21')]=qs[_0x7031('0x21')](_0x56d3d6['query'][_0x7031('0x21')]);_0x645c4[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x56d3d6[_0x7031('0x39')]['offset']);}_0x645c4[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x56d3d6['query'][_0x7031('0x40')]);_0x645c4['where']=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x56d3d6[_0x7031('0x39')],_0x2281f7[_0x7031('0x42')]));_0x645c4[_0x7031('0x41')]['CampaignId']=_0x16cee5['id'];if(_0x56d3d6['query']['filter']){_0x645c4[_0x7031('0x41')]=_[_0x7031('0x4d')](_0x645c4[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x645c4[_0x7031('0x3b')],function(_0x532941){var _0x49edb4={};_0x49edb4[_0x532941]={'$like':'%'+_0x56d3d6[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x49edb4;})});}_0x645c4=_['merge']({},_0x645c4,_0x56d3d6[_0x7031('0x46')]);return db[_0x7031('0x63')][_0x7031('0x22')]({'where':_0x645c4['where']})['then'](function(_0x104f60){_0x253681[_0x7031('0x22')]=_0x104f60;if(_0x56d3d6[_0x7031('0x39')]['includeAll']){_0x645c4[_0x7031('0x48')]=[{'all':!![]}];}return db[_0x7031('0x63')][_0x7031('0x49')](_0x645c4);})[_0x7031('0x29')](function(_0x127d43){_0x253681[_0x7031('0x60')]=_0x127d43;return _0x253681;});}})[_0x7031('0x29')](respondWithFilteredResult(_0x51dcbd,_0x645c4))[_0x7031('0x4a')](handleError(_0x51dcbd,null));};exports[_0x7031('0x64')]=function(_0x443347,_0x4c5f2d,_0x2265e4){var _0x37abd2={'raw':!![],'where':{}};var _0x425299={};var _0x4994e5={'count':0x0,'rows':[]};return db[_0x7031('0x32')][_0x7031('0x62')]({'where':{'id':_0x443347[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x4c5f2d,null))[_0x7031('0x29')](function(_0x4c534d){if(_0x4c534d){_0x425299[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x65')][_0x7031('0x33')]);_0x425299[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x443347[_0x7031('0x39')]);_0x425299[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x425299[_0x7031('0x37')],_0x425299[_0x7031('0x39')]);_0x37abd2[_0x7031('0x3b')]=_[_0x7031('0x3a')](_0x425299[_0x7031('0x37')],qs['fields'](_0x443347[_0x7031('0x39')][_0x7031('0x3c')]));_0x37abd2[_0x7031('0x3b')]=_0x37abd2[_0x7031('0x3b')][_0x7031('0x3d')]?_0x37abd2['attributes']:_0x425299[_0x7031('0x37')];if(!_0x443347[_0x7031('0x39')][_0x7031('0x3e')](_0x7031('0x5d'))){_0x37abd2[_0x7031('0x21')]=qs['limit'](_0x443347[_0x7031('0x39')]['limit']);_0x37abd2[_0x7031('0x1f')]=qs['offset'](_0x443347[_0x7031('0x39')][_0x7031('0x1f')]);}_0x37abd2[_0x7031('0x3f')]=qs['sort'](_0x443347[_0x7031('0x39')][_0x7031('0x40')]);_0x37abd2[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x443347['query'],_0x425299['filters']));_0x37abd2[_0x7031('0x41')][_0x7031('0x5e')]=_0x4c534d['id'];if(_0x443347[_0x7031('0x39')][_0x7031('0x44')]){_0x37abd2[_0x7031('0x41')]=_['merge'](_0x37abd2[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x37abd2[_0x7031('0x3b')],function(_0x12bfd5){var _0x4e152a={};_0x4e152a[_0x12bfd5]={'$like':'%'+_0x443347['query'][_0x7031('0x44')]+'%'};return _0x4e152a;})});}_0x37abd2=_[_0x7031('0x4d')]({},_0x37abd2,_0x443347[_0x7031('0x46')]);return db[_0x7031('0x65')][_0x7031('0x22')]({'where':_0x37abd2[_0x7031('0x41')]})['then'](function(_0x2f5952){_0x4994e5[_0x7031('0x22')]=_0x2f5952;if(_0x443347[_0x7031('0x39')][_0x7031('0x47')]){_0x37abd2['include']=[{'all':!![]}];}return db['CmHopperFinal'][_0x7031('0x49')](_0x37abd2);})['then'](function(_0xbcc8e0){_0x4994e5['rows']=_0xbcc8e0;return _0x4994e5;});}})[_0x7031('0x29')](respondWithFilteredResult(_0x4c5f2d,_0x37abd2))[_0x7031('0x4a')](handleError(_0x4c5f2d,null));};exports[_0x7031('0x66')]=function(_0x46ec84,_0x5257e5,_0x18b6b9){var _0xb20965={'raw':!![],'where':{}};var _0x492c46={};var _0x240695={'count':0x0,'rows':[]};return db['Campaign'][_0x7031('0x62')]({'where':{'id':_0x46ec84[_0x7031('0x57')]['id']}})['then'](handleEntityNotFound(_0x5257e5,null))[_0x7031('0x29')](function(_0x51b557){if(_0x51b557){_0x492c46[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x67')]['rawAttributes']);_0x492c46[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x46ec84[_0x7031('0x39')]);_0x492c46[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x492c46[_0x7031('0x37')],_0x492c46[_0x7031('0x39')]);_0xb20965['attributes']=_[_0x7031('0x3a')](_0x492c46[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x46ec84[_0x7031('0x39')][_0x7031('0x3c')]));_0xb20965[_0x7031('0x3b')]=_0xb20965[_0x7031('0x3b')]['length']?_0xb20965['attributes']:_0x492c46[_0x7031('0x37')];if(!_0x46ec84[_0x7031('0x39')][_0x7031('0x3e')](_0x7031('0x5d'))){_0xb20965['limit']=qs[_0x7031('0x21')](_0x46ec84[_0x7031('0x39')][_0x7031('0x21')]);_0xb20965[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x46ec84[_0x7031('0x39')][_0x7031('0x1f')]);}_0xb20965[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x46ec84[_0x7031('0x39')][_0x7031('0x40')]);_0xb20965[_0x7031('0x41')]=qs['filters'](_[_0x7031('0x43')](_0x46ec84['query'],_0x492c46[_0x7031('0x42')]));_0xb20965['where'][_0x7031('0x5e')]=_0x51b557['id'];if(_0x46ec84['query'][_0x7031('0x44')]){_0xb20965[_0x7031('0x41')]=_[_0x7031('0x4d')](_0xb20965['where'],{'$or':_[_0x7031('0x38')](_0xb20965['attributes'],function(_0x48b52d){var _0x21347e={};_0x21347e[_0x48b52d]={'$like':'%'+_0x46ec84[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x21347e;})});}_0xb20965=_[_0x7031('0x4d')]({},_0xb20965,_0x46ec84[_0x7031('0x46')]);return db['CmHopperBlack']['count']({'where':_0xb20965[_0x7031('0x41')]})[_0x7031('0x29')](function(_0x440381){_0x240695['count']=_0x440381;if(_0x46ec84[_0x7031('0x39')][_0x7031('0x47')]){_0xb20965[_0x7031('0x48')]=[{'all':!![]}];}return db[_0x7031('0x67')][_0x7031('0x49')](_0xb20965);})['then'](function(_0x499223){_0x240695['rows']=_0x499223;return _0x240695;});}})['then'](respondWithFilteredResult(_0x5257e5,_0xb20965))['catch'](handleError(_0x5257e5,null));};exports[_0x7031('0x68')]=function(_0x433d3f,_0x4b73aa,_0x52b523){var _0x5bb84b={};var _0x1bf352={};var _0x273874;var _0x31ba93;return db[_0x7031('0x32')]['findOne']({'where':{'id':_0x433d3f[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x4b73aa,null))[_0x7031('0x29')](function(_0x3fa551){if(_0x3fa551){_0x273874=_0x3fa551;_0x1bf352[_0x7031('0x37')]=_[_0x7031('0x4c')](db['CmList']['rawAttributes']);_0x1bf352[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x433d3f[_0x7031('0x39')]);_0x1bf352[_0x7031('0x42')]=_['intersection'](_0x1bf352[_0x7031('0x37')],_0x1bf352[_0x7031('0x39')]);_0x5bb84b['attributes']=_['intersection'](_0x1bf352['model'],qs[_0x7031('0x3c')](_0x433d3f[_0x7031('0x39')][_0x7031('0x3c')]));_0x5bb84b[_0x7031('0x3b')]=_0x5bb84b['attributes'][_0x7031('0x3d')]?_0x5bb84b[_0x7031('0x3b')]:_0x1bf352[_0x7031('0x37')];_0x5bb84b[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x433d3f[_0x7031('0x39')][_0x7031('0x40')]);_0x5bb84b[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x433d3f['query'],_0x1bf352[_0x7031('0x42')]));if(_0x433d3f[_0x7031('0x39')][_0x7031('0x44')]){_0x5bb84b[_0x7031('0x41')]=_[_0x7031('0x4d')](_0x5bb84b[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0x5bb84b[_0x7031('0x3b')],function(_0xfd12c0){var _0x4ac843={};_0x4ac843[_0xfd12c0]={'$like':'%'+_0x433d3f[_0x7031('0x39')]['filter']+'%'};return _0x4ac843;})});}_0x5bb84b=_[_0x7031('0x4d')]({},_0x5bb84b,_0x433d3f[_0x7031('0x46')]);return _0x273874[_0x7031('0x68')](_0x5bb84b);}})[_0x7031('0x29')](function(_0x427f8c){if(_0x427f8c){_0x31ba93=_0x427f8c[_0x7031('0x3d')];if(!_0x433d3f[_0x7031('0x39')][_0x7031('0x3e')](_0x7031('0x5d'))){_0x5bb84b[_0x7031('0x21')]=qs[_0x7031('0x21')](_0x433d3f[_0x7031('0x39')]['limit']);_0x5bb84b[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x433d3f[_0x7031('0x39')][_0x7031('0x1f')]);}return _0x273874[_0x7031('0x68')](_0x5bb84b);}})[_0x7031('0x29')](function(_0x32e0ab){if(_0x32e0ab){return _0x32e0ab?{'count':_0x31ba93,'rows':_0x32e0ab}:null;}})[_0x7031('0x29')](respondWithResult(_0x4b73aa,null))[_0x7031('0x4a')](handleError(_0x4b73aa,null));};exports[_0x7031('0x69')]=function(_0x1f25ca,_0x34c611,_0x3e40b3){var _0x394eb7,_0x2a6665;return db[_0x7031('0x32')]['find']({'where':{'id':_0x1f25ca['params']['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x34c611,null))['then'](function(_0x3d46b8){if(_0x3d46b8){_0x2a6665=_0x3d46b8;return _0x3d46b8[_0x7031('0x69')](_0x1f25ca[_0x7031('0x50')][_0x7031('0x6a')],_[_0x7031('0x59')](_0x1f25ca['body'],[_0x7031('0x6a'),'id'])||{});}return null;})[_0x7031('0x6b')](function(_0x2c4f9f){var _0x16afda;_0x394eb7=_0x2c4f9f||[];var _0x54a730=[];if(_0x2c4f9f){for(var _0x2888c8=0x0;_0x2888c8<_0x2c4f9f[_0x7031('0x3d')];_0x2888c8+=0x1){var _0x1a845f=_0x2c4f9f[_0x2888c8][_0x7031('0x51')]({'plain':!![]});_0x2a6665['dialCheckDuplicateType']=_0x1f25ca[_0x7031('0x50')][_0x7031('0x6c')]?_0x1f25ca[_0x7031('0x50')][_0x7031('0x6c')]:_0x2a6665[_0x7031('0x6c')];switch(_0x2a6665[_0x7031('0x6c')]){case _0x7031('0x6d'):_0x16afda=squel[_0x7031('0x6e')]()[_0x7031('0x6f')](_0x7031('0x70'))[_0x7031('0x71')]([_0x7031('0x72'),_0x7031('0x73'),_0x7031('0x74'),'ListId',_0x7031('0x5e'),'createdAt',_0x7031('0x75')],squel['select']()[_0x7031('0x76')](_0x7031('0x72'),_0x7031('0x72'))[_0x7031('0x76')](_0x7031('0x77'),_0x7031('0x73'))['field']('id',_0x7031('0x74'))[_0x7031('0x76')](_0x1a845f[_0x7031('0x78')][_0x7031('0x79')](),'ListId')[_0x7031('0x76')](_0x1f25ca[_0x7031('0x57')]['id']['toString'](),_0x7031('0x5e'))[_0x7031('0x76')]('NOW()',_0x7031('0x58'))[_0x7031('0x76')](_0x7031('0x77'),_0x7031('0x75'))[_0x7031('0x7a')](_0x7031('0x7b'))[_0x7031('0x41')]('deletedAt\x20IS\x20NULL')[_0x7031('0x41')]('ListId\x20=\x20?',_0x1a845f[_0x7031('0x78')][_0x7031('0x79')]())['where']('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x7031('0x7c')]()[_0x7031('0x76')](_0x7031('0x7d'))[_0x7031('0x7a')]('cm_hopper_final')['where'](_0x7031('0x7e'),_0x1f25ca[_0x7031('0x57')]['id'][_0x7031('0x79')]()))[_0x7031('0x41')](_0x7031('0x7f'),squel[_0x7031('0x7c')]()['field']('COALESCE(phone,\x27\x27)')['from'](_0x7031('0x70'))[_0x7031('0x41')]('CampaignId\x20=\x20?',_0x1f25ca[_0x7031('0x57')]['id']['toString']())))[_0x7031('0x79')]();break;case _0x7031('0x80'):_0x16afda=squel['insert']()[_0x7031('0x6f')]('cm_hopper')[_0x7031('0x71')]([_0x7031('0x72'),_0x7031('0x73'),_0x7031('0x74'),'ListId',_0x7031('0x5e'),_0x7031('0x58'),'updatedAt'],squel[_0x7031('0x7c')]()[_0x7031('0x76')](_0x7031('0x72'),_0x7031('0x72'))['field'](_0x7031('0x77'),_0x7031('0x73'))[_0x7031('0x76')]('id',_0x7031('0x74'))[_0x7031('0x76')](_0x1a845f[_0x7031('0x78')][_0x7031('0x79')](),_0x7031('0x81'))[_0x7031('0x76')](_0x1f25ca[_0x7031('0x57')]['id'][_0x7031('0x79')](),'CampaignId')[_0x7031('0x76')]('NOW()',_0x7031('0x58'))[_0x7031('0x76')]('NOW()',_0x7031('0x75'))['from']('cm_contacts')[_0x7031('0x41')](_0x7031('0x82'))[_0x7031('0x41')](_0x7031('0x83'),_0x1a845f[_0x7031('0x78')][_0x7031('0x79')]())[_0x7031('0x41')]('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x7031('0x7c')]()[_0x7031('0x76')](_0x7031('0x84'))[_0x7031('0x7a')](_0x7031('0x70'))[_0x7031('0x41')](_0x7031('0x7e'),_0x1f25ca['params']['id']['toString']())))[_0x7031('0x79')]();break;default:_0x16afda=squel['insert']()['into'](_0x7031('0x70'))[_0x7031('0x71')]([_0x7031('0x72'),_0x7031('0x73'),_0x7031('0x74'),'ListId','CampaignId',_0x7031('0x58'),_0x7031('0x75')],squel[_0x7031('0x7c')]()['field'](_0x7031('0x72'),_0x7031('0x72'))['field'](_0x7031('0x77'),_0x7031('0x73'))[_0x7031('0x76')]('id','ContactId')['field'](_0x1a845f[_0x7031('0x78')][_0x7031('0x79')](),_0x7031('0x81'))[_0x7031('0x76')](_0x1f25ca[_0x7031('0x57')]['id'][_0x7031('0x79')](),_0x7031('0x5e'))[_0x7031('0x76')](_0x7031('0x77'),'createdAt')[_0x7031('0x76')](_0x7031('0x77'),_0x7031('0x75'))[_0x7031('0x7a')](_0x7031('0x7b'))[_0x7031('0x41')](_0x7031('0x82'))['where'](_0x7031('0x83'),_0x1a845f[_0x7031('0x78')][_0x7031('0x79')]())[_0x7031('0x41')](_0x7031('0x85')))[_0x7031('0x79')]();}_0x54a730[_0x7031('0x86')](db[_0x7031('0x87')][_0x7031('0x39')](_0x16afda));}return BPromise[_0x7031('0x88')](_0x54a730);}})[_0x7031('0x29')](function(){return _0x394eb7;})[_0x7031('0x29')](respondWithResult(_0x34c611,null))['catch'](handleError(_0x34c611,null));};exports[_0x7031('0x89')]=function(_0x1447ff,_0x49b74e,_0x572fe1){return db[_0x7031('0x32')][_0x7031('0x4e')]({'where':{'id':_0x1447ff[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x49b74e,null))[_0x7031('0x29')](function(_0x13831c){if(_0x13831c){return _0x13831c[_0x7031('0x89')](_0x1447ff[_0x7031('0x39')][_0x7031('0x6a')]);}})[_0x7031('0x29')](function(_0x52de54){if(_0x52de54){return db[_0x7031('0x5f')][_0x7031('0x28')]({'where':{'ListId':_0x1447ff[_0x7031('0x39')]['ids'],'CampaignId':_0x1447ff['params']['id']}})['then'](function(){return _0x52de54;});}})[_0x7031('0x29')](respondWithStatusCode(_0x49b74e,null))['catch'](handleError(_0x49b74e,null));};exports[_0x7031('0x8a')]=function(_0x3a8af9,_0x194869,_0x3672e5){var _0xccc032={};var _0x31ca78={};var _0x5500dc;var _0x3591cd;return db[_0x7031('0x32')][_0x7031('0x62')]({'where':{'id':_0x3a8af9[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x194869,null))[_0x7031('0x29')](function(_0x75e34f){if(_0x75e34f){_0x5500dc=_0x75e34f;_0x31ca78[_0x7031('0x37')]=_[_0x7031('0x4c')](db[_0x7031('0x8b')][_0x7031('0x33')]);_0x31ca78[_0x7031('0x39')]=_[_0x7031('0x4c')](_0x3a8af9[_0x7031('0x39')]);_0x31ca78[_0x7031('0x42')]=_[_0x7031('0x3a')](_0x31ca78['model'],_0x31ca78[_0x7031('0x39')]);_0xccc032[_0x7031('0x3b')]=_['intersection'](_0x31ca78[_0x7031('0x37')],qs[_0x7031('0x3c')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x3c')]));_0xccc032[_0x7031('0x3b')]=_0xccc032[_0x7031('0x3b')][_0x7031('0x3d')]?_0xccc032[_0x7031('0x3b')]:_0x31ca78[_0x7031('0x37')];_0xccc032[_0x7031('0x3f')]=qs[_0x7031('0x40')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x40')]);_0xccc032[_0x7031('0x41')]=qs[_0x7031('0x42')](_[_0x7031('0x43')](_0x3a8af9['query'],_0x31ca78[_0x7031('0x42')]));if(_0x3a8af9['query'][_0x7031('0x44')]){_0xccc032[_0x7031('0x41')]=_[_0x7031('0x4d')](_0xccc032[_0x7031('0x41')],{'$or':_[_0x7031('0x38')](_0xccc032['attributes'],function(_0xefdcd4){var _0x4a5a0f={};_0x4a5a0f[_0xefdcd4]={'$like':'%'+_0x3a8af9[_0x7031('0x39')][_0x7031('0x44')]+'%'};return _0x4a5a0f;})});}_0xccc032=_['merge']({},_0xccc032,_0x3a8af9[_0x7031('0x46')]);return _0x5500dc[_0x7031('0x8a')](_0xccc032);}})[_0x7031('0x29')](function(_0x38594a){if(_0x38594a){_0x3591cd=_0x38594a['length'];if(!_0x3a8af9[_0x7031('0x39')]['hasOwnProperty'](_0x7031('0x5d'))){_0xccc032['limit']=qs[_0x7031('0x21')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x21')]);_0xccc032[_0x7031('0x1f')]=qs[_0x7031('0x1f')](_0x3a8af9[_0x7031('0x39')][_0x7031('0x1f')]);}return _0x5500dc[_0x7031('0x8a')](_0xccc032);}})[_0x7031('0x29')](function(_0x263284){if(_0x263284){return _0x263284?{'count':_0x3591cd,'rows':_0x263284}:null;}})[_0x7031('0x29')](respondWithResult(_0x194869,null))[_0x7031('0x4a')](handleError(_0x194869,null));};exports[_0x7031('0x8c')]=function(_0x25758b,_0x3a6e3a,_0x1e1036){var _0xe3019f,_0x130d6d;return db[_0x7031('0x32')][_0x7031('0x4e')]({'where':{'id':_0x25758b[_0x7031('0x57')]['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x3a6e3a,null))[_0x7031('0x29')](function(_0x2e25fd){if(_0x2e25fd){_0x130d6d=_0x2e25fd;return _0x2e25fd[_0x7031('0x8c')](_0x25758b[_0x7031('0x50')][_0x7031('0x6a')],_[_0x7031('0x59')](_0x25758b['body'],[_0x7031('0x6a'),'id'])||{});}return null;})['spread'](function(_0x192a81){var _0x4cd4af;_0xe3019f=_0x192a81||[];var _0x49f0bd=[];if(_0x192a81){for(var _0x4671e7=0x0;_0x4671e7<_0x192a81[_0x7031('0x3d')];_0x4671e7+=0x1){var _0x3ffa4b=_0x192a81[_0x4671e7][_0x7031('0x51')]({'plain':!![]});_0x4cd4af=squel[_0x7031('0x6e')]()[_0x7031('0x6f')](_0x7031('0x8d'))[_0x7031('0x71')](['phone','ContactId',_0x7031('0x81'),_0x7031('0x5e'),_0x7031('0x58'),_0x7031('0x75')],squel['select']()[_0x7031('0x76')](_0x7031('0x72'),'phone')[_0x7031('0x76')]('id',_0x7031('0x74'))[_0x7031('0x76')](_0x3ffa4b[_0x7031('0x78')][_0x7031('0x79')](),_0x7031('0x81'))[_0x7031('0x76')](_0x25758b['params']['id'][_0x7031('0x79')](),'CampaignId')['field']('NOW()',_0x7031('0x58'))['field'](_0x7031('0x77'),_0x7031('0x75'))[_0x7031('0x7a')]('cm_contacts')[_0x7031('0x41')](_0x7031('0x82'))[_0x7031('0x41')]('ListId\x20=\x20?',_0x3ffa4b[_0x7031('0x78')][_0x7031('0x79')]())[_0x7031('0x41')](_0x7031('0x85')))[_0x7031('0x79')]();_0x49f0bd['push'](db[_0x7031('0x87')][_0x7031('0x39')](_0x4cd4af));}return BPromise[_0x7031('0x88')](_0x49f0bd);}})[_0x7031('0x29')](function(){return _0xe3019f;})[_0x7031('0x29')](respondWithResult(_0x3a6e3a,null))[_0x7031('0x4a')](handleError(_0x3a6e3a,null));};exports[_0x7031('0x8e')]=function(_0x4b85ae,_0x3ee788,_0x11a2b7){return db['Campaign'][_0x7031('0x4e')]({'where':{'id':_0x4b85ae['params']['id']}})[_0x7031('0x29')](handleEntityNotFound(_0x3ee788,null))[_0x7031('0x29')](function(_0x20a8b4){if(_0x20a8b4){return _0x20a8b4['removeBlackLists'](_0x4b85ae['query'][_0x7031('0x6a')]);}})[_0x7031('0x29')](function(_0x15a771){if(_0x15a771){return db[_0x7031('0x67')]['destroy']({'where':{'ListId':_0x4b85ae[_0x7031('0x39')][_0x7031('0x6a')],'CampaignId':_0x4b85ae[_0x7031('0x57')]['id']}})['then'](function(){return _0x15a771;});}})[_0x7031('0x29')](respondWithStatusCode(_0x3ee788,null))['catch'](handleError(_0x3ee788,null));};
\ No newline at end of file
index 9d5cca8..dd61bd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x251597,_0x3ffa57){var _0x4c8d25=function(_0x2bc575){while(--_0x2bc575){_0x251597['push'](_0x251597['shift']());}};_0x4c8d25(++_0x3ffa57);}(_0x7a54,0x106));var _0x47a5=function(_0x21bd26,_0x3af357){_0x21bd26=_0x21bd26-0x0;var _0x5244ed=_0x7a54[_0x21bd26];return _0x5244ed;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'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 2093cd0..2af8849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c42=['debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetCampaign','Campaign','findAll','options','raw','limit','include','map','model','attributes','stringify','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent'];(function(_0x44dd23,_0x18657){var _0x1fb4c6=function(_0x288d3d){while(--_0x288d3d){_0x44dd23['push'](_0x44dd23['shift']());}};_0x1fb4c6(++_0x18657);}(_0x1c42,0x13a));var _0x21c4=function(_0x2087e3,_0xca21){_0x2087e3=_0x2087e3-0x0;var _0x687341=_0x1c42[_0x2087e3];return _0x687341;};'use strict';var _=require('lodash');var util=require(_0x21c4('0x0'));var moment=require(_0x21c4('0x1'));var BPromise=require(_0x21c4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x21c4('0x3'));var db=require(_0x21c4('0x4'))['db'];var utils=require(_0x21c4('0x5'));var logger=require(_0x21c4('0x6'))(_0x21c4('0x7'));var config=require(_0x21c4('0x8'));var jayson=require(_0x21c4('0x9'));var client=jayson[_0x21c4('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x247ec9,_0x472df1,_0x54b2ea){return new BPromise(function(_0x184e75,_0x57e04f){return client[_0x21c4('0xb')](_0x247ec9,_0x54b2ea)[_0x21c4('0xc')](function(_0x1fac06){logger[_0x21c4('0xd')](_0x21c4('0xe'),_0x472df1,_0x21c4('0xf'));logger[_0x21c4('0x10')](_0x21c4('0x11'),_0x472df1,_0x21c4('0xf'),JSON['stringify'](_0x1fac06));if(_0x1fac06[_0x21c4('0x12')]){if(_0x1fac06['error'][_0x21c4('0x13')]===0x1f4){logger['error'](_0x21c4('0xe'),_0x472df1,_0x1fac06[_0x21c4('0x12')][_0x21c4('0x14')]);return _0x57e04f(_0x1fac06[_0x21c4('0x12')][_0x21c4('0x14')]);}logger[_0x21c4('0x12')](_0x21c4('0xe'),_0x472df1,_0x1fac06[_0x21c4('0x12')][_0x21c4('0x14')]);return _0x184e75(_0x1fac06[_0x21c4('0x12')][_0x21c4('0x14')]);}else{logger[_0x21c4('0xd')](_0x21c4('0xe'),_0x472df1,'request\x20sent');_0x184e75(_0x1fac06['result'][_0x21c4('0x14')]);}})[_0x21c4('0x15')](function(_0x230dce){logger[_0x21c4('0x12')](_0x21c4('0xe'),_0x472df1,_0x230dce);_0x57e04f(_0x230dce);});});}exports[_0x21c4('0x16')]=function(_0x38fa2b){var _0x9cd43c=this;return new Promise(function(_0x2309f6,_0x113604){return db[_0x21c4('0x17')][_0x21c4('0x18')]({'raw':_0x38fa2b[_0x21c4('0x19')]?_0x38fa2b[_0x21c4('0x19')][_0x21c4('0x1a')]===undefined?!![]:![]:!![],'where':_0x38fa2b[_0x21c4('0x19')]?_0x38fa2b['options']['where']||null:null,'attributes':_0x38fa2b[_0x21c4('0x19')]?_0x38fa2b[_0x21c4('0x19')]['attributes']||null:null,'limit':_0x38fa2b[_0x21c4('0x19')]?_0x38fa2b['options'][_0x21c4('0x1b')]||null:null,'include':_0x38fa2b[_0x21c4('0x19')]?_0x38fa2b[_0x21c4('0x19')][_0x21c4('0x1c')]?_[_0x21c4('0x1d')](_0x38fa2b[_0x21c4('0x19')][_0x21c4('0x1c')],function(_0x473128){return{'model':db[_0x473128[_0x21c4('0x1e')]],'as':_0x473128['as'],'attributes':_0x473128['attributes'],'include':_0x473128['include']?_[_0x21c4('0x1d')](_0x473128['include'],function(_0x59af96){return{'model':db[_0x59af96[_0x21c4('0x1e')]],'as':_0x59af96['as'],'attributes':_0x59af96[_0x21c4('0x1f')],'include':_0x59af96[_0x21c4('0x1c')]?_[_0x21c4('0x1d')](_0x59af96[_0x21c4('0x1c')],function(_0x4923c4){return{'model':db[_0x4923c4[_0x21c4('0x1e')]],'as':_0x4923c4['as'],'attributes':_0x4923c4[_0x21c4('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2be1d7){logger[_0x21c4('0xd')](_0x21c4('0x16'),_0x38fa2b);logger['debug']('GetCampaign',_0x38fa2b,JSON[_0x21c4('0x20')](_0x2be1d7));_0x2309f6(_0x2be1d7);})[_0x21c4('0x15')](function(_0x46582f){logger[_0x21c4('0x12')](_0x21c4('0x16'),_0x46582f[_0x21c4('0x14')],_0x38fa2b);_0x113604(_0x9cd43c['error'](0x1f4,_0x46582f['message']));});});};
\ No newline at end of file
+var _0x7119=['limit','include','model','map','GetCampaign','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Campaign,\x20%s,\x20%s','request\x20sent','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','Campaign','options','raw','attributes'];(function(_0x543b43,_0x38e9be){var _0x31a539=function(_0x596038){while(--_0x596038){_0x543b43['push'](_0x543b43['shift']());}};_0x31a539(++_0x38e9be);}(_0x7119,0x1c7));var _0x9711=function(_0x3485f8,_0x1b66cf){_0x3485f8=_0x3485f8-0x0;var _0x1fbba7=_0x7119[_0x3485f8];return _0x1fbba7;};'use strict';var _=require('lodash');var util=require(_0x9711('0x0'));var moment=require('moment');var BPromise=require(_0x9711('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9711('0x2'));var db=require(_0x9711('0x3'))['db'];var utils=require(_0x9711('0x4'));var logger=require(_0x9711('0x5'))('rpc');var config=require(_0x9711('0x6'));var jayson=require(_0x9711('0x7'));var client=jayson[_0x9711('0x8')][_0x9711('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x191701,_0x4c75dd,_0x31af88){return new BPromise(function(_0x3a5f79,_0x132b5b){return client['request'](_0x191701,_0x31af88)[_0x9711('0xa')](function(_0x4b13b9){logger[_0x9711('0xb')](_0x9711('0xc'),_0x4c75dd,_0x9711('0xd'));logger['debug'](_0x9711('0xe'),_0x4c75dd,_0x9711('0xd'),JSON[_0x9711('0xf')](_0x4b13b9));if(_0x4b13b9[_0x9711('0x10')]){if(_0x4b13b9[_0x9711('0x10')][_0x9711('0x11')]===0x1f4){logger[_0x9711('0x10')](_0x9711('0xc'),_0x4c75dd,_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);return _0x132b5b(_0x4b13b9[_0x9711('0x10')]['message']);}logger['error'](_0x9711('0xc'),_0x4c75dd,_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);return _0x3a5f79(_0x4b13b9[_0x9711('0x10')][_0x9711('0x12')]);}else{logger['info'](_0x9711('0xc'),_0x4c75dd,'request\x20sent');_0x3a5f79(_0x4b13b9[_0x9711('0x13')][_0x9711('0x12')]);}})[_0x9711('0x14')](function(_0x640894){logger[_0x9711('0x10')]('Campaign,\x20%s,\x20%s',_0x4c75dd,_0x640894);_0x132b5b(_0x640894);});});}exports['GetCampaign']=function(_0x2ef16c){var _0x3615c9=this;return new Promise(function(_0x210f8b,_0x4629e2){return db[_0x9711('0x15')]['findAll']({'raw':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c[_0x9711('0x16')][_0x9711('0x17')]===undefined?!![]:![]:!![],'where':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c['options']['where']||null:null,'attributes':_0x2ef16c['options']?_0x2ef16c[_0x9711('0x16')][_0x9711('0x18')]||null:null,'limit':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c['options'][_0x9711('0x19')]||null:null,'include':_0x2ef16c[_0x9711('0x16')]?_0x2ef16c['options'][_0x9711('0x1a')]?_['map'](_0x2ef16c[_0x9711('0x16')]['include'],function(_0x3023cf){return{'model':db[_0x3023cf[_0x9711('0x1b')]],'as':_0x3023cf['as'],'attributes':_0x3023cf['attributes'],'include':_0x3023cf[_0x9711('0x1a')]?_[_0x9711('0x1c')](_0x3023cf[_0x9711('0x1a')],function(_0x2db327){return{'model':db[_0x2db327['model']],'as':_0x2db327['as'],'attributes':_0x2db327['attributes'],'include':_0x2db327[_0x9711('0x1a')]?_[_0x9711('0x1c')](_0x2db327['include'],function(_0x4d16e5){return{'model':db[_0x4d16e5['model']],'as':_0x4d16e5['as'],'attributes':_0x4d16e5['attributes']};}):[]};}):[]};}):[]:[]})[_0x9711('0xa')](function(_0x270da2){logger['info'](_0x9711('0x1d'),_0x2ef16c);logger['debug'](_0x9711('0x1d'),_0x2ef16c,JSON[_0x9711('0xf')](_0x270da2));_0x210f8b(_0x270da2);})['catch'](function(_0x3fc5bb){logger[_0x9711('0x10')](_0x9711('0x1d'),_0x3fc5bb[_0x9711('0x12')],_0x2ef16c);_0x4629e2(_0x3615c9['error'](0x1f4,_0x3fc5bb[_0x9711('0x12')]));});});};
\ No newline at end of file
index a81841d..f518b35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d82=['multer','path','express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getBlackLists','post','create','addLists','/:id/blacklists','addBlackLists','put','update','delete','destroy','removeLists','removeBlackLists'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7d82,0x174));var _0x27d8=function(_0x529151,_0x2cc57d){_0x529151=_0x529151-0x0;var _0x496bc5=_0x7d82[_0x529151];return _0x496bc5;};'use strict';var multer=require(_0x27d8('0x0'));var util=require('util');var path=require(_0x27d8('0x1'));var timeout=require('connect-timeout');var express=require(_0x27d8('0x2'));var router=express[_0x27d8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x27d8('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x27d8('0x5'));var controller=require('./campaign.controller');router[_0x27d8('0x6')]('/',auth[_0x27d8('0x7')](),controller[_0x27d8('0x8')]);router[_0x27d8('0x6')](_0x27d8('0x9'),auth['isAuthenticated'](),controller[_0x27d8('0xa')]);router[_0x27d8('0x6')](_0x27d8('0xb'),auth[_0x27d8('0x7')](),controller[_0x27d8('0xc')]);router[_0x27d8('0x6')](_0x27d8('0xd'),auth[_0x27d8('0x7')](),controller[_0x27d8('0xe')]);router[_0x27d8('0x6')]('/:id/hopper_finals',auth[_0x27d8('0x7')](),controller[_0x27d8('0xf')]);router[_0x27d8('0x6')](_0x27d8('0x10'),auth['isAuthenticated'](),controller[_0x27d8('0x11')]);router[_0x27d8('0x6')](_0x27d8('0x12'),auth[_0x27d8('0x7')](),controller['getLists']);router[_0x27d8('0x6')]('/:id/blacklists',auth[_0x27d8('0x7')](),controller[_0x27d8('0x13')]);router[_0x27d8('0x14')]('/',auth[_0x27d8('0x7')](),controller[_0x27d8('0x15')]);router[_0x27d8('0x14')]('/:id/clone',auth['isAuthenticated'](),controller['clone']);router[_0x27d8('0x14')]('/:id/lists',auth[_0x27d8('0x7')](),controller[_0x27d8('0x16')]);router[_0x27d8('0x14')](_0x27d8('0x17'),auth[_0x27d8('0x7')](),controller[_0x27d8('0x18')]);router[_0x27d8('0x19')](_0x27d8('0x9'),auth['isAuthenticated'](),controller[_0x27d8('0x1a')]);router[_0x27d8('0x1b')]('/:id',auth[_0x27d8('0x7')](),controller[_0x27d8('0x1c')]);router[_0x27d8('0x1b')](_0x27d8('0x12'),auth[_0x27d8('0x7')](),controller[_0x27d8('0x1d')]);router[_0x27d8('0x1b')](_0x27d8('0x17'),auth['isAuthenticated'](),controller[_0x27d8('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x3c40=['getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/lists','create','post','clone','addLists','/:id/blacklists','addBlackLists','put','update','delete','destroy','removeLists','removeBlackLists','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','/:id','isAuthenticated','show','/:id/hoppers'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x3c40,0xf4));var _0x03c4=function(_0x1a675c,_0x4648bc){_0x1a675c=_0x1a675c-0x0;var _0x4ee1dc=_0x3c40[_0x1a675c];return _0x4ee1dc;};'use strict';var multer=require(_0x03c4('0x0'));var util=require(_0x03c4('0x1'));var path=require('path');var timeout=require(_0x03c4('0x2'));var express=require(_0x03c4('0x3'));var router=express[_0x03c4('0x4')]();var fs_extra=require(_0x03c4('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x03c4('0x6'));var config=require('../../config/environment');var controller=require('./campaign.controller');router[_0x03c4('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x03c4('0x7')](_0x03c4('0x8'),auth[_0x03c4('0x9')](),controller[_0x03c4('0xa')]);router[_0x03c4('0x7')](_0x03c4('0xb'),auth[_0x03c4('0x9')](),controller[_0x03c4('0xc')]);router['get'](_0x03c4('0xd'),auth[_0x03c4('0x9')](),controller[_0x03c4('0xe')]);router[_0x03c4('0x7')](_0x03c4('0xf'),auth[_0x03c4('0x9')](),controller['getHopperFinals']);router[_0x03c4('0x7')](_0x03c4('0x10'),auth['isAuthenticated'](),controller[_0x03c4('0x11')]);router[_0x03c4('0x7')](_0x03c4('0x12'),auth['isAuthenticated'](),controller['getLists']);router[_0x03c4('0x7')]('/:id/blacklists',auth[_0x03c4('0x9')](),controller['getBlackLists']);router['post']('/',auth['isAuthenticated'](),controller[_0x03c4('0x13')]);router[_0x03c4('0x14')]('/:id/clone',auth[_0x03c4('0x9')](),controller[_0x03c4('0x15')]);router[_0x03c4('0x14')](_0x03c4('0x12'),auth[_0x03c4('0x9')](),controller[_0x03c4('0x16')]);router[_0x03c4('0x14')](_0x03c4('0x17'),auth[_0x03c4('0x9')](),controller[_0x03c4('0x18')]);router[_0x03c4('0x19')]('/:id',auth[_0x03c4('0x9')](),controller[_0x03c4('0x1a')]);router[_0x03c4('0x1b')](_0x03c4('0x8'),auth['isAuthenticated'](),controller[_0x03c4('0x1c')]);router[_0x03c4('0x1b')](_0x03c4('0x12'),auth['isAuthenticated'](),controller[_0x03c4('0x1d')]);router[_0x03c4('0x1b')](_0x03c4('0x17'),auth[_0x03c4('0x9')](),controller[_0x03c4('0x1e')]);module[_0x03c4('0x1f')]=router;
\ No newline at end of file
index 1319d0a..6c0d03c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15d6=['STRING','TEXT','getDataValue','key'];(function(_0x359842,_0xd7d82d){var _0x317362=function(_0x5cc5fb){while(--_0x5cc5fb){_0x359842['push'](_0x359842['shift']());}};_0x317362(++_0xd7d82d);}(_0x15d6,0x100));var _0x615d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x15d6[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module['exports']={'key':{'type':Sequelize[_0x615d('0x0')],'allowNull':![]},'value':{'type':Sequelize[_0x615d('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x615d('0x0')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x615d('0x2')](_0x615d('0x3'));}}};
\ No newline at end of file
+var _0x516f=['sequelize','exports','STRING','VIRTUAL','getDataValue'];(function(_0x3074f3,_0x4f2c03){var _0x53f112=function(_0x4a17af){while(--_0x4a17af){_0x3074f3['push'](_0x3074f3['shift']());}};_0x53f112(++_0x4f2c03);}(_0x516f,0xc8));var _0xf516=function(_0x314a8e,_0x59ffd4){_0x314a8e=_0x314a8e-0x0;var _0x3fe3ce=_0x516f[_0x314a8e];return _0x3fe3ce;};'use strict';var Sequelize=require(_0xf516('0x0'));module[_0xf516('0x1')]={'key':{'type':Sequelize[_0xf516('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0xf516('0x3')],'get':function(){return this[_0xf516('0x4')]('key');}}};
\ No newline at end of file
index 17952c9..1f57897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684d=['../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','UserProfileResource','end','error','stack','name','map','CannedAnswer','rawAttributes','key','model','query','keys','intersection','fields','attributes','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','findAll','rows','catch','show','params','include','find','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','create','user','role','UserProfileSection','CannedAnswers','autoAssociation','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','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0xc7f7af,_0x556d56){var _0x171f01=function(_0x4aa2a1){while(--_0x4aa2a1){_0xc7f7af['push'](_0xc7f7af['shift']());}};_0x171f01(++_0x556d56);}(_0x684d,0xef));var _0xd684=function(_0x5a4d3b,_0x5efea3){_0x5a4d3b=_0x5a4d3b-0x0;var _0xa4b6b5=_0x684d[_0x5a4d3b];return _0xa4b6b5;};'use strict';var emlformat=require(_0xd684('0x0'));var rimraf=require(_0xd684('0x1'));var zipdir=require(_0xd684('0x2'));var jsonpatch=require(_0xd684('0x3'));var rp=require(_0xd684('0x4'));var moment=require(_0xd684('0x5'));var BPromise=require(_0xd684('0x6'));var Mustache=require('mustache');var util=require(_0xd684('0x7'));var path=require(_0xd684('0x8'));var sox=require(_0xd684('0x9'));var csv=require(_0xd684('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd684('0xb'));var squel=require('squel');var crypto=require(_0xd684('0xc'));var jsforce=require(_0xd684('0xd'));var deskjs=require(_0xd684('0xe'));var toCsv=require(_0xd684('0xa'));var querystring=require(_0xd684('0xf'));var Papa=require(_0xd684('0x10'));var Redis=require(_0xd684('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xd684('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd684('0x13'));var logger=require(_0xd684('0x14'))(_0xd684('0x15'));var utils=require(_0xd684('0x16'));var config=require(_0xd684('0x17'));var licenseUtil=require(_0xd684('0x18'));var db=require(_0xd684('0x19'))['db'];function respondWithStatusCode(_0x5c3609,_0x9ba6f6){_0x9ba6f6=_0x9ba6f6||0xcc;return function(_0x2d9cf1){if(_0x2d9cf1){return _0x5c3609[_0xd684('0x1a')](_0x9ba6f6);}return _0x5c3609['status'](_0x9ba6f6)['end']();};}function respondWithResult(_0x4fcee2,_0x29e2ca){_0x29e2ca=_0x29e2ca||0xc8;return function(_0x23ba7f){if(_0x23ba7f){return _0x4fcee2[_0xd684('0x1b')](_0x29e2ca)[_0xd684('0x1c')](_0x23ba7f);}};}function respondWithFilteredResult(_0x53076f,_0x42b786){return function(_0x4fc9a9){if(_0x4fc9a9){var _0x4b950a=typeof _0x42b786[_0xd684('0x1d')]===_0xd684('0x1e')&&typeof _0x42b786[_0xd684('0x1f')]===_0xd684('0x1e');var _0x3e3d9c=_0x4fc9a9['count'];var _0x249982=_0x4b950a?0x0:_0x42b786[_0xd684('0x1d')];var _0x7b3b8b=_0x4b950a?_0x4fc9a9[_0xd684('0x20')]:_0x42b786[_0xd684('0x1d')]+_0x42b786[_0xd684('0x1f')];var _0x2c696b;if(_0x7b3b8b>=_0x3e3d9c){_0x7b3b8b=_0x3e3d9c;_0x2c696b=0xc8;}else{_0x2c696b=0xce;}_0x53076f[_0xd684('0x1b')](_0x2c696b);return _0x53076f[_0xd684('0x21')](_0xd684('0x22'),_0x249982+'-'+_0x7b3b8b+'/'+_0x3e3d9c)[_0xd684('0x1c')](_0x4fc9a9);}return null;};}function patchUpdates(_0x498a86){return function(_0x27cde9){try{jsonpatch[_0xd684('0x23')](_0x27cde9,_0x498a86,!![]);}catch(_0x775471){return BPromise['reject'](_0x775471);}return _0x27cde9['save']();};}function saveUpdates(_0x34f76c,_0x46f730){return function(_0x355658){if(_0x355658){return _0x355658[_0xd684('0x24')](_0x34f76c)[_0xd684('0x25')](function(_0x1edeab){return _0x1edeab;});}return null;};}function removeEntity(_0x41647a,_0x38b77c){return function(_0x458985){if(_0x458985){return _0x458985[_0xd684('0x26')]()[_0xd684('0x25')](function(){var _0x2f525b=_0x458985[_0xd684('0x27')]({'plain':!![]});var _0x58896b='CannedAnswers';return db[_0xd684('0x28')][_0xd684('0x26')]({'where':{'type':_0x58896b,'resourceId':_0x2f525b['id']}})[_0xd684('0x25')](function(){return _0x458985;});})[_0xd684('0x25')](function(){_0x41647a[_0xd684('0x1b')](0xcc)[_0xd684('0x29')]();});}};}function handleEntityNotFound(_0x21bda0,_0x549915){return function(_0x56d618){if(!_0x56d618){_0x21bda0[_0xd684('0x1a')](0x194);}return _0x56d618;};}function handleError(_0x58b132,_0x597f1c){_0x597f1c=_0x597f1c||0x1f4;return function(_0x593ddf){logger[_0xd684('0x2a')](_0x593ddf[_0xd684('0x2b')]);if(_0x593ddf['name']){delete _0x593ddf[_0xd684('0x2c')];}_0x58b132[_0xd684('0x1b')](_0x597f1c)['send'](_0x593ddf);};}exports['index']=function(_0xb8d47d,_0x2b5460){var _0x3c5151={},_0x2aa855={},_0x23dc3f={'count':0x0,'rows':[]};var _0x2d9056=_[_0xd684('0x2d')](db[_0xd684('0x2e')][_0xd684('0x2f')],function(_0x5f491f){return{'name':_0x5f491f['fieldName'],'type':_0x5f491f['type'][_0xd684('0x30')]};});_0x2aa855[_0xd684('0x31')]=_['map'](_0x2d9056,_0xd684('0x2c'));_0x2aa855[_0xd684('0x32')]=_[_0xd684('0x33')](_0xb8d47d['query']);_0x2aa855['filters']=_[_0xd684('0x34')](_0x2aa855[_0xd684('0x31')],_0x2aa855[_0xd684('0x32')]);_0x3c5151['attributes']=_[_0xd684('0x34')](_0x2aa855[_0xd684('0x31')],qs[_0xd684('0x35')](_0xb8d47d['query'][_0xd684('0x35')]));_0x3c5151[_0xd684('0x36')]=_0x3c5151[_0xd684('0x36')][_0xd684('0x37')]?_0x3c5151['attributes']:_0x2aa855[_0xd684('0x31')];if(!_0xb8d47d[_0xd684('0x32')]['hasOwnProperty'](_0xd684('0x38'))){_0x3c5151['limit']=qs[_0xd684('0x1f')](_0xb8d47d['query'][_0xd684('0x1f')]);_0x3c5151['offset']=qs['offset'](_0xb8d47d['query'][_0xd684('0x1d')]);}_0x3c5151[_0xd684('0x39')]=qs[_0xd684('0x3a')](_0xb8d47d[_0xd684('0x32')]['sort']);_0x3c5151['where']=qs[_0xd684('0x3b')](_[_0xd684('0x3c')](_0xb8d47d['query'],_0x2aa855[_0xd684('0x3b')]),_0x2d9056);if(_0xb8d47d[_0xd684('0x32')][_0xd684('0x3d')]){_0x3c5151[_0xd684('0x3e')]=_['merge'](_0x3c5151['where'],{'$or':[{'key':{'$like':'%'+_0xb8d47d['query'][_0xd684('0x3d')]+'%'}},{'value':{'$like':'%'+_0xb8d47d[_0xd684('0x32')][_0xd684('0x3d')]+'%'}}]});}_0x3c5151=_[_0xd684('0x3f')]({},_0x3c5151,_0xb8d47d[_0xd684('0x40')]);var _0x2ae2e0={'where':_0x3c5151[_0xd684('0x3e')]};return db[_0xd684('0x2e')][_0xd684('0x20')](_0x2ae2e0)['then'](function(_0x2f83f8){_0x23dc3f[_0xd684('0x20')]=_0x2f83f8;if(_0xb8d47d[_0xd684('0x32')][_0xd684('0x41')]){_0x3c5151['include']=[{'all':!![]}];}return db[_0xd684('0x2e')][_0xd684('0x42')](_0x3c5151);})[_0xd684('0x25')](function(_0x13dd5a){_0x23dc3f[_0xd684('0x43')]=_0x13dd5a;return _0x23dc3f;})[_0xd684('0x25')](respondWithFilteredResult(_0x2b5460,_0x3c5151))[_0xd684('0x44')](handleError(_0x2b5460,null));};exports[_0xd684('0x45')]=function(_0x3cab41,_0x3e54c2){var _0x3da56d={'raw':!![],'where':{'id':_0x3cab41[_0xd684('0x46')]['id']}},_0x36e246={};_0x36e246[_0xd684('0x31')]=_[_0xd684('0x33')](db[_0xd684('0x2e')][_0xd684('0x2f')]);_0x36e246[_0xd684('0x32')]=_[_0xd684('0x33')](_0x3cab41[_0xd684('0x32')]);_0x36e246[_0xd684('0x3b')]=_[_0xd684('0x34')](_0x36e246['model'],_0x36e246['query']);_0x3da56d[_0xd684('0x36')]=_[_0xd684('0x34')](_0x36e246[_0xd684('0x31')],qs['fields'](_0x3cab41['query'][_0xd684('0x35')]));_0x3da56d['attributes']=_0x3da56d['attributes'][_0xd684('0x37')]?_0x3da56d[_0xd684('0x36')]:_0x36e246[_0xd684('0x31')];if(_0x3cab41['query']['includeAll']){_0x3da56d[_0xd684('0x47')]=[{'all':!![]}];}_0x3da56d=_[_0xd684('0x3f')]({},_0x3da56d,_0x3cab41[_0xd684('0x40')]);return db['CannedAnswer'][_0xd684('0x48')](_0x3da56d)['then'](handleEntityNotFound(_0x3e54c2,null))[_0xd684('0x25')](respondWithResult(_0x3e54c2,null))[_0xd684('0x44')](handleError(_0x3e54c2,null));};exports[_0xd684('0x24')]=function(_0x3848e7,_0x4b6a39){if(_0x3848e7[_0xd684('0x49')]['id']){delete _0x3848e7['body']['id'];}return db['CannedAnswer'][_0xd684('0x48')]({'where':{'id':_0x3848e7[_0xd684('0x46')]['id']}})['then'](handleEntityNotFound(_0x4b6a39,null))[_0xd684('0x25')](saveUpdates(_0x3848e7[_0xd684('0x49')],null))['then'](respondWithResult(_0x4b6a39,null))[_0xd684('0x44')](handleError(_0x4b6a39,null));};exports['destroy']=function(_0x99920f,_0x3b4a7d){return db['CannedAnswer']['find']({'where':{'id':_0x99920f[_0xd684('0x46')]['id']}})[_0xd684('0x25')](handleEntityNotFound(_0x3b4a7d,null))['then'](removeEntity(_0x3b4a7d,null))[_0xd684('0x44')](handleError(_0x3b4a7d,null));};exports['create']=function(_0x27de96,_0x4bb5b2){var _0x4a8fea={'key':_0x27de96[_0xd684('0x49')][_0xd684('0x30')]};if(_0x27de96[_0xd684('0x49')]['MailAccountId']){_0x4a8fea[_0xd684('0x4a')]=_0x27de96[_0xd684('0x49')][_0xd684('0x4a')];}else if(_0x27de96[_0xd684('0x49')][_0xd684('0x4b')]){_0x4a8fea[_0xd684('0x4b')]=_0x27de96[_0xd684('0x49')][_0xd684('0x4b')];}else if(_0x27de96[_0xd684('0x49')][_0xd684('0x4c')]){_0x4a8fea[_0xd684('0x4c')]=_0x27de96[_0xd684('0x49')][_0xd684('0x4c')];}else if(_0x27de96[_0xd684('0x49')]['ChatWebsiteId']){_0x4a8fea['ChatWebsiteId']=_0x27de96['body'][_0xd684('0x4d')];}return db[_0xd684('0x2e')][_0xd684('0x48')]({'where':_0x4a8fea})[_0xd684('0x25')](function(_0x3a253e){if(_0x3a253e){throw new db[(_0xd684('0x4e'))][(_0xd684('0x4f'))](_0xd684('0x50'));}return db[_0xd684('0x2e')][_0xd684('0x51')](_0x27de96['body']);})[_0xd684('0x25')](function(_0x1a66f7){var _0xea87e1=_0x27de96[_0xd684('0x52')]['get']({'plain':!![]});if(!_0xea87e1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xea87e1[_0xd684('0x53')]==='user'){var _0x313969=_0x1a66f7[_0xd684('0x27')]({'plain':!![]});return db[_0xd684('0x54')][_0xd684('0x48')]({'where':{'name':_0xd684('0x55'),'userProfileId':_0xea87e1['userProfileId']},'raw':!![]})[_0xd684('0x25')](function(_0x15bef2){if(_0x15bef2&&_0x15bef2[_0xd684('0x56')]===0x0){return db[_0xd684('0x28')][_0xd684('0x51')]({'name':_0x313969[_0xd684('0x2c')],'resourceId':_0x313969['id'],'type':_0x15bef2[_0xd684('0x2c')],'sectionId':_0x15bef2['id']},{})['then'](function(){return _0x1a66f7;});}else{return _0x1a66f7;}})['catch'](function(_0x113457){logger[_0xd684('0x2a')](_0xd684('0x57'),_0x113457);throw _0x113457;});}return _0x1a66f7;})[_0xd684('0x25')](respondWithResult(_0x4bb5b2,0xc9))[_0xd684('0x44')](handleError(_0x4bb5b2,null));};
\ No newline at end of file
+var _0x3999=['end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','get','CannedAnswers','UserProfileResource','stack','name','index','map','CannedAnswer','rawAttributes','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','where','filter','merge','options','includeAll','include','rows','catch','show','params','find','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status'];(function(_0x1ad926,_0x3e1fed){var _0x1b81dc=function(_0x506f83){while(--_0x506f83){_0x1ad926['push'](_0x1ad926['shift']());}};_0x1b81dc(++_0x3e1fed);}(_0x3999,0x91));var _0x9399=function(_0x4c6eab,_0x48a445){_0x4c6eab=_0x4c6eab-0x0;var _0x382d77=_0x3999[_0x4c6eab];return _0x382d77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9399('0x0'));var zipdir=require(_0x9399('0x1'));var jsonpatch=require(_0x9399('0x2'));var rp=require(_0x9399('0x3'));var moment=require('moment');var BPromise=require(_0x9399('0x4'));var Mustache=require(_0x9399('0x5'));var util=require(_0x9399('0x6'));var path=require(_0x9399('0x7'));var sox=require(_0x9399('0x8'));var csv=require(_0x9399('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9399('0xa'));var _=require(_0x9399('0xb'));var squel=require(_0x9399('0xc'));var crypto=require(_0x9399('0xd'));var jsforce=require(_0x9399('0xe'));var deskjs=require(_0x9399('0xf'));var toCsv=require(_0x9399('0x9'));var querystring=require(_0x9399('0x10'));var Papa=require(_0x9399('0x11'));var Redis=require(_0x9399('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9399('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x9399('0x14'))(_0x9399('0x15'));var utils=require(_0x9399('0x16'));var config=require(_0x9399('0x17'));var licenseUtil=require(_0x9399('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x91ff40,_0x441d81){_0x441d81=_0x441d81||0xcc;return function(_0x86fd80){if(_0x86fd80){return _0x91ff40[_0x9399('0x19')](_0x441d81);}return _0x91ff40[_0x9399('0x1a')](_0x441d81)[_0x9399('0x1b')]();};}function respondWithResult(_0x222f0e,_0x1cf9aa){_0x1cf9aa=_0x1cf9aa||0xc8;return function(_0x3b1c63){if(_0x3b1c63){return _0x222f0e[_0x9399('0x1a')](_0x1cf9aa)[_0x9399('0x1c')](_0x3b1c63);}};}function respondWithFilteredResult(_0x380b94,_0xee5861){return function(_0x13de1b){if(_0x13de1b){var _0x586860=typeof _0xee5861['offset']===_0x9399('0x1d')&&typeof _0xee5861[_0x9399('0x1e')]==='undefined';var _0x4c6e30=_0x13de1b[_0x9399('0x1f')];var _0x1305e7=_0x586860?0x0:_0xee5861['offset'];var _0x2f7df2=_0x586860?_0x13de1b[_0x9399('0x1f')]:_0xee5861[_0x9399('0x20')]+_0xee5861['limit'];var _0x54a73f;if(_0x2f7df2>=_0x4c6e30){_0x2f7df2=_0x4c6e30;_0x54a73f=0xc8;}else{_0x54a73f=0xce;}_0x380b94[_0x9399('0x1a')](_0x54a73f);return _0x380b94[_0x9399('0x21')](_0x9399('0x22'),_0x1305e7+'-'+_0x2f7df2+'/'+_0x4c6e30)[_0x9399('0x1c')](_0x13de1b);}return null;};}function patchUpdates(_0x226b0c){return function(_0x440696){try{jsonpatch[_0x9399('0x23')](_0x440696,_0x226b0c,!![]);}catch(_0x17bed4){return BPromise['reject'](_0x17bed4);}return _0x440696[_0x9399('0x24')]();};}function saveUpdates(_0x5bd035,_0x20907d){return function(_0x259d9a){if(_0x259d9a){return _0x259d9a[_0x9399('0x25')](_0x5bd035)['then'](function(_0x2e39e6){return _0x2e39e6;});}return null;};}function removeEntity(_0x585a0e,_0x4a510e){return function(_0x14d690){if(_0x14d690){return _0x14d690[_0x9399('0x26')]()[_0x9399('0x27')](function(){var _0x347fe4=_0x14d690[_0x9399('0x28')]({'plain':!![]});var _0x3418e1=_0x9399('0x29');return db[_0x9399('0x2a')][_0x9399('0x26')]({'where':{'type':_0x3418e1,'resourceId':_0x347fe4['id']}})['then'](function(){return _0x14d690;});})[_0x9399('0x27')](function(){_0x585a0e[_0x9399('0x1a')](0xcc)[_0x9399('0x1b')]();});}};}function handleEntityNotFound(_0x11c81d,_0x4a2be0){return function(_0x349459){if(!_0x349459){_0x11c81d['sendStatus'](0x194);}return _0x349459;};}function handleError(_0x4847d7,_0x26c898){_0x26c898=_0x26c898||0x1f4;return function(_0x1b5aa7){logger['error'](_0x1b5aa7[_0x9399('0x2b')]);if(_0x1b5aa7['name']){delete _0x1b5aa7[_0x9399('0x2c')];}_0x4847d7[_0x9399('0x1a')](_0x26c898)['send'](_0x1b5aa7);};}exports[_0x9399('0x2d')]=function(_0x5ed210,_0x4e1f20){var _0x337773={},_0x583e6f={},_0x52e7f5={'count':0x0,'rows':[]};var _0x1a64f4=_[_0x9399('0x2e')](db[_0x9399('0x2f')][_0x9399('0x30')],function(_0x27e738){return{'name':_0x27e738['fieldName'],'type':_0x27e738[_0x9399('0x31')]['key']};});_0x583e6f[_0x9399('0x32')]=_[_0x9399('0x2e')](_0x1a64f4,_0x9399('0x2c'));_0x583e6f['query']=_[_0x9399('0x33')](_0x5ed210[_0x9399('0x34')]);_0x583e6f[_0x9399('0x35')]=_[_0x9399('0x36')](_0x583e6f['model'],_0x583e6f['query']);_0x337773[_0x9399('0x37')]=_['intersection'](_0x583e6f[_0x9399('0x32')],qs[_0x9399('0x38')](_0x5ed210[_0x9399('0x34')][_0x9399('0x38')]));_0x337773['attributes']=_0x337773[_0x9399('0x37')][_0x9399('0x39')]?_0x337773[_0x9399('0x37')]:_0x583e6f['model'];if(!_0x5ed210[_0x9399('0x34')]['hasOwnProperty'](_0x9399('0x3a'))){_0x337773['limit']=qs[_0x9399('0x1e')](_0x5ed210['query']['limit']);_0x337773['offset']=qs[_0x9399('0x20')](_0x5ed210[_0x9399('0x34')][_0x9399('0x20')]);}_0x337773[_0x9399('0x3b')]=qs['sort'](_0x5ed210[_0x9399('0x34')]['sort']);_0x337773[_0x9399('0x3c')]=qs[_0x9399('0x35')](_['pick'](_0x5ed210[_0x9399('0x34')],_0x583e6f[_0x9399('0x35')]),_0x1a64f4);if(_0x5ed210[_0x9399('0x34')][_0x9399('0x3d')]){_0x337773[_0x9399('0x3c')]=_[_0x9399('0x3e')](_0x337773[_0x9399('0x3c')],{'$or':[{'key':{'$like':'%'+_0x5ed210[_0x9399('0x34')][_0x9399('0x3d')]+'%'}},{'value':{'$like':'%'+_0x5ed210[_0x9399('0x34')]['filter']+'%'}}]});}_0x337773=_[_0x9399('0x3e')]({},_0x337773,_0x5ed210[_0x9399('0x3f')]);var _0x45dad2={'where':_0x337773[_0x9399('0x3c')]};return db['CannedAnswer'][_0x9399('0x1f')](_0x45dad2)['then'](function(_0x3e2086){_0x52e7f5['count']=_0x3e2086;if(_0x5ed210[_0x9399('0x34')][_0x9399('0x40')]){_0x337773[_0x9399('0x41')]=[{'all':!![]}];}return db[_0x9399('0x2f')]['findAll'](_0x337773);})[_0x9399('0x27')](function(_0x4b87a1){_0x52e7f5[_0x9399('0x42')]=_0x4b87a1;return _0x52e7f5;})[_0x9399('0x27')](respondWithFilteredResult(_0x4e1f20,_0x337773))[_0x9399('0x43')](handleError(_0x4e1f20,null));};exports[_0x9399('0x44')]=function(_0x38bf48,_0x4e90f6){var _0x41df43={'raw':!![],'where':{'id':_0x38bf48[_0x9399('0x45')]['id']}},_0x524c65={};_0x524c65[_0x9399('0x32')]=_[_0x9399('0x33')](db['CannedAnswer'][_0x9399('0x30')]);_0x524c65[_0x9399('0x34')]=_[_0x9399('0x33')](_0x38bf48['query']);_0x524c65['filters']=_['intersection'](_0x524c65[_0x9399('0x32')],_0x524c65['query']);_0x41df43[_0x9399('0x37')]=_[_0x9399('0x36')](_0x524c65[_0x9399('0x32')],qs[_0x9399('0x38')](_0x38bf48['query']['fields']));_0x41df43[_0x9399('0x37')]=_0x41df43[_0x9399('0x37')][_0x9399('0x39')]?_0x41df43[_0x9399('0x37')]:_0x524c65[_0x9399('0x32')];if(_0x38bf48[_0x9399('0x34')]['includeAll']){_0x41df43[_0x9399('0x41')]=[{'all':!![]}];}_0x41df43=_[_0x9399('0x3e')]({},_0x41df43,_0x38bf48['options']);return db[_0x9399('0x2f')][_0x9399('0x46')](_0x41df43)['then'](handleEntityNotFound(_0x4e90f6,null))[_0x9399('0x27')](respondWithResult(_0x4e90f6,null))[_0x9399('0x43')](handleError(_0x4e90f6,null));};exports[_0x9399('0x25')]=function(_0x2e7c80,_0x34a342){if(_0x2e7c80[_0x9399('0x47')]['id']){delete _0x2e7c80[_0x9399('0x47')]['id'];}return db['CannedAnswer']['find']({'where':{'id':_0x2e7c80[_0x9399('0x45')]['id']}})[_0x9399('0x27')](handleEntityNotFound(_0x34a342,null))[_0x9399('0x27')](saveUpdates(_0x2e7c80['body'],null))['then'](respondWithResult(_0x34a342,null))[_0x9399('0x43')](handleError(_0x34a342,null));};exports[_0x9399('0x26')]=function(_0x382c4c,_0x373411){return db[_0x9399('0x2f')][_0x9399('0x46')]({'where':{'id':_0x382c4c[_0x9399('0x45')]['id']}})[_0x9399('0x27')](handleEntityNotFound(_0x373411,null))[_0x9399('0x27')](removeEntity(_0x373411,null))[_0x9399('0x43')](handleError(_0x373411,null));};exports[_0x9399('0x48')]=function(_0x4c5389,_0x149dd7){var _0x2f3133={'key':_0x4c5389[_0x9399('0x47')]['key']};if(_0x4c5389[_0x9399('0x47')][_0x9399('0x49')]){_0x2f3133[_0x9399('0x49')]=_0x4c5389['body'][_0x9399('0x49')];}else if(_0x4c5389['body'][_0x9399('0x4a')]){_0x2f3133[_0x9399('0x4a')]=_0x4c5389[_0x9399('0x47')][_0x9399('0x4a')];}else if(_0x4c5389[_0x9399('0x47')][_0x9399('0x4b')]){_0x2f3133['OpenchannelAccountId']=_0x4c5389['body']['OpenchannelAccountId'];}else if(_0x4c5389[_0x9399('0x47')]['ChatWebsiteId']){_0x2f3133['ChatWebsiteId']=_0x4c5389[_0x9399('0x47')][_0x9399('0x4c')];}return db['CannedAnswer'][_0x9399('0x46')]({'where':_0x2f3133})['then'](function(_0x54327b){if(_0x54327b){throw new db[(_0x9399('0x4d'))][(_0x9399('0x4e'))](_0x9399('0x4f'));}return db[_0x9399('0x2f')][_0x9399('0x48')](_0x4c5389['body']);})[_0x9399('0x27')](function(_0x5e9c85){var _0x228cba=_0x4c5389[_0x9399('0x50')][_0x9399('0x28')]({'plain':!![]});if(!_0x228cba)throw new Error(_0x9399('0x51'));if(_0x228cba[_0x9399('0x52')]===_0x9399('0x50')){var _0x7c12a2=_0x5e9c85['get']({'plain':!![]});return db[_0x9399('0x53')][_0x9399('0x46')]({'where':{'name':_0x9399('0x29'),'userProfileId':_0x228cba['userProfileId']},'raw':!![]})[_0x9399('0x27')](function(_0x218977){if(_0x218977&&_0x218977['autoAssociation']===0x0){return db[_0x9399('0x2a')][_0x9399('0x48')]({'name':_0x7c12a2[_0x9399('0x2c')],'resourceId':_0x7c12a2['id'],'type':_0x218977[_0x9399('0x2c')],'sectionId':_0x218977['id']},{})[_0x9399('0x27')](function(){return _0x5e9c85;});}else{return _0x5e9c85;}})[_0x9399('0x43')](function(_0x5c1c01){logger[_0x9399('0x54')](_0x9399('0x55'),_0x5c1c01);throw _0x5c1c01;});}return _0x5e9c85;})[_0x9399('0x27')](respondWithResult(_0x149dd7,0xc9))[_0x9399('0x43')](handleError(_0x149dd7,null));};
\ No newline at end of file
index ba8d5d2..5fdf6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2c2=['./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x4f2e8f,_0x595cd3){var _0xcc3cd6=function(_0x170ea1){while(--_0x170ea1){_0x4f2e8f['push'](_0x4f2e8f['shift']());}};_0xcc3cd6(++_0x595cd3);}(_0xa2c2,0xa0));var _0x2a2c=function(_0x4bb38e,_0x24352c){_0x4bb38e=_0x4bb38e-0x0;var _0x5f2f5a=_0xa2c2[_0x4bb38e];return _0x5f2f5a;};'use strict';var _=require(_0x2a2c('0x0'));var util=require(_0x2a2c('0x1'));var logger=require(_0x2a2c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2a2c('0x3'));var rp=require(_0x2a2c('0x4'));var fs=require('fs');var path=require(_0x2a2c('0x5'));var rimraf=require(_0x2a2c('0x6'));var config=require(_0x2a2c('0x7'));var attributes=require(_0x2a2c('0x8'));module[_0x2a2c('0x9')]=function(_0x377897,_0x22a86d){return _0x377897[_0x2a2c('0xa')](_0x2a2c('0xb'),attributes,{'tableName':_0x2a2c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x2a2c('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x4df1=['rimraf','../../config/environment','./cannedAnswer.attributes','exports','define','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x350d52,_0x31d8ce){var _0xee8b9c=function(_0x3c0dfa){while(--_0x3c0dfa){_0x350d52['push'](_0x350d52['shift']());}};_0xee8b9c(++_0x31d8ce);}(_0x4df1,0x85));var _0x14df=function(_0x4c0946,_0x1621bd){_0x4c0946=_0x4c0946-0x0;var _0x3462b0=_0x4df1[_0x4c0946];return _0x3462b0;};'use strict';var _=require(_0x14df('0x0'));var util=require(_0x14df('0x1'));var logger=require(_0x14df('0x2'))(_0x14df('0x3'));var moment=require(_0x14df('0x4'));var BPromise=require(_0x14df('0x5'));var rp=require(_0x14df('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x14df('0x7'));var config=require(_0x14df('0x8'));var attributes=require(_0x14df('0x9'));module[_0x14df('0xa')]=function(_0x43bac6,_0x588889){return _0x43bac6[_0x14df('0xb')]('CannedAnswer',attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x14df('0xc'),'collate':_0x14df('0xd')});};
\ No newline at end of file
index 3874641..0cfea7c 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(_0x17b771,_0x471643){var _0x3150da=function(_0x101ef4){while(--_0x101ef4){_0x17b771['push'](_0x17b771['shift']());}};_0x3150da(++_0x471643);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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(_0x490b52,_0x13f23a){var _0x4783e6=function(_0x9ff7c6){while(--_0x9ff7c6){_0x490b52['push'](_0x490b52['shift']());}};_0x4783e6(++_0x13f23a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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 46f4d5b..40d2ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe334=['update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','index','get','/:id','show','post','create','put'];(function(_0x51f5aa,_0x198023){var _0x4aedc2=function(_0x2f7130){while(--_0x2f7130){_0x51f5aa['push'](_0x51f5aa['shift']());}};_0x4aedc2(++_0x198023);}(_0xe334,0x7a));var _0x4e33=function(_0x19db96,_0x1114e1){_0x19db96=_0x19db96-0x0;var _0x4bc014=_0xe334[_0x19db96];return _0x4bc014;};'use strict';var multer=require(_0x4e33('0x0'));var util=require(_0x4e33('0x1'));var path=require(_0x4e33('0x2'));var timeout=require(_0x4e33('0x3'));var express=require(_0x4e33('0x4'));var router=express[_0x4e33('0x5')]();var fs_extra=require(_0x4e33('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x4e33('0x7'));var config=require(_0x4e33('0x8'));var controller=require(_0x4e33('0x9'));router['get']('/',auth[_0x4e33('0xa')](),controller[_0x4e33('0xb')]);router[_0x4e33('0xc')](_0x4e33('0xd'),auth['isAuthenticated'](),controller[_0x4e33('0xe')]);router[_0x4e33('0xf')]('/',auth[_0x4e33('0xa')](),controller[_0x4e33('0x10')]);router[_0x4e33('0x11')]('/:id',auth[_0x4e33('0xa')](),controller[_0x4e33('0x12')]);router['delete'](_0x4e33('0xd'),auth[_0x4e33('0xa')](),controller[_0x4e33('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xe536=['../../components/interaction/service','get','isAuthenticated','/:id','show','create','put','update','delete','exports','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x56b9f2,_0x22400e){var _0x4cc2dd=function(_0x192651){while(--_0x192651){_0x56b9f2['push'](_0x56b9f2['shift']());}};_0x4cc2dd(++_0x22400e);}(_0xe536,0x163));var _0x6e53=function(_0x56f2e4,_0x453f62){_0x56f2e4=_0x56f2e4-0x0;var _0x311606=_0xe536[_0x56f2e4];return _0x311606;};'use strict';var multer=require('multer');var util=require(_0x6e53('0x0'));var path=require(_0x6e53('0x1'));var timeout=require(_0x6e53('0x2'));var express=require(_0x6e53('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6e53('0x4'));var interaction=require(_0x6e53('0x5'));var config=require('../../config/environment');var controller=require('./cannedAnswer.controller');router[_0x6e53('0x6')]('/',auth[_0x6e53('0x7')](),controller['index']);router[_0x6e53('0x6')](_0x6e53('0x8'),auth[_0x6e53('0x7')](),controller[_0x6e53('0x9')]);router['post']('/',auth[_0x6e53('0x7')](),controller[_0x6e53('0xa')]);router[_0x6e53('0xb')](_0x6e53('0x8'),auth[_0x6e53('0x7')](),controller[_0x6e53('0xc')]);router[_0x6e53('0xd')](_0x6e53('0x8'),auth[_0x6e53('0x7')](),controller['destroy']);module[_0x6e53('0xe')]=router;
\ No newline at end of file
index dc1a096..540d523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf7=['DATE','STRING','INTEGER','sequelize','exports'];(function(_0x4ed17b,_0x2b1745){var _0x24b248=function(_0x136ab1){while(--_0x136ab1){_0x4ed17b['push'](_0x4ed17b['shift']());}};_0x24b248(++_0x2b1745);}(_0x8bf7,0x139));var _0x78bf=function(_0x44fef9,_0xd6b931){_0x44fef9=_0x44fef9-0x0;var _0x1429b7=_0x8bf7[_0x44fef9];return _0x1429b7;};'use strict';var Sequelize=require(_0x78bf('0x0'));module[_0x78bf('0x1')]={'calldate':{'type':Sequelize[_0x78bf('0x2')],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x78bf('0x3')]},'src':{'type':Sequelize[_0x78bf('0x3')]},'dst':{'type':Sequelize[_0x78bf('0x3')]},'dcontext':{'type':Sequelize[_0x78bf('0x3')]},'channel':{'type':Sequelize[_0x78bf('0x3')]},'dstchannel':{'type':Sequelize[_0x78bf('0x3')]},'lastapp':{'type':Sequelize[_0x78bf('0x3')]},'lastdata':{'type':Sequelize[_0x78bf('0x3')]},'duration':{'type':Sequelize[_0x78bf('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x78bf('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x78bf('0x3')]},'amaflags':{'type':Sequelize[_0x78bf('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x78bf('0x3')]},'userfield':{'type':Sequelize[_0x78bf('0x3')]},'uniqueid':{'type':Sequelize[_0x78bf('0x3')]},'linkedid':{'type':Sequelize[_0x78bf('0x3')]},'sequence':{'type':Sequelize[_0x78bf('0x3')]},'peeraccount':{'type':Sequelize[_0x78bf('0x3')]},'type':{'type':Sequelize[_0x78bf('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0855=['1970-01-01\x2000:00:01','STRING','INTEGER','sequelize','exports'];(function(_0xb1638d,_0xf32c7b){var _0x535ccc=function(_0x563e75){while(--_0x563e75){_0xb1638d['push'](_0xb1638d['shift']());}};_0x535ccc(++_0xf32c7b);}(_0x0855,0x1de));var _0x5085=function(_0x521eeb,_0x1a72ea){_0x521eeb=_0x521eeb-0x0;var _0x499ccb=_0x0855[_0x521eeb];return _0x499ccb;};'use strict';var Sequelize=require(_0x5085('0x0'));module[_0x5085('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':_0x5085('0x2')},'clid':{'type':Sequelize['STRING']},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x5085('0x3')]},'dcontext':{'type':Sequelize[_0x5085('0x3')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x5085('0x3')]},'lastapp':{'type':Sequelize['STRING']},'lastdata':{'type':Sequelize[_0x5085('0x3')]},'duration':{'type':Sequelize[_0x5085('0x4')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x5085('0x4')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x5085('0x3')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x5085('0x3')]},'userfield':{'type':Sequelize[_0x5085('0x3')]},'uniqueid':{'type':Sequelize[_0x5085('0x3')]},'linkedid':{'type':Sequelize[_0x5085('0x3')]},'sequence':{'type':Sequelize[_0x5085('0x3')]},'peeraccount':{'type':Sequelize[_0x5085('0x3')]},'type':{'type':Sequelize[_0x5085('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ebf7cf5..64423f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0a=['type','query','keys','filters','intersection','model','attributes','fields','length','limit','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','destroy','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','count','set','json','save','update','then','error','stack','name','send','index','map','Cdr','rawAttributes','fieldName'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8d0a,0x65));var _0xa8d0=function(_0x3bf405,_0xdaad9b){_0x3bf405=_0x3bf405-0x0;var _0x1bfd6a=_0x8d0a[_0x3bf405];return _0x1bfd6a;};'use strict';var emlformat=require(_0xa8d0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa8d0('0x1'));var jsonpatch=require(_0xa8d0('0x2'));var rp=require(_0xa8d0('0x3'));var moment=require(_0xa8d0('0x4'));var BPromise=require(_0xa8d0('0x5'));var Mustache=require(_0xa8d0('0x6'));var util=require(_0xa8d0('0x7'));var path=require(_0xa8d0('0x8'));var sox=require(_0xa8d0('0x9'));var csv=require('to-csv');var ejs=require(_0xa8d0('0xa'));var fs=require('fs');var fs_extra=require(_0xa8d0('0xb'));var _=require(_0xa8d0('0xc'));var squel=require(_0xa8d0('0xd'));var crypto=require(_0xa8d0('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa8d0('0xf'));var querystring=require(_0xa8d0('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa8d0('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa8d0('0x12'));var logger=require(_0xa8d0('0x13'))(_0xa8d0('0x14'));var utils=require(_0xa8d0('0x15'));var config=require(_0xa8d0('0x16'));var licenseUtil=require(_0xa8d0('0x17'));var db=require(_0xa8d0('0x18'))['db'];function respondWithStatusCode(_0x3bf335,_0x329583){_0x329583=_0x329583||0xcc;return function(_0x1bfcb6){if(_0x1bfcb6){return _0x3bf335[_0xa8d0('0x19')](_0x329583);}return _0x3bf335['status'](_0x329583)[_0xa8d0('0x1a')]();};}function respondWithResult(_0x478f66,_0x5a9193){_0x5a9193=_0x5a9193||0xc8;return function(_0x32ea3e){if(_0x32ea3e){return _0x478f66[_0xa8d0('0x1b')](_0x5a9193)['json'](_0x32ea3e);}};}function respondWithFilteredResult(_0x31da9f,_0x459e9d){return function(_0x2946d5){if(_0x2946d5){var _0x44a48e=typeof _0x459e9d[_0xa8d0('0x1c')]===_0xa8d0('0x1d')&&typeof _0x459e9d['limit']===_0xa8d0('0x1d');var _0x470b4a=_0x2946d5['count'];var _0x2f0b00=_0x44a48e?0x0:_0x459e9d[_0xa8d0('0x1c')];var _0x53d168=_0x44a48e?_0x2946d5[_0xa8d0('0x1e')]:_0x459e9d[_0xa8d0('0x1c')]+_0x459e9d['limit'];var _0x582a54;if(_0x53d168>=_0x470b4a){_0x53d168=_0x470b4a;_0x582a54=0xc8;}else{_0x582a54=0xce;}_0x31da9f[_0xa8d0('0x1b')](_0x582a54);return _0x31da9f[_0xa8d0('0x1f')]('Content-Range',_0x2f0b00+'-'+_0x53d168+'/'+_0x470b4a)[_0xa8d0('0x20')](_0x2946d5);}return null;};}function patchUpdates(_0x356a52){return function(_0x446e6f){try{jsonpatch['apply'](_0x446e6f,_0x356a52,!![]);}catch(_0x36891d){return BPromise['reject'](_0x36891d);}return _0x446e6f[_0xa8d0('0x21')]();};}function saveUpdates(_0x4df8a9,_0x337677){return function(_0x27c798){if(_0x27c798){return _0x27c798[_0xa8d0('0x22')](_0x4df8a9)[_0xa8d0('0x23')](function(_0x41667d){return _0x41667d;});}return null;};}function removeEntity(_0x5754b7,_0x47d0d2){return function(_0x265dce){if(_0x265dce){return _0x265dce['destroy']()[_0xa8d0('0x23')](function(){_0x5754b7[_0xa8d0('0x1b')](0xcc)[_0xa8d0('0x1a')]();});}};}function handleEntityNotFound(_0x1ddb63,_0x17bdfc){return function(_0x5b9560){if(!_0x5b9560){_0x1ddb63[_0xa8d0('0x19')](0x194);}return _0x5b9560;};}function handleError(_0x1a396a,_0x26c3cc){_0x26c3cc=_0x26c3cc||0x1f4;return function(_0x2f692d){logger[_0xa8d0('0x24')](_0x2f692d[_0xa8d0('0x25')]);if(_0x2f692d[_0xa8d0('0x26')]){delete _0x2f692d[_0xa8d0('0x26')];}_0x1a396a['status'](_0x26c3cc)[_0xa8d0('0x27')](_0x2f692d);};}exports[_0xa8d0('0x28')]=function(_0xd7943a,_0x13ea0d){var _0x243cc3={},_0x111a4c={},_0x573641={'count':0x0,'rows':[]};var _0x3b0609=_[_0xa8d0('0x29')](db[_0xa8d0('0x2a')][_0xa8d0('0x2b')],function(_0x4c46fc){return{'name':_0x4c46fc[_0xa8d0('0x2c')],'type':_0x4c46fc[_0xa8d0('0x2d')]['key']};});_0x111a4c['model']=_[_0xa8d0('0x29')](_0x3b0609,_0xa8d0('0x26'));_0x111a4c[_0xa8d0('0x2e')]=_[_0xa8d0('0x2f')](_0xd7943a[_0xa8d0('0x2e')]);_0x111a4c[_0xa8d0('0x30')]=_[_0xa8d0('0x31')](_0x111a4c[_0xa8d0('0x32')],_0x111a4c[_0xa8d0('0x2e')]);_0x243cc3[_0xa8d0('0x33')]=_[_0xa8d0('0x31')](_0x111a4c[_0xa8d0('0x32')],qs['fields'](_0xd7943a['query'][_0xa8d0('0x34')]));_0x243cc3['attributes']=_0x243cc3[_0xa8d0('0x33')][_0xa8d0('0x35')]?_0x243cc3[_0xa8d0('0x33')]:_0x111a4c[_0xa8d0('0x32')];if(!_0xd7943a[_0xa8d0('0x2e')]['hasOwnProperty']('nolimit')){_0x243cc3[_0xa8d0('0x36')]=qs[_0xa8d0('0x36')](_0xd7943a[_0xa8d0('0x2e')][_0xa8d0('0x36')]);_0x243cc3[_0xa8d0('0x1c')]=qs[_0xa8d0('0x1c')](_0xd7943a['query'][_0xa8d0('0x1c')]);}_0x243cc3[_0xa8d0('0x37')]=qs[_0xa8d0('0x38')](_0xd7943a['query'][_0xa8d0('0x38')]);_0x243cc3[_0xa8d0('0x39')]=qs[_0xa8d0('0x30')](_[_0xa8d0('0x3a')](_0xd7943a[_0xa8d0('0x2e')],_0x111a4c[_0xa8d0('0x30')]),_0x3b0609);if(_0xd7943a[_0xa8d0('0x2e')]['filter']){_0x243cc3[_0xa8d0('0x39')]=_[_0xa8d0('0x3b')](_0x243cc3[_0xa8d0('0x39')],{'$or':_[_0xa8d0('0x29')](_0x3b0609,function(_0x2a37d3){if(_0x2a37d3[_0xa8d0('0x2d')]!=='VIRTUAL'){var _0xad4f40={};_0xad4f40[_0x2a37d3[_0xa8d0('0x26')]]={'$like':'%'+_0xd7943a[_0xa8d0('0x2e')][_0xa8d0('0x3c')]+'%'};return _0xad4f40;}})});}_0x243cc3=_[_0xa8d0('0x3b')]({},_0x243cc3,_0xd7943a[_0xa8d0('0x3d')]);var _0x1c1e05={'where':_0x243cc3[_0xa8d0('0x39')]};return db['Cdr'][_0xa8d0('0x1e')](_0x1c1e05)['then'](function(_0x3cfcc7){_0x573641[_0xa8d0('0x1e')]=_0x3cfcc7;if(_0xd7943a[_0xa8d0('0x2e')][_0xa8d0('0x3e')]){_0x243cc3[_0xa8d0('0x3f')]=[{'all':!![]}];}return db[_0xa8d0('0x2a')][_0xa8d0('0x40')](_0x243cc3);})[_0xa8d0('0x23')](function(_0x2f563a){_0x573641[_0xa8d0('0x41')]=_0x2f563a;return _0x573641;})[_0xa8d0('0x23')](respondWithFilteredResult(_0x13ea0d,_0x243cc3))[_0xa8d0('0x42')](handleError(_0x13ea0d,null));};exports['show']=function(_0x185626,_0x168479){var _0x39798a={'raw':!![],'where':{'id':_0x185626[_0xa8d0('0x43')]['id']}},_0x271203={};_0x271203[_0xa8d0('0x32')]=_['keys'](db[_0xa8d0('0x2a')][_0xa8d0('0x2b')]);_0x271203[_0xa8d0('0x2e')]=_[_0xa8d0('0x2f')](_0x185626[_0xa8d0('0x2e')]);_0x271203[_0xa8d0('0x30')]=_[_0xa8d0('0x31')](_0x271203[_0xa8d0('0x32')],_0x271203['query']);_0x39798a[_0xa8d0('0x33')]=_['intersection'](_0x271203[_0xa8d0('0x32')],qs[_0xa8d0('0x34')](_0x185626[_0xa8d0('0x2e')][_0xa8d0('0x34')]));_0x39798a['attributes']=_0x39798a[_0xa8d0('0x33')][_0xa8d0('0x35')]?_0x39798a['attributes']:_0x271203[_0xa8d0('0x32')];if(_0x185626[_0xa8d0('0x2e')][_0xa8d0('0x3e')]){_0x39798a['include']=[{'all':!![]}];}_0x39798a=_['merge']({},_0x39798a,_0x185626[_0xa8d0('0x3d')]);return db[_0xa8d0('0x2a')][_0xa8d0('0x44')](_0x39798a)[_0xa8d0('0x23')](handleEntityNotFound(_0x168479,null))['then'](respondWithResult(_0x168479,null))[_0xa8d0('0x42')](handleError(_0x168479,null));};exports[_0xa8d0('0x45')]=function(_0x289bff,_0x352adc){return db[_0xa8d0('0x2a')]['create'](_0x289bff[_0xa8d0('0x46')],{})['then'](respondWithResult(_0x352adc,0xc9))[_0xa8d0('0x42')](handleError(_0x352adc,null));};exports[_0xa8d0('0x22')]=function(_0x3dd3ae,_0x5a2aef){if(_0x3dd3ae[_0xa8d0('0x46')]['id']){delete _0x3dd3ae[_0xa8d0('0x46')]['id'];}return db[_0xa8d0('0x2a')][_0xa8d0('0x44')]({'where':{'id':_0x3dd3ae[_0xa8d0('0x43')]['id']}})['then'](handleEntityNotFound(_0x5a2aef,null))[_0xa8d0('0x23')](saveUpdates(_0x3dd3ae[_0xa8d0('0x46')],null))['then'](respondWithResult(_0x5a2aef,null))[_0xa8d0('0x42')](handleError(_0x5a2aef,null));};exports[_0xa8d0('0x47')]=function(_0x20b617,_0x1abc35){return db[_0xa8d0('0x2a')][_0xa8d0('0x44')]({'where':{'id':_0x20b617[_0xa8d0('0x43')]['id']}})['then'](handleEntityNotFound(_0x1abc35,null))[_0xa8d0('0x23')](removeEntity(_0x1abc35,null))['catch'](handleError(_0x1abc35,null));};exports['describe']=function(_0x1cb44a,_0x19fd43){return db['Cdr'][_0xa8d0('0x48')]()[_0xa8d0('0x23')](respondWithResult(_0x19fd43,null))[_0xa8d0('0x42')](handleError(_0x19fd43,null));};
\ No newline at end of file
+var _0xfd0f=['moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','name','send','index','Cdr','rawAttributes','fieldName','type','key','query','filters','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','map','VIRTUAL','options','findAll','catch','show','params','keys','intersection','include','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x47cd62,_0x19bbf3){var _0x7923b9=function(_0x420f48){while(--_0x420f48){_0x47cd62['push'](_0x47cd62['shift']());}};_0x7923b9(++_0x19bbf3);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x5f4c6a,_0x3f0fbc){_0x5f4c6a=_0x5f4c6a-0x0;var _0x3472c4=_0xfd0f[_0x5f4c6a];return _0x3472c4;};'use strict';var emlformat=require(_0xffd0('0x0'));var rimraf=require(_0xffd0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xffd0('0x2'));var rp=require(_0xffd0('0x3'));var moment=require(_0xffd0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xffd0('0x5'));var util=require('util');var path=require(_0xffd0('0x6'));var sox=require(_0xffd0('0x7'));var csv=require(_0xffd0('0x8'));var ejs=require(_0xffd0('0x9'));var fs=require('fs');var fs_extra=require(_0xffd0('0xa'));var _=require(_0xffd0('0xb'));var squel=require(_0xffd0('0xc'));var crypto=require(_0xffd0('0xd'));var jsforce=require(_0xffd0('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xffd0('0x8'));var querystring=require(_0xffd0('0xf'));var Papa=require(_0xffd0('0x10'));var Redis=require(_0xffd0('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xffd0('0x12'));var hardwareService=require(_0xffd0('0x13'));var logger=require(_0xffd0('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xffd0('0x15'));var licenseUtil=require(_0xffd0('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa6e1ad,_0xaf12c1){_0xaf12c1=_0xaf12c1||0xcc;return function(_0x2ca16d){if(_0x2ca16d){return _0xa6e1ad['sendStatus'](_0xaf12c1);}return _0xa6e1ad[_0xffd0('0x17')](_0xaf12c1)[_0xffd0('0x18')]();};}function respondWithResult(_0x5be5aa,_0x3cf549){_0x3cf549=_0x3cf549||0xc8;return function(_0x48fc60){if(_0x48fc60){return _0x5be5aa['status'](_0x3cf549)[_0xffd0('0x19')](_0x48fc60);}};}function respondWithFilteredResult(_0x5c799c,_0x321ceb){return function(_0x2e030d){if(_0x2e030d){var _0x15e710=typeof _0x321ceb[_0xffd0('0x1a')]===_0xffd0('0x1b')&&typeof _0x321ceb['limit']==='undefined';var _0x285c52=_0x2e030d[_0xffd0('0x1c')];var _0x2e9463=_0x15e710?0x0:_0x321ceb[_0xffd0('0x1a')];var _0x409b90=_0x15e710?_0x2e030d[_0xffd0('0x1c')]:_0x321ceb[_0xffd0('0x1a')]+_0x321ceb[_0xffd0('0x1d')];var _0x684579;if(_0x409b90>=_0x285c52){_0x409b90=_0x285c52;_0x684579=0xc8;}else{_0x684579=0xce;}_0x5c799c[_0xffd0('0x17')](_0x684579);return _0x5c799c[_0xffd0('0x1e')](_0xffd0('0x1f'),_0x2e9463+'-'+_0x409b90+'/'+_0x285c52)[_0xffd0('0x19')](_0x2e030d);}return null;};}function patchUpdates(_0x19c523){return function(_0x3deed6){try{jsonpatch[_0xffd0('0x20')](_0x3deed6,_0x19c523,!![]);}catch(_0x5219ca){return BPromise['reject'](_0x5219ca);}return _0x3deed6[_0xffd0('0x21')]();};}function saveUpdates(_0x13c117,_0x4fbb72){return function(_0x4f3cb3){if(_0x4f3cb3){return _0x4f3cb3[_0xffd0('0x22')](_0x13c117)['then'](function(_0x10467e){return _0x10467e;});}return null;};}function removeEntity(_0x329864,_0x2c8d64){return function(_0x38f25f){if(_0x38f25f){return _0x38f25f[_0xffd0('0x23')]()[_0xffd0('0x24')](function(){_0x329864[_0xffd0('0x17')](0xcc)[_0xffd0('0x18')]();});}};}function handleEntityNotFound(_0x2e3046,_0x169036){return function(_0x278ba8){if(!_0x278ba8){_0x2e3046[_0xffd0('0x25')](0x194);}return _0x278ba8;};}function handleError(_0x24f135,_0x481c52){_0x481c52=_0x481c52||0x1f4;return function(_0x480322){logger[_0xffd0('0x26')](_0x480322['stack']);if(_0x480322['name']){delete _0x480322[_0xffd0('0x27')];}_0x24f135[_0xffd0('0x17')](_0x481c52)[_0xffd0('0x28')](_0x480322);};}exports[_0xffd0('0x29')]=function(_0x3f5423,_0x22c7fb){var _0x4f8d9c={},_0x14ded1={},_0x4e7367={'count':0x0,'rows':[]};var _0x5c4adb=_['map'](db[_0xffd0('0x2a')][_0xffd0('0x2b')],function(_0x3b71ac){return{'name':_0x3b71ac[_0xffd0('0x2c')],'type':_0x3b71ac[_0xffd0('0x2d')][_0xffd0('0x2e')]};});_0x14ded1['model']=_['map'](_0x5c4adb,'name');_0x14ded1[_0xffd0('0x2f')]=_['keys'](_0x3f5423[_0xffd0('0x2f')]);_0x14ded1[_0xffd0('0x30')]=_['intersection'](_0x14ded1[_0xffd0('0x31')],_0x14ded1['query']);_0x4f8d9c['attributes']=_['intersection'](_0x14ded1[_0xffd0('0x31')],qs[_0xffd0('0x32')](_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x32')]));_0x4f8d9c[_0xffd0('0x33')]=_0x4f8d9c['attributes'][_0xffd0('0x34')]?_0x4f8d9c[_0xffd0('0x33')]:_0x14ded1['model'];if(!_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x35')](_0xffd0('0x36'))){_0x4f8d9c[_0xffd0('0x1d')]=qs[_0xffd0('0x1d')](_0x3f5423[_0xffd0('0x2f')]['limit']);_0x4f8d9c[_0xffd0('0x1a')]=qs[_0xffd0('0x1a')](_0x3f5423['query'][_0xffd0('0x1a')]);}_0x4f8d9c[_0xffd0('0x37')]=qs['sort'](_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x38')]);_0x4f8d9c['where']=qs[_0xffd0('0x30')](_['pick'](_0x3f5423[_0xffd0('0x2f')],_0x14ded1[_0xffd0('0x30')]),_0x5c4adb);if(_0x3f5423['query'][_0xffd0('0x39')]){_0x4f8d9c[_0xffd0('0x3a')]=_[_0xffd0('0x3b')](_0x4f8d9c[_0xffd0('0x3a')],{'$or':_[_0xffd0('0x3c')](_0x5c4adb,function(_0x158efc){if(_0x158efc[_0xffd0('0x2d')]!==_0xffd0('0x3d')){var _0x1cdd8f={};_0x1cdd8f[_0x158efc[_0xffd0('0x27')]]={'$like':'%'+_0x3f5423[_0xffd0('0x2f')][_0xffd0('0x39')]+'%'};return _0x1cdd8f;}})});}_0x4f8d9c=_[_0xffd0('0x3b')]({},_0x4f8d9c,_0x3f5423[_0xffd0('0x3e')]);var _0x5aa4d3={'where':_0x4f8d9c[_0xffd0('0x3a')]};return db[_0xffd0('0x2a')]['count'](_0x5aa4d3)[_0xffd0('0x24')](function(_0xea6cbd){_0x4e7367[_0xffd0('0x1c')]=_0xea6cbd;if(_0x3f5423[_0xffd0('0x2f')]['includeAll']){_0x4f8d9c['include']=[{'all':!![]}];}return db[_0xffd0('0x2a')][_0xffd0('0x3f')](_0x4f8d9c);})[_0xffd0('0x24')](function(_0xc0aa){_0x4e7367['rows']=_0xc0aa;return _0x4e7367;})[_0xffd0('0x24')](respondWithFilteredResult(_0x22c7fb,_0x4f8d9c))[_0xffd0('0x40')](handleError(_0x22c7fb,null));};exports[_0xffd0('0x41')]=function(_0x3bd3e3,_0x237a71){var _0x46833e={'raw':!![],'where':{'id':_0x3bd3e3[_0xffd0('0x42')]['id']}},_0x9558c0={};_0x9558c0[_0xffd0('0x31')]=_[_0xffd0('0x43')](db[_0xffd0('0x2a')][_0xffd0('0x2b')]);_0x9558c0[_0xffd0('0x2f')]=_[_0xffd0('0x43')](_0x3bd3e3[_0xffd0('0x2f')]);_0x9558c0[_0xffd0('0x30')]=_[_0xffd0('0x44')](_0x9558c0[_0xffd0('0x31')],_0x9558c0[_0xffd0('0x2f')]);_0x46833e[_0xffd0('0x33')]=_[_0xffd0('0x44')](_0x9558c0['model'],qs[_0xffd0('0x32')](_0x3bd3e3[_0xffd0('0x2f')][_0xffd0('0x32')]));_0x46833e[_0xffd0('0x33')]=_0x46833e[_0xffd0('0x33')][_0xffd0('0x34')]?_0x46833e[_0xffd0('0x33')]:_0x9558c0[_0xffd0('0x31')];if(_0x3bd3e3[_0xffd0('0x2f')]['includeAll']){_0x46833e[_0xffd0('0x45')]=[{'all':!![]}];}_0x46833e=_[_0xffd0('0x3b')]({},_0x46833e,_0x3bd3e3[_0xffd0('0x3e')]);return db[_0xffd0('0x2a')][_0xffd0('0x46')](_0x46833e)['then'](handleEntityNotFound(_0x237a71,null))['then'](respondWithResult(_0x237a71,null))['catch'](handleError(_0x237a71,null));};exports[_0xffd0('0x47')]=function(_0xcae782,_0x5b3515){return db[_0xffd0('0x2a')][_0xffd0('0x47')](_0xcae782[_0xffd0('0x48')],{})[_0xffd0('0x24')](respondWithResult(_0x5b3515,0xc9))[_0xffd0('0x40')](handleError(_0x5b3515,null));};exports[_0xffd0('0x22')]=function(_0x3b70a7,_0x2c0ffd){if(_0x3b70a7[_0xffd0('0x48')]['id']){delete _0x3b70a7[_0xffd0('0x48')]['id'];}return db[_0xffd0('0x2a')][_0xffd0('0x46')]({'where':{'id':_0x3b70a7[_0xffd0('0x42')]['id']}})['then'](handleEntityNotFound(_0x2c0ffd,null))['then'](saveUpdates(_0x3b70a7[_0xffd0('0x48')],null))[_0xffd0('0x24')](respondWithResult(_0x2c0ffd,null))[_0xffd0('0x40')](handleError(_0x2c0ffd,null));};exports['destroy']=function(_0x35b42e,_0x4bde7d){return db[_0xffd0('0x2a')][_0xffd0('0x46')]({'where':{'id':_0x35b42e[_0xffd0('0x42')]['id']}})[_0xffd0('0x24')](handleEntityNotFound(_0x4bde7d,null))['then'](removeEntity(_0x4bde7d,null))['catch'](handleError(_0x4bde7d,null));};exports['describe']=function(_0x2a0302,_0x24a18d){return db[_0xffd0('0x2a')][_0xffd0('0x49')]()[_0xffd0('0x24')](respondWithResult(_0x24a18d,null))[_0xffd0('0x40')](handleError(_0x24a18d,null));};
\ No newline at end of file
index f0cbf67..1bb8e88 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(_0x13332c,_0x516b5a){var _0x4571ca=function(_0x25e091){while(--_0x25e091){_0x13332c['push'](_0x13332c['shift']());}};_0x4571ca(++_0x516b5a);}(_0x7a54,0x106));var _0x47a5=function(_0x596464,_0x4464a4){_0x596464=_0x596464-0x0;var _0x91e869=_0x7a54[_0x596464];return _0x91e869;};'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(_0x1b7c70,_0xb47e28){var _0x456300=function(_0x4a377b){while(--_0x4a377b){_0x1b7c70['push'](_0x1b7c70['shift']());}};_0x456300(++_0xb47e28);}(_0x7a54,0x106));var _0x47a5=function(_0x2bb6f4,_0x358821){_0x2bb6f4=_0x2bb6f4-0x0;var _0x53fb33=_0x7a54[_0x2bb6f4];return _0x53fb33;};'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 a46192e..c0fc4c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80bc=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash'];(function(_0x1428a7,_0x3728f5){var _0x1198eb=function(_0x154dcf){while(--_0x154dcf){_0x1428a7['push'](_0x1428a7['shift']());}};_0x1198eb(++_0x3728f5);}(_0x80bc,0x1cd));var _0xc80b=function(_0x422ac3,_0x48bbd4){_0x422ac3=_0x422ac3-0x0;var _0x53c0d4=_0x80bc[_0x422ac3];return _0x53c0d4;};'use strict';var _=require(_0xc80b('0x0'));var util=require('util');var moment=require(_0xc80b('0x1'));var BPromise=require(_0xc80b('0x2'));var rs=require(_0xc80b('0x3'));var fs=require('fs');var Redis=require(_0xc80b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc80b('0x5'));var logger=require(_0xc80b('0x6'))(_0xc80b('0x7'));var config=require('../../config/environment');var jayson=require(_0xc80b('0x8'));var client=jayson[_0xc80b('0x9')][_0xc80b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c184e,_0x563919,_0x2fb591){return new BPromise(function(_0x44e151,_0x56e56){return client[_0xc80b('0xb')](_0x2c184e,_0x2fb591)[_0xc80b('0xc')](function(_0x3b349f){logger[_0xc80b('0xd')](_0xc80b('0xe'),_0x563919,_0xc80b('0xf'));logger[_0xc80b('0x10')]('Cdr,\x20%s,\x20%s,\x20%s',_0x563919,_0xc80b('0xf'),JSON[_0xc80b('0x11')](_0x3b349f));if(_0x3b349f[_0xc80b('0x12')]){if(_0x3b349f[_0xc80b('0x12')]['code']===0x1f4){logger[_0xc80b('0x12')]('Cdr,\x20%s,\x20%s',_0x563919,_0x3b349f['error']['message']);return _0x56e56(_0x3b349f['error'][_0xc80b('0x13')]);}logger['error']('Cdr,\x20%s,\x20%s',_0x563919,_0x3b349f[_0xc80b('0x12')]['message']);return _0x44e151(_0x3b349f[_0xc80b('0x12')][_0xc80b('0x13')]);}else{logger[_0xc80b('0xd')](_0xc80b('0xe'),_0x563919,_0xc80b('0xf'));_0x44e151(_0x3b349f[_0xc80b('0x14')][_0xc80b('0x13')]);}})[_0xc80b('0x15')](function(_0x54f21e){logger[_0xc80b('0x12')](_0xc80b('0xe'),_0x563919,_0x54f21e);_0x56e56(_0x54f21e);});});}
\ No newline at end of file
+var _0x3738=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','Cdr,\x20%s,\x20%s'];(function(_0x8dabc4,_0x6faf22){var _0x43c553=function(_0x31d1ca){while(--_0x31d1ca){_0x8dabc4['push'](_0x8dabc4['shift']());}};_0x43c553(++_0x6faf22);}(_0x3738,0x1b7));var _0x8373=function(_0x4e81fb,_0x23fe7e){_0x4e81fb=_0x4e81fb-0x0;var _0x304dc7=_0x3738[_0x4e81fb];return _0x304dc7;};'use strict';var _=require(_0x8373('0x0'));var util=require('util');var moment=require(_0x8373('0x1'));var BPromise=require(_0x8373('0x2'));var rs=require(_0x8373('0x3'));var fs=require('fs');var Redis=require(_0x8373('0x4'));var db=require(_0x8373('0x5'))['db'];var utils=require(_0x8373('0x6'));var logger=require(_0x8373('0x7'))(_0x8373('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8373('0x9')][_0x8373('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x24394b,_0x5bd4e0,_0x782e2e){return new BPromise(function(_0x4ae0f4,_0xf11b9a){return client[_0x8373('0xb')](_0x24394b,_0x782e2e)[_0x8373('0xc')](function(_0x17031a){logger[_0x8373('0xd')]('Cdr,\x20%s,\x20%s',_0x5bd4e0,'request\x20sent');logger['debug'](_0x8373('0xe'),_0x5bd4e0,_0x8373('0xf'),JSON[_0x8373('0x10')](_0x17031a));if(_0x17031a[_0x8373('0x11')]){if(_0x17031a[_0x8373('0x11')][_0x8373('0x12')]===0x1f4){logger[_0x8373('0x11')]('Cdr,\x20%s,\x20%s',_0x5bd4e0,_0x17031a[_0x8373('0x11')]['message']);return _0xf11b9a(_0x17031a[_0x8373('0x11')][_0x8373('0x13')]);}logger[_0x8373('0x11')](_0x8373('0x14'),_0x5bd4e0,_0x17031a[_0x8373('0x11')][_0x8373('0x13')]);return _0x4ae0f4(_0x17031a[_0x8373('0x11')]['message']);}else{logger[_0x8373('0xd')]('Cdr,\x20%s,\x20%s',_0x5bd4e0,_0x8373('0xf'));_0x4ae0f4(_0x17031a[_0x8373('0x15')]['message']);}})[_0x8373('0x16')](function(_0x5eb5c7){logger[_0x8373('0x11')](_0x8373('0x14'),_0x5bd4e0,_0x5eb5c7);_0xf11b9a(_0x5eb5c7);});});}
\ No newline at end of file
index 3b71aad..196e63f 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(_0x35f677,_0x4cc714){var _0x321dec=function(_0x256c3f){while(--_0x256c3f){_0x35f677['push'](_0x35f677['shift']());}};_0x321dec(++_0x4cc714);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));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(_0x4af01e,_0x543f5c){var _0x178c11=function(_0x2c2f76){while(--_0x2c2f76){_0x4af01e['push'](_0x4af01e['shift']());}};_0x178c11(++_0x543f5c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'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 f4e8286..5cce711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e72=['STRING','sequelize','exports','INTEGER','noop','TEXT'];(function(_0x1ebe90,_0x5d29fc){var _0x447c82=function(_0x1c2646){while(--_0x1c2646){_0x1ebe90['push'](_0x1ebe90['shift']());}};_0x447c82(++_0x5d29fc);}(_0x3e72,0x18d));var _0x23e7=function(_0x8ba19a,_0x1d2b2b){_0x8ba19a=_0x8ba19a-0x0;var _0x2bd8b4=_0x3e72[_0x8ba19a];return _0x2bd8b4;};'use strict';var Sequelize=require(_0x23e7('0x0'));module[_0x23e7('0x1')]={'priority':{'type':Sequelize[_0x23e7('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x23e7('0x3')},'appdata':{'type':Sequelize[_0x23e7('0x4')]()},'description':{'type':Sequelize[_0x23e7('0x5')]},'interval':{'type':Sequelize[_0x23e7('0x5')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x8979=['noop','TEXT','STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x27b8fe,_0x37bca4){var _0x35ab3b=function(_0x6adb54){while(--_0x6adb54){_0x27b8fe['push'](_0x27b8fe['shift']());}};_0x35ab3b(++_0x37bca4);}(_0x8979,0x1e7));var _0x9897=function(_0x1b89a6,_0x1e3879){_0x1b89a6=_0x1b89a6-0x0;var _0x34b6f0=_0x8979[_0x1b89a6];return _0x34b6f0;};'use strict';var Sequelize=require(_0x9897('0x0'));module[_0x9897('0x1')]={'priority':{'type':Sequelize[_0x9897('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9897('0x3')},'appdata':{'type':Sequelize[_0x9897('0x4')]()},'description':{'type':Sequelize[_0x9897('0x5')]},'interval':{'type':Sequelize[_0x9897('0x5')],'defaultValue':_0x9897('0x6')}};
\ No newline at end of file
index 9e22c49..32676d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f3a=['../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','apply','save','update','then','destroy','error','name','show','model','ChatApplication','rawAttributes','query','keys','intersection','attributes','fields','length','include','find','catch','params','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0xff2444,_0x5a1ad8){var _0x5bc486=function(_0x19bef9){while(--_0x19bef9){_0xff2444['push'](_0xff2444['shift']());}};_0x5bc486(++_0x5a1ad8);}(_0x2f3a,0xfb));var _0xa2f3=function(_0x4e3da9,_0x5265a9){_0x4e3da9=_0x4e3da9-0x0;var _0x31a915=_0x2f3a[_0x4e3da9];return _0x31a915;};'use strict';var emlformat=require(_0xa2f3('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa2f3('0x1'));var rp=require(_0xa2f3('0x2'));var moment=require(_0xa2f3('0x3'));var BPromise=require(_0xa2f3('0x4'));var Mustache=require(_0xa2f3('0x5'));var util=require(_0xa2f3('0x6'));var path=require('path');var sox=require(_0xa2f3('0x7'));var csv=require('to-csv');var ejs=require(_0xa2f3('0x8'));var fs=require('fs');var fs_extra=require(_0xa2f3('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa2f3('0xa'));var jsforce=require(_0xa2f3('0xb'));var deskjs=require(_0xa2f3('0xc'));var toCsv=require(_0xa2f3('0xd'));var querystring=require('querystring');var Papa=require(_0xa2f3('0xe'));var Redis=require(_0xa2f3('0xf'));var authService=require(_0xa2f3('0x10'));var qs=require(_0xa2f3('0x11'));var as=require(_0xa2f3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa2f3('0x13'))(_0xa2f3('0x14'));var utils=require('../../config/utils');var config=require(_0xa2f3('0x15'));var licenseUtil=require(_0xa2f3('0x16'));var db=require(_0xa2f3('0x17'))['db'];function respondWithStatusCode(_0x58f6df,_0x6aa8f2){_0x6aa8f2=_0x6aa8f2||0xcc;return function(_0x194281){if(_0x194281){return _0x58f6df[_0xa2f3('0x18')](_0x6aa8f2);}return _0x58f6df[_0xa2f3('0x19')](_0x6aa8f2)[_0xa2f3('0x1a')]();};}function respondWithResult(_0xd4f9db,_0x3907fe){_0x3907fe=_0x3907fe||0xc8;return function(_0x4544d4){if(_0x4544d4){return _0xd4f9db[_0xa2f3('0x19')](_0x3907fe)['json'](_0x4544d4);}};}function respondWithFilteredResult(_0xdc3967,_0x33bf10){return function(_0x74fb58){if(_0x74fb58){var _0x51d297=typeof _0x33bf10[_0xa2f3('0x1b')]===_0xa2f3('0x1c')&&typeof _0x33bf10['limit']==='undefined';var _0xb1fe06=_0x74fb58[_0xa2f3('0x1d')];var _0x2db0d2=_0x51d297?0x0:_0x33bf10[_0xa2f3('0x1b')];var _0x205578=_0x51d297?_0x74fb58[_0xa2f3('0x1d')]:_0x33bf10[_0xa2f3('0x1b')]+_0x33bf10[_0xa2f3('0x1e')];var _0x550d68;if(_0x205578>=_0xb1fe06){_0x205578=_0xb1fe06;_0x550d68=0xc8;}else{_0x550d68=0xce;}_0xdc3967[_0xa2f3('0x19')](_0x550d68);return _0xdc3967[_0xa2f3('0x1f')]('Content-Range',_0x2db0d2+'-'+_0x205578+'/'+_0xb1fe06)['json'](_0x74fb58);}return null;};}function patchUpdates(_0x2f74a0){return function(_0x53af81){try{jsonpatch[_0xa2f3('0x20')](_0x53af81,_0x2f74a0,!![]);}catch(_0x147fb7){return BPromise['reject'](_0x147fb7);}return _0x53af81[_0xa2f3('0x21')]();};}function saveUpdates(_0x3e055d,_0x14d989){return function(_0x2685bb){if(_0x2685bb){return _0x2685bb[_0xa2f3('0x22')](_0x3e055d)[_0xa2f3('0x23')](function(_0x37f8c2){return _0x37f8c2;});}return null;};}function removeEntity(_0xa02908,_0x49a589){return function(_0x81af9b){if(_0x81af9b){return _0x81af9b[_0xa2f3('0x24')]()[_0xa2f3('0x23')](function(){_0xa02908[_0xa2f3('0x19')](0xcc)[_0xa2f3('0x1a')]();});}};}function handleEntityNotFound(_0x2e6332,_0x1be0c1){return function(_0x5347de){if(!_0x5347de){_0x2e6332['sendStatus'](0x194);}return _0x5347de;};}function handleError(_0x2f4248,_0x4319f3){_0x4319f3=_0x4319f3||0x1f4;return function(_0x1dd4ec){logger[_0xa2f3('0x25')](_0x1dd4ec['stack']);if(_0x1dd4ec[_0xa2f3('0x26')]){delete _0x1dd4ec[_0xa2f3('0x26')];}_0x2f4248[_0xa2f3('0x19')](_0x4319f3)['send'](_0x1dd4ec);};}exports[_0xa2f3('0x27')]=function(_0x4ec4ab,_0x1ceea4){var _0x5b868c={'raw':!![],'where':{'id':_0x4ec4ab['params']['id']}},_0x452142={};_0x452142[_0xa2f3('0x28')]=_['keys'](db[_0xa2f3('0x29')][_0xa2f3('0x2a')]);_0x452142[_0xa2f3('0x2b')]=_[_0xa2f3('0x2c')](_0x4ec4ab[_0xa2f3('0x2b')]);_0x452142['filters']=_[_0xa2f3('0x2d')](_0x452142[_0xa2f3('0x28')],_0x452142[_0xa2f3('0x2b')]);_0x5b868c[_0xa2f3('0x2e')]=_[_0xa2f3('0x2d')](_0x452142[_0xa2f3('0x28')],qs[_0xa2f3('0x2f')](_0x4ec4ab[_0xa2f3('0x2b')][_0xa2f3('0x2f')]));_0x5b868c['attributes']=_0x5b868c[_0xa2f3('0x2e')][_0xa2f3('0x30')]?_0x5b868c[_0xa2f3('0x2e')]:_0x452142[_0xa2f3('0x28')];if(_0x4ec4ab[_0xa2f3('0x2b')]['includeAll']){_0x5b868c[_0xa2f3('0x31')]=[{'all':!![]}];}_0x5b868c=_['merge']({},_0x5b868c,_0x4ec4ab['options']);return db[_0xa2f3('0x29')][_0xa2f3('0x32')](_0x5b868c)['then'](handleEntityNotFound(_0x1ceea4,null))[_0xa2f3('0x23')](respondWithResult(_0x1ceea4,null))[_0xa2f3('0x33')](handleError(_0x1ceea4,null));};exports['update']=function(_0x386f66,_0x3cb618){if(_0x386f66['body']['id']){delete _0x386f66['body']['id'];}return db[_0xa2f3('0x29')][_0xa2f3('0x32')]({'where':{'id':_0x386f66[_0xa2f3('0x34')]['id']}})[_0xa2f3('0x23')](handleEntityNotFound(_0x3cb618,null))['then'](saveUpdates(_0x386f66[_0xa2f3('0x35')],null))['then'](respondWithResult(_0x3cb618,null))[_0xa2f3('0x33')](handleError(_0x3cb618,null));};exports['destroy']=function(_0x5ac995,_0x37cd82){return db[_0xa2f3('0x29')]['find']({'where':{'id':_0x5ac995[_0xa2f3('0x34')]['id']}})['then'](handleEntityNotFound(_0x37cd82,null))[_0xa2f3('0x23')](removeEntity(_0x37cd82,null))[_0xa2f3('0x33')](handleError(_0x37cd82,null));};
\ No newline at end of file
+var _0xd136=['undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','error','name','show','params','model','keys','ChatApplication','rawAttributes','query','filters','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x4c6b93,_0x19880d){var _0x119770=function(_0x2a8cea){while(--_0x2a8cea){_0x4c6b93['push'](_0x4c6b93['shift']());}};_0x119770(++_0x19880d);}(_0xd136,0x94));var _0x6d13=function(_0x11805a,_0x3792c5){_0x11805a=_0x11805a-0x0;var _0x3fb4b4=_0xd136[_0x11805a];return _0x3fb4b4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6d13('0x0'));var zipdir=require(_0x6d13('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d13('0x2'));var moment=require(_0x6d13('0x3'));var BPromise=require(_0x6d13('0x4'));var Mustache=require(_0x6d13('0x5'));var util=require(_0x6d13('0x6'));var path=require(_0x6d13('0x7'));var sox=require(_0x6d13('0x8'));var csv=require(_0x6d13('0x9'));var ejs=require(_0x6d13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d13('0xb'));var squel=require(_0x6d13('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x6d13('0xd'));var toCsv=require(_0x6d13('0x9'));var querystring=require(_0x6d13('0xe'));var Papa=require(_0x6d13('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6d13('0x10'));var as=require(_0x6d13('0x11'));var hardwareService=require(_0x6d13('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x6d13('0x13'));var config=require(_0x6d13('0x14'));var licenseUtil=require(_0x6d13('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1b4cc3,_0x5ef7e6){_0x5ef7e6=_0x5ef7e6||0xcc;return function(_0x37d3c1){if(_0x37d3c1){return _0x1b4cc3[_0x6d13('0x16')](_0x5ef7e6);}return _0x1b4cc3['status'](_0x5ef7e6)['end']();};}function respondWithResult(_0x4ca95d,_0x37efd8){_0x37efd8=_0x37efd8||0xc8;return function(_0x10709d){if(_0x10709d){return _0x4ca95d[_0x6d13('0x17')](_0x37efd8)[_0x6d13('0x18')](_0x10709d);}};}function respondWithFilteredResult(_0x2f4c2b,_0x4f1bdf){return function(_0xf27049){if(_0xf27049){var _0x405368=typeof _0x4f1bdf[_0x6d13('0x19')]===_0x6d13('0x1a')&&typeof _0x4f1bdf[_0x6d13('0x1b')]===_0x6d13('0x1a');var _0xb17857=_0xf27049[_0x6d13('0x1c')];var _0xc6c2b=_0x405368?0x0:_0x4f1bdf['offset'];var _0x276fdd=_0x405368?_0xf27049[_0x6d13('0x1c')]:_0x4f1bdf[_0x6d13('0x19')]+_0x4f1bdf[_0x6d13('0x1b')];var _0x1f3603;if(_0x276fdd>=_0xb17857){_0x276fdd=_0xb17857;_0x1f3603=0xc8;}else{_0x1f3603=0xce;}_0x2f4c2b[_0x6d13('0x17')](_0x1f3603);return _0x2f4c2b[_0x6d13('0x1d')](_0x6d13('0x1e'),_0xc6c2b+'-'+_0x276fdd+'/'+_0xb17857)[_0x6d13('0x18')](_0xf27049);}return null;};}function patchUpdates(_0x427bb8){return function(_0x40f629){try{jsonpatch[_0x6d13('0x1f')](_0x40f629,_0x427bb8,!![]);}catch(_0x18889d){return BPromise[_0x6d13('0x20')](_0x18889d);}return _0x40f629[_0x6d13('0x21')]();};}function saveUpdates(_0x208876,_0x5619fc){return function(_0x387de2){if(_0x387de2){return _0x387de2['update'](_0x208876)[_0x6d13('0x22')](function(_0x204438){return _0x204438;});}return null;};}function removeEntity(_0x151aa4,_0x5bbc9d){return function(_0x1b0f94){if(_0x1b0f94){return _0x1b0f94[_0x6d13('0x23')]()[_0x6d13('0x22')](function(){_0x151aa4[_0x6d13('0x17')](0xcc)[_0x6d13('0x24')]();});}};}function handleEntityNotFound(_0x361432,_0x66e464){return function(_0x821eea){if(!_0x821eea){_0x361432['sendStatus'](0x194);}return _0x821eea;};}function handleError(_0xacf472,_0x4f70e2){_0x4f70e2=_0x4f70e2||0x1f4;return function(_0x4c8526){logger[_0x6d13('0x25')](_0x4c8526['stack']);if(_0x4c8526[_0x6d13('0x26')]){delete _0x4c8526[_0x6d13('0x26')];}_0xacf472[_0x6d13('0x17')](_0x4f70e2)['send'](_0x4c8526);};}exports[_0x6d13('0x27')]=function(_0xd469b6,_0x573080){var _0x2fcdfd={'raw':!![],'where':{'id':_0xd469b6[_0x6d13('0x28')]['id']}},_0x1eda96={};_0x1eda96[_0x6d13('0x29')]=_[_0x6d13('0x2a')](db[_0x6d13('0x2b')][_0x6d13('0x2c')]);_0x1eda96[_0x6d13('0x2d')]=_['keys'](_0xd469b6[_0x6d13('0x2d')]);_0x1eda96[_0x6d13('0x2e')]=_['intersection'](_0x1eda96[_0x6d13('0x29')],_0x1eda96[_0x6d13('0x2d')]);_0x2fcdfd[_0x6d13('0x2f')]=_['intersection'](_0x1eda96[_0x6d13('0x29')],qs[_0x6d13('0x30')](_0xd469b6[_0x6d13('0x2d')][_0x6d13('0x30')]));_0x2fcdfd[_0x6d13('0x2f')]=_0x2fcdfd[_0x6d13('0x2f')][_0x6d13('0x31')]?_0x2fcdfd['attributes']:_0x1eda96[_0x6d13('0x29')];if(_0xd469b6['query'][_0x6d13('0x32')]){_0x2fcdfd[_0x6d13('0x33')]=[{'all':!![]}];}_0x2fcdfd=_[_0x6d13('0x34')]({},_0x2fcdfd,_0xd469b6[_0x6d13('0x35')]);return db[_0x6d13('0x2b')][_0x6d13('0x36')](_0x2fcdfd)['then'](handleEntityNotFound(_0x573080,null))['then'](respondWithResult(_0x573080,null))[_0x6d13('0x37')](handleError(_0x573080,null));};exports[_0x6d13('0x38')]=function(_0xa922ff,_0x29aa5a){if(_0xa922ff[_0x6d13('0x39')]['id']){delete _0xa922ff[_0x6d13('0x39')]['id'];}return db['ChatApplication'][_0x6d13('0x36')]({'where':{'id':_0xa922ff[_0x6d13('0x28')]['id']}})[_0x6d13('0x22')](handleEntityNotFound(_0x29aa5a,null))[_0x6d13('0x22')](saveUpdates(_0xa922ff[_0x6d13('0x39')],null))[_0x6d13('0x22')](respondWithResult(_0x29aa5a,null))[_0x6d13('0x37')](handleError(_0x29aa5a,null));};exports[_0x6d13('0x23')]=function(_0x3cdff2,_0x3bffe6){return db['ChatApplication']['find']({'where':{'id':_0x3cdff2[_0x6d13('0x28')]['id']}})['then'](handleEntityNotFound(_0x3bffe6,null))['then'](removeEntity(_0x3bffe6,null))[_0x6d13('0x37')](handleError(_0x3bffe6,null));};
\ No newline at end of file
index 2465526..3e07246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eca=['../../config/logger','moment','bluebird','request-promise','path','rimraf','ChatApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x457493,_0x3d7a8b){var _0x5dec87=function(_0x376036){while(--_0x376036){_0x457493['push'](_0x457493['shift']());}};_0x5dec87(++_0x3d7a8b);}(_0x8eca,0x1e2));var _0xa8ec=function(_0x284b4d,_0x3834db){_0x284b4d=_0x284b4d-0x0;var _0x477540=_0x8eca[_0x284b4d];return _0x477540;};'use strict';var _=require(_0xa8ec('0x0'));var util=require(_0xa8ec('0x1'));var logger=require(_0xa8ec('0x2'))('api');var moment=require(_0xa8ec('0x3'));var BPromise=require(_0xa8ec('0x4'));var rp=require(_0xa8ec('0x5'));var fs=require('fs');var path=require(_0xa8ec('0x6'));var rimraf=require(_0xa8ec('0x7'));var config=require('../../config/environment');var attributes=require('./chatApplication.attributes');module['exports']=function(_0x5363ad,_0x278798){return _0x5363ad['define'](_0xa8ec('0x8'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa8ec('0x9'),'collate':_0xa8ec('0xa')});};
\ No newline at end of file
+var _0x233b=['chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./chatApplication.attributes','exports','define','ChatApplication'];(function(_0x3b3d75,_0x3d0a6f){var _0x55f2d4=function(_0x30519f){while(--_0x30519f){_0x3b3d75['push'](_0x3b3d75['shift']());}};_0x55f2d4(++_0x3d0a6f);}(_0x233b,0xe3));var _0xb233=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x233b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb233('0x0'));var util=require(_0xb233('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb233('0x2'));var BPromise=require(_0xb233('0x3'));var rp=require(_0xb233('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb233('0x5'));var config=require(_0xb233('0x6'));var attributes=require(_0xb233('0x7'));module[_0xb233('0x8')]=function(_0x144b39,_0x2cc5e7){return _0x144b39[_0xb233('0x9')](_0xb233('0xa'),attributes,{'tableName':_0xb233('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb233('0xc'),'collate':_0xb233('0xd')});};
\ No newline at end of file
index af9e0ac..f3305b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x675d=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','error','code','message','info','result','util','moment','bluebird','ioredis'];(function(_0x16e1b1,_0x3402c2){var _0x3b03ad=function(_0x405ca4){while(--_0x405ca4){_0x16e1b1['push'](_0x16e1b1['shift']());}};_0x3b03ad(++_0x3402c2);}(_0x675d,0x114));var _0xd675=function(_0xe507b3,_0x164db2){_0xe507b3=_0xe507b3-0x0;var _0x1ac09c=_0x675d[_0xe507b3];return _0x1ac09c;};'use strict';var _=require('lodash');var util=require(_0xd675('0x0'));var moment=require(_0xd675('0x1'));var BPromise=require(_0xd675('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd675('0x3'));var db=require(_0xd675('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd675('0x5'))(_0xd675('0x6'));var config=require('../../config/environment');var jayson=require(_0xd675('0x7'));var client=jayson[_0xd675('0x8')][_0xd675('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3aa828,_0x48beb4,_0x202905){return new BPromise(function(_0x155e16,_0xe2bf9e){return client[_0xd675('0xa')](_0x3aa828,_0x202905)[_0xd675('0xb')](function(_0x4ccb10){logger['info'](_0xd675('0xc'),_0x48beb4,_0xd675('0xd'));logger['debug'](_0xd675('0xe'),_0x48beb4,_0xd675('0xd'),JSON['stringify'](_0x4ccb10));if(_0x4ccb10[_0xd675('0xf')]){if(_0x4ccb10[_0xd675('0xf')][_0xd675('0x10')]===0x1f4){logger[_0xd675('0xf')](_0xd675('0xc'),_0x48beb4,_0x4ccb10['error'][_0xd675('0x11')]);return _0xe2bf9e(_0x4ccb10['error'][_0xd675('0x11')]);}logger['error'](_0xd675('0xc'),_0x48beb4,_0x4ccb10[_0xd675('0xf')][_0xd675('0x11')]);return _0x155e16(_0x4ccb10[_0xd675('0xf')]['message']);}else{logger[_0xd675('0x12')](_0xd675('0xc'),_0x48beb4,_0xd675('0xd'));_0x155e16(_0x4ccb10[_0xd675('0x13')]['message']);}})['catch'](function(_0x5e9c99){logger['error'](_0xd675('0xc'),_0x48beb4,_0x5e9c99);_0xe2bf9e(_0x5e9c99);});});}
\ No newline at end of file
+var _0xf55c=['bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','then','info','ChatApplication,\x20%s,\x20%s','ChatApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','util','moment'];(function(_0x36009f,_0x159649){var _0x4ec87b=function(_0x5a0b52){while(--_0x5a0b52){_0x36009f['push'](_0x36009f['shift']());}};_0x4ec87b(++_0x159649);}(_0xf55c,0x178));var _0xcf55=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xf55c[_0x1ddedd];return _0xa3e1ac;};'use strict';var _=require('lodash');var util=require(_0xcf55('0x0'));var moment=require(_0xcf55('0x1'));var BPromise=require(_0xcf55('0x2'));var rs=require(_0xcf55('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcf55('0x4'));var logger=require('../../config/logger')(_0xcf55('0x5'));var config=require(_0xcf55('0x6'));var jayson=require(_0xcf55('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x531638,_0x31c14b,_0x506270){return new BPromise(function(_0x24ae32,_0x2bb259){return client['request'](_0x531638,_0x506270)[_0xcf55('0x8')](function(_0x4c9272){logger[_0xcf55('0x9')](_0xcf55('0xa'),_0x31c14b,'request\x20sent');logger['debug'](_0xcf55('0xb'),_0x31c14b,_0xcf55('0xc'),JSON['stringify'](_0x4c9272));if(_0x4c9272[_0xcf55('0xd')]){if(_0x4c9272[_0xcf55('0xd')][_0xcf55('0xe')]===0x1f4){logger[_0xcf55('0xd')]('ChatApplication,\x20%s,\x20%s',_0x31c14b,_0x4c9272[_0xcf55('0xd')][_0xcf55('0xf')]);return _0x2bb259(_0x4c9272[_0xcf55('0xd')][_0xcf55('0xf')]);}logger[_0xcf55('0xd')](_0xcf55('0xa'),_0x31c14b,_0x4c9272['error'][_0xcf55('0xf')]);return _0x24ae32(_0x4c9272[_0xcf55('0xd')]['message']);}else{logger[_0xcf55('0x9')](_0xcf55('0xa'),_0x31c14b,_0xcf55('0xc'));_0x24ae32(_0x4c9272[_0xcf55('0x10')]['message']);}})[_0xcf55('0x11')](function(_0x14d6eb){logger[_0xcf55('0xd')](_0xcf55('0xa'),_0x31c14b,_0x14d6eb);_0x2bb259(_0x14d6eb);});});}
\ No newline at end of file
index c771672..e741089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x023f=['put','update','delete','destroy','express','Router','../../components/auth/service','../../config/environment','./chatApplication.controller','get','/:id','isAuthenticated'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x023f,0x1b4));var _0xf023=function(_0x58118c,_0x2ca817){_0x58118c=_0x58118c-0x0;var _0x4a98dc=_0x023f[_0x58118c];return _0x4a98dc;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf023('0x0'));var router=express[_0xf023('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xf023('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xf023('0x3'));var controller=require(_0xf023('0x4'));router[_0xf023('0x5')](_0xf023('0x6'),auth[_0xf023('0x7')](),controller['show']);router[_0xf023('0x8')]('/:id',auth[_0xf023('0x7')](),controller[_0xf023('0x9')]);router[_0xf023('0xa')](_0xf023('0x6'),auth[_0xf023('0x7')](),controller[_0xf023('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0xf4fb=['util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./chatApplication.controller','get','/:id','put','isAuthenticated','destroy','exports','multer'];(function(_0x44b89f,_0xe57ede){var _0x5db9fb=function(_0x4d5415){while(--_0x4d5415){_0x44b89f['push'](_0x44b89f['shift']());}};_0x5db9fb(++_0xe57ede);}(_0xf4fb,0xc3));var _0xbf4f=function(_0x293665,_0xa5ab5a){_0x293665=_0x293665-0x0;var _0x26a774=_0xf4fb[_0x293665];return _0x26a774;};'use strict';var multer=require(_0xbf4f('0x0'));var util=require(_0xbf4f('0x1'));var path=require('path');var timeout=require(_0xbf4f('0x2'));var express=require(_0xbf4f('0x3'));var router=express[_0xbf4f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbf4f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbf4f('0x6'));var controller=require(_0xbf4f('0x7'));router[_0xbf4f('0x8')](_0xbf4f('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xbf4f('0xa')]('/:id',auth[_0xbf4f('0xb')](),controller['update']);router['delete'](_0xbf4f('0x9'),auth[_0xbf4f('0xb')](),controller[_0xbf4f('0xc')]);module[_0xbf4f('0xd')]=router;
\ No newline at end of file
index eedce9d..49a2b47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee7f=['STRING','BOOLEAN','sequelize','exports'];(function(_0x186339,_0x2a828a){var _0x128945=function(_0x92fcd4){while(--_0x92fcd4){_0x186339['push'](_0x186339['shift']());}};_0x128945(++_0x2a828a);}(_0xee7f,0x18a));var _0xfee7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xee7f[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xfee7('0x0'));module[_0xfee7('0x1')]={'name':{'type':Sequelize[_0xfee7('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xfee7('0x2')]},'write':{'type':Sequelize[_0xfee7('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2d1d=['STRING','BOOLEAN'];(function(_0x7dc017,_0xff43e9){var _0x7e1107=function(_0x188d74){while(--_0x188d74){_0x7dc017['push'](_0x7dc017['shift']());}};_0x7e1107(++_0xff43e9);}(_0x2d1d,0x10e));var _0xd2d1=function(_0x60609,_0x22b28d){_0x60609=_0x60609-0x0;var _0x5cc92f=_0x2d1d[_0x60609];return _0x5cc92f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd2d1('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0xd2d1('0x0')]},'write':{'type':Sequelize[_0xd2d1('0x1')],'defaultValue':!![]}};
\ No newline at end of file
index 006f34b..53302e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa45b=['save','update','destroy','then','error','stack','name','send','index','map','ChatGroup','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','rows','catch','params','rawAttributes','length','find','create','body','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','getMembers','findOne','User','pick','removeMembers','ids','ChatGroupId','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','status','end','undefined','count','offset','limit','Content-Range','apply','reject'];(function(_0x47a40b,_0x443ecf){var _0x19610c=function(_0x4b8ce1){while(--_0x4b8ce1){_0x47a40b['push'](_0x47a40b['shift']());}};_0x19610c(++_0x443ecf);}(_0xa45b,0x1ab));var _0xba45=function(_0x599f9d,_0x45a89c){_0x599f9d=_0x599f9d-0x0;var _0x4647bb=_0xa45b[_0x599f9d];return _0x4647bb;};'use strict';var emlformat=require(_0xba45('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xba45('0x1'));var rp=require(_0xba45('0x2'));var moment=require(_0xba45('0x3'));var BPromise=require(_0xba45('0x4'));var Mustache=require(_0xba45('0x5'));var util=require('util');var path=require(_0xba45('0x6'));var sox=require(_0xba45('0x7'));var csv=require('to-csv');var ejs=require(_0xba45('0x8'));var fs=require('fs');var fs_extra=require(_0xba45('0x9'));var _=require(_0xba45('0xa'));var squel=require(_0xba45('0xb'));var crypto=require(_0xba45('0xc'));var jsforce=require(_0xba45('0xd'));var deskjs=require(_0xba45('0xe'));var toCsv=require(_0xba45('0xf'));var querystring=require(_0xba45('0x10'));var Papa=require(_0xba45('0x11'));var Redis=require(_0xba45('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xba45('0x13'));var as=require(_0xba45('0x14'));var hardwareService=require(_0xba45('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xba45('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xba45('0x17'));var db=require('../../mysqldb')['db'];config[_0xba45('0x18')]=_[_0xba45('0x19')](config['redis'],{'host':_0xba45('0x1a'),'port':0x18eb});var socket=require(_0xba45('0x1b'))(new Redis(config[_0xba45('0x18')]));require(_0xba45('0x1c'))['register'](socket);function respondWithStatusCode(_0x4c46e0,_0x3ef738){_0x3ef738=_0x3ef738||0xcc;return function(_0x4a48df){if(_0x4a48df){return _0x4c46e0['sendStatus'](_0x3ef738);}return _0x4c46e0[_0xba45('0x1d')](_0x3ef738)[_0xba45('0x1e')]();};}function respondWithResult(_0x492e62,_0x526da5){_0x526da5=_0x526da5||0xc8;return function(_0x4392d4){if(_0x4392d4){return _0x492e62['status'](_0x526da5)['json'](_0x4392d4);}};}function respondWithFilteredResult(_0x4547c2,_0x4c2559){return function(_0x177eab){if(_0x177eab){var _0x4b4c15=typeof _0x4c2559['offset']===_0xba45('0x1f')&&typeof _0x4c2559['limit']===_0xba45('0x1f');var _0x40556f=_0x177eab[_0xba45('0x20')];var _0x4c5e50=_0x4b4c15?0x0:_0x4c2559['offset'];var _0x387796=_0x4b4c15?_0x177eab[_0xba45('0x20')]:_0x4c2559[_0xba45('0x21')]+_0x4c2559[_0xba45('0x22')];var _0x5b0a56;if(_0x387796>=_0x40556f){_0x387796=_0x40556f;_0x5b0a56=0xc8;}else{_0x5b0a56=0xce;}_0x4547c2[_0xba45('0x1d')](_0x5b0a56);return _0x4547c2['set'](_0xba45('0x23'),_0x4c5e50+'-'+_0x387796+'/'+_0x40556f)['json'](_0x177eab);}return null;};}function patchUpdates(_0x537b32){return function(_0x23cb1d){try{jsonpatch[_0xba45('0x24')](_0x23cb1d,_0x537b32,!![]);}catch(_0x338f21){return BPromise[_0xba45('0x25')](_0x338f21);}return _0x23cb1d[_0xba45('0x26')]();};}function saveUpdates(_0x2d8483,_0x5c2d03){return function(_0x5665d6){if(_0x5665d6){return _0x5665d6[_0xba45('0x27')](_0x2d8483)['then'](function(_0x1ec3b8){return _0x1ec3b8;});}return null;};}function removeEntity(_0x305a9b,_0x5dfd9d){return function(_0x238182){if(_0x238182){return _0x238182[_0xba45('0x28')]()[_0xba45('0x29')](function(){_0x305a9b[_0xba45('0x1d')](0xcc)[_0xba45('0x1e')]();});}};}function handleEntityNotFound(_0x3098e4,_0x4d2eb9){return function(_0x502c5c){if(!_0x502c5c){_0x3098e4['sendStatus'](0x194);}return _0x502c5c;};}function handleError(_0x1f3d10,_0x4bb374){_0x4bb374=_0x4bb374||0x1f4;return function(_0x526ad4){logger[_0xba45('0x2a')](_0x526ad4[_0xba45('0x2b')]);if(_0x526ad4[_0xba45('0x2c')]){delete _0x526ad4[_0xba45('0x2c')];}_0x1f3d10['status'](_0x4bb374)[_0xba45('0x2d')](_0x526ad4);};}exports[_0xba45('0x2e')]=function(_0x413cfa,_0x2d225f){var _0x57c860={},_0x3ed448={},_0x185f0f={'count':0x0,'rows':[]};var _0x419fba=_[_0xba45('0x2f')](db[_0xba45('0x30')]['rawAttributes'],function(_0x9b12ed){return{'name':_0x9b12ed[_0xba45('0x31')],'type':_0x9b12ed[_0xba45('0x32')]['key']};});_0x3ed448[_0xba45('0x33')]=_['map'](_0x419fba,_0xba45('0x2c'));_0x3ed448[_0xba45('0x34')]=_[_0xba45('0x35')](_0x413cfa[_0xba45('0x34')]);_0x3ed448['filters']=_[_0xba45('0x36')](_0x3ed448['model'],_0x3ed448[_0xba45('0x34')]);_0x57c860[_0xba45('0x37')]=_['intersection'](_0x3ed448[_0xba45('0x33')],qs[_0xba45('0x38')](_0x413cfa['query'][_0xba45('0x38')]));_0x57c860['attributes']=_0x57c860['attributes']['length']?_0x57c860[_0xba45('0x37')]:_0x3ed448[_0xba45('0x33')];if(!_0x413cfa[_0xba45('0x34')][_0xba45('0x39')](_0xba45('0x3a'))){_0x57c860[_0xba45('0x22')]=qs[_0xba45('0x22')](_0x413cfa[_0xba45('0x34')][_0xba45('0x22')]);_0x57c860[_0xba45('0x21')]=qs['offset'](_0x413cfa[_0xba45('0x34')]['offset']);}_0x57c860[_0xba45('0x3b')]=qs['sort'](_0x413cfa[_0xba45('0x34')][_0xba45('0x3c')]);_0x57c860[_0xba45('0x3d')]=qs[_0xba45('0x3e')](_['pick'](_0x413cfa[_0xba45('0x34')],_0x3ed448['filters']),_0x419fba);if(_0x413cfa[_0xba45('0x34')][_0xba45('0x3f')]){_0x57c860[_0xba45('0x3d')]=_[_0xba45('0x40')](_0x57c860[_0xba45('0x3d')],{'$or':_[_0xba45('0x2f')](_0x419fba,function(_0x38b002){if(_0x38b002[_0xba45('0x32')]!=='VIRTUAL'){var _0x2e873f={};_0x2e873f[_0x38b002[_0xba45('0x2c')]]={'$like':'%'+_0x413cfa[_0xba45('0x34')][_0xba45('0x3f')]+'%'};return _0x2e873f;}})});}_0x57c860=_[_0xba45('0x40')]({},_0x57c860,_0x413cfa[_0xba45('0x41')]);var _0x91dad1={'where':_0x57c860[_0xba45('0x3d')]};return db['ChatGroup'][_0xba45('0x20')](_0x91dad1)[_0xba45('0x29')](function(_0x2bb669){_0x185f0f[_0xba45('0x20')]=_0x2bb669;if(_0x413cfa[_0xba45('0x34')]['includeAll']){_0x57c860['include']=[{'all':!![]}];}return db[_0xba45('0x30')]['findAll'](_0x57c860);})['then'](function(_0x5bca70){_0x185f0f[_0xba45('0x42')]=_0x5bca70;return _0x185f0f;})['then'](respondWithFilteredResult(_0x2d225f,_0x57c860))[_0xba45('0x43')](handleError(_0x2d225f,null));};exports['show']=function(_0x69e221,_0x44b5e9){var _0x4ec104={'raw':!![],'where':{'id':_0x69e221[_0xba45('0x44')]['id']}},_0x5744b9={};_0x5744b9['model']=_[_0xba45('0x35')](db[_0xba45('0x30')][_0xba45('0x45')]);_0x5744b9[_0xba45('0x34')]=_['keys'](_0x69e221[_0xba45('0x34')]);_0x5744b9['filters']=_[_0xba45('0x36')](_0x5744b9['model'],_0x5744b9[_0xba45('0x34')]);_0x4ec104[_0xba45('0x37')]=_[_0xba45('0x36')](_0x5744b9['model'],qs[_0xba45('0x38')](_0x69e221[_0xba45('0x34')][_0xba45('0x38')]));_0x4ec104[_0xba45('0x37')]=_0x4ec104[_0xba45('0x37')][_0xba45('0x46')]?_0x4ec104[_0xba45('0x37')]:_0x5744b9[_0xba45('0x33')];if(_0x69e221[_0xba45('0x34')]['includeAll']){_0x4ec104['include']=[{'all':!![]}];}_0x4ec104=_[_0xba45('0x40')]({},_0x4ec104,_0x69e221[_0xba45('0x41')]);return db[_0xba45('0x30')][_0xba45('0x47')](_0x4ec104)['then'](handleEntityNotFound(_0x44b5e9,null))['then'](respondWithResult(_0x44b5e9,null))['catch'](handleError(_0x44b5e9,null));};exports[_0xba45('0x48')]=function(_0x53dce6,_0x413572){return db[_0xba45('0x30')][_0xba45('0x48')](_0x53dce6['body'],{})[_0xba45('0x29')](respondWithResult(_0x413572,0xc9))['catch'](handleError(_0x413572,null));};exports[_0xba45('0x27')]=function(_0x32a172,_0x34fc38){if(_0x32a172['body']['id']){delete _0x32a172['body']['id'];}return db[_0xba45('0x30')][_0xba45('0x47')]({'where':{'id':_0x32a172[_0xba45('0x44')]['id']}})['then'](handleEntityNotFound(_0x34fc38,null))[_0xba45('0x29')](saveUpdates(_0x32a172[_0xba45('0x49')],null))[_0xba45('0x29')](respondWithResult(_0x34fc38,null))[_0xba45('0x43')](handleError(_0x34fc38,null));};exports[_0xba45('0x28')]=function(_0x16fc19,_0x178b28){return db[_0xba45('0x30')][_0xba45('0x47')]({'where':{'id':_0x16fc19[_0xba45('0x44')]['id']}})[_0xba45('0x29')](handleEntityNotFound(_0x178b28,null))[_0xba45('0x29')](removeEntity(_0x178b28,null))[_0xba45('0x43')](handleError(_0x178b28,null));};exports['describe']=function(_0x445843,_0x503ef2){return db[_0xba45('0x30')][_0xba45('0x4a')]()['then'](respondWithResult(_0x503ef2,null))['catch'](handleError(_0x503ef2,null));};exports[_0xba45('0x4b')]=function(_0x47f5a1,_0x2b8094,_0x55c1a9){return db[_0xba45('0x4c')][_0xba45('0x20')]({'where':{'ChatGroupId':_0x47f5a1['params']['id'],'ToId':_0x47f5a1[_0xba45('0x4d')]['id'],'read':![]}})[_0xba45('0x29')](function(_0x53da13){return{'id':_[_0xba45('0x4e')](_0x47f5a1[_0xba45('0x44')]['id']),'count':_0x53da13};})['then'](respondWithResult(_0x2b8094,null))[_0xba45('0x43')](handleError(_0x2b8094,null));};exports[_0xba45('0x4f')]=function(_0xa3cdaa,_0x4bde2a,_0x30a065){return db[_0xba45('0x30')][_0xba45('0x47')]({'where':{'id':_0xa3cdaa[_0xba45('0x44')]['id']}})[_0xba45('0x29')](handleEntityNotFound(_0x4bde2a,null))['then'](function(_0x23843f){if(_0x23843f){return _0x23843f[_0xba45('0x4f')](_0xa3cdaa[_0xba45('0x49')]['ids'],_[_0xba45('0x50')](_0xa3cdaa[_0xba45('0x49')],['ids','id'])||{});}})[_0xba45('0x29')](respondWithResult(_0x4bde2a,null))[_0xba45('0x43')](handleError(_0x4bde2a,null));};exports[_0xba45('0x51')]=function(_0x25ab7c,_0x1c2dad,_0x48da52){var _0x1265da={};var _0x12b55e={};var _0x4f4bfd;var _0x3b4f8f;return db[_0xba45('0x30')][_0xba45('0x52')]({'where':{'id':_0x25ab7c[_0xba45('0x44')]['id']}})[_0xba45('0x29')](handleEntityNotFound(_0x1c2dad,null))[_0xba45('0x29')](function(_0xe10448){if(_0xe10448){_0x4f4bfd=_0xe10448;_0x12b55e['model']=_[_0xba45('0x35')](db[_0xba45('0x53')]['rawAttributes']);_0x12b55e[_0xba45('0x34')]=_[_0xba45('0x35')](_0x25ab7c[_0xba45('0x34')]);_0x12b55e[_0xba45('0x3e')]=_[_0xba45('0x36')](_0x12b55e[_0xba45('0x33')],_0x12b55e['query']);_0x1265da[_0xba45('0x37')]=_[_0xba45('0x36')](_0x12b55e[_0xba45('0x33')],qs[_0xba45('0x38')](_0x25ab7c['query'][_0xba45('0x38')]));_0x1265da[_0xba45('0x37')]=_0x1265da[_0xba45('0x37')][_0xba45('0x46')]?_0x1265da[_0xba45('0x37')]:_0x12b55e[_0xba45('0x33')];_0x1265da[_0xba45('0x3b')]=qs[_0xba45('0x3c')](_0x25ab7c['query'][_0xba45('0x3c')]);_0x1265da[_0xba45('0x3d')]=qs['filters'](_[_0xba45('0x54')](_0x25ab7c['query'],_0x12b55e['filters']));if(_0x25ab7c[_0xba45('0x34')]['filter']){_0x1265da['where']=_['merge'](_0x1265da[_0xba45('0x3d')],{'$or':_[_0xba45('0x2f')](_0x1265da['attributes'],function(_0x646be4){var _0x4e3bb7={};_0x4e3bb7[_0x646be4]={'$like':'%'+_0x25ab7c[_0xba45('0x34')][_0xba45('0x3f')]+'%'};return _0x4e3bb7;})});}_0x1265da=_[_0xba45('0x40')]({},_0x1265da,_0x25ab7c[_0xba45('0x41')]);return _0x4f4bfd[_0xba45('0x51')](_0x1265da);}})[_0xba45('0x29')](function(_0x2593cb){if(_0x2593cb){_0x3b4f8f=_0x2593cb['length'];if(!_0x25ab7c[_0xba45('0x34')]['hasOwnProperty'](_0xba45('0x3a'))){_0x1265da[_0xba45('0x22')]=qs['limit'](_0x25ab7c[_0xba45('0x34')][_0xba45('0x22')]);_0x1265da[_0xba45('0x21')]=qs[_0xba45('0x21')](_0x25ab7c[_0xba45('0x34')][_0xba45('0x21')]);}return _0x4f4bfd[_0xba45('0x51')](_0x1265da);}})[_0xba45('0x29')](function(_0xc129ed){if(_0xc129ed){return _0xc129ed?{'count':_0x3b4f8f,'rows':_0xc129ed}:null;}})[_0xba45('0x29')](respondWithResult(_0x1c2dad,null))[_0xba45('0x43')](handleError(_0x1c2dad,null));};exports['removeMembers']=function(_0x2682ec,_0xce42ef,_0x1fd80f){return db[_0xba45('0x30')][_0xba45('0x47')]({'where':{'id':_0x2682ec[_0xba45('0x44')]['id']}})[_0xba45('0x29')](handleEntityNotFound(_0xce42ef,null))[_0xba45('0x29')](function(_0x18a3ec){if(_0x18a3ec){return _0x18a3ec[_0xba45('0x55')](_0x2682ec['query'][_0xba45('0x56')]);}})[_0xba45('0x29')](respondWithStatusCode(_0xce42ef,null))['catch'](handleError(_0xce42ef,null));};exports['addMessage']=function(_0x30cc05,_0x26ef7e,_0x3ee893){if(_0x30cc05[_0xba45('0x49')]['id']){delete _0x30cc05[_0xba45('0x49')]['id'];}return db['ChatGroup'][_0xba45('0x47')]({'where':{'id':_0x30cc05['params']['id']}})['then'](handleEntityNotFound(_0x26ef7e,null))[_0xba45('0x29')](function(_0x145fd6){if(_0x145fd6){_0x30cc05['body'][_0xba45('0x57')]=_0x145fd6['id'];return db[_0xba45('0x4c')][_0xba45('0x48')](_0x30cc05[_0xba45('0x49')]);}})[_0xba45('0x29')](respondWithResult(_0x26ef7e,null))[_0xba45('0x43')](handleError(_0x26ef7e,null));};exports[_0xba45('0x58')]=function(_0x7bf777,_0xbbdaa8,_0x380c09){var _0x4ea7f8={};var _0x3c9ead={};var _0x3c70b1;var _0x2708ec;return db[_0xba45('0x30')][_0xba45('0x52')]({'where':{'id':_0x7bf777[_0xba45('0x44')]['id']}})['then'](handleEntityNotFound(_0xbbdaa8,null))[_0xba45('0x29')](function(_0x29a7e5){if(_0x29a7e5){_0x3c70b1=_0x29a7e5;_0x3c9ead[_0xba45('0x33')]=_['keys'](db[_0xba45('0x4c')][_0xba45('0x45')]);_0x3c9ead[_0xba45('0x34')]=_[_0xba45('0x35')](_0x7bf777[_0xba45('0x34')]);_0x3c9ead[_0xba45('0x3e')]=_[_0xba45('0x36')](_0x3c9ead['model'],_0x3c9ead[_0xba45('0x34')]);_0x4ea7f8[_0xba45('0x37')]=_[_0xba45('0x36')](_0x3c9ead['model'],qs[_0xba45('0x38')](_0x7bf777['query'][_0xba45('0x38')]));_0x4ea7f8['attributes']=_0x4ea7f8['attributes']['length']?_0x4ea7f8[_0xba45('0x37')]:_0x3c9ead['model'];_0x4ea7f8['order']=qs[_0xba45('0x3c')](_0x7bf777[_0xba45('0x34')][_0xba45('0x3c')]);_0x4ea7f8['where']=qs[_0xba45('0x3e')](_[_0xba45('0x54')](_0x7bf777[_0xba45('0x34')],_0x3c9ead[_0xba45('0x3e')]));if(_0x7bf777[_0xba45('0x34')]['filter']){_0x4ea7f8['where']=_['merge'](_0x4ea7f8[_0xba45('0x3d')],{'$or':_['map'](_0x4ea7f8[_0xba45('0x37')],function(_0x261cc0){var _0x276f8f={};_0x276f8f[_0x261cc0]={'$like':'%'+_0x7bf777[_0xba45('0x34')][_0xba45('0x3f')]+'%'};return _0x276f8f;})});}if(_0x7bf777['query'][_0xba45('0x59')]){var _0x638e7b=_0x7bf777[_0xba45('0x34')][_0xba45('0x59')][_0xba45('0x5a')](',');var _0x9a661f={};_0x9a661f[_0x638e7b[0x0]]={'$gte':moment(_0x638e7b[0x1])[_0xba45('0x5b')](_0xba45('0x5c'))};_0x4ea7f8[_0xba45('0x3d')]=_['merge'](_0x4ea7f8[_0xba45('0x3d')],_0x9a661f);}_0x4ea7f8=_[_0xba45('0x40')]({},_0x4ea7f8,_0x7bf777[_0xba45('0x41')]);return _0x3c70b1[_0xba45('0x58')](_0x4ea7f8);}})[_0xba45('0x29')](function(_0x1a31fb){if(_0x1a31fb){_0x2708ec=_0x1a31fb[_0xba45('0x46')];if(!_0x7bf777['query'][_0xba45('0x39')](_0xba45('0x3a'))){_0x4ea7f8[_0xba45('0x22')]=qs[_0xba45('0x22')](_0x7bf777['query'][_0xba45('0x22')]);_0x4ea7f8[_0xba45('0x21')]=qs[_0xba45('0x21')](_0x7bf777[_0xba45('0x34')][_0xba45('0x21')]);}return _0x3c70b1[_0xba45('0x58')](_0x4ea7f8);}})[_0xba45('0x29')](function(_0x4a168f){if(_0x4a168f){return _0x4a168f?{'count':_0x2708ec,'rows':_0x4a168f}:null;}})[_0xba45('0x29')](respondWithResult(_0xbbdaa8,null))[_0xba45('0x43')](handleError(_0xbbdaa8,null));};
\ No newline at end of file
+var _0xbd3c=['apply','save','update','then','destroy','stack','name','send','map','ChatGroup','rawAttributes','fieldName','type','key','query','intersection','model','attributes','length','hasOwnProperty','nolimit','sort','where','filters','merge','filter','includeAll','include','rows','catch','params','keys','fields','create','body','describe','user','addMembers','find','omit','ids','getMembers','findOne','User','order','options','removeMembers','addMessage','ChatGroupId','ChatInternalMessage','getMessages','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','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','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range'];(function(_0xc00490,_0x41e43f){var _0x155c46=function(_0x3afce7){while(--_0x3afce7){_0xc00490['push'](_0xc00490['shift']());}};_0x155c46(++_0x41e43f);}(_0xbd3c,0x154));var _0xcbd3=function(_0x34b307,_0x1a2bbe){_0x34b307=_0x34b307-0x0;var _0x32ce25=_0xbd3c[_0x34b307];return _0x32ce25;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcbd3('0x0'));var jsonpatch=require(_0xcbd3('0x1'));var rp=require(_0xcbd3('0x2'));var moment=require('moment');var BPromise=require(_0xcbd3('0x3'));var Mustache=require(_0xcbd3('0x4'));var util=require(_0xcbd3('0x5'));var path=require(_0xcbd3('0x6'));var sox=require(_0xcbd3('0x7'));var csv=require('to-csv');var ejs=require(_0xcbd3('0x8'));var fs=require('fs');var fs_extra=require(_0xcbd3('0x9'));var _=require(_0xcbd3('0xa'));var squel=require('squel');var crypto=require(_0xcbd3('0xb'));var jsforce=require(_0xcbd3('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xcbd3('0xd'));var Papa=require(_0xcbd3('0xe'));var Redis=require(_0xcbd3('0xf'));var authService=require(_0xcbd3('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xcbd3('0x11'));var hardwareService=require(_0xcbd3('0x12'));var logger=require(_0xcbd3('0x13'))(_0xcbd3('0x14'));var utils=require(_0xcbd3('0x15'));var config=require(_0xcbd3('0x16'));var licenseUtil=require(_0xcbd3('0x17'));var db=require(_0xcbd3('0x18'))['db'];config[_0xcbd3('0x19')]=_[_0xcbd3('0x1a')](config[_0xcbd3('0x19')],{'host':_0xcbd3('0x1b'),'port':0x18eb});var socket=require(_0xcbd3('0x1c'))(new Redis(config['redis']));require('./chatGroup.socket')[_0xcbd3('0x1d')](socket);function respondWithStatusCode(_0x1504c8,_0x28bab2){_0x28bab2=_0x28bab2||0xcc;return function(_0x38f148){if(_0x38f148){return _0x1504c8[_0xcbd3('0x1e')](_0x28bab2);}return _0x1504c8[_0xcbd3('0x1f')](_0x28bab2)[_0xcbd3('0x20')]();};}function respondWithResult(_0xcbf8ad,_0x4f9860){_0x4f9860=_0x4f9860||0xc8;return function(_0x54f084){if(_0x54f084){return _0xcbf8ad['status'](_0x4f9860)[_0xcbd3('0x21')](_0x54f084);}};}function respondWithFilteredResult(_0x1523fd,_0x246786){return function(_0x158f4c){if(_0x158f4c){var _0x54cbdc=typeof _0x246786[_0xcbd3('0x22')]===_0xcbd3('0x23')&&typeof _0x246786[_0xcbd3('0x24')]===_0xcbd3('0x23');var _0x3cef7b=_0x158f4c['count'];var _0x227605=_0x54cbdc?0x0:_0x246786[_0xcbd3('0x22')];var _0x359a19=_0x54cbdc?_0x158f4c[_0xcbd3('0x25')]:_0x246786[_0xcbd3('0x22')]+_0x246786[_0xcbd3('0x24')];var _0x3b737f;if(_0x359a19>=_0x3cef7b){_0x359a19=_0x3cef7b;_0x3b737f=0xc8;}else{_0x3b737f=0xce;}_0x1523fd[_0xcbd3('0x1f')](_0x3b737f);return _0x1523fd[_0xcbd3('0x26')](_0xcbd3('0x27'),_0x227605+'-'+_0x359a19+'/'+_0x3cef7b)[_0xcbd3('0x21')](_0x158f4c);}return null;};}function patchUpdates(_0x887fcb){return function(_0x50420e){try{jsonpatch[_0xcbd3('0x28')](_0x50420e,_0x887fcb,!![]);}catch(_0x3d74ac){return BPromise['reject'](_0x3d74ac);}return _0x50420e[_0xcbd3('0x29')]();};}function saveUpdates(_0x1cd80f,_0x51c7a7){return function(_0x31909b){if(_0x31909b){return _0x31909b[_0xcbd3('0x2a')](_0x1cd80f)[_0xcbd3('0x2b')](function(_0xd7113){return _0xd7113;});}return null;};}function removeEntity(_0x4d0bd3,_0x49c190){return function(_0x4991a6){if(_0x4991a6){return _0x4991a6[_0xcbd3('0x2c')]()[_0xcbd3('0x2b')](function(){_0x4d0bd3['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2b95c9,_0x35b8ee){return function(_0x312d91){if(!_0x312d91){_0x2b95c9[_0xcbd3('0x1e')](0x194);}return _0x312d91;};}function handleError(_0x4b5765,_0x959759){_0x959759=_0x959759||0x1f4;return function(_0x1a50c8){logger['error'](_0x1a50c8[_0xcbd3('0x2d')]);if(_0x1a50c8[_0xcbd3('0x2e')]){delete _0x1a50c8[_0xcbd3('0x2e')];}_0x4b5765[_0xcbd3('0x1f')](_0x959759)[_0xcbd3('0x2f')](_0x1a50c8);};}exports['index']=function(_0x347b5b,_0x1e9c5b){var _0x6ffe7a={},_0x20d12a={},_0x4ea6d6={'count':0x0,'rows':[]};var _0xe7fd=_[_0xcbd3('0x30')](db[_0xcbd3('0x31')][_0xcbd3('0x32')],function(_0x50589a){return{'name':_0x50589a[_0xcbd3('0x33')],'type':_0x50589a[_0xcbd3('0x34')][_0xcbd3('0x35')]};});_0x20d12a['model']=_[_0xcbd3('0x30')](_0xe7fd,_0xcbd3('0x2e'));_0x20d12a[_0xcbd3('0x36')]=_['keys'](_0x347b5b[_0xcbd3('0x36')]);_0x20d12a['filters']=_[_0xcbd3('0x37')](_0x20d12a[_0xcbd3('0x38')],_0x20d12a[_0xcbd3('0x36')]);_0x6ffe7a[_0xcbd3('0x39')]=_['intersection'](_0x20d12a[_0xcbd3('0x38')],qs['fields'](_0x347b5b[_0xcbd3('0x36')]['fields']));_0x6ffe7a[_0xcbd3('0x39')]=_0x6ffe7a[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0x6ffe7a[_0xcbd3('0x39')]:_0x20d12a[_0xcbd3('0x38')];if(!_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x3b')](_0xcbd3('0x3c'))){_0x6ffe7a[_0xcbd3('0x24')]=qs[_0xcbd3('0x24')](_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x24')]);_0x6ffe7a[_0xcbd3('0x22')]=qs[_0xcbd3('0x22')](_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x22')]);}_0x6ffe7a['order']=qs[_0xcbd3('0x3d')](_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x3d')]);_0x6ffe7a[_0xcbd3('0x3e')]=qs[_0xcbd3('0x3f')](_['pick'](_0x347b5b[_0xcbd3('0x36')],_0x20d12a[_0xcbd3('0x3f')]),_0xe7fd);if(_0x347b5b[_0xcbd3('0x36')]['filter']){_0x6ffe7a['where']=_[_0xcbd3('0x40')](_0x6ffe7a['where'],{'$or':_[_0xcbd3('0x30')](_0xe7fd,function(_0x33bc4e){if(_0x33bc4e[_0xcbd3('0x34')]!=='VIRTUAL'){var _0x545255={};_0x545255[_0x33bc4e[_0xcbd3('0x2e')]]={'$like':'%'+_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x41')]+'%'};return _0x545255;}})});}_0x6ffe7a=_[_0xcbd3('0x40')]({},_0x6ffe7a,_0x347b5b['options']);var _0x2ec6f7={'where':_0x6ffe7a[_0xcbd3('0x3e')]};return db[_0xcbd3('0x31')][_0xcbd3('0x25')](_0x2ec6f7)[_0xcbd3('0x2b')](function(_0x21987c){_0x4ea6d6['count']=_0x21987c;if(_0x347b5b[_0xcbd3('0x36')][_0xcbd3('0x42')]){_0x6ffe7a[_0xcbd3('0x43')]=[{'all':!![]}];}return db[_0xcbd3('0x31')]['findAll'](_0x6ffe7a);})['then'](function(_0xcb0fea){_0x4ea6d6[_0xcbd3('0x44')]=_0xcb0fea;return _0x4ea6d6;})[_0xcbd3('0x2b')](respondWithFilteredResult(_0x1e9c5b,_0x6ffe7a))[_0xcbd3('0x45')](handleError(_0x1e9c5b,null));};exports['show']=function(_0x45142d,_0x222aeb){var _0xc5ec56={'raw':!![],'where':{'id':_0x45142d[_0xcbd3('0x46')]['id']}},_0x4beff5={};_0x4beff5[_0xcbd3('0x38')]=_[_0xcbd3('0x47')](db[_0xcbd3('0x31')][_0xcbd3('0x32')]);_0x4beff5['query']=_[_0xcbd3('0x47')](_0x45142d[_0xcbd3('0x36')]);_0x4beff5[_0xcbd3('0x3f')]=_[_0xcbd3('0x37')](_0x4beff5[_0xcbd3('0x38')],_0x4beff5[_0xcbd3('0x36')]);_0xc5ec56[_0xcbd3('0x39')]=_[_0xcbd3('0x37')](_0x4beff5['model'],qs[_0xcbd3('0x48')](_0x45142d[_0xcbd3('0x36')][_0xcbd3('0x48')]));_0xc5ec56[_0xcbd3('0x39')]=_0xc5ec56[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0xc5ec56[_0xcbd3('0x39')]:_0x4beff5[_0xcbd3('0x38')];if(_0x45142d[_0xcbd3('0x36')][_0xcbd3('0x42')]){_0xc5ec56[_0xcbd3('0x43')]=[{'all':!![]}];}_0xc5ec56=_[_0xcbd3('0x40')]({},_0xc5ec56,_0x45142d['options']);return db[_0xcbd3('0x31')]['find'](_0xc5ec56)[_0xcbd3('0x2b')](handleEntityNotFound(_0x222aeb,null))[_0xcbd3('0x2b')](respondWithResult(_0x222aeb,null))[_0xcbd3('0x45')](handleError(_0x222aeb,null));};exports[_0xcbd3('0x49')]=function(_0x3fd295,_0x498f88){return db[_0xcbd3('0x31')][_0xcbd3('0x49')](_0x3fd295['body'],{})[_0xcbd3('0x2b')](respondWithResult(_0x498f88,0xc9))['catch'](handleError(_0x498f88,null));};exports[_0xcbd3('0x2a')]=function(_0x6e3fd3,_0x10d4b8){if(_0x6e3fd3[_0xcbd3('0x4a')]['id']){delete _0x6e3fd3['body']['id'];}return db[_0xcbd3('0x31')]['find']({'where':{'id':_0x6e3fd3[_0xcbd3('0x46')]['id']}})[_0xcbd3('0x2b')](handleEntityNotFound(_0x10d4b8,null))[_0xcbd3('0x2b')](saveUpdates(_0x6e3fd3[_0xcbd3('0x4a')],null))[_0xcbd3('0x2b')](respondWithResult(_0x10d4b8,null))[_0xcbd3('0x45')](handleError(_0x10d4b8,null));};exports[_0xcbd3('0x2c')]=function(_0x4320c9,_0x4f59b6){return db[_0xcbd3('0x31')]['find']({'where':{'id':_0x4320c9[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0x4f59b6,null))['then'](removeEntity(_0x4f59b6,null))['catch'](handleError(_0x4f59b6,null));};exports[_0xcbd3('0x4b')]=function(_0x587e81,_0x52179e){return db[_0xcbd3('0x31')][_0xcbd3('0x4b')]()[_0xcbd3('0x2b')](respondWithResult(_0x52179e,null))[_0xcbd3('0x45')](handleError(_0x52179e,null));};exports['getUnread']=function(_0x5638c2,_0x33bd0d,_0x42fd5c){return db['ChatInternalMessage'][_0xcbd3('0x25')]({'where':{'ChatGroupId':_0x5638c2[_0xcbd3('0x46')]['id'],'ToId':_0x5638c2[_0xcbd3('0x4c')]['id'],'read':![]}})[_0xcbd3('0x2b')](function(_0x5c2f5){return{'id':_['toInteger'](_0x5638c2[_0xcbd3('0x46')]['id']),'count':_0x5c2f5};})[_0xcbd3('0x2b')](respondWithResult(_0x33bd0d,null))['catch'](handleError(_0x33bd0d,null));};exports[_0xcbd3('0x4d')]=function(_0x404e97,_0x347cb1,_0x366914){return db[_0xcbd3('0x31')][_0xcbd3('0x4e')]({'where':{'id':_0x404e97[_0xcbd3('0x46')]['id']}})[_0xcbd3('0x2b')](handleEntityNotFound(_0x347cb1,null))['then'](function(_0x5127c5){if(_0x5127c5){return _0x5127c5['addMembers'](_0x404e97[_0xcbd3('0x4a')]['ids'],_[_0xcbd3('0x4f')](_0x404e97[_0xcbd3('0x4a')],[_0xcbd3('0x50'),'id'])||{});}})[_0xcbd3('0x2b')](respondWithResult(_0x347cb1,null))[_0xcbd3('0x45')](handleError(_0x347cb1,null));};exports[_0xcbd3('0x51')]=function(_0x28117b,_0x29aefe,_0x181088){var _0x329858={};var _0x110e3a={};var _0x4b14a9;var _0x544d7f;return db[_0xcbd3('0x31')][_0xcbd3('0x52')]({'where':{'id':_0x28117b[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0x29aefe,null))[_0xcbd3('0x2b')](function(_0x481408){if(_0x481408){_0x4b14a9=_0x481408;_0x110e3a[_0xcbd3('0x38')]=_[_0xcbd3('0x47')](db[_0xcbd3('0x53')][_0xcbd3('0x32')]);_0x110e3a[_0xcbd3('0x36')]=_['keys'](_0x28117b['query']);_0x110e3a[_0xcbd3('0x3f')]=_['intersection'](_0x110e3a[_0xcbd3('0x38')],_0x110e3a[_0xcbd3('0x36')]);_0x329858[_0xcbd3('0x39')]=_[_0xcbd3('0x37')](_0x110e3a[_0xcbd3('0x38')],qs['fields'](_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x48')]));_0x329858[_0xcbd3('0x39')]=_0x329858[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0x329858[_0xcbd3('0x39')]:_0x110e3a[_0xcbd3('0x38')];_0x329858[_0xcbd3('0x54')]=qs[_0xcbd3('0x3d')](_0x28117b[_0xcbd3('0x36')]['sort']);_0x329858[_0xcbd3('0x3e')]=qs[_0xcbd3('0x3f')](_['pick'](_0x28117b[_0xcbd3('0x36')],_0x110e3a['filters']));if(_0x28117b['query'][_0xcbd3('0x41')]){_0x329858[_0xcbd3('0x3e')]=_[_0xcbd3('0x40')](_0x329858[_0xcbd3('0x3e')],{'$or':_[_0xcbd3('0x30')](_0x329858[_0xcbd3('0x39')],function(_0x535096){var _0x10b816={};_0x10b816[_0x535096]={'$like':'%'+_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x41')]+'%'};return _0x10b816;})});}_0x329858=_['merge']({},_0x329858,_0x28117b[_0xcbd3('0x55')]);return _0x4b14a9[_0xcbd3('0x51')](_0x329858);}})['then'](function(_0x1c0908){if(_0x1c0908){_0x544d7f=_0x1c0908[_0xcbd3('0x3a')];if(!_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x3b')](_0xcbd3('0x3c'))){_0x329858[_0xcbd3('0x24')]=qs['limit'](_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x24')]);_0x329858[_0xcbd3('0x22')]=qs[_0xcbd3('0x22')](_0x28117b[_0xcbd3('0x36')][_0xcbd3('0x22')]);}return _0x4b14a9[_0xcbd3('0x51')](_0x329858);}})[_0xcbd3('0x2b')](function(_0xbb4bf3){if(_0xbb4bf3){return _0xbb4bf3?{'count':_0x544d7f,'rows':_0xbb4bf3}:null;}})[_0xcbd3('0x2b')](respondWithResult(_0x29aefe,null))[_0xcbd3('0x45')](handleError(_0x29aefe,null));};exports[_0xcbd3('0x56')]=function(_0x14f82f,_0x157ab3,_0x52b4d8){return db[_0xcbd3('0x31')]['find']({'where':{'id':_0x14f82f[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0x157ab3,null))[_0xcbd3('0x2b')](function(_0xbd9b9b){if(_0xbd9b9b){return _0xbd9b9b[_0xcbd3('0x56')](_0x14f82f[_0xcbd3('0x36')][_0xcbd3('0x50')]);}})[_0xcbd3('0x2b')](respondWithStatusCode(_0x157ab3,null))[_0xcbd3('0x45')](handleError(_0x157ab3,null));};exports[_0xcbd3('0x57')]=function(_0x4ac9f0,_0x6fa3f2,_0x30dc7d){if(_0x4ac9f0[_0xcbd3('0x4a')]['id']){delete _0x4ac9f0[_0xcbd3('0x4a')]['id'];}return db[_0xcbd3('0x31')][_0xcbd3('0x4e')]({'where':{'id':_0x4ac9f0[_0xcbd3('0x46')]['id']}})[_0xcbd3('0x2b')](handleEntityNotFound(_0x6fa3f2,null))[_0xcbd3('0x2b')](function(_0x2f0bd7){if(_0x2f0bd7){_0x4ac9f0[_0xcbd3('0x4a')][_0xcbd3('0x58')]=_0x2f0bd7['id'];return db[_0xcbd3('0x59')][_0xcbd3('0x49')](_0x4ac9f0['body']);}})[_0xcbd3('0x2b')](respondWithResult(_0x6fa3f2,null))[_0xcbd3('0x45')](handleError(_0x6fa3f2,null));};exports[_0xcbd3('0x5a')]=function(_0xf6741f,_0xfd8aed,_0x184830){var _0x3a8fd5={};var _0x18d40b={};var _0x2f5c6c;var _0x38737c;return db[_0xcbd3('0x31')][_0xcbd3('0x52')]({'where':{'id':_0xf6741f[_0xcbd3('0x46')]['id']}})['then'](handleEntityNotFound(_0xfd8aed,null))[_0xcbd3('0x2b')](function(_0x53773){if(_0x53773){_0x2f5c6c=_0x53773;_0x18d40b['model']=_[_0xcbd3('0x47')](db[_0xcbd3('0x59')][_0xcbd3('0x32')]);_0x18d40b[_0xcbd3('0x36')]=_[_0xcbd3('0x47')](_0xf6741f[_0xcbd3('0x36')]);_0x18d40b[_0xcbd3('0x3f')]=_[_0xcbd3('0x37')](_0x18d40b[_0xcbd3('0x38')],_0x18d40b['query']);_0x3a8fd5['attributes']=_['intersection'](_0x18d40b[_0xcbd3('0x38')],qs[_0xcbd3('0x48')](_0xf6741f[_0xcbd3('0x36')]['fields']));_0x3a8fd5[_0xcbd3('0x39')]=_0x3a8fd5[_0xcbd3('0x39')][_0xcbd3('0x3a')]?_0x3a8fd5[_0xcbd3('0x39')]:_0x18d40b['model'];_0x3a8fd5[_0xcbd3('0x54')]=qs[_0xcbd3('0x3d')](_0xf6741f[_0xcbd3('0x36')]['sort']);_0x3a8fd5[_0xcbd3('0x3e')]=qs[_0xcbd3('0x3f')](_['pick'](_0xf6741f[_0xcbd3('0x36')],_0x18d40b['filters']));if(_0xf6741f['query'][_0xcbd3('0x41')]){_0x3a8fd5[_0xcbd3('0x3e')]=_['merge'](_0x3a8fd5['where'],{'$or':_[_0xcbd3('0x30')](_0x3a8fd5[_0xcbd3('0x39')],function(_0x257cec){var _0x5222c6={};_0x5222c6[_0x257cec]={'$like':'%'+_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x41')]+'%'};return _0x5222c6;})});}if(_0xf6741f[_0xcbd3('0x36')]['$gte']){var _0x1f6a67=_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x5b')][_0xcbd3('0x5c')](',');var _0x2eb3f9={};_0x2eb3f9[_0x1f6a67[0x0]]={'$gte':moment(_0x1f6a67[0x1])[_0xcbd3('0x5d')](_0xcbd3('0x5e'))};_0x3a8fd5[_0xcbd3('0x3e')]=_[_0xcbd3('0x40')](_0x3a8fd5[_0xcbd3('0x3e')],_0x2eb3f9);}_0x3a8fd5=_[_0xcbd3('0x40')]({},_0x3a8fd5,_0xf6741f['options']);return _0x2f5c6c[_0xcbd3('0x5a')](_0x3a8fd5);}})['then'](function(_0x303c3e){if(_0x303c3e){_0x38737c=_0x303c3e[_0xcbd3('0x3a')];if(!_0xf6741f['query'][_0xcbd3('0x3b')](_0xcbd3('0x3c'))){_0x3a8fd5['limit']=qs[_0xcbd3('0x24')](_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x24')]);_0x3a8fd5[_0xcbd3('0x22')]=qs[_0xcbd3('0x22')](_0xf6741f[_0xcbd3('0x36')][_0xcbd3('0x22')]);}return _0x2f5c6c[_0xcbd3('0x5a')](_0x3a8fd5);}})[_0xcbd3('0x2b')](function(_0x4c3ba5){if(_0x4c3ba5){return _0x4c3ba5?{'count':_0x38737c,'rows':_0x4c3ba5}:null;}})[_0xcbd3('0x2b')](respondWithResult(_0xfd8aed,null))[_0xcbd3('0x45')](handleError(_0xfd8aed,null));};
\ No newline at end of file
index b8173a8..b05558c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1c9=['../../mysqldb','ChatGroup','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xa1c9,0x135));var _0x9a1c=function(_0x52fa77,_0x2b381b){_0x52fa77=_0x52fa77-0x0;var _0x477535=_0xa1c9[_0x52fa77];return _0x477535;};'use strict';var EventEmitter=require(_0x9a1c('0x0'));var ChatGroup=require(_0x9a1c('0x1'))['db'][_0x9a1c('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x9a1c('0x3')](0x0);var events={'afterCreate':_0x9a1c('0x4'),'afterUpdate':_0x9a1c('0x5'),'afterDestroy':_0x9a1c('0x6')};function emitEvent(_0x3f6d12){return function(_0x3467bc,_0x5d23eb,_0x14875a){ChatGroupEvents[_0x9a1c('0x7')](_0x3f6d12+':'+_0x3467bc['id'],_0x3467bc);ChatGroupEvents[_0x9a1c('0x7')](_0x3f6d12,_0x3467bc);_0x14875a(null);};}for(var e in events){if(events[_0x9a1c('0x8')](e)){var event=events[e];ChatGroup[_0x9a1c('0x9')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0xa59a=['emit','exports','events','../../mysqldb','ChatGroup','setMaxListeners','update','remove'];(function(_0x7abd7,_0x1ca3f9){var _0x3a2577=function(_0x18456d){while(--_0x18456d){_0x7abd7['push'](_0x7abd7['shift']());}};_0x3a2577(++_0x1ca3f9);}(_0xa59a,0x1d2));var _0xaa59=function(_0x1d0db8,_0x6b1bb5){_0x1d0db8=_0x1d0db8-0x0;var _0x50f741=_0xa59a[_0x1d0db8];return _0x50f741;};'use strict';var EventEmitter=require(_0xaa59('0x0'));var ChatGroup=require(_0xaa59('0x1'))['db'][_0xaa59('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xaa59('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaa59('0x4'),'afterDestroy':_0xaa59('0x5')};function emitEvent(_0x4999d9){return function(_0x44d41f,_0x38bbae,_0x57f84e){ChatGroupEvents[_0xaa59('0x6')](_0x4999d9+':'+_0x44d41f['id'],_0x44d41f);ChatGroupEvents[_0xaa59('0x6')](_0x4999d9,_0x44d41f);_0x57f84e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0xaa59('0x7')]=ChatGroupEvents;
\ No newline at end of file
index b65ee35..75fb8ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db8=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','ChatGroup','chat_groups'];(function(_0x3fd275,_0xf0cd7){var _0xe4f14f=function(_0x23971d){while(--_0x23971d){_0x3fd275['push'](_0x3fd275['shift']());}};_0xe4f14f(++_0xf0cd7);}(_0x1db8,0x168));var _0x81db=function(_0x38537f,_0x252124){_0x38537f=_0x38537f-0x0;var _0x141e23=_0x1db8[_0x38537f];return _0x141e23;};'use strict';var _=require(_0x81db('0x0'));var util=require('util');var logger=require(_0x81db('0x1'))(_0x81db('0x2'));var moment=require(_0x81db('0x3'));var BPromise=require(_0x81db('0x4'));var rp=require(_0x81db('0x5'));var fs=require('fs');var path=require(_0x81db('0x6'));var rimraf=require(_0x81db('0x7'));var config=require(_0x81db('0x8'));var attributes=require('./chatGroup.attributes');module['exports']=function(_0x4e0c52,_0x5dbfb0){return _0x4e0c52[_0x81db('0x9')](_0x81db('0xa'),attributes,{'tableName':_0x81db('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6b9c=['../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./chatGroup.attributes','exports','ChatGroup','chat_groups','lodash','util'];(function(_0x3720d1,_0x968d8b){var _0x14a1e8=function(_0x454184){while(--_0x454184){_0x3720d1['push'](_0x3720d1['shift']());}};_0x14a1e8(++_0x968d8b);}(_0x6b9c,0x172));var _0xc6b9=function(_0x599b2a,_0x2d5f1d){_0x599b2a=_0x599b2a-0x0;var _0x1d2aef=_0x6b9c[_0x599b2a];return _0x1d2aef;};'use strict';var _=require(_0xc6b9('0x0'));var util=require(_0xc6b9('0x1'));var logger=require(_0xc6b9('0x2'))(_0xc6b9('0x3'));var moment=require('moment');var BPromise=require(_0xc6b9('0x4'));var rp=require(_0xc6b9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc6b9('0x6'));var config=require(_0xc6b9('0x7'));var attributes=require(_0xc6b9('0x8'));module[_0xc6b9('0x9')]=function(_0x16f140,_0x4b10f1){return _0x16f140['define'](_0xc6b9('0xa'),attributes,{'tableName':_0xc6b9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc98220..e58ac35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25b4=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./chatGroup.socket','register','then','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x1f2401,_0x4fe3b1){var _0x13bc93=function(_0xecae20){while(--_0xecae20){_0x1f2401['push'](_0x1f2401['shift']());}};_0x13bc93(++_0x4fe3b1);}(_0x25b4,0x1ab));var _0x425b=function(_0x57b236,_0x30614e){_0x57b236=_0x57b236-0x0;var _0x4feb29=_0x25b4[_0x57b236];return _0x4feb29;};'use strict';var _=require(_0x425b('0x0'));var util=require('util');var moment=require(_0x425b('0x1'));var BPromise=require(_0x425b('0x2'));var rs=require(_0x425b('0x3'));var fs=require('fs');var Redis=require(_0x425b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x425b('0x5'));var logger=require(_0x425b('0x6'))(_0x425b('0x7'));var config=require(_0x425b('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x425b('0x9')][_0x425b('0xa')]({'port':0x232a});config[_0x425b('0xb')]=_[_0x425b('0xc')](config[_0x425b('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x425b('0xd'))(new Redis(config['redis']));require(_0x425b('0xe'))[_0x425b('0xf')](socket);function respondWithRpcPromise(_0x173c16,_0x444fd4,_0x3f3860){return new BPromise(function(_0x588f2b,_0x532add){return client['request'](_0x173c16,_0x3f3860)[_0x425b('0x10')](function(_0x164561){logger['info'](_0x425b('0x11'),_0x444fd4,_0x425b('0x12'));logger['debug'](_0x425b('0x13'),_0x444fd4,_0x425b('0x12'),JSON['stringify'](_0x164561));if(_0x164561[_0x425b('0x14')]){if(_0x164561['error'][_0x425b('0x15')]===0x1f4){logger[_0x425b('0x14')](_0x425b('0x11'),_0x444fd4,_0x164561[_0x425b('0x14')][_0x425b('0x16')]);return _0x532add(_0x164561[_0x425b('0x14')][_0x425b('0x16')]);}logger[_0x425b('0x14')](_0x425b('0x11'),_0x444fd4,_0x164561['error'][_0x425b('0x16')]);return _0x588f2b(_0x164561[_0x425b('0x14')][_0x425b('0x16')]);}else{logger['info'](_0x425b('0x11'),_0x444fd4,_0x425b('0x12'));_0x588f2b(_0x164561[_0x425b('0x17')][_0x425b('0x16')]);}})[_0x425b('0x18')](function(_0x32e912){logger[_0x425b('0x14')](_0x425b('0x11'),_0x444fd4,_0x32e912);_0x532add(_0x32e912);});});}
\ No newline at end of file
+var _0xbf63=['error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','ChatGroup,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x292423,_0x1759b7){var _0x2801cb=function(_0x23c821){while(--_0x23c821){_0x292423['push'](_0x292423['shift']());}};_0x2801cb(++_0x1759b7);}(_0xbf63,0x1eb));var _0x3bf6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbf63[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3bf6('0x0'));var util=require('util');var moment=require(_0x3bf6('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3bf6('0x2'));var db=require(_0x3bf6('0x3'))['db'];var utils=require(_0x3bf6('0x4'));var logger=require(_0x3bf6('0x5'))(_0x3bf6('0x6'));var config=require(_0x3bf6('0x7'));var jayson=require(_0x3bf6('0x8'));var client=jayson[_0x3bf6('0x9')][_0x3bf6('0xa')]({'port':0x232a});config[_0x3bf6('0xb')]=_[_0x3bf6('0xc')](config[_0x3bf6('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x3bf6('0xd'))(new Redis(config['redis']));require('./chatGroup.socket')[_0x3bf6('0xe')](socket);function respondWithRpcPromise(_0x3e1d7f,_0xcd16eb,_0x4c9506){return new BPromise(function(_0x2b6ca8,_0x2f4f77){return client[_0x3bf6('0xf')](_0x3e1d7f,_0x4c9506)[_0x3bf6('0x10')](function(_0x4a419f){logger[_0x3bf6('0x11')](_0x3bf6('0x12'),_0xcd16eb,_0x3bf6('0x13'));logger['debug'](_0x3bf6('0x14'),_0xcd16eb,'request\x20sent',JSON[_0x3bf6('0x15')](_0x4a419f));if(_0x4a419f[_0x3bf6('0x16')]){if(_0x4a419f[_0x3bf6('0x16')][_0x3bf6('0x17')]===0x1f4){logger['error']('ChatGroup,\x20%s,\x20%s',_0xcd16eb,_0x4a419f['error']['message']);return _0x2f4f77(_0x4a419f[_0x3bf6('0x16')][_0x3bf6('0x18')]);}logger[_0x3bf6('0x16')]('ChatGroup,\x20%s,\x20%s',_0xcd16eb,_0x4a419f[_0x3bf6('0x16')]['message']);return _0x2b6ca8(_0x4a419f[_0x3bf6('0x16')][_0x3bf6('0x18')]);}else{logger['info'](_0x3bf6('0x12'),_0xcd16eb,_0x3bf6('0x13'));_0x2b6ca8(_0x4a419f[_0x3bf6('0x19')][_0x3bf6('0x18')]);}})[_0x3bf6('0x1a')](function(_0xdc0e0c){logger[_0x3bf6('0x16')](_0x3bf6('0x12'),_0xcd16eb,_0xdc0e0c);_0x2f4f77(_0xdc0e0c);});});}
\ No newline at end of file
index ae14194..f3e577f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45cf=['./chatGroup.events','update','emit','removeListener','register'];(function(_0x569697,_0x3dd135){var _0x48cef7=function(_0x47ca27){while(--_0x47ca27){_0x569697['push'](_0x569697['shift']());}};_0x48cef7(++_0x3dd135);}(_0x45cf,0xe1));var _0xf45c=function(_0x183482,_0x146db8){_0x183482=_0x183482-0x0;var _0x4816e6=_0x45cf[_0x183482];return _0x4816e6;};'use strict';var ChatGroupEvents=require(_0xf45c('0x0'));var events=['save','remove',_0xf45c('0x1')];function createListener(_0x3d7967,_0x5811fd){return function(_0x5e09bd){_0x5811fd[_0xf45c('0x2')](_0x3d7967,_0x5e09bd);};}function removeListener(_0x28e6f7,_0x469f8e){return function(){ChatGroupEvents[_0xf45c('0x3')](_0x28e6f7,_0x469f8e);};}exports[_0xf45c('0x4')]=function(_0xc25b5d){for(var _0x42e893=0x0,_0x1d0abe=events['length'];_0x42e893<_0x1d0abe;_0x42e893++){var _0x18dc9a=events[_0x42e893];var _0x3824ae=createListener('chatGroup:'+_0x18dc9a,_0xc25b5d);ChatGroupEvents['on'](_0x18dc9a,_0x3824ae);}};
\ No newline at end of file
+var _0x760d=['remove','update','emit','removeListener','register','length','chatGroup:','./chatGroup.events','save'];(function(_0x52085a,_0x3717ca){var _0x5afc1a=function(_0x2aa175){while(--_0x2aa175){_0x52085a['push'](_0x52085a['shift']());}};_0x5afc1a(++_0x3717ca);}(_0x760d,0x14b));var _0xd760=function(_0x15f6f4,_0x310a05){_0x15f6f4=_0x15f6f4-0x0;var _0x267dbd=_0x760d[_0x15f6f4];return _0x267dbd;};'use strict';var ChatGroupEvents=require(_0xd760('0x0'));var events=[_0xd760('0x1'),_0xd760('0x2'),_0xd760('0x3')];function createListener(_0x2c392a,_0x4293db){return function(_0x27a2ed){_0x4293db[_0xd760('0x4')](_0x2c392a,_0x27a2ed);};}function removeListener(_0x1615fd,_0x4a47b2){return function(){ChatGroupEvents[_0xd760('0x5')](_0x1615fd,_0x4a47b2);};}exports[_0xd760('0x6')]=function(_0x5290ea){for(var _0x55b178=0x0,_0x229c80=events[_0xd760('0x7')];_0x55b178<_0x229c80;_0x55b178++){var _0x250331=events[_0x55b178];var _0x4b2dc8=createListener(_0xd760('0x8')+_0x250331,_0x5290ea);ChatGroupEvents['on'](_0x250331,_0x4b2dc8);}};
\ No newline at end of file
index 464d3d6..24c4c02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae36=['/:id/unread','getUnread','/:id/messages','getMessages','post','create','/:id/members','addMembers','put','delete','destroy','removeMembers','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatGroup.controller','isAuthenticated','index','get','describe','/:id','show'];(function(_0x5a11ee,_0x5d23dc){var _0x30cb79=function(_0x5eabd0){while(--_0x5eabd0){_0x5a11ee['push'](_0x5a11ee['shift']());}};_0x30cb79(++_0x5d23dc);}(_0xae36,0x11b));var _0x6ae3=function(_0x262a69,_0x1f67fe){_0x262a69=_0x262a69-0x0;var _0x43ca44=_0xae36[_0x262a69];return _0x43ca44;};'use strict';var multer=require('multer');var util=require(_0x6ae3('0x0'));var path=require(_0x6ae3('0x1'));var timeout=require(_0x6ae3('0x2'));var express=require(_0x6ae3('0x3'));var router=express[_0x6ae3('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x6ae3('0x5'));var config=require(_0x6ae3('0x6'));var controller=require(_0x6ae3('0x7'));router['get']('/',auth[_0x6ae3('0x8')](),controller[_0x6ae3('0x9')]);router[_0x6ae3('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x6ae3('0xb')]);router['get'](_0x6ae3('0xc'),auth[_0x6ae3('0x8')](),controller[_0x6ae3('0xd')]);router['get'](_0x6ae3('0xe'),auth[_0x6ae3('0x8')](),controller[_0x6ae3('0xf')]);router[_0x6ae3('0xa')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router['get'](_0x6ae3('0x10'),auth[_0x6ae3('0x8')](),controller[_0x6ae3('0x11')]);router[_0x6ae3('0x12')]('/',auth[_0x6ae3('0x8')](),controller[_0x6ae3('0x13')]);router[_0x6ae3('0x12')](_0x6ae3('0x14'),auth[_0x6ae3('0x8')](),controller[_0x6ae3('0x15')]);router['post'](_0x6ae3('0x10'),auth['isAuthenticated'](),controller['addMessage']);router[_0x6ae3('0x16')](_0x6ae3('0xc'),auth[_0x6ae3('0x8')](),controller['update']);router[_0x6ae3('0x17')](_0x6ae3('0xc'),auth[_0x6ae3('0x8')](),controller[_0x6ae3('0x18')]);router['delete'](_0x6ae3('0x14'),auth[_0x6ae3('0x8')](),controller[_0x6ae3('0x19')]);module[_0x6ae3('0x1a')]=router;
\ No newline at end of file
+var _0x9c1c=['addMembers','addMessage','put','update','delete','destroy','removeMembers','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','/:id/messages','getMessages','post','create'];(function(_0x3a58c9,_0x18f9e8){var _0x228fe2=function(_0x2b3034){while(--_0x2b3034){_0x3a58c9['push'](_0x3a58c9['shift']());}};_0x228fe2(++_0x18f9e8);}(_0x9c1c,0xc7));var _0xc9c1=function(_0x4704dc,_0x575a5f){_0x4704dc=_0x4704dc-0x0;var _0x254d81=_0x9c1c[_0x4704dc];return _0x254d81;};'use strict';var multer=require(_0xc9c1('0x0'));var util=require(_0xc9c1('0x1'));var path=require(_0xc9c1('0x2'));var timeout=require('connect-timeout');var express=require(_0xc9c1('0x3'));var router=express[_0xc9c1('0x4')]();var fs_extra=require(_0xc9c1('0x5'));var auth=require(_0xc9c1('0x6'));var interaction=require(_0xc9c1('0x7'));var config=require(_0xc9c1('0x8'));var controller=require(_0xc9c1('0x9'));router[_0xc9c1('0xa')]('/',auth[_0xc9c1('0xb')](),controller[_0xc9c1('0xc')]);router['get'](_0xc9c1('0xd'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0xe')]);router[_0xc9c1('0xa')](_0xc9c1('0xf'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x10')]);router['get'](_0xc9c1('0x11'),auth['isAuthenticated'](),controller[_0xc9c1('0x12')]);router[_0xc9c1('0xa')](_0xc9c1('0x13'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x14')]);router[_0xc9c1('0xa')](_0xc9c1('0x15'),auth['isAuthenticated'](),controller[_0xc9c1('0x16')]);router[_0xc9c1('0x17')]('/',auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x18')]);router['post']('/:id/members',auth['isAuthenticated'](),controller[_0xc9c1('0x19')]);router['post'](_0xc9c1('0x15'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1a')]);router[_0xc9c1('0x1b')](_0xc9c1('0xf'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1c')]);router[_0xc9c1('0x1d')](_0xc9c1('0xf'),auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1e')]);router[_0xc9c1('0x1d')]('/:id/members',auth[_0xc9c1('0xb')](),controller[_0xc9c1('0x1f')]);module['exports']=router;
\ No newline at end of file
index 0f987c0..d092b77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d0=['DATE','STRING','ENUM','exports','BOOLEAN','INTEGER','star','thumb','TEXT'];(function(_0x1bca50,_0x5ae547){var _0x49352b=function(_0x5c6cda){while(--_0x5c6cda){_0x1bca50['push'](_0x1bca50['shift']());}};_0x49352b(++_0x5ae547);}(_0x38d0,0x123));var _0x038d=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x38d0[_0x4b055c];return _0x4b62bb;};'use strict';var Sequelize=require('sequelize');module[_0x038d('0x0')]={'closed':{'type':Sequelize[_0x038d('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x038d('0x2')]},'ratingType':{'type':Sequelize['ENUM'](_0x038d('0x3'),_0x038d('0x4')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize['TEXT']},'pathTranscript':{'type':Sequelize[_0x038d('0x5')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x038d('0x6')]},'disposition':{'type':Sequelize[_0x038d('0x7')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x038d('0x7')]},'note':{'type':Sequelize[_0x038d('0x7')]},'browserName':{'type':Sequelize[_0x038d('0x7')]},'browserVersion':{'type':Sequelize[_0x038d('0x7')]},'osName':{'type':Sequelize[_0x038d('0x7')]},'osVersion':{'type':Sequelize[_0x038d('0x7')]},'deviceModel':{'type':Sequelize[_0x038d('0x7')]},'deviceVendor':{'type':Sequelize[_0x038d('0x7')]},'deviceType':{'type':Sequelize[_0x038d('0x7')]},'referer':{'type':Sequelize[_0x038d('0x5')]},'customerIp':{'type':Sequelize[_0x038d('0x7')]},'formData':{'type':Sequelize[_0x038d('0x5')]('long')},'read1stAt':{'type':Sequelize[_0x038d('0x6')]},'lastMsgAt':{'type':Sequelize[_0x038d('0x6')]},'lastMsgDirection':{'type':Sequelize[_0x038d('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x038d('0x7')]},'customerPort':{'type':Sequelize[_0x038d('0x7')]},'vidaooSessionId':{'type':Sequelize[_0x038d('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x038d('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb248=['INTEGER','ENUM','star','TEXT','STRING','DATE','long','out','sequelize','BOOLEAN'];(function(_0x30eb36,_0x4f7dab){var _0x1b33d1=function(_0x4ab0ff){while(--_0x4ab0ff){_0x30eb36['push'](_0x30eb36['shift']());}};_0x1b33d1(++_0x4f7dab);}(_0xb248,0xc6));var _0x8b24=function(_0x3d42d8,_0x4cffaa){_0x3d42d8=_0x3d42d8-0x0;var _0x27fc41=_0xb248[_0x3d42d8];return _0x27fc41;};'use strict';var Sequelize=require(_0x8b24('0x0'));module['exports']={'closed':{'type':Sequelize[_0x8b24('0x1')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x8b24('0x2')]},'ratingType':{'type':Sequelize[_0x8b24('0x3')](_0x8b24('0x4'),'thumb'),'defaultValue':_0x8b24('0x4')},'ratingMessage':{'type':Sequelize[_0x8b24('0x5')]},'pathTranscript':{'type':Sequelize['TEXT']},'mailTranscript':{'type':Sequelize[_0x8b24('0x6')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x8b24('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x8b24('0x6')]},'thirdDisposition':{'type':Sequelize[_0x8b24('0x6')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x8b24('0x6')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0x8b24('0x6')]},'osVersion':{'type':Sequelize[_0x8b24('0x6')]},'deviceModel':{'type':Sequelize[_0x8b24('0x6')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0x8b24('0x6')]},'referer':{'type':Sequelize[_0x8b24('0x5')]},'customerIp':{'type':Sequelize[_0x8b24('0x6')]},'formData':{'type':Sequelize[_0x8b24('0x5')](_0x8b24('0x8'))},'read1stAt':{'type':Sequelize[_0x8b24('0x7')]},'lastMsgAt':{'type':Sequelize[_0x8b24('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x8b24('0x3')]('in',_0x8b24('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x8b24('0x6')]},'customerPort':{'type':Sequelize[_0x8b24('0x6')]},'vidaooSessionId':{'type':Sequelize[_0x8b24('0x5')]},'autoreplyExecuted':{'type':Sequelize[_0x8b24('0x1')],'defaultValue':![]}};
\ No newline at end of file
index d05cf88..573b99f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7880=['parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','getFullTextValue','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','ChatWebsiteId','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','agent','sequelize','toString','keyBy','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','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','show','params','include','options','create','destroy','describe','createVidaooSession','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','update','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','basename','filename','mimetype','Attachment','attachmentDownload','Unauthorized','findOne','attachId','join','root','server/files/attachments/','offline-chat/','download','close','mailTranscript','transcript-%s.txt','now','Messages','%s%d','agentAlias','customer','format','website_alias','System','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','appendFileSync','MailServerOut','Smtp','service','host','port','secure','pass','SendMail','\x22%s\x22\x20<%s>','email','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','nolimit','pick','YYYY-MM-DD\x20HH:mm:ss','includeAll','getMyMessages','secret','includeAgent','findAll','addTags','spread','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','Owner','get','mkdirSync','Account','closedAt','browserName','customerPort','N.A.','tail','createReadStream','createWriteStream','direction','renderFile','downloadInteraction.ejs','transcript-','.pdf','Chat','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','http','client','then','info','request\x20sent','debug','error','code','ChatInteraction,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','name','send','merge','contact','interaction','account','fullname','Tags','TagIds','split','forEach','push','index','map','ChatInteraction','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','select','field','color','from','tools_tags','u.id','ui.ChatInteractionId','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','chat_websites','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','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','ContactId','buildExpression','text','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','start','body','some','isEmpty','concat','createdAt'];(function(_0x50be94,_0x10fb47){var _0x32863a=function(_0xfadec8){while(--_0xfadec8){_0x50be94['push'](_0x50be94['shift']());}};_0x32863a(++_0x10fb47);}(_0x7880,0x1f4));var _0x0788=function(_0xb85fd5,_0x3362ae){_0xb85fd5=_0xb85fd5-0x0;var _0x34228e=_0x7880[_0xb85fd5];return _0x34228e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0788('0x0'));var zipdir=require(_0x0788('0x1'));var jsonpatch=require(_0x0788('0x2'));var rp=require(_0x0788('0x3'));var moment=require(_0x0788('0x4'));var BPromise=require(_0x0788('0x5'));var Mustache=require('mustache');var util=require(_0x0788('0x6'));var path=require(_0x0788('0x7'));var sox=require(_0x0788('0x8'));var csv=require(_0x0788('0x9'));var ejs=require(_0x0788('0xa'));var fs=require('fs');var fs_extra=require(_0x0788('0xb'));var _=require(_0x0788('0xc'));var squel=require(_0x0788('0xd'));var crypto=require(_0x0788('0xe'));var jsforce=require(_0x0788('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x0788('0x9'));var querystring=require('querystring');var Papa=require(_0x0788('0x10'));var Redis=require('ioredis');var authService=require(_0x0788('0x11'));var qs=require(_0x0788('0x12'));var as=require(_0x0788('0x13'));var pdf=require(_0x0788('0x14'));var hardwareService=require(_0x0788('0x15'));var logger=require('../../config/logger')(_0x0788('0x16'));var utils=require(_0x0788('0x17'));var config=require(_0x0788('0x18'));var licenseUtil=require(_0x0788('0x19'));var db=require(_0x0788('0x1a'))['db'];config[_0x0788('0x1b')]=_[_0x0788('0x1c')](config['redis'],{'host':_0x0788('0x1d'),'port':0x18eb});var socket=require(_0x0788('0x1e'))(new Redis(config[_0x0788('0x1b')]));require(_0x0788('0x1f'))['register'](socket);var jayson=require(_0x0788('0x20'));var client=jayson['client'][_0x0788('0x21')]({'port':0x232b});var client9004=jayson[_0x0788('0x22')][_0x0788('0x21')]({'port':0x232c});function respondWithRpcPromise(_0xb406fb,_0x2ddd1a,_0x430e34,_0x5e1a29){return new BPromise(function(_0x573822,_0x17d805){var _0x461d9d=_0x5e1a29||client;return _0x461d9d['request'](_0xb406fb,_0x430e34)[_0x0788('0x23')](function(_0x415f19){logger[_0x0788('0x24')]('ChatInteraction,\x20%s,\x20%s',_0x2ddd1a,_0x0788('0x25'));logger[_0x0788('0x26')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x2ddd1a,_0x0788('0x25'),JSON['stringify'](_0x415f19));if(_0x415f19[_0x0788('0x27')]){if(_0x415f19['error'][_0x0788('0x28')]===0x1f4){logger[_0x0788('0x27')](_0x0788('0x29'),_0x2ddd1a,_0x415f19[_0x0788('0x27')][_0x0788('0x2a')]);return _0x17d805(_0x415f19['error']['message']);}logger[_0x0788('0x27')](_0x0788('0x29'),_0x2ddd1a,_0x415f19[_0x0788('0x27')][_0x0788('0x2a')]);return _0x573822(_0x415f19['error']['message']);}else{logger[_0x0788('0x24')](_0x0788('0x29'),_0x2ddd1a,_0x0788('0x25'));_0x573822(_0x415f19['result']['message']);}})[_0x0788('0x2b')](function(_0xa1f7dc){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x2ddd1a,_0xa1f7dc);_0x17d805(_0xa1f7dc);});});}function respondWithStatusCode(_0x5a54a5,_0x44798c){_0x44798c=_0x44798c||0xcc;return function(_0x57fda1){if(_0x57fda1){return _0x5a54a5[_0x0788('0x2c')](_0x44798c);}return _0x5a54a5[_0x0788('0x2d')](_0x44798c)[_0x0788('0x2e')]();};}function respondWithResult(_0x18fc0e,_0xf9ba32){_0xf9ba32=_0xf9ba32||0xc8;return function(_0xb2f4a5){if(_0xb2f4a5){return _0x18fc0e[_0x0788('0x2d')](_0xf9ba32)[_0x0788('0x2f')](_0xb2f4a5);}};}function respondWithFilteredResult(_0x5b7594,_0x5a5178){return function(_0x3c5246){if(_0x3c5246){var _0x40d345=typeof _0x5a5178['offset']==='undefined'&&typeof _0x5a5178[_0x0788('0x30')]===_0x0788('0x31');var _0x20fcd8=_0x3c5246[_0x0788('0x32')];var _0x44cbfb=_0x40d345?0x0:_0x5a5178[_0x0788('0x33')];var _0x327d67=_0x40d345?_0x3c5246[_0x0788('0x32')]:_0x5a5178[_0x0788('0x33')]+_0x5a5178[_0x0788('0x30')];var _0x5ec0ed;if(_0x327d67>=_0x20fcd8){_0x327d67=_0x20fcd8;_0x5ec0ed=0xc8;}else{_0x5ec0ed=0xce;}_0x5b7594[_0x0788('0x2d')](_0x5ec0ed);return _0x5b7594[_0x0788('0x34')](_0x0788('0x35'),_0x44cbfb+'-'+_0x327d67+'/'+_0x20fcd8)[_0x0788('0x2f')](_0x3c5246);}return null;};}function patchUpdates(_0xce4534){return function(_0x458193){try{jsonpatch[_0x0788('0x36')](_0x458193,_0xce4534,!![]);}catch(_0x15d67a){return BPromise[_0x0788('0x37')](_0x15d67a);}return _0x458193[_0x0788('0x38')]();};}function saveUpdates(_0x4fa055,_0x4ae132){return function(_0x5947d3){if(_0x5947d3){return _0x5947d3['update'](_0x4fa055)['then'](function(_0x586a06){return _0x586a06;});}return null;};}function removeEntity(_0x208a89,_0x38a4ae){return function(_0x2130e3){if(_0x2130e3){return _0x2130e3['destroy']()[_0x0788('0x23')](function(){_0x208a89[_0x0788('0x2d')](0xcc)[_0x0788('0x2e')]();});}};}function handleEntityNotFound(_0xaea11d,_0x57c4d8){return function(_0x2ed940){if(!_0x2ed940){_0xaea11d['sendStatus'](0x194);}return _0x2ed940;};}function handleError(_0x322465,_0x4fcde3){_0x4fcde3=_0x4fcde3||0x1f4;return function(_0x9d1edb){logger[_0x0788('0x27')](_0x9d1edb['stack']);if(_0x9d1edb[_0x0788('0x39')]){delete _0x9d1edb[_0x0788('0x39')];}_0x322465['status'](_0x4fcde3)[_0x0788('0x3a')](_0x9d1edb);};}function getMustacheRender(_0x5eb693,_0x295024){return Mustache['render'](_0x5eb693,_[_0x0788('0x3b')](_0x295024['body'],{'contact':_0x295024[_0x0788('0x3c')],'message':_0x295024['message'],'agent':_0x295024['agent'],'interaction':_0x295024[_0x0788('0x3d')],'account':_0x295024[_0x0788('0x3e')]}))||'';}function getInteractionUsers(_0x2e48cf,_0x2d17b0){return new BPromise(function(_0x8cfffc,_0x53da74){try{if(_0x2d17b0[_0x2e48cf['id']]){_0x2e48cf['Users']=_['map'](_0x2d17b0[_0x2e48cf['id']],function(_0x4d539a){return{'id':_0x4d539a['id'],'fullname':_0x4d539a[_0x0788('0x3f')]};});}}catch(_0x1202c4){_0x53da74(_0x1202c4);}_0x8cfffc(_0x2e48cf);});}function getInteractionTags(_0x45b247,_0x358a22){return new BPromise(function(_0x362c49,_0x5993ad){try{if(_0x45b247['TagIds']){_0x45b247[_0x0788('0x40')]=[];_0x45b247[_0x0788('0x41')][_0x0788('0x42')](',')[_0x0788('0x43')](function(_0x236b63){_0x45b247[_0x0788('0x40')][_0x0788('0x44')](_0x358a22[_0x236b63]);});}delete _0x45b247[_0x0788('0x41')];}catch(_0x347984){_0x5993ad(_0x347984);}_0x362c49(_0x45b247);});}function updateChatInteraction(_0x50e8f5,_0x5581e6,_0x441aec){return new BPromise(function(_0x1d579d,_0x9e8ee){return getInteractionUsers(_0x50e8f5,_0x441aec)['then'](function(_0x5ab353){return getInteractionTags(_0x5ab353,_0x5581e6);})['then'](function(_0x172424){_0x1d579d(_0x172424);})[_0x0788('0x2b')](function(_0x25501b){_0x9e8ee(_0x25501b);});});}exports[_0x0788('0x45')]=function(_0x2737d8,_0x1928f3){var _0x1ab634={},_0x15b90c={},_0x4bd0d9={'count':0x0,'rows':[]};var _0x15c618=_[_0x0788('0x46')](db[_0x0788('0x47')][_0x0788('0x48')],function(_0x58eb04){return{'name':_0x58eb04[_0x0788('0x49')],'type':_0x58eb04[_0x0788('0x4a')]['key']};});_0x15b90c['model']=_['map'](_0x15c618,_0x0788('0x39'));_0x15b90c['query']=_[_0x0788('0x4b')](_0x2737d8[_0x0788('0x4c')]);_0x15b90c[_0x0788('0x4d')]=_[_0x0788('0x4e')](_0x15b90c[_0x0788('0x4f')],_0x15b90c[_0x0788('0x4c')]);_0x1ab634[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x15b90c['model'],qs['fields'](_0x2737d8[_0x0788('0x4c')][_0x0788('0x51')]));_0x1ab634[_0x0788('0x50')]=_0x1ab634['attributes'][_0x0788('0x52')]?_0x1ab634[_0x0788('0x50')]:_0x15b90c[_0x0788('0x4f')];if(!_0x2737d8[_0x0788('0x4c')][_0x0788('0x53')]('nolimit')){_0x1ab634['limit']=qs[_0x0788('0x30')](_0x2737d8[_0x0788('0x4c')]['limit']);_0x1ab634[_0x0788('0x33')]=qs['offset'](_0x2737d8[_0x0788('0x4c')][_0x0788('0x33')]);}_0x1ab634[_0x0788('0x54')]=qs[_0x0788('0x55')](_0x2737d8[_0x0788('0x4c')][_0x0788('0x55')]);_0x1ab634[_0x0788('0x56')]=qs[_0x0788('0x4d')](_['pick'](_0x2737d8[_0x0788('0x4c')],_0x15b90c[_0x0788('0x4d')]),_0x15c618);var _0x3f2f1b=[];var _0x5ef557=squel[_0x0788('0x57')]()[_0x0788('0x58')]('id')['field'](_0x0788('0x39'))[_0x0788('0x58')](_0x0788('0x59'))[_0x0788('0x5a')](_0x0788('0x5b'));var _0x347cc8=squel['select']()['field'](_0x0788('0x5c'))[_0x0788('0x58')]('u.fullname')[_0x0788('0x58')](_0x0788('0x5d'))[_0x0788('0x5a')](_0x0788('0x5e'),'ui')[_0x0788('0x5f')](_0x0788('0x60'),'u',_0x0788('0x61'));var _0xeedd30=squel[_0x0788('0x57')]()[_0x0788('0x5a')](_0x0788('0x62'),'i')[_0x0788('0x5f')]('cm_contacts','c',_0x0788('0x63'))[_0x0788('0x5f')](_0x0788('0x60'),'o','o.id\x20=\x20i.UserId')[_0x0788('0x5f')](_0x0788('0x64'),'a','a.id\x20=\x20i.ChatWebsiteId')['left_join'](_0x0788('0x65'),'me',_0x0788('0x66'))[_0x0788('0x5f')](_0x0788('0x67'),'it',_0x0788('0x68'))[_0x0788('0x5f')]('tools_tags','t',_0x0788('0x69'));var _0x3be076=squel[_0x0788('0x6a')]();var _0x47be71=[];var _0x533f71=squel[_0x0788('0x6a')]();var _0x5419d9;if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x6b')]){_0x5419d9=as[_0x0788('0x6c')](_0x2737d8[_0x0788('0x4c')][_0x0788('0x6b')]);var _0x348d25=_0x5419d9[_0x0788('0x6d')];for(var _0x29c912=0x0;_0x29c912<_0x5419d9[_0x0788('0x6e')][_0x0788('0x52')];_0x29c912++){var _0x59fcbc=_0x5419d9[_0x0788('0x6e')][_0x29c912];var _0x446170='i';var _0x602e3b=_[_0x0788('0x6f')](_0x15c618,['name',_0x59fcbc[_0x0788('0x58')]]);if(!_0x602e3b){switch(_0x59fcbc[_0x0788('0x58')]){case _0x0788('0x70'):if(_0x59fcbc[_0x0788('0x71')]==0x1){_0xeedd30[_0x0788('0x72')]('`'+_0x59fcbc['field']+_0x0788('0x73'));}else{_0xeedd30['having']('`'+_0x59fcbc[_0x0788('0x58')]+_0x0788('0x74'));}break;case _0x0788('0x75'):if(_0x59fcbc[_0x0788('0x76')]===_0x0788('0x77')){if(_0x59fcbc[_0x0788('0x71')][_0x0788('0x42')]('\x20')[_0x0788('0x52')]>0x1){_0x3be076[_0x348d25](_0x0788('0x78'),qs['getFullTextValue'](_0x59fcbc[_0x0788('0x71')]),null);}else{var _0x2dea6c='%'+_0x59fcbc[_0x0788('0x71')]+'%';_0x3be076[_0x348d25]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2dea6c,_0x2dea6c,_0x2dea6c);}}else{_0x602e3b=_['find'](_0x15c618,[_0x0788('0x39'),_0x0788('0x79')]);_0x59fcbc[_0x0788('0x58')]='ContactId';_0x35c612=as[_0x0788('0x7a')](_0x446170,_0x602e3b[_0x0788('0x4a')],_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612[_0x0788('0x71')]['start'],_0x35c612['value']['end']);}break;case _0x0788('0x7c'):var _0x2a55f2=_0x59fcbc[_0x0788('0x71')]['split'](',')['map'](function(_0xaa2d4d){return Number(_0xaa2d4d);});_0x2a55f2['forEach'](function(_0x955bfa){_0x533f71['or'](_0x0788('0x7d'),'%,'+_0x955bfa+',%');});_0x47be71=_[_0x0788('0x7e')](_0x47be71,_0x2a55f2);break;case _0x0788('0x7f'):if(_0x59fcbc[_0x0788('0x76')]===_0x0788('0x77')){_0x3be076[_0x348d25](_0x0788('0x80'),'%'+_0x59fcbc[_0x0788('0x71')]+'%',null);}else{_0x602e3b=_[_0x0788('0x6f')](_0x15c618,[_0x0788('0x39'),'UserId']);_0x59fcbc[_0x0788('0x58')]=_0x0788('0x81');_0x35c612=as['buildExpression'](_0x446170,_0x602e3b['type'],_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612[_0x0788('0x71')][_0x0788('0x82')],_0x35c612[_0x0788('0x71')][_0x0788('0x2e')]);}break;case _0x0788('0x83'):_0x35c612=as['buildExpression']('me',null,_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612[_0x0788('0x71')][_0x0788('0x82')],_0x35c612[_0x0788('0x71')]['end']);break;}}else{var _0x35c612=as[_0x0788('0x7a')](_0x446170,_0x602e3b[_0x0788('0x4a')],_0x59fcbc);_0x3be076[_0x348d25](_0x35c612[_0x0788('0x7b')],_0x35c612['value']['start'],_0x35c612[_0x0788('0x71')][_0x0788('0x2e')]);}}}else{var _0x5513f7=_(_0x2737d8[_0x0788('0x4c')])[_0x0788('0x4b')]()[_0x0788('0x46')](function(_0x2b10fe){return _[_0x0788('0x84')](_0x15c618,[_0x0788('0x39'),_0x2b10fe])?_0x2b10fe:undefined;})['compact']()[_0x0788('0x71')]();if(!_[_0x0788('0x85')](_0x5513f7)){_0x5513f7[_0x0788('0x43')](function(_0x515dd8){if(_0x515dd8==='ChatWebsiteId'){_0xeedd30[_0x0788('0x56')]('i.ChatWebsiteId\x20IN\x20?',[][_0x0788('0x86')](_0x2737d8[_0x0788('0x4c')][_0x515dd8]));}else if(_0x515dd8===_0x0788('0x87')){var _0xa4b3f8=JSON[_0x0788('0x88')](_0x2737d8[_0x0788('0x4c')][_0x515dd8])[_0x0788('0x89')];var _0x216ea9=JSON[_0x0788('0x88')](_0x2737d8['query'][_0x515dd8])[_0x0788('0x8a')];_0xeedd30[_0x0788('0x56')](_0x0788('0x8b'),_0xa4b3f8,_0x216ea9);}else{if(_0x2737d8['query'][_0x515dd8]===_0x0788('0x8c')){_0xeedd30[_0x0788('0x56')]('i.'+_0x515dd8+_0x0788('0x8d'));}else{_0xeedd30['where']('i.'+_0x515dd8+_0x0788('0x8e'),_0x2737d8[_0x0788('0x4c')][_0x515dd8]);}}});}if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x8f')]){if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x8f')]==0x1){_0xeedd30[_0x0788('0x72')](_0x0788('0x90'));}else{_0xeedd30[_0x0788('0x72')]('`unreadMessages`\x20>\x200');}}if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x91')]){_0x47be71=_[_0x0788('0x92')](_0x2737d8[_0x0788('0x4c')][_0x0788('0x91')])?_0x2737d8['query'][_0x0788('0x91')]:new Array(_0x2737d8[_0x0788('0x4c')][_0x0788('0x91')]);_0x47be71['forEach'](function(_0x1788d1){_0x533f71['or'](_0x0788('0x7d'),'%,'+_0x1788d1+',%');});}if(_0x2737d8[_0x0788('0x4c')][_0x0788('0x93')]){var _0x2b74df=_0x2737d8['query'][_0x0788('0x93')][_0x0788('0x94')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x0788('0x95')](_0x2b74df)){_0x3be076['or'](_0x0788('0x96'),_0x2b74df+'%');}else{_0x3be076['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x0788('0x97')](_0x2b74df))['or'](_0x0788('0x98'),_0x2b74df+'%');}}}_0xeedd30[_0x0788('0x56')](_0x3be076);_0xeedd30['group'](_0x0788('0x99'));var _0x42c537={'type':db[_0x0788('0x9a')]['QueryTypes'][_0x0788('0x9b')],'raw':!![]};var _0x1b3046=_0xeedd30[_0x0788('0x9c')]();_0x1b3046[_0x0788('0x58')](_0x0788('0x99'));_0x1b3046[_0x0788('0x58')](_0x0788('0x9d'),_0x0788('0x70'));if(_0x1ab634['order']){_0x1ab634[_0x0788('0x54')][_0x0788('0x43')](function(_0x121f1d){var _0x31c921=_0x121f1d[0x0]==='contactName'?_0x121f1d[0x0]:'i.'+_0x121f1d[0x0];_0xeedd30['order'](_0x31c921,_0x121f1d[0x1]===_0x0788('0x9e')?![]:!![]);});}if(!_[_0x0788('0x85')](_0x47be71)){_0xeedd30['having'](_0x533f71);_0x1b3046[_0x0788('0x56')](_0x0788('0x9f'),_0x47be71);}BPromise[_0x0788('0xa0')]()['then'](function(){if(!_0x5419d9){if(_0x2737d8['query'][_0x0788('0xa1')])return;_0x1b3046[_0x0788('0x56')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0xeedd30['where']('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x2737d8[_0x0788('0xa2')][_0x0788('0xa3')]!=='agent')return;return _0x2737d8[_0x0788('0xa2')][_0x0788('0xa4')]({'attributes':['id'],'raw':!![]})[_0x0788('0x23')](function(_0x41fe7a){if(_[_0x0788('0x85')](_0x41fe7a)){_0x1b3046['where'](_0x0788('0xa5'));_0xeedd30['where'](_0x0788('0xa5'));}else{_0x1b3046['where'](_0x0788('0xa6'),_[_0x0788('0x46')](_0x41fe7a,'id'));_0xeedd30[_0x0788('0x56')](_0x0788('0xa6'),_[_0x0788('0x46')](_0x41fe7a,'id'));}});})[_0x0788('0x23')](function(){if(_0x2737d8[_0x0788('0xa2')][_0x0788('0xa3')]===_0x0788('0xa7')&&!_0x5419d9&&!_0x2737d8[_0x0788('0x4c')][_0x0788('0xa1')])return[];return db[_0x0788('0xa8')][_0x0788('0x4c')](_0x1b3046['toString'](),_0x42c537);})['then'](function(_0x50363e){_0x4bd0d9[_0x0788('0x32')]=_0x50363e[_0x0788('0x52')];if(_0x4bd0d9[_0x0788('0x32')]===0x0)return[];return db[_0x0788('0xa8')][_0x0788('0x4c')](_0x5ef557[_0x0788('0xa9')](),_0x42c537)[_0x0788('0x23')](function(_0x16838d){_0x3f2f1b=_[_0x0788('0xaa')](_0x16838d,'id');_0x42c537=_[_0x0788('0x3b')](_0x42c537,{'model':db[_0x0788('0x47')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x2737d8['query']['fields']){_0x1ab634[_0x0788('0x50')][_0x0788('0x43')](function(_0x104a70){_0xeedd30[_0x0788('0x58')]('i.'+_0x104a70);});}else{_0xeedd30[_0x0788('0x58')](_0x0788('0x9d'),_0x0788('0x70'));_0xeedd30[_0x0788('0x58')]('a.key','Account.key');_0xeedd30[_0x0788('0x58')](_0x0788('0xab'),_0x0788('0xac'));_0xeedd30[_0x0788('0x58')](_0x0788('0xad'),_0x0788('0xae'));_0xeedd30['field'](_0x0788('0xaf'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb0'),_0x0788('0xb1'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb2'),_0x0788('0xb3'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb4'),'Contact.email');_0xeedd30[_0x0788('0x58')](_0x0788('0xb5'),_0x0788('0xb6'));_0xeedd30[_0x0788('0x58')](_0x0788('0xb7'),_0x0788('0xb8'));_0xeedd30['field'](_0x0788('0xb9'),_0x0788('0xba'));_0xeedd30[_0x0788('0x58')](_0x0788('0xbb'),_0x0788('0xbc'));_0xeedd30[_0x0788('0x58')](_0x0788('0xbd'),_0x0788('0xbe'));_0xeedd30[_0x0788('0x58')](_0x0788('0xbf'),'TagIds');}if(_0x1ab634[_0x0788('0x30')])_0xeedd30['limit'](_0x1ab634[_0x0788('0x30')]);if(_0x1ab634['offset'])_0xeedd30[_0x0788('0x33')](_0x1ab634['offset']);return db[_0x0788('0xa8')][_0x0788('0x4c')](_0xeedd30[_0x0788('0xa9')](),_0x42c537);})[_0x0788('0x23')](function(_0x5242eb){if(_0x5242eb[_0x0788('0x52')]>0x0)_0x347cc8[_0x0788('0x56')](_0x0788('0xc0'),_['map'](_0x5242eb,'id'));return db[_0x0788('0xa8')][_0x0788('0x4c')](_0x347cc8['toString'](),_0x42c537)[_0x0788('0x23')](function(_0x4645aa){var _0x37e9a9=_[_0x0788('0xc1')](_0x4645aa,_0x0788('0xc2'));var _0xab471b=[];_0x5242eb[_0x0788('0x43')](function(_0x563533){_0xab471b[_0x0788('0x44')](updateChatInteraction(_0x563533,_0x3f2f1b,_0x37e9a9));});return BPromise[_0x0788('0xc3')](_0xab471b);});});})[_0x0788('0x23')](function(_0x3f3e06){_0x4bd0d9[_0x0788('0xc4')]=_0x3f3e06;return _0x4bd0d9;})[_0x0788('0x23')](respondWithFilteredResult(_0x1928f3,_0x1ab634))[_0x0788('0x2b')](handleError(_0x1928f3,null));};exports[_0x0788('0xc5')]=function(_0x5761b1,_0x5130c4){var _0x26233b={'raw':![],'where':{'id':_0x5761b1[_0x0788('0xc6')]['id']}},_0x42f6df={};_0x42f6df[_0x0788('0x4f')]=_[_0x0788('0x4b')](db[_0x0788('0x47')][_0x0788('0x48')]);_0x42f6df['query']=_[_0x0788('0x4b')](_0x5761b1['query']);_0x42f6df['filters']=_[_0x0788('0x4e')](_0x42f6df[_0x0788('0x4f')],_0x42f6df['query']);_0x26233b[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x42f6df[_0x0788('0x4f')],qs[_0x0788('0x51')](_0x5761b1[_0x0788('0x4c')][_0x0788('0x51')]));_0x26233b['attributes']=_0x26233b[_0x0788('0x50')][_0x0788('0x52')]?_0x26233b['attributes']:_0x42f6df[_0x0788('0x4f')];if(_0x5761b1[_0x0788('0x4c')]['includeAll']){_0x26233b[_0x0788('0xc7')]=[{'all':!![]}];}_0x26233b=_[_0x0788('0x3b')]({},_0x26233b,_0x5761b1[_0x0788('0xc8')]);return db[_0x0788('0x47')][_0x0788('0x6f')](_0x26233b)[_0x0788('0x23')](handleEntityNotFound(_0x5130c4,null))[_0x0788('0x23')](respondWithResult(_0x5130c4,null))['catch'](handleError(_0x5130c4,null));};exports[_0x0788('0xc9')]=function(_0x2e0529,_0x1f9944){return db[_0x0788('0x47')]['create'](_0x2e0529[_0x0788('0x83')],{})[_0x0788('0x23')](respondWithResult(_0x1f9944,0xc9))['catch'](handleError(_0x1f9944,null));};exports['update']=function(_0x691225,_0x15a70b){if(_0x691225[_0x0788('0x83')]['id']){delete _0x691225[_0x0788('0x83')]['id'];}return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x691225['params']['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x15a70b,null))[_0x0788('0x23')](saveUpdates(_0x691225[_0x0788('0x83')],null))[_0x0788('0x23')](respondWithResult(_0x15a70b,null))[_0x0788('0x2b')](handleError(_0x15a70b,null));};exports[_0x0788('0xca')]=function(_0xc5e64a,_0x3539d4){return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0xc5e64a[_0x0788('0xc6')]['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x3539d4,null))[_0x0788('0x23')](removeEntity(_0x3539d4,null))[_0x0788('0x2b')](handleError(_0x3539d4,null));};exports[_0x0788('0xcb')]=function(_0x150a05,_0x1e0fb7){return db['ChatInteraction'][_0x0788('0xcb')]()[_0x0788('0x23')](respondWithResult(_0x1e0fb7,null))[_0x0788('0x2b')](handleError(_0x1e0fb7,null));};exports[_0x0788('0xcc')]=function(_0x57b44e,_0x191e15){var _0x5d0919=_0x57b44e[_0x0788('0xc6')]['id'];var _0x563e4c;var _0x51da2c;var _0x34a12a;return db[_0x0788('0x47')]['findOne']({'where':{'id':_0x5d0919}})[_0x0788('0x23')](function(_0x522e02){_0x563e4c=_0x522e02;return db[_0x0788('0xcd')]['findOne']({'where':{'id':_0x522e02[_0x0788('0xa1')]},'attributes':['id',_0x0788('0xce'),_0x0788('0xcf'),_0x0788('0xd0'),_0x0788('0xd1'),_0x0788('0xd2')],'raw':!![]});})['then'](function(_0x473491){if(_0x473491&&_0x473491['vidaooApiKey']&&_0x473491[_0x0788('0xcf')]){_0x51da2c=_0x473491;var _0x1222f8={'interaction':{'id':_0x5d0919},'agent':{'id':_0x57b44e['user']['id'],'name':_0x57b44e['user']['name'],'fullname':_0x57b44e[_0x0788('0xa2')]['fullname'],'email':_0x57b44e['user']['email']},'contact':_0x57b44e['body']['contact'],'account':_0x57b44e['body'][_0x0788('0x3e')]};var _0x3c2aa3={'rejectUnauthorized':![],'method':'POST','url':_0x0788('0xd3'),'headers':{'X-APIKEY':_0x473491['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x57b44e[_0x0788('0xa2')]['email']],'buttons':null,'topic':_0x51da2c[_0x0788('0xd0')],'note':_[_0x0788('0xd4')](_0x51da2c[_0x0788('0xd1')])?null:getMustacheRender(_0x51da2c[_0x0788('0xd1')],_0x1222f8),'metadata':null},'redirect':_0x0788('0xd5'),'json':!![]};try{if(!_[_0x0788('0xd4')](_0x51da2c[_0x0788('0xd2')])){var _0x37439f=getMustacheRender(_0x51da2c[_0x0788('0xd2')],_0x1222f8);var _0xf87649=JSON['parse'](_0x37439f);_0x3c2aa3[_0x0788('0x83')]['metadata']=_0xf87649;}}catch(_0x3bd7f3){throw new db['Sequelize']['ValidationError'](_0x0788('0xd6'));}return rp(_0x3c2aa3);}else{throw new db[(_0x0788('0x9a'))][(_0x0788('0xd7'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0x0788('0x23')](function(_0x1b52f6){_0x34a12a=_0x1b52f6;if(_0x34a12a['id']){var _0x5be647={'body':_0x34a12a['join_url'],'ChatWebsiteId':_0x51da2c['id'],'ChatInteractionId':_0x563e4c['id'],'direction':_0x0788('0xd8'),'UserId':_0x57b44e[_0x0788('0xa2')]['id']};return db[_0x0788('0xd9')]['create'](_0x5be647,{});}else{throw new db['Sequelize'][(_0x0788('0xd7'))](_0x0788('0xda'));}})[_0x0788('0x23')](function(){return _0x563e4c[_0x0788('0xdb')]({'vidaooSessionId':_0x34a12a['id']});})[_0x0788('0x23')](respondWithResult(_0x191e15,null))[_0x0788('0x2b')](handleError(_0x191e15,null));};exports[_0x0788('0xdc')]=function(_0x252780,_0x3d3272){if(_0x252780['body']['id']){delete _0x252780[_0x0788('0x83')]['id'];}return db['ChatInteraction'][_0x0788('0x6f')]({'where':{'id':_0x252780[_0x0788('0xc6')]['id']},'include':[{'model':db[_0x0788('0xdd')],'as':_0x0788('0x75')}]})[_0x0788('0x23')](handleEntityNotFound(_0x3d3272,null))['then'](saveUpdates(_0x252780[_0x0788('0x83')],null))[_0x0788('0x23')](respondWithResult(_0x3d3272,null))['catch'](handleError(_0x3d3272,null));};exports[_0x0788('0xde')]=function(_0x881d27,_0x47ce3c,_0x1c9b6f){if(_0x881d27['body']['id']){delete _0x881d27[_0x0788('0x83')]['id'];}return db[_0x0788('0x47')]['find']({'where':{'id':_0x881d27[_0x0788('0xc6')]['id']}})[_0x0788('0x23')](function(_0x207b55){if(!_0x207b55){logger[_0x0788('0x27')](_0x0788('0xdf'),_0x0788('0xde'),0x194,_0x0788('0xe0'));_0x47ce3c[_0x0788('0x2c')](0x194);}else{if(_0x207b55['UserId']){throw new db[(_0x0788('0x9a'))][(_0x0788('0xd7'))](_0x0788('0xe1'));}}return _0x207b55;})['then'](function(_0x5ac0bc){if(_0x5ac0bc){return _0x5ac0bc[_0x0788('0xe2')]({'closed':_0x881d27[_0x0788('0x83')][_0x0788('0xe3')],'disposition':_0x881d27[_0x0788('0x83')][_0x0788('0xe4')]})[_0x0788('0x23')](function(_0x48e56d){return _0x48e56d;});}})[_0x0788('0x23')](function(_0x227eaf){return respondWithRpcPromise(_0x0788('0xe5'),_0x0788('0xde'),_0x881d27[_0x0788('0x83')],client9004);})[_0x0788('0x23')](respondWithResult(_0x47ce3c,null))[_0x0788('0x2b')](handleError(_0x47ce3c,null));};exports[_0x0788('0xe6')]=function(_0x1fc335,_0x27c428,_0x1ce4f2){_0x1fc335[_0x0788('0x83')][_0x0788('0x39')]=_0x1fc335[_0x0788('0xe7')][_0x0788('0xe8')];_0x1fc335[_0x0788('0x83')][_0x0788('0xe9')]=_0x1fc335[_0x0788('0xe7')][_0x0788('0xea')];_0x1fc335[_0x0788('0x83')][_0x0788('0x4a')]=_0x1fc335['file'][_0x0788('0xeb')];return db[_0x0788('0xec')][_0x0788('0xc9')](_0x1fc335[_0x0788('0x83')])['then'](respondWithResult(_0x27c428,0xc9))[_0x0788('0x2b')](handleError(_0x27c428,null));};exports[_0x0788('0xed')]=function(_0x5eb3f1,_0xb63553,_0x4a34e2){return db['ChatInteraction']['findOne']({'where':{'id':_0x5eb3f1['params']['id']},'raw':!![]})[_0x0788('0x23')](handleEntityNotFound(_0xb63553,null))[_0x0788('0x23')](function(_0x4cc536){if(_0x4cc536){if(_0x4cc536[_0x0788('0xe3')]){return _0xb63553[_0x0788('0x2d')](0x193)[_0x0788('0x2f')]({'status':0x193,'message':_0x0788('0xee')});}return db[_0x0788('0xec')][_0x0788('0xef')]({'where':{'id':_0x5eb3f1[_0x0788('0x4c')][_0x0788('0xf0')]},'raw':!![]})[_0x0788('0x23')](handleEntityNotFound(_0xb63553,null));}})['then'](function(_0x2047bc){if(_0x2047bc){var _0x38fd71=_0x2047bc['ChatOfflineMessageId']!==null;var _0x224ef9=path[_0x0788('0xf1')](config[_0x0788('0xf2')],_0x0788('0xf3'));if(_0x38fd71){_0x224ef9=path[_0x0788('0xf1')](_0x224ef9,_0x0788('0xf4'));}var _0x2399b9=path[_0x0788('0xf1')](_0x224ef9,_0x2047bc[_0x0788('0xe9')]);return _0xb63553[_0x0788('0xf5')](_0x2399b9);}})[_0x0788('0x2b')](handleError(_0xb63553,null));};exports[_0x0788('0xf6')]=function(_0x31c746,_0x4f696c){var _0x11de9c=null;var _0xf690e0=null;var _0x4a492c=null;var _0x523faa=null;if(_0x31c746[_0x0788('0x83')]['id']){delete _0x31c746[_0x0788('0x83')]['id'];}if(_0x31c746['body'][_0x0788('0xf7')]){_0x523faa=path[_0x0788('0xf1')](config[_0x0788('0xf2')],'server/files/chat/upload/',util['format'](_0x0788('0xf8'),Date[_0x0788('0xf9')]()));_0x31c746['body']['pathTranscript']=_0x523faa;}return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x31c746['params']['id']},'include':[{'model':db['ChatMessage'],'as':_0x0788('0xfa'),'include':[{'model':db[_0x0788('0x7f')],'as':'User'}]}]})[_0x0788('0x23')](handleEntityNotFound(_0x4f696c,null))[_0x0788('0x23')](saveUpdates(_0x31c746['body'],null))[_0x0788('0x23')](function(_0x21be45){if(_0x21be45){_0x11de9c=_0x21be45;return db[_0x0788('0xcd')][_0x0788('0x6f')]({'where':{'id':_0x11de9c[_0x0788('0xa1')]}});}})['then'](function(_0x36acad){if(_0x36acad){_0x4a492c=_0x36acad;return db[_0x0788('0xdd')][_0x0788('0x6f')]({'where':{'id':_0x11de9c[_0x0788('0x79')]}});}})[_0x0788('0x23')](function(_0x569b4d){if(_0x569b4d){_0xf690e0=_0x569b4d;if(_0x523faa){var _0x31ffc7=null;for(var _0x59aece=0x1;_0x59aece<_0x11de9c['Messages'][_0x0788('0x52')];++_0x59aece){_0x31ffc7=_0x11de9c[_0x0788('0xfa')][_0x59aece];var _0x3787d3=_0x31ffc7[_0x0788('0x81')]?util['format'](_0x0788('0xfb'),_0x4a492c[_0x0788('0xfc')],_0x31ffc7[_0x0788('0x81')]):'System';var _0x3ea229=_0x31c746[_0x0788('0x83')][_0x0788('0xfd')]||util[_0x0788('0xfe')](_0x0788('0xfb'),'Visitor',_0x31ffc7[_0x0788('0x79')]);switch(_0x4a492c['agentIdentifier']){case _0x0788('0xff'):_0x3787d3=_0x31ffc7[_0x0788('0x81')]?util[_0x0788('0xfe')](_0x0788('0xfb'),_0x4a492c[_0x0788('0xfc')],_0x31ffc7['UserId']):_0x0788('0x100');break;case'agent_alias':_0x3787d3=_0x31ffc7[_0x0788('0x81')]?_0x31ffc7['User'][_0x0788('0x101')]||_0x31ffc7[_0x0788('0x7f')]['fullname']:_0x0788('0x100');break;case _0x0788('0x102'):_0x3787d3=_0x31ffc7[_0x0788('0x81')]?_0x31ffc7[_0x0788('0x7f')][_0x0788('0x3f')]:_0x0788('0x100');break;default:_0x3787d3=_0x31ffc7[_0x0788('0x81')]?util[_0x0788('0xfe')](_0x0788('0xfb'),_0x4a492c[_0x0788('0xfc')],_0x31ffc7[_0x0788('0x81')]):'System';}var _0x303d5=util['format'](_0x0788('0x103'),moment(_0x31ffc7['createdAt'])[_0x0788('0xfe')](_0x0788('0x104')),_0x31ffc7['direction']==='in'?_0x3ea229:_0x3787d3,_0x31ffc7['body']);if(!_0x31ffc7['secret']){fs[_0x0788('0x105')](_0x523faa,_0x303d5);}}return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x0788('0x106')],'as':_0x0788('0x107'),'raw':!![]}]});}}})[_0x0788('0x23')](function(_0x5c5464){if(_0x5c5464&&_0x5c5464[_0x0788('0x107')]&&_0x31c746[_0x0788('0x83')]){var _0x14420b={'tls':{'rejectUnauthorized':![]}};if(_0x5c5464['Smtp']['service']){_0x14420b[_0x0788('0x108')]=_0x5c5464[_0x0788('0x107')][_0x0788('0x108')];}else{_0x14420b['host']=_0x5c5464[_0x0788('0x107')][_0x0788('0x109')];_0x14420b[_0x0788('0x10a')]=_0x5c5464['Smtp']['port'];_0x14420b[_0x0788('0x10b')]=_0x5c5464['Smtp'][_0x0788('0x10b')];}if(_0x5c5464[_0x0788('0x107')]['authentication']){_0x14420b['auth']={'user':_0x5c5464[_0x0788('0x107')][_0x0788('0xa2')],'pass':_0x5c5464['Smtp'][_0x0788('0x10c')]};}return respondWithRpcPromise(_0x0788('0x10d'),'sendMail',{'account':_0x14420b,'message':{'from':util[_0x0788('0xfe')](_0x0788('0x10e'),_0x5c5464[_0x0788('0x39')],_0x5c5464[_0x0788('0x10f')]||_0x5c5464['Smtp'][_0x0788('0xa2')]),'to':_0x31c746[_0x0788('0x83')][_0x0788('0xf7')],'subject':_0x0788('0x110'),'text':util[_0x0788('0xfe')](_0x0788('0x111'),_0x31c746[_0x0788('0x83')][_0x0788('0xf7')]),'attachments':[{'path':_0x523faa}]}})[_0x0788('0x23')](function(){return _0x11de9c;})['catch'](function(_0x1b5b80){console[_0x0788('0x27')](_0x1b5b80);});}else{return _0x11de9c;}})['then'](respondWithStatusCode(_0x4f696c,0xc8))[_0x0788('0x2b')](handleError(_0x4f696c,null));};exports[_0x0788('0x112')]=function(_0x5522e3,_0x5f1a46,_0x248f60){return db[_0x0788('0xd9')][_0x0788('0x6f')]({'where':{'id':_0x5522e3['params']['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x5f1a46,null))[_0x0788('0x23')](function(_0x36d7f9){if(_0x36d7f9){return _0x36d7f9['addMessage'](_0x5522e3[_0x0788('0x83')][_0x0788('0x113')],_['omit'](_0x5522e3['body'],['ids','id'])||{});}})[_0x0788('0x23')](respondWithResult(_0x5f1a46,null))[_0x0788('0x2b')](handleError(_0x5f1a46,null));};exports[_0x0788('0x114')]=function(_0x20f429,_0x364f26,_0x351665){var _0x1ba9fb={'raw':![],'where':{}};var _0x56b11c={};var _0x4f36bd={'count':0x0,'rows':[]};return db[_0x0788('0x47')][_0x0788('0xef')]({'where':{'id':_0x20f429[_0x0788('0xc6')]['id']}})['then'](handleEntityNotFound(_0x364f26,null))[_0x0788('0x23')](function(_0x1c7980){if(_0x1c7980){_0x56b11c[_0x0788('0x4f')]=_[_0x0788('0x4b')](db['ChatMessage']['rawAttributes']);_0x56b11c[_0x0788('0x4c')]=_[_0x0788('0x4b')](_0x20f429[_0x0788('0x4c')]);_0x56b11c[_0x0788('0x4d')]=_[_0x0788('0x4e')](_0x56b11c[_0x0788('0x4f')],_0x56b11c[_0x0788('0x4c')]);_0x1ba9fb[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x56b11c['model'],qs[_0x0788('0x51')](_0x20f429[_0x0788('0x4c')][_0x0788('0x51')]));_0x1ba9fb[_0x0788('0x50')]=_0x1ba9fb[_0x0788('0x50')][_0x0788('0x52')]?_0x1ba9fb[_0x0788('0x50')]:_0x56b11c['model'];if(!_0x20f429[_0x0788('0x4c')][_0x0788('0x53')](_0x0788('0x115'))){_0x1ba9fb['limit']=qs[_0x0788('0x30')](_0x20f429[_0x0788('0x4c')][_0x0788('0x30')]);_0x1ba9fb[_0x0788('0x33')]=qs[_0x0788('0x33')](_0x20f429['query']['offset']);}_0x1ba9fb['order']=qs[_0x0788('0x55')](_0x20f429[_0x0788('0x4c')][_0x0788('0x55')]);_0x1ba9fb[_0x0788('0x56')]=qs[_0x0788('0x4d')](_[_0x0788('0x116')](_0x20f429[_0x0788('0x4c')],_0x56b11c['filters']));_0x1ba9fb[_0x0788('0x56')][_0x0788('0xc2')]=_0x1c7980['id'];if(_0x20f429[_0x0788('0x4c')][_0x0788('0x93')]){_0x1ba9fb['where']=_[_0x0788('0x3b')](_0x1ba9fb[_0x0788('0x56')],{'$or':_[_0x0788('0x46')](_0x1ba9fb[_0x0788('0x50')],function(_0xccb2e6){var _0x4cc769={};_0x4cc769[_0xccb2e6]={'$like':'%'+_0x20f429[_0x0788('0x4c')][_0x0788('0x93')]+'%'};return _0x4cc769;})});}if(_0x20f429[_0x0788('0x4c')][_0x0788('0x89')]){var _0x4785ac=_0x20f429[_0x0788('0x4c')][_0x0788('0x89')][_0x0788('0x42')](',');var _0x4455dc={};_0x4455dc[_0x4785ac[0x0]]={'$gte':moment(_0x4785ac[0x1])['format'](_0x0788('0x117'))};_0x1ba9fb['where']=_[_0x0788('0x3b')](_0x1ba9fb[_0x0788('0x56')],_0x4455dc);}_0x1ba9fb=_[_0x0788('0x3b')]({},_0x1ba9fb,_0x20f429[_0x0788('0xc8')]);return db[_0x0788('0xd9')][_0x0788('0x32')]({'where':_0x1ba9fb[_0x0788('0x56')]})['then'](function(_0x3eb474){_0x4f36bd[_0x0788('0x32')]=_0x3eb474;if(_0x20f429['query'][_0x0788('0x118')]){_0x1ba9fb[_0x0788('0xc7')]=[{'all':!![]}];}return db[_0x0788('0xd9')]['findAll'](_0x1ba9fb);})['then'](function(_0x1aa86f){_0x4f36bd[_0x0788('0xc4')]=_0x1aa86f;return _0x4f36bd;});}})['then'](respondWithFilteredResult(_0x364f26,_0x1ba9fb))['catch'](handleError(_0x364f26,null));};exports[_0x0788('0x119')]=function(_0x4d6a60,_0x114658,_0x4b11b9){var _0x9af662={'where':{}},_0x257e1c={},_0x35a6bc={'count':0x0,'rows':[]};return db[_0x0788('0x47')]['findOne']({'where':{'id':_0x4d6a60['params']['id']}})[_0x0788('0x23')](handleEntityNotFound(_0x114658,null))[_0x0788('0x23')](function(_0x278a6f){if(_0x278a6f){_0x257e1c[_0x0788('0x4f')]=_['keys'](db[_0x0788('0xd9')][_0x0788('0x48')]);_0x257e1c[_0x0788('0x4c')]=_[_0x0788('0x4b')](_0x4d6a60['query']);_0x257e1c[_0x0788('0x4d')]=_[_0x0788('0x4e')](_0x257e1c['model'],_0x257e1c[_0x0788('0x4c')]);_0x9af662[_0x0788('0x50')]=_[_0x0788('0x4e')](_0x257e1c[_0x0788('0x4f')],qs[_0x0788('0x51')](_0x4d6a60[_0x0788('0x4c')]['fields']));_0x9af662[_0x0788('0x50')]=_0x9af662[_0x0788('0x50')][_0x0788('0x52')]?_0x9af662[_0x0788('0x50')]:_0x257e1c['model'];if(!_0x4d6a60[_0x0788('0x4c')]['hasOwnProperty'](_0x0788('0x115'))){_0x9af662['limit']=qs['limit'](_0x4d6a60[_0x0788('0x4c')][_0x0788('0x30')]);_0x9af662[_0x0788('0x33')]=qs[_0x0788('0x33')](_0x4d6a60[_0x0788('0x4c')][_0x0788('0x33')]);}_0x9af662[_0x0788('0x54')]=qs[_0x0788('0x55')](_0x4d6a60[_0x0788('0x4c')][_0x0788('0x55')]);_0x9af662['where']=qs['filters'](_['pick'](_0x4d6a60[_0x0788('0x4c')],_0x257e1c[_0x0788('0x4d')]));_0x9af662[_0x0788('0x56')][_0x0788('0xc2')]=_0x278a6f['id'];if(_0x4d6a60[_0x0788('0x4c')][_0x0788('0x93')]){_0x9af662[_0x0788('0x56')]=_[_0x0788('0x3b')](_0x9af662['where'],{'$or':_[_0x0788('0x46')](_0x9af662[_0x0788('0x50')],function(_0x4a4297){var _0x1fb846={};_0x1fb846[_0x4a4297]={'$like':'%'+_0x4d6a60[_0x0788('0x4c')][_0x0788('0x93')]+'%'};return _0x1fb846;})});}_0x9af662['where'][_0x0788('0x11a')]=![];if(_0x4d6a60[_0x0788('0x4c')]['id']){_0x9af662[_0x0788('0x56')]['id']={'$gt':_0x4d6a60[_0x0788('0x4c')]['id']};}_0x9af662=_[_0x0788('0x3b')]({},_0x9af662,_0x4d6a60[_0x0788('0xc8')]);return db[_0x0788('0xd9')][_0x0788('0x32')]({'where':_0x9af662[_0x0788('0x56')]})[_0x0788('0x23')](function(_0x292d07){_0x35a6bc[_0x0788('0x32')]=_0x292d07;_0x9af662[_0x0788('0xc7')]=[];if(_0x4d6a60[_0x0788('0x4c')][_0x0788('0x11b')]){_0x9af662['include'][_0x0788('0x44')]({'model':db[_0x0788('0x7f')],'as':_0x0788('0x7f'),'attributes':['id','fullname',_0x0788('0x101')]});}if(_0x4d6a60[_0x0788('0x4c')][_0x0788('0x118')]){_0x9af662['include']=[{'all':!![]}];}return db[_0x0788('0xd9')][_0x0788('0x11c')](_0x9af662);})['then'](function(_0xa44dc3){_0x35a6bc[_0x0788('0xc4')]=_0xa44dc3;return _0x35a6bc;});}})[_0x0788('0x23')](respondWithFilteredResult(_0x114658,_0x9af662))['catch'](handleError(_0x114658,null));};exports[_0x0788('0x11d')]=function(_0x5b0417,_0x4d5e94,_0x1fb141){return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x5b0417[_0x0788('0xc6')]['id']}})['then'](handleEntityNotFound(_0x4d5e94,null))[_0x0788('0x23')](function(_0x5bf415){if(_0x5bf415){return _0x5bf415['setTags'](_0x5b0417['body'][_0x0788('0x113')],_['omit'](_0x5b0417['body'],['ids','id'])||{})[_0x0788('0x11e')](function(){return db[_0x0788('0x7c')][_0x0788('0x11c')]({'attributes':['id',_0x0788('0x39'),_0x0788('0x59')],'where':{'id':_0x5b0417[_0x0788('0x83')][_0x0788('0x113')]}});})[_0x0788('0x23')](function(_0x109d90){socket[_0x0788('0x11f')](_0x0788('0x120'),{'id':Number(_0x5b0417[_0x0788('0xc6')]['id']),'tags':_0x109d90||[]});return{'id':Number(_0x5b0417[_0x0788('0xc6')]['id']),'tags':_0x109d90||[]};});}})['then'](respondWithResult(_0x4d5e94,null))[_0x0788('0x2b')](handleError(_0x4d5e94,null));};exports['removeTags']=function(_0x26343c,_0x30334c,_0x1d18bc){return db[_0x0788('0x47')][_0x0788('0x6f')]({'where':{'id':_0x26343c[_0x0788('0xc6')]['id']}})['then'](handleEntityNotFound(_0x30334c,null))[_0x0788('0x23')](function(_0x10266b){if(_0x10266b){return _0x10266b[_0x0788('0x121')](_0x26343c[_0x0788('0x4c')][_0x0788('0x113')]);}})[_0x0788('0x23')](respondWithStatusCode(_0x30334c,null))['catch'](handleError(_0x30334c,null));};exports['download']=function(_0x1fb76f,_0x17ca71){var _0xbae24f=moment()[_0x0788('0x122')]()[_0x0788('0xa9')]();var _0x525754=path['join'](config['root'],_0x0788('0x123'),_0x0788('0x124'),_0x0788('0x125'));var _0x2d51ef=path[_0x0788('0xf1')](config[_0x0788('0xf2')],_0x0788('0x123'),_0x0788('0x124'),_0x0788('0x126'));var _0x5ecd59=path['join'](_0x525754,_0xbae24f);var _0xf63471=util[_0x0788('0xfe')](_0x0788('0x127'),_0x1fb76f[_0x0788('0xc6')]['id'],_0xbae24f);var _0x390cdf=path[_0x0788('0xf1')](_0x525754,_0xf63471);var _0x40a75d=[];_0x40a75d[_0x0788('0x44')]({'model':db[_0x0788('0x7f')],'as':_0x0788('0x7f'),'attributes':['id',_0x0788('0x3f')],'raw':!![]});_0x40a75d[_0x0788('0x44')]({'model':db[_0x0788('0xdd')],'as':'Contact','attributes':['id',_0x0788('0x128'),_0x0788('0x129')],'raw':!![]});if(_0x1fb76f[_0x0788('0x4c')][_0x0788('0x126')]){_0x40a75d[_0x0788('0x44')]({'model':db[_0x0788('0xec')],'as':_0x0788('0xec'),'raw':!![]});}var _0x4cf323=[{'model':db[_0x0788('0xd9')],'as':_0x0788('0xfa'),'attributes':['id','body',_0x0788('0x87'),'direction',_0x0788('0x11a'),_0x0788('0x8f')],'include':_0x40a75d}];_0x4cf323['push']({'model':db[_0x0788('0xcd')],'as':'Account','attributes':['id',_0x0788('0x39')]});_0x4cf323[_0x0788('0x44')]({'model':db[_0x0788('0x7f')],'as':_0x0788('0x12a'),'attributes':['id',_0x0788('0x3f')]});return db['ChatInteraction'][_0x0788('0x6f')]({'where':{'id':_0x1fb76f['params']['id']},'include':_0x4cf323})['then'](handleEntityNotFound(_0x17ca71,null))[_0x0788('0x23')](function(_0x1fa39f){if(_0x1fa39f){var _0x19b030=_0x1fa39f[_0x0788('0x12b')]({'plain':!![]});fs[_0x0788('0x12c')](_0x5ecd59);var _0x35fc5b={'channel':'Chat','account':_0x19b030[_0x0788('0x12d')]['name'],'agent':_0x19b030[_0x0788('0x12a')]?_0x19b030[_0x0788('0x12a')][_0x0788('0x3f')]:'N.A.','createdAt':moment(_0x19b030['createdAt'])[_0x0788('0xfe')](_0x0788('0x117'))['toString'](),'closedAt':_0x19b030[_0x0788('0xe3')]?moment(_0x19b030[_0x0788('0x12e')])[_0x0788('0xfe')](_0x0788('0x117'))[_0x0788('0xa9')]():'','disposition':_0x19b030[_0x0788('0xe4')],'chatInfo':{'browser':_0x19b030[_0x0788('0x12f')],'os':_0x19b030['osName'],'referer':_0x19b030['referer'],'customerIp':_0x19b030['customerIp'],'customerPort':_0x19b030[_0x0788('0x130')]?_0x19b030['customerPort']:_0x0788('0x131')},'messages':_(_0x19b030[_0x0788('0xfa')])[_0x0788('0x132')]()[_0x0788('0x93')]({'secret':![]})[_0x0788('0x46')](function(_0x3ff416){if(_0x3ff416[_0x0788('0xec')]){var _0x7d6cf9=path[_0x0788('0xf1')](_0x2d51ef,_0x3ff416[_0x0788('0xec')][_0x0788('0xe9')]);if(fs['existsSync'](_0x7d6cf9)){fs[_0x0788('0x133')](_0x7d6cf9)['pipe'](fs[_0x0788('0x134')](path[_0x0788('0xf1')](_0x5ecd59,_0x3ff416[_0x0788('0xec')][_0x0788('0xe9')])));}}return{'date':moment(_0x3ff416[_0x0788('0x87')])[_0x0788('0xfe')](_0x0788('0x117'))[_0x0788('0xa9')](),'sender':_0x3ff416[_0x0788('0x135')]===_0x0788('0xd8')?_0x3ff416['User']?_0x3ff416[_0x0788('0x7f')][_0x0788('0x3f')]:_0x0788('0x100'):_0x3ff416[_0x0788('0x75')]['firstName']+(_0x3ff416[_0x0788('0x75')][_0x0788('0x129')]?'\x20'+_0x3ff416['Contact'][_0x0788('0x129')]:''),'body':_0x3ff416['Attachment']?_0x3ff416[_0x0788('0xec')]['basename']:_0x3ff416[_0x0788('0x83')],'direction':_0x3ff416[_0x0788('0x135')]===_0x0788('0xd8')?'A':'C','secret':_0x3ff416['secret'],'read':_0x3ff416[_0x0788('0x8f')],'attachment':_0x3ff416['Attachment']};})[_0x0788('0x71')]()};return ejs[_0x0788('0x136')](path[_0x0788('0xf1')](config[_0x0788('0xf2')],'server','views',_0x0788('0x137')),{'interaction':_0x35fc5b})['then'](function(_0x45962d){var _0x4cc133=path[_0x0788('0xf1')](_0x5ecd59,_0x0788('0x138')+_0x19b030['id']+'-'+_0xbae24f+_0x0788('0x139'));var _0x52452f={'path':_0x4cc133,'channel':_0x0788('0x13a'),'interactionId':_0x19b030['id']};return pdf[_0x0788('0x13b')](_0x45962d,_0x52452f);})[_0x0788('0x23')](function(){return new BPromise(function(_0xe2d72d,_0x5401a8){zipdir(_0x5ecd59,{'saveTo':_0x390cdf},function(_0x5b289e,_0x4191b4){if(_0x5b289e)return _0x5401a8(_0x5b289e);return _0xe2d72d(_0x4191b4);});})[_0x0788('0x23')](function(){return new BPromise(function(_0x5440c6,_0x2dbb74){rimraf(_0x5ecd59,function(_0x8a89c0){if(_0x8a89c0)_0x2dbb74(_0x8a89c0);return _0x5440c6();});});})['then'](function(){return _0x17ca71['download'](_0x390cdf,_0xf63471,function(_0x2487db){if(_0x2487db){console['log'](_0x0788('0x13c'),_0x2487db);}else{fs[_0x0788('0x13d')](_0x390cdf);}});});});}else{return _0x17ca71[_0x0788('0x2c')](0xc8);}})['catch'](handleError(_0x17ca71,null));};
\ No newline at end of file
+var _0x5f2f=['vidaooMetadata','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','entity\x20not\x20found','sendStatus','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','mimetype','Attachment','attachmentDownload','Unauthorized','attachId','ChatOfflineMessageId','root','server/files/attachments/','join','offline-chat/','basename','download','mailTranscript','format','transcript-%s.txt','now','pathTranscript','Messages','ChatWebsite','System','customer','%s%d','Visitor','agentIdentifier','website_alias','agentAlias','agent_alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','secret','MailAccount','MailServerOut','Smtp','service','host','port','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','addMessage','omit','getMessages','pick','includeAll','findAll','getMyMessages','includeAgent','alias','setTags','ids','spread','color','emit','chatInteractionTags:save','removeTags','unix','server','files','tmp','attachments','transcript-%d-%s.zip','firstName','lastName','direction','Account','Owner','get','mkdirSync','Chat','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','browserName','osName','referer','customerIp','customerPort','existsSync','createReadStream','pipe','createWriteStream','out','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','unlinkSync','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','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error','message','result','catch','status','end','limit','undefined','count','set','Content-Range','json','apply','save','update','name','merge','body','contact','account','Users','map','fullname','TagIds','Tags','split','forEach','push','index','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','select','field','from','tools_tags','u.id','u.fullname','ui.ChatInteractionId','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','value','getFullTextValue','find','ContactId','buildExpression','text','start','Tag','union','User','UserId','some','isEmpty','i.ChatWebsiteId\x20IN\x20?','concat','createdAt','$gte','parse','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','contactName','DESC','t.id\x20IN\x20?','resolve','ChatWebsiteId','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','agent','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','keyBy','ChatInteraction','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','Account.key','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','Contact.email','c.phone','c.mobile','Contact.mobile','Contact.fax','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.ChatInteractionId\x20IN\x20?','groupBy','ChatInteractionId','all','rows','show','include','options','create','destroy','params','describe','createVidaooSession','findOne','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','email','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','follow'];(function(_0x1138c4,_0x841d33){var _0x200cc1=function(_0x2f6d85){while(--_0x2f6d85){_0x1138c4['push'](_0x1138c4['shift']());}};_0x200cc1(++_0x841d33);}(_0x5f2f,0x73));var _0xf5f2=function(_0x21b835,_0x4f5599){_0x21b835=_0x21b835-0x0;var _0x376c7f=_0x5f2f[_0x21b835];return _0x376c7f;};'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 pdf=require('../../components/export/pdf');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf5f2('0x14'))(_0xf5f2('0x15'));var utils=require('../../config/utils');var config=require(_0xf5f2('0x16'));var licenseUtil=require(_0xf5f2('0x17'));var db=require(_0xf5f2('0x18'))['db'];config[_0xf5f2('0x19')]=_[_0xf5f2('0x1a')](config[_0xf5f2('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xf5f2('0x1b'))(new Redis(config[_0xf5f2('0x19')]));require(_0xf5f2('0x1c'))[_0xf5f2('0x1d')](socket);var jayson=require(_0xf5f2('0x1e'));var client=jayson['client'][_0xf5f2('0x1f')]({'port':0x232b});var client9004=jayson[_0xf5f2('0x20')][_0xf5f2('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x1b6dd2,_0x23e23a,_0x3a9dbb,_0xdb61b3){return new BPromise(function(_0x395a5a,_0x11f702){var _0x228ace=_0xdb61b3||client;return _0x228ace[_0xf5f2('0x21')](_0x1b6dd2,_0x3a9dbb)[_0xf5f2('0x22')](function(_0x4ff59b){logger[_0xf5f2('0x23')](_0xf5f2('0x24'),_0x23e23a,_0xf5f2('0x25'));logger[_0xf5f2('0x26')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x23e23a,_0xf5f2('0x25'),JSON[_0xf5f2('0x27')](_0x4ff59b));if(_0x4ff59b['error']){if(_0x4ff59b['error'][_0xf5f2('0x28')]===0x1f4){logger[_0xf5f2('0x29')]('ChatInteraction,\x20%s,\x20%s',_0x23e23a,_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);return _0x11f702(_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);}logger[_0xf5f2('0x29')]('ChatInteraction,\x20%s,\x20%s',_0x23e23a,_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);return _0x395a5a(_0x4ff59b[_0xf5f2('0x29')][_0xf5f2('0x2a')]);}else{logger[_0xf5f2('0x23')]('ChatInteraction,\x20%s,\x20%s',_0x23e23a,'request\x20sent');_0x395a5a(_0x4ff59b[_0xf5f2('0x2b')][_0xf5f2('0x2a')]);}})[_0xf5f2('0x2c')](function(_0x1a5bb3){logger[_0xf5f2('0x29')](_0xf5f2('0x24'),_0x23e23a,_0x1a5bb3);_0x11f702(_0x1a5bb3);});});}function respondWithStatusCode(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0xcc;return function(_0x294414){if(_0x294414){return _0x13a3be['sendStatus'](_0x281ec8);}return _0x13a3be[_0xf5f2('0x2d')](_0x281ec8)[_0xf5f2('0x2e')]();};}function respondWithResult(_0x375ca8,_0x31bfcb){_0x31bfcb=_0x31bfcb||0xc8;return function(_0x198c73){if(_0x198c73){return _0x375ca8[_0xf5f2('0x2d')](_0x31bfcb)['json'](_0x198c73);}};}function respondWithFilteredResult(_0x53cb96,_0x22c826){return function(_0x14c829){if(_0x14c829){var _0x11c771=typeof _0x22c826['offset']==='undefined'&&typeof _0x22c826[_0xf5f2('0x2f')]===_0xf5f2('0x30');var _0x17394a=_0x14c829[_0xf5f2('0x31')];var _0x1b381e=_0x11c771?0x0:_0x22c826['offset'];var _0x52e959=_0x11c771?_0x14c829[_0xf5f2('0x31')]:_0x22c826['offset']+_0x22c826[_0xf5f2('0x2f')];var _0x58a4df;if(_0x52e959>=_0x17394a){_0x52e959=_0x17394a;_0x58a4df=0xc8;}else{_0x58a4df=0xce;}_0x53cb96[_0xf5f2('0x2d')](_0x58a4df);return _0x53cb96[_0xf5f2('0x32')](_0xf5f2('0x33'),_0x1b381e+'-'+_0x52e959+'/'+_0x17394a)[_0xf5f2('0x34')](_0x14c829);}return null;};}function patchUpdates(_0x256bd9){return function(_0x277eee){try{jsonpatch[_0xf5f2('0x35')](_0x277eee,_0x256bd9,!![]);}catch(_0x2c0e05){return BPromise['reject'](_0x2c0e05);}return _0x277eee[_0xf5f2('0x36')]();};}function saveUpdates(_0x43e4ff,_0x4590ec){return function(_0x43c77d){if(_0x43c77d){return _0x43c77d[_0xf5f2('0x37')](_0x43e4ff)[_0xf5f2('0x22')](function(_0x297c0c){return _0x297c0c;});}return null;};}function removeEntity(_0x48d64d,_0x144646){return function(_0xf503e8){if(_0xf503e8){return _0xf503e8['destroy']()[_0xf5f2('0x22')](function(){_0x48d64d['status'](0xcc)[_0xf5f2('0x2e')]();});}};}function handleEntityNotFound(_0x3930fb,_0x2a2c31){return function(_0x2e3cca){if(!_0x2e3cca){_0x3930fb['sendStatus'](0x194);}return _0x2e3cca;};}function handleError(_0x5a98d7,_0x41088b){_0x41088b=_0x41088b||0x1f4;return function(_0x46ad4a){logger[_0xf5f2('0x29')](_0x46ad4a['stack']);if(_0x46ad4a[_0xf5f2('0x38')]){delete _0x46ad4a['name'];}_0x5a98d7[_0xf5f2('0x2d')](_0x41088b)['send'](_0x46ad4a);};}function getMustacheRender(_0x46f464,_0x456764){return Mustache['render'](_0x46f464,_[_0xf5f2('0x39')](_0x456764[_0xf5f2('0x3a')],{'contact':_0x456764[_0xf5f2('0x3b')],'message':_0x456764[_0xf5f2('0x2a')],'agent':_0x456764['agent'],'interaction':_0x456764['interaction'],'account':_0x456764[_0xf5f2('0x3c')]}))||'';}function getInteractionUsers(_0x140a11,_0x22b20c){return new BPromise(function(_0x2d4400,_0x2c7f65){try{if(_0x22b20c[_0x140a11['id']]){_0x140a11[_0xf5f2('0x3d')]=_[_0xf5f2('0x3e')](_0x22b20c[_0x140a11['id']],function(_0x4c0ac7){return{'id':_0x4c0ac7['id'],'fullname':_0x4c0ac7[_0xf5f2('0x3f')]};});}}catch(_0x3b4ea6){_0x2c7f65(_0x3b4ea6);}_0x2d4400(_0x140a11);});}function getInteractionTags(_0x536501,_0xc6a1ae){return new BPromise(function(_0x3f3895,_0x71b0e7){try{if(_0x536501[_0xf5f2('0x40')]){_0x536501[_0xf5f2('0x41')]=[];_0x536501[_0xf5f2('0x40')][_0xf5f2('0x42')](',')[_0xf5f2('0x43')](function(_0x574f24){_0x536501[_0xf5f2('0x41')][_0xf5f2('0x44')](_0xc6a1ae[_0x574f24]);});}delete _0x536501[_0xf5f2('0x40')];}catch(_0x4a8e39){_0x71b0e7(_0x4a8e39);}_0x3f3895(_0x536501);});}function updateChatInteraction(_0x509dbc,_0x59eb00,_0x76d21b){return new BPromise(function(_0x2ad13c,_0x4c8d8e){return getInteractionUsers(_0x509dbc,_0x76d21b)[_0xf5f2('0x22')](function(_0xeed03d){return getInteractionTags(_0xeed03d,_0x59eb00);})[_0xf5f2('0x22')](function(_0x31f86c){_0x2ad13c(_0x31f86c);})[_0xf5f2('0x2c')](function(_0x2b3b1c){_0x4c8d8e(_0x2b3b1c);});});}exports[_0xf5f2('0x45')]=function(_0x212e90,_0x40c322){var _0x106062={},_0x444317={},_0x4773cd={'count':0x0,'rows':[]};var _0x4252a3=_[_0xf5f2('0x3e')](db['ChatInteraction'][_0xf5f2('0x46')],function(_0x578c93){return{'name':_0x578c93[_0xf5f2('0x47')],'type':_0x578c93[_0xf5f2('0x48')][_0xf5f2('0x49')]};});_0x444317[_0xf5f2('0x4a')]=_[_0xf5f2('0x3e')](_0x4252a3,_0xf5f2('0x38'));_0x444317['query']=_[_0xf5f2('0x4b')](_0x212e90[_0xf5f2('0x4c')]);_0x444317[_0xf5f2('0x4d')]=_[_0xf5f2('0x4e')](_0x444317[_0xf5f2('0x4a')],_0x444317[_0xf5f2('0x4c')]);_0x106062[_0xf5f2('0x4f')]=_[_0xf5f2('0x4e')](_0x444317['model'],qs[_0xf5f2('0x50')](_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x106062['attributes']=_0x106062[_0xf5f2('0x4f')][_0xf5f2('0x51')]?_0x106062[_0xf5f2('0x4f')]:_0x444317['model'];if(!_0x212e90['query'][_0xf5f2('0x52')](_0xf5f2('0x53'))){_0x106062['limit']=qs[_0xf5f2('0x2f')](_0x212e90['query'][_0xf5f2('0x2f')]);_0x106062['offset']=qs[_0xf5f2('0x54')](_0x212e90['query'][_0xf5f2('0x54')]);}_0x106062[_0xf5f2('0x55')]=qs[_0xf5f2('0x56')](_0x212e90[_0xf5f2('0x4c')]['sort']);_0x106062[_0xf5f2('0x57')]=qs[_0xf5f2('0x4d')](_['pick'](_0x212e90['query'],_0x444317[_0xf5f2('0x4d')]),_0x4252a3);var _0x3dc0c4=[];var _0x57782c=squel[_0xf5f2('0x58')]()[_0xf5f2('0x59')]('id')[_0xf5f2('0x59')](_0xf5f2('0x38'))['field']('color')[_0xf5f2('0x5a')](_0xf5f2('0x5b'));var _0x4b62fc=squel[_0xf5f2('0x58')]()[_0xf5f2('0x59')](_0xf5f2('0x5c'))[_0xf5f2('0x59')](_0xf5f2('0x5d'))[_0xf5f2('0x59')](_0xf5f2('0x5e'))['from']('user_has_chat_interactions','ui')[_0xf5f2('0x5f')](_0xf5f2('0x60'),'u',_0xf5f2('0x61'));var _0x46a905=squel[_0xf5f2('0x58')]()['from'](_0xf5f2('0x62'),'i')[_0xf5f2('0x5f')](_0xf5f2('0x63'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xf5f2('0x5f')]('users','o',_0xf5f2('0x64'))[_0xf5f2('0x5f')](_0xf5f2('0x65'),'a',_0xf5f2('0x66'))['left_join']('chat_messages','me',_0xf5f2('0x67'))['left_join'](_0xf5f2('0x68'),'it',_0xf5f2('0x69'))['left_join'](_0xf5f2('0x5b'),'t',_0xf5f2('0x6a'));var _0x2a8f6d=squel['expr']();var _0x397b99=[];var _0xcf7a50=squel[_0xf5f2('0x6b')]();var _0x4579f4;if(_0x212e90['query'][_0xf5f2('0x6c')]){_0x4579f4=as['parseSearch'](_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x6c')]);var _0x2e6f5d=_0x4579f4[_0xf5f2('0x6d')];for(var _0x9f210e=0x0;_0x9f210e<_0x4579f4['conditions'][_0xf5f2('0x51')];_0x9f210e++){var _0xacd80=_0x4579f4[_0xf5f2('0x6e')][_0x9f210e];var _0x212639='i';var _0x2c5733=_['find'](_0x4252a3,[_0xf5f2('0x38'),_0xacd80['field']]);if(!_0x2c5733){switch(_0xacd80['field']){case _0xf5f2('0x6f'):if(_0xacd80['value']==0x1){_0x46a905[_0xf5f2('0x70')]('`'+_0xacd80[_0xf5f2('0x59')]+_0xf5f2('0x71'));}else{_0x46a905[_0xf5f2('0x70')]('`'+_0xacd80['field']+_0xf5f2('0x72'));}break;case _0xf5f2('0x73'):if(_0xacd80[_0xf5f2('0x74')]===_0xf5f2('0x75')){if(_0xacd80[_0xf5f2('0x76')][_0xf5f2('0x42')]('\x20')[_0xf5f2('0x51')]>0x1){_0x2a8f6d[_0x2e6f5d]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf5f2('0x77')](_0xacd80[_0xf5f2('0x76')]),null);}else{var _0xb39a6e='%'+_0xacd80[_0xf5f2('0x76')]+'%';_0x2a8f6d[_0x2e6f5d]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0xb39a6e,_0xb39a6e,_0xb39a6e);}}else{_0x2c5733=_[_0xf5f2('0x78')](_0x4252a3,['name',_0xf5f2('0x79')]);_0xacd80[_0xf5f2('0x59')]='ContactId';_0x5a143f=as[_0xf5f2('0x7a')](_0x212639,_0x2c5733[_0xf5f2('0x48')],_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f['value'][_0xf5f2('0x2e')]);}break;case _0xf5f2('0x7d'):var _0x3a0e75=_0xacd80[_0xf5f2('0x76')][_0xf5f2('0x42')](',')[_0xf5f2('0x3e')](function(_0x53284f){return Number(_0x53284f);});_0x3a0e75[_0xf5f2('0x43')](function(_0x3f475e){_0xcf7a50['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x3f475e+',%');});_0x397b99=_[_0xf5f2('0x7e')](_0x397b99,_0x3a0e75);break;case _0xf5f2('0x7f'):if(_0xacd80[_0xf5f2('0x74')]==='$substring'){_0x2a8f6d[_0x2e6f5d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xacd80['value']+'%',null);}else{_0x2c5733=_[_0xf5f2('0x78')](_0x4252a3,[_0xf5f2('0x38'),_0xf5f2('0x80')]);_0xacd80[_0xf5f2('0x59')]=_0xf5f2('0x80');_0x5a143f=as['buildExpression'](_0x212639,_0x2c5733[_0xf5f2('0x48')],_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x2e')]);}break;case _0xf5f2('0x3a'):_0x5a143f=as[_0xf5f2('0x7a')]('me',null,_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f['value']['end']);break;}}else{var _0x5a143f=as[_0xf5f2('0x7a')](_0x212639,_0x2c5733[_0xf5f2('0x48')],_0xacd80);_0x2a8f6d[_0x2e6f5d](_0x5a143f[_0xf5f2('0x7b')],_0x5a143f[_0xf5f2('0x76')][_0xf5f2('0x7c')],_0x5a143f['value'][_0xf5f2('0x2e')]);}}}else{var _0x43c732=_(_0x212e90[_0xf5f2('0x4c')])[_0xf5f2('0x4b')]()[_0xf5f2('0x3e')](function(_0x55748d){return _[_0xf5f2('0x81')](_0x4252a3,[_0xf5f2('0x38'),_0x55748d])?_0x55748d:undefined;})['compact']()[_0xf5f2('0x76')]();if(!_[_0xf5f2('0x82')](_0x43c732)){_0x43c732[_0xf5f2('0x43')](function(_0x30ac41){if(_0x30ac41==='ChatWebsiteId'){_0x46a905[_0xf5f2('0x57')](_0xf5f2('0x83'),[][_0xf5f2('0x84')](_0x212e90[_0xf5f2('0x4c')][_0x30ac41]));}else if(_0x30ac41===_0xf5f2('0x85')){var _0x4f47e1=JSON['parse'](_0x212e90[_0xf5f2('0x4c')][_0x30ac41])[_0xf5f2('0x86')];var _0x17eb69=JSON[_0xf5f2('0x87')](_0x212e90['query'][_0x30ac41])['$lte'];_0x46a905[_0xf5f2('0x57')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4f47e1,_0x17eb69);}else{if(_0x212e90['query'][_0x30ac41]==='null'){_0x46a905['where']('i.'+_0x30ac41+_0xf5f2('0x88'));}else{_0x46a905[_0xf5f2('0x57')]('i.'+_0x30ac41+_0xf5f2('0x89'),_0x212e90[_0xf5f2('0x4c')][_0x30ac41]);}}});}if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8a')]){if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8a')]==0x1){_0x46a905[_0xf5f2('0x70')](_0xf5f2('0x8b'));}else{_0x46a905[_0xf5f2('0x70')](_0xf5f2('0x8c'));}}if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8d')]){_0x397b99=_[_0xf5f2('0x8e')](_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8d')])?_0x212e90[_0xf5f2('0x4c')]['tag']:new Array(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x8d')]);_0x397b99[_0xf5f2('0x43')](function(_0x2811ad){_0xcf7a50['or'](_0xf5f2('0x8f'),'%,'+_0x2811ad+',%');});}if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x90')]){var _0xcf48eb=_0x212e90['query'][_0xf5f2('0x90')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0xcf48eb)){_0x2a8f6d['or']('i.id\x20LIKE\x20?',_0xcf48eb+'%');}else{_0x2a8f6d['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0xcf48eb))['or'](_0xf5f2('0x91'),_0xcf48eb+'%');}}}_0x46a905[_0xf5f2('0x57')](_0x2a8f6d);_0x46a905[_0xf5f2('0x92')](_0xf5f2('0x93'));var _0x145d4d={'type':db[_0xf5f2('0x94')]['QueryTypes']['SELECT'],'raw':!![]};var _0x2fb1a6=_0x46a905['clone']();_0x2fb1a6[_0xf5f2('0x59')](_0xf5f2('0x93'));_0x2fb1a6['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf5f2('0x6f'));if(_0x106062[_0xf5f2('0x55')]){_0x106062['order'][_0xf5f2('0x43')](function(_0x388b32){var _0x49e363=_0x388b32[0x0]===_0xf5f2('0x95')?_0x388b32[0x0]:'i.'+_0x388b32[0x0];_0x46a905[_0xf5f2('0x55')](_0x49e363,_0x388b32[0x1]===_0xf5f2('0x96')?![]:!![]);});}if(!_['isEmpty'](_0x397b99)){_0x46a905[_0xf5f2('0x70')](_0xcf7a50);_0x2fb1a6[_0xf5f2('0x57')](_0xf5f2('0x97'),_0x397b99);}BPromise[_0xf5f2('0x98')]()[_0xf5f2('0x22')](function(){if(!_0x4579f4){if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x99')])return;_0x2fb1a6[_0xf5f2('0x57')](_0xf5f2('0x9a'));_0x46a905[_0xf5f2('0x57')](_0xf5f2('0x9a'));return;}if(_0x212e90[_0xf5f2('0x9b')][_0xf5f2('0x9c')]!==_0xf5f2('0x9d'))return;return _0x212e90[_0xf5f2('0x9b')][_0xf5f2('0x9e')]({'attributes':['id'],'raw':!![]})[_0xf5f2('0x22')](function(_0x29a9d4){if(_[_0xf5f2('0x82')](_0x29a9d4)){_0x2fb1a6[_0xf5f2('0x57')](_0xf5f2('0x9f'));_0x46a905['where'](_0xf5f2('0x9f'));}else{_0x2fb1a6[_0xf5f2('0x57')]('i.ChatWebsiteId\x20IN\x20?',_[_0xf5f2('0x3e')](_0x29a9d4,'id'));_0x46a905[_0xf5f2('0x57')]('i.ChatWebsiteId\x20IN\x20?',_[_0xf5f2('0x3e')](_0x29a9d4,'id'));}});})[_0xf5f2('0x22')](function(){if(_0x212e90[_0xf5f2('0x9b')]['role']==='agent'&&!_0x4579f4&&!_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x99')])return[];return db[_0xf5f2('0xa0')]['query'](_0x2fb1a6['toString'](),_0x145d4d);})[_0xf5f2('0x22')](function(_0xcdc6fd){_0x4773cd[_0xf5f2('0x31')]=_0xcdc6fd['length'];if(_0x4773cd['count']===0x0)return[];return db['sequelize']['query'](_0x57782c['toString'](),_0x145d4d)[_0xf5f2('0x22')](function(_0x561bab){_0x3dc0c4=_[_0xf5f2('0xa1')](_0x561bab,'id');_0x145d4d=_[_0xf5f2('0x39')](_0x145d4d,{'model':db[_0xf5f2('0xa2')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x212e90[_0xf5f2('0x4c')][_0xf5f2('0x50')]){_0x106062[_0xf5f2('0x4f')][_0xf5f2('0x43')](function(_0x40e921){_0x46a905[_0xf5f2('0x59')]('i.'+_0x40e921);});}else{_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xa3'),_0xf5f2('0x6f'));_0x46a905[_0xf5f2('0x59')]('a.key',_0xf5f2('0xa4'));_0x46a905[_0xf5f2('0x59')]('a.mandatoryDisposition',_0xf5f2('0xa5'));_0x46a905[_0xf5f2('0x59')]('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',_0xf5f2('0x95'));_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xa6'));_0x46a905['field'](_0xf5f2('0xa7'),_0xf5f2('0xa8'));_0x46a905['field'](_0xf5f2('0xa9'),_0xf5f2('0xaa'));_0x46a905[_0xf5f2('0x59')]('c.email',_0xf5f2('0xab'));_0x46a905['field'](_0xf5f2('0xac'),'Contact.phone');_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xad'),_0xf5f2('0xae'));_0x46a905[_0xf5f2('0x59')]('c.fax',_0xf5f2('0xaf'));_0x46a905['field']('o.fullname','Owner.fullname');_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xb0'),'Owner.internal');_0x46a905[_0xf5f2('0x59')](_0xf5f2('0xb1'),_0xf5f2('0x40'));}if(_0x106062[_0xf5f2('0x2f')])_0x46a905[_0xf5f2('0x2f')](_0x106062[_0xf5f2('0x2f')]);if(_0x106062['offset'])_0x46a905[_0xf5f2('0x54')](_0x106062[_0xf5f2('0x54')]);return db['sequelize'][_0xf5f2('0x4c')](_0x46a905[_0xf5f2('0xb2')](),_0x145d4d);})['then'](function(_0x32301a){if(_0x32301a[_0xf5f2('0x51')]>0x0)_0x4b62fc[_0xf5f2('0x57')](_0xf5f2('0xb3'),_[_0xf5f2('0x3e')](_0x32301a,'id'));return db[_0xf5f2('0xa0')]['query'](_0x4b62fc[_0xf5f2('0xb2')](),_0x145d4d)[_0xf5f2('0x22')](function(_0x13fcb0){var _0x792c75=_[_0xf5f2('0xb4')](_0x13fcb0,_0xf5f2('0xb5'));var _0x162c13=[];_0x32301a[_0xf5f2('0x43')](function(_0x3e4e40){_0x162c13['push'](updateChatInteraction(_0x3e4e40,_0x3dc0c4,_0x792c75));});return BPromise[_0xf5f2('0xb6')](_0x162c13);});});})[_0xf5f2('0x22')](function(_0xdbb2cd){_0x4773cd[_0xf5f2('0xb7')]=_0xdbb2cd;return _0x4773cd;})[_0xf5f2('0x22')](respondWithFilteredResult(_0x40c322,_0x106062))[_0xf5f2('0x2c')](handleError(_0x40c322,null));};exports[_0xf5f2('0xb8')]=function(_0x56f4b4,_0x33cfe7){var _0x40d0eb={'raw':![],'where':{'id':_0x56f4b4['params']['id']}},_0x4c138c={};_0x4c138c[_0xf5f2('0x4a')]=_[_0xf5f2('0x4b')](db[_0xf5f2('0xa2')][_0xf5f2('0x46')]);_0x4c138c['query']=_[_0xf5f2('0x4b')](_0x56f4b4[_0xf5f2('0x4c')]);_0x4c138c[_0xf5f2('0x4d')]=_[_0xf5f2('0x4e')](_0x4c138c[_0xf5f2('0x4a')],_0x4c138c['query']);_0x40d0eb[_0xf5f2('0x4f')]=_[_0xf5f2('0x4e')](_0x4c138c['model'],qs[_0xf5f2('0x50')](_0x56f4b4[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x40d0eb[_0xf5f2('0x4f')]=_0x40d0eb['attributes'][_0xf5f2('0x51')]?_0x40d0eb[_0xf5f2('0x4f')]:_0x4c138c[_0xf5f2('0x4a')];if(_0x56f4b4['query']['includeAll']){_0x40d0eb[_0xf5f2('0xb9')]=[{'all':!![]}];}_0x40d0eb=_[_0xf5f2('0x39')]({},_0x40d0eb,_0x56f4b4[_0xf5f2('0xba')]);return db[_0xf5f2('0xa2')][_0xf5f2('0x78')](_0x40d0eb)[_0xf5f2('0x22')](handleEntityNotFound(_0x33cfe7,null))['then'](respondWithResult(_0x33cfe7,null))[_0xf5f2('0x2c')](handleError(_0x33cfe7,null));};exports['create']=function(_0x151f13,_0x1624a4){return db[_0xf5f2('0xa2')][_0xf5f2('0xbb')](_0x151f13[_0xf5f2('0x3a')],{})[_0xf5f2('0x22')](respondWithResult(_0x1624a4,0xc9))['catch'](handleError(_0x1624a4,null));};exports[_0xf5f2('0x37')]=function(_0x409ed1,_0x457b53){if(_0x409ed1[_0xf5f2('0x3a')]['id']){delete _0x409ed1[_0xf5f2('0x3a')]['id'];}return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x409ed1['params']['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x457b53,null))['then'](saveUpdates(_0x409ed1['body'],null))['then'](respondWithResult(_0x457b53,null))[_0xf5f2('0x2c')](handleError(_0x457b53,null));};exports[_0xf5f2('0xbc')]=function(_0x568806,_0x3487df){return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x568806[_0xf5f2('0xbd')]['id']}})['then'](handleEntityNotFound(_0x3487df,null))[_0xf5f2('0x22')](removeEntity(_0x3487df,null))[_0xf5f2('0x2c')](handleError(_0x3487df,null));};exports[_0xf5f2('0xbe')]=function(_0x5d3ca7,_0x29f7bd){return db[_0xf5f2('0xa2')]['describe']()[_0xf5f2('0x22')](respondWithResult(_0x29f7bd,null))[_0xf5f2('0x2c')](handleError(_0x29f7bd,null));};exports[_0xf5f2('0xbf')]=function(_0x1583bb,_0x176974){var _0x8b591c=_0x1583bb[_0xf5f2('0xbd')]['id'];var _0x2c242b;var _0x155007;var _0x4782da;return db[_0xf5f2('0xa2')]['findOne']({'where':{'id':_0x8b591c}})[_0xf5f2('0x22')](function(_0x31dbfa){_0x2c242b=_0x31dbfa;return db['ChatWebsite'][_0xf5f2('0xc0')]({'where':{'id':_0x31dbfa['ChatWebsiteId']},'attributes':['id',_0xf5f2('0xc1'),_0xf5f2('0xc2'),_0xf5f2('0xc3'),_0xf5f2('0xc4'),'vidaooMetadata'],'raw':!![]});})[_0xf5f2('0x22')](function(_0x5a104b){if(_0x5a104b&&_0x5a104b[_0xf5f2('0xc1')]&&_0x5a104b['vidaooEscalation']){_0x155007=_0x5a104b;var _0x3310cb={'interaction':{'id':_0x8b591c},'agent':{'id':_0x1583bb[_0xf5f2('0x9b')]['id'],'name':_0x1583bb['user'][_0xf5f2('0x38')],'fullname':_0x1583bb[_0xf5f2('0x9b')][_0xf5f2('0x3f')],'email':_0x1583bb[_0xf5f2('0x9b')][_0xf5f2('0xc5')]},'contact':_0x1583bb[_0xf5f2('0x3a')]['contact'],'account':_0x1583bb['body'][_0xf5f2('0x3c')]};var _0x17e1eb={'rejectUnauthorized':![],'method':'POST','url':_0xf5f2('0xc6'),'headers':{'X-APIKEY':_0x5a104b[_0xf5f2('0xc1')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x1583bb[_0xf5f2('0x9b')][_0xf5f2('0xc5')]],'buttons':null,'topic':_0x155007[_0xf5f2('0xc3')],'note':_[_0xf5f2('0xc7')](_0x155007[_0xf5f2('0xc4')])?null:getMustacheRender(_0x155007['vidaooNote'],_0x3310cb),'metadata':null},'redirect':_0xf5f2('0xc8'),'json':!![]};try{if(!_['isNull'](_0x155007[_0xf5f2('0xc9')])){var _0x5ec0f3=getMustacheRender(_0x155007[_0xf5f2('0xc9')],_0x3310cb);var _0x4f2531=JSON[_0xf5f2('0x87')](_0x5ec0f3);_0x17e1eb['body']['metadata']=_0x4f2531;}}catch(_0x2c285c){throw new db[(_0xf5f2('0x94'))]['ValidationError'](_0xf5f2('0xca'));}return rp(_0x17e1eb);}else{throw new db[(_0xf5f2('0x94'))][(_0xf5f2('0xcb'))](_0xf5f2('0xcc'));}})[_0xf5f2('0x22')](function(_0x25af1e){_0x4782da=_0x25af1e;if(_0x4782da['id']){var _0xd0b5d={'body':_0x4782da[_0xf5f2('0xcd')],'ChatWebsiteId':_0x155007['id'],'ChatInteractionId':_0x2c242b['id'],'direction':'out','UserId':_0x1583bb['user']['id']};return db[_0xf5f2('0xce')]['create'](_0xd0b5d,{});}else{throw new db[(_0xf5f2('0x94'))][(_0xf5f2('0xcb'))](_0xf5f2('0xcf'));}})[_0xf5f2('0x22')](function(){return _0x2c242b[_0xf5f2('0xd0')]({'vidaooSessionId':_0x4782da['id']});})[_0xf5f2('0x22')](respondWithResult(_0x176974,null))[_0xf5f2('0x2c')](handleError(_0x176974,null));};exports[_0xf5f2('0xd1')]=function(_0x28f65b,_0x16cbd3){if(_0x28f65b[_0xf5f2('0x3a')]['id']){delete _0x28f65b[_0xf5f2('0x3a')]['id'];}return db['ChatInteraction'][_0xf5f2('0x78')]({'where':{'id':_0x28f65b['params']['id']},'include':[{'model':db[_0xf5f2('0xd2')],'as':_0xf5f2('0x73')}]})[_0xf5f2('0x22')](handleEntityNotFound(_0x16cbd3,null))[_0xf5f2('0x22')](saveUpdates(_0x28f65b[_0xf5f2('0x3a')],null))[_0xf5f2('0x22')](respondWithResult(_0x16cbd3,null))[_0xf5f2('0x2c')](handleError(_0x16cbd3,null));};exports[_0xf5f2('0xd3')]=function(_0x29db4f,_0x377c68,_0xe0f288){if(_0x29db4f['body']['id']){delete _0x29db4f[_0xf5f2('0x3a')]['id'];}return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x29db4f[_0xf5f2('0xbd')]['id']}})[_0xf5f2('0x22')](function(_0x3f8794){if(!_0x3f8794){logger[_0xf5f2('0x29')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0xf5f2('0xd3'),0x194,_0xf5f2('0xd4'));_0x377c68[_0xf5f2('0xd5')](0x194);}else{if(_0x3f8794[_0xf5f2('0x80')]){throw new db[(_0xf5f2('0x94'))][(_0xf5f2('0xcb'))](_0xf5f2('0xd6'));}}return _0x3f8794;})[_0xf5f2('0x22')](function(_0x356155){if(_0x356155){return _0x356155[_0xf5f2('0x37')]({'closed':_0x29db4f[_0xf5f2('0x3a')][_0xf5f2('0xd7')],'disposition':_0x29db4f[_0xf5f2('0x3a')][_0xf5f2('0xd8')]})[_0xf5f2('0x22')](function(_0x654b1b){return _0x654b1b;});}})['then'](function(_0x25566a){return respondWithRpcPromise(_0xf5f2('0xd9'),'abandon',_0x29db4f['body'],client9004);})[_0xf5f2('0x22')](respondWithResult(_0x377c68,null))[_0xf5f2('0x2c')](handleError(_0x377c68,null));};exports[_0xf5f2('0xda')]=function(_0x2c8f4c,_0x529d6f,_0x28cc){_0x2c8f4c[_0xf5f2('0x3a')][_0xf5f2('0x38')]=_0x2c8f4c[_0xf5f2('0xdb')][_0xf5f2('0xdc')];_0x2c8f4c[_0xf5f2('0x3a')]['basename']=_0x2c8f4c[_0xf5f2('0xdb')]['filename'];_0x2c8f4c['body'][_0xf5f2('0x48')]=_0x2c8f4c[_0xf5f2('0xdb')][_0xf5f2('0xdd')];return db[_0xf5f2('0xde')][_0xf5f2('0xbb')](_0x2c8f4c[_0xf5f2('0x3a')])[_0xf5f2('0x22')](respondWithResult(_0x529d6f,0xc9))['catch'](handleError(_0x529d6f,null));};exports[_0xf5f2('0xdf')]=function(_0x3a2862,_0x2c1160,_0x5e6c83){return db[_0xf5f2('0xa2')]['findOne']({'where':{'id':_0x3a2862['params']['id']},'raw':!![]})[_0xf5f2('0x22')](handleEntityNotFound(_0x2c1160,null))['then'](function(_0x2389b7){if(_0x2389b7){if(_0x2389b7[_0xf5f2('0xd7')]){return _0x2c1160['status'](0x193)[_0xf5f2('0x34')]({'status':0x193,'message':_0xf5f2('0xe0')});}return db['Attachment'][_0xf5f2('0xc0')]({'where':{'id':_0x3a2862[_0xf5f2('0x4c')][_0xf5f2('0xe1')]},'raw':!![]})[_0xf5f2('0x22')](handleEntityNotFound(_0x2c1160,null));}})[_0xf5f2('0x22')](function(_0x47a28a){if(_0x47a28a){var _0x182fa7=_0x47a28a[_0xf5f2('0xe2')]!==null;var _0x4d9048=path['join'](config[_0xf5f2('0xe3')],_0xf5f2('0xe4'));if(_0x182fa7){_0x4d9048=path[_0xf5f2('0xe5')](_0x4d9048,_0xf5f2('0xe6'));}var _0x1f51d8=path[_0xf5f2('0xe5')](_0x4d9048,_0x47a28a[_0xf5f2('0xe7')]);return _0x2c1160[_0xf5f2('0xe8')](_0x1f51d8);}})['catch'](handleError(_0x2c1160,null));};exports['close']=function(_0xc86ed5,_0x5be398){var _0x34abb6=null;var _0x235c30=null;var _0x15b060=null;var _0x422e88=null;if(_0xc86ed5['body']['id']){delete _0xc86ed5[_0xf5f2('0x3a')]['id'];}if(_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xe9')]){_0x422e88=path[_0xf5f2('0xe5')](config[_0xf5f2('0xe3')],'server/files/chat/upload/',util[_0xf5f2('0xea')](_0xf5f2('0xeb'),Date[_0xf5f2('0xec')]()));_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xed')]=_0x422e88;}return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0xc86ed5[_0xf5f2('0xbd')]['id']},'include':[{'model':db[_0xf5f2('0xce')],'as':_0xf5f2('0xee'),'include':[{'model':db[_0xf5f2('0x7f')],'as':_0xf5f2('0x7f')}]}]})['then'](handleEntityNotFound(_0x5be398,null))[_0xf5f2('0x22')](saveUpdates(_0xc86ed5['body'],null))[_0xf5f2('0x22')](function(_0x349efe){if(_0x349efe){_0x34abb6=_0x349efe;return db[_0xf5f2('0xef')][_0xf5f2('0x78')]({'where':{'id':_0x34abb6[_0xf5f2('0x99')]}});}})[_0xf5f2('0x22')](function(_0x2cd0b7){if(_0x2cd0b7){_0x15b060=_0x2cd0b7;return db[_0xf5f2('0xd2')][_0xf5f2('0x78')]({'where':{'id':_0x34abb6[_0xf5f2('0x79')]}});}})[_0xf5f2('0x22')](function(_0x2b6f46){if(_0x2b6f46){_0x235c30=_0x2b6f46;if(_0x422e88){var _0xf53f16=null;for(var _0xd45a63=0x1;_0xd45a63<_0x34abb6[_0xf5f2('0xee')][_0xf5f2('0x51')];++_0xd45a63){_0xf53f16=_0x34abb6[_0xf5f2('0xee')][_0xd45a63];var _0x33f987=_0xf53f16['UserId']?util[_0xf5f2('0xea')]('%s%d',_0x15b060['agentAlias'],_0xf53f16[_0xf5f2('0x80')]):_0xf5f2('0xf0');var _0x53e85c=_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xf1')]||util[_0xf5f2('0xea')](_0xf5f2('0xf2'),_0xf5f2('0xf3'),_0xf53f16[_0xf5f2('0x79')]);switch(_0x15b060[_0xf5f2('0xf4')]){case _0xf5f2('0xf5'):_0x33f987=_0xf53f16['UserId']?util[_0xf5f2('0xea')](_0xf5f2('0xf2'),_0x15b060[_0xf5f2('0xf6')],_0xf53f16['UserId']):_0xf5f2('0xf0');break;case _0xf5f2('0xf7'):_0x33f987=_0xf53f16[_0xf5f2('0x80')]?_0xf53f16[_0xf5f2('0x7f')]['alias']||_0xf53f16['User'][_0xf5f2('0x3f')]:_0xf5f2('0xf0');break;case _0xf5f2('0xf8'):_0x33f987=_0xf53f16[_0xf5f2('0x80')]?_0xf53f16[_0xf5f2('0x7f')][_0xf5f2('0x3f')]:_0xf5f2('0xf0');break;default:_0x33f987=_0xf53f16[_0xf5f2('0x80')]?util[_0xf5f2('0xea')](_0xf5f2('0xf2'),_0x15b060['agentAlias'],_0xf53f16[_0xf5f2('0x80')]):_0xf5f2('0xf0');}var _0x3881cd=util['format'](_0xf5f2('0xf9'),moment(_0xf53f16[_0xf5f2('0x85')])['format'](_0xf5f2('0xfa')),_0xf53f16['direction']==='in'?_0x53e85c:_0x33f987,_0xf53f16[_0xf5f2('0x3a')]);if(!_0xf53f16[_0xf5f2('0xfb')]){fs['appendFileSync'](_0x422e88,_0x3881cd);}}return db[_0xf5f2('0xfc')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xf5f2('0xfd')],'as':_0xf5f2('0xfe'),'raw':!![]}]});}}})['then'](function(_0x3971ee){if(_0x3971ee&&_0x3971ee[_0xf5f2('0xfe')]&&_0xc86ed5[_0xf5f2('0x3a')]){var _0xfeccdd={'tls':{'rejectUnauthorized':![]}};if(_0x3971ee[_0xf5f2('0xfe')]['service']){_0xfeccdd[_0xf5f2('0xff')]=_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0xff')];}else{_0xfeccdd[_0xf5f2('0x100')]=_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x100')];_0xfeccdd[_0xf5f2('0x101')]=_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x101')];_0xfeccdd['secure']=_0x3971ee[_0xf5f2('0xfe')]['secure'];}if(_0x3971ee['Smtp'][_0xf5f2('0x102')]){_0xfeccdd[_0xf5f2('0x103')]={'user':_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x9b')],'pass':_0x3971ee[_0xf5f2('0xfe')][_0xf5f2('0x104')]};}return respondWithRpcPromise(_0xf5f2('0x105'),_0xf5f2('0x106'),{'account':_0xfeccdd,'message':{'from':util[_0xf5f2('0xea')](_0xf5f2('0x107'),_0x3971ee['name'],_0x3971ee['email']||_0x3971ee['Smtp'][_0xf5f2('0x9b')]),'to':_0xc86ed5['body'][_0xf5f2('0xe9')],'subject':_0xf5f2('0x108'),'text':util[_0xf5f2('0xea')]('Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a',_0xc86ed5[_0xf5f2('0x3a')][_0xf5f2('0xe9')]),'attachments':[{'path':_0x422e88}]}})['then'](function(){return _0x34abb6;})['catch'](function(_0x4d0709){console[_0xf5f2('0x29')](_0x4d0709);});}else{return _0x34abb6;}})[_0xf5f2('0x22')](respondWithStatusCode(_0x5be398,0xc8))[_0xf5f2('0x2c')](handleError(_0x5be398,null));};exports['addMessage']=function(_0x2cfa84,_0x4a22fb,_0x7cf1b6){return db[_0xf5f2('0xce')][_0xf5f2('0x78')]({'where':{'id':_0x2cfa84['params']['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x4a22fb,null))['then'](function(_0x1b88b5){if(_0x1b88b5){return _0x1b88b5[_0xf5f2('0x109')](_0x2cfa84[_0xf5f2('0x3a')]['ids'],_[_0xf5f2('0x10a')](_0x2cfa84[_0xf5f2('0x3a')],['ids','id'])||{});}})[_0xf5f2('0x22')](respondWithResult(_0x4a22fb,null))[_0xf5f2('0x2c')](handleError(_0x4a22fb,null));};exports[_0xf5f2('0x10b')]=function(_0x29526c,_0x2a52e3,_0x439c9f){var _0x44adaa={'raw':![],'where':{}};var _0x3c7058={};var _0x3bcb44={'count':0x0,'rows':[]};return db[_0xf5f2('0xa2')][_0xf5f2('0xc0')]({'where':{'id':_0x29526c[_0xf5f2('0xbd')]['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x2a52e3,null))[_0xf5f2('0x22')](function(_0x23675a){if(_0x23675a){_0x3c7058[_0xf5f2('0x4a')]=_[_0xf5f2('0x4b')](db[_0xf5f2('0xce')][_0xf5f2('0x46')]);_0x3c7058[_0xf5f2('0x4c')]=_[_0xf5f2('0x4b')](_0x29526c[_0xf5f2('0x4c')]);_0x3c7058['filters']=_[_0xf5f2('0x4e')](_0x3c7058[_0xf5f2('0x4a')],_0x3c7058[_0xf5f2('0x4c')]);_0x44adaa[_0xf5f2('0x4f')]=_['intersection'](_0x3c7058[_0xf5f2('0x4a')],qs['fields'](_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x44adaa[_0xf5f2('0x4f')]=_0x44adaa[_0xf5f2('0x4f')][_0xf5f2('0x51')]?_0x44adaa[_0xf5f2('0x4f')]:_0x3c7058[_0xf5f2('0x4a')];if(!_0x29526c['query']['hasOwnProperty'](_0xf5f2('0x53'))){_0x44adaa[_0xf5f2('0x2f')]=qs[_0xf5f2('0x2f')](_0x29526c[_0xf5f2('0x4c')]['limit']);_0x44adaa[_0xf5f2('0x54')]=qs[_0xf5f2('0x54')](_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x54')]);}_0x44adaa[_0xf5f2('0x55')]=qs[_0xf5f2('0x56')](_0x29526c['query']['sort']);_0x44adaa['where']=qs[_0xf5f2('0x4d')](_[_0xf5f2('0x10c')](_0x29526c[_0xf5f2('0x4c')],_0x3c7058['filters']));_0x44adaa[_0xf5f2('0x57')]['ChatInteractionId']=_0x23675a['id'];if(_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x90')]){_0x44adaa[_0xf5f2('0x57')]=_[_0xf5f2('0x39')](_0x44adaa[_0xf5f2('0x57')],{'$or':_[_0xf5f2('0x3e')](_0x44adaa[_0xf5f2('0x4f')],function(_0xece862){var _0x3b4121={};_0x3b4121[_0xece862]={'$like':'%'+_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x90')]+'%'};return _0x3b4121;})});}if(_0x29526c[_0xf5f2('0x4c')][_0xf5f2('0x86')]){var _0x2fa70d=_0x29526c['query'][_0xf5f2('0x86')][_0xf5f2('0x42')](',');var _0x31f018={};_0x31f018[_0x2fa70d[0x0]]={'$gte':moment(_0x2fa70d[0x1])[_0xf5f2('0xea')]('YYYY-MM-DD\x20HH:mm:ss')};_0x44adaa[_0xf5f2('0x57')]=_[_0xf5f2('0x39')](_0x44adaa[_0xf5f2('0x57')],_0x31f018);}_0x44adaa=_[_0xf5f2('0x39')]({},_0x44adaa,_0x29526c['options']);return db[_0xf5f2('0xce')]['count']({'where':_0x44adaa[_0xf5f2('0x57')]})[_0xf5f2('0x22')](function(_0x20bb46){_0x3bcb44[_0xf5f2('0x31')]=_0x20bb46;if(_0x29526c['query'][_0xf5f2('0x10d')]){_0x44adaa[_0xf5f2('0xb9')]=[{'all':!![]}];}return db[_0xf5f2('0xce')][_0xf5f2('0x10e')](_0x44adaa);})[_0xf5f2('0x22')](function(_0x889f0e){_0x3bcb44['rows']=_0x889f0e;return _0x3bcb44;});}})[_0xf5f2('0x22')](respondWithFilteredResult(_0x2a52e3,_0x44adaa))[_0xf5f2('0x2c')](handleError(_0x2a52e3,null));};exports[_0xf5f2('0x10f')]=function(_0x3dcf4e,_0x4212d4,_0x2ebe4f){var _0x34fc35={'where':{}},_0x29c1ca={},_0x2cf93e={'count':0x0,'rows':[]};return db['ChatInteraction'][_0xf5f2('0xc0')]({'where':{'id':_0x3dcf4e[_0xf5f2('0xbd')]['id']}})[_0xf5f2('0x22')](handleEntityNotFound(_0x4212d4,null))[_0xf5f2('0x22')](function(_0x544db3){if(_0x544db3){_0x29c1ca['model']=_[_0xf5f2('0x4b')](db[_0xf5f2('0xce')][_0xf5f2('0x46')]);_0x29c1ca['query']=_['keys'](_0x3dcf4e[_0xf5f2('0x4c')]);_0x29c1ca[_0xf5f2('0x4d')]=_[_0xf5f2('0x4e')](_0x29c1ca[_0xf5f2('0x4a')],_0x29c1ca[_0xf5f2('0x4c')]);_0x34fc35[_0xf5f2('0x4f')]=_['intersection'](_0x29c1ca[_0xf5f2('0x4a')],qs[_0xf5f2('0x50')](_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x50')]));_0x34fc35['attributes']=_0x34fc35['attributes'][_0xf5f2('0x51')]?_0x34fc35['attributes']:_0x29c1ca[_0xf5f2('0x4a')];if(!_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x52')](_0xf5f2('0x53'))){_0x34fc35[_0xf5f2('0x2f')]=qs[_0xf5f2('0x2f')](_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x2f')]);_0x34fc35[_0xf5f2('0x54')]=qs[_0xf5f2('0x54')](_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x54')]);}_0x34fc35[_0xf5f2('0x55')]=qs[_0xf5f2('0x56')](_0x3dcf4e['query'][_0xf5f2('0x56')]);_0x34fc35[_0xf5f2('0x57')]=qs[_0xf5f2('0x4d')](_[_0xf5f2('0x10c')](_0x3dcf4e[_0xf5f2('0x4c')],_0x29c1ca['filters']));_0x34fc35[_0xf5f2('0x57')][_0xf5f2('0xb5')]=_0x544db3['id'];if(_0x3dcf4e['query'][_0xf5f2('0x90')]){_0x34fc35[_0xf5f2('0x57')]=_['merge'](_0x34fc35['where'],{'$or':_[_0xf5f2('0x3e')](_0x34fc35[_0xf5f2('0x4f')],function(_0x3e7f54){var _0x5e165c={};_0x5e165c[_0x3e7f54]={'$like':'%'+_0x3dcf4e['query'][_0xf5f2('0x90')]+'%'};return _0x5e165c;})});}_0x34fc35[_0xf5f2('0x57')][_0xf5f2('0xfb')]=![];if(_0x3dcf4e[_0xf5f2('0x4c')]['id']){_0x34fc35[_0xf5f2('0x57')]['id']={'$gt':_0x3dcf4e[_0xf5f2('0x4c')]['id']};}_0x34fc35=_[_0xf5f2('0x39')]({},_0x34fc35,_0x3dcf4e[_0xf5f2('0xba')]);return db[_0xf5f2('0xce')][_0xf5f2('0x31')]({'where':_0x34fc35['where']})[_0xf5f2('0x22')](function(_0x1c2842){_0x2cf93e['count']=_0x1c2842;_0x34fc35[_0xf5f2('0xb9')]=[];if(_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x110')]){_0x34fc35[_0xf5f2('0xb9')][_0xf5f2('0x44')]({'model':db['User'],'as':'User','attributes':['id',_0xf5f2('0x3f'),_0xf5f2('0x111')]});}if(_0x3dcf4e[_0xf5f2('0x4c')][_0xf5f2('0x10d')]){_0x34fc35['include']=[{'all':!![]}];}return db[_0xf5f2('0xce')][_0xf5f2('0x10e')](_0x34fc35);})[_0xf5f2('0x22')](function(_0x3518f9){_0x2cf93e['rows']=_0x3518f9;return _0x2cf93e;});}})['then'](respondWithFilteredResult(_0x4212d4,_0x34fc35))['catch'](handleError(_0x4212d4,null));};exports['addTags']=function(_0x2e9d3b,_0x496802,_0x5be074){return db['ChatInteraction']['find']({'where':{'id':_0x2e9d3b[_0xf5f2('0xbd')]['id']}})['then'](handleEntityNotFound(_0x496802,null))['then'](function(_0x43150f){if(_0x43150f){return _0x43150f[_0xf5f2('0x112')](_0x2e9d3b[_0xf5f2('0x3a')][_0xf5f2('0x113')],_['omit'](_0x2e9d3b[_0xf5f2('0x3a')],[_0xf5f2('0x113'),'id'])||{})[_0xf5f2('0x114')](function(){return db[_0xf5f2('0x7d')][_0xf5f2('0x10e')]({'attributes':['id',_0xf5f2('0x38'),_0xf5f2('0x115')],'where':{'id':_0x2e9d3b['body'][_0xf5f2('0x113')]}});})[_0xf5f2('0x22')](function(_0x4f4af9){socket[_0xf5f2('0x116')](_0xf5f2('0x117'),{'id':Number(_0x2e9d3b[_0xf5f2('0xbd')]['id']),'tags':_0x4f4af9||[]});return{'id':Number(_0x2e9d3b[_0xf5f2('0xbd')]['id']),'tags':_0x4f4af9||[]};});}})[_0xf5f2('0x22')](respondWithResult(_0x496802,null))['catch'](handleError(_0x496802,null));};exports[_0xf5f2('0x118')]=function(_0x5f470f,_0x1f0a64,_0x2bbc23){return db[_0xf5f2('0xa2')][_0xf5f2('0x78')]({'where':{'id':_0x5f470f['params']['id']}})['then'](handleEntityNotFound(_0x1f0a64,null))[_0xf5f2('0x22')](function(_0x179901){if(_0x179901){return _0x179901[_0xf5f2('0x118')](_0x5f470f[_0xf5f2('0x4c')][_0xf5f2('0x113')]);}})[_0xf5f2('0x22')](respondWithStatusCode(_0x1f0a64,null))[_0xf5f2('0x2c')](handleError(_0x1f0a64,null));};exports[_0xf5f2('0xe8')]=function(_0x5d8c6a,_0x4f777b){var _0x26dc8c=moment()[_0xf5f2('0x119')]()['toString']();var _0xb8bcf3=path[_0xf5f2('0xe5')](config[_0xf5f2('0xe3')],_0xf5f2('0x11a'),_0xf5f2('0x11b'),_0xf5f2('0x11c'));var _0x2bc493=path[_0xf5f2('0xe5')](config[_0xf5f2('0xe3')],_0xf5f2('0x11a'),_0xf5f2('0x11b'),_0xf5f2('0x11d'));var _0x212d97=path[_0xf5f2('0xe5')](_0xb8bcf3,_0x26dc8c);var _0x8ee5fd=util[_0xf5f2('0xea')](_0xf5f2('0x11e'),_0x5d8c6a['params']['id'],_0x26dc8c);var _0x3712e3=path['join'](_0xb8bcf3,_0x8ee5fd);var _0x56a1c3=[];_0x56a1c3['push']({'model':db['User'],'as':_0xf5f2('0x7f'),'attributes':['id',_0xf5f2('0x3f')],'raw':!![]});_0x56a1c3[_0xf5f2('0x44')]({'model':db[_0xf5f2('0xd2')],'as':'Contact','attributes':['id',_0xf5f2('0x11f'),_0xf5f2('0x120')],'raw':!![]});if(_0x5d8c6a['query']['attachments']){_0x56a1c3['push']({'model':db[_0xf5f2('0xde')],'as':_0xf5f2('0xde'),'raw':!![]});}var _0x5a6da7=[{'model':db[_0xf5f2('0xce')],'as':_0xf5f2('0xee'),'attributes':['id',_0xf5f2('0x3a'),'createdAt',_0xf5f2('0x121'),_0xf5f2('0xfb'),_0xf5f2('0x8a')],'include':_0x56a1c3}];_0x5a6da7[_0xf5f2('0x44')]({'model':db[_0xf5f2('0xef')],'as':_0xf5f2('0x122'),'attributes':['id','name']});_0x5a6da7['push']({'model':db[_0xf5f2('0x7f')],'as':_0xf5f2('0x123'),'attributes':['id','fullname']});return db['ChatInteraction'][_0xf5f2('0x78')]({'where':{'id':_0x5d8c6a['params']['id']},'include':_0x5a6da7})[_0xf5f2('0x22')](handleEntityNotFound(_0x4f777b,null))[_0xf5f2('0x22')](function(_0x2ee55f){if(_0x2ee55f){var _0x43ca34=_0x2ee55f[_0xf5f2('0x124')]({'plain':!![]});fs[_0xf5f2('0x125')](_0x212d97);var _0x220300={'channel':_0xf5f2('0x126'),'account':_0x43ca34[_0xf5f2('0x122')][_0xf5f2('0x38')],'agent':_0x43ca34['Owner']?_0x43ca34[_0xf5f2('0x123')][_0xf5f2('0x3f')]:_0xf5f2('0x127'),'createdAt':moment(_0x43ca34[_0xf5f2('0x85')])['format'](_0xf5f2('0x128'))[_0xf5f2('0xb2')](),'closedAt':_0x43ca34['closed']?moment(_0x43ca34[_0xf5f2('0x129')])['format'](_0xf5f2('0x128'))[_0xf5f2('0xb2')]():'','disposition':_0x43ca34['disposition'],'chatInfo':{'browser':_0x43ca34[_0xf5f2('0x12a')],'os':_0x43ca34[_0xf5f2('0x12b')],'referer':_0x43ca34[_0xf5f2('0x12c')],'customerIp':_0x43ca34[_0xf5f2('0x12d')],'customerPort':_0x43ca34['customerPort']?_0x43ca34[_0xf5f2('0x12e')]:_0xf5f2('0x127')},'messages':_(_0x43ca34[_0xf5f2('0xee')])['tail']()[_0xf5f2('0x90')]({'secret':![]})[_0xf5f2('0x3e')](function(_0x5981bb){if(_0x5981bb[_0xf5f2('0xde')]){var _0x4586b5=path[_0xf5f2('0xe5')](_0x2bc493,_0x5981bb[_0xf5f2('0xde')][_0xf5f2('0xe7')]);if(fs[_0xf5f2('0x12f')](_0x4586b5)){fs[_0xf5f2('0x130')](_0x4586b5)[_0xf5f2('0x131')](fs[_0xf5f2('0x132')](path['join'](_0x212d97,_0x5981bb[_0xf5f2('0xde')][_0xf5f2('0xe7')])));}}return{'date':moment(_0x5981bb[_0xf5f2('0x85')])[_0xf5f2('0xea')](_0xf5f2('0x128'))[_0xf5f2('0xb2')](),'sender':_0x5981bb[_0xf5f2('0x121')]===_0xf5f2('0x133')?_0x5981bb[_0xf5f2('0x7f')]?_0x5981bb[_0xf5f2('0x7f')][_0xf5f2('0x3f')]:'System':_0x5981bb['Contact']['firstName']+(_0x5981bb[_0xf5f2('0x73')][_0xf5f2('0x120')]?'\x20'+_0x5981bb[_0xf5f2('0x73')]['lastName']:''),'body':_0x5981bb[_0xf5f2('0xde')]?_0x5981bb[_0xf5f2('0xde')][_0xf5f2('0xe7')]:_0x5981bb['body'],'direction':_0x5981bb[_0xf5f2('0x121')]===_0xf5f2('0x133')?'A':'C','secret':_0x5981bb[_0xf5f2('0xfb')],'read':_0x5981bb[_0xf5f2('0x8a')],'attachment':_0x5981bb[_0xf5f2('0xde')]};})[_0xf5f2('0x76')]()};return ejs[_0xf5f2('0x134')](path[_0xf5f2('0xe5')](config['root'],_0xf5f2('0x11a'),_0xf5f2('0x135'),_0xf5f2('0x136')),{'interaction':_0x220300})[_0xf5f2('0x22')](function(_0x510f56){var _0x319b39=path[_0xf5f2('0xe5')](_0x212d97,_0xf5f2('0x137')+_0x43ca34['id']+'-'+_0x26dc8c+'.pdf');var _0x346a95={'path':_0x319b39,'channel':_0xf5f2('0x126'),'interactionId':_0x43ca34['id']};return pdf[_0xf5f2('0x138')](_0x510f56,_0x346a95);})[_0xf5f2('0x22')](function(){return new BPromise(function(_0x249e9b,_0x56ab93){zipdir(_0x212d97,{'saveTo':_0x3712e3},function(_0x21fce7,_0x38a5e3){if(_0x21fce7)return _0x56ab93(_0x21fce7);return _0x249e9b(_0x38a5e3);});})[_0xf5f2('0x22')](function(){return new BPromise(function(_0x4d8a71,_0x1ca92b){rimraf(_0x212d97,function(_0x486c5e){if(_0x486c5e)_0x1ca92b(_0x486c5e);return _0x4d8a71();});});})[_0xf5f2('0x22')](function(){return _0x4f777b[_0xf5f2('0xe8')](_0x3712e3,_0x8ee5fd,function(_0x5089c1){if(_0x5089c1){console[_0xf5f2('0x139')](_0xf5f2('0x13a'),_0x5089c1);}else{fs[_0xf5f2('0x13b')](_0x3712e3);}});});});}else{return _0x4f777b['sendStatus'](0xc8);}})[_0xf5f2('0x2c')](handleError(_0x4f777b,null));};
\ No newline at end of file
index 96be4e6..54cb2c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f9e=['setMaxListeners','update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x1992f1,_0x5c61f0){var _0x413dfe=function(_0x2136e5){while(--_0x2136e5){_0x1992f1['push'](_0x1992f1['shift']());}};_0x413dfe(++_0x5c61f0);}(_0x6f9e,0xfd));var _0xe6f9=function(_0x2d325b,_0x2202fd){_0x2d325b=_0x2d325b-0x0;var _0xf600f0=_0x6f9e[_0x2d325b];return _0xf600f0;};'use strict';var EventEmitter=require(_0xe6f9('0x0'));var ChatInteraction=require(_0xe6f9('0x1'))['db']['ChatInteraction'];var ChatMessage=require(_0xe6f9('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xe6f9('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xe6f9('0x3'),'afterDestroy':_0xe6f9('0x4')};function emitEvent(_0x5ce818){return function(_0x37af94,_0x51709c,_0x573408){_0x37af94['getUsers']({'attributes':['id'],'raw':!![]})[_0xe6f9('0x5')](function(_0x37dec5){_0x37af94[_0xe6f9('0x6')](_0xe6f9('0x7'),_0x37dec5[_0xe6f9('0x8')](function(_0x1e8896){return{'id':_0x1e8896['id']};}));return ChatMessage[_0xe6f9('0x9')]({'where':{'ChatInteractionId':_0x37af94['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe6f9('0x5')](function(_0x46cd49){_0x37af94[_0xe6f9('0x6')](_0xe6f9('0xa'),_0x46cd49[_0xe6f9('0xb')]);ChatInteractionEvents[_0xe6f9('0xc')](_0x5ce818+':'+_0x37af94['id'],_0x37af94);ChatInteractionEvents[_0xe6f9('0xc')](_0x5ce818,_0x37af94);_0x573408(null);})[_0xe6f9('0xd')](_0x573408(null));};}for(var e in events){if(events[_0xe6f9('0xe')](e)){var event=events[e];ChatInteraction[_0xe6f9('0xf')](e,emitEvent(event));}}module[_0xe6f9('0x10')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x9c1c=['ChatMessage','setMaxListeners','save','update','remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','../../mysqldb','ChatInteraction'];(function(_0x673722,_0x275d7e){var _0x21249c=function(_0x25b4e7){while(--_0x25b4e7){_0x673722['push'](_0x673722['shift']());}};_0x21249c(++_0x275d7e);}(_0x9c1c,0x1ae));var _0xc9c1=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x9c1c[_0x28d18d];return _0x470640;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0xc9c1('0x0'))['db'][_0xc9c1('0x1')];var ChatMessage=require('../../mysqldb')['db'][_0xc9c1('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xc9c1('0x3')](0x0);var events={'afterCreate':_0xc9c1('0x4'),'afterUpdate':_0xc9c1('0x5'),'afterDestroy':_0xc9c1('0x6')};function emitEvent(_0x19538a){return function(_0x4db274,_0x275a08,_0x5bf8eb){_0x4db274[_0xc9c1('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x425f9d){_0x4db274[_0xc9c1('0x8')](_0xc9c1('0x9'),_0x425f9d['map'](function(_0x2f1399){return{'id':_0x2f1399['id']};}));return ChatMessage[_0xc9c1('0xa')]({'where':{'ChatInteractionId':_0x4db274['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc9c1('0xb')](function(_0x1c3e80){_0x4db274['setDataValue'](_0xc9c1('0xc'),_0x1c3e80[_0xc9c1('0xd')]);ChatInteractionEvents['emit'](_0x19538a+':'+_0x4db274['id'],_0x4db274);ChatInteractionEvents[_0xc9c1('0xe')](_0x19538a,_0x4db274);_0x5bf8eb(null);})[_0xc9c1('0xf')](_0x5bf8eb(null));};}for(var e in events){if(events[_0xc9c1('0x10')](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0xc9c1('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index f0e8206..74985a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb0c=['./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','rimraf'];(function(_0x2bc0e2,_0x32c1e3){var _0x483198=function(_0x59fbac){while(--_0x59fbac){_0x2bc0e2['push'](_0x2bc0e2['shift']());}};_0x483198(++_0x32c1e3);}(_0xbb0c,0x8c));var _0xcbb0=function(_0x26d77c,_0xdd25a3){_0x26d77c=_0x26d77c-0x0;var _0x9d8f5c=_0xbb0c[_0x26d77c];return _0x9d8f5c;};'use strict';var _=require(_0xcbb0('0x0'));var util=require(_0xcbb0('0x1'));var logger=require('../../config/logger')(_0xcbb0('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(_0xcbb0('0x3'));var config=require('../../config/environment');var attributes=require(_0xcbb0('0x4'));module[_0xcbb0('0x5')]=function(_0x42fbce,_0x555c86){return _0x42fbce[_0xcbb0('0x6')](_0xcbb0('0x7'),attributes,{'tableName':_0xcbb0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3eb84d,_0x54c685,_0x259858){if(_0x3eb84d[_0xcbb0('0x9')](_0xcbb0('0xa'))){_0x3eb84d[_0xcbb0('0xb')]=moment()[_0xcbb0('0xc')](_0xcbb0('0xd'));}_0x259858(null,_0x3eb84d);}},'charset':_0xcbb0('0xe'),'collate':_0xcbb0('0xf')});};
\ No newline at end of file
+var _0x2716=['define','ChatInteraction','chat_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./chatInteraction.attributes'];(function(_0x12918c,_0x1bb0dc){var _0x4890de=function(_0x50390d){while(--_0x50390d){_0x12918c['push'](_0x12918c['shift']());}};_0x4890de(++_0x1bb0dc);}(_0x2716,0xc4));var _0x6271=function(_0x3b2369,_0x4c68b9){_0x3b2369=_0x3b2369-0x0;var _0x5a1367=_0x2716[_0x3b2369];return _0x5a1367;};'use strict';var _=require('lodash');var util=require(_0x6271('0x0'));var logger=require(_0x6271('0x1'))('api');var moment=require(_0x6271('0x2'));var BPromise=require(_0x6271('0x3'));var rp=require(_0x6271('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6271('0x5'));var config=require(_0x6271('0x6'));var attributes=require(_0x6271('0x7'));module['exports']=function(_0x3a8589,_0x3cbf6b){return _0x3a8589[_0x6271('0x8')](_0x6271('0x9'),attributes,{'tableName':_0x6271('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x43bcc5,_0x38f722,_0x11745c){if(_0x43bcc5[_0x6271('0xb')](_0x6271('0xc'))){_0x43bcc5[_0x6271('0xd')]=moment()['format'](_0x6271('0xe'));}_0x11745c(null,_0x43bcc5);}},'charset':_0x6271('0xf'),'collate':_0x6271('0x10')});};
\ No newline at end of file
index ed8423f..637d768 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x594b=['rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','request','then','info','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','request\x20sent','catch','UpdateChatInteraction','ChatInteraction','update','options','where','attributes','limit','AddTagsToChatInteraction','find','addTags','body','ids','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x344596,_0x4b07b1){var _0x888f0b=function(_0x5123c6){while(--_0x5123c6){_0x344596['push'](_0x344596['shift']());}};_0x888f0b(++_0x4b07b1);}(_0x594b,0x1bc));var _0xb594=function(_0x94b35e,_0x2b6997){_0x94b35e=_0x94b35e-0x0;var _0x506243=_0x594b[_0x94b35e];return _0x506243;};'use strict';var _=require(_0xb594('0x0'));var util=require(_0xb594('0x1'));var moment=require(_0xb594('0x2'));var BPromise=require('bluebird');var rs=require(_0xb594('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb594('0x4'))['db'];var utils=require(_0xb594('0x5'));var logger=require(_0xb594('0x6'))(_0xb594('0x7'));var config=require(_0xb594('0x8'));var jayson=require(_0xb594('0x9'));var client=jayson[_0xb594('0xa')]['http']({'port':0x232a});config[_0xb594('0xb')]=_[_0xb594('0xc')](config['redis'],{'host':_0xb594('0xd'),'port':0x18eb});var socket=require(_0xb594('0xe'))(new Redis(config['redis']));require('./chatInteraction.socket')[_0xb594('0xf')](socket);function respondWithRpcPromise(_0x27716d,_0x2d63b9,_0x2fb952){return new BPromise(function(_0x5ed30e,_0x24891f){return client[_0xb594('0x10')](_0x27716d,_0x2fb952)[_0xb594('0x11')](function(_0x2129d8){logger[_0xb594('0x12')]('ChatInteraction,\x20%s,\x20%s',_0x2d63b9,'request\x20sent');logger[_0xb594('0x13')](_0xb594('0x14'),_0x2d63b9,'request\x20sent',JSON[_0xb594('0x15')](_0x2129d8));if(_0x2129d8[_0xb594('0x16')]){if(_0x2129d8[_0xb594('0x16')][_0xb594('0x17')]===0x1f4){logger[_0xb594('0x16')](_0xb594('0x18'),_0x2d63b9,_0x2129d8['error'][_0xb594('0x19')]);return _0x24891f(_0x2129d8[_0xb594('0x16')][_0xb594('0x19')]);}logger[_0xb594('0x16')]('ChatInteraction,\x20%s,\x20%s',_0x2d63b9,_0x2129d8[_0xb594('0x16')][_0xb594('0x19')]);return _0x5ed30e(_0x2129d8[_0xb594('0x16')][_0xb594('0x19')]);}else{logger[_0xb594('0x12')](_0xb594('0x18'),_0x2d63b9,_0xb594('0x1a'));_0x5ed30e(_0x2129d8['result'][_0xb594('0x19')]);}})[_0xb594('0x1b')](function(_0x512368){logger[_0xb594('0x16')](_0xb594('0x18'),_0x2d63b9,_0x512368);_0x24891f(_0x512368);});});}exports[_0xb594('0x1c')]=function(_0x30606f){var _0xf3bc85=this;return new Promise(function(_0x1f6a13,_0xa6c60b){return db[_0xb594('0x1d')][_0xb594('0x1e')](_0x30606f['body'],{'raw':_0x30606f[_0xb594('0x1f')]?_0x30606f[_0xb594('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x30606f[_0xb594('0x1f')]?_0x30606f[_0xb594('0x1f')][_0xb594('0x20')]||null:null,'attributes':_0x30606f[_0xb594('0x1f')]?_0x30606f['options'][_0xb594('0x21')]||null:null,'limit':_0x30606f[_0xb594('0x1f')]?_0x30606f[_0xb594('0x1f')][_0xb594('0x22')]||null:null})[_0xb594('0x11')](function(_0x420c51){logger[_0xb594('0x12')]('UpdateChatInteraction',_0x30606f);logger[_0xb594('0x13')](_0xb594('0x1c'),_0x30606f,JSON[_0xb594('0x15')](_0x420c51));_0x1f6a13(_0x420c51);})[_0xb594('0x1b')](function(_0x57f927){logger[_0xb594('0x16')](_0xb594('0x1c'),_0x57f927[_0xb594('0x19')],_0x30606f);_0xa6c60b(_0xf3bc85['error'](0x1f4,_0x57f927[_0xb594('0x19')]));});});};exports[_0xb594('0x23')]=function(_0x11f633){return new Promise(function(_0x4d70f5,_0x4a2e2b){return db[_0xb594('0x1d')][_0xb594('0x24')]({'where':_0x11f633[_0xb594('0x1f')]?_0x11f633[_0xb594('0x1f')][_0xb594('0x20')]||null:null})[_0xb594('0x11')](function(_0x52e8de){if(_0x52e8de){return _0x52e8de[_0xb594('0x25')](_0x11f633['body']['ids'],_['omit'](_0x11f633[_0xb594('0x26')],[_0xb594('0x27'),'id'])||{});}})['spread'](function(_0x46ae27){logger[_0xb594('0x12')](_0xb594('0x28'),_0x11f633);logger[_0xb594('0x13')](_0xb594('0x28'),_0x11f633,JSON[_0xb594('0x15')](_0x46ae27));_0x4d70f5(_0x46ae27);})[_0xb594('0x1b')](function(_0x1feb40){logger[_0xb594('0x16')](_0xb594('0x28'),_0x1feb40[_0xb594('0x19')],_0x11f633);_0x4a2e2b(_this[_0xb594('0x16')](0x1f4,_0x1feb40[_0xb594('0x19')]));});});};
\ No newline at end of file
+var _0xd542=['stringify','error','code','message','result','catch','UpdateChatInteraction','ChatInteraction','update','body','options','attributes','limit','AddTagsToChatInteraction','find','addTags','ids','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x240cf5,_0x150de1){var _0x4fef07=function(_0x32d3d7){while(--_0x32d3d7){_0x240cf5['push'](_0x240cf5['shift']());}};_0x4fef07(++_0x150de1);}(_0xd542,0x1ec));var _0x2d54=function(_0x262254,_0x135a4f){_0x262254=_0x262254-0x0;var _0x13baed=_0xd542[_0x262254];return _0x13baed;};'use strict';var _=require(_0x2d54('0x0'));var util=require('util');var moment=require(_0x2d54('0x1'));var BPromise=require(_0x2d54('0x2'));var rs=require(_0x2d54('0x3'));var fs=require('fs');var Redis=require(_0x2d54('0x4'));var db=require(_0x2d54('0x5'))['db'];var utils=require(_0x2d54('0x6'));var logger=require('../../config/logger')(_0x2d54('0x7'));var config=require(_0x2d54('0x8'));var jayson=require(_0x2d54('0x9'));var client=jayson[_0x2d54('0xa')][_0x2d54('0xb')]({'port':0x232a});config[_0x2d54('0xc')]=_[_0x2d54('0xd')](config[_0x2d54('0xc')],{'host':_0x2d54('0xe'),'port':0x18eb});var socket=require(_0x2d54('0xf'))(new Redis(config['redis']));require(_0x2d54('0x10'))[_0x2d54('0x11')](socket);function respondWithRpcPromise(_0x2f47c2,_0x432a2e,_0x49d6b6){return new BPromise(function(_0x4510c0,_0x5dda9a){return client[_0x2d54('0x12')](_0x2f47c2,_0x49d6b6)['then'](function(_0x3d421f){logger[_0x2d54('0x13')](_0x2d54('0x14'),_0x432a2e,'request\x20sent');logger[_0x2d54('0x15')](_0x2d54('0x16'),_0x432a2e,_0x2d54('0x17'),JSON[_0x2d54('0x18')](_0x3d421f));if(_0x3d421f[_0x2d54('0x19')]){if(_0x3d421f[_0x2d54('0x19')][_0x2d54('0x1a')]===0x1f4){logger[_0x2d54('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x432a2e,_0x3d421f[_0x2d54('0x19')]['message']);return _0x5dda9a(_0x3d421f[_0x2d54('0x19')][_0x2d54('0x1b')]);}logger[_0x2d54('0x19')](_0x2d54('0x14'),_0x432a2e,_0x3d421f[_0x2d54('0x19')][_0x2d54('0x1b')]);return _0x4510c0(_0x3d421f['error']['message']);}else{logger[_0x2d54('0x13')](_0x2d54('0x14'),_0x432a2e,_0x2d54('0x17'));_0x4510c0(_0x3d421f[_0x2d54('0x1c')][_0x2d54('0x1b')]);}})[_0x2d54('0x1d')](function(_0x30f921){logger[_0x2d54('0x19')](_0x2d54('0x14'),_0x432a2e,_0x30f921);_0x5dda9a(_0x30f921);});});}exports[_0x2d54('0x1e')]=function(_0x456983){var _0x408244=this;return new Promise(function(_0x57b515,_0x3540e9){return db[_0x2d54('0x1f')][_0x2d54('0x20')](_0x456983[_0x2d54('0x21')],{'raw':_0x456983[_0x2d54('0x22')]?_0x456983[_0x2d54('0x22')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x456983['options']?_0x456983[_0x2d54('0x22')]['where']||null:null,'attributes':_0x456983[_0x2d54('0x22')]?_0x456983[_0x2d54('0x22')][_0x2d54('0x23')]||null:null,'limit':_0x456983['options']?_0x456983[_0x2d54('0x22')][_0x2d54('0x24')]||null:null})['then'](function(_0xbfe428){logger[_0x2d54('0x13')](_0x2d54('0x1e'),_0x456983);logger[_0x2d54('0x15')](_0x2d54('0x1e'),_0x456983,JSON[_0x2d54('0x18')](_0xbfe428));_0x57b515(_0xbfe428);})['catch'](function(_0x3dac85){logger['error']('UpdateChatInteraction',_0x3dac85[_0x2d54('0x1b')],_0x456983);_0x3540e9(_0x408244['error'](0x1f4,_0x3dac85[_0x2d54('0x1b')]));});});};exports[_0x2d54('0x25')]=function(_0x144c34){return new Promise(function(_0x1be88b,_0x34afdd){return db[_0x2d54('0x1f')][_0x2d54('0x26')]({'where':_0x144c34['options']?_0x144c34['options']['where']||null:null})['then'](function(_0x27444c){if(_0x27444c){return _0x27444c[_0x2d54('0x27')](_0x144c34[_0x2d54('0x21')][_0x2d54('0x28')],_['omit'](_0x144c34[_0x2d54('0x21')],['ids','id'])||{});}})[_0x2d54('0x29')](function(_0x180133){logger[_0x2d54('0x13')]('AddTags',_0x144c34);logger['debug'](_0x2d54('0x2a'),_0x144c34,JSON[_0x2d54('0x18')](_0x180133));_0x1be88b(_0x180133);})[_0x2d54('0x1d')](function(_0x49ff29){logger[_0x2d54('0x19')](_0x2d54('0x2a'),_0x49ff29['message'],_0x144c34);_0x34afdd(_this[_0x2d54('0x19')](0x1f4,_0x49ff29['message']));});});};
\ No newline at end of file
index 73eb44b..d386541 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe52=['chatInteraction:','./chatInteraction.events','save','remove','emit','register','length'];(function(_0x5e7661,_0x5aa521){var _0x1866cf=function(_0x133c22){while(--_0x133c22){_0x5e7661['push'](_0x5e7661['shift']());}};_0x1866cf(++_0x5aa521);}(_0xfe52,0x1c1));var _0x2fe5=function(_0x22b857,_0x2b9c4a){_0x22b857=_0x22b857-0x0;var _0x405778=_0xfe52[_0x22b857];return _0x405778;};'use strict';var ChatInteractionEvents=require(_0x2fe5('0x0'));var events=[_0x2fe5('0x1'),_0x2fe5('0x2'),'update'];function createListener(_0x500ca3,_0x9df226){return function(_0x39683a){_0x9df226[_0x2fe5('0x3')](_0x500ca3,_0x39683a);};}function removeListener(_0x424d85,_0x37fb28){return function(){ChatInteractionEvents['removeListener'](_0x424d85,_0x37fb28);};}exports[_0x2fe5('0x4')]=function(_0xc65664){for(var _0x654959=0x0,_0x19210b=events[_0x2fe5('0x5')];_0x654959<_0x19210b;_0x654959++){var _0x4defaf=events[_0x654959];var _0x1ce8a2=createListener(_0x2fe5('0x6')+_0x4defaf,_0xc65664);ChatInteractionEvents['on'](_0x4defaf,_0x1ce8a2);}};
\ No newline at end of file
+var _0x1cda=['remove','emit','removeListener','length','chatInteraction:','./chatInteraction.events','save'];(function(_0x4ad6e4,_0x103161){var _0x11e62a=function(_0x10dc1e){while(--_0x10dc1e){_0x4ad6e4['push'](_0x4ad6e4['shift']());}};_0x11e62a(++_0x103161);}(_0x1cda,0x91));var _0xa1cd=function(_0x10cc03,_0x17c4ce){_0x10cc03=_0x10cc03-0x0;var _0x33c91c=_0x1cda[_0x10cc03];return _0x33c91c;};'use strict';var ChatInteractionEvents=require(_0xa1cd('0x0'));var events=[_0xa1cd('0x1'),_0xa1cd('0x2'),'update'];function createListener(_0x2d946c,_0x18f6ba){return function(_0x55fbf5){_0x18f6ba[_0xa1cd('0x3')](_0x2d946c,_0x55fbf5);};}function removeListener(_0x51ed92,_0x378df5){return function(){ChatInteractionEvents[_0xa1cd('0x4')](_0x51ed92,_0x378df5);};}exports['register']=function(_0x5b9df2){for(var _0x25d831=0x0,_0x1e31c0=events[_0xa1cd('0x5')];_0x25d831<_0x1e31c0;_0x25d831++){var _0x270ce6=events[_0x25d831];var _0xcb93bd=createListener(_0xa1cd('0x6')+_0x270ce6,_0x5b9df2);ChatInteractionEvents['on'](_0x270ce6,_0xcb93bd);}};
\ No newline at end of file
index 8dd1a3d..305d97b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcdf=['/describe','describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','getMessages','getMyMessages','download','post','createVidaooSession','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','replace','/:id/attachment_upload','single','attachmentUpload','tracked','chatinteraction:addtags','addTags','update','put','/:id/custom_update','customUpdate','/:id/abandon','/:id/close','close','delete','chat','chatinteraction:destroy','destroy','/:id/tags','removeTags','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index'];(function(_0x2a3059,_0x59214e){var _0x24b64c=function(_0x1286df){while(--_0x1286df){_0x2a3059['push'](_0x2a3059['shift']());}};_0x24b64c(++_0x59214e);}(_0xdcdf,0x16f));var _0xfdcd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdcdf[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xfdcd('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfdcd('0x1'));var router=express['Router']();var fs_extra=require(_0xfdcd('0x2'));var auth=require(_0xfdcd('0x3'));var interaction=require(_0xfdcd('0x4'));var config=require(_0xfdcd('0x5'));var controller=require('./chatInteraction.controller');router[_0xfdcd('0x6')]('/',auth[_0xfdcd('0x7')](),controller[_0xfdcd('0x8')]);router[_0xfdcd('0x6')](_0xfdcd('0x9'),auth[_0xfdcd('0x7')](),controller[_0xfdcd('0xa')]);router['get'](_0xfdcd('0xb'),auth[_0xfdcd('0xc')](),controller[_0xfdcd('0xd')]);router['get'](_0xfdcd('0xe'),auth[_0xfdcd('0xc')](),controller['attachmentDownload']);router[_0xfdcd('0x6')]('/:id/messages',auth['isAuthenticated'](),controller[_0xfdcd('0xf')]);router[_0xfdcd('0x6')]('/:id/my_messages',auth[_0xfdcd('0xc')](),controller[_0xfdcd('0x10')]);router[_0xfdcd('0x6')]('/:id/download',auth[_0xfdcd('0x7')](),controller[_0xfdcd('0x11')]);router[_0xfdcd('0x12')]('/',auth[_0xfdcd('0x7')](),controller['create']);router['post']('/:id/vidaoo',auth[_0xfdcd('0x7')](),controller[_0xfdcd('0x13')]);var upload=multer({'storage':multer[_0xfdcd('0x14')]({'destination':function(_0x3f5ed5,_0x1a277b,_0x243b19){_0x243b19(null,path[_0xfdcd('0x15')](config[_0xfdcd('0x16')],_0xfdcd('0x17')));},'filename':function(_0x5cea02,_0x38feae,_0x28e0c5){_0x28e0c5(null,util[_0xfdcd('0x18')](_0xfdcd('0x19'),Date[_0xfdcd('0x1a')](),_0x38feae['originalname'][_0xfdcd('0x1b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xfdcd('0x12')](_0xfdcd('0x1c'),upload[_0xfdcd('0x1d')]('file'),controller[_0xfdcd('0x1e')]);router[_0xfdcd('0x12')]('/:id/messages',auth[_0xfdcd('0xc')](),controller['addMessage']);router[_0xfdcd('0x12')]('/:id/tags',auth[_0xfdcd('0x7')](),interaction[_0xfdcd('0x1f')]('chat',_0xfdcd('0x20')),controller[_0xfdcd('0x21')]);router['put'](_0xfdcd('0xb'),auth[_0xfdcd('0x7')](),interaction['tracked']('chat','chatinteraction:update'),controller[_0xfdcd('0x22')]);router[_0xfdcd('0x23')](_0xfdcd('0x24'),controller[_0xfdcd('0x25')]);router[_0xfdcd('0x23')](_0xfdcd('0x26'),auth['isChatInteractionAuthorized'](),controller['abandon']);router[_0xfdcd('0x23')](_0xfdcd('0x27'),controller[_0xfdcd('0x28')]);router[_0xfdcd('0x29')](_0xfdcd('0xb'),auth[_0xfdcd('0x7')](),interaction[_0xfdcd('0x1f')](_0xfdcd('0x2a'),_0xfdcd('0x2b')),controller[_0xfdcd('0x2c')]);router[_0xfdcd('0x29')](_0xfdcd('0x2d'),auth[_0xfdcd('0x7')](),controller[_0xfdcd('0x2e')]);module['exports']=router;
\ No newline at end of file
+var _0x66aa=['/:id/tags','tracked','chatinteraction:addtags','addTags','put','chat','chatinteraction:update','/:id/custom_update','customUpdate','abandon','/:id/close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','/:id/messages','getMessages','getMyMessages','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','join','server/files/attachments/','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage'];(function(_0x10a5c6,_0x2c4e02){var _0x105aa2=function(_0x2ef7e2){while(--_0x2ef7e2){_0x10a5c6['push'](_0x10a5c6['shift']());}};_0x105aa2(++_0x2c4e02);}(_0x66aa,0x11e));var _0xa66a=function(_0x47a204,_0x24b906){_0x47a204=_0x47a204-0x0;var _0x5623fc=_0x66aa[_0x47a204];return _0x5623fc;};'use strict';var multer=require(_0xa66a('0x0'));var util=require(_0xa66a('0x1'));var path=require(_0xa66a('0x2'));var timeout=require(_0xa66a('0x3'));var express=require(_0xa66a('0x4'));var router=express[_0xa66a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa66a('0x6'));var config=require(_0xa66a('0x7'));var controller=require(_0xa66a('0x8'));router[_0xa66a('0x9')]('/',auth[_0xa66a('0xa')](),controller[_0xa66a('0xb')]);router[_0xa66a('0x9')](_0xa66a('0xc'),auth[_0xa66a('0xa')](),controller['describe']);router[_0xa66a('0x9')](_0xa66a('0xd'),auth[_0xa66a('0xe')](),controller[_0xa66a('0xf')]);router[_0xa66a('0x9')](_0xa66a('0x10'),auth[_0xa66a('0xe')](),controller['attachmentDownload']);router[_0xa66a('0x9')](_0xa66a('0x11'),auth['isAuthenticated'](),controller[_0xa66a('0x12')]);router[_0xa66a('0x9')]('/:id/my_messages',auth[_0xa66a('0xe')](),controller[_0xa66a('0x13')]);router[_0xa66a('0x9')](_0xa66a('0x14'),auth[_0xa66a('0xa')](),controller[_0xa66a('0x15')]);router[_0xa66a('0x16')]('/',auth[_0xa66a('0xa')](),controller[_0xa66a('0x17')]);router[_0xa66a('0x16')](_0xa66a('0x18'),auth[_0xa66a('0xa')](),controller[_0xa66a('0x19')]);var upload=multer({'storage':multer[_0xa66a('0x1a')]({'destination':function(_0x54924f,_0x4bd5fb,_0x1bd5ed){_0x1bd5ed(null,path[_0xa66a('0x1b')](config['root'],_0xa66a('0x1c')));},'filename':function(_0x4776d5,_0x4d6c8d,_0x5232c7){_0x5232c7(null,util[_0xa66a('0x1d')](_0xa66a('0x1e'),Date['now'](),_0x4d6c8d[_0xa66a('0x1f')][_0xa66a('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xa66a('0x21'),upload[_0xa66a('0x22')](_0xa66a('0x23')),controller[_0xa66a('0x24')]);router[_0xa66a('0x16')](_0xa66a('0x11'),auth[_0xa66a('0xe')](),controller[_0xa66a('0x25')]);router['post'](_0xa66a('0x26'),auth[_0xa66a('0xa')](),interaction[_0xa66a('0x27')]('chat',_0xa66a('0x28')),controller[_0xa66a('0x29')]);router[_0xa66a('0x2a')](_0xa66a('0xd'),auth[_0xa66a('0xa')](),interaction['tracked'](_0xa66a('0x2b'),_0xa66a('0x2c')),controller['update']);router[_0xa66a('0x2a')](_0xa66a('0x2d'),controller[_0xa66a('0x2e')]);router[_0xa66a('0x2a')]('/:id/abandon',auth[_0xa66a('0xe')](),controller[_0xa66a('0x2f')]);router[_0xa66a('0x2a')](_0xa66a('0x30'),controller['close']);router[_0xa66a('0x31')](_0xa66a('0xd'),auth[_0xa66a('0xa')](),interaction['tracked'](_0xa66a('0x2b'),_0xa66a('0x32')),controller[_0xa66a('0x33')]);router['delete']('/:id/tags',auth['isAuthenticated'](),controller[_0xa66a('0x34')]);module[_0xa66a('0x35')]=router;
\ No newline at end of file
index f5f2271..19e572a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa995=['INTEGER','sequelize','TEXT','medium','BOOLEAN'];(function(_0x18e97c,_0x39c67b){var _0x4a7804=function(_0x30b1b3){while(--_0x30b1b3){_0x18e97c['push'](_0x18e97c['shift']());}};_0x4a7804(++_0x39c67b);}(_0xa995,0x6a));var _0x5a99=function(_0x169199,_0x2958dc){_0x169199=_0x169199-0x0;var _0x11425e=_0xa995[_0x169199];return _0x11425e;};'use strict';var Sequelize=require(_0x5a99('0x0'));module['exports']={'body':{'type':Sequelize[_0x5a99('0x1')](_0x5a99('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x5a99('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x5a99('0x4')]}};
\ No newline at end of file
+var _0x4782=['medium','BOOLEAN','INTEGER','exports'];(function(_0x5a37ba,_0xda7624){var _0x3cc9f3=function(_0x2cf579){while(--_0x2cf579){_0x5a37ba['push'](_0x5a37ba['shift']());}};_0x3cc9f3(++_0xda7624);}(_0x4782,0xbb));var _0x2478=function(_0x1cc1fd,_0x33f9f1){_0x1cc1fd=_0x1cc1fd-0x0;var _0x5e3d41=_0x4782[_0x1cc1fd];return _0x5e3d41;};'use strict';var Sequelize=require('sequelize');module[_0x2478('0x0')]={'body':{'type':Sequelize['TEXT'](_0x2478('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0x2478('0x2')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x2478('0x3')]}};
\ No newline at end of file
index ca49e07..8616ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a15=['fields','length','nolimit','order','sort','pick','filter','merge','where','options','count','include','findAll','show','params','includeAll','catch','create','update','body','find','describe','get','messages','lastMessageAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','agent','admin','user','fullname','role','userpic','internal','online','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','resourceId','push','FromId','ToId','read','-createdAt','all','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','lodash','squel','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','status','json','offset','undefined','limit','set','apply','reject','destroy','then','end','sendStatus','stack','name','map','ChatInternalMessage','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a15,0x10e));var _0x55a1=function(_0x20683d,_0x5965e1){_0x20683d=_0x20683d-0x0;var _0x10cef6=_0x5a15[_0x20683d];return _0x10cef6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x55a1('0x0'));var jsonpatch=require(_0x55a1('0x1'));var rp=require(_0x55a1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x55a1('0x3'));var util=require(_0x55a1('0x4'));var path=require(_0x55a1('0x5'));var sox=require(_0x55a1('0x6'));var csv=require('to-csv');var ejs=require(_0x55a1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x55a1('0x8'));var squel=require(_0x55a1('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x55a1('0xa'));var toCsv=require(_0x55a1('0xb'));var querystring=require(_0x55a1('0xc'));var Papa=require('papaparse');var Redis=require(_0x55a1('0xd'));var authService=require(_0x55a1('0xe'));var qs=require(_0x55a1('0xf'));var as=require(_0x55a1('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x55a1('0x11'))(_0x55a1('0x12'));var utils=require(_0x55a1('0x13'));var config=require(_0x55a1('0x14'));var licenseUtil=require(_0x55a1('0x15'));var db=require(_0x55a1('0x16'))['db'];config[_0x55a1('0x17')]=_[_0x55a1('0x18')](config[_0x55a1('0x17')],{'host':_0x55a1('0x19'),'port':0x18eb});var socket=require(_0x55a1('0x1a'))(new Redis(config[_0x55a1('0x17')]));require(_0x55a1('0x1b'))[_0x55a1('0x1c')](socket);function respondWithStatusCode(_0x51fac2,_0x83145a){_0x83145a=_0x83145a||0xcc;return function(_0x2d47ce){if(_0x2d47ce){return _0x51fac2['sendStatus'](_0x83145a);}return _0x51fac2[_0x55a1('0x1d')](_0x83145a)['end']();};}function respondWithResult(_0xd6391e,_0x282f65){_0x282f65=_0x282f65||0xc8;return function(_0x5741eb){if(_0x5741eb){return _0xd6391e[_0x55a1('0x1d')](_0x282f65)[_0x55a1('0x1e')](_0x5741eb);}};}function respondWithFilteredResult(_0xc8e43a,_0x54350d){return function(_0x3df3e4){if(_0x3df3e4){var _0x25e9f0=typeof _0x54350d[_0x55a1('0x1f')]===_0x55a1('0x20')&&typeof _0x54350d[_0x55a1('0x21')]===_0x55a1('0x20');var _0x17ea48=_0x3df3e4['count'];var _0x229a4d=_0x25e9f0?0x0:_0x54350d['offset'];var _0xa6b729=_0x25e9f0?_0x3df3e4['count']:_0x54350d[_0x55a1('0x1f')]+_0x54350d[_0x55a1('0x21')];var _0x1d763b;if(_0xa6b729>=_0x17ea48){_0xa6b729=_0x17ea48;_0x1d763b=0xc8;}else{_0x1d763b=0xce;}_0xc8e43a['status'](_0x1d763b);return _0xc8e43a[_0x55a1('0x22')]('Content-Range',_0x229a4d+'-'+_0xa6b729+'/'+_0x17ea48)[_0x55a1('0x1e')](_0x3df3e4);}return null;};}function patchUpdates(_0x3ae781){return function(_0x16dc25){try{jsonpatch[_0x55a1('0x23')](_0x16dc25,_0x3ae781,!![]);}catch(_0x45d004){return BPromise[_0x55a1('0x24')](_0x45d004);}return _0x16dc25['save']();};}function saveUpdates(_0x377266,_0x3d55f1){return function(_0x23684d){if(_0x23684d){return _0x23684d['update'](_0x377266)['then'](function(_0x4761ba){return _0x4761ba;});}return null;};}function removeEntity(_0xb2309c,_0x1147d5){return function(_0x402622){if(_0x402622){return _0x402622[_0x55a1('0x25')]()[_0x55a1('0x26')](function(){_0xb2309c[_0x55a1('0x1d')](0xcc)[_0x55a1('0x27')]();});}};}function handleEntityNotFound(_0x3fcda8,_0x474493){return function(_0x1166d3){if(!_0x1166d3){_0x3fcda8[_0x55a1('0x28')](0x194);}return _0x1166d3;};}function handleError(_0x18efa1,_0x200835){_0x200835=_0x200835||0x1f4;return function(_0x5cebe4){logger['error'](_0x5cebe4[_0x55a1('0x29')]);if(_0x5cebe4['name']){delete _0x5cebe4[_0x55a1('0x2a')];}_0x18efa1[_0x55a1('0x1d')](_0x200835)['send'](_0x5cebe4);};}exports['index']=function(_0x4502eb,_0x4106ad){var _0x56d45d={},_0x38e2a5={},_0x35707d={'count':0x0,'rows':[]};var _0x269032=_[_0x55a1('0x2b')](db[_0x55a1('0x2c')][_0x55a1('0x2d')],function(_0x2eae41){return{'name':_0x2eae41[_0x55a1('0x2e')],'type':_0x2eae41[_0x55a1('0x2f')]['key']};});_0x38e2a5[_0x55a1('0x30')]=_['map'](_0x269032,_0x55a1('0x2a'));_0x38e2a5['query']=_[_0x55a1('0x31')](_0x4502eb[_0x55a1('0x32')]);_0x38e2a5[_0x55a1('0x33')]=_[_0x55a1('0x34')](_0x38e2a5[_0x55a1('0x30')],_0x38e2a5[_0x55a1('0x32')]);_0x56d45d[_0x55a1('0x35')]=_[_0x55a1('0x34')](_0x38e2a5[_0x55a1('0x30')],qs[_0x55a1('0x36')](_0x4502eb[_0x55a1('0x32')][_0x55a1('0x36')]));_0x56d45d['attributes']=_0x56d45d[_0x55a1('0x35')][_0x55a1('0x37')]?_0x56d45d[_0x55a1('0x35')]:_0x38e2a5[_0x55a1('0x30')];if(!_0x4502eb[_0x55a1('0x32')]['hasOwnProperty'](_0x55a1('0x38'))){_0x56d45d['limit']=qs[_0x55a1('0x21')](_0x4502eb[_0x55a1('0x32')][_0x55a1('0x21')]);_0x56d45d[_0x55a1('0x1f')]=qs[_0x55a1('0x1f')](_0x4502eb[_0x55a1('0x32')][_0x55a1('0x1f')]);}_0x56d45d[_0x55a1('0x39')]=qs[_0x55a1('0x3a')](_0x4502eb[_0x55a1('0x32')][_0x55a1('0x3a')]);_0x56d45d['where']=qs['filters'](_[_0x55a1('0x3b')](_0x4502eb[_0x55a1('0x32')],_0x38e2a5[_0x55a1('0x33')]),_0x269032);if(_0x4502eb['query'][_0x55a1('0x3c')]){_0x56d45d['where']=_[_0x55a1('0x3d')](_0x56d45d[_0x55a1('0x3e')],{'$or':_[_0x55a1('0x2b')](_0x269032,function(_0x191266){if(_0x191266['type']!=='VIRTUAL'){var _0x7b370b={};_0x7b370b[_0x191266['name']]={'$like':'%'+_0x4502eb[_0x55a1('0x32')][_0x55a1('0x3c')]+'%'};return _0x7b370b;}})});}_0x56d45d=_[_0x55a1('0x3d')]({},_0x56d45d,_0x4502eb[_0x55a1('0x3f')]);var _0x2e0f60={'where':_0x56d45d['where']};return db[_0x55a1('0x2c')][_0x55a1('0x40')](_0x2e0f60)[_0x55a1('0x26')](function(_0x529002){_0x35707d['count']=_0x529002;if(_0x4502eb['query']['includeAll']){_0x56d45d[_0x55a1('0x41')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0x55a1('0x42')](_0x56d45d);})[_0x55a1('0x26')](function(_0xdaf2ba){_0x35707d['rows']=_0xdaf2ba;return _0x35707d;})[_0x55a1('0x26')](respondWithFilteredResult(_0x4106ad,_0x56d45d))['catch'](handleError(_0x4106ad,null));};exports[_0x55a1('0x43')]=function(_0x19c5fb,_0x2a9157){var _0x4a26a2={'raw':!![],'where':{'id':_0x19c5fb[_0x55a1('0x44')]['id']}},_0x32c750={};_0x32c750[_0x55a1('0x30')]=_['keys'](db[_0x55a1('0x2c')][_0x55a1('0x2d')]);_0x32c750[_0x55a1('0x32')]=_[_0x55a1('0x31')](_0x19c5fb['query']);_0x32c750[_0x55a1('0x33')]=_[_0x55a1('0x34')](_0x32c750[_0x55a1('0x30')],_0x32c750[_0x55a1('0x32')]);_0x4a26a2[_0x55a1('0x35')]=_[_0x55a1('0x34')](_0x32c750['model'],qs[_0x55a1('0x36')](_0x19c5fb[_0x55a1('0x32')]['fields']));_0x4a26a2[_0x55a1('0x35')]=_0x4a26a2[_0x55a1('0x35')]['length']?_0x4a26a2[_0x55a1('0x35')]:_0x32c750['model'];if(_0x19c5fb[_0x55a1('0x32')][_0x55a1('0x45')]){_0x4a26a2[_0x55a1('0x41')]=[{'all':!![]}];}_0x4a26a2=_[_0x55a1('0x3d')]({},_0x4a26a2,_0x19c5fb[_0x55a1('0x3f')]);return db[_0x55a1('0x2c')]['find'](_0x4a26a2)[_0x55a1('0x26')](handleEntityNotFound(_0x2a9157,null))[_0x55a1('0x26')](respondWithResult(_0x2a9157,null))[_0x55a1('0x46')](handleError(_0x2a9157,null));};exports['create']=function(_0x5705d6,_0x5928fb){return db[_0x55a1('0x2c')][_0x55a1('0x47')](_0x5705d6['body'],{})[_0x55a1('0x26')](respondWithResult(_0x5928fb,0xc9))[_0x55a1('0x46')](handleError(_0x5928fb,null));};exports[_0x55a1('0x48')]=function(_0x231b07,_0x204c5d){if(_0x231b07[_0x55a1('0x49')]['id']){delete _0x231b07[_0x55a1('0x49')]['id'];}return db['ChatInternalMessage'][_0x55a1('0x4a')]({'where':{'id':_0x231b07['params']['id']}})['then'](handleEntityNotFound(_0x204c5d,null))[_0x55a1('0x26')](saveUpdates(_0x231b07[_0x55a1('0x49')],null))[_0x55a1('0x26')](respondWithResult(_0x204c5d,null))[_0x55a1('0x46')](handleError(_0x204c5d,null));};exports['destroy']=function(_0xd33d51,_0x3ee498){return db['ChatInternalMessage'][_0x55a1('0x4a')]({'where':{'id':_0xd33d51['params']['id']}})[_0x55a1('0x26')](handleEntityNotFound(_0x3ee498,null))['then'](removeEntity(_0x3ee498,null))[_0x55a1('0x46')](handleError(_0x3ee498,null));};exports[_0x55a1('0x4b')]=function(_0x4a1a2e,_0x5d6c52){return db[_0x55a1('0x2c')][_0x55a1('0x4b')]()[_0x55a1('0x26')](respondWithResult(_0x5d6c52,null))[_0x55a1('0x46')](handleError(_0x5d6c52,null));};function wrapUser(_0x1fe3c8){return function(_0x3a0fba){var _0x444f8e=_0x1fe3c8[_0x55a1('0x4c')]({'plain':!![]});_0x444f8e[_0x55a1('0x4d')]=[];if(_0x3a0fba){_0x444f8e[_0x55a1('0x4e')]=_0x3a0fba['createdAt'];_0x444f8e[_0x55a1('0x4f')]=_0x3a0fba;}else{_0x444f8e['lastMessageAt']=moment(0x0)[_0x55a1('0x50')](_0x55a1('0x51'));_0x444f8e[_0x55a1('0x4f')]={};}return _0x444f8e;};}exports['getUsers']=function(_0x4dd222,_0x1a2371,_0x2d1cb2){var _0x2c1701=[];return db['User']['findAll']({'where':{'role':[_0x55a1('0x52'),_0x55a1('0x53'),_0x55a1('0x54')]},'attributes':['id',_0x55a1('0x55'),'name',_0x55a1('0x56'),_0x55a1('0x57'),_0x55a1('0x58'),_0x55a1('0x59'),_0x55a1('0x5a'),_0x55a1('0x5b'),_0x55a1('0x5c')],'order':qs[_0x55a1('0x3a')]('-online'),'include':[{'model':db[_0x55a1('0x5d')],'as':_0x55a1('0x5e'),'attributes':['id',_0x55a1('0x2a'),_0x55a1('0x2f')],'through':{'attributes':[]}}]})[_0x55a1('0x26')](function(_0x2fa356){if(_0x2fa356){var _0x3a17ad=_0x4dd222[_0x55a1('0x54')][_0x55a1('0x4c')]({'plain':!![]});if(!_0x3a17ad)throw new Error(_0x55a1('0x5f'));if(_0x3a17ad[_0x55a1('0x56')]===_0x55a1('0x54')){return db[_0x55a1('0x60')][_0x55a1('0x4a')]({'where':{'name':_0x55a1('0x61'),'userProfileId':_0x3a17ad[_0x55a1('0x62')]},'raw':!![]})['then'](function(_0x51027b){if(_0x51027b){if(_0x51027b[_0x55a1('0x63')]===0x0){return db[_0x55a1('0x64')][_0x55a1('0x42')]({'where':{'sectionId':_0x51027b['id']},'raw':!![]})[_0x55a1('0x26')](function(_0x5d026e){var _0x40d598=[];if(_['isEmpty'](_0x5d026e)){_0x40d598=_['filter'](_0x2fa356,function(_0x6b21f1){if(_0x6b21f1[_0x55a1('0x56')]!=='agent'){return _0x6b21f1;}});return _0x40d598;}else{for(var _0x17dda6=0x0;_0x17dda6<_0x2fa356[_0x55a1('0x37')];_0x17dda6++){var _0x291791=_0x2fa356[_0x17dda6];if(_0x291791[_0x55a1('0x56')]===_0x55a1('0x52')){var _0x1e6872=_[_0x55a1('0x4a')](_0x5d026e,function(_0x4fc50f){return _0x4fc50f[_0x55a1('0x65')]===_0x291791['id'];});if(_0x1e6872)_0x40d598[_0x55a1('0x66')](_0x291791);}else{_0x40d598[_0x55a1('0x66')](_0x291791);}}return _0x40d598;}});}else{return _0x2fa356;}}else{var _0x465f5e=_[_0x55a1('0x3c')](_0x2fa356,function(_0x1a2805){if(_0x1a2805[_0x55a1('0x56')]!==_0x55a1('0x52')){return _0x1a2805;}});return _0x465f5e;}});}else{return _0x2fa356;}}})[_0x55a1('0x26')](function(_0x51a4fc){var _0xa1779b=[];if(_0x51a4fc){_0x2c1701=_0x51a4fc;for(var _0x392fb1=0x0;_0x392fb1<_0x51a4fc[_0x55a1('0x37')];_0x392fb1+=0x1){_0x2c1701[_0x392fb1]['messages']=[];_0xa1779b['push'](db['ChatInternalMessage'][_0x55a1('0x4a')]({'where':{'FromId':[_0x4dd222[_0x55a1('0x54')]['id'],_0x51a4fc[_0x392fb1]['id']],'ToId':[_0x4dd222['user']['id'],_0x51a4fc[_0x392fb1]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x55a1('0x67'),_0x55a1('0x68'),_0x55a1('0x69'),'body'],'order':qs['sort'](_0x55a1('0x6a')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x51a4fc[_0x392fb1])));}return BPromise[_0x55a1('0x6b')](_0xa1779b);}return[];})[_0x55a1('0x26')](function(_0x20f406){return{'rows':_0x20f406,'count':_0x20f406['length']};})[_0x55a1('0x26')](respondWithResult(_0x1a2371,null))[_0x55a1('0x46')](handleError(_0x1a2371,null));};
\ No newline at end of file
+var _0xfbf9=['stack','name','send','map','ChatInternalMessage','rawAttributes','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','limit','order','sort','where','filter','VIRTUAL','merge','includeAll','rows','show','params','include','options','find','catch','create','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','fullname','role','userpic','online','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','isEmpty','length','resourceId','push','FromId','ToId','read','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','lodash','squel','crypto','jsforce','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','./chatInternalMessage.socket','register','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x3dec6b,_0x4b511b){var _0x3cfa23=function(_0x4e53a6){while(--_0x4e53a6){_0x3dec6b['push'](_0x3dec6b['shift']());}};_0x3cfa23(++_0x4b511b);}(_0xfbf9,0xba));var _0x9fbf=function(_0x4247e5,_0x30b7bb){_0x4247e5=_0x4247e5-0x0;var _0x5ee3d5=_0xfbf9[_0x4247e5];return _0x5ee3d5;};'use strict';var emlformat=require(_0x9fbf('0x0'));var rimraf=require(_0x9fbf('0x1'));var zipdir=require(_0x9fbf('0x2'));var jsonpatch=require(_0x9fbf('0x3'));var rp=require(_0x9fbf('0x4'));var moment=require('moment');var BPromise=require(_0x9fbf('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9fbf('0x6'));var sox=require(_0x9fbf('0x7'));var csv=require(_0x9fbf('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9fbf('0x9'));var squel=require(_0x9fbf('0xa'));var crypto=require(_0x9fbf('0xb'));var jsforce=require(_0x9fbf('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9fbf('0xd'));var authService=require(_0x9fbf('0xe'));var qs=require(_0x9fbf('0xf'));var as=require(_0x9fbf('0x10'));var hardwareService=require(_0x9fbf('0x11'));var logger=require(_0x9fbf('0x12'))(_0x9fbf('0x13'));var utils=require(_0x9fbf('0x14'));var config=require(_0x9fbf('0x15'));var licenseUtil=require(_0x9fbf('0x16'));var db=require(_0x9fbf('0x17'))['db'];config[_0x9fbf('0x18')]=_[_0x9fbf('0x19')](config[_0x9fbf('0x18')],{'host':_0x9fbf('0x1a'),'port':0x18eb});var socket=require(_0x9fbf('0x1b'))(new Redis(config[_0x9fbf('0x18')]));require(_0x9fbf('0x1c'))[_0x9fbf('0x1d')](socket);function respondWithStatusCode(_0x1c3597,_0xe05d88){_0xe05d88=_0xe05d88||0xcc;return function(_0x191e62){if(_0x191e62){return _0x1c3597[_0x9fbf('0x1e')](_0xe05d88);}return _0x1c3597['status'](_0xe05d88)[_0x9fbf('0x1f')]();};}function respondWithResult(_0x1b4a9b,_0x4c020c){_0x4c020c=_0x4c020c||0xc8;return function(_0x4053ac){if(_0x4053ac){return _0x1b4a9b[_0x9fbf('0x20')](_0x4c020c)[_0x9fbf('0x21')](_0x4053ac);}};}function respondWithFilteredResult(_0x4ca216,_0x2917cd){return function(_0x103925){if(_0x103925){var _0x32fd9b=typeof _0x2917cd[_0x9fbf('0x22')]===_0x9fbf('0x23')&&typeof _0x2917cd['limit']===_0x9fbf('0x23');var _0x1c1ab8=_0x103925[_0x9fbf('0x24')];var _0x451306=_0x32fd9b?0x0:_0x2917cd['offset'];var _0x2121c1=_0x32fd9b?_0x103925[_0x9fbf('0x24')]:_0x2917cd[_0x9fbf('0x22')]+_0x2917cd['limit'];var _0x5c4457;if(_0x2121c1>=_0x1c1ab8){_0x2121c1=_0x1c1ab8;_0x5c4457=0xc8;}else{_0x5c4457=0xce;}_0x4ca216['status'](_0x5c4457);return _0x4ca216[_0x9fbf('0x25')](_0x9fbf('0x26'),_0x451306+'-'+_0x2121c1+'/'+_0x1c1ab8)[_0x9fbf('0x21')](_0x103925);}return null;};}function patchUpdates(_0x4af3e2){return function(_0x4ac3fa){try{jsonpatch[_0x9fbf('0x27')](_0x4ac3fa,_0x4af3e2,!![]);}catch(_0x1b87cf){return BPromise[_0x9fbf('0x28')](_0x1b87cf);}return _0x4ac3fa[_0x9fbf('0x29')]();};}function saveUpdates(_0xf8e4f,_0x686b7d){return function(_0x1c6442){if(_0x1c6442){return _0x1c6442[_0x9fbf('0x2a')](_0xf8e4f)[_0x9fbf('0x2b')](function(_0x56fa25){return _0x56fa25;});}return null;};}function removeEntity(_0x4beb37,_0x38d96d){return function(_0x271942){if(_0x271942){return _0x271942[_0x9fbf('0x2c')]()[_0x9fbf('0x2b')](function(){_0x4beb37[_0x9fbf('0x20')](0xcc)[_0x9fbf('0x1f')]();});}};}function handleEntityNotFound(_0x212f2a,_0x1d3e86){return function(_0x5e120b){if(!_0x5e120b){_0x212f2a[_0x9fbf('0x1e')](0x194);}return _0x5e120b;};}function handleError(_0x9de8c1,_0x15361a){_0x15361a=_0x15361a||0x1f4;return function(_0x59bfe7){logger[_0x9fbf('0x2d')](_0x59bfe7[_0x9fbf('0x2e')]);if(_0x59bfe7[_0x9fbf('0x2f')]){delete _0x59bfe7[_0x9fbf('0x2f')];}_0x9de8c1['status'](_0x15361a)[_0x9fbf('0x30')](_0x59bfe7);};}exports['index']=function(_0x539afa,_0x26f8f1){var _0x117b07={},_0x23e732={},_0x5db8d5={'count':0x0,'rows':[]};var _0x9398f6=_[_0x9fbf('0x31')](db[_0x9fbf('0x32')][_0x9fbf('0x33')],function(_0x132e39){return{'name':_0x132e39['fieldName'],'type':_0x132e39[_0x9fbf('0x34')][_0x9fbf('0x35')]};});_0x23e732[_0x9fbf('0x36')]=_['map'](_0x9398f6,'name');_0x23e732[_0x9fbf('0x37')]=_[_0x9fbf('0x38')](_0x539afa[_0x9fbf('0x37')]);_0x23e732[_0x9fbf('0x39')]=_['intersection'](_0x23e732['model'],_0x23e732['query']);_0x117b07[_0x9fbf('0x3a')]=_[_0x9fbf('0x3b')](_0x23e732[_0x9fbf('0x36')],qs['fields'](_0x539afa['query'][_0x9fbf('0x3c')]));_0x117b07[_0x9fbf('0x3a')]=_0x117b07[_0x9fbf('0x3a')]['length']?_0x117b07['attributes']:_0x23e732[_0x9fbf('0x36')];if(!_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x3d')](_0x9fbf('0x3e'))){_0x117b07['limit']=qs['limit'](_0x539afa['query'][_0x9fbf('0x3f')]);_0x117b07[_0x9fbf('0x22')]=qs[_0x9fbf('0x22')](_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x22')]);}_0x117b07[_0x9fbf('0x40')]=qs['sort'](_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x41')]);_0x117b07[_0x9fbf('0x42')]=qs['filters'](_['pick'](_0x539afa['query'],_0x23e732[_0x9fbf('0x39')]),_0x9398f6);if(_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x43')]){_0x117b07[_0x9fbf('0x42')]=_['merge'](_0x117b07[_0x9fbf('0x42')],{'$or':_[_0x9fbf('0x31')](_0x9398f6,function(_0x4faa9f){if(_0x4faa9f[_0x9fbf('0x34')]!==_0x9fbf('0x44')){var _0x3dd052={};_0x3dd052[_0x4faa9f['name']]={'$like':'%'+_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x43')]+'%'};return _0x3dd052;}})});}_0x117b07=_[_0x9fbf('0x45')]({},_0x117b07,_0x539afa['options']);var _0x17395a={'where':_0x117b07['where']};return db['ChatInternalMessage'][_0x9fbf('0x24')](_0x17395a)[_0x9fbf('0x2b')](function(_0x55ff59){_0x5db8d5[_0x9fbf('0x24')]=_0x55ff59;if(_0x539afa[_0x9fbf('0x37')][_0x9fbf('0x46')]){_0x117b07['include']=[{'all':!![]}];}return db['ChatInternalMessage']['findAll'](_0x117b07);})[_0x9fbf('0x2b')](function(_0x322dc1){_0x5db8d5[_0x9fbf('0x47')]=_0x322dc1;return _0x5db8d5;})[_0x9fbf('0x2b')](respondWithFilteredResult(_0x26f8f1,_0x117b07))['catch'](handleError(_0x26f8f1,null));};exports[_0x9fbf('0x48')]=function(_0x538c76,_0x493d12){var _0x93a4c8={'raw':!![],'where':{'id':_0x538c76[_0x9fbf('0x49')]['id']}},_0x18dc01={};_0x18dc01[_0x9fbf('0x36')]=_[_0x9fbf('0x38')](db[_0x9fbf('0x32')][_0x9fbf('0x33')]);_0x18dc01[_0x9fbf('0x37')]=_[_0x9fbf('0x38')](_0x538c76[_0x9fbf('0x37')]);_0x18dc01[_0x9fbf('0x39')]=_[_0x9fbf('0x3b')](_0x18dc01[_0x9fbf('0x36')],_0x18dc01['query']);_0x93a4c8[_0x9fbf('0x3a')]=_[_0x9fbf('0x3b')](_0x18dc01['model'],qs[_0x9fbf('0x3c')](_0x538c76[_0x9fbf('0x37')][_0x9fbf('0x3c')]));_0x93a4c8[_0x9fbf('0x3a')]=_0x93a4c8[_0x9fbf('0x3a')]['length']?_0x93a4c8[_0x9fbf('0x3a')]:_0x18dc01['model'];if(_0x538c76[_0x9fbf('0x37')][_0x9fbf('0x46')]){_0x93a4c8[_0x9fbf('0x4a')]=[{'all':!![]}];}_0x93a4c8=_['merge']({},_0x93a4c8,_0x538c76[_0x9fbf('0x4b')]);return db[_0x9fbf('0x32')][_0x9fbf('0x4c')](_0x93a4c8)[_0x9fbf('0x2b')](handleEntityNotFound(_0x493d12,null))['then'](respondWithResult(_0x493d12,null))[_0x9fbf('0x4d')](handleError(_0x493d12,null));};exports[_0x9fbf('0x4e')]=function(_0x102989,_0x1a0ec0){return db[_0x9fbf('0x32')][_0x9fbf('0x4e')](_0x102989[_0x9fbf('0x4f')],{})['then'](respondWithResult(_0x1a0ec0,0xc9))[_0x9fbf('0x4d')](handleError(_0x1a0ec0,null));};exports['update']=function(_0xdd9142,_0x8e623f){if(_0xdd9142[_0x9fbf('0x4f')]['id']){delete _0xdd9142[_0x9fbf('0x4f')]['id'];}return db[_0x9fbf('0x32')][_0x9fbf('0x4c')]({'where':{'id':_0xdd9142[_0x9fbf('0x49')]['id']}})[_0x9fbf('0x2b')](handleEntityNotFound(_0x8e623f,null))[_0x9fbf('0x2b')](saveUpdates(_0xdd9142[_0x9fbf('0x4f')],null))[_0x9fbf('0x2b')](respondWithResult(_0x8e623f,null))[_0x9fbf('0x4d')](handleError(_0x8e623f,null));};exports['destroy']=function(_0x43b980,_0x5a1d04){return db[_0x9fbf('0x32')][_0x9fbf('0x4c')]({'where':{'id':_0x43b980[_0x9fbf('0x49')]['id']}})[_0x9fbf('0x2b')](handleEntityNotFound(_0x5a1d04,null))[_0x9fbf('0x2b')](removeEntity(_0x5a1d04,null))[_0x9fbf('0x4d')](handleError(_0x5a1d04,null));};exports[_0x9fbf('0x50')]=function(_0x5743dc,_0xab2716){return db['ChatInternalMessage'][_0x9fbf('0x50')]()[_0x9fbf('0x2b')](respondWithResult(_0xab2716,null))[_0x9fbf('0x4d')](handleError(_0xab2716,null));};function wrapUser(_0x409319){return function(_0x17d752){var _0x20df8b=_0x409319[_0x9fbf('0x51')]({'plain':!![]});_0x20df8b[_0x9fbf('0x52')]=[];if(_0x17d752){_0x20df8b[_0x9fbf('0x53')]=_0x17d752[_0x9fbf('0x54')];_0x20df8b[_0x9fbf('0x55')]=_0x17d752;}else{_0x20df8b[_0x9fbf('0x53')]=moment(0x0)[_0x9fbf('0x56')](_0x9fbf('0x57'));_0x20df8b[_0x9fbf('0x55')]={};}return _0x20df8b;};}exports[_0x9fbf('0x58')]=function(_0x185d7e,_0x34ce5d,_0x7fae86){var _0x32d885=[];return db[_0x9fbf('0x59')][_0x9fbf('0x5a')]({'where':{'role':[_0x9fbf('0x5b'),'admin','user']},'attributes':['id',_0x9fbf('0x5c'),'name',_0x9fbf('0x5d'),_0x9fbf('0x5e'),'internal',_0x9fbf('0x5f'),_0x9fbf('0x60'),_0x9fbf('0x61'),_0x9fbf('0x62')],'order':qs[_0x9fbf('0x41')]('-online'),'include':[{'model':db[_0x9fbf('0x63')],'as':_0x9fbf('0x64'),'attributes':['id',_0x9fbf('0x2f'),_0x9fbf('0x34')],'through':{'attributes':[]}}]})['then'](function(_0x4bb74a){if(_0x4bb74a){var _0x264b3b=_0x185d7e[_0x9fbf('0x65')][_0x9fbf('0x51')]({'plain':!![]});if(!_0x264b3b)throw new Error(_0x9fbf('0x66'));if(_0x264b3b[_0x9fbf('0x5d')]==='user'){return db[_0x9fbf('0x67')][_0x9fbf('0x4c')]({'where':{'name':_0x9fbf('0x68'),'userProfileId':_0x264b3b['userProfileId']},'raw':!![]})[_0x9fbf('0x2b')](function(_0x51e0a9){if(_0x51e0a9){if(_0x51e0a9[_0x9fbf('0x69')]===0x0){return db[_0x9fbf('0x6a')][_0x9fbf('0x5a')]({'where':{'sectionId':_0x51e0a9['id']},'raw':!![]})[_0x9fbf('0x2b')](function(_0x5a1127){var _0x275a8d=[];if(_[_0x9fbf('0x6b')](_0x5a1127)){_0x275a8d=_['filter'](_0x4bb74a,function(_0x1aeb5f){if(_0x1aeb5f[_0x9fbf('0x5d')]!==_0x9fbf('0x5b')){return _0x1aeb5f;}});return _0x275a8d;}else{for(var _0x177e57=0x0;_0x177e57<_0x4bb74a[_0x9fbf('0x6c')];_0x177e57++){var _0x5ed403=_0x4bb74a[_0x177e57];if(_0x5ed403[_0x9fbf('0x5d')]==='agent'){var _0x13c4a=_['find'](_0x5a1127,function(_0xafd10){return _0xafd10[_0x9fbf('0x6d')]===_0x5ed403['id'];});if(_0x13c4a)_0x275a8d['push'](_0x5ed403);}else{_0x275a8d[_0x9fbf('0x6e')](_0x5ed403);}}return _0x275a8d;}});}else{return _0x4bb74a;}}else{var _0x5ed839=_['filter'](_0x4bb74a,function(_0x550f66){if(_0x550f66['role']!=='agent'){return _0x550f66;}});return _0x5ed839;}});}else{return _0x4bb74a;}}})['then'](function(_0x1e5f1d){var _0x3ad8ba=[];if(_0x1e5f1d){_0x32d885=_0x1e5f1d;for(var _0x79f65a=0x0;_0x79f65a<_0x1e5f1d[_0x9fbf('0x6c')];_0x79f65a+=0x1){_0x32d885[_0x79f65a]['messages']=[];_0x3ad8ba[_0x9fbf('0x6e')](db[_0x9fbf('0x32')][_0x9fbf('0x4c')]({'where':{'FromId':[_0x185d7e[_0x9fbf('0x65')]['id'],_0x1e5f1d[_0x79f65a]['id']],'ToId':[_0x185d7e[_0x9fbf('0x65')]['id'],_0x1e5f1d[_0x79f65a]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x9fbf('0x6f'),_0x9fbf('0x70'),_0x9fbf('0x71'),_0x9fbf('0x4f')],'order':qs[_0x9fbf('0x41')](_0x9fbf('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x9fbf('0x2b')](wrapUser(_0x1e5f1d[_0x79f65a])));}return BPromise[_0x9fbf('0x73')](_0x3ad8ba);}return[];})[_0x9fbf('0x2b')](function(_0x515fc5){return{'rows':_0x515fc5,'count':_0x515fc5[_0x9fbf('0x6c')]};})[_0x9fbf('0x2b')](respondWithResult(_0x34ce5d,null))[_0x9fbf('0x4d')](handleError(_0x34ce5d,null));};
\ No newline at end of file
index b07b9cc..603b321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0129=['remove','emit','hook','exports','events','ChatInternalMessage','setMaxListeners','save','update'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x0129,0x100));var _0x9012=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0129[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x9012('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x9012('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x9012('0x2')](0x0);var events={'afterCreate':_0x9012('0x3'),'afterUpdate':_0x9012('0x4'),'afterDestroy':_0x9012('0x5')};function emitEvent(_0x12f852){return function(_0x4651e9,_0xd40bc9,_0x67e89f){ChatInternalMessageEvents[_0x9012('0x6')](_0x12f852+':'+_0x4651e9['id'],_0x4651e9);ChatInternalMessageEvents[_0x9012('0x6')](_0x12f852,_0x4651e9);_0x67e89f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0x9012('0x7')](e,emitEvent(event));}}module[_0x9012('0x8')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xaefd=['remove','emit','hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xaefd,0x1c6));var _0xdaef=function(_0x527379,_0x3ec58d){_0x527379=_0x527379-0x0;var _0x219af0=_0xaefd[_0x527379];return _0x219af0;};'use strict';var EventEmitter=require(_0xdaef('0x0'));var ChatInternalMessage=require(_0xdaef('0x1'))['db'][_0xdaef('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xdaef('0x3')](0x0);var events={'afterCreate':_0xdaef('0x4'),'afterUpdate':_0xdaef('0x5'),'afterDestroy':_0xdaef('0x6')};function emitEvent(_0x1cbcfe){return function(_0x4ffbbb,_0xbbb5ba,_0x34e5da){ChatInternalMessageEvents[_0xdaef('0x7')](_0x1cbcfe+':'+_0x4ffbbb['id'],_0x4ffbbb);ChatInternalMessageEvents[_0xdaef('0x7')](_0x1cbcfe,_0x4ffbbb);_0x34e5da(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInternalMessage[_0xdaef('0x8')](e,emitEvent(event));}}module[_0xdaef('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index fe4f364..4550669 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7de0=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage'];(function(_0x2c4216,_0x3ddc64){var _0xe06f00=function(_0xea8d6a){while(--_0xea8d6a){_0x2c4216['push'](_0x2c4216['shift']());}};_0xe06f00(++_0x3ddc64);}(_0x7de0,0x1ad));var _0x07de=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x7de0[_0x484e36];return _0xafc85d;};'use strict';var _=require(_0x07de('0x0'));var util=require(_0x07de('0x1'));var logger=require(_0x07de('0x2'))(_0x07de('0x3'));var moment=require(_0x07de('0x4'));var BPromise=require(_0x07de('0x5'));var rp=require(_0x07de('0x6'));var fs=require('fs');var path=require(_0x07de('0x7'));var rimraf=require('rimraf');var config=require(_0x07de('0x8'));var attributes=require(_0x07de('0x9'));module[_0x07de('0xa')]=function(_0x3c4106,_0x364c1c){return _0x3c4106[_0x07de('0xb')](_0x07de('0xc'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xcaf7=['bluebird','request-promise','path','rimraf','../../config/environment','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','api'];(function(_0x3ecabb,_0x41fbd3){var _0x9c90f0=function(_0x1dfacf){while(--_0x1dfacf){_0x3ecabb['push'](_0x3ecabb['shift']());}};_0x9c90f0(++_0x41fbd3);}(_0xcaf7,0x75));var _0x7caf=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xcaf7[_0x29b609];return _0x54c952;};'use strict';var _=require(_0x7caf('0x0'));var util=require(_0x7caf('0x1'));var logger=require('../../config/logger')(_0x7caf('0x2'));var moment=require('moment');var BPromise=require(_0x7caf('0x3'));var rp=require(_0x7caf('0x4'));var fs=require('fs');var path=require(_0x7caf('0x5'));var rimraf=require(_0x7caf('0x6'));var config=require(_0x7caf('0x7'));var attributes=require(_0x7caf('0x8'));module[_0x7caf('0x9')]=function(_0x23d963,_0x2c2e6c){return _0x23d963[_0x7caf('0xa')](_0x7caf('0xb'),attributes,{'tableName':_0x7caf('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7caf('0xd'),'collate':_0x7caf('0xe')});};
\ No newline at end of file
index 32a2cad..c98e5cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4b7=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','info','ChatInternalMessage,\x20%s,\x20%s','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa4b7,0xbf));var _0x7a4b=function(_0x12b113,_0x18320c){_0x12b113=_0x12b113-0x0;var _0x391e0d=_0xa4b7[_0x12b113];return _0x391e0d;};'use strict';var _=require(_0x7a4b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7a4b('0x1'));var rs=require(_0x7a4b('0x2'));var fs=require('fs');var Redis=require(_0x7a4b('0x3'));var db=require(_0x7a4b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x7a4b('0x5'))('rpc');var config=require(_0x7a4b('0x6'));var jayson=require(_0x7a4b('0x7'));var client=jayson[_0x7a4b('0x8')][_0x7a4b('0x9')]({'port':0x232a});config[_0x7a4b('0xa')]=_[_0x7a4b('0xb')](config[_0x7a4b('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x7a4b('0xc'))(new Redis(config[_0x7a4b('0xa')]));require(_0x7a4b('0xd'))[_0x7a4b('0xe')](socket);function respondWithRpcPromise(_0x43ebeb,_0x1eb956,_0x1fd9c2){return new BPromise(function(_0x3bb417,_0x181d29){return client['request'](_0x43ebeb,_0x1fd9c2)['then'](function(_0x4f25a7){logger[_0x7a4b('0xf')](_0x7a4b('0x10'),_0x1eb956,'request\x20sent');logger['debug'](_0x7a4b('0x11'),_0x1eb956,_0x7a4b('0x12'),JSON['stringify'](_0x4f25a7));if(_0x4f25a7[_0x7a4b('0x13')]){if(_0x4f25a7['error'][_0x7a4b('0x14')]===0x1f4){logger[_0x7a4b('0x13')]('ChatInternalMessage,\x20%s,\x20%s',_0x1eb956,_0x4f25a7[_0x7a4b('0x13')][_0x7a4b('0x15')]);return _0x181d29(_0x4f25a7[_0x7a4b('0x13')]['message']);}logger[_0x7a4b('0x13')](_0x7a4b('0x10'),_0x1eb956,_0x4f25a7[_0x7a4b('0x13')]['message']);return _0x3bb417(_0x4f25a7[_0x7a4b('0x13')]['message']);}else{logger[_0x7a4b('0xf')](_0x7a4b('0x10'),_0x1eb956,_0x7a4b('0x12'));_0x3bb417(_0x4f25a7[_0x7a4b('0x16')]['message']);}})[_0x7a4b('0x17')](function(_0x101f75){logger[_0x7a4b('0x13')]('ChatInternalMessage,\x20%s,\x20%s',_0x1eb956,_0x101f75);_0x181d29(_0x101f75);});});}
\ No newline at end of file
+var _0xd60b=['util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0xd60b,0x198));var _0xbd60=function(_0xc374fa,_0x66e3c0){_0xc374fa=_0xc374fa-0x0;var _0x58c413=_0xd60b[_0xc374fa];return _0x58c413;};'use strict';var _=require('lodash');var util=require(_0xbd60('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xbd60('0x1'));var fs=require('fs');var Redis=require(_0xbd60('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xbd60('0x3'));var logger=require(_0xbd60('0x4'))(_0xbd60('0x5'));var config=require('../../config/environment');var jayson=require(_0xbd60('0x6'));var client=jayson[_0xbd60('0x7')]['http']({'port':0x232a});config[_0xbd60('0x8')]=_[_0xbd60('0x9')](config[_0xbd60('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xbd60('0xa'))(new Redis(config[_0xbd60('0x8')]));require(_0xbd60('0xb'))[_0xbd60('0xc')](socket);function respondWithRpcPromise(_0x82147f,_0x23c3c4,_0x1f2322){return new BPromise(function(_0x4f941e,_0x7d29e2){return client[_0xbd60('0xd')](_0x82147f,_0x1f2322)[_0xbd60('0xe')](function(_0x2abda0){logger[_0xbd60('0xf')](_0xbd60('0x10'),_0x23c3c4,_0xbd60('0x11'));logger[_0xbd60('0x12')]('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x23c3c4,_0xbd60('0x11'),JSON[_0xbd60('0x13')](_0x2abda0));if(_0x2abda0[_0xbd60('0x14')]){if(_0x2abda0['error'][_0xbd60('0x15')]===0x1f4){logger[_0xbd60('0x14')](_0xbd60('0x10'),_0x23c3c4,_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);return _0x7d29e2(_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);}logger[_0xbd60('0x14')](_0xbd60('0x10'),_0x23c3c4,_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);return _0x4f941e(_0x2abda0[_0xbd60('0x14')][_0xbd60('0x16')]);}else{logger[_0xbd60('0xf')](_0xbd60('0x10'),_0x23c3c4,_0xbd60('0x11'));_0x4f941e(_0x2abda0['result'][_0xbd60('0x16')]);}})[_0xbd60('0x17')](function(_0x5ac3da){logger[_0xbd60('0x14')](_0xbd60('0x10'),_0x23c3c4,_0x5ac3da);_0x7d29e2(_0x5ac3da);});});}
\ No newline at end of file
index 285db2e..71a0860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda52=['save','remove','emit','removeListener','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x46eaa4,_0xb05645){var _0x32bf42=function(_0x2a35e6){while(--_0x2a35e6){_0x46eaa4['push'](_0x46eaa4['shift']());}};_0x32bf42(++_0xb05645);}(_0xda52,0x185));var _0x2da5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xda52[_0x3dd15e];return _0x231fd0;};'use strict';var ChatInternalMessageEvents=require(_0x2da5('0x0'));var events=[_0x2da5('0x1'),_0x2da5('0x2'),'update'];function createListener(_0xdca195,_0x5b8d75){return function(_0xbedb75){_0x5b8d75[_0x2da5('0x3')](_0xdca195,_0xbedb75);};}function removeListener(_0x94faaf,_0x57a8ca){return function(){ChatInternalMessageEvents[_0x2da5('0x4')](_0x94faaf,_0x57a8ca);};}exports['register']=function(_0x2339d5){for(var _0x260434=0x0,_0x323a5c=events['length'];_0x260434<_0x323a5c;_0x260434++){var _0x2c0c37=events[_0x260434];var _0x5986dd=createListener(_0x2da5('0x5')+_0x2c0c37,_0x2339d5);ChatInternalMessageEvents['on'](_0x2c0c37,_0x5986dd);}};
\ No newline at end of file
+var _0x2e8f=['remove','update','removeListener','register','length','./chatInternalMessage.events','save'];(function(_0x556dfe,_0x514f8f){var _0xca6aae=function(_0x162a53){while(--_0x162a53){_0x556dfe['push'](_0x556dfe['shift']());}};_0xca6aae(++_0x514f8f);}(_0x2e8f,0xc2));var _0xf2e8=function(_0x264545,_0x214037){_0x264545=_0x264545-0x0;var _0x114d10=_0x2e8f[_0x264545];return _0x114d10;};'use strict';var ChatInternalMessageEvents=require(_0xf2e8('0x0'));var events=[_0xf2e8('0x1'),_0xf2e8('0x2'),_0xf2e8('0x3')];function createListener(_0x275e9f,_0x7becb4){return function(_0x1dce79){_0x7becb4['emit'](_0x275e9f,_0x1dce79);};}function removeListener(_0x275047,_0x3bdf10){return function(){ChatInternalMessageEvents[_0xf2e8('0x4')](_0x275047,_0x3bdf10);};}exports[_0xf2e8('0x5')]=function(_0xe71b56){for(var _0x455a56=0x0,_0x2568cb=events[_0xf2e8('0x6')];_0x455a56<_0x2568cb;_0x455a56++){var _0x553275=events[_0x455a56];var _0x2d26cf=createListener('chatInternalMessage:'+_0x553275,_0xe71b56);ChatInternalMessageEvents['on'](_0x553275,_0x2d26cf);}};
\ No newline at end of file
index c4ea37d..926b97f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8f0=['getUsers','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/users'];(function(_0x4fe406,_0x5a7878){var _0x5ace5f=function(_0x2a7a6c){while(--_0x2a7a6c){_0x4fe406['push'](_0x4fe406['shift']());}};_0x5ace5f(++_0x5a7878);}(_0xa8f0,0x141));var _0x0a8f=function(_0x2080a3,_0x48acfa){_0x2080a3=_0x2080a3-0x0;var _0x8d7d17=_0xa8f0[_0x2080a3];return _0x8d7d17;};'use strict';var multer=require(_0x0a8f('0x0'));var util=require(_0x0a8f('0x1'));var path=require(_0x0a8f('0x2'));var timeout=require(_0x0a8f('0x3'));var express=require(_0x0a8f('0x4'));var router=express[_0x0a8f('0x5')]();var fs_extra=require(_0x0a8f('0x6'));var auth=require(_0x0a8f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0a8f('0x8'));var controller=require('./chatInternalMessage.controller');router[_0x0a8f('0x9')]('/',auth['isAuthenticated'](),controller[_0x0a8f('0xa')]);router[_0x0a8f('0x9')](_0x0a8f('0xb'),auth[_0x0a8f('0xc')](),controller[_0x0a8f('0xd')]);router[_0x0a8f('0x9')](_0x0a8f('0xe'),auth['isAuthenticated'](),controller[_0x0a8f('0xf')]);router[_0x0a8f('0x9')](_0x0a8f('0x10'),auth[_0x0a8f('0xc')](),controller[_0x0a8f('0x11')]);router[_0x0a8f('0x12')]('/',auth[_0x0a8f('0xc')](),controller[_0x0a8f('0x13')]);router[_0x0a8f('0x14')](_0x0a8f('0x10'),controller[_0x0a8f('0x15')]);router['delete'](_0x0a8f('0x10'),auth[_0x0a8f('0xc')](),controller[_0x0a8f('0x16')]);module[_0x0a8f('0x17')]=router;
\ No newline at end of file
+var _0x03a7=['Router','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/users','getUsers','/:id','show','create','update','destroy','exports','multer','connect-timeout','express'];(function(_0x2aa868,_0x3f71aa){var _0x4b4fea=function(_0x587eda){while(--_0x587eda){_0x2aa868['push'](_0x2aa868['shift']());}};_0x4b4fea(++_0x3f71aa);}(_0x03a7,0x1d8));var _0x703a=function(_0x24e54b,_0x2ac7cd){_0x24e54b=_0x24e54b-0x0;var _0x3d220a=_0x03a7[_0x24e54b];return _0x3d220a;};'use strict';var multer=require(_0x703a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x703a('0x1'));var express=require(_0x703a('0x2'));var router=express[_0x703a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x703a('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x703a('0x5'));var controller=require('./chatInternalMessage.controller');router[_0x703a('0x6')]('/',auth[_0x703a('0x7')](),controller[_0x703a('0x8')]);router[_0x703a('0x6')](_0x703a('0x9'),auth[_0x703a('0x7')](),controller[_0x703a('0xa')]);router[_0x703a('0x6')](_0x703a('0xb'),auth[_0x703a('0x7')](),controller[_0x703a('0xc')]);router['get'](_0x703a('0xd'),auth[_0x703a('0x7')](),controller[_0x703a('0xe')]);router['post']('/',auth[_0x703a('0x7')](),controller[_0x703a('0xf')]);router['put'](_0x703a('0xd'),controller[_0x703a('0x10')]);router['delete'](_0x703a('0xd'),auth[_0x703a('0x7')](),controller[_0x703a('0x11')]);module[_0x703a('0x12')]=router;
\ No newline at end of file
index 30a94c6..925fa72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2cb=['exports','medium','BOOLEAN','ENUM','out','sequelize'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xa2cb,0x7d));var _0xba2c=function(_0x28635a,_0xa51d49){_0x28635a=_0x28635a-0x0;var _0x2e8c5b=_0xa2cb[_0x28635a];return _0x2e8c5b;};'use strict';var Sequelize=require(_0xba2c('0x0'));module[_0xba2c('0x1')]={'body':{'type':Sequelize['TEXT'](_0xba2c('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xba2c('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0xba2c('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xba2c('0x4')]('in',_0xba2c('0x5')),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x23a3=['out','DATE','STRING','TEXT','medium','BOOLEAN','ENUM'];(function(_0x322886,_0x3e6486){var _0x18c67b=function(_0x5ed71b){while(--_0x5ed71b){_0x322886['push'](_0x322886['shift']());}};_0x18c67b(++_0x3e6486);}(_0x23a3,0x131));var _0x323a=function(_0x185860,_0x5b276e){_0x185860=_0x185860-0x0;var _0x15bf16=_0x23a3[_0x185860];return _0x15bf16;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0x323a('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x323a('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0x323a('0x2')]('in',_0x323a('0x3')),'defaultValue':_0x323a('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0x323a('0x4')]},'providerName':{'type':Sequelize[_0x323a('0x5')]},'providerResponse':{'type':Sequelize[_0x323a('0x6')]}};
\ No newline at end of file
index c536af2..e640bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3d5d4b,_0x183b9d){var _0xcf6ebd=function(_0x122e0c){while(--_0x122e0c){_0x3d5d4b['push'](_0x3d5d4b['shift']());}};_0xcf6ebd(++_0x183b9d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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
+var _0x8285=['ChatMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','length','attributes','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','include','find','create','body','describe','../../config/logger','chat-interactions','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','ChatInteraction','isNil','interaction','get','user','AcceptMessage','acceptMessage','ContactId','sequelize','SELECT','User','fullname','email','internal','manual','channel','motionChannel','EventManager','acceptmessage','formData','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','contact','interface','SIP/%s','event','reject','rejectmessage','parse','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','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./chatMessage.socket','jayson/promise','http','client','request','info','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','name','send','index','map'];(function(_0x4a53ec,_0x2ea416){var _0x4065b9=function(_0x4a892e){while(--_0x4a892e){_0x4a53ec['push'](_0x4a53ec['shift']());}};_0x4065b9(++_0x2ea416);}(_0x8285,0x158));var _0x5828=function(_0x1652c9,_0x4cb5f5){_0x1652c9=_0x1652c9-0x0;var _0x387cf7=_0x8285[_0x1652c9];return _0x387cf7;};'use strict';var emlformat=require(_0x5828('0x0'));var rimraf=require(_0x5828('0x1'));var zipdir=require(_0x5828('0x2'));var jsonpatch=require(_0x5828('0x3'));var rp=require(_0x5828('0x4'));var moment=require(_0x5828('0x5'));var BPromise=require(_0x5828('0x6'));var Mustache=require(_0x5828('0x7'));var util=require(_0x5828('0x8'));var path=require(_0x5828('0x9'));var sox=require(_0x5828('0xa'));var csv=require(_0x5828('0xb'));var ejs=require(_0x5828('0xc'));var fs=require('fs');var fs_extra=require(_0x5828('0xd'));var _=require(_0x5828('0xe'));var squel=require(_0x5828('0xf'));var crypto=require(_0x5828('0x10'));var jsforce=require(_0x5828('0x11'));var deskjs=require('desk.js');var toCsv=require(_0x5828('0xb'));var querystring=require(_0x5828('0x12'));var Papa=require(_0x5828('0x13'));var Redis=require('ioredis');var authService=require(_0x5828('0x14'));var qs=require(_0x5828('0x15'));var as=require(_0x5828('0x16'));var hardwareService=require(_0x5828('0x17'));var logger=require('../../config/logger')(_0x5828('0x18'));var utils=require(_0x5828('0x19'));var config=require(_0x5828('0x1a'));var licenseUtil=require(_0x5828('0x1b'));var db=require('../../mysqldb')['db'];config[_0x5828('0x1c')]=_[_0x5828('0x1d')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5828('0x1e'))(new Redis(config['redis']));require(_0x5828('0x1f'))['register'](socket);var jayson=require(_0x5828('0x20'));var client=jayson['client'][_0x5828('0x21')]({'port':0x232c});var client9002=jayson[_0x5828('0x22')][_0x5828('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x368006,_0x218d86,_0x574a11,_0xea130a){return new BPromise(function(_0x51f5ff,_0x1ffbbc){var _0x257c81=_0xea130a||client;return _0x257c81[_0x5828('0x23')](_0x368006,_0x574a11)['then'](function(_0xeaccec){logger[_0x5828('0x24')](_0x5828('0x25'),_0x218d86,'request\x20sent');logger['debug'](_0x5828('0x26'),_0x218d86,_0x5828('0x27'),JSON[_0x5828('0x28')](_0xeaccec));if(_0xeaccec['error']){if(_0xeaccec[_0x5828('0x29')]['code']===0x1f4){logger[_0x5828('0x29')]('ChatMessage,\x20%s,\x20%s',_0x218d86,_0xeaccec[_0x5828('0x29')][_0x5828('0x2a')]);return _0x1ffbbc(_0xeaccec['error'][_0x5828('0x2a')]);}logger[_0x5828('0x29')]('ChatMessage,\x20%s,\x20%s',_0x218d86,_0xeaccec[_0x5828('0x29')]['message']);return _0x51f5ff(_0xeaccec[_0x5828('0x29')][_0x5828('0x2a')]);}else{logger[_0x5828('0x24')](_0x5828('0x25'),_0x218d86,_0x5828('0x27'));_0x51f5ff(_0xeaccec[_0x5828('0x2b')][_0x5828('0x2a')]);}})[_0x5828('0x2c')](function(_0x20c34c){logger[_0x5828('0x29')](_0x5828('0x25'),_0x218d86,_0x20c34c);_0x1ffbbc(_0x20c34c);});});}function respondWithStatusCode(_0x3f4987,_0x57da1b){_0x57da1b=_0x57da1b||0xcc;return function(_0x509306){if(_0x509306){return _0x3f4987[_0x5828('0x2d')](_0x57da1b);}return _0x3f4987[_0x5828('0x2e')](_0x57da1b)[_0x5828('0x2f')]();};}function respondWithResult(_0x25718d,_0x1779e3){_0x1779e3=_0x1779e3||0xc8;return function(_0x471a46){if(_0x471a46){return _0x25718d['status'](_0x1779e3)[_0x5828('0x30')](_0x471a46);}};}function respondWithFilteredResult(_0x4fb3f9,_0x4e5f34){return function(_0x36af93){if(_0x36af93){var _0x18634f=typeof _0x4e5f34['offset']===_0x5828('0x31')&&typeof _0x4e5f34[_0x5828('0x32')]===_0x5828('0x31');var _0x17eece=_0x36af93[_0x5828('0x33')];var _0xeac967=_0x18634f?0x0:_0x4e5f34['offset'];var _0x36c711=_0x18634f?_0x36af93[_0x5828('0x33')]:_0x4e5f34[_0x5828('0x34')]+_0x4e5f34[_0x5828('0x32')];var _0x50f64d;if(_0x36c711>=_0x17eece){_0x36c711=_0x17eece;_0x50f64d=0xc8;}else{_0x50f64d=0xce;}_0x4fb3f9['status'](_0x50f64d);return _0x4fb3f9[_0x5828('0x35')](_0x5828('0x36'),_0xeac967+'-'+_0x36c711+'/'+_0x17eece)[_0x5828('0x30')](_0x36af93);}return null;};}function patchUpdates(_0x53cabc){return function(_0xf0a4ea){try{jsonpatch[_0x5828('0x37')](_0xf0a4ea,_0x53cabc,!![]);}catch(_0x540aa1){return BPromise['reject'](_0x540aa1);}return _0xf0a4ea[_0x5828('0x38')]();};}function saveUpdates(_0xa53db3,_0x5fbba0){return function(_0x41edd5){if(_0x41edd5){return _0x41edd5[_0x5828('0x39')](_0xa53db3)[_0x5828('0x3a')](function(_0x181937){return _0x181937;});}return null;};}function removeEntity(_0x56c913,_0x15ebce){return function(_0xda6463){if(_0xda6463){return _0xda6463[_0x5828('0x3b')]()['then'](function(){_0x56c913[_0x5828('0x2e')](0xcc)[_0x5828('0x2f')]();});}};}function handleEntityNotFound(_0x41dcfd,_0x22a2b8){return function(_0x6f5170){if(!_0x6f5170){_0x41dcfd[_0x5828('0x2d')](0x194);}return _0x6f5170;};}function handleError(_0x1dca69,_0xb66ca6){_0xb66ca6=_0xb66ca6||0x1f4;return function(_0x5e6dc7){logger['error'](_0x5e6dc7['stack']);if(_0x5e6dc7['name']){delete _0x5e6dc7[_0x5828('0x3c')];}_0x1dca69['status'](_0xb66ca6)[_0x5828('0x3d')](_0x5e6dc7);};}exports[_0x5828('0x3e')]=function(_0xb1a039,_0x1dd909){var _0x865e13={},_0x1c66ea={},_0x4f2616={'count':0x0,'rows':[]};var _0xe262a8=_[_0x5828('0x3f')](db[_0x5828('0x40')][_0x5828('0x41')],function(_0x229a5f){return{'name':_0x229a5f['fieldName'],'type':_0x229a5f[_0x5828('0x42')][_0x5828('0x43')]};});_0x1c66ea[_0x5828('0x44')]=_['map'](_0xe262a8,_0x5828('0x3c'));_0x1c66ea[_0x5828('0x45')]=_[_0x5828('0x46')](_0xb1a039[_0x5828('0x45')]);_0x1c66ea[_0x5828('0x47')]=_['intersection'](_0x1c66ea[_0x5828('0x44')],_0x1c66ea[_0x5828('0x45')]);_0x865e13['attributes']=_[_0x5828('0x48')](_0x1c66ea[_0x5828('0x44')],qs[_0x5828('0x49')](_0xb1a039[_0x5828('0x45')][_0x5828('0x49')]));_0x865e13['attributes']=_0x865e13['attributes'][_0x5828('0x4a')]?_0x865e13[_0x5828('0x4b')]:_0x1c66ea[_0x5828('0x44')];if(!_0xb1a039[_0x5828('0x45')]['hasOwnProperty'](_0x5828('0x4c'))){_0x865e13[_0x5828('0x32')]=qs[_0x5828('0x32')](_0xb1a039[_0x5828('0x45')]['limit']);_0x865e13[_0x5828('0x34')]=qs[_0x5828('0x34')](_0xb1a039['query'][_0x5828('0x34')]);}_0x865e13['order']=qs[_0x5828('0x4d')](_0xb1a039[_0x5828('0x45')]['sort']);_0x865e13[_0x5828('0x4e')]=qs['filters'](_[_0x5828('0x4f')](_0xb1a039[_0x5828('0x45')],_0x1c66ea[_0x5828('0x47')]),_0xe262a8);if(_0xb1a039[_0x5828('0x45')][_0x5828('0x50')]){_0x865e13[_0x5828('0x4e')]=_[_0x5828('0x51')](_0x865e13[_0x5828('0x4e')],{'$or':_['map'](_0xe262a8,function(_0x5994ea){if(_0x5994ea[_0x5828('0x42')]!==_0x5828('0x52')){var _0x4bbd24={};_0x4bbd24[_0x5994ea[_0x5828('0x3c')]]={'$like':'%'+_0xb1a039['query'][_0x5828('0x50')]+'%'};return _0x4bbd24;}})});}_0x865e13=_['merge']({},_0x865e13,_0xb1a039[_0x5828('0x53')]);var _0x3310b9={'where':_0x865e13[_0x5828('0x4e')]};return db[_0x5828('0x40')][_0x5828('0x33')](_0x3310b9)[_0x5828('0x3a')](function(_0x46c8e9){_0x4f2616['count']=_0x46c8e9;if(_0xb1a039['query'][_0x5828('0x54')]){_0x865e13['include']=[{'all':!![]}];}return db['ChatMessage'][_0x5828('0x55')](_0x865e13);})[_0x5828('0x3a')](function(_0x142453){_0x4f2616[_0x5828('0x56')]=_0x142453;return _0x4f2616;})[_0x5828('0x3a')](respondWithFilteredResult(_0x1dd909,_0x865e13))['catch'](handleError(_0x1dd909,null));};exports[_0x5828('0x57')]=function(_0x4c0700,_0x3006bc){var _0x30ae99={'raw':!![],'where':{'id':_0x4c0700[_0x5828('0x58')]['id']}},_0x534f28={};_0x534f28[_0x5828('0x44')]=_[_0x5828('0x46')](db[_0x5828('0x40')][_0x5828('0x41')]);_0x534f28['query']=_['keys'](_0x4c0700[_0x5828('0x45')]);_0x534f28['filters']=_[_0x5828('0x48')](_0x534f28['model'],_0x534f28[_0x5828('0x45')]);_0x30ae99[_0x5828('0x4b')]=_[_0x5828('0x48')](_0x534f28[_0x5828('0x44')],qs[_0x5828('0x49')](_0x4c0700[_0x5828('0x45')][_0x5828('0x49')]));_0x30ae99[_0x5828('0x4b')]=_0x30ae99[_0x5828('0x4b')][_0x5828('0x4a')]?_0x30ae99[_0x5828('0x4b')]:_0x534f28['model'];if(_0x4c0700[_0x5828('0x45')][_0x5828('0x54')]){_0x30ae99[_0x5828('0x59')]=[{'all':!![]}];}_0x30ae99=_[_0x5828('0x51')]({},_0x30ae99,_0x4c0700[_0x5828('0x53')]);return db[_0x5828('0x40')][_0x5828('0x5a')](_0x30ae99)[_0x5828('0x3a')](handleEntityNotFound(_0x3006bc,null))[_0x5828('0x3a')](respondWithResult(_0x3006bc,null))[_0x5828('0x2c')](handleError(_0x3006bc,null));};exports['create']=function(_0x47ed02,_0xfd33dc){return db['ChatMessage'][_0x5828('0x5b')](_0x47ed02[_0x5828('0x5c')],{})['then'](respondWithResult(_0xfd33dc,0xc9))[_0x5828('0x2c')](handleError(_0xfd33dc,null));};exports[_0x5828('0x39')]=function(_0x184c76,_0x3ea910){if(_0x184c76[_0x5828('0x5c')]['id']){delete _0x184c76['body']['id'];}return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x184c76[_0x5828('0x58')]['id']}})[_0x5828('0x3a')](handleEntityNotFound(_0x3ea910,null))['then'](saveUpdates(_0x184c76[_0x5828('0x5c')],null))[_0x5828('0x3a')](respondWithResult(_0x3ea910,null))['catch'](handleError(_0x3ea910,null));};exports[_0x5828('0x3b')]=function(_0x2aadf8,_0x1ec786){return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x2aadf8[_0x5828('0x58')]['id']}})[_0x5828('0x3a')](handleEntityNotFound(_0x1ec786,null))['then'](removeEntity(_0x1ec786,null))[_0x5828('0x2c')](handleError(_0x1ec786,null));};exports[_0x5828('0x5d')]=function(_0x35b1b7,_0x4abaad){return db[_0x5828('0x40')][_0x5828('0x5d')]()['then'](respondWithResult(_0x4abaad,null))['catch'](handleError(_0x4abaad,null));};var interaction_log=require(_0x5828('0x5e'))(_0x5828('0x5f'));exports[_0x5828('0x60')]=function(_0x327c77,_0x5529ac,_0x4ba617){var _0x2fbb8e={'agent':{},'channel':_0x5828('0x61')};if(_0x327c77['body']['id']){delete _0x327c77['body']['id'];}_0x327c77[_0x5828('0x5c')]['read']=!![];_0x327c77[_0x5828('0x5c')]['readAt']=moment()[_0x5828('0x62')](_0x5828('0x63'));_0x327c77[_0x5828('0x5c')][_0x5828('0x64')]=_0x327c77[_0x5828('0x5c')][_0x5828('0x64')]||_0x327c77['user']['id'];_0x2fbb8e[_0x5828('0x65')]['id']=_0x327c77[_0x5828('0x5c')]['UserId'];return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x327c77[_0x5828('0x58')]['id'],'UserId':null}})[_0x5828('0x3a')](handleEntityNotFound(_0x5529ac,null))[_0x5828('0x3a')](saveUpdates(_0x327c77[_0x5828('0x5c')],null))['then'](function(_0x4eb451){if(_0x4eb451){_0x2fbb8e['message']=_0x4eb451['get']({'plain':!![]});return db[_0x5828('0x66')][_0x5828('0x5a')]({'where':{'id':_0x4eb451['ChatInteractionId']}});}return null;})[_0x5828('0x3a')](handleEntityNotFound(_0x5529ac,null))[_0x5828('0x3a')](function(_0x54fb71){if(_0x54fb71){return _0x54fb71[_0x5828('0x39')]({'UserId':_0x327c77['body'][_0x5828('0x64')],'read1stAt':_[_0x5828('0x67')](_0x54fb71['read1stAt'])?moment()[_0x5828('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x5828('0x3a')](function(_0xb424d0){if(_0xb424d0){_0x2fbb8e[_0x5828('0x68')]=_0xb424d0[_0x5828('0x69')]({'plain':!![]});interaction_log[_0x5828('0x24')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x327c77[_0x5828('0x6a')]['id'],_0x327c77[_0x5828('0x6a')][_0x5828('0x3c')],_0x327c77[_0x5828('0x6a')]['role'],_0x2fbb8e[_0x5828('0x68')]['id'],_0x327c77[_0x5828('0x5c')]?JSON[_0x5828('0x28')](_0x327c77[_0x5828('0x5c')]):'null');return respondWithRpcPromise(_0x5828('0x6b'),_0x5828('0x6c'),_0x2fbb8e);}return null;})[_0x5828('0x3a')](function(_0x11b614){var _0xc1db86='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x11b614[_0x5828('0x2a')][_0x5828('0x6d')];return db[_0x5828('0x6e')][_0x5828('0x45')](_0xc1db86,{'type':db['Sequelize']['QueryTypes'][_0x5828('0x6f')],'raw':!![]})[_0x5828('0x3a')](function(_0x6216b7){return _0x6216b7;});})['then'](function(_0x56a631){if(_0x56a631){_0x2fbb8e[_0x5828('0x2a')]['contact']=_0x56a631[0x0];if(!_0x327c77['body'][_0x5828('0x64')])return;return db[_0x5828('0x70')][_0x5828('0x5a')]({'where':{'id':_0x327c77['body'][_0x5828('0x64')],'role':_0x5828('0x65')},'attributes':['id',_0x5828('0x3c'),_0x5828('0x71'),_0x5828('0x72'),_0x5828('0x73')],'raw':!![]});}return null;})[_0x5828('0x3a')](function(_0x252bfc){if(!_0x252bfc)return null;_0x2fbb8e[_0x5828('0x2a')][_0x5828('0x65')]=_0x252bfc;return _0x2fbb8e;})[_0x5828('0x3a')](function(_0x4d585c){if(_0x4d585c){if(_0x327c77[_0x5828('0x5c')][_0x5828('0x74')]){_0x2fbb8e[_0x5828('0x2a')]['interface']=util[_0x5828('0x62')]('SIP/%s',_0x327c77[_0x5828('0x6a')]['name']);_0x2fbb8e['message'][_0x5828('0x75')]=_0x2fbb8e[_0x5828('0x75')];_0x2fbb8e[_0x5828('0x2a')][_0x5828('0x76')]=_0x2fbb8e[_0x5828('0x75')];_0x2fbb8e['message']['event']=_0x5828('0x60');return respondWithRpcPromise(_0x5828('0x77'),_0x5828('0x77'),{'event':_0x5828('0x78'),'message':_[_0x5828('0x51')](_0x2fbb8e['message'],JSON['parse'](_0x2fbb8e[_0x5828('0x68')][_0x5828('0x79')]))},client9002)[_0x5828('0x3a')](function(){return _0x2fbb8e;});}return _0x2fbb8e;}return null;})[_0x5828('0x3a')](respondWithResult(_0x5529ac,null))[_0x5828('0x2c')](handleError(_0x5529ac,null));};var interaction_log=require(_0x5828('0x5e'))(_0x5828('0x5f'));exports['reject']=function(_0x18f444,_0x4564f5,_0x2c5c34){var _0x79da08={'agent':{},'channel':_0x5828('0x61')};if(_0x18f444[_0x5828('0x5c')]['id']){delete _0x18f444[_0x5828('0x5c')]['id'];}_0x18f444[_0x5828('0x5c')][_0x5828('0x64')]=_0x18f444[_0x5828('0x5c')][_0x5828('0x64')]||_0x18f444['user']['id'];_0x79da08[_0x5828('0x65')]['id']=_0x18f444[_0x5828('0x5c')][_0x5828('0x64')];return db[_0x5828('0x40')][_0x5828('0x5a')]({'where':{'id':_0x18f444['params']['id'],'UserId':null}})[_0x5828('0x3a')](handleEntityNotFound(_0x4564f5,null))[_0x5828('0x3a')](function(_0x4abf0a){if(_0x4abf0a){_0x79da08[_0x5828('0x2a')]=_0x4abf0a[_0x5828('0x69')]({'plain':!![]});return db['ChatInteraction'][_0x5828('0x5a')]({'where':{'id':_0x4abf0a[_0x5828('0x7a')]}});}return null;})[_0x5828('0x3a')](handleEntityNotFound(_0x4564f5,null))[_0x5828('0x3a')](function(_0x3e111a){if(_0x3e111a){_0x79da08[_0x5828('0x68')]=_0x3e111a['get']({'plain':!![]});interaction_log[_0x5828('0x24')](_0x5828('0x7b'),_0x18f444[_0x5828('0x6a')]['id'],_0x18f444[_0x5828('0x6a')]['name'],_0x18f444[_0x5828('0x6a')]['role'],_0x79da08['interaction']['id'],_0x18f444[_0x5828('0x5c')]?JSON[_0x5828('0x28')](_0x18f444['body']):_0x5828('0x7c'));return respondWithRpcPromise(_0x5828('0x7d'),_0x5828('0x7e'),_0x79da08);}return null;})[_0x5828('0x3a')](function(_0xb7cab4){var _0x206af6=_0x5828('0x7f')+_0xb7cab4['message']['ContactId'];return db['sequelize'][_0x5828('0x45')](_0x206af6,{'type':db[_0x5828('0x80')]['QueryTypes'][_0x5828('0x6f')],'raw':!![]})[_0x5828('0x3a')](function(_0x16ac03){return _0x16ac03;});})[_0x5828('0x3a')](function(_0x2cba8c){if(_0x2cba8c){_0x79da08[_0x5828('0x2a')][_0x5828('0x81')]=_0x2cba8c[0x0];if(!_0x18f444[_0x5828('0x5c')][_0x5828('0x64')])return;return db[_0x5828('0x70')][_0x5828('0x5a')]({'where':{'id':_0x18f444[_0x5828('0x5c')][_0x5828('0x64')],'role':_0x5828('0x65')},'attributes':['id','name',_0x5828('0x71'),_0x5828('0x72'),_0x5828('0x73')],'raw':!![]});}return null;})[_0x5828('0x3a')](function(_0x3774de){if(!_0x3774de)return null;_0x79da08[_0x5828('0x2a')][_0x5828('0x65')]=_0x3774de;return _0x79da08;})[_0x5828('0x3a')](function(_0x59ac82){if(_0x59ac82){_0x59ac82[_0x5828('0x2a')][_0x5828('0x82')]=util['format'](_0x5828('0x83'),_0x18f444['user'][_0x5828('0x3c')]);_0x59ac82['message'][_0x5828('0x75')]=_0x79da08['channel'];_0x59ac82[_0x5828('0x2a')]['motionChannel']=_0x79da08[_0x5828('0x75')];_0x59ac82['message'][_0x5828('0x84')]=_0x5828('0x85');respondWithRpcPromise('EventManager',_0x5828('0x77'),{'event':_0x5828('0x86'),'message':_[_0x5828('0x51')](_0x79da08[_0x5828('0x2a')],JSON[_0x5828('0x87')](_0x79da08[_0x5828('0x68')][_0x5828('0x79')]))},client9002);return _0x79da08;}return null;})[_0x5828('0x3a')](respondWithResult(_0x4564f5,null))['catch'](handleError(_0x4564f5,null));};
\ No newline at end of file
index 255bb97..ac7f98a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b82=['save','emit','hook','exports','events','ChatMessage'];(function(_0x3a9cae,_0x29b84a){var _0x342f94=function(_0x910cdc){while(--_0x910cdc){_0x3a9cae['push'](_0x3a9cae['shift']());}};_0x342f94(++_0x29b84a);}(_0x0b82,0x1c0));var _0x20b8=function(_0x261dac,_0x341e85){_0x261dac=_0x261dac-0x0;var _0x540675=_0x0b82[_0x261dac];return _0x540675;};'use strict';var EventEmitter=require(_0x20b8('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x20b8('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x20b8('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2974b4){return function(_0x2275cd,_0x4bb73e,_0x309b08){ChatMessageEvents[_0x20b8('0x3')](_0x2974b4+':'+_0x2275cd['id'],_0x2275cd);ChatMessageEvents[_0x20b8('0x3')](_0x2974b4,_0x2275cd);_0x309b08(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x20b8('0x4')](e,emitEvent(event));}}module[_0x20b8('0x5')]=ChatMessageEvents;
\ No newline at end of file
+var _0x9847=['hasOwnProperty','hook','exports','events','../../mysqldb','ChatMessage','save','update','remove','emit'];(function(_0x2396a1,_0x235f79){var _0x46b666=function(_0x5f8973){while(--_0x5f8973){_0x2396a1['push'](_0x2396a1['shift']());}};_0x46b666(++_0x235f79);}(_0x9847,0x1ed));var _0x7984=function(_0x3ae885,_0x30a66c){_0x3ae885=_0x3ae885-0x0;var _0x47571e=_0x9847[_0x3ae885];return _0x47571e;};'use strict';var EventEmitter=require(_0x7984('0x0'));var ChatMessage=require(_0x7984('0x1'))['db'][_0x7984('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7984('0x3'),'afterUpdate':_0x7984('0x4'),'afterDestroy':_0x7984('0x5')};function emitEvent(_0x5c637f){return function(_0x39b50e,_0x1912fe,_0x6368f8){ChatMessageEvents[_0x7984('0x6')](_0x5c637f+':'+_0x39b50e['id'],_0x39b50e);ChatMessageEvents[_0x7984('0x6')](_0x5c637f,_0x39b50e);_0x6368f8(null);};}for(var e in events){if(events[_0x7984('0x7')](e)){var event=events[e];ChatMessage[_0x7984('0x8')](e,emitEvent(event));}}module[_0x7984('0x9')]=ChatMessageEvents;
\ No newline at end of file
index 875f08b..8d04fea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad47=['findOne','ChatInteractionId','createdAt','error','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','ChatMessage','chat_messages','fti_chat_messages','FULLTEXT','models','direction','toLowerCase','secret','isNil','UserId','ChatInteraction'];(function(_0x5679a9,_0x39d840){var _0x361cd8=function(_0x26a718){while(--_0x26a718){_0x5679a9['push'](_0x5679a9['shift']());}};_0x361cd8(++_0x39d840);}(_0xad47,0xad));var _0x7ad4=function(_0x56916d,_0x37b935){_0x56916d=_0x56916d-0x0;var _0x2b7f1f=_0xad47[_0x56916d];return _0x2b7f1f;};'use strict';var _=require(_0x7ad4('0x0'));var util=require(_0x7ad4('0x1'));var logger=require(_0x7ad4('0x2'))(_0x7ad4('0x3'));var moment=require(_0x7ad4('0x4'));var BPromise=require(_0x7ad4('0x5'));var rp=require(_0x7ad4('0x6'));var fs=require('fs');var path=require(_0x7ad4('0x7'));var rimraf=require(_0x7ad4('0x8'));var config=require(_0x7ad4('0x9'));var attributes=require(_0x7ad4('0xa'));module[_0x7ad4('0xb')]=function(_0x1eb29b,_0x1f969d){return _0x1eb29b['define'](_0x7ad4('0xc'),attributes,{'tableName':_0x7ad4('0xd'),'paranoid':![],'indexes':[{'name':_0x7ad4('0xe'),'fields':['body'],'type':_0x7ad4('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4b34b0,_0x16989e,_0x32e6d5){var _0x161356=_0x1eb29b[_0x7ad4('0x10')];var _0x3ba7c8=_0x4b34b0['get']({'plain':!![]});if(_0x3ba7c8[_0x7ad4('0x11')][_0x7ad4('0x12')]()==='in'||_0x3ba7c8['direction'][_0x7ad4('0x12')]()==='out'&&!_0x3ba7c8[_0x7ad4('0x13')]&&!_[_0x7ad4('0x14')](_0x3ba7c8[_0x7ad4('0x15')])){_0x161356[_0x7ad4('0x16')][_0x7ad4('0x17')]({'where':{'id':_0x3ba7c8[_0x7ad4('0x18')]}})['then'](function(_0x35fbb3){if(_0x35fbb3){_0x35fbb3['update']({'lastMsgAt':_0x3ba7c8[_0x7ad4('0x19')],'lastMsgDirection':_0x3ba7c8[_0x7ad4('0x11')][_0x7ad4('0x12')]()});}})['catch'](function(_0x1c8d59){console[_0x7ad4('0x1a')](_0x1c8d59);});}_0x32e6d5();}},'charset':'utf8mb4','collate':_0x7ad4('0x1b')});};
\ No newline at end of file
+var _0x0816=['path','rimraf','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1bc1a2,_0x2fb55d){var _0x449711=function(_0x44d4a7){while(--_0x44d4a7){_0x1bc1a2['push'](_0x1bc1a2['shift']());}};_0x449711(++_0x2fb55d);}(_0x0816,0x1ac));var _0x6081=function(_0x5f1cf8,_0x5e0923){_0x5f1cf8=_0x5f1cf8-0x0;var _0x27d0fa=_0x0816[_0x5f1cf8];return _0x27d0fa;};'use strict';var _=require('lodash');var util=require(_0x6081('0x0'));var logger=require(_0x6081('0x1'))(_0x6081('0x2'));var moment=require(_0x6081('0x3'));var BPromise=require(_0x6081('0x4'));var rp=require(_0x6081('0x5'));var fs=require('fs');var path=require(_0x6081('0x6'));var rimraf=require(_0x6081('0x7'));var config=require(_0x6081('0x8'));var attributes=require(_0x6081('0x9'));module['exports']=function(_0x1e5e0c,_0x2612d0){return _0x1e5e0c[_0x6081('0xa')](_0x6081('0xb'),attributes,{'tableName':_0x6081('0xc'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0x6081('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x20c200,_0x4c2850,_0x50df25){var _0x464300=_0x1e5e0c['models'];var _0x45150c=_0x20c200[_0x6081('0xe')]({'plain':!![]});if(_0x45150c[_0x6081('0xf')][_0x6081('0x10')]()==='in'||_0x45150c[_0x6081('0xf')][_0x6081('0x10')]()===_0x6081('0x11')&&!_0x45150c[_0x6081('0x12')]&&!_[_0x6081('0x13')](_0x45150c[_0x6081('0x14')])){_0x464300[_0x6081('0x15')][_0x6081('0x16')]({'where':{'id':_0x45150c[_0x6081('0x17')]}})[_0x6081('0x18')](function(_0x32810b){if(_0x32810b){_0x32810b[_0x6081('0x19')]({'lastMsgAt':_0x45150c[_0x6081('0x1a')],'lastMsgDirection':_0x45150c[_0x6081('0xf')][_0x6081('0x10')]()});}})[_0x6081('0x1b')](function(_0x50b99d){console[_0x6081('0x1c')](_0x50b99d);});}_0x50df25();}},'charset':_0x6081('0x1d'),'collate':_0x6081('0x1e')});};
\ No newline at end of file
index 8bdde68..71e2aec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b89=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','defaults','redis','localhost','./chatMessage.socket','request','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateChatMessage','ChatMessage','create','options','raw'];(function(_0x547af,_0x17abff){var _0x22f7f4=function(_0x5f0384){while(--_0x5f0384){_0x547af['push'](_0x547af['shift']());}};_0x22f7f4(++_0x17abff);}(_0x6b89,0x186));var _0x96b8=function(_0x1526da,_0x552b95){_0x1526da=_0x1526da-0x0;var _0x40049a=_0x6b89[_0x1526da];return _0x40049a;};'use strict';var _=require('lodash');var util=require(_0x96b8('0x0'));var moment=require(_0x96b8('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x96b8('0x2'));var db=require(_0x96b8('0x3'))['db'];var utils=require(_0x96b8('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x96b8('0x5'));var jayson=require(_0x96b8('0x6'));var client=jayson['client'][_0x96b8('0x7')]({'port':0x232a});config['redis']=_[_0x96b8('0x8')](config[_0x96b8('0x9')],{'host':_0x96b8('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x96b8('0xb'))['register'](socket);function respondWithRpcPromise(_0x3824a4,_0x3e6237,_0x3d331c){return new BPromise(function(_0x23d805,_0x47d6aa){return client[_0x96b8('0xc')](_0x3824a4,_0x3d331c)[_0x96b8('0xd')](function(_0x17883a){logger['info'](_0x96b8('0xe'),_0x3e6237,_0x96b8('0xf'));logger[_0x96b8('0x10')](_0x96b8('0x11'),_0x3e6237,'request\x20sent',JSON[_0x96b8('0x12')](_0x17883a));if(_0x17883a['error']){if(_0x17883a['error'][_0x96b8('0x13')]===0x1f4){logger[_0x96b8('0x14')]('ChatMessage,\x20%s,\x20%s',_0x3e6237,_0x17883a[_0x96b8('0x14')][_0x96b8('0x15')]);return _0x47d6aa(_0x17883a['error']['message']);}logger[_0x96b8('0x14')](_0x96b8('0xe'),_0x3e6237,_0x17883a[_0x96b8('0x14')][_0x96b8('0x15')]);return _0x23d805(_0x17883a['error'][_0x96b8('0x15')]);}else{logger[_0x96b8('0x16')](_0x96b8('0xe'),_0x3e6237,_0x96b8('0xf'));_0x23d805(_0x17883a[_0x96b8('0x17')]['message']);}})[_0x96b8('0x18')](function(_0x36af6e){logger[_0x96b8('0x14')](_0x96b8('0xe'),_0x3e6237,_0x36af6e);_0x47d6aa(_0x36af6e);});});}exports[_0x96b8('0x19')]=function(_0x41dd91){var _0x29fe7d=this;return new Promise(function(_0x1624d6,_0xab29d6){return db[_0x96b8('0x1a')][_0x96b8('0x1b')](_0x41dd91['body'],{'raw':_0x41dd91[_0x96b8('0x1c')]?_0x41dd91[_0x96b8('0x1c')][_0x96b8('0x1d')]===undefined?!![]:![]:!![]})[_0x96b8('0xd')](function(_0x1a428b){logger[_0x96b8('0x16')](_0x96b8('0x19'),_0x41dd91);logger['debug'](_0x96b8('0x19'),_0x41dd91,JSON[_0x96b8('0x12')](_0x1a428b));_0x1624d6(_0x1a428b);})[_0x96b8('0x18')](function(_0x4ddccb){logger[_0x96b8('0x14')](_0x96b8('0x19'),_0x4ddccb[_0x96b8('0x15')],_0x41dd91);_0xab29d6(_0x29fe7d['error'](0x1f4,_0x4ddccb['message']));});});};
\ No newline at end of file
+var _0xae12=['message','result','CreateChatMessage','ChatMessage','body','options','raw','debug','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x311f44,_0x1d7f5b){var _0x46f1e6=function(_0x27342a){while(--_0x27342a){_0x311f44['push'](_0x311f44['shift']());}};_0x46f1e6(++_0x1d7f5b);}(_0xae12,0x1d0));var _0x2ae1=function(_0x380e75,_0x486360){_0x380e75=_0x380e75-0x0;var _0x444d96=_0xae12[_0x380e75];return _0x444d96;};'use strict';var _=require('lodash');var util=require(_0x2ae1('0x0'));var moment=require(_0x2ae1('0x1'));var BPromise=require(_0x2ae1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2ae1('0x3'));var db=require(_0x2ae1('0x4'))['db'];var utils=require(_0x2ae1('0x5'));var logger=require(_0x2ae1('0x6'))(_0x2ae1('0x7'));var config=require(_0x2ae1('0x8'));var jayson=require(_0x2ae1('0x9'));var client=jayson['client'][_0x2ae1('0xa')]({'port':0x232a});config['redis']=_[_0x2ae1('0xb')](config[_0x2ae1('0xc')],{'host':_0x2ae1('0xd'),'port':0x18eb});var socket=require(_0x2ae1('0xe'))(new Redis(config['redis']));require(_0x2ae1('0xf'))[_0x2ae1('0x10')](socket);function respondWithRpcPromise(_0x342d84,_0xfdb930,_0x4749bd){return new BPromise(function(_0x358077,_0x25a667){return client[_0x2ae1('0x11')](_0x342d84,_0x4749bd)[_0x2ae1('0x12')](function(_0x2d141b){logger[_0x2ae1('0x13')](_0x2ae1('0x14'),_0xfdb930,_0x2ae1('0x15'));logger['debug'](_0x2ae1('0x16'),_0xfdb930,_0x2ae1('0x15'),JSON[_0x2ae1('0x17')](_0x2d141b));if(_0x2d141b[_0x2ae1('0x18')]){if(_0x2d141b[_0x2ae1('0x18')][_0x2ae1('0x19')]===0x1f4){logger[_0x2ae1('0x18')](_0x2ae1('0x14'),_0xfdb930,_0x2d141b['error'][_0x2ae1('0x1a')]);return _0x25a667(_0x2d141b[_0x2ae1('0x18')][_0x2ae1('0x1a')]);}logger[_0x2ae1('0x18')](_0x2ae1('0x14'),_0xfdb930,_0x2d141b['error']['message']);return _0x358077(_0x2d141b[_0x2ae1('0x18')][_0x2ae1('0x1a')]);}else{logger[_0x2ae1('0x13')](_0x2ae1('0x14'),_0xfdb930,_0x2ae1('0x15'));_0x358077(_0x2d141b[_0x2ae1('0x1b')]['message']);}})['catch'](function(_0x46c576){logger['error']('ChatMessage,\x20%s,\x20%s',_0xfdb930,_0x46c576);_0x25a667(_0x46c576);});});}exports[_0x2ae1('0x1c')]=function(_0xb649c8){var _0x41007e=this;return new Promise(function(_0x5a3e6a,_0x56a5e5){return db[_0x2ae1('0x1d')]['create'](_0xb649c8[_0x2ae1('0x1e')],{'raw':_0xb649c8['options']?_0xb649c8[_0x2ae1('0x1f')][_0x2ae1('0x20')]===undefined?!![]:![]:!![]})[_0x2ae1('0x12')](function(_0x46e788){logger[_0x2ae1('0x13')]('CreateChatMessage',_0xb649c8);logger[_0x2ae1('0x21')](_0x2ae1('0x1c'),_0xb649c8,JSON[_0x2ae1('0x17')](_0x46e788));_0x5a3e6a(_0x46e788);})[_0x2ae1('0x22')](function(_0x2288bd){logger[_0x2ae1('0x18')]('CreateChatMessage',_0x2288bd[_0x2ae1('0x1a')],_0xb649c8);_0x56a5e5(_0x41007e['error'](0x1f4,_0x2288bd['message']));});});};
\ No newline at end of file
index b955cbd..93b5aca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39d9=['emit','removeListener','register','length','chatMessage:','./chatMessage.events','save','remove','update'];(function(_0x5903a8,_0x4ce508){var _0x5a5b08=function(_0x1bcb6c){while(--_0x1bcb6c){_0x5903a8['push'](_0x5903a8['shift']());}};_0x5a5b08(++_0x4ce508);}(_0x39d9,0x17f));var _0x939d=function(_0x334282,_0x1339fd){_0x334282=_0x334282-0x0;var _0xc94768=_0x39d9[_0x334282];return _0xc94768;};'use strict';var ChatMessageEvents=require(_0x939d('0x0'));var events=[_0x939d('0x1'),_0x939d('0x2'),_0x939d('0x3')];function createListener(_0x3834f0,_0x201b6a){return function(_0x367c79){_0x201b6a[_0x939d('0x4')](_0x3834f0,_0x367c79);};}function removeListener(_0x57ab6c,_0x2a9e29){return function(){ChatMessageEvents[_0x939d('0x5')](_0x57ab6c,_0x2a9e29);};}exports[_0x939d('0x6')]=function(_0x48b22f){for(var _0x41c89f=0x0,_0x537fd2=events[_0x939d('0x7')];_0x41c89f<_0x537fd2;_0x41c89f++){var _0x1bac28=events[_0x41c89f];var _0x20546a=createListener(_0x939d('0x8')+_0x1bac28,_0x48b22f);ChatMessageEvents['on'](_0x1bac28,_0x20546a);}};
\ No newline at end of file
+var _0x814b=['removeListener','register','length','chatMessage:','./chatMessage.events','save','remove','update','emit'];(function(_0x7729b1,_0x468322){var _0x349504=function(_0x401cee){while(--_0x401cee){_0x7729b1['push'](_0x7729b1['shift']());}};_0x349504(++_0x468322);}(_0x814b,0x1a2));var _0xb814=function(_0x1dd2cc,_0x36ddfe){_0x1dd2cc=_0x1dd2cc-0x0;var _0x305d8e=_0x814b[_0x1dd2cc];return _0x305d8e;};'use strict';var ChatMessageEvents=require(_0xb814('0x0'));var events=[_0xb814('0x1'),_0xb814('0x2'),_0xb814('0x3')];function createListener(_0xfbb64b,_0x477725){return function(_0x4a98af){_0x477725[_0xb814('0x4')](_0xfbb64b,_0x4a98af);};}function removeListener(_0x3e1e9,_0x258866){return function(){ChatMessageEvents[_0xb814('0x5')](_0x3e1e9,_0x258866);};}exports[_0xb814('0x6')]=function(_0x322a70){for(var _0x53e507=0x0,_0x3b0829=events[_0xb814('0x7')];_0x53e507<_0x3b0829;_0x53e507++){var _0x5c8539=events[_0x53e507];var _0x271af9=createListener(_0xb814('0x8')+_0x5c8539,_0x322a70);ChatMessageEvents['on'](_0x5c8539,_0x271af9);}};
\ No newline at end of file
index 9dc4ef6..4d39564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x569a=['show','post','chat','chatmessage:create','create','update','put','accept','reject','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatMessage.controller','get','index','/describe','describe','isAuthenticated'];(function(_0x5b0c36,_0x5c9219){var _0x4e8312=function(_0x2c6ce8){while(--_0x2c6ce8){_0x5b0c36['push'](_0x5b0c36['shift']());}};_0x4e8312(++_0x5c9219);}(_0x569a,0xd3));var _0xa569=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x569a[_0x4a9fb1];return _0x348672;};'use strict';var multer=require(_0xa569('0x0'));var util=require(_0xa569('0x1'));var path=require('path');var timeout=require(_0xa569('0x2'));var express=require(_0xa569('0x3'));var router=express[_0xa569('0x4')]();var fs_extra=require(_0xa569('0x5'));var auth=require(_0xa569('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xa569('0x7'));var controller=require(_0xa569('0x8'));router[_0xa569('0x9')]('/',auth['isAuthenticated'](),controller[_0xa569('0xa')]);router[_0xa569('0x9')](_0xa569('0xb'),auth['isAuthenticated'](),controller[_0xa569('0xc')]);router[_0xa569('0x9')]('/:id',auth[_0xa569('0xd')](),controller[_0xa569('0xe')]);router[_0xa569('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0xa569('0x10'),_0xa569('0x11')),controller[_0xa569('0x12')]);router['put']('/:id',controller[_0xa569('0x13')]);router[_0xa569('0x14')]('/:id/accept',auth[_0xa569('0xd')](),controller[_0xa569('0x15')]);router[_0xa569('0x14')]('/:id/reject',auth['isAuthenticated'](),controller[_0xa569('0x16')]);router['delete']('/:id',auth[_0xa569('0xd')](),controller[_0xa569('0x17')]);module[_0xa569('0x18')]=router;
\ No newline at end of file
+var _0x636a=['chatmessage:create','put','update','/:id/accept','accept','/:id/reject','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','isAuthenticated','/describe','describe','/:id','post','tracked','chat'];(function(_0x8b9152,_0x50387c){var _0x39d7f4=function(_0x32b92e){while(--_0x32b92e){_0x8b9152['push'](_0x8b9152['shift']());}};_0x39d7f4(++_0x50387c);}(_0x636a,0x159));var _0xa636=function(_0x27b9a7,_0x215ec2){_0x27b9a7=_0x27b9a7-0x0;var _0x3c38dd=_0x636a[_0x27b9a7];return _0x3c38dd;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xa636('0x0'));var express=require(_0xa636('0x1'));var router=express[_0xa636('0x2')]();var fs_extra=require(_0xa636('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa636('0x4'));var config=require(_0xa636('0x5'));var controller=require(_0xa636('0x6'));router[_0xa636('0x7')]('/',auth[_0xa636('0x8')](),controller['index']);router[_0xa636('0x7')](_0xa636('0x9'),auth['isAuthenticated'](),controller[_0xa636('0xa')]);router[_0xa636('0x7')](_0xa636('0xb'),auth[_0xa636('0x8')](),controller['show']);router[_0xa636('0xc')]('/',auth['isAuthenticated'](),interaction[_0xa636('0xd')](_0xa636('0xe'),_0xa636('0xf')),controller['create']);router[_0xa636('0x10')]('/:id',controller[_0xa636('0x11')]);router['put'](_0xa636('0x12'),auth[_0xa636('0x8')](),controller[_0xa636('0x13')]);router[_0xa636('0x10')](_0xa636('0x14'),auth[_0xa636('0x8')](),controller['reject']);router[_0xa636('0x15')](_0xa636('0xb'),auth[_0xa636('0x8')](),controller[_0xa636('0x16')]);module[_0xa636('0x17')]=router;
\ No newline at end of file
index 262df50..ff4ed7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1433=['TEXT','medium','sequelize','exports'];(function(_0x2caf32,_0x35c5d8){var _0xa8587d=function(_0xaf6feb){while(--_0xaf6feb){_0x2caf32['push'](_0x2caf32['shift']());}};_0xa8587d(++_0x35c5d8);}(_0x1433,0x152));var _0x3143=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x1433[_0x3ab51d];return _0x29a04e;};'use strict';var Sequelize=require(_0x3143('0x0'));module[_0x3143('0x1')]={'body':{'type':Sequelize[_0x3143('0x2')](_0x3143('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0xbbdc=['TEXT','medium','sequelize'];(function(_0x108427,_0x245983){var _0x5ae893=function(_0x2c8d2a){while(--_0x2c8d2a){_0x108427['push'](_0x108427['shift']());}};_0x5ae893(++_0x245983);}(_0xbbdc,0x12b));var _0xcbbd=function(_0x381379,_0x3f3b86){_0x381379=_0x381379-0x0;var _0x3e1063=_0xbbdc[_0x381379];return _0x3e1063;};'use strict';var Sequelize=require(_0xcbbd('0x0'));module['exports']={'body':{'type':Sequelize[_0xcbbd('0x1')](_0xcbbd('0x2')),'allowNull':![]}};
\ No newline at end of file
index aae4f34..f7a029d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x4935b8,_0x35b34a){var _0x63d1d2=function(_0x3ead8b){while(--_0x3ead8b){_0x4935b8['push'](_0x4935b8['shift']());}};_0x63d1d2(++_0x35b34a);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x318f8a,_0x5b64c9){var _0x1801c2=function(_0x1a1843){while(--_0x1a1843){_0x318f8a['push'](_0x318f8a['shift']());}};_0x1801c2(++_0x5b64c9);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
index 7df076b..6e9adf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb96d=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x39c846,_0x444606){var _0x1c696a=function(_0x760648){while(--_0x760648){_0x39c846['push'](_0x39c846['shift']());}};_0x1c696a(++_0x444606);}(_0xb96d,0xa1));var _0xdb96=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xb96d[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0xdb96('0x0'));var util=require('util');var logger=require(_0xdb96('0x1'))(_0xdb96('0x2'));var moment=require(_0xdb96('0x3'));var BPromise=require(_0xdb96('0x4'));var rp=require(_0xdb96('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb96('0x6'));var config=require('../../config/environment');var attributes=require(_0xdb96('0x7'));module[_0xdb96('0x8')]=function(_0x4e84cb,_0x5bbce8){return _0x4e84cb[_0xdb96('0x9')](_0xdb96('0xa'),attributes,{'tableName':_0xdb96('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xdb96('0xc'),'collate':_0xdb96('0xd')});};
\ No newline at end of file
+var _0x2350=['./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x5c8e8a,_0x332612){var _0x299668=function(_0x25fa67){while(--_0x25fa67){_0x5c8e8a['push'](_0x5c8e8a['shift']());}};_0x299668(++_0x332612);}(_0x2350,0x87));var _0x0235=function(_0x4aa838,_0x4aa14f){_0x4aa838=_0x4aa838-0x0;var _0x3abff0=_0x2350[_0x4aa838];return _0x3abff0;};'use strict';var _=require(_0x0235('0x0'));var util=require('util');var logger=require(_0x0235('0x1'))(_0x0235('0x2'));var moment=require(_0x0235('0x3'));var BPromise=require(_0x0235('0x4'));var rp=require(_0x0235('0x5'));var fs=require('fs');var path=require(_0x0235('0x6'));var rimraf=require(_0x0235('0x7'));var config=require('../../config/environment');var attributes=require(_0x0235('0x8'));module[_0x0235('0x9')]=function(_0x544187,_0x139f8a){return _0x544187[_0x0235('0xa')](_0x0235('0xb'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0235('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 0fe566d..389571c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x772d=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error','code','ChatOfflineMessage,\x20%s,\x20%s','message','result','catch','util'];(function(_0x2b8d9e,_0x38f52a){var _0x380e14=function(_0xfc9680){while(--_0xfc9680){_0x2b8d9e['push'](_0x2b8d9e['shift']());}};_0x380e14(++_0x38f52a);}(_0x772d,0x197));var _0xd772=function(_0x360896,_0x594187){_0x360896=_0x360896-0x0;var _0x43515c=_0x772d[_0x360896];return _0x43515c;};'use strict';var _=require('lodash');var util=require(_0xd772('0x0'));var moment=require(_0xd772('0x1'));var BPromise=require(_0xd772('0x2'));var rs=require(_0xd772('0x3'));var fs=require('fs');var Redis=require(_0xd772('0x4'));var db=require(_0xd772('0x5'))['db'];var utils=require(_0xd772('0x6'));var logger=require(_0xd772('0x7'))(_0xd772('0x8'));var config=require(_0xd772('0x9'));var jayson=require(_0xd772('0xa'));var client=jayson[_0xd772('0xb')][_0xd772('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x29ce3e,_0x596e75,_0x3a8687){return new BPromise(function(_0xb99ca9,_0x55f068){return client[_0xd772('0xd')](_0x29ce3e,_0x3a8687)['then'](function(_0x3d3807){logger[_0xd772('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x596e75,_0xd772('0xf'));logger[_0xd772('0x10')](_0xd772('0x11'),_0x596e75,'request\x20sent',JSON['stringify'](_0x3d3807));if(_0x3d3807[_0xd772('0x12')]){if(_0x3d3807[_0xd772('0x12')][_0xd772('0x13')]===0x1f4){logger['error'](_0xd772('0x14'),_0x596e75,_0x3d3807[_0xd772('0x12')]['message']);return _0x55f068(_0x3d3807[_0xd772('0x12')][_0xd772('0x15')]);}logger[_0xd772('0x12')](_0xd772('0x14'),_0x596e75,_0x3d3807[_0xd772('0x12')]['message']);return _0xb99ca9(_0x3d3807[_0xd772('0x12')]['message']);}else{logger[_0xd772('0xe')](_0xd772('0x14'),_0x596e75,'request\x20sent');_0xb99ca9(_0x3d3807[_0xd772('0x16')][_0xd772('0x15')]);}})[_0xd772('0x17')](function(_0x22046d){logger[_0xd772('0x12')](_0xd772('0x14'),_0x596e75,_0x22046d);_0x55f068(_0x22046d);});});}
\ No newline at end of file
+var _0x2409=['request\x20sent','stringify','error','code','message','ChatOfflineMessage,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','debug'];(function(_0x1c0f41,_0x26d95d){var _0x369a9f=function(_0x251234){while(--_0x251234){_0x1c0f41['push'](_0x1c0f41['shift']());}};_0x369a9f(++_0x26d95d);}(_0x2409,0x128));var _0x9240=function(_0x4134b5,_0x30caf1){_0x4134b5=_0x4134b5-0x0;var _0x9cf962=_0x2409[_0x4134b5];return _0x9cf962;};'use strict';var _=require(_0x9240('0x0'));var util=require(_0x9240('0x1'));var moment=require(_0x9240('0x2'));var BPromise=require(_0x9240('0x3'));var rs=require(_0x9240('0x4'));var fs=require('fs');var Redis=require(_0x9240('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9240('0x6'));var logger=require(_0x9240('0x7'))(_0x9240('0x8'));var config=require(_0x9240('0x9'));var jayson=require(_0x9240('0xa'));var client=jayson['client'][_0x9240('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x496405,_0x3f7e69,_0x4997e9){return new BPromise(function(_0x50e2df,_0x5af54e){return client[_0x9240('0xc')](_0x496405,_0x4997e9)[_0x9240('0xd')](function(_0x4f844a){logger[_0x9240('0xe')]('ChatOfflineMessage,\x20%s,\x20%s',_0x3f7e69,'request\x20sent');logger[_0x9240('0xf')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x3f7e69,_0x9240('0x10'),JSON[_0x9240('0x11')](_0x4f844a));if(_0x4f844a[_0x9240('0x12')]){if(_0x4f844a[_0x9240('0x12')][_0x9240('0x13')]===0x1f4){logger[_0x9240('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x3f7e69,_0x4f844a[_0x9240('0x12')]['message']);return _0x5af54e(_0x4f844a[_0x9240('0x12')][_0x9240('0x14')]);}logger[_0x9240('0x12')](_0x9240('0x15'),_0x3f7e69,_0x4f844a[_0x9240('0x12')][_0x9240('0x14')]);return _0x50e2df(_0x4f844a[_0x9240('0x12')][_0x9240('0x14')]);}else{logger[_0x9240('0xe')](_0x9240('0x15'),_0x3f7e69,_0x9240('0x10'));_0x50e2df(_0x4f844a[_0x9240('0x16')]['message']);}})[_0x9240('0x17')](function(_0x3fab8c){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x3f7e69,_0x3fab8c);_0x5af54e(_0x3fab8c);});});}
\ No newline at end of file
index 7f3f165..25cf9f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ede=['/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatOfflineMessage.controller','get','isAuthenticated','index','describe','create'];(function(_0x383ca5,_0x2b899b){var _0x1d80ab=function(_0x175cb9){while(--_0x175cb9){_0x383ca5['push'](_0x383ca5['shift']());}};_0x1d80ab(++_0x2b899b);}(_0x2ede,0x17e));var _0xe2ed=function(_0x2bc066,_0x29aeaa){_0x2bc066=_0x2bc066-0x0;var _0x3b6962=_0x2ede[_0x2bc066];return _0x3b6962;};'use strict';var multer=require(_0xe2ed('0x0'));var util=require(_0xe2ed('0x1'));var path=require(_0xe2ed('0x2'));var timeout=require(_0xe2ed('0x3'));var express=require(_0xe2ed('0x4'));var router=express[_0xe2ed('0x5')]();var fs_extra=require(_0xe2ed('0x6'));var auth=require(_0xe2ed('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xe2ed('0x8'));router[_0xe2ed('0x9')]('/',auth[_0xe2ed('0xa')](),controller[_0xe2ed('0xb')]);router[_0xe2ed('0x9')]('/describe',auth[_0xe2ed('0xa')](),controller[_0xe2ed('0xc')]);router[_0xe2ed('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xe2ed('0xa')](),controller[_0xe2ed('0xd')]);router['put'](_0xe2ed('0xe'),auth['isAuthenticated'](),controller[_0xe2ed('0xf')]);router[_0xe2ed('0x10')](_0xe2ed('0xe'),auth[_0xe2ed('0xa')](),controller['destroy']);module[_0xe2ed('0x11')]=router;
\ No newline at end of file
+var _0x5b9b=['../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0x5b9b,0x177));var _0xb5b9=function(_0x31c924,_0x4aa031){_0x31c924=_0x31c924-0x0;var _0xec04e=_0x5b9b[_0x31c924];return _0xec04e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb5b9('0x0'));var express=require(_0xb5b9('0x1'));var router=express[_0xb5b9('0x2')]();var fs_extra=require(_0xb5b9('0x3'));var auth=require(_0xb5b9('0x4'));var interaction=require(_0xb5b9('0x5'));var config=require(_0xb5b9('0x6'));var controller=require(_0xb5b9('0x7'));router[_0xb5b9('0x8')]('/',auth[_0xb5b9('0x9')](),controller[_0xb5b9('0xa')]);router[_0xb5b9('0x8')](_0xb5b9('0xb'),auth[_0xb5b9('0x9')](),controller[_0xb5b9('0xc')]);router['get'](_0xb5b9('0xd'),auth['isAuthenticated'](),controller[_0xb5b9('0xe')]);router[_0xb5b9('0xf')]('/',auth[_0xb5b9('0x9')](),controller[_0xb5b9('0x10')]);router['put'](_0xb5b9('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xb5b9('0x11')](_0xb5b9('0xd'),auth[_0xb5b9('0x9')](),controller[_0xb5b9('0x12')]);module[_0xb5b9('0x13')]=router;
\ No newline at end of file
index f610637..e8d982d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcb0=['exports','ENUM','mouseOver','timeout','STRING','INTEGER','sequelize'];(function(_0xc04991,_0x21336e){var _0x406622=function(_0x2b6bd7){while(--_0x2b6bd7){_0xc04991['push'](_0xc04991['shift']());}};_0x406622(++_0x21336e);}(_0xfcb0,0xbc));var _0x0fcb=function(_0x48b0ae,_0x1cb48d){_0x48b0ae=_0x48b0ae-0x0;var _0x5d4d6d=_0xfcb0[_0x48b0ae];return _0x5d4d6d;};'use strict';var Sequelize=require(_0x0fcb('0x0'));module[_0x0fcb('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x0fcb('0x2')](_0x0fcb('0x3'),_0x0fcb('0x4')),'defaultValue':_0x0fcb('0x3')},'selector':{'type':Sequelize[_0x0fcb('0x5')]},'timeout':{'type':Sequelize[_0x0fcb('0x6')]}};
\ No newline at end of file
+var _0x563d=['timeout','INTEGER','exports','STRING','ENUM','mouseOver'];(function(_0x35b1f1,_0x254a37){var _0x59f832=function(_0x4b613d){while(--_0x4b613d){_0x35b1f1['push'](_0x35b1f1['shift']());}};_0x59f832(++_0x254a37);}(_0x563d,0x17c));var _0xd563=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x563d[_0x39e283];return _0x7de89f;};'use strict';var Sequelize=require('sequelize');module[_0xd563('0x0')]={'name':{'type':Sequelize[_0xd563('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xd563('0x2')](_0xd563('0x3'),_0xd563('0x4')),'defaultValue':_0xd563('0x3')},'selector':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xd563('0x5')]}};
\ No newline at end of file
index c23dc30..5e36744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b67=['keys','ChatProactiveAction','rawAttributes','query','filters','intersection','fields','attributes','length','merge','create','body','catch','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','error','name','send','params','model'];(function(_0x2d1bf0,_0x147ba2){var _0x3e1b7b=function(_0x44de80){while(--_0x44de80){_0x2d1bf0['push'](_0x2d1bf0['shift']());}};_0x3e1b7b(++_0x147ba2);}(_0x9b67,0xf6));var _0x79b6=function(_0x3fd453,_0x5972f7){_0x3fd453=_0x3fd453-0x0;var _0x55e571=_0x9b67[_0x3fd453];return _0x55e571;};'use strict';var emlformat=require(_0x79b6('0x0'));var rimraf=require(_0x79b6('0x1'));var zipdir=require(_0x79b6('0x2'));var jsonpatch=require(_0x79b6('0x3'));var rp=require(_0x79b6('0x4'));var moment=require('moment');var BPromise=require(_0x79b6('0x5'));var Mustache=require(_0x79b6('0x6'));var util=require('util');var path=require('path');var sox=require(_0x79b6('0x7'));var csv=require(_0x79b6('0x8'));var ejs=require(_0x79b6('0x9'));var fs=require('fs');var fs_extra=require(_0x79b6('0xa'));var _=require(_0x79b6('0xb'));var squel=require(_0x79b6('0xc'));var crypto=require(_0x79b6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x79b6('0xe'));var toCsv=require(_0x79b6('0x8'));var querystring=require(_0x79b6('0xf'));var Papa=require(_0x79b6('0x10'));var Redis=require(_0x79b6('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x79b6('0x12'));var as=require(_0x79b6('0x13'));var hardwareService=require(_0x79b6('0x14'));var logger=require(_0x79b6('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x79b6('0x16'));var licenseUtil=require(_0x79b6('0x17'));var db=require(_0x79b6('0x18'))['db'];function respondWithStatusCode(_0x526727,_0xc05a77){_0xc05a77=_0xc05a77||0xcc;return function(_0x2df08d){if(_0x2df08d){return _0x526727[_0x79b6('0x19')](_0xc05a77);}return _0x526727[_0x79b6('0x1a')](_0xc05a77)[_0x79b6('0x1b')]();};}function respondWithResult(_0x40478d,_0x19d5b2){_0x19d5b2=_0x19d5b2||0xc8;return function(_0x3ef1fa){if(_0x3ef1fa){return _0x40478d[_0x79b6('0x1a')](_0x19d5b2)[_0x79b6('0x1c')](_0x3ef1fa);}};}function respondWithFilteredResult(_0x2ac966,_0x3563cc){return function(_0x1e8bf1){if(_0x1e8bf1){var _0x4cf491=typeof _0x3563cc[_0x79b6('0x1d')]===_0x79b6('0x1e')&&typeof _0x3563cc[_0x79b6('0x1f')]===_0x79b6('0x1e');var _0x2a8788=_0x1e8bf1[_0x79b6('0x20')];var _0x131bc5=_0x4cf491?0x0:_0x3563cc[_0x79b6('0x1d')];var _0x3ff583=_0x4cf491?_0x1e8bf1[_0x79b6('0x20')]:_0x3563cc[_0x79b6('0x1d')]+_0x3563cc[_0x79b6('0x1f')];var _0x1361f6;if(_0x3ff583>=_0x2a8788){_0x3ff583=_0x2a8788;_0x1361f6=0xc8;}else{_0x1361f6=0xce;}_0x2ac966['status'](_0x1361f6);return _0x2ac966[_0x79b6('0x21')]('Content-Range',_0x131bc5+'-'+_0x3ff583+'/'+_0x2a8788)[_0x79b6('0x1c')](_0x1e8bf1);}return null;};}function patchUpdates(_0x532e65){return function(_0x28b9c2){try{jsonpatch[_0x79b6('0x22')](_0x28b9c2,_0x532e65,!![]);}catch(_0x299bed){return BPromise['reject'](_0x299bed);}return _0x28b9c2[_0x79b6('0x23')]();};}function saveUpdates(_0x30dc0b,_0x53208a){return function(_0x565f86){if(_0x565f86){return _0x565f86[_0x79b6('0x24')](_0x30dc0b)[_0x79b6('0x25')](function(_0x9bd2cc){return _0x9bd2cc;});}return null;};}function removeEntity(_0x268826,_0x3b2a2a){return function(_0x488102){if(_0x488102){return _0x488102[_0x79b6('0x26')]()[_0x79b6('0x25')](function(){_0x268826[_0x79b6('0x1a')](0xcc)[_0x79b6('0x1b')]();});}};}function handleEntityNotFound(_0x4c275d,_0x53c03c){return function(_0x40ef76){if(!_0x40ef76){_0x4c275d[_0x79b6('0x19')](0x194);}return _0x40ef76;};}function handleError(_0x37b01b,_0xc25c99){_0xc25c99=_0xc25c99||0x1f4;return function(_0x4adf15){logger[_0x79b6('0x27')](_0x4adf15['stack']);if(_0x4adf15[_0x79b6('0x28')]){delete _0x4adf15[_0x79b6('0x28')];}_0x37b01b[_0x79b6('0x1a')](_0xc25c99)[_0x79b6('0x29')](_0x4adf15);};}exports['show']=function(_0x1484e5,_0x310832){var _0x53b463={'raw':!![],'where':{'id':_0x1484e5[_0x79b6('0x2a')]['id']}},_0x158221={};_0x158221[_0x79b6('0x2b')]=_[_0x79b6('0x2c')](db[_0x79b6('0x2d')][_0x79b6('0x2e')]);_0x158221['query']=_[_0x79b6('0x2c')](_0x1484e5[_0x79b6('0x2f')]);_0x158221[_0x79b6('0x30')]=_[_0x79b6('0x31')](_0x158221[_0x79b6('0x2b')],_0x158221[_0x79b6('0x2f')]);_0x53b463['attributes']=_[_0x79b6('0x31')](_0x158221[_0x79b6('0x2b')],qs[_0x79b6('0x32')](_0x1484e5['query']['fields']));_0x53b463[_0x79b6('0x33')]=_0x53b463[_0x79b6('0x33')][_0x79b6('0x34')]?_0x53b463[_0x79b6('0x33')]:_0x158221[_0x79b6('0x2b')];if(_0x1484e5[_0x79b6('0x2f')]['includeAll']){_0x53b463['include']=[{'all':!![]}];}_0x53b463=_[_0x79b6('0x35')]({},_0x53b463,_0x1484e5['options']);return db[_0x79b6('0x2d')]['find'](_0x53b463)[_0x79b6('0x25')](handleEntityNotFound(_0x310832,null))[_0x79b6('0x25')](respondWithResult(_0x310832,null))['catch'](handleError(_0x310832,null));};exports[_0x79b6('0x36')]=function(_0x1bb0b6,_0x507d7b){return db[_0x79b6('0x2d')]['create'](_0x1bb0b6[_0x79b6('0x37')],{})[_0x79b6('0x25')](respondWithResult(_0x507d7b,0xc9))[_0x79b6('0x38')](handleError(_0x507d7b,null));};exports[_0x79b6('0x24')]=function(_0x33eeb2,_0x732849){if(_0x33eeb2[_0x79b6('0x37')]['id']){delete _0x33eeb2[_0x79b6('0x37')]['id'];}return db[_0x79b6('0x2d')][_0x79b6('0x39')]({'where':{'id':_0x33eeb2['params']['id']}})['then'](handleEntityNotFound(_0x732849,null))['then'](saveUpdates(_0x33eeb2[_0x79b6('0x37')],null))[_0x79b6('0x25')](respondWithResult(_0x732849,null))['catch'](handleError(_0x732849,null));};exports[_0x79b6('0x26')]=function(_0x483aa8,_0x179a98){return db[_0x79b6('0x2d')][_0x79b6('0x39')]({'where':{'id':_0x483aa8['params']['id']}})[_0x79b6('0x25')](handleEntityNotFound(_0x179a98,null))['then'](removeEntity(_0x179a98,null))[_0x79b6('0x38')](handleError(_0x179a98,null));};
\ No newline at end of file
+var _0x9ef8=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','show','params','model','ChatProactiveAction','rawAttributes','keys','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','then','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util'];(function(_0x192833,_0x22814c){var _0x5514a5=function(_0x25e7e7){while(--_0x25e7e7){_0x192833['push'](_0x192833['shift']());}};_0x5514a5(++_0x22814c);}(_0x9ef8,0x17f));var _0x89ef=function(_0x38622b,_0x3cfdf7){_0x38622b=_0x38622b-0x0;var _0x2c1a7a=_0x9ef8[_0x38622b];return _0x2c1a7a;};'use strict';var emlformat=require(_0x89ef('0x0'));var rimraf=require(_0x89ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x89ef('0x2'));var rp=require(_0x89ef('0x3'));var moment=require(_0x89ef('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x89ef('0x5'));var util=require(_0x89ef('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x89ef('0x7'));var fs=require('fs');var fs_extra=require(_0x89ef('0x8'));var _=require(_0x89ef('0x9'));var squel=require(_0x89ef('0xa'));var crypto=require(_0x89ef('0xb'));var jsforce=require(_0x89ef('0xc'));var deskjs=require(_0x89ef('0xd'));var toCsv=require(_0x89ef('0xe'));var querystring=require(_0x89ef('0xf'));var Papa=require('papaparse');var Redis=require(_0x89ef('0x10'));var authService=require(_0x89ef('0x11'));var qs=require(_0x89ef('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x89ef('0x13'));var logger=require(_0x89ef('0x14'))(_0x89ef('0x15'));var utils=require(_0x89ef('0x16'));var config=require(_0x89ef('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x89ef('0x18'))['db'];function respondWithStatusCode(_0x525e1d,_0x248300){_0x248300=_0x248300||0xcc;return function(_0x2c8705){if(_0x2c8705){return _0x525e1d['sendStatus'](_0x248300);}return _0x525e1d[_0x89ef('0x19')](_0x248300)[_0x89ef('0x1a')]();};}function respondWithResult(_0x1194b6,_0x145e85){_0x145e85=_0x145e85||0xc8;return function(_0xa8a94c){if(_0xa8a94c){return _0x1194b6['status'](_0x145e85)[_0x89ef('0x1b')](_0xa8a94c);}};}function respondWithFilteredResult(_0x4b73a4,_0x4fc5b4){return function(_0x72189b){if(_0x72189b){var _0x1a89b7=typeof _0x4fc5b4['offset']===_0x89ef('0x1c')&&typeof _0x4fc5b4['limit']===_0x89ef('0x1c');var _0x4ed8fa=_0x72189b[_0x89ef('0x1d')];var _0x2c5f51=_0x1a89b7?0x0:_0x4fc5b4[_0x89ef('0x1e')];var _0x1189d7=_0x1a89b7?_0x72189b['count']:_0x4fc5b4[_0x89ef('0x1e')]+_0x4fc5b4[_0x89ef('0x1f')];var _0x16c776;if(_0x1189d7>=_0x4ed8fa){_0x1189d7=_0x4ed8fa;_0x16c776=0xc8;}else{_0x16c776=0xce;}_0x4b73a4[_0x89ef('0x19')](_0x16c776);return _0x4b73a4[_0x89ef('0x20')](_0x89ef('0x21'),_0x2c5f51+'-'+_0x1189d7+'/'+_0x4ed8fa)[_0x89ef('0x1b')](_0x72189b);}return null;};}function patchUpdates(_0x19df6a){return function(_0x3b904e){try{jsonpatch[_0x89ef('0x22')](_0x3b904e,_0x19df6a,!![]);}catch(_0x417629){return BPromise[_0x89ef('0x23')](_0x417629);}return _0x3b904e[_0x89ef('0x24')]();};}function saveUpdates(_0x1ca2b2,_0x4002b7){return function(_0x26afd6){if(_0x26afd6){return _0x26afd6[_0x89ef('0x25')](_0x1ca2b2)['then'](function(_0x59dc8f){return _0x59dc8f;});}return null;};}function removeEntity(_0x53c151,_0x5c9242){return function(_0x79a5e){if(_0x79a5e){return _0x79a5e[_0x89ef('0x26')]()['then'](function(){_0x53c151['status'](0xcc)[_0x89ef('0x1a')]();});}};}function handleEntityNotFound(_0x10bb22,_0x4a9c98){return function(_0x5313c9){if(!_0x5313c9){_0x10bb22[_0x89ef('0x27')](0x194);}return _0x5313c9;};}function handleError(_0x331ee9,_0xfd24c2){_0xfd24c2=_0xfd24c2||0x1f4;return function(_0x3efb34){logger[_0x89ef('0x28')](_0x3efb34[_0x89ef('0x29')]);if(_0x3efb34[_0x89ef('0x2a')]){delete _0x3efb34['name'];}_0x331ee9[_0x89ef('0x19')](_0xfd24c2)[_0x89ef('0x2b')](_0x3efb34);};}exports[_0x89ef('0x2c')]=function(_0x3acacc,_0x599f16){var _0x5b5c6c={'raw':!![],'where':{'id':_0x3acacc[_0x89ef('0x2d')]['id']}},_0x51245a={};_0x51245a[_0x89ef('0x2e')]=_['keys'](db[_0x89ef('0x2f')][_0x89ef('0x30')]);_0x51245a['query']=_[_0x89ef('0x31')](_0x3acacc[_0x89ef('0x32')]);_0x51245a[_0x89ef('0x33')]=_[_0x89ef('0x34')](_0x51245a['model'],_0x51245a[_0x89ef('0x32')]);_0x5b5c6c[_0x89ef('0x35')]=_['intersection'](_0x51245a[_0x89ef('0x2e')],qs[_0x89ef('0x36')](_0x3acacc[_0x89ef('0x32')]['fields']));_0x5b5c6c[_0x89ef('0x35')]=_0x5b5c6c[_0x89ef('0x35')][_0x89ef('0x37')]?_0x5b5c6c[_0x89ef('0x35')]:_0x51245a[_0x89ef('0x2e')];if(_0x3acacc[_0x89ef('0x32')][_0x89ef('0x38')]){_0x5b5c6c[_0x89ef('0x39')]=[{'all':!![]}];}_0x5b5c6c=_[_0x89ef('0x3a')]({},_0x5b5c6c,_0x3acacc[_0x89ef('0x3b')]);return db[_0x89ef('0x2f')][_0x89ef('0x3c')](_0x5b5c6c)[_0x89ef('0x3d')](handleEntityNotFound(_0x599f16,null))[_0x89ef('0x3d')](respondWithResult(_0x599f16,null))[_0x89ef('0x3e')](handleError(_0x599f16,null));};exports[_0x89ef('0x3f')]=function(_0x5ad001,_0x5d0d55){return db[_0x89ef('0x2f')][_0x89ef('0x3f')](_0x5ad001[_0x89ef('0x40')],{})[_0x89ef('0x3d')](respondWithResult(_0x5d0d55,0xc9))[_0x89ef('0x3e')](handleError(_0x5d0d55,null));};exports['update']=function(_0x27cb78,_0x4ce46b){if(_0x27cb78[_0x89ef('0x40')]['id']){delete _0x27cb78[_0x89ef('0x40')]['id'];}return db[_0x89ef('0x2f')][_0x89ef('0x3c')]({'where':{'id':_0x27cb78[_0x89ef('0x2d')]['id']}})[_0x89ef('0x3d')](handleEntityNotFound(_0x4ce46b,null))[_0x89ef('0x3d')](saveUpdates(_0x27cb78[_0x89ef('0x40')],null))['then'](respondWithResult(_0x4ce46b,null))['catch'](handleError(_0x4ce46b,null));};exports[_0x89ef('0x26')]=function(_0x16ea15,_0x3dcdca){return db['ChatProactiveAction'][_0x89ef('0x3c')]({'where':{'id':_0x16ea15[_0x89ef('0x2d')]['id']}})[_0x89ef('0x3d')](handleEntityNotFound(_0x3dcdca,null))[_0x89ef('0x3d')](removeEntity(_0x3dcdca,null))['catch'](handleError(_0x3dcdca,null));};
\ No newline at end of file
index c7b66dd..157efd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x575b=['../../config/environment','./chatProactiveAction.attributes','exports','define','chat_proactive_actions','api','bluebird','request-promise','rimraf'];(function(_0x87ab2b,_0x10c488){var _0x9e2d6d=function(_0x2e6d66){while(--_0x2e6d66){_0x87ab2b['push'](_0x87ab2b['shift']());}};_0x9e2d6d(++_0x10c488);}(_0x575b,0x11c));var _0xb575=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x575b[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xb575('0x0'));var moment=require('moment');var BPromise=require(_0xb575('0x1'));var rp=require(_0xb575('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb575('0x3'));var config=require(_0xb575('0x4'));var attributes=require(_0xb575('0x5'));module[_0xb575('0x6')]=function(_0x3ac6a4,_0x14afbe){return _0x3ac6a4[_0xb575('0x7')]('ChatProactiveAction',attributes,{'tableName':_0xb575('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2981=['util','moment','request-promise','path','rimraf','./chatProactiveAction.attributes','exports','define','chat_proactive_actions','lodash'];(function(_0x3f0674,_0x4e8dce){var _0x216fd0=function(_0x3a8736){while(--_0x3a8736){_0x3f0674['push'](_0x3f0674['shift']());}};_0x216fd0(++_0x4e8dce);}(_0x2981,0x1f3));var _0x1298=function(_0x52c085,_0x104d1c){_0x52c085=_0x52c085-0x0;var _0x589818=_0x2981[_0x52c085];return _0x589818;};'use strict';var _=require(_0x1298('0x0'));var util=require(_0x1298('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x1298('0x2'));var BPromise=require('bluebird');var rp=require(_0x1298('0x3'));var fs=require('fs');var path=require(_0x1298('0x4'));var rimraf=require(_0x1298('0x5'));var config=require('../../config/environment');var attributes=require(_0x1298('0x6'));module[_0x1298('0x7')]=function(_0x36c9a2,_0x5e39e3){return _0x36c9a2[_0x1298('0x8')]('ChatProactiveAction',attributes,{'tableName':_0x1298('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d5d82e..c5fa5a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e1=['rpc','../../config/environment','jayson/promise','client','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x272d90,_0x5e70ff){var _0x2bf4a2=function(_0x544da6){while(--_0x544da6){_0x272d90['push'](_0x272d90['shift']());}};_0x2bf4a2(++_0x5e70ff);}(_0x97e1,0x176));var _0x197e=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0x97e1[_0x46a671];return _0x526d75;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x197e('0x0'));var rs=require(_0x197e('0x1'));var fs=require('fs');var Redis=require(_0x197e('0x2'));var db=require(_0x197e('0x3'))['db'];var utils=require(_0x197e('0x4'));var logger=require(_0x197e('0x5'))(_0x197e('0x6'));var config=require(_0x197e('0x7'));var jayson=require(_0x197e('0x8'));var client=jayson[_0x197e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x28ebe8,_0x4904bb,_0x24d58a){return new BPromise(function(_0x4cf5fb,_0x1cdc3f){return client[_0x197e('0xa')](_0x28ebe8,_0x24d58a)['then'](function(_0x84c22c){logger[_0x197e('0xb')](_0x197e('0xc'),_0x4904bb,_0x197e('0xd'));logger['debug'](_0x197e('0xe'),_0x4904bb,_0x197e('0xd'),JSON[_0x197e('0xf')](_0x84c22c));if(_0x84c22c[_0x197e('0x10')]){if(_0x84c22c[_0x197e('0x10')]['code']===0x1f4){logger[_0x197e('0x10')](_0x197e('0xc'),_0x4904bb,_0x84c22c[_0x197e('0x10')][_0x197e('0x11')]);return _0x1cdc3f(_0x84c22c[_0x197e('0x10')]['message']);}logger[_0x197e('0x10')](_0x197e('0xc'),_0x4904bb,_0x84c22c[_0x197e('0x10')]['message']);return _0x4cf5fb(_0x84c22c[_0x197e('0x10')][_0x197e('0x11')]);}else{logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x4904bb,'request\x20sent');_0x4cf5fb(_0x84c22c[_0x197e('0x12')][_0x197e('0x11')]);}})[_0x197e('0x13')](function(_0x12f8c3){logger[_0x197e('0x10')](_0x197e('0xc'),_0x4904bb,_0x12f8c3);_0x1cdc3f(_0x12f8c3);});});}
\ No newline at end of file
+var _0x5305=['rpc','../../config/environment','jayson/promise','http','request','then','info','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatProactiveAction,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x379141,_0x173592){var _0x3cc38d=function(_0x3f75e2){while(--_0x3f75e2){_0x379141['push'](_0x379141['shift']());}};_0x3cc38d(++_0x173592);}(_0x5305,0x177));var _0x5530=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x5305[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x5530('0x0'));var util=require(_0x5530('0x1'));var moment=require(_0x5530('0x2'));var BPromise=require(_0x5530('0x3'));var rs=require(_0x5530('0x4'));var fs=require('fs');var Redis=require(_0x5530('0x5'));var db=require(_0x5530('0x6'))['db'];var utils=require(_0x5530('0x7'));var logger=require(_0x5530('0x8'))(_0x5530('0x9'));var config=require(_0x5530('0xa'));var jayson=require(_0x5530('0xb'));var client=jayson['client'][_0x5530('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x417924,_0x3f67d7,_0x27dcd0){return new BPromise(function(_0x362880,_0x12e6f1){return client[_0x5530('0xd')](_0x417924,_0x27dcd0)[_0x5530('0xe')](function(_0x33f3e7){logger[_0x5530('0xf')]('ChatProactiveAction,\x20%s,\x20%s',_0x3f67d7,'request\x20sent');logger[_0x5530('0x10')](_0x5530('0x11'),_0x3f67d7,_0x5530('0x12'),JSON[_0x5530('0x13')](_0x33f3e7));if(_0x33f3e7[_0x5530('0x14')]){if(_0x33f3e7[_0x5530('0x14')][_0x5530('0x15')]===0x1f4){logger[_0x5530('0x14')](_0x5530('0x16'),_0x3f67d7,_0x33f3e7[_0x5530('0x14')]['message']);return _0x12e6f1(_0x33f3e7[_0x5530('0x14')][_0x5530('0x17')]);}logger[_0x5530('0x14')](_0x5530('0x16'),_0x3f67d7,_0x33f3e7['error'][_0x5530('0x17')]);return _0x362880(_0x33f3e7[_0x5530('0x14')]['message']);}else{logger[_0x5530('0xf')](_0x5530('0x16'),_0x3f67d7,_0x5530('0x12'));_0x362880(_0x33f3e7['result'][_0x5530('0x17')]);}})['catch'](function(_0x4d341f){logger[_0x5530('0x14')](_0x5530('0x16'),_0x3f67d7,_0x4d341f);_0x12e6f1(_0x4d341f);});});}
\ No newline at end of file
index fea9ba5..f2ff06f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated','post','create','put','update','delete','exports'];(function(_0x401d67,_0xeb1592){var _0x25076b=function(_0x233577){while(--_0x233577){_0x401d67['push'](_0x401d67['shift']());}};_0x25076b(++_0xeb1592);}(_0xeec6,0x1c2));var _0x6eec=function(_0x57da0a,_0x284aed){_0x57da0a=_0x57da0a-0x0;var _0x3145d5=_0xeec6[_0x57da0a];return _0x3145d5;};'use strict';var multer=require(_0x6eec('0x0'));var util=require(_0x6eec('0x1'));var path=require(_0x6eec('0x2'));var timeout=require(_0x6eec('0x3'));var express=require('express');var router=express[_0x6eec('0x4')]();var fs_extra=require(_0x6eec('0x5'));var auth=require(_0x6eec('0x6'));var interaction=require(_0x6eec('0x7'));var config=require(_0x6eec('0x8'));var controller=require(_0x6eec('0x9'));router['get'](_0x6eec('0xa'),auth[_0x6eec('0xb')](),controller['show']);router[_0x6eec('0xc')]('/',auth[_0x6eec('0xb')](),controller[_0x6eec('0xd')]);router[_0x6eec('0xe')]('/:id',auth[_0x6eec('0xb')](),controller[_0x6eec('0xf')]);router[_0x6eec('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x6eec('0x11')]=router;
\ No newline at end of file
+var _0x8958=['show','post','put','update','delete','destroy','exports','util','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id','isAuthenticated'];(function(_0x2366a1,_0x97c82e){var _0x1ec915=function(_0x1b8b46){while(--_0x1b8b46){_0x2366a1['push'](_0x2366a1['shift']());}};_0x1ec915(++_0x97c82e);}(_0x8958,0x93));var _0x8895=function(_0x28c94b,_0x19098d){_0x28c94b=_0x28c94b-0x0;var _0x392a76=_0x8958[_0x28c94b];return _0x392a76;};'use strict';var multer=require('multer');var util=require(_0x8895('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x8895('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x8895('0x2'));var config=require(_0x8895('0x3'));var controller=require(_0x8895('0x4'));router['get'](_0x8895('0x5'),auth[_0x8895('0x6')](),controller[_0x8895('0x7')]);router[_0x8895('0x8')]('/',auth[_0x8895('0x6')](),controller['create']);router[_0x8895('0x9')](_0x8895('0x5'),auth[_0x8895('0x6')](),controller[_0x8895('0xa')]);router[_0x8895('0xb')](_0x8895('0x5'),auth[_0x8895('0x6')](),controller[_0x8895('0xc')]);module[_0x8895('0xd')]=router;
\ No newline at end of file
index a4d591a..18e2269 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa4d=['INTEGER','beepall','roundrobin','sequelize','STRING','name'];(function(_0x3d9f47,_0x6a785b){var _0x25797f=function(_0x29e77d){while(--_0x29e77d){_0x3d9f47['push'](_0x3d9f47['shift']());}};_0x25797f(++_0x6a785b);}(_0xaa4d,0x105));var _0xdaa4=function(_0x97ab47,_0x5cdab2){_0x97ab47=_0x97ab47-0x0;var _0x2d291f=_0xaa4d[_0x97ab47];return _0x2d291f;};'use strict';var Sequelize=require(_0xdaa4('0x0'));module['exports']={'name':{'type':Sequelize[_0xdaa4('0x1')],'unique':_0xdaa4('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xdaa4('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xdaa4('0x4'),_0xdaa4('0x5'))}};
\ No newline at end of file
+var _0xf424=['name','ENUM','beepall','sequelize','exports','STRING'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0xf424,0x135));var _0x4f42=function(_0x230daa,_0x2d4dd0){_0x230daa=_0x230daa-0x0;var _0x210dc5=_0xf424[_0x230daa];return _0x210dc5;};'use strict';var Sequelize=require(_0x4f42('0x0'));module[_0x4f42('0x1')]={'name':{'type':Sequelize[_0x4f42('0x2')],'unique':_0x4f42('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4f42('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4f42('0x4')]('rrmemory',_0x4f42('0x5'),'roundrobin')}};
\ No newline at end of file
index 3a57fa4..8589546 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaf0=['apply','reject','save','update','get','ChatQueues','UserProfileResource','end','sendStatus','name','index','map','ChatQueue','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','fields','order','UserChatQueue','User','findAndCountAll','UserId','agent','chatPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','online','voicePause','flatMap','Agents','each','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','team_has_chat_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','ids','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','userChatQueue:save','isArray','getAgents','eml-format','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','lodash','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','status','json','offset','limit','count','Content-Range'];(function(_0x1a08d5,_0x25a039){var _0x1aabc4=function(_0x3cd7b7){while(--_0x3cd7b7){_0x1a08d5['push'](_0x1a08d5['shift']());}};_0x1aabc4(++_0x25a039);}(_0xeaf0,0xfd));var _0x0eaf=function(_0x6d948e,_0x240e7c){_0x6d948e=_0x6d948e-0x0;var _0x1affc4=_0xeaf0[_0x6d948e];return _0x1affc4;};'use strict';var emlformat=require(_0x0eaf('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x0eaf('0x1'));var rp=require(_0x0eaf('0x2'));var moment=require(_0x0eaf('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0eaf('0x4'));var util=require(_0x0eaf('0x5'));var path=require(_0x0eaf('0x6'));var sox=require('sox');var csv=require(_0x0eaf('0x7'));var ejs=require(_0x0eaf('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0eaf('0x9'));var squel=require(_0x0eaf('0xa'));var crypto=require(_0x0eaf('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0eaf('0x7'));var querystring=require('querystring');var Papa=require(_0x0eaf('0xc'));var Redis=require(_0x0eaf('0xd'));var authService=require(_0x0eaf('0xe'));var qs=require(_0x0eaf('0xf'));var as=require(_0x0eaf('0x10'));var hardwareService=require(_0x0eaf('0x11'));var logger=require(_0x0eaf('0x12'))(_0x0eaf('0x13'));var utils=require(_0x0eaf('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x0eaf('0x15'));var db=require(_0x0eaf('0x16'))['db'];config['redis']=_[_0x0eaf('0x17')](config[_0x0eaf('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x0eaf('0x19'))(new Redis(config['redis']));require(_0x0eaf('0x1a'))[_0x0eaf('0x1b')](socket);var jayson=require(_0x0eaf('0x1c'));var client=jayson[_0x0eaf('0x1d')][_0x0eaf('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x512537,_0xc41490,_0x485d99,_0x362fa7){return new BPromise(function(_0x2624d7,_0x35814c){var _0x3a8967=_0x362fa7||client;return _0x3a8967[_0x0eaf('0x1f')](_0x512537,_0x485d99)[_0x0eaf('0x20')](function(_0x1837ae){logger[_0x0eaf('0x21')](_0x0eaf('0x22'),_0xc41490,_0x0eaf('0x23'));logger['debug'](_0x0eaf('0x24'),_0xc41490,_0x0eaf('0x23'),JSON[_0x0eaf('0x25')](_0x1837ae));if(_0x1837ae[_0x0eaf('0x26')]){if(_0x1837ae[_0x0eaf('0x26')]['code']===0x1f4){logger[_0x0eaf('0x26')](_0x0eaf('0x22'),_0xc41490,_0x1837ae[_0x0eaf('0x26')][_0x0eaf('0x27')]);return _0x35814c(_0x1837ae[_0x0eaf('0x26')][_0x0eaf('0x27')]);}logger[_0x0eaf('0x26')](_0x0eaf('0x22'),_0xc41490,_0x1837ae[_0x0eaf('0x26')][_0x0eaf('0x27')]);return _0x2624d7(_0x1837ae[_0x0eaf('0x26')][_0x0eaf('0x27')]);}else{logger[_0x0eaf('0x21')](_0x0eaf('0x22'),_0xc41490,'request\x20sent');_0x2624d7(_0x1837ae['result'][_0x0eaf('0x27')]);}})[_0x0eaf('0x28')](function(_0x34e34a){logger['error']('ChatQueue,\x20%s,\x20%s',_0xc41490,_0x34e34a);_0x35814c(_0x34e34a);});});}function respondWithStatusCode(_0x59369d,_0x1a5728){_0x1a5728=_0x1a5728||0xcc;return function(_0x3ccab9){if(_0x3ccab9){return _0x59369d['sendStatus'](_0x1a5728);}return _0x59369d[_0x0eaf('0x29')](_0x1a5728)['end']();};}function respondWithResult(_0x4089bb,_0x5df3f2){_0x5df3f2=_0x5df3f2||0xc8;return function(_0x5e8789){if(_0x5e8789){return _0x4089bb['status'](_0x5df3f2)[_0x0eaf('0x2a')](_0x5e8789);}};}function respondWithFilteredResult(_0x336910,_0x4feee3){return function(_0x36a6aa){if(_0x36a6aa){var _0xec5a20=typeof _0x4feee3[_0x0eaf('0x2b')]==='undefined'&&typeof _0x4feee3[_0x0eaf('0x2c')]==='undefined';var _0x58d938=_0x36a6aa['count'];var _0x4947e4=_0xec5a20?0x0:_0x4feee3[_0x0eaf('0x2b')];var _0x3223d7=_0xec5a20?_0x36a6aa[_0x0eaf('0x2d')]:_0x4feee3[_0x0eaf('0x2b')]+_0x4feee3[_0x0eaf('0x2c')];var _0x10cf3c;if(_0x3223d7>=_0x58d938){_0x3223d7=_0x58d938;_0x10cf3c=0xc8;}else{_0x10cf3c=0xce;}_0x336910[_0x0eaf('0x29')](_0x10cf3c);return _0x336910['set'](_0x0eaf('0x2e'),_0x4947e4+'-'+_0x3223d7+'/'+_0x58d938)[_0x0eaf('0x2a')](_0x36a6aa);}return null;};}function patchUpdates(_0x3e10e0){return function(_0x467bbf){try{jsonpatch[_0x0eaf('0x2f')](_0x467bbf,_0x3e10e0,!![]);}catch(_0x594dc4){return BPromise[_0x0eaf('0x30')](_0x594dc4);}return _0x467bbf[_0x0eaf('0x31')]();};}function saveUpdates(_0x8008fb,_0x284084){return function(_0x32b4bb){if(_0x32b4bb){return _0x32b4bb[_0x0eaf('0x32')](_0x8008fb)[_0x0eaf('0x20')](function(_0x5d58ed){return _0x5d58ed;});}return null;};}function removeEntity(_0x57fd85,_0x94d5f6){return function(_0x56a0e9){if(_0x56a0e9){return _0x56a0e9['destroy']()[_0x0eaf('0x20')](function(){var _0xd96225=_0x56a0e9[_0x0eaf('0x33')]({'plain':!![]});var _0x2c9380=_0x0eaf('0x34');return db[_0x0eaf('0x35')]['destroy']({'where':{'type':_0x2c9380,'resourceId':_0xd96225['id']}})[_0x0eaf('0x20')](function(){return _0x56a0e9;});})['then'](function(){_0x57fd85[_0x0eaf('0x29')](0xcc)[_0x0eaf('0x36')]();});}};}function handleEntityNotFound(_0x30638b,_0x1ec81f){return function(_0x308c0a){if(!_0x308c0a){_0x30638b[_0x0eaf('0x37')](0x194);}return _0x308c0a;};}function handleError(_0x20f8fc,_0x245ee5){_0x245ee5=_0x245ee5||0x1f4;return function(_0x29306a){logger[_0x0eaf('0x26')](_0x29306a['stack']);if(_0x29306a[_0x0eaf('0x38')]){delete _0x29306a[_0x0eaf('0x38')];}_0x20f8fc[_0x0eaf('0x29')](_0x245ee5)['send'](_0x29306a);};}exports[_0x0eaf('0x39')]=function(_0x4d4a6c,_0x298056){var _0x3a72c4={},_0x5af79e={},_0x46364a={'count':0x0,'rows':[]};var _0x26da9a=_[_0x0eaf('0x3a')](db[_0x0eaf('0x3b')][_0x0eaf('0x3c')],function(_0x1b4c3e){return{'name':_0x1b4c3e[_0x0eaf('0x3d')],'type':_0x1b4c3e[_0x0eaf('0x3e')]['key']};});_0x5af79e['model']=_[_0x0eaf('0x3a')](_0x26da9a,_0x0eaf('0x38'));_0x5af79e[_0x0eaf('0x3f')]=_['keys'](_0x4d4a6c[_0x0eaf('0x3f')]);_0x5af79e[_0x0eaf('0x40')]=_[_0x0eaf('0x41')](_0x5af79e[_0x0eaf('0x42')],_0x5af79e[_0x0eaf('0x3f')]);_0x3a72c4[_0x0eaf('0x43')]=_[_0x0eaf('0x41')](_0x5af79e[_0x0eaf('0x42')],qs['fields'](_0x4d4a6c[_0x0eaf('0x3f')]['fields']));_0x3a72c4[_0x0eaf('0x43')]=_0x3a72c4[_0x0eaf('0x43')]['length']?_0x3a72c4[_0x0eaf('0x43')]:_0x5af79e[_0x0eaf('0x42')];if(!_0x4d4a6c[_0x0eaf('0x3f')][_0x0eaf('0x44')](_0x0eaf('0x45'))){_0x3a72c4['limit']=qs['limit'](_0x4d4a6c[_0x0eaf('0x3f')][_0x0eaf('0x2c')]);_0x3a72c4[_0x0eaf('0x2b')]=qs[_0x0eaf('0x2b')](_0x4d4a6c[_0x0eaf('0x3f')]['offset']);}_0x3a72c4['order']=qs[_0x0eaf('0x46')](_0x4d4a6c[_0x0eaf('0x3f')][_0x0eaf('0x46')]);_0x3a72c4[_0x0eaf('0x47')]=qs['filters'](_[_0x0eaf('0x48')](_0x4d4a6c[_0x0eaf('0x3f')],_0x5af79e[_0x0eaf('0x40')]),_0x26da9a);if(_0x4d4a6c[_0x0eaf('0x3f')][_0x0eaf('0x49')]){_0x3a72c4['where']=_[_0x0eaf('0x4a')](_0x3a72c4[_0x0eaf('0x47')],{'$or':_['map'](_0x26da9a,function(_0x5ae95f){if(_0x5ae95f['type']!=='VIRTUAL'){var _0x53639b={};_0x53639b[_0x5ae95f[_0x0eaf('0x38')]]={'$like':'%'+_0x4d4a6c[_0x0eaf('0x3f')]['filter']+'%'};return _0x53639b;}})});}_0x3a72c4=_[_0x0eaf('0x4a')]({},_0x3a72c4,_0x4d4a6c[_0x0eaf('0x4b')]);var _0x4873da={'where':_0x3a72c4['where']};return db[_0x0eaf('0x3b')][_0x0eaf('0x2d')](_0x4873da)['then'](function(_0x2e2871){_0x46364a['count']=_0x2e2871;if(_0x4d4a6c[_0x0eaf('0x3f')][_0x0eaf('0x4c')]){_0x3a72c4[_0x0eaf('0x4d')]=[{'all':!![]}];}return db['ChatQueue'][_0x0eaf('0x4e')](_0x3a72c4);})['then'](function(_0x17eb4d){_0x46364a['rows']=_0x17eb4d;return _0x46364a;})[_0x0eaf('0x20')](respondWithFilteredResult(_0x298056,_0x3a72c4))[_0x0eaf('0x28')](handleError(_0x298056,null));};exports[_0x0eaf('0x4f')]=function(_0x35c45f,_0x26e1b0){var _0xac32f0={'raw':!![],'where':{'id':_0x35c45f[_0x0eaf('0x50')]['id']}},_0x4fd72a={};_0x4fd72a['model']=_[_0x0eaf('0x51')](db[_0x0eaf('0x3b')][_0x0eaf('0x3c')]);_0x4fd72a[_0x0eaf('0x3f')]=_[_0x0eaf('0x51')](_0x35c45f[_0x0eaf('0x3f')]);_0x4fd72a[_0x0eaf('0x40')]=_[_0x0eaf('0x41')](_0x4fd72a['model'],_0x4fd72a[_0x0eaf('0x3f')]);_0xac32f0[_0x0eaf('0x43')]=_[_0x0eaf('0x41')](_0x4fd72a[_0x0eaf('0x42')],qs['fields'](_0x35c45f[_0x0eaf('0x3f')]['fields']));_0xac32f0[_0x0eaf('0x43')]=_0xac32f0[_0x0eaf('0x43')][_0x0eaf('0x52')]?_0xac32f0[_0x0eaf('0x43')]:_0x4fd72a['model'];if(_0x35c45f[_0x0eaf('0x3f')][_0x0eaf('0x4c')]){_0xac32f0[_0x0eaf('0x4d')]=[{'all':!![]}];}_0xac32f0=_[_0x0eaf('0x4a')]({},_0xac32f0,_0x35c45f[_0x0eaf('0x4b')]);return db[_0x0eaf('0x3b')][_0x0eaf('0x53')](_0xac32f0)[_0x0eaf('0x20')](handleEntityNotFound(_0x26e1b0,null))[_0x0eaf('0x20')](respondWithResult(_0x26e1b0,null))[_0x0eaf('0x28')](handleError(_0x26e1b0,null));};exports[_0x0eaf('0x54')]=function(_0x4f23b7,_0x42ba8d){return db[_0x0eaf('0x3b')][_0x0eaf('0x54')](_0x4f23b7[_0x0eaf('0x55')],{})[_0x0eaf('0x20')](function(_0x502045){var _0x4d7844=_0x4f23b7[_0x0eaf('0x56')][_0x0eaf('0x33')]({'plain':!![]});if(!_0x4d7844)throw new Error(_0x0eaf('0x57'));if(_0x4d7844[_0x0eaf('0x58')]===_0x0eaf('0x56')){var _0x211d10=_0x502045[_0x0eaf('0x33')]({'plain':!![]});var _0x35fa53=_0x0eaf('0x34');return db[_0x0eaf('0x59')]['find']({'where':{'name':_0x35fa53,'userProfileId':_0x4d7844[_0x0eaf('0x5a')]},'raw':!![]})['then'](function(_0x2e6b4f){if(_0x2e6b4f&&_0x2e6b4f['autoAssociation']===0x0){return db[_0x0eaf('0x35')][_0x0eaf('0x54')]({'name':_0x211d10[_0x0eaf('0x38')],'resourceId':_0x211d10['id'],'type':_0x2e6b4f[_0x0eaf('0x38')],'sectionId':_0x2e6b4f['id']},{})[_0x0eaf('0x20')](function(){return _0x502045;});}else{return _0x502045;}})['catch'](function(_0x3ced82){logger[_0x0eaf('0x26')](_0x0eaf('0x5b'),_0x3ced82);throw _0x3ced82;});}return _0x502045;})['then'](respondWithResult(_0x42ba8d,0xc9))['catch'](handleError(_0x42ba8d,null));};exports['update']=function(_0x23ba26,_0x17d237){if(_0x23ba26[_0x0eaf('0x55')]['id']){delete _0x23ba26['body']['id'];}return db[_0x0eaf('0x3b')][_0x0eaf('0x53')]({'where':{'id':_0x23ba26[_0x0eaf('0x50')]['id']}})[_0x0eaf('0x20')](handleEntityNotFound(_0x17d237,null))[_0x0eaf('0x20')](saveUpdates(_0x23ba26['body'],null))[_0x0eaf('0x20')](respondWithResult(_0x17d237,null))[_0x0eaf('0x28')](handleError(_0x17d237,null));};exports[_0x0eaf('0x5c')]=function(_0x8704e2,_0x227911){return db[_0x0eaf('0x3b')]['find']({'where':{'id':_0x8704e2['params']['id']}})['then'](handleEntityNotFound(_0x227911,null))['then'](removeEntity(_0x227911,null))[_0x0eaf('0x28')](handleError(_0x227911,null));};exports[_0x0eaf('0x5d')]=function(_0x395163,_0x371ee7){return db[_0x0eaf('0x3b')][_0x0eaf('0x5d')]()[_0x0eaf('0x20')](respondWithResult(_0x371ee7,null))[_0x0eaf('0x28')](handleError(_0x371ee7,null));};exports[_0x0eaf('0x5e')]=function(_0x4b25d7,_0x36bae8,_0x4d70e5){var _0x4a9f4d={'raw':!![],'where':{}},_0x3f8937={},_0x406d42;return db[_0x0eaf('0x3b')][_0x0eaf('0x5f')]({'where':{'id':_0x4b25d7[_0x0eaf('0x50')]['id']}})[_0x0eaf('0x20')](handleEntityNotFound(_0x36bae8,null))['then'](function(_0x4f337e){if(_0x4f337e){_0x406d42=_0x4f337e[_0x0eaf('0x33')]({'plain':!![]});_0x3f8937[_0x0eaf('0x42')]=_['keys'](db['UserChatQueue'][_0x0eaf('0x3c')]);_0x3f8937[_0x0eaf('0x3f')]=_[_0x0eaf('0x51')](_0x4b25d7['query']);_0x3f8937[_0x0eaf('0x40')]=_[_0x0eaf('0x41')](_0x3f8937['model'],_0x3f8937[_0x0eaf('0x3f')]);_0x4a9f4d[_0x0eaf('0x43')]=_[_0x0eaf('0x41')](_0x3f8937['model'],qs[_0x0eaf('0x60')](_0x4b25d7['query']['fields']));_0x4a9f4d[_0x0eaf('0x43')]=_0x4a9f4d[_0x0eaf('0x43')]['length']?_0x4a9f4d['attributes']:_0x3f8937[_0x0eaf('0x42')];if(!_0x4b25d7[_0x0eaf('0x3f')]['hasOwnProperty']('nolimit')){_0x4a9f4d[_0x0eaf('0x2c')]=qs['limit'](_0x4b25d7[_0x0eaf('0x3f')][_0x0eaf('0x2c')]);_0x4a9f4d['offset']=qs[_0x0eaf('0x2b')](_0x4b25d7[_0x0eaf('0x3f')][_0x0eaf('0x2b')]);}_0x4a9f4d[_0x0eaf('0x61')]=qs[_0x0eaf('0x46')](_0x4b25d7['query'][_0x0eaf('0x46')]);_0x4a9f4d['where']=qs[_0x0eaf('0x40')](_['pick'](_0x4b25d7[_0x0eaf('0x3f')],_0x3f8937[_0x0eaf('0x40')]));_0x4a9f4d[_0x0eaf('0x47')]['ChatQueueId']=_0x4f337e['id'];if(_0x4b25d7[_0x0eaf('0x3f')][_0x0eaf('0x49')]){_0x4a9f4d[_0x0eaf('0x47')]=_['merge'](_0x4a9f4d['where'],{'$or':_['map'](_0x4a9f4d[_0x0eaf('0x43')],function(_0x166584){var _0x337b23={};_0x337b23[_0x166584]={'$like':'%'+_0x4b25d7[_0x0eaf('0x3f')][_0x0eaf('0x49')]+'%'};return _0x337b23;})});}_0x4a9f4d=_[_0x0eaf('0x4a')]({},_0x4a9f4d,_0x4b25d7[_0x0eaf('0x4b')]);return db[_0x0eaf('0x62')][_0x0eaf('0x4e')](_0x4a9f4d);}})[_0x0eaf('0x20')](function(_0x352a4c){if(_0x352a4c){return db[_0x0eaf('0x63')][_0x0eaf('0x64')]({'where':{'id':_['map'](_0x352a4c,_0x0eaf('0x65')),'role':_0x0eaf('0x66')},'attributes':['id',_0x0eaf('0x38'),_0x0eaf('0x67'),_0x0eaf('0x68'),_0x0eaf('0x69')]});}})['then'](function(_0x5e3e65){if(_0x5e3e65){return{'count':_0x5e3e65[_0x0eaf('0x2d')],'rows':_[_0x0eaf('0x3a')](_0x5e3e65[_0x0eaf('0x6a')],function(_0x13023f){return{'membername':_0x13023f[_0x0eaf('0x38')],'UserId':_0x13023f['id'],'queue_name':_0x406d42[_0x0eaf('0x38')],'ChatQueueId':_0x406d42['id'],'interface':util[_0x0eaf('0x6b')](_0x0eaf('0x6c'),_0x0eaf('0x6d'),_0x13023f['name']),'penalty':0x0,'paused':_0x13023f[_0x0eaf('0x67')],'createdAt':_0x13023f[_0x0eaf('0x69')],'updatedAt':_0x13023f['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x0eaf('0x20')](respondWithFilteredResult(_0x36bae8,_0x4a9f4d))[_0x0eaf('0x28')](handleError(_0x36bae8,null));};exports[_0x0eaf('0x6e')]=function(_0x325773,_0x5d0874,_0xf49c22){var _0x1abc7d={};var _0x6515a5={};var _0xd80762;var _0x38a115;return db['ChatQueue'][_0x0eaf('0x5f')]({'where':{'id':_0x325773[_0x0eaf('0x50')]['id']}})['then'](handleEntityNotFound(_0x5d0874,null))[_0x0eaf('0x20')](function(_0x19caa7){if(_0x19caa7){_0xd80762=_0x19caa7;_0x6515a5[_0x0eaf('0x42')]=_[_0x0eaf('0x51')](db[_0x0eaf('0x6f')][_0x0eaf('0x3c')]);_0x6515a5[_0x0eaf('0x3f')]=_[_0x0eaf('0x51')](_0x325773['query']);_0x6515a5['filters']=_[_0x0eaf('0x41')](_0x6515a5[_0x0eaf('0x42')],_0x6515a5[_0x0eaf('0x3f')]);_0x1abc7d[_0x0eaf('0x43')]=_['intersection'](_0x6515a5[_0x0eaf('0x42')],qs[_0x0eaf('0x60')](_0x325773[_0x0eaf('0x3f')][_0x0eaf('0x60')]));_0x1abc7d[_0x0eaf('0x43')]=_0x1abc7d[_0x0eaf('0x43')][_0x0eaf('0x52')]?_0x1abc7d[_0x0eaf('0x43')]:_0x6515a5[_0x0eaf('0x42')];_0x1abc7d['order']=qs[_0x0eaf('0x46')](_0x325773[_0x0eaf('0x3f')]['sort']);_0x1abc7d[_0x0eaf('0x47')]=qs[_0x0eaf('0x40')](_['pick'](_0x325773[_0x0eaf('0x3f')],_0x6515a5[_0x0eaf('0x40')]));if(_0x325773['query']['filter']){_0x1abc7d[_0x0eaf('0x47')]=_[_0x0eaf('0x4a')](_0x1abc7d[_0x0eaf('0x47')],{'$or':_[_0x0eaf('0x3a')](_0x1abc7d[_0x0eaf('0x43')],function(_0x41e365){var _0x199752={};_0x199752[_0x41e365]={'$like':'%'+_0x325773[_0x0eaf('0x3f')][_0x0eaf('0x49')]+'%'};return _0x199752;})});}_0x1abc7d=_['merge']({},_0x1abc7d,_0x325773[_0x0eaf('0x4b')]);return _0xd80762[_0x0eaf('0x6e')](_0x1abc7d);}})[_0x0eaf('0x20')](function(_0xe2cdc0){if(_0xe2cdc0){_0x38a115=_0xe2cdc0[_0x0eaf('0x52')];if(!_0x325773['query'][_0x0eaf('0x44')](_0x0eaf('0x45'))){_0x1abc7d['limit']=qs[_0x0eaf('0x2c')](_0x325773[_0x0eaf('0x3f')][_0x0eaf('0x2c')]);_0x1abc7d[_0x0eaf('0x2b')]=qs['offset'](_0x325773[_0x0eaf('0x3f')]['offset']);}return _0xd80762[_0x0eaf('0x6e')](_0x1abc7d);}})['then'](function(_0x3e802e){if(_0x3e802e){return _0x3e802e?{'count':_0x38a115,'rows':_0x3e802e}:null;}})[_0x0eaf('0x20')](respondWithResult(_0x5d0874,null))[_0x0eaf('0x28')](handleError(_0x5d0874,null));};exports['addTeams']=function(_0x58613b,_0x8e7a0c,_0x2a4758){var _0x3b33aa=_0x58613b[_0x0eaf('0x55')]['ids'];return db[_0x0eaf('0x6f')][_0x0eaf('0x4e')]({'where':{'id':_0x3b33aa},'attributes':['id'],'include':[{'model':db[_0x0eaf('0x63')],'as':'Agents','attributes':['id','name',_0x0eaf('0x70'),_0x0eaf('0x71'),'interface'],'raw':!![]}]})['then'](function(_0x1ce618){if(_0x1ce618){var _0xdd1551=_[_0x0eaf('0x72')](_0x1ce618,function(_0x386432){var _0x245644=_0x386432[_0x0eaf('0x33')]({'plain':!![]});return _0x245644[_0x0eaf('0x73')];});return db[_0x0eaf('0x3b')][_0x0eaf('0x53')]({'where':{'id':_0x58613b[_0x0eaf('0x50')]['id']}})[_0x0eaf('0x20')](function(_0x1278d6){return db['sequelize']['transaction'](function(_0x458644){return _0x1278d6['addTeams'](_0x3b33aa,{'transaction':_0x458644})[_0x0eaf('0x20')](function(){return BPromise[_0x0eaf('0x74')](_0xdd1551,function(_0x4d8670){return db[_0x0eaf('0x62')][_0x0eaf('0x75')]({'where':{'UserId':_0x4d8670['id'],'ChatQueueId':_0x58613b[_0x0eaf('0x50')]['id']},'transaction':_0x458644});});})[_0x0eaf('0x20')](function(){_0xdd1551[_0x0eaf('0x76')](function(_0x3d3d79){socket[_0x0eaf('0x77')]('userChatQueue:save',{'UserId':_0x3d3d79['id'],'ChatQueueId':_0x1278d6['id']});});});});});}})[_0x0eaf('0x20')](respondWithStatusCode(_0x8e7a0c,null))['catch'](handleError(_0x8e7a0c,null));};exports[_0x0eaf('0x78')]=function(_0x5e0069,_0x128ba8,_0x23ee67){return db[_0x0eaf('0x6f')][_0x0eaf('0x4e')]({'where':{'id':_0x5e0069[_0x0eaf('0x3f')]['ids']},'attributes':['id'],'include':[{'model':db[_0x0eaf('0x63')],'as':_0x0eaf('0x73'),'attributes':['id'],'raw':!![]}]})[_0x0eaf('0x20')](handleEntityNotFound(_0x128ba8,null))[_0x0eaf('0x20')](function(_0x9d38e0){var _0x42a0a9=_[_0x0eaf('0x3a')](_0x9d38e0,'id');var _0x470d5a=[];var _0xd53143=[];var _0x43dc47=squel[_0x0eaf('0x79')]();_0x43dc47[_0x0eaf('0x7a')](_0x0eaf('0x7b'))['from'](_0x0eaf('0x7c'),'tq')['join'](_0x0eaf('0x7d'),'ut',_0x0eaf('0x7e'))['where'](_0x0eaf('0x7f'),_0x5e0069[_0x0eaf('0x50')]['id']);for(var _0x5c7800=0x0;_0x5c7800<_0x9d38e0[_0x0eaf('0x52')];_0x5c7800+=0x1){let _0x56147f=_0x9d38e0[_0x5c7800];for(var _0x190f71=0x0;_0x190f71<_0x56147f['Agents'][_0x0eaf('0x52')];_0x190f71+=0x1){let _0x30b1d7=_0x56147f[_0x0eaf('0x73')][_0x190f71];var _0x50dbfd=_0x43dc47[_0x0eaf('0x80')]();_0x50dbfd[_0x0eaf('0x47')](_0x0eaf('0x81'),_0x30b1d7['id']);_0xd53143[_0x0eaf('0x82')](db[_0x0eaf('0x83')][_0x0eaf('0x3f')](_0x50dbfd[_0x0eaf('0x84')](),{'type':db[_0x0eaf('0x83')][_0x0eaf('0x85')][_0x0eaf('0x86')]})[_0x0eaf('0x20')](function(_0x266f8c){if(_0x266f8c[_0x0eaf('0x52')]===0x1){return _0x30b1d7['id'];}else{var _0x5d68b4=_[_0x0eaf('0x87')](_[_0x0eaf('0x3a')](_0x266f8c,_0x0eaf('0x88')),function(_0x166f00){return _[_0x0eaf('0x89')](_0x42a0a9,_0x166f00);});if(_0x5d68b4){return _0x30b1d7['id'];}}}));}}return BPromise['all'](_0xd53143)[_0x0eaf('0x20')](function(_0x4624be){_0x470d5a=_(_0x470d5a)[_0x0eaf('0x8a')](_0x4624be)[_0x0eaf('0x8b')]()['value']();return db[_0x0eaf('0x3b')][_0x0eaf('0x53')]({'where':{'id':_0x5e0069['params']['id']}})[_0x0eaf('0x20')](function(_0x5f544d){return db['sequelize']['transaction'](function(_0x4f3d07){return _0x5f544d[_0x0eaf('0x78')](_0x5e0069['query'][_0x0eaf('0x8c')],{'transaction':_0x4f3d07})[_0x0eaf('0x20')](function(){if(!_[_0x0eaf('0x8d')](_0x470d5a)){return _0x5f544d[_0x0eaf('0x8e')](_0x470d5a,{'transaction':_0x4f3d07});}})['then'](function(){_0x470d5a[_0x0eaf('0x76')](function(_0x55a8ce){socket[_0x0eaf('0x77')](_0x0eaf('0x8f'),{'UserId':_0x55a8ce,'ChatQueueId':_0x5f544d['id']});});});});});});})[_0x0eaf('0x20')](respondWithStatusCode(_0x128ba8,null))[_0x0eaf('0x28')](handleError(_0x128ba8,null));};exports[_0x0eaf('0x90')]=function(_0x1be989,_0x3d3929,_0x27f96b){return db[_0x0eaf('0x3b')][_0x0eaf('0x53')]({'where':{'id':_0x1be989[_0x0eaf('0x50')]['id']}})[_0x0eaf('0x20')](handleEntityNotFound(_0x3d3929,null))[_0x0eaf('0x20')](function(_0x511cfe){if(_0x511cfe){return _0x511cfe[_0x0eaf('0x90')](_0x1be989['body'][_0x0eaf('0x8c')],_[_0x0eaf('0x91')](_0x1be989[_0x0eaf('0x55')],[_0x0eaf('0x8c'),'id'])||{})[_0x0eaf('0x92')](function(_0x241fd5){for(var _0x28c212=0x0;_0x28c212<_0x1be989[_0x0eaf('0x55')]['ids'][_0x0eaf('0x52')];_0x28c212+=0x1){socket[_0x0eaf('0x77')](_0x0eaf('0x93'),{'UserId':Number(_0x1be989[_0x0eaf('0x55')][_0x0eaf('0x8c')][_0x28c212]),'ChatQueueId':Number(_0x1be989[_0x0eaf('0x50')]['id'])});}return _0x241fd5;});}})[_0x0eaf('0x20')](respondWithResult(_0x3d3929,null))[_0x0eaf('0x28')](handleError(_0x3d3929,null));};exports[_0x0eaf('0x8e')]=function(_0x21ecd9,_0x49c2c8,_0x52f588){return db[_0x0eaf('0x3b')][_0x0eaf('0x53')]({'where':{'id':_0x21ecd9[_0x0eaf('0x50')]['id']}})['then'](handleEntityNotFound(_0x49c2c8,null))[_0x0eaf('0x20')](function(_0x4b49fe){if(_0x4b49fe){return _0x4b49fe[_0x0eaf('0x8e')](_0x21ecd9['query'][_0x0eaf('0x8c')])[_0x0eaf('0x20')](function(){if(_[_0x0eaf('0x94')](_0x21ecd9['query'][_0x0eaf('0x8c')])){for(var _0x4f8a6a=0x0;_0x4f8a6a<_0x21ecd9[_0x0eaf('0x3f')]['ids'][_0x0eaf('0x52')];_0x4f8a6a+=0x1){socket['emit'](_0x0eaf('0x8f'),{'UserId':Number(_0x21ecd9[_0x0eaf('0x3f')][_0x0eaf('0x8c')][_0x4f8a6a]),'ChatQueueId':Number(_0x21ecd9[_0x0eaf('0x50')]['id'])});}}else{socket[_0x0eaf('0x77')](_0x0eaf('0x8f'),{'UserId':Number(_0x21ecd9[_0x0eaf('0x3f')][_0x0eaf('0x8c')]),'ChatQueueId':Number(_0x21ecd9[_0x0eaf('0x50')]['id'])});}});}})[_0x0eaf('0x20')](respondWithStatusCode(_0x49c2c8,null))[_0x0eaf('0x28')](handleError(_0x49c2c8,null));};exports[_0x0eaf('0x95')]=function(_0x4be5fd,_0x440b3d,_0x14ddab){var _0xce9a56={};var _0x4369ce={};var _0x2c41f9;var _0x4d6bf6;return db['ChatQueue'][_0x0eaf('0x5f')]({'where':{'id':_0x4be5fd[_0x0eaf('0x50')]['id']}})[_0x0eaf('0x20')](handleEntityNotFound(_0x440b3d,null))[_0x0eaf('0x20')](function(_0x32790b){if(_0x32790b){_0x2c41f9=_0x32790b;_0x4369ce[_0x0eaf('0x42')]=_[_0x0eaf('0x51')](db[_0x0eaf('0x63')]['rawAttributes']);_0x4369ce[_0x0eaf('0x3f')]=_['keys'](_0x4be5fd[_0x0eaf('0x3f')]);_0x4369ce[_0x0eaf('0x40')]=_[_0x0eaf('0x41')](_0x4369ce[_0x0eaf('0x42')],_0x4369ce['query']);_0xce9a56[_0x0eaf('0x43')]=_['intersection'](_0x4369ce[_0x0eaf('0x42')],qs[_0x0eaf('0x60')](_0x4be5fd[_0x0eaf('0x3f')][_0x0eaf('0x60')]));_0xce9a56[_0x0eaf('0x43')]=_0xce9a56[_0x0eaf('0x43')][_0x0eaf('0x52')]?_0xce9a56[_0x0eaf('0x43')]:_0x4369ce[_0x0eaf('0x42')];_0xce9a56[_0x0eaf('0x61')]=qs['sort'](_0x4be5fd['query'][_0x0eaf('0x46')]);_0xce9a56[_0x0eaf('0x47')]=qs[_0x0eaf('0x40')](_[_0x0eaf('0x48')](_0x4be5fd[_0x0eaf('0x3f')],_0x4369ce[_0x0eaf('0x40')]));if(_0x4be5fd[_0x0eaf('0x3f')][_0x0eaf('0x49')]){_0xce9a56[_0x0eaf('0x47')]=_[_0x0eaf('0x4a')](_0xce9a56['where'],{'$or':_[_0x0eaf('0x3a')](_0xce9a56[_0x0eaf('0x43')],function(_0x3567d5){var _0x59c214={};_0x59c214[_0x3567d5]={'$like':'%'+_0x4be5fd[_0x0eaf('0x3f')][_0x0eaf('0x49')]+'%'};return _0x59c214;})});}_0xce9a56=_['merge']({},_0xce9a56,_0x4be5fd[_0x0eaf('0x4b')]);return _0x2c41f9['getAgents'](_0xce9a56);}})[_0x0eaf('0x20')](function(_0x1f6d25){if(_0x1f6d25){_0x4d6bf6=_0x1f6d25[_0x0eaf('0x52')];if(!_0x4be5fd[_0x0eaf('0x3f')][_0x0eaf('0x44')](_0x0eaf('0x45'))){_0xce9a56[_0x0eaf('0x2c')]=qs[_0x0eaf('0x2c')](_0x4be5fd[_0x0eaf('0x3f')][_0x0eaf('0x2c')]);_0xce9a56[_0x0eaf('0x2b')]=qs[_0x0eaf('0x2b')](_0x4be5fd[_0x0eaf('0x3f')][_0x0eaf('0x2b')]);}return _0x2c41f9['getAgents'](_0xce9a56);}})[_0x0eaf('0x20')](function(_0x4a4a96){if(_0x4a4a96){return _0x4a4a96?{'count':_0x4d6bf6,'rows':_0x4a4a96}:null;}})[_0x0eaf('0x20')](respondWithResult(_0x440b3d,null))[_0x0eaf('0x28')](handleError(_0x440b3d,null));};
\ No newline at end of file
+var _0x4247=['ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','QueryTypes','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','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/environment','redis','localhost','socket.io-emitter','./chatQueue.socket','register','jayson/promise','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','status','end','count','offset','limit','set','Content-Range','apply','reject','update','destroy','get','ChatQueues','sendStatus','stack','name','send','index','ChatQueue','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','include','findAll','catch','show','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','rawAttributes','ChatQueueId','UserId','chatPause','updatedAt','createdAt','format','%s/%s','getTeams','Team','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','addTeams','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','field','from','join','user_has_teams'];(function(_0x5dacd0,_0x51985a){var _0x31a410=function(_0x4a4e50){while(--_0x4a4e50){_0x5dacd0['push'](_0x5dacd0['shift']());}};_0x31a410(++_0x51985a);}(_0x4247,0x135));var _0x7424=function(_0x4c2e56,_0x579342){_0x4c2e56=_0x4c2e56-0x0;var _0x278c8f=_0x4247[_0x4c2e56];return _0x278c8f;};'use strict';var emlformat=require(_0x7424('0x0'));var rimraf=require(_0x7424('0x1'));var zipdir=require(_0x7424('0x2'));var jsonpatch=require(_0x7424('0x3'));var rp=require('request-promise');var moment=require(_0x7424('0x4'));var BPromise=require(_0x7424('0x5'));var Mustache=require(_0x7424('0x6'));var util=require(_0x7424('0x7'));var path=require(_0x7424('0x8'));var sox=require(_0x7424('0x9'));var csv=require(_0x7424('0xa'));var ejs=require(_0x7424('0xb'));var fs=require('fs');var fs_extra=require(_0x7424('0xc'));var _=require(_0x7424('0xd'));var squel=require(_0x7424('0xe'));var crypto=require('crypto');var jsforce=require(_0x7424('0xf'));var deskjs=require(_0x7424('0x10'));var toCsv=require(_0x7424('0xa'));var querystring=require(_0x7424('0x11'));var Papa=require(_0x7424('0x12'));var Redis=require(_0x7424('0x13'));var authService=require(_0x7424('0x14'));var qs=require(_0x7424('0x15'));var as=require(_0x7424('0x16'));var hardwareService=require(_0x7424('0x17'));var logger=require(_0x7424('0x18'))(_0x7424('0x19'));var utils=require('../../config/utils');var config=require(_0x7424('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0x7424('0x1b')],{'host':_0x7424('0x1c'),'port':0x18eb});var socket=require(_0x7424('0x1d'))(new Redis(config['redis']));require(_0x7424('0x1e'))[_0x7424('0x1f')](socket);var jayson=require(_0x7424('0x20'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x15d078,_0x266369,_0x6e2d22,_0x409495){return new BPromise(function(_0x560aa0,_0x3d17cb){var _0x463f49=_0x409495||client;return _0x463f49[_0x7424('0x21')](_0x15d078,_0x6e2d22)[_0x7424('0x22')](function(_0xe6e637){logger[_0x7424('0x23')](_0x7424('0x24'),_0x266369,_0x7424('0x25'));logger[_0x7424('0x26')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x266369,_0x7424('0x25'),JSON[_0x7424('0x27')](_0xe6e637));if(_0xe6e637[_0x7424('0x28')]){if(_0xe6e637[_0x7424('0x28')][_0x7424('0x29')]===0x1f4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x266369,_0xe6e637[_0x7424('0x28')][_0x7424('0x2a')]);return _0x3d17cb(_0xe6e637['error'][_0x7424('0x2a')]);}logger[_0x7424('0x28')](_0x7424('0x24'),_0x266369,_0xe6e637[_0x7424('0x28')][_0x7424('0x2a')]);return _0x560aa0(_0xe6e637['error'][_0x7424('0x2a')]);}else{logger[_0x7424('0x23')](_0x7424('0x24'),_0x266369,_0x7424('0x25'));_0x560aa0(_0xe6e637['result']['message']);}})['catch'](function(_0x35b94c){logger[_0x7424('0x28')](_0x7424('0x24'),_0x266369,_0x35b94c);_0x3d17cb(_0x35b94c);});});}function respondWithStatusCode(_0x3aafaa,_0x2c397c){_0x2c397c=_0x2c397c||0xcc;return function(_0x4aabd0){if(_0x4aabd0){return _0x3aafaa['sendStatus'](_0x2c397c);}return _0x3aafaa[_0x7424('0x2b')](_0x2c397c)[_0x7424('0x2c')]();};}function respondWithResult(_0x42e175,_0x43b6fa){_0x43b6fa=_0x43b6fa||0xc8;return function(_0x1f39a4){if(_0x1f39a4){return _0x42e175['status'](_0x43b6fa)['json'](_0x1f39a4);}};}function respondWithFilteredResult(_0x5c8a29,_0x48ff3a){return function(_0x408537){if(_0x408537){var _0x40f59a=typeof _0x48ff3a['offset']==='undefined'&&typeof _0x48ff3a['limit']==='undefined';var _0x208e54=_0x408537[_0x7424('0x2d')];var _0x281637=_0x40f59a?0x0:_0x48ff3a[_0x7424('0x2e')];var _0x49fcf8=_0x40f59a?_0x408537['count']:_0x48ff3a[_0x7424('0x2e')]+_0x48ff3a[_0x7424('0x2f')];var _0x443dc8;if(_0x49fcf8>=_0x208e54){_0x49fcf8=_0x208e54;_0x443dc8=0xc8;}else{_0x443dc8=0xce;}_0x5c8a29[_0x7424('0x2b')](_0x443dc8);return _0x5c8a29[_0x7424('0x30')](_0x7424('0x31'),_0x281637+'-'+_0x49fcf8+'/'+_0x208e54)['json'](_0x408537);}return null;};}function patchUpdates(_0x5be192){return function(_0x227fc7){try{jsonpatch[_0x7424('0x32')](_0x227fc7,_0x5be192,!![]);}catch(_0x15a9b1){return BPromise[_0x7424('0x33')](_0x15a9b1);}return _0x227fc7['save']();};}function saveUpdates(_0x11c99b,_0x339bf0){return function(_0x4fae1f){if(_0x4fae1f){return _0x4fae1f[_0x7424('0x34')](_0x11c99b)[_0x7424('0x22')](function(_0x30adb3){return _0x30adb3;});}return null;};}function removeEntity(_0x4838bc,_0x3d8d45){return function(_0x1762df){if(_0x1762df){return _0x1762df[_0x7424('0x35')]()[_0x7424('0x22')](function(){var _0x3666d1=_0x1762df[_0x7424('0x36')]({'plain':!![]});var _0x43c2e8=_0x7424('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x43c2e8,'resourceId':_0x3666d1['id']}})['then'](function(){return _0x1762df;});})[_0x7424('0x22')](function(){_0x4838bc[_0x7424('0x2b')](0xcc)[_0x7424('0x2c')]();});}};}function handleEntityNotFound(_0x11aab0,_0x154f96){return function(_0x1d568c){if(!_0x1d568c){_0x11aab0[_0x7424('0x38')](0x194);}return _0x1d568c;};}function handleError(_0x275c5f,_0x2f1a43){_0x2f1a43=_0x2f1a43||0x1f4;return function(_0x1d6218){logger['error'](_0x1d6218[_0x7424('0x39')]);if(_0x1d6218[_0x7424('0x3a')]){delete _0x1d6218[_0x7424('0x3a')];}_0x275c5f[_0x7424('0x2b')](_0x2f1a43)[_0x7424('0x3b')](_0x1d6218);};}exports[_0x7424('0x3c')]=function(_0xf6fad0,_0x51d34e){var _0x2e37db={},_0x492ac7={},_0x26da5d={'count':0x0,'rows':[]};var _0x3bb9f5=_['map'](db[_0x7424('0x3d')]['rawAttributes'],function(_0x19e94b){return{'name':_0x19e94b['fieldName'],'type':_0x19e94b['type'][_0x7424('0x3e')]};});_0x492ac7['model']=_[_0x7424('0x3f')](_0x3bb9f5,_0x7424('0x3a'));_0x492ac7[_0x7424('0x40')]=_[_0x7424('0x41')](_0xf6fad0[_0x7424('0x40')]);_0x492ac7[_0x7424('0x42')]=_[_0x7424('0x43')](_0x492ac7[_0x7424('0x44')],_0x492ac7[_0x7424('0x40')]);_0x2e37db[_0x7424('0x45')]=_['intersection'](_0x492ac7[_0x7424('0x44')],qs[_0x7424('0x46')](_0xf6fad0[_0x7424('0x40')][_0x7424('0x46')]));_0x2e37db['attributes']=_0x2e37db['attributes'][_0x7424('0x47')]?_0x2e37db['attributes']:_0x492ac7['model'];if(!_0xf6fad0['query'][_0x7424('0x48')](_0x7424('0x49'))){_0x2e37db[_0x7424('0x2f')]=qs[_0x7424('0x2f')](_0xf6fad0[_0x7424('0x40')][_0x7424('0x2f')]);_0x2e37db[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0xf6fad0[_0x7424('0x40')][_0x7424('0x2e')]);}_0x2e37db[_0x7424('0x4a')]=qs['sort'](_0xf6fad0[_0x7424('0x40')][_0x7424('0x4b')]);_0x2e37db[_0x7424('0x4c')]=qs[_0x7424('0x42')](_[_0x7424('0x4d')](_0xf6fad0[_0x7424('0x40')],_0x492ac7[_0x7424('0x42')]),_0x3bb9f5);if(_0xf6fad0[_0x7424('0x40')][_0x7424('0x4e')]){_0x2e37db[_0x7424('0x4c')]=_['merge'](_0x2e37db[_0x7424('0x4c')],{'$or':_[_0x7424('0x3f')](_0x3bb9f5,function(_0x144016){if(_0x144016[_0x7424('0x4f')]!==_0x7424('0x50')){var _0x3bd5d3={};_0x3bd5d3[_0x144016[_0x7424('0x3a')]]={'$like':'%'+_0xf6fad0[_0x7424('0x40')]['filter']+'%'};return _0x3bd5d3;}})});}_0x2e37db=_[_0x7424('0x51')]({},_0x2e37db,_0xf6fad0[_0x7424('0x52')]);var _0x2a4ac4={'where':_0x2e37db[_0x7424('0x4c')]};return db['ChatQueue']['count'](_0x2a4ac4)[_0x7424('0x22')](function(_0x54fe01){_0x26da5d[_0x7424('0x2d')]=_0x54fe01;if(_0xf6fad0[_0x7424('0x40')]['includeAll']){_0x2e37db[_0x7424('0x53')]=[{'all':!![]}];}return db[_0x7424('0x3d')][_0x7424('0x54')](_0x2e37db);})[_0x7424('0x22')](function(_0x5c72f6){_0x26da5d['rows']=_0x5c72f6;return _0x26da5d;})[_0x7424('0x22')](respondWithFilteredResult(_0x51d34e,_0x2e37db))[_0x7424('0x55')](handleError(_0x51d34e,null));};exports[_0x7424('0x56')]=function(_0x257092,_0x1b0c96){var _0x237390={'raw':!![],'where':{'id':_0x257092[_0x7424('0x57')]['id']}},_0x54a747={};_0x54a747[_0x7424('0x44')]=_[_0x7424('0x41')](db[_0x7424('0x3d')]['rawAttributes']);_0x54a747[_0x7424('0x40')]=_['keys'](_0x257092[_0x7424('0x40')]);_0x54a747[_0x7424('0x42')]=_[_0x7424('0x43')](_0x54a747[_0x7424('0x44')],_0x54a747[_0x7424('0x40')]);_0x237390[_0x7424('0x45')]=_[_0x7424('0x43')](_0x54a747[_0x7424('0x44')],qs[_0x7424('0x46')](_0x257092[_0x7424('0x40')][_0x7424('0x46')]));_0x237390[_0x7424('0x45')]=_0x237390['attributes'][_0x7424('0x47')]?_0x237390[_0x7424('0x45')]:_0x54a747[_0x7424('0x44')];if(_0x257092[_0x7424('0x40')][_0x7424('0x58')]){_0x237390['include']=[{'all':!![]}];}_0x237390=_[_0x7424('0x51')]({},_0x237390,_0x257092[_0x7424('0x52')]);return db[_0x7424('0x3d')][_0x7424('0x59')](_0x237390)[_0x7424('0x22')](handleEntityNotFound(_0x1b0c96,null))[_0x7424('0x22')](respondWithResult(_0x1b0c96,null))[_0x7424('0x55')](handleError(_0x1b0c96,null));};exports['create']=function(_0x2fc319,_0x1cf878){return db[_0x7424('0x3d')][_0x7424('0x5a')](_0x2fc319['body'],{})[_0x7424('0x22')](function(_0x5994ea){var _0xd9752a=_0x2fc319[_0x7424('0x5b')][_0x7424('0x36')]({'plain':!![]});if(!_0xd9752a)throw new Error(_0x7424('0x5c'));if(_0xd9752a['role']===_0x7424('0x5b')){var _0x3d2710=_0x5994ea['get']({'plain':!![]});var _0x3cd075=_0x7424('0x37');return db[_0x7424('0x5d')]['find']({'where':{'name':_0x3cd075,'userProfileId':_0xd9752a[_0x7424('0x5e')]},'raw':!![]})[_0x7424('0x22')](function(_0x3f6cac){if(_0x3f6cac&&_0x3f6cac['autoAssociation']===0x0){return db['UserProfileResource'][_0x7424('0x5a')]({'name':_0x3d2710[_0x7424('0x3a')],'resourceId':_0x3d2710['id'],'type':_0x3f6cac[_0x7424('0x3a')],'sectionId':_0x3f6cac['id']},{})[_0x7424('0x22')](function(){return _0x5994ea;});}else{return _0x5994ea;}})['catch'](function(_0x3b2fb6){logger['error'](_0x7424('0x5f'),_0x3b2fb6);throw _0x3b2fb6;});}return _0x5994ea;})['then'](respondWithResult(_0x1cf878,0xc9))[_0x7424('0x55')](handleError(_0x1cf878,null));};exports[_0x7424('0x34')]=function(_0x19dd83,_0x1421ac){if(_0x19dd83[_0x7424('0x60')]['id']){delete _0x19dd83[_0x7424('0x60')]['id'];}return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x19dd83[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x1421ac,null))['then'](saveUpdates(_0x19dd83[_0x7424('0x60')],null))[_0x7424('0x22')](respondWithResult(_0x1421ac,null))[_0x7424('0x55')](handleError(_0x1421ac,null));};exports[_0x7424('0x35')]=function(_0x318289,_0x1657e4){return db['ChatQueue'][_0x7424('0x59')]({'where':{'id':_0x318289['params']['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x1657e4,null))['then'](removeEntity(_0x1657e4,null))[_0x7424('0x55')](handleError(_0x1657e4,null));};exports[_0x7424('0x61')]=function(_0x3ccd75,_0x2952a3){return db[_0x7424('0x3d')]['describe']()[_0x7424('0x22')](respondWithResult(_0x2952a3,null))[_0x7424('0x55')](handleError(_0x2952a3,null));};exports[_0x7424('0x62')]=function(_0xa00a3,_0x22541b,_0x48b0a3){var _0x5f3305={'raw':!![],'where':{}},_0x39d17e={},_0x1160be;return db[_0x7424('0x3d')][_0x7424('0x63')]({'where':{'id':_0xa00a3[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x22541b,null))[_0x7424('0x22')](function(_0x46a4f1){if(_0x46a4f1){_0x1160be=_0x46a4f1[_0x7424('0x36')]({'plain':!![]});_0x39d17e[_0x7424('0x44')]=_[_0x7424('0x41')](db['UserChatQueue'][_0x7424('0x64')]);_0x39d17e[_0x7424('0x40')]=_[_0x7424('0x41')](_0xa00a3[_0x7424('0x40')]);_0x39d17e[_0x7424('0x42')]=_['intersection'](_0x39d17e[_0x7424('0x44')],_0x39d17e['query']);_0x5f3305['attributes']=_[_0x7424('0x43')](_0x39d17e['model'],qs[_0x7424('0x46')](_0xa00a3[_0x7424('0x40')][_0x7424('0x46')]));_0x5f3305['attributes']=_0x5f3305['attributes'][_0x7424('0x47')]?_0x5f3305[_0x7424('0x45')]:_0x39d17e['model'];if(!_0xa00a3[_0x7424('0x40')][_0x7424('0x48')]('nolimit')){_0x5f3305['limit']=qs[_0x7424('0x2f')](_0xa00a3[_0x7424('0x40')][_0x7424('0x2f')]);_0x5f3305[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0xa00a3[_0x7424('0x40')][_0x7424('0x2e')]);}_0x5f3305['order']=qs[_0x7424('0x4b')](_0xa00a3[_0x7424('0x40')][_0x7424('0x4b')]);_0x5f3305[_0x7424('0x4c')]=qs[_0x7424('0x42')](_[_0x7424('0x4d')](_0xa00a3[_0x7424('0x40')],_0x39d17e['filters']));_0x5f3305[_0x7424('0x4c')][_0x7424('0x65')]=_0x46a4f1['id'];if(_0xa00a3[_0x7424('0x40')][_0x7424('0x4e')]){_0x5f3305['where']=_[_0x7424('0x51')](_0x5f3305['where'],{'$or':_[_0x7424('0x3f')](_0x5f3305[_0x7424('0x45')],function(_0x185087){var _0x11caf={};_0x11caf[_0x185087]={'$like':'%'+_0xa00a3[_0x7424('0x40')][_0x7424('0x4e')]+'%'};return _0x11caf;})});}_0x5f3305=_[_0x7424('0x51')]({},_0x5f3305,_0xa00a3[_0x7424('0x52')]);return db['UserChatQueue'][_0x7424('0x54')](_0x5f3305);}})['then'](function(_0x372da5){if(_0x372da5){return db['User']['findAndCountAll']({'where':{'id':_[_0x7424('0x3f')](_0x372da5,_0x7424('0x66')),'role':'agent'},'attributes':['id',_0x7424('0x3a'),_0x7424('0x67'),_0x7424('0x68'),_0x7424('0x69')]});}})[_0x7424('0x22')](function(_0x51d7fa){if(_0x51d7fa){return{'count':_0x51d7fa[_0x7424('0x2d')],'rows':_[_0x7424('0x3f')](_0x51d7fa['rows'],function(_0x393004){return{'membername':_0x393004['name'],'UserId':_0x393004['id'],'queue_name':_0x1160be[_0x7424('0x3a')],'ChatQueueId':_0x1160be['id'],'interface':util[_0x7424('0x6a')](_0x7424('0x6b'),'SIP',_0x393004['name']),'penalty':0x0,'paused':_0x393004[_0x7424('0x67')],'createdAt':_0x393004['createdAt'],'updatedAt':_0x393004['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7424('0x22')](respondWithFilteredResult(_0x22541b,_0x5f3305))[_0x7424('0x55')](handleError(_0x22541b,null));};exports[_0x7424('0x6c')]=function(_0x5882ff,_0x56570c,_0x5624fe){var _0x34bf66={};var _0x403749={};var _0x4f71fb;var _0xc138c2;return db[_0x7424('0x3d')][_0x7424('0x63')]({'where':{'id':_0x5882ff[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x56570c,null))[_0x7424('0x22')](function(_0x51340e){if(_0x51340e){_0x4f71fb=_0x51340e;_0x403749[_0x7424('0x44')]=_['keys'](db[_0x7424('0x6d')][_0x7424('0x64')]);_0x403749[_0x7424('0x40')]=_[_0x7424('0x41')](_0x5882ff[_0x7424('0x40')]);_0x403749[_0x7424('0x42')]=_[_0x7424('0x43')](_0x403749[_0x7424('0x44')],_0x403749[_0x7424('0x40')]);_0x34bf66[_0x7424('0x45')]=_['intersection'](_0x403749['model'],qs[_0x7424('0x46')](_0x5882ff['query'][_0x7424('0x46')]));_0x34bf66[_0x7424('0x45')]=_0x34bf66[_0x7424('0x45')][_0x7424('0x47')]?_0x34bf66[_0x7424('0x45')]:_0x403749[_0x7424('0x44')];_0x34bf66[_0x7424('0x4a')]=qs[_0x7424('0x4b')](_0x5882ff['query'][_0x7424('0x4b')]);_0x34bf66['where']=qs['filters'](_[_0x7424('0x4d')](_0x5882ff['query'],_0x403749[_0x7424('0x42')]));if(_0x5882ff['query']['filter']){_0x34bf66[_0x7424('0x4c')]=_[_0x7424('0x51')](_0x34bf66[_0x7424('0x4c')],{'$or':_[_0x7424('0x3f')](_0x34bf66[_0x7424('0x45')],function(_0x4947cf){var _0x7c2ec1={};_0x7c2ec1[_0x4947cf]={'$like':'%'+_0x5882ff[_0x7424('0x40')][_0x7424('0x4e')]+'%'};return _0x7c2ec1;})});}_0x34bf66=_['merge']({},_0x34bf66,_0x5882ff[_0x7424('0x52')]);return _0x4f71fb[_0x7424('0x6c')](_0x34bf66);}})[_0x7424('0x22')](function(_0x5ee994){if(_0x5ee994){_0xc138c2=_0x5ee994[_0x7424('0x47')];if(!_0x5882ff[_0x7424('0x40')]['hasOwnProperty'](_0x7424('0x49'))){_0x34bf66[_0x7424('0x2f')]=qs[_0x7424('0x2f')](_0x5882ff[_0x7424('0x40')][_0x7424('0x2f')]);_0x34bf66[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0x5882ff[_0x7424('0x40')][_0x7424('0x2e')]);}return _0x4f71fb[_0x7424('0x6c')](_0x34bf66);}})[_0x7424('0x22')](function(_0x52f042){if(_0x52f042){return _0x52f042?{'count':_0xc138c2,'rows':_0x52f042}:null;}})[_0x7424('0x22')](respondWithResult(_0x56570c,null))['catch'](handleError(_0x56570c,null));};exports['addTeams']=function(_0x53761e,_0x243290,_0x2517c2){var _0x466255=_0x53761e[_0x7424('0x60')][_0x7424('0x6e')];return db[_0x7424('0x6d')][_0x7424('0x54')]({'where':{'id':_0x466255},'attributes':['id'],'include':[{'model':db[_0x7424('0x6f')],'as':_0x7424('0x70'),'attributes':['id','name',_0x7424('0x71'),_0x7424('0x72'),_0x7424('0x73')],'raw':!![]}]})[_0x7424('0x22')](function(_0x5f1429){if(_0x5f1429){var _0x584f2e=_[_0x7424('0x74')](_0x5f1429,function(_0x4d85ab){var _0x8f65ae=_0x4d85ab['get']({'plain':!![]});return _0x8f65ae[_0x7424('0x70')];});return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x53761e['params']['id']}})['then'](function(_0x531ce6){return db[_0x7424('0x75')][_0x7424('0x76')](function(_0x38775e){return _0x531ce6[_0x7424('0x77')](_0x466255,{'transaction':_0x38775e})[_0x7424('0x22')](function(){return BPromise['each'](_0x584f2e,function(_0x81508f){return db['UserChatQueue'][_0x7424('0x78')]({'where':{'UserId':_0x81508f['id'],'ChatQueueId':_0x53761e['params']['id']},'transaction':_0x38775e});});})[_0x7424('0x22')](function(){_0x584f2e[_0x7424('0x79')](function(_0x5f418b){socket[_0x7424('0x7a')](_0x7424('0x7b'),{'UserId':_0x5f418b['id'],'ChatQueueId':_0x531ce6['id']});});});});});}})[_0x7424('0x22')](respondWithStatusCode(_0x243290,null))['catch'](handleError(_0x243290,null));};exports[_0x7424('0x7c')]=function(_0x321f1c,_0x23f84b,_0xc12445){return db['Team'][_0x7424('0x54')]({'where':{'id':_0x321f1c[_0x7424('0x40')][_0x7424('0x6e')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7424('0x70'),'attributes':['id'],'raw':!![]}]})[_0x7424('0x22')](handleEntityNotFound(_0x23f84b,null))[_0x7424('0x22')](function(_0x2171ca){var _0x4bfc1e=_['map'](_0x2171ca,'id');var _0x2cfbb7=[];var _0x1832da=[];var _0x1fa8ce=squel['select']();_0x1fa8ce[_0x7424('0x7d')]('tq.TeamId')[_0x7424('0x7e')]('team_has_chat_queues','tq')[_0x7424('0x7f')](_0x7424('0x80'),'ut',_0x7424('0x81'))['where'](_0x7424('0x82'),_0x321f1c[_0x7424('0x57')]['id']);for(var _0x1f3930=0x0;_0x1f3930<_0x2171ca[_0x7424('0x47')];_0x1f3930+=0x1){let _0x5397af=_0x2171ca[_0x1f3930];for(var _0x32f511=0x0;_0x32f511<_0x5397af['Agents'][_0x7424('0x47')];_0x32f511+=0x1){let _0x3374d3=_0x5397af[_0x7424('0x70')][_0x32f511];var _0x5c7ddb=_0x1fa8ce[_0x7424('0x83')]();_0x5c7ddb['where']('ut.UserId\x20=\x20?',_0x3374d3['id']);_0x1832da['push'](db[_0x7424('0x75')][_0x7424('0x40')](_0x5c7ddb['toString'](),{'type':db[_0x7424('0x75')][_0x7424('0x84')]['SELECT']})[_0x7424('0x22')](function(_0x2e32ac){if(_0x2e32ac[_0x7424('0x47')]===0x1){return _0x3374d3['id'];}else{var _0x4edd58=_[_0x7424('0x85')](_[_0x7424('0x3f')](_0x2e32ac,_0x7424('0x86')),function(_0xd5dd5f){return _[_0x7424('0x87')](_0x4bfc1e,_0xd5dd5f);});if(_0x4edd58){return _0x3374d3['id'];}}}));}}return BPromise[_0x7424('0x88')](_0x1832da)[_0x7424('0x22')](function(_0x53ffce){_0x2cfbb7=_(_0x2cfbb7)['union'](_0x53ffce)[_0x7424('0x89')]()[_0x7424('0x8a')]();return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x321f1c[_0x7424('0x57')]['id']}})[_0x7424('0x22')](function(_0x2aad75){return db[_0x7424('0x75')][_0x7424('0x76')](function(_0x5e1073){return _0x2aad75[_0x7424('0x7c')](_0x321f1c['query'][_0x7424('0x6e')],{'transaction':_0x5e1073})['then'](function(){if(!_[_0x7424('0x8b')](_0x2cfbb7)){return _0x2aad75[_0x7424('0x8c')](_0x2cfbb7,{'transaction':_0x5e1073});}})[_0x7424('0x22')](function(){_0x2cfbb7[_0x7424('0x79')](function(_0x4c8a94){socket[_0x7424('0x7a')](_0x7424('0x8d'),{'UserId':_0x4c8a94,'ChatQueueId':_0x2aad75['id']});});});});});});})[_0x7424('0x22')](respondWithStatusCode(_0x23f84b,null))[_0x7424('0x55')](handleError(_0x23f84b,null));};exports[_0x7424('0x8e')]=function(_0x24a9a1,_0x33255a,_0x1aaa81){return db[_0x7424('0x3d')][_0x7424('0x59')]({'where':{'id':_0x24a9a1[_0x7424('0x57')]['id']}})['then'](handleEntityNotFound(_0x33255a,null))[_0x7424('0x22')](function(_0x528bf6){if(_0x528bf6){return _0x528bf6[_0x7424('0x8e')](_0x24a9a1[_0x7424('0x60')][_0x7424('0x6e')],_[_0x7424('0x8f')](_0x24a9a1[_0x7424('0x60')],[_0x7424('0x6e'),'id'])||{})[_0x7424('0x90')](function(_0x5daa90){for(var _0x3a9dbb=0x0;_0x3a9dbb<_0x24a9a1[_0x7424('0x60')][_0x7424('0x6e')][_0x7424('0x47')];_0x3a9dbb+=0x1){socket[_0x7424('0x7a')](_0x7424('0x7b'),{'UserId':Number(_0x24a9a1['body'][_0x7424('0x6e')][_0x3a9dbb]),'ChatQueueId':Number(_0x24a9a1['params']['id'])});}return _0x5daa90;});}})[_0x7424('0x22')](respondWithResult(_0x33255a,null))[_0x7424('0x55')](handleError(_0x33255a,null));};exports[_0x7424('0x8c')]=function(_0x3c2004,_0x6b66d2,_0x15089e){return db['ChatQueue'][_0x7424('0x59')]({'where':{'id':_0x3c2004[_0x7424('0x57')]['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x6b66d2,null))[_0x7424('0x22')](function(_0x3ce994){if(_0x3ce994){return _0x3ce994['removeAgents'](_0x3c2004['query'][_0x7424('0x6e')])[_0x7424('0x22')](function(){if(_['isArray'](_0x3c2004['query'][_0x7424('0x6e')])){for(var _0x2d0919=0x0;_0x2d0919<_0x3c2004[_0x7424('0x40')][_0x7424('0x6e')][_0x7424('0x47')];_0x2d0919+=0x1){socket['emit'](_0x7424('0x8d'),{'UserId':Number(_0x3c2004[_0x7424('0x40')]['ids'][_0x2d0919]),'ChatQueueId':Number(_0x3c2004[_0x7424('0x57')]['id'])});}}else{socket[_0x7424('0x7a')](_0x7424('0x8d'),{'UserId':Number(_0x3c2004[_0x7424('0x40')][_0x7424('0x6e')]),'ChatQueueId':Number(_0x3c2004[_0x7424('0x57')]['id'])});}});}})[_0x7424('0x22')](respondWithStatusCode(_0x6b66d2,null))[_0x7424('0x55')](handleError(_0x6b66d2,null));};exports[_0x7424('0x91')]=function(_0x49e937,_0x54b8e9,_0x4ca25a){var _0x59db7d={};var _0x38bb3f={};var _0x5028c3;var _0x302f98;return db[_0x7424('0x3d')][_0x7424('0x63')]({'where':{'id':_0x49e937['params']['id']}})[_0x7424('0x22')](handleEntityNotFound(_0x54b8e9,null))[_0x7424('0x22')](function(_0x2615ef){if(_0x2615ef){_0x5028c3=_0x2615ef;_0x38bb3f[_0x7424('0x44')]=_[_0x7424('0x41')](db['User']['rawAttributes']);_0x38bb3f[_0x7424('0x40')]=_[_0x7424('0x41')](_0x49e937['query']);_0x38bb3f[_0x7424('0x42')]=_[_0x7424('0x43')](_0x38bb3f[_0x7424('0x44')],_0x38bb3f[_0x7424('0x40')]);_0x59db7d[_0x7424('0x45')]=_[_0x7424('0x43')](_0x38bb3f[_0x7424('0x44')],qs[_0x7424('0x46')](_0x49e937[_0x7424('0x40')][_0x7424('0x46')]));_0x59db7d['attributes']=_0x59db7d[_0x7424('0x45')][_0x7424('0x47')]?_0x59db7d['attributes']:_0x38bb3f['model'];_0x59db7d['order']=qs[_0x7424('0x4b')](_0x49e937[_0x7424('0x40')]['sort']);_0x59db7d[_0x7424('0x4c')]=qs[_0x7424('0x42')](_[_0x7424('0x4d')](_0x49e937[_0x7424('0x40')],_0x38bb3f[_0x7424('0x42')]));if(_0x49e937[_0x7424('0x40')]['filter']){_0x59db7d[_0x7424('0x4c')]=_[_0x7424('0x51')](_0x59db7d[_0x7424('0x4c')],{'$or':_[_0x7424('0x3f')](_0x59db7d[_0x7424('0x45')],function(_0x47ee6a){var _0x15a2ee={};_0x15a2ee[_0x47ee6a]={'$like':'%'+_0x49e937[_0x7424('0x40')][_0x7424('0x4e')]+'%'};return _0x15a2ee;})});}_0x59db7d=_['merge']({},_0x59db7d,_0x49e937[_0x7424('0x52')]);return _0x5028c3[_0x7424('0x91')](_0x59db7d);}})[_0x7424('0x22')](function(_0xaa03f7){if(_0xaa03f7){_0x302f98=_0xaa03f7['length'];if(!_0x49e937[_0x7424('0x40')][_0x7424('0x48')](_0x7424('0x49'))){_0x59db7d['limit']=qs[_0x7424('0x2f')](_0x49e937[_0x7424('0x40')][_0x7424('0x2f')]);_0x59db7d[_0x7424('0x2e')]=qs[_0x7424('0x2e')](_0x49e937[_0x7424('0x40')]['offset']);}return _0x5028c3[_0x7424('0x91')](_0x59db7d);}})[_0x7424('0x22')](function(_0x2a9c15){if(_0x2a9c15){return _0x2a9c15?{'count':_0x302f98,'rows':_0x2a9c15}:null;}})[_0x7424('0x22')](respondWithResult(_0x54b8e9,null))[_0x7424('0x55')](handleError(_0x54b8e9,null));};
\ No newline at end of file
index dda408a..ff8273d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aff=['save','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatQueue','setMaxListeners'];(function(_0x169ff3,_0x13fb48){var _0x4f8172=function(_0x22a3af){while(--_0x22a3af){_0x169ff3['push'](_0x169ff3['shift']());}};_0x4f8172(++_0x13fb48);}(_0x2aff,0x6b));var _0xf2af=function(_0x112af0,_0x833f55){_0x112af0=_0x112af0-0x0;var _0x1b329e=_0x2aff[_0x112af0];return _0x1b329e;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0xf2af('0x0'))['db'][_0xf2af('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xf2af('0x2')](0x0);var events={'afterCreate':_0xf2af('0x3'),'afterUpdate':_0xf2af('0x4'),'afterDestroy':_0xf2af('0x5')};function emitEvent(_0x1a3e68){return function(_0x228d29,_0x26decd,_0x154b38){ChatQueueEvents[_0xf2af('0x6')](_0x1a3e68+':'+_0x228d29['id'],_0x228d29);ChatQueueEvents[_0xf2af('0x6')](_0x1a3e68,_0x228d29);_0x154b38(null);};}for(var e in events){if(events[_0xf2af('0x7')](e)){var event=events[e];ChatQueue[_0xf2af('0x8')](e,emitEvent(event));}}module[_0xf2af('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0x11b7=['remove','emit','hasOwnProperty','setMaxListeners'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x11b7,0x12f));var _0x711b=function(_0x3e36fa,_0x56653f){_0x3e36fa=_0x3e36fa-0x0;var _0x528ac5=_0x11b7[_0x3e36fa];return _0x528ac5;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x711b('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x711b('0x1')};function emitEvent(_0x35249b){return function(_0x4be832,_0x33d111,_0x2005cf){ChatQueueEvents['emit'](_0x35249b+':'+_0x4be832['id'],_0x4be832);ChatQueueEvents[_0x711b('0x2')](_0x35249b,_0x4be832);_0x2005cf(null);};}for(var e in events){if(events[_0x711b('0x3')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module['exports']=ChatQueueEvents;
\ No newline at end of file
index 84edf0f..02237a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6b6=['../../config/logger','api','rimraf','../../config/environment','./chatQueue.attributes','ChatQueue','lodash','util'];(function(_0x58990d,_0x18e5a8){var _0x2af8d7=function(_0x6819a1){while(--_0x6819a1){_0x58990d['push'](_0x58990d['shift']());}};_0x2af8d7(++_0x18e5a8);}(_0xd6b6,0xee));var _0x6d6b=function(_0xbf9cf4,_0x17db62){_0xbf9cf4=_0xbf9cf4-0x0;var _0x47ba5d=_0xd6b6[_0xbf9cf4];return _0x47ba5d;};'use strict';var _=require(_0x6d6b('0x0'));var util=require(_0x6d6b('0x1'));var logger=require(_0x6d6b('0x2'))(_0x6d6b('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(_0x6d6b('0x4'));var config=require(_0x6d6b('0x5'));var attributes=require(_0x6d6b('0x6'));module['exports']=function(_0x46297c,_0x2f2d22){return _0x46297c['define'](_0x6d6b('0x7'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70c8=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue','chat_queues','util'];(function(_0x1b7896,_0x468f95){var _0x358d83=function(_0x22a4df){while(--_0x22a4df){_0x1b7896['push'](_0x1b7896['shift']());}};_0x358d83(++_0x468f95);}(_0x70c8,0x9b));var _0x870c=function(_0x2793a9,_0x10ebdb){_0x2793a9=_0x2793a9-0x0;var _0x1ef39a=_0x70c8[_0x2793a9];return _0x1ef39a;};'use strict';var _=require('lodash');var util=require(_0x870c('0x0'));var logger=require(_0x870c('0x1'))(_0x870c('0x2'));var moment=require(_0x870c('0x3'));var BPromise=require(_0x870c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x870c('0x5'));var config=require(_0x870c('0x6'));var attributes=require(_0x870c('0x7'));module[_0x870c('0x8')]=function(_0x5eb682,_0x1ffaa6){return _0x5eb682[_0x870c('0x9')](_0x870c('0xa'),attributes,{'tableName':_0x870c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 94f9e62..08db9e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x945a=['where','attributes','limit','include','map','model','GetChatQueue','stringify','ShowChatQueue','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./chatQueue.socket','request','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','ChatQueue','options','raw'];(function(_0x2ffe,_0x668fec){var _0x272bed=function(_0x2e8b53){while(--_0x2e8b53){_0x2ffe['push'](_0x2ffe['shift']());}};_0x272bed(++_0x668fec);}(_0x945a,0x1d2));var _0xa945=function(_0x4d2db4,_0x2caad8){_0x4d2db4=_0x4d2db4-0x0;var _0x1cf122=_0x945a[_0x4d2db4];return _0x1cf122;};'use strict';var _=require('lodash');var util=require(_0xa945('0x0'));var moment=require(_0xa945('0x1'));var BPromise=require(_0xa945('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa945('0x3'));var db=require(_0xa945('0x4'))['db'];var utils=require(_0xa945('0x5'));var logger=require(_0xa945('0x6'))('rpc');var config=require(_0xa945('0x7'));var jayson=require(_0xa945('0x8'));var client=jayson[_0xa945('0x9')][_0xa945('0xa')]({'port':0x232a});config[_0xa945('0xb')]=_[_0xa945('0xc')](config['redis'],{'host':_0xa945('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa945('0xb')]));require(_0xa945('0xe'))['register'](socket);function respondWithRpcPromise(_0xb5ea9d,_0xdf6472,_0x2542dc){return new BPromise(function(_0xf72320,_0x1848f0){return client[_0xa945('0xf')](_0xb5ea9d,_0x2542dc)[_0xa945('0x10')](function(_0x5c852f){logger[_0xa945('0x11')](_0xa945('0x12'),_0xdf6472,_0xa945('0x13'));logger[_0xa945('0x14')](_0xa945('0x15'),_0xdf6472,_0xa945('0x13'),JSON['stringify'](_0x5c852f));if(_0x5c852f['error']){if(_0x5c852f[_0xa945('0x16')][_0xa945('0x17')]===0x1f4){logger[_0xa945('0x16')]('ChatQueue,\x20%s,\x20%s',_0xdf6472,_0x5c852f[_0xa945('0x16')]['message']);return _0x1848f0(_0x5c852f[_0xa945('0x16')]['message']);}logger[_0xa945('0x16')]('ChatQueue,\x20%s,\x20%s',_0xdf6472,_0x5c852f['error']['message']);return _0xf72320(_0x5c852f[_0xa945('0x16')]['message']);}else{logger[_0xa945('0x11')](_0xa945('0x12'),_0xdf6472,_0xa945('0x13'));_0xf72320(_0x5c852f['result'][_0xa945('0x18')]);}})['catch'](function(_0x573135){logger[_0xa945('0x16')]('ChatQueue,\x20%s,\x20%s',_0xdf6472,_0x573135);_0x1848f0(_0x573135);});});}exports['GetChatQueue']=function(_0x1097ed){var _0x7215df=this;return new Promise(function(_0x3d5b6e,_0x56561b){return db[_0xa945('0x19')]['findAll']({'raw':_0x1097ed[_0xa945('0x1a')]?_0x1097ed[_0xa945('0x1a')][_0xa945('0x1b')]===undefined?!![]:![]:!![],'where':_0x1097ed[_0xa945('0x1a')]?_0x1097ed[_0xa945('0x1a')][_0xa945('0x1c')]||null:null,'attributes':_0x1097ed[_0xa945('0x1a')]?_0x1097ed[_0xa945('0x1a')][_0xa945('0x1d')]||null:null,'limit':_0x1097ed[_0xa945('0x1a')]?_0x1097ed['options'][_0xa945('0x1e')]||null:null,'include':_0x1097ed[_0xa945('0x1a')]?_0x1097ed[_0xa945('0x1a')][_0xa945('0x1f')]?_[_0xa945('0x20')](_0x1097ed[_0xa945('0x1a')][_0xa945('0x1f')],function(_0x2d6f87){return{'model':db[_0x2d6f87[_0xa945('0x21')]],'as':_0x2d6f87['as'],'attributes':_0x2d6f87['attributes'],'include':_0x2d6f87[_0xa945('0x1f')]?_[_0xa945('0x20')](_0x2d6f87[_0xa945('0x1f')],function(_0x3c5439){return{'model':db[_0x3c5439['model']],'as':_0x3c5439['as'],'attributes':_0x3c5439['attributes'],'include':_0x3c5439['include']?_[_0xa945('0x20')](_0x3c5439[_0xa945('0x1f')],function(_0x1f5253){return{'model':db[_0x1f5253[_0xa945('0x21')]],'as':_0x1f5253['as'],'attributes':_0x1f5253['attributes']};}):[]};}):[]};}):[]:[]})[_0xa945('0x10')](function(_0xbff8af){logger[_0xa945('0x11')](_0xa945('0x22'),_0x1097ed);logger[_0xa945('0x14')](_0xa945('0x22'),_0x1097ed,JSON[_0xa945('0x23')](_0xbff8af));_0x3d5b6e(_0xbff8af);})['catch'](function(_0x17ba5b){logger[_0xa945('0x16')]('GetChatQueue',_0x17ba5b[_0xa945('0x18')],_0x1097ed);_0x56561b(_0x7215df[_0xa945('0x16')](0x1f4,_0x17ba5b[_0xa945('0x18')]));});});};exports[_0xa945('0x24')]=function(_0x268542){var _0x4b5e65=this;return new Promise(function(_0x10cd29,_0x25e992){return db[_0xa945('0x19')]['find']({'raw':_0x268542[_0xa945('0x1a')]?_0x268542[_0xa945('0x1a')][_0xa945('0x1b')]===undefined?!![]:![]:!![],'where':_0x268542[_0xa945('0x1a')]?_0x268542['options'][_0xa945('0x1c')]||null:null,'attributes':_0x268542[_0xa945('0x1a')]?_0x268542[_0xa945('0x1a')][_0xa945('0x1d')]||null:null,'include':_0x268542['options']?_0x268542['options'][_0xa945('0x1f')]?_[_0xa945('0x20')](_0x268542['options'][_0xa945('0x1f')],function(_0x4a8de6){return{'model':db[_0x4a8de6[_0xa945('0x21')]],'as':_0x4a8de6['as'],'attributes':_0x4a8de6[_0xa945('0x1d')],'include':_0x4a8de6['include']?_[_0xa945('0x20')](_0x4a8de6[_0xa945('0x1f')],function(_0x4efa6d){return{'model':db[_0x4efa6d[_0xa945('0x21')]],'as':_0x4efa6d['as'],'attributes':_0x4efa6d[_0xa945('0x1d')],'include':_0x4efa6d[_0xa945('0x1f')]?_[_0xa945('0x20')](_0x4efa6d[_0xa945('0x1f')],function(_0x48d979){return{'model':db[_0x48d979['model']],'as':_0x48d979['as'],'attributes':_0x48d979[_0xa945('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fede7){logger[_0xa945('0x11')](_0xa945('0x24'),_0x268542);logger['debug'](_0xa945('0x24'),_0x268542,JSON['stringify'](_0x2fede7));_0x10cd29(_0x2fede7);})[_0xa945('0x25')](function(_0x1689ed){logger[_0xa945('0x16')](_0xa945('0x24'),_0x1689ed[_0xa945('0x18')],_0x268542);_0x25e992(_0x4b5e65['error'](0x1f4,_0x1689ed[_0xa945('0x18')]));});});};
\ No newline at end of file
+var _0xa03c=['register','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetChatQueue','ChatQueue','options','raw','where','attributes','limit','include','map','model','ShowChatQueue','find','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket'];(function(_0x3545ec,_0x4e27e5){var _0x83b52c=function(_0x3315e1){while(--_0x3315e1){_0x3545ec['push'](_0x3545ec['shift']());}};_0x83b52c(++_0x4e27e5);}(_0xa03c,0x94));var _0xca03=function(_0x4eb84b,_0x289a5a){_0x4eb84b=_0x4eb84b-0x0;var _0x4956b8=_0xa03c[_0x4eb84b];return _0x4956b8;};'use strict';var _=require(_0xca03('0x0'));var util=require('util');var moment=require(_0xca03('0x1'));var BPromise=require(_0xca03('0x2'));var rs=require(_0xca03('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xca03('0x4'))['db'];var utils=require(_0xca03('0x5'));var logger=require(_0xca03('0x6'))('rpc');var config=require(_0xca03('0x7'));var jayson=require(_0xca03('0x8'));var client=jayson[_0xca03('0x9')][_0xca03('0xa')]({'port':0x232a});config[_0xca03('0xb')]=_[_0xca03('0xc')](config['redis'],{'host':_0xca03('0xd'),'port':0x18eb});var socket=require(_0xca03('0xe'))(new Redis(config[_0xca03('0xb')]));require(_0xca03('0xf'))[_0xca03('0x10')](socket);function respondWithRpcPromise(_0x9f510d,_0x34f897,_0x2a0468){return new BPromise(function(_0x17b38d,_0x3cea29){return client['request'](_0x9f510d,_0x2a0468)[_0xca03('0x11')](function(_0x1b71ae){logger[_0xca03('0x12')](_0xca03('0x13'),_0x34f897,_0xca03('0x14'));logger[_0xca03('0x15')](_0xca03('0x16'),_0x34f897,_0xca03('0x14'),JSON[_0xca03('0x17')](_0x1b71ae));if(_0x1b71ae[_0xca03('0x18')]){if(_0x1b71ae[_0xca03('0x18')][_0xca03('0x19')]===0x1f4){logger[_0xca03('0x18')](_0xca03('0x13'),_0x34f897,_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);return _0x3cea29(_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);}logger[_0xca03('0x18')]('ChatQueue,\x20%s,\x20%s',_0x34f897,_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);return _0x17b38d(_0x1b71ae[_0xca03('0x18')][_0xca03('0x1a')]);}else{logger[_0xca03('0x12')](_0xca03('0x13'),_0x34f897,_0xca03('0x14'));_0x17b38d(_0x1b71ae[_0xca03('0x1b')]['message']);}})[_0xca03('0x1c')](function(_0x56eab4){logger['error']('ChatQueue,\x20%s,\x20%s',_0x34f897,_0x56eab4);_0x3cea29(_0x56eab4);});});}exports[_0xca03('0x1d')]=function(_0x36b05e){var _0x353c70=this;return new Promise(function(_0x3804be,_0x540b13){return db[_0xca03('0x1e')]['findAll']({'raw':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x20')]===undefined?!![]:![]:!![],'where':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x21')]||null:null,'attributes':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x22')]||null:null,'limit':_0x36b05e[_0xca03('0x1f')]?_0x36b05e['options'][_0xca03('0x23')]||null:null,'include':_0x36b05e[_0xca03('0x1f')]?_0x36b05e[_0xca03('0x1f')][_0xca03('0x24')]?_['map'](_0x36b05e[_0xca03('0x1f')][_0xca03('0x24')],function(_0x29a03a){return{'model':db[_0x29a03a['model']],'as':_0x29a03a['as'],'attributes':_0x29a03a[_0xca03('0x22')],'include':_0x29a03a['include']?_[_0xca03('0x25')](_0x29a03a['include'],function(_0x2a555f){return{'model':db[_0x2a555f['model']],'as':_0x2a555f['as'],'attributes':_0x2a555f[_0xca03('0x22')],'include':_0x2a555f[_0xca03('0x24')]?_[_0xca03('0x25')](_0x2a555f[_0xca03('0x24')],function(_0x5271a9){return{'model':db[_0x5271a9[_0xca03('0x26')]],'as':_0x5271a9['as'],'attributes':_0x5271a9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5f501c){logger[_0xca03('0x12')](_0xca03('0x1d'),_0x36b05e);logger[_0xca03('0x15')](_0xca03('0x1d'),_0x36b05e,JSON[_0xca03('0x17')](_0x5f501c));_0x3804be(_0x5f501c);})[_0xca03('0x1c')](function(_0x3387c3){logger[_0xca03('0x18')](_0xca03('0x1d'),_0x3387c3[_0xca03('0x1a')],_0x36b05e);_0x540b13(_0x353c70['error'](0x1f4,_0x3387c3[_0xca03('0x1a')]));});});};exports[_0xca03('0x27')]=function(_0x2058f7){var _0x5f3d8b=this;return new Promise(function(_0x4cd6f0,_0x214dd7){return db[_0xca03('0x1e')][_0xca03('0x28')]({'raw':_0x2058f7[_0xca03('0x1f')]?_0x2058f7[_0xca03('0x1f')][_0xca03('0x20')]===undefined?!![]:![]:!![],'where':_0x2058f7[_0xca03('0x1f')]?_0x2058f7[_0xca03('0x1f')]['where']||null:null,'attributes':_0x2058f7[_0xca03('0x1f')]?_0x2058f7['options'][_0xca03('0x22')]||null:null,'include':_0x2058f7[_0xca03('0x1f')]?_0x2058f7['options'][_0xca03('0x24')]?_[_0xca03('0x25')](_0x2058f7['options'][_0xca03('0x24')],function(_0x5b58fc){return{'model':db[_0x5b58fc['model']],'as':_0x5b58fc['as'],'attributes':_0x5b58fc['attributes'],'include':_0x5b58fc['include']?_['map'](_0x5b58fc['include'],function(_0x7a6b87){return{'model':db[_0x7a6b87[_0xca03('0x26')]],'as':_0x7a6b87['as'],'attributes':_0x7a6b87[_0xca03('0x22')],'include':_0x7a6b87[_0xca03('0x24')]?_[_0xca03('0x25')](_0x7a6b87[_0xca03('0x24')],function(_0x2cb6eb){return{'model':db[_0x2cb6eb[_0xca03('0x26')]],'as':_0x2cb6eb['as'],'attributes':_0x2cb6eb[_0xca03('0x22')]};}):[]};}):[]};}):[]:[]})[_0xca03('0x11')](function(_0x589135){logger['info']('ShowChatQueue',_0x2058f7);logger['debug'](_0xca03('0x27'),_0x2058f7,JSON[_0xca03('0x17')](_0x589135));_0x4cd6f0(_0x589135);})[_0xca03('0x1c')](function(_0x2db085){logger[_0xca03('0x18')](_0xca03('0x27'),_0x2db085[_0xca03('0x1a')],_0x2058f7);_0x214dd7(_0x5f3d8b[_0xca03('0x18')](0x1f4,_0x2db085[_0xca03('0x1a')]));});});};
\ No newline at end of file
index bc4a474..b6be703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['removeListener','register','length','chatQueue:','save','remove','update','emit'];(function(_0x30347,_0x29012f){var _0x5ce687=function(_0x461e35){while(--_0x461e35){_0x30347['push'](_0x30347['shift']());}};_0x5ce687(++_0x29012f);}(_0xedd9,0xfc));var _0x9edd=function(_0x23d6da,_0x29b3b3){_0x23d6da=_0x23d6da-0x0;var _0x2a42ba=_0xedd9[_0x23d6da];return _0x2a42ba;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x9edd('0x0'),_0x9edd('0x1'),_0x9edd('0x2')];function createListener(_0x2c16b8,_0x3b51bc){return function(_0x127cbe){_0x3b51bc[_0x9edd('0x3')](_0x2c16b8,_0x127cbe);};}function removeListener(_0x36b53f,_0x5943b3){return function(){ChatQueueEvents[_0x9edd('0x4')](_0x36b53f,_0x5943b3);};}exports[_0x9edd('0x5')]=function(_0x268f9e){for(var _0x34c1a7=0x0,_0x5319f7=events[_0x9edd('0x6')];_0x34c1a7<_0x5319f7;_0x34c1a7++){var _0x571af9=events[_0x34c1a7];var _0x172522=createListener(_0x9edd('0x7')+_0x571af9,_0x268f9e);ChatQueueEvents['on'](_0x571af9,_0x172522);}};
\ No newline at end of file
+var _0xc978=['remove','update','emit','removeListener','register','length','chatQueue:','./chatQueue.events','save'];(function(_0x1b738b,_0x1fdd2d){var _0x1cfe00=function(_0x32ab10){while(--_0x32ab10){_0x1b738b['push'](_0x1b738b['shift']());}};_0x1cfe00(++_0x1fdd2d);}(_0xc978,0xcd));var _0x8c97=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc978[_0x20a584];return _0x4b41a8;};'use strict';var ChatQueueEvents=require(_0x8c97('0x0'));var events=[_0x8c97('0x1'),_0x8c97('0x2'),_0x8c97('0x3')];function createListener(_0x371c48,_0x44d4ea){return function(_0x5ef47d){_0x44d4ea[_0x8c97('0x4')](_0x371c48,_0x5ef47d);};}function removeListener(_0x23c28d,_0x3ad972){return function(){ChatQueueEvents[_0x8c97('0x5')](_0x23c28d,_0x3ad972);};}exports[_0x8c97('0x6')]=function(_0x2a9434){for(var _0xabd146=0x0,_0x524196=events[_0x8c97('0x7')];_0xabd146<_0x524196;_0xabd146++){var _0x1b5864=events[_0xabd146];var _0x332cd1=createListener(_0x8c97('0x8')+_0x1b5864,_0x2a9434);ChatQueueEvents['on'](_0x1b5864,_0x332cd1);}};
\ No newline at end of file
index f6cbca7..e0c6db6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/teams','getTeams','getAgents','post','addTeams','addAgents','put','delete','removeTeams','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x3e74,0x175));var _0x43e7=function(_0x51e592,_0x428509){_0x51e592=_0x51e592-0x0;var _0x1d005f=_0x3e74[_0x51e592];return _0x1d005f;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0x7')](_0x43e7('0xc'),auth['isAuthenticated'](),controller[_0x43e7('0xd')]);router['get']('/:id/members',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x13')]);router['post']('/:id/users',auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router[_0x43e7('0x15')](_0x43e7('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x43e7('0x16')](_0x43e7('0xc'),auth[_0x43e7('0x8')](),controller['destroy']);router['delete'](_0x43e7('0xf'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x17')]);router[_0x43e7('0x16')](_0x43e7('0x18'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x19')]);module[_0x43e7('0x1a')]=router;
\ No newline at end of file
+var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x5881be,_0x5edf5d){var _0x8e63bf=function(_0x4dd2b2){while(--_0x4dd2b2){_0x5881be['push'](_0x5881be['shift']());}};_0x8e63bf(++_0x5edf5d);}(_0xe14b,0x93));var _0xbe14=function(_0x2a2ba5,_0x267228){_0x2a2ba5=_0x2a2ba5-0x0;var _0x1b049e=_0xe14b[_0x2a2ba5];return _0x1b049e;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
index 2329ab7..7c8d03d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22f2=['sequelize','exports','STRING','DATE','moment'];(function(_0x4c8256,_0xa7c341){var _0x1803ef=function(_0x3c71e0){while(--_0x3c71e0){_0x4c8256['push'](_0x4c8256['shift']());}};_0x1803ef(++_0xa7c341);}(_0x22f2,0xd6));var _0x222f=function(_0x3ce2fb,_0x3585da){_0x3ce2fb=_0x3ce2fb-0x0;var _0x323301=_0x22f2[_0x3ce2fb];return _0x323301;};'use strict';var moment=require(_0x222f('0x0'));var Sequelize=require(_0x222f('0x1'));module[_0x222f('0x2')]={'uniqueid':{'type':Sequelize[_0x222f('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x222f('0x3')]},'joinAt':{'type':Sequelize[_0x222f('0x4')]},'leaveAt':{'type':Sequelize[_0x222f('0x4')]},'acceptAt':{'type':Sequelize[_0x222f('0x4')]},'exitAt':{'type':Sequelize[_0x222f('0x4')]},'reason':{'type':Sequelize[_0x222f('0x3')]}};
\ No newline at end of file
+var _0x6f4e=['STRING','DATE','moment','exports'];(function(_0x3d2615,_0x549f3c){var _0x2dd84a=function(_0x59e751){while(--_0x59e751){_0x3d2615['push'](_0x3d2615['shift']());}};_0x2dd84a(++_0x549f3c);}(_0x6f4e,0x1ae));var _0xe6f4=function(_0x2e43f6,_0x13b0b6){_0x2e43f6=_0x2e43f6-0x0;var _0x4b0504=_0x6f4e[_0x2e43f6];return _0x4b0504;};'use strict';var moment=require(_0xe6f4('0x0'));var Sequelize=require('sequelize');module[_0xe6f4('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0xe6f4('0x2')]},'joinAt':{'type':Sequelize[_0xe6f4('0x3')]},'leaveAt':{'type':Sequelize[_0xe6f4('0x3')]},'acceptAt':{'type':Sequelize[_0xe6f4('0x3')]},'exitAt':{'type':Sequelize[_0xe6f4('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2176794..1343a35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5232=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','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/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','status','set','Content-Range','reject','save','then','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','filter','merge','VIRTUAL','include','ChatQueueReport','findAll','show','params','includeAll','options','catch','create','body','update','find'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x5232,0x1c9));var _0x2523=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0x5232[_0x437d7f];return _0x31058c;};'use strict';var emlformat=require(_0x2523('0x0'));var rimraf=require(_0x2523('0x1'));var zipdir=require(_0x2523('0x2'));var jsonpatch=require(_0x2523('0x3'));var rp=require(_0x2523('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2523('0x5'));var util=require(_0x2523('0x6'));var path=require('path');var sox=require(_0x2523('0x7'));var csv=require(_0x2523('0x8'));var ejs=require(_0x2523('0x9'));var fs=require('fs');var fs_extra=require(_0x2523('0xa'));var _=require(_0x2523('0xb'));var squel=require(_0x2523('0xc'));var crypto=require(_0x2523('0xd'));var jsforce=require(_0x2523('0xe'));var deskjs=require(_0x2523('0xf'));var toCsv=require(_0x2523('0x8'));var querystring=require(_0x2523('0x10'));var Papa=require(_0x2523('0x11'));var Redis=require('ioredis');var authService=require(_0x2523('0x12'));var qs=require(_0x2523('0x13'));var as=require(_0x2523('0x14'));var hardwareService=require(_0x2523('0x15'));var logger=require(_0x2523('0x16'))(_0x2523('0x17'));var utils=require('../../config/utils');var config=require(_0x2523('0x18'));var licenseUtil=require(_0x2523('0x19'));var db=require(_0x2523('0x1a'))['db'];function respondWithStatusCode(_0x99685a,_0x5176d5){_0x5176d5=_0x5176d5||0xcc;return function(_0x37f270){if(_0x37f270){return _0x99685a[_0x2523('0x1b')](_0x5176d5);}return _0x99685a['status'](_0x5176d5)[_0x2523('0x1c')]();};}function respondWithResult(_0x2cd6e1,_0xc9898b){_0xc9898b=_0xc9898b||0xc8;return function(_0xc09a01){if(_0xc09a01){return _0x2cd6e1['status'](_0xc9898b)[_0x2523('0x1d')](_0xc09a01);}};}function respondWithFilteredResult(_0x5974a6,_0x3f9b51){return function(_0x1ac5d3){if(_0x1ac5d3){var _0x173218=typeof _0x3f9b51[_0x2523('0x1e')]==='undefined'&&typeof _0x3f9b51[_0x2523('0x1f')]===_0x2523('0x20');var _0x108159=_0x1ac5d3[_0x2523('0x21')];var _0x1ce828=_0x173218?0x0:_0x3f9b51[_0x2523('0x1e')];var _0x4f2a85=_0x173218?_0x1ac5d3[_0x2523('0x21')]:_0x3f9b51[_0x2523('0x1e')]+_0x3f9b51['limit'];var _0x2819aa;if(_0x4f2a85>=_0x108159){_0x4f2a85=_0x108159;_0x2819aa=0xc8;}else{_0x2819aa=0xce;}_0x5974a6[_0x2523('0x22')](_0x2819aa);return _0x5974a6[_0x2523('0x23')](_0x2523('0x24'),_0x1ce828+'-'+_0x4f2a85+'/'+_0x108159)['json'](_0x1ac5d3);}return null;};}function patchUpdates(_0x4f94c9){return function(_0x4e9498){try{jsonpatch['apply'](_0x4e9498,_0x4f94c9,!![]);}catch(_0x1d52dc){return BPromise[_0x2523('0x25')](_0x1d52dc);}return _0x4e9498[_0x2523('0x26')]();};}function saveUpdates(_0x3baae5,_0x1c39d8){return function(_0x578a83){if(_0x578a83){return _0x578a83['update'](_0x3baae5)['then'](function(_0x50e34e){return _0x50e34e;});}return null;};}function removeEntity(_0x14a685,_0x4847c1){return function(_0x4fc304){if(_0x4fc304){return _0x4fc304['destroy']()[_0x2523('0x27')](function(){_0x14a685[_0x2523('0x22')](0xcc)[_0x2523('0x1c')]();});}};}function handleEntityNotFound(_0x393956,_0xd47858){return function(_0x5495f4){if(!_0x5495f4){_0x393956[_0x2523('0x1b')](0x194);}return _0x5495f4;};}function handleError(_0x45366f,_0x3a8b48){_0x3a8b48=_0x3a8b48||0x1f4;return function(_0x1a8b0c){logger[_0x2523('0x28')](_0x1a8b0c[_0x2523('0x29')]);if(_0x1a8b0c[_0x2523('0x2a')]){delete _0x1a8b0c[_0x2523('0x2a')];}_0x45366f[_0x2523('0x22')](_0x3a8b48)['send'](_0x1a8b0c);};}exports[_0x2523('0x2b')]=function(_0x1565a8,_0x53b772){var _0x304dd4={},_0x52b25d={},_0x4cb11f={'count':0x0,'rows':[]};var _0x5e0ada=_[_0x2523('0x2c')](db['ChatQueueReport'][_0x2523('0x2d')],function(_0x577c90){return{'name':_0x577c90[_0x2523('0x2e')],'type':_0x577c90[_0x2523('0x2f')]['key']};});_0x52b25d[_0x2523('0x30')]=_['map'](_0x5e0ada,_0x2523('0x2a'));_0x52b25d[_0x2523('0x31')]=_[_0x2523('0x32')](_0x1565a8[_0x2523('0x31')]);_0x52b25d[_0x2523('0x33')]=_[_0x2523('0x34')](_0x52b25d['model'],_0x52b25d[_0x2523('0x31')]);_0x304dd4[_0x2523('0x35')]=_[_0x2523('0x34')](_0x52b25d['model'],qs[_0x2523('0x36')](_0x1565a8['query'][_0x2523('0x36')]));_0x304dd4[_0x2523('0x35')]=_0x304dd4[_0x2523('0x35')][_0x2523('0x37')]?_0x304dd4[_0x2523('0x35')]:_0x52b25d[_0x2523('0x30')];if(!_0x1565a8[_0x2523('0x31')]['hasOwnProperty'](_0x2523('0x38'))){_0x304dd4[_0x2523('0x1f')]=qs[_0x2523('0x1f')](_0x1565a8[_0x2523('0x31')][_0x2523('0x1f')]);_0x304dd4['offset']=qs[_0x2523('0x1e')](_0x1565a8[_0x2523('0x31')][_0x2523('0x1e')]);}_0x304dd4[_0x2523('0x39')]=qs['sort'](_0x1565a8[_0x2523('0x31')]['sort']);_0x304dd4[_0x2523('0x3a')]=qs['filters'](_[_0x2523('0x3b')](_0x1565a8[_0x2523('0x31')],_0x52b25d[_0x2523('0x33')]),_0x5e0ada);if(_0x1565a8[_0x2523('0x31')][_0x2523('0x3c')]){_0x304dd4[_0x2523('0x3a')]=_[_0x2523('0x3d')](_0x304dd4[_0x2523('0x3a')],{'$or':_['map'](_0x5e0ada,function(_0x24aea8){if(_0x24aea8[_0x2523('0x2f')]!==_0x2523('0x3e')){var _0x2cd540={};_0x2cd540[_0x24aea8[_0x2523('0x2a')]]={'$like':'%'+_0x1565a8['query'][_0x2523('0x3c')]+'%'};return _0x2cd540;}})});}_0x304dd4=_[_0x2523('0x3d')]({},_0x304dd4,_0x1565a8['options']);var _0x4a5171={'where':_0x304dd4[_0x2523('0x3a')]};return db['ChatQueueReport'][_0x2523('0x21')](_0x4a5171)[_0x2523('0x27')](function(_0x200a6d){_0x4cb11f[_0x2523('0x21')]=_0x200a6d;if(_0x1565a8['query']['includeAll']){_0x304dd4[_0x2523('0x3f')]=[{'all':!![]}];}return db[_0x2523('0x40')][_0x2523('0x41')](_0x304dd4);})[_0x2523('0x27')](function(_0x14104c){_0x4cb11f['rows']=_0x14104c;return _0x4cb11f;})['then'](respondWithFilteredResult(_0x53b772,_0x304dd4))['catch'](handleError(_0x53b772,null));};exports[_0x2523('0x42')]=function(_0x19f453,_0xceff81){var _0x574e6e={'raw':!![],'where':{'id':_0x19f453[_0x2523('0x43')]['id']}},_0x24e0e1={};_0x24e0e1['model']=_[_0x2523('0x32')](db[_0x2523('0x40')][_0x2523('0x2d')]);_0x24e0e1[_0x2523('0x31')]=_[_0x2523('0x32')](_0x19f453['query']);_0x24e0e1[_0x2523('0x33')]=_[_0x2523('0x34')](_0x24e0e1[_0x2523('0x30')],_0x24e0e1[_0x2523('0x31')]);_0x574e6e['attributes']=_[_0x2523('0x34')](_0x24e0e1[_0x2523('0x30')],qs[_0x2523('0x36')](_0x19f453[_0x2523('0x31')]['fields']));_0x574e6e['attributes']=_0x574e6e[_0x2523('0x35')]['length']?_0x574e6e[_0x2523('0x35')]:_0x24e0e1[_0x2523('0x30')];if(_0x19f453[_0x2523('0x31')][_0x2523('0x44')]){_0x574e6e[_0x2523('0x3f')]=[{'all':!![]}];}_0x574e6e=_['merge']({},_0x574e6e,_0x19f453[_0x2523('0x45')]);return db[_0x2523('0x40')]['find'](_0x574e6e)[_0x2523('0x27')](handleEntityNotFound(_0xceff81,null))[_0x2523('0x27')](respondWithResult(_0xceff81,null))[_0x2523('0x46')](handleError(_0xceff81,null));};exports['create']=function(_0x337993,_0x1a1268){return db[_0x2523('0x40')][_0x2523('0x47')](_0x337993[_0x2523('0x48')],{})['then'](respondWithResult(_0x1a1268,0xc9))[_0x2523('0x46')](handleError(_0x1a1268,null));};exports[_0x2523('0x49')]=function(_0x4d0727,_0x569caa){if(_0x4d0727['body']['id']){delete _0x4d0727['body']['id'];}return db[_0x2523('0x40')][_0x2523('0x4a')]({'where':{'id':_0x4d0727[_0x2523('0x43')]['id']}})[_0x2523('0x27')](handleEntityNotFound(_0x569caa,null))[_0x2523('0x27')](saveUpdates(_0x4d0727[_0x2523('0x48')],null))[_0x2523('0x27')](respondWithResult(_0x569caa,null))['catch'](handleError(_0x569caa,null));};exports['destroy']=function(_0x5ec3e2,_0x66d07c){return db[_0x2523('0x40')]['find']({'where':{'id':_0x5ec3e2[_0x2523('0x43')]['id']}})[_0x2523('0x27')](handleEntityNotFound(_0x66d07c,null))[_0x2523('0x27')](removeEntity(_0x66d07c,null))['catch'](handleError(_0x66d07c,null));};exports[_0x2523('0x4b')]=function(_0x7de3e8,_0x22ad10){return db['ChatQueueReport']['describe']()[_0x2523('0x27')](respondWithResult(_0x22ad10,null))[_0x2523('0x46')](handleError(_0x22ad10,null));};
\ No newline at end of file
+var _0x6a58=['mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','then','end','error','stack','name','index','ChatQueueReport','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','create','body','update','destroy','describe','eml-format','rimraf','fast-json-patch','moment'];(function(_0x141f91,_0xf75583){var _0x12cb51=function(_0x274fdc){while(--_0x274fdc){_0x141f91['push'](_0x141f91['shift']());}};_0x12cb51(++_0xf75583);}(_0x6a58,0x120));var _0x86a5=function(_0x13b392,_0x3481f2){_0x13b392=_0x13b392-0x0;var _0x39db24=_0x6a58[_0x13b392];return _0x39db24;};'use strict';var emlformat=require(_0x86a5('0x0'));var rimraf=require(_0x86a5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x86a5('0x2'));var rp=require('request-promise');var moment=require(_0x86a5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x86a5('0x4'));var util=require(_0x86a5('0x5'));var path=require(_0x86a5('0x6'));var sox=require(_0x86a5('0x7'));var csv=require(_0x86a5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x86a5('0x9'));var _=require(_0x86a5('0xa'));var squel=require('squel');var crypto=require(_0x86a5('0xb'));var jsforce=require(_0x86a5('0xc'));var deskjs=require(_0x86a5('0xd'));var toCsv=require(_0x86a5('0x8'));var querystring=require(_0x86a5('0xe'));var Papa=require(_0x86a5('0xf'));var Redis=require(_0x86a5('0x10'));var authService=require(_0x86a5('0x11'));var qs=require(_0x86a5('0x12'));var as=require(_0x86a5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x86a5('0x14'));var utils=require('../../config/utils');var config=require(_0x86a5('0x15'));var licenseUtil=require(_0x86a5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2df079,_0x320af5){_0x320af5=_0x320af5||0xcc;return function(_0x4b4655){if(_0x4b4655){return _0x2df079[_0x86a5('0x17')](_0x320af5);}return _0x2df079[_0x86a5('0x18')](_0x320af5)['end']();};}function respondWithResult(_0x40dcf6,_0x156a2b){_0x156a2b=_0x156a2b||0xc8;return function(_0xc8ccdb){if(_0xc8ccdb){return _0x40dcf6[_0x86a5('0x18')](_0x156a2b)[_0x86a5('0x19')](_0xc8ccdb);}};}function respondWithFilteredResult(_0x5bbdbe,_0x485829){return function(_0x12999d){if(_0x12999d){var _0x5c3c99=typeof _0x485829[_0x86a5('0x1a')]===_0x86a5('0x1b')&&typeof _0x485829[_0x86a5('0x1c')]==='undefined';var _0x497fce=_0x12999d[_0x86a5('0x1d')];var _0x173005=_0x5c3c99?0x0:_0x485829[_0x86a5('0x1a')];var _0x130048=_0x5c3c99?_0x12999d[_0x86a5('0x1d')]:_0x485829['offset']+_0x485829[_0x86a5('0x1c')];var _0x5480b1;if(_0x130048>=_0x497fce){_0x130048=_0x497fce;_0x5480b1=0xc8;}else{_0x5480b1=0xce;}_0x5bbdbe[_0x86a5('0x18')](_0x5480b1);return _0x5bbdbe[_0x86a5('0x1e')](_0x86a5('0x1f'),_0x173005+'-'+_0x130048+'/'+_0x497fce)[_0x86a5('0x19')](_0x12999d);}return null;};}function patchUpdates(_0x1f79b1){return function(_0x390feb){try{jsonpatch[_0x86a5('0x20')](_0x390feb,_0x1f79b1,!![]);}catch(_0x1b56c8){return BPromise['reject'](_0x1b56c8);}return _0x390feb['save']();};}function saveUpdates(_0x1f0af0,_0x39dcde){return function(_0x54ffc0){if(_0x54ffc0){return _0x54ffc0['update'](_0x1f0af0)['then'](function(_0x278715){return _0x278715;});}return null;};}function removeEntity(_0x2960f7,_0x2ef076){return function(_0x512df9){if(_0x512df9){return _0x512df9['destroy']()[_0x86a5('0x21')](function(){_0x2960f7[_0x86a5('0x18')](0xcc)[_0x86a5('0x22')]();});}};}function handleEntityNotFound(_0x56fd69,_0x38d7c4){return function(_0x566396){if(!_0x566396){_0x56fd69[_0x86a5('0x17')](0x194);}return _0x566396;};}function handleError(_0x573f65,_0x3d36a6){_0x3d36a6=_0x3d36a6||0x1f4;return function(_0x9ede82){logger[_0x86a5('0x23')](_0x9ede82[_0x86a5('0x24')]);if(_0x9ede82[_0x86a5('0x25')]){delete _0x9ede82[_0x86a5('0x25')];}_0x573f65['status'](_0x3d36a6)['send'](_0x9ede82);};}exports[_0x86a5('0x26')]=function(_0x9589d3,_0x1568b7){var _0xcbf54e={},_0x14a4d2={},_0xd3aee9={'count':0x0,'rows':[]};var _0x2b089a=_['map'](db[_0x86a5('0x27')]['rawAttributes'],function(_0x50420d){return{'name':_0x50420d[_0x86a5('0x28')],'type':_0x50420d['type'][_0x86a5('0x29')]};});_0x14a4d2[_0x86a5('0x2a')]=_[_0x86a5('0x2b')](_0x2b089a,_0x86a5('0x25'));_0x14a4d2[_0x86a5('0x2c')]=_[_0x86a5('0x2d')](_0x9589d3[_0x86a5('0x2c')]);_0x14a4d2[_0x86a5('0x2e')]=_[_0x86a5('0x2f')](_0x14a4d2[_0x86a5('0x2a')],_0x14a4d2[_0x86a5('0x2c')]);_0xcbf54e[_0x86a5('0x30')]=_[_0x86a5('0x2f')](_0x14a4d2[_0x86a5('0x2a')],qs['fields'](_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x31')]));_0xcbf54e[_0x86a5('0x30')]=_0xcbf54e[_0x86a5('0x30')][_0x86a5('0x32')]?_0xcbf54e[_0x86a5('0x30')]:_0x14a4d2[_0x86a5('0x2a')];if(!_0x9589d3['query']['hasOwnProperty'](_0x86a5('0x33'))){_0xcbf54e[_0x86a5('0x1c')]=qs[_0x86a5('0x1c')](_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x1c')]);_0xcbf54e[_0x86a5('0x1a')]=qs['offset'](_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x1a')]);}_0xcbf54e['order']=qs[_0x86a5('0x34')](_0x9589d3[_0x86a5('0x2c')]['sort']);_0xcbf54e['where']=qs[_0x86a5('0x2e')](_[_0x86a5('0x35')](_0x9589d3[_0x86a5('0x2c')],_0x14a4d2[_0x86a5('0x2e')]),_0x2b089a);if(_0x9589d3['query'][_0x86a5('0x36')]){_0xcbf54e[_0x86a5('0x37')]=_[_0x86a5('0x38')](_0xcbf54e[_0x86a5('0x37')],{'$or':_[_0x86a5('0x2b')](_0x2b089a,function(_0x504045){if(_0x504045[_0x86a5('0x39')]!==_0x86a5('0x3a')){var _0x46fb24={};_0x46fb24[_0x504045['name']]={'$like':'%'+_0x9589d3[_0x86a5('0x2c')]['filter']+'%'};return _0x46fb24;}})});}_0xcbf54e=_['merge']({},_0xcbf54e,_0x9589d3['options']);var _0x2d7d5b={'where':_0xcbf54e[_0x86a5('0x37')]};return db['ChatQueueReport'][_0x86a5('0x1d')](_0x2d7d5b)[_0x86a5('0x21')](function(_0x57f609){_0xd3aee9[_0x86a5('0x1d')]=_0x57f609;if(_0x9589d3[_0x86a5('0x2c')][_0x86a5('0x3b')]){_0xcbf54e[_0x86a5('0x3c')]=[{'all':!![]}];}return db[_0x86a5('0x27')][_0x86a5('0x3d')](_0xcbf54e);})[_0x86a5('0x21')](function(_0x4d4cb3){_0xd3aee9[_0x86a5('0x3e')]=_0x4d4cb3;return _0xd3aee9;})[_0x86a5('0x21')](respondWithFilteredResult(_0x1568b7,_0xcbf54e))[_0x86a5('0x3f')](handleError(_0x1568b7,null));};exports[_0x86a5('0x40')]=function(_0x3f47ea,_0x59b9dd){var _0x27eb73={'raw':!![],'where':{'id':_0x3f47ea[_0x86a5('0x41')]['id']}},_0x48bba1={};_0x48bba1[_0x86a5('0x2a')]=_[_0x86a5('0x2d')](db[_0x86a5('0x27')][_0x86a5('0x42')]);_0x48bba1['query']=_[_0x86a5('0x2d')](_0x3f47ea[_0x86a5('0x2c')]);_0x48bba1['filters']=_[_0x86a5('0x2f')](_0x48bba1[_0x86a5('0x2a')],_0x48bba1[_0x86a5('0x2c')]);_0x27eb73[_0x86a5('0x30')]=_[_0x86a5('0x2f')](_0x48bba1[_0x86a5('0x2a')],qs[_0x86a5('0x31')](_0x3f47ea[_0x86a5('0x2c')][_0x86a5('0x31')]));_0x27eb73[_0x86a5('0x30')]=_0x27eb73[_0x86a5('0x30')]['length']?_0x27eb73['attributes']:_0x48bba1['model'];if(_0x3f47ea[_0x86a5('0x2c')][_0x86a5('0x3b')]){_0x27eb73[_0x86a5('0x3c')]=[{'all':!![]}];}_0x27eb73=_[_0x86a5('0x38')]({},_0x27eb73,_0x3f47ea[_0x86a5('0x43')]);return db[_0x86a5('0x27')]['find'](_0x27eb73)[_0x86a5('0x21')](handleEntityNotFound(_0x59b9dd,null))[_0x86a5('0x21')](respondWithResult(_0x59b9dd,null))['catch'](handleError(_0x59b9dd,null));};exports[_0x86a5('0x44')]=function(_0x3e1e16,_0x18aeab){return db[_0x86a5('0x27')][_0x86a5('0x44')](_0x3e1e16[_0x86a5('0x45')],{})['then'](respondWithResult(_0x18aeab,0xc9))[_0x86a5('0x3f')](handleError(_0x18aeab,null));};exports[_0x86a5('0x46')]=function(_0x1ed787,_0x11cef4){if(_0x1ed787[_0x86a5('0x45')]['id']){delete _0x1ed787[_0x86a5('0x45')]['id'];}return db[_0x86a5('0x27')]['find']({'where':{'id':_0x1ed787['params']['id']}})[_0x86a5('0x21')](handleEntityNotFound(_0x11cef4,null))['then'](saveUpdates(_0x1ed787['body'],null))[_0x86a5('0x21')](respondWithResult(_0x11cef4,null))[_0x86a5('0x3f')](handleError(_0x11cef4,null));};exports[_0x86a5('0x47')]=function(_0x11390a,_0x40df9c){return db['ChatQueueReport']['find']({'where':{'id':_0x11390a[_0x86a5('0x41')]['id']}})[_0x86a5('0x21')](handleEntityNotFound(_0x40df9c,null))[_0x86a5('0x21')](removeEntity(_0x40df9c,null))[_0x86a5('0x3f')](handleError(_0x40df9c,null));};exports['describe']=function(_0x2be006,_0xd526dd){return db[_0x86a5('0x27')][_0x86a5('0x48')]()[_0x86a5('0x21')](respondWithResult(_0xd526dd,null))[_0x86a5('0x3f')](handleError(_0xd526dd,null));};
\ No newline at end of file
index 4fdcd75..bf8123c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x12946c,_0x4beef9){var _0x3b25b0=function(_0x5b0872){while(--_0x5b0872){_0x12946c['push'](_0x12946c['shift']());}};_0x3b25b0(++_0x4beef9);}(_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('./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
+var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0x49bfb8,_0x5b6e2b){var _0x1be0b7=function(_0x3df70f){while(--_0x3df70f){_0x49bfb8['push'](_0x49bfb8['shift']());}};_0x1be0b7(++_0x5b6e2b);}(_0xb10b,0x12a));var _0xbb10=function(_0x2e1095,_0x3a7d94){_0x2e1095=_0x2e1095-0x0;var _0x3b2455=_0xb10b[_0x2e1095];return _0x3b2455;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b5fd66a..f3e642d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9813=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','create','body','options','raw','CreateChatQueueReport','ChatQueueReport','update','attributes','limit','UpdateChatQueueReport','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0xfd4695,_0x44cb97){var _0x5a6582=function(_0x3078ae){while(--_0x3078ae){_0xfd4695['push'](_0xfd4695['shift']());}};_0x5a6582(++_0x44cb97);}(_0x9813,0x112));var _0x3981=function(_0x490747,_0x2d7d50){_0x490747=_0x490747-0x0;var _0x13dbb4=_0x9813[_0x490747];return _0x13dbb4;};'use strict';var _=require(_0x3981('0x0'));var util=require(_0x3981('0x1'));var moment=require(_0x3981('0x2'));var BPromise=require(_0x3981('0x3'));var rs=require(_0x3981('0x4'));var fs=require('fs');var Redis=require(_0x3981('0x5'));var db=require(_0x3981('0x6'))['db'];var utils=require(_0x3981('0x7'));var logger=require('../../config/logger')(_0x3981('0x8'));var config=require(_0x3981('0x9'));var jayson=require(_0x3981('0xa'));var client=jayson[_0x3981('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x308326,_0x51899b,_0x2f1280){return new BPromise(function(_0x3042af,_0x108d17){return client[_0x3981('0xc')](_0x308326,_0x2f1280)[_0x3981('0xd')](function(_0x1588b2){logger[_0x3981('0xe')](_0x3981('0xf'),_0x51899b,_0x3981('0x10'));logger[_0x3981('0x11')](_0x3981('0x12'),_0x51899b,'request\x20sent',JSON[_0x3981('0x13')](_0x1588b2));if(_0x1588b2['error']){if(_0x1588b2[_0x3981('0x14')][_0x3981('0x15')]===0x1f4){logger[_0x3981('0x14')](_0x3981('0xf'),_0x51899b,_0x1588b2['error'][_0x3981('0x16')]);return _0x108d17(_0x1588b2[_0x3981('0x14')][_0x3981('0x16')]);}logger[_0x3981('0x14')]('ChatQueueReport,\x20%s,\x20%s',_0x51899b,_0x1588b2[_0x3981('0x14')][_0x3981('0x16')]);return _0x3042af(_0x1588b2['error'][_0x3981('0x16')]);}else{logger[_0x3981('0xe')](_0x3981('0xf'),_0x51899b,_0x3981('0x10'));_0x3042af(_0x1588b2[_0x3981('0x17')][_0x3981('0x16')]);}})[_0x3981('0x18')](function(_0x110874){logger['error'](_0x3981('0xf'),_0x51899b,_0x110874);_0x108d17(_0x110874);});});}exports['CreateChatQueueReport']=function(_0x51cb8a){var _0x4935f1=this;return new Promise(function(_0x2c7395,_0x5163ab){return db['ChatQueueReport'][_0x3981('0x19')](_0x51cb8a[_0x3981('0x1a')],{'raw':_0x51cb8a['options']?_0x51cb8a[_0x3981('0x1b')][_0x3981('0x1c')]===undefined?!![]:![]:!![]})[_0x3981('0xd')](function(_0x4fd294){logger[_0x3981('0xe')](_0x3981('0x1d'),_0x51cb8a);logger[_0x3981('0x11')]('CreateChatQueueReport',_0x51cb8a,JSON[_0x3981('0x13')](_0x4fd294));_0x2c7395(_0x4fd294);})[_0x3981('0x18')](function(_0x3bd0f2){logger['error']('CreateChatQueueReport',_0x3bd0f2[_0x3981('0x16')],_0x51cb8a);_0x5163ab(_0x4935f1[_0x3981('0x14')](0x1f4,_0x3bd0f2[_0x3981('0x16')]));});});};exports['UpdateChatQueueReport']=function(_0x4e6362){var _0x5e0707=this;return new Promise(function(_0xfb28f5,_0x462f5){return db[_0x3981('0x1e')][_0x3981('0x1f')](_0x4e6362['body'],{'raw':_0x4e6362[_0x3981('0x1b')]?_0x4e6362['options'][_0x3981('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e6362['options']?_0x4e6362[_0x3981('0x1b')]['where']||null:null,'attributes':_0x4e6362[_0x3981('0x1b')]?_0x4e6362[_0x3981('0x1b')][_0x3981('0x20')]||null:null,'limit':_0x4e6362[_0x3981('0x1b')]?_0x4e6362['options'][_0x3981('0x21')]||null:null})['then'](function(_0x428dbb){logger[_0x3981('0xe')](_0x3981('0x22'),_0x4e6362);logger[_0x3981('0x11')](_0x3981('0x22'),_0x4e6362,JSON[_0x3981('0x13')](_0x428dbb));_0xfb28f5(_0x428dbb);})[_0x3981('0x18')](function(_0x5adc0c){logger['error'](_0x3981('0x22'),_0x5adc0c[_0x3981('0x16')],_0x4e6362);_0x462f5(_0x5e0707[_0x3981('0x14')](0x1f4,_0x5adc0c[_0x3981('0x16')]));});});};
\ No newline at end of file
+var _0xf40e=['moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message','catch','CreateChatQueueReport','options','raw','then','debug','UpdateChatQueueReport','ChatQueueReport','update','where','attributes','lodash','util'];(function(_0x25f103,_0x427174){var _0x5eb931=function(_0x19aae9){while(--_0x19aae9){_0x25f103['push'](_0x25f103['shift']());}};_0x5eb931(++_0x427174);}(_0xf40e,0x12a));var _0xef40=function(_0x323efc,_0x3270ac){_0x323efc=_0x323efc-0x0;var _0x898298=_0xf40e[_0x323efc];return _0x898298;};'use strict';var _=require(_0xef40('0x0'));var util=require(_0xef40('0x1'));var moment=require(_0xef40('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef40('0x3'));var db=require(_0xef40('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xef40('0x5'))(_0xef40('0x6'));var config=require(_0xef40('0x7'));var jayson=require(_0xef40('0x8'));var client=jayson[_0xef40('0x9')][_0xef40('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23e98d,_0x5cc8e4,_0x311679){return new BPromise(function(_0x625a12,_0x5d89fd){return client['request'](_0x23e98d,_0x311679)['then'](function(_0x1374bb){logger[_0xef40('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0x5cc8e4,_0xef40('0xc'));logger['debug'](_0xef40('0xd'),_0x5cc8e4,_0xef40('0xc'),JSON[_0xef40('0xe')](_0x1374bb));if(_0x1374bb[_0xef40('0xf')]){if(_0x1374bb['error'][_0xef40('0x10')]===0x1f4){logger[_0xef40('0xf')](_0xef40('0x11'),_0x5cc8e4,_0x1374bb['error'][_0xef40('0x12')]);return _0x5d89fd(_0x1374bb[_0xef40('0xf')][_0xef40('0x12')]);}logger['error'](_0xef40('0x11'),_0x5cc8e4,_0x1374bb[_0xef40('0xf')]['message']);return _0x625a12(_0x1374bb[_0xef40('0xf')][_0xef40('0x12')]);}else{logger[_0xef40('0xb')]('ChatQueueReport,\x20%s,\x20%s',_0x5cc8e4,_0xef40('0xc'));_0x625a12(_0x1374bb['result'][_0xef40('0x12')]);}})[_0xef40('0x13')](function(_0x288200){logger[_0xef40('0xf')](_0xef40('0x11'),_0x5cc8e4,_0x288200);_0x5d89fd(_0x288200);});});}exports[_0xef40('0x14')]=function(_0x2a5153){var _0x2b2557=this;return new Promise(function(_0x4b026e,_0x1c3014){return db['ChatQueueReport']['create'](_0x2a5153['body'],{'raw':_0x2a5153['options']?_0x2a5153[_0xef40('0x15')][_0xef40('0x16')]===undefined?!![]:![]:!![]})[_0xef40('0x17')](function(_0x38bf2a){logger['info'](_0xef40('0x14'),_0x2a5153);logger[_0xef40('0x18')](_0xef40('0x14'),_0x2a5153,JSON['stringify'](_0x38bf2a));_0x4b026e(_0x38bf2a);})[_0xef40('0x13')](function(_0x1009c6){logger[_0xef40('0xf')](_0xef40('0x14'),_0x1009c6[_0xef40('0x12')],_0x2a5153);_0x1c3014(_0x2b2557['error'](0x1f4,_0x1009c6[_0xef40('0x12')]));});});};exports[_0xef40('0x19')]=function(_0x2d6e23){var _0x5b51a3=this;return new Promise(function(_0x22dd34,_0x511e19){return db[_0xef40('0x1a')][_0xef40('0x1b')](_0x2d6e23['body'],{'raw':_0x2d6e23[_0xef40('0x15')]?_0x2d6e23['options'][_0xef40('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d6e23[_0xef40('0x15')]?_0x2d6e23[_0xef40('0x15')][_0xef40('0x1c')]||null:null,'attributes':_0x2d6e23['options']?_0x2d6e23[_0xef40('0x15')][_0xef40('0x1d')]||null:null,'limit':_0x2d6e23[_0xef40('0x15')]?_0x2d6e23[_0xef40('0x15')]['limit']||null:null})[_0xef40('0x17')](function(_0x434fb6){logger[_0xef40('0xb')]('UpdateChatQueueReport',_0x2d6e23);logger['debug'](_0xef40('0x19'),_0x2d6e23,JSON['stringify'](_0x434fb6));_0x22dd34(_0x434fb6);})[_0xef40('0x13')](function(_0x12b938){logger[_0xef40('0xf')](_0xef40('0x19'),_0x12b938['message'],_0x2d6e23);_0x511e19(_0x5b51a3[_0xef40('0xf')](0x1f4,_0x12b938[_0xef40('0x12')]));});});};
\ No newline at end of file
index f149ea9..930cc87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0163=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','/describe','/:id','show','post','create','put','delete','destroy','util','path','connect-timeout','express','Router'];(function(_0xb833b1,_0x1c3d3f){var _0x1ab87a=function(_0x1c9f6c){while(--_0x1c9f6c){_0xb833b1['push'](_0xb833b1['shift']());}};_0x1ab87a(++_0x1c3d3f);}(_0x0163,0xc3));var _0x3016=function(_0x5b3c90,_0x45b28c){_0x5b3c90=_0x5b3c90-0x0;var _0xd1ae5e=_0x0163[_0x5b3c90];return _0xd1ae5e;};'use strict';var multer=require('multer');var util=require(_0x3016('0x0'));var path=require(_0x3016('0x1'));var timeout=require(_0x3016('0x2'));var express=require(_0x3016('0x3'));var router=express[_0x3016('0x4')]();var fs_extra=require(_0x3016('0x5'));var auth=require(_0x3016('0x6'));var interaction=require(_0x3016('0x7'));var config=require(_0x3016('0x8'));var controller=require(_0x3016('0x9'));router[_0x3016('0xa')]('/',auth[_0x3016('0xb')](),controller['index']);router['get'](_0x3016('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x3016('0xa')](_0x3016('0xd'),auth[_0x3016('0xb')](),controller[_0x3016('0xe')]);router[_0x3016('0xf')]('/',auth[_0x3016('0xb')](),controller[_0x3016('0x10')]);router[_0x3016('0x11')](_0x3016('0xd'),auth[_0x3016('0xb')](),controller['update']);router[_0x3016('0x12')](_0x3016('0xd'),auth['isAuthenticated'](),controller[_0x3016('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x45f5=['index','/describe','describe','show','post','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x136cce,_0x23d6f7){var _0x22cd16=function(_0x2522d8){while(--_0x2522d8){_0x136cce['push'](_0x136cce['shift']());}};_0x22cd16(++_0x23d6f7);}(_0x45f5,0x15e));var _0x545f=function(_0x4191af,_0x5783da){_0x4191af=_0x4191af-0x0;var _0x27bebf=_0x45f5[_0x4191af];return _0x27bebf;};'use strict';var multer=require(_0x545f('0x0'));var util=require(_0x545f('0x1'));var path=require(_0x545f('0x2'));var timeout=require(_0x545f('0x3'));var express=require('express');var router=express[_0x545f('0x4')]();var fs_extra=require(_0x545f('0x5'));var auth=require(_0x545f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x545f('0x7'));var controller=require('./chatQueueReport.controller');router[_0x545f('0x8')]('/',auth[_0x545f('0x9')](),controller[_0x545f('0xa')]);router[_0x545f('0x8')](_0x545f('0xb'),auth[_0x545f('0x9')](),controller[_0x545f('0xc')]);router[_0x545f('0x8')]('/:id',auth[_0x545f('0x9')](),controller[_0x545f('0xd')]);router[_0x545f('0xe')]('/',auth[_0x545f('0x9')](),controller['create']);router[_0x545f('0xf')](_0x545f('0x10'),auth['isAuthenticated'](),controller[_0x545f('0x11')]);router[_0x545f('0x12')](_0x545f('0x10'),auth[_0x545f('0x9')](),controller['destroy']);module[_0x545f('0x13')]=router;
\ No newline at end of file
index 19c50c6..98b842c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x807de4,_0x469b42){var _0x3224f3=function(_0x15ba3d){while(--_0x15ba3d){_0x807de4['push'](_0x807de4['shift']());}};_0x3224f3(++_0x469b42);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4695ba,_0x5a7f2a){_0x4695ba=_0x4695ba-0x0;var _0x524b7d=_0xcb91[_0x4695ba];return _0x524b7d;};'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 _0x70e0=['NOW','moment','sequelize','exports','account','agent','queue'];(function(_0x2c149b,_0x3ede5b){var _0x632205=function(_0x5a1968){while(--_0x5a1968){_0x2c149b['push'](_0x2c149b['shift']());}};_0x632205(++_0x3ede5b);}(_0x70e0,0x17b));var _0x070e=function(_0x4e5ba1,_0x2aec01){_0x4e5ba1=_0x4e5ba1-0x0;var _0x69246d=_0x70e0[_0x4e5ba1];return _0x69246d;};'use strict';var moment=require(_0x070e('0x0'));var Sequelize=require(_0x070e('0x1'));module[_0x070e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5')),'allowNull':![],'defaultValue':_0x070e('0x5')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x070e('0x6')]}};
\ No newline at end of file
index a488fc8..f7f29d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac97=['keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','options','find','create','body','destroy','params','describe','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','limit','count','reject','save','then','end','sendStatus','stack','name','ChatTransferReport','rawAttributes','fieldName','type','key','model','map','query'];(function(_0x58252d,_0x2070b3){var _0x55a98c=function(_0x4a2a1e){while(--_0x4a2a1e){_0x58252d['push'](_0x58252d['shift']());}};_0x55a98c(++_0x2070b3);}(_0xac97,0xf3));var _0x7ac9=function(_0x42f82f,_0x46e11e){_0x42f82f=_0x42f82f-0x0;var _0x3e2284=_0xac97[_0x42f82f];return _0x3e2284;};'use strict';var emlformat=require(_0x7ac9('0x0'));var rimraf=require(_0x7ac9('0x1'));var zipdir=require(_0x7ac9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7ac9('0x3'));var BPromise=require(_0x7ac9('0x4'));var Mustache=require('mustache');var util=require(_0x7ac9('0x5'));var path=require(_0x7ac9('0x6'));var sox=require(_0x7ac9('0x7'));var csv=require(_0x7ac9('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7ac9('0x9'));var _=require(_0x7ac9('0xa'));var squel=require(_0x7ac9('0xb'));var crypto=require(_0x7ac9('0xc'));var jsforce=require(_0x7ac9('0xd'));var deskjs=require(_0x7ac9('0xe'));var toCsv=require(_0x7ac9('0x8'));var querystring=require(_0x7ac9('0xf'));var Papa=require(_0x7ac9('0x10'));var Redis=require(_0x7ac9('0x11'));var authService=require(_0x7ac9('0x12'));var qs=require(_0x7ac9('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7ac9('0x14'));var utils=require(_0x7ac9('0x15'));var config=require(_0x7ac9('0x16'));var licenseUtil=require(_0x7ac9('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x480f9f,_0x2a00a0){_0x2a00a0=_0x2a00a0||0xcc;return function(_0x232e4f){if(_0x232e4f){return _0x480f9f['sendStatus'](_0x2a00a0);}return _0x480f9f[_0x7ac9('0x18')](_0x2a00a0)['end']();};}function respondWithResult(_0x43a09f,_0x497fee){_0x497fee=_0x497fee||0xc8;return function(_0x21a79f){if(_0x21a79f){return _0x43a09f['status'](_0x497fee)[_0x7ac9('0x19')](_0x21a79f);}};}function respondWithFilteredResult(_0x4d0e5b,_0xb3a121){return function(_0x2bec9b){if(_0x2bec9b){var _0x2e5645=typeof _0xb3a121[_0x7ac9('0x1a')]===_0x7ac9('0x1b')&&typeof _0xb3a121[_0x7ac9('0x1c')]===_0x7ac9('0x1b');var _0x56b0e9=_0x2bec9b['count'];var _0x4c7870=_0x2e5645?0x0:_0xb3a121[_0x7ac9('0x1a')];var _0x13f601=_0x2e5645?_0x2bec9b[_0x7ac9('0x1d')]:_0xb3a121[_0x7ac9('0x1a')]+_0xb3a121[_0x7ac9('0x1c')];var _0x2a34cc;if(_0x13f601>=_0x56b0e9){_0x13f601=_0x56b0e9;_0x2a34cc=0xc8;}else{_0x2a34cc=0xce;}_0x4d0e5b['status'](_0x2a34cc);return _0x4d0e5b['set']('Content-Range',_0x4c7870+'-'+_0x13f601+'/'+_0x56b0e9)['json'](_0x2bec9b);}return null;};}function patchUpdates(_0x30f0c8){return function(_0x356369){try{jsonpatch['apply'](_0x356369,_0x30f0c8,!![]);}catch(_0x441650){return BPromise[_0x7ac9('0x1e')](_0x441650);}return _0x356369[_0x7ac9('0x1f')]();};}function saveUpdates(_0x1f3ad2,_0x16cd55){return function(_0x399a8d){if(_0x399a8d){return _0x399a8d['update'](_0x1f3ad2)[_0x7ac9('0x20')](function(_0x14cca5){return _0x14cca5;});}return null;};}function removeEntity(_0x47255f,_0x1bdf3d){return function(_0x5a7bf6){if(_0x5a7bf6){return _0x5a7bf6['destroy']()[_0x7ac9('0x20')](function(){_0x47255f['status'](0xcc)[_0x7ac9('0x21')]();});}};}function handleEntityNotFound(_0x571b0b,_0x1f3725){return function(_0xdcb833){if(!_0xdcb833){_0x571b0b[_0x7ac9('0x22')](0x194);}return _0xdcb833;};}function handleError(_0x560ee7,_0x49b84f){_0x49b84f=_0x49b84f||0x1f4;return function(_0x44e930){logger['error'](_0x44e930[_0x7ac9('0x23')]);if(_0x44e930[_0x7ac9('0x24')]){delete _0x44e930[_0x7ac9('0x24')];}_0x560ee7[_0x7ac9('0x18')](_0x49b84f)['send'](_0x44e930);};}exports['index']=function(_0x228804,_0x36259d){var _0x8dff28={},_0x337739={},_0xffff6e={'count':0x0,'rows':[]};var _0x3f9052=_['map'](db[_0x7ac9('0x25')][_0x7ac9('0x26')],function(_0x3a5d0a){return{'name':_0x3a5d0a[_0x7ac9('0x27')],'type':_0x3a5d0a[_0x7ac9('0x28')][_0x7ac9('0x29')]};});_0x337739[_0x7ac9('0x2a')]=_[_0x7ac9('0x2b')](_0x3f9052,_0x7ac9('0x24'));_0x337739[_0x7ac9('0x2c')]=_[_0x7ac9('0x2d')](_0x228804[_0x7ac9('0x2c')]);_0x337739[_0x7ac9('0x2e')]=_[_0x7ac9('0x2f')](_0x337739[_0x7ac9('0x2a')],_0x337739[_0x7ac9('0x2c')]);_0x8dff28['attributes']=_['intersection'](_0x337739[_0x7ac9('0x2a')],qs[_0x7ac9('0x30')](_0x228804['query'][_0x7ac9('0x30')]));_0x8dff28[_0x7ac9('0x31')]=_0x8dff28[_0x7ac9('0x31')][_0x7ac9('0x32')]?_0x8dff28[_0x7ac9('0x31')]:_0x337739['model'];if(!_0x228804[_0x7ac9('0x2c')][_0x7ac9('0x33')](_0x7ac9('0x34'))){_0x8dff28['limit']=qs[_0x7ac9('0x1c')](_0x228804['query'][_0x7ac9('0x1c')]);_0x8dff28[_0x7ac9('0x1a')]=qs[_0x7ac9('0x1a')](_0x228804[_0x7ac9('0x2c')][_0x7ac9('0x1a')]);}_0x8dff28[_0x7ac9('0x35')]=qs['sort'](_0x228804[_0x7ac9('0x2c')][_0x7ac9('0x36')]);_0x8dff28[_0x7ac9('0x37')]=qs[_0x7ac9('0x2e')](_[_0x7ac9('0x38')](_0x228804['query'],_0x337739['filters']),_0x3f9052);if(_0x228804[_0x7ac9('0x2c')][_0x7ac9('0x39')]){_0x8dff28['where']=_[_0x7ac9('0x3a')](_0x8dff28[_0x7ac9('0x37')],{'$or':_[_0x7ac9('0x2b')](_0x3f9052,function(_0x2d0ce4){if(_0x2d0ce4[_0x7ac9('0x28')]!==_0x7ac9('0x3b')){var _0x5e7632={};_0x5e7632[_0x2d0ce4[_0x7ac9('0x24')]]={'$like':'%'+_0x228804[_0x7ac9('0x2c')][_0x7ac9('0x39')]+'%'};return _0x5e7632;}})});}_0x8dff28=_[_0x7ac9('0x3a')]({},_0x8dff28,_0x228804['options']);var _0x39fb38={'where':_0x8dff28[_0x7ac9('0x37')]};return db[_0x7ac9('0x25')][_0x7ac9('0x1d')](_0x39fb38)[_0x7ac9('0x20')](function(_0x599710){_0xffff6e[_0x7ac9('0x1d')]=_0x599710;if(_0x228804[_0x7ac9('0x2c')][_0x7ac9('0x3c')]){_0x8dff28[_0x7ac9('0x3d')]=[{'all':!![]}];}return db['ChatTransferReport'][_0x7ac9('0x3e')](_0x8dff28);})[_0x7ac9('0x20')](function(_0x553a99){_0xffff6e[_0x7ac9('0x3f')]=_0x553a99;return _0xffff6e;})['then'](respondWithFilteredResult(_0x36259d,_0x8dff28))[_0x7ac9('0x40')](handleError(_0x36259d,null));};exports['show']=function(_0x27f54e,_0x17b37d){var _0x326ce0={'raw':!![],'where':{'id':_0x27f54e['params']['id']}},_0x3be601={};_0x3be601[_0x7ac9('0x2a')]=_[_0x7ac9('0x2d')](db['ChatTransferReport']['rawAttributes']);_0x3be601[_0x7ac9('0x2c')]=_['keys'](_0x27f54e[_0x7ac9('0x2c')]);_0x3be601['filters']=_[_0x7ac9('0x2f')](_0x3be601[_0x7ac9('0x2a')],_0x3be601[_0x7ac9('0x2c')]);_0x326ce0[_0x7ac9('0x31')]=_[_0x7ac9('0x2f')](_0x3be601[_0x7ac9('0x2a')],qs['fields'](_0x27f54e['query'][_0x7ac9('0x30')]));_0x326ce0[_0x7ac9('0x31')]=_0x326ce0[_0x7ac9('0x31')]['length']?_0x326ce0['attributes']:_0x3be601[_0x7ac9('0x2a')];if(_0x27f54e[_0x7ac9('0x2c')][_0x7ac9('0x3c')]){_0x326ce0[_0x7ac9('0x3d')]=[{'all':!![]}];}_0x326ce0=_[_0x7ac9('0x3a')]({},_0x326ce0,_0x27f54e[_0x7ac9('0x41')]);return db[_0x7ac9('0x25')][_0x7ac9('0x42')](_0x326ce0)[_0x7ac9('0x20')](handleEntityNotFound(_0x17b37d,null))['then'](respondWithResult(_0x17b37d,null))['catch'](handleError(_0x17b37d,null));};exports[_0x7ac9('0x43')]=function(_0x1cec58,_0x300c0d){return db[_0x7ac9('0x25')][_0x7ac9('0x43')](_0x1cec58[_0x7ac9('0x44')],{})[_0x7ac9('0x20')](respondWithResult(_0x300c0d,0xc9))['catch'](handleError(_0x300c0d,null));};exports['update']=function(_0x1a8208,_0x9497c8){if(_0x1a8208['body']['id']){delete _0x1a8208[_0x7ac9('0x44')]['id'];}return db['ChatTransferReport'][_0x7ac9('0x42')]({'where':{'id':_0x1a8208['params']['id']}})[_0x7ac9('0x20')](handleEntityNotFound(_0x9497c8,null))[_0x7ac9('0x20')](saveUpdates(_0x1a8208['body'],null))['then'](respondWithResult(_0x9497c8,null))['catch'](handleError(_0x9497c8,null));};exports[_0x7ac9('0x45')]=function(_0x5dc02e,_0x1ffc1d){return db[_0x7ac9('0x25')]['find']({'where':{'id':_0x5dc02e[_0x7ac9('0x46')]['id']}})[_0x7ac9('0x20')](handleEntityNotFound(_0x1ffc1d,null))[_0x7ac9('0x20')](removeEntity(_0x1ffc1d,null))[_0x7ac9('0x40')](handleError(_0x1ffc1d,null));};exports[_0x7ac9('0x47')]=function(_0x59b270,_0x323cea){return db[_0x7ac9('0x25')]['describe']()[_0x7ac9('0x20')](respondWithResult(_0x323cea,null))['catch'](handleError(_0x323cea,null));};
\ No newline at end of file
+var _0xfda7=['../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','fields','attributes','length','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','ChatTransferReport','findAll','rows','catch','show','params','includeAll','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger'];(function(_0x109481,_0x568f17){var _0x14efe0=function(_0x6f1885){while(--_0x6f1885){_0x109481['push'](_0x109481['shift']());}};_0x14efe0(++_0x568f17);}(_0xfda7,0x1d1));var _0x7fda=function(_0x164ba0,_0x553e17){_0x164ba0=_0x164ba0-0x0;var _0x10ad13=_0xfda7[_0x164ba0];return _0x10ad13;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7fda('0x0'));var zipdir=require(_0x7fda('0x1'));var jsonpatch=require(_0x7fda('0x2'));var rp=require(_0x7fda('0x3'));var moment=require('moment');var BPromise=require(_0x7fda('0x4'));var Mustache=require('mustache');var util=require(_0x7fda('0x5'));var path=require(_0x7fda('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7fda('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7fda('0x8'));var squel=require(_0x7fda('0x9'));var crypto=require(_0x7fda('0xa'));var jsforce=require(_0x7fda('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x7fda('0xc'));var querystring=require('querystring');var Papa=require(_0x7fda('0xd'));var Redis=require('ioredis');var authService=require(_0x7fda('0xe'));var qs=require(_0x7fda('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7fda('0x10'));var logger=require(_0x7fda('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x7fda('0x12'));var licenseUtil=require(_0x7fda('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1348d7,_0x313751){_0x313751=_0x313751||0xcc;return function(_0xac5fe2){if(_0xac5fe2){return _0x1348d7[_0x7fda('0x14')](_0x313751);}return _0x1348d7['status'](_0x313751)['end']();};}function respondWithResult(_0x535271,_0x15cad4){_0x15cad4=_0x15cad4||0xc8;return function(_0x25c2c7){if(_0x25c2c7){return _0x535271[_0x7fda('0x15')](_0x15cad4)[_0x7fda('0x16')](_0x25c2c7);}};}function respondWithFilteredResult(_0x59f88c,_0x58ea82){return function(_0x5a7030){if(_0x5a7030){var _0x44fcc7=typeof _0x58ea82[_0x7fda('0x17')]==='undefined'&&typeof _0x58ea82[_0x7fda('0x18')]===_0x7fda('0x19');var _0x439696=_0x5a7030[_0x7fda('0x1a')];var _0x46a9f4=_0x44fcc7?0x0:_0x58ea82[_0x7fda('0x17')];var _0x5393e1=_0x44fcc7?_0x5a7030[_0x7fda('0x1a')]:_0x58ea82[_0x7fda('0x17')]+_0x58ea82[_0x7fda('0x18')];var _0x10f101;if(_0x5393e1>=_0x439696){_0x5393e1=_0x439696;_0x10f101=0xc8;}else{_0x10f101=0xce;}_0x59f88c[_0x7fda('0x15')](_0x10f101);return _0x59f88c['set'](_0x7fda('0x1b'),_0x46a9f4+'-'+_0x5393e1+'/'+_0x439696)['json'](_0x5a7030);}return null;};}function patchUpdates(_0xb535e5){return function(_0x82f029){try{jsonpatch[_0x7fda('0x1c')](_0x82f029,_0xb535e5,!![]);}catch(_0x4b2c4c){return BPromise['reject'](_0x4b2c4c);}return _0x82f029[_0x7fda('0x1d')]();};}function saveUpdates(_0xe66484,_0x39a03e){return function(_0x708bfc){if(_0x708bfc){return _0x708bfc[_0x7fda('0x1e')](_0xe66484)[_0x7fda('0x1f')](function(_0x82b97){return _0x82b97;});}return null;};}function removeEntity(_0xe2d8b2,_0x5957d4){return function(_0x2245b3){if(_0x2245b3){return _0x2245b3[_0x7fda('0x20')]()[_0x7fda('0x1f')](function(){_0xe2d8b2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x43cce9,_0x541761){return function(_0x365f9b){if(!_0x365f9b){_0x43cce9[_0x7fda('0x14')](0x194);}return _0x365f9b;};}function handleError(_0x11ae9c,_0xb85218){_0xb85218=_0xb85218||0x1f4;return function(_0x425a89){logger['error'](_0x425a89[_0x7fda('0x21')]);if(_0x425a89[_0x7fda('0x22')]){delete _0x425a89['name'];}_0x11ae9c[_0x7fda('0x15')](_0xb85218)[_0x7fda('0x23')](_0x425a89);};}exports[_0x7fda('0x24')]=function(_0x181fbd,_0x300f7c){var _0xe23c35={},_0x49db07={},_0x38abff={'count':0x0,'rows':[]};var _0x455656=_[_0x7fda('0x25')](db['ChatTransferReport'][_0x7fda('0x26')],function(_0x12ecc1){return{'name':_0x12ecc1[_0x7fda('0x27')],'type':_0x12ecc1[_0x7fda('0x28')][_0x7fda('0x29')]};});_0x49db07[_0x7fda('0x2a')]=_['map'](_0x455656,_0x7fda('0x22'));_0x49db07['query']=_[_0x7fda('0x2b')](_0x181fbd[_0x7fda('0x2c')]);_0x49db07['filters']=_['intersection'](_0x49db07[_0x7fda('0x2a')],_0x49db07[_0x7fda('0x2c')]);_0xe23c35['attributes']=_[_0x7fda('0x2d')](_0x49db07[_0x7fda('0x2a')],qs[_0x7fda('0x2e')](_0x181fbd['query']['fields']));_0xe23c35[_0x7fda('0x2f')]=_0xe23c35[_0x7fda('0x2f')][_0x7fda('0x30')]?_0xe23c35[_0x7fda('0x2f')]:_0x49db07['model'];if(!_0x181fbd[_0x7fda('0x2c')]['hasOwnProperty']('nolimit')){_0xe23c35[_0x7fda('0x18')]=qs[_0x7fda('0x18')](_0x181fbd['query']['limit']);_0xe23c35[_0x7fda('0x17')]=qs[_0x7fda('0x17')](_0x181fbd['query'][_0x7fda('0x17')]);}_0xe23c35[_0x7fda('0x31')]=qs[_0x7fda('0x32')](_0x181fbd[_0x7fda('0x2c')]['sort']);_0xe23c35[_0x7fda('0x33')]=qs[_0x7fda('0x34')](_[_0x7fda('0x35')](_0x181fbd[_0x7fda('0x2c')],_0x49db07[_0x7fda('0x34')]),_0x455656);if(_0x181fbd['query'][_0x7fda('0x36')]){_0xe23c35[_0x7fda('0x33')]=_[_0x7fda('0x37')](_0xe23c35[_0x7fda('0x33')],{'$or':_[_0x7fda('0x25')](_0x455656,function(_0x2c95dd){if(_0x2c95dd[_0x7fda('0x28')]!==_0x7fda('0x38')){var _0x3eb8e5={};_0x3eb8e5[_0x2c95dd[_0x7fda('0x22')]]={'$like':'%'+_0x181fbd[_0x7fda('0x2c')][_0x7fda('0x36')]+'%'};return _0x3eb8e5;}})});}_0xe23c35=_['merge']({},_0xe23c35,_0x181fbd[_0x7fda('0x39')]);var _0xfdb990={'where':_0xe23c35[_0x7fda('0x33')]};return db[_0x7fda('0x3a')][_0x7fda('0x1a')](_0xfdb990)[_0x7fda('0x1f')](function(_0x2cb3fa){_0x38abff['count']=_0x2cb3fa;if(_0x181fbd[_0x7fda('0x2c')]['includeAll']){_0xe23c35['include']=[{'all':!![]}];}return db[_0x7fda('0x3a')][_0x7fda('0x3b')](_0xe23c35);})[_0x7fda('0x1f')](function(_0xc933ed){_0x38abff[_0x7fda('0x3c')]=_0xc933ed;return _0x38abff;})[_0x7fda('0x1f')](respondWithFilteredResult(_0x300f7c,_0xe23c35))[_0x7fda('0x3d')](handleError(_0x300f7c,null));};exports[_0x7fda('0x3e')]=function(_0x279658,_0x148355){var _0x5e57f1={'raw':!![],'where':{'id':_0x279658[_0x7fda('0x3f')]['id']}},_0x25a20d={};_0x25a20d[_0x7fda('0x2a')]=_[_0x7fda('0x2b')](db['ChatTransferReport'][_0x7fda('0x26')]);_0x25a20d[_0x7fda('0x2c')]=_[_0x7fda('0x2b')](_0x279658[_0x7fda('0x2c')]);_0x25a20d[_0x7fda('0x34')]=_['intersection'](_0x25a20d[_0x7fda('0x2a')],_0x25a20d[_0x7fda('0x2c')]);_0x5e57f1['attributes']=_[_0x7fda('0x2d')](_0x25a20d[_0x7fda('0x2a')],qs[_0x7fda('0x2e')](_0x279658[_0x7fda('0x2c')][_0x7fda('0x2e')]));_0x5e57f1[_0x7fda('0x2f')]=_0x5e57f1[_0x7fda('0x2f')][_0x7fda('0x30')]?_0x5e57f1[_0x7fda('0x2f')]:_0x25a20d['model'];if(_0x279658[_0x7fda('0x2c')][_0x7fda('0x40')]){_0x5e57f1['include']=[{'all':!![]}];}_0x5e57f1=_[_0x7fda('0x37')]({},_0x5e57f1,_0x279658[_0x7fda('0x39')]);return db[_0x7fda('0x3a')][_0x7fda('0x41')](_0x5e57f1)[_0x7fda('0x1f')](handleEntityNotFound(_0x148355,null))[_0x7fda('0x1f')](respondWithResult(_0x148355,null))['catch'](handleError(_0x148355,null));};exports[_0x7fda('0x42')]=function(_0xb81dc3,_0x32f023){return db['ChatTransferReport'][_0x7fda('0x42')](_0xb81dc3['body'],{})[_0x7fda('0x1f')](respondWithResult(_0x32f023,0xc9))[_0x7fda('0x3d')](handleError(_0x32f023,null));};exports[_0x7fda('0x1e')]=function(_0x5e1a2a,_0x2b39b7){if(_0x5e1a2a['body']['id']){delete _0x5e1a2a[_0x7fda('0x43')]['id'];}return db[_0x7fda('0x3a')][_0x7fda('0x41')]({'where':{'id':_0x5e1a2a['params']['id']}})[_0x7fda('0x1f')](handleEntityNotFound(_0x2b39b7,null))[_0x7fda('0x1f')](saveUpdates(_0x5e1a2a[_0x7fda('0x43')],null))[_0x7fda('0x1f')](respondWithResult(_0x2b39b7,null))[_0x7fda('0x3d')](handleError(_0x2b39b7,null));};exports[_0x7fda('0x20')]=function(_0x1b456d,_0x20e347){return db[_0x7fda('0x3a')]['find']({'where':{'id':_0x1b456d[_0x7fda('0x3f')]['id']}})[_0x7fda('0x1f')](handleEntityNotFound(_0x20e347,null))[_0x7fda('0x1f')](removeEntity(_0x20e347,null))[_0x7fda('0x3d')](handleError(_0x20e347,null));};exports['describe']=function(_0x1c4218,_0x3298ad){return db[_0x7fda('0x3a')][_0x7fda('0x44')]()[_0x7fda('0x1f')](respondWithResult(_0x3298ad,null))[_0x7fda('0x3d')](handleError(_0x3298ad,null));};
\ No newline at end of file
index 3d8e0c9..489e6d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c1=['request-promise','path','rimraf','../../config/environment','./chatTransferReport.attributes','exports','ChatTransferReport','uniqueid','lodash','api','bluebird'];(function(_0x5be1a9,_0x68854){var _0x11f381=function(_0x32543f){while(--_0x32543f){_0x5be1a9['push'](_0x5be1a9['shift']());}};_0x11f381(++_0x68854);}(_0x60c1,0x11b));var _0x160c=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x60c1[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x160c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x160c('0x1'));var moment=require('moment');var BPromise=require(_0x160c('0x2'));var rp=require(_0x160c('0x3'));var fs=require('fs');var path=require(_0x160c('0x4'));var rimraf=require(_0x160c('0x5'));var config=require(_0x160c('0x6'));var attributes=require(_0x160c('0x7'));module[_0x160c('0x8')]=function(_0x4178af,_0x5113bc){return _0x4178af['define'](_0x160c('0x9'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x160c('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3628=['report_chat_transfer','uniqueid','lodash','util','api','request-promise','rimraf','../../config/environment','ChatTransferReport'];(function(_0x5838bd,_0x53cf53){var _0x4a03a5=function(_0x58f5f7){while(--_0x58f5f7){_0x5838bd['push'](_0x5838bd['shift']());}};_0x4a03a5(++_0x53cf53);}(_0x3628,0x107));var _0x8362=function(_0xea6018,_0x4cf082){_0xea6018=_0xea6018-0x0;var _0x57b54d=_0x3628[_0xea6018];return _0x57b54d;};'use strict';var _=require(_0x8362('0x0'));var util=require(_0x8362('0x1'));var logger=require('../../config/logger')(_0x8362('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8362('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8362('0x4'));var config=require(_0x8362('0x5'));var attributes=require('./chatTransferReport.attributes');module['exports']=function(_0x1d8058,_0x503a83){return _0x1d8058['define'](_0x8362('0x6'),attributes,{'tableName':_0x8362('0x7'),'paranoid':![],'indexes':[{'name':_0x8362('0x8'),'fields':[_0x8362('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 65675e1..e2c2d28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f64=['request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s'];(function(_0xf19b15,_0x4f36ca){var _0x112420=function(_0x3e2889){while(--_0x3e2889){_0xf19b15['push'](_0xf19b15['shift']());}};_0x112420(++_0x4f36ca);}(_0x0f64,0x1d5));var _0x40f6=function(_0xa3d7bc,_0x488d4e){_0xa3d7bc=_0xa3d7bc-0x0;var _0x34175d=_0x0f64[_0xa3d7bc];return _0x34175d;};'use strict';var _=require(_0x40f6('0x0'));var util=require(_0x40f6('0x1'));var moment=require(_0x40f6('0x2'));var BPromise=require(_0x40f6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x40f6('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x40f6('0x5'));var logger=require('../../config/logger')(_0x40f6('0x6'));var config=require('../../config/environment');var jayson=require(_0x40f6('0x7'));var client=jayson[_0x40f6('0x8')][_0x40f6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x386784,_0x4db34e,_0x209b0c){return new BPromise(function(_0x22d477,_0xa4a090){return client[_0x40f6('0xa')](_0x386784,_0x209b0c)[_0x40f6('0xb')](function(_0x56206d){logger[_0x40f6('0xc')](_0x40f6('0xd'),_0x4db34e,_0x40f6('0xe'));logger[_0x40f6('0xf')](_0x40f6('0x10'),_0x4db34e,_0x40f6('0xe'),JSON[_0x40f6('0x11')](_0x56206d));if(_0x56206d[_0x40f6('0x12')]){if(_0x56206d['error'][_0x40f6('0x13')]===0x1f4){logger['error'](_0x40f6('0xd'),_0x4db34e,_0x56206d[_0x40f6('0x12')][_0x40f6('0x14')]);return _0xa4a090(_0x56206d['error']['message']);}logger[_0x40f6('0x12')](_0x40f6('0xd'),_0x4db34e,_0x56206d[_0x40f6('0x12')][_0x40f6('0x14')]);return _0x22d477(_0x56206d[_0x40f6('0x12')][_0x40f6('0x14')]);}else{logger[_0x40f6('0xc')](_0x40f6('0xd'),_0x4db34e,_0x40f6('0xe'));_0x22d477(_0x56206d[_0x40f6('0x15')]['message']);}})[_0x40f6('0x16')](function(_0x42f91b){logger[_0x40f6('0x12')](_0x40f6('0xd'),_0x4db34e,_0x42f91b);_0xa4a090(_0x42f91b);});});}
\ No newline at end of file
+var _0x997e=['ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','ChatTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x1c98d2,_0x402fbd){var _0x2d07ff=function(_0x261fd1){while(--_0x261fd1){_0x1c98d2['push'](_0x1c98d2['shift']());}};_0x2d07ff(++_0x402fbd);}(_0x997e,0x1c7));var _0xe997=function(_0x240401,_0x4f248c){_0x240401=_0x240401-0x0;var _0x27c12e=_0x997e[_0x240401];return _0x27c12e;};'use strict';var _=require(_0xe997('0x0'));var util=require(_0xe997('0x1'));var moment=require(_0xe997('0x2'));var BPromise=require(_0xe997('0x3'));var rs=require(_0xe997('0x4'));var fs=require('fs');var Redis=require(_0xe997('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xe997('0x6'))(_0xe997('0x7'));var config=require(_0xe997('0x8'));var jayson=require(_0xe997('0x9'));var client=jayson[_0xe997('0xa')][_0xe997('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x471240,_0x31bc8c,_0x1c124d){return new BPromise(function(_0x22a262,_0xaab9d5){return client[_0xe997('0xc')](_0x471240,_0x1c124d)[_0xe997('0xd')](function(_0x47324a){logger[_0xe997('0xe')](_0xe997('0xf'),_0x31bc8c,'request\x20sent');logger['debug'](_0xe997('0x10'),_0x31bc8c,_0xe997('0x11'),JSON[_0xe997('0x12')](_0x47324a));if(_0x47324a[_0xe997('0x13')]){if(_0x47324a[_0xe997('0x13')][_0xe997('0x14')]===0x1f4){logger[_0xe997('0x13')](_0xe997('0xf'),_0x31bc8c,_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);return _0xaab9d5(_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);}logger['error'](_0xe997('0xf'),_0x31bc8c,_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);return _0x22a262(_0x47324a[_0xe997('0x13')][_0xe997('0x15')]);}else{logger[_0xe997('0xe')](_0xe997('0xf'),_0x31bc8c,_0xe997('0x11'));_0x22a262(_0x47324a['result'][_0xe997('0x15')]);}})[_0xe997('0x16')](function(_0x13e5bf){logger['error'](_0xe997('0xf'),_0x31bc8c,_0x13e5bf);_0xaab9d5(_0x13e5bf);});});}
\ No newline at end of file
index a7df14b..640a163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad52=['isAuthenticated','index','/describe','show','post','put','/:id','update','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get'];(function(_0x178586,_0x37045b){var _0x1764ad=function(_0x4b3b91){while(--_0x4b3b91){_0x178586['push'](_0x178586['shift']());}};_0x1764ad(++_0x37045b);}(_0xad52,0x1e4));var _0x2ad5=function(_0xe714b1,_0x29f3dd){_0xe714b1=_0xe714b1-0x0;var _0x5ea994=_0xad52[_0xe714b1];return _0x5ea994;};'use strict';var multer=require(_0x2ad5('0x0'));var util=require(_0x2ad5('0x1'));var path=require(_0x2ad5('0x2'));var timeout=require(_0x2ad5('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2ad5('0x4'));var auth=require(_0x2ad5('0x5'));var interaction=require(_0x2ad5('0x6'));var config=require(_0x2ad5('0x7'));var controller=require(_0x2ad5('0x8'));router[_0x2ad5('0x9')]('/',auth[_0x2ad5('0xa')](),controller[_0x2ad5('0xb')]);router[_0x2ad5('0x9')](_0x2ad5('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x2ad5('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x2ad5('0xd')]);router[_0x2ad5('0xe')]('/',auth[_0x2ad5('0xa')](),controller['create']);router[_0x2ad5('0xf')](_0x2ad5('0x10'),auth['isAuthenticated'](),controller[_0x2ad5('0x11')]);router['delete'](_0x2ad5('0x10'),auth[_0x2ad5('0xa')](),controller[_0x2ad5('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x213c=['isAuthenticated','index','get','/describe','describe','/:id','show','update','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller'];(function(_0x42b3aa,_0x223f53){var _0x319157=function(_0x4e5c40){while(--_0x4e5c40){_0x42b3aa['push'](_0x42b3aa['shift']());}};_0x319157(++_0x223f53);}(_0x213c,0x1cc));var _0xc213=function(_0x5f0e33,_0x5a688d){_0x5f0e33=_0x5f0e33-0x0;var _0x3cbe2e=_0x213c[_0x5f0e33];return _0x3cbe2e;};'use strict';var multer=require(_0xc213('0x0'));var util=require(_0xc213('0x1'));var path=require('path');var timeout=require(_0xc213('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc213('0x3'));var auth=require(_0xc213('0x4'));var interaction=require(_0xc213('0x5'));var config=require(_0xc213('0x6'));var controller=require(_0xc213('0x7'));router['get']('/',auth[_0xc213('0x8')](),controller[_0xc213('0x9')]);router[_0xc213('0xa')](_0xc213('0xb'),auth['isAuthenticated'](),controller[_0xc213('0xc')]);router['get'](_0xc213('0xd'),auth[_0xc213('0x8')](),controller[_0xc213('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc213('0xd'),auth[_0xc213('0x8')](),controller[_0xc213('0xf')]);router['delete'](_0xc213('0xd'),auth[_0xc213('0x8')](),controller[_0xc213('0x10')]);module[_0xc213('0x11')]=router;
\ No newline at end of file
index c8130ce..a71641c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe811=['stringify','textarea','Comments','Leave\x20your\x20comments','offlineForm','parse','bottom_right','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','rounded','squared','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20submission\x20error','Note','Type\x20a\x20message','Skip','Feedback','ENUM','thumb','TEXT','input','text','name','getDataValue','setDataValue','onlineForm'];(function(_0x535a0d,_0x3a752f){var _0x39a4a3=function(_0x255dfa){while(--_0x255dfa){_0x535a0d['push'](_0x535a0d['shift']());}};_0x39a4a3(++_0x3a752f);}(_0xe811,0x11c));var _0x1e81=function(_0x22c725,_0x4882fd){_0x22c725=_0x22c725-0x0;var _0x55a32e=_0xe811[_0x22c725];return _0x55a32e;};'use strict';var Sequelize=require(_0x1e81('0x0'));var rs=require(_0x1e81('0x1'));module[_0x1e81('0x2')]={'name':{'type':Sequelize[_0x1e81('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x1e81('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x1e81('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x4')},'key':{'type':Sequelize[_0x1e81('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x5')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1e81('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x1e81('0x3')],'allowNull':![],'defaultValue':_0x1e81('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x1e81('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x1e81('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x1e81('0x3')]},'animation':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0x1e81('0xa'),_0x1e81('0xb')),'defaultValue':_0x1e81('0xa')},'header_online':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0xc')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x1e81('0xd')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x1e81('0xe')},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0xf')},'defaultWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sitepic':{'type':Sequelize['TEXT']},'closingQuestion':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x11')},'noteTitle':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x12')},'placeholderMessage':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x13')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x1e81('0x14')},'conditionAgreement':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':_0x1e81('0x15')},'ratingType':{'type':Sequelize[_0x1e81('0x16')]('star',_0x1e81('0x17')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize[_0x1e81('0x8')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x1e81('0x18')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x1e81('0x19'),'variable':null,'config':{'placeholder':'name','type':_0x1e81('0x1a'),'required':!![]},'props':{'title':_0x1e81('0x1b'),'helpText':''}},{'type':_0x1e81('0x19'),'props':{'title':_0x1e81('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x1e81('0x4'),'type':_0x1e81('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x1e81('0x1c')]('onlineForm')?JSON['parse'](this['getDataValue']('onlineForm')):{};},'set':function(_0x4063){return this[_0x1e81('0x1d')](_0x1e81('0x1e'),JSON[_0x1e81('0x1f')](_0x4063));}},'offlineForm':{'type':Sequelize['TEXT'],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x1e81('0x19'),'props':{'title':_0x1e81('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x1e81('0x4'),'type':'email'},'variable':null},{'type':_0x1e81('0x20'),'config':{'placeholder':_0x1e81('0x21')},'props':{'title':_0x1e81('0x21'),'helpText':_0x1e81('0x22')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x1e81('0x23'))?JSON[_0x1e81('0x24')](this[_0x1e81('0x1c')](_0x1e81('0x23'))):{};},'set':function(_0x31c4ce){return this[_0x1e81('0x1d')](_0x1e81('0x23'),JSON[_0x1e81('0x1f')](_0x31c4ce));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x1e81('0x3')]},'waitingTitle':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize['STRING'],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'Your\x20request\x20has\x20not\x20been\x20processed.'},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x1e81('0x14')},'sendUnmanaged':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x1e81('0x18')]},'showAgentAvatar':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x1e81('0x3')]},'notificationTemplate':{'type':Sequelize[_0x1e81('0x18')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':'website_alias'},'waitForTheAssignedAgent':{'type':Sequelize[_0x1e81('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x1e81('0x25')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x26')},'defaultTitle':{'type':Sequelize[_0x1e81('0x3')]},'customerAvatar':{'type':Sequelize[_0x1e81('0x18')]},'showCustomerAvatar':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x1e81('0x3')],'allowNull':![],'defaultValue':_0x1e81('0x27'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x1e81('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x1e81('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':_0x1e81('0x28')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x1e81('0x8')],'comment':_0x1e81('0x29')},'mandatoryDisposition':{'type':Sequelize[_0x1e81('0x9')],'defaultValue':![],'comment':_0x1e81('0x2a'),'set':function(_0x298205){if(!_0x298205)this[_0x1e81('0x1d')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x298205);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x1e81('0x3')]},'vidaooTopic':{'type':Sequelize[_0x1e81('0x3')],'allowNull':![],'defaultValue':_0x1e81('0x2b')},'vidaooNote':{'type':Sequelize[_0x1e81('0x3')],'defaultValue':function(){return _0x1e81('0x2c');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x1e81('0x18')]}};
\ No newline at end of file
+var _0x16bd=['BOOLEAN','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','Feedback','ENUM','thumb','star','stringify','input','name','getDataValue','onlineForm','parse','setDataValue','Comments','offlineForm','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.','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','alternate','#fafafa','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','exports','STRING','address','email','#011F6A','#ffffff'];(function(_0x1dc0b9,_0x43ffca){var _0x20013a=function(_0x147ffa){while(--_0x147ffa){_0x1dc0b9['push'](_0x1dc0b9['shift']());}};_0x20013a(++_0x43ffca);}(_0x16bd,0x1b3));var _0xd16b=function(_0xee2e7a,_0x58354d){_0xee2e7a=_0xee2e7a-0x0;var _0x319dd3=_0x16bd[_0xee2e7a];return _0x319dd3;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xd16b('0x0')]={'name':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]},'address':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'unique':_0xd16b('0x2')},'description':{'type':Sequelize[_0xd16b('0x1')]},'mapKey':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x3')},'mapKeyOffline':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x3')},'key':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'Agent'},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x4'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x5'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xd16b('0x1')]},'animation':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM'](_0xd16b('0x7'),'squared'),'defaultValue':_0xd16b('0x7')},'header_online':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x8')},'start_chat_button':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x9')},'offline_chat_button':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xa')},'header_offline':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xb')},'download_transcript':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xd16b('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xd16b('0xe')]},'closingQuestion':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x11')},'noteTitle':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x12')},'placeholderMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x13')},'closingMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x14')},'closingMessageButton':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xa')},'skipMessageButton':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x15')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x16')},'ratingType':{'type':Sequelize[_0xd16b('0x17')]('star',_0xd16b('0x18')),'defaultValue':_0xd16b('0x19')},'ratingStarsNumber':{'type':Sequelize[_0xd16b('0xc')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':function(){return JSON[_0xd16b('0x1a')]({'items':[{'type':_0xd16b('0x1b'),'variable':null,'config':{'placeholder':_0xd16b('0x1c'),'type':'text','required':!![]},'props':{'title':_0xd16b('0x1c'),'helpText':''}},{'type':'input','props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd16b('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xd16b('0x1d')](_0xd16b('0x1e'))?JSON[_0xd16b('0x1f')](this[_0xd16b('0x1d')](_0xd16b('0x1e'))):{};},'set':function(_0x3aad03){return this[_0xd16b('0x20')](_0xd16b('0x1e'),JSON[_0xd16b('0x1a')](_0x3aad03));}},'offlineForm':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xd16b('0x1b'),'props':{'title':_0xd16b('0x3'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':_0xd16b('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0xd16b('0x21')},'props':{'title':'Comments','helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this[_0xd16b('0x1d')](_0xd16b('0x22'))?JSON[_0xd16b('0x1f')](this[_0xd16b('0x1d')]('offlineForm')):{};},'set':function(_0x365830){return this['setDataValue'](_0xd16b('0x22'),JSON['stringify'](_0x365830));}},'token':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':function(){return rs[_0xd16b('0x23')]();}},'autoclose':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x24')},'waitingMessage':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x25')},'offlineMessageSubject':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x26')},'enableUnmanagedNote':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0x27')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0x15')},'sendUnmanaged':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0xa')},'enableCustomerAttachment':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xd16b('0xe')]},'showAgentAvatar':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'timezone':{'type':Sequelize[_0xd16b('0x1')]},'notificationTemplate':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':_0xd16b('0x28')},'waitForTheAssignedAgent':{'type':Sequelize[_0xd16b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'bottom_right'},'verticalAlignment':{'type':Sequelize[_0xd16b('0xc')],'defaultValue':0x1e},'messagesAlignment':{'type':Sequelize['STRING'],'defaultValue':_0xd16b('0x29')},'defaultTitle':{'type':Sequelize[_0xd16b('0x1')]},'customerAvatar':{'type':Sequelize[_0xd16b('0xe')]},'showCustomerAvatar':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd16b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd16b('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':'System'},'systemAvatar':{'type':Sequelize[_0xd16b('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xd16b('0xc')],'comment':_0xd16b('0x2b')},'mandatoryDisposition':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![],'comment':_0xd16b('0x2c'),'set':function(_0x4bf7f6){if(!_0x4bf7f6)this[_0xd16b('0x20')](_0xd16b('0x2d'),null);this['setDataValue'](_0xd16b('0x2e'),_0x4bf7f6);}},'vidaooEscalation':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xd16b('0x1')]},'vidaooTopic':{'type':Sequelize[_0xd16b('0x1')],'allowNull':![],'defaultValue':_0xd16b('0x2f')},'vidaooNote':{'type':Sequelize[_0xd16b('0x1')],'defaultValue':function(){return _0xd16b('0x30');}},'vidaooMetadata':{'type':Sequelize[_0xd16b('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xd16b('0x6')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xd16b('0xe')]}};
\ No newline at end of file
index d5a34c2..c054443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0174=['Start','startRouting','EventManager','send','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','originalname','mimetype','server','files','attachments','offline-chat','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','forwardOffline','service','host','port','secure','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','MailAccountId','subjectOffline','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','Owner','fullname','internal','Tag','color','tag','timezone','iftime\x20%s,%s','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','inspect','No\x20timezone','Interval','Intervals','getProactiveActions','License','all','some','server/files/chat/iframe.ejs','remote','stringify','x-real-ip','connection','remoteAddress','referer','virtual','replace','textColor','color_button','backgroundColor','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','omit','ChatProactiveAction','getFields','online','offlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./chatWebsite.socket','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','ChatWebsites','UserProfileResource','sendStatus','index','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','type','key','model','name','query','keys','attributes','fields','length','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','findAll','rows','show','params','Pause','intersection','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','nolimit','removeAnswers','addLogo','sitepic','addAvatar','file','filename','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','isNil','existsSync','root','server/files/images/logos/','download','getAvatar','agentAvatar','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','from','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','List','Contacts','DESC','ChatApplication','Applications','applications','priority','asc','account','contact','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','browser','format','%s\x20%s','version','unknown','device','vendor','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','autoclose','push','close','*,*,*,*','ChatMessage','AttachmentId','User','unshift','waitForTheAssignedAgent','forcedOwnership'];(function(_0x11e4ce,_0x19c034){var _0x16344e=function(_0x36456e){while(--_0x36456e){_0x11e4ce['push'](_0x11e4ce['shift']());}};_0x16344e(++_0x19c034);}(_0x0174,0x6b));var _0x4017=function(_0x51f855,_0x1189af){_0x51f855=_0x51f855-0x0;var _0x478a4a=_0x0174[_0x51f855];return _0x478a4a;};'use strict';var emlformat=require(_0x4017('0x0'));var rimraf=require(_0x4017('0x1'));var zipdir=require(_0x4017('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4017('0x3'));var BPromise=require(_0x4017('0x4'));var Mustache=require(_0x4017('0x5'));var util=require(_0x4017('0x6'));var path=require(_0x4017('0x7'));var sox=require(_0x4017('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4017('0x9'));var _=require(_0x4017('0xa'));var squel=require(_0x4017('0xb'));var crypto=require(_0x4017('0xc'));var jsforce=require(_0x4017('0xd'));var deskjs=require(_0x4017('0xe'));var toCsv=require(_0x4017('0xf'));var querystring=require(_0x4017('0x10'));var Papa=require(_0x4017('0x11'));var Redis=require('ioredis');var authService=require(_0x4017('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x4017('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x4017('0x14'));var utils=require('../../config/utils');var config=require(_0x4017('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4017('0x16'))['db'];config[_0x4017('0x17')]=_[_0x4017('0x18')](config['redis'],{'host':_0x4017('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4017('0x17')]));require(_0x4017('0x1a'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x4017('0x1b')][_0x4017('0x1c')]({'port':0x232c});var client9002=jayson[_0x4017('0x1b')][_0x4017('0x1c')]({'port':0x232a});var client9003=jayson[_0x4017('0x1b')][_0x4017('0x1c')]({'port':0x232b});var client9001=jayson[_0x4017('0x1b')]['http']({'port':0x2329});function respondWithRpcPromise(_0x4b2e30,_0x3a9744,_0x561fa7,_0x6fabf7){return new BPromise(function(_0x2146fb,_0x36b48d){var _0x5498f2=_0x6fabf7||client;return _0x5498f2[_0x4017('0x1d')](_0x4b2e30,_0x561fa7)[_0x4017('0x1e')](function(_0x5575e2){logger[_0x4017('0x1f')](_0x4017('0x20'),_0x3a9744,'request\x20sent');logger[_0x4017('0x21')](_0x4017('0x22'),_0x3a9744,_0x4017('0x23'),JSON['stringify'](_0x5575e2));if(_0x5575e2[_0x4017('0x24')]){if(_0x5575e2['error'][_0x4017('0x25')]===0x1f4){logger[_0x4017('0x24')](_0x4017('0x20'),_0x3a9744,_0x5575e2[_0x4017('0x24')][_0x4017('0x26')]);return _0x36b48d(_0x5575e2[_0x4017('0x24')][_0x4017('0x26')]);}logger[_0x4017('0x24')]('ChatWebsite,\x20%s,\x20%s',_0x3a9744,_0x5575e2['error']['message']);return _0x2146fb(_0x5575e2[_0x4017('0x24')][_0x4017('0x26')]);}else{logger[_0x4017('0x1f')](_0x4017('0x20'),_0x3a9744,_0x4017('0x23'));_0x2146fb(_0x5575e2[_0x4017('0x27')]['message']);}})[_0x4017('0x28')](function(_0x3edde6){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x3a9744,_0x3edde6);_0x36b48d(_0x3edde6);});});}function respondWithStatusCode(_0x1d6124,_0xd19708){_0xd19708=_0xd19708||0xcc;return function(_0x50d540){if(_0x50d540){return _0x1d6124['sendStatus'](_0xd19708);}return _0x1d6124[_0x4017('0x29')](_0xd19708)[_0x4017('0x2a')]();};}function respondWithResult(_0x5cb272,_0x571d10){_0x571d10=_0x571d10||0xc8;return function(_0x5a612f){if(_0x5a612f){return _0x5cb272[_0x4017('0x29')](_0x571d10)[_0x4017('0x2b')](_0x5a612f);}};}function respondWithFilteredResult(_0x1e25ce,_0x155708){return function(_0x1e9a96){if(_0x1e9a96){var _0x35d036=typeof _0x155708[_0x4017('0x2c')]===_0x4017('0x2d')&&typeof _0x155708[_0x4017('0x2e')]===_0x4017('0x2d');var _0x57af7d=_0x1e9a96[_0x4017('0x2f')];var _0x44c95d=_0x35d036?0x0:_0x155708[_0x4017('0x2c')];var _0x4614d9=_0x35d036?_0x1e9a96[_0x4017('0x2f')]:_0x155708['offset']+_0x155708['limit'];var _0xa1208b;if(_0x4614d9>=_0x57af7d){_0x4614d9=_0x57af7d;_0xa1208b=0xc8;}else{_0xa1208b=0xce;}_0x1e25ce['status'](_0xa1208b);return _0x1e25ce[_0x4017('0x30')](_0x4017('0x31'),_0x44c95d+'-'+_0x4614d9+'/'+_0x57af7d)[_0x4017('0x2b')](_0x1e9a96);}return null;};}function patchUpdates(_0x560967){return function(_0x54147e){try{jsonpatch[_0x4017('0x32')](_0x54147e,_0x560967,!![]);}catch(_0x3cb5a8){return BPromise[_0x4017('0x33')](_0x3cb5a8);}return _0x54147e[_0x4017('0x34')]();};}function saveUpdates(_0x52ca4a,_0x11a623){return function(_0x6b0036){if(_0x6b0036){return _0x6b0036[_0x4017('0x35')](_0x52ca4a)[_0x4017('0x1e')](function(_0x186b32){return _0x186b32;});}return null;};}function removeEntity(_0x53abfc,_0x32bccd){return function(_0x543e22){if(_0x543e22){return _0x543e22[_0x4017('0x36')]()[_0x4017('0x1e')](function(){var _0xad9544=_0x543e22['get']({'plain':!![]});var _0x590745=_0x4017('0x37');return db[_0x4017('0x38')][_0x4017('0x36')]({'where':{'type':_0x590745,'resourceId':_0xad9544['id']}})['then'](function(){return _0x543e22;});})[_0x4017('0x1e')](function(){_0x53abfc['status'](0xcc)[_0x4017('0x2a')]();});}};}function handleEntityNotFound(_0x653679,_0x1db208){return function(_0x507609){if(!_0x507609){_0x653679[_0x4017('0x39')](0x194);}return _0x507609;};}function handleError(_0x480961,_0x2eb749){_0x2eb749=_0x2eb749||0x1f4;return function(_0x4c6576){logger[_0x4017('0x24')](_0x4c6576['stack']);if(_0x4c6576['name']){delete _0x4c6576['name'];}_0x480961[_0x4017('0x29')](_0x2eb749)['send'](_0x4c6576);};}exports[_0x4017('0x3a')]=function(_0x48047f,_0x5ea0b9){var _0xcc67b4={'include':[{'model':db['Pause'],'as':_0x4017('0x3b')}]},_0x20c119={},_0x15be75={'count':0x0,'rows':[]};var _0x5942b6=_[_0x4017('0x3c')](db[_0x4017('0x3d')][_0x4017('0x3e')],function(_0x47e075){return{'name':_0x47e075[_0x4017('0x3f')],'type':_0x47e075[_0x4017('0x40')][_0x4017('0x41')]};});_0x20c119[_0x4017('0x42')]=_[_0x4017('0x3c')](_0x5942b6,_0x4017('0x43'));_0x20c119[_0x4017('0x44')]=_[_0x4017('0x45')](_0x48047f[_0x4017('0x44')]);_0x20c119['filters']=_['intersection'](_0x20c119[_0x4017('0x42')],_0x20c119['query']);_0xcc67b4[_0x4017('0x46')]=_['intersection'](_0x20c119[_0x4017('0x42')],qs[_0x4017('0x47')](_0x48047f[_0x4017('0x44')][_0x4017('0x47')]));_0xcc67b4[_0x4017('0x46')]=_0xcc67b4[_0x4017('0x46')][_0x4017('0x48')]?_0xcc67b4[_0x4017('0x46')]:_0x20c119[_0x4017('0x42')];if(!_0x48047f[_0x4017('0x44')]['hasOwnProperty']('nolimit')){_0xcc67b4[_0x4017('0x2e')]=qs['limit'](_0x48047f[_0x4017('0x44')][_0x4017('0x2e')]);_0xcc67b4[_0x4017('0x2c')]=qs['offset'](_0x48047f[_0x4017('0x44')][_0x4017('0x2c')]);}_0xcc67b4[_0x4017('0x49')]=qs[_0x4017('0x4a')](_0x48047f['query'][_0x4017('0x4a')]);_0xcc67b4[_0x4017('0x4b')]=qs[_0x4017('0x4c')](_[_0x4017('0x4d')](_0x48047f[_0x4017('0x44')],_0x20c119[_0x4017('0x4c')]),_0x5942b6);if(_0x48047f[_0x4017('0x44')][_0x4017('0x4e')]){_0xcc67b4['where']=_['merge'](_0xcc67b4[_0x4017('0x4b')],{'$or':_[_0x4017('0x3c')](_0x5942b6,function(_0x46f616){if(_0x46f616[_0x4017('0x40')]!==_0x4017('0x4f')){var _0x140c15={};_0x140c15[_0x46f616[_0x4017('0x43')]]={'$like':'%'+_0x48047f[_0x4017('0x44')][_0x4017('0x4e')]+'%'};return _0x140c15;}})});}_0xcc67b4=_[_0x4017('0x50')]({},_0xcc67b4,_0x48047f[_0x4017('0x51')]);var _0x12e1a3={'where':_0xcc67b4[_0x4017('0x4b')]};return db[_0x4017('0x3d')][_0x4017('0x2f')](_0x12e1a3)[_0x4017('0x1e')](function(_0x34599f){_0x15be75[_0x4017('0x2f')]=_0x34599f;if(_0x48047f[_0x4017('0x44')]['includeAll']){_0xcc67b4[_0x4017('0x52')]=[{'all':!![]}];}return db[_0x4017('0x3d')][_0x4017('0x53')](_0xcc67b4);})[_0x4017('0x1e')](function(_0x575b09){_0x15be75[_0x4017('0x54')]=_0x575b09;return _0x15be75;})[_0x4017('0x1e')](respondWithFilteredResult(_0x5ea0b9,_0xcc67b4))['catch'](handleError(_0x5ea0b9,null));};exports[_0x4017('0x55')]=function(_0x2c093e,_0x391966){var _0x41765b={'raw':![],'where':{'id':_0x2c093e[_0x4017('0x56')]['id']},'include':[{'model':db[_0x4017('0x57')],'as':_0x4017('0x3b')}]},_0x4e6ea6={};_0x4e6ea6['model']=_[_0x4017('0x45')](db[_0x4017('0x3d')][_0x4017('0x3e')]);_0x4e6ea6[_0x4017('0x44')]=_[_0x4017('0x45')](_0x2c093e[_0x4017('0x44')]);_0x4e6ea6[_0x4017('0x4c')]=_[_0x4017('0x58')](_0x4e6ea6['model'],_0x4e6ea6['query']);_0x41765b[_0x4017('0x46')]=_['intersection'](_0x4e6ea6[_0x4017('0x42')],qs[_0x4017('0x47')](_0x2c093e[_0x4017('0x44')][_0x4017('0x47')]));_0x41765b['attributes']=_0x41765b[_0x4017('0x46')][_0x4017('0x48')]?_0x41765b[_0x4017('0x46')]:_0x4e6ea6[_0x4017('0x42')];if(_0x2c093e[_0x4017('0x44')][_0x4017('0x59')]){_0x41765b[_0x4017('0x52')]=[{'all':!![]}];}_0x41765b=_[_0x4017('0x50')]({},_0x41765b,_0x2c093e[_0x4017('0x51')]);return db[_0x4017('0x3d')][_0x4017('0x5a')](_0x41765b)[_0x4017('0x1e')](handleEntityNotFound(_0x391966,null))[_0x4017('0x1e')](respondWithResult(_0x391966,null))[_0x4017('0x28')](handleError(_0x391966,null));};exports[_0x4017('0x5b')]=function(_0x563410,_0x3d49c8){return db['ChatWebsite'][_0x4017('0x5b')](_0x563410[_0x4017('0x5c')],{})[_0x4017('0x1e')](function(_0x76b988){var _0xc7ebcd=_0x563410[_0x4017('0x5d')][_0x4017('0x5e')]({'plain':!![]});if(!_0xc7ebcd)throw new Error(_0x4017('0x5f'));if(_0xc7ebcd[_0x4017('0x60')]==='user'){var _0x311f74=_0x76b988[_0x4017('0x5e')]({'plain':!![]});var _0x5074a9=_0x4017('0x37');return db['UserProfileSection'][_0x4017('0x5a')]({'where':{'name':_0x5074a9,'userProfileId':_0xc7ebcd['userProfileId']},'raw':!![]})[_0x4017('0x1e')](function(_0x5793b7){if(_0x5793b7&&_0x5793b7[_0x4017('0x61')]===0x0){return db[_0x4017('0x38')][_0x4017('0x5b')]({'name':_0x311f74['name'],'resourceId':_0x311f74['id'],'type':_0x5793b7[_0x4017('0x43')],'sectionId':_0x5793b7['id']},{})['then'](function(){return _0x76b988;});}else{return _0x76b988;}})['catch'](function(_0x388268){logger[_0x4017('0x24')](_0x4017('0x62'),_0x388268);throw _0x388268;});}return _0x76b988;})['then'](respondWithResult(_0x3d49c8,0xc9))[_0x4017('0x28')](handleError(_0x3d49c8,null));};exports[_0x4017('0x35')]=function(_0x2c2e16,_0x1fe1db){if(_0x2c2e16['body']['id']){delete _0x2c2e16['body']['id'];}return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x2c2e16[_0x4017('0x56')]['id']},'include':[{'model':db[_0x4017('0x57')],'as':_0x4017('0x3b')}]})[_0x4017('0x1e')](handleEntityNotFound(_0x1fe1db,null))['then'](saveUpdates(_0x2c2e16['body'],null))[_0x4017('0x1e')](respondWithResult(_0x1fe1db,null))[_0x4017('0x28')](handleError(_0x1fe1db,null));};exports['destroy']=function(_0x2d667e,_0x79eca4){return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x2d667e['params']['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x79eca4,null))[_0x4017('0x1e')](removeEntity(_0x79eca4,null))[_0x4017('0x28')](handleError(_0x79eca4,null));};exports[_0x4017('0x63')]=function(_0x70db84,_0x8ad26d){return db[_0x4017('0x3d')][_0x4017('0x63')]()['then'](respondWithResult(_0x8ad26d,null))['catch'](handleError(_0x8ad26d,null));};exports[_0x4017('0x64')]=function(_0x220e08,_0x589e22,_0x550100){if(_0x220e08[_0x4017('0x5c')]['id']){delete _0x220e08[_0x4017('0x5c')]['id'];}return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x220e08[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x589e22,null))[_0x4017('0x1e')](function(_0x17048b){if(_0x17048b){_0x220e08[_0x4017('0x5c')][_0x4017('0x65')]=_0x17048b['id'];return db[_0x4017('0x66')][_0x4017('0x5b')](_0x220e08[_0x4017('0x5c')]);}})[_0x4017('0x1e')](respondWithResult(_0x589e22,null))[_0x4017('0x28')](handleError(_0x589e22,null));};exports[_0x4017('0x67')]=function(_0x13e98d,_0x39d7db,_0x10c388){var _0x1aa596={'raw':![],'where':{}};var _0x5b86e6={};var _0x46b885={'count':0x0,'rows':[]};return db[_0x4017('0x3d')][_0x4017('0x68')]({'where':{'id':_0x13e98d[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x39d7db,null))[_0x4017('0x1e')](function(_0x20c880){if(_0x20c880){_0x5b86e6['model']=_[_0x4017('0x45')](db['Disposition'][_0x4017('0x3e')]);_0x5b86e6['query']=_['keys'](_0x13e98d['query']);_0x5b86e6[_0x4017('0x4c')]=_['intersection'](_0x5b86e6[_0x4017('0x42')],_0x5b86e6['query']);_0x1aa596[_0x4017('0x46')]=_[_0x4017('0x58')](_0x5b86e6[_0x4017('0x42')],qs[_0x4017('0x47')](_0x13e98d[_0x4017('0x44')][_0x4017('0x47')]));_0x1aa596[_0x4017('0x46')]=_0x1aa596[_0x4017('0x46')][_0x4017('0x48')]?_0x1aa596[_0x4017('0x46')]:_0x5b86e6[_0x4017('0x42')];if(!_0x13e98d[_0x4017('0x44')][_0x4017('0x69')]('nolimit')){_0x1aa596[_0x4017('0x2e')]=qs[_0x4017('0x2e')](_0x13e98d[_0x4017('0x44')]['limit']);_0x1aa596[_0x4017('0x2c')]=qs[_0x4017('0x2c')](_0x13e98d[_0x4017('0x44')]['offset']);}_0x1aa596[_0x4017('0x49')]=qs[_0x4017('0x4a')](_0x13e98d[_0x4017('0x44')][_0x4017('0x4a')]);_0x1aa596[_0x4017('0x4b')]=qs[_0x4017('0x4c')](_[_0x4017('0x4d')](_0x13e98d[_0x4017('0x44')],_0x5b86e6[_0x4017('0x4c')]));_0x1aa596[_0x4017('0x4b')][_0x4017('0x65')]=_0x20c880['id'];if(_0x13e98d[_0x4017('0x44')][_0x4017('0x4e')]){_0x1aa596[_0x4017('0x4b')]=_[_0x4017('0x50')](_0x1aa596[_0x4017('0x4b')],{'$or':_['map'](_0x1aa596[_0x4017('0x46')],function(_0x41b1eb){var _0xf5869d={};_0xf5869d[_0x41b1eb]={'$like':'%'+_0x13e98d['query'][_0x4017('0x4e')]+'%'};return _0xf5869d;})});}_0x1aa596=_[_0x4017('0x50')]({},_0x1aa596,_0x13e98d[_0x4017('0x51')]);return db[_0x4017('0x66')][_0x4017('0x2f')]({'where':_0x1aa596[_0x4017('0x4b')]})[_0x4017('0x1e')](function(_0x56acc9){_0x46b885['count']=_0x56acc9;if(_0x13e98d[_0x4017('0x44')][_0x4017('0x59')]){_0x1aa596[_0x4017('0x52')]=[{'all':!![]}];}return db[_0x4017('0x66')][_0x4017('0x53')](_0x1aa596);})['then'](function(_0x7e4365){_0x46b885[_0x4017('0x54')]=_0x7e4365;return _0x46b885;});}})['then'](respondWithFilteredResult(_0x39d7db,_0x1aa596))[_0x4017('0x28')](handleError(_0x39d7db,null));};exports['removeDispositions']=function(_0x3542bc,_0x27503a,_0x2a2c43){return db[_0x4017('0x3d')]['find']({'where':{'id':_0x3542bc['params']['id']}})['then'](handleEntityNotFound(_0x27503a,null))[_0x4017('0x1e')](function(_0x4a2fd2){if(_0x4a2fd2){return _0x4a2fd2[_0x4017('0x6a')](_0x3542bc[_0x4017('0x44')][_0x4017('0x6b')]);}})[_0x4017('0x1e')](respondWithStatusCode(_0x27503a,null))['catch'](handleError(_0x27503a,null));};exports[_0x4017('0x6c')]=function(_0x13de50,_0x109d94,_0x6d3105){if(_0x13de50['body']['id']){delete _0x13de50['body']['id'];}return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x13de50[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x109d94,null))['then'](function(_0x42b9b5){if(_0x42b9b5){_0x13de50[_0x4017('0x5c')][_0x4017('0x65')]=_0x42b9b5['id'];return db[_0x4017('0x6d')][_0x4017('0x5b')](_0x13de50[_0x4017('0x5c')]);}})[_0x4017('0x1e')](respondWithResult(_0x109d94,null))[_0x4017('0x28')](handleError(_0x109d94,null));};exports[_0x4017('0x6e')]=function(_0x469b9b,_0x2d1804,_0x41c19e){var _0x26f3ce={'raw':![],'where':{}};var _0x88d61={};var _0x14c235={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x469b9b['params']['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x2d1804,null))[_0x4017('0x1e')](function(_0x1a7b92){if(_0x1a7b92){_0x88d61[_0x4017('0x42')]=_[_0x4017('0x45')](db[_0x4017('0x6d')][_0x4017('0x3e')]);_0x88d61[_0x4017('0x44')]=_[_0x4017('0x45')](_0x469b9b[_0x4017('0x44')]);_0x88d61[_0x4017('0x4c')]=_[_0x4017('0x58')](_0x88d61['model'],_0x88d61['query']);_0x26f3ce[_0x4017('0x46')]=_[_0x4017('0x58')](_0x88d61['model'],qs[_0x4017('0x47')](_0x469b9b[_0x4017('0x44')][_0x4017('0x47')]));_0x26f3ce['attributes']=_0x26f3ce[_0x4017('0x46')][_0x4017('0x48')]?_0x26f3ce[_0x4017('0x46')]:_0x88d61[_0x4017('0x42')];if(!_0x469b9b[_0x4017('0x44')][_0x4017('0x69')](_0x4017('0x6f'))){_0x26f3ce['limit']=qs['limit'](_0x469b9b[_0x4017('0x44')][_0x4017('0x2e')]);_0x26f3ce[_0x4017('0x2c')]=qs[_0x4017('0x2c')](_0x469b9b[_0x4017('0x44')][_0x4017('0x2c')]);}_0x26f3ce['order']=qs[_0x4017('0x4a')](_0x469b9b['query'][_0x4017('0x4a')]);_0x26f3ce[_0x4017('0x4b')]=qs[_0x4017('0x4c')](_[_0x4017('0x4d')](_0x469b9b['query'],_0x88d61[_0x4017('0x4c')]));_0x26f3ce[_0x4017('0x4b')][_0x4017('0x65')]=_0x1a7b92['id'];if(_0x469b9b[_0x4017('0x44')][_0x4017('0x4e')]){_0x26f3ce[_0x4017('0x4b')]=_['merge'](_0x26f3ce[_0x4017('0x4b')],{'$or':_[_0x4017('0x3c')](_0x26f3ce[_0x4017('0x46')],function(_0x220351){var _0x5befb4={};_0x5befb4[_0x220351]={'$like':'%'+_0x469b9b[_0x4017('0x44')][_0x4017('0x4e')]+'%'};return _0x5befb4;})});}_0x26f3ce=_[_0x4017('0x50')]({},_0x26f3ce,_0x469b9b[_0x4017('0x51')]);return db[_0x4017('0x6d')][_0x4017('0x2f')]({'where':_0x26f3ce[_0x4017('0x4b')]})['then'](function(_0x464780){_0x14c235['count']=_0x464780;if(_0x469b9b[_0x4017('0x44')][_0x4017('0x59')]){_0x26f3ce[_0x4017('0x52')]=[{'all':!![]}];}return db[_0x4017('0x6d')][_0x4017('0x53')](_0x26f3ce);})[_0x4017('0x1e')](function(_0x46097d){_0x14c235[_0x4017('0x54')]=_0x46097d;return _0x14c235;});}})[_0x4017('0x1e')](respondWithFilteredResult(_0x2d1804,_0x26f3ce))['catch'](handleError(_0x2d1804,null));};exports[_0x4017('0x70')]=function(_0x219798,_0xec1ad,_0x2eb822){return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x219798[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0xec1ad,null))[_0x4017('0x1e')](function(_0x38f33d){if(_0x38f33d){return _0x38f33d[_0x4017('0x70')](_0x219798[_0x4017('0x44')][_0x4017('0x6b')]);}})[_0x4017('0x1e')](respondWithStatusCode(_0xec1ad,null))[_0x4017('0x28')](handleError(_0xec1ad,null));};exports[_0x4017('0x71')]=function(_0x3cee77,_0x25f420,_0x226af7){_0x3cee77[_0x4017('0x5c')][_0x4017('0x72')]=_0x3cee77['file']['filename'];return db['ChatWebsite'][_0x4017('0x5a')]({'where':{'id':_0x3cee77[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x25f420,null))[_0x4017('0x1e')](saveUpdates(_0x3cee77[_0x4017('0x5c')],null))[_0x4017('0x1e')](respondWithResult(_0x25f420,null))[_0x4017('0x28')](handleError(_0x25f420,null));};exports[_0x4017('0x73')]=function(_0x51924f,_0x451be0,_0x475bc2){_0x51924f[_0x4017('0x5c')]['agentAvatar']=_0x51924f[_0x4017('0x74')][_0x4017('0x75')];return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x51924f[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x451be0,null))[_0x4017('0x1e')](saveUpdates(_0x51924f[_0x4017('0x5c')],null))['then'](respondWithResult(_0x451be0,null))[_0x4017('0x28')](handleError(_0x451be0,null));};exports[_0x4017('0x76')]=function(_0x2fc1f8,_0x2b384c,_0xcd0ff4){_0x2fc1f8['body'][_0x4017('0x77')]=_0x2fc1f8[_0x4017('0x74')][_0x4017('0x75')];return db[_0x4017('0x3d')]['find']({'where':{'id':_0x2fc1f8[_0x4017('0x56')]['id']}})['then'](handleEntityNotFound(_0x2b384c,null))[_0x4017('0x1e')](saveUpdates(_0x2fc1f8['body'],null))['then'](respondWithResult(_0x2b384c,null))[_0x4017('0x28')](handleError(_0x2b384c,null));};exports[_0x4017('0x78')]=function(_0x6ce0c9,_0xf4946c,_0x4a817a){_0x6ce0c9[_0x4017('0x5c')][_0x4017('0x79')]=_0x6ce0c9['file'][_0x4017('0x75')];return db['ChatWebsite'][_0x4017('0x5a')]({'where':{'id':_0x6ce0c9[_0x4017('0x56')]['id']}})['then'](handleEntityNotFound(_0xf4946c,null))['then'](saveUpdates(_0x6ce0c9[_0x4017('0x5c')],null))[_0x4017('0x1e')](respondWithResult(_0xf4946c,null))[_0x4017('0x28')](handleError(_0xf4946c,null));};exports[_0x4017('0x7a')]=function(_0x1c306e,_0x4ad95c,_0x36c0cc){var _0x3fec62=path[_0x4017('0x7b')](config['root'],_0x4017('0x7c'));var _0x9eec09={'where':{'id':_0x1c306e['params']['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x2611c6=![];return require(_0x4017('0x7d'))[_0x4017('0x7e')]()[_0x4017('0x1e')](function(_0x5d8602){if(_0x5d8602){_0x2611c6=_0x5d8602[_0x4017('0x7f')];}})[_0x4017('0x1e')](function(){return db[_0x4017('0x3d')][_0x4017('0x5a')](_0x9eec09);})[_0x4017('0x1e')](handleEntityNotFound(_0x4ad95c,null))['then'](function(_0x265584){if(_0x265584){if(!_[_0x4017('0x80')](_0x265584['sitepic'])){if(fs[_0x4017('0x81')](path['join'](config[_0x4017('0x82')],_0x4017('0x83'),_0x265584['sitepic']))&&_0x2611c6){_0x3fec62=path[_0x4017('0x7b')](config['root'],_0x4017('0x83'),_0x265584['sitepic']);}}return _0x4ad95c[_0x4017('0x84')](_0x3fec62);}})[_0x4017('0x28')](handleError(_0x4ad95c,null));};exports[_0x4017('0x85')]=function(_0x5a91eb,_0x22aea0,_0x40de49){var _0x2a7b61=path[_0x4017('0x7b')](config[_0x4017('0x82')],'server/files/images/avatars/default_avatar.png');var _0x5e9d06={'where':{'id':_0x5a91eb[_0x4017('0x56')]['id']},'attributes':['id',_0x4017('0x86')],'raw':!![]};return db[_0x4017('0x3d')]['find'](_0x5e9d06)['then'](handleEntityNotFound(_0x22aea0,null))[_0x4017('0x1e')](function(_0x2709bd){if(_0x2709bd){if(!_[_0x4017('0x80')](_0x2709bd[_0x4017('0x86')])){if(fs[_0x4017('0x81')](path[_0x4017('0x7b')](config[_0x4017('0x82')],_0x4017('0x87'),_0x2709bd[_0x4017('0x86')]))){_0x2a7b61=path[_0x4017('0x7b')](config[_0x4017('0x82')],_0x4017('0x87'),_0x2709bd[_0x4017('0x86')]);}}return _0x22aea0[_0x4017('0x84')](_0x2a7b61);}})[_0x4017('0x28')](handleError(_0x22aea0,null));};exports[_0x4017('0x88')]=function(_0x3f73d0,_0x5e2448,_0x2b0cd3){var _0x2b592c=path[_0x4017('0x7b')](config['root'],_0x4017('0x89'));var _0x2a08b3={'where':{'id':_0x3f73d0['params']['id']},'attributes':['id','customerAvatar','showCustomerAvatar'],'raw':!![]};return db[_0x4017('0x3d')][_0x4017('0x5a')](_0x2a08b3)[_0x4017('0x1e')](handleEntityNotFound(_0x5e2448,null))[_0x4017('0x1e')](function(_0x4ec81a){if(_0x4ec81a){if(!_['isNil'](_0x4ec81a['customerAvatar'])){if(fs[_0x4017('0x81')](path[_0x4017('0x7b')](config[_0x4017('0x82')],'server/files/images/avatars/',_0x4ec81a[_0x4017('0x77')]))&&_0x4ec81a[_0x4017('0x8a')]){_0x2b592c=path[_0x4017('0x7b')](config['root'],'server/files/images/avatars/',_0x4ec81a[_0x4017('0x77')]);}}return _0x5e2448[_0x4017('0x84')](_0x2b592c);}})[_0x4017('0x28')](handleError(_0x5e2448,null));};exports['getSystemAvatar']=function(_0xb74bcb,_0x2f061a,_0x12a0ff){var _0x5c0d38=path['join'](config[_0x4017('0x82')],_0x4017('0x8b'));var _0x31e1ef={'where':{'id':_0xb74bcb[_0x4017('0x56')]['id']},'attributes':['id',_0x4017('0x79')],'raw':!![]};return db['ChatWebsite'][_0x4017('0x5a')](_0x31e1ef)[_0x4017('0x1e')](handleEntityNotFound(_0x2f061a,null))[_0x4017('0x1e')](function(_0xb1626f){if(_0xb1626f){if(!_[_0x4017('0x80')](_0xb1626f[_0x4017('0x79')])){if(fs[_0x4017('0x81')](path[_0x4017('0x7b')](config['root'],_0x4017('0x87'),_0xb1626f[_0x4017('0x79')]))){_0x5c0d38=path['join'](config['root'],_0x4017('0x87'),_0xb1626f[_0x4017('0x79')]);}}return _0x2f061a['download'](_0x5c0d38);}})['catch'](handleError(_0x2f061a,null));};exports[_0x4017('0x8c')]=function(_0x489794,_0x57e569,_0xe20e79){var _0x50001d=require(_0x4017('0x8d'));var _0xae355e=new _0x50001d();var _0x33da94=_0xae355e[_0x4017('0x8e')](_0x489794[_0x4017('0x8f')][_0x4017('0x90')])[_0x4017('0x91')]();var _0x2e5675={'body':_0x489794[_0x4017('0x5c')],'channel':_0x4017('0x92')};var _0x5a6d44=[];var _0x41ec75=[];var _0x216ad5={};var _0x244a7b=![];return db[_0x4017('0x93')]['describe']()[_0x4017('0x1e')](function(_0x2f11c3){if(!_0x2f11c3){throw new db[(_0x4017('0x94'))][(_0x4017('0x95'))](_0x4017('0x96'));}_0x5a6d44=_['difference'](_[_0x4017('0x45')](_0x2f11c3),[_0x4017('0x97'),_0x4017('0x98')]);_0x41ec75=_[_0x4017('0x99')](_['keys'](_0x2f11c3),[_0x4017('0x97'),_0x4017('0x98'),_0x4017('0x9a'),_0x4017('0x9b')]);if(_0x489794['body']['id']){delete _0x489794['body']['id'];}if(_[_0x4017('0x80')](_0x489794[_0x4017('0x5c')][_0x4017('0x9c')])){throw new db['Sequelize'][(_0x4017('0x95'))](_0x4017('0x9d'));}if(_[_0x4017('0x80')](_0x489794[_0x4017('0x5c')][_0x4017('0x5c')])||_0x489794[_0x4017('0x5c')][_0x4017('0x5c')]===''){throw new db[(_0x4017('0x94'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x4017('0x80')](_0x489794[_0x4017('0x5c')][_0x4017('0x9e')])){throw new db[(_0x4017('0x94'))][(_0x4017('0x95'))](_0x4017('0x9f')+_0x41ec75);}if(!_['includes'](_0x41ec75,_0x489794[_0x4017('0x5c')][_0x4017('0x9e')])){throw new db[(_0x4017('0x94'))][(_0x4017('0x95'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x41ec75);}_0x216ad5[_0x489794[_0x4017('0x5c')]['mapKey']]=_0x489794['body'][_0x4017('0x9c')];})[_0x4017('0x1e')](function(){return db['ChatWebsite'][_0x4017('0x5a')]({'where':{'id':_0x489794['params']['id']},'include':[{'model':db['CmList'],'as':_0x4017('0xa0'),'include':[{'model':db[_0x4017('0x93')],'as':_0x4017('0xa1'),'where':_0x216ad5,'limit':0x1,'order':[[_0x4017('0x98'),_0x4017('0xa2')]]}]},{'model':db[_0x4017('0xa3')],'as':_0x4017('0xa4')}]});})[_0x4017('0x1e')](handleEntityNotFound(_0x57e569,null))['then'](function(_0x22f789){if(_0x22f789&&_0x22f789[_0x4017('0xa0')]){_0x2e5675['account']=_0x22f789;_0x2e5675[_0x4017('0xa5')]=_0x22f789[_0x4017('0xa4')];_0x2e5675['list']=_0x22f789[_0x4017('0xa0')];_0x2e5675[_0x4017('0xa5')]=_['orderBy'](_0x2e5675[_0x4017('0xa5')],[_0x4017('0xa6')],[_0x4017('0xa7')]);if(_0x2e5675[_0x4017('0xa8')][_0x4017('0xa4')]){delete _0x2e5675[_0x4017('0xa8')][_0x4017('0xa4')];}if(_0x2e5675['account'][_0x4017('0xa0')]&&_0x2e5675[_0x4017('0xa8')]['List'][_0x4017('0xa1')][_0x4017('0x48')]){return _0x2e5675[_0x4017('0xa8')]['List'][_0x4017('0xa1')][0x0];}var _0x772bb3=_[_0x4017('0x18')](_0x489794[_0x4017('0x5c')],{'firstName':_0x489794[_0x4017('0x5c')]['from'],'ListId':_0x22f789[_0x4017('0x9b')]});_0x772bb3[_0x489794[_0x4017('0x5c')][_0x4017('0x9e')]]=_0x489794[_0x4017('0x5c')][_0x4017('0x9c')];return db[_0x4017('0x93')]['create'](_0x772bb3,{'fields':_0x5a6d44,'raw':!![]});}})[_0x4017('0x1e')](handleEntityNotFound(_0x57e569,null))[_0x4017('0x1e')](function(_0x3075dc){_0x2e5675[_0x4017('0xa9')]=_0x3075dc;var _0x544e58=_0x489794[_0x4017('0x5c')]['customerIp'];if(_0x489794[_0x4017('0x8f')][_0x4017('0xaa')]){_0x544e58=_0x489794['headers'][_0x4017('0xaa')];}else if(_0x489794[_0x4017('0x8f')][_0x4017('0xab')]){_0x544e58=_[_0x4017('0xac')](_0x489794[_0x4017('0x8f')][_0x4017('0xab')][_0x4017('0xad')](','));}if(_0x3075dc){var _0x524827={'ContactId':_0x3075dc['id'],'ChatWebsiteId':_0x489794[_0x4017('0x56')]['id'],'from':(_0x3075dc[_0x4017('0xae')]||'')+'\x20'+(_0x3075dc[_0x4017('0xaf')]||''),'customerIp':_0x544e58,'customerPort':_0x489794['headers']['x-real-port']?_0x489794[_0x4017('0x8f')][_0x4017('0xb0')]:null,'referer':_0x489794[_0x4017('0x5c')]['referer'],'browserName':_0x33da94['browser'][_0x4017('0x43')]&&_0x33da94[_0x4017('0xb1')]['version']?util[_0x4017('0xb2')](_0x4017('0xb3'),_0x33da94[_0x4017('0xb1')][_0x4017('0x43')],_0x33da94[_0x4017('0xb1')][_0x4017('0xb4')]):_0x4017('0xb5'),'browserVersion':_0x33da94[_0x4017('0xb1')][_0x4017('0xb4')]||_0x4017('0xb5'),'osName':util['format'](_0x4017('0xb3'),_0x33da94['os'][_0x4017('0x43')],_0x33da94['os'][_0x4017('0xb4')]),'osVersion':_0x33da94['os'][_0x4017('0xb4')],'deviceModel':_0x33da94[_0x4017('0xb6')][_0x4017('0x42')]&&_0x33da94['device'][_0x4017('0xb7')]?util[_0x4017('0xb2')]('%s\x20%s\x20%s',_0x33da94[_0x4017('0xb6')][_0x4017('0x42')],_0x33da94[_0x4017('0xb6')][_0x4017('0xb7')],_0x33da94[_0x4017('0xb6')][_0x4017('0x40')]):null,'deviceVendor':_0x33da94[_0x4017('0xb6')]['vendor'],'deviceType':_0x33da94[_0x4017('0xb6')][_0x4017('0x40')],'formData':JSON['stringify'](_0x489794[_0x4017('0x5c')])};var _0x3578d4={'ChatWebsiteId':_0x489794[_0x4017('0x56')]['id'],'closed':![]};if(_0x489794[_0x4017('0x5c')][_0x4017('0xb8')]){_0x3578d4[_0x4017('0xb8')]=_0x489794[_0x4017('0x5c')][_0x4017('0xb8')];return db[_0x4017('0xb9')][_0x4017('0x5a')]({'where':_0x3578d4})[_0x4017('0x1e')](function(_0x3bf5ef){if(_0x3bf5ef){return[_0x3bf5ef,![]];}_0x524827['threadId']=_0x489794[_0x4017('0x5c')][_0x4017('0xb8')];_0x524827[_0x4017('0xba')]=_0x489794[_0x4017('0x5c')]['externalUrl'];return db['ChatInteraction'][_0x4017('0x5b')](_0x524827)[_0x4017('0x1e')](function(_0x53fbfb){return[_0x53fbfb,!![]];});});}_0x3578d4[_0x4017('0xbb')]=_0x3075dc['id'];if(_0x489794['body'][_0x4017('0xbc')]&&_0x489794[_0x4017('0x5c')][_0x4017('0xbc')]['id']){_0x3578d4['id']=_0x489794[_0x4017('0x5c')][_0x4017('0xbc')]['id'];return db['ChatInteraction'][_0x4017('0x5a')]({'where':_0x3578d4})[_0x4017('0x1e')](function(_0x10c76a){if(_0x10c76a){return[_0x10c76a,![]];}return db['ChatInteraction']['create'](_0x524827)['then'](function(_0x1d2a84){return[_0x1d2a84,!![]];});});}return db[_0x4017('0xb9')][_0x4017('0x5b')](_0x524827)[_0x4017('0x1e')](function(_0x1a8e4d){return[_0x1a8e4d,!![]];});}})['spread'](function(_0x4adba4,_0x3fb1d6){if(_0x4adba4){_0x244a7b=_0x3fb1d6;if(!_0x3fb1d6){var _0x1a58f1={'from':(_0x2e5675[_0x4017('0xa9')][_0x4017('0xae')]||'')+'\x20'+(_0x2e5675[_0x4017('0xa9')]['lastName']||'')};if(_0x489794[_0x4017('0x5c')][_0x4017('0xb8')]&&_0x489794[_0x4017('0x5c')]['messageId']&&_0x489794[_0x4017('0x5c')][_0x4017('0xb8')]!=_0x489794['body'][_0x4017('0xbd')]){_0x1a58f1[_0x4017('0xb8')]=_0x489794[_0x4017('0x5c')][_0x4017('0xbd')];}return _0x4adba4[_0x4017('0x35')](_0x1a58f1);}else{return _0x4adba4;}}})['then'](function(_0x2d8afe){_0x2e5675[_0x4017('0xbc')]=_0x2d8afe[_0x4017('0x5e')]({'plain':!![]});_0x2e5675[_0x4017('0xbc')][_0x4017('0xbe')]=_0x244a7b;if(_0x2e5675[_0x4017('0xbc')][_0x4017('0xbe')]){if(_0x2e5675['account'][_0x4017('0xbf')]){_0x2e5675[_0x4017('0xa5')][_0x4017('0xc0')]({'id':0x0,'priority':_0x2e5675['applications'][_0x4017('0x48')]+0x1,'app':_0x4017('0xc1'),'appdata':'unmanaged','interval':_0x4017('0xc2')});}}return db[_0x4017('0xc3')][_0x4017('0x5b')]({'body':_0x489794[_0x4017('0x5c')][_0x4017('0x5c')],'ChatWebsiteId':_0x489794[_0x4017('0x56')]['id'],'ChatInteractionId':_0x2d8afe['id'],'direction':'in','ContactId':_0x2e5675[_0x4017('0xa9')]['id'],'AttachmentId':_0x489794[_0x4017('0x5c')][_0x4017('0xc4')]});})[_0x4017('0x1e')](function(_0x3af2fd){_0x2e5675[_0x4017('0x26')]=_0x3af2fd;if(_0x2e5675[_0x4017('0xbc')]['UserId']){return db[_0x4017('0xc5')][_0x4017('0x5a')]({'attributes':['id',_0x4017('0x43')],'where':{'id':_0x2e5675[_0x4017('0xbc')]['UserId']}})[_0x4017('0x1e')](function(_0x5abad0){if(_0x5abad0){_0x2e5675[_0x4017('0xa5')][_0x4017('0xc6')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5abad0[_0x4017('0x43')]+','+(_0x2e5675['account'][_0x4017('0xc7')]||0xa),'interval':_0x4017('0xc2')});_0x2e5675[_0x4017('0xc8')]=!![];}return respondWithRpcPromise(_0x4017('0xc9'),_0x4017('0xca'),_0x2e5675);});}return respondWithRpcPromise(_0x4017('0xc9'),_0x4017('0xca'),_0x2e5675);})['then'](function(_0x1118a2){respondWithRpcPromise(_0x4017('0xcb'),_0x4017('0xcb'),{'event':'notify','message':_0x1118a2},client9002);return _0x1118a2;})[_0x4017('0x1e')](respondWithResult(_0x57e569,null))[_0x4017('0x28')](handleError(_0x57e569,null));};exports['offline']=function(_0x2cf7d9,_0x28d881,_0x40d435){var _0x2221c5,_0x3d6e13,_0x244fff;var _0x21d794=[];var _0x414893=[];var _0x511c84={};var _0xbff152=_0x2cf7d9['files']||[];var _0xec5a3d=[];var _0x5b9ff5;return db[_0x4017('0x93')][_0x4017('0x63')]()[_0x4017('0x1e')](function(_0x32e12f){if(!_0x32e12f){throw new db[(_0x4017('0x94'))][(_0x4017('0x95'))](_0x4017('0x96'));}_0x414893=_['difference'](_[_0x4017('0x45')](_0x32e12f),[_0x4017('0x97'),'updatedAt']);_0x21d794=_[_0x4017('0x99')](_[_0x4017('0x45')](_0x32e12f),[_0x4017('0x97'),_0x4017('0x98'),_0x4017('0x9a'),_0x4017('0x9b')]);if(_0x2cf7d9[_0x4017('0x5c')]['id']){delete _0x2cf7d9['body']['id'];}if(_[_0x4017('0x80')](_0x2cf7d9[_0x4017('0x5c')]['from'])){throw _0x28d881['status'](0x1f4)[_0x4017('0xcc')](new db[(_0x4017('0x94'))][(_0x4017('0x95'))](_0x4017('0x9d')));}if(_['isNil'](_0x2cf7d9[_0x4017('0x5c')][_0x4017('0x5c')])||_0x2cf7d9[_0x4017('0x5c')]['body']===''){throw _0x28d881[_0x4017('0x29')](0x1f4)[_0x4017('0xcc')](new db[(_0x4017('0x94'))][(_0x4017('0x95'))](_0x4017('0xcd')));}if(_[_0x4017('0x80')](_0x2cf7d9[_0x4017('0x5c')][_0x4017('0xce')])){throw _0x28d881[_0x4017('0x29')](0x1f4)[_0x4017('0xcc')](new db['Sequelize'][(_0x4017('0x95'))](_0x4017('0xcf')+_0x21d794));}if(!_['includes'](_0x21d794,_0x2cf7d9[_0x4017('0x5c')][_0x4017('0xce')])){throw _0x28d881[_0x4017('0x29')](0x1f4)[_0x4017('0xcc')](new db[(_0x4017('0x94'))][(_0x4017('0x95'))](_0x4017('0xd0')+_0x21d794));}_0x511c84[_0x2cf7d9[_0x4017('0x5c')][_0x4017('0xce')]]=_0x2cf7d9[_0x4017('0x5c')]['from'];})[_0x4017('0x1e')](function(){return db[_0x4017('0x3d')][_0x4017('0x5a')]({'where':{'id':_0x2cf7d9[_0x4017('0x56')]['id']},'include':[{'model':db['CmList'],'as':'List'},{'model':db[_0x4017('0xd1')],'as':_0x4017('0xd1')}]});})[_0x4017('0x1e')](handleEntityNotFound(_0x28d881,null))[_0x4017('0x1e')](function(_0xf04ab8){if(_0xf04ab8&&_0xf04ab8[_0x4017('0xa0')]){_0x3d6e13=_0xf04ab8;var _0x1493fb=_[_0x4017('0x18')](_0x2cf7d9[_0x4017('0x5c')],{'firstName':_0x2cf7d9[_0x4017('0x5c')][_0x4017('0x9c')],'phone':_0x2cf7d9['body']['from'],'ListId':_0xf04ab8[_0x4017('0x9b')]});_0x1493fb[_0x2cf7d9[_0x4017('0x5c')][_0x4017('0xce')]]=_0x2cf7d9['body']['from'];return db[_0x4017('0x93')][_0x4017('0xd2')]({'where':_0x511c84,'defaults':_0x1493fb});}})[_0x4017('0xd3')](function(_0xc77bc2){if(_0xc77bc2){_0x244fff=_0xc77bc2;var _0x47eaa2=fs[_0x4017('0xd4')](path[_0x4017('0x7b')](config[_0x4017('0x82')],_0x4017('0xd5')),_0x4017('0xd6'));var _0x1cab5e=ejs[_0x4017('0xd7')](_0x47eaa2,{'body':_[_0x4017('0xd8')](_0x2cf7d9[_0x4017('0x5c')][_0x4017('0x5c')]),'bodyTitle':_0x3d6e13[_0x4017('0xd9')]});return db['ChatOfflineMessage']['create']({'body':_0x1cab5e,'ContactId':_0xc77bc2['id'],'ChatWebsiteId':_0x3d6e13['id']});}})[_0x4017('0x1e')](function(_0x1d93a3){_0x5b9ff5=_0x1d93a3;if(_0xbff152[_0x4017('0x48')]){var _0x288b0b=_0xbff152[_0x4017('0x3c')](function(_0x24c60f){return{'name':_0x24c60f[_0x4017('0xda')],'basename':_0x24c60f[_0x4017('0x75')],'type':_0x24c60f[_0x4017('0xdb')],'ChatOfflineMessageId':_0x1d93a3['id']};});_0xec5a3d=_0x288b0b[_0x4017('0x3c')](_0x39a3e0=>{var _0x3a4a7e={'filename':_0x39a3e0[_0x4017('0x43')],'path':path[_0x4017('0x7b')](config[_0x4017('0x82')],_0x4017('0xdc'),_0x4017('0xdd'),_0x4017('0xde'),_0x4017('0xdf'),_0x39a3e0['basename'])};return _0x3a4a7e;});if(!_0x3d6e13[_0x4017('0xe0')]){return db[_0x4017('0xe1')][_0x4017('0xe2')](function(_0x59b7f5){return db[_0x4017('0xe3')][_0x4017('0xe4')](_0x288b0b,{'transaction':_0x59b7f5});});}}})[_0x4017('0x1e')](function(){if(_0x5b9ff5){_0x2221c5=_0x5b9ff5;return db['MailAccount'][_0x4017('0x68')]({'where':{'active':!![]},'include':[{'model':db[_0x4017('0xe5')],'as':_0x4017('0xe6'),'raw':!![]}]});}})[_0x4017('0x1e')](function(_0x5e78e7){if(_0x5e78e7&&_0x5e78e7[_0x4017('0xe6')]&&_0x3d6e13[_0x4017('0xe7')]&&_0x3d6e13['forwardOfflineAddress']){var _0x3b5e3e={'tls':{'rejectUnauthorized':![]}};if(_0x5e78e7[_0x4017('0xe6')]['service']){_0x3b5e3e[_0x4017('0xe8')]=_0x5e78e7[_0x4017('0xe6')][_0x4017('0xe8')];}else{_0x3b5e3e[_0x4017('0xe9')]=_0x5e78e7[_0x4017('0xe6')][_0x4017('0xe9')];_0x3b5e3e[_0x4017('0xea')]=_0x5e78e7[_0x4017('0xe6')]['port'];_0x3b5e3e[_0x4017('0xeb')]=_0x5e78e7[_0x4017('0xe6')][_0x4017('0xeb')];}if(_0x5e78e7[_0x4017('0xe6')]['authentication']){_0x3b5e3e[_0x4017('0xec')]={'user':_0x5e78e7[_0x4017('0xe6')][_0x4017('0x5d')],'pass':_0x5e78e7[_0x4017('0xe6')][_0x4017('0xed')]};}return respondWithRpcPromise(_0x4017('0xee'),_0x4017('0xef'),{'account':_0x3b5e3e,'message':{'from':util['format'](_0x4017('0xf0'),_0x5e78e7[_0x4017('0x43')],_0x5e78e7[_0x4017('0xf1')]||_0x5e78e7['Smtp'][_0x4017('0x5d')]),'to':_0x3d6e13[_0x4017('0xf2')],'subject':_0x3d6e13['offlineMessageSubject'],'html':_0x2221c5['body'],'attachments':_0xec5a3d}},client9003)[_0x4017('0x1e')](function(){return _0x2221c5;})[_0x4017('0x28')](function(_0xcd2f9a){console[_0x4017('0x24')](_0xcd2f9a);});}})[_0x4017('0x1e')](function(){if(_0x3d6e13&&_0x3d6e13[_0x4017('0xe0')]&&_0x3d6e13[_0x4017('0xf3')]){var _0x3322f6=[];if(_0xbff152[_0x4017('0x48')]){_0x3322f6=_0xbff152[_0x4017('0x3c')](function(_0x1a492e){return{'name':_0x1a492e[_0x4017('0xda')],'basename':_0x1a492e[_0x4017('0x75')],'type':_0x1a492e[_0x4017('0xdb')],'ChatOfflineMessageId':_0x5b9ff5['id']};});}var _0x5ed7df;if(!_[_0x4017('0x80')](_0x3d6e13['subjectOffline'])){var _0x5307b2=_[_0x4017('0x3c')](_0x2cf7d9[_0x4017('0x5c')],function(_0x140d1c){return _0x140d1c;});var _0x27ca2b=_['toPairsIn'](_0x5307b2)[0x0];var _0x429cba=_['mapValues'](_0x27ca2b,function(_0xad1668){return _0xad1668;});_0x5ed7df=_0x429cba[0x1][_0x3d6e13[_0x4017('0xf4')]];}var _0x2232d2={'from':_0x244fff[_0x4017('0xf1')],'firstName':_0x244fff['firstName'],'lastName':_0x244fff['lastName'],'mapKey':'email','message':{'from':_0x244fff[_0x4017('0xf1')],'to':_0x3d6e13[_0x4017('0xd1')]['email'],'cc':'','subject':_[_0x4017('0x80')](_0x5ed7df)?_0x3d6e13[_0x4017('0xf5')]:_0x5ed7df,'messageId':'','sentAt':new Date(),'attach':_0x3322f6['length'],'attachments':_0x3322f6,'originChannel':_0x4017('0xf6'),'ChatWebsiteId':_0x3d6e13['id'],'ChatOfflineMessageId':_0x2221c5['id'],'originTo':_0x3d6e13[_0x4017('0xd1')][_0x4017('0xf1')]},'body':_0x2221c5['body']};var _0x5a5eec={'account':{'id':_0x3d6e13[_0x4017('0xf3')]},'body':_0x2232d2,'log':_0x4017('0xf7')};return respondWithRpcPromise(_0x4017('0xf7'),_0x4017('0xf8'),_0x5a5eec,client9001)[_0x4017('0x1e')](function(){return _0x2221c5;})[_0x4017('0x28')](function(_0x1ad36e){console['error'](_0x1ad36e);});}return;})[_0x4017('0x1e')](function(){if(_0x2221c5){return _0x2221c5;}})['then'](respondWithResult(_0x28d881,null))[_0x4017('0x28')](function(_0x15c8a0){console[_0x4017('0x24')](_0x4017('0x28'),_0x15c8a0);for(var _0x5a4e70 of _0xbff152){var _0x2354c7=path[_0x4017('0x7b')](config[_0x4017('0x82')],_0x4017('0xdc'),_0x4017('0xdd'),_0x4017('0xde'),'offline-chat',_0x5a4e70[_0x4017('0x75')]);fs_extra[_0x4017('0xf9')](_0x2354c7)[_0x4017('0x28')](function(_0x262edb){console[_0x4017('0x24')](_0x4017('0xfa'),_0x2354c7,_0x262edb);});}});};exports[_0x4017('0xfb')]=function(_0x52cbda,_0x2a00e1,_0x540282){return db[_0x4017('0xb9')]['find']({'where':{'id':_0x52cbda[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x2a00e1,null))[_0x4017('0x1e')](function(_0x380e37){if(_0x380e37){return _0x380e37['addInteraction'](_0x52cbda[_0x4017('0x5c')][_0x4017('0x6b')],_['omit'](_0x52cbda[_0x4017('0x5c')],[_0x4017('0x6b'),'id'])||{});}})[_0x4017('0x1e')](respondWithResult(_0x2a00e1,null))['catch'](handleError(_0x2a00e1,null));};exports['getInteractions']=function(_0x409637,_0x3e2eda,_0xf0d78b){var _0x14a861={'raw':![],'where':{}};var _0x402f6f={};var _0x5209e8={'count':0x0,'rows':[]};return db[_0x4017('0x3d')]['findOne']({'where':{'id':_0x409637[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x3e2eda,null))[_0x4017('0x1e')](function(_0x41488a){if(_0x41488a){_0x402f6f[_0x4017('0x42')]=_['keys'](db['ChatInteraction'][_0x4017('0x3e')]);_0x402f6f[_0x4017('0x44')]=_[_0x4017('0x45')](_0x409637['query']);_0x402f6f[_0x4017('0x4c')]=_[_0x4017('0x58')](_0x402f6f[_0x4017('0x42')],_0x402f6f[_0x4017('0x44')]);_0x14a861['attributes']=_[_0x4017('0x58')](_0x402f6f['model'],qs[_0x4017('0x47')](_0x409637[_0x4017('0x44')][_0x4017('0x47')]));_0x14a861[_0x4017('0x46')]=_0x14a861['attributes'][_0x4017('0x48')]?_0x14a861[_0x4017('0x46')]:_0x402f6f['model'];if(!_0x409637[_0x4017('0x44')]['hasOwnProperty']('nolimit')){_0x14a861[_0x4017('0x2e')]=qs['limit'](_0x409637[_0x4017('0x44')][_0x4017('0x2e')]);_0x14a861[_0x4017('0x2c')]=qs['offset'](_0x409637[_0x4017('0x44')][_0x4017('0x2c')]);}_0x14a861[_0x4017('0x49')]=qs['sort'](_0x409637['query'][_0x4017('0x4a')]);_0x14a861['where']=qs[_0x4017('0x4c')](_[_0x4017('0x4d')](_0x409637[_0x4017('0x44')],_0x402f6f[_0x4017('0x4c')]));_0x14a861[_0x4017('0x4b')][_0x4017('0x65')]=_0x41488a['id'];if(_0x409637['query'][_0x4017('0x4e')]){_0x14a861[_0x4017('0x4b')]=_[_0x4017('0x50')](_0x14a861['where'],{'$or':_[_0x4017('0x3c')](_0x14a861[_0x4017('0x46')],function(_0xb1ebd4){var _0x542f9e={};_0x542f9e[_0xb1ebd4]={'$like':'%'+_0x409637['query'][_0x4017('0x4e')]+'%'};return _0x542f9e;})});}_0x14a861=_['merge']({},_0x14a861,_0x409637[_0x4017('0x51')]);return db[_0x4017('0xb9')][_0x4017('0x2f')]({'where':_0x14a861[_0x4017('0x4b')]})['then'](function(_0x4e5908){_0x5209e8['count']=_0x4e5908;if(_0x409637[_0x4017('0x44')]['includeAll']){_0x14a861[_0x4017('0x52')]=[{'model':db[_0x4017('0x93')],'as':'Contact','required':![]},{'model':db[_0x4017('0xc5')],'as':_0x4017('0xfc'),'attributes':[_0x4017('0x43'),_0x4017('0xfd'),_0x4017('0xfe')],'required':![]},{'model':db[_0x4017('0xff')],'as':'Tags','attributes':['id',_0x4017('0x43'),_0x4017('0x100')],'where':_0x409637[_0x4017('0x44')][_0x4017('0x101')]?{'id':_0x409637[_0x4017('0x44')]['tag']}:undefined,'required':_0x409637[_0x4017('0x44')][_0x4017('0x101')]?!![]:![]}];}return db[_0x4017('0xb9')][_0x4017('0x53')](_0x14a861);})[_0x4017('0x1e')](function(_0xc35f1b){_0x5209e8[_0x4017('0x54')]=_0xc35f1b;return _0x5209e8;});}})['then'](respondWithFilteredResult(_0x3e2eda,_0x14a861))[_0x4017('0x28')](handleError(_0x3e2eda,null));};function iftimePromise(_0x327dbe,_0x2e4686){return respondWithRpcPromise('Command','getSnippet',{'command':_0x2e4686[_0x4017('0x102')]?util[_0x4017('0xb2')](_0x4017('0x103'),_0x327dbe[_0x4017('0x104')],_0x2e4686[_0x4017('0x102')]):util[_0x4017('0xb2')](_0x4017('0x105'),_0x327dbe[_0x4017('0x104')])},client9002)[_0x4017('0x1e')](function(_0x5d14cf){var _0x2d7f13=_0x5d14cf&&_0x5d14cf['indexOf'](_0x4017('0x106'))>=0x0?!![]:![];logger[_0x4017('0x1f')](_0x4017('0x107'),_0x2e4686['id'],_0x327dbe['id'],_0x327dbe[_0x4017('0x104')],_0x2d7f13?_0x4017('0x108'):_0x4017('0x109'),_0x2e4686[_0x4017('0x102')]?_0x2e4686[_0x4017('0x102')]:'No\x20timezone');return _0x2d7f13;})[_0x4017('0x28')](function(_0x4ffa7f){logger[_0x4017('0x24')](_0x4017('0x107'),_0x2e4686['id'],_0x327dbe['id'],_0x327dbe['interval'],util[_0x4017('0x10a')](_0x4ffa7f,{'showHidden':![],'depth':null}),_0x2e4686[_0x4017('0x102')]?_0x2e4686[_0x4017('0x102')]:_0x4017('0x10b'));return![];});}exports['getSnippet']=function(_0x4b784d,_0x2c02b6,_0xf5473e){var _0x57248f=0x0;var _0xad8a6b=0x0;var _0x15078d=![];var _0x23a107;var _0xeb882b;return db['ChatWebsite'][_0x4017('0x5a')]({'where':{'id':_0x4b784d['params']['id']},'include':[{'model':db[_0x4017('0x10c')],'as':_0x4017('0x10c'),'include':[{'model':db['Interval'],'as':_0x4017('0x10d'),'attributes':['id',_0x4017('0x104')],'raw':!![]}]}]})[_0x4017('0x1e')](handleEntityNotFound(_0x2c02b6,null))[_0x4017('0x1e')](function(_0x3088fc){if(_0x3088fc){_0x23a107=_0x3088fc;return _0x3088fc[_0x4017('0x10e')]({'raw':!![]});}})['then'](function(_0x400ff4){if(_0x23a107){if(_0x400ff4){_0xeb882b=_0x400ff4;}}return require(_0x4017('0x7d'))[_0x4017('0x7e')]();})['then'](function(_0x274ccf){if(_0x274ccf){_0xad8a6b=_0x274ccf['virtual'];_0x15078d=_0x274ccf[_0x4017('0x7f')];}})[_0x4017('0x1e')](function(){return db['ChatInteraction'][_0x4017('0x2f')]({'where':{'closed':![]}});})[_0x4017('0x1e')](function(_0x4e40c7){_0x57248f=_0x4e40c7;if(_0xad8a6b&&_0x4e40c7>_0xad8a6b){return db[_0x4017('0x10f')][_0x4017('0x68')]({'where':{'id':0x1}})[_0x4017('0x1e')](function(_0x116c60){if(_0x116c60){_0x116c60['increment']('chatLicenseExceeded');}});}})[_0x4017('0x1e')](function(){if(_0x23a107[_0x4017('0x10c')]&&_0x23a107[_0x4017('0x10c')][_0x4017('0x10d')]){var _0x5638b7=[];for(var _0x13900d=0x0;_0x13900d<_0x23a107[_0x4017('0x10c')][_0x4017('0x10d')][_0x4017('0x48')];_0x13900d++){var _0x3ecb5c=_0x23a107[_0x4017('0x10c')]['Intervals'][_0x13900d][_0x4017('0x5e')]({'plain':!![]});_0x5638b7[_0x4017('0xc0')](iftimePromise(_0x3ecb5c,_0x23a107));}return BPromise[_0x4017('0x110')](_0x5638b7)[_0x4017('0x1e')](function(_0x3f278d){return _[_0x4017('0x111')](_0x3f278d);});}else{return!![];}})[_0x4017('0x1e')](function(_0x44bd71){var _0x184c51=fs[_0x4017('0xd4')](path['join'](config[_0x4017('0x82')],_0x4017('0x112')),'utf8');var _0x373e2b={'remote':_0x23a107[_0x4017('0x113')],'query':querystring[_0x4017('0x114')](_[_0x4017('0x50')](_0x23a107['get']({'plain':!![]}),{'customerIp':_0x4b784d[_0x4017('0x8f')][_0x4017('0xab')]||_0x4b784d['headers'][_0x4017('0x115')]||_0x4b784d[_0x4017('0x116')][_0x4017('0x117')]||_0x4b784d['ip'],'referer':_0x4b784d[_0x4017('0x8f')][_0x4017('0x118')],'openedInteractions':_0x57248f,'maxInteractions':_0xad8a6b,'virtual':_0x15078d[_0x4017('0x119')],'online':_0x44bd71,'custom':_0x15078d}))[_0x4017('0x11a')](/'/g,'\x5c\x27')};_0x2c02b6[_0x4017('0xcc')](ejs[_0x4017('0xd7')](Mustache[_0x4017('0xd7')](_0x184c51,_0x373e2b),{'proactiveActions':_0xeb882b,'alignment':_0x23a107['alignment'],'verticalAlignment':_0x23a107['verticalAlignment'],'div_color':_0x23a107[_0x4017('0x100')],'text_color':_0x23a107[_0x4017('0x11b')],'button_color':_0x23a107[_0x4017('0x11c')],'background_color':_0x23a107[_0x4017('0x11d')]}));})[_0x4017('0x28')](handleError(_0x2c02b6,null));};exports['addApplications']=function(_0xc7a393,_0x2a7a89,_0x370669){return db[_0x4017('0x3d')]['findOne']({'where':{'id':_0xc7a393[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x2a7a89,null))[_0x4017('0x1e')](function(_0x4eb78f){if(_0x4eb78f){return db[_0x4017('0xe1')][_0x4017('0xe2')](function(_0x82203a){return db[_0x4017('0xa3')][_0x4017('0x36')]({'where':{'ChatWebsiteId':_0xc7a393['params']['id']},'transaction':_0x82203a})[_0x4017('0x1e')](function(_0x37a834){var _0x42124c=_['map'](_0xc7a393['body'],function(_0x80618c){_0x80618c['ChatWebsiteId']=_0xc7a393[_0x4017('0x56')]['id'];return _0x80618c;});return db['ChatApplication']['bulkCreate'](_0x42124c,{'transaction':_0x82203a});});})[_0x4017('0x1e')](function(){return db[_0x4017('0xa3')][_0x4017('0x11e')]({'where':{'ChatWebsiteId':_0xc7a393[_0x4017('0x56')]['id']},'order':_0x4017('0xa6')});});}})[_0x4017('0x1e')](respondWithResult(_0x2a7a89,null))[_0x4017('0x28')](handleError(_0x2a7a89,null));};exports[_0x4017('0x11f')]=function(_0x3aa70b,_0x2a7e70,_0x6516af){var _0x274308={};var _0x495e47={};var _0x268788;var _0x5d0254;return db[_0x4017('0x3d')][_0x4017('0x68')]({'where':{'id':_0x3aa70b['params']['id']}})['then'](handleEntityNotFound(_0x2a7e70,null))[_0x4017('0x1e')](function(_0x48954c){if(_0x48954c){_0x268788=_0x48954c;_0x495e47['model']=_[_0x4017('0x45')](db[_0x4017('0xa3')]['rawAttributes']);_0x495e47[_0x4017('0x44')]=_[_0x4017('0x45')](_0x3aa70b[_0x4017('0x44')]);_0x495e47['filters']=_[_0x4017('0x58')](_0x495e47[_0x4017('0x42')],_0x495e47[_0x4017('0x44')]);_0x274308['attributes']=_['intersection'](_0x495e47[_0x4017('0x42')],qs[_0x4017('0x47')](_0x3aa70b[_0x4017('0x44')][_0x4017('0x47')]));_0x274308[_0x4017('0x46')]=_0x274308[_0x4017('0x46')][_0x4017('0x48')]?_0x274308[_0x4017('0x46')]:_0x495e47['model'];_0x274308['order']=qs[_0x4017('0x4a')](_0x3aa70b[_0x4017('0x44')][_0x4017('0x4a')]);_0x274308[_0x4017('0x4b')]=qs[_0x4017('0x4c')](_[_0x4017('0x4d')](_0x3aa70b['query'],_0x495e47[_0x4017('0x4c')]));if(_0x3aa70b[_0x4017('0x44')][_0x4017('0x4e')]){_0x274308['where']=_[_0x4017('0x50')](_0x274308[_0x4017('0x4b')],{'$or':_[_0x4017('0x3c')](_0x274308[_0x4017('0x46')],function(_0x1f05c8){var _0x4ccace={};_0x4ccace[_0x1f05c8]={'$like':'%'+_0x3aa70b[_0x4017('0x44')]['filter']+'%'};return _0x4ccace;})});}_0x274308=_[_0x4017('0x50')]({},_0x274308,_0x3aa70b[_0x4017('0x51')]);return _0x268788[_0x4017('0x11f')](_0x274308);}})[_0x4017('0x1e')](function(_0x2052d1){if(_0x2052d1){_0x5d0254=_0x2052d1[_0x4017('0x48')];if(!_0x3aa70b[_0x4017('0x44')][_0x4017('0x69')](_0x4017('0x6f'))){_0x274308[_0x4017('0x2e')]=qs['limit'](_0x3aa70b['query'][_0x4017('0x2e')]);_0x274308[_0x4017('0x2c')]=qs[_0x4017('0x2c')](_0x3aa70b[_0x4017('0x44')][_0x4017('0x2c')]);}return _0x268788[_0x4017('0x11f')](_0x274308);}})['then'](function(_0x4c64b9){if(_0x4c64b9){return _0x4c64b9?{'count':_0x5d0254,'rows':_0x4c64b9}:null;}})[_0x4017('0x1e')](respondWithResult(_0x2a7e70,null))[_0x4017('0x28')](handleError(_0x2a7e70,null));};exports[_0x4017('0x120')]=function(_0x5392b9,_0x39a810,_0x27dd90){return db[_0x4017('0x121')][_0x4017('0x5a')]({'where':{'id':_0x5392b9[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x39a810,null))[_0x4017('0x1e')](function(_0x3a0fa1){if(_0x3a0fa1){return _0x3a0fa1[_0x4017('0x120')](_0x5392b9['body'][_0x4017('0x6b')],_[_0x4017('0x122')](_0x5392b9[_0x4017('0x5c')],['ids','id'])||{});}})['then'](respondWithResult(_0x39a810,null))[_0x4017('0x28')](handleError(_0x39a810,null));};exports[_0x4017('0x10e')]=function(_0x1bce3a,_0x5ac31f,_0xf188ea){var _0x53e0df={};var _0x30d500={};var _0xdfb97d;var _0x5ee835;return db[_0x4017('0x3d')][_0x4017('0x68')]({'where':{'id':_0x1bce3a['params']['id']}})['then'](handleEntityNotFound(_0x5ac31f,null))[_0x4017('0x1e')](function(_0xcc8a3a){if(_0xcc8a3a){_0xdfb97d=_0xcc8a3a;_0x30d500['model']=_[_0x4017('0x45')](db[_0x4017('0x123')]['rawAttributes']);_0x30d500[_0x4017('0x44')]=_['keys'](_0x1bce3a[_0x4017('0x44')]);_0x30d500[_0x4017('0x4c')]=_[_0x4017('0x58')](_0x30d500[_0x4017('0x42')],_0x30d500[_0x4017('0x44')]);_0x53e0df[_0x4017('0x46')]=_[_0x4017('0x58')](_0x30d500[_0x4017('0x42')],qs[_0x4017('0x47')](_0x1bce3a[_0x4017('0x44')][_0x4017('0x47')]));_0x53e0df[_0x4017('0x46')]=_0x53e0df[_0x4017('0x46')][_0x4017('0x48')]?_0x53e0df[_0x4017('0x46')]:_0x30d500[_0x4017('0x42')];_0x53e0df[_0x4017('0x49')]=qs[_0x4017('0x4a')](_0x1bce3a[_0x4017('0x44')]['sort']);_0x53e0df[_0x4017('0x4b')]=qs[_0x4017('0x4c')](_[_0x4017('0x4d')](_0x1bce3a[_0x4017('0x44')],_0x30d500[_0x4017('0x4c')]));if(_0x1bce3a['query'][_0x4017('0x4e')]){_0x53e0df[_0x4017('0x4b')]=_[_0x4017('0x50')](_0x53e0df['where'],{'$or':_[_0x4017('0x3c')](_0x53e0df[_0x4017('0x46')],function(_0x2394c3){var _0x3441ac={};_0x3441ac[_0x2394c3]={'$like':'%'+_0x1bce3a[_0x4017('0x44')][_0x4017('0x4e')]+'%'};return _0x3441ac;})});}_0x53e0df=_['merge']({},_0x53e0df,_0x1bce3a[_0x4017('0x51')]);return _0xdfb97d[_0x4017('0x10e')](_0x53e0df);}})[_0x4017('0x1e')](function(_0x3f0a7c){if(_0x3f0a7c){_0x5ee835=_0x3f0a7c[_0x4017('0x48')];if(!_0x1bce3a[_0x4017('0x44')][_0x4017('0x69')](_0x4017('0x6f'))){_0x53e0df['limit']=qs[_0x4017('0x2e')](_0x1bce3a[_0x4017('0x44')]['limit']);_0x53e0df[_0x4017('0x2c')]=qs[_0x4017('0x2c')](_0x1bce3a[_0x4017('0x44')]['offset']);}return _0xdfb97d[_0x4017('0x10e')](_0x53e0df);}})[_0x4017('0x1e')](function(_0x2d26a5){if(_0x2d26a5){return _0x2d26a5?{'count':_0x5ee835,'rows':_0x2d26a5}:null;}})[_0x4017('0x1e')](respondWithResult(_0x5ac31f,null))[_0x4017('0x28')](handleError(_0x5ac31f,null));};exports[_0x4017('0x124')]=function(_0x1bba67,_0x1fca04,_0xadabdd){var _0x56d5e1=_0x1bba67['query'][_0x4017('0x125')]==='false'?_0x4017('0x126'):'onlineForm';return db[_0x4017('0x3d')][_0x4017('0x5a')]({'attributes':['id',_0x56d5e1],'where':{'id':_0x1bba67['params']['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x1fca04,null))['then'](function(_0x1fd97f){if(_0x1fd97f){var _0xfc1bef=_0x1fd97f[_0x56d5e1];var _0x2b0b8c=_0xfc1bef&&_0xfc1bef[_0x4017('0x127')]?_0xfc1bef['items']:[];_0x1fca04[_0x4017('0xcc')]({'fromKey':_['isNil'](_0xfc1bef[_0x4017('0x128')])?undefined:_0xfc1bef['fromKey'],'count':_0x2b0b8c[_0x4017('0x48')],'rows':_0x2b0b8c});}})[_0x4017('0x28')](handleError(_0x1fca04,null));};exports[_0x4017('0x129')]=function(_0x5acb4c,_0x5770f6,_0x3e44b8){var _0x4b1828={'raw':![],'where':{}};var _0x4bec09={};var _0x5e0fc0={'count':0x0,'rows':[]};return db[_0x4017('0x3d')][_0x4017('0x68')]({'where':{'id':_0x5acb4c['params']['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x5770f6,null))[_0x4017('0x1e')](function(_0x429720){if(_0x429720){_0x4bec09[_0x4017('0x42')]=_[_0x4017('0x45')](db[_0x4017('0x12a')]['rawAttributes']);_0x4bec09[_0x4017('0x44')]=_[_0x4017('0x45')](_0x5acb4c[_0x4017('0x44')]);_0x4bec09[_0x4017('0x4c')]=_[_0x4017('0x58')](_0x4bec09['model'],_0x4bec09['query']);_0x4b1828[_0x4017('0x46')]=_[_0x4017('0x58')](_0x4bec09['model'],qs[_0x4017('0x47')](_0x5acb4c['query']['fields']));_0x4b1828[_0x4017('0x46')]=_0x4b1828[_0x4017('0x46')]['length']?_0x4b1828[_0x4017('0x46')]:_0x4bec09[_0x4017('0x42')];if(!_0x5acb4c[_0x4017('0x44')][_0x4017('0x69')](_0x4017('0x6f'))){_0x4b1828[_0x4017('0x2e')]=qs[_0x4017('0x2e')](_0x5acb4c[_0x4017('0x44')]['limit']);_0x4b1828[_0x4017('0x2c')]=qs['offset'](_0x5acb4c[_0x4017('0x44')]['offset']);}_0x4b1828[_0x4017('0x49')]=qs[_0x4017('0x4a')](_0x5acb4c[_0x4017('0x44')][_0x4017('0x4a')]);_0x4b1828[_0x4017('0x4b')]=qs[_0x4017('0x4c')](_['pick'](_0x5acb4c['query'],_0x4bec09[_0x4017('0x4c')]));_0x4b1828['where'][_0x4017('0x65')]=_0x429720['id'];if(_0x5acb4c['query'][_0x4017('0x4e')]){_0x4b1828[_0x4017('0x4b')]=_[_0x4017('0x50')](_0x4b1828[_0x4017('0x4b')],{'$or':_[_0x4017('0x3c')](_0x4b1828['attributes'],function(_0x23a2bd){var _0x403a60={};_0x403a60[_0x23a2bd]={'$like':'%'+_0x5acb4c[_0x4017('0x44')][_0x4017('0x4e')]+'%'};return _0x403a60;})});}_0x4b1828=_['merge']({},_0x4b1828,_0x5acb4c['options']);return db['ChatOfflineMessage'][_0x4017('0x2f')]({'where':_0x4b1828[_0x4017('0x4b')]})[_0x4017('0x1e')](function(_0x20359d){_0x5e0fc0['count']=_0x20359d;if(_0x5acb4c[_0x4017('0x44')][_0x4017('0x59')]){_0x4b1828[_0x4017('0x52')]=[{'all':!![]}];}else{_0x4b1828[_0x4017('0x52')]=[{'model':db[_0x4017('0x93')],'as':_0x4017('0x12b'),'required':![]},{'model':db[_0x4017('0xe3')],'as':_0x4017('0x12c'),'required':![]}];}return db[_0x4017('0x12a')][_0x4017('0x53')](_0x4b1828);})[_0x4017('0x1e')](function(_0x3d1001){_0x5e0fc0[_0x4017('0x54')]=_0x3d1001;return _0x5e0fc0;});}})['then'](respondWithFilteredResult(_0x5770f6,_0x4b1828))[_0x4017('0x28')](handleError(_0x5770f6,null));};exports['addAgents']=function(_0x4d6ca1,_0x2d5b8e,_0x4deb47){return db['ChatWebsite'][_0x4017('0x5a')]({'where':{'id':_0x4d6ca1[_0x4017('0x56')]['id']}})['then'](handleEntityNotFound(_0x2d5b8e,null))['then'](function(_0x1f4ce6){if(_0x1f4ce6){return _0x1f4ce6[_0x4017('0x12d')](_0x4d6ca1[_0x4017('0x5c')][_0x4017('0x6b')],_[_0x4017('0x122')](_0x4d6ca1[_0x4017('0x5c')],[_0x4017('0x6b'),'id'])||{})[_0x4017('0xd3')](function(_0x19e649){for(var _0x126960=0x0;_0x126960<_0x4d6ca1[_0x4017('0x5c')][_0x4017('0x6b')][_0x4017('0x48')];_0x126960+=0x1){socket[_0x4017('0x12e')](_0x4017('0x12f'),{'UserId':Number(_0x4d6ca1[_0x4017('0x5c')][_0x4017('0x6b')][_0x126960]),'ChatWebsiteId':Number(_0x4d6ca1[_0x4017('0x56')]['id'])});}return _0x19e649;});}})[_0x4017('0x1e')](respondWithResult(_0x2d5b8e,null))[_0x4017('0x28')](handleError(_0x2d5b8e,null));};exports[_0x4017('0x130')]=function(_0x37e74e,_0x2eaa28,_0x5cffe3){return db[_0x4017('0x3d')]['find']({'where':{'id':_0x37e74e['params']['id']}})['then'](handleEntityNotFound(_0x2eaa28,null))[_0x4017('0x1e')](function(_0x2e7f4b){if(_0x2e7f4b){return _0x2e7f4b[_0x4017('0x130')](_0x37e74e['query'][_0x4017('0x6b')])[_0x4017('0x1e')](function(){if(_[_0x4017('0x131')](_0x37e74e['query'][_0x4017('0x6b')])){for(var _0x42d28f=0x0;_0x42d28f<_0x37e74e['query'][_0x4017('0x6b')][_0x4017('0x48')];_0x42d28f+=0x1){socket[_0x4017('0x12e')](_0x4017('0x132'),{'UserId':Number(_0x37e74e['query'][_0x4017('0x6b')][_0x42d28f]),'ChatWebsiteId':Number(_0x37e74e[_0x4017('0x56')]['id'])});}}else{socket['emit'](_0x4017('0x132'),{'UserId':Number(_0x37e74e[_0x4017('0x44')]['ids']),'ChatWebsiteId':Number(_0x37e74e[_0x4017('0x56')]['id'])});}});}})[_0x4017('0x1e')](respondWithStatusCode(_0x2eaa28,null))['catch'](handleError(_0x2eaa28,null));};exports['getAgents']=function(_0x28b20c,_0x539555,_0x5e4268){var _0x1e545d={};var _0x54867f={};var _0x517000;var _0x247163;return db[_0x4017('0x3d')][_0x4017('0x68')]({'where':{'id':_0x28b20c[_0x4017('0x56')]['id']}})[_0x4017('0x1e')](handleEntityNotFound(_0x539555,null))[_0x4017('0x1e')](function(_0x5217f0){if(_0x5217f0){_0x517000=_0x5217f0;_0x54867f[_0x4017('0x42')]=_[_0x4017('0x45')](db[_0x4017('0xc5')]['rawAttributes']);_0x54867f['query']=_[_0x4017('0x45')](_0x28b20c[_0x4017('0x44')]);_0x54867f[_0x4017('0x4c')]=_['intersection'](_0x54867f[_0x4017('0x42')],_0x54867f['query']);_0x1e545d[_0x4017('0x46')]=_[_0x4017('0x58')](_0x54867f['model'],qs['fields'](_0x28b20c['query'][_0x4017('0x47')]));_0x1e545d[_0x4017('0x46')]=_0x1e545d[_0x4017('0x46')][_0x4017('0x48')]?_0x1e545d[_0x4017('0x46')]:_0x54867f[_0x4017('0x42')];_0x1e545d['order']=qs[_0x4017('0x4a')](_0x28b20c[_0x4017('0x44')][_0x4017('0x4a')]);_0x1e545d[_0x4017('0x4b')]=qs['filters'](_[_0x4017('0x4d')](_0x28b20c['query'],_0x54867f[_0x4017('0x4c')]));if(_0x28b20c[_0x4017('0x44')][_0x4017('0x4e')]){_0x1e545d['where']=_[_0x4017('0x50')](_0x1e545d[_0x4017('0x4b')],{'$or':_[_0x4017('0x3c')](_0x1e545d[_0x4017('0x46')],function(_0x55eca9){var _0x44a882={};_0x44a882[_0x55eca9]={'$like':'%'+_0x28b20c[_0x4017('0x44')][_0x4017('0x4e')]+'%'};return _0x44a882;})});}_0x1e545d=_[_0x4017('0x50')]({},_0x1e545d,_0x28b20c[_0x4017('0x51')]);return _0x517000[_0x4017('0x133')](_0x1e545d);}})[_0x4017('0x1e')](function(_0x29353a){if(_0x29353a){_0x247163=_0x29353a[_0x4017('0x48')];if(!_0x28b20c[_0x4017('0x44')][_0x4017('0x69')](_0x4017('0x6f'))){_0x1e545d[_0x4017('0x2e')]=qs[_0x4017('0x2e')](_0x28b20c[_0x4017('0x44')][_0x4017('0x2e')]);_0x1e545d[_0x4017('0x2c')]=qs[_0x4017('0x2c')](_0x28b20c['query'][_0x4017('0x2c')]);}return _0x517000[_0x4017('0x133')](_0x1e545d);}})[_0x4017('0x1e')](function(_0x414a82){if(_0x414a82){return _0x414a82?{'count':_0x247163,'rows':_0x414a82}:null;}})['then'](respondWithResult(_0x539555,null))[_0x4017('0x28')](handleError(_0x539555,null));};
\ No newline at end of file
+var _0x2cb8=['updatedAt','CompanyId','ListId','from\x20is\x20mandatory','Sequelize','ValidationError','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','from','List','DESC','Applications','account','applications','list','orderBy','priority','asc','Contacts','CmContact','contact','customerIp','cf-connecting-ip','x-forwarded-for','split','firstName','lastName','x-real-port','browser','version','format','%s\x20%s','unknown','device','%s\x20%s\x20%s','vendor','threadId','ChatInteraction','externalUrl','interaction','messageId','created','close','*,*,*,*','AttachmentId','User','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','notify','offline','files','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','offlineMessageBody','ChatOfflineMessage','originalname','mimetype','attachments','offline-chat','openNewInteraction','sequelize','transaction','Smtp','forwardOffline','forwardOfflineAddress','service','host','port','secure','authentication','auth','pass','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','mapValues','subjectOffline','NotifyMailAccount','notifyMail','server','addInteraction','omit','getInteractions','Contact','Owner','fullname','Tag','Tags','color','tag','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','OFFLINE','timezone','No\x20timezone','inspect','getSnippet','Interval','Intervals','virtual','custom','License','increment','chatLicenseExceeded','push','all','some','server/files/chat/iframe.ejs','remote','connection','remoteAddress','replace','alignment','color_button','backgroundColor','addApplications','ChatApplication','bulkCreate','findAndCountAll','getApplications','addProactiveActions','getProactiveActions','ChatProactiveAction','getFields','online','false','onlineForm','items','fromKey','getOfflineMessages','Attachment','Attachments','addAgents','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','crypto','jsforce','desk.js','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','jayson/promise','client','http','then','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatWebsite,\x20%s,\x20%s','info','sendStatus','status','json','offset','limit','undefined','count','set','apply','save','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','index','Pause','map','ChatWebsite','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','mandatoryDispositionPause','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ChatWebsiteId','Disposition','findOne','filter','removeDispositions','CannedAnswer','removeAnswers','ids','addLogo','sitepic','file','addAvatar','agentAvatar','filename','addCustomerAvatar','customerAvatar','systemAvatar','getLogo','join','root','getLicense','isNil','existsSync','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','user-agent-parser','headers','user-agent','getResult','chat','no\x20available\x20attributes','difference','createdAt'];(function(_0x2adaf2,_0x16e497){var _0x136044=function(_0xf464ce){while(--_0xf464ce){_0x2adaf2['push'](_0x2adaf2['shift']());}};_0x136044(++_0x16e497);}(_0x2cb8,0x1c7));var _0x82cb=function(_0x4a242e,_0x3d6d22){_0x4a242e=_0x4a242e-0x0;var _0x46c517=_0x2cb8[_0x4a242e];return _0x46c517;};'use strict';var emlformat=require(_0x82cb('0x0'));var rimraf=require(_0x82cb('0x1'));var zipdir=require(_0x82cb('0x2'));var jsonpatch=require(_0x82cb('0x3'));var rp=require(_0x82cb('0x4'));var moment=require('moment');var BPromise=require(_0x82cb('0x5'));var Mustache=require(_0x82cb('0x6'));var util=require(_0x82cb('0x7'));var path=require('path');var sox=require(_0x82cb('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x82cb('0x9'));var _=require(_0x82cb('0xa'));var squel=require('squel');var crypto=require(_0x82cb('0xb'));var jsforce=require(_0x82cb('0xc'));var deskjs=require(_0x82cb('0xd'));var toCsv=require(_0x82cb('0xe'));var querystring=require(_0x82cb('0xf'));var Papa=require(_0x82cb('0x10'));var Redis=require(_0x82cb('0x11'));var authService=require(_0x82cb('0x12'));var qs=require(_0x82cb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x82cb('0x14'));var logger=require('../../config/logger')(_0x82cb('0x15'));var utils=require(_0x82cb('0x16'));var config=require(_0x82cb('0x17'));var licenseUtil=require(_0x82cb('0x18'));var db=require(_0x82cb('0x19'))['db'];config[_0x82cb('0x1a')]=_[_0x82cb('0x1b')](config[_0x82cb('0x1a')],{'host':_0x82cb('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x82cb('0x1a')]));require('./chatWebsite.socket')['register'](socket);var jayson=require(_0x82cb('0x1d'));var client=jayson[_0x82cb('0x1e')][_0x82cb('0x1f')]({'port':0x232c});var client9002=jayson[_0x82cb('0x1e')][_0x82cb('0x1f')]({'port':0x232a});var client9003=jayson['client'][_0x82cb('0x1f')]({'port':0x232b});var client9001=jayson[_0x82cb('0x1e')][_0x82cb('0x1f')]({'port':0x2329});function respondWithRpcPromise(_0x421eb5,_0x2d8a2e,_0x2b0bf9,_0x1ca106){return new BPromise(function(_0x19ce2a,_0x290dc8){var _0x43c0b3=_0x1ca106||client;return _0x43c0b3['request'](_0x421eb5,_0x2b0bf9)[_0x82cb('0x20')](function(_0x33f886){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x2d8a2e,_0x82cb('0x21'));logger[_0x82cb('0x22')](_0x82cb('0x23'),_0x2d8a2e,_0x82cb('0x21'),JSON[_0x82cb('0x24')](_0x33f886));if(_0x33f886[_0x82cb('0x25')]){if(_0x33f886[_0x82cb('0x25')][_0x82cb('0x26')]===0x1f4){logger[_0x82cb('0x25')]('ChatWebsite,\x20%s,\x20%s',_0x2d8a2e,_0x33f886[_0x82cb('0x25')]['message']);return _0x290dc8(_0x33f886[_0x82cb('0x25')][_0x82cb('0x27')]);}logger[_0x82cb('0x25')](_0x82cb('0x28'),_0x2d8a2e,_0x33f886[_0x82cb('0x25')][_0x82cb('0x27')]);return _0x19ce2a(_0x33f886[_0x82cb('0x25')][_0x82cb('0x27')]);}else{logger[_0x82cb('0x29')](_0x82cb('0x28'),_0x2d8a2e,_0x82cb('0x21'));_0x19ce2a(_0x33f886['result'][_0x82cb('0x27')]);}})['catch'](function(_0x2defcd){logger[_0x82cb('0x25')](_0x82cb('0x28'),_0x2d8a2e,_0x2defcd);_0x290dc8(_0x2defcd);});});}function respondWithStatusCode(_0xf8104f,_0x5bb1fd){_0x5bb1fd=_0x5bb1fd||0xcc;return function(_0x303cd7){if(_0x303cd7){return _0xf8104f[_0x82cb('0x2a')](_0x5bb1fd);}return _0xf8104f[_0x82cb('0x2b')](_0x5bb1fd)['end']();};}function respondWithResult(_0x347ba4,_0x2c7375){_0x2c7375=_0x2c7375||0xc8;return function(_0x41e248){if(_0x41e248){return _0x347ba4[_0x82cb('0x2b')](_0x2c7375)[_0x82cb('0x2c')](_0x41e248);}};}function respondWithFilteredResult(_0x35f135,_0x275012){return function(_0x2ba6e1){if(_0x2ba6e1){var _0x432eb7=typeof _0x275012[_0x82cb('0x2d')]==='undefined'&&typeof _0x275012[_0x82cb('0x2e')]===_0x82cb('0x2f');var _0xfcbb1=_0x2ba6e1['count'];var _0x252e2a=_0x432eb7?0x0:_0x275012[_0x82cb('0x2d')];var _0x49b27c=_0x432eb7?_0x2ba6e1[_0x82cb('0x30')]:_0x275012['offset']+_0x275012[_0x82cb('0x2e')];var _0x2e8d06;if(_0x49b27c>=_0xfcbb1){_0x49b27c=_0xfcbb1;_0x2e8d06=0xc8;}else{_0x2e8d06=0xce;}_0x35f135[_0x82cb('0x2b')](_0x2e8d06);return _0x35f135[_0x82cb('0x31')]('Content-Range',_0x252e2a+'-'+_0x49b27c+'/'+_0xfcbb1)[_0x82cb('0x2c')](_0x2ba6e1);}return null;};}function patchUpdates(_0x4cd0be){return function(_0x13caac){try{jsonpatch[_0x82cb('0x32')](_0x13caac,_0x4cd0be,!![]);}catch(_0x5e95a8){return BPromise['reject'](_0x5e95a8);}return _0x13caac[_0x82cb('0x33')]();};}function saveUpdates(_0x122d88,_0x1eb380){return function(_0x4d96a0){if(_0x4d96a0){return _0x4d96a0['update'](_0x122d88)['then'](function(_0x190a71){return _0x190a71;});}return null;};}function removeEntity(_0x5d2051,_0x379dd2){return function(_0x422836){if(_0x422836){return _0x422836[_0x82cb('0x34')]()[_0x82cb('0x20')](function(){var _0x37140f=_0x422836[_0x82cb('0x35')]({'plain':!![]});var _0x3fbf90=_0x82cb('0x36');return db[_0x82cb('0x37')]['destroy']({'where':{'type':_0x3fbf90,'resourceId':_0x37140f['id']}})[_0x82cb('0x20')](function(){return _0x422836;});})[_0x82cb('0x20')](function(){_0x5d2051[_0x82cb('0x2b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x18c761,_0x1d0a87){return function(_0x1777bd){if(!_0x1777bd){_0x18c761[_0x82cb('0x2a')](0x194);}return _0x1777bd;};}function handleError(_0x1ab45d,_0x30acc8){_0x30acc8=_0x30acc8||0x1f4;return function(_0x373ba7){logger[_0x82cb('0x25')](_0x373ba7[_0x82cb('0x38')]);if(_0x373ba7['name']){delete _0x373ba7[_0x82cb('0x39')];}_0x1ab45d[_0x82cb('0x2b')](_0x30acc8)[_0x82cb('0x3a')](_0x373ba7);};}exports[_0x82cb('0x3b')]=function(_0xe163a5,_0x215bc4){var _0x19a975={'include':[{'model':db[_0x82cb('0x3c')],'as':'mandatoryDispositionPause'}]},_0x5f430f={},_0x5b77d5={'count':0x0,'rows':[]};var _0x57ff1d=_[_0x82cb('0x3d')](db[_0x82cb('0x3e')]['rawAttributes'],function(_0x1fbc10){return{'name':_0x1fbc10[_0x82cb('0x3f')],'type':_0x1fbc10[_0x82cb('0x40')][_0x82cb('0x41')]};});_0x5f430f[_0x82cb('0x42')]=_['map'](_0x57ff1d,'name');_0x5f430f[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0xe163a5[_0x82cb('0x43')]);_0x5f430f[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x5f430f[_0x82cb('0x42')],_0x5f430f[_0x82cb('0x43')]);_0x19a975['attributes']=_[_0x82cb('0x46')](_0x5f430f['model'],qs[_0x82cb('0x47')](_0xe163a5[_0x82cb('0x43')][_0x82cb('0x47')]));_0x19a975[_0x82cb('0x48')]=_0x19a975[_0x82cb('0x48')][_0x82cb('0x49')]?_0x19a975['attributes']:_0x5f430f[_0x82cb('0x42')];if(!_0xe163a5['query'][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x19a975['limit']=qs['limit'](_0xe163a5[_0x82cb('0x43')]['limit']);_0x19a975[_0x82cb('0x2d')]=qs['offset'](_0xe163a5[_0x82cb('0x43')][_0x82cb('0x2d')]);}_0x19a975[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0xe163a5['query'][_0x82cb('0x4d')]);_0x19a975[_0x82cb('0x4e')]=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0xe163a5[_0x82cb('0x43')],_0x5f430f[_0x82cb('0x45')]),_0x57ff1d);if(_0xe163a5[_0x82cb('0x43')]['filter']){_0x19a975[_0x82cb('0x4e')]=_[_0x82cb('0x50')](_0x19a975[_0x82cb('0x4e')],{'$or':_['map'](_0x57ff1d,function(_0x185b6f){if(_0x185b6f[_0x82cb('0x40')]!==_0x82cb('0x51')){var _0x480a08={};_0x480a08[_0x185b6f[_0x82cb('0x39')]]={'$like':'%'+_0xe163a5[_0x82cb('0x43')]['filter']+'%'};return _0x480a08;}})});}_0x19a975=_[_0x82cb('0x50')]({},_0x19a975,_0xe163a5[_0x82cb('0x52')]);var _0x3a8af={'where':_0x19a975[_0x82cb('0x4e')]};return db[_0x82cb('0x3e')]['count'](_0x3a8af)[_0x82cb('0x20')](function(_0x49c2bc){_0x5b77d5[_0x82cb('0x30')]=_0x49c2bc;if(_0xe163a5[_0x82cb('0x43')][_0x82cb('0x53')]){_0x19a975[_0x82cb('0x54')]=[{'all':!![]}];}return db['ChatWebsite'][_0x82cb('0x55')](_0x19a975);})[_0x82cb('0x20')](function(_0x58e2e1){_0x5b77d5[_0x82cb('0x56')]=_0x58e2e1;return _0x5b77d5;})[_0x82cb('0x20')](respondWithFilteredResult(_0x215bc4,_0x19a975))[_0x82cb('0x57')](handleError(_0x215bc4,null));};exports['show']=function(_0xbdc9e1,_0x24156e){var _0x3bbe54={'raw':![],'where':{'id':_0xbdc9e1[_0x82cb('0x58')]['id']},'include':[{'model':db[_0x82cb('0x3c')],'as':_0x82cb('0x59')}]},_0x3e01f1={};_0x3e01f1['model']=_[_0x82cb('0x44')](db[_0x82cb('0x3e')][_0x82cb('0x5a')]);_0x3e01f1[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0xbdc9e1[_0x82cb('0x43')]);_0x3e01f1[_0x82cb('0x45')]=_['intersection'](_0x3e01f1[_0x82cb('0x42')],_0x3e01f1[_0x82cb('0x43')]);_0x3bbe54['attributes']=_[_0x82cb('0x46')](_0x3e01f1[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0xbdc9e1[_0x82cb('0x43')]['fields']));_0x3bbe54[_0x82cb('0x48')]=_0x3bbe54[_0x82cb('0x48')][_0x82cb('0x49')]?_0x3bbe54[_0x82cb('0x48')]:_0x3e01f1['model'];if(_0xbdc9e1[_0x82cb('0x43')][_0x82cb('0x53')]){_0x3bbe54[_0x82cb('0x54')]=[{'all':!![]}];}_0x3bbe54=_[_0x82cb('0x50')]({},_0x3bbe54,_0xbdc9e1[_0x82cb('0x52')]);return db[_0x82cb('0x3e')][_0x82cb('0x5b')](_0x3bbe54)[_0x82cb('0x20')](handleEntityNotFound(_0x24156e,null))['then'](respondWithResult(_0x24156e,null))['catch'](handleError(_0x24156e,null));};exports[_0x82cb('0x5c')]=function(_0x48af95,_0x36e982){return db['ChatWebsite']['create'](_0x48af95[_0x82cb('0x5d')],{})[_0x82cb('0x20')](function(_0x2e7a13){var _0x57f7a6=_0x48af95[_0x82cb('0x5e')][_0x82cb('0x35')]({'plain':!![]});if(!_0x57f7a6)throw new Error(_0x82cb('0x5f'));if(_0x57f7a6['role']==='user'){var _0x43cce9=_0x2e7a13[_0x82cb('0x35')]({'plain':!![]});var _0xdf8154=_0x82cb('0x36');return db[_0x82cb('0x60')][_0x82cb('0x5b')]({'where':{'name':_0xdf8154,'userProfileId':_0x57f7a6[_0x82cb('0x61')]},'raw':!![]})[_0x82cb('0x20')](function(_0x5d1ea6){if(_0x5d1ea6&&_0x5d1ea6['autoAssociation']===0x0){return db[_0x82cb('0x37')][_0x82cb('0x5c')]({'name':_0x43cce9['name'],'resourceId':_0x43cce9['id'],'type':_0x5d1ea6[_0x82cb('0x39')],'sectionId':_0x5d1ea6['id']},{})[_0x82cb('0x20')](function(){return _0x2e7a13;});}else{return _0x2e7a13;}})['catch'](function(_0x70e473){logger['error'](_0x82cb('0x62'),_0x70e473);throw _0x70e473;});}return _0x2e7a13;})['then'](respondWithResult(_0x36e982,0xc9))[_0x82cb('0x57')](handleError(_0x36e982,null));};exports[_0x82cb('0x63')]=function(_0x68b1ec,_0x37e80d){if(_0x68b1ec['body']['id']){delete _0x68b1ec[_0x82cb('0x5d')]['id'];}return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x68b1ec[_0x82cb('0x58')]['id']},'include':[{'model':db[_0x82cb('0x3c')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x37e80d,null))[_0x82cb('0x20')](saveUpdates(_0x68b1ec[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x37e80d,null))[_0x82cb('0x57')](handleError(_0x37e80d,null));};exports[_0x82cb('0x34')]=function(_0x59d323,_0x126178){return db[_0x82cb('0x3e')]['find']({'where':{'id':_0x59d323[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x126178,null))['then'](removeEntity(_0x126178,null))[_0x82cb('0x57')](handleError(_0x126178,null));};exports[_0x82cb('0x64')]=function(_0x5f5bba,_0x26cf32){return db['ChatWebsite'][_0x82cb('0x64')]()[_0x82cb('0x20')](respondWithResult(_0x26cf32,null))[_0x82cb('0x57')](handleError(_0x26cf32,null));};exports[_0x82cb('0x65')]=function(_0x280d22,_0x3a39da,_0x2f0220){if(_0x280d22[_0x82cb('0x5d')]['id']){delete _0x280d22[_0x82cb('0x5d')]['id'];}return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x280d22[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x3a39da,null))[_0x82cb('0x20')](function(_0x45bc5e){if(_0x45bc5e){_0x280d22['body'][_0x82cb('0x66')]=_0x45bc5e['id'];return db[_0x82cb('0x67')][_0x82cb('0x5c')](_0x280d22[_0x82cb('0x5d')]);}})[_0x82cb('0x20')](respondWithResult(_0x3a39da,null))[_0x82cb('0x57')](handleError(_0x3a39da,null));};exports['getDispositions']=function(_0x43f36c,_0x475949,_0x43cf2b){var _0x258d79={'raw':![],'where':{}};var _0x53f60e={};var _0x5db098={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x43f36c[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x475949,null))[_0x82cb('0x20')](function(_0x4bf7ca){if(_0x4bf7ca){_0x53f60e['model']=_[_0x82cb('0x44')](db['Disposition'][_0x82cb('0x5a')]);_0x53f60e[_0x82cb('0x43')]=_['keys'](_0x43f36c[_0x82cb('0x43')]);_0x53f60e['filters']=_[_0x82cb('0x46')](_0x53f60e[_0x82cb('0x42')],_0x53f60e[_0x82cb('0x43')]);_0x258d79[_0x82cb('0x48')]=_['intersection'](_0x53f60e[_0x82cb('0x42')],qs['fields'](_0x43f36c[_0x82cb('0x43')][_0x82cb('0x47')]));_0x258d79['attributes']=_0x258d79[_0x82cb('0x48')]['length']?_0x258d79[_0x82cb('0x48')]:_0x53f60e[_0x82cb('0x42')];if(!_0x43f36c[_0x82cb('0x43')][_0x82cb('0x4a')]('nolimit')){_0x258d79[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x43f36c['query']['limit']);_0x258d79['offset']=qs[_0x82cb('0x2d')](_0x43f36c['query'][_0x82cb('0x2d')]);}_0x258d79[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x43f36c[_0x82cb('0x43')][_0x82cb('0x4d')]);_0x258d79[_0x82cb('0x4e')]=qs['filters'](_[_0x82cb('0x4f')](_0x43f36c[_0x82cb('0x43')],_0x53f60e[_0x82cb('0x45')]));_0x258d79[_0x82cb('0x4e')][_0x82cb('0x66')]=_0x4bf7ca['id'];if(_0x43f36c[_0x82cb('0x43')][_0x82cb('0x69')]){_0x258d79[_0x82cb('0x4e')]=_['merge'](_0x258d79[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x258d79['attributes'],function(_0x436390){var _0x25186e={};_0x25186e[_0x436390]={'$like':'%'+_0x43f36c[_0x82cb('0x43')]['filter']+'%'};return _0x25186e;})});}_0x258d79=_[_0x82cb('0x50')]({},_0x258d79,_0x43f36c[_0x82cb('0x52')]);return db[_0x82cb('0x67')][_0x82cb('0x30')]({'where':_0x258d79[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x2dfcf2){_0x5db098[_0x82cb('0x30')]=_0x2dfcf2;if(_0x43f36c[_0x82cb('0x43')][_0x82cb('0x53')]){_0x258d79['include']=[{'all':!![]}];}return db[_0x82cb('0x67')][_0x82cb('0x55')](_0x258d79);})[_0x82cb('0x20')](function(_0x1db08d){_0x5db098[_0x82cb('0x56')]=_0x1db08d;return _0x5db098;});}})[_0x82cb('0x20')](respondWithFilteredResult(_0x475949,_0x258d79))[_0x82cb('0x57')](handleError(_0x475949,null));};exports[_0x82cb('0x6a')]=function(_0x530bc7,_0x5806fd,_0x472c08){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x530bc7[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x5806fd,null))['then'](function(_0xde495c){if(_0xde495c){return _0xde495c['removeDispositions'](_0x530bc7[_0x82cb('0x43')]['ids']);}})[_0x82cb('0x20')](respondWithStatusCode(_0x5806fd,null))[_0x82cb('0x57')](handleError(_0x5806fd,null));};exports['addAnswer']=function(_0xdb96b1,_0x2107d4,_0x3999a2){if(_0xdb96b1[_0x82cb('0x5d')]['id']){delete _0xdb96b1[_0x82cb('0x5d')]['id'];}return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0xdb96b1['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x2107d4,null))['then'](function(_0x2d07ed){if(_0x2d07ed){_0xdb96b1[_0x82cb('0x5d')]['ChatWebsiteId']=_0x2d07ed['id'];return db[_0x82cb('0x6b')]['create'](_0xdb96b1['body']);}})['then'](respondWithResult(_0x2107d4,null))['catch'](handleError(_0x2107d4,null));};exports['getAnswers']=function(_0x42bdb3,_0x4ae739,_0x190728){var _0x4ddc8d={'raw':![],'where':{}};var _0x5a7489={};var _0x43db20={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x42bdb3['params']['id']}})['then'](handleEntityNotFound(_0x4ae739,null))[_0x82cb('0x20')](function(_0x365144){if(_0x365144){_0x5a7489['model']=_['keys'](db['CannedAnswer']['rawAttributes']);_0x5a7489[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x42bdb3['query']);_0x5a7489[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x5a7489[_0x82cb('0x42')],_0x5a7489['query']);_0x4ddc8d[_0x82cb('0x48')]=_[_0x82cb('0x46')](_0x5a7489[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x42bdb3[_0x82cb('0x43')]['fields']));_0x4ddc8d[_0x82cb('0x48')]=_0x4ddc8d[_0x82cb('0x48')][_0x82cb('0x49')]?_0x4ddc8d[_0x82cb('0x48')]:_0x5a7489[_0x82cb('0x42')];if(!_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x4a')]('nolimit')){_0x4ddc8d[_0x82cb('0x2e')]=qs['limit'](_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x4ddc8d[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x2d')]);}_0x4ddc8d[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x42bdb3[_0x82cb('0x43')]['sort']);_0x4ddc8d[_0x82cb('0x4e')]=qs['filters'](_['pick'](_0x42bdb3['query'],_0x5a7489[_0x82cb('0x45')]));_0x4ddc8d['where'][_0x82cb('0x66')]=_0x365144['id'];if(_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x69')]){_0x4ddc8d[_0x82cb('0x4e')]=_[_0x82cb('0x50')](_0x4ddc8d['where'],{'$or':_[_0x82cb('0x3d')](_0x4ddc8d[_0x82cb('0x48')],function(_0x18d44c){var _0x3836a0={};_0x3836a0[_0x18d44c]={'$like':'%'+_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x3836a0;})});}_0x4ddc8d=_['merge']({},_0x4ddc8d,_0x42bdb3[_0x82cb('0x52')]);return db[_0x82cb('0x6b')]['count']({'where':_0x4ddc8d[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x35db74){_0x43db20[_0x82cb('0x30')]=_0x35db74;if(_0x42bdb3[_0x82cb('0x43')][_0x82cb('0x53')]){_0x4ddc8d[_0x82cb('0x54')]=[{'all':!![]}];}return db[_0x82cb('0x6b')][_0x82cb('0x55')](_0x4ddc8d);})['then'](function(_0x4a38d6){_0x43db20[_0x82cb('0x56')]=_0x4a38d6;return _0x43db20;});}})['then'](respondWithFilteredResult(_0x4ae739,_0x4ddc8d))['catch'](handleError(_0x4ae739,null));};exports[_0x82cb('0x6c')]=function(_0xf138a7,_0x4f2d9c,_0x228d65){return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0xf138a7['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x4f2d9c,null))['then'](function(_0x314341){if(_0x314341){return _0x314341[_0x82cb('0x6c')](_0xf138a7['query'][_0x82cb('0x6d')]);}})[_0x82cb('0x20')](respondWithStatusCode(_0x4f2d9c,null))[_0x82cb('0x57')](handleError(_0x4f2d9c,null));};exports[_0x82cb('0x6e')]=function(_0x2805af,_0x3c0dc4,_0x39f051){_0x2805af[_0x82cb('0x5d')][_0x82cb('0x6f')]=_0x2805af[_0x82cb('0x70')]['filename'];return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0x2805af['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x3c0dc4,null))[_0x82cb('0x20')](saveUpdates(_0x2805af[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x3c0dc4,null))[_0x82cb('0x57')](handleError(_0x3c0dc4,null));};exports[_0x82cb('0x71')]=function(_0x482d01,_0x8a365c,_0x100390){_0x482d01[_0x82cb('0x5d')][_0x82cb('0x72')]=_0x482d01[_0x82cb('0x70')][_0x82cb('0x73')];return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0x482d01[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x8a365c,null))['then'](saveUpdates(_0x482d01['body'],null))[_0x82cb('0x20')](respondWithResult(_0x8a365c,null))[_0x82cb('0x57')](handleError(_0x8a365c,null));};exports[_0x82cb('0x74')]=function(_0x1db51d,_0x3fd8f2,_0x226e38){_0x1db51d[_0x82cb('0x5d')][_0x82cb('0x75')]=_0x1db51d[_0x82cb('0x70')][_0x82cb('0x73')];return db[_0x82cb('0x3e')]['find']({'where':{'id':_0x1db51d[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x3fd8f2,null))[_0x82cb('0x20')](saveUpdates(_0x1db51d[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x3fd8f2,null))['catch'](handleError(_0x3fd8f2,null));};exports['addSystemAvatar']=function(_0x22076e,_0x297449,_0x52c690){_0x22076e[_0x82cb('0x5d')][_0x82cb('0x76')]=_0x22076e[_0x82cb('0x70')][_0x82cb('0x73')];return db[_0x82cb('0x3e')]['find']({'where':{'id':_0x22076e[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x297449,null))['then'](saveUpdates(_0x22076e[_0x82cb('0x5d')],null))[_0x82cb('0x20')](respondWithResult(_0x297449,null))['catch'](handleError(_0x297449,null));};exports[_0x82cb('0x77')]=function(_0xcdb074,_0x1278ba,_0x4ab8c7){var _0x3b42d4=path[_0x82cb('0x78')](config[_0x82cb('0x79')],'server/files/images/logos/default_logo.svg');var _0x1b182a={'where':{'id':_0xcdb074[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x6f')],'raw':!![]};var _0x57d37a=![];return require(_0x82cb('0x18'))[_0x82cb('0x7a')]()[_0x82cb('0x20')](function(_0xcc84cd){if(_0xcc84cd){_0x57d37a=_0xcc84cd['custom'];}})[_0x82cb('0x20')](function(){return db[_0x82cb('0x3e')]['find'](_0x1b182a);})['then'](handleEntityNotFound(_0x1278ba,null))['then'](function(_0xc87b1){if(_0xc87b1){if(!_[_0x82cb('0x7b')](_0xc87b1[_0x82cb('0x6f')])){if(fs[_0x82cb('0x7c')](path['join'](config[_0x82cb('0x79')],_0x82cb('0x7d'),_0xc87b1[_0x82cb('0x6f')]))&&_0x57d37a){_0x3b42d4=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x7d'),_0xc87b1[_0x82cb('0x6f')]);}}return _0x1278ba[_0x82cb('0x7e')](_0x3b42d4);}})['catch'](handleError(_0x1278ba,null));};exports['getAvatar']=function(_0x131cce,_0x1e4ce8,_0x3121d4){var _0x22ff3a=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x7f'));var _0x40db28={'where':{'id':_0x131cce[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x72')],'raw':!![]};return db[_0x82cb('0x3e')]['find'](_0x40db28)[_0x82cb('0x20')](handleEntityNotFound(_0x1e4ce8,null))[_0x82cb('0x20')](function(_0x37e724){if(_0x37e724){if(!_[_0x82cb('0x7b')](_0x37e724[_0x82cb('0x72')])){if(fs['existsSync'](path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x37e724[_0x82cb('0x72')]))){_0x22ff3a=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x37e724[_0x82cb('0x72')]);}}return _0x1e4ce8['download'](_0x22ff3a);}})['catch'](handleError(_0x1e4ce8,null));};exports[_0x82cb('0x81')]=function(_0x27abe0,_0x5e9ec8,_0x5c3bd5){var _0x55a4dd=path[_0x82cb('0x78')](config[_0x82cb('0x79')],'server/files/images/avatars/customer_avatar.png');var _0x1a4316={'where':{'id':_0x27abe0[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x75'),_0x82cb('0x82')],'raw':!![]};return db[_0x82cb('0x3e')][_0x82cb('0x5b')](_0x1a4316)[_0x82cb('0x20')](handleEntityNotFound(_0x5e9ec8,null))['then'](function(_0x9e6d6a){if(_0x9e6d6a){if(!_[_0x82cb('0x7b')](_0x9e6d6a[_0x82cb('0x75')])){if(fs[_0x82cb('0x7c')](path['join'](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x9e6d6a[_0x82cb('0x75')]))&&_0x9e6d6a['showCustomerAvatar']){_0x55a4dd=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x9e6d6a[_0x82cb('0x75')]);}}return _0x5e9ec8[_0x82cb('0x7e')](_0x55a4dd);}})[_0x82cb('0x57')](handleError(_0x5e9ec8,null));};exports[_0x82cb('0x83')]=function(_0x5b900f,_0x590fb8,_0x4de84a){var _0x512978=path[_0x82cb('0x78')](config['root'],_0x82cb('0x84'));var _0x587cd0={'where':{'id':_0x5b900f[_0x82cb('0x58')]['id']},'attributes':['id',_0x82cb('0x76')],'raw':!![]};return db[_0x82cb('0x3e')]['find'](_0x587cd0)[_0x82cb('0x20')](handleEntityNotFound(_0x590fb8,null))[_0x82cb('0x20')](function(_0x2199a2){if(_0x2199a2){if(!_[_0x82cb('0x7b')](_0x2199a2['systemAvatar'])){if(fs[_0x82cb('0x7c')](path[_0x82cb('0x78')](config['root'],_0x82cb('0x80'),_0x2199a2['systemAvatar']))){_0x512978=path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x80'),_0x2199a2['systemAvatar']);}}return _0x590fb8[_0x82cb('0x7e')](_0x512978);}})[_0x82cb('0x57')](handleError(_0x590fb8,null));};exports['notify']=function(_0x53de98,_0x211f08,_0x2acbc1){var _0x404fd3=require(_0x82cb('0x85'));var _0xc6e85=new _0x404fd3();var _0x3d56fd=_0xc6e85['setUA'](_0x53de98[_0x82cb('0x86')][_0x82cb('0x87')])[_0x82cb('0x88')]();var _0x64839e={'body':_0x53de98['body'],'channel':_0x82cb('0x89')};var _0x2fb4a2=[];var _0x107725=[];var _0x49d945={};var _0x11378a=![];return db['CmContact'][_0x82cb('0x64')]()['then'](function(_0x26d294){if(!_0x26d294){throw new db['Sequelize']['ValidationError'](_0x82cb('0x8a'));}_0x2fb4a2=_[_0x82cb('0x8b')](_[_0x82cb('0x44')](_0x26d294),[_0x82cb('0x8c'),_0x82cb('0x8d')]);_0x107725=_[_0x82cb('0x8b')](_[_0x82cb('0x44')](_0x26d294),[_0x82cb('0x8c'),_0x82cb('0x8d'),_0x82cb('0x8e'),_0x82cb('0x8f')]);if(_0x53de98[_0x82cb('0x5d')]['id']){delete _0x53de98['body']['id'];}if(_[_0x82cb('0x7b')](_0x53de98[_0x82cb('0x5d')]['from'])){throw new db['Sequelize']['ValidationError'](_0x82cb('0x90'));}if(_[_0x82cb('0x7b')](_0x53de98[_0x82cb('0x5d')][_0x82cb('0x5d')])||_0x53de98[_0x82cb('0x5d')][_0x82cb('0x5d')]===''){throw new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x93'));}if(_['isNil'](_0x53de98[_0x82cb('0x5d')]['mapKey'])){throw new db[(_0x82cb('0x91'))]['ValidationError'](_0x82cb('0x94')+_0x107725);}if(!_[_0x82cb('0x95')](_0x107725,_0x53de98[_0x82cb('0x5d')][_0x82cb('0x96')])){throw new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x97')+_0x107725);}_0x49d945[_0x53de98[_0x82cb('0x5d')][_0x82cb('0x96')]]=_0x53de98['body'][_0x82cb('0x98')];})[_0x82cb('0x20')](function(){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x53de98[_0x82cb('0x58')]['id']},'include':[{'model':db['CmList'],'as':_0x82cb('0x99'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x49d945,'limit':0x1,'order':[[_0x82cb('0x8d'),_0x82cb('0x9a')]]}]},{'model':db['ChatApplication'],'as':_0x82cb('0x9b')}]});})[_0x82cb('0x20')](handleEntityNotFound(_0x211f08,null))[_0x82cb('0x20')](function(_0x2bb9e6){if(_0x2bb9e6&&_0x2bb9e6[_0x82cb('0x99')]){_0x64839e[_0x82cb('0x9c')]=_0x2bb9e6;_0x64839e[_0x82cb('0x9d')]=_0x2bb9e6['Applications'];_0x64839e[_0x82cb('0x9e')]=_0x2bb9e6['List'];_0x64839e[_0x82cb('0x9d')]=_[_0x82cb('0x9f')](_0x64839e['applications'],[_0x82cb('0xa0')],[_0x82cb('0xa1')]);if(_0x64839e[_0x82cb('0x9c')][_0x82cb('0x9b')]){delete _0x64839e['account'][_0x82cb('0x9b')];}if(_0x64839e[_0x82cb('0x9c')][_0x82cb('0x99')]&&_0x64839e[_0x82cb('0x9c')][_0x82cb('0x99')][_0x82cb('0xa2')]['length']){return _0x64839e[_0x82cb('0x9c')]['List'][_0x82cb('0xa2')][0x0];}var _0x502a12=_[_0x82cb('0x1b')](_0x53de98['body'],{'firstName':_0x53de98[_0x82cb('0x5d')][_0x82cb('0x98')],'ListId':_0x2bb9e6[_0x82cb('0x8f')]});_0x502a12[_0x53de98[_0x82cb('0x5d')][_0x82cb('0x96')]]=_0x53de98['body'][_0x82cb('0x98')];return db[_0x82cb('0xa3')][_0x82cb('0x5c')](_0x502a12,{'fields':_0x2fb4a2,'raw':!![]});}})['then'](handleEntityNotFound(_0x211f08,null))[_0x82cb('0x20')](function(_0x2cd077){_0x64839e[_0x82cb('0xa4')]=_0x2cd077;var _0x5c5655=_0x53de98['body'][_0x82cb('0xa5')];if(_0x53de98[_0x82cb('0x86')][_0x82cb('0xa6')]){_0x5c5655=_0x53de98[_0x82cb('0x86')]['cf-connecting-ip'];}else if(_0x53de98[_0x82cb('0x86')][_0x82cb('0xa7')]){_0x5c5655=_['first'](_0x53de98[_0x82cb('0x86')][_0x82cb('0xa7')][_0x82cb('0xa8')](','));}if(_0x2cd077){var _0x3c3192={'ContactId':_0x2cd077['id'],'ChatWebsiteId':_0x53de98[_0x82cb('0x58')]['id'],'from':(_0x2cd077[_0x82cb('0xa9')]||'')+'\x20'+(_0x2cd077[_0x82cb('0xaa')]||''),'customerIp':_0x5c5655,'customerPort':_0x53de98[_0x82cb('0x86')][_0x82cb('0xab')]?_0x53de98['headers']['x-real-port']:null,'referer':_0x53de98[_0x82cb('0x5d')]['referer'],'browserName':_0x3d56fd[_0x82cb('0xac')]['name']&&_0x3d56fd[_0x82cb('0xac')][_0x82cb('0xad')]?util[_0x82cb('0xae')](_0x82cb('0xaf'),_0x3d56fd[_0x82cb('0xac')]['name'],_0x3d56fd[_0x82cb('0xac')][_0x82cb('0xad')]):'unknown','browserVersion':_0x3d56fd['browser'][_0x82cb('0xad')]||_0x82cb('0xb0'),'osName':util[_0x82cb('0xae')](_0x82cb('0xaf'),_0x3d56fd['os']['name'],_0x3d56fd['os'][_0x82cb('0xad')]),'osVersion':_0x3d56fd['os'][_0x82cb('0xad')],'deviceModel':_0x3d56fd[_0x82cb('0xb1')][_0x82cb('0x42')]&&_0x3d56fd[_0x82cb('0xb1')]['vendor']?util[_0x82cb('0xae')](_0x82cb('0xb2'),_0x3d56fd[_0x82cb('0xb1')]['model'],_0x3d56fd[_0x82cb('0xb1')][_0x82cb('0xb3')],_0x3d56fd[_0x82cb('0xb1')]['type']):null,'deviceVendor':_0x3d56fd[_0x82cb('0xb1')]['vendor'],'deviceType':_0x3d56fd['device'][_0x82cb('0x40')],'formData':JSON['stringify'](_0x53de98[_0x82cb('0x5d')])};var _0x2a3470={'ChatWebsiteId':_0x53de98[_0x82cb('0x58')]['id'],'closed':![]};if(_0x53de98[_0x82cb('0x5d')][_0x82cb('0xb4')]){_0x2a3470[_0x82cb('0xb4')]=_0x53de98['body']['threadId'];return db[_0x82cb('0xb5')]['find']({'where':_0x2a3470})[_0x82cb('0x20')](function(_0x3a84ca){if(_0x3a84ca){return[_0x3a84ca,![]];}_0x3c3192[_0x82cb('0xb4')]=_0x53de98['body'][_0x82cb('0xb4')];_0x3c3192[_0x82cb('0xb6')]=_0x53de98[_0x82cb('0x5d')]['externalUrl'];return db['ChatInteraction'][_0x82cb('0x5c')](_0x3c3192)['then'](function(_0x575b05){return[_0x575b05,!![]];});});}_0x2a3470['ContactId']=_0x2cd077['id'];if(_0x53de98['body'][_0x82cb('0xb7')]&&_0x53de98['body']['interaction']['id']){_0x2a3470['id']=_0x53de98['body'][_0x82cb('0xb7')]['id'];return db[_0x82cb('0xb5')]['find']({'where':_0x2a3470})['then'](function(_0x184b39){if(_0x184b39){return[_0x184b39,![]];}return db['ChatInteraction'][_0x82cb('0x5c')](_0x3c3192)[_0x82cb('0x20')](function(_0x22567a){return[_0x22567a,!![]];});});}return db[_0x82cb('0xb5')][_0x82cb('0x5c')](_0x3c3192)[_0x82cb('0x20')](function(_0x547d5d){return[_0x547d5d,!![]];});}})['spread'](function(_0x67e297,_0x12bb48){if(_0x67e297){_0x11378a=_0x12bb48;if(!_0x12bb48){var _0x50519e={'from':(_0x64839e[_0x82cb('0xa4')]['firstName']||'')+'\x20'+(_0x64839e['contact'][_0x82cb('0xaa')]||'')};if(_0x53de98[_0x82cb('0x5d')]['threadId']&&_0x53de98[_0x82cb('0x5d')][_0x82cb('0xb8')]&&_0x53de98['body']['threadId']!=_0x53de98[_0x82cb('0x5d')][_0x82cb('0xb8')]){_0x50519e[_0x82cb('0xb4')]=_0x53de98[_0x82cb('0x5d')]['messageId'];}return _0x67e297[_0x82cb('0x63')](_0x50519e);}else{return _0x67e297;}}})[_0x82cb('0x20')](function(_0x3acc68){_0x64839e['interaction']=_0x3acc68[_0x82cb('0x35')]({'plain':!![]});_0x64839e['interaction'][_0x82cb('0xb9')]=_0x11378a;if(_0x64839e[_0x82cb('0xb7')][_0x82cb('0xb9')]){if(_0x64839e[_0x82cb('0x9c')]['autoclose']){_0x64839e['applications']['push']({'id':0x0,'priority':_0x64839e['applications'][_0x82cb('0x49')]+0x1,'app':_0x82cb('0xba'),'appdata':'unmanaged','interval':_0x82cb('0xbb')});}}return db['ChatMessage'][_0x82cb('0x5c')]({'body':_0x53de98['body'][_0x82cb('0x5d')],'ChatWebsiteId':_0x53de98[_0x82cb('0x58')]['id'],'ChatInteractionId':_0x3acc68['id'],'direction':'in','ContactId':_0x64839e['contact']['id'],'AttachmentId':_0x53de98[_0x82cb('0x5d')][_0x82cb('0xbc')]});})[_0x82cb('0x20')](function(_0x4bedd8){_0x64839e[_0x82cb('0x27')]=_0x4bedd8;if(_0x64839e['interaction']['UserId']){return db[_0x82cb('0xbd')][_0x82cb('0x5b')]({'attributes':['id',_0x82cb('0x39')],'where':{'id':_0x64839e[_0x82cb('0xb7')]['UserId']}})[_0x82cb('0x20')](function(_0x3363f9){if(_0x3363f9){_0x64839e[_0x82cb('0x9d')][_0x82cb('0xbe')]({'id':0x0,'priority':0x0,'app':_0x82cb('0xbf'),'appdata':_0x3363f9[_0x82cb('0x39')]+','+(_0x64839e[_0x82cb('0x9c')][_0x82cb('0xc0')]||0xa),'interval':_0x82cb('0xbb')});_0x64839e['forcedOwnership']=!![];}return respondWithRpcPromise(_0x82cb('0xc1'),'startRouting',_0x64839e);});}return respondWithRpcPromise(_0x82cb('0xc1'),_0x82cb('0xc2'),_0x64839e);})[_0x82cb('0x20')](function(_0x40f8b7){respondWithRpcPromise(_0x82cb('0xc3'),_0x82cb('0xc3'),{'event':_0x82cb('0xc4'),'message':_0x40f8b7},client9002);return _0x40f8b7;})[_0x82cb('0x20')](respondWithResult(_0x211f08,null))[_0x82cb('0x57')](handleError(_0x211f08,null));};exports[_0x82cb('0xc5')]=function(_0x4edc3f,_0x2f354c,_0x28738f){var _0x5e578e,_0x49dc8c,_0x1bfd89;var _0x3bb465=[];var _0x5b7073=[];var _0x55da12={};var _0x56dd17=_0x4edc3f[_0x82cb('0xc6')]||[];var _0xa3c2ad=[];var _0x13da15;return db[_0x82cb('0xa3')][_0x82cb('0x64')]()['then'](function(_0x17d91d){if(!_0x17d91d){throw new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x8a'));}_0x5b7073=_[_0x82cb('0x8b')](_[_0x82cb('0x44')](_0x17d91d),[_0x82cb('0x8c'),_0x82cb('0x8d')]);_0x3bb465=_['difference'](_['keys'](_0x17d91d),[_0x82cb('0x8c'),'updatedAt',_0x82cb('0x8e'),_0x82cb('0x8f')]);if(_0x4edc3f[_0x82cb('0x5d')]['id']){delete _0x4edc3f['body']['id'];}if(_[_0x82cb('0x7b')](_0x4edc3f['body'][_0x82cb('0x98')])){throw _0x2f354c[_0x82cb('0x2b')](0x1f4)[_0x82cb('0x3a')](new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0x90')));}if(_[_0x82cb('0x7b')](_0x4edc3f['body'][_0x82cb('0x5d')])||_0x4edc3f['body'][_0x82cb('0x5d')]===''){throw _0x2f354c['status'](0x1f4)[_0x82cb('0x3a')](new db['Sequelize'][(_0x82cb('0x92'))]('body\x20is\x20mandatory\x20and\x20not\x20empty'));}if(_['isNil'](_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0xc7')])){throw _0x2f354c[_0x82cb('0x2b')](0x1f4)[_0x82cb('0x3a')](new db[(_0x82cb('0x91'))]['ValidationError'](_0x82cb('0xc8')+_0x3bb465));}if(!_[_0x82cb('0x95')](_0x3bb465,_0x4edc3f[_0x82cb('0x5d')]['mapKeyOffline'])){throw _0x2f354c[_0x82cb('0x2b')](0x1f4)[_0x82cb('0x3a')](new db[(_0x82cb('0x91'))][(_0x82cb('0x92'))](_0x82cb('0xc9')+_0x3bb465));}_0x55da12[_0x4edc3f[_0x82cb('0x5d')]['mapKeyOffline']]=_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0x98')];})['then'](function(){return db['ChatWebsite'][_0x82cb('0x5b')]({'where':{'id':_0x4edc3f[_0x82cb('0x58')]['id']},'include':[{'model':db['CmList'],'as':'List'},{'model':db[_0x82cb('0xca')],'as':_0x82cb('0xca')}]});})[_0x82cb('0x20')](handleEntityNotFound(_0x2f354c,null))['then'](function(_0x329be7){if(_0x329be7&&_0x329be7[_0x82cb('0x99')]){_0x49dc8c=_0x329be7;var _0x271e8e=_[_0x82cb('0x1b')](_0x4edc3f[_0x82cb('0x5d')],{'firstName':_0x4edc3f['body'][_0x82cb('0x98')],'phone':_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0x98')],'ListId':_0x329be7['ListId']});_0x271e8e[_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0xc7')]]=_0x4edc3f['body'][_0x82cb('0x98')];return db[_0x82cb('0xa3')][_0x82cb('0xcb')]({'where':_0x55da12,'defaults':_0x271e8e});}})[_0x82cb('0xcc')](function(_0x55b368){if(_0x55b368){_0x1bfd89=_0x55b368;var _0x56178b=fs[_0x82cb('0xcd')](path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0xce')),'utf8');var _0x30499b=ejs['render'](_0x56178b,{'body':_['toPairs'](_0x4edc3f[_0x82cb('0x5d')][_0x82cb('0x5d')]),'bodyTitle':_0x49dc8c[_0x82cb('0xcf')]});return db[_0x82cb('0xd0')]['create']({'body':_0x30499b,'ContactId':_0x55b368['id'],'ChatWebsiteId':_0x49dc8c['id']});}})[_0x82cb('0x20')](function(_0x4604ac){_0x13da15=_0x4604ac;if(_0x56dd17[_0x82cb('0x49')]){var _0x480a89=_0x56dd17[_0x82cb('0x3d')](function(_0x2a4ff4){return{'name':_0x2a4ff4[_0x82cb('0xd1')],'basename':_0x2a4ff4[_0x82cb('0x73')],'type':_0x2a4ff4[_0x82cb('0xd2')],'ChatOfflineMessageId':_0x4604ac['id']};});_0xa3c2ad=_0x480a89['map'](_0x38b239=>{var _0x290562={'filename':_0x38b239['name'],'path':path[_0x82cb('0x78')](config[_0x82cb('0x79')],'server','files',_0x82cb('0xd3'),_0x82cb('0xd4'),_0x38b239['basename'])};return _0x290562;});if(!_0x49dc8c[_0x82cb('0xd5')]){return db[_0x82cb('0xd6')][_0x82cb('0xd7')](function(_0x46aa7a){return db['Attachment']['bulkCreate'](_0x480a89,{'transaction':_0x46aa7a});});}}})['then'](function(){if(_0x13da15){_0x5e578e=_0x13da15;return db[_0x82cb('0xca')][_0x82cb('0x68')]({'where':{'active':!![]},'include':[{'model':db['MailServerOut'],'as':_0x82cb('0xd8'),'raw':!![]}]});}})['then'](function(_0x15852e){if(_0x15852e&&_0x15852e[_0x82cb('0xd8')]&&_0x49dc8c[_0x82cb('0xd9')]&&_0x49dc8c[_0x82cb('0xda')]){var _0x54e34f={'tls':{'rejectUnauthorized':![]}};if(_0x15852e['Smtp'][_0x82cb('0xdb')]){_0x54e34f[_0x82cb('0xdb')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdb')];}else{_0x54e34f[_0x82cb('0xdc')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdc')];_0x54e34f[_0x82cb('0xdd')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdd')];_0x54e34f[_0x82cb('0xde')]=_0x15852e[_0x82cb('0xd8')][_0x82cb('0xde')];}if(_0x15852e[_0x82cb('0xd8')][_0x82cb('0xdf')]){_0x54e34f[_0x82cb('0xe0')]={'user':_0x15852e[_0x82cb('0xd8')][_0x82cb('0x5e')],'pass':_0x15852e[_0x82cb('0xd8')][_0x82cb('0xe1')]};}return respondWithRpcPromise(_0x82cb('0xe2'),_0x82cb('0xe3'),{'account':_0x54e34f,'message':{'from':util[_0x82cb('0xae')](_0x82cb('0xe4'),_0x15852e['name'],_0x15852e[_0x82cb('0xe5')]||_0x15852e[_0x82cb('0xd8')]['user']),'to':_0x49dc8c['forwardOfflineAddress'],'subject':_0x49dc8c[_0x82cb('0xe6')],'html':_0x5e578e[_0x82cb('0x5d')],'attachments':_0xa3c2ad}},client9003)[_0x82cb('0x20')](function(){return _0x5e578e;})['catch'](function(_0x43c715){console[_0x82cb('0x25')](_0x43c715);});}})[_0x82cb('0x20')](function(){if(_0x49dc8c&&_0x49dc8c[_0x82cb('0xd5')]&&_0x49dc8c[_0x82cb('0xe7')]){var _0x183ff5=[];if(_0x56dd17[_0x82cb('0x49')]){_0x183ff5=_0x56dd17[_0x82cb('0x3d')](function(_0x46b737){return{'name':_0x46b737[_0x82cb('0xd1')],'basename':_0x46b737[_0x82cb('0x73')],'type':_0x46b737[_0x82cb('0xd2')],'ChatOfflineMessageId':_0x13da15['id']};});}var _0x4bbaa9;if(!_[_0x82cb('0x7b')](_0x49dc8c['subjectOffline'])){var _0x2f0503=_['map'](_0x4edc3f[_0x82cb('0x5d')],function(_0x53c179){return _0x53c179;});var _0x58c823=_['toPairsIn'](_0x2f0503)[0x0];var _0x10a628=_[_0x82cb('0xe8')](_0x58c823,function(_0x74e019){return _0x74e019;});_0x4bbaa9=_0x10a628[0x1][_0x49dc8c[_0x82cb('0xe9')]];}var _0x574bff={'from':_0x1bfd89['email'],'firstName':_0x1bfd89[_0x82cb('0xa9')],'lastName':_0x1bfd89[_0x82cb('0xaa')],'mapKey':_0x82cb('0xe5'),'message':{'from':_0x1bfd89['email'],'to':_0x49dc8c[_0x82cb('0xca')][_0x82cb('0xe5')],'cc':'','subject':_[_0x82cb('0x7b')](_0x4bbaa9)?_0x49dc8c[_0x82cb('0xe6')]:_0x4bbaa9,'messageId':'','sentAt':new Date(),'attach':_0x183ff5['length'],'attachments':_0x183ff5,'originChannel':'Chat','ChatWebsiteId':_0x49dc8c['id'],'ChatOfflineMessageId':_0x5e578e['id'],'originTo':_0x49dc8c['MailAccount'][_0x82cb('0xe5')]},'body':_0x5e578e[_0x82cb('0x5d')]};var _0x40232a={'account':{'id':_0x49dc8c[_0x82cb('0xe7')]},'body':_0x574bff,'log':_0x82cb('0xea')};return respondWithRpcPromise(_0x82cb('0xea'),_0x82cb('0xeb'),_0x40232a,client9001)[_0x82cb('0x20')](function(){return _0x5e578e;})[_0x82cb('0x57')](function(_0xa7285e){console[_0x82cb('0x25')](_0xa7285e);});}return;})[_0x82cb('0x20')](function(){if(_0x5e578e){return _0x5e578e;}})[_0x82cb('0x20')](respondWithResult(_0x2f354c,null))['catch'](function(_0x3339c6){console[_0x82cb('0x25')]('catch',_0x3339c6);for(var _0x15179f of _0x56dd17){var _0x84a9e9=path[_0x82cb('0x78')](config['root'],_0x82cb('0xec'),_0x82cb('0xc6'),_0x82cb('0xd3'),_0x82cb('0xd4'),_0x15179f[_0x82cb('0x73')]);fs_extra['remove'](_0x84a9e9)[_0x82cb('0x57')](function(_0x45d2c8){console[_0x82cb('0x25')]('Could\x20not\x20remove\x20attachment\x20file',_0x84a9e9,_0x45d2c8);});}});};exports[_0x82cb('0xed')]=function(_0x3005a2,_0x297d9d,_0x595efd){return db[_0x82cb('0xb5')]['find']({'where':{'id':_0x3005a2[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x297d9d,null))['then'](function(_0x4edb23){if(_0x4edb23){return _0x4edb23[_0x82cb('0xed')](_0x3005a2[_0x82cb('0x5d')][_0x82cb('0x6d')],_[_0x82cb('0xee')](_0x3005a2[_0x82cb('0x5d')],['ids','id'])||{});}})['then'](respondWithResult(_0x297d9d,null))['catch'](handleError(_0x297d9d,null));};exports[_0x82cb('0xef')]=function(_0x48ad93,_0x2ff132,_0x46e777){var _0x2e7a8d={'raw':![],'where':{}};var _0x596e61={};var _0x1575f0={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x48ad93[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x2ff132,null))[_0x82cb('0x20')](function(_0x4a9d33){if(_0x4a9d33){_0x596e61[_0x82cb('0x42')]=_[_0x82cb('0x44')](db[_0x82cb('0xb5')][_0x82cb('0x5a')]);_0x596e61['query']=_[_0x82cb('0x44')](_0x48ad93[_0x82cb('0x43')]);_0x596e61[_0x82cb('0x45')]=_['intersection'](_0x596e61[_0x82cb('0x42')],_0x596e61[_0x82cb('0x43')]);_0x2e7a8d[_0x82cb('0x48')]=_['intersection'](_0x596e61[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x48ad93[_0x82cb('0x43')][_0x82cb('0x47')]));_0x2e7a8d[_0x82cb('0x48')]=_0x2e7a8d[_0x82cb('0x48')]['length']?_0x2e7a8d[_0x82cb('0x48')]:_0x596e61['model'];if(!_0x48ad93[_0x82cb('0x43')][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x2e7a8d[_0x82cb('0x2e')]=qs['limit'](_0x48ad93[_0x82cb('0x43')]['limit']);_0x2e7a8d[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x48ad93['query'][_0x82cb('0x2d')]);}_0x2e7a8d[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x48ad93[_0x82cb('0x43')]['sort']);_0x2e7a8d['where']=qs['filters'](_['pick'](_0x48ad93['query'],_0x596e61[_0x82cb('0x45')]));_0x2e7a8d[_0x82cb('0x4e')][_0x82cb('0x66')]=_0x4a9d33['id'];if(_0x48ad93['query'][_0x82cb('0x69')]){_0x2e7a8d[_0x82cb('0x4e')]=_[_0x82cb('0x50')](_0x2e7a8d[_0x82cb('0x4e')],{'$or':_['map'](_0x2e7a8d[_0x82cb('0x48')],function(_0x3972ec){var _0x235fb3={};_0x235fb3[_0x3972ec]={'$like':'%'+_0x48ad93[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x235fb3;})});}_0x2e7a8d=_[_0x82cb('0x50')]({},_0x2e7a8d,_0x48ad93['options']);return db[_0x82cb('0xb5')][_0x82cb('0x30')]({'where':_0x2e7a8d[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x39f725){_0x1575f0[_0x82cb('0x30')]=_0x39f725;if(_0x48ad93[_0x82cb('0x43')][_0x82cb('0x53')]){_0x2e7a8d['include']=[{'model':db[_0x82cb('0xa3')],'as':_0x82cb('0xf0'),'required':![]},{'model':db[_0x82cb('0xbd')],'as':_0x82cb('0xf1'),'attributes':['name',_0x82cb('0xf2'),'internal'],'required':![]},{'model':db[_0x82cb('0xf3')],'as':_0x82cb('0xf4'),'attributes':['id','name',_0x82cb('0xf5')],'where':_0x48ad93['query'][_0x82cb('0xf6')]?{'id':_0x48ad93['query'][_0x82cb('0xf6')]}:undefined,'required':_0x48ad93[_0x82cb('0x43')][_0x82cb('0xf6')]?!![]:![]}];}return db[_0x82cb('0xb5')][_0x82cb('0x55')](_0x2e7a8d);})[_0x82cb('0x20')](function(_0x36fa9d){_0x1575f0[_0x82cb('0x56')]=_0x36fa9d;return _0x1575f0;});}})[_0x82cb('0x20')](respondWithFilteredResult(_0x2ff132,_0x2e7a8d))[_0x82cb('0x57')](handleError(_0x2ff132,null));};function iftimePromise(_0x4ba7b7,_0x55256e){return respondWithRpcPromise('Command','getSnippet',{'command':_0x55256e['timezone']?util['format']('iftime\x20%s,%s',_0x4ba7b7[_0x82cb('0xf7')],_0x55256e['timezone']):util[_0x82cb('0xae')](_0x82cb('0xf8'),_0x4ba7b7[_0x82cb('0xf7')])},client9002)['then'](function(_0xc539cc){var _0x1f7d23=_0xc539cc&&_0xc539cc[_0x82cb('0xf9')](_0x82cb('0xfa'))>=0x0?!![]:![];logger[_0x82cb('0x29')](_0x82cb('0xfb'),_0x55256e['id'],_0x4ba7b7['id'],_0x4ba7b7[_0x82cb('0xf7')],_0x1f7d23?'ONLINE':_0x82cb('0xfc'),_0x55256e['timezone']?_0x55256e[_0x82cb('0xfd')]:_0x82cb('0xfe'));return _0x1f7d23;})[_0x82cb('0x57')](function(_0x11c40b){logger[_0x82cb('0x25')](_0x82cb('0xfb'),_0x55256e['id'],_0x4ba7b7['id'],_0x4ba7b7[_0x82cb('0xf7')],util[_0x82cb('0xff')](_0x11c40b,{'showHidden':![],'depth':null}),_0x55256e[_0x82cb('0xfd')]?_0x55256e[_0x82cb('0xfd')]:_0x82cb('0xfe'));return![];});}exports[_0x82cb('0x100')]=function(_0x5d0a2f,_0x2ddad5,_0x2d8808){var _0x18662b=0x0;var _0x420c7e=0x0;var _0xb0f132=![];var _0x431c65;var _0x114a26;return db['ChatWebsite']['find']({'where':{'id':_0x5d0a2f[_0x82cb('0x58')]['id']},'include':[{'model':db[_0x82cb('0x101')],'as':_0x82cb('0x101'),'include':[{'model':db['Interval'],'as':_0x82cb('0x102'),'attributes':['id',_0x82cb('0xf7')],'raw':!![]}]}]})[_0x82cb('0x20')](handleEntityNotFound(_0x2ddad5,null))[_0x82cb('0x20')](function(_0x46c4db){if(_0x46c4db){_0x431c65=_0x46c4db;return _0x46c4db['getProactiveActions']({'raw':!![]});}})['then'](function(_0x1f8880){if(_0x431c65){if(_0x1f8880){_0x114a26=_0x1f8880;}}return require(_0x82cb('0x18'))['getLicense']();})[_0x82cb('0x20')](function(_0x50a411){if(_0x50a411){_0x420c7e=_0x50a411[_0x82cb('0x103')];_0xb0f132=_0x50a411[_0x82cb('0x104')];}})[_0x82cb('0x20')](function(){return db['ChatInteraction'][_0x82cb('0x30')]({'where':{'closed':![]}});})[_0x82cb('0x20')](function(_0x1ba1d0){_0x18662b=_0x1ba1d0;if(_0x420c7e&&_0x1ba1d0>_0x420c7e){return db[_0x82cb('0x105')][_0x82cb('0x68')]({'where':{'id':0x1}})[_0x82cb('0x20')](function(_0x169b24){if(_0x169b24){_0x169b24[_0x82cb('0x106')](_0x82cb('0x107'));}});}})['then'](function(){if(_0x431c65[_0x82cb('0x101')]&&_0x431c65['Interval']['Intervals']){var _0x536b04=[];for(var _0x2ea001=0x0;_0x2ea001<_0x431c65[_0x82cb('0x101')]['Intervals'][_0x82cb('0x49')];_0x2ea001++){var _0x5279c4=_0x431c65[_0x82cb('0x101')]['Intervals'][_0x2ea001][_0x82cb('0x35')]({'plain':!![]});_0x536b04[_0x82cb('0x108')](iftimePromise(_0x5279c4,_0x431c65));}return BPromise[_0x82cb('0x109')](_0x536b04)[_0x82cb('0x20')](function(_0x213644){return _[_0x82cb('0x10a')](_0x213644);});}else{return!![];}})['then'](function(_0x77d681){var _0x21203d=fs[_0x82cb('0xcd')](path[_0x82cb('0x78')](config[_0x82cb('0x79')],_0x82cb('0x10b')),'utf8');var _0x1f058c={'remote':_0x431c65[_0x82cb('0x10c')],'query':querystring[_0x82cb('0x24')](_['merge'](_0x431c65['get']({'plain':!![]}),{'customerIp':_0x5d0a2f[_0x82cb('0x86')]['x-forwarded-for']||_0x5d0a2f[_0x82cb('0x86')]['x-real-ip']||_0x5d0a2f[_0x82cb('0x10d')][_0x82cb('0x10e')]||_0x5d0a2f['ip'],'referer':_0x5d0a2f[_0x82cb('0x86')]['referer'],'openedInteractions':_0x18662b,'maxInteractions':_0x420c7e,'virtual':_0xb0f132[_0x82cb('0x103')],'online':_0x77d681,'custom':_0xb0f132}))[_0x82cb('0x10f')](/'/g,'\x5c\x27')};_0x2ddad5[_0x82cb('0x3a')](ejs['render'](Mustache['render'](_0x21203d,_0x1f058c),{'proactiveActions':_0x114a26,'alignment':_0x431c65[_0x82cb('0x110')],'verticalAlignment':_0x431c65['verticalAlignment'],'div_color':_0x431c65[_0x82cb('0xf5')],'text_color':_0x431c65['textColor'],'button_color':_0x431c65[_0x82cb('0x111')],'background_color':_0x431c65[_0x82cb('0x112')]}));})[_0x82cb('0x57')](handleError(_0x2ddad5,null));};exports[_0x82cb('0x113')]=function(_0x256f60,_0x3869f3,_0xd747cf){return db['ChatWebsite'][_0x82cb('0x68')]({'where':{'id':_0x256f60['params']['id']}})['then'](handleEntityNotFound(_0x3869f3,null))['then'](function(_0x2022e7){if(_0x2022e7){return db['sequelize'][_0x82cb('0xd7')](function(_0x1a5e85){return db[_0x82cb('0x114')][_0x82cb('0x34')]({'where':{'ChatWebsiteId':_0x256f60['params']['id']},'transaction':_0x1a5e85})[_0x82cb('0x20')](function(_0xc9ee3a){var _0x145dbf=_[_0x82cb('0x3d')](_0x256f60['body'],function(_0x29d106){_0x29d106['ChatWebsiteId']=_0x256f60[_0x82cb('0x58')]['id'];return _0x29d106;});return db['ChatApplication'][_0x82cb('0x115')](_0x145dbf,{'transaction':_0x1a5e85});});})[_0x82cb('0x20')](function(){return db[_0x82cb('0x114')][_0x82cb('0x116')]({'where':{'ChatWebsiteId':_0x256f60[_0x82cb('0x58')]['id']},'order':'priority'});});}})[_0x82cb('0x20')](respondWithResult(_0x3869f3,null))[_0x82cb('0x57')](handleError(_0x3869f3,null));};exports[_0x82cb('0x117')]=function(_0x474ec5,_0x5803ad,_0x37ef42){var _0x3e4fef={};var _0x1a5aa6={};var _0x562de4;var _0x2ab142;return db['ChatWebsite'][_0x82cb('0x68')]({'where':{'id':_0x474ec5[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x5803ad,null))[_0x82cb('0x20')](function(_0x1804ba){if(_0x1804ba){_0x562de4=_0x1804ba;_0x1a5aa6['model']=_[_0x82cb('0x44')](db[_0x82cb('0x114')][_0x82cb('0x5a')]);_0x1a5aa6[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x474ec5[_0x82cb('0x43')]);_0x1a5aa6[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x1a5aa6['model'],_0x1a5aa6['query']);_0x3e4fef[_0x82cb('0x48')]=_['intersection'](_0x1a5aa6[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x474ec5[_0x82cb('0x43')][_0x82cb('0x47')]));_0x3e4fef[_0x82cb('0x48')]=_0x3e4fef['attributes'][_0x82cb('0x49')]?_0x3e4fef[_0x82cb('0x48')]:_0x1a5aa6['model'];_0x3e4fef[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x474ec5[_0x82cb('0x43')]['sort']);_0x3e4fef[_0x82cb('0x4e')]=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x474ec5['query'],_0x1a5aa6[_0x82cb('0x45')]));if(_0x474ec5[_0x82cb('0x43')]['filter']){_0x3e4fef['where']=_['merge'](_0x3e4fef[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x3e4fef[_0x82cb('0x48')],function(_0x55a7cb){var _0x266c2e={};_0x266c2e[_0x55a7cb]={'$like':'%'+_0x474ec5[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x266c2e;})});}_0x3e4fef=_[_0x82cb('0x50')]({},_0x3e4fef,_0x474ec5[_0x82cb('0x52')]);return _0x562de4[_0x82cb('0x117')](_0x3e4fef);}})['then'](function(_0x535b42){if(_0x535b42){_0x2ab142=_0x535b42[_0x82cb('0x49')];if(!_0x474ec5[_0x82cb('0x43')]['hasOwnProperty']('nolimit')){_0x3e4fef[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x474ec5[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x3e4fef[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x474ec5[_0x82cb('0x43')][_0x82cb('0x2d')]);}return _0x562de4[_0x82cb('0x117')](_0x3e4fef);}})[_0x82cb('0x20')](function(_0x5c696e){if(_0x5c696e){return _0x5c696e?{'count':_0x2ab142,'rows':_0x5c696e}:null;}})['then'](respondWithResult(_0x5803ad,null))[_0x82cb('0x57')](handleError(_0x5803ad,null));};exports['addProactiveActions']=function(_0x1ac899,_0xf9bf90,_0x174d4a){return db['chatProactiveAction']['find']({'where':{'id':_0x1ac899[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0xf9bf90,null))[_0x82cb('0x20')](function(_0x36c062){if(_0x36c062){return _0x36c062[_0x82cb('0x118')](_0x1ac899[_0x82cb('0x5d')][_0x82cb('0x6d')],_[_0x82cb('0xee')](_0x1ac899['body'],[_0x82cb('0x6d'),'id'])||{});}})['then'](respondWithResult(_0xf9bf90,null))[_0x82cb('0x57')](handleError(_0xf9bf90,null));};exports[_0x82cb('0x119')]=function(_0x9040ac,_0x4efc76,_0x543a3a){var _0x274d57={};var _0x2bf7fd={};var _0x466ccc;var _0x3daa14;return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x9040ac['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x4efc76,null))[_0x82cb('0x20')](function(_0x48db15){if(_0x48db15){_0x466ccc=_0x48db15;_0x2bf7fd[_0x82cb('0x42')]=_[_0x82cb('0x44')](db[_0x82cb('0x11a')][_0x82cb('0x5a')]);_0x2bf7fd[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x9040ac[_0x82cb('0x43')]);_0x2bf7fd[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x2bf7fd[_0x82cb('0x42')],_0x2bf7fd[_0x82cb('0x43')]);_0x274d57[_0x82cb('0x48')]=_[_0x82cb('0x46')](_0x2bf7fd[_0x82cb('0x42')],qs['fields'](_0x9040ac[_0x82cb('0x43')]['fields']));_0x274d57['attributes']=_0x274d57[_0x82cb('0x48')][_0x82cb('0x49')]?_0x274d57[_0x82cb('0x48')]:_0x2bf7fd[_0x82cb('0x42')];_0x274d57['order']=qs['sort'](_0x9040ac[_0x82cb('0x43')][_0x82cb('0x4d')]);_0x274d57['where']=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x9040ac['query'],_0x2bf7fd[_0x82cb('0x45')]));if(_0x9040ac[_0x82cb('0x43')][_0x82cb('0x69')]){_0x274d57['where']=_[_0x82cb('0x50')](_0x274d57[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x274d57['attributes'],function(_0x41fb0c){var _0x3d4c70={};_0x3d4c70[_0x41fb0c]={'$like':'%'+_0x9040ac[_0x82cb('0x43')][_0x82cb('0x69')]+'%'};return _0x3d4c70;})});}_0x274d57=_[_0x82cb('0x50')]({},_0x274d57,_0x9040ac['options']);return _0x466ccc[_0x82cb('0x119')](_0x274d57);}})[_0x82cb('0x20')](function(_0x1c4dd8){if(_0x1c4dd8){_0x3daa14=_0x1c4dd8[_0x82cb('0x49')];if(!_0x9040ac[_0x82cb('0x43')][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x274d57[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x9040ac[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x274d57['offset']=qs[_0x82cb('0x2d')](_0x9040ac[_0x82cb('0x43')][_0x82cb('0x2d')]);}return _0x466ccc['getProactiveActions'](_0x274d57);}})[_0x82cb('0x20')](function(_0x2515bc){if(_0x2515bc){return _0x2515bc?{'count':_0x3daa14,'rows':_0x2515bc}:null;}})['then'](respondWithResult(_0x4efc76,null))[_0x82cb('0x57')](handleError(_0x4efc76,null));};exports[_0x82cb('0x11b')]=function(_0x42087d,_0x1ffd95,_0x3c2dd1){var _0x4b7a8f=_0x42087d['query'][_0x82cb('0x11c')]===_0x82cb('0x11d')?'offlineForm':_0x82cb('0x11e');return db['ChatWebsite'][_0x82cb('0x5b')]({'attributes':['id',_0x4b7a8f],'where':{'id':_0x42087d['params']['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x1ffd95,null))[_0x82cb('0x20')](function(_0x38014c){if(_0x38014c){var _0x5bb502=_0x38014c[_0x4b7a8f];var _0x5155ff=_0x5bb502&&_0x5bb502['items']?_0x5bb502[_0x82cb('0x11f')]:[];_0x1ffd95[_0x82cb('0x3a')]({'fromKey':_['isNil'](_0x5bb502[_0x82cb('0x120')])?undefined:_0x5bb502['fromKey'],'count':_0x5155ff[_0x82cb('0x49')],'rows':_0x5155ff});}})[_0x82cb('0x57')](handleError(_0x1ffd95,null));};exports[_0x82cb('0x121')]=function(_0x36d3e1,_0x5e27d3,_0xe9a3b5){var _0x5364d6={'raw':![],'where':{}};var _0x15dc93={};var _0x35cfff={'count':0x0,'rows':[]};return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x36d3e1[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x5e27d3,null))[_0x82cb('0x20')](function(_0x1bc1ce){if(_0x1bc1ce){_0x15dc93['model']=_[_0x82cb('0x44')](db[_0x82cb('0xd0')][_0x82cb('0x5a')]);_0x15dc93[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x36d3e1[_0x82cb('0x43')]);_0x15dc93[_0x82cb('0x45')]=_[_0x82cb('0x46')](_0x15dc93[_0x82cb('0x42')],_0x15dc93[_0x82cb('0x43')]);_0x5364d6[_0x82cb('0x48')]=_['intersection'](_0x15dc93[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x36d3e1['query']['fields']));_0x5364d6[_0x82cb('0x48')]=_0x5364d6[_0x82cb('0x48')][_0x82cb('0x49')]?_0x5364d6['attributes']:_0x15dc93[_0x82cb('0x42')];if(!_0x36d3e1[_0x82cb('0x43')]['hasOwnProperty']('nolimit')){_0x5364d6[_0x82cb('0x2e')]=qs[_0x82cb('0x2e')](_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x5364d6['offset']=qs[_0x82cb('0x2d')](_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x2d')]);}_0x5364d6['order']=qs[_0x82cb('0x4d')](_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x4d')]);_0x5364d6[_0x82cb('0x4e')]=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x36d3e1[_0x82cb('0x43')],_0x15dc93[_0x82cb('0x45')]));_0x5364d6[_0x82cb('0x4e')][_0x82cb('0x66')]=_0x1bc1ce['id'];if(_0x36d3e1[_0x82cb('0x43')][_0x82cb('0x69')]){_0x5364d6['where']=_[_0x82cb('0x50')](_0x5364d6[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x5364d6[_0x82cb('0x48')],function(_0x423359){var _0x1595d1={};_0x1595d1[_0x423359]={'$like':'%'+_0x36d3e1[_0x82cb('0x43')]['filter']+'%'};return _0x1595d1;})});}_0x5364d6=_[_0x82cb('0x50')]({},_0x5364d6,_0x36d3e1[_0x82cb('0x52')]);return db['ChatOfflineMessage'][_0x82cb('0x30')]({'where':_0x5364d6[_0x82cb('0x4e')]})[_0x82cb('0x20')](function(_0x3600c3){_0x35cfff['count']=_0x3600c3;if(_0x36d3e1[_0x82cb('0x43')]['includeAll']){_0x5364d6[_0x82cb('0x54')]=[{'all':!![]}];}else{_0x5364d6['include']=[{'model':db[_0x82cb('0xa3')],'as':_0x82cb('0xf0'),'required':![]},{'model':db[_0x82cb('0x122')],'as':_0x82cb('0x123'),'required':![]}];}return db[_0x82cb('0xd0')][_0x82cb('0x55')](_0x5364d6);})['then'](function(_0x4780bd){_0x35cfff[_0x82cb('0x56')]=_0x4780bd;return _0x35cfff;});}})['then'](respondWithFilteredResult(_0x5e27d3,_0x5364d6))['catch'](handleError(_0x5e27d3,null));};exports[_0x82cb('0x124')]=function(_0x58bf08,_0x5bc7d2,_0x38f827){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x58bf08[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x5bc7d2,null))['then'](function(_0x5d5c8f){if(_0x5d5c8f){return _0x5d5c8f['addAgents'](_0x58bf08[_0x82cb('0x5d')]['ids'],_[_0x82cb('0xee')](_0x58bf08[_0x82cb('0x5d')],['ids','id'])||{})[_0x82cb('0xcc')](function(_0xbbf0b3){for(var _0x500016=0x0;_0x500016<_0x58bf08[_0x82cb('0x5d')][_0x82cb('0x6d')][_0x82cb('0x49')];_0x500016+=0x1){socket[_0x82cb('0x125')]('userChatWebsite:save',{'UserId':Number(_0x58bf08['body'][_0x82cb('0x6d')][_0x500016]),'ChatWebsiteId':Number(_0x58bf08[_0x82cb('0x58')]['id'])});}return _0xbbf0b3;});}})['then'](respondWithResult(_0x5bc7d2,null))[_0x82cb('0x57')](handleError(_0x5bc7d2,null));};exports[_0x82cb('0x126')]=function(_0x2cde93,_0x304091,_0x39abfe){return db[_0x82cb('0x3e')][_0x82cb('0x5b')]({'where':{'id':_0x2cde93[_0x82cb('0x58')]['id']}})[_0x82cb('0x20')](handleEntityNotFound(_0x304091,null))['then'](function(_0x18bf68){if(_0x18bf68){return _0x18bf68[_0x82cb('0x126')](_0x2cde93[_0x82cb('0x43')][_0x82cb('0x6d')])['then'](function(){if(_[_0x82cb('0x127')](_0x2cde93['query'][_0x82cb('0x6d')])){for(var _0x211360=0x0;_0x211360<_0x2cde93[_0x82cb('0x43')][_0x82cb('0x6d')][_0x82cb('0x49')];_0x211360+=0x1){socket['emit'](_0x82cb('0x128'),{'UserId':Number(_0x2cde93['query'][_0x82cb('0x6d')][_0x211360]),'ChatWebsiteId':Number(_0x2cde93[_0x82cb('0x58')]['id'])});}}else{socket['emit']('userChatWebsite:remove',{'UserId':Number(_0x2cde93[_0x82cb('0x43')][_0x82cb('0x6d')]),'ChatWebsiteId':Number(_0x2cde93['params']['id'])});}});}})[_0x82cb('0x20')](respondWithStatusCode(_0x304091,null))[_0x82cb('0x57')](handleError(_0x304091,null));};exports[_0x82cb('0x129')]=function(_0x1fed71,_0x4e5ddc,_0x3f4b7a){var _0x28f2b9={};var _0x3b9195={};var _0x32a14;var _0x582f28;return db[_0x82cb('0x3e')][_0x82cb('0x68')]({'where':{'id':_0x1fed71[_0x82cb('0x58')]['id']}})['then'](handleEntityNotFound(_0x4e5ddc,null))['then'](function(_0x4fed7d){if(_0x4fed7d){_0x32a14=_0x4fed7d;_0x3b9195[_0x82cb('0x42')]=_[_0x82cb('0x44')](db[_0x82cb('0xbd')][_0x82cb('0x5a')]);_0x3b9195[_0x82cb('0x43')]=_[_0x82cb('0x44')](_0x1fed71['query']);_0x3b9195['filters']=_[_0x82cb('0x46')](_0x3b9195[_0x82cb('0x42')],_0x3b9195[_0x82cb('0x43')]);_0x28f2b9[_0x82cb('0x48')]=_[_0x82cb('0x46')](_0x3b9195[_0x82cb('0x42')],qs[_0x82cb('0x47')](_0x1fed71[_0x82cb('0x43')]['fields']));_0x28f2b9[_0x82cb('0x48')]=_0x28f2b9[_0x82cb('0x48')][_0x82cb('0x49')]?_0x28f2b9[_0x82cb('0x48')]:_0x3b9195[_0x82cb('0x42')];_0x28f2b9[_0x82cb('0x4c')]=qs[_0x82cb('0x4d')](_0x1fed71['query'][_0x82cb('0x4d')]);_0x28f2b9['where']=qs[_0x82cb('0x45')](_[_0x82cb('0x4f')](_0x1fed71['query'],_0x3b9195[_0x82cb('0x45')]));if(_0x1fed71[_0x82cb('0x43')]['filter']){_0x28f2b9['where']=_[_0x82cb('0x50')](_0x28f2b9[_0x82cb('0x4e')],{'$or':_[_0x82cb('0x3d')](_0x28f2b9[_0x82cb('0x48')],function(_0x360602){var _0x86e04c={};_0x86e04c[_0x360602]={'$like':'%'+_0x1fed71['query'][_0x82cb('0x69')]+'%'};return _0x86e04c;})});}_0x28f2b9=_[_0x82cb('0x50')]({},_0x28f2b9,_0x1fed71['options']);return _0x32a14[_0x82cb('0x129')](_0x28f2b9);}})[_0x82cb('0x20')](function(_0x2bd4ab){if(_0x2bd4ab){_0x582f28=_0x2bd4ab[_0x82cb('0x49')];if(!_0x1fed71[_0x82cb('0x43')][_0x82cb('0x4a')](_0x82cb('0x4b'))){_0x28f2b9['limit']=qs[_0x82cb('0x2e')](_0x1fed71[_0x82cb('0x43')][_0x82cb('0x2e')]);_0x28f2b9[_0x82cb('0x2d')]=qs[_0x82cb('0x2d')](_0x1fed71[_0x82cb('0x43')][_0x82cb('0x2d')]);}return _0x32a14[_0x82cb('0x129')](_0x28f2b9);}})[_0x82cb('0x20')](function(_0x15ca93){if(_0x15ca93){return _0x15ca93?{'count':_0x582f28,'rows':_0x15ca93}:null;}})[_0x82cb('0x20')](respondWithResult(_0x4e5ddc,null))[_0x82cb('0x57')](handleError(_0x4e5ddc,null));};
\ No newline at end of file
index 4463ace..982630a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1db=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x32de9f,_0xf3b6e9){var _0x532e62=function(_0xd0becf){while(--_0xd0becf){_0x32de9f['push'](_0x32de9f['shift']());}};_0x532e62(++_0xf3b6e9);}(_0xa1db,0xb0));var _0xba1d=function(_0x309a5e,_0x1ec246){_0x309a5e=_0x309a5e-0x0;var _0x1d21f1=_0xa1db[_0x309a5e];return _0x1d21f1;};'use strict';var EventEmitter=require(_0xba1d('0x0'));var ChatWebsite=require(_0xba1d('0x1'))['db'][_0xba1d('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xba1d('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xba1d('0x4')};function emitEvent(_0x281396){return function(_0x5c8c8b,_0x256502,_0x314523){ChatWebsiteEvents[_0xba1d('0x5')](_0x281396+':'+_0x5c8c8b['id'],_0x5c8c8b);ChatWebsiteEvents[_0xba1d('0x5')](_0x281396,_0x5c8c8b);_0x314523(null);};}for(var e in events){if(events[_0xba1d('0x6')](e)){var event=events[e];ChatWebsite[_0xba1d('0x7')](e,emitEvent(event));}}module[_0xba1d('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0xd51f=['events','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','exports'];(function(_0x4bed75,_0x211cc7){var _0x2dd8e8=function(_0x6369c7){while(--_0x6369c7){_0x4bed75['push'](_0x4bed75['shift']());}};_0x2dd8e8(++_0x211cc7);}(_0xd51f,0xf0));var _0xfd51=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xd51f[_0x2c91e9];return _0x13f0ff;};'use strict';var EventEmitter=require(_0xfd51('0x0'));var ChatWebsite=require(_0xfd51('0x1'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xfd51('0x2')](0x0);var events={'afterCreate':_0xfd51('0x3'),'afterUpdate':'update','afterDestroy':_0xfd51('0x4')};function emitEvent(_0x1d01a0){return function(_0x49bb3e,_0x3efc9b,_0x3edd05){ChatWebsiteEvents['emit'](_0x1d01a0+':'+_0x49bb3e['id'],_0x49bb3e);ChatWebsiteEvents[_0xfd51('0x5')](_0x1d01a0,_0x49bb3e);_0x3edd05(null);};}for(var e in events){if(events[_0xfd51('0x6')](e)){var event=events[e];ChatWebsite['hook'](e,emitEvent(event));}}module[_0xfd51('0x7')]=ChatWebsiteEvents;
\ No newline at end of file
index 1cd8033..b93626e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7380=['moment','bluebird','request-promise','rimraf','../../config/environment','define','chat_websites','util','../../config/logger','api'];(function(_0x2c86ea,_0x300f11){var _0x454243=function(_0x372d86){while(--_0x372d86){_0x2c86ea['push'](_0x2c86ea['shift']());}};_0x454243(++_0x300f11);}(_0x7380,0x1dd));var _0x0738=function(_0x18fb16,_0x45edbc){_0x18fb16=_0x18fb16-0x0;var _0x147b0d=_0x7380[_0x18fb16];return _0x147b0d;};'use strict';var _=require('lodash');var util=require(_0x0738('0x0'));var logger=require(_0x0738('0x1'))(_0x0738('0x2'));var moment=require(_0x0738('0x3'));var BPromise=require(_0x0738('0x4'));var rp=require(_0x0738('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0738('0x6'));var config=require(_0x0738('0x7'));var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x478364,_0x383b46){return _0x478364[_0x0738('0x8')]('ChatWebsite',attributes,{'tableName':_0x0738('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x20b7=['chat_websites','../../config/logger','api','moment','bluebird','path','../../config/environment','./chatWebsite.attributes','define','ChatWebsite'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x20b7,0x1e1));var _0x720b=function(_0x48010a,_0x2bf126){_0x48010a=_0x48010a-0x0;var _0x121b97=_0x20b7[_0x48010a];return _0x121b97;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x720b('0x0'))(_0x720b('0x1'));var moment=require(_0x720b('0x2'));var BPromise=require(_0x720b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x720b('0x4'));var rimraf=require('rimraf');var config=require(_0x720b('0x5'));var attributes=require(_0x720b('0x6'));module['exports']=function(_0x515298,_0xfd5e36){return _0x515298[_0x720b('0x7')](_0x720b('0x8'),attributes,{'tableName':_0x720b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b63a1af..2c6c172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1a=['./chatWebsite.socket','register','request','then','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xaf1a,0x1a5));var _0xaaf1=function(_0x4f032d,_0x52d5a7){_0x4f032d=_0x4f032d-0x0;var _0x580049=_0xaf1a[_0x4f032d];return _0x580049;};'use strict';var _=require(_0xaaf1('0x0'));var util=require('util');var moment=require(_0xaaf1('0x1'));var BPromise=require(_0xaaf1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaaf1('0x3'));var db=require(_0xaaf1('0x4'))['db'];var utils=require(_0xaaf1('0x5'));var logger=require('../../config/logger')(_0xaaf1('0x6'));var config=require(_0xaaf1('0x7'));var jayson=require(_0xaaf1('0x8'));var client=jayson[_0xaaf1('0x9')][_0xaaf1('0xa')]({'port':0x232a});config[_0xaaf1('0xb')]=_[_0xaaf1('0xc')](config[_0xaaf1('0xb')],{'host':_0xaaf1('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaaf1('0xb')]));require(_0xaaf1('0xe'))[_0xaaf1('0xf')](socket);function respondWithRpcPromise(_0x3c2001,_0x4e0f5a,_0xe576d0){return new BPromise(function(_0xc758b9,_0x3a85bf){return client[_0xaaf1('0x10')](_0x3c2001,_0xe576d0)[_0xaaf1('0x11')](function(_0x2cec91){logger['info'](_0xaaf1('0x12'),_0x4e0f5a,_0xaaf1('0x13'));logger[_0xaaf1('0x14')](_0xaaf1('0x15'),_0x4e0f5a,'request\x20sent',JSON[_0xaaf1('0x16')](_0x2cec91));if(_0x2cec91[_0xaaf1('0x17')]){if(_0x2cec91[_0xaaf1('0x17')][_0xaaf1('0x18')]===0x1f4){logger[_0xaaf1('0x17')](_0xaaf1('0x12'),_0x4e0f5a,_0x2cec91[_0xaaf1('0x17')][_0xaaf1('0x19')]);return _0x3a85bf(_0x2cec91[_0xaaf1('0x17')]['message']);}logger[_0xaaf1('0x17')](_0xaaf1('0x12'),_0x4e0f5a,_0x2cec91[_0xaaf1('0x17')][_0xaaf1('0x19')]);return _0xc758b9(_0x2cec91['error'][_0xaaf1('0x19')]);}else{logger[_0xaaf1('0x1a')](_0xaaf1('0x12'),_0x4e0f5a,'request\x20sent');_0xc758b9(_0x2cec91[_0xaaf1('0x1b')]['message']);}})[_0xaaf1('0x1c')](function(_0x48378b){logger[_0xaaf1('0x17')](_0xaaf1('0x12'),_0x4e0f5a,_0x48378b);_0x3a85bf(_0x48378b);});});}
\ No newline at end of file
+var _0x4326=['code','message','result','catch','ChatWebsite,\x20%s,\x20%s','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./chatWebsite.socket','register','request','then','info','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x381926,_0x154257){var _0x50e014=function(_0x1196a8){while(--_0x1196a8){_0x381926['push'](_0x381926['shift']());}};_0x50e014(++_0x154257);}(_0x4326,0xad));var _0x6432=function(_0x379ca0,_0x206784){_0x379ca0=_0x379ca0-0x0;var _0x4863e7=_0x4326[_0x379ca0];return _0x4863e7;};'use strict';var _=require(_0x6432('0x0'));var util=require(_0x6432('0x1'));var moment=require('moment');var BPromise=require(_0x6432('0x2'));var rs=require(_0x6432('0x3'));var fs=require('fs');var Redis=require(_0x6432('0x4'));var db=require(_0x6432('0x5'))['db'];var utils=require(_0x6432('0x6'));var logger=require('../../config/logger')(_0x6432('0x7'));var config=require(_0x6432('0x8'));var jayson=require(_0x6432('0x9'));var client=jayson[_0x6432('0xa')]['http']({'port':0x232a});config[_0x6432('0xb')]=_['defaults'](config[_0x6432('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x6432('0xc'))(new Redis(config[_0x6432('0xb')]));require(_0x6432('0xd'))[_0x6432('0xe')](socket);function respondWithRpcPromise(_0x2d3137,_0x3fed6c,_0x24a2d6){return new BPromise(function(_0x5407be,_0x23edb1){return client[_0x6432('0xf')](_0x2d3137,_0x24a2d6)[_0x6432('0x10')](function(_0x183b32){logger[_0x6432('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,'request\x20sent');logger[_0x6432('0x12')](_0x6432('0x13'),_0x3fed6c,_0x6432('0x14'),JSON[_0x6432('0x15')](_0x183b32));if(_0x183b32[_0x6432('0x16')]){if(_0x183b32[_0x6432('0x16')][_0x6432('0x17')]===0x1f4){logger[_0x6432('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,_0x183b32[_0x6432('0x16')]['message']);return _0x23edb1(_0x183b32[_0x6432('0x16')]['message']);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,_0x183b32[_0x6432('0x16')][_0x6432('0x18')]);return _0x5407be(_0x183b32[_0x6432('0x16')][_0x6432('0x18')]);}else{logger[_0x6432('0x11')]('ChatWebsite,\x20%s,\x20%s',_0x3fed6c,_0x6432('0x14'));_0x5407be(_0x183b32[_0x6432('0x19')][_0x6432('0x18')]);}})[_0x6432('0x1a')](function(_0x2c9c51){logger['error'](_0x6432('0x1b'),_0x3fed6c,_0x2c9c51);_0x23edb1(_0x2c9c51);});});}
\ No newline at end of file
index b9ecf2c..1ea2dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7328=['save','remove','update','emit','removeListener','length','chatWebsite:','./chatWebsite.events'];(function(_0x416ab7,_0x35d6c5){var _0x3b53be=function(_0x5a26c6){while(--_0x5a26c6){_0x416ab7['push'](_0x416ab7['shift']());}};_0x3b53be(++_0x35d6c5);}(_0x7328,0xcf));var _0x8732=function(_0x538560,_0x4dad68){_0x538560=_0x538560-0x0;var _0xc480ef=_0x7328[_0x538560];return _0xc480ef;};'use strict';var ChatWebsiteEvents=require(_0x8732('0x0'));var events=[_0x8732('0x1'),_0x8732('0x2'),_0x8732('0x3')];function createListener(_0x171850,_0x4f70f0){return function(_0x2d1d44){_0x4f70f0[_0x8732('0x4')](_0x171850,_0x2d1d44);};}function removeListener(_0x3d96a1,_0x5c962a){return function(){ChatWebsiteEvents[_0x8732('0x5')](_0x3d96a1,_0x5c962a);};}exports['register']=function(_0x1ba0d1){for(var _0x34ba82=0x0,_0x588999=events[_0x8732('0x6')];_0x34ba82<_0x588999;_0x34ba82++){var _0x2fe806=events[_0x34ba82];var _0x2f08da=createListener(_0x8732('0x7')+_0x2fe806,_0x1ba0d1);ChatWebsiteEvents['on'](_0x2fe806,_0x2f08da);}};
\ No newline at end of file
+var _0xcbf0=['remove','emit','chatWebsite:','./chatWebsite.events','save'];(function(_0x11ca63,_0xea9f9c){var _0x41f1f6=function(_0xb80b69){while(--_0xb80b69){_0x11ca63['push'](_0x11ca63['shift']());}};_0x41f1f6(++_0xea9f9c);}(_0xcbf0,0xa3));var _0x0cbf=function(_0x1cd7cb,_0x1a8cc8){_0x1cd7cb=_0x1cd7cb-0x0;var _0x5e2581=_0xcbf0[_0x1cd7cb];return _0x5e2581;};'use strict';var ChatWebsiteEvents=require(_0x0cbf('0x0'));var events=[_0x0cbf('0x1'),_0x0cbf('0x2'),'update'];function createListener(_0x3457d4,_0x40d2dc){return function(_0xd41d4c){_0x40d2dc[_0x0cbf('0x3')](_0x3457d4,_0xd41d4c);};}function removeListener(_0x272a4d,_0x28f2a1){return function(){ChatWebsiteEvents['removeListener'](_0x272a4d,_0x28f2a1);};}exports['register']=function(_0x59460c){for(var _0x6c08c1=0x0,_0x4e0042=events['length'];_0x6c08c1<_0x4e0042;_0x6c08c1++){var _0x124ef6=events[_0x6c08c1];var _0x11abe9=createListener(_0x0cbf('0x4')+_0x124ef6,_0x59460c);ChatWebsiteEvents['on'](_0x124ef6,_0x11abe9);}};
\ No newline at end of file
index e010a9e..e6d9d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0253=['replace','extname','/:id/offline','any','offline','addApplications','/:id/proactive_actions','addProactiveActions','/:id/users','update','delete','destroy','removeDispositions','removeAgents','exports','path','express','fs-extra','../../components/auth/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','getDispositions','getAnswers','/:id/logo','getLogo','getAvatar','/:id/customer_avatar','getSystemAvatar','/:id/interactions','/:id/snippet','getSnippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','/:id/offline_messages','create','post','/:id/dispositions','/:id/canned_answers','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','diskStorage','server/files/images/avatars/','/:id/avatar','addAvatar','addCustomerAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir'];(function(_0x267584,_0xc122a9){var _0x6a6921=function(_0x2db07c){while(--_0x2db07c){_0x267584['push'](_0x267584['shift']());}};_0x6a6921(++_0xc122a9);}(_0x0253,0x117));var _0x3025=function(_0xebd52f,_0x49f7c3){_0xebd52f=_0xebd52f-0x0;var _0x24dc34=_0x0253[_0xebd52f];return _0x24dc34;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3025('0x0'));var timeout=require('connect-timeout');var express=require(_0x3025('0x1'));var router=express['Router']();var fs_extra=require(_0x3025('0x2'));var auth=require(_0x3025('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3025('0x4'));var controller=require(_0x3025('0x5'));router[_0x3025('0x6')]('/',auth[_0x3025('0x7')](),controller[_0x3025('0x8')]);router[_0x3025('0x6')](_0x3025('0x9'),auth[_0x3025('0x7')](),controller[_0x3025('0xa')]);router['get'](_0x3025('0xb'),auth[_0x3025('0x7')](),controller['show']);router['get']('/:id/dispositions',auth[_0x3025('0x7')](),controller[_0x3025('0xc')]);router['get']('/:id/canned_answers',auth[_0x3025('0x7')](),controller[_0x3025('0xd')]);router[_0x3025('0x6')](_0x3025('0xe'),controller[_0x3025('0xf')]);router[_0x3025('0x6')]('/:id/avatar',controller[_0x3025('0x10')]);router[_0x3025('0x6')](_0x3025('0x11'),controller['getCustomerAvatar']);router['get']('/:id/system_avatar',controller[_0x3025('0x12')]);router['get'](_0x3025('0x13'),auth[_0x3025('0x7')](),controller['getInteractions']);router[_0x3025('0x6')](_0x3025('0x14'),controller[_0x3025('0x15')]);router[_0x3025('0x6')](_0x3025('0x16'),auth[_0x3025('0x7')](),controller[_0x3025('0x17')]);router[_0x3025('0x6')]('/:id/proactive_actions',auth[_0x3025('0x7')](),controller[_0x3025('0x18')]);router['get'](_0x3025('0x19'),controller['getFields']);router[_0x3025('0x6')](_0x3025('0x1a'),auth[_0x3025('0x7')](),controller['getOfflineMessages']);router[_0x3025('0x6')]('/:id/users',auth[_0x3025('0x7')](),controller['getAgents']);router['post']('/',auth[_0x3025('0x7')](),controller[_0x3025('0x1b')]);router[_0x3025('0x1c')](_0x3025('0x1d'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x3025('0x1c')](_0x3025('0x1e'),auth[_0x3025('0x7')](),controller['addAnswer']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x38f536,_0x70666,_0x31b599){_0x31b599(null,path[_0x3025('0x1f')](config[_0x3025('0x20')],_0x3025('0x21')));},'filename':function(_0xa17e48,_0x34550c,_0x4668e8){_0x4668e8(null,util[_0x3025('0x22')](_0x3025('0x23'),Date[_0x3025('0x24')](),_0x34550c[_0x3025('0x25')]));}})});router[_0x3025('0x1c')](_0x3025('0xe'),upload[_0x3025('0x26')](_0x3025('0x27')),controller['addLogo']);var upload=multer({'storage':multer[_0x3025('0x28')]({'destination':function(_0x98474f,_0x2c3251,_0x2ecc5f){_0x2ecc5f(null,path[_0x3025('0x1f')](config[_0x3025('0x20')],_0x3025('0x29')));},'filename':function(_0x446848,_0x16c1e0,_0x3719ab){_0x3719ab(null,util[_0x3025('0x22')](_0x3025('0x23'),Date[_0x3025('0x24')](),_0x16c1e0['originalname']));}})});router[_0x3025('0x1c')](_0x3025('0x2a'),upload[_0x3025('0x26')]('file'),controller[_0x3025('0x2b')]);var upload=multer({'storage':multer[_0x3025('0x28')]({'destination':function(_0x13ff06,_0x52094e,_0x1c1b97){_0x1c1b97(null,path[_0x3025('0x1f')](config[_0x3025('0x20')],'server/files/images/avatars/'));},'filename':function(_0x5c007f,_0x37d01d,_0x4603b3){_0x4603b3(null,util[_0x3025('0x22')](_0x3025('0x23'),Date[_0x3025('0x24')](),_0x37d01d[_0x3025('0x25')]));}})});router[_0x3025('0x1c')](_0x3025('0x11'),upload[_0x3025('0x26')]('file'),controller[_0x3025('0x2c')]);var upload=multer({'storage':multer[_0x3025('0x28')]({'destination':function(_0x4217b5,_0x2e8c6c,_0x44298d){_0x44298d(null,path[_0x3025('0x1f')](config[_0x3025('0x20')],_0x3025('0x29')));},'filename':function(_0x1fa024,_0x56451c,_0x2d7980){_0x2d7980(null,util[_0x3025('0x22')](_0x3025('0x23'),Date['now'](),_0x56451c[_0x3025('0x25')]));}})});router[_0x3025('0x1c')]('/:id/system_avatar',upload[_0x3025('0x26')](_0x3025('0x27')),controller['addSystemAvatar']);router[_0x3025('0x1c')](_0x3025('0x2d'),controller[_0x3025('0x2e')]);const offlineUploadMulter=multer({'storage':multer[_0x3025('0x28')]({'destination':function(_0x5658c8,_0x55a465,_0x406f53){const _0x49738b=path['join'](config[_0x3025('0x20')],_0x3025('0x2f'),_0x3025('0x30'),_0x3025('0x31'));fs_extra[_0x3025('0x32')](_0x49738b,function(){_0x406f53(null,_0x49738b);});},'filename':function(_0xfe68e4,_0xc6c476,_0x445af4){const _0x587dd2=_0xc6c476[_0x3025('0x25')][_0x3025('0x33')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x101c78=path[_0x3025('0x34')](_0x587dd2);const _0x3efcf1=Date['now']()+'-'+_0x587dd2['replace'](_0x101c78,'')+_0x101c78;_0x445af4(null,_0x3efcf1);}})});router[_0x3025('0x1c')](_0x3025('0x35'),offlineUploadMulter[_0x3025('0x36')](),controller[_0x3025('0x37')]);router[_0x3025('0x1c')](_0x3025('0x13'),auth[_0x3025('0x7')](),controller['addInteraction']);router[_0x3025('0x1c')](_0x3025('0x16'),auth['isAuthenticated'](),controller[_0x3025('0x38')]);router['post'](_0x3025('0x39'),auth[_0x3025('0x7')](),controller[_0x3025('0x3a')]);router[_0x3025('0x1c')](_0x3025('0x3b'),auth['isAuthenticated'](),controller['addAgents']);router['put'](_0x3025('0xb'),auth[_0x3025('0x7')](),controller[_0x3025('0x3c')]);router[_0x3025('0x3d')]('/:id',auth[_0x3025('0x7')](),controller[_0x3025('0x3e')]);router[_0x3025('0x3d')](_0x3025('0x1d'),auth[_0x3025('0x7')](),controller[_0x3025('0x3f')]);router[_0x3025('0x3d')]('/:id/canned_answers',auth['isAuthenticated'](),controller['removeAnswers']);router[_0x3025('0x3d')](_0x3025('0x3b'),auth[_0x3025('0x7')](),controller[_0x3025('0x40')]);module[_0x3025('0x41')]=router;
\ No newline at end of file
+var _0x9a7b=['/:id/dispositions','getDispositions','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','post','/:id/canned_answers','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','now','originalname','file','addLogo','server/files/images/avatars/','single','addAvatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','offline-chat','replace','extname','/:id/offline','any','offline','addInteraction','addProactiveActions','addAgents','put','/:id','update','delete','destroy','removeDispositions','removeAgents','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','index','/describe','describe','isAuthenticated','show'];(function(_0x3dc25f,_0x12600e){var _0x4bc497=function(_0x236c8d){while(--_0x236c8d){_0x3dc25f['push'](_0x3dc25f['shift']());}};_0x4bc497(++_0x12600e);}(_0x9a7b,0x1eb));var _0xb9a7=function(_0x29b9e3,_0x34f3f8){_0x29b9e3=_0x29b9e3-0x0;var _0x4f645f=_0x9a7b[_0x29b9e3];return _0x4f645f;};'use strict';var multer=require(_0xb9a7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xb9a7('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb9a7('0x2'));var auth=require(_0xb9a7('0x3'));var interaction=require(_0xb9a7('0x4'));var config=require(_0xb9a7('0x5'));var controller=require(_0xb9a7('0x6'));router[_0xb9a7('0x7')]('/',auth['isAuthenticated'](),controller[_0xb9a7('0x8')]);router[_0xb9a7('0x7')](_0xb9a7('0x9'),auth['isAuthenticated'](),controller[_0xb9a7('0xa')]);router[_0xb9a7('0x7')]('/:id',auth[_0xb9a7('0xb')](),controller[_0xb9a7('0xc')]);router[_0xb9a7('0x7')](_0xb9a7('0xd'),auth['isAuthenticated'](),controller[_0xb9a7('0xe')]);router['get']('/:id/canned_answers',auth[_0xb9a7('0xb')](),controller[_0xb9a7('0xf')]);router[_0xb9a7('0x7')](_0xb9a7('0x10'),controller[_0xb9a7('0x11')]);router[_0xb9a7('0x7')](_0xb9a7('0x12'),controller[_0xb9a7('0x13')]);router[_0xb9a7('0x7')](_0xb9a7('0x14'),controller[_0xb9a7('0x15')]);router['get'](_0xb9a7('0x16'),controller[_0xb9a7('0x17')]);router['get'](_0xb9a7('0x18'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x19')]);router[_0xb9a7('0x7')]('/:id/snippet',controller[_0xb9a7('0x1a')]);router[_0xb9a7('0x7')](_0xb9a7('0x1b'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x1c')]);router[_0xb9a7('0x7')](_0xb9a7('0x1d'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x1e')]);router[_0xb9a7('0x7')]('/:id/fields',controller[_0xb9a7('0x1f')]);router[_0xb9a7('0x7')](_0xb9a7('0x20'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x21')]);router[_0xb9a7('0x7')](_0xb9a7('0x22'),auth['isAuthenticated'](),controller['getAgents']);router[_0xb9a7('0x23')]('/',auth[_0xb9a7('0xb')](),controller['create']);router['post'](_0xb9a7('0xd'),auth[_0xb9a7('0xb')](),controller['addDisposition']);router[_0xb9a7('0x23')](_0xb9a7('0x24'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x25')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x41349e,_0x2d3361,_0x29cbf5){_0x29cbf5(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],_0xb9a7('0x29')));},'filename':function(_0x230f63,_0x12d987,_0xdb198a){_0xdb198a(null,util[_0xb9a7('0x2a')](_0xb9a7('0x2b'),Date[_0xb9a7('0x2c')](),_0x12d987[_0xb9a7('0x2d')]));}})});router[_0xb9a7('0x23')](_0xb9a7('0x10'),upload['single'](_0xb9a7('0x2e')),controller[_0xb9a7('0x2f')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x4e5efa,_0x5782c4,_0x26d9e7){_0x26d9e7(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],_0xb9a7('0x30')));},'filename':function(_0x2ccffa,_0x22dd65,_0x1aa406){_0x1aa406(null,util[_0xb9a7('0x2a')]('%s-%s',Date[_0xb9a7('0x2c')](),_0x22dd65['originalname']));}})});router['post']('/:id/avatar',upload[_0xb9a7('0x31')](_0xb9a7('0x2e')),controller[_0xb9a7('0x32')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x5a24c9,_0x4520d0,_0x12121f){_0x12121f(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],'server/files/images/avatars/'));},'filename':function(_0x1cc538,_0x5d3b80,_0x24c374){_0x24c374(null,util['format'](_0xb9a7('0x2b'),Date[_0xb9a7('0x2c')](),_0x5d3b80[_0xb9a7('0x2d')]));}})});router[_0xb9a7('0x23')](_0xb9a7('0x14'),upload[_0xb9a7('0x31')](_0xb9a7('0x2e')),controller[_0xb9a7('0x33')]);var upload=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x3f0117,_0x8b7dcc,_0x385a29){_0x385a29(null,path[_0xb9a7('0x27')](config[_0xb9a7('0x28')],_0xb9a7('0x30')));},'filename':function(_0x106e94,_0x569d5e,_0x4c14c4){_0x4c14c4(null,util['format'](_0xb9a7('0x2b'),Date['now'](),_0x569d5e[_0xb9a7('0x2d')]));}})});router['post'](_0xb9a7('0x16'),upload[_0xb9a7('0x31')](_0xb9a7('0x2e')),controller[_0xb9a7('0x34')]);router['post'](_0xb9a7('0x35'),controller[_0xb9a7('0x36')]);const offlineUploadMulter=multer({'storage':multer[_0xb9a7('0x26')]({'destination':function(_0x32ae16,_0x1a3894,_0x32389e){const _0x1e5457=path['join'](config[_0xb9a7('0x28')],'server/files','attachments',_0xb9a7('0x37'));fs_extra['ensureDir'](_0x1e5457,function(){_0x32389e(null,_0x1e5457);});},'filename':function(_0x81a2c,_0x1131f5,_0xf2bff7){const _0x4f2115=_0x1131f5['originalname'][_0xb9a7('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x31ff6c=path[_0xb9a7('0x39')](_0x4f2115);const _0x2c005c=Date['now']()+'-'+_0x4f2115[_0xb9a7('0x38')](_0x31ff6c,'')+_0x31ff6c;_0xf2bff7(null,_0x2c005c);}})});router[_0xb9a7('0x23')](_0xb9a7('0x3a'),offlineUploadMulter[_0xb9a7('0x3b')](),controller[_0xb9a7('0x3c')]);router[_0xb9a7('0x23')](_0xb9a7('0x18'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x3d')]);router['post'](_0xb9a7('0x1b'),auth[_0xb9a7('0xb')](),controller['addApplications']);router[_0xb9a7('0x23')](_0xb9a7('0x1d'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x3e')]);router['post'](_0xb9a7('0x22'),auth['isAuthenticated'](),controller[_0xb9a7('0x3f')]);router[_0xb9a7('0x40')](_0xb9a7('0x41'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x42')]);router[_0xb9a7('0x43')](_0xb9a7('0x41'),auth['isAuthenticated'](),controller[_0xb9a7('0x44')]);router[_0xb9a7('0x43')](_0xb9a7('0xd'),auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x45')]);router[_0xb9a7('0x43')](_0xb9a7('0x24'),auth[_0xb9a7('0xb')](),controller['removeAnswers']);router[_0xb9a7('0x43')]('/:id/users',auth[_0xb9a7('0xb')](),controller[_0xb9a7('0x46')]);module[_0xb9a7('0x47')]=router;
\ No newline at end of file
index c199949..4a2c43f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b69=['exports','STRING','Google','sequelize'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9b69,0xa3));var _0x99b6=function(_0x296d3f,_0x36f7b0){_0x296d3f=_0x296d3f-0x0;var _0x3da84c=_0x9b69[_0x296d3f];return _0x3da84c;};'use strict';var Sequelize=require(_0x99b6('0x0'));module[_0x99b6('0x1')]={'name':{'type':Sequelize[_0x99b6('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS',_0x99b6('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x99b6('0x2')]}};
\ No newline at end of file
+var _0x0ef4=['ENUM','exports','STRING'];(function(_0x1abcfa,_0x31757b){var _0x5d498c=function(_0x1ed0bc){while(--_0x1ed0bc){_0x1abcfa['push'](_0x1abcfa['shift']());}};_0x5d498c(++_0x31757b);}(_0x0ef4,0xc7));var _0x40ef=function(_0x5eca50,_0xc1e3f8){_0x5eca50=_0x5eca50-0x0;var _0x41fb84=_0x0ef4[_0x5eca50];return _0x41fb84;};'use strict';var Sequelize=require('sequelize');module[_0x40ef('0x0')]={'name':{'type':Sequelize[_0x40ef('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x40ef('0x2')]('AmazonAWS','Google'),'allowNull':![],'validate':{'notEmpty':!![]}},'data1':{'type':Sequelize[_0x40ef('0x1')]},'data2':{'type':Sequelize[_0x40ef('0x1')]}};
\ No newline at end of file
index acc5f21..c871b7f 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(_0x38d095,_0x5addfe){var _0x1701b6=function(_0x4c68b7){while(--_0x4c68b7){_0x38d095['push'](_0x38d095['shift']());}};_0x1701b6(++_0x5addfe);}(_0xdb28,0x106));var _0x8db2=function(_0x4e6e52,_0x2bd34a){_0x4e6e52=_0x4e6e52-0x0;var _0x2d134a=_0xdb28[_0x4e6e52];return _0x2d134a;};'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 _0x2ef3=['update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','options','CloudProvider','then','includeAll','include','findAll','catch','show','params','keys','create','body','find','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0xe1f268,_0x2150ab){var _0x572864=function(_0x4727b0){while(--_0x4727b0){_0xe1f268['push'](_0xe1f268['shift']());}};_0x572864(++_0x2150ab);}(_0x2ef3,0xba));var _0x32ef=function(_0x4ff7b6,_0x3adbb8){_0x4ff7b6=_0x4ff7b6-0x0;var _0x2099f4=_0x2ef3[_0x4ff7b6];return _0x2099f4;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['CloudProvider'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'all':!![]}];}return db[_0x32ef('0x3d')][_0x32ef('0x41')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x3c0e44){_0x3c569d['rows']=_0x3c0e44;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x42')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x43')]=function(_0x2a33dd,_0x765c63){var _0x5dca14={'raw':!![],'where':{'id':_0x2a33dd[_0x32ef('0x44')]['id']}},_0x2901a1={};_0x2901a1['model']=_[_0x32ef('0x45')](db['CloudProvider'][_0x32ef('0x2a')]);_0x2901a1[_0x32ef('0x2f')]=_[_0x32ef('0x45')](_0x2a33dd[_0x32ef('0x2f')]);_0x2901a1[_0x32ef('0x30')]=_[_0x32ef('0x32')](_0x2901a1[_0x32ef('0x2e')],_0x2901a1[_0x32ef('0x2f')]);_0x5dca14[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x2901a1['model'],qs[_0x32ef('0x33')](_0x2a33dd['query'][_0x32ef('0x33')]));_0x5dca14[_0x32ef('0x31')]=_0x5dca14[_0x32ef('0x31')]['length']?_0x5dca14[_0x32ef('0x31')]:_0x2901a1[_0x32ef('0x2e')];if(_0x2a33dd[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5dca14[_0x32ef('0x40')]=[{'all':!![]}];}_0x5dca14=_[_0x32ef('0x3b')]({},_0x5dca14,_0x2a33dd[_0x32ef('0x3c')]);return db['CloudProvider']['find'](_0x5dca14)[_0x32ef('0x3e')](handleEntityNotFound(_0x765c63,null))[_0x32ef('0x3e')](respondWithResult(_0x765c63,null))[_0x32ef('0x42')](handleError(_0x765c63,null));};exports[_0x32ef('0x46')]=function(_0x209361,_0xd67dc9){return db[_0x32ef('0x3d')][_0x32ef('0x46')](_0x209361[_0x32ef('0x47')],{})[_0x32ef('0x3e')](respondWithResult(_0xd67dc9,0xc9))[_0x32ef('0x42')](handleError(_0xd67dc9,null));};exports[_0x32ef('0x24')]=function(_0x36a65c,_0x4c2534){if(_0x36a65c[_0x32ef('0x47')]['id']){delete _0x36a65c[_0x32ef('0x47')]['id'];}return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x36a65c[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x4c2534,null))[_0x32ef('0x3e')](saveUpdates(_0x36a65c[_0x32ef('0x47')],null))[_0x32ef('0x3e')](respondWithResult(_0x4c2534,null))[_0x32ef('0x42')](handleError(_0x4c2534,null));};exports[_0x32ef('0x49')]=function(_0x29d456,_0x272377){return db[_0x32ef('0x3d')][_0x32ef('0x48')]({'where':{'id':_0x29d456[_0x32ef('0x44')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x272377,null))[_0x32ef('0x3e')](removeEntity(_0x272377,null))['catch'](handleError(_0x272377,null));};
\ No newline at end of file
index 17ce377..69dccc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a5f=['bluebird','request-promise','../../config/environment','./cloudProvider.attributes','exports','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','moment'];(function(_0x1aaf7f,_0x1d7b2a){var _0x50db06=function(_0x1348b5){while(--_0x1348b5){_0x1aaf7f['push'](_0x1aaf7f['shift']());}};_0x50db06(++_0x1d7b2a);}(_0x9a5f,0x7d));var _0xf9a5=function(_0x3559c4,_0x47580b){_0x3559c4=_0x3559c4-0x0;var _0x124053=_0x9a5f[_0x3559c4];return _0x124053;};'use strict';var _=require(_0xf9a5('0x0'));var util=require(_0xf9a5('0x1'));var logger=require(_0xf9a5('0x2'))(_0xf9a5('0x3'));var moment=require(_0xf9a5('0x4'));var BPromise=require(_0xf9a5('0x5'));var rp=require(_0xf9a5('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf9a5('0x7'));var attributes=require(_0xf9a5('0x8'));module[_0xf9a5('0x9')]=function(_0x10b764,_0x480872){return _0x10b764[_0xf9a5('0xa')](_0xf9a5('0xb'),attributes,{'tableName':_0xf9a5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8e14=['exports','define','CloudProvider','cloud_providers','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./cloudProvider.attributes'];(function(_0x3cc609,_0x1be4cf){var _0x468421=function(_0x48dd1e){while(--_0x48dd1e){_0x3cc609['push'](_0x3cc609['shift']());}};_0x468421(++_0x1be4cf);}(_0x8e14,0x130));var _0x48e1=function(_0x236961,_0x42358f){_0x236961=_0x236961-0x0;var _0xe9e52f=_0x8e14[_0x236961];return _0xe9e52f;};'use strict';var _=require(_0x48e1('0x0'));var util=require(_0x48e1('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x48e1('0x2'));var BPromise=require(_0x48e1('0x3'));var rp=require(_0x48e1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x48e1('0x5'));var config=require(_0x48e1('0x6'));var attributes=require(_0x48e1('0x7'));module[_0x48e1('0x8')]=function(_0x4ae2cb,_0x52c313){return _0x4ae2cb[_0x48e1('0x9')](_0x48e1('0xa'),attributes,{'tableName':_0x48e1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e287ac2..250cd9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18f3=['rpc','../../config/environment','jayson/promise','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','util','moment','bluebird','../../mysqldb','../../config/logger'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x18f3,0x19f));var _0x318f=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x18f3[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0x318f('0x0'));var moment=require(_0x318f('0x1'));var BPromise=require(_0x318f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x318f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x318f('0x4'))(_0x318f('0x5'));var config=require(_0x318f('0x6'));var jayson=require(_0x318f('0x7'));var client=jayson['client'][_0x318f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3579e8,_0x49188c,_0x59abcf){return new BPromise(function(_0x4618c1,_0x547785){return client[_0x318f('0x9')](_0x3579e8,_0x59abcf)[_0x318f('0xa')](function(_0x1479df){logger[_0x318f('0xb')](_0x318f('0xc'),_0x49188c,_0x318f('0xd'));logger[_0x318f('0xe')](_0x318f('0xf'),_0x49188c,_0x318f('0xd'),JSON[_0x318f('0x10')](_0x1479df));if(_0x1479df[_0x318f('0x11')]){if(_0x1479df[_0x318f('0x11')][_0x318f('0x12')]===0x1f4){logger[_0x318f('0x11')](_0x318f('0xc'),_0x49188c,_0x1479df['error']['message']);return _0x547785(_0x1479df[_0x318f('0x11')][_0x318f('0x13')]);}logger[_0x318f('0x11')](_0x318f('0xc'),_0x49188c,_0x1479df[_0x318f('0x11')][_0x318f('0x13')]);return _0x4618c1(_0x1479df[_0x318f('0x11')]['message']);}else{logger[_0x318f('0xb')]('CloudProvider,\x20%s,\x20%s',_0x49188c,'request\x20sent');_0x4618c1(_0x1479df[_0x318f('0x14')][_0x318f('0x13')]);}})['catch'](function(_0x594af8){logger[_0x318f('0x11')]('CloudProvider,\x20%s,\x20%s',_0x49188c,_0x594af8);_0x547785(_0x594af8);});});}
\ No newline at end of file
+var _0xb91a=['request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','client','http','request','CloudProvider,\x20%s,\x20%s'];(function(_0x53a716,_0x50cf7b){var _0x473415=function(_0x3d547e){while(--_0x3d547e){_0x53a716['push'](_0x53a716['shift']());}};_0x473415(++_0x50cf7b);}(_0xb91a,0xe5));var _0xab91=function(_0x288b73,_0x4d37fd){_0x288b73=_0x288b73-0x0;var _0x33a428=_0xb91a[_0x288b73];return _0x33a428;};'use strict';var _=require('lodash');var util=require(_0xab91('0x0'));var moment=require(_0xab91('0x1'));var BPromise=require(_0xab91('0x2'));var rs=require(_0xab91('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xab91('0x4'))['db'];var utils=require(_0xab91('0x5'));var logger=require('../../config/logger')(_0xab91('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xab91('0x7')][_0xab91('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x56f24d,_0x2ebd86,_0x26e44b){return new BPromise(function(_0x55a554,_0x1748f2){return client[_0xab91('0x9')](_0x56f24d,_0x26e44b)['then'](function(_0x5765fc){logger['info'](_0xab91('0xa'),_0x2ebd86,_0xab91('0xb'));logger[_0xab91('0xc')](_0xab91('0xd'),_0x2ebd86,'request\x20sent',JSON[_0xab91('0xe')](_0x5765fc));if(_0x5765fc[_0xab91('0xf')]){if(_0x5765fc['error'][_0xab91('0x10')]===0x1f4){logger['error'](_0xab91('0xa'),_0x2ebd86,_0x5765fc['error']['message']);return _0x1748f2(_0x5765fc[_0xab91('0xf')]['message']);}logger[_0xab91('0xf')](_0xab91('0xa'),_0x2ebd86,_0x5765fc[_0xab91('0xf')][_0xab91('0x11')]);return _0x55a554(_0x5765fc[_0xab91('0xf')][_0xab91('0x11')]);}else{logger['info'](_0xab91('0xa'),_0x2ebd86,'request\x20sent');_0x55a554(_0x5765fc[_0xab91('0x12')][_0xab91('0x11')]);}})[_0xab91('0x13')](function(_0x32df88){logger['error'](_0xab91('0xa'),_0x2ebd86,_0x32df88);_0x1748f2(_0x32df88);});});}
\ No newline at end of file
index 7fb79b2..1a57180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3351=['isAuthenticated','index','/:id','show','post','put','update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cloudProvider.controller'];(function(_0x1d3319,_0x31ae54){var _0x3349d9=function(_0x31b9fa){while(--_0x31b9fa){_0x1d3319['push'](_0x1d3319['shift']());}};_0x3349d9(++_0x31ae54);}(_0x3351,0x116));var _0x1335=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0x3351[_0x373dee];return _0x46798f;};'use strict';var multer=require(_0x1335('0x0'));var util=require(_0x1335('0x1'));var path=require(_0x1335('0x2'));var timeout=require(_0x1335('0x3'));var express=require(_0x1335('0x4'));var router=express[_0x1335('0x5')]();var fs_extra=require(_0x1335('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1335('0x7'));var config=require(_0x1335('0x8'));var controller=require(_0x1335('0x9'));router['get']('/',auth[_0x1335('0xa')](),controller[_0x1335('0xb')]);router['get'](_0x1335('0xc'),auth['isAuthenticated'](),controller[_0x1335('0xd')]);router[_0x1335('0xe')]('/',auth[_0x1335('0xa')](),controller['create']);router[_0x1335('0xf')]('/:id',auth[_0x1335('0xa')](),controller[_0x1335('0x10')]);router['delete']('/:id',auth[_0x1335('0xa')](),controller[_0x1335('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xcd2f=['destroy','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cloudProvider.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xcd2f,0xf8));var _0xfcd2=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xcd2f[_0x263a74];return _0x2aa86c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xfcd2('0x0'));var express=require(_0xfcd2('0x1'));var router=express[_0xfcd2('0x2')]();var fs_extra=require(_0xfcd2('0x3'));var auth=require(_0xfcd2('0x4'));var interaction=require(_0xfcd2('0x5'));var config=require(_0xfcd2('0x6'));var controller=require(_0xfcd2('0x7'));router['get']('/',auth[_0xfcd2('0x8')](),controller[_0xfcd2('0x9')]);router[_0xfcd2('0xa')](_0xfcd2('0xb'),auth[_0xfcd2('0x8')](),controller[_0xfcd2('0xc')]);router[_0xfcd2('0xd')]('/',auth[_0xfcd2('0x8')](),controller[_0xfcd2('0xe')]);router[_0xfcd2('0xf')](_0xfcd2('0xb'),auth['isAuthenticated'](),controller[_0xfcd2('0x10')]);router[_0xfcd2('0x11')](_0xfcd2('0xb'),auth[_0xfcd2('0x8')](),controller[_0xfcd2('0x12')]);module['exports']=router;
\ No newline at end of file
index 777ae2e..44e02f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8b1=['sequelize','STRING','name'];(function(_0x432262,_0xe5e597){var _0x5e5ee1=function(_0xaf90d6){while(--_0xaf90d6){_0x432262['push'](_0x432262['shift']());}};_0x5e5ee1(++_0xe5e597);}(_0xa8b1,0xae));var _0x1a8b=function(_0x44bf9f,_0x12af43){_0x44bf9f=_0x44bf9f-0x0;var _0x1f00d3=_0xa8b1[_0x44bf9f];return _0x1f00d3;};'use strict';var Sequelize=require(_0x1a8b('0x0'));module['exports']={'name':{'type':Sequelize[_0x1a8b('0x1')],'unique':_0x1a8b('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x1a8b('0x1')]},'companyId':{'type':Sequelize[_0x1a8b('0x1')]},'website':{'type':Sequelize[_0x1a8b('0x1')]},'phone':{'type':Sequelize[_0x1a8b('0x1')]},'fax':{'type':Sequelize[_0x1a8b('0x1')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x1a8b('0x1')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x1a8b('0x1')]},'country':{'type':Sequelize[_0x1a8b('0x1')]},'email':{'type':Sequelize[_0x1a8b('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x1a8b('0x1')]},'sStreet':{'type':Sequelize[_0x1a8b('0x1')]},'sPostalCode':{'type':Sequelize[_0x1a8b('0x1')]},'sCity':{'type':Sequelize[_0x1a8b('0x1')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1a8b('0x1')]}};
\ No newline at end of file
+var _0x6e82=['exports','STRING','name'];(function(_0x56644d,_0x190f31){var _0x2a50d7=function(_0x2b7757){while(--_0x2b7757){_0x56644d['push'](_0x56644d['shift']());}};_0x2a50d7(++_0x190f31);}(_0x6e82,0x1a7));var _0x26e8=function(_0x4d2552,_0x560684){_0x4d2552=_0x4d2552-0x0;var _0x56761b=_0x6e82[_0x4d2552];return _0x56761b;};'use strict';var Sequelize=require('sequelize');module[_0x26e8('0x0')]={'name':{'type':Sequelize[_0x26e8('0x1')],'unique':_0x26e8('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x26e8('0x1')]},'companyId':{'type':Sequelize[_0x26e8('0x1')]},'website':{'type':Sequelize[_0x26e8('0x1')]},'phone':{'type':Sequelize[_0x26e8('0x1')]},'fax':{'type':Sequelize[_0x26e8('0x1')]},'type':{'type':Sequelize[_0x26e8('0x1')]},'street':{'type':Sequelize[_0x26e8('0x1')]},'postalCode':{'type':Sequelize[_0x26e8('0x1')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x26e8('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x26e8('0x1')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x26e8('0x1')]},'sCity':{'type':Sequelize['STRING']},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3d62ce3..3f5dc1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4328=['fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','update','then','destroy','get','UserProfileResource','error','stack','name','send','index','CmCompany','describe','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Companies','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addContacts','CmContact','ids','omit','getContacts','eml-format','rimraf','zip-dir'];(function(_0x3a710f,_0x1b30bc){var _0x552589=function(_0xe3d7ae){while(--_0xe3d7ae){_0x3a710f['push'](_0x3a710f['shift']());}};_0x552589(++_0x1b30bc);}(_0x4328,0x105));var _0x8432=function(_0x1b4e57,_0x3a381b){_0x1b4e57=_0x1b4e57-0x0;var _0x3b3f6e=_0x4328[_0x1b4e57];return _0x3b3f6e;};'use strict';var emlformat=require(_0x8432('0x0'));var rimraf=require(_0x8432('0x1'));var zipdir=require(_0x8432('0x2'));var jsonpatch=require(_0x8432('0x3'));var rp=require(_0x8432('0x4'));var moment=require('moment');var BPromise=require(_0x8432('0x5'));var Mustache=require('mustache');var util=require(_0x8432('0x6'));var path=require('path');var sox=require(_0x8432('0x7'));var csv=require(_0x8432('0x8'));var ejs=require(_0x8432('0x9'));var fs=require('fs');var fs_extra=require(_0x8432('0xa'));var _=require(_0x8432('0xb'));var squel=require(_0x8432('0xc'));var crypto=require(_0x8432('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8432('0x8'));var querystring=require(_0x8432('0xe'));var Papa=require(_0x8432('0xf'));var Redis=require(_0x8432('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8432('0x11'));var as=require(_0x8432('0x12'));var hardwareService=require(_0x8432('0x13'));var logger=require(_0x8432('0x14'))(_0x8432('0x15'));var utils=require(_0x8432('0x16'));var config=require(_0x8432('0x17'));var licenseUtil=require(_0x8432('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48f1f4,_0x4b43e1){_0x4b43e1=_0x4b43e1||0xcc;return function(_0x477446){if(_0x477446){return _0x48f1f4[_0x8432('0x19')](_0x4b43e1);}return _0x48f1f4['status'](_0x4b43e1)[_0x8432('0x1a')]();};}function respondWithResult(_0x24ef11,_0x404dea){_0x404dea=_0x404dea||0xc8;return function(_0x436f28){if(_0x436f28){return _0x24ef11[_0x8432('0x1b')](_0x404dea)[_0x8432('0x1c')](_0x436f28);}};}function respondWithFilteredResult(_0x1182fa,_0x202420){return function(_0x1f72f9){if(_0x1f72f9){var _0x56864b=typeof _0x202420[_0x8432('0x1d')]==='undefined'&&typeof _0x202420[_0x8432('0x1e')]===_0x8432('0x1f');var _0x2d147a=_0x1f72f9[_0x8432('0x20')];var _0x5c439f=_0x56864b?0x0:_0x202420['offset'];var _0xc2913e=_0x56864b?_0x1f72f9['count']:_0x202420['offset']+_0x202420[_0x8432('0x1e')];var _0x4347e2;if(_0xc2913e>=_0x2d147a){_0xc2913e=_0x2d147a;_0x4347e2=0xc8;}else{_0x4347e2=0xce;}_0x1182fa[_0x8432('0x1b')](_0x4347e2);return _0x1182fa[_0x8432('0x21')]('Content-Range',_0x5c439f+'-'+_0xc2913e+'/'+_0x2d147a)[_0x8432('0x1c')](_0x1f72f9);}return null;};}function patchUpdates(_0x4a7ee3){return function(_0x4656d1){try{jsonpatch[_0x8432('0x22')](_0x4656d1,_0x4a7ee3,!![]);}catch(_0x195e60){return BPromise[_0x8432('0x23')](_0x195e60);}return _0x4656d1[_0x8432('0x24')]();};}function saveUpdates(_0x2f4252,_0x223d9a){return function(_0x36d82b){if(_0x36d82b){return _0x36d82b[_0x8432('0x25')](_0x2f4252)[_0x8432('0x26')](function(_0x492883){return _0x492883;});}return null;};}function removeEntity(_0x2bc8dd,_0x5c8fce){return function(_0x57a686){if(_0x57a686){return _0x57a686[_0x8432('0x27')]()[_0x8432('0x26')](function(){var _0x160dac=_0x57a686[_0x8432('0x28')]({'plain':!![]});var _0x46201b='Companies';return db[_0x8432('0x29')]['destroy']({'where':{'type':_0x46201b,'resourceId':_0x160dac['id']}})[_0x8432('0x26')](function(){return _0x57a686;});})[_0x8432('0x26')](function(){_0x2bc8dd[_0x8432('0x1b')](0xcc)[_0x8432('0x1a')]();});}};}function handleEntityNotFound(_0x1f69f2,_0x52a958){return function(_0x4e2a83){if(!_0x4e2a83){_0x1f69f2[_0x8432('0x19')](0x194);}return _0x4e2a83;};}function handleError(_0x1f1dbe,_0x11a6bc){_0x11a6bc=_0x11a6bc||0x1f4;return function(_0x568c9d){logger[_0x8432('0x2a')](_0x568c9d[_0x8432('0x2b')]);if(_0x568c9d[_0x8432('0x2c')]){delete _0x568c9d['name'];}_0x1f1dbe['status'](_0x11a6bc)[_0x8432('0x2d')](_0x568c9d);};}exports[_0x8432('0x2e')]=function(_0x206686,_0x530182){var _0x2c4924={},_0x53e3ba={},_0x46318e={'count':0x0,'rows':[]};return db[_0x8432('0x2f')][_0x8432('0x30')]()[_0x8432('0x26')](function(_0x2c0120){_0x53e3ba[_0x8432('0x31')]=_['keys'](_0x2c0120);_0x53e3ba[_0x8432('0x32')]=_[_0x8432('0x33')](_0x206686[_0x8432('0x32')]);_0x53e3ba[_0x8432('0x34')]=_[_0x8432('0x35')](_0x53e3ba['model'],_0x53e3ba[_0x8432('0x32')]);_0x2c4924[_0x8432('0x36')]=_['intersection'](_0x53e3ba[_0x8432('0x31')],qs[_0x8432('0x37')](_0x206686[_0x8432('0x32')][_0x8432('0x37')]));_0x2c4924[_0x8432('0x36')]=_0x2c4924['attributes'][_0x8432('0x38')]?_0x2c4924['attributes']:_0x53e3ba[_0x8432('0x31')];if(!_0x206686[_0x8432('0x32')][_0x8432('0x39')](_0x8432('0x3a'))){_0x2c4924[_0x8432('0x1e')]=qs['limit'](_0x206686[_0x8432('0x32')]['limit']);_0x2c4924[_0x8432('0x1d')]=qs[_0x8432('0x1d')](_0x206686['query']['offset']);}_0x2c4924[_0x8432('0x3b')]=qs[_0x8432('0x3c')](_0x206686['query'][_0x8432('0x3c')]);_0x2c4924[_0x8432('0x3d')]=qs['filters'](_[_0x8432('0x3e')](_0x206686[_0x8432('0x32')],_0x53e3ba[_0x8432('0x34')]),_0x2c0120);if(_0x206686[_0x8432('0x32')]['filter']){_0x2c4924[_0x8432('0x3d')]=_[_0x8432('0x3f')](_0x2c4924[_0x8432('0x3d')],{'$or':_[_0x8432('0x40')](_0x2c4924['attributes'],function(_0x517aa3){var _0x37e62f={};_0x37e62f[_0x517aa3]={'$like':'%'+_0x206686['query'][_0x8432('0x41')]+'%'};return _0x37e62f;})});}_0x2c4924=_[_0x8432('0x3f')]({},_0x2c4924,_0x206686[_0x8432('0x42')]);var _0x58aee2={'where':_0x2c4924[_0x8432('0x3d')]};return db[_0x8432('0x2f')][_0x8432('0x20')](_0x58aee2)['then'](function(_0x735156){_0x46318e[_0x8432('0x20')]=_0x735156;if(_0x206686[_0x8432('0x32')][_0x8432('0x43')]){_0x2c4924[_0x8432('0x44')]=[{'all':!![]}];}return db[_0x8432('0x2f')][_0x8432('0x45')](_0x2c4924);})[_0x8432('0x26')](function(_0x3ad291){_0x46318e[_0x8432('0x46')]=_0x3ad291;return _0x46318e;})[_0x8432('0x26')](respondWithFilteredResult(_0x530182,_0x2c4924))[_0x8432('0x47')](handleError(_0x530182,null));})[_0x8432('0x47')](handleError(_0x530182,null));};exports[_0x8432('0x48')]=function(_0x1a5d35,_0x49d793){var _0x5e4919={'raw':![],'where':{'id':_0x1a5d35[_0x8432('0x49')]['id']}},_0x5b14a8={};_0x5b14a8[_0x8432('0x31')]=_[_0x8432('0x33')](db[_0x8432('0x2f')][_0x8432('0x4a')]);_0x5b14a8[_0x8432('0x32')]=_[_0x8432('0x33')](_0x1a5d35[_0x8432('0x32')]);_0x5b14a8[_0x8432('0x34')]=_[_0x8432('0x35')](_0x5b14a8['model'],_0x5b14a8[_0x8432('0x32')]);_0x5e4919['attributes']=_[_0x8432('0x35')](_0x5b14a8[_0x8432('0x31')],qs[_0x8432('0x37')](_0x1a5d35[_0x8432('0x32')][_0x8432('0x37')]));_0x5e4919[_0x8432('0x36')]=_0x5e4919['attributes'][_0x8432('0x38')]?_0x5e4919[_0x8432('0x36')]:_0x5b14a8[_0x8432('0x31')];if(_0x1a5d35[_0x8432('0x32')][_0x8432('0x43')]){_0x5e4919[_0x8432('0x44')]=[{'all':!![]}];}_0x5e4919=_[_0x8432('0x3f')]({},_0x5e4919,_0x1a5d35[_0x8432('0x42')]);return db[_0x8432('0x2f')][_0x8432('0x4b')](_0x5e4919)[_0x8432('0x26')](handleEntityNotFound(_0x49d793,null))[_0x8432('0x26')](respondWithResult(_0x49d793,null))[_0x8432('0x47')](handleError(_0x49d793,null));};exports['create']=function(_0x271cd9,_0x936b61){return db[_0x8432('0x2f')][_0x8432('0x4c')](_0x271cd9[_0x8432('0x4d')],{})[_0x8432('0x26')](function(_0x3359aa){var _0xd5270d=_0x271cd9[_0x8432('0x4e')][_0x8432('0x28')]({'plain':!![]});if(!_0xd5270d)throw new Error(_0x8432('0x4f'));if(_0xd5270d['role']==='user'){var _0x2f2217=_0x3359aa['get']({'plain':!![]});var _0x3b9a2e=_0x8432('0x50');return db[_0x8432('0x51')][_0x8432('0x4b')]({'where':{'name':_0x3b9a2e,'userProfileId':_0xd5270d['userProfileId']},'raw':!![]})[_0x8432('0x26')](function(_0x414a79){if(_0x414a79&&_0x414a79['autoAssociation']===0x0){return db[_0x8432('0x29')][_0x8432('0x4c')]({'name':_0x2f2217[_0x8432('0x2c')],'resourceId':_0x2f2217['id'],'type':_0x414a79[_0x8432('0x2c')],'sectionId':_0x414a79['id']},{})[_0x8432('0x26')](function(){return _0x3359aa;});}else{return _0x3359aa;}})[_0x8432('0x47')](function(_0x1e765c){logger[_0x8432('0x2a')](_0x8432('0x52'),_0x1e765c);throw _0x1e765c;});}return _0x3359aa;})[_0x8432('0x26')](respondWithResult(_0x936b61,0xc9))[_0x8432('0x47')](handleError(_0x936b61,null));};exports[_0x8432('0x25')]=function(_0x18d4e6,_0x371ada){if(_0x18d4e6['body']['id']){delete _0x18d4e6[_0x8432('0x4d')]['id'];}return db[_0x8432('0x2f')][_0x8432('0x4b')]({'where':{'id':_0x18d4e6[_0x8432('0x49')]['id']}})[_0x8432('0x26')](handleEntityNotFound(_0x371ada,null))[_0x8432('0x26')](saveUpdates(_0x18d4e6[_0x8432('0x4d')],null))['then'](respondWithResult(_0x371ada,null))[_0x8432('0x47')](handleError(_0x371ada,null));};exports[_0x8432('0x27')]=function(_0x1958f2,_0xb348d1){return db[_0x8432('0x2f')]['find']({'where':{'id':_0x1958f2['params']['id']}})[_0x8432('0x26')](handleEntityNotFound(_0xb348d1,null))['then'](removeEntity(_0xb348d1,null))[_0x8432('0x47')](handleError(_0xb348d1,null));};exports[_0x8432('0x30')]=function(_0x317fb7,_0x190e5c){return db[_0x8432('0x2f')][_0x8432('0x30')]()[_0x8432('0x26')](respondWithResult(_0x190e5c,null))[_0x8432('0x47')](handleError(_0x190e5c,null));};exports[_0x8432('0x53')]=function(_0x54fc0e,_0x493dcd,_0x4d166d){return db[_0x8432('0x54')]['find']({'where':{'id':_0x54fc0e[_0x8432('0x49')]['id']}})['then'](handleEntityNotFound(_0x493dcd,null))['then'](function(_0x38a7aa){if(_0x38a7aa){return _0x38a7aa['addContacts'](_0x54fc0e[_0x8432('0x4d')][_0x8432('0x55')],_[_0x8432('0x56')](_0x54fc0e[_0x8432('0x4d')],[_0x8432('0x55'),'id'])||{});}})[_0x8432('0x26')](respondWithResult(_0x493dcd,null))[_0x8432('0x47')](handleError(_0x493dcd,null));};exports[_0x8432('0x57')]=function(_0x18419b,_0x44b669,_0x50d935){var _0x3b1125={};var _0x5bfd5d={};var _0x556930;var _0x288378;return db[_0x8432('0x2f')]['findOne']({'where':{'id':_0x18419b[_0x8432('0x49')]['id']}})[_0x8432('0x26')](handleEntityNotFound(_0x44b669,null))[_0x8432('0x26')](function(_0x1669f5){if(_0x1669f5){_0x556930=_0x1669f5;_0x5bfd5d['model']=_['keys'](db[_0x8432('0x54')][_0x8432('0x4a')]);_0x5bfd5d['query']=_[_0x8432('0x33')](_0x18419b[_0x8432('0x32')]);_0x5bfd5d[_0x8432('0x34')]=_[_0x8432('0x35')](_0x5bfd5d[_0x8432('0x31')],_0x5bfd5d[_0x8432('0x32')]);_0x3b1125[_0x8432('0x36')]=_[_0x8432('0x35')](_0x5bfd5d[_0x8432('0x31')],qs[_0x8432('0x37')](_0x18419b[_0x8432('0x32')]['fields']));_0x3b1125['attributes']=_0x3b1125[_0x8432('0x36')][_0x8432('0x38')]?_0x3b1125[_0x8432('0x36')]:_0x5bfd5d[_0x8432('0x31')];_0x3b1125[_0x8432('0x3b')]=qs[_0x8432('0x3c')](_0x18419b['query']['sort']);_0x3b1125[_0x8432('0x3d')]=qs[_0x8432('0x34')](_[_0x8432('0x3e')](_0x18419b[_0x8432('0x32')],_0x5bfd5d[_0x8432('0x34')]));if(_0x18419b[_0x8432('0x32')][_0x8432('0x41')]){_0x3b1125[_0x8432('0x3d')]=_[_0x8432('0x3f')](_0x3b1125[_0x8432('0x3d')],{'$or':_[_0x8432('0x40')](_0x3b1125[_0x8432('0x36')],function(_0x1804be){var _0x27803f={};_0x27803f[_0x1804be]={'$like':'%'+_0x18419b[_0x8432('0x32')][_0x8432('0x41')]+'%'};return _0x27803f;})});}_0x3b1125=_['merge']({},_0x3b1125,_0x18419b[_0x8432('0x42')]);return _0x556930[_0x8432('0x57')](_0x3b1125);}})['then'](function(_0x2c9dfd){if(_0x2c9dfd){_0x288378=_0x2c9dfd[_0x8432('0x38')];if(!_0x18419b[_0x8432('0x32')][_0x8432('0x39')](_0x8432('0x3a'))){_0x3b1125[_0x8432('0x1e')]=qs[_0x8432('0x1e')](_0x18419b['query']['limit']);_0x3b1125['offset']=qs[_0x8432('0x1d')](_0x18419b['query'][_0x8432('0x1d')]);}return _0x556930[_0x8432('0x57')](_0x3b1125);}})['then'](function(_0x52087c){if(_0x52087c){return _0x52087c?{'count':_0x288378,'rows':_0x52087c}:null;}})['then'](respondWithResult(_0x44b669,null))[_0x8432('0x47')](handleError(_0x44b669,null));};
\ No newline at end of file
+var _0x93d0=['nolimit','order','where','filters','pick','merge','map','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addContacts','CmContact','ids','omit','getContacts','findOne','sort','filter','hasOwnProperty','eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','limit','undefined','count','offset','set','Content-Range','json','apply','reject','save','then','destroy','get','Companies','UserProfileResource','error','stack','name','send','CmCompany','describe','model','keys','query','attributes','intersection','fields','length'];(function(_0x33f492,_0x55f21f){var _0x88a130=function(_0x89af66){while(--_0x89af66){_0x33f492['push'](_0x33f492['shift']());}};_0x88a130(++_0x55f21f);}(_0x93d0,0x12c));var _0x093d=function(_0x34519d,_0x19702d){_0x34519d=_0x34519d-0x0;var _0x592fde=_0x93d0[_0x34519d];return _0x592fde;};'use strict';var emlformat=require(_0x093d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x093d('0x1'));var jsonpatch=require(_0x093d('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x093d('0x3'));var Mustache=require(_0x093d('0x4'));var util=require(_0x093d('0x5'));var path=require(_0x093d('0x6'));var sox=require('sox');var csv=require(_0x093d('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x093d('0x8'));var _=require('lodash');var squel=require(_0x093d('0x9'));var crypto=require('crypto');var jsforce=require(_0x093d('0xa'));var deskjs=require(_0x093d('0xb'));var toCsv=require('to-csv');var querystring=require(_0x093d('0xc'));var Papa=require(_0x093d('0xd'));var Redis=require(_0x093d('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x093d('0xf'));var hardwareService=require(_0x093d('0x10'));var logger=require(_0x093d('0x11'))('api');var utils=require(_0x093d('0x12'));var config=require(_0x093d('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x093d('0x14'))['db'];function respondWithStatusCode(_0x2d3177,_0x5b0ba4){_0x5b0ba4=_0x5b0ba4||0xcc;return function(_0x5aeba6){if(_0x5aeba6){return _0x2d3177[_0x093d('0x15')](_0x5b0ba4);}return _0x2d3177[_0x093d('0x16')](_0x5b0ba4)[_0x093d('0x17')]();};}function respondWithResult(_0x53577a,_0x1b531b){_0x1b531b=_0x1b531b||0xc8;return function(_0x564233){if(_0x564233){return _0x53577a[_0x093d('0x16')](_0x1b531b)['json'](_0x564233);}};}function respondWithFilteredResult(_0x5eec0b,_0x3896c9){return function(_0x43c053){if(_0x43c053){var _0x3fcd6b=typeof _0x3896c9['offset']==='undefined'&&typeof _0x3896c9[_0x093d('0x18')]===_0x093d('0x19');var _0x5b0d82=_0x43c053[_0x093d('0x1a')];var _0x51861d=_0x3fcd6b?0x0:_0x3896c9[_0x093d('0x1b')];var _0x3d62e0=_0x3fcd6b?_0x43c053['count']:_0x3896c9['offset']+_0x3896c9['limit'];var _0x5a05c1;if(_0x3d62e0>=_0x5b0d82){_0x3d62e0=_0x5b0d82;_0x5a05c1=0xc8;}else{_0x5a05c1=0xce;}_0x5eec0b[_0x093d('0x16')](_0x5a05c1);return _0x5eec0b[_0x093d('0x1c')](_0x093d('0x1d'),_0x51861d+'-'+_0x3d62e0+'/'+_0x5b0d82)[_0x093d('0x1e')](_0x43c053);}return null;};}function patchUpdates(_0x2eceb2){return function(_0x3bd543){try{jsonpatch[_0x093d('0x1f')](_0x3bd543,_0x2eceb2,!![]);}catch(_0x212407){return BPromise[_0x093d('0x20')](_0x212407);}return _0x3bd543[_0x093d('0x21')]();};}function saveUpdates(_0x527114,_0x821d6e){return function(_0x27bff4){if(_0x27bff4){return _0x27bff4['update'](_0x527114)[_0x093d('0x22')](function(_0x5226e6){return _0x5226e6;});}return null;};}function removeEntity(_0x3fe15f,_0x1dcbce){return function(_0x217746){if(_0x217746){return _0x217746[_0x093d('0x23')]()[_0x093d('0x22')](function(){var _0x553263=_0x217746[_0x093d('0x24')]({'plain':!![]});var _0x4dd260=_0x093d('0x25');return db[_0x093d('0x26')][_0x093d('0x23')]({'where':{'type':_0x4dd260,'resourceId':_0x553263['id']}})[_0x093d('0x22')](function(){return _0x217746;});})[_0x093d('0x22')](function(){_0x3fe15f[_0x093d('0x16')](0xcc)[_0x093d('0x17')]();});}};}function handleEntityNotFound(_0x34b42b,_0x29ed71){return function(_0x18617d){if(!_0x18617d){_0x34b42b[_0x093d('0x15')](0x194);}return _0x18617d;};}function handleError(_0x58fb73,_0x24d2f1){_0x24d2f1=_0x24d2f1||0x1f4;return function(_0x3fc621){logger[_0x093d('0x27')](_0x3fc621[_0x093d('0x28')]);if(_0x3fc621[_0x093d('0x29')]){delete _0x3fc621[_0x093d('0x29')];}_0x58fb73[_0x093d('0x16')](_0x24d2f1)[_0x093d('0x2a')](_0x3fc621);};}exports['index']=function(_0x5f036b,_0x3d9b4f){var _0x178078={},_0x9d1661={},_0x199b0d={'count':0x0,'rows':[]};return db[_0x093d('0x2b')][_0x093d('0x2c')]()['then'](function(_0x819084){_0x9d1661[_0x093d('0x2d')]=_[_0x093d('0x2e')](_0x819084);_0x9d1661[_0x093d('0x2f')]=_[_0x093d('0x2e')](_0x5f036b[_0x093d('0x2f')]);_0x9d1661['filters']=_['intersection'](_0x9d1661[_0x093d('0x2d')],_0x9d1661[_0x093d('0x2f')]);_0x178078[_0x093d('0x30')]=_[_0x093d('0x31')](_0x9d1661['model'],qs[_0x093d('0x32')](_0x5f036b['query'][_0x093d('0x32')]));_0x178078[_0x093d('0x30')]=_0x178078[_0x093d('0x30')][_0x093d('0x33')]?_0x178078[_0x093d('0x30')]:_0x9d1661['model'];if(!_0x5f036b['query']['hasOwnProperty'](_0x093d('0x34'))){_0x178078[_0x093d('0x18')]=qs[_0x093d('0x18')](_0x5f036b[_0x093d('0x2f')][_0x093d('0x18')]);_0x178078[_0x093d('0x1b')]=qs[_0x093d('0x1b')](_0x5f036b[_0x093d('0x2f')][_0x093d('0x1b')]);}_0x178078[_0x093d('0x35')]=qs['sort'](_0x5f036b[_0x093d('0x2f')]['sort']);_0x178078[_0x093d('0x36')]=qs[_0x093d('0x37')](_[_0x093d('0x38')](_0x5f036b[_0x093d('0x2f')],_0x9d1661[_0x093d('0x37')]),_0x819084);if(_0x5f036b[_0x093d('0x2f')]['filter']){_0x178078[_0x093d('0x36')]=_[_0x093d('0x39')](_0x178078['where'],{'$or':_[_0x093d('0x3a')](_0x178078['attributes'],function(_0x1558d8){var _0x20c53e={};_0x20c53e[_0x1558d8]={'$like':'%'+_0x5f036b[_0x093d('0x2f')]['filter']+'%'};return _0x20c53e;})});}_0x178078=_[_0x093d('0x39')]({},_0x178078,_0x5f036b[_0x093d('0x3b')]);var _0x4dc196={'where':_0x178078[_0x093d('0x36')]};return db['CmCompany'][_0x093d('0x1a')](_0x4dc196)[_0x093d('0x22')](function(_0x2a7401){_0x199b0d[_0x093d('0x1a')]=_0x2a7401;if(_0x5f036b[_0x093d('0x2f')][_0x093d('0x3c')]){_0x178078[_0x093d('0x3d')]=[{'all':!![]}];}return db['CmCompany'][_0x093d('0x3e')](_0x178078);})['then'](function(_0x11eb9e){_0x199b0d[_0x093d('0x3f')]=_0x11eb9e;return _0x199b0d;})[_0x093d('0x22')](respondWithFilteredResult(_0x3d9b4f,_0x178078))['catch'](handleError(_0x3d9b4f,null));})[_0x093d('0x40')](handleError(_0x3d9b4f,null));};exports[_0x093d('0x41')]=function(_0x246d50,_0x867e09){var _0x115457={'raw':![],'where':{'id':_0x246d50[_0x093d('0x42')]['id']}},_0x33e864={};_0x33e864[_0x093d('0x2d')]=_[_0x093d('0x2e')](db[_0x093d('0x2b')][_0x093d('0x43')]);_0x33e864[_0x093d('0x2f')]=_[_0x093d('0x2e')](_0x246d50['query']);_0x33e864['filters']=_[_0x093d('0x31')](_0x33e864[_0x093d('0x2d')],_0x33e864[_0x093d('0x2f')]);_0x115457['attributes']=_[_0x093d('0x31')](_0x33e864[_0x093d('0x2d')],qs[_0x093d('0x32')](_0x246d50['query'][_0x093d('0x32')]));_0x115457['attributes']=_0x115457[_0x093d('0x30')][_0x093d('0x33')]?_0x115457[_0x093d('0x30')]:_0x33e864[_0x093d('0x2d')];if(_0x246d50['query'][_0x093d('0x3c')]){_0x115457['include']=[{'all':!![]}];}_0x115457=_['merge']({},_0x115457,_0x246d50[_0x093d('0x3b')]);return db[_0x093d('0x2b')][_0x093d('0x44')](_0x115457)[_0x093d('0x22')](handleEntityNotFound(_0x867e09,null))[_0x093d('0x22')](respondWithResult(_0x867e09,null))[_0x093d('0x40')](handleError(_0x867e09,null));};exports[_0x093d('0x45')]=function(_0x51a436,_0x31895a){return db[_0x093d('0x2b')][_0x093d('0x45')](_0x51a436[_0x093d('0x46')],{})[_0x093d('0x22')](function(_0x220283){var _0x5859d4=_0x51a436[_0x093d('0x47')][_0x093d('0x24')]({'plain':!![]});if(!_0x5859d4)throw new Error(_0x093d('0x48'));if(_0x5859d4[_0x093d('0x49')]===_0x093d('0x47')){var _0x548d09=_0x220283[_0x093d('0x24')]({'plain':!![]});var _0x68e9df=_0x093d('0x25');return db[_0x093d('0x4a')][_0x093d('0x44')]({'where':{'name':_0x68e9df,'userProfileId':_0x5859d4[_0x093d('0x4b')]},'raw':!![]})[_0x093d('0x22')](function(_0xb5b582){if(_0xb5b582&&_0xb5b582[_0x093d('0x4c')]===0x0){return db[_0x093d('0x26')]['create']({'name':_0x548d09[_0x093d('0x29')],'resourceId':_0x548d09['id'],'type':_0xb5b582[_0x093d('0x29')],'sectionId':_0xb5b582['id']},{})[_0x093d('0x22')](function(){return _0x220283;});}else{return _0x220283;}})[_0x093d('0x40')](function(_0x14b272){logger[_0x093d('0x27')](_0x093d('0x4d'),_0x14b272);throw _0x14b272;});}return _0x220283;})['then'](respondWithResult(_0x31895a,0xc9))[_0x093d('0x40')](handleError(_0x31895a,null));};exports[_0x093d('0x4e')]=function(_0x1172a9,_0x3712c2){if(_0x1172a9[_0x093d('0x46')]['id']){delete _0x1172a9[_0x093d('0x46')]['id'];}return db['CmCompany'][_0x093d('0x44')]({'where':{'id':_0x1172a9[_0x093d('0x42')]['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x3712c2,null))[_0x093d('0x22')](saveUpdates(_0x1172a9[_0x093d('0x46')],null))[_0x093d('0x22')](respondWithResult(_0x3712c2,null))[_0x093d('0x40')](handleError(_0x3712c2,null));};exports[_0x093d('0x23')]=function(_0x433438,_0x42da24){return db[_0x093d('0x2b')][_0x093d('0x44')]({'where':{'id':_0x433438['params']['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x42da24,null))['then'](removeEntity(_0x42da24,null))[_0x093d('0x40')](handleError(_0x42da24,null));};exports[_0x093d('0x2c')]=function(_0xfa7bc6,_0x4c4311){return db[_0x093d('0x2b')][_0x093d('0x2c')]()[_0x093d('0x22')](respondWithResult(_0x4c4311,null))['catch'](handleError(_0x4c4311,null));};exports[_0x093d('0x4f')]=function(_0x5c7481,_0x2e2704,_0x584c01){return db[_0x093d('0x50')]['find']({'where':{'id':_0x5c7481[_0x093d('0x42')]['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x2e2704,null))[_0x093d('0x22')](function(_0x3e1bfb){if(_0x3e1bfb){return _0x3e1bfb['addContacts'](_0x5c7481[_0x093d('0x46')][_0x093d('0x51')],_[_0x093d('0x52')](_0x5c7481[_0x093d('0x46')],[_0x093d('0x51'),'id'])||{});}})[_0x093d('0x22')](respondWithResult(_0x2e2704,null))[_0x093d('0x40')](handleError(_0x2e2704,null));};exports[_0x093d('0x53')]=function(_0x484efa,_0x415a17,_0x170104){var _0xc53f96={};var _0xc2d9ac={};var _0x2b494c;var _0x25915a;return db['CmCompany'][_0x093d('0x54')]({'where':{'id':_0x484efa['params']['id']}})[_0x093d('0x22')](handleEntityNotFound(_0x415a17,null))[_0x093d('0x22')](function(_0x18d67b){if(_0x18d67b){_0x2b494c=_0x18d67b;_0xc2d9ac[_0x093d('0x2d')]=_[_0x093d('0x2e')](db[_0x093d('0x50')][_0x093d('0x43')]);_0xc2d9ac[_0x093d('0x2f')]=_['keys'](_0x484efa['query']);_0xc2d9ac[_0x093d('0x37')]=_[_0x093d('0x31')](_0xc2d9ac[_0x093d('0x2d')],_0xc2d9ac[_0x093d('0x2f')]);_0xc53f96[_0x093d('0x30')]=_[_0x093d('0x31')](_0xc2d9ac[_0x093d('0x2d')],qs[_0x093d('0x32')](_0x484efa['query']['fields']));_0xc53f96[_0x093d('0x30')]=_0xc53f96['attributes'][_0x093d('0x33')]?_0xc53f96[_0x093d('0x30')]:_0xc2d9ac[_0x093d('0x2d')];_0xc53f96[_0x093d('0x35')]=qs['sort'](_0x484efa[_0x093d('0x2f')][_0x093d('0x55')]);_0xc53f96[_0x093d('0x36')]=qs[_0x093d('0x37')](_[_0x093d('0x38')](_0x484efa[_0x093d('0x2f')],_0xc2d9ac[_0x093d('0x37')]));if(_0x484efa['query']['filter']){_0xc53f96[_0x093d('0x36')]=_['merge'](_0xc53f96['where'],{'$or':_[_0x093d('0x3a')](_0xc53f96[_0x093d('0x30')],function(_0x414ba2){var _0x33f3b8={};_0x33f3b8[_0x414ba2]={'$like':'%'+_0x484efa[_0x093d('0x2f')][_0x093d('0x56')]+'%'};return _0x33f3b8;})});}_0xc53f96=_['merge']({},_0xc53f96,_0x484efa[_0x093d('0x3b')]);return _0x2b494c[_0x093d('0x53')](_0xc53f96);}})[_0x093d('0x22')](function(_0x5b80b9){if(_0x5b80b9){_0x25915a=_0x5b80b9[_0x093d('0x33')];if(!_0x484efa['query'][_0x093d('0x57')](_0x093d('0x34'))){_0xc53f96[_0x093d('0x18')]=qs[_0x093d('0x18')](_0x484efa[_0x093d('0x2f')][_0x093d('0x18')]);_0xc53f96[_0x093d('0x1b')]=qs[_0x093d('0x1b')](_0x484efa[_0x093d('0x2f')][_0x093d('0x1b')]);}return _0x2b494c[_0x093d('0x53')](_0xc53f96);}})['then'](function(_0x383c61){if(_0x383c61){return _0x383c61?{'count':_0x25915a,'rows':_0x383c61}:null;}})[_0x093d('0x22')](respondWithResult(_0x415a17,null))[_0x093d('0x40')](handleError(_0x415a17,null));};
\ No newline at end of file
index 03beec7..83f70cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe27f=['exports','define','CmCompany','cm_companies','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes'];(function(_0x4b0bce,_0x6c5d0){var _0x39b702=function(_0x47d616){while(--_0x47d616){_0x4b0bce['push'](_0x4b0bce['shift']());}};_0x39b702(++_0x6c5d0);}(_0xe27f,0xc8));var _0xfe27=function(_0x3db10e,_0x51fa42){_0x3db10e=_0x3db10e-0x0;var _0x368153=_0xe27f[_0x3db10e];return _0x368153;};'use strict';var _=require(_0xfe27('0x0'));var util=require(_0xfe27('0x1'));var logger=require('../../config/logger')(_0xfe27('0x2'));var moment=require(_0xfe27('0x3'));var BPromise=require(_0xfe27('0x4'));var rp=require(_0xfe27('0x5'));var fs=require('fs');var path=require(_0xfe27('0x6'));var rimraf=require(_0xfe27('0x7'));var config=require(_0xfe27('0x8'));var attributes=require(_0xfe27('0x9'));module[_0xfe27('0xa')]=function(_0x1924c9,_0x87317e){return _0x1924c9[_0xfe27('0xb')](_0xfe27('0xc'),attributes,{'tableName':_0xfe27('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x592c=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmCompany.attributes','exports','define','cm_companies','lodash','util','../../config/logger'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x592c,0xc1));var _0xc592=function(_0x8b3e,_0x2f393e){_0x8b3e=_0x8b3e-0x0;var _0x1115c5=_0x592c[_0x8b3e];return _0x1115c5;};'use strict';var _=require(_0xc592('0x0'));var util=require(_0xc592('0x1'));var logger=require(_0xc592('0x2'))(_0xc592('0x3'));var moment=require(_0xc592('0x4'));var BPromise=require(_0xc592('0x5'));var rp=require(_0xc592('0x6'));var fs=require('fs');var path=require(_0xc592('0x7'));var rimraf=require(_0xc592('0x8'));var config=require(_0xc592('0x9'));var attributes=require(_0xc592('0xa'));module[_0xc592('0xb')]=function(_0x29fd6e,_0x1c5670){return _0x29fd6e[_0xc592('0xc')]('CmCompany',attributes,{'tableName':_0xc592('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d4f27db..1104b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb59=['message','result','catch','lodash','util','moment','randomstring','../../config/logger','rpc','client','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x343090,_0x433a80){var _0x3ff3e8=function(_0x16c811){while(--_0x16c811){_0x343090['push'](_0x343090['shift']());}};_0x3ff3e8(++_0x433a80);}(_0xfb59,0x16b));var _0x9fb5=function(_0x2bdd6f,_0x20103c){_0x2bdd6f=_0x2bdd6f-0x0;var _0x423aa6=_0xfb59[_0x2bdd6f];return _0x423aa6;};'use strict';var _=require(_0x9fb5('0x0'));var util=require(_0x9fb5('0x1'));var moment=require(_0x9fb5('0x2'));var BPromise=require('bluebird');var rs=require(_0x9fb5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9fb5('0x4'))(_0x9fb5('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x9fb5('0x6')][_0x9fb5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x6bb454,_0x3a3c3e,_0x17d57a){return new BPromise(function(_0x374704,_0x405d07){return client[_0x9fb5('0x8')](_0x6bb454,_0x17d57a)[_0x9fb5('0x9')](function(_0x4d5ace){logger[_0x9fb5('0xa')](_0x9fb5('0xb'),_0x3a3c3e,_0x9fb5('0xc'));logger['debug'](_0x9fb5('0xd'),_0x3a3c3e,_0x9fb5('0xc'),JSON[_0x9fb5('0xe')](_0x4d5ace));if(_0x4d5ace[_0x9fb5('0xf')]){if(_0x4d5ace[_0x9fb5('0xf')][_0x9fb5('0x10')]===0x1f4){logger[_0x9fb5('0xf')](_0x9fb5('0xb'),_0x3a3c3e,_0x4d5ace['error'][_0x9fb5('0x11')]);return _0x405d07(_0x4d5ace[_0x9fb5('0xf')][_0x9fb5('0x11')]);}logger['error'](_0x9fb5('0xb'),_0x3a3c3e,_0x4d5ace[_0x9fb5('0xf')]['message']);return _0x374704(_0x4d5ace[_0x9fb5('0xf')][_0x9fb5('0x11')]);}else{logger[_0x9fb5('0xa')](_0x9fb5('0xb'),_0x3a3c3e,_0x9fb5('0xc'));_0x374704(_0x4d5ace[_0x9fb5('0x12')][_0x9fb5('0x11')]);}})[_0x9fb5('0x13')](function(_0x4884f1){logger[_0x9fb5('0xf')](_0x9fb5('0xb'),_0x3a3c3e,_0x4884f1);_0x405d07(_0x4884f1);});});}
\ No newline at end of file
+var _0xcb47=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x5c9865,_0x1a299a){var _0x54c22b=function(_0x538537){while(--_0x538537){_0x5c9865['push'](_0x5c9865['shift']());}};_0x54c22b(++_0x1a299a);}(_0xcb47,0x1a4));var _0x7cb4=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xcb47[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0x7cb4('0x0'));var util=require(_0x7cb4('0x1'));var moment=require(_0x7cb4('0x2'));var BPromise=require(_0x7cb4('0x3'));var rs=require(_0x7cb4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7cb4('0x5'))['db'];var utils=require(_0x7cb4('0x6'));var logger=require(_0x7cb4('0x7'))('rpc');var config=require(_0x7cb4('0x8'));var jayson=require(_0x7cb4('0x9'));var client=jayson[_0x7cb4('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b316e,_0x3ee5a2,_0x4150cc){return new BPromise(function(_0x453112,_0x15e3a4){return client['request'](_0x2b316e,_0x4150cc)[_0x7cb4('0xb')](function(_0x13be04){logger[_0x7cb4('0xc')](_0x7cb4('0xd'),_0x3ee5a2,_0x7cb4('0xe'));logger[_0x7cb4('0xf')](_0x7cb4('0x10'),_0x3ee5a2,_0x7cb4('0xe'),JSON['stringify'](_0x13be04));if(_0x13be04[_0x7cb4('0x11')]){if(_0x13be04[_0x7cb4('0x11')]['code']===0x1f4){logger[_0x7cb4('0x11')](_0x7cb4('0xd'),_0x3ee5a2,_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);return _0x15e3a4(_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);}logger[_0x7cb4('0x11')](_0x7cb4('0xd'),_0x3ee5a2,_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);return _0x453112(_0x13be04[_0x7cb4('0x11')][_0x7cb4('0x12')]);}else{logger[_0x7cb4('0xc')]('CmCompany,\x20%s,\x20%s',_0x3ee5a2,'request\x20sent');_0x453112(_0x13be04[_0x7cb4('0x13')][_0x7cb4('0x12')]);}})[_0x7cb4('0x14')](function(_0x35f506){logger[_0x7cb4('0x11')](_0x7cb4('0xd'),_0x3ee5a2,_0x35f506);_0x15e3a4(_0x35f506);});});}
\ No newline at end of file
index bee7d9b..6129626 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd6=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','isAuthenticated','index','get','/describe','/:id','/:id/contacts','getContacts','create','post','addContacts','update','delete','destroy','exports','multer','path','express'];(function(_0x5549d8,_0x5d354b){var _0x5e4c6e=function(_0x1d51b5){while(--_0x1d51b5){_0x5549d8['push'](_0x5549d8['shift']());}};_0x5e4c6e(++_0x5d354b);}(_0x9fd6,0xfa));var _0x69fd=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x9fd6[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x69fd('0x0'));var util=require('util');var path=require(_0x69fd('0x1'));var timeout=require('connect-timeout');var express=require(_0x69fd('0x2'));var router=express[_0x69fd('0x3')]();var fs_extra=require(_0x69fd('0x4'));var auth=require(_0x69fd('0x5'));var interaction=require(_0x69fd('0x6'));var config=require(_0x69fd('0x7'));var controller=require(_0x69fd('0x8'));router['get']('/',auth[_0x69fd('0x9')](),controller[_0x69fd('0xa')]);router[_0x69fd('0xb')](_0x69fd('0xc'),auth[_0x69fd('0x9')](),controller['describe']);router['get'](_0x69fd('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x69fd('0xe'),auth[_0x69fd('0x9')](),controller[_0x69fd('0xf')]);router['post']('/',auth[_0x69fd('0x9')](),controller[_0x69fd('0x10')]);router[_0x69fd('0x11')](_0x69fd('0xe'),auth['isAuthenticated'](),controller[_0x69fd('0x12')]);router['put'](_0x69fd('0xd'),auth[_0x69fd('0x9')](),controller[_0x69fd('0x13')]);router[_0x69fd('0x14')](_0x69fd('0xd'),auth['isAuthenticated'](),controller[_0x69fd('0x15')]);module[_0x69fd('0x16')]=router;
\ No newline at end of file
+var _0xfb97=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','isAuthenticated','index','get','describe','/:id','show','/:id/contacts','getContacts','post','addContacts','put','destroy','multer','util'];(function(_0x577983,_0x4c80dc){var _0x5d4817=function(_0x19f58e){while(--_0x19f58e){_0x577983['push'](_0x577983['shift']());}};_0x5d4817(++_0x4c80dc);}(_0xfb97,0x16e));var _0x7fb9=function(_0x4b7f28,_0x27d23a){_0x4b7f28=_0x4b7f28-0x0;var _0xf5b553=_0xfb97[_0x4b7f28];return _0xf5b553;};'use strict';var multer=require(_0x7fb9('0x0'));var util=require(_0x7fb9('0x1'));var path=require(_0x7fb9('0x2'));var timeout=require(_0x7fb9('0x3'));var express=require(_0x7fb9('0x4'));var router=express[_0x7fb9('0x5')]();var fs_extra=require(_0x7fb9('0x6'));var auth=require(_0x7fb9('0x7'));var interaction=require(_0x7fb9('0x8'));var config=require(_0x7fb9('0x9'));var controller=require(_0x7fb9('0xa'));router['get']('/',auth[_0x7fb9('0xb')](),controller[_0x7fb9('0xc')]);router[_0x7fb9('0xd')]('/describe',auth[_0x7fb9('0xb')](),controller[_0x7fb9('0xe')]);router[_0x7fb9('0xd')](_0x7fb9('0xf'),auth['isAuthenticated'](),controller[_0x7fb9('0x10')]);router[_0x7fb9('0xd')](_0x7fb9('0x11'),auth[_0x7fb9('0xb')](),controller[_0x7fb9('0x12')]);router[_0x7fb9('0x13')]('/',auth[_0x7fb9('0xb')](),controller['create']);router[_0x7fb9('0x13')](_0x7fb9('0x11'),auth['isAuthenticated'](),controller[_0x7fb9('0x14')]);router[_0x7fb9('0x15')](_0x7fb9('0xf'),auth[_0x7fb9('0xb')](),controller['update']);router['delete'](_0x7fb9('0xf'),auth['isAuthenticated'](),controller[_0x7fb9('0x16')]);module['exports']=router;
\ No newline at end of file
index df93b16..0483671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34d7=['INTEGER','UNSIGNED','DATE','lodash','sequelize','exports','STRING','TEXT'];(function(_0x32cbe0,_0x403849){var _0x532da5=function(_0x30f0b4){while(--_0x30f0b4){_0x32cbe0['push'](_0x32cbe0['shift']());}};_0x532da5(++_0x403849);}(_0x34d7,0x14b));var _0x734d=function(_0x392368,_0x1e14a5){_0x392368=_0x392368-0x0;var _0x33efe7=_0x34d7[_0x392368];return _0x33efe7;};'use strict';var _=require(_0x734d('0x0'));var Sequelize=require(_0x734d('0x1'));module[_0x734d('0x2')]={'firstName':{'type':Sequelize[_0x734d('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x734d('0x3')]},'country':{'type':Sequelize[_0x734d('0x3')]},'dateOfBirth':{'type':Sequelize[_0x734d('0x3')]},'description':{'type':Sequelize[_0x734d('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x734d('0x3')]},'fax':{'type':Sequelize[_0x734d('0x3')]},'email':{'type':Sequelize[_0x734d('0x3')]},'url':{'type':Sequelize[_0x734d('0x3')]},'facebook':{'type':Sequelize[_0x734d('0x3')]},'fb_data':{'type':Sequelize[_0x734d('0x3')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize[_0x734d('0x3')]},'teams':{'type':Sequelize[_0x734d('0x3')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize[_0x734d('0x3')]},'wechat':{'type':Sequelize[_0x734d('0x3')]},'telegram':{'type':Sequelize[_0x734d('0x3')]},'UserId':{'type':Sequelize[_0x734d('0x5')]},'priority':{'type':Sequelize[_0x734d('0x5')](0x2)[_0x734d('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0x734d('0x7')],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xf33e=['exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','lodash'];(function(_0x327535,_0x2be9b2){var _0x4ac8b3=function(_0x1c079e){while(--_0x1c079e){_0x327535['push'](_0x327535['shift']());}};_0x4ac8b3(++_0x2be9b2);}(_0xf33e,0x92));var _0xef33=function(_0x427a00,_0x3c21c5){_0x427a00=_0x427a00-0x0;var _0x3f00e3=_0xf33e[_0x427a00];return _0x3f00e3;};'use strict';var _=require(_0xef33('0x0'));var Sequelize=require('sequelize');module[_0xef33('0x1')]={'firstName':{'type':Sequelize[_0xef33('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xef33('0x2')]},'street':{'type':Sequelize[_0xef33('0x2')]},'postalCode':{'type':Sequelize[_0xef33('0x2')]},'city':{'type':Sequelize[_0xef33('0x2')]},'country':{'type':Sequelize[_0xef33('0x2')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xef33('0x3')]},'phone':{'type':Sequelize[_0xef33('0x2')]},'mobile':{'type':Sequelize[_0xef33('0x2')]},'fax':{'type':Sequelize[_0xef33('0x2')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xef33('0x2')]},'facebook':{'type':Sequelize[_0xef33('0x2')]},'fb_data':{'type':Sequelize[_0xef33('0x2')]},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize[_0xef33('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0xef33('0x2')]},'telegram':{'type':Sequelize[_0xef33('0x2')]},'UserId':{'type':Sequelize[_0xef33('0x4')]},'priority':{'type':Sequelize[_0xef33('0x4')](0x2)[_0xef33('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xef33('0x6')],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index f7a6adc..8520dcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x150c=['OpenchannelInteraction','OpenchannelMessage','CmHopperHistory','VoiceCallReport','ChatQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappQueueReport','each','duplicates','$or','error','$and','omit','cf_%d','pickBy','format','table','id\x20=\x20?','phone','getTags','rawAttributes','intersection','options','setTags','ids','getHoppers','ContactId','includeAll','include','getHopperFinals','CmHopperFinal','getJscriptySessions','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','server/files/tmp','file','filename','chmodSync','child_process','fork','../../components/import/cm/csv','socket_timestamp','File\x20uploaded\x20correctly!','pid','createReadStream','path','parse','import','No\x20ListId\x20specified','binding','stringify','message','exit','error\x20child\x20process','getJourney','mail','sms','fax','voice','-createdAt','resolve','channel','includes','toLowerCase','range','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','source','destination','callerid','endtime','duration','note','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','createdAt','startCase','chat','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','customerPort','deviceModel','ratingMessage','ratingType','referer','openchannel','threadId','Interaction','findAndCountAll','all','flatten','reverse','slice','eml-format','rimraf','fast-json-patch','moment','bluebird','util','sox','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','socket.io-emitter','./cmContact.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','CmContact','describe','keys','length','startsWith','CmCustomField','findOne','cf_','query','filters','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','select','field','color','from','tools_tags','cm_contacts','cm_user_has_contacts','left_join','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','c.deletedAt\x20IS\x20NULL','expr','search','conditions','find','Tag','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','dateOfBirth','fieldType','datetime','DATE','type','text','start','filter','isNil','push','Contact','isEmpty','ListId','where','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','isArray','tag','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.fax\x20LIKE\x20?','isEmail','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','group','c.id','SELECT','clone','DESC','having','t.id\x20IN\x20?','user','getLists','c.ListId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.phone','c.email','c.ListId','c.createdAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','columnName','displayName','findAll','alias','custom','values','body','get','mergeWith','tags','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','FaxInteraction','FaxMessage'];(function(_0x548e64,_0x1cdd59){var _0x363435=function(_0x4f0f0f){while(--_0x4f0f0f){_0x548e64['push'](_0x548e64['shift']());}};_0x363435(++_0x1cdd59);}(_0x150c,0x73));var _0xc150=function(_0x371a1d,_0x3591f3){_0x371a1d=_0x371a1d-0x0;var _0x4ba340=_0x150c[_0x371a1d];return _0x4ba340;};'use strict';var emlformat=require(_0xc150('0x0'));var rimraf=require(_0xc150('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc150('0x2'));var rp=require('request-promise');var moment=require(_0xc150('0x3'));var BPromise=require(_0xc150('0x4'));var Mustache=require('mustache');var util=require(_0xc150('0x5'));var path=require('path');var sox=require(_0xc150('0x6'));var csv=require('to-csv');var ejs=require(_0xc150('0x7'));var fs=require('fs');var fs_extra=require(_0xc150('0x8'));var _=require('lodash');var squel=require(_0xc150('0x9'));var crypto=require('crypto');var jsforce=require(_0xc150('0xa'));var deskjs=require(_0xc150('0xb'));var toCsv=require('to-csv');var querystring=require(_0xc150('0xc'));var Papa=require('papaparse');var Redis=require(_0xc150('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xc150('0xe'));var as=require(_0xc150('0xf'));var hardwareService=require(_0xc150('0x10'));var logger=require(_0xc150('0x11'))('api');var utils=require(_0xc150('0x12'));var config=require(_0xc150('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xc150('0x14'))['db'];config['redis']=_[_0xc150('0x15')](config[_0xc150('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xc150('0x17'))(new Redis(config[_0xc150('0x16')]));require(_0xc150('0x18'))[_0xc150('0x19')](socket);function respondWithStatusCode(_0xb14b55,_0x5b1243){_0x5b1243=_0x5b1243||0xcc;return function(_0x1df1e0){if(_0x1df1e0){return _0xb14b55[_0xc150('0x1a')](_0x5b1243);}return _0xb14b55[_0xc150('0x1b')](_0x5b1243)[_0xc150('0x1c')]();};}function respondWithResult(_0xf41568,_0x30faa6){_0x30faa6=_0x30faa6||0xc8;return function(_0x38e806){if(_0x38e806){return _0xf41568[_0xc150('0x1b')](_0x30faa6)[_0xc150('0x1d')](_0x38e806);}};}function respondWithFilteredResult(_0x3754b,_0x3e4e6d){return function(_0x42f87f){if(_0x42f87f){var _0x40fc06=typeof _0x3e4e6d[_0xc150('0x1e')]===_0xc150('0x1f')&&typeof _0x3e4e6d['limit']===_0xc150('0x1f');var _0x48fefb=_0x42f87f['count'];var _0x552464=_0x40fc06?0x0:_0x3e4e6d[_0xc150('0x1e')];var _0x18765a=_0x40fc06?_0x42f87f[_0xc150('0x20')]:_0x3e4e6d[_0xc150('0x1e')]+_0x3e4e6d[_0xc150('0x21')];var _0x3f1c74;if(_0x18765a>=_0x48fefb){_0x18765a=_0x48fefb;_0x3f1c74=0xc8;}else{_0x3f1c74=0xce;}_0x3754b[_0xc150('0x1b')](_0x3f1c74);return _0x3754b[_0xc150('0x22')](_0xc150('0x23'),_0x552464+'-'+_0x18765a+'/'+_0x48fefb)[_0xc150('0x1d')](_0x42f87f);}return null;};}function patchUpdates(_0xf74170){return function(_0x194051){try{jsonpatch[_0xc150('0x24')](_0x194051,_0xf74170,!![]);}catch(_0x34d57e){return BPromise[_0xc150('0x25')](_0x34d57e);}return _0x194051[_0xc150('0x26')]();};}function saveUpdates(_0x152acd,_0xd02c9a){return function(_0x490873){if(_0x490873){return _0x490873[_0xc150('0x27')](_0x152acd)['then'](function(_0x1b9662){return _0x1b9662;});}return null;};}function removeEntity(_0x168ee5,_0xf62d4e){return function(_0x4ec8d6){if(_0x4ec8d6){return _0x4ec8d6[_0xc150('0x28')]()[_0xc150('0x29')](function(){_0x168ee5['status'](0xcc)[_0xc150('0x1c')]();});}};}function handleEntityNotFound(_0x35d35f,_0x40ad65){return function(_0x538f82){if(!_0x538f82){_0x35d35f[_0xc150('0x1a')](0x194);}return _0x538f82;};}function handleError(_0x2dc019,_0x430d21){_0x430d21=_0x430d21||0x1f4;return function(_0x1c5312){logger['error'](_0x1c5312[_0xc150('0x2a')]);if(_0x1c5312[_0xc150('0x2b')]){delete _0x1c5312[_0xc150('0x2b')];}_0x2dc019[_0xc150('0x1b')](_0x430d21)[_0xc150('0x2c')](_0x1c5312);};}exports[_0xc150('0x2d')]=function(_0x3eeb88,_0x4da58e){var _0x35603f={},_0x3e0487={},_0x27fa99={'count':0x0,'rows':[]};return db[_0xc150('0x2e')][_0xc150('0x2f')]()[_0xc150('0x29')](function(_0x94b260){var _0x2446b8=[];for(var _0x56cab5=0x0;_0x56cab5<Object[_0xc150('0x30')](_0x94b260)[_0xc150('0x31')];_0x56cab5++){var _0x298889=Object[_0xc150('0x30')](_0x94b260)[_0x56cab5];if(_[_0xc150('0x32')](_0x298889,'cf_')){_0x2446b8['push'](db[_0xc150('0x33')][_0xc150('0x34')]({'where':{'id':_['trimStart'](_0x298889,_0xc150('0x35'))},'raw':!![]}));}}return BPromise['all'](_0x2446b8)[_0xc150('0x29')](function(_0x576297){for(var _0x21eff4=0x0;_0x21eff4<_0x576297[_0xc150('0x31')];_0x21eff4++){if(_0x576297[_0x21eff4]){var _0x19ef93='cf_'+_0x576297[_0x21eff4]['id'];var _0x537ca4=_0x94b260[_0x19ef93];_0x537ca4['fieldType']=_0x576297[_0x21eff4]['type'];}}return _0x94b260;});})[_0xc150('0x29')](function(_0x228a7c){_0x3e0487['model']=_[_0xc150('0x30')](_0x228a7c);_0x3e0487['query']=_[_0xc150('0x30')](_0x3eeb88[_0xc150('0x36')]);_0x3e0487[_0xc150('0x37')]=_['intersection'](_0x3e0487[_0xc150('0x38')],_0x3e0487['query']);_0x35603f[_0xc150('0x39')]=_['intersection'](_0x3e0487[_0xc150('0x38')],qs[_0xc150('0x3a')](_0x3eeb88[_0xc150('0x36')][_0xc150('0x3a')]));_0x35603f[_0xc150('0x39')]=_0x35603f['attributes'][_0xc150('0x31')]?_0x35603f['attributes']:_0x3e0487['model'];if(!_0x3eeb88[_0xc150('0x36')][_0xc150('0x3b')](_0xc150('0x3c'))){_0x35603f['limit']=qs['limit'](_0x3eeb88[_0xc150('0x36')][_0xc150('0x21')]);_0x35603f[_0xc150('0x1e')]=qs[_0xc150('0x1e')](_0x3eeb88[_0xc150('0x36')][_0xc150('0x1e')]);}_0x35603f[_0xc150('0x3d')]=qs['sort'](_0x3eeb88[_0xc150('0x36')][_0xc150('0x3e')]);_0x35603f['where']=qs[_0xc150('0x37')](_[_0xc150('0x3f')](_0x3eeb88['query'],_0x3e0487[_0xc150('0x37')]),_0x228a7c);var _0x4d9be4=[];var _0x5cb9b1=squel[_0xc150('0x40')]()['field']('id')[_0xc150('0x41')](_0xc150('0x2b'))[_0xc150('0x41')](_0xc150('0x42'))[_0xc150('0x43')](_0xc150('0x44'));var _0x43c606=squel[_0xc150('0x40')]()[_0xc150('0x43')](_0xc150('0x45'),'c')['left_join'](_0xc150('0x46'),'uc','uc.CmContactId\x20=\x20c.id')[_0xc150('0x47')](_0xc150('0x48'),'ct',_0xc150('0x49'))[_0xc150('0x47')](_0xc150('0x44'),'t','t.id\x20=\x20ct.TagId')['where'](_0xc150('0x4a'));var _0x28d02d=squel[_0xc150('0x4b')]();var _0x8d67d7=[];var _0x568d29=squel[_0xc150('0x4b')]();var _0x198784;if(_0x3eeb88[_0xc150('0x36')][_0xc150('0x4c')]){_0x198784=as['parseSearch'](_0x3eeb88[_0xc150('0x36')]['search']);var _0x4ec89d=_0x198784['sqlOperator'];for(var _0x4ab6ed=0x0;_0x4ab6ed<_0x198784[_0xc150('0x4d')][_0xc150('0x31')];_0x4ab6ed++){var _0x593baf=_0x198784[_0xc150('0x4d')][_0x4ab6ed];var _0x332eff='c';var _0x6fa64f=_(_0x228a7c)[_0xc150('0x30')]()[_0xc150('0x4e')](function(_0x4fbf28){return _0x4fbf28===_0x593baf[_0xc150('0x41')];});if(_0x6fa64f)_0x6fa64f=_0x228a7c[_0x593baf['field']];if(!_0x6fa64f){if(_0x593baf['field']===_0xc150('0x4f')){var _0x313ba3=_0x593baf[_0xc150('0x50')][_0xc150('0x51')](',')[_0xc150('0x52')](function(_0x52b24c){return Number(_0x52b24c);});_0x313ba3[_0xc150('0x53')](function(_0x5f0a9d){_0x568d29['or'](_0xc150('0x54'),'%,'+_0x5f0a9d+',%');});_0x8d67d7=_[_0xc150('0x55')](_0x8d67d7,_0x313ba3);}else if(_0x593baf['field']===_0xc150('0x56')){_0x28d02d[_0xc150('0x57')]('uc.UserId\x20=\x20?',_0x593baf['value']);}}else{if(_0x593baf['field']===_0xc150('0x58')||_0x6fa64f[_0xc150('0x59')]===_0xc150('0x5a'))_0x593baf['castTo']=_0xc150('0x5b');var _0x28843b=as['buildExpression'](_0x332eff,_0x6fa64f[_0xc150('0x5c')],_0x593baf);_0x28d02d[_0x4ec89d](_0x28843b[_0xc150('0x5d')],_0x28843b['value'][_0xc150('0x5e')],_0x28843b['value']['end']);}}}else{var _0x141447=_(Object[_0xc150('0x30')](_0x3eeb88[_0xc150('0x36')]))[_0xc150('0x52')](function(_0x478215){return _0x228a7c[_0xc150('0x3b')](_0x478215)?_0x478215:undefined;})[_0xc150('0x5f')](function(_0x162372){return!_[_0xc150('0x60')](_0x162372);})[_0xc150('0x50')]();if(_0x3eeb88[_0xc150('0x36')]['Contact'])_0x141447[_0xc150('0x61')](_0xc150('0x62'));if(!_[_0xc150('0x63')](_0x141447)){_0x141447[_0xc150('0x53')](function(_0x438101){if(_0x438101===_0xc150('0x64')){_0x43c606[_0xc150('0x65')](_0xc150('0x66'),[][_0xc150('0x67')](_0x3eeb88[_0xc150('0x36')][_0x438101]));}else if(_0x438101===_0xc150('0x62')){var _0x5ed53c='%'+_0x3eeb88[_0xc150('0x36')][_0x438101]+'%';_0x43c606['where'](_0xc150('0x68'),_0x5ed53c);}else{_0x43c606[_0xc150('0x65')]('c.'+_0x438101+_0xc150('0x69'),_0x3eeb88['query'][_0x438101]);}});}if(_0x3eeb88[_0xc150('0x36')]['tag']){_0x8d67d7=_[_0xc150('0x6a')](_0x3eeb88[_0xc150('0x36')][_0xc150('0x6b')])?_0x3eeb88['query'][_0xc150('0x6b')]:new Array(_0x3eeb88[_0xc150('0x36')][_0xc150('0x6b')]);_0x8d67d7[_0xc150('0x53')](function(_0x306db6){_0x568d29['or'](_0xc150('0x54'),'%,'+_0x306db6+',%');});}if(_0x3eeb88[_0xc150('0x36')][_0xc150('0x5f')]){var _0x2214a3=_0x3eeb88['query'][_0xc150('0x5f')][_0xc150('0x6c')]('\x5c','\x5c\x5c')[_0xc150('0x6c')](/'/g,'\x27\x27');if(_0x2214a3[_0xc150('0x51')]('\x20')[_0xc150('0x31')]>0x1){_0x28d02d['or'](_0xc150('0x6d'),qs[_0xc150('0x6e')](_0x2214a3),null);}else{if(qs[_0xc150('0x6f')](_0x2214a3)){_0x28d02d['or'](_0xc150('0x70'),_0x2214a3+'%');_0x28d02d['or']('c.phone\x20LIKE\x20?',_0x2214a3+'%');_0x28d02d['or']('c.mobile\x20LIKE\x20?',_0x2214a3+'%');_0x28d02d['or'](_0xc150('0x71'),_0x2214a3+'%');}else if(qs[_0xc150('0x72')](_0x2214a3)){_0x28d02d['or']('c.email\x20LIKE\x20?',_0x2214a3+'%');}else{_0x28d02d['or'](_0xc150('0x73'),'%'+_0x2214a3+'%');_0x28d02d['or'](_0xc150('0x74'),'%'+_0x2214a3+'%');_0x28d02d['or'](_0xc150('0x75'),'%'+_0x2214a3+'%');}}}}_0x43c606['where'](_0x28d02d);_0x43c606[_0xc150('0x76')](_0xc150('0x77'));var _0x14d366={'type':db['Sequelize']['QueryTypes'][_0xc150('0x78')],'raw':!![]};var _0x41c7d0=_0x43c606[_0xc150('0x79')]()['field'](_0xc150('0x77'));if(_0x35603f[_0xc150('0x3d')]){_0x35603f[_0xc150('0x3d')][_0xc150('0x53')](function(_0x2595d5){_0x43c606[_0xc150('0x3d')]('c.'+_0x2595d5[0x0],_0x2595d5[0x1]===_0xc150('0x7a')?![]:!![]);});}if(!_[_0xc150('0x63')](_0x8d67d7)){_0x43c606[_0xc150('0x7b')](_0x568d29);_0x41c7d0[_0xc150('0x65')](_0xc150('0x7c'),_0x8d67d7);}BPromise['resolve']()[_0xc150('0x29')](function(){if(!_0x198784)return;if(_0x3eeb88['user']['role']!=='agent')return;if(!_['some'](_0x198784[_0xc150('0x4d')],['field','User'])){return _0x3eeb88[_0xc150('0x7d')][_0xc150('0x7e')]({'attributes':['id'],'raw':!![]})[_0xc150('0x29')](function(_0x19631c){if(_[_0xc150('0x63')](_0x19631c)){_0x41c7d0[_0xc150('0x65')](_0xc150('0x7f'));_0x43c606[_0xc150('0x65')](_0xc150('0x7f'));}else{_0x41c7d0[_0xc150('0x65')]('c.ListId\x20IN\x20?',_['map'](_0x19631c,'id'));_0x43c606[_0xc150('0x65')](_0xc150('0x66'),_['map'](_0x19631c,'id'));}});}})[_0xc150('0x29')](function(){if(_0x3eeb88['user'][_0xc150('0x80')]==='agent'&&!_0x198784&&!_0x3eeb88[_0xc150('0x36')]['ListId'])return[];return db[_0xc150('0x81')][_0xc150('0x36')](_0x41c7d0[_0xc150('0x82')](),_0x14d366);})['then'](function(_0x48007a){_0x27fa99[_0xc150('0x20')]=_0x48007a[_0xc150('0x31')];if(_0x27fa99['count']===0x0)return[];return db['sequelize']['query'](_0x5cb9b1[_0xc150('0x82')](),_0x14d366)[_0xc150('0x29')](function(_0x4900bd){_0x4d9be4=_[_0xc150('0x83')](_0x4900bd,'id');_0x14d366=_[_0xc150('0x84')](_0x14d366,{'model':db[_0xc150('0x2e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3eeb88[_0xc150('0x36')][_0xc150('0x3a')]){_0x35603f[_0xc150('0x39')]['forEach'](function(_0x1f0c1f){_0x43c606[_0xc150('0x41')]('c.'+_0x1f0c1f);});}else{_0x43c606['field']('c.id');_0x43c606['field'](_0xc150('0x85'));_0x43c606[_0xc150('0x41')](_0xc150('0x86'));_0x43c606[_0xc150('0x41')](_0xc150('0x87'));_0x43c606[_0xc150('0x41')]('c.mobile');_0x43c606['field']('c.fax');_0x43c606[_0xc150('0x41')](_0xc150('0x88'));_0x43c606[_0xc150('0x41')](_0xc150('0x89'));_0x43c606[_0xc150('0x41')](_0xc150('0x8a'));_0x43c606['field']('c.deletedAt');_0x43c606['field']('c.CompanyId');_0x43c606['field'](_0xc150('0x8b'),_0xc150('0x8c'));}if(_0x35603f[_0xc150('0x21')])_0x43c606[_0xc150('0x21')](_0x35603f[_0xc150('0x21')]);if(_0x35603f[_0xc150('0x1e')])_0x43c606[_0xc150('0x1e')](_0x35603f[_0xc150('0x1e')]);return db[_0xc150('0x81')][_0xc150('0x36')](_0x43c606['toString'](),_0x14d366);});})[_0xc150('0x29')](function(_0x212972){_0x212972[_0xc150('0x53')](function(_0x3c0d46){if(_0x3c0d46[_0xc150('0x8c')]){_0x3c0d46[_0xc150('0x8d')]=[];_0x3c0d46['TagIds'][_0xc150('0x51')](',')[_0xc150('0x53')](function(_0x3afc8d){_0x3c0d46['Tags'][_0xc150('0x61')](_0x4d9be4[_0x3afc8d]);});}delete _0x3c0d46['TagIds'];});_0x27fa99[_0xc150('0x8e')]=_0x212972;return _0x27fa99;})['then'](respondWithFilteredResult(_0x4da58e,_0x35603f));})[_0xc150('0x8f')](handleError(_0x4da58e,null));};exports[_0xc150('0x28')]=function(_0x1aaf07,_0x17eb64){return db[_0xc150('0x2e')][_0xc150('0x4e')]({'where':{'id':_0x1aaf07[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x17eb64,null))['then'](removeEntity(_0x17eb64,null))[_0xc150('0x8f')](handleError(_0x17eb64,null));};exports[_0xc150('0x2f')]=function(_0x2ae22a,_0x554000){return db['CmContact'][_0xc150('0x2f')]()[_0xc150('0x29')](function(_0x3d1b34){delete _0x3d1b34['tags'];for(var _0x5e1cd6=0x0;_0x5e1cd6<Object[_0xc150('0x30')](_0x3d1b34)[_0xc150('0x31')];_0x5e1cd6++){var _0x324b78=Object[_0xc150('0x30')](_0x3d1b34)[_0x5e1cd6];if(!_[_0xc150('0x32')](_0x324b78,_0xc150('0x35'))){_0x3d1b34[_0x324b78][_0xc150('0x91')]=_0x324b78;_0x3d1b34[_0x324b78][_0xc150('0x92')]=_0x324b78;}}return _0x3d1b34;})[_0xc150('0x29')](function(_0x420e4c){var _0x2aca21={'where':{'$or':[{'ListId':_0x2ae22a['query']['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField'][_0xc150('0x93')](_0x2aca21)[_0xc150('0x29')](function(_0x5b7954){for(var _0x3c720b=0x0;_0x3c720b<_0x5b7954[_0xc150('0x31')];_0x3c720b++){var _0xd4b93d=_0xc150('0x35')+_0x5b7954[_0x3c720b]['id'];_0x420e4c[_0xd4b93d][_0xc150('0x91')]=_0xd4b93d;_0x420e4c[_0xd4b93d][_0xc150('0x92')]=_0x5b7954[_0x3c720b][_0xc150('0x94')];_0x420e4c[_0xd4b93d][_0xc150('0x95')]={'type':_0x5b7954[_0x3c720b][_0xc150('0x5c')],'values':_0x5b7954[_0x3c720b][_0xc150('0x96')]};}Object[_0xc150('0x30')](_0x420e4c)[_0xc150('0x53')](function(_0x1a857f){if(!_0x420e4c[_0x1a857f]['hasOwnProperty'](_0xc150('0x91'))){delete _0x420e4c[_0x1a857f];}});return _0x420e4c;});})[_0xc150('0x29')](respondWithResult(_0x554000,null))['catch'](handleError(_0x554000,null));};exports[_0xc150('0x84')]=function(_0x5a3dca,_0x21cca9){var _0x35b1e8;var _0x4fbe45;var _0x54c61e;if(_0x5a3dca[_0xc150('0x97')]['id']){delete _0x5a3dca['body']['id'];}return db[_0xc150('0x2e')][_0xc150('0x93')]({'where':{'id':[_0x5a3dca['body']['to'],_0x5a3dca['body'][_0xc150('0x43')]]}})[_0xc150('0x29')](function(_0x3e240f){if(_0x3e240f){if(_0x3e240f[_0xc150('0x31')]!==0x2){return null;}_0x3e240f[0x0]=_0x3e240f[0x0][_0xc150('0x98')]({'plain':!![]});_0x3e240f[0x1]=_0x3e240f[0x1][_0xc150('0x98')]({'plain':!![]});delete _0x3e240f[0x0]['id'];delete _0x3e240f[0x1]['id'];return _[_0xc150('0x99')](_0x3e240f[0x0],_0x3e240f[0x1],function(_0x5682a3,_0x53a9e3){if(Array[_0xc150('0x6a')](_0x53a9e3)&&!_0x53a9e3[_0xc150('0x31')]){return _0x5682a3;}else if(!_0x53a9e3){return _0x5682a3;}});}})['then'](handleEntityNotFound(_0x21cca9,null))[_0xc150('0x29')](function(_0x2f987d){if(_0x2f987d){if(_0x2f987d[_0xc150('0x9a')]&&_[_0xc150('0x6a')](_0x2f987d[_0xc150('0x9a')])){_0x2f987d[_0xc150('0x9a')]=_0x2f987d['tags'][_0xc150('0x9b')]();}logger[_0xc150('0x9c')](_0xc150('0x9d'),_0x5a3dca[_0xc150('0x97')]['to'],_0x5a3dca[_0xc150('0x97')][_0xc150('0x43')]);return db[_0xc150('0x9e')]['destroy']({'where':{'ContactId':[_0x5a3dca[_0xc150('0x97')]['to'],_0x5a3dca[_0xc150('0x97')][_0xc150('0x43')]]}})['then'](function(_0x4dd097){logger[_0xc150('0x9c')](_0xc150('0x9f'),_0x4dd097);return db['CmHopperBlack'][_0xc150('0x28')]({'where':{'ContactId':[_0x5a3dca[_0xc150('0x97')]['to'],_0x5a3dca[_0xc150('0x97')]['from']]}})['then'](function(_0x50219b){logger['info'](_0xc150('0xa0'),_0x50219b);return db[_0xc150('0x2e')][_0xc150('0xa1')](_0x2f987d);});});}})['then'](function(_0x5489f9){if(_0x5489f9){_0x35b1e8=_0x5489f9;_0x4fbe45={'ContactId':_0x35b1e8['id']};_0x54c61e={'where':{'ContactId':[_0x5a3dca[_0xc150('0x97')]['to'],_0x5a3dca[_0xc150('0x97')][_0xc150('0x43')]]}};return db['ChatInteraction'][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa2')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa3')]['update'](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa4')]['update'](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa5')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})['then'](function(){if(_0x35b1e8){return db[_0xc150('0xa4')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})['then'](function(){if(_0x35b1e8){return db[_0xc150('0xa5')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa6')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})['then'](function(){if(_0x35b1e8){return db['SmsMessage'][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa7')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa8')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xa9')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})['then'](function(){if(_0x35b1e8){return db[_0xc150('0xaa')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db['CmHopperFinal'][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xab')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})['then'](function(){if(_0x35b1e8){return db['ReportAgentPreview'][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})['then'](function(){if(_0x35b1e8){return db[_0xc150('0xac')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xad')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db['FaxQueueReport'][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db['MailQueueReport']['update'](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xae')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xaf')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xb0')]['update'](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xb1')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db['WhatsappMessage']['update'](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0xb2')][_0xc150('0x27')](_0x4fbe45,_0x54c61e);}})[_0xc150('0x29')](function(){if(_0x35b1e8){return db[_0xc150('0x2e')][_0xc150('0x28')]({'where':{'id':[_0x5a3dca[_0xc150('0x97')]['to'],_0x5a3dca[_0xc150('0x97')][_0xc150('0x43')]]}});}})[_0xc150('0x29')](function(){if(_0x35b1e8){return _0x35b1e8;}})[_0xc150('0x29')](respondWithResult(_0x21cca9,null))[_0xc150('0x8f')](handleError(_0x21cca9,null));};exports['create']=function(_0x434087,_0x3f324c){return db['CmContact']['describe']()[_0xc150('0x29')](function(_0x5d7ee5){if(_0x434087[_0xc150('0x97')]['tags']&&_[_0xc150('0x6a')](_0x434087[_0xc150('0x97')][_0xc150('0x9a')])){if(_0x434087[_0xc150('0x97')][_0xc150('0x9a')][_0xc150('0x31')]){_0x434087[_0xc150('0x97')][_0xc150('0x9a')]=_0x434087['body'][_0xc150('0x9a')]['join'](';')+';';}else{_0x434087['body'][_0xc150('0x9a')]=null;}}else{_0x434087[_0xc150('0x97')]['tags']=null;}return db[_0xc150('0x2e')][_0xc150('0xa1')](_0x434087[_0xc150('0x97')],{'fields':_[_0xc150('0x30')](_0x5d7ee5),'raw':!![]});})[_0xc150('0x29')](respondWithResult(_0x3f324c,0xc9))[_0xc150('0x8f')](handleError(_0x3f324c,null));};exports['bulkCreate']=function(_0x21b890,_0x2729f8){var _0xaf1a29=[];var _0x39bca6=0x0;var _0x49b5fc=0x0;var _0x4d7b30=0x0;return db[_0xc150('0x2e')][_0xc150('0x2f')]()[_0xc150('0x29')](function(_0x59975c){return BPromise[_0xc150('0xb3')](_0x21b890['body'],function(_0x12cf39){var _0x501892={'where':{'$or':[]},'defaults':_0x12cf39,'fields':_[_0xc150('0x30')](_0x59975c),'raw':!![]};if(_0x12cf39[_0xc150('0xb4')]){for(var _0x3fd2f8=0x0;_0x3fd2f8<_0x12cf39['duplicates']['length'];_0x3fd2f8++){var _0x32cbe9={};_0x32cbe9[_0x12cf39[_0xc150('0xb4')][_0x3fd2f8]]=_0x12cf39[_0x12cf39[_0xc150('0xb4')][_0x3fd2f8]];_0x501892[_0xc150('0x65')][_0xc150('0xb5')][_0xc150('0x61')](_0x32cbe9);}_0x501892['where'][_0xc150('0x64')]=_0x12cf39['ListId'];}return db[_0xc150('0x2e')]['findOrCreate'](_0x501892)['spread'](function(_0x2e0239,_0x48e355){if(_0x48e355){_0x39bca6++;}else{_0x4d7b30++;}})['catch'](function(_0x3b56f3){console[_0xc150('0xb6')](_0x3b56f3);_0x49b5fc++;});});})[_0xc150('0x29')](function(_0x564a27){if(_0x564a27){return{'success':_0x39bca6,'failure':_0x49b5fc,'duplicates':_0x4d7b30};}})['then'](respondWithResult(_0x2729f8,0xc9))[_0xc150('0x8f')](handleError(_0x2729f8,null));};exports['show']=function(_0x2e5956,_0x156f53,_0x584395){var _0x577660;return db[_0xc150('0x2e')]['describe']()[_0xc150('0x29')](function(_0x18cdc4){return db[_0xc150('0x2e')][_0xc150('0x4e')]({'where':{'id':_0x2e5956[_0xc150('0x90')]['id']},'include':[{'model':db[_0xc150('0x4f')],'as':_0xc150('0x8d'),'attributes':['id',_0xc150('0x2b'),'color'],'required':_0x2e5956[_0xc150('0x36')][_0xc150('0x6b')]?!![]:![]}],'attributes':_[_0xc150('0x30')](_0x18cdc4)});})['then'](function(_0x3f07e2){_0x577660=_0x3f07e2[_0xc150('0x98')]({'plain':!![]});var _0x13dc9b={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3f07e2&&_0x3f07e2[_0xc150('0x64')]){if(_0x3f07e2[_0xc150('0x64')]){_0x13dc9b[_0xc150('0x65')][_0xc150('0xb7')][_0xc150('0x61')]({'ListId':{'$ne':_0x3f07e2[_0xc150('0x64')]}});}}return db['CmCustomField'][_0xc150('0x93')](_0x13dc9b);})[_0xc150('0x29')](function(_0x30ad8e){return _[_0xc150('0xb8')](_0x577660,_[_0xc150('0x52')](_0x30ad8e,function(_0x3d60a2){return util['format'](_0xc150('0xb9'),_0x3d60a2['id']);}));})[_0xc150('0x29')](handleEntityNotFound(_0x156f53,null))[_0xc150('0x29')](respondWithResult(_0x156f53,null))[_0xc150('0x8f')](handleError(_0x156f53,null));};exports[_0xc150('0x27')]=function(_0x563548,_0x2c2f86){var _0x39127f;if(_0x563548[_0xc150('0x97')]['id']){delete _0x563548[_0xc150('0x97')]['id'];}return db[_0xc150('0x2e')]['find']({'where':{'id':_0x563548[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x2c2f86,null))[_0xc150('0x29')](saveUpdates(_0x563548['body'],null))['then'](function(_0x50223f){_0x39127f=_0x50223f;var _0xe028b1={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x50223f&&_0x50223f[_0xc150('0x64')]){if(_0x50223f['ListId']){_0xe028b1['where'][_0xc150('0xb7')][_0xc150('0x61')]({'ListId':{'$ne':_0x50223f[_0xc150('0x64')]}});}}return db[_0xc150('0x33')][_0xc150('0x93')](_0xe028b1);})['then'](function(_0x5d821f){if(_0x5d821f){return _['omit'](_[_0xc150('0xba')](_0x563548['body'],function(_0x395e0d,_0x42f481){return _[_0xc150('0x32')](_0x42f481,_0xc150('0x35'));}),_[_0xc150('0x52')](_0x5d821f,function(_0x486b89){return util[_0xc150('0xbb')](_0xc150('0xb9'),_0x486b89['id']);}));}})[_0xc150('0x29')](function(_0x4e77c5){if(_0x4e77c5&&!_[_0xc150('0x63')](_0x4e77c5)){var _0x4acdfb=squel[_0xc150('0x27')]()[_0xc150('0xbc')](_0xc150('0x45'))['setFields'](_0x4e77c5)[_0xc150('0x65')](_0xc150('0xbd'),_0x563548['params']['id'])['toParam']();return db[_0xc150('0x81')]['query'](_0x4acdfb['text'],{'replacements':_0x4acdfb[_0xc150('0x96')]});}})[_0xc150('0x29')](function(){if(_0x563548[_0xc150('0x97')][_0xc150('0xbe')]&&_0x39127f){return db[_0xc150('0x9e')][_0xc150('0x27')]({'phone':_0x563548[_0xc150('0x97')][_0xc150('0xbe')]},{'where':{'ContactId':_0x39127f['id']}});}})['then'](function(){return _0x39127f;})[_0xc150('0x29')](respondWithResult(_0x2c2f86,null))[_0xc150('0x8f')](handleError(_0x2c2f86,null));};exports[_0xc150('0xbf')]=function(_0x266653,_0x2a2311,_0x312dcd){var _0x1d28e5={};var _0x44e86d={};var _0x181564;var _0x2d6733;return db[_0xc150('0x2e')][_0xc150('0x34')]({'where':{'id':_0x266653[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x2a2311,null))[_0xc150('0x29')](function(_0x3b1d6b){if(_0x3b1d6b){_0x181564=_0x3b1d6b;_0x44e86d[_0xc150('0x38')]=_[_0xc150('0x30')](db[_0xc150('0x4f')][_0xc150('0xc0')]);_0x44e86d[_0xc150('0x36')]=_[_0xc150('0x30')](_0x266653[_0xc150('0x36')]);_0x44e86d[_0xc150('0x37')]=_['intersection'](_0x44e86d['model'],_0x44e86d[_0xc150('0x36')]);_0x1d28e5[_0xc150('0x39')]=_[_0xc150('0xc1')](_0x44e86d[_0xc150('0x38')],qs[_0xc150('0x3a')](_0x266653[_0xc150('0x36')][_0xc150('0x3a')]));_0x1d28e5[_0xc150('0x39')]=_0x1d28e5[_0xc150('0x39')]['length']?_0x1d28e5[_0xc150('0x39')]:_0x44e86d[_0xc150('0x38')];_0x1d28e5[_0xc150('0x3d')]=qs[_0xc150('0x3e')](_0x266653[_0xc150('0x36')]['sort']);_0x1d28e5[_0xc150('0x65')]=qs[_0xc150('0x37')](_[_0xc150('0x3f')](_0x266653[_0xc150('0x36')],_0x44e86d[_0xc150('0x37')]));if(_0x266653[_0xc150('0x36')]['filter']){_0x1d28e5['where']=_['merge'](_0x1d28e5['where'],{'$or':_[_0xc150('0x52')](_0x1d28e5[_0xc150('0x39')],function(_0x535217){var _0x413db6={};_0x413db6[_0x535217]={'$like':'%'+_0x266653['query'][_0xc150('0x5f')]+'%'};return _0x413db6;})});}_0x1d28e5=_[_0xc150('0x84')]({},_0x1d28e5,_0x266653[_0xc150('0xc2')]);return _0x181564['getTags'](_0x1d28e5);}})['then'](function(_0x56d3f9){if(_0x56d3f9){_0x2d6733=_0x56d3f9['length'];if(!_0x266653[_0xc150('0x36')][_0xc150('0x3b')](_0xc150('0x3c'))){_0x1d28e5[_0xc150('0x21')]=qs[_0xc150('0x21')](_0x266653['query'][_0xc150('0x21')]);_0x1d28e5['offset']=qs[_0xc150('0x1e')](_0x266653[_0xc150('0x36')][_0xc150('0x1e')]);}return _0x181564[_0xc150('0xbf')](_0x1d28e5);}})[_0xc150('0x29')](function(_0x537a39){if(_0x537a39){return _0x537a39?{'count':_0x2d6733,'rows':_0x537a39}:null;}})['then'](respondWithResult(_0x2a2311,null))['catch'](handleError(_0x2a2311,null));};exports[_0xc150('0xc3')]=function(_0x588ea1,_0x532c5b,_0x5d97aa){if(_0x588ea1['body']['id']){delete _0x588ea1[_0xc150('0x97')]['id'];}return db['CmContact']['findOne']({'where':{'id':_0x588ea1[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x532c5b,null))[_0xc150('0x29')](function(_0x3fcd48){if(_0x3fcd48){return _0x3fcd48['setTags'](_0x588ea1[_0xc150('0x97')][_0xc150('0xc4')]||[]);}return null;})[_0xc150('0x29')](respondWithResult(_0x532c5b,null))[_0xc150('0x8f')](handleError(_0x532c5b,null));};exports[_0xc150('0xc5')]=function(_0x41841d,_0x3e0b59,_0x14a12e){var _0xf0f2b3={'raw':![],'where':{}};var _0x396287={};var _0x5090b7={'count':0x0,'rows':[]};return db[_0xc150('0x2e')]['findOne']({'where':{'id':_0x41841d[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x3e0b59,null))[_0xc150('0x29')](function(_0x49cdfd){if(_0x49cdfd){_0x396287['model']=_[_0xc150('0x30')](db[_0xc150('0x9e')][_0xc150('0xc0')]);_0x396287['query']=_[_0xc150('0x30')](_0x41841d[_0xc150('0x36')]);_0x396287['filters']=_[_0xc150('0xc1')](_0x396287['model'],_0x396287[_0xc150('0x36')]);_0xf0f2b3[_0xc150('0x39')]=_[_0xc150('0xc1')](_0x396287[_0xc150('0x38')],qs['fields'](_0x41841d[_0xc150('0x36')]['fields']));_0xf0f2b3[_0xc150('0x39')]=_0xf0f2b3[_0xc150('0x39')][_0xc150('0x31')]?_0xf0f2b3[_0xc150('0x39')]:_0x396287[_0xc150('0x38')];if(!_0x41841d['query'][_0xc150('0x3b')](_0xc150('0x3c'))){_0xf0f2b3[_0xc150('0x21')]=qs[_0xc150('0x21')](_0x41841d['query']['limit']);_0xf0f2b3[_0xc150('0x1e')]=qs[_0xc150('0x1e')](_0x41841d[_0xc150('0x36')][_0xc150('0x1e')]);}_0xf0f2b3[_0xc150('0x3d')]=qs[_0xc150('0x3e')](_0x41841d[_0xc150('0x36')][_0xc150('0x3e')]);_0xf0f2b3[_0xc150('0x65')]=qs[_0xc150('0x37')](_['pick'](_0x41841d[_0xc150('0x36')],_0x396287['filters']));_0xf0f2b3[_0xc150('0x65')][_0xc150('0xc6')]=_0x49cdfd['id'];if(_0x41841d[_0xc150('0x36')][_0xc150('0x5f')]){_0xf0f2b3[_0xc150('0x65')]=_[_0xc150('0x84')](_0xf0f2b3[_0xc150('0x65')],{'$or':_[_0xc150('0x52')](_0xf0f2b3[_0xc150('0x39')],function(_0x1f6519){var _0x37b726={};_0x37b726[_0x1f6519]={'$like':'%'+_0x41841d['query'][_0xc150('0x5f')]+'%'};return _0x37b726;})});}_0xf0f2b3=_[_0xc150('0x84')]({},_0xf0f2b3,_0x41841d[_0xc150('0xc2')]);return db[_0xc150('0x9e')][_0xc150('0x20')]({'where':_0xf0f2b3[_0xc150('0x65')]})[_0xc150('0x29')](function(_0x562032){_0x5090b7['count']=_0x562032;if(_0x41841d[_0xc150('0x36')][_0xc150('0xc7')]){_0xf0f2b3[_0xc150('0xc8')]=[{'all':!![]}];}return db[_0xc150('0x9e')][_0xc150('0x93')](_0xf0f2b3);})[_0xc150('0x29')](function(_0x1df4e4){_0x5090b7[_0xc150('0x8e')]=_0x1df4e4;return _0x5090b7;});}})[_0xc150('0x29')](respondWithFilteredResult(_0x3e0b59,_0xf0f2b3))[_0xc150('0x8f')](handleError(_0x3e0b59,null));};exports['getHopperHistories']=function(_0x577afc,_0x237e3c,_0x19d2c5){var _0x3928ef={'raw':!![],'where':{}};var _0x9bdc12={};var _0x1fb9af={'count':0x0,'rows':[]};return db[_0xc150('0x2e')][_0xc150('0x34')]({'where':{'id':_0x577afc[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x237e3c,null))[_0xc150('0x29')](function(_0x17330f){if(_0x17330f){_0x9bdc12[_0xc150('0x38')]=_[_0xc150('0x30')](db[_0xc150('0xab')]['rawAttributes']);_0x9bdc12[_0xc150('0x36')]=_[_0xc150('0x30')](_0x577afc['query']);_0x9bdc12[_0xc150('0x37')]=_['intersection'](_0x9bdc12['model'],_0x9bdc12[_0xc150('0x36')]);_0x3928ef[_0xc150('0x39')]=_[_0xc150('0xc1')](_0x9bdc12[_0xc150('0x38')],qs[_0xc150('0x3a')](_0x577afc[_0xc150('0x36')][_0xc150('0x3a')]));_0x3928ef[_0xc150('0x39')]=_0x3928ef[_0xc150('0x39')][_0xc150('0x31')]?_0x3928ef[_0xc150('0x39')]:_0x9bdc12['model'];if(!_0x577afc[_0xc150('0x36')]['hasOwnProperty'](_0xc150('0x3c'))){_0x3928ef['limit']=qs['limit'](_0x577afc[_0xc150('0x36')]['limit']);_0x3928ef[_0xc150('0x1e')]=qs[_0xc150('0x1e')](_0x577afc[_0xc150('0x36')][_0xc150('0x1e')]);}_0x3928ef['order']=qs[_0xc150('0x3e')](_0x577afc[_0xc150('0x36')]['sort']);_0x3928ef['where']=qs[_0xc150('0x37')](_['pick'](_0x577afc[_0xc150('0x36')],_0x9bdc12[_0xc150('0x37')]));_0x3928ef['where']['ContactId']=_0x17330f['id'];if(_0x577afc[_0xc150('0x36')][_0xc150('0x5f')]){_0x3928ef[_0xc150('0x65')]=_[_0xc150('0x84')](_0x3928ef[_0xc150('0x65')],{'$or':_['map'](_0x3928ef[_0xc150('0x39')],function(_0x5d4caf){var _0x35064c={};_0x35064c[_0x5d4caf]={'$like':'%'+_0x577afc[_0xc150('0x36')][_0xc150('0x5f')]+'%'};return _0x35064c;})});}_0x3928ef=_['merge']({},_0x3928ef,_0x577afc[_0xc150('0xc2')]);return db[_0xc150('0xab')]['count']({'where':_0x3928ef['where']})['then'](function(_0x3453ac){_0x1fb9af['count']=_0x3453ac;if(_0x577afc[_0xc150('0x36')][_0xc150('0xc7')]){_0x3928ef[_0xc150('0xc8')]=[{'all':!![]}];}return db[_0xc150('0xab')]['findAll'](_0x3928ef);})['then'](function(_0x1db0d6){_0x1fb9af['rows']=_0x1db0d6;return _0x1fb9af;});}})[_0xc150('0x29')](respondWithFilteredResult(_0x237e3c,_0x3928ef))[_0xc150('0x8f')](handleError(_0x237e3c,null));};exports[_0xc150('0xc9')]=function(_0x5b8cef,_0x10035c,_0x1e5b87){var _0x5d6cc8={'raw':!![],'where':{}};var _0x158ba6={};var _0x132e16={'count':0x0,'rows':[]};return db[_0xc150('0x2e')][_0xc150('0x34')]({'where':{'id':_0x5b8cef[_0xc150('0x90')]['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x10035c,null))[_0xc150('0x29')](function(_0x5b5865){if(_0x5b5865){_0x158ba6['model']=_[_0xc150('0x30')](db[_0xc150('0xca')][_0xc150('0xc0')]);_0x158ba6[_0xc150('0x36')]=_['keys'](_0x5b8cef[_0xc150('0x36')]);_0x158ba6[_0xc150('0x37')]=_['intersection'](_0x158ba6[_0xc150('0x38')],_0x158ba6[_0xc150('0x36')]);_0x5d6cc8['attributes']=_[_0xc150('0xc1')](_0x158ba6[_0xc150('0x38')],qs['fields'](_0x5b8cef[_0xc150('0x36')][_0xc150('0x3a')]));_0x5d6cc8[_0xc150('0x39')]=_0x5d6cc8[_0xc150('0x39')]['length']?_0x5d6cc8[_0xc150('0x39')]:_0x158ba6['model'];if(!_0x5b8cef['query'][_0xc150('0x3b')](_0xc150('0x3c'))){_0x5d6cc8['limit']=qs['limit'](_0x5b8cef['query'][_0xc150('0x21')]);_0x5d6cc8[_0xc150('0x1e')]=qs[_0xc150('0x1e')](_0x5b8cef['query'][_0xc150('0x1e')]);}_0x5d6cc8[_0xc150('0x3d')]=qs[_0xc150('0x3e')](_0x5b8cef['query'][_0xc150('0x3e')]);_0x5d6cc8[_0xc150('0x65')]=qs[_0xc150('0x37')](_[_0xc150('0x3f')](_0x5b8cef['query'],_0x158ba6[_0xc150('0x37')]));_0x5d6cc8[_0xc150('0x65')][_0xc150('0xc6')]=_0x5b5865['id'];if(_0x5b8cef['query'][_0xc150('0x5f')]){_0x5d6cc8[_0xc150('0x65')]=_[_0xc150('0x84')](_0x5d6cc8[_0xc150('0x65')],{'$or':_[_0xc150('0x52')](_0x5d6cc8['attributes'],function(_0x58b021){var _0x28423a={};_0x28423a[_0x58b021]={'$like':'%'+_0x5b8cef[_0xc150('0x36')][_0xc150('0x5f')]+'%'};return _0x28423a;})});}_0x5d6cc8=_[_0xc150('0x84')]({},_0x5d6cc8,_0x5b8cef[_0xc150('0xc2')]);return db[_0xc150('0xca')][_0xc150('0x20')]({'where':_0x5d6cc8['where']})[_0xc150('0x29')](function(_0x5b51a8){_0x132e16[_0xc150('0x20')]=_0x5b51a8;if(_0x5b8cef[_0xc150('0x36')][_0xc150('0xc7')]){_0x5d6cc8[_0xc150('0xc8')]=[{'all':!![]}];}return db[_0xc150('0xca')]['findAll'](_0x5d6cc8);})[_0xc150('0x29')](function(_0x2b4e54){_0x132e16[_0xc150('0x8e')]=_0x2b4e54;return _0x132e16;});}})[_0xc150('0x29')](respondWithFilteredResult(_0x10035c,_0x5d6cc8))[_0xc150('0x8f')](handleError(_0x10035c,null));};exports[_0xc150('0xcb')]=function(_0x40ba6c,_0x37433d,_0x38f3a1){var _0x47d360={'raw':!![],'where':{}};var _0xd7b7b6={};var _0x44e555={'count':0x0,'rows':[]};return db['CmContact']['findOne']({'where':{'id':_0x40ba6c['params']['id']}})[_0xc150('0x29')](handleEntityNotFound(_0x37433d,null))['then'](function(_0x13504f){if(_0x13504f){_0xd7b7b6[_0xc150('0x38')]=_[_0xc150('0x30')](db['JscriptySessionReport'][_0xc150('0xc0')]);_0xd7b7b6['query']=_[_0xc150('0x30')](_0x40ba6c['query']);_0xd7b7b6['filters']=_['intersection'](_0xd7b7b6[_0xc150('0x38')],_0xd7b7b6[_0xc150('0x36')]);_0x47d360[_0xc150('0x39')]=_[_0xc150('0xc1')](_0xd7b7b6[_0xc150('0x38')],qs[_0xc150('0x3a')](_0x40ba6c['query']['fields']));_0x47d360[_0xc150('0x39')]=_0x47d360[_0xc150('0x39')]['length']?_0x47d360[_0xc150('0x39')]:_0xd7b7b6[_0xc150('0x38')];if(!_0x40ba6c[_0xc150('0x36')][_0xc150('0x3b')](_0xc150('0x3c'))){_0x47d360[_0xc150('0x21')]=qs['limit'](_0x40ba6c['query']['limit']);_0x47d360[_0xc150('0x1e')]=qs[_0xc150('0x1e')](_0x40ba6c[_0xc150('0x36')][_0xc150('0x1e')]);}_0x47d360['order']=qs['sort'](_0x40ba6c[_0xc150('0x36')][_0xc150('0x3e')]);_0x47d360[_0xc150('0x65')]=qs[_0xc150('0x37')](_[_0xc150('0x3f')](_0x40ba6c['query'],_0xd7b7b6[_0xc150('0x37')]));_0x47d360[_0xc150('0x65')][_0xc150('0xc6')]=_0x13504f['id'];if(_0x40ba6c[_0xc150('0x36')][_0xc150('0x5f')]){_0x47d360['where']=_['merge'](_0x47d360['where'],{'$or':_[_0xc150('0x52')](_0x47d360[_0xc150('0x39')],function(_0x396183){var _0x3a17cb={};_0x3a17cb[_0x396183]={'$like':'%'+_0x40ba6c[_0xc150('0x36')][_0xc150('0x5f')]+'%'};return _0x3a17cb;})});}_0x47d360=_[_0xc150('0x84')]({},_0x47d360,_0x40ba6c[_0xc150('0xc2')]);return db[_0xc150('0xb0')]['count']({'where':_0x47d360[_0xc150('0x65')]})[_0xc150('0x29')](function(_0x4cf069){_0x44e555['count']=_0x4cf069;if(_0x40ba6c[_0xc150('0x36')][_0xc150('0xc7')]){_0x47d360[_0xc150('0xc8')]=[{'all':!![]}];}return db[_0xc150('0xb0')]['findAll'](_0x47d360);})[_0xc150('0x29')](function(_0x64750a){_0x44e555[_0xc150('0x8e')]=_0x64750a;return _0x44e555;});}})[_0xc150('0x29')](respondWithFilteredResult(_0x37433d,_0x47d360))[_0xc150('0x8f')](handleError(_0x37433d,null));};exports['uploadCsv']=function(_0x421106,_0x242dde,_0x48f56c){try{if(!_0x421106[_0xc150('0x97')]['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x421106[_0xc150('0x97')][_0xc150('0xcc')]){throw new Error(_0xc150('0xcd'));}if(!_0x421106[_0xc150('0x97')][_0xc150('0xce')]){throw new Error(_0xc150('0xcf'));}if(!_0x421106['body']['socket_timestamp']){throw new Error(_0xc150('0xd0'));}var _0xfb1b9b=_0x421106[_0xc150('0x97')]['binding_keys'][_0xc150('0x51')](',');var _0x25e754=_0x421106[_0xc150('0x97')][_0xc150('0xce')][_0xc150('0x51')](',');if(!_0xfb1b9b[_0xc150('0x31')]||!_0x25e754['length']||_0xfb1b9b['length']!==_0x25e754[_0xc150('0x31')]){throw new Error('Incorrect\x20binding\x20parameters\x20passed!');}_0x421106[_0xc150('0x97')]['fields']=_['zipObject'](_0xfb1b9b,_0x25e754);if(!_0x421106['body']['fields'][_0xc150('0xbe')]){throw new Error(_0xc150('0xd1'));}if(!_0x421106[_0xc150('0x97')][_0xc150('0x3a')][_0xc150('0xd2')]){throw new Error(_0xc150('0xd3'));}var _0x4e9d0b=path[_0xc150('0x9b')](config['root'],_0xc150('0xd4'),_0x421106[_0xc150('0xd5')][_0xc150('0xd6')]);fs[_0xc150('0xd7')](_0x4e9d0b,parseInt('0777',0x8));var _0x385860=require(_0xc150('0xd8'))[_0xc150('0xd9')](path[_0xc150('0x9b')](__dirname,_0xc150('0xda')),[_0x4e9d0b,_0x421106['body'][_0xc150('0xcc')],_0x421106[_0xc150('0x97')][_0xc150('0xce')],_0x421106[_0xc150('0x97')][_0xc150('0x64')],_0x421106[_0xc150('0x97')]['CompanyId'],_0x421106['body'][_0xc150('0xb4')],_0x421106['body'][_0xc150('0xdb')]]);return _0x242dde[_0xc150('0x1b')](0xc8)[_0xc150('0x1d')]({'message':_0xc150('0xdc'),'pid':_0x385860[_0xc150('0xdd')]});}catch(_0x2a7c5d){return _0x242dde[_0xc150('0x1b')](0x1f4)[_0xc150('0x2c')](_0x2a7c5d);}};exports['upload']=function(_0x2cadb6,_0x5b14fa,_0x4a7186){var _0x2644ae=fs[_0xc150('0xde')](_0x2cadb6['file'][_0xc150('0xdf')]);Papa[_0xc150('0xe0')](_0x2644ae,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x3a6e38){return _0x5b14fa['status'](0xc8)[_0xc150('0x1d')]({'file':_0x2cadb6[_0xc150('0xd5')],'fields':_0x3a6e38['meta']['fields']});}});};exports[_0xc150('0xe1')]=function(_0x5ac745,_0x4ebd20,_0x1a6753){return db[_0xc150('0x56')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})[_0xc150('0x29')](function(_0x21d3fe){var _0x2e6007=![];if(!_0x5ac745[_0xc150('0x97')][_0xc150('0x64')]){throw new Error(_0xc150('0xe2'));}if(!_0x5ac745['body'][_0xc150('0xe3')][_0xc150('0xbe')]){throw new Error(_0xc150('0xd1'));}if(!_0x5ac745[_0xc150('0x97')]['binding']['firstName']){throw new Error(_0xc150('0xd3'));}if(!_0x5ac745[_0xc150('0x97')][_0xc150('0xdb')]){throw new Error(_0xc150('0xd0'));}var _0x33bb17=require(_0xc150('0xd8'))[_0xc150('0xd9')](path[_0xc150('0x9b')](__dirname,'../../components/import/cm/csv2'),[_0x5ac745[_0xc150('0x90')]['id'],JSON[_0xc150('0xe4')](_0x5ac745[_0xc150('0x97')]),JSON['stringify'](_0x21d3fe)]);_0x33bb17['on'](_0xc150('0xe5'),function(_0x112eb6){_0x2e6007=!![];return _0x4ebd20[_0xc150('0x1b')](0xc8)[_0xc150('0x1d')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x33bb17[_0xc150('0xdd')]});});_0x33bb17['on'](_0xc150('0xe6'),function(_0x259c2d){if(_0x259c2d&&!_0x2e6007){return _0x4ebd20[_0xc150('0x1b')](0x1f4)[_0xc150('0x1d')]({'message':_0xc150('0xe7'),'pid':_0x33bb17['pid']});}});})[_0xc150('0x8f')](handleError(_0x4ebd20,null));};exports[_0xc150('0xe8')]=function(_0x32fcd8,_0x41c0f4){var _0x32919a=[_0xc150('0xe9'),'chat',_0xc150('0xea'),'openchannel',_0xc150('0xeb'),'whatsapp',_0xc150('0xec')];var _0x4352b2={'offset':0x0,'order':qs[_0xc150('0x3e')](_0xc150('0xed'))},_0x40882e={'count':0x0,'rows':[]};Promise[_0xc150('0xee')]()[_0xc150('0x29')](function(){if(_0x32fcd8[_0xc150('0x36')][_0xc150('0xef')]){if(!_[_0xc150('0xf0')](_0x32919a,_0x32fcd8['query']['channel'][_0xc150('0xf1')]())){throw new Error('Invalid\x20channel');}_0x32919a=[_0x32fcd8[_0xc150('0x36')][_0xc150('0xef')][_0xc150('0xf1')]()];}if(_0x32fcd8[_0xc150('0x36')]['range']){try{var _0x30505b=JSON['parse'](_0x32fcd8[_0xc150('0x36')][_0xc150('0xf2')]);if(!moment(_0x30505b[_0xc150('0x43')])['isValid']()){throw new Error(_0xc150('0xf3'));}if(!moment(_0x30505b['to'])[_0xc150('0xf4')]()){throw new Error(_0xc150('0xf5'));}}catch(_0x534825){throw new Error(_0xc150('0xf6'));}}if(!_0x32fcd8['query']['hasOwnProperty'](_0xc150('0x3c'))){_0x4352b2[_0xc150('0x21')]=qs[_0xc150('0x21')](_0x32fcd8[_0xc150('0x36')][_0xc150('0x21')]||0xa);_0x4352b2[_0xc150('0x1e')]=qs['offset'](_0x32fcd8['query']['offset']);}var _0x435311=_0x32919a[_0xc150('0x52')](function(_0x930d9c){if(_0x930d9c===_0xc150('0xec')){var _0x4e83ea={'attributes':['id',_0xc150('0xf7'),'type',_0xc150('0xf8'),_0xc150('0xf9'),_0xc150('0xfa'),'starttime',_0xc150('0xfb'),_0xc150('0xfc'),_0xc150('0xfd'),'createdAt',_0xc150('0xfe'),_0xc150('0xff'),_0xc150('0x100'),_0xc150('0x101')],'where':{'ContactId':_0x32fcd8[_0xc150('0x90')]['id']},'include':[{'model':db[_0xc150('0x56')],'as':_0xc150('0x56'),'attributes':['id','name',_0xc150('0x102'),_0xc150('0x94')]}],'order':[[_0xc150('0x103'),'DESC']]};if(_0x32fcd8[_0xc150('0x36')]['range']){_0x4e83ea[_0xc150('0x65')][_0xc150('0x103')]={'$gte':_0x30505b['from'],'$lte':_0x30505b['to']};}return db[_0xc150('0xac')]['findAndCountAll'](_0x4e83ea)['then'](function(_0x23883e){_0x40882e[_0xc150('0x20')]+=_0x23883e[_0xc150('0x20')];return _[_0xc150('0x52')](_0x23883e[_0xc150('0x8e')],function(_0x4224c7){var _0x47c88e=_0x4224c7['get']({'plain':!![]});_0x47c88e['channel']=_0x930d9c;if(_0x47c88e[_0xc150('0x56')]){_0x47c88e[_0xc150('0x56')]={'id':_0x47c88e['User']['id'],'name':_0x47c88e[_0xc150('0x56')][_0xc150('0x2b')],'fullname':_0x47c88e[_0xc150('0x56')]['fullname'],'alias':_0x47c88e[_0xc150('0x56')]['alias']};}return _0x47c88e;});});}else{var _0x1bd63c=_[_0xc150('0x104')](_0x930d9c)+(_0x930d9c===_0xc150('0x105')?'Website':_0xc150('0x106'));var _0x2874b3={'attributes':['id',_0xc150('0x107'),_0xc150('0x108'),_0xc150('0x103'),_0xc150('0xfd'),_0xc150('0x109'),_0xc150('0x10a'),_0xc150('0x10b'),_0xc150('0x101'),_0x1bd63c+'Id'],'where':{'ContactId':_0x32fcd8[_0xc150('0x90')]['id']},'include':[{'model':db[_0x1bd63c],'as':_0xc150('0x106'),'attributes':['id',_0xc150('0x2b'),'key']},{'model':db[_0xc150('0x56')],'as':_0xc150('0x10c'),'attributes':['id',_0xc150('0x2b'),_0xc150('0x102')]},{'model':db[_0xc150('0x4f')],'as':_0xc150('0x8d'),'attributes':['id',_0xc150('0x2b'),_0xc150('0x42')],'through':{'attributes':[]}}],'order':[['createdAt',_0xc150('0x7a')]]};if(_0x32fcd8[_0xc150('0x36')][_0xc150('0xf2')]){_0x2874b3[_0xc150('0x65')][_0xc150('0x103')]={'$gte':_0x30505b['from'],'$lte':_0x30505b['to']};}switch(_0x930d9c){case'chat':_0x2874b3[_0xc150('0x39')][_0xc150('0x61')](_0xc150('0x10d'),_0xc150('0x10e'),_0xc150('0x10f'),_0xc150('0x110'),'osName',_0xc150('0x111'),_0xc150('0x112'),'ratingValue',_0xc150('0x113'));break;case _0xc150('0xe9'):_0x2874b3[_0xc150('0x39')][_0xc150('0x61')]('subject','substatus');break;case _0xc150('0x114'):_0x2874b3[_0xc150('0x39')][_0xc150('0x61')]('externalUrl',_0xc150('0x115'));break;}return db[_[_0xc150('0x104')](_0x930d9c)+_0xc150('0x116')][_0xc150('0x117')](_0x2874b3)['then'](function(_0x159920){_0x40882e[_0xc150('0x20')]+=_0x159920[_0xc150('0x20')];return _['map'](_0x159920[_0xc150('0x8e')],function(_0x1b85ab){var _0x4a7079=_0x1b85ab[_0xc150('0x98')]({'plain':!![]});_0x4a7079[_0xc150('0xef')]=_0x930d9c;if(_0x4a7079[_0xc150('0x10c')]){_0x4a7079[_0xc150('0x10c')]={'id':_0x4a7079[_0xc150('0x10c')]['id'],'name':_0x4a7079[_0xc150('0x10c')][_0xc150('0x2b')],'fullname':_0x4a7079[_0xc150('0x10c')][_0xc150('0x102')]};}return _0x4a7079;});});}});return Promise[_0xc150('0x118')](_0x435311);})['then'](function(_0x46acd2){return _(_0x46acd2)[_0xc150('0x119')]()['sortBy'](_0xc150('0x103'))[_0xc150('0x11a')]()[_0xc150('0x50')]();})['then'](function(_0x55c60d){_0x40882e[_0xc150('0x8e')]=_0x4352b2[_0xc150('0x21')]?_0x55c60d[_0xc150('0x11b')](_0x4352b2[_0xc150('0x1e')],_0x4352b2[_0xc150('0x1e')]+_0x4352b2[_0xc150('0x21')]):_0x55c60d;return _0x40882e;})[_0xc150('0x29')](respondWithFilteredResult(_0x41c0f4,_0x4352b2))[_0xc150('0x8f')](handleError(_0x41c0f4,null));};
\ No newline at end of file
+var _0x1a5d=['MailMessage','SmsInteraction','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','FaxQueueReport','OpenchannelQueueReport','WhatsappMessage','WhatsappQueueReport','join','bulkCreate','each','duplicates','$or','findOrCreate','show','$and','format','cf_%d','omit','table','setFields','id\x20=\x20?','toParam','phone','rawAttributes','getTags','nolimit','setTags','ids','getHoppers','options','includeAll','include','rows','getHopperHistories','CmHopperHistory','ContactId','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','root','server/files/tmp','file','filename','chmodSync','child_process','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','upload','createReadStream','path','meta','import','binding','fork','stringify','start\x20child\x20process\x20correctly!','pid','error\x20child\x20process','getJourney','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','channel','includes','toLowerCase','Invalid\x20channel','range','parse','Invalid\x20date\x20for\x20range\x20from\x20filter','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','uniqueid','source','destination','callerid','starttime','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','findAndCountAll','Account','closed','closedAt','note','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingMessage','mail','substatus','externalUrl','threadId','startCase','Interaction','flatten','reverse','slice','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','json','offset','limit','undefined','count','Content-Range','save','then','end','sendStatus','error','stack','name','send','index','CmContact','describe','keys','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','select','field','color','from','cm_contacts','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','t.id\x20=\x20ct.TagId','expr','search','sqlOperator','conditions','find','Tag','value','split','map','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','type','text','start','filter','isNil','Contact','isEmpty','forEach','ListId','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','tag','isArray','replace','getFullTextValue','isNumeric','c.fax\x20LIKE\x20?','isEmail','c.lastName\x20LIKE\x20?','c.email\x20LIKE\x20?','group','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','resolve','role','agent','User','getLists','c.ListId\x20IS\x20NULL','sequelize','toString','keyBy','merge','c.lastName','c.phone','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','c.CompanyId','TagIds','Tags','catch','destroy','params','tags','columnName','displayName','alias','values','body','findAll','get','mergeWith','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','create','ChatMessage','update','ChatOfflineMessage','MailInteraction'];(function(_0x225074,_0x1abb16){var _0x3fb50c=function(_0xf22c61){while(--_0xf22c61){_0x225074['push'](_0x225074['shift']());}};_0x3fb50c(++_0x1abb16);}(_0x1a5d,0x7f));var _0xd1a5=function(_0x8fa676,_0xbcf1a3){_0x8fa676=_0x8fa676-0x0;var _0x51be63=_0x1a5d[_0x8fa676];return _0x51be63;};'use strict';var emlformat=require(_0xd1a5('0x0'));var rimraf=require(_0xd1a5('0x1'));var zipdir=require(_0xd1a5('0x2'));var jsonpatch=require(_0xd1a5('0x3'));var rp=require(_0xd1a5('0x4'));var moment=require(_0xd1a5('0x5'));var BPromise=require(_0xd1a5('0x6'));var Mustache=require(_0xd1a5('0x7'));var util=require(_0xd1a5('0x8'));var path=require('path');var sox=require(_0xd1a5('0x9'));var csv=require(_0xd1a5('0xa'));var ejs=require(_0xd1a5('0xb'));var fs=require('fs');var fs_extra=require(_0xd1a5('0xc'));var _=require(_0xd1a5('0xd'));var squel=require(_0xd1a5('0xe'));var crypto=require(_0xd1a5('0xf'));var jsforce=require(_0xd1a5('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xd1a5('0xa'));var querystring=require(_0xd1a5('0x11'));var Papa=require(_0xd1a5('0x12'));var Redis=require(_0xd1a5('0x13'));var authService=require(_0xd1a5('0x14'));var qs=require(_0xd1a5('0x15'));var as=require(_0xd1a5('0x16'));var hardwareService=require(_0xd1a5('0x17'));var logger=require('../../config/logger')(_0xd1a5('0x18'));var utils=require('../../config/utils');var config=require(_0xd1a5('0x19'));var licenseUtil=require(_0xd1a5('0x1a'));var db=require(_0xd1a5('0x1b'))['db'];config[_0xd1a5('0x1c')]=_[_0xd1a5('0x1d')](config[_0xd1a5('0x1c')],{'host':_0xd1a5('0x1e'),'port':0x18eb});var socket=require(_0xd1a5('0x1f'))(new Redis(config['redis']));require(_0xd1a5('0x20'))[_0xd1a5('0x21')](socket);function respondWithStatusCode(_0x276019,_0xec1d2a){_0xec1d2a=_0xec1d2a||0xcc;return function(_0x1e28c3){if(_0x1e28c3){return _0x276019['sendStatus'](_0xec1d2a);}return _0x276019[_0xd1a5('0x22')](_0xec1d2a)['end']();};}function respondWithResult(_0x395b87,_0x405643){_0x405643=_0x405643||0xc8;return function(_0x17caa6){if(_0x17caa6){return _0x395b87[_0xd1a5('0x22')](_0x405643)[_0xd1a5('0x23')](_0x17caa6);}};}function respondWithFilteredResult(_0x1536f5,_0x2f9509){return function(_0x53cc11){if(_0x53cc11){var _0x5be5dd=typeof _0x2f9509[_0xd1a5('0x24')]==='undefined'&&typeof _0x2f9509[_0xd1a5('0x25')]===_0xd1a5('0x26');var _0x557bcd=_0x53cc11['count'];var _0x4f9504=_0x5be5dd?0x0:_0x2f9509[_0xd1a5('0x24')];var _0x20df0f=_0x5be5dd?_0x53cc11[_0xd1a5('0x27')]:_0x2f9509[_0xd1a5('0x24')]+_0x2f9509[_0xd1a5('0x25')];var _0x2e997f;if(_0x20df0f>=_0x557bcd){_0x20df0f=_0x557bcd;_0x2e997f=0xc8;}else{_0x2e997f=0xce;}_0x1536f5['status'](_0x2e997f);return _0x1536f5['set'](_0xd1a5('0x28'),_0x4f9504+'-'+_0x20df0f+'/'+_0x557bcd)[_0xd1a5('0x23')](_0x53cc11);}return null;};}function patchUpdates(_0x4306e3){return function(_0x85eaa){try{jsonpatch['apply'](_0x85eaa,_0x4306e3,!![]);}catch(_0x2ad43f){return BPromise['reject'](_0x2ad43f);}return _0x85eaa[_0xd1a5('0x29')]();};}function saveUpdates(_0xdf8e68,_0x5c8c94){return function(_0x25f45e){if(_0x25f45e){return _0x25f45e['update'](_0xdf8e68)['then'](function(_0x31ce11){return _0x31ce11;});}return null;};}function removeEntity(_0x82b48b,_0x420fe5){return function(_0x3df357){if(_0x3df357){return _0x3df357['destroy']()[_0xd1a5('0x2a')](function(){_0x82b48b[_0xd1a5('0x22')](0xcc)[_0xd1a5('0x2b')]();});}};}function handleEntityNotFound(_0x8e6b36,_0x2d129f){return function(_0x4cefaf){if(!_0x4cefaf){_0x8e6b36[_0xd1a5('0x2c')](0x194);}return _0x4cefaf;};}function handleError(_0x1f2492,_0x1e59e6){_0x1e59e6=_0x1e59e6||0x1f4;return function(_0x2d6056){logger[_0xd1a5('0x2d')](_0x2d6056[_0xd1a5('0x2e')]);if(_0x2d6056[_0xd1a5('0x2f')]){delete _0x2d6056[_0xd1a5('0x2f')];}_0x1f2492[_0xd1a5('0x22')](_0x1e59e6)[_0xd1a5('0x30')](_0x2d6056);};}exports[_0xd1a5('0x31')]=function(_0x20d613,_0x24dfcd){var _0x40da1b={},_0x5a5d18={},_0x1dd368={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x33')]()[_0xd1a5('0x2a')](function(_0x197bff){var _0x55f85a=[];for(var _0x28cf48=0x0;_0x28cf48<Object[_0xd1a5('0x34')](_0x197bff)[_0xd1a5('0x35')];_0x28cf48++){var _0x42f74a=Object[_0xd1a5('0x34')](_0x197bff)[_0x28cf48];if(_[_0xd1a5('0x36')](_0x42f74a,_0xd1a5('0x37'))){_0x55f85a[_0xd1a5('0x38')](db[_0xd1a5('0x39')][_0xd1a5('0x3a')]({'where':{'id':_[_0xd1a5('0x3b')](_0x42f74a,_0xd1a5('0x37'))},'raw':!![]}));}}return BPromise[_0xd1a5('0x3c')](_0x55f85a)[_0xd1a5('0x2a')](function(_0x375c0b){for(var _0x2a2964=0x0;_0x2a2964<_0x375c0b[_0xd1a5('0x35')];_0x2a2964++){if(_0x375c0b[_0x2a2964]){var _0x4cfdd4=_0xd1a5('0x37')+_0x375c0b[_0x2a2964]['id'];var _0x3ab2f9=_0x197bff[_0x4cfdd4];_0x3ab2f9[_0xd1a5('0x3d')]=_0x375c0b[_0x2a2964]['type'];}}return _0x197bff;});})[_0xd1a5('0x2a')](function(_0x442526){_0x5a5d18[_0xd1a5('0x3e')]=_[_0xd1a5('0x34')](_0x442526);_0x5a5d18[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x20d613['query']);_0x5a5d18[_0xd1a5('0x40')]=_[_0xd1a5('0x41')](_0x5a5d18[_0xd1a5('0x3e')],_0x5a5d18[_0xd1a5('0x3f')]);_0x40da1b[_0xd1a5('0x42')]=_[_0xd1a5('0x41')](_0x5a5d18[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x40da1b[_0xd1a5('0x42')]=_0x40da1b['attributes'][_0xd1a5('0x35')]?_0x40da1b['attributes']:_0x5a5d18['model'];if(!_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x44')]('nolimit')){_0x40da1b[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x40da1b[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}_0x40da1b[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x20d613[_0xd1a5('0x3f')]['sort']);_0x40da1b[_0xd1a5('0x47')]=qs[_0xd1a5('0x40')](_[_0xd1a5('0x48')](_0x20d613['query'],_0x5a5d18[_0xd1a5('0x40')]),_0x442526);var _0x40e9de=[];var _0xe2ce91=squel[_0xd1a5('0x49')]()['field']('id')[_0xd1a5('0x4a')]('name')['field'](_0xd1a5('0x4b'))[_0xd1a5('0x4c')]('tools_tags');var _0x49e2c9=squel['select']()[_0xd1a5('0x4c')](_0xd1a5('0x4d'),'c')[_0xd1a5('0x4e')](_0xd1a5('0x4f'),'uc',_0xd1a5('0x50'))[_0xd1a5('0x4e')](_0xd1a5('0x51'),'ct',_0xd1a5('0x52'))['left_join']('tools_tags','t',_0xd1a5('0x53'))[_0xd1a5('0x47')]('c.deletedAt\x20IS\x20NULL');var _0x1bde5d=squel[_0xd1a5('0x54')]();var _0x36879d=[];var _0x14274b=squel[_0xd1a5('0x54')]();var _0x1ff742;if(_0x20d613['query']['search']){_0x1ff742=as['parseSearch'](_0x20d613['query'][_0xd1a5('0x55')]);var _0x8b7734=_0x1ff742[_0xd1a5('0x56')];for(var _0x546407=0x0;_0x546407<_0x1ff742[_0xd1a5('0x57')][_0xd1a5('0x35')];_0x546407++){var _0x56fd53=_0x1ff742[_0xd1a5('0x57')][_0x546407];var _0x4b4c77='c';var _0x5765fd=_(_0x442526)[_0xd1a5('0x34')]()[_0xd1a5('0x58')](function(_0x19f146){return _0x19f146===_0x56fd53[_0xd1a5('0x4a')];});if(_0x5765fd)_0x5765fd=_0x442526[_0x56fd53['field']];if(!_0x5765fd){if(_0x56fd53['field']===_0xd1a5('0x59')){var _0x2ae041=_0x56fd53[_0xd1a5('0x5a')][_0xd1a5('0x5b')](',')[_0xd1a5('0x5c')](function(_0x3a6f09){return Number(_0x3a6f09);});_0x2ae041['forEach'](function(_0x35ff93){_0x14274b['or'](_0xd1a5('0x5d'),'%,'+_0x35ff93+',%');});_0x36879d=_[_0xd1a5('0x5e')](_0x36879d,_0x2ae041);}else if(_0x56fd53[_0xd1a5('0x4a')]==='User'){_0x1bde5d[_0xd1a5('0x5f')](_0xd1a5('0x60'),_0x56fd53[_0xd1a5('0x5a')]);}}else{if(_0x56fd53[_0xd1a5('0x4a')]===_0xd1a5('0x61')||_0x5765fd[_0xd1a5('0x3d')]===_0xd1a5('0x62'))_0x56fd53[_0xd1a5('0x63')]=_0xd1a5('0x64');var _0x2ed119=as['buildExpression'](_0x4b4c77,_0x5765fd[_0xd1a5('0x65')],_0x56fd53);_0x1bde5d[_0x8b7734](_0x2ed119[_0xd1a5('0x66')],_0x2ed119['value'][_0xd1a5('0x67')],_0x2ed119[_0xd1a5('0x5a')][_0xd1a5('0x2b')]);}}}else{var _0x48490a=_(Object[_0xd1a5('0x34')](_0x20d613[_0xd1a5('0x3f')]))[_0xd1a5('0x5c')](function(_0x5457bb){return _0x442526[_0xd1a5('0x44')](_0x5457bb)?_0x5457bb:undefined;})[_0xd1a5('0x68')](function(_0x147caf){return!_[_0xd1a5('0x69')](_0x147caf);})[_0xd1a5('0x5a')]();if(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x6a')])_0x48490a['push']('Contact');if(!_[_0xd1a5('0x6b')](_0x48490a)){_0x48490a[_0xd1a5('0x6c')](function(_0x390b4d){if(_0x390b4d===_0xd1a5('0x6d')){_0x49e2c9[_0xd1a5('0x47')](_0xd1a5('0x6e'),[][_0xd1a5('0x6f')](_0x20d613['query'][_0x390b4d]));}else if(_0x390b4d===_0xd1a5('0x6a')){var _0x329ba1='%'+_0x20d613[_0xd1a5('0x3f')][_0x390b4d]+'%';_0x49e2c9[_0xd1a5('0x47')](_0xd1a5('0x70'),_0x329ba1);}else{_0x49e2c9[_0xd1a5('0x47')]('c.'+_0x390b4d+'\x20=\x20?',_0x20d613[_0xd1a5('0x3f')][_0x390b4d]);}});}if(_0x20d613['query'][_0xd1a5('0x71')]){_0x36879d=_[_0xd1a5('0x72')](_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x71')])?_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x71')]:new Array(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x71')]);_0x36879d[_0xd1a5('0x6c')](function(_0x4417b8){_0x14274b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x4417b8+',%');});}if(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x68')]){var _0x69b578=_0x20d613[_0xd1a5('0x3f')]['filter'][_0xd1a5('0x73')]('\x5c','\x5c\x5c')[_0xd1a5('0x73')](/'/g,'\x27\x27');if(_0x69b578[_0xd1a5('0x5b')]('\x20')[_0xd1a5('0x35')]>0x1){_0x1bde5d['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xd1a5('0x74')](_0x69b578),null);}else{if(qs[_0xd1a5('0x75')](_0x69b578)){_0x1bde5d['or']('c.id\x20LIKE\x20?',_0x69b578+'%');_0x1bde5d['or']('c.phone\x20LIKE\x20?',_0x69b578+'%');_0x1bde5d['or']('c.mobile\x20LIKE\x20?',_0x69b578+'%');_0x1bde5d['or'](_0xd1a5('0x76'),_0x69b578+'%');}else if(qs[_0xd1a5('0x77')](_0x69b578)){_0x1bde5d['or']('c.email\x20LIKE\x20?',_0x69b578+'%');}else{_0x1bde5d['or']('c.firstName\x20LIKE\x20?','%'+_0x69b578+'%');_0x1bde5d['or'](_0xd1a5('0x78'),'%'+_0x69b578+'%');_0x1bde5d['or'](_0xd1a5('0x79'),'%'+_0x69b578+'%');}}}}_0x49e2c9[_0xd1a5('0x47')](_0x1bde5d);_0x49e2c9[_0xd1a5('0x7a')](_0xd1a5('0x7b'));var _0x17f637={'type':db[_0xd1a5('0x7c')][_0xd1a5('0x7d')][_0xd1a5('0x7e')],'raw':!![]};var _0xdad0c3=_0x49e2c9[_0xd1a5('0x7f')]()[_0xd1a5('0x4a')](_0xd1a5('0x7b'));if(_0x40da1b[_0xd1a5('0x45')]){_0x40da1b[_0xd1a5('0x45')][_0xd1a5('0x6c')](function(_0x38d52a){_0x49e2c9['order']('c.'+_0x38d52a[0x0],_0x38d52a[0x1]===_0xd1a5('0x80')?![]:!![]);});}if(!_[_0xd1a5('0x6b')](_0x36879d)){_0x49e2c9['having'](_0x14274b);_0xdad0c3[_0xd1a5('0x47')]('t.id\x20IN\x20?',_0x36879d);}BPromise[_0xd1a5('0x81')]()[_0xd1a5('0x2a')](function(){if(!_0x1ff742)return;if(_0x20d613['user'][_0xd1a5('0x82')]!==_0xd1a5('0x83'))return;if(!_['some'](_0x1ff742[_0xd1a5('0x57')],['field',_0xd1a5('0x84')])){return _0x20d613['user'][_0xd1a5('0x85')]({'attributes':['id'],'raw':!![]})[_0xd1a5('0x2a')](function(_0x249234){if(_[_0xd1a5('0x6b')](_0x249234)){_0xdad0c3['where'](_0xd1a5('0x86'));_0x49e2c9['where'](_0xd1a5('0x86'));}else{_0xdad0c3[_0xd1a5('0x47')]('c.ListId\x20IN\x20?',_[_0xd1a5('0x5c')](_0x249234,'id'));_0x49e2c9[_0xd1a5('0x47')]('c.ListId\x20IN\x20?',_[_0xd1a5('0x5c')](_0x249234,'id'));}});}})[_0xd1a5('0x2a')](function(){if(_0x20d613['user']['role']===_0xd1a5('0x83')&&!_0x1ff742&&!_0x20d613[_0xd1a5('0x3f')]['ListId'])return[];return db[_0xd1a5('0x87')][_0xd1a5('0x3f')](_0xdad0c3[_0xd1a5('0x88')](),_0x17f637);})[_0xd1a5('0x2a')](function(_0x926826){_0x1dd368['count']=_0x926826[_0xd1a5('0x35')];if(_0x1dd368['count']===0x0)return[];return db[_0xd1a5('0x87')][_0xd1a5('0x3f')](_0xe2ce91['toString'](),_0x17f637)[_0xd1a5('0x2a')](function(_0x5cdd0e){_0x40e9de=_[_0xd1a5('0x89')](_0x5cdd0e,'id');_0x17f637=_[_0xd1a5('0x8a')](_0x17f637,{'model':db['CmContact'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x20d613[_0xd1a5('0x3f')][_0xd1a5('0x43')]){_0x40da1b[_0xd1a5('0x42')][_0xd1a5('0x6c')](function(_0xdcc4e9){_0x49e2c9['field']('c.'+_0xdcc4e9);});}else{_0x49e2c9['field'](_0xd1a5('0x7b'));_0x49e2c9[_0xd1a5('0x4a')]('c.firstName');_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x8b'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x8c'));_0x49e2c9[_0xd1a5('0x4a')]('c.mobile');_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x8d'));_0x49e2c9['field'](_0xd1a5('0x8e'));_0x49e2c9['field'](_0xd1a5('0x8f'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x90'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x91'));_0x49e2c9[_0xd1a5('0x4a')](_0xd1a5('0x92'));_0x49e2c9[_0xd1a5('0x4a')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x40da1b['limit'])_0x49e2c9[_0xd1a5('0x25')](_0x40da1b['limit']);if(_0x40da1b[_0xd1a5('0x24')])_0x49e2c9[_0xd1a5('0x24')](_0x40da1b['offset']);return db['sequelize'][_0xd1a5('0x3f')](_0x49e2c9['toString'](),_0x17f637);});})['then'](function(_0x128573){_0x128573[_0xd1a5('0x6c')](function(_0x1735a9){if(_0x1735a9[_0xd1a5('0x93')]){_0x1735a9[_0xd1a5('0x94')]=[];_0x1735a9[_0xd1a5('0x93')]['split'](',')[_0xd1a5('0x6c')](function(_0x464236){_0x1735a9[_0xd1a5('0x94')][_0xd1a5('0x38')](_0x40e9de[_0x464236]);});}delete _0x1735a9[_0xd1a5('0x93')];});_0x1dd368['rows']=_0x128573;return _0x1dd368;})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x24dfcd,_0x40da1b));})[_0xd1a5('0x95')](handleError(_0x24dfcd,null));};exports[_0xd1a5('0x96')]=function(_0x436cde,_0x1a9a0a){return db[_0xd1a5('0x32')][_0xd1a5('0x58')]({'where':{'id':_0x436cde[_0xd1a5('0x97')]['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x1a9a0a,null))[_0xd1a5('0x2a')](removeEntity(_0x1a9a0a,null))[_0xd1a5('0x95')](handleError(_0x1a9a0a,null));};exports[_0xd1a5('0x33')]=function(_0x2a1531,_0x55b834){return db[_0xd1a5('0x32')][_0xd1a5('0x33')]()[_0xd1a5('0x2a')](function(_0xa10967){delete _0xa10967[_0xd1a5('0x98')];for(var _0x5c6282=0x0;_0x5c6282<Object[_0xd1a5('0x34')](_0xa10967)[_0xd1a5('0x35')];_0x5c6282++){var _0x320256=Object['keys'](_0xa10967)[_0x5c6282];if(!_['startsWith'](_0x320256,_0xd1a5('0x37'))){_0xa10967[_0x320256][_0xd1a5('0x99')]=_0x320256;_0xa10967[_0x320256][_0xd1a5('0x9a')]=_0x320256;}}return _0xa10967;})[_0xd1a5('0x2a')](function(_0x44123e){var _0x11567f={'where':{'$or':[{'ListId':_0x2a1531[_0xd1a5('0x3f')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xd1a5('0x39')]['findAll'](_0x11567f)[_0xd1a5('0x2a')](function(_0xfe9713){for(var _0x2770a0=0x0;_0x2770a0<_0xfe9713['length'];_0x2770a0++){var _0x3acc06=_0xd1a5('0x37')+_0xfe9713[_0x2770a0]['id'];_0x44123e[_0x3acc06][_0xd1a5('0x99')]=_0x3acc06;_0x44123e[_0x3acc06]['displayName']=_0xfe9713[_0x2770a0][_0xd1a5('0x9b')];_0x44123e[_0x3acc06]['custom']={'type':_0xfe9713[_0x2770a0][_0xd1a5('0x65')],'values':_0xfe9713[_0x2770a0][_0xd1a5('0x9c')]};}Object[_0xd1a5('0x34')](_0x44123e)['forEach'](function(_0x3da768){if(!_0x44123e[_0x3da768][_0xd1a5('0x44')](_0xd1a5('0x99'))){delete _0x44123e[_0x3da768];}});return _0x44123e;});})[_0xd1a5('0x2a')](respondWithResult(_0x55b834,null))[_0xd1a5('0x95')](handleError(_0x55b834,null));};exports['merge']=function(_0xb05222,_0x79caad){var _0x4f3fa6;var _0x154a5b;var _0x2f72fb;if(_0xb05222[_0xd1a5('0x9d')]['id']){delete _0xb05222[_0xd1a5('0x9d')]['id'];}return db['CmContact'][_0xd1a5('0x9e')]({'where':{'id':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}})['then'](function(_0x5c61f7){if(_0x5c61f7){if(_0x5c61f7['length']!==0x2){return null;}_0x5c61f7[0x0]=_0x5c61f7[0x0]['get']({'plain':!![]});_0x5c61f7[0x1]=_0x5c61f7[0x1][_0xd1a5('0x9f')]({'plain':!![]});delete _0x5c61f7[0x0]['id'];delete _0x5c61f7[0x1]['id'];return _[_0xd1a5('0xa0')](_0x5c61f7[0x0],_0x5c61f7[0x1],function(_0x44da35,_0x2053e9){if(Array[_0xd1a5('0x72')](_0x2053e9)&&!_0x2053e9[_0xd1a5('0x35')]){return _0x44da35;}else if(!_0x2053e9){return _0x44da35;}});}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x79caad,null))[_0xd1a5('0x2a')](function(_0x11974d){if(_0x11974d){if(_0x11974d[_0xd1a5('0x98')]&&_['isArray'](_0x11974d['tags'])){_0x11974d[_0xd1a5('0x98')]=_0x11974d[_0xd1a5('0x98')]['join']();}logger[_0xd1a5('0xa1')](_0xd1a5('0xa2'),_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]);return db[_0xd1a5('0xa3')]['destroy']({'where':{'ContactId':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}})[_0xd1a5('0x2a')](function(_0x48b687){logger[_0xd1a5('0xa1')](_0xd1a5('0xa4'),_0x48b687);return db[_0xd1a5('0xa5')][_0xd1a5('0x96')]({'where':{'ContactId':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}})['then'](function(_0x236362){logger['info']('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x236362);return db[_0xd1a5('0x32')][_0xd1a5('0xa6')](_0x11974d);});});}})['then'](function(_0x374230){if(_0x374230){_0x4f3fa6=_0x374230;_0x154a5b={'ContactId':_0x4f3fa6['id']};_0x2f72fb={'where':{'ContactId':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222['body'][_0xd1a5('0x4c')]]}};return db['ChatInteraction']['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xa7')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xa9')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xaa')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xab')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db['MailInteraction']['update'](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xab')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xac')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xad')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['FaxInteraction']['update'](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xae')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xaf')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb0')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb1')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['CmHopperHistory'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb2')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb3')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb4')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb5')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['MailQueueReport'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb6')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db['SmsQueueReport']['update'](_0x154a5b,_0x2f72fb);}})['then'](function(){if(_0x4f3fa6){return db['JscriptySessionReport'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db['WhatsappInteraction'][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb7')][_0xd1a5('0xa8')](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0xb8')]['update'](_0x154a5b,_0x2f72fb);}})[_0xd1a5('0x2a')](function(){if(_0x4f3fa6){return db[_0xd1a5('0x32')][_0xd1a5('0x96')]({'where':{'id':[_0xb05222[_0xd1a5('0x9d')]['to'],_0xb05222[_0xd1a5('0x9d')][_0xd1a5('0x4c')]]}});}})['then'](function(){if(_0x4f3fa6){return _0x4f3fa6;}})[_0xd1a5('0x2a')](respondWithResult(_0x79caad,null))['catch'](handleError(_0x79caad,null));};exports['create']=function(_0x15762d,_0x591b6d){return db[_0xd1a5('0x32')]['describe']()[_0xd1a5('0x2a')](function(_0x388c5e){if(_0x15762d[_0xd1a5('0x9d')]['tags']&&_['isArray'](_0x15762d['body'][_0xd1a5('0x98')])){if(_0x15762d[_0xd1a5('0x9d')][_0xd1a5('0x98')][_0xd1a5('0x35')]){_0x15762d['body']['tags']=_0x15762d[_0xd1a5('0x9d')][_0xd1a5('0x98')][_0xd1a5('0xb9')](';')+';';}else{_0x15762d['body'][_0xd1a5('0x98')]=null;}}else{_0x15762d['body']['tags']=null;}return db[_0xd1a5('0x32')][_0xd1a5('0xa6')](_0x15762d['body'],{'fields':_[_0xd1a5('0x34')](_0x388c5e),'raw':!![]});})[_0xd1a5('0x2a')](respondWithResult(_0x591b6d,0xc9))[_0xd1a5('0x95')](handleError(_0x591b6d,null));};exports[_0xd1a5('0xba')]=function(_0x5f561d,_0x4f5b47){var _0xe17a9a=[];var _0x52c53f=0x0;var _0x149eef=0x0;var _0x5cdf3a=0x0;return db[_0xd1a5('0x32')][_0xd1a5('0x33')]()[_0xd1a5('0x2a')](function(_0x21cc42){return BPromise[_0xd1a5('0xbb')](_0x5f561d[_0xd1a5('0x9d')],function(_0x4bbce3){var _0x5f02fd={'where':{'$or':[]},'defaults':_0x4bbce3,'fields':_[_0xd1a5('0x34')](_0x21cc42),'raw':!![]};if(_0x4bbce3[_0xd1a5('0xbc')]){for(var _0x1828ba=0x0;_0x1828ba<_0x4bbce3[_0xd1a5('0xbc')]['length'];_0x1828ba++){var _0x32613d={};_0x32613d[_0x4bbce3[_0xd1a5('0xbc')][_0x1828ba]]=_0x4bbce3[_0x4bbce3[_0xd1a5('0xbc')][_0x1828ba]];_0x5f02fd[_0xd1a5('0x47')][_0xd1a5('0xbd')][_0xd1a5('0x38')](_0x32613d);}_0x5f02fd[_0xd1a5('0x47')][_0xd1a5('0x6d')]=_0x4bbce3[_0xd1a5('0x6d')];}return db[_0xd1a5('0x32')][_0xd1a5('0xbe')](_0x5f02fd)['spread'](function(_0x4773f0,_0x2a1e97){if(_0x2a1e97){_0x52c53f++;}else{_0x5cdf3a++;}})[_0xd1a5('0x95')](function(_0x637989){console[_0xd1a5('0x2d')](_0x637989);_0x149eef++;});});})[_0xd1a5('0x2a')](function(_0x2a3837){if(_0x2a3837){return{'success':_0x52c53f,'failure':_0x149eef,'duplicates':_0x5cdf3a};}})[_0xd1a5('0x2a')](respondWithResult(_0x4f5b47,0xc9))['catch'](handleError(_0x4f5b47,null));};exports[_0xd1a5('0xbf')]=function(_0x431537,_0x24d713,_0x51644d){var _0x45133d;return db[_0xd1a5('0x32')]['describe']()[_0xd1a5('0x2a')](function(_0x5884d8){return db[_0xd1a5('0x32')][_0xd1a5('0x58')]({'where':{'id':_0x431537[_0xd1a5('0x97')]['id']},'include':[{'model':db[_0xd1a5('0x59')],'as':_0xd1a5('0x94'),'attributes':['id',_0xd1a5('0x2f'),'color'],'required':_0x431537['query'][_0xd1a5('0x71')]?!![]:![]}],'attributes':_[_0xd1a5('0x34')](_0x5884d8)});})[_0xd1a5('0x2a')](function(_0x1c2da9){_0x45133d=_0x1c2da9[_0xd1a5('0x9f')]({'plain':!![]});var _0x2abcaa={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x1c2da9&&_0x1c2da9[_0xd1a5('0x6d')]){if(_0x1c2da9[_0xd1a5('0x6d')]){_0x2abcaa[_0xd1a5('0x47')][_0xd1a5('0xc0')][_0xd1a5('0x38')]({'ListId':{'$ne':_0x1c2da9[_0xd1a5('0x6d')]}});}}return db[_0xd1a5('0x39')][_0xd1a5('0x9e')](_0x2abcaa);})['then'](function(_0x2f7fdb){return _['omit'](_0x45133d,_[_0xd1a5('0x5c')](_0x2f7fdb,function(_0x58ad33){return util[_0xd1a5('0xc1')](_0xd1a5('0xc2'),_0x58ad33['id']);}));})[_0xd1a5('0x2a')](handleEntityNotFound(_0x24d713,null))[_0xd1a5('0x2a')](respondWithResult(_0x24d713,null))['catch'](handleError(_0x24d713,null));};exports[_0xd1a5('0xa8')]=function(_0x17faae,_0x4668f8){var _0x20a9d0;if(_0x17faae[_0xd1a5('0x9d')]['id']){delete _0x17faae[_0xd1a5('0x9d')]['id'];}return db[_0xd1a5('0x32')][_0xd1a5('0x58')]({'where':{'id':_0x17faae['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x4668f8,null))[_0xd1a5('0x2a')](saveUpdates(_0x17faae[_0xd1a5('0x9d')],null))['then'](function(_0xd11e72){_0x20a9d0=_0xd11e72;var _0x56ef79={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xd11e72&&_0xd11e72[_0xd1a5('0x6d')]){if(_0xd11e72[_0xd1a5('0x6d')]){_0x56ef79[_0xd1a5('0x47')][_0xd1a5('0xc0')][_0xd1a5('0x38')]({'ListId':{'$ne':_0xd11e72[_0xd1a5('0x6d')]}});}}return db['CmCustomField'][_0xd1a5('0x9e')](_0x56ef79);})[_0xd1a5('0x2a')](function(_0x4fccd9){if(_0x4fccd9){return _[_0xd1a5('0xc3')](_['pickBy'](_0x17faae[_0xd1a5('0x9d')],function(_0x1c02c4,_0x21c616){return _[_0xd1a5('0x36')](_0x21c616,_0xd1a5('0x37'));}),_[_0xd1a5('0x5c')](_0x4fccd9,function(_0x5bda87){return util[_0xd1a5('0xc1')]('cf_%d',_0x5bda87['id']);}));}})[_0xd1a5('0x2a')](function(_0x5e79fe){if(_0x5e79fe&&!_[_0xd1a5('0x6b')](_0x5e79fe)){var _0x584e9b=squel[_0xd1a5('0xa8')]()[_0xd1a5('0xc4')]('cm_contacts')[_0xd1a5('0xc5')](_0x5e79fe)[_0xd1a5('0x47')](_0xd1a5('0xc6'),_0x17faae[_0xd1a5('0x97')]['id'])[_0xd1a5('0xc7')]();return db['sequelize'][_0xd1a5('0x3f')](_0x584e9b[_0xd1a5('0x66')],{'replacements':_0x584e9b[_0xd1a5('0x9c')]});}})[_0xd1a5('0x2a')](function(){if(_0x17faae[_0xd1a5('0x9d')]['phone']&&_0x20a9d0){return db[_0xd1a5('0xa3')]['update']({'phone':_0x17faae[_0xd1a5('0x9d')][_0xd1a5('0xc8')]},{'where':{'ContactId':_0x20a9d0['id']}});}})[_0xd1a5('0x2a')](function(){return _0x20a9d0;})[_0xd1a5('0x2a')](respondWithResult(_0x4668f8,null))['catch'](handleError(_0x4668f8,null));};exports['getTags']=function(_0x41b213,_0x2d84ae,_0x263e50){var _0x56b433={};var _0x57ee7e={};var _0x1dde37;var _0x44e17a;return db[_0xd1a5('0x32')]['findOne']({'where':{'id':_0x41b213['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x2d84ae,null))[_0xd1a5('0x2a')](function(_0x2d7565){if(_0x2d7565){_0x1dde37=_0x2d7565;_0x57ee7e[_0xd1a5('0x3e')]=_[_0xd1a5('0x34')](db[_0xd1a5('0x59')][_0xd1a5('0xc9')]);_0x57ee7e[_0xd1a5('0x3f')]=_['keys'](_0x41b213[_0xd1a5('0x3f')]);_0x57ee7e[_0xd1a5('0x40')]=_['intersection'](_0x57ee7e[_0xd1a5('0x3e')],_0x57ee7e[_0xd1a5('0x3f')]);_0x56b433[_0xd1a5('0x42')]=_['intersection'](_0x57ee7e[_0xd1a5('0x3e')],qs['fields'](_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x56b433[_0xd1a5('0x42')]=_0x56b433['attributes'][_0xd1a5('0x35')]?_0x56b433[_0xd1a5('0x42')]:_0x57ee7e[_0xd1a5('0x3e')];_0x56b433[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x41b213['query'][_0xd1a5('0x46')]);_0x56b433['where']=qs[_0xd1a5('0x40')](_[_0xd1a5('0x48')](_0x41b213[_0xd1a5('0x3f')],_0x57ee7e[_0xd1a5('0x40')]));if(_0x41b213[_0xd1a5('0x3f')]['filter']){_0x56b433[_0xd1a5('0x47')]=_['merge'](_0x56b433[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x56b433[_0xd1a5('0x42')],function(_0x517d34){var _0x806f03={};_0x806f03[_0x517d34]={'$like':'%'+_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x806f03;})});}_0x56b433=_[_0xd1a5('0x8a')]({},_0x56b433,_0x41b213['options']);return _0x1dde37[_0xd1a5('0xca')](_0x56b433);}})[_0xd1a5('0x2a')](function(_0x4e2716){if(_0x4e2716){_0x44e17a=_0x4e2716[_0xd1a5('0x35')];if(!_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x44')](_0xd1a5('0xcb'))){_0x56b433[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x56b433[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x41b213[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}return _0x1dde37[_0xd1a5('0xca')](_0x56b433);}})['then'](function(_0x4cfaa6){if(_0x4cfaa6){return _0x4cfaa6?{'count':_0x44e17a,'rows':_0x4cfaa6}:null;}})[_0xd1a5('0x2a')](respondWithResult(_0x2d84ae,null))[_0xd1a5('0x95')](handleError(_0x2d84ae,null));};exports['setTags']=function(_0x232e36,_0x60b449,_0x90ac02){if(_0x232e36['body']['id']){delete _0x232e36[_0xd1a5('0x9d')]['id'];}return db['CmContact'][_0xd1a5('0x3a')]({'where':{'id':_0x232e36[_0xd1a5('0x97')]['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x60b449,null))[_0xd1a5('0x2a')](function(_0x405d8a){if(_0x405d8a){return _0x405d8a[_0xd1a5('0xcc')](_0x232e36[_0xd1a5('0x9d')][_0xd1a5('0xcd')]||[]);}return null;})[_0xd1a5('0x2a')](respondWithResult(_0x60b449,null))['catch'](handleError(_0x60b449,null));};exports[_0xd1a5('0xce')]=function(_0x1a69f9,_0xb1457d,_0x1a8835){var _0x34b75b={'raw':![],'where':{}};var _0x4c437a={};var _0x595d3d={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x1a69f9['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0xb1457d,null))[_0xd1a5('0x2a')](function(_0x37b962){if(_0x37b962){_0x4c437a['model']=_[_0xd1a5('0x34')](db[_0xd1a5('0xa3')][_0xd1a5('0xc9')]);_0x4c437a[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x1a69f9['query']);_0x4c437a[_0xd1a5('0x40')]=_[_0xd1a5('0x41')](_0x4c437a[_0xd1a5('0x3e')],_0x4c437a[_0xd1a5('0x3f')]);_0x34b75b[_0xd1a5('0x42')]=_[_0xd1a5('0x41')](_0x4c437a[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x34b75b[_0xd1a5('0x42')]=_0x34b75b[_0xd1a5('0x42')]['length']?_0x34b75b[_0xd1a5('0x42')]:_0x4c437a[_0xd1a5('0x3e')];if(!_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x44')](_0xd1a5('0xcb'))){_0x34b75b[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x1a69f9['query']['limit']);_0x34b75b[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}_0x34b75b['order']=qs[_0xd1a5('0x46')](_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x46')]);_0x34b75b['where']=qs['filters'](_['pick'](_0x1a69f9[_0xd1a5('0x3f')],_0x4c437a[_0xd1a5('0x40')]));_0x34b75b[_0xd1a5('0x47')]['ContactId']=_0x37b962['id'];if(_0x1a69f9[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x34b75b['where']=_['merge'](_0x34b75b[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x34b75b[_0xd1a5('0x42')],function(_0x31d50b){var _0x85a83b={};_0x85a83b[_0x31d50b]={'$like':'%'+_0x1a69f9['query'][_0xd1a5('0x68')]+'%'};return _0x85a83b;})});}_0x34b75b=_[_0xd1a5('0x8a')]({},_0x34b75b,_0x1a69f9[_0xd1a5('0xcf')]);return db[_0xd1a5('0xa3')][_0xd1a5('0x27')]({'where':_0x34b75b[_0xd1a5('0x47')]})[_0xd1a5('0x2a')](function(_0x50da7c){_0x595d3d['count']=_0x50da7c;if(_0x1a69f9['query'][_0xd1a5('0xd0')]){_0x34b75b[_0xd1a5('0xd1')]=[{'all':!![]}];}return db[_0xd1a5('0xa3')][_0xd1a5('0x9e')](_0x34b75b);})[_0xd1a5('0x2a')](function(_0x1c92bf){_0x595d3d[_0xd1a5('0xd2')]=_0x1c92bf;return _0x595d3d;});}})['then'](respondWithFilteredResult(_0xb1457d,_0x34b75b))[_0xd1a5('0x95')](handleError(_0xb1457d,null));};exports[_0xd1a5('0xd3')]=function(_0x4ef29f,_0x53bc3c,_0x2af149){var _0x8caede={'raw':!![],'where':{}};var _0x3fba7a={};var _0x2029ac={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x4ef29f['params']['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x53bc3c,null))['then'](function(_0x126189){if(_0x126189){_0x3fba7a[_0xd1a5('0x3e')]=_['keys'](db[_0xd1a5('0xd4')]['rawAttributes']);_0x3fba7a[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x4ef29f['query']);_0x3fba7a[_0xd1a5('0x40')]=_[_0xd1a5('0x41')](_0x3fba7a['model'],_0x3fba7a[_0xd1a5('0x3f')]);_0x8caede['attributes']=_[_0xd1a5('0x41')](_0x3fba7a[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x4ef29f['query'][_0xd1a5('0x43')]));_0x8caede['attributes']=_0x8caede[_0xd1a5('0x42')]['length']?_0x8caede[_0xd1a5('0x42')]:_0x3fba7a[_0xd1a5('0x3e')];if(!_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x44')](_0xd1a5('0xcb'))){_0x8caede['limit']=qs[_0xd1a5('0x25')](_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x8caede[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x4ef29f[_0xd1a5('0x3f')]['offset']);}_0x8caede[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x46')]);_0x8caede[_0xd1a5('0x47')]=qs['filters'](_[_0xd1a5('0x48')](_0x4ef29f[_0xd1a5('0x3f')],_0x3fba7a['filters']));_0x8caede[_0xd1a5('0x47')][_0xd1a5('0xd5')]=_0x126189['id'];if(_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x8caede['where']=_[_0xd1a5('0x8a')](_0x8caede[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x8caede[_0xd1a5('0x42')],function(_0x5e46bf){var _0x3acbc7={};_0x3acbc7[_0x5e46bf]={'$like':'%'+_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x3acbc7;})});}_0x8caede=_['merge']({},_0x8caede,_0x4ef29f[_0xd1a5('0xcf')]);return db[_0xd1a5('0xd4')][_0xd1a5('0x27')]({'where':_0x8caede[_0xd1a5('0x47')]})[_0xd1a5('0x2a')](function(_0x18b13c){_0x2029ac['count']=_0x18b13c;if(_0x4ef29f[_0xd1a5('0x3f')][_0xd1a5('0xd0')]){_0x8caede[_0xd1a5('0xd1')]=[{'all':!![]}];}return db['CmHopperHistory']['findAll'](_0x8caede);})[_0xd1a5('0x2a')](function(_0x12857a){_0x2029ac['rows']=_0x12857a;return _0x2029ac;});}})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x53bc3c,_0x8caede))['catch'](handleError(_0x53bc3c,null));};exports['getHopperFinals']=function(_0x2f845a,_0x20adc5,_0x433478){var _0x536512={'raw':!![],'where':{}};var _0x50fc66={};var _0x2dedbd={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x2f845a[_0xd1a5('0x97')]['id']}})[_0xd1a5('0x2a')](handleEntityNotFound(_0x20adc5,null))[_0xd1a5('0x2a')](function(_0x5225b3){if(_0x5225b3){_0x50fc66[_0xd1a5('0x3e')]=_['keys'](db[_0xd1a5('0xb1')]['rawAttributes']);_0x50fc66[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x2f845a[_0xd1a5('0x3f')]);_0x50fc66['filters']=_[_0xd1a5('0x41')](_0x50fc66[_0xd1a5('0x3e')],_0x50fc66[_0xd1a5('0x3f')]);_0x536512[_0xd1a5('0x42')]=_['intersection'](_0x50fc66[_0xd1a5('0x3e')],qs[_0xd1a5('0x43')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x43')]));_0x536512['attributes']=_0x536512[_0xd1a5('0x42')][_0xd1a5('0x35')]?_0x536512[_0xd1a5('0x42')]:_0x50fc66[_0xd1a5('0x3e')];if(!_0x2f845a[_0xd1a5('0x3f')]['hasOwnProperty'](_0xd1a5('0xcb'))){_0x536512[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x536512[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}_0x536512[_0xd1a5('0x45')]=qs[_0xd1a5('0x46')](_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x46')]);_0x536512[_0xd1a5('0x47')]=qs[_0xd1a5('0x40')](_[_0xd1a5('0x48')](_0x2f845a[_0xd1a5('0x3f')],_0x50fc66[_0xd1a5('0x40')]));_0x536512[_0xd1a5('0x47')][_0xd1a5('0xd5')]=_0x5225b3['id'];if(_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x536512[_0xd1a5('0x47')]=_[_0xd1a5('0x8a')](_0x536512[_0xd1a5('0x47')],{'$or':_[_0xd1a5('0x5c')](_0x536512[_0xd1a5('0x42')],function(_0x2b85e7){var _0x504784={};_0x504784[_0x2b85e7]={'$like':'%'+_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x504784;})});}_0x536512=_['merge']({},_0x536512,_0x2f845a['options']);return db['CmHopperFinal']['count']({'where':_0x536512[_0xd1a5('0x47')]})['then'](function(_0x6ec516){_0x2dedbd[_0xd1a5('0x27')]=_0x6ec516;if(_0x2f845a[_0xd1a5('0x3f')][_0xd1a5('0xd0')]){_0x536512['include']=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x536512);})[_0xd1a5('0x2a')](function(_0x2d81bf){_0x2dedbd[_0xd1a5('0xd2')]=_0x2d81bf;return _0x2dedbd;});}})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x20adc5,_0x536512))[_0xd1a5('0x95')](handleError(_0x20adc5,null));};exports[_0xd1a5('0xd6')]=function(_0x3f8298,_0x696f09,_0x29923d){var _0x35a326={'raw':!![],'where':{}};var _0x414356={};var _0x814dd6={'count':0x0,'rows':[]};return db[_0xd1a5('0x32')][_0xd1a5('0x3a')]({'where':{'id':_0x3f8298[_0xd1a5('0x97')]['id']}})['then'](handleEntityNotFound(_0x696f09,null))['then'](function(_0x502aef){if(_0x502aef){_0x414356[_0xd1a5('0x3e')]=_[_0xd1a5('0x34')](db[_0xd1a5('0xd7')][_0xd1a5('0xc9')]);_0x414356[_0xd1a5('0x3f')]=_[_0xd1a5('0x34')](_0x3f8298[_0xd1a5('0x3f')]);_0x414356['filters']=_[_0xd1a5('0x41')](_0x414356[_0xd1a5('0x3e')],_0x414356['query']);_0x35a326[_0xd1a5('0x42')]=_[_0xd1a5('0x41')](_0x414356['model'],qs['fields'](_0x3f8298['query'][_0xd1a5('0x43')]));_0x35a326[_0xd1a5('0x42')]=_0x35a326[_0xd1a5('0x42')][_0xd1a5('0x35')]?_0x35a326[_0xd1a5('0x42')]:_0x414356[_0xd1a5('0x3e')];if(!_0x3f8298['query']['hasOwnProperty'](_0xd1a5('0xcb'))){_0x35a326[_0xd1a5('0x25')]=qs['limit'](_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0x25')]);_0x35a326[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x3f8298['query'][_0xd1a5('0x24')]);}_0x35a326['order']=qs[_0xd1a5('0x46')](_0x3f8298[_0xd1a5('0x3f')]['sort']);_0x35a326[_0xd1a5('0x47')]=qs[_0xd1a5('0x40')](_['pick'](_0x3f8298[_0xd1a5('0x3f')],_0x414356[_0xd1a5('0x40')]));_0x35a326['where'][_0xd1a5('0xd5')]=_0x502aef['id'];if(_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0x68')]){_0x35a326[_0xd1a5('0x47')]=_['merge'](_0x35a326['where'],{'$or':_[_0xd1a5('0x5c')](_0x35a326[_0xd1a5('0x42')],function(_0x59eebd){var _0x3cacaf={};_0x3cacaf[_0x59eebd]={'$like':'%'+_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0x68')]+'%'};return _0x3cacaf;})});}_0x35a326=_[_0xd1a5('0x8a')]({},_0x35a326,_0x3f8298[_0xd1a5('0xcf')]);return db[_0xd1a5('0xd7')][_0xd1a5('0x27')]({'where':_0x35a326['where']})['then'](function(_0x370074){_0x814dd6[_0xd1a5('0x27')]=_0x370074;if(_0x3f8298[_0xd1a5('0x3f')][_0xd1a5('0xd0')]){_0x35a326['include']=[{'all':!![]}];}return db[_0xd1a5('0xd7')][_0xd1a5('0x9e')](_0x35a326);})['then'](function(_0xd13f1c){_0x814dd6[_0xd1a5('0xd2')]=_0xd13f1c;return _0x814dd6;});}})[_0xd1a5('0x2a')](respondWithFilteredResult(_0x696f09,_0x35a326))[_0xd1a5('0x95')](handleError(_0x696f09,null));};exports[_0xd1a5('0xd8')]=function(_0x5c79ae,_0x1a64c4,_0x1de209){try{if(!_0x5c79ae['body'][_0xd1a5('0x6d')]){throw new Error(_0xd1a5('0xd9'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xda')]){throw new Error(_0xd1a5('0xdb'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xdc')]){throw new Error(_0xd1a5('0xdd'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xde')]){throw new Error(_0xd1a5('0xdf'));}var _0x1b76b9=_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xda')][_0xd1a5('0x5b')](',');var _0x27bd76=_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xdc')][_0xd1a5('0x5b')](',');if(!_0x1b76b9[_0xd1a5('0x35')]||!_0x27bd76[_0xd1a5('0x35')]||_0x1b76b9[_0xd1a5('0x35')]!==_0x27bd76[_0xd1a5('0x35')]){throw new Error(_0xd1a5('0xe0'));}_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0x43')]=_[_0xd1a5('0xe1')](_0x1b76b9,_0x27bd76);if(!_0x5c79ae[_0xd1a5('0x9d')]['fields'][_0xd1a5('0xc8')]){throw new Error(_0xd1a5('0xe2'));}if(!_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0x43')][_0xd1a5('0xe3')]){throw new Error('No\x20firstName\x20column\x20specified');}var _0x2fe9be=path[_0xd1a5('0xb9')](config[_0xd1a5('0xe4')],_0xd1a5('0xe5'),_0x5c79ae[_0xd1a5('0xe6')][_0xd1a5('0xe7')]);fs[_0xd1a5('0xe8')](_0x2fe9be,parseInt('0777',0x8));var _0x1ccd87=require(_0xd1a5('0xe9'))['fork'](path[_0xd1a5('0xb9')](__dirname,_0xd1a5('0xea')),[_0x2fe9be,_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xda')],_0x5c79ae['body'][_0xd1a5('0xdc')],_0x5c79ae['body'][_0xd1a5('0x6d')],_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xeb')],_0x5c79ae[_0xd1a5('0x9d')][_0xd1a5('0xbc')],_0x5c79ae[_0xd1a5('0x9d')]['socket_timestamp']]);return _0x1a64c4['status'](0xc8)[_0xd1a5('0x23')]({'message':_0xd1a5('0xec'),'pid':_0x1ccd87['pid']});}catch(_0x29d0d2){return _0x1a64c4[_0xd1a5('0x22')](0x1f4)['send'](_0x29d0d2);}};exports[_0xd1a5('0xed')]=function(_0x59a763,_0x34bbbf,_0x2da8e2){var _0x295510=fs[_0xd1a5('0xee')](_0x59a763['file'][_0xd1a5('0xef')]);Papa['parse'](_0x295510,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2ea24f){return _0x34bbbf[_0xd1a5('0x22')](0xc8)[_0xd1a5('0x23')]({'file':_0x59a763[_0xd1a5('0xe6')],'fields':_0x2ea24f[_0xd1a5('0xf0')]['fields']});}});};exports[_0xd1a5('0xf1')]=function(_0x27a0b3,_0x137426,_0x184360){return db[_0xd1a5('0x84')][_0xd1a5('0x9e')]({'raw':!![],'attributes':['id'],'where':{'role':_0xd1a5('0x83')}})[_0xd1a5('0x2a')](function(_0x1d5258){var _0x15c6da=![];if(!_0x27a0b3[_0xd1a5('0x9d')]['ListId']){throw new Error('No\x20ListId\x20specified');}if(!_0x27a0b3[_0xd1a5('0x9d')][_0xd1a5('0xf2')][_0xd1a5('0xc8')]){throw new Error(_0xd1a5('0xe2'));}if(!_0x27a0b3[_0xd1a5('0x9d')][_0xd1a5('0xf2')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x27a0b3[_0xd1a5('0x9d')]['socket_timestamp']){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x1126a6=require('child_process')[_0xd1a5('0xf3')](path[_0xd1a5('0xb9')](__dirname,'../../components/import/cm/csv2'),[_0x27a0b3['params']['id'],JSON[_0xd1a5('0xf4')](_0x27a0b3[_0xd1a5('0x9d')]),JSON['stringify'](_0x1d5258)]);_0x1126a6['on']('message',function(_0x30d64b){_0x15c6da=!![];return _0x137426[_0xd1a5('0x22')](0xc8)['json']({'message':_0xd1a5('0xf5'),'pid':_0x1126a6[_0xd1a5('0xf6')]});});_0x1126a6['on']('exit',function(_0x1c8836){if(_0x1c8836&&!_0x15c6da){return _0x137426[_0xd1a5('0x22')](0x1f4)[_0xd1a5('0x23')]({'message':_0xd1a5('0xf7'),'pid':_0x1126a6[_0xd1a5('0xf6')]});}});})[_0xd1a5('0x95')](handleError(_0x137426,null));};exports[_0xd1a5('0xf8')]=function(_0x1d5988,_0x69ddca){var _0x3fd8e8=['mail',_0xd1a5('0xf9'),_0xd1a5('0xfa'),_0xd1a5('0xfb'),_0xd1a5('0xfc'),_0xd1a5('0xfd'),_0xd1a5('0xfe')];var _0x42e9e6={'offset':0x0,'order':qs['sort'](_0xd1a5('0xff'))},_0xa02365={'count':0x0,'rows':[]};Promise[_0xd1a5('0x81')]()[_0xd1a5('0x2a')](function(){if(_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x100')]){if(!_[_0xd1a5('0x101')](_0x3fd8e8,_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x100')][_0xd1a5('0x102')]())){throw new Error(_0xd1a5('0x103'));}_0x3fd8e8=[_0x1d5988['query'][_0xd1a5('0x100')][_0xd1a5('0x102')]()];}if(_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x104')]){try{var _0x23df70=JSON[_0xd1a5('0x105')](_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x104')]);if(!moment(_0x23df70[_0xd1a5('0x4c')])['isValid']()){throw new Error(_0xd1a5('0x106'));}if(!moment(_0x23df70['to'])[_0xd1a5('0x107')]()){throw new Error(_0xd1a5('0x108'));}}catch(_0x1bb9da){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x44')]('nolimit')){_0x42e9e6[_0xd1a5('0x25')]=qs[_0xd1a5('0x25')](_0x1d5988['query']['limit']||0xa);_0x42e9e6[_0xd1a5('0x24')]=qs[_0xd1a5('0x24')](_0x1d5988[_0xd1a5('0x3f')][_0xd1a5('0x24')]);}var _0x1ee8ee=_0x3fd8e8[_0xd1a5('0x5c')](function(_0x42626d){if(_0x42626d===_0xd1a5('0xfe')){var _0x55fc0d={'attributes':['id',_0xd1a5('0x109'),_0xd1a5('0x65'),_0xd1a5('0x10a'),_0xd1a5('0x10b'),_0xd1a5('0x10c'),_0xd1a5('0x10d'),'endtime','duration','note',_0xd1a5('0x10e'),_0xd1a5('0x10f'),_0xd1a5('0x110'),_0xd1a5('0x111'),_0xd1a5('0x112')],'where':{'ContactId':_0x1d5988[_0xd1a5('0x97')]['id']},'include':[{'model':db[_0xd1a5('0x84')],'as':_0xd1a5('0x84'),'attributes':['id',_0xd1a5('0x2f'),_0xd1a5('0x113'),'alias']}],'order':[[_0xd1a5('0x10e'),'DESC']]};if(_0x1d5988['query']['range']){_0x55fc0d[_0xd1a5('0x47')][_0xd1a5('0x10e')]={'$gte':_0x23df70['from'],'$lte':_0x23df70['to']};}return db[_0xd1a5('0xb3')][_0xd1a5('0x114')](_0x55fc0d)[_0xd1a5('0x2a')](function(_0x11d1c1){_0xa02365[_0xd1a5('0x27')]+=_0x11d1c1[_0xd1a5('0x27')];return _[_0xd1a5('0x5c')](_0x11d1c1['rows'],function(_0x1d933a){var _0x2c0853=_0x1d933a['get']({'plain':!![]});_0x2c0853[_0xd1a5('0x100')]=_0x42626d;if(_0x2c0853[_0xd1a5('0x84')]){_0x2c0853['User']={'id':_0x2c0853[_0xd1a5('0x84')]['id'],'name':_0x2c0853[_0xd1a5('0x84')][_0xd1a5('0x2f')],'fullname':_0x2c0853['User']['fullname'],'alias':_0x2c0853['User'][_0xd1a5('0x9b')]};}return _0x2c0853;});});}else{var _0x1d0825=_['startCase'](_0x42626d)+(_0x42626d===_0xd1a5('0xf9')?'Website':_0xd1a5('0x115'));var _0x51e60d={'attributes':['id',_0xd1a5('0x116'),_0xd1a5('0x117'),_0xd1a5('0x10e'),_0xd1a5('0x118'),_0xd1a5('0x119'),_0xd1a5('0x11a'),_0xd1a5('0x11b'),'UserId',_0x1d0825+'Id'],'where':{'ContactId':_0x1d5988[_0xd1a5('0x97')]['id']},'include':[{'model':db[_0x1d0825],'as':_0xd1a5('0x115'),'attributes':['id',_0xd1a5('0x2f'),'key']},{'model':db[_0xd1a5('0x84')],'as':_0xd1a5('0x11c'),'attributes':['id',_0xd1a5('0x2f'),'fullname']},{'model':db[_0xd1a5('0x59')],'as':_0xd1a5('0x94'),'attributes':['id',_0xd1a5('0x2f'),_0xd1a5('0x4b')],'through':{'attributes':[]}}],'order':[[_0xd1a5('0x10e'),_0xd1a5('0x80')]]};if(_0x1d5988['query'][_0xd1a5('0x104')]){_0x51e60d[_0xd1a5('0x47')][_0xd1a5('0x10e')]={'$gte':_0x23df70[_0xd1a5('0x4c')],'$lte':_0x23df70['to']};}switch(_0x42626d){case _0xd1a5('0xf9'):_0x51e60d[_0xd1a5('0x42')]['push'](_0xd1a5('0x11d'),_0xd1a5('0x11e'),'customerPort','deviceModel',_0xd1a5('0x11f'),_0xd1a5('0x120'),'ratingType','ratingValue','referer');break;case _0xd1a5('0x121'):_0x51e60d[_0xd1a5('0x42')][_0xd1a5('0x38')]('subject',_0xd1a5('0x122'));break;case'openchannel':_0x51e60d[_0xd1a5('0x42')]['push'](_0xd1a5('0x123'),_0xd1a5('0x124'));break;}return db[_[_0xd1a5('0x125')](_0x42626d)+_0xd1a5('0x126')][_0xd1a5('0x114')](_0x51e60d)[_0xd1a5('0x2a')](function(_0x2d5110){_0xa02365[_0xd1a5('0x27')]+=_0x2d5110[_0xd1a5('0x27')];return _[_0xd1a5('0x5c')](_0x2d5110[_0xd1a5('0xd2')],function(_0x1a2f7c){var _0x292c0e=_0x1a2f7c[_0xd1a5('0x9f')]({'plain':!![]});_0x292c0e[_0xd1a5('0x100')]=_0x42626d;if(_0x292c0e[_0xd1a5('0x11c')]){_0x292c0e[_0xd1a5('0x11c')]={'id':_0x292c0e['Owner']['id'],'name':_0x292c0e['Owner'][_0xd1a5('0x2f')],'fullname':_0x292c0e[_0xd1a5('0x11c')]['fullname']};}return _0x292c0e;});});}});return Promise['all'](_0x1ee8ee);})[_0xd1a5('0x2a')](function(_0x4c5b78){return _(_0x4c5b78)[_0xd1a5('0x127')]()['sortBy'](_0xd1a5('0x10e'))[_0xd1a5('0x128')]()[_0xd1a5('0x5a')]();})[_0xd1a5('0x2a')](function(_0x18ee33){_0xa02365['rows']=_0x42e9e6[_0xd1a5('0x25')]?_0x18ee33[_0xd1a5('0x129')](_0x42e9e6[_0xd1a5('0x24')],_0x42e9e6[_0xd1a5('0x24')]+_0x42e9e6['limit']):_0x18ee33;return _0xa02365;})['then'](respondWithFilteredResult(_0x69ddca,_0x42e9e6))['catch'](handleError(_0x69ddca,null));};
\ No newline at end of file
index ff86323..a8f9a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb28=['CmContact','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x93425f,_0x57c671){var _0x1e27b5=function(_0x1d63cd){while(--_0x1d63cd){_0x93425f['push'](_0x93425f['shift']());}};_0x1e27b5(++_0x57c671);}(_0xfb28,0x131));var _0x8fb2=function(_0x55b7c5,_0xb4e7ac){_0x55b7c5=_0x55b7c5-0x0;var _0x5310aa=_0xfb28[_0x55b7c5];return _0x5310aa;};'use strict';var EventEmitter=require('events');var CmContact=require(_0x8fb2('0x0'))['db'][_0x8fb2('0x1')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x8fb2('0x2')](0x0);var events={'afterCreate':_0x8fb2('0x3'),'afterUpdate':_0x8fb2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x20a9d7){return function(_0x2d4f50,_0x101277,_0x4a80f2){CmContactEvents['emit'](_0x20a9d7+':'+_0x2d4f50['id'],_0x2d4f50);CmContactEvents[_0x8fb2('0x5')](_0x20a9d7,_0x2d4f50);_0x4a80f2(null);};}for(var e in events){if(events[_0x8fb2('0x6')](e)){var event=events[e];CmContact[_0x8fb2('0x7')](e,emitEvent(event));}}module[_0x8fb2('0x8')]=CmContactEvents;
\ No newline at end of file
+var _0x700b=['emit','exports','events','../../mysqldb','CmContact','setMaxListeners','save','remove'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x700b,0x92));var _0xb700=function(_0x1e70a7,_0x19ae32){_0x1e70a7=_0x1e70a7-0x0;var _0x447335=_0x700b[_0x1e70a7];return _0x447335;};'use strict';var EventEmitter=require(_0xb700('0x0'));var CmContact=require(_0xb700('0x1'))['db'][_0xb700('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xb700('0x3')](0x0);var events={'afterCreate':_0xb700('0x4'),'afterUpdate':'update','afterDestroy':_0xb700('0x5')};function emitEvent(_0xf0c6d3){return function(_0x5a3bd9,_0x173889,_0x2111eb){CmContactEvents[_0xb700('0x6')](_0xf0c6d3+':'+_0x5a3bd9['id'],_0x5a3bd9);CmContactEvents['emit'](_0xf0c6d3,_0x5a3bd9);_0x2111eb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xb700('0x7')]=CmContactEvents;
\ No newline at end of file
index aaf3618..fde407d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf915=['priority','scheduledat','YYYY-MM-DD\x20HH:mm:ss','callbackUniqueid','format','catch','then','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','afterCreate','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','Lists','length','always','onlyIfOpen','CmList','BlackLists','cmContact,\x20%s,\x20%s','message','Campaign','CmHopperBlack','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','lodash','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','inspect','CmHopper','findOne','isNil','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId'];(function(_0x12e4ab,_0x163a1e){var _0x3f0807=function(_0x1cd13a){while(--_0x1cd13a){_0x12e4ab['push'](_0x12e4ab['shift']());}};_0x3f0807(++_0x163a1e);}(_0xf915,0x6e));var _0x5f91=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xf915[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x5f91('0x0'));var util=require(_0x5f91('0x1'));var logger=require('../../config/logger')(_0x5f91('0x2'));var moment=require(_0x5f91('0x3'));var BPromise=require(_0x5f91('0x4'));var rp=require(_0x5f91('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5f91('0x6'));var config=require(_0x5f91('0x7'));var attributes=require(_0x5f91('0x8'));module[_0x5f91('0x9')]=function(_0x3aab65,_0x47c5a7){return _0x3aab65[_0x5f91('0xa')](_0x5f91('0xb'),attributes,{'tableName':_0x5f91('0xc'),'paranoid':!![],'indexes':[{'name':_0x5f91('0xd'),'fields':[_0x5f91('0xd')]},{'name':_0x5f91('0xe'),'fields':[_0x5f91('0xf'),_0x5f91('0x10'),_0x5f91('0xd'),_0x5f91('0x11'),_0x5f91('0x12'),_0x5f91('0x13')],'type':_0x5f91('0x14')}],'timestamps':!![],'charset':_0x5f91('0x15'),'collate':_0x5f91('0x16'),'hooks':{'afterCreate':function(_0x300591,_0x578356,_0x3c6824){var _0x20f6bf=_0x3aab65[_0x5f91('0x17')];var _0x378528=_0x300591[_0x5f91('0x18')]({'plain':!![]});function _0x38b56b(){return function(_0x329dd){logger[_0x5f91('0x19')](_0x5f91('0x1a'),'afterCreate',util[_0x5f91('0x1b')](_0x329dd,{'showHidden':![],'depth':null}));};}var _0x4b458a=function(_0x5eeea1){return new BPromise(function(_0x14393b,_0x46441b){_0x20f6bf[_0x5f91('0x1c')][_0x5f91('0x1d')]({'where':{'phone':_0x378528[_0x5f91('0xd')],'VoiceQueueId':_0x5eeea1['id']}})['then'](function(_0x2ffda9){if(!_[_0x5f91('0x1e')](_0x2ffda9)){throw new Error('cmContact,\x20afterCreate\x20'+_0x378528['phone']+_0x5f91('0x1f')+_0x5eeea1['id']);}return _0x20f6bf[_0x5f91('0x1c')][_0x5f91('0x20')]({'phone':_0x378528['phone'],'ContactId':_0x378528['id'],'ListId':_0x378528[_0x5f91('0x21')],'priority':_0x378528['priority']?_0x378528[_0x5f91('0x22')]:0x2,'scheduledat':_0x378528[_0x5f91('0x23')]?_0x378528[_0x5f91('0x23')]:moment()['format'](_0x5f91('0x24')),'callback':_0x378528[_0x5f91('0x25')]?!![]:![],'callbackuniqueid':_0x378528[_0x5f91('0x25')]?_0x378528[_0x5f91('0x25')]:undefined,'callbackat':_0x378528[_0x5f91('0x25')]?moment()[_0x5f91('0x26')](_0x5f91('0x24')):undefined,'VoiceQueueId':_0x5eeea1['id']});})[_0x5f91('0x27')](function(_0x129a7a){_0x46441b(_0x129a7a);});});};var _0x33245d=function(_0x5cfdd9){return new BPromise(function(_0x49f6d0,_0xa690d6){_0x20f6bf[_0x5f91('0x1c')]['findOne']({'where':{'phone':_0x378528['phone'],'VoiceQueueId':_0x5cfdd9['id']}})[_0x5f91('0x28')](function(_0x5bd86b){if(!_[_0x5f91('0x1e')](_0x5bd86b)){throw new Error('cmContact,\x20afterCreate\x20'+_0x378528['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x5cfdd9['id']);}return _0x20f6bf[_0x5f91('0x29')]['findOne']({'where':{'calleridnum':_0x378528[_0x5f91('0xd')],'VoiceQueueId':_0x5cfdd9['id']}});})['then'](function(_0x6a6e00){if(!_[_0x5f91('0x1e')](_0x6a6e00)){throw new Error(_0x5f91('0x2a')+_0x378528[_0x5f91('0xd')]+_0x5f91('0x2b')+_0x5cfdd9['id']);}return _0x20f6bf['CmHopper']['create']({'phone':_0x378528[_0x5f91('0xd')],'ContactId':_0x378528['id'],'ListId':_0x378528[_0x5f91('0x21')],'priority':_0x378528[_0x5f91('0x22')]?_0x378528[_0x5f91('0x22')]:0x2,'scheduledat':_0x378528[_0x5f91('0x23')]?_0x378528[_0x5f91('0x23')]:moment()[_0x5f91('0x26')](_0x5f91('0x24')),'callback':_0x378528[_0x5f91('0x25')]?!![]:![],'callbackuniqueid':_0x378528['callbackUniqueid']?_0x378528[_0x5f91('0x25')]:undefined,'callbackat':_0x378528[_0x5f91('0x25')]?moment()[_0x5f91('0x26')](_0x5f91('0x24')):undefined,'VoiceQueueId':_0x5cfdd9['id']});})[_0x5f91('0x27')](function(_0xad5b1c){_0xa690d6(_0xad5b1c);});});};function _0x44c860(){return function(_0x4f2be0){logger[_0x5f91('0x19')](_0x5f91('0x1a'),_0x5f91('0x2c'),util[_0x5f91('0x1b')](_0x4f2be0,{'showHidden':![],'depth':null}));};}var _0x2b0541=function(_0x23ed6f){return new BPromise(function(_0x597034,_0x3c0990){_0x20f6bf[_0x5f91('0x1c')]['findOne']({'where':{'phone':_0x378528[_0x5f91('0xd')],'CampaignId':_0x23ed6f['id']}})[_0x5f91('0x28')](function(_0x434391){if(!_[_0x5f91('0x1e')](_0x434391)){throw new Error(_0x5f91('0x2d')+_0x378528[_0x5f91('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x23ed6f['id']);}return _0x20f6bf[_0x5f91('0x1c')][_0x5f91('0x20')]({'phone':_0x378528['phone'],'ContactId':_0x378528['id'],'ListId':_0x378528[_0x5f91('0x21')],'priority':_0x378528[_0x5f91('0x22')]?_0x378528[_0x5f91('0x22')]:0x2,'scheduledat':_0x378528[_0x5f91('0x23')]?_0x378528['scheduledat']:moment()[_0x5f91('0x26')](_0x5f91('0x24')),'callback':_0x378528['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x378528['callbackUniqueid']?_0x378528[_0x5f91('0x25')]:undefined,'callbackat':_0x378528[_0x5f91('0x25')]?moment()[_0x5f91('0x26')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x23ed6f['id']});})[_0x5f91('0x27')](function(_0x310fb8){_0x3c0990(_0x310fb8);});});};var _0x5ef258=function(_0x3469f9){return new BPromise(function(_0x301da7,_0x1614a1){_0x20f6bf[_0x5f91('0x1c')][_0x5f91('0x1d')]({'where':{'phone':_0x378528[_0x5f91('0xd')],'CampaignId':_0x3469f9['id']}})[_0x5f91('0x28')](function(_0x50846e){if(!_[_0x5f91('0x1e')](_0x50846e)){throw new Error(_0x5f91('0x2d')+_0x378528[_0x5f91('0xd')]+_0x5f91('0x2e')+_0x3469f9['id']);}return _0x20f6bf[_0x5f91('0x29')]['findOne']({'where':{'calleridnum':_0x378528[_0x5f91('0xd')],'CampaignId':_0x3469f9['id']}});})[_0x5f91('0x28')](function(_0x637937){if(!_[_0x5f91('0x1e')](_0x637937)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x378528[_0x5f91('0xd')]+_0x5f91('0x2f')+_0x3469f9['id']);}return _0x20f6bf['CmHopper'][_0x5f91('0x20')]({'phone':_0x378528[_0x5f91('0xd')],'ContactId':_0x378528['id'],'ListId':_0x378528['ListId'],'priority':_0x378528['priority']?_0x378528[_0x5f91('0x22')]:0x2,'scheduledat':_0x378528['scheduledat']?_0x378528[_0x5f91('0x23')]:moment()[_0x5f91('0x26')](_0x5f91('0x24')),'callback':_0x378528[_0x5f91('0x25')]?!![]:![],'callbackuniqueid':_0x378528[_0x5f91('0x25')]?_0x378528['callbackUniqueid']:undefined,'callbackat':_0x378528[_0x5f91('0x25')]?moment()[_0x5f91('0x26')](_0x5f91('0x24')):undefined,'CampaignId':_0x3469f9['id']});})[_0x5f91('0x27')](function(_0x358a6b){_0x1614a1(_0x358a6b);});});};if(_0x378528['ListId']){_0x20f6bf[_0x5f91('0x30')][_0x5f91('0x31')]({'where':{'type':_0x5f91('0x32')},'attributes':['id',_0x5f91('0x33')],'include':[{'model':_0x20f6bf['CmList'],'as':_0x5f91('0x34'),'where':{'id':_0x378528['ListId']}}]})['then'](function(_0x2a3a38){if(_0x2a3a38){var _0x511613=[];for(var _0x114ab4=0x0,_0x49bd56;_0x114ab4<_0x2a3a38[_0x5f91('0x35')];_0x114ab4+=0x1){_0x49bd56=_0x2a3a38[_0x114ab4][_0x5f91('0x18')]({'plain':!![]});switch(_0x49bd56[_0x5f91('0x33')]){case _0x5f91('0x36'):_0x33245d(_0x49bd56)['catch'](_0x38b56b());break;case _0x5f91('0x37'):_0x4b458a(_0x49bd56)[_0x5f91('0x27')](_0x38b56b());break;default:_0x20f6bf['CmHopper']['create']({'phone':_0x378528['phone'],'ContactId':_0x378528['id'],'ListId':_0x378528['ListId'],'scheduledat':_0x378528[_0x5f91('0x23')]?_0x378528[_0x5f91('0x23')]:moment()[_0x5f91('0x26')](_0x5f91('0x24')),'priority':_0x378528[_0x5f91('0x22')]?_0x378528[_0x5f91('0x22')]:0x2,'callback':_0x378528['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x378528['callbackUniqueid']?_0x378528[_0x5f91('0x25')]:undefined,'callbackat':_0x378528[_0x5f91('0x25')]?moment()['format'](_0x5f91('0x24')):undefined,'VoiceQueueId':_0x49bd56['id']})[_0x5f91('0x27')](_0x38b56b());}}}})['then'](function(){return _0x20f6bf[_0x5f91('0x30')][_0x5f91('0x31')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x20f6bf[_0x5f91('0x38')],'as':_0x5f91('0x39'),'where':{'id':_0x378528[_0x5f91('0x21')]}}]})['then'](function(_0xf0022d){if(_0xf0022d){var _0x229c99=[];for(var _0x293243=0x0,_0x5a1dae;_0x293243<_0xf0022d['length'];_0x293243+=0x1){_0x5a1dae=_0xf0022d[_0x293243]['get']({'plain':!![]});_0x20f6bf['CmHopperBlack']['create']({'phone':_0x378528[_0x5f91('0xd')],'ContactId':_0x378528['id'],'ListId':_0x378528[_0x5f91('0x21')],'VoiceQueueId':_0x5a1dae['id']})['catch'](function(_0x2b50b7){logger[_0x5f91('0x19')](_0x5f91('0x3a'),_0x5f91('0x2c'),_0x2b50b7[_0x5f91('0x3b')]);});}}});})['then'](function(){return _0x20f6bf[_0x5f91('0x3c')][_0x5f91('0x31')]({'attributes':['id',_0x5f91('0x33')],'include':[{'model':_0x20f6bf['CmList'],'as':_0x5f91('0x34'),'where':{'id':_0x378528[_0x5f91('0x21')]}}]})[_0x5f91('0x28')](function(_0x2c9335){if(_0x2c9335){var _0x27c163=[];for(var _0xdc11ff=0x0,_0x32c877;_0xdc11ff<_0x2c9335[_0x5f91('0x35')];_0xdc11ff+=0x1){_0x32c877=_0x2c9335[_0xdc11ff][_0x5f91('0x18')]({'plain':!![]});switch(_0x32c877['dialCheckDuplicateType']){case _0x5f91('0x36'):_0x5ef258(_0x32c877)[_0x5f91('0x27')](_0x44c860());break;case _0x5f91('0x37'):_0x2b0541(_0x32c877)[_0x5f91('0x27')](_0x44c860());break;default:_0x20f6bf[_0x5f91('0x1c')][_0x5f91('0x20')]({'phone':_0x378528[_0x5f91('0xd')],'ContactId':_0x378528['id'],'ListId':_0x378528[_0x5f91('0x21')],'scheduledat':_0x378528['scheduledat']?_0x378528[_0x5f91('0x23')]:moment()['format'](_0x5f91('0x24')),'priority':_0x378528[_0x5f91('0x22')]?_0x378528[_0x5f91('0x22')]:0x2,'callback':_0x378528[_0x5f91('0x25')]?!![]:![],'callbackuniqueid':_0x378528[_0x5f91('0x25')]?_0x378528[_0x5f91('0x25')]:undefined,'callbackat':_0x378528[_0x5f91('0x25')]?moment()[_0x5f91('0x26')](_0x5f91('0x24')):undefined,'CampaignId':_0x32c877['id']})[_0x5f91('0x27')](_0x44c860());}}}});})[_0x5f91('0x28')](function(){return _0x20f6bf[_0x5f91('0x3c')][_0x5f91('0x31')]({'attributes':['id'],'include':[{'model':_0x20f6bf[_0x5f91('0x38')],'as':_0x5f91('0x39'),'where':{'id':_0x378528[_0x5f91('0x21')]}}]})['then'](function(_0x15fc06){if(_0x15fc06){var _0x93e773=[];for(var _0x50cda4=0x0,_0x109e98;_0x50cda4<_0x15fc06[_0x5f91('0x35')];_0x50cda4+=0x1){_0x109e98=_0x15fc06[_0x50cda4]['get']({'plain':!![]});_0x20f6bf[_0x5f91('0x3d')][_0x5f91('0x20')]({'phone':_0x378528['phone'],'ContactId':_0x378528['id'],'ListId':_0x378528[_0x5f91('0x21')],'CampaignId':_0x109e98['id']})[_0x5f91('0x27')](function(_0x274678){logger[_0x5f91('0x19')](_0x5f91('0x3a'),'afterCreate',_0x274678[_0x5f91('0x3b')]);});}}});})['then'](function(){_0x3c6824();})[_0x5f91('0x27')](function(_0xe07405){logger['error'](_0x5f91('0x3a'),_0x5f91('0x2c'),_0xe07405[_0x5f91('0x3b')]);_0x3c6824(_0xe07405);});}else{_0x3c6824(new Error(_0x5f91('0x3e')));}},'afterDestroy':function(_0x1c38c3,_0x4b253a,_0x3d930d){var _0x1f5ca3=_0x3aab65['models'];var _0x29af5f=_0x1c38c3[_0x5f91('0x18')]({'plain':!![]});return _0x1f5ca3[_0x5f91('0x1c')][_0x5f91('0x31')]({'raw':!![],'where':{'ListId':_0x29af5f['ListId'],'ContactId':_0x29af5f['id']}})[_0x5f91('0x28')](function(_0x15b099){if(!_[_0x5f91('0x3f')](_0x15b099)){var _0x40ae57=[];for(var _0x2fb856=0x0;_0x2fb856<_0x15b099['length'];_0x2fb856+=0x1){var _0x421f62=_0x1f5ca3[_0x5f91('0x1c')][_0x5f91('0x40')]({'where':{'ListId':_0x15b099[_0x2fb856][_0x5f91('0x21')],'ContactId':_0x15b099[_0x2fb856][_0x5f91('0x41')],'VoiceQueueId':_0x15b099[_0x2fb856][_0x5f91('0x42')],'CampaignId':_0x15b099[_0x2fb856][_0x5f91('0x43')]}});_0x40ae57[_0x5f91('0x44')](_0x421f62);}return BPromise[_0x5f91('0x45')](_0x40ae57);}})['then'](function(_0x13ead3){logger[_0x5f91('0x46')](_0x5f91('0x47'),util['inspect'](_0x13ead3,{'showHidden':![],'depth':null}));_0x3d930d();})[_0x5f91('0x27')](function(_0x2bb63c){logger[_0x5f91('0x19')]('[CmContact][afterDestroy][Error]',util['inspect'](_0x2bb63c,{'showHidden':![],'depth':null}));_0x3d930d(_0x2bb63c);});}}});};
\ No newline at end of file
+var _0x4325=['findOne','then','isNil','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','ListId','priority','scheduledat','format','callbackUniqueid','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','create','YYYY-MM-DD\x20HH:mm:ss','catch','afterCreate','inspect','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','outbound','dialCheckDuplicateType','CmList','length','always','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','models','isEmpty','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Error]','lodash','util','api','moment','bluebird','rimraf','../../config/environment','./cmContact.attributes','CmContact','phone','fti_cm_contacts','firstName','lastName','mobile','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','CmHopper'];(function(_0x10e1c9,_0x375f5a){var _0x32f313=function(_0x88c43b){while(--_0x88c43b){_0x10e1c9['push'](_0x10e1c9['shift']());}};_0x32f313(++_0x375f5a);}(_0x4325,0x1da));var _0x5432=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x4325[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x5432('0x0'));var util=require(_0x5432('0x1'));var logger=require('../../config/logger')(_0x5432('0x2'));var moment=require(_0x5432('0x3'));var BPromise=require(_0x5432('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5432('0x5'));var config=require(_0x5432('0x6'));var attributes=require(_0x5432('0x7'));module['exports']=function(_0x209e2e,_0xbb0075){return _0x209e2e['define'](_0x5432('0x8'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x5432('0x9'),'fields':[_0x5432('0x9')]},{'name':_0x5432('0xa'),'fields':[_0x5432('0xb'),_0x5432('0xc'),'phone',_0x5432('0xd'),'fax',_0x5432('0xe')],'type':_0x5432('0xf')}],'timestamps':!![],'charset':_0x5432('0x10'),'collate':_0x5432('0x11'),'hooks':{'afterCreate':function(_0x4ac11f,_0x5a5952,_0x11b25c){var _0x24fb02=_0x209e2e['models'];var _0x10a289=_0x4ac11f[_0x5432('0x12')]({'plain':!![]});function _0x3b1127(){return function(_0x424b8f){logger[_0x5432('0x13')](_0x5432('0x14'),'afterCreate',util['inspect'](_0x424b8f,{'showHidden':![],'depth':null}));};}var _0x43bb16=function(_0x44e70c){return new BPromise(function(_0x3859d1,_0x364152){_0x24fb02[_0x5432('0x15')][_0x5432('0x16')]({'where':{'phone':_0x10a289['phone'],'VoiceQueueId':_0x44e70c['id']}})[_0x5432('0x17')](function(_0x49e8fd){if(!_[_0x5432('0x18')](_0x49e8fd)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+_0x5432('0x1a')+_0x44e70c['id']);}return _0x24fb02[_0x5432('0x15')]['create']({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289[_0x5432('0x1d')]:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x44e70c['id']});})['catch'](function(_0x4d09cd){_0x364152(_0x4d09cd);});});};var _0x61827e=function(_0xb900f2){return new BPromise(function(_0x19bdab,_0x1f4870){_0x24fb02['CmHopper']['findOne']({'where':{'phone':_0x10a289[_0x5432('0x9')],'VoiceQueueId':_0xb900f2['id']}})[_0x5432('0x17')](function(_0x4a40fc){if(!_[_0x5432('0x18')](_0x4a40fc)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0xb900f2['id']);}return _0x24fb02[_0x5432('0x20')][_0x5432('0x16')]({'where':{'calleridnum':_0x10a289[_0x5432('0x9')],'VoiceQueueId':_0xb900f2['id']}});})['then'](function(_0x4ab09d){if(!_[_0x5432('0x18')](_0x4ab09d)){throw new Error(_0x5432('0x21')+_0x10a289['phone']+_0x5432('0x22')+_0xb900f2['id']);}return _0x24fb02[_0x5432('0x15')][_0x5432('0x23')]({'phone':_0x10a289['phone'],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'priority':_0x10a289['priority']?_0x10a289['priority']:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289['scheduledat']:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x10a289['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()['format'](_0x5432('0x24')):undefined,'VoiceQueueId':_0xb900f2['id']});})[_0x5432('0x25')](function(_0x214ed3){_0x1f4870(_0x214ed3);});});};function _0x1d2fd4(){return function(_0x1a5612){logger[_0x5432('0x13')](_0x5432('0x14'),_0x5432('0x26'),util[_0x5432('0x27')](_0x1a5612,{'showHidden':![],'depth':null}));};}var _0x5abaf7=function(_0x57fd0b){return new BPromise(function(_0x240dec,_0x42ab1e){_0x24fb02[_0x5432('0x15')][_0x5432('0x16')]({'where':{'phone':_0x10a289[_0x5432('0x9')],'CampaignId':_0x57fd0b['id']}})['then'](function(_0x30a07f){if(!_['isNil'](_0x30a07f)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+_0x5432('0x28')+_0x57fd0b['id']);}return _0x24fb02[_0x5432('0x15')][_0x5432('0x23')]({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289['ListId'],'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289[_0x5432('0x1d')]:moment()['format'](_0x5432('0x24')),'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()[_0x5432('0x1e')](_0x5432('0x24')):undefined,'CampaignId':_0x57fd0b['id']});})[_0x5432('0x25')](function(_0x228c59){_0x42ab1e(_0x228c59);});});};var _0x571bbe=function(_0x1444f8){return new BPromise(function(_0x1f4679,_0x32728b){_0x24fb02[_0x5432('0x15')]['findOne']({'where':{'phone':_0x10a289[_0x5432('0x9')],'CampaignId':_0x1444f8['id']}})['then'](function(_0x6f5006){if(!_[_0x5432('0x18')](_0x6f5006)){throw new Error(_0x5432('0x19')+_0x10a289[_0x5432('0x9')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x1444f8['id']);}return _0x24fb02['CmHopperFinal']['findOne']({'where':{'calleridnum':_0x10a289[_0x5432('0x9')],'CampaignId':_0x1444f8['id']}});})[_0x5432('0x17')](function(_0x139d0a){if(!_[_0x5432('0x18')](_0x139d0a)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x10a289[_0x5432('0x9')]+_0x5432('0x29')+_0x1444f8['id']);}return _0x24fb02[_0x5432('0x15')]['create']({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'priority':_0x10a289['priority']?_0x10a289[_0x5432('0x1c')]:0x2,'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289['scheduledat']:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289[_0x5432('0x1f')]?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()['format'](_0x5432('0x24')):undefined,'CampaignId':_0x1444f8['id']});})['catch'](function(_0x3771ee){_0x32728b(_0x3771ee);});});};if(_0x10a289[_0x5432('0x1b')]){_0x24fb02[_0x5432('0x2a')][_0x5432('0x2b')]({'where':{'type':_0x5432('0x2c')},'attributes':['id',_0x5432('0x2d')],'include':[{'model':_0x24fb02[_0x5432('0x2e')],'as':'Lists','where':{'id':_0x10a289[_0x5432('0x1b')]}}]})[_0x5432('0x17')](function(_0x2623ce){if(_0x2623ce){var _0x30bf93=[];for(var _0x24f090=0x0,_0x29a39d;_0x24f090<_0x2623ce[_0x5432('0x2f')];_0x24f090+=0x1){_0x29a39d=_0x2623ce[_0x24f090]['get']({'plain':!![]});switch(_0x29a39d[_0x5432('0x2d')]){case _0x5432('0x30'):_0x61827e(_0x29a39d)[_0x5432('0x25')](_0x3b1127());break;case _0x5432('0x31'):_0x43bb16(_0x29a39d)[_0x5432('0x25')](_0x3b1127());break;default:_0x24fb02['CmHopper'][_0x5432('0x23')]({'phone':_0x10a289['phone'],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289['scheduledat']:moment()[_0x5432('0x1e')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'callback':_0x10a289['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x10a289['callbackUniqueid']?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()[_0x5432('0x1e')](_0x5432('0x24')):undefined,'VoiceQueueId':_0x29a39d['id']})[_0x5432('0x25')](_0x3b1127());}}}})[_0x5432('0x17')](function(){return _0x24fb02[_0x5432('0x2a')]['findAll']({'where':{'type':_0x5432('0x2c')},'attributes':['id'],'include':[{'model':_0x24fb02[_0x5432('0x2e')],'as':_0x5432('0x32'),'where':{'id':_0x10a289['ListId']}}]})['then'](function(_0x483777){if(_0x483777){var _0x487dbf=[];for(var _0x26d6ae=0x0,_0x42212f;_0x26d6ae<_0x483777[_0x5432('0x2f')];_0x26d6ae+=0x1){_0x42212f=_0x483777[_0x26d6ae][_0x5432('0x12')]({'plain':!![]});_0x24fb02[_0x5432('0x33')]['create']({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'VoiceQueueId':_0x42212f['id']})[_0x5432('0x25')](function(_0x536229){logger[_0x5432('0x13')](_0x5432('0x34'),_0x5432('0x26'),_0x536229[_0x5432('0x35')]);});}}});})[_0x5432('0x17')](function(){return _0x24fb02['Campaign'][_0x5432('0x2b')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':_0x24fb02[_0x5432('0x2e')],'as':'Lists','where':{'id':_0x10a289[_0x5432('0x1b')]}}]})[_0x5432('0x17')](function(_0x5c7bc3){if(_0x5c7bc3){var _0x7129e2=[];for(var _0x52e2b3=0x0,_0x18fd03;_0x52e2b3<_0x5c7bc3[_0x5432('0x2f')];_0x52e2b3+=0x1){_0x18fd03=_0x5c7bc3[_0x52e2b3][_0x5432('0x12')]({'plain':!![]});switch(_0x18fd03[_0x5432('0x2d')]){case'always':_0x571bbe(_0x18fd03)[_0x5432('0x25')](_0x1d2fd4());break;case'onlyIfOpen':_0x5abaf7(_0x18fd03)[_0x5432('0x25')](_0x1d2fd4());break;default:_0x24fb02['CmHopper'][_0x5432('0x23')]({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'scheduledat':_0x10a289[_0x5432('0x1d')]?_0x10a289[_0x5432('0x1d')]:moment()[_0x5432('0x1e')](_0x5432('0x24')),'priority':_0x10a289[_0x5432('0x1c')]?_0x10a289[_0x5432('0x1c')]:0x2,'callback':_0x10a289[_0x5432('0x1f')]?!![]:![],'callbackuniqueid':_0x10a289['callbackUniqueid']?_0x10a289[_0x5432('0x1f')]:undefined,'callbackat':_0x10a289[_0x5432('0x1f')]?moment()['format'](_0x5432('0x24')):undefined,'CampaignId':_0x18fd03['id']})[_0x5432('0x25')](_0x1d2fd4());}}}});})[_0x5432('0x17')](function(){return _0x24fb02[_0x5432('0x36')][_0x5432('0x2b')]({'attributes':['id'],'include':[{'model':_0x24fb02['CmList'],'as':'BlackLists','where':{'id':_0x10a289['ListId']}}]})['then'](function(_0x3687b7){if(_0x3687b7){var _0x806f5c=[];for(var _0x112230=0x0,_0x5b70f9;_0x112230<_0x3687b7[_0x5432('0x2f')];_0x112230+=0x1){_0x5b70f9=_0x3687b7[_0x112230][_0x5432('0x12')]({'plain':!![]});_0x24fb02[_0x5432('0x33')][_0x5432('0x23')]({'phone':_0x10a289[_0x5432('0x9')],'ContactId':_0x10a289['id'],'ListId':_0x10a289[_0x5432('0x1b')],'CampaignId':_0x5b70f9['id']})[_0x5432('0x25')](function(_0x3a2d2c){logger[_0x5432('0x13')](_0x5432('0x34'),_0x5432('0x26'),_0x3a2d2c['message']);});}}});})[_0x5432('0x17')](function(){_0x11b25c();})[_0x5432('0x25')](function(_0xa070cb){logger[_0x5432('0x13')](_0x5432('0x34'),'afterCreate',_0xa070cb[_0x5432('0x35')]);_0x11b25c(_0xa070cb);});}else{_0x11b25c(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x380571,_0x2ba6bb,_0x41e9df){var _0x1b83f9=_0x209e2e[_0x5432('0x37')];var _0x2937e7=_0x380571[_0x5432('0x12')]({'plain':!![]});return _0x1b83f9[_0x5432('0x15')][_0x5432('0x2b')]({'raw':!![],'where':{'ListId':_0x2937e7[_0x5432('0x1b')],'ContactId':_0x2937e7['id']}})[_0x5432('0x17')](function(_0x41aa75){if(!_[_0x5432('0x38')](_0x41aa75)){var _0xe1ea63=[];for(var _0x335ed9=0x0;_0x335ed9<_0x41aa75[_0x5432('0x2f')];_0x335ed9+=0x1){var _0x157bc9=_0x1b83f9[_0x5432('0x15')]['destroy']({'where':{'ListId':_0x41aa75[_0x335ed9][_0x5432('0x1b')],'ContactId':_0x41aa75[_0x335ed9]['ContactId'],'VoiceQueueId':_0x41aa75[_0x335ed9][_0x5432('0x39')],'CampaignId':_0x41aa75[_0x335ed9][_0x5432('0x3a')]}});_0xe1ea63['push'](_0x157bc9);}return BPromise[_0x5432('0x3b')](_0xe1ea63);}})[_0x5432('0x17')](function(_0x184b6c){logger[_0x5432('0x3c')]('[CmContact][afterDestroy][Succesfull]',util[_0x5432('0x27')](_0x184b6c,{'showHidden':![],'depth':null}));_0x41e9df();})['catch'](function(_0x187373){logger[_0x5432('0x13')](_0x5432('0x3d'),util[_0x5432('0x27')](_0x187373,{'showHidden':![],'depth':null}));_0x41e9df(_0x187373);});}}});};
\ No newline at end of file
index 2037618..9bc9b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4795=['body','length','cf_','update','table','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost','./cmContact.socket','register','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','raw','where','attributes','limit','include','map','model','CreateCmContact','create'];(function(_0xadeb4a,_0x684a72){var _0xea20b2=function(_0x43f9a2){while(--_0x43f9a2){_0xadeb4a['push'](_0xadeb4a['shift']());}};_0xea20b2(++_0x684a72);}(_0x4795,0xd1));var _0x5479=function(_0x2cf71d,_0x36a289){_0x2cf71d=_0x2cf71d-0x0;var _0x10ab0f=_0x4795[_0x2cf71d];return _0x10ab0f;};'use strict';var _=require(_0x5479('0x0'));var util=require(_0x5479('0x1'));var moment=require(_0x5479('0x2'));var BPromise=require('bluebird');var rs=require(_0x5479('0x3'));var fs=require('fs');var Redis=require(_0x5479('0x4'));var squel=require('squel');var db=require(_0x5479('0x5'))['db'];var utils=require(_0x5479('0x6'));var logger=require('../../config/logger')(_0x5479('0x7'));var config=require(_0x5479('0x8'));var jayson=require(_0x5479('0x9'));var client=jayson[_0x5479('0xa')]['http']({'port':0x232a});config[_0x5479('0xb')]=_[_0x5479('0xc')](config[_0x5479('0xb')],{'host':_0x5479('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5479('0xb')]));require(_0x5479('0xe'))[_0x5479('0xf')](socket);function respondWithRpcPromise(_0xbd925e,_0x533b11,_0xd0c5ff){return new BPromise(function(_0x1f03a2,_0x54a9a7){return client['request'](_0xbd925e,_0xd0c5ff)[_0x5479('0x10')](function(_0x27a31d){logger[_0x5479('0x11')](_0x5479('0x12'),_0x533b11,_0x5479('0x13'));logger[_0x5479('0x14')](_0x5479('0x15'),_0x533b11,_0x5479('0x13'),JSON[_0x5479('0x16')](_0x27a31d));if(_0x27a31d[_0x5479('0x17')]){if(_0x27a31d[_0x5479('0x17')][_0x5479('0x18')]===0x1f4){logger[_0x5479('0x17')](_0x5479('0x12'),_0x533b11,_0x27a31d['error'][_0x5479('0x19')]);return _0x54a9a7(_0x27a31d[_0x5479('0x17')][_0x5479('0x19')]);}logger[_0x5479('0x17')]('CmContact,\x20%s,\x20%s',_0x533b11,_0x27a31d[_0x5479('0x17')][_0x5479('0x19')]);return _0x1f03a2(_0x27a31d[_0x5479('0x17')][_0x5479('0x19')]);}else{logger['info'](_0x5479('0x12'),_0x533b11,'request\x20sent');_0x1f03a2(_0x27a31d[_0x5479('0x1a')][_0x5479('0x19')]);}})[_0x5479('0x1b')](function(_0x30cbc6){logger['error'](_0x5479('0x12'),_0x533b11,_0x30cbc6);_0x54a9a7(_0x30cbc6);});});}exports[_0x5479('0x1c')]=function(_0x1bed67){var _0x529cca=this;return new Promise(function(_0x512a1f,_0x33a45a){return db[_0x5479('0x1d')][_0x5479('0x1e')]({'raw':_0x1bed67['options']?_0x1bed67[_0x5479('0x1f')][_0x5479('0x20')]===undefined?!![]:![]:!![],'where':_0x1bed67[_0x5479('0x1f')]?_0x1bed67[_0x5479('0x1f')][_0x5479('0x21')]||null:null,'attributes':_0x1bed67[_0x5479('0x1f')]?_0x1bed67[_0x5479('0x1f')][_0x5479('0x22')]||null:null,'limit':_0x1bed67['options']?_0x1bed67[_0x5479('0x1f')][_0x5479('0x23')]||null:null,'include':_0x1bed67[_0x5479('0x1f')]?_0x1bed67[_0x5479('0x1f')][_0x5479('0x24')]?_[_0x5479('0x25')](_0x1bed67[_0x5479('0x1f')][_0x5479('0x24')],function(_0xd8b68d){return{'model':db[_0xd8b68d[_0x5479('0x26')]],'as':_0xd8b68d['as'],'attributes':_0xd8b68d['attributes'],'include':_0xd8b68d[_0x5479('0x24')]?_[_0x5479('0x25')](_0xd8b68d['include'],function(_0x5667f9){return{'model':db[_0x5667f9[_0x5479('0x26')]],'as':_0x5667f9['as'],'attributes':_0x5667f9[_0x5479('0x22')],'include':_0x5667f9['include']?_[_0x5479('0x25')](_0x5667f9[_0x5479('0x24')],function(_0x3b88c4){return{'model':db[_0x3b88c4[_0x5479('0x26')]],'as':_0x3b88c4['as'],'attributes':_0x3b88c4[_0x5479('0x22')]};}):[]};}):[]};}):[]:[]})[_0x5479('0x10')](function(_0x5c7606){logger[_0x5479('0x11')]('GetCmContact',_0x1bed67);logger[_0x5479('0x14')](_0x5479('0x1c'),_0x1bed67,JSON['stringify'](_0x5c7606));_0x512a1f(_0x5c7606);})[_0x5479('0x1b')](function(_0x242e77){logger[_0x5479('0x17')](_0x5479('0x1c'),_0x242e77['message'],_0x1bed67);_0x33a45a(_0x529cca[_0x5479('0x17')](0x1f4,_0x242e77[_0x5479('0x19')]));});});};exports[_0x5479('0x27')]=function(_0x53129b){var _0x2d3164=this;return new Promise(function(_0x53e3cc,_0x10fa95){return db[_0x5479('0x1d')][_0x5479('0x28')](_0x53129b[_0x5479('0x29')],{'raw':_0x53129b[_0x5479('0x1f')]?_0x53129b['options']['raw']===undefined?!![]:![]:!![]})[_0x5479('0x10')](function(_0x2c07bd){var _0x253ca4;for(var _0x4ce49c=0x0;_0x4ce49c<Object['keys'](_0x53129b[_0x5479('0x29')])[_0x5479('0x2a')];_0x4ce49c++){var _0x205c0b=Object['keys'](_0x53129b[_0x5479('0x29')])[_0x4ce49c];if(_0x205c0b['startsWith'](_0x5479('0x2b'))){_0x253ca4=squel[_0x5479('0x2c')]()[_0x5479('0x2d')]('cm_contacts')['set'](_0x205c0b,_0x53129b['body'][_0x205c0b])[_0x5479('0x21')](_0x5479('0x2e'),_0x2c07bd['id'])[_0x5479('0x2f')]();break;}}if(!_0x253ca4)return _0x2c07bd;return db[_0x5479('0x30')][_0x5479('0x31')](_0x253ca4)[_0x5479('0x10')](function(){return _0x2c07bd;});})[_0x5479('0x10')](function(_0x45a648){logger[_0x5479('0x11')](_0x5479('0x27'),_0x53129b);logger[_0x5479('0x14')](_0x5479('0x27'),_0x53129b,JSON[_0x5479('0x16')](_0x45a648));_0x53e3cc(_0x45a648);})[_0x5479('0x1b')](function(_0x20d9d8){logger[_0x5479('0x17')]('CreateCmContact',_0x20d9d8['message'],_0x53129b);_0x10fa95(_0x2d3164[_0x5479('0x17')](0x1f4,_0x20d9d8['message']));});});};
\ No newline at end of file
+var _0x4a3b=['request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetCmContact','CmContact','findAll','options','where','attributes','limit','include','map','model','create','keys','length','body','startsWith','cf_','update','table','cm_contacts','set','toString','sequelize','query','CreateCmContact','lodash','moment','bluebird','randomstring','squel','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s'];(function(_0xdbe2de,_0x3bdc5a){var _0x2facd7=function(_0x50df58){while(--_0x50df58){_0xdbe2de['push'](_0xdbe2de['shift']());}};_0x2facd7(++_0x3bdc5a);}(_0x4a3b,0x152));var _0xb4a3=function(_0x2b9e16,_0x5dc71a){_0x2b9e16=_0x2b9e16-0x0;var _0x3b5646=_0x4a3b[_0x2b9e16];return _0x3b5646;};'use strict';var _=require(_0xb4a3('0x0'));var util=require('util');var moment=require(_0xb4a3('0x1'));var BPromise=require(_0xb4a3('0x2'));var rs=require(_0xb4a3('0x3'));var fs=require('fs');var Redis=require('ioredis');var squel=require(_0xb4a3('0x4'));var db=require(_0xb4a3('0x5'))['db'];var utils=require(_0xb4a3('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xb4a3('0x7'));var jayson=require(_0xb4a3('0x8'));var client=jayson[_0xb4a3('0x9')][_0xb4a3('0xa')]({'port':0x232a});config[_0xb4a3('0xb')]=_[_0xb4a3('0xc')](config[_0xb4a3('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb4a3('0xd'))[_0xb4a3('0xe')](socket);function respondWithRpcPromise(_0x5bf2b2,_0x1fde2c,_0x52eb01){return new BPromise(function(_0x112aef,_0x3d9945){return client[_0xb4a3('0xf')](_0x5bf2b2,_0x52eb01)[_0xb4a3('0x10')](function(_0x3c5ca2){logger[_0xb4a3('0x11')](_0xb4a3('0x12'),_0x1fde2c,_0xb4a3('0x13'));logger[_0xb4a3('0x14')](_0xb4a3('0x15'),_0x1fde2c,_0xb4a3('0x13'),JSON[_0xb4a3('0x16')](_0x3c5ca2));if(_0x3c5ca2['error']){if(_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x18')]===0x1f4){logger['error'](_0xb4a3('0x12'),_0x1fde2c,_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x19')]);return _0x3d9945(_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x19')]);}logger[_0xb4a3('0x17')](_0xb4a3('0x12'),_0x1fde2c,_0x3c5ca2[_0xb4a3('0x17')]['message']);return _0x112aef(_0x3c5ca2[_0xb4a3('0x17')][_0xb4a3('0x19')]);}else{logger[_0xb4a3('0x11')](_0xb4a3('0x12'),_0x1fde2c,'request\x20sent');_0x112aef(_0x3c5ca2['result'][_0xb4a3('0x19')]);}})[_0xb4a3('0x1a')](function(_0x4cdd6d){logger[_0xb4a3('0x17')](_0xb4a3('0x12'),_0x1fde2c,_0x4cdd6d);_0x3d9945(_0x4cdd6d);});});}exports[_0xb4a3('0x1b')]=function(_0x5accc5){var _0x276118=this;return new Promise(function(_0x2a07cd,_0x449db1){return db[_0xb4a3('0x1c')][_0xb4a3('0x1d')]({'raw':_0x5accc5['options']?_0x5accc5[_0xb4a3('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x1f')]||null:null,'attributes':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x20')]||null:null,'limit':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x21')]||null:null,'include':_0x5accc5[_0xb4a3('0x1e')]?_0x5accc5[_0xb4a3('0x1e')][_0xb4a3('0x22')]?_[_0xb4a3('0x23')](_0x5accc5['options']['include'],function(_0x1469ba){return{'model':db[_0x1469ba[_0xb4a3('0x24')]],'as':_0x1469ba['as'],'attributes':_0x1469ba[_0xb4a3('0x20')],'include':_0x1469ba[_0xb4a3('0x22')]?_[_0xb4a3('0x23')](_0x1469ba[_0xb4a3('0x22')],function(_0xc7991f){return{'model':db[_0xc7991f[_0xb4a3('0x24')]],'as':_0xc7991f['as'],'attributes':_0xc7991f[_0xb4a3('0x20')],'include':_0xc7991f[_0xb4a3('0x22')]?_['map'](_0xc7991f[_0xb4a3('0x22')],function(_0xaec738){return{'model':db[_0xaec738[_0xb4a3('0x24')]],'as':_0xaec738['as'],'attributes':_0xaec738[_0xb4a3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x10d70b){logger[_0xb4a3('0x11')](_0xb4a3('0x1b'),_0x5accc5);logger[_0xb4a3('0x14')]('GetCmContact',_0x5accc5,JSON[_0xb4a3('0x16')](_0x10d70b));_0x2a07cd(_0x10d70b);})[_0xb4a3('0x1a')](function(_0x4a9fbc){logger[_0xb4a3('0x17')](_0xb4a3('0x1b'),_0x4a9fbc['message'],_0x5accc5);_0x449db1(_0x276118[_0xb4a3('0x17')](0x1f4,_0x4a9fbc[_0xb4a3('0x19')]));});});};exports['CreateCmContact']=function(_0x42224c){var _0x3ccaad=this;return new Promise(function(_0x4f5061,_0x5c2c89){return db[_0xb4a3('0x1c')][_0xb4a3('0x25')](_0x42224c['body'],{'raw':_0x42224c[_0xb4a3('0x1e')]?_0x42224c[_0xb4a3('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xb4a3('0x10')](function(_0x227867){var _0x21a7f3;for(var _0x1a957e=0x0;_0x1a957e<Object[_0xb4a3('0x26')](_0x42224c['body'])[_0xb4a3('0x27')];_0x1a957e++){var _0xcdb55b=Object['keys'](_0x42224c[_0xb4a3('0x28')])[_0x1a957e];if(_0xcdb55b[_0xb4a3('0x29')](_0xb4a3('0x2a'))){_0x21a7f3=squel[_0xb4a3('0x2b')]()[_0xb4a3('0x2c')](_0xb4a3('0x2d'))[_0xb4a3('0x2e')](_0xcdb55b,_0x42224c['body'][_0xcdb55b])[_0xb4a3('0x1f')]('id\x20=\x20?',_0x227867['id'])[_0xb4a3('0x2f')]();break;}}if(!_0x21a7f3)return _0x227867;return db[_0xb4a3('0x30')][_0xb4a3('0x31')](_0x21a7f3)['then'](function(){return _0x227867;});})[_0xb4a3('0x10')](function(_0x75bd91){logger[_0xb4a3('0x11')]('CreateCmContact',_0x42224c);logger[_0xb4a3('0x14')](_0xb4a3('0x32'),_0x42224c,JSON[_0xb4a3('0x16')](_0x75bd91));_0x4f5061(_0x75bd91);})['catch'](function(_0x1a4e8c){logger[_0xb4a3('0x17')](_0xb4a3('0x32'),_0x1a4e8c[_0xb4a3('0x19')],_0x42224c);_0x5c2c89(_0x3ccaad['error'](0x1f4,_0x1a4e8c[_0xb4a3('0x19')]));});});};
\ No newline at end of file
index fbe0549..69c3dfa 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(_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 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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'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 a958415..f2b8d45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7346=['getJscriptySessions','/:id/journey','getJourney','post','/merge','/create_many','/:id/tags','diskStorage','join','originalname','replace','format','%s-%s%s','basename','now','extname','/csv','single','file','uploadCsv','server/files/tmp','/upload','upload','/upload/:id','import','put','update','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','getTags','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions'];(function(_0x10453e,_0x3b43ec){var _0x3db50d=function(_0x428ae0){while(--_0x428ae0){_0x10453e['push'](_0x10453e['shift']());}};_0x3db50d(++_0x3b43ec);}(_0x7346,0xad));var _0x6734=function(_0x1c30b2,_0x20966e){_0x1c30b2=_0x1c30b2-0x0;var _0x254d37=_0x7346[_0x1c30b2];return _0x254d37;};'use strict';var multer=require(_0x6734('0x0'));var util=require(_0x6734('0x1'));var path=require('path');var timeout=require(_0x6734('0x2'));var express=require('express');var router=express[_0x6734('0x3')]();var fs_extra=require(_0x6734('0x4'));var auth=require(_0x6734('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmContact.controller');router[_0x6734('0x6')]('/',auth[_0x6734('0x7')](),controller[_0x6734('0x8')]);router[_0x6734('0x6')](_0x6734('0x9'),auth['isAuthenticated'](),controller[_0x6734('0xa')]);router[_0x6734('0x6')](_0x6734('0xb'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/tags',auth[_0x6734('0x7')](),controller[_0x6734('0xc')]);router['get']('/:id/hoppers',auth[_0x6734('0x7')](),controller[_0x6734('0xd')]);router[_0x6734('0x6')](_0x6734('0xe'),auth[_0x6734('0x7')](),controller[_0x6734('0xf')]);router['get'](_0x6734('0x10'),auth[_0x6734('0x7')](),controller[_0x6734('0x11')]);router[_0x6734('0x6')](_0x6734('0x12'),auth['isAuthenticated'](),controller[_0x6734('0x13')]);router[_0x6734('0x6')](_0x6734('0x14'),auth[_0x6734('0x7')](),controller[_0x6734('0x15')]);router[_0x6734('0x16')](_0x6734('0x17'),auth[_0x6734('0x7')](),controller['merge']);router[_0x6734('0x16')]('/',auth[_0x6734('0x7')](),controller['create']);router[_0x6734('0x16')](_0x6734('0x18'),auth[_0x6734('0x7')](),controller['bulkCreate']);router[_0x6734('0x16')](_0x6734('0x19'),auth[_0x6734('0x7')](),controller['setTags']);var upload=multer({'storage':multer[_0x6734('0x1a')]({'destination':function(_0x44ea6d,_0x202253,_0x78714){_0x78714(null,path[_0x6734('0x1b')](config['root'],'server/files/tmp'));},'filename':function(_0xae2cf3,_0x4d6d4f,_0x45adde){_0x4d6d4f[_0x6734('0x1c')]=_0x4d6d4f[_0x6734('0x1c')][_0x6734('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x45adde(null,util[_0x6734('0x1e')](_0x6734('0x1f'),path[_0x6734('0x20')](_0x4d6d4f[_0x6734('0x1c')],path['extname'](_0x4d6d4f[_0x6734('0x1c')])),Date[_0x6734('0x21')](),path[_0x6734('0x22')](_0x4d6d4f[_0x6734('0x1c')])));}})});router[_0x6734('0x16')](_0x6734('0x23'),upload[_0x6734('0x24')](_0x6734('0x25')),controller[_0x6734('0x26')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4d1834,_0x33fc89,_0x3fcfe6){_0x3fcfe6(null,path[_0x6734('0x1b')](config['root'],_0x6734('0x27')));},'filename':function(_0x3d8d5d,_0x460b9d,_0x100522){_0x460b9d[_0x6734('0x1c')]=_0x460b9d[_0x6734('0x1c')][_0x6734('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x100522(null,util[_0x6734('0x1e')](_0x6734('0x1f'),path['basename'](_0x460b9d['originalname'],path[_0x6734('0x22')](_0x460b9d[_0x6734('0x1c')])),Date[_0x6734('0x21')](),path[_0x6734('0x22')](_0x460b9d[_0x6734('0x1c')])));}})});router[_0x6734('0x16')](_0x6734('0x28'),upload[_0x6734('0x24')]('file'),controller[_0x6734('0x29')]);router['post'](_0x6734('0x2a'),auth['isAuthenticated'](),controller[_0x6734('0x2b')]);router[_0x6734('0x2c')]('/:id',auth[_0x6734('0x7')](),controller[_0x6734('0x2d')]);router['delete']('/:id',auth[_0x6734('0x7')](),controller[_0x6734('0x2e')]);module[_0x6734('0x2f')]=router;
\ No newline at end of file
+var _0xa75c=['show','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','/merge','merge','create','bulkCreate','setTags','diskStorage','root','server/files/tmp','originalname','format','%s-%s%s','basename','now','extname','single','file','uploadCsv','join','/upload','upload','put','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./cmContact.controller','get','isAuthenticated','/describe','describe','/:id'];(function(_0xee5b48,_0x1d031c){var _0x5ac43b=function(_0x26445c){while(--_0x26445c){_0xee5b48['push'](_0xee5b48['shift']());}};_0x5ac43b(++_0x1d031c);}(_0xa75c,0x183));var _0xca75=function(_0xfb42e6,_0x5f5d4b){_0xfb42e6=_0xfb42e6-0x0;var _0x27265b=_0xa75c[_0xfb42e6];return _0x27265b;};'use strict';var multer=require(_0xca75('0x0'));var util=require('util');var path=require(_0xca75('0x1'));var timeout=require(_0xca75('0x2'));var express=require(_0xca75('0x3'));var router=express[_0xca75('0x4')]();var fs_extra=require(_0xca75('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xca75('0x6'));var controller=require(_0xca75('0x7'));router[_0xca75('0x8')]('/',auth[_0xca75('0x9')](),controller['index']);router['get'](_0xca75('0xa'),auth[_0xca75('0x9')](),controller[_0xca75('0xb')]);router['get'](_0xca75('0xc'),auth['isAuthenticated'](),controller[_0xca75('0xd')]);router[_0xca75('0x8')]('/:id/tags',auth['isAuthenticated'](),controller[_0xca75('0xe')]);router[_0xca75('0x8')](_0xca75('0xf'),auth[_0xca75('0x9')](),controller[_0xca75('0x10')]);router['get'](_0xca75('0x11'),auth[_0xca75('0x9')](),controller[_0xca75('0x12')]);router[_0xca75('0x8')](_0xca75('0x13'),auth['isAuthenticated'](),controller[_0xca75('0x14')]);router[_0xca75('0x8')](_0xca75('0x15'),auth[_0xca75('0x9')](),controller[_0xca75('0x16')]);router[_0xca75('0x8')](_0xca75('0x17'),auth['isAuthenticated'](),controller[_0xca75('0x18')]);router[_0xca75('0x19')](_0xca75('0x1a'),auth['isAuthenticated'](),controller[_0xca75('0x1b')]);router[_0xca75('0x19')]('/',auth[_0xca75('0x9')](),controller[_0xca75('0x1c')]);router[_0xca75('0x19')]('/create_many',auth[_0xca75('0x9')](),controller[_0xca75('0x1d')]);router[_0xca75('0x19')]('/:id/tags',auth[_0xca75('0x9')](),controller[_0xca75('0x1e')]);var upload=multer({'storage':multer[_0xca75('0x1f')]({'destination':function(_0x409370,_0x174193,_0x30375c){_0x30375c(null,path['join'](config[_0xca75('0x20')],_0xca75('0x21')));},'filename':function(_0x2befe8,_0x592c01,_0x2d8784){_0x592c01[_0xca75('0x22')]=_0x592c01[_0xca75('0x22')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2d8784(null,util[_0xca75('0x23')](_0xca75('0x24'),path[_0xca75('0x25')](_0x592c01[_0xca75('0x22')],path['extname'](_0x592c01['originalname'])),Date[_0xca75('0x26')](),path[_0xca75('0x27')](_0x592c01[_0xca75('0x22')])));}})});router[_0xca75('0x19')]('/csv',upload[_0xca75('0x28')](_0xca75('0x29')),controller[_0xca75('0x2a')]);var upload=multer({'storage':multer[_0xca75('0x1f')]({'destination':function(_0x5b0c04,_0x3a414c,_0x230e3f){_0x230e3f(null,path[_0xca75('0x2b')](config[_0xca75('0x20')],_0xca75('0x21')));},'filename':function(_0x4dfbee,_0x125ac8,_0x7ba416){_0x125ac8[_0xca75('0x22')]=_0x125ac8[_0xca75('0x22')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x7ba416(null,util[_0xca75('0x23')](_0xca75('0x24'),path[_0xca75('0x25')](_0x125ac8[_0xca75('0x22')],path[_0xca75('0x27')](_0x125ac8[_0xca75('0x22')])),Date[_0xca75('0x26')](),path['extname'](_0x125ac8[_0xca75('0x22')])));}})});router[_0xca75('0x19')](_0xca75('0x2c'),upload['single'](_0xca75('0x29')),controller[_0xca75('0x2d')]);router[_0xca75('0x19')]('/upload/:id',auth[_0xca75('0x9')](),controller['import']);router[_0xca75('0x2e')]('/:id',auth[_0xca75('0x9')](),controller[_0xca75('0x2f')]);router['delete'](_0xca75('0xc'),auth[_0xca75('0x9')](),controller[_0xca75('0x30')]);module[_0xca75('0x31')]=router;
\ No newline at end of file
index a78742b..e1d069f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x199d=['ENUM','voice','lodash','exports','getDataValue','alias','STRING','name','long','type','select','parse','values','setDataValue','stringify','BOOLEAN'];(function(_0x58dfa3,_0x25ae67){var _0x18dfa3=function(_0x47ad39){while(--_0x47ad39){_0x58dfa3['push'](_0x58dfa3['shift']());}};_0x18dfa3(++_0x25ae67);}(_0x199d,0x92));var _0xd199=function(_0xe45118,_0x5dffbc){_0xe45118=_0xe45118-0x0;var _0x15e15d=_0x199d[_0xe45118];return _0x15e15d;};'use strict';var Sequelize=require('sequelize');var _=require(_0xd199('0x0'));module[_0xd199('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x497f86){return this[_0xd199('0x2')](_0xd199('0x3'));}},'alias':{'type':Sequelize[_0xd199('0x4')],'allowNull':![],'set':function(_0x2b4e8e){this['setDataValue'](_0xd199('0x3'),_0x2b4e8e?_0x2b4e8e:this['getDataValue'](_0xd199('0x5')));}},'type':{'type':Sequelize[_0xd199('0x4')],'allowNull':![]},'values':{'type':Sequelize['TEXT'](_0xd199('0x6')),'get':function(){if(this[_0xd199('0x2')](_0xd199('0x7'))===_0xd199('0x8')){return JSON[_0xd199('0x9')](this[_0xd199('0x2')](_0xd199('0xa')));}else{return this['getDataValue'](_0xd199('0xa'));}},'set':function(_0xbbd2ab){if(Array['isArray'](_0xbbd2ab)){this[_0xd199('0xb')]('values',JSON[_0xd199('0xc')](_0xbbd2ab));}else{this[_0xd199('0xb')]('values',_0xbbd2ab);}}},'required':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xd199('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xd199('0xe')](_0xd199('0xf'))}};
\ No newline at end of file
+var _0x8e1e=['name','TEXT','long','select','parse','values','stringify','BOOLEAN','ENUM','voice','sequelize','lodash','VIRTUAL','getDataValue','STRING','setDataValue','alias'];(function(_0x55bce1,_0x6cecac){var _0x371921=function(_0x4bdec0){while(--_0x4bdec0){_0x55bce1['push'](_0x55bce1['shift']());}};_0x371921(++_0x6cecac);}(_0x8e1e,0x109));var _0xe8e1=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0x8e1e[_0x51020b];return _0x371e47;};'use strict';var Sequelize=require(_0xe8e1('0x0'));var _=require(_0xe8e1('0x1'));module['exports']={'name':{'type':Sequelize[_0xe8e1('0x2')],'get':function(_0x20a2e0){return this[_0xe8e1('0x3')]('alias');}},'alias':{'type':Sequelize[_0xe8e1('0x4')],'allowNull':![],'set':function(_0x41a85f){this[_0xe8e1('0x5')](_0xe8e1('0x6'),_0x41a85f?_0x41a85f:this[_0xe8e1('0x3')](_0xe8e1('0x7')));}},'type':{'type':Sequelize[_0xe8e1('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xe8e1('0x8')](_0xe8e1('0x9')),'get':function(){if(this[_0xe8e1('0x3')]('type')===_0xe8e1('0xa')){return JSON[_0xe8e1('0xb')](this['getDataValue'](_0xe8e1('0xc')));}else{return this['getDataValue'](_0xe8e1('0xc'));}},'set':function(_0x57c07d){if(Array['isArray'](_0x57c07d)){this[_0xe8e1('0x5')](_0xe8e1('0xc'),JSON[_0xe8e1('0xd')](_0x57c07d));}else{this['setDataValue'](_0xe8e1('0xc'),_0x57c07d);}}},'required':{'type':Sequelize[_0xe8e1('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0xe8e1('0xf')](_0xe8e1('0x10'))}};
\ No newline at end of file
index 7122959..3847516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66eb=['path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','destroy','error','name','map','rawAttributes','fieldName','type','key','differenceBy','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','CmCustomField','then','includeAll','include','findAll','rows','catch','show','params','length','options','find','body','create','sequelize','transaction','TEXT','text','Sequelize','INTEGER','switch','BOOLEAN','queryInterface','addColumn','format','rimraf','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x66eb,0x1b2));var _0xb66e=function(_0x48d6a3,_0x37c848){_0x48d6a3=_0x48d6a3-0x0;var _0x38bfa0=_0x66eb[_0x48d6a3];return _0x38bfa0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb66e('0x0'));var zipdir=require(_0xb66e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb66e('0x2'));var moment=require(_0xb66e('0x3'));var BPromise=require(_0xb66e('0x4'));var Mustache=require(_0xb66e('0x5'));var util=require('util');var path=require(_0xb66e('0x6'));var sox=require('sox');var csv=require(_0xb66e('0x7'));var ejs=require(_0xb66e('0x8'));var fs=require('fs');var fs_extra=require(_0xb66e('0x9'));var _=require(_0xb66e('0xa'));var squel=require('squel');var crypto=require(_0xb66e('0xb'));var jsforce=require(_0xb66e('0xc'));var deskjs=require(_0xb66e('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb66e('0xe'));var Papa=require(_0xb66e('0xf'));var Redis=require(_0xb66e('0x10'));var authService=require(_0xb66e('0x11'));var qs=require(_0xb66e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb66e('0x13'));var logger=require('../../config/logger')(_0xb66e('0x14'));var utils=require(_0xb66e('0x15'));var config=require(_0xb66e('0x16'));var licenseUtil=require(_0xb66e('0x17'));var db=require(_0xb66e('0x18'))['db'];function respondWithStatusCode(_0x411ffe,_0x2e3d20){_0x2e3d20=_0x2e3d20||0xcc;return function(_0x545f98){if(_0x545f98){return _0x411ffe[_0xb66e('0x19')](_0x2e3d20);}return _0x411ffe['status'](_0x2e3d20)[_0xb66e('0x1a')]();};}function respondWithResult(_0x190bf3,_0x4d6fb6){_0x4d6fb6=_0x4d6fb6||0xc8;return function(_0x3b7711){if(_0x3b7711){return _0x190bf3[_0xb66e('0x1b')](_0x4d6fb6)['json'](_0x3b7711);}};}function respondWithFilteredResult(_0x14966b,_0x42e677){return function(_0x5ead65){if(_0x5ead65){var _0x4b0f2e=typeof _0x42e677[_0xb66e('0x1c')]==='undefined'&&typeof _0x42e677[_0xb66e('0x1d')]===_0xb66e('0x1e');var _0x2b4514=_0x5ead65['count'];var _0x258201=_0x4b0f2e?0x0:_0x42e677[_0xb66e('0x1c')];var _0x55df4e=_0x4b0f2e?_0x5ead65[_0xb66e('0x1f')]:_0x42e677['offset']+_0x42e677[_0xb66e('0x1d')];var _0x394d75;if(_0x55df4e>=_0x2b4514){_0x55df4e=_0x2b4514;_0x394d75=0xc8;}else{_0x394d75=0xce;}_0x14966b['status'](_0x394d75);return _0x14966b[_0xb66e('0x20')](_0xb66e('0x21'),_0x258201+'-'+_0x55df4e+'/'+_0x2b4514)[_0xb66e('0x22')](_0x5ead65);}return null;};}function patchUpdates(_0x5291d4){return function(_0x46e3fe){try{jsonpatch[_0xb66e('0x23')](_0x46e3fe,_0x5291d4,!![]);}catch(_0x458fdd){return BPromise[_0xb66e('0x24')](_0x458fdd);}return _0x46e3fe['save']();};}function saveUpdates(_0x4b1daa,_0x1f0b2f){return function(_0xc603de){if(_0xc603de){return _0xc603de[_0xb66e('0x25')](_0x4b1daa)['then'](function(_0xce2ac9){return _0xce2ac9;});}return null;};}function removeEntity(_0x24d90e,_0x268d7d){return function(_0x293002){if(_0x293002){return _0x293002[_0xb66e('0x26')]()['then'](function(){_0x24d90e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4218f3,_0x54c85e){return function(_0x4abb88){if(!_0x4abb88){_0x4218f3['sendStatus'](0x194);}return _0x4abb88;};}function handleError(_0x215001,_0x51fe47){_0x51fe47=_0x51fe47||0x1f4;return function(_0x40aa70){logger[_0xb66e('0x27')](_0x40aa70['stack']);if(_0x40aa70[_0xb66e('0x28')]){delete _0x40aa70['name'];}_0x215001[_0xb66e('0x1b')](_0x51fe47)['send'](_0x40aa70);};}exports['index']=function(_0x2dbd75,_0xb9ae7f){var _0x2213d7={},_0x4cfabd={},_0x491403={'count':0x0,'rows':[]};var _0x4d2b92=_[_0xb66e('0x29')](db['CmCustomField'][_0xb66e('0x2a')],function(_0x48f449){return{'name':_0x48f449[_0xb66e('0x2b')],'type':_0x48f449[_0xb66e('0x2c')][_0xb66e('0x2d')]};});_0x4cfabd['model']=_[_0xb66e('0x2e')](_[_0xb66e('0x29')](_0x4d2b92,_0xb66e('0x28')),[_0xb66e('0x28')]);_0x4cfabd[_0xb66e('0x2f')]=_[_0xb66e('0x30')](_0x2dbd75[_0xb66e('0x2f')]);_0x4cfabd[_0xb66e('0x31')]=_[_0xb66e('0x32')](_0x4cfabd[_0xb66e('0x33')],_0x4cfabd[_0xb66e('0x2f')]);_0x2213d7[_0xb66e('0x34')]=_[_0xb66e('0x32')](_0x4cfabd[_0xb66e('0x33')],qs[_0xb66e('0x35')](_0x2dbd75['query']['fields']));_0x2213d7[_0xb66e('0x34')]=_0x2213d7[_0xb66e('0x34')]['length']?_0x2213d7[_0xb66e('0x34')]:_0x4cfabd['model'];if(!_0x2dbd75[_0xb66e('0x2f')][_0xb66e('0x36')](_0xb66e('0x37'))){_0x2213d7[_0xb66e('0x1d')]=qs[_0xb66e('0x1d')](_0x2dbd75[_0xb66e('0x2f')][_0xb66e('0x1d')]);_0x2213d7[_0xb66e('0x1c')]=qs[_0xb66e('0x1c')](_0x2dbd75[_0xb66e('0x2f')][_0xb66e('0x1c')]);}_0x2213d7[_0xb66e('0x38')]=qs[_0xb66e('0x39')](_0x2dbd75[_0xb66e('0x2f')][_0xb66e('0x39')]);_0x2213d7['where']=qs[_0xb66e('0x31')](_[_0xb66e('0x3a')](_0x2dbd75['query'],_0x4cfabd[_0xb66e('0x31')]),_0x4d2b92);if(_0x2dbd75[_0xb66e('0x2f')][_0xb66e('0x3b')]){_0x2213d7[_0xb66e('0x3c')]=_[_0xb66e('0x3d')](_0x2213d7[_0xb66e('0x3c')],{'$or':_[_0xb66e('0x29')](_0x4d2b92,function(_0x43c572){if(_0x43c572['type']!==_0xb66e('0x3e')){var _0x39ca16={};_0x39ca16[_0x43c572[_0xb66e('0x28')]]={'$like':'%'+_0x2dbd75[_0xb66e('0x2f')][_0xb66e('0x3b')]+'%'};return _0x39ca16;}})});}_0x2213d7=_[_0xb66e('0x3d')]({},_0x2213d7,_0x2dbd75['options']);var _0x49c568={'where':_0x2213d7['where']};return db[_0xb66e('0x3f')]['count'](_0x49c568)[_0xb66e('0x40')](function(_0x35a25d){_0x491403[_0xb66e('0x1f')]=_0x35a25d;if(_0x2dbd75['query'][_0xb66e('0x41')]){_0x2213d7[_0xb66e('0x42')]=[{'all':!![]}];}return db['CmCustomField'][_0xb66e('0x43')](_0x2213d7);})['then'](function(_0x116fc8){_0x491403[_0xb66e('0x44')]=_0x116fc8;return _0x491403;})['then'](respondWithFilteredResult(_0xb9ae7f,_0x2213d7))[_0xb66e('0x45')](handleError(_0xb9ae7f,null));};exports[_0xb66e('0x46')]=function(_0x2960b9,_0x345472){var _0x2db0e1={'raw':!![],'where':{'id':_0x2960b9[_0xb66e('0x47')]['id']}},_0x425a7e={};_0x425a7e[_0xb66e('0x33')]=_[_0xb66e('0x30')](db['CmCustomField'][_0xb66e('0x2a')]);_0x425a7e[_0xb66e('0x2f')]=_[_0xb66e('0x30')](_0x2960b9[_0xb66e('0x2f')]);_0x425a7e[_0xb66e('0x31')]=_['intersection'](_0x425a7e[_0xb66e('0x33')],_0x425a7e[_0xb66e('0x2f')]);_0x2db0e1[_0xb66e('0x34')]=_[_0xb66e('0x32')](_0x425a7e[_0xb66e('0x33')],qs[_0xb66e('0x35')](_0x2960b9[_0xb66e('0x2f')][_0xb66e('0x35')]));_0x2db0e1['attributes']=_0x2db0e1[_0xb66e('0x34')][_0xb66e('0x48')]?_0x2db0e1[_0xb66e('0x34')]:_0x425a7e['model'];if(_0x2960b9[_0xb66e('0x2f')]['includeAll']){_0x2db0e1[_0xb66e('0x42')]=[{'all':!![]}];}_0x2db0e1=_[_0xb66e('0x3d')]({},_0x2db0e1,_0x2960b9[_0xb66e('0x49')]);return db['CmCustomField'][_0xb66e('0x4a')](_0x2db0e1)[_0xb66e('0x40')](handleEntityNotFound(_0x345472,null))['then'](respondWithResult(_0x345472,null))[_0xb66e('0x45')](handleError(_0x345472,null));};exports[_0xb66e('0x25')]=function(_0x34cc90,_0x9eb868){if(_0x34cc90[_0xb66e('0x4b')]['id']){delete _0x34cc90[_0xb66e('0x4b')]['id'];}return db['CmCustomField'][_0xb66e('0x4a')]({'where':{'id':_0x34cc90[_0xb66e('0x47')]['id']}})['then'](handleEntityNotFound(_0x9eb868,null))[_0xb66e('0x40')](saveUpdates(_0x34cc90[_0xb66e('0x4b')],null))[_0xb66e('0x40')](respondWithResult(_0x9eb868,null))['catch'](handleError(_0x9eb868,null));};exports[_0xb66e('0x26')]=function(_0x7c57af,_0x34278b){return db['CmCustomField']['find']({'where':{'id':_0x7c57af[_0xb66e('0x47')]['id']}})['then'](handleEntityNotFound(_0x34278b,null))[_0xb66e('0x40')](removeEntity(_0x34278b,null))[_0xb66e('0x45')](handleError(_0x34278b,null));};exports[_0xb66e('0x4c')]=function(_0x2ba387,_0x1fa5b6){var _0x7c1bdd;return db[_0xb66e('0x4d')][_0xb66e('0x4e')](function(_0x142847){return db['CmCustomField'][_0xb66e('0x4c')](_0x2ba387[_0xb66e('0x4b')],{'transaction':_0x142847})[_0xb66e('0x40')](function(_0x428a62){_0x7c1bdd=_0x428a62;var _0x2336da={'type':db['Sequelize'][_0xb66e('0x4f')],'transaction':_0x142847};switch(_0x2ba387[_0xb66e('0x4b')][_0xb66e('0x2c')]){case _0xb66e('0x50'):_0x2336da[_0xb66e('0x2c')]=db[_0xb66e('0x51')][_0xb66e('0x4f')];break;case'number':_0x2336da[_0xb66e('0x2c')]=db[_0xb66e('0x51')][_0xb66e('0x52')];break;case _0xb66e('0x53'):_0x2336da['type']=db['Sequelize'][_0xb66e('0x54')];_0x2336da['defaultValue']=![];break;default:}return db[_0xb66e('0x4d')][_0xb66e('0x55')][_0xb66e('0x56')]('cm_contacts',util[_0xb66e('0x57')]('cf_%d',_0x7c1bdd['id']),_0x2336da);})[_0xb66e('0x40')](function(){return _0x7c1bdd;});})['then'](respondWithResult(_0x1fa5b6,0xc9))['catch'](handleError(_0x1fa5b6,null));};
\ No newline at end of file
+var _0x3ccb=['body','params','sequelize','transaction','create','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','addColumn','cm_contacts','format','cf_%d','eml-format','request-promise','moment','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','CmCustomField','rawAttributes','fieldName','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','nolimit','limit','order','sort','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','includeAll','find'];(function(_0x46e387,_0x3a0d28){var _0x54a2f7=function(_0x264f15){while(--_0x264f15){_0x46e387['push'](_0x46e387['shift']());}};_0x54a2f7(++_0x3a0d28);}(_0x3ccb,0x1ba));var _0xb3cc=function(_0x1a39f0,_0x5dfde5){_0x1a39f0=_0x1a39f0-0x0;var _0x451055=_0x3ccb[_0x1a39f0];return _0x451055;};'use strict';var emlformat=require(_0xb3cc('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb3cc('0x1'));var moment=require(_0xb3cc('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xb3cc('0x3'));var sox=require('sox');var csv=require(_0xb3cc('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb3cc('0x5'));var _=require(_0xb3cc('0x6'));var squel=require(_0xb3cc('0x7'));var crypto=require(_0xb3cc('0x8'));var jsforce=require(_0xb3cc('0x9'));var deskjs=require(_0xb3cc('0xa'));var toCsv=require('to-csv');var querystring=require(_0xb3cc('0xb'));var Papa=require(_0xb3cc('0xc'));var Redis=require('ioredis');var authService=require(_0xb3cc('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xb3cc('0xe'));var hardwareService=require(_0xb3cc('0xf'));var logger=require('../../config/logger')(_0xb3cc('0x10'));var utils=require(_0xb3cc('0x11'));var config=require(_0xb3cc('0x12'));var licenseUtil=require(_0xb3cc('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45366d,_0x4bd909){_0x4bd909=_0x4bd909||0xcc;return function(_0x3cd24d){if(_0x3cd24d){return _0x45366d[_0xb3cc('0x14')](_0x4bd909);}return _0x45366d[_0xb3cc('0x15')](_0x4bd909)[_0xb3cc('0x16')]();};}function respondWithResult(_0x5325b2,_0x436613){_0x436613=_0x436613||0xc8;return function(_0xd6666){if(_0xd6666){return _0x5325b2[_0xb3cc('0x15')](_0x436613)[_0xb3cc('0x17')](_0xd6666);}};}function respondWithFilteredResult(_0x242d8b,_0x270baa){return function(_0x23088e){if(_0x23088e){var _0xd930a6=typeof _0x270baa['offset']===_0xb3cc('0x18')&&typeof _0x270baa['limit']==='undefined';var _0x12c95a=_0x23088e[_0xb3cc('0x19')];var _0x44b2f9=_0xd930a6?0x0:_0x270baa['offset'];var _0x59f09b=_0xd930a6?_0x23088e['count']:_0x270baa[_0xb3cc('0x1a')]+_0x270baa['limit'];var _0x1f5761;if(_0x59f09b>=_0x12c95a){_0x59f09b=_0x12c95a;_0x1f5761=0xc8;}else{_0x1f5761=0xce;}_0x242d8b[_0xb3cc('0x15')](_0x1f5761);return _0x242d8b['set'](_0xb3cc('0x1b'),_0x44b2f9+'-'+_0x59f09b+'/'+_0x12c95a)['json'](_0x23088e);}return null;};}function patchUpdates(_0x5d21c0){return function(_0x32cd61){try{jsonpatch['apply'](_0x32cd61,_0x5d21c0,!![]);}catch(_0x1cebb3){return BPromise[_0xb3cc('0x1c')](_0x1cebb3);}return _0x32cd61[_0xb3cc('0x1d')]();};}function saveUpdates(_0x20057a,_0x568c0d){return function(_0x3322b3){if(_0x3322b3){return _0x3322b3[_0xb3cc('0x1e')](_0x20057a)[_0xb3cc('0x1f')](function(_0xbf3a8d){return _0xbf3a8d;});}return null;};}function removeEntity(_0x2f7c8c,_0x1f0ba9){return function(_0x22898d){if(_0x22898d){return _0x22898d[_0xb3cc('0x20')]()['then'](function(){_0x2f7c8c[_0xb3cc('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d3117,_0x2b9147){return function(_0xa54b16){if(!_0xa54b16){_0x3d3117[_0xb3cc('0x14')](0x194);}return _0xa54b16;};}function handleError(_0x206667,_0x5a2a34){_0x5a2a34=_0x5a2a34||0x1f4;return function(_0x5122bb){logger[_0xb3cc('0x21')](_0x5122bb[_0xb3cc('0x22')]);if(_0x5122bb[_0xb3cc('0x23')]){delete _0x5122bb[_0xb3cc('0x23')];}_0x206667[_0xb3cc('0x15')](_0x5a2a34)[_0xb3cc('0x24')](_0x5122bb);};}exports[_0xb3cc('0x25')]=function(_0x1a1e96,_0x63f733){var _0x385c8a={},_0x4ce5ba={},_0x562b4b={'count':0x0,'rows':[]};var _0x1ee8c1=_[_0xb3cc('0x26')](db[_0xb3cc('0x27')][_0xb3cc('0x28')],function(_0x4a9e4d){return{'name':_0x4a9e4d[_0xb3cc('0x29')],'type':_0x4a9e4d[_0xb3cc('0x2a')][_0xb3cc('0x2b')]};});_0x4ce5ba[_0xb3cc('0x2c')]=_[_0xb3cc('0x2d')](_['map'](_0x1ee8c1,'name'),[_0xb3cc('0x23')]);_0x4ce5ba[_0xb3cc('0x2e')]=_[_0xb3cc('0x2f')](_0x1a1e96['query']);_0x4ce5ba[_0xb3cc('0x30')]=_['intersection'](_0x4ce5ba[_0xb3cc('0x2c')],_0x4ce5ba['query']);_0x385c8a[_0xb3cc('0x31')]=_[_0xb3cc('0x32')](_0x4ce5ba[_0xb3cc('0x2c')],qs['fields'](_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x33')]));_0x385c8a[_0xb3cc('0x31')]=_0x385c8a[_0xb3cc('0x31')]['length']?_0x385c8a[_0xb3cc('0x31')]:_0x4ce5ba['model'];if(!_0x1a1e96[_0xb3cc('0x2e')]['hasOwnProperty'](_0xb3cc('0x34'))){_0x385c8a[_0xb3cc('0x35')]=qs[_0xb3cc('0x35')](_0x1a1e96[_0xb3cc('0x2e')]['limit']);_0x385c8a[_0xb3cc('0x1a')]=qs['offset'](_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x1a')]);}_0x385c8a[_0xb3cc('0x36')]=qs['sort'](_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x37')]);_0x385c8a['where']=qs[_0xb3cc('0x30')](_[_0xb3cc('0x38')](_0x1a1e96[_0xb3cc('0x2e')],_0x4ce5ba['filters']),_0x1ee8c1);if(_0x1a1e96[_0xb3cc('0x2e')][_0xb3cc('0x39')]){_0x385c8a[_0xb3cc('0x3a')]=_[_0xb3cc('0x3b')](_0x385c8a[_0xb3cc('0x3a')],{'$or':_[_0xb3cc('0x26')](_0x1ee8c1,function(_0x5af88a){if(_0x5af88a['type']!==_0xb3cc('0x3c')){var _0x4c643b={};_0x4c643b[_0x5af88a['name']]={'$like':'%'+_0x1a1e96['query']['filter']+'%'};return _0x4c643b;}})});}_0x385c8a=_[_0xb3cc('0x3b')]({},_0x385c8a,_0x1a1e96['options']);var _0x18c430={'where':_0x385c8a[_0xb3cc('0x3a')]};return db[_0xb3cc('0x27')][_0xb3cc('0x19')](_0x18c430)['then'](function(_0x3f4a24){_0x562b4b[_0xb3cc('0x19')]=_0x3f4a24;if(_0x1a1e96[_0xb3cc('0x2e')]['includeAll']){_0x385c8a[_0xb3cc('0x3d')]=[{'all':!![]}];}return db[_0xb3cc('0x27')][_0xb3cc('0x3e')](_0x385c8a);})[_0xb3cc('0x1f')](function(_0xf65025){_0x562b4b[_0xb3cc('0x3f')]=_0xf65025;return _0x562b4b;})[_0xb3cc('0x1f')](respondWithFilteredResult(_0x63f733,_0x385c8a))[_0xb3cc('0x40')](handleError(_0x63f733,null));};exports[_0xb3cc('0x41')]=function(_0x122895,_0x5f09e7){var _0x52e585={'raw':!![],'where':{'id':_0x122895['params']['id']}},_0x297496={};_0x297496['model']=_[_0xb3cc('0x2f')](db['CmCustomField'][_0xb3cc('0x28')]);_0x297496['query']=_[_0xb3cc('0x2f')](_0x122895['query']);_0x297496[_0xb3cc('0x30')]=_['intersection'](_0x297496[_0xb3cc('0x2c')],_0x297496['query']);_0x52e585[_0xb3cc('0x31')]=_[_0xb3cc('0x32')](_0x297496['model'],qs[_0xb3cc('0x33')](_0x122895[_0xb3cc('0x2e')][_0xb3cc('0x33')]));_0x52e585[_0xb3cc('0x31')]=_0x52e585[_0xb3cc('0x31')]['length']?_0x52e585[_0xb3cc('0x31')]:_0x297496[_0xb3cc('0x2c')];if(_0x122895[_0xb3cc('0x2e')][_0xb3cc('0x42')]){_0x52e585[_0xb3cc('0x3d')]=[{'all':!![]}];}_0x52e585=_['merge']({},_0x52e585,_0x122895['options']);return db['CmCustomField'][_0xb3cc('0x43')](_0x52e585)[_0xb3cc('0x1f')](handleEntityNotFound(_0x5f09e7,null))[_0xb3cc('0x1f')](respondWithResult(_0x5f09e7,null))[_0xb3cc('0x40')](handleError(_0x5f09e7,null));};exports['update']=function(_0x21577b,_0x1aaa0e){if(_0x21577b[_0xb3cc('0x44')]['id']){delete _0x21577b[_0xb3cc('0x44')]['id'];}return db[_0xb3cc('0x27')]['find']({'where':{'id':_0x21577b['params']['id']}})[_0xb3cc('0x1f')](handleEntityNotFound(_0x1aaa0e,null))['then'](saveUpdates(_0x21577b[_0xb3cc('0x44')],null))[_0xb3cc('0x1f')](respondWithResult(_0x1aaa0e,null))['catch'](handleError(_0x1aaa0e,null));};exports[_0xb3cc('0x20')]=function(_0x34ba51,_0x1e5ae1){return db[_0xb3cc('0x27')][_0xb3cc('0x43')]({'where':{'id':_0x34ba51[_0xb3cc('0x45')]['id']}})[_0xb3cc('0x1f')](handleEntityNotFound(_0x1e5ae1,null))[_0xb3cc('0x1f')](removeEntity(_0x1e5ae1,null))['catch'](handleError(_0x1e5ae1,null));};exports['create']=function(_0x5e6811,_0x49c001){var _0x2074f5;return db[_0xb3cc('0x46')][_0xb3cc('0x47')](function(_0x59a5ca){return db[_0xb3cc('0x27')][_0xb3cc('0x48')](_0x5e6811[_0xb3cc('0x44')],{'transaction':_0x59a5ca})[_0xb3cc('0x1f')](function(_0x49fe6f){_0x2074f5=_0x49fe6f;var _0x5f7e57={'type':db[_0xb3cc('0x49')][_0xb3cc('0x4a')],'transaction':_0x59a5ca};switch(_0x5e6811[_0xb3cc('0x44')][_0xb3cc('0x2a')]){case _0xb3cc('0x4b'):_0x5f7e57['type']=db['Sequelize']['TEXT'];break;case _0xb3cc('0x4c'):_0x5f7e57[_0xb3cc('0x2a')]=db[_0xb3cc('0x49')][_0xb3cc('0x4d')];break;case _0xb3cc('0x4e'):_0x5f7e57[_0xb3cc('0x2a')]=db[_0xb3cc('0x49')][_0xb3cc('0x4f')];_0x5f7e57[_0xb3cc('0x50')]=![];break;default:}return db[_0xb3cc('0x46')]['queryInterface'][_0xb3cc('0x51')](_0xb3cc('0x52'),util[_0xb3cc('0x53')](_0xb3cc('0x54'),_0x2074f5['id']),_0x5f7e57);})[_0xb3cc('0x1f')](function(){return _0x2074f5;});})['then'](respondWithResult(_0x49c001,0xc9))[_0xb3cc('0x40')](handleError(_0x49c001,null));};
\ No newline at end of file
index df4921d..205a253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b24=['CmCustomField','cm_custom_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./cmCustomField.attributes','exports','define'];(function(_0x45eac8,_0x368705){var _0x1564d8=function(_0x4d5bed){while(--_0x4d5bed){_0x45eac8['push'](_0x45eac8['shift']());}};_0x1564d8(++_0x368705);}(_0x9b24,0x195));var _0x49b2=function(_0x118aa5,_0x3e5626){_0x118aa5=_0x118aa5-0x0;var _0x5f0a27=_0x9b24[_0x118aa5];return _0x5f0a27;};'use strict';var _=require(_0x49b2('0x0'));var util=require(_0x49b2('0x1'));var logger=require(_0x49b2('0x2'))(_0x49b2('0x3'));var moment=require(_0x49b2('0x4'));var BPromise=require(_0x49b2('0x5'));var rp=require(_0x49b2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x49b2('0x7'));var attributes=require(_0x49b2('0x8'));module[_0x49b2('0x9')]=function(_0x478a9f,_0x57b9f5){return _0x478a9f[_0x49b2('0xa')](_0x49b2('0xb'),attributes,{'tableName':_0x49b2('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1a1e=['api','bluebird','request-promise','path','rimraf','./cmCustomField.attributes','exports','define','CmCustomField','cm_custom_fields','lodash'];(function(_0x367bc1,_0x482bc7){var _0x3e1cef=function(_0x5e7076){while(--_0x5e7076){_0x367bc1['push'](_0x367bc1['shift']());}};_0x3e1cef(++_0x482bc7);}(_0x1a1e,0x175));var _0xe1a1=function(_0x1e8c2b,_0x159984){_0x1e8c2b=_0x1e8c2b-0x0;var _0x297044=_0x1a1e[_0x1e8c2b];return _0x297044;};'use strict';var _=require(_0xe1a1('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe1a1('0x1'));var moment=require('moment');var BPromise=require(_0xe1a1('0x2'));var rp=require(_0xe1a1('0x3'));var fs=require('fs');var path=require(_0xe1a1('0x4'));var rimraf=require(_0xe1a1('0x5'));var config=require('../../config/environment');var attributes=require(_0xe1a1('0x6'));module[_0xe1a1('0x7')]=function(_0x130f63,_0x2a798d){return _0x130f63[_0xe1a1('0x8')](_0xe1a1('0x9'),attributes,{'tableName':_0xe1a1('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6cc5213..651eddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96c0=['http','request','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x874cf1,_0x2a4954){var _0x233579=function(_0xa6e939){while(--_0xa6e939){_0x874cf1['push'](_0x874cf1['shift']());}};_0x233579(++_0x2a4954);}(_0x96c0,0x140));var _0x096c=function(_0x4e668f,_0x41fa68){_0x4e668f=_0x4e668f-0x0;var _0x139a90=_0x96c0[_0x4e668f];return _0x139a90;};'use strict';var _=require('lodash');var util=require(_0x096c('0x0'));var moment=require(_0x096c('0x1'));var BPromise=require(_0x096c('0x2'));var rs=require(_0x096c('0x3'));var fs=require('fs');var Redis=require(_0x096c('0x4'));var db=require(_0x096c('0x5'))['db'];var utils=require(_0x096c('0x6'));var logger=require(_0x096c('0x7'))(_0x096c('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x096c('0x9')][_0x096c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x6e025a,_0x1ec501,_0x5ca5db){return new BPromise(function(_0x36fea4,_0x3b9aa1){return client[_0x096c('0xb')](_0x6e025a,_0x5ca5db)['then'](function(_0x4446ba){logger[_0x096c('0xc')](_0x096c('0xd'),_0x1ec501,_0x096c('0xe'));logger[_0x096c('0xf')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x1ec501,_0x096c('0xe'),JSON[_0x096c('0x10')](_0x4446ba));if(_0x4446ba[_0x096c('0x11')]){if(_0x4446ba[_0x096c('0x11')][_0x096c('0x12')]===0x1f4){logger[_0x096c('0x11')](_0x096c('0xd'),_0x1ec501,_0x4446ba[_0x096c('0x11')][_0x096c('0x13')]);return _0x3b9aa1(_0x4446ba[_0x096c('0x11')][_0x096c('0x13')]);}logger[_0x096c('0x11')](_0x096c('0xd'),_0x1ec501,_0x4446ba[_0x096c('0x11')][_0x096c('0x13')]);return _0x36fea4(_0x4446ba[_0x096c('0x11')][_0x096c('0x13')]);}else{logger[_0x096c('0xc')](_0x096c('0xd'),_0x1ec501,_0x096c('0xe'));_0x36fea4(_0x4446ba[_0x096c('0x14')][_0x096c('0x13')]);}})[_0x096c('0x15')](function(_0x338407){logger[_0x096c('0x11')](_0x096c('0xd'),_0x1ec501,_0x338407);_0x3b9aa1(_0x338407);});});}
\ No newline at end of file
+var _0xa1d1=['client','http','request','then','info','CmCustomField,\x20%s,\x20%s','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2defee,_0x2814ea){var _0x167f12=function(_0x4881e8){while(--_0x4881e8){_0x2defee['push'](_0x2defee['shift']());}};_0x167f12(++_0x2814ea);}(_0xa1d1,0x115));var _0x1a1d=function(_0x28538b,_0x24a2d0){_0x28538b=_0x28538b-0x0;var _0x2976f6=_0xa1d1[_0x28538b];return _0x2976f6;};'use strict';var _=require(_0x1a1d('0x0'));var util=require(_0x1a1d('0x1'));var moment=require(_0x1a1d('0x2'));var BPromise=require(_0x1a1d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a1d('0x4'))['db'];var utils=require(_0x1a1d('0x5'));var logger=require(_0x1a1d('0x6'))(_0x1a1d('0x7'));var config=require(_0x1a1d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1a1d('0x9')][_0x1a1d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b6ce1,_0x42df2d,_0x367bd4){return new BPromise(function(_0x2b33ce,_0x3953b3){return client[_0x1a1d('0xb')](_0x2b6ce1,_0x367bd4)[_0x1a1d('0xc')](function(_0x16eba4){logger[_0x1a1d('0xd')](_0x1a1d('0xe'),_0x42df2d,'request\x20sent');logger['debug'](_0x1a1d('0xf'),_0x42df2d,'request\x20sent',JSON[_0x1a1d('0x10')](_0x16eba4));if(_0x16eba4[_0x1a1d('0x11')]){if(_0x16eba4[_0x1a1d('0x11')][_0x1a1d('0x12')]===0x1f4){logger[_0x1a1d('0x11')](_0x1a1d('0xe'),_0x42df2d,_0x16eba4[_0x1a1d('0x11')]['message']);return _0x3953b3(_0x16eba4['error']['message']);}logger[_0x1a1d('0x11')](_0x1a1d('0xe'),_0x42df2d,_0x16eba4[_0x1a1d('0x11')][_0x1a1d('0x13')]);return _0x2b33ce(_0x16eba4[_0x1a1d('0x11')]['message']);}else{logger[_0x1a1d('0xd')](_0x1a1d('0xe'),_0x42df2d,_0x1a1d('0x14'));_0x2b33ce(_0x16eba4[_0x1a1d('0x15')][_0x1a1d('0x13')]);}})['catch'](function(_0x219dc7){logger[_0x1a1d('0x11')]('CmCustomField,\x20%s,\x20%s',_0x42df2d,_0x219dc7);_0x3953b3(_0x219dc7);});});}
\ No newline at end of file
index 922ddfa..c58eb72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e11=['exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','update','destroy'];(function(_0x4c7156,_0xdbfbad){var _0xb36180=function(_0x3d23da){while(--_0x3d23da){_0x4c7156['push'](_0x4c7156['shift']());}};_0xb36180(++_0xdbfbad);}(_0x5e11,0x1c3));var _0x15e1=function(_0x47fd36,_0x41535d){_0x47fd36=_0x47fd36-0x0;var _0x21a0fc=_0x5e11[_0x47fd36];return _0x21a0fc;};'use strict';var multer=require(_0x15e1('0x0'));var util=require('util');var path=require(_0x15e1('0x1'));var timeout=require(_0x15e1('0x2'));var express=require(_0x15e1('0x3'));var router=express[_0x15e1('0x4')]();var fs_extra=require(_0x15e1('0x5'));var auth=require(_0x15e1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x15e1('0x7'));var controller=require('./cmCustomField.controller');router[_0x15e1('0x8')]('/',auth[_0x15e1('0x9')](),controller[_0x15e1('0xa')]);router[_0x15e1('0x8')](_0x15e1('0xb'),auth['isAuthenticated'](),controller[_0x15e1('0xc')]);router[_0x15e1('0xd')]('/',auth[_0x15e1('0x9')](),controller[_0x15e1('0xe')]);router['put'](_0x15e1('0xb'),auth[_0x15e1('0x9')](),controller[_0x15e1('0xf')]);router['delete'](_0x15e1('0xb'),auth[_0x15e1('0x9')](),controller[_0x15e1('0x10')]);module[_0x15e1('0x11')]=router;
\ No newline at end of file
+var _0xef27=['index','/:id','show','post','create','put','update','destroy','multer','util','path','connect-timeout','Router','../../config/environment','./cmCustomField.controller','get','isAuthenticated'];(function(_0xd9cb34,_0xba2f69){var _0x2e5fc3=function(_0x47c6c5){while(--_0x47c6c5){_0xd9cb34['push'](_0xd9cb34['shift']());}};_0x2e5fc3(++_0xba2f69);}(_0xef27,0x1c2));var _0x7ef2=function(_0x56ceb8,_0x3c8f87){_0x56ceb8=_0x56ceb8-0x0;var _0x2d0e13=_0xef27[_0x56ceb8];return _0x2d0e13;};'use strict';var multer=require(_0x7ef2('0x0'));var util=require(_0x7ef2('0x1'));var path=require(_0x7ef2('0x2'));var timeout=require(_0x7ef2('0x3'));var express=require('express');var router=express[_0x7ef2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7ef2('0x5'));var controller=require(_0x7ef2('0x6'));router[_0x7ef2('0x7')]('/',auth[_0x7ef2('0x8')](),controller[_0x7ef2('0x9')]);router[_0x7ef2('0x7')](_0x7ef2('0xa'),auth[_0x7ef2('0x8')](),controller[_0x7ef2('0xb')]);router[_0x7ef2('0xc')]('/',auth[_0x7ef2('0x8')](),controller[_0x7ef2('0xd')]);router[_0x7ef2('0xe')](_0x7ef2('0xa'),auth[_0x7ef2('0x8')](),controller[_0x7ef2('0xf')]);router['delete'](_0x7ef2('0xa'),auth['isAuthenticated'](),controller[_0x7ef2('0x10')]);module['exports']=router;
\ No newline at end of file
index 821ca54..0c1090b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a9=['UNSIGNED','contactListQueue','moment','exports','STRING','BOOLEAN','format','INTEGER','DATE'];(function(_0x2d6b1c,_0x595f23){var _0x15a215=function(_0x952ebe){while(--_0x952ebe){_0x2d6b1c['push'](_0x2d6b1c['shift']());}};_0x15a215(++_0x595f23);}(_0x20a9,0xd1));var _0x920a=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0x20a9[_0x3c2a69];return _0x596bc8;};'use strict';var moment=require(_0x920a('0x0'));var Sequelize=require('sequelize');module[_0x920a('0x1')]={'phone':{'type':Sequelize[_0x920a('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x920a('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x920a('0x4')]('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x920a('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x920a('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x920a('0x6')]},'priority':{'type':Sequelize[_0x920a('0x5')](0x2)[_0x920a('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x920a('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x920a('0x5')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x920a('0x5')],'unique':_0x920a('0x8')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0x920a('0x5')],'unique':_0x920a('0x8')},'CampaignId':{'type':Sequelize[_0x920a('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x920a('0x5')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb274=['contactListQueue','moment','sequelize','exports','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','UNSIGNED'];(function(_0x8a22fd,_0x3f6c4e){var _0x3e12fe=function(_0x23f52e){while(--_0x23f52e){_0x8a22fd['push'](_0x8a22fd['shift']());}};_0x3e12fe(++_0x3f6c4e);}(_0xb274,0xab));var _0x4b27=function(_0x44f4fe,_0x2a472a){_0x44f4fe=_0x44f4fe-0x0;var _0x44dc34=_0xb274[_0x44f4fe];return _0x44dc34;};'use strict';var moment=require(_0x4b27('0x0'));var Sequelize=require(_0x4b27('0x1'));module[_0x4b27('0x2')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x4b27('0x3')],'defaultValue':moment()[_0x4b27('0x4')](_0x4b27('0x5'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x4b27('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x4b27('0x3')]},'priority':{'type':Sequelize[_0x4b27('0x6')](0x2)[_0x4b27('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x4b27('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x4b27('0x6')],'unique':_0x4b27('0x9')},'ListId':{'type':Sequelize[_0x4b27('0x6')],'unique':_0x4b27('0x9')},'UserId':{'type':Sequelize[_0x4b27('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x4b27('0x6')],'unique':_0x4b27('0x9')},'CampaignId':{'type':Sequelize['INTEGER']},'countnosuchnumberretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x4b27('0x6')],'defaultValue':0x0}};
\ No newline at end of file
index 1d37591..10d2d69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdca=['prev','hopperIds','priority','ASC','scheduledAt','dialOrderByScheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','sequelize','findOne','scheduledat','LOCK','Contact','CmCompany','Company','Queue','dialActive','update','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','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','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','save','then','destroy','error','stack','name','index','map','CmHopper','rawAttributes','type','key','model','keys','filters','intersection','query','$and','$or','$gt','$gte','$lt','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notILike','$contained','$any','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','params','find','catch','create','body','describe','VoiceQueueId','VoiceQueue','Campaign','merge','omit','dataValues','updatedAt','campaign','UserId','user','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmContact','getVoiceQueues','preview','direction'];(function(_0x5609a7,_0x464eeb){var _0x30449e=function(_0x2b78f3){while(--_0x2b78f3){_0x5609a7['push'](_0x5609a7['shift']());}};_0x30449e(++_0x464eeb);}(_0xfdca,0xa8));var _0xafdc=function(_0x4fbba1,_0x1f75e5){_0x4fbba1=_0x4fbba1-0x0;var _0x4a3c41=_0xfdca[_0x4fbba1];return _0x4a3c41;};'use strict';var emlformat=require(_0xafdc('0x0'));var rimraf=require(_0xafdc('0x1'));var zipdir=require(_0xafdc('0x2'));var jsonpatch=require(_0xafdc('0x3'));var rp=require(_0xafdc('0x4'));var moment=require(_0xafdc('0x5'));var BPromise=require(_0xafdc('0x6'));var Mustache=require(_0xafdc('0x7'));var util=require(_0xafdc('0x8'));var path=require(_0xafdc('0x9'));var sox=require(_0xafdc('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xafdc('0xb'));var _=require('lodash');var squel=require(_0xafdc('0xc'));var crypto=require(_0xafdc('0xd'));var jsforce=require(_0xafdc('0xe'));var deskjs=require(_0xafdc('0xf'));var toCsv=require(_0xafdc('0x10'));var querystring=require(_0xafdc('0x11'));var Papa=require(_0xafdc('0x12'));var Redis=require(_0xafdc('0x13'));var authService=require(_0xafdc('0x14'));var qs=require(_0xafdc('0x15'));var as=require(_0xafdc('0x16'));var hardwareService=require(_0xafdc('0x17'));var logger=require(_0xafdc('0x18'))(_0xafdc('0x19'));var utils=require(_0xafdc('0x1a'));var config=require(_0xafdc('0x1b'));var licenseUtil=require(_0xafdc('0x1c'));var db=require(_0xafdc('0x1d'))['db'];function respondWithStatusCode(_0x106a2f,_0x5169b4){_0x5169b4=_0x5169b4||0xcc;return function(_0x54b5e1){if(_0x54b5e1){return _0x106a2f[_0xafdc('0x1e')](_0x5169b4);}return _0x106a2f[_0xafdc('0x1f')](_0x5169b4)[_0xafdc('0x20')]();};}function respondWithResult(_0xcc2c8,_0xa0f6fe){_0xa0f6fe=_0xa0f6fe||0xc8;return function(_0x1255e2){if(_0x1255e2){return _0xcc2c8['status'](_0xa0f6fe)[_0xafdc('0x21')](_0x1255e2);}};}function respondWithFilteredResult(_0x267003,_0x3fab47){return function(_0x5a4286){if(_0x5a4286){var _0x315dc9=typeof _0x3fab47[_0xafdc('0x22')]==='undefined'&&typeof _0x3fab47[_0xafdc('0x23')]===_0xafdc('0x24');var _0x48175d=_0x5a4286[_0xafdc('0x25')];var _0x54017d=_0x315dc9?0x0:_0x3fab47[_0xafdc('0x22')];var _0x16dc52=_0x315dc9?_0x5a4286[_0xafdc('0x25')]:_0x3fab47['offset']+_0x3fab47['limit'];var _0x361adb;if(_0x16dc52>=_0x48175d){_0x16dc52=_0x48175d;_0x361adb=0xc8;}else{_0x361adb=0xce;}_0x267003[_0xafdc('0x1f')](_0x361adb);return _0x267003['set'](_0xafdc('0x26'),_0x54017d+'-'+_0x16dc52+'/'+_0x48175d)[_0xafdc('0x21')](_0x5a4286);}return null;};}function patchUpdates(_0x2228ff){return function(_0x1052f5){try{jsonpatch['apply'](_0x1052f5,_0x2228ff,!![]);}catch(_0x2d9f61){return BPromise[_0xafdc('0x27')](_0x2d9f61);}return _0x1052f5[_0xafdc('0x28')]();};}function saveUpdates(_0x20cc37,_0x27f535){return function(_0x1540cc){if(_0x1540cc){return _0x1540cc['update'](_0x20cc37)[_0xafdc('0x29')](function(_0xbc02e9){return _0xbc02e9;});}return null;};}function removeEntity(_0x5948ac,_0x21ca82){return function(_0x3ebb48){if(_0x3ebb48){return _0x3ebb48[_0xafdc('0x2a')]()[_0xafdc('0x29')](function(){_0x5948ac[_0xafdc('0x1f')](0xcc)[_0xafdc('0x20')]();});}};}function handleEntityNotFound(_0x21f53f,_0x423603){return function(_0x5103f1){if(!_0x5103f1){_0x21f53f[_0xafdc('0x1e')](0x194);}return _0x5103f1;};}function handleError(_0x3f6caf,_0x2afa9f){_0x2afa9f=_0x2afa9f||0x1f4;return function(_0x2a82d9){logger[_0xafdc('0x2b')](_0x2a82d9[_0xafdc('0x2c')]);if(_0x2a82d9['name']){delete _0x2a82d9[_0xafdc('0x2d')];}_0x3f6caf[_0xafdc('0x1f')](_0x2afa9f)['send'](_0x2a82d9);};}exports[_0xafdc('0x2e')]=function(_0x39ffd4,_0x456fdc){var _0x5ce34e={},_0x4716d7={},_0x123ea4={'count':0x0,'rows':[]};var _0x37e568=_[_0xafdc('0x2f')](db[_0xafdc('0x30')][_0xafdc('0x31')],function(_0x3e158c){return{'name':_0x3e158c['fieldName'],'type':_0x3e158c[_0xafdc('0x32')][_0xafdc('0x33')]};});_0x4716d7[_0xafdc('0x34')]=_[_0xafdc('0x2f')](_0x37e568,'name');_0x4716d7['query']=_[_0xafdc('0x35')](_0x39ffd4['query']);_0x4716d7[_0xafdc('0x36')]=_[_0xafdc('0x37')](_0x4716d7[_0xafdc('0x34')],_0x4716d7[_0xafdc('0x38')]);_0x4716d7['filters']=_['concat'](_0x4716d7['filters'],[_0xafdc('0x39'),_0xafdc('0x3a'),_0xafdc('0x3b'),_0xafdc('0x3c'),_0xafdc('0x3d'),'$lte',_0xafdc('0x3e'),_0xafdc('0x3f'),_0xafdc('0x40'),_0xafdc('0x41'),_0xafdc('0x42'),_0xafdc('0x43'),_0xafdc('0x44'),_0xafdc('0x45'),'$notLike','$iLike',_0xafdc('0x46'),_0xafdc('0x45'),'$overlap','$contains',_0xafdc('0x47'),_0xafdc('0x48')]);_0x5ce34e[_0xafdc('0x49')]=_[_0xafdc('0x37')](_0x4716d7[_0xafdc('0x34')],qs[_0xafdc('0x4a')](_0x39ffd4['query'][_0xafdc('0x4a')]));_0x5ce34e[_0xafdc('0x49')]=_0x5ce34e[_0xafdc('0x49')][_0xafdc('0x4b')]?_0x5ce34e[_0xafdc('0x49')]:_0x4716d7[_0xafdc('0x34')];if(!_0x39ffd4[_0xafdc('0x38')]['hasOwnProperty'](_0xafdc('0x4c'))){_0x5ce34e[_0xafdc('0x23')]=qs[_0xafdc('0x23')](_0x39ffd4[_0xafdc('0x38')][_0xafdc('0x23')]);_0x5ce34e['offset']=qs[_0xafdc('0x22')](_0x39ffd4[_0xafdc('0x38')][_0xafdc('0x22')]);}_0x5ce34e[_0xafdc('0x4d')]=qs['sort'](_0x39ffd4[_0xafdc('0x38')][_0xafdc('0x4e')]);_0x5ce34e[_0xafdc('0x4f')]=qs[_0xafdc('0x36')](_[_0xafdc('0x50')](_0x39ffd4[_0xafdc('0x38')],_0x4716d7[_0xafdc('0x36')]),_0x37e568);if(_0x39ffd4['query'][_0xafdc('0x51')]){_0x5ce34e[_0xafdc('0x4f')]=_['merge'](_0x5ce34e[_0xafdc('0x4f')],{'$or':_[_0xafdc('0x2f')](_0x37e568,function(_0x17735d){if(_0x17735d[_0xafdc('0x32')]!==_0xafdc('0x52')){var _0x54122f={};_0x54122f[_0x17735d[_0xafdc('0x2d')]]={'$like':'%'+_0x39ffd4['query']['filter']+'%'};return _0x54122f;}})});}_0x5ce34e=_['merge']({},_0x5ce34e,_0x39ffd4[_0xafdc('0x53')]);var _0x287a40={'where':_0x5ce34e[_0xafdc('0x4f')]};return db[_0xafdc('0x30')][_0xafdc('0x25')](_0x287a40)['then'](function(_0x3e77c2){_0x123ea4['count']=_0x3e77c2;if(_0x39ffd4[_0xafdc('0x38')][_0xafdc('0x54')]){_0x5ce34e[_0xafdc('0x55')]=[{'all':!![]}];}return db['CmHopper'][_0xafdc('0x56')](_0x5ce34e);})[_0xafdc('0x29')](function(_0x439ab2){_0x123ea4['rows']=_0x439ab2;return _0x123ea4;})[_0xafdc('0x29')](respondWithFilteredResult(_0x456fdc,_0x5ce34e))['catch'](handleError(_0x456fdc,null));};exports['show']=function(_0x2401a7,_0x2caf2c){var _0x55e6c6={'raw':!![],'where':{'id':_0x2401a7[_0xafdc('0x57')]['id']}},_0x2c8ac2={};_0x2c8ac2[_0xafdc('0x34')]=_[_0xafdc('0x35')](db[_0xafdc('0x30')]['rawAttributes']);_0x2c8ac2[_0xafdc('0x38')]=_['keys'](_0x2401a7[_0xafdc('0x38')]);_0x2c8ac2[_0xafdc('0x36')]=_[_0xafdc('0x37')](_0x2c8ac2['model'],_0x2c8ac2['query']);_0x55e6c6['attributes']=_[_0xafdc('0x37')](_0x2c8ac2[_0xafdc('0x34')],qs[_0xafdc('0x4a')](_0x2401a7[_0xafdc('0x38')]['fields']));_0x55e6c6[_0xafdc('0x49')]=_0x55e6c6[_0xafdc('0x49')]['length']?_0x55e6c6['attributes']:_0x2c8ac2[_0xafdc('0x34')];if(_0x2401a7[_0xafdc('0x38')][_0xafdc('0x54')]){_0x55e6c6['include']=[{'all':!![]}];}_0x55e6c6=_['merge']({},_0x55e6c6,_0x2401a7[_0xafdc('0x53')]);return db[_0xafdc('0x30')][_0xafdc('0x58')](_0x55e6c6)[_0xafdc('0x29')](handleEntityNotFound(_0x2caf2c,null))[_0xafdc('0x29')](respondWithResult(_0x2caf2c,null))[_0xafdc('0x59')](handleError(_0x2caf2c,null));};exports[_0xafdc('0x5a')]=function(_0x59b664,_0x1f23ef){return db['CmHopper'][_0xafdc('0x5a')](_0x59b664[_0xafdc('0x5b')],{})[_0xafdc('0x29')](respondWithResult(_0x1f23ef,0xc9))[_0xafdc('0x59')](handleError(_0x1f23ef,null));};exports['update']=function(_0x51aec3,_0x384038){if(_0x51aec3[_0xafdc('0x5b')]['id']){delete _0x51aec3[_0xafdc('0x5b')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x51aec3[_0xafdc('0x57')]['id']}})[_0xafdc('0x29')](handleEntityNotFound(_0x384038,null))['then'](saveUpdates(_0x51aec3[_0xafdc('0x5b')],null))['then'](respondWithResult(_0x384038,null))[_0xafdc('0x59')](handleError(_0x384038,null));};exports[_0xafdc('0x5c')]=function(_0x32cab3,_0x3ad72e){return db[_0xafdc('0x30')][_0xafdc('0x5c')]()[_0xafdc('0x29')](respondWithResult(_0x3ad72e,null))[_0xafdc('0x59')](handleError(_0x3ad72e,null));};exports['destroy']=function(_0x3ea43a,_0x222f3b){var _0x4a501b;return db[_0xafdc('0x30')][_0xafdc('0x58')]({'where':{'id':_0x3ea43a['params']['id']}})[_0xafdc('0x29')](handleEntityNotFound(_0x222f3b,null))['then'](function(_0x41c042){if(_0x41c042){return _0x41c042[_0xafdc('0x2a')]()[_0xafdc('0x29')](function(_0x218609){return _0x218609;});}})['then'](function(_0x34c78d){_0x4a501b=_0x34c78d;if(_0x34c78d){if(_0x34c78d[_0xafdc('0x5d')]||_0x34c78d['CampaignId']){return db[_0x34c78d['VoiceQueueId']?_0xafdc('0x5e'):_0xafdc('0x5f')][_0xafdc('0x58')]({'where':{'id':_0x34c78d['VoiceQueueId']?_0x34c78d[_0xafdc('0x5d')]:_0x34c78d['CampaignId']},'attributes':['id',_0xafdc('0x2d')],'raw':!![]});}}})[_0xafdc('0x29')](function(_0x27edae){var _0x310307={};if(_0x27edae){_[_0xafdc('0x60')](_0x310307,_[_0xafdc('0x61')](_0x4a501b[_0xafdc('0x62')],['createdAt',_0xafdc('0x63'),'id']));_0x310307['state']=0x15;_0x310307['statedesc']='deleted';_0x310307[_0xafdc('0x64')]=_0x27edae[_0xafdc('0x2d')];_0x310307['membername']=_0x3ea43a['user'][_0xafdc('0x2d')];_0x310307[_0xafdc('0x65')]=_0x3ea43a[_0xafdc('0x66')]['id'];_0x310307[_0xafdc('0x67')]=!![];_0x310307[_0xafdc('0x68')]=moment()[_0xafdc('0x69')](_0xafdc('0x6a'));_0x310307[_0xafdc('0x6b')]=_0x4a501b[_0xafdc('0x6c')];_0x310307[_0xafdc('0x6d')]=_0x4a501b[_0xafdc('0x5d')]?'queue':'ivr';return db['CmContact'][_0xafdc('0x58')]({'where':{'id':_0x310307['ContactId']},'attributes':[_0xafdc('0x6e'),_0xafdc('0x6f')]})['then'](function(_0x2bc964){if(!_[_0xafdc('0x70')](_0x222f3b)&&!_[_0xafdc('0x70')](_0x2bc964[_0xafdc('0x6e')])){_0x310307['calleridname']=_0x2bc964[_0xafdc('0x6e')];if(!_[_0xafdc('0x70')](_0x2bc964[_0xafdc('0x6f')])){_0x310307[_0xafdc('0x71')]+='\x20'+_0x2bc964[_0xafdc('0x6f')];}}})[_0xafdc('0x72')](function(){return db[_0xafdc('0x73')]['create'](_0x310307);});}})['then'](function(){return _0x222f3b['status'](0xcc)[_0xafdc('0x20')]();})[_0xafdc('0x59')](handleError(_0x222f3b,null));};exports['getPreview']=function(_0x4b44b5,_0x29c1d9,_0x55026f){var _0x3f4f5e=[];return db[_0xafdc('0x74')][_0xafdc('0x5c')]()['then'](function(_0x324653){_0x3f4f5e=_[_0xafdc('0x35')](_0x324653);return _0x4b44b5[_0xafdc('0x66')][_0xafdc('0x75')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xafdc('0x76')},'attributes':['id','dialOrderByScheduledAt'],'raw':!![]});})[_0xafdc('0x29')](function(_0x221923){if(_0x221923&&_0x221923[_0xafdc('0x4b')]){return db['sequelize']['transaction'](function(_0x4e089f){var _0x2cd65f={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xafdc('0x69')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x221923,'id')},'$or':[{'UserId':null},{'UserId':_0x4b44b5[_0xafdc('0x66')]['id']}]};var _0x51f3b4=[];if(_0x4b44b5['body'][_0xafdc('0x77')]&&_0x4b44b5[_0xafdc('0x5b')][_0xafdc('0x77')]===_0xafdc('0x78')){if(!_['isEmpty'](_0x4b44b5['body'][_0xafdc('0x79')])){_0x2cd65f['id']={'$in':_0x4b44b5[_0xafdc('0x5b')][_0xafdc('0x79')]};}_0x51f3b4=[[_0xafdc('0x7a'),_0xafdc('0x7b')],[_0xafdc('0x7c'),_0x221923[0x0][_0xafdc('0x7d')]===_0xafdc('0x7b')?_0xafdc('0x7e'):'ASC'],db['sequelize'][_0xafdc('0x7f')](_0xafdc('0x80')),['id','DESC']];}else{if(!_[_0xafdc('0x81')](_0x4b44b5['body'][_0xafdc('0x79')])){_0x2cd65f['id']={'$notIn':_0x4b44b5[_0xafdc('0x5b')][_0xafdc('0x79')]};}_0x51f3b4=[[_0xafdc('0x7a'),'DESC'],['scheduledAt',_0x221923[0x0][_0xafdc('0x7d')]],db[_0xafdc('0x82')][_0xafdc('0x7f')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0xafdc('0x7b')]];}return db[_0xafdc('0x30')][_0xafdc('0x83')]({'attributes':['id',_0xafdc('0x84')],'where':_0x2cd65f,'order':_0x51f3b4,'transaction':_0x4e089f,'lock':_0x4e089f[_0xafdc('0x85')]['UPDATE'],'include':[{'model':db['CmContact'],'as':_0xafdc('0x86'),'attributes':_0x3f4f5e,'include':[{'model':db[_0xafdc('0x87')],'as':_0xafdc('0x88'),'attributes':['id',_0xafdc('0x2d')]}]},{'model':db['CmList'],'as':'List','attributes':['id',_0xafdc('0x2d')]},{'model':db[_0xafdc('0x5e')],'as':_0xafdc('0x89'),'attributes':['id',_0xafdc('0x2d'),_0xafdc('0x8a')]}]})[_0xafdc('0x29')](function(_0x486f9b){if(_0x486f9b){return _0x486f9b[_0xafdc('0x8b')]({'UserId':_0x4b44b5[_0xafdc('0x66')]['id']},{'transaction':_0x4e089f});}});});}})[_0xafdc('0x29')](handleEntityNotFound(_0x29c1d9,null))[_0xafdc('0x29')](respondWithResult(_0x29c1d9,null))[_0xafdc('0x59')](handleError(_0x29c1d9,null));};exports[_0xafdc('0x8c')]=function(_0x231c6d,_0x2cf449,_0x20b3b3){return _0x231c6d[_0xafdc('0x66')]['getVoiceQueues']({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xafdc('0x76')},'attributes':['id'],'raw':!![]})[_0xafdc('0x29')](function(_0x3584db){if(_0x3584db&&_0x3584db[_0xafdc('0x4b')]){return db[_0xafdc('0x30')][_0xafdc('0x25')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xafdc('0x6a'))},'VoiceQueueId':{'$in':_[_0xafdc('0x2f')](_0x3584db,'id')},'$or':[{'UserId':null},{'UserId':_0x231c6d[_0xafdc('0x66')]['id']}]}});}return 0x0;})[_0xafdc('0x29')](function(_0x1d698a){if(!_[_0xafdc('0x70')](_0x1d698a)&&_[_0xafdc('0x8d')](_0x1d698a)){return _0x2cf449[_0xafdc('0x1f')](0xc8)[_0xafdc('0x21')]({'contacts':_0x1d698a});}else{logger[_0xafdc('0x2b')](_0xafdc('0x8e'),_0xafdc('0x8c'),0x194,_0xafdc('0x8f'));_0x2cf449[_0xafdc('0x1e')](0x194);}})[_0xafdc('0x59')](handleError(_0x2cf449,null));};
\ No newline at end of file
+var _0xc932=['json','undefined','count','offset','Content-Range','reject','save','destroy','then','sendStatus','stack','name','send','index','fieldName','type','key','map','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$iLike','$notILike','$overlap','$contained','$any','attributes','model','fields','hasOwnProperty','limit','order','sort','where','pick','merge','VIRTUAL','CmHopper','includeAll','include','rows','params','length','options','catch','create','update','body','find','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','campaign','UserId','user','deleted','format','calleridnum','phone','campaigntype','queue','ivr','CmContact','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','sequelize','transaction','direction','hopperIds','priority','ASC','scheduledAt','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','findOne','scheduledat','LOCK','UPDATE','Contact','CmCompany','Company','List','Queue','dialActive','getOpenContacts','isNumber','error','entity\x20not\x20found','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end'];(function(_0x276a33,_0x53bfdc){var _0x1007e7=function(_0x545a87){while(--_0x545a87){_0x276a33['push'](_0x276a33['shift']());}};_0x1007e7(++_0x53bfdc);}(_0xc932,0x107));var _0x2c93=function(_0x541a67,_0x50728d){_0x541a67=_0x541a67-0x0;var _0x45da2a=_0xc932[_0x541a67];return _0x45da2a;};'use strict';var emlformat=require(_0x2c93('0x0'));var rimraf=require(_0x2c93('0x1'));var zipdir=require(_0x2c93('0x2'));var jsonpatch=require(_0x2c93('0x3'));var rp=require(_0x2c93('0x4'));var moment=require(_0x2c93('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2c93('0x6'));var util=require(_0x2c93('0x7'));var path=require('path');var sox=require(_0x2c93('0x8'));var csv=require(_0x2c93('0x9'));var ejs=require(_0x2c93('0xa'));var fs=require('fs');var fs_extra=require(_0x2c93('0xb'));var _=require(_0x2c93('0xc'));var squel=require(_0x2c93('0xd'));var crypto=require(_0x2c93('0xe'));var jsforce=require(_0x2c93('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2c93('0x9'));var querystring=require(_0x2c93('0x10'));var Papa=require(_0x2c93('0x11'));var Redis=require(_0x2c93('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c93('0x13'))(_0x2c93('0x14'));var utils=require(_0x2c93('0x15'));var config=require(_0x2c93('0x16'));var licenseUtil=require(_0x2c93('0x17'));var db=require(_0x2c93('0x18'))['db'];function respondWithStatusCode(_0x52deec,_0x10d2f8){_0x10d2f8=_0x10d2f8||0xcc;return function(_0x17eb37){if(_0x17eb37){return _0x52deec['sendStatus'](_0x10d2f8);}return _0x52deec[_0x2c93('0x19')](_0x10d2f8)[_0x2c93('0x1a')]();};}function respondWithResult(_0x16c8d0,_0x230b02){_0x230b02=_0x230b02||0xc8;return function(_0x4f3756){if(_0x4f3756){return _0x16c8d0[_0x2c93('0x19')](_0x230b02)[_0x2c93('0x1b')](_0x4f3756);}};}function respondWithFilteredResult(_0x4f1114,_0x31a9ca){return function(_0x226de2){if(_0x226de2){var _0x5085de=typeof _0x31a9ca['offset']===_0x2c93('0x1c')&&typeof _0x31a9ca['limit']===_0x2c93('0x1c');var _0x4d58c0=_0x226de2[_0x2c93('0x1d')];var _0x2c7766=_0x5085de?0x0:_0x31a9ca[_0x2c93('0x1e')];var _0xeac1c9=_0x5085de?_0x226de2[_0x2c93('0x1d')]:_0x31a9ca[_0x2c93('0x1e')]+_0x31a9ca['limit'];var _0x4bba88;if(_0xeac1c9>=_0x4d58c0){_0xeac1c9=_0x4d58c0;_0x4bba88=0xc8;}else{_0x4bba88=0xce;}_0x4f1114[_0x2c93('0x19')](_0x4bba88);return _0x4f1114['set'](_0x2c93('0x1f'),_0x2c7766+'-'+_0xeac1c9+'/'+_0x4d58c0)[_0x2c93('0x1b')](_0x226de2);}return null;};}function patchUpdates(_0x200371){return function(_0x42bb2d){try{jsonpatch['apply'](_0x42bb2d,_0x200371,!![]);}catch(_0x4c1d0a){return BPromise[_0x2c93('0x20')](_0x4c1d0a);}return _0x42bb2d[_0x2c93('0x21')]();};}function saveUpdates(_0x2479cf,_0x5ed90d){return function(_0x1269bf){if(_0x1269bf){return _0x1269bf['update'](_0x2479cf)['then'](function(_0x55dc9f){return _0x55dc9f;});}return null;};}function removeEntity(_0x1263aa,_0x5bb7e5){return function(_0x3123f4){if(_0x3123f4){return _0x3123f4[_0x2c93('0x22')]()[_0x2c93('0x23')](function(){_0x1263aa[_0x2c93('0x19')](0xcc)[_0x2c93('0x1a')]();});}};}function handleEntityNotFound(_0x369206,_0x31d1e6){return function(_0x5355bc){if(!_0x5355bc){_0x369206[_0x2c93('0x24')](0x194);}return _0x5355bc;};}function handleError(_0x4937d2,_0x4715f0){_0x4715f0=_0x4715f0||0x1f4;return function(_0x382ba5){logger['error'](_0x382ba5[_0x2c93('0x25')]);if(_0x382ba5[_0x2c93('0x26')]){delete _0x382ba5[_0x2c93('0x26')];}_0x4937d2[_0x2c93('0x19')](_0x4715f0)[_0x2c93('0x27')](_0x382ba5);};}exports[_0x2c93('0x28')]=function(_0x14b781,_0x26ac90){var _0xbfc039={},_0x2ff317={},_0x56c79f={'count':0x0,'rows':[]};var _0x4f982f=_['map'](db['CmHopper']['rawAttributes'],function(_0x41c3d1){return{'name':_0x41c3d1[_0x2c93('0x29')],'type':_0x41c3d1[_0x2c93('0x2a')][_0x2c93('0x2b')]};});_0x2ff317['model']=_[_0x2c93('0x2c')](_0x4f982f,_0x2c93('0x26'));_0x2ff317[_0x2c93('0x2d')]=_[_0x2c93('0x2e')](_0x14b781[_0x2c93('0x2d')]);_0x2ff317[_0x2c93('0x2f')]=_[_0x2c93('0x30')](_0x2ff317['model'],_0x2ff317[_0x2c93('0x2d')]);_0x2ff317['filters']=_[_0x2c93('0x31')](_0x2ff317[_0x2c93('0x2f')],[_0x2c93('0x32'),_0x2c93('0x33'),_0x2c93('0x34'),_0x2c93('0x35'),_0x2c93('0x36'),_0x2c93('0x37'),_0x2c93('0x38'),_0x2c93('0x39'),_0x2c93('0x3a'),_0x2c93('0x3b'),_0x2c93('0x3c'),_0x2c93('0x3d'),_0x2c93('0x3e'),_0x2c93('0x3f'),'$notLike',_0x2c93('0x40'),_0x2c93('0x41'),_0x2c93('0x3f'),_0x2c93('0x42'),'$contains',_0x2c93('0x43'),_0x2c93('0x44')]);_0xbfc039[_0x2c93('0x45')]=_[_0x2c93('0x30')](_0x2ff317[_0x2c93('0x46')],qs[_0x2c93('0x47')](_0x14b781['query']['fields']));_0xbfc039[_0x2c93('0x45')]=_0xbfc039[_0x2c93('0x45')]['length']?_0xbfc039['attributes']:_0x2ff317[_0x2c93('0x46')];if(!_0x14b781[_0x2c93('0x2d')][_0x2c93('0x48')]('nolimit')){_0xbfc039[_0x2c93('0x49')]=qs[_0x2c93('0x49')](_0x14b781[_0x2c93('0x2d')]['limit']);_0xbfc039[_0x2c93('0x1e')]=qs[_0x2c93('0x1e')](_0x14b781[_0x2c93('0x2d')]['offset']);}_0xbfc039[_0x2c93('0x4a')]=qs[_0x2c93('0x4b')](_0x14b781['query'][_0x2c93('0x4b')]);_0xbfc039[_0x2c93('0x4c')]=qs[_0x2c93('0x2f')](_[_0x2c93('0x4d')](_0x14b781['query'],_0x2ff317['filters']),_0x4f982f);if(_0x14b781[_0x2c93('0x2d')]['filter']){_0xbfc039[_0x2c93('0x4c')]=_[_0x2c93('0x4e')](_0xbfc039[_0x2c93('0x4c')],{'$or':_[_0x2c93('0x2c')](_0x4f982f,function(_0x30b10f){if(_0x30b10f[_0x2c93('0x2a')]!==_0x2c93('0x4f')){var _0x25663e={};_0x25663e[_0x30b10f[_0x2c93('0x26')]]={'$like':'%'+_0x14b781['query']['filter']+'%'};return _0x25663e;}})});}_0xbfc039=_['merge']({},_0xbfc039,_0x14b781['options']);var _0x991fcc={'where':_0xbfc039[_0x2c93('0x4c')]};return db[_0x2c93('0x50')][_0x2c93('0x1d')](_0x991fcc)[_0x2c93('0x23')](function(_0x3c0bd2){_0x56c79f['count']=_0x3c0bd2;if(_0x14b781[_0x2c93('0x2d')][_0x2c93('0x51')]){_0xbfc039[_0x2c93('0x52')]=[{'all':!![]}];}return db[_0x2c93('0x50')]['findAll'](_0xbfc039);})[_0x2c93('0x23')](function(_0x11d1b2){_0x56c79f[_0x2c93('0x53')]=_0x11d1b2;return _0x56c79f;})[_0x2c93('0x23')](respondWithFilteredResult(_0x26ac90,_0xbfc039))['catch'](handleError(_0x26ac90,null));};exports['show']=function(_0x328eca,_0xc9c250){var _0x223a6a={'raw':!![],'where':{'id':_0x328eca[_0x2c93('0x54')]['id']}},_0x2bd382={};_0x2bd382[_0x2c93('0x46')]=_[_0x2c93('0x2e')](db[_0x2c93('0x50')]['rawAttributes']);_0x2bd382[_0x2c93('0x2d')]=_[_0x2c93('0x2e')](_0x328eca['query']);_0x2bd382[_0x2c93('0x2f')]=_['intersection'](_0x2bd382[_0x2c93('0x46')],_0x2bd382[_0x2c93('0x2d')]);_0x223a6a[_0x2c93('0x45')]=_['intersection'](_0x2bd382[_0x2c93('0x46')],qs['fields'](_0x328eca[_0x2c93('0x2d')]['fields']));_0x223a6a[_0x2c93('0x45')]=_0x223a6a[_0x2c93('0x45')][_0x2c93('0x55')]?_0x223a6a[_0x2c93('0x45')]:_0x2bd382[_0x2c93('0x46')];if(_0x328eca[_0x2c93('0x2d')][_0x2c93('0x51')]){_0x223a6a['include']=[{'all':!![]}];}_0x223a6a=_[_0x2c93('0x4e')]({},_0x223a6a,_0x328eca[_0x2c93('0x56')]);return db[_0x2c93('0x50')]['find'](_0x223a6a)['then'](handleEntityNotFound(_0xc9c250,null))[_0x2c93('0x23')](respondWithResult(_0xc9c250,null))[_0x2c93('0x57')](handleError(_0xc9c250,null));};exports[_0x2c93('0x58')]=function(_0x3c0bdf,_0x30a98d){return db[_0x2c93('0x50')][_0x2c93('0x58')](_0x3c0bdf['body'],{})[_0x2c93('0x23')](respondWithResult(_0x30a98d,0xc9))[_0x2c93('0x57')](handleError(_0x30a98d,null));};exports[_0x2c93('0x59')]=function(_0x3209f5,_0x3247b1){if(_0x3209f5[_0x2c93('0x5a')]['id']){delete _0x3209f5['body']['id'];}return db[_0x2c93('0x50')][_0x2c93('0x5b')]({'where':{'id':_0x3209f5[_0x2c93('0x54')]['id']}})[_0x2c93('0x23')](handleEntityNotFound(_0x3247b1,null))[_0x2c93('0x23')](saveUpdates(_0x3209f5['body'],null))[_0x2c93('0x23')](respondWithResult(_0x3247b1,null))[_0x2c93('0x57')](handleError(_0x3247b1,null));};exports[_0x2c93('0x5c')]=function(_0x2f25c6,_0x5e748e){return db[_0x2c93('0x50')][_0x2c93('0x5c')]()['then'](respondWithResult(_0x5e748e,null))['catch'](handleError(_0x5e748e,null));};exports[_0x2c93('0x22')]=function(_0x3782d1,_0x3bdb65){var _0x85d485;return db[_0x2c93('0x50')][_0x2c93('0x5b')]({'where':{'id':_0x3782d1[_0x2c93('0x54')]['id']}})[_0x2c93('0x23')](handleEntityNotFound(_0x3bdb65,null))[_0x2c93('0x23')](function(_0x4c4b1e){if(_0x4c4b1e){return _0x4c4b1e[_0x2c93('0x22')]()[_0x2c93('0x23')](function(_0x1dfc3f){return _0x1dfc3f;});}})[_0x2c93('0x23')](function(_0x41eb77){_0x85d485=_0x41eb77;if(_0x41eb77){if(_0x41eb77[_0x2c93('0x5d')]||_0x41eb77[_0x2c93('0x5e')]){return db[_0x41eb77[_0x2c93('0x5d')]?_0x2c93('0x5f'):_0x2c93('0x60')][_0x2c93('0x5b')]({'where':{'id':_0x41eb77[_0x2c93('0x5d')]?_0x41eb77[_0x2c93('0x5d')]:_0x41eb77[_0x2c93('0x5e')]},'attributes':['id',_0x2c93('0x26')],'raw':!![]});}}})[_0x2c93('0x23')](function(_0x53b573){var _0x56ae83={};if(_0x53b573){_['merge'](_0x56ae83,_[_0x2c93('0x61')](_0x85d485[_0x2c93('0x62')],['createdAt','updatedAt','id']));_0x56ae83['state']=0x15;_0x56ae83['statedesc']='deleted';_0x56ae83[_0x2c93('0x63')]=_0x53b573[_0x2c93('0x26')];_0x56ae83['membername']=_0x3782d1['user'][_0x2c93('0x26')];_0x56ae83[_0x2c93('0x64')]=_0x3782d1[_0x2c93('0x65')]['id'];_0x56ae83[_0x2c93('0x66')]=!![];_0x56ae83['deletedat']=moment()[_0x2c93('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0x56ae83[_0x2c93('0x68')]=_0x85d485[_0x2c93('0x69')];_0x56ae83[_0x2c93('0x6a')]=_0x85d485['VoiceQueueId']?_0x2c93('0x6b'):_0x2c93('0x6c');return db[_0x2c93('0x6d')]['find']({'where':{'id':_0x56ae83['ContactId']},'attributes':['firstName',_0x2c93('0x6e')]})[_0x2c93('0x23')](function(_0x49dd68){if(!_['isNil'](_0x3bdb65)&&!_[_0x2c93('0x6f')](_0x49dd68[_0x2c93('0x70')])){_0x56ae83[_0x2c93('0x71')]=_0x49dd68[_0x2c93('0x70')];if(!_[_0x2c93('0x6f')](_0x49dd68[_0x2c93('0x6e')])){_0x56ae83[_0x2c93('0x71')]+='\x20'+_0x49dd68[_0x2c93('0x6e')];}}})[_0x2c93('0x72')](function(){return db[_0x2c93('0x73')][_0x2c93('0x58')](_0x56ae83);});}})[_0x2c93('0x23')](function(){return _0x3bdb65[_0x2c93('0x19')](0xcc)[_0x2c93('0x1a')]();})['catch'](handleError(_0x3bdb65,null));};exports[_0x2c93('0x74')]=function(_0x455b5a,_0x235bf5,_0x2d1c96){var _0xd3f10f=[];return db['CmContact'][_0x2c93('0x5c')]()[_0x2c93('0x23')](function(_0x1e1156){_0xd3f10f=_['keys'](_0x1e1156);return _0x455b5a[_0x2c93('0x65')][_0x2c93('0x75')]({'where':{'type':_0x2c93('0x76'),'dialActive':!![],'dialMethod':_0x2c93('0x77')},'attributes':['id',_0x2c93('0x78')],'raw':!![]});})[_0x2c93('0x23')](function(_0x4440f0){if(_0x4440f0&&_0x4440f0[_0x2c93('0x55')]){return db[_0x2c93('0x79')][_0x2c93('0x7a')](function(_0x2fb34a){var _0x5250c1={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x2c93('0x67')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x2c93('0x2c')](_0x4440f0,'id')},'$or':[{'UserId':null},{'UserId':_0x455b5a[_0x2c93('0x65')]['id']}]};var _0x2cd991=[];if(_0x455b5a[_0x2c93('0x5a')][_0x2c93('0x7b')]&&_0x455b5a[_0x2c93('0x5a')][_0x2c93('0x7b')]==='prev'){if(!_['isEmpty'](_0x455b5a[_0x2c93('0x5a')]['hopperIds'])){_0x5250c1['id']={'$in':_0x455b5a[_0x2c93('0x5a')][_0x2c93('0x7c')]};}_0x2cd991=[[_0x2c93('0x7d'),_0x2c93('0x7e')],[_0x2c93('0x7f'),_0x4440f0[0x0][_0x2c93('0x78')]==='ASC'?_0x2c93('0x80'):_0x2c93('0x7e')],db[_0x2c93('0x79')][_0x2c93('0x81')](_0x2c93('0x82')),['id',_0x2c93('0x80')]];}else{if(!_['isEmpty'](_0x455b5a['body'][_0x2c93('0x7c')])){_0x5250c1['id']={'$notIn':_0x455b5a['body'][_0x2c93('0x7c')]};}_0x2cd991=[[_0x2c93('0x7d'),_0x2c93('0x80')],[_0x2c93('0x7f'),_0x4440f0[0x0][_0x2c93('0x78')]],db[_0x2c93('0x79')]['literal']('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id',_0x2c93('0x7e')]];}return db['CmHopper'][_0x2c93('0x83')]({'attributes':['id',_0x2c93('0x84')],'where':_0x5250c1,'order':_0x2cd991,'transaction':_0x2fb34a,'lock':_0x2fb34a[_0x2c93('0x85')][_0x2c93('0x86')],'include':[{'model':db[_0x2c93('0x6d')],'as':_0x2c93('0x87'),'attributes':_0xd3f10f,'include':[{'model':db[_0x2c93('0x88')],'as':_0x2c93('0x89'),'attributes':['id',_0x2c93('0x26')]}]},{'model':db['CmList'],'as':_0x2c93('0x8a'),'attributes':['id',_0x2c93('0x26')]},{'model':db[_0x2c93('0x5f')],'as':_0x2c93('0x8b'),'attributes':['id',_0x2c93('0x26'),_0x2c93('0x8c')]}]})[_0x2c93('0x23')](function(_0x43c49){if(_0x43c49){return _0x43c49['update']({'UserId':_0x455b5a[_0x2c93('0x65')]['id']},{'transaction':_0x2fb34a});}});});}})[_0x2c93('0x23')](handleEntityNotFound(_0x235bf5,null))[_0x2c93('0x23')](respondWithResult(_0x235bf5,null))[_0x2c93('0x57')](handleError(_0x235bf5,null));};exports[_0x2c93('0x8d')]=function(_0x26a1cf,_0x518851,_0x5e81d6){return _0x26a1cf[_0x2c93('0x65')][_0x2c93('0x75')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id'],'raw':!![]})[_0x2c93('0x23')](function(_0x55c382){if(_0x55c382&&_0x55c382[_0x2c93('0x55')]){return db['CmHopper'][_0x2c93('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x55c382,'id')},'$or':[{'UserId':null},{'UserId':_0x26a1cf[_0x2c93('0x65')]['id']}]}});}return 0x0;})[_0x2c93('0x23')](function(_0x1f8dc5){if(!_[_0x2c93('0x6f')](_0x1f8dc5)&&_[_0x2c93('0x8e')](_0x1f8dc5)){return _0x518851['status'](0xc8)[_0x2c93('0x1b')]({'contacts':_0x1f8dc5});}else{logger[_0x2c93('0x8f')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x2c93('0x8d'),0x194,_0x2c93('0x90'));_0x518851[_0x2c93('0x24')](0x194);}})[_0x2c93('0x57')](handleError(_0x518851,null));};
\ No newline at end of file
index 5895c5e..2802ff3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c60=['../../config/logger','api','bluebird','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c60,0xc1));var _0x04c6=function(_0x507f21,_0x4628a7){_0x507f21=_0x507f21-0x0;var _0x5a3c6e=_0x4c60[_0x507f21];return _0x5a3c6e;};'use strict';var _=require(_0x04c6('0x0'));var util=require(_0x04c6('0x1'));var logger=require(_0x04c6('0x2'))(_0x04c6('0x3'));var moment=require('moment');var BPromise=require(_0x04c6('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(_0x04c6('0x5'));module[_0x04c6('0x6')]=function(_0x2054da,_0x12bd5d){return _0x2054da[_0x04c6('0x7')](_0x04c6('0x8'),attributes,{'tableName':_0x04c6('0x9'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x04c6('0xa')]},{'name':_0x04c6('0xb'),'fields':[_0x04c6('0xb')]},{'name':_0x04c6('0xc'),'fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2eb2=['request-promise','rimraf','exports','define','CmHopper','cm_hopper','scheduledat','phone','priority','util','../../config/logger','api','moment','bluebird'];(function(_0x1c8e1f,_0x55f006){var _0x3465b4=function(_0x1e7843){while(--_0x1e7843){_0x1c8e1f['push'](_0x1c8e1f['shift']());}};_0x3465b4(++_0x55f006);}(_0x2eb2,0x19f));var _0x22eb=function(_0x266618,_0x18f637){_0x266618=_0x266618-0x0;var _0x54dbf5=_0x2eb2[_0x266618];return _0x54dbf5;};'use strict';var _=require('lodash');var util=require(_0x22eb('0x0'));var logger=require(_0x22eb('0x1'))(_0x22eb('0x2'));var moment=require(_0x22eb('0x3'));var BPromise=require(_0x22eb('0x4'));var rp=require(_0x22eb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x22eb('0x6'));var config=require('../../config/environment');var attributes=require('./cmHopper.attributes');module[_0x22eb('0x7')]=function(_0x10e116,_0x35dd5b){return _0x10e116[_0x22eb('0x8')](_0x22eb('0x9'),attributes,{'tableName':_0x22eb('0xa'),'paranoid':![],'indexes':[{'name':_0x22eb('0xb'),'fields':[_0x22eb('0xb')]},{'name':_0x22eb('0xc'),'fields':[_0x22eb('0xc')]},{'name':_0x22eb('0xd'),'fields':[_0x22eb('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index bfb348c..0065d5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3263=['../../config/logger','../../config/environment','jayson/promise','client','then','info','CmHopper,\x20%s,\x20%s','debug','CmHopper,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','GetCmHopper','CmHopper','options','raw','where','attributes','map','include','model','stringify','find','ShowCmHopper','CreateCmHopper','create','body','UpdateCmHopper','update','limit','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','findAll','order','UPDATE','Contact','keys','Agent','name','voicePause','length','UserId','push','includes','all','MoveContactManagedDialer','transaction','CmHopperFinal','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','\x22%s\x22','format','\x20,\x201,\x20null','GetContactRecallMe','lodash','util','moment','bluebird','randomstring','../../config/utils'];(function(_0x227787,_0x389123){var _0xcf13ea=function(_0xc32ba7){while(--_0xc32ba7){_0x227787['push'](_0x227787['shift']());}};_0xcf13ea(++_0x389123);}(_0x3263,0x153));var _0x3326=function(_0x19b1c2,_0x205062){_0x19b1c2=_0x19b1c2-0x0;var _0x4e1ae5=_0x3263[_0x19b1c2];return _0x4e1ae5;};'use strict';var _=require(_0x3326('0x0'));var util=require(_0x3326('0x1'));var moment=require(_0x3326('0x2'));var BPromise=require(_0x3326('0x3'));var rs=require(_0x3326('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3326('0x5'));var logger=require(_0x3326('0x6'))('rpc');var config=require(_0x3326('0x7'));var jayson=require(_0x3326('0x8'));var client=jayson[_0x3326('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d84c1,_0x5692e9,_0x3926df){return new BPromise(function(_0xec72e3,_0x6e2f34){return client['request'](_0x3d84c1,_0x3926df)[_0x3326('0xa')](function(_0x3cfda7){logger[_0x3326('0xb')](_0x3326('0xc'),_0x5692e9,'request\x20sent');logger[_0x3326('0xd')](_0x3326('0xe'),_0x5692e9,'request\x20sent',JSON['stringify'](_0x3cfda7));if(_0x3cfda7[_0x3326('0xf')]){if(_0x3cfda7[_0x3326('0xf')][_0x3326('0x10')]===0x1f4){logger[_0x3326('0xf')]('CmHopper,\x20%s,\x20%s',_0x5692e9,_0x3cfda7[_0x3326('0xf')][_0x3326('0x11')]);return _0x6e2f34(_0x3cfda7['error'][_0x3326('0x11')]);}logger[_0x3326('0xf')](_0x3326('0xc'),_0x5692e9,_0x3cfda7[_0x3326('0xf')][_0x3326('0x11')]);return _0xec72e3(_0x3cfda7['error']['message']);}else{logger['info']('CmHopper,\x20%s,\x20%s',_0x5692e9,_0x3326('0x12'));_0xec72e3(_0x3cfda7[_0x3326('0x13')][_0x3326('0x11')]);}})[_0x3326('0x14')](function(_0x1967fe){logger[_0x3326('0xf')](_0x3326('0xc'),_0x5692e9,_0x1967fe);_0x6e2f34(_0x1967fe);});});}exports[_0x3326('0x15')]=function(_0x589727){var _0x127599=this;return new Promise(function(_0x1711cb,_0x52660d){return db[_0x3326('0x16')]['findAll']({'raw':_0x589727['options']?_0x589727[_0x3326('0x17')][_0x3326('0x18')]===undefined?!![]:![]:!![],'where':_0x589727[_0x3326('0x17')]?_0x589727['options'][_0x3326('0x19')]||null:null,'attributes':_0x589727[_0x3326('0x17')]?_0x589727[_0x3326('0x17')][_0x3326('0x1a')]||null:null,'limit':_0x589727[_0x3326('0x17')]?_0x589727[_0x3326('0x17')]['limit']||null:null,'include':_0x589727['options']?_0x589727['options']['include']?_[_0x3326('0x1b')](_0x589727['options'][_0x3326('0x1c')],function(_0x527397){return{'model':db[_0x527397[_0x3326('0x1d')]],'as':_0x527397['as'],'attributes':_0x527397[_0x3326('0x1a')],'include':_0x527397[_0x3326('0x1c')]?_['map'](_0x527397['include'],function(_0x28a356){return{'model':db[_0x28a356[_0x3326('0x1d')]],'as':_0x28a356['as'],'attributes':_0x28a356[_0x3326('0x1a')],'include':_0x28a356[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x28a356[_0x3326('0x1c')],function(_0x449e51){return{'model':db[_0x449e51[_0x3326('0x1d')]],'as':_0x449e51['as'],'attributes':_0x449e51[_0x3326('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x530c96){logger[_0x3326('0xb')](_0x3326('0x15'),_0x589727);logger['debug'](_0x3326('0x15'),_0x589727,JSON[_0x3326('0x1e')](_0x530c96));_0x1711cb(_0x530c96);})['catch'](function(_0x269d0b){logger[_0x3326('0xf')](_0x3326('0x15'),_0x269d0b[_0x3326('0x11')],_0x589727);_0x52660d(_0x127599[_0x3326('0xf')](0x1f4,_0x269d0b[_0x3326('0x11')]));});});};exports['ShowCmHopper']=function(_0x259bb9){var _0x255e8e=this;return new Promise(function(_0x132f2a,_0x33dc98){return db[_0x3326('0x16')][_0x3326('0x1f')]({'raw':_0x259bb9[_0x3326('0x17')]?_0x259bb9[_0x3326('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x259bb9[_0x3326('0x17')]?_0x259bb9['options'][_0x3326('0x19')]||null:null,'attributes':_0x259bb9['options']?_0x259bb9[_0x3326('0x17')][_0x3326('0x1a')]||null:null,'include':_0x259bb9[_0x3326('0x17')]?_0x259bb9[_0x3326('0x17')][_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x259bb9[_0x3326('0x17')][_0x3326('0x1c')],function(_0x50d153){return{'model':db[_0x50d153[_0x3326('0x1d')]],'as':_0x50d153['as'],'attributes':_0x50d153[_0x3326('0x1a')],'include':_0x50d153[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x50d153[_0x3326('0x1c')],function(_0x1e66d5){return{'model':db[_0x1e66d5[_0x3326('0x1d')]],'as':_0x1e66d5['as'],'attributes':_0x1e66d5['attributes'],'include':_0x1e66d5[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x1e66d5['include'],function(_0x22d525){return{'model':db[_0x22d525[_0x3326('0x1d')]],'as':_0x22d525['as'],'attributes':_0x22d525[_0x3326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3326('0xa')](function(_0x17669d){logger['info'](_0x3326('0x20'),_0x259bb9);logger[_0x3326('0xd')]('ShowCmHopper',_0x259bb9,JSON[_0x3326('0x1e')](_0x17669d));_0x132f2a(_0x17669d);})['catch'](function(_0x56231a){logger[_0x3326('0xf')](_0x3326('0x20'),_0x56231a[_0x3326('0x11')],_0x259bb9);_0x33dc98(_0x255e8e[_0x3326('0xf')](0x1f4,_0x56231a[_0x3326('0x11')]));});});};exports[_0x3326('0x21')]=function(_0x1f024f){var _0x263da8=this;return new Promise(function(_0x3d1e3c,_0xd454c4){return db[_0x3326('0x16')][_0x3326('0x22')](_0x1f024f[_0x3326('0x23')],{'raw':_0x1f024f[_0x3326('0x17')]?_0x1f024f['options'][_0x3326('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x343d41){logger['info'](_0x3326('0x21'),_0x1f024f);logger[_0x3326('0xd')](_0x3326('0x21'),_0x1f024f,JSON[_0x3326('0x1e')](_0x343d41));_0x3d1e3c(_0x343d41);})['catch'](function(_0x2c6cfb){logger[_0x3326('0xf')](_0x3326('0x21'),_0x2c6cfb[_0x3326('0x11')],_0x1f024f);_0xd454c4(_0x263da8['error'](0x1f4,_0x2c6cfb[_0x3326('0x11')]));});});};exports[_0x3326('0x24')]=function(_0x57b138){var _0x1fa73e=this;return new Promise(function(_0x77f329,_0x3ae466){return db[_0x3326('0x16')][_0x3326('0x25')](_0x57b138[_0x3326('0x23')],{'raw':_0x57b138[_0x3326('0x17')]?_0x57b138[_0x3326('0x17')][_0x3326('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x57b138['options']?_0x57b138[_0x3326('0x17')]['where']||null:null,'attributes':_0x57b138[_0x3326('0x17')]?_0x57b138[_0x3326('0x17')][_0x3326('0x1a')]||null:null,'limit':_0x57b138[_0x3326('0x17')]?_0x57b138['options'][_0x3326('0x26')]||null:null})[_0x3326('0xa')](function(_0x19602e){logger[_0x3326('0xb')](_0x3326('0x24'),_0x57b138);logger[_0x3326('0xd')](_0x3326('0x24'),_0x57b138,JSON['stringify'](_0x19602e));_0x77f329(_0x19602e);})[_0x3326('0x14')](function(_0x5f4ea6){logger[_0x3326('0xf')](_0x3326('0x24'),_0x5f4ea6[_0x3326('0x11')],_0x57b138);_0x3ae466(_0x1fa73e[_0x3326('0xf')](0x1f4,_0x5f4ea6[_0x3326('0x11')]));});});};exports[_0x3326('0x27')]=function(_0x51f558){var _0x565681=this;return new Promise(function(_0x518087,_0x321cb2){return db[_0x3326('0x16')][_0x3326('0x28')]({'where':_0x51f558[_0x3326('0x17')]?_0x51f558['options'][_0x3326('0x19')]||null:null})[_0x3326('0xa')](function(_0x249f31){logger['info'](_0x3326('0x27'),_0x51f558);logger[_0x3326('0xd')](_0x3326('0x27'),_0x51f558,JSON['stringify'](_0x249f31));_0x518087(_0x249f31);})[_0x3326('0x14')](function(_0x300e68){logger[_0x3326('0xf')](_0x3326('0x27'),_0x300e68[_0x3326('0x11')],_0x51f558);_0x321cb2(_0x565681[_0x3326('0xf')](0x1f4,_0x300e68[_0x3326('0x11')]));});});};exports[_0x3326('0x29')]=function(_0x424d17){var _0x1f66a0=this;return new Promise(function(_0x17ab4b,_0x389aab){return db[_0x3326('0x2a')][_0x3326('0x2b')]()[_0x3326('0xa')](function(_0x398548){return db[_0x3326('0x2c')]['transaction'](function(_0x5043bb){return db['CmHopper'][_0x3326('0x2d')]({'where':_0x424d17[_0x3326('0x17')]?_0x424d17[_0x3326('0x17')][_0x3326('0x19')]||null:null,'attributes':_0x424d17[_0x3326('0x17')]?_0x424d17[_0x3326('0x17')][_0x3326('0x1a')]||null:null,'limit':_0x424d17[_0x3326('0x17')]?_0x424d17[_0x3326('0x17')][_0x3326('0x26')]||null:null,'order':_0x424d17['options']?_0x424d17[_0x3326('0x17')][_0x3326('0x2e')]||null:null,'transaction':_0x5043bb,'lock':_0x5043bb['LOCK'][_0x3326('0x2f')],'include':[{'model':db[_0x3326('0x2a')],'as':_0x3326('0x30'),'attributes':_[_0x3326('0x31')](_0x398548)},{'model':db['User'],'as':_0x3326('0x32'),'attributes':['id',_0x3326('0x33'),_0x3326('0x34')]}]})['then'](function(_0x360c20){var _0x285bdb=[];var _0x36f057=[];for(var _0xa750ef=0x0;_0xa750ef<_0x360c20[_0x3326('0x35')];_0xa750ef+=0x1){var _0x410c62=_0x360c20[_0xa750ef][_0x3326('0x36')];if(_0x410c62===null){_0x285bdb[_0x3326('0x37')](_0x360c20[_0xa750ef]['update'](_0x424d17[_0x3326('0x23')],{'transaction':_0x5043bb}));}else if(!_0x36f057[_0x3326('0x38')](_0x410c62)){_0x36f057['push'](_0x410c62);_0x285bdb[_0x3326('0x37')](_0x360c20[_0xa750ef][_0x3326('0x25')](_0x424d17[_0x3326('0x23')],{'transaction':_0x5043bb}));}}return BPromise[_0x3326('0x39')](_0x285bdb);});})[_0x3326('0xa')](function(_0x280a62){logger[_0x3326('0xb')](_0x3326('0x29'),_0x424d17);logger[_0x3326('0xd')](_0x3326('0x29'),_0x424d17,JSON['stringify'](_0x280a62));_0x17ab4b(_0x280a62);})[_0x3326('0x14')](function(_0x49340b){logger[_0x3326('0xf')](_0x3326('0x29'),_0x49340b[_0x3326('0x11')],_0x424d17);_0x389aab(_0x1f66a0[_0x3326('0xf')](0x1f4,_0x49340b['message']));});});});};exports[_0x3326('0x3a')]=function(_0x587849){var _0x76e936=this;return new Promise(function(_0x3853cf,_0x53122c){return db[_0x3326('0x2c')][_0x3326('0x3b')](function(_0x446247){return db[_0x3326('0x3c')][_0x3326('0x22')](_0x587849[_0x3326('0x23')],{'raw':_0x587849['options']?_0x587849[_0x3326('0x17')][_0x3326('0x18')]===undefined?!![]:![]:!![],'transaction':_0x446247})[_0x3326('0xa')](function(){return db[_0x3326('0x16')][_0x3326('0x28')]({'where':_0x587849[_0x3326('0x17')]?_0x587849[_0x3326('0x17')][_0x3326('0x19')]||null:null,'transaction':_0x446247});});})[_0x3326('0xa')](function(_0x1d1854){logger[_0x3326('0xb')](_0x3326('0x3a'),_0x587849);logger[_0x3326('0xd')]('MoveContactManagedDialer',_0x587849,JSON[_0x3326('0x1e')](_0x1d1854));_0x3853cf(_0x1d1854);})[_0x3326('0x14')](function(_0x21d68a){logger[_0x3326('0xf')](_0x3326('0x3a'),_0x21d68a['message'],_0x587849);_0x53122c(_0x76e936[_0x3326('0xf')](0x1f4,_0x21d68a[_0x3326('0x11')]));});});};exports[_0x3326('0x3d')]=function(_0x1f0997){var _0xa730d6=this;return new Promise(function(_0x553637,_0x275997){return db[_0x3326('0x16')][_0x3326('0x2d')]({'raw':_0x1f0997[_0x3326('0x17')]?_0x1f0997['options'][_0x3326('0x18')]===undefined?!![]:![]:!![],'where':_0x1f0997['options']?_0x1f0997[_0x3326('0x17')]['where']||null:null,'attributes':[[db[_0x3326('0x2c')]['fn'](_0x3326('0x3e'),db[_0x3326('0x2c')]['fn']('IF',db['sequelize'][_0x3326('0x3f')](_0x3326('0x40')+util['format'](_0x3326('0x41'),moment()[_0x3326('0x42')]('YYYY-MM-DD\x20HH:mm:ss'))+_0x3326('0x43')))),'contactsRescheduled']]})[_0x3326('0xa')](function(_0x3bb9fb){logger[_0x3326('0xb')]('CountReScheduled',_0x1f0997);logger[_0x3326('0xd')](_0x3326('0x3d'),_0x1f0997,JSON[_0x3326('0x1e')](_0x3bb9fb));_0x553637(_0x3bb9fb);})['catch'](function(_0x19b712){logger['error'](_0x3326('0x3d'),_0x19b712[_0x3326('0x11')],_0x1f0997);_0x275997(_0xa730d6[_0x3326('0xf')](0x1f4,_0x19b712['message']));});});};exports['GetContactRecallMe']=function(_0x42f5a2){var _0x5e4c11=this;return new Promise(function(_0x287faa,_0x3d077c){return db[_0x3326('0x2a')][_0x3326('0x2b')]()['then'](function(_0x2a8a35){return db[_0x3326('0x2c')]['transaction'](function(_0x39bc0a){return db[_0x3326('0x16')][_0x3326('0x2d')]({'where':_0x42f5a2['options']?_0x42f5a2[_0x3326('0x17')][_0x3326('0x19')]||null:null,'attributes':_0x42f5a2[_0x3326('0x17')]?_0x42f5a2[_0x3326('0x17')]['attributes']||null:null,'limit':0x1,'order':_0x42f5a2['options']?_0x42f5a2[_0x3326('0x17')][_0x3326('0x2e')]||null:null,'group':db['CmHopper'][_0x3326('0x36')],'transaction':_0x39bc0a,'lock':_0x39bc0a['LOCK'][_0x3326('0x2f')],'include':_0x42f5a2['options']?_0x42f5a2['options'][_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x42f5a2['options'][_0x3326('0x1c')],function(_0x1c3413){return{'model':db[_0x1c3413[_0x3326('0x1d')]],'as':_0x1c3413['as'],'attributes':_0x1c3413[_0x3326('0x1a')],'include':_0x1c3413[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x1c3413[_0x3326('0x1c')],function(_0x3f8ddf){return{'model':db[_0x3f8ddf[_0x3326('0x1d')]],'as':_0x3f8ddf['as'],'attributes':_0x3f8ddf[_0x3326('0x1a')],'include':_0x3f8ddf[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x3f8ddf[_0x3326('0x1c')],function(_0x3bbba1){return{'model':db[_0x3bbba1[_0x3326('0x1d')]],'as':_0x3bbba1['as'],'attributes':_0x3bbba1[_0x3326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3326('0xa')](function(_0x4d8d24){var _0x2ada0b=[];for(var _0x4567e2=0x0;_0x4567e2<_0x4d8d24['length'];_0x4567e2+=0x1){_0x2ada0b[_0x3326('0x37')](_0x4d8d24[_0x4567e2][_0x3326('0x25')](_0x42f5a2[_0x3326('0x23')],{'transaction':_0x39bc0a}));}return BPromise[_0x3326('0x39')](_0x2ada0b);});})[_0x3326('0xa')](function(_0x12ec40){logger[_0x3326('0xb')]('GetContactRecallMe',_0x42f5a2);logger[_0x3326('0xd')](_0x3326('0x44'),_0x42f5a2,JSON[_0x3326('0x1e')](_0x12ec40));_0x287faa(_0x12ec40);})['catch'](function(_0x250496){logger['error'](_0x3326('0x44'),_0x250496[_0x3326('0x11')],_0x42f5a2);_0x3d077c(_0x5e4c11[_0x3326('0xf')](0x1f4,_0x250496[_0x3326('0x11')]));});});});};exports['GetCmHopperPreview']=function(_0x48a521){var _0x4079f5=this;return new Promise(function(_0x1b86ae,_0x460be5){db[_0x3326('0x2a')]['describe']()['then'](function(_0x8bb996){return db['CmHopper'][_0x3326('0x2d')]({'raw':_0x48a521[_0x3326('0x17')]?_0x48a521['options'][_0x3326('0x18')]===undefined?!![]:![]:!![],'where':_0x48a521[_0x3326('0x17')]?_0x48a521[_0x3326('0x17')][_0x3326('0x19')]||null:null,'attributes':_0x48a521[_0x3326('0x17')]?_0x48a521[_0x3326('0x17')][_0x3326('0x1a')]||null:null,'limit':_0x48a521['options']?_0x48a521[_0x3326('0x17')]['limit']||null:null,'include':_0x48a521[_0x3326('0x17')]?_0x48a521[_0x3326('0x17')][_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x48a521['options'][_0x3326('0x1c')],function(_0x2760a7){return{'model':db[_0x2760a7[_0x3326('0x1d')]],'as':_0x2760a7['as'],'attributes':_0x2760a7['as']===_0x3326('0x30')?_[_0x3326('0x31')](_0x8bb996):_0x2760a7['attributes'],'include':_0x2760a7[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x2760a7[_0x3326('0x1c')],function(_0x3fe372){return{'model':db[_0x3fe372[_0x3326('0x1d')]],'as':_0x3fe372['as'],'attributes':_0x3fe372[_0x3326('0x1a')],'include':_0x3fe372[_0x3326('0x1c')]?_[_0x3326('0x1b')](_0x3fe372['include'],function(_0x2c4831){return{'model':db[_0x2c4831['model']],'as':_0x2c4831['as'],'attributes':_0x2c4831[_0x3326('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3326('0xa')](function(_0x504db3){logger['info'](_0x3326('0x15'),_0x48a521);logger['debug'](_0x3326('0x15'),_0x48a521,JSON[_0x3326('0x1e')](_0x504db3));_0x1b86ae(_0x504db3);})[_0x3326('0x14')](function(_0x32e815){logger['error'](_0x3326('0x15'),_0x32e815[_0x3326('0x11')],_0x48a521);_0x460be5(_0x4079f5['error'](0x1f4,_0x32e815[_0x3326('0x11')]));});});});};
\ No newline at end of file
+var _0x7916=['request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetCmHopper','CmHopper','findAll','options','where','attributes','limit','map','include','model','info','ShowCmHopper','find','raw','CreateCmHopper','create','body','UpdateCmHopper','update','destroy','DestroyCmHopper','GetContactDialer','CmContact','describe','sequelize','transaction','LOCK','UPDATE','Contact','User','Agent','name','voicePause','length','UserId','push','includes','all','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','keys','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','CmHopper,\x20%s,\x20%s'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x7916,0x80));var _0x6791=function(_0x2f81ed,_0x518ceb){_0x2f81ed=_0x2f81ed-0x0;var _0x4774c9=_0x7916[_0x2f81ed];return _0x4774c9;};'use strict';var _=require(_0x6791('0x0'));var util=require('util');var moment=require(_0x6791('0x1'));var BPromise=require(_0x6791('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6791('0x3'));var db=require(_0x6791('0x4'))['db'];var utils=require(_0x6791('0x5'));var logger=require(_0x6791('0x6'))('rpc');var config=require(_0x6791('0x7'));var jayson=require(_0x6791('0x8'));var client=jayson['client'][_0x6791('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x882ee5,_0x5726b1,_0x4be7bf){return new BPromise(function(_0x3b147c,_0x235f86){return client['request'](_0x882ee5,_0x4be7bf)[_0x6791('0xa')](function(_0x3960f9){logger['info'](_0x6791('0xb'),_0x5726b1,_0x6791('0xc'));logger[_0x6791('0xd')](_0x6791('0xe'),_0x5726b1,_0x6791('0xc'),JSON[_0x6791('0xf')](_0x3960f9));if(_0x3960f9[_0x6791('0x10')]){if(_0x3960f9['error'][_0x6791('0x11')]===0x1f4){logger[_0x6791('0x10')]('CmHopper,\x20%s,\x20%s',_0x5726b1,_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);return _0x235f86(_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);}logger[_0x6791('0x10')]('CmHopper,\x20%s,\x20%s',_0x5726b1,_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);return _0x3b147c(_0x3960f9[_0x6791('0x10')][_0x6791('0x12')]);}else{logger['info'](_0x6791('0xb'),_0x5726b1,_0x6791('0xc'));_0x3b147c(_0x3960f9[_0x6791('0x13')]['message']);}})[_0x6791('0x14')](function(_0x428c7b){logger[_0x6791('0x10')](_0x6791('0xb'),_0x5726b1,_0x428c7b);_0x235f86(_0x428c7b);});});}exports[_0x6791('0x15')]=function(_0x1caac1){var _0x5bf824=this;return new Promise(function(_0x12984b,_0x584c84){return db[_0x6791('0x16')][_0x6791('0x17')]({'raw':_0x1caac1[_0x6791('0x18')]?_0x1caac1[_0x6791('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1caac1[_0x6791('0x18')]?_0x1caac1['options'][_0x6791('0x19')]||null:null,'attributes':_0x1caac1[_0x6791('0x18')]?_0x1caac1['options'][_0x6791('0x1a')]||null:null,'limit':_0x1caac1['options']?_0x1caac1[_0x6791('0x18')][_0x6791('0x1b')]||null:null,'include':_0x1caac1['options']?_0x1caac1[_0x6791('0x18')]['include']?_[_0x6791('0x1c')](_0x1caac1[_0x6791('0x18')][_0x6791('0x1d')],function(_0x109859){return{'model':db[_0x109859[_0x6791('0x1e')]],'as':_0x109859['as'],'attributes':_0x109859[_0x6791('0x1a')],'include':_0x109859[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x109859[_0x6791('0x1d')],function(_0x2d831b){return{'model':db[_0x2d831b[_0x6791('0x1e')]],'as':_0x2d831b['as'],'attributes':_0x2d831b[_0x6791('0x1a')],'include':_0x2d831b['include']?_[_0x6791('0x1c')](_0x2d831b['include'],function(_0x9f160c){return{'model':db[_0x9f160c[_0x6791('0x1e')]],'as':_0x9f160c['as'],'attributes':_0x9f160c[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6791('0xa')](function(_0x178147){logger[_0x6791('0x1f')](_0x6791('0x15'),_0x1caac1);logger[_0x6791('0xd')](_0x6791('0x15'),_0x1caac1,JSON[_0x6791('0xf')](_0x178147));_0x12984b(_0x178147);})[_0x6791('0x14')](function(_0x556cab){logger[_0x6791('0x10')](_0x6791('0x15'),_0x556cab[_0x6791('0x12')],_0x1caac1);_0x584c84(_0x5bf824[_0x6791('0x10')](0x1f4,_0x556cab[_0x6791('0x12')]));});});};exports[_0x6791('0x20')]=function(_0x3c235c){var _0x490f24=this;return new Promise(function(_0x448cfc,_0x18b03d){return db[_0x6791('0x16')][_0x6791('0x21')]({'raw':_0x3c235c[_0x6791('0x18')]?_0x3c235c[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'where':_0x3c235c[_0x6791('0x18')]?_0x3c235c[_0x6791('0x18')][_0x6791('0x19')]||null:null,'attributes':_0x3c235c[_0x6791('0x18')]?_0x3c235c['options']['attributes']||null:null,'include':_0x3c235c[_0x6791('0x18')]?_0x3c235c[_0x6791('0x18')][_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x3c235c[_0x6791('0x18')][_0x6791('0x1d')],function(_0xe22f75){return{'model':db[_0xe22f75[_0x6791('0x1e')]],'as':_0xe22f75['as'],'attributes':_0xe22f75[_0x6791('0x1a')],'include':_0xe22f75[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0xe22f75['include'],function(_0x253f8d){return{'model':db[_0x253f8d[_0x6791('0x1e')]],'as':_0x253f8d['as'],'attributes':_0x253f8d['attributes'],'include':_0x253f8d[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x253f8d[_0x6791('0x1d')],function(_0x436e1b){return{'model':db[_0x436e1b[_0x6791('0x1e')]],'as':_0x436e1b['as'],'attributes':_0x436e1b[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6791('0xa')](function(_0x3df3f1){logger[_0x6791('0x1f')](_0x6791('0x20'),_0x3c235c);logger[_0x6791('0xd')](_0x6791('0x20'),_0x3c235c,JSON[_0x6791('0xf')](_0x3df3f1));_0x448cfc(_0x3df3f1);})['catch'](function(_0x3da5e9){logger['error'](_0x6791('0x20'),_0x3da5e9[_0x6791('0x12')],_0x3c235c);_0x18b03d(_0x490f24[_0x6791('0x10')](0x1f4,_0x3da5e9[_0x6791('0x12')]));});});};exports[_0x6791('0x23')]=function(_0x222ea8){var _0x16fba7=this;return new Promise(function(_0x1e6a1f,_0x10adc8){return db[_0x6791('0x16')][_0x6791('0x24')](_0x222ea8[_0x6791('0x25')],{'raw':_0x222ea8['options']?_0x222ea8[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![]})[_0x6791('0xa')](function(_0x2b8523){logger[_0x6791('0x1f')]('CreateCmHopper',_0x222ea8);logger[_0x6791('0xd')](_0x6791('0x23'),_0x222ea8,JSON[_0x6791('0xf')](_0x2b8523));_0x1e6a1f(_0x2b8523);})[_0x6791('0x14')](function(_0x4c724c){logger[_0x6791('0x10')](_0x6791('0x23'),_0x4c724c[_0x6791('0x12')],_0x222ea8);_0x10adc8(_0x16fba7[_0x6791('0x10')](0x1f4,_0x4c724c['message']));});});};exports[_0x6791('0x26')]=function(_0x28a2fc){var _0xd36685=this;return new Promise(function(_0x549e16,_0x1d16ff){return db[_0x6791('0x16')][_0x6791('0x27')](_0x28a2fc[_0x6791('0x25')],{'raw':_0x28a2fc['options']?_0x28a2fc[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28a2fc['options']?_0x28a2fc['options'][_0x6791('0x19')]||null:null,'attributes':_0x28a2fc[_0x6791('0x18')]?_0x28a2fc[_0x6791('0x18')][_0x6791('0x1a')]||null:null,'limit':_0x28a2fc[_0x6791('0x18')]?_0x28a2fc['options']['limit']||null:null})[_0x6791('0xa')](function(_0x10b3aa){logger[_0x6791('0x1f')](_0x6791('0x26'),_0x28a2fc);logger[_0x6791('0xd')](_0x6791('0x26'),_0x28a2fc,JSON[_0x6791('0xf')](_0x10b3aa));_0x549e16(_0x10b3aa);})[_0x6791('0x14')](function(_0x20aff8){logger[_0x6791('0x10')]('UpdateCmHopper',_0x20aff8[_0x6791('0x12')],_0x28a2fc);_0x1d16ff(_0xd36685['error'](0x1f4,_0x20aff8[_0x6791('0x12')]));});});};exports['DestroyCmHopper']=function(_0x5545b2){var _0x22529f=this;return new Promise(function(_0x91e027,_0x39976b){return db[_0x6791('0x16')][_0x6791('0x28')]({'where':_0x5545b2[_0x6791('0x18')]?_0x5545b2['options'][_0x6791('0x19')]||null:null})[_0x6791('0xa')](function(_0x3755bf){logger[_0x6791('0x1f')](_0x6791('0x29'),_0x5545b2);logger[_0x6791('0xd')](_0x6791('0x29'),_0x5545b2,JSON['stringify'](_0x3755bf));_0x91e027(_0x3755bf);})['catch'](function(_0x1d51ca){logger[_0x6791('0x10')](_0x6791('0x29'),_0x1d51ca[_0x6791('0x12')],_0x5545b2);_0x39976b(_0x22529f[_0x6791('0x10')](0x1f4,_0x1d51ca['message']));});});};exports[_0x6791('0x2a')]=function(_0x1489e7){var _0x2fd07e=this;return new Promise(function(_0x545683,_0x46aa00){return db[_0x6791('0x2b')][_0x6791('0x2c')]()['then'](function(_0x4e7312){return db[_0x6791('0x2d')][_0x6791('0x2e')](function(_0x1831c1){return db['CmHopper']['findAll']({'where':_0x1489e7[_0x6791('0x18')]?_0x1489e7['options'][_0x6791('0x19')]||null:null,'attributes':_0x1489e7['options']?_0x1489e7['options'][_0x6791('0x1a')]||null:null,'limit':_0x1489e7[_0x6791('0x18')]?_0x1489e7[_0x6791('0x18')][_0x6791('0x1b')]||null:null,'order':_0x1489e7['options']?_0x1489e7['options']['order']||null:null,'transaction':_0x1831c1,'lock':_0x1831c1[_0x6791('0x2f')][_0x6791('0x30')],'include':[{'model':db[_0x6791('0x2b')],'as':_0x6791('0x31'),'attributes':_['keys'](_0x4e7312)},{'model':db[_0x6791('0x32')],'as':_0x6791('0x33'),'attributes':['id',_0x6791('0x34'),_0x6791('0x35')]}]})[_0x6791('0xa')](function(_0x1babb0){var _0x4f7252=[];var _0x527222=[];for(var _0x39db9=0x0;_0x39db9<_0x1babb0[_0x6791('0x36')];_0x39db9+=0x1){var _0x22e65c=_0x1babb0[_0x39db9][_0x6791('0x37')];if(_0x22e65c===null){_0x4f7252[_0x6791('0x38')](_0x1babb0[_0x39db9][_0x6791('0x27')](_0x1489e7[_0x6791('0x25')],{'transaction':_0x1831c1}));}else if(!_0x527222[_0x6791('0x39')](_0x22e65c)){_0x527222['push'](_0x22e65c);_0x4f7252[_0x6791('0x38')](_0x1babb0[_0x39db9][_0x6791('0x27')](_0x1489e7[_0x6791('0x25')],{'transaction':_0x1831c1}));}}return BPromise[_0x6791('0x3a')](_0x4f7252);});})['then'](function(_0x5b0702){logger[_0x6791('0x1f')](_0x6791('0x2a'),_0x1489e7);logger['debug']('GetContactDialer',_0x1489e7,JSON[_0x6791('0xf')](_0x5b0702));_0x545683(_0x5b0702);})[_0x6791('0x14')](function(_0x31b475){logger[_0x6791('0x10')]('GetContactDialer',_0x31b475['message'],_0x1489e7);_0x46aa00(_0x2fd07e[_0x6791('0x10')](0x1f4,_0x31b475['message']));});});});};exports[_0x6791('0x3b')]=function(_0x225d3a){var _0x4d769a=this;return new Promise(function(_0x1fa53,_0x3236a3){return db['sequelize'][_0x6791('0x2e')](function(_0x44a473){return db[_0x6791('0x3c')][_0x6791('0x24')](_0x225d3a[_0x6791('0x25')],{'raw':_0x225d3a[_0x6791('0x18')]?_0x225d3a[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'transaction':_0x44a473})[_0x6791('0xa')](function(){return db[_0x6791('0x16')][_0x6791('0x28')]({'where':_0x225d3a['options']?_0x225d3a[_0x6791('0x18')][_0x6791('0x19')]||null:null,'transaction':_0x44a473});});})[_0x6791('0xa')](function(_0x1d16f2){logger[_0x6791('0x1f')](_0x6791('0x3b'),_0x225d3a);logger[_0x6791('0xd')](_0x6791('0x3b'),_0x225d3a,JSON[_0x6791('0xf')](_0x1d16f2));_0x1fa53(_0x1d16f2);})[_0x6791('0x14')](function(_0x4f0cff){logger['error']('MoveContactManagedDialer',_0x4f0cff['message'],_0x225d3a);_0x3236a3(_0x4d769a[_0x6791('0x10')](0x1f4,_0x4f0cff[_0x6791('0x12')]));});});};exports[_0x6791('0x3d')]=function(_0x424c99){var _0x30bf55=this;return new Promise(function(_0x454d08,_0xc411d0){return db[_0x6791('0x16')][_0x6791('0x17')]({'raw':_0x424c99[_0x6791('0x18')]?_0x424c99[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'where':_0x424c99[_0x6791('0x18')]?_0x424c99['options'][_0x6791('0x19')]||null:null,'attributes':[[db[_0x6791('0x2d')]['fn'](_0x6791('0x3e'),db[_0x6791('0x2d')]['fn']('IF',db[_0x6791('0x2d')]['literal']('`scheduledat`\x20>=\x20'+util[_0x6791('0x3f')](_0x6791('0x40'),moment()[_0x6791('0x3f')](_0x6791('0x41')))+_0x6791('0x42')))),_0x6791('0x43')]]})[_0x6791('0xa')](function(_0x2476b2){logger[_0x6791('0x1f')](_0x6791('0x3d'),_0x424c99);logger[_0x6791('0xd')]('CountReScheduled',_0x424c99,JSON[_0x6791('0xf')](_0x2476b2));_0x454d08(_0x2476b2);})[_0x6791('0x14')](function(_0x19c5ba){logger['error'](_0x6791('0x3d'),_0x19c5ba[_0x6791('0x12')],_0x424c99);_0xc411d0(_0x30bf55[_0x6791('0x10')](0x1f4,_0x19c5ba['message']));});});};exports[_0x6791('0x44')]=function(_0x4fd7d3){var _0x5809b0=this;return new Promise(function(_0x5d7a5d,_0x1d74a9){return db[_0x6791('0x2b')][_0x6791('0x2c')]()[_0x6791('0xa')](function(_0x37e414){return db[_0x6791('0x2d')][_0x6791('0x2e')](function(_0x2892b6){return db['CmHopper'][_0x6791('0x17')]({'where':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')]['where']||null:null,'attributes':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')][_0x6791('0x1a')]||null:null,'limit':0x1,'order':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')]['order']||null:null,'group':db[_0x6791('0x16')][_0x6791('0x37')],'transaction':_0x2892b6,'lock':_0x2892b6[_0x6791('0x2f')][_0x6791('0x30')],'include':_0x4fd7d3[_0x6791('0x18')]?_0x4fd7d3[_0x6791('0x18')]['include']?_[_0x6791('0x1c')](_0x4fd7d3[_0x6791('0x18')][_0x6791('0x1d')],function(_0xb4348){return{'model':db[_0xb4348['model']],'as':_0xb4348['as'],'attributes':_0xb4348['attributes'],'include':_0xb4348[_0x6791('0x1d')]?_['map'](_0xb4348[_0x6791('0x1d')],function(_0x3c0cb6){return{'model':db[_0x3c0cb6['model']],'as':_0x3c0cb6['as'],'attributes':_0x3c0cb6['attributes'],'include':_0x3c0cb6['include']?_[_0x6791('0x1c')](_0x3c0cb6[_0x6791('0x1d')],function(_0x57c296){return{'model':db[_0x57c296['model']],'as':_0x57c296['as'],'attributes':_0x57c296[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x309483){var _0x51f11c=[];for(var _0x308063=0x0;_0x308063<_0x309483['length'];_0x308063+=0x1){_0x51f11c[_0x6791('0x38')](_0x309483[_0x308063]['update'](_0x4fd7d3[_0x6791('0x25')],{'transaction':_0x2892b6}));}return BPromise['all'](_0x51f11c);});})['then'](function(_0x444d7b){logger['info'](_0x6791('0x44'),_0x4fd7d3);logger['debug'](_0x6791('0x44'),_0x4fd7d3,JSON['stringify'](_0x444d7b));_0x5d7a5d(_0x444d7b);})[_0x6791('0x14')](function(_0x23793e){logger[_0x6791('0x10')](_0x6791('0x44'),_0x23793e[_0x6791('0x12')],_0x4fd7d3);_0x1d74a9(_0x5809b0[_0x6791('0x10')](0x1f4,_0x23793e[_0x6791('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x3dca05){var _0x2063cb=this;return new Promise(function(_0x59ab64,_0xd12654){db[_0x6791('0x2b')][_0x6791('0x2c')]()[_0x6791('0xa')](function(_0x58ab64){return db[_0x6791('0x16')]['findAll']({'raw':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')][_0x6791('0x22')]===undefined?!![]:![]:!![],'where':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')][_0x6791('0x19')]||null:null,'attributes':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')][_0x6791('0x1a')]||null:null,'limit':_0x3dca05[_0x6791('0x18')]?_0x3dca05[_0x6791('0x18')]['limit']||null:null,'include':_0x3dca05['options']?_0x3dca05[_0x6791('0x18')][_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x3dca05['options']['include'],function(_0x83707a){return{'model':db[_0x83707a[_0x6791('0x1e')]],'as':_0x83707a['as'],'attributes':_0x83707a['as']===_0x6791('0x31')?_[_0x6791('0x45')](_0x58ab64):_0x83707a['attributes'],'include':_0x83707a[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x83707a['include'],function(_0x258575){return{'model':db[_0x258575[_0x6791('0x1e')]],'as':_0x258575['as'],'attributes':_0x258575['attributes'],'include':_0x258575[_0x6791('0x1d')]?_[_0x6791('0x1c')](_0x258575[_0x6791('0x1d')],function(_0x585b43){return{'model':db[_0x585b43['model']],'as':_0x585b43['as'],'attributes':_0x585b43[_0x6791('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x550317){logger['info'](_0x6791('0x15'),_0x3dca05);logger[_0x6791('0xd')](_0x6791('0x15'),_0x3dca05,JSON['stringify'](_0x550317));_0x59ab64(_0x550317);})[_0x6791('0x14')](function(_0x43916e){logger['error'](_0x6791('0x15'),_0x43916e[_0x6791('0x12')],_0x3dca05);_0xd12654(_0x2063cb[_0x6791('0x10')](0x1f4,_0x43916e['message']));});});});};
\ No newline at end of file
index ff98359..bcdd681 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639c=['post','create','/preview','put','/:id','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','show'];(function(_0x5c10fc,_0x1116d9){var _0x44391b=function(_0x2de5b2){while(--_0x2de5b2){_0x5c10fc['push'](_0x5c10fc['shift']());}};_0x44391b(++_0x1116d9);}(_0x639c,0xc8));var _0xc639=function(_0x5ae8f7,_0x330d91){_0x5ae8f7=_0x5ae8f7-0x0;var _0x54c636=_0x639c[_0x5ae8f7];return _0x54c636;};'use strict';var multer=require(_0xc639('0x0'));var util=require(_0xc639('0x1'));var path=require(_0xc639('0x2'));var timeout=require(_0xc639('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xc639('0x4'));var auth=require(_0xc639('0x5'));var interaction=require(_0xc639('0x6'));var config=require(_0xc639('0x7'));var controller=require(_0xc639('0x8'));router[_0xc639('0x9')]('/',auth[_0xc639('0xa')](),controller[_0xc639('0xb')]);router['get'](_0xc639('0xc'),auth['isAuthenticated'](),controller[_0xc639('0xd')]);router['get'](_0xc639('0xe'),auth['isAuthenticated'](),controller['getOpenContacts']);router[_0xc639('0x9')]('/:id',auth[_0xc639('0xa')](),controller[_0xc639('0xf')]);router[_0xc639('0x10')]('/',auth['isAuthenticated'](),controller[_0xc639('0x11')]);router['post'](_0xc639('0x12'),auth[_0xc639('0xa')](),controller['getPreview']);router[_0xc639('0x13')](_0xc639('0x14'),auth[_0xc639('0xa')](),controller[_0xc639('0x15')]);router[_0xc639('0x16')](_0xc639('0x14'),auth[_0xc639('0xa')](),controller[_0xc639('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xb5f3=['describe','/opencontacts','getOpenContacts','show','post','create','getPreview','put','/:id','update','delete','exports','multer','util','path','express','Router','fs-extra','../../config/environment','./cmHopper.controller','get','isAuthenticated','/describe'];(function(_0x7c8ab7,_0x5a383d){var _0x33ba61=function(_0x356407){while(--_0x356407){_0x7c8ab7['push'](_0x7c8ab7['shift']());}};_0x33ba61(++_0x5a383d);}(_0xb5f3,0x137));var _0x3b5f=function(_0x352e09,_0x37a7da){_0x352e09=_0x352e09-0x0;var _0x1b7094=_0xb5f3[_0x352e09];return _0x1b7094;};'use strict';var multer=require(_0x3b5f('0x0'));var util=require(_0x3b5f('0x1'));var path=require(_0x3b5f('0x2'));var timeout=require('connect-timeout');var express=require(_0x3b5f('0x3'));var router=express[_0x3b5f('0x4')]();var fs_extra=require(_0x3b5f('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3b5f('0x6'));var controller=require(_0x3b5f('0x7'));router[_0x3b5f('0x8')]('/',auth[_0x3b5f('0x9')](),controller['index']);router[_0x3b5f('0x8')](_0x3b5f('0xa'),auth['isAuthenticated'](),controller[_0x3b5f('0xb')]);router['get'](_0x3b5f('0xc'),auth[_0x3b5f('0x9')](),controller[_0x3b5f('0xd')]);router[_0x3b5f('0x8')]('/:id',auth[_0x3b5f('0x9')](),controller[_0x3b5f('0xe')]);router[_0x3b5f('0xf')]('/',auth[_0x3b5f('0x9')](),controller[_0x3b5f('0x10')]);router['post']('/preview',auth['isAuthenticated'](),controller[_0x3b5f('0x11')]);router[_0x3b5f('0x12')](_0x3b5f('0x13'),auth[_0x3b5f('0x9')](),controller[_0x3b5f('0x14')]);router[_0x3b5f('0x15')](_0x3b5f('0x13'),auth[_0x3b5f('0x9')](),controller['destroy']);module[_0x3b5f('0x16')]=router;
\ No newline at end of file
index fc6387d..d0b8919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['INTEGER','contactListQueue'];(function(_0x17ba2e,_0x5d4009){var _0x2f8e7d=function(_0x5890d1){while(--_0x5890d1){_0x17ba2e['push'](_0x17ba2e['shift']());}};_0x2f8e7d(++_0x5d4009);}(_0x5d58,0x187));var _0x85d5=function(_0x37662b,_0x2337e1){_0x37662b=_0x37662b-0x0;var _0x1b977c=_0x5d58[_0x37662b];return _0x1b977c;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x85d5('0x0')},'ListId':{'type':Sequelize[_0x85d5('0x1')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x85d5('0x1')],'unique':_0x85d5('0x0')}};
\ No newline at end of file
+var _0x9917=['moment','exports','STRING','INTEGER','contactListQueue'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x9917,0xe6));var _0x7991=function(_0x26268c,_0x355a4b){_0x26268c=_0x26268c-0x0;var _0x2e07ea=_0x9917[_0x26268c];return _0x2e07ea;};'use strict';var moment=require(_0x7991('0x0'));var Sequelize=require('sequelize');module[_0x7991('0x1')]={'phone':{'type':Sequelize[_0x7991('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x7991('0x3')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x7991('0x3')],'unique':_0x7991('0x4')},'VoiceQueueId':{'type':Sequelize[_0x7991('0x3')],'unique':_0x7991('0x4')}};
\ No newline at end of file
index 0542c5e..079dc62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92f8=['body','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','update','then','name','send','index','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperBlack','includeAll','include','findAll','rows','catch','show','params','keys','length','find'];(function(_0x18a436,_0x1dbe06){var _0x5c2cf8=function(_0x4712d1){while(--_0x4712d1){_0x18a436['push'](_0x18a436['shift']());}};_0x5c2cf8(++_0x1dbe06);}(_0x92f8,0xe4));var _0x892f=function(_0x3f85b6,_0x297abc){_0x3f85b6=_0x3f85b6-0x0;var _0xe3a86f=_0x92f8[_0x3f85b6];return _0xe3a86f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x892f('0x0'));var zipdir=require(_0x892f('0x1'));var jsonpatch=require(_0x892f('0x2'));var rp=require(_0x892f('0x3'));var moment=require(_0x892f('0x4'));var BPromise=require(_0x892f('0x5'));var Mustache=require(_0x892f('0x6'));var util=require(_0x892f('0x7'));var path=require('path');var sox=require(_0x892f('0x8'));var csv=require('to-csv');var ejs=require(_0x892f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x892f('0xa'));var squel=require(_0x892f('0xb'));var crypto=require(_0x892f('0xc'));var jsforce=require(_0x892f('0xd'));var deskjs=require(_0x892f('0xe'));var toCsv=require(_0x892f('0xf'));var querystring=require(_0x892f('0x10'));var Papa=require(_0x892f('0x11'));var Redis=require(_0x892f('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x892f('0x13'));var as=require(_0x892f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x892f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x892f('0x16'));var db=require(_0x892f('0x17'))['db'];function respondWithStatusCode(_0x5158e3,_0xb666b8){_0xb666b8=_0xb666b8||0xcc;return function(_0x2db7be){if(_0x2db7be){return _0x5158e3['sendStatus'](_0xb666b8);}return _0x5158e3[_0x892f('0x18')](_0xb666b8)[_0x892f('0x19')]();};}function respondWithResult(_0x1c6088,_0x1d2445){_0x1d2445=_0x1d2445||0xc8;return function(_0x2f6f22){if(_0x2f6f22){return _0x1c6088['status'](_0x1d2445)[_0x892f('0x1a')](_0x2f6f22);}};}function respondWithFilteredResult(_0x20a3db,_0x289886){return function(_0x3412f7){if(_0x3412f7){var _0x5397cd=typeof _0x289886['offset']===_0x892f('0x1b')&&typeof _0x289886['limit']===_0x892f('0x1b');var _0x358a10=_0x3412f7[_0x892f('0x1c')];var _0x29859b=_0x5397cd?0x0:_0x289886[_0x892f('0x1d')];var _0x5edbee=_0x5397cd?_0x3412f7[_0x892f('0x1c')]:_0x289886['offset']+_0x289886[_0x892f('0x1e')];var _0xc32363;if(_0x5edbee>=_0x358a10){_0x5edbee=_0x358a10;_0xc32363=0xc8;}else{_0xc32363=0xce;}_0x20a3db[_0x892f('0x18')](_0xc32363);return _0x20a3db[_0x892f('0x1f')](_0x892f('0x20'),_0x29859b+'-'+_0x5edbee+'/'+_0x358a10)[_0x892f('0x1a')](_0x3412f7);}return null;};}function patchUpdates(_0x36d3bd){return function(_0x15c004){try{jsonpatch[_0x892f('0x21')](_0x15c004,_0x36d3bd,!![]);}catch(_0x181bb6){return BPromise[_0x892f('0x22')](_0x181bb6);}return _0x15c004['save']();};}function saveUpdates(_0x51be5a,_0x4856af){return function(_0x3220ae){if(_0x3220ae){return _0x3220ae[_0x892f('0x23')](_0x51be5a)[_0x892f('0x24')](function(_0x3519b4){return _0x3519b4;});}return null;};}function removeEntity(_0x27eb42,_0x314cfd){return function(_0x5d7edf){if(_0x5d7edf){return _0x5d7edf['destroy']()['then'](function(){_0x27eb42[_0x892f('0x18')](0xcc)[_0x892f('0x19')]();});}};}function handleEntityNotFound(_0x3a7e3c,_0x4d4c6c){return function(_0x3ab8d8){if(!_0x3ab8d8){_0x3a7e3c['sendStatus'](0x194);}return _0x3ab8d8;};}function handleError(_0x66cf58,_0x3f5acd){_0x3f5acd=_0x3f5acd||0x1f4;return function(_0x481167){logger['error'](_0x481167['stack']);if(_0x481167[_0x892f('0x25')]){delete _0x481167[_0x892f('0x25')];}_0x66cf58[_0x892f('0x18')](_0x3f5acd)[_0x892f('0x26')](_0x481167);};}exports[_0x892f('0x27')]=function(_0x33f845,_0x38b1f9){var _0x3c21b9={},_0x3e9e1e={},_0x58fd60={'count':0x0,'rows':[]};var _0x237a8e=_['map'](db['CmHopperBlack'][_0x892f('0x28')],function(_0x24b76e){return{'name':_0x24b76e[_0x892f('0x29')],'type':_0x24b76e[_0x892f('0x2a')][_0x892f('0x2b')]};});_0x3e9e1e[_0x892f('0x2c')]=_[_0x892f('0x2d')](_0x237a8e,_0x892f('0x25'));_0x3e9e1e[_0x892f('0x2e')]=_['keys'](_0x33f845['query']);_0x3e9e1e[_0x892f('0x2f')]=_[_0x892f('0x30')](_0x3e9e1e[_0x892f('0x2c')],_0x3e9e1e[_0x892f('0x2e')]);_0x3c21b9[_0x892f('0x31')]=_[_0x892f('0x30')](_0x3e9e1e[_0x892f('0x2c')],qs['fields'](_0x33f845[_0x892f('0x2e')][_0x892f('0x32')]));_0x3c21b9[_0x892f('0x31')]=_0x3c21b9[_0x892f('0x31')]['length']?_0x3c21b9[_0x892f('0x31')]:_0x3e9e1e['model'];if(!_0x33f845[_0x892f('0x2e')][_0x892f('0x33')](_0x892f('0x34'))){_0x3c21b9[_0x892f('0x1e')]=qs['limit'](_0x33f845[_0x892f('0x2e')][_0x892f('0x1e')]);_0x3c21b9[_0x892f('0x1d')]=qs[_0x892f('0x1d')](_0x33f845[_0x892f('0x2e')][_0x892f('0x1d')]);}_0x3c21b9[_0x892f('0x35')]=qs[_0x892f('0x36')](_0x33f845[_0x892f('0x2e')][_0x892f('0x36')]);_0x3c21b9[_0x892f('0x37')]=qs[_0x892f('0x2f')](_[_0x892f('0x38')](_0x33f845[_0x892f('0x2e')],_0x3e9e1e[_0x892f('0x2f')]),_0x237a8e);if(_0x33f845[_0x892f('0x2e')][_0x892f('0x39')]){_0x3c21b9[_0x892f('0x37')]=_[_0x892f('0x3a')](_0x3c21b9[_0x892f('0x37')],{'$or':_[_0x892f('0x2d')](_0x237a8e,function(_0x5a3d74){if(_0x5a3d74[_0x892f('0x2a')]!==_0x892f('0x3b')){var _0x96b297={};_0x96b297[_0x5a3d74['name']]={'$like':'%'+_0x33f845['query'][_0x892f('0x39')]+'%'};return _0x96b297;}})});}_0x3c21b9=_[_0x892f('0x3a')]({},_0x3c21b9,_0x33f845[_0x892f('0x3c')]);var _0x36c809={'where':_0x3c21b9[_0x892f('0x37')]};return db[_0x892f('0x3d')][_0x892f('0x1c')](_0x36c809)[_0x892f('0x24')](function(_0x1717ab){_0x58fd60[_0x892f('0x1c')]=_0x1717ab;if(_0x33f845[_0x892f('0x2e')][_0x892f('0x3e')]){_0x3c21b9[_0x892f('0x3f')]=[{'all':!![]}];}return db[_0x892f('0x3d')][_0x892f('0x40')](_0x3c21b9);})[_0x892f('0x24')](function(_0x23e66f){_0x58fd60[_0x892f('0x41')]=_0x23e66f;return _0x58fd60;})[_0x892f('0x24')](respondWithFilteredResult(_0x38b1f9,_0x3c21b9))[_0x892f('0x42')](handleError(_0x38b1f9,null));};exports[_0x892f('0x43')]=function(_0x19eb4e,_0x19dc83){var _0x453c58={'raw':!![],'where':{'id':_0x19eb4e[_0x892f('0x44')]['id']}},_0x203b03={};_0x203b03['model']=_[_0x892f('0x45')](db[_0x892f('0x3d')][_0x892f('0x28')]);_0x203b03[_0x892f('0x2e')]=_[_0x892f('0x45')](_0x19eb4e[_0x892f('0x2e')]);_0x203b03[_0x892f('0x2f')]=_[_0x892f('0x30')](_0x203b03[_0x892f('0x2c')],_0x203b03[_0x892f('0x2e')]);_0x453c58[_0x892f('0x31')]=_[_0x892f('0x30')](_0x203b03[_0x892f('0x2c')],qs[_0x892f('0x32')](_0x19eb4e[_0x892f('0x2e')][_0x892f('0x32')]));_0x453c58[_0x892f('0x31')]=_0x453c58['attributes'][_0x892f('0x46')]?_0x453c58['attributes']:_0x203b03[_0x892f('0x2c')];if(_0x19eb4e[_0x892f('0x2e')][_0x892f('0x3e')]){_0x453c58[_0x892f('0x3f')]=[{'all':!![]}];}_0x453c58=_['merge']({},_0x453c58,_0x19eb4e[_0x892f('0x3c')]);return db['CmHopperBlack'][_0x892f('0x47')](_0x453c58)[_0x892f('0x24')](handleEntityNotFound(_0x19dc83,null))[_0x892f('0x24')](respondWithResult(_0x19dc83,null))[_0x892f('0x42')](handleError(_0x19dc83,null));};exports['update']=function(_0x3c5e82,_0x136722){if(_0x3c5e82[_0x892f('0x48')]['id']){delete _0x3c5e82[_0x892f('0x48')]['id'];}return db['CmHopperBlack'][_0x892f('0x47')]({'where':{'id':_0x3c5e82['params']['id']}})[_0x892f('0x24')](handleEntityNotFound(_0x136722,null))[_0x892f('0x24')](saveUpdates(_0x3c5e82[_0x892f('0x48')],null))[_0x892f('0x24')](respondWithResult(_0x136722,null))[_0x892f('0x42')](handleError(_0x136722,null));};exports[_0x892f('0x49')]=function(_0x3acfda,_0x42b069){return db['CmHopperBlack'][_0x892f('0x47')]({'where':{'id':_0x3acfda[_0x892f('0x44')]['id']}})[_0x892f('0x24')](handleEntityNotFound(_0x42b069,null))[_0x892f('0x24')](removeEntity(_0x42b069,null))['catch'](handleError(_0x42b069,null));};exports[_0x892f('0x4a')]=function(_0x1d5b4f,_0x4862ae){return db['CmHopperBlack'][_0x892f('0x4a')]()[_0x892f('0x24')](respondWithResult(_0x4862ae,null))[_0x892f('0x42')](handleError(_0x4862ae,null));};
\ No newline at end of file
+var _0x8821=['count','limit','Content-Range','apply','reject','then','destroy','error','stack','send','rawAttributes','fieldName','type','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','CmHopperBlack','include','findAll','rows','show','find','catch','update','body','params','describe','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined'];(function(_0x56eb00,_0xaf683e){var _0x37e0e5=function(_0x1021b4){while(--_0x1021b4){_0x56eb00['push'](_0x56eb00['shift']());}};_0x37e0e5(++_0xaf683e);}(_0x8821,0x101));var _0x1882=function(_0x1c7137,_0x4c7c26){_0x1c7137=_0x1c7137-0x0;var _0xeb4432=_0x8821[_0x1c7137];return _0xeb4432;};'use strict';var emlformat=require(_0x1882('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1882('0x1'));var jsonpatch=require(_0x1882('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1882('0x3'));var util=require(_0x1882('0x4'));var path=require('path');var sox=require(_0x1882('0x5'));var csv=require(_0x1882('0x6'));var ejs=require(_0x1882('0x7'));var fs=require('fs');var fs_extra=require(_0x1882('0x8'));var _=require(_0x1882('0x9'));var squel=require(_0x1882('0xa'));var crypto=require(_0x1882('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1882('0xc'));var toCsv=require(_0x1882('0x6'));var querystring=require(_0x1882('0xd'));var Papa=require(_0x1882('0xe'));var Redis=require(_0x1882('0xf'));var authService=require(_0x1882('0x10'));var qs=require(_0x1882('0x11'));var as=require(_0x1882('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x1882('0x13'));var config=require(_0x1882('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x1882('0x15'))['db'];function respondWithStatusCode(_0x1693e0,_0x140776){_0x140776=_0x140776||0xcc;return function(_0x3ce633){if(_0x3ce633){return _0x1693e0['sendStatus'](_0x140776);}return _0x1693e0[_0x1882('0x16')](_0x140776)[_0x1882('0x17')]();};}function respondWithResult(_0x489270,_0x1804e8){_0x1804e8=_0x1804e8||0xc8;return function(_0x2ef95f){if(_0x2ef95f){return _0x489270['status'](_0x1804e8)[_0x1882('0x18')](_0x2ef95f);}};}function respondWithFilteredResult(_0x2b3baa,_0x53ae71){return function(_0x8b7944){if(_0x8b7944){var _0x2b12fd=typeof _0x53ae71[_0x1882('0x19')]===_0x1882('0x1a')&&typeof _0x53ae71['limit']==='undefined';var _0x1b38a6=_0x8b7944[_0x1882('0x1b')];var _0x1b4266=_0x2b12fd?0x0:_0x53ae71[_0x1882('0x19')];var _0x9ebeeb=_0x2b12fd?_0x8b7944[_0x1882('0x1b')]:_0x53ae71[_0x1882('0x19')]+_0x53ae71[_0x1882('0x1c')];var _0x507409;if(_0x9ebeeb>=_0x1b38a6){_0x9ebeeb=_0x1b38a6;_0x507409=0xc8;}else{_0x507409=0xce;}_0x2b3baa[_0x1882('0x16')](_0x507409);return _0x2b3baa['set'](_0x1882('0x1d'),_0x1b4266+'-'+_0x9ebeeb+'/'+_0x1b38a6)[_0x1882('0x18')](_0x8b7944);}return null;};}function patchUpdates(_0x22f432){return function(_0x1a0459){try{jsonpatch[_0x1882('0x1e')](_0x1a0459,_0x22f432,!![]);}catch(_0x10e9ec){return BPromise[_0x1882('0x1f')](_0x10e9ec);}return _0x1a0459['save']();};}function saveUpdates(_0x2d9beb,_0x17f7db){return function(_0x134e5b){if(_0x134e5b){return _0x134e5b['update'](_0x2d9beb)[_0x1882('0x20')](function(_0x4385a2){return _0x4385a2;});}return null;};}function removeEntity(_0x1d80f5,_0x4df8cd){return function(_0x31d70e){if(_0x31d70e){return _0x31d70e[_0x1882('0x21')]()[_0x1882('0x20')](function(){_0x1d80f5[_0x1882('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf49466,_0x3cee27){return function(_0x5aa234){if(!_0x5aa234){_0xf49466['sendStatus'](0x194);}return _0x5aa234;};}function handleError(_0xb6d13f,_0x2fc0ca){_0x2fc0ca=_0x2fc0ca||0x1f4;return function(_0x5c5138){logger[_0x1882('0x22')](_0x5c5138[_0x1882('0x23')]);if(_0x5c5138['name']){delete _0x5c5138['name'];}_0xb6d13f[_0x1882('0x16')](_0x2fc0ca)[_0x1882('0x24')](_0x5c5138);};}exports['index']=function(_0x58025d,_0x11f128){var _0x539f4c={},_0x427e11={},_0x5dbec6={'count':0x0,'rows':[]};var _0x32e014=_['map'](db['CmHopperBlack'][_0x1882('0x25')],function(_0x473916){return{'name':_0x473916[_0x1882('0x26')],'type':_0x473916[_0x1882('0x27')]['key']};});_0x427e11[_0x1882('0x28')]=_[_0x1882('0x29')](_0x32e014,_0x1882('0x2a'));_0x427e11[_0x1882('0x2b')]=_[_0x1882('0x2c')](_0x58025d[_0x1882('0x2b')]);_0x427e11[_0x1882('0x2d')]=_[_0x1882('0x2e')](_0x427e11[_0x1882('0x28')],_0x427e11[_0x1882('0x2b')]);_0x539f4c['attributes']=_['intersection'](_0x427e11[_0x1882('0x28')],qs[_0x1882('0x2f')](_0x58025d['query'][_0x1882('0x2f')]));_0x539f4c[_0x1882('0x30')]=_0x539f4c['attributes'][_0x1882('0x31')]?_0x539f4c[_0x1882('0x30')]:_0x427e11['model'];if(!_0x58025d['query'][_0x1882('0x32')](_0x1882('0x33'))){_0x539f4c['limit']=qs[_0x1882('0x1c')](_0x58025d[_0x1882('0x2b')][_0x1882('0x1c')]);_0x539f4c[_0x1882('0x19')]=qs[_0x1882('0x19')](_0x58025d[_0x1882('0x2b')][_0x1882('0x19')]);}_0x539f4c[_0x1882('0x34')]=qs[_0x1882('0x35')](_0x58025d[_0x1882('0x2b')][_0x1882('0x35')]);_0x539f4c['where']=qs['filters'](_[_0x1882('0x36')](_0x58025d[_0x1882('0x2b')],_0x427e11[_0x1882('0x2d')]),_0x32e014);if(_0x58025d[_0x1882('0x2b')][_0x1882('0x37')]){_0x539f4c[_0x1882('0x38')]=_[_0x1882('0x39')](_0x539f4c['where'],{'$or':_[_0x1882('0x29')](_0x32e014,function(_0x363382){if(_0x363382[_0x1882('0x27')]!==_0x1882('0x3a')){var _0x45765b={};_0x45765b[_0x363382['name']]={'$like':'%'+_0x58025d['query'][_0x1882('0x37')]+'%'};return _0x45765b;}})});}_0x539f4c=_[_0x1882('0x39')]({},_0x539f4c,_0x58025d[_0x1882('0x3b')]);var _0x1f5068={'where':_0x539f4c[_0x1882('0x38')]};return db[_0x1882('0x3c')][_0x1882('0x1b')](_0x1f5068)[_0x1882('0x20')](function(_0xde2b15){_0x5dbec6[_0x1882('0x1b')]=_0xde2b15;if(_0x58025d[_0x1882('0x2b')]['includeAll']){_0x539f4c[_0x1882('0x3d')]=[{'all':!![]}];}return db[_0x1882('0x3c')][_0x1882('0x3e')](_0x539f4c);})[_0x1882('0x20')](function(_0x478b92){_0x5dbec6[_0x1882('0x3f')]=_0x478b92;return _0x5dbec6;})[_0x1882('0x20')](respondWithFilteredResult(_0x11f128,_0x539f4c))['catch'](handleError(_0x11f128,null));};exports[_0x1882('0x40')]=function(_0x1861bf,_0x62f61f){var _0xa08761={'raw':!![],'where':{'id':_0x1861bf['params']['id']}},_0x1874cd={};_0x1874cd[_0x1882('0x28')]=_[_0x1882('0x2c')](db['CmHopperBlack']['rawAttributes']);_0x1874cd[_0x1882('0x2b')]=_[_0x1882('0x2c')](_0x1861bf['query']);_0x1874cd[_0x1882('0x2d')]=_[_0x1882('0x2e')](_0x1874cd['model'],_0x1874cd[_0x1882('0x2b')]);_0xa08761['attributes']=_[_0x1882('0x2e')](_0x1874cd[_0x1882('0x28')],qs[_0x1882('0x2f')](_0x1861bf[_0x1882('0x2b')]['fields']));_0xa08761[_0x1882('0x30')]=_0xa08761[_0x1882('0x30')][_0x1882('0x31')]?_0xa08761[_0x1882('0x30')]:_0x1874cd[_0x1882('0x28')];if(_0x1861bf[_0x1882('0x2b')]['includeAll']){_0xa08761[_0x1882('0x3d')]=[{'all':!![]}];}_0xa08761=_[_0x1882('0x39')]({},_0xa08761,_0x1861bf[_0x1882('0x3b')]);return db[_0x1882('0x3c')][_0x1882('0x41')](_0xa08761)[_0x1882('0x20')](handleEntityNotFound(_0x62f61f,null))[_0x1882('0x20')](respondWithResult(_0x62f61f,null))[_0x1882('0x42')](handleError(_0x62f61f,null));};exports[_0x1882('0x43')]=function(_0x291597,_0x1d9ffb){if(_0x291597[_0x1882('0x44')]['id']){delete _0x291597[_0x1882('0x44')]['id'];}return db[_0x1882('0x3c')][_0x1882('0x41')]({'where':{'id':_0x291597[_0x1882('0x45')]['id']}})[_0x1882('0x20')](handleEntityNotFound(_0x1d9ffb,null))[_0x1882('0x20')](saveUpdates(_0x291597[_0x1882('0x44')],null))[_0x1882('0x20')](respondWithResult(_0x1d9ffb,null))[_0x1882('0x42')](handleError(_0x1d9ffb,null));};exports[_0x1882('0x21')]=function(_0x14026e,_0x2a1bc7){return db['CmHopperBlack']['find']({'where':{'id':_0x14026e[_0x1882('0x45')]['id']}})[_0x1882('0x20')](handleEntityNotFound(_0x2a1bc7,null))[_0x1882('0x20')](removeEntity(_0x2a1bc7,null))[_0x1882('0x42')](handleError(_0x2a1bc7,null));};exports[_0x1882('0x46')]=function(_0x5693c5,_0x40d8fe){return db['CmHopperBlack'][_0x1882('0x46')]()['then'](respondWithResult(_0x40d8fe,null))['catch'](handleError(_0x40d8fe,null));};
\ No newline at end of file
index 3e66a7f..5b6174a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3510=['moment','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','../../config/logger'];(function(_0x38ccc9,_0x30f969){var _0x15dc30=function(_0x129bf0){while(--_0x129bf0){_0x38ccc9['push'](_0x38ccc9['shift']());}};_0x15dc30(++_0x30f969);}(_0x3510,0x1ee));var _0x0351=function(_0x5608a3,_0x5b33c5){_0x5608a3=_0x5608a3-0x0;var _0x1ed50a=_0x3510[_0x5608a3];return _0x1ed50a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0351('0x0'))('api');var moment=require(_0x0351('0x1'));var BPromise=require('bluebird');var rp=require(_0x0351('0x2'));var fs=require('fs');var path=require(_0x0351('0x3'));var rimraf=require(_0x0351('0x4'));var config=require(_0x0351('0x5'));var attributes=require(_0x0351('0x6'));module[_0x0351('0x7')]=function(_0x4b7010,_0x41b8a8){return _0x4b7010[_0x0351('0x8')]('CmHopperBlack',attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xad84=['exports','define','cm_hopper_black','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x1b5b6f,_0x5b111c){var _0x220653=function(_0x29ff13){while(--_0x29ff13){_0x1b5b6f['push'](_0x1b5b6f['shift']());}};_0x220653(++_0x5b111c);}(_0xad84,0x137));var _0x4ad8=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0xad84[_0x263a74];return _0x2aa86c;};'use strict';var _=require(_0x4ad8('0x0'));var util=require('util');var logger=require(_0x4ad8('0x1'))(_0x4ad8('0x2'));var moment=require(_0x4ad8('0x3'));var BPromise=require(_0x4ad8('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ad8('0x5'));var rimraf=require(_0x4ad8('0x6'));var config=require(_0x4ad8('0x7'));var attributes=require('./cmHopperBlack.attributes');module[_0x4ad8('0x8')]=function(_0x1287bc,_0x61ab4d){return _0x1287bc[_0x4ad8('0x9')]('CmHopperBlack',attributes,{'tableName':_0x4ad8('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 61a4811..405961d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbccf=['../../config/utils','../../config/logger','../../config/environment','client','request','then','request\x20sent','debug','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','result','catch','GetCmHopperBlack','CmHopperBlack','options','raw','where','attributes','limit','include','model','map','update','body','info','UpdateCmHopperBlack','DestroyCmHopperBlack','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x209340,_0x31aafe){var _0x5e5c7b=function(_0x410b3f){while(--_0x410b3f){_0x209340['push'](_0x209340['shift']());}};_0x5e5c7b(++_0x31aafe);}(_0xbccf,0x162));var _0xfbcc=function(_0xf31767,_0x381746){_0xf31767=_0xf31767-0x0;var _0x24bd0c=_0xbccf[_0xf31767];return _0x24bd0c;};'use strict';var _=require(_0xfbcc('0x0'));var util=require(_0xfbcc('0x1'));var moment=require(_0xfbcc('0x2'));var BPromise=require(_0xfbcc('0x3'));var rs=require(_0xfbcc('0x4'));var fs=require('fs');var Redis=require(_0xfbcc('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xfbcc('0x6'));var logger=require(_0xfbcc('0x7'))('rpc');var config=require(_0xfbcc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xfbcc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cd623,_0x1b8b6f,_0x267229){return new BPromise(function(_0x2016d4,_0x12a262){return client[_0xfbcc('0xa')](_0x1cd623,_0x267229)[_0xfbcc('0xb')](function(_0x4ae37f){logger['info']('CmHopperBlack,\x20%s,\x20%s',_0x1b8b6f,_0xfbcc('0xc'));logger[_0xfbcc('0xd')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x1b8b6f,_0xfbcc('0xc'),JSON[_0xfbcc('0xe')](_0x4ae37f));if(_0x4ae37f['error']){if(_0x4ae37f[_0xfbcc('0xf')][_0xfbcc('0x10')]===0x1f4){logger['error'](_0xfbcc('0x11'),_0x1b8b6f,_0x4ae37f[_0xfbcc('0xf')][_0xfbcc('0x12')]);return _0x12a262(_0x4ae37f[_0xfbcc('0xf')]['message']);}logger['error'](_0xfbcc('0x11'),_0x1b8b6f,_0x4ae37f[_0xfbcc('0xf')][_0xfbcc('0x12')]);return _0x2016d4(_0x4ae37f[_0xfbcc('0xf')]['message']);}else{logger['info'](_0xfbcc('0x11'),_0x1b8b6f,_0xfbcc('0xc'));_0x2016d4(_0x4ae37f[_0xfbcc('0x13')][_0xfbcc('0x12')]);}})[_0xfbcc('0x14')](function(_0x5667c9){logger[_0xfbcc('0xf')](_0xfbcc('0x11'),_0x1b8b6f,_0x5667c9);_0x12a262(_0x5667c9);});});}exports[_0xfbcc('0x15')]=function(_0x21b21f){var _0x14a079=this;return new Promise(function(_0x25b34f,_0x268e90){return db[_0xfbcc('0x16')]['findAll']({'raw':_0x21b21f[_0xfbcc('0x17')]?_0x21b21f[_0xfbcc('0x17')][_0xfbcc('0x18')]===undefined?!![]:![]:!![],'where':_0x21b21f[_0xfbcc('0x17')]?_0x21b21f[_0xfbcc('0x17')][_0xfbcc('0x19')]||null:null,'attributes':_0x21b21f['options']?_0x21b21f['options'][_0xfbcc('0x1a')]||null:null,'limit':_0x21b21f[_0xfbcc('0x17')]?_0x21b21f[_0xfbcc('0x17')][_0xfbcc('0x1b')]||null:null,'include':_0x21b21f[_0xfbcc('0x17')]?_0x21b21f[_0xfbcc('0x17')][_0xfbcc('0x1c')]?_['map'](_0x21b21f[_0xfbcc('0x17')][_0xfbcc('0x1c')],function(_0x5b5e79){return{'model':db[_0x5b5e79[_0xfbcc('0x1d')]],'as':_0x5b5e79['as'],'attributes':_0x5b5e79[_0xfbcc('0x1a')],'include':_0x5b5e79['include']?_['map'](_0x5b5e79[_0xfbcc('0x1c')],function(_0xdf5034){return{'model':db[_0xdf5034[_0xfbcc('0x1d')]],'as':_0xdf5034['as'],'attributes':_0xdf5034[_0xfbcc('0x1a')],'include':_0xdf5034[_0xfbcc('0x1c')]?_[_0xfbcc('0x1e')](_0xdf5034[_0xfbcc('0x1c')],function(_0x582053){return{'model':db[_0x582053['model']],'as':_0x582053['as'],'attributes':_0x582053[_0xfbcc('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45f9b0){logger['info'](_0xfbcc('0x15'),_0x21b21f);logger['debug']('GetCmHopperBlack',_0x21b21f,JSON[_0xfbcc('0xe')](_0x45f9b0));_0x25b34f(_0x45f9b0);})['catch'](function(_0x48ecbf){logger['error'](_0xfbcc('0x15'),_0x48ecbf[_0xfbcc('0x12')],_0x21b21f);_0x268e90(_0x14a079[_0xfbcc('0xf')](0x1f4,_0x48ecbf[_0xfbcc('0x12')]));});});};exports['UpdateCmHopperBlack']=function(_0x135378){var _0x1c20ff=this;return new Promise(function(_0x30338b,_0x19b37b){return db[_0xfbcc('0x16')][_0xfbcc('0x1f')](_0x135378[_0xfbcc('0x20')],{'raw':_0x135378[_0xfbcc('0x17')]?_0x135378['options'][_0xfbcc('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x135378['options']?_0x135378[_0xfbcc('0x17')]['where']||null:null,'attributes':_0x135378[_0xfbcc('0x17')]?_0x135378['options'][_0xfbcc('0x1a')]||null:null,'limit':_0x135378['options']?_0x135378[_0xfbcc('0x17')][_0xfbcc('0x1b')]||null:null})[_0xfbcc('0xb')](function(_0x23586a){logger[_0xfbcc('0x21')](_0xfbcc('0x22'),_0x135378);logger[_0xfbcc('0xd')]('UpdateCmHopperBlack',_0x135378,JSON[_0xfbcc('0xe')](_0x23586a));_0x30338b(_0x23586a);})[_0xfbcc('0x14')](function(_0x54a9e5){logger[_0xfbcc('0xf')]('UpdateCmHopperBlack',_0x54a9e5[_0xfbcc('0x12')],_0x135378);_0x19b37b(_0x1c20ff[_0xfbcc('0xf')](0x1f4,_0x54a9e5['message']));});});};exports[_0xfbcc('0x23')]=function(_0xf4fa2c){var _0x3bdd7f=this;return new Promise(function(_0x80349a,_0x124ef2){return db[_0xfbcc('0x16')]['destroy']({'where':_0xf4fa2c['options']?_0xf4fa2c['options'][_0xfbcc('0x19')]||null:null})[_0xfbcc('0xb')](function(_0x5910fe){logger[_0xfbcc('0x21')](_0xfbcc('0x23'),_0xf4fa2c);logger[_0xfbcc('0xd')](_0xfbcc('0x23'),_0xf4fa2c,JSON[_0xfbcc('0xe')](_0x5910fe));_0x80349a(_0x5910fe);})[_0xfbcc('0x14')](function(_0x192e97){logger['error'](_0xfbcc('0x23'),_0x192e97[_0xfbcc('0x12')],_0xf4fa2c);_0x124ef2(_0x3bdd7f['error'](0x1f4,_0x192e97[_0xfbcc('0x12')]));});});};
\ No newline at end of file
+var _0x91f3=['http','request','then','request\x20sent','debug','stringify','error','code','CmHopperBlack,\x20%s,\x20%s','message','info','result','catch','CmHopperBlack','options','raw','limit','include','map','model','attributes','GetCmHopperBlack','UpdateCmHopperBlack','destroy','DestroyCmHopperBlack','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5e28c2,_0x1e48ab){var _0x1a8cc6=function(_0x1218bf){while(--_0x1218bf){_0x5e28c2['push'](_0x5e28c2['shift']());}};_0x1a8cc6(++_0x1e48ab);}(_0x91f3,0xa5));var _0x391f=function(_0x1f5c91,_0x462dbd){_0x1f5c91=_0x1f5c91-0x0;var _0x5f1657=_0x91f3[_0x1f5c91];return _0x5f1657;};'use strict';var _=require(_0x391f('0x0'));var util=require('util');var moment=require(_0x391f('0x1'));var BPromise=require(_0x391f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x391f('0x3'));var db=require(_0x391f('0x4'))['db'];var utils=require(_0x391f('0x5'));var logger=require(_0x391f('0x6'))(_0x391f('0x7'));var config=require(_0x391f('0x8'));var jayson=require(_0x391f('0x9'));var client=jayson['client'][_0x391f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d13c3,_0xae7567,_0x47fb0e){return new BPromise(function(_0x4ff51b,_0x33793b){return client[_0x391f('0xb')](_0x1d13c3,_0x47fb0e)[_0x391f('0xc')](function(_0x3d8505){logger['info']('CmHopperBlack,\x20%s,\x20%s',_0xae7567,_0x391f('0xd'));logger[_0x391f('0xe')]('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0xae7567,_0x391f('0xd'),JSON[_0x391f('0xf')](_0x3d8505));if(_0x3d8505[_0x391f('0x10')]){if(_0x3d8505['error'][_0x391f('0x11')]===0x1f4){logger['error'](_0x391f('0x12'),_0xae7567,_0x3d8505[_0x391f('0x10')]['message']);return _0x33793b(_0x3d8505['error'][_0x391f('0x13')]);}logger[_0x391f('0x10')](_0x391f('0x12'),_0xae7567,_0x3d8505[_0x391f('0x10')][_0x391f('0x13')]);return _0x4ff51b(_0x3d8505[_0x391f('0x10')]['message']);}else{logger[_0x391f('0x14')](_0x391f('0x12'),_0xae7567,'request\x20sent');_0x4ff51b(_0x3d8505[_0x391f('0x15')][_0x391f('0x13')]);}})[_0x391f('0x16')](function(_0x1d6378){logger['error'](_0x391f('0x12'),_0xae7567,_0x1d6378);_0x33793b(_0x1d6378);});});}exports['GetCmHopperBlack']=function(_0x4f2863){var _0x6e4ffb=this;return new Promise(function(_0x5cb133,_0x52bfc5){return db[_0x391f('0x17')]['findAll']({'raw':_0x4f2863[_0x391f('0x18')]?_0x4f2863[_0x391f('0x18')][_0x391f('0x19')]===undefined?!![]:![]:!![],'where':_0x4f2863[_0x391f('0x18')]?_0x4f2863[_0x391f('0x18')]['where']||null:null,'attributes':_0x4f2863['options']?_0x4f2863[_0x391f('0x18')]['attributes']||null:null,'limit':_0x4f2863[_0x391f('0x18')]?_0x4f2863['options'][_0x391f('0x1a')]||null:null,'include':_0x4f2863[_0x391f('0x18')]?_0x4f2863[_0x391f('0x18')][_0x391f('0x1b')]?_[_0x391f('0x1c')](_0x4f2863[_0x391f('0x18')][_0x391f('0x1b')],function(_0x43953){return{'model':db[_0x43953[_0x391f('0x1d')]],'as':_0x43953['as'],'attributes':_0x43953[_0x391f('0x1e')],'include':_0x43953[_0x391f('0x1b')]?_[_0x391f('0x1c')](_0x43953['include'],function(_0x4dfe6b){return{'model':db[_0x4dfe6b[_0x391f('0x1d')]],'as':_0x4dfe6b['as'],'attributes':_0x4dfe6b[_0x391f('0x1e')],'include':_0x4dfe6b[_0x391f('0x1b')]?_[_0x391f('0x1c')](_0x4dfe6b[_0x391f('0x1b')],function(_0x3c17c5){return{'model':db[_0x3c17c5[_0x391f('0x1d')]],'as':_0x3c17c5['as'],'attributes':_0x3c17c5[_0x391f('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x391f('0xc')](function(_0xb97028){logger[_0x391f('0x14')](_0x391f('0x1f'),_0x4f2863);logger[_0x391f('0xe')]('GetCmHopperBlack',_0x4f2863,JSON[_0x391f('0xf')](_0xb97028));_0x5cb133(_0xb97028);})[_0x391f('0x16')](function(_0x533637){logger[_0x391f('0x10')](_0x391f('0x1f'),_0x533637[_0x391f('0x13')],_0x4f2863);_0x52bfc5(_0x6e4ffb[_0x391f('0x10')](0x1f4,_0x533637[_0x391f('0x13')]));});});};exports[_0x391f('0x20')]=function(_0x597674){var _0x4704e8=this;return new Promise(function(_0x270fed,_0x51e9af){return db['CmHopperBlack']['update'](_0x597674['body'],{'raw':_0x597674['options']?_0x597674[_0x391f('0x18')][_0x391f('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x597674['options']?_0x597674[_0x391f('0x18')]['where']||null:null,'attributes':_0x597674[_0x391f('0x18')]?_0x597674[_0x391f('0x18')][_0x391f('0x1e')]||null:null,'limit':_0x597674[_0x391f('0x18')]?_0x597674[_0x391f('0x18')]['limit']||null:null})[_0x391f('0xc')](function(_0x4060bb){logger[_0x391f('0x14')](_0x391f('0x20'),_0x597674);logger[_0x391f('0xe')]('UpdateCmHopperBlack',_0x597674,JSON[_0x391f('0xf')](_0x4060bb));_0x270fed(_0x4060bb);})['catch'](function(_0x464022){logger[_0x391f('0x10')]('UpdateCmHopperBlack',_0x464022['message'],_0x597674);_0x51e9af(_0x4704e8[_0x391f('0x10')](0x1f4,_0x464022[_0x391f('0x13')]));});});};exports['DestroyCmHopperBlack']=function(_0x495d75){var _0x5283c6=this;return new Promise(function(_0x2fe95a,_0x44b49c){return db[_0x391f('0x17')][_0x391f('0x21')]({'where':_0x495d75[_0x391f('0x18')]?_0x495d75[_0x391f('0x18')]['where']||null:null})[_0x391f('0xc')](function(_0x2f04b0){logger['info'](_0x391f('0x22'),_0x495d75);logger[_0x391f('0xe')](_0x391f('0x22'),_0x495d75,JSON[_0x391f('0xf')](_0x2f04b0));_0x2fe95a(_0x2f04b0);})[_0x391f('0x16')](function(_0x28fa4a){logger[_0x391f('0x10')](_0x391f('0x22'),_0x28fa4a['message'],_0x495d75);_0x44b49c(_0x5283c6[_0x391f('0x10')](0x1f4,_0x28fa4a[_0x391f('0x13')]));});});};
\ No newline at end of file
index dfa8070..ef0eddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['describe','/:id','show','put','delete','destroy','exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperBlack.controller','get','isAuthenticated','index','/describe'];(function(_0x2a9fbb,_0x131305){var _0x48d733=function(_0x2ce7a7){while(--_0x2ce7a7){_0x2a9fbb['push'](_0x2a9fbb['shift']());}};_0x48d733(++_0x131305);}(_0xed1c,0xe4));var _0xced1=function(_0x73a95a,_0x122b6f){_0x73a95a=_0x73a95a-0x0;var _0x3b2957=_0xed1c[_0x73a95a];return _0x3b2957;};'use strict';var multer=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xced1('0x2'));var auth=require(_0xced1('0x3'));var interaction=require(_0xced1('0x4'));var config=require('../../config/environment');var controller=require(_0xced1('0x5'));router[_0xced1('0x6')]('/',auth[_0xced1('0x7')](),controller[_0xced1('0x8')]);router['get'](_0xced1('0x9'),auth[_0xced1('0x7')](),controller[_0xced1('0xa')]);router[_0xced1('0x6')](_0xced1('0xb'),auth[_0xced1('0x7')](),controller[_0xced1('0xc')]);router[_0xced1('0xd')]('/:id',auth[_0xced1('0x7')](),controller['update']);router[_0xced1('0xe')](_0xced1('0xb'),auth[_0xced1('0x7')](),controller[_0xced1('0xf')]);module[_0xced1('0x10')]=router;
\ No newline at end of file
+var _0x81c6=['delete','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','/:id','update'];(function(_0x4cf948,_0x25e07d){var _0x31d3d4=function(_0x54c0d3){while(--_0x54c0d3){_0x4cf948['push'](_0x4cf948['shift']());}};_0x31d3d4(++_0x25e07d);}(_0x81c6,0x1d5));var _0x681c=function(_0x1a31e8,_0x5387bc){_0x1a31e8=_0x1a31e8-0x0;var _0x3adc72=_0x81c6[_0x1a31e8];return _0x3adc72;};'use strict';var multer=require('multer');var util=require(_0x681c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x681c('0x1')]();var fs_extra=require(_0x681c('0x2'));var auth=require(_0x681c('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x681c('0x4'));var controller=require(_0x681c('0x5'));router[_0x681c('0x6')]('/',auth[_0x681c('0x7')](),controller['index']);router[_0x681c('0x6')](_0x681c('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x681c('0x6')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['show']);router['put'](_0x681c('0x9'),auth['isAuthenticated'](),controller[_0x681c('0xa')]);router[_0x681c('0xb')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7b21c5c..53415b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb792=['seconds','dispositionat','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','endtime','setDataValue','followuptime','diff'];(function(_0x2d70ba,_0x3ea95c){var _0x217b6c=function(_0x44275e){while(--_0x44275e){_0x2d70ba['push'](_0x2d70ba['shift']());}};_0x217b6c(++_0x3ea95c);}(_0xb792,0x78));var _0x2b79=function(_0x87b30c,_0x9e83f6){_0x87b30c=_0x87b30c-0x0;var _0x31019a=_0xb792[_0x87b30c];return _0x31019a;};'use strict';var Sequelize=require(_0x2b79('0x0'));var moment=require(_0x2b79('0x1'));module[_0x2b79('0x2')]={'state':{'type':Sequelize[_0x2b79('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x2b79('0x4')]},'scheduledat':{'type':Sequelize[_0x2b79('0x5')]},'countbusyretry':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x2b79('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x2b79('0x4')]},'originatecalleridname':{'type':Sequelize[_0x2b79('0x4')]},'calleridnum':{'type':Sequelize[_0x2b79('0x4')]},'calleridname':{'type':Sequelize[_0x2b79('0x4')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x2b79('0x5')]},'answertime':{'type':Sequelize[_0x2b79('0x5')]},'droptime':{'type':Sequelize[_0x2b79('0x5')]},'endtime':{'type':Sequelize[_0x2b79('0x5')]},'ringtime':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x2b79('0x4')]},'campaign':{'type':Sequelize[_0x2b79('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2b79('0x4')]},'reason':{'type':Sequelize[_0x2b79('0x4')]},'disposition':{'type':Sequelize[_0x2b79('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x2b79('0x4')]},'dispositionat':{'type':Sequelize[_0x2b79('0x5')],'set':function(_0x290841){var _0x55335e=this['getDataValue'](_0x2b79('0x6'));if(_0x55335e&&_0x290841){this[_0x2b79('0x7')](_0x2b79('0x8'),moment(_0x290841)[_0x2b79('0x9')](moment(_0x55335e),_0x2b79('0xa')));}return this[_0x2b79('0x7')](_0x2b79('0xb'),_0x290841);}},'amd':{'type':Sequelize[_0x2b79('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x2b79('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x2b79('0xc')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x2b79('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x2b79('0x5')]},'callback':{'type':Sequelize[_0x2b79('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2b79('0x5')]},'deleted':{'type':Sequelize[_0x2b79('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0x2b79('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2b79('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2bae=['sequelize','moment','exports','STRING','INTEGER','DATE','getDataValue','endtime','setDataValue','diff','BOOLEAN'];(function(_0x1611f9,_0xddc39c){var _0x1d066d=function(_0x1fdaea){while(--_0x1fdaea){_0x1611f9['push'](_0x1611f9['shift']());}};_0x1d066d(++_0xddc39c);}(_0x2bae,0x1d9));var _0xe2ba=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2bae[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe2ba('0x0'));var moment=require(_0xe2ba('0x1'));module[_0xe2ba('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xe2ba('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xe2ba('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xe2ba('0x3')]},'originatecalleridname':{'type':Sequelize[_0xe2ba('0x3')]},'calleridnum':{'type':Sequelize[_0xe2ba('0x3')]},'calleridname':{'type':Sequelize[_0xe2ba('0x3')]},'starttime':{'type':Sequelize[_0xe2ba('0x5')]},'responsetime':{'type':Sequelize[_0xe2ba('0x5')]},'answertime':{'type':Sequelize[_0xe2ba('0x5')]},'droptime':{'type':Sequelize[_0xe2ba('0x5')]},'endtime':{'type':Sequelize[_0xe2ba('0x5')]},'ringtime':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xe2ba('0x3')]},'campaign':{'type':Sequelize[_0xe2ba('0x3')]},'campaigntype':{'type':Sequelize[_0xe2ba('0x3')]},'membername':{'type':Sequelize[_0xe2ba('0x3')]},'reason':{'type':Sequelize[_0xe2ba('0x3')]},'disposition':{'type':Sequelize[_0xe2ba('0x3')]},'secondDisposition':{'type':Sequelize[_0xe2ba('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe2ba('0x3')]},'dispositionat':{'type':Sequelize[_0xe2ba('0x5')],'set':function(_0x2171bc){var _0x269d01=this[_0xe2ba('0x6')](_0xe2ba('0x7'));if(_0x269d01&&_0x2171bc){this[_0xe2ba('0x8')]('followuptime',moment(_0x2171bc)[_0xe2ba('0x9')](moment(_0x269d01),'seconds'));}return this[_0xe2ba('0x8')]('dispositionat',_0x2171bc);}},'amd':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'fax':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xe2ba('0x5')]},'callback':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xe2ba('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xe2ba('0x5')]},'deleted':{'type':Sequelize[_0xe2ba('0x3')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xe2ba('0x5')]},'recallme':{'type':Sequelize[_0xe2ba('0xa')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xe2ba('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xe2ba('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 68eb577..e25615c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','fromQuery','CampaignId','ANY_VALUE(CampaignId)','cm_hopper_final','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','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','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','CmHopperFinal','include','findAll','rows','show','params','rawAttributes','keys','length','includeAll','merge','describe','catch','body','find','countContactsQueueCampaignHopperFinal','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','into','cm_hopper','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','from','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)'];(function(_0xe6aba1,_0x4ff2b4){var _0x56482c=function(_0x130be4){while(--_0x130be4){_0xe6aba1['push'](_0xe6aba1['shift']());}};_0x56482c(++_0x4ff2b4);}(_0x5d58,0x187));var _0x85d5=function(_0x1b4cf6,_0xcb3c1b){_0x1b4cf6=_0x1b4cf6-0x0;var _0x418c74=_0x5d58[_0x1b4cf6];return _0x418c74;};'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['CmHopperFinal']['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['CmHopperFinal'][_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')]()['then'](respondWithResult(_0x12a03,null))[_0x85d5('0x40')](handleError(_0x12a03,null));};exports['update']=function(_0x1f2ef9,_0xd8db57){if(_0x1f2ef9[_0x85d5('0x41')]['uniqueid']){delete _0x1f2ef9['body']['uniqueid'];}return db[_0x85d5('0x34')][_0x85d5('0x42')]({'where':{'uniqueid':_0x1f2ef9[_0x85d5('0x39')]['id']}})['then'](handleEntityNotFound(_0xd8db57,null))['then'](saveUpdates(_0x1f2ef9[_0x85d5('0x41')],null))[_0x85d5('0x1c')](respondWithResult(_0xd8db57,null))[_0x85d5('0x40')](handleError(_0xd8db57,null));};exports[_0x85d5('0x43')]=function(_0x4b2dce,_0x3f69ea,_0x29442a){return db[_0x85d5('0x34')][_0x85d5('0x36')]({'raw':![],'where':{'VoiceQueueId':_0x4b2dce[_0x85d5('0x39')]['id']},'attributes':[[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x47')))),_0x85d5('0x48')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x49')))),_0x85d5('0x4a')],[db[_0x85d5('0x44')]['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x4b')))),_0x85d5('0x4c')],[db[_0x85d5('0x44')]['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x208,\x201,\x20null'))),_0x85d5('0x4d')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')]['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x85d5('0x4e')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x4f')))),_0x85d5('0x50')],[db['sequelize']['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')]('`state`\x20=\x2022,\x201,\x20null'))),_0x85d5('0x51')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize'][_0x85d5('0x46')](_0x85d5('0x52')))),_0x85d5('0x53')]]})['then'](handleEntityNotFound(_0x3f69ea,null))[_0x85d5('0x1c')](respondWithResult(_0x3f69ea,null))[_0x85d5('0x40')](handleError(_0x3f69ea,null));};exports[_0x85d5('0x54')]=function(_0x561bde,_0x34aa42,_0x1c3e2c){return db['CmHopperFinal'][_0x85d5('0x36')]({'raw':![],'where':{'CampaignId':_0x561bde['params']['id']},'attributes':[[db[_0x85d5('0x44')]['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x47')))),'noSuchContacts'],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x49')))),_0x85d5('0x4a')],[db[_0x85d5('0x44')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x85d5('0x44')]['literal'](_0x85d5('0x4b')))),_0x85d5('0x4c')],[db['sequelize']['fn']('COUNT',db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')]('`state`\x20=\x208,\x201,\x20null'))),_0x85d5('0x4d')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db['sequelize']['literal'](_0x85d5('0x55')))),'dropContacts'],[db['sequelize']['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')]['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x85d5('0x50')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db['sequelize']['fn']('IF',db[_0x85d5('0x44')][_0x85d5('0x46')](_0x85d5('0x56')))),_0x85d5('0x51')],[db[_0x85d5('0x44')]['fn'](_0x85d5('0x45'),db[_0x85d5('0x44')]['fn']('IF',db[_0x85d5('0x44')]['literal']('`state`\x20=\x2019,\x201,\x20null'))),_0x85d5('0x53')]]})[_0x85d5('0x1c')](handleEntityNotFound(_0x34aa42,null))[_0x85d5('0x1c')](respondWithResult(_0x34aa42,null))['catch'](handleError(_0x34aa42,null));};exports[_0x85d5('0x57')]=function(_0x1fdefb,_0x496586,_0x2dbd18){return db[_0x85d5('0x58')][_0x85d5('0x42')]({'where':{'id':_0x1fdefb[_0x85d5('0x39')]['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x496586,null))['then'](function(_0x35ba15){var _0x1b96eb;if(_0x35ba15){_0x1b96eb=squel[_0x85d5('0x59')]()[_0x85d5('0x5a')](_0x85d5('0x5b'))['fromQuery']([_0x85d5('0x5c'),_0x85d5('0x5d'),_0x85d5('0x5e'),_0x85d5('0x5f'),_0x85d5('0x60'),_0x85d5('0x61'),_0x85d5('0x62')],squel[_0x85d5('0x63')]()[_0x85d5('0x64')](_0x85d5('0x65'),'phone')[_0x85d5('0x64')](_0x85d5('0x66'),_0x85d5('0x5d'))[_0x85d5('0x64')](_0x85d5('0x67'),_0x85d5('0x5e'))['field'](_0x85d5('0x68'),'ListId')['field'](_0x85d5('0x69'),_0x85d5('0x60'))[_0x85d5('0x64')](_0x85d5('0x66'),_0x85d5('0x61'))[_0x85d5('0x64')](_0x85d5('0x66'),_0x85d5('0x62'))[_0x85d5('0x6a')]('cm_hopper_final')[_0x85d5('0x30')](_0x85d5('0x6b'),_0x1fdefb[_0x85d5('0x39')]['id'][_0x85d5('0x6c')]())[_0x85d5('0x30')](_0x85d5('0x6d'),_0x1fdefb[_0x85d5('0x41')][_0x85d5('0x6e')][_0x85d5('0x6c')]())[_0x85d5('0x30')](_0x85d5('0x6f'))[_0x85d5('0x30')](_0x85d5('0x70'),squel[_0x85d5('0x63')]()[_0x85d5('0x64')]('phone')['from'](_0x85d5('0x5b'))['where'](_0x85d5('0x6b'),_0x1fdefb[_0x85d5('0x39')]['id'][_0x85d5('0x6c')]()))[_0x85d5('0x30')](_0x85d5('0x70'),squel[_0x85d5('0x63')]()[_0x85d5('0x64')](_0x85d5('0x71'))[_0x85d5('0x6a')]('cm_hopper_final')[_0x85d5('0x30')](_0x85d5('0x6b'),_0x1fdefb['params']['id'][_0x85d5('0x6c')]())['where'](_0x85d5('0x72')))[_0x85d5('0x73')](_0x85d5('0x5e')))[_0x85d5('0x6c')]();return db['sequelize'][_0x85d5('0x27')](_0x1b96eb);}return[];})[_0x85d5('0x1c')](respondWithResult(_0x496586,null))['catch'](handleError(_0x496586,null));};exports[_0x85d5('0x74')]=function(_0x14e4e8,_0x57f26b,_0x45b1e2){return db[_0x85d5('0x75')][_0x85d5('0x42')]({'where':{'id':_0x14e4e8['params']['id']}})[_0x85d5('0x1c')](handleEntityNotFound(_0x57f26b,null))[_0x85d5('0x1c')](function(_0x2dacf7){var _0x387a3b;if(_0x2dacf7){_0x387a3b=squel[_0x85d5('0x59')]()[_0x85d5('0x5a')]('cm_hopper')[_0x85d5('0x76')]([_0x85d5('0x5c'),'scheduledAt',_0x85d5('0x5e'),'ListId',_0x85d5('0x77'),_0x85d5('0x61'),_0x85d5('0x62')],squel['select']()[_0x85d5('0x64')](_0x85d5('0x65'),_0x85d5('0x5c'))[_0x85d5('0x64')](_0x85d5('0x66'),'scheduledAt')[_0x85d5('0x64')](_0x85d5('0x67'),_0x85d5('0x5e'))[_0x85d5('0x64')]('ANY_VALUE(ListId)',_0x85d5('0x5f'))[_0x85d5('0x64')](_0x85d5('0x78'),'CampaignId')[_0x85d5('0x64')]('NOW()',_0x85d5('0x61'))[_0x85d5('0x64')]('NOW()','updatedAt')[_0x85d5('0x6a')](_0x85d5('0x79'))[_0x85d5('0x30')](_0x85d5('0x7a'),_0x14e4e8[_0x85d5('0x39')]['id'][_0x85d5('0x6c')]())[_0x85d5('0x30')](_0x85d5('0x6d'),_0x14e4e8['body'][_0x85d5('0x6e')][_0x85d5('0x6c')]())[_0x85d5('0x30')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x85d5('0x30')](_0x85d5('0x70'),squel['select']()[_0x85d5('0x64')](_0x85d5('0x5c'))[_0x85d5('0x6a')](_0x85d5('0x5b'))[_0x85d5('0x30')](_0x85d5('0x7a'),_0x14e4e8[_0x85d5('0x39')]['id']['toString']()))[_0x85d5('0x30')](_0x85d5('0x70'),squel[_0x85d5('0x63')]()[_0x85d5('0x64')]('calleridnum')[_0x85d5('0x6a')](_0x85d5('0x79'))[_0x85d5('0x30')](_0x85d5('0x7a'),_0x14e4e8[_0x85d5('0x39')]['id']['toString']())['where'](_0x85d5('0x72')))['group'](_0x85d5('0x5e')))[_0x85d5('0x6c')]();return db[_0x85d5('0x44')][_0x85d5('0x27')](_0x387a3b);}return[];})[_0x85d5('0x1c')](respondWithResult(_0x57f26b,null))[_0x85d5('0x40')](handleError(_0x57f26b,null));};exports[_0x85d5('0x7b')]=function(_0x48553d,_0xedb32d,_0x5366bc){return db[_0x85d5('0x7c')][_0x85d5('0x7d')]({'where':{'VoiceQueueId':_0x48553d[_0x85d5('0x41')]['VoiceQueueId'],'CampaignId':_0x48553d[_0x85d5('0x41')][_0x85d5('0x77')],'ContactId':_0x48553d[_0x85d5('0x41')]['ContactId']}})['then'](handleEntityNotFound(_0xedb32d,null))[_0x85d5('0x1c')](function(_0x428fd4){if(_0x428fd4){return _0x428fd4;}return null;})['then'](respondWithResult(_0xedb32d,null))[_0x85d5('0x40')](handleError(_0xedb32d,null));};
\ No newline at end of file
+var _0xadb5=['`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','noSuchContacts','VoiceQueue','find','insert','cm_hopper','fromQuery','phone','ContactId','ListId','createdAt','select','field','NOW()','scheduledAt','ANY_VALUE(ContactId)','ANY_VALUE(VoiceQueueId)','updatedAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','Campaign','into','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(ListId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','checkContactHopper','CmHopper','findOne','VoiceQueueId','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','CmHopperFinal','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','sequelize','literal','`state`\x20=\x200,\x201,\x20null','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts'];(function(_0x416320,_0x36fb4f){var _0xfd38ca=function(_0x1fc074){while(--_0x1fc074){_0x416320['push'](_0x416320['shift']());}};_0xfd38ca(++_0x36fb4f);}(_0xadb5,0xad));var _0x5adb=function(_0xe7526b,_0x3099c8){_0xe7526b=_0xe7526b-0x0;var _0x53a391=_0xadb5[_0xe7526b];return _0x53a391;};'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['CmHopperFinal']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'all':!![]}];}return db[_0x5adb('0x2a')][_0x5adb('0x40')](_0x5d457e);})['then'](function(_0x53f2c6){_0x1eac55[_0x5adb('0x41')]=_0x53f2c6;return _0x1eac55;})['then'](respondWithFilteredResult(_0x49992e,_0x5d457e))[_0x5adb('0x42')](handleError(_0x49992e,null));};exports[_0x5adb('0x43')]=function(_0x299746,_0x121714){var _0xdfecfd={'raw':!![],'where':{'id':_0x299746[_0x5adb('0x44')]['id']}},_0x522ee5={};_0x522ee5[_0x5adb('0x2e')]=_['keys'](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x522ee5['query']=_[_0x5adb('0x30')](_0x299746[_0x5adb('0x2f')]);_0x522ee5[_0x5adb('0x39')]=_[_0x5adb('0x31')](_0x522ee5[_0x5adb('0x2e')],_0x522ee5[_0x5adb('0x2f')]);_0xdfecfd[_0x5adb('0x32')]=_['intersection'](_0x522ee5['model'],qs[_0x5adb('0x33')](_0x299746[_0x5adb('0x2f')][_0x5adb('0x33')]));_0xdfecfd[_0x5adb('0x32')]=_0xdfecfd['attributes']['length']?_0xdfecfd[_0x5adb('0x32')]:_0x522ee5[_0x5adb('0x2e')];if(_0x299746[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0xdfecfd[_0x5adb('0x3f')]=[{'all':!![]}];}_0xdfecfd=_['merge']({},_0xdfecfd,_0x299746[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')]['find'](_0xdfecfd)[_0x5adb('0x22')](handleEntityNotFound(_0x121714,null))[_0x5adb('0x22')](respondWithResult(_0x121714,null))[_0x5adb('0x42')](handleError(_0x121714,null));};exports[_0x5adb('0x46')]=function(_0x186bd2,_0x3a5409){return db[_0x5adb('0x2a')][_0x5adb('0x46')]()['then'](respondWithResult(_0x3a5409,null))[_0x5adb('0x42')](handleError(_0x3a5409,null));};exports['update']=function(_0x51bc49,_0x5015ee){if(_0x51bc49[_0x5adb('0x47')][_0x5adb('0x48')]){delete _0x51bc49[_0x5adb('0x47')]['uniqueid'];}return db[_0x5adb('0x2a')]['find']({'where':{'uniqueid':_0x51bc49[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x5015ee,null))[_0x5adb('0x22')](saveUpdates(_0x51bc49['body'],null))[_0x5adb('0x22')](respondWithResult(_0x5015ee,null))['catch'](handleError(_0x5015ee,null));};exports[_0x5adb('0x49')]=function(_0x6dc067,_0x55c535,_0x2402a3){return db[_0x5adb('0x2a')][_0x5adb('0x40')]({'raw':![],'where':{'VoiceQueueId':_0x6dc067[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x4c')))),'noSuchContacts'],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize'][_0x5adb('0x4b')](_0x5adb('0x4e')))),_0x5adb('0x4f')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x52')))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),_0x5adb('0x58')],[db[_0x5adb('0x4a')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})['then'](handleEntityNotFound(_0x55c535,null))[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x42')](handleError(_0x55c535,null));};exports['countContactsIvrCampaignHopperFinal']=function(_0x5cb50e,_0x476e62,_0x1505f7){return db['CmHopperFinal'][_0x5adb('0x40')]({'raw':![],'where':{'CampaignId':_0x5cb50e[_0x5adb('0x44')]['id']},'attributes':[[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x4c')))),_0x5adb('0x5b')],[db[_0x5adb('0x4a')]['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x203,\x201,\x20null'))),_0x5adb('0x4f')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x50')))),_0x5adb('0x51')],[db['sequelize']['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x5adb('0x53')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db['sequelize']['literal'](_0x5adb('0x54')))),'dropContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')]['literal'](_0x5adb('0x55')))),_0x5adb('0x56')],[db[_0x5adb('0x4a')]['fn'](_0x5adb('0x4d'),db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x57')))),'reCallContacts'],[db['sequelize']['fn']('COUNT',db[_0x5adb('0x4a')]['fn']('IF',db[_0x5adb('0x4a')][_0x5adb('0x4b')](_0x5adb('0x59')))),_0x5adb('0x5a')]]})[_0x5adb('0x22')](handleEntityNotFound(_0x476e62,null))[_0x5adb('0x22')](respondWithResult(_0x476e62,null))[_0x5adb('0x42')](handleError(_0x476e62,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x5e55c2,_0x1fc73b,_0x56df90){return db[_0x5adb('0x5c')][_0x5adb('0x5d')]({'where':{'id':_0x5e55c2[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x1fc73b,null))[_0x5adb('0x22')](function(_0x236f59){var _0x338aee;if(_0x236f59){_0x338aee=squel[_0x5adb('0x5e')]()['into'](_0x5adb('0x5f'))[_0x5adb('0x60')]([_0x5adb('0x61'),'scheduledAt',_0x5adb('0x62'),_0x5adb('0x63'),'VoiceQueueId',_0x5adb('0x64'),'updatedAt'],squel[_0x5adb('0x65')]()[_0x5adb('0x66')]('ANY_VALUE(calleridnum)',_0x5adb('0x61'))[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')]('ANY_VALUE(ListId)',_0x5adb('0x63'))[_0x5adb('0x66')](_0x5adb('0x6a'),'VoiceQueueId')['field'](_0x5adb('0x67'),'createdAt')[_0x5adb('0x66')](_0x5adb('0x67'),_0x5adb('0x6b'))['from'](_0x5adb('0x6c'))[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())['where'](_0x5adb('0x6f'),_0x5e55c2[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())['where'](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x61'))[_0x5adb('0x73')]('cm_hopper')[_0x5adb('0x37')](_0x5adb('0x6d'),_0x5e55c2['params']['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x5adb('0x65')]()['field'](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')]('VoiceQueueId\x20=\x20?',_0x5e55c2[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')]('ContactId'))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')][_0x5adb('0x2f')](_0x338aee);}return[];})[_0x5adb('0x22')](respondWithResult(_0x1fc73b,null))['catch'](handleError(_0x1fc73b,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x3f3db9,_0x461a07,_0x2e5c96){return db[_0x5adb('0x77')][_0x5adb('0x5d')]({'where':{'id':_0x3f3db9[_0x5adb('0x44')]['id']}})[_0x5adb('0x22')](handleEntityNotFound(_0x461a07,null))['then'](function(_0xda26cc){var _0x14bada;if(_0xda26cc){_0x14bada=squel[_0x5adb('0x5e')]()[_0x5adb('0x78')]('cm_hopper')[_0x5adb('0x60')]([_0x5adb('0x61'),_0x5adb('0x68'),_0x5adb('0x62'),_0x5adb('0x63'),_0x5adb('0x79'),_0x5adb('0x64'),_0x5adb('0x6b')],squel[_0x5adb('0x65')]()['field'](_0x5adb('0x7a'),_0x5adb('0x61'))['field'](_0x5adb('0x67'),_0x5adb('0x68'))[_0x5adb('0x66')](_0x5adb('0x69'),_0x5adb('0x62'))[_0x5adb('0x66')](_0x5adb('0x7b'),_0x5adb('0x63'))['field'](_0x5adb('0x7c'),_0x5adb('0x79'))['field'](_0x5adb('0x67'),_0x5adb('0x64'))[_0x5adb('0x66')]('NOW()','updatedAt')[_0x5adb('0x73')](_0x5adb('0x6c'))[_0x5adb('0x37')]('CampaignId\x20=\x20?',_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x6f'),_0x3f3db9[_0x5adb('0x47')][_0x5adb('0x70')][_0x5adb('0x6e')]())[_0x5adb('0x37')](_0x5adb('0x71'))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()['field']('phone')[_0x5adb('0x73')](_0x5adb('0x5f'))['where'](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id'][_0x5adb('0x6e')]()))[_0x5adb('0x37')](_0x5adb('0x72'),squel[_0x5adb('0x65')]()[_0x5adb('0x66')](_0x5adb('0x74'))[_0x5adb('0x73')]('cm_hopper_final')[_0x5adb('0x37')](_0x5adb('0x7d'),_0x3f3db9[_0x5adb('0x44')]['id']['toString']())[_0x5adb('0x37')](_0x5adb('0x75')))[_0x5adb('0x76')](_0x5adb('0x62')))[_0x5adb('0x6e')]();return db[_0x5adb('0x4a')]['query'](_0x14bada);}return[];})[_0x5adb('0x22')](respondWithResult(_0x461a07,null))[_0x5adb('0x42')](handleError(_0x461a07,null));};exports[_0x5adb('0x7e')]=function(_0x1e5532,_0x2c3af8,_0x3a201a){return db[_0x5adb('0x7f')][_0x5adb('0x80')]({'where':{'VoiceQueueId':_0x1e5532[_0x5adb('0x47')][_0x5adb('0x81')],'CampaignId':_0x1e5532['body'][_0x5adb('0x79')],'ContactId':_0x1e5532['body'][_0x5adb('0x62')]}})[_0x5adb('0x22')](handleEntityNotFound(_0x2c3af8,null))[_0x5adb('0x22')](function(_0x193a29){if(_0x193a29){return _0x193a29;}return null;})[_0x5adb('0x22')](respondWithResult(_0x2c3af8,null))['catch'](handleError(_0x2c3af8,null));};
\ No newline at end of file
index d025c05..f8c75e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c73=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','calleridnum','lodash','util'];(function(_0x5d5f03,_0x4d8cfc){var _0x4e1cb8=function(_0x1f84a){while(--_0x1f84a){_0x5d5f03['push'](_0x5d5f03['shift']());}};_0x4e1cb8(++_0x4d8cfc);}(_0x6c73,0x177));var _0x36c7=function(_0x530db1,_0x2b9531){_0x530db1=_0x530db1-0x0;var _0x31c1f2=_0x6c73[_0x530db1];return _0x31c1f2;};'use strict';var _=require(_0x36c7('0x0'));var util=require(_0x36c7('0x1'));var logger=require(_0x36c7('0x2'))(_0x36c7('0x3'));var moment=require(_0x36c7('0x4'));var BPromise=require(_0x36c7('0x5'));var rp=require(_0x36c7('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x36c7('0x7'));var config=require(_0x36c7('0x8'));var attributes=require(_0x36c7('0x9'));module[_0x36c7('0xa')]=function(_0x57d958,_0x1a6fce){return _0x57d958[_0x36c7('0xb')]('CmHopperFinal',attributes,{'tableName':'cm_hopper_final','paranoid':![],'indexes':[{'name':_0x36c7('0xc'),'fields':['calleridnum']},{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa6a6=['calleridnum','uniqueid','util','../../config/logger','api','moment','request-promise','path','rimraf','./cmHopperFinal.attributes','define','CmHopperFinal','cm_hopper_final'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xa6a6,0x6a));var _0x6a6a=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xa6a6[_0x433a86];return _0x23000c;};'use strict';var _=require('lodash');var util=require(_0x6a6a('0x0'));var logger=require(_0x6a6a('0x1'))(_0x6a6a('0x2'));var moment=require(_0x6a6a('0x3'));var BPromise=require('bluebird');var rp=require(_0x6a6a('0x4'));var fs=require('fs');var path=require(_0x6a6a('0x5'));var rimraf=require(_0x6a6a('0x6'));var config=require('../../config/environment');var attributes=require(_0x6a6a('0x7'));module['exports']=function(_0x1905f0,_0x30b602){return _0x1905f0[_0x6a6a('0x8')](_0x6a6a('0x9'),attributes,{'tableName':_0x6a6a('0xa'),'paranoid':![],'indexes':[{'name':_0x6a6a('0xb'),'fields':['calleridnum']},{'name':_0x6a6a('0xc'),'fields':[_0x6a6a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 2f0cbe5..ead98d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x513710,_0x1c1e32){var _0x369347=function(_0x5d48da){while(--_0x5d48da){_0x513710['push'](_0x513710['shift']());}};_0x369347(++_0x1c1e32);}(_0xb10b,0x12a));var _0xbb10=function(_0x53286a,_0x485c92){_0x53286a=_0x53286a-0x0;var _0x5730ff=_0xb10b[_0x53286a];return _0x5730ff;};'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
+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(_0xa3b4e8,_0x1a79e9){var _0x13a398=function(_0x48f22a){while(--_0x48f22a){_0xa3b4e8['push'](_0xa3b4e8['shift']());}};_0x13a398(++_0x1a79e9);}(_0xb10b,0x12a));var _0xbb10=function(_0x432c36,_0x4082e8){_0x432c36=_0x432c36-0x0;var _0x3a14d0=_0xb10b[_0x432c36];return _0x3a14d0;};'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 22d132a..5899659 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9025=['checkContactHopper','put','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','post'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x9025,0x17c));var _0x5902=function(_0x69a2a4,_0x391552){_0x69a2a4=_0x69a2a4-0x0;var _0x3496da=_0x9025[_0x69a2a4];return _0x3496da;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x5902('0x0'));var express=require(_0x5902('0x1'));var router=express[_0x5902('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5902('0x3'));var interaction=require(_0x5902('0x4'));var config=require(_0x5902('0x5'));var controller=require(_0x5902('0x6'));router[_0x5902('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0x5902('0x8')](),controller[_0x5902('0x9')]);router['get'](_0x5902('0xa'),auth[_0x5902('0x8')](),controller[_0x5902('0xb')]);router[_0x5902('0x7')](_0x5902('0xc'),auth['isAuthenticated'](),controller[_0x5902('0xd')]);router[_0x5902('0x7')](_0x5902('0xe'),auth[_0x5902('0x8')](),controller[_0x5902('0xf')]);router['post']('/voice/queue/moveContacts/:id',auth['isAuthenticated'](),controller[_0x5902('0x10')]);router['post'](_0x5902('0x11'),auth[_0x5902('0x8')](),controller['moveContactsIvrCampaignHopperFinal']);router[_0x5902('0x12')]('/checkContactHopper',auth[_0x5902('0x8')](),controller[_0x5902('0x13')]);router[_0x5902('0x14')](_0x5902('0xa'),auth[_0x5902('0x8')](),controller['update']);module['exports']=router;
\ No newline at end of file
+var _0x56c8=['get','isAuthenticated','index','/describe','/:id','show','countContactsQueueCampaignHopperFinal','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0xe9fca1,_0x5ba251){var _0x55ae32=function(_0x553090){while(--_0x553090){_0xe9fca1['push'](_0xe9fca1['shift']());}};_0x55ae32(++_0x5ba251);}(_0x56c8,0x12f));var _0x856c=function(_0x1a86e3,_0x5b9012){_0x1a86e3=_0x1a86e3-0x0;var _0x3a7640=_0x56c8[_0x1a86e3];return _0x3a7640;};'use strict';var multer=require(_0x856c('0x0'));var util=require(_0x856c('0x1'));var path=require(_0x856c('0x2'));var timeout=require(_0x856c('0x3'));var express=require('express');var router=express[_0x856c('0x4')]();var fs_extra=require(_0x856c('0x5'));var auth=require(_0x856c('0x6'));var interaction=require(_0x856c('0x7'));var config=require(_0x856c('0x8'));var controller=require('./cmHopperFinal.controller');router[_0x856c('0x9')]('/',auth[_0x856c('0xa')](),controller[_0x856c('0xb')]);router[_0x856c('0x9')](_0x856c('0xc'),auth[_0x856c('0xa')](),controller['describe']);router['get'](_0x856c('0xd'),auth[_0x856c('0xa')](),controller[_0x856c('0xe')]);router['get']('/voice/queue/countAttributes/:id',auth['isAuthenticated'](),controller[_0x856c('0xf')]);router[_0x856c('0x9')](_0x856c('0x10'),auth['isAuthenticated'](),controller[_0x856c('0x11')]);router[_0x856c('0x12')]('/voice/queue/moveContacts/:id',auth[_0x856c('0xa')](),controller[_0x856c('0x13')]);router[_0x856c('0x12')](_0x856c('0x14'),auth[_0x856c('0xa')](),controller[_0x856c('0x15')]);router[_0x856c('0x12')](_0x856c('0x16'),auth['isAuthenticated'](),controller[_0x856c('0x17')]);router['put'](_0x856c('0xd'),auth[_0x856c('0xa')](),controller[_0x856c('0x18')]);module[_0x856c('0x19')]=router;
\ No newline at end of file
index c1599b9..bde34e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ff6=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0x524d91,_0x5a1414){var _0x20ac79=function(_0x4abfe1){while(--_0x4abfe1){_0x524d91['push'](_0x524d91['shift']());}};_0x20ac79(++_0x5a1414);}(_0x7ff6,0xf9));var _0x67ff=function(_0x8c3071,_0x1b2f28){_0x8c3071=_0x8c3071-0x0;var _0x8f8dc7=_0x7ff6[_0x8c3071];return _0x8f8dc7;};'use strict';var Sequelize=require(_0x67ff('0x0'));module[_0x67ff('0x1')]={'state':{'type':Sequelize[_0x67ff('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x67ff('0x3')]},'scheduledat':{'type':Sequelize[_0x67ff('0x4')]},'countbusyretry':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x67ff('0x3')]},'originatecalleridnum':{'type':Sequelize[_0x67ff('0x3')]},'originatecalleridname':{'type':Sequelize[_0x67ff('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x67ff('0x3')]},'starttime':{'type':Sequelize[_0x67ff('0x4')]},'responsetime':{'type':Sequelize[_0x67ff('0x4')]},'answertime':{'type':Sequelize[_0x67ff('0x4')]},'droptime':{'type':Sequelize[_0x67ff('0x4')]},'endtime':{'type':Sequelize[_0x67ff('0x4')]},'ringtime':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize[_0x67ff('0x3')]},'campaigntype':{'type':Sequelize[_0x67ff('0x3')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x67ff('0x3')]},'amd':{'type':Sequelize[_0x67ff('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x67ff('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x67ff('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x67ff('0x4')]},'recallme':{'type':Sequelize[_0x67ff('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize[_0x67ff('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x67ff('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x01c0=['exports','INTEGER','DATE','STRING','BOOLEAN','sequelize'];(function(_0x5e6577,_0x13df2d){var _0x518f07=function(_0x5b1cbd){while(--_0x5b1cbd){_0x5e6577['push'](_0x5e6577['shift']());}};_0x518f07(++_0x13df2d);}(_0x01c0,0xcb));var _0x001c=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x01c0[_0x12f688];return _0x59c3de;};'use strict';var Sequelize=require(_0x001c('0x0'));module[_0x001c('0x1')]={'state':{'type':Sequelize[_0x001c('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0x001c('0x3')]},'countbusyretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x001c('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x001c('0x4')]},'originatecalleridname':{'type':Sequelize[_0x001c('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x001c('0x4')]},'starttime':{'type':Sequelize[_0x001c('0x3')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x001c('0x3')]},'droptime':{'type':Sequelize[_0x001c('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x001c('0x4')]},'campaign':{'type':Sequelize[_0x001c('0x4')]},'campaigntype':{'type':Sequelize[_0x001c('0x4')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x001c('0x4')]},'amd':{'type':Sequelize[_0x001c('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0x001c('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x001c('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x001c('0x3')]},'recallme':{'type':Sequelize[_0x001c('0x5')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x001c('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x001c('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d93ea92..80403a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93da=['fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','options','CmHopperHistory','includeAll','include','findAll','rows','params','keys','catch','create','body','describe','update','uniqueid','find','eml-format','rimraf'];(function(_0x253635,_0x589a5f){var _0x25b000=function(_0x2a5da2){while(--_0x2a5da2){_0x253635['push'](_0x253635['shift']());}};_0x25b000(++_0x589a5f);}(_0x93da,0x12a));var _0xa93d=function(_0x44f575,_0x1df8c5){_0x44f575=_0x44f575-0x0;var _0x4d61e8=_0x93da[_0x44f575];return _0x4d61e8;};'use strict';var emlformat=require(_0xa93d('0x0'));var rimraf=require(_0xa93d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa93d('0x2'));var rp=require(_0xa93d('0x3'));var moment=require(_0xa93d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa93d('0x5'));var util=require(_0xa93d('0x6'));var path=require(_0xa93d('0x7'));var sox=require(_0xa93d('0x8'));var csv=require(_0xa93d('0x9'));var ejs=require(_0xa93d('0xa'));var fs=require('fs');var fs_extra=require(_0xa93d('0xb'));var _=require(_0xa93d('0xc'));var squel=require(_0xa93d('0xd'));var crypto=require(_0xa93d('0xe'));var jsforce=require(_0xa93d('0xf'));var deskjs=require(_0xa93d('0x10'));var toCsv=require(_0xa93d('0x9'));var querystring=require('querystring');var Papa=require(_0xa93d('0x11'));var Redis=require(_0xa93d('0x12'));var authService=require(_0xa93d('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa93d('0x14'));var logger=require(_0xa93d('0x15'))(_0xa93d('0x16'));var utils=require(_0xa93d('0x17'));var config=require(_0xa93d('0x18'));var licenseUtil=require(_0xa93d('0x19'));var db=require(_0xa93d('0x1a'))['db'];function respondWithStatusCode(_0x111c60,_0x5e9870){_0x5e9870=_0x5e9870||0xcc;return function(_0x59306b){if(_0x59306b){return _0x111c60[_0xa93d('0x1b')](_0x5e9870);}return _0x111c60[_0xa93d('0x1c')](_0x5e9870)[_0xa93d('0x1d')]();};}function respondWithResult(_0x3bb996,_0x4aea2a){_0x4aea2a=_0x4aea2a||0xc8;return function(_0x31c713){if(_0x31c713){return _0x3bb996[_0xa93d('0x1c')](_0x4aea2a)['json'](_0x31c713);}};}function respondWithFilteredResult(_0x20154b,_0x43ded1){return function(_0x48c5c5){if(_0x48c5c5){var _0x194338=typeof _0x43ded1[_0xa93d('0x1e')]==='undefined'&&typeof _0x43ded1[_0xa93d('0x1f')]===_0xa93d('0x20');var _0x32d206=_0x48c5c5[_0xa93d('0x21')];var _0x1ebc81=_0x194338?0x0:_0x43ded1[_0xa93d('0x1e')];var _0x5f7b06=_0x194338?_0x48c5c5[_0xa93d('0x21')]:_0x43ded1[_0xa93d('0x1e')]+_0x43ded1[_0xa93d('0x1f')];var _0xe68696;if(_0x5f7b06>=_0x32d206){_0x5f7b06=_0x32d206;_0xe68696=0xc8;}else{_0xe68696=0xce;}_0x20154b[_0xa93d('0x1c')](_0xe68696);return _0x20154b['set'](_0xa93d('0x22'),_0x1ebc81+'-'+_0x5f7b06+'/'+_0x32d206)[_0xa93d('0x23')](_0x48c5c5);}return null;};}function patchUpdates(_0xe6e0){return function(_0x17ffd0){try{jsonpatch['apply'](_0x17ffd0,_0xe6e0,!![]);}catch(_0x12208e){return BPromise['reject'](_0x12208e);}return _0x17ffd0['save']();};}function saveUpdates(_0x15f899,_0x34d2bc){return function(_0x30bd12){if(_0x30bd12){return _0x30bd12['update'](_0x15f899)[_0xa93d('0x24')](function(_0x22edb3){return _0x22edb3;});}return null;};}function removeEntity(_0x566bf3,_0x16df08){return function(_0xcb9e40){if(_0xcb9e40){return _0xcb9e40['destroy']()[_0xa93d('0x24')](function(){_0x566bf3[_0xa93d('0x1c')](0xcc)[_0xa93d('0x1d')]();});}};}function handleEntityNotFound(_0x8ec91b,_0x155864){return function(_0x528ec9){if(!_0x528ec9){_0x8ec91b['sendStatus'](0x194);}return _0x528ec9;};}function handleError(_0x4cc46d,_0x3d3cc3){_0x3d3cc3=_0x3d3cc3||0x1f4;return function(_0xe8e48d){logger[_0xa93d('0x25')](_0xe8e48d[_0xa93d('0x26')]);if(_0xe8e48d[_0xa93d('0x27')]){delete _0xe8e48d[_0xa93d('0x27')];}_0x4cc46d[_0xa93d('0x1c')](_0x3d3cc3)[_0xa93d('0x28')](_0xe8e48d);};}exports[_0xa93d('0x29')]=function(_0x22d24b,_0x30c7de){var _0x3e18df={},_0x39a5d0={},_0x246157={'count':0x0,'rows':[]};var _0x4acae7=_[_0xa93d('0x2a')](db['CmHopperHistory'][_0xa93d('0x2b')],function(_0x577de5){return{'name':_0x577de5[_0xa93d('0x2c')],'type':_0x577de5[_0xa93d('0x2d')]['key']};});_0x39a5d0[_0xa93d('0x2e')]=_[_0xa93d('0x2a')](_0x4acae7,_0xa93d('0x27'));_0x39a5d0[_0xa93d('0x2f')]=_['keys'](_0x22d24b[_0xa93d('0x2f')]);_0x39a5d0[_0xa93d('0x30')]=_[_0xa93d('0x31')](_0x39a5d0[_0xa93d('0x2e')],_0x39a5d0[_0xa93d('0x2f')]);_0x3e18df['attributes']=_[_0xa93d('0x31')](_0x39a5d0['model'],qs[_0xa93d('0x32')](_0x22d24b['query'][_0xa93d('0x32')]));_0x3e18df[_0xa93d('0x33')]=_0x3e18df[_0xa93d('0x33')][_0xa93d('0x34')]?_0x3e18df[_0xa93d('0x33')]:_0x39a5d0[_0xa93d('0x2e')];if(!_0x22d24b['query']['hasOwnProperty'](_0xa93d('0x35'))){_0x3e18df[_0xa93d('0x1f')]=qs[_0xa93d('0x1f')](_0x22d24b[_0xa93d('0x2f')][_0xa93d('0x1f')]);_0x3e18df[_0xa93d('0x1e')]=qs[_0xa93d('0x1e')](_0x22d24b[_0xa93d('0x2f')][_0xa93d('0x1e')]);}_0x3e18df[_0xa93d('0x36')]=qs['sort'](_0x22d24b[_0xa93d('0x2f')][_0xa93d('0x37')]);_0x3e18df['where']=qs[_0xa93d('0x30')](_[_0xa93d('0x38')](_0x22d24b[_0xa93d('0x2f')],_0x39a5d0[_0xa93d('0x30')]),_0x4acae7);if(_0x22d24b[_0xa93d('0x2f')][_0xa93d('0x39')]){_0x3e18df[_0xa93d('0x3a')]=_[_0xa93d('0x3b')](_0x3e18df[_0xa93d('0x3a')],{'$or':_[_0xa93d('0x2a')](_0x4acae7,function(_0x3592f4){if(_0x3592f4[_0xa93d('0x2d')]!=='VIRTUAL'){var _0x45aa99={};_0x45aa99[_0x3592f4[_0xa93d('0x27')]]={'$like':'%'+_0x22d24b['query'][_0xa93d('0x39')]+'%'};return _0x45aa99;}})});}_0x3e18df=_[_0xa93d('0x3b')]({},_0x3e18df,_0x22d24b[_0xa93d('0x3c')]);var _0x40a915={'where':_0x3e18df[_0xa93d('0x3a')]};return db[_0xa93d('0x3d')]['count'](_0x40a915)[_0xa93d('0x24')](function(_0x48bbad){_0x246157['count']=_0x48bbad;if(_0x22d24b['query'][_0xa93d('0x3e')]){_0x3e18df[_0xa93d('0x3f')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xa93d('0x40')](_0x3e18df);})['then'](function(_0x154e5f){_0x246157[_0xa93d('0x41')]=_0x154e5f;return _0x246157;})[_0xa93d('0x24')](respondWithFilteredResult(_0x30c7de,_0x3e18df))['catch'](handleError(_0x30c7de,null));};exports['show']=function(_0x4aaab3,_0x118f80){var _0x29cd49={'raw':!![],'where':{'id':_0x4aaab3[_0xa93d('0x42')]['id']}},_0x5173f3={};_0x5173f3['model']=_[_0xa93d('0x43')](db[_0xa93d('0x3d')][_0xa93d('0x2b')]);_0x5173f3['query']=_[_0xa93d('0x43')](_0x4aaab3[_0xa93d('0x2f')]);_0x5173f3[_0xa93d('0x30')]=_[_0xa93d('0x31')](_0x5173f3[_0xa93d('0x2e')],_0x5173f3[_0xa93d('0x2f')]);_0x29cd49[_0xa93d('0x33')]=_[_0xa93d('0x31')](_0x5173f3[_0xa93d('0x2e')],qs[_0xa93d('0x32')](_0x4aaab3[_0xa93d('0x2f')]['fields']));_0x29cd49[_0xa93d('0x33')]=_0x29cd49[_0xa93d('0x33')][_0xa93d('0x34')]?_0x29cd49['attributes']:_0x5173f3[_0xa93d('0x2e')];if(_0x4aaab3[_0xa93d('0x2f')]['includeAll']){_0x29cd49[_0xa93d('0x3f')]=[{'all':!![]}];}_0x29cd49=_['merge']({},_0x29cd49,_0x4aaab3[_0xa93d('0x3c')]);return db['CmHopperHistory']['find'](_0x29cd49)[_0xa93d('0x24')](handleEntityNotFound(_0x118f80,null))[_0xa93d('0x24')](respondWithResult(_0x118f80,null))[_0xa93d('0x44')](handleError(_0x118f80,null));};exports[_0xa93d('0x45')]=function(_0x859b5,_0x3de4a8){return db[_0xa93d('0x3d')][_0xa93d('0x45')](_0x859b5[_0xa93d('0x46')],{})[_0xa93d('0x24')](respondWithResult(_0x3de4a8,0xc9))[_0xa93d('0x44')](handleError(_0x3de4a8,null));};exports[_0xa93d('0x47')]=function(_0x4ed0b0,_0x5556d3){return db['CmHopperHistory']['describe']()[_0xa93d('0x24')](respondWithResult(_0x5556d3,null))[_0xa93d('0x44')](handleError(_0x5556d3,null));};exports[_0xa93d('0x48')]=function(_0x56e8d6,_0x3cd66a){if(_0x56e8d6['body'][_0xa93d('0x49')]){delete _0x56e8d6[_0xa93d('0x46')][_0xa93d('0x49')];}return db[_0xa93d('0x3d')][_0xa93d('0x4a')]({'where':{'uniqueid':_0x56e8d6[_0xa93d('0x42')]['id']}})['then'](handleEntityNotFound(_0x3cd66a,null))[_0xa93d('0x24')](saveUpdates(_0x56e8d6[_0xa93d('0x46')],null))['then'](respondWithResult(_0x3cd66a,null))[_0xa93d('0x44')](handleError(_0x3cd66a,null));};
\ No newline at end of file
+var _0x2d2b=['squel','crypto','jsforce','desk.js','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','offset','limit','undefined','count','set','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','map','CmHopperHistory','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','includeAll','findAll','catch','show','params','include','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash'];(function(_0x31982b,_0x40a026){var _0x2e8a4c=function(_0x47395d){while(--_0x47395d){_0x31982b['push'](_0x31982b['shift']());}};_0x2e8a4c(++_0x40a026);}(_0x2d2b,0xe1));var _0xb2d2=function(_0xa510ab,_0x51bc81){_0xa510ab=_0xa510ab-0x0;var _0x54840e=_0x2d2b[_0xa510ab];return _0x54840e;};'use strict';var emlformat=require(_0xb2d2('0x0'));var rimraf=require(_0xb2d2('0x1'));var zipdir=require(_0xb2d2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb2d2('0x3'));var moment=require(_0xb2d2('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb2d2('0x5'));var util=require(_0xb2d2('0x6'));var path=require(_0xb2d2('0x7'));var sox=require(_0xb2d2('0x8'));var csv=require(_0xb2d2('0x9'));var ejs=require(_0xb2d2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb2d2('0xb'));var squel=require(_0xb2d2('0xc'));var crypto=require(_0xb2d2('0xd'));var jsforce=require(_0xb2d2('0xe'));var deskjs=require(_0xb2d2('0xf'));var toCsv=require(_0xb2d2('0x9'));var querystring=require('querystring');var Papa=require(_0xb2d2('0x10'));var Redis=require(_0xb2d2('0x11'));var authService=require(_0xb2d2('0x12'));var qs=require(_0xb2d2('0x13'));var as=require(_0xb2d2('0x14'));var hardwareService=require(_0xb2d2('0x15'));var logger=require('../../config/logger')(_0xb2d2('0x16'));var utils=require(_0xb2d2('0x17'));var config=require(_0xb2d2('0x18'));var licenseUtil=require(_0xb2d2('0x19'));var db=require(_0xb2d2('0x1a'))['db'];function respondWithStatusCode(_0x3ba062,_0x5c93e7){_0x5c93e7=_0x5c93e7||0xcc;return function(_0x168802){if(_0x168802){return _0x3ba062[_0xb2d2('0x1b')](_0x5c93e7);}return _0x3ba062['status'](_0x5c93e7)['end']();};}function respondWithResult(_0x25d95f,_0x2ea731){_0x2ea731=_0x2ea731||0xc8;return function(_0x285d66){if(_0x285d66){return _0x25d95f[_0xb2d2('0x1c')](_0x2ea731)['json'](_0x285d66);}};}function respondWithFilteredResult(_0x3bd50c,_0x557432){return function(_0x1baf0d){if(_0x1baf0d){var _0x379c42=typeof _0x557432[_0xb2d2('0x1d')]==='undefined'&&typeof _0x557432[_0xb2d2('0x1e')]===_0xb2d2('0x1f');var _0x5da08d=_0x1baf0d[_0xb2d2('0x20')];var _0x346341=_0x379c42?0x0:_0x557432[_0xb2d2('0x1d')];var _0x39b3df=_0x379c42?_0x1baf0d['count']:_0x557432[_0xb2d2('0x1d')]+_0x557432[_0xb2d2('0x1e')];var _0x5ecb7b;if(_0x39b3df>=_0x5da08d){_0x39b3df=_0x5da08d;_0x5ecb7b=0xc8;}else{_0x5ecb7b=0xce;}_0x3bd50c[_0xb2d2('0x1c')](_0x5ecb7b);return _0x3bd50c[_0xb2d2('0x21')]('Content-Range',_0x346341+'-'+_0x39b3df+'/'+_0x5da08d)['json'](_0x1baf0d);}return null;};}function patchUpdates(_0x1ad4c5){return function(_0x4f41ea){try{jsonpatch[_0xb2d2('0x22')](_0x4f41ea,_0x1ad4c5,!![]);}catch(_0x45bcdd){return BPromise[_0xb2d2('0x23')](_0x45bcdd);}return _0x4f41ea[_0xb2d2('0x24')]();};}function saveUpdates(_0x899a1a,_0x2ca3d2){return function(_0x42c65f){if(_0x42c65f){return _0x42c65f[_0xb2d2('0x25')](_0x899a1a)['then'](function(_0x213fe0){return _0x213fe0;});}return null;};}function removeEntity(_0x403b97,_0x17bfc7){return function(_0x13ebcd){if(_0x13ebcd){return _0x13ebcd[_0xb2d2('0x26')]()[_0xb2d2('0x27')](function(){_0x403b97['status'](0xcc)[_0xb2d2('0x28')]();});}};}function handleEntityNotFound(_0x287666,_0x151061){return function(_0x49e2a2){if(!_0x49e2a2){_0x287666['sendStatus'](0x194);}return _0x49e2a2;};}function handleError(_0x51bc5e,_0x3b0d78){_0x3b0d78=_0x3b0d78||0x1f4;return function(_0x4def5b){logger[_0xb2d2('0x29')](_0x4def5b[_0xb2d2('0x2a')]);if(_0x4def5b['name']){delete _0x4def5b[_0xb2d2('0x2b')];}_0x51bc5e[_0xb2d2('0x1c')](_0x3b0d78)[_0xb2d2('0x2c')](_0x4def5b);};}exports[_0xb2d2('0x2d')]=function(_0x5e7e61,_0x4d5570){var _0x441131={},_0xe6884a={},_0x23c717={'count':0x0,'rows':[]};var _0x99d760=_[_0xb2d2('0x2e')](db[_0xb2d2('0x2f')][_0xb2d2('0x30')],function(_0x35dd7b){return{'name':_0x35dd7b[_0xb2d2('0x31')],'type':_0x35dd7b[_0xb2d2('0x32')]['key']};});_0xe6884a[_0xb2d2('0x33')]=_['map'](_0x99d760,_0xb2d2('0x2b'));_0xe6884a[_0xb2d2('0x34')]=_[_0xb2d2('0x35')](_0x5e7e61[_0xb2d2('0x34')]);_0xe6884a[_0xb2d2('0x36')]=_['intersection'](_0xe6884a['model'],_0xe6884a[_0xb2d2('0x34')]);_0x441131['attributes']=_[_0xb2d2('0x37')](_0xe6884a['model'],qs[_0xb2d2('0x38')](_0x5e7e61[_0xb2d2('0x34')]['fields']));_0x441131['attributes']=_0x441131['attributes'][_0xb2d2('0x39')]?_0x441131[_0xb2d2('0x3a')]:_0xe6884a[_0xb2d2('0x33')];if(!_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x3b')](_0xb2d2('0x3c'))){_0x441131[_0xb2d2('0x1e')]=qs['limit'](_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x1e')]);_0x441131[_0xb2d2('0x1d')]=qs[_0xb2d2('0x1d')](_0x5e7e61['query']['offset']);}_0x441131[_0xb2d2('0x3d')]=qs['sort'](_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x3e')]);_0x441131[_0xb2d2('0x3f')]=qs[_0xb2d2('0x36')](_[_0xb2d2('0x40')](_0x5e7e61[_0xb2d2('0x34')],_0xe6884a[_0xb2d2('0x36')]),_0x99d760);if(_0x5e7e61[_0xb2d2('0x34')]['filter']){_0x441131['where']=_['merge'](_0x441131[_0xb2d2('0x3f')],{'$or':_[_0xb2d2('0x2e')](_0x99d760,function(_0x2a234f){if(_0x2a234f[_0xb2d2('0x32')]!==_0xb2d2('0x41')){var _0x6dacd6={};_0x6dacd6[_0x2a234f[_0xb2d2('0x2b')]]={'$like':'%'+_0x5e7e61[_0xb2d2('0x34')][_0xb2d2('0x42')]+'%'};return _0x6dacd6;}})});}_0x441131=_[_0xb2d2('0x43')]({},_0x441131,_0x5e7e61[_0xb2d2('0x44')]);var _0x157fcf={'where':_0x441131[_0xb2d2('0x3f')]};return db[_0xb2d2('0x2f')]['count'](_0x157fcf)[_0xb2d2('0x27')](function(_0x2b8834){_0x23c717['count']=_0x2b8834;if(_0x5e7e61['query'][_0xb2d2('0x45')]){_0x441131['include']=[{'all':!![]}];}return db[_0xb2d2('0x2f')][_0xb2d2('0x46')](_0x441131);})[_0xb2d2('0x27')](function(_0x405718){_0x23c717['rows']=_0x405718;return _0x23c717;})[_0xb2d2('0x27')](respondWithFilteredResult(_0x4d5570,_0x441131))[_0xb2d2('0x47')](handleError(_0x4d5570,null));};exports[_0xb2d2('0x48')]=function(_0x55cb0b,_0x1afff7){var _0x219c91={'raw':!![],'where':{'id':_0x55cb0b[_0xb2d2('0x49')]['id']}},_0x41eabd={};_0x41eabd[_0xb2d2('0x33')]=_[_0xb2d2('0x35')](db[_0xb2d2('0x2f')]['rawAttributes']);_0x41eabd['query']=_[_0xb2d2('0x35')](_0x55cb0b[_0xb2d2('0x34')]);_0x41eabd['filters']=_[_0xb2d2('0x37')](_0x41eabd[_0xb2d2('0x33')],_0x41eabd[_0xb2d2('0x34')]);_0x219c91[_0xb2d2('0x3a')]=_['intersection'](_0x41eabd[_0xb2d2('0x33')],qs['fields'](_0x55cb0b[_0xb2d2('0x34')]['fields']));_0x219c91[_0xb2d2('0x3a')]=_0x219c91['attributes']['length']?_0x219c91[_0xb2d2('0x3a')]:_0x41eabd[_0xb2d2('0x33')];if(_0x55cb0b[_0xb2d2('0x34')][_0xb2d2('0x45')]){_0x219c91[_0xb2d2('0x4a')]=[{'all':!![]}];}_0x219c91=_['merge']({},_0x219c91,_0x55cb0b['options']);return db[_0xb2d2('0x2f')]['find'](_0x219c91)['then'](handleEntityNotFound(_0x1afff7,null))[_0xb2d2('0x27')](respondWithResult(_0x1afff7,null))[_0xb2d2('0x47')](handleError(_0x1afff7,null));};exports[_0xb2d2('0x4b')]=function(_0x2aba0e,_0x1f68d6){return db[_0xb2d2('0x2f')][_0xb2d2('0x4b')](_0x2aba0e[_0xb2d2('0x4c')],{})[_0xb2d2('0x27')](respondWithResult(_0x1f68d6,0xc9))[_0xb2d2('0x47')](handleError(_0x1f68d6,null));};exports[_0xb2d2('0x4d')]=function(_0x48b291,_0x5d4109){return db['CmHopperHistory']['describe']()[_0xb2d2('0x27')](respondWithResult(_0x5d4109,null))[_0xb2d2('0x47')](handleError(_0x5d4109,null));};exports['update']=function(_0x26314d,_0x59faa2){if(_0x26314d[_0xb2d2('0x4c')]['uniqueid']){delete _0x26314d[_0xb2d2('0x4c')][_0xb2d2('0x4e')];}return db['CmHopperHistory']['find']({'where':{'uniqueid':_0x26314d['params']['id']}})[_0xb2d2('0x27')](handleEntityNotFound(_0x59faa2,null))['then'](saveUpdates(_0x26314d[_0xb2d2('0x4c')],null))[_0xb2d2('0x27')](respondWithResult(_0x59faa2,null))['catch'](handleError(_0x59faa2,null));};
\ No newline at end of file
index 85631b1..da3c105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24d=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime','uniqueid','lodash'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa24d,0x1c1));var _0xda24=function(_0x2492dc,_0x3284a7){_0x2492dc=_0x2492dc-0x0;var _0x310431=_0xa24d[_0x2492dc];return _0x310431;};'use strict';var _=require(_0xda24('0x0'));var util=require(_0xda24('0x1'));var logger=require(_0xda24('0x2'))(_0xda24('0x3'));var moment=require(_0xda24('0x4'));var BPromise=require(_0xda24('0x5'));var rp=require(_0xda24('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xda24('0x7'));var config=require(_0xda24('0x8'));var attributes=require(_0xda24('0x9'));module[_0xda24('0xa')]=function(_0x561d74,_0x3557cb){return _0x561d74[_0xda24('0xb')]('CmHopperHistory',attributes,{'tableName':_0xda24('0xc'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xda24('0xd')]},{'name':_0xda24('0xe'),'fields':[_0xda24('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1ca=['lodash','util','bluebird','request-promise','path','../../config/environment','define','cm_hopper_history','endtime','uniqueid'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0xd1ca,0x140));var _0xad1c=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xd1ca[_0x1caf6a];return _0x1bf493;};'use strict';var _=require(_0xad1c('0x0'));var util=require(_0xad1c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xad1c('0x2'));var rp=require(_0xad1c('0x3'));var fs=require('fs');var path=require(_0xad1c('0x4'));var rimraf=require('rimraf');var config=require(_0xad1c('0x5'));var attributes=require('./cmHopperHistory.attributes');module['exports']=function(_0xd08c6,_0x44ae9c){return _0xd08c6[_0xad1c('0x6')]('CmHopperHistory',attributes,{'tableName':_0xad1c('0x7'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xad1c('0x8')]},{'name':_0xad1c('0x9'),'fields':[_0xad1c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index ede649c..a789647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6de9=['outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\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=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','CmHopperHistory,\x20%s,\x20%s','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','then','debug','stringify','AvgHandleTime','findAll','raw','where','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay'];(function(_0x10091d,_0x43c401){var _0x243f99=function(_0x3f34cc){while(--_0x3f34cc){_0x10091d['push'](_0x10091d['shift']());}};_0x243f99(++_0x43c401);}(_0x6de9,0xe6));var _0x96de=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6de9[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x96de('0x0'));var util=require(_0x96de('0x1'));var moment=require(_0x96de('0x2'));var BPromise=require(_0x96de('0x3'));var rs=require(_0x96de('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x96de('0x5'))['db'];var utils=require(_0x96de('0x6'));var logger=require('../../config/logger')(_0x96de('0x7'));var config=require(_0x96de('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x96de('0x9')][_0x96de('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x20ed57,_0x46afa4,_0x48e213){return new BPromise(function(_0x8624be,_0x14fad5){return client[_0x96de('0xb')](_0x20ed57,_0x48e213)['then'](function(_0x415b5f){logger[_0x96de('0xc')](_0x96de('0xd'),_0x46afa4,'request\x20sent');logger['debug'](_0x96de('0xe'),_0x46afa4,_0x96de('0xf'),JSON['stringify'](_0x415b5f));if(_0x415b5f[_0x96de('0x10')]){if(_0x415b5f[_0x96de('0x10')]['code']===0x1f4){logger['error'](_0x96de('0xd'),_0x46afa4,_0x415b5f[_0x96de('0x10')]['message']);return _0x14fad5(_0x415b5f[_0x96de('0x10')]['message']);}logger['error'](_0x96de('0xd'),_0x46afa4,_0x415b5f[_0x96de('0x10')][_0x96de('0x11')]);return _0x8624be(_0x415b5f[_0x96de('0x10')][_0x96de('0x11')]);}else{logger['info'](_0x96de('0xd'),_0x46afa4,_0x96de('0xf'));_0x8624be(_0x415b5f[_0x96de('0x12')][_0x96de('0x11')]);}})[_0x96de('0x13')](function(_0x198663){logger[_0x96de('0x10')](_0x96de('0xd'),_0x46afa4,_0x198663);_0x14fad5(_0x198663);});});}exports[_0x96de('0x14')]=function(_0x9701bb){var _0x321bf4=this;return new Promise(function(_0x389a4d,_0xe0878b){return db[_0x96de('0x15')][_0x96de('0x16')](_0x9701bb[_0x96de('0x17')],{'raw':_0x9701bb[_0x96de('0x18')]?_0x9701bb[_0x96de('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x96de('0x19')](function(_0x3d543f){logger[_0x96de('0xc')]('CreateCmHopperHistory',_0x9701bb);logger[_0x96de('0x1a')]('CreateCmHopperHistory',_0x9701bb,JSON[_0x96de('0x1b')](_0x3d543f));_0x389a4d(_0x3d543f);})[_0x96de('0x13')](function(_0x175a42){logger[_0x96de('0x10')](_0x96de('0x14'),_0x175a42[_0x96de('0x11')],_0x9701bb);_0xe0878b(_0x321bf4[_0x96de('0x10')](0x1f4,_0x175a42[_0x96de('0x11')]));});});};exports[_0x96de('0x1c')]=function(_0x4f20b2){var _0x21ab49=this;return new Promise(function(_0x5e06c7,_0x427665){return db[_0x96de('0x15')][_0x96de('0x1d')]({'raw':_0x4f20b2[_0x96de('0x18')]?_0x4f20b2[_0x96de('0x18')][_0x96de('0x1e')]===undefined?!![]:![]:!![],'where':_0x4f20b2[_0x96de('0x18')]?_0x4f20b2[_0x96de('0x18')][_0x96de('0x1f')]||null:null,'attributes':[[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')][_0x96de('0x22')]('id')),_0x96de('0x23')],[db['sequelize']['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x25')))),'predictiveIntervalAnsweredCalls'],[db['sequelize']['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x26')))),_0x96de('0x27')],[db['sequelize']['fn']('COUNT',db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')]('`state`\x20=\x2011,\x201,\x20null'))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0x96de('0x20')]['fn'](_0x96de('0x28'),db['sequelize']['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x29')))),_0x96de('0x2a')],[db[_0x96de('0x20')]['fn'](_0x96de('0x28'),db[_0x96de('0x20')]['fn']('IF',db['sequelize'][_0x96de('0x24')](_0x96de('0x2b')))),_0x96de('0x2c')]]})[_0x96de('0x19')](function(_0xe3316b){logger[_0x96de('0xc')](_0x96de('0x1c'),_0x4f20b2);logger['debug']('AvgHandleTime',_0x4f20b2,JSON[_0x96de('0x1b')](_0xe3316b));_0x5e06c7(_0xe3316b);})[_0x96de('0x13')](function(_0x211d03){logger['error']('AvgHandleTime',_0x211d03[_0x96de('0x11')],_0x4f20b2);_0x427665(_0x21ab49[_0x96de('0x10')](0x1f4,_0x211d03['message']));});});};exports[_0x96de('0x2d')]=function(_0x164e69){var _0x56666d=this;return new Promise(function(_0xac1177,_0x2974fa){return db['CmHopperHistory'][_0x96de('0x1d')]({'raw':_0x164e69[_0x96de('0x18')]?_0x164e69[_0x96de('0x18')][_0x96de('0x1e')]===undefined?!![]:![]:!![],'where':_0x164e69['options']?_0x164e69['options'][_0x96de('0x1f')]||null:null,'attributes':[['campaign',_0x96de('0x2e')],[db[_0x96de('0x20')]['fn']('COUNT',db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')]('`state`\x20=\x200,\x201,\x20null'))),_0x96de('0x2f')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x30')))),_0x96de('0x31')],[db[_0x96de('0x20')]['fn']('COUNT',db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x25')))),'outboundAnswerCallsDay'],[db[_0x96de('0x20')]['fn']('COUNT',db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')]('`state`\x20=\x205,\x201,\x20null'))),_0x96de('0x32')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db['sequelize']['literal'](_0x96de('0x33')))),'outboundCongestionCallsDay'],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x34')))),_0x96de('0x35')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x96de('0x36')],[db['sequelize']['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x37')))),_0x96de('0x38')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x96de('0x24')](_0x96de('0x39')))),_0x96de('0x3a')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x3b')))),_0x96de('0x3c')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')][_0x96de('0x24')](_0x96de('0x3d')))),_0x96de('0x3e')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x96de('0x24')](_0x96de('0x3f')))),_0x96de('0x40')],[db[_0x96de('0x20')]['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db[_0x96de('0x20')]['literal']('`state`\x20=\x2020,\x201,\x20null'))),_0x96de('0x3e')],[db['sequelize']['fn'](_0x96de('0x21'),db[_0x96de('0x20')]['fn']('IF',db['sequelize']['literal'](_0x96de('0x41')))),_0x96de('0x42')]],'group':[_0x96de('0x43')]})[_0x96de('0x19')](function(_0x5e9875){logger['info'](_0x96de('0x2d'),_0x164e69);logger[_0x96de('0x1a')](_0x96de('0x2d'),_0x164e69,JSON[_0x96de('0x1b')](_0x5e9875));_0xac1177(_0x5e9875);})['catch'](function(_0x28303b){logger[_0x96de('0x10')](_0x96de('0x2d'),_0x28303b[_0x96de('0x11')],_0x164e69);_0x2974fa(_0x56666d[_0x96de('0x10')](0x1f4,_0x28303b[_0x96de('0x11')]));});});};exports[_0x96de('0x44')]=function(_0x428e5e){var _0x1f542c=this;return new Promise(function(_0x4ef7b6,_0x5f5221){return db['CmHopperHistory'][_0x96de('0x1d')]({'raw':_0x428e5e[_0x96de('0x18')]?_0x428e5e[_0x96de('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x428e5e[_0x96de('0x18')]?_0x428e5e['options'][_0x96de('0x1f')]||null:null,'attributes':[[_0x96de('0x43'),_0x96de('0x2e')],[db['sequelize']['fn'](_0x96de('0x21'),db['sequelize'][_0x96de('0x22')]('id')),'ivrTotalCallsDays'],[db['sequelize']['fn']('COUNT',db[_0x96de('0x20')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x204,\x201,\x20null'))),_0x96de('0x45')]],'group':[_0x96de('0x43')]})['then'](function(_0x49c25b){logger['info'](_0x96de('0x44'),_0x428e5e);logger['debug']('GetCampaignHopperHistory',_0x428e5e,JSON[_0x96de('0x1b')](_0x49c25b));_0x4ef7b6(_0x49c25b);})[_0x96de('0x13')](function(_0x212bec){logger['error'](_0x96de('0x44'),_0x212bec['message'],_0x428e5e);_0x5f5221(_0x1f542c[_0x96de('0x10')](0x1f4,_0x212bec[_0x96de('0x11')]));});});};
\ No newline at end of file
+var _0xcc40=['outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','campaign','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','info','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','CmHopperHistory,\x20%s,\x20%s','message','result','catch','CreateCmHopperHistory','CmHopperHistory','body','raw','AvgHandleTime','findAll','options','where','sequelize','COUNT','col','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','then','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay'];(function(_0x496f20,_0x1d040b){var _0x5eb21b=function(_0x4d2d84){while(--_0x4d2d84){_0x496f20['push'](_0x496f20['shift']());}};_0x5eb21b(++_0x1d040b);}(_0xcc40,0x97));var _0x0cc4=function(_0x2a9f0d,_0x371bb7){_0x2a9f0d=_0x2a9f0d-0x0;var _0x4d2018=_0xcc40[_0x2a9f0d];return _0x4d2018;};'use strict';var _=require(_0x0cc4('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0cc4('0x1'));var rs=require(_0x0cc4('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0cc4('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0cc4('0x4'))(_0x0cc4('0x5'));var config=require('../../config/environment');var jayson=require(_0x0cc4('0x6'));var client=jayson['client'][_0x0cc4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x58f080,_0x5e1afa,_0x349c6a){return new BPromise(function(_0x2fd087,_0x2f00f3){return client['request'](_0x58f080,_0x349c6a)['then'](function(_0x7e2dbf){logger[_0x0cc4('0x8')]('CmHopperHistory,\x20%s,\x20%s',_0x5e1afa,'request\x20sent');logger[_0x0cc4('0x9')](_0x0cc4('0xa'),_0x5e1afa,_0x0cc4('0xb'),JSON[_0x0cc4('0xc')](_0x7e2dbf));if(_0x7e2dbf[_0x0cc4('0xd')]){if(_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0xe')]===0x1f4){logger[_0x0cc4('0xd')](_0x0cc4('0xf'),_0x5e1afa,_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0x10')]);return _0x2f00f3(_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0x10')]);}logger[_0x0cc4('0xd')](_0x0cc4('0xf'),_0x5e1afa,_0x7e2dbf['error'][_0x0cc4('0x10')]);return _0x2fd087(_0x7e2dbf[_0x0cc4('0xd')][_0x0cc4('0x10')]);}else{logger[_0x0cc4('0x8')](_0x0cc4('0xf'),_0x5e1afa,'request\x20sent');_0x2fd087(_0x7e2dbf[_0x0cc4('0x11')][_0x0cc4('0x10')]);}})[_0x0cc4('0x12')](function(_0x439755){logger['error'](_0x0cc4('0xf'),_0x5e1afa,_0x439755);_0x2f00f3(_0x439755);});});}exports[_0x0cc4('0x13')]=function(_0x3e5a54){var _0x56dec3=this;return new Promise(function(_0xe1b00,_0x1d70a2){return db[_0x0cc4('0x14')]['create'](_0x3e5a54[_0x0cc4('0x15')],{'raw':_0x3e5a54['options']?_0x3e5a54['options'][_0x0cc4('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x20a35f){logger[_0x0cc4('0x8')](_0x0cc4('0x13'),_0x3e5a54);logger[_0x0cc4('0x9')](_0x0cc4('0x13'),_0x3e5a54,JSON[_0x0cc4('0xc')](_0x20a35f));_0xe1b00(_0x20a35f);})[_0x0cc4('0x12')](function(_0x58a9ec){logger[_0x0cc4('0xd')]('CreateCmHopperHistory',_0x58a9ec['message'],_0x3e5a54);_0x1d70a2(_0x56dec3[_0x0cc4('0xd')](0x1f4,_0x58a9ec[_0x0cc4('0x10')]));});});};exports[_0x0cc4('0x17')]=function(_0x5a2a37){var _0x5f3aeb=this;return new Promise(function(_0x37b515,_0x406e05){return db[_0x0cc4('0x14')][_0x0cc4('0x18')]({'raw':_0x5a2a37['options']?_0x5a2a37[_0x0cc4('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x5a2a37[_0x0cc4('0x19')]?_0x5a2a37[_0x0cc4('0x19')][_0x0cc4('0x1a')]||null:null,'attributes':[[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')][_0x0cc4('0x1d')]('id')),'predictiveIntervalTotalCalls'],[db['sequelize']['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x1f')))),_0x0cc4('0x20')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x21')))),_0x0cc4('0x22')],[db['sequelize']['fn'](_0x0cc4('0x1c'),db['sequelize']['fn']('IF',db['sequelize'][_0x0cc4('0x1e')]('`state`\x20=\x2011,\x201,\x20null'))),_0x0cc4('0x23')],[db[_0x0cc4('0x1b')]['fn']('AVG',db['sequelize']['fn']('IF',db[_0x0cc4('0x1b')]['literal']('`state`\x20=\x204,\x20`holdtime`,\x20null'))),_0x0cc4('0x24')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x25'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x26')))),'predictiveIntervalAvgTalktime']]})[_0x0cc4('0x27')](function(_0x328dab){logger[_0x0cc4('0x8')](_0x0cc4('0x17'),_0x5a2a37);logger[_0x0cc4('0x9')](_0x0cc4('0x17'),_0x5a2a37,JSON[_0x0cc4('0xc')](_0x328dab));_0x37b515(_0x328dab);})[_0x0cc4('0x12')](function(_0x49e163){logger[_0x0cc4('0xd')](_0x0cc4('0x17'),_0x49e163[_0x0cc4('0x10')],_0x5a2a37);_0x406e05(_0x5f3aeb[_0x0cc4('0xd')](0x1f4,_0x49e163['message']));});});};exports[_0x0cc4('0x28')]=function(_0x4ebd23){var _0x5663cd=this;return new Promise(function(_0x96c80,_0x1cbc4f){return db[_0x0cc4('0x14')][_0x0cc4('0x18')]({'raw':_0x4ebd23[_0x0cc4('0x19')]?_0x4ebd23[_0x0cc4('0x19')][_0x0cc4('0x16')]===undefined?!![]:![]:!![],'where':_0x4ebd23[_0x0cc4('0x19')]?_0x4ebd23[_0x0cc4('0x19')][_0x0cc4('0x1a')]||null:null,'attributes':[['campaign',_0x0cc4('0x29')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x2a')))),'outboundNoSuchCallsDay'],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')]('`state`\x20=\x203,\x201,\x20null'))),_0x0cc4('0x2b')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x1f')))),_0x0cc4('0x2c')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x2d')))),_0x0cc4('0x2e')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db['sequelize']['literal'](_0x0cc4('0x2f')))),_0x0cc4('0x30')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x31')))),'outboundDropCallsDayTimeout'],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db['sequelize']['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x32')))),_0x0cc4('0x33')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x34')))),'outboundUnknownCallsDay'],[db['sequelize']['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')]('`state`\x20=\x2013,\x201,\x20null'))),_0x0cc4('0x35')],[db[_0x0cc4('0x1b')]['fn']('COUNT',db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x36')))),_0x0cc4('0x37')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')][_0x0cc4('0x1e')](_0x0cc4('0x38')))),_0x0cc4('0x39')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x3a')))),_0x0cc4('0x3b')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2020,\x201,\x20null'))),_0x0cc4('0x39')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x3c')))),_0x0cc4('0x3d')]],'group':[_0x0cc4('0x3e')]})[_0x0cc4('0x27')](function(_0x4be10b){logger[_0x0cc4('0x8')](_0x0cc4('0x28'),_0x4ebd23);logger[_0x0cc4('0x9')]('GetVoiceQueueHopperHistory',_0x4ebd23,JSON[_0x0cc4('0xc')](_0x4be10b));_0x96c80(_0x4be10b);})['catch'](function(_0x118167){logger[_0x0cc4('0xd')]('GetVoiceQueueHopperHistory',_0x118167[_0x0cc4('0x10')],_0x4ebd23);_0x1cbc4f(_0x5663cd[_0x0cc4('0xd')](0x1f4,_0x118167[_0x0cc4('0x10')]));});});};exports[_0x0cc4('0x3f')]=function(_0xb2ca3b){var _0x46397a=this;return new Promise(function(_0x35f09e,_0x148673){return db[_0x0cc4('0x14')][_0x0cc4('0x18')]({'raw':_0xb2ca3b['options']?_0xb2ca3b[_0x0cc4('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0xb2ca3b[_0x0cc4('0x19')]?_0xb2ca3b[_0x0cc4('0x19')]['where']||null:null,'attributes':[[_0x0cc4('0x3e'),_0x0cc4('0x29')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')][_0x0cc4('0x1d')]('id')),_0x0cc4('0x40')],[db[_0x0cc4('0x1b')]['fn'](_0x0cc4('0x1c'),db[_0x0cc4('0x1b')]['fn']('IF',db[_0x0cc4('0x1b')]['literal'](_0x0cc4('0x1f')))),'ivrAnswerCallsDay']],'group':['campaign']})[_0x0cc4('0x27')](function(_0x3b2251){logger[_0x0cc4('0x8')]('GetCampaignHopperHistory',_0xb2ca3b);logger[_0x0cc4('0x9')]('GetCampaignHopperHistory',_0xb2ca3b,JSON[_0x0cc4('0xc')](_0x3b2251));_0x35f09e(_0x3b2251);})['catch'](function(_0x5e5632){logger[_0x0cc4('0xd')](_0x0cc4('0x3f'),_0x5e5632[_0x0cc4('0x10')],_0xb2ca3b);_0x148673(_0x46397a['error'](0x1f4,_0x5e5632[_0x0cc4('0x10')]));});});};
\ No newline at end of file
index 69bd63f..047580d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2729=['put','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x2729,0x191));var _0x9272=function(_0xbb9455,_0x5a058e){_0xbb9455=_0xbb9455-0x0;var _0x4b7fe1=_0x2729[_0xbb9455];return _0x4b7fe1;};'use strict';var multer=require(_0x9272('0x0'));var util=require(_0x9272('0x1'));var path=require(_0x9272('0x2'));var timeout=require(_0x9272('0x3'));var express=require('express');var router=express[_0x9272('0x4')]();var fs_extra=require(_0x9272('0x5'));var auth=require(_0x9272('0x6'));var interaction=require(_0x9272('0x7'));var config=require(_0x9272('0x8'));var controller=require(_0x9272('0x9'));router[_0x9272('0xa')]('/',auth[_0x9272('0xb')](),controller[_0x9272('0xc')]);router[_0x9272('0xa')]('/describe',auth[_0x9272('0xb')](),controller['describe']);router[_0x9272('0xa')](_0x9272('0xd'),auth[_0x9272('0xb')](),controller[_0x9272('0xe')]);router[_0x9272('0xf')]('/',auth[_0x9272('0xb')](),controller[_0x9272('0x10')]);router[_0x9272('0x11')](_0x9272('0xd'),auth[_0x9272('0xb')](),controller['update']);module[_0x9272('0x12')]=router;
\ No newline at end of file
+var _0xca54=['put','/:id','update','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','/describe','show','post','create'];(function(_0x197d72,_0x513bc9){var _0x353af7=function(_0x1db980){while(--_0x1db980){_0x197d72['push'](_0x197d72['shift']());}};_0x353af7(++_0x513bc9);}(_0xca54,0xf4));var _0x4ca5=function(_0x273718,_0x5a351d){_0x273718=_0x273718-0x0;var _0x24396a=_0xca54[_0x273718];return _0x24396a;};'use strict';var multer=require(_0x4ca5('0x0'));var util=require(_0x4ca5('0x1'));var path=require('path');var timeout=require(_0x4ca5('0x2'));var express=require('express');var router=express[_0x4ca5('0x3')]();var fs_extra=require(_0x4ca5('0x4'));var auth=require(_0x4ca5('0x5'));var interaction=require(_0x4ca5('0x6'));var config=require(_0x4ca5('0x7'));var controller=require(_0x4ca5('0x8'));router[_0x4ca5('0x9')]('/',auth[_0x4ca5('0xa')](),controller[_0x4ca5('0xb')]);router['get'](_0x4ca5('0xc'),auth[_0x4ca5('0xa')](),controller['describe']);router[_0x4ca5('0x9')]('/:id',auth[_0x4ca5('0xa')](),controller[_0x4ca5('0xd')]);router[_0x4ca5('0xe')]('/',auth['isAuthenticated'](),controller[_0x4ca5('0xf')]);router[_0x4ca5('0x10')](_0x4ca5('0x11'),auth[_0x4ca5('0xa')](),controller[_0x4ca5('0x12')]);module[_0x4ca5('0x13')]=router;
\ No newline at end of file
index 955a084..cf88f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefbf=['STRING','sequelize','exports'];(function(_0x223e07,_0x49ee45){var _0x4633a5=function(_0x404c07){while(--_0x404c07){_0x223e07['push'](_0x223e07['shift']());}};_0x4633a5(++_0x49ee45);}(_0xefbf,0xa3));var _0xfefb=function(_0x111b18,_0x4acb2e){_0x111b18=_0x111b18-0x0;var _0x6151e0=_0xefbf[_0x111b18];return _0x6151e0;};'use strict';var Sequelize=require(_0xfefb('0x0'));module[_0xfefb('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0xfefb('0x2')]}};
\ No newline at end of file
+var _0xf3cd=['STRING','name','sequelize','exports'];(function(_0x2a0e66,_0x132cd2){var _0x5e78a8=function(_0x21540a){while(--_0x21540a){_0x2a0e66['push'](_0x2a0e66['shift']());}};_0x5e78a8(++_0x132cd2);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x17784a,_0x42fe44){_0x17784a=_0x17784a-0x0;var _0x41aded=_0xf3cd[_0x17784a];return _0x41aded;};'use strict';var Sequelize=require(_0xdf3c('0x0'));module[_0xdf3c('0x1')]={'name':{'type':Sequelize[_0xdf3c('0x2')],'unique':_0xdf3c('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xdf3c('0x2')]},'dialPrefix':{'type':Sequelize[_0xdf3c('0x2')]}};
\ No newline at end of file
index ca2e3fa..8901edf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ae5=['cf_%d','raw','getContactsCsv','now','writeFileSync','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','/tmp/list_%d_%s.csv','sequelize','transaction','addCustomFields','Sequelize','TEXT','text','INTEGER','BOOLEAN','cm_contacts','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','Lists','UserProfileResource','error','name','send','index','rawAttributes','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','type','VIRTUAL','CmList','includeAll','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','options','include','rows','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','success','errors','message','getContacts','CmCustomField','concat','CustomFields','format'];(function(_0x4d43cb,_0x3b4cdf){var _0x2f32c5=function(_0x1ca2bc){while(--_0x1ca2bc){_0x4d43cb['push'](_0x4d43cb['shift']());}};_0x2f32c5(++_0x3b4cdf);}(_0x5ae5,0xae));var _0x55ae=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x5ae5[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require(_0x55ae('0x0'));var rimraf=require(_0x55ae('0x1'));var zipdir=require(_0x55ae('0x2'));var jsonpatch=require(_0x55ae('0x3'));var rp=require(_0x55ae('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x55ae('0x5'));var util=require(_0x55ae('0x6'));var path=require(_0x55ae('0x7'));var sox=require('sox');var csv=require(_0x55ae('0x8'));var ejs=require(_0x55ae('0x9'));var fs=require('fs');var fs_extra=require(_0x55ae('0xa'));var _=require('lodash');var squel=require(_0x55ae('0xb'));var crypto=require(_0x55ae('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x55ae('0xd'));var toCsv=require(_0x55ae('0x8'));var querystring=require(_0x55ae('0xe'));var Papa=require(_0x55ae('0xf'));var Redis=require(_0x55ae('0x10'));var authService=require(_0x55ae('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x55ae('0x12'))(_0x55ae('0x13'));var utils=require(_0x55ae('0x14'));var config=require(_0x55ae('0x15'));var licenseUtil=require(_0x55ae('0x16'));var db=require(_0x55ae('0x17'))['db'];config[_0x55ae('0x18')]=_['defaults'](config[_0x55ae('0x18')],{'host':_0x55ae('0x19'),'port':0x18eb});var socket=require(_0x55ae('0x1a'))(new Redis(config[_0x55ae('0x18')]));require(_0x55ae('0x1b'))['register'](socket);function respondWithStatusCode(_0x4e2b8d,_0x35a6d2){_0x35a6d2=_0x35a6d2||0xcc;return function(_0x19989b){if(_0x19989b){return _0x4e2b8d[_0x55ae('0x1c')](_0x35a6d2);}return _0x4e2b8d[_0x55ae('0x1d')](_0x35a6d2)[_0x55ae('0x1e')]();};}function respondWithResult(_0x40595c,_0x2ac6f2){_0x2ac6f2=_0x2ac6f2||0xc8;return function(_0x236f97){if(_0x236f97){return _0x40595c[_0x55ae('0x1d')](_0x2ac6f2)[_0x55ae('0x1f')](_0x236f97);}};}function respondWithFilteredResult(_0x51a42f,_0x5efb38){return function(_0x34baba){if(_0x34baba){var _0x26bd44=typeof _0x5efb38[_0x55ae('0x20')]===_0x55ae('0x21')&&typeof _0x5efb38[_0x55ae('0x22')]===_0x55ae('0x21');var _0x3c9052=_0x34baba[_0x55ae('0x23')];var _0x1636e1=_0x26bd44?0x0:_0x5efb38[_0x55ae('0x20')];var _0x151910=_0x26bd44?_0x34baba[_0x55ae('0x23')]:_0x5efb38[_0x55ae('0x20')]+_0x5efb38[_0x55ae('0x22')];var _0x1263b7;if(_0x151910>=_0x3c9052){_0x151910=_0x3c9052;_0x1263b7=0xc8;}else{_0x1263b7=0xce;}_0x51a42f[_0x55ae('0x1d')](_0x1263b7);return _0x51a42f[_0x55ae('0x24')](_0x55ae('0x25'),_0x1636e1+'-'+_0x151910+'/'+_0x3c9052)[_0x55ae('0x1f')](_0x34baba);}return null;};}function patchUpdates(_0x5114f8){return function(_0x5156c5){try{jsonpatch[_0x55ae('0x26')](_0x5156c5,_0x5114f8,!![]);}catch(_0x4ec661){return BPromise[_0x55ae('0x27')](_0x4ec661);}return _0x5156c5[_0x55ae('0x28')]();};}function saveUpdates(_0x3535e0,_0x243f20){return function(_0x308563){if(_0x308563){return _0x308563[_0x55ae('0x29')](_0x3535e0)[_0x55ae('0x2a')](function(_0x5d0147){return _0x5d0147;});}return null;};}function removeEntity(_0x834193,_0x4e51c3){return function(_0x5dac5b){if(_0x5dac5b){return _0x5dac5b[_0x55ae('0x2b')]()[_0x55ae('0x2a')](function(){var _0x4e72c4=_0x5dac5b[_0x55ae('0x2c')]({'plain':!![]});var _0x1621ba=_0x55ae('0x2d');return db[_0x55ae('0x2e')][_0x55ae('0x2b')]({'where':{'type':_0x1621ba,'resourceId':_0x4e72c4['id']}})[_0x55ae('0x2a')](function(){return _0x5dac5b;});})[_0x55ae('0x2a')](function(){_0x834193[_0x55ae('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26851d,_0x5733c0){return function(_0x37db29){if(!_0x37db29){_0x26851d[_0x55ae('0x1c')](0x194);}return _0x37db29;};}function handleError(_0x68f339,_0x3993a7){_0x3993a7=_0x3993a7||0x1f4;return function(_0x32c0ec){logger[_0x55ae('0x2f')](_0x32c0ec['stack']);if(_0x32c0ec[_0x55ae('0x30')]){delete _0x32c0ec[_0x55ae('0x30')];}_0x68f339[_0x55ae('0x1d')](_0x3993a7)[_0x55ae('0x31')](_0x32c0ec);};}exports[_0x55ae('0x32')]=function(_0x349f25,_0x421d97){var _0x5e227d={},_0xe8ef85={},_0x36ac4a={'count':0x0,'rows':[]};var _0x5156c4=_['map'](db['CmList'][_0x55ae('0x33')],function(_0x2c4086){return{'name':_0x2c4086['fieldName'],'type':_0x2c4086['type']['key']};});_0xe8ef85[_0x55ae('0x34')]=_['map'](_0x5156c4,_0x55ae('0x30'));_0xe8ef85[_0x55ae('0x35')]=_[_0x55ae('0x36')](_0x349f25[_0x55ae('0x35')]);_0xe8ef85[_0x55ae('0x37')]=_['intersection'](_0xe8ef85['model'],_0xe8ef85[_0x55ae('0x35')]);_0x5e227d[_0x55ae('0x38')]=_[_0x55ae('0x39')](_0xe8ef85['model'],qs[_0x55ae('0x3a')](_0x349f25[_0x55ae('0x35')][_0x55ae('0x3a')]));_0x5e227d[_0x55ae('0x38')]=_0x5e227d[_0x55ae('0x38')][_0x55ae('0x3b')]?_0x5e227d[_0x55ae('0x38')]:_0xe8ef85['model'];if(!_0x349f25[_0x55ae('0x35')][_0x55ae('0x3c')](_0x55ae('0x3d'))){_0x5e227d[_0x55ae('0x22')]=qs['limit'](_0x349f25[_0x55ae('0x35')][_0x55ae('0x22')]);_0x5e227d[_0x55ae('0x20')]=qs[_0x55ae('0x20')](_0x349f25[_0x55ae('0x35')][_0x55ae('0x20')]);}_0x5e227d[_0x55ae('0x3e')]=qs[_0x55ae('0x3f')](_0x349f25[_0x55ae('0x35')][_0x55ae('0x3f')]);_0x5e227d['where']=qs[_0x55ae('0x37')](_[_0x55ae('0x40')](_0x349f25[_0x55ae('0x35')],_0xe8ef85['filters']),_0x5156c4);if(_0x349f25[_0x55ae('0x35')][_0x55ae('0x41')]){_0x5e227d[_0x55ae('0x42')]=_[_0x55ae('0x43')](_0x5e227d[_0x55ae('0x42')],{'$or':_[_0x55ae('0x44')](_0x5156c4,function(_0x503e66){if(_0x503e66[_0x55ae('0x45')]!==_0x55ae('0x46')){var _0x2ac525={};_0x2ac525[_0x503e66['name']]={'$like':'%'+_0x349f25[_0x55ae('0x35')][_0x55ae('0x41')]+'%'};return _0x2ac525;}})});}_0x5e227d=_[_0x55ae('0x43')]({},_0x5e227d,_0x349f25['options']);var _0x5bf1a2={'where':_0x5e227d[_0x55ae('0x42')]};return db[_0x55ae('0x47')][_0x55ae('0x23')](_0x5bf1a2)[_0x55ae('0x2a')](function(_0x5556c8){_0x36ac4a[_0x55ae('0x23')]=_0x5556c8;if(_0x349f25['query'][_0x55ae('0x48')]){_0x5e227d['include']=[{'all':!![]}];}return db[_0x55ae('0x47')][_0x55ae('0x49')](_0x5e227d);})[_0x55ae('0x2a')](function(_0x66b548){_0x36ac4a['rows']=_0x66b548;return _0x36ac4a;})[_0x55ae('0x2a')](respondWithFilteredResult(_0x421d97,_0x5e227d))[_0x55ae('0x4a')](handleError(_0x421d97,null));};exports[_0x55ae('0x4b')]=function(_0x5b5921,_0x4dafde){var _0x2f3719={'raw':![],'where':{'id':_0x5b5921[_0x55ae('0x4c')]['id']}},_0x5bf88f={};_0x5bf88f[_0x55ae('0x34')]=_[_0x55ae('0x36')](db[_0x55ae('0x47')][_0x55ae('0x33')]);_0x5bf88f['query']=_[_0x55ae('0x36')](_0x5b5921[_0x55ae('0x35')]);_0x5bf88f[_0x55ae('0x37')]=_[_0x55ae('0x39')](_0x5bf88f[_0x55ae('0x34')],_0x5bf88f[_0x55ae('0x35')]);_0x2f3719[_0x55ae('0x38')]=_['intersection'](_0x5bf88f[_0x55ae('0x34')],qs['fields'](_0x5b5921[_0x55ae('0x35')][_0x55ae('0x3a')]));_0x2f3719[_0x55ae('0x38')]=_0x2f3719[_0x55ae('0x38')][_0x55ae('0x3b')]?_0x2f3719[_0x55ae('0x38')]:_0x5bf88f[_0x55ae('0x34')];if(_0x5b5921['query'][_0x55ae('0x48')]){_0x2f3719['include']=[{'all':!![]}];}_0x2f3719=_[_0x55ae('0x43')]({},_0x2f3719,_0x5b5921['options']);return db[_0x55ae('0x47')][_0x55ae('0x4d')](_0x2f3719)[_0x55ae('0x2a')](handleEntityNotFound(_0x4dafde,null))[_0x55ae('0x2a')](respondWithResult(_0x4dafde,null))['catch'](handleError(_0x4dafde,null));};exports[_0x55ae('0x4e')]=function(_0xa04675,_0x433db6){return db[_0x55ae('0x47')][_0x55ae('0x4e')](_0xa04675[_0x55ae('0x4f')],{})[_0x55ae('0x2a')](function(_0xee6219){var _0x23fc3d=_0xa04675[_0x55ae('0x50')][_0x55ae('0x2c')]({'plain':!![]});if(!_0x23fc3d)throw new Error(_0x55ae('0x51'));if(_0x23fc3d['role']===_0x55ae('0x50')){var _0x278298=_0xee6219[_0x55ae('0x2c')]({'plain':!![]});var _0x5c1615=_0x55ae('0x2d');return db[_0x55ae('0x52')][_0x55ae('0x4d')]({'where':{'name':_0x5c1615,'userProfileId':_0x23fc3d[_0x55ae('0x53')]},'raw':!![]})[_0x55ae('0x2a')](function(_0x5e18a3){if(_0x5e18a3&&_0x5e18a3[_0x55ae('0x54')]===0x0){return db[_0x55ae('0x2e')][_0x55ae('0x4e')]({'name':_0x278298[_0x55ae('0x30')],'resourceId':_0x278298['id'],'type':_0x5e18a3[_0x55ae('0x30')],'sectionId':_0x5e18a3['id']},{})['then'](function(){return _0xee6219;});}else{return _0xee6219;}})['catch'](function(_0xf4ca31){logger[_0x55ae('0x2f')](_0x55ae('0x55'),_0xf4ca31);throw _0xf4ca31;});}return _0xee6219;})[_0x55ae('0x2a')](respondWithResult(_0x433db6,0xc9))[_0x55ae('0x4a')](handleError(_0x433db6,null));};exports[_0x55ae('0x29')]=function(_0x364161,_0x1cc877){if(_0x364161[_0x55ae('0x4f')]['id']){delete _0x364161['body']['id'];}return db[_0x55ae('0x47')][_0x55ae('0x4d')]({'where':{'id':_0x364161[_0x55ae('0x4c')]['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0x1cc877,null))['then'](saveUpdates(_0x364161['body'],null))[_0x55ae('0x2a')](respondWithResult(_0x1cc877,null))[_0x55ae('0x4a')](handleError(_0x1cc877,null));};exports[_0x55ae('0x2b')]=function(_0x2b5fd3,_0xb92cf8){return db[_0x55ae('0x47')][_0x55ae('0x4d')]({'where':{'id':_0x2b5fd3['params']['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0xb92cf8,null))[_0x55ae('0x2a')](removeEntity(_0xb92cf8,null))[_0x55ae('0x4a')](handleError(_0xb92cf8,null));};exports[_0x55ae('0x56')]=function(_0x4b0d5f,_0x2ac3af){return db[_0x55ae('0x47')][_0x55ae('0x56')]()[_0x55ae('0x2a')](respondWithResult(_0x2ac3af,null))[_0x55ae('0x4a')](handleError(_0x2ac3af,null));};exports[_0x55ae('0x57')]=function(_0xadbd73,_0x405e95,_0x17c797){if(_0xadbd73[_0x55ae('0x4f')]['id']){delete _0xadbd73[_0x55ae('0x4f')]['id'];}return db['CmList']['find']({'where':{'id':_0xadbd73[_0x55ae('0x4c')]['id']}})['then'](handleEntityNotFound(_0x405e95,null))['then'](function(_0x31815f){if(_0x31815f){_0xadbd73['body'][_0x55ae('0x58')]=_0x31815f['id'];return db[_0x55ae('0x59')][_0x55ae('0x4e')](_0xadbd73['body']);}})[_0x55ae('0x2a')](respondWithResult(_0x405e95,null))[_0x55ae('0x4a')](handleError(_0x405e95,null));};exports[_0x55ae('0x5a')]=function(_0x5ad337,_0x48d4ac,_0xd6ada2){var _0x386208={'raw':![],'where':{}};var _0xc3fed9={};var _0x784f97={'count':0x0,'rows':[]};return db[_0x55ae('0x47')]['findOne']({'where':{'id':_0x5ad337[_0x55ae('0x4c')]['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0x48d4ac,null))['then'](function(_0x417bea){if(_0x417bea){_0xc3fed9[_0x55ae('0x34')]=_[_0x55ae('0x36')](db[_0x55ae('0x59')][_0x55ae('0x33')]);_0xc3fed9[_0x55ae('0x35')]=_[_0x55ae('0x36')](_0x5ad337[_0x55ae('0x35')]);_0xc3fed9[_0x55ae('0x37')]=_[_0x55ae('0x39')](_0xc3fed9['model'],_0xc3fed9['query']);_0x386208[_0x55ae('0x38')]=_['intersection'](_0xc3fed9[_0x55ae('0x34')],qs[_0x55ae('0x3a')](_0x5ad337[_0x55ae('0x35')][_0x55ae('0x3a')]));_0x386208[_0x55ae('0x38')]=_0x386208[_0x55ae('0x38')]['length']?_0x386208[_0x55ae('0x38')]:_0xc3fed9[_0x55ae('0x34')];if(!_0x5ad337['query'][_0x55ae('0x3c')](_0x55ae('0x3d'))){_0x386208[_0x55ae('0x22')]=qs[_0x55ae('0x22')](_0x5ad337['query']['limit']);_0x386208['offset']=qs[_0x55ae('0x20')](_0x5ad337['query'][_0x55ae('0x20')]);}_0x386208[_0x55ae('0x3e')]=qs[_0x55ae('0x3f')](_0x5ad337[_0x55ae('0x35')][_0x55ae('0x3f')]);_0x386208[_0x55ae('0x42')]=qs[_0x55ae('0x37')](_[_0x55ae('0x40')](_0x5ad337[_0x55ae('0x35')],_0xc3fed9[_0x55ae('0x37')]));_0x386208['where'][_0x55ae('0x58')]=_0x417bea['id'];if(_0x5ad337[_0x55ae('0x35')][_0x55ae('0x41')]){_0x386208[_0x55ae('0x42')]=_[_0x55ae('0x43')](_0x386208[_0x55ae('0x42')],{'$or':_['map'](_0x386208[_0x55ae('0x38')],function(_0x446da7){var _0x32012e={};_0x32012e[_0x446da7]={'$like':'%'+_0x5ad337[_0x55ae('0x35')][_0x55ae('0x41')]+'%'};return _0x32012e;})});}_0x386208=_[_0x55ae('0x43')]({},_0x386208,_0x5ad337[_0x55ae('0x5b')]);return db['Disposition'][_0x55ae('0x23')]({'where':_0x386208[_0x55ae('0x42')]})['then'](function(_0x52e64d){_0x784f97[_0x55ae('0x23')]=_0x52e64d;if(_0x5ad337[_0x55ae('0x35')][_0x55ae('0x48')]){_0x386208[_0x55ae('0x5c')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x386208);})[_0x55ae('0x2a')](function(_0x1e4c86){_0x784f97[_0x55ae('0x5d')]=_0x1e4c86;return _0x784f97;});}})[_0x55ae('0x2a')](respondWithFilteredResult(_0x48d4ac,_0x386208))[_0x55ae('0x4a')](handleError(_0x48d4ac,null));};exports[_0x55ae('0x5e')]=function(_0x41628f,_0x2ec3d7,_0x5c85e7){return db[_0x55ae('0x47')]['find']({'where':{'id':_0x41628f[_0x55ae('0x4c')]['id']}})['then'](handleEntityNotFound(_0x2ec3d7,null))[_0x55ae('0x2a')](function(_0x11b11f){if(_0x11b11f){return _0x11b11f[_0x55ae('0x5e')](_0x41628f['query'][_0x55ae('0x5f')]);}})[_0x55ae('0x2a')](respondWithStatusCode(_0x2ec3d7,null))[_0x55ae('0x4a')](handleError(_0x2ec3d7,null));};exports[_0x55ae('0x60')]=function(_0x1102ee,_0x5cd9f3,_0x241438){return db[_0x55ae('0x47')]['find']({'where':{'id':_0x1102ee['params']['id']}})['then'](handleEntityNotFound(_0x5cd9f3,null))[_0x55ae('0x2a')](function(_0x117d45){if(_0x117d45){var _0x200919=[];var _0x37ac90={'success':[],'errors':[]};return db[_0x55ae('0x61')][_0x55ae('0x56')]()[_0x55ae('0x2a')](function(_0x40fde7){if(_0x1102ee['body'][_0x55ae('0x62')]&&_[_0x55ae('0x63')](_0x1102ee[_0x55ae('0x4f')][_0x55ae('0x62')])){if(_0x1102ee[_0x55ae('0x4f')][_0x55ae('0x62')][_0x55ae('0x3b')]){_0x1102ee['body'][_0x55ae('0x62')]=_0x1102ee[_0x55ae('0x4f')]['tags'][_0x55ae('0x64')](';')+';';}else{_0x1102ee[_0x55ae('0x4f')][_0x55ae('0x62')]=null;}}else{_0x1102ee[_0x55ae('0x4f')][_0x55ae('0x62')]=null;}if(_0x1102ee[_0x55ae('0x4f')]&&_[_0x55ae('0x63')](_0x1102ee[_0x55ae('0x4f')])){for(var _0x128a93=0x0;_0x128a93<_0x1102ee['body'][_0x55ae('0x3b')];_0x128a93+=0x1){_0x1102ee[_0x55ae('0x4f')][_0x128a93]['ListId']=_0x1102ee['params']['id'];_0x200919[_0x55ae('0x65')](_0x1102ee[_0x55ae('0x4f')][_0x128a93]);}return BPromise['each'](_0x200919,function(_0x2ebfc3){return db[_0x55ae('0x61')][_0x55ae('0x4e')](_['omit'](_0x2ebfc3,['ids','id'])||{},{'fields':_[_0x55ae('0x36')](_0x40fde7),'raw':!![]})[_0x55ae('0x2a')](function(_0x1a385e){_0x37ac90[_0x55ae('0x66')][_0x55ae('0x65')](_0x1a385e['dataValues']);})[_0x55ae('0x4a')](function(_0x19f004){_0x37ac90[_0x55ae('0x67')][_0x55ae('0x65')]({'data':_0x2ebfc3,'error':_0x19f004[_0x55ae('0x68')]});});})[_0x55ae('0x2a')](function(_0x58e060){return _0x37ac90;})[_0x55ae('0x4a')](function(_0x323045){return _0x323045;});}else{_0x5cd9f3['status'](0x190)[_0x55ae('0x1f')]({'message':'Malformed\x20request\x20syntax'});}});}})[_0x55ae('0x2a')](respondWithResult(_0x5cd9f3,null))[_0x55ae('0x4a')](handleError(_0x5cd9f3,null));};exports[_0x55ae('0x69')]=function(_0x2c40ce,_0x3d028b,_0x2dc8dc){var _0x45ac37;return db['CmList'][_0x55ae('0x4d')]({'where':{'id':_0x2c40ce[_0x55ae('0x4c')]['id']},'include':[{'model':db[_0x55ae('0x6a')],'as':'CustomFields'}]})[_0x55ae('0x2a')](handleEntityNotFound(_0x3d028b,null))[_0x55ae('0x2a')](function(_0x1c1e7f){if(_0x1c1e7f){_0x45ac37=_0x1c1e7f;return db[_0x55ae('0x61')][_0x55ae('0x33')];}})[_0x55ae('0x2a')](function(_0x11fc18){if(_0x11fc18){var _0x2ce214={};var _0xed13c2={};_0xed13c2[_0x55ae('0x34')]=_[_0x55ae('0x6b')](_[_0x55ae('0x36')](_0x11fc18),_[_0x55ae('0x44')](_0x45ac37[_0x55ae('0x6c')],function(_0x2f1c57){return util[_0x55ae('0x6d')](_0x55ae('0x6e'),_0x2f1c57['id']);}));_0xed13c2['query']=_[_0x55ae('0x36')](_0x2c40ce['query']);_0xed13c2[_0x55ae('0x37')]=_[_0x55ae('0x39')](_0xed13c2['model'],_0xed13c2['query']);_0x2ce214[_0x55ae('0x38')]=_[_0x55ae('0x39')](_0xed13c2[_0x55ae('0x34')],qs[_0x55ae('0x3a')](_0x2c40ce[_0x55ae('0x35')][_0x55ae('0x3a')]));_0x2ce214[_0x55ae('0x38')]=_0x2ce214[_0x55ae('0x38')][_0x55ae('0x3b')]?_0x2ce214[_0x55ae('0x38')]:_0xed13c2['model'];if(!_0x2c40ce['query'][_0x55ae('0x3c')](_0x55ae('0x3d'))){_0x2ce214[_0x55ae('0x22')]=qs[_0x55ae('0x22')](_0x2c40ce[_0x55ae('0x35')]['limit']);_0x2ce214['offset']=qs[_0x55ae('0x20')](_0x2c40ce['query'][_0x55ae('0x20')]);}_0x2ce214[_0x55ae('0x3e')]=qs[_0x55ae('0x3f')](_0x2c40ce['query'][_0x55ae('0x3f')]);_0x2ce214[_0x55ae('0x42')]=qs[_0x55ae('0x37')](_[_0x55ae('0x40')](_0x2c40ce[_0x55ae('0x35')],_0xed13c2[_0x55ae('0x37')]));_0x2ce214[_0x55ae('0x6f')]=!![];if(_0x2c40ce[_0x55ae('0x35')][_0x55ae('0x41')]){_0x2ce214['where']=_['merge'](_0x2ce214['where'],{'$or':_[_0x55ae('0x44')](_0x2ce214['attributes'],function(_0x5dfdbf){var _0x5aeabf={};_0x5aeabf[_0x5dfdbf]={'$like':'%'+_0x2c40ce[_0x55ae('0x35')][_0x55ae('0x41')]+'%'};return _0x5aeabf;})});}_0x2ce214=_[_0x55ae('0x43')]({},_0x2ce214,_0x2c40ce['options']);return _0x45ac37[_0x55ae('0x69')](_0x2ce214);}})[_0x55ae('0x2a')](respondWithResult(_0x3d028b,null))[_0x55ae('0x4a')](handleError(_0x3d028b,null));};exports[_0x55ae('0x70')]=function(_0x59ae86,_0x33651c,_0x413934){var _0x5d1c02;return db[_0x55ae('0x47')][_0x55ae('0x4d')]({'where':{'id':_0x59ae86[_0x55ae('0x4c')]['id']},'include':[{'model':db['CmCustomField'],'as':'CustomFields'}]})[_0x55ae('0x2a')](handleEntityNotFound(_0x33651c,null))[_0x55ae('0x2a')](function(_0x2c0ab6){if(_0x2c0ab6){_0x5d1c02=_0x2c0ab6;return db[_0x55ae('0x61')][_0x55ae('0x33')];}})[_0x55ae('0x2a')](function(_0x396f55){if(_0x396f55){var _0x32d5ec={};var _0x1f0042={};_0x1f0042[_0x55ae('0x34')]=_[_0x55ae('0x6b')](_[_0x55ae('0x36')](_0x396f55),_[_0x55ae('0x44')](_0x5d1c02[_0x55ae('0x6c')],function(_0x27c740){return util['format'](_0x55ae('0x6e'),_0x27c740['id']);}));_0x1f0042['query']=_[_0x55ae('0x36')](_0x59ae86[_0x55ae('0x35')]);_0x1f0042[_0x55ae('0x37')]=_[_0x55ae('0x39')](_0x1f0042[_0x55ae('0x34')],_0x1f0042[_0x55ae('0x35')]);_0x32d5ec['attributes']=_['intersection'](_0x1f0042[_0x55ae('0x34')],qs[_0x55ae('0x3a')](_0x59ae86[_0x55ae('0x35')][_0x55ae('0x3a')]));_0x32d5ec[_0x55ae('0x38')]=_0x32d5ec[_0x55ae('0x38')][_0x55ae('0x3b')]?_0x32d5ec['attributes']:_0x1f0042[_0x55ae('0x34')];if(!_0x59ae86[_0x55ae('0x35')]['hasOwnProperty']('nolimit')){_0x32d5ec[_0x55ae('0x22')]=qs['limit'](_0x59ae86[_0x55ae('0x35')]['limit']);_0x32d5ec[_0x55ae('0x20')]=qs['offset'](_0x59ae86['query']['offset']);}_0x32d5ec[_0x55ae('0x3e')]=qs[_0x55ae('0x3f')](_0x59ae86['query'][_0x55ae('0x3f')]);_0x32d5ec[_0x55ae('0x42')]=qs['filters'](_[_0x55ae('0x40')](_0x59ae86['query'],_0x1f0042[_0x55ae('0x37')]));_0x32d5ec[_0x55ae('0x6f')]=!![];if(_0x59ae86[_0x55ae('0x35')]['filter']){_0x32d5ec[_0x55ae('0x42')]=_[_0x55ae('0x43')](_0x32d5ec[_0x55ae('0x42')],{'$or':_[_0x55ae('0x44')](_0x32d5ec['attributes'],function(_0x2e0183){var _0x410eab={};_0x410eab[_0x2e0183]={'$like':'%'+_0x59ae86[_0x55ae('0x35')][_0x55ae('0x41')]+'%'};return _0x410eab;})});}_0x32d5ec=_[_0x55ae('0x43')]({},_0x32d5ec,_0x59ae86[_0x55ae('0x5b')]);return _0x5d1c02[_0x55ae('0x69')](_0x32d5ec);}})[_0x55ae('0x2a')](function(_0x1d788f){if(!_['isEmpty'](_0x1d788f)){var _0x47debc=toCsv(_0x1d788f);var _0x1532f1=Date[_0x55ae('0x71')]();fs[_0x55ae('0x72')](util[_0x55ae('0x6d')]('/tmp/list_%d_%s.csv',_0x5d1c02['id'],_0x1532f1),_0x47debc);_0x33651c['setHeader'](_0x55ae('0x73'),_0x55ae('0x74')+util[_0x55ae('0x6d')](_0x55ae('0x75'),_0x5d1c02['id'],_0x1532f1));_0x33651c['setHeader'](_0x55ae('0x76'),_0x55ae('0x77'));return _0x33651c[_0x55ae('0x78')](util[_0x55ae('0x6d')](_0x55ae('0x79'),_0x5d1c02['id'],_0x1532f1));}else{return _0x33651c[_0x55ae('0x1c')](0xcc);}})[_0x55ae('0x4a')](handleError(_0x33651c,null));};exports['addCustomField']=function(_0x3b25e2,_0x195055,_0x2663db){var _0x5af834;delete _0x3b25e2['body']['id'];return db['CmList']['findOne']({'where':{'id':_0x3b25e2[_0x55ae('0x4c')]['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0x195055,null))[_0x55ae('0x2a')](function(_0x36253d){if(_0x36253d){return db[_0x55ae('0x7a')][_0x55ae('0x7b')](function(_0x1c8d42){return db[_0x55ae('0x6a')]['create'](_0x3b25e2['body'],{'transaction':_0x1c8d42})[_0x55ae('0x2a')](function(_0x2c3204){_0x5af834=_0x2c3204;return _0x36253d[_0x55ae('0x7c')](_0x2c3204,{'transaction':_0x1c8d42});})[_0x55ae('0x2a')](function(){var _0x84b156={'type':db[_0x55ae('0x7d')][_0x55ae('0x7e')],'transaction':_0x1c8d42};switch(_0x3b25e2['body'][_0x55ae('0x45')]){case _0x55ae('0x7f'):_0x84b156['type']=db[_0x55ae('0x7d')][_0x55ae('0x7e')];break;case'number':_0x84b156[_0x55ae('0x45')]=db['Sequelize'][_0x55ae('0x80')];break;case'switch':_0x84b156[_0x55ae('0x45')]=db[_0x55ae('0x7d')][_0x55ae('0x81')];_0x84b156['defaultValue']=![];break;default:}return db[_0x55ae('0x7a')]['queryInterface']['addColumn'](_0x55ae('0x82'),util['format'](_0x55ae('0x83'),_0x5af834['id']),_0x84b156);})[_0x55ae('0x2a')](function(){return _0x5af834;});});}})[_0x55ae('0x2a')](respondWithResult(_0x195055,null))[_0x55ae('0x4a')](handleError(_0x195055,null));};exports[_0x55ae('0x84')]=function(_0x31180c,_0x458a42,_0x53a2ed){var _0x249aa0={};var _0x46d09a={};var _0x4494ab;var _0x33f452;return db[_0x55ae('0x47')]['findOne']({'where':{'id':_0x31180c[_0x55ae('0x4c')]['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0x458a42,null))[_0x55ae('0x2a')](function(_0x46f818){if(_0x46f818){_0x4494ab=_0x46f818;_0x46d09a[_0x55ae('0x34')]=_[_0x55ae('0x36')](db[_0x55ae('0x6a')][_0x55ae('0x33')]);_0x46d09a[_0x55ae('0x35')]=_['keys'](_0x31180c[_0x55ae('0x35')]);_0x46d09a[_0x55ae('0x37')]=_[_0x55ae('0x39')](_0x46d09a[_0x55ae('0x34')],_0x46d09a[_0x55ae('0x35')]);_0x249aa0['attributes']=_['intersection'](_0x46d09a[_0x55ae('0x34')],qs[_0x55ae('0x3a')](_0x31180c['query'][_0x55ae('0x3a')]));_0x249aa0[_0x55ae('0x38')]=_0x249aa0['attributes']['length']?_0x249aa0[_0x55ae('0x38')]:_0x46d09a[_0x55ae('0x34')];_0x249aa0[_0x55ae('0x3e')]=qs[_0x55ae('0x3f')](_0x31180c['query']['sort']);_0x249aa0[_0x55ae('0x42')]=qs[_0x55ae('0x37')](_[_0x55ae('0x40')](_0x31180c['query'],_0x46d09a[_0x55ae('0x37')]));_0x249aa0['where']=_[_0x55ae('0x43')](_0x249aa0[_0x55ae('0x42')],{'$or':[{'ListId':_0x46f818['id']},{'ListId':null}]});if(_0x31180c[_0x55ae('0x35')]['filter']){_0x249aa0[_0x55ae('0x42')]=_[_0x55ae('0x43')](_0x249aa0[_0x55ae('0x42')],{'$or':_[_0x55ae('0x44')](_0x249aa0[_0x55ae('0x38')],function(_0x236b71){var _0x15fcf0={};_0x15fcf0[_0x236b71]={'$like':'%'+_0x31180c[_0x55ae('0x35')][_0x55ae('0x41')]+'%'};return _0x15fcf0;})});}_0x249aa0=_[_0x55ae('0x43')]({},_0x249aa0,_0x31180c[_0x55ae('0x5b')]);return db[_0x55ae('0x6a')][_0x55ae('0x85')](_0x249aa0);}})[_0x55ae('0x2a')](respondWithResult(_0x458a42,null))[_0x55ae('0x4a')](handleError(_0x458a42,null));};exports[_0x55ae('0x86')]=function(_0x5eec33,_0x49de42,_0x5a2a6a){return db['CmList'][_0x55ae('0x4d')]({'where':{'id':_0x5eec33[_0x55ae('0x4c')]['id']}})['then'](handleEntityNotFound(_0x49de42,null))[_0x55ae('0x2a')](function(_0x48dc31){if(_0x48dc31){return _0x48dc31['addAgents'](_0x5eec33[_0x55ae('0x4f')][_0x55ae('0x5f')],_['omit'](_0x5eec33[_0x55ae('0x4f')],[_0x55ae('0x5f'),'id'])||{})[_0x55ae('0x87')](function(_0x2fae34){for(var _0x3fbdc8=0x0;_0x3fbdc8<_0x5eec33[_0x55ae('0x4f')][_0x55ae('0x5f')]['length'];_0x3fbdc8+=0x1){socket[_0x55ae('0x88')](_0x55ae('0x89'),{'UserId':Number(_0x5eec33['body'][_0x55ae('0x5f')][_0x3fbdc8]),'CmListId':Number(_0x5eec33[_0x55ae('0x4c')]['id'])});}return _0x2fae34;});}})[_0x55ae('0x2a')](respondWithResult(_0x49de42,null))[_0x55ae('0x4a')](handleError(_0x49de42,null));};exports[_0x55ae('0x8a')]=function(_0x3ffe72,_0xf591eb,_0x4b3fe1){return db[_0x55ae('0x47')]['find']({'where':{'id':_0x3ffe72['params']['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0xf591eb,null))[_0x55ae('0x2a')](function(_0x466403){if(_0x466403){return _0x466403[_0x55ae('0x8a')](_0x3ffe72[_0x55ae('0x35')][_0x55ae('0x5f')])[_0x55ae('0x2a')](function(){if(_[_0x55ae('0x63')](_0x3ffe72['query'][_0x55ae('0x5f')])){for(var _0x130f37=0x0;_0x130f37<_0x3ffe72[_0x55ae('0x35')][_0x55ae('0x5f')][_0x55ae('0x3b')];_0x130f37+=0x1){socket[_0x55ae('0x88')]('userCmList:remove',{'UserId':Number(_0x3ffe72['query'][_0x55ae('0x5f')][_0x130f37]),'CmListId':Number(_0x3ffe72[_0x55ae('0x4c')]['id'])});}}else{socket[_0x55ae('0x88')](_0x55ae('0x8b'),{'UserId':Number(_0x3ffe72[_0x55ae('0x35')][_0x55ae('0x5f')]),'CmListId':Number(_0x3ffe72[_0x55ae('0x4c')]['id'])});}});}})[_0x55ae('0x2a')](respondWithStatusCode(_0xf591eb,null))[_0x55ae('0x4a')](handleError(_0xf591eb,null));};exports[_0x55ae('0x8c')]=function(_0x3f5e3f,_0x9afd2a,_0x4ace04){var _0x48d75e={};var _0x2df8fc={};var _0x17cab9;var _0x5240b5;return db[_0x55ae('0x47')]['findOne']({'where':{'id':_0x3f5e3f['params']['id']}})[_0x55ae('0x2a')](handleEntityNotFound(_0x9afd2a,null))[_0x55ae('0x2a')](function(_0x43e2ac){if(_0x43e2ac){_0x17cab9=_0x43e2ac;_0x2df8fc[_0x55ae('0x34')]=_[_0x55ae('0x36')](db[_0x55ae('0x8d')][_0x55ae('0x33')]);_0x2df8fc[_0x55ae('0x35')]=_[_0x55ae('0x36')](_0x3f5e3f[_0x55ae('0x35')]);_0x2df8fc[_0x55ae('0x37')]=_[_0x55ae('0x39')](_0x2df8fc[_0x55ae('0x34')],_0x2df8fc[_0x55ae('0x35')]);_0x48d75e[_0x55ae('0x38')]=_[_0x55ae('0x39')](_0x2df8fc['model'],qs[_0x55ae('0x3a')](_0x3f5e3f[_0x55ae('0x35')][_0x55ae('0x3a')]));_0x48d75e[_0x55ae('0x38')]=_0x48d75e['attributes']['length']?_0x48d75e['attributes']:_0x2df8fc[_0x55ae('0x34')];_0x48d75e[_0x55ae('0x3e')]=qs[_0x55ae('0x3f')](_0x3f5e3f[_0x55ae('0x35')][_0x55ae('0x3f')]);_0x48d75e[_0x55ae('0x42')]=qs[_0x55ae('0x37')](_[_0x55ae('0x40')](_0x3f5e3f[_0x55ae('0x35')],_0x2df8fc[_0x55ae('0x37')]));if(_0x3f5e3f['query'][_0x55ae('0x41')]){_0x48d75e[_0x55ae('0x42')]=_['merge'](_0x48d75e[_0x55ae('0x42')],{'$or':_[_0x55ae('0x44')](_0x48d75e[_0x55ae('0x38')],function(_0x5e32c2){var _0x573841={};_0x573841[_0x5e32c2]={'$like':'%'+_0x3f5e3f[_0x55ae('0x35')][_0x55ae('0x41')]+'%'};return _0x573841;})});}_0x48d75e=_[_0x55ae('0x43')]({},_0x48d75e,_0x3f5e3f[_0x55ae('0x5b')]);return _0x17cab9[_0x55ae('0x8c')](_0x48d75e);}})[_0x55ae('0x2a')](function(_0x494d5a){if(_0x494d5a){_0x5240b5=_0x494d5a[_0x55ae('0x3b')];if(!_0x3f5e3f['query']['hasOwnProperty'](_0x55ae('0x3d'))){_0x48d75e['limit']=qs[_0x55ae('0x22')](_0x3f5e3f['query'][_0x55ae('0x22')]);_0x48d75e[_0x55ae('0x20')]=qs[_0x55ae('0x20')](_0x3f5e3f[_0x55ae('0x35')]['offset']);}return _0x17cab9[_0x55ae('0x8c')](_0x48d75e);}})[_0x55ae('0x2a')](function(_0x5a656b){if(_0x5a656b){return _0x5a656b?{'count':_0x5240b5,'rows':_0x5a656b}:null;}})['then'](respondWithResult(_0x9afd2a,null))[_0x55ae('0x4a')](handleError(_0x9afd2a,null));};
\ No newline at end of file
+var _0xc844=['cf_%s','getCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','eml-format','zip-dir','request-promise','moment','path','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','redis','socket.io-emitter','./cmList.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','end','stack','name','send','CmList','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','get','role','user','UserProfileSection','autoAssociation','UserProfileResource','error','update','describe','addDisposition','ListId','Disposition','getDispositions','findOne','hasOwnProperty','rows','removeDispositions','addContacts','isArray','tags','join','push','each','omit','ids','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','getContactsCsv','CmContact','raw','isEmpty','now','/tmp/list_%d_%s.csv','setHeader','attachment;\x20filename=','list_%d_%s.csv','download','addCustomField','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface'];(function(_0x3b3cb6,_0x4c1c96){var _0x3c210c=function(_0x41d865){while(--_0x41d865){_0x3b3cb6['push'](_0x3b3cb6['shift']());}};_0x3c210c(++_0x4c1c96);}(_0xc844,0x97));var _0x4c84=function(_0x43f313,_0x583b61){_0x43f313=_0x43f313-0x0;var _0x3a27ac=_0xc844[_0x43f313];return _0x3a27ac;};'use strict';var emlformat=require(_0x4c84('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4c84('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4c84('0x2'));var moment=require(_0x4c84('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x4c84('0x4'));var sox=require('sox');var csv=require(_0x4c84('0x5'));var ejs=require(_0x4c84('0x6'));var fs=require('fs');var fs_extra=require(_0x4c84('0x7'));var _=require('lodash');var squel=require(_0x4c84('0x8'));var crypto=require(_0x4c84('0x9'));var jsforce=require(_0x4c84('0xa'));var deskjs=require(_0x4c84('0xb'));var toCsv=require(_0x4c84('0x5'));var querystring=require(_0x4c84('0xc'));var Papa=require(_0x4c84('0xd'));var Redis=require(_0x4c84('0xe'));var authService=require(_0x4c84('0xf'));var qs=require(_0x4c84('0x10'));var as=require(_0x4c84('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4c84('0x12'))('api');var utils=require(_0x4c84('0x13'));var config=require(_0x4c84('0x14'));var licenseUtil=require(_0x4c84('0x15'));var db=require('../../mysqldb')['db'];config[_0x4c84('0x16')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4c84('0x17'))(new Redis(config[_0x4c84('0x16')]));require(_0x4c84('0x18'))[_0x4c84('0x19')](socket);function respondWithStatusCode(_0x4704d5,_0x5d731f){_0x5d731f=_0x5d731f||0xcc;return function(_0x2690f4){if(_0x2690f4){return _0x4704d5[_0x4c84('0x1a')](_0x5d731f);}return _0x4704d5[_0x4c84('0x1b')](_0x5d731f)['end']();};}function respondWithResult(_0x831092,_0x4724d4){_0x4724d4=_0x4724d4||0xc8;return function(_0x147f1a){if(_0x147f1a){return _0x831092[_0x4c84('0x1b')](_0x4724d4)[_0x4c84('0x1c')](_0x147f1a);}};}function respondWithFilteredResult(_0xbca5b0,_0x5970f0){return function(_0x286bcc){if(_0x286bcc){var _0x5e751a=typeof _0x5970f0[_0x4c84('0x1d')]===_0x4c84('0x1e')&&typeof _0x5970f0[_0x4c84('0x1f')]===_0x4c84('0x1e');var _0x537a23=_0x286bcc['count'];var _0x4be20e=_0x5e751a?0x0:_0x5970f0['offset'];var _0xcbb62a=_0x5e751a?_0x286bcc[_0x4c84('0x20')]:_0x5970f0[_0x4c84('0x1d')]+_0x5970f0[_0x4c84('0x1f')];var _0xb3f0f5;if(_0xcbb62a>=_0x537a23){_0xcbb62a=_0x537a23;_0xb3f0f5=0xc8;}else{_0xb3f0f5=0xce;}_0xbca5b0[_0x4c84('0x1b')](_0xb3f0f5);return _0xbca5b0['set'](_0x4c84('0x21'),_0x4be20e+'-'+_0xcbb62a+'/'+_0x537a23)[_0x4c84('0x1c')](_0x286bcc);}return null;};}function patchUpdates(_0x1e0921){return function(_0x4fbf17){try{jsonpatch[_0x4c84('0x22')](_0x4fbf17,_0x1e0921,!![]);}catch(_0x585959){return BPromise['reject'](_0x585959);}return _0x4fbf17[_0x4c84('0x23')]();};}function saveUpdates(_0x3ca40d,_0x19cfbd){return function(_0x29853c){if(_0x29853c){return _0x29853c['update'](_0x3ca40d)[_0x4c84('0x24')](function(_0x10e59f){return _0x10e59f;});}return null;};}function removeEntity(_0x28e607,_0x110ef8){return function(_0x2c8f72){if(_0x2c8f72){return _0x2c8f72[_0x4c84('0x25')]()[_0x4c84('0x24')](function(){var _0x286bb7=_0x2c8f72['get']({'plain':!![]});var _0x8a76c='Lists';return db['UserProfileResource'][_0x4c84('0x25')]({'where':{'type':_0x8a76c,'resourceId':_0x286bb7['id']}})['then'](function(){return _0x2c8f72;});})[_0x4c84('0x24')](function(){_0x28e607[_0x4c84('0x1b')](0xcc)[_0x4c84('0x26')]();});}};}function handleEntityNotFound(_0x5b5fcd,_0x322d6c){return function(_0x1095d8){if(!_0x1095d8){_0x5b5fcd[_0x4c84('0x1a')](0x194);}return _0x1095d8;};}function handleError(_0x45c5fa,_0x5d15a3){_0x5d15a3=_0x5d15a3||0x1f4;return function(_0x1880c6){logger['error'](_0x1880c6[_0x4c84('0x27')]);if(_0x1880c6[_0x4c84('0x28')]){delete _0x1880c6[_0x4c84('0x28')];}_0x45c5fa['status'](_0x5d15a3)[_0x4c84('0x29')](_0x1880c6);};}exports['index']=function(_0x3bdefe,_0xc41cdb){var _0x3bc83a={},_0x297d43={},_0x5c2b2b={'count':0x0,'rows':[]};var _0x20176c=_['map'](db[_0x4c84('0x2a')][_0x4c84('0x2b')],function(_0x2a8d97){return{'name':_0x2a8d97[_0x4c84('0x2c')],'type':_0x2a8d97[_0x4c84('0x2d')]['key']};});_0x297d43[_0x4c84('0x2e')]=_[_0x4c84('0x2f')](_0x20176c,_0x4c84('0x28'));_0x297d43[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x3bdefe['query']);_0x297d43[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x297d43[_0x4c84('0x2e')],_0x297d43[_0x4c84('0x30')]);_0x3bc83a[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0x297d43[_0x4c84('0x2e')],qs['fields'](_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x35')]));_0x3bc83a['attributes']=_0x3bc83a[_0x4c84('0x34')][_0x4c84('0x36')]?_0x3bc83a[_0x4c84('0x34')]:_0x297d43['model'];if(!_0x3bdefe[_0x4c84('0x30')]['hasOwnProperty'](_0x4c84('0x37'))){_0x3bc83a[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x3bdefe['query'][_0x4c84('0x1f')]);_0x3bc83a[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x1d')]);}_0x3bc83a[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x39')]);_0x3bc83a[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_[_0x4c84('0x3b')](_0x3bdefe['query'],_0x297d43[_0x4c84('0x32')]),_0x20176c);if(_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x3bc83a[_0x4c84('0x3a')]=_['merge'](_0x3bc83a[_0x4c84('0x3a')],{'$or':_['map'](_0x20176c,function(_0x2bfe0a){if(_0x2bfe0a[_0x4c84('0x2d')]!=='VIRTUAL'){var _0x1fd757={};_0x1fd757[_0x2bfe0a[_0x4c84('0x28')]]={'$like':'%'+_0x3bdefe[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x1fd757;}})});}_0x3bc83a=_[_0x4c84('0x3d')]({},_0x3bc83a,_0x3bdefe[_0x4c84('0x3e')]);var _0x4b90e9={'where':_0x3bc83a[_0x4c84('0x3a')]};return db[_0x4c84('0x2a')][_0x4c84('0x20')](_0x4b90e9)[_0x4c84('0x24')](function(_0x3f30ce){_0x5c2b2b[_0x4c84('0x20')]=_0x3f30ce;if(_0x3bdefe['query'][_0x4c84('0x3f')]){_0x3bc83a[_0x4c84('0x40')]=[{'all':!![]}];}return db['CmList'][_0x4c84('0x41')](_0x3bc83a);})[_0x4c84('0x24')](function(_0x3c2561){_0x5c2b2b['rows']=_0x3c2561;return _0x5c2b2b;})['then'](respondWithFilteredResult(_0xc41cdb,_0x3bc83a))[_0x4c84('0x42')](handleError(_0xc41cdb,null));};exports[_0x4c84('0x43')]=function(_0x12e56a,_0x434a1){var _0x1e4cc2={'raw':![],'where':{'id':_0x12e56a[_0x4c84('0x44')]['id']}},_0x446371={};_0x446371[_0x4c84('0x2e')]=_[_0x4c84('0x31')](db[_0x4c84('0x2a')][_0x4c84('0x2b')]);_0x446371[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x12e56a[_0x4c84('0x30')]);_0x446371['filters']=_[_0x4c84('0x33')](_0x446371[_0x4c84('0x2e')],_0x446371[_0x4c84('0x30')]);_0x1e4cc2[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0x446371[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x12e56a['query'][_0x4c84('0x35')]));_0x1e4cc2[_0x4c84('0x34')]=_0x1e4cc2[_0x4c84('0x34')][_0x4c84('0x36')]?_0x1e4cc2[_0x4c84('0x34')]:_0x446371[_0x4c84('0x2e')];if(_0x12e56a['query'][_0x4c84('0x3f')]){_0x1e4cc2['include']=[{'all':!![]}];}_0x1e4cc2=_[_0x4c84('0x3d')]({},_0x1e4cc2,_0x12e56a['options']);return db[_0x4c84('0x2a')][_0x4c84('0x45')](_0x1e4cc2)[_0x4c84('0x24')](handleEntityNotFound(_0x434a1,null))[_0x4c84('0x24')](respondWithResult(_0x434a1,null))['catch'](handleError(_0x434a1,null));};exports[_0x4c84('0x46')]=function(_0x9c63b3,_0x3ac345){return db[_0x4c84('0x2a')]['create'](_0x9c63b3[_0x4c84('0x47')],{})['then'](function(_0x5b9052){var _0xa41948=_0x9c63b3['user'][_0x4c84('0x48')]({'plain':!![]});if(!_0xa41948)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa41948[_0x4c84('0x49')]===_0x4c84('0x4a')){var _0x4533b0=_0x5b9052['get']({'plain':!![]});var _0x2f57b3='Lists';return db[_0x4c84('0x4b')][_0x4c84('0x45')]({'where':{'name':_0x2f57b3,'userProfileId':_0xa41948['userProfileId']},'raw':!![]})[_0x4c84('0x24')](function(_0x3a038d){if(_0x3a038d&&_0x3a038d[_0x4c84('0x4c')]===0x0){return db[_0x4c84('0x4d')]['create']({'name':_0x4533b0['name'],'resourceId':_0x4533b0['id'],'type':_0x3a038d[_0x4c84('0x28')],'sectionId':_0x3a038d['id']},{})[_0x4c84('0x24')](function(){return _0x5b9052;});}else{return _0x5b9052;}})['catch'](function(_0x228d8f){logger[_0x4c84('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x228d8f);throw _0x228d8f;});}return _0x5b9052;})[_0x4c84('0x24')](respondWithResult(_0x3ac345,0xc9))[_0x4c84('0x42')](handleError(_0x3ac345,null));};exports[_0x4c84('0x4f')]=function(_0x14e243,_0x13d3b6){if(_0x14e243['body']['id']){delete _0x14e243['body']['id'];}return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x14e243['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x13d3b6,null))[_0x4c84('0x24')](saveUpdates(_0x14e243['body'],null))[_0x4c84('0x24')](respondWithResult(_0x13d3b6,null))['catch'](handleError(_0x13d3b6,null));};exports[_0x4c84('0x25')]=function(_0x330972,_0x4fcc92){return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x330972['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x4fcc92,null))['then'](removeEntity(_0x4fcc92,null))[_0x4c84('0x42')](handleError(_0x4fcc92,null));};exports['describe']=function(_0x3e03fa,_0x341369){return db[_0x4c84('0x2a')][_0x4c84('0x50')]()[_0x4c84('0x24')](respondWithResult(_0x341369,null))[_0x4c84('0x42')](handleError(_0x341369,null));};exports[_0x4c84('0x51')]=function(_0xe75861,_0x5bc03e,_0x40ec5e){if(_0xe75861[_0x4c84('0x47')]['id']){delete _0xe75861[_0x4c84('0x47')]['id'];}return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0xe75861[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x5bc03e,null))[_0x4c84('0x24')](function(_0x228dab){if(_0x228dab){_0xe75861['body'][_0x4c84('0x52')]=_0x228dab['id'];return db[_0x4c84('0x53')][_0x4c84('0x46')](_0xe75861['body']);}})[_0x4c84('0x24')](respondWithResult(_0x5bc03e,null))['catch'](handleError(_0x5bc03e,null));};exports[_0x4c84('0x54')]=function(_0x3c1564,_0x1e3372,_0x36fab3){var _0x11d9b2={'raw':![],'where':{}};var _0x1a985b={};var _0x4421e8={'count':0x0,'rows':[]};return db[_0x4c84('0x2a')][_0x4c84('0x55')]({'where':{'id':_0x3c1564[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x1e3372,null))[_0x4c84('0x24')](function(_0x4812a2){if(_0x4812a2){_0x1a985b[_0x4c84('0x2e')]=_['keys'](db[_0x4c84('0x53')][_0x4c84('0x2b')]);_0x1a985b[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x3c1564['query']);_0x1a985b[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x1a985b[_0x4c84('0x2e')],_0x1a985b['query']);_0x11d9b2[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0x1a985b[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x3c1564[_0x4c84('0x30')][_0x4c84('0x35')]));_0x11d9b2[_0x4c84('0x34')]=_0x11d9b2['attributes'][_0x4c84('0x36')]?_0x11d9b2[_0x4c84('0x34')]:_0x1a985b['model'];if(!_0x3c1564['query'][_0x4c84('0x56')]('nolimit')){_0x11d9b2[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x3c1564['query']['limit']);_0x11d9b2[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x3c1564[_0x4c84('0x30')][_0x4c84('0x1d')]);}_0x11d9b2[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x3c1564[_0x4c84('0x30')][_0x4c84('0x39')]);_0x11d9b2[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_[_0x4c84('0x3b')](_0x3c1564[_0x4c84('0x30')],_0x1a985b[_0x4c84('0x32')]));_0x11d9b2[_0x4c84('0x3a')][_0x4c84('0x52')]=_0x4812a2['id'];if(_0x3c1564['query']['filter']){_0x11d9b2['where']=_[_0x4c84('0x3d')](_0x11d9b2[_0x4c84('0x3a')],{'$or':_[_0x4c84('0x2f')](_0x11d9b2[_0x4c84('0x34')],function(_0x2ed46a){var _0x526b4d={};_0x526b4d[_0x2ed46a]={'$like':'%'+_0x3c1564[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x526b4d;})});}_0x11d9b2=_[_0x4c84('0x3d')]({},_0x11d9b2,_0x3c1564[_0x4c84('0x3e')]);return db[_0x4c84('0x53')][_0x4c84('0x20')]({'where':_0x11d9b2[_0x4c84('0x3a')]})['then'](function(_0x2894a0){_0x4421e8[_0x4c84('0x20')]=_0x2894a0;if(_0x3c1564[_0x4c84('0x30')][_0x4c84('0x3f')]){_0x11d9b2[_0x4c84('0x40')]=[{'all':!![]}];}return db['Disposition'][_0x4c84('0x41')](_0x11d9b2);})['then'](function(_0xe05512){_0x4421e8[_0x4c84('0x57')]=_0xe05512;return _0x4421e8;});}})[_0x4c84('0x24')](respondWithFilteredResult(_0x1e3372,_0x11d9b2))[_0x4c84('0x42')](handleError(_0x1e3372,null));};exports[_0x4c84('0x58')]=function(_0x363eda,_0x466108,_0x192de6){return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x363eda[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x466108,null))[_0x4c84('0x24')](function(_0x3c5719){if(_0x3c5719){return _0x3c5719[_0x4c84('0x58')](_0x363eda[_0x4c84('0x30')]['ids']);}})[_0x4c84('0x24')](respondWithStatusCode(_0x466108,null))['catch'](handleError(_0x466108,null));};exports[_0x4c84('0x59')]=function(_0x43f13b,_0x453eac,_0x334afa){return db['CmList'][_0x4c84('0x45')]({'where':{'id':_0x43f13b['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x453eac,null))[_0x4c84('0x24')](function(_0x5c9d4f){if(_0x5c9d4f){var _0x509760=[];var _0x2be51a={'success':[],'errors':[]};return db['CmContact'][_0x4c84('0x50')]()[_0x4c84('0x24')](function(_0x5addad){if(_0x43f13b[_0x4c84('0x47')]['tags']&&_[_0x4c84('0x5a')](_0x43f13b[_0x4c84('0x47')][_0x4c84('0x5b')])){if(_0x43f13b[_0x4c84('0x47')]['tags'][_0x4c84('0x36')]){_0x43f13b[_0x4c84('0x47')][_0x4c84('0x5b')]=_0x43f13b['body']['tags'][_0x4c84('0x5c')](';')+';';}else{_0x43f13b[_0x4c84('0x47')][_0x4c84('0x5b')]=null;}}else{_0x43f13b[_0x4c84('0x47')]['tags']=null;}if(_0x43f13b[_0x4c84('0x47')]&&_[_0x4c84('0x5a')](_0x43f13b[_0x4c84('0x47')])){for(var _0x2eecc9=0x0;_0x2eecc9<_0x43f13b[_0x4c84('0x47')]['length'];_0x2eecc9+=0x1){_0x43f13b[_0x4c84('0x47')][_0x2eecc9]['ListId']=_0x43f13b[_0x4c84('0x44')]['id'];_0x509760[_0x4c84('0x5d')](_0x43f13b[_0x4c84('0x47')][_0x2eecc9]);}return BPromise[_0x4c84('0x5e')](_0x509760,function(_0x3cc64c){return db['CmContact'][_0x4c84('0x46')](_[_0x4c84('0x5f')](_0x3cc64c,[_0x4c84('0x60'),'id'])||{},{'fields':_[_0x4c84('0x31')](_0x5addad),'raw':!![]})[_0x4c84('0x24')](function(_0x2f397a){_0x2be51a[_0x4c84('0x61')]['push'](_0x2f397a[_0x4c84('0x62')]);})['catch'](function(_0x574802){_0x2be51a[_0x4c84('0x63')][_0x4c84('0x5d')]({'data':_0x3cc64c,'error':_0x574802[_0x4c84('0x64')]});});})[_0x4c84('0x24')](function(_0x5bdc56){return _0x2be51a;})[_0x4c84('0x42')](function(_0x22ed0b){return _0x22ed0b;});}else{_0x453eac[_0x4c84('0x1b')](0x190)['json']({'message':_0x4c84('0x65')});}});}})['then'](respondWithResult(_0x453eac,null))[_0x4c84('0x42')](handleError(_0x453eac,null));};exports[_0x4c84('0x66')]=function(_0xcc147a,_0x5f1b7d,_0x54a6ee){var _0x3118df;return db['CmList'][_0x4c84('0x45')]({'where':{'id':_0xcc147a[_0x4c84('0x44')]['id']},'include':[{'model':db[_0x4c84('0x67')],'as':_0x4c84('0x68')}]})[_0x4c84('0x24')](handleEntityNotFound(_0x5f1b7d,null))[_0x4c84('0x24')](function(_0x447e25){if(_0x447e25){_0x3118df=_0x447e25;return db['CmContact'][_0x4c84('0x2b')];}})[_0x4c84('0x24')](function(_0x96b2a6){if(_0x96b2a6){var _0x13acac={};var _0xce899f={};_0xce899f[_0x4c84('0x2e')]=_[_0x4c84('0x69')](_[_0x4c84('0x31')](_0x96b2a6),_[_0x4c84('0x2f')](_0x3118df[_0x4c84('0x68')],function(_0x3a81a3){return util[_0x4c84('0x6a')](_0x4c84('0x6b'),_0x3a81a3['id']);}));_0xce899f[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0xcc147a[_0x4c84('0x30')]);_0xce899f[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0xce899f[_0x4c84('0x2e')],_0xce899f[_0x4c84('0x30')]);_0x13acac[_0x4c84('0x34')]=_[_0x4c84('0x33')](_0xce899f[_0x4c84('0x2e')],qs['fields'](_0xcc147a[_0x4c84('0x30')][_0x4c84('0x35')]));_0x13acac[_0x4c84('0x34')]=_0x13acac['attributes']['length']?_0x13acac[_0x4c84('0x34')]:_0xce899f[_0x4c84('0x2e')];if(!_0xcc147a['query']['hasOwnProperty'](_0x4c84('0x37'))){_0x13acac[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0xcc147a[_0x4c84('0x30')][_0x4c84('0x1f')]);_0x13acac[_0x4c84('0x1d')]=qs['offset'](_0xcc147a[_0x4c84('0x30')]['offset']);}_0x13acac['order']=qs[_0x4c84('0x39')](_0xcc147a['query'][_0x4c84('0x39')]);_0x13acac[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_['pick'](_0xcc147a['query'],_0xce899f['filters']));_0x13acac['raw']=!![];if(_0xcc147a[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x13acac[_0x4c84('0x3a')]=_[_0x4c84('0x3d')](_0x13acac['where'],{'$or':_[_0x4c84('0x2f')](_0x13acac[_0x4c84('0x34')],function(_0x58d73e){var _0x538915={};_0x538915[_0x58d73e]={'$like':'%'+_0xcc147a[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x538915;})});}_0x13acac=_[_0x4c84('0x3d')]({},_0x13acac,_0xcc147a[_0x4c84('0x3e')]);return _0x3118df[_0x4c84('0x66')](_0x13acac);}})[_0x4c84('0x24')](respondWithResult(_0x5f1b7d,null))[_0x4c84('0x42')](handleError(_0x5f1b7d,null));};exports[_0x4c84('0x6c')]=function(_0x11ea8f,_0x276c09,_0xdab61f){var _0x1e0556;return db[_0x4c84('0x2a')][_0x4c84('0x45')]({'where':{'id':_0x11ea8f[_0x4c84('0x44')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x4c84('0x68')}]})[_0x4c84('0x24')](handleEntityNotFound(_0x276c09,null))['then'](function(_0x125e0c){if(_0x125e0c){_0x1e0556=_0x125e0c;return db[_0x4c84('0x6d')][_0x4c84('0x2b')];}})[_0x4c84('0x24')](function(_0x3994cc){if(_0x3994cc){var _0x574bf4={};var _0xfbfdb5={};_0xfbfdb5[_0x4c84('0x2e')]=_[_0x4c84('0x69')](_[_0x4c84('0x31')](_0x3994cc),_[_0x4c84('0x2f')](_0x1e0556[_0x4c84('0x68')],function(_0xfbc404){return util[_0x4c84('0x6a')]('cf_%d',_0xfbc404['id']);}));_0xfbfdb5[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x11ea8f[_0x4c84('0x30')]);_0xfbfdb5[_0x4c84('0x32')]=_['intersection'](_0xfbfdb5[_0x4c84('0x2e')],_0xfbfdb5[_0x4c84('0x30')]);_0x574bf4['attributes']=_[_0x4c84('0x33')](_0xfbfdb5[_0x4c84('0x2e')],qs['fields'](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x35')]));_0x574bf4[_0x4c84('0x34')]=_0x574bf4[_0x4c84('0x34')][_0x4c84('0x36')]?_0x574bf4['attributes']:_0xfbfdb5['model'];if(!_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x56')](_0x4c84('0x37'))){_0x574bf4[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x1f')]);_0x574bf4[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x1d')]);}_0x574bf4[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x11ea8f[_0x4c84('0x30')][_0x4c84('0x39')]);_0x574bf4[_0x4c84('0x3a')]=qs['filters'](_['pick'](_0x11ea8f[_0x4c84('0x30')],_0xfbfdb5[_0x4c84('0x32')]));_0x574bf4[_0x4c84('0x6e')]=!![];if(_0x11ea8f[_0x4c84('0x30')]['filter']){_0x574bf4[_0x4c84('0x3a')]=_['merge'](_0x574bf4['where'],{'$or':_[_0x4c84('0x2f')](_0x574bf4[_0x4c84('0x34')],function(_0x401b19){var _0x596603={};_0x596603[_0x401b19]={'$like':'%'+_0x11ea8f[_0x4c84('0x30')]['filter']+'%'};return _0x596603;})});}_0x574bf4=_[_0x4c84('0x3d')]({},_0x574bf4,_0x11ea8f[_0x4c84('0x3e')]);return _0x1e0556[_0x4c84('0x66')](_0x574bf4);}})[_0x4c84('0x24')](function(_0xfe3430){if(!_[_0x4c84('0x6f')](_0xfe3430)){var _0x3ff746=toCsv(_0xfe3430);var _0x1a6f1f=Date[_0x4c84('0x70')]();fs['writeFileSync'](util['format'](_0x4c84('0x71'),_0x1e0556['id'],_0x1a6f1f),_0x3ff746);_0x276c09[_0x4c84('0x72')]('Content-disposition',_0x4c84('0x73')+util[_0x4c84('0x6a')](_0x4c84('0x74'),_0x1e0556['id'],_0x1a6f1f));_0x276c09[_0x4c84('0x72')]('Content-type','text/csv');return _0x276c09[_0x4c84('0x75')](util[_0x4c84('0x6a')](_0x4c84('0x71'),_0x1e0556['id'],_0x1a6f1f));}else{return _0x276c09[_0x4c84('0x1a')](0xcc);}})[_0x4c84('0x42')](handleError(_0x276c09,null));};exports[_0x4c84('0x76')]=function(_0x4baadd,_0x4cdf4d,_0x12611b){var _0x53da0f;delete _0x4baadd[_0x4c84('0x47')]['id'];return db[_0x4c84('0x2a')][_0x4c84('0x55')]({'where':{'id':_0x4baadd[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x4cdf4d,null))['then'](function(_0x46aa07){if(_0x46aa07){return db['sequelize'][_0x4c84('0x77')](function(_0x5c580b){return db[_0x4c84('0x67')][_0x4c84('0x46')](_0x4baadd['body'],{'transaction':_0x5c580b})[_0x4c84('0x24')](function(_0x30448d){_0x53da0f=_0x30448d;return _0x46aa07[_0x4c84('0x78')](_0x30448d,{'transaction':_0x5c580b});})['then'](function(){var _0x5880c5={'type':db[_0x4c84('0x79')][_0x4c84('0x7a')],'transaction':_0x5c580b};switch(_0x4baadd['body'][_0x4c84('0x2d')]){case'text':_0x5880c5[_0x4c84('0x2d')]=db['Sequelize'][_0x4c84('0x7a')];break;case _0x4c84('0x7b'):_0x5880c5[_0x4c84('0x2d')]=db['Sequelize'][_0x4c84('0x7c')];break;case _0x4c84('0x7d'):_0x5880c5['type']=db[_0x4c84('0x79')][_0x4c84('0x7e')];_0x5880c5[_0x4c84('0x7f')]=![];break;default:}return db['sequelize'][_0x4c84('0x80')]['addColumn']('cm_contacts',util[_0x4c84('0x6a')](_0x4c84('0x81'),_0x53da0f['id']),_0x5880c5);})[_0x4c84('0x24')](function(){return _0x53da0f;});});}})['then'](respondWithResult(_0x4cdf4d,null))[_0x4c84('0x42')](handleError(_0x4cdf4d,null));};exports[_0x4c84('0x82')]=function(_0x8f646e,_0x2acdd7,_0x2bc7b8){var _0x3b2387={};var _0x360716={};var _0x309cf3;var _0x415434;return db['CmList'][_0x4c84('0x55')]({'where':{'id':_0x8f646e[_0x4c84('0x44')]['id']}})['then'](handleEntityNotFound(_0x2acdd7,null))[_0x4c84('0x24')](function(_0x5eb44d){if(_0x5eb44d){_0x309cf3=_0x5eb44d;_0x360716['model']=_[_0x4c84('0x31')](db[_0x4c84('0x67')][_0x4c84('0x2b')]);_0x360716[_0x4c84('0x30')]=_['keys'](_0x8f646e[_0x4c84('0x30')]);_0x360716[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x360716[_0x4c84('0x2e')],_0x360716[_0x4c84('0x30')]);_0x3b2387[_0x4c84('0x34')]=_['intersection'](_0x360716[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x8f646e[_0x4c84('0x30')]['fields']));_0x3b2387[_0x4c84('0x34')]=_0x3b2387[_0x4c84('0x34')][_0x4c84('0x36')]?_0x3b2387['attributes']:_0x360716[_0x4c84('0x2e')];_0x3b2387[_0x4c84('0x38')]=qs[_0x4c84('0x39')](_0x8f646e['query'][_0x4c84('0x39')]);_0x3b2387[_0x4c84('0x3a')]=qs['filters'](_[_0x4c84('0x3b')](_0x8f646e[_0x4c84('0x30')],_0x360716[_0x4c84('0x32')]));_0x3b2387['where']=_['merge'](_0x3b2387[_0x4c84('0x3a')],{'$or':[{'ListId':_0x5eb44d['id']},{'ListId':null}]});if(_0x8f646e[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x3b2387[_0x4c84('0x3a')]=_[_0x4c84('0x3d')](_0x3b2387[_0x4c84('0x3a')],{'$or':_['map'](_0x3b2387[_0x4c84('0x34')],function(_0x228b99){var _0x1adbac={};_0x1adbac[_0x228b99]={'$like':'%'+_0x8f646e[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x1adbac;})});}_0x3b2387=_[_0x4c84('0x3d')]({},_0x3b2387,_0x8f646e[_0x4c84('0x3e')]);return db[_0x4c84('0x67')][_0x4c84('0x83')](_0x3b2387);}})[_0x4c84('0x24')](respondWithResult(_0x2acdd7,null))[_0x4c84('0x42')](handleError(_0x2acdd7,null));};exports[_0x4c84('0x84')]=function(_0x2911e8,_0x5368cd,_0x410a7d){return db['CmList'][_0x4c84('0x45')]({'where':{'id':_0x2911e8[_0x4c84('0x44')]['id']}})['then'](handleEntityNotFound(_0x5368cd,null))['then'](function(_0x7cd71b){if(_0x7cd71b){return _0x7cd71b[_0x4c84('0x84')](_0x2911e8[_0x4c84('0x47')]['ids'],_[_0x4c84('0x5f')](_0x2911e8['body'],['ids','id'])||{})[_0x4c84('0x85')](function(_0xa39139){for(var _0x57519a=0x0;_0x57519a<_0x2911e8[_0x4c84('0x47')][_0x4c84('0x60')][_0x4c84('0x36')];_0x57519a+=0x1){socket[_0x4c84('0x86')](_0x4c84('0x87'),{'UserId':Number(_0x2911e8[_0x4c84('0x47')]['ids'][_0x57519a]),'CmListId':Number(_0x2911e8['params']['id'])});}return _0xa39139;});}})[_0x4c84('0x24')](respondWithResult(_0x5368cd,null))[_0x4c84('0x42')](handleError(_0x5368cd,null));};exports[_0x4c84('0x88')]=function(_0x56c66e,_0x29351f,_0x466bdb){return db[_0x4c84('0x2a')]['find']({'where':{'id':_0x56c66e[_0x4c84('0x44')]['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x29351f,null))[_0x4c84('0x24')](function(_0x3b40e3){if(_0x3b40e3){return _0x3b40e3[_0x4c84('0x88')](_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')])['then'](function(){if(_['isArray'](_0x56c66e[_0x4c84('0x30')]['ids'])){for(var _0x759914=0x0;_0x759914<_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')][_0x4c84('0x36')];_0x759914+=0x1){socket[_0x4c84('0x86')]('userCmList:remove',{'UserId':Number(_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')][_0x759914]),'CmListId':Number(_0x56c66e[_0x4c84('0x44')]['id'])});}}else{socket[_0x4c84('0x86')](_0x4c84('0x89'),{'UserId':Number(_0x56c66e[_0x4c84('0x30')][_0x4c84('0x60')]),'CmListId':Number(_0x56c66e[_0x4c84('0x44')]['id'])});}});}})['then'](respondWithStatusCode(_0x29351f,null))[_0x4c84('0x42')](handleError(_0x29351f,null));};exports[_0x4c84('0x8a')]=function(_0x23f157,_0x25786d,_0x4e1ad1){var _0x527c39={};var _0x4f5c47={};var _0xaa7e4;var _0x425997;return db[_0x4c84('0x2a')][_0x4c84('0x55')]({'where':{'id':_0x23f157['params']['id']}})[_0x4c84('0x24')](handleEntityNotFound(_0x25786d,null))[_0x4c84('0x24')](function(_0x391361){if(_0x391361){_0xaa7e4=_0x391361;_0x4f5c47[_0x4c84('0x2e')]=_[_0x4c84('0x31')](db[_0x4c84('0x8b')][_0x4c84('0x2b')]);_0x4f5c47[_0x4c84('0x30')]=_[_0x4c84('0x31')](_0x23f157[_0x4c84('0x30')]);_0x4f5c47[_0x4c84('0x32')]=_[_0x4c84('0x33')](_0x4f5c47['model'],_0x4f5c47[_0x4c84('0x30')]);_0x527c39['attributes']=_[_0x4c84('0x33')](_0x4f5c47[_0x4c84('0x2e')],qs[_0x4c84('0x35')](_0x23f157[_0x4c84('0x30')][_0x4c84('0x35')]));_0x527c39[_0x4c84('0x34')]=_0x527c39['attributes'][_0x4c84('0x36')]?_0x527c39[_0x4c84('0x34')]:_0x4f5c47[_0x4c84('0x2e')];_0x527c39['order']=qs['sort'](_0x23f157[_0x4c84('0x30')]['sort']);_0x527c39[_0x4c84('0x3a')]=qs[_0x4c84('0x32')](_[_0x4c84('0x3b')](_0x23f157[_0x4c84('0x30')],_0x4f5c47[_0x4c84('0x32')]));if(_0x23f157[_0x4c84('0x30')][_0x4c84('0x3c')]){_0x527c39[_0x4c84('0x3a')]=_[_0x4c84('0x3d')](_0x527c39[_0x4c84('0x3a')],{'$or':_[_0x4c84('0x2f')](_0x527c39['attributes'],function(_0x1c3c75){var _0x35cadb={};_0x35cadb[_0x1c3c75]={'$like':'%'+_0x23f157[_0x4c84('0x30')][_0x4c84('0x3c')]+'%'};return _0x35cadb;})});}_0x527c39=_[_0x4c84('0x3d')]({},_0x527c39,_0x23f157[_0x4c84('0x3e')]);return _0xaa7e4[_0x4c84('0x8a')](_0x527c39);}})[_0x4c84('0x24')](function(_0x50f293){if(_0x50f293){_0x425997=_0x50f293['length'];if(!_0x23f157[_0x4c84('0x30')][_0x4c84('0x56')](_0x4c84('0x37'))){_0x527c39[_0x4c84('0x1f')]=qs[_0x4c84('0x1f')](_0x23f157[_0x4c84('0x30')][_0x4c84('0x1f')]);_0x527c39[_0x4c84('0x1d')]=qs[_0x4c84('0x1d')](_0x23f157[_0x4c84('0x30')][_0x4c84('0x1d')]);}return _0xaa7e4[_0x4c84('0x8a')](_0x527c39);}})['then'](function(_0x5d8730){if(_0x5d8730){return _0x5d8730?{'count':_0x425997,'rows':_0x5d8730}:null;}})['then'](respondWithResult(_0x25786d,null))[_0x4c84('0x42')](handleError(_0x25786d,null));};
\ No newline at end of file
index 9076bc9..139fcff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3e74,0x175));var _0x43e7=function(_0x258bb2,_0x185d88){_0x258bb2=_0x258bb2-0x0;var _0x2a1ad0=_0x3e74[_0x258bb2];return _0x2a1ad0;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x9957=['setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmList'];(function(_0x276a67,_0x36f13b){var _0x577516=function(_0x4c5ef7){while(--_0x4c5ef7){_0x276a67['push'](_0x276a67['shift']());}};_0x577516(++_0x36f13b);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var EventEmitter=require(_0x7995('0x0'));var CmList=require(_0x7995('0x1'))['db'][_0x7995('0x2')];var CmListEvents=new EventEmitter();CmListEvents[_0x7995('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7995('0x4'),'afterDestroy':_0x7995('0x5')};function emitEvent(_0x1902b4){return function(_0x462a03,_0x576d89,_0x744bea){CmListEvents[_0x7995('0x6')](_0x1902b4+':'+_0x462a03['id'],_0x462a03);CmListEvents[_0x7995('0x6')](_0x1902b4,_0x462a03);_0x744bea(null);};}for(var e in events){if(events[_0x7995('0x7')](e)){var event=events[e];CmList[_0x7995('0x8')](e,emitEvent(event));}}module[_0x7995('0x9')]=CmListEvents;
\ No newline at end of file
index 2a12f49..7372a03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['./cmList.attributes','exports','define','cm_lists','lodash','bluebird','rimraf','../../config/environment'];(function(_0x4dd1d2,_0x368e7){var _0x4ca6fe=function(_0x3439ea){while(--_0x3439ea){_0x4dd1d2['push'](_0x4dd1d2['shift']());}};_0x4ca6fe(++_0x368e7);}(_0xf4eb,0xec));var _0xbf4e=function(_0x5b6cba,_0x30c853){_0x5b6cba=_0x5b6cba-0x0;var _0x5cc743=_0xf4eb[_0x5b6cba];return _0x5cc743;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xbf4e('0x1'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xbf4e('0x2'));var config=require(_0xbf4e('0x3'));var attributes=require(_0xbf4e('0x4'));module[_0xbf4e('0x5')]=function(_0xa4dcf5,_0x2fcfed){return _0xa4dcf5[_0xbf4e('0x6')]('CmList',attributes,{'tableName':_0xbf4e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf109=['CmList','cm_lists','lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define'];(function(_0x5bc93d,_0x3a3ff7){var _0x57133b=function(_0x11282b){while(--_0x11282b){_0x5bc93d['push'](_0x5bc93d['shift']());}};_0x57133b(++_0x3a3ff7);}(_0xf109,0xce));var _0x9f10=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0xf109[_0x1a7846];return _0x48049;};'use strict';var _=require(_0x9f10('0x0'));var util=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9f10('0x3'));var fs=require('fs');var path=require(_0x9f10('0x4'));var rimraf=require(_0x9f10('0x5'));var config=require(_0x9f10('0x6'));var attributes=require(_0x9f10('0x7'));module[_0x9f10('0x8')]=function(_0x408fe8,_0xd3137b){return _0x408fe8[_0x9f10('0x9')](_0x9f10('0xa'),attributes,{'tableName':_0x9f10('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc8722a..3f9f387 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe285=['http','redis','socket.io-emitter','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0xebdc99,_0x2552da){var _0x562428=function(_0x171fd0){while(--_0x171fd0){_0xebdc99['push'](_0xebdc99['shift']());}};_0x562428(++_0x2552da);}(_0xe285,0x6f));var _0x5e28=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xe285[_0x55e08b];return _0xd1a7ff;};'use strict';var _=require(_0x5e28('0x0'));var util=require(_0x5e28('0x1'));var moment=require(_0x5e28('0x2'));var BPromise=require(_0x5e28('0x3'));var rs=require(_0x5e28('0x4'));var fs=require('fs');var Redis=require(_0x5e28('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5e28('0x6'))(_0x5e28('0x7'));var config=require(_0x5e28('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x5e28('0x9')]({'port':0x232a});config[_0x5e28('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5e28('0xb'))(new Redis(config[_0x5e28('0xa')]));require('./cmList.socket')[_0x5e28('0xc')](socket);function respondWithRpcPromise(_0x2893a6,_0x37e140,_0x14f7a3){return new BPromise(function(_0xae4ddb,_0x308f21){return client[_0x5e28('0xd')](_0x2893a6,_0x14f7a3)[_0x5e28('0xe')](function(_0x51af54){logger[_0x5e28('0xf')](_0x5e28('0x10'),_0x37e140,_0x5e28('0x11'));logger['debug'](_0x5e28('0x12'),_0x37e140,_0x5e28('0x11'),JSON[_0x5e28('0x13')](_0x51af54));if(_0x51af54[_0x5e28('0x14')]){if(_0x51af54[_0x5e28('0x14')]['code']===0x1f4){logger[_0x5e28('0x14')](_0x5e28('0x10'),_0x37e140,_0x51af54[_0x5e28('0x14')][_0x5e28('0x15')]);return _0x308f21(_0x51af54[_0x5e28('0x14')][_0x5e28('0x15')]);}logger['error'](_0x5e28('0x10'),_0x37e140,_0x51af54[_0x5e28('0x14')][_0x5e28('0x15')]);return _0xae4ddb(_0x51af54['error'][_0x5e28('0x15')]);}else{logger[_0x5e28('0xf')](_0x5e28('0x10'),_0x37e140,_0x5e28('0x11'));_0xae4ddb(_0x51af54[_0x5e28('0x16')][_0x5e28('0x15')]);}})[_0x5e28('0x17')](function(_0x169d58){logger['error']('CmList,\x20%s,\x20%s',_0x37e140,_0x169d58);_0x308f21(_0x169d58);});});}
\ No newline at end of file
+var _0x5bf3=['debug','CmList,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','CmList,\x20%s,\x20%s','message','result','catch','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','register','request','then','info'];(function(_0x3a8057,_0x5a1697){var _0x48e1e6=function(_0x20b3b7){while(--_0x20b3b7){_0x3a8057['push'](_0x3a8057['shift']());}};_0x48e1e6(++_0x5a1697);}(_0x5bf3,0x184));var _0x35bf=function(_0x463699,_0x1493be){_0x463699=_0x463699-0x0;var _0x11fc97=_0x5bf3[_0x463699];return _0x11fc97;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x35bf('0x0'));var fs=require('fs');var Redis=require(_0x35bf('0x1'));var db=require(_0x35bf('0x2'))['db'];var utils=require(_0x35bf('0x3'));var logger=require(_0x35bf('0x4'))('rpc');var config=require(_0x35bf('0x5'));var jayson=require(_0x35bf('0x6'));var client=jayson[_0x35bf('0x7')][_0x35bf('0x8')]({'port':0x232a});config['redis']=_[_0x35bf('0x9')](config['redis'],{'host':_0x35bf('0xa'),'port':0x18eb});var socket=require(_0x35bf('0xb'))(new Redis(config[_0x35bf('0xc')]));require('./cmList.socket')[_0x35bf('0xd')](socket);function respondWithRpcPromise(_0x27ebd8,_0x26cec1,_0x15d044){return new BPromise(function(_0x282826,_0x42a524){return client[_0x35bf('0xe')](_0x27ebd8,_0x15d044)[_0x35bf('0xf')](function(_0x1c7399){logger[_0x35bf('0x10')]('CmList,\x20%s,\x20%s',_0x26cec1,'request\x20sent');logger[_0x35bf('0x11')](_0x35bf('0x12'),_0x26cec1,_0x35bf('0x13'),JSON[_0x35bf('0x14')](_0x1c7399));if(_0x1c7399['error']){if(_0x1c7399['error'][_0x35bf('0x15')]===0x1f4){logger[_0x35bf('0x16')](_0x35bf('0x17'),_0x26cec1,_0x1c7399[_0x35bf('0x16')]['message']);return _0x42a524(_0x1c7399[_0x35bf('0x16')][_0x35bf('0x18')]);}logger[_0x35bf('0x16')]('CmList,\x20%s,\x20%s',_0x26cec1,_0x1c7399['error'][_0x35bf('0x18')]);return _0x282826(_0x1c7399[_0x35bf('0x16')][_0x35bf('0x18')]);}else{logger[_0x35bf('0x10')]('CmList,\x20%s,\x20%s',_0x26cec1,_0x35bf('0x13'));_0x282826(_0x1c7399[_0x35bf('0x19')][_0x35bf('0x18')]);}})[_0x35bf('0x1a')](function(_0x50433e){logger[_0x35bf('0x16')](_0x35bf('0x17'),_0x26cec1,_0x50433e);_0x42a524(_0x50433e);});});}
\ No newline at end of file
index 4322308..aa419e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11b9=['removeListener','register','length','save','remove'];(function(_0x45f70f,_0x29ca5b){var _0xdaad73=function(_0x1f5a6d){while(--_0x1f5a6d){_0x45f70f['push'](_0x45f70f['shift']());}};_0xdaad73(++_0x29ca5b);}(_0x11b9,0x1d9));var _0x911b=function(_0x20c2a5,_0x3bf05a){_0x20c2a5=_0x20c2a5-0x0;var _0x59e4b9=_0x11b9[_0x20c2a5];return _0x59e4b9;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x911b('0x0'),_0x911b('0x1'),'update'];function createListener(_0x501e5e,_0x2d165c){return function(_0x5a43f8){_0x2d165c['emit'](_0x501e5e,_0x5a43f8);};}function removeListener(_0x35d531,_0x479e80){return function(){CmListEvents[_0x911b('0x2')](_0x35d531,_0x479e80);};}exports[_0x911b('0x3')]=function(_0x26758c){for(var _0x24adfd=0x0,_0x20868a=events[_0x911b('0x4')];_0x24adfd<_0x20868a;_0x24adfd++){var _0x3a0bf0=events[_0x24adfd];var _0x37f167=createListener('cmList:'+_0x3a0bf0,_0x26758c);CmListEvents['on'](_0x3a0bf0,_0x37f167);}};
\ No newline at end of file
+var _0x7f0f=['removeListener','save','remove','update','emit'];(function(_0x12926a,_0x4becb7){var _0x36e659=function(_0x40571a){while(--_0x40571a){_0x12926a['push'](_0x12926a['shift']());}};_0x36e659(++_0x4becb7);}(_0x7f0f,0x1d2));var _0xf7f0=function(_0xd469f,_0x28945b){_0xd469f=_0xd469f-0x0;var _0x63cb2=_0x7f0f[_0xd469f];return _0x63cb2;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0xf7f0('0x0'),_0xf7f0('0x1'),_0xf7f0('0x2')];function createListener(_0x2fe1de,_0x575be0){return function(_0x5b1cbf){_0x575be0[_0xf7f0('0x3')](_0x2fe1de,_0x5b1cbf);};}function removeListener(_0x3eb78a,_0xf87ab){return function(){CmListEvents[_0xf7f0('0x4')](_0x3eb78a,_0xf87ab);};}exports['register']=function(_0x1a6f6c){for(var _0x352065=0x0,_0x8f79ef=events['length'];_0x352065<_0x8f79ef;_0x352065++){var _0x105fd7=events[_0x352065];var _0x70f1fd=createListener('cmList:'+_0x105fd7,_0x1a6f6c);CmListEvents['on'](_0x105fd7,_0x70f1fd);}};
\ No newline at end of file
index 7468393..6acf61a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a3f=['addDisposition','post','addContacts','addCustomField','/:id/users','delete','destroy','removeDispositions','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','getCustomFields','create'];(function(_0x4e9274,_0x49576e){var _0x8b474c=function(_0x204cca){while(--_0x204cca){_0x4e9274['push'](_0x4e9274['shift']());}};_0x8b474c(++_0x49576e);}(_0x4a3f,0x101));var _0xf4a3=function(_0x460666,_0x24bfa0){_0x460666=_0x460666-0x0;var _0x555cbf=_0x4a3f[_0x460666];return _0x555cbf;};'use strict';var multer=require(_0xf4a3('0x0'));var util=require(_0xf4a3('0x1'));var path=require(_0xf4a3('0x2'));var timeout=require(_0xf4a3('0x3'));var express=require(_0xf4a3('0x4'));var router=express[_0xf4a3('0x5')]();var fs_extra=require(_0xf4a3('0x6'));var auth=require(_0xf4a3('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xf4a3('0x8'));var controller=require(_0xf4a3('0x9'));router[_0xf4a3('0xa')]('/',auth[_0xf4a3('0xb')](),controller[_0xf4a3('0xc')]);router[_0xf4a3('0xa')]('/describe',auth['isAuthenticated'](),controller[_0xf4a3('0xd')]);router[_0xf4a3('0xa')](_0xf4a3('0xe'),auth[_0xf4a3('0xb')](),controller[_0xf4a3('0xf')]);router[_0xf4a3('0xa')](_0xf4a3('0x10'),auth[_0xf4a3('0xb')](),controller[_0xf4a3('0x11')]);router[_0xf4a3('0xa')](_0xf4a3('0x12'),auth[_0xf4a3('0xb')](),controller['getContacts']);router[_0xf4a3('0xa')](_0xf4a3('0x13'),auth[_0xf4a3('0xb')](),controller['getContactsCsv']);router[_0xf4a3('0xa')]('/:id/fields',auth[_0xf4a3('0xb')](),controller[_0xf4a3('0x14')]);router[_0xf4a3('0xa')]('/:id/users',auth[_0xf4a3('0xb')](),controller['getAgents']);router['post']('/',auth[_0xf4a3('0xb')](),controller[_0xf4a3('0x15')]);router['post']('/:id/dispositions',auth[_0xf4a3('0xb')](),controller[_0xf4a3('0x16')]);router[_0xf4a3('0x17')](_0xf4a3('0x12'),auth['isAuthenticated'](),controller[_0xf4a3('0x18')]);router['post']('/:id/fields',auth['isAuthenticated'](),controller[_0xf4a3('0x19')]);router['post'](_0xf4a3('0x1a'),auth[_0xf4a3('0xb')](),controller['addAgents']);router['put']('/:id',auth[_0xf4a3('0xb')](),controller['update']);router[_0xf4a3('0x1b')](_0xf4a3('0xe'),auth[_0xf4a3('0xb')](),controller[_0xf4a3('0x1c')]);router['delete'](_0xf4a3('0x10'),auth['isAuthenticated'](),controller[_0xf4a3('0x1d')]);router[_0xf4a3('0x1b')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0xf4a3('0x1e')]=router;
\ No newline at end of file
+var _0xf972=['getContacts','/:id/contacts/csv','getContactsCsv','/:id/users','getAgents','post','addDisposition','addContacts','/:id/fields','addCustomField','addAgents','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','express','Router','../../components/auth/service','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts'];(function(_0x2604ac,_0x197cf5){var _0x5b1eae=function(_0x491526){while(--_0x491526){_0x2604ac['push'](_0x2604ac['shift']());}};_0x5b1eae(++_0x197cf5);}(_0xf972,0x147));var _0x2f97=function(_0x2b94cd,_0x571440){_0x2b94cd=_0x2b94cd-0x0;var _0x33ea0d=_0xf972[_0x2b94cd];return _0x33ea0d;};'use strict';var multer=require(_0x2f97('0x0'));var util=require(_0x2f97('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2f97('0x2'));var router=express[_0x2f97('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2f97('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmList.controller');router[_0x2f97('0x5')]('/',auth[_0x2f97('0x6')](),controller[_0x2f97('0x7')]);router[_0x2f97('0x5')]('/describe',auth[_0x2f97('0x6')](),controller[_0x2f97('0x8')]);router[_0x2f97('0x5')](_0x2f97('0x9'),auth[_0x2f97('0x6')](),controller[_0x2f97('0xa')]);router[_0x2f97('0x5')](_0x2f97('0xb'),auth[_0x2f97('0x6')](),controller[_0x2f97('0xc')]);router['get'](_0x2f97('0xd'),auth[_0x2f97('0x6')](),controller[_0x2f97('0xe')]);router[_0x2f97('0x5')](_0x2f97('0xf'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x10')]);router['get']('/:id/fields',auth[_0x2f97('0x6')](),controller['getCustomFields']);router[_0x2f97('0x5')](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x12')]);router['post']('/',auth[_0x2f97('0x6')](),controller['create']);router[_0x2f97('0x13')](_0x2f97('0xb'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x14')]);router[_0x2f97('0x13')](_0x2f97('0xd'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x15')]);router[_0x2f97('0x13')](_0x2f97('0x16'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x17')]);router[_0x2f97('0x13')](_0x2f97('0x11'),auth['isAuthenticated'](),controller[_0x2f97('0x18')]);router['put'](_0x2f97('0x9'),auth['isAuthenticated'](),controller[_0x2f97('0x19')]);router[_0x2f97('0x1a')](_0x2f97('0x9'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x1b')]);router[_0x2f97('0x1a')](_0x2f97('0xb'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x1c')]);router[_0x2f97('0x1a')](_0x2f97('0x11'),auth[_0x2f97('0x6')](),controller[_0x2f97('0x1d')]);module[_0x2f97('0x1e')]=router;
\ No newline at end of file
index 449146a..0b9e58f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b98=['exports','VIRTUAL','getDataValue','field','STRING','sequelize'];(function(_0x424d73,_0x412247){var _0x4367df=function(_0x3df23f){while(--_0x3df23f){_0x424d73['push'](_0x424d73['shift']());}};_0x4367df(++_0x412247);}(_0x4b98,0x161));var _0x84b9=function(_0x126d77,_0x2b217d){_0x126d77=_0x126d77-0x0;var _0x36266a=_0x4b98[_0x126d77];return _0x36266a;};'use strict';var Sequelize=require(_0x84b9('0x0'));module[_0x84b9('0x1')]={'name':{'type':Sequelize[_0x84b9('0x2')],'get':function(_0x1df39d){return this[_0x84b9('0x3')](_0x84b9('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x84b9('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x84b9('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0x72c2=['exports','VIRTUAL','field','STRING','sequelize'];(function(_0x2b78ac,_0x138d6e){var _0x51564d=function(_0x41ba92){while(--_0x41ba92){_0x2b78ac['push'](_0x2b78ac['shift']());}};_0x51564d(++_0x138d6e);}(_0x72c2,0xfe));var _0x272c=function(_0x5b5440,_0x11d622){_0x5b5440=_0x5b5440-0x0;var _0x1c8755=_0x72c2[_0x5b5440];return _0x1c8755;};'use strict';var Sequelize=require(_0x272c('0x0'));module[_0x272c('0x1')]={'name':{'type':Sequelize[_0x272c('0x2')],'get':function(_0x2e4794){return this['getDataValue'](_0x272c('0x3'));}},'field':{'type':Sequelize[_0x272c('0x4')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x272c('0x4')],'allowNull':![]}};
\ No newline at end of file
index 5df7dff..3a3e6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x1a110f,_0x19e326){var _0x204840=function(_0x353512){while(--_0x353512){_0x1a110f['push'](_0x1a110f['shift']());}};_0x204840(++_0x19e326);}(_0x7a54,0x106));var _0x47a5=function(_0x1d4c5c,_0xc94f86){_0x1d4c5c=_0x1d4c5c-0x0;var _0x109efa=_0x7a54[_0x1d4c5c];return _0x109efa;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
+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(_0x3579e6,_0x2a1859){var _0x3a16e7=function(_0x36ddad){while(--_0x36ddad){_0x3579e6['push'](_0x3579e6['shift']());}};_0x3a16e7(++_0x2a1859);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 7fca6d1..f07f85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85f0=['../../config/environment','./condition.attributes','exports','tools_conditions','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x170b20,_0x49fc52){var _0xbe0395=function(_0x410eea){while(--_0x410eea){_0x170b20['push'](_0x170b20['shift']());}};_0xbe0395(++_0x49fc52);}(_0x85f0,0xb8));var _0x085f=function(_0x4e170e,_0x207e58){_0x4e170e=_0x4e170e-0x0;var _0x338291=_0x85f0[_0x4e170e];return _0x338291;};'use strict';var _=require('lodash');var util=require(_0x085f('0x0'));var logger=require(_0x085f('0x1'))(_0x085f('0x2'));var moment=require('moment');var BPromise=require(_0x085f('0x3'));var rp=require(_0x085f('0x4'));var fs=require('fs');var path=require(_0x085f('0x5'));var rimraf=require('rimraf');var config=require(_0x085f('0x6'));var attributes=require(_0x085f('0x7'));module[_0x085f('0x8')]=function(_0x53468c,_0xd171be){return _0x53468c['define']('Condition',attributes,{'tableName':_0x085f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0b92=['../../config/environment','./condition.attributes','exports','define','tools_conditions','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x1e3750,_0x194230){var _0x2b1634=function(_0x5dbd7f){while(--_0x5dbd7f){_0x1e3750['push'](_0x1e3750['shift']());}};_0x2b1634(++_0x194230);}(_0x0b92,0x101));var _0x20b9=function(_0x2d98aa,_0x350f59){_0x2d98aa=_0x2d98aa-0x0;var _0x5c63a8=_0x0b92[_0x2d98aa];return _0x5c63a8;};'use strict';var _=require(_0x20b9('0x0'));var util=require(_0x20b9('0x1'));var logger=require(_0x20b9('0x2'))(_0x20b9('0x3'));var moment=require('moment');var BPromise=require(_0x20b9('0x4'));var rp=require(_0x20b9('0x5'));var fs=require('fs');var path=require(_0x20b9('0x6'));var rimraf=require('rimraf');var config=require(_0x20b9('0x7'));var attributes=require(_0x20b9('0x8'));module[_0x20b9('0x9')]=function(_0x2cc3ce,_0x18d7fb){return _0x2cc3ce[_0x20b9('0xa')]('Condition',attributes,{'tableName':_0x20b9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9e7abf1..7cf5a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59c4=['result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','Condition,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info'];(function(_0x18218c,_0x57aefb){var _0xc0149a=function(_0x11e645){while(--_0x11e645){_0x18218c['push'](_0x18218c['shift']());}};_0xc0149a(++_0x57aefb);}(_0x59c4,0x1a0));var _0x459c=function(_0x406f82,_0x38f053){_0x406f82=_0x406f82-0x0;var _0x258b17=_0x59c4[_0x406f82];return _0x258b17;};'use strict';var _=require(_0x459c('0x0'));var util=require(_0x459c('0x1'));var moment=require('moment');var BPromise=require(_0x459c('0x2'));var rs=require(_0x459c('0x3'));var fs=require('fs');var Redis=require(_0x459c('0x4'));var db=require(_0x459c('0x5'))['db'];var utils=require(_0x459c('0x6'));var logger=require(_0x459c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x459c('0x8'));var client=jayson[_0x459c('0x9')][_0x459c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb23f0b,_0x6bee49,_0x199729){return new BPromise(function(_0x39d8e6,_0x9822d4){return client[_0x459c('0xb')](_0xb23f0b,_0x199729)[_0x459c('0xc')](function(_0x242a97){logger['info'](_0x459c('0xd'),_0x6bee49,_0x459c('0xe'));logger[_0x459c('0xf')]('Condition,\x20%s,\x20%s,\x20%s',_0x6bee49,_0x459c('0xe'),JSON[_0x459c('0x10')](_0x242a97));if(_0x242a97['error']){if(_0x242a97[_0x459c('0x11')][_0x459c('0x12')]===0x1f4){logger[_0x459c('0x11')]('Condition,\x20%s,\x20%s',_0x6bee49,_0x242a97[_0x459c('0x11')][_0x459c('0x13')]);return _0x9822d4(_0x242a97[_0x459c('0x11')][_0x459c('0x13')]);}logger[_0x459c('0x11')](_0x459c('0xd'),_0x6bee49,_0x242a97['error'][_0x459c('0x13')]);return _0x39d8e6(_0x242a97[_0x459c('0x11')]['message']);}else{logger[_0x459c('0x14')](_0x459c('0xd'),_0x6bee49,_0x459c('0xe'));_0x39d8e6(_0x242a97[_0x459c('0x15')]['message']);}})[_0x459c('0x16')](function(_0x6cd09a){logger[_0x459c('0x11')](_0x459c('0xd'),_0x6bee49,_0x6cd09a);_0x9822d4(_0x6cd09a);});});}
\ No newline at end of file
+var _0xe24b=['then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request'];(function(_0xfeb39,_0x1d20b7){var _0x167aa8=function(_0x54b506){while(--_0x54b506){_0xfeb39['push'](_0xfeb39['shift']());}};_0x167aa8(++_0x1d20b7);}(_0xe24b,0x16a));var _0xbe24=function(_0x236c89,_0xd76ba9){_0x236c89=_0x236c89-0x0;var _0x3b2a15=_0xe24b[_0x236c89];return _0x3b2a15;};'use strict';var _=require(_0xbe24('0x0'));var util=require(_0xbe24('0x1'));var moment=require('moment');var BPromise=require(_0xbe24('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbe24('0x3'));var db=require(_0xbe24('0x4'))['db'];var utils=require(_0xbe24('0x5'));var logger=require(_0xbe24('0x6'))(_0xbe24('0x7'));var config=require(_0xbe24('0x8'));var jayson=require(_0xbe24('0x9'));var client=jayson[_0xbe24('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4963ad,_0xf79d7b,_0x28f081){return new BPromise(function(_0x5c0553,_0x5867bb){return client[_0xbe24('0xb')](_0x4963ad,_0x28f081)[_0xbe24('0xc')](function(_0xc2ce1){logger[_0xbe24('0xd')](_0xbe24('0xe'),_0xf79d7b,_0xbe24('0xf'));logger[_0xbe24('0x10')](_0xbe24('0x11'),_0xf79d7b,_0xbe24('0xf'),JSON[_0xbe24('0x12')](_0xc2ce1));if(_0xc2ce1[_0xbe24('0x13')]){if(_0xc2ce1[_0xbe24('0x13')]['code']===0x1f4){logger[_0xbe24('0x13')]('Condition,\x20%s,\x20%s',_0xf79d7b,_0xc2ce1[_0xbe24('0x13')]['message']);return _0x5867bb(_0xc2ce1[_0xbe24('0x13')][_0xbe24('0x14')]);}logger[_0xbe24('0x13')]('Condition,\x20%s,\x20%s',_0xf79d7b,_0xc2ce1[_0xbe24('0x13')]['message']);return _0x5c0553(_0xc2ce1[_0xbe24('0x13')][_0xbe24('0x14')]);}else{logger['info']('Condition,\x20%s,\x20%s',_0xf79d7b,_0xbe24('0xf'));_0x5c0553(_0xc2ce1['result'][_0xbe24('0x14')]);}})[_0xbe24('0x15')](function(_0x151557){logger[_0xbe24('0x13')](_0xbe24('0xe'),_0xf79d7b,_0x151557);_0x5867bb(_0x151557);});});}
\ No newline at end of file
index 65569de..f64fadf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd929=['express','fs-extra','../../components/auth/service','./condition.controller','/:id','isAuthenticated','update','destroy','exports','util','path'];(function(_0x3ec122,_0x55150a){var _0x4ecf41=function(_0x1709cd){while(--_0x1709cd){_0x3ec122['push'](_0x3ec122['shift']());}};_0x4ecf41(++_0x55150a);}(_0xd929,0x15e));var _0x9d92=function(_0x4be8f3,_0x33f04e){_0x4be8f3=_0x4be8f3-0x0;var _0x1bfb36=_0xd929[_0x4be8f3];return _0x1bfb36;};'use strict';var multer=require('multer');var util=require(_0x9d92('0x0'));var path=require(_0x9d92('0x1'));var timeout=require('connect-timeout');var express=require(_0x9d92('0x2'));var router=express['Router']();var fs_extra=require(_0x9d92('0x3'));var auth=require(_0x9d92('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x9d92('0x5'));router['put'](_0x9d92('0x6'),auth[_0x9d92('0x7')](),controller[_0x9d92('0x8')]);router['delete'](_0x9d92('0x6'),auth[_0x9d92('0x7')](),controller[_0x9d92('0x9')]);module[_0x9d92('0xa')]=router;
\ No newline at end of file
+var _0x6bfa=['exports','multer','util','path','connect-timeout','Router','../../components/auth/service','./condition.controller','put','/:id','update','delete','destroy'];(function(_0x56c70f,_0x4e4493){var _0x3812ed=function(_0x25460f){while(--_0x25460f){_0x56c70f['push'](_0x56c70f['shift']());}};_0x3812ed(++_0x4e4493);}(_0x6bfa,0x139));var _0xa6bf=function(_0x33645a,_0x4c1f43){_0x33645a=_0x33645a-0x0;var _0x36ee2b=_0x6bfa[_0x33645a];return _0x36ee2b;};'use strict';var multer=require(_0xa6bf('0x0'));var util=require(_0xa6bf('0x1'));var path=require(_0xa6bf('0x2'));var timeout=require(_0xa6bf('0x3'));var express=require('express');var router=express[_0xa6bf('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa6bf('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa6bf('0x6'));router[_0xa6bf('0x7')](_0xa6bf('0x8'),auth['isAuthenticated'](),controller[_0xa6bf('0x9')]);router[_0xa6bf('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xa6bf('0xb')]);module[_0xa6bf('0xc')]=router;
\ No newline at end of file
index 2c69275..3f7627a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x1858cf,_0x26f4f3){var _0xe2fcf1=function(_0x4059e8){while(--_0x4059e8){_0x1858cf['push'](_0x1858cf['shift']());}};_0xe2fcf1(++_0x26f4f3);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb7e7=['STRING','sequelize'];(function(_0x318840,_0x561b1e){var _0x223da4=function(_0x510071){while(--_0x510071){_0x318840['push'](_0x318840['shift']());}};_0x223da4(++_0x561b1e);}(_0xb7e7,0x121));var _0x7b7e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xb7e7[_0x2a6809];return _0x11c371;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
index f31b451..af8368b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe158=['../../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','./dashboard.socket','register','end','status','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','get','CustomDashboards','UserProfileResource','sendStatus','error','send','index','map','rawAttributes','fieldName','type','key','model','name','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','Dashboard','includeAll','findAll','rows','catch','show','params','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','clone','omit','createdAt','updatedAt','UserProfileSection','autoAssociation','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','attrRefresh','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x2a0738,_0x3c0bc5){var _0x159679=function(_0x9c9ec7){while(--_0x9c9ec7){_0x2a0738['push'](_0x2a0738['shift']());}};_0x159679(++_0x3c0bc5);}(_0xe158,0x1df));var _0x8e15=function(_0x213518,_0x51e022){_0x213518=_0x213518-0x0;var _0x1baf75=_0xe158[_0x213518];return _0x1baf75;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8e15('0x0'));var zipdir=require(_0x8e15('0x1'));var jsonpatch=require(_0x8e15('0x2'));var rp=require(_0x8e15('0x3'));var moment=require(_0x8e15('0x4'));var BPromise=require(_0x8e15('0x5'));var Mustache=require('mustache');var util=require(_0x8e15('0x6'));var path=require('path');var sox=require(_0x8e15('0x7'));var csv=require(_0x8e15('0x8'));var ejs=require(_0x8e15('0x9'));var fs=require('fs');var fs_extra=require(_0x8e15('0xa'));var _=require('lodash');var squel=require(_0x8e15('0xb'));var crypto=require(_0x8e15('0xc'));var jsforce=require(_0x8e15('0xd'));var deskjs=require(_0x8e15('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8e15('0xf'));var Papa=require(_0x8e15('0x10'));var Redis=require('ioredis');var authService=require(_0x8e15('0x11'));var qs=require(_0x8e15('0x12'));var as=require(_0x8e15('0x13'));var hardwareService=require(_0x8e15('0x14'));var logger=require('../../config/logger')(_0x8e15('0x15'));var utils=require(_0x8e15('0x16'));var config=require(_0x8e15('0x17'));var licenseUtil=require(_0x8e15('0x18'));var db=require(_0x8e15('0x19'))['db'];config[_0x8e15('0x1a')]=_[_0x8e15('0x1b')](config[_0x8e15('0x1a')],{'host':_0x8e15('0x1c'),'port':0x18eb});var socket=require(_0x8e15('0x1d'))(new Redis(config[_0x8e15('0x1a')]));require(_0x8e15('0x1e'))[_0x8e15('0x1f')](socket);function respondWithStatusCode(_0x3669c4,_0x2aa733){_0x2aa733=_0x2aa733||0xcc;return function(_0x5e3212){if(_0x5e3212){return _0x3669c4['sendStatus'](_0x2aa733);}return _0x3669c4['status'](_0x2aa733)[_0x8e15('0x20')]();};}function respondWithResult(_0x97ba3e,_0x4b16ca){_0x4b16ca=_0x4b16ca||0xc8;return function(_0xbe1b45){if(_0xbe1b45){return _0x97ba3e[_0x8e15('0x21')](_0x4b16ca)[_0x8e15('0x22')](_0xbe1b45);}};}function respondWithFilteredResult(_0x174a87,_0x50e0be){return function(_0x3695a8){if(_0x3695a8){var _0x3e75df=typeof _0x50e0be[_0x8e15('0x23')]==='undefined'&&typeof _0x50e0be['limit']===_0x8e15('0x24');var _0x3af082=_0x3695a8[_0x8e15('0x25')];var _0x3f36f5=_0x3e75df?0x0:_0x50e0be[_0x8e15('0x23')];var _0x2aa2bc=_0x3e75df?_0x3695a8[_0x8e15('0x25')]:_0x50e0be[_0x8e15('0x23')]+_0x50e0be[_0x8e15('0x26')];var _0x231758;if(_0x2aa2bc>=_0x3af082){_0x2aa2bc=_0x3af082;_0x231758=0xc8;}else{_0x231758=0xce;}_0x174a87[_0x8e15('0x21')](_0x231758);return _0x174a87['set'](_0x8e15('0x27'),_0x3f36f5+'-'+_0x2aa2bc+'/'+_0x3af082)['json'](_0x3695a8);}return null;};}function patchUpdates(_0x32d100){return function(_0x5be06a){try{jsonpatch['apply'](_0x5be06a,_0x32d100,!![]);}catch(_0x439cf9){return BPromise[_0x8e15('0x28')](_0x439cf9);}return _0x5be06a[_0x8e15('0x29')]();};}function saveUpdates(_0x5f2003,_0x16dfc9){return function(_0x66ede3){if(_0x66ede3){return _0x66ede3[_0x8e15('0x2a')](_0x5f2003)[_0x8e15('0x2b')](function(_0xda3d45){return _0xda3d45;});}return null;};}function removeEntity(_0x25341c,_0x716ace){return function(_0x2e61d1){if(_0x2e61d1){return _0x2e61d1[_0x8e15('0x2c')]()['then'](function(){var _0x1b16e3=_0x2e61d1[_0x8e15('0x2d')]({'plain':!![]});var _0xae64=_0x8e15('0x2e');return db[_0x8e15('0x2f')][_0x8e15('0x2c')]({'where':{'type':_0xae64,'resourceId':_0x1b16e3['id']}})[_0x8e15('0x2b')](function(){return _0x2e61d1;});})[_0x8e15('0x2b')](function(){_0x25341c[_0x8e15('0x21')](0xcc)[_0x8e15('0x20')]();});}};}function handleEntityNotFound(_0x41f622,_0x180333){return function(_0x54e830){if(!_0x54e830){_0x41f622[_0x8e15('0x30')](0x194);}return _0x54e830;};}function handleError(_0x52077f,_0x2ed85a){_0x2ed85a=_0x2ed85a||0x1f4;return function(_0xa9eae4){logger[_0x8e15('0x31')](_0xa9eae4['stack']);if(_0xa9eae4['name']){delete _0xa9eae4['name'];}_0x52077f[_0x8e15('0x21')](_0x2ed85a)[_0x8e15('0x32')](_0xa9eae4);};}exports[_0x8e15('0x33')]=function(_0x182b5d,_0x2cb7ae){var _0x30e456={},_0x46368c={},_0x304e1d={'count':0x0,'rows':[]};var _0x3e4179=_[_0x8e15('0x34')](db['Dashboard'][_0x8e15('0x35')],function(_0x430f64){return{'name':_0x430f64[_0x8e15('0x36')],'type':_0x430f64[_0x8e15('0x37')][_0x8e15('0x38')]};});_0x46368c[_0x8e15('0x39')]=_[_0x8e15('0x34')](_0x3e4179,_0x8e15('0x3a'));_0x46368c[_0x8e15('0x3b')]=_['keys'](_0x182b5d[_0x8e15('0x3b')]);_0x46368c['filters']=_['intersection'](_0x46368c[_0x8e15('0x39')],_0x46368c[_0x8e15('0x3b')]);_0x30e456[_0x8e15('0x3c')]=_[_0x8e15('0x3d')](_0x46368c[_0x8e15('0x39')],qs[_0x8e15('0x3e')](_0x182b5d[_0x8e15('0x3b')][_0x8e15('0x3e')]));_0x30e456[_0x8e15('0x3c')]=_0x30e456[_0x8e15('0x3c')][_0x8e15('0x3f')]?_0x30e456[_0x8e15('0x3c')]:_0x46368c[_0x8e15('0x39')];if(!_0x182b5d[_0x8e15('0x3b')][_0x8e15('0x40')]('nolimit')){_0x30e456['limit']=qs['limit'](_0x182b5d[_0x8e15('0x3b')][_0x8e15('0x26')]);_0x30e456['offset']=qs[_0x8e15('0x23')](_0x182b5d[_0x8e15('0x3b')][_0x8e15('0x23')]);}_0x30e456[_0x8e15('0x41')]=qs[_0x8e15('0x42')](_0x182b5d['query'][_0x8e15('0x42')]);_0x30e456[_0x8e15('0x43')]=qs['filters'](_[_0x8e15('0x44')](_0x182b5d[_0x8e15('0x3b')],_0x46368c[_0x8e15('0x45')]),_0x3e4179);if(_0x182b5d['query'][_0x8e15('0x46')]){_0x30e456[_0x8e15('0x43')]=_[_0x8e15('0x47')](_0x30e456['where'],{'$or':_[_0x8e15('0x34')](_0x3e4179,function(_0xb845c5){if(_0xb845c5[_0x8e15('0x37')]!==_0x8e15('0x48')){var _0x249188={};_0x249188[_0xb845c5['name']]={'$like':'%'+_0x182b5d[_0x8e15('0x3b')]['filter']+'%'};return _0x249188;}})});}_0x30e456=_[_0x8e15('0x47')]({},_0x30e456,_0x182b5d[_0x8e15('0x49')]);var _0x60ec24={'where':_0x30e456[_0x8e15('0x43')]};return db[_0x8e15('0x4a')][_0x8e15('0x25')](_0x60ec24)[_0x8e15('0x2b')](function(_0x19ed0b){_0x304e1d[_0x8e15('0x25')]=_0x19ed0b;if(_0x182b5d[_0x8e15('0x3b')][_0x8e15('0x4b')]){_0x30e456['include']=[{'all':!![]}];}return db[_0x8e15('0x4a')][_0x8e15('0x4c')](_0x30e456);})[_0x8e15('0x2b')](function(_0x396811){_0x304e1d[_0x8e15('0x4d')]=_0x396811;return _0x304e1d;})[_0x8e15('0x2b')](respondWithFilteredResult(_0x2cb7ae,_0x30e456))[_0x8e15('0x4e')](handleError(_0x2cb7ae,null));};exports[_0x8e15('0x4f')]=function(_0x197b5f,_0x596fe0){var _0x30e968={'raw':![],'where':{'id':_0x197b5f[_0x8e15('0x50')]['id']}},_0x23fdb5={};_0x23fdb5[_0x8e15('0x39')]=_[_0x8e15('0x51')](db[_0x8e15('0x4a')]['rawAttributes']);_0x23fdb5[_0x8e15('0x3b')]=_['keys'](_0x197b5f[_0x8e15('0x3b')]);_0x23fdb5[_0x8e15('0x45')]=_[_0x8e15('0x3d')](_0x23fdb5[_0x8e15('0x39')],_0x23fdb5[_0x8e15('0x3b')]);_0x30e968[_0x8e15('0x3c')]=_['intersection'](_0x23fdb5[_0x8e15('0x39')],qs['fields'](_0x197b5f[_0x8e15('0x3b')]['fields']));_0x30e968[_0x8e15('0x3c')]=_0x30e968[_0x8e15('0x3c')][_0x8e15('0x3f')]?_0x30e968['attributes']:_0x23fdb5['model'];if(_0x197b5f['query'][_0x8e15('0x4b')]){_0x30e968[_0x8e15('0x52')]=[{'all':!![]}];}_0x30e968=_['merge']({},_0x30e968,_0x197b5f[_0x8e15('0x49')]);return db['Dashboard'][_0x8e15('0x53')](_0x30e968)[_0x8e15('0x2b')](handleEntityNotFound(_0x596fe0,null))['then'](respondWithResult(_0x596fe0,null))[_0x8e15('0x4e')](handleError(_0x596fe0,null));};exports['create']=function(_0x34dbc4,_0x348cac){return db[_0x8e15('0x4a')][_0x8e15('0x54')](_0x34dbc4[_0x8e15('0x55')],{})[_0x8e15('0x2b')](function(_0x22983e){var _0x40b0cb=_0x34dbc4[_0x8e15('0x56')][_0x8e15('0x2d')]({'plain':!![]});if(!_0x40b0cb)throw new Error(_0x8e15('0x57'));if(_0x40b0cb[_0x8e15('0x58')]===_0x8e15('0x56')){var _0x1916f2=_0x22983e['get']({'plain':!![]});var _0x5a760c=_0x8e15('0x2e');return db['UserProfileSection']['find']({'where':{'name':_0x5a760c,'userProfileId':_0x40b0cb[_0x8e15('0x59')]},'raw':!![]})[_0x8e15('0x2b')](function(_0x3445ce){if(_0x3445ce&&_0x3445ce['autoAssociation']===0x0){return db[_0x8e15('0x2f')][_0x8e15('0x54')]({'name':_0x1916f2[_0x8e15('0x3a')],'resourceId':_0x1916f2['id'],'type':_0x3445ce[_0x8e15('0x3a')],'sectionId':_0x3445ce['id']},{})['then'](function(){return _0x22983e;});}else{return _0x22983e;}})[_0x8e15('0x4e')](function(_0x139aa1){logger[_0x8e15('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x139aa1);throw _0x139aa1;});}return _0x22983e;})[_0x8e15('0x2b')](respondWithResult(_0x348cac,0xc9))[_0x8e15('0x4e')](handleError(_0x348cac,null));};exports[_0x8e15('0x5a')]=function(_0x2f391d,_0x3e4b89){var _0x5abe47={'where':{'id':_0x2f391d[_0x8e15('0x50')]['id']}},_0x516281={};_0x516281[_0x8e15('0x39')]=_['keys'](db[_0x8e15('0x4a')][_0x8e15('0x35')]);_0x5abe47['attributes']=_[_0x8e15('0x3d')](_0x516281['model'],qs['fields'](_0x2f391d[_0x8e15('0x3b')][_0x8e15('0x3e')]));_0x5abe47[_0x8e15('0x3c')]=_0x5abe47[_0x8e15('0x3c')][_0x8e15('0x3f')]?_0x5abe47[_0x8e15('0x3c')]:_0x516281[_0x8e15('0x39')];if(_0x2f391d[_0x8e15('0x3b')]['includeAll']){_0x5abe47[_0x8e15('0x52')]=[{'all':!![]}];}_0x5abe47=_[_0x8e15('0x47')]({},_0x5abe47,_0x2f391d['options']);return db[_0x8e15('0x4a')][_0x8e15('0x53')](_0x5abe47)[_0x8e15('0x2b')](handleEntityNotFound(_0x3e4b89,null))['then'](function(_0x14c5c9){if(_0x14c5c9){var _0x998d1a=_0x14c5c9[_0x8e15('0x2d')]({'plain':!![]});_0x998d1a=qs[_0x8e15('0x5b')](_0x998d1a,['id',_0x8e15('0x5c'),_0x8e15('0x5d')]);_0x2f391d[_0x8e15('0x55')]=_['omit'](_0x2f391d[_0x8e15('0x55')],['id',_0x8e15('0x5c'),_0x8e15('0x5d')]);return db[_0x8e15('0x4a')][_0x8e15('0x54')](_[_0x8e15('0x47')](_0x998d1a,_0x2f391d['body']),{'include':_0x2f391d[_0x8e15('0x3b')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x7d1eb3){var _0x52308c=_0x2f391d[_0x8e15('0x56')][_0x8e15('0x2d')]({'plain':!![]});if(!_0x52308c)throw new Error(_0x8e15('0x57'));if(_0x52308c[_0x8e15('0x58')]==='user'){var _0x558fc4=_0x7d1eb3[_0x8e15('0x2d')]({'plain':!![]});var _0x38b2d3=_0x8e15('0x2e');return db[_0x8e15('0x5e')][_0x8e15('0x53')]({'where':{'name':_0x38b2d3,'userProfileId':_0x52308c[_0x8e15('0x59')]},'raw':!![]})[_0x8e15('0x2b')](function(_0xc2fa1a){if(_0xc2fa1a&&_0xc2fa1a[_0x8e15('0x5f')]===0x0){return db[_0x8e15('0x2f')]['create']({'name':_0x558fc4[_0x8e15('0x3a')],'resourceId':_0x558fc4['id'],'type':_0xc2fa1a['name'],'sectionId':_0xc2fa1a['id']},{})[_0x8e15('0x2b')](function(){return _0x7d1eb3;});}else{return _0x7d1eb3;}})[_0x8e15('0x4e')](function(_0x1f09df){logger[_0x8e15('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1f09df);throw _0x1f09df;});}return _0x7d1eb3;});}})[_0x8e15('0x2b')](respondWithResult(_0x3e4b89,0xc9))[_0x8e15('0x4e')](handleError(_0x3e4b89,null));};exports[_0x8e15('0x2a')]=function(_0x3bce78,_0x3d62d6){if(_0x3bce78['body']['id']){delete _0x3bce78[_0x8e15('0x55')]['id'];}return db[_0x8e15('0x4a')][_0x8e15('0x53')]({'where':{'id':_0x3bce78[_0x8e15('0x50')]['id']}})[_0x8e15('0x2b')](handleEntityNotFound(_0x3d62d6,null))[_0x8e15('0x2b')](saveUpdates(_0x3bce78[_0x8e15('0x55')],null))[_0x8e15('0x2b')](respondWithResult(_0x3d62d6,null))[_0x8e15('0x4e')](handleError(_0x3d62d6,null));};exports['destroy']=function(_0x49737a,_0x1da90b){return db['Dashboard'][_0x8e15('0x53')]({'where':{'id':_0x49737a[_0x8e15('0x50')]['id']}})['then'](handleEntityNotFound(_0x1da90b,null))[_0x8e15('0x2b')](removeEntity(_0x1da90b,null))['catch'](handleError(_0x1da90b,null));};function widgetAttributes(_0x495cbf){try{switch(_0x495cbf[_0x8e15('0x37')]){case _0x8e15('0x60'):return[{'name':_0x8e15('0x61'),'value':_0x495cbf[_0x8e15('0x61')]||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf['attrs'][0x0][_0x8e15('0x63')]:undefined)||_0x8e15('0x64')}];case _0x8e15('0x65'):return[{'name':_0x8e15('0x66'),'value':_0x495cbf['attrPath']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf['attrs'][0x0][_0x8e15('0x63')]:undefined)||''}];case _0x8e15('0x67'):return[{'name':_0x8e15('0x68'),'value':_0x495cbf[_0x8e15('0x68')]||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf[_0x8e15('0x62')][0x0][_0x8e15('0x63')]:undefined)||'HH:mm:ss'},{'name':_0x8e15('0x69'),'value':_0x495cbf['attrTimezone']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x1]?_0x495cbf[_0x8e15('0x62')][0x1][_0x8e15('0x63')]:undefined)||_0x8e15('0x6a')},{'name':_0x8e15('0x6b'),'value':_0x495cbf[_0x8e15('0x6b')]||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf['attrs'][0x2]?_0x495cbf[_0x8e15('0x62')][0x2][_0x8e15('0x63')]:undefined)||0xc}];case'counter':return[{'name':_0x8e15('0x6c'),'value':_0x495cbf['attrMetric']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf[_0x8e15('0x62')][0x0][_0x8e15('0x63')]:undefined)||_0x8e15('0x6d')},{'name':'attrVoiceQueues','value':_0x495cbf[_0x8e15('0x6e')]||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x1]?_0x495cbf[_0x8e15('0x62')][0x1][_0x8e15('0x63')]:undefined)||[]},{'name':_0x8e15('0x6b'),'value':_0x495cbf['attrFontSize']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x2]?_0x495cbf[_0x8e15('0x62')][0x2]['value']:undefined)||0x14}];case _0x8e15('0x6f'):case'pie-chart':return[{'name':_0x8e15('0x70'),'value':_0x495cbf['attrSerie1']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf[_0x8e15('0x62')][0x0][_0x8e15('0x63')]:undefined)||'total'},{'name':_0x8e15('0x71'),'value':_0x495cbf['attrSerie2']||(_0x495cbf['attrs']&&_0x495cbf[_0x8e15('0x62')][0x1]?_0x495cbf[_0x8e15('0x62')][0x1][_0x8e15('0x63')]:undefined)||null},{'name':_0x8e15('0x72'),'value':_0x495cbf['attrSerie3']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x2]?_0x495cbf[_0x8e15('0x62')][0x2][_0x8e15('0x63')]:undefined)||null},{'name':_0x8e15('0x6e'),'value':_0x495cbf['attrVoiceQueues']||(_0x495cbf['attrs']&&_0x495cbf[_0x8e15('0x62')][0x3]?_0x495cbf[_0x8e15('0x62')][0x3][_0x8e15('0x63')]:undefined)||[]}];case _0x8e15('0x73'):return[{'name':'attrReport','type':_0x495cbf['reportType']||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf['attrs'][0x0][_0x8e15('0x37')]:undefined)||null,'value':_0x495cbf[_0x8e15('0x74')]||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x0]?_0x495cbf[_0x8e15('0x62')][0x0][_0x8e15('0x63')]:undefined)||null},{'name':'attrRefresh','value':_0x495cbf[_0x8e15('0x75')]||(_0x495cbf[_0x8e15('0x62')]&&_0x495cbf[_0x8e15('0x62')][0x1]?_0x495cbf[_0x8e15('0x62')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0xe5b17d){logger[_0x8e15('0x31')]('widgetAttributes:\x20%s',JSON['stringify'](_0xe5b17d));return[];}}exports[_0x8e15('0x76')]=function(_0x487374,_0xa33a01,_0x513850){if(_0x487374[_0x8e15('0x55')]['id']){delete _0x487374['body']['id'];}return db['Dashboard'][_0x8e15('0x53')]({'where':{'id':_0x487374['params']['id']}})[_0x8e15('0x2b')](handleEntityNotFound(_0xa33a01,null))[_0x8e15('0x2b')](function(_0xa9afa7){if(_0xa9afa7){_0x487374[_0x8e15('0x55')][_0x8e15('0x77')]=_0xa9afa7['id'];_0x487374['body'][_0x8e15('0x62')]=widgetAttributes(_0x487374[_0x8e15('0x55')]);return db[_0x8e15('0x78')][_0x8e15('0x54')](_0x487374[_0x8e15('0x55')]);}})[_0x8e15('0x2b')](respondWithResult(_0xa33a01,null))[_0x8e15('0x4e')](handleError(_0xa33a01,null));};exports[_0x8e15('0x79')]=function(_0x125fd7,_0x3d6c59,_0x3971dc){var _0x249185={};var _0x12d860={};var _0xe4fbd5;var _0x500d9e;return db[_0x8e15('0x4a')][_0x8e15('0x7a')]({'where':{'id':_0x125fd7[_0x8e15('0x50')]['id']}})[_0x8e15('0x2b')](handleEntityNotFound(_0x3d6c59,null))[_0x8e15('0x2b')](function(_0x86fa8b){if(_0x86fa8b){_0xe4fbd5=_0x86fa8b;_0x12d860[_0x8e15('0x39')]=_['keys'](db[_0x8e15('0x78')]['rawAttributes']);_0x12d860[_0x8e15('0x3b')]=_[_0x8e15('0x51')](_0x125fd7[_0x8e15('0x3b')]);_0x12d860[_0x8e15('0x45')]=_['intersection'](_0x12d860[_0x8e15('0x39')],_0x12d860[_0x8e15('0x3b')]);_0x249185[_0x8e15('0x3c')]=_[_0x8e15('0x3d')](_0x12d860[_0x8e15('0x39')],qs[_0x8e15('0x3e')](_0x125fd7[_0x8e15('0x3b')]['fields']));_0x249185[_0x8e15('0x3c')]=_0x249185[_0x8e15('0x3c')][_0x8e15('0x3f')]?_0x249185[_0x8e15('0x3c')]:_0x12d860[_0x8e15('0x39')];_0x249185[_0x8e15('0x41')]=qs[_0x8e15('0x42')](_0x125fd7[_0x8e15('0x3b')][_0x8e15('0x42')]);_0x249185[_0x8e15('0x43')]=qs[_0x8e15('0x45')](_['pick'](_0x125fd7[_0x8e15('0x3b')],_0x12d860['filters']));if(_0x125fd7['query'][_0x8e15('0x46')]){_0x249185[_0x8e15('0x43')]=_[_0x8e15('0x47')](_0x249185[_0x8e15('0x43')],{'$or':_[_0x8e15('0x34')](_0x249185[_0x8e15('0x3c')],function(_0x200aee){var _0xad3147={};_0xad3147[_0x200aee]={'$like':'%'+_0x125fd7['query']['filter']+'%'};return _0xad3147;})});}_0x249185=_[_0x8e15('0x47')]({},_0x249185,_0x125fd7['options']);return _0xe4fbd5['getItems'](_0x249185);}})[_0x8e15('0x2b')](function(_0x11c6e2){if(_0x11c6e2){_0x500d9e=_0x11c6e2['length'];if(!_0x125fd7[_0x8e15('0x3b')]['hasOwnProperty'](_0x8e15('0x7b'))){_0x249185['limit']=qs[_0x8e15('0x26')](_0x125fd7[_0x8e15('0x3b')][_0x8e15('0x26')]);_0x249185[_0x8e15('0x23')]=qs[_0x8e15('0x23')](_0x125fd7[_0x8e15('0x3b')][_0x8e15('0x23')]);}return _0xe4fbd5[_0x8e15('0x79')](_0x249185);}})[_0x8e15('0x2b')](function(_0x2f2b24){if(_0x2f2b24){return _0x2f2b24?{'count':_0x500d9e,'rows':_0x2f2b24}:null;}})[_0x8e15('0x2b')](respondWithResult(_0x3d6c59,null))['catch'](handleError(_0x3d6c59,null));};
\ No newline at end of file
+var _0x9629=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','CustomDashboards','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','autoAssociation','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','counter','attrMetric','total','attrVoiceQueues','attrFontSize','multibar-chart','attrSerie1','attrSerie3','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','defaults','localhost','redis','./dashboard.socket','register','sendStatus','status','offset','undefined','limit','count','set','json','apply','save','update','then','destroy','UserProfileResource','end','error','stack','send','index','map','Dashboard','rawAttributes','fieldName','key','model','name','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','include','findAll','rows','catch','show','keys','includeAll','options','find','create','user','get'];(function(_0x24c0e6,_0x35f0b5){var _0x19da55=function(_0x2fd3a3){while(--_0x2fd3a3){_0x24c0e6['push'](_0x24c0e6['shift']());}};_0x19da55(++_0x35f0b5);}(_0x9629,0x117));var _0x9962=function(_0x449a83,_0x53399d){_0x449a83=_0x449a83-0x0;var _0x5d5de4=_0x9629[_0x449a83];return _0x5d5de4;};'use strict';var emlformat=require(_0x9962('0x0'));var rimraf=require(_0x9962('0x1'));var zipdir=require(_0x9962('0x2'));var jsonpatch=require(_0x9962('0x3'));var rp=require(_0x9962('0x4'));var moment=require(_0x9962('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9962('0x6'));var util=require(_0x9962('0x7'));var path=require(_0x9962('0x8'));var sox=require('sox');var csv=require(_0x9962('0x9'));var ejs=require(_0x9962('0xa'));var fs=require('fs');var fs_extra=require(_0x9962('0xb'));var _=require(_0x9962('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9962('0xd'));var deskjs=require(_0x9962('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9962('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9962('0x10'));var qs=require(_0x9962('0x11'));var as=require(_0x9962('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9962('0x13'))(_0x9962('0x14'));var utils=require(_0x9962('0x15'));var config=require(_0x9962('0x16'));var licenseUtil=require(_0x9962('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9962('0x18')](config['redis'],{'host':_0x9962('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9962('0x1a')]));require(_0x9962('0x1b'))[_0x9962('0x1c')](socket);function respondWithStatusCode(_0x430bfa,_0xf6f2a9){_0xf6f2a9=_0xf6f2a9||0xcc;return function(_0x426914){if(_0x426914){return _0x430bfa[_0x9962('0x1d')](_0xf6f2a9);}return _0x430bfa['status'](_0xf6f2a9)['end']();};}function respondWithResult(_0x420993,_0x39ac98){_0x39ac98=_0x39ac98||0xc8;return function(_0x4dc5e7){if(_0x4dc5e7){return _0x420993[_0x9962('0x1e')](_0x39ac98)['json'](_0x4dc5e7);}};}function respondWithFilteredResult(_0x5d258b,_0x2426bc){return function(_0x282b0a){if(_0x282b0a){var _0x4effd7=typeof _0x2426bc[_0x9962('0x1f')]===_0x9962('0x20')&&typeof _0x2426bc[_0x9962('0x21')]==='undefined';var _0x5d4651=_0x282b0a[_0x9962('0x22')];var _0x529015=_0x4effd7?0x0:_0x2426bc[_0x9962('0x1f')];var _0x3977f8=_0x4effd7?_0x282b0a[_0x9962('0x22')]:_0x2426bc[_0x9962('0x1f')]+_0x2426bc[_0x9962('0x21')];var _0x1f2cd3;if(_0x3977f8>=_0x5d4651){_0x3977f8=_0x5d4651;_0x1f2cd3=0xc8;}else{_0x1f2cd3=0xce;}_0x5d258b[_0x9962('0x1e')](_0x1f2cd3);return _0x5d258b[_0x9962('0x23')]('Content-Range',_0x529015+'-'+_0x3977f8+'/'+_0x5d4651)[_0x9962('0x24')](_0x282b0a);}return null;};}function patchUpdates(_0x3defd9){return function(_0x19c597){try{jsonpatch[_0x9962('0x25')](_0x19c597,_0x3defd9,!![]);}catch(_0x50b98e){return BPromise['reject'](_0x50b98e);}return _0x19c597[_0x9962('0x26')]();};}function saveUpdates(_0x5ce754,_0x366e5e){return function(_0x351e11){if(_0x351e11){return _0x351e11[_0x9962('0x27')](_0x5ce754)[_0x9962('0x28')](function(_0x6ef9ae){return _0x6ef9ae;});}return null;};}function removeEntity(_0x29a4c2,_0x3c049d){return function(_0x4ea1a9){if(_0x4ea1a9){return _0x4ea1a9[_0x9962('0x29')]()['then'](function(){var _0x27e646=_0x4ea1a9['get']({'plain':!![]});var _0x1f0688='CustomDashboards';return db[_0x9962('0x2a')][_0x9962('0x29')]({'where':{'type':_0x1f0688,'resourceId':_0x27e646['id']}})['then'](function(){return _0x4ea1a9;});})[_0x9962('0x28')](function(){_0x29a4c2[_0x9962('0x1e')](0xcc)[_0x9962('0x2b')]();});}};}function handleEntityNotFound(_0x413426,_0x547856){return function(_0x32f521){if(!_0x32f521){_0x413426[_0x9962('0x1d')](0x194);}return _0x32f521;};}function handleError(_0x398015,_0x43d771){_0x43d771=_0x43d771||0x1f4;return function(_0x51ad3d){logger[_0x9962('0x2c')](_0x51ad3d[_0x9962('0x2d')]);if(_0x51ad3d['name']){delete _0x51ad3d['name'];}_0x398015['status'](_0x43d771)[_0x9962('0x2e')](_0x51ad3d);};}exports[_0x9962('0x2f')]=function(_0x3a3a3b,_0x5c5405){var _0x25e1c0={},_0x2f2a94={},_0x1e597e={'count':0x0,'rows':[]};var _0x1dcd1f=_[_0x9962('0x30')](db[_0x9962('0x31')][_0x9962('0x32')],function(_0xc62857){return{'name':_0xc62857[_0x9962('0x33')],'type':_0xc62857['type'][_0x9962('0x34')]};});_0x2f2a94[_0x9962('0x35')]=_['map'](_0x1dcd1f,_0x9962('0x36'));_0x2f2a94[_0x9962('0x37')]=_['keys'](_0x3a3a3b[_0x9962('0x37')]);_0x2f2a94[_0x9962('0x38')]=_[_0x9962('0x39')](_0x2f2a94[_0x9962('0x35')],_0x2f2a94[_0x9962('0x37')]);_0x25e1c0['attributes']=_['intersection'](_0x2f2a94[_0x9962('0x35')],qs[_0x9962('0x3a')](_0x3a3a3b[_0x9962('0x37')]['fields']));_0x25e1c0[_0x9962('0x3b')]=_0x25e1c0['attributes'][_0x9962('0x3c')]?_0x25e1c0[_0x9962('0x3b')]:_0x2f2a94[_0x9962('0x35')];if(!_0x3a3a3b[_0x9962('0x37')][_0x9962('0x3d')](_0x9962('0x3e'))){_0x25e1c0['limit']=qs[_0x9962('0x21')](_0x3a3a3b[_0x9962('0x37')][_0x9962('0x21')]);_0x25e1c0['offset']=qs[_0x9962('0x1f')](_0x3a3a3b['query'][_0x9962('0x1f')]);}_0x25e1c0[_0x9962('0x3f')]=qs[_0x9962('0x40')](_0x3a3a3b[_0x9962('0x37')][_0x9962('0x40')]);_0x25e1c0['where']=qs[_0x9962('0x38')](_[_0x9962('0x41')](_0x3a3a3b[_0x9962('0x37')],_0x2f2a94[_0x9962('0x38')]),_0x1dcd1f);if(_0x3a3a3b[_0x9962('0x37')][_0x9962('0x42')]){_0x25e1c0['where']=_[_0x9962('0x43')](_0x25e1c0[_0x9962('0x44')],{'$or':_[_0x9962('0x30')](_0x1dcd1f,function(_0x29e16e){if(_0x29e16e['type']!=='VIRTUAL'){var _0x421a64={};_0x421a64[_0x29e16e['name']]={'$like':'%'+_0x3a3a3b['query'][_0x9962('0x42')]+'%'};return _0x421a64;}})});}_0x25e1c0=_['merge']({},_0x25e1c0,_0x3a3a3b['options']);var _0x5d42f4={'where':_0x25e1c0[_0x9962('0x44')]};return db['Dashboard']['count'](_0x5d42f4)[_0x9962('0x28')](function(_0x14883a){_0x1e597e[_0x9962('0x22')]=_0x14883a;if(_0x3a3a3b[_0x9962('0x37')]['includeAll']){_0x25e1c0[_0x9962('0x45')]=[{'all':!![]}];}return db[_0x9962('0x31')][_0x9962('0x46')](_0x25e1c0);})[_0x9962('0x28')](function(_0x14fe2d){_0x1e597e[_0x9962('0x47')]=_0x14fe2d;return _0x1e597e;})[_0x9962('0x28')](respondWithFilteredResult(_0x5c5405,_0x25e1c0))[_0x9962('0x48')](handleError(_0x5c5405,null));};exports[_0x9962('0x49')]=function(_0x4b454e,_0x212ec7){var _0x183982={'raw':![],'where':{'id':_0x4b454e['params']['id']}},_0x54a072={};_0x54a072[_0x9962('0x35')]=_[_0x9962('0x4a')](db[_0x9962('0x31')][_0x9962('0x32')]);_0x54a072[_0x9962('0x37')]=_[_0x9962('0x4a')](_0x4b454e[_0x9962('0x37')]);_0x54a072[_0x9962('0x38')]=_[_0x9962('0x39')](_0x54a072[_0x9962('0x35')],_0x54a072[_0x9962('0x37')]);_0x183982['attributes']=_[_0x9962('0x39')](_0x54a072[_0x9962('0x35')],qs[_0x9962('0x3a')](_0x4b454e[_0x9962('0x37')][_0x9962('0x3a')]));_0x183982['attributes']=_0x183982[_0x9962('0x3b')]['length']?_0x183982[_0x9962('0x3b')]:_0x54a072[_0x9962('0x35')];if(_0x4b454e['query'][_0x9962('0x4b')]){_0x183982[_0x9962('0x45')]=[{'all':!![]}];}_0x183982=_[_0x9962('0x43')]({},_0x183982,_0x4b454e[_0x9962('0x4c')]);return db[_0x9962('0x31')][_0x9962('0x4d')](_0x183982)[_0x9962('0x28')](handleEntityNotFound(_0x212ec7,null))[_0x9962('0x28')](respondWithResult(_0x212ec7,null))['catch'](handleError(_0x212ec7,null));};exports[_0x9962('0x4e')]=function(_0x1e3dff,_0x5503d7){return db[_0x9962('0x31')][_0x9962('0x4e')](_0x1e3dff['body'],{})[_0x9962('0x28')](function(_0x183bdc){var _0x107ea8=_0x1e3dff[_0x9962('0x4f')][_0x9962('0x50')]({'plain':!![]});if(!_0x107ea8)throw new Error(_0x9962('0x51'));if(_0x107ea8[_0x9962('0x52')]===_0x9962('0x4f')){var _0x5db73e=_0x183bdc[_0x9962('0x50')]({'plain':!![]});var _0x5f4d19=_0x9962('0x53');return db[_0x9962('0x54')][_0x9962('0x4d')]({'where':{'name':_0x5f4d19,'userProfileId':_0x107ea8[_0x9962('0x55')]},'raw':!![]})[_0x9962('0x28')](function(_0x418de0){if(_0x418de0&&_0x418de0['autoAssociation']===0x0){return db[_0x9962('0x2a')]['create']({'name':_0x5db73e[_0x9962('0x36')],'resourceId':_0x5db73e['id'],'type':_0x418de0['name'],'sectionId':_0x418de0['id']},{})[_0x9962('0x28')](function(){return _0x183bdc;});}else{return _0x183bdc;}})['catch'](function(_0x16f4df){logger['error'](_0x9962('0x56'),_0x16f4df);throw _0x16f4df;});}return _0x183bdc;})[_0x9962('0x28')](respondWithResult(_0x5503d7,0xc9))[_0x9962('0x48')](handleError(_0x5503d7,null));};exports[_0x9962('0x57')]=function(_0x3ef0e5,_0x2bff96){var _0x3e2dff={'where':{'id':_0x3ef0e5[_0x9962('0x58')]['id']}},_0xaacd5b={};_0xaacd5b[_0x9962('0x35')]=_[_0x9962('0x4a')](db[_0x9962('0x31')][_0x9962('0x32')]);_0x3e2dff[_0x9962('0x3b')]=_[_0x9962('0x39')](_0xaacd5b[_0x9962('0x35')],qs['fields'](_0x3ef0e5[_0x9962('0x37')][_0x9962('0x3a')]));_0x3e2dff[_0x9962('0x3b')]=_0x3e2dff['attributes']['length']?_0x3e2dff['attributes']:_0xaacd5b[_0x9962('0x35')];if(_0x3ef0e5[_0x9962('0x37')]['includeAll']){_0x3e2dff[_0x9962('0x45')]=[{'all':!![]}];}_0x3e2dff=_['merge']({},_0x3e2dff,_0x3ef0e5['options']);return db[_0x9962('0x31')][_0x9962('0x4d')](_0x3e2dff)[_0x9962('0x28')](handleEntityNotFound(_0x2bff96,null))[_0x9962('0x28')](function(_0x4354ac){if(_0x4354ac){var _0x24c309=_0x4354ac[_0x9962('0x50')]({'plain':!![]});_0x24c309=qs[_0x9962('0x59')](_0x24c309,['id',_0x9962('0x5a'),_0x9962('0x5b')]);_0x3ef0e5[_0x9962('0x5c')]=_['omit'](_0x3ef0e5[_0x9962('0x5c')],['id','createdAt',_0x9962('0x5b')]);return db[_0x9962('0x31')]['create'](_[_0x9962('0x43')](_0x24c309,_0x3ef0e5[_0x9962('0x5c')]),{'include':_0x3ef0e5[_0x9962('0x37')][_0x9962('0x4b')]?[{'all':!![]}]:undefined})[_0x9962('0x28')](function(_0x34f946){var _0x26f431=_0x3ef0e5['user'][_0x9962('0x50')]({'plain':!![]});if(!_0x26f431)throw new Error(_0x9962('0x51'));if(_0x26f431[_0x9962('0x52')]===_0x9962('0x4f')){var _0x53d558=_0x34f946[_0x9962('0x50')]({'plain':!![]});var _0x3784c2=_0x9962('0x53');return db[_0x9962('0x54')][_0x9962('0x4d')]({'where':{'name':_0x3784c2,'userProfileId':_0x26f431['userProfileId']},'raw':!![]})[_0x9962('0x28')](function(_0x5a2705){if(_0x5a2705&&_0x5a2705[_0x9962('0x5d')]===0x0){return db['UserProfileResource']['create']({'name':_0x53d558[_0x9962('0x36')],'resourceId':_0x53d558['id'],'type':_0x5a2705['name'],'sectionId':_0x5a2705['id']},{})['then'](function(){return _0x34f946;});}else{return _0x34f946;}})[_0x9962('0x48')](function(_0x3d76a8){logger[_0x9962('0x2c')](_0x9962('0x56'),_0x3d76a8);throw _0x3d76a8;});}return _0x34f946;});}})['then'](respondWithResult(_0x2bff96,0xc9))[_0x9962('0x48')](handleError(_0x2bff96,null));};exports[_0x9962('0x27')]=function(_0x3a46bf,_0x5d58d7){if(_0x3a46bf[_0x9962('0x5c')]['id']){delete _0x3a46bf[_0x9962('0x5c')]['id'];}return db[_0x9962('0x31')][_0x9962('0x4d')]({'where':{'id':_0x3a46bf['params']['id']}})[_0x9962('0x28')](handleEntityNotFound(_0x5d58d7,null))[_0x9962('0x28')](saveUpdates(_0x3a46bf[_0x9962('0x5c')],null))['then'](respondWithResult(_0x5d58d7,null))[_0x9962('0x48')](handleError(_0x5d58d7,null));};exports[_0x9962('0x29')]=function(_0x4094da,_0x4a7c03){return db[_0x9962('0x31')][_0x9962('0x4d')]({'where':{'id':_0x4094da[_0x9962('0x58')]['id']}})[_0x9962('0x28')](handleEntityNotFound(_0x4a7c03,null))[_0x9962('0x28')](removeEntity(_0x4a7c03,null))[_0x9962('0x48')](handleError(_0x4a7c03,null));};function widgetAttributes(_0x1e15d5){try{switch(_0x1e15d5['type']){case _0x9962('0x5e'):return[{'name':_0x9962('0x5f'),'value':_0x1e15d5[_0x9962('0x5f')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||_0x9962('0x62')}];case'custom':return[{'name':_0x9962('0x63'),'value':_0x1e15d5[_0x9962('0x63')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||''}];case _0x9962('0x64'):return[{'name':'attrHourFormat','value':_0x1e15d5[_0x9962('0x65')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||'HH:mm:ss'},{'name':_0x9962('0x66'),'value':_0x1e15d5[_0x9962('0x66')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x1]?_0x1e15d5[_0x9962('0x60')][0x1]['value']:undefined)||_0x9962('0x67')},{'name':'attrFontSize','value':_0x1e15d5['attrFontSize']||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x2]?_0x1e15d5[_0x9962('0x60')][0x2][_0x9962('0x61')]:undefined)||0xc}];case _0x9962('0x68'):return[{'name':'attrMetric','value':_0x1e15d5[_0x9962('0x69')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||_0x9962('0x6a')},{'name':_0x9962('0x6b'),'value':_0x1e15d5[_0x9962('0x6b')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x1]?_0x1e15d5[_0x9962('0x60')][0x1][_0x9962('0x61')]:undefined)||[]},{'name':_0x9962('0x6c'),'value':_0x1e15d5['attrFontSize']||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x2]?_0x1e15d5[_0x9962('0x60')][0x2][_0x9962('0x61')]:undefined)||0x14}];case _0x9962('0x6d'):case'pie-chart':return[{'name':_0x9962('0x6e'),'value':_0x1e15d5[_0x9962('0x6e')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0]['value']:undefined)||_0x9962('0x6a')},{'name':'attrSerie2','value':_0x1e15d5['attrSerie2']||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x1]?_0x1e15d5['attrs'][0x1][_0x9962('0x61')]:undefined)||null},{'name':_0x9962('0x6f'),'value':_0x1e15d5[_0x9962('0x6f')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x2]?_0x1e15d5[_0x9962('0x60')][0x2]['value']:undefined)||null},{'name':_0x9962('0x6b'),'value':_0x1e15d5[_0x9962('0x6b')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5[_0x9962('0x60')][0x3]?_0x1e15d5['attrs'][0x3]['value']:undefined)||[]}];case'web-report':return[{'name':_0x9962('0x70'),'type':_0x1e15d5[_0x9962('0x71')]||(_0x1e15d5['attrs']&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0]['type']:undefined)||null,'value':_0x1e15d5['attrReport']||(_0x1e15d5['attrs']&&_0x1e15d5[_0x9962('0x60')][0x0]?_0x1e15d5[_0x9962('0x60')][0x0][_0x9962('0x61')]:undefined)||null},{'name':_0x9962('0x72'),'value':_0x1e15d5[_0x9962('0x72')]||(_0x1e15d5[_0x9962('0x60')]&&_0x1e15d5['attrs'][0x1]?_0x1e15d5['attrs'][0x1][_0x9962('0x61')]:undefined)||0x0}];default:return[];}}catch(_0xa0c1d3){logger[_0x9962('0x2c')](_0x9962('0x73'),JSON['stringify'](_0xa0c1d3));return[];}}exports[_0x9962('0x74')]=function(_0x2e3ac8,_0x578409,_0x31db9b){if(_0x2e3ac8[_0x9962('0x5c')]['id']){delete _0x2e3ac8['body']['id'];}return db[_0x9962('0x31')][_0x9962('0x4d')]({'where':{'id':_0x2e3ac8[_0x9962('0x58')]['id']}})[_0x9962('0x28')](handleEntityNotFound(_0x578409,null))[_0x9962('0x28')](function(_0x2fde4b){if(_0x2fde4b){_0x2e3ac8[_0x9962('0x5c')][_0x9962('0x75')]=_0x2fde4b['id'];_0x2e3ac8[_0x9962('0x5c')][_0x9962('0x60')]=widgetAttributes(_0x2e3ac8[_0x9962('0x5c')]);return db['DashboardItem'][_0x9962('0x4e')](_0x2e3ac8[_0x9962('0x5c')]);}})[_0x9962('0x28')](respondWithResult(_0x578409,null))[_0x9962('0x48')](handleError(_0x578409,null));};exports['getItems']=function(_0x109473,_0x3ab0f5,_0x13a3e4){var _0x2156f6={};var _0x2f97c1={};var _0x58a87e;var _0x157f2c;return db[_0x9962('0x31')]['findOne']({'where':{'id':_0x109473['params']['id']}})['then'](handleEntityNotFound(_0x3ab0f5,null))[_0x9962('0x28')](function(_0x59848d){if(_0x59848d){_0x58a87e=_0x59848d;_0x2f97c1[_0x9962('0x35')]=_[_0x9962('0x4a')](db[_0x9962('0x76')]['rawAttributes']);_0x2f97c1[_0x9962('0x37')]=_[_0x9962('0x4a')](_0x109473[_0x9962('0x37')]);_0x2f97c1[_0x9962('0x38')]=_[_0x9962('0x39')](_0x2f97c1['model'],_0x2f97c1[_0x9962('0x37')]);_0x2156f6[_0x9962('0x3b')]=_[_0x9962('0x39')](_0x2f97c1['model'],qs['fields'](_0x109473[_0x9962('0x37')][_0x9962('0x3a')]));_0x2156f6['attributes']=_0x2156f6['attributes'][_0x9962('0x3c')]?_0x2156f6[_0x9962('0x3b')]:_0x2f97c1[_0x9962('0x35')];_0x2156f6[_0x9962('0x3f')]=qs[_0x9962('0x40')](_0x109473['query']['sort']);_0x2156f6[_0x9962('0x44')]=qs[_0x9962('0x38')](_[_0x9962('0x41')](_0x109473[_0x9962('0x37')],_0x2f97c1[_0x9962('0x38')]));if(_0x109473['query'][_0x9962('0x42')]){_0x2156f6[_0x9962('0x44')]=_[_0x9962('0x43')](_0x2156f6[_0x9962('0x44')],{'$or':_[_0x9962('0x30')](_0x2156f6[_0x9962('0x3b')],function(_0x5a9e02){var _0x36ca33={};_0x36ca33[_0x5a9e02]={'$like':'%'+_0x109473[_0x9962('0x37')]['filter']+'%'};return _0x36ca33;})});}_0x2156f6=_[_0x9962('0x43')]({},_0x2156f6,_0x109473[_0x9962('0x4c')]);return _0x58a87e[_0x9962('0x77')](_0x2156f6);}})[_0x9962('0x28')](function(_0x4528a9){if(_0x4528a9){_0x157f2c=_0x4528a9[_0x9962('0x3c')];if(!_0x109473[_0x9962('0x37')][_0x9962('0x3d')](_0x9962('0x3e'))){_0x2156f6[_0x9962('0x21')]=qs[_0x9962('0x21')](_0x109473['query'][_0x9962('0x21')]);_0x2156f6['offset']=qs[_0x9962('0x1f')](_0x109473[_0x9962('0x37')][_0x9962('0x1f')]);}return _0x58a87e['getItems'](_0x2156f6);}})[_0x9962('0x28')](function(_0x3be307){if(_0x3be307){return _0x3be307?{'count':_0x157f2c,'rows':_0x3be307}:null;}})[_0x9962('0x28')](respondWithResult(_0x3ab0f5,null))['catch'](handleError(_0x3ab0f5,null));};
\ No newline at end of file
index 5d8d780..923b754 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc8c=['update','hasOwnProperty','exports','events','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x166e71,_0x3a1cd4){var _0x2ebc75=function(_0x4889d9){while(--_0x4889d9){_0x166e71['push'](_0x166e71['shift']());}};_0x2ebc75(++_0x3a1cd4);}(_0xfc8c,0x6b));var _0xcfc8=function(_0x55d7c2,_0x4ce6fb){_0x55d7c2=_0x55d7c2-0x0;var _0x1755ef=_0xfc8c[_0x55d7c2];return _0x1755ef;};'use strict';var EventEmitter=require(_0xcfc8('0x0'));var Dashboard=require(_0xcfc8('0x1'))['db'][_0xcfc8('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xcfc8('0x3')](0x0);var events={'afterCreate':_0xcfc8('0x4'),'afterUpdate':_0xcfc8('0x5'),'afterDestroy':'remove'};function emitEvent(_0x36b866){return function(_0x3f8a7c,_0x59e9c,_0x411628){DashboardEvents['emit'](_0x36b866+':'+_0x3f8a7c['id'],_0x3f8a7c);DashboardEvents['emit'](_0x36b866,_0x3f8a7c);_0x411628(null);};}for(var e in events){if(events[_0xcfc8('0x6')](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0xcfc8('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0x9583=['events','../../mysqldb','Dashboard','save','emit','hook','exports'];(function(_0x5dc3f6,_0x1fc463){var _0x257802=function(_0xc0871c){while(--_0xc0871c){_0x5dc3f6['push'](_0x5dc3f6['shift']());}};_0x257802(++_0x1fc463);}(_0x9583,0xcb));var _0x3958=function(_0x12bb5c,_0x71fd52){_0x12bb5c=_0x12bb5c-0x0;var _0x3a533e=_0x9583[_0x12bb5c];return _0x3a533e;};'use strict';var EventEmitter=require(_0x3958('0x0'));var Dashboard=require(_0x3958('0x1'))['db'][_0x3958('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3958('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x54d56a){return function(_0x432cf7,_0x3b9d9c,_0xeab3b4){DashboardEvents[_0x3958('0x4')](_0x54d56a+':'+_0x432cf7['id'],_0x432cf7);DashboardEvents[_0x3958('0x4')](_0x54d56a,_0x432cf7);_0xeab3b4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x3958('0x5')](e,emitEvent(event));}}module[_0x3958('0x6')]=DashboardEvents;
\ No newline at end of file
index 8b68a03..6b6f11f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d57=['rimraf','../../config/environment','./dashboard.attributes','define','Dashboard','dashboards','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x53639c,_0x539bea){var _0x4102cb=function(_0x43ae6b){while(--_0x43ae6b){_0x53639c['push'](_0x53639c['shift']());}};_0x4102cb(++_0x539bea);}(_0x8d57,0xaf));var _0x78d5=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0x8d57[_0x521929];return _0x632436;};'use strict';var _=require('lodash');var util=require(_0x78d5('0x0'));var logger=require(_0x78d5('0x1'))(_0x78d5('0x2'));var moment=require(_0x78d5('0x3'));var BPromise=require(_0x78d5('0x4'));var rp=require(_0x78d5('0x5'));var fs=require('fs');var path=require(_0x78d5('0x6'));var rimraf=require(_0x78d5('0x7'));var config=require(_0x78d5('0x8'));var attributes=require(_0x78d5('0x9'));module['exports']=function(_0x30fb1f,_0x3c6152){return _0x30fb1f[_0x78d5('0xa')](_0x78d5('0xb'),attributes,{'tableName':_0x78d5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb9c7=['exports','Dashboard','dashboards','../../config/logger','api','bluebird','path','../../config/environment','./dashboard.attributes'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xb9c7,0xff));var _0x7b9c=function(_0x49ff5d,_0x331b69){_0x49ff5d=_0x49ff5d-0x0;var _0x47b761=_0xb9c7[_0x49ff5d];return _0x47b761;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7b9c('0x0'))(_0x7b9c('0x1'));var moment=require('moment');var BPromise=require(_0x7b9c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7b9c('0x3'));var rimraf=require('rimraf');var config=require(_0x7b9c('0x4'));var attributes=require(_0x7b9c('0x5'));module[_0x7b9c('0x6')]=function(_0x263568,_0x97369c){return _0x263568['define'](_0x7b9c('0x7'),attributes,{'tableName':_0x7b9c('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f368ba2..7670f2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x866e=['code','message','info','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./dashboard.socket','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x265907,_0x16812a){var _0x4d1d7d=function(_0x26fd50){while(--_0x26fd50){_0x265907['push'](_0x265907['shift']());}};_0x4d1d7d(++_0x16812a);}(_0x866e,0x18d));var _0xe866=function(_0x2b8d51,_0x3f762d){_0x2b8d51=_0x2b8d51-0x0;var _0x29a2a6=_0x866e[_0x2b8d51];return _0x29a2a6;};'use strict';var _=require(_0xe866('0x0'));var util=require(_0xe866('0x1'));var moment=require(_0xe866('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe866('0x3'));var db=require(_0xe866('0x4'))['db'];var utils=require(_0xe866('0x5'));var logger=require(_0xe866('0x6'))(_0xe866('0x7'));var config=require(_0xe866('0x8'));var jayson=require(_0xe866('0x9'));var client=jayson[_0xe866('0xa')][_0xe866('0xb')]({'port':0x232a});config[_0xe866('0xc')]=_['defaults'](config[_0xe866('0xc')],{'host':_0xe866('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe866('0xc')]));require(_0xe866('0xe'))['register'](socket);function respondWithRpcPromise(_0x1e5b30,_0x2f03b6,_0x4dd1fc){return new BPromise(function(_0x1d35c3,_0x4f28fc){return client[_0xe866('0xf')](_0x1e5b30,_0x4dd1fc)[_0xe866('0x10')](function(_0xd354b5){logger['info'](_0xe866('0x11'),_0x2f03b6,_0xe866('0x12'));logger[_0xe866('0x13')](_0xe866('0x14'),_0x2f03b6,_0xe866('0x12'),JSON[_0xe866('0x15')](_0xd354b5));if(_0xd354b5[_0xe866('0x16')]){if(_0xd354b5[_0xe866('0x16')][_0xe866('0x17')]===0x1f4){logger[_0xe866('0x16')](_0xe866('0x11'),_0x2f03b6,_0xd354b5[_0xe866('0x16')][_0xe866('0x18')]);return _0x4f28fc(_0xd354b5[_0xe866('0x16')]['message']);}logger[_0xe866('0x16')]('Dashboard,\x20%s,\x20%s',_0x2f03b6,_0xd354b5[_0xe866('0x16')][_0xe866('0x18')]);return _0x1d35c3(_0xd354b5[_0xe866('0x16')][_0xe866('0x18')]);}else{logger[_0xe866('0x19')](_0xe866('0x11'),_0x2f03b6,_0xe866('0x12'));_0x1d35c3(_0xd354b5[_0xe866('0x1a')][_0xe866('0x18')]);}})[_0xe866('0x1b')](function(_0x5508e5){logger[_0xe866('0x16')](_0xe866('0x11'),_0x2f03b6,_0x5508e5);_0x4f28fc(_0x5508e5);});});}
\ No newline at end of file
+var _0xad97=['Dashboard,\x20%s,\x20%s','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info'];(function(_0x407a68,_0x4bcc9e){var _0x141ab7=function(_0x3d85e9){while(--_0x3d85e9){_0x407a68['push'](_0x407a68['shift']());}};_0x141ab7(++_0x4bcc9e);}(_0xad97,0x182));var _0x7ad9=function(_0x569c8b,_0x2374f9){_0x569c8b=_0x569c8b-0x0;var _0x1fc114=_0xad97[_0x569c8b];return _0x1fc114;};'use strict';var _=require('lodash');var util=require(_0x7ad9('0x0'));var moment=require(_0x7ad9('0x1'));var BPromise=require(_0x7ad9('0x2'));var rs=require(_0x7ad9('0x3'));var fs=require('fs');var Redis=require(_0x7ad9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7ad9('0x5'));var logger=require(_0x7ad9('0x6'))(_0x7ad9('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x7ad9('0x8')][_0x7ad9('0x9')]({'port':0x232a});config[_0x7ad9('0xa')]=_[_0x7ad9('0xb')](config['redis'],{'host':_0x7ad9('0xc'),'port':0x18eb});var socket=require(_0x7ad9('0xd'))(new Redis(config[_0x7ad9('0xa')]));require(_0x7ad9('0xe'))[_0x7ad9('0xf')](socket);function respondWithRpcPromise(_0x58d741,_0x2f645e,_0x197819){return new BPromise(function(_0x56af56,_0x54154b){return client[_0x7ad9('0x10')](_0x58d741,_0x197819)[_0x7ad9('0x11')](function(_0x124db3){logger[_0x7ad9('0x12')](_0x7ad9('0x13'),_0x2f645e,_0x7ad9('0x14'));logger[_0x7ad9('0x15')](_0x7ad9('0x16'),_0x2f645e,_0x7ad9('0x14'),JSON[_0x7ad9('0x17')](_0x124db3));if(_0x124db3[_0x7ad9('0x18')]){if(_0x124db3[_0x7ad9('0x18')]['code']===0x1f4){logger[_0x7ad9('0x18')](_0x7ad9('0x13'),_0x2f645e,_0x124db3[_0x7ad9('0x18')][_0x7ad9('0x19')]);return _0x54154b(_0x124db3[_0x7ad9('0x18')][_0x7ad9('0x19')]);}logger[_0x7ad9('0x18')](_0x7ad9('0x13'),_0x2f645e,_0x124db3['error']['message']);return _0x56af56(_0x124db3[_0x7ad9('0x18')][_0x7ad9('0x19')]);}else{logger[_0x7ad9('0x12')]('Dashboard,\x20%s,\x20%s',_0x2f645e,_0x7ad9('0x14'));_0x56af56(_0x124db3['result'][_0x7ad9('0x19')]);}})[_0x7ad9('0x1a')](function(_0x293be5){logger[_0x7ad9('0x18')](_0x7ad9('0x13'),_0x2f645e,_0x293be5);_0x54154b(_0x293be5);});});}
\ No newline at end of file
index e9521f4..5fc4852 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb28d=['removeListener','register','length','dashboard:','./dashboard.events','save','remove','update','emit'];(function(_0x48084f,_0x2d1e50){var _0x215480=function(_0x3662ef){while(--_0x3662ef){_0x48084f['push'](_0x48084f['shift']());}};_0x215480(++_0x2d1e50);}(_0xb28d,0x9d));var _0xdb28=function(_0x2d6dc4,_0x5e2d29){_0x2d6dc4=_0x2d6dc4-0x0;var _0x52991e=_0xb28d[_0x2d6dc4];return _0x52991e;};'use strict';var DashboardEvents=require(_0xdb28('0x0'));var events=[_0xdb28('0x1'),_0xdb28('0x2'),_0xdb28('0x3')];function createListener(_0x8494b7,_0x290c7c){return function(_0x3056b1){_0x290c7c[_0xdb28('0x4')](_0x8494b7,_0x3056b1);};}function removeListener(_0x1962a7,_0x3f3a60){return function(){DashboardEvents[_0xdb28('0x5')](_0x1962a7,_0x3f3a60);};}exports[_0xdb28('0x6')]=function(_0x7f6dc2){for(var _0x5518a4=0x0,_0x57b73c=events[_0xdb28('0x7')];_0x5518a4<_0x57b73c;_0x5518a4++){var _0x4b79d8=events[_0x5518a4];var _0x40c465=createListener(_0xdb28('0x8')+_0x4b79d8,_0x7f6dc2);DashboardEvents['on'](_0x4b79d8,_0x40c465);}};
\ No newline at end of file
+var _0xbd69=['removeListener','register','dashboard:','./dashboard.events','save','remove','emit'];(function(_0x1ad459,_0x25c523){var _0x5ad9d2=function(_0x5e58d1){while(--_0x5e58d1){_0x1ad459['push'](_0x1ad459['shift']());}};_0x5ad9d2(++_0x25c523);}(_0xbd69,0x1df));var _0x9bd6=function(_0x299420,_0xaee6c6){_0x299420=_0x299420-0x0;var _0x345630=_0xbd69[_0x299420];return _0x345630;};'use strict';var DashboardEvents=require(_0x9bd6('0x0'));var events=[_0x9bd6('0x1'),_0x9bd6('0x2'),'update'];function createListener(_0x3fa811,_0x3cc1af){return function(_0x238819){_0x3cc1af[_0x9bd6('0x3')](_0x3fa811,_0x238819);};}function removeListener(_0x48f793,_0x2d0eab){return function(){DashboardEvents[_0x9bd6('0x4')](_0x48f793,_0x2d0eab);};}exports[_0x9bd6('0x5')]=function(_0xad6e1c){for(var _0x2a2d3a=0x0,_0x351ec9=events['length'];_0x2a2d3a<_0x351ec9;_0x2a2d3a++){var _0x604ac9=events[_0x2a2d3a];var _0x21cc57=createListener(_0x9bd6('0x6')+_0x604ac9,_0xad6e1c);DashboardEvents['on'](_0x604ac9,_0x21cc57);}};
\ No newline at end of file
index a9eafbd..90e04a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54a5=['clone','/:id/items','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./dashboard.controller','get','index','/:id','getItems','post','isAuthenticated'];(function(_0x2cf5bf,_0x10ffb3){var _0x4bfa07=function(_0x534753){while(--_0x534753){_0x2cf5bf['push'](_0x2cf5bf['shift']());}};_0x4bfa07(++_0x10ffb3);}(_0x54a5,0x146));var _0x554a=function(_0x1ae44a,_0x4a9881){_0x1ae44a=_0x1ae44a-0x0;var _0x3f15f2=_0x54a5[_0x1ae44a];return _0x3f15f2;};'use strict';var multer=require(_0x554a('0x0'));var util=require(_0x554a('0x1'));var path=require(_0x554a('0x2'));var timeout=require(_0x554a('0x3'));var express=require('express');var router=express[_0x554a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x554a('0x5'));var config=require(_0x554a('0x6'));var controller=require(_0x554a('0x7'));router[_0x554a('0x8')]('/',auth['isAuthenticated'](),controller[_0x554a('0x9')]);router[_0x554a('0x8')](_0x554a('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x554a('0x8')]('/:id/items',auth['isAuthenticated'](),controller[_0x554a('0xb')]);router[_0x554a('0xc')]('/',auth[_0x554a('0xd')](),controller['create']);router[_0x554a('0xc')]('/:id/clone',auth['isAuthenticated'](),controller[_0x554a('0xe')]);router[_0x554a('0xc')](_0x554a('0xf'),auth[_0x554a('0xd')](),controller['addItem']);router['put'](_0x554a('0xa'),auth[_0x554a('0xd')](),controller[_0x554a('0x10')]);router[_0x554a('0x11')](_0x554a('0xa'),auth['isAuthenticated'](),controller[_0x554a('0x12')]);module[_0x554a('0x13')]=router;
\ No newline at end of file
+var _0x32b6=['get','index','show','/:id/items','isAuthenticated','getItems','post','/:id/clone','clone','addItem','put','/:id','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller'];(function(_0x3a573a,_0x1bdc23){var _0xf879d7=function(_0x3e6642){while(--_0x3e6642){_0x3a573a['push'](_0x3a573a['shift']());}};_0xf879d7(++_0x1bdc23);}(_0x32b6,0x81));var _0x632b=function(_0x56deb3,_0x240a00){_0x56deb3=_0x56deb3-0x0;var _0x264bab=_0x32b6[_0x56deb3];return _0x264bab;};'use strict';var multer=require(_0x632b('0x0'));var util=require(_0x632b('0x1'));var path=require('path');var timeout=require(_0x632b('0x2'));var express=require(_0x632b('0x3'));var router=express[_0x632b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x632b('0x5'));var interaction=require(_0x632b('0x6'));var config=require(_0x632b('0x7'));var controller=require(_0x632b('0x8'));router[_0x632b('0x9')]('/',auth['isAuthenticated'](),controller[_0x632b('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x632b('0xb')]);router['get'](_0x632b('0xc'),auth[_0x632b('0xd')](),controller[_0x632b('0xe')]);router[_0x632b('0xf')]('/',auth[_0x632b('0xd')](),controller['create']);router[_0x632b('0xf')](_0x632b('0x10'),auth[_0x632b('0xd')](),controller[_0x632b('0x11')]);router['post'](_0x632b('0xc'),auth['isAuthenticated'](),controller[_0x632b('0x12')]);router[_0x632b('0x13')](_0x632b('0x14'),auth[_0x632b('0xd')](),controller['update']);router[_0x632b('0x15')]('/:id',auth[_0x632b('0xd')](),controller[_0x632b('0x16')]);module['exports']=router;
\ No newline at end of file
index c30f234..081496a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['#2196f3','sequelize','exports','STRING','TEXT','long','parse','getDataValue','attrs','stringify','setDataValue','INTEGER','#ffffff'];(function(_0xfbb408,_0x5b4407){var _0x379d4d=function(_0x41be1a){while(--_0x41be1a){_0xfbb408['push'](_0xfbb408['shift']());}};_0x379d4d(++_0x5b4407);}(_0x326f,0xd1));var _0xf326=function(_0x276302,_0xed21d6){_0x276302=_0x276302-0x0;var _0x80a066=_0x326f[_0x276302];return _0x80a066;};'use strict';var Sequelize=require(_0xf326('0x0'));var squel=require('squel');var _=require('lodash');module[_0xf326('0x1')]={'title':{'type':Sequelize[_0xf326('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xf326('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xf326('0x3')](_0xf326('0x4')),'get':function(){try{return JSON[_0xf326('0x5')](this[_0xf326('0x6')](_0xf326('0x7')));}catch(_0x1b5a56){return[];}},'set':function(_0x3ace29){try{this['setDataValue'](_0xf326('0x7'),JSON[_0xf326('0x8')](_0x3ace29));}catch(_0x165f95){this[_0xf326('0x9')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xf326('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xf326('0xa')]},'col':{'type':Sequelize[_0xf326('0xa')]},'background':{'type':Sequelize[_0xf326('0x2')],'allowNull':![],'defaultValue':_0xf326('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf326('0xc'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize['STRING']},'titleFontSize':{'type':Sequelize[_0xf326('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x7096=['setDataValue','stringify','INTEGER','#ffffff','squel','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7096,0x10c));var _0x6709=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x7096[_0x6c993a];return _0x27f547;};'use strict';var Sequelize=require('sequelize');var squel=require(_0x6709('0x0'));var _=require('lodash');module[_0x6709('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x6709('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x6709('0x3')](_0x6709('0x4')),'get':function(){try{return JSON[_0x6709('0x5')](this[_0x6709('0x6')](_0x6709('0x7')));}catch(_0xb8fe6d){return[];}},'set':function(_0x9d630f){try{this[_0x6709('0x8')](_0x6709('0x7'),JSON[_0x6709('0x9')](_0x9d630f));}catch(_0x985814){this[_0x6709('0x8')]('attrs',JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x6709('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x6709('0xa')]},'col':{'type':Sequelize[_0x6709('0xa')]},'background':{'type':Sequelize[_0x6709('0x2')],'allowNull':![],'defaultValue':_0x6709('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x6709('0x2')]},'titleFontSize':{'type':Sequelize[_0x6709('0xa')],'defaultValue':0xc}};
\ No newline at end of file
index 750d1e1..b67c64c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd336=['clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','params','eml-format','rimraf','zip-dir','request-promise','mustache','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','redis','defaults','socket.io-emitter','./dashboardItem.socket','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','model','rawAttributes','query','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','DashboardItem','find','catch','type','attrUrl','attrs','value','https://','attrPath'];(function(_0x1ace27,_0x47a309){var _0x55d62e=function(_0x38c177){while(--_0x38c177){_0x1ace27['push'](_0x1ace27['shift']());}};_0x55d62e(++_0x47a309);}(_0xd336,0xc2));var _0x6d33=function(_0x5aa373,_0x54c7f4){_0x5aa373=_0x5aa373-0x0;var _0x590e8e=_0xd336[_0x5aa373];return _0x590e8e;};'use strict';var emlformat=require(_0x6d33('0x0'));var rimraf=require(_0x6d33('0x1'));var zipdir=require(_0x6d33('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6d33('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6d33('0x4'));var util=require('util');var path=require(_0x6d33('0x5'));var sox=require(_0x6d33('0x6'));var csv=require('to-csv');var ejs=require(_0x6d33('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6d33('0x8'));var squel=require(_0x6d33('0x9'));var crypto=require(_0x6d33('0xa'));var jsforce=require(_0x6d33('0xb'));var deskjs=require(_0x6d33('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6d33('0xd'));var Redis=require('ioredis');var authService=require(_0x6d33('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6d33('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6d33('0x10'))(_0x6d33('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6d33('0x12'));var db=require('../../mysqldb')['db'];config[_0x6d33('0x13')]=_[_0x6d33('0x14')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6d33('0x15'))(new Redis(config['redis']));require(_0x6d33('0x16'))['register'](socket);function respondWithStatusCode(_0xff4c5b,_0xfc4883){_0xfc4883=_0xfc4883||0xcc;return function(_0x28f568){if(_0x28f568){return _0xff4c5b['sendStatus'](_0xfc4883);}return _0xff4c5b['status'](_0xfc4883)[_0x6d33('0x17')]();};}function respondWithResult(_0x1e8512,_0x18bfa0){_0x18bfa0=_0x18bfa0||0xc8;return function(_0x474f8a){if(_0x474f8a){return _0x1e8512[_0x6d33('0x18')](_0x18bfa0)[_0x6d33('0x19')](_0x474f8a);}};}function respondWithFilteredResult(_0x3fce08,_0x568185){return function(_0x645fc7){if(_0x645fc7){var _0x5ad943=typeof _0x568185[_0x6d33('0x1a')]===_0x6d33('0x1b')&&typeof _0x568185[_0x6d33('0x1c')]===_0x6d33('0x1b');var _0x5b5bd4=_0x645fc7[_0x6d33('0x1d')];var _0x3b9528=_0x5ad943?0x0:_0x568185[_0x6d33('0x1a')];var _0x4a2bdb=_0x5ad943?_0x645fc7[_0x6d33('0x1d')]:_0x568185[_0x6d33('0x1a')]+_0x568185['limit'];var _0x4fc2eb;if(_0x4a2bdb>=_0x5b5bd4){_0x4a2bdb=_0x5b5bd4;_0x4fc2eb=0xc8;}else{_0x4fc2eb=0xce;}_0x3fce08[_0x6d33('0x18')](_0x4fc2eb);return _0x3fce08[_0x6d33('0x1e')](_0x6d33('0x1f'),_0x3b9528+'-'+_0x4a2bdb+'/'+_0x5b5bd4)['json'](_0x645fc7);}return null;};}function patchUpdates(_0x535ea2){return function(_0x7c38d2){try{jsonpatch[_0x6d33('0x20')](_0x7c38d2,_0x535ea2,!![]);}catch(_0x3a3217){return BPromise[_0x6d33('0x21')](_0x3a3217);}return _0x7c38d2[_0x6d33('0x22')]();};}function saveUpdates(_0x1d7749,_0x5cd488){return function(_0x5a6f6a){if(_0x5a6f6a){return _0x5a6f6a[_0x6d33('0x23')](_0x1d7749)[_0x6d33('0x24')](function(_0x20a698){return _0x20a698;});}return null;};}function removeEntity(_0x4cabc9,_0x317a68){return function(_0x49ab92){if(_0x49ab92){return _0x49ab92[_0x6d33('0x25')]()['then'](function(){_0x4cabc9[_0x6d33('0x18')](0xcc)[_0x6d33('0x17')]();});}};}function handleEntityNotFound(_0xbea448,_0x4ad291){return function(_0x18ebba){if(!_0x18ebba){_0xbea448[_0x6d33('0x26')](0x194);}return _0x18ebba;};}function handleError(_0x25ee26,_0x2e8c34){_0x2e8c34=_0x2e8c34||0x1f4;return function(_0x288049){logger[_0x6d33('0x27')](_0x288049[_0x6d33('0x28')]);if(_0x288049[_0x6d33('0x29')]){delete _0x288049[_0x6d33('0x29')];}_0x25ee26[_0x6d33('0x18')](_0x2e8c34)[_0x6d33('0x2a')](_0x288049);};}exports['show']=function(_0x28ff81,_0x5e3905){var _0x45a17d={'raw':![],'where':{'id':_0x28ff81['params']['id']}},_0x3173bc={};_0x3173bc[_0x6d33('0x2b')]=_['keys'](db['DashboardItem'][_0x6d33('0x2c')]);_0x3173bc[_0x6d33('0x2d')]=_[_0x6d33('0x2e')](_0x28ff81[_0x6d33('0x2d')]);_0x3173bc[_0x6d33('0x2f')]=_[_0x6d33('0x30')](_0x3173bc[_0x6d33('0x2b')],_0x3173bc['query']);_0x45a17d[_0x6d33('0x31')]=_['intersection'](_0x3173bc[_0x6d33('0x2b')],qs[_0x6d33('0x32')](_0x28ff81[_0x6d33('0x2d')][_0x6d33('0x32')]));_0x45a17d[_0x6d33('0x31')]=_0x45a17d[_0x6d33('0x31')][_0x6d33('0x33')]?_0x45a17d[_0x6d33('0x31')]:_0x3173bc[_0x6d33('0x2b')];if(_0x28ff81[_0x6d33('0x2d')][_0x6d33('0x34')]){_0x45a17d[_0x6d33('0x35')]=[{'all':!![]}];}_0x45a17d=_[_0x6d33('0x36')]({},_0x45a17d,_0x28ff81['options']);return db[_0x6d33('0x37')][_0x6d33('0x38')](_0x45a17d)[_0x6d33('0x24')](handleEntityNotFound(_0x5e3905,null))[_0x6d33('0x24')](respondWithResult(_0x5e3905,null))[_0x6d33('0x39')](handleError(_0x5e3905,null));};exports['destroy']=function(_0x12de1f,_0x15582d){return db[_0x6d33('0x37')][_0x6d33('0x38')]({'where':{'id':_0x12de1f['params']['id']}})[_0x6d33('0x24')](handleEntityNotFound(_0x15582d,null))['then'](removeEntity(_0x15582d,null))[_0x6d33('0x39')](handleError(_0x15582d,null));};function widgetAttributes(_0x1bf8f2){try{switch(_0x1bf8f2[_0x6d33('0x3a')]){case'iframe':return[{'name':_0x6d33('0x3b'),'value':_0x1bf8f2['attrUrl']||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x0]?_0x1bf8f2[_0x6d33('0x3c')][0x0][_0x6d33('0x3d')]:undefined)||_0x6d33('0x3e')}];case'custom':return[{'name':'attrPath','value':_0x1bf8f2[_0x6d33('0x3f')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x0]?_0x1bf8f2[_0x6d33('0x3c')][0x0][_0x6d33('0x3d')]:undefined)||''}];case _0x6d33('0x40'):return[{'name':'attrHourFormat','value':_0x1bf8f2[_0x6d33('0x41')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x0]?_0x1bf8f2[_0x6d33('0x3c')][0x0][_0x6d33('0x3d')]:undefined)||_0x6d33('0x42')},{'name':_0x6d33('0x43'),'value':_0x1bf8f2[_0x6d33('0x43')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x1]?_0x1bf8f2[_0x6d33('0x3c')][0x1]['value']:undefined)||_0x6d33('0x44')},{'name':_0x6d33('0x45'),'value':_0x1bf8f2[_0x6d33('0x45')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x2]?_0x1bf8f2['attrs'][0x2][_0x6d33('0x3d')]:undefined)||0xc}];case'counter':return[{'name':_0x6d33('0x46'),'value':_0x1bf8f2[_0x6d33('0x46')]||(_0x1bf8f2['attrs']&&_0x1bf8f2[_0x6d33('0x3c')][0x0]?_0x1bf8f2['attrs'][0x0]['value']:undefined)||_0x6d33('0x47')},{'name':'attrVoiceQueues','value':_0x1bf8f2[_0x6d33('0x48')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x1]?_0x1bf8f2[_0x6d33('0x3c')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x1bf8f2[_0x6d33('0x45')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2['attrs'][0x2]?_0x1bf8f2[_0x6d33('0x3c')][0x2][_0x6d33('0x3d')]:undefined)||0x14}];case'multibar-chart':case _0x6d33('0x49'):return[{'name':_0x6d33('0x4a'),'value':_0x1bf8f2[_0x6d33('0x4a')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2['attrs'][0x0]?_0x1bf8f2[_0x6d33('0x3c')][0x0]['value']:undefined)||'total'},{'name':_0x6d33('0x4b'),'value':_0x1bf8f2['attrSerie2']||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x1]?_0x1bf8f2[_0x6d33('0x3c')][0x1]['value']:undefined)||null},{'name':_0x6d33('0x4c'),'value':_0x1bf8f2[_0x6d33('0x4c')]||(_0x1bf8f2['attrs']&&_0x1bf8f2[_0x6d33('0x3c')][0x2]?_0x1bf8f2['attrs'][0x2][_0x6d33('0x3d')]:undefined)||null},{'name':_0x6d33('0x48'),'value':_0x1bf8f2['attrVoiceQueues']||(_0x1bf8f2['attrs']&&_0x1bf8f2['attrs'][0x3]?_0x1bf8f2[_0x6d33('0x3c')][0x3][_0x6d33('0x3d')]:undefined)||[]}];case _0x6d33('0x4d'):return[{'name':_0x6d33('0x4e'),'type':_0x1bf8f2[_0x6d33('0x4f')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x0]?_0x1bf8f2[_0x6d33('0x3c')][0x0][_0x6d33('0x3a')]:undefined)||null,'value':_0x1bf8f2['attrReport']||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x0]?_0x1bf8f2['attrs'][0x0][_0x6d33('0x3d')]:undefined)||null},{'name':_0x6d33('0x50'),'value':_0x1bf8f2[_0x6d33('0x50')]||(_0x1bf8f2[_0x6d33('0x3c')]&&_0x1bf8f2[_0x6d33('0x3c')][0x1]?_0x1bf8f2[_0x6d33('0x3c')][0x1][_0x6d33('0x3d')]:undefined)||0x0}];default:return[];}}catch(_0x1584d7){logger[_0x6d33('0x27')](_0x6d33('0x51'),JSON[_0x6d33('0x52')](_0x1584d7));return[];}}exports[_0x6d33('0x53')]=function(_0x4f8815,_0x39f9a2){if(_0x4f8815[_0x6d33('0x54')]){_0x4f8815[_0x6d33('0x54')][_0x6d33('0x3c')]=widgetAttributes(_0x4f8815['body']);}return db[_0x6d33('0x37')][_0x6d33('0x53')](_0x4f8815[_0x6d33('0x54')],{})[_0x6d33('0x24')](respondWithResult(_0x39f9a2,0xc9))[_0x6d33('0x39')](handleError(_0x39f9a2,null));};exports[_0x6d33('0x23')]=function(_0x57f9af,_0x1156cb){if(_0x57f9af[_0x6d33('0x54')]['id']){delete _0x57f9af['body']['id'];}_0x57f9af[_0x6d33('0x54')][_0x6d33('0x3c')]=widgetAttributes(_0x57f9af['body']);return db['DashboardItem'][_0x6d33('0x38')]({'where':{'id':_0x57f9af[_0x6d33('0x55')]['id']}})[_0x6d33('0x24')](handleEntityNotFound(_0x1156cb,null))['then'](saveUpdates(_0x57f9af['body'],null))['then'](respondWithResult(_0x1156cb,null))['catch'](handleError(_0x1156cb,null));};
\ No newline at end of file
+var _0xe81f=['attrSerie1','total','attrSerie2','attrSerie3','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','send','show','params','model','keys','DashboardItem','query','filters','intersection','attributes','fields','length','include','merge','options','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','attrFontSize','counter','attrMetric','attrVoiceQueues','multibar-chart','pie-chart'];(function(_0x20043d,_0x2eef0d){var _0x3bd1ca=function(_0x4d93c6){while(--_0x4d93c6){_0x20043d['push'](_0x20043d['shift']());}};_0x3bd1ca(++_0x2eef0d);}(_0xe81f,0x10f));var _0xfe81=function(_0x40b71e,_0x340718){_0x40b71e=_0x40b71e-0x0;var _0x1c503a=_0xe81f[_0x40b71e];return _0x1c503a;};'use strict';var emlformat=require(_0xfe81('0x0'));var rimraf=require(_0xfe81('0x1'));var zipdir=require(_0xfe81('0x2'));var jsonpatch=require(_0xfe81('0x3'));var rp=require('request-promise');var moment=require(_0xfe81('0x4'));var BPromise=require(_0xfe81('0x5'));var Mustache=require(_0xfe81('0x6'));var util=require(_0xfe81('0x7'));var path=require('path');var sox=require(_0xfe81('0x8'));var csv=require(_0xfe81('0x9'));var ejs=require(_0xfe81('0xa'));var fs=require('fs');var fs_extra=require(_0xfe81('0xb'));var _=require('lodash');var squel=require(_0xfe81('0xc'));var crypto=require(_0xfe81('0xd'));var jsforce=require(_0xfe81('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xfe81('0x9'));var querystring=require(_0xfe81('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfe81('0x10'));var as=require(_0xfe81('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xfe81('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xfe81('0x13'));var db=require(_0xfe81('0x14'))['db'];config['redis']=_['defaults'](config[_0xfe81('0x15')],{'host':_0xfe81('0x16'),'port':0x18eb});var socket=require(_0xfe81('0x17'))(new Redis(config[_0xfe81('0x15')]));require(_0xfe81('0x18'))[_0xfe81('0x19')](socket);function respondWithStatusCode(_0x32ad6e,_0x4f2815){_0x4f2815=_0x4f2815||0xcc;return function(_0x42a7d0){if(_0x42a7d0){return _0x32ad6e['sendStatus'](_0x4f2815);}return _0x32ad6e[_0xfe81('0x1a')](_0x4f2815)[_0xfe81('0x1b')]();};}function respondWithResult(_0x3b6fbe,_0x231327){_0x231327=_0x231327||0xc8;return function(_0x1ec9ab){if(_0x1ec9ab){return _0x3b6fbe['status'](_0x231327)[_0xfe81('0x1c')](_0x1ec9ab);}};}function respondWithFilteredResult(_0x1fc7bd,_0x330489){return function(_0x192312){if(_0x192312){var _0x10eb6a=typeof _0x330489[_0xfe81('0x1d')]===_0xfe81('0x1e')&&typeof _0x330489[_0xfe81('0x1f')]===_0xfe81('0x1e');var _0x1316a7=_0x192312[_0xfe81('0x20')];var _0x30fdc3=_0x10eb6a?0x0:_0x330489['offset'];var _0x41b17a=_0x10eb6a?_0x192312[_0xfe81('0x20')]:_0x330489['offset']+_0x330489[_0xfe81('0x1f')];var _0x1b9370;if(_0x41b17a>=_0x1316a7){_0x41b17a=_0x1316a7;_0x1b9370=0xc8;}else{_0x1b9370=0xce;}_0x1fc7bd[_0xfe81('0x1a')](_0x1b9370);return _0x1fc7bd[_0xfe81('0x21')](_0xfe81('0x22'),_0x30fdc3+'-'+_0x41b17a+'/'+_0x1316a7)[_0xfe81('0x1c')](_0x192312);}return null;};}function patchUpdates(_0x361299){return function(_0x24e479){try{jsonpatch[_0xfe81('0x23')](_0x24e479,_0x361299,!![]);}catch(_0xb06d00){return BPromise[_0xfe81('0x24')](_0xb06d00);}return _0x24e479[_0xfe81('0x25')]();};}function saveUpdates(_0x291fb0,_0x3a8e61){return function(_0x33275a){if(_0x33275a){return _0x33275a[_0xfe81('0x26')](_0x291fb0)['then'](function(_0x2b3966){return _0x2b3966;});}return null;};}function removeEntity(_0x1c022a,_0x1d50b1){return function(_0x289715){if(_0x289715){return _0x289715[_0xfe81('0x27')]()[_0xfe81('0x28')](function(){_0x1c022a[_0xfe81('0x1a')](0xcc)[_0xfe81('0x1b')]();});}};}function handleEntityNotFound(_0x49cf7a,_0x110db5){return function(_0x5ce98e){if(!_0x5ce98e){_0x49cf7a['sendStatus'](0x194);}return _0x5ce98e;};}function handleError(_0x5b479b,_0x552c8d){_0x552c8d=_0x552c8d||0x1f4;return function(_0x10558f){logger[_0xfe81('0x29')](_0x10558f['stack']);if(_0x10558f['name']){delete _0x10558f['name'];}_0x5b479b[_0xfe81('0x1a')](_0x552c8d)[_0xfe81('0x2a')](_0x10558f);};}exports[_0xfe81('0x2b')]=function(_0xa1df8a,_0x12e727){var _0x5bb4ff={'raw':![],'where':{'id':_0xa1df8a[_0xfe81('0x2c')]['id']}},_0x53e5bb={};_0x53e5bb[_0xfe81('0x2d')]=_[_0xfe81('0x2e')](db[_0xfe81('0x2f')]['rawAttributes']);_0x53e5bb[_0xfe81('0x30')]=_['keys'](_0xa1df8a['query']);_0x53e5bb[_0xfe81('0x31')]=_[_0xfe81('0x32')](_0x53e5bb['model'],_0x53e5bb[_0xfe81('0x30')]);_0x5bb4ff[_0xfe81('0x33')]=_[_0xfe81('0x32')](_0x53e5bb[_0xfe81('0x2d')],qs[_0xfe81('0x34')](_0xa1df8a[_0xfe81('0x30')]['fields']));_0x5bb4ff[_0xfe81('0x33')]=_0x5bb4ff[_0xfe81('0x33')][_0xfe81('0x35')]?_0x5bb4ff[_0xfe81('0x33')]:_0x53e5bb[_0xfe81('0x2d')];if(_0xa1df8a['query']['includeAll']){_0x5bb4ff[_0xfe81('0x36')]=[{'all':!![]}];}_0x5bb4ff=_[_0xfe81('0x37')]({},_0x5bb4ff,_0xa1df8a[_0xfe81('0x38')]);return db[_0xfe81('0x2f')][_0xfe81('0x39')](_0x5bb4ff)[_0xfe81('0x28')](handleEntityNotFound(_0x12e727,null))[_0xfe81('0x28')](respondWithResult(_0x12e727,null))['catch'](handleError(_0x12e727,null));};exports[_0xfe81('0x27')]=function(_0x5b8408,_0x1ede78){return db[_0xfe81('0x2f')][_0xfe81('0x39')]({'where':{'id':_0x5b8408[_0xfe81('0x2c')]['id']}})[_0xfe81('0x28')](handleEntityNotFound(_0x1ede78,null))[_0xfe81('0x28')](removeEntity(_0x1ede78,null))[_0xfe81('0x3a')](handleError(_0x1ede78,null));};function widgetAttributes(_0x57362a){try{switch(_0x57362a[_0xfe81('0x3b')]){case _0xfe81('0x3c'):return[{'name':'attrUrl','value':_0x57362a[_0xfe81('0x3d')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||_0xfe81('0x40')}];case _0xfe81('0x41'):return[{'name':_0xfe81('0x42'),'value':_0x57362a[_0xfe81('0x42')]||(_0x57362a['attrs']&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||''}];case _0xfe81('0x43'):return[{'name':_0xfe81('0x44'),'value':_0x57362a[_0xfe81('0x44')]||(_0x57362a['attrs']&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||_0xfe81('0x45')},{'name':_0xfe81('0x46'),'value':_0x57362a[_0xfe81('0x46')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a['attrs'][0x1]?_0x57362a[_0xfe81('0x3e')][0x1][_0xfe81('0x3f')]:undefined)||'0.00'},{'name':_0xfe81('0x47'),'value':_0x57362a[_0xfe81('0x47')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x2]?_0x57362a[_0xfe81('0x3e')][0x2][_0xfe81('0x3f')]:undefined)||0xc}];case _0xfe81('0x48'):return[{'name':_0xfe81('0x49'),'value':_0x57362a[_0xfe81('0x49')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a['attrs'][0x0][_0xfe81('0x3f')]:undefined)||'total'},{'name':_0xfe81('0x4a'),'value':_0x57362a[_0xfe81('0x4a')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x1]?_0x57362a[_0xfe81('0x3e')][0x1][_0xfe81('0x3f')]:undefined)||[]},{'name':_0xfe81('0x47'),'value':_0x57362a['attrFontSize']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x2]?_0x57362a[_0xfe81('0x3e')][0x2][_0xfe81('0x3f')]:undefined)||0x14}];case _0xfe81('0x4b'):case _0xfe81('0x4c'):return[{'name':_0xfe81('0x4d'),'value':_0x57362a[_0xfe81('0x4d')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0]['value']:undefined)||_0xfe81('0x4e')},{'name':_0xfe81('0x4f'),'value':_0x57362a['attrSerie2']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x1]?_0x57362a['attrs'][0x1][_0xfe81('0x3f')]:undefined)||null},{'name':_0xfe81('0x50'),'value':_0x57362a[_0xfe81('0x50')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a['attrs'][0x2]?_0x57362a[_0xfe81('0x3e')][0x2]['value']:undefined)||null},{'name':'attrVoiceQueues','value':_0x57362a['attrVoiceQueues']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x3]?_0x57362a[_0xfe81('0x3e')][0x3][_0xfe81('0x3f')]:undefined)||[]}];case'web-report':return[{'name':'attrReport','type':_0x57362a[_0xfe81('0x51')]||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3b')]:undefined)||null,'value':_0x57362a['attrReport']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a['attrs'][0x0]?_0x57362a[_0xfe81('0x3e')][0x0][_0xfe81('0x3f')]:undefined)||null},{'name':_0xfe81('0x52'),'value':_0x57362a['attrRefresh']||(_0x57362a[_0xfe81('0x3e')]&&_0x57362a[_0xfe81('0x3e')][0x1]?_0x57362a[_0xfe81('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x1a9a6b){logger[_0xfe81('0x29')](_0xfe81('0x53'),JSON[_0xfe81('0x54')](_0x1a9a6b));return[];}}exports[_0xfe81('0x55')]=function(_0x26a5a1,_0x34c096){if(_0x26a5a1[_0xfe81('0x56')]){_0x26a5a1[_0xfe81('0x56')]['attrs']=widgetAttributes(_0x26a5a1[_0xfe81('0x56')]);}return db[_0xfe81('0x2f')]['create'](_0x26a5a1['body'],{})[_0xfe81('0x28')](respondWithResult(_0x34c096,0xc9))[_0xfe81('0x3a')](handleError(_0x34c096,null));};exports['update']=function(_0x3aa6a5,_0x40302b){if(_0x3aa6a5[_0xfe81('0x56')]['id']){delete _0x3aa6a5['body']['id'];}_0x3aa6a5[_0xfe81('0x56')][_0xfe81('0x3e')]=widgetAttributes(_0x3aa6a5[_0xfe81('0x56')]);return db[_0xfe81('0x2f')]['find']({'where':{'id':_0x3aa6a5[_0xfe81('0x2c')]['id']}})[_0xfe81('0x28')](handleEntityNotFound(_0x40302b,null))[_0xfe81('0x28')](saveUpdates(_0x3aa6a5['body'],null))[_0xfe81('0x28')](respondWithResult(_0x40302b,null))[_0xfe81('0x3a')](handleError(_0x40302b,null));};
\ No newline at end of file
index 7fa1355..8d61660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x466b=['hasOwnProperty','exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','update','emit'];(function(_0x484825,_0x31b82d){var _0x21af01=function(_0x50d637){while(--_0x50d637){_0x484825['push'](_0x484825['shift']());}};_0x21af01(++_0x31b82d);}(_0x466b,0x13d));var _0xb466=function(_0x204119,_0x1bd9f8){_0x204119=_0x204119-0x0;var _0x5699ae=_0x466b[_0x204119];return _0x5699ae;};'use strict';var EventEmitter=require(_0xb466('0x0'));var DashboardItem=require(_0xb466('0x1'))['db'][_0xb466('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xb466('0x3')](0x0);var events={'afterCreate':_0xb466('0x4'),'afterUpdate':_0xb466('0x5'),'afterDestroy':'remove'};function emitEvent(_0x192ac5){return function(_0x4f2272,_0x1e6dc9,_0x30baa2){DashboardItemEvents[_0xb466('0x6')](_0x192ac5+':'+_0x4f2272['id'],_0x4f2272);DashboardItemEvents['emit'](_0x192ac5,_0x4f2272);_0x30baa2(null);};}for(var e in events){if(events[_0xb466('0x7')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xb466('0x8')]=DashboardItemEvents;
\ No newline at end of file
+var _0xa128=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','DashboardItem'];(function(_0x24471b,_0x147426){var _0x25caa2=function(_0xa90c8e){while(--_0xa90c8e){_0x24471b['push'](_0x24471b['shift']());}};_0x25caa2(++_0x147426);}(_0xa128,0xef));var _0x8a12=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa128[_0x13ea00];return _0x1f7347;};'use strict';var EventEmitter=require(_0x8a12('0x0'));var DashboardItem=require(_0x8a12('0x1'))['db'][_0x8a12('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x8a12('0x3')](0x0);var events={'afterCreate':_0x8a12('0x4'),'afterUpdate':_0x8a12('0x5'),'afterDestroy':_0x8a12('0x6')};function emitEvent(_0x7bf092){return function(_0x4cfb8c,_0x384d60,_0x3cf8d9){DashboardItemEvents[_0x8a12('0x7')](_0x7bf092+':'+_0x4cfb8c['id'],_0x4cfb8c);DashboardItemEvents[_0x8a12('0x7')](_0x7bf092,_0x4cfb8c);_0x3cf8d9(null);};}for(var e in events){if(events[_0x8a12('0x8')](e)){var event=events[e];DashboardItem[_0x8a12('0x9')](e,emitEvent(event));}}module[_0x8a12('0xa')]=DashboardItemEvents;
\ No newline at end of file
index e029992..ca22998 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa78e=['DashboardItem','lodash','util','../../config/logger','bluebird','request-promise','path','../../config/environment','./dashboardItem.attributes','exports'];(function(_0x46fb69,_0x5c8a01){var _0x10a393=function(_0x20d41f){while(--_0x20d41f){_0x46fb69['push'](_0x46fb69['shift']());}};_0x10a393(++_0x5c8a01);}(_0xa78e,0x1e1));var _0xea78=function(_0x576d7e,_0x46b7d9){_0x576d7e=_0x576d7e-0x0;var _0x2f599f=_0xa78e[_0x576d7e];return _0x2f599f;};'use strict';var _=require(_0xea78('0x0'));var util=require(_0xea78('0x1'));var logger=require(_0xea78('0x2'))('api');var moment=require('moment');var BPromise=require(_0xea78('0x3'));var rp=require(_0xea78('0x4'));var fs=require('fs');var path=require(_0xea78('0x5'));var rimraf=require('rimraf');var config=require(_0xea78('0x6'));var attributes=require(_0xea78('0x7'));module[_0xea78('0x8')]=function(_0x3cb08c,_0x1c5825){return _0x3cb08c['define'](_0xea78('0x9'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xef3a=['moment','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','lodash','../../config/logger'];(function(_0x125f3a,_0x1964de){var _0x57e0d8=function(_0x2192bd){while(--_0x2192bd){_0x125f3a['push'](_0x125f3a['shift']());}};_0x57e0d8(++_0x1964de);}(_0xef3a,0xa6));var _0xaef3=function(_0x285c85,_0x132c21){_0x285c85=_0x285c85-0x0;var _0x2f81cd=_0xef3a[_0x285c85];return _0x2f81cd;};'use strict';var _=require(_0xaef3('0x0'));var util=require('util');var logger=require(_0xaef3('0x1'))('api');var moment=require(_0xaef3('0x2'));var BPromise=require('bluebird');var rp=require(_0xaef3('0x3'));var fs=require('fs');var path=require(_0xaef3('0x4'));var rimraf=require(_0xaef3('0x5'));var config=require(_0xaef3('0x6'));var attributes=require(_0xaef3('0x7'));module[_0xaef3('0x8')]=function(_0x2f8a0e,_0x29f36b){return _0x2f8a0e[_0xaef3('0x9')](_0xaef3('0xa'),attributes,{'tableName':_0xaef3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ccd7439..a4b20e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fba=['catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','./dashboardItem.socket','register','request','request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','error','code','message','info','DashboardItem,\x20%s,\x20%s'];(function(_0x362e76,_0x275889){var _0x4b6b29=function(_0x1cec25){while(--_0x1cec25){_0x362e76['push'](_0x362e76['shift']());}};_0x4b6b29(++_0x275889);}(_0x1fba,0x12c));var _0xa1fb=function(_0x4e6eb2,_0x16a451){_0x4e6eb2=_0x4e6eb2-0x0;var _0x4e0c1c=_0x1fba[_0x4e6eb2];return _0x4e0c1c;};'use strict';var _=require('lodash');var util=require(_0xa1fb('0x0'));var moment=require('moment');var BPromise=require(_0xa1fb('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa1fb('0x2'));var db=require(_0xa1fb('0x3'))['db'];var utils=require(_0xa1fb('0x4'));var logger=require('../../config/logger')(_0xa1fb('0x5'));var config=require(_0xa1fb('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xa1fb('0x7')][_0xa1fb('0x8')]({'port':0x232a});config[_0xa1fb('0x9')]=_[_0xa1fb('0xa')](config[_0xa1fb('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xa1fb('0xb'))(new Redis(config[_0xa1fb('0x9')]));require(_0xa1fb('0xc'))[_0xa1fb('0xd')](socket);function respondWithRpcPromise(_0x27c81e,_0x535a01,_0x308d97){return new BPromise(function(_0x1c7cf8,_0x168b50){return client[_0xa1fb('0xe')](_0x27c81e,_0x308d97)['then'](function(_0x516cf3){logger['info']('DashboardItem,\x20%s,\x20%s',_0x535a01,_0xa1fb('0xf'));logger['debug'](_0xa1fb('0x10'),_0x535a01,_0xa1fb('0xf'),JSON['stringify'](_0x516cf3));if(_0x516cf3[_0xa1fb('0x11')]){if(_0x516cf3[_0xa1fb('0x11')][_0xa1fb('0x12')]===0x1f4){logger[_0xa1fb('0x11')]('DashboardItem,\x20%s,\x20%s',_0x535a01,_0x516cf3[_0xa1fb('0x11')][_0xa1fb('0x13')]);return _0x168b50(_0x516cf3[_0xa1fb('0x11')][_0xa1fb('0x13')]);}logger[_0xa1fb('0x11')]('DashboardItem,\x20%s,\x20%s',_0x535a01,_0x516cf3['error'][_0xa1fb('0x13')]);return _0x1c7cf8(_0x516cf3['error']['message']);}else{logger[_0xa1fb('0x14')](_0xa1fb('0x15'),_0x535a01,'request\x20sent');_0x1c7cf8(_0x516cf3['result'][_0xa1fb('0x13')]);}})[_0xa1fb('0x16')](function(_0x33792c){logger[_0xa1fb('0x11')](_0xa1fb('0x15'),_0x535a01,_0x33792c);_0x168b50(_0x33792c);});});}
\ No newline at end of file
+var _0x2670=['result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','socket.io-emitter','redis','./dashboardItem.socket','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1709e7,_0x2ced21){var _0x402819=function(_0x3637a0){while(--_0x3637a0){_0x1709e7['push'](_0x1709e7['shift']());}};_0x402819(++_0x2ced21);}(_0x2670,0x1b5));var _0x0267=function(_0x2763ed,_0x126a93){_0x2763ed=_0x2763ed-0x0;var _0xbfdbaa=_0x2670[_0x2763ed];return _0xbfdbaa;};'use strict';var _=require('lodash');var util=require(_0x0267('0x0'));var moment=require(_0x0267('0x1'));var BPromise=require('bluebird');var rs=require(_0x0267('0x2'));var fs=require('fs');var Redis=require(_0x0267('0x3'));var db=require(_0x0267('0x4'))['db'];var utils=require(_0x0267('0x5'));var logger=require(_0x0267('0x6'))(_0x0267('0x7'));var config=require(_0x0267('0x8'));var jayson=require(_0x0267('0x9'));var client=jayson[_0x0267('0xa')]['http']({'port':0x232a});config['redis']=_[_0x0267('0xb')](config['redis'],{'host':_0x0267('0xc'),'port':0x18eb});var socket=require(_0x0267('0xd'))(new Redis(config[_0x0267('0xe')]));require(_0x0267('0xf'))['register'](socket);function respondWithRpcPromise(_0x5f1ccc,_0x351017,_0x1faefd){return new BPromise(function(_0x4f1486,_0x61c7a){return client[_0x0267('0x10')](_0x5f1ccc,_0x1faefd)[_0x0267('0x11')](function(_0x3aa2c8){logger[_0x0267('0x12')](_0x0267('0x13'),_0x351017,_0x0267('0x14'));logger[_0x0267('0x15')](_0x0267('0x16'),_0x351017,'request\x20sent',JSON[_0x0267('0x17')](_0x3aa2c8));if(_0x3aa2c8['error']){if(_0x3aa2c8[_0x0267('0x18')][_0x0267('0x19')]===0x1f4){logger[_0x0267('0x18')](_0x0267('0x13'),_0x351017,_0x3aa2c8[_0x0267('0x18')][_0x0267('0x1a')]);return _0x61c7a(_0x3aa2c8[_0x0267('0x18')]['message']);}logger[_0x0267('0x18')](_0x0267('0x13'),_0x351017,_0x3aa2c8[_0x0267('0x18')][_0x0267('0x1a')]);return _0x4f1486(_0x3aa2c8['error'][_0x0267('0x1a')]);}else{logger['info'](_0x0267('0x13'),_0x351017,'request\x20sent');_0x4f1486(_0x3aa2c8[_0x0267('0x1b')][_0x0267('0x1a')]);}})[_0x0267('0x1c')](function(_0x526d76){logger[_0x0267('0x18')](_0x0267('0x13'),_0x351017,_0x526d76);_0x61c7a(_0x526d76);});});}
\ No newline at end of file
index be8efc5..b178dc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d6d=['./dashboardItem.events','save','remove','emit','register','length','dashboardItem:'];(function(_0x264f48,_0x2c82d8){var _0xb99167=function(_0x4a6be7){while(--_0x4a6be7){_0x264f48['push'](_0x264f48['shift']());}};_0xb99167(++_0x2c82d8);}(_0x4d6d,0x15e));var _0xd4d6=function(_0x60cd08,_0x48fcd0){_0x60cd08=_0x60cd08-0x0;var _0x3e22b5=_0x4d6d[_0x60cd08];return _0x3e22b5;};'use strict';var DashboardItemEvents=require(_0xd4d6('0x0'));var events=[_0xd4d6('0x1'),_0xd4d6('0x2'),'update'];function createListener(_0x3cc553,_0x41af6f){return function(_0x6a19c2){_0x41af6f[_0xd4d6('0x3')](_0x3cc553,_0x6a19c2);};}function removeListener(_0xbbb29d,_0x48f13d){return function(){DashboardItemEvents['removeListener'](_0xbbb29d,_0x48f13d);};}exports[_0xd4d6('0x4')]=function(_0x38801e){for(var _0x3b68d1=0x0,_0x36e1e0=events[_0xd4d6('0x5')];_0x3b68d1<_0x36e1e0;_0x3b68d1++){var _0x36e625=events[_0x3b68d1];var _0x255abc=createListener(_0xd4d6('0x6')+_0x36e625,_0x38801e);DashboardItemEvents['on'](_0x36e625,_0x255abc);}};
\ No newline at end of file
+var _0x1984=['save','remove','update','register','length','./dashboardItem.events'];(function(_0x8f7cb6,_0xf929c8){var _0xf4d3a1=function(_0x3e3d31){while(--_0x3e3d31){_0x8f7cb6['push'](_0x8f7cb6['shift']());}};_0xf4d3a1(++_0xf929c8);}(_0x1984,0x161));var _0x4198=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x1984[_0x126558];return _0x1f6d14;};'use strict';var DashboardItemEvents=require(_0x4198('0x0'));var events=[_0x4198('0x1'),_0x4198('0x2'),_0x4198('0x3')];function createListener(_0x1fc52c,_0x5b2c05){return function(_0x4e8a6a){_0x5b2c05['emit'](_0x1fc52c,_0x4e8a6a);};}function removeListener(_0x7d9f81,_0x17545a){return function(){DashboardItemEvents['removeListener'](_0x7d9f81,_0x17545a);};}exports[_0x4198('0x4')]=function(_0x52d97c){for(var _0xd3532b=0x0,_0x4d0471=events[_0x4198('0x5')];_0xd3532b<_0x4d0471;_0xd3532b++){var _0x599384=events[_0xd3532b];var _0x2c5540=createListener('dashboardItem:'+_0x599384,_0x52d97c);DashboardItemEvents['on'](_0x599384,_0x2c5540);}};
\ No newline at end of file
index 24c2c57..078baa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c4c=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','post','isAuthenticated','create','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3f848d,_0x4ce235){var _0x21dea6=function(_0x1c043f){while(--_0x1c043f){_0x3f848d['push'](_0x3f848d['shift']());}};_0x21dea6(++_0x4ce235);}(_0x3c4c,0xed));var _0xc3c4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x3c4c[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require(_0xc3c4('0x0'));var util=require(_0xc3c4('0x1'));var path=require(_0xc3c4('0x2'));var timeout=require('connect-timeout');var express=require(_0xc3c4('0x3'));var router=express[_0xc3c4('0x4')]();var fs_extra=require(_0xc3c4('0x5'));var auth=require(_0xc3c4('0x6'));var interaction=require(_0xc3c4('0x7'));var config=require(_0xc3c4('0x8'));var controller=require(_0xc3c4('0x9'));router[_0xc3c4('0xa')](_0xc3c4('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xc3c4('0xc')]('/',auth[_0xc3c4('0xd')](),controller[_0xc3c4('0xe')]);router[_0xc3c4('0xf')](_0xc3c4('0xb'),auth[_0xc3c4('0xd')](),controller[_0xc3c4('0x10')]);router[_0xc3c4('0x11')]('/:id',auth[_0xc3c4('0xd')](),controller[_0xc3c4('0x12')]);module[_0xc3c4('0x13')]=router;
\ No newline at end of file
+var _0xba33=['/:id','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','./dashboardItem.controller','get','isAuthenticated','create','update'];(function(_0x291aaf,_0x4c6d8d){var _0x5571e6=function(_0x1b4fec){while(--_0x1b4fec){_0x291aaf['push'](_0x291aaf['shift']());}};_0x5571e6(++_0x4c6d8d);}(_0xba33,0x16e));var _0x3ba3=function(_0x42cdec,_0x19eb70){_0x42cdec=_0x42cdec-0x0;var _0x51b98e=_0xba33[_0x42cdec];return _0x51b98e;};'use strict';var multer=require(_0x3ba3('0x0'));var util=require(_0x3ba3('0x1'));var path=require(_0x3ba3('0x2'));var timeout=require('connect-timeout');var express=require(_0x3ba3('0x3'));var router=express[_0x3ba3('0x4')]();var fs_extra=require(_0x3ba3('0x5'));var auth=require(_0x3ba3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3ba3('0x7'));router[_0x3ba3('0x8')]('/:id',auth[_0x3ba3('0x9')](),controller['show']);router['post']('/',auth[_0x3ba3('0x9')](),controller[_0x3ba3('0xa')]);router['put']('/:id',auth[_0x3ba3('0x9')](),controller[_0x3ba3('0xb')]);router['delete'](_0x3ba3('0xc'),auth['isAuthenticated'](),controller[_0x3ba3('0xd')]);module['exports']=router;
\ No newline at end of file
index 4038dfd..c492536 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fd3=['third','STRING','ENUM','first','second'];(function(_0x1b7368,_0x3286ed){var _0x25d54c=function(_0x2366da){while(--_0x2366da){_0x1b7368['push'](_0x1b7368['shift']());}};_0x25d54c(++_0x3286ed);}(_0x4fd3,0xf2));var _0x34fd=function(_0x3819bc,_0x3a35bf){_0x3819bc=_0x3819bc-0x0;var _0x249cf4=_0x4fd3[_0x3819bc];return _0x249cf4;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'level':{'type':Sequelize[_0x34fd('0x0')](_0x34fd('0x1'),_0x34fd('0x2'),_0x34fd('0x3')),'allowNull':![],'defaultValue':_0x34fd('0x1')},'description':{'type':Sequelize[_0x34fd('0x4')]}};
\ No newline at end of file
+var _0xe4bc=['first','second','sequelize','exports','STRING','ENUM'];(function(_0x5ebeeb,_0x36520b){var _0x17b4e7=function(_0x1a204b){while(--_0x1a204b){_0x5ebeeb['push'](_0x5ebeeb['shift']());}};_0x17b4e7(++_0x36520b);}(_0xe4bc,0x98));var _0xce4b=function(_0x4f438d,_0x29c693){_0x4f438d=_0x4f438d-0x0;var _0x4be72f=_0xe4bc[_0x4f438d];return _0x4be72f;};'use strict';var Sequelize=require(_0xce4b('0x0'));module[_0xce4b('0x1')]={'name':{'type':Sequelize[_0xce4b('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xce4b('0x3')](_0xce4b('0x4'),_0xce4b('0x5'),'third'),'allowNull':![],'defaultValue':_0xce4b('0x4')},'description':{'type':Sequelize[_0xce4b('0x2')]}};
\ No newline at end of file
index 7645485..84fccab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x958f=['options','includeAll','rows','catch','include','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','update','body','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','ejs','fs-extra','lodash','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','json','limit','undefined','count','offset','set','apply','save','then','destroy','get','Dispositions','end','error','stack','name','send','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge'];(function(_0x284176,_0x338fb9){var _0x39d541=function(_0x37d0ce){while(--_0x37d0ce){_0x284176['push'](_0x284176['shift']());}};_0x39d541(++_0x338fb9);}(_0x958f,0x16e));var _0xf958=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x958f[_0x49b207];return _0x2dc8fa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf958('0x0'));var zipdir=require(_0xf958('0x1'));var jsonpatch=require(_0xf958('0x2'));var rp=require(_0xf958('0x3'));var moment=require(_0xf958('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf958('0x5'));var util=require(_0xf958('0x6'));var path=require('path');var sox=require(_0xf958('0x7'));var csv=require('to-csv');var ejs=require(_0xf958('0x8'));var fs=require('fs');var fs_extra=require(_0xf958('0x9'));var _=require(_0xf958('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf958('0xb'));var deskjs=require(_0xf958('0xc'));var toCsv=require(_0xf958('0xd'));var querystring=require(_0xf958('0xe'));var Papa=require(_0xf958('0xf'));var Redis=require(_0xf958('0x10'));var authService=require(_0xf958('0x11'));var qs=require(_0xf958('0x12'));var as=require(_0xf958('0x13'));var hardwareService=require(_0xf958('0x14'));var logger=require(_0xf958('0x15'))(_0xf958('0x16'));var utils=require(_0xf958('0x17'));var config=require(_0xf958('0x18'));var licenseUtil=require(_0xf958('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x517877,_0x50dc33){_0x50dc33=_0x50dc33||0xcc;return function(_0x310c5f){if(_0x310c5f){return _0x517877[_0xf958('0x1a')](_0x50dc33);}return _0x517877['status'](_0x50dc33)['end']();};}function respondWithResult(_0x501db1,_0x5b16dc){_0x5b16dc=_0x5b16dc||0xc8;return function(_0x3e4555){if(_0x3e4555){return _0x501db1[_0xf958('0x1b')](_0x5b16dc)[_0xf958('0x1c')](_0x3e4555);}};}function respondWithFilteredResult(_0x4d4e56,_0x39cca9){return function(_0x3ce89d){if(_0x3ce89d){var _0x25dd16=typeof _0x39cca9['offset']==='undefined'&&typeof _0x39cca9[_0xf958('0x1d')]===_0xf958('0x1e');var _0x4706f2=_0x3ce89d[_0xf958('0x1f')];var _0x17d644=_0x25dd16?0x0:_0x39cca9[_0xf958('0x20')];var _0x4b8377=_0x25dd16?_0x3ce89d[_0xf958('0x1f')]:_0x39cca9[_0xf958('0x20')]+_0x39cca9[_0xf958('0x1d')];var _0xfcc760;if(_0x4b8377>=_0x4706f2){_0x4b8377=_0x4706f2;_0xfcc760=0xc8;}else{_0xfcc760=0xce;}_0x4d4e56['status'](_0xfcc760);return _0x4d4e56[_0xf958('0x21')]('Content-Range',_0x17d644+'-'+_0x4b8377+'/'+_0x4706f2)[_0xf958('0x1c')](_0x3ce89d);}return null;};}function patchUpdates(_0x2a7b34){return function(_0x236f7f){try{jsonpatch[_0xf958('0x22')](_0x236f7f,_0x2a7b34,!![]);}catch(_0x4c0eff){return BPromise['reject'](_0x4c0eff);}return _0x236f7f[_0xf958('0x23')]();};}function saveUpdates(_0x136533,_0x10260e){return function(_0x52364d){if(_0x52364d){return _0x52364d['update'](_0x136533)[_0xf958('0x24')](function(_0x54b73d){return _0x54b73d;});}return null;};}function removeEntity(_0x51c693,_0xce04b2){return function(_0x19a5c6){if(_0x19a5c6){return _0x19a5c6[_0xf958('0x25')]()[_0xf958('0x24')](function(){var _0x28bfb7=_0x19a5c6[_0xf958('0x26')]({'plain':!![]});var _0x5abda5=_0xf958('0x27');return db['UserProfileResource'][_0xf958('0x25')]({'where':{'type':_0x5abda5,'resourceId':_0x28bfb7['id']}})[_0xf958('0x24')](function(){return _0x19a5c6;});})['then'](function(){_0x51c693[_0xf958('0x1b')](0xcc)[_0xf958('0x28')]();});}};}function handleEntityNotFound(_0x5b84ca,_0x503499){return function(_0x1175ac){if(!_0x1175ac){_0x5b84ca[_0xf958('0x1a')](0x194);}return _0x1175ac;};}function handleError(_0x2327aa,_0x457166){_0x457166=_0x457166||0x1f4;return function(_0x2aade6){logger[_0xf958('0x29')](_0x2aade6[_0xf958('0x2a')]);if(_0x2aade6[_0xf958('0x2b')]){delete _0x2aade6['name'];}_0x2327aa[_0xf958('0x1b')](_0x457166)[_0xf958('0x2c')](_0x2aade6);};}exports[_0xf958('0x2d')]=function(_0x199cd3,_0x1745be){var _0x3ba4f7={},_0x5ce874={},_0x3c79e2={'count':0x0,'rows':[]};var _0x37a183=_[_0xf958('0x2e')](db[_0xf958('0x2f')][_0xf958('0x30')],function(_0x4f9d67){return{'name':_0x4f9d67[_0xf958('0x31')],'type':_0x4f9d67[_0xf958('0x32')][_0xf958('0x33')]};});_0x5ce874[_0xf958('0x34')]=_[_0xf958('0x2e')](_0x37a183,'name');_0x5ce874[_0xf958('0x35')]=_[_0xf958('0x36')](_0x199cd3[_0xf958('0x35')]);_0x5ce874[_0xf958('0x37')]=_['intersection'](_0x5ce874[_0xf958('0x34')],_0x5ce874['query']);_0x3ba4f7[_0xf958('0x38')]=_[_0xf958('0x39')](_0x5ce874[_0xf958('0x34')],qs[_0xf958('0x3a')](_0x199cd3[_0xf958('0x35')]['fields']));_0x3ba4f7['attributes']=_0x3ba4f7[_0xf958('0x38')][_0xf958('0x3b')]?_0x3ba4f7[_0xf958('0x38')]:_0x5ce874['model'];if(!_0x199cd3['query'][_0xf958('0x3c')](_0xf958('0x3d'))){_0x3ba4f7[_0xf958('0x1d')]=qs[_0xf958('0x1d')](_0x199cd3['query'][_0xf958('0x1d')]);_0x3ba4f7['offset']=qs['offset'](_0x199cd3[_0xf958('0x35')][_0xf958('0x20')]);}_0x3ba4f7[_0xf958('0x3e')]=qs[_0xf958('0x3f')](_0x199cd3['query'][_0xf958('0x3f')]);_0x3ba4f7['where']=qs[_0xf958('0x37')](_[_0xf958('0x40')](_0x199cd3[_0xf958('0x35')],_0x5ce874[_0xf958('0x37')]),_0x37a183);if(_0x199cd3[_0xf958('0x35')][_0xf958('0x41')]){_0x3ba4f7[_0xf958('0x42')]=_['merge'](_0x3ba4f7[_0xf958('0x42')],{'$or':_['map'](_0x37a183,function(_0x139db4){if(_0x139db4[_0xf958('0x32')]!==_0xf958('0x43')){var _0x5595cb={};_0x5595cb[_0x139db4[_0xf958('0x2b')]]={'$like':'%'+_0x199cd3[_0xf958('0x35')][_0xf958('0x41')]+'%'};return _0x5595cb;}})});}_0x3ba4f7=_[_0xf958('0x44')]({},_0x3ba4f7,_0x199cd3[_0xf958('0x45')]);var _0x9e1804={'where':_0x3ba4f7[_0xf958('0x42')]};return db[_0xf958('0x2f')]['count'](_0x9e1804)[_0xf958('0x24')](function(_0x2e1a61){_0x3c79e2[_0xf958('0x1f')]=_0x2e1a61;if(_0x199cd3[_0xf958('0x35')][_0xf958('0x46')]){_0x3ba4f7['include']=[{'all':!![]}];}return db[_0xf958('0x2f')]['findAll'](_0x3ba4f7);})['then'](function(_0x487dcf){_0x3c79e2[_0xf958('0x47')]=_0x487dcf;return _0x3c79e2;})[_0xf958('0x24')](respondWithFilteredResult(_0x1745be,_0x3ba4f7))[_0xf958('0x48')](handleError(_0x1745be,null));};exports['show']=function(_0x5892a2,_0x4e9b14){var _0x18e4e3={'raw':!![],'where':{'id':_0x5892a2['params']['id']}},_0x1ac392={};_0x1ac392[_0xf958('0x34')]=_[_0xf958('0x36')](db[_0xf958('0x2f')][_0xf958('0x30')]);_0x1ac392[_0xf958('0x35')]=_[_0xf958('0x36')](_0x5892a2['query']);_0x1ac392[_0xf958('0x37')]=_[_0xf958('0x39')](_0x1ac392[_0xf958('0x34')],_0x1ac392[_0xf958('0x35')]);_0x18e4e3[_0xf958('0x38')]=_[_0xf958('0x39')](_0x1ac392[_0xf958('0x34')],qs[_0xf958('0x3a')](_0x5892a2['query'][_0xf958('0x3a')]));_0x18e4e3[_0xf958('0x38')]=_0x18e4e3[_0xf958('0x38')][_0xf958('0x3b')]?_0x18e4e3['attributes']:_0x1ac392[_0xf958('0x34')];if(_0x5892a2[_0xf958('0x35')][_0xf958('0x46')]){_0x18e4e3[_0xf958('0x49')]=[{'all':!![]}];}_0x18e4e3=_[_0xf958('0x44')]({},_0x18e4e3,_0x5892a2[_0xf958('0x45')]);return db['Disposition'][_0xf958('0x4a')](_0x18e4e3)[_0xf958('0x24')](handleEntityNotFound(_0x4e9b14,null))[_0xf958('0x24')](respondWithResult(_0x4e9b14,null))[_0xf958('0x48')](handleError(_0x4e9b14,null));};exports['create']=function(_0x449e6f,_0x2b8db3){return db[_0xf958('0x2f')][_0xf958('0x4b')](_0x449e6f['body'],{})[_0xf958('0x24')](function(_0x275243){var _0xb6a543=_0x449e6f[_0xf958('0x4c')][_0xf958('0x26')]({'plain':!![]});if(!_0xb6a543)throw new Error(_0xf958('0x4d'));if(_0xb6a543[_0xf958('0x4e')]===_0xf958('0x4c')){var _0x433455=_0x275243[_0xf958('0x26')]({'plain':!![]});var _0x37f75c=_0xf958('0x27');return db[_0xf958('0x4f')]['find']({'where':{'name':_0x37f75c,'userProfileId':_0xb6a543[_0xf958('0x50')]},'raw':!![]})[_0xf958('0x24')](function(_0x315a21){if(_0x315a21&&_0x315a21[_0xf958('0x51')]===0x0){return db[_0xf958('0x52')][_0xf958('0x4b')]({'name':_0x433455['name'],'resourceId':_0x433455['id'],'type':_0x315a21['name'],'sectionId':_0x315a21['id']},{})['then'](function(){return _0x275243;});}else{return _0x275243;}})[_0xf958('0x48')](function(_0x2960d4){logger[_0xf958('0x29')](_0xf958('0x53'),_0x2960d4);throw _0x2960d4;});}return _0x275243;})['then'](respondWithResult(_0x2b8db3,0xc9))[_0xf958('0x48')](handleError(_0x2b8db3,null));};exports[_0xf958('0x54')]=function(_0x877e9b,_0x3a1207){if(_0x877e9b[_0xf958('0x55')]['id']){delete _0x877e9b[_0xf958('0x55')]['id'];}return db['Disposition'][_0xf958('0x4a')]({'where':{'id':_0x877e9b['params']['id']}})[_0xf958('0x24')](handleEntityNotFound(_0x3a1207,null))[_0xf958('0x24')](saveUpdates(_0x877e9b[_0xf958('0x55')],null))[_0xf958('0x24')](respondWithResult(_0x3a1207,null))[_0xf958('0x48')](handleError(_0x3a1207,null));};exports[_0xf958('0x25')]=function(_0x4e041a,_0x13cbba){return db[_0xf958('0x2f')][_0xf958('0x4a')]({'where':{'id':_0x4e041a[_0xf958('0x56')]['id']}})['then'](handleEntityNotFound(_0x13cbba,null))[_0xf958('0x24')](removeEntity(_0x13cbba,null))[_0xf958('0x48')](handleError(_0x13cbba,null));};
\ No newline at end of file
+var _0xe42a=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error','name','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','keys','attributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','ioredis'];(function(_0x4c3462,_0x2b5484){var _0x43a439=function(_0x56d778){while(--_0x56d778){_0x4c3462['push'](_0x4c3462['shift']());}};_0x43a439(++_0x2b5484);}(_0xe42a,0x121));var _0xae42=function(_0x104e86,_0x449e75){_0x104e86=_0x104e86-0x0;var _0x5aa1eb=_0xe42a[_0x104e86];return _0x5aa1eb;};'use strict';var emlformat=require(_0xae42('0x0'));var rimraf=require(_0xae42('0x1'));var zipdir=require(_0xae42('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xae42('0x3'));var moment=require('moment');var BPromise=require(_0xae42('0x4'));var Mustache=require(_0xae42('0x5'));var util=require(_0xae42('0x6'));var path=require('path');var sox=require(_0xae42('0x7'));var csv=require(_0xae42('0x8'));var ejs=require(_0xae42('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xae42('0xa'));var squel=require('squel');var crypto=require(_0xae42('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xae42('0xc'));var toCsv=require('to-csv');var querystring=require(_0xae42('0xd'));var Papa=require('papaparse');var Redis=require(_0xae42('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xae42('0xf'));var as=require(_0xae42('0x10'));var hardwareService=require(_0xae42('0x11'));var logger=require(_0xae42('0x12'))('api');var utils=require(_0xae42('0x13'));var config=require(_0xae42('0x14'));var licenseUtil=require(_0xae42('0x15'));var db=require(_0xae42('0x16'))['db'];function respondWithStatusCode(_0x37c37f,_0x43deb3){_0x43deb3=_0x43deb3||0xcc;return function(_0x43c544){if(_0x43c544){return _0x37c37f['sendStatus'](_0x43deb3);}return _0x37c37f[_0xae42('0x17')](_0x43deb3)['end']();};}function respondWithResult(_0x10e2b6,_0x4ebba3){_0x4ebba3=_0x4ebba3||0xc8;return function(_0x3d1b16){if(_0x3d1b16){return _0x10e2b6[_0xae42('0x17')](_0x4ebba3)[_0xae42('0x18')](_0x3d1b16);}};}function respondWithFilteredResult(_0x16c683,_0x5ca013){return function(_0x25e342){if(_0x25e342){var _0x34957b=typeof _0x5ca013[_0xae42('0x19')]===_0xae42('0x1a')&&typeof _0x5ca013[_0xae42('0x1b')]==='undefined';var _0x5b031e=_0x25e342[_0xae42('0x1c')];var _0x3963fa=_0x34957b?0x0:_0x5ca013[_0xae42('0x19')];var _0x2fce02=_0x34957b?_0x25e342[_0xae42('0x1c')]:_0x5ca013[_0xae42('0x19')]+_0x5ca013[_0xae42('0x1b')];var _0x5b2840;if(_0x2fce02>=_0x5b031e){_0x2fce02=_0x5b031e;_0x5b2840=0xc8;}else{_0x5b2840=0xce;}_0x16c683['status'](_0x5b2840);return _0x16c683['set'](_0xae42('0x1d'),_0x3963fa+'-'+_0x2fce02+'/'+_0x5b031e)['json'](_0x25e342);}return null;};}function patchUpdates(_0x2118a3){return function(_0xe29f82){try{jsonpatch[_0xae42('0x1e')](_0xe29f82,_0x2118a3,!![]);}catch(_0x2801a5){return BPromise[_0xae42('0x1f')](_0x2801a5);}return _0xe29f82[_0xae42('0x20')]();};}function saveUpdates(_0xcfd2f1,_0x2d13d0){return function(_0x438d30){if(_0x438d30){return _0x438d30[_0xae42('0x21')](_0xcfd2f1)[_0xae42('0x22')](function(_0x334f4d){return _0x334f4d;});}return null;};}function removeEntity(_0x404214,_0x52aec5){return function(_0x18cb0b){if(_0x18cb0b){return _0x18cb0b[_0xae42('0x23')]()[_0xae42('0x22')](function(){var _0x54acdb=_0x18cb0b[_0xae42('0x24')]({'plain':!![]});var _0x2af2c0='Dispositions';return db[_0xae42('0x25')][_0xae42('0x23')]({'where':{'type':_0x2af2c0,'resourceId':_0x54acdb['id']}})[_0xae42('0x22')](function(){return _0x18cb0b;});})[_0xae42('0x22')](function(){_0x404214[_0xae42('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x38b647,_0x5a571f){return function(_0xa2041b){if(!_0xa2041b){_0x38b647['sendStatus'](0x194);}return _0xa2041b;};}function handleError(_0x447ed1,_0x15ea7d){_0x15ea7d=_0x15ea7d||0x1f4;return function(_0x491ccb){logger[_0xae42('0x26')](_0x491ccb['stack']);if(_0x491ccb['name']){delete _0x491ccb[_0xae42('0x27')];}_0x447ed1[_0xae42('0x17')](_0x15ea7d)['send'](_0x491ccb);};}exports[_0xae42('0x28')]=function(_0x4e3cc3,_0x471170){var _0x4387fe={},_0x13fdce={},_0x4cfd99={'count':0x0,'rows':[]};var _0x200343=_[_0xae42('0x29')](db[_0xae42('0x2a')][_0xae42('0x2b')],function(_0x120a74){return{'name':_0x120a74[_0xae42('0x2c')],'type':_0x120a74[_0xae42('0x2d')][_0xae42('0x2e')]};});_0x13fdce[_0xae42('0x2f')]=_['map'](_0x200343,_0xae42('0x27'));_0x13fdce['query']=_['keys'](_0x4e3cc3[_0xae42('0x30')]);_0x13fdce[_0xae42('0x31')]=_[_0xae42('0x32')](_0x13fdce[_0xae42('0x2f')],_0x13fdce[_0xae42('0x30')]);_0x4387fe['attributes']=_[_0xae42('0x32')](_0x13fdce['model'],qs[_0xae42('0x33')](_0x4e3cc3[_0xae42('0x30')][_0xae42('0x33')]));_0x4387fe['attributes']=_0x4387fe['attributes'][_0xae42('0x34')]?_0x4387fe['attributes']:_0x13fdce['model'];if(!_0x4e3cc3['query'][_0xae42('0x35')]('nolimit')){_0x4387fe[_0xae42('0x1b')]=qs[_0xae42('0x1b')](_0x4e3cc3[_0xae42('0x30')][_0xae42('0x1b')]);_0x4387fe[_0xae42('0x19')]=qs[_0xae42('0x19')](_0x4e3cc3[_0xae42('0x30')][_0xae42('0x19')]);}_0x4387fe[_0xae42('0x36')]=qs[_0xae42('0x37')](_0x4e3cc3['query'][_0xae42('0x37')]);_0x4387fe[_0xae42('0x38')]=qs[_0xae42('0x31')](_[_0xae42('0x39')](_0x4e3cc3[_0xae42('0x30')],_0x13fdce[_0xae42('0x31')]),_0x200343);if(_0x4e3cc3[_0xae42('0x30')]['filter']){_0x4387fe[_0xae42('0x38')]=_[_0xae42('0x3a')](_0x4387fe['where'],{'$or':_[_0xae42('0x29')](_0x200343,function(_0x4bae95){if(_0x4bae95[_0xae42('0x2d')]!==_0xae42('0x3b')){var _0x3ad3eb={};_0x3ad3eb[_0x4bae95['name']]={'$like':'%'+_0x4e3cc3[_0xae42('0x30')][_0xae42('0x3c')]+'%'};return _0x3ad3eb;}})});}_0x4387fe=_[_0xae42('0x3a')]({},_0x4387fe,_0x4e3cc3[_0xae42('0x3d')]);var _0x3cd9bb={'where':_0x4387fe[_0xae42('0x38')]};return db['Disposition'][_0xae42('0x1c')](_0x3cd9bb)[_0xae42('0x22')](function(_0x397528){_0x4cfd99[_0xae42('0x1c')]=_0x397528;if(_0x4e3cc3[_0xae42('0x30')][_0xae42('0x3e')]){_0x4387fe[_0xae42('0x3f')]=[{'all':!![]}];}return db['Disposition'][_0xae42('0x40')](_0x4387fe);})[_0xae42('0x22')](function(_0x307ccc){_0x4cfd99['rows']=_0x307ccc;return _0x4cfd99;})[_0xae42('0x22')](respondWithFilteredResult(_0x471170,_0x4387fe))[_0xae42('0x41')](handleError(_0x471170,null));};exports[_0xae42('0x42')]=function(_0x13453c,_0x4d8d83){var _0x12dac5={'raw':!![],'where':{'id':_0x13453c['params']['id']}},_0x4638e8={};_0x4638e8[_0xae42('0x2f')]=_[_0xae42('0x43')](db[_0xae42('0x2a')][_0xae42('0x2b')]);_0x4638e8[_0xae42('0x30')]=_[_0xae42('0x43')](_0x13453c[_0xae42('0x30')]);_0x4638e8[_0xae42('0x31')]=_[_0xae42('0x32')](_0x4638e8[_0xae42('0x2f')],_0x4638e8['query']);_0x12dac5[_0xae42('0x44')]=_[_0xae42('0x32')](_0x4638e8[_0xae42('0x2f')],qs[_0xae42('0x33')](_0x13453c[_0xae42('0x30')][_0xae42('0x33')]));_0x12dac5['attributes']=_0x12dac5[_0xae42('0x44')][_0xae42('0x34')]?_0x12dac5[_0xae42('0x44')]:_0x4638e8[_0xae42('0x2f')];if(_0x13453c['query']['includeAll']){_0x12dac5['include']=[{'all':!![]}];}_0x12dac5=_['merge']({},_0x12dac5,_0x13453c['options']);return db[_0xae42('0x2a')][_0xae42('0x45')](_0x12dac5)['then'](handleEntityNotFound(_0x4d8d83,null))[_0xae42('0x22')](respondWithResult(_0x4d8d83,null))['catch'](handleError(_0x4d8d83,null));};exports[_0xae42('0x46')]=function(_0x97103e,_0xcfa48c){return db['Disposition'][_0xae42('0x46')](_0x97103e[_0xae42('0x47')],{})['then'](function(_0x438576){var _0x13f8ca=_0x97103e[_0xae42('0x48')][_0xae42('0x24')]({'plain':!![]});if(!_0x13f8ca)throw new Error(_0xae42('0x49'));if(_0x13f8ca['role']===_0xae42('0x48')){var _0x1ea517=_0x438576['get']({'plain':!![]});var _0x4dd416='Dispositions';return db[_0xae42('0x4a')]['find']({'where':{'name':_0x4dd416,'userProfileId':_0x13f8ca['userProfileId']},'raw':!![]})[_0xae42('0x22')](function(_0x1be406){if(_0x1be406&&_0x1be406['autoAssociation']===0x0){return db[_0xae42('0x25')]['create']({'name':_0x1ea517[_0xae42('0x27')],'resourceId':_0x1ea517['id'],'type':_0x1be406[_0xae42('0x27')],'sectionId':_0x1be406['id']},{})[_0xae42('0x22')](function(){return _0x438576;});}else{return _0x438576;}})[_0xae42('0x41')](function(_0x55e0d4){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x55e0d4);throw _0x55e0d4;});}return _0x438576;})[_0xae42('0x22')](respondWithResult(_0xcfa48c,0xc9))['catch'](handleError(_0xcfa48c,null));};exports[_0xae42('0x21')]=function(_0x49b1af,_0x5579f0){if(_0x49b1af[_0xae42('0x47')]['id']){delete _0x49b1af['body']['id'];}return db[_0xae42('0x2a')][_0xae42('0x45')]({'where':{'id':_0x49b1af[_0xae42('0x4b')]['id']}})[_0xae42('0x22')](handleEntityNotFound(_0x5579f0,null))[_0xae42('0x22')](saveUpdates(_0x49b1af[_0xae42('0x47')],null))[_0xae42('0x22')](respondWithResult(_0x5579f0,null))['catch'](handleError(_0x5579f0,null));};exports[_0xae42('0x23')]=function(_0x303068,_0x447015){return db['Disposition']['find']({'where':{'id':_0x303068[_0xae42('0x4b')]['id']}})[_0xae42('0x22')](handleEntityNotFound(_0x447015,null))[_0xae42('0x22')](removeEntity(_0x447015,null))[_0xae42('0x41')](handleError(_0x447015,null));};
\ No newline at end of file
index ad51061..365d1a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf309=['name_mail','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./disposition.attributes','exports','define','Disposition','tools_dispositions','name_voice','name','ListId','ChatWebsiteId'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0xf309,0x1b1));var _0x9f30=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xf309[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x9f30('0x0'));var util=require(_0x9f30('0x1'));var logger=require(_0x9f30('0x2'))('api');var moment=require(_0x9f30('0x3'));var BPromise=require(_0x9f30('0x4'));var rp=require(_0x9f30('0x5'));var fs=require('fs');var path=require(_0x9f30('0x6'));var rimraf=require('rimraf');var config=require(_0x9f30('0x7'));var attributes=require(_0x9f30('0x8'));module[_0x9f30('0x9')]=function(_0x5363d3,_0x404c84){return _0x5363d3[_0x9f30('0xa')](_0x9f30('0xb'),attributes,{'tableName':_0x9f30('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x9f30('0xd'),'fields':[_0x9f30('0xe'),_0x9f30('0xf')]},{'unique':!![],'name':'name_chat','fields':[_0x9f30('0xe'),_0x9f30('0x10')]},{'unique':!![],'name':_0x9f30('0x11'),'fields':[_0x9f30('0xe'),'MailAccountId']},{'unique':!![],'name':'name_sms','fields':[_0x9f30('0xe'),_0x9f30('0x12')]},{'unique':!![],'name':_0x9f30('0x13'),'fields':[_0x9f30('0xe'),_0x9f30('0x14')]},{'unique':!![],'name':_0x9f30('0x15'),'fields':['name',_0x9f30('0x16')]},{'unique':!![],'name':_0x9f30('0x17'),'fields':[_0x9f30('0xe'),_0x9f30('0x18')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8d6d=['name','ChatWebsiteId','MailAccountId','name_sms','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','name_voice','name_chat'];(function(_0x54fcef,_0x4b7008){var _0x31bcca=function(_0x5c7da5){while(--_0x5c7da5){_0x54fcef['push'](_0x54fcef['shift']());}};_0x31bcca(++_0x4b7008);}(_0x8d6d,0x1bf));var _0xd8d6=function(_0x13b213,_0x377801){_0x13b213=_0x13b213-0x0;var _0x509cb5=_0x8d6d[_0x13b213];return _0x509cb5;};'use strict';var _=require(_0xd8d6('0x0'));var util=require(_0xd8d6('0x1'));var logger=require(_0xd8d6('0x2'))(_0xd8d6('0x3'));var moment=require(_0xd8d6('0x4'));var BPromise=require(_0xd8d6('0x5'));var rp=require(_0xd8d6('0x6'));var fs=require('fs');var path=require(_0xd8d6('0x7'));var rimraf=require('rimraf');var config=require(_0xd8d6('0x8'));var attributes=require('./disposition.attributes');module[_0xd8d6('0x9')]=function(_0x302b00,_0x40ab83){return _0x302b00[_0xd8d6('0xa')]('Disposition',attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0xd8d6('0xb'),'fields':['name','ListId']},{'unique':!![],'name':_0xd8d6('0xc'),'fields':[_0xd8d6('0xd'),_0xd8d6('0xe')]},{'unique':!![],'name':'name_mail','fields':['name',_0xd8d6('0xf')]},{'unique':!![],'name':_0xd8d6('0x10'),'fields':['name','SmsAccountId']},{'unique':!![],'name':_0xd8d6('0x11'),'fields':[_0xd8d6('0xd'),_0xd8d6('0x12')]},{'unique':!![],'name':_0xd8d6('0x13'),'fields':[_0xd8d6('0xd'),_0xd8d6('0x14')]},{'unique':!![],'name':_0xd8d6('0x15'),'fields':[_0xd8d6('0xd'),_0xd8d6('0x16')]}],'timestamps':!![]});};
\ No newline at end of file
index 0174db1..7c9ac9a 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(_0x19577c,_0x1cd73d){var _0x4e1154=function(_0x4f2a71){while(--_0x4f2a71){_0x19577c['push'](_0x19577c['shift']());}};_0x4e1154(++_0x1cd73d);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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(_0x22e0dd,_0x52b878){var _0x4cb24c=function(_0x7aa261){while(--_0x7aa261){_0x22e0dd['push'](_0x22e0dd['shift']());}};_0x4cb24c(++_0x52b878);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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 f732420..4986386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ee8=['../../components/interaction/service','../../config/environment','./disposition.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','exports','path','connect-timeout','Router'];(function(_0x92fe9e,_0x312448){var _0x1d7484=function(_0x552b8f){while(--_0x552b8f){_0x92fe9e['push'](_0x92fe9e['shift']());}};_0x1d7484(++_0x312448);}(_0x3ee8,0x96));var _0x83ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ee8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x83ee('0x0'));var timeout=require(_0x83ee('0x1'));var express=require('express');var router=express[_0x83ee('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x83ee('0x3'));var config=require(_0x83ee('0x4'));var controller=require(_0x83ee('0x5'));router[_0x83ee('0x6')]('/',auth['isAuthenticated'](),controller[_0x83ee('0x7')]);router['get'](_0x83ee('0x8'),auth[_0x83ee('0x9')](),controller[_0x83ee('0xa')]);router[_0x83ee('0xb')]('/',auth['isAuthenticated'](),controller[_0x83ee('0xc')]);router[_0x83ee('0xd')](_0x83ee('0x8'),auth[_0x83ee('0x9')](),controller[_0x83ee('0xe')]);router[_0x83ee('0xf')](_0x83ee('0x8'),auth[_0x83ee('0x9')](),controller['destroy']);module[_0x83ee('0x10')]=router;
\ No newline at end of file
+var _0xed20=['isAuthenticated','/:id','show','create','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x47941c,_0x20bb58){var _0x46d9d3=function(_0x40d30b){while(--_0x40d30b){_0x47941c['push'](_0x47941c['shift']());}};_0x46d9d3(++_0x20bb58);}(_0xed20,0xce));var _0x0ed2=function(_0x2e45d3,_0x524dd7){_0x2e45d3=_0x2e45d3-0x0;var _0x5abaeb=_0xed20[_0x2e45d3];return _0x5abaeb;};'use strict';var multer=require(_0x0ed2('0x0'));var util=require(_0x0ed2('0x1'));var path=require(_0x0ed2('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ed2('0x3'));var router=express[_0x0ed2('0x4')]();var fs_extra=require(_0x0ed2('0x5'));var auth=require(_0x0ed2('0x6'));var interaction=require(_0x0ed2('0x7'));var config=require(_0x0ed2('0x8'));var controller=require('./disposition.controller');router[_0x0ed2('0x9')]('/',auth[_0x0ed2('0xa')](),controller['index']);router[_0x0ed2('0x9')](_0x0ed2('0xb'),auth[_0x0ed2('0xa')](),controller[_0x0ed2('0xc')]);router['post']('/',auth[_0x0ed2('0xa')](),controller[_0x0ed2('0xd')]);router[_0x0ed2('0xe')](_0x0ed2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x0ed2('0xf')](_0x0ed2('0xb'),auth[_0x0ed2('0xa')](),controller[_0x0ed2('0x10')]);module[_0x0ed2('0x11')]=router;
\ No newline at end of file
index 970e46f..cbd1bba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a4=['12000','14400','v17,v27,v29','INTEGER','SIP','IAX','KHOMP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','setDataValue','mandatoryDispositionPauseId','sequelize','STRING','yes','xCALLY\x20Motion\x20Fax','ENUM','2400','4800','7200','9600'];(function(_0x1bca56,_0x56bc1b){var _0x29cf18=function(_0x22c955){while(--_0x22c955){_0x1bca56['push'](_0x1bca56['shift']());}};_0x29cf18(++_0x56bc1b);}(_0x25a4,0x1eb));var _0x425a=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x25a4[_0x187ee1];return _0x388160;};'use strict';var Sequelize=require(_0x425a('0x0'));module['exports']={'name':{'type':Sequelize[_0x425a('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x425a('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0x425a('0x2'),'no'),'defaultValue':_0x425a('0x2')},'headerinfo':{'type':Sequelize[_0x425a('0x1')],'defaultValue':_0x425a('0x3')},'localstationid':{'type':Sequelize[_0x425a('0x1')],'unique':'localstationid'},'minrate':{'type':Sequelize[_0x425a('0x4')](_0x425a('0x5'),_0x425a('0x6'),_0x425a('0x7'),_0x425a('0x8'),_0x425a('0x9'),_0x425a('0xa')),'defaultValue':_0x425a('0x6')},'maxrate':{'type':Sequelize[_0x425a('0x4')](_0x425a('0x5'),_0x425a('0x6'),_0x425a('0x7'),_0x425a('0x8'),_0x425a('0x9'),'14400'),'defaultValue':_0x425a('0xa')},'modem':{'type':Sequelize[_0x425a('0x1')],'defaultValue':_0x425a('0xb')},'gateway':{'type':Sequelize[_0x425a('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x425a('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x425a('0xc')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x425a('0x4')](_0x425a('0xd'),_0x425a('0xe'),'DADHI',_0x425a('0xf')),'defaultValue':_0x425a('0xd')},'key':{'type':Sequelize[_0x425a('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x425a('0x10');}},'notificationSound':{'type':Sequelize[_0x425a('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x425a('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x425a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x425a('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x425a('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x425a('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x425a('0xc')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x425a('0x11')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x364491){if(!_0x364491)this[_0x425a('0x12')](_0x425a('0x13'),null);this[_0x425a('0x12')]('mandatoryDisposition',_0x364491);}}};
\ No newline at end of file
+var _0xbc83=['xCALLY\x20Motion\x20Fax','localstationid','2400','4800','7200','9600','12000','14400','v17,v27,v29','INTEGER','DADHI','KHOMP','SIP','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','ENUM','yes'];(function(_0x5a51f4,_0x421123){var _0x3bd1ab=function(_0x2c49ca){while(--_0x2c49ca){_0x5a51f4['push'](_0x5a51f4['shift']());}};_0x3bd1ab(++_0x421123);}(_0xbc83,0x13e));var _0x3bc8=function(_0x3bf38d,_0x3aaf9e){_0x3bf38d=_0x3bf38d-0x0;var _0x30fdbe=_0xbc83[_0x3bf38d];return _0x30fdbe;};'use strict';var Sequelize=require('sequelize');module[_0x3bc8('0x0')]={'name':{'type':Sequelize[_0x3bc8('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x3bc8('0x1')]},'ecm':{'type':Sequelize[_0x3bc8('0x2')](_0x3bc8('0x3'),'no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x3bc8('0x1')],'defaultValue':_0x3bc8('0x4')},'localstationid':{'type':Sequelize[_0x3bc8('0x1')],'unique':_0x3bc8('0x5')},'minrate':{'type':Sequelize[_0x3bc8('0x2')](_0x3bc8('0x6'),_0x3bc8('0x7'),_0x3bc8('0x8'),_0x3bc8('0x9'),_0x3bc8('0xa'),'14400'),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0x3bc8('0x2')](_0x3bc8('0x6'),_0x3bc8('0x7'),_0x3bc8('0x8'),_0x3bc8('0x9'),_0x3bc8('0xa'),'14400'),'defaultValue':_0x3bc8('0xb')},'modem':{'type':Sequelize[_0x3bc8('0x1')],'defaultValue':_0x3bc8('0xc')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x3bc8('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x3bc8('0x2')]('SIP','IAX',_0x3bc8('0xe'),_0x3bc8('0xf')),'defaultValue':_0x3bc8('0x10')},'key':{'type':Sequelize[_0x3bc8('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x3bc8('0x11');}},'notificationSound':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3bc8('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3bc8('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3bc8('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3bc8('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0x3bc8('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x1918fc){if(!_0x1918fc)this[_0x3bc8('0x14')](_0x3bc8('0x15'),null);this[_0x3bc8('0x14')](_0x3bc8('0x16'),_0x1918fc);}}};
\ No newline at end of file
index 3fd0e1b..52c7708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e16=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','client','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxAccount,\x20%s,\x20%s','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','destroy','FaxAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','keys','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','Disposition','getDispositions','removeDispositions','ids','addAnswer','FaxAccountId','getAnswers','findOne','CannedAnswer','addInteraction','FaxInteraction','omit','CmContact','User','Owner','internal','Tags','tag','addApplications','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','push','CDR(type)=inbound-fax','Set','ecm','gateway','headerinfo','maxrate','minrate','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','sequelize','VoiceExtension','updateAccountApplications','tech','createdAt','findById','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','List','Contacts','updatedAt','DESC','attachments','server/files/attachments','basename','CheckAfterSend','isNil','from','fax','List\x20not\x20found','out','filename','Messages','spread','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','bluebird'];(function(_0x5180c3,_0x4b35f7){var _0x55c975=function(_0x4746cb){while(--_0x4746cb){_0x5180c3['push'](_0x5180c3['shift']());}};_0x55c975(++_0x4b35f7);}(_0x3e16,0xba));var _0x63e1=function(_0x22835e,_0x14ffec){_0x22835e=_0x22835e-0x0;var _0xb85ef9=_0x3e16[_0x22835e];return _0xb85ef9;};'use strict';var emlformat=require(_0x63e1('0x0'));var rimraf=require(_0x63e1('0x1'));var zipdir=require(_0x63e1('0x2'));var jsonpatch=require(_0x63e1('0x3'));var rp=require(_0x63e1('0x4'));var moment=require('moment');var BPromise=require(_0x63e1('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x63e1('0x6'));var sox=require(_0x63e1('0x7'));var csv=require(_0x63e1('0x8'));var ejs=require(_0x63e1('0x9'));var fs=require('fs');var fs_extra=require(_0x63e1('0xa'));var _=require(_0x63e1('0xb'));var squel=require(_0x63e1('0xc'));var crypto=require(_0x63e1('0xd'));var jsforce=require(_0x63e1('0xe'));var deskjs=require(_0x63e1('0xf'));var toCsv=require(_0x63e1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x63e1('0x10'));var authService=require(_0x63e1('0x11'));var qs=require(_0x63e1('0x12'));var as=require(_0x63e1('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x63e1('0x14'))(_0x63e1('0x15'));var utils=require(_0x63e1('0x16'));var config=require(_0x63e1('0x17'));var licenseUtil=require(_0x63e1('0x18'));var db=require(_0x63e1('0x19'))['db'];config[_0x63e1('0x1a')]=_[_0x63e1('0x1b')](config[_0x63e1('0x1a')],{'host':_0x63e1('0x1c'),'port':0x18eb});var socket=require(_0x63e1('0x1d'))(new Redis(config['redis']));require('./faxAccount.socket')[_0x63e1('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x63e1('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x63e1('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2dc80c,_0x278f91,_0x43fdb5,_0x1fc578){return new BPromise(function(_0x11440e,_0xbe93e1){var _0x24f0fc=_0x1fc578||client;return _0x24f0fc['request'](_0x2dc80c,_0x43fdb5)[_0x63e1('0x20')](function(_0x547cd1){logger[_0x63e1('0x21')]('FaxAccount,\x20%s,\x20%s',_0x278f91,_0x63e1('0x22'));logger[_0x63e1('0x23')](_0x63e1('0x24'),_0x278f91,_0x63e1('0x22'),JSON[_0x63e1('0x25')](_0x547cd1));if(_0x547cd1[_0x63e1('0x26')]){if(_0x547cd1[_0x63e1('0x26')][_0x63e1('0x27')]===0x1f4){logger[_0x63e1('0x26')]('FaxAccount,\x20%s,\x20%s',_0x278f91,_0x547cd1[_0x63e1('0x26')]['message']);return _0xbe93e1(_0x547cd1[_0x63e1('0x26')][_0x63e1('0x28')]);}logger[_0x63e1('0x26')]('FaxAccount,\x20%s,\x20%s',_0x278f91,_0x547cd1[_0x63e1('0x26')]['message']);return _0x11440e(_0x547cd1[_0x63e1('0x26')][_0x63e1('0x28')]);}else{logger[_0x63e1('0x21')](_0x63e1('0x29'),_0x278f91,_0x63e1('0x22'));_0x11440e(_0x547cd1[_0x63e1('0x2a')]['message']);}})[_0x63e1('0x2b')](function(_0x4f06d4){logger[_0x63e1('0x26')]('FaxAccount,\x20%s,\x20%s',_0x278f91,_0x4f06d4);_0xbe93e1(_0x4f06d4);});});}function respondWithStatusCode(_0x315fa2,_0x35cfb0){_0x35cfb0=_0x35cfb0||0xcc;return function(_0x17cb1e){if(_0x17cb1e){return _0x315fa2[_0x63e1('0x2c')](_0x35cfb0);}return _0x315fa2['status'](_0x35cfb0)[_0x63e1('0x2d')]();};}function respondWithResult(_0x348af3,_0x29e3de){_0x29e3de=_0x29e3de||0xc8;return function(_0x440f37){if(_0x440f37){return _0x348af3[_0x63e1('0x2e')](_0x29e3de)[_0x63e1('0x2f')](_0x440f37);}};}function respondWithFilteredResult(_0x3020db,_0x38c7ac){return function(_0x5f5187){if(_0x5f5187){var _0x1cd118=typeof _0x38c7ac[_0x63e1('0x30')]==='undefined'&&typeof _0x38c7ac[_0x63e1('0x31')]===_0x63e1('0x32');var _0x444f01=_0x5f5187[_0x63e1('0x33')];var _0x229713=_0x1cd118?0x0:_0x38c7ac[_0x63e1('0x30')];var _0x261257=_0x1cd118?_0x5f5187['count']:_0x38c7ac[_0x63e1('0x30')]+_0x38c7ac[_0x63e1('0x31')];var _0x25ea87;if(_0x261257>=_0x444f01){_0x261257=_0x444f01;_0x25ea87=0xc8;}else{_0x25ea87=0xce;}_0x3020db[_0x63e1('0x2e')](_0x25ea87);return _0x3020db[_0x63e1('0x34')](_0x63e1('0x35'),_0x229713+'-'+_0x261257+'/'+_0x444f01)[_0x63e1('0x2f')](_0x5f5187);}return null;};}function patchUpdates(_0x3a1fa7){return function(_0xd98424){try{jsonpatch[_0x63e1('0x36')](_0xd98424,_0x3a1fa7,!![]);}catch(_0x49c4ec){return BPromise[_0x63e1('0x37')](_0x49c4ec);}return _0xd98424['save']();};}function saveUpdates(_0x38ef20,_0x9a29b8){return function(_0x42b05c){if(_0x42b05c){return _0x42b05c['update'](_0x38ef20)[_0x63e1('0x20')](function(_0x4e24bf){return _0x4e24bf;});}return null;};}function removeEntity(_0x518d89,_0x5e038d){return function(_0x1a9584){if(_0x1a9584){return _0x1a9584[_0x63e1('0x38')]()[_0x63e1('0x20')](function(){var _0x4876f8=_0x1a9584['get']({'plain':!![]});var _0x2b7876=_0x63e1('0x39');return db[_0x63e1('0x3a')][_0x63e1('0x38')]({'where':{'type':_0x2b7876,'resourceId':_0x4876f8['id']}})[_0x63e1('0x20')](function(){return _0x1a9584;});})[_0x63e1('0x20')](function(){_0x518d89[_0x63e1('0x2e')](0xcc)[_0x63e1('0x2d')]();});}};}function handleEntityNotFound(_0x459cf2,_0x2fdadd){return function(_0x192deb){if(!_0x192deb){_0x459cf2['sendStatus'](0x194);}return _0x192deb;};}function handleError(_0x325fbb,_0x592838){_0x592838=_0x592838||0x1f4;return function(_0x7af0ad){logger['error'](_0x7af0ad[_0x63e1('0x3b')]);if(_0x7af0ad['name']){delete _0x7af0ad[_0x63e1('0x3c')];}_0x325fbb['status'](_0x592838)['send'](_0x7af0ad);};}exports[_0x63e1('0x3d')]=function(_0x3db682,_0x38075e){var _0x477359={'include':[{'model':db[_0x63e1('0x3e')],'as':_0x63e1('0x3f')}]},_0x44cd00={},_0x5868a9={'count':0x0,'rows':[]};var _0x48a5d8=_[_0x63e1('0x40')](db[_0x63e1('0x41')][_0x63e1('0x42')],function(_0x47b4fa){return{'name':_0x47b4fa[_0x63e1('0x43')],'type':_0x47b4fa[_0x63e1('0x44')][_0x63e1('0x45')]};});_0x44cd00[_0x63e1('0x46')]=_[_0x63e1('0x40')](_0x48a5d8,_0x63e1('0x3c'));_0x44cd00['query']=_['keys'](_0x3db682[_0x63e1('0x47')]);_0x44cd00[_0x63e1('0x48')]=_[_0x63e1('0x49')](_0x44cd00[_0x63e1('0x46')],_0x44cd00[_0x63e1('0x47')]);_0x477359['attributes']=_[_0x63e1('0x49')](_0x44cd00[_0x63e1('0x46')],qs['fields'](_0x3db682[_0x63e1('0x47')][_0x63e1('0x4a')]));_0x477359[_0x63e1('0x4b')]=_0x477359[_0x63e1('0x4b')][_0x63e1('0x4c')]?_0x477359[_0x63e1('0x4b')]:_0x44cd00['model'];if(!_0x3db682[_0x63e1('0x47')][_0x63e1('0x4d')](_0x63e1('0x4e'))){_0x477359[_0x63e1('0x31')]=qs[_0x63e1('0x31')](_0x3db682[_0x63e1('0x47')]['limit']);_0x477359[_0x63e1('0x30')]=qs['offset'](_0x3db682['query'][_0x63e1('0x30')]);}_0x477359[_0x63e1('0x4f')]=qs[_0x63e1('0x50')](_0x3db682[_0x63e1('0x47')]['sort']);_0x477359[_0x63e1('0x51')]=qs[_0x63e1('0x48')](_[_0x63e1('0x52')](_0x3db682[_0x63e1('0x47')],_0x44cd00[_0x63e1('0x48')]),_0x48a5d8);if(_0x3db682[_0x63e1('0x47')][_0x63e1('0x53')]){_0x477359['where']=_['merge'](_0x477359[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0x48a5d8,function(_0x2202ad){if(_0x2202ad[_0x63e1('0x44')]!==_0x63e1('0x54')){var _0x3eac2b={};_0x3eac2b[_0x2202ad['name']]={'$like':'%'+_0x3db682[_0x63e1('0x47')][_0x63e1('0x53')]+'%'};return _0x3eac2b;}})});}_0x477359=_[_0x63e1('0x55')]({},_0x477359,_0x3db682[_0x63e1('0x56')]);var _0x42393b={'where':_0x477359[_0x63e1('0x51')]};return db['FaxAccount'][_0x63e1('0x33')](_0x42393b)[_0x63e1('0x20')](function(_0x4d8ab3){_0x5868a9[_0x63e1('0x33')]=_0x4d8ab3;if(_0x3db682[_0x63e1('0x47')][_0x63e1('0x57')]){_0x477359['include']=[{'all':!![]}];}return db[_0x63e1('0x41')][_0x63e1('0x58')](_0x477359);})[_0x63e1('0x20')](function(_0x531583){_0x5868a9[_0x63e1('0x59')]=_0x531583;return _0x5868a9;})[_0x63e1('0x20')](respondWithFilteredResult(_0x38075e,_0x477359))[_0x63e1('0x2b')](handleError(_0x38075e,null));};exports[_0x63e1('0x5a')]=function(_0x2228f0,_0x10880c){var _0x322fb3={'raw':![],'where':{'id':_0x2228f0[_0x63e1('0x5b')]['id']},'include':[{'model':db[_0x63e1('0x3e')],'as':_0x63e1('0x3f')}]},_0x39029c={};_0x39029c[_0x63e1('0x46')]=_[_0x63e1('0x5c')](db[_0x63e1('0x41')]['rawAttributes']);_0x39029c[_0x63e1('0x47')]=_[_0x63e1('0x5c')](_0x2228f0['query']);_0x39029c['filters']=_[_0x63e1('0x49')](_0x39029c[_0x63e1('0x46')],_0x39029c[_0x63e1('0x47')]);_0x322fb3[_0x63e1('0x4b')]=_[_0x63e1('0x49')](_0x39029c[_0x63e1('0x46')],qs[_0x63e1('0x4a')](_0x2228f0[_0x63e1('0x47')][_0x63e1('0x4a')]));_0x322fb3[_0x63e1('0x4b')]=_0x322fb3['attributes'][_0x63e1('0x4c')]?_0x322fb3[_0x63e1('0x4b')]:_0x39029c[_0x63e1('0x46')];if(_0x2228f0['query'][_0x63e1('0x57')]){_0x322fb3[_0x63e1('0x5d')]=[{'all':!![]}];}_0x322fb3=_['merge']({},_0x322fb3,_0x2228f0[_0x63e1('0x56')]);return db[_0x63e1('0x41')][_0x63e1('0x5e')](_0x322fb3)[_0x63e1('0x20')](handleEntityNotFound(_0x10880c,null))[_0x63e1('0x20')](respondWithResult(_0x10880c,null))['catch'](handleError(_0x10880c,null));};exports[_0x63e1('0x5f')]=function(_0x444e9c,_0x22446f){return db['FaxAccount'][_0x63e1('0x5f')](_0x444e9c[_0x63e1('0x60')],{})['then'](function(_0x431197){var _0x26c4b4=_0x444e9c[_0x63e1('0x61')][_0x63e1('0x62')]({'plain':!![]});if(!_0x26c4b4)throw new Error(_0x63e1('0x63'));if(_0x26c4b4[_0x63e1('0x64')]===_0x63e1('0x61')){var _0x17f3d1=_0x431197['get']({'plain':!![]});var _0x475fe4=_0x63e1('0x39');return db[_0x63e1('0x65')][_0x63e1('0x5e')]({'where':{'name':_0x475fe4,'userProfileId':_0x26c4b4['userProfileId']},'raw':!![]})[_0x63e1('0x20')](function(_0x276662){if(_0x276662&&_0x276662[_0x63e1('0x66')]===0x0){return db['UserProfileResource'][_0x63e1('0x5f')]({'name':_0x17f3d1[_0x63e1('0x3c')],'resourceId':_0x17f3d1['id'],'type':_0x276662[_0x63e1('0x3c')],'sectionId':_0x276662['id']},{})['then'](function(){return _0x431197;});}else{return _0x431197;}})['catch'](function(_0x3ecef3){logger[_0x63e1('0x26')](_0x63e1('0x67'),_0x3ecef3);throw _0x3ecef3;});}return _0x431197;})['then'](respondWithResult(_0x22446f,0xc9))[_0x63e1('0x2b')](handleError(_0x22446f,null));};exports[_0x63e1('0x68')]=function(_0x20d900,_0x2cb1f9){if(_0x20d900[_0x63e1('0x60')]['id']){delete _0x20d900[_0x63e1('0x60')]['id'];}return db[_0x63e1('0x41')][_0x63e1('0x5e')]({'where':{'id':_0x20d900[_0x63e1('0x5b')]['id']},'include':[{'model':db[_0x63e1('0x3e')],'as':_0x63e1('0x3f')}]})[_0x63e1('0x20')](handleEntityNotFound(_0x2cb1f9,null))[_0x63e1('0x20')](saveUpdates(_0x20d900[_0x63e1('0x60')],null))[_0x63e1('0x20')](respondWithResult(_0x2cb1f9,null))['catch'](handleError(_0x2cb1f9,null));};exports[_0x63e1('0x38')]=function(_0x5ec0e1,_0xa25caa){return db[_0x63e1('0x41')][_0x63e1('0x5e')]({'where':{'id':_0x5ec0e1[_0x63e1('0x5b')]['id']}})['then'](handleEntityNotFound(_0xa25caa,null))[_0x63e1('0x20')](removeEntity(_0xa25caa,null))['catch'](handleError(_0xa25caa,null));};exports[_0x63e1('0x69')]=function(_0x4ea51b,_0x274b1b){return db[_0x63e1('0x41')]['describe']()[_0x63e1('0x20')](respondWithResult(_0x274b1b,null))['catch'](handleError(_0x274b1b,null));};exports[_0x63e1('0x6a')]=function(_0x2eb9a7,_0x3cd8ac,_0x2fa3ac){if(_0x2eb9a7[_0x63e1('0x60')]['id']){delete _0x2eb9a7[_0x63e1('0x60')]['id'];}return db[_0x63e1('0x41')]['find']({'where':{'id':_0x2eb9a7[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x3cd8ac,null))['then'](function(_0xf60d25){if(_0xf60d25){_0x2eb9a7[_0x63e1('0x60')]['FaxAccountId']=_0xf60d25['id'];return db[_0x63e1('0x6b')][_0x63e1('0x5f')](_0x2eb9a7[_0x63e1('0x60')]);}})[_0x63e1('0x20')](respondWithResult(_0x3cd8ac,null))[_0x63e1('0x2b')](handleError(_0x3cd8ac,null));};exports[_0x63e1('0x6c')]=function(_0x310f8a,_0x374033,_0x4d475f){var _0x3284d9={'raw':![],'where':{}};var _0x265f36={};var _0x32ea0b={'count':0x0,'rows':[]};return db[_0x63e1('0x41')]['findOne']({'where':{'id':_0x310f8a[_0x63e1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x374033,null))[_0x63e1('0x20')](function(_0x5ab228){if(_0x5ab228){_0x265f36[_0x63e1('0x46')]=_[_0x63e1('0x5c')](db['Disposition'][_0x63e1('0x42')]);_0x265f36[_0x63e1('0x47')]=_[_0x63e1('0x5c')](_0x310f8a['query']);_0x265f36[_0x63e1('0x48')]=_[_0x63e1('0x49')](_0x265f36[_0x63e1('0x46')],_0x265f36[_0x63e1('0x47')]);_0x3284d9[_0x63e1('0x4b')]=_['intersection'](_0x265f36[_0x63e1('0x46')],qs[_0x63e1('0x4a')](_0x310f8a[_0x63e1('0x47')]['fields']));_0x3284d9['attributes']=_0x3284d9[_0x63e1('0x4b')][_0x63e1('0x4c')]?_0x3284d9[_0x63e1('0x4b')]:_0x265f36['model'];if(!_0x310f8a[_0x63e1('0x47')]['hasOwnProperty'](_0x63e1('0x4e'))){_0x3284d9['limit']=qs['limit'](_0x310f8a[_0x63e1('0x47')][_0x63e1('0x31')]);_0x3284d9[_0x63e1('0x30')]=qs[_0x63e1('0x30')](_0x310f8a[_0x63e1('0x47')][_0x63e1('0x30')]);}_0x3284d9['order']=qs['sort'](_0x310f8a[_0x63e1('0x47')][_0x63e1('0x50')]);_0x3284d9[_0x63e1('0x51')]=qs[_0x63e1('0x48')](_['pick'](_0x310f8a[_0x63e1('0x47')],_0x265f36[_0x63e1('0x48')]));_0x3284d9['where']['FaxAccountId']=_0x5ab228['id'];if(_0x310f8a[_0x63e1('0x47')][_0x63e1('0x53')]){_0x3284d9[_0x63e1('0x51')]=_[_0x63e1('0x55')](_0x3284d9[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0x3284d9[_0x63e1('0x4b')],function(_0x402175){var _0x1ded1c={};_0x1ded1c[_0x402175]={'$like':'%'+_0x310f8a[_0x63e1('0x47')][_0x63e1('0x53')]+'%'};return _0x1ded1c;})});}_0x3284d9=_[_0x63e1('0x55')]({},_0x3284d9,_0x310f8a[_0x63e1('0x56')]);return db[_0x63e1('0x6b')][_0x63e1('0x33')]({'where':_0x3284d9[_0x63e1('0x51')]})[_0x63e1('0x20')](function(_0x3341fc){_0x32ea0b[_0x63e1('0x33')]=_0x3341fc;if(_0x310f8a[_0x63e1('0x47')][_0x63e1('0x57')]){_0x3284d9[_0x63e1('0x5d')]=[{'all':!![]}];}return db[_0x63e1('0x6b')][_0x63e1('0x58')](_0x3284d9);})['then'](function(_0x1cf4b9){_0x32ea0b[_0x63e1('0x59')]=_0x1cf4b9;return _0x32ea0b;});}})[_0x63e1('0x20')](respondWithFilteredResult(_0x374033,_0x3284d9))[_0x63e1('0x2b')](handleError(_0x374033,null));};exports[_0x63e1('0x6d')]=function(_0xbd6418,_0x3e5f91,_0x389f6a){return db[_0x63e1('0x41')][_0x63e1('0x5e')]({'where':{'id':_0xbd6418['params']['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x3e5f91,null))[_0x63e1('0x20')](function(_0x1b5cb4){if(_0x1b5cb4){return _0x1b5cb4['removeDispositions'](_0xbd6418[_0x63e1('0x47')][_0x63e1('0x6e')]);}})['then'](respondWithStatusCode(_0x3e5f91,null))[_0x63e1('0x2b')](handleError(_0x3e5f91,null));};exports[_0x63e1('0x6f')]=function(_0x14b100,_0x10dcdc,_0x3951d2){if(_0x14b100[_0x63e1('0x60')]['id']){delete _0x14b100['body']['id'];}return db[_0x63e1('0x41')][_0x63e1('0x5e')]({'where':{'id':_0x14b100[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x10dcdc,null))['then'](function(_0x377485){if(_0x377485){_0x14b100['body'][_0x63e1('0x70')]=_0x377485['id'];return db['CannedAnswer'][_0x63e1('0x5f')](_0x14b100[_0x63e1('0x60')]);}})[_0x63e1('0x20')](respondWithResult(_0x10dcdc,null))['catch'](handleError(_0x10dcdc,null));};exports[_0x63e1('0x71')]=function(_0x49339c,_0xbc44ce,_0x41eec5){var _0x1b5ebd={'raw':![],'where':{}};var _0x3929cb={};var _0x20f3de={'count':0x0,'rows':[]};return db[_0x63e1('0x41')][_0x63e1('0x72')]({'where':{'id':_0x49339c[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0xbc44ce,null))[_0x63e1('0x20')](function(_0x331999){if(_0x331999){_0x3929cb[_0x63e1('0x46')]=_['keys'](db['CannedAnswer'][_0x63e1('0x42')]);_0x3929cb['query']=_[_0x63e1('0x5c')](_0x49339c[_0x63e1('0x47')]);_0x3929cb[_0x63e1('0x48')]=_[_0x63e1('0x49')](_0x3929cb[_0x63e1('0x46')],_0x3929cb[_0x63e1('0x47')]);_0x1b5ebd[_0x63e1('0x4b')]=_[_0x63e1('0x49')](_0x3929cb[_0x63e1('0x46')],qs['fields'](_0x49339c[_0x63e1('0x47')]['fields']));_0x1b5ebd[_0x63e1('0x4b')]=_0x1b5ebd[_0x63e1('0x4b')][_0x63e1('0x4c')]?_0x1b5ebd[_0x63e1('0x4b')]:_0x3929cb['model'];if(!_0x49339c[_0x63e1('0x47')]['hasOwnProperty']('nolimit')){_0x1b5ebd['limit']=qs[_0x63e1('0x31')](_0x49339c['query'][_0x63e1('0x31')]);_0x1b5ebd['offset']=qs['offset'](_0x49339c['query'][_0x63e1('0x30')]);}_0x1b5ebd[_0x63e1('0x4f')]=qs[_0x63e1('0x50')](_0x49339c[_0x63e1('0x47')][_0x63e1('0x50')]);_0x1b5ebd['where']=qs['filters'](_[_0x63e1('0x52')](_0x49339c[_0x63e1('0x47')],_0x3929cb['filters']));_0x1b5ebd['where'][_0x63e1('0x70')]=_0x331999['id'];if(_0x49339c[_0x63e1('0x47')][_0x63e1('0x53')]){_0x1b5ebd[_0x63e1('0x51')]=_[_0x63e1('0x55')](_0x1b5ebd[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0x1b5ebd['attributes'],function(_0x276988){var _0x5481ba={};_0x5481ba[_0x276988]={'$like':'%'+_0x49339c[_0x63e1('0x47')][_0x63e1('0x53')]+'%'};return _0x5481ba;})});}_0x1b5ebd=_[_0x63e1('0x55')]({},_0x1b5ebd,_0x49339c[_0x63e1('0x56')]);return db['CannedAnswer'][_0x63e1('0x33')]({'where':_0x1b5ebd[_0x63e1('0x51')]})[_0x63e1('0x20')](function(_0x4ba2d3){_0x20f3de['count']=_0x4ba2d3;if(_0x49339c['query']['includeAll']){_0x1b5ebd[_0x63e1('0x5d')]=[{'all':!![]}];}return db[_0x63e1('0x73')][_0x63e1('0x58')](_0x1b5ebd);})['then'](function(_0x41a8c2){_0x20f3de[_0x63e1('0x59')]=_0x41a8c2;return _0x20f3de;});}})[_0x63e1('0x20')](respondWithFilteredResult(_0xbc44ce,_0x1b5ebd))[_0x63e1('0x2b')](handleError(_0xbc44ce,null));};exports['removeAnswers']=function(_0x454445,_0x392a4b,_0x4419e3){return db[_0x63e1('0x41')][_0x63e1('0x5e')]({'where':{'id':_0x454445['params']['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x392a4b,null))[_0x63e1('0x20')](function(_0x56b993){if(_0x56b993){return _0x56b993['removeAnswers'](_0x454445['query']['ids']);}})['then'](respondWithStatusCode(_0x392a4b,null))['catch'](handleError(_0x392a4b,null));};exports[_0x63e1('0x74')]=function(_0x3d582d,_0x19beee,_0xaf204){return db[_0x63e1('0x75')][_0x63e1('0x5e')]({'where':{'id':_0x3d582d[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x19beee,null))[_0x63e1('0x20')](function(_0x212e8b){if(_0x212e8b){return _0x212e8b[_0x63e1('0x74')](_0x3d582d[_0x63e1('0x60')]['ids'],_[_0x63e1('0x76')](_0x3d582d[_0x63e1('0x60')],[_0x63e1('0x6e'),'id'])||{});}})[_0x63e1('0x20')](respondWithResult(_0x19beee,null))[_0x63e1('0x2b')](handleError(_0x19beee,null));};exports['getInteractions']=function(_0x43f85c,_0x2ef015,_0x50ec46){var _0xf9dc47={'raw':![],'where':{}};var _0x31a116={};var _0x5228d1={'count':0x0,'rows':[]};return db[_0x63e1('0x41')][_0x63e1('0x72')]({'where':{'id':_0x43f85c[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x2ef015,null))['then'](function(_0x13c9b9){if(_0x13c9b9){_0x31a116[_0x63e1('0x46')]=_['keys'](db[_0x63e1('0x75')][_0x63e1('0x42')]);_0x31a116['query']=_[_0x63e1('0x5c')](_0x43f85c[_0x63e1('0x47')]);_0x31a116[_0x63e1('0x48')]=_[_0x63e1('0x49')](_0x31a116[_0x63e1('0x46')],_0x31a116[_0x63e1('0x47')]);_0xf9dc47[_0x63e1('0x4b')]=_[_0x63e1('0x49')](_0x31a116[_0x63e1('0x46')],qs[_0x63e1('0x4a')](_0x43f85c[_0x63e1('0x47')][_0x63e1('0x4a')]));_0xf9dc47[_0x63e1('0x4b')]=_0xf9dc47['attributes']['length']?_0xf9dc47['attributes']:_0x31a116[_0x63e1('0x46')];if(!_0x43f85c['query'][_0x63e1('0x4d')]('nolimit')){_0xf9dc47['limit']=qs['limit'](_0x43f85c[_0x63e1('0x47')]['limit']);_0xf9dc47[_0x63e1('0x30')]=qs[_0x63e1('0x30')](_0x43f85c[_0x63e1('0x47')]['offset']);}_0xf9dc47[_0x63e1('0x4f')]=qs[_0x63e1('0x50')](_0x43f85c['query'][_0x63e1('0x50')]);_0xf9dc47[_0x63e1('0x51')]=qs['filters'](_[_0x63e1('0x52')](_0x43f85c[_0x63e1('0x47')],_0x31a116[_0x63e1('0x48')]));_0xf9dc47[_0x63e1('0x51')][_0x63e1('0x70')]=_0x13c9b9['id'];if(_0x43f85c[_0x63e1('0x47')]['filter']){_0xf9dc47[_0x63e1('0x51')]=_[_0x63e1('0x55')](_0xf9dc47[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0xf9dc47[_0x63e1('0x4b')],function(_0x18ef74){var _0x1376f2={};_0x1376f2[_0x18ef74]={'$like':'%'+_0x43f85c[_0x63e1('0x47')][_0x63e1('0x53')]+'%'};return _0x1376f2;})});}_0xf9dc47=_[_0x63e1('0x55')]({},_0xf9dc47,_0x43f85c[_0x63e1('0x56')]);return db[_0x63e1('0x75')][_0x63e1('0x33')]({'where':_0xf9dc47['where']})[_0x63e1('0x20')](function(_0x2a4ffb){_0x5228d1[_0x63e1('0x33')]=_0x2a4ffb;if(_0x43f85c[_0x63e1('0x47')][_0x63e1('0x57')]){_0xf9dc47[_0x63e1('0x5d')]=[{'model':db[_0x63e1('0x77')],'as':'Contact','required':![]},{'model':db[_0x63e1('0x78')],'as':_0x63e1('0x79'),'attributes':[_0x63e1('0x3c'),'fullname',_0x63e1('0x7a')],'required':![]},{'model':db['Tag'],'as':_0x63e1('0x7b'),'attributes':['id',_0x63e1('0x3c'),'color'],'where':_0x43f85c[_0x63e1('0x47')]['tag']?{'id':_0x43f85c[_0x63e1('0x47')][_0x63e1('0x7c')]}:undefined,'required':_0x43f85c['query'][_0x63e1('0x7c')]?!![]:![]}];}return db[_0x63e1('0x75')][_0x63e1('0x58')](_0xf9dc47);})[_0x63e1('0x20')](function(_0x59d2d2){_0x5228d1[_0x63e1('0x59')]=_0x59d2d2;return _0x5228d1;});}})[_0x63e1('0x20')](respondWithFilteredResult(_0x2ef015,_0xf9dc47))[_0x63e1('0x2b')](handleError(_0x2ef015,null));};exports[_0x63e1('0x7d')]=function(_0x2fee2c,_0x3cf160,_0x3087e8){return db[_0x63e1('0x41')]['findOne']({'where':{'id':_0x2fee2c[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x3cf160,null))[_0x63e1('0x20')](function(_0x12c199){if(_0x12c199){return db['sequelize'][_0x63e1('0x7e')](function(_0x1f391c){return db[_0x63e1('0x7f')][_0x63e1('0x38')]({'where':{'FaxAccountId':_0x2fee2c[_0x63e1('0x5b')]['id']},'transaction':_0x1f391c})[_0x63e1('0x20')](function(_0x2471b5){var _0x3a2720=_[_0x63e1('0x40')](_0x2fee2c['body'],function(_0x5f3372){_0x5f3372['FaxAccountId']=_0x2fee2c[_0x63e1('0x5b')]['id'];return _0x5f3372;});return db[_0x63e1('0x7f')][_0x63e1('0x80')](_0x3a2720,{'transaction':_0x1f391c});});})[_0x63e1('0x20')](function(){return db[_0x63e1('0x7f')][_0x63e1('0x81')]({'where':{'FaxAccountId':_0x2fee2c[_0x63e1('0x5b')]['id']},'order':_0x63e1('0x82')});});}})[_0x63e1('0x20')](respondWithResult(_0x3cf160,null))['catch'](handleError(_0x3cf160,null));};exports[_0x63e1('0x83')]=function(_0x3c586b,_0x2b452a,_0x58b7d9){var _0x3a3f95={};var _0x1b2b8c={};var _0x1347f9;var _0x36889f;return db[_0x63e1('0x41')][_0x63e1('0x72')]({'where':{'id':_0x3c586b[_0x63e1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x2b452a,null))[_0x63e1('0x20')](function(_0x2c73fe){if(_0x2c73fe){_0x1347f9=_0x2c73fe;_0x1b2b8c[_0x63e1('0x46')]=_[_0x63e1('0x5c')](db[_0x63e1('0x7f')]['rawAttributes']);_0x1b2b8c['query']=_[_0x63e1('0x5c')](_0x3c586b[_0x63e1('0x47')]);_0x1b2b8c[_0x63e1('0x48')]=_[_0x63e1('0x49')](_0x1b2b8c[_0x63e1('0x46')],_0x1b2b8c[_0x63e1('0x47')]);_0x3a3f95[_0x63e1('0x4b')]=_[_0x63e1('0x49')](_0x1b2b8c[_0x63e1('0x46')],qs[_0x63e1('0x4a')](_0x3c586b[_0x63e1('0x47')]['fields']));_0x3a3f95[_0x63e1('0x4b')]=_0x3a3f95[_0x63e1('0x4b')]['length']?_0x3a3f95['attributes']:_0x1b2b8c[_0x63e1('0x46')];_0x3a3f95[_0x63e1('0x4f')]=qs[_0x63e1('0x50')](_0x3c586b[_0x63e1('0x47')]['sort']);_0x3a3f95['where']=qs[_0x63e1('0x48')](_[_0x63e1('0x52')](_0x3c586b[_0x63e1('0x47')],_0x1b2b8c[_0x63e1('0x48')]));if(_0x3c586b['query'][_0x63e1('0x53')]){_0x3a3f95[_0x63e1('0x51')]=_[_0x63e1('0x55')](_0x3a3f95[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0x3a3f95[_0x63e1('0x4b')],function(_0x291656){var _0x1284d8={};_0x1284d8[_0x291656]={'$like':'%'+_0x3c586b[_0x63e1('0x47')][_0x63e1('0x53')]+'%'};return _0x1284d8;})});}_0x3a3f95=_[_0x63e1('0x55')]({},_0x3a3f95,_0x3c586b[_0x63e1('0x56')]);return _0x1347f9[_0x63e1('0x83')](_0x3a3f95);}})[_0x63e1('0x20')](function(_0x5b9046){if(_0x5b9046){_0x36889f=_0x5b9046[_0x63e1('0x4c')];if(!_0x3c586b[_0x63e1('0x47')][_0x63e1('0x4d')](_0x63e1('0x4e'))){_0x3a3f95[_0x63e1('0x31')]=qs['limit'](_0x3c586b['query']['limit']);_0x3a3f95[_0x63e1('0x30')]=qs['offset'](_0x3c586b[_0x63e1('0x47')][_0x63e1('0x30')]);}return _0x1347f9[_0x63e1('0x83')](_0x3a3f95);}})[_0x63e1('0x20')](function(_0x287c07){if(_0x287c07){return _0x287c07?{'count':_0x36889f,'rows':_0x287c07}:null;}})[_0x63e1('0x20')](respondWithResult(_0x2b452a,null))[_0x63e1('0x2b')](handleError(_0x2b452a,null));};function Extension(_0x1b4940,_0x3e9ebe,_0xabb149,_0x38df93){this[_0x63e1('0x84')]=_0x63e1('0x85');this[_0x63e1('0x86')]=_0x1b4940[_0x63e1('0x87')];this[_0x63e1('0x88')]=_0x38df93;this['type']=_0x63e1('0x89');this[_0x63e1('0x8a')]=_0x63e1('0x8b');this[_0x63e1('0x70')]=_0x1b4940['id'];this['priority']=_0x3e9ebe;this['appdata']=_0xabb149;}function createExtensionsReciveFax(_0x3a21ac){var _0x22b591=0x1;var _0x1f868a=[];_0x1f868a['push'](new Extension(_0x3a21ac,_0x22b591,'','Answer'));_0x22b591+=0x1;_0x1f868a[_0x63e1('0x8c')](new Extension(_0x3a21ac,_0x22b591,_0x63e1('0x8d'),_0x63e1('0x8e')));_0x22b591+=0x1;for(var _0x1ac7cd in _0x3a21ac){if(_0x3a21ac['hasOwnProperty'](_0x1ac7cd)&&(_0x1ac7cd===_0x63e1('0x8f')||_0x1ac7cd===_0x63e1('0x87')||_0x1ac7cd===_0x63e1('0x90')||_0x1ac7cd==='faxdetect'||_0x1ac7cd===_0x63e1('0x91')||_0x1ac7cd===_0x63e1('0x92')||_0x1ac7cd===_0x63e1('0x93')||_0x1ac7cd==='modem'||_0x1ac7cd==='t38timeout')){_0x1f868a[_0x63e1('0x8c')](new Extension(_0x3a21ac,_0x22b591,_0x63e1('0x94')+_0x1ac7cd+')='+_0x3a21ac[_0x1ac7cd],_0x63e1('0x8e')));_0x22b591+=0x1;}}_0x1f868a[_0x63e1('0x8c')](new Extension(_0x3a21ac,_0x22b591,'6',_0x63e1('0x95')));_0x22b591+=0x1;_0x1f868a['push'](new Extension(_0x3a21ac,_0x22b591,_0x63e1('0x96'),_0x63e1('0x97')));_0x22b591=0x0;return _0x1f868a;}exports[_0x63e1('0x98')]=function(_0x1f1a73,_0xd4c946,_0x39e00e){var _0x4eaf10;return db[_0x63e1('0x99')][_0x63e1('0x7e')](function(_0x23cac1){return db[_0x63e1('0x41')][_0x63e1('0x5f')](_0x1f1a73['body'],{'transaction':_0x23cac1})[_0x63e1('0x20')](function(_0x3244b2){_0x4eaf10=_0x3244b2['get']({'plain':!![]});return db[_0x63e1('0x9a')]['bulkCreate'](createExtensionsReciveFax(_0x4eaf10),{'transaction':_0x23cac1});});})['then'](function(){return _0x4eaf10;})['then'](respondWithResult(_0xd4c946,null))[_0x63e1('0x2b')](handleError(_0xd4c946,null));};exports[_0x63e1('0x9b')]=function(_0x26a33b,_0x359b3c,_0x55e1ec){var _0x4c7836;return db[_0x63e1('0x99')][_0x63e1('0x7e')](function(_0x3349af){return db[_0x63e1('0x41')][_0x63e1('0x68')](_0x26a33b[_0x63e1('0x60')],{'where':{'id':_0x26a33b[_0x63e1('0x60')]['id']},'transaction':_0x3349af})[_0x63e1('0x20')](function(_0x1bb34c){return db['VoiceExtension']['destroy']({'where':{'FaxAccountId':_0x26a33b['body']['id']},'transaction':_0x3349af})[_0x63e1('0x20')](function(_0x437fac){return db['VoiceExtension'][_0x63e1('0x80')](createExtensionsReciveFax(_['omit'](_0x26a33b[_0x63e1('0x60')],[_0x63e1('0x9c'),_0x63e1('0x45'),_0x63e1('0x9d'),'updatedAt','TrunkId','ListId'])),{'transaction':_0x3349af});});});})[_0x63e1('0x20')](function(){return db['FaxAccount'][_0x63e1('0x9e')](_0x26a33b[_0x63e1('0x60')]['id']);})[_0x63e1('0x20')](respondWithResult(_0x359b3c,null))[_0x63e1('0x2b')](handleError(_0x359b3c,null));};exports['getMessages']=function(_0x327e70,_0x5b716b,_0x5be2b7){var _0x399d55={'raw':!![],'where':{}};var _0x31405f={};var _0x5659cf={'count':0x0,'rows':[]};return db['FaxAccount'][_0x63e1('0x72')]({'where':{'id':_0x327e70[_0x63e1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5b716b,null))['then'](function(_0x58d3c3){if(_0x58d3c3){_0x31405f[_0x63e1('0x46')]=_[_0x63e1('0x5c')](db['FaxMessage'][_0x63e1('0x42')]);_0x31405f[_0x63e1('0x47')]=_['keys'](_0x327e70[_0x63e1('0x47')]);_0x31405f[_0x63e1('0x48')]=_[_0x63e1('0x49')](_0x31405f['model'],_0x31405f['query']);_0x399d55[_0x63e1('0x4b')]=_[_0x63e1('0x49')](_0x31405f[_0x63e1('0x46')],qs[_0x63e1('0x4a')](_0x327e70[_0x63e1('0x47')][_0x63e1('0x4a')]));_0x399d55[_0x63e1('0x4b')]=_0x399d55[_0x63e1('0x4b')][_0x63e1('0x4c')]?_0x399d55[_0x63e1('0x4b')]:_0x31405f['model'];if(!_0x327e70['query']['hasOwnProperty'](_0x63e1('0x4e'))){_0x399d55[_0x63e1('0x31')]=qs[_0x63e1('0x31')](_0x327e70[_0x63e1('0x47')][_0x63e1('0x31')]);_0x399d55['offset']=qs[_0x63e1('0x30')](_0x327e70[_0x63e1('0x47')][_0x63e1('0x30')]);}_0x399d55['order']=qs['sort'](_0x327e70['query'][_0x63e1('0x50')]);_0x399d55[_0x63e1('0x51')]=qs[_0x63e1('0x48')](_[_0x63e1('0x52')](_0x327e70['query'],_0x31405f[_0x63e1('0x48')]));_0x399d55[_0x63e1('0x51')][_0x63e1('0x70')]=_0x58d3c3['id'];if(_0x327e70[_0x63e1('0x47')][_0x63e1('0x53')]){_0x399d55[_0x63e1('0x51')]=_[_0x63e1('0x55')](_0x399d55[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0x399d55[_0x63e1('0x4b')],function(_0x595450){var _0x1ef0ea={};_0x1ef0ea[_0x595450]={'$like':'%'+_0x327e70[_0x63e1('0x47')][_0x63e1('0x53')]+'%'};return _0x1ef0ea;})});}if(_0x327e70[_0x63e1('0x47')][_0x63e1('0x9f')]){var _0x4a0066=_0x327e70[_0x63e1('0x47')][_0x63e1('0x9f')][_0x63e1('0xa0')](',');var _0x4a9bf0={};_0x4a9bf0[_0x4a0066[0x0]]={'$gte':moment(_0x4a0066[0x1])[_0x63e1('0xa1')](_0x63e1('0xa2'))};_0x399d55[_0x63e1('0x51')]=_[_0x63e1('0x55')](_0x399d55[_0x63e1('0x51')],_0x4a9bf0);}_0x399d55=_[_0x63e1('0x55')]({},_0x399d55,_0x327e70[_0x63e1('0x56')]);return db[_0x63e1('0xa3')][_0x63e1('0x33')]({'where':_0x399d55[_0x63e1('0x51')]})[_0x63e1('0x20')](function(_0x15f296){_0x5659cf[_0x63e1('0x33')]=_0x15f296;if(_0x327e70['query'][_0x63e1('0x57')]){_0x399d55['include']=[{'all':!![]}];}return db[_0x63e1('0xa3')][_0x63e1('0x58')](_0x399d55);})[_0x63e1('0x20')](function(_0x387162){_0x5659cf['rows']=_0x387162;return _0x5659cf;});}})[_0x63e1('0x20')](respondWithFilteredResult(_0x5b716b,_0x399d55))[_0x63e1('0x2b')](handleError(_0x5b716b,null));};exports['send']=function(_0x106ed0,_0x3c6a4b,_0x58ff13){var _0x594c38,_0x2ca54e={},_0x25540c;if(_0x106ed0[_0x63e1('0x60')]['to']){_0x25540c=_0x106ed0[_0x63e1('0x60')]['to'][0x0];}return db[_0x63e1('0x41')]['find']({'where':{'id':_0x106ed0[_0x63e1('0x5b')]['id']},'include':[{'model':db[_0x63e1('0xa4')],'as':_0x63e1('0xa5'),'include':[{'model':db['CmContact'],'as':_0x63e1('0xa6'),'where':{'fax':_0x25540c},'limit':0x1,'order':[[_0x63e1('0xa7'),_0x63e1('0xa8')]]}]}]})[_0x63e1('0x20')](handleEntityNotFound(_0x3c6a4b,null))['then'](function(_0x3b9b6e){_0x594c38=_0x3b9b6e;if(_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')]&&_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][_0x63e1('0x4c')]){for(var _0xf71c57=0x0;_0xf71c57<_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][_0x63e1('0x4c')];_0xf71c57+=0x1){_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][_0xf71c57]={'filename':_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][_0xf71c57][_0x63e1('0x3c')],'id':_0x106ed0[_0x63e1('0x60')]['attachments'][_0xf71c57]['id'],'path':path['join'](config['root'],_0x63e1('0xaa'),_0x106ed0[_0x63e1('0x60')]['attachments'][_0xf71c57][_0x63e1('0xab')])};}}return respondWithRpcPromise('CheckAfterSend',_0x63e1('0xac'),{'FaxAccountId':_[_0x63e1('0xad')](_0x106ed0[_0x63e1('0x5b')]['id'])?undefined:_0x106ed0[_0x63e1('0x5b')]['id'],'path':_[_0x63e1('0xad')](_0x106ed0['body'][_0x63e1('0xa9')][0x0][_0x63e1('0x6')])?undefined:_0x106ed0['body'][_0x63e1('0xa9')][0x0][_0x63e1('0x6')],'fax':_[_0x63e1('0xad')](_0x106ed0[_0x63e1('0x60')]['to'][0x0])?undefined:_0x106ed0[_0x63e1('0x60')]['to'][0x0]},client9002);})[_0x63e1('0x20')](function(){if(_0x594c38){if(_[_0x63e1('0xad')](_0x106ed0[_0x63e1('0x60')][_0x63e1('0xae')])){_0x106ed0[_0x63e1('0x60')][_0x63e1('0xae')]=util['format']('\x22%s\x22\x20<%s>',_0x594c38[_0x63e1('0x3c')],_0x594c38[_0x63e1('0xaf')]);}if(_0x594c38[_0x63e1('0xa5')]){if(_0x594c38['List'][_0x63e1('0xa6')][_0x63e1('0x4c')]){return _0x594c38[_0x63e1('0xa5')]['Contacts'][0x0];}else{return db[_0x63e1('0x77')]['create'](_[_0x63e1('0x1b')](_0x106ed0[_0x63e1('0x60')],{'firstName':_0x106ed0[_0x63e1('0x60')]['to'][0x0],'phone':_0x106ed0['body']['to'][0x0],'fax':_0x106ed0[_0x63e1('0x60')]['to'][0x0],'ListId':_0x594c38['ListId']}));}}else{throw new Error(_0x63e1('0xb0'));}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x1f41a5){if(_0x1f41a5){return db[_0x63e1('0x75')][_0x63e1('0x5e')]({'where':{'ContactId':_0x1f41a5['id'],'closed':![],'FaxAccountId':_0x594c38['id']}})['then'](function(_0x1253db){if(_0x1253db){return[_0x1253db,![]];}return db[_0x63e1('0x75')][_0x63e1('0x5f')]({'UserId':_0x106ed0['user']['id'],'ContactId':_0x1f41a5['id'],'FaxAccountId':_0x594c38['id'],'fax':_0x106ed0[_0x63e1('0x60')]['to'][0x0],'firstMsgDirection':_0x63e1('0xb1'),'Messages':[_[_0x63e1('0x55')](_0x106ed0[_0x63e1('0x60')],{'read':![],'body':_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][0x0][_0x63e1('0xb2')],'FaxAccountId':_0x594c38['id'],'UserId':_0x106ed0[_0x63e1('0x61')]['id'],'ContactId':_0x1f41a5['id'],'AttachmentId':_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][0x0]['id']})]},{'include':[{'model':db[_0x63e1('0xa3')],'as':_0x63e1('0xb3')}]})['then'](function(_0x4cdb4e){return[_0x4cdb4e,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x63e1('0xb4')](function(_0x57f6f5,_0x25606c){if(_0x25606c){return _0x57f6f5;}return db[_0x63e1('0xa3')][_0x63e1('0x5f')]({'direction':_0x63e1('0xb1'),'read':![],'body':_0x106ed0[_0x63e1('0x60')]['attachments'][0x0]['filename'],'FaxAccountId':_0x594c38['id'],'FaxInteractionId':_0x57f6f5['id'],'UserId':_0x106ed0[_0x63e1('0x61')]['id'],'ContactId':_0x57f6f5[_0x63e1('0xb5')],'AttachmentId':_0x106ed0['body'][_0x63e1('0xa9')][0x0]['id']})[_0x63e1('0x20')](function(_0x15a956){_0x57f6f5[_0x63e1('0xb6')][_0x63e1('0xb3')]=[];_0x57f6f5['dataValues'][_0x63e1('0xb3')][_0x63e1('0x8c')](_0x15a956['dataValues']);return _0x57f6f5;});})[_0x63e1('0x20')](function(_0x5e8c48){respondWithRpcPromise(_0x63e1('0xb7'),_0x63e1('0xb7'),{'FaxAccountId':_[_0x63e1('0xad')](_0x106ed0[_0x63e1('0x5b')]['id'])?undefined:_0x106ed0[_0x63e1('0x5b')]['id'],'path':_[_0x63e1('0xad')](_0x106ed0['body']['attachments'][0x0][_0x63e1('0x6')])?undefined:_0x106ed0[_0x63e1('0x60')][_0x63e1('0xa9')][0x0][_0x63e1('0x6')],'fax':_[_0x63e1('0xad')](_0x106ed0[_0x63e1('0x60')]['to'][0x0])?undefined:_0x106ed0[_0x63e1('0x60')]['to'][0x0],'AttachmentId':_0x106ed0['body'][_0x63e1('0xa9')][0x0]['id']},client9002)[_0x63e1('0x20')](function(_0xf870b1){logger[_0x63e1('0x21')](_0x63e1('0xb8'),_0xf870b1);})[_0x63e1('0x2b')](function(_0x1d7ddc){logger[_0x63e1('0x21')](_0x63e1('0xb8'),_0x1d7ddc);});return _0x5e8c48;})[_0x63e1('0x20')](respondWithResult(_0x3c6a4b,null))[_0x63e1('0x2b')](handleError(_0x3c6a4b,null));};exports[_0x63e1('0xb9')]=function(_0x160fba,_0x1dea42,_0x1a54c1){return db['FaxAccount'][_0x63e1('0x5e')]({'where':{'id':_0x160fba[_0x63e1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1dea42,null))[_0x63e1('0x20')](function(_0x37f3d3){if(_0x37f3d3){return _0x37f3d3[_0x63e1('0xb9')](_0x160fba[_0x63e1('0x60')]['ids'],_[_0x63e1('0x76')](_0x160fba[_0x63e1('0x60')],[_0x63e1('0x6e'),'id'])||{})[_0x63e1('0xb4')](function(_0x3d381d){for(var _0x337b56=0x0;_0x337b56<_0x160fba[_0x63e1('0x60')][_0x63e1('0x6e')][_0x63e1('0x4c')];_0x337b56+=0x1){socket[_0x63e1('0xba')](_0x63e1('0xbb'),{'UserId':Number(_0x160fba[_0x63e1('0x60')][_0x63e1('0x6e')][_0x337b56]),'FaxAccountId':Number(_0x160fba[_0x63e1('0x5b')]['id'])});}return _0x3d381d;});}})['then'](respondWithResult(_0x1dea42,null))[_0x63e1('0x2b')](handleError(_0x1dea42,null));};exports[_0x63e1('0xbc')]=function(_0x2d4769,_0x59df05,_0x4c5ab7){return db[_0x63e1('0x41')][_0x63e1('0x5e')]({'where':{'id':_0x2d4769[_0x63e1('0x5b')]['id']}})[_0x63e1('0x20')](handleEntityNotFound(_0x59df05,null))[_0x63e1('0x20')](function(_0x3afdc4){if(_0x3afdc4){return _0x3afdc4[_0x63e1('0xbc')](_0x2d4769[_0x63e1('0x47')]['ids'])[_0x63e1('0x20')](function(){if(_[_0x63e1('0xbd')](_0x2d4769[_0x63e1('0x47')]['ids'])){for(var _0x206611=0x0;_0x206611<_0x2d4769['query'][_0x63e1('0x6e')]['length'];_0x206611+=0x1){socket[_0x63e1('0xba')](_0x63e1('0xbe'),{'UserId':Number(_0x2d4769[_0x63e1('0x47')][_0x63e1('0x6e')][_0x206611]),'FaxAccountId':Number(_0x2d4769[_0x63e1('0x5b')]['id'])});}}else{socket[_0x63e1('0xba')](_0x63e1('0xbe'),{'UserId':Number(_0x2d4769[_0x63e1('0x47')]['ids']),'FaxAccountId':Number(_0x2d4769[_0x63e1('0x5b')]['id'])});}});}})[_0x63e1('0x20')](respondWithStatusCode(_0x59df05,null))[_0x63e1('0x2b')](handleError(_0x59df05,null));};exports[_0x63e1('0xbf')]=function(_0x1b35f6,_0x577eff,_0x2832af){var _0x9676c1={};var _0x328aa0={};var _0x42bb7e;var _0x1772ae;return db['FaxAccount'][_0x63e1('0x72')]({'where':{'id':_0x1b35f6[_0x63e1('0x5b')]['id']}})['then'](handleEntityNotFound(_0x577eff,null))[_0x63e1('0x20')](function(_0x5028ad){if(_0x5028ad){_0x42bb7e=_0x5028ad;_0x328aa0[_0x63e1('0x46')]=_[_0x63e1('0x5c')](db[_0x63e1('0x78')][_0x63e1('0x42')]);_0x328aa0['query']=_[_0x63e1('0x5c')](_0x1b35f6[_0x63e1('0x47')]);_0x328aa0['filters']=_['intersection'](_0x328aa0[_0x63e1('0x46')],_0x328aa0[_0x63e1('0x47')]);_0x9676c1[_0x63e1('0x4b')]=_[_0x63e1('0x49')](_0x328aa0[_0x63e1('0x46')],qs[_0x63e1('0x4a')](_0x1b35f6[_0x63e1('0x47')]['fields']));_0x9676c1['attributes']=_0x9676c1[_0x63e1('0x4b')][_0x63e1('0x4c')]?_0x9676c1[_0x63e1('0x4b')]:_0x328aa0[_0x63e1('0x46')];_0x9676c1['order']=qs[_0x63e1('0x50')](_0x1b35f6[_0x63e1('0x47')][_0x63e1('0x50')]);_0x9676c1[_0x63e1('0x51')]=qs[_0x63e1('0x48')](_['pick'](_0x1b35f6[_0x63e1('0x47')],_0x328aa0[_0x63e1('0x48')]));if(_0x1b35f6[_0x63e1('0x47')][_0x63e1('0x53')]){_0x9676c1['where']=_['merge'](_0x9676c1[_0x63e1('0x51')],{'$or':_[_0x63e1('0x40')](_0x9676c1[_0x63e1('0x4b')],function(_0x2b40eb){var _0x19a014={};_0x19a014[_0x2b40eb]={'$like':'%'+_0x1b35f6[_0x63e1('0x47')]['filter']+'%'};return _0x19a014;})});}_0x9676c1=_[_0x63e1('0x55')]({},_0x9676c1,_0x1b35f6[_0x63e1('0x56')]);return _0x42bb7e[_0x63e1('0xbf')](_0x9676c1);}})[_0x63e1('0x20')](function(_0x1111ca){if(_0x1111ca){_0x1772ae=_0x1111ca['length'];if(!_0x1b35f6[_0x63e1('0x47')]['hasOwnProperty'](_0x63e1('0x4e'))){_0x9676c1[_0x63e1('0x31')]=qs[_0x63e1('0x31')](_0x1b35f6[_0x63e1('0x47')]['limit']);_0x9676c1['offset']=qs[_0x63e1('0x30')](_0x1b35f6['query'][_0x63e1('0x30')]);}return _0x42bb7e['getAgents'](_0x9676c1);}})['then'](function(_0x587086){if(_0x587086){return _0x587086?{'count':_0x1772ae,'rows':_0x587086}:null;}})[_0x63e1('0x20')](respondWithResult(_0x577eff,null))[_0x63e1('0x2b')](handleError(_0x577eff,null));};
\ No newline at end of file
+var _0xa6e9=['api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','reject','save','update','get','FaxAccounts','UserProfileResource','destroy','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','findOne','rawAttributes','nolimit','sort','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findAll','removeAnswers','addInteraction','FaxInteraction','omit','CmContact','Contact','internal','Tag','Tags','color','tag','transaction','FaxApplication','bulkCreate','findAndCountAll','priority','getApplications','context','from-voip-provider','localstationid','app','description','appdata','push','Answer','CDR(type)=inbound-fax','Set','faxdetect','headerinfo','maxrate','modem','t38timeout','FAXOPT(','Wait','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','sequelize','createdAt','TrunkId','ListId','getMessages','FaxMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','attachments','join','basename','CheckAfterSend','isNil','path','from','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','filename','Messages','Contact\x20not\x20found','spread','out','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','removeAgents','isArray','userFaxAccount:remove','getAgents','User','rimraf','zip-dir','request-promise','bluebird','mustache','util','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'];(function(_0x351bc8,_0x5e687d){var _0xf309ee=function(_0x3414fe){while(--_0x3414fe){_0x351bc8['push'](_0x351bc8['shift']());}};_0xf309ee(++_0x5e687d);}(_0xa6e9,0x167));var _0x9a6e=function(_0x490cbe,_0x3fc51f){_0x490cbe=_0x490cbe-0x0;var _0x58d3e0=_0xa6e9[_0x490cbe];return _0x58d3e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9a6e('0x0'));var zipdir=require(_0x9a6e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a6e('0x2'));var moment=require('moment');var BPromise=require(_0x9a6e('0x3'));var Mustache=require(_0x9a6e('0x4'));var util=require(_0x9a6e('0x5'));var path=require('path');var sox=require(_0x9a6e('0x6'));var csv=require(_0x9a6e('0x7'));var ejs=require(_0x9a6e('0x8'));var fs=require('fs');var fs_extra=require(_0x9a6e('0x9'));var _=require(_0x9a6e('0xa'));var squel=require(_0x9a6e('0xb'));var crypto=require(_0x9a6e('0xc'));var jsforce=require(_0x9a6e('0xd'));var deskjs=require(_0x9a6e('0xe'));var toCsv=require(_0x9a6e('0x7'));var querystring=require('querystring');var Papa=require(_0x9a6e('0xf'));var Redis=require(_0x9a6e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9a6e('0x11'));var as=require(_0x9a6e('0x12'));var hardwareService=require(_0x9a6e('0x13'));var logger=require(_0x9a6e('0x14'))(_0x9a6e('0x15'));var utils=require(_0x9a6e('0x16'));var config=require(_0x9a6e('0x17'));var licenseUtil=require(_0x9a6e('0x18'));var db=require('../../mysqldb')['db'];config[_0x9a6e('0x19')]=_[_0x9a6e('0x1a')](config[_0x9a6e('0x19')],{'host':_0x9a6e('0x1b'),'port':0x18eb});var socket=require(_0x9a6e('0x1c'))(new Redis(config[_0x9a6e('0x19')]));require(_0x9a6e('0x1d'))['register'](socket);var jayson=require(_0x9a6e('0x1e'));var client=jayson[_0x9a6e('0x1f')][_0x9a6e('0x20')]({'port':0x232c});var client9002=jayson[_0x9a6e('0x1f')][_0x9a6e('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x314145,_0x422ea7,_0x4c9ea8,_0x4a95e2){return new BPromise(function(_0x14ff26,_0xc89581){var _0x53dd4e=_0x4a95e2||client;return _0x53dd4e[_0x9a6e('0x21')](_0x314145,_0x4c9ea8)[_0x9a6e('0x22')](function(_0x1fbf0e){logger[_0x9a6e('0x23')]('FaxAccount,\x20%s,\x20%s',_0x422ea7,_0x9a6e('0x24'));logger[_0x9a6e('0x25')](_0x9a6e('0x26'),_0x422ea7,'request\x20sent',JSON[_0x9a6e('0x27')](_0x1fbf0e));if(_0x1fbf0e[_0x9a6e('0x28')]){if(_0x1fbf0e[_0x9a6e('0x28')][_0x9a6e('0x29')]===0x1f4){logger[_0x9a6e('0x28')](_0x9a6e('0x2a'),_0x422ea7,_0x1fbf0e[_0x9a6e('0x28')]['message']);return _0xc89581(_0x1fbf0e[_0x9a6e('0x28')]['message']);}logger['error'](_0x9a6e('0x2a'),_0x422ea7,_0x1fbf0e[_0x9a6e('0x28')][_0x9a6e('0x2b')]);return _0x14ff26(_0x1fbf0e[_0x9a6e('0x28')][_0x9a6e('0x2b')]);}else{logger[_0x9a6e('0x23')]('FaxAccount,\x20%s,\x20%s',_0x422ea7,_0x9a6e('0x24'));_0x14ff26(_0x1fbf0e[_0x9a6e('0x2c')][_0x9a6e('0x2b')]);}})[_0x9a6e('0x2d')](function(_0x216775){logger['error'](_0x9a6e('0x2a'),_0x422ea7,_0x216775);_0xc89581(_0x216775);});});}function respondWithStatusCode(_0x13cf21,_0x405ac1){_0x405ac1=_0x405ac1||0xcc;return function(_0x580ef4){if(_0x580ef4){return _0x13cf21[_0x9a6e('0x2e')](_0x405ac1);}return _0x13cf21[_0x9a6e('0x2f')](_0x405ac1)[_0x9a6e('0x30')]();};}function respondWithResult(_0x172be5,_0x5a0acd){_0x5a0acd=_0x5a0acd||0xc8;return function(_0x3dfd93){if(_0x3dfd93){return _0x172be5[_0x9a6e('0x2f')](_0x5a0acd)[_0x9a6e('0x31')](_0x3dfd93);}};}function respondWithFilteredResult(_0x39eccb,_0x12034e){return function(_0x43e210){if(_0x43e210){var _0x3ea6e2=typeof _0x12034e[_0x9a6e('0x32')]===_0x9a6e('0x33')&&typeof _0x12034e['limit']===_0x9a6e('0x33');var _0x435025=_0x43e210[_0x9a6e('0x34')];var _0x5d0334=_0x3ea6e2?0x0:_0x12034e[_0x9a6e('0x32')];var _0x502246=_0x3ea6e2?_0x43e210[_0x9a6e('0x34')]:_0x12034e[_0x9a6e('0x32')]+_0x12034e[_0x9a6e('0x35')];var _0x34521a;if(_0x502246>=_0x435025){_0x502246=_0x435025;_0x34521a=0xc8;}else{_0x34521a=0xce;}_0x39eccb[_0x9a6e('0x2f')](_0x34521a);return _0x39eccb[_0x9a6e('0x36')]('Content-Range',_0x5d0334+'-'+_0x502246+'/'+_0x435025)[_0x9a6e('0x31')](_0x43e210);}return null;};}function patchUpdates(_0x3ea487){return function(_0x4ba554){try{jsonpatch['apply'](_0x4ba554,_0x3ea487,!![]);}catch(_0x2f9b57){return BPromise[_0x9a6e('0x37')](_0x2f9b57);}return _0x4ba554[_0x9a6e('0x38')]();};}function saveUpdates(_0x4bffbc,_0x4731df){return function(_0x284743){if(_0x284743){return _0x284743[_0x9a6e('0x39')](_0x4bffbc)[_0x9a6e('0x22')](function(_0x23ebcc){return _0x23ebcc;});}return null;};}function removeEntity(_0x30c4c3,_0x2fa26a){return function(_0x1db433){if(_0x1db433){return _0x1db433['destroy']()[_0x9a6e('0x22')](function(){var _0xa09339=_0x1db433[_0x9a6e('0x3a')]({'plain':!![]});var _0x371577=_0x9a6e('0x3b');return db[_0x9a6e('0x3c')][_0x9a6e('0x3d')]({'where':{'type':_0x371577,'resourceId':_0xa09339['id']}})[_0x9a6e('0x22')](function(){return _0x1db433;});})[_0x9a6e('0x22')](function(){_0x30c4c3[_0x9a6e('0x2f')](0xcc)[_0x9a6e('0x30')]();});}};}function handleEntityNotFound(_0x2fbd32,_0x322a82){return function(_0x50e6fa){if(!_0x50e6fa){_0x2fbd32[_0x9a6e('0x2e')](0x194);}return _0x50e6fa;};}function handleError(_0x29b108,_0x337660){_0x337660=_0x337660||0x1f4;return function(_0x5c7bfd){logger['error'](_0x5c7bfd['stack']);if(_0x5c7bfd[_0x9a6e('0x3e')]){delete _0x5c7bfd[_0x9a6e('0x3e')];}_0x29b108['status'](_0x337660)[_0x9a6e('0x3f')](_0x5c7bfd);};}exports[_0x9a6e('0x40')]=function(_0x62e19f,_0x5d4716){var _0x51ee36={'include':[{'model':db[_0x9a6e('0x41')],'as':_0x9a6e('0x42')}]},_0x281993={},_0x325dda={'count':0x0,'rows':[]};var _0x159599=_[_0x9a6e('0x43')](db[_0x9a6e('0x44')]['rawAttributes'],function(_0x220e14){return{'name':_0x220e14[_0x9a6e('0x45')],'type':_0x220e14[_0x9a6e('0x46')][_0x9a6e('0x47')]};});_0x281993[_0x9a6e('0x48')]=_[_0x9a6e('0x43')](_0x159599,_0x9a6e('0x3e'));_0x281993[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x62e19f[_0x9a6e('0x49')]);_0x281993[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x281993[_0x9a6e('0x48')],_0x281993[_0x9a6e('0x49')]);_0x51ee36[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x281993['model'],qs[_0x9a6e('0x4e')](_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x51ee36[_0x9a6e('0x4d')]=_0x51ee36['attributes'][_0x9a6e('0x4f')]?_0x51ee36[_0x9a6e('0x4d')]:_0x281993[_0x9a6e('0x48')];if(!_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x50')]('nolimit')){_0x51ee36[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x62e19f['query'][_0x9a6e('0x35')]);_0x51ee36[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x32')]);}_0x51ee36[_0x9a6e('0x51')]=qs['sort'](_0x62e19f[_0x9a6e('0x49')]['sort']);_0x51ee36[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x62e19f[_0x9a6e('0x49')],_0x281993[_0x9a6e('0x4b')]),_0x159599);if(_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x54')]){_0x51ee36['where']=_[_0x9a6e('0x55')](_0x51ee36[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x159599,function(_0x36430e){if(_0x36430e[_0x9a6e('0x46')]!==_0x9a6e('0x56')){var _0x45440b={};_0x45440b[_0x36430e[_0x9a6e('0x3e')]]={'$like':'%'+_0x62e19f[_0x9a6e('0x49')]['filter']+'%'};return _0x45440b;}})});}_0x51ee36=_[_0x9a6e('0x55')]({},_0x51ee36,_0x62e19f[_0x9a6e('0x57')]);var _0xf914a9={'where':_0x51ee36[_0x9a6e('0x52')]};return db['FaxAccount'][_0x9a6e('0x34')](_0xf914a9)[_0x9a6e('0x22')](function(_0x24a90d){_0x325dda[_0x9a6e('0x34')]=_0x24a90d;if(_0x62e19f[_0x9a6e('0x49')][_0x9a6e('0x58')]){_0x51ee36[_0x9a6e('0x59')]=[{'all':!![]}];}return db['FaxAccount']['findAll'](_0x51ee36);})[_0x9a6e('0x22')](function(_0x2eec3a){_0x325dda[_0x9a6e('0x5a')]=_0x2eec3a;return _0x325dda;})[_0x9a6e('0x22')](respondWithFilteredResult(_0x5d4716,_0x51ee36))[_0x9a6e('0x2d')](handleError(_0x5d4716,null));};exports['show']=function(_0x51f15c,_0x3b09d7){var _0x5aa416={'raw':![],'where':{'id':_0x51f15c[_0x9a6e('0x5b')]['id']},'include':[{'model':db[_0x9a6e('0x41')],'as':_0x9a6e('0x42')}]},_0x1da572={};_0x1da572['model']=_[_0x9a6e('0x4a')](db[_0x9a6e('0x44')]['rawAttributes']);_0x1da572[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x51f15c['query']);_0x1da572[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x1da572['model'],_0x1da572[_0x9a6e('0x49')]);_0x5aa416['attributes']=_['intersection'](_0x1da572[_0x9a6e('0x48')],qs[_0x9a6e('0x4e')](_0x51f15c['query'][_0x9a6e('0x4e')]));_0x5aa416[_0x9a6e('0x4d')]=_0x5aa416[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x5aa416[_0x9a6e('0x4d')]:_0x1da572[_0x9a6e('0x48')];if(_0x51f15c[_0x9a6e('0x49')][_0x9a6e('0x58')]){_0x5aa416[_0x9a6e('0x59')]=[{'all':!![]}];}_0x5aa416=_[_0x9a6e('0x55')]({},_0x5aa416,_0x51f15c['options']);return db['FaxAccount']['find'](_0x5aa416)[_0x9a6e('0x22')](handleEntityNotFound(_0x3b09d7,null))[_0x9a6e('0x22')](respondWithResult(_0x3b09d7,null))[_0x9a6e('0x2d')](handleError(_0x3b09d7,null));};exports[_0x9a6e('0x5c')]=function(_0x34a877,_0x5991cd){return db[_0x9a6e('0x44')][_0x9a6e('0x5c')](_0x34a877[_0x9a6e('0x5d')],{})['then'](function(_0x1d9303){var _0xdc3567=_0x34a877[_0x9a6e('0x5e')][_0x9a6e('0x3a')]({'plain':!![]});if(!_0xdc3567)throw new Error(_0x9a6e('0x5f'));if(_0xdc3567['role']===_0x9a6e('0x5e')){var _0x30816b=_0x1d9303[_0x9a6e('0x3a')]({'plain':!![]});var _0x432ae9=_0x9a6e('0x3b');return db[_0x9a6e('0x60')][_0x9a6e('0x61')]({'where':{'name':_0x432ae9,'userProfileId':_0xdc3567[_0x9a6e('0x62')]},'raw':!![]})[_0x9a6e('0x22')](function(_0x48ce00){if(_0x48ce00&&_0x48ce00[_0x9a6e('0x63')]===0x0){return db[_0x9a6e('0x3c')]['create']({'name':_0x30816b[_0x9a6e('0x3e')],'resourceId':_0x30816b['id'],'type':_0x48ce00[_0x9a6e('0x3e')],'sectionId':_0x48ce00['id']},{})['then'](function(){return _0x1d9303;});}else{return _0x1d9303;}})[_0x9a6e('0x2d')](function(_0x10d18b){logger[_0x9a6e('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x10d18b);throw _0x10d18b;});}return _0x1d9303;})['then'](respondWithResult(_0x5991cd,0xc9))[_0x9a6e('0x2d')](handleError(_0x5991cd,null));};exports[_0x9a6e('0x39')]=function(_0x1b1cf2,_0x12dff1){if(_0x1b1cf2[_0x9a6e('0x5d')]['id']){delete _0x1b1cf2[_0x9a6e('0x5d')]['id'];}return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x1b1cf2[_0x9a6e('0x5b')]['id']},'include':[{'model':db[_0x9a6e('0x41')],'as':_0x9a6e('0x42')}]})[_0x9a6e('0x22')](handleEntityNotFound(_0x12dff1,null))[_0x9a6e('0x22')](saveUpdates(_0x1b1cf2[_0x9a6e('0x5d')],null))[_0x9a6e('0x22')](respondWithResult(_0x12dff1,null))[_0x9a6e('0x2d')](handleError(_0x12dff1,null));};exports[_0x9a6e('0x3d')]=function(_0x41692a,_0x30bf15){return db['FaxAccount'][_0x9a6e('0x61')]({'where':{'id':_0x41692a[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x30bf15,null))[_0x9a6e('0x22')](removeEntity(_0x30bf15,null))['catch'](handleError(_0x30bf15,null));};exports[_0x9a6e('0x64')]=function(_0x5c8c4d,_0x36c6f6){return db[_0x9a6e('0x44')][_0x9a6e('0x64')]()[_0x9a6e('0x22')](respondWithResult(_0x36c6f6,null))['catch'](handleError(_0x36c6f6,null));};exports[_0x9a6e('0x65')]=function(_0xb1513f,_0x320017,_0x2231b7){if(_0xb1513f[_0x9a6e('0x5d')]['id']){delete _0xb1513f[_0x9a6e('0x5d')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0xb1513f['params']['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x320017,null))['then'](function(_0x31a5df){if(_0x31a5df){_0xb1513f[_0x9a6e('0x5d')][_0x9a6e('0x66')]=_0x31a5df['id'];return db[_0x9a6e('0x67')][_0x9a6e('0x5c')](_0xb1513f[_0x9a6e('0x5d')]);}})[_0x9a6e('0x22')](respondWithResult(_0x320017,null))[_0x9a6e('0x2d')](handleError(_0x320017,null));};exports['getDispositions']=function(_0x1da7a1,_0x282029,_0x40a1d5){var _0x1925e9={'raw':![],'where':{}};var _0x1bc1de={};var _0x21e0c4={'count':0x0,'rows':[]};return db[_0x9a6e('0x44')][_0x9a6e('0x68')]({'where':{'id':_0x1da7a1[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x282029,null))[_0x9a6e('0x22')](function(_0xcdbfe8){if(_0xcdbfe8){_0x1bc1de[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x67')][_0x9a6e('0x69')]);_0x1bc1de[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x1da7a1['query']);_0x1bc1de[_0x9a6e('0x4b')]=_['intersection'](_0x1bc1de[_0x9a6e('0x48')],_0x1bc1de['query']);_0x1925e9[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x1bc1de['model'],qs[_0x9a6e('0x4e')](_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x1925e9['attributes']=_0x1925e9['attributes'][_0x9a6e('0x4f')]?_0x1925e9['attributes']:_0x1bc1de[_0x9a6e('0x48')];if(!_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x50')](_0x9a6e('0x6a'))){_0x1925e9['limit']=qs[_0x9a6e('0x35')](_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x35')]);_0x1925e9[_0x9a6e('0x32')]=qs['offset'](_0x1da7a1['query'][_0x9a6e('0x32')]);}_0x1925e9[_0x9a6e('0x51')]=qs['sort'](_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x1925e9[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x1da7a1[_0x9a6e('0x49')],_0x1bc1de[_0x9a6e('0x4b')]));_0x1925e9[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0xcdbfe8['id'];if(_0x1da7a1['query']['filter']){_0x1925e9[_0x9a6e('0x52')]=_[_0x9a6e('0x55')](_0x1925e9[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x1925e9[_0x9a6e('0x4d')],function(_0x2f4a91){var _0x499fc7={};_0x499fc7[_0x2f4a91]={'$like':'%'+_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x54')]+'%'};return _0x499fc7;})});}_0x1925e9=_[_0x9a6e('0x55')]({},_0x1925e9,_0x1da7a1[_0x9a6e('0x57')]);return db[_0x9a6e('0x67')]['count']({'where':_0x1925e9[_0x9a6e('0x52')]})[_0x9a6e('0x22')](function(_0xadf755){_0x21e0c4[_0x9a6e('0x34')]=_0xadf755;if(_0x1da7a1[_0x9a6e('0x49')][_0x9a6e('0x58')]){_0x1925e9[_0x9a6e('0x59')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x1925e9);})['then'](function(_0x3f339b){_0x21e0c4[_0x9a6e('0x5a')]=_0x3f339b;return _0x21e0c4;});}})['then'](respondWithFilteredResult(_0x282029,_0x1925e9))['catch'](handleError(_0x282029,null));};exports[_0x9a6e('0x6c')]=function(_0x2101dd,_0x512384,_0x237ca5){return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x2101dd[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x512384,null))['then'](function(_0x2f8a4f){if(_0x2f8a4f){return _0x2f8a4f[_0x9a6e('0x6c')](_0x2101dd[_0x9a6e('0x49')][_0x9a6e('0x6d')]);}})[_0x9a6e('0x22')](respondWithStatusCode(_0x512384,null))[_0x9a6e('0x2d')](handleError(_0x512384,null));};exports[_0x9a6e('0x6e')]=function(_0x13adb7,_0x1b51b0,_0x16d5ce){if(_0x13adb7['body']['id']){delete _0x13adb7[_0x9a6e('0x5d')]['id'];}return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x13adb7[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x1b51b0,null))[_0x9a6e('0x22')](function(_0xab9767){if(_0xab9767){_0x13adb7[_0x9a6e('0x5d')][_0x9a6e('0x66')]=_0xab9767['id'];return db[_0x9a6e('0x6f')]['create'](_0x13adb7[_0x9a6e('0x5d')]);}})['then'](respondWithResult(_0x1b51b0,null))[_0x9a6e('0x2d')](handleError(_0x1b51b0,null));};exports[_0x9a6e('0x70')]=function(_0x4d7213,_0xa81a62,_0x1eb014){var _0x228f61={'raw':![],'where':{}};var _0x5ab875={};var _0x4af1bc={'count':0x0,'rows':[]};return db['FaxAccount'][_0x9a6e('0x68')]({'where':{'id':_0x4d7213[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0xa81a62,null))['then'](function(_0x133f68){if(_0x133f68){_0x5ab875[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x6f')][_0x9a6e('0x69')]);_0x5ab875[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x4d7213[_0x9a6e('0x49')]);_0x5ab875[_0x9a6e('0x4b')]=_['intersection'](_0x5ab875[_0x9a6e('0x48')],_0x5ab875[_0x9a6e('0x49')]);_0x228f61[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x5ab875[_0x9a6e('0x48')],qs[_0x9a6e('0x4e')](_0x4d7213['query']['fields']));_0x228f61[_0x9a6e('0x4d')]=_0x228f61[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x228f61[_0x9a6e('0x4d')]:_0x5ab875[_0x9a6e('0x48')];if(!_0x4d7213[_0x9a6e('0x49')][_0x9a6e('0x50')](_0x9a6e('0x6a'))){_0x228f61[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x4d7213['query'][_0x9a6e('0x35')]);_0x228f61[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x4d7213['query'][_0x9a6e('0x32')]);}_0x228f61[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x4d7213[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x228f61['where']=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x4d7213[_0x9a6e('0x49')],_0x5ab875[_0x9a6e('0x4b')]));_0x228f61[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0x133f68['id'];if(_0x4d7213['query']['filter']){_0x228f61[_0x9a6e('0x52')]=_['merge'](_0x228f61[_0x9a6e('0x52')],{'$or':_['map'](_0x228f61[_0x9a6e('0x4d')],function(_0x34d62d){var _0x58e89e={};_0x58e89e[_0x34d62d]={'$like':'%'+_0x4d7213['query']['filter']+'%'};return _0x58e89e;})});}_0x228f61=_[_0x9a6e('0x55')]({},_0x228f61,_0x4d7213[_0x9a6e('0x57')]);return db[_0x9a6e('0x6f')][_0x9a6e('0x34')]({'where':_0x228f61['where']})['then'](function(_0x256caa){_0x4af1bc[_0x9a6e('0x34')]=_0x256caa;if(_0x4d7213['query'][_0x9a6e('0x58')]){_0x228f61[_0x9a6e('0x59')]=[{'all':!![]}];}return db[_0x9a6e('0x6f')][_0x9a6e('0x71')](_0x228f61);})[_0x9a6e('0x22')](function(_0x57bb4d){_0x4af1bc[_0x9a6e('0x5a')]=_0x57bb4d;return _0x4af1bc;});}})[_0x9a6e('0x22')](respondWithFilteredResult(_0xa81a62,_0x228f61))['catch'](handleError(_0xa81a62,null));};exports[_0x9a6e('0x72')]=function(_0x4e53f0,_0x5515d8,_0x37282b){return db['FaxAccount'][_0x9a6e('0x61')]({'where':{'id':_0x4e53f0[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x5515d8,null))[_0x9a6e('0x22')](function(_0x4418d4){if(_0x4418d4){return _0x4418d4['removeAnswers'](_0x4e53f0[_0x9a6e('0x49')][_0x9a6e('0x6d')]);}})[_0x9a6e('0x22')](respondWithStatusCode(_0x5515d8,null))[_0x9a6e('0x2d')](handleError(_0x5515d8,null));};exports[_0x9a6e('0x73')]=function(_0x3ecc27,_0x1841fb,_0x35c790){return db[_0x9a6e('0x74')][_0x9a6e('0x61')]({'where':{'id':_0x3ecc27[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x1841fb,null))[_0x9a6e('0x22')](function(_0x5d526a){if(_0x5d526a){return _0x5d526a[_0x9a6e('0x73')](_0x3ecc27['body']['ids'],_[_0x9a6e('0x75')](_0x3ecc27[_0x9a6e('0x5d')],['ids','id'])||{});}})[_0x9a6e('0x22')](respondWithResult(_0x1841fb,null))['catch'](handleError(_0x1841fb,null));};exports['getInteractions']=function(_0x44398a,_0x8ca40e,_0x2ffeae){var _0x49f0b1={'raw':![],'where':{}};var _0x14d096={};var _0x32e775={'count':0x0,'rows':[]};return db[_0x9a6e('0x44')][_0x9a6e('0x68')]({'where':{'id':_0x44398a[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x8ca40e,null))[_0x9a6e('0x22')](function(_0x1b7e44){if(_0x1b7e44){_0x14d096[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x74')][_0x9a6e('0x69')]);_0x14d096[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x44398a[_0x9a6e('0x49')]);_0x14d096[_0x9a6e('0x4b')]=_['intersection'](_0x14d096[_0x9a6e('0x48')],_0x14d096[_0x9a6e('0x49')]);_0x49f0b1[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x14d096[_0x9a6e('0x48')],qs['fields'](_0x44398a['query'][_0x9a6e('0x4e')]));_0x49f0b1[_0x9a6e('0x4d')]=_0x49f0b1[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x49f0b1[_0x9a6e('0x4d')]:_0x14d096['model'];if(!_0x44398a['query']['hasOwnProperty']('nolimit')){_0x49f0b1[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x35')]);_0x49f0b1[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x32')]);}_0x49f0b1[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x49f0b1['where']=qs[_0x9a6e('0x4b')](_[_0x9a6e('0x53')](_0x44398a['query'],_0x14d096[_0x9a6e('0x4b')]));_0x49f0b1[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0x1b7e44['id'];if(_0x44398a['query'][_0x9a6e('0x54')]){_0x49f0b1[_0x9a6e('0x52')]=_['merge'](_0x49f0b1[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x49f0b1[_0x9a6e('0x4d')],function(_0x327c98){var _0x232a38={};_0x232a38[_0x327c98]={'$like':'%'+_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x54')]+'%'};return _0x232a38;})});}_0x49f0b1=_[_0x9a6e('0x55')]({},_0x49f0b1,_0x44398a[_0x9a6e('0x57')]);return db[_0x9a6e('0x74')]['count']({'where':_0x49f0b1[_0x9a6e('0x52')]})[_0x9a6e('0x22')](function(_0xd9ef1c){_0x32e775[_0x9a6e('0x34')]=_0xd9ef1c;if(_0x44398a['query'][_0x9a6e('0x58')]){_0x49f0b1[_0x9a6e('0x59')]=[{'model':db[_0x9a6e('0x76')],'as':_0x9a6e('0x77'),'required':![]},{'model':db['User'],'as':'Owner','attributes':[_0x9a6e('0x3e'),'fullname',_0x9a6e('0x78')],'required':![]},{'model':db[_0x9a6e('0x79')],'as':_0x9a6e('0x7a'),'attributes':['id',_0x9a6e('0x3e'),_0x9a6e('0x7b')],'where':_0x44398a[_0x9a6e('0x49')]['tag']?{'id':_0x44398a[_0x9a6e('0x49')][_0x9a6e('0x7c')]}:undefined,'required':_0x44398a[_0x9a6e('0x49')]['tag']?!![]:![]}];}return db[_0x9a6e('0x74')][_0x9a6e('0x71')](_0x49f0b1);})[_0x9a6e('0x22')](function(_0xffdd7d){_0x32e775['rows']=_0xffdd7d;return _0x32e775;});}})[_0x9a6e('0x22')](respondWithFilteredResult(_0x8ca40e,_0x49f0b1))[_0x9a6e('0x2d')](handleError(_0x8ca40e,null));};exports['addApplications']=function(_0x244e52,_0x21c235,_0x79f568){return db['FaxAccount']['findOne']({'where':{'id':_0x244e52['params']['id']}})['then'](handleEntityNotFound(_0x21c235,null))[_0x9a6e('0x22')](function(_0x58d264){if(_0x58d264){return db['sequelize'][_0x9a6e('0x7d')](function(_0x312fc3){return db[_0x9a6e('0x7e')][_0x9a6e('0x3d')]({'where':{'FaxAccountId':_0x244e52[_0x9a6e('0x5b')]['id']},'transaction':_0x312fc3})['then'](function(_0x1a1e4d){var _0x57b8de=_[_0x9a6e('0x43')](_0x244e52['body'],function(_0x24ef92){_0x24ef92['FaxAccountId']=_0x244e52[_0x9a6e('0x5b')]['id'];return _0x24ef92;});return db[_0x9a6e('0x7e')][_0x9a6e('0x7f')](_0x57b8de,{'transaction':_0x312fc3});});})[_0x9a6e('0x22')](function(){return db[_0x9a6e('0x7e')][_0x9a6e('0x80')]({'where':{'FaxAccountId':_0x244e52[_0x9a6e('0x5b')]['id']},'order':_0x9a6e('0x81')});});}})[_0x9a6e('0x22')](respondWithResult(_0x21c235,null))[_0x9a6e('0x2d')](handleError(_0x21c235,null));};exports['getApplications']=function(_0x4681cd,_0xb38de9,_0x1cd09b){var _0x4af12e={};var _0x3776f8={};var _0x4c5900;var _0x5e948a;return db['FaxAccount'][_0x9a6e('0x68')]({'where':{'id':_0x4681cd['params']['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0xb38de9,null))['then'](function(_0xc8ecff){if(_0xc8ecff){_0x4c5900=_0xc8ecff;_0x3776f8[_0x9a6e('0x48')]=_[_0x9a6e('0x4a')](db[_0x9a6e('0x7e')]['rawAttributes']);_0x3776f8[_0x9a6e('0x49')]=_['keys'](_0x4681cd[_0x9a6e('0x49')]);_0x3776f8[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x3776f8[_0x9a6e('0x48')],_0x3776f8[_0x9a6e('0x49')]);_0x4af12e[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x3776f8[_0x9a6e('0x48')],qs[_0x9a6e('0x4e')](_0x4681cd[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x4af12e[_0x9a6e('0x4d')]=_0x4af12e[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x4af12e[_0x9a6e('0x4d')]:_0x3776f8['model'];_0x4af12e[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x4681cd[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x4af12e[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_['pick'](_0x4681cd[_0x9a6e('0x49')],_0x3776f8[_0x9a6e('0x4b')]));if(_0x4681cd[_0x9a6e('0x49')]['filter']){_0x4af12e[_0x9a6e('0x52')]=_[_0x9a6e('0x55')](_0x4af12e[_0x9a6e('0x52')],{'$or':_['map'](_0x4af12e['attributes'],function(_0x2dad5e){var _0x243e65={};_0x243e65[_0x2dad5e]={'$like':'%'+_0x4681cd['query'][_0x9a6e('0x54')]+'%'};return _0x243e65;})});}_0x4af12e=_[_0x9a6e('0x55')]({},_0x4af12e,_0x4681cd[_0x9a6e('0x57')]);return _0x4c5900['getApplications'](_0x4af12e);}})[_0x9a6e('0x22')](function(_0x3b6ab3){if(_0x3b6ab3){_0x5e948a=_0x3b6ab3['length'];if(!_0x4681cd[_0x9a6e('0x49')]['hasOwnProperty'](_0x9a6e('0x6a'))){_0x4af12e[_0x9a6e('0x35')]=qs['limit'](_0x4681cd[_0x9a6e('0x49')]['limit']);_0x4af12e[_0x9a6e('0x32')]=qs[_0x9a6e('0x32')](_0x4681cd['query'][_0x9a6e('0x32')]);}return _0x4c5900[_0x9a6e('0x82')](_0x4af12e);}})['then'](function(_0x20a43e){if(_0x20a43e){return _0x20a43e?{'count':_0x5e948a,'rows':_0x20a43e}:null;}})[_0x9a6e('0x22')](respondWithResult(_0xb38de9,null))[_0x9a6e('0x2d')](handleError(_0xb38de9,null));};function Extension(_0x5d7e86,_0x21e515,_0x52d9c6,_0x3c4d98){this[_0x9a6e('0x83')]=_0x9a6e('0x84');this['exten']=_0x5d7e86[_0x9a6e('0x85')];this[_0x9a6e('0x86')]=_0x3c4d98;this[_0x9a6e('0x46')]='system';this[_0x9a6e('0x87')]='Fax\x20Extension';this[_0x9a6e('0x66')]=_0x5d7e86['id'];this['priority']=_0x21e515;this[_0x9a6e('0x88')]=_0x52d9c6;}function createExtensionsReciveFax(_0x3390f1){var _0x103ee7=0x1;var _0xa573ae=[];_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,'',_0x9a6e('0x8a')));_0x103ee7+=0x1;_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,_0x9a6e('0x8b'),_0x9a6e('0x8c')));_0x103ee7+=0x1;for(var _0x3b01d3 in _0x3390f1){if(_0x3390f1['hasOwnProperty'](_0x3b01d3)&&(_0x3b01d3==='ecm'||_0x3b01d3===_0x9a6e('0x85')||_0x3b01d3==='gateway'||_0x3b01d3===_0x9a6e('0x8d')||_0x3b01d3===_0x9a6e('0x8e')||_0x3b01d3===_0x9a6e('0x8f')||_0x3b01d3==='minrate'||_0x3b01d3===_0x9a6e('0x90')||_0x3b01d3===_0x9a6e('0x91'))){_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,_0x9a6e('0x92')+_0x3b01d3+')='+_0x3390f1[_0x3b01d3],'Set'));_0x103ee7+=0x1;}}_0xa573ae['push'](new Extension(_0x3390f1,_0x103ee7,'6',_0x9a6e('0x93')));_0x103ee7+=0x1;_0xa573ae[_0x9a6e('0x89')](new Extension(_0x3390f1,_0x103ee7,'/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',_0x9a6e('0x94')));_0x103ee7=0x0;return _0xa573ae;}exports[_0x9a6e('0x95')]=function(_0x3baef3,_0x33079a,_0x4a3ff0){var _0xe0580d;return db['sequelize'][_0x9a6e('0x7d')](function(_0x56b8b1){return db[_0x9a6e('0x44')][_0x9a6e('0x5c')](_0x3baef3['body'],{'transaction':_0x56b8b1})[_0x9a6e('0x22')](function(_0x580955){_0xe0580d=_0x580955[_0x9a6e('0x3a')]({'plain':!![]});return db[_0x9a6e('0x96')][_0x9a6e('0x7f')](createExtensionsReciveFax(_0xe0580d),{'transaction':_0x56b8b1});});})['then'](function(){return _0xe0580d;})[_0x9a6e('0x22')](respondWithResult(_0x33079a,null))[_0x9a6e('0x2d')](handleError(_0x33079a,null));};exports[_0x9a6e('0x97')]=function(_0x2f53c6,_0x24afac,_0x52e2a6){var _0x11355d;return db[_0x9a6e('0x98')][_0x9a6e('0x7d')](function(_0x4b56a0){return db[_0x9a6e('0x44')][_0x9a6e('0x39')](_0x2f53c6['body'],{'where':{'id':_0x2f53c6[_0x9a6e('0x5d')]['id']},'transaction':_0x4b56a0})[_0x9a6e('0x22')](function(_0x419730){return db[_0x9a6e('0x96')]['destroy']({'where':{'FaxAccountId':_0x2f53c6['body']['id']},'transaction':_0x4b56a0})[_0x9a6e('0x22')](function(_0x39c649){return db[_0x9a6e('0x96')]['bulkCreate'](createExtensionsReciveFax(_[_0x9a6e('0x75')](_0x2f53c6[_0x9a6e('0x5d')],['tech','key',_0x9a6e('0x99'),'updatedAt',_0x9a6e('0x9a'),_0x9a6e('0x9b')])),{'transaction':_0x4b56a0});});});})[_0x9a6e('0x22')](function(){return db['FaxAccount']['findById'](_0x2f53c6[_0x9a6e('0x5d')]['id']);})[_0x9a6e('0x22')](respondWithResult(_0x24afac,null))[_0x9a6e('0x2d')](handleError(_0x24afac,null));};exports[_0x9a6e('0x9c')]=function(_0x1d6963,_0x3df14b,_0x1d28b6){var _0x3acec6={'raw':!![],'where':{}};var _0x44e107={};var _0x4d4215={'count':0x0,'rows':[]};return db[_0x9a6e('0x44')][_0x9a6e('0x68')]({'where':{'id':_0x1d6963['params']['id']}})['then'](handleEntityNotFound(_0x3df14b,null))[_0x9a6e('0x22')](function(_0x423163){if(_0x423163){_0x44e107[_0x9a6e('0x48')]=_['keys'](db[_0x9a6e('0x9d')][_0x9a6e('0x69')]);_0x44e107[_0x9a6e('0x49')]=_[_0x9a6e('0x4a')](_0x1d6963[_0x9a6e('0x49')]);_0x44e107[_0x9a6e('0x4b')]=_[_0x9a6e('0x4c')](_0x44e107['model'],_0x44e107['query']);_0x3acec6['attributes']=_[_0x9a6e('0x4c')](_0x44e107[_0x9a6e('0x48')],qs['fields'](_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x4e')]));_0x3acec6[_0x9a6e('0x4d')]=_0x3acec6[_0x9a6e('0x4d')][_0x9a6e('0x4f')]?_0x3acec6[_0x9a6e('0x4d')]:_0x44e107[_0x9a6e('0x48')];if(!_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x50')](_0x9a6e('0x6a'))){_0x3acec6[_0x9a6e('0x35')]=qs['limit'](_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x35')]);_0x3acec6[_0x9a6e('0x32')]=qs['offset'](_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x32')]);}_0x3acec6[_0x9a6e('0x51')]=qs[_0x9a6e('0x6b')](_0x1d6963['query']['sort']);_0x3acec6[_0x9a6e('0x52')]=qs[_0x9a6e('0x4b')](_['pick'](_0x1d6963[_0x9a6e('0x49')],_0x44e107[_0x9a6e('0x4b')]));_0x3acec6[_0x9a6e('0x52')][_0x9a6e('0x66')]=_0x423163['id'];if(_0x1d6963['query'][_0x9a6e('0x54')]){_0x3acec6['where']=_[_0x9a6e('0x55')](_0x3acec6[_0x9a6e('0x52')],{'$or':_['map'](_0x3acec6[_0x9a6e('0x4d')],function(_0x3e495f){var _0x27587f={};_0x27587f[_0x3e495f]={'$like':'%'+_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x54')]+'%'};return _0x27587f;})});}if(_0x1d6963['query']['$gte']){var _0x276c83=_0x1d6963[_0x9a6e('0x49')][_0x9a6e('0x9e')]['split'](',');var _0x223f3a={};_0x223f3a[_0x276c83[0x0]]={'$gte':moment(_0x276c83[0x1])[_0x9a6e('0x9f')](_0x9a6e('0xa0'))};_0x3acec6['where']=_['merge'](_0x3acec6[_0x9a6e('0x52')],_0x223f3a);}_0x3acec6=_[_0x9a6e('0x55')]({},_0x3acec6,_0x1d6963[_0x9a6e('0x57')]);return db['FaxMessage']['count']({'where':_0x3acec6[_0x9a6e('0x52')]})[_0x9a6e('0x22')](function(_0x5109fb){_0x4d4215['count']=_0x5109fb;if(_0x1d6963[_0x9a6e('0x49')]['includeAll']){_0x3acec6['include']=[{'all':!![]}];}return db[_0x9a6e('0x9d')][_0x9a6e('0x71')](_0x3acec6);})[_0x9a6e('0x22')](function(_0x290854){_0x4d4215[_0x9a6e('0x5a')]=_0x290854;return _0x4d4215;});}})[_0x9a6e('0x22')](respondWithFilteredResult(_0x3df14b,_0x3acec6))[_0x9a6e('0x2d')](handleError(_0x3df14b,null));};exports['send']=function(_0x283d27,_0x5eaca0,_0x1b13c5){var _0x5d82bb,_0x59ee91={},_0x27d98f;if(_0x283d27[_0x9a6e('0x5d')]['to']){_0x27d98f=_0x283d27[_0x9a6e('0x5d')]['to'][0x0];}return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x283d27[_0x9a6e('0x5b')]['id']},'include':[{'model':db[_0x9a6e('0xa1')],'as':_0x9a6e('0xa2'),'include':[{'model':db[_0x9a6e('0x76')],'as':_0x9a6e('0xa3'),'where':{'fax':_0x27d98f},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x9a6e('0x22')](handleEntityNotFound(_0x5eaca0,null))[_0x9a6e('0x22')](function(_0x5a33bd){_0x5d82bb=_0x5a33bd;if(_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')]&&_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')]['length']){for(var _0x237339=0x0;_0x237339<_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][_0x9a6e('0x4f')];_0x237339+=0x1){_0x283d27[_0x9a6e('0x5d')]['attachments'][_0x237339]={'filename':_0x283d27[_0x9a6e('0x5d')]['attachments'][_0x237339][_0x9a6e('0x3e')],'id':_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][_0x237339]['id'],'path':path[_0x9a6e('0xa5')](config['root'],'server/files/attachments',_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][_0x237339][_0x9a6e('0xa6')])};}}return respondWithRpcPromise(_0x9a6e('0xa7'),_0x9a6e('0xa7'),{'FaxAccountId':_[_0x9a6e('0xa8')](_0x283d27['params']['id'])?undefined:_0x283d27[_0x9a6e('0x5b')]['id'],'path':_[_0x9a6e('0xa8')](_0x283d27['body'][_0x9a6e('0xa4')][0x0][_0x9a6e('0xa9')])?undefined:_0x283d27[_0x9a6e('0x5d')]['attachments'][0x0][_0x9a6e('0xa9')],'fax':_[_0x9a6e('0xa8')](_0x283d27['body']['to'][0x0])?undefined:_0x283d27[_0x9a6e('0x5d')]['to'][0x0]},client9002);})[_0x9a6e('0x22')](function(){if(_0x5d82bb){if(_['isNil'](_0x283d27[_0x9a6e('0x5d')]['from'])){_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xaa')]=util[_0x9a6e('0x9f')](_0x9a6e('0xab'),_0x5d82bb[_0x9a6e('0x3e')],_0x5d82bb[_0x9a6e('0xac')]);}if(_0x5d82bb['List']){if(_0x5d82bb[_0x9a6e('0xa2')][_0x9a6e('0xa3')]['length']){return _0x5d82bb[_0x9a6e('0xa2')][_0x9a6e('0xa3')][0x0];}else{return db[_0x9a6e('0x76')][_0x9a6e('0x5c')](_[_0x9a6e('0x1a')](_0x283d27[_0x9a6e('0x5d')],{'firstName':_0x283d27[_0x9a6e('0x5d')]['to'][0x0],'phone':_0x283d27[_0x9a6e('0x5d')]['to'][0x0],'fax':_0x283d27[_0x9a6e('0x5d')]['to'][0x0],'ListId':_0x5d82bb[_0x9a6e('0x9b')]}));}}else{throw new Error(_0x9a6e('0xad'));}}else{throw new Error('Send\x20Fax\x20failed');}})[_0x9a6e('0x22')](function(_0x4bb1c1){if(_0x4bb1c1){return db['FaxInteraction']['find']({'where':{'ContactId':_0x4bb1c1['id'],'closed':![],'FaxAccountId':_0x5d82bb['id']}})[_0x9a6e('0x22')](function(_0x5dc5a6){if(_0x5dc5a6){return[_0x5dc5a6,![]];}return db[_0x9a6e('0x74')][_0x9a6e('0x5c')]({'UserId':_0x283d27[_0x9a6e('0x5e')]['id'],'ContactId':_0x4bb1c1['id'],'FaxAccountId':_0x5d82bb['id'],'fax':_0x283d27['body']['to'][0x0],'firstMsgDirection':'out','Messages':[_[_0x9a6e('0x55')](_0x283d27['body'],{'read':![],'body':_0x283d27[_0x9a6e('0x5d')]['attachments'][0x0][_0x9a6e('0xae')],'FaxAccountId':_0x5d82bb['id'],'UserId':_0x283d27[_0x9a6e('0x5e')]['id'],'ContactId':_0x4bb1c1['id'],'AttachmentId':_0x283d27[_0x9a6e('0x5d')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0x9a6e('0x9d')],'as':_0x9a6e('0xaf')}]})[_0x9a6e('0x22')](function(_0x472045){return[_0x472045,!![]];});});}else{throw new Error(_0x9a6e('0xb0'));}})[_0x9a6e('0xb1')](function(_0x2caf17,_0x43581f){if(_0x43581f){return _0x2caf17;}return db['FaxMessage']['create']({'direction':_0x9a6e('0xb2'),'read':![],'body':_0x283d27['body'][_0x9a6e('0xa4')][0x0]['filename'],'FaxAccountId':_0x5d82bb['id'],'FaxInteractionId':_0x2caf17['id'],'UserId':_0x283d27[_0x9a6e('0x5e')]['id'],'ContactId':_0x2caf17[_0x9a6e('0xb3')],'AttachmentId':_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][0x0]['id']})[_0x9a6e('0x22')](function(_0x42015e){_0x2caf17[_0x9a6e('0xb4')][_0x9a6e('0xaf')]=[];_0x2caf17[_0x9a6e('0xb4')]['Messages'][_0x9a6e('0x89')](_0x42015e[_0x9a6e('0xb4')]);return _0x2caf17;});})['then'](function(_0x48b024){respondWithRpcPromise(_0x9a6e('0xb5'),_0x9a6e('0xb5'),{'FaxAccountId':_[_0x9a6e('0xa8')](_0x283d27[_0x9a6e('0x5b')]['id'])?undefined:_0x283d27[_0x9a6e('0x5b')]['id'],'path':_['isNil'](_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][0x0]['path'])?undefined:_0x283d27[_0x9a6e('0x5d')][_0x9a6e('0xa4')][0x0][_0x9a6e('0xa9')],'fax':_[_0x9a6e('0xa8')](_0x283d27[_0x9a6e('0x5d')]['to'][0x0])?undefined:_0x283d27['body']['to'][0x0],'AttachmentId':_0x283d27['body'][_0x9a6e('0xa4')][0x0]['id']},client9002)[_0x9a6e('0x22')](function(_0x14c1f3){logger['info'](_0x9a6e('0xb6'),_0x14c1f3);})[_0x9a6e('0x2d')](function(_0x4887e5){logger[_0x9a6e('0x23')]('SendFaxRpc,\x20%s',_0x4887e5);});return _0x48b024;})['then'](respondWithResult(_0x5eaca0,null))[_0x9a6e('0x2d')](handleError(_0x5eaca0,null));};exports[_0x9a6e('0xb7')]=function(_0x5ac8b2,_0x25f1f1,_0x25885e){return db[_0x9a6e('0x44')][_0x9a6e('0x61')]({'where':{'id':_0x5ac8b2['params']['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x25f1f1,null))[_0x9a6e('0x22')](function(_0x3ae932){if(_0x3ae932){return _0x3ae932[_0x9a6e('0xb7')](_0x5ac8b2[_0x9a6e('0x5d')]['ids'],_[_0x9a6e('0x75')](_0x5ac8b2['body'],[_0x9a6e('0x6d'),'id'])||{})[_0x9a6e('0xb1')](function(_0x5b9f42){for(var _0x1f598b=0x0;_0x1f598b<_0x5ac8b2[_0x9a6e('0x5d')][_0x9a6e('0x6d')]['length'];_0x1f598b+=0x1){socket[_0x9a6e('0xb8')]('userFaxAccount:save',{'UserId':Number(_0x5ac8b2[_0x9a6e('0x5d')]['ids'][_0x1f598b]),'FaxAccountId':Number(_0x5ac8b2[_0x9a6e('0x5b')]['id'])});}return _0x5b9f42;});}})[_0x9a6e('0x22')](respondWithResult(_0x25f1f1,null))['catch'](handleError(_0x25f1f1,null));};exports[_0x9a6e('0xb9')]=function(_0x5dbdd5,_0x33a1d7,_0x38d73f){return db['FaxAccount'][_0x9a6e('0x61')]({'where':{'id':_0x5dbdd5[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x33a1d7,null))[_0x9a6e('0x22')](function(_0x3f0385){if(_0x3f0385){return _0x3f0385[_0x9a6e('0xb9')](_0x5dbdd5[_0x9a6e('0x49')][_0x9a6e('0x6d')])[_0x9a6e('0x22')](function(){if(_[_0x9a6e('0xba')](_0x5dbdd5[_0x9a6e('0x49')]['ids'])){for(var _0x5edc2a=0x0;_0x5edc2a<_0x5dbdd5[_0x9a6e('0x49')]['ids']['length'];_0x5edc2a+=0x1){socket['emit'](_0x9a6e('0xbb'),{'UserId':Number(_0x5dbdd5[_0x9a6e('0x49')][_0x9a6e('0x6d')][_0x5edc2a]),'FaxAccountId':Number(_0x5dbdd5[_0x9a6e('0x5b')]['id'])});}}else{socket[_0x9a6e('0xb8')]('userFaxAccount:remove',{'UserId':Number(_0x5dbdd5[_0x9a6e('0x49')][_0x9a6e('0x6d')]),'FaxAccountId':Number(_0x5dbdd5['params']['id'])});}});}})['then'](respondWithStatusCode(_0x33a1d7,null))['catch'](handleError(_0x33a1d7,null));};exports[_0x9a6e('0xbc')]=function(_0x513d99,_0x38a99b,_0x5bf403){var _0x3c3c84={};var _0x224a4a={};var _0x25bcea;var _0x5d7e79;return db[_0x9a6e('0x44')]['findOne']({'where':{'id':_0x513d99[_0x9a6e('0x5b')]['id']}})[_0x9a6e('0x22')](handleEntityNotFound(_0x38a99b,null))[_0x9a6e('0x22')](function(_0x31d4d7){if(_0x31d4d7){_0x25bcea=_0x31d4d7;_0x224a4a['model']=_[_0x9a6e('0x4a')](db[_0x9a6e('0xbd')]['rawAttributes']);_0x224a4a['query']=_['keys'](_0x513d99[_0x9a6e('0x49')]);_0x224a4a[_0x9a6e('0x4b')]=_['intersection'](_0x224a4a[_0x9a6e('0x48')],_0x224a4a[_0x9a6e('0x49')]);_0x3c3c84[_0x9a6e('0x4d')]=_[_0x9a6e('0x4c')](_0x224a4a['model'],qs[_0x9a6e('0x4e')](_0x513d99['query'][_0x9a6e('0x4e')]));_0x3c3c84[_0x9a6e('0x4d')]=_0x3c3c84['attributes'][_0x9a6e('0x4f')]?_0x3c3c84[_0x9a6e('0x4d')]:_0x224a4a[_0x9a6e('0x48')];_0x3c3c84['order']=qs[_0x9a6e('0x6b')](_0x513d99[_0x9a6e('0x49')][_0x9a6e('0x6b')]);_0x3c3c84['where']=qs[_0x9a6e('0x4b')](_['pick'](_0x513d99[_0x9a6e('0x49')],_0x224a4a[_0x9a6e('0x4b')]));if(_0x513d99[_0x9a6e('0x49')][_0x9a6e('0x54')]){_0x3c3c84[_0x9a6e('0x52')]=_['merge'](_0x3c3c84[_0x9a6e('0x52')],{'$or':_[_0x9a6e('0x43')](_0x3c3c84['attributes'],function(_0x200c72){var _0xfff30={};_0xfff30[_0x200c72]={'$like':'%'+_0x513d99[_0x9a6e('0x49')]['filter']+'%'};return _0xfff30;})});}_0x3c3c84=_[_0x9a6e('0x55')]({},_0x3c3c84,_0x513d99[_0x9a6e('0x57')]);return _0x25bcea[_0x9a6e('0xbc')](_0x3c3c84);}})[_0x9a6e('0x22')](function(_0x491285){if(_0x491285){_0x5d7e79=_0x491285[_0x9a6e('0x4f')];if(!_0x513d99[_0x9a6e('0x49')][_0x9a6e('0x50')]('nolimit')){_0x3c3c84[_0x9a6e('0x35')]=qs[_0x9a6e('0x35')](_0x513d99[_0x9a6e('0x49')]['limit']);_0x3c3c84['offset']=qs[_0x9a6e('0x32')](_0x513d99[_0x9a6e('0x49')]['offset']);}return _0x25bcea[_0x9a6e('0xbc')](_0x3c3c84);}})[_0x9a6e('0x22')](function(_0x3aa3c6){if(_0x3aa3c6){return _0x3aa3c6?{'count':_0x5d7e79,'rows':_0x3aa3c6}:null;}})[_0x9a6e('0x22')](respondWithResult(_0x38a99b,null))['catch'](handleError(_0x38a99b,null));};
\ No newline at end of file
index 5738057..44af29f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd03=['hook','exports','events','FaxAccount','save','update','remove','emit','hasOwnProperty'];(function(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0xcd03,0x14f));var _0x3cd0=function(_0x4313af,_0x2e1e1e){_0x4313af=_0x4313af-0x0;var _0x2f31c3=_0xcd03[_0x4313af];return _0x2f31c3;};'use strict';var EventEmitter=require(_0x3cd0('0x0'));var FaxAccount=require('../../mysqldb')['db'][_0x3cd0('0x1')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x3cd0('0x2'),'afterUpdate':_0x3cd0('0x3'),'afterDestroy':_0x3cd0('0x4')};function emitEvent(_0x943d62){return function(_0x10841e,_0x4fdf59,_0x2ef9a3){FaxAccountEvents[_0x3cd0('0x5')](_0x943d62+':'+_0x10841e['id'],_0x10841e);FaxAccountEvents[_0x3cd0('0x5')](_0x943d62,_0x10841e);_0x2ef9a3(null);};}for(var e in events){if(events[_0x3cd0('0x6')](e)){var event=events[e];FaxAccount[_0x3cd0('0x7')](e,emitEvent(event));}}module[_0x3cd0('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x1ae6=['setMaxListeners','save','update','remove','emit','events','../../mysqldb','FaxAccount'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1ae6,0x65));var _0x61ae=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x1ae6[_0x3ff085];return _0x2b68c3;};'use strict';var EventEmitter=require(_0x61ae('0x0'));var FaxAccount=require(_0x61ae('0x1'))['db'][_0x61ae('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x61ae('0x3')](0x0);var events={'afterCreate':_0x61ae('0x4'),'afterUpdate':_0x61ae('0x5'),'afterDestroy':_0x61ae('0x6')};function emitEvent(_0x2ad464){return function(_0x46786f,_0xd30402,_0x23fe3f){FaxAccountEvents[_0x61ae('0x7')](_0x2ad464+':'+_0x46786f['id'],_0x46786f);FaxAccountEvents[_0x61ae('0x7')](_0x2ad464,_0x46786f);_0x23fe3f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
index d6c1523..aa2b237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b40=['./faxAccount.attributes','exports','FaxAccount','fax_accounts','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x3c9c2e,_0x1e7d40){var _0x269196=function(_0x1cb3c7){while(--_0x1cb3c7){_0x3c9c2e['push'](_0x3c9c2e['shift']());}};_0x269196(++_0x1e7d40);}(_0x5b40,0xca));var _0x05b4=function(_0x502b8b,_0xfd3c6b){_0x502b8b=_0x502b8b-0x0;var _0x234379=_0x5b40[_0x502b8b];return _0x234379;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x05b4('0x0'))(_0x05b4('0x1'));var moment=require(_0x05b4('0x2'));var BPromise=require(_0x05b4('0x3'));var rp=require(_0x05b4('0x4'));var fs=require('fs');var path=require(_0x05b4('0x5'));var rimraf=require('rimraf');var config=require(_0x05b4('0x6'));var attributes=require(_0x05b4('0x7'));module[_0x05b4('0x8')]=function(_0x19d946,_0x375774){return _0x19d946['define'](_0x05b4('0x9'),attributes,{'tableName':_0x05b4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x37c0=['FaxAccount','fax_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','exports'];(function(_0x3d4c58,_0x3b206e){var _0x537a41=function(_0x9bf1d0){while(--_0x9bf1d0){_0x3d4c58['push'](_0x3d4c58['shift']());}};_0x537a41(++_0x3b206e);}(_0x37c0,0xf2));var _0x037c=function(_0x222145,_0x571dad){_0x222145=_0x222145-0x0;var _0x2f2fb8=_0x37c0[_0x222145];return _0x2f2fb8;};'use strict';var _=require(_0x037c('0x0'));var util=require('util');var logger=require(_0x037c('0x1'))(_0x037c('0x2'));var moment=require(_0x037c('0x3'));var BPromise=require(_0x037c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x037c('0x5'));var rimraf=require(_0x037c('0x6'));var config=require(_0x037c('0x7'));var attributes=require(_0x037c('0x8'));module[_0x037c('0x9')]=function(_0x178287,_0x25f7d3){return _0x178287['define'](_0x037c('0xa'),attributes,{'tableName':_0x037c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index adb3979..ff51c7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1020=['localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes','include','model','map','body','fax','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','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','from','find','account','CmList','List','Contacts','DESC','FaxApplication','Applications','get','applications','list','orderBy','asc','length','CmContact','create','contact','FaxInteraction','Contact\x20not\x20found','spread','push','close','unmanaged','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','name','agent','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults'];(function(_0x3e9da2,_0x371e32){var _0x1081bb=function(_0x1024c0){while(--_0x1024c0){_0x3e9da2['push'](_0x3e9da2['shift']());}};_0x1081bb(++_0x371e32);}(_0x1020,0x1c1));var _0x0102=function(_0x336ca2,_0x1a813a){_0x336ca2=_0x336ca2-0x0;var _0xda59a6=_0x1020[_0x336ca2];return _0xda59a6;};'use strict';var _=require(_0x0102('0x0'));var util=require('util');var moment=require(_0x0102('0x1'));var BPromise=require('bluebird');var rs=require(_0x0102('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0102('0x3'))['db'];var utils=require(_0x0102('0x4'));var logger=require(_0x0102('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0102('0x6'));var client=jayson[_0x0102('0x7')][_0x0102('0x8')]({'port':0x232c});config[_0x0102('0x9')]=_[_0x0102('0xa')](config[_0x0102('0x9')],{'host':_0x0102('0xb'),'port':0x18eb});var socket=require(_0x0102('0xc'))(new Redis(config[_0x0102('0x9')]));require(_0x0102('0xd'))[_0x0102('0xe')](socket);function respondWithRpcPromise(_0x1483ca,_0x35261f,_0x5c9118){return new BPromise(function(_0x3016bf,_0x4af40a){return client[_0x0102('0xf')](_0x1483ca,_0x5c9118)[_0x0102('0x10')](function(_0x37b870){logger[_0x0102('0x11')](_0x0102('0x12'),_0x35261f,'request\x20sent');logger[_0x0102('0x13')](_0x0102('0x14'),_0x35261f,_0x0102('0x15'),JSON[_0x0102('0x16')](_0x37b870));if(_0x37b870[_0x0102('0x17')]){if(_0x37b870[_0x0102('0x17')]['code']===0x1f4){logger['error']('FaxAccount,\x20%s,\x20%s',_0x35261f,_0x37b870['error'][_0x0102('0x18')]);return _0x4af40a(_0x37b870['error'][_0x0102('0x18')]);}logger[_0x0102('0x17')](_0x0102('0x12'),_0x35261f,_0x37b870['error'][_0x0102('0x18')]);return _0x3016bf(_0x37b870['error']['message']);}else{logger[_0x0102('0x11')](_0x0102('0x12'),_0x35261f,_0x0102('0x15'));_0x3016bf(_0x37b870[_0x0102('0x19')][_0x0102('0x18')]);}})[_0x0102('0x1a')](function(_0x262978){logger[_0x0102('0x17')]('FaxAccount,\x20%s,\x20%s',_0x35261f,_0x262978);_0x4af40a(_0x262978);});});}exports[_0x0102('0x1b')]=function(_0x4e0e00){var _0x2aec2f=this;return new Promise(function(_0x12fea5,_0x19e9c3){return db[_0x0102('0x1c')][_0x0102('0x1d')]({'raw':_0x4e0e00[_0x0102('0x1e')]?_0x4e0e00[_0x0102('0x1e')][_0x0102('0x1f')]===undefined?!![]:![]:!![],'where':_0x4e0e00[_0x0102('0x1e')]?_0x4e0e00[_0x0102('0x1e')][_0x0102('0x20')]||null:null,'attributes':_0x4e0e00[_0x0102('0x1e')]?_0x4e0e00[_0x0102('0x1e')][_0x0102('0x21')]||null:null,'limit':_0x4e0e00[_0x0102('0x1e')]?_0x4e0e00[_0x0102('0x1e')]['limit']||null:null,'include':_0x4e0e00[_0x0102('0x1e')]?_0x4e0e00[_0x0102('0x1e')][_0x0102('0x22')]?_['map'](_0x4e0e00[_0x0102('0x1e')]['include'],function(_0x40026c){return{'model':db[_0x40026c[_0x0102('0x23')]],'as':_0x40026c['as'],'attributes':_0x40026c['attributes'],'include':_0x40026c[_0x0102('0x22')]?_[_0x0102('0x24')](_0x40026c['include'],function(_0x329fea){return{'model':db[_0x329fea[_0x0102('0x23')]],'as':_0x329fea['as'],'attributes':_0x329fea[_0x0102('0x21')],'include':_0x329fea[_0x0102('0x22')]?_[_0x0102('0x24')](_0x329fea[_0x0102('0x22')],function(_0x5710eb){return{'model':db[_0x5710eb[_0x0102('0x23')]],'as':_0x5710eb['as'],'attributes':_0x5710eb['attributes']};}):[]};}):[]};}):[]:[]})[_0x0102('0x10')](function(_0x270456){logger[_0x0102('0x11')](_0x0102('0x1b'),_0x4e0e00);logger[_0x0102('0x13')](_0x0102('0x1b'),_0x4e0e00,JSON['stringify'](_0x270456));_0x12fea5(_0x270456);})[_0x0102('0x1a')](function(_0x5ad28f){logger['error'](_0x0102('0x1b'),_0x5ad28f[_0x0102('0x18')],_0x4e0e00);_0x19e9c3(_0x2aec2f[_0x0102('0x17')](0x1f4,_0x5ad28f[_0x0102('0x18')]));});});};exports['NotifyFaxAccount']=function(_0x50a150,_0x312480,_0x57555c){var _0x261962=this;return new Promise(function(_0x1ee6ee,_0x288f1d){var _0x59e536={'body':_0x50a150[_0x0102('0x25')],'channel':_0x0102('0x26')};var _0x5afa55=[];var _0x3b4f7e=[];var _0x5c69d0={};return db['CmContact'][_0x0102('0x27')]()[_0x0102('0x10')](function(_0x32d318){if(!_0x32d318){throw new db[(_0x0102('0x28'))][(_0x0102('0x29'))](_0x0102('0x2a'));}_0x5afa55=_[_0x0102('0x2b')](_[_0x0102('0x2c')](_0x32d318),[_0x0102('0x2d'),_0x0102('0x2e')]);_0x3b4f7e=_['difference'](_['keys'](_0x32d318),[_0x0102('0x2d'),_0x0102('0x2e'),_0x0102('0x2f'),_0x0102('0x30')]);if(_0x50a150[_0x0102('0x25')]['id']){delete _0x50a150['body']['id'];}if(_[_0x0102('0x31')](_0x50a150['body']['from'])){throw new db[(_0x0102('0x28'))][(_0x0102('0x29'))](_0x0102('0x32'));}if(_[_0x0102('0x31')](_0x50a150[_0x0102('0x25')][_0x0102('0x25')])||_0x50a150[_0x0102('0x25')]['body']===''){throw new db[(_0x0102('0x28'))][(_0x0102('0x29'))](_0x0102('0x33'));}if(_[_0x0102('0x31')](_0x50a150[_0x0102('0x25')][_0x0102('0x34')])){throw new db['Sequelize']['ValidationError'](_0x0102('0x35')+_0x3b4f7e);}if(!_[_0x0102('0x36')](_0x3b4f7e,_0x50a150[_0x0102('0x25')][_0x0102('0x34')])){throw new db[(_0x0102('0x28'))][(_0x0102('0x29'))](_0x0102('0x37')+_0x3b4f7e);}_0x5c69d0[_0x50a150[_0x0102('0x25')][_0x0102('0x34')]]=_0x50a150[_0x0102('0x25')][_0x0102('0x38')];})[_0x0102('0x10')](function(){return db[_0x0102('0x1c')][_0x0102('0x39')]({'where':{'id':_0x50a150[_0x0102('0x3a')]['id']},'include':[{'model':db[_0x0102('0x3b')],'as':_0x0102('0x3c'),'include':[{'model':db['CmContact'],'as':_0x0102('0x3d'),'where':_0x5c69d0,'limit':0x1,'order':[['updatedAt',_0x0102('0x3e')]]}]},{'model':db[_0x0102('0x3f')],'as':_0x0102('0x40')}]});})['then'](function(_0x221765){if(_0x221765&&_0x221765[_0x0102('0x3c')]){var _0x573509=_0x221765[_0x0102('0x41')]({'plain':!![]});_0x59e536[_0x0102('0x3a')]=_0x573509;_0x59e536[_0x0102('0x42')]=_0x573509[_0x0102('0x40')];_0x59e536[_0x0102('0x43')]=_0x573509[_0x0102('0x3c')];_0x59e536[_0x0102('0x42')]=_[_0x0102('0x44')](_0x59e536[_0x0102('0x42')],['priority'],[_0x0102('0x45')]);if(_0x59e536[_0x0102('0x3a')][_0x0102('0x40')]){delete _0x59e536[_0x0102('0x3a')][_0x0102('0x40')];}if(_0x59e536[_0x0102('0x3a')][_0x0102('0x3c')]&&_0x59e536[_0x0102('0x3a')][_0x0102('0x3c')][_0x0102('0x3d')][_0x0102('0x46')]){return _0x59e536[_0x0102('0x3a')][_0x0102('0x3c')]['Contacts'][0x0];}var _0xd850e1=_[_0x0102('0xa')](_0x50a150[_0x0102('0x25')],{'firstName':_0x50a150[_0x0102('0x25')]['from'],'ListId':_0x573509[_0x0102('0x30')]});_0xd850e1[_0x50a150[_0x0102('0x25')][_0x0102('0x34')]]=_0x50a150[_0x0102('0x25')][_0x0102('0x38')];return db[_0x0102('0x47')][_0x0102('0x48')](_0xd850e1,{'fields':_0x5afa55,'raw':!![]});}})[_0x0102('0x10')](function(_0x2641df){_0x59e536[_0x0102('0x49')]=_0x2641df;if(_0x2641df){var _0x3d98db={'ContactId':_0x2641df['id'],'FaxAccountId':_0x50a150[_0x0102('0x3a')]['id'],'fax':_0x2641df['fax']};return db['FaxInteraction'][_0x0102('0x39')]({'where':{'ContactId':_0x2641df['id'],'closed':![],'FaxAccountId':_0x50a150[_0x0102('0x3a')]['id']}})[_0x0102('0x10')](function(_0x1ef91b){if(_0x1ef91b){return[_0x1ef91b,![]];}return db[_0x0102('0x4a')][_0x0102('0x48')](_0x3d98db)['then'](function(_0x15908a){return[_0x15908a,!![]];});});}else{throw new Error(_0x0102('0x4b'));}})[_0x0102('0x4c')](function(_0xfa8a81,_0xd11c22){var _0x51ad65=_0xfa8a81[_0x0102('0x41')]({'plain':!![]});if(_0xd11c22){if(_0x59e536[_0x0102('0x3a')]['autoclose']){_0x59e536[_0x0102('0x42')][_0x0102('0x4d')]({'id':0x0,'priority':_0x59e536[_0x0102('0x42')]['length']+0x1,'app':_0x0102('0x4e'),'appdata':_0x0102('0x4f'),'interval':'*,*,*,*'});}_0x51ad65[_0x0102('0x50')]=!![];}else{_0x51ad65[_0x0102('0x50')]=![];}_0x59e536[_0x0102('0x51')]=_0x51ad65;return db[_0x0102('0x52')][_0x0102('0x48')]({'body':_0x50a150[_0x0102('0x25')][_0x0102('0x25')],'FaxAccountId':_0x50a150['account']['id'],'FaxInteractionId':_0xfa8a81['id'],'direction':'in','ContactId':_0xfa8a81[_0x0102('0x53')],'AttachmentId':_0x50a150['body'][_0x0102('0x54')]});})[_0x0102('0x10')](function(_0x47d633){_0x59e536['message']=_0x47d633;if(_0x59e536[_0x0102('0x51')][_0x0102('0x55')]){return db['User']['find']({'attributes':['id',_0x0102('0x56')],'where':{'id':_0x59e536[_0x0102('0x51')][_0x0102('0x55')]}})[_0x0102('0x10')](function(_0x5a2e4e){if(_0x5a2e4e){_0x59e536[_0x0102('0x42')]['unshift']({'id':0x0,'priority':0x0,'app':_0x0102('0x57'),'appdata':_0x5a2e4e[_0x0102('0x56')]+','+(_0x59e536[_0x0102('0x3a')][_0x0102('0x58')]||0xa),'interval':_0x0102('0x59')});}return respondWithRpcPromise(_0x0102('0x5a'),_0x0102('0x5b'),_0x59e536);});}return respondWithRpcPromise(_0x0102('0x5a'),_0x0102('0x5b'),_0x59e536);})[_0x0102('0x10')](function(_0x548cb2){_0x1ee6ee(_0x548cb2);})[_0x0102('0x1a')](function(_0x5619a5){_0x288f1d(_0x261962[_0x0102('0x17')](0x1f4,_0x5619a5[_0x0102('0x18')]));});});};
\ No newline at end of file
+var _0xee17=['limit','include','map','model','then','catch','NotifyFaxAccount','body','CmContact','describe','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','from','ValidationError','from\x20is\x20mandatory','Sequelize','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','List','Contacts','Applications','get','account','applications','length','create','contact','fax','FaxInteraction','spread','autoclose','unmanaged','created','interaction','FaxMessage','ContactId','UserId','User','find','agent','name','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxAccount.socket','register','info','request\x20sent','debug','stringify','code','error','FaxAccount,\x20%s,\x20%s','message','GetFaxAccount','FaxAccount','findAll','options','raw','where','attributes'];(function(_0x32a480,_0x39432d){var _0x1d5f2c=function(_0x597c38){while(--_0x597c38){_0x32a480['push'](_0x32a480['shift']());}};_0x1d5f2c(++_0x39432d);}(_0xee17,0x1ea));var _0x7ee1=function(_0x13caf5,_0x298c07){_0x13caf5=_0x13caf5-0x0;var _0x542e5c=_0xee17[_0x13caf5];return _0x542e5c;};'use strict';var _=require('lodash');var util=require(_0x7ee1('0x0'));var moment=require('moment');var BPromise=require(_0x7ee1('0x1'));var rs=require(_0x7ee1('0x2'));var fs=require('fs');var Redis=require(_0x7ee1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7ee1('0x4'));var logger=require(_0x7ee1('0x5'))(_0x7ee1('0x6'));var config=require(_0x7ee1('0x7'));var jayson=require(_0x7ee1('0x8'));var client=jayson[_0x7ee1('0x9')][_0x7ee1('0xa')]({'port':0x232c});config[_0x7ee1('0xb')]=_[_0x7ee1('0xc')](config[_0x7ee1('0xb')],{'host':_0x7ee1('0xd'),'port':0x18eb});var socket=require(_0x7ee1('0xe'))(new Redis(config[_0x7ee1('0xb')]));require(_0x7ee1('0xf'))[_0x7ee1('0x10')](socket);function respondWithRpcPromise(_0x4b22b3,_0x45e28a,_0x1242c2){return new BPromise(function(_0x123513,_0x2126be){return client['request'](_0x4b22b3,_0x1242c2)['then'](function(_0x355145){logger[_0x7ee1('0x11')]('FaxAccount,\x20%s,\x20%s',_0x45e28a,_0x7ee1('0x12'));logger[_0x7ee1('0x13')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x45e28a,_0x7ee1('0x12'),JSON[_0x7ee1('0x14')](_0x355145));if(_0x355145['error']){if(_0x355145['error'][_0x7ee1('0x15')]===0x1f4){logger[_0x7ee1('0x16')](_0x7ee1('0x17'),_0x45e28a,_0x355145[_0x7ee1('0x16')][_0x7ee1('0x18')]);return _0x2126be(_0x355145[_0x7ee1('0x16')][_0x7ee1('0x18')]);}logger[_0x7ee1('0x16')]('FaxAccount,\x20%s,\x20%s',_0x45e28a,_0x355145['error']['message']);return _0x123513(_0x355145[_0x7ee1('0x16')]['message']);}else{logger[_0x7ee1('0x11')](_0x7ee1('0x17'),_0x45e28a,_0x7ee1('0x12'));_0x123513(_0x355145['result'][_0x7ee1('0x18')]);}})['catch'](function(_0x2690e9){logger[_0x7ee1('0x16')](_0x7ee1('0x17'),_0x45e28a,_0x2690e9);_0x2126be(_0x2690e9);});});}exports[_0x7ee1('0x19')]=function(_0x504ae2){var _0x4b2a18=this;return new Promise(function(_0x2b0ffc,_0x48337d){return db[_0x7ee1('0x1a')][_0x7ee1('0x1b')]({'raw':_0x504ae2[_0x7ee1('0x1c')]?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x1d')]===undefined?!![]:![]:!![],'where':_0x504ae2['options']?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x1e')]||null:null,'attributes':_0x504ae2[_0x7ee1('0x1c')]?_0x504ae2['options'][_0x7ee1('0x1f')]||null:null,'limit':_0x504ae2['options']?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x20')]||null:null,'include':_0x504ae2['options']?_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x21')]?_[_0x7ee1('0x22')](_0x504ae2[_0x7ee1('0x1c')][_0x7ee1('0x21')],function(_0x3b5611){return{'model':db[_0x3b5611[_0x7ee1('0x23')]],'as':_0x3b5611['as'],'attributes':_0x3b5611[_0x7ee1('0x1f')],'include':_0x3b5611[_0x7ee1('0x21')]?_['map'](_0x3b5611[_0x7ee1('0x21')],function(_0x34a55b){return{'model':db[_0x34a55b[_0x7ee1('0x23')]],'as':_0x34a55b['as'],'attributes':_0x34a55b[_0x7ee1('0x1f')],'include':_0x34a55b[_0x7ee1('0x21')]?_[_0x7ee1('0x22')](_0x34a55b[_0x7ee1('0x21')],function(_0x3a4dc0){return{'model':db[_0x3a4dc0[_0x7ee1('0x23')]],'as':_0x3a4dc0['as'],'attributes':_0x3a4dc0['attributes']};}):[]};}):[]};}):[]:[]})[_0x7ee1('0x24')](function(_0x2fbcf6){logger[_0x7ee1('0x11')](_0x7ee1('0x19'),_0x504ae2);logger[_0x7ee1('0x13')](_0x7ee1('0x19'),_0x504ae2,JSON['stringify'](_0x2fbcf6));_0x2b0ffc(_0x2fbcf6);})[_0x7ee1('0x25')](function(_0x20ecbd){logger[_0x7ee1('0x16')]('GetFaxAccount',_0x20ecbd[_0x7ee1('0x18')],_0x504ae2);_0x48337d(_0x4b2a18[_0x7ee1('0x16')](0x1f4,_0x20ecbd['message']));});});};exports[_0x7ee1('0x26')]=function(_0x5c39d0,_0x43ea3c,_0x310b49){var _0x4e1eb5=this;return new Promise(function(_0x3cd7b8,_0x2fb668){var _0x3e6d8f={'body':_0x5c39d0[_0x7ee1('0x27')],'channel':'fax'};var _0x5c5f23=[];var _0xe13f23=[];var _0x15c145={};return db[_0x7ee1('0x28')][_0x7ee1('0x29')]()[_0x7ee1('0x24')](function(_0x47adaa){if(!_0x47adaa){throw new db['Sequelize']['ValidationError'](_0x7ee1('0x2a'));}_0x5c5f23=_[_0x7ee1('0x2b')](_[_0x7ee1('0x2c')](_0x47adaa),[_0x7ee1('0x2d'),_0x7ee1('0x2e')]);_0xe13f23=_[_0x7ee1('0x2b')](_[_0x7ee1('0x2c')](_0x47adaa),[_0x7ee1('0x2d'),_0x7ee1('0x2e'),_0x7ee1('0x2f'),_0x7ee1('0x30')]);if(_0x5c39d0[_0x7ee1('0x27')]['id']){delete _0x5c39d0[_0x7ee1('0x27')]['id'];}if(_[_0x7ee1('0x31')](_0x5c39d0['body'][_0x7ee1('0x32')])){throw new db['Sequelize'][(_0x7ee1('0x33'))](_0x7ee1('0x34'));}if(_[_0x7ee1('0x31')](_0x5c39d0[_0x7ee1('0x27')]['body'])||_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x27')]===''){throw new db[(_0x7ee1('0x35'))][(_0x7ee1('0x33'))](_0x7ee1('0x36'));}if(_[_0x7ee1('0x31')](_0x5c39d0[_0x7ee1('0x27')]['mapKey'])){throw new db[(_0x7ee1('0x35'))][(_0x7ee1('0x33'))](_0x7ee1('0x37')+_0xe13f23);}if(!_[_0x7ee1('0x38')](_0xe13f23,_0x5c39d0['body'][_0x7ee1('0x39')])){throw new db[(_0x7ee1('0x35'))][(_0x7ee1('0x33'))](_0x7ee1('0x3a')+_0xe13f23);}_0x15c145[_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x39')]]=_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x32')];})[_0x7ee1('0x24')](function(){return db[_0x7ee1('0x1a')]['find']({'where':{'id':_0x5c39d0['account']['id']},'include':[{'model':db[_0x7ee1('0x3b')],'as':_0x7ee1('0x3c'),'include':[{'model':db[_0x7ee1('0x28')],'as':_0x7ee1('0x3d'),'where':_0x15c145,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db['FaxApplication'],'as':_0x7ee1('0x3e')}]});})['then'](function(_0x28a304){if(_0x28a304&&_0x28a304['List']){var _0x5c4b44=_0x28a304[_0x7ee1('0x3f')]({'plain':!![]});_0x3e6d8f[_0x7ee1('0x40')]=_0x5c4b44;_0x3e6d8f['applications']=_0x5c4b44['Applications'];_0x3e6d8f['list']=_0x5c4b44[_0x7ee1('0x3c')];_0x3e6d8f[_0x7ee1('0x41')]=_['orderBy'](_0x3e6d8f[_0x7ee1('0x41')],['priority'],['asc']);if(_0x3e6d8f[_0x7ee1('0x40')]['Applications']){delete _0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3e')];}if(_0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3c')]&&_0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3c')]['Contacts'][_0x7ee1('0x42')]){return _0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x3c')][_0x7ee1('0x3d')][0x0];}var _0x2645d9=_[_0x7ee1('0xc')](_0x5c39d0[_0x7ee1('0x27')],{'firstName':_0x5c39d0[_0x7ee1('0x27')]['from'],'ListId':_0x5c4b44['ListId']});_0x2645d9[_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x39')]]=_0x5c39d0[_0x7ee1('0x27')]['from'];return db[_0x7ee1('0x28')][_0x7ee1('0x43')](_0x2645d9,{'fields':_0x5c5f23,'raw':!![]});}})['then'](function(_0x769f5a){_0x3e6d8f[_0x7ee1('0x44')]=_0x769f5a;if(_0x769f5a){var _0x49f1ed={'ContactId':_0x769f5a['id'],'FaxAccountId':_0x5c39d0[_0x7ee1('0x40')]['id'],'fax':_0x769f5a[_0x7ee1('0x45')]};return db[_0x7ee1('0x46')]['find']({'where':{'ContactId':_0x769f5a['id'],'closed':![],'FaxAccountId':_0x5c39d0[_0x7ee1('0x40')]['id']}})[_0x7ee1('0x24')](function(_0x2f9251){if(_0x2f9251){return[_0x2f9251,![]];}return db[_0x7ee1('0x46')]['create'](_0x49f1ed)[_0x7ee1('0x24')](function(_0x489e78){return[_0x489e78,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x7ee1('0x47')](function(_0x195050,_0x5ec503){var _0xf49848=_0x195050[_0x7ee1('0x3f')]({'plain':!![]});if(_0x5ec503){if(_0x3e6d8f['account'][_0x7ee1('0x48')]){_0x3e6d8f['applications']['push']({'id':0x0,'priority':_0x3e6d8f['applications']['length']+0x1,'app':'close','appdata':_0x7ee1('0x49'),'interval':'*,*,*,*'});}_0xf49848[_0x7ee1('0x4a')]=!![];}else{_0xf49848[_0x7ee1('0x4a')]=![];}_0x3e6d8f[_0x7ee1('0x4b')]=_0xf49848;return db[_0x7ee1('0x4c')][_0x7ee1('0x43')]({'body':_0x5c39d0[_0x7ee1('0x27')][_0x7ee1('0x27')],'FaxAccountId':_0x5c39d0[_0x7ee1('0x40')]['id'],'FaxInteractionId':_0x195050['id'],'direction':'in','ContactId':_0x195050[_0x7ee1('0x4d')],'AttachmentId':_0x5c39d0['body']['AttachmentId']});})['then'](function(_0x20cda6){_0x3e6d8f[_0x7ee1('0x18')]=_0x20cda6;if(_0x3e6d8f[_0x7ee1('0x4b')][_0x7ee1('0x4e')]){return db[_0x7ee1('0x4f')][_0x7ee1('0x50')]({'attributes':['id','name'],'where':{'id':_0x3e6d8f[_0x7ee1('0x4b')][_0x7ee1('0x4e')]}})[_0x7ee1('0x24')](function(_0x41eb45){if(_0x41eb45){_0x3e6d8f[_0x7ee1('0x41')]['unshift']({'id':0x0,'priority':0x0,'app':_0x7ee1('0x51'),'appdata':_0x41eb45[_0x7ee1('0x52')]+','+(_0x3e6d8f[_0x7ee1('0x40')][_0x7ee1('0x53')]||0xa),'interval':_0x7ee1('0x54')});}return respondWithRpcPromise(_0x7ee1('0x55'),_0x7ee1('0x56'),_0x3e6d8f);});}return respondWithRpcPromise(_0x7ee1('0x55'),_0x7ee1('0x56'),_0x3e6d8f);})['then'](function(_0x164a38){_0x3cd7b8(_0x164a38);})[_0x7ee1('0x25')](function(_0x274317){_0x2fb668(_0x4e1eb5['error'](0x1f4,_0x274317[_0x7ee1('0x18')]));});});};
\ No newline at end of file
index 717883d..bb3c5d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ffb=['register','faxAccount:','./faxAccount.events','remove','update','removeListener'];(function(_0x45b8ca,_0x361efb){var _0x589fb8=function(_0x204979){while(--_0x204979){_0x45b8ca['push'](_0x45b8ca['shift']());}};_0x589fb8(++_0x361efb);}(_0x0ffb,0xce));var _0xb0ff=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0ffb[_0xa464c9];return _0x3d73c4;};'use strict';var FaxAccountEvents=require(_0xb0ff('0x0'));var events=['save',_0xb0ff('0x1'),_0xb0ff('0x2')];function createListener(_0x3cd7ac,_0x5cd1eb){return function(_0xfd26fd){_0x5cd1eb['emit'](_0x3cd7ac,_0xfd26fd);};}function removeListener(_0x3c6347,_0x54eb38){return function(){FaxAccountEvents[_0xb0ff('0x3')](_0x3c6347,_0x54eb38);};}exports[_0xb0ff('0x4')]=function(_0x2f9307){for(var _0x2bcde9=0x0,_0x535169=events['length'];_0x2bcde9<_0x535169;_0x2bcde9++){var _0x16e876=events[_0x2bcde9];var _0x138a37=createListener(_0xb0ff('0x5')+_0x16e876,_0x2f9307);FaxAccountEvents['on'](_0x16e876,_0x138a37);}};
\ No newline at end of file
+var _0x47d0=['./faxAccount.events','update','emit','register','length','faxAccount:'];(function(_0x41177b,_0x577df4){var _0x1f550a=function(_0xf3dd23){while(--_0xf3dd23){_0x41177b['push'](_0x41177b['shift']());}};_0x1f550a(++_0x577df4);}(_0x47d0,0xae));var _0x047d=function(_0x120303,_0x2c8472){_0x120303=_0x120303-0x0;var _0x1e4cd0=_0x47d0[_0x120303];return _0x1e4cd0;};'use strict';var FaxAccountEvents=require(_0x047d('0x0'));var events=['save','remove',_0x047d('0x1')];function createListener(_0x5a22c9,_0x5b56bd){return function(_0x417ab6){_0x5b56bd[_0x047d('0x2')](_0x5a22c9,_0x417ab6);};}function removeListener(_0x6042c6,_0x5be252){return function(){FaxAccountEvents['removeListener'](_0x6042c6,_0x5be252);};}exports[_0x047d('0x3')]=function(_0x29b942){for(var _0x375a3c=0x0,_0xd6842e=events[_0x047d('0x4')];_0x375a3c<_0xd6842e;_0x375a3c++){var _0x23554b=events[_0x375a3c];var _0x16f9c6=createListener(_0x047d('0x5')+_0x23554b,_0x29b942);FaxAccountEvents['on'](_0x23554b,_0x16f9c6);}};
\ No newline at end of file
index e2434f5..3860825 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(_0x23de89,_0x2d81c8){var _0x5bc644=function(_0x2d0300){while(--_0x2d0300){_0x23de89['push'](_0x23de89['shift']());}};_0x5bc644(++_0x2d81c8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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(_0x1d18eb,_0x44511f){var _0x1112e1=function(_0x293813){while(--_0x293813){_0x1d18eb['push'](_0x1d18eb['shift']());}};_0x1112e1(++_0x44511f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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 0a004e6..b2e157e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a2=['*,*,*,*','sequelize','STRING','noop'];(function(_0x91e09c,_0x7960a6){var _0x58ed46=function(_0x1ca4cb){while(--_0x1ca4cb){_0x91e09c['push'](_0x91e09c['shift']());}};_0x58ed46(++_0x7960a6);}(_0x98a2,0xf5));var _0x298a=function(_0x2c44f4,_0x524334){_0x2c44f4=_0x2c44f4-0x0;var _0x5b578a=_0x98a2[_0x2c44f4];return _0x5b578a;};'use strict';var Sequelize=require(_0x298a('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x298a('0x1')],'allowNull':![],'defaultValue':_0x298a('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x298a('0x1')],'defaultValue':_0x298a('0x3')}};
\ No newline at end of file
+var _0x010a=['exports','STRING','noop','TEXT','*,*,*,*'];(function(_0x10c16d,_0x2b3e14){var _0x5896f4=function(_0x4306b9){while(--_0x4306b9){_0x10c16d['push'](_0x10c16d['shift']());}};_0x5896f4(++_0x2b3e14);}(_0x010a,0xa0));var _0xa010=function(_0x8a369b,_0x635224){_0x8a369b=_0x8a369b-0x0;var _0x324b70=_0x010a[_0x8a369b];return _0x324b70;};'use strict';var Sequelize=require('sequelize');module[_0xa010('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xa010('0x1')],'allowNull':![],'defaultValue':_0xa010('0x2')},'appdata':{'type':Sequelize[_0xa010('0x3')]()},'description':{'type':Sequelize[_0xa010('0x1')]},'interval':{'type':Sequelize[_0xa010('0x1')],'defaultValue':_0xa010('0x4')}};
\ No newline at end of file
index e7fc616..44b5515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff4=['save','update','then','destroy','name','send','index','FaxApplication','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','reject'];(function(_0x4bfade,_0xb26c0e){var _0x272465=function(_0x3b38cb){while(--_0x3b38cb){_0x4bfade['push'](_0x4bfade['shift']());}};_0x272465(++_0xb26c0e);}(_0xbff4,0x75));var _0x4bff=function(_0x5a905e,_0x31aa4a){_0x5a905e=_0x5a905e-0x0;var _0x4124d6=_0xbff4[_0x5a905e];return _0x4124d6;};'use strict';var emlformat=require(_0x4bff('0x0'));var rimraf=require(_0x4bff('0x1'));var zipdir=require(_0x4bff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4bff('0x3'));var Mustache=require(_0x4bff('0x4'));var util=require('util');var path=require(_0x4bff('0x5'));var sox=require(_0x4bff('0x6'));var csv=require(_0x4bff('0x7'));var ejs=require(_0x4bff('0x8'));var fs=require('fs');var fs_extra=require(_0x4bff('0x9'));var _=require(_0x4bff('0xa'));var squel=require('squel');var crypto=require(_0x4bff('0xb'));var jsforce=require(_0x4bff('0xc'));var deskjs=require(_0x4bff('0xd'));var toCsv=require(_0x4bff('0x7'));var querystring=require(_0x4bff('0xe'));var Papa=require(_0x4bff('0xf'));var Redis=require(_0x4bff('0x10'));var authService=require(_0x4bff('0x11'));var qs=require(_0x4bff('0x12'));var as=require(_0x4bff('0x13'));var hardwareService=require(_0x4bff('0x14'));var logger=require(_0x4bff('0x15'))(_0x4bff('0x16'));var utils=require(_0x4bff('0x17'));var config=require(_0x4bff('0x18'));var licenseUtil=require(_0x4bff('0x19'));var db=require(_0x4bff('0x1a'))['db'];function respondWithStatusCode(_0x2b27f6,_0x3783b1){_0x3783b1=_0x3783b1||0xcc;return function(_0x1015d9){if(_0x1015d9){return _0x2b27f6[_0x4bff('0x1b')](_0x3783b1);}return _0x2b27f6[_0x4bff('0x1c')](_0x3783b1)[_0x4bff('0x1d')]();};}function respondWithResult(_0x53bba3,_0xd8311b){_0xd8311b=_0xd8311b||0xc8;return function(_0x3a5fc1){if(_0x3a5fc1){return _0x53bba3[_0x4bff('0x1c')](_0xd8311b)[_0x4bff('0x1e')](_0x3a5fc1);}};}function respondWithFilteredResult(_0x33ef47,_0x138deb){return function(_0x1faa61){if(_0x1faa61){var _0x501bce=typeof _0x138deb[_0x4bff('0x1f')]===_0x4bff('0x20')&&typeof _0x138deb[_0x4bff('0x21')]===_0x4bff('0x20');var _0x3d98d1=_0x1faa61['count'];var _0x857697=_0x501bce?0x0:_0x138deb[_0x4bff('0x1f')];var _0x375d7f=_0x501bce?_0x1faa61['count']:_0x138deb['offset']+_0x138deb[_0x4bff('0x21')];var _0x45dbe7;if(_0x375d7f>=_0x3d98d1){_0x375d7f=_0x3d98d1;_0x45dbe7=0xc8;}else{_0x45dbe7=0xce;}_0x33ef47[_0x4bff('0x1c')](_0x45dbe7);return _0x33ef47['set'](_0x4bff('0x22'),_0x857697+'-'+_0x375d7f+'/'+_0x3d98d1)['json'](_0x1faa61);}return null;};}function patchUpdates(_0x4acb85){return function(_0x1a4e98){try{jsonpatch[_0x4bff('0x23')](_0x1a4e98,_0x4acb85,!![]);}catch(_0x4141b7){return BPromise[_0x4bff('0x24')](_0x4141b7);}return _0x1a4e98[_0x4bff('0x25')]();};}function saveUpdates(_0x2fe243,_0x9e98cc){return function(_0x1f2afd){if(_0x1f2afd){return _0x1f2afd[_0x4bff('0x26')](_0x2fe243)[_0x4bff('0x27')](function(_0x29b72a){return _0x29b72a;});}return null;};}function removeEntity(_0x4e67a3,_0x5db8a6){return function(_0x401805){if(_0x401805){return _0x401805[_0x4bff('0x28')]()[_0x4bff('0x27')](function(){_0x4e67a3['status'](0xcc)[_0x4bff('0x1d')]();});}};}function handleEntityNotFound(_0x5c061a,_0x271f07){return function(_0x3acf42){if(!_0x3acf42){_0x5c061a[_0x4bff('0x1b')](0x194);}return _0x3acf42;};}function handleError(_0x14023a,_0x1af8d1){_0x1af8d1=_0x1af8d1||0x1f4;return function(_0x32dbd1){logger['error'](_0x32dbd1['stack']);if(_0x32dbd1[_0x4bff('0x29')]){delete _0x32dbd1['name'];}_0x14023a[_0x4bff('0x1c')](_0x1af8d1)[_0x4bff('0x2a')](_0x32dbd1);};}exports[_0x4bff('0x2b')]=function(_0x4698f4,_0x1cc149){var _0x1c21ce={},_0x310978={},_0x367328={'count':0x0,'rows':[]};var _0x57cd8a=_['map'](db[_0x4bff('0x2c')][_0x4bff('0x2d')],function(_0x77434){return{'name':_0x77434[_0x4bff('0x2e')],'type':_0x77434[_0x4bff('0x2f')][_0x4bff('0x30')]};});_0x310978[_0x4bff('0x31')]=_[_0x4bff('0x32')](_0x57cd8a,_0x4bff('0x29'));_0x310978['query']=_[_0x4bff('0x33')](_0x4698f4[_0x4bff('0x34')]);_0x310978['filters']=_[_0x4bff('0x35')](_0x310978[_0x4bff('0x31')],_0x310978[_0x4bff('0x34')]);_0x1c21ce[_0x4bff('0x36')]=_[_0x4bff('0x35')](_0x310978[_0x4bff('0x31')],qs['fields'](_0x4698f4[_0x4bff('0x34')][_0x4bff('0x37')]));_0x1c21ce[_0x4bff('0x36')]=_0x1c21ce[_0x4bff('0x36')][_0x4bff('0x38')]?_0x1c21ce[_0x4bff('0x36')]:_0x310978[_0x4bff('0x31')];if(!_0x4698f4[_0x4bff('0x34')][_0x4bff('0x39')]('nolimit')){_0x1c21ce[_0x4bff('0x21')]=qs[_0x4bff('0x21')](_0x4698f4[_0x4bff('0x34')][_0x4bff('0x21')]);_0x1c21ce[_0x4bff('0x1f')]=qs[_0x4bff('0x1f')](_0x4698f4[_0x4bff('0x34')][_0x4bff('0x1f')]);}_0x1c21ce[_0x4bff('0x3a')]=qs['sort'](_0x4698f4['query'][_0x4bff('0x3b')]);_0x1c21ce['where']=qs[_0x4bff('0x3c')](_[_0x4bff('0x3d')](_0x4698f4[_0x4bff('0x34')],_0x310978['filters']),_0x57cd8a);if(_0x4698f4[_0x4bff('0x34')][_0x4bff('0x3e')]){_0x1c21ce[_0x4bff('0x3f')]=_[_0x4bff('0x40')](_0x1c21ce[_0x4bff('0x3f')],{'$or':_[_0x4bff('0x32')](_0x57cd8a,function(_0x5ca9e6){if(_0x5ca9e6[_0x4bff('0x2f')]!==_0x4bff('0x41')){var _0x5ca83a={};_0x5ca83a[_0x5ca9e6['name']]={'$like':'%'+_0x4698f4['query'][_0x4bff('0x3e')]+'%'};return _0x5ca83a;}})});}_0x1c21ce=_[_0x4bff('0x40')]({},_0x1c21ce,_0x4698f4[_0x4bff('0x42')]);var _0x366f7e={'where':_0x1c21ce[_0x4bff('0x3f')]};return db[_0x4bff('0x2c')][_0x4bff('0x43')](_0x366f7e)[_0x4bff('0x27')](function(_0x283cc3){_0x367328[_0x4bff('0x43')]=_0x283cc3;if(_0x4698f4[_0x4bff('0x34')][_0x4bff('0x44')]){_0x1c21ce[_0x4bff('0x45')]=[{'all':!![]}];}return db[_0x4bff('0x2c')]['findAll'](_0x1c21ce);})['then'](function(_0x472a30){_0x367328[_0x4bff('0x46')]=_0x472a30;return _0x367328;})[_0x4bff('0x27')](respondWithFilteredResult(_0x1cc149,_0x1c21ce))[_0x4bff('0x47')](handleError(_0x1cc149,null));};exports[_0x4bff('0x48')]=function(_0x54d2fa,_0x3d92e9){var _0x5a718b={'raw':!![],'where':{'id':_0x54d2fa[_0x4bff('0x49')]['id']}},_0x386e07={};_0x386e07[_0x4bff('0x31')]=_[_0x4bff('0x33')](db[_0x4bff('0x2c')]['rawAttributes']);_0x386e07[_0x4bff('0x34')]=_[_0x4bff('0x33')](_0x54d2fa[_0x4bff('0x34')]);_0x386e07[_0x4bff('0x3c')]=_['intersection'](_0x386e07[_0x4bff('0x31')],_0x386e07[_0x4bff('0x34')]);_0x5a718b[_0x4bff('0x36')]=_[_0x4bff('0x35')](_0x386e07[_0x4bff('0x31')],qs['fields'](_0x54d2fa[_0x4bff('0x34')][_0x4bff('0x37')]));_0x5a718b[_0x4bff('0x36')]=_0x5a718b[_0x4bff('0x36')][_0x4bff('0x38')]?_0x5a718b[_0x4bff('0x36')]:_0x386e07['model'];if(_0x54d2fa[_0x4bff('0x34')][_0x4bff('0x44')]){_0x5a718b['include']=[{'all':!![]}];}_0x5a718b=_['merge']({},_0x5a718b,_0x54d2fa[_0x4bff('0x42')]);return db[_0x4bff('0x2c')][_0x4bff('0x4a')](_0x5a718b)[_0x4bff('0x27')](handleEntityNotFound(_0x3d92e9,null))[_0x4bff('0x27')](respondWithResult(_0x3d92e9,null))['catch'](handleError(_0x3d92e9,null));};exports[_0x4bff('0x4b')]=function(_0x366e26,_0x2e8410){return db[_0x4bff('0x2c')][_0x4bff('0x4b')](_0x366e26['body'],{})[_0x4bff('0x27')](respondWithResult(_0x2e8410,0xc9))[_0x4bff('0x47')](handleError(_0x2e8410,null));};exports['update']=function(_0x16c7f9,_0x1e6571){if(_0x16c7f9[_0x4bff('0x4c')]['id']){delete _0x16c7f9[_0x4bff('0x4c')]['id'];}return db[_0x4bff('0x2c')][_0x4bff('0x4a')]({'where':{'id':_0x16c7f9[_0x4bff('0x49')]['id']}})[_0x4bff('0x27')](handleEntityNotFound(_0x1e6571,null))[_0x4bff('0x27')](saveUpdates(_0x16c7f9['body'],null))[_0x4bff('0x27')](respondWithResult(_0x1e6571,null))[_0x4bff('0x47')](handleError(_0x1e6571,null));};exports[_0x4bff('0x28')]=function(_0x5f5623,_0x412ec3){return db['FaxApplication'][_0x4bff('0x4a')]({'where':{'id':_0x5f5623['params']['id']}})[_0x4bff('0x27')](handleEntityNotFound(_0x412ec3,null))['then'](removeEntity(_0x412ec3,null))[_0x4bff('0x47')](handleError(_0x412ec3,null));};
\ No newline at end of file
+var _0xeac8=['desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../config/logger','../../mysqldb','sendStatus','status','end','limit','undefined','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','ejs','fs-extra','squel','crypto','jsforce'];(function(_0x2e2857,_0x2c8066){var _0x294569=function(_0x439aba){while(--_0x439aba){_0x2e2857['push'](_0x2e2857['shift']());}};_0x294569(++_0x2c8066);}(_0xeac8,0x152));var _0x8eac=function(_0x5bd81d,_0x401db7){_0x5bd81d=_0x5bd81d-0x0;var _0x569753=_0xeac8[_0x5bd81d];return _0x569753;};'use strict';var emlformat=require(_0x8eac('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8eac('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8eac('0x2'));var moment=require(_0x8eac('0x3'));var BPromise=require(_0x8eac('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8eac('0x5'));var sox=require(_0x8eac('0x6'));var csv=require('to-csv');var ejs=require(_0x8eac('0x7'));var fs=require('fs');var fs_extra=require(_0x8eac('0x8'));var _=require('lodash');var squel=require(_0x8eac('0x9'));var crypto=require(_0x8eac('0xa'));var jsforce=require(_0x8eac('0xb'));var deskjs=require(_0x8eac('0xc'));var toCsv=require(_0x8eac('0xd'));var querystring=require(_0x8eac('0xe'));var Papa=require('papaparse');var Redis=require(_0x8eac('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8eac('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8eac('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8eac('0x12'))['db'];function respondWithStatusCode(_0x20597a,_0x57bdfb){_0x57bdfb=_0x57bdfb||0xcc;return function(_0x5b0c14){if(_0x5b0c14){return _0x20597a[_0x8eac('0x13')](_0x57bdfb);}return _0x20597a[_0x8eac('0x14')](_0x57bdfb)[_0x8eac('0x15')]();};}function respondWithResult(_0x2b1f14,_0x5c4f00){_0x5c4f00=_0x5c4f00||0xc8;return function(_0x30592e){if(_0x30592e){return _0x2b1f14[_0x8eac('0x14')](_0x5c4f00)['json'](_0x30592e);}};}function respondWithFilteredResult(_0x27d7d7,_0x273df5){return function(_0x5a7a16){if(_0x5a7a16){var _0x2d14c1=typeof _0x273df5['offset']==='undefined'&&typeof _0x273df5[_0x8eac('0x16')]===_0x8eac('0x17');var _0x50f1bf=_0x5a7a16['count'];var _0x1269b3=_0x2d14c1?0x0:_0x273df5[_0x8eac('0x18')];var _0x2472f1=_0x2d14c1?_0x5a7a16['count']:_0x273df5[_0x8eac('0x18')]+_0x273df5[_0x8eac('0x16')];var _0x440a65;if(_0x2472f1>=_0x50f1bf){_0x2472f1=_0x50f1bf;_0x440a65=0xc8;}else{_0x440a65=0xce;}_0x27d7d7[_0x8eac('0x14')](_0x440a65);return _0x27d7d7[_0x8eac('0x19')](_0x8eac('0x1a'),_0x1269b3+'-'+_0x2472f1+'/'+_0x50f1bf)['json'](_0x5a7a16);}return null;};}function patchUpdates(_0x563f69){return function(_0x507af3){try{jsonpatch[_0x8eac('0x1b')](_0x507af3,_0x563f69,!![]);}catch(_0x196e0c){return BPromise[_0x8eac('0x1c')](_0x196e0c);}return _0x507af3[_0x8eac('0x1d')]();};}function saveUpdates(_0x30290e,_0x3ed9fc){return function(_0x4402b5){if(_0x4402b5){return _0x4402b5[_0x8eac('0x1e')](_0x30290e)[_0x8eac('0x1f')](function(_0x4b099f){return _0x4b099f;});}return null;};}function removeEntity(_0x23bff6,_0x1217de){return function(_0x4004d){if(_0x4004d){return _0x4004d['destroy']()[_0x8eac('0x1f')](function(){_0x23bff6[_0x8eac('0x14')](0xcc)[_0x8eac('0x15')]();});}};}function handleEntityNotFound(_0x47ecc5,_0x3d3642){return function(_0x5be16e){if(!_0x5be16e){_0x47ecc5[_0x8eac('0x13')](0x194);}return _0x5be16e;};}function handleError(_0x5e6621,_0x1d4266){_0x1d4266=_0x1d4266||0x1f4;return function(_0x15fba0){logger[_0x8eac('0x20')](_0x15fba0[_0x8eac('0x21')]);if(_0x15fba0[_0x8eac('0x22')]){delete _0x15fba0[_0x8eac('0x22')];}_0x5e6621[_0x8eac('0x14')](_0x1d4266)[_0x8eac('0x23')](_0x15fba0);};}exports[_0x8eac('0x24')]=function(_0x13f5d6,_0x473f89){var _0x3ddb8d={},_0x403388={},_0x13cb0a={'count':0x0,'rows':[]};var _0x1f0413=_[_0x8eac('0x25')](db[_0x8eac('0x26')][_0x8eac('0x27')],function(_0x3f2487){return{'name':_0x3f2487[_0x8eac('0x28')],'type':_0x3f2487[_0x8eac('0x29')][_0x8eac('0x2a')]};});_0x403388[_0x8eac('0x2b')]=_['map'](_0x1f0413,_0x8eac('0x22'));_0x403388[_0x8eac('0x2c')]=_[_0x8eac('0x2d')](_0x13f5d6[_0x8eac('0x2c')]);_0x403388['filters']=_[_0x8eac('0x2e')](_0x403388['model'],_0x403388[_0x8eac('0x2c')]);_0x3ddb8d[_0x8eac('0x2f')]=_[_0x8eac('0x2e')](_0x403388['model'],qs['fields'](_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x30')]));_0x3ddb8d['attributes']=_0x3ddb8d['attributes'][_0x8eac('0x31')]?_0x3ddb8d[_0x8eac('0x2f')]:_0x403388['model'];if(!_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x32')]('nolimit')){_0x3ddb8d[_0x8eac('0x16')]=qs[_0x8eac('0x16')](_0x13f5d6['query']['limit']);_0x3ddb8d[_0x8eac('0x18')]=qs[_0x8eac('0x18')](_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x18')]);}_0x3ddb8d['order']=qs[_0x8eac('0x33')](_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x33')]);_0x3ddb8d[_0x8eac('0x34')]=qs[_0x8eac('0x35')](_[_0x8eac('0x36')](_0x13f5d6[_0x8eac('0x2c')],_0x403388[_0x8eac('0x35')]),_0x1f0413);if(_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x37')]){_0x3ddb8d[_0x8eac('0x34')]=_[_0x8eac('0x38')](_0x3ddb8d[_0x8eac('0x34')],{'$or':_[_0x8eac('0x25')](_0x1f0413,function(_0x360b3f){if(_0x360b3f['type']!==_0x8eac('0x39')){var _0x252d27={};_0x252d27[_0x360b3f[_0x8eac('0x22')]]={'$like':'%'+_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x37')]+'%'};return _0x252d27;}})});}_0x3ddb8d=_[_0x8eac('0x38')]({},_0x3ddb8d,_0x13f5d6[_0x8eac('0x3a')]);var _0x4f8988={'where':_0x3ddb8d['where']};return db[_0x8eac('0x26')][_0x8eac('0x3b')](_0x4f8988)[_0x8eac('0x1f')](function(_0x44b06e){_0x13cb0a[_0x8eac('0x3b')]=_0x44b06e;if(_0x13f5d6[_0x8eac('0x2c')][_0x8eac('0x3c')]){_0x3ddb8d[_0x8eac('0x3d')]=[{'all':!![]}];}return db[_0x8eac('0x26')][_0x8eac('0x3e')](_0x3ddb8d);})['then'](function(_0x2ad7fe){_0x13cb0a['rows']=_0x2ad7fe;return _0x13cb0a;})[_0x8eac('0x1f')](respondWithFilteredResult(_0x473f89,_0x3ddb8d))[_0x8eac('0x3f')](handleError(_0x473f89,null));};exports[_0x8eac('0x40')]=function(_0x10734e,_0x37db57){var _0x129fe6={'raw':!![],'where':{'id':_0x10734e[_0x8eac('0x41')]['id']}},_0x2b9b79={};_0x2b9b79[_0x8eac('0x2b')]=_['keys'](db[_0x8eac('0x26')][_0x8eac('0x27')]);_0x2b9b79[_0x8eac('0x2c')]=_[_0x8eac('0x2d')](_0x10734e[_0x8eac('0x2c')]);_0x2b9b79[_0x8eac('0x35')]=_['intersection'](_0x2b9b79[_0x8eac('0x2b')],_0x2b9b79['query']);_0x129fe6['attributes']=_[_0x8eac('0x2e')](_0x2b9b79[_0x8eac('0x2b')],qs[_0x8eac('0x30')](_0x10734e[_0x8eac('0x2c')][_0x8eac('0x30')]));_0x129fe6[_0x8eac('0x2f')]=_0x129fe6[_0x8eac('0x2f')][_0x8eac('0x31')]?_0x129fe6[_0x8eac('0x2f')]:_0x2b9b79[_0x8eac('0x2b')];if(_0x10734e['query']['includeAll']){_0x129fe6[_0x8eac('0x3d')]=[{'all':!![]}];}_0x129fe6=_[_0x8eac('0x38')]({},_0x129fe6,_0x10734e[_0x8eac('0x3a')]);return db[_0x8eac('0x26')][_0x8eac('0x42')](_0x129fe6)['then'](handleEntityNotFound(_0x37db57,null))['then'](respondWithResult(_0x37db57,null))[_0x8eac('0x3f')](handleError(_0x37db57,null));};exports[_0x8eac('0x43')]=function(_0x2b2263,_0x3f6985){return db[_0x8eac('0x26')][_0x8eac('0x43')](_0x2b2263[_0x8eac('0x44')],{})[_0x8eac('0x1f')](respondWithResult(_0x3f6985,0xc9))[_0x8eac('0x3f')](handleError(_0x3f6985,null));};exports[_0x8eac('0x1e')]=function(_0x1229d0,_0x490d56){if(_0x1229d0[_0x8eac('0x44')]['id']){delete _0x1229d0['body']['id'];}return db[_0x8eac('0x26')][_0x8eac('0x42')]({'where':{'id':_0x1229d0[_0x8eac('0x41')]['id']}})[_0x8eac('0x1f')](handleEntityNotFound(_0x490d56,null))['then'](saveUpdates(_0x1229d0[_0x8eac('0x44')],null))['then'](respondWithResult(_0x490d56,null))[_0x8eac('0x3f')](handleError(_0x490d56,null));};exports[_0x8eac('0x45')]=function(_0xc0d19a,_0x390634){return db[_0x8eac('0x26')][_0x8eac('0x42')]({'where':{'id':_0xc0d19a[_0x8eac('0x41')]['id']}})[_0x8eac('0x1f')](handleEntityNotFound(_0x390634,null))[_0x8eac('0x1f')](removeEntity(_0x390634,null))[_0x8eac('0x3f')](handleError(_0x390634,null));};
\ No newline at end of file
index bf6bbdf..d802729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca39=['bluebird','request-promise','path','rimraf','exports','fax_applications','utf8mb4','util','api','moment'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xca39,0xd9));var _0x9ca3=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xca39[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0x9ca3('0x0'));var logger=require('../../config/logger')(_0x9ca3('0x1'));var moment=require(_0x9ca3('0x2'));var BPromise=require(_0x9ca3('0x3'));var rp=require(_0x9ca3('0x4'));var fs=require('fs');var path=require(_0x9ca3('0x5'));var rimraf=require(_0x9ca3('0x6'));var config=require('../../config/environment');var attributes=require('./faxApplication.attributes');module[_0x9ca3('0x7')]=function(_0x49654e,_0x129392){return _0x49654e['define']('FaxApplication',attributes,{'tableName':_0x9ca3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9ca3('0x9'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xb299=['path','rimraf','../../config/environment','./faxApplication.attributes','exports','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x380158,_0x599bd1){var _0x39ac68=function(_0x294e50){while(--_0x294e50){_0x380158['push'](_0x380158['shift']());}};_0x39ac68(++_0x599bd1);}(_0xb299,0x121));var _0x9b29=function(_0x4e7669,_0x2101fe){_0x4e7669=_0x4e7669-0x0;var _0x2f4922=_0xb299[_0x4e7669];return _0x2f4922;};'use strict';var _=require('lodash');var util=require(_0x9b29('0x0'));var logger=require(_0x9b29('0x1'))('api');var moment=require(_0x9b29('0x2'));var BPromise=require(_0x9b29('0x3'));var rp=require(_0x9b29('0x4'));var fs=require('fs');var path=require(_0x9b29('0x5'));var rimraf=require(_0x9b29('0x6'));var config=require(_0x9b29('0x7'));var attributes=require(_0x9b29('0x8'));module[_0x9b29('0x9')]=function(_0x128c3a,_0x373e0a){return _0x128c3a['define'](_0x9b29('0xa'),attributes,{'tableName':_0x9b29('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x9b29('0xc'),'collate':_0x9b29('0xd')});};
\ No newline at end of file
index 7712a64..a52cf1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8412=['stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','error','code','FaxApplication,\x20%s,\x20%s','message','catch','UpdateFaxApplication','FaxApplication','update','body','raw','options','where','attributes','limit','then'];(function(_0x986612,_0x486043){var _0x43a050=function(_0x4361c4){while(--_0x4361c4){_0x986612['push'](_0x986612['shift']());}};_0x43a050(++_0x486043);}(_0x8412,0xe1));var _0x2841=function(_0xa9a245,_0x2a0387){_0xa9a245=_0xa9a245-0x0;var _0x2d0eaa=_0x8412[_0xa9a245];return _0x2d0eaa;};'use strict';var _=require(_0x2841('0x0'));var util=require(_0x2841('0x1'));var moment=require(_0x2841('0x2'));var BPromise=require(_0x2841('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2841('0x4'));var db=require(_0x2841('0x5'))['db'];var utils=require(_0x2841('0x6'));var logger=require(_0x2841('0x7'))(_0x2841('0x8'));var config=require(_0x2841('0x9'));var jayson=require(_0x2841('0xa'));var client=jayson['client'][_0x2841('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27be9e,_0x576670,_0x55429b){return new BPromise(function(_0x25782a,_0x5ea3f0){return client['request'](_0x27be9e,_0x55429b)['then'](function(_0x1fb518){logger[_0x2841('0xc')]('FaxApplication,\x20%s,\x20%s',_0x576670,_0x2841('0xd'));logger[_0x2841('0xe')](_0x2841('0xf'),_0x576670,_0x2841('0xd'),JSON['stringify'](_0x1fb518));if(_0x1fb518[_0x2841('0x10')]){if(_0x1fb518['error'][_0x2841('0x11')]===0x1f4){logger['error'](_0x2841('0x12'),_0x576670,_0x1fb518[_0x2841('0x10')][_0x2841('0x13')]);return _0x5ea3f0(_0x1fb518['error'][_0x2841('0x13')]);}logger['error'](_0x2841('0x12'),_0x576670,_0x1fb518[_0x2841('0x10')][_0x2841('0x13')]);return _0x25782a(_0x1fb518[_0x2841('0x10')][_0x2841('0x13')]);}else{logger[_0x2841('0xc')]('FaxApplication,\x20%s,\x20%s',_0x576670,'request\x20sent');_0x25782a(_0x1fb518['result'][_0x2841('0x13')]);}})[_0x2841('0x14')](function(_0x4dc795){logger[_0x2841('0x10')](_0x2841('0x12'),_0x576670,_0x4dc795);_0x5ea3f0(_0x4dc795);});});}exports[_0x2841('0x15')]=function(_0x3df5dc){var _0x28a256=this;return new Promise(function(_0x41438d,_0xcb2838){return db[_0x2841('0x16')][_0x2841('0x17')](_0x3df5dc[_0x2841('0x18')],{'raw':_0x3df5dc['options']?_0x3df5dc['options'][_0x2841('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3df5dc['options']?_0x3df5dc[_0x2841('0x1a')][_0x2841('0x1b')]||null:null,'attributes':_0x3df5dc['options']?_0x3df5dc[_0x2841('0x1a')][_0x2841('0x1c')]||null:null,'limit':_0x3df5dc[_0x2841('0x1a')]?_0x3df5dc[_0x2841('0x1a')][_0x2841('0x1d')]||null:null})[_0x2841('0x1e')](function(_0xb756ea){logger[_0x2841('0xc')](_0x2841('0x15'),_0x3df5dc);logger[_0x2841('0xe')](_0x2841('0x15'),_0x3df5dc,JSON[_0x2841('0x1f')](_0xb756ea));_0x41438d(_0xb756ea);})[_0x2841('0x14')](function(_0x13fed0){logger[_0x2841('0x10')](_0x2841('0x15'),_0x13fed0[_0x2841('0x13')],_0x3df5dc);_0xcb2838(_0x28a256[_0x2841('0x10')](0x1f4,_0x13fed0['message']));});});};
\ No newline at end of file
+var _0x3aed=['request\x20sent','error','message','catch','UpdateFaxApplication','FaxApplication','update','options','raw','limit','then','info','debug','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','FaxApplication,\x20%s,\x20%s'];(function(_0x346f6a,_0x3449d){var _0x3b9b63=function(_0x5be50b){while(--_0x5be50b){_0x346f6a['push'](_0x346f6a['shift']());}};_0x3b9b63(++_0x3449d);}(_0x3aed,0x1ce));var _0xd3ae=function(_0x5eaa0b,_0x433b2f){_0x5eaa0b=_0x5eaa0b-0x0;var _0x28b295=_0x3aed[_0x5eaa0b];return _0x28b295;};'use strict';var _=require(_0xd3ae('0x0'));var util=require('util');var moment=require(_0xd3ae('0x1'));var BPromise=require(_0xd3ae('0x2'));var rs=require(_0xd3ae('0x3'));var fs=require('fs');var Redis=require(_0xd3ae('0x4'));var db=require(_0xd3ae('0x5'))['db'];var utils=require(_0xd3ae('0x6'));var logger=require('../../config/logger')(_0xd3ae('0x7'));var config=require(_0xd3ae('0x8'));var jayson=require(_0xd3ae('0x9'));var client=jayson[_0xd3ae('0xa')][_0xd3ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x53214c,_0xf63696,_0x4f142f){return new BPromise(function(_0x5cdb43,_0x5587a0){return client[_0xd3ae('0xc')](_0x53214c,_0x4f142f)['then'](function(_0x36d42d){logger['info'](_0xd3ae('0xd'),_0xf63696,'request\x20sent');logger['debug']('FaxApplication,\x20%s,\x20%s,\x20%s',_0xf63696,_0xd3ae('0xe'),JSON['stringify'](_0x36d42d));if(_0x36d42d[_0xd3ae('0xf')]){if(_0x36d42d[_0xd3ae('0xf')]['code']===0x1f4){logger['error'](_0xd3ae('0xd'),_0xf63696,_0x36d42d['error'][_0xd3ae('0x10')]);return _0x5587a0(_0x36d42d[_0xd3ae('0xf')][_0xd3ae('0x10')]);}logger[_0xd3ae('0xf')]('FaxApplication,\x20%s,\x20%s',_0xf63696,_0x36d42d[_0xd3ae('0xf')]['message']);return _0x5cdb43(_0x36d42d[_0xd3ae('0xf')][_0xd3ae('0x10')]);}else{logger['info'](_0xd3ae('0xd'),_0xf63696,_0xd3ae('0xe'));_0x5cdb43(_0x36d42d['result'][_0xd3ae('0x10')]);}})[_0xd3ae('0x11')](function(_0x2f3b22){logger[_0xd3ae('0xf')](_0xd3ae('0xd'),_0xf63696,_0x2f3b22);_0x5587a0(_0x2f3b22);});});}exports[_0xd3ae('0x12')]=function(_0x11ecfd){var _0x1d41c9=this;return new Promise(function(_0x46b647,_0x522e32){return db[_0xd3ae('0x13')][_0xd3ae('0x14')](_0x11ecfd['body'],{'raw':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd['options'][_0xd3ae('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd[_0xd3ae('0x15')]['where']||null:null,'attributes':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd[_0xd3ae('0x15')]['attributes']||null:null,'limit':_0x11ecfd[_0xd3ae('0x15')]?_0x11ecfd[_0xd3ae('0x15')][_0xd3ae('0x17')]||null:null})[_0xd3ae('0x18')](function(_0x26ad5e){logger[_0xd3ae('0x19')](_0xd3ae('0x12'),_0x11ecfd);logger[_0xd3ae('0x1a')]('UpdateFaxApplication',_0x11ecfd,JSON[_0xd3ae('0x1b')](_0x26ad5e));_0x46b647(_0x26ad5e);})['catch'](function(_0x55e97e){logger[_0xd3ae('0xf')](_0xd3ae('0x12'),_0x55e97e['message'],_0x11ecfd);_0x522e32(_0x1d41c9[_0xd3ae('0xf')](0x1f4,_0x55e97e['message']));});});};
\ No newline at end of file
index 1fef53c..1a579d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','get','show','post','/:id','update','delete','destroy','exports','multer','util'];(function(_0x538ad2,_0xc16100){var _0x21a38f=function(_0x13c0ed){while(--_0x13c0ed){_0x538ad2['push'](_0x538ad2['shift']());}};_0x21a38f(++_0xc16100);}(_0xb62e,0x1de));var _0xeb62=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xb62e[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var path=require(_0xeb62('0x2'));var timeout=require(_0xeb62('0x3'));var express=require('express');var router=express[_0xeb62('0x4')]();var fs_extra=require(_0xeb62('0x5'));var auth=require(_0xeb62('0x6'));var interaction=require(_0xeb62('0x7'));var config=require(_0xeb62('0x8'));var controller=require(_0xeb62('0x9'));router['get']('/',auth[_0xeb62('0xa')](),controller[_0xeb62('0xb')]);router[_0xeb62('0xc')]('/:id',auth[_0xeb62('0xa')](),controller[_0xeb62('0xd')]);router[_0xeb62('0xe')]('/',auth[_0xeb62('0xa')](),controller['create']);router['put'](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x10')]);router[_0xeb62('0x11')](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x12')]);module[_0xeb62('0x13')]=router;
\ No newline at end of file
+var _0x4cf8=['show','create','/:id','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','get','isAuthenticated'];(function(_0x531cb8,_0x8ef36f){var _0x5cf297=function(_0x45acb4){while(--_0x45acb4){_0x531cb8['push'](_0x531cb8['shift']());}};_0x5cf297(++_0x8ef36f);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x5cab28,_0x307622){_0x5cab28=_0x5cab28-0x0;var _0xa3554d=_0x4cf8[_0x5cab28];return _0xa3554d;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0xe')]);router['put'](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router[_0x84cf('0x11')]('/:id',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);module['exports']=router;
\ No newline at end of file
index 65af8a7..c17aa5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa89=['BOOLEAN','STRING','DATE','ENUM','out','sequelize'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xaa89,0xef));var _0x9aa8=function(_0x221b8c,_0x2c7afc){_0x221b8c=_0x221b8c-0x0;var _0x3fab9f=_0xaa89[_0x221b8c];return _0x3fab9f;};'use strict';var Sequelize=require(_0x9aa8('0x0'));module['exports']={'closed':{'type':Sequelize[_0x9aa8('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x9aa8('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x9aa8('0x2')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x9aa8('0x3')]},'fax':{'type':Sequelize[_0x9aa8('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x9aa8('0x4')]('in',_0x9aa8('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9aa8('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x9aa8('0x4')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x16ab=['ENUM','out','BOOLEAN','DATE','STRING'];(function(_0x3517d3,_0x4a32bf){var _0x29daa6=function(_0x6a55b5){while(--_0x6a55b5){_0x3517d3['push'](_0x3517d3['shift']());}};_0x29daa6(++_0x4a32bf);}(_0x16ab,0x9d));var _0xb16a=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x16ab[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xb16a('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xb16a('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xb16a('0x2')]},'note':{'type':Sequelize[_0xb16a('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0xb16a('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xb16a('0x3')]('in',_0xb16a('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xb16a('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xb16a('0x3')]('in',_0xb16a('0x4')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index 784c7f2..b57a715 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955e=['jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','map','fullname','TagIds','Tags','split','forEach','push','catch','index','FaxInteraction','fieldName','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','ui.FaxInteractionId','user_has_fax_interactions','left_join','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','sqlOperator','length','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','Tag','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','type','start','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','group','i.id','Sequelize','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.*','c.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','show','rawAttributes','include','options','create','body','describe','addMessage','FaxMessage','params','ids','omit','findOne','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','setTags','spread','findAll','emit','faxInteractionTags:save','removeTags','download','unix','join','server','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','createReadStream','createWriteStream','log','err','unlinkSync','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','squel','crypto'];(function(_0x3a3fea,_0x52394f){var _0x1a427a=function(_0x714027){while(--_0x714027){_0x3a3fea['push'](_0x3a3fea['shift']());}};_0x1a427a(++_0x52394f);}(_0x955e,0xca));var _0xe955=function(_0x91d019,_0x5223c4){_0x91d019=_0x91d019-0x0;var _0x19de1f=_0x955e[_0x91d019];return _0x19de1f;};'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(_0xe955('0x0'));var moment=require(_0xe955('0x1'));var BPromise=require('bluebird');var Mustache=require(_0xe955('0x2'));var util=require('util');var path=require('path');var sox=require(_0xe955('0x3'));var csv=require(_0xe955('0x4'));var ejs=require(_0xe955('0x5'));var fs=require('fs');var fs_extra=require(_0xe955('0x6'));var _=require('lodash');var squel=require(_0xe955('0x7'));var crypto=require(_0xe955('0x8'));var jsforce=require(_0xe955('0x9'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe955('0xa'));var Papa=require(_0xe955('0xb'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe955('0xc'));var as=require(_0xe955('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe955('0xe'))(_0xe955('0xf'));var utils=require(_0xe955('0x10'));var config=require(_0xe955('0x11'));var licenseUtil=require(_0xe955('0x12'));var db=require(_0xe955('0x13'))['db'];config[_0xe955('0x14')]=_[_0xe955('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe955('0x14')]));require(_0xe955('0x16'))[_0xe955('0x17')](socket);function respondWithStatusCode(_0x6b64d8,_0x563bd7){_0x563bd7=_0x563bd7||0xcc;return function(_0x16e35b){if(_0x16e35b){return _0x6b64d8[_0xe955('0x18')](_0x563bd7);}return _0x6b64d8[_0xe955('0x19')](_0x563bd7)[_0xe955('0x1a')]();};}function respondWithResult(_0x5bff95,_0x1147f9){_0x1147f9=_0x1147f9||0xc8;return function(_0x5b0e5a){if(_0x5b0e5a){return _0x5bff95['status'](_0x1147f9)[_0xe955('0x1b')](_0x5b0e5a);}};}function respondWithFilteredResult(_0xc3badc,_0x49d830){return function(_0x4ad077){if(_0x4ad077){var _0x146b8c=typeof _0x49d830[_0xe955('0x1c')]===_0xe955('0x1d')&&typeof _0x49d830[_0xe955('0x1e')]===_0xe955('0x1d');var _0x27df16=_0x4ad077[_0xe955('0x1f')];var _0x2e8af6=_0x146b8c?0x0:_0x49d830[_0xe955('0x1c')];var _0x7e819a=_0x146b8c?_0x4ad077[_0xe955('0x1f')]:_0x49d830[_0xe955('0x1c')]+_0x49d830[_0xe955('0x1e')];var _0x2853c3;if(_0x7e819a>=_0x27df16){_0x7e819a=_0x27df16;_0x2853c3=0xc8;}else{_0x2853c3=0xce;}_0xc3badc[_0xe955('0x19')](_0x2853c3);return _0xc3badc[_0xe955('0x20')](_0xe955('0x21'),_0x2e8af6+'-'+_0x7e819a+'/'+_0x27df16)[_0xe955('0x1b')](_0x4ad077);}return null;};}function patchUpdates(_0x28c140){return function(_0x3739f1){try{jsonpatch[_0xe955('0x22')](_0x3739f1,_0x28c140,!![]);}catch(_0x507f17){return BPromise[_0xe955('0x23')](_0x507f17);}return _0x3739f1[_0xe955('0x24')]();};}function saveUpdates(_0x272c39,_0x8140a1){return function(_0x3d6084){if(_0x3d6084){return _0x3d6084[_0xe955('0x25')](_0x272c39)['then'](function(_0x184203){return _0x184203;});}return null;};}function removeEntity(_0x3be69b,_0x2ca420){return function(_0x11900d){if(_0x11900d){return _0x11900d[_0xe955('0x26')]()[_0xe955('0x27')](function(){_0x3be69b[_0xe955('0x19')](0xcc)[_0xe955('0x1a')]();});}};}function handleEntityNotFound(_0xd195c7,_0x4b3d88){return function(_0x441f05){if(!_0x441f05){_0xd195c7['sendStatus'](0x194);}return _0x441f05;};}function handleError(_0x519a62,_0x645f69){_0x645f69=_0x645f69||0x1f4;return function(_0x5dd46f){logger[_0xe955('0x28')](_0x5dd46f[_0xe955('0x29')]);if(_0x5dd46f[_0xe955('0x2a')]){delete _0x5dd46f[_0xe955('0x2a')];}_0x519a62[_0xe955('0x19')](_0x645f69)[_0xe955('0x2b')](_0x5dd46f);};}function getInteractionUsers(_0x16c751,_0x43b56d){return new BPromise(function(_0x3b76e0,_0x3eddc1){try{if(_0x43b56d[_0x16c751['id']]){_0x16c751['Users']=_[_0xe955('0x2c')](_0x43b56d[_0x16c751['id']],function(_0x494e9d){return{'id':_0x494e9d['id'],'fullname':_0x494e9d[_0xe955('0x2d')]};});}}catch(_0xb7df28){_0x3eddc1(_0xb7df28);}_0x3b76e0(_0x16c751);});}function getInteractionTags(_0x4f32ce,_0x10c238){return new BPromise(function(_0x2b0714,_0x5a48e4){try{if(_0x4f32ce[_0xe955('0x2e')]){_0x4f32ce[_0xe955('0x2f')]=[];_0x4f32ce[_0xe955('0x2e')][_0xe955('0x30')](',')[_0xe955('0x31')](function(_0x2b662e){_0x4f32ce[_0xe955('0x2f')][_0xe955('0x32')](_0x10c238[_0x2b662e]);});}delete _0x4f32ce[_0xe955('0x2e')];}catch(_0x313c6d){_0x5a48e4(_0x313c6d);}_0x2b0714(_0x4f32ce);});}function updateFaxInteraction(_0x53b4dd,_0x125040,_0x4cf247){return new BPromise(function(_0x3f18fe,_0x4ace61){return getInteractionUsers(_0x53b4dd,_0x4cf247)[_0xe955('0x27')](function(_0x2bcc50){return getInteractionTags(_0x2bcc50,_0x125040);})['then'](function(_0x46badd){_0x3f18fe(_0x46badd);})[_0xe955('0x33')](function(_0x48ac01){_0x4ace61(_0x48ac01);});});}exports[_0xe955('0x34')]=function(_0x10ca08,_0x436a3b){var _0x5c2b83={},_0x1cbd0e={},_0x2459fb={'count':0x0,'rows':[]};var _0x309bc1=_['map'](db[_0xe955('0x35')]['rawAttributes'],function(_0x10259c){return{'name':_0x10259c[_0xe955('0x36')],'type':_0x10259c['type'][_0xe955('0x37')]};});_0x1cbd0e[_0xe955('0x38')]=_['map'](_0x309bc1,_0xe955('0x2a'));_0x1cbd0e[_0xe955('0x39')]=_[_0xe955('0x3a')](_0x10ca08[_0xe955('0x39')]);_0x1cbd0e[_0xe955('0x3b')]=_['intersection'](_0x1cbd0e[_0xe955('0x38')],_0x1cbd0e[_0xe955('0x39')]);_0x5c2b83[_0xe955('0x3c')]=_[_0xe955('0x3d')](_0x1cbd0e['model'],qs[_0xe955('0x3e')](_0x10ca08[_0xe955('0x39')]['fields']));_0x5c2b83[_0xe955('0x3c')]=_0x5c2b83[_0xe955('0x3c')]['length']?_0x5c2b83[_0xe955('0x3c')]:_0x1cbd0e[_0xe955('0x38')];if(!_0x10ca08[_0xe955('0x39')][_0xe955('0x3f')](_0xe955('0x40'))){_0x5c2b83[_0xe955('0x1e')]=qs[_0xe955('0x1e')](_0x10ca08[_0xe955('0x39')][_0xe955('0x1e')]);_0x5c2b83[_0xe955('0x1c')]=qs[_0xe955('0x1c')](_0x10ca08[_0xe955('0x39')]['offset']);}_0x5c2b83[_0xe955('0x41')]=qs[_0xe955('0x42')](_0x10ca08['query'][_0xe955('0x42')]);_0x5c2b83[_0xe955('0x43')]=qs[_0xe955('0x3b')](_[_0xe955('0x44')](_0x10ca08[_0xe955('0x39')],_0x1cbd0e[_0xe955('0x3b')]),_0x309bc1);var _0x35b2d0=[];var _0xae0709=squel[_0xe955('0x45')]()[_0xe955('0x46')]('id')[_0xe955('0x46')](_0xe955('0x2a'))[_0xe955('0x46')](_0xe955('0x47'))[_0xe955('0x48')]('tools_tags');var _0x30f13b=squel[_0xe955('0x45')]()['field']('u.id')[_0xe955('0x46')]('u.fullname')['field'](_0xe955('0x49'))[_0xe955('0x48')](_0xe955('0x4a'),'ui')[_0xe955('0x4b')](_0xe955('0x4c'),'u',_0xe955('0x4d'));var _0x5c63b0=squel[_0xe955('0x45')]()[_0xe955('0x48')](_0xe955('0x4e'),'i')[_0xe955('0x4b')](_0xe955('0x4f'),'c',_0xe955('0x50'))['left_join'](_0xe955('0x4c'),'o',_0xe955('0x51'))[_0xe955('0x4b')](_0xe955('0x52'),'a','a.id\x20=\x20i.FaxAccountId')[_0xe955('0x4b')]('fax_messages','me',_0xe955('0x53'))[_0xe955('0x4b')](_0xe955('0x54'),'it','it.FaxInteractionId\x20=\x20i.id')[_0xe955('0x4b')](_0xe955('0x55'),'t',_0xe955('0x56'));var _0x1a26f8=squel['expr']();var _0x3f4fa0=[];var _0x34286b=squel[_0xe955('0x57')]();var _0x18844d;if(_0x10ca08[_0xe955('0x39')][_0xe955('0x58')]){_0x18844d=as['parseSearch'](_0x10ca08[_0xe955('0x39')][_0xe955('0x58')]);var _0x253329=_0x18844d[_0xe955('0x59')];for(var _0x21a8bc=0x0;_0x21a8bc<_0x18844d['conditions'][_0xe955('0x5a')];_0x21a8bc++){var _0x55ca19=_0x18844d[_0xe955('0x5b')][_0x21a8bc];var _0x593c9d='i';var _0x4549de=_['find'](_0x309bc1,['name',_0x55ca19[_0xe955('0x46')]]);if(!_0x4549de){switch(_0x55ca19[_0xe955('0x46')]){case _0xe955('0x5c'):if(_0x55ca19[_0xe955('0x5d')]==0x1){_0x5c63b0[_0xe955('0x5e')]('`'+_0x55ca19['field']+_0xe955('0x5f'));}else{_0x5c63b0[_0xe955('0x5e')]('`'+_0x55ca19[_0xe955('0x46')]+_0xe955('0x60'));}break;case _0xe955('0x61'):if(_0x55ca19[_0xe955('0x62')]===_0xe955('0x63')){if(_0x55ca19[_0xe955('0x5d')][_0xe955('0x30')]('\x20')[_0xe955('0x5a')]>0x1){_0x1a26f8[_0x253329](_0xe955('0x64'),qs[_0xe955('0x65')](_0x55ca19[_0xe955('0x5d')]),null);}else{var _0x549eed='%'+_0x55ca19[_0xe955('0x5d')]+'%';_0x1a26f8[_0x253329](_0xe955('0x66'),_0x549eed,_0x549eed,_0x549eed);}}else{_0x4549de=_[_0xe955('0x67')](_0x309bc1,[_0xe955('0x2a'),_0xe955('0x68')]);_0x55ca19['field']=_0xe955('0x68');_0x4ce2ab=as[_0xe955('0x69')](_0x593c9d,_0x4549de['type'],_0x55ca19);_0x1a26f8[_0x253329](_0x4ce2ab[_0xe955('0x6a')],_0x4ce2ab[_0xe955('0x5d')]['start'],_0x4ce2ab[_0xe955('0x5d')][_0xe955('0x1a')]);}break;case _0xe955('0x6b'):var _0x24f0e2=_0x55ca19[_0xe955('0x5d')][_0xe955('0x30')](',')[_0xe955('0x2c')](function(_0x505e4d){return Number(_0x505e4d);});_0x24f0e2[_0xe955('0x31')](function(_0x2061cd){_0x34286b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x2061cd+',%');});_0x3f4fa0=_['union'](_0x3f4fa0,_0x24f0e2);break;case'User':if(_0x55ca19[_0xe955('0x62')]==='$substring'){_0x1a26f8[_0x253329](_0xe955('0x6c'),'%'+_0x55ca19[_0xe955('0x5d')]+'%',null);}else{_0x4549de=_[_0xe955('0x67')](_0x309bc1,['name',_0xe955('0x6d')]);_0x55ca19['field']=_0xe955('0x6d');_0x4ce2ab=as[_0xe955('0x69')](_0x593c9d,_0x4549de[_0xe955('0x6e')],_0x55ca19);_0x1a26f8[_0x253329](_0x4ce2ab[_0xe955('0x6a')],_0x4ce2ab['value'][_0xe955('0x6f')],_0x4ce2ab['value'][_0xe955('0x1a')]);}break;case'body':_0x4ce2ab=as[_0xe955('0x69')]('me',null,_0x55ca19);_0x1a26f8[_0x253329](_0x4ce2ab[_0xe955('0x6a')],_0x4ce2ab[_0xe955('0x5d')][_0xe955('0x6f')],_0x4ce2ab['value'][_0xe955('0x1a')]);break;}}else{var _0x4ce2ab=as[_0xe955('0x69')](_0x593c9d,_0x4549de[_0xe955('0x6e')],_0x55ca19);_0x1a26f8[_0x253329](_0x4ce2ab[_0xe955('0x6a')],_0x4ce2ab[_0xe955('0x5d')]['start'],_0x4ce2ab[_0xe955('0x5d')][_0xe955('0x1a')]);}}}else{var _0x253db4=_(_0x10ca08[_0xe955('0x39')])['keys']()['map'](function(_0x18a8ce){return _['some'](_0x309bc1,[_0xe955('0x2a'),_0x18a8ce])?_0x18a8ce:undefined;})['compact']()[_0xe955('0x5d')]();if(!_[_0xe955('0x70')](_0x253db4)){_0x253db4[_0xe955('0x31')](function(_0x527215){if(_0x527215===_0xe955('0x71')){_0x5c63b0['where'](_0xe955('0x72'),[]['concat'](_0x10ca08[_0xe955('0x39')][_0x527215]));}else if(_0x527215===_0xe955('0x73')){var _0x205bf8=JSON[_0xe955('0x74')](_0x10ca08[_0xe955('0x39')][_0x527215])[_0xe955('0x75')];var _0x441b2d=JSON[_0xe955('0x74')](_0x10ca08[_0xe955('0x39')][_0x527215])[_0xe955('0x76')];_0x5c63b0[_0xe955('0x43')](_0xe955('0x77'),_0x205bf8,_0x441b2d);}else{if(_0x10ca08[_0xe955('0x39')][_0x527215]===_0xe955('0x78')){_0x5c63b0[_0xe955('0x43')]('i.'+_0x527215+'\x20IS\x20NULL');}else{_0x5c63b0[_0xe955('0x43')]('i.'+_0x527215+_0xe955('0x79'),_0x10ca08[_0xe955('0x39')][_0x527215]);}}});}if(_0x10ca08[_0xe955('0x39')][_0xe955('0x7a')]){if(_0x10ca08[_0xe955('0x39')][_0xe955('0x7a')]==0x1){_0x5c63b0[_0xe955('0x5e')](_0xe955('0x7b'));}else{_0x5c63b0[_0xe955('0x5e')](_0xe955('0x7c'));}}if(_0x10ca08[_0xe955('0x39')][_0xe955('0x7d')]){_0x3f4fa0=_['isArray'](_0x10ca08[_0xe955('0x39')][_0xe955('0x7d')])?_0x10ca08[_0xe955('0x39')]['tag']:new Array(_0x10ca08[_0xe955('0x39')][_0xe955('0x7d')]);_0x3f4fa0[_0xe955('0x31')](function(_0x1d688e){_0x34286b['or'](_0xe955('0x7e'),'%,'+_0x1d688e+',%');});}if(_0x10ca08['query'][_0xe955('0x7f')]){var _0x394d3c=_0x10ca08[_0xe955('0x39')][_0xe955('0x7f')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x394d3c)){_0x1a26f8['or'](_0xe955('0x80'),_0x394d3c+'%')['or'](_0xe955('0x81'),_0x394d3c+'%');}_0x1a26f8['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x394d3c+'%');}}_0x5c63b0[_0xe955('0x43')](_0x1a26f8);_0x5c63b0[_0xe955('0x82')](_0xe955('0x83'));var _0x5df64d={'type':db[_0xe955('0x84')]['QueryTypes'][_0xe955('0x85')],'raw':!![]};var _0x49dd68=_0x5c63b0[_0xe955('0x86')]();_0x49dd68['field'](_0xe955('0x83'));_0x49dd68[_0xe955('0x46')](_0xe955('0x87'),_0xe955('0x5c'));if(_0x5c2b83[_0xe955('0x41')]){_0x5c2b83[_0xe955('0x41')][_0xe955('0x31')](function(_0x896f61){var _0xfb67fc=_0x896f61[0x0]==='contactName'?_0x896f61[0x0]:'i.'+_0x896f61[0x0];_0x5c63b0[_0xe955('0x41')](_0xfb67fc,_0x896f61[0x1]===_0xe955('0x88')?![]:!![]);});}if(!_['isEmpty'](_0x3f4fa0)){_0x5c63b0[_0xe955('0x5e')](_0x34286b);_0x49dd68['where'](_0xe955('0x89'),_0x3f4fa0);}BPromise[_0xe955('0x8a')]()[_0xe955('0x27')](function(){if(!_0x18844d){if(_0x10ca08[_0xe955('0x39')][_0xe955('0x71')])return;_0x49dd68[_0xe955('0x43')](_0xe955('0x8b'));_0x5c63b0[_0xe955('0x43')](_0xe955('0x8b'));return;}if(_0x10ca08[_0xe955('0x8c')][_0xe955('0x8d')]!==_0xe955('0x8e'))return;return _0x10ca08[_0xe955('0x8c')][_0xe955('0x8f')]({'attributes':['id'],'raw':!![]})[_0xe955('0x27')](function(_0x8fd6d9){if(_[_0xe955('0x70')](_0x8fd6d9)){_0x49dd68[_0xe955('0x43')]('i.FaxAccountId\x20IS\x20NULL');_0x5c63b0['where'](_0xe955('0x90'));}else{_0x49dd68[_0xe955('0x43')](_0xe955('0x72'),_[_0xe955('0x2c')](_0x8fd6d9,'id'));_0x5c63b0['where']('i.FaxAccountId\x20IN\x20?',_[_0xe955('0x2c')](_0x8fd6d9,'id'));}});})[_0xe955('0x27')](function(){if(_0x10ca08[_0xe955('0x8c')][_0xe955('0x8d')]===_0xe955('0x8e')&&!_0x18844d&&!_0x10ca08[_0xe955('0x39')][_0xe955('0x71')])return[];return db[_0xe955('0x91')][_0xe955('0x39')](_0x49dd68[_0xe955('0x92')](),_0x5df64d);})[_0xe955('0x27')](function(_0x7008b8){_0x2459fb[_0xe955('0x1f')]=_0x7008b8[_0xe955('0x5a')];if(_0x2459fb[_0xe955('0x1f')]===0x0)return[];return db[_0xe955('0x91')][_0xe955('0x39')](_0xae0709['toString'](),_0x5df64d)['then'](function(_0x397e59){_0x35b2d0=_[_0xe955('0x93')](_0x397e59,'id');_0x5df64d=_[_0xe955('0x94')](_0x5df64d,{'model':db[_0xe955('0x35')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x10ca08[_0xe955('0x39')][_0xe955('0x3e')]){_0x5c2b83[_0xe955('0x3c')]['forEach'](function(_0x5657cd){_0x5c63b0[_0xe955('0x46')]('i.'+_0x5657cd);});}else{_0x5c63b0['field'](_0xe955('0x87'),_0xe955('0x5c'));_0x5c63b0[_0xe955('0x46')](_0xe955('0x95'),'Account.key');_0x5c63b0[_0xe955('0x46')]('a.mandatoryDisposition',_0xe955('0x96'));_0x5c63b0['field'](_0xe955('0x97'),_0xe955('0x98'));_0x5c63b0[_0xe955('0x46')](_0xe955('0x99'));_0x5c63b0[_0xe955('0x46')](_0xe955('0x9a'),'Contact.firstName');_0x5c63b0['field'](_0xe955('0x9b'),_0xe955('0x9c'));_0x5c63b0[_0xe955('0x46')](_0xe955('0x9d'),'Contact.email');_0x5c63b0['field'](_0xe955('0x9e'),_0xe955('0x9f'));_0x5c63b0[_0xe955('0x46')](_0xe955('0xa0'),'Contact.mobile');_0x5c63b0[_0xe955('0x46')](_0xe955('0xa1'),_0xe955('0xa2'));_0x5c63b0[_0xe955('0x46')](_0xe955('0xa3'),_0xe955('0xa4'));_0x5c63b0[_0xe955('0x46')](_0xe955('0xa5'),_0xe955('0xa6'));_0x5c63b0['field'](_0xe955('0xa7'),_0xe955('0x2e'));}if(_0x5c2b83[_0xe955('0x1e')])_0x5c63b0[_0xe955('0x1e')](_0x5c2b83[_0xe955('0x1e')]);if(_0x5c2b83[_0xe955('0x1c')])_0x5c63b0[_0xe955('0x1c')](_0x5c2b83[_0xe955('0x1c')]);return db[_0xe955('0x91')][_0xe955('0x39')](_0x5c63b0['toString'](),_0x5df64d);})[_0xe955('0x27')](function(_0xd11549){if(_0xd11549['length']>0x0)_0x30f13b[_0xe955('0x43')](_0xe955('0xa8'),_[_0xe955('0x2c')](_0xd11549,'id'));return db[_0xe955('0x91')][_0xe955('0x39')](_0x30f13b[_0xe955('0x92')](),_0x5df64d)[_0xe955('0x27')](function(_0x419d9a){var _0xa2ba17=_[_0xe955('0xa9')](_0x419d9a,_0xe955('0xaa'));var _0x1bab03=[];_0xd11549[_0xe955('0x31')](function(_0x2435dd){_0x1bab03['push'](updateFaxInteraction(_0x2435dd,_0x35b2d0,_0xa2ba17));});return BPromise[_0xe955('0xab')](_0x1bab03);});});})[_0xe955('0x27')](function(_0x1ec614){_0x2459fb['rows']=_0x1ec614;return _0x2459fb;})[_0xe955('0x27')](respondWithFilteredResult(_0x436a3b,_0x5c2b83))['catch'](handleError(_0x436a3b,null));};exports[_0xe955('0xac')]=function(_0x57b316,_0x37e8bc){var _0x31ab70={'raw':![],'where':{'id':_0x57b316['params']['id']}},_0x2fc36e={};_0x2fc36e[_0xe955('0x38')]=_[_0xe955('0x3a')](db['FaxInteraction'][_0xe955('0xad')]);_0x2fc36e['query']=_[_0xe955('0x3a')](_0x57b316[_0xe955('0x39')]);_0x2fc36e[_0xe955('0x3b')]=_[_0xe955('0x3d')](_0x2fc36e['model'],_0x2fc36e[_0xe955('0x39')]);_0x31ab70[_0xe955('0x3c')]=_[_0xe955('0x3d')](_0x2fc36e[_0xe955('0x38')],qs[_0xe955('0x3e')](_0x57b316[_0xe955('0x39')][_0xe955('0x3e')]));_0x31ab70[_0xe955('0x3c')]=_0x31ab70[_0xe955('0x3c')][_0xe955('0x5a')]?_0x31ab70[_0xe955('0x3c')]:_0x2fc36e[_0xe955('0x38')];if(_0x57b316[_0xe955('0x39')]['includeAll']){_0x31ab70[_0xe955('0xae')]=[{'all':!![]}];}_0x31ab70=_[_0xe955('0x94')]({},_0x31ab70,_0x57b316[_0xe955('0xaf')]);return db[_0xe955('0x35')][_0xe955('0x67')](_0x31ab70)['then'](handleEntityNotFound(_0x37e8bc,null))[_0xe955('0x27')](respondWithResult(_0x37e8bc,null))[_0xe955('0x33')](handleError(_0x37e8bc,null));};exports[_0xe955('0xb0')]=function(_0x2810a0,_0xc9dc49){return db['FaxInteraction'][_0xe955('0xb0')](_0x2810a0[_0xe955('0xb1')],{})[_0xe955('0x27')](respondWithResult(_0xc9dc49,0xc9))[_0xe955('0x33')](handleError(_0xc9dc49,null));};exports[_0xe955('0x25')]=function(_0x10166d,_0x11e29d){if(_0x10166d['body']['id']){delete _0x10166d['body']['id'];}return db[_0xe955('0x35')][_0xe955('0x67')]({'where':{'id':_0x10166d['params']['id']}})['then'](handleEntityNotFound(_0x11e29d,null))[_0xe955('0x27')](saveUpdates(_0x10166d['body'],null))[_0xe955('0x27')](respondWithResult(_0x11e29d,null))[_0xe955('0x33')](handleError(_0x11e29d,null));};exports['destroy']=function(_0x5b07f1,_0x45d849){return db[_0xe955('0x35')][_0xe955('0x67')]({'where':{'id':_0x5b07f1['params']['id']}})[_0xe955('0x27')](handleEntityNotFound(_0x45d849,null))[_0xe955('0x27')](removeEntity(_0x45d849,null))[_0xe955('0x33')](handleError(_0x45d849,null));};exports[_0xe955('0xb2')]=function(_0xf8965d,_0x456aa7){return db['FaxInteraction'][_0xe955('0xb2')]()[_0xe955('0x27')](respondWithResult(_0x456aa7,null))[_0xe955('0x33')](handleError(_0x456aa7,null));};exports[_0xe955('0xb3')]=function(_0x41fbb7,_0x19b217,_0x46e233){return db[_0xe955('0xb4')][_0xe955('0x67')]({'where':{'id':_0x41fbb7[_0xe955('0xb5')]['id']}})[_0xe955('0x27')](handleEntityNotFound(_0x19b217,null))[_0xe955('0x27')](function(_0x1bef69){if(_0x1bef69){return _0x1bef69['addMessage'](_0x41fbb7[_0xe955('0xb1')][_0xe955('0xb6')],_[_0xe955('0xb7')](_0x41fbb7['body'],[_0xe955('0xb6'),'id'])||{});}})[_0xe955('0x27')](respondWithResult(_0x19b217,null))[_0xe955('0x33')](handleError(_0x19b217,null));};exports['getMessages']=function(_0x357ca9,_0x363372,_0x49aad8){var _0x4e216d={'raw':![],'where':{}};var _0x5a1026={};var _0x1af9db={'count':0x0,'rows':[]};return db[_0xe955('0x35')][_0xe955('0xb8')]({'where':{'id':_0x357ca9[_0xe955('0xb5')]['id']}})['then'](handleEntityNotFound(_0x363372,null))['then'](function(_0x2cc513){if(_0x2cc513){_0x5a1026[_0xe955('0x38')]=_['keys'](db[_0xe955('0xb4')][_0xe955('0xad')]);_0x5a1026[_0xe955('0x39')]=_[_0xe955('0x3a')](_0x357ca9['query']);_0x5a1026[_0xe955('0x3b')]=_[_0xe955('0x3d')](_0x5a1026[_0xe955('0x38')],_0x5a1026[_0xe955('0x39')]);_0x4e216d[_0xe955('0x3c')]=_[_0xe955('0x3d')](_0x5a1026[_0xe955('0x38')],qs[_0xe955('0x3e')](_0x357ca9['query'][_0xe955('0x3e')]));_0x4e216d[_0xe955('0x3c')]=_0x4e216d[_0xe955('0x3c')][_0xe955('0x5a')]?_0x4e216d[_0xe955('0x3c')]:_0x5a1026[_0xe955('0x38')];if(!_0x357ca9[_0xe955('0x39')][_0xe955('0x3f')]('nolimit')){_0x4e216d[_0xe955('0x1e')]=qs['limit'](_0x357ca9[_0xe955('0x39')][_0xe955('0x1e')]);_0x4e216d[_0xe955('0x1c')]=qs[_0xe955('0x1c')](_0x357ca9[_0xe955('0x39')][_0xe955('0x1c')]);}_0x4e216d[_0xe955('0x41')]=qs[_0xe955('0x42')](_0x357ca9[_0xe955('0x39')][_0xe955('0x42')]);_0x4e216d['where']=qs[_0xe955('0x3b')](_['pick'](_0x357ca9[_0xe955('0x39')],_0x5a1026[_0xe955('0x3b')]));_0x4e216d[_0xe955('0x43')][_0xe955('0xaa')]=_0x2cc513['id'];if(_0x357ca9[_0xe955('0x39')][_0xe955('0x7f')]){_0x4e216d[_0xe955('0x43')]=_[_0xe955('0x94')](_0x4e216d[_0xe955('0x43')],{'$or':_[_0xe955('0x2c')](_0x4e216d[_0xe955('0x3c')],function(_0x263f62){var _0x2c8247={};_0x2c8247[_0x263f62]={'$like':'%'+_0x357ca9['query'][_0xe955('0x7f')]+'%'};return _0x2c8247;})});}if(_0x357ca9[_0xe955('0x39')][_0xe955('0x75')]){var _0x1a9069=_0x357ca9['query']['$gte'][_0xe955('0x30')](',');var _0x6248a1={};_0x6248a1[_0x1a9069[0x0]]={'$gte':moment(_0x1a9069[0x1])[_0xe955('0xb9')](_0xe955('0xba'))};_0x4e216d['where']=_[_0xe955('0x94')](_0x4e216d[_0xe955('0x43')],_0x6248a1);}_0x4e216d=_[_0xe955('0x94')]({},_0x4e216d,_0x357ca9[_0xe955('0xaf')]);return db[_0xe955('0xb4')][_0xe955('0x1f')]({'where':_0x4e216d[_0xe955('0x43')]})[_0xe955('0x27')](function(_0x2abe23){_0x1af9db[_0xe955('0x1f')]=_0x2abe23;if(_0x357ca9[_0xe955('0x39')][_0xe955('0xbb')]){_0x4e216d[_0xe955('0xae')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x4e216d);})[_0xe955('0x27')](function(_0x29d81a){_0x1af9db['rows']=_0x29d81a;return _0x1af9db;});}})[_0xe955('0x27')](respondWithFilteredResult(_0x363372,_0x4e216d))['catch'](handleError(_0x363372,null));};exports['addTags']=function(_0x3d2330,_0x22ab41,_0xb38a4){return db[_0xe955('0x35')]['find']({'where':{'id':_0x3d2330[_0xe955('0xb5')]['id']}})['then'](handleEntityNotFound(_0x22ab41,null))[_0xe955('0x27')](function(_0x5923d7){if(_0x5923d7){return _0x5923d7[_0xe955('0xbc')](_0x3d2330[_0xe955('0xb1')]['ids'],_[_0xe955('0xb7')](_0x3d2330[_0xe955('0xb1')],[_0xe955('0xb6'),'id'])||{})[_0xe955('0xbd')](function(){return db[_0xe955('0x6b')][_0xe955('0xbe')]({'attributes':['id','name',_0xe955('0x47')],'where':{'id':_0x3d2330[_0xe955('0xb1')][_0xe955('0xb6')]}});})[_0xe955('0x27')](function(_0x1e1f6e){socket[_0xe955('0xbf')](_0xe955('0xc0'),{'id':Number(_0x3d2330[_0xe955('0xb5')]['id']),'tags':_0x1e1f6e||[]});return{'id':Number(_0x3d2330[_0xe955('0xb5')]['id']),'tags':_0x1e1f6e||[]};});}})[_0xe955('0x27')](respondWithResult(_0x22ab41,null))['catch'](handleError(_0x22ab41,null));};exports[_0xe955('0xc1')]=function(_0x1ae583,_0x232546,_0x4b6e8a){return db[_0xe955('0x35')][_0xe955('0x67')]({'where':{'id':_0x1ae583[_0xe955('0xb5')]['id']}})[_0xe955('0x27')](handleEntityNotFound(_0x232546,null))[_0xe955('0x27')](function(_0x358d3c){if(_0x358d3c){return _0x358d3c[_0xe955('0xc1')](_0x1ae583['query'][_0xe955('0xb6')]);}})[_0xe955('0x27')](respondWithStatusCode(_0x232546,null))[_0xe955('0x33')](handleError(_0x232546,null));};exports[_0xe955('0xc2')]=function(_0x5e9f4d,_0x51bc43){var _0x4ace55=moment()[_0xe955('0xc3')]()[_0xe955('0x92')]();var _0x21241d=path[_0xe955('0xc4')](config['root'],_0xe955('0xc5'),'files',_0xe955('0xc6'));var _0x27a95e=path[_0xe955('0xc4')](config['root'],'server','files',_0xe955('0xc7'));var _0x1afa0e=path['join'](_0x21241d,_0x4ace55);var _0x47b6e6=util[_0xe955('0xb9')](_0xe955('0xc8'),_0x5e9f4d[_0xe955('0xb5')]['id'],_0x4ace55);var _0x5f5d2b=path[_0xe955('0xc4')](_0x21241d,_0x47b6e6);var _0x48ecb6=[];_0x48ecb6[_0xe955('0x32')]({'model':db[_0xe955('0xc9')],'as':_0xe955('0xc9'),'raw':!![]});var _0x2129a1=[{'model':db[_0xe955('0xb4')],'as':'Messages','attributes':['id',_0xe955('0xb1'),_0xe955('0x73')],'include':_0x48ecb6}];return db['FaxInteraction'][_0xe955('0x67')]({'where':{'id':_0x5e9f4d[_0xe955('0xb5')]['id']},'include':_0x2129a1})['then'](handleEntityNotFound(_0x51bc43,null))['then'](function(_0x102290){if(_0x102290&&_0x102290[_0xe955('0xca')]){var _0xee613a=_0x102290[_0xe955('0xcb')]({'plain':!![]});fs[_0xe955('0xcc')](_0x1afa0e);for(var _0x1032ca=0x0;_0x1032ca<_0xee613a[_0xe955('0xca')]['length'];_0x1032ca++){var _0x4b4c95=_0xee613a[_0xe955('0xca')][_0x1032ca][_0xe955('0xc9')];if(_0x4b4c95){var _0x2ea177=path[_0xe955('0xc4')](_0x27a95e,_0x4b4c95[_0xe955('0xcd')]);if(fs['existsSync'](_0x2ea177)){fs[_0xe955('0xce')](_0x2ea177)['pipe'](fs[_0xe955('0xcf')](path[_0xe955('0xc4')](_0x1afa0e,_0x4b4c95[_0xe955('0xcd')])));}}}return BPromise[_0xe955('0x8a')]()[_0xe955('0x27')](function(){return new BPromise(function(_0x334d7a,_0x3e95ce){zipdir(_0x1afa0e,{'saveTo':_0x5f5d2b},function(_0x301e6b,_0x19f6ef){if(_0x301e6b)return _0x3e95ce(_0x301e6b);return _0x334d7a(_0x19f6ef);});})['then'](function(){return new BPromise(function(_0x3c9e4f,_0x25e680){rimraf(_0x1afa0e,function(_0x267f71){if(_0x267f71)_0x25e680(_0x267f71);return _0x3c9e4f();});});})['then'](function(){return _0x51bc43[_0xe955('0xc2')](_0x5f5d2b,_0x47b6e6,function(_0x5e5dce){if(_0x5e5dce){console[_0xe955('0xd0')](_0xe955('0xd1'),_0x5e5dce);}else{fs[_0xe955('0xd2')](_0x5f5d2b);}});});});}else{return _0x51bc43[_0xe955('0x18')](0xc8);}})[_0xe955('0x33')](handleError(_0x51bc43,null));};
\ No newline at end of file
+var _0xf4fa=['users','u.id\x20=\x20ui.UserId','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','me.FaxInteractionId\x20=\x20i.id','fax_interaction_has_tags','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','`\x20=\x200','having','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','type','body','some','compact','isEmpty','i.FaxAccountId\x20IN\x20?','concat','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','i.id','order','contactName','DESC','t.id\x20IN\x20?','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','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.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','catch','includeAll','include','options','create','params','describe','addMessage','FaxMessage','ids','omit','getMessages','findOne','hasOwnProperty','pick','$gte','split','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','addTags','setTags','spread','emit','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','Attachment','Messages','mkdirSync','basename','existsSync','createWriteStream','log','unlinkSync','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','end','offset','limit','undefined','count','set','json','reject','save','update','then','destroy','error','stack','name','send','Users','map','push','TagIds','FaxInteraction','rawAttributes','fieldName','query','keys','filters','intersection','model','fields','attributes','length','nolimit','sort','where','select','field','color','from','u.id','u.fullname','ui.FaxInteractionId','left_join'];(function(_0x219dd1,_0x4de49b){var _0x390089=function(_0x3cb3b2){while(--_0x3cb3b2){_0x219dd1['push'](_0x219dd1['shift']());}};_0x390089(++_0x4de49b);}(_0xf4fa,0x94));var _0xaf4f=function(_0x2519aa,_0x3e9958){_0x2519aa=_0x2519aa-0x0;var _0x3a27dd=_0xf4fa[_0x2519aa];return _0x3a27dd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf4f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaf4f('0x1'));var rp=require(_0xaf4f('0x2'));var moment=require(_0xaf4f('0x3'));var BPromise=require(_0xaf4f('0x4'));var Mustache=require(_0xaf4f('0x5'));var util=require('util');var path=require(_0xaf4f('0x6'));var sox=require(_0xaf4f('0x7'));var csv=require('to-csv');var ejs=require(_0xaf4f('0x8'));var fs=require('fs');var fs_extra=require(_0xaf4f('0x9'));var _=require(_0xaf4f('0xa'));var squel=require(_0xaf4f('0xb'));var crypto=require(_0xaf4f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xaf4f('0xd'));var toCsv=require(_0xaf4f('0xe'));var querystring=require(_0xaf4f('0xf'));var Papa=require(_0xaf4f('0x10'));var Redis=require('ioredis');var authService=require(_0xaf4f('0x11'));var qs=require(_0xaf4f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaf4f('0x13'));var logger=require('../../config/logger')(_0xaf4f('0x14'));var utils=require('../../config/utils');var config=require(_0xaf4f('0x15'));var licenseUtil=require(_0xaf4f('0x16'));var db=require(_0xaf4f('0x17'))['db'];config[_0xaf4f('0x18')]=_[_0xaf4f('0x19')](config[_0xaf4f('0x18')],{'host':_0xaf4f('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf4f('0x18')]));require('./faxInteraction.socket')[_0xaf4f('0x1b')](socket);function respondWithStatusCode(_0x460a30,_0x45ed04){_0x45ed04=_0x45ed04||0xcc;return function(_0x561487){if(_0x561487){return _0x460a30[_0xaf4f('0x1c')](_0x45ed04);}return _0x460a30[_0xaf4f('0x1d')](_0x45ed04)[_0xaf4f('0x1e')]();};}function respondWithResult(_0x1aa5bd,_0x3aa76c){_0x3aa76c=_0x3aa76c||0xc8;return function(_0x5730f5){if(_0x5730f5){return _0x1aa5bd['status'](_0x3aa76c)['json'](_0x5730f5);}};}function respondWithFilteredResult(_0x58f0cb,_0x438579){return function(_0x12ddc3){if(_0x12ddc3){var _0x212e21=typeof _0x438579[_0xaf4f('0x1f')]==='undefined'&&typeof _0x438579[_0xaf4f('0x20')]===_0xaf4f('0x21');var _0x4b5856=_0x12ddc3[_0xaf4f('0x22')];var _0x25f840=_0x212e21?0x0:_0x438579[_0xaf4f('0x1f')];var _0x3d8113=_0x212e21?_0x12ddc3[_0xaf4f('0x22')]:_0x438579[_0xaf4f('0x1f')]+_0x438579[_0xaf4f('0x20')];var _0x46b1f6;if(_0x3d8113>=_0x4b5856){_0x3d8113=_0x4b5856;_0x46b1f6=0xc8;}else{_0x46b1f6=0xce;}_0x58f0cb['status'](_0x46b1f6);return _0x58f0cb[_0xaf4f('0x23')]('Content-Range',_0x25f840+'-'+_0x3d8113+'/'+_0x4b5856)[_0xaf4f('0x24')](_0x12ddc3);}return null;};}function patchUpdates(_0x13ee77){return function(_0x412288){try{jsonpatch['apply'](_0x412288,_0x13ee77,!![]);}catch(_0x582e90){return BPromise[_0xaf4f('0x25')](_0x582e90);}return _0x412288[_0xaf4f('0x26')]();};}function saveUpdates(_0x18db6b,_0x4b4c00){return function(_0x39c08f){if(_0x39c08f){return _0x39c08f[_0xaf4f('0x27')](_0x18db6b)[_0xaf4f('0x28')](function(_0x55618f){return _0x55618f;});}return null;};}function removeEntity(_0x2c34df,_0x32b385){return function(_0x4cce3f){if(_0x4cce3f){return _0x4cce3f[_0xaf4f('0x29')]()[_0xaf4f('0x28')](function(){_0x2c34df[_0xaf4f('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x211596,_0x395fc0){return function(_0x2df72d){if(!_0x2df72d){_0x211596[_0xaf4f('0x1c')](0x194);}return _0x2df72d;};}function handleError(_0x4e5f01,_0x56cb91){_0x56cb91=_0x56cb91||0x1f4;return function(_0x561039){logger[_0xaf4f('0x2a')](_0x561039[_0xaf4f('0x2b')]);if(_0x561039[_0xaf4f('0x2c')]){delete _0x561039['name'];}_0x4e5f01[_0xaf4f('0x1d')](_0x56cb91)[_0xaf4f('0x2d')](_0x561039);};}function getInteractionUsers(_0x37b539,_0x3e96a4){return new BPromise(function(_0x4142c9,_0x42860d){try{if(_0x3e96a4[_0x37b539['id']]){_0x37b539[_0xaf4f('0x2e')]=_[_0xaf4f('0x2f')](_0x3e96a4[_0x37b539['id']],function(_0x163ed1){return{'id':_0x163ed1['id'],'fullname':_0x163ed1['fullname']};});}}catch(_0x539b98){_0x42860d(_0x539b98);}_0x4142c9(_0x37b539);});}function getInteractionTags(_0x37d933,_0x18270a){return new BPromise(function(_0x4bf907,_0x27787d){try{if(_0x37d933['TagIds']){_0x37d933['Tags']=[];_0x37d933['TagIds']['split'](',')['forEach'](function(_0x5eb2ec){_0x37d933['Tags'][_0xaf4f('0x30')](_0x18270a[_0x5eb2ec]);});}delete _0x37d933[_0xaf4f('0x31')];}catch(_0x45bba1){_0x27787d(_0x45bba1);}_0x4bf907(_0x37d933);});}function updateFaxInteraction(_0xaffb5c,_0x3f64b9,_0x206334){return new BPromise(function(_0x2c7112,_0x12ae3e){return getInteractionUsers(_0xaffb5c,_0x206334)[_0xaf4f('0x28')](function(_0x112871){return getInteractionTags(_0x112871,_0x3f64b9);})[_0xaf4f('0x28')](function(_0x268428){_0x2c7112(_0x268428);})['catch'](function(_0xf1afa9){_0x12ae3e(_0xf1afa9);});});}exports['index']=function(_0xb59e5d,_0x259389){var _0x1a37dd={},_0x1ff1cd={},_0x44d5ec={'count':0x0,'rows':[]};var _0x23b50c=_[_0xaf4f('0x2f')](db[_0xaf4f('0x32')][_0xaf4f('0x33')],function(_0x330582){return{'name':_0x330582[_0xaf4f('0x34')],'type':_0x330582['type']['key']};});_0x1ff1cd['model']=_[_0xaf4f('0x2f')](_0x23b50c,_0xaf4f('0x2c'));_0x1ff1cd[_0xaf4f('0x35')]=_[_0xaf4f('0x36')](_0xb59e5d[_0xaf4f('0x35')]);_0x1ff1cd[_0xaf4f('0x37')]=_[_0xaf4f('0x38')](_0x1ff1cd[_0xaf4f('0x39')],_0x1ff1cd[_0xaf4f('0x35')]);_0x1a37dd['attributes']=_[_0xaf4f('0x38')](_0x1ff1cd[_0xaf4f('0x39')],qs[_0xaf4f('0x3a')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x3a')]));_0x1a37dd[_0xaf4f('0x3b')]=_0x1a37dd['attributes'][_0xaf4f('0x3c')]?_0x1a37dd[_0xaf4f('0x3b')]:_0x1ff1cd[_0xaf4f('0x39')];if(!_0xb59e5d[_0xaf4f('0x35')]['hasOwnProperty'](_0xaf4f('0x3d'))){_0x1a37dd['limit']=qs[_0xaf4f('0x20')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x20')]);_0x1a37dd[_0xaf4f('0x1f')]=qs[_0xaf4f('0x1f')](_0xb59e5d['query'][_0xaf4f('0x1f')]);}_0x1a37dd['order']=qs[_0xaf4f('0x3e')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x3e')]);_0x1a37dd[_0xaf4f('0x3f')]=qs[_0xaf4f('0x37')](_['pick'](_0xb59e5d[_0xaf4f('0x35')],_0x1ff1cd['filters']),_0x23b50c);var _0x5bb023=[];var _0x33812b=squel[_0xaf4f('0x40')]()[_0xaf4f('0x41')]('id')[_0xaf4f('0x41')]('name')[_0xaf4f('0x41')](_0xaf4f('0x42'))[_0xaf4f('0x43')]('tools_tags');var _0x5a4142=squel[_0xaf4f('0x40')]()[_0xaf4f('0x41')](_0xaf4f('0x44'))[_0xaf4f('0x41')](_0xaf4f('0x45'))['field'](_0xaf4f('0x46'))[_0xaf4f('0x43')]('user_has_fax_interactions','ui')[_0xaf4f('0x47')](_0xaf4f('0x48'),'u',_0xaf4f('0x49'));var _0x3b7964=squel[_0xaf4f('0x40')]()[_0xaf4f('0x43')]('fax_interactions','i')[_0xaf4f('0x47')](_0xaf4f('0x4a'),'c',_0xaf4f('0x4b'))[_0xaf4f('0x47')](_0xaf4f('0x48'),'o','o.id\x20=\x20i.UserId')['left_join'](_0xaf4f('0x4c'),'a',_0xaf4f('0x4d'))['left_join'](_0xaf4f('0x4e'),'me',_0xaf4f('0x4f'))[_0xaf4f('0x47')](_0xaf4f('0x50'),'it',_0xaf4f('0x51'))['left_join']('tools_tags','t',_0xaf4f('0x52'));var _0x30de7f=squel['expr']();var _0x4dd17a=[];var _0x50818c=squel['expr']();var _0x2854b5;if(_0xb59e5d['query'][_0xaf4f('0x53')]){_0x2854b5=as[_0xaf4f('0x54')](_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x53')]);var _0x4fc3da=_0x2854b5[_0xaf4f('0x55')];for(var _0x566f3b=0x0;_0x566f3b<_0x2854b5[_0xaf4f('0x56')][_0xaf4f('0x3c')];_0x566f3b++){var _0x1cdb30=_0x2854b5[_0xaf4f('0x56')][_0x566f3b];var _0x2dc9d0='i';var _0x41f0a5=_[_0xaf4f('0x57')](_0x23b50c,[_0xaf4f('0x2c'),_0x1cdb30[_0xaf4f('0x41')]]);if(!_0x41f0a5){switch(_0x1cdb30[_0xaf4f('0x41')]){case _0xaf4f('0x58'):if(_0x1cdb30[_0xaf4f('0x59')]==0x1){_0x3b7964['having']('`'+_0x1cdb30['field']+_0xaf4f('0x5a'));}else{_0x3b7964[_0xaf4f('0x5b')]('`'+_0x1cdb30['field']+_0xaf4f('0x5c'));}break;case _0xaf4f('0x5d'):if(_0x1cdb30[_0xaf4f('0x5e')]===_0xaf4f('0x5f')){if(_0x1cdb30[_0xaf4f('0x59')]['split']('\x20')['length']>0x1){_0x30de7f[_0x4fc3da](_0xaf4f('0x60'),qs['getFullTextValue'](_0x1cdb30[_0xaf4f('0x59')]),null);}else{var _0x5d5a47='%'+_0x1cdb30['value']+'%';_0x30de7f[_0x4fc3da](_0xaf4f('0x61'),_0x5d5a47,_0x5d5a47,_0x5d5a47);}}else{_0x41f0a5=_[_0xaf4f('0x57')](_0x23b50c,[_0xaf4f('0x2c'),_0xaf4f('0x62')]);_0x1cdb30[_0xaf4f('0x41')]=_0xaf4f('0x62');_0x3e4052=as['buildExpression'](_0x2dc9d0,_0x41f0a5['type'],_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052[_0xaf4f('0x63')],_0x3e4052['value'][_0xaf4f('0x64')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x1e')]);}break;case _0xaf4f('0x65'):var _0x1b778e=_0x1cdb30[_0xaf4f('0x59')]['split'](',')[_0xaf4f('0x2f')](function(_0x4681d5){return Number(_0x4681d5);});_0x1b778e[_0xaf4f('0x66')](function(_0x1eeaa0){_0x50818c['or'](_0xaf4f('0x67'),'%,'+_0x1eeaa0+',%');});_0x4dd17a=_[_0xaf4f('0x68')](_0x4dd17a,_0x1b778e);break;case _0xaf4f('0x69'):if(_0x1cdb30[_0xaf4f('0x5e')]===_0xaf4f('0x5f')){_0x30de7f[_0x4fc3da](_0xaf4f('0x6a'),'%'+_0x1cdb30[_0xaf4f('0x59')]+'%',null);}else{_0x41f0a5=_['find'](_0x23b50c,['name',_0xaf4f('0x6b')]);_0x1cdb30['field']=_0xaf4f('0x6b');_0x3e4052=as[_0xaf4f('0x6c')](_0x2dc9d0,_0x41f0a5[_0xaf4f('0x6d')],_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052[_0xaf4f('0x63')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x64')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x1e')]);}break;case _0xaf4f('0x6e'):_0x3e4052=as[_0xaf4f('0x6c')]('me',null,_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052[_0xaf4f('0x63')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x64')],_0x3e4052['value']['end']);break;}}else{var _0x3e4052=as['buildExpression'](_0x2dc9d0,_0x41f0a5[_0xaf4f('0x6d')],_0x1cdb30);_0x30de7f[_0x4fc3da](_0x3e4052['text'],_0x3e4052['value'][_0xaf4f('0x64')],_0x3e4052[_0xaf4f('0x59')][_0xaf4f('0x1e')]);}}}else{var _0x5781ff=_(_0xb59e5d[_0xaf4f('0x35')])['keys']()[_0xaf4f('0x2f')](function(_0x1bf2ed){return _[_0xaf4f('0x6f')](_0x23b50c,[_0xaf4f('0x2c'),_0x1bf2ed])?_0x1bf2ed:undefined;})[_0xaf4f('0x70')]()[_0xaf4f('0x59')]();if(!_[_0xaf4f('0x71')](_0x5781ff)){_0x5781ff[_0xaf4f('0x66')](function(_0x58f9f6){if(_0x58f9f6==='FaxAccountId'){_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x72'),[][_0xaf4f('0x73')](_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6]));}else if(_0x58f9f6===_0xaf4f('0x74')){var _0x53f487=JSON['parse'](_0xb59e5d['query'][_0x58f9f6])['$gte'];var _0x521119=JSON[_0xaf4f('0x75')](_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6])[_0xaf4f('0x76')];_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x77'),_0x53f487,_0x521119);}else{if(_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6]===_0xaf4f('0x78')){_0x3b7964[_0xaf4f('0x3f')]('i.'+_0x58f9f6+_0xaf4f('0x79'));}else{_0x3b7964['where']('i.'+_0x58f9f6+_0xaf4f('0x7a'),_0xb59e5d[_0xaf4f('0x35')][_0x58f9f6]);}}});}if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x7b')]){if(_0xb59e5d[_0xaf4f('0x35')]['read']==0x1){_0x3b7964['having'](_0xaf4f('0x7c'));}else{_0x3b7964[_0xaf4f('0x5b')](_0xaf4f('0x7d'));}}if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x7e')]){_0x4dd17a=_[_0xaf4f('0x7f')](_0xb59e5d['query'][_0xaf4f('0x7e')])?_0xb59e5d['query'][_0xaf4f('0x7e')]:new Array(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x7e')]);_0x4dd17a[_0xaf4f('0x66')](function(_0x108b32){_0x50818c['or'](_0xaf4f('0x67'),'%,'+_0x108b32+',%');});}if(_0xb59e5d['query'][_0xaf4f('0x80')]){var _0x5de302=_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x80')][_0xaf4f('0x81')]('\x5c','\x5c\x5c')[_0xaf4f('0x81')](/'/g,'\x27\x27');if(qs[_0xaf4f('0x82')](_0x5de302)){_0x30de7f['or'](_0xaf4f('0x83'),_0x5de302+'%')['or'](_0xaf4f('0x84'),_0x5de302+'%');}_0x30de7f['or'](_0xaf4f('0x85'),_0x5de302+'%');}}_0x3b7964[_0xaf4f('0x3f')](_0x30de7f);_0x3b7964[_0xaf4f('0x86')]('i.id');var _0xf5504d={'type':db[_0xaf4f('0x87')][_0xaf4f('0x88')][_0xaf4f('0x89')],'raw':!![]};var _0x446c69=_0x3b7964[_0xaf4f('0x8a')]();_0x446c69[_0xaf4f('0x41')](_0xaf4f('0x8b'));_0x446c69['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xaf4f('0x58'));if(_0x1a37dd[_0xaf4f('0x8c')]){_0x1a37dd['order'][_0xaf4f('0x66')](function(_0xf08db7){var _0x435c8e=_0xf08db7[0x0]===_0xaf4f('0x8d')?_0xf08db7[0x0]:'i.'+_0xf08db7[0x0];_0x3b7964['order'](_0x435c8e,_0xf08db7[0x1]===_0xaf4f('0x8e')?![]:!![]);});}if(!_[_0xaf4f('0x71')](_0x4dd17a)){_0x3b7964[_0xaf4f('0x5b')](_0x50818c);_0x446c69[_0xaf4f('0x3f')](_0xaf4f('0x8f'),_0x4dd17a);}BPromise['resolve']()['then'](function(){if(!_0x2854b5){if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x90')])return;_0x446c69[_0xaf4f('0x3f')](_0xaf4f('0x91'));_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x91'));return;}if(_0xb59e5d[_0xaf4f('0x92')][_0xaf4f('0x93')]!==_0xaf4f('0x94'))return;return _0xb59e5d[_0xaf4f('0x92')][_0xaf4f('0x95')]({'attributes':['id'],'raw':!![]})[_0xaf4f('0x28')](function(_0x2709c1){if(_[_0xaf4f('0x71')](_0x2709c1)){_0x446c69[_0xaf4f('0x3f')](_0xaf4f('0x96'));_0x3b7964[_0xaf4f('0x3f')]('i.FaxAccountId\x20IS\x20NULL');}else{_0x446c69['where'](_0xaf4f('0x72'),_[_0xaf4f('0x2f')](_0x2709c1,'id'));_0x3b7964[_0xaf4f('0x3f')](_0xaf4f('0x72'),_['map'](_0x2709c1,'id'));}});})[_0xaf4f('0x28')](function(){if(_0xb59e5d['user'][_0xaf4f('0x93')]===_0xaf4f('0x94')&&!_0x2854b5&&!_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x90')])return[];return db[_0xaf4f('0x97')][_0xaf4f('0x35')](_0x446c69[_0xaf4f('0x98')](),_0xf5504d);})['then'](function(_0x2bce1b){_0x44d5ec[_0xaf4f('0x22')]=_0x2bce1b['length'];if(_0x44d5ec[_0xaf4f('0x22')]===0x0)return[];return db[_0xaf4f('0x97')][_0xaf4f('0x35')](_0x33812b[_0xaf4f('0x98')](),_0xf5504d)[_0xaf4f('0x28')](function(_0x4b8fdd){_0x5bb023=_[_0xaf4f('0x99')](_0x4b8fdd,'id');_0xf5504d=_[_0xaf4f('0x9a')](_0xf5504d,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xb59e5d[_0xaf4f('0x35')][_0xaf4f('0x3a')]){_0x1a37dd[_0xaf4f('0x3b')][_0xaf4f('0x66')](function(_0x37bf27){_0x3b7964[_0xaf4f('0x41')]('i.'+_0x37bf27);});}else{_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9b'),_0xaf4f('0x58'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9c'),'Account.key');_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9d'),'Account.mandatoryDisposition');_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9e'),_0xaf4f('0x8d'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0x9f'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa0'),_0xaf4f('0xa1'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa2'),_0xaf4f('0xa3'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa4'),'Contact.email');_0x3b7964[_0xaf4f('0x41')]('c.phone',_0xaf4f('0xa5'));_0x3b7964['field'](_0xaf4f('0xa6'),_0xaf4f('0xa7'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xa8'),_0xaf4f('0xa9'));_0x3b7964[_0xaf4f('0x41')](_0xaf4f('0xaa'),_0xaf4f('0xab'));_0x3b7964[_0xaf4f('0x41')]('o.internal','Owner.internal');_0x3b7964[_0xaf4f('0x41')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xaf4f('0x31'));}if(_0x1a37dd[_0xaf4f('0x20')])_0x3b7964[_0xaf4f('0x20')](_0x1a37dd[_0xaf4f('0x20')]);if(_0x1a37dd[_0xaf4f('0x1f')])_0x3b7964[_0xaf4f('0x1f')](_0x1a37dd[_0xaf4f('0x1f')]);return db[_0xaf4f('0x97')][_0xaf4f('0x35')](_0x3b7964[_0xaf4f('0x98')](),_0xf5504d);})['then'](function(_0x4215fd){if(_0x4215fd['length']>0x0)_0x5a4142['where'](_0xaf4f('0xac'),_[_0xaf4f('0x2f')](_0x4215fd,'id'));return db[_0xaf4f('0x97')]['query'](_0x5a4142['toString'](),_0xf5504d)[_0xaf4f('0x28')](function(_0x115a6b){var _0x38ae87=_[_0xaf4f('0xad')](_0x115a6b,_0xaf4f('0xae'));var _0x22a422=[];_0x4215fd[_0xaf4f('0x66')](function(_0x457638){_0x22a422[_0xaf4f('0x30')](updateFaxInteraction(_0x457638,_0x5bb023,_0x38ae87));});return BPromise[_0xaf4f('0xaf')](_0x22a422);});});})['then'](function(_0x2b9cc9){_0x44d5ec['rows']=_0x2b9cc9;return _0x44d5ec;})['then'](respondWithFilteredResult(_0x259389,_0x1a37dd))[_0xaf4f('0xb0')](handleError(_0x259389,null));};exports['show']=function(_0xa4de71,_0x58dcdd){var _0xef4089={'raw':![],'where':{'id':_0xa4de71['params']['id']}},_0x1a7411={};_0x1a7411[_0xaf4f('0x39')]=_[_0xaf4f('0x36')](db[_0xaf4f('0x32')][_0xaf4f('0x33')]);_0x1a7411[_0xaf4f('0x35')]=_[_0xaf4f('0x36')](_0xa4de71[_0xaf4f('0x35')]);_0x1a7411[_0xaf4f('0x37')]=_[_0xaf4f('0x38')](_0x1a7411[_0xaf4f('0x39')],_0x1a7411[_0xaf4f('0x35')]);_0xef4089[_0xaf4f('0x3b')]=_[_0xaf4f('0x38')](_0x1a7411[_0xaf4f('0x39')],qs[_0xaf4f('0x3a')](_0xa4de71[_0xaf4f('0x35')][_0xaf4f('0x3a')]));_0xef4089[_0xaf4f('0x3b')]=_0xef4089[_0xaf4f('0x3b')][_0xaf4f('0x3c')]?_0xef4089[_0xaf4f('0x3b')]:_0x1a7411[_0xaf4f('0x39')];if(_0xa4de71['query'][_0xaf4f('0xb1')]){_0xef4089[_0xaf4f('0xb2')]=[{'all':!![]}];}_0xef4089=_['merge']({},_0xef4089,_0xa4de71[_0xaf4f('0xb3')]);return db['FaxInteraction']['find'](_0xef4089)[_0xaf4f('0x28')](handleEntityNotFound(_0x58dcdd,null))[_0xaf4f('0x28')](respondWithResult(_0x58dcdd,null))[_0xaf4f('0xb0')](handleError(_0x58dcdd,null));};exports['create']=function(_0x12b27e,_0x17bc08){return db[_0xaf4f('0x32')][_0xaf4f('0xb4')](_0x12b27e[_0xaf4f('0x6e')],{})[_0xaf4f('0x28')](respondWithResult(_0x17bc08,0xc9))['catch'](handleError(_0x17bc08,null));};exports[_0xaf4f('0x27')]=function(_0x19a9d2,_0x4b60fe){if(_0x19a9d2[_0xaf4f('0x6e')]['id']){delete _0x19a9d2[_0xaf4f('0x6e')]['id'];}return db[_0xaf4f('0x32')]['find']({'where':{'id':_0x19a9d2[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x4b60fe,null))[_0xaf4f('0x28')](saveUpdates(_0x19a9d2[_0xaf4f('0x6e')],null))['then'](respondWithResult(_0x4b60fe,null))[_0xaf4f('0xb0')](handleError(_0x4b60fe,null));};exports[_0xaf4f('0x29')]=function(_0x1a21e6,_0x149aae){return db[_0xaf4f('0x32')]['find']({'where':{'id':_0x1a21e6['params']['id']}})['then'](handleEntityNotFound(_0x149aae,null))['then'](removeEntity(_0x149aae,null))[_0xaf4f('0xb0')](handleError(_0x149aae,null));};exports[_0xaf4f('0xb6')]=function(_0x2dcc0,_0x318f0f){return db[_0xaf4f('0x32')][_0xaf4f('0xb6')]()[_0xaf4f('0x28')](respondWithResult(_0x318f0f,null))[_0xaf4f('0xb0')](handleError(_0x318f0f,null));};exports[_0xaf4f('0xb7')]=function(_0x54d84e,_0x42b4a6,_0x207a60){return db[_0xaf4f('0xb8')][_0xaf4f('0x57')]({'where':{'id':_0x54d84e[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x42b4a6,null))[_0xaf4f('0x28')](function(_0x3354ff){if(_0x3354ff){return _0x3354ff[_0xaf4f('0xb7')](_0x54d84e[_0xaf4f('0x6e')][_0xaf4f('0xb9')],_[_0xaf4f('0xba')](_0x54d84e['body'],[_0xaf4f('0xb9'),'id'])||{});}})[_0xaf4f('0x28')](respondWithResult(_0x42b4a6,null))[_0xaf4f('0xb0')](handleError(_0x42b4a6,null));};exports[_0xaf4f('0xbb')]=function(_0x685213,_0x1e5426,_0x481d16){var _0x3cfc5d={'raw':![],'where':{}};var _0x5040bc={};var _0xbb1c9b={'count':0x0,'rows':[]};return db[_0xaf4f('0x32')][_0xaf4f('0xbc')]({'where':{'id':_0x685213[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x1e5426,null))[_0xaf4f('0x28')](function(_0x2d8709){if(_0x2d8709){_0x5040bc[_0xaf4f('0x39')]=_[_0xaf4f('0x36')](db[_0xaf4f('0xb8')]['rawAttributes']);_0x5040bc[_0xaf4f('0x35')]=_[_0xaf4f('0x36')](_0x685213['query']);_0x5040bc[_0xaf4f('0x37')]=_[_0xaf4f('0x38')](_0x5040bc[_0xaf4f('0x39')],_0x5040bc['query']);_0x3cfc5d[_0xaf4f('0x3b')]=_[_0xaf4f('0x38')](_0x5040bc[_0xaf4f('0x39')],qs['fields'](_0x685213['query']['fields']));_0x3cfc5d['attributes']=_0x3cfc5d['attributes'][_0xaf4f('0x3c')]?_0x3cfc5d['attributes']:_0x5040bc['model'];if(!_0x685213[_0xaf4f('0x35')][_0xaf4f('0xbd')](_0xaf4f('0x3d'))){_0x3cfc5d[_0xaf4f('0x20')]=qs[_0xaf4f('0x20')](_0x685213['query']['limit']);_0x3cfc5d['offset']=qs[_0xaf4f('0x1f')](_0x685213[_0xaf4f('0x35')][_0xaf4f('0x1f')]);}_0x3cfc5d[_0xaf4f('0x8c')]=qs[_0xaf4f('0x3e')](_0x685213[_0xaf4f('0x35')][_0xaf4f('0x3e')]);_0x3cfc5d[_0xaf4f('0x3f')]=qs['filters'](_[_0xaf4f('0xbe')](_0x685213[_0xaf4f('0x35')],_0x5040bc['filters']));_0x3cfc5d[_0xaf4f('0x3f')]['FaxInteractionId']=_0x2d8709['id'];if(_0x685213[_0xaf4f('0x35')][_0xaf4f('0x80')]){_0x3cfc5d[_0xaf4f('0x3f')]=_[_0xaf4f('0x9a')](_0x3cfc5d[_0xaf4f('0x3f')],{'$or':_[_0xaf4f('0x2f')](_0x3cfc5d[_0xaf4f('0x3b')],function(_0x1455a2){var _0x28ee4c={};_0x28ee4c[_0x1455a2]={'$like':'%'+_0x685213[_0xaf4f('0x35')]['filter']+'%'};return _0x28ee4c;})});}if(_0x685213[_0xaf4f('0x35')]['$gte']){var _0x3325e1=_0x685213[_0xaf4f('0x35')][_0xaf4f('0xbf')][_0xaf4f('0xc0')](',');var _0x522d8a={};_0x522d8a[_0x3325e1[0x0]]={'$gte':moment(_0x3325e1[0x1])['format'](_0xaf4f('0xc1'))};_0x3cfc5d['where']=_[_0xaf4f('0x9a')](_0x3cfc5d[_0xaf4f('0x3f')],_0x522d8a);}_0x3cfc5d=_['merge']({},_0x3cfc5d,_0x685213[_0xaf4f('0xb3')]);return db[_0xaf4f('0xb8')][_0xaf4f('0x22')]({'where':_0x3cfc5d[_0xaf4f('0x3f')]})[_0xaf4f('0x28')](function(_0xd8bbf9){_0xbb1c9b[_0xaf4f('0x22')]=_0xd8bbf9;if(_0x685213['query'][_0xaf4f('0xb1')]){_0x3cfc5d[_0xaf4f('0xb2')]=[{'all':!![]}];}return db[_0xaf4f('0xb8')][_0xaf4f('0xc2')](_0x3cfc5d);})['then'](function(_0x49eb09){_0xbb1c9b[_0xaf4f('0xc3')]=_0x49eb09;return _0xbb1c9b;});}})[_0xaf4f('0x28')](respondWithFilteredResult(_0x1e5426,_0x3cfc5d))[_0xaf4f('0xb0')](handleError(_0x1e5426,null));};exports[_0xaf4f('0xc4')]=function(_0xa52812,_0x38654c,_0x37d2c1){return db[_0xaf4f('0x32')][_0xaf4f('0x57')]({'where':{'id':_0xa52812['params']['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x38654c,null))[_0xaf4f('0x28')](function(_0x20194d){if(_0x20194d){return _0x20194d[_0xaf4f('0xc5')](_0xa52812[_0xaf4f('0x6e')][_0xaf4f('0xb9')],_[_0xaf4f('0xba')](_0xa52812[_0xaf4f('0x6e')],['ids','id'])||{})[_0xaf4f('0xc6')](function(){return db[_0xaf4f('0x65')]['findAll']({'attributes':['id','name',_0xaf4f('0x42')],'where':{'id':_0xa52812[_0xaf4f('0x6e')][_0xaf4f('0xb9')]}});})[_0xaf4f('0x28')](function(_0x1b045f){socket[_0xaf4f('0xc7')](_0xaf4f('0xc8'),{'id':Number(_0xa52812[_0xaf4f('0xb5')]['id']),'tags':_0x1b045f||[]});return{'id':Number(_0xa52812['params']['id']),'tags':_0x1b045f||[]};});}})[_0xaf4f('0x28')](respondWithResult(_0x38654c,null))['catch'](handleError(_0x38654c,null));};exports[_0xaf4f('0xc9')]=function(_0x4847cc,_0x31403f,_0x5f49ca){return db[_0xaf4f('0x32')][_0xaf4f('0x57')]({'where':{'id':_0x4847cc[_0xaf4f('0xb5')]['id']}})[_0xaf4f('0x28')](handleEntityNotFound(_0x31403f,null))[_0xaf4f('0x28')](function(_0x5052cf){if(_0x5052cf){return _0x5052cf[_0xaf4f('0xc9')](_0x4847cc['query']['ids']);}})[_0xaf4f('0x28')](respondWithStatusCode(_0x31403f,null))[_0xaf4f('0xb0')](handleError(_0x31403f,null));};exports[_0xaf4f('0xca')]=function(_0x311d74,_0x568e1f){var _0x3e1454=moment()[_0xaf4f('0xcb')]()[_0xaf4f('0x98')]();var _0x2d98a7=path[_0xaf4f('0xcc')](config[_0xaf4f('0xcd')],_0xaf4f('0xce'),_0xaf4f('0xcf'),_0xaf4f('0xd0'));var _0x4e6def=path[_0xaf4f('0xcc')](config[_0xaf4f('0xcd')],_0xaf4f('0xce'),'files',_0xaf4f('0xd1'));var _0xf31adf=path[_0xaf4f('0xcc')](_0x2d98a7,_0x3e1454);var _0x25972b=util[_0xaf4f('0xd2')](_0xaf4f('0xd3'),_0x311d74[_0xaf4f('0xb5')]['id'],_0x3e1454);var _0xd2b5a9=path['join'](_0x2d98a7,_0x25972b);var _0x5a3c84=[];_0x5a3c84['push']({'model':db[_0xaf4f('0xd4')],'as':_0xaf4f('0xd4'),'raw':!![]});var _0x429059=[{'model':db['FaxMessage'],'as':_0xaf4f('0xd5'),'attributes':['id',_0xaf4f('0x6e'),'createdAt'],'include':_0x5a3c84}];return db[_0xaf4f('0x32')][_0xaf4f('0x57')]({'where':{'id':_0x311d74[_0xaf4f('0xb5')]['id']},'include':_0x429059})['then'](handleEntityNotFound(_0x568e1f,null))[_0xaf4f('0x28')](function(_0x314d15){if(_0x314d15&&_0x314d15[_0xaf4f('0xd5')]){var _0x18a888=_0x314d15['get']({'plain':!![]});fs[_0xaf4f('0xd6')](_0xf31adf);for(var _0x37bc3c=0x0;_0x37bc3c<_0x18a888[_0xaf4f('0xd5')][_0xaf4f('0x3c')];_0x37bc3c++){var _0x18ec3b=_0x18a888[_0xaf4f('0xd5')][_0x37bc3c][_0xaf4f('0xd4')];if(_0x18ec3b){var _0x3d10f8=path[_0xaf4f('0xcc')](_0x4e6def,_0x18ec3b[_0xaf4f('0xd7')]);if(fs[_0xaf4f('0xd8')](_0x3d10f8)){fs['createReadStream'](_0x3d10f8)['pipe'](fs[_0xaf4f('0xd9')](path[_0xaf4f('0xcc')](_0xf31adf,_0x18ec3b['basename'])));}}}return BPromise['resolve']()[_0xaf4f('0x28')](function(){return new BPromise(function(_0x282d1d,_0x176221){zipdir(_0xf31adf,{'saveTo':_0xd2b5a9},function(_0x49e1f2,_0x58c02f){if(_0x49e1f2)return _0x176221(_0x49e1f2);return _0x282d1d(_0x58c02f);});})['then'](function(){return new BPromise(function(_0x546eb2,_0x3b7f46){rimraf(_0xf31adf,function(_0x4b3430){if(_0x4b3430)_0x3b7f46(_0x4b3430);return _0x546eb2();});});})[_0xaf4f('0x28')](function(){return _0x568e1f[_0xaf4f('0xca')](_0xd2b5a9,_0x25972b,function(_0x57631a){if(_0x57631a){console[_0xaf4f('0xda')]('err',_0x57631a);}else{fs[_0xaf4f('0xdb')](_0xd2b5a9);}});});});}else{return _0x568e1f[_0xaf4f('0x1c')](0xc8);}})[_0xaf4f('0xb0')](handleError(_0x568e1f,null));};
\ No newline at end of file
index b9bb222..6e3bc3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2595=['FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','findAll','unreadMessages','emit','catch','hook','exports','events','../../mysqldb'];(function(_0x3c4e14,_0xf3f9c){var _0x191342=function(_0x1ede27){while(--_0x1ede27){_0x3c4e14['push'](_0x3c4e14['shift']());}};_0x191342(++_0xf3f9c);}(_0x2595,0xec));var _0x5259=function(_0xfcdda0,_0x32479b){_0xfcdda0=_0xfcdda0-0x0;var _0x17ebe3=_0x2595[_0xfcdda0];return _0x17ebe3;};'use strict';var EventEmitter=require(_0x5259('0x0'));var FaxInteraction=require(_0x5259('0x1'))['db'][_0x5259('0x2')];var FaxMessage=require(_0x5259('0x1'))['db'][_0x5259('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x5259('0x4')](0x0);var events={'afterCreate':_0x5259('0x5'),'afterUpdate':_0x5259('0x6'),'afterDestroy':_0x5259('0x7')};function emitEvent(_0x43ea9c){return function(_0x343a22,_0x579dc4,_0x32ba95){_0x343a22['getUsers']({'attributes':['id'],'raw':!![]})[_0x5259('0x8')](function(_0xb56e22){_0x343a22[_0x5259('0x9')](_0x5259('0xa'),_0xb56e22['map'](function(_0x416dda){return{'id':_0x416dda['id']};}));return FaxMessage[_0x5259('0xb')]({'where':{'FaxInteractionId':_0x343a22['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5259('0x8')](function(_0xfe9cab){_0x343a22[_0x5259('0x9')](_0x5259('0xc'),_0xfe9cab['length']);FaxInteractionEvents[_0x5259('0xd')](_0x43ea9c+':'+_0x343a22['id'],_0x343a22);FaxInteractionEvents[_0x5259('0xd')](_0x43ea9c,_0x343a22);_0x32ba95(null);})[_0x5259('0xe')](_0x32ba95(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction[_0x5259('0xf')](e,emitEvent(event));}}module[_0x5259('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0xf652=['Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','FaxInteraction','../../mysqldb','FaxMessage','setMaxListeners','save','update','getUsers','setDataValue'];(function(_0x13524d,_0x505b49){var _0x9918b4=function(_0xef1f0a){while(--_0xef1f0a){_0x13524d['push'](_0x13524d['shift']());}};_0x9918b4(++_0x505b49);}(_0xf652,0xab));var _0x2f65=function(_0x324af8,_0x524320){_0x324af8=_0x324af8-0x0;var _0x9f05ec=_0xf652[_0x324af8];return _0x9f05ec;};'use strict';var EventEmitter=require(_0x2f65('0x0'));var FaxInteraction=require('../../mysqldb')['db'][_0x2f65('0x1')];var FaxMessage=require(_0x2f65('0x2'))['db'][_0x2f65('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x2f65('0x4')](0x0);var events={'afterCreate':_0x2f65('0x5'),'afterUpdate':_0x2f65('0x6'),'afterDestroy':'remove'};function emitEvent(_0xb1a6ed){return function(_0xed5111,_0x41d781,_0x1f1652){_0xed5111[_0x2f65('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5fee9f){_0xed5111[_0x2f65('0x8')](_0x2f65('0x9'),_0x5fee9f['map'](function(_0x2de43e){return{'id':_0x2de43e['id']};}));return FaxMessage[_0x2f65('0xa')]({'where':{'FaxInteractionId':_0xed5111['id'],'direction':'in','read':![]},'raw':!![]});})[_0x2f65('0xb')](function(_0x441eb8){_0xed5111[_0x2f65('0x8')](_0x2f65('0xc'),_0x441eb8[_0x2f65('0xd')]);FaxInteractionEvents[_0x2f65('0xe')](_0xb1a6ed+':'+_0xed5111['id'],_0xed5111);FaxInteractionEvents[_0x2f65('0xe')](_0xb1a6ed,_0xed5111);_0x1f1652(null);})[_0x2f65('0xf')](_0x1f1652(null));};}for(var e in events){if(events[_0x2f65('0x10')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x2f65('0x11')]=FaxInteractionEvents;
\ No newline at end of file
index 4f01936..51ae69a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['fax_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxInteraction.attributes','exports','define'];(function(_0x363816,_0xc20c5a){var _0x368201=function(_0x57dae1){while(--_0x57dae1){_0x363816['push'](_0x363816['shift']());}};_0x368201(++_0xc20c5a);}(_0xf61e,0x191));var _0xef61=function(_0x2ed258,_0x12dc9a){_0x2ed258=_0x2ed258-0x0;var _0x3052d8=_0xf61e[_0x2ed258];return _0x3052d8;};'use strict';var _=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var logger=require(_0xef61('0x2'))(_0xef61('0x3'));var moment=require(_0xef61('0x4'));var BPromise=require(_0xef61('0x5'));var rp=require(_0xef61('0x6'));var fs=require('fs');var path=require(_0xef61('0x7'));var rimraf=require(_0xef61('0x8'));var config=require(_0xef61('0x9'));var attributes=require(_0xef61('0xa'));module[_0xef61('0xb')]=function(_0x5b00b2,_0x9e17f4){return _0x5b00b2[_0xef61('0xc')]('FaxInteraction',attributes,{'tableName':_0xef61('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x277fa1,_0x106e7f,_0x4dba00){if(_0x277fa1['changed'](_0xef61('0xe'))){_0x277fa1[_0xef61('0xf')]=moment()[_0xef61('0x10')](_0xef61('0x11'));}_0x4dba00(null,_0x277fa1);}}});};
\ No newline at end of file
+var _0x45c2=['FaxInteraction','fax_interactions','changed','closed','closedAt','format','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./faxInteraction.attributes','exports','define'];(function(_0x35bad0,_0x21927d){var _0x4fe50f=function(_0x1873df){while(--_0x1873df){_0x35bad0['push'](_0x35bad0['shift']());}};_0x4fe50f(++_0x21927d);}(_0x45c2,0x1af));var _0x245c=function(_0x13f58e,_0x265b14){_0x13f58e=_0x13f58e-0x0;var _0x47f915=_0x45c2[_0x13f58e];return _0x47f915;};'use strict';var _=require(_0x245c('0x0'));var util=require(_0x245c('0x1'));var logger=require(_0x245c('0x2'))(_0x245c('0x3'));var moment=require(_0x245c('0x4'));var BPromise=require('bluebird');var rp=require(_0x245c('0x5'));var fs=require('fs');var path=require(_0x245c('0x6'));var rimraf=require(_0x245c('0x7'));var config=require('../../config/environment');var attributes=require(_0x245c('0x8'));module[_0x245c('0x9')]=function(_0x6d6a5e,_0x58d5b3){return _0x6d6a5e[_0x245c('0xa')](_0x245c('0xb'),attributes,{'tableName':_0x245c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x27c30a,_0x1ca0d6,_0x1d1bb1){if(_0x27c30a[_0x245c('0xd')](_0x245c('0xe'))){_0x27c30a[_0x245c('0xf')]=moment()[_0x245c('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1d1bb1(null,_0x27c30a);}}});};
\ No newline at end of file
index 55d02a3..bbf5867 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ce=['raw','options','where','attributes','debug','stringify','AddTagsToFaxInteraction','find','addTags','body','ids','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','FaxInteraction,\x20%s,\x20%s,\x20%s','error','FaxInteraction,\x20%s,\x20%s','request\x20sent','result','message','catch','UpdateFaxInteraction','update'];(function(_0xb6bd0,_0x3606bb){var _0x2be42a=function(_0xcc25b){while(--_0xcc25b){_0xb6bd0['push'](_0xb6bd0['shift']());}};_0x2be42a(++_0x3606bb);}(_0x98ce,0x19d));var _0xe98c=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x98ce[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xe98c('0x0'));var util=require(_0xe98c('0x1'));var moment=require(_0xe98c('0x2'));var BPromise=require('bluebird');var rs=require(_0xe98c('0x3'));var fs=require('fs');var Redis=require(_0xe98c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xe98c('0x5'));var logger=require(_0xe98c('0x6'))(_0xe98c('0x7'));var config=require(_0xe98c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe98c('0x9')][_0xe98c('0xa')]({'port':0x232a});config[_0xe98c('0xb')]=_[_0xe98c('0xc')](config[_0xe98c('0xb')],{'host':_0xe98c('0xd'),'port':0x18eb});var socket=require(_0xe98c('0xe'))(new Redis(config[_0xe98c('0xb')]));require('./faxInteraction.socket')[_0xe98c('0xf')](socket);function respondWithRpcPromise(_0x365abd,_0x1f54ac,_0x3bfa57){return new BPromise(function(_0x227953,_0x138fa8){return client['request'](_0x365abd,_0x3bfa57)[_0xe98c('0x10')](function(_0x1310b9){logger[_0xe98c('0x11')]('FaxInteraction,\x20%s,\x20%s',_0x1f54ac,'request\x20sent');logger['debug'](_0xe98c('0x12'),_0x1f54ac,'request\x20sent',JSON['stringify'](_0x1310b9));if(_0x1310b9[_0xe98c('0x13')]){if(_0x1310b9[_0xe98c('0x13')]['code']===0x1f4){logger[_0xe98c('0x13')](_0xe98c('0x14'),_0x1f54ac,_0x1310b9[_0xe98c('0x13')]['message']);return _0x138fa8(_0x1310b9[_0xe98c('0x13')]['message']);}logger[_0xe98c('0x13')]('FaxInteraction,\x20%s,\x20%s',_0x1f54ac,_0x1310b9['error']['message']);return _0x227953(_0x1310b9['error']['message']);}else{logger['info'](_0xe98c('0x14'),_0x1f54ac,_0xe98c('0x15'));_0x227953(_0x1310b9[_0xe98c('0x16')][_0xe98c('0x17')]);}})[_0xe98c('0x18')](function(_0x134568){logger[_0xe98c('0x13')](_0xe98c('0x14'),_0x1f54ac,_0x134568);_0x138fa8(_0x134568);});});}exports[_0xe98c('0x19')]=function(_0x40f2e4){var _0xe79258=this;return new Promise(function(_0x4a8a22,_0x5a8874){return db['FaxInteraction'][_0xe98c('0x1a')](_0x40f2e4['body'],{'raw':_0x40f2e4['options']?_0x40f2e4['options'][_0xe98c('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40f2e4[_0xe98c('0x1c')]?_0x40f2e4['options'][_0xe98c('0x1d')]||null:null,'attributes':_0x40f2e4[_0xe98c('0x1c')]?_0x40f2e4[_0xe98c('0x1c')][_0xe98c('0x1e')]||null:null,'limit':_0x40f2e4[_0xe98c('0x1c')]?_0x40f2e4[_0xe98c('0x1c')]['limit']||null:null})['then'](function(_0x2f375f){logger[_0xe98c('0x11')](_0xe98c('0x19'),_0x40f2e4);logger[_0xe98c('0x1f')](_0xe98c('0x19'),_0x40f2e4,JSON[_0xe98c('0x20')](_0x2f375f));_0x4a8a22(_0x2f375f);})['catch'](function(_0x367ca0){logger[_0xe98c('0x13')](_0xe98c('0x19'),_0x367ca0[_0xe98c('0x17')],_0x40f2e4);_0x5a8874(_0xe79258['error'](0x1f4,_0x367ca0[_0xe98c('0x17')]));});});};exports[_0xe98c('0x21')]=function(_0x21fa6f){return new Promise(function(_0xc7477e,_0x4759be){return db['FaxInteraction'][_0xe98c('0x22')]({'where':_0x21fa6f[_0xe98c('0x1c')]?_0x21fa6f[_0xe98c('0x1c')][_0xe98c('0x1d')]||null:null})[_0xe98c('0x10')](function(_0x1143b7){if(_0x1143b7){return _0x1143b7[_0xe98c('0x23')](_0x21fa6f[_0xe98c('0x24')]['ids'],_['omit'](_0x21fa6f[_0xe98c('0x24')],[_0xe98c('0x25'),'id'])||{});}})[_0xe98c('0x26')](function(_0x3d8005){logger[_0xe98c('0x11')](_0xe98c('0x27'),_0x21fa6f);logger[_0xe98c('0x1f')](_0xe98c('0x27'),_0x21fa6f,JSON[_0xe98c('0x20')](_0x3d8005));_0xc7477e(_0x3d8005);})[_0xe98c('0x18')](function(_0x3a461b){logger['error'](_0xe98c('0x27'),_0x3a461b[_0xe98c('0x17')],_0x21fa6f);_0x4759be(_this[_0xe98c('0x13')](0x1f4,_0x3a461b[_0xe98c('0x17')]));});});};
\ No newline at end of file
+var _0x3928=['error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','stringify','AddTagsToFaxInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x5cafe3,_0x57c15f){var _0x2464d6=function(_0x55f3e3){while(--_0x55f3e3){_0x5cafe3['push'](_0x5cafe3['shift']());}};_0x2464d6(++_0x57c15f);}(_0x3928,0x157));var _0x8392=function(_0x276584,_0x3346e3){_0x276584=_0x276584-0x0;var _0x145cfb=_0x3928[_0x276584];return _0x145cfb;};'use strict';var _=require(_0x8392('0x0'));var util=require(_0x8392('0x1'));var moment=require(_0x8392('0x2'));var BPromise=require(_0x8392('0x3'));var rs=require(_0x8392('0x4'));var fs=require('fs');var Redis=require(_0x8392('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8392('0x6'));var logger=require(_0x8392('0x7'))(_0x8392('0x8'));var config=require(_0x8392('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8392('0xa')][_0x8392('0xb')]({'port':0x232a});config[_0x8392('0xc')]=_[_0x8392('0xd')](config[_0x8392('0xc')],{'host':_0x8392('0xe'),'port':0x18eb});var socket=require(_0x8392('0xf'))(new Redis(config[_0x8392('0xc')]));require(_0x8392('0x10'))[_0x8392('0x11')](socket);function respondWithRpcPromise(_0x4c0490,_0x20728f,_0xbe5b1c){return new BPromise(function(_0x31e5b8,_0x14beab){return client[_0x8392('0x12')](_0x4c0490,_0xbe5b1c)[_0x8392('0x13')](function(_0x1bf497){logger[_0x8392('0x14')](_0x8392('0x15'),_0x20728f,_0x8392('0x16'));logger[_0x8392('0x17')](_0x8392('0x18'),_0x20728f,_0x8392('0x16'),JSON['stringify'](_0x1bf497));if(_0x1bf497[_0x8392('0x19')]){if(_0x1bf497['error'][_0x8392('0x1a')]===0x1f4){logger['error'](_0x8392('0x15'),_0x20728f,_0x1bf497[_0x8392('0x19')]['message']);return _0x14beab(_0x1bf497['error'][_0x8392('0x1b')]);}logger[_0x8392('0x19')](_0x8392('0x15'),_0x20728f,_0x1bf497['error'][_0x8392('0x1b')]);return _0x31e5b8(_0x1bf497[_0x8392('0x19')][_0x8392('0x1b')]);}else{logger[_0x8392('0x14')](_0x8392('0x15'),_0x20728f,_0x8392('0x16'));_0x31e5b8(_0x1bf497[_0x8392('0x1c')][_0x8392('0x1b')]);}})[_0x8392('0x1d')](function(_0x568971){logger[_0x8392('0x19')](_0x8392('0x15'),_0x20728f,_0x568971);_0x14beab(_0x568971);});});}exports[_0x8392('0x1e')]=function(_0x57347b){var _0x265e10=this;return new Promise(function(_0x42a7b1,_0x6a7720){return db[_0x8392('0x1f')][_0x8392('0x20')](_0x57347b[_0x8392('0x21')],{'raw':_0x57347b[_0x8392('0x22')]?_0x57347b[_0x8392('0x22')][_0x8392('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x57347b[_0x8392('0x22')]?_0x57347b[_0x8392('0x22')][_0x8392('0x24')]||null:null,'attributes':_0x57347b[_0x8392('0x22')]?_0x57347b[_0x8392('0x22')][_0x8392('0x25')]||null:null,'limit':_0x57347b['options']?_0x57347b['options']['limit']||null:null})[_0x8392('0x13')](function(_0x4c23c3){logger['info'](_0x8392('0x1e'),_0x57347b);logger[_0x8392('0x17')](_0x8392('0x1e'),_0x57347b,JSON[_0x8392('0x26')](_0x4c23c3));_0x42a7b1(_0x4c23c3);})[_0x8392('0x1d')](function(_0x2408f1){logger[_0x8392('0x19')]('UpdateFaxInteraction',_0x2408f1[_0x8392('0x1b')],_0x57347b);_0x6a7720(_0x265e10[_0x8392('0x19')](0x1f4,_0x2408f1[_0x8392('0x1b')]));});});};exports[_0x8392('0x27')]=function(_0x329ea5){return new Promise(function(_0x1804fa,_0x69dfa1){return db[_0x8392('0x1f')][_0x8392('0x28')]({'where':_0x329ea5[_0x8392('0x22')]?_0x329ea5[_0x8392('0x22')]['where']||null:null})['then'](function(_0x3d4c25){if(_0x3d4c25){return _0x3d4c25[_0x8392('0x29')](_0x329ea5[_0x8392('0x21')][_0x8392('0x2a')],_[_0x8392('0x2b')](_0x329ea5[_0x8392('0x21')],[_0x8392('0x2a'),'id'])||{});}})[_0x8392('0x2c')](function(_0x46e1a0){logger[_0x8392('0x14')](_0x8392('0x2d'),_0x329ea5);logger[_0x8392('0x17')](_0x8392('0x2d'),_0x329ea5,JSON[_0x8392('0x26')](_0x46e1a0));_0x1804fa(_0x46e1a0);})[_0x8392('0x1d')](function(_0x3ad915){logger[_0x8392('0x19')](_0x8392('0x2d'),_0x3ad915['message'],_0x329ea5);_0x69dfa1(_this[_0x8392('0x19')](0x1f4,_0x3ad915[_0x8392('0x1b')]));});});};
\ No newline at end of file
index a112c5a..5d53a4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b1c=['remove','emit','length','faxInteraction:','./faxInteraction.events','save'];(function(_0x5e0b96,_0x578c9c){var _0x3ca7bc=function(_0x4516a2){while(--_0x4516a2){_0x5e0b96['push'](_0x5e0b96['shift']());}};_0x3ca7bc(++_0x578c9c);}(_0x7b1c,0x19c));var _0xc7b1=function(_0x5e34fe,_0x480b18){_0x5e34fe=_0x5e34fe-0x0;var _0x1a23e7=_0x7b1c[_0x5e34fe];return _0x1a23e7;};'use strict';var FaxInteractionEvents=require(_0xc7b1('0x0'));var events=[_0xc7b1('0x1'),_0xc7b1('0x2'),'update'];function createListener(_0x4101a3,_0x28d452){return function(_0x2e4beb){_0x28d452[_0xc7b1('0x3')](_0x4101a3,_0x2e4beb);};}function removeListener(_0x357b88,_0x37247b){return function(){FaxInteractionEvents['removeListener'](_0x357b88,_0x37247b);};}exports['register']=function(_0x29c69b){for(var _0x57bec7=0x0,_0x3a6b89=events[_0xc7b1('0x4')];_0x57bec7<_0x3a6b89;_0x57bec7++){var _0x16aa79=events[_0x57bec7];var _0x28f54e=createListener(_0xc7b1('0x5')+_0x16aa79,_0x29c69b);FaxInteractionEvents['on'](_0x16aa79,_0x28f54e);}};
\ No newline at end of file
+var _0x9216=['save','remove','update','removeListener','length','faxInteraction:','./faxInteraction.events'];(function(_0xc2195c,_0x2c2626){var _0x3c46f8=function(_0xa24c8){while(--_0xa24c8){_0xc2195c['push'](_0xc2195c['shift']());}};_0x3c46f8(++_0x2c2626);}(_0x9216,0x1b8));var _0x6921=function(_0x40f46f,_0x16bba2){_0x40f46f=_0x40f46f-0x0;var _0x9d21a=_0x9216[_0x40f46f];return _0x9d21a;};'use strict';var FaxInteractionEvents=require(_0x6921('0x0'));var events=[_0x6921('0x1'),_0x6921('0x2'),_0x6921('0x3')];function createListener(_0x316e99,_0x5054a6){return function(_0x41bc79){_0x5054a6['emit'](_0x316e99,_0x41bc79);};}function removeListener(_0x9c194e,_0xfb1069){return function(){FaxInteractionEvents[_0x6921('0x4')](_0x9c194e,_0xfb1069);};}exports['register']=function(_0xeb265b){for(var _0x4b87d1=0x0,_0x3c288d=events[_0x6921('0x5')];_0x4b87d1<_0x3c288d;_0x4b87d1++){var _0x276f13=events[_0x4b87d1];var _0x2ca55c=createListener(_0x6921('0x6')+_0x276f13,_0xeb265b);FaxInteractionEvents['on'](_0x276f13,_0x2ca55c);}};
\ No newline at end of file
index 0a9155b..2da28d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x289f=['../../config/environment','./faxInteraction.controller','get','index','/describe','isAuthenticated','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','removeTags','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x28896a,_0x4dc100){var _0x5a4f2b=function(_0x56c353){while(--_0x56c353){_0x28896a['push'](_0x28896a['shift']());}};_0x5a4f2b(++_0x4dc100);}(_0x289f,0x7d));var _0xf289=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0x289f[_0x2dadb9];return _0x2f0097;};'use strict';var multer=require(_0xf289('0x0'));var util=require('util');var path=require(_0xf289('0x1'));var timeout=require(_0xf289('0x2'));var express=require('express');var router=express[_0xf289('0x3')]();var fs_extra=require(_0xf289('0x4'));var auth=require(_0xf289('0x5'));var interaction=require(_0xf289('0x6'));var config=require(_0xf289('0x7'));var controller=require(_0xf289('0x8'));router[_0xf289('0x9')]('/',auth['isAuthenticated'](),controller[_0xf289('0xa')]);router['get'](_0xf289('0xb'),auth[_0xf289('0xc')](),controller['describe']);router[_0xf289('0x9')](_0xf289('0xd'),auth[_0xf289('0xc')](),controller[_0xf289('0xe')]);router['get'](_0xf289('0xf'),auth[_0xf289('0xc')](),controller[_0xf289('0x10')]);router['get'](_0xf289('0x11'),auth[_0xf289('0xc')](),controller[_0xf289('0x12')]);router[_0xf289('0x13')]('/',auth[_0xf289('0xc')](),controller['create']);router['post'](_0xf289('0xf'),auth[_0xf289('0xc')](),controller[_0xf289('0x14')]);router[_0xf289('0x13')](_0xf289('0x15'),auth['isAuthenticated'](),interaction[_0xf289('0x16')](_0xf289('0x17'),_0xf289('0x18')),controller[_0xf289('0x19')]);router['put'](_0xf289('0xd'),auth[_0xf289('0xc')](),interaction[_0xf289('0x16')]('fax',_0xf289('0x1a')),controller[_0xf289('0x1b')]);router[_0xf289('0x1c')]('/:id',auth[_0xf289('0xc')](),interaction[_0xf289('0x16')](_0xf289('0x17'),_0xf289('0x1d')),controller[_0xf289('0x1e')]);router[_0xf289('0x1c')](_0xf289('0x15'),auth[_0xf289('0xc')](),controller[_0xf289('0x1f')]);module[_0xf289('0x20')]=router;
\ No newline at end of file
+var _0x9561=['post','create','/:id/tags','tracked','fax','addTags','put','faxinteraction:update','update','delete','faxinteraction:destroy','removeTags','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','index','get','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download'];(function(_0x230797,_0x2db929){var _0x39fe26=function(_0x44cc5e){while(--_0x44cc5e){_0x230797['push'](_0x230797['shift']());}};_0x39fe26(++_0x2db929);}(_0x9561,0x109));var _0x1956=function(_0x53b9e2,_0x5e3769){_0x53b9e2=_0x53b9e2-0x0;var _0x4cf430=_0x9561[_0x53b9e2];return _0x4cf430;};'use strict';var multer=require(_0x1956('0x0'));var util=require(_0x1956('0x1'));var path=require('path');var timeout=require(_0x1956('0x2'));var express=require('express');var router=express[_0x1956('0x3')]();var fs_extra=require(_0x1956('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1956('0x5'));var config=require('../../config/environment');var controller=require('./faxInteraction.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x1956('0x6')]);router[_0x1956('0x7')]('/describe',auth[_0x1956('0x8')](),controller[_0x1956('0x9')]);router[_0x1956('0x7')](_0x1956('0xa'),auth['isAuthenticated'](),controller[_0x1956('0xb')]);router[_0x1956('0x7')](_0x1956('0xc'),auth[_0x1956('0x8')](),controller[_0x1956('0xd')]);router[_0x1956('0x7')](_0x1956('0xe'),auth[_0x1956('0x8')](),controller['download']);router[_0x1956('0xf')]('/',auth[_0x1956('0x8')](),controller[_0x1956('0x10')]);router['post'](_0x1956('0xc'),auth[_0x1956('0x8')](),controller['addMessage']);router['post'](_0x1956('0x11'),auth[_0x1956('0x8')](),interaction[_0x1956('0x12')](_0x1956('0x13'),'faxinteraction:addtags'),controller[_0x1956('0x14')]);router[_0x1956('0x15')](_0x1956('0xa'),auth[_0x1956('0x8')](),interaction[_0x1956('0x12')](_0x1956('0x13'),_0x1956('0x16')),controller[_0x1956('0x17')]);router[_0x1956('0x18')]('/:id',auth[_0x1956('0x8')](),interaction['tracked'](_0x1956('0x13'),_0x1956('0x19')),controller['destroy']);router[_0x1956('0x18')](_0x1956('0x11'),auth[_0x1956('0x8')](),controller[_0x1956('0x1a')]);module[_0x1956('0x1b')]=router;
\ No newline at end of file
index fb03fbc..54359f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79a8=['out','DATE','sequelize','TEXT','medium','BOOLEAN'];(function(_0x199db2,_0x2e775d){var _0x1ebd4d=function(_0x5519bf){while(--_0x5519bf){_0x199db2['push'](_0x199db2['shift']());}};_0x1ebd4d(++_0x2e775d);}(_0x79a8,0x1d0));var _0x879a=function(_0x33dda7,_0x59117d){_0x33dda7=_0x33dda7-0x0;var _0x56de5=_0x79a8[_0x33dda7];return _0x56de5;};'use strict';var Sequelize=require(_0x879a('0x0'));module['exports']={'body':{'type':Sequelize[_0x879a('0x1')](_0x879a('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x879a('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x879a('0x4')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x879a('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x879a('0x5')]}};
\ No newline at end of file
+var _0x6b19=['medium','out','TEXT','DATE','sequelize','exports'];(function(_0x32a979,_0x209a70){var _0x53c276=function(_0x5e7e6d){while(--_0x5e7e6d){_0x32a979['push'](_0x32a979['shift']());}};_0x53c276(++_0x209a70);}(_0x6b19,0xe8));var _0x96b1=function(_0x4090f8,_0x3df966){_0x4090f8=_0x4090f8-0x0;var _0x2a7827=_0x6b19[_0x4090f8];return _0x2a7827;};'use strict';var Sequelize=require(_0x96b1('0x0'));module[_0x96b1('0x1')]={'body':{'type':Sequelize['TEXT'](_0x96b1('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x96b1('0x3')),'defaultValue':_0x96b1('0x3'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x96b1('0x4')],'defaultValue':null},'readAt':{'type':Sequelize[_0x96b1('0x5')]}};
\ No newline at end of file
index 215bbb3..f2f216b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7f4=['offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','index','map','FaxMessage','rawAttributes','fieldName','key','model','keys','intersection','query','fields','attributes','hasOwnProperty','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','params','length','find','catch','body','describe','fax-interactions','accept','fax','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','FaxInteractionId','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','SELECT','email','internal','interface','SIP/%s','channel','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','ContactId','QueryTypes','User','rejectmessage','create','CmContact','findOne','isNil','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','Attachment','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','client','http','then','FaxMessage,\x20%s,\x20%s','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','result','status','end','json'];(function(_0x1ac6e5,_0x40f47f){var _0x5877dc=function(_0x99caea){while(--_0x99caea){_0x1ac6e5['push'](_0x1ac6e5['shift']());}};_0x5877dc(++_0x40f47f);}(_0xf7f4,0xe9));var _0x4f7f=function(_0x44d00e,_0x3f76a0){_0x44d00e=_0x44d00e-0x0;var _0x24ffcf=_0xf7f4[_0x44d00e];return _0x24ffcf;};'use strict';var emlformat=require(_0x4f7f('0x0'));var rimraf=require(_0x4f7f('0x1'));var zipdir=require(_0x4f7f('0x2'));var jsonpatch=require(_0x4f7f('0x3'));var rp=require(_0x4f7f('0x4'));var moment=require(_0x4f7f('0x5'));var BPromise=require(_0x4f7f('0x6'));var Mustache=require(_0x4f7f('0x7'));var util=require('util');var path=require(_0x4f7f('0x8'));var sox=require(_0x4f7f('0x9'));var csv=require(_0x4f7f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4f7f('0xb'));var _=require(_0x4f7f('0xc'));var squel=require(_0x4f7f('0xd'));var crypto=require('crypto');var jsforce=require(_0x4f7f('0xe'));var deskjs=require(_0x4f7f('0xf'));var toCsv=require(_0x4f7f('0xa'));var querystring=require(_0x4f7f('0x10'));var Papa=require('papaparse');var Redis=require(_0x4f7f('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4f7f('0x12'));var hardwareService=require(_0x4f7f('0x13'));var logger=require(_0x4f7f('0x14'))(_0x4f7f('0x15'));var utils=require(_0x4f7f('0x16'));var config=require(_0x4f7f('0x17'));var licenseUtil=require(_0x4f7f('0x18'));var db=require(_0x4f7f('0x19'))['db'];config[_0x4f7f('0x1a')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x4f7f('0x1b'))(new Redis(config[_0x4f7f('0x1a')]));require('./faxMessage.socket')[_0x4f7f('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson[_0x4f7f('0x1d')][_0x4f7f('0x1e')]({'port':0x232c});var client9002=jayson[_0x4f7f('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x13afd2,_0x25d4ca,_0x1e85f2,_0x2a4581){return new BPromise(function(_0x459b25,_0x2ad968){var _0x5d99b4=_0x2a4581||client;return _0x5d99b4['request'](_0x13afd2,_0x1e85f2)[_0x4f7f('0x1f')](function(_0x936b77){logger['info'](_0x4f7f('0x20'),_0x25d4ca,'request\x20sent');logger['debug'](_0x4f7f('0x21'),_0x25d4ca,'request\x20sent',JSON[_0x4f7f('0x22')](_0x936b77));if(_0x936b77[_0x4f7f('0x23')]){if(_0x936b77[_0x4f7f('0x23')]['code']===0x1f4){logger[_0x4f7f('0x23')](_0x4f7f('0x20'),_0x25d4ca,_0x936b77['error'][_0x4f7f('0x24')]);return _0x2ad968(_0x936b77[_0x4f7f('0x23')][_0x4f7f('0x24')]);}logger[_0x4f7f('0x23')]('FaxMessage,\x20%s,\x20%s',_0x25d4ca,_0x936b77['error'][_0x4f7f('0x24')]);return _0x459b25(_0x936b77[_0x4f7f('0x23')]['message']);}else{logger[_0x4f7f('0x25')](_0x4f7f('0x20'),_0x25d4ca,_0x4f7f('0x26'));_0x459b25(_0x936b77[_0x4f7f('0x27')][_0x4f7f('0x24')]);}})['catch'](function(_0x883ffd){logger[_0x4f7f('0x23')](_0x4f7f('0x20'),_0x25d4ca,_0x883ffd);_0x2ad968(_0x883ffd);});});}function respondWithStatusCode(_0x2283ff,_0x1ba76f){_0x1ba76f=_0x1ba76f||0xcc;return function(_0xf607b3){if(_0xf607b3){return _0x2283ff['sendStatus'](_0x1ba76f);}return _0x2283ff[_0x4f7f('0x28')](_0x1ba76f)[_0x4f7f('0x29')]();};}function respondWithResult(_0x593c86,_0x164490){_0x164490=_0x164490||0xc8;return function(_0x577249){if(_0x577249){return _0x593c86['status'](_0x164490)[_0x4f7f('0x2a')](_0x577249);}};}function respondWithFilteredResult(_0x49ac02,_0xc25feb){return function(_0x3a7e3b){if(_0x3a7e3b){var _0xb56d33=typeof _0xc25feb[_0x4f7f('0x2b')]===_0x4f7f('0x2c')&&typeof _0xc25feb[_0x4f7f('0x2d')]===_0x4f7f('0x2c');var _0x4b6769=_0x3a7e3b[_0x4f7f('0x2e')];var _0x29937f=_0xb56d33?0x0:_0xc25feb[_0x4f7f('0x2b')];var _0x2e040c=_0xb56d33?_0x3a7e3b[_0x4f7f('0x2e')]:_0xc25feb[_0x4f7f('0x2b')]+_0xc25feb[_0x4f7f('0x2d')];var _0x1cfbb6;if(_0x2e040c>=_0x4b6769){_0x2e040c=_0x4b6769;_0x1cfbb6=0xc8;}else{_0x1cfbb6=0xce;}_0x49ac02[_0x4f7f('0x28')](_0x1cfbb6);return _0x49ac02['set'](_0x4f7f('0x2f'),_0x29937f+'-'+_0x2e040c+'/'+_0x4b6769)[_0x4f7f('0x2a')](_0x3a7e3b);}return null;};}function patchUpdates(_0x881040){return function(_0x7fb8d8){try{jsonpatch[_0x4f7f('0x30')](_0x7fb8d8,_0x881040,!![]);}catch(_0x2119cd){return BPromise[_0x4f7f('0x31')](_0x2119cd);}return _0x7fb8d8[_0x4f7f('0x32')]();};}function saveUpdates(_0x3b7a22,_0x504d64){return function(_0x1d8093){if(_0x1d8093){return _0x1d8093[_0x4f7f('0x33')](_0x3b7a22)[_0x4f7f('0x1f')](function(_0x3bdb7e){return _0x3bdb7e;});}return null;};}function removeEntity(_0x2e13f0,_0x1cee72){return function(_0x8e715c){if(_0x8e715c){return _0x8e715c[_0x4f7f('0x34')]()[_0x4f7f('0x1f')](function(){_0x2e13f0['status'](0xcc)[_0x4f7f('0x29')]();});}};}function handleEntityNotFound(_0x5abb25,_0x1b8f53){return function(_0x15cdeb){if(!_0x15cdeb){_0x5abb25[_0x4f7f('0x35')](0x194);}return _0x15cdeb;};}function handleError(_0x30cb8b,_0x449b67){_0x449b67=_0x449b67||0x1f4;return function(_0x2a4caa){logger[_0x4f7f('0x23')](_0x2a4caa[_0x4f7f('0x36')]);if(_0x2a4caa[_0x4f7f('0x37')]){delete _0x2a4caa[_0x4f7f('0x37')];}_0x30cb8b[_0x4f7f('0x28')](_0x449b67)['send'](_0x2a4caa);};}exports[_0x4f7f('0x38')]=function(_0x3e54d6,_0x35978e){var _0x2b3065={},_0x1afecd={},_0x2762a9={'count':0x0,'rows':[]};var _0x7a0750=_[_0x4f7f('0x39')](db[_0x4f7f('0x3a')][_0x4f7f('0x3b')],function(_0x14e77a){return{'name':_0x14e77a[_0x4f7f('0x3c')],'type':_0x14e77a['type'][_0x4f7f('0x3d')]};});_0x1afecd[_0x4f7f('0x3e')]=_[_0x4f7f('0x39')](_0x7a0750,'name');_0x1afecd['query']=_[_0x4f7f('0x3f')](_0x3e54d6['query']);_0x1afecd['filters']=_[_0x4f7f('0x40')](_0x1afecd['model'],_0x1afecd[_0x4f7f('0x41')]);_0x2b3065['attributes']=_[_0x4f7f('0x40')](_0x1afecd[_0x4f7f('0x3e')],qs[_0x4f7f('0x42')](_0x3e54d6['query'][_0x4f7f('0x42')]));_0x2b3065[_0x4f7f('0x43')]=_0x2b3065['attributes']['length']?_0x2b3065['attributes']:_0x1afecd['model'];if(!_0x3e54d6[_0x4f7f('0x41')][_0x4f7f('0x44')]('nolimit')){_0x2b3065[_0x4f7f('0x2d')]=qs[_0x4f7f('0x2d')](_0x3e54d6[_0x4f7f('0x41')][_0x4f7f('0x2d')]);_0x2b3065[_0x4f7f('0x2b')]=qs[_0x4f7f('0x2b')](_0x3e54d6[_0x4f7f('0x41')]['offset']);}_0x2b3065[_0x4f7f('0x45')]=qs[_0x4f7f('0x46')](_0x3e54d6[_0x4f7f('0x41')][_0x4f7f('0x46')]);_0x2b3065['where']=qs[_0x4f7f('0x47')](_[_0x4f7f('0x48')](_0x3e54d6['query'],_0x1afecd[_0x4f7f('0x47')]),_0x7a0750);if(_0x3e54d6[_0x4f7f('0x41')][_0x4f7f('0x49')]){_0x2b3065[_0x4f7f('0x4a')]=_[_0x4f7f('0x4b')](_0x2b3065['where'],{'$or':_[_0x4f7f('0x39')](_0x7a0750,function(_0x5b18bb){if(_0x5b18bb[_0x4f7f('0x4c')]!==_0x4f7f('0x4d')){var _0xf2d168={};_0xf2d168[_0x5b18bb[_0x4f7f('0x37')]]={'$like':'%'+_0x3e54d6['query'][_0x4f7f('0x49')]+'%'};return _0xf2d168;}})});}_0x2b3065=_['merge']({},_0x2b3065,_0x3e54d6[_0x4f7f('0x4e')]);var _0x362a84={'where':_0x2b3065['where']};return db[_0x4f7f('0x3a')][_0x4f7f('0x2e')](_0x362a84)['then'](function(_0x598f34){_0x2762a9[_0x4f7f('0x2e')]=_0x598f34;if(_0x3e54d6[_0x4f7f('0x41')][_0x4f7f('0x4f')]){_0x2b3065[_0x4f7f('0x50')]=[{'all':!![]}];}return db['FaxMessage'][_0x4f7f('0x51')](_0x2b3065);})[_0x4f7f('0x1f')](function(_0x4bcd9a){_0x2762a9[_0x4f7f('0x52')]=_0x4bcd9a;return _0x2762a9;})[_0x4f7f('0x1f')](respondWithFilteredResult(_0x35978e,_0x2b3065))['catch'](handleError(_0x35978e,null));};exports['show']=function(_0x5e8a0d,_0xdb3d){var _0xed0645={'raw':!![],'where':{'id':_0x5e8a0d[_0x4f7f('0x53')]['id']}},_0x358a68={};_0x358a68[_0x4f7f('0x3e')]=_[_0x4f7f('0x3f')](db[_0x4f7f('0x3a')][_0x4f7f('0x3b')]);_0x358a68[_0x4f7f('0x41')]=_[_0x4f7f('0x3f')](_0x5e8a0d[_0x4f7f('0x41')]);_0x358a68[_0x4f7f('0x47')]=_[_0x4f7f('0x40')](_0x358a68[_0x4f7f('0x3e')],_0x358a68[_0x4f7f('0x41')]);_0xed0645[_0x4f7f('0x43')]=_['intersection'](_0x358a68[_0x4f7f('0x3e')],qs['fields'](_0x5e8a0d[_0x4f7f('0x41')]['fields']));_0xed0645[_0x4f7f('0x43')]=_0xed0645[_0x4f7f('0x43')][_0x4f7f('0x54')]?_0xed0645[_0x4f7f('0x43')]:_0x358a68[_0x4f7f('0x3e')];if(_0x5e8a0d[_0x4f7f('0x41')][_0x4f7f('0x4f')]){_0xed0645['include']=[{'all':!![]}];}_0xed0645=_[_0x4f7f('0x4b')]({},_0xed0645,_0x5e8a0d[_0x4f7f('0x4e')]);return db[_0x4f7f('0x3a')][_0x4f7f('0x55')](_0xed0645)['then'](handleEntityNotFound(_0xdb3d,null))['then'](respondWithResult(_0xdb3d,null))[_0x4f7f('0x56')](handleError(_0xdb3d,null));};exports['update']=function(_0x7d87b2,_0x5940af){if(_0x7d87b2[_0x4f7f('0x57')]['id']){delete _0x7d87b2[_0x4f7f('0x57')]['id'];}return db[_0x4f7f('0x3a')][_0x4f7f('0x55')]({'where':{'id':_0x7d87b2[_0x4f7f('0x53')]['id']}})[_0x4f7f('0x1f')](handleEntityNotFound(_0x5940af,null))['then'](saveUpdates(_0x7d87b2[_0x4f7f('0x57')],null))[_0x4f7f('0x1f')](respondWithResult(_0x5940af,null))[_0x4f7f('0x56')](handleError(_0x5940af,null));};exports[_0x4f7f('0x34')]=function(_0x54fe2e,_0x4734f6){return db[_0x4f7f('0x3a')][_0x4f7f('0x55')]({'where':{'id':_0x54fe2e['params']['id']}})['then'](handleEntityNotFound(_0x4734f6,null))['then'](removeEntity(_0x4734f6,null))[_0x4f7f('0x56')](handleError(_0x4734f6,null));};exports['describe']=function(_0x4ec941,_0x271611){return db[_0x4f7f('0x3a')][_0x4f7f('0x58')]()[_0x4f7f('0x1f')](respondWithResult(_0x271611,null))[_0x4f7f('0x56')](handleError(_0x271611,null));};var interaction_log=require(_0x4f7f('0x14'))(_0x4f7f('0x59'));exports[_0x4f7f('0x5a')]=function(_0x2fec51,_0x46c9a2,_0x146776){var _0x3b921d={'agent':{},'channel':_0x4f7f('0x5b')};if(_0x2fec51[_0x4f7f('0x57')]['id']){delete _0x2fec51[_0x4f7f('0x57')]['id'];}_0x2fec51[_0x4f7f('0x57')]['read']=!![];_0x2fec51['body'][_0x4f7f('0x5c')]=moment()[_0x4f7f('0x5d')](_0x4f7f('0x5e'));_0x2fec51[_0x4f7f('0x57')][_0x4f7f('0x5f')]=_0x2fec51[_0x4f7f('0x57')][_0x4f7f('0x5f')]||_0x2fec51[_0x4f7f('0x60')]['id'];_0x3b921d[_0x4f7f('0x61')]['id']=_0x2fec51[_0x4f7f('0x57')]['UserId'];return db[_0x4f7f('0x3a')][_0x4f7f('0x55')]({'where':{'id':_0x2fec51['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x46c9a2,null))[_0x4f7f('0x1f')](saveUpdates(_0x2fec51[_0x4f7f('0x57')],null))[_0x4f7f('0x1f')](function(_0x50188e){if(_0x50188e){_0x3b921d[_0x4f7f('0x24')]=_0x50188e[_0x4f7f('0x62')]({'plain':!![]});return db[_0x4f7f('0x63')][_0x4f7f('0x55')]({'where':{'id':_0x50188e[_0x4f7f('0x64')]}});}return null;})[_0x4f7f('0x1f')](handleEntityNotFound(_0x46c9a2,null))['then'](function(_0x541227){if(_0x541227){return _0x541227[_0x4f7f('0x33')]({'UserId':_0x2fec51[_0x4f7f('0x57')][_0x4f7f('0x5f')],'read1stAt':_['isNil'](_0x541227[_0x4f7f('0x65')])?moment()[_0x4f7f('0x5d')](_0x4f7f('0x5e')):undefined});}return null;})[_0x4f7f('0x1f')](function(_0x5121fa){if(_0x5121fa){_0x3b921d[_0x4f7f('0x66')]=_0x5121fa['get']({'plain':!![]});interaction_log[_0x4f7f('0x25')](_0x4f7f('0x67'),_0x2fec51[_0x4f7f('0x60')]['id'],_0x2fec51[_0x4f7f('0x60')][_0x4f7f('0x37')],_0x2fec51[_0x4f7f('0x60')][_0x4f7f('0x68')],_0x3b921d['interaction']['id'],_0x2fec51['body']?JSON[_0x4f7f('0x22')](_0x2fec51[_0x4f7f('0x57')]):'null');return respondWithRpcPromise(_0x4f7f('0x69'),_0x4f7f('0x6a'),_0x3b921d);}return null;})['then'](function(_0x3ebe70){var _0x2bb0de=_0x4f7f('0x6b')+_0x3ebe70[_0x4f7f('0x24')]['ContactId'];return db[_0x4f7f('0x6c')][_0x4f7f('0x41')](_0x2bb0de,{'type':db[_0x4f7f('0x6d')]['QueryTypes'][_0x4f7f('0x6e')],'raw':!![]})[_0x4f7f('0x1f')](function(_0x59e0fb){return _0x59e0fb;});})['then'](function(_0x2d620f){if(_0x2d620f){_0x3b921d[_0x4f7f('0x24')]['contact']=_0x2d620f[0x0];if(!_0x2fec51[_0x4f7f('0x57')][_0x4f7f('0x5f')])return;return db['User'][_0x4f7f('0x55')]({'where':{'id':_0x2fec51[_0x4f7f('0x57')][_0x4f7f('0x5f')],'role':'agent'},'attributes':['id',_0x4f7f('0x37'),'fullname',_0x4f7f('0x6f'),_0x4f7f('0x70')],'raw':!![]});}return null;})[_0x4f7f('0x1f')](function(_0x5049e3){if(!_0x5049e3)return null;_0x3b921d['message']['agent']=_0x5049e3;return _0x3b921d;})[_0x4f7f('0x1f')](function(_0x42910d){if(_0x42910d){if(_0x2fec51[_0x4f7f('0x57')]['manual']){_0x3b921d['message'][_0x4f7f('0x71')]=util[_0x4f7f('0x5d')](_0x4f7f('0x72'),_0x2fec51[_0x4f7f('0x60')][_0x4f7f('0x37')]);_0x3b921d[_0x4f7f('0x24')][_0x4f7f('0x73')]=_0x3b921d['channel'];_0x3b921d[_0x4f7f('0x24')]['event']=_0x4f7f('0x5a');return respondWithRpcPromise('EventManager',_0x4f7f('0x74'),{'event':'acceptmessage','message':_0x3b921d['message']},client9002)[_0x4f7f('0x1f')](function(){return _0x3b921d;});}return _0x3b921d;}return null;})[_0x4f7f('0x1f')](respondWithResult(_0x46c9a2,null))[_0x4f7f('0x56')](handleError(_0x46c9a2,null));};var interaction_log=require(_0x4f7f('0x14'))(_0x4f7f('0x59'));exports['reject']=function(_0x5603d5,_0xaefa9b,_0x399a86){var _0x137aab={'agent':{},'channel':_0x4f7f('0x5b')};if(_0x5603d5['body']['id']){delete _0x5603d5['body']['id'];}_0x5603d5[_0x4f7f('0x57')][_0x4f7f('0x5f')]=_0x5603d5['body'][_0x4f7f('0x5f')]||_0x5603d5[_0x4f7f('0x60')]['id'];_0x137aab[_0x4f7f('0x61')]['id']=_0x5603d5[_0x4f7f('0x57')][_0x4f7f('0x5f')];return db[_0x4f7f('0x3a')][_0x4f7f('0x55')]({'where':{'id':_0x5603d5[_0x4f7f('0x53')]['id'],'UserId':null}})[_0x4f7f('0x1f')](handleEntityNotFound(_0xaefa9b,null))['then'](function(_0x311323){if(_0x311323){_0x137aab[_0x4f7f('0x24')]=_0x311323['get']({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x311323[_0x4f7f('0x64')]}});}return null;})[_0x4f7f('0x1f')](handleEntityNotFound(_0xaefa9b,null))['then'](function(_0x5376b9){if(_0x5376b9){_0x137aab[_0x4f7f('0x66')]=_0x5376b9[_0x4f7f('0x62')]({'plain':!![]});interaction_log['info'](_0x4f7f('0x75'),_0x5603d5[_0x4f7f('0x60')]['id'],_0x5603d5[_0x4f7f('0x60')][_0x4f7f('0x37')],_0x5603d5[_0x4f7f('0x60')]['role'],_0x137aab['interaction']['id'],_0x5603d5[_0x4f7f('0x57')]?JSON['stringify'](_0x5603d5[_0x4f7f('0x57')]):_0x4f7f('0x76'));return respondWithRpcPromise(_0x4f7f('0x77'),_0x4f7f('0x78'),_0x137aab);}return null;})['then'](function(_0x451485){var _0x664780=_0x4f7f('0x6b')+_0x451485['message'][_0x4f7f('0x79')];return db['sequelize'][_0x4f7f('0x41')](_0x664780,{'type':db[_0x4f7f('0x6d')][_0x4f7f('0x7a')]['SELECT'],'raw':!![]})[_0x4f7f('0x1f')](function(_0x5c1856){return _0x5c1856;});})[_0x4f7f('0x1f')](function(_0x47f6cc){if(_0x47f6cc){_0x137aab[_0x4f7f('0x24')]['contact']=_0x47f6cc[0x0];if(!_0x5603d5['body'][_0x4f7f('0x5f')])return;return db[_0x4f7f('0x7b')][_0x4f7f('0x55')]({'where':{'id':_0x5603d5[_0x4f7f('0x57')][_0x4f7f('0x5f')],'role':_0x4f7f('0x61')},'attributes':['id','name','fullname','email',_0x4f7f('0x70')],'raw':!![]});}return null;})[_0x4f7f('0x1f')](function(_0x5baeb8){if(!_0x5baeb8)return null;_0x137aab[_0x4f7f('0x24')][_0x4f7f('0x61')]=_0x5baeb8;return _0x137aab;})[_0x4f7f('0x1f')](function(_0x528352){if(_0x528352){_0x528352[_0x4f7f('0x24')][_0x4f7f('0x71')]=util[_0x4f7f('0x5d')](_0x4f7f('0x72'),_0x5603d5[_0x4f7f('0x60')][_0x4f7f('0x37')]);_0x528352[_0x4f7f('0x24')][_0x4f7f('0x73')]=_0x137aab[_0x4f7f('0x73')];_0x528352[_0x4f7f('0x24')]['event']=_0x4f7f('0x31');respondWithRpcPromise(_0x4f7f('0x74'),_0x4f7f('0x74'),{'event':_0x4f7f('0x7c'),'message':_0x528352['message']},client9002);return _0x137aab;}return null;})[_0x4f7f('0x1f')](respondWithResult(_0xaefa9b,null))[_0x4f7f('0x56')](handleError(_0xaefa9b,null));};exports[_0x4f7f('0x7d')]=function(_0x3f299d,_0x3c9a3e){var _0x6045e2;return db[_0x4f7f('0x3a')]['create'](_0x3f299d[_0x4f7f('0x57')],{})[_0x4f7f('0x1f')](function(_0x59655a){_0x6045e2=_0x59655a;return db[_0x4f7f('0x7e')][_0x4f7f('0x7f')]({'where':{'id':_0x6045e2['ContactId']}});})['then'](function(_0x5cb9d0){if(_[_0x4f7f('0x80')](_0x5cb9d0)){return;}else{_0x6045e2['fax']=_0x5cb9d0['fax'];return db['Attachment'][_0x4f7f('0x7f')]({'where':{'id':_0x6045e2[_0x4f7f('0x81')]}});}})[_0x4f7f('0x1f')](function(_0x1b0713){return respondWithRpcPromise(_0x4f7f('0x82'),'SendFax',{'FaxAccountId':_['isNil'](_0x3f299d['body'])?undefined:_0x3f299d[_0x4f7f('0x57')][_0x4f7f('0x83')],'path':_[_0x4f7f('0x80')](_0x1b0713)?undefined:util[_0x4f7f('0x5d')](_0x4f7f('0x84'),_0x1b0713[_0x4f7f('0x85')]),'fax':_[_0x4f7f('0x80')](_0x6045e2[_0x4f7f('0x5b')])?undefined:_0x6045e2[_0x4f7f('0x5b')],'AttachmentId':_0x6045e2[_0x4f7f('0x81')]},client9002);})[_0x4f7f('0x1f')](respondWithResult(_0x3c9a3e,0xc9))[_0x4f7f('0x56')](handleError(_0x3c9a3e,null));};exports[_0x4f7f('0x86')]=function(_0x19450b,_0x3f5d29){var _0x17b818=path[_0x4f7f('0x87')](config[_0x4f7f('0x88')],'server','files','attachments');return db['FaxMessage'][_0x4f7f('0x55')]({'where':{'id':_0x19450b[_0x4f7f('0x53')]['id']},'include':[{'model':db[_0x4f7f('0x89')],'as':_0x4f7f('0x89')}]})[_0x4f7f('0x1f')](handleEntityNotFound(_0x3f5d29,null))['then'](function(_0x4b8da8){if(_0x4b8da8){return _0x3f5d29['download'](path['join'](_0x17b818,_0x4b8da8[_0x4f7f('0x89')][_0x4f7f('0x85')]));}})[_0x4f7f('0x56')](handleError(_0x3f5d29,null));};
\ No newline at end of file
+var _0xcebf=['stack','name','send','index','map','FaxMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','options','includeAll','include','findAll','show','params','find','body','describe','accept','fax','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','format','interaction','user','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','interface','motionChannel','channel','event','EventManager','acceptmessage','fax-interactions','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','SIP/%s','reject','rejectmessage','create','findOne','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','Attachment','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','redis','defaults','socket.io-emitter','./faxMessage.socket','register','client','http','request','request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','FaxMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy'];(function(_0x2dc6ab,_0x13d74d){var _0x1cbc42=function(_0x27f6dd){while(--_0x27f6dd){_0x2dc6ab['push'](_0x2dc6ab['shift']());}};_0x1cbc42(++_0x13d74d);}(_0xcebf,0x172));var _0xfceb=function(_0x52943e,_0x40a430){_0x52943e=_0x52943e-0x0;var _0x23e7ce=_0xcebf[_0x52943e];return _0x23e7ce;};'use strict';var emlformat=require(_0xfceb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfceb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfceb('0x2'));var moment=require('moment');var BPromise=require(_0xfceb('0x3'));var Mustache=require(_0xfceb('0x4'));var util=require(_0xfceb('0x5'));var path=require(_0xfceb('0x6'));var sox=require(_0xfceb('0x7'));var csv=require(_0xfceb('0x8'));var ejs=require(_0xfceb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfceb('0xa'));var squel=require('squel');var crypto=require(_0xfceb('0xb'));var jsforce=require(_0xfceb('0xc'));var deskjs=require(_0xfceb('0xd'));var toCsv=require(_0xfceb('0x8'));var querystring=require('querystring');var Papa=require(_0xfceb('0xe'));var Redis=require(_0xfceb('0xf'));var authService=require(_0xfceb('0x10'));var qs=require(_0xfceb('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfceb('0x12'));var logger=require(_0xfceb('0x13'))('api');var utils=require(_0xfceb('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xfceb('0x15'));var db=require('../../mysqldb')['db'];config[_0xfceb('0x16')]=_[_0xfceb('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfceb('0x18'))(new Redis(config[_0xfceb('0x16')]));require(_0xfceb('0x19'))[_0xfceb('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0xfceb('0x1b')][_0xfceb('0x1c')]({'port':0x232c});var client9002=jayson[_0xfceb('0x1b')][_0xfceb('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x35f8a4,_0x244de9,_0x43c519,_0x371a9b){return new BPromise(function(_0xbe2959,_0xd138af){var _0xf0db85=_0x371a9b||client;return _0xf0db85[_0xfceb('0x1d')](_0x35f8a4,_0x43c519)['then'](function(_0x575376){logger['info']('FaxMessage,\x20%s,\x20%s',_0x244de9,_0xfceb('0x1e'));logger['debug'](_0xfceb('0x1f'),_0x244de9,_0xfceb('0x1e'),JSON[_0xfceb('0x20')](_0x575376));if(_0x575376[_0xfceb('0x21')]){if(_0x575376[_0xfceb('0x21')]['code']===0x1f4){logger[_0xfceb('0x21')]('FaxMessage,\x20%s,\x20%s',_0x244de9,_0x575376[_0xfceb('0x21')]['message']);return _0xd138af(_0x575376[_0xfceb('0x21')][_0xfceb('0x22')]);}logger[_0xfceb('0x21')]('FaxMessage,\x20%s,\x20%s',_0x244de9,_0x575376[_0xfceb('0x21')][_0xfceb('0x22')]);return _0xbe2959(_0x575376[_0xfceb('0x21')][_0xfceb('0x22')]);}else{logger[_0xfceb('0x23')](_0xfceb('0x24'),_0x244de9,_0xfceb('0x1e'));_0xbe2959(_0x575376[_0xfceb('0x25')][_0xfceb('0x22')]);}})[_0xfceb('0x26')](function(_0x49dbbc){logger[_0xfceb('0x21')](_0xfceb('0x24'),_0x244de9,_0x49dbbc);_0xd138af(_0x49dbbc);});});}function respondWithStatusCode(_0x48a22e,_0x35ec74){_0x35ec74=_0x35ec74||0xcc;return function(_0x17be2f){if(_0x17be2f){return _0x48a22e[_0xfceb('0x27')](_0x35ec74);}return _0x48a22e[_0xfceb('0x28')](_0x35ec74)[_0xfceb('0x29')]();};}function respondWithResult(_0x2db75e,_0x13094){_0x13094=_0x13094||0xc8;return function(_0x26db6c){if(_0x26db6c){return _0x2db75e[_0xfceb('0x28')](_0x13094)[_0xfceb('0x2a')](_0x26db6c);}};}function respondWithFilteredResult(_0x2badc7,_0x356c0b){return function(_0x3c209c){if(_0x3c209c){var _0x206bde=typeof _0x356c0b[_0xfceb('0x2b')]===_0xfceb('0x2c')&&typeof _0x356c0b['limit']===_0xfceb('0x2c');var _0x110272=_0x3c209c['count'];var _0x4825c9=_0x206bde?0x0:_0x356c0b['offset'];var _0x148e08=_0x206bde?_0x3c209c[_0xfceb('0x2d')]:_0x356c0b['offset']+_0x356c0b['limit'];var _0xc588eb;if(_0x148e08>=_0x110272){_0x148e08=_0x110272;_0xc588eb=0xc8;}else{_0xc588eb=0xce;}_0x2badc7[_0xfceb('0x28')](_0xc588eb);return _0x2badc7[_0xfceb('0x2e')](_0xfceb('0x2f'),_0x4825c9+'-'+_0x148e08+'/'+_0x110272)[_0xfceb('0x2a')](_0x3c209c);}return null;};}function patchUpdates(_0x369796){return function(_0x21c7e4){try{jsonpatch[_0xfceb('0x30')](_0x21c7e4,_0x369796,!![]);}catch(_0x280d4f){return BPromise['reject'](_0x280d4f);}return _0x21c7e4[_0xfceb('0x31')]();};}function saveUpdates(_0xbc9f8c,_0x2aa3ea){return function(_0x87a407){if(_0x87a407){return _0x87a407[_0xfceb('0x32')](_0xbc9f8c)[_0xfceb('0x33')](function(_0x3d5a50){return _0x3d5a50;});}return null;};}function removeEntity(_0x1fe020,_0x23c815){return function(_0x2c51d6){if(_0x2c51d6){return _0x2c51d6[_0xfceb('0x34')]()[_0xfceb('0x33')](function(){_0x1fe020[_0xfceb('0x28')](0xcc)[_0xfceb('0x29')]();});}};}function handleEntityNotFound(_0x35a3dc,_0x433f09){return function(_0xcd1f9b){if(!_0xcd1f9b){_0x35a3dc[_0xfceb('0x27')](0x194);}return _0xcd1f9b;};}function handleError(_0x214c24,_0x247912){_0x247912=_0x247912||0x1f4;return function(_0x5894aa){logger[_0xfceb('0x21')](_0x5894aa[_0xfceb('0x35')]);if(_0x5894aa[_0xfceb('0x36')]){delete _0x5894aa[_0xfceb('0x36')];}_0x214c24[_0xfceb('0x28')](_0x247912)[_0xfceb('0x37')](_0x5894aa);};}exports[_0xfceb('0x38')]=function(_0xc9333d,_0x3be5cc){var _0x120617={},_0x2ef15b={},_0x1f9190={'count':0x0,'rows':[]};var _0x3ae019=_[_0xfceb('0x39')](db[_0xfceb('0x3a')][_0xfceb('0x3b')],function(_0x5ce0c3){return{'name':_0x5ce0c3[_0xfceb('0x3c')],'type':_0x5ce0c3[_0xfceb('0x3d')][_0xfceb('0x3e')]};});_0x2ef15b['model']=_[_0xfceb('0x39')](_0x3ae019,_0xfceb('0x36'));_0x2ef15b[_0xfceb('0x3f')]=_[_0xfceb('0x40')](_0xc9333d[_0xfceb('0x3f')]);_0x2ef15b[_0xfceb('0x41')]=_[_0xfceb('0x42')](_0x2ef15b[_0xfceb('0x43')],_0x2ef15b[_0xfceb('0x3f')]);_0x120617['attributes']=_[_0xfceb('0x42')](_0x2ef15b[_0xfceb('0x43')],qs[_0xfceb('0x44')](_0xc9333d[_0xfceb('0x3f')]['fields']));_0x120617[_0xfceb('0x45')]=_0x120617[_0xfceb('0x45')][_0xfceb('0x46')]?_0x120617[_0xfceb('0x45')]:_0x2ef15b[_0xfceb('0x43')];if(!_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x47')](_0xfceb('0x48'))){_0x120617['limit']=qs[_0xfceb('0x49')](_0xc9333d[_0xfceb('0x3f')]['limit']);_0x120617[_0xfceb('0x2b')]=qs[_0xfceb('0x2b')](_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x2b')]);}_0x120617[_0xfceb('0x4a')]=qs[_0xfceb('0x4b')](_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x4b')]);_0x120617[_0xfceb('0x4c')]=qs[_0xfceb('0x41')](_['pick'](_0xc9333d[_0xfceb('0x3f')],_0x2ef15b[_0xfceb('0x41')]),_0x3ae019);if(_0xc9333d['query'][_0xfceb('0x4d')]){_0x120617[_0xfceb('0x4c')]=_[_0xfceb('0x4e')](_0x120617['where'],{'$or':_[_0xfceb('0x39')](_0x3ae019,function(_0x1fdbf3){if(_0x1fdbf3[_0xfceb('0x3d')]!=='VIRTUAL'){var _0x5985c4={};_0x5985c4[_0x1fdbf3[_0xfceb('0x36')]]={'$like':'%'+_0xc9333d[_0xfceb('0x3f')][_0xfceb('0x4d')]+'%'};return _0x5985c4;}})});}_0x120617=_['merge']({},_0x120617,_0xc9333d[_0xfceb('0x4f')]);var _0x3f9caa={'where':_0x120617['where']};return db[_0xfceb('0x3a')]['count'](_0x3f9caa)['then'](function(_0x48a3f7){_0x1f9190[_0xfceb('0x2d')]=_0x48a3f7;if(_0xc9333d['query'][_0xfceb('0x50')]){_0x120617[_0xfceb('0x51')]=[{'all':!![]}];}return db[_0xfceb('0x3a')][_0xfceb('0x52')](_0x120617);})[_0xfceb('0x33')](function(_0x574d4e){_0x1f9190['rows']=_0x574d4e;return _0x1f9190;})[_0xfceb('0x33')](respondWithFilteredResult(_0x3be5cc,_0x120617))['catch'](handleError(_0x3be5cc,null));};exports[_0xfceb('0x53')]=function(_0x39b74a,_0x2bb05a){var _0x296451={'raw':!![],'where':{'id':_0x39b74a[_0xfceb('0x54')]['id']}},_0x52bb31={};_0x52bb31[_0xfceb('0x43')]=_[_0xfceb('0x40')](db[_0xfceb('0x3a')][_0xfceb('0x3b')]);_0x52bb31[_0xfceb('0x3f')]=_[_0xfceb('0x40')](_0x39b74a[_0xfceb('0x3f')]);_0x52bb31[_0xfceb('0x41')]=_[_0xfceb('0x42')](_0x52bb31[_0xfceb('0x43')],_0x52bb31[_0xfceb('0x3f')]);_0x296451[_0xfceb('0x45')]=_['intersection'](_0x52bb31['model'],qs['fields'](_0x39b74a[_0xfceb('0x3f')]['fields']));_0x296451[_0xfceb('0x45')]=_0x296451[_0xfceb('0x45')][_0xfceb('0x46')]?_0x296451[_0xfceb('0x45')]:_0x52bb31[_0xfceb('0x43')];if(_0x39b74a['query'][_0xfceb('0x50')]){_0x296451[_0xfceb('0x51')]=[{'all':!![]}];}_0x296451=_['merge']({},_0x296451,_0x39b74a[_0xfceb('0x4f')]);return db[_0xfceb('0x3a')][_0xfceb('0x55')](_0x296451)[_0xfceb('0x33')](handleEntityNotFound(_0x2bb05a,null))[_0xfceb('0x33')](respondWithResult(_0x2bb05a,null))['catch'](handleError(_0x2bb05a,null));};exports[_0xfceb('0x32')]=function(_0x50fa9c,_0x5393c2){if(_0x50fa9c[_0xfceb('0x56')]['id']){delete _0x50fa9c['body']['id'];}return db[_0xfceb('0x3a')]['find']({'where':{'id':_0x50fa9c[_0xfceb('0x54')]['id']}})[_0xfceb('0x33')](handleEntityNotFound(_0x5393c2,null))['then'](saveUpdates(_0x50fa9c['body'],null))[_0xfceb('0x33')](respondWithResult(_0x5393c2,null))[_0xfceb('0x26')](handleError(_0x5393c2,null));};exports['destroy']=function(_0x41523b,_0x194bfb){return db[_0xfceb('0x3a')][_0xfceb('0x55')]({'where':{'id':_0x41523b['params']['id']}})[_0xfceb('0x33')](handleEntityNotFound(_0x194bfb,null))[_0xfceb('0x33')](removeEntity(_0x194bfb,null))['catch'](handleError(_0x194bfb,null));};exports[_0xfceb('0x57')]=function(_0x5ee49a,_0x3227be){return db[_0xfceb('0x3a')]['describe']()[_0xfceb('0x33')](respondWithResult(_0x3227be,null))[_0xfceb('0x26')](handleError(_0x3227be,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0xfceb('0x58')]=function(_0x434860,_0x49bf21,_0x2abc24){var _0x261013={'agent':{},'channel':_0xfceb('0x59')};if(_0x434860[_0xfceb('0x56')]['id']){delete _0x434860[_0xfceb('0x56')]['id'];}_0x434860[_0xfceb('0x56')]['read']=!![];_0x434860[_0xfceb('0x56')]['readAt']=moment()['format'](_0xfceb('0x5a'));_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')]=_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')]||_0x434860['user']['id'];_0x261013[_0xfceb('0x5c')]['id']=_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')];return db['FaxMessage'][_0xfceb('0x55')]({'where':{'id':_0x434860[_0xfceb('0x54')]['id'],'UserId':null}})[_0xfceb('0x33')](handleEntityNotFound(_0x49bf21,null))['then'](saveUpdates(_0x434860[_0xfceb('0x56')],null))[_0xfceb('0x33')](function(_0x1b32f4){if(_0x1b32f4){_0x261013[_0xfceb('0x22')]=_0x1b32f4[_0xfceb('0x5d')]({'plain':!![]});return db[_0xfceb('0x5e')][_0xfceb('0x55')]({'where':{'id':_0x1b32f4[_0xfceb('0x5f')]}});}return null;})[_0xfceb('0x33')](handleEntityNotFound(_0x49bf21,null))[_0xfceb('0x33')](function(_0x543651){if(_0x543651){return _0x543651[_0xfceb('0x32')]({'UserId':_0x434860[_0xfceb('0x56')][_0xfceb('0x5b')],'read1stAt':_[_0xfceb('0x60')](_0x543651[_0xfceb('0x61')])?moment()[_0xfceb('0x62')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xfceb('0x33')](function(_0x4e4c2c){if(_0x4e4c2c){_0x261013[_0xfceb('0x63')]=_0x4e4c2c[_0xfceb('0x5d')]({'plain':!![]});interaction_log[_0xfceb('0x23')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x434860[_0xfceb('0x64')]['id'],_0x434860[_0xfceb('0x64')][_0xfceb('0x36')],_0x434860[_0xfceb('0x64')]['role'],_0x261013[_0xfceb('0x63')]['id'],_0x434860[_0xfceb('0x56')]?JSON[_0xfceb('0x20')](_0x434860[_0xfceb('0x56')]):_0xfceb('0x65'));return respondWithRpcPromise(_0xfceb('0x66'),_0xfceb('0x67'),_0x261013);}return null;})[_0xfceb('0x33')](function(_0x1276a0){var _0x254dab=_0xfceb('0x68')+_0x1276a0[_0xfceb('0x22')]['ContactId'];return db[_0xfceb('0x69')][_0xfceb('0x3f')](_0x254dab,{'type':db[_0xfceb('0x6a')][_0xfceb('0x6b')][_0xfceb('0x6c')],'raw':!![]})[_0xfceb('0x33')](function(_0x163805){return _0x163805;});})[_0xfceb('0x33')](function(_0x1a446a){if(_0x1a446a){_0x261013['message'][_0xfceb('0x6d')]=_0x1a446a[0x0];if(!_0x434860['body']['UserId'])return;return db[_0xfceb('0x6e')]['find']({'where':{'id':_0x434860['body'][_0xfceb('0x5b')],'role':_0xfceb('0x5c')},'attributes':['id',_0xfceb('0x36'),_0xfceb('0x6f'),'email',_0xfceb('0x70')],'raw':!![]});}return null;})['then'](function(_0x35d7a8){if(!_0x35d7a8)return null;_0x261013[_0xfceb('0x22')][_0xfceb('0x5c')]=_0x35d7a8;return _0x261013;})[_0xfceb('0x33')](function(_0x1cd444){if(_0x1cd444){if(_0x434860[_0xfceb('0x56')]['manual']){_0x261013['message'][_0xfceb('0x71')]=util['format']('SIP/%s',_0x434860[_0xfceb('0x64')][_0xfceb('0x36')]);_0x261013[_0xfceb('0x22')]['channel']=_0x261013['channel'];_0x261013[_0xfceb('0x22')][_0xfceb('0x72')]=_0x261013[_0xfceb('0x73')];_0x261013[_0xfceb('0x22')][_0xfceb('0x74')]=_0xfceb('0x58');return respondWithRpcPromise(_0xfceb('0x75'),'EventManager',{'event':_0xfceb('0x76'),'message':_0x261013[_0xfceb('0x22')]},client9002)[_0xfceb('0x33')](function(){return _0x261013;});}return _0x261013;}return null;})[_0xfceb('0x33')](respondWithResult(_0x49bf21,null))[_0xfceb('0x26')](handleError(_0x49bf21,null));};var interaction_log=require(_0xfceb('0x13'))(_0xfceb('0x77'));exports['reject']=function(_0x2efd4c,_0x4a4683,_0x33c302){var _0x2ee082={'agent':{},'channel':'fax'};if(_0x2efd4c[_0xfceb('0x56')]['id']){delete _0x2efd4c[_0xfceb('0x56')]['id'];}_0x2efd4c[_0xfceb('0x56')]['UserId']=_0x2efd4c[_0xfceb('0x56')][_0xfceb('0x5b')]||_0x2efd4c[_0xfceb('0x64')]['id'];_0x2ee082[_0xfceb('0x5c')]['id']=_0x2efd4c[_0xfceb('0x56')]['UserId'];return db[_0xfceb('0x3a')]['find']({'where':{'id':_0x2efd4c[_0xfceb('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4a4683,null))[_0xfceb('0x33')](function(_0xc08cf4){if(_0xc08cf4){_0x2ee082[_0xfceb('0x22')]=_0xc08cf4['get']({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0xc08cf4['FaxInteractionId']}});}return null;})[_0xfceb('0x33')](handleEntityNotFound(_0x4a4683,null))['then'](function(_0xa76168){if(_0xa76168){_0x2ee082[_0xfceb('0x63')]=_0xa76168[_0xfceb('0x5d')]({'plain':!![]});interaction_log[_0xfceb('0x23')](_0xfceb('0x78'),_0x2efd4c['user']['id'],_0x2efd4c['user'][_0xfceb('0x36')],_0x2efd4c[_0xfceb('0x64')][_0xfceb('0x79')],_0x2ee082[_0xfceb('0x63')]['id'],_0x2efd4c[_0xfceb('0x56')]?JSON[_0xfceb('0x20')](_0x2efd4c[_0xfceb('0x56')]):'null');return respondWithRpcPromise(_0xfceb('0x7a'),_0xfceb('0x7b'),_0x2ee082);}return null;})[_0xfceb('0x33')](function(_0x33a4a1){var _0x292833=_0xfceb('0x68')+_0x33a4a1['message']['ContactId'];return db[_0xfceb('0x69')][_0xfceb('0x3f')](_0x292833,{'type':db[_0xfceb('0x6a')]['QueryTypes'][_0xfceb('0x6c')],'raw':!![]})['then'](function(_0x404b41){return _0x404b41;});})[_0xfceb('0x33')](function(_0x2a6e0f){if(_0x2a6e0f){_0x2ee082[_0xfceb('0x22')]['contact']=_0x2a6e0f[0x0];if(!_0x2efd4c[_0xfceb('0x56')]['UserId'])return;return db[_0xfceb('0x6e')][_0xfceb('0x55')]({'where':{'id':_0x2efd4c[_0xfceb('0x56')]['UserId'],'role':_0xfceb('0x5c')},'attributes':['id',_0xfceb('0x36'),'fullname','email','internal'],'raw':!![]});}return null;})[_0xfceb('0x33')](function(_0x53bdb7){if(!_0x53bdb7)return null;_0x2ee082[_0xfceb('0x22')]['agent']=_0x53bdb7;return _0x2ee082;})[_0xfceb('0x33')](function(_0x4cfbdd){if(_0x4cfbdd){_0x4cfbdd[_0xfceb('0x22')][_0xfceb('0x71')]=util['format'](_0xfceb('0x7c'),_0x2efd4c[_0xfceb('0x64')][_0xfceb('0x36')]);_0x4cfbdd[_0xfceb('0x22')][_0xfceb('0x73')]=_0x2ee082[_0xfceb('0x73')];_0x4cfbdd['message'][_0xfceb('0x72')]=_0x2ee082['channel'];_0x4cfbdd[_0xfceb('0x22')][_0xfceb('0x74')]=_0xfceb('0x7d');respondWithRpcPromise('EventManager',_0xfceb('0x75'),{'event':_0xfceb('0x7e'),'message':_0x4cfbdd[_0xfceb('0x22')]},client9002);return _0x2ee082;}return null;})[_0xfceb('0x33')](respondWithResult(_0x4a4683,null))[_0xfceb('0x26')](handleError(_0x4a4683,null));};exports[_0xfceb('0x7f')]=function(_0x392cdf,_0x452996){var _0x3011a3;return db['FaxMessage'][_0xfceb('0x7f')](_0x392cdf[_0xfceb('0x56')],{})['then'](function(_0x95d704){_0x3011a3=_0x95d704;return db['CmContact'][_0xfceb('0x80')]({'where':{'id':_0x3011a3['ContactId']}});})['then'](function(_0x3cbac2){if(_['isNil'](_0x3cbac2)){return;}else{_0x3011a3[_0xfceb('0x59')]=_0x3cbac2[_0xfceb('0x59')];return db['Attachment'][_0xfceb('0x80')]({'where':{'id':_0x3011a3[_0xfceb('0x81')]}});}})[_0xfceb('0x33')](function(_0x53db2c){return respondWithRpcPromise('SendFax',_0xfceb('0x82'),{'FaxAccountId':_[_0xfceb('0x60')](_0x392cdf[_0xfceb('0x56')])?undefined:_0x392cdf['body'][_0xfceb('0x83')],'path':_[_0xfceb('0x60')](_0x53db2c)?undefined:util[_0xfceb('0x62')](_0xfceb('0x84'),_0x53db2c[_0xfceb('0x85')]),'fax':_[_0xfceb('0x60')](_0x3011a3[_0xfceb('0x59')])?undefined:_0x3011a3[_0xfceb('0x59')],'AttachmentId':_0x3011a3[_0xfceb('0x81')]},client9002);})[_0xfceb('0x33')](respondWithResult(_0x452996,0xc9))[_0xfceb('0x26')](handleError(_0x452996,null));};exports[_0xfceb('0x86')]=function(_0x33dfc9,_0x3386f2){var _0x53e198=path[_0xfceb('0x87')](config[_0xfceb('0x88')],_0xfceb('0x89'),_0xfceb('0x8a'),_0xfceb('0x8b'));return db[_0xfceb('0x3a')][_0xfceb('0x55')]({'where':{'id':_0x33dfc9[_0xfceb('0x54')]['id']},'include':[{'model':db[_0xfceb('0x8c')],'as':'Attachment'}]})[_0xfceb('0x33')](handleEntityNotFound(_0x3386f2,null))[_0xfceb('0x33')](function(_0x5884ab){if(_0x5884ab){return _0x3386f2[_0xfceb('0x86')](path[_0xfceb('0x87')](_0x53e198,_0x5884ab[_0xfceb('0x8c')][_0xfceb('0x85')]));}})[_0xfceb('0x26')](handleError(_0x3386f2,null));};
\ No newline at end of file
index e88340e..3192f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41ec=['hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x3daeba,_0x130354){var _0x34500d=function(_0x449f53){while(--_0x449f53){_0x3daeba['push'](_0x3daeba['shift']());}};_0x34500d(++_0x130354);}(_0x41ec,0x143));var _0xc41e=function(_0x12cd9c,_0xef062d){_0x12cd9c=_0x12cd9c-0x0;var _0x942ee=_0x41ec[_0x12cd9c];return _0x942ee;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0xc41e('0x0'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xc41e('0x1')](0x0);var events={'afterCreate':_0xc41e('0x2'),'afterUpdate':'update','afterDestroy':_0xc41e('0x3')};function emitEvent(_0x19ed31){return function(_0xd3f764,_0xf79325,_0xaa14e8){FaxMessageEvents[_0xc41e('0x4')](_0x19ed31+':'+_0xd3f764['id'],_0xd3f764);FaxMessageEvents[_0xc41e('0x4')](_0x19ed31,_0xd3f764);_0xaa14e8(null);};}for(var e in events){if(events[_0xc41e('0x5')](e)){var event=events[e];FaxMessage[_0xc41e('0x6')](e,emitEvent(event));}}module[_0xc41e('0x7')]=FaxMessageEvents;
\ No newline at end of file
+var _0x6363=['emit','hasOwnProperty','hook','exports','events','FaxMessage','setMaxListeners','save','update','remove'];(function(_0x9d9343,_0x494c83){var _0x2abcd2=function(_0x101a63){while(--_0x101a63){_0x9d9343['push'](_0x9d9343['shift']());}};_0x2abcd2(++_0x494c83);}(_0x6363,0x13a));var _0x3636=function(_0x24ef73,_0x3302ba){_0x24ef73=_0x24ef73-0x0;var _0x5137f7=_0x6363[_0x24ef73];return _0x5137f7;};'use strict';var EventEmitter=require(_0x3636('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x3636('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x3636('0x2')](0x0);var events={'afterCreate':_0x3636('0x3'),'afterUpdate':_0x3636('0x4'),'afterDestroy':_0x3636('0x5')};function emitEvent(_0x684396){return function(_0x1335a2,_0xdf836f,_0x1e62e9){FaxMessageEvents[_0x3636('0x6')](_0x684396+':'+_0x1335a2['id'],_0x1335a2);FaxMessageEvents[_0x3636('0x6')](_0x684396,_0x1335a2);_0x1e62e9(null);};}for(var e in events){if(events[_0x3636('0x7')](e)){var event=events[e];FaxMessage[_0x3636('0x8')](e,emitEvent(event));}}module[_0x3636('0x9')]=FaxMessageEvents;
\ No newline at end of file
index a7ef4f9..32ca070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56ba=['models','get','direction','toLowerCase','secret','isNil','UserId','FaxInteraction','findOne','FaxInteractionId','update','createdAt','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports','define','fax_messages','body','FULLTEXT'];(function(_0x332192,_0x4139b5){var _0x7766e0=function(_0x1d0f32){while(--_0x1d0f32){_0x332192['push'](_0x332192['shift']());}};_0x7766e0(++_0x4139b5);}(_0x56ba,0x136));var _0xa56b=function(_0x4fbee2,_0x47d02a){_0x4fbee2=_0x4fbee2-0x0;var _0x5e6132=_0x56ba[_0x4fbee2];return _0x5e6132;};'use strict';var _=require(_0xa56b('0x0'));var util=require(_0xa56b('0x1'));var logger=require(_0xa56b('0x2'))(_0xa56b('0x3'));var moment=require(_0xa56b('0x4'));var BPromise=require('bluebird');var rp=require(_0xa56b('0x5'));var fs=require('fs');var path=require(_0xa56b('0x6'));var rimraf=require(_0xa56b('0x7'));var config=require(_0xa56b('0x8'));var attributes=require('./faxMessage.attributes');module[_0xa56b('0x9')]=function(_0x3df82c,_0x5e0817){return _0x3df82c[_0xa56b('0xa')]('FaxMessage',attributes,{'tableName':_0xa56b('0xb'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0xa56b('0xc')],'type':_0xa56b('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3360a2,_0xab44ca,_0x3ed73a){var _0x5ead8a=_0x3df82c[_0xa56b('0xe')];var _0x232b81=_0x3360a2[_0xa56b('0xf')]({'plain':!![]});if(_0x232b81[_0xa56b('0x10')][_0xa56b('0x11')]()==='in'||_0x232b81[_0xa56b('0x10')]['toLowerCase']()==='out'&&!_0x232b81[_0xa56b('0x12')]&&!_[_0xa56b('0x13')](_0x232b81[_0xa56b('0x14')])){_0x5ead8a[_0xa56b('0x15')][_0xa56b('0x16')]({'where':{'id':_0x232b81[_0xa56b('0x17')]}})['then'](function(_0x30375c){if(_0x30375c){_0x30375c[_0xa56b('0x18')]({'lastMsgAt':_0x232b81[_0xa56b('0x19')],'lastMsgDirection':_0x232b81['direction'][_0xa56b('0x11')]()});}})['catch'](function(_0x48911d){console['error'](_0x48911d);});}_0x3ed73a();}},'charset':'utf8mb4','collate':_0xa56b('0x1a')});};
\ No newline at end of file
+var _0xffe2=['lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./faxMessage.attributes','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','isNil','UserId','FaxInteraction','findOne','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xffe2,0x1d0));var _0x2ffe=function(_0xbd15e3,_0x31dd1b){_0xbd15e3=_0xbd15e3-0x0;var _0x309e04=_0xffe2[_0xbd15e3];return _0x309e04;};'use strict';var _=require(_0x2ffe('0x0'));var util=require(_0x2ffe('0x1'));var logger=require(_0x2ffe('0x2'))(_0x2ffe('0x3'));var moment=require('moment');var BPromise=require(_0x2ffe('0x4'));var rp=require(_0x2ffe('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ffe('0x6'));var config=require(_0x2ffe('0x7'));var attributes=require(_0x2ffe('0x8'));module['exports']=function(_0x27dcc2,_0x928695){return _0x27dcc2[_0x2ffe('0x9')](_0x2ffe('0xa'),attributes,{'tableName':_0x2ffe('0xb'),'paranoid':![],'indexes':[{'name':_0x2ffe('0xc'),'fields':[_0x2ffe('0xd')],'type':_0x2ffe('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5358c9,_0x1a6eac,_0x5dad83){var _0x501721=_0x27dcc2[_0x2ffe('0xf')];var _0x52f960=_0x5358c9[_0x2ffe('0x10')]({'plain':!![]});if(_0x52f960[_0x2ffe('0x11')][_0x2ffe('0x12')]()==='in'||_0x52f960[_0x2ffe('0x11')][_0x2ffe('0x12')]()==='out'&&!_0x52f960['secret']&&!_[_0x2ffe('0x13')](_0x52f960[_0x2ffe('0x14')])){_0x501721[_0x2ffe('0x15')][_0x2ffe('0x16')]({'where':{'id':_0x52f960['FaxInteractionId']}})[_0x2ffe('0x17')](function(_0x59e6e6){if(_0x59e6e6){_0x59e6e6[_0x2ffe('0x18')]({'lastMsgAt':_0x52f960[_0x2ffe('0x19')],'lastMsgDirection':_0x52f960[_0x2ffe('0x11')][_0x2ffe('0x12')]()});}})[_0x2ffe('0x1a')](function(_0x228e4e){console['error'](_0x228e4e);});}_0x5dad83();}},'charset':_0x2ffe('0x1b'),'collate':_0x2ffe('0x1c')});};
\ No newline at end of file
index 419d67b..6133155 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','message','result','CreateFaxMessage','FaxMessage','create','body','options','stringify','catch','update','raw','where','limit','UpdateFaxMessage','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','redis','localhost','socket.io-emitter','./faxMessage.socket','register','request','then','info'];(function(_0x17dcd1,_0x3b7ccb){var _0x12af77=function(_0x5c3bac){while(--_0x5c3bac){_0x17dcd1['push'](_0x17dcd1['shift']());}};_0x12af77(++_0x3b7ccb);}(_0x70e0,0x17b));var _0x070e=function(_0x5dc19a,_0x30ed15){_0x5dc19a=_0x5dc19a-0x0;var _0x43722d=_0x70e0[_0x5dc19a];return _0x43722d;};'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});config['redis']=_['defaults'](config[_0x070e('0x9')],{'host':_0x070e('0xa'),'port':0x18eb});var socket=require(_0x070e('0xb'))(new Redis(config[_0x070e('0x9')]));require(_0x070e('0xc'))[_0x070e('0xd')](socket);function respondWithRpcPromise(_0x11ffa8,_0x4e99e6,_0x49b2fb){return new BPromise(function(_0x50f4eb,_0x2e3e5e){return client[_0x070e('0xe')](_0x11ffa8,_0x49b2fb)[_0x070e('0xf')](function(_0xa927a2){logger[_0x070e('0x10')](_0x070e('0x11'),_0x4e99e6,_0x070e('0x12'));logger[_0x070e('0x13')](_0x070e('0x14'),_0x4e99e6,_0x070e('0x12'),JSON['stringify'](_0xa927a2));if(_0xa927a2['error']){if(_0xa927a2[_0x070e('0x15')]['code']===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0x4e99e6,_0xa927a2[_0x070e('0x15')][_0x070e('0x16')]);return _0x2e3e5e(_0xa927a2['error']['message']);}logger[_0x070e('0x15')](_0x070e('0x11'),_0x4e99e6,_0xa927a2[_0x070e('0x15')][_0x070e('0x16')]);return _0x50f4eb(_0xa927a2['error']['message']);}else{logger[_0x070e('0x10')](_0x070e('0x11'),_0x4e99e6,_0x070e('0x12'));_0x50f4eb(_0xa927a2[_0x070e('0x17')][_0x070e('0x16')]);}})['catch'](function(_0x3938b5){logger[_0x070e('0x15')](_0x070e('0x11'),_0x4e99e6,_0x3938b5);_0x2e3e5e(_0x3938b5);});});}exports[_0x070e('0x18')]=function(_0x259893){var _0x5c16fd=this;return new Promise(function(_0x5b2f48,_0x4e958f){return db[_0x070e('0x19')][_0x070e('0x1a')](_0x259893[_0x070e('0x1b')],{'raw':_0x259893['options']?_0x259893[_0x070e('0x1c')]['raw']===undefined?!![]:![]:!![]})[_0x070e('0xf')](function(_0x3f6985){logger[_0x070e('0x10')](_0x070e('0x18'),_0x259893);logger[_0x070e('0x13')](_0x070e('0x18'),_0x259893,JSON[_0x070e('0x1d')](_0x3f6985));_0x5b2f48(_0x3f6985);})[_0x070e('0x1e')](function(_0x595c7e){logger[_0x070e('0x15')](_0x070e('0x18'),_0x595c7e[_0x070e('0x16')],_0x259893);_0x4e958f(_0x5c16fd['error'](0x1f4,_0x595c7e[_0x070e('0x16')]));});});};exports['UpdateFaxMessage']=function(_0x4a2dbd){var _0x2ccbd7=this;return new Promise(function(_0x25f6e,_0x41deb1){return db[_0x070e('0x19')][_0x070e('0x1f')](_0x4a2dbd['body'],{'raw':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x21')]||null:null,'attributes':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')]['attributes']||null:null,'limit':_0x4a2dbd[_0x070e('0x1c')]?_0x4a2dbd[_0x070e('0x1c')][_0x070e('0x22')]||null:null})['then'](function(_0x5c5f0d){logger[_0x070e('0x10')](_0x070e('0x23'),_0x4a2dbd);logger[_0x070e('0x13')]('UpdateFaxMessage',_0x4a2dbd,JSON[_0x070e('0x1d')](_0x5c5f0d));_0x25f6e(_0x5c5f0d);})[_0x070e('0x1e')](function(_0x3a9425){logger[_0x070e('0x15')]('UpdateFaxMessage',_0x3a9425['message'],_0x4a2dbd);_0x41deb1(_0x2ccbd7['error'](0x1f4,_0x3a9425['message']));});});};
\ No newline at end of file
+var _0x55ca=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','code','error','message','catch','CreateFaxMessage','FaxMessage','body','options','raw','UpdateFaxMessage','update','attributes','limit','debug','stringify','lodash','util','ioredis'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x55ca,0x126));var _0xa55c=function(_0x52a7e1,_0x189bf3){_0x52a7e1=_0x52a7e1-0x0;var _0x4f4495=_0x55ca[_0x52a7e1];return _0x4f4495;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});config[_0xa55c('0xa')]=_['defaults'](config[_0xa55c('0xa')],{'host':_0xa55c('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa55c('0xa')]));require(_0xa55c('0xc'))['register'](socket);function respondWithRpcPromise(_0x5849ad,_0x473d0e,_0x20c76a){return new BPromise(function(_0x381d07,_0x5d8e5a){return client[_0xa55c('0xd')](_0x5849ad,_0x20c76a)[_0xa55c('0xe')](function(_0x508342){logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x473d0e,_0xa55c('0x11'),JSON['stringify'](_0x508342));if(_0x508342['error']){if(_0x508342['error'][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x5d8e5a(_0x508342[_0xa55c('0x13')]['message']);}logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);return _0x381d07(_0x508342[_0xa55c('0x13')][_0xa55c('0x14')]);}else{logger[_0xa55c('0xf')](_0xa55c('0x10'),_0x473d0e,_0xa55c('0x11'));_0x381d07(_0x508342['result'][_0xa55c('0x14')]);}})[_0xa55c('0x15')](function(_0x461284){logger[_0xa55c('0x13')](_0xa55c('0x10'),_0x473d0e,_0x461284);_0x5d8e5a(_0x461284);});});}exports[_0xa55c('0x16')]=function(_0x4c0daf){var _0x5f5158=this;return new Promise(function(_0xd643cc,_0x3776ac){return db[_0xa55c('0x17')]['create'](_0x4c0daf[_0xa55c('0x18')],{'raw':_0x4c0daf[_0xa55c('0x19')]?_0x4c0daf['options'][_0xa55c('0x1a')]===undefined?!![]:![]:!![]})[_0xa55c('0xe')](function(_0x940f28){logger[_0xa55c('0xf')](_0xa55c('0x16'),_0x4c0daf);logger['debug'](_0xa55c('0x16'),_0x4c0daf,JSON['stringify'](_0x940f28));_0xd643cc(_0x940f28);})['catch'](function(_0x59d89a){logger[_0xa55c('0x13')]('CreateFaxMessage',_0x59d89a[_0xa55c('0x14')],_0x4c0daf);_0x3776ac(_0x5f5158[_0xa55c('0x13')](0x1f4,_0x59d89a[_0xa55c('0x14')]));});});};exports[_0xa55c('0x1b')]=function(_0x2313a9){var _0x170ba4=this;return new Promise(function(_0x1da633,_0x11e7f7){return db[_0xa55c('0x17')][_0xa55c('0x1c')](_0x2313a9[_0xa55c('0x18')],{'raw':_0x2313a9['options']?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')]['where']||null:null,'attributes':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1d')]||null:null,'limit':_0x2313a9[_0xa55c('0x19')]?_0x2313a9[_0xa55c('0x19')][_0xa55c('0x1e')]||null:null})['then'](function(_0x23e698){logger['info'](_0xa55c('0x1b'),_0x2313a9);logger[_0xa55c('0x1f')](_0xa55c('0x1b'),_0x2313a9,JSON[_0xa55c('0x20')](_0x23e698));_0x1da633(_0x23e698);})['catch'](function(_0x3d28fb){logger[_0xa55c('0x13')](_0xa55c('0x1b'),_0x3d28fb[_0xa55c('0x14')],_0x2313a9);_0x11e7f7(_0x170ba4[_0xa55c('0x13')](0x1f4,_0x3d28fb[_0xa55c('0x14')]));});});};
\ No newline at end of file
index d30e1fe..925caf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72e7=['removeListener','register','length','./faxMessage.events','save','remove','update','emit'];(function(_0x49f1ee,_0x5c5319){var _0x405342=function(_0xd5f33e){while(--_0xd5f33e){_0x49f1ee['push'](_0x49f1ee['shift']());}};_0x405342(++_0x5c5319);}(_0x72e7,0x12b));var _0x772e=function(_0x41ccfd,_0x211b71){_0x41ccfd=_0x41ccfd-0x0;var _0x18cb49=_0x72e7[_0x41ccfd];return _0x18cb49;};'use strict';var FaxMessageEvents=require(_0x772e('0x0'));var events=[_0x772e('0x1'),_0x772e('0x2'),_0x772e('0x3')];function createListener(_0x51e8c9,_0x450849){return function(_0x197c97){_0x450849[_0x772e('0x4')](_0x51e8c9,_0x197c97);};}function removeListener(_0x277689,_0x1d8e4d){return function(){FaxMessageEvents[_0x772e('0x5')](_0x277689,_0x1d8e4d);};}exports[_0x772e('0x6')]=function(_0x57f076){for(var _0x5d83a8=0x0,_0x4639a1=events[_0x772e('0x7')];_0x5d83a8<_0x4639a1;_0x5d83a8++){var _0x3aa147=events[_0x5d83a8];var _0x1943bb=createListener('faxMessage:'+_0x3aa147,_0x57f076);FaxMessageEvents['on'](_0x3aa147,_0x1943bb);}};
\ No newline at end of file
+var _0xeaaf=['remove','update','emit','removeListener','register','length','save'];(function(_0x2f62aa,_0x108e95){var _0x1a341f=function(_0x3aedcf){while(--_0x3aedcf){_0x2f62aa['push'](_0x2f62aa['shift']());}};_0x1a341f(++_0x108e95);}(_0xeaaf,0x13a));var _0xfeaa=function(_0x6ed8bc,_0x35d1fa){_0x6ed8bc=_0x6ed8bc-0x0;var _0x5a0974=_0xeaaf[_0x6ed8bc];return _0x5a0974;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0xfeaa('0x0'),_0xfeaa('0x1'),_0xfeaa('0x2')];function createListener(_0x373e46,_0x3f370a){return function(_0x1cbc62){_0x3f370a[_0xfeaa('0x3')](_0x373e46,_0x1cbc62);};}function removeListener(_0x1b2fb4,_0xe14170){return function(){FaxMessageEvents[_0xfeaa('0x4')](_0x1b2fb4,_0xe14170);};}exports[_0xfeaa('0x5')]=function(_0x16382f){for(var _0x579cfc=0x0,_0x168923=events[_0xfeaa('0x6')];_0x579cfc<_0x168923;_0x579cfc++){var _0x3f000d=events[_0x579cfc];var _0x23b61f=createListener('faxMessage:'+_0x3f000d,_0x16382f);FaxMessageEvents['on'](_0x3f000d,_0x23b61f);}};
\ No newline at end of file
index 50a1935..d7c0e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf45e=['get','isAuthenticated','index','/describe','describe','/:id','show','download','post','tracked','fax','create','put','update','/:id/reject','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller'];(function(_0x21c50d,_0x3660a7){var _0x3958da=function(_0x3edee9){while(--_0x3edee9){_0x21c50d['push'](_0x21c50d['shift']());}};_0x3958da(++_0x3660a7);}(_0xf45e,0x115));var _0xef45=function(_0x39046f,_0x588a92){_0x39046f=_0x39046f-0x0;var _0x3a9e11=_0xf45e[_0x39046f];return _0x3a9e11;};'use strict';var multer=require(_0xef45('0x0'));var util=require('util');var path=require(_0xef45('0x1'));var timeout=require('connect-timeout');var express=require(_0xef45('0x2'));var router=express[_0xef45('0x3')]();var fs_extra=require(_0xef45('0x4'));var auth=require(_0xef45('0x5'));var interaction=require(_0xef45('0x6'));var config=require(_0xef45('0x7'));var controller=require(_0xef45('0x8'));router[_0xef45('0x9')]('/',auth[_0xef45('0xa')](),controller[_0xef45('0xb')]);router[_0xef45('0x9')](_0xef45('0xc'),auth[_0xef45('0xa')](),controller[_0xef45('0xd')]);router[_0xef45('0x9')](_0xef45('0xe'),auth[_0xef45('0xa')](),controller[_0xef45('0xf')]);router[_0xef45('0x9')]('/:id/download',auth[_0xef45('0xa')](),controller[_0xef45('0x10')]);router[_0xef45('0x11')]('/',auth[_0xef45('0xa')](),interaction[_0xef45('0x12')](_0xef45('0x13'),'faxmessage:create'),controller[_0xef45('0x14')]);router[_0xef45('0x15')](_0xef45('0xe'),auth[_0xef45('0xa')](),controller[_0xef45('0x16')]);router['put']('/:id/accept',auth[_0xef45('0xa')](),controller['accept']);router[_0xef45('0x15')](_0xef45('0x17'),auth[_0xef45('0xa')](),controller['reject']);router['delete'](_0xef45('0xe'),auth['isAuthenticated'](),controller[_0xef45('0x18')]);module[_0xef45('0x19')]=router;
\ No newline at end of file
+var _0x9348=['util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','describe','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','/:id','destroy','exports','multer'];(function(_0x3004eb,_0x189c86){var _0x173ff3=function(_0x35313c){while(--_0x35313c){_0x3004eb['push'](_0x3004eb['shift']());}};_0x173ff3(++_0x189c86);}(_0x9348,0x10d));var _0x8934=function(_0x3a6cee,_0x2fa57d){_0x3a6cee=_0x3a6cee-0x0;var _0x303623=_0x9348[_0x3a6cee];return _0x303623;};'use strict';var multer=require(_0x8934('0x0'));var util=require(_0x8934('0x1'));var path=require(_0x8934('0x2'));var timeout=require(_0x8934('0x3'));var express=require(_0x8934('0x4'));var router=express['Router']();var fs_extra=require(_0x8934('0x5'));var auth=require(_0x8934('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8934('0x7'));var controller=require(_0x8934('0x8'));router[_0x8934('0x9')]('/',auth[_0x8934('0xa')](),controller[_0x8934('0xb')]);router[_0x8934('0x9')]('/describe',auth[_0x8934('0xa')](),controller[_0x8934('0xc')]);router[_0x8934('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x8934('0xd'),auth['isAuthenticated'](),controller[_0x8934('0xe')]);router[_0x8934('0xf')]('/',auth[_0x8934('0xa')](),interaction[_0x8934('0x10')](_0x8934('0x11'),_0x8934('0x12')),controller[_0x8934('0x13')]);router[_0x8934('0x14')]('/:id',auth[_0x8934('0xa')](),controller[_0x8934('0x15')]);router[_0x8934('0x14')](_0x8934('0x16'),auth[_0x8934('0xa')](),controller[_0x8934('0x17')]);router['put'](_0x8934('0x18'),auth[_0x8934('0xa')](),controller[_0x8934('0x19')]);router[_0x8934('0x1a')](_0x8934('0x1b'),auth[_0x8934('0xa')](),controller[_0x8934('0x1c')]);module[_0x8934('0x1d')]=router;
\ No newline at end of file
index 7eaddc3..a8fb92f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0355=['STRING','name','INTEGER','rrmemory','sequelize','exports'];(function(_0x5d6667,_0x3f1502){var _0x11449c=function(_0x3d9289){while(--_0x3d9289){_0x5d6667['push'](_0x5d6667['shift']());}};_0x11449c(++_0x3f1502);}(_0x0355,0xca));var _0x5035=function(_0x12a89,_0x59fe53){_0x12a89=_0x12a89-0x0;var _0x2eb391=_0x0355[_0x12a89];return _0x2eb391;};'use strict';var Sequelize=require(_0x5035('0x0'));module[_0x5035('0x1')]={'name':{'type':Sequelize[_0x5035('0x2')],'unique':_0x5035('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5035('0x2')]},'timeout':{'type':Sequelize[_0x5035('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x5035('0x5'),'beepall','roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8265=['exports','STRING','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x58c92a,_0x56cd6c){var _0x316cd9=function(_0x8a8b31){while(--_0x8a8b31){_0x58c92a['push'](_0x58c92a['shift']());}};_0x316cd9(++_0x56cd6c);}(_0x8265,0xa0));var _0x5826=function(_0x513a3f,_0x105af6){_0x513a3f=_0x513a3f-0x0;var _0x3034cb=_0x8265[_0x513a3f];return _0x3034cb;};'use strict';var Sequelize=require(_0x5826('0x0'));module[_0x5826('0x1')]={'name':{'type':Sequelize[_0x5826('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x5826('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5826('0x4')]('rrmemory',_0x5826('0x5'),_0x5826('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x5826('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 125629c..b9f454b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf15=['bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy','FaxQueues','UserProfileResource','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','catch','show','params','keys','options','create','body','user','get','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','order','User','UserId','agent','faxPause','updatedAt','createdAt','rows','%s/%s','SIP','getTeams','Team','addTeams','ids','online','interface','flatMap','Agents','transaction','emit','removeTeams','select','field','tq.TeamId','from','team_has_fax_queues','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','toString','sequelize','QueryTypes','SELECT','TeamId','includes','all','union','compact','value','removeAgents','userFaxQueue:remove','addAgents','omit','userFaxQueue:save','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x38622b,_0x3cfdf7){var _0x2c1a7a=function(_0x5de9cc){while(--_0x5de9cc){_0x38622b['push'](_0x38622b['shift']());}};_0x2c1a7a(++_0x3cfdf7);}(_0xcf15,0x83));var _0x5cf1=function(_0x4054e9,_0x29b091){_0x4054e9=_0x4054e9-0x0;var _0xb06d6f=_0xcf15[_0x4054e9];return _0xb06d6f;};'use strict';var emlformat=require(_0x5cf1('0x0'));var rimraf=require(_0x5cf1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5cf1('0x2'));var rp=require(_0x5cf1('0x3'));var moment=require(_0x5cf1('0x4'));var BPromise=require(_0x5cf1('0x5'));var Mustache=require(_0x5cf1('0x6'));var util=require('util');var path=require(_0x5cf1('0x7'));var sox=require(_0x5cf1('0x8'));var csv=require(_0x5cf1('0x9'));var ejs=require(_0x5cf1('0xa'));var fs=require('fs');var fs_extra=require(_0x5cf1('0xb'));var _=require(_0x5cf1('0xc'));var squel=require(_0x5cf1('0xd'));var crypto=require(_0x5cf1('0xe'));var jsforce=require(_0x5cf1('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x5cf1('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5cf1('0x11'));var hardwareService=require(_0x5cf1('0x12'));var logger=require('../../config/logger')(_0x5cf1('0x13'));var utils=require('../../config/utils');var config=require(_0x5cf1('0x14'));var licenseUtil=require(_0x5cf1('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x5cf1('0x16')](config[_0x5cf1('0x17')],{'host':_0x5cf1('0x18'),'port':0x18eb});var socket=require(_0x5cf1('0x19'))(new Redis(config[_0x5cf1('0x17')]));require(_0x5cf1('0x1a'))[_0x5cf1('0x1b')](socket);function respondWithStatusCode(_0x81ee10,_0x186a3f){_0x186a3f=_0x186a3f||0xcc;return function(_0xe83cdd){if(_0xe83cdd){return _0x81ee10[_0x5cf1('0x1c')](_0x186a3f);}return _0x81ee10[_0x5cf1('0x1d')](_0x186a3f)[_0x5cf1('0x1e')]();};}function respondWithResult(_0x41cd18,_0x511c4f){_0x511c4f=_0x511c4f||0xc8;return function(_0x17548d){if(_0x17548d){return _0x41cd18['status'](_0x511c4f)[_0x5cf1('0x1f')](_0x17548d);}};}function respondWithFilteredResult(_0x52e68d,_0x521666){return function(_0x295380){if(_0x295380){var _0x2dc0ab=typeof _0x521666[_0x5cf1('0x20')]==='undefined'&&typeof _0x521666[_0x5cf1('0x21')]==='undefined';var _0x151651=_0x295380[_0x5cf1('0x22')];var _0x4b4bc2=_0x2dc0ab?0x0:_0x521666['offset'];var _0x572327=_0x2dc0ab?_0x295380[_0x5cf1('0x22')]:_0x521666[_0x5cf1('0x20')]+_0x521666[_0x5cf1('0x21')];var _0x391914;if(_0x572327>=_0x151651){_0x572327=_0x151651;_0x391914=0xc8;}else{_0x391914=0xce;}_0x52e68d[_0x5cf1('0x1d')](_0x391914);return _0x52e68d['set'](_0x5cf1('0x23'),_0x4b4bc2+'-'+_0x572327+'/'+_0x151651)['json'](_0x295380);}return null;};}function patchUpdates(_0x3c5525){return function(_0x1d66d4){try{jsonpatch[_0x5cf1('0x24')](_0x1d66d4,_0x3c5525,!![]);}catch(_0x1da952){return BPromise[_0x5cf1('0x25')](_0x1da952);}return _0x1d66d4[_0x5cf1('0x26')]();};}function saveUpdates(_0x445f9c,_0x82252b){return function(_0xcdef78){if(_0xcdef78){return _0xcdef78[_0x5cf1('0x27')](_0x445f9c)[_0x5cf1('0x28')](function(_0x2d9422){return _0x2d9422;});}return null;};}function removeEntity(_0x1e516c,_0x38ddba){return function(_0x1eb69e){if(_0x1eb69e){return _0x1eb69e[_0x5cf1('0x29')]()[_0x5cf1('0x28')](function(){var _0x53030b=_0x1eb69e['get']({'plain':!![]});var _0x57886e=_0x5cf1('0x2a');return db[_0x5cf1('0x2b')]['destroy']({'where':{'type':_0x57886e,'resourceId':_0x53030b['id']}})[_0x5cf1('0x28')](function(){return _0x1eb69e;});})[_0x5cf1('0x28')](function(){_0x1e516c[_0x5cf1('0x1d')](0xcc)[_0x5cf1('0x1e')]();});}};}function handleEntityNotFound(_0x5e9874,_0x36c73e){return function(_0x3a4217){if(!_0x3a4217){_0x5e9874[_0x5cf1('0x1c')](0x194);}return _0x3a4217;};}function handleError(_0x414b91,_0x333c25){_0x333c25=_0x333c25||0x1f4;return function(_0xf4be29){logger[_0x5cf1('0x2c')](_0xf4be29[_0x5cf1('0x2d')]);if(_0xf4be29[_0x5cf1('0x2e')]){delete _0xf4be29[_0x5cf1('0x2e')];}_0x414b91[_0x5cf1('0x1d')](_0x333c25)[_0x5cf1('0x2f')](_0xf4be29);};}exports[_0x5cf1('0x30')]=function(_0x598ffd,_0x12926a){var _0x5d0078={},_0x5c579c={},_0x34f92d={'count':0x0,'rows':[]};var _0x2e3f97=_[_0x5cf1('0x31')](db[_0x5cf1('0x32')][_0x5cf1('0x33')],function(_0x43c43d){return{'name':_0x43c43d[_0x5cf1('0x34')],'type':_0x43c43d[_0x5cf1('0x35')]['key']};});_0x5c579c['model']=_[_0x5cf1('0x31')](_0x2e3f97,'name');_0x5c579c[_0x5cf1('0x36')]=_['keys'](_0x598ffd[_0x5cf1('0x36')]);_0x5c579c[_0x5cf1('0x37')]=_[_0x5cf1('0x38')](_0x5c579c[_0x5cf1('0x39')],_0x5c579c[_0x5cf1('0x36')]);_0x5d0078[_0x5cf1('0x3a')]=_[_0x5cf1('0x38')](_0x5c579c[_0x5cf1('0x39')],qs['fields'](_0x598ffd['query'][_0x5cf1('0x3b')]));_0x5d0078[_0x5cf1('0x3a')]=_0x5d0078[_0x5cf1('0x3a')][_0x5cf1('0x3c')]?_0x5d0078[_0x5cf1('0x3a')]:_0x5c579c[_0x5cf1('0x39')];if(!_0x598ffd['query']['hasOwnProperty'](_0x5cf1('0x3d'))){_0x5d0078[_0x5cf1('0x21')]=qs[_0x5cf1('0x21')](_0x598ffd['query'][_0x5cf1('0x21')]);_0x5d0078[_0x5cf1('0x20')]=qs[_0x5cf1('0x20')](_0x598ffd['query'][_0x5cf1('0x20')]);}_0x5d0078['order']=qs[_0x5cf1('0x3e')](_0x598ffd['query'][_0x5cf1('0x3e')]);_0x5d0078[_0x5cf1('0x3f')]=qs[_0x5cf1('0x37')](_[_0x5cf1('0x40')](_0x598ffd[_0x5cf1('0x36')],_0x5c579c[_0x5cf1('0x37')]),_0x2e3f97);if(_0x598ffd[_0x5cf1('0x36')]['filter']){_0x5d0078['where']=_[_0x5cf1('0x41')](_0x5d0078[_0x5cf1('0x3f')],{'$or':_['map'](_0x2e3f97,function(_0xdd0711){if(_0xdd0711['type']!==_0x5cf1('0x42')){var _0x2ed76e={};_0x2ed76e[_0xdd0711[_0x5cf1('0x2e')]]={'$like':'%'+_0x598ffd[_0x5cf1('0x36')][_0x5cf1('0x43')]+'%'};return _0x2ed76e;}})});}_0x5d0078=_[_0x5cf1('0x41')]({},_0x5d0078,_0x598ffd['options']);var _0x26e810={'where':_0x5d0078[_0x5cf1('0x3f')]};return db[_0x5cf1('0x32')]['count'](_0x26e810)['then'](function(_0x33a102){_0x34f92d[_0x5cf1('0x22')]=_0x33a102;if(_0x598ffd['query'][_0x5cf1('0x44')]){_0x5d0078[_0x5cf1('0x45')]=[{'all':!![]}];}return db[_0x5cf1('0x32')][_0x5cf1('0x46')](_0x5d0078);})[_0x5cf1('0x28')](function(_0x37b523){_0x34f92d['rows']=_0x37b523;return _0x34f92d;})['then'](respondWithFilteredResult(_0x12926a,_0x5d0078))[_0x5cf1('0x47')](handleError(_0x12926a,null));};exports[_0x5cf1('0x48')]=function(_0x4eb4e7,_0x434886){var _0x2d9102={'raw':!![],'where':{'id':_0x4eb4e7[_0x5cf1('0x49')]['id']}},_0x1153f6={};_0x1153f6[_0x5cf1('0x39')]=_[_0x5cf1('0x4a')](db[_0x5cf1('0x32')][_0x5cf1('0x33')]);_0x1153f6[_0x5cf1('0x36')]=_[_0x5cf1('0x4a')](_0x4eb4e7[_0x5cf1('0x36')]);_0x1153f6[_0x5cf1('0x37')]=_[_0x5cf1('0x38')](_0x1153f6['model'],_0x1153f6['query']);_0x2d9102[_0x5cf1('0x3a')]=_['intersection'](_0x1153f6['model'],qs[_0x5cf1('0x3b')](_0x4eb4e7['query'][_0x5cf1('0x3b')]));_0x2d9102[_0x5cf1('0x3a')]=_0x2d9102[_0x5cf1('0x3a')][_0x5cf1('0x3c')]?_0x2d9102[_0x5cf1('0x3a')]:_0x1153f6[_0x5cf1('0x39')];if(_0x4eb4e7[_0x5cf1('0x36')]['includeAll']){_0x2d9102[_0x5cf1('0x45')]=[{'all':!![]}];}_0x2d9102=_[_0x5cf1('0x41')]({},_0x2d9102,_0x4eb4e7[_0x5cf1('0x4b')]);return db[_0x5cf1('0x32')]['find'](_0x2d9102)[_0x5cf1('0x28')](handleEntityNotFound(_0x434886,null))[_0x5cf1('0x28')](respondWithResult(_0x434886,null))[_0x5cf1('0x47')](handleError(_0x434886,null));};exports['create']=function(_0x1e22fd,_0x3da673){return db[_0x5cf1('0x32')][_0x5cf1('0x4c')](_0x1e22fd[_0x5cf1('0x4d')],{})[_0x5cf1('0x28')](function(_0x2d666a){var _0x95bf20=_0x1e22fd[_0x5cf1('0x4e')][_0x5cf1('0x4f')]({'plain':!![]});if(!_0x95bf20)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x95bf20[_0x5cf1('0x50')]===_0x5cf1('0x4e')){var _0x9c10e7=_0x2d666a[_0x5cf1('0x4f')]({'plain':!![]});var _0x316759=_0x5cf1('0x2a');return db[_0x5cf1('0x51')][_0x5cf1('0x52')]({'where':{'name':_0x316759,'userProfileId':_0x95bf20['userProfileId']},'raw':!![]})[_0x5cf1('0x28')](function(_0x12f633){if(_0x12f633&&_0x12f633[_0x5cf1('0x53')]===0x0){return db[_0x5cf1('0x2b')][_0x5cf1('0x4c')]({'name':_0x9c10e7['name'],'resourceId':_0x9c10e7['id'],'type':_0x12f633[_0x5cf1('0x2e')],'sectionId':_0x12f633['id']},{})[_0x5cf1('0x28')](function(){return _0x2d666a;});}else{return _0x2d666a;}})[_0x5cf1('0x47')](function(_0x14c88d){logger[_0x5cf1('0x2c')](_0x5cf1('0x54'),_0x14c88d);throw _0x14c88d;});}return _0x2d666a;})['then'](respondWithResult(_0x3da673,0xc9))['catch'](handleError(_0x3da673,null));};exports['update']=function(_0x64c861,_0x505b6c){if(_0x64c861['body']['id']){delete _0x64c861[_0x5cf1('0x4d')]['id'];}return db['FaxQueue'][_0x5cf1('0x52')]({'where':{'id':_0x64c861['params']['id']}})[_0x5cf1('0x28')](handleEntityNotFound(_0x505b6c,null))[_0x5cf1('0x28')](saveUpdates(_0x64c861[_0x5cf1('0x4d')],null))[_0x5cf1('0x28')](respondWithResult(_0x505b6c,null))[_0x5cf1('0x47')](handleError(_0x505b6c,null));};exports[_0x5cf1('0x29')]=function(_0x365cd6,_0x3acb5b){return db[_0x5cf1('0x32')][_0x5cf1('0x52')]({'where':{'id':_0x365cd6[_0x5cf1('0x49')]['id']}})['then'](handleEntityNotFound(_0x3acb5b,null))[_0x5cf1('0x28')](removeEntity(_0x3acb5b,null))[_0x5cf1('0x47')](handleError(_0x3acb5b,null));};exports[_0x5cf1('0x55')]=function(_0x58b12d,_0x26beb0){return db[_0x5cf1('0x32')][_0x5cf1('0x55')]()['then'](respondWithResult(_0x26beb0,null))['catch'](handleError(_0x26beb0,null));};exports[_0x5cf1('0x56')]=function(_0x597b8b,_0x30cf1f,_0x4c770e){var _0x15db4b={'raw':!![],'where':{}},_0x2764ac={},_0x1d05ff;return db[_0x5cf1('0x32')][_0x5cf1('0x57')]({'where':{'id':_0x597b8b[_0x5cf1('0x49')]['id']}})['then'](handleEntityNotFound(_0x30cf1f,null))[_0x5cf1('0x28')](function(_0x32950d){if(_0x32950d){_0x1d05ff=_0x32950d['get']({'plain':!![]});_0x2764ac[_0x5cf1('0x39')]=_[_0x5cf1('0x4a')](db[_0x5cf1('0x58')][_0x5cf1('0x33')]);_0x2764ac['query']=_[_0x5cf1('0x4a')](_0x597b8b['query']);_0x2764ac[_0x5cf1('0x37')]=_[_0x5cf1('0x38')](_0x2764ac[_0x5cf1('0x39')],_0x2764ac[_0x5cf1('0x36')]);_0x15db4b[_0x5cf1('0x3a')]=_['intersection'](_0x2764ac[_0x5cf1('0x39')],qs[_0x5cf1('0x3b')](_0x597b8b[_0x5cf1('0x36')][_0x5cf1('0x3b')]));_0x15db4b[_0x5cf1('0x3a')]=_0x15db4b[_0x5cf1('0x3a')][_0x5cf1('0x3c')]?_0x15db4b[_0x5cf1('0x3a')]:_0x2764ac[_0x5cf1('0x39')];if(!_0x597b8b[_0x5cf1('0x36')][_0x5cf1('0x59')](_0x5cf1('0x3d'))){_0x15db4b[_0x5cf1('0x21')]=qs[_0x5cf1('0x21')](_0x597b8b['query'][_0x5cf1('0x21')]);_0x15db4b['offset']=qs[_0x5cf1('0x20')](_0x597b8b[_0x5cf1('0x36')][_0x5cf1('0x20')]);}_0x15db4b[_0x5cf1('0x5a')]=qs[_0x5cf1('0x3e')](_0x597b8b[_0x5cf1('0x36')]['sort']);_0x15db4b[_0x5cf1('0x3f')]=qs['filters'](_[_0x5cf1('0x40')](_0x597b8b[_0x5cf1('0x36')],_0x2764ac[_0x5cf1('0x37')]));_0x15db4b[_0x5cf1('0x3f')]['FaxQueueId']=_0x32950d['id'];if(_0x597b8b[_0x5cf1('0x36')][_0x5cf1('0x43')]){_0x15db4b['where']=_[_0x5cf1('0x41')](_0x15db4b['where'],{'$or':_[_0x5cf1('0x31')](_0x15db4b[_0x5cf1('0x3a')],function(_0x5a275f){var _0x294337={};_0x294337[_0x5a275f]={'$like':'%'+_0x597b8b['query'][_0x5cf1('0x43')]+'%'};return _0x294337;})});}_0x15db4b=_[_0x5cf1('0x41')]({},_0x15db4b,_0x597b8b['options']);return db[_0x5cf1('0x58')][_0x5cf1('0x46')](_0x15db4b);}})['then'](function(_0x5280b8){if(_0x5280b8){return db[_0x5cf1('0x5b')]['findAndCountAll']({'where':{'id':_[_0x5cf1('0x31')](_0x5280b8,_0x5cf1('0x5c')),'role':_0x5cf1('0x5d')},'attributes':['id',_0x5cf1('0x2e'),_0x5cf1('0x5e'),_0x5cf1('0x5f'),_0x5cf1('0x60')]});}})['then'](function(_0x34e6f2){if(_0x34e6f2){return{'count':_0x34e6f2[_0x5cf1('0x22')],'rows':_[_0x5cf1('0x31')](_0x34e6f2[_0x5cf1('0x61')],function(_0x152990){return{'membername':_0x152990['name'],'UserId':_0x152990['id'],'queue_name':_0x1d05ff['name'],'FaxQueueId':_0x1d05ff['id'],'interface':util['format'](_0x5cf1('0x62'),_0x5cf1('0x63'),_0x152990[_0x5cf1('0x2e')]),'penalty':0x0,'paused':_0x152990[_0x5cf1('0x5e')],'createdAt':_0x152990[_0x5cf1('0x60')],'updatedAt':_0x152990[_0x5cf1('0x5f')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5cf1('0x28')](respondWithFilteredResult(_0x30cf1f,_0x15db4b))['catch'](handleError(_0x30cf1f,null));};exports[_0x5cf1('0x64')]=function(_0x747ab9,_0x11232c,_0x508517){var _0x3b3336={};var _0x39e403={};var _0x454884;var _0x2c1a66;return db[_0x5cf1('0x32')][_0x5cf1('0x57')]({'where':{'id':_0x747ab9[_0x5cf1('0x49')]['id']}})[_0x5cf1('0x28')](handleEntityNotFound(_0x11232c,null))[_0x5cf1('0x28')](function(_0x45f3df){if(_0x45f3df){_0x454884=_0x45f3df;_0x39e403[_0x5cf1('0x39')]=_[_0x5cf1('0x4a')](db[_0x5cf1('0x65')][_0x5cf1('0x33')]);_0x39e403['query']=_[_0x5cf1('0x4a')](_0x747ab9[_0x5cf1('0x36')]);_0x39e403[_0x5cf1('0x37')]=_['intersection'](_0x39e403[_0x5cf1('0x39')],_0x39e403[_0x5cf1('0x36')]);_0x3b3336['attributes']=_[_0x5cf1('0x38')](_0x39e403[_0x5cf1('0x39')],qs[_0x5cf1('0x3b')](_0x747ab9[_0x5cf1('0x36')][_0x5cf1('0x3b')]));_0x3b3336[_0x5cf1('0x3a')]=_0x3b3336['attributes'][_0x5cf1('0x3c')]?_0x3b3336['attributes']:_0x39e403[_0x5cf1('0x39')];_0x3b3336['order']=qs[_0x5cf1('0x3e')](_0x747ab9[_0x5cf1('0x36')][_0x5cf1('0x3e')]);_0x3b3336[_0x5cf1('0x3f')]=qs[_0x5cf1('0x37')](_[_0x5cf1('0x40')](_0x747ab9[_0x5cf1('0x36')],_0x39e403[_0x5cf1('0x37')]));if(_0x747ab9['query'][_0x5cf1('0x43')]){_0x3b3336[_0x5cf1('0x3f')]=_['merge'](_0x3b3336['where'],{'$or':_[_0x5cf1('0x31')](_0x3b3336[_0x5cf1('0x3a')],function(_0x325284){var _0x1187b4={};_0x1187b4[_0x325284]={'$like':'%'+_0x747ab9['query'][_0x5cf1('0x43')]+'%'};return _0x1187b4;})});}_0x3b3336=_[_0x5cf1('0x41')]({},_0x3b3336,_0x747ab9[_0x5cf1('0x4b')]);return _0x454884[_0x5cf1('0x64')](_0x3b3336);}})[_0x5cf1('0x28')](function(_0x3fa4c0){if(_0x3fa4c0){_0x2c1a66=_0x3fa4c0[_0x5cf1('0x3c')];if(!_0x747ab9[_0x5cf1('0x36')]['hasOwnProperty']('nolimit')){_0x3b3336[_0x5cf1('0x21')]=qs[_0x5cf1('0x21')](_0x747ab9['query'][_0x5cf1('0x21')]);_0x3b3336['offset']=qs['offset'](_0x747ab9[_0x5cf1('0x36')][_0x5cf1('0x20')]);}return _0x454884[_0x5cf1('0x64')](_0x3b3336);}})[_0x5cf1('0x28')](function(_0x325ddc){if(_0x325ddc){return _0x325ddc?{'count':_0x2c1a66,'rows':_0x325ddc}:null;}})[_0x5cf1('0x28')](respondWithResult(_0x11232c,null))['catch'](handleError(_0x11232c,null));};exports[_0x5cf1('0x66')]=function(_0xee50cf,_0x1d7ac8,_0x3d5968){var _0x32f604=_0xee50cf[_0x5cf1('0x4d')][_0x5cf1('0x67')];return db[_0x5cf1('0x65')][_0x5cf1('0x46')]({'where':{'id':_0x32f604},'attributes':['id'],'include':[{'model':db[_0x5cf1('0x5b')],'as':'Agents','attributes':['id','name',_0x5cf1('0x68'),'voicePause',_0x5cf1('0x69')],'raw':!![]}]})['then'](function(_0x105c89){if(_0x105c89){var _0x5ad00a=_[_0x5cf1('0x6a')](_0x105c89,function(_0x383ad0){var _0x1add8e=_0x383ad0[_0x5cf1('0x4f')]({'plain':!![]});return _0x1add8e[_0x5cf1('0x6b')];});return db[_0x5cf1('0x32')]['find']({'where':{'id':_0xee50cf['params']['id']}})['then'](function(_0x254bf2){return db['sequelize'][_0x5cf1('0x6c')](function(_0x1060ad){return _0x254bf2[_0x5cf1('0x66')](_0x32f604,{'transaction':_0x1060ad})[_0x5cf1('0x28')](function(){return BPromise['each'](_0x5ad00a,function(_0x5bf40a){return db['UserFaxQueue']['findOrCreate']({'where':{'UserId':_0x5bf40a['id'],'FaxQueueId':_0xee50cf[_0x5cf1('0x49')]['id']},'transaction':_0x1060ad});});})['then'](function(){_0x5ad00a['forEach'](function(_0x1aa21f){socket[_0x5cf1('0x6d')]('userFaxQueue:save',{'UserId':_0x1aa21f['id'],'FaxQueueId':_0x254bf2['id']});});});});});}})['then'](respondWithStatusCode(_0x1d7ac8,null))['catch'](handleError(_0x1d7ac8,null));};exports[_0x5cf1('0x6e')]=function(_0x3fc6ce,_0x4e53b3,_0x13dddc){return db['Team'][_0x5cf1('0x46')]({'where':{'id':_0x3fc6ce[_0x5cf1('0x36')][_0x5cf1('0x67')]},'attributes':['id'],'include':[{'model':db[_0x5cf1('0x5b')],'as':_0x5cf1('0x6b'),'attributes':['id'],'raw':!![]}]})[_0x5cf1('0x28')](handleEntityNotFound(_0x4e53b3,null))[_0x5cf1('0x28')](function(_0x39f191){var _0x143027=_[_0x5cf1('0x31')](_0x39f191,'id');var _0x15c4c0=[];var _0x554499=[];var _0x55a6c5=squel[_0x5cf1('0x6f')]();_0x55a6c5[_0x5cf1('0x70')](_0x5cf1('0x71'))[_0x5cf1('0x72')](_0x5cf1('0x73'),'tq')['join']('user_has_teams','ut',_0x5cf1('0x74'))[_0x5cf1('0x3f')](_0x5cf1('0x75'),_0x3fc6ce[_0x5cf1('0x49')]['id']);for(var _0x5e4ff8=0x0;_0x5e4ff8<_0x39f191['length'];_0x5e4ff8+=0x1){let _0x45b726=_0x39f191[_0x5e4ff8];for(var _0xa4b731=0x0;_0xa4b731<_0x45b726['Agents'][_0x5cf1('0x3c')];_0xa4b731+=0x1){let _0x416527=_0x45b726[_0x5cf1('0x6b')][_0xa4b731];var _0x3bff08=_0x55a6c5[_0x5cf1('0x76')]();_0x3bff08[_0x5cf1('0x3f')]('ut.UserId\x20=\x20?',_0x416527['id']);_0x554499['push'](db['sequelize']['query'](_0x3bff08[_0x5cf1('0x77')](),{'type':db[_0x5cf1('0x78')][_0x5cf1('0x79')][_0x5cf1('0x7a')]})[_0x5cf1('0x28')](function(_0x30347d){if(_0x30347d[_0x5cf1('0x3c')]===0x1){return _0x416527['id'];}else{var _0x3502a7=_['every'](_[_0x5cf1('0x31')](_0x30347d,_0x5cf1('0x7b')),function(_0x4da4d1){return _[_0x5cf1('0x7c')](_0x143027,_0x4da4d1);});if(_0x3502a7){return _0x416527['id'];}}}));}}return BPromise[_0x5cf1('0x7d')](_0x554499)[_0x5cf1('0x28')](function(_0xe5e046){_0x15c4c0=_(_0x15c4c0)[_0x5cf1('0x7e')](_0xe5e046)[_0x5cf1('0x7f')]()[_0x5cf1('0x80')]();return db[_0x5cf1('0x32')][_0x5cf1('0x52')]({'where':{'id':_0x3fc6ce[_0x5cf1('0x49')]['id']}})[_0x5cf1('0x28')](function(_0x5bffdf){return db[_0x5cf1('0x78')][_0x5cf1('0x6c')](function(_0x35fbbf){return _0x5bffdf[_0x5cf1('0x6e')](_0x3fc6ce['query'][_0x5cf1('0x67')],{'transaction':_0x35fbbf})[_0x5cf1('0x28')](function(){if(!_['isEmpty'](_0x15c4c0)){return _0x5bffdf[_0x5cf1('0x81')](_0x15c4c0,{'transaction':_0x35fbbf});}})[_0x5cf1('0x28')](function(){_0x15c4c0['forEach'](function(_0x3812d9){socket[_0x5cf1('0x6d')](_0x5cf1('0x82'),{'UserId':_0x3812d9,'FaxQueueId':_0x5bffdf['id']});});});});});});})[_0x5cf1('0x28')](respondWithStatusCode(_0x4e53b3,null))[_0x5cf1('0x47')](handleError(_0x4e53b3,null));};exports['addAgents']=function(_0x59be49,_0x219d3e,_0x491201){return db[_0x5cf1('0x32')][_0x5cf1('0x52')]({'where':{'id':_0x59be49[_0x5cf1('0x49')]['id']}})[_0x5cf1('0x28')](handleEntityNotFound(_0x219d3e,null))[_0x5cf1('0x28')](function(_0x4e21ba){if(_0x4e21ba){return _0x4e21ba[_0x5cf1('0x83')](_0x59be49[_0x5cf1('0x4d')]['ids'],_[_0x5cf1('0x84')](_0x59be49[_0x5cf1('0x4d')],[_0x5cf1('0x67'),'id'])||{})['spread'](function(_0x4a49ae){for(var _0xe89443=0x0;_0xe89443<_0x59be49[_0x5cf1('0x4d')]['ids'][_0x5cf1('0x3c')];_0xe89443+=0x1){socket[_0x5cf1('0x6d')](_0x5cf1('0x85'),{'UserId':Number(_0x59be49[_0x5cf1('0x4d')][_0x5cf1('0x67')][_0xe89443]),'FaxQueueId':Number(_0x59be49[_0x5cf1('0x49')]['id'])});}return _0x4a49ae;});}})['then'](respondWithResult(_0x219d3e,null))[_0x5cf1('0x47')](handleError(_0x219d3e,null));};exports[_0x5cf1('0x81')]=function(_0x2178b3,_0x4299e4,_0x391c8c){return db['FaxQueue']['find']({'where':{'id':_0x2178b3['params']['id']}})[_0x5cf1('0x28')](handleEntityNotFound(_0x4299e4,null))['then'](function(_0x2a1f04){if(_0x2a1f04){return _0x2a1f04[_0x5cf1('0x81')](_0x2178b3['query']['ids'])[_0x5cf1('0x28')](function(){if(_[_0x5cf1('0x86')](_0x2178b3[_0x5cf1('0x36')][_0x5cf1('0x67')])){for(var _0x5a54f6=0x0;_0x5a54f6<_0x2178b3[_0x5cf1('0x36')]['ids'][_0x5cf1('0x3c')];_0x5a54f6+=0x1){socket[_0x5cf1('0x6d')](_0x5cf1('0x82'),{'UserId':Number(_0x2178b3[_0x5cf1('0x36')][_0x5cf1('0x67')][_0x5a54f6]),'FaxQueueId':Number(_0x2178b3['params']['id'])});}}else{socket[_0x5cf1('0x6d')](_0x5cf1('0x82'),{'UserId':Number(_0x2178b3['query'][_0x5cf1('0x67')]),'FaxQueueId':Number(_0x2178b3[_0x5cf1('0x49')]['id'])});}});}})['then'](respondWithStatusCode(_0x4299e4,null))[_0x5cf1('0x47')](handleError(_0x4299e4,null));};exports[_0x5cf1('0x87')]=function(_0x52e201,_0xc4acdc,_0x5ee4da){var _0x3d4e44={};var _0x2f8a02={};var _0x552a6f;var _0x2e1f8d;return db[_0x5cf1('0x32')][_0x5cf1('0x57')]({'where':{'id':_0x52e201[_0x5cf1('0x49')]['id']}})[_0x5cf1('0x28')](handleEntityNotFound(_0xc4acdc,null))[_0x5cf1('0x28')](function(_0x43a976){if(_0x43a976){_0x552a6f=_0x43a976;_0x2f8a02[_0x5cf1('0x39')]=_[_0x5cf1('0x4a')](db['User']['rawAttributes']);_0x2f8a02[_0x5cf1('0x36')]=_[_0x5cf1('0x4a')](_0x52e201[_0x5cf1('0x36')]);_0x2f8a02[_0x5cf1('0x37')]=_[_0x5cf1('0x38')](_0x2f8a02[_0x5cf1('0x39')],_0x2f8a02[_0x5cf1('0x36')]);_0x3d4e44[_0x5cf1('0x3a')]=_['intersection'](_0x2f8a02[_0x5cf1('0x39')],qs['fields'](_0x52e201[_0x5cf1('0x36')][_0x5cf1('0x3b')]));_0x3d4e44['attributes']=_0x3d4e44['attributes']['length']?_0x3d4e44[_0x5cf1('0x3a')]:_0x2f8a02[_0x5cf1('0x39')];_0x3d4e44[_0x5cf1('0x5a')]=qs[_0x5cf1('0x3e')](_0x52e201[_0x5cf1('0x36')][_0x5cf1('0x3e')]);_0x3d4e44[_0x5cf1('0x3f')]=qs[_0x5cf1('0x37')](_['pick'](_0x52e201[_0x5cf1('0x36')],_0x2f8a02['filters']));if(_0x52e201['query']['filter']){_0x3d4e44[_0x5cf1('0x3f')]=_[_0x5cf1('0x41')](_0x3d4e44[_0x5cf1('0x3f')],{'$or':_[_0x5cf1('0x31')](_0x3d4e44['attributes'],function(_0x399448){var _0x1eff8f={};_0x1eff8f[_0x399448]={'$like':'%'+_0x52e201[_0x5cf1('0x36')][_0x5cf1('0x43')]+'%'};return _0x1eff8f;})});}_0x3d4e44=_[_0x5cf1('0x41')]({},_0x3d4e44,_0x52e201[_0x5cf1('0x4b')]);return _0x552a6f['getAgents'](_0x3d4e44);}})[_0x5cf1('0x28')](function(_0x59771d){if(_0x59771d){_0x2e1f8d=_0x59771d[_0x5cf1('0x3c')];if(!_0x52e201[_0x5cf1('0x36')][_0x5cf1('0x59')](_0x5cf1('0x3d'))){_0x3d4e44[_0x5cf1('0x21')]=qs[_0x5cf1('0x21')](_0x52e201['query']['limit']);_0x3d4e44['offset']=qs['offset'](_0x52e201[_0x5cf1('0x36')][_0x5cf1('0x20')]);}return _0x552a6f['getAgents'](_0x3d4e44);}})[_0x5cf1('0x28')](function(_0x3bf0cd){if(_0x3bf0cd){return _0x3bf0cd?{'count':_0x2e1f8d,'rows':_0x3bf0cd}:null;}})[_0x5cf1('0x28')](respondWithResult(_0xc4acdc,null))['catch'](handleError(_0xc4acdc,null));};
\ No newline at end of file
+var _0x3c3b=['autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getMembers','findOne','rawAttributes','pick','FaxQueueId','UserFaxQueue','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','SIP','faxPause','Team','getTeams','addTeams','ids','findAll','Agents','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','removeTeams','select','field','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','toString','SELECT','every','includes','all','compact','value','isEmpty','removeAgents','userFaxQueue:remove','addAgents','omit','spread','userFaxQueue:save','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','get','FaxQueues','destroy','error','stack','name','send','map','FaxQueue','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','includeAll','include','rows','params','options','catch','create','body','user','role','UserProfileSection','userProfileId'];(function(_0x11cd17,_0x489e02){var _0x3343ad=function(_0xfb1588){while(--_0xfb1588){_0x11cd17['push'](_0x11cd17['shift']());}};_0x3343ad(++_0x489e02);}(_0x3c3b,0xca));var _0xb3c3=function(_0x54c166,_0x385bd8){_0x54c166=_0x54c166-0x0;var _0x17701f=_0x3c3b[_0x54c166];return _0x17701f;};'use strict';var emlformat=require(_0xb3c3('0x0'));var rimraf=require(_0xb3c3('0x1'));var zipdir=require(_0xb3c3('0x2'));var jsonpatch=require(_0xb3c3('0x3'));var rp=require('request-promise');var moment=require(_0xb3c3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb3c3('0x5'));var util=require(_0xb3c3('0x6'));var path=require(_0xb3c3('0x7'));var sox=require(_0xb3c3('0x8'));var csv=require('to-csv');var ejs=require(_0xb3c3('0x9'));var fs=require('fs');var fs_extra=require(_0xb3c3('0xa'));var _=require(_0xb3c3('0xb'));var squel=require(_0xb3c3('0xc'));var crypto=require('crypto');var jsforce=require(_0xb3c3('0xd'));var deskjs=require(_0xb3c3('0xe'));var toCsv=require(_0xb3c3('0xf'));var querystring=require(_0xb3c3('0x10'));var Papa=require(_0xb3c3('0x11'));var Redis=require(_0xb3c3('0x12'));var authService=require(_0xb3c3('0x13'));var qs=require(_0xb3c3('0x14'));var as=require(_0xb3c3('0x15'));var hardwareService=require(_0xb3c3('0x16'));var logger=require(_0xb3c3('0x17'))(_0xb3c3('0x18'));var utils=require('../../config/utils');var config=require(_0xb3c3('0x19'));var licenseUtil=require(_0xb3c3('0x1a'));var db=require(_0xb3c3('0x1b'))['db'];config[_0xb3c3('0x1c')]=_[_0xb3c3('0x1d')](config[_0xb3c3('0x1c')],{'host':_0xb3c3('0x1e'),'port':0x18eb});var socket=require(_0xb3c3('0x1f'))(new Redis(config[_0xb3c3('0x1c')]));require(_0xb3c3('0x20'))[_0xb3c3('0x21')](socket);function respondWithStatusCode(_0x2b1b57,_0x29163d){_0x29163d=_0x29163d||0xcc;return function(_0x1282d0){if(_0x1282d0){return _0x2b1b57['sendStatus'](_0x29163d);}return _0x2b1b57[_0xb3c3('0x22')](_0x29163d)['end']();};}function respondWithResult(_0x389577,_0x4cd311){_0x4cd311=_0x4cd311||0xc8;return function(_0x546287){if(_0x546287){return _0x389577[_0xb3c3('0x22')](_0x4cd311)[_0xb3c3('0x23')](_0x546287);}};}function respondWithFilteredResult(_0xcdd8b5,_0x30e9de){return function(_0xb53d8b){if(_0xb53d8b){var _0x2517da=typeof _0x30e9de[_0xb3c3('0x24')]===_0xb3c3('0x25')&&typeof _0x30e9de[_0xb3c3('0x26')]===_0xb3c3('0x25');var _0x538f40=_0xb53d8b['count'];var _0x130037=_0x2517da?0x0:_0x30e9de[_0xb3c3('0x24')];var _0xa8a06d=_0x2517da?_0xb53d8b[_0xb3c3('0x27')]:_0x30e9de['offset']+_0x30e9de['limit'];var _0x5c6167;if(_0xa8a06d>=_0x538f40){_0xa8a06d=_0x538f40;_0x5c6167=0xc8;}else{_0x5c6167=0xce;}_0xcdd8b5['status'](_0x5c6167);return _0xcdd8b5[_0xb3c3('0x28')](_0xb3c3('0x29'),_0x130037+'-'+_0xa8a06d+'/'+_0x538f40)[_0xb3c3('0x23')](_0xb53d8b);}return null;};}function patchUpdates(_0x288e9c){return function(_0x38039b){try{jsonpatch[_0xb3c3('0x2a')](_0x38039b,_0x288e9c,!![]);}catch(_0x478b5d){return BPromise['reject'](_0x478b5d);}return _0x38039b[_0xb3c3('0x2b')]();};}function saveUpdates(_0x522aae,_0x19fc87){return function(_0x5335eb){if(_0x5335eb){return _0x5335eb[_0xb3c3('0x2c')](_0x522aae)[_0xb3c3('0x2d')](function(_0x1210b7){return _0x1210b7;});}return null;};}function removeEntity(_0xd5e971,_0x2e1e43){return function(_0x5de021){if(_0x5de021){return _0x5de021['destroy']()[_0xb3c3('0x2d')](function(){var _0xd540df=_0x5de021[_0xb3c3('0x2e')]({'plain':!![]});var _0x33499b=_0xb3c3('0x2f');return db['UserProfileResource'][_0xb3c3('0x30')]({'where':{'type':_0x33499b,'resourceId':_0xd540df['id']}})[_0xb3c3('0x2d')](function(){return _0x5de021;});})[_0xb3c3('0x2d')](function(){_0xd5e971[_0xb3c3('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17dff2,_0x2826a4){return function(_0xfd91c5){if(!_0xfd91c5){_0x17dff2['sendStatus'](0x194);}return _0xfd91c5;};}function handleError(_0x2bc7d4,_0x161540){_0x161540=_0x161540||0x1f4;return function(_0x152e25){logger[_0xb3c3('0x31')](_0x152e25[_0xb3c3('0x32')]);if(_0x152e25[_0xb3c3('0x33')]){delete _0x152e25[_0xb3c3('0x33')];}_0x2bc7d4[_0xb3c3('0x22')](_0x161540)[_0xb3c3('0x34')](_0x152e25);};}exports['index']=function(_0x110e63,_0x588ba9){var _0x584bdf={},_0x494818={},_0x18db78={'count':0x0,'rows':[]};var _0x44ac4e=_[_0xb3c3('0x35')](db[_0xb3c3('0x36')]['rawAttributes'],function(_0x2b5496){return{'name':_0x2b5496['fieldName'],'type':_0x2b5496['type'][_0xb3c3('0x37')]};});_0x494818['model']=_[_0xb3c3('0x35')](_0x44ac4e,_0xb3c3('0x33'));_0x494818[_0xb3c3('0x38')]=_[_0xb3c3('0x39')](_0x110e63[_0xb3c3('0x38')]);_0x494818[_0xb3c3('0x3a')]=_[_0xb3c3('0x3b')](_0x494818[_0xb3c3('0x3c')],_0x494818[_0xb3c3('0x38')]);_0x584bdf[_0xb3c3('0x3d')]=_[_0xb3c3('0x3b')](_0x494818[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x3e')]));_0x584bdf['attributes']=_0x584bdf[_0xb3c3('0x3d')][_0xb3c3('0x3f')]?_0x584bdf['attributes']:_0x494818['model'];if(!_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x40')](_0xb3c3('0x41'))){_0x584bdf[_0xb3c3('0x26')]=qs[_0xb3c3('0x26')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x26')]);_0x584bdf[_0xb3c3('0x24')]=qs[_0xb3c3('0x24')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x24')]);}_0x584bdf[_0xb3c3('0x42')]=qs[_0xb3c3('0x43')](_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x584bdf[_0xb3c3('0x44')]=qs[_0xb3c3('0x3a')](_['pick'](_0x110e63[_0xb3c3('0x38')],_0x494818[_0xb3c3('0x3a')]),_0x44ac4e);if(_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x45')]){_0x584bdf[_0xb3c3('0x44')]=_[_0xb3c3('0x46')](_0x584bdf['where'],{'$or':_['map'](_0x44ac4e,function(_0x47ad92){if(_0x47ad92[_0xb3c3('0x47')]!=='VIRTUAL'){var _0x5d23cf={};_0x5d23cf[_0x47ad92['name']]={'$like':'%'+_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x45')]+'%'};return _0x5d23cf;}})});}_0x584bdf=_['merge']({},_0x584bdf,_0x110e63['options']);var _0x4b097b={'where':_0x584bdf[_0xb3c3('0x44')]};return db[_0xb3c3('0x36')][_0xb3c3('0x27')](_0x4b097b)[_0xb3c3('0x2d')](function(_0xf04971){_0x18db78[_0xb3c3('0x27')]=_0xf04971;if(_0x110e63[_0xb3c3('0x38')][_0xb3c3('0x48')]){_0x584bdf[_0xb3c3('0x49')]=[{'all':!![]}];}return db[_0xb3c3('0x36')]['findAll'](_0x584bdf);})[_0xb3c3('0x2d')](function(_0x208f6e){_0x18db78[_0xb3c3('0x4a')]=_0x208f6e;return _0x18db78;})[_0xb3c3('0x2d')](respondWithFilteredResult(_0x588ba9,_0x584bdf))['catch'](handleError(_0x588ba9,null));};exports['show']=function(_0x3c7e1b,_0x566cd0){var _0x394ae6={'raw':!![],'where':{'id':_0x3c7e1b[_0xb3c3('0x4b')]['id']}},_0x54dfed={};_0x54dfed[_0xb3c3('0x3c')]=_[_0xb3c3('0x39')](db[_0xb3c3('0x36')]['rawAttributes']);_0x54dfed[_0xb3c3('0x38')]=_['keys'](_0x3c7e1b[_0xb3c3('0x38')]);_0x54dfed[_0xb3c3('0x3a')]=_['intersection'](_0x54dfed[_0xb3c3('0x3c')],_0x54dfed[_0xb3c3('0x38')]);_0x394ae6[_0xb3c3('0x3d')]=_['intersection'](_0x54dfed[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x3c7e1b[_0xb3c3('0x38')]['fields']));_0x394ae6['attributes']=_0x394ae6[_0xb3c3('0x3d')]['length']?_0x394ae6[_0xb3c3('0x3d')]:_0x54dfed[_0xb3c3('0x3c')];if(_0x3c7e1b[_0xb3c3('0x38')][_0xb3c3('0x48')]){_0x394ae6[_0xb3c3('0x49')]=[{'all':!![]}];}_0x394ae6=_[_0xb3c3('0x46')]({},_0x394ae6,_0x3c7e1b[_0xb3c3('0x4c')]);return db[_0xb3c3('0x36')]['find'](_0x394ae6)['then'](handleEntityNotFound(_0x566cd0,null))[_0xb3c3('0x2d')](respondWithResult(_0x566cd0,null))[_0xb3c3('0x4d')](handleError(_0x566cd0,null));};exports[_0xb3c3('0x4e')]=function(_0x47a85c,_0x57c589){return db['FaxQueue'][_0xb3c3('0x4e')](_0x47a85c[_0xb3c3('0x4f')],{})[_0xb3c3('0x2d')](function(_0xc982d0){var _0x592416=_0x47a85c[_0xb3c3('0x50')][_0xb3c3('0x2e')]({'plain':!![]});if(!_0x592416)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x592416[_0xb3c3('0x51')]===_0xb3c3('0x50')){var _0x4b5a53=_0xc982d0['get']({'plain':!![]});var _0x507926='FaxQueues';return db[_0xb3c3('0x52')]['find']({'where':{'name':_0x507926,'userProfileId':_0x592416[_0xb3c3('0x53')]},'raw':!![]})[_0xb3c3('0x2d')](function(_0x17e19c){if(_0x17e19c&&_0x17e19c[_0xb3c3('0x54')]===0x0){return db[_0xb3c3('0x55')][_0xb3c3('0x4e')]({'name':_0x4b5a53[_0xb3c3('0x33')],'resourceId':_0x4b5a53['id'],'type':_0x17e19c[_0xb3c3('0x33')],'sectionId':_0x17e19c['id']},{})[_0xb3c3('0x2d')](function(){return _0xc982d0;});}else{return _0xc982d0;}})['catch'](function(_0x2c437b){logger['error'](_0xb3c3('0x56'),_0x2c437b);throw _0x2c437b;});}return _0xc982d0;})[_0xb3c3('0x2d')](respondWithResult(_0x57c589,0xc9))[_0xb3c3('0x4d')](handleError(_0x57c589,null));};exports[_0xb3c3('0x2c')]=function(_0x11141f,_0x36894b){if(_0x11141f[_0xb3c3('0x4f')]['id']){delete _0x11141f[_0xb3c3('0x4f')]['id'];}return db[_0xb3c3('0x36')][_0xb3c3('0x57')]({'where':{'id':_0x11141f[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](handleEntityNotFound(_0x36894b,null))[_0xb3c3('0x2d')](saveUpdates(_0x11141f[_0xb3c3('0x4f')],null))['then'](respondWithResult(_0x36894b,null))['catch'](handleError(_0x36894b,null));};exports['destroy']=function(_0x3d30d8,_0x3b19bc){return db['FaxQueue'][_0xb3c3('0x57')]({'where':{'id':_0x3d30d8[_0xb3c3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3b19bc,null))[_0xb3c3('0x2d')](removeEntity(_0x3b19bc,null))[_0xb3c3('0x4d')](handleError(_0x3b19bc,null));};exports[_0xb3c3('0x58')]=function(_0x59d3e9,_0x1bc431){return db[_0xb3c3('0x36')][_0xb3c3('0x58')]()['then'](respondWithResult(_0x1bc431,null))[_0xb3c3('0x4d')](handleError(_0x1bc431,null));};exports[_0xb3c3('0x59')]=function(_0x287489,_0x8d1410,_0x1b47bf){var _0x4464fe={'raw':!![],'where':{}},_0x1a3f47={},_0x49e36f;return db['FaxQueue'][_0xb3c3('0x5a')]({'where':{'id':_0x287489[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](handleEntityNotFound(_0x8d1410,null))['then'](function(_0x3b7488){if(_0x3b7488){_0x49e36f=_0x3b7488['get']({'plain':!![]});_0x1a3f47[_0xb3c3('0x3c')]=_[_0xb3c3('0x39')](db['UserFaxQueue'][_0xb3c3('0x5b')]);_0x1a3f47[_0xb3c3('0x38')]=_[_0xb3c3('0x39')](_0x287489['query']);_0x1a3f47['filters']=_[_0xb3c3('0x3b')](_0x1a3f47[_0xb3c3('0x3c')],_0x1a3f47['query']);_0x4464fe[_0xb3c3('0x3d')]=_[_0xb3c3('0x3b')](_0x1a3f47[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x287489['query'][_0xb3c3('0x3e')]));_0x4464fe[_0xb3c3('0x3d')]=_0x4464fe[_0xb3c3('0x3d')][_0xb3c3('0x3f')]?_0x4464fe[_0xb3c3('0x3d')]:_0x1a3f47['model'];if(!_0x287489[_0xb3c3('0x38')][_0xb3c3('0x40')]('nolimit')){_0x4464fe['limit']=qs[_0xb3c3('0x26')](_0x287489[_0xb3c3('0x38')][_0xb3c3('0x26')]);_0x4464fe[_0xb3c3('0x24')]=qs['offset'](_0x287489['query'][_0xb3c3('0x24')]);}_0x4464fe['order']=qs['sort'](_0x287489[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x4464fe[_0xb3c3('0x44')]=qs[_0xb3c3('0x3a')](_[_0xb3c3('0x5c')](_0x287489['query'],_0x1a3f47[_0xb3c3('0x3a')]));_0x4464fe[_0xb3c3('0x44')][_0xb3c3('0x5d')]=_0x3b7488['id'];if(_0x287489[_0xb3c3('0x38')]['filter']){_0x4464fe['where']=_[_0xb3c3('0x46')](_0x4464fe[_0xb3c3('0x44')],{'$or':_[_0xb3c3('0x35')](_0x4464fe[_0xb3c3('0x3d')],function(_0x255d88){var _0x1a329a={};_0x1a329a[_0x255d88]={'$like':'%'+_0x287489[_0xb3c3('0x38')][_0xb3c3('0x45')]+'%'};return _0x1a329a;})});}_0x4464fe=_['merge']({},_0x4464fe,_0x287489[_0xb3c3('0x4c')]);return db[_0xb3c3('0x5e')]['findAll'](_0x4464fe);}})['then'](function(_0x56cdc4){if(_0x56cdc4){return db[_0xb3c3('0x5f')][_0xb3c3('0x60')]({'where':{'id':_['map'](_0x56cdc4,_0xb3c3('0x61')),'role':_0xb3c3('0x62')},'attributes':['id',_0xb3c3('0x33'),'faxPause',_0xb3c3('0x63'),_0xb3c3('0x64')]});}})['then'](function(_0x556a6e){if(_0x556a6e){return{'count':_0x556a6e[_0xb3c3('0x27')],'rows':_['map'](_0x556a6e[_0xb3c3('0x4a')],function(_0x11c786){return{'membername':_0x11c786[_0xb3c3('0x33')],'UserId':_0x11c786['id'],'queue_name':_0x49e36f[_0xb3c3('0x33')],'FaxQueueId':_0x49e36f['id'],'interface':util[_0xb3c3('0x65')](_0xb3c3('0x66'),_0xb3c3('0x67'),_0x11c786['name']),'penalty':0x0,'paused':_0x11c786[_0xb3c3('0x68')],'createdAt':_0x11c786[_0xb3c3('0x64')],'updatedAt':_0x11c786[_0xb3c3('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x8d1410,_0x4464fe))['catch'](handleError(_0x8d1410,null));};exports['getTeams']=function(_0x3ab0d6,_0x3bb8a0,_0x5d752b){var _0x3d12a2={};var _0x4f6e8b={};var _0x2545cd;var _0xd45e2e;return db[_0xb3c3('0x36')][_0xb3c3('0x5a')]({'where':{'id':_0x3ab0d6[_0xb3c3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3bb8a0,null))[_0xb3c3('0x2d')](function(_0x3d1e33){if(_0x3d1e33){_0x2545cd=_0x3d1e33;_0x4f6e8b['model']=_[_0xb3c3('0x39')](db[_0xb3c3('0x69')][_0xb3c3('0x5b')]);_0x4f6e8b['query']=_[_0xb3c3('0x39')](_0x3ab0d6['query']);_0x4f6e8b['filters']=_[_0xb3c3('0x3b')](_0x4f6e8b[_0xb3c3('0x3c')],_0x4f6e8b['query']);_0x3d12a2['attributes']=_[_0xb3c3('0x3b')](_0x4f6e8b[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x3ab0d6[_0xb3c3('0x38')]['fields']));_0x3d12a2[_0xb3c3('0x3d')]=_0x3d12a2[_0xb3c3('0x3d')]['length']?_0x3d12a2[_0xb3c3('0x3d')]:_0x4f6e8b[_0xb3c3('0x3c')];_0x3d12a2[_0xb3c3('0x42')]=qs[_0xb3c3('0x43')](_0x3ab0d6[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x3d12a2['where']=qs[_0xb3c3('0x3a')](_[_0xb3c3('0x5c')](_0x3ab0d6[_0xb3c3('0x38')],_0x4f6e8b[_0xb3c3('0x3a')]));if(_0x3ab0d6[_0xb3c3('0x38')]['filter']){_0x3d12a2[_0xb3c3('0x44')]=_[_0xb3c3('0x46')](_0x3d12a2[_0xb3c3('0x44')],{'$or':_[_0xb3c3('0x35')](_0x3d12a2[_0xb3c3('0x3d')],function(_0x11bb80){var _0x3e7394={};_0x3e7394[_0x11bb80]={'$like':'%'+_0x3ab0d6[_0xb3c3('0x38')]['filter']+'%'};return _0x3e7394;})});}_0x3d12a2=_[_0xb3c3('0x46')]({},_0x3d12a2,_0x3ab0d6[_0xb3c3('0x4c')]);return _0x2545cd[_0xb3c3('0x6a')](_0x3d12a2);}})[_0xb3c3('0x2d')](function(_0x907061){if(_0x907061){_0xd45e2e=_0x907061[_0xb3c3('0x3f')];if(!_0x3ab0d6[_0xb3c3('0x38')][_0xb3c3('0x40')](_0xb3c3('0x41'))){_0x3d12a2[_0xb3c3('0x26')]=qs[_0xb3c3('0x26')](_0x3ab0d6[_0xb3c3('0x38')]['limit']);_0x3d12a2['offset']=qs[_0xb3c3('0x24')](_0x3ab0d6['query'][_0xb3c3('0x24')]);}return _0x2545cd[_0xb3c3('0x6a')](_0x3d12a2);}})[_0xb3c3('0x2d')](function(_0x5aabcf){if(_0x5aabcf){return _0x5aabcf?{'count':_0xd45e2e,'rows':_0x5aabcf}:null;}})[_0xb3c3('0x2d')](respondWithResult(_0x3bb8a0,null))[_0xb3c3('0x4d')](handleError(_0x3bb8a0,null));};exports[_0xb3c3('0x6b')]=function(_0x47c9a5,_0x2314d4,_0x33d610){var _0x49f667=_0x47c9a5[_0xb3c3('0x4f')][_0xb3c3('0x6c')];return db[_0xb3c3('0x69')][_0xb3c3('0x6d')]({'where':{'id':_0x49f667},'attributes':['id'],'include':[{'model':db[_0xb3c3('0x5f')],'as':_0xb3c3('0x6e'),'attributes':['id',_0xb3c3('0x33'),'online','voicePause',_0xb3c3('0x6f')],'raw':!![]}]})[_0xb3c3('0x2d')](function(_0x20d95a){if(_0x20d95a){var _0x2b6bc5=_[_0xb3c3('0x70')](_0x20d95a,function(_0x34b8fd){var _0x3a83c1=_0x34b8fd['get']({'plain':!![]});return _0x3a83c1[_0xb3c3('0x6e')];});return db[_0xb3c3('0x36')]['find']({'where':{'id':_0x47c9a5[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](function(_0x14b507){return db[_0xb3c3('0x71')][_0xb3c3('0x72')](function(_0x1e2c2a){return _0x14b507[_0xb3c3('0x6b')](_0x49f667,{'transaction':_0x1e2c2a})[_0xb3c3('0x2d')](function(){return BPromise[_0xb3c3('0x73')](_0x2b6bc5,function(_0x119e51){return db['UserFaxQueue'][_0xb3c3('0x74')]({'where':{'UserId':_0x119e51['id'],'FaxQueueId':_0x47c9a5[_0xb3c3('0x4b')]['id']},'transaction':_0x1e2c2a});});})[_0xb3c3('0x2d')](function(){_0x2b6bc5['forEach'](function(_0x1e7ed5){socket[_0xb3c3('0x75')]('userFaxQueue:save',{'UserId':_0x1e7ed5['id'],'FaxQueueId':_0x14b507['id']});});});});});}})['then'](respondWithStatusCode(_0x2314d4,null))[_0xb3c3('0x4d')](handleError(_0x2314d4,null));};exports[_0xb3c3('0x76')]=function(_0x28cfca,_0x413b94,_0x1ddf12){return db[_0xb3c3('0x69')]['findAll']({'where':{'id':_0x28cfca[_0xb3c3('0x38')][_0xb3c3('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xb3c3('0x5f')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x413b94,null))['then'](function(_0x3699ff){var _0x3ad4ce=_['map'](_0x3699ff,'id');var _0x4bf22b=[];var _0x5658c4=[];var _0x3d2f7f=squel[_0xb3c3('0x77')]();_0x3d2f7f[_0xb3c3('0x78')]('tq.TeamId')[_0xb3c3('0x79')](_0xb3c3('0x7a'),'tq')['join'](_0xb3c3('0x7b'),'ut',_0xb3c3('0x7c'))[_0xb3c3('0x44')]('FaxQueueId\x20=\x20?',_0x28cfca[_0xb3c3('0x4b')]['id']);for(var _0x16c5dd=0x0;_0x16c5dd<_0x3699ff[_0xb3c3('0x3f')];_0x16c5dd+=0x1){let _0x1f0384=_0x3699ff[_0x16c5dd];for(var _0x15d93b=0x0;_0x15d93b<_0x1f0384[_0xb3c3('0x6e')][_0xb3c3('0x3f')];_0x15d93b+=0x1){let _0x57e8e5=_0x1f0384[_0xb3c3('0x6e')][_0x15d93b];var _0x472b35=_0x3d2f7f[_0xb3c3('0x7d')]();_0x472b35[_0xb3c3('0x44')]('ut.UserId\x20=\x20?',_0x57e8e5['id']);_0x5658c4[_0xb3c3('0x7e')](db[_0xb3c3('0x71')][_0xb3c3('0x38')](_0x472b35[_0xb3c3('0x7f')](),{'type':db['sequelize']['QueryTypes'][_0xb3c3('0x80')]})[_0xb3c3('0x2d')](function(_0x38656f){if(_0x38656f[_0xb3c3('0x3f')]===0x1){return _0x57e8e5['id'];}else{var _0x4c19ba=_[_0xb3c3('0x81')](_[_0xb3c3('0x35')](_0x38656f,'TeamId'),function(_0x549013){return _[_0xb3c3('0x82')](_0x3ad4ce,_0x549013);});if(_0x4c19ba){return _0x57e8e5['id'];}}}));}}return BPromise[_0xb3c3('0x83')](_0x5658c4)[_0xb3c3('0x2d')](function(_0x2417d0){_0x4bf22b=_(_0x4bf22b)['union'](_0x2417d0)[_0xb3c3('0x84')]()[_0xb3c3('0x85')]();return db['FaxQueue'][_0xb3c3('0x57')]({'where':{'id':_0x28cfca['params']['id']}})[_0xb3c3('0x2d')](function(_0x454006){return db[_0xb3c3('0x71')][_0xb3c3('0x72')](function(_0x22c82f){return _0x454006[_0xb3c3('0x76')](_0x28cfca[_0xb3c3('0x38')][_0xb3c3('0x6c')],{'transaction':_0x22c82f})[_0xb3c3('0x2d')](function(){if(!_[_0xb3c3('0x86')](_0x4bf22b)){return _0x454006[_0xb3c3('0x87')](_0x4bf22b,{'transaction':_0x22c82f});}})[_0xb3c3('0x2d')](function(){_0x4bf22b['forEach'](function(_0x3b5e5b){socket[_0xb3c3('0x75')](_0xb3c3('0x88'),{'UserId':_0x3b5e5b,'FaxQueueId':_0x454006['id']});});});});});});})[_0xb3c3('0x2d')](respondWithStatusCode(_0x413b94,null))['catch'](handleError(_0x413b94,null));};exports[_0xb3c3('0x89')]=function(_0x3dbf79,_0x4aa402,_0x44258a){return db[_0xb3c3('0x36')][_0xb3c3('0x57')]({'where':{'id':_0x3dbf79['params']['id']}})['then'](handleEntityNotFound(_0x4aa402,null))['then'](function(_0x211310){if(_0x211310){return _0x211310[_0xb3c3('0x89')](_0x3dbf79[_0xb3c3('0x4f')]['ids'],_[_0xb3c3('0x8a')](_0x3dbf79[_0xb3c3('0x4f')],[_0xb3c3('0x6c'),'id'])||{})[_0xb3c3('0x8b')](function(_0xcc578){for(var _0x46d9cd=0x0;_0x46d9cd<_0x3dbf79[_0xb3c3('0x4f')][_0xb3c3('0x6c')][_0xb3c3('0x3f')];_0x46d9cd+=0x1){socket[_0xb3c3('0x75')](_0xb3c3('0x8c'),{'UserId':Number(_0x3dbf79['body'][_0xb3c3('0x6c')][_0x46d9cd]),'FaxQueueId':Number(_0x3dbf79[_0xb3c3('0x4b')]['id'])});}return _0xcc578;});}})[_0xb3c3('0x2d')](respondWithResult(_0x4aa402,null))[_0xb3c3('0x4d')](handleError(_0x4aa402,null));};exports[_0xb3c3('0x87')]=function(_0x437cad,_0x19494c,_0x5410bf){return db[_0xb3c3('0x36')]['find']({'where':{'id':_0x437cad[_0xb3c3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x19494c,null))[_0xb3c3('0x2d')](function(_0x12b7c6){if(_0x12b7c6){return _0x12b7c6[_0xb3c3('0x87')](_0x437cad[_0xb3c3('0x38')]['ids'])[_0xb3c3('0x2d')](function(){if(_[_0xb3c3('0x8d')](_0x437cad[_0xb3c3('0x38')]['ids'])){for(var _0x1dfbe2=0x0;_0x1dfbe2<_0x437cad[_0xb3c3('0x38')]['ids'][_0xb3c3('0x3f')];_0x1dfbe2+=0x1){socket['emit'](_0xb3c3('0x88'),{'UserId':Number(_0x437cad['query'][_0xb3c3('0x6c')][_0x1dfbe2]),'FaxQueueId':Number(_0x437cad[_0xb3c3('0x4b')]['id'])});}}else{socket['emit'](_0xb3c3('0x88'),{'UserId':Number(_0x437cad[_0xb3c3('0x38')]['ids']),'FaxQueueId':Number(_0x437cad[_0xb3c3('0x4b')]['id'])});}});}})[_0xb3c3('0x2d')](respondWithStatusCode(_0x19494c,null))[_0xb3c3('0x4d')](handleError(_0x19494c,null));};exports[_0xb3c3('0x8e')]=function(_0x1f9f25,_0x541696,_0x51564c){var _0x4273af={};var _0x597a07={};var _0x1a9481;var _0x481232;return db['FaxQueue'][_0xb3c3('0x5a')]({'where':{'id':_0x1f9f25[_0xb3c3('0x4b')]['id']}})[_0xb3c3('0x2d')](handleEntityNotFound(_0x541696,null))[_0xb3c3('0x2d')](function(_0xa4e097){if(_0xa4e097){_0x1a9481=_0xa4e097;_0x597a07[_0xb3c3('0x3c')]=_[_0xb3c3('0x39')](db[_0xb3c3('0x5f')][_0xb3c3('0x5b')]);_0x597a07[_0xb3c3('0x38')]=_[_0xb3c3('0x39')](_0x1f9f25[_0xb3c3('0x38')]);_0x597a07[_0xb3c3('0x3a')]=_[_0xb3c3('0x3b')](_0x597a07['model'],_0x597a07[_0xb3c3('0x38')]);_0x4273af[_0xb3c3('0x3d')]=_[_0xb3c3('0x3b')](_0x597a07[_0xb3c3('0x3c')],qs[_0xb3c3('0x3e')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x3e')]));_0x4273af[_0xb3c3('0x3d')]=_0x4273af[_0xb3c3('0x3d')]['length']?_0x4273af[_0xb3c3('0x3d')]:_0x597a07[_0xb3c3('0x3c')];_0x4273af['order']=qs[_0xb3c3('0x43')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x43')]);_0x4273af[_0xb3c3('0x44')]=qs[_0xb3c3('0x3a')](_[_0xb3c3('0x5c')](_0x1f9f25[_0xb3c3('0x38')],_0x597a07[_0xb3c3('0x3a')]));if(_0x1f9f25[_0xb3c3('0x38')]['filter']){_0x4273af[_0xb3c3('0x44')]=_['merge'](_0x4273af[_0xb3c3('0x44')],{'$or':_['map'](_0x4273af[_0xb3c3('0x3d')],function(_0x5eb4d1){var _0x219633={};_0x219633[_0x5eb4d1]={'$like':'%'+_0x1f9f25['query'][_0xb3c3('0x45')]+'%'};return _0x219633;})});}_0x4273af=_[_0xb3c3('0x46')]({},_0x4273af,_0x1f9f25[_0xb3c3('0x4c')]);return _0x1a9481[_0xb3c3('0x8e')](_0x4273af);}})[_0xb3c3('0x2d')](function(_0x4f0847){if(_0x4f0847){_0x481232=_0x4f0847[_0xb3c3('0x3f')];if(!_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x40')]('nolimit')){_0x4273af['limit']=qs[_0xb3c3('0x26')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x26')]);_0x4273af[_0xb3c3('0x24')]=qs[_0xb3c3('0x24')](_0x1f9f25[_0xb3c3('0x38')][_0xb3c3('0x24')]);}return _0x1a9481['getAgents'](_0x4273af);}})[_0xb3c3('0x2d')](function(_0x5dbe61){if(_0x5dbe61){return _0x5dbe61?{'count':_0x481232,'rows':_0x5dbe61}:null;}})[_0xb3c3('0x2d')](respondWithResult(_0x541696,null))['catch'](handleError(_0x541696,null));};
\ No newline at end of file
index f09004f..db11b45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9504=['emit','hasOwnProperty','exports','../../mysqldb','FaxQueue','setMaxListeners','update','remove'];(function(_0x7c10f3,_0x4447fe){var _0x51d432=function(_0x3e8c68){while(--_0x3e8c68){_0x7c10f3['push'](_0x7c10f3['shift']());}};_0x51d432(++_0x4447fe);}(_0x9504,0xf3));var _0x4950=function(_0x190db2,_0x352975){_0x190db2=_0x190db2-0x0;var _0x42b067=_0x9504[_0x190db2];return _0x42b067;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x4950('0x0'))['db'][_0x4950('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x4950('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x4950('0x3'),'afterDestroy':_0x4950('0x4')};function emitEvent(_0x264ac7){return function(_0x1103ca,_0x4342d0,_0x37bc84){FaxQueueEvents['emit'](_0x264ac7+':'+_0x1103ca['id'],_0x1103ca);FaxQueueEvents[_0x4950('0x5')](_0x264ac7,_0x1103ca);_0x37bc84(null);};}for(var e in events){if(events[_0x4950('0x6')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0x4950('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0x0a01=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x1c4f54,_0x3225e2){var _0x5a1284=function(_0x5cbf2c){while(--_0x5cbf2c){_0x1c4f54['push'](_0x1c4f54['shift']());}};_0x5a1284(++_0x3225e2);}(_0x0a01,0xbd));var _0x10a0=function(_0x240322,_0x59912b){_0x240322=_0x240322-0x0;var _0x41997b=_0x0a01[_0x240322];return _0x41997b;};'use strict';var EventEmitter=require(_0x10a0('0x0'));var FaxQueue=require(_0x10a0('0x1'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x10a0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x10a0('0x3')};function emitEvent(_0x51ac15){return function(_0x2de3a7,_0x4d50f0,_0xfd2de0){FaxQueueEvents['emit'](_0x51ac15+':'+_0x2de3a7['id'],_0x2de3a7);FaxQueueEvents[_0x10a0('0x4')](_0x51ac15,_0x2de3a7);_0xfd2de0(null);};}for(var e in events){if(events[_0x10a0('0x5')](e)){var event=events[e];FaxQueue[_0x10a0('0x6')](e,emitEvent(event));}}module[_0x10a0('0x7')]=FaxQueueEvents;
\ No newline at end of file
index d9b61c7..29ae8f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0765=['rimraf','../../config/environment','./faxQueue.attributes','exports','define','FaxQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x44ace6,_0x448496){var _0x1b5359=function(_0x149c04){while(--_0x149c04){_0x44ace6['push'](_0x44ace6['shift']());}};_0x1b5359(++_0x448496);}(_0x0765,0x180));var _0x5076=function(_0x125d74,_0x5247c0){_0x125d74=_0x125d74-0x0;var _0x9389e9=_0x0765[_0x125d74];return _0x9389e9;};'use strict';var _=require(_0x5076('0x0'));var util=require(_0x5076('0x1'));var logger=require(_0x5076('0x2'))(_0x5076('0x3'));var moment=require(_0x5076('0x4'));var BPromise=require(_0x5076('0x5'));var rp=require(_0x5076('0x6'));var fs=require('fs');var path=require(_0x5076('0x7'));var rimraf=require(_0x5076('0x8'));var config=require(_0x5076('0x9'));var attributes=require(_0x5076('0xa'));module[_0x5076('0xb')]=function(_0x11b4ab,_0x2a84e4){return _0x11b4ab[_0x5076('0xc')](_0x5076('0xd'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xec7d=['util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','fax_queues','lodash'];(function(_0x281c45,_0x23d341){var _0x4d5196=function(_0x544b9e){while(--_0x544b9e){_0x281c45['push'](_0x281c45['shift']());}};_0x4d5196(++_0x23d341);}(_0xec7d,0x143));var _0xdec7=function(_0x1757f2,_0x1b09fa){_0x1757f2=_0x1757f2-0x0;var _0x5e7212=_0xec7d[_0x1757f2];return _0x5e7212;};'use strict';var _=require(_0xdec7('0x0'));var util=require(_0xdec7('0x1'));var logger=require(_0xdec7('0x2'))('api');var moment=require(_0xdec7('0x3'));var BPromise=require('bluebird');var rp=require(_0xdec7('0x4'));var fs=require('fs');var path=require(_0xdec7('0x5'));var rimraf=require(_0xdec7('0x6'));var config=require(_0xdec7('0x7'));var attributes=require(_0xdec7('0x8'));module[_0xdec7('0x9')]=function(_0x5f5713,_0x12224a){return _0x5f5713['define'](_0xdec7('0xa'),attributes,{'tableName':_0xdec7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 604eb04..5f26cb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1ca=['localhost','socket.io-emitter','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','result','catch','FaxQueue','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxQueue','ShowFaxQueue','find','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xe1ca,0x164));var _0xae1c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe1ca[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xae1c('0x0'));var util=require('util');var moment=require(_0xae1c('0x1'));var BPromise=require(_0xae1c('0x2'));var rs=require(_0xae1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xae1c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xae1c('0x5'))(_0xae1c('0x6'));var config=require(_0xae1c('0x7'));var jayson=require(_0xae1c('0x8'));var client=jayson[_0xae1c('0x9')][_0xae1c('0xa')]({'port':0x232a});config[_0xae1c('0xb')]=_[_0xae1c('0xc')](config[_0xae1c('0xb')],{'host':_0xae1c('0xd'),'port':0x18eb});var socket=require(_0xae1c('0xe'))(new Redis(config[_0xae1c('0xb')]));require(_0xae1c('0xf'))['register'](socket);function respondWithRpcPromise(_0x4892d6,_0x13f826,_0x155321){return new BPromise(function(_0x34b16b,_0x537469){return client[_0xae1c('0x10')](_0x4892d6,_0x155321)[_0xae1c('0x11')](function(_0x3f0d52){logger[_0xae1c('0x12')]('FaxQueue,\x20%s,\x20%s',_0x13f826,'request\x20sent');logger['debug'](_0xae1c('0x13'),_0x13f826,_0xae1c('0x14'),JSON[_0xae1c('0x15')](_0x3f0d52));if(_0x3f0d52['error']){if(_0x3f0d52[_0xae1c('0x16')][_0xae1c('0x17')]===0x1f4){logger[_0xae1c('0x16')]('FaxQueue,\x20%s,\x20%s',_0x13f826,_0x3f0d52['error'][_0xae1c('0x18')]);return _0x537469(_0x3f0d52[_0xae1c('0x16')][_0xae1c('0x18')]);}logger['error'](_0xae1c('0x19'),_0x13f826,_0x3f0d52[_0xae1c('0x16')][_0xae1c('0x18')]);return _0x34b16b(_0x3f0d52[_0xae1c('0x16')][_0xae1c('0x18')]);}else{logger[_0xae1c('0x12')](_0xae1c('0x19'),_0x13f826,'request\x20sent');_0x34b16b(_0x3f0d52[_0xae1c('0x1a')][_0xae1c('0x18')]);}})[_0xae1c('0x1b')](function(_0x43472a){logger['error'](_0xae1c('0x19'),_0x13f826,_0x43472a);_0x537469(_0x43472a);});});}exports['GetFaxQueue']=function(_0x42798f){var _0x2ddfa9=this;return new Promise(function(_0x12052c,_0x354381){return db[_0xae1c('0x1c')][_0xae1c('0x1d')]({'raw':_0x42798f['options']?_0x42798f[_0xae1c('0x1e')][_0xae1c('0x1f')]===undefined?!![]:![]:!![],'where':_0x42798f[_0xae1c('0x1e')]?_0x42798f[_0xae1c('0x1e')][_0xae1c('0x20')]||null:null,'attributes':_0x42798f[_0xae1c('0x1e')]?_0x42798f[_0xae1c('0x1e')][_0xae1c('0x21')]||null:null,'limit':_0x42798f[_0xae1c('0x1e')]?_0x42798f[_0xae1c('0x1e')][_0xae1c('0x22')]||null:null,'include':_0x42798f[_0xae1c('0x1e')]?_0x42798f[_0xae1c('0x1e')][_0xae1c('0x23')]?_[_0xae1c('0x24')](_0x42798f[_0xae1c('0x1e')]['include'],function(_0x4209c7){return{'model':db[_0x4209c7[_0xae1c('0x25')]],'as':_0x4209c7['as'],'attributes':_0x4209c7['attributes'],'include':_0x4209c7['include']?_['map'](_0x4209c7[_0xae1c('0x23')],function(_0x57d73f){return{'model':db[_0x57d73f[_0xae1c('0x25')]],'as':_0x57d73f['as'],'attributes':_0x57d73f[_0xae1c('0x21')],'include':_0x57d73f['include']?_[_0xae1c('0x24')](_0x57d73f['include'],function(_0x1430a0){return{'model':db[_0x1430a0['model']],'as':_0x1430a0['as'],'attributes':_0x1430a0[_0xae1c('0x21')]};}):[]};}):[]};}):[]:[]})[_0xae1c('0x11')](function(_0x20b613){logger[_0xae1c('0x12')]('GetFaxQueue',_0x42798f);logger['debug']('GetFaxQueue',_0x42798f,JSON[_0xae1c('0x15')](_0x20b613));_0x12052c(_0x20b613);})[_0xae1c('0x1b')](function(_0x3ab74e){logger[_0xae1c('0x16')](_0xae1c('0x26'),_0x3ab74e[_0xae1c('0x18')],_0x42798f);_0x354381(_0x2ddfa9[_0xae1c('0x16')](0x1f4,_0x3ab74e[_0xae1c('0x18')]));});});};exports[_0xae1c('0x27')]=function(_0x28a30b){var _0x1b24b7=this;return new Promise(function(_0x3b72c5,_0x44e42b){return db['FaxQueue'][_0xae1c('0x28')]({'raw':_0x28a30b[_0xae1c('0x1e')]?_0x28a30b[_0xae1c('0x1e')][_0xae1c('0x1f')]===undefined?!![]:![]:!![],'where':_0x28a30b[_0xae1c('0x1e')]?_0x28a30b[_0xae1c('0x1e')]['where']||null:null,'attributes':_0x28a30b[_0xae1c('0x1e')]?_0x28a30b[_0xae1c('0x1e')]['attributes']||null:null,'include':_0x28a30b['options']?_0x28a30b[_0xae1c('0x1e')][_0xae1c('0x23')]?_['map'](_0x28a30b[_0xae1c('0x1e')][_0xae1c('0x23')],function(_0x36d531){return{'model':db[_0x36d531[_0xae1c('0x25')]],'as':_0x36d531['as'],'attributes':_0x36d531[_0xae1c('0x21')],'include':_0x36d531[_0xae1c('0x23')]?_[_0xae1c('0x24')](_0x36d531[_0xae1c('0x23')],function(_0x4e4ae9){return{'model':db[_0x4e4ae9[_0xae1c('0x25')]],'as':_0x4e4ae9['as'],'attributes':_0x4e4ae9[_0xae1c('0x21')],'include':_0x4e4ae9[_0xae1c('0x23')]?_['map'](_0x4e4ae9['include'],function(_0x16cec5){return{'model':db[_0x16cec5[_0xae1c('0x25')]],'as':_0x16cec5['as'],'attributes':_0x16cec5[_0xae1c('0x21')]};}):[]};}):[]};}):[]:[]})[_0xae1c('0x11')](function(_0x34dfed){logger['info']('ShowFaxQueue',_0x28a30b);logger['debug'](_0xae1c('0x27'),_0x28a30b,JSON['stringify'](_0x34dfed));_0x3b72c5(_0x34dfed);})[_0xae1c('0x1b')](function(_0x1a9601){logger['error'](_0xae1c('0x27'),_0x1a9601['message'],_0x28a30b);_0x44e42b(_0x1b24b7[_0xae1c('0x16')](0x1f4,_0x1a9601[_0xae1c('0x18')]));});});};
\ No newline at end of file
+var _0xe911=['include','model','map','GetFaxQueue','find','ShowFaxQueue','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','then','info','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxQueue,\x20%s,\x20%s','request\x20sent','result','catch','FaxQueue','findAll','options','raw','where','attributes'];(function(_0x507ccd,_0x54afc9){var _0x36887d=function(_0x5f3a53){while(--_0x5f3a53){_0x507ccd['push'](_0x507ccd['shift']());}};_0x36887d(++_0x54afc9);}(_0xe911,0x146));var _0x1e91=function(_0x46d4ba,_0x1968e2){_0x46d4ba=_0x46d4ba-0x0;var _0x26751b=_0xe911[_0x46d4ba];return _0x26751b;};'use strict';var _=require('lodash');var util=require(_0x1e91('0x0'));var moment=require(_0x1e91('0x1'));var BPromise=require(_0x1e91('0x2'));var rs=require(_0x1e91('0x3'));var fs=require('fs');var Redis=require(_0x1e91('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1e91('0x5'));var logger=require(_0x1e91('0x6'))(_0x1e91('0x7'));var config=require('../../config/environment');var jayson=require(_0x1e91('0x8'));var client=jayson[_0x1e91('0x9')][_0x1e91('0xa')]({'port':0x232a});config[_0x1e91('0xb')]=_[_0x1e91('0xc')](config['redis'],{'host':_0x1e91('0xd'),'port':0x18eb});var socket=require(_0x1e91('0xe'))(new Redis(config['redis']));require(_0x1e91('0xf'))['register'](socket);function respondWithRpcPromise(_0x336756,_0x250de4,_0x4a4e54){return new BPromise(function(_0x4109c1,_0x22d66c){return client['request'](_0x336756,_0x4a4e54)[_0x1e91('0x10')](function(_0x57a682){logger[_0x1e91('0x11')]('FaxQueue,\x20%s,\x20%s',_0x250de4,'request\x20sent');logger[_0x1e91('0x12')](_0x1e91('0x13'),_0x250de4,'request\x20sent',JSON[_0x1e91('0x14')](_0x57a682));if(_0x57a682['error']){if(_0x57a682[_0x1e91('0x15')][_0x1e91('0x16')]===0x1f4){logger[_0x1e91('0x15')]('FaxQueue,\x20%s,\x20%s',_0x250de4,_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);return _0x22d66c(_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);}logger['error'](_0x1e91('0x18'),_0x250de4,_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);return _0x4109c1(_0x57a682[_0x1e91('0x15')][_0x1e91('0x17')]);}else{logger[_0x1e91('0x11')](_0x1e91('0x18'),_0x250de4,_0x1e91('0x19'));_0x4109c1(_0x57a682[_0x1e91('0x1a')][_0x1e91('0x17')]);}})[_0x1e91('0x1b')](function(_0x203ecf){logger[_0x1e91('0x15')](_0x1e91('0x18'),_0x250de4,_0x203ecf);_0x22d66c(_0x203ecf);});});}exports['GetFaxQueue']=function(_0xbc43aa){var _0x3c11a7=this;return new Promise(function(_0x69e012,_0x5dd5b0){return db[_0x1e91('0x1c')][_0x1e91('0x1d')]({'raw':_0xbc43aa['options']?_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x1f')]===undefined?!![]:![]:!![],'where':_0xbc43aa['options']?_0xbc43aa['options'][_0x1e91('0x20')]||null:null,'attributes':_0xbc43aa['options']?_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x21')]||null:null,'limit':_0xbc43aa[_0x1e91('0x1e')]?_0xbc43aa['options']['limit']||null:null,'include':_0xbc43aa[_0x1e91('0x1e')]?_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x22')]?_['map'](_0xbc43aa[_0x1e91('0x1e')][_0x1e91('0x22')],function(_0x43d23f){return{'model':db[_0x43d23f[_0x1e91('0x23')]],'as':_0x43d23f['as'],'attributes':_0x43d23f[_0x1e91('0x21')],'include':_0x43d23f['include']?_[_0x1e91('0x24')](_0x43d23f['include'],function(_0x2f00da){return{'model':db[_0x2f00da['model']],'as':_0x2f00da['as'],'attributes':_0x2f00da[_0x1e91('0x21')],'include':_0x2f00da[_0x1e91('0x22')]?_[_0x1e91('0x24')](_0x2f00da[_0x1e91('0x22')],function(_0xd6e8b8){return{'model':db[_0xd6e8b8[_0x1e91('0x23')]],'as':_0xd6e8b8['as'],'attributes':_0xd6e8b8[_0x1e91('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1e91('0x10')](function(_0xcebdef){logger[_0x1e91('0x11')](_0x1e91('0x25'),_0xbc43aa);logger['debug'](_0x1e91('0x25'),_0xbc43aa,JSON[_0x1e91('0x14')](_0xcebdef));_0x69e012(_0xcebdef);})[_0x1e91('0x1b')](function(_0xd4f16d){logger[_0x1e91('0x15')](_0x1e91('0x25'),_0xd4f16d[_0x1e91('0x17')],_0xbc43aa);_0x5dd5b0(_0x3c11a7[_0x1e91('0x15')](0x1f4,_0xd4f16d[_0x1e91('0x17')]));});});};exports['ShowFaxQueue']=function(_0x5d6fd8){var _0x2388b4=this;return new Promise(function(_0xb78b0b,_0x4f9686){return db[_0x1e91('0x1c')][_0x1e91('0x26')]({'raw':_0x5d6fd8[_0x1e91('0x1e')]?_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x1f')]===undefined?!![]:![]:!![],'where':_0x5d6fd8['options']?_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x20')]||null:null,'attributes':_0x5d6fd8[_0x1e91('0x1e')]?_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x21')]||null:null,'include':_0x5d6fd8['options']?_0x5d6fd8['options']['include']?_[_0x1e91('0x24')](_0x5d6fd8[_0x1e91('0x1e')][_0x1e91('0x22')],function(_0x48dc3d){return{'model':db[_0x48dc3d[_0x1e91('0x23')]],'as':_0x48dc3d['as'],'attributes':_0x48dc3d[_0x1e91('0x21')],'include':_0x48dc3d['include']?_[_0x1e91('0x24')](_0x48dc3d[_0x1e91('0x22')],function(_0x1ed5ef){return{'model':db[_0x1ed5ef['model']],'as':_0x1ed5ef['as'],'attributes':_0x1ed5ef[_0x1e91('0x21')],'include':_0x1ed5ef[_0x1e91('0x22')]?_[_0x1e91('0x24')](_0x1ed5ef['include'],function(_0x11875b){return{'model':db[_0x11875b[_0x1e91('0x23')]],'as':_0x11875b['as'],'attributes':_0x11875b[_0x1e91('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1e91('0x10')](function(_0x2cbdfb){logger[_0x1e91('0x11')]('ShowFaxQueue',_0x5d6fd8);logger['debug']('ShowFaxQueue',_0x5d6fd8,JSON['stringify'](_0x2cbdfb));_0xb78b0b(_0x2cbdfb);})[_0x1e91('0x1b')](function(_0x435ad5){logger[_0x1e91('0x15')](_0x1e91('0x27'),_0x435ad5[_0x1e91('0x17')],_0x5d6fd8);_0x4f9686(_0x2388b4[_0x1e91('0x15')](0x1f4,_0x435ad5[_0x1e91('0x17')]));});});};
\ No newline at end of file
index 4abfb56..879b285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9a=['length','./faxQueue.events','save','remove','update','removeListener','register'];(function(_0x5265bd,_0x581623){var _0x4f115a=function(_0x4b039d){while(--_0x4b039d){_0x5265bd['push'](_0x5265bd['shift']());}};_0x4f115a(++_0x581623);}(_0x0f9a,0x174));var _0xa0f9=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x0f9a[_0xbca1b1];return _0x4e1686;};'use strict';var FaxQueueEvents=require(_0xa0f9('0x0'));var events=[_0xa0f9('0x1'),_0xa0f9('0x2'),_0xa0f9('0x3')];function createListener(_0x4a374e,_0x134e02){return function(_0x55a455){_0x134e02['emit'](_0x4a374e,_0x55a455);};}function removeListener(_0x15a27a,_0x522b65){return function(){FaxQueueEvents[_0xa0f9('0x4')](_0x15a27a,_0x522b65);};}exports[_0xa0f9('0x5')]=function(_0x16ab96){for(var _0x34d852=0x0,_0x34a8f3=events[_0xa0f9('0x6')];_0x34d852<_0x34a8f3;_0x34d852++){var _0xbea873=events[_0x34d852];var _0x4d7b7d=createListener('faxQueue:'+_0xbea873,_0x16ab96);FaxQueueEvents['on'](_0xbea873,_0x4d7b7d);}};
\ No newline at end of file
+var _0xd3fe=['length','faxQueue:','save','remove','update','emit','removeListener','register'];(function(_0x14540b,_0x85d32d){var _0x394822=function(_0x2e9b0e){while(--_0x2e9b0e){_0x14540b['push'](_0x14540b['shift']());}};_0x394822(++_0x85d32d);}(_0xd3fe,0xb2));var _0xed3f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd3fe[_0x3dd15e];return _0x231fd0;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=[_0xed3f('0x0'),_0xed3f('0x1'),_0xed3f('0x2')];function createListener(_0x12bb7c,_0x225607){return function(_0x31168c){_0x225607[_0xed3f('0x3')](_0x12bb7c,_0x31168c);};}function removeListener(_0x1d6d87,_0x131012){return function(){FaxQueueEvents[_0xed3f('0x4')](_0x1d6d87,_0x131012);};}exports[_0xed3f('0x5')]=function(_0xe6f2d6){for(var _0x5b42ee=0x0,_0x2b5354=events[_0xed3f('0x6')];_0x5b42ee<_0x2b5354;_0x5b42ee++){var _0x154ac3=events[_0x5b42ee];var _0x12e634=createListener(_0xed3f('0x7')+_0x154ac3,_0xe6f2d6);FaxQueueEvents['on'](_0x154ac3,_0x12e634);}};
\ No newline at end of file
index 0e552af..0598fd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f8a=['delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addAgents','update'];(function(_0x2eade5,_0x29bcdf){var _0x2de2c2=function(_0x3cb6cb){while(--_0x3cb6cb){_0x2eade5['push'](_0x2eade5['shift']());}};_0x2de2c2(++_0x29bcdf);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x5c428e,_0x12ceb9){_0x5c428e=_0x5c428e-0x0;var _0x315c12=_0x3f8a[_0x5c428e];return _0x315c12;};'use strict';var multer=require(_0xa3f8('0x0'));var util=require(_0xa3f8('0x1'));var path=require(_0xa3f8('0x2'));var timeout=require(_0xa3f8('0x3'));var express=require('express');var router=express[_0xa3f8('0x4')]();var fs_extra=require(_0xa3f8('0x5'));var auth=require(_0xa3f8('0x6'));var interaction=require(_0xa3f8('0x7'));var config=require(_0xa3f8('0x8'));var controller=require(_0xa3f8('0x9'));router[_0xa3f8('0xa')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xc')]);router[_0xa3f8('0xa')](_0xa3f8('0xd'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0xe')]);router[_0xa3f8('0xa')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x10')]);router['get'](_0xa3f8('0x11'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x12')]);router[_0xa3f8('0xa')]('/:id/teams',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x13')]);router[_0xa3f8('0xa')](_0xa3f8('0x14'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x15')]);router[_0xa3f8('0x16')]('/',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x17')]);router[_0xa3f8('0x16')](_0xa3f8('0x18'),auth[_0xa3f8('0xb')](),controller['addTeams']);router[_0xa3f8('0x16')](_0xa3f8('0x14'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x19')]);router['put'](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1a')]);router[_0xa3f8('0x1b')](_0xa3f8('0xf'),auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1c')]);router[_0xa3f8('0x1b')](_0xa3f8('0x18'),auth[_0xa3f8('0xb')](),controller['removeTeams']);router[_0xa3f8('0x1b')]('/:id/users',auth[_0xa3f8('0xb')](),controller[_0xa3f8('0x1d')]);module[_0xa3f8('0x1e')]=router;
\ No newline at end of file
+var _0x77a9=['../../config/environment','./faxQueue.controller','get','isAuthenticated','index','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','getAgents','post','create','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3bfc0c,_0xb383e7){var _0x4c6ce6=function(_0x10263c){while(--_0x10263c){_0x3bfc0c['push'](_0x3bfc0c['shift']());}};_0x4c6ce6(++_0xb383e7);}(_0x77a9,0x19e));var _0x977a=function(_0x1f5fec,_0x180c0f){_0x1f5fec=_0x1f5fec-0x0;var _0x148915=_0x77a9[_0x1f5fec];return _0x148915;};'use strict';var multer=require(_0x977a('0x0'));var util=require('util');var path=require(_0x977a('0x1'));var timeout=require('connect-timeout');var express=require(_0x977a('0x2'));var router=express[_0x977a('0x3')]();var fs_extra=require(_0x977a('0x4'));var auth=require(_0x977a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x977a('0x6'));var controller=require(_0x977a('0x7'));router[_0x977a('0x8')]('/',auth[_0x977a('0x9')](),controller[_0x977a('0xa')]);router['get']('/describe',auth[_0x977a('0x9')](),controller[_0x977a('0xb')]);router['get'](_0x977a('0xc'),auth[_0x977a('0x9')](),controller[_0x977a('0xd')]);router[_0x977a('0x8')](_0x977a('0xe'),auth[_0x977a('0x9')](),controller[_0x977a('0xf')]);router[_0x977a('0x8')](_0x977a('0x10'),auth[_0x977a('0x9')](),controller['getTeams']);router[_0x977a('0x8')](_0x977a('0x11'),auth[_0x977a('0x9')](),controller[_0x977a('0x12')]);router[_0x977a('0x13')]('/',auth[_0x977a('0x9')](),controller[_0x977a('0x14')]);router[_0x977a('0x13')](_0x977a('0x10'),auth[_0x977a('0x9')](),controller['addTeams']);router[_0x977a('0x13')]('/:id/users',auth[_0x977a('0x9')](),controller[_0x977a('0x15')]);router['put'](_0x977a('0xc'),auth[_0x977a('0x9')](),controller[_0x977a('0x16')]);router[_0x977a('0x17')]('/:id',auth[_0x977a('0x9')](),controller[_0x977a('0x18')]);router[_0x977a('0x17')]('/:id/teams',auth[_0x977a('0x9')](),controller[_0x977a('0x19')]);router['delete'](_0x977a('0x11'),auth['isAuthenticated'](),controller[_0x977a('0x1a')]);module[_0x977a('0x1b')]=router;
\ No newline at end of file
index c3277a1..3ed15e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6157=['STRING','DATE','sequelize','exports'];(function(_0x564037,_0x3511a8){var _0xa3614c=function(_0x387d50){while(--_0x387d50){_0x564037['push'](_0x564037['shift']());}};_0xa3614c(++_0x3511a8);}(_0x6157,0xea));var _0x7615=function(_0x2f1b4b,_0x534e19){_0x2f1b4b=_0x2f1b4b-0x0;var _0x20de2b=_0x6157[_0x2f1b4b];return _0x20de2b;};'use strict';var moment=require('moment');var Sequelize=require(_0x7615('0x0'));module[_0x7615('0x1')]={'uniqueid':{'type':Sequelize[_0x7615('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7615('0x2')]},'joinAt':{'type':Sequelize[_0x7615('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x7615('0x3')]},'reason':{'type':Sequelize[_0x7615('0x2')]}};
\ No newline at end of file
+var _0x75ee=['exports','STRING','DATE','sequelize'];(function(_0x2028a8,_0x4192be){var _0x4d7bd1=function(_0x527c96){while(--_0x527c96){_0x2028a8['push'](_0x2028a8['shift']());}};_0x4d7bd1(++_0x4192be);}(_0x75ee,0x183));var _0xe75e=function(_0x1d70db,_0x142b63){_0x1d70db=_0x1d70db-0x0;var _0x3060c6=_0x75ee[_0x1d70db];return _0x3060c6;};'use strict';var moment=require('moment');var Sequelize=require(_0xe75e('0x0'));module[_0xe75e('0x1')]={'uniqueid':{'type':Sequelize[_0xe75e('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe75e('0x2')]},'joinAt':{'type':Sequelize[_0xe75e('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xe75e('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe75e('0x2')]}};
\ No newline at end of file
index d651272..cbf1ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4157=['findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','then','error','stack','name','send','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','filter','where','VIRTUAL','merge','options','FaxQueueReport','includeAll','include'];(function(_0x210603,_0x4adbac){var _0x1bcb7d=function(_0x2cdf89){while(--_0x2cdf89){_0x210603['push'](_0x210603['shift']());}};_0x1bcb7d(++_0x4adbac);}(_0x4157,0xf3));var _0x7415=function(_0x647d3,_0x4e64ae){_0x647d3=_0x647d3-0x0;var _0x35f005=_0x4157[_0x647d3];return _0x35f005;};'use strict';var emlformat=require(_0x7415('0x0'));var rimraf=require(_0x7415('0x1'));var zipdir=require(_0x7415('0x2'));var jsonpatch=require(_0x7415('0x3'));var rp=require(_0x7415('0x4'));var moment=require('moment');var BPromise=require(_0x7415('0x5'));var Mustache=require(_0x7415('0x6'));var util=require(_0x7415('0x7'));var path=require(_0x7415('0x8'));var sox=require(_0x7415('0x9'));var csv=require(_0x7415('0xa'));var ejs=require(_0x7415('0xb'));var fs=require('fs');var fs_extra=require(_0x7415('0xc'));var _=require(_0x7415('0xd'));var squel=require('squel');var crypto=require(_0x7415('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7415('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7415('0x10'));var Papa=require(_0x7415('0x11'));var Redis=require(_0x7415('0x12'));var authService=require(_0x7415('0x13'));var qs=require(_0x7415('0x14'));var as=require(_0x7415('0x15'));var hardwareService=require(_0x7415('0x16'));var logger=require('../../config/logger')(_0x7415('0x17'));var utils=require(_0x7415('0x18'));var config=require(_0x7415('0x19'));var licenseUtil=require(_0x7415('0x1a'));var db=require(_0x7415('0x1b'))['db'];function respondWithStatusCode(_0x4e2173,_0x3cfa3b){_0x3cfa3b=_0x3cfa3b||0xcc;return function(_0x186640){if(_0x186640){return _0x4e2173[_0x7415('0x1c')](_0x3cfa3b);}return _0x4e2173[_0x7415('0x1d')](_0x3cfa3b)[_0x7415('0x1e')]();};}function respondWithResult(_0x11a840,_0x37eb93){_0x37eb93=_0x37eb93||0xc8;return function(_0x31759a){if(_0x31759a){return _0x11a840[_0x7415('0x1d')](_0x37eb93)[_0x7415('0x1f')](_0x31759a);}};}function respondWithFilteredResult(_0x3f3e06,_0x1c193d){return function(_0x42efeb){if(_0x42efeb){var _0x4b8111=typeof _0x1c193d[_0x7415('0x20')]===_0x7415('0x21')&&typeof _0x1c193d[_0x7415('0x22')]===_0x7415('0x21');var _0x55b1bf=_0x42efeb[_0x7415('0x23')];var _0x2543f1=_0x4b8111?0x0:_0x1c193d['offset'];var _0x302a2b=_0x4b8111?_0x42efeb['count']:_0x1c193d[_0x7415('0x20')]+_0x1c193d[_0x7415('0x22')];var _0x47648d;if(_0x302a2b>=_0x55b1bf){_0x302a2b=_0x55b1bf;_0x47648d=0xc8;}else{_0x47648d=0xce;}_0x3f3e06[_0x7415('0x1d')](_0x47648d);return _0x3f3e06[_0x7415('0x24')](_0x7415('0x25'),_0x2543f1+'-'+_0x302a2b+'/'+_0x55b1bf)[_0x7415('0x1f')](_0x42efeb);}return null;};}function patchUpdates(_0x36a934){return function(_0x2fe93d){try{jsonpatch[_0x7415('0x26')](_0x2fe93d,_0x36a934,!![]);}catch(_0x1075cd){return BPromise['reject'](_0x1075cd);}return _0x2fe93d['save']();};}function saveUpdates(_0x28260b,_0x43df4a){return function(_0x129b3f){if(_0x129b3f){return _0x129b3f[_0x7415('0x27')](_0x28260b)['then'](function(_0x3a0df2){return _0x3a0df2;});}return null;};}function removeEntity(_0x530eea,_0x478abe){return function(_0xca366e){if(_0xca366e){return _0xca366e[_0x7415('0x28')]()[_0x7415('0x29')](function(){_0x530eea[_0x7415('0x1d')](0xcc)[_0x7415('0x1e')]();});}};}function handleEntityNotFound(_0x24a554,_0x26234c){return function(_0x3817d4){if(!_0x3817d4){_0x24a554[_0x7415('0x1c')](0x194);}return _0x3817d4;};}function handleError(_0x23a7be,_0x57b08a){_0x57b08a=_0x57b08a||0x1f4;return function(_0x464f49){logger[_0x7415('0x2a')](_0x464f49[_0x7415('0x2b')]);if(_0x464f49[_0x7415('0x2c')]){delete _0x464f49[_0x7415('0x2c')];}_0x23a7be['status'](_0x57b08a)[_0x7415('0x2d')](_0x464f49);};}exports['index']=function(_0xea1932,_0xbe0c21){var _0x115e0c={},_0x31588b={},_0x5dfe7b={'count':0x0,'rows':[]};var _0x45e783=_['map'](db['FaxQueueReport'][_0x7415('0x2e')],function(_0x24d2b3){return{'name':_0x24d2b3[_0x7415('0x2f')],'type':_0x24d2b3[_0x7415('0x30')]['key']};});_0x31588b[_0x7415('0x31')]=_[_0x7415('0x32')](_0x45e783,_0x7415('0x2c'));_0x31588b[_0x7415('0x33')]=_[_0x7415('0x34')](_0xea1932[_0x7415('0x33')]);_0x31588b[_0x7415('0x35')]=_[_0x7415('0x36')](_0x31588b[_0x7415('0x31')],_0x31588b[_0x7415('0x33')]);_0x115e0c[_0x7415('0x37')]=_['intersection'](_0x31588b[_0x7415('0x31')],qs[_0x7415('0x38')](_0xea1932['query'][_0x7415('0x38')]));_0x115e0c[_0x7415('0x37')]=_0x115e0c[_0x7415('0x37')][_0x7415('0x39')]?_0x115e0c[_0x7415('0x37')]:_0x31588b[_0x7415('0x31')];if(!_0xea1932[_0x7415('0x33')]['hasOwnProperty'](_0x7415('0x3a'))){_0x115e0c[_0x7415('0x22')]=qs[_0x7415('0x22')](_0xea1932[_0x7415('0x33')][_0x7415('0x22')]);_0x115e0c[_0x7415('0x20')]=qs[_0x7415('0x20')](_0xea1932['query']['offset']);}_0x115e0c[_0x7415('0x3b')]=qs['sort'](_0xea1932[_0x7415('0x33')][_0x7415('0x3c')]);_0x115e0c['where']=qs['filters'](_['pick'](_0xea1932[_0x7415('0x33')],_0x31588b['filters']),_0x45e783);if(_0xea1932[_0x7415('0x33')][_0x7415('0x3d')]){_0x115e0c[_0x7415('0x3e')]=_['merge'](_0x115e0c[_0x7415('0x3e')],{'$or':_[_0x7415('0x32')](_0x45e783,function(_0x2fdb6b){if(_0x2fdb6b[_0x7415('0x30')]!==_0x7415('0x3f')){var _0x4767c7={};_0x4767c7[_0x2fdb6b[_0x7415('0x2c')]]={'$like':'%'+_0xea1932[_0x7415('0x33')][_0x7415('0x3d')]+'%'};return _0x4767c7;}})});}_0x115e0c=_[_0x7415('0x40')]({},_0x115e0c,_0xea1932[_0x7415('0x41')]);var _0x245d16={'where':_0x115e0c[_0x7415('0x3e')]};return db[_0x7415('0x42')]['count'](_0x245d16)['then'](function(_0x2e437d){_0x5dfe7b['count']=_0x2e437d;if(_0xea1932['query'][_0x7415('0x43')]){_0x115e0c[_0x7415('0x44')]=[{'all':!![]}];}return db[_0x7415('0x42')][_0x7415('0x45')](_0x115e0c);})['then'](function(_0x4f655e){_0x5dfe7b[_0x7415('0x46')]=_0x4f655e;return _0x5dfe7b;})['then'](respondWithFilteredResult(_0xbe0c21,_0x115e0c))[_0x7415('0x47')](handleError(_0xbe0c21,null));};exports[_0x7415('0x48')]=function(_0x2d617a,_0x5c55f7){var _0x197273={'raw':!![],'where':{'id':_0x2d617a[_0x7415('0x49')]['id']}},_0x20ed3f={};_0x20ed3f[_0x7415('0x31')]=_['keys'](db[_0x7415('0x42')][_0x7415('0x2e')]);_0x20ed3f[_0x7415('0x33')]=_[_0x7415('0x34')](_0x2d617a['query']);_0x20ed3f[_0x7415('0x35')]=_[_0x7415('0x36')](_0x20ed3f[_0x7415('0x31')],_0x20ed3f['query']);_0x197273[_0x7415('0x37')]=_[_0x7415('0x36')](_0x20ed3f[_0x7415('0x31')],qs[_0x7415('0x38')](_0x2d617a['query'][_0x7415('0x38')]));_0x197273[_0x7415('0x37')]=_0x197273[_0x7415('0x37')][_0x7415('0x39')]?_0x197273[_0x7415('0x37')]:_0x20ed3f[_0x7415('0x31')];if(_0x2d617a[_0x7415('0x33')][_0x7415('0x43')]){_0x197273[_0x7415('0x44')]=[{'all':!![]}];}_0x197273=_[_0x7415('0x40')]({},_0x197273,_0x2d617a[_0x7415('0x41')]);return db[_0x7415('0x42')][_0x7415('0x4a')](_0x197273)[_0x7415('0x29')](handleEntityNotFound(_0x5c55f7,null))['then'](respondWithResult(_0x5c55f7,null))[_0x7415('0x47')](handleError(_0x5c55f7,null));};exports[_0x7415('0x4b')]=function(_0x5c743c,_0x241ea4){return db['FaxQueueReport'][_0x7415('0x4b')](_0x5c743c[_0x7415('0x4c')],{})[_0x7415('0x29')](respondWithResult(_0x241ea4,0xc9))[_0x7415('0x47')](handleError(_0x241ea4,null));};exports[_0x7415('0x27')]=function(_0x4ef6bf,_0x3f8672){if(_0x4ef6bf[_0x7415('0x4c')]['id']){delete _0x4ef6bf[_0x7415('0x4c')]['id'];}return db[_0x7415('0x42')][_0x7415('0x4a')]({'where':{'id':_0x4ef6bf[_0x7415('0x49')]['id']}})[_0x7415('0x29')](handleEntityNotFound(_0x3f8672,null))['then'](saveUpdates(_0x4ef6bf['body'],null))[_0x7415('0x29')](respondWithResult(_0x3f8672,null))[_0x7415('0x47')](handleError(_0x3f8672,null));};exports[_0x7415('0x28')]=function(_0x4ec19c,_0x4b989d){return db[_0x7415('0x42')]['find']({'where':{'id':_0x4ec19c['params']['id']}})[_0x7415('0x29')](handleEntityNotFound(_0x4b989d,null))['then'](removeEntity(_0x4b989d,null))[_0x7415('0x47')](handleError(_0x4b989d,null));};exports[_0x7415('0x4d')]=function(_0x612805,_0x22d52e){return db[_0x7415('0x42')][_0x7415('0x4d')]()['then'](respondWithResult(_0x22d52e,null))[_0x7415('0x47')](handleError(_0x22d52e,null));};
\ No newline at end of file
+var _0x9f62=['squel','crypto','jsforce','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','update','destroy','then','error','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','findAll','rows','catch','include','find','create','body','params','describe','rimraf','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x4b4c3b,_0x121398){var _0x125d77=function(_0x3cdff5){while(--_0x3cdff5){_0x4b4c3b['push'](_0x4b4c3b['shift']());}};_0x125d77(++_0x121398);}(_0x9f62,0x154));var _0x29f6=function(_0x31eea6,_0x5959b6){_0x31eea6=_0x31eea6-0x0;var _0x13d4fc=_0x9f62[_0x31eea6];return _0x13d4fc;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x29f6('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x29f6('0x1'));var rp=require(_0x29f6('0x2'));var moment=require(_0x29f6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x29f6('0x4'));var path=require(_0x29f6('0x5'));var sox=require(_0x29f6('0x6'));var csv=require(_0x29f6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x29f6('0x8'));var _=require(_0x29f6('0x9'));var squel=require(_0x29f6('0xa'));var crypto=require(_0x29f6('0xb'));var jsforce=require(_0x29f6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x29f6('0xd'));var authService=require(_0x29f6('0xe'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x29f6('0xf'));var logger=require(_0x29f6('0x10'))('api');var utils=require(_0x29f6('0x11'));var config=require(_0x29f6('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x559585,_0x57b2d2){_0x57b2d2=_0x57b2d2||0xcc;return function(_0x2ae0e4){if(_0x2ae0e4){return _0x559585[_0x29f6('0x13')](_0x57b2d2);}return _0x559585[_0x29f6('0x14')](_0x57b2d2)[_0x29f6('0x15')]();};}function respondWithResult(_0x17de6e,_0x156c96){_0x156c96=_0x156c96||0xc8;return function(_0x35d2e2){if(_0x35d2e2){return _0x17de6e[_0x29f6('0x14')](_0x156c96)[_0x29f6('0x16')](_0x35d2e2);}};}function respondWithFilteredResult(_0x19331f,_0x28d314){return function(_0x370484){if(_0x370484){var _0x1dde97=typeof _0x28d314[_0x29f6('0x17')]===_0x29f6('0x18')&&typeof _0x28d314[_0x29f6('0x19')]===_0x29f6('0x18');var _0x5bfda7=_0x370484['count'];var _0x2e66d3=_0x1dde97?0x0:_0x28d314[_0x29f6('0x17')];var _0xb31436=_0x1dde97?_0x370484['count']:_0x28d314[_0x29f6('0x17')]+_0x28d314[_0x29f6('0x19')];var _0x49252f;if(_0xb31436>=_0x5bfda7){_0xb31436=_0x5bfda7;_0x49252f=0xc8;}else{_0x49252f=0xce;}_0x19331f[_0x29f6('0x14')](_0x49252f);return _0x19331f[_0x29f6('0x1a')](_0x29f6('0x1b'),_0x2e66d3+'-'+_0xb31436+'/'+_0x5bfda7)[_0x29f6('0x16')](_0x370484);}return null;};}function patchUpdates(_0xb6e7a9){return function(_0x2bfb3d){try{jsonpatch['apply'](_0x2bfb3d,_0xb6e7a9,!![]);}catch(_0xfb8fd2){return BPromise['reject'](_0xfb8fd2);}return _0x2bfb3d['save']();};}function saveUpdates(_0x470019,_0x1fa159){return function(_0x39c6b3){if(_0x39c6b3){return _0x39c6b3[_0x29f6('0x1c')](_0x470019)['then'](function(_0x2c672e){return _0x2c672e;});}return null;};}function removeEntity(_0x49f67d,_0xd4179c){return function(_0xcce041){if(_0xcce041){return _0xcce041[_0x29f6('0x1d')]()[_0x29f6('0x1e')](function(){_0x49f67d['status'](0xcc)[_0x29f6('0x15')]();});}};}function handleEntityNotFound(_0x4d494f,_0x47c385){return function(_0x1401fb){if(!_0x1401fb){_0x4d494f[_0x29f6('0x13')](0x194);}return _0x1401fb;};}function handleError(_0x2519ac,_0x342038){_0x342038=_0x342038||0x1f4;return function(_0x84ccb7){logger[_0x29f6('0x1f')](_0x84ccb7[_0x29f6('0x20')]);if(_0x84ccb7['name']){delete _0x84ccb7[_0x29f6('0x21')];}_0x2519ac[_0x29f6('0x14')](_0x342038)[_0x29f6('0x22')](_0x84ccb7);};}exports[_0x29f6('0x23')]=function(_0xda0a63,_0x16a6ad){var _0x3790f5={},_0x17b2f2={},_0x3d88db={'count':0x0,'rows':[]};var _0x13a3a2=_[_0x29f6('0x24')](db[_0x29f6('0x25')][_0x29f6('0x26')],function(_0x304c28){return{'name':_0x304c28[_0x29f6('0x27')],'type':_0x304c28[_0x29f6('0x28')][_0x29f6('0x29')]};});_0x17b2f2['model']=_['map'](_0x13a3a2,_0x29f6('0x21'));_0x17b2f2['query']=_[_0x29f6('0x2a')](_0xda0a63[_0x29f6('0x2b')]);_0x17b2f2[_0x29f6('0x2c')]=_[_0x29f6('0x2d')](_0x17b2f2['model'],_0x17b2f2['query']);_0x3790f5[_0x29f6('0x2e')]=_[_0x29f6('0x2d')](_0x17b2f2[_0x29f6('0x2f')],qs[_0x29f6('0x30')](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x30')]));_0x3790f5[_0x29f6('0x2e')]=_0x3790f5[_0x29f6('0x2e')][_0x29f6('0x31')]?_0x3790f5[_0x29f6('0x2e')]:_0x17b2f2[_0x29f6('0x2f')];if(!_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x32')](_0x29f6('0x33'))){_0x3790f5['limit']=qs['limit'](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x19')]);_0x3790f5[_0x29f6('0x17')]=qs['offset'](_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x17')]);}_0x3790f5[_0x29f6('0x34')]=qs[_0x29f6('0x35')](_0xda0a63[_0x29f6('0x2b')]['sort']);_0x3790f5[_0x29f6('0x36')]=qs[_0x29f6('0x2c')](_[_0x29f6('0x37')](_0xda0a63[_0x29f6('0x2b')],_0x17b2f2['filters']),_0x13a3a2);if(_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x38')]){_0x3790f5[_0x29f6('0x36')]=_[_0x29f6('0x39')](_0x3790f5['where'],{'$or':_['map'](_0x13a3a2,function(_0x35f9e1){if(_0x35f9e1['type']!==_0x29f6('0x3a')){var _0x551411={};_0x551411[_0x35f9e1[_0x29f6('0x21')]]={'$like':'%'+_0xda0a63['query'][_0x29f6('0x38')]+'%'};return _0x551411;}})});}_0x3790f5=_[_0x29f6('0x39')]({},_0x3790f5,_0xda0a63['options']);var _0x1431fc={'where':_0x3790f5['where']};return db[_0x29f6('0x25')][_0x29f6('0x3b')](_0x1431fc)['then'](function(_0xf9c531){_0x3d88db[_0x29f6('0x3b')]=_0xf9c531;if(_0xda0a63[_0x29f6('0x2b')][_0x29f6('0x3c')]){_0x3790f5['include']=[{'all':!![]}];}return db[_0x29f6('0x25')][_0x29f6('0x3d')](_0x3790f5);})[_0x29f6('0x1e')](function(_0x2322eb){_0x3d88db[_0x29f6('0x3e')]=_0x2322eb;return _0x3d88db;})['then'](respondWithFilteredResult(_0x16a6ad,_0x3790f5))[_0x29f6('0x3f')](handleError(_0x16a6ad,null));};exports['show']=function(_0x2ea303,_0x552257){var _0xbfe671={'raw':!![],'where':{'id':_0x2ea303['params']['id']}},_0x3a8a12={};_0x3a8a12[_0x29f6('0x2f')]=_[_0x29f6('0x2a')](db[_0x29f6('0x25')][_0x29f6('0x26')]);_0x3a8a12['query']=_[_0x29f6('0x2a')](_0x2ea303[_0x29f6('0x2b')]);_0x3a8a12[_0x29f6('0x2c')]=_['intersection'](_0x3a8a12[_0x29f6('0x2f')],_0x3a8a12['query']);_0xbfe671[_0x29f6('0x2e')]=_['intersection'](_0x3a8a12['model'],qs['fields'](_0x2ea303[_0x29f6('0x2b')][_0x29f6('0x30')]));_0xbfe671[_0x29f6('0x2e')]=_0xbfe671[_0x29f6('0x2e')][_0x29f6('0x31')]?_0xbfe671[_0x29f6('0x2e')]:_0x3a8a12[_0x29f6('0x2f')];if(_0x2ea303[_0x29f6('0x2b')][_0x29f6('0x3c')]){_0xbfe671[_0x29f6('0x40')]=[{'all':!![]}];}_0xbfe671=_['merge']({},_0xbfe671,_0x2ea303['options']);return db[_0x29f6('0x25')][_0x29f6('0x41')](_0xbfe671)[_0x29f6('0x1e')](handleEntityNotFound(_0x552257,null))[_0x29f6('0x1e')](respondWithResult(_0x552257,null))['catch'](handleError(_0x552257,null));};exports[_0x29f6('0x42')]=function(_0x1f5609,_0x532df5){return db[_0x29f6('0x25')][_0x29f6('0x42')](_0x1f5609[_0x29f6('0x43')],{})[_0x29f6('0x1e')](respondWithResult(_0x532df5,0xc9))[_0x29f6('0x3f')](handleError(_0x532df5,null));};exports[_0x29f6('0x1c')]=function(_0x320b5e,_0x1f03b6){if(_0x320b5e[_0x29f6('0x43')]['id']){delete _0x320b5e[_0x29f6('0x43')]['id'];}return db[_0x29f6('0x25')][_0x29f6('0x41')]({'where':{'id':_0x320b5e['params']['id']}})[_0x29f6('0x1e')](handleEntityNotFound(_0x1f03b6,null))[_0x29f6('0x1e')](saveUpdates(_0x320b5e[_0x29f6('0x43')],null))[_0x29f6('0x1e')](respondWithResult(_0x1f03b6,null))[_0x29f6('0x3f')](handleError(_0x1f03b6,null));};exports['destroy']=function(_0x2e29e3,_0x52be22){return db['FaxQueueReport'][_0x29f6('0x41')]({'where':{'id':_0x2e29e3[_0x29f6('0x44')]['id']}})[_0x29f6('0x1e')](handleEntityNotFound(_0x52be22,null))[_0x29f6('0x1e')](removeEntity(_0x52be22,null))[_0x29f6('0x3f')](handleError(_0x52be22,null));};exports['describe']=function(_0x167976,_0x458ada){return db['FaxQueueReport'][_0x29f6('0x45')]()['then'](respondWithResult(_0x458ada,null))[_0x29f6('0x3f')](handleError(_0x458ada,null));};
\ No newline at end of file
index 5480af1..f9d7bbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['api','moment','bluebird','path','rimraf','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','lodash','../../config/logger'];(function(_0x2c1dcd,_0x350452){var _0x158ce5=function(_0x5c1c57){while(--_0x5c1c57){_0x2c1dcd['push'](_0x2c1dcd['shift']());}};_0x158ce5(++_0x350452);}(_0x1cb9,0x14e));var _0x91cb=function(_0x28032a,_0x59c6f4){_0x28032a=_0x28032a-0x0;var _0x37cd60=_0x1cb9[_0x28032a];return _0x37cd60;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var logger=require(_0x91cb('0x1'))(_0x91cb('0x2'));var moment=require(_0x91cb('0x3'));var BPromise=require(_0x91cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91cb('0x5'));var rimraf=require(_0x91cb('0x6'));var config=require('../../config/environment');var attributes=require(_0x91cb('0x7'));module[_0x91cb('0x8')]=function(_0x186dc3,_0x28543e){return _0x186dc3[_0x91cb('0x9')](_0x91cb('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0x91cb('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x53ec=['path','../../config/environment','./faxQueueReport.attributes','define','FaxQueueReport','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x77a100,_0x227a8b){var _0x47782b=function(_0xb4832a){while(--_0xb4832a){_0x77a100['push'](_0x77a100['shift']());}};_0x47782b(++_0x227a8b);}(_0x53ec,0x192));var _0xc53e=function(_0x18aaaf,_0x385db6){_0x18aaaf=_0x18aaaf-0x0;var _0x52d892=_0x53ec[_0x18aaaf];return _0x52d892;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var logger=require(_0xc53e('0x2'))(_0xc53e('0x3'));var moment=require(_0xc53e('0x4'));var BPromise=require(_0xc53e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc53e('0x6'));var rimraf=require('rimraf');var config=require(_0xc53e('0x7'));var attributes=require(_0xc53e('0x8'));module['exports']=function(_0x2f1414,_0x4f989b){return _0x2f1414[_0xc53e('0x9')](_0xc53e('0xa'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xc53e('0xb'),'fields':[_0xc53e('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 8627ad7..78b4948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde5e=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','where','limit','lodash','util','moment','bluebird'];(function(_0x5b61d3,_0x3ce09a){var _0x4e2d83=function(_0x47bf40){while(--_0x47bf40){_0x5b61d3['push'](_0x5b61d3['shift']());}};_0x4e2d83(++_0x3ce09a);}(_0xde5e,0x17d));var _0xede5=function(_0x39498e,_0x26a2c4){_0x39498e=_0x39498e-0x0;var _0x52d169=_0xde5e[_0x39498e];return _0x52d169;};'use strict';var _=require(_0xede5('0x0'));var util=require(_0xede5('0x1'));var moment=require(_0xede5('0x2'));var BPromise=require(_0xede5('0x3'));var rs=require(_0xede5('0x4'));var fs=require('fs');var Redis=require(_0xede5('0x5'));var db=require(_0xede5('0x6'))['db'];var utils=require(_0xede5('0x7'));var logger=require('../../config/logger')(_0xede5('0x8'));var config=require(_0xede5('0x9'));var jayson=require(_0xede5('0xa'));var client=jayson[_0xede5('0xb')][_0xede5('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3e5252,_0x1f8a59,_0x573688){return new BPromise(function(_0x2dc80a,_0x776fd6){return client[_0xede5('0xd')](_0x3e5252,_0x573688)[_0xede5('0xe')](function(_0x532c63){logger[_0xede5('0xf')](_0xede5('0x10'),_0x1f8a59,_0xede5('0x11'));logger[_0xede5('0x12')](_0xede5('0x13'),_0x1f8a59,_0xede5('0x11'),JSON[_0xede5('0x14')](_0x532c63));if(_0x532c63[_0xede5('0x15')]){if(_0x532c63[_0xede5('0x15')]['code']===0x1f4){logger[_0xede5('0x15')](_0xede5('0x10'),_0x1f8a59,_0x532c63[_0xede5('0x15')][_0xede5('0x16')]);return _0x776fd6(_0x532c63['error'][_0xede5('0x16')]);}logger['error'](_0xede5('0x10'),_0x1f8a59,_0x532c63[_0xede5('0x15')][_0xede5('0x16')]);return _0x2dc80a(_0x532c63[_0xede5('0x15')][_0xede5('0x16')]);}else{logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x1f8a59,_0xede5('0x11'));_0x2dc80a(_0x532c63[_0xede5('0x17')]['message']);}})[_0xede5('0x18')](function(_0x432792){logger[_0xede5('0x15')](_0xede5('0x10'),_0x1f8a59,_0x432792);_0x776fd6(_0x432792);});});}exports[_0xede5('0x19')]=function(_0x937dcb){var _0x2556bd=this;return new Promise(function(_0x3f3eb0,_0x4ad074){return db[_0xede5('0x1a')][_0xede5('0x1b')](_0x937dcb[_0xede5('0x1c')],{'raw':_0x937dcb['options']?_0x937dcb[_0xede5('0x1d')][_0xede5('0x1e')]===undefined?!![]:![]:!![]})[_0xede5('0xe')](function(_0x573450){logger[_0xede5('0xf')](_0xede5('0x19'),_0x937dcb);logger[_0xede5('0x12')](_0xede5('0x19'),_0x937dcb,JSON[_0xede5('0x14')](_0x573450));_0x3f3eb0(_0x573450);})[_0xede5('0x18')](function(_0x5ed7cf){logger[_0xede5('0x15')](_0xede5('0x19'),_0x5ed7cf[_0xede5('0x16')],_0x937dcb);_0x4ad074(_0x2556bd[_0xede5('0x15')](0x1f4,_0x5ed7cf[_0xede5('0x16')]));});});};exports[_0xede5('0x1f')]=function(_0x33680c){var _0x46f480=this;return new Promise(function(_0xe3d8f4,_0x40e34c){return db[_0xede5('0x1a')][_0xede5('0x20')](_0x33680c[_0xede5('0x1c')],{'raw':_0x33680c[_0xede5('0x1d')]?_0x33680c[_0xede5('0x1d')][_0xede5('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33680c[_0xede5('0x1d')]?_0x33680c[_0xede5('0x1d')][_0xede5('0x21')]||null:null,'attributes':_0x33680c[_0xede5('0x1d')]?_0x33680c[_0xede5('0x1d')]['attributes']||null:null,'limit':_0x33680c['options']?_0x33680c[_0xede5('0x1d')][_0xede5('0x22')]||null:null})[_0xede5('0xe')](function(_0x5e4ee4){logger[_0xede5('0xf')]('UpdateFaxQueueReport',_0x33680c);logger[_0xede5('0x12')](_0xede5('0x1f'),_0x33680c,JSON[_0xede5('0x14')](_0x5e4ee4));_0xe3d8f4(_0x5e4ee4);})[_0xede5('0x18')](function(_0x549c20){logger['error'](_0xede5('0x1f'),_0x549c20[_0xede5('0x16')],_0x33680c);_0x40e34c(_0x46f480[_0xede5('0x15')](0x1f4,_0x549c20[_0xede5('0x16')]));});});};
\ No newline at end of file
+var _0x1563=['UpdateFaxQueueReport','update','body','options','where','attributes','limit','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','http','request','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FaxQueueReport,\x20%s,\x20%s','result','CreateFaxQueueReport','FaxQueueReport','create','raw','catch'];(function(_0x345809,_0xf7af6e){var _0x12f6ea=function(_0x292bbe){while(--_0x292bbe){_0x345809['push'](_0x345809['shift']());}};_0x12f6ea(++_0xf7af6e);}(_0x1563,0x172));var _0x3156=function(_0x53ba51,_0x2f2321){_0x53ba51=_0x53ba51-0x0;var _0x2e776e=_0x1563[_0x53ba51];return _0x2e776e;};'use strict';var _=require(_0x3156('0x0'));var util=require(_0x3156('0x1'));var moment=require(_0x3156('0x2'));var BPromise=require('bluebird');var rs=require(_0x3156('0x3'));var fs=require('fs');var Redis=require(_0x3156('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3156('0x5'));var logger=require(_0x3156('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3156('0x7'));var client=jayson['client'][_0x3156('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44249f,_0x2182a7,_0x4a3cb3){return new BPromise(function(_0x417fc2,_0x547c60){return client[_0x3156('0x9')](_0x44249f,_0x4a3cb3)[_0x3156('0xa')](function(_0x427337){logger[_0x3156('0xb')]('FaxQueueReport,\x20%s,\x20%s',_0x2182a7,_0x3156('0xc'));logger[_0x3156('0xd')](_0x3156('0xe'),_0x2182a7,_0x3156('0xc'),JSON[_0x3156('0xf')](_0x427337));if(_0x427337[_0x3156('0x10')]){if(_0x427337[_0x3156('0x10')][_0x3156('0x11')]===0x1f4){logger[_0x3156('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x2182a7,_0x427337['error'][_0x3156('0x12')]);return _0x547c60(_0x427337['error'][_0x3156('0x12')]);}logger[_0x3156('0x10')]('FaxQueueReport,\x20%s,\x20%s',_0x2182a7,_0x427337[_0x3156('0x10')][_0x3156('0x12')]);return _0x417fc2(_0x427337[_0x3156('0x10')][_0x3156('0x12')]);}else{logger[_0x3156('0xb')](_0x3156('0x13'),_0x2182a7,_0x3156('0xc'));_0x417fc2(_0x427337[_0x3156('0x14')]['message']);}})['catch'](function(_0xb2fb5c){logger['error'](_0x3156('0x13'),_0x2182a7,_0xb2fb5c);_0x547c60(_0xb2fb5c);});});}exports[_0x3156('0x15')]=function(_0x110ecd){var _0x4ba89d=this;return new Promise(function(_0x206d13,_0x5666d8){return db[_0x3156('0x16')][_0x3156('0x17')](_0x110ecd['body'],{'raw':_0x110ecd['options']?_0x110ecd['options'][_0x3156('0x18')]===undefined?!![]:![]:!![]})[_0x3156('0xa')](function(_0x25e34a){logger[_0x3156('0xb')]('CreateFaxQueueReport',_0x110ecd);logger['debug'](_0x3156('0x15'),_0x110ecd,JSON[_0x3156('0xf')](_0x25e34a));_0x206d13(_0x25e34a);})[_0x3156('0x19')](function(_0x3a08e8){logger['error'](_0x3156('0x15'),_0x3a08e8['message'],_0x110ecd);_0x5666d8(_0x4ba89d[_0x3156('0x10')](0x1f4,_0x3a08e8['message']));});});};exports[_0x3156('0x1a')]=function(_0x53883c){var _0x4ac534=this;return new Promise(function(_0x6e75e5,_0x512310){return db['FaxQueueReport'][_0x3156('0x1b')](_0x53883c[_0x3156('0x1c')],{'raw':_0x53883c[_0x3156('0x1d')]?_0x53883c['options'][_0x3156('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53883c[_0x3156('0x1d')]?_0x53883c[_0x3156('0x1d')][_0x3156('0x1e')]||null:null,'attributes':_0x53883c['options']?_0x53883c[_0x3156('0x1d')][_0x3156('0x1f')]||null:null,'limit':_0x53883c[_0x3156('0x1d')]?_0x53883c[_0x3156('0x1d')][_0x3156('0x20')]||null:null})[_0x3156('0xa')](function(_0x1569fc){logger['info'](_0x3156('0x1a'),_0x53883c);logger['debug'](_0x3156('0x1a'),_0x53883c,JSON['stringify'](_0x1569fc));_0x6e75e5(_0x1569fc);})[_0x3156('0x19')](function(_0x2c9103){logger[_0x3156('0x10')]('UpdateFaxQueueReport',_0x2c9103['message'],_0x53883c);_0x512310(_0x4ac534[_0x3156('0x10')](0x1f4,_0x2c9103['message']));});});};
\ No newline at end of file
index b3a3480..d6aa773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe612=['/describe','describe','/:id','post','create','put','update','destroy','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxQueueReport.controller','get','isAuthenticated','index'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xe612,0x1ca));var _0x2e61=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xe612[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2e61('0x0'));var timeout=require('connect-timeout');var express=require(_0x2e61('0x1'));var router=express[_0x2e61('0x2')]();var fs_extra=require(_0x2e61('0x3'));var auth=require(_0x2e61('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x2e61('0x5'));var controller=require(_0x2e61('0x6'));router[_0x2e61('0x7')]('/',auth[_0x2e61('0x8')](),controller[_0x2e61('0x9')]);router['get'](_0x2e61('0xa'),auth['isAuthenticated'](),controller[_0x2e61('0xb')]);router['get'](_0x2e61('0xc'),auth[_0x2e61('0x8')](),controller['show']);router[_0x2e61('0xd')]('/',auth[_0x2e61('0x8')](),controller[_0x2e61('0xe')]);router[_0x2e61('0xf')]('/:id',auth[_0x2e61('0x8')](),controller[_0x2e61('0x10')]);router['delete'](_0x2e61('0xc'),auth[_0x2e61('0x8')](),controller[_0x2e61('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xbac8=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','exports','multer'];(function(_0x47ce7f,_0x1bfdc4){var _0x11ae54=function(_0x24ccf1){while(--_0x24ccf1){_0x47ce7f['push'](_0x47ce7f['shift']());}};_0x11ae54(++_0x1bfdc4);}(_0xbac8,0x18e));var _0x8bac=function(_0x4354a2,_0x3146bf){_0x4354a2=_0x4354a2-0x0;var _0x4412e8=_0xbac8[_0x4354a2];return _0x4412e8;};'use strict';var multer=require(_0x8bac('0x0'));var util=require(_0x8bac('0x1'));var path=require(_0x8bac('0x2'));var timeout=require(_0x8bac('0x3'));var express=require(_0x8bac('0x4'));var router=express[_0x8bac('0x5')]();var fs_extra=require(_0x8bac('0x6'));var auth=require(_0x8bac('0x7'));var interaction=require(_0x8bac('0x8'));var config=require(_0x8bac('0x9'));var controller=require(_0x8bac('0xa'));router['get']('/',auth[_0x8bac('0xb')](),controller[_0x8bac('0xc')]);router[_0x8bac('0xd')](_0x8bac('0xe'),auth['isAuthenticated'](),controller[_0x8bac('0xf')]);router['get'](_0x8bac('0x10'),auth[_0x8bac('0xb')](),controller[_0x8bac('0x11')]);router['post']('/',auth[_0x8bac('0xb')](),controller[_0x8bac('0x12')]);router[_0x8bac('0x13')](_0x8bac('0x10'),auth[_0x8bac('0xb')](),controller['update']);router['delete'](_0x8bac('0x10'),auth[_0x8bac('0xb')](),controller['destroy']);module[_0x8bac('0x14')]=router;
\ No newline at end of file
index 1e6e2ff..39ae0cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x412b4a,_0x3f71ed){var _0x2466ab=function(_0x4436d3){while(--_0x4436d3){_0x412b4a['push'](_0x412b4a['shift']());}};_0x2466ab(++_0x3f71ed);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1faaa1,_0x1568dd){_0x1faaa1=_0x1faaa1-0x0;var _0x994ec=_0xcb91[_0x1faaa1];return _0x994ec;};'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(_0x42459d,_0x395958){var _0x469b6a=function(_0x3c9e5a){while(--_0x3c9e5a){_0x42459d['push'](_0x42459d['shift']());}};_0x469b6a(++_0x395958);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x5519a9,_0x1c5147){_0x5519a9=_0x5519a9-0x0;var _0x32f2cc=_0xcb91[_0x5519a9];return _0x32f2cc;};'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 5f9afa5..fd04469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeb8=['catch','show','params','include','options','find','create','update','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','then','destroy','error','stack','name','index','map','FaxTransferReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows'];(function(_0x37e845,_0x219f9f){var _0x59e55b=function(_0x5dc6c8){while(--_0x5dc6c8){_0x37e845['push'](_0x37e845['shift']());}};_0x59e55b(++_0x219f9f);}(_0xaeb8,0x1e4));var _0x8aeb=function(_0x33bcdb,_0x11846b){_0x33bcdb=_0x33bcdb-0x0;var _0x18a9bf=_0xaeb8[_0x33bcdb];return _0x18a9bf;};'use strict';var emlformat=require(_0x8aeb('0x0'));var rimraf=require(_0x8aeb('0x1'));var zipdir=require(_0x8aeb('0x2'));var jsonpatch=require(_0x8aeb('0x3'));var rp=require(_0x8aeb('0x4'));var moment=require(_0x8aeb('0x5'));var BPromise=require(_0x8aeb('0x6'));var Mustache=require('mustache');var util=require(_0x8aeb('0x7'));var path=require(_0x8aeb('0x8'));var sox=require(_0x8aeb('0x9'));var csv=require(_0x8aeb('0xa'));var ejs=require(_0x8aeb('0xb'));var fs=require('fs');var fs_extra=require(_0x8aeb('0xc'));var _=require(_0x8aeb('0xd'));var squel=require(_0x8aeb('0xe'));var crypto=require(_0x8aeb('0xf'));var jsforce=require(_0x8aeb('0x10'));var deskjs=require(_0x8aeb('0x11'));var toCsv=require(_0x8aeb('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8aeb('0x12'));var authService=require(_0x8aeb('0x13'));var qs=require(_0x8aeb('0x14'));var as=require(_0x8aeb('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8aeb('0x16'))(_0x8aeb('0x17'));var utils=require(_0x8aeb('0x18'));var config=require(_0x8aeb('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x8aeb('0x1a'))['db'];function respondWithStatusCode(_0x105975,_0x30e8e4){_0x30e8e4=_0x30e8e4||0xcc;return function(_0x50bdf9){if(_0x50bdf9){return _0x105975[_0x8aeb('0x1b')](_0x30e8e4);}return _0x105975[_0x8aeb('0x1c')](_0x30e8e4)[_0x8aeb('0x1d')]();};}function respondWithResult(_0x4100cd,_0x3994ad){_0x3994ad=_0x3994ad||0xc8;return function(_0x474fac){if(_0x474fac){return _0x4100cd[_0x8aeb('0x1c')](_0x3994ad)['json'](_0x474fac);}};}function respondWithFilteredResult(_0x6ec063,_0x414de2){return function(_0x26cc0a){if(_0x26cc0a){var _0x1bb34f=typeof _0x414de2['offset']===_0x8aeb('0x1e')&&typeof _0x414de2[_0x8aeb('0x1f')]===_0x8aeb('0x1e');var _0x11017a=_0x26cc0a[_0x8aeb('0x20')];var _0x17ece4=_0x1bb34f?0x0:_0x414de2[_0x8aeb('0x21')];var _0x189f55=_0x1bb34f?_0x26cc0a[_0x8aeb('0x20')]:_0x414de2[_0x8aeb('0x21')]+_0x414de2['limit'];var _0x50641f;if(_0x189f55>=_0x11017a){_0x189f55=_0x11017a;_0x50641f=0xc8;}else{_0x50641f=0xce;}_0x6ec063[_0x8aeb('0x1c')](_0x50641f);return _0x6ec063[_0x8aeb('0x22')](_0x8aeb('0x23'),_0x17ece4+'-'+_0x189f55+'/'+_0x11017a)[_0x8aeb('0x24')](_0x26cc0a);}return null;};}function patchUpdates(_0x270e1e){return function(_0x25d270){try{jsonpatch[_0x8aeb('0x25')](_0x25d270,_0x270e1e,!![]);}catch(_0x2f9457){return BPromise['reject'](_0x2f9457);}return _0x25d270[_0x8aeb('0x26')]();};}function saveUpdates(_0x11c2e0,_0x2be151){return function(_0xcfae47){if(_0xcfae47){return _0xcfae47['update'](_0x11c2e0)[_0x8aeb('0x27')](function(_0xf08b2){return _0xf08b2;});}return null;};}function removeEntity(_0xa9f715,_0xd35158){return function(_0x4d6467){if(_0x4d6467){return _0x4d6467[_0x8aeb('0x28')]()[_0x8aeb('0x27')](function(){_0xa9f715['status'](0xcc)[_0x8aeb('0x1d')]();});}};}function handleEntityNotFound(_0x441825,_0x370e67){return function(_0x33ea09){if(!_0x33ea09){_0x441825[_0x8aeb('0x1b')](0x194);}return _0x33ea09;};}function handleError(_0x20ecf8,_0x251f14){_0x251f14=_0x251f14||0x1f4;return function(_0x8cafd5){logger[_0x8aeb('0x29')](_0x8cafd5[_0x8aeb('0x2a')]);if(_0x8cafd5[_0x8aeb('0x2b')]){delete _0x8cafd5[_0x8aeb('0x2b')];}_0x20ecf8[_0x8aeb('0x1c')](_0x251f14)['send'](_0x8cafd5);};}exports[_0x8aeb('0x2c')]=function(_0x35dfa9,_0x12fe1b){var _0x5c9eae={},_0x39341e={},_0x148d8b={'count':0x0,'rows':[]};var _0x4bcd57=_[_0x8aeb('0x2d')](db[_0x8aeb('0x2e')][_0x8aeb('0x2f')],function(_0x13d0e3){return{'name':_0x13d0e3[_0x8aeb('0x30')],'type':_0x13d0e3[_0x8aeb('0x31')]['key']};});_0x39341e[_0x8aeb('0x32')]=_['map'](_0x4bcd57,_0x8aeb('0x2b'));_0x39341e['query']=_[_0x8aeb('0x33')](_0x35dfa9[_0x8aeb('0x34')]);_0x39341e[_0x8aeb('0x35')]=_[_0x8aeb('0x36')](_0x39341e[_0x8aeb('0x32')],_0x39341e[_0x8aeb('0x34')]);_0x5c9eae[_0x8aeb('0x37')]=_['intersection'](_0x39341e[_0x8aeb('0x32')],qs[_0x8aeb('0x38')](_0x35dfa9[_0x8aeb('0x34')][_0x8aeb('0x38')]));_0x5c9eae[_0x8aeb('0x37')]=_0x5c9eae['attributes'][_0x8aeb('0x39')]?_0x5c9eae[_0x8aeb('0x37')]:_0x39341e[_0x8aeb('0x32')];if(!_0x35dfa9[_0x8aeb('0x34')][_0x8aeb('0x3a')]('nolimit')){_0x5c9eae[_0x8aeb('0x1f')]=qs['limit'](_0x35dfa9[_0x8aeb('0x34')][_0x8aeb('0x1f')]);_0x5c9eae[_0x8aeb('0x21')]=qs['offset'](_0x35dfa9[_0x8aeb('0x34')]['offset']);}_0x5c9eae[_0x8aeb('0x3b')]=qs[_0x8aeb('0x3c')](_0x35dfa9[_0x8aeb('0x34')][_0x8aeb('0x3c')]);_0x5c9eae[_0x8aeb('0x3d')]=qs[_0x8aeb('0x35')](_[_0x8aeb('0x3e')](_0x35dfa9['query'],_0x39341e[_0x8aeb('0x35')]),_0x4bcd57);if(_0x35dfa9[_0x8aeb('0x34')][_0x8aeb('0x3f')]){_0x5c9eae[_0x8aeb('0x3d')]=_[_0x8aeb('0x40')](_0x5c9eae[_0x8aeb('0x3d')],{'$or':_['map'](_0x4bcd57,function(_0x35cf87){if(_0x35cf87[_0x8aeb('0x31')]!==_0x8aeb('0x41')){var _0x9f1561={};_0x9f1561[_0x35cf87['name']]={'$like':'%'+_0x35dfa9['query'][_0x8aeb('0x3f')]+'%'};return _0x9f1561;}})});}_0x5c9eae=_[_0x8aeb('0x40')]({},_0x5c9eae,_0x35dfa9['options']);var _0x2f165f={'where':_0x5c9eae[_0x8aeb('0x3d')]};return db[_0x8aeb('0x2e')][_0x8aeb('0x20')](_0x2f165f)[_0x8aeb('0x27')](function(_0x4e8e8c){_0x148d8b[_0x8aeb('0x20')]=_0x4e8e8c;if(_0x35dfa9[_0x8aeb('0x34')][_0x8aeb('0x42')]){_0x5c9eae['include']=[{'all':!![]}];}return db[_0x8aeb('0x2e')][_0x8aeb('0x43')](_0x5c9eae);})['then'](function(_0x39ff67){_0x148d8b[_0x8aeb('0x44')]=_0x39ff67;return _0x148d8b;})[_0x8aeb('0x27')](respondWithFilteredResult(_0x12fe1b,_0x5c9eae))[_0x8aeb('0x45')](handleError(_0x12fe1b,null));};exports[_0x8aeb('0x46')]=function(_0x3ecfca,_0x170ba7){var _0x4cd3a8={'raw':!![],'where':{'id':_0x3ecfca[_0x8aeb('0x47')]['id']}},_0x29ddb3={};_0x29ddb3[_0x8aeb('0x32')]=_[_0x8aeb('0x33')](db[_0x8aeb('0x2e')]['rawAttributes']);_0x29ddb3['query']=_[_0x8aeb('0x33')](_0x3ecfca[_0x8aeb('0x34')]);_0x29ddb3[_0x8aeb('0x35')]=_[_0x8aeb('0x36')](_0x29ddb3[_0x8aeb('0x32')],_0x29ddb3['query']);_0x4cd3a8[_0x8aeb('0x37')]=_[_0x8aeb('0x36')](_0x29ddb3['model'],qs[_0x8aeb('0x38')](_0x3ecfca[_0x8aeb('0x34')][_0x8aeb('0x38')]));_0x4cd3a8[_0x8aeb('0x37')]=_0x4cd3a8[_0x8aeb('0x37')][_0x8aeb('0x39')]?_0x4cd3a8[_0x8aeb('0x37')]:_0x29ddb3[_0x8aeb('0x32')];if(_0x3ecfca['query'][_0x8aeb('0x42')]){_0x4cd3a8[_0x8aeb('0x48')]=[{'all':!![]}];}_0x4cd3a8=_['merge']({},_0x4cd3a8,_0x3ecfca[_0x8aeb('0x49')]);return db['FaxTransferReport'][_0x8aeb('0x4a')](_0x4cd3a8)[_0x8aeb('0x27')](handleEntityNotFound(_0x170ba7,null))[_0x8aeb('0x27')](respondWithResult(_0x170ba7,null))['catch'](handleError(_0x170ba7,null));};exports[_0x8aeb('0x4b')]=function(_0x4fc2ca,_0x4cf45a){return db[_0x8aeb('0x2e')][_0x8aeb('0x4b')](_0x4fc2ca['body'],{})['then'](respondWithResult(_0x4cf45a,0xc9))[_0x8aeb('0x45')](handleError(_0x4cf45a,null));};exports[_0x8aeb('0x4c')]=function(_0x410b2c,_0x242ca6){if(_0x410b2c['body']['id']){delete _0x410b2c[_0x8aeb('0x4d')]['id'];}return db[_0x8aeb('0x2e')][_0x8aeb('0x4a')]({'where':{'id':_0x410b2c[_0x8aeb('0x47')]['id']}})['then'](handleEntityNotFound(_0x242ca6,null))[_0x8aeb('0x27')](saveUpdates(_0x410b2c['body'],null))[_0x8aeb('0x27')](respondWithResult(_0x242ca6,null))[_0x8aeb('0x45')](handleError(_0x242ca6,null));};exports[_0x8aeb('0x28')]=function(_0x4b11b5,_0x5bc89c){return db['FaxTransferReport'][_0x8aeb('0x4a')]({'where':{'id':_0x4b11b5[_0x8aeb('0x47')]['id']}})[_0x8aeb('0x27')](handleEntityNotFound(_0x5bc89c,null))['then'](removeEntity(_0x5bc89c,null))[_0x8aeb('0x45')](handleError(_0x5bc89c,null));};exports['describe']=function(_0x14d53e,_0x4d0fd6){return db[_0x8aeb('0x2e')][_0x8aeb('0x4e')]()[_0x8aeb('0x27')](respondWithResult(_0x4d0fd6,null))[_0x8aeb('0x45')](handleError(_0x4d0fd6,null));};
\ No newline at end of file
+var _0x8fad=['length','nolimit','order','sort','filters','pick','merge','where','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','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','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields'];(function(_0x872840,_0x55a159){var _0x30d602=function(_0x3bc652){while(--_0x3bc652){_0x872840['push'](_0x872840['shift']());}};_0x30d602(++_0x55a159);}(_0x8fad,0x106));var _0xd8fa=function(_0x34f566,_0x10f38e){_0x34f566=_0x34f566-0x0;var _0x3b0181=_0x8fad[_0x34f566];return _0x3b0181;};'use strict';var emlformat=require(_0xd8fa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd8fa('0x1'));var jsonpatch=require(_0xd8fa('0x2'));var rp=require(_0xd8fa('0x3'));var moment=require(_0xd8fa('0x4'));var BPromise=require(_0xd8fa('0x5'));var Mustache=require(_0xd8fa('0x6'));var util=require(_0xd8fa('0x7'));var path=require(_0xd8fa('0x8'));var sox=require('sox');var csv=require(_0xd8fa('0x9'));var ejs=require(_0xd8fa('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd8fa('0xb'));var crypto=require(_0xd8fa('0xc'));var jsforce=require(_0xd8fa('0xd'));var deskjs=require(_0xd8fa('0xe'));var toCsv=require(_0xd8fa('0x9'));var querystring=require(_0xd8fa('0xf'));var Papa=require(_0xd8fa('0x10'));var Redis=require(_0xd8fa('0x11'));var authService=require(_0xd8fa('0x12'));var qs=require(_0xd8fa('0x13'));var as=require(_0xd8fa('0x14'));var hardwareService=require(_0xd8fa('0x15'));var logger=require(_0xd8fa('0x16'))('api');var utils=require(_0xd8fa('0x17'));var config=require(_0xd8fa('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd8fa('0x19'))['db'];function respondWithStatusCode(_0x557f3f,_0x36efe0){_0x36efe0=_0x36efe0||0xcc;return function(_0x5686d4){if(_0x5686d4){return _0x557f3f[_0xd8fa('0x1a')](_0x36efe0);}return _0x557f3f[_0xd8fa('0x1b')](_0x36efe0)[_0xd8fa('0x1c')]();};}function respondWithResult(_0x174aa3,_0x3be8fb){_0x3be8fb=_0x3be8fb||0xc8;return function(_0x42f16f){if(_0x42f16f){return _0x174aa3[_0xd8fa('0x1b')](_0x3be8fb)[_0xd8fa('0x1d')](_0x42f16f);}};}function respondWithFilteredResult(_0x17764b,_0x49893a){return function(_0x5382e5){if(_0x5382e5){var _0x43d585=typeof _0x49893a[_0xd8fa('0x1e')]===_0xd8fa('0x1f')&&typeof _0x49893a[_0xd8fa('0x20')]==='undefined';var _0xfdbb59=_0x5382e5[_0xd8fa('0x21')];var _0x1cf56f=_0x43d585?0x0:_0x49893a[_0xd8fa('0x1e')];var _0x1f43b8=_0x43d585?_0x5382e5[_0xd8fa('0x21')]:_0x49893a[_0xd8fa('0x1e')]+_0x49893a['limit'];var _0x59bc9d;if(_0x1f43b8>=_0xfdbb59){_0x1f43b8=_0xfdbb59;_0x59bc9d=0xc8;}else{_0x59bc9d=0xce;}_0x17764b[_0xd8fa('0x1b')](_0x59bc9d);return _0x17764b[_0xd8fa('0x22')]('Content-Range',_0x1cf56f+'-'+_0x1f43b8+'/'+_0xfdbb59)[_0xd8fa('0x1d')](_0x5382e5);}return null;};}function patchUpdates(_0x2af658){return function(_0x1719af){try{jsonpatch[_0xd8fa('0x23')](_0x1719af,_0x2af658,!![]);}catch(_0x3ee64a){return BPromise[_0xd8fa('0x24')](_0x3ee64a);}return _0x1719af[_0xd8fa('0x25')]();};}function saveUpdates(_0x32bfb1,_0xc5692a){return function(_0x61cfb3){if(_0x61cfb3){return _0x61cfb3[_0xd8fa('0x26')](_0x32bfb1)[_0xd8fa('0x27')](function(_0x4982ee){return _0x4982ee;});}return null;};}function removeEntity(_0x5f2b34,_0xbcc2f1){return function(_0x59435a){if(_0x59435a){return _0x59435a[_0xd8fa('0x28')]()[_0xd8fa('0x27')](function(){_0x5f2b34[_0xd8fa('0x1b')](0xcc)[_0xd8fa('0x1c')]();});}};}function handleEntityNotFound(_0x354d7e,_0x7a8851){return function(_0x158cfd){if(!_0x158cfd){_0x354d7e[_0xd8fa('0x1a')](0x194);}return _0x158cfd;};}function handleError(_0x17f68a,_0x14becc){_0x14becc=_0x14becc||0x1f4;return function(_0x23f78b){logger[_0xd8fa('0x29')](_0x23f78b[_0xd8fa('0x2a')]);if(_0x23f78b['name']){delete _0x23f78b[_0xd8fa('0x2b')];}_0x17f68a[_0xd8fa('0x1b')](_0x14becc)[_0xd8fa('0x2c')](_0x23f78b);};}exports[_0xd8fa('0x2d')]=function(_0x5f449d,_0x30df24){var _0x2a4d52={},_0x1df6aa={},_0x424781={'count':0x0,'rows':[]};var _0x561664=_[_0xd8fa('0x2e')](db[_0xd8fa('0x2f')][_0xd8fa('0x30')],function(_0x53f7ff){return{'name':_0x53f7ff[_0xd8fa('0x31')],'type':_0x53f7ff[_0xd8fa('0x32')][_0xd8fa('0x33')]};});_0x1df6aa[_0xd8fa('0x34')]=_[_0xd8fa('0x2e')](_0x561664,'name');_0x1df6aa['query']=_[_0xd8fa('0x35')](_0x5f449d[_0xd8fa('0x36')]);_0x1df6aa['filters']=_['intersection'](_0x1df6aa['model'],_0x1df6aa['query']);_0x2a4d52[_0xd8fa('0x37')]=_[_0xd8fa('0x38')](_0x1df6aa[_0xd8fa('0x34')],qs['fields'](_0x5f449d['query'][_0xd8fa('0x39')]));_0x2a4d52[_0xd8fa('0x37')]=_0x2a4d52['attributes'][_0xd8fa('0x3a')]?_0x2a4d52[_0xd8fa('0x37')]:_0x1df6aa[_0xd8fa('0x34')];if(!_0x5f449d[_0xd8fa('0x36')]['hasOwnProperty'](_0xd8fa('0x3b'))){_0x2a4d52['limit']=qs[_0xd8fa('0x20')](_0x5f449d[_0xd8fa('0x36')][_0xd8fa('0x20')]);_0x2a4d52[_0xd8fa('0x1e')]=qs[_0xd8fa('0x1e')](_0x5f449d[_0xd8fa('0x36')][_0xd8fa('0x1e')]);}_0x2a4d52[_0xd8fa('0x3c')]=qs[_0xd8fa('0x3d')](_0x5f449d['query'][_0xd8fa('0x3d')]);_0x2a4d52['where']=qs[_0xd8fa('0x3e')](_[_0xd8fa('0x3f')](_0x5f449d[_0xd8fa('0x36')],_0x1df6aa[_0xd8fa('0x3e')]),_0x561664);if(_0x5f449d[_0xd8fa('0x36')]['filter']){_0x2a4d52['where']=_[_0xd8fa('0x40')](_0x2a4d52[_0xd8fa('0x41')],{'$or':_['map'](_0x561664,function(_0x3e85c7){if(_0x3e85c7[_0xd8fa('0x32')]!==_0xd8fa('0x42')){var _0x365c8d={};_0x365c8d[_0x3e85c7[_0xd8fa('0x2b')]]={'$like':'%'+_0x5f449d['query'][_0xd8fa('0x43')]+'%'};return _0x365c8d;}})});}_0x2a4d52=_['merge']({},_0x2a4d52,_0x5f449d[_0xd8fa('0x44')]);var _0xd44ff7={'where':_0x2a4d52[_0xd8fa('0x41')]};return db[_0xd8fa('0x2f')][_0xd8fa('0x21')](_0xd44ff7)['then'](function(_0x2b836e){_0x424781[_0xd8fa('0x21')]=_0x2b836e;if(_0x5f449d[_0xd8fa('0x36')]['includeAll']){_0x2a4d52[_0xd8fa('0x45')]=[{'all':!![]}];}return db['FaxTransferReport'][_0xd8fa('0x46')](_0x2a4d52);})[_0xd8fa('0x27')](function(_0x59ce1c){_0x424781[_0xd8fa('0x47')]=_0x59ce1c;return _0x424781;})[_0xd8fa('0x27')](respondWithFilteredResult(_0x30df24,_0x2a4d52))[_0xd8fa('0x48')](handleError(_0x30df24,null));};exports[_0xd8fa('0x49')]=function(_0x3ac10e,_0x533cb5){var _0x2b22d8={'raw':!![],'where':{'id':_0x3ac10e[_0xd8fa('0x4a')]['id']}},_0x42bdc4={};_0x42bdc4[_0xd8fa('0x34')]=_[_0xd8fa('0x35')](db[_0xd8fa('0x2f')][_0xd8fa('0x30')]);_0x42bdc4[_0xd8fa('0x36')]=_[_0xd8fa('0x35')](_0x3ac10e[_0xd8fa('0x36')]);_0x42bdc4[_0xd8fa('0x3e')]=_[_0xd8fa('0x38')](_0x42bdc4[_0xd8fa('0x34')],_0x42bdc4[_0xd8fa('0x36')]);_0x2b22d8['attributes']=_[_0xd8fa('0x38')](_0x42bdc4[_0xd8fa('0x34')],qs[_0xd8fa('0x39')](_0x3ac10e['query'][_0xd8fa('0x39')]));_0x2b22d8[_0xd8fa('0x37')]=_0x2b22d8[_0xd8fa('0x37')][_0xd8fa('0x3a')]?_0x2b22d8[_0xd8fa('0x37')]:_0x42bdc4['model'];if(_0x3ac10e[_0xd8fa('0x36')][_0xd8fa('0x4b')]){_0x2b22d8[_0xd8fa('0x45')]=[{'all':!![]}];}_0x2b22d8=_[_0xd8fa('0x40')]({},_0x2b22d8,_0x3ac10e[_0xd8fa('0x44')]);return db[_0xd8fa('0x2f')]['find'](_0x2b22d8)[_0xd8fa('0x27')](handleEntityNotFound(_0x533cb5,null))[_0xd8fa('0x27')](respondWithResult(_0x533cb5,null))[_0xd8fa('0x48')](handleError(_0x533cb5,null));};exports[_0xd8fa('0x4c')]=function(_0x373231,_0x460e69){return db[_0xd8fa('0x2f')][_0xd8fa('0x4c')](_0x373231[_0xd8fa('0x4d')],{})[_0xd8fa('0x27')](respondWithResult(_0x460e69,0xc9))[_0xd8fa('0x48')](handleError(_0x460e69,null));};exports[_0xd8fa('0x26')]=function(_0xe6874,_0x31debc){if(_0xe6874[_0xd8fa('0x4d')]['id']){delete _0xe6874['body']['id'];}return db[_0xd8fa('0x2f')]['find']({'where':{'id':_0xe6874[_0xd8fa('0x4a')]['id']}})[_0xd8fa('0x27')](handleEntityNotFound(_0x31debc,null))[_0xd8fa('0x27')](saveUpdates(_0xe6874[_0xd8fa('0x4d')],null))['then'](respondWithResult(_0x31debc,null))[_0xd8fa('0x48')](handleError(_0x31debc,null));};exports[_0xd8fa('0x28')]=function(_0x5521dc,_0xd1de20){return db[_0xd8fa('0x2f')][_0xd8fa('0x4e')]({'where':{'id':_0x5521dc[_0xd8fa('0x4a')]['id']}})[_0xd8fa('0x27')](handleEntityNotFound(_0xd1de20,null))[_0xd8fa('0x27')](removeEntity(_0xd1de20,null))[_0xd8fa('0x48')](handleError(_0xd1de20,null));};exports[_0xd8fa('0x4f')]=function(_0xaf04c6,_0x5ed093){return db[_0xd8fa('0x2f')]['describe']()[_0xd8fa('0x27')](respondWithResult(_0x5ed093,null))['catch'](handleError(_0x5ed093,null));};
\ No newline at end of file
index 40fe2b9..9d8509d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc42f=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxTransferReport.attributes','exports','uniqueid'];(function(_0x215c50,_0x6a57d7){var _0x3f4e10=function(_0x5c0c3d){while(--_0x5c0c3d){_0x215c50['push'](_0x215c50['shift']());}};_0x3f4e10(++_0x6a57d7);}(_0xc42f,0x1e0));var _0xfc42=function(_0x285b53,_0x477323){_0x285b53=_0x285b53-0x0;var _0x3b9676=_0xc42f[_0x285b53];return _0x3b9676;};'use strict';var _=require(_0xfc42('0x0'));var util=require(_0xfc42('0x1'));var logger=require('../../config/logger')(_0xfc42('0x2'));var moment=require(_0xfc42('0x3'));var BPromise=require(_0xfc42('0x4'));var rp=require(_0xfc42('0x5'));var fs=require('fs');var path=require(_0xfc42('0x6'));var rimraf=require(_0xfc42('0x7'));var config=require(_0xfc42('0x8'));var attributes=require(_0xfc42('0x9'));module[_0xfc42('0xa')]=function(_0x183054,_0x540f7d){return _0x183054['define']('FaxTransferReport',attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':_0xfc42('0xb'),'fields':[_0xfc42('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf3e5=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','exports','FaxTransferReport','report_fax_transfer','uniqueid','lodash'];(function(_0x279d37,_0x14de3f){var _0x530173=function(_0x37fc79){while(--_0x37fc79){_0x279d37['push'](_0x279d37['shift']());}};_0x530173(++_0x14de3f);}(_0xf3e5,0xc3));var _0x5f3e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xf3e5[_0x4154a6];return _0x3b2786;};'use strict';var _=require(_0x5f3e('0x0'));var util=require(_0x5f3e('0x1'));var logger=require(_0x5f3e('0x2'))(_0x5f3e('0x3'));var moment=require(_0x5f3e('0x4'));var BPromise=require(_0x5f3e('0x5'));var rp=require(_0x5f3e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5f3e('0x7'));var config=require(_0x5f3e('0x8'));var attributes=require(_0x5f3e('0x9'));module[_0x5f3e('0xa')]=function(_0x1d1187,_0x115405){return _0x1d1187['define'](_0x5f3e('0xb'),attributes,{'tableName':_0x5f3e('0xc'),'paranoid':![],'indexes':[{'name':_0x5f3e('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 42cd3ad..b1e895e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfb2=['FaxTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','info'];(function(_0x41a173,_0x1c1774){var _0x431b89=function(_0x4d5426){while(--_0x4d5426){_0x41a173['push'](_0x41a173['shift']());}};_0x431b89(++_0x1c1774);}(_0xdfb2,0xc5));var _0x2dfb=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xdfb2[_0x37bd26];return _0xe83dc4;};'use strict';var _=require(_0x2dfb('0x0'));var util=require(_0x2dfb('0x1'));var moment=require(_0x2dfb('0x2'));var BPromise=require(_0x2dfb('0x3'));var rs=require(_0x2dfb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2dfb('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2dfb('0x6'));var config=require('../../config/environment');var jayson=require(_0x2dfb('0x7'));var client=jayson[_0x2dfb('0x8')][_0x2dfb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f3ae2,_0x1cc385,_0x4c2f99){return new BPromise(function(_0x52b7d0,_0x419206){return client[_0x2dfb('0xa')](_0x1f3ae2,_0x4c2f99)[_0x2dfb('0xb')](function(_0xe426cb){logger[_0x2dfb('0xc')](_0x2dfb('0xd'),_0x1cc385,_0x2dfb('0xe'));logger['debug']('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x1cc385,_0x2dfb('0xe'),JSON[_0x2dfb('0xf')](_0xe426cb));if(_0xe426cb[_0x2dfb('0x10')]){if(_0xe426cb[_0x2dfb('0x10')][_0x2dfb('0x11')]===0x1f4){logger['error'](_0x2dfb('0xd'),_0x1cc385,_0xe426cb[_0x2dfb('0x10')][_0x2dfb('0x12')]);return _0x419206(_0xe426cb['error'][_0x2dfb('0x12')]);}logger['error'](_0x2dfb('0xd'),_0x1cc385,_0xe426cb[_0x2dfb('0x10')][_0x2dfb('0x12')]);return _0x52b7d0(_0xe426cb[_0x2dfb('0x10')][_0x2dfb('0x12')]);}else{logger[_0x2dfb('0xc')]('FaxTransferReport,\x20%s,\x20%s',_0x1cc385,_0x2dfb('0xe'));_0x52b7d0(_0xe426cb[_0x2dfb('0x13')][_0x2dfb('0x12')]);}})[_0x2dfb('0x14')](function(_0x28ba3c){logger[_0x2dfb('0x10')](_0x2dfb('0xd'),_0x1cc385,_0x28ba3c);_0x419206(_0x28ba3c);});});}
\ No newline at end of file
+var _0xfb16=['request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','info','FaxTransferReport,\x20%s,\x20%s'];(function(_0x5332f1,_0x42f4d7){var _0x55302c=function(_0x337789){while(--_0x337789){_0x5332f1['push'](_0x5332f1['shift']());}};_0x55302c(++_0x42f4d7);}(_0xfb16,0x146));var _0x6fb1=function(_0x6e26e,_0x1f2177){_0x6e26e=_0x6e26e-0x0;var _0x2ef2b2=_0xfb16[_0x6e26e];return _0x2ef2b2;};'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('../../mysqldb')['db'];var utils=require(_0x6fb1('0x6'));var logger=require(_0x6fb1('0x7'))(_0x6fb1('0x8'));var config=require(_0x6fb1('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6fb1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x11d2bb,_0x3f507c,_0x22bd16){return new BPromise(function(_0x5240af,_0x57354f){return client[_0x6fb1('0xb')](_0x11d2bb,_0x22bd16)['then'](function(_0x398a49){logger[_0x6fb1('0xc')](_0x6fb1('0xd'),_0x3f507c,_0x6fb1('0xe'));logger['debug'](_0x6fb1('0xf'),_0x3f507c,_0x6fb1('0xe'),JSON['stringify'](_0x398a49));if(_0x398a49['error']){if(_0x398a49[_0x6fb1('0x10')][_0x6fb1('0x11')]===0x1f4){logger[_0x6fb1('0x10')](_0x6fb1('0xd'),_0x3f507c,_0x398a49[_0x6fb1('0x10')]['message']);return _0x57354f(_0x398a49[_0x6fb1('0x10')]['message']);}logger[_0x6fb1('0x10')](_0x6fb1('0xd'),_0x3f507c,_0x398a49[_0x6fb1('0x10')][_0x6fb1('0x12')]);return _0x5240af(_0x398a49[_0x6fb1('0x10')][_0x6fb1('0x12')]);}else{logger[_0x6fb1('0xc')](_0x6fb1('0xd'),_0x3f507c,_0x6fb1('0xe'));_0x5240af(_0x398a49[_0x6fb1('0x13')][_0x6fb1('0x12')]);}})['catch'](function(_0x1c6a49){logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x3f507c,_0x1c6a49);_0x57354f(_0x1c6a49);});});}
\ No newline at end of file
index 5635080..24841ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d4=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./faxTransferReport.controller','index','get','/describe','describe','/:id','isAuthenticated','show','post','create','update'];(function(_0x450bf9,_0x1895de){var _0x268350=function(_0xebafa7){while(--_0xebafa7){_0x450bf9['push'](_0x450bf9['shift']());}};_0x268350(++_0x1895de);}(_0x16d4,0xfe));var _0x416d=function(_0x3d56b6,_0x1accf5){_0x3d56b6=_0x3d56b6-0x0;var _0x577052=_0x16d4[_0x3d56b6];return _0x577052;};'use strict';var multer=require(_0x416d('0x0'));var util=require(_0x416d('0x1'));var path=require(_0x416d('0x2'));var timeout=require(_0x416d('0x3'));var express=require(_0x416d('0x4'));var router=express[_0x416d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x416d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x416d('0x7'));var controller=require(_0x416d('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x416d('0x9')]);router[_0x416d('0xa')](_0x416d('0xb'),auth['isAuthenticated'](),controller[_0x416d('0xc')]);router[_0x416d('0xa')](_0x416d('0xd'),auth[_0x416d('0xe')](),controller[_0x416d('0xf')]);router[_0x416d('0x10')]('/',auth[_0x416d('0xe')](),controller[_0x416d('0x11')]);router['put'](_0x416d('0xd'),auth[_0x416d('0xe')](),controller[_0x416d('0x12')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x416d('0x13')]);module[_0x416d('0x14')]=router;
\ No newline at end of file
+var _0x48bb=['describe','/:id','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','/describe'];(function(_0x36bda2,_0x295b69){var _0x36dda9=function(_0x43b9ee){while(--_0x43b9ee){_0x36bda2['push'](_0x36bda2['shift']());}};_0x36dda9(++_0x295b69);}(_0x48bb,0x1e6));var _0xb48b=function(_0x1064bc,_0x206f12){_0x1064bc=_0x1064bc-0x0;var _0x5edc45=_0x48bb[_0x1064bc];return _0x5edc45;};'use strict';var multer=require(_0xb48b('0x0'));var util=require(_0xb48b('0x1'));var path=require(_0xb48b('0x2'));var timeout=require(_0xb48b('0x3'));var express=require(_0xb48b('0x4'));var router=express[_0xb48b('0x5')]();var fs_extra=require(_0xb48b('0x6'));var auth=require(_0xb48b('0x7'));var interaction=require(_0xb48b('0x8'));var config=require(_0xb48b('0x9'));var controller=require(_0xb48b('0xa'));router[_0xb48b('0xb')]('/',auth[_0xb48b('0xc')](),controller['index']);router['get'](_0xb48b('0xd'),auth[_0xb48b('0xc')](),controller[_0xb48b('0xe')]);router[_0xb48b('0xb')](_0xb48b('0xf'),auth[_0xb48b('0xc')](),controller['show']);router['post']('/',auth[_0xb48b('0xc')](),controller['create']);router[_0xb48b('0x10')](_0xb48b('0xf'),auth['isAuthenticated'](),controller[_0xb48b('0x11')]);router[_0xb48b('0x12')](_0xb48b('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0xb48b('0x13')]=router;
\ No newline at end of file
index 4a1ec5a..4bdd199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce56=['getFields','post','create','addConfiguration','put','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations'];(function(_0x697b6e,_0xd5ab09){var _0x4ea11c=function(_0x1ab3cf){while(--_0x1ab3cf){_0x697b6e['push'](_0x697b6e['shift']());}};_0x4ea11c(++_0xd5ab09);}(_0xce56,0x7a));var _0x6ce5=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xce56[_0x18a79d];return _0x4f8848;};'use strict';var multer=require(_0x6ce5('0x0'));var util=require(_0x6ce5('0x1'));var path=require(_0x6ce5('0x2'));var timeout=require(_0x6ce5('0x3'));var express=require('express');var router=express[_0x6ce5('0x4')]();var fs_extra=require(_0x6ce5('0x5'));var auth=require(_0x6ce5('0x6'));var interaction=require(_0x6ce5('0x7'));var config=require('../../config/environment');var controller=require(_0x6ce5('0x8'));router[_0x6ce5('0x9')]('/',auth[_0x6ce5('0xa')](),controller[_0x6ce5('0xb')]);router['get'](_0x6ce5('0xc'),auth[_0x6ce5('0xa')](),controller[_0x6ce5('0xd')]);router['get'](_0x6ce5('0xe'),auth[_0x6ce5('0xa')](),controller[_0x6ce5('0xf')]);router[_0x6ce5('0x9')]('/:id/fields',auth[_0x6ce5('0xa')](),controller[_0x6ce5('0x10')]);router[_0x6ce5('0x11')]('/',auth[_0x6ce5('0xa')](),controller[_0x6ce5('0x12')]);router['post'](_0x6ce5('0xe'),auth[_0x6ce5('0xa')](),controller[_0x6ce5('0x13')]);router[_0x6ce5('0x14')](_0x6ce5('0xc'),auth[_0x6ce5('0xa')](),controller[_0x6ce5('0x15')]);router['delete'](_0x6ce5('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x6ce5('0x16')]=router;
\ No newline at end of file
+var _0x4c69=['/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4c69,0x16b));var _0x94c6=function(_0x2983a9,_0x8d8cf0){_0x2983a9=_0x2983a9-0x0;var _0x5b8eeb=_0x4c69[_0x2983a9];return _0x5b8eeb;};'use strict';var multer=require('multer');var util=require(_0x94c6('0x0'));var path=require(_0x94c6('0x1'));var timeout=require(_0x94c6('0x2'));var express=require(_0x94c6('0x3'));var router=express[_0x94c6('0x4')]();var fs_extra=require(_0x94c6('0x5'));var auth=require(_0x94c6('0x6'));var interaction=require(_0x94c6('0x7'));var config=require(_0x94c6('0x8'));var controller=require('./intDeskAccount.controller');router[_0x94c6('0x9')]('/',auth[_0x94c6('0xa')](),controller['index']);router[_0x94c6('0x9')]('/:id',auth[_0x94c6('0xa')](),controller['show']);router[_0x94c6('0x9')](_0x94c6('0xb'),auth[_0x94c6('0xa')](),controller[_0x94c6('0xc')]);router[_0x94c6('0x9')](_0x94c6('0xd'),auth['isAuthenticated'](),controller[_0x94c6('0xe')]);router[_0x94c6('0xf')]('/',auth[_0x94c6('0xa')](),controller[_0x94c6('0x10')]);router['post']('/:id/configurations',auth[_0x94c6('0xa')](),controller[_0x94c6('0x11')]);router['put']('/:id',auth[_0x94c6('0xa')](),controller[_0x94c6('0x12')]);router[_0x94c6('0x13')]('/:id',auth[_0x94c6('0xa')](),controller[_0x94c6('0x14')]);module[_0x94c6('0x15')]=router;
\ No newline at end of file
index 52754b6..e80df6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6c5=['integrationTab','newTab','exports','STRING','ENUM','basic'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xf6c5,0x1ac));var _0x5f6c=function(_0x55f2c3,_0x38aab3){_0x55f2c3=_0x55f2c3-0x0;var _0x5ae790=_0xf6c5[_0x55f2c3];return _0x5ae790;};'use strict';var Sequelize=require('sequelize');module[_0x5f6c('0x0')]={'name':{'type':Sequelize[_0x5f6c('0x1')]},'description':{'type':Sequelize[_0x5f6c('0x1')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x5f6c('0x1')]},'authType':{'type':Sequelize[_0x5f6c('0x2')](_0x5f6c('0x3')),'defaultValue':_0x5f6c('0x3')},'password':{'type':Sequelize[_0x5f6c('0x1')]},'consumerKey':{'type':Sequelize[_0x5f6c('0x1')]},'consumerSecret':{'type':Sequelize[_0x5f6c('0x1')]},'token':{'type':Sequelize[_0x5f6c('0x1')]},'tokenSecret':{'type':Sequelize[_0x5f6c('0x1')]},'serverUrl':{'type':Sequelize[_0x5f6c('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5f6c('0x2')](_0x5f6c('0x4'),_0x5f6c('0x5')),'defaultValue':_0x5f6c('0x4')}};
\ No newline at end of file
+var _0xfe78=['sequelize','STRING','ENUM','basic','integrationTab'];(function(_0xbae752,_0x571bff){var _0x3939ff=function(_0x2e85e0){while(--_0x2e85e0){_0xbae752['push'](_0xbae752['shift']());}};_0x3939ff(++_0x571bff);}(_0xfe78,0x69));var _0x8fe7=function(_0xbc5156,_0x178164){_0xbc5156=_0xbc5156-0x0;var _0x327bb9=_0xfe78[_0xbc5156];return _0x327bb9;};'use strict';var Sequelize=require(_0x8fe7('0x0'));module['exports']={'name':{'type':Sequelize[_0x8fe7('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x8fe7('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x8fe7('0x2')]('basic'),'defaultValue':_0x8fe7('0x3')},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x8fe7('0x1')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x8fe7('0x1')]},'tokenSecret':{'type':Sequelize[_0x8fe7('0x1')]},'serverUrl':{'type':Sequelize[_0x8fe7('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x8fe7('0x2')](_0x8fe7('0x4'),'newTab'),'defaultValue':_0x8fe7('0x4')}};
\ No newline at end of file
index c053ffe..587a6c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef1d=['getFields','priority','authType','password','consumerKey','consumerSecret','token','tokenSecret','remoteUri','lastIndexOf','GET','format','%s/custom_fields','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','concat','_embedded','entries','active','label','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','name','send','index','map','DeskAccount','rawAttributes','type','query','keys','filters','intersection','attributes','model','fields','length','order','sort','where','pick','filter','merge','includeAll','include','findAll','rows','show','options','catch','create','body','find','params','findOne','getConfigurations','nolimit','Subjects','getSubjects','channel','Descriptions','DeskConfiguration','DeskField'];(function(_0xabfec4,_0x35076e){var _0x7bafa2=function(_0x52d551){while(--_0x52d551){_0xabfec4['push'](_0xabfec4['shift']());}};_0x7bafa2(++_0x35076e);}(_0xef1d,0x1d2));var _0xdef1=function(_0x2d3f56,_0x1f122a){_0x2d3f56=_0x2d3f56-0x0;var _0xe9f4b9=_0xef1d[_0x2d3f56];return _0xe9f4b9;};'use strict';var emlformat=require(_0xdef1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdef1('0x1'));var jsonpatch=require(_0xdef1('0x2'));var rp=require(_0xdef1('0x3'));var moment=require(_0xdef1('0x4'));var BPromise=require(_0xdef1('0x5'));var Mustache=require(_0xdef1('0x6'));var util=require(_0xdef1('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0xdef1('0x8'));var ejs=require(_0xdef1('0x9'));var fs=require('fs');var fs_extra=require(_0xdef1('0xa'));var _=require(_0xdef1('0xb'));var squel=require(_0xdef1('0xc'));var crypto=require(_0xdef1('0xd'));var jsforce=require(_0xdef1('0xe'));var deskjs=require(_0xdef1('0xf'));var toCsv=require(_0xdef1('0x8'));var querystring=require(_0xdef1('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdef1('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xdef1('0x12'));var config=require(_0xdef1('0x13'));var licenseUtil=require(_0xdef1('0x14'));var db=require(_0xdef1('0x15'))['db'];var integrations=require(_0xdef1('0x16'));function respondWithStatusCode(_0x5658d3,_0xb3139a){_0xb3139a=_0xb3139a||0xcc;return function(_0x554a40){if(_0x554a40){return _0x5658d3[_0xdef1('0x17')](_0xb3139a);}return _0x5658d3['status'](_0xb3139a)[_0xdef1('0x18')]();};}function respondWithResult(_0x191ab7,_0x600900){_0x600900=_0x600900||0xc8;return function(_0x590354){if(_0x590354){return _0x191ab7[_0xdef1('0x19')](_0x600900)[_0xdef1('0x1a')](_0x590354);}};}function respondWithFilteredResult(_0x271b95,_0x57cbd4){return function(_0x370952){if(_0x370952){var _0x450b51=typeof _0x57cbd4[_0xdef1('0x1b')]===_0xdef1('0x1c')&&typeof _0x57cbd4[_0xdef1('0x1d')]===_0xdef1('0x1c');var _0x5203a9=_0x370952[_0xdef1('0x1e')];var _0x5760e3=_0x450b51?0x0:_0x57cbd4['offset'];var _0x234308=_0x450b51?_0x370952[_0xdef1('0x1e')]:_0x57cbd4['offset']+_0x57cbd4[_0xdef1('0x1d')];var _0x441db2;if(_0x234308>=_0x5203a9){_0x234308=_0x5203a9;_0x441db2=0xc8;}else{_0x441db2=0xce;}_0x271b95[_0xdef1('0x19')](_0x441db2);return _0x271b95[_0xdef1('0x1f')](_0xdef1('0x20'),_0x5760e3+'-'+_0x234308+'/'+_0x5203a9)[_0xdef1('0x1a')](_0x370952);}return null;};}function patchUpdates(_0x27d50e){return function(_0x204c1c){try{jsonpatch[_0xdef1('0x21')](_0x204c1c,_0x27d50e,!![]);}catch(_0x13f652){return BPromise['reject'](_0x13f652);}return _0x204c1c[_0xdef1('0x22')]();};}function saveUpdates(_0x4a4634,_0x188179){return function(_0x3d877c){if(_0x3d877c){return _0x3d877c[_0xdef1('0x23')](_0x4a4634)['then'](function(_0x200d67){return _0x200d67;});}return null;};}function removeEntity(_0x78a5f,_0x498f6a){return function(_0x1d4075){if(_0x1d4075){return _0x1d4075[_0xdef1('0x24')]()[_0xdef1('0x25')](function(){_0x78a5f[_0xdef1('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x413ac7,_0x9b06b2){return function(_0x1f61dd){if(!_0x1f61dd){_0x413ac7[_0xdef1('0x17')](0x194);}return _0x1f61dd;};}function handleError(_0x1f608b,_0x4656b1){_0x4656b1=_0x4656b1||0x1f4;return function(_0x1f4eee){logger['error'](_0x1f4eee['stack']);if(_0x1f4eee[_0xdef1('0x26')]){delete _0x1f4eee[_0xdef1('0x26')];}_0x1f608b['status'](_0x4656b1)[_0xdef1('0x27')](_0x1f4eee);};}exports[_0xdef1('0x28')]=function(_0x55dde5,_0x7db7a8){var _0x20df34={},_0x2067d1={},_0x3fea9e={'count':0x0,'rows':[]};var _0x5ef16a=_[_0xdef1('0x29')](db[_0xdef1('0x2a')][_0xdef1('0x2b')],function(_0x21842d){return{'name':_0x21842d['fieldName'],'type':_0x21842d[_0xdef1('0x2c')]['key']};});_0x2067d1['model']=_[_0xdef1('0x29')](_0x5ef16a,_0xdef1('0x26'));_0x2067d1[_0xdef1('0x2d')]=_[_0xdef1('0x2e')](_0x55dde5[_0xdef1('0x2d')]);_0x2067d1[_0xdef1('0x2f')]=_[_0xdef1('0x30')](_0x2067d1['model'],_0x2067d1['query']);_0x20df34[_0xdef1('0x31')]=_['intersection'](_0x2067d1[_0xdef1('0x32')],qs['fields'](_0x55dde5[_0xdef1('0x2d')][_0xdef1('0x33')]));_0x20df34[_0xdef1('0x31')]=_0x20df34[_0xdef1('0x31')][_0xdef1('0x34')]?_0x20df34['attributes']:_0x2067d1[_0xdef1('0x32')];if(!_0x55dde5[_0xdef1('0x2d')]['hasOwnProperty']('nolimit')){_0x20df34[_0xdef1('0x1d')]=qs[_0xdef1('0x1d')](_0x55dde5['query'][_0xdef1('0x1d')]);_0x20df34[_0xdef1('0x1b')]=qs[_0xdef1('0x1b')](_0x55dde5[_0xdef1('0x2d')][_0xdef1('0x1b')]);}_0x20df34[_0xdef1('0x35')]=qs['sort'](_0x55dde5[_0xdef1('0x2d')][_0xdef1('0x36')]);_0x20df34[_0xdef1('0x37')]=qs[_0xdef1('0x2f')](_[_0xdef1('0x38')](_0x55dde5[_0xdef1('0x2d')],_0x2067d1['filters']),_0x5ef16a);if(_0x55dde5[_0xdef1('0x2d')][_0xdef1('0x39')]){_0x20df34[_0xdef1('0x37')]=_['merge'](_0x20df34[_0xdef1('0x37')],{'$or':_['map'](_0x5ef16a,function(_0x1ee82){if(_0x1ee82[_0xdef1('0x2c')]!=='VIRTUAL'){var _0x1d88dd={};_0x1d88dd[_0x1ee82['name']]={'$like':'%'+_0x55dde5[_0xdef1('0x2d')]['filter']+'%'};return _0x1d88dd;}})});}_0x20df34=_[_0xdef1('0x3a')]({},_0x20df34,_0x55dde5['options']);var _0x33ac51={'where':_0x20df34[_0xdef1('0x37')]};return db[_0xdef1('0x2a')][_0xdef1('0x1e')](_0x33ac51)[_0xdef1('0x25')](function(_0x18cf02){_0x3fea9e[_0xdef1('0x1e')]=_0x18cf02;if(_0x55dde5['query'][_0xdef1('0x3b')]){_0x20df34[_0xdef1('0x3c')]=[{'all':!![]}];}return db['DeskAccount'][_0xdef1('0x3d')](_0x20df34);})[_0xdef1('0x25')](function(_0x4bbe15){_0x3fea9e[_0xdef1('0x3e')]=_0x4bbe15;return _0x3fea9e;})[_0xdef1('0x25')](respondWithFilteredResult(_0x7db7a8,_0x20df34))['catch'](handleError(_0x7db7a8,null));};exports[_0xdef1('0x3f')]=function(_0x1d17c6,_0x19d64c){var _0x1ed99f={'raw':![],'where':{'id':_0x1d17c6['params']['id']}},_0x398a53={};_0x398a53[_0xdef1('0x32')]=_[_0xdef1('0x2e')](db[_0xdef1('0x2a')][_0xdef1('0x2b')]);_0x398a53[_0xdef1('0x2d')]=_[_0xdef1('0x2e')](_0x1d17c6[_0xdef1('0x2d')]);_0x398a53[_0xdef1('0x2f')]=_['intersection'](_0x398a53[_0xdef1('0x32')],_0x398a53[_0xdef1('0x2d')]);_0x1ed99f[_0xdef1('0x31')]=_['intersection'](_0x398a53[_0xdef1('0x32')],qs['fields'](_0x1d17c6[_0xdef1('0x2d')][_0xdef1('0x33')]));_0x1ed99f[_0xdef1('0x31')]=_0x1ed99f[_0xdef1('0x31')][_0xdef1('0x34')]?_0x1ed99f[_0xdef1('0x31')]:_0x398a53[_0xdef1('0x32')];if(_0x1d17c6[_0xdef1('0x2d')][_0xdef1('0x3b')]){_0x1ed99f['include']=[{'all':!![]}];}_0x1ed99f=_[_0xdef1('0x3a')]({},_0x1ed99f,_0x1d17c6[_0xdef1('0x40')]);return db[_0xdef1('0x2a')]['find'](_0x1ed99f)[_0xdef1('0x25')](handleEntityNotFound(_0x19d64c,null))['then'](respondWithResult(_0x19d64c,null))[_0xdef1('0x41')](handleError(_0x19d64c,null));};exports['create']=function(_0x5e00a8,_0x387066){return db[_0xdef1('0x2a')][_0xdef1('0x42')](_0x5e00a8[_0xdef1('0x43')],{})[_0xdef1('0x25')](respondWithResult(_0x387066,0xc9))['catch'](handleError(_0x387066,null));};exports[_0xdef1('0x23')]=function(_0x19e49f,_0x32bf58){if(_0x19e49f[_0xdef1('0x43')]['id']){delete _0x19e49f[_0xdef1('0x43')]['id'];}return db['DeskAccount'][_0xdef1('0x44')]({'where':{'id':_0x19e49f[_0xdef1('0x45')]['id']}})[_0xdef1('0x25')](handleEntityNotFound(_0x32bf58,null))['then'](saveUpdates(_0x19e49f[_0xdef1('0x43')],null))[_0xdef1('0x25')](respondWithResult(_0x32bf58,null))[_0xdef1('0x41')](handleError(_0x32bf58,null));};exports['destroy']=function(_0x1263ef,_0x514751){return db[_0xdef1('0x2a')]['find']({'where':{'id':_0x1263ef[_0xdef1('0x45')]['id']}})[_0xdef1('0x25')](handleEntityNotFound(_0x514751,null))[_0xdef1('0x25')](removeEntity(_0x514751,null))[_0xdef1('0x41')](handleError(_0x514751,null));};exports['getConfigurations']=function(_0x3b5566,_0x675ee4,_0x52362f){var _0x1f821d={};var _0x5dec20={};var _0xdb817d;var _0x92774a;return db['DeskAccount'][_0xdef1('0x46')]({'where':{'id':_0x3b5566[_0xdef1('0x45')]['id']}})[_0xdef1('0x25')](handleEntityNotFound(_0x675ee4,null))[_0xdef1('0x25')](function(_0x5c1a0d){if(_0x5c1a0d){_0xdb817d=_0x5c1a0d;_0x5dec20[_0xdef1('0x32')]=_[_0xdef1('0x2e')](db['DeskConfiguration']['rawAttributes']);_0x5dec20[_0xdef1('0x2d')]=_[_0xdef1('0x2e')](_0x3b5566[_0xdef1('0x2d')]);_0x5dec20[_0xdef1('0x2f')]=_['intersection'](_0x5dec20[_0xdef1('0x32')],_0x5dec20[_0xdef1('0x2d')]);_0x1f821d[_0xdef1('0x31')]=_[_0xdef1('0x30')](_0x5dec20[_0xdef1('0x32')],qs['fields'](_0x3b5566[_0xdef1('0x2d')][_0xdef1('0x33')]));_0x1f821d['attributes']=_0x1f821d['attributes'][_0xdef1('0x34')]?_0x1f821d[_0xdef1('0x31')]:_0x5dec20['model'];_0x1f821d[_0xdef1('0x35')]=qs[_0xdef1('0x36')](_0x3b5566[_0xdef1('0x2d')][_0xdef1('0x36')]);_0x1f821d[_0xdef1('0x37')]=qs[_0xdef1('0x2f')](_['pick'](_0x3b5566[_0xdef1('0x2d')],_0x5dec20[_0xdef1('0x2f')]));if(_0x3b5566[_0xdef1('0x2d')][_0xdef1('0x39')]){_0x1f821d[_0xdef1('0x37')]=_['merge'](_0x1f821d[_0xdef1('0x37')],{'$or':_[_0xdef1('0x29')](_0x1f821d['attributes'],function(_0x5ddc11){var _0x36e582={};_0x36e582[_0x5ddc11]={'$like':'%'+_0x3b5566[_0xdef1('0x2d')][_0xdef1('0x39')]+'%'};return _0x36e582;})});}_0x1f821d=_[_0xdef1('0x3a')]({},_0x1f821d,_0x3b5566['options']);return _0xdb817d[_0xdef1('0x47')](_0x1f821d);}})[_0xdef1('0x25')](function(_0x16d2ea){if(_0x16d2ea){_0x92774a=_0x16d2ea['length'];if(!_0x3b5566[_0xdef1('0x2d')]['hasOwnProperty'](_0xdef1('0x48'))){_0x1f821d['limit']=qs[_0xdef1('0x1d')](_0x3b5566[_0xdef1('0x2d')][_0xdef1('0x1d')]);_0x1f821d[_0xdef1('0x1b')]=qs[_0xdef1('0x1b')](_0x3b5566[_0xdef1('0x2d')]['offset']);}return _0xdb817d['getConfigurations'](_0x1f821d);}})[_0xdef1('0x25')](function(_0xfae426){if(_0xfae426){return _0xfae426?{'count':_0x92774a,'rows':_0xfae426}:null;}})['then'](respondWithResult(_0x675ee4,null))[_0xdef1('0x41')](handleError(_0x675ee4,null));};exports['addConfiguration']=function(_0x1a3480,_0x521806,_0x4a4b6a){if(_0x1a3480[_0xdef1('0x43')]['id']){delete _0x1a3480['body']['id'];}return db['DeskAccount'][_0xdef1('0x46')]({'where':{'id':_0x1a3480[_0xdef1('0x45')]['id']}})[_0xdef1('0x25')](handleEntityNotFound(_0x521806,null))[_0xdef1('0x25')](function(_0x11f719){if(_0x11f719){_0x1a3480['body']['AccountId']=_0x11f719['id'];_0x1a3480[_0xdef1('0x43')][_0xdef1('0x49')]=integrations[_0xdef1('0x4a')](_0x1a3480[_0xdef1('0x43')][_0xdef1('0x4b')],_0x1a3480[_0xdef1('0x43')]['type']);_0x1a3480[_0xdef1('0x43')][_0xdef1('0x4c')]=integrations['getDescriptions'](_0x1a3480['body'][_0xdef1('0x4b')],_0x1a3480[_0xdef1('0x43')][_0xdef1('0x2c')]);return db[_0xdef1('0x4d')][_0xdef1('0x42')](_0x1a3480[_0xdef1('0x43')],{'include':[{'model':db['DeskField'],'as':_0xdef1('0x49')},{'model':db[_0xdef1('0x4e')],'as':_0xdef1('0x4c')}]});}return null;})[_0xdef1('0x25')](respondWithResult(_0x521806,null))[_0xdef1('0x41')](handleError(_0x521806,null));};exports[_0xdef1('0x4f')]=function(_0x261feb,_0x129026,_0x3e514a){var _0x13fd71=[{'name':_0xdef1('0x50'),'label':_0xdef1('0x50'),'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 _0x73870b='';return db[_0xdef1('0x2a')][_0xdef1('0x46')]({'where':{'id':_0x261feb['params']['id']},'attributes':['id','remoteUri',_0xdef1('0x51'),'username',_0xdef1('0x52'),_0xdef1('0x53'),_0xdef1('0x54'),_0xdef1('0x55'),_0xdef1('0x56')]})['then'](handleEntityNotFound(_0x129026,null))['then'](function(_0x3e782f){if(_0x3e782f){_0x73870b=_0x3e782f[_0xdef1('0x57')];var _0x2f4b38=_0x73870b['slice'](-0x1);if(_0x2f4b38==='/'){_0x73870b=_0x73870b['substring'](0x0,_0x73870b[_0xdef1('0x58')](_0x2f4b38));}var _0x57acd5={'method':_0xdef1('0x59'),'uri':util[_0xdef1('0x5a')](_0xdef1('0x5b'),_0x73870b),'headers':{'Content-Type':'application/json','Accept':'application/json'},'json':!![]};if(_0x3e782f[_0xdef1('0x51')]===_0xdef1('0x5c')){_0x57acd5[_0xdef1('0x5d')][_0xdef1('0x5e')]=util[_0xdef1('0x5a')](_0xdef1('0x5f'),new Buffer(util[_0xdef1('0x5a')](_0xdef1('0x60'),_0x3e782f['username'],_0x3e782f[_0xdef1('0x52')]))[_0xdef1('0x61')]('base64'));}return rp(_0x57acd5)[_0xdef1('0x25')](function(_0x116cc4){return _0x13fd71[_0xdef1('0x62')](_['map'](_0x116cc4[_0xdef1('0x63')][_0xdef1('0x64')],function(_0x42cd48){return{'id':_0x42cd48[_0xdef1('0x26')],'name':_0x42cd48[_0xdef1('0x26')],'type':_0x42cd48[_0xdef1('0x2c')],'active':_0x42cd48[_0xdef1('0x65')],'label':_0x42cd48[_0xdef1('0x66')],'custom':!![]};}));});}})[_0xdef1('0x25')](function(_0xd218e5){return{'count':_0xd218e5['length'],'rows':_0xd218e5};})[_0xdef1('0x25')](respondWithResult(_0x129026,null))[_0xdef1('0x41')](function(_0x1dc3a1){var _0x3e4d2f=_0x261feb[_0xdef1('0x2d')]['test']?0x1f4:_0x1dc3a1[_0xdef1('0x67')]||0x1f4;logger[_0xdef1('0x68')](_0xdef1('0x69'),'getFields',_0x3e4d2f,JSON[_0xdef1('0x6a')](_0x1dc3a1));delete _0x1dc3a1['name'];if(_0x3e4d2f===0x191){_0x3e4d2f=0x190;}_0x129026[_0xdef1('0x19')](_0x3e4d2f)[_0xdef1('0x27')](_0x261feb[_0xdef1('0x2d')][_0xdef1('0x6b')]?{'message':_0xdef1('0x6c'),'statusCode':_0x1dc3a1[_0xdef1('0x67')]}:_0x1dc3a1);});};
\ No newline at end of file
+var _0x8294=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','name','index','map','DeskAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','findOne','order','pick','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','DeskConfiguration','DeskField','Descriptions','getFields','priority','remoteUri','authType','username','password','consumerKey','consumerSecret','token','slice','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','entries','active','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0x5e9396,_0x161fdd){var _0x4172e3=function(_0x4acd42){while(--_0x4acd42){_0x5e9396['push'](_0x5e9396['shift']());}};_0x4172e3(++_0x161fdd);}(_0x8294,0x157));var _0x4829=function(_0x52e404,_0x815edb){_0x52e404=_0x52e404-0x0;var _0x5797b4=_0x8294[_0x52e404];return _0x5797b4;};'use strict';var emlformat=require(_0x4829('0x0'));var rimraf=require(_0x4829('0x1'));var zipdir=require(_0x4829('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4829('0x3'));var moment=require(_0x4829('0x4'));var BPromise=require(_0x4829('0x5'));var Mustache=require(_0x4829('0x6'));var util=require(_0x4829('0x7'));var path=require(_0x4829('0x8'));var sox=require(_0x4829('0x9'));var csv=require(_0x4829('0xa'));var ejs=require(_0x4829('0xb'));var fs=require('fs');var fs_extra=require(_0x4829('0xc'));var _=require(_0x4829('0xd'));var squel=require('squel');var crypto=require(_0x4829('0xe'));var jsforce=require(_0x4829('0xf'));var deskjs=require(_0x4829('0x10'));var toCsv=require(_0x4829('0xa'));var querystring=require(_0x4829('0x11'));var Papa=require(_0x4829('0x12'));var Redis=require(_0x4829('0x13'));var authService=require(_0x4829('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4829('0x15'));var logger=require(_0x4829('0x16'))(_0x4829('0x17'));var utils=require(_0x4829('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x4829('0x19'));function respondWithStatusCode(_0x2cd02e,_0x53d0c8){_0x53d0c8=_0x53d0c8||0xcc;return function(_0x4c8cb6){if(_0x4c8cb6){return _0x2cd02e[_0x4829('0x1a')](_0x53d0c8);}return _0x2cd02e[_0x4829('0x1b')](_0x53d0c8)['end']();};}function respondWithResult(_0x19909f,_0x3cbb88){_0x3cbb88=_0x3cbb88||0xc8;return function(_0x1c637f){if(_0x1c637f){return _0x19909f[_0x4829('0x1b')](_0x3cbb88)[_0x4829('0x1c')](_0x1c637f);}};}function respondWithFilteredResult(_0x1f6bd2,_0x30291e){return function(_0x20bbff){if(_0x20bbff){var _0x303d24=typeof _0x30291e[_0x4829('0x1d')]===_0x4829('0x1e')&&typeof _0x30291e['limit']==='undefined';var _0x3e0287=_0x20bbff[_0x4829('0x1f')];var _0x21b576=_0x303d24?0x0:_0x30291e[_0x4829('0x1d')];var _0x5f3f92=_0x303d24?_0x20bbff[_0x4829('0x1f')]:_0x30291e[_0x4829('0x1d')]+_0x30291e[_0x4829('0x20')];var _0x4f425d;if(_0x5f3f92>=_0x3e0287){_0x5f3f92=_0x3e0287;_0x4f425d=0xc8;}else{_0x4f425d=0xce;}_0x1f6bd2[_0x4829('0x1b')](_0x4f425d);return _0x1f6bd2[_0x4829('0x21')](_0x4829('0x22'),_0x21b576+'-'+_0x5f3f92+'/'+_0x3e0287)[_0x4829('0x1c')](_0x20bbff);}return null;};}function patchUpdates(_0x66c659){return function(_0x4150ca){try{jsonpatch[_0x4829('0x23')](_0x4150ca,_0x66c659,!![]);}catch(_0x3921c0){return BPromise[_0x4829('0x24')](_0x3921c0);}return _0x4150ca[_0x4829('0x25')]();};}function saveUpdates(_0x2a31bb,_0x1fb2cd){return function(_0x669db8){if(_0x669db8){return _0x669db8[_0x4829('0x26')](_0x2a31bb)[_0x4829('0x27')](function(_0x43dc97){return _0x43dc97;});}return null;};}function removeEntity(_0x3150ae,_0x11bef5){return function(_0x54d5b6){if(_0x54d5b6){return _0x54d5b6[_0x4829('0x28')]()['then'](function(){_0x3150ae[_0x4829('0x1b')](0xcc)[_0x4829('0x29')]();});}};}function handleEntityNotFound(_0x1b9305,_0x8c9d3a){return function(_0x3bd0f0){if(!_0x3bd0f0){_0x1b9305[_0x4829('0x1a')](0x194);}return _0x3bd0f0;};}function handleError(_0x3876c9,_0x5699aa){_0x5699aa=_0x5699aa||0x1f4;return function(_0x57760d){logger['error'](_0x57760d['stack']);if(_0x57760d[_0x4829('0x2a')]){delete _0x57760d['name'];}_0x3876c9[_0x4829('0x1b')](_0x5699aa)['send'](_0x57760d);};}exports[_0x4829('0x2b')]=function(_0x3ab269,_0xa55dbb){var _0x45f601={},_0x333a5e={},_0x530763={'count':0x0,'rows':[]};var _0x5b7a39=_[_0x4829('0x2c')](db[_0x4829('0x2d')][_0x4829('0x2e')],function(_0x453dcb){return{'name':_0x453dcb[_0x4829('0x2f')],'type':_0x453dcb[_0x4829('0x30')]['key']};});_0x333a5e[_0x4829('0x31')]=_[_0x4829('0x2c')](_0x5b7a39,_0x4829('0x2a'));_0x333a5e['query']=_[_0x4829('0x32')](_0x3ab269[_0x4829('0x33')]);_0x333a5e[_0x4829('0x34')]=_[_0x4829('0x35')](_0x333a5e['model'],_0x333a5e[_0x4829('0x33')]);_0x45f601[_0x4829('0x36')]=_['intersection'](_0x333a5e[_0x4829('0x31')],qs[_0x4829('0x37')](_0x3ab269[_0x4829('0x33')]['fields']));_0x45f601[_0x4829('0x36')]=_0x45f601[_0x4829('0x36')][_0x4829('0x38')]?_0x45f601[_0x4829('0x36')]:_0x333a5e['model'];if(!_0x3ab269[_0x4829('0x33')]['hasOwnProperty'](_0x4829('0x39'))){_0x45f601[_0x4829('0x20')]=qs[_0x4829('0x20')](_0x3ab269['query'][_0x4829('0x20')]);_0x45f601[_0x4829('0x1d')]=qs[_0x4829('0x1d')](_0x3ab269[_0x4829('0x33')]['offset']);}_0x45f601['order']=qs[_0x4829('0x3a')](_0x3ab269[_0x4829('0x33')][_0x4829('0x3a')]);_0x45f601[_0x4829('0x3b')]=qs[_0x4829('0x34')](_['pick'](_0x3ab269['query'],_0x333a5e[_0x4829('0x34')]),_0x5b7a39);if(_0x3ab269[_0x4829('0x33')][_0x4829('0x3c')]){_0x45f601[_0x4829('0x3b')]=_[_0x4829('0x3d')](_0x45f601[_0x4829('0x3b')],{'$or':_[_0x4829('0x2c')](_0x5b7a39,function(_0x3c63ee){if(_0x3c63ee[_0x4829('0x30')]!==_0x4829('0x3e')){var _0x5a8aff={};_0x5a8aff[_0x3c63ee[_0x4829('0x2a')]]={'$like':'%'+_0x3ab269[_0x4829('0x33')]['filter']+'%'};return _0x5a8aff;}})});}_0x45f601=_['merge']({},_0x45f601,_0x3ab269[_0x4829('0x3f')]);var _0xb26a6f={'where':_0x45f601[_0x4829('0x3b')]};return db[_0x4829('0x2d')][_0x4829('0x1f')](_0xb26a6f)[_0x4829('0x27')](function(_0x425642){_0x530763[_0x4829('0x1f')]=_0x425642;if(_0x3ab269['query'][_0x4829('0x40')]){_0x45f601[_0x4829('0x41')]=[{'all':!![]}];}return db[_0x4829('0x2d')]['findAll'](_0x45f601);})[_0x4829('0x27')](function(_0x4eb262){_0x530763[_0x4829('0x42')]=_0x4eb262;return _0x530763;})[_0x4829('0x27')](respondWithFilteredResult(_0xa55dbb,_0x45f601))[_0x4829('0x43')](handleError(_0xa55dbb,null));};exports[_0x4829('0x44')]=function(_0x3532ea,_0x3ccf3b){var _0x2ef8b7={'raw':![],'where':{'id':_0x3532ea[_0x4829('0x45')]['id']}},_0x3a11ac={};_0x3a11ac['model']=_[_0x4829('0x32')](db[_0x4829('0x2d')]['rawAttributes']);_0x3a11ac['query']=_['keys'](_0x3532ea['query']);_0x3a11ac[_0x4829('0x34')]=_[_0x4829('0x35')](_0x3a11ac['model'],_0x3a11ac[_0x4829('0x33')]);_0x2ef8b7[_0x4829('0x36')]=_['intersection'](_0x3a11ac['model'],qs[_0x4829('0x37')](_0x3532ea[_0x4829('0x33')][_0x4829('0x37')]));_0x2ef8b7[_0x4829('0x36')]=_0x2ef8b7['attributes']['length']?_0x2ef8b7['attributes']:_0x3a11ac[_0x4829('0x31')];if(_0x3532ea[_0x4829('0x33')][_0x4829('0x40')]){_0x2ef8b7[_0x4829('0x41')]=[{'all':!![]}];}_0x2ef8b7=_[_0x4829('0x3d')]({},_0x2ef8b7,_0x3532ea[_0x4829('0x3f')]);return db[_0x4829('0x2d')][_0x4829('0x46')](_0x2ef8b7)[_0x4829('0x27')](handleEntityNotFound(_0x3ccf3b,null))[_0x4829('0x27')](respondWithResult(_0x3ccf3b,null))['catch'](handleError(_0x3ccf3b,null));};exports[_0x4829('0x47')]=function(_0x1d80e1,_0x5cc4ba){return db[_0x4829('0x2d')][_0x4829('0x47')](_0x1d80e1[_0x4829('0x48')],{})['then'](respondWithResult(_0x5cc4ba,0xc9))[_0x4829('0x43')](handleError(_0x5cc4ba,null));};exports[_0x4829('0x26')]=function(_0x499f3b,_0x1e8e4b){if(_0x499f3b[_0x4829('0x48')]['id']){delete _0x499f3b['body']['id'];}return db[_0x4829('0x2d')][_0x4829('0x46')]({'where':{'id':_0x499f3b[_0x4829('0x45')]['id']}})['then'](handleEntityNotFound(_0x1e8e4b,null))[_0x4829('0x27')](saveUpdates(_0x499f3b[_0x4829('0x48')],null))['then'](respondWithResult(_0x1e8e4b,null))[_0x4829('0x43')](handleError(_0x1e8e4b,null));};exports[_0x4829('0x28')]=function(_0x2f9918,_0x5231aa){return db['DeskAccount'][_0x4829('0x46')]({'where':{'id':_0x2f9918[_0x4829('0x45')]['id']}})[_0x4829('0x27')](handleEntityNotFound(_0x5231aa,null))[_0x4829('0x27')](removeEntity(_0x5231aa,null))[_0x4829('0x43')](handleError(_0x5231aa,null));};exports['getConfigurations']=function(_0x293d5d,_0x2f30d5,_0x53f9f2){var _0x415d02={};var _0x1cf8cc={};var _0x238877;var _0x3071b5;return db[_0x4829('0x2d')][_0x4829('0x49')]({'where':{'id':_0x293d5d[_0x4829('0x45')]['id']}})[_0x4829('0x27')](handleEntityNotFound(_0x2f30d5,null))[_0x4829('0x27')](function(_0x32a8f2){if(_0x32a8f2){_0x238877=_0x32a8f2;_0x1cf8cc[_0x4829('0x31')]=_[_0x4829('0x32')](db['DeskConfiguration']['rawAttributes']);_0x1cf8cc[_0x4829('0x33')]=_[_0x4829('0x32')](_0x293d5d[_0x4829('0x33')]);_0x1cf8cc[_0x4829('0x34')]=_['intersection'](_0x1cf8cc[_0x4829('0x31')],_0x1cf8cc[_0x4829('0x33')]);_0x415d02[_0x4829('0x36')]=_['intersection'](_0x1cf8cc[_0x4829('0x31')],qs[_0x4829('0x37')](_0x293d5d[_0x4829('0x33')]['fields']));_0x415d02[_0x4829('0x36')]=_0x415d02['attributes'][_0x4829('0x38')]?_0x415d02['attributes']:_0x1cf8cc[_0x4829('0x31')];_0x415d02[_0x4829('0x4a')]=qs['sort'](_0x293d5d[_0x4829('0x33')][_0x4829('0x3a')]);_0x415d02[_0x4829('0x3b')]=qs[_0x4829('0x34')](_[_0x4829('0x4b')](_0x293d5d['query'],_0x1cf8cc[_0x4829('0x34')]));if(_0x293d5d[_0x4829('0x33')]['filter']){_0x415d02[_0x4829('0x3b')]=_[_0x4829('0x3d')](_0x415d02[_0x4829('0x3b')],{'$or':_[_0x4829('0x2c')](_0x415d02['attributes'],function(_0x39b20e){var _0x7c9360={};_0x7c9360[_0x39b20e]={'$like':'%'+_0x293d5d[_0x4829('0x33')][_0x4829('0x3c')]+'%'};return _0x7c9360;})});}_0x415d02=_['merge']({},_0x415d02,_0x293d5d[_0x4829('0x3f')]);return _0x238877[_0x4829('0x4c')](_0x415d02);}})[_0x4829('0x27')](function(_0x5c78e4){if(_0x5c78e4){_0x3071b5=_0x5c78e4['length'];if(!_0x293d5d['query']['hasOwnProperty'](_0x4829('0x39'))){_0x415d02['limit']=qs[_0x4829('0x20')](_0x293d5d[_0x4829('0x33')][_0x4829('0x20')]);_0x415d02[_0x4829('0x1d')]=qs['offset'](_0x293d5d[_0x4829('0x33')][_0x4829('0x1d')]);}return _0x238877[_0x4829('0x4c')](_0x415d02);}})[_0x4829('0x27')](function(_0x3766b8){if(_0x3766b8){return _0x3766b8?{'count':_0x3071b5,'rows':_0x3766b8}:null;}})['then'](respondWithResult(_0x2f30d5,null))[_0x4829('0x43')](handleError(_0x2f30d5,null));};exports[_0x4829('0x4d')]=function(_0x168912,_0xde6f5c,_0x486dc2){if(_0x168912[_0x4829('0x48')]['id']){delete _0x168912[_0x4829('0x48')]['id'];}return db[_0x4829('0x2d')][_0x4829('0x49')]({'where':{'id':_0x168912[_0x4829('0x45')]['id']}})[_0x4829('0x27')](handleEntityNotFound(_0xde6f5c,null))[_0x4829('0x27')](function(_0x3a6a86){if(_0x3a6a86){_0x168912[_0x4829('0x48')][_0x4829('0x4e')]=_0x3a6a86['id'];_0x168912[_0x4829('0x48')][_0x4829('0x4f')]=integrations[_0x4829('0x50')](_0x168912[_0x4829('0x48')][_0x4829('0x51')],_0x168912[_0x4829('0x48')][_0x4829('0x30')]);_0x168912[_0x4829('0x48')]['Descriptions']=integrations[_0x4829('0x52')](_0x168912[_0x4829('0x48')]['channel'],_0x168912[_0x4829('0x48')][_0x4829('0x30')]);return db[_0x4829('0x53')][_0x4829('0x47')](_0x168912[_0x4829('0x48')],{'include':[{'model':db['DeskField'],'as':'Subjects'},{'model':db[_0x4829('0x54')],'as':_0x4829('0x55')}]});}return null;})['then'](respondWithResult(_0xde6f5c,null))[_0x4829('0x43')](handleError(_0xde6f5c,null));};exports[_0x4829('0x56')]=function(_0x24301c,_0x442b1a,_0x5052f1){var _0x599298=[{'name':_0x4829('0x57'),'label':_0x4829('0x57'),'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 _0x21d26e='';return db[_0x4829('0x2d')][_0x4829('0x49')]({'where':{'id':_0x24301c[_0x4829('0x45')]['id']},'attributes':['id',_0x4829('0x58'),_0x4829('0x59'),_0x4829('0x5a'),_0x4829('0x5b'),_0x4829('0x5c'),_0x4829('0x5d'),_0x4829('0x5e'),'tokenSecret']})['then'](handleEntityNotFound(_0x442b1a,null))['then'](function(_0x38d05f){if(_0x38d05f){_0x21d26e=_0x38d05f[_0x4829('0x58')];var _0x4d4489=_0x21d26e[_0x4829('0x5f')](-0x1);if(_0x4d4489==='/'){_0x21d26e=_0x21d26e['substring'](0x0,_0x21d26e[_0x4829('0x60')](_0x4d4489));}var _0x5ecbd2={'method':_0x4829('0x61'),'uri':util[_0x4829('0x62')](_0x4829('0x63'),_0x21d26e),'headers':{'Content-Type':_0x4829('0x64'),'Accept':_0x4829('0x64')},'json':!![]};if(_0x38d05f[_0x4829('0x59')]===_0x4829('0x65')){_0x5ecbd2[_0x4829('0x66')][_0x4829('0x67')]=util[_0x4829('0x62')](_0x4829('0x68'),new Buffer(util[_0x4829('0x62')](_0x4829('0x69'),_0x38d05f[_0x4829('0x5a')],_0x38d05f[_0x4829('0x5b')]))[_0x4829('0x6a')](_0x4829('0x6b')));}return rp(_0x5ecbd2)[_0x4829('0x27')](function(_0x1a3e54){return _0x599298[_0x4829('0x6c')](_[_0x4829('0x2c')](_0x1a3e54['_embedded'][_0x4829('0x6d')],function(_0x22a786){return{'id':_0x22a786[_0x4829('0x2a')],'name':_0x22a786[_0x4829('0x2a')],'type':_0x22a786[_0x4829('0x30')],'active':_0x22a786[_0x4829('0x6e')],'label':_0x22a786['label'],'custom':!![]};}));});}})['then'](function(_0x59db90){return{'count':_0x59db90[_0x4829('0x38')],'rows':_0x59db90};})[_0x4829('0x27')](respondWithResult(_0x442b1a,null))[_0x4829('0x43')](function(_0x317c60){var _0x17e377=_0x24301c[_0x4829('0x33')][_0x4829('0x6f')]?0x1f4:_0x317c60[_0x4829('0x70')]||0x1f4;logger['error'](_0x4829('0x71'),_0x4829('0x56'),_0x17e377,JSON['stringify'](_0x317c60));delete _0x317c60[_0x4829('0x2a')];if(_0x17e377===0x191){_0x17e377=0x190;}_0x442b1a[_0x4829('0x1b')](_0x17e377)[_0x4829('0x72')](_0x24301c['query'][_0x4829('0x6f')]?{'message':_0x4829('0x73'),'statusCode':_0x317c60[_0x4829('0x70')]}:_0x317c60);});};
\ No newline at end of file
index 1ee71e5..a5e6cd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0c4=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','int_desk_accounts','lodash','util'];(function(_0x1cd650,_0x4ac134){var _0x193ce7=function(_0x488a3e){while(--_0x488a3e){_0x1cd650['push'](_0x1cd650['shift']());}};_0x193ce7(++_0x4ac134);}(_0xa0c4,0x17e));var _0x4a0c=function(_0x3bdc21,_0x310fb3){_0x3bdc21=_0x3bdc21-0x0;var _0x5143b6=_0xa0c4[_0x3bdc21];return _0x5143b6;};'use strict';var _=require(_0x4a0c('0x0'));var util=require(_0x4a0c('0x1'));var logger=require(_0x4a0c('0x2'))(_0x4a0c('0x3'));var moment=require(_0x4a0c('0x4'));var BPromise=require(_0x4a0c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a0c('0x6'));var rimraf=require(_0x4a0c('0x7'));var config=require(_0x4a0c('0x8'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x4a0c('0x9'));module[_0x4a0c('0xa')]=function(_0x2fbf03,_0xe91f34){return _0x2fbf03['define']('DeskAccount',attributes,{'tableName':_0x4a0c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6dee=['request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash','util','../../config/logger','moment','bluebird'];(function(_0x1d0cd5,_0x3e0ba6){var _0x1c4592=function(_0x43b7cd){while(--_0x43b7cd){_0x1d0cd5['push'](_0x1d0cd5['shift']());}};_0x1c4592(++_0x3e0ba6);}(_0x6dee,0x64));var _0xe6de=function(_0x33ecf1,_0x3c75b7){_0x33ecf1=_0x33ecf1-0x0;var _0x2d8779=_0x6dee[_0x33ecf1];return _0x2d8779;};'use strict';var _=require(_0xe6de('0x0'));var util=require(_0xe6de('0x1'));var logger=require(_0xe6de('0x2'))('api');var moment=require(_0xe6de('0x3'));var BPromise=require(_0xe6de('0x4'));var rp=require(_0xe6de('0x5'));var fs=require('fs');var path=require(_0xe6de('0x6'));var rimraf=require(_0xe6de('0x7'));var config=require(_0xe6de('0x8'));var attributes=require(_0xe6de('0x9'));var integrations=require(_0xe6de('0xa'));module[_0xe6de('0xb')]=function(_0x4ad8bc,_0x16972a){return _0x4ad8bc[_0xe6de('0xc')](_0xe6de('0xd'),attributes,{'tableName':_0xe6de('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4051e93..1031327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdcc=['debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','DeskAccount,\x20%s,\x20%s','message','info','result','catch','GetDeskAccount','DeskAccount','findAll','options','where','attributes','limit','include','map','model','ShowDeskAccount','find','raw','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','then','request\x20sent'];(function(_0x38b14f,_0xd08fa8){var _0x22a324=function(_0x4bbb05){while(--_0x4bbb05){_0x38b14f['push'](_0x38b14f['shift']());}};_0x22a324(++_0xd08fa8);}(_0xbdcc,0x7c));var _0xcbdc=function(_0x39dbff,_0xfa190b){_0x39dbff=_0x39dbff-0x0;var _0x293498=_0xbdcc[_0x39dbff];return _0x293498;};'use strict';var _=require(_0xcbdc('0x0'));var util=require(_0xcbdc('0x1'));var moment=require(_0xcbdc('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcbdc('0x3'));var db=require(_0xcbdc('0x4'))['db'];var utils=require(_0xcbdc('0x5'));var logger=require(_0xcbdc('0x6'))(_0xcbdc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xcbdc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3ad46d,_0x45d686,_0x17c4f5){return new BPromise(function(_0x4cfc93,_0x4ab0b7){return client[_0xcbdc('0x9')](_0x3ad46d,_0x17c4f5)[_0xcbdc('0xa')](function(_0x15a402){logger['info']('DeskAccount,\x20%s,\x20%s',_0x45d686,_0xcbdc('0xb'));logger[_0xcbdc('0xc')](_0xcbdc('0xd'),_0x45d686,_0xcbdc('0xb'),JSON[_0xcbdc('0xe')](_0x15a402));if(_0x15a402['error']){if(_0x15a402[_0xcbdc('0xf')]['code']===0x1f4){logger['error'](_0xcbdc('0x10'),_0x45d686,_0x15a402[_0xcbdc('0xf')][_0xcbdc('0x11')]);return _0x4ab0b7(_0x15a402[_0xcbdc('0xf')]['message']);}logger['error'](_0xcbdc('0x10'),_0x45d686,_0x15a402['error'][_0xcbdc('0x11')]);return _0x4cfc93(_0x15a402['error']['message']);}else{logger[_0xcbdc('0x12')]('DeskAccount,\x20%s,\x20%s',_0x45d686,_0xcbdc('0xb'));_0x4cfc93(_0x15a402[_0xcbdc('0x13')][_0xcbdc('0x11')]);}})[_0xcbdc('0x14')](function(_0x1babbc){logger[_0xcbdc('0xf')]('DeskAccount,\x20%s,\x20%s',_0x45d686,_0x1babbc);_0x4ab0b7(_0x1babbc);});});}exports[_0xcbdc('0x15')]=function(_0x5ba312){var _0x35b5ee=this;return new Promise(function(_0x44be0b,_0x5e81ab){return db[_0xcbdc('0x16')][_0xcbdc('0x17')]({'raw':_0x5ba312[_0xcbdc('0x18')]?_0x5ba312[_0xcbdc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x5ba312[_0xcbdc('0x18')]?_0x5ba312[_0xcbdc('0x18')][_0xcbdc('0x19')]||null:null,'attributes':_0x5ba312[_0xcbdc('0x18')]?_0x5ba312[_0xcbdc('0x18')][_0xcbdc('0x1a')]||null:null,'limit':_0x5ba312[_0xcbdc('0x18')]?_0x5ba312[_0xcbdc('0x18')][_0xcbdc('0x1b')]||null:null,'include':_0x5ba312[_0xcbdc('0x18')]?_0x5ba312[_0xcbdc('0x18')][_0xcbdc('0x1c')]?_[_0xcbdc('0x1d')](_0x5ba312[_0xcbdc('0x18')][_0xcbdc('0x1c')],function(_0x1e66c7){return{'model':db[_0x1e66c7[_0xcbdc('0x1e')]],'as':_0x1e66c7['as'],'attributes':_0x1e66c7[_0xcbdc('0x1a')],'include':_0x1e66c7['include']?_[_0xcbdc('0x1d')](_0x1e66c7[_0xcbdc('0x1c')],function(_0xfdf992){return{'model':db[_0xfdf992[_0xcbdc('0x1e')]],'as':_0xfdf992['as'],'attributes':_0xfdf992['attributes'],'include':_0xfdf992['include']?_[_0xcbdc('0x1d')](_0xfdf992[_0xcbdc('0x1c')],function(_0x5c65c3){return{'model':db[_0x5c65c3[_0xcbdc('0x1e')]],'as':_0x5c65c3['as'],'attributes':_0x5c65c3[_0xcbdc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xcbdc('0xa')](function(_0x53174c){logger[_0xcbdc('0x12')]('GetDeskAccount',_0x5ba312);logger[_0xcbdc('0xc')](_0xcbdc('0x15'),_0x5ba312,JSON[_0xcbdc('0xe')](_0x53174c));_0x44be0b(_0x53174c);})['catch'](function(_0x127494){logger[_0xcbdc('0xf')]('GetDeskAccount',_0x127494[_0xcbdc('0x11')],_0x5ba312);_0x5e81ab(_0x35b5ee[_0xcbdc('0xf')](0x1f4,_0x127494[_0xcbdc('0x11')]));});});};exports[_0xcbdc('0x1f')]=function(_0x4be07c){var _0x39aa67=this;return new Promise(function(_0x86b928,_0x3a6bec){return db[_0xcbdc('0x16')][_0xcbdc('0x20')]({'raw':_0x4be07c['options']?_0x4be07c[_0xcbdc('0x18')][_0xcbdc('0x21')]===undefined?!![]:![]:!![],'where':_0x4be07c['options']?_0x4be07c['options'][_0xcbdc('0x19')]||null:null,'attributes':_0x4be07c[_0xcbdc('0x18')]?_0x4be07c[_0xcbdc('0x18')][_0xcbdc('0x1a')]||null:null,'include':_0x4be07c[_0xcbdc('0x18')]?_0x4be07c[_0xcbdc('0x18')]['include']?_[_0xcbdc('0x1d')](_0x4be07c['options'][_0xcbdc('0x1c')],function(_0x4a0089){return{'model':db[_0x4a0089[_0xcbdc('0x1e')]],'as':_0x4a0089['as'],'attributes':_0x4a0089['attributes'],'include':_0x4a0089[_0xcbdc('0x1c')]?_['map'](_0x4a0089[_0xcbdc('0x1c')],function(_0x38469f){return{'model':db[_0x38469f[_0xcbdc('0x1e')]],'as':_0x38469f['as'],'attributes':_0x38469f['attributes'],'include':_0x38469f[_0xcbdc('0x1c')]?_[_0xcbdc('0x1d')](_0x38469f[_0xcbdc('0x1c')],function(_0x3eb890){return{'model':db[_0x3eb890[_0xcbdc('0x1e')]],'as':_0x3eb890['as'],'attributes':_0x3eb890['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1f8e2e){logger['info'](_0xcbdc('0x1f'),_0x4be07c);logger[_0xcbdc('0xc')](_0xcbdc('0x1f'),_0x4be07c,JSON['stringify'](_0x1f8e2e));_0x86b928(_0x1f8e2e);})[_0xcbdc('0x14')](function(_0x1911fc){logger[_0xcbdc('0xf')](_0xcbdc('0x1f'),_0x1911fc[_0xcbdc('0x11')],_0x4be07c);_0x3a6bec(_0x39aa67[_0xcbdc('0xf')](0x1f4,_0x1911fc[_0xcbdc('0x11')]));});});};
\ No newline at end of file
+var _0xd792=['raw','debug','ShowDeskAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','then','info','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','DeskAccount,\x20%s,\x20%s','message','result','catch','DeskAccount','findAll','options','where','attributes','include','map','model','GetDeskAccount','find'];(function(_0x280e24,_0x3cfd99){var _0x5b6dd3=function(_0x53b75c){while(--_0x53b75c){_0x280e24['push'](_0x280e24['shift']());}};_0x5b6dd3(++_0x3cfd99);}(_0xd792,0x103));var _0x2d79=function(_0x21b134,_0x20cdaf){_0x21b134=_0x21b134-0x0;var _0x582a08=_0xd792[_0x21b134];return _0x582a08;};'use strict';var _=require(_0x2d79('0x0'));var util=require(_0x2d79('0x1'));var moment=require('moment');var BPromise=require(_0x2d79('0x2'));var rs=require(_0x2d79('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d79('0x4'))['db'];var utils=require(_0x2d79('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x2d79('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x2d79('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x757453,_0x26aff9,_0x1c8c17){return new BPromise(function(_0x3e6596,_0x4c9de6){return client['request'](_0x757453,_0x1c8c17)[_0x2d79('0x8')](function(_0x33ecdb){logger[_0x2d79('0x9')]('DeskAccount,\x20%s,\x20%s',_0x26aff9,_0x2d79('0xa'));logger['debug'](_0x2d79('0xb'),_0x26aff9,_0x2d79('0xa'),JSON[_0x2d79('0xc')](_0x33ecdb));if(_0x33ecdb[_0x2d79('0xd')]){if(_0x33ecdb[_0x2d79('0xd')][_0x2d79('0xe')]===0x1f4){logger[_0x2d79('0xd')](_0x2d79('0xf'),_0x26aff9,_0x33ecdb[_0x2d79('0xd')]['message']);return _0x4c9de6(_0x33ecdb[_0x2d79('0xd')]['message']);}logger[_0x2d79('0xd')](_0x2d79('0xf'),_0x26aff9,_0x33ecdb['error'][_0x2d79('0x10')]);return _0x3e6596(_0x33ecdb['error'][_0x2d79('0x10')]);}else{logger[_0x2d79('0x9')]('DeskAccount,\x20%s,\x20%s',_0x26aff9,_0x2d79('0xa'));_0x3e6596(_0x33ecdb[_0x2d79('0x11')][_0x2d79('0x10')]);}})[_0x2d79('0x12')](function(_0x53d226){logger[_0x2d79('0xd')](_0x2d79('0xf'),_0x26aff9,_0x53d226);_0x4c9de6(_0x53d226);});});}exports['GetDeskAccount']=function(_0x24a5cd){var _0x3505ad=this;return new Promise(function(_0x26688a,_0x32fd86){return db[_0x2d79('0x13')][_0x2d79('0x14')]({'raw':_0x24a5cd['options']?_0x24a5cd[_0x2d79('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x24a5cd['options']?_0x24a5cd['options'][_0x2d79('0x16')]||null:null,'attributes':_0x24a5cd[_0x2d79('0x15')]?_0x24a5cd[_0x2d79('0x15')][_0x2d79('0x17')]||null:null,'limit':_0x24a5cd[_0x2d79('0x15')]?_0x24a5cd[_0x2d79('0x15')]['limit']||null:null,'include':_0x24a5cd[_0x2d79('0x15')]?_0x24a5cd['options'][_0x2d79('0x18')]?_[_0x2d79('0x19')](_0x24a5cd[_0x2d79('0x15')][_0x2d79('0x18')],function(_0x311167){return{'model':db[_0x311167['model']],'as':_0x311167['as'],'attributes':_0x311167['attributes'],'include':_0x311167[_0x2d79('0x18')]?_[_0x2d79('0x19')](_0x311167['include'],function(_0xce3634){return{'model':db[_0xce3634['model']],'as':_0xce3634['as'],'attributes':_0xce3634[_0x2d79('0x17')],'include':_0xce3634[_0x2d79('0x18')]?_[_0x2d79('0x19')](_0xce3634[_0x2d79('0x18')],function(_0x5e5bea){return{'model':db[_0x5e5bea[_0x2d79('0x1a')]],'as':_0x5e5bea['as'],'attributes':_0x5e5bea['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b2a39){logger[_0x2d79('0x9')](_0x2d79('0x1b'),_0x24a5cd);logger['debug'](_0x2d79('0x1b'),_0x24a5cd,JSON[_0x2d79('0xc')](_0x5b2a39));_0x26688a(_0x5b2a39);})[_0x2d79('0x12')](function(_0x2e65e2){logger[_0x2d79('0xd')](_0x2d79('0x1b'),_0x2e65e2[_0x2d79('0x10')],_0x24a5cd);_0x32fd86(_0x3505ad[_0x2d79('0xd')](0x1f4,_0x2e65e2[_0x2d79('0x10')]));});});};exports['ShowDeskAccount']=function(_0x5e3d1c){var _0xf92e13=this;return new Promise(function(_0x22abf3,_0x10acbe){return db[_0x2d79('0x13')][_0x2d79('0x1c')]({'raw':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c['options'][_0x2d79('0x1d')]===undefined?!![]:![]:!![],'where':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c['options'][_0x2d79('0x16')]||null:null,'attributes':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c[_0x2d79('0x15')][_0x2d79('0x17')]||null:null,'include':_0x5e3d1c[_0x2d79('0x15')]?_0x5e3d1c[_0x2d79('0x15')][_0x2d79('0x18')]?_[_0x2d79('0x19')](_0x5e3d1c[_0x2d79('0x15')]['include'],function(_0x15f96d){return{'model':db[_0x15f96d[_0x2d79('0x1a')]],'as':_0x15f96d['as'],'attributes':_0x15f96d['attributes'],'include':_0x15f96d[_0x2d79('0x18')]?_['map'](_0x15f96d[_0x2d79('0x18')],function(_0x4ce824){return{'model':db[_0x4ce824[_0x2d79('0x1a')]],'as':_0x4ce824['as'],'attributes':_0x4ce824['attributes'],'include':_0x4ce824[_0x2d79('0x18')]?_['map'](_0x4ce824['include'],function(_0x3ccc7e){return{'model':db[_0x3ccc7e['model']],'as':_0x3ccc7e['as'],'attributes':_0x3ccc7e[_0x2d79('0x17')]};}):[]};}):[]};}):[]:[]})[_0x2d79('0x8')](function(_0x1676fc){logger[_0x2d79('0x9')]('ShowDeskAccount',_0x5e3d1c);logger[_0x2d79('0x1e')](_0x2d79('0x1f'),_0x5e3d1c,JSON[_0x2d79('0xc')](_0x1676fc));_0x22abf3(_0x1676fc);})['catch'](function(_0x867062){logger[_0x2d79('0xd')]('ShowDeskAccount',_0x867062[_0x2d79('0x10')],_0x5e3d1c);_0x10acbe(_0xf92e13['error'](0x1f4,_0x867062[_0x2d79('0x10')]));});});};
\ No newline at end of file
index 7b90d3d..4f29b98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','getFields','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x156cdc,_0x2834e7){var _0x3344ee=function(_0xae519a){while(--_0xae519a){_0x156cdc['push'](_0x156cdc['shift']());}};_0x3344ee(++_0x2834e7);}(_0x008c,0x188));var _0xc008=function(_0x549443,_0x2e04c8){_0x549443=_0x549443-0x0;var _0x372ed3=_0x008c[_0x549443];return _0x372ed3;};'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('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);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('0x10'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x14')](_0xc008('0x15'),auth[_0xc008('0xb')](),controller[_0xc008('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x17')]);module[_0xc008('0x18')]=router;
\ No newline at end of file
+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(_0x196068,_0x49608c){var _0x175b6c=function(_0xdbad55){while(--_0xdbad55){_0x196068['push'](_0x196068['shift']());}};_0x175b6c(++_0x49608c);}(_0x9c44,0x178));var _0x49c4=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x9c44[_0x1d9aa0];return _0x226868;};'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
index 30d6bdc..382e081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefe7=['STRING','exports'];(function(_0x44985d,_0xafc7e8){var _0x38e607=function(_0x8afd57){while(--_0x8afd57){_0x44985d['push'](_0x44985d['shift']());}};_0x38e607(++_0xafc7e8);}(_0xefe7,0xeb));var _0x7efe=function(_0x5b0579,_0x2c40ca){_0x5b0579=_0x5b0579-0x0;var _0x3b1a9b=_0xefe7[_0x5b0579];return _0x3b1a9b;};'use strict';var Sequelize=require('sequelize');module[_0x7efe('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7efe('0x1')]}};
\ No newline at end of file
+var _0xe1cb=['STRING','exports'];(function(_0x2ef030,_0x21dc23){var _0x326661=function(_0x4694e2){while(--_0x4694e2){_0x2ef030['push'](_0x2ef030['shift']());}};_0x326661(++_0x21dc23);}(_0xe1cb,0x117));var _0xbe1c=function(_0x1ac8fc,_0x14397b){_0x1ac8fc=_0x1ac8fc-0x0;var _0x45571e=_0xe1cb[_0x1ac8fc];return _0x45571e;};'use strict';var Sequelize=require('sequelize');module[_0xbe1c('0x0')]={'name':{'type':Sequelize[_0xbe1c('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 69b45f7..e78140a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdad=['order','sort','where','pick','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','merge','find','create','body','destroy','getFields','findOne','getSubjects','DeskField','getDescriptions','getTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','apply','reject','save','update','then','name','send','index','map','DeskConfiguration','rawAttributes','type','key','query','keys','intersection','attributes','model','length','hasOwnProperty','nolimit'];(function(_0x46fc28,_0x4746fb){var _0x5888fe=function(_0x3cec18){while(--_0x3cec18){_0x46fc28['push'](_0x46fc28['shift']());}};_0x5888fe(++_0x4746fb);}(_0xbdad,0xc0));var _0xdbda=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xbdad[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xdbda('0x0'));var rimraf=require(_0xdbda('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdbda('0x2'));var rp=require(_0xdbda('0x3'));var moment=require(_0xdbda('0x4'));var BPromise=require(_0xdbda('0x5'));var Mustache=require(_0xdbda('0x6'));var util=require(_0xdbda('0x7'));var path=require('path');var sox=require(_0xdbda('0x8'));var csv=require(_0xdbda('0x9'));var ejs=require(_0xdbda('0xa'));var fs=require('fs');var fs_extra=require(_0xdbda('0xb'));var _=require(_0xdbda('0xc'));var squel=require(_0xdbda('0xd'));var crypto=require(_0xdbda('0xe'));var jsforce=require(_0xdbda('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xdbda('0x9'));var querystring=require('querystring');var Papa=require(_0xdbda('0x10'));var Redis=require(_0xdbda('0x11'));var authService=require(_0xdbda('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdbda('0x13'));var logger=require(_0xdbda('0x14'))(_0xdbda('0x15'));var utils=require(_0xdbda('0x16'));var config=require(_0xdbda('0x17'));var licenseUtil=require(_0xdbda('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x16303f,_0x37894f){_0x37894f=_0x37894f||0xcc;return function(_0x434c43){if(_0x434c43){return _0x16303f[_0xdbda('0x19')](_0x37894f);}return _0x16303f[_0xdbda('0x1a')](_0x37894f)[_0xdbda('0x1b')]();};}function respondWithResult(_0x5bd0f4,_0x44c9e1){_0x44c9e1=_0x44c9e1||0xc8;return function(_0x4c021e){if(_0x4c021e){return _0x5bd0f4[_0xdbda('0x1a')](_0x44c9e1)[_0xdbda('0x1c')](_0x4c021e);}};}function respondWithFilteredResult(_0x521906,_0x423e43){return function(_0x32a764){if(_0x32a764){var _0x399eac=typeof _0x423e43[_0xdbda('0x1d')]==='undefined'&&typeof _0x423e43[_0xdbda('0x1e')]==='undefined';var _0x30152c=_0x32a764[_0xdbda('0x1f')];var _0x268432=_0x399eac?0x0:_0x423e43[_0xdbda('0x1d')];var _0x513237=_0x399eac?_0x32a764[_0xdbda('0x1f')]:_0x423e43['offset']+_0x423e43[_0xdbda('0x1e')];var _0x4c66b0;if(_0x513237>=_0x30152c){_0x513237=_0x30152c;_0x4c66b0=0xc8;}else{_0x4c66b0=0xce;}_0x521906[_0xdbda('0x1a')](_0x4c66b0);return _0x521906[_0xdbda('0x20')]('Content-Range',_0x268432+'-'+_0x513237+'/'+_0x30152c)[_0xdbda('0x1c')](_0x32a764);}return null;};}function patchUpdates(_0xc60228){return function(_0x30abab){try{jsonpatch[_0xdbda('0x21')](_0x30abab,_0xc60228,!![]);}catch(_0x58c3d1){return BPromise[_0xdbda('0x22')](_0x58c3d1);}return _0x30abab[_0xdbda('0x23')]();};}function saveUpdates(_0x3c587f,_0x3accc9){return function(_0x295e25){if(_0x295e25){return _0x295e25[_0xdbda('0x24')](_0x3c587f)[_0xdbda('0x25')](function(_0x2c83c4){return _0x2c83c4;});}return null;};}function removeEntity(_0x5e405c,_0x5ddc2a){return function(_0x4a8961){if(_0x4a8961){return _0x4a8961['destroy']()['then'](function(){_0x5e405c[_0xdbda('0x1a')](0xcc)[_0xdbda('0x1b')]();});}};}function handleEntityNotFound(_0x100d04,_0x236425){return function(_0x46e81a){if(!_0x46e81a){_0x100d04[_0xdbda('0x19')](0x194);}return _0x46e81a;};}function handleError(_0x50da01,_0x2b9440){_0x2b9440=_0x2b9440||0x1f4;return function(_0x5c298d){logger['error'](_0x5c298d['stack']);if(_0x5c298d[_0xdbda('0x26')]){delete _0x5c298d[_0xdbda('0x26')];}_0x50da01[_0xdbda('0x1a')](_0x2b9440)[_0xdbda('0x27')](_0x5c298d);};}exports[_0xdbda('0x28')]=function(_0x21580a,_0x4e1c64){var _0x39ca25={},_0x226138={},_0x3e1d1e={'count':0x0,'rows':[]};var _0x474f90=_[_0xdbda('0x29')](db[_0xdbda('0x2a')][_0xdbda('0x2b')],function(_0x449d89){return{'name':_0x449d89['fieldName'],'type':_0x449d89[_0xdbda('0x2c')][_0xdbda('0x2d')]};});_0x226138['model']=_[_0xdbda('0x29')](_0x474f90,_0xdbda('0x26'));_0x226138[_0xdbda('0x2e')]=_[_0xdbda('0x2f')](_0x21580a[_0xdbda('0x2e')]);_0x226138['filters']=_[_0xdbda('0x30')](_0x226138['model'],_0x226138[_0xdbda('0x2e')]);_0x39ca25[_0xdbda('0x31')]=_[_0xdbda('0x30')](_0x226138[_0xdbda('0x32')],qs['fields'](_0x21580a[_0xdbda('0x2e')]['fields']));_0x39ca25['attributes']=_0x39ca25['attributes'][_0xdbda('0x33')]?_0x39ca25[_0xdbda('0x31')]:_0x226138[_0xdbda('0x32')];if(!_0x21580a[_0xdbda('0x2e')][_0xdbda('0x34')](_0xdbda('0x35'))){_0x39ca25['limit']=qs[_0xdbda('0x1e')](_0x21580a[_0xdbda('0x2e')]['limit']);_0x39ca25['offset']=qs[_0xdbda('0x1d')](_0x21580a['query'][_0xdbda('0x1d')]);}_0x39ca25[_0xdbda('0x36')]=qs[_0xdbda('0x37')](_0x21580a[_0xdbda('0x2e')][_0xdbda('0x37')]);_0x39ca25[_0xdbda('0x38')]=qs['filters'](_[_0xdbda('0x39')](_0x21580a[_0xdbda('0x2e')],_0x226138[_0xdbda('0x3a')]),_0x474f90);if(_0x21580a[_0xdbda('0x2e')][_0xdbda('0x3b')]){_0x39ca25[_0xdbda('0x38')]=_['merge'](_0x39ca25[_0xdbda('0x38')],{'$or':_['map'](_0x474f90,function(_0x1161f0){if(_0x1161f0[_0xdbda('0x2c')]!==_0xdbda('0x3c')){var _0x14ca64={};_0x14ca64[_0x1161f0[_0xdbda('0x26')]]={'$like':'%'+_0x21580a[_0xdbda('0x2e')][_0xdbda('0x3b')]+'%'};return _0x14ca64;}})});}_0x39ca25=_['merge']({},_0x39ca25,_0x21580a[_0xdbda('0x3d')]);var _0x4b7a48={'where':_0x39ca25[_0xdbda('0x38')]};return db[_0xdbda('0x2a')][_0xdbda('0x1f')](_0x4b7a48)[_0xdbda('0x25')](function(_0x8d286e){_0x3e1d1e['count']=_0x8d286e;if(_0x21580a[_0xdbda('0x2e')][_0xdbda('0x3e')]){_0x39ca25[_0xdbda('0x3f')]=[{'all':!![]}];}return db[_0xdbda('0x2a')][_0xdbda('0x40')](_0x39ca25);})[_0xdbda('0x25')](function(_0x160b01){_0x3e1d1e[_0xdbda('0x41')]=_0x160b01;return _0x3e1d1e;})['then'](respondWithFilteredResult(_0x4e1c64,_0x39ca25))[_0xdbda('0x42')](handleError(_0x4e1c64,null));};exports[_0xdbda('0x43')]=function(_0x138001,_0x3adb9e){var _0xe377b6={'raw':![],'where':{'id':_0x138001[_0xdbda('0x44')]['id']}},_0x5691e3={};_0x5691e3[_0xdbda('0x32')]=_['keys'](db['DeskConfiguration']['rawAttributes']);_0x5691e3['query']=_[_0xdbda('0x2f')](_0x138001['query']);_0x5691e3['filters']=_['intersection'](_0x5691e3[_0xdbda('0x32')],_0x5691e3[_0xdbda('0x2e')]);_0xe377b6[_0xdbda('0x31')]=_['intersection'](_0x5691e3[_0xdbda('0x32')],qs[_0xdbda('0x45')](_0x138001[_0xdbda('0x2e')][_0xdbda('0x45')]));_0xe377b6[_0xdbda('0x31')]=_0xe377b6['attributes'][_0xdbda('0x33')]?_0xe377b6[_0xdbda('0x31')]:_0x5691e3[_0xdbda('0x32')];if(_0x138001['query'][_0xdbda('0x3e')]){_0xe377b6['include']=[{'all':!![]}];}_0xe377b6=_[_0xdbda('0x46')]({},_0xe377b6,_0x138001[_0xdbda('0x3d')]);return db[_0xdbda('0x2a')][_0xdbda('0x47')](_0xe377b6)[_0xdbda('0x25')](handleEntityNotFound(_0x3adb9e,null))[_0xdbda('0x25')](respondWithResult(_0x3adb9e,null))[_0xdbda('0x42')](handleError(_0x3adb9e,null));};exports[_0xdbda('0x48')]=function(_0x5915ca,_0xc2eac3){return db['DeskConfiguration'][_0xdbda('0x48')](_0x5915ca['body'],{})[_0xdbda('0x25')](respondWithResult(_0xc2eac3,0xc9))[_0xdbda('0x42')](handleError(_0xc2eac3,null));};exports['update']=function(_0x3a6ca8,_0x4ac41b){if(_0x3a6ca8[_0xdbda('0x49')]['id']){delete _0x3a6ca8['body']['id'];}return db[_0xdbda('0x2a')][_0xdbda('0x47')]({'where':{'id':_0x3a6ca8[_0xdbda('0x44')]['id']}})[_0xdbda('0x25')](handleEntityNotFound(_0x4ac41b,null))[_0xdbda('0x25')](saveUpdates(_0x3a6ca8[_0xdbda('0x49')],null))[_0xdbda('0x25')](respondWithResult(_0x4ac41b,null))['catch'](handleError(_0x4ac41b,null));};exports[_0xdbda('0x4a')]=function(_0x13521e,_0x20fb4e){return db['DeskConfiguration'][_0xdbda('0x47')]({'where':{'id':_0x13521e[_0xdbda('0x44')]['id']}})['then'](handleEntityNotFound(_0x20fb4e,null))[_0xdbda('0x25')](removeEntity(_0x20fb4e,null))[_0xdbda('0x42')](handleError(_0x20fb4e,null));};exports[_0xdbda('0x4b')]=function(_0x243934,_0x371075,_0x371da8){var _0x7a47ee={};var _0x8abd96={};var _0x3bf4b0;var _0x37feb4;return db[_0xdbda('0x2a')][_0xdbda('0x4c')]({'where':{'id':_0x243934[_0xdbda('0x44')]['id']}})[_0xdbda('0x25')](handleEntityNotFound(_0x371075,null))['then'](function(_0x4a5ae1){if(_0x4a5ae1){_0x3bf4b0=_0x4a5ae1;_0x8abd96[_0xdbda('0x32')]=_[_0xdbda('0x2f')](db['DeskField']['rawAttributes']);_0x8abd96[_0xdbda('0x2e')]=_[_0xdbda('0x2f')](_0x243934[_0xdbda('0x2e')]);_0x8abd96[_0xdbda('0x3a')]=_['intersection'](_0x8abd96['model'],_0x8abd96[_0xdbda('0x2e')]);_0x7a47ee[_0xdbda('0x31')]=_[_0xdbda('0x30')](_0x8abd96['model'],qs['fields'](_0x243934[_0xdbda('0x2e')][_0xdbda('0x45')]));_0x7a47ee[_0xdbda('0x31')]=_0x7a47ee[_0xdbda('0x31')][_0xdbda('0x33')]?_0x7a47ee[_0xdbda('0x31')]:_0x8abd96[_0xdbda('0x32')];_0x7a47ee[_0xdbda('0x36')]=qs[_0xdbda('0x37')](_0x243934[_0xdbda('0x2e')]['sort']);_0x7a47ee[_0xdbda('0x38')]=qs[_0xdbda('0x3a')](_['pick'](_0x243934[_0xdbda('0x2e')],_0x8abd96['filters']));if(_0x243934['query'][_0xdbda('0x3b')]){_0x7a47ee[_0xdbda('0x38')]=_['merge'](_0x7a47ee[_0xdbda('0x38')],{'$or':_[_0xdbda('0x29')](_0x7a47ee[_0xdbda('0x31')],function(_0x36572e){var _0x2d4f73={};_0x2d4f73[_0x36572e]={'$like':'%'+_0x243934['query'][_0xdbda('0x3b')]+'%'};return _0x2d4f73;})});}_0x7a47ee=_['merge']({},_0x7a47ee,_0x243934[_0xdbda('0x3d')]);return _0x3bf4b0['getFields'](_0x7a47ee);}})[_0xdbda('0x25')](function(_0x3618fc){if(_0x3618fc){_0x37feb4=_0x3618fc[_0xdbda('0x33')];if(!_0x243934['query']['hasOwnProperty'](_0xdbda('0x35'))){_0x7a47ee['limit']=qs[_0xdbda('0x1e')](_0x243934[_0xdbda('0x2e')][_0xdbda('0x1e')]);_0x7a47ee[_0xdbda('0x1d')]=qs[_0xdbda('0x1d')](_0x243934[_0xdbda('0x2e')][_0xdbda('0x1d')]);}return _0x3bf4b0[_0xdbda('0x4b')](_0x7a47ee);}})[_0xdbda('0x25')](function(_0x294761){if(_0x294761){return _0x294761?{'count':_0x37feb4,'rows':_0x294761}:null;}})[_0xdbda('0x25')](respondWithResult(_0x371075,null))[_0xdbda('0x42')](handleError(_0x371075,null));};exports[_0xdbda('0x4d')]=function(_0x8655a,_0x2c6776,_0x2d0c2a){var _0x574fc0={};var _0x37fd39={};var _0x5d9557;var _0x52336a;return db[_0xdbda('0x2a')]['findOne']({'where':{'id':_0x8655a[_0xdbda('0x44')]['id']}})[_0xdbda('0x25')](handleEntityNotFound(_0x2c6776,null))[_0xdbda('0x25')](function(_0x2e7c01){if(_0x2e7c01){_0x5d9557=_0x2e7c01;_0x37fd39[_0xdbda('0x32')]=_[_0xdbda('0x2f')](db[_0xdbda('0x4e')][_0xdbda('0x2b')]);_0x37fd39['query']=_[_0xdbda('0x2f')](_0x8655a[_0xdbda('0x2e')]);_0x37fd39[_0xdbda('0x3a')]=_[_0xdbda('0x30')](_0x37fd39[_0xdbda('0x32')],_0x37fd39['query']);_0x574fc0['attributes']=_[_0xdbda('0x30')](_0x37fd39[_0xdbda('0x32')],qs[_0xdbda('0x45')](_0x8655a['query'][_0xdbda('0x45')]));_0x574fc0['attributes']=_0x574fc0['attributes'][_0xdbda('0x33')]?_0x574fc0[_0xdbda('0x31')]:_0x37fd39[_0xdbda('0x32')];_0x574fc0['order']=qs[_0xdbda('0x37')](_0x8655a[_0xdbda('0x2e')][_0xdbda('0x37')]);_0x574fc0[_0xdbda('0x38')]=qs[_0xdbda('0x3a')](_[_0xdbda('0x39')](_0x8655a[_0xdbda('0x2e')],_0x37fd39['filters']));if(_0x8655a[_0xdbda('0x2e')][_0xdbda('0x3b')]){_0x574fc0[_0xdbda('0x38')]=_[_0xdbda('0x46')](_0x574fc0[_0xdbda('0x38')],{'$or':_[_0xdbda('0x29')](_0x574fc0['attributes'],function(_0x3c1737){var _0xa6178c={};_0xa6178c[_0x3c1737]={'$like':'%'+_0x8655a['query'][_0xdbda('0x3b')]+'%'};return _0xa6178c;})});}_0x574fc0=_[_0xdbda('0x46')]({},_0x574fc0,_0x8655a[_0xdbda('0x3d')]);return _0x5d9557[_0xdbda('0x4d')](_0x574fc0);}})[_0xdbda('0x25')](function(_0x439ece){if(_0x439ece){_0x52336a=_0x439ece[_0xdbda('0x33')];if(!_0x8655a[_0xdbda('0x2e')][_0xdbda('0x34')](_0xdbda('0x35'))){_0x574fc0[_0xdbda('0x1e')]=qs[_0xdbda('0x1e')](_0x8655a[_0xdbda('0x2e')][_0xdbda('0x1e')]);_0x574fc0['offset']=qs['offset'](_0x8655a[_0xdbda('0x2e')]['offset']);}return _0x5d9557[_0xdbda('0x4d')](_0x574fc0);}})[_0xdbda('0x25')](function(_0x406ee4){if(_0x406ee4){return _0x406ee4?{'count':_0x52336a,'rows':_0x406ee4}:null;}})['then'](respondWithResult(_0x2c6776,null))[_0xdbda('0x42')](handleError(_0x2c6776,null));};exports[_0xdbda('0x4f')]=function(_0x42b8a8,_0x429b07,_0xcf4f0c){var _0x2ae854={};var _0x276528={};var _0x1b60c4;var _0x70229;return db[_0xdbda('0x2a')][_0xdbda('0x4c')]({'where':{'id':_0x42b8a8[_0xdbda('0x44')]['id']}})[_0xdbda('0x25')](handleEntityNotFound(_0x429b07,null))[_0xdbda('0x25')](function(_0x54753d){if(_0x54753d){_0x1b60c4=_0x54753d;_0x276528[_0xdbda('0x32')]=_['keys'](db[_0xdbda('0x4e')][_0xdbda('0x2b')]);_0x276528['query']=_['keys'](_0x42b8a8[_0xdbda('0x2e')]);_0x276528[_0xdbda('0x3a')]=_[_0xdbda('0x30')](_0x276528[_0xdbda('0x32')],_0x276528['query']);_0x2ae854[_0xdbda('0x31')]=_['intersection'](_0x276528['model'],qs[_0xdbda('0x45')](_0x42b8a8['query'][_0xdbda('0x45')]));_0x2ae854[_0xdbda('0x31')]=_0x2ae854[_0xdbda('0x31')]['length']?_0x2ae854[_0xdbda('0x31')]:_0x276528[_0xdbda('0x32')];_0x2ae854[_0xdbda('0x36')]=qs['sort'](_0x42b8a8['query'][_0xdbda('0x37')]);_0x2ae854['where']=qs[_0xdbda('0x3a')](_[_0xdbda('0x39')](_0x42b8a8['query'],_0x276528[_0xdbda('0x3a')]));if(_0x42b8a8[_0xdbda('0x2e')]['filter']){_0x2ae854[_0xdbda('0x38')]=_[_0xdbda('0x46')](_0x2ae854['where'],{'$or':_[_0xdbda('0x29')](_0x2ae854[_0xdbda('0x31')],function(_0x5e8bda){var _0xf2e865={};_0xf2e865[_0x5e8bda]={'$like':'%'+_0x42b8a8[_0xdbda('0x2e')][_0xdbda('0x3b')]+'%'};return _0xf2e865;})});}_0x2ae854=_[_0xdbda('0x46')]({},_0x2ae854,_0x42b8a8[_0xdbda('0x3d')]);return _0x1b60c4[_0xdbda('0x4f')](_0x2ae854);}})[_0xdbda('0x25')](function(_0x48b960){if(_0x48b960){_0x70229=_0x48b960[_0xdbda('0x33')];if(!_0x42b8a8[_0xdbda('0x2e')][_0xdbda('0x34')](_0xdbda('0x35'))){_0x2ae854[_0xdbda('0x1e')]=qs[_0xdbda('0x1e')](_0x42b8a8[_0xdbda('0x2e')][_0xdbda('0x1e')]);_0x2ae854[_0xdbda('0x1d')]=qs[_0xdbda('0x1d')](_0x42b8a8['query'][_0xdbda('0x1d')]);}return _0x1b60c4[_0xdbda('0x4f')](_0x2ae854);}})['then'](function(_0x2b261c){if(_0x2b261c){return _0x2b261c?{'count':_0x70229,'rows':_0x2b261c}:null;}})[_0xdbda('0x25')](respondWithResult(_0x429b07,null))[_0xdbda('0x42')](handleError(_0x429b07,null));};exports[_0xdbda('0x50')]=function(_0x5daa45,_0x4a0a69,_0x348ca8){var _0x88c542={};var _0x1cb9fe={};var _0x3ee084;var _0x5986f0;return db[_0xdbda('0x2a')][_0xdbda('0x4c')]({'where':{'id':_0x5daa45[_0xdbda('0x44')]['id']}})['then'](handleEntityNotFound(_0x4a0a69,null))[_0xdbda('0x25')](function(_0x31ebc5){if(_0x31ebc5){_0x3ee084=_0x31ebc5;_0x1cb9fe[_0xdbda('0x32')]=_[_0xdbda('0x2f')](db['Tag']['rawAttributes']);_0x1cb9fe[_0xdbda('0x2e')]=_[_0xdbda('0x2f')](_0x5daa45[_0xdbda('0x2e')]);_0x1cb9fe[_0xdbda('0x3a')]=_[_0xdbda('0x30')](_0x1cb9fe[_0xdbda('0x32')],_0x1cb9fe[_0xdbda('0x2e')]);_0x88c542[_0xdbda('0x31')]=_[_0xdbda('0x30')](_0x1cb9fe[_0xdbda('0x32')],qs[_0xdbda('0x45')](_0x5daa45[_0xdbda('0x2e')]['fields']));_0x88c542[_0xdbda('0x31')]=_0x88c542['attributes'][_0xdbda('0x33')]?_0x88c542[_0xdbda('0x31')]:_0x1cb9fe[_0xdbda('0x32')];_0x88c542[_0xdbda('0x36')]=qs[_0xdbda('0x37')](_0x5daa45[_0xdbda('0x2e')][_0xdbda('0x37')]);_0x88c542['where']=qs[_0xdbda('0x3a')](_[_0xdbda('0x39')](_0x5daa45[_0xdbda('0x2e')],_0x1cb9fe[_0xdbda('0x3a')]));if(_0x5daa45[_0xdbda('0x2e')][_0xdbda('0x3b')]){_0x88c542[_0xdbda('0x38')]=_['merge'](_0x88c542['where'],{'$or':_[_0xdbda('0x29')](_0x88c542['attributes'],function(_0x42594d){var _0x518da6={};_0x518da6[_0x42594d]={'$like':'%'+_0x5daa45[_0xdbda('0x2e')][_0xdbda('0x3b')]+'%'};return _0x518da6;})});}_0x88c542=_[_0xdbda('0x46')]({},_0x88c542,_0x5daa45[_0xdbda('0x3d')]);return _0x3ee084['getTags'](_0x88c542);}})['then'](function(_0x5ba418){if(_0x5ba418){_0x5986f0=_0x5ba418[_0xdbda('0x33')];if(!_0x5daa45['query']['hasOwnProperty'](_0xdbda('0x35'))){_0x88c542[_0xdbda('0x1e')]=qs[_0xdbda('0x1e')](_0x5daa45['query'][_0xdbda('0x1e')]);_0x88c542['offset']=qs['offset'](_0x5daa45['query'][_0xdbda('0x1d')]);}return _0x3ee084[_0xdbda('0x50')](_0x88c542);}})[_0xdbda('0x25')](function(_0x5f3cdb){if(_0x5f3cdb){return _0x5f3cdb?{'count':_0x5986f0,'rows':_0x5f3cdb}:null;}})['then'](respondWithResult(_0x4a0a69,null))[_0xdbda('0x42')](handleError(_0x4a0a69,null));};exports['setTags']=function(_0x576745,_0x436ae0,_0x460041){if(_0x576745[_0xdbda('0x49')]['id']){delete _0x576745['body']['id'];}return db[_0xdbda('0x2a')][_0xdbda('0x4c')]({'where':{'id':_0x576745['params']['id']}})['then'](handleEntityNotFound(_0x436ae0,null))[_0xdbda('0x25')](function(_0x358e92){if(_0x358e92){return _0x358e92['setTags'](_0x576745[_0xdbda('0x49')][_0xdbda('0x51')]||[]);}return null;})[_0xdbda('0x25')](respondWithResult(_0x436ae0,null))['catch'](handleError(_0x436ae0,null));};
\ No newline at end of file
+var _0x79e8=['findAll','rows','catch','show','params','length','find','body','DeskField','getFields','hasOwnProperty','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','DeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include'];(function(_0x1c4b30,_0x21d23b){var _0x536864=function(_0x5e7768){while(--_0x5e7768){_0x1c4b30['push'](_0x1c4b30['shift']());}};_0x536864(++_0x21d23b);}(_0x79e8,0xb2));var _0x879e=function(_0x1cab5a,_0x3b3ca5){_0x1cab5a=_0x1cab5a-0x0;var _0x3d73a4=_0x79e8[_0x1cab5a];return _0x3d73a4;};'use strict';var emlformat=require(_0x879e('0x0'));var rimraf=require(_0x879e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x879e('0x2'));var rp=require(_0x879e('0x3'));var moment=require(_0x879e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x879e('0x5'));var util=require('util');var path=require('path');var sox=require(_0x879e('0x6'));var csv=require(_0x879e('0x7'));var ejs=require(_0x879e('0x8'));var fs=require('fs');var fs_extra=require(_0x879e('0x9'));var _=require(_0x879e('0xa'));var squel=require(_0x879e('0xb'));var crypto=require(_0x879e('0xc'));var jsforce=require(_0x879e('0xd'));var deskjs=require(_0x879e('0xe'));var toCsv=require(_0x879e('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x879e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x879e('0x10'));var logger=require('../../config/logger')(_0x879e('0x11'));var utils=require(_0x879e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x879e('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x474a34,_0xa7ccd){_0xa7ccd=_0xa7ccd||0xcc;return function(_0x253f18){if(_0x253f18){return _0x474a34[_0x879e('0x14')](_0xa7ccd);}return _0x474a34[_0x879e('0x15')](_0xa7ccd)[_0x879e('0x16')]();};}function respondWithResult(_0x2e914d,_0x285dee){_0x285dee=_0x285dee||0xc8;return function(_0x406a26){if(_0x406a26){return _0x2e914d[_0x879e('0x15')](_0x285dee)[_0x879e('0x17')](_0x406a26);}};}function respondWithFilteredResult(_0x197e33,_0x2923b9){return function(_0x1b1017){if(_0x1b1017){var _0x3cd931=typeof _0x2923b9[_0x879e('0x18')]===_0x879e('0x19')&&typeof _0x2923b9[_0x879e('0x1a')]==='undefined';var _0x563e63=_0x1b1017[_0x879e('0x1b')];var _0x2b9968=_0x3cd931?0x0:_0x2923b9[_0x879e('0x18')];var _0x38d098=_0x3cd931?_0x1b1017[_0x879e('0x1b')]:_0x2923b9[_0x879e('0x18')]+_0x2923b9[_0x879e('0x1a')];var _0x438ff3;if(_0x38d098>=_0x563e63){_0x38d098=_0x563e63;_0x438ff3=0xc8;}else{_0x438ff3=0xce;}_0x197e33[_0x879e('0x15')](_0x438ff3);return _0x197e33[_0x879e('0x1c')]('Content-Range',_0x2b9968+'-'+_0x38d098+'/'+_0x563e63)[_0x879e('0x17')](_0x1b1017);}return null;};}function patchUpdates(_0x3a6be2){return function(_0x1bf102){try{jsonpatch[_0x879e('0x1d')](_0x1bf102,_0x3a6be2,!![]);}catch(_0x6a81b4){return BPromise[_0x879e('0x1e')](_0x6a81b4);}return _0x1bf102[_0x879e('0x1f')]();};}function saveUpdates(_0x57abaa,_0x51f973){return function(_0x272a0e){if(_0x272a0e){return _0x272a0e[_0x879e('0x20')](_0x57abaa)[_0x879e('0x21')](function(_0x23ff57){return _0x23ff57;});}return null;};}function removeEntity(_0xdff116,_0x487701){return function(_0x2337f4){if(_0x2337f4){return _0x2337f4[_0x879e('0x22')]()[_0x879e('0x21')](function(){_0xdff116[_0x879e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1f41b6,_0x2cc5f8){return function(_0xf5cc72){if(!_0xf5cc72){_0x1f41b6['sendStatus'](0x194);}return _0xf5cc72;};}function handleError(_0x41c089,_0x4bb6a9){_0x4bb6a9=_0x4bb6a9||0x1f4;return function(_0x1c1401){logger[_0x879e('0x23')](_0x1c1401[_0x879e('0x24')]);if(_0x1c1401['name']){delete _0x1c1401[_0x879e('0x25')];}_0x41c089[_0x879e('0x15')](_0x4bb6a9)[_0x879e('0x26')](_0x1c1401);};}exports['index']=function(_0x338944,_0x9489f8){var _0x335ce3={},_0x5045df={},_0x74109={'count':0x0,'rows':[]};var _0x375cdc=_[_0x879e('0x27')](db[_0x879e('0x28')][_0x879e('0x29')],function(_0x474df0){return{'name':_0x474df0[_0x879e('0x2a')],'type':_0x474df0[_0x879e('0x2b')][_0x879e('0x2c')]};});_0x5045df[_0x879e('0x2d')]=_['map'](_0x375cdc,_0x879e('0x25'));_0x5045df[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x338944['query']);_0x5045df[_0x879e('0x30')]=_[_0x879e('0x31')](_0x5045df['model'],_0x5045df[_0x879e('0x2e')]);_0x335ce3['attributes']=_['intersection'](_0x5045df['model'],qs[_0x879e('0x32')](_0x338944[_0x879e('0x2e')][_0x879e('0x32')]));_0x335ce3[_0x879e('0x33')]=_0x335ce3[_0x879e('0x33')]['length']?_0x335ce3[_0x879e('0x33')]:_0x5045df[_0x879e('0x2d')];if(!_0x338944[_0x879e('0x2e')]['hasOwnProperty'](_0x879e('0x34'))){_0x335ce3[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x338944['query'][_0x879e('0x1a')]);_0x335ce3[_0x879e('0x18')]=qs['offset'](_0x338944['query'][_0x879e('0x18')]);}_0x335ce3[_0x879e('0x35')]=qs[_0x879e('0x36')](_0x338944[_0x879e('0x2e')][_0x879e('0x36')]);_0x335ce3['where']=qs[_0x879e('0x30')](_[_0x879e('0x37')](_0x338944[_0x879e('0x2e')],_0x5045df[_0x879e('0x30')]),_0x375cdc);if(_0x338944[_0x879e('0x2e')][_0x879e('0x38')]){_0x335ce3[_0x879e('0x39')]=_['merge'](_0x335ce3[_0x879e('0x39')],{'$or':_[_0x879e('0x27')](_0x375cdc,function(_0x569d61){if(_0x569d61['type']!=='VIRTUAL'){var _0x53556d={};_0x53556d[_0x569d61[_0x879e('0x25')]]={'$like':'%'+_0x338944[_0x879e('0x2e')]['filter']+'%'};return _0x53556d;}})});}_0x335ce3=_[_0x879e('0x3a')]({},_0x335ce3,_0x338944[_0x879e('0x3b')]);var _0x56d014={'where':_0x335ce3[_0x879e('0x39')]};return db[_0x879e('0x28')][_0x879e('0x1b')](_0x56d014)[_0x879e('0x21')](function(_0x337a83){_0x74109[_0x879e('0x1b')]=_0x337a83;if(_0x338944[_0x879e('0x2e')][_0x879e('0x3c')]){_0x335ce3[_0x879e('0x3d')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x879e('0x3e')](_0x335ce3);})['then'](function(_0x506f81){_0x74109[_0x879e('0x3f')]=_0x506f81;return _0x74109;})[_0x879e('0x21')](respondWithFilteredResult(_0x9489f8,_0x335ce3))[_0x879e('0x40')](handleError(_0x9489f8,null));};exports[_0x879e('0x41')]=function(_0x4c8fd2,_0x4c1e32){var _0x187719={'raw':![],'where':{'id':_0x4c8fd2[_0x879e('0x42')]['id']}},_0xea803d={};_0xea803d[_0x879e('0x2d')]=_['keys'](db[_0x879e('0x28')]['rawAttributes']);_0xea803d['query']=_['keys'](_0x4c8fd2[_0x879e('0x2e')]);_0xea803d[_0x879e('0x30')]=_['intersection'](_0xea803d['model'],_0xea803d[_0x879e('0x2e')]);_0x187719[_0x879e('0x33')]=_[_0x879e('0x31')](_0xea803d[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x4c8fd2['query']['fields']));_0x187719[_0x879e('0x33')]=_0x187719[_0x879e('0x33')][_0x879e('0x43')]?_0x187719[_0x879e('0x33')]:_0xea803d['model'];if(_0x4c8fd2[_0x879e('0x2e')][_0x879e('0x3c')]){_0x187719['include']=[{'all':!![]}];}_0x187719=_[_0x879e('0x3a')]({},_0x187719,_0x4c8fd2[_0x879e('0x3b')]);return db[_0x879e('0x28')][_0x879e('0x44')](_0x187719)[_0x879e('0x21')](handleEntityNotFound(_0x4c1e32,null))[_0x879e('0x21')](respondWithResult(_0x4c1e32,null))[_0x879e('0x40')](handleError(_0x4c1e32,null));};exports['create']=function(_0x4302b1,_0x5f1e24){return db[_0x879e('0x28')]['create'](_0x4302b1[_0x879e('0x45')],{})['then'](respondWithResult(_0x5f1e24,0xc9))['catch'](handleError(_0x5f1e24,null));};exports[_0x879e('0x20')]=function(_0x9ea241,_0x43d11b){if(_0x9ea241[_0x879e('0x45')]['id']){delete _0x9ea241[_0x879e('0x45')]['id'];}return db[_0x879e('0x28')][_0x879e('0x44')]({'where':{'id':_0x9ea241[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x43d11b,null))['then'](saveUpdates(_0x9ea241[_0x879e('0x45')],null))[_0x879e('0x21')](respondWithResult(_0x43d11b,null))[_0x879e('0x40')](handleError(_0x43d11b,null));};exports['destroy']=function(_0x59e421,_0x5ec5fa){return db[_0x879e('0x28')]['find']({'where':{'id':_0x59e421[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x5ec5fa,null))[_0x879e('0x21')](removeEntity(_0x5ec5fa,null))[_0x879e('0x40')](handleError(_0x5ec5fa,null));};exports['getFields']=function(_0x3e0968,_0xdf18f,_0x31e534){var _0x303d44={};var _0x6a3bd2={};var _0x502a70;var _0x70af68;return db[_0x879e('0x28')]['findOne']({'where':{'id':_0x3e0968['params']['id']}})[_0x879e('0x21')](handleEntityNotFound(_0xdf18f,null))[_0x879e('0x21')](function(_0x2905c0){if(_0x2905c0){_0x502a70=_0x2905c0;_0x6a3bd2[_0x879e('0x2d')]=_[_0x879e('0x2f')](db[_0x879e('0x46')][_0x879e('0x29')]);_0x6a3bd2[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x3e0968[_0x879e('0x2e')]);_0x6a3bd2['filters']=_[_0x879e('0x31')](_0x6a3bd2['model'],_0x6a3bd2['query']);_0x303d44['attributes']=_[_0x879e('0x31')](_0x6a3bd2['model'],qs[_0x879e('0x32')](_0x3e0968[_0x879e('0x2e')][_0x879e('0x32')]));_0x303d44['attributes']=_0x303d44[_0x879e('0x33')]['length']?_0x303d44[_0x879e('0x33')]:_0x6a3bd2[_0x879e('0x2d')];_0x303d44['order']=qs['sort'](_0x3e0968['query'][_0x879e('0x36')]);_0x303d44['where']=qs[_0x879e('0x30')](_[_0x879e('0x37')](_0x3e0968['query'],_0x6a3bd2[_0x879e('0x30')]));if(_0x3e0968[_0x879e('0x2e')][_0x879e('0x38')]){_0x303d44[_0x879e('0x39')]=_[_0x879e('0x3a')](_0x303d44[_0x879e('0x39')],{'$or':_[_0x879e('0x27')](_0x303d44[_0x879e('0x33')],function(_0x3bbf5e){var _0x1c9c21={};_0x1c9c21[_0x3bbf5e]={'$like':'%'+_0x3e0968[_0x879e('0x2e')][_0x879e('0x38')]+'%'};return _0x1c9c21;})});}_0x303d44=_[_0x879e('0x3a')]({},_0x303d44,_0x3e0968[_0x879e('0x3b')]);return _0x502a70[_0x879e('0x47')](_0x303d44);}})['then'](function(_0x14ff51){if(_0x14ff51){_0x70af68=_0x14ff51['length'];if(!_0x3e0968[_0x879e('0x2e')][_0x879e('0x48')](_0x879e('0x34'))){_0x303d44[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x3e0968[_0x879e('0x2e')]['limit']);_0x303d44['offset']=qs[_0x879e('0x18')](_0x3e0968[_0x879e('0x2e')][_0x879e('0x18')]);}return _0x502a70[_0x879e('0x47')](_0x303d44);}})['then'](function(_0x541af9){if(_0x541af9){return _0x541af9?{'count':_0x70af68,'rows':_0x541af9}:null;}})[_0x879e('0x21')](respondWithResult(_0xdf18f,null))[_0x879e('0x40')](handleError(_0xdf18f,null));};exports['getSubjects']=function(_0x8fc428,_0x106e2f,_0x3b7050){var _0x40bb5f={};var _0x310029={};var _0x271c9c;var _0x182bf8;return db[_0x879e('0x28')][_0x879e('0x49')]({'where':{'id':_0x8fc428['params']['id']}})['then'](handleEntityNotFound(_0x106e2f,null))[_0x879e('0x21')](function(_0x57d4d6){if(_0x57d4d6){_0x271c9c=_0x57d4d6;_0x310029['model']=_[_0x879e('0x2f')](db['DeskField'][_0x879e('0x29')]);_0x310029[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x8fc428[_0x879e('0x2e')]);_0x310029[_0x879e('0x30')]=_[_0x879e('0x31')](_0x310029[_0x879e('0x2d')],_0x310029['query']);_0x40bb5f[_0x879e('0x33')]=_[_0x879e('0x31')](_0x310029[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x8fc428['query'][_0x879e('0x32')]));_0x40bb5f['attributes']=_0x40bb5f[_0x879e('0x33')]['length']?_0x40bb5f[_0x879e('0x33')]:_0x310029[_0x879e('0x2d')];_0x40bb5f['order']=qs['sort'](_0x8fc428['query'][_0x879e('0x36')]);_0x40bb5f[_0x879e('0x39')]=qs['filters'](_[_0x879e('0x37')](_0x8fc428[_0x879e('0x2e')],_0x310029[_0x879e('0x30')]));if(_0x8fc428[_0x879e('0x2e')]['filter']){_0x40bb5f[_0x879e('0x39')]=_[_0x879e('0x3a')](_0x40bb5f[_0x879e('0x39')],{'$or':_['map'](_0x40bb5f['attributes'],function(_0xe62cd4){var _0x110e07={};_0x110e07[_0xe62cd4]={'$like':'%'+_0x8fc428['query']['filter']+'%'};return _0x110e07;})});}_0x40bb5f=_['merge']({},_0x40bb5f,_0x8fc428[_0x879e('0x3b')]);return _0x271c9c[_0x879e('0x4a')](_0x40bb5f);}})['then'](function(_0x152d3f){if(_0x152d3f){_0x182bf8=_0x152d3f[_0x879e('0x43')];if(!_0x8fc428[_0x879e('0x2e')][_0x879e('0x48')]('nolimit')){_0x40bb5f[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x8fc428[_0x879e('0x2e')][_0x879e('0x1a')]);_0x40bb5f[_0x879e('0x18')]=qs[_0x879e('0x18')](_0x8fc428[_0x879e('0x2e')]['offset']);}return _0x271c9c[_0x879e('0x4a')](_0x40bb5f);}})[_0x879e('0x21')](function(_0x18c6c7){if(_0x18c6c7){return _0x18c6c7?{'count':_0x182bf8,'rows':_0x18c6c7}:null;}})[_0x879e('0x21')](respondWithResult(_0x106e2f,null))['catch'](handleError(_0x106e2f,null));};exports[_0x879e('0x4b')]=function(_0x4f69b2,_0x398bb4,_0x530808){var _0x3ca956={};var _0x5c870b={};var _0x5adec6;var _0x1f5b69;return db[_0x879e('0x28')][_0x879e('0x49')]({'where':{'id':_0x4f69b2[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x398bb4,null))['then'](function(_0x5775e5){if(_0x5775e5){_0x5adec6=_0x5775e5;_0x5c870b['model']=_[_0x879e('0x2f')](db[_0x879e('0x46')]['rawAttributes']);_0x5c870b[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x4f69b2[_0x879e('0x2e')]);_0x5c870b[_0x879e('0x30')]=_[_0x879e('0x31')](_0x5c870b['model'],_0x5c870b[_0x879e('0x2e')]);_0x3ca956[_0x879e('0x33')]=_[_0x879e('0x31')](_0x5c870b[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x4f69b2[_0x879e('0x2e')][_0x879e('0x32')]));_0x3ca956[_0x879e('0x33')]=_0x3ca956[_0x879e('0x33')][_0x879e('0x43')]?_0x3ca956[_0x879e('0x33')]:_0x5c870b[_0x879e('0x2d')];_0x3ca956[_0x879e('0x35')]=qs[_0x879e('0x36')](_0x4f69b2[_0x879e('0x2e')]['sort']);_0x3ca956[_0x879e('0x39')]=qs['filters'](_[_0x879e('0x37')](_0x4f69b2[_0x879e('0x2e')],_0x5c870b[_0x879e('0x30')]));if(_0x4f69b2[_0x879e('0x2e')][_0x879e('0x38')]){_0x3ca956['where']=_['merge'](_0x3ca956[_0x879e('0x39')],{'$or':_['map'](_0x3ca956[_0x879e('0x33')],function(_0x21df5c){var _0x5d4f09={};_0x5d4f09[_0x21df5c]={'$like':'%'+_0x4f69b2['query'][_0x879e('0x38')]+'%'};return _0x5d4f09;})});}_0x3ca956=_[_0x879e('0x3a')]({},_0x3ca956,_0x4f69b2[_0x879e('0x3b')]);return _0x5adec6[_0x879e('0x4b')](_0x3ca956);}})[_0x879e('0x21')](function(_0x1c6457){if(_0x1c6457){_0x1f5b69=_0x1c6457[_0x879e('0x43')];if(!_0x4f69b2[_0x879e('0x2e')][_0x879e('0x48')]('nolimit')){_0x3ca956[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x4f69b2[_0x879e('0x2e')]['limit']);_0x3ca956[_0x879e('0x18')]=qs['offset'](_0x4f69b2[_0x879e('0x2e')][_0x879e('0x18')]);}return _0x5adec6['getDescriptions'](_0x3ca956);}})[_0x879e('0x21')](function(_0x5af4a5){if(_0x5af4a5){return _0x5af4a5?{'count':_0x1f5b69,'rows':_0x5af4a5}:null;}})[_0x879e('0x21')](respondWithResult(_0x398bb4,null))[_0x879e('0x40')](handleError(_0x398bb4,null));};exports[_0x879e('0x4c')]=function(_0x3c4360,_0x18df00,_0x4fc3c9){var _0x231e02={};var _0x343204={};var _0x3facc0;var _0x482978;return db[_0x879e('0x28')][_0x879e('0x49')]({'where':{'id':_0x3c4360[_0x879e('0x42')]['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x18df00,null))[_0x879e('0x21')](function(_0x21b0bd){if(_0x21b0bd){_0x3facc0=_0x21b0bd;_0x343204[_0x879e('0x2d')]=_[_0x879e('0x2f')](db[_0x879e('0x4d')][_0x879e('0x29')]);_0x343204[_0x879e('0x2e')]=_[_0x879e('0x2f')](_0x3c4360['query']);_0x343204[_0x879e('0x30')]=_[_0x879e('0x31')](_0x343204[_0x879e('0x2d')],_0x343204[_0x879e('0x2e')]);_0x231e02['attributes']=_['intersection'](_0x343204[_0x879e('0x2d')],qs[_0x879e('0x32')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x32')]));_0x231e02[_0x879e('0x33')]=_0x231e02[_0x879e('0x33')][_0x879e('0x43')]?_0x231e02[_0x879e('0x33')]:_0x343204['model'];_0x231e02[_0x879e('0x35')]=qs[_0x879e('0x36')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x36')]);_0x231e02['where']=qs['filters'](_[_0x879e('0x37')](_0x3c4360[_0x879e('0x2e')],_0x343204['filters']));if(_0x3c4360['query'][_0x879e('0x38')]){_0x231e02['where']=_[_0x879e('0x3a')](_0x231e02[_0x879e('0x39')],{'$or':_[_0x879e('0x27')](_0x231e02[_0x879e('0x33')],function(_0x49d9b6){var _0x32a403={};_0x32a403[_0x49d9b6]={'$like':'%'+_0x3c4360[_0x879e('0x2e')]['filter']+'%'};return _0x32a403;})});}_0x231e02=_[_0x879e('0x3a')]({},_0x231e02,_0x3c4360[_0x879e('0x3b')]);return _0x3facc0[_0x879e('0x4c')](_0x231e02);}})[_0x879e('0x21')](function(_0x317662){if(_0x317662){_0x482978=_0x317662[_0x879e('0x43')];if(!_0x3c4360[_0x879e('0x2e')][_0x879e('0x48')](_0x879e('0x34'))){_0x231e02[_0x879e('0x1a')]=qs[_0x879e('0x1a')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x1a')]);_0x231e02[_0x879e('0x18')]=qs[_0x879e('0x18')](_0x3c4360[_0x879e('0x2e')][_0x879e('0x18')]);}return _0x3facc0[_0x879e('0x4c')](_0x231e02);}})[_0x879e('0x21')](function(_0x38193f){if(_0x38193f){return _0x38193f?{'count':_0x482978,'rows':_0x38193f}:null;}})[_0x879e('0x21')](respondWithResult(_0x18df00,null))[_0x879e('0x40')](handleError(_0x18df00,null));};exports[_0x879e('0x4e')]=function(_0x537d1c,_0x170449,_0x20497f){if(_0x537d1c[_0x879e('0x45')]['id']){delete _0x537d1c[_0x879e('0x45')]['id'];}return db['DeskConfiguration'][_0x879e('0x49')]({'where':{'id':_0x537d1c['params']['id']}})[_0x879e('0x21')](handleEntityNotFound(_0x170449,null))[_0x879e('0x21')](function(_0x5ab422){if(_0x5ab422){return _0x5ab422[_0x879e('0x4e')](_0x537d1c[_0x879e('0x45')][_0x879e('0x4f')]||[]);}return null;})['then'](respondWithResult(_0x170449,null))['catch'](handleError(_0x170449,null));};
\ No newline at end of file
index 671b142..8b5d836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063c=['exports','define','DeskConfiguration','int_desk_configurations','lodash','util','api','moment','request-promise','path','../../config/environment','./intDeskConfiguration.attributes'];(function(_0x289891,_0x49a0fa){var _0x31cf2e=function(_0x8cebce){while(--_0x8cebce){_0x289891['push'](_0x289891['shift']());}};_0x31cf2e(++_0x49a0fa);}(_0x063c,0x70));var _0xc063=function(_0x150b55,_0x5cc75a){_0x150b55=_0x150b55-0x0;var _0x1e3167=_0x063c[_0x150b55];return _0x1e3167;};'use strict';var _=require(_0xc063('0x0'));var util=require(_0xc063('0x1'));var logger=require('../../config/logger')(_0xc063('0x2'));var moment=require(_0xc063('0x3'));var BPromise=require('bluebird');var rp=require(_0xc063('0x4'));var fs=require('fs');var path=require(_0xc063('0x5'));var rimraf=require('rimraf');var config=require(_0xc063('0x6'));var attributes=require(_0xc063('0x7'));module[_0xc063('0x8')]=function(_0x55bc86,_0x405609){return _0x55bc86[_0xc063('0x9')](_0xc063('0xa'),attributes,{'tableName':_0xc063('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x42c6=['rimraf','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','moment','path'];(function(_0x2ae00f,_0x126bb6){var _0xd64316=function(_0x44f141){while(--_0x44f141){_0x2ae00f['push'](_0x2ae00f['shift']());}};_0xd64316(++_0x126bb6);}(_0x42c6,0x15e));var _0x642c=function(_0x282b3b,_0x3be3c3){_0x282b3b=_0x282b3b-0x0;var _0x3a44ac=_0x42c6[_0x282b3b];return _0x3a44ac;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x642c('0x0'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x642c('0x1'));var rimraf=require(_0x642c('0x2'));var config=require('../../config/environment');var attributes=require(_0x642c('0x3'));module[_0x642c('0x4')]=function(_0x36c004,_0x17ee84){return _0x36c004[_0x642c('0x5')](_0x642c('0x6'),attributes,{'tableName':_0x642c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 600104f..b53ae2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','DeskConfiguration,\x20%s,\x20%s','info','lodash','util','moment','bluebird','randomstring'];(function(_0xfdc515,_0x4585bc){var _0x1e9e02=function(_0x103e5e){while(--_0x103e5e){_0xfdc515['push'](_0xfdc515['shift']());}};_0x1e9e02(++_0x4585bc);}(_0x5fdc,0x127));var _0xc5fd=function(_0x46965a,_0x233274){_0x46965a=_0x46965a-0x0;var _0x1f39a4=_0x5fdc[_0x46965a];return _0x1f39a4;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var moment=require(_0xc5fd('0x2'));var BPromise=require(_0xc5fd('0x3'));var rs=require(_0xc5fd('0x4'));var fs=require('fs');var Redis=require(_0xc5fd('0x5'));var db=require(_0xc5fd('0x6'))['db'];var utils=require(_0xc5fd('0x7'));var logger=require(_0xc5fd('0x8'))(_0xc5fd('0x9'));var config=require(_0xc5fd('0xa'));var jayson=require(_0xc5fd('0xb'));var client=jayson[_0xc5fd('0xc')][_0xc5fd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x15ffe7,_0x5a2eb4,_0x5d86e5){return new BPromise(function(_0x493389,_0x224801){return client[_0xc5fd('0xe')](_0x15ffe7,_0x5d86e5)[_0xc5fd('0xf')](function(_0x45c91f){logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x5a2eb4,_0xc5fd('0x10'));logger[_0xc5fd('0x11')](_0xc5fd('0x12'),_0x5a2eb4,_0xc5fd('0x10'),JSON[_0xc5fd('0x13')](_0x45c91f));if(_0x45c91f[_0xc5fd('0x14')]){if(_0x45c91f['error'][_0xc5fd('0x15')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x224801(_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);}logger[_0xc5fd('0x14')](_0xc5fd('0x17'),_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x493389(_0x45c91f['error'][_0xc5fd('0x16')]);}else{logger[_0xc5fd('0x18')](_0xc5fd('0x17'),_0x5a2eb4,_0xc5fd('0x10'));_0x493389(_0x45c91f['result']['message']);}})['catch'](function(_0x5529b3){logger['error'](_0xc5fd('0x17'),_0x5a2eb4,_0x5529b3);_0x224801(_0x5529b3);});});}
\ No newline at end of file
+var _0x9147=['bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','DeskConfiguration,\x20%s,\x20%s','request\x20sent','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x9147,0x81));var _0x7914=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0x9147[_0x311c35];return _0x5cc50c;};'use strict';var _=require(_0x7914('0x0'));var util=require(_0x7914('0x1'));var moment=require(_0x7914('0x2'));var BPromise=require(_0x7914('0x3'));var rs=require(_0x7914('0x4'));var fs=require('fs');var Redis=require(_0x7914('0x5'));var db=require(_0x7914('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x7914('0x7'))(_0x7914('0x8'));var config=require(_0x7914('0x9'));var jayson=require(_0x7914('0xa'));var client=jayson[_0x7914('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x47733d,_0x52a4b1,_0x3193ae){return new BPromise(function(_0x5efc62,_0x59c064){return client[_0x7914('0xc')](_0x47733d,_0x3193ae)[_0x7914('0xd')](function(_0x2d6ea3){logger['info'](_0x7914('0xe'),_0x52a4b1,_0x7914('0xf'));logger['debug'](_0x7914('0x10'),_0x52a4b1,'request\x20sent',JSON[_0x7914('0x11')](_0x2d6ea3));if(_0x2d6ea3[_0x7914('0x12')]){if(_0x2d6ea3[_0x7914('0x12')][_0x7914('0x13')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x52a4b1,_0x2d6ea3[_0x7914('0x12')][_0x7914('0x14')]);return _0x59c064(_0x2d6ea3['error'][_0x7914('0x14')]);}logger[_0x7914('0x12')](_0x7914('0xe'),_0x52a4b1,_0x2d6ea3[_0x7914('0x12')][_0x7914('0x14')]);return _0x5efc62(_0x2d6ea3[_0x7914('0x12')][_0x7914('0x14')]);}else{logger['info'](_0x7914('0xe'),_0x52a4b1,_0x7914('0xf'));_0x5efc62(_0x2d6ea3['result'][_0x7914('0x14')]);}})[_0x7914('0x15')](function(_0xb62f5f){logger[_0x7914('0x12')](_0x7914('0xe'),_0x52a4b1,_0xb62f5f);_0x59c064(_0xb62f5f);});});}
\ No newline at end of file
index 45d3907..ae69c1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781b=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','/:id','show','post','update','isAuthenticated','exports','multer','util'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x781b,0x1c9));var _0xb781=function(_0x253bd2,_0x4e88ff){_0x253bd2=_0x253bd2-0x0;var _0x457ff9=_0x781b[_0x253bd2];return _0x457ff9;};'use strict';var multer=require(_0xb781('0x0'));var util=require(_0xb781('0x1'));var path=require(_0xb781('0x2'));var timeout=require(_0xb781('0x3'));var express=require(_0xb781('0x4'));var router=express[_0xb781('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb781('0x6'));var interaction=require(_0xb781('0x7'));var config=require(_0xb781('0x8'));var controller=require(_0xb781('0x9'));router[_0xb781('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb781('0xa')](_0xb781('0xb'),auth['isAuthenticated'](),controller[_0xb781('0xc')]);router[_0xb781('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xb781('0xb'),auth['isAuthenticated'](),controller[_0xb781('0xe')]);router['delete'](_0xb781('0xb'),auth[_0xb781('0xf')](),controller['destroy']);module[_0xb781('0x10')]=router;
\ No newline at end of file
+var _0x33ad=['Router','fs-extra','../../components/auth/service','isAuthenticated','index','get','/:id','create','put','destroy','exports','util','path','connect-timeout','express'];(function(_0x2000c0,_0x4f3af9){var _0x3792a9=function(_0x56ec20){while(--_0x56ec20){_0x2000c0['push'](_0x2000c0['shift']());}};_0x3792a9(++_0x4f3af9);}(_0x33ad,0x74));var _0xd33a=function(_0x105d5c,_0x14dc1a){_0x105d5c=_0x105d5c-0x0;var _0x44ed7e=_0x33ad[_0x105d5c];return _0x44ed7e;};'use strict';var multer=require('multer');var util=require(_0xd33a('0x0'));var path=require(_0xd33a('0x1'));var timeout=require(_0xd33a('0x2'));var express=require(_0xd33a('0x3'));var router=express[_0xd33a('0x4')]();var fs_extra=require(_0xd33a('0x5'));var auth=require(_0xd33a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDeskField.controller');router['get']('/',auth[_0xd33a('0x7')](),controller[_0xd33a('0x8')]);router[_0xd33a('0x9')](_0xd33a('0xa'),auth[_0xd33a('0x7')](),controller['show']);router['post']('/',auth[_0xd33a('0x7')](),controller[_0xd33a('0xb')]);router[_0xd33a('0xc')]('/:id',auth[_0xd33a('0x7')](),controller['update']);router['delete'](_0xd33a('0xa'),auth[_0xd33a('0x7')](),controller[_0xd33a('0xd')]);module[_0xd33a('0xe')]=router;
\ No newline at end of file
index c6df498..85481bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe938=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x5ba418,_0x1faeb5){var _0x3e82c2=function(_0x1a7534){while(--_0x1a7534){_0x5ba418['push'](_0x5ba418['shift']());}};_0x3e82c2(++_0x1faeb5);}(_0xe938,0x1ae));var _0x8e93=function(_0x3c0788,_0x3e6506){_0x3c0788=_0x3c0788-0x0;var _0x4a9442=_0xe938[_0x3c0788];return _0x4a9442;};'use strict';var Sequelize=require(_0x8e93('0x0'));module['exports']={'type':{'type':Sequelize[_0x8e93('0x1')](_0x8e93('0x2'),_0x8e93('0x3'),_0x8e93('0x4'),_0x8e93('0x5'),_0x8e93('0x6')),'defaultValue':_0x8e93('0x2')},'content':{'type':Sequelize[_0x8e93('0x7')]},'key':{'type':Sequelize[_0x8e93('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x8e93('0x2'),_0x8e93('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x8e93('0x7')]},'idField':{'type':Sequelize[_0x8e93('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x8e93('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8e93('0x7')]}};
\ No newline at end of file
+var _0x4b3f=['ENUM','string','customVariable','STRING','sequelize','exports'];(function(_0xd88ed,_0x54fd06){var _0x1dad30=function(_0x21323){while(--_0x21323){_0xd88ed['push'](_0xd88ed['shift']());}};_0x1dad30(++_0x54fd06);}(_0x4b3f,0x1f0));var _0xf4b3=function(_0x1eaf3a,_0x5bd7b6){_0x1eaf3a=_0x1eaf3a-0x0;var _0x285fe6=_0x4b3f[_0x1eaf3a];return _0x285fe6;};'use strict';var Sequelize=require(_0xf4b3('0x0'));module[_0xf4b3('0x1')]={'type':{'type':Sequelize[_0xf4b3('0x2')](_0xf4b3('0x3'),'variable',_0xf4b3('0x4'),'keyValue','picklist'),'defaultValue':_0xf4b3('0x3')},'content':{'type':Sequelize[_0xf4b3('0x5')]},'key':{'type':Sequelize[_0xf4b3('0x5')]},'keyType':{'type':Sequelize[_0xf4b3('0x2')]('string','variable',_0xf4b3('0x4'))},'keyContent':{'type':Sequelize[_0xf4b3('0x5')]},'idField':{'type':Sequelize[_0xf4b3('0x5')]},'nameField':{'type':Sequelize[_0xf4b3('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf4b3('0x5')]}};
\ No newline at end of file
index 50e5c22..da4abcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0adf=['include','findAll','rows','catch','show','params','fields','find','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','apply','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','VIRTUAL','options','DeskField','count','includeAll'];(function(_0x46c97d,_0x1d2099){var _0x42cf4f=function(_0x20048b){while(--_0x20048b){_0x46c97d['push'](_0x46c97d['shift']());}};_0x42cf4f(++_0x1d2099);}(_0x0adf,0x1d2));var _0xf0ad=function(_0x50427f,_0x259e30){_0x50427f=_0x50427f-0x0;var _0x45603f=_0x0adf[_0x50427f];return _0x45603f;};'use strict';var emlformat=require(_0xf0ad('0x0'));var rimraf=require(_0xf0ad('0x1'));var zipdir=require(_0xf0ad('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf0ad('0x3'));var moment=require(_0xf0ad('0x4'));var BPromise=require(_0xf0ad('0x5'));var Mustache=require(_0xf0ad('0x6'));var util=require(_0xf0ad('0x7'));var path=require(_0xf0ad('0x8'));var sox=require(_0xf0ad('0x9'));var csv=require('to-csv');var ejs=require(_0xf0ad('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf0ad('0xb'));var squel=require(_0xf0ad('0xc'));var crypto=require(_0xf0ad('0xd'));var jsforce=require(_0xf0ad('0xe'));var deskjs=require(_0xf0ad('0xf'));var toCsv=require(_0xf0ad('0x10'));var querystring=require(_0xf0ad('0x11'));var Papa=require('papaparse');var Redis=require(_0xf0ad('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf0ad('0x13'));var as=require(_0xf0ad('0x14'));var hardwareService=require(_0xf0ad('0x15'));var logger=require(_0xf0ad('0x16'))(_0xf0ad('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf0ad('0x18'));var db=require(_0xf0ad('0x19'))['db'];function respondWithStatusCode(_0x3646a2,_0x238c3b){_0x238c3b=_0x238c3b||0xcc;return function(_0x597c40){if(_0x597c40){return _0x3646a2[_0xf0ad('0x1a')](_0x238c3b);}return _0x3646a2[_0xf0ad('0x1b')](_0x238c3b)['end']();};}function respondWithResult(_0x49df92,_0x5332e9){_0x5332e9=_0x5332e9||0xc8;return function(_0x221d7b){if(_0x221d7b){return _0x49df92['status'](_0x5332e9)[_0xf0ad('0x1c')](_0x221d7b);}};}function respondWithFilteredResult(_0x313ad6,_0xfa544c){return function(_0xfa829e){if(_0xfa829e){var _0x237dd9=typeof _0xfa544c['offset']===_0xf0ad('0x1d')&&typeof _0xfa544c[_0xf0ad('0x1e')]===_0xf0ad('0x1d');var _0x1c9fac=_0xfa829e['count'];var _0x4e9970=_0x237dd9?0x0:_0xfa544c[_0xf0ad('0x1f')];var _0x46fb20=_0x237dd9?_0xfa829e['count']:_0xfa544c[_0xf0ad('0x1f')]+_0xfa544c[_0xf0ad('0x1e')];var _0x9a95bf;if(_0x46fb20>=_0x1c9fac){_0x46fb20=_0x1c9fac;_0x9a95bf=0xc8;}else{_0x9a95bf=0xce;}_0x313ad6[_0xf0ad('0x1b')](_0x9a95bf);return _0x313ad6['set']('Content-Range',_0x4e9970+'-'+_0x46fb20+'/'+_0x1c9fac)[_0xf0ad('0x1c')](_0xfa829e);}return null;};}function patchUpdates(_0x2da425){return function(_0x37b968){try{jsonpatch[_0xf0ad('0x20')](_0x37b968,_0x2da425,!![]);}catch(_0x2ac8ba){return BPromise[_0xf0ad('0x21')](_0x2ac8ba);}return _0x37b968['save']();};}function saveUpdates(_0x33c95d,_0x16e62a){return function(_0x31635b){if(_0x31635b){return _0x31635b[_0xf0ad('0x22')](_0x33c95d)[_0xf0ad('0x23')](function(_0x88b47b){return _0x88b47b;});}return null;};}function removeEntity(_0xb91769,_0x276322){return function(_0x3fc97e){if(_0x3fc97e){return _0x3fc97e[_0xf0ad('0x24')]()[_0xf0ad('0x23')](function(){_0xb91769[_0xf0ad('0x1b')](0xcc)[_0xf0ad('0x25')]();});}};}function handleEntityNotFound(_0x456f81,_0x879f89){return function(_0x557f90){if(!_0x557f90){_0x456f81[_0xf0ad('0x1a')](0x194);}return _0x557f90;};}function handleError(_0x1507a3,_0x248794){_0x248794=_0x248794||0x1f4;return function(_0x7377d7){logger[_0xf0ad('0x26')](_0x7377d7[_0xf0ad('0x27')]);if(_0x7377d7['name']){delete _0x7377d7[_0xf0ad('0x28')];}_0x1507a3[_0xf0ad('0x1b')](_0x248794)[_0xf0ad('0x29')](_0x7377d7);};}exports[_0xf0ad('0x2a')]=function(_0x1b6880,_0x1ac25c){var _0x267b7a={},_0x1bee71={},_0x2386e8={'count':0x0,'rows':[]};var _0x39c46c=_[_0xf0ad('0x2b')](db['DeskField'][_0xf0ad('0x2c')],function(_0x5f5115){return{'name':_0x5f5115[_0xf0ad('0x2d')],'type':_0x5f5115['type'][_0xf0ad('0x2e')]};});_0x1bee71[_0xf0ad('0x2f')]=_[_0xf0ad('0x2b')](_0x39c46c,_0xf0ad('0x28'));_0x1bee71[_0xf0ad('0x30')]=_[_0xf0ad('0x31')](_0x1b6880[_0xf0ad('0x30')]);_0x1bee71[_0xf0ad('0x32')]=_['intersection'](_0x1bee71['model'],_0x1bee71[_0xf0ad('0x30')]);_0x267b7a[_0xf0ad('0x33')]=_[_0xf0ad('0x34')](_0x1bee71[_0xf0ad('0x2f')],qs['fields'](_0x1b6880[_0xf0ad('0x30')]['fields']));_0x267b7a[_0xf0ad('0x33')]=_0x267b7a['attributes'][_0xf0ad('0x35')]?_0x267b7a['attributes']:_0x1bee71[_0xf0ad('0x2f')];if(!_0x1b6880[_0xf0ad('0x30')][_0xf0ad('0x36')](_0xf0ad('0x37'))){_0x267b7a[_0xf0ad('0x1e')]=qs[_0xf0ad('0x1e')](_0x1b6880[_0xf0ad('0x30')][_0xf0ad('0x1e')]);_0x267b7a['offset']=qs[_0xf0ad('0x1f')](_0x1b6880['query'][_0xf0ad('0x1f')]);}_0x267b7a['order']=qs[_0xf0ad('0x38')](_0x1b6880[_0xf0ad('0x30')][_0xf0ad('0x38')]);_0x267b7a[_0xf0ad('0x39')]=qs[_0xf0ad('0x32')](_['pick'](_0x1b6880[_0xf0ad('0x30')],_0x1bee71[_0xf0ad('0x32')]),_0x39c46c);if(_0x1b6880[_0xf0ad('0x30')][_0xf0ad('0x3a')]){_0x267b7a[_0xf0ad('0x39')]=_[_0xf0ad('0x3b')](_0x267b7a[_0xf0ad('0x39')],{'$or':_['map'](_0x39c46c,function(_0x2e0c7a){if(_0x2e0c7a[_0xf0ad('0x3c')]!==_0xf0ad('0x3d')){var _0x189f67={};_0x189f67[_0x2e0c7a[_0xf0ad('0x28')]]={'$like':'%'+_0x1b6880[_0xf0ad('0x30')][_0xf0ad('0x3a')]+'%'};return _0x189f67;}})});}_0x267b7a=_[_0xf0ad('0x3b')]({},_0x267b7a,_0x1b6880[_0xf0ad('0x3e')]);var _0x5dd631={'where':_0x267b7a[_0xf0ad('0x39')]};return db[_0xf0ad('0x3f')][_0xf0ad('0x40')](_0x5dd631)['then'](function(_0x510f54){_0x2386e8['count']=_0x510f54;if(_0x1b6880[_0xf0ad('0x30')][_0xf0ad('0x41')]){_0x267b7a[_0xf0ad('0x42')]=[{'all':!![]}];}return db[_0xf0ad('0x3f')][_0xf0ad('0x43')](_0x267b7a);})[_0xf0ad('0x23')](function(_0x39083d){_0x2386e8[_0xf0ad('0x44')]=_0x39083d;return _0x2386e8;})[_0xf0ad('0x23')](respondWithFilteredResult(_0x1ac25c,_0x267b7a))[_0xf0ad('0x45')](handleError(_0x1ac25c,null));};exports[_0xf0ad('0x46')]=function(_0x516a72,_0x4ea947){var _0x5cd1dc={'raw':!![],'where':{'id':_0x516a72[_0xf0ad('0x47')]['id']}},_0x1c0609={};_0x1c0609['model']=_[_0xf0ad('0x31')](db[_0xf0ad('0x3f')]['rawAttributes']);_0x1c0609[_0xf0ad('0x30')]=_[_0xf0ad('0x31')](_0x516a72[_0xf0ad('0x30')]);_0x1c0609[_0xf0ad('0x32')]=_['intersection'](_0x1c0609[_0xf0ad('0x2f')],_0x1c0609[_0xf0ad('0x30')]);_0x5cd1dc[_0xf0ad('0x33')]=_[_0xf0ad('0x34')](_0x1c0609[_0xf0ad('0x2f')],qs[_0xf0ad('0x48')](_0x516a72[_0xf0ad('0x30')][_0xf0ad('0x48')]));_0x5cd1dc[_0xf0ad('0x33')]=_0x5cd1dc[_0xf0ad('0x33')][_0xf0ad('0x35')]?_0x5cd1dc['attributes']:_0x1c0609[_0xf0ad('0x2f')];if(_0x516a72[_0xf0ad('0x30')][_0xf0ad('0x41')]){_0x5cd1dc['include']=[{'all':!![]}];}_0x5cd1dc=_['merge']({},_0x5cd1dc,_0x516a72[_0xf0ad('0x3e')]);return db[_0xf0ad('0x3f')][_0xf0ad('0x49')](_0x5cd1dc)[_0xf0ad('0x23')](handleEntityNotFound(_0x4ea947,null))[_0xf0ad('0x23')](respondWithResult(_0x4ea947,null))[_0xf0ad('0x45')](handleError(_0x4ea947,null));};exports[_0xf0ad('0x4a')]=function(_0x561f2a,_0x1e35ce){return db['DeskField'][_0xf0ad('0x4a')](_0x561f2a[_0xf0ad('0x4b')],{})[_0xf0ad('0x23')](respondWithResult(_0x1e35ce,0xc9))[_0xf0ad('0x45')](handleError(_0x1e35ce,null));};exports[_0xf0ad('0x22')]=function(_0x5b18a7,_0x4e8ef5){if(_0x5b18a7[_0xf0ad('0x4b')]['id']){delete _0x5b18a7[_0xf0ad('0x4b')]['id'];}return db[_0xf0ad('0x3f')][_0xf0ad('0x49')]({'where':{'id':_0x5b18a7[_0xf0ad('0x47')]['id']}})[_0xf0ad('0x23')](handleEntityNotFound(_0x4e8ef5,null))[_0xf0ad('0x23')](saveUpdates(_0x5b18a7['body'],null))[_0xf0ad('0x23')](respondWithResult(_0x4e8ef5,null))[_0xf0ad('0x45')](handleError(_0x4e8ef5,null));};exports[_0xf0ad('0x24')]=function(_0xda0e52,_0x2cb082){return db['DeskField'][_0xf0ad('0x49')]({'where':{'id':_0xda0e52[_0xf0ad('0x47')]['id']}})[_0xf0ad('0x23')](handleEntityNotFound(_0x2cb082,null))[_0xf0ad('0x23')](removeEntity(_0x2cb082,null))[_0xf0ad('0x45')](handleError(_0x2cb082,null));};
\ No newline at end of file
+var _0x1b65=['path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','end','status','json','undefined','count','offset','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','DeskField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1b65,0x1b4));var _0x51b6=function(_0x3bd1bd,_0x4a6a33){_0x3bd1bd=_0x3bd1bd-0x0;var _0x46bca6=_0x1b65[_0x3bd1bd];return _0x46bca6;};'use strict';var emlformat=require(_0x51b6('0x0'));var rimraf=require(_0x51b6('0x1'));var zipdir=require(_0x51b6('0x2'));var jsonpatch=require(_0x51b6('0x3'));var rp=require('request-promise');var moment=require(_0x51b6('0x4'));var BPromise=require(_0x51b6('0x5'));var Mustache=require(_0x51b6('0x6'));var util=require(_0x51b6('0x7'));var path=require(_0x51b6('0x8'));var sox=require(_0x51b6('0x9'));var csv=require(_0x51b6('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x51b6('0xb'));var _=require(_0x51b6('0xc'));var squel=require(_0x51b6('0xd'));var crypto=require(_0x51b6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x51b6('0xf'));var toCsv=require(_0x51b6('0xa'));var querystring=require('querystring');var Papa=require(_0x51b6('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x51b6('0x11'));var as=require(_0x51b6('0x12'));var hardwareService=require(_0x51b6('0x13'));var logger=require(_0x51b6('0x14'))(_0x51b6('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x51b6('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4cd605,_0x422bd4){_0x422bd4=_0x422bd4||0xcc;return function(_0x4ca143){if(_0x4ca143){return _0x4cd605[_0x51b6('0x17')](_0x422bd4);}return _0x4cd605['status'](_0x422bd4)[_0x51b6('0x18')]();};}function respondWithResult(_0x24a386,_0x2890ee){_0x2890ee=_0x2890ee||0xc8;return function(_0x235d8c){if(_0x235d8c){return _0x24a386[_0x51b6('0x19')](_0x2890ee)[_0x51b6('0x1a')](_0x235d8c);}};}function respondWithFilteredResult(_0x4c6cd0,_0x23549b){return function(_0x596863){if(_0x596863){var _0x39583d=typeof _0x23549b['offset']===_0x51b6('0x1b')&&typeof _0x23549b['limit']===_0x51b6('0x1b');var _0x22ffa3=_0x596863[_0x51b6('0x1c')];var _0x3ae3c7=_0x39583d?0x0:_0x23549b[_0x51b6('0x1d')];var _0x22c6da=_0x39583d?_0x596863['count']:_0x23549b[_0x51b6('0x1d')]+_0x23549b['limit'];var _0x2974f0;if(_0x22c6da>=_0x22ffa3){_0x22c6da=_0x22ffa3;_0x2974f0=0xc8;}else{_0x2974f0=0xce;}_0x4c6cd0[_0x51b6('0x19')](_0x2974f0);return _0x4c6cd0['set'](_0x51b6('0x1e'),_0x3ae3c7+'-'+_0x22c6da+'/'+_0x22ffa3)[_0x51b6('0x1a')](_0x596863);}return null;};}function patchUpdates(_0x3fee21){return function(_0x471783){try{jsonpatch[_0x51b6('0x1f')](_0x471783,_0x3fee21,!![]);}catch(_0x663b44){return BPromise[_0x51b6('0x20')](_0x663b44);}return _0x471783[_0x51b6('0x21')]();};}function saveUpdates(_0x4ab876,_0x35d2ab){return function(_0x11db4e){if(_0x11db4e){return _0x11db4e[_0x51b6('0x22')](_0x4ab876)[_0x51b6('0x23')](function(_0x53e709){return _0x53e709;});}return null;};}function removeEntity(_0x3d3456,_0x3680af){return function(_0x51c013){if(_0x51c013){return _0x51c013['destroy']()[_0x51b6('0x23')](function(){_0x3d3456[_0x51b6('0x19')](0xcc)[_0x51b6('0x18')]();});}};}function handleEntityNotFound(_0x59193e,_0x4c1825){return function(_0x22b91b){if(!_0x22b91b){_0x59193e[_0x51b6('0x17')](0x194);}return _0x22b91b;};}function handleError(_0x8c0881,_0x4a5ff8){_0x4a5ff8=_0x4a5ff8||0x1f4;return function(_0x2842b2){logger[_0x51b6('0x24')](_0x2842b2[_0x51b6('0x25')]);if(_0x2842b2[_0x51b6('0x26')]){delete _0x2842b2[_0x51b6('0x26')];}_0x8c0881[_0x51b6('0x19')](_0x4a5ff8)[_0x51b6('0x27')](_0x2842b2);};}exports[_0x51b6('0x28')]=function(_0x51b505,_0x2dc770){var _0x226018={},_0x276443={},_0x48eb13={'count':0x0,'rows':[]};var _0x38f855=_[_0x51b6('0x29')](db[_0x51b6('0x2a')][_0x51b6('0x2b')],function(_0x5c7c35){return{'name':_0x5c7c35[_0x51b6('0x2c')],'type':_0x5c7c35['type'][_0x51b6('0x2d')]};});_0x276443[_0x51b6('0x2e')]=_['map'](_0x38f855,'name');_0x276443[_0x51b6('0x2f')]=_[_0x51b6('0x30')](_0x51b505['query']);_0x276443[_0x51b6('0x31')]=_[_0x51b6('0x32')](_0x276443['model'],_0x276443[_0x51b6('0x2f')]);_0x226018[_0x51b6('0x33')]=_[_0x51b6('0x32')](_0x276443['model'],qs[_0x51b6('0x34')](_0x51b505['query'][_0x51b6('0x34')]));_0x226018[_0x51b6('0x33')]=_0x226018[_0x51b6('0x33')][_0x51b6('0x35')]?_0x226018[_0x51b6('0x33')]:_0x276443[_0x51b6('0x2e')];if(!_0x51b505[_0x51b6('0x2f')][_0x51b6('0x36')]('nolimit')){_0x226018[_0x51b6('0x37')]=qs[_0x51b6('0x37')](_0x51b505['query'][_0x51b6('0x37')]);_0x226018['offset']=qs[_0x51b6('0x1d')](_0x51b505[_0x51b6('0x2f')][_0x51b6('0x1d')]);}_0x226018['order']=qs[_0x51b6('0x38')](_0x51b505[_0x51b6('0x2f')]['sort']);_0x226018[_0x51b6('0x39')]=qs[_0x51b6('0x31')](_[_0x51b6('0x3a')](_0x51b505[_0x51b6('0x2f')],_0x276443[_0x51b6('0x31')]),_0x38f855);if(_0x51b505[_0x51b6('0x2f')][_0x51b6('0x3b')]){_0x226018[_0x51b6('0x39')]=_[_0x51b6('0x3c')](_0x226018[_0x51b6('0x39')],{'$or':_[_0x51b6('0x29')](_0x38f855,function(_0x234d5e){if(_0x234d5e[_0x51b6('0x3d')]!==_0x51b6('0x3e')){var _0x28d14f={};_0x28d14f[_0x234d5e[_0x51b6('0x26')]]={'$like':'%'+_0x51b505['query'][_0x51b6('0x3b')]+'%'};return _0x28d14f;}})});}_0x226018=_['merge']({},_0x226018,_0x51b505[_0x51b6('0x3f')]);var _0x4ad444={'where':_0x226018[_0x51b6('0x39')]};return db[_0x51b6('0x2a')]['count'](_0x4ad444)[_0x51b6('0x23')](function(_0x2b6dd6){_0x48eb13['count']=_0x2b6dd6;if(_0x51b505[_0x51b6('0x2f')][_0x51b6('0x40')]){_0x226018[_0x51b6('0x41')]=[{'all':!![]}];}return db[_0x51b6('0x2a')][_0x51b6('0x42')](_0x226018);})['then'](function(_0x588a05){_0x48eb13['rows']=_0x588a05;return _0x48eb13;})[_0x51b6('0x23')](respondWithFilteredResult(_0x2dc770,_0x226018))[_0x51b6('0x43')](handleError(_0x2dc770,null));};exports[_0x51b6('0x44')]=function(_0xda309d,_0x2c3f6e){var _0x588fc6={'raw':!![],'where':{'id':_0xda309d[_0x51b6('0x45')]['id']}},_0x498717={};_0x498717[_0x51b6('0x2e')]=_[_0x51b6('0x30')](db['DeskField'][_0x51b6('0x2b')]);_0x498717['query']=_[_0x51b6('0x30')](_0xda309d['query']);_0x498717[_0x51b6('0x31')]=_[_0x51b6('0x32')](_0x498717[_0x51b6('0x2e')],_0x498717['query']);_0x588fc6[_0x51b6('0x33')]=_[_0x51b6('0x32')](_0x498717[_0x51b6('0x2e')],qs[_0x51b6('0x34')](_0xda309d[_0x51b6('0x2f')]['fields']));_0x588fc6[_0x51b6('0x33')]=_0x588fc6[_0x51b6('0x33')]['length']?_0x588fc6[_0x51b6('0x33')]:_0x498717[_0x51b6('0x2e')];if(_0xda309d['query']['includeAll']){_0x588fc6['include']=[{'all':!![]}];}_0x588fc6=_['merge']({},_0x588fc6,_0xda309d['options']);return db['DeskField'][_0x51b6('0x46')](_0x588fc6)['then'](handleEntityNotFound(_0x2c3f6e,null))[_0x51b6('0x23')](respondWithResult(_0x2c3f6e,null))[_0x51b6('0x43')](handleError(_0x2c3f6e,null));};exports[_0x51b6('0x47')]=function(_0x21a7ab,_0x4562c6){return db[_0x51b6('0x2a')]['create'](_0x21a7ab[_0x51b6('0x48')],{})['then'](respondWithResult(_0x4562c6,0xc9))[_0x51b6('0x43')](handleError(_0x4562c6,null));};exports[_0x51b6('0x22')]=function(_0x594bb2,_0x44f9d4){if(_0x594bb2[_0x51b6('0x48')]['id']){delete _0x594bb2[_0x51b6('0x48')]['id'];}return db[_0x51b6('0x2a')]['find']({'where':{'id':_0x594bb2[_0x51b6('0x45')]['id']}})[_0x51b6('0x23')](handleEntityNotFound(_0x44f9d4,null))[_0x51b6('0x23')](saveUpdates(_0x594bb2[_0x51b6('0x48')],null))[_0x51b6('0x23')](respondWithResult(_0x44f9d4,null))[_0x51b6('0x43')](handleError(_0x44f9d4,null));};exports[_0x51b6('0x49')]=function(_0x3c977a,_0x27a4e4){return db[_0x51b6('0x2a')][_0x51b6('0x46')]({'where':{'id':_0x3c977a['params']['id']}})[_0x51b6('0x23')](handleEntityNotFound(_0x27a4e4,null))[_0x51b6('0x23')](removeEntity(_0x27a4e4,null))[_0x51b6('0x43')](handleError(_0x27a4e4,null));};
\ No newline at end of file
index ed07b2d..2ffd7aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7277=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId'];(function(_0x1e3247,_0x503b69){var _0xe4c89d=function(_0x1307d8){while(--_0x1307d8){_0x1e3247['push'](_0x1e3247['shift']());}};_0xe4c89d(++_0x503b69);}(_0x7277,0x1e0));var _0x7727=function(_0x5534fe,_0x43c22e){_0x5534fe=_0x5534fe-0x0;var _0x3d1dc2=_0x7277[_0x5534fe];return _0x3d1dc2;};'use strict';var _=require(_0x7727('0x0'));var util=require(_0x7727('0x1'));var logger=require(_0x7727('0x2'))(_0x7727('0x3'));var moment=require('moment');var BPromise=require(_0x7727('0x4'));var rp=require(_0x7727('0x5'));var fs=require('fs');var path=require(_0x7727('0x6'));var rimraf=require('rimraf');var config=require(_0x7727('0x7'));var attributes=require('./intDeskField.attributes');module[_0x7727('0x8')]=function(_0x5905d7,_0x105962){return _0x5905d7[_0x7727('0x9')](_0x7727('0xa'),attributes,{'tableName':_0x7727('0xb'),'paranoid':![],'indexes':[{'name':_0x7727('0xc'),'fields':[_0x7727('0xd'),_0x7727('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e4f=['desk_unique_index','FieldId','util','../../config/logger','moment','request-promise','rimraf','../../config/environment','define','int_desk_fields'];(function(_0x4c9380,_0x2fefc0){var _0x49a523=function(_0x165e85){while(--_0x165e85){_0x4c9380['push'](_0x4c9380['shift']());}};_0x49a523(++_0x2fefc0);}(_0x7e4f,0x7a));var _0xf7e4=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x7e4f[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0xf7e4('0x0'));var logger=require(_0xf7e4('0x1'))('api');var moment=require(_0xf7e4('0x2'));var BPromise=require('bluebird');var rp=require(_0xf7e4('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf7e4('0x4'));var config=require(_0xf7e4('0x5'));var attributes=require('./intDeskField.attributes');module['exports']=function(_0x1bee20,_0x5a1c91){return _0x1bee20[_0xf7e4('0x6')]('DeskField',attributes,{'tableName':_0xf7e4('0x7'),'paranoid':![],'indexes':[{'name':_0xf7e4('0x8'),'fields':['idField',_0xf7e4('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a475433..70b2e91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x946a=['result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','DeskField,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x211b9c,_0x3e4a38){var _0x5be03d=function(_0x512424){while(--_0x512424){_0x211b9c['push'](_0x211b9c['shift']());}};_0x5be03d(++_0x3e4a38);}(_0x946a,0x80));var _0xa946=function(_0x57111e,_0x459241){_0x57111e=_0x57111e-0x0;var _0x29bb4f=_0x946a[_0x57111e];return _0x29bb4f;};'use strict';var _=require(_0xa946('0x0'));var util=require(_0xa946('0x1'));var moment=require(_0xa946('0x2'));var BPromise=require(_0xa946('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa946('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa946('0x5'));var logger=require(_0xa946('0x6'))(_0xa946('0x7'));var config=require(_0xa946('0x8'));var jayson=require(_0xa946('0x9'));var client=jayson['client'][_0xa946('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2667ad,_0xff069f,_0x1931c7){return new BPromise(function(_0xa5428e,_0x4cb55a){return client['request'](_0x2667ad,_0x1931c7)['then'](function(_0x5efbea){logger['info'](_0xa946('0xb'),_0xff069f,'request\x20sent');logger['debug']('DeskField,\x20%s,\x20%s,\x20%s',_0xff069f,_0xa946('0xc'),JSON[_0xa946('0xd')](_0x5efbea));if(_0x5efbea['error']){if(_0x5efbea['error']['code']===0x1f4){logger[_0xa946('0xe')](_0xa946('0xb'),_0xff069f,_0x5efbea[_0xa946('0xe')]['message']);return _0x4cb55a(_0x5efbea[_0xa946('0xe')][_0xa946('0xf')]);}logger[_0xa946('0xe')](_0xa946('0xb'),_0xff069f,_0x5efbea[_0xa946('0xe')]['message']);return _0xa5428e(_0x5efbea[_0xa946('0xe')][_0xa946('0xf')]);}else{logger['info'](_0xa946('0xb'),_0xff069f,_0xa946('0xc'));_0xa5428e(_0x5efbea[_0xa946('0x10')][_0xa946('0xf')]);}})[_0xa946('0x11')](function(_0x29aada){logger['error'](_0xa946('0xb'),_0xff069f,_0x29aada);_0x4cb55a(_0x29aada);});});}
\ No newline at end of file
+var _0xa584=['catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xa584,0xdd));var _0x4a58=function(_0x2dc1ca,_0x46328f){_0x2dc1ca=_0x2dc1ca-0x0;var _0x21b84d=_0xa584[_0x2dc1ca];return _0x21b84d;};'use strict';var _=require('lodash');var util=require(_0x4a58('0x0'));var moment=require(_0x4a58('0x1'));var BPromise=require(_0x4a58('0x2'));var rs=require(_0x4a58('0x3'));var fs=require('fs');var Redis=require(_0x4a58('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4a58('0x5'));var logger=require(_0x4a58('0x6'))(_0x4a58('0x7'));var config=require(_0x4a58('0x8'));var jayson=require(_0x4a58('0x9'));var client=jayson['client'][_0x4a58('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4502a5,_0x5c0ddb,_0x1ca55d){return new BPromise(function(_0x37eb33,_0x5c3899){return client[_0x4a58('0xb')](_0x4502a5,_0x1ca55d)['then'](function(_0x35d0ef){logger[_0x4a58('0xc')](_0x4a58('0xd'),_0x5c0ddb,_0x4a58('0xe'));logger[_0x4a58('0xf')]('DeskField,\x20%s,\x20%s,\x20%s',_0x5c0ddb,'request\x20sent',JSON[_0x4a58('0x10')](_0x35d0ef));if(_0x35d0ef[_0x4a58('0x11')]){if(_0x35d0ef[_0x4a58('0x11')][_0x4a58('0x12')]===0x1f4){logger['error'](_0x4a58('0xd'),_0x5c0ddb,_0x35d0ef['error']['message']);return _0x5c3899(_0x35d0ef[_0x4a58('0x11')][_0x4a58('0x13')]);}logger[_0x4a58('0x11')](_0x4a58('0xd'),_0x5c0ddb,_0x35d0ef[_0x4a58('0x11')][_0x4a58('0x13')]);return _0x37eb33(_0x35d0ef['error'][_0x4a58('0x13')]);}else{logger[_0x4a58('0xc')](_0x4a58('0xd'),_0x5c0ddb,_0x4a58('0xe'));_0x37eb33(_0x35d0ef[_0x4a58('0x14')][_0x4a58('0x13')]);}})[_0x4a58('0x15')](function(_0x24af6a){logger[_0x4a58('0x11')]('DeskField,\x20%s,\x20%s',_0x5c0ddb,_0x24af6a);_0x5c3899(_0x24af6a);});});}
\ No newline at end of file
index 20e85c4..1d01e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c3=['../../components/auth/service','./intDynamics365Account.controller','isAuthenticated','index','get','show','getConfigurations','getFields','post','create','/:id/configurations','addConfiguration','put','update','/:id','destroy','exports','multer','util','connect-timeout','Router'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xc7c3,0xe3));var _0x3c7c=function(_0x17d68c,_0x24c04d){_0x17d68c=_0x17d68c-0x0;var _0x12784c=_0xc7c3[_0x17d68c];return _0x12784c;};'use strict';var multer=require(_0x3c7c('0x0'));var util=require(_0x3c7c('0x1'));var path=require('path');var timeout=require(_0x3c7c('0x2'));var express=require('express');var router=express[_0x3c7c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3c7c('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3c7c('0x5'));router['get']('/',auth[_0x3c7c('0x6')](),controller[_0x3c7c('0x7')]);router[_0x3c7c('0x8')]('/:id',auth[_0x3c7c('0x6')](),controller[_0x3c7c('0x9')]);router[_0x3c7c('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x3c7c('0xa')]);router[_0x3c7c('0x8')]('/:id/fields',auth[_0x3c7c('0x6')](),controller[_0x3c7c('0xb')]);router[_0x3c7c('0xc')]('/',auth[_0x3c7c('0x6')](),controller[_0x3c7c('0xd')]);router[_0x3c7c('0xc')](_0x3c7c('0xe'),auth[_0x3c7c('0x6')](),controller[_0x3c7c('0xf')]);router[_0x3c7c('0x10')]('/:id',auth[_0x3c7c('0x6')](),controller[_0x3c7c('0x11')]);router['delete'](_0x3c7c('0x12'),auth[_0x3c7c('0x6')](),controller[_0x3c7c('0x13')]);module[_0x3c7c('0x14')]=router;
\ No newline at end of file
+var _0x6ef5=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDynamics365Account.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','/:id','update','delete','destroy','exports','multer'];(function(_0x32458f,_0x355239){var _0x7c2bea=function(_0x509148){while(--_0x509148){_0x32458f['push'](_0x32458f['shift']());}};_0x7c2bea(++_0x355239);}(_0x6ef5,0x19d));var _0x56ef=function(_0x8acaaf,_0x2c789e){_0x8acaaf=_0x8acaaf-0x0;var _0x417afc=_0x6ef5[_0x8acaaf];return _0x417afc;};'use strict';var multer=require(_0x56ef('0x0'));var util=require(_0x56ef('0x1'));var path=require(_0x56ef('0x2'));var timeout=require(_0x56ef('0x3'));var express=require(_0x56ef('0x4'));var router=express[_0x56ef('0x5')]();var fs_extra=require(_0x56ef('0x6'));var auth=require(_0x56ef('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x56ef('0x8'));router[_0x56ef('0x9')]('/',auth[_0x56ef('0xa')](),controller[_0x56ef('0xb')]);router[_0x56ef('0x9')]('/:id',auth[_0x56ef('0xa')](),controller[_0x56ef('0xc')]);router[_0x56ef('0x9')](_0x56ef('0xd'),auth['isAuthenticated'](),controller[_0x56ef('0xe')]);router[_0x56ef('0x9')](_0x56ef('0xf'),auth[_0x56ef('0xa')](),controller[_0x56ef('0x10')]);router[_0x56ef('0x11')]('/',auth[_0x56ef('0xa')](),controller['create']);router['post'](_0x56ef('0xd'),auth[_0x56ef('0xa')](),controller['addConfiguration']);router['put'](_0x56ef('0x12'),auth[_0x56ef('0xa')](),controller[_0x56ef('0x13')]);router[_0x56ef('0x14')](_0x56ef('0x12'),auth['isAuthenticated'](),controller[_0x56ef('0x15')]);module[_0x56ef('0x16')]=router;
\ No newline at end of file
index c9f0c95..def854e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb12a=['STRING','sequelize','exports'];(function(_0x5756f8,_0x22b6d5){var _0x3bb749=function(_0x332204){while(--_0x332204){_0x5756f8['push'](_0x5756f8['shift']());}};_0x3bb749(++_0x22b6d5);}(_0xb12a,0x145));var _0xab12=function(_0x4fca62,_0xfe4f5a){_0x4fca62=_0x4fca62-0x0;var _0x28915d=_0xb12a[_0x4fca62];return _0x28915d;};'use strict';var Sequelize=require(_0xab12('0x0'));module[_0xab12('0x1')]={'name':{'type':Sequelize[_0xab12('0x2')]},'username':{'type':Sequelize[_0xab12('0x2')]},'password':{'type':Sequelize[_0xab12('0x2')]},'remoteUri':{'type':Sequelize[_0xab12('0x2')]},'tenantId':{'type':Sequelize[_0xab12('0x2')]},'clientId':{'type':Sequelize[_0xab12('0x2')]},'clientSecret':{'type':Sequelize[_0xab12('0x2')]},'serverUrl':{'type':Sequelize[_0xab12('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa66b=['exports','STRING','sequelize'];(function(_0x37aaa6,_0x3e52a9){var _0x4e29f5=function(_0x41eea1){while(--_0x41eea1){_0x37aaa6['push'](_0x37aaa6['shift']());}};_0x4e29f5(++_0x3e52a9);}(_0xa66b,0x68));var _0xba66=function(_0x21c068,_0x369d6a){_0x21c068=_0x21c068-0x0;var _0x5cf199=_0xa66b[_0x21c068];return _0x5cf199;};'use strict';var Sequelize=require(_0xba66('0x0'));module[_0xba66('0x1')]={'name':{'type':Sequelize[_0xba66('0x2')]},'username':{'type':Sequelize[_0xba66('0x2')]},'password':{'type':Sequelize[_0xba66('0x2')]},'remoteUri':{'type':Sequelize[_0xba66('0x2')]},'tenantId':{'type':Sequelize[_0xba66('0x2')]},'clientId':{'type':Sequelize[_0xba66('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xba66('0x2')]}};
\ No newline at end of file
index 6df3d54..33d6245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe06f=['customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','firstresponsebykpiidname','influencescore','lastonholdtime','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','statecode','statuscode','subjectidname','ticketnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','password','remoteUri','tenantId','clientSecret','slice','lastIndexOf','%s/api/data/v9.0/','POST','/oauth2/token','clientId','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','LogicalName','forEach','@odata.type','substring','PicklistAttributeMetadata','push','all','isNil','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','Label','Value','DisplayName','UserLocalizedLabel',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption',')/Microsoft.Dynamics.CRM.','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','end','stack','name','send','index','map','Dynamics365Account','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','body','find','destroy','Dynamics365Configuration','getConfigurations','addConfiguration','getSubjects','Descriptions','getDescriptions','channel','Dynamics365Field','Subjects','getFields','ticketType','incident','Incident','title','description','subject','phonenumber','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname'];(function(_0x5e866d,_0x38e26a){var _0x4ab63f=function(_0x473d12){while(--_0x473d12){_0x5e866d['push'](_0x5e866d['shift']());}};_0x4ab63f(++_0x38e26a);}(_0xe06f,0x65));var _0xfe06=function(_0x52611c,_0x1cc52a){_0x52611c=_0x52611c-0x0;var _0x2cf550=_0xe06f[_0x52611c];return _0x2cf550;};'use strict';var emlformat=require(_0xfe06('0x0'));var rimraf=require(_0xfe06('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfe06('0x2'));var rp=require('request-promise');var moment=require(_0xfe06('0x3'));var BPromise=require(_0xfe06('0x4'));var Mustache=require(_0xfe06('0x5'));var util=require(_0xfe06('0x6'));var path=require(_0xfe06('0x7'));var sox=require(_0xfe06('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfe06('0x9'));var squel=require(_0xfe06('0xa'));var crypto=require(_0xfe06('0xb'));var jsforce=require(_0xfe06('0xc'));var deskjs=require(_0xfe06('0xd'));var toCsv=require(_0xfe06('0xe'));var querystring=require('querystring');var Papa=require(_0xfe06('0xf'));var Redis=require(_0xfe06('0x10'));var authService=require(_0xfe06('0x11'));var qs=require(_0xfe06('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe06('0x13'));var logger=require(_0xfe06('0x14'))(_0xfe06('0x15'));var utils=require(_0xfe06('0x16'));var config=require(_0xfe06('0x17'));var licenseUtil=require(_0xfe06('0x18'));var db=require(_0xfe06('0x19'))['db'];var integrations=require(_0xfe06('0x1a'));function respondWithStatusCode(_0x576efe,_0xbb32db){_0xbb32db=_0xbb32db||0xcc;return function(_0x106662){if(_0x106662){return _0x576efe[_0xfe06('0x1b')](_0xbb32db);}return _0x576efe[_0xfe06('0x1c')](_0xbb32db)['end']();};}function respondWithResult(_0x5a91b5,_0x3e44dd){_0x3e44dd=_0x3e44dd||0xc8;return function(_0x5290be){if(_0x5290be){return _0x5a91b5[_0xfe06('0x1c')](_0x3e44dd)[_0xfe06('0x1d')](_0x5290be);}};}function respondWithFilteredResult(_0x4dd976,_0x54dd69){return function(_0x7b243f){if(_0x7b243f){var _0x2c3276=typeof _0x54dd69[_0xfe06('0x1e')]===_0xfe06('0x1f')&&typeof _0x54dd69[_0xfe06('0x20')]===_0xfe06('0x1f');var _0x388a7f=_0x7b243f['count'];var _0x377f5d=_0x2c3276?0x0:_0x54dd69[_0xfe06('0x1e')];var _0xaf4e43=_0x2c3276?_0x7b243f[_0xfe06('0x21')]:_0x54dd69[_0xfe06('0x1e')]+_0x54dd69['limit'];var _0x54c6b3;if(_0xaf4e43>=_0x388a7f){_0xaf4e43=_0x388a7f;_0x54c6b3=0xc8;}else{_0x54c6b3=0xce;}_0x4dd976['status'](_0x54c6b3);return _0x4dd976[_0xfe06('0x22')](_0xfe06('0x23'),_0x377f5d+'-'+_0xaf4e43+'/'+_0x388a7f)[_0xfe06('0x1d')](_0x7b243f);}return null;};}function patchUpdates(_0x4775b5){return function(_0x176e2a){try{jsonpatch['apply'](_0x176e2a,_0x4775b5,!![]);}catch(_0x5b68f9){return BPromise[_0xfe06('0x24')](_0x5b68f9);}return _0x176e2a[_0xfe06('0x25')]();};}function saveUpdates(_0x4dd52d,_0x37974d){return function(_0xc53dfa){if(_0xc53dfa){return _0xc53dfa[_0xfe06('0x26')](_0x4dd52d)[_0xfe06('0x27')](function(_0x288487){return _0x288487;});}return null;};}function removeEntity(_0x5b58e5,_0x39468e){return function(_0x51f5bd){if(_0x51f5bd){return _0x51f5bd['destroy']()[_0xfe06('0x27')](function(){_0x5b58e5['status'](0xcc)[_0xfe06('0x28')]();});}};}function handleEntityNotFound(_0x27a507,_0x470530){return function(_0x327f09){if(!_0x327f09){_0x27a507['sendStatus'](0x194);}return _0x327f09;};}function handleError(_0x10c227,_0x2c2146){_0x2c2146=_0x2c2146||0x1f4;return function(_0x2386b6){logger['error'](_0x2386b6[_0xfe06('0x29')]);if(_0x2386b6['name']){delete _0x2386b6[_0xfe06('0x2a')];}_0x10c227['status'](_0x2c2146)[_0xfe06('0x2b')](_0x2386b6);};}exports[_0xfe06('0x2c')]=function(_0x3f8536,_0x353b3c){var _0x12d6a5={},_0x2e8407={},_0x53bcd3={'count':0x0,'rows':[]};var _0x2d8994=_[_0xfe06('0x2d')](db[_0xfe06('0x2e')][_0xfe06('0x2f')],function(_0x22f33e){return{'name':_0x22f33e['fieldName'],'type':_0x22f33e['type'][_0xfe06('0x30')]};});_0x2e8407[_0xfe06('0x31')]=_['map'](_0x2d8994,_0xfe06('0x2a'));_0x2e8407[_0xfe06('0x32')]=_[_0xfe06('0x33')](_0x3f8536['query']);_0x2e8407[_0xfe06('0x34')]=_[_0xfe06('0x35')](_0x2e8407[_0xfe06('0x31')],_0x2e8407['query']);_0x12d6a5[_0xfe06('0x36')]=_[_0xfe06('0x35')](_0x2e8407[_0xfe06('0x31')],qs[_0xfe06('0x37')](_0x3f8536[_0xfe06('0x32')][_0xfe06('0x37')]));_0x12d6a5['attributes']=_0x12d6a5[_0xfe06('0x36')][_0xfe06('0x38')]?_0x12d6a5['attributes']:_0x2e8407[_0xfe06('0x31')];if(!_0x3f8536[_0xfe06('0x32')][_0xfe06('0x39')](_0xfe06('0x3a'))){_0x12d6a5[_0xfe06('0x20')]=qs[_0xfe06('0x20')](_0x3f8536[_0xfe06('0x32')][_0xfe06('0x20')]);_0x12d6a5['offset']=qs['offset'](_0x3f8536[_0xfe06('0x32')][_0xfe06('0x1e')]);}_0x12d6a5[_0xfe06('0x3b')]=qs['sort'](_0x3f8536[_0xfe06('0x32')][_0xfe06('0x3c')]);_0x12d6a5[_0xfe06('0x3d')]=qs['filters'](_[_0xfe06('0x3e')](_0x3f8536[_0xfe06('0x32')],_0x2e8407['filters']),_0x2d8994);if(_0x3f8536[_0xfe06('0x32')][_0xfe06('0x3f')]){_0x12d6a5[_0xfe06('0x3d')]=_['merge'](_0x12d6a5[_0xfe06('0x3d')],{'$or':_[_0xfe06('0x2d')](_0x2d8994,function(_0x20d0f9){if(_0x20d0f9[_0xfe06('0x40')]!==_0xfe06('0x41')){var _0x2643cb={};_0x2643cb[_0x20d0f9[_0xfe06('0x2a')]]={'$like':'%'+_0x3f8536['query'][_0xfe06('0x3f')]+'%'};return _0x2643cb;}})});}_0x12d6a5=_[_0xfe06('0x42')]({},_0x12d6a5,_0x3f8536[_0xfe06('0x43')]);var _0x5201d0={'where':_0x12d6a5[_0xfe06('0x3d')]};return db[_0xfe06('0x2e')][_0xfe06('0x21')](_0x5201d0)[_0xfe06('0x27')](function(_0x1a9ab8){_0x53bcd3['count']=_0x1a9ab8;if(_0x3f8536[_0xfe06('0x32')][_0xfe06('0x44')]){_0x12d6a5[_0xfe06('0x45')]=[{'all':!![]}];}return db['Dynamics365Account'][_0xfe06('0x46')](_0x12d6a5);})[_0xfe06('0x27')](function(_0x31bd3e){_0x53bcd3['rows']=_0x31bd3e;return _0x53bcd3;})['then'](respondWithFilteredResult(_0x353b3c,_0x12d6a5))[_0xfe06('0x47')](handleError(_0x353b3c,null));};exports['show']=function(_0x3adecb,_0x3e9595){var _0x34de98={'raw':![],'where':{'id':_0x3adecb[_0xfe06('0x48')]['id']}},_0x22d830={};_0x22d830[_0xfe06('0x31')]=_[_0xfe06('0x33')](db[_0xfe06('0x2e')][_0xfe06('0x2f')]);_0x22d830[_0xfe06('0x32')]=_[_0xfe06('0x33')](_0x3adecb[_0xfe06('0x32')]);_0x22d830[_0xfe06('0x34')]=_['intersection'](_0x22d830[_0xfe06('0x31')],_0x22d830[_0xfe06('0x32')]);_0x34de98[_0xfe06('0x36')]=_['intersection'](_0x22d830[_0xfe06('0x31')],qs[_0xfe06('0x37')](_0x3adecb['query'][_0xfe06('0x37')]));_0x34de98[_0xfe06('0x36')]=_0x34de98[_0xfe06('0x36')][_0xfe06('0x38')]?_0x34de98[_0xfe06('0x36')]:_0x22d830[_0xfe06('0x31')];if(_0x3adecb[_0xfe06('0x32')]['includeAll']){_0x34de98[_0xfe06('0x45')]=[{'all':!![]}];}_0x34de98=_[_0xfe06('0x42')]({},_0x34de98,_0x3adecb[_0xfe06('0x43')]);return db[_0xfe06('0x2e')]['find'](_0x34de98)[_0xfe06('0x27')](handleEntityNotFound(_0x3e9595,null))[_0xfe06('0x27')](respondWithResult(_0x3e9595,null))['catch'](handleError(_0x3e9595,null));};exports['create']=function(_0x1ad78a,_0x5c431e){return db[_0xfe06('0x2e')]['create'](_0x1ad78a[_0xfe06('0x49')],{})[_0xfe06('0x27')](respondWithResult(_0x5c431e,0xc9))[_0xfe06('0x47')](handleError(_0x5c431e,null));};exports[_0xfe06('0x26')]=function(_0x518245,_0x58f4c0){if(_0x518245['body']['id']){delete _0x518245[_0xfe06('0x49')]['id'];}return db['Dynamics365Account'][_0xfe06('0x4a')]({'where':{'id':_0x518245[_0xfe06('0x48')]['id']}})['then'](handleEntityNotFound(_0x58f4c0,null))[_0xfe06('0x27')](saveUpdates(_0x518245[_0xfe06('0x49')],null))['then'](respondWithResult(_0x58f4c0,null))[_0xfe06('0x47')](handleError(_0x58f4c0,null));};exports[_0xfe06('0x4b')]=function(_0x5a9777,_0x47b181){return db[_0xfe06('0x2e')][_0xfe06('0x4a')]({'where':{'id':_0x5a9777['params']['id']}})['then'](handleEntityNotFound(_0x47b181,null))['then'](removeEntity(_0x47b181,null))[_0xfe06('0x47')](handleError(_0x47b181,null));};exports['getConfigurations']=function(_0x4d2eae,_0x54f7b8,_0x40dfef){var _0x32474c={};var _0x22f457={};var _0x4ebe8c;var _0x1d56a8;return db[_0xfe06('0x2e')]['findOne']({'where':{'id':_0x4d2eae['params']['id']}})['then'](handleEntityNotFound(_0x54f7b8,null))[_0xfe06('0x27')](function(_0x521c2b){if(_0x521c2b){_0x4ebe8c=_0x521c2b;_0x22f457['model']=_[_0xfe06('0x33')](db[_0xfe06('0x4c')][_0xfe06('0x2f')]);_0x22f457['query']=_['keys'](_0x4d2eae[_0xfe06('0x32')]);_0x22f457[_0xfe06('0x34')]=_[_0xfe06('0x35')](_0x22f457[_0xfe06('0x31')],_0x22f457['query']);_0x32474c[_0xfe06('0x36')]=_[_0xfe06('0x35')](_0x22f457[_0xfe06('0x31')],qs[_0xfe06('0x37')](_0x4d2eae[_0xfe06('0x32')][_0xfe06('0x37')]));_0x32474c[_0xfe06('0x36')]=_0x32474c['attributes']['length']?_0x32474c[_0xfe06('0x36')]:_0x22f457['model'];_0x32474c[_0xfe06('0x3b')]=qs['sort'](_0x4d2eae['query'][_0xfe06('0x3c')]);_0x32474c[_0xfe06('0x3d')]=qs['filters'](_[_0xfe06('0x3e')](_0x4d2eae['query'],_0x22f457[_0xfe06('0x34')]));if(_0x4d2eae[_0xfe06('0x32')][_0xfe06('0x3f')]){_0x32474c['where']=_['merge'](_0x32474c[_0xfe06('0x3d')],{'$or':_[_0xfe06('0x2d')](_0x32474c[_0xfe06('0x36')],function(_0x50d306){var _0x54d4a0={};_0x54d4a0[_0x50d306]={'$like':'%'+_0x4d2eae['query'][_0xfe06('0x3f')]+'%'};return _0x54d4a0;})});}_0x32474c=_['merge']({},_0x32474c,_0x4d2eae[_0xfe06('0x43')]);return _0x4ebe8c[_0xfe06('0x4d')](_0x32474c);}})[_0xfe06('0x27')](function(_0x359a6a){if(_0x359a6a){_0x1d56a8=_0x359a6a[_0xfe06('0x38')];if(!_0x4d2eae[_0xfe06('0x32')]['hasOwnProperty'](_0xfe06('0x3a'))){_0x32474c[_0xfe06('0x20')]=qs[_0xfe06('0x20')](_0x4d2eae[_0xfe06('0x32')][_0xfe06('0x20')]);_0x32474c['offset']=qs[_0xfe06('0x1e')](_0x4d2eae['query'][_0xfe06('0x1e')]);}return _0x4ebe8c[_0xfe06('0x4d')](_0x32474c);}})[_0xfe06('0x27')](function(_0x5637a4){if(_0x5637a4){return _0x5637a4?{'count':_0x1d56a8,'rows':_0x5637a4}:null;}})[_0xfe06('0x27')](respondWithResult(_0x54f7b8,null))[_0xfe06('0x47')](handleError(_0x54f7b8,null));};exports[_0xfe06('0x4e')]=function(_0x5e3cde,_0x26fe86,_0xc0278d){if(_0x5e3cde[_0xfe06('0x49')]['id']){delete _0x5e3cde[_0xfe06('0x49')]['id'];}return db[_0xfe06('0x2e')]['findOne']({'where':{'id':_0x5e3cde[_0xfe06('0x48')]['id']}})[_0xfe06('0x27')](handleEntityNotFound(_0x26fe86,null))[_0xfe06('0x27')](function(_0x3f57ad){if(_0x3f57ad){_0x5e3cde[_0xfe06('0x49')]['AccountId']=_0x3f57ad['id'];_0x5e3cde[_0xfe06('0x49')]['Subjects']=integrations[_0xfe06('0x4f')](_0x5e3cde[_0xfe06('0x49')]['channel'],_0x5e3cde[_0xfe06('0x49')][_0xfe06('0x40')]);_0x5e3cde[_0xfe06('0x49')][_0xfe06('0x50')]=integrations[_0xfe06('0x51')](_0x5e3cde[_0xfe06('0x49')][_0xfe06('0x52')],_0x5e3cde[_0xfe06('0x49')]['type']);return db['Dynamics365Configuration']['create'](_0x5e3cde[_0xfe06('0x49')],{'include':[{'model':db[_0xfe06('0x53')],'as':_0xfe06('0x54')},{'model':db[_0xfe06('0x53')],'as':_0xfe06('0x50')}]});}return null;})[_0xfe06('0x27')](respondWithResult(_0x26fe86,null))[_0xfe06('0x47')](handleError(_0x26fe86,null));};exports[_0xfe06('0x55')]=function(_0x566f92,_0x4929c0,_0x3d03a4){var _0x43bc62=_0x566f92[_0xfe06('0x32')][_0xfe06('0x56')];var _0x521d49=_0x43bc62===_0xfe06('0x57')?_0xfe06('0x58'):'PhoneCall';var _0x3193e8='';var _0x18c7dc='';var _0x173d47='';var _0x156278='';var _0xf54c35='';var _0x2d1bc6='';var _0x38d633='';var _0x3b4001='';var _0x8aa35c=[_0xfe06('0x59'),_0xfe06('0x5a'),'customerid','ownerid','caseorigincode',_0xfe06('0x5b'),_0xfe06('0x5c'),'regardingobjectid',_0xfe06('0x5d'),_0xfe06('0x5e')];var _0x11f2be=[_0xfe06('0x5f'),_0xfe06('0x60'),_0xfe06('0x61'),_0xfe06('0x62'),_0xfe06('0x63'),_0xfe06('0x64'),_0xfe06('0x65'),_0xfe06('0x66'),_0xfe06('0x67'),_0xfe06('0x68'),_0xfe06('0x69'),_0xfe06('0x6a'),'createdon',_0xfe06('0x6b'),'createdonbehalfbyyominame',_0xfe06('0x6c'),_0xfe06('0x6d'),_0xfe06('0x6e'),_0xfe06('0x6f'),_0xfe06('0x70'),_0xfe06('0x71'),_0xfe06('0x72'),_0xfe06('0x73'),_0xfe06('0x74'),_0xfe06('0x75'),'followupby','importsequencenumber',_0xfe06('0x76'),'kbarticleidname',_0xfe06('0x77'),_0xfe06('0x78'),_0xfe06('0x79'),_0xfe06('0x7a'),'modifiedbyname','modifiedbyyominame',_0xfe06('0x7b'),_0xfe06('0x7c'),_0xfe06('0x7d'),_0xfe06('0x7e'),_0xfe06('0x7f'),'numberofchildincidents',_0xfe06('0x80'),_0xfe06('0x81'),_0xfe06('0x82'),'owneridtype',_0xfe06('0x83'),_0xfe06('0x84'),_0xfe06('0x85'),_0xfe06('0x86'),'prioritycodename',_0xfe06('0x87'),_0xfe06('0x88'),_0xfe06('0x89'),_0xfe06('0x8a'),_0xfe06('0x8b'),_0xfe06('0x8c'),_0xfe06('0x8d'),_0xfe06('0x8e'),_0xfe06('0x8f'),'slaname',_0xfe06('0x90'),_0xfe06('0x91'),_0xfe06('0x92'),_0xfe06('0x93'),_0xfe06('0x94'),'timezoneruleversionnumber',_0xfe06('0x95'),_0xfe06('0x96'),_0xfe06('0x97'),_0xfe06('0x98')];var _0x5e57c4=_0x8aa35c[_0xfe06('0x99')](_0x11f2be);return db[_0xfe06('0x2e')]['findOne']({'where':{'id':_0x566f92['params']['id']},'attributes':['id',_0xfe06('0x9a'),_0xfe06('0x9b'),_0xfe06('0x9c'),_0xfe06('0x9d'),'clientId',_0xfe06('0x9e')]})[_0xfe06('0x27')](handleEntityNotFound(_0x4929c0,null))[_0xfe06('0x27')](function(_0xc95cb6){if(_0xc95cb6){_0x3b4001=_0xc95cb6['remoteUri'];var _0x5eae0c=_0x3b4001[_0xfe06('0x9f')](-0x1);if(_0x5eae0c==='/'){_0x3b4001=_0x3b4001['substring'](0x0,_0x3b4001[_0xfe06('0xa0')](_0x5eae0c));}_0x38d633=util['format'](_0xfe06('0xa1'),_0x3b4001);var _0x5a7274={'method':_0xfe06('0xa2'),'uri':'https://login.microsoftonline.com/'+_0xc95cb6['tenantId']+_0xfe06('0xa3'),'form':{'client_id':_0xc95cb6[_0xfe06('0xa4')],'resource':_0x3b4001,'username':_0xc95cb6[_0xfe06('0x9a')],'password':_0xc95cb6[_0xfe06('0x9b')],'grant_type':_0xfe06('0x9b'),'client_secret':_0xc95cb6[_0xfe06('0x9e')]},'json':!![]};return rp(_0x5a7274);}})[_0xfe06('0x27')](function(_0x384a4b){_0x2d1bc6=_0x384a4b[_0xfe06('0xa5')];var _0x4bb24d={'method':_0xfe06('0xa6'),'uri':encodeURI(_0x38d633+_0xfe06('0xa7')+_0x521d49+'\x27'),'headers':{'Authorization':_0xfe06('0xa8')+_0x2d1bc6,'If-None-Match':null,'OData-Version':_0xfe06('0xa9')},'json':!![]};return rp(_0x4bb24d);})[_0xfe06('0x27')](function(_0x2d2fc3){var _0x4c29ac=_0x2d2fc3[_0xfe06('0xaa')][0x0];var _0x56cf7e=_0x4c29ac[_0xfe06('0xab')];var _0x2e9cca={'method':_0xfe06('0xa6'),'uri':_0x38d633+_0xfe06('0xac')+_0x56cf7e+_0xfe06('0xad'),'headers':{'Authorization':_0xfe06('0xa8')+_0x2d1bc6,'If-None-Match':null,'OData-Version':_0xfe06('0xa9')},'json':!![]};return rp(_0x2e9cca);})[_0xfe06('0x27')](function(_0x13d4ad){_0x3193e8=_0x13d4ad;_0x18c7dc=_0x3193e8[_0xfe06('0xae')];_0x18c7dc=_[_0xfe06('0xaf')](_0x18c7dc,function(_0x145346){return!_0x5e57c4[_0xfe06('0xb0')](_0x145346[_0xfe06('0xb1')]);});var _0x65e098=[];var _0xb6071f=[];_0x18c7dc[_0xfe06('0xb2')](function(_0x1fee0d){if(_0x1fee0d[_0xfe06('0xb3')]){var _0x357085=_0x1fee0d['@odata.type'][_0xfe06('0xb4')](_0x1fee0d[_0xfe06('0xb3')][_0xfe06('0xa0')]('.')+0x1);if(_0x357085===_0xfe06('0xb5')){_0x65e098[_0xfe06('0xb6')](getSelectList(_0x38d633,_0x43bc62,_0xb6071f,_0x3193e8[_0xfe06('0xab')],_0x1fee0d[_0xfe06('0xab')],_0x2d1bc6));}}});return Promise[_0xfe06('0xb7')](_0x65e098);})['then'](function(_0x10374a){_0x173d47=_0x10374a[0x0];var _0x161045=[];var _0x2a6f32=[];_0x18c7dc[_0xfe06('0xb2')](function(_0x45bd00){if(!_[_0xfe06('0xb8')](_0x45bd00['@odata.type'])){var _0x3a7fff=_0x45bd00[_0xfe06('0xb3')][_0xfe06('0xb4')](_0x45bd00[_0xfe06('0xb3')][_0xfe06('0xa0')]('.')+0x1);if(_0x3a7fff==='BooleanAttributeMetadata'){_0x161045['push'](getBooleanList(_0x38d633,_0x43bc62,_0x2a6f32,_0x3193e8[_0xfe06('0xab')],_0x45bd00['MetadataId'],_0x2d1bc6));}}});return Promise[_0xfe06('0xb7')](_0x161045);})[_0xfe06('0x27')](function(_0x3db5a3){_0x156278=_0x3db5a3[0x0];var _0x3ac4c5=[];var _0x172627=[];_0x18c7dc[_0xfe06('0xb2')](function(_0x31b9d9){if(_0x31b9d9[_0xfe06('0xb3')]){var _0x2e3a41=_0x31b9d9['@odata.type'][_0xfe06('0xb4')](_0x31b9d9[_0xfe06('0xb3')][_0xfe06('0xa0')]('.')+0x1);if(_0x2e3a41==='StringAttributeMetadata'||_0x2e3a41==='DoubleAttributeMetadata'||_0x2e3a41===_0xfe06('0xb9')||_0x2e3a41===_0xfe06('0xba')||_0x2e3a41===_0xfe06('0xbb')||_0x2e3a41===_0xfe06('0xbc')||_0x2e3a41===_0xfe06('0xbd')||_0x2e3a41==='EntityNameAttributeMetadata'||_0x2e3a41===_0xfe06('0xbe')||_0x2e3a41===_0xfe06('0xbf')){_0x3ac4c5['push'](getInputList(_0x38d633,_0x43bc62,_0x2e3a41,_0x172627,_0x3193e8[_0xfe06('0xab')],_0x31b9d9[_0xfe06('0xab')],_0x2d1bc6));}}});return Promise[_0xfe06('0xb7')](_0x3ac4c5);})[_0xfe06('0x27')](function(_0x6cdbd3){_0xf54c35=_0x6cdbd3[0x0];var _0x45bde7=_0x173d47['concat'](_0x156278)['concat'](_0xf54c35);var _0x41fd47={'count':_0x45bde7[_0xfe06('0x38')],'rows':_0x45bde7};return _0x41fd47;})[_0xfe06('0x27')](respondWithResult(_0x4929c0,null))['catch'](function(_0x278c4a){var _0x167c83=_0x566f92[_0xfe06('0x32')][_0xfe06('0xc0')]?0x1f4:_0x278c4a[_0xfe06('0xc1')]||0x1f4;logger['error'](_0x278c4a[_0xfe06('0x29')]);delete _0x278c4a[_0xfe06('0x2a')];if(_0x167c83===0x191){_0x167c83=0x190;}_0x4929c0[_0xfe06('0x1c')](_0x167c83)[_0xfe06('0x2b')](_0x566f92[_0xfe06('0x32')][_0xfe06('0xc0')]?{'message':_0xfe06('0xc2'),'statusCode':_0x278c4a[_0xfe06('0xc1')]}:_0x278c4a);});};function getSelectList(_0x5f0ea5,_0x435906,_0x496def,_0x183fc7,_0x4f67ec,_0x4b094b){var _0x59f855={'method':_0xfe06('0xa6'),'uri':_0x5f0ea5+'EntityDefinitions('+_0x183fc7+_0xfe06('0xc3')+_0x4f67ec+_0xfe06('0xc4')+_0xfe06('0xc5'),'headers':{'Authorization':_0xfe06('0xa8')+_0x4b094b,'If-None-Match':null,'OData-Version':_0xfe06('0xa9')},'json':!![]};return rp(_0x59f855)[_0xfe06('0x27')](function(_0x47c07f){var _0x2ac2c8=[];var _0x476fa3=_0x47c07f['OptionSet'][_0xfe06('0xc6')];_0x476fa3[_0xfe06('0xb2')](function(_0x4f85fa){_0x2ac2c8[_0xfe06('0xb6')]({'name':_0x4f85fa[_0xfe06('0xc7')]['UserLocalizedLabel']['Label'],'value':String(_0x4f85fa[_0xfe06('0xc8')])});});var _0x147a64={'id':_0x435906+'_'+_0x47c07f[_0xfe06('0xb1')],'name':_0x47c07f[_0xfe06('0xc9')][_0xfe06('0xca')][_0xfe06('0xc7')],'custom':![],'options':_0x2ac2c8};_0x496def[_0xfe06('0xb6')](_0x147a64);return _0x496def;});}function getBooleanList(_0x58d078,_0x14a07f,_0x40f009,_0x226a23,_0x7e6267,_0xfaf1ce){var _0x55e9b0={'method':_0xfe06('0xa6'),'uri':_0x58d078+_0xfe06('0xac')+_0x226a23+_0xfe06('0xc3')+_0x7e6267+_0xfe06('0xcb'),'headers':{'Authorization':'Bearer\x20'+_0xfaf1ce,'If-None-Match':null,'OData-Version':_0xfe06('0xa9')},'json':!![]};return rp(_0x55e9b0)[_0xfe06('0x27')](function(_0x47fb4c){var _0x525f82=[];_0x525f82[_0xfe06('0xb6')]({'name':_0x47fb4c[_0xfe06('0xcc')][_0xfe06('0xcd')][_0xfe06('0xc7')][_0xfe06('0xca')][_0xfe06('0xc7')],'value':_0xfe06('0xce')},{'name':_0x47fb4c['OptionSet'][_0xfe06('0xcf')][_0xfe06('0xc7')][_0xfe06('0xca')][_0xfe06('0xc7')],'value':'false'});var _0x763374={'id':_0x14a07f+'_'+_0x47fb4c[_0xfe06('0xb1')],'name':_0x47fb4c['DisplayName'][_0xfe06('0xca')][_0xfe06('0xc7')],'custom':![],'options':_0x525f82};_0x40f009[_0xfe06('0xb6')](_0x763374);return _0x40f009;});}function getInputList(_0x6817e0,_0x331acb,_0x2aa478,_0x2451fd,_0x44dff5,_0x3b04a8,_0x56eec3){var _0x21f4dd={'method':_0xfe06('0xa6'),'uri':_0x6817e0+_0xfe06('0xac')+_0x44dff5+_0xfe06('0xc3')+_0x3b04a8+_0xfe06('0xd0')+_0x2aa478+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0xfe06('0xa8')+_0x56eec3,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x21f4dd)['then'](function(_0x10b3b8){var _0x17acb2={'id':_0x331acb+'_'+_0x10b3b8[_0xfe06('0xb1')],'name':_0x10b3b8[_0xfe06('0xc9')][_0xfe06('0xca')]?_0x10b3b8['DisplayName'][_0xfe06('0xca')][_0xfe06('0xc7')]:_0x10b3b8['LogicalName'],'custom':![],'options':[]};_0x2451fd[_0xfe06('0xb6')](_0x17acb2);return _0x2451fd;});}
\ No newline at end of file
+var _0xf675=['4.0','MetadataId','GET','EntityDefinitions(','remove','includes','LogicalName','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','all','isNil','StringAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','DateTimeAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','statusCode','Wrong\x20credentials',')/Attributes(','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','end','error','stack','send','index','Dynamics365Account','fieldName','type','name','keys','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','filter','includeAll','include','findAll','catch','show','rawAttributes','options','create','body','find','params','destroy','findOne','nolimit','getConfigurations','AccountId','Subjects','getSubjects','Descriptions','channel','Dynamics365Configuration','getFields','ticketType','incident','PhoneCall','customerid','ownerid','caseorigincode','phonenumber','regardingobjectid','phonecall_activity_parties','accountidname','actualserviceunits','billedserviceunits','contactidname','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','exchangerate','importsequencenumber','influencescore','kbarticleidname','masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','owneridname','primarycontactidyominame','resolvebykpiidname','responseby','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','subjectidname','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','remoteUri','clientId','slice','substring','%s/api/data/v9.0/','POST','https://login.microsoftonline.com/','tenantId','/oauth2/token','username','password','access_token','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20'];(function(_0x45ec12,_0x33fd9d){var _0x2b522b=function(_0x503b50){while(--_0x503b50){_0x45ec12['push'](_0x45ec12['shift']());}};_0x2b522b(++_0x33fd9d);}(_0xf675,0x199));var _0x5f67=function(_0x126fb9,_0x122c59){_0x126fb9=_0x126fb9-0x0;var _0xc8a3b1=_0xf675[_0x126fb9];return _0xc8a3b1;};'use strict';var emlformat=require(_0x5f67('0x0'));var rimraf=require(_0x5f67('0x1'));var zipdir=require(_0x5f67('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5f67('0x3'));var moment=require('moment');var BPromise=require(_0x5f67('0x4'));var Mustache=require(_0x5f67('0x5'));var util=require(_0x5f67('0x6'));var path=require('path');var sox=require(_0x5f67('0x7'));var csv=require(_0x5f67('0x8'));var ejs=require(_0x5f67('0x9'));var fs=require('fs');var fs_extra=require(_0x5f67('0xa'));var _=require('lodash');var squel=require(_0x5f67('0xb'));var crypto=require(_0x5f67('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5f67('0x8'));var querystring=require(_0x5f67('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5f67('0xe'));var qs=require(_0x5f67('0xf'));var as=require(_0x5f67('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x5f67('0x11'));var config=require(_0x5f67('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x5f67('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4653c7,_0x49e27f){_0x49e27f=_0x49e27f||0xcc;return function(_0x34ad41){if(_0x34ad41){return _0x4653c7[_0x5f67('0x14')](_0x49e27f);}return _0x4653c7[_0x5f67('0x15')](_0x49e27f)['end']();};}function respondWithResult(_0x121c72,_0x59b8c6){_0x59b8c6=_0x59b8c6||0xc8;return function(_0x2d9c4e){if(_0x2d9c4e){return _0x121c72['status'](_0x59b8c6)[_0x5f67('0x16')](_0x2d9c4e);}};}function respondWithFilteredResult(_0x50a146,_0x1d1b15){return function(_0x2ea6ad){if(_0x2ea6ad){var _0x3a4cc3=typeof _0x1d1b15[_0x5f67('0x17')]===_0x5f67('0x18')&&typeof _0x1d1b15[_0x5f67('0x19')]===_0x5f67('0x18');var _0x223295=_0x2ea6ad[_0x5f67('0x1a')];var _0x8f3bd6=_0x3a4cc3?0x0:_0x1d1b15['offset'];var _0x5bc956=_0x3a4cc3?_0x2ea6ad[_0x5f67('0x1a')]:_0x1d1b15[_0x5f67('0x17')]+_0x1d1b15['limit'];var _0x3a867b;if(_0x5bc956>=_0x223295){_0x5bc956=_0x223295;_0x3a867b=0xc8;}else{_0x3a867b=0xce;}_0x50a146[_0x5f67('0x15')](_0x3a867b);return _0x50a146[_0x5f67('0x1b')](_0x5f67('0x1c'),_0x8f3bd6+'-'+_0x5bc956+'/'+_0x223295)[_0x5f67('0x16')](_0x2ea6ad);}return null;};}function patchUpdates(_0x3d487b){return function(_0x145218){try{jsonpatch[_0x5f67('0x1d')](_0x145218,_0x3d487b,!![]);}catch(_0xf3f894){return BPromise[_0x5f67('0x1e')](_0xf3f894);}return _0x145218[_0x5f67('0x1f')]();};}function saveUpdates(_0x8d876e,_0x531f2e){return function(_0x31980e){if(_0x31980e){return _0x31980e[_0x5f67('0x20')](_0x8d876e)[_0x5f67('0x21')](function(_0x5bb1de){return _0x5bb1de;});}return null;};}function removeEntity(_0x537b39,_0x217cf9){return function(_0x40b138){if(_0x40b138){return _0x40b138['destroy']()[_0x5f67('0x21')](function(){_0x537b39[_0x5f67('0x15')](0xcc)[_0x5f67('0x22')]();});}};}function handleEntityNotFound(_0x2dc788,_0x4b24de){return function(_0x41cfc3){if(!_0x41cfc3){_0x2dc788['sendStatus'](0x194);}return _0x41cfc3;};}function handleError(_0x31b02e,_0x167601){_0x167601=_0x167601||0x1f4;return function(_0x5af40c){logger[_0x5f67('0x23')](_0x5af40c[_0x5f67('0x24')]);if(_0x5af40c['name']){delete _0x5af40c['name'];}_0x31b02e[_0x5f67('0x15')](_0x167601)[_0x5f67('0x25')](_0x5af40c);};}exports[_0x5f67('0x26')]=function(_0x5dd8d7,_0x3491b0){var _0xd36b79={},_0x4a10b5={},_0x172b47={'count':0x0,'rows':[]};var _0x11da91=_['map'](db[_0x5f67('0x27')]['rawAttributes'],function(_0x30d3fd){return{'name':_0x30d3fd[_0x5f67('0x28')],'type':_0x30d3fd[_0x5f67('0x29')]['key']};});_0x4a10b5['model']=_['map'](_0x11da91,_0x5f67('0x2a'));_0x4a10b5['query']=_[_0x5f67('0x2b')](_0x5dd8d7[_0x5f67('0x2c')]);_0x4a10b5[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4a10b5['model'],_0x4a10b5['query']);_0xd36b79[_0x5f67('0x2f')]=_[_0x5f67('0x2e')](_0x4a10b5[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x31')]));_0xd36b79['attributes']=_0xd36b79[_0x5f67('0x2f')][_0x5f67('0x32')]?_0xd36b79[_0x5f67('0x2f')]:_0x4a10b5[_0x5f67('0x30')];if(!_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x33')]('nolimit')){_0xd36b79[_0x5f67('0x19')]=qs[_0x5f67('0x19')](_0x5dd8d7['query'][_0x5f67('0x19')]);_0xd36b79[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x17')]);}_0xd36b79[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x35')]);_0xd36b79[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x5dd8d7[_0x5f67('0x2c')],_0x4a10b5[_0x5f67('0x2d')]),_0x11da91);if(_0x5dd8d7[_0x5f67('0x2c')]['filter']){_0xd36b79[_0x5f67('0x36')]=_[_0x5f67('0x37')](_0xd36b79[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x11da91,function(_0x3fed78){if(_0x3fed78[_0x5f67('0x29')]!==_0x5f67('0x39')){var _0x44a43b={};_0x44a43b[_0x3fed78[_0x5f67('0x2a')]]={'$like':'%'+_0x5dd8d7['query'][_0x5f67('0x3a')]+'%'};return _0x44a43b;}})});}_0xd36b79=_['merge']({},_0xd36b79,_0x5dd8d7['options']);var _0x794915={'where':_0xd36b79[_0x5f67('0x36')]};return db[_0x5f67('0x27')][_0x5f67('0x1a')](_0x794915)[_0x5f67('0x21')](function(_0x47a84b){_0x172b47['count']=_0x47a84b;if(_0x5dd8d7[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0xd36b79[_0x5f67('0x3c')]=[{'all':!![]}];}return db[_0x5f67('0x27')][_0x5f67('0x3d')](_0xd36b79);})['then'](function(_0x3da68d){_0x172b47['rows']=_0x3da68d;return _0x172b47;})[_0x5f67('0x21')](respondWithFilteredResult(_0x3491b0,_0xd36b79))[_0x5f67('0x3e')](handleError(_0x3491b0,null));};exports[_0x5f67('0x3f')]=function(_0x3a6405,_0x212cc1){var _0x4d8f32={'raw':![],'where':{'id':_0x3a6405['params']['id']}},_0x4baf80={};_0x4baf80[_0x5f67('0x30')]=_['keys'](db['Dynamics365Account'][_0x5f67('0x40')]);_0x4baf80[_0x5f67('0x2c')]=_[_0x5f67('0x2b')](_0x3a6405[_0x5f67('0x2c')]);_0x4baf80[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],_0x4baf80[_0x5f67('0x2c')]);_0x4d8f32['attributes']=_[_0x5f67('0x2e')](_0x4baf80[_0x5f67('0x30')],qs['fields'](_0x3a6405[_0x5f67('0x2c')]['fields']));_0x4d8f32[_0x5f67('0x2f')]=_0x4d8f32['attributes'][_0x5f67('0x32')]?_0x4d8f32['attributes']:_0x4baf80[_0x5f67('0x30')];if(_0x3a6405[_0x5f67('0x2c')][_0x5f67('0x3b')]){_0x4d8f32['include']=[{'all':!![]}];}_0x4d8f32=_[_0x5f67('0x37')]({},_0x4d8f32,_0x3a6405[_0x5f67('0x41')]);return db['Dynamics365Account']['find'](_0x4d8f32)[_0x5f67('0x21')](handleEntityNotFound(_0x212cc1,null))[_0x5f67('0x21')](respondWithResult(_0x212cc1,null))[_0x5f67('0x3e')](handleError(_0x212cc1,null));};exports[_0x5f67('0x42')]=function(_0xb58550,_0x3f361b){return db[_0x5f67('0x27')][_0x5f67('0x42')](_0xb58550['body'],{})['then'](respondWithResult(_0x3f361b,0xc9))[_0x5f67('0x3e')](handleError(_0x3f361b,null));};exports[_0x5f67('0x20')]=function(_0x3f3bf9,_0x11d2db){if(_0x3f3bf9[_0x5f67('0x43')]['id']){delete _0x3f3bf9[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x3f3bf9[_0x5f67('0x45')]['id']}})['then'](handleEntityNotFound(_0x11d2db,null))[_0x5f67('0x21')](saveUpdates(_0x3f3bf9[_0x5f67('0x43')],null))[_0x5f67('0x21')](respondWithResult(_0x11d2db,null))['catch'](handleError(_0x11d2db,null));};exports[_0x5f67('0x46')]=function(_0x29832a,_0x371bb8){return db[_0x5f67('0x27')][_0x5f67('0x44')]({'where':{'id':_0x29832a[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x371bb8,null))['then'](removeEntity(_0x371bb8,null))[_0x5f67('0x3e')](handleError(_0x371bb8,null));};exports['getConfigurations']=function(_0x38d730,_0x43e6b0,_0x3d5cbe){var _0x4a9784={};var _0x1d6f6b={};var _0xaa01c1;var _0x3547be;return db[_0x5f67('0x27')][_0x5f67('0x47')]({'where':{'id':_0x38d730['params']['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x43e6b0,null))['then'](function(_0x344dc2){if(_0x344dc2){_0xaa01c1=_0x344dc2;_0x1d6f6b[_0x5f67('0x30')]=_[_0x5f67('0x2b')](db['Dynamics365Configuration'][_0x5f67('0x40')]);_0x1d6f6b[_0x5f67('0x2c')]=_['keys'](_0x38d730[_0x5f67('0x2c')]);_0x1d6f6b[_0x5f67('0x2d')]=_[_0x5f67('0x2e')](_0x1d6f6b['model'],_0x1d6f6b['query']);_0x4a9784['attributes']=_[_0x5f67('0x2e')](_0x1d6f6b[_0x5f67('0x30')],qs[_0x5f67('0x31')](_0x38d730['query'][_0x5f67('0x31')]));_0x4a9784[_0x5f67('0x2f')]=_0x4a9784[_0x5f67('0x2f')][_0x5f67('0x32')]?_0x4a9784[_0x5f67('0x2f')]:_0x1d6f6b[_0x5f67('0x30')];_0x4a9784[_0x5f67('0x34')]=qs[_0x5f67('0x35')](_0x38d730[_0x5f67('0x2c')]['sort']);_0x4a9784[_0x5f67('0x36')]=qs[_0x5f67('0x2d')](_['pick'](_0x38d730[_0x5f67('0x2c')],_0x1d6f6b[_0x5f67('0x2d')]));if(_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]){_0x4a9784['where']=_[_0x5f67('0x37')](_0x4a9784[_0x5f67('0x36')],{'$or':_[_0x5f67('0x38')](_0x4a9784[_0x5f67('0x2f')],function(_0x545ef5){var _0x3fa9c0={};_0x3fa9c0[_0x545ef5]={'$like':'%'+_0x38d730[_0x5f67('0x2c')][_0x5f67('0x3a')]+'%'};return _0x3fa9c0;})});}_0x4a9784=_[_0x5f67('0x37')]({},_0x4a9784,_0x38d730['options']);return _0xaa01c1['getConfigurations'](_0x4a9784);}})[_0x5f67('0x21')](function(_0xb1e12c){if(_0xb1e12c){_0x3547be=_0xb1e12c[_0x5f67('0x32')];if(!_0x38d730['query'][_0x5f67('0x33')](_0x5f67('0x48'))){_0x4a9784[_0x5f67('0x19')]=qs['limit'](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x19')]);_0x4a9784[_0x5f67('0x17')]=qs[_0x5f67('0x17')](_0x38d730[_0x5f67('0x2c')][_0x5f67('0x17')]);}return _0xaa01c1[_0x5f67('0x49')](_0x4a9784);}})[_0x5f67('0x21')](function(_0x43de23){if(_0x43de23){return _0x43de23?{'count':_0x3547be,'rows':_0x43de23}:null;}})[_0x5f67('0x21')](respondWithResult(_0x43e6b0,null))['catch'](handleError(_0x43e6b0,null));};exports['addConfiguration']=function(_0x2e0e52,_0x39b262,_0x58ee8c){if(_0x2e0e52['body']['id']){delete _0x2e0e52[_0x5f67('0x43')]['id'];}return db[_0x5f67('0x27')]['findOne']({'where':{'id':_0x2e0e52[_0x5f67('0x45')]['id']}})[_0x5f67('0x21')](handleEntityNotFound(_0x39b262,null))[_0x5f67('0x21')](function(_0x5ed197){if(_0x5ed197){_0x2e0e52['body'][_0x5f67('0x4a')]=_0x5ed197['id'];_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4b')]=integrations[_0x5f67('0x4c')](_0x2e0e52['body']['channel'],_0x2e0e52['body'][_0x5f67('0x29')]);_0x2e0e52['body'][_0x5f67('0x4d')]=integrations['getDescriptions'](_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x4e')],_0x2e0e52[_0x5f67('0x43')][_0x5f67('0x29')]);return db[_0x5f67('0x4f')][_0x5f67('0x42')](_0x2e0e52[_0x5f67('0x43')],{'include':[{'model':db['Dynamics365Field'],'as':_0x5f67('0x4b')},{'model':db['Dynamics365Field'],'as':_0x5f67('0x4d')}]});}return null;})[_0x5f67('0x21')](respondWithResult(_0x39b262,null))[_0x5f67('0x3e')](handleError(_0x39b262,null));};exports[_0x5f67('0x50')]=function(_0x2baff6,_0x21e3be,_0xf20c36){var _0x10277c=_0x2baff6['query'][_0x5f67('0x51')];var _0x520762=_0x10277c===_0x5f67('0x52')?'Incident':_0x5f67('0x53');var _0xc8010e='';var _0x41293b='';var _0x588dc5='';var _0x520fb1='';var _0x1dbba7='';var _0x20fce1='';var _0x5a4f9b='';var _0x244fb9='';var _0x136a18=['title','description',_0x5f67('0x54'),_0x5f67('0x55'),_0x5f67('0x56'),'subject',_0x5f67('0x57'),_0x5f67('0x58'),'directioncode',_0x5f67('0x59')];var _0x393558=[_0x5f67('0x5a'),'accountidyominame',_0x5f67('0x5b'),_0x5f67('0x5c'),_0x5f67('0x5d'),_0x5f67('0x5e'),_0x5f67('0x5f'),'contractidname',_0x5f67('0x60'),_0x5f67('0x61'),_0x5f67('0x62'),_0x5f67('0x63'),_0x5f67('0x64'),'createdonbehalfbyname',_0x5f67('0x65'),_0x5f67('0x66'),'customeridtype','customeridyominame','emailaddress',_0x5f67('0x67'),_0x5f67('0x68'),_0x5f67('0x69'),_0x5f67('0x6a'),_0x5f67('0x6b'),'firstresponsebykpiidname','followupby',_0x5f67('0x6c'),_0x5f67('0x6d'),_0x5f67('0x6e'),'lastonholdtime',_0x5f67('0x6f'),_0x5f67('0x70'),_0x5f67('0x71'),_0x5f67('0x72'),_0x5f67('0x73'),_0x5f67('0x74'),'modifiedonbehalfbyname',_0x5f67('0x75'),'msdyn_incidenttypename',_0x5f67('0x76'),_0x5f67('0x77'),'onholdtime','overriddencreatedon',_0x5f67('0x78'),'owneridtype','owneridyominame','parentcaseidname','primarycontactidname',_0x5f67('0x79'),'prioritycodename','productidname','productserialnumber','resolveby',_0x5f67('0x7a'),_0x5f67('0x7b'),'responsiblecontactidname',_0x5f67('0x7c'),'sentimentvalue',_0x5f67('0x7d'),_0x5f67('0x7e'),_0x5f67('0x7f'),_0x5f67('0x80'),_0x5f67('0x81'),_0x5f67('0x82'),'ticketnumber','timezoneruleversionnumber',_0x5f67('0x83'),_0x5f67('0x84'),_0x5f67('0x85'),_0x5f67('0x86')];var _0x5a6a5b=_0x136a18['concat'](_0x393558);return db['Dynamics365Account']['findOne']({'where':{'id':_0x2baff6[_0x5f67('0x45')]['id']},'attributes':['id','username','password',_0x5f67('0x87'),'tenantId',_0x5f67('0x88'),'clientSecret']})[_0x5f67('0x21')](handleEntityNotFound(_0x21e3be,null))['then'](function(_0x1005fa){if(_0x1005fa){_0x244fb9=_0x1005fa['remoteUri'];var _0x5202cb=_0x244fb9[_0x5f67('0x89')](-0x1);if(_0x5202cb==='/'){_0x244fb9=_0x244fb9[_0x5f67('0x8a')](0x0,_0x244fb9['lastIndexOf'](_0x5202cb));}_0x5a4f9b=util['format'](_0x5f67('0x8b'),_0x244fb9);var _0x40c39e={'method':_0x5f67('0x8c'),'uri':_0x5f67('0x8d')+_0x1005fa[_0x5f67('0x8e')]+_0x5f67('0x8f'),'form':{'client_id':_0x1005fa[_0x5f67('0x88')],'resource':_0x244fb9,'username':_0x1005fa[_0x5f67('0x90')],'password':_0x1005fa[_0x5f67('0x91')],'grant_type':_0x5f67('0x91'),'client_secret':_0x1005fa['clientSecret']},'json':!![]};return rp(_0x40c39e);}})[_0x5f67('0x21')](function(_0x5f67f3){_0x20fce1=_0x5f67f3[_0x5f67('0x92')];var _0x3c843e={'method':'GET','uri':encodeURI(_0x5a4f9b+_0x5f67('0x93')+_0x520762+'\x27'),'headers':{'Authorization':_0x5f67('0x94')+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3c843e);})[_0x5f67('0x21')](function(_0x395c97){var _0x1e0df7=_0x395c97['value'][0x0];var _0x30d4c7=_0x1e0df7[_0x5f67('0x96')];var _0x3fd1f4={'method':_0x5f67('0x97'),'uri':_0x5a4f9b+_0x5f67('0x98')+_0x30d4c7+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':'Bearer\x20'+_0x20fce1,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x3fd1f4);})[_0x5f67('0x21')](function(_0x1730a7){_0xc8010e=_0x1730a7;_0x41293b=_0xc8010e['Attributes'];_0x41293b=_[_0x5f67('0x99')](_0x41293b,function(_0x77c146){return!_0x5a6a5b[_0x5f67('0x9a')](_0x77c146[_0x5f67('0x9b')]);});var _0x22cf65=[];var _0x24df53=[];_0x41293b[_0x5f67('0x9c')](function(_0x2e3d41){if(_0x2e3d41['@odata.type']){var _0x565e75=_0x2e3d41[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x2e3d41['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0x565e75===_0x5f67('0x9f')){_0x22cf65[_0x5f67('0xa0')](getSelectList(_0x5a4f9b,_0x10277c,_0x24df53,_0xc8010e['MetadataId'],_0x2e3d41[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x22cf65);})[_0x5f67('0x21')](function(_0x549bb8){_0x588dc5=_0x549bb8[0x0];var _0x4471df=[];var _0x5ab2e1=[];_0x41293b[_0x5f67('0x9c')](function(_0x25ad1f){if(!_[_0x5f67('0xa2')](_0x25ad1f[_0x5f67('0x9d')])){var _0xff33a5=_0x25ad1f[_0x5f67('0x9d')][_0x5f67('0x8a')](_0x25ad1f['@odata.type'][_0x5f67('0x9e')]('.')+0x1);if(_0xff33a5==='BooleanAttributeMetadata'){_0x4471df['push'](getBooleanList(_0x5a4f9b,_0x10277c,_0x5ab2e1,_0xc8010e[_0x5f67('0x96')],_0x25ad1f[_0x5f67('0x96')],_0x20fce1));}}});return Promise[_0x5f67('0xa1')](_0x4471df);})[_0x5f67('0x21')](function(_0x55df2a){_0x520fb1=_0x55df2a[0x0];var _0x112186=[];var _0x32272c=[];_0x41293b[_0x5f67('0x9c')](function(_0x259090){if(_0x259090[_0x5f67('0x9d')]){var _0x5cdc1d=_0x259090[_0x5f67('0x9d')]['substring'](_0x259090[_0x5f67('0x9d')][_0x5f67('0x9e')]('.')+0x1);if(_0x5cdc1d===_0x5f67('0xa3')||_0x5cdc1d==='DoubleAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa4')||_0x5cdc1d===_0x5f67('0xa5')||_0x5cdc1d==='MemoAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa6')||_0x5cdc1d==='StatusAttributeMetadata'||_0x5cdc1d===_0x5f67('0xa7')||_0x5cdc1d===_0x5f67('0xa8')||_0x5cdc1d===_0x5f67('0xa9')){_0x112186[_0x5f67('0xa0')](getInputList(_0x5a4f9b,_0x10277c,_0x5cdc1d,_0x32272c,_0xc8010e[_0x5f67('0x96')],_0x259090[_0x5f67('0x96')],_0x20fce1));}}});return Promise['all'](_0x112186);})['then'](function(_0x3f377e){_0x1dbba7=_0x3f377e[0x0];var _0x3b74b0=_0x588dc5[_0x5f67('0xaa')](_0x520fb1)[_0x5f67('0xaa')](_0x1dbba7);var _0x588f57={'count':_0x3b74b0[_0x5f67('0x32')],'rows':_0x3b74b0};return _0x588f57;})[_0x5f67('0x21')](respondWithResult(_0x21e3be,null))['catch'](function(_0x213587){var _0x3362ba=_0x2baff6[_0x5f67('0x2c')][_0x5f67('0xab')]?0x1f4:_0x213587[_0x5f67('0xac')]||0x1f4;logger[_0x5f67('0x23')](_0x213587[_0x5f67('0x24')]);delete _0x213587[_0x5f67('0x2a')];if(_0x3362ba===0x191){_0x3362ba=0x190;}_0x21e3be[_0x5f67('0x15')](_0x3362ba)[_0x5f67('0x25')](_0x2baff6['query'][_0x5f67('0xab')]?{'message':_0x5f67('0xad'),'statusCode':_0x213587[_0x5f67('0xac')]}:_0x213587);});};function getSelectList(_0x468238,_0x2638c9,_0x2c0a9e,_0x14981d,_0x2f80e0,_0x4bf10c){var _0x18f4fb={'method':'GET','uri':_0x468238+_0x5f67('0x98')+_0x14981d+_0x5f67('0xae')+_0x2f80e0+')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?'+_0x5f67('0xaf'),'headers':{'Authorization':_0x5f67('0x94')+_0x4bf10c,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x18f4fb)['then'](function(_0x8839eb){var _0x20976b=[];var _0x17e554=_0x8839eb[_0x5f67('0xb0')][_0x5f67('0xb1')];_0x17e554[_0x5f67('0x9c')](function(_0x4dab12){_0x20976b[_0x5f67('0xa0')]({'name':_0x4dab12[_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':String(_0x4dab12['Value'])});});var _0x44a972={'id':_0x2638c9+'_'+_0x8839eb['LogicalName'],'name':_0x8839eb[_0x5f67('0xb4')][_0x5f67('0xb3')]['Label'],'custom':![],'options':_0x20976b};_0x2c0a9e[_0x5f67('0xa0')](_0x44a972);return _0x2c0a9e;});}function getBooleanList(_0x112129,_0x33c0bd,_0xf1f5b4,_0x580a30,_0x1e2165,_0x4df798){var _0x1e1b14={'method':_0x5f67('0x97'),'uri':_0x112129+_0x5f67('0x98')+_0x580a30+_0x5f67('0xae')+_0x1e2165+_0x5f67('0xb5'),'headers':{'Authorization':'Bearer\x20'+_0x4df798,'If-None-Match':null,'OData-Version':_0x5f67('0x95')},'json':!![]};return rp(_0x1e1b14)[_0x5f67('0x21')](function(_0x2e09a9){var _0x272d12=[];_0x272d12[_0x5f67('0xa0')]({'name':_0x2e09a9[_0x5f67('0xb0')]['TrueOption'][_0x5f67('0xb2')][_0x5f67('0xb3')][_0x5f67('0xb2')],'value':_0x5f67('0xb6')},{'name':_0x2e09a9[_0x5f67('0xb0')][_0x5f67('0xb7')][_0x5f67('0xb2')]['UserLocalizedLabel'][_0x5f67('0xb2')],'value':'false'});var _0x532202={'id':_0x33c0bd+'_'+_0x2e09a9[_0x5f67('0x9b')],'name':_0x2e09a9[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')],'custom':![],'options':_0x272d12};_0xf1f5b4[_0x5f67('0xa0')](_0x532202);return _0xf1f5b4;});}function getInputList(_0x556718,_0x3dcb35,_0xeb1ec1,_0x5d3054,_0x517f93,_0x1e7ffe,_0xd59c96){var _0x32294c={'method':'GET','uri':_0x556718+_0x5f67('0x98')+_0x517f93+_0x5f67('0xae')+_0x1e7ffe+_0x5f67('0xb8')+_0xeb1ec1+_0x5f67('0xb9'),'headers':{'Authorization':'Bearer\x20'+_0xd59c96,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x32294c)[_0x5f67('0x21')](function(_0x5515be){var _0x1e749e={'id':_0x3dcb35+'_'+_0x5515be[_0x5f67('0x9b')],'name':_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')]?_0x5515be[_0x5f67('0xb4')][_0x5f67('0xb3')][_0x5f67('0xb2')]:_0x5515be[_0x5f67('0x9b')],'custom':![],'options':[]};_0x5d3054[_0x5f67('0xa0')](_0x1e749e);return _0x5d3054;});}
\ No newline at end of file
index 7efc972..059bf7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','util'];(function(_0x45e2ff,_0x3bbae1){var _0x531370=function(_0x2a2afe){while(--_0x2a2afe){_0x45e2ff['push'](_0x45e2ff['shift']());}};_0x531370(++_0x3bbae1);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var util=require(_0x0baf('0x0'));var logger=require(_0x0baf('0x1'))(_0x0baf('0x2'));var moment=require(_0x0baf('0x3'));var BPromise=require(_0x0baf('0x4'));var rp=require(_0x0baf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var attributes=require(_0x0baf('0x8'));var integrations=require(_0x0baf('0x9'));module[_0x0baf('0xa')]=function(_0x335e24,_0x1a10b1){return _0x335e24[_0x0baf('0xb')](_0x0baf('0xc'),attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb91=['rimraf','./intDynamics365Account.attributes','../../components/integrations/configuration','Dynamics365Account','int_dynamics365_accounts','../../config/logger','api','moment','bluebird','path'];(function(_0x4f0521,_0x315798){var _0x3cf2d0=function(_0x3d106e){while(--_0x3d106e){_0x4f0521['push'](_0x4f0521['shift']());}};_0x3cf2d0(++_0x315798);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x685346,_0x3ef2e5){_0x685346=_0x685346-0x0;var _0x52e15b=_0xcb91[_0x685346];return _0x52e15b;};'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'));var integrations=require(_0x1cb9('0x7'));module['exports']=function(_0x226b69,_0x3f7deb){return _0x226b69['define'](_0x1cb9('0x8'),attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bedffed..f31bac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1363=['error','message','result','GetDynamics365Account','options','where','attributes','limit','include','map','model','ShowDynamics365Account','Dynamics365Account','find','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x715c4d,_0x5dd5df){var _0x4cc30b=function(_0x14403f){while(--_0x14403f){_0x715c4d['push'](_0x715c4d['shift']());}};_0x4cc30b(++_0x5dd5df);}(_0x1363,0x16d));var _0x3136=function(_0x5c49b6,_0x45cc2a){_0x5c49b6=_0x5c49b6-0x0;var _0x1740ff=_0x1363[_0x5c49b6];return _0x1740ff;};'use strict';var _=require(_0x3136('0x0'));var util=require(_0x3136('0x1'));var moment=require(_0x3136('0x2'));var BPromise=require(_0x3136('0x3'));var rs=require(_0x3136('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3136('0x5'))['db'];var utils=require(_0x3136('0x6'));var logger=require('../../config/logger')(_0x3136('0x7'));var config=require(_0x3136('0x8'));var jayson=require(_0x3136('0x9'));var client=jayson[_0x3136('0xa')][_0x3136('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x434228,_0x22e58f,_0x55d453){return new BPromise(function(_0x34c3cc,_0x4fe719){return client[_0x3136('0xc')](_0x434228,_0x55d453)[_0x3136('0xd')](function(_0x294ecc){logger[_0x3136('0xe')](_0x3136('0xf'),_0x22e58f,'request\x20sent');logger[_0x3136('0x10')](_0x3136('0x11'),_0x22e58f,_0x3136('0x12'),JSON[_0x3136('0x13')](_0x294ecc));if(_0x294ecc[_0x3136('0x14')]){if(_0x294ecc[_0x3136('0x14')]['code']===0x1f4){logger[_0x3136('0x14')](_0x3136('0xf'),_0x22e58f,_0x294ecc[_0x3136('0x14')][_0x3136('0x15')]);return _0x4fe719(_0x294ecc[_0x3136('0x14')][_0x3136('0x15')]);}logger[_0x3136('0x14')]('Dynamics365Account,\x20%s,\x20%s',_0x22e58f,_0x294ecc[_0x3136('0x14')][_0x3136('0x15')]);return _0x34c3cc(_0x294ecc['error']['message']);}else{logger[_0x3136('0xe')](_0x3136('0xf'),_0x22e58f,_0x3136('0x12'));_0x34c3cc(_0x294ecc[_0x3136('0x16')][_0x3136('0x15')]);}})['catch'](function(_0x5e2f5e){logger[_0x3136('0x14')](_0x3136('0xf'),_0x22e58f,_0x5e2f5e);_0x4fe719(_0x5e2f5e);});});}exports[_0x3136('0x17')]=function(_0x2105d4){var _0x1da77b=this;return new Promise(function(_0x2f7ad3,_0x405005){return db['Dynamics365Account']['findAll']({'raw':_0x2105d4[_0x3136('0x18')]?_0x2105d4[_0x3136('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x2105d4[_0x3136('0x18')]?_0x2105d4['options'][_0x3136('0x19')]||null:null,'attributes':_0x2105d4[_0x3136('0x18')]?_0x2105d4[_0x3136('0x18')][_0x3136('0x1a')]||null:null,'limit':_0x2105d4[_0x3136('0x18')]?_0x2105d4['options'][_0x3136('0x1b')]||null:null,'include':_0x2105d4[_0x3136('0x18')]?_0x2105d4[_0x3136('0x18')][_0x3136('0x1c')]?_[_0x3136('0x1d')](_0x2105d4[_0x3136('0x18')][_0x3136('0x1c')],function(_0x4f73fc){return{'model':db[_0x4f73fc[_0x3136('0x1e')]],'as':_0x4f73fc['as'],'attributes':_0x4f73fc[_0x3136('0x1a')],'include':_0x4f73fc[_0x3136('0x1c')]?_['map'](_0x4f73fc[_0x3136('0x1c')],function(_0x57abd4){return{'model':db[_0x57abd4['model']],'as':_0x57abd4['as'],'attributes':_0x57abd4[_0x3136('0x1a')],'include':_0x57abd4[_0x3136('0x1c')]?_[_0x3136('0x1d')](_0x57abd4[_0x3136('0x1c')],function(_0x551f7b){return{'model':db[_0x551f7b[_0x3136('0x1e')]],'as':_0x551f7b['as'],'attributes':_0x551f7b[_0x3136('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3136('0xd')](function(_0x54e093){logger[_0x3136('0xe')](_0x3136('0x17'),_0x2105d4);logger[_0x3136('0x10')](_0x3136('0x17'),_0x2105d4,JSON[_0x3136('0x13')](_0x54e093));_0x2f7ad3(_0x54e093);})['catch'](function(_0x3f9a54){logger['error'](_0x3136('0x17'),_0x3f9a54[_0x3136('0x15')],_0x2105d4);_0x405005(_0x1da77b['error'](0x1f4,_0x3f9a54[_0x3136('0x15')]));});});};exports[_0x3136('0x1f')]=function(_0x1bd3f6){var _0x332b44=this;return new Promise(function(_0x28e061,_0x92bbc6){return db[_0x3136('0x20')][_0x3136('0x21')]({'raw':_0x1bd3f6[_0x3136('0x18')]?_0x1bd3f6[_0x3136('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1bd3f6[_0x3136('0x18')]?_0x1bd3f6[_0x3136('0x18')]['where']||null:null,'attributes':_0x1bd3f6[_0x3136('0x18')]?_0x1bd3f6['options'][_0x3136('0x1a')]||null:null,'include':_0x1bd3f6[_0x3136('0x18')]?_0x1bd3f6[_0x3136('0x18')]['include']?_[_0x3136('0x1d')](_0x1bd3f6[_0x3136('0x18')][_0x3136('0x1c')],function(_0xfd69bc){return{'model':db[_0xfd69bc[_0x3136('0x1e')]],'as':_0xfd69bc['as'],'attributes':_0xfd69bc[_0x3136('0x1a')],'include':_0xfd69bc['include']?_[_0x3136('0x1d')](_0xfd69bc[_0x3136('0x1c')],function(_0x2dab8c){return{'model':db[_0x2dab8c['model']],'as':_0x2dab8c['as'],'attributes':_0x2dab8c[_0x3136('0x1a')],'include':_0x2dab8c[_0x3136('0x1c')]?_['map'](_0x2dab8c[_0x3136('0x1c')],function(_0x2b2e0d){return{'model':db[_0x2b2e0d[_0x3136('0x1e')]],'as':_0x2b2e0d['as'],'attributes':_0x2b2e0d[_0x3136('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x3136('0xd')](function(_0x36befc){logger[_0x3136('0xe')](_0x3136('0x1f'),_0x1bd3f6);logger[_0x3136('0x10')]('ShowDynamics365Account',_0x1bd3f6,JSON['stringify'](_0x36befc));_0x28e061(_0x36befc);})[_0x3136('0x22')](function(_0x2cdb67){logger[_0x3136('0x14')](_0x3136('0x1f'),_0x2cdb67[_0x3136('0x15')],_0x1bd3f6);_0x92bbc6(_0x332b44['error'](0x1f4,_0x2cdb67[_0x3136('0x15')]));});});};
\ No newline at end of file
+var _0xbd1f=['ShowDynamics365Account','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','catch','GetDynamics365Account','Dynamics365Account','raw','options','attributes','limit','include','map','model','find','where'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xbd1f,0x1c1));var _0xfbd1=function(_0x36b9b6,_0x541c7e){_0x36b9b6=_0x36b9b6-0x0;var _0xa094a6=_0xbd1f[_0x36b9b6];return _0xa094a6;};'use strict';var _=require(_0xfbd1('0x0'));var util=require(_0xfbd1('0x1'));var moment=require('moment');var BPromise=require(_0xfbd1('0x2'));var rs=require(_0xfbd1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfbd1('0x4'))['db'];var utils=require(_0xfbd1('0x5'));var logger=require('../../config/logger')(_0xfbd1('0x6'));var config=require(_0xfbd1('0x7'));var jayson=require(_0xfbd1('0x8'));var client=jayson[_0xfbd1('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a8751,_0x447422,_0x1c3dac){return new BPromise(function(_0x500b96,_0x417210){return client['request'](_0x1a8751,_0x1c3dac)[_0xfbd1('0xa')](function(_0x2a67c9){logger[_0xfbd1('0xb')]('Dynamics365Account,\x20%s,\x20%s',_0x447422,_0xfbd1('0xc'));logger[_0xfbd1('0xd')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x447422,_0xfbd1('0xc'),JSON[_0xfbd1('0xe')](_0x2a67c9));if(_0x2a67c9[_0xfbd1('0xf')]){if(_0x2a67c9[_0xfbd1('0xf')][_0xfbd1('0x10')]===0x1f4){logger['error'](_0xfbd1('0x11'),_0x447422,_0x2a67c9['error']['message']);return _0x417210(_0x2a67c9[_0xfbd1('0xf')][_0xfbd1('0x12')]);}logger['error']('Dynamics365Account,\x20%s,\x20%s',_0x447422,_0x2a67c9[_0xfbd1('0xf')][_0xfbd1('0x12')]);return _0x500b96(_0x2a67c9['error'][_0xfbd1('0x12')]);}else{logger[_0xfbd1('0xb')](_0xfbd1('0x11'),_0x447422,'request\x20sent');_0x500b96(_0x2a67c9['result'][_0xfbd1('0x12')]);}})[_0xfbd1('0x13')](function(_0x5361f5){logger[_0xfbd1('0xf')]('Dynamics365Account,\x20%s,\x20%s',_0x447422,_0x5361f5);_0x417210(_0x5361f5);});});}exports[_0xfbd1('0x14')]=function(_0x13a91d){var _0x1d581c=this;return new Promise(function(_0x227717,_0x447d21){return db[_0xfbd1('0x15')]['findAll']({'raw':_0x13a91d['options']?_0x13a91d['options'][_0xfbd1('0x16')]===undefined?!![]:![]:!![],'where':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d['options']['where']||null:null,'attributes':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d['options'][_0xfbd1('0x18')]||null:null,'limit':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d[_0xfbd1('0x17')][_0xfbd1('0x19')]||null:null,'include':_0x13a91d[_0xfbd1('0x17')]?_0x13a91d['options'][_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x13a91d[_0xfbd1('0x17')]['include'],function(_0x21ced){return{'model':db[_0x21ced[_0xfbd1('0x1c')]],'as':_0x21ced['as'],'attributes':_0x21ced['attributes'],'include':_0x21ced[_0xfbd1('0x1a')]?_['map'](_0x21ced[_0xfbd1('0x1a')],function(_0x1804de){return{'model':db[_0x1804de[_0xfbd1('0x1c')]],'as':_0x1804de['as'],'attributes':_0x1804de['attributes'],'include':_0x1804de[_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x1804de[_0xfbd1('0x1a')],function(_0x1c87f9){return{'model':db[_0x1c87f9['model']],'as':_0x1c87f9['as'],'attributes':_0x1c87f9[_0xfbd1('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x302d9a){logger['info'](_0xfbd1('0x14'),_0x13a91d);logger[_0xfbd1('0xd')](_0xfbd1('0x14'),_0x13a91d,JSON[_0xfbd1('0xe')](_0x302d9a));_0x227717(_0x302d9a);})[_0xfbd1('0x13')](function(_0x6dd411){logger[_0xfbd1('0xf')](_0xfbd1('0x14'),_0x6dd411[_0xfbd1('0x12')],_0x13a91d);_0x447d21(_0x1d581c[_0xfbd1('0xf')](0x1f4,_0x6dd411[_0xfbd1('0x12')]));});});};exports['ShowDynamics365Account']=function(_0x1f1f96){var _0x464990=this;return new Promise(function(_0x39f872,_0x1dbf71){return db['Dynamics365Account'][_0xfbd1('0x1d')]({'raw':_0x1f1f96[_0xfbd1('0x17')]?_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x16')]===undefined?!![]:![]:!![],'where':_0x1f1f96[_0xfbd1('0x17')]?_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x1e')]||null:null,'attributes':_0x1f1f96['options']?_0x1f1f96[_0xfbd1('0x17')]['attributes']||null:null,'include':_0x1f1f96[_0xfbd1('0x17')]?_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x1f1f96[_0xfbd1('0x17')][_0xfbd1('0x1a')],function(_0x92de1d){return{'model':db[_0x92de1d[_0xfbd1('0x1c')]],'as':_0x92de1d['as'],'attributes':_0x92de1d[_0xfbd1('0x18')],'include':_0x92de1d['include']?_[_0xfbd1('0x1b')](_0x92de1d['include'],function(_0x4320b9){return{'model':db[_0x4320b9[_0xfbd1('0x1c')]],'as':_0x4320b9['as'],'attributes':_0x4320b9['attributes'],'include':_0x4320b9[_0xfbd1('0x1a')]?_[_0xfbd1('0x1b')](_0x4320b9[_0xfbd1('0x1a')],function(_0x5d63f4){return{'model':db[_0x5d63f4[_0xfbd1('0x1c')]],'as':_0x5d63f4['as'],'attributes':_0x5d63f4[_0xfbd1('0x18')]};}):[]};}):[]};}):[]:[]})[_0xfbd1('0xa')](function(_0x6779a6){logger[_0xfbd1('0xb')](_0xfbd1('0x1f'),_0x1f1f96);logger[_0xfbd1('0xd')](_0xfbd1('0x1f'),_0x1f1f96,JSON[_0xfbd1('0xe')](_0x6779a6));_0x39f872(_0x6779a6);})[_0xfbd1('0x13')](function(_0x1d4e52){logger['error'](_0xfbd1('0x1f'),_0x1d4e52['message'],_0x1f1f96);_0x1dbf71(_0x464990[_0xfbd1('0xf')](0x1f4,_0x1d4e52[_0xfbd1('0x12')]));});});};
\ No newline at end of file
index bfba506..ae081d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3222=['create','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','/:id/fields','getDescriptions','post'];(function(_0x51c745,_0x21ebf9){var _0x39a495=function(_0x39c530){while(--_0x39c530){_0x51c745['push'](_0x51c745['shift']());}};_0x39a495(++_0x21ebf9);}(_0x3222,0xe1));var _0x2322=function(_0x52e9f9,_0x176267){_0x52e9f9=_0x52e9f9-0x0;var _0x3ca0b1=_0x3222[_0x52e9f9];return _0x3ca0b1;};'use strict';var multer=require(_0x2322('0x0'));var util=require(_0x2322('0x1'));var path=require(_0x2322('0x2'));var timeout=require(_0x2322('0x3'));var express=require(_0x2322('0x4'));var router=express[_0x2322('0x5')]();var fs_extra=require(_0x2322('0x6'));var auth=require(_0x2322('0x7'));var interaction=require(_0x2322('0x8'));var config=require(_0x2322('0x9'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth[_0x2322('0xa')](),controller[_0x2322('0xb')]);router[_0x2322('0xc')]('/:id',auth[_0x2322('0xa')](),controller[_0x2322('0xd')]);router[_0x2322('0xc')](_0x2322('0xe'),auth['isAuthenticated'](),controller['getFields']);router[_0x2322('0xc')]('/:id/subjects',auth[_0x2322('0xa')](),controller['getSubjects']);router[_0x2322('0xc')]('/:id/descriptions',auth[_0x2322('0xa')](),controller[_0x2322('0xf')]);router[_0x2322('0x10')]('/',auth[_0x2322('0xa')](),controller[_0x2322('0x11')]);router[_0x2322('0x12')](_0x2322('0x13'),auth[_0x2322('0xa')](),controller['update']);router[_0x2322('0x14')](_0x2322('0x13'),auth[_0x2322('0xa')](),controller['destroy']);module[_0x2322('0x15')]=router;
\ No newline at end of file
+var _0xb749=['/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','/:id','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','show','/:id/fields'];(function(_0x54b396,_0x3612ee){var _0x532e6d=function(_0xc8286e){while(--_0xc8286e){_0x54b396['push'](_0x54b396['shift']());}};_0x532e6d(++_0x3612ee);}(_0xb749,0xac));var _0x9b74=function(_0x2332b0,_0x4fbb1b){_0x2332b0=_0x2332b0-0x0;var _0x5cd3de=_0xb749[_0x2332b0];return _0x5cd3de;};'use strict';var multer=require(_0x9b74('0x0'));var util=require('util');var path=require(_0x9b74('0x1'));var timeout=require(_0x9b74('0x2'));var express=require('express');var router=express[_0x9b74('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x9b74('0x4'));var interaction=require(_0x9b74('0x5'));var config=require(_0x9b74('0x6'));var controller=require(_0x9b74('0x7'));router[_0x9b74('0x8')]('/',auth[_0x9b74('0x9')](),controller['index']);router[_0x9b74('0x8')]('/:id',auth[_0x9b74('0x9')](),controller[_0x9b74('0xa')]);router[_0x9b74('0x8')](_0x9b74('0xb'),auth[_0x9b74('0x9')](),controller['getFields']);router[_0x9b74('0x8')](_0x9b74('0xc'),auth['isAuthenticated'](),controller[_0x9b74('0xd')]);router[_0x9b74('0x8')](_0x9b74('0xe'),auth['isAuthenticated'](),controller[_0x9b74('0xf')]);router[_0x9b74('0x10')]('/',auth[_0x9b74('0x9')](),controller[_0x9b74('0x11')]);router['put']('/:id',auth[_0x9b74('0x9')](),controller[_0x9b74('0x12')]);router[_0x9b74('0x13')](_0x9b74('0x14'),auth['isAuthenticated'](),controller[_0x9b74('0x15')]);module[_0x9b74('0x16')]=router;
\ No newline at end of file
index bb0315c..daf01ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca76=['STRING','incident','sequelize','exports'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0xca76,0xce));var _0x6ca7=function(_0x17aa5e,_0x274571){_0x17aa5e=_0x17aa5e-0x0;var _0x5e5429=_0xca76[_0x17aa5e];return _0x5e5429;};'use strict';var Sequelize=require(_0x6ca7('0x0'));module[_0x6ca7('0x1')]={'name':{'type':Sequelize[_0x6ca7('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0x6ca7('0x3'),'phonecall'),'defaultValue':_0x6ca7('0x3')}};
\ No newline at end of file
+var _0x8398=['ENUM','incident','sequelize','exports','STRING'];(function(_0x15e634,_0x28558e){var _0x4d5d95=function(_0x5c3a6f){while(--_0x5c3a6f){_0x15e634['push'](_0x15e634['shift']());}};_0x4d5d95(++_0x28558e);}(_0x8398,0xf7));var _0x8839=function(_0x263a74,_0xc31414){_0x263a74=_0x263a74-0x0;var _0x2aa86c=_0x8398[_0x263a74];return _0x2aa86c;};'use strict';var Sequelize=require(_0x8839('0x0'));module[_0x8839('0x1')]={'name':{'type':Sequelize[_0x8839('0x2')]},'description':{'type':Sequelize[_0x8839('0x2')]},'ticketType':{'type':Sequelize[_0x8839('0x3')](_0x8839('0x4'),'phonecall'),'defaultValue':'incident'}};
\ No newline at end of file
index 3b45877..d8787f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3e2=['name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','limit','order','where','filter','VIRTUAL','options','includeAll','findAll','rows','then','show','params','Dynamics365Configuration','include','merge','find','catch','create','body','findOne','Dynamics365Field','sort','pick','getFields','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','undefined','count','offset','Content-Range','json','apply','save','destroy','error','stack'];(function(_0x4e962a,_0x5a76bb){var _0x1b5e1c=function(_0x3a532a){while(--_0x3a532a){_0x4e962a['push'](_0x4e962a['shift']());}};_0x1b5e1c(++_0x5a76bb);}(_0xe3e2,0x11c));var _0x2e3e=function(_0x538c7e,_0x284174){_0x538c7e=_0x538c7e-0x0;var _0xbf4a37=_0xe3e2[_0x538c7e];return _0xbf4a37;};'use strict';var emlformat=require(_0x2e3e('0x0'));var rimraf=require(_0x2e3e('0x1'));var zipdir=require(_0x2e3e('0x2'));var jsonpatch=require(_0x2e3e('0x3'));var rp=require(_0x2e3e('0x4'));var moment=require(_0x2e3e('0x5'));var BPromise=require(_0x2e3e('0x6'));var Mustache=require('mustache');var util=require(_0x2e3e('0x7'));var path=require(_0x2e3e('0x8'));var sox=require('sox');var csv=require(_0x2e3e('0x9'));var ejs=require(_0x2e3e('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x2e3e('0xb'));var jsforce=require(_0x2e3e('0xc'));var deskjs=require(_0x2e3e('0xd'));var toCsv=require(_0x2e3e('0x9'));var querystring=require(_0x2e3e('0xe'));var Papa=require(_0x2e3e('0xf'));var Redis=require(_0x2e3e('0x10'));var authService=require(_0x2e3e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2e3e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2e3e('0x13'))(_0x2e3e('0x14'));var utils=require(_0x2e3e('0x15'));var config=require(_0x2e3e('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5904f9,_0x3f32c7){_0x3f32c7=_0x3f32c7||0xcc;return function(_0x5b39f5){if(_0x5b39f5){return _0x5904f9[_0x2e3e('0x17')](_0x3f32c7);}return _0x5904f9['status'](_0x3f32c7)[_0x2e3e('0x18')]();};}function respondWithResult(_0x53ae49,_0x43cc9e){_0x43cc9e=_0x43cc9e||0xc8;return function(_0xd6be3a){if(_0xd6be3a){return _0x53ae49[_0x2e3e('0x19')](_0x43cc9e)['json'](_0xd6be3a);}};}function respondWithFilteredResult(_0x17ec17,_0x4f7e6f){return function(_0x497f30){if(_0x497f30){var _0x3559ac=typeof _0x4f7e6f['offset']===_0x2e3e('0x1a')&&typeof _0x4f7e6f['limit']===_0x2e3e('0x1a');var _0x977d2b=_0x497f30[_0x2e3e('0x1b')];var _0x37881b=_0x3559ac?0x0:_0x4f7e6f[_0x2e3e('0x1c')];var _0x5c25a2=_0x3559ac?_0x497f30[_0x2e3e('0x1b')]:_0x4f7e6f['offset']+_0x4f7e6f['limit'];var _0xa52321;if(_0x5c25a2>=_0x977d2b){_0x5c25a2=_0x977d2b;_0xa52321=0xc8;}else{_0xa52321=0xce;}_0x17ec17[_0x2e3e('0x19')](_0xa52321);return _0x17ec17['set'](_0x2e3e('0x1d'),_0x37881b+'-'+_0x5c25a2+'/'+_0x977d2b)[_0x2e3e('0x1e')](_0x497f30);}return null;};}function patchUpdates(_0x3998e9){return function(_0x5b91bb){try{jsonpatch[_0x2e3e('0x1f')](_0x5b91bb,_0x3998e9,!![]);}catch(_0x8ec576){return BPromise['reject'](_0x8ec576);}return _0x5b91bb[_0x2e3e('0x20')]();};}function saveUpdates(_0x26a768,_0x1bcb0a){return function(_0x424d14){if(_0x424d14){return _0x424d14['update'](_0x26a768)['then'](function(_0x485755){return _0x485755;});}return null;};}function removeEntity(_0xc5813e,_0x3d8214){return function(_0x3f7e4a){if(_0x3f7e4a){return _0x3f7e4a[_0x2e3e('0x21')]()['then'](function(){_0xc5813e['status'](0xcc)[_0x2e3e('0x18')]();});}};}function handleEntityNotFound(_0x1e7479,_0x65bd0b){return function(_0xb267fa){if(!_0xb267fa){_0x1e7479[_0x2e3e('0x17')](0x194);}return _0xb267fa;};}function handleError(_0x1af281,_0x1973f5){_0x1973f5=_0x1973f5||0x1f4;return function(_0x5e98a4){logger[_0x2e3e('0x22')](_0x5e98a4[_0x2e3e('0x23')]);if(_0x5e98a4[_0x2e3e('0x24')]){delete _0x5e98a4[_0x2e3e('0x24')];}_0x1af281[_0x2e3e('0x19')](_0x1973f5)[_0x2e3e('0x25')](_0x5e98a4);};}exports[_0x2e3e('0x26')]=function(_0x85dabe,_0x385bed){var _0x1e6bb0={},_0x30a606={},_0x17353d={'count':0x0,'rows':[]};var _0x4b9b70=_[_0x2e3e('0x27')](db['Dynamics365Configuration'][_0x2e3e('0x28')],function(_0x24e943){return{'name':_0x24e943[_0x2e3e('0x29')],'type':_0x24e943[_0x2e3e('0x2a')][_0x2e3e('0x2b')]};});_0x30a606[_0x2e3e('0x2c')]=_[_0x2e3e('0x27')](_0x4b9b70,'name');_0x30a606['query']=_[_0x2e3e('0x2d')](_0x85dabe[_0x2e3e('0x2e')]);_0x30a606[_0x2e3e('0x2f')]=_[_0x2e3e('0x30')](_0x30a606['model'],_0x30a606[_0x2e3e('0x2e')]);_0x1e6bb0['attributes']=_['intersection'](_0x30a606[_0x2e3e('0x2c')],qs[_0x2e3e('0x31')](_0x85dabe[_0x2e3e('0x2e')][_0x2e3e('0x31')]));_0x1e6bb0[_0x2e3e('0x32')]=_0x1e6bb0[_0x2e3e('0x32')][_0x2e3e('0x33')]?_0x1e6bb0[_0x2e3e('0x32')]:_0x30a606[_0x2e3e('0x2c')];if(!_0x85dabe[_0x2e3e('0x2e')]['hasOwnProperty'](_0x2e3e('0x34'))){_0x1e6bb0[_0x2e3e('0x35')]=qs['limit'](_0x85dabe[_0x2e3e('0x2e')][_0x2e3e('0x35')]);_0x1e6bb0['offset']=qs[_0x2e3e('0x1c')](_0x85dabe['query'][_0x2e3e('0x1c')]);}_0x1e6bb0[_0x2e3e('0x36')]=qs['sort'](_0x85dabe['query']['sort']);_0x1e6bb0[_0x2e3e('0x37')]=qs[_0x2e3e('0x2f')](_['pick'](_0x85dabe['query'],_0x30a606[_0x2e3e('0x2f')]),_0x4b9b70);if(_0x85dabe[_0x2e3e('0x2e')][_0x2e3e('0x38')]){_0x1e6bb0[_0x2e3e('0x37')]=_['merge'](_0x1e6bb0[_0x2e3e('0x37')],{'$or':_[_0x2e3e('0x27')](_0x4b9b70,function(_0x399b5c){if(_0x399b5c[_0x2e3e('0x2a')]!==_0x2e3e('0x39')){var _0x50292a={};_0x50292a[_0x399b5c[_0x2e3e('0x24')]]={'$like':'%'+_0x85dabe[_0x2e3e('0x2e')][_0x2e3e('0x38')]+'%'};return _0x50292a;}})});}_0x1e6bb0=_['merge']({},_0x1e6bb0,_0x85dabe[_0x2e3e('0x3a')]);var _0x309a29={'where':_0x1e6bb0[_0x2e3e('0x37')]};return db['Dynamics365Configuration'][_0x2e3e('0x1b')](_0x309a29)['then'](function(_0x564a7f){_0x17353d[_0x2e3e('0x1b')]=_0x564a7f;if(_0x85dabe[_0x2e3e('0x2e')][_0x2e3e('0x3b')]){_0x1e6bb0['include']=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x2e3e('0x3c')](_0x1e6bb0);})['then'](function(_0x53e0ff){_0x17353d[_0x2e3e('0x3d')]=_0x53e0ff;return _0x17353d;})[_0x2e3e('0x3e')](respondWithFilteredResult(_0x385bed,_0x1e6bb0))['catch'](handleError(_0x385bed,null));};exports[_0x2e3e('0x3f')]=function(_0x11358c,_0x4b97df){var _0x5cf045={'raw':![],'where':{'id':_0x11358c[_0x2e3e('0x40')]['id']}},_0x48ee96={};_0x48ee96['model']=_[_0x2e3e('0x2d')](db[_0x2e3e('0x41')][_0x2e3e('0x28')]);_0x48ee96[_0x2e3e('0x2e')]=_[_0x2e3e('0x2d')](_0x11358c[_0x2e3e('0x2e')]);_0x48ee96[_0x2e3e('0x2f')]=_[_0x2e3e('0x30')](_0x48ee96['model'],_0x48ee96[_0x2e3e('0x2e')]);_0x5cf045['attributes']=_['intersection'](_0x48ee96[_0x2e3e('0x2c')],qs['fields'](_0x11358c['query'][_0x2e3e('0x31')]));_0x5cf045[_0x2e3e('0x32')]=_0x5cf045[_0x2e3e('0x32')][_0x2e3e('0x33')]?_0x5cf045[_0x2e3e('0x32')]:_0x48ee96[_0x2e3e('0x2c')];if(_0x11358c['query'][_0x2e3e('0x3b')]){_0x5cf045[_0x2e3e('0x42')]=[{'all':!![]}];}_0x5cf045=_[_0x2e3e('0x43')]({},_0x5cf045,_0x11358c[_0x2e3e('0x3a')]);return db[_0x2e3e('0x41')][_0x2e3e('0x44')](_0x5cf045)[_0x2e3e('0x3e')](handleEntityNotFound(_0x4b97df,null))[_0x2e3e('0x3e')](respondWithResult(_0x4b97df,null))[_0x2e3e('0x45')](handleError(_0x4b97df,null));};exports[_0x2e3e('0x46')]=function(_0x4b0298,_0x4755d5){return db[_0x2e3e('0x41')][_0x2e3e('0x46')](_0x4b0298[_0x2e3e('0x47')],{})[_0x2e3e('0x3e')](respondWithResult(_0x4755d5,0xc9))[_0x2e3e('0x45')](handleError(_0x4755d5,null));};exports['update']=function(_0x151212,_0x15d4d3){if(_0x151212['body']['id']){delete _0x151212[_0x2e3e('0x47')]['id'];}return db['Dynamics365Configuration'][_0x2e3e('0x44')]({'where':{'id':_0x151212[_0x2e3e('0x40')]['id']}})['then'](handleEntityNotFound(_0x15d4d3,null))[_0x2e3e('0x3e')](saveUpdates(_0x151212[_0x2e3e('0x47')],null))['then'](respondWithResult(_0x15d4d3,null))[_0x2e3e('0x45')](handleError(_0x15d4d3,null));};exports['destroy']=function(_0x50ecc5,_0xd00517){return db['Dynamics365Configuration']['find']({'where':{'id':_0x50ecc5[_0x2e3e('0x40')]['id']}})['then'](handleEntityNotFound(_0xd00517,null))[_0x2e3e('0x3e')](removeEntity(_0xd00517,null))['catch'](handleError(_0xd00517,null));};exports['getFields']=function(_0x5ddff4,_0x9a58af,_0x10472e){var _0x1128dd={};var _0x342d5b={};var _0xee056c;var _0x293490;return db[_0x2e3e('0x41')][_0x2e3e('0x48')]({'where':{'id':_0x5ddff4[_0x2e3e('0x40')]['id']}})['then'](handleEntityNotFound(_0x9a58af,null))[_0x2e3e('0x3e')](function(_0xd024ff){if(_0xd024ff){_0xee056c=_0xd024ff;_0x342d5b[_0x2e3e('0x2c')]=_['keys'](db[_0x2e3e('0x49')][_0x2e3e('0x28')]);_0x342d5b['query']=_['keys'](_0x5ddff4[_0x2e3e('0x2e')]);_0x342d5b[_0x2e3e('0x2f')]=_[_0x2e3e('0x30')](_0x342d5b[_0x2e3e('0x2c')],_0x342d5b[_0x2e3e('0x2e')]);_0x1128dd[_0x2e3e('0x32')]=_[_0x2e3e('0x30')](_0x342d5b[_0x2e3e('0x2c')],qs[_0x2e3e('0x31')](_0x5ddff4[_0x2e3e('0x2e')][_0x2e3e('0x31')]));_0x1128dd['attributes']=_0x1128dd['attributes']['length']?_0x1128dd[_0x2e3e('0x32')]:_0x342d5b[_0x2e3e('0x2c')];_0x1128dd['order']=qs[_0x2e3e('0x4a')](_0x5ddff4['query'][_0x2e3e('0x4a')]);_0x1128dd[_0x2e3e('0x37')]=qs['filters'](_[_0x2e3e('0x4b')](_0x5ddff4['query'],_0x342d5b[_0x2e3e('0x2f')]));if(_0x5ddff4[_0x2e3e('0x2e')][_0x2e3e('0x38')]){_0x1128dd['where']=_[_0x2e3e('0x43')](_0x1128dd[_0x2e3e('0x37')],{'$or':_[_0x2e3e('0x27')](_0x1128dd[_0x2e3e('0x32')],function(_0x1109de){var _0x4285f5={};_0x4285f5[_0x1109de]={'$like':'%'+_0x5ddff4[_0x2e3e('0x2e')]['filter']+'%'};return _0x4285f5;})});}_0x1128dd=_[_0x2e3e('0x43')]({},_0x1128dd,_0x5ddff4[_0x2e3e('0x3a')]);return _0xee056c[_0x2e3e('0x4c')](_0x1128dd);}})['then'](function(_0x1f773e){if(_0x1f773e){_0x293490=_0x1f773e[_0x2e3e('0x33')];if(!_0x5ddff4[_0x2e3e('0x2e')][_0x2e3e('0x4d')](_0x2e3e('0x34'))){_0x1128dd[_0x2e3e('0x35')]=qs[_0x2e3e('0x35')](_0x5ddff4[_0x2e3e('0x2e')]['limit']);_0x1128dd[_0x2e3e('0x1c')]=qs[_0x2e3e('0x1c')](_0x5ddff4[_0x2e3e('0x2e')][_0x2e3e('0x1c')]);}return _0xee056c[_0x2e3e('0x4c')](_0x1128dd);}})[_0x2e3e('0x3e')](function(_0x8bc0c7){if(_0x8bc0c7){return _0x8bc0c7?{'count':_0x293490,'rows':_0x8bc0c7}:null;}})['then'](respondWithResult(_0x9a58af,null))[_0x2e3e('0x45')](handleError(_0x9a58af,null));};exports[_0x2e3e('0x4e')]=function(_0x261034,_0x53e926,_0x5ca00f){var _0x48723d={};var _0x4a5b95={};var _0x2da870;var _0x283931;return db['Dynamics365Configuration'][_0x2e3e('0x48')]({'where':{'id':_0x261034[_0x2e3e('0x40')]['id']}})[_0x2e3e('0x3e')](handleEntityNotFound(_0x53e926,null))['then'](function(_0x1a0d24){if(_0x1a0d24){_0x2da870=_0x1a0d24;_0x4a5b95[_0x2e3e('0x2c')]=_[_0x2e3e('0x2d')](db[_0x2e3e('0x49')]['rawAttributes']);_0x4a5b95[_0x2e3e('0x2e')]=_[_0x2e3e('0x2d')](_0x261034['query']);_0x4a5b95[_0x2e3e('0x2f')]=_[_0x2e3e('0x30')](_0x4a5b95['model'],_0x4a5b95[_0x2e3e('0x2e')]);_0x48723d[_0x2e3e('0x32')]=_['intersection'](_0x4a5b95[_0x2e3e('0x2c')],qs['fields'](_0x261034[_0x2e3e('0x2e')][_0x2e3e('0x31')]));_0x48723d[_0x2e3e('0x32')]=_0x48723d[_0x2e3e('0x32')][_0x2e3e('0x33')]?_0x48723d[_0x2e3e('0x32')]:_0x4a5b95['model'];_0x48723d[_0x2e3e('0x36')]=qs[_0x2e3e('0x4a')](_0x261034['query']['sort']);_0x48723d['where']=qs['filters'](_[_0x2e3e('0x4b')](_0x261034[_0x2e3e('0x2e')],_0x4a5b95['filters']));if(_0x261034[_0x2e3e('0x2e')][_0x2e3e('0x38')]){_0x48723d[_0x2e3e('0x37')]=_[_0x2e3e('0x43')](_0x48723d[_0x2e3e('0x37')],{'$or':_[_0x2e3e('0x27')](_0x48723d['attributes'],function(_0x35fe23){var _0x3f4946={};_0x3f4946[_0x35fe23]={'$like':'%'+_0x261034[_0x2e3e('0x2e')][_0x2e3e('0x38')]+'%'};return _0x3f4946;})});}_0x48723d=_[_0x2e3e('0x43')]({},_0x48723d,_0x261034['options']);return _0x2da870[_0x2e3e('0x4e')](_0x48723d);}})[_0x2e3e('0x3e')](function(_0x671e13){if(_0x671e13){_0x283931=_0x671e13[_0x2e3e('0x33')];if(!_0x261034[_0x2e3e('0x2e')][_0x2e3e('0x4d')]('nolimit')){_0x48723d[_0x2e3e('0x35')]=qs[_0x2e3e('0x35')](_0x261034[_0x2e3e('0x2e')][_0x2e3e('0x35')]);_0x48723d[_0x2e3e('0x1c')]=qs[_0x2e3e('0x1c')](_0x261034[_0x2e3e('0x2e')][_0x2e3e('0x1c')]);}return _0x2da870[_0x2e3e('0x4e')](_0x48723d);}})['then'](function(_0x5ba68f){if(_0x5ba68f){return _0x5ba68f?{'count':_0x283931,'rows':_0x5ba68f}:null;}})[_0x2e3e('0x3e')](respondWithResult(_0x53e926,null))[_0x2e3e('0x45')](handleError(_0x53e926,null));};exports['getDescriptions']=function(_0x417849,_0x2962fa,_0x50657d){var _0x11f0fe={};var _0x5d26d2={};var _0x2a32ad;var _0x2216cf;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x417849[_0x2e3e('0x40')]['id']}})['then'](handleEntityNotFound(_0x2962fa,null))[_0x2e3e('0x3e')](function(_0x1cc6fe){if(_0x1cc6fe){_0x2a32ad=_0x1cc6fe;_0x5d26d2[_0x2e3e('0x2c')]=_[_0x2e3e('0x2d')](db[_0x2e3e('0x49')][_0x2e3e('0x28')]);_0x5d26d2[_0x2e3e('0x2e')]=_[_0x2e3e('0x2d')](_0x417849[_0x2e3e('0x2e')]);_0x5d26d2[_0x2e3e('0x2f')]=_[_0x2e3e('0x30')](_0x5d26d2[_0x2e3e('0x2c')],_0x5d26d2['query']);_0x11f0fe[_0x2e3e('0x32')]=_[_0x2e3e('0x30')](_0x5d26d2[_0x2e3e('0x2c')],qs[_0x2e3e('0x31')](_0x417849[_0x2e3e('0x2e')]['fields']));_0x11f0fe[_0x2e3e('0x32')]=_0x11f0fe['attributes'][_0x2e3e('0x33')]?_0x11f0fe[_0x2e3e('0x32')]:_0x5d26d2[_0x2e3e('0x2c')];_0x11f0fe[_0x2e3e('0x36')]=qs[_0x2e3e('0x4a')](_0x417849[_0x2e3e('0x2e')][_0x2e3e('0x4a')]);_0x11f0fe[_0x2e3e('0x37')]=qs[_0x2e3e('0x2f')](_['pick'](_0x417849[_0x2e3e('0x2e')],_0x5d26d2[_0x2e3e('0x2f')]));if(_0x417849[_0x2e3e('0x2e')][_0x2e3e('0x38')]){_0x11f0fe[_0x2e3e('0x37')]=_[_0x2e3e('0x43')](_0x11f0fe['where'],{'$or':_[_0x2e3e('0x27')](_0x11f0fe[_0x2e3e('0x32')],function(_0x4693cb){var _0x2bba16={};_0x2bba16[_0x4693cb]={'$like':'%'+_0x417849[_0x2e3e('0x2e')][_0x2e3e('0x38')]+'%'};return _0x2bba16;})});}_0x11f0fe=_[_0x2e3e('0x43')]({},_0x11f0fe,_0x417849[_0x2e3e('0x3a')]);return _0x2a32ad[_0x2e3e('0x4f')](_0x11f0fe);}})[_0x2e3e('0x3e')](function(_0x5014fa){if(_0x5014fa){_0x2216cf=_0x5014fa[_0x2e3e('0x33')];if(!_0x417849[_0x2e3e('0x2e')]['hasOwnProperty'](_0x2e3e('0x34'))){_0x11f0fe['limit']=qs['limit'](_0x417849[_0x2e3e('0x2e')][_0x2e3e('0x35')]);_0x11f0fe[_0x2e3e('0x1c')]=qs[_0x2e3e('0x1c')](_0x417849[_0x2e3e('0x2e')][_0x2e3e('0x1c')]);}return _0x2a32ad[_0x2e3e('0x4f')](_0x11f0fe);}})[_0x2e3e('0x3e')](function(_0x5d7cb3){if(_0x5d7cb3){return _0x5d7cb3?{'count':_0x2216cf,'rows':_0x5d7cb3}:null;}})[_0x2e3e('0x3e')](respondWithResult(_0x2962fa,null))['catch'](handleError(_0x2962fa,null));};
\ No newline at end of file
+var _0xf370=['crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','getFields','findOne','length','getSubjects','Dynamics365Field','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel'];(function(_0x156dfe,_0x6c74ea){var _0x5233cb=function(_0x558a99){while(--_0x558a99){_0x156dfe['push'](_0x156dfe['shift']());}};_0x5233cb(++_0x6c74ea);}(_0xf370,0x98));var _0x0f37=function(_0x407565,_0x4c4d59){_0x407565=_0x407565-0x0;var _0x543a7c=_0xf370[_0x407565];return _0x543a7c;};'use strict';var emlformat=require(_0x0f37('0x0'));var rimraf=require(_0x0f37('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0f37('0x2'));var rp=require(_0x0f37('0x3'));var moment=require(_0x0f37('0x4'));var BPromise=require(_0x0f37('0x5'));var Mustache=require(_0x0f37('0x6'));var util=require(_0x0f37('0x7'));var path=require(_0x0f37('0x8'));var sox=require(_0x0f37('0x9'));var csv=require(_0x0f37('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0f37('0xb'));var _=require(_0x0f37('0xc'));var squel=require(_0x0f37('0xd'));var crypto=require(_0x0f37('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0f37('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0f37('0x10'));var Redis=require(_0x0f37('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x0f37('0x12'));var as=require(_0x0f37('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0f37('0x14'))(_0x0f37('0x15'));var utils=require('../../config/utils');var config=require(_0x0f37('0x16'));var licenseUtil=require(_0x0f37('0x17'));var db=require(_0x0f37('0x18'))['db'];function respondWithStatusCode(_0x1cbd0d,_0x42787a){_0x42787a=_0x42787a||0xcc;return function(_0x12778e){if(_0x12778e){return _0x1cbd0d[_0x0f37('0x19')](_0x42787a);}return _0x1cbd0d[_0x0f37('0x1a')](_0x42787a)[_0x0f37('0x1b')]();};}function respondWithResult(_0x4af5fb,_0x32f94d){_0x32f94d=_0x32f94d||0xc8;return function(_0x5dd364){if(_0x5dd364){return _0x4af5fb[_0x0f37('0x1a')](_0x32f94d)['json'](_0x5dd364);}};}function respondWithFilteredResult(_0x3a8de8,_0x4b5123){return function(_0x104778){if(_0x104778){var _0x2cda0b=typeof _0x4b5123[_0x0f37('0x1c')]===_0x0f37('0x1d')&&typeof _0x4b5123[_0x0f37('0x1e')]===_0x0f37('0x1d');var _0x19773b=_0x104778['count'];var _0x150721=_0x2cda0b?0x0:_0x4b5123['offset'];var _0x2ade50=_0x2cda0b?_0x104778['count']:_0x4b5123[_0x0f37('0x1c')]+_0x4b5123['limit'];var _0x3c3110;if(_0x2ade50>=_0x19773b){_0x2ade50=_0x19773b;_0x3c3110=0xc8;}else{_0x3c3110=0xce;}_0x3a8de8[_0x0f37('0x1a')](_0x3c3110);return _0x3a8de8[_0x0f37('0x1f')](_0x0f37('0x20'),_0x150721+'-'+_0x2ade50+'/'+_0x19773b)[_0x0f37('0x21')](_0x104778);}return null;};}function patchUpdates(_0x45bfb5){return function(_0x3af7e5){try{jsonpatch[_0x0f37('0x22')](_0x3af7e5,_0x45bfb5,!![]);}catch(_0x46c9c0){return BPromise[_0x0f37('0x23')](_0x46c9c0);}return _0x3af7e5[_0x0f37('0x24')]();};}function saveUpdates(_0x4397e0,_0x4ecbb9){return function(_0x231bde){if(_0x231bde){return _0x231bde[_0x0f37('0x25')](_0x4397e0)[_0x0f37('0x26')](function(_0x2e8cc3){return _0x2e8cc3;});}return null;};}function removeEntity(_0x4555f9,_0x2b597c){return function(_0x4c94ca){if(_0x4c94ca){return _0x4c94ca[_0x0f37('0x27')]()[_0x0f37('0x26')](function(){_0x4555f9[_0x0f37('0x1a')](0xcc)[_0x0f37('0x1b')]();});}};}function handleEntityNotFound(_0x41dec9,_0x45212b){return function(_0x4bd7f2){if(!_0x4bd7f2){_0x41dec9['sendStatus'](0x194);}return _0x4bd7f2;};}function handleError(_0xe43520,_0x59d67c){_0x59d67c=_0x59d67c||0x1f4;return function(_0x482bf6){logger['error'](_0x482bf6[_0x0f37('0x28')]);if(_0x482bf6['name']){delete _0x482bf6[_0x0f37('0x29')];}_0xe43520[_0x0f37('0x1a')](_0x59d67c)[_0x0f37('0x2a')](_0x482bf6);};}exports[_0x0f37('0x2b')]=function(_0x53c627,_0x27fb80){var _0x536da6={},_0x57e174={},_0x1bea1e={'count':0x0,'rows':[]};var _0x2e8303=_[_0x0f37('0x2c')](db[_0x0f37('0x2d')][_0x0f37('0x2e')],function(_0x1a5b28){return{'name':_0x1a5b28[_0x0f37('0x2f')],'type':_0x1a5b28[_0x0f37('0x30')][_0x0f37('0x31')]};});_0x57e174[_0x0f37('0x32')]=_['map'](_0x2e8303,_0x0f37('0x29'));_0x57e174[_0x0f37('0x33')]=_[_0x0f37('0x34')](_0x53c627[_0x0f37('0x33')]);_0x57e174[_0x0f37('0x35')]=_[_0x0f37('0x36')](_0x57e174[_0x0f37('0x32')],_0x57e174[_0x0f37('0x33')]);_0x536da6['attributes']=_[_0x0f37('0x36')](_0x57e174[_0x0f37('0x32')],qs[_0x0f37('0x37')](_0x53c627['query']['fields']));_0x536da6[_0x0f37('0x38')]=_0x536da6['attributes']['length']?_0x536da6[_0x0f37('0x38')]:_0x57e174[_0x0f37('0x32')];if(!_0x53c627[_0x0f37('0x33')][_0x0f37('0x39')](_0x0f37('0x3a'))){_0x536da6[_0x0f37('0x1e')]=qs[_0x0f37('0x1e')](_0x53c627[_0x0f37('0x33')]['limit']);_0x536da6[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x53c627['query'][_0x0f37('0x1c')]);}_0x536da6['order']=qs[_0x0f37('0x3b')](_0x53c627[_0x0f37('0x33')]['sort']);_0x536da6[_0x0f37('0x3c')]=qs[_0x0f37('0x35')](_[_0x0f37('0x3d')](_0x53c627['query'],_0x57e174[_0x0f37('0x35')]),_0x2e8303);if(_0x53c627[_0x0f37('0x33')][_0x0f37('0x3e')]){_0x536da6[_0x0f37('0x3c')]=_['merge'](_0x536da6[_0x0f37('0x3c')],{'$or':_[_0x0f37('0x2c')](_0x2e8303,function(_0x11056d){if(_0x11056d[_0x0f37('0x30')]!==_0x0f37('0x3f')){var _0x4fc029={};_0x4fc029[_0x11056d[_0x0f37('0x29')]]={'$like':'%'+_0x53c627['query'][_0x0f37('0x3e')]+'%'};return _0x4fc029;}})});}_0x536da6=_['merge']({},_0x536da6,_0x53c627[_0x0f37('0x40')]);var _0x20e8bc={'where':_0x536da6[_0x0f37('0x3c')]};return db[_0x0f37('0x2d')]['count'](_0x20e8bc)[_0x0f37('0x26')](function(_0x5afedd){_0x1bea1e[_0x0f37('0x41')]=_0x5afedd;if(_0x53c627['query'][_0x0f37('0x42')]){_0x536da6[_0x0f37('0x43')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0x0f37('0x44')](_0x536da6);})[_0x0f37('0x26')](function(_0x2486d6){_0x1bea1e[_0x0f37('0x45')]=_0x2486d6;return _0x1bea1e;})[_0x0f37('0x26')](respondWithFilteredResult(_0x27fb80,_0x536da6))[_0x0f37('0x46')](handleError(_0x27fb80,null));};exports[_0x0f37('0x47')]=function(_0x5f2635,_0x2ab33b){var _0x314c6c={'raw':![],'where':{'id':_0x5f2635[_0x0f37('0x48')]['id']}},_0xeb93c3={};_0xeb93c3[_0x0f37('0x32')]=_[_0x0f37('0x34')](db[_0x0f37('0x2d')]['rawAttributes']);_0xeb93c3['query']=_['keys'](_0x5f2635[_0x0f37('0x33')]);_0xeb93c3['filters']=_[_0x0f37('0x36')](_0xeb93c3[_0x0f37('0x32')],_0xeb93c3[_0x0f37('0x33')]);_0x314c6c[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0xeb93c3['model'],qs['fields'](_0x5f2635[_0x0f37('0x33')]['fields']));_0x314c6c[_0x0f37('0x38')]=_0x314c6c[_0x0f37('0x38')]['length']?_0x314c6c[_0x0f37('0x38')]:_0xeb93c3['model'];if(_0x5f2635[_0x0f37('0x33')][_0x0f37('0x42')]){_0x314c6c[_0x0f37('0x43')]=[{'all':!![]}];}_0x314c6c=_[_0x0f37('0x49')]({},_0x314c6c,_0x5f2635[_0x0f37('0x40')]);return db[_0x0f37('0x2d')][_0x0f37('0x4a')](_0x314c6c)[_0x0f37('0x26')](handleEntityNotFound(_0x2ab33b,null))['then'](respondWithResult(_0x2ab33b,null))['catch'](handleError(_0x2ab33b,null));};exports['create']=function(_0x48d2a1,_0x208676){return db['Dynamics365Configuration'][_0x0f37('0x4b')](_0x48d2a1[_0x0f37('0x4c')],{})['then'](respondWithResult(_0x208676,0xc9))['catch'](handleError(_0x208676,null));};exports[_0x0f37('0x25')]=function(_0x7d70bb,_0x5e6b6e){if(_0x7d70bb[_0x0f37('0x4c')]['id']){delete _0x7d70bb[_0x0f37('0x4c')]['id'];}return db[_0x0f37('0x2d')][_0x0f37('0x4a')]({'where':{'id':_0x7d70bb[_0x0f37('0x48')]['id']}})['then'](handleEntityNotFound(_0x5e6b6e,null))[_0x0f37('0x26')](saveUpdates(_0x7d70bb['body'],null))[_0x0f37('0x26')](respondWithResult(_0x5e6b6e,null))['catch'](handleError(_0x5e6b6e,null));};exports[_0x0f37('0x27')]=function(_0xb05077,_0x447c74){return db[_0x0f37('0x2d')][_0x0f37('0x4a')]({'where':{'id':_0xb05077[_0x0f37('0x48')]['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x447c74,null))[_0x0f37('0x26')](removeEntity(_0x447c74,null))['catch'](handleError(_0x447c74,null));};exports[_0x0f37('0x4d')]=function(_0x5590af,_0x584676,_0x5f363f){var _0x2b7ab3={};var _0x29d7ea={};var _0x3f6270;var _0x368e6b;return db[_0x0f37('0x2d')][_0x0f37('0x4e')]({'where':{'id':_0x5590af[_0x0f37('0x48')]['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x584676,null))[_0x0f37('0x26')](function(_0x54c441){if(_0x54c441){_0x3f6270=_0x54c441;_0x29d7ea['model']=_[_0x0f37('0x34')](db['Dynamics365Field']['rawAttributes']);_0x29d7ea[_0x0f37('0x33')]=_['keys'](_0x5590af[_0x0f37('0x33')]);_0x29d7ea[_0x0f37('0x35')]=_[_0x0f37('0x36')](_0x29d7ea[_0x0f37('0x32')],_0x29d7ea[_0x0f37('0x33')]);_0x2b7ab3[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0x29d7ea[_0x0f37('0x32')],qs['fields'](_0x5590af[_0x0f37('0x33')][_0x0f37('0x37')]));_0x2b7ab3[_0x0f37('0x38')]=_0x2b7ab3['attributes'][_0x0f37('0x4f')]?_0x2b7ab3[_0x0f37('0x38')]:_0x29d7ea['model'];_0x2b7ab3['order']=qs[_0x0f37('0x3b')](_0x5590af[_0x0f37('0x33')][_0x0f37('0x3b')]);_0x2b7ab3[_0x0f37('0x3c')]=qs['filters'](_['pick'](_0x5590af[_0x0f37('0x33')],_0x29d7ea[_0x0f37('0x35')]));if(_0x5590af[_0x0f37('0x33')][_0x0f37('0x3e')]){_0x2b7ab3['where']=_['merge'](_0x2b7ab3[_0x0f37('0x3c')],{'$or':_[_0x0f37('0x2c')](_0x2b7ab3[_0x0f37('0x38')],function(_0x314ba8){var _0x51010c={};_0x51010c[_0x314ba8]={'$like':'%'+_0x5590af['query'][_0x0f37('0x3e')]+'%'};return _0x51010c;})});}_0x2b7ab3=_[_0x0f37('0x49')]({},_0x2b7ab3,_0x5590af['options']);return _0x3f6270[_0x0f37('0x4d')](_0x2b7ab3);}})[_0x0f37('0x26')](function(_0x575a79){if(_0x575a79){_0x368e6b=_0x575a79['length'];if(!_0x5590af[_0x0f37('0x33')][_0x0f37('0x39')]('nolimit')){_0x2b7ab3[_0x0f37('0x1e')]=qs['limit'](_0x5590af['query'][_0x0f37('0x1e')]);_0x2b7ab3[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x5590af[_0x0f37('0x33')][_0x0f37('0x1c')]);}return _0x3f6270[_0x0f37('0x4d')](_0x2b7ab3);}})[_0x0f37('0x26')](function(_0x10c6a9){if(_0x10c6a9){return _0x10c6a9?{'count':_0x368e6b,'rows':_0x10c6a9}:null;}})['then'](respondWithResult(_0x584676,null))['catch'](handleError(_0x584676,null));};exports[_0x0f37('0x50')]=function(_0x560748,_0x15f532,_0x484a14){var _0x593f5d={};var _0x496cd7={};var _0x56700d;var _0xb10e3;return db[_0x0f37('0x2d')][_0x0f37('0x4e')]({'where':{'id':_0x560748[_0x0f37('0x48')]['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x15f532,null))[_0x0f37('0x26')](function(_0x11aee3){if(_0x11aee3){_0x56700d=_0x11aee3;_0x496cd7[_0x0f37('0x32')]=_[_0x0f37('0x34')](db[_0x0f37('0x51')]['rawAttributes']);_0x496cd7[_0x0f37('0x33')]=_[_0x0f37('0x34')](_0x560748[_0x0f37('0x33')]);_0x496cd7['filters']=_[_0x0f37('0x36')](_0x496cd7[_0x0f37('0x32')],_0x496cd7[_0x0f37('0x33')]);_0x593f5d[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0x496cd7[_0x0f37('0x32')],qs[_0x0f37('0x37')](_0x560748[_0x0f37('0x33')]['fields']));_0x593f5d[_0x0f37('0x38')]=_0x593f5d[_0x0f37('0x38')]['length']?_0x593f5d[_0x0f37('0x38')]:_0x496cd7[_0x0f37('0x32')];_0x593f5d['order']=qs[_0x0f37('0x3b')](_0x560748[_0x0f37('0x33')]['sort']);_0x593f5d[_0x0f37('0x3c')]=qs[_0x0f37('0x35')](_['pick'](_0x560748[_0x0f37('0x33')],_0x496cd7[_0x0f37('0x35')]));if(_0x560748[_0x0f37('0x33')][_0x0f37('0x3e')]){_0x593f5d[_0x0f37('0x3c')]=_[_0x0f37('0x49')](_0x593f5d['where'],{'$or':_[_0x0f37('0x2c')](_0x593f5d[_0x0f37('0x38')],function(_0x287fd2){var _0x241531={};_0x241531[_0x287fd2]={'$like':'%'+_0x560748[_0x0f37('0x33')][_0x0f37('0x3e')]+'%'};return _0x241531;})});}_0x593f5d=_[_0x0f37('0x49')]({},_0x593f5d,_0x560748[_0x0f37('0x40')]);return _0x56700d[_0x0f37('0x50')](_0x593f5d);}})[_0x0f37('0x26')](function(_0x35c8c2){if(_0x35c8c2){_0xb10e3=_0x35c8c2[_0x0f37('0x4f')];if(!_0x560748['query'][_0x0f37('0x39')](_0x0f37('0x3a'))){_0x593f5d[_0x0f37('0x1e')]=qs[_0x0f37('0x1e')](_0x560748[_0x0f37('0x33')][_0x0f37('0x1e')]);_0x593f5d[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x560748['query']['offset']);}return _0x56700d[_0x0f37('0x50')](_0x593f5d);}})[_0x0f37('0x26')](function(_0x542db6){if(_0x542db6){return _0x542db6?{'count':_0xb10e3,'rows':_0x542db6}:null;}})[_0x0f37('0x26')](respondWithResult(_0x15f532,null))['catch'](handleError(_0x15f532,null));};exports[_0x0f37('0x52')]=function(_0x1f7b05,_0x286300,_0x5834e2){var _0x5d56c6={};var _0xef65bc={};var _0x258810;var _0x410cd7;return db[_0x0f37('0x2d')][_0x0f37('0x4e')]({'where':{'id':_0x1f7b05['params']['id']}})[_0x0f37('0x26')](handleEntityNotFound(_0x286300,null))[_0x0f37('0x26')](function(_0x31b7b2){if(_0x31b7b2){_0x258810=_0x31b7b2;_0xef65bc[_0x0f37('0x32')]=_[_0x0f37('0x34')](db[_0x0f37('0x51')][_0x0f37('0x2e')]);_0xef65bc[_0x0f37('0x33')]=_['keys'](_0x1f7b05[_0x0f37('0x33')]);_0xef65bc[_0x0f37('0x35')]=_[_0x0f37('0x36')](_0xef65bc[_0x0f37('0x32')],_0xef65bc[_0x0f37('0x33')]);_0x5d56c6[_0x0f37('0x38')]=_[_0x0f37('0x36')](_0xef65bc[_0x0f37('0x32')],qs[_0x0f37('0x37')](_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x37')]));_0x5d56c6[_0x0f37('0x38')]=_0x5d56c6[_0x0f37('0x38')][_0x0f37('0x4f')]?_0x5d56c6[_0x0f37('0x38')]:_0xef65bc[_0x0f37('0x32')];_0x5d56c6['order']=qs['sort'](_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x3b')]);_0x5d56c6['where']=qs['filters'](_[_0x0f37('0x3d')](_0x1f7b05[_0x0f37('0x33')],_0xef65bc[_0x0f37('0x35')]));if(_0x1f7b05['query']['filter']){_0x5d56c6[_0x0f37('0x3c')]=_[_0x0f37('0x49')](_0x5d56c6['where'],{'$or':_['map'](_0x5d56c6['attributes'],function(_0x5dacf9){var _0x34d7bb={};_0x34d7bb[_0x5dacf9]={'$like':'%'+_0x1f7b05['query'][_0x0f37('0x3e')]+'%'};return _0x34d7bb;})});}_0x5d56c6=_['merge']({},_0x5d56c6,_0x1f7b05[_0x0f37('0x40')]);return _0x258810[_0x0f37('0x52')](_0x5d56c6);}})['then'](function(_0x54cac5){if(_0x54cac5){_0x410cd7=_0x54cac5[_0x0f37('0x4f')];if(!_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x39')]('nolimit')){_0x5d56c6[_0x0f37('0x1e')]=qs[_0x0f37('0x1e')](_0x1f7b05[_0x0f37('0x33')]['limit']);_0x5d56c6[_0x0f37('0x1c')]=qs[_0x0f37('0x1c')](_0x1f7b05[_0x0f37('0x33')][_0x0f37('0x1c')]);}return _0x258810[_0x0f37('0x52')](_0x5d56c6);}})[_0x0f37('0x26')](function(_0x5f299a){if(_0x5f299a){return _0x5f299a?{'count':_0x410cd7,'rows':_0x5f299a}:null;}})[_0x0f37('0x26')](respondWithResult(_0x286300,null))['catch'](handleError(_0x286300,null));};
\ No newline at end of file
index 2bc2eb7..f0a49ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0e=['define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intDynamics365Configuration.attributes'];(function(_0x4c7c91,_0x48278c){var _0x325c70=function(_0x4f357a){while(--_0x4f357a){_0x4c7c91['push'](_0x4c7c91['shift']());}};_0x325c70(++_0x48278c);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x3a950a,_0x96629e){_0x3a950a=_0x3a950a-0x0;var _0x3b8639=_0x8d0e[_0x3a950a];return _0x3b8639;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var logger=require(_0xe8d0('0x2'))(_0xe8d0('0x3'));var moment=require(_0xe8d0('0x4'));var BPromise=require(_0xe8d0('0x5'));var rp=require(_0xe8d0('0x6'));var fs=require('fs');var path=require(_0xe8d0('0x7'));var rimraf=require(_0xe8d0('0x8'));var config=require('../../config/environment');var attributes=require(_0xe8d0('0x9'));module['exports']=function(_0x560dab,_0x2e2985){return _0x560dab[_0xe8d0('0xa')](_0xe8d0('0xb'),attributes,{'tableName':_0xe8d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9f62=['api','moment','bluebird','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','util'];(function(_0x32563b,_0x40a46d){var _0x578d91=function(_0x383eca){while(--_0x383eca){_0x32563b['push'](_0x32563b['shift']());}};_0x578d91(++_0x40a46d);}(_0x9f62,0x154));var _0x29f6=function(_0x286747,_0x2d9074){_0x286747=_0x286747-0x0;var _0x45194e=_0x9f62[_0x286747];return _0x45194e;};'use strict';var _=require('lodash');var util=require(_0x29f6('0x0'));var logger=require('../../config/logger')(_0x29f6('0x1'));var moment=require(_0x29f6('0x2'));var BPromise=require(_0x29f6('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x29f6('0x4'));var config=require(_0x29f6('0x5'));var attributes=require(_0x29f6('0x6'));module[_0x29f6('0x7')]=function(_0x595034,_0xf66137){return _0x595034[_0x29f6('0x8')](_0x29f6('0x9'),attributes,{'tableName':_0x29f6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 600a241..c8f24c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9665=['../../config/environment','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x4414d5,_0x36494a){var _0x1bbc2b=function(_0x3fd2a6){while(--_0x3fd2a6){_0x4414d5['push'](_0x4414d5['shift']());}};_0x1bbc2b(++_0x36494a);}(_0x9665,0x168));var _0x5966=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x9665[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0x5966('0x0'));var util=require(_0x5966('0x1'));var moment=require(_0x5966('0x2'));var BPromise=require(_0x5966('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5966('0x4'));var db=require(_0x5966('0x5'))['db'];var utils=require(_0x5966('0x6'));var logger=require('../../config/logger')(_0x5966('0x7'));var config=require(_0x5966('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x5966('0x9')][_0x5966('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b8419,_0x52799e,_0x587316){return new BPromise(function(_0x5d4cac,_0x534af4){return client[_0x5966('0xb')](_0x5b8419,_0x587316)[_0x5966('0xc')](function(_0x37a1cb){logger[_0x5966('0xd')](_0x5966('0xe'),_0x52799e,_0x5966('0xf'));logger[_0x5966('0x10')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x52799e,_0x5966('0xf'),JSON[_0x5966('0x11')](_0x37a1cb));if(_0x37a1cb['error']){if(_0x37a1cb[_0x5966('0x12')][_0x5966('0x13')]===0x1f4){logger['error'](_0x5966('0xe'),_0x52799e,_0x37a1cb[_0x5966('0x12')]['message']);return _0x534af4(_0x37a1cb[_0x5966('0x12')][_0x5966('0x14')]);}logger[_0x5966('0x12')](_0x5966('0xe'),_0x52799e,_0x37a1cb[_0x5966('0x12')][_0x5966('0x14')]);return _0x5d4cac(_0x37a1cb[_0x5966('0x12')][_0x5966('0x14')]);}else{logger['info'](_0x5966('0xe'),_0x52799e,_0x5966('0xf'));_0x5d4cac(_0x37a1cb[_0x5966('0x15')]['message']);}})[_0x5966('0x16')](function(_0x1567b3){logger[_0x5966('0x12')](_0x5966('0xe'),_0x52799e,_0x1567b3);_0x534af4(_0x1567b3);});});}
\ No newline at end of file
+var _0x98cf=['then','info','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request'];(function(_0x30c0bd,_0x158128){var _0x1ca046=function(_0x367571){while(--_0x367571){_0x30c0bd['push'](_0x30c0bd['shift']());}};_0x1ca046(++_0x158128);}(_0x98cf,0x137));var _0xf98c=function(_0x555ea3,_0x52b1dd){_0x555ea3=_0x555ea3-0x0;var _0xd5f6cc=_0x98cf[_0x555ea3];return _0xd5f6cc;};'use strict';var _=require(_0xf98c('0x0'));var util=require(_0xf98c('0x1'));var moment=require(_0xf98c('0x2'));var BPromise=require('bluebird');var rs=require(_0xf98c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf98c('0x4'))['db'];var utils=require(_0xf98c('0x5'));var logger=require('../../config/logger')(_0xf98c('0x6'));var config=require(_0xf98c('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf98c('0x8')][_0xf98c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48f839,_0x11c94e,_0x578b36){return new BPromise(function(_0x1ef4c6,_0x4791cc){return client[_0xf98c('0xa')](_0x48f839,_0x578b36)[_0xf98c('0xb')](function(_0x180ebf){logger[_0xf98c('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x11c94e,'request\x20sent');logger[_0xf98c('0xd')](_0xf98c('0xe'),_0x11c94e,'request\x20sent',JSON[_0xf98c('0xf')](_0x180ebf));if(_0x180ebf[_0xf98c('0x10')]){if(_0x180ebf['error'][_0xf98c('0x11')]===0x1f4){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x11c94e,_0x180ebf[_0xf98c('0x10')][_0xf98c('0x12')]);return _0x4791cc(_0x180ebf[_0xf98c('0x10')]['message']);}logger['error'](_0xf98c('0x13'),_0x11c94e,_0x180ebf[_0xf98c('0x10')][_0xf98c('0x12')]);return _0x1ef4c6(_0x180ebf[_0xf98c('0x10')][_0xf98c('0x12')]);}else{logger['info'](_0xf98c('0x13'),_0x11c94e,_0xf98c('0x14'));_0x1ef4c6(_0x180ebf[_0xf98c('0x15')][_0xf98c('0x12')]);}})[_0xf98c('0x16')](function(_0x3b6447){logger[_0xf98c('0x10')](_0xf98c('0x13'),_0x11c94e,_0x3b6447);_0x4791cc(_0x3b6447);});});}
\ No newline at end of file
index 26104aa..d430e20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03c6=['put','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id','show'];(function(_0x848300,_0xd6f38a){var _0x50ace4=function(_0x99adc6){while(--_0x99adc6){_0x848300['push'](_0x848300['shift']());}};_0x50ace4(++_0xd6f38a);}(_0x03c6,0x70));var _0x603c=function(_0x3aee9a,_0x221030){_0x3aee9a=_0x3aee9a-0x0;var _0xb2af5d=_0x03c6[_0x3aee9a];return _0xb2af5d;};'use strict';var multer=require(_0x603c('0x0'));var util=require(_0x603c('0x1'));var path=require(_0x603c('0x2'));var timeout=require(_0x603c('0x3'));var express=require('express');var router=express[_0x603c('0x4')]();var fs_extra=require(_0x603c('0x5'));var auth=require(_0x603c('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x603c('0x7'));var controller=require(_0x603c('0x8'));router[_0x603c('0x9')]('/',auth[_0x603c('0xa')](),controller[_0x603c('0xb')]);router[_0x603c('0x9')](_0x603c('0xc'),auth[_0x603c('0xa')](),controller[_0x603c('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x603c('0xe')](_0x603c('0xc'),auth[_0x603c('0xa')](),controller[_0x603c('0xf')]);router['delete'](_0x603c('0xc'),auth[_0x603c('0xa')](),controller[_0x603c('0x10')]);module[_0x603c('0x11')]=router;
\ No newline at end of file
+var _0x5a50=['isAuthenticated','get','/:id','show','post','create','update','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x518242,_0x20d41c){var _0x199682=function(_0x5b698a){while(--_0x5b698a){_0x518242['push'](_0x518242['shift']());}};_0x199682(++_0x20d41c);}(_0x5a50,0x149));var _0x05a5=function(_0x2c0c2d,_0x2e4607){_0x2c0c2d=_0x2c0c2d-0x0;var _0x16ebd5=_0x5a50[_0x2c0c2d];return _0x16ebd5;};'use strict';var multer=require(_0x05a5('0x0'));var util=require(_0x05a5('0x1'));var path=require(_0x05a5('0x2'));var timeout=require(_0x05a5('0x3'));var express=require('express');var router=express[_0x05a5('0x4')]();var fs_extra=require(_0x05a5('0x5'));var auth=require(_0x05a5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intDynamics365Field.controller');router['get']('/',auth[_0x05a5('0x7')](),controller['index']);router[_0x05a5('0x8')](_0x05a5('0x9'),auth[_0x05a5('0x7')](),controller[_0x05a5('0xa')]);router[_0x05a5('0xb')]('/',auth[_0x05a5('0x7')](),controller[_0x05a5('0xc')]);router['put'](_0x05a5('0x9'),auth[_0x05a5('0x7')](),controller[_0x05a5('0xd')]);router[_0x05a5('0xe')](_0x05a5('0x9'),auth['isAuthenticated'](),controller[_0x05a5('0xf')]);module['exports']=router;
\ No newline at end of file
index 8a42069..006da65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd10=['keyValue','picklist','string','STRING','ENUM','BOOLEAN','sequelize','exports','variable'];(function(_0x37f58b,_0x5c0876){var _0x4f3a64=function(_0x3bdc3e){while(--_0x3bdc3e){_0x37f58b['push'](_0x37f58b['shift']());}};_0x4f3a64(++_0x5c0876);}(_0xfd10,0x9f));var _0x0fd1=function(_0x432fca,_0xb0b1b5){_0x432fca=_0x432fca-0x0;var _0x3adba4=_0xfd10[_0x432fca];return _0x3adba4;};'use strict';var Sequelize=require(_0x0fd1('0x0'));module[_0x0fd1('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0x0fd1('0x2'),'customVariable',_0x0fd1('0x3'),_0x0fd1('0x4')),'defaultValue':_0x0fd1('0x5')},'content':{'type':Sequelize[_0x0fd1('0x6')]},'key':{'type':Sequelize[_0x0fd1('0x6')]},'keyType':{'type':Sequelize[_0x0fd1('0x7')](_0x0fd1('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x0fd1('0x6')]},'idField':{'type':Sequelize[_0x0fd1('0x6')]},'nameField':{'type':Sequelize[_0x0fd1('0x6')]},'customField':{'type':Sequelize[_0x0fd1('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0fd1('0x6')]}};
\ No newline at end of file
+var _0x3c68=['string','STRING','variable','BOOLEAN','sequelize','exports','ENUM','customVariable'];(function(_0x18811b,_0x6bede4){var _0x2fbee4=function(_0x4dcf84){while(--_0x4dcf84){_0x18811b['push'](_0x18811b['shift']());}};_0x2fbee4(++_0x6bede4);}(_0x3c68,0x17c));var _0x83c6=function(_0x5935d9,_0x53b325){_0x5935d9=_0x5935d9-0x0;var _0x87520e=_0x3c68[_0x5935d9];return _0x87520e;};'use strict';var Sequelize=require(_0x83c6('0x0'));module[_0x83c6('0x1')]={'type':{'type':Sequelize[_0x83c6('0x2')]('string','variable',_0x83c6('0x3'),'keyValue','picklist'),'defaultValue':_0x83c6('0x4')},'content':{'type':Sequelize[_0x83c6('0x5')]},'key':{'type':Sequelize[_0x83c6('0x5')]},'keyType':{'type':Sequelize[_0x83c6('0x2')](_0x83c6('0x4'),_0x83c6('0x6'),_0x83c6('0x3'))},'keyContent':{'type':Sequelize[_0x83c6('0x5')]},'idField':{'type':Sequelize[_0x83c6('0x5')]},'nameField':{'type':Sequelize[_0x83c6('0x5')]},'customField':{'type':Sequelize[_0x83c6('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x83c6('0x5')]}};
\ No newline at end of file
index 080d1f5..781b453 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7050=['util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','Dynamics365Field','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','params','includeAll','options','find','body','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x24c9f8,_0x274ba5){var _0x12316d=function(_0x5d571f){while(--_0x5d571f){_0x24c9f8['push'](_0x24c9f8['shift']());}};_0x12316d(++_0x274ba5);}(_0x7050,0x126));var _0x0705=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0x7050[_0x30c649];return _0x3edfb9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0705('0x0'));var zipdir=require(_0x0705('0x1'));var jsonpatch=require(_0x0705('0x2'));var rp=require('request-promise');var moment=require(_0x0705('0x3'));var BPromise=require(_0x0705('0x4'));var Mustache=require(_0x0705('0x5'));var util=require(_0x0705('0x6'));var path=require(_0x0705('0x7'));var sox=require(_0x0705('0x8'));var csv=require(_0x0705('0x9'));var ejs=require(_0x0705('0xa'));var fs=require('fs');var fs_extra=require(_0x0705('0xb'));var _=require(_0x0705('0xc'));var squel=require(_0x0705('0xd'));var crypto=require('crypto');var jsforce=require(_0x0705('0xe'));var deskjs=require(_0x0705('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0705('0x10'));var Papa=require(_0x0705('0x11'));var Redis=require(_0x0705('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x0705('0x13'));var as=require(_0x0705('0x14'));var hardwareService=require(_0x0705('0x15'));var logger=require('../../config/logger')(_0x0705('0x16'));var utils=require(_0x0705('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0705('0x18'));var db=require(_0x0705('0x19'))['db'];function respondWithStatusCode(_0x46ce8b,_0x42f63b){_0x42f63b=_0x42f63b||0xcc;return function(_0x489059){if(_0x489059){return _0x46ce8b[_0x0705('0x1a')](_0x42f63b);}return _0x46ce8b[_0x0705('0x1b')](_0x42f63b)[_0x0705('0x1c')]();};}function respondWithResult(_0xff16f6,_0x549adb){_0x549adb=_0x549adb||0xc8;return function(_0x36dbb4){if(_0x36dbb4){return _0xff16f6['status'](_0x549adb)[_0x0705('0x1d')](_0x36dbb4);}};}function respondWithFilteredResult(_0x3b00a2,_0x1e0cc6){return function(_0x199957){if(_0x199957){var _0x195887=typeof _0x1e0cc6['offset']===_0x0705('0x1e')&&typeof _0x1e0cc6[_0x0705('0x1f')]===_0x0705('0x1e');var _0x36f05b=_0x199957[_0x0705('0x20')];var _0x176e75=_0x195887?0x0:_0x1e0cc6[_0x0705('0x21')];var _0x3ef25a=_0x195887?_0x199957[_0x0705('0x20')]:_0x1e0cc6[_0x0705('0x21')]+_0x1e0cc6[_0x0705('0x1f')];var _0x42c28e;if(_0x3ef25a>=_0x36f05b){_0x3ef25a=_0x36f05b;_0x42c28e=0xc8;}else{_0x42c28e=0xce;}_0x3b00a2[_0x0705('0x1b')](_0x42c28e);return _0x3b00a2['set'](_0x0705('0x22'),_0x176e75+'-'+_0x3ef25a+'/'+_0x36f05b)[_0x0705('0x1d')](_0x199957);}return null;};}function patchUpdates(_0xd157c){return function(_0x459146){try{jsonpatch[_0x0705('0x23')](_0x459146,_0xd157c,!![]);}catch(_0x42e650){return BPromise[_0x0705('0x24')](_0x42e650);}return _0x459146['save']();};}function saveUpdates(_0x2e370f,_0x4bb42c){return function(_0x548980){if(_0x548980){return _0x548980[_0x0705('0x25')](_0x2e370f)['then'](function(_0x14d52e){return _0x14d52e;});}return null;};}function removeEntity(_0x30f8a1,_0xa9cee5){return function(_0x4902c7){if(_0x4902c7){return _0x4902c7[_0x0705('0x26')]()[_0x0705('0x27')](function(){_0x30f8a1['status'](0xcc)[_0x0705('0x1c')]();});}};}function handleEntityNotFound(_0x19ca29,_0x418a6b){return function(_0x59d735){if(!_0x59d735){_0x19ca29[_0x0705('0x1a')](0x194);}return _0x59d735;};}function handleError(_0x349b02,_0x4b3517){_0x4b3517=_0x4b3517||0x1f4;return function(_0x47bb67){logger[_0x0705('0x28')](_0x47bb67[_0x0705('0x29')]);if(_0x47bb67[_0x0705('0x2a')]){delete _0x47bb67['name'];}_0x349b02[_0x0705('0x1b')](_0x4b3517)[_0x0705('0x2b')](_0x47bb67);};}exports[_0x0705('0x2c')]=function(_0x202086,_0x2bc836){var _0x696298={},_0x1650ec={},_0x2256a6={'count':0x0,'rows':[]};var _0x2fe18b=_[_0x0705('0x2d')](db[_0x0705('0x2e')][_0x0705('0x2f')],function(_0x340047){return{'name':_0x340047[_0x0705('0x30')],'type':_0x340047[_0x0705('0x31')][_0x0705('0x32')]};});_0x1650ec['model']=_[_0x0705('0x2d')](_0x2fe18b,_0x0705('0x2a'));_0x1650ec[_0x0705('0x33')]=_[_0x0705('0x34')](_0x202086[_0x0705('0x33')]);_0x1650ec[_0x0705('0x35')]=_[_0x0705('0x36')](_0x1650ec[_0x0705('0x37')],_0x1650ec[_0x0705('0x33')]);_0x696298['attributes']=_['intersection'](_0x1650ec[_0x0705('0x37')],qs[_0x0705('0x38')](_0x202086[_0x0705('0x33')][_0x0705('0x38')]));_0x696298[_0x0705('0x39')]=_0x696298[_0x0705('0x39')][_0x0705('0x3a')]?_0x696298[_0x0705('0x39')]:_0x1650ec[_0x0705('0x37')];if(!_0x202086['query'][_0x0705('0x3b')]('nolimit')){_0x696298[_0x0705('0x1f')]=qs[_0x0705('0x1f')](_0x202086[_0x0705('0x33')][_0x0705('0x1f')]);_0x696298[_0x0705('0x21')]=qs[_0x0705('0x21')](_0x202086[_0x0705('0x33')][_0x0705('0x21')]);}_0x696298[_0x0705('0x3c')]=qs[_0x0705('0x3d')](_0x202086[_0x0705('0x33')][_0x0705('0x3d')]);_0x696298[_0x0705('0x3e')]=qs[_0x0705('0x35')](_[_0x0705('0x3f')](_0x202086[_0x0705('0x33')],_0x1650ec[_0x0705('0x35')]),_0x2fe18b);if(_0x202086[_0x0705('0x33')][_0x0705('0x40')]){_0x696298[_0x0705('0x3e')]=_[_0x0705('0x41')](_0x696298[_0x0705('0x3e')],{'$or':_[_0x0705('0x2d')](_0x2fe18b,function(_0x4a24ea){if(_0x4a24ea['type']!==_0x0705('0x42')){var _0x47bfa2={};_0x47bfa2[_0x4a24ea[_0x0705('0x2a')]]={'$like':'%'+_0x202086['query'][_0x0705('0x40')]+'%'};return _0x47bfa2;}})});}_0x696298=_[_0x0705('0x41')]({},_0x696298,_0x202086['options']);var _0x3b5c61={'where':_0x696298['where']};return db[_0x0705('0x2e')]['count'](_0x3b5c61)[_0x0705('0x27')](function(_0x3a3864){_0x2256a6[_0x0705('0x20')]=_0x3a3864;if(_0x202086['query']['includeAll']){_0x696298[_0x0705('0x43')]=[{'all':!![]}];}return db[_0x0705('0x2e')][_0x0705('0x44')](_0x696298);})[_0x0705('0x27')](function(_0xcbf9fa){_0x2256a6['rows']=_0xcbf9fa;return _0x2256a6;})[_0x0705('0x27')](respondWithFilteredResult(_0x2bc836,_0x696298))[_0x0705('0x45')](handleError(_0x2bc836,null));};exports['show']=function(_0x356807,_0x5cfbb9){var _0xa8447b={'raw':!![],'where':{'id':_0x356807[_0x0705('0x46')]['id']}},_0x2cd372={};_0x2cd372[_0x0705('0x37')]=_[_0x0705('0x34')](db[_0x0705('0x2e')][_0x0705('0x2f')]);_0x2cd372[_0x0705('0x33')]=_[_0x0705('0x34')](_0x356807[_0x0705('0x33')]);_0x2cd372['filters']=_[_0x0705('0x36')](_0x2cd372[_0x0705('0x37')],_0x2cd372[_0x0705('0x33')]);_0xa8447b[_0x0705('0x39')]=_['intersection'](_0x2cd372[_0x0705('0x37')],qs[_0x0705('0x38')](_0x356807[_0x0705('0x33')][_0x0705('0x38')]));_0xa8447b['attributes']=_0xa8447b[_0x0705('0x39')][_0x0705('0x3a')]?_0xa8447b[_0x0705('0x39')]:_0x2cd372[_0x0705('0x37')];if(_0x356807['query'][_0x0705('0x47')]){_0xa8447b[_0x0705('0x43')]=[{'all':!![]}];}_0xa8447b=_[_0x0705('0x41')]({},_0xa8447b,_0x356807[_0x0705('0x48')]);return db[_0x0705('0x2e')][_0x0705('0x49')](_0xa8447b)[_0x0705('0x27')](handleEntityNotFound(_0x5cfbb9,null))[_0x0705('0x27')](respondWithResult(_0x5cfbb9,null))['catch'](handleError(_0x5cfbb9,null));};exports['create']=function(_0x792faa,_0x4ece2c){return db['Dynamics365Field']['create'](_0x792faa[_0x0705('0x4a')],{})['then'](respondWithResult(_0x4ece2c,0xc9))[_0x0705('0x45')](handleError(_0x4ece2c,null));};exports[_0x0705('0x25')]=function(_0x2e9d8f,_0x1a8ea1){if(_0x2e9d8f[_0x0705('0x4a')]['id']){delete _0x2e9d8f['body']['id'];}return db[_0x0705('0x2e')][_0x0705('0x49')]({'where':{'id':_0x2e9d8f[_0x0705('0x46')]['id']}})[_0x0705('0x27')](handleEntityNotFound(_0x1a8ea1,null))['then'](saveUpdates(_0x2e9d8f[_0x0705('0x4a')],null))[_0x0705('0x27')](respondWithResult(_0x1a8ea1,null))[_0x0705('0x45')](handleError(_0x1a8ea1,null));};exports[_0x0705('0x26')]=function(_0x689fa4,_0x369617){return db[_0x0705('0x2e')][_0x0705('0x49')]({'where':{'id':_0x689fa4['params']['id']}})[_0x0705('0x27')](handleEntityNotFound(_0x369617,null))[_0x0705('0x27')](removeEntity(_0x369617,null))['catch'](handleError(_0x369617,null));};
\ No newline at end of file
+var _0x8393=['hasOwnProperty','nolimit','limit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','rows','show','params','find','catch','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','name','send','index','map','Dynamics365Field','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x5bcc80,_0x222063){var _0x508657=function(_0x60aac4){while(--_0x60aac4){_0x5bcc80['push'](_0x5bcc80['shift']());}};_0x508657(++_0x222063);}(_0x8393,0xf1));var _0x3839=function(_0x4a9b8b,_0x500c25){_0x4a9b8b=_0x4a9b8b-0x0;var _0x4c37cf=_0x8393[_0x4a9b8b];return _0x4c37cf;};'use strict';var emlformat=require(_0x3839('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3839('0x1'));var rp=require(_0x3839('0x2'));var moment=require(_0x3839('0x3'));var BPromise=require(_0x3839('0x4'));var Mustache=require(_0x3839('0x5'));var util=require(_0x3839('0x6'));var path=require(_0x3839('0x7'));var sox=require(_0x3839('0x8'));var csv=require(_0x3839('0x9'));var ejs=require(_0x3839('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3839('0xb'));var squel=require(_0x3839('0xc'));var crypto=require('crypto');var jsforce=require(_0x3839('0xd'));var deskjs=require(_0x3839('0xe'));var toCsv=require(_0x3839('0x9'));var querystring=require(_0x3839('0xf'));var Papa=require(_0x3839('0x10'));var Redis=require(_0x3839('0x11'));var authService=require(_0x3839('0x12'));var qs=require(_0x3839('0x13'));var as=require(_0x3839('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3839('0x15'))('api');var utils=require(_0x3839('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x3839('0x17'));var db=require(_0x3839('0x18'))['db'];function respondWithStatusCode(_0x431214,_0x104a36){_0x104a36=_0x104a36||0xcc;return function(_0x56fef1){if(_0x56fef1){return _0x431214['sendStatus'](_0x104a36);}return _0x431214[_0x3839('0x19')](_0x104a36)[_0x3839('0x1a')]();};}function respondWithResult(_0x430679,_0x58781e){_0x58781e=_0x58781e||0xc8;return function(_0xdd5f8b){if(_0xdd5f8b){return _0x430679[_0x3839('0x19')](_0x58781e)[_0x3839('0x1b')](_0xdd5f8b);}};}function respondWithFilteredResult(_0x2346a0,_0x15f6ac){return function(_0x3f8437){if(_0x3f8437){var _0x490263=typeof _0x15f6ac[_0x3839('0x1c')]==='undefined'&&typeof _0x15f6ac['limit']===_0x3839('0x1d');var _0x1be837=_0x3f8437[_0x3839('0x1e')];var _0x187c90=_0x490263?0x0:_0x15f6ac[_0x3839('0x1c')];var _0x3363d9=_0x490263?_0x3f8437[_0x3839('0x1e')]:_0x15f6ac[_0x3839('0x1c')]+_0x15f6ac['limit'];var _0x59f6d5;if(_0x3363d9>=_0x1be837){_0x3363d9=_0x1be837;_0x59f6d5=0xc8;}else{_0x59f6d5=0xce;}_0x2346a0[_0x3839('0x19')](_0x59f6d5);return _0x2346a0[_0x3839('0x1f')](_0x3839('0x20'),_0x187c90+'-'+_0x3363d9+'/'+_0x1be837)['json'](_0x3f8437);}return null;};}function patchUpdates(_0x164c7e){return function(_0x2abdbf){try{jsonpatch['apply'](_0x2abdbf,_0x164c7e,!![]);}catch(_0x480ac4){return BPromise[_0x3839('0x21')](_0x480ac4);}return _0x2abdbf[_0x3839('0x22')]();};}function saveUpdates(_0x3d12ff,_0x2bd888){return function(_0x40bc49){if(_0x40bc49){return _0x40bc49[_0x3839('0x23')](_0x3d12ff)[_0x3839('0x24')](function(_0xeaa2cf){return _0xeaa2cf;});}return null;};}function removeEntity(_0x43e599,_0x54046b){return function(_0x203eff){if(_0x203eff){return _0x203eff[_0x3839('0x25')]()[_0x3839('0x24')](function(){_0x43e599[_0x3839('0x19')](0xcc)[_0x3839('0x1a')]();});}};}function handleEntityNotFound(_0x33d6fe,_0xd35486){return function(_0x50e7f1){if(!_0x50e7f1){_0x33d6fe['sendStatus'](0x194);}return _0x50e7f1;};}function handleError(_0x32e908,_0x36a4){_0x36a4=_0x36a4||0x1f4;return function(_0x3dcd19){logger[_0x3839('0x26')](_0x3dcd19['stack']);if(_0x3dcd19[_0x3839('0x27')]){delete _0x3dcd19[_0x3839('0x27')];}_0x32e908[_0x3839('0x19')](_0x36a4)[_0x3839('0x28')](_0x3dcd19);};}exports[_0x3839('0x29')]=function(_0x5011d5,_0x341ca4){var _0x3e4b60={},_0x2eaef0={},_0xe01249={'count':0x0,'rows':[]};var _0x490523=_[_0x3839('0x2a')](db[_0x3839('0x2b')]['rawAttributes'],function(_0x27fbb0){return{'name':_0x27fbb0[_0x3839('0x2c')],'type':_0x27fbb0[_0x3839('0x2d')][_0x3839('0x2e')]};});_0x2eaef0[_0x3839('0x2f')]=_['map'](_0x490523,_0x3839('0x27'));_0x2eaef0[_0x3839('0x30')]=_[_0x3839('0x31')](_0x5011d5[_0x3839('0x30')]);_0x2eaef0[_0x3839('0x32')]=_[_0x3839('0x33')](_0x2eaef0['model'],_0x2eaef0[_0x3839('0x30')]);_0x3e4b60[_0x3839('0x34')]=_[_0x3839('0x33')](_0x2eaef0[_0x3839('0x2f')],qs[_0x3839('0x35')](_0x5011d5[_0x3839('0x30')][_0x3839('0x35')]));_0x3e4b60[_0x3839('0x34')]=_0x3e4b60[_0x3839('0x34')][_0x3839('0x36')]?_0x3e4b60[_0x3839('0x34')]:_0x2eaef0[_0x3839('0x2f')];if(!_0x5011d5['query'][_0x3839('0x37')](_0x3839('0x38'))){_0x3e4b60[_0x3839('0x39')]=qs[_0x3839('0x39')](_0x5011d5[_0x3839('0x30')]['limit']);_0x3e4b60[_0x3839('0x1c')]=qs[_0x3839('0x1c')](_0x5011d5[_0x3839('0x30')][_0x3839('0x1c')]);}_0x3e4b60[_0x3839('0x3a')]=qs['sort'](_0x5011d5[_0x3839('0x30')][_0x3839('0x3b')]);_0x3e4b60['where']=qs['filters'](_['pick'](_0x5011d5['query'],_0x2eaef0[_0x3839('0x32')]),_0x490523);if(_0x5011d5[_0x3839('0x30')]['filter']){_0x3e4b60[_0x3839('0x3c')]=_[_0x3839('0x3d')](_0x3e4b60['where'],{'$or':_['map'](_0x490523,function(_0x5cf370){if(_0x5cf370[_0x3839('0x2d')]!==_0x3839('0x3e')){var _0x5a0ff1={};_0x5a0ff1[_0x5cf370[_0x3839('0x27')]]={'$like':'%'+_0x5011d5[_0x3839('0x30')][_0x3839('0x3f')]+'%'};return _0x5a0ff1;}})});}_0x3e4b60=_['merge']({},_0x3e4b60,_0x5011d5[_0x3839('0x40')]);var _0x14f14e={'where':_0x3e4b60[_0x3839('0x3c')]};return db[_0x3839('0x2b')][_0x3839('0x1e')](_0x14f14e)['then'](function(_0x5b82d1){_0xe01249['count']=_0x5b82d1;if(_0x5011d5['query'][_0x3839('0x41')]){_0x3e4b60[_0x3839('0x42')]=[{'all':!![]}];}return db[_0x3839('0x2b')]['findAll'](_0x3e4b60);})['then'](function(_0x11d689){_0xe01249[_0x3839('0x43')]=_0x11d689;return _0xe01249;})[_0x3839('0x24')](respondWithFilteredResult(_0x341ca4,_0x3e4b60))['catch'](handleError(_0x341ca4,null));};exports[_0x3839('0x44')]=function(_0x4e579f,_0x95f68){var _0x2f1923={'raw':!![],'where':{'id':_0x4e579f[_0x3839('0x45')]['id']}},_0x93d352={};_0x93d352[_0x3839('0x2f')]=_[_0x3839('0x31')](db['Dynamics365Field']['rawAttributes']);_0x93d352[_0x3839('0x30')]=_[_0x3839('0x31')](_0x4e579f['query']);_0x93d352['filters']=_[_0x3839('0x33')](_0x93d352['model'],_0x93d352[_0x3839('0x30')]);_0x2f1923[_0x3839('0x34')]=_[_0x3839('0x33')](_0x93d352['model'],qs[_0x3839('0x35')](_0x4e579f['query'][_0x3839('0x35')]));_0x2f1923['attributes']=_0x2f1923[_0x3839('0x34')][_0x3839('0x36')]?_0x2f1923[_0x3839('0x34')]:_0x93d352[_0x3839('0x2f')];if(_0x4e579f['query'][_0x3839('0x41')]){_0x2f1923[_0x3839('0x42')]=[{'all':!![]}];}_0x2f1923=_[_0x3839('0x3d')]({},_0x2f1923,_0x4e579f['options']);return db[_0x3839('0x2b')][_0x3839('0x46')](_0x2f1923)[_0x3839('0x24')](handleEntityNotFound(_0x95f68,null))[_0x3839('0x24')](respondWithResult(_0x95f68,null))[_0x3839('0x47')](handleError(_0x95f68,null));};exports[_0x3839('0x48')]=function(_0x3afb33,_0x505c6c){return db[_0x3839('0x2b')][_0x3839('0x48')](_0x3afb33[_0x3839('0x49')],{})[_0x3839('0x24')](respondWithResult(_0x505c6c,0xc9))[_0x3839('0x47')](handleError(_0x505c6c,null));};exports[_0x3839('0x23')]=function(_0x1f2631,_0x46985a){if(_0x1f2631['body']['id']){delete _0x1f2631['body']['id'];}return db[_0x3839('0x2b')][_0x3839('0x46')]({'where':{'id':_0x1f2631[_0x3839('0x45')]['id']}})[_0x3839('0x24')](handleEntityNotFound(_0x46985a,null))[_0x3839('0x24')](saveUpdates(_0x1f2631[_0x3839('0x49')],null))[_0x3839('0x24')](respondWithResult(_0x46985a,null))[_0x3839('0x47')](handleError(_0x46985a,null));};exports[_0x3839('0x25')]=function(_0x31d758,_0x1b0414){return db[_0x3839('0x2b')]['find']({'where':{'id':_0x31d758[_0x3839('0x45')]['id']}})[_0x3839('0x24')](handleEntityNotFound(_0x1b0414,null))[_0x3839('0x24')](removeEntity(_0x1b0414,null))[_0x3839('0x47')](handleError(_0x1b0414,null));};
\ No newline at end of file
index 1a4a2a9..6f31b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd1e=['rimraf','../../config/environment','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3b3362,_0x202631){var _0x223f5b=function(_0x21a21d){while(--_0x21a21d){_0x3b3362['push'](_0x3b3362['shift']());}};_0x223f5b(++_0x202631);}(_0xcd1e,0x1a9));var _0xecd1=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xcd1e[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xecd1('0x0'));var util=require(_0xecd1('0x1'));var logger=require(_0xecd1('0x2'))(_0xecd1('0x3'));var moment=require('moment');var BPromise=require(_0xecd1('0x4'));var rp=require(_0xecd1('0x5'));var fs=require('fs');var path=require(_0xecd1('0x6'));var rimraf=require(_0xecd1('0x7'));var config=require(_0xecd1('0x8'));var attributes=require('./intDynamics365Field.attributes');module[_0xecd1('0x9')]=function(_0x19013b,_0x4613b2){return _0x19013b[_0xecd1('0xa')](_0xecd1('0xb'),attributes,{'tableName':_0xecd1('0xc'),'paranoid':![],'indexes':[{'name':_0xecd1('0xd'),'fields':[_0xecd1('0xe'),_0xecd1('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd54d=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Field.attributes','exports','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','lodash','api'];(function(_0x3e87dd,_0x238b97){var _0x5aa4a9=function(_0x44d64b){while(--_0x44d64b){_0x3e87dd['push'](_0x3e87dd['shift']());}};_0x5aa4a9(++_0x238b97);}(_0xd54d,0x191));var _0xdd54=function(_0xb2d5e0,_0x376535){_0xb2d5e0=_0xb2d5e0-0x0;var _0x244aab=_0xd54d[_0xb2d5e0];return _0x244aab;};'use strict';var _=require(_0xdd54('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xdd54('0x1'));var moment=require(_0xdd54('0x2'));var BPromise=require(_0xdd54('0x3'));var rp=require(_0xdd54('0x4'));var fs=require('fs');var path=require(_0xdd54('0x5'));var rimraf=require(_0xdd54('0x6'));var config=require(_0xdd54('0x7'));var attributes=require(_0xdd54('0x8'));module[_0xdd54('0x9')]=function(_0x47fe95,_0x4a56cc){return _0x47fe95['define'](_0xdd54('0xa'),attributes,{'tableName':_0xdd54('0xb'),'paranoid':![],'indexes':[{'name':_0xdd54('0xc'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 24c039a..3bb4c06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x218b=['Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','Dynamics365Field,\x20%s,\x20%s','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug'];(function(_0x1ea050,_0x47f27c){var _0x77abe0=function(_0x44bcda){while(--_0x44bcda){_0x1ea050['push'](_0x1ea050['shift']());}};_0x77abe0(++_0x47f27c);}(_0x218b,0x7e));var _0xb218=function(_0x2366fd,_0x54cc93){_0x2366fd=_0x2366fd-0x0;var _0x1e5fd0=_0x218b[_0x2366fd];return _0x1e5fd0;};'use strict';var _=require(_0xb218('0x0'));var util=require(_0xb218('0x1'));var moment=require(_0xb218('0x2'));var BPromise=require('bluebird');var rs=require(_0xb218('0x3'));var fs=require('fs');var Redis=require(_0xb218('0x4'));var db=require(_0xb218('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb218('0x6'))('rpc');var config=require(_0xb218('0x7'));var jayson=require(_0xb218('0x8'));var client=jayson[_0xb218('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x198d69,_0x5e6327,_0x3573e3){return new BPromise(function(_0x4f03c1,_0x402b08){return client['request'](_0x198d69,_0x3573e3)[_0xb218('0xa')](function(_0x233446){logger[_0xb218('0xb')]('Dynamics365Field,\x20%s,\x20%s',_0x5e6327,_0xb218('0xc'));logger[_0xb218('0xd')](_0xb218('0xe'),_0x5e6327,_0xb218('0xc'),JSON[_0xb218('0xf')](_0x233446));if(_0x233446['error']){if(_0x233446[_0xb218('0x10')][_0xb218('0x11')]===0x1f4){logger[_0xb218('0x10')](_0xb218('0x12'),_0x5e6327,_0x233446[_0xb218('0x10')][_0xb218('0x13')]);return _0x402b08(_0x233446['error']['message']);}logger[_0xb218('0x10')](_0xb218('0x12'),_0x5e6327,_0x233446[_0xb218('0x10')]['message']);return _0x4f03c1(_0x233446[_0xb218('0x10')][_0xb218('0x13')]);}else{logger['info'](_0xb218('0x12'),_0x5e6327,_0xb218('0xc'));_0x4f03c1(_0x233446['result'][_0xb218('0x13')]);}})['catch'](function(_0x10f564){logger[_0xb218('0x10')](_0xb218('0x12'),_0x5e6327,_0x10f564);_0x402b08(_0x10f564);});});}
\ No newline at end of file
+var _0xe21f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x12beb5,_0x498b31){var _0x351a16=function(_0x881110){while(--_0x881110){_0x12beb5['push'](_0x12beb5['shift']());}};_0x351a16(++_0x498b31);}(_0xe21f,0x155));var _0xfe21=function(_0x5dc3b4,_0x13f0c8){_0x5dc3b4=_0x5dc3b4-0x0;var _0x18a06d=_0xe21f[_0x5dc3b4];return _0x18a06d;};'use strict';var _=require(_0xfe21('0x0'));var util=require(_0xfe21('0x1'));var moment=require(_0xfe21('0x2'));var BPromise=require(_0xfe21('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfe21('0x4'));var db=require(_0xfe21('0x5'))['db'];var utils=require(_0xfe21('0x6'));var logger=require(_0xfe21('0x7'))(_0xfe21('0x8'));var config=require(_0xfe21('0x9'));var jayson=require(_0xfe21('0xa'));var client=jayson[_0xfe21('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x549fa0,_0x5039c1,_0x5b3412){return new BPromise(function(_0x3c2616,_0xdb152c){return client[_0xfe21('0xc')](_0x549fa0,_0x5b3412)[_0xfe21('0xd')](function(_0x538bce){logger[_0xfe21('0xe')](_0xfe21('0xf'),_0x5039c1,_0xfe21('0x10'));logger[_0xfe21('0x11')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x5039c1,'request\x20sent',JSON['stringify'](_0x538bce));if(_0x538bce[_0xfe21('0x12')]){if(_0x538bce['error'][_0xfe21('0x13')]===0x1f4){logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x5039c1,_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);return _0xdb152c(_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);}logger[_0xfe21('0x12')](_0xfe21('0xf'),_0x5039c1,_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);return _0x3c2616(_0x538bce[_0xfe21('0x12')][_0xfe21('0x14')]);}else{logger[_0xfe21('0xe')](_0xfe21('0xf'),_0x5039c1,_0xfe21('0x10'));_0x3c2616(_0x538bce[_0xfe21('0x15')][_0xfe21('0x14')]);}})[_0xfe21('0x16')](function(_0x2d2114){logger[_0xfe21('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x5039c1,_0x2d2114);_0xdb152c(_0x2d2114);});});}
\ No newline at end of file
index de610fc..405d5f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab07=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','put','update','delete','exports','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xab07,0xf1));var _0x7ab0=function(_0x4914e2,_0x48be8f){_0x4914e2=_0x4914e2-0x0;var _0x2dcd07=_0xab07[_0x4914e2];return _0x2dcd07;};'use strict';var multer=require('multer');var util=require(_0x7ab0('0x0'));var path=require(_0x7ab0('0x1'));var timeout=require(_0x7ab0('0x2'));var express=require(_0x7ab0('0x3'));var router=express[_0x7ab0('0x4')]();var fs_extra=require(_0x7ab0('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7ab0('0x6'));var config=require(_0x7ab0('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0x7ab0('0x8')]('/',auth[_0x7ab0('0x9')](),controller['index']);router[_0x7ab0('0x8')](_0x7ab0('0xa'),auth[_0x7ab0('0x9')](),controller[_0x7ab0('0xb')]);router[_0x7ab0('0x8')]('/:id/configurations',auth[_0x7ab0('0x9')](),controller[_0x7ab0('0xc')]);router['get'](_0x7ab0('0xd'),auth[_0x7ab0('0x9')](),controller[_0x7ab0('0xe')]);router[_0x7ab0('0xf')]('/',auth[_0x7ab0('0x9')](),controller[_0x7ab0('0x10')]);router[_0x7ab0('0xf')](_0x7ab0('0x11'),auth[_0x7ab0('0x9')](),controller['addConfiguration']);router[_0x7ab0('0x12')](_0x7ab0('0xa'),auth[_0x7ab0('0x9')](),controller[_0x7ab0('0x13')]);router[_0x7ab0('0x14')](_0x7ab0('0xa'),auth[_0x7ab0('0x9')](),controller['destroy']);module[_0x7ab0('0x15')]=router;
\ No newline at end of file
+var _0xf0f0=['multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','show','/:id/configurations','getFields','post','create','addConfiguration','/:id','update','delete','destroy','exports'];(function(_0x37d3e0,_0x51d1f4){var _0x5512a3=function(_0x496e6b){while(--_0x496e6b){_0x37d3e0['push'](_0x37d3e0['shift']());}};_0x5512a3(++_0x51d1f4);}(_0xf0f0,0x13b));var _0x0f0f=function(_0x235976,_0x3bb7f3){_0x235976=_0x235976-0x0;var _0xe5627=_0xf0f0[_0x235976];return _0xe5627;};'use strict';var multer=require(_0x0f0f('0x0'));var util=require(_0x0f0f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0f0f('0x2')]();var fs_extra=require(_0x0f0f('0x3'));var auth=require(_0x0f0f('0x4'));var interaction=require(_0x0f0f('0x5'));var config=require(_0x0f0f('0x6'));var controller=require(_0x0f0f('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x0f0f('0x8')]('/:id',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xa')]);router['get'](_0x0f0f('0xb'),auth[_0x0f0f('0x9')](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xc')]);router[_0x0f0f('0xd')]('/',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xe')]);router[_0x0f0f('0xd')]('/:id/configurations',auth[_0x0f0f('0x9')](),controller[_0x0f0f('0xf')]);router['put'](_0x0f0f('0x10'),auth[_0x0f0f('0x9')](),controller[_0x0f0f('0x11')]);router[_0x0f0f('0x12')](_0x0f0f('0x10'),auth[_0x0f0f('0x9')](),controller[_0x0f0f('0x13')]);module[_0x0f0f('0x14')]=router;
\ No newline at end of file
index 2d2e409..3edb936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['username','remoteUri','STRING'];(function(_0x289e64,_0x5adb3c){var _0x30246c=function(_0x1bf7f6){while(--_0x1bf7f6){_0x289e64['push'](_0x289e64['shift']());}};_0x30246c(++_0x5adb3c);}(_0x524e,0x15e));var _0xe524=function(_0x3a70f1,_0x64cae2){_0x3a70f1=_0x3a70f1-0x0;var _0x2a356f=_0x524e[_0x3a70f1];return _0x2a356f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe524('0x0')]},'description':{'type':Sequelize[_0xe524('0x0')]},'username':{'type':Sequelize[_0xe524('0x0')],'unique':_0xe524('0x1')},'apiKey':{'type':Sequelize[_0xe524('0x0')]},'remoteUri':{'type':Sequelize[_0xe524('0x0')],'unique':_0xe524('0x2')},'serverUrl':{'type':Sequelize[_0xe524('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0x4888=['exports','STRING','username'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x4888,0x198));var _0x8488=function(_0x51a9d0,_0xbebd29){_0x51a9d0=_0x51a9d0-0x0;var _0x4db0ee=_0x4888[_0x51a9d0];return _0x4db0ee;};'use strict';var Sequelize=require('sequelize');module[_0x8488('0x0')]={'name':{'type':Sequelize[_0x8488('0x1')]},'description':{'type':Sequelize[_0x8488('0x1')]},'username':{'type':Sequelize[_0x8488('0x1')],'unique':_0x8488('0x2')},'apiKey':{'type':Sequelize[_0x8488('0x1')]},'remoteUri':{'type':Sequelize[_0x8488('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x8488('0x1')],'allowNull':![]}};
\ No newline at end of file
index ee84b50..89b3072 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063c=['error','stack','name','send','index','FreshdeskAccount','rawAttributes','key','map','query','keys','filters','intersection','model','attributes','fields','length','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','findOne','FreshdeskConfiguration','hasOwnProperty','nolimit','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshdeskField','Descriptions','getFields','apiKey','remoteUri','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','toString','base64','requester','agent','description','priority','group','remove','includes','custom_text','custom_dropdown','label','choices','capitalize','test','statusCode','stringify','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','then'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x063c,0xba));var _0xc063=function(_0x12774f,_0x179b48){_0x12774f=_0x12774f-0x0;var _0x15f66e=_0x063c[_0x12774f];return _0x15f66e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc063('0x0'));var zipdir=require(_0xc063('0x1'));var jsonpatch=require(_0xc063('0x2'));var rp=require(_0xc063('0x3'));var moment=require(_0xc063('0x4'));var BPromise=require(_0xc063('0x5'));var Mustache=require('mustache');var util=require(_0xc063('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc063('0x7'));var fs=require('fs');var fs_extra=require(_0xc063('0x8'));var _=require('lodash');var squel=require(_0xc063('0x9'));var crypto=require(_0xc063('0xa'));var jsforce=require(_0xc063('0xb'));var deskjs=require(_0xc063('0xc'));var toCsv=require('to-csv');var querystring=require(_0xc063('0xd'));var Papa=require(_0xc063('0xe'));var Redis=require('ioredis');var authService=require(_0xc063('0xf'));var qs=require(_0xc063('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc063('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc063('0x12'));var licenseUtil=require(_0xc063('0x13'));var db=require('../../mysqldb')['db'];var integrations=require(_0xc063('0x14'));function respondWithStatusCode(_0x5d0d2a,_0x14f55e){_0x14f55e=_0x14f55e||0xcc;return function(_0x198b7f){if(_0x198b7f){return _0x5d0d2a[_0xc063('0x15')](_0x14f55e);}return _0x5d0d2a['status'](_0x14f55e)[_0xc063('0x16')]();};}function respondWithResult(_0x1249b2,_0x21b8da){_0x21b8da=_0x21b8da||0xc8;return function(_0x1fb110){if(_0x1fb110){return _0x1249b2[_0xc063('0x17')](_0x21b8da)[_0xc063('0x18')](_0x1fb110);}};}function respondWithFilteredResult(_0xf7fe54,_0xac1724){return function(_0x3baaeb){if(_0x3baaeb){var _0x5a1279=typeof _0xac1724[_0xc063('0x19')]===_0xc063('0x1a')&&typeof _0xac1724['limit']===_0xc063('0x1a');var _0x167fb9=_0x3baaeb['count'];var _0x238ecb=_0x5a1279?0x0:_0xac1724[_0xc063('0x19')];var _0xf87f41=_0x5a1279?_0x3baaeb[_0xc063('0x1b')]:_0xac1724['offset']+_0xac1724[_0xc063('0x1c')];var _0x28d3ce;if(_0xf87f41>=_0x167fb9){_0xf87f41=_0x167fb9;_0x28d3ce=0xc8;}else{_0x28d3ce=0xce;}_0xf7fe54[_0xc063('0x17')](_0x28d3ce);return _0xf7fe54['set'](_0xc063('0x1d'),_0x238ecb+'-'+_0xf87f41+'/'+_0x167fb9)[_0xc063('0x18')](_0x3baaeb);}return null;};}function patchUpdates(_0x5741e0){return function(_0x63da37){try{jsonpatch[_0xc063('0x1e')](_0x63da37,_0x5741e0,!![]);}catch(_0x1af70d){return BPromise[_0xc063('0x1f')](_0x1af70d);}return _0x63da37[_0xc063('0x20')]();};}function saveUpdates(_0x4a82eb,_0x59c960){return function(_0x481cb1){if(_0x481cb1){return _0x481cb1[_0xc063('0x21')](_0x4a82eb)['then'](function(_0x4fb406){return _0x4fb406;});}return null;};}function removeEntity(_0x481a6b,_0x382f79){return function(_0x3e1040){if(_0x3e1040){return _0x3e1040[_0xc063('0x22')]()[_0xc063('0x23')](function(){_0x481a6b[_0xc063('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a0d10,_0x7317e7){return function(_0x52dde0){if(!_0x52dde0){_0x5a0d10[_0xc063('0x15')](0x194);}return _0x52dde0;};}function handleError(_0x43e592,_0x7db21a){_0x7db21a=_0x7db21a||0x1f4;return function(_0x93a4b1){logger[_0xc063('0x24')](_0x93a4b1[_0xc063('0x25')]);if(_0x93a4b1[_0xc063('0x26')]){delete _0x93a4b1[_0xc063('0x26')];}_0x43e592['status'](_0x7db21a)[_0xc063('0x27')](_0x93a4b1);};}exports[_0xc063('0x28')]=function(_0x5a623d,_0x3a18bd){var _0x3359cd={},_0xfd5976={},_0x3d02bd={'count':0x0,'rows':[]};var _0x343ba6=_['map'](db[_0xc063('0x29')][_0xc063('0x2a')],function(_0x55f71f){return{'name':_0x55f71f['fieldName'],'type':_0x55f71f['type'][_0xc063('0x2b')]};});_0xfd5976['model']=_[_0xc063('0x2c')](_0x343ba6,_0xc063('0x26'));_0xfd5976[_0xc063('0x2d')]=_[_0xc063('0x2e')](_0x5a623d['query']);_0xfd5976[_0xc063('0x2f')]=_[_0xc063('0x30')](_0xfd5976[_0xc063('0x31')],_0xfd5976['query']);_0x3359cd[_0xc063('0x32')]=_['intersection'](_0xfd5976[_0xc063('0x31')],qs[_0xc063('0x33')](_0x5a623d['query']['fields']));_0x3359cd[_0xc063('0x32')]=_0x3359cd['attributes'][_0xc063('0x34')]?_0x3359cd[_0xc063('0x32')]:_0xfd5976[_0xc063('0x31')];if(!_0x5a623d['query']['hasOwnProperty']('nolimit')){_0x3359cd[_0xc063('0x1c')]=qs['limit'](_0x5a623d[_0xc063('0x2d')]['limit']);_0x3359cd[_0xc063('0x19')]=qs[_0xc063('0x19')](_0x5a623d[_0xc063('0x2d')][_0xc063('0x19')]);}_0x3359cd['order']=qs[_0xc063('0x35')](_0x5a623d[_0xc063('0x2d')][_0xc063('0x35')]);_0x3359cd['where']=qs[_0xc063('0x2f')](_[_0xc063('0x36')](_0x5a623d[_0xc063('0x2d')],_0xfd5976[_0xc063('0x2f')]),_0x343ba6);if(_0x5a623d[_0xc063('0x2d')][_0xc063('0x37')]){_0x3359cd[_0xc063('0x38')]=_[_0xc063('0x39')](_0x3359cd[_0xc063('0x38')],{'$or':_[_0xc063('0x2c')](_0x343ba6,function(_0x5ccf8a){if(_0x5ccf8a[_0xc063('0x3a')]!==_0xc063('0x3b')){var _0x37ad4e={};_0x37ad4e[_0x5ccf8a[_0xc063('0x26')]]={'$like':'%'+_0x5a623d[_0xc063('0x2d')][_0xc063('0x37')]+'%'};return _0x37ad4e;}})});}_0x3359cd=_[_0xc063('0x39')]({},_0x3359cd,_0x5a623d[_0xc063('0x3c')]);var _0x57ab22={'where':_0x3359cd['where']};return db['FreshdeskAccount']['count'](_0x57ab22)[_0xc063('0x23')](function(_0x2d4c16){_0x3d02bd[_0xc063('0x1b')]=_0x2d4c16;if(_0x5a623d[_0xc063('0x2d')][_0xc063('0x3d')]){_0x3359cd[_0xc063('0x3e')]=[{'all':!![]}];}return db[_0xc063('0x29')][_0xc063('0x3f')](_0x3359cd);})['then'](function(_0x472663){_0x3d02bd[_0xc063('0x40')]=_0x472663;return _0x3d02bd;})[_0xc063('0x23')](respondWithFilteredResult(_0x3a18bd,_0x3359cd))[_0xc063('0x41')](handleError(_0x3a18bd,null));};exports[_0xc063('0x42')]=function(_0x53c694,_0x4ec474){var _0x510593={'raw':![],'where':{'id':_0x53c694[_0xc063('0x43')]['id']}},_0x2077df={};_0x2077df[_0xc063('0x31')]=_[_0xc063('0x2e')](db[_0xc063('0x29')][_0xc063('0x2a')]);_0x2077df[_0xc063('0x2d')]=_[_0xc063('0x2e')](_0x53c694['query']);_0x2077df[_0xc063('0x2f')]=_[_0xc063('0x30')](_0x2077df['model'],_0x2077df[_0xc063('0x2d')]);_0x510593[_0xc063('0x32')]=_['intersection'](_0x2077df[_0xc063('0x31')],qs[_0xc063('0x33')](_0x53c694[_0xc063('0x2d')][_0xc063('0x33')]));_0x510593['attributes']=_0x510593[_0xc063('0x32')][_0xc063('0x34')]?_0x510593[_0xc063('0x32')]:_0x2077df['model'];if(_0x53c694['query'][_0xc063('0x3d')]){_0x510593[_0xc063('0x3e')]=[{'all':!![]}];}_0x510593=_[_0xc063('0x39')]({},_0x510593,_0x53c694[_0xc063('0x3c')]);return db[_0xc063('0x29')]['find'](_0x510593)[_0xc063('0x23')](handleEntityNotFound(_0x4ec474,null))[_0xc063('0x23')](respondWithResult(_0x4ec474,null))[_0xc063('0x41')](handleError(_0x4ec474,null));};exports[_0xc063('0x44')]=function(_0x492850,_0x2d6548){return db[_0xc063('0x29')]['create'](_0x492850[_0xc063('0x45')],{})['then'](respondWithResult(_0x2d6548,0xc9))[_0xc063('0x41')](handleError(_0x2d6548,null));};exports[_0xc063('0x21')]=function(_0x253e6f,_0x1603c4){if(_0x253e6f['body']['id']){delete _0x253e6f[_0xc063('0x45')]['id'];}return db[_0xc063('0x29')][_0xc063('0x46')]({'where':{'id':_0x253e6f[_0xc063('0x43')]['id']}})[_0xc063('0x23')](handleEntityNotFound(_0x1603c4,null))['then'](saveUpdates(_0x253e6f[_0xc063('0x45')],null))['then'](respondWithResult(_0x1603c4,null))[_0xc063('0x41')](handleError(_0x1603c4,null));};exports[_0xc063('0x22')]=function(_0x151536,_0x3bd533){return db[_0xc063('0x29')][_0xc063('0x46')]({'where':{'id':_0x151536[_0xc063('0x43')]['id']}})[_0xc063('0x23')](handleEntityNotFound(_0x3bd533,null))[_0xc063('0x23')](removeEntity(_0x3bd533,null))[_0xc063('0x41')](handleError(_0x3bd533,null));};exports['getConfigurations']=function(_0x51a2a0,_0x16888f,_0x2e90c5){var _0x227f43={};var _0x337705={};var _0x4cd4a5;var _0x24bec2;return db[_0xc063('0x29')][_0xc063('0x47')]({'where':{'id':_0x51a2a0[_0xc063('0x43')]['id']}})[_0xc063('0x23')](handleEntityNotFound(_0x16888f,null))[_0xc063('0x23')](function(_0x571c86){if(_0x571c86){_0x4cd4a5=_0x571c86;_0x337705['model']=_[_0xc063('0x2e')](db[_0xc063('0x48')][_0xc063('0x2a')]);_0x337705[_0xc063('0x2d')]=_[_0xc063('0x2e')](_0x51a2a0[_0xc063('0x2d')]);_0x337705[_0xc063('0x2f')]=_[_0xc063('0x30')](_0x337705[_0xc063('0x31')],_0x337705[_0xc063('0x2d')]);_0x227f43[_0xc063('0x32')]=_[_0xc063('0x30')](_0x337705['model'],qs[_0xc063('0x33')](_0x51a2a0[_0xc063('0x2d')]['fields']));_0x227f43[_0xc063('0x32')]=_0x227f43['attributes'][_0xc063('0x34')]?_0x227f43[_0xc063('0x32')]:_0x337705[_0xc063('0x31')];_0x227f43['order']=qs[_0xc063('0x35')](_0x51a2a0['query'][_0xc063('0x35')]);_0x227f43[_0xc063('0x38')]=qs[_0xc063('0x2f')](_[_0xc063('0x36')](_0x51a2a0[_0xc063('0x2d')],_0x337705[_0xc063('0x2f')]));if(_0x51a2a0[_0xc063('0x2d')][_0xc063('0x37')]){_0x227f43['where']=_[_0xc063('0x39')](_0x227f43[_0xc063('0x38')],{'$or':_['map'](_0x227f43['attributes'],function(_0x46cf16){var _0x2a1bbb={};_0x2a1bbb[_0x46cf16]={'$like':'%'+_0x51a2a0[_0xc063('0x2d')][_0xc063('0x37')]+'%'};return _0x2a1bbb;})});}_0x227f43=_[_0xc063('0x39')]({},_0x227f43,_0x51a2a0[_0xc063('0x3c')]);return _0x4cd4a5['getConfigurations'](_0x227f43);}})[_0xc063('0x23')](function(_0x2b051e){if(_0x2b051e){_0x24bec2=_0x2b051e[_0xc063('0x34')];if(!_0x51a2a0[_0xc063('0x2d')][_0xc063('0x49')](_0xc063('0x4a'))){_0x227f43[_0xc063('0x1c')]=qs[_0xc063('0x1c')](_0x51a2a0[_0xc063('0x2d')][_0xc063('0x1c')]);_0x227f43[_0xc063('0x19')]=qs[_0xc063('0x19')](_0x51a2a0['query'][_0xc063('0x19')]);}return _0x4cd4a5[_0xc063('0x4b')](_0x227f43);}})['then'](function(_0x4eb00e){if(_0x4eb00e){return _0x4eb00e?{'count':_0x24bec2,'rows':_0x4eb00e}:null;}})[_0xc063('0x23')](respondWithResult(_0x16888f,null))[_0xc063('0x41')](handleError(_0x16888f,null));};exports[_0xc063('0x4c')]=function(_0x308260,_0x58d6a7,_0x4df805){if(_0x308260[_0xc063('0x45')]['id']){delete _0x308260[_0xc063('0x45')]['id'];}return db[_0xc063('0x29')][_0xc063('0x47')]({'where':{'id':_0x308260[_0xc063('0x43')]['id']}})[_0xc063('0x23')](handleEntityNotFound(_0x58d6a7,null))['then'](function(_0x1b9926){if(_0x1b9926){_0x308260[_0xc063('0x45')][_0xc063('0x4d')]=_0x1b9926['id'];_0x308260[_0xc063('0x45')][_0xc063('0x4e')]=integrations[_0xc063('0x4f')](_0x308260[_0xc063('0x45')][_0xc063('0x50')],_0x308260['body'][_0xc063('0x3a')]);_0x308260[_0xc063('0x45')]['Descriptions']=integrations[_0xc063('0x51')](_0x308260['body'][_0xc063('0x50')],_0x308260[_0xc063('0x45')][_0xc063('0x3a')]);return db['FreshdeskConfiguration'][_0xc063('0x44')](_0x308260['body'],{'include':[{'model':db['FreshdeskField'],'as':_0xc063('0x4e')},{'model':db[_0xc063('0x52')],'as':_0xc063('0x53')}]});}return null;})[_0xc063('0x23')](respondWithResult(_0x58d6a7,null))[_0xc063('0x41')](handleError(_0x58d6a7,null));};exports[_0xc063('0x54')]=function(_0x279d91,_0x5d1cfa,_0x142aa8){var _0x135a79='';return db[_0xc063('0x29')][_0xc063('0x47')]({'where':{'id':_0x279d91[_0xc063('0x43')]['id']},'attributes':['id','remoteUri',_0xc063('0x55')]})[_0xc063('0x23')](handleEntityNotFound(_0x5d1cfa,null))[_0xc063('0x23')](function(_0x578edd){if(_0x578edd){_0x135a79=_0x578edd[_0xc063('0x56')];var _0x26fa1a=_0x135a79[_0xc063('0x57')](-0x1);if(_0x26fa1a==='/'){_0x135a79=_0x135a79['substring'](0x0,_0x135a79[_0xc063('0x58')](_0x26fa1a));}return rp({'method':_0xc063('0x59'),'uri':util[_0xc063('0x5a')](_0xc063('0x5b'),_0x135a79,_0xc063('0x5c')),'headers':{'Authorization':util[_0xc063('0x5a')](_0xc063('0x5d'),new Buffer(util[_0xc063('0x5a')]('%s:X',_0x578edd[_0xc063('0x55')]))[_0xc063('0x5e')](_0xc063('0x5f')))},'json':!![]});}})[_0xc063('0x23')](function(_0x4bb9cc){if(_0x4bb9cc){var _0x341bdb=[_0xc063('0x60'),'subject',_0xc063('0x61'),_0xc063('0x62'),_0xc063('0x17'),_0xc063('0x63'),_0xc063('0x64'),'source','ticket_type',_0xc063('0x64'),'company'];_[_0xc063('0x65')](_0x4bb9cc,function(_0x5a6ebe){return _0x341bdb[_0xc063('0x66')](_0x5a6ebe[_0xc063('0x26')])||!_0x5a6ebe['default']&&_0x5a6ebe[_0xc063('0x3a')]!==_0xc063('0x67')&&_0x5a6ebe[_0xc063('0x3a')]!==_0xc063('0x68');});return{'count':_0x4bb9cc[_0xc063('0x34')],'rows':_[_0xc063('0x2c')](_0x4bb9cc,function(_0xa17283){return{'id':_0xa17283['name'],'name':_0xa17283[_0xc063('0x69')],'custom':!_0xa17283['default'],'options':_0xa17283['choices']?_['map'](_0xa17283[_0xc063('0x6a')],function(_0x1c7550){return{'name':_[_0xc063('0x6b')](_0x1c7550),'value':_0x1c7550};}):[]};})};}})['then'](respondWithResult(_0x5d1cfa,null))[_0xc063('0x41')](function(_0x37bd85){var _0x458044=_0x279d91[_0xc063('0x2d')][_0xc063('0x6c')]?0x1f4:_0x37bd85[_0xc063('0x6d')]||0x1f4;logger[_0xc063('0x24')]('getFields,\x20%s,\x20%s,\x20%s',_0xc063('0x54'),_0x458044,JSON[_0xc063('0x6e')](_0x37bd85));delete _0x37bd85[_0xc063('0x26')];if(_0x458044===0x191){_0x458044=0x190;}_0x5d1cfa[_0xc063('0x17')](_0x458044)[_0xc063('0x27')](_0x279d91[_0xc063('0x2d')][_0xc063('0x6c')]?{'message':'Wrong\x20credentials','statusCode':_0x37bd85[_0xc063('0x6d')]}:_0x37bd85);});};
\ No newline at end of file
+var _0xe5fb=['json','offset','undefined','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','count','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','merge','options','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','toString','requester','subject','description','priority','group','remove','includes','default','custom_text','custom_dropdown','label','choices','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end'];(function(_0x727a9b,_0x2c4144){var _0xb93816=function(_0x2025b4){while(--_0x2025b4){_0x727a9b['push'](_0x727a9b['shift']());}};_0xb93816(++_0x2c4144);}(_0xe5fb,0xce));var _0xbe5f=function(_0x2e58c7,_0x23d092){_0x2e58c7=_0x2e58c7-0x0;var _0x26eb00=_0xe5fb[_0x2e58c7];return _0x26eb00;};'use strict';var emlformat=require(_0xbe5f('0x0'));var rimraf=require(_0xbe5f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbe5f('0x2'));var rp=require(_0xbe5f('0x3'));var moment=require(_0xbe5f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbe5f('0x5'));var util=require(_0xbe5f('0x6'));var path=require(_0xbe5f('0x7'));var sox=require(_0xbe5f('0x8'));var csv=require(_0xbe5f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbe5f('0xa'));var _=require(_0xbe5f('0xb'));var squel=require(_0xbe5f('0xc'));var crypto=require(_0xbe5f('0xd'));var jsforce=require(_0xbe5f('0xe'));var deskjs=require(_0xbe5f('0xf'));var toCsv=require('to-csv');var querystring=require(_0xbe5f('0x10'));var Papa=require(_0xbe5f('0x11'));var Redis=require(_0xbe5f('0x12'));var authService=require(_0xbe5f('0x13'));var qs=require(_0xbe5f('0x14'));var as=require(_0xbe5f('0x15'));var hardwareService=require(_0xbe5f('0x16'));var logger=require(_0xbe5f('0x17'))(_0xbe5f('0x18'));var utils=require(_0xbe5f('0x19'));var config=require(_0xbe5f('0x1a'));var licenseUtil=require(_0xbe5f('0x1b'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbe5f('0x1c'));function respondWithStatusCode(_0x227ef6,_0x454a41){_0x454a41=_0x454a41||0xcc;return function(_0x5880c3){if(_0x5880c3){return _0x227ef6[_0xbe5f('0x1d')](_0x454a41);}return _0x227ef6[_0xbe5f('0x1e')](_0x454a41)[_0xbe5f('0x1f')]();};}function respondWithResult(_0x19d245,_0x3b753f){_0x3b753f=_0x3b753f||0xc8;return function(_0x5e2862){if(_0x5e2862){return _0x19d245[_0xbe5f('0x1e')](_0x3b753f)[_0xbe5f('0x20')](_0x5e2862);}};}function respondWithFilteredResult(_0x159fa3,_0x77698b){return function(_0x1b8825){if(_0x1b8825){var _0x345f65=typeof _0x77698b[_0xbe5f('0x21')]===_0xbe5f('0x22')&&typeof _0x77698b['limit']==='undefined';var _0x550702=_0x1b8825['count'];var _0x9b274e=_0x345f65?0x0:_0x77698b[_0xbe5f('0x21')];var _0x30f6d2=_0x345f65?_0x1b8825['count']:_0x77698b['offset']+_0x77698b['limit'];var _0x5d8d6c;if(_0x30f6d2>=_0x550702){_0x30f6d2=_0x550702;_0x5d8d6c=0xc8;}else{_0x5d8d6c=0xce;}_0x159fa3[_0xbe5f('0x1e')](_0x5d8d6c);return _0x159fa3[_0xbe5f('0x23')](_0xbe5f('0x24'),_0x9b274e+'-'+_0x30f6d2+'/'+_0x550702)[_0xbe5f('0x20')](_0x1b8825);}return null;};}function patchUpdates(_0x2c6c52){return function(_0x436cd2){try{jsonpatch['apply'](_0x436cd2,_0x2c6c52,!![]);}catch(_0x100b62){return BPromise[_0xbe5f('0x25')](_0x100b62);}return _0x436cd2[_0xbe5f('0x26')]();};}function saveUpdates(_0x306974,_0x1bfed4){return function(_0x3dccd1){if(_0x3dccd1){return _0x3dccd1[_0xbe5f('0x27')](_0x306974)['then'](function(_0x21cfdd){return _0x21cfdd;});}return null;};}function removeEntity(_0x1ab547,_0x4832a7){return function(_0x37b5a9){if(_0x37b5a9){return _0x37b5a9[_0xbe5f('0x28')]()[_0xbe5f('0x29')](function(){_0x1ab547[_0xbe5f('0x1e')](0xcc)[_0xbe5f('0x1f')]();});}};}function handleEntityNotFound(_0x30e1d5,_0x2d4e89){return function(_0x5326a5){if(!_0x5326a5){_0x30e1d5['sendStatus'](0x194);}return _0x5326a5;};}function handleError(_0x5e85f7,_0x55e7c5){_0x55e7c5=_0x55e7c5||0x1f4;return function(_0x11946e){logger[_0xbe5f('0x2a')](_0x11946e[_0xbe5f('0x2b')]);if(_0x11946e[_0xbe5f('0x2c')]){delete _0x11946e[_0xbe5f('0x2c')];}_0x5e85f7[_0xbe5f('0x1e')](_0x55e7c5)[_0xbe5f('0x2d')](_0x11946e);};}exports[_0xbe5f('0x2e')]=function(_0x1f3451,_0x52ff44){var _0xfe0ddc={},_0x443bdb={},_0x12cd38={'count':0x0,'rows':[]};var _0x3a4fd1=_[_0xbe5f('0x2f')](db[_0xbe5f('0x30')][_0xbe5f('0x31')],function(_0x366ae1){return{'name':_0x366ae1[_0xbe5f('0x32')],'type':_0x366ae1[_0xbe5f('0x33')][_0xbe5f('0x34')]};});_0x443bdb[_0xbe5f('0x35')]=_[_0xbe5f('0x2f')](_0x3a4fd1,_0xbe5f('0x2c'));_0x443bdb[_0xbe5f('0x36')]=_['keys'](_0x1f3451['query']);_0x443bdb[_0xbe5f('0x37')]=_[_0xbe5f('0x38')](_0x443bdb[_0xbe5f('0x35')],_0x443bdb[_0xbe5f('0x36')]);_0xfe0ddc[_0xbe5f('0x39')]=_[_0xbe5f('0x38')](_0x443bdb[_0xbe5f('0x35')],qs[_0xbe5f('0x3a')](_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x3a')]));_0xfe0ddc[_0xbe5f('0x39')]=_0xfe0ddc['attributes'][_0xbe5f('0x3b')]?_0xfe0ddc['attributes']:_0x443bdb[_0xbe5f('0x35')];if(!_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x3c')](_0xbe5f('0x3d'))){_0xfe0ddc[_0xbe5f('0x3e')]=qs[_0xbe5f('0x3e')](_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x3e')]);_0xfe0ddc[_0xbe5f('0x21')]=qs[_0xbe5f('0x21')](_0x1f3451['query'][_0xbe5f('0x21')]);}_0xfe0ddc[_0xbe5f('0x3f')]=qs[_0xbe5f('0x40')](_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x40')]);_0xfe0ddc[_0xbe5f('0x41')]=qs['filters'](_[_0xbe5f('0x42')](_0x1f3451[_0xbe5f('0x36')],_0x443bdb['filters']),_0x3a4fd1);if(_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x43')]){_0xfe0ddc['where']=_['merge'](_0xfe0ddc['where'],{'$or':_[_0xbe5f('0x2f')](_0x3a4fd1,function(_0x9ff166){if(_0x9ff166['type']!=='VIRTUAL'){var _0x5f4760={};_0x5f4760[_0x9ff166[_0xbe5f('0x2c')]]={'$like':'%'+_0x1f3451['query'][_0xbe5f('0x43')]+'%'};return _0x5f4760;}})});}_0xfe0ddc=_['merge']({},_0xfe0ddc,_0x1f3451['options']);var _0x40e9a4={'where':_0xfe0ddc[_0xbe5f('0x41')]};return db[_0xbe5f('0x30')][_0xbe5f('0x44')](_0x40e9a4)['then'](function(_0x552997){_0x12cd38['count']=_0x552997;if(_0x1f3451[_0xbe5f('0x36')][_0xbe5f('0x45')]){_0xfe0ddc[_0xbe5f('0x46')]=[{'all':!![]}];}return db[_0xbe5f('0x30')][_0xbe5f('0x47')](_0xfe0ddc);})['then'](function(_0x54102b){_0x12cd38[_0xbe5f('0x48')]=_0x54102b;return _0x12cd38;})[_0xbe5f('0x29')](respondWithFilteredResult(_0x52ff44,_0xfe0ddc))[_0xbe5f('0x49')](handleError(_0x52ff44,null));};exports[_0xbe5f('0x4a')]=function(_0x2e1959,_0x33c554){var _0x2f665d={'raw':![],'where':{'id':_0x2e1959[_0xbe5f('0x4b')]['id']}},_0x1b5e26={};_0x1b5e26[_0xbe5f('0x35')]=_['keys'](db[_0xbe5f('0x30')][_0xbe5f('0x31')]);_0x1b5e26[_0xbe5f('0x36')]=_[_0xbe5f('0x4c')](_0x2e1959[_0xbe5f('0x36')]);_0x1b5e26[_0xbe5f('0x37')]=_[_0xbe5f('0x38')](_0x1b5e26[_0xbe5f('0x35')],_0x1b5e26['query']);_0x2f665d[_0xbe5f('0x39')]=_['intersection'](_0x1b5e26[_0xbe5f('0x35')],qs[_0xbe5f('0x3a')](_0x2e1959[_0xbe5f('0x36')][_0xbe5f('0x3a')]));_0x2f665d[_0xbe5f('0x39')]=_0x2f665d['attributes'][_0xbe5f('0x3b')]?_0x2f665d[_0xbe5f('0x39')]:_0x1b5e26['model'];if(_0x2e1959[_0xbe5f('0x36')][_0xbe5f('0x45')]){_0x2f665d[_0xbe5f('0x46')]=[{'all':!![]}];}_0x2f665d=_['merge']({},_0x2f665d,_0x2e1959['options']);return db[_0xbe5f('0x30')][_0xbe5f('0x4d')](_0x2f665d)[_0xbe5f('0x29')](handleEntityNotFound(_0x33c554,null))[_0xbe5f('0x29')](respondWithResult(_0x33c554,null))[_0xbe5f('0x49')](handleError(_0x33c554,null));};exports[_0xbe5f('0x4e')]=function(_0x47bae0,_0x53a0ab){return db[_0xbe5f('0x30')][_0xbe5f('0x4e')](_0x47bae0['body'],{})[_0xbe5f('0x29')](respondWithResult(_0x53a0ab,0xc9))[_0xbe5f('0x49')](handleError(_0x53a0ab,null));};exports[_0xbe5f('0x27')]=function(_0x674bdd,_0x56c2e7){if(_0x674bdd[_0xbe5f('0x4f')]['id']){delete _0x674bdd[_0xbe5f('0x4f')]['id'];}return db[_0xbe5f('0x30')][_0xbe5f('0x4d')]({'where':{'id':_0x674bdd[_0xbe5f('0x4b')]['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0x56c2e7,null))['then'](saveUpdates(_0x674bdd['body'],null))[_0xbe5f('0x29')](respondWithResult(_0x56c2e7,null))[_0xbe5f('0x49')](handleError(_0x56c2e7,null));};exports[_0xbe5f('0x28')]=function(_0x343f5a,_0x2768f8){return db[_0xbe5f('0x30')][_0xbe5f('0x4d')]({'where':{'id':_0x343f5a[_0xbe5f('0x4b')]['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0x2768f8,null))[_0xbe5f('0x29')](removeEntity(_0x2768f8,null))['catch'](handleError(_0x2768f8,null));};exports[_0xbe5f('0x50')]=function(_0x2fa072,_0xc88e05,_0x1537f0){var _0x1790fb={};var _0xc603a9={};var _0x48dcec;var _0x3aefce;return db[_0xbe5f('0x30')][_0xbe5f('0x51')]({'where':{'id':_0x2fa072[_0xbe5f('0x4b')]['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0xc88e05,null))[_0xbe5f('0x29')](function(_0x140096){if(_0x140096){_0x48dcec=_0x140096;_0xc603a9[_0xbe5f('0x35')]=_[_0xbe5f('0x4c')](db[_0xbe5f('0x52')][_0xbe5f('0x31')]);_0xc603a9[_0xbe5f('0x36')]=_[_0xbe5f('0x4c')](_0x2fa072[_0xbe5f('0x36')]);_0xc603a9[_0xbe5f('0x37')]=_[_0xbe5f('0x38')](_0xc603a9[_0xbe5f('0x35')],_0xc603a9[_0xbe5f('0x36')]);_0x1790fb[_0xbe5f('0x39')]=_[_0xbe5f('0x38')](_0xc603a9[_0xbe5f('0x35')],qs[_0xbe5f('0x3a')](_0x2fa072['query'][_0xbe5f('0x3a')]));_0x1790fb[_0xbe5f('0x39')]=_0x1790fb[_0xbe5f('0x39')][_0xbe5f('0x3b')]?_0x1790fb['attributes']:_0xc603a9[_0xbe5f('0x35')];_0x1790fb[_0xbe5f('0x3f')]=qs[_0xbe5f('0x40')](_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x40')]);_0x1790fb[_0xbe5f('0x41')]=qs[_0xbe5f('0x37')](_[_0xbe5f('0x42')](_0x2fa072[_0xbe5f('0x36')],_0xc603a9['filters']));if(_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x43')]){_0x1790fb[_0xbe5f('0x41')]=_[_0xbe5f('0x53')](_0x1790fb[_0xbe5f('0x41')],{'$or':_[_0xbe5f('0x2f')](_0x1790fb['attributes'],function(_0x339fa6){var _0x2e3b99={};_0x2e3b99[_0x339fa6]={'$like':'%'+_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x43')]+'%'};return _0x2e3b99;})});}_0x1790fb=_[_0xbe5f('0x53')]({},_0x1790fb,_0x2fa072[_0xbe5f('0x54')]);return _0x48dcec['getConfigurations'](_0x1790fb);}})['then'](function(_0x279129){if(_0x279129){_0x3aefce=_0x279129[_0xbe5f('0x3b')];if(!_0x2fa072['query']['hasOwnProperty']('nolimit')){_0x1790fb['limit']=qs['limit'](_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x3e')]);_0x1790fb['offset']=qs[_0xbe5f('0x21')](_0x2fa072[_0xbe5f('0x36')][_0xbe5f('0x21')]);}return _0x48dcec[_0xbe5f('0x50')](_0x1790fb);}})[_0xbe5f('0x29')](function(_0x249a9a){if(_0x249a9a){return _0x249a9a?{'count':_0x3aefce,'rows':_0x249a9a}:null;}})[_0xbe5f('0x29')](respondWithResult(_0xc88e05,null))[_0xbe5f('0x49')](handleError(_0xc88e05,null));};exports['addConfiguration']=function(_0xbfd242,_0xe2a752,_0x4594c1){if(_0xbfd242[_0xbe5f('0x4f')]['id']){delete _0xbfd242[_0xbe5f('0x4f')]['id'];}return db[_0xbe5f('0x30')][_0xbe5f('0x51')]({'where':{'id':_0xbfd242['params']['id']}})[_0xbe5f('0x29')](handleEntityNotFound(_0xe2a752,null))[_0xbe5f('0x29')](function(_0x31a237){if(_0x31a237){_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x55')]=_0x31a237['id'];_0xbfd242['body'][_0xbe5f('0x56')]=integrations[_0xbe5f('0x57')](_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x58')],_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x33')]);_0xbfd242['body'][_0xbe5f('0x59')]=integrations[_0xbe5f('0x5a')](_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x58')],_0xbfd242[_0xbe5f('0x4f')][_0xbe5f('0x33')]);return db[_0xbe5f('0x52')][_0xbe5f('0x4e')](_0xbfd242[_0xbe5f('0x4f')],{'include':[{'model':db['FreshdeskField'],'as':_0xbe5f('0x56')},{'model':db[_0xbe5f('0x5b')],'as':_0xbe5f('0x59')}]});}return null;})[_0xbe5f('0x29')](respondWithResult(_0xe2a752,null))[_0xbe5f('0x49')](handleError(_0xe2a752,null));};exports[_0xbe5f('0x5c')]=function(_0x54956c,_0x2d184e,_0x3a122a){var _0x586aa8='';return db[_0xbe5f('0x30')][_0xbe5f('0x51')]({'where':{'id':_0x54956c[_0xbe5f('0x4b')]['id']},'attributes':['id',_0xbe5f('0x5d'),_0xbe5f('0x5e')]})[_0xbe5f('0x29')](handleEntityNotFound(_0x2d184e,null))[_0xbe5f('0x29')](function(_0x37bc2e){if(_0x37bc2e){_0x586aa8=_0x37bc2e[_0xbe5f('0x5d')];var _0x3852fe=_0x586aa8[_0xbe5f('0x5f')](-0x1);if(_0x3852fe==='/'){_0x586aa8=_0x586aa8['substring'](0x0,_0x586aa8[_0xbe5f('0x60')](_0x3852fe));}return rp({'method':'GET','uri':util['format'](_0xbe5f('0x61'),_0x586aa8,_0xbe5f('0x62')),'headers':{'Authorization':util[_0xbe5f('0x63')](_0xbe5f('0x64'),new Buffer(util['format']('%s:X',_0x37bc2e[_0xbe5f('0x5e')]))[_0xbe5f('0x65')]('base64'))},'json':!![]});}})['then'](function(_0x21b256){if(_0x21b256){var _0x1a94b1=[_0xbe5f('0x66'),_0xbe5f('0x67'),'agent',_0xbe5f('0x68'),_0xbe5f('0x1e'),_0xbe5f('0x69'),'group','source','ticket_type',_0xbe5f('0x6a'),'company'];_[_0xbe5f('0x6b')](_0x21b256,function(_0xa2816){return _0x1a94b1[_0xbe5f('0x6c')](_0xa2816[_0xbe5f('0x2c')])||!_0xa2816[_0xbe5f('0x6d')]&&_0xa2816['type']!==_0xbe5f('0x6e')&&_0xa2816[_0xbe5f('0x33')]!==_0xbe5f('0x6f');});return{'count':_0x21b256[_0xbe5f('0x3b')],'rows':_[_0xbe5f('0x2f')](_0x21b256,function(_0x21f1d8){return{'id':_0x21f1d8['name'],'name':_0x21f1d8[_0xbe5f('0x70')],'custom':!_0x21f1d8[_0xbe5f('0x6d')],'options':_0x21f1d8[_0xbe5f('0x71')]?_[_0xbe5f('0x2f')](_0x21f1d8[_0xbe5f('0x71')],function(_0x4d294e){return{'name':_['capitalize'](_0x4d294e),'value':_0x4d294e};}):[]};})};}})[_0xbe5f('0x29')](respondWithResult(_0x2d184e,null))[_0xbe5f('0x49')](function(_0x59fd19){var _0x24d21d=_0x54956c[_0xbe5f('0x36')][_0xbe5f('0x72')]?0x1f4:_0x59fd19[_0xbe5f('0x73')]||0x1f4;logger[_0xbe5f('0x2a')](_0xbe5f('0x74'),'getFields',_0x24d21d,JSON[_0xbe5f('0x75')](_0x59fd19));delete _0x59fd19[_0xbe5f('0x2c')];if(_0x24d21d===0x191){_0x24d21d=0x190;}_0x2d184e[_0xbe5f('0x1e')](_0x24d21d)[_0xbe5f('0x2d')](_0x54956c['query']['test']?{'message':_0xbe5f('0x76'),'statusCode':_0x59fd19[_0xbe5f('0x73')]}:_0x59fd19);});};
\ No newline at end of file
index 8447f45..25cecd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02c3=['../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','../../config/logger','api','request-promise','path','rimraf'];(function(_0x3e73f6,_0x4f7f01){var _0x5af991=function(_0x186e5a){while(--_0x186e5a){_0x3e73f6['push'](_0x3e73f6['shift']());}};_0x5af991(++_0x4f7f01);}(_0x02c3,0x14c));var _0x302c=function(_0x205823,_0x264609){_0x205823=_0x205823-0x0;var _0x400500=_0x02c3[_0x205823];return _0x400500;};'use strict';var _=require(_0x302c('0x0'));var util=require('util');var logger=require(_0x302c('0x1'))(_0x302c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x302c('0x3'));var fs=require('fs');var path=require(_0x302c('0x4'));var rimraf=require(_0x302c('0x5'));var config=require(_0x302c('0x6'));var attributes=require(_0x302c('0x7'));var integrations=require(_0x302c('0x8'));module[_0x302c('0x9')]=function(_0x317e51,_0x49083a){return _0x317e51[_0x302c('0xa')](_0x302c('0xb'),attributes,{'tableName':_0x302c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8855=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util'];(function(_0x406115,_0x19f7a1){var _0xbbabdb=function(_0x28554d){while(--_0x28554d){_0x406115['push'](_0x406115['shift']());}};_0xbbabdb(++_0x19f7a1);}(_0x8855,0x1de));var _0x5885=function(_0x40b10d,_0x269d7a){_0x40b10d=_0x40b10d-0x0;var _0x2fe5ad=_0x8855[_0x40b10d];return _0x2fe5ad;};'use strict';var _=require(_0x5885('0x0'));var util=require(_0x5885('0x1'));var logger=require('../../config/logger')(_0x5885('0x2'));var moment=require(_0x5885('0x3'));var BPromise=require(_0x5885('0x4'));var rp=require(_0x5885('0x5'));var fs=require('fs');var path=require(_0x5885('0x6'));var rimraf=require(_0x5885('0x7'));var config=require(_0x5885('0x8'));var attributes=require(_0x5885('0x9'));var integrations=require(_0x5885('0xa'));module[_0x5885('0xb')]=function(_0x562118,_0x3a07d8){return _0x562118[_0x5885('0xc')](_0x5885('0xd'),attributes,{'tableName':_0x5885('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4c1e21..6f8a44b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae56=['where','attributes','limit','map','include','model','debug','ShowFreshdeskAccount','find','lodash','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw'];(function(_0x54c5bf,_0x2d5158){var _0x7ec0aa=function(_0x543d91){while(--_0x543d91){_0x54c5bf['push'](_0x54c5bf['shift']());}};_0x7ec0aa(++_0x2d5158);}(_0xae56,0xae));var _0x6ae5=function(_0x5760c2,_0x3c5d47){_0x5760c2=_0x5760c2-0x0;var _0x230832=_0xae56[_0x5760c2];return _0x230832;};'use strict';var _=require(_0x6ae5('0x0'));var util=require('util');var moment=require(_0x6ae5('0x1'));var BPromise=require(_0x6ae5('0x2'));var rs=require(_0x6ae5('0x3'));var fs=require('fs');var Redis=require(_0x6ae5('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6ae5('0x5'))('rpc');var config=require(_0x6ae5('0x6'));var jayson=require(_0x6ae5('0x7'));var client=jayson[_0x6ae5('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x48ce95,_0x3896a1,_0x259eb2){return new BPromise(function(_0x40d01f,_0x44fd99){return client[_0x6ae5('0x9')](_0x48ce95,_0x259eb2)[_0x6ae5('0xa')](function(_0x43c27c){logger[_0x6ae5('0xb')](_0x6ae5('0xc'),_0x3896a1,_0x6ae5('0xd'));logger['debug']('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x3896a1,'request\x20sent',JSON[_0x6ae5('0xe')](_0x43c27c));if(_0x43c27c[_0x6ae5('0xf')]){if(_0x43c27c[_0x6ae5('0xf')][_0x6ae5('0x10')]===0x1f4){logger[_0x6ae5('0xf')](_0x6ae5('0xc'),_0x3896a1,_0x43c27c[_0x6ae5('0xf')][_0x6ae5('0x11')]);return _0x44fd99(_0x43c27c[_0x6ae5('0xf')]['message']);}logger[_0x6ae5('0xf')](_0x6ae5('0xc'),_0x3896a1,_0x43c27c[_0x6ae5('0xf')][_0x6ae5('0x11')]);return _0x40d01f(_0x43c27c[_0x6ae5('0xf')][_0x6ae5('0x11')]);}else{logger['info'](_0x6ae5('0xc'),_0x3896a1,'request\x20sent');_0x40d01f(_0x43c27c['result']['message']);}})[_0x6ae5('0x12')](function(_0xc479c9){logger[_0x6ae5('0xf')](_0x6ae5('0xc'),_0x3896a1,_0xc479c9);_0x44fd99(_0xc479c9);});});}exports[_0x6ae5('0x13')]=function(_0x91c850){var _0x267891=this;return new Promise(function(_0x459a8e,_0xc44ee1){return db[_0x6ae5('0x14')][_0x6ae5('0x15')]({'raw':_0x91c850[_0x6ae5('0x16')]?_0x91c850[_0x6ae5('0x16')][_0x6ae5('0x17')]===undefined?!![]:![]:!![],'where':_0x91c850[_0x6ae5('0x16')]?_0x91c850[_0x6ae5('0x16')][_0x6ae5('0x18')]||null:null,'attributes':_0x91c850[_0x6ae5('0x16')]?_0x91c850[_0x6ae5('0x16')][_0x6ae5('0x19')]||null:null,'limit':_0x91c850[_0x6ae5('0x16')]?_0x91c850[_0x6ae5('0x16')][_0x6ae5('0x1a')]||null:null,'include':_0x91c850[_0x6ae5('0x16')]?_0x91c850[_0x6ae5('0x16')]['include']?_[_0x6ae5('0x1b')](_0x91c850[_0x6ae5('0x16')][_0x6ae5('0x1c')],function(_0x1f54c6){return{'model':db[_0x1f54c6[_0x6ae5('0x1d')]],'as':_0x1f54c6['as'],'attributes':_0x1f54c6[_0x6ae5('0x19')],'include':_0x1f54c6['include']?_[_0x6ae5('0x1b')](_0x1f54c6[_0x6ae5('0x1c')],function(_0xd6011){return{'model':db[_0xd6011[_0x6ae5('0x1d')]],'as':_0xd6011['as'],'attributes':_0xd6011['attributes'],'include':_0xd6011['include']?_[_0x6ae5('0x1b')](_0xd6011['include'],function(_0x7a79bd){return{'model':db[_0x7a79bd[_0x6ae5('0x1d')]],'as':_0x7a79bd['as'],'attributes':_0x7a79bd[_0x6ae5('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x559b2c){logger['info'](_0x6ae5('0x13'),_0x91c850);logger[_0x6ae5('0x1e')](_0x6ae5('0x13'),_0x91c850,JSON[_0x6ae5('0xe')](_0x559b2c));_0x459a8e(_0x559b2c);})[_0x6ae5('0x12')](function(_0x70e319){logger[_0x6ae5('0xf')](_0x6ae5('0x13'),_0x70e319[_0x6ae5('0x11')],_0x91c850);_0xc44ee1(_0x267891[_0x6ae5('0xf')](0x1f4,_0x70e319['message']));});});};exports[_0x6ae5('0x1f')]=function(_0x3e0d9b){var _0x336439=this;return new Promise(function(_0x5add4f,_0x27f83e){return db[_0x6ae5('0x14')][_0x6ae5('0x20')]({'raw':_0x3e0d9b['options']?_0x3e0d9b[_0x6ae5('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x3e0d9b['options']?_0x3e0d9b[_0x6ae5('0x16')][_0x6ae5('0x18')]||null:null,'attributes':_0x3e0d9b[_0x6ae5('0x16')]?_0x3e0d9b[_0x6ae5('0x16')][_0x6ae5('0x19')]||null:null,'include':_0x3e0d9b[_0x6ae5('0x16')]?_0x3e0d9b['options'][_0x6ae5('0x1c')]?_[_0x6ae5('0x1b')](_0x3e0d9b['options'][_0x6ae5('0x1c')],function(_0x8b29b5){return{'model':db[_0x8b29b5[_0x6ae5('0x1d')]],'as':_0x8b29b5['as'],'attributes':_0x8b29b5[_0x6ae5('0x19')],'include':_0x8b29b5[_0x6ae5('0x1c')]?_['map'](_0x8b29b5[_0x6ae5('0x1c')],function(_0x1266a1){return{'model':db[_0x1266a1[_0x6ae5('0x1d')]],'as':_0x1266a1['as'],'attributes':_0x1266a1['attributes'],'include':_0x1266a1[_0x6ae5('0x1c')]?_[_0x6ae5('0x1b')](_0x1266a1[_0x6ae5('0x1c')],function(_0x3afe6b){return{'model':db[_0x3afe6b[_0x6ae5('0x1d')]],'as':_0x3afe6b['as'],'attributes':_0x3afe6b[_0x6ae5('0x19')]};}):[]};}):[]};}):[]:[]})[_0x6ae5('0xa')](function(_0x1ad460){logger['info'](_0x6ae5('0x1f'),_0x3e0d9b);logger[_0x6ae5('0x1e')](_0x6ae5('0x1f'),_0x3e0d9b,JSON['stringify'](_0x1ad460));_0x5add4f(_0x1ad460);})[_0x6ae5('0x12')](function(_0x2ba05e){logger[_0x6ae5('0xf')]('ShowFreshdeskAccount',_0x2ba05e[_0x6ae5('0x11')],_0x3e0d9b);_0x27f83e(_0x336439[_0x6ae5('0xf')](0x1f4,_0x2ba05e[_0x6ae5('0x11')]));});});};
\ No newline at end of file
+var _0x2f96=['catch','ShowFreshdeskAccount','find','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetFreshdeskAccount','FreshdeskAccount','options','raw','where','attributes','limit','map','include','model'];(function(_0x4bcfa6,_0x1c7e43){var _0x1c0165=function(_0x30c963){while(--_0x30c963){_0x4bcfa6['push'](_0x4bcfa6['shift']());}};_0x1c0165(++_0x1c7e43);}(_0x2f96,0x1b3));var _0x62f9=function(_0x40a01b,_0x3c12a5){_0x40a01b=_0x40a01b-0x0;var _0x225a2c=_0x2f96[_0x40a01b];return _0x225a2c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x62f9('0x0'));var BPromise=require(_0x62f9('0x1'));var rs=require(_0x62f9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x62f9('0x3'))['db'];var utils=require(_0x62f9('0x4'));var logger=require(_0x62f9('0x5'))(_0x62f9('0x6'));var config=require(_0x62f9('0x7'));var jayson=require(_0x62f9('0x8'));var client=jayson[_0x62f9('0x9')][_0x62f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1168a4,_0x5a7975,_0x11101d){return new BPromise(function(_0x22afae,_0x348a14){return client[_0x62f9('0xb')](_0x1168a4,_0x11101d)[_0x62f9('0xc')](function(_0x419aa5){logger[_0x62f9('0xd')](_0x62f9('0xe'),_0x5a7975,_0x62f9('0xf'));logger[_0x62f9('0x10')](_0x62f9('0x11'),_0x5a7975,_0x62f9('0xf'),JSON[_0x62f9('0x12')](_0x419aa5));if(_0x419aa5['error']){if(_0x419aa5[_0x62f9('0x13')][_0x62f9('0x14')]===0x1f4){logger[_0x62f9('0x13')](_0x62f9('0xe'),_0x5a7975,_0x419aa5[_0x62f9('0x13')][_0x62f9('0x15')]);return _0x348a14(_0x419aa5['error'][_0x62f9('0x15')]);}logger[_0x62f9('0x13')](_0x62f9('0xe'),_0x5a7975,_0x419aa5['error'][_0x62f9('0x15')]);return _0x22afae(_0x419aa5[_0x62f9('0x13')][_0x62f9('0x15')]);}else{logger[_0x62f9('0xd')]('FreshdeskAccount,\x20%s,\x20%s',_0x5a7975,_0x62f9('0xf'));_0x22afae(_0x419aa5[_0x62f9('0x16')][_0x62f9('0x15')]);}})['catch'](function(_0x166ee6){logger[_0x62f9('0x13')](_0x62f9('0xe'),_0x5a7975,_0x166ee6);_0x348a14(_0x166ee6);});});}exports[_0x62f9('0x17')]=function(_0x47e9f7){var _0x119755=this;return new Promise(function(_0x561ea7,_0x509606){return db[_0x62f9('0x18')]['findAll']({'raw':_0x47e9f7['options']?_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1a')]===undefined?!![]:![]:!![],'where':_0x47e9f7[_0x62f9('0x19')]?_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1b')]||null:null,'attributes':_0x47e9f7['options']?_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1c')]||null:null,'limit':_0x47e9f7[_0x62f9('0x19')]?_0x47e9f7['options'][_0x62f9('0x1d')]||null:null,'include':_0x47e9f7[_0x62f9('0x19')]?_0x47e9f7[_0x62f9('0x19')]['include']?_[_0x62f9('0x1e')](_0x47e9f7[_0x62f9('0x19')][_0x62f9('0x1f')],function(_0xb8539e){return{'model':db[_0xb8539e[_0x62f9('0x20')]],'as':_0xb8539e['as'],'attributes':_0xb8539e[_0x62f9('0x1c')],'include':_0xb8539e['include']?_[_0x62f9('0x1e')](_0xb8539e['include'],function(_0x6eb3e6){return{'model':db[_0x6eb3e6[_0x62f9('0x20')]],'as':_0x6eb3e6['as'],'attributes':_0x6eb3e6[_0x62f9('0x1c')],'include':_0x6eb3e6[_0x62f9('0x1f')]?_[_0x62f9('0x1e')](_0x6eb3e6['include'],function(_0x4aed81){return{'model':db[_0x4aed81[_0x62f9('0x20')]],'as':_0x4aed81['as'],'attributes':_0x4aed81[_0x62f9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x62f9('0xc')](function(_0x11015b){logger['info'](_0x62f9('0x17'),_0x47e9f7);logger[_0x62f9('0x10')]('GetFreshdeskAccount',_0x47e9f7,JSON['stringify'](_0x11015b));_0x561ea7(_0x11015b);})[_0x62f9('0x21')](function(_0x2c666e){logger[_0x62f9('0x13')](_0x62f9('0x17'),_0x2c666e['message'],_0x47e9f7);_0x509606(_0x119755[_0x62f9('0x13')](0x1f4,_0x2c666e[_0x62f9('0x15')]));});});};exports[_0x62f9('0x22')]=function(_0x5dc842){var _0x5e1516=this;return new Promise(function(_0x8ad3a1,_0x3e7239){return db[_0x62f9('0x18')][_0x62f9('0x23')]({'raw':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')][_0x62f9('0x1a')]===undefined?!![]:![]:!![],'where':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')]['where']||null:null,'attributes':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')][_0x62f9('0x1c')]||null:null,'include':_0x5dc842[_0x62f9('0x19')]?_0x5dc842[_0x62f9('0x19')][_0x62f9('0x1f')]?_[_0x62f9('0x1e')](_0x5dc842['options'][_0x62f9('0x1f')],function(_0x52fe42){return{'model':db[_0x52fe42[_0x62f9('0x20')]],'as':_0x52fe42['as'],'attributes':_0x52fe42[_0x62f9('0x1c')],'include':_0x52fe42[_0x62f9('0x1f')]?_['map'](_0x52fe42['include'],function(_0x35ed68){return{'model':db[_0x35ed68['model']],'as':_0x35ed68['as'],'attributes':_0x35ed68[_0x62f9('0x1c')],'include':_0x35ed68[_0x62f9('0x1f')]?_['map'](_0x35ed68[_0x62f9('0x1f')],function(_0x4b69ea){return{'model':db[_0x4b69ea[_0x62f9('0x20')]],'as':_0x4b69ea['as'],'attributes':_0x4b69ea[_0x62f9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x62f9('0xc')](function(_0x35cc87){logger[_0x62f9('0xd')](_0x62f9('0x22'),_0x5dc842);logger[_0x62f9('0x10')](_0x62f9('0x22'),_0x5dc842,JSON[_0x62f9('0x12')](_0x35cc87));_0x8ad3a1(_0x35cc87);})['catch'](function(_0x373c2c){logger[_0x62f9('0x13')](_0x62f9('0x22'),_0x373c2c[_0x62f9('0x15')],_0x5dc842);_0x3e7239(_0x5e1516['error'](0x1f4,_0x373c2c[_0x62f9('0x15')]));});});};
\ No newline at end of file
index 284db2c..d9aa1f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0088=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','post','setTags','put','/:id','delete','destroy','exports','multer'];(function(_0x1780f8,_0x11ba93){var _0x33a410=function(_0x2a015f){while(--_0x2a015f){_0x1780f8['push'](_0x1780f8['shift']());}};_0x33a410(++_0x11ba93);}(_0x0088,0x1e5));var _0x8008=function(_0x582198,_0x285c31){_0x582198=_0x582198-0x0;var _0x32a86a=_0x0088[_0x582198];return _0x32a86a;};'use strict';var multer=require(_0x8008('0x0'));var util=require(_0x8008('0x1'));var path=require(_0x8008('0x2'));var timeout=require(_0x8008('0x3'));var express=require(_0x8008('0x4'));var router=express[_0x8008('0x5')]();var fs_extra=require(_0x8008('0x6'));var auth=require(_0x8008('0x7'));var interaction=require(_0x8008('0x8'));var config=require(_0x8008('0x9'));var controller=require('./intFreshdeskConfiguration.controller');router['get']('/',auth[_0x8008('0xa')](),controller[_0x8008('0xb')]);router[_0x8008('0xc')]('/:id',auth[_0x8008('0xa')](),controller[_0x8008('0xd')]);router[_0x8008('0xc')](_0x8008('0xe'),auth['isAuthenticated'](),controller[_0x8008('0xf')]);router[_0x8008('0xc')](_0x8008('0x10'),auth['isAuthenticated'](),controller[_0x8008('0x11')]);router[_0x8008('0xc')]('/:id/descriptions',auth[_0x8008('0xa')](),controller[_0x8008('0x12')]);router['get'](_0x8008('0x13'),auth[_0x8008('0xa')](),controller['getTags']);router[_0x8008('0x14')]('/',auth[_0x8008('0xa')](),controller['create']);router[_0x8008('0x14')](_0x8008('0x13'),auth[_0x8008('0xa')](),controller[_0x8008('0x15')]);router[_0x8008('0x16')](_0x8008('0x17'),auth[_0x8008('0xa')](),controller['update']);router[_0x8008('0x18')](_0x8008('0x17'),auth['isAuthenticated'](),controller[_0x8008('0x19')]);module[_0x8008('0x1a')]=router;
\ No newline at end of file
+var _0xc085=['/:id','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','update','delete','destroy','exports','util','connect-timeout','express','Router','fs-extra','../../config/environment','./intFreshdeskConfiguration.controller','get','isAuthenticated','index'];(function(_0x1a9a72,_0x3724d3){var _0x384c5b=function(_0x2d5b38){while(--_0x2d5b38){_0x1a9a72['push'](_0x1a9a72['shift']());}};_0x384c5b(++_0x3724d3);}(_0xc085,0xfa));var _0x5c08=function(_0x488605,_0x233d2f){_0x488605=_0x488605-0x0;var _0xca44b9=_0xc085[_0x488605];return _0xca44b9;};'use strict';var multer=require('multer');var util=require(_0x5c08('0x0'));var path=require('path');var timeout=require(_0x5c08('0x1'));var express=require(_0x5c08('0x2'));var router=express[_0x5c08('0x3')]();var fs_extra=require(_0x5c08('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5c08('0x5'));var controller=require(_0x5c08('0x6'));router[_0x5c08('0x7')]('/',auth[_0x5c08('0x8')](),controller[_0x5c08('0x9')]);router[_0x5c08('0x7')](_0x5c08('0xa'),auth[_0x5c08('0x8')](),controller[_0x5c08('0xb')]);router['get'](_0x5c08('0xc'),auth['isAuthenticated'](),controller[_0x5c08('0xd')]);router[_0x5c08('0x7')]('/:id/subjects',auth[_0x5c08('0x8')](),controller[_0x5c08('0xe')]);router[_0x5c08('0x7')](_0x5c08('0xf'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x10')]);router['get']('/:id/tags',auth[_0x5c08('0x8')](),controller[_0x5c08('0x11')]);router[_0x5c08('0x12')]('/',auth[_0x5c08('0x8')](),controller[_0x5c08('0x13')]);router[_0x5c08('0x12')](_0x5c08('0x14'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x15')]);router['put'](_0x5c08('0xa'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x16')]);router[_0x5c08('0x17')](_0x5c08('0xa'),auth[_0x5c08('0x8')](),controller[_0x5c08('0x18')]);module[_0x5c08('0x19')]=router;
\ No newline at end of file
index 5e14d6b..ad657b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fb8=['sequelize','exports','STRING'];(function(_0x26bec8,_0x2cca48){var _0x4a5d80=function(_0x3f819d){while(--_0x3f819d){_0x26bec8['push'](_0x26bec8['shift']());}};_0x4a5d80(++_0x2cca48);}(_0x7fb8,0x153));var _0x87fb=function(_0x1fe24d,_0x521d07){_0x1fe24d=_0x1fe24d-0x0;var _0x1f8641=_0x7fb8[_0x1fe24d];return _0x1f8641;};'use strict';var Sequelize=require(_0x87fb('0x0'));module[_0x87fb('0x1')]={'name':{'type':Sequelize[_0x87fb('0x2')]},'description':{'type':Sequelize[_0x87fb('0x2')]}};
\ No newline at end of file
+var _0x934c=['STRING','sequelize','exports'];(function(_0x41a7e8,_0x105e86){var _0x270068=function(_0x804e76){while(--_0x804e76){_0x41a7e8['push'](_0x41a7e8['shift']());}};_0x270068(++_0x105e86);}(_0x934c,0xdf));var _0xc934=function(_0x6e308e,_0x35c60e){_0x6e308e=_0x6e308e-0x0;var _0x45e0e3=_0x934c[_0x6e308e];return _0x45e0e3;};'use strict';var Sequelize=require(_0xc934('0x0'));module[_0xc934('0x1')]={'name':{'type':Sequelize[_0xc934('0x2')]},'description':{'type':Sequelize[_0xc934('0x2')]}};
\ No newline at end of file
index 9153e7a..4a53bc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd75b=['offset','undefined','limit','count','set','Content-Range','update','then','destroy','sendStatus','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','length','attributes','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','FreshdeskConfiguration','includeAll','include','findAll','catch','show','params','filters','find','create','body','FreshdeskField','filter','getFields','nolimit','getSubjects','findOne','getDescriptions','Tag','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','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'];(function(_0x128708,_0x5ad77d){var _0x513c00=function(_0x25ea76){while(--_0x25ea76){_0x128708['push'](_0x128708['shift']());}};_0x513c00(++_0x5ad77d);}(_0xd75b,0x1e5));var _0xbd75=function(_0x4aa0b2,_0x242da7){_0x4aa0b2=_0x4aa0b2-0x0;var _0x2cfff5=_0xd75b[_0x4aa0b2];return _0x2cfff5;};'use strict';var emlformat=require(_0xbd75('0x0'));var rimraf=require(_0xbd75('0x1'));var zipdir=require(_0xbd75('0x2'));var jsonpatch=require(_0xbd75('0x3'));var rp=require(_0xbd75('0x4'));var moment=require(_0xbd75('0x5'));var BPromise=require(_0xbd75('0x6'));var Mustache=require(_0xbd75('0x7'));var util=require(_0xbd75('0x8'));var path=require(_0xbd75('0x9'));var sox=require(_0xbd75('0xa'));var csv=require('to-csv');var ejs=require(_0xbd75('0xb'));var fs=require('fs');var fs_extra=require(_0xbd75('0xc'));var _=require(_0xbd75('0xd'));var squel=require(_0xbd75('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbd75('0xf'));var toCsv=require(_0xbd75('0x10'));var querystring=require('querystring');var Papa=require(_0xbd75('0x11'));var Redis=require(_0xbd75('0x12'));var authService=require(_0xbd75('0x13'));var qs=require(_0xbd75('0x14'));var as=require(_0xbd75('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbd75('0x16'))(_0xbd75('0x17'));var utils=require(_0xbd75('0x18'));var config=require(_0xbd75('0x19'));var licenseUtil=require(_0xbd75('0x1a'));var db=require(_0xbd75('0x1b'))['db'];function respondWithStatusCode(_0x56fb03,_0x2d5d37){_0x2d5d37=_0x2d5d37||0xcc;return function(_0x1ba700){if(_0x1ba700){return _0x56fb03['sendStatus'](_0x2d5d37);}return _0x56fb03[_0xbd75('0x1c')](_0x2d5d37)[_0xbd75('0x1d')]();};}function respondWithResult(_0x290896,_0x2358a5){_0x2358a5=_0x2358a5||0xc8;return function(_0x37c477){if(_0x37c477){return _0x290896['status'](_0x2358a5)[_0xbd75('0x1e')](_0x37c477);}};}function respondWithFilteredResult(_0x1533f7,_0x275c19){return function(_0x399726){if(_0x399726){var _0x4cc619=typeof _0x275c19[_0xbd75('0x1f')]===_0xbd75('0x20')&&typeof _0x275c19[_0xbd75('0x21')]==='undefined';var _0x3b86ea=_0x399726['count'];var _0x175f60=_0x4cc619?0x0:_0x275c19[_0xbd75('0x1f')];var _0x59cc06=_0x4cc619?_0x399726[_0xbd75('0x22')]:_0x275c19[_0xbd75('0x1f')]+_0x275c19[_0xbd75('0x21')];var _0x5d25b3;if(_0x59cc06>=_0x3b86ea){_0x59cc06=_0x3b86ea;_0x5d25b3=0xc8;}else{_0x5d25b3=0xce;}_0x1533f7[_0xbd75('0x1c')](_0x5d25b3);return _0x1533f7[_0xbd75('0x23')](_0xbd75('0x24'),_0x175f60+'-'+_0x59cc06+'/'+_0x3b86ea)[_0xbd75('0x1e')](_0x399726);}return null;};}function patchUpdates(_0x321bbf){return function(_0x4f4f86){try{jsonpatch['apply'](_0x4f4f86,_0x321bbf,!![]);}catch(_0x2520b7){return BPromise['reject'](_0x2520b7);}return _0x4f4f86['save']();};}function saveUpdates(_0xdad892,_0x91b5c9){return function(_0xff46cb){if(_0xff46cb){return _0xff46cb[_0xbd75('0x25')](_0xdad892)[_0xbd75('0x26')](function(_0x31fb11){return _0x31fb11;});}return null;};}function removeEntity(_0x5ee485,_0x53ecb8){return function(_0xf98384){if(_0xf98384){return _0xf98384[_0xbd75('0x27')]()['then'](function(){_0x5ee485[_0xbd75('0x1c')](0xcc)[_0xbd75('0x1d')]();});}};}function handleEntityNotFound(_0x217a2,_0xb87b22){return function(_0x334e96){if(!_0x334e96){_0x217a2[_0xbd75('0x28')](0x194);}return _0x334e96;};}function handleError(_0x55f2dd,_0x2dbeda){_0x2dbeda=_0x2dbeda||0x1f4;return function(_0x12d398){logger['error'](_0x12d398['stack']);if(_0x12d398[_0xbd75('0x29')]){delete _0x12d398[_0xbd75('0x29')];}_0x55f2dd[_0xbd75('0x1c')](_0x2dbeda)[_0xbd75('0x2a')](_0x12d398);};}exports[_0xbd75('0x2b')]=function(_0x3518a9,_0x19b244){var _0x4b8071={},_0x4549a5={},_0x1abccd={'count':0x0,'rows':[]};var _0x2b056c=_[_0xbd75('0x2c')](db['FreshdeskConfiguration'][_0xbd75('0x2d')],function(_0x36111f){return{'name':_0x36111f[_0xbd75('0x2e')],'type':_0x36111f[_0xbd75('0x2f')][_0xbd75('0x30')]};});_0x4549a5[_0xbd75('0x31')]=_[_0xbd75('0x2c')](_0x2b056c,_0xbd75('0x29'));_0x4549a5[_0xbd75('0x32')]=_[_0xbd75('0x33')](_0x3518a9['query']);_0x4549a5['filters']=_[_0xbd75('0x34')](_0x4549a5[_0xbd75('0x31')],_0x4549a5['query']);_0x4b8071['attributes']=_[_0xbd75('0x34')](_0x4549a5[_0xbd75('0x31')],qs['fields'](_0x3518a9['query'][_0xbd75('0x35')]));_0x4b8071['attributes']=_0x4b8071['attributes'][_0xbd75('0x36')]?_0x4b8071[_0xbd75('0x37')]:_0x4549a5[_0xbd75('0x31')];if(!_0x3518a9[_0xbd75('0x32')][_0xbd75('0x38')]('nolimit')){_0x4b8071[_0xbd75('0x21')]=qs[_0xbd75('0x21')](_0x3518a9[_0xbd75('0x32')][_0xbd75('0x21')]);_0x4b8071['offset']=qs[_0xbd75('0x1f')](_0x3518a9['query']['offset']);}_0x4b8071[_0xbd75('0x39')]=qs[_0xbd75('0x3a')](_0x3518a9['query'][_0xbd75('0x3a')]);_0x4b8071[_0xbd75('0x3b')]=qs['filters'](_[_0xbd75('0x3c')](_0x3518a9[_0xbd75('0x32')],_0x4549a5['filters']),_0x2b056c);if(_0x3518a9[_0xbd75('0x32')]['filter']){_0x4b8071['where']=_[_0xbd75('0x3d')](_0x4b8071['where'],{'$or':_['map'](_0x2b056c,function(_0x2daa38){if(_0x2daa38['type']!==_0xbd75('0x3e')){var _0x248de2={};_0x248de2[_0x2daa38[_0xbd75('0x29')]]={'$like':'%'+_0x3518a9[_0xbd75('0x32')]['filter']+'%'};return _0x248de2;}})});}_0x4b8071=_[_0xbd75('0x3d')]({},_0x4b8071,_0x3518a9[_0xbd75('0x3f')]);var _0x584885={'where':_0x4b8071[_0xbd75('0x3b')]};return db[_0xbd75('0x40')][_0xbd75('0x22')](_0x584885)[_0xbd75('0x26')](function(_0x49265e){_0x1abccd[_0xbd75('0x22')]=_0x49265e;if(_0x3518a9[_0xbd75('0x32')][_0xbd75('0x41')]){_0x4b8071[_0xbd75('0x42')]=[{'all':!![]}];}return db[_0xbd75('0x40')][_0xbd75('0x43')](_0x4b8071);})[_0xbd75('0x26')](function(_0x1e68ed){_0x1abccd['rows']=_0x1e68ed;return _0x1abccd;})[_0xbd75('0x26')](respondWithFilteredResult(_0x19b244,_0x4b8071))[_0xbd75('0x44')](handleError(_0x19b244,null));};exports[_0xbd75('0x45')]=function(_0x138e9d,_0x25ffa4){var _0x272957={'raw':![],'where':{'id':_0x138e9d[_0xbd75('0x46')]['id']}},_0x33b291={};_0x33b291[_0xbd75('0x31')]=_[_0xbd75('0x33')](db[_0xbd75('0x40')][_0xbd75('0x2d')]);_0x33b291[_0xbd75('0x32')]=_[_0xbd75('0x33')](_0x138e9d['query']);_0x33b291[_0xbd75('0x47')]=_[_0xbd75('0x34')](_0x33b291['model'],_0x33b291[_0xbd75('0x32')]);_0x272957['attributes']=_['intersection'](_0x33b291[_0xbd75('0x31')],qs[_0xbd75('0x35')](_0x138e9d[_0xbd75('0x32')][_0xbd75('0x35')]));_0x272957[_0xbd75('0x37')]=_0x272957[_0xbd75('0x37')]['length']?_0x272957['attributes']:_0x33b291['model'];if(_0x138e9d['query'][_0xbd75('0x41')]){_0x272957['include']=[{'all':!![]}];}_0x272957=_[_0xbd75('0x3d')]({},_0x272957,_0x138e9d['options']);return db['FreshdeskConfiguration'][_0xbd75('0x48')](_0x272957)['then'](handleEntityNotFound(_0x25ffa4,null))[_0xbd75('0x26')](respondWithResult(_0x25ffa4,null))[_0xbd75('0x44')](handleError(_0x25ffa4,null));};exports['create']=function(_0x500e6a,_0x3e2b60){return db['FreshdeskConfiguration'][_0xbd75('0x49')](_0x500e6a[_0xbd75('0x4a')],{})[_0xbd75('0x26')](respondWithResult(_0x3e2b60,0xc9))[_0xbd75('0x44')](handleError(_0x3e2b60,null));};exports['update']=function(_0x3d4a35,_0x20f878){if(_0x3d4a35[_0xbd75('0x4a')]['id']){delete _0x3d4a35[_0xbd75('0x4a')]['id'];}return db[_0xbd75('0x40')]['find']({'where':{'id':_0x3d4a35[_0xbd75('0x46')]['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0x20f878,null))['then'](saveUpdates(_0x3d4a35[_0xbd75('0x4a')],null))[_0xbd75('0x26')](respondWithResult(_0x20f878,null))[_0xbd75('0x44')](handleError(_0x20f878,null));};exports['destroy']=function(_0x54cffb,_0x2e2085){return db[_0xbd75('0x40')][_0xbd75('0x48')]({'where':{'id':_0x54cffb['params']['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0x2e2085,null))[_0xbd75('0x26')](removeEntity(_0x2e2085,null))['catch'](handleError(_0x2e2085,null));};exports['getFields']=function(_0x7be74a,_0x5dc743,_0x4e12d4){var _0x1ef1e3={};var _0x57ed8f={};var _0x2cda4c;var _0x1b71f6;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x7be74a[_0xbd75('0x46')]['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0x5dc743,null))[_0xbd75('0x26')](function(_0x13265c){if(_0x13265c){_0x2cda4c=_0x13265c;_0x57ed8f[_0xbd75('0x31')]=_[_0xbd75('0x33')](db[_0xbd75('0x4b')]['rawAttributes']);_0x57ed8f['query']=_[_0xbd75('0x33')](_0x7be74a[_0xbd75('0x32')]);_0x57ed8f['filters']=_[_0xbd75('0x34')](_0x57ed8f[_0xbd75('0x31')],_0x57ed8f[_0xbd75('0x32')]);_0x1ef1e3['attributes']=_[_0xbd75('0x34')](_0x57ed8f[_0xbd75('0x31')],qs[_0xbd75('0x35')](_0x7be74a[_0xbd75('0x32')]['fields']));_0x1ef1e3[_0xbd75('0x37')]=_0x1ef1e3[_0xbd75('0x37')][_0xbd75('0x36')]?_0x1ef1e3[_0xbd75('0x37')]:_0x57ed8f['model'];_0x1ef1e3[_0xbd75('0x39')]=qs['sort'](_0x7be74a[_0xbd75('0x32')]['sort']);_0x1ef1e3[_0xbd75('0x3b')]=qs[_0xbd75('0x47')](_['pick'](_0x7be74a[_0xbd75('0x32')],_0x57ed8f['filters']));if(_0x7be74a[_0xbd75('0x32')][_0xbd75('0x4c')]){_0x1ef1e3[_0xbd75('0x3b')]=_[_0xbd75('0x3d')](_0x1ef1e3['where'],{'$or':_['map'](_0x1ef1e3[_0xbd75('0x37')],function(_0x17edab){var _0x4cd1fd={};_0x4cd1fd[_0x17edab]={'$like':'%'+_0x7be74a[_0xbd75('0x32')][_0xbd75('0x4c')]+'%'};return _0x4cd1fd;})});}_0x1ef1e3=_['merge']({},_0x1ef1e3,_0x7be74a[_0xbd75('0x3f')]);return _0x2cda4c[_0xbd75('0x4d')](_0x1ef1e3);}})[_0xbd75('0x26')](function(_0x2141f3){if(_0x2141f3){_0x1b71f6=_0x2141f3[_0xbd75('0x36')];if(!_0x7be74a[_0xbd75('0x32')][_0xbd75('0x38')](_0xbd75('0x4e'))){_0x1ef1e3['limit']=qs['limit'](_0x7be74a[_0xbd75('0x32')][_0xbd75('0x21')]);_0x1ef1e3['offset']=qs[_0xbd75('0x1f')](_0x7be74a[_0xbd75('0x32')][_0xbd75('0x1f')]);}return _0x2cda4c[_0xbd75('0x4d')](_0x1ef1e3);}})['then'](function(_0x35397c){if(_0x35397c){return _0x35397c?{'count':_0x1b71f6,'rows':_0x35397c}:null;}})[_0xbd75('0x26')](respondWithResult(_0x5dc743,null))[_0xbd75('0x44')](handleError(_0x5dc743,null));};exports[_0xbd75('0x4f')]=function(_0x5b58ef,_0xc96718,_0x3b29b7){var _0x30fdb1={};var _0x2b51c5={};var _0x53d4bb;var _0x5cc3a0;return db[_0xbd75('0x40')][_0xbd75('0x50')]({'where':{'id':_0x5b58ef['params']['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0xc96718,null))[_0xbd75('0x26')](function(_0x24db17){if(_0x24db17){_0x53d4bb=_0x24db17;_0x2b51c5[_0xbd75('0x31')]=_[_0xbd75('0x33')](db['FreshdeskField'][_0xbd75('0x2d')]);_0x2b51c5[_0xbd75('0x32')]=_['keys'](_0x5b58ef['query']);_0x2b51c5['filters']=_[_0xbd75('0x34')](_0x2b51c5['model'],_0x2b51c5[_0xbd75('0x32')]);_0x30fdb1[_0xbd75('0x37')]=_[_0xbd75('0x34')](_0x2b51c5[_0xbd75('0x31')],qs[_0xbd75('0x35')](_0x5b58ef['query'][_0xbd75('0x35')]));_0x30fdb1[_0xbd75('0x37')]=_0x30fdb1[_0xbd75('0x37')][_0xbd75('0x36')]?_0x30fdb1[_0xbd75('0x37')]:_0x2b51c5[_0xbd75('0x31')];_0x30fdb1[_0xbd75('0x39')]=qs[_0xbd75('0x3a')](_0x5b58ef[_0xbd75('0x32')][_0xbd75('0x3a')]);_0x30fdb1[_0xbd75('0x3b')]=qs['filters'](_[_0xbd75('0x3c')](_0x5b58ef[_0xbd75('0x32')],_0x2b51c5[_0xbd75('0x47')]));if(_0x5b58ef[_0xbd75('0x32')][_0xbd75('0x4c')]){_0x30fdb1[_0xbd75('0x3b')]=_['merge'](_0x30fdb1[_0xbd75('0x3b')],{'$or':_['map'](_0x30fdb1[_0xbd75('0x37')],function(_0x59fa1a){var _0x553d20={};_0x553d20[_0x59fa1a]={'$like':'%'+_0x5b58ef[_0xbd75('0x32')][_0xbd75('0x4c')]+'%'};return _0x553d20;})});}_0x30fdb1=_[_0xbd75('0x3d')]({},_0x30fdb1,_0x5b58ef[_0xbd75('0x3f')]);return _0x53d4bb[_0xbd75('0x4f')](_0x30fdb1);}})['then'](function(_0x4673cd){if(_0x4673cd){_0x5cc3a0=_0x4673cd[_0xbd75('0x36')];if(!_0x5b58ef[_0xbd75('0x32')][_0xbd75('0x38')](_0xbd75('0x4e'))){_0x30fdb1['limit']=qs[_0xbd75('0x21')](_0x5b58ef[_0xbd75('0x32')][_0xbd75('0x21')]);_0x30fdb1[_0xbd75('0x1f')]=qs[_0xbd75('0x1f')](_0x5b58ef['query'][_0xbd75('0x1f')]);}return _0x53d4bb[_0xbd75('0x4f')](_0x30fdb1);}})[_0xbd75('0x26')](function(_0x3dab23){if(_0x3dab23){return _0x3dab23?{'count':_0x5cc3a0,'rows':_0x3dab23}:null;}})[_0xbd75('0x26')](respondWithResult(_0xc96718,null))[_0xbd75('0x44')](handleError(_0xc96718,null));};exports['getDescriptions']=function(_0x556822,_0x345d6c,_0x3fe961){var _0x572288={};var _0x562823={};var _0x6b7de4;var _0x3f92c3;return db[_0xbd75('0x40')]['findOne']({'where':{'id':_0x556822[_0xbd75('0x46')]['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0x345d6c,null))['then'](function(_0x5683a0){if(_0x5683a0){_0x6b7de4=_0x5683a0;_0x562823[_0xbd75('0x31')]=_['keys'](db[_0xbd75('0x4b')][_0xbd75('0x2d')]);_0x562823[_0xbd75('0x32')]=_[_0xbd75('0x33')](_0x556822[_0xbd75('0x32')]);_0x562823[_0xbd75('0x47')]=_['intersection'](_0x562823[_0xbd75('0x31')],_0x562823[_0xbd75('0x32')]);_0x572288[_0xbd75('0x37')]=_[_0xbd75('0x34')](_0x562823['model'],qs[_0xbd75('0x35')](_0x556822['query'][_0xbd75('0x35')]));_0x572288[_0xbd75('0x37')]=_0x572288['attributes'][_0xbd75('0x36')]?_0x572288[_0xbd75('0x37')]:_0x562823[_0xbd75('0x31')];_0x572288[_0xbd75('0x39')]=qs[_0xbd75('0x3a')](_0x556822[_0xbd75('0x32')][_0xbd75('0x3a')]);_0x572288['where']=qs['filters'](_[_0xbd75('0x3c')](_0x556822['query'],_0x562823[_0xbd75('0x47')]));if(_0x556822[_0xbd75('0x32')][_0xbd75('0x4c')]){_0x572288[_0xbd75('0x3b')]=_[_0xbd75('0x3d')](_0x572288[_0xbd75('0x3b')],{'$or':_[_0xbd75('0x2c')](_0x572288[_0xbd75('0x37')],function(_0x34dcf5){var _0x3ccfa6={};_0x3ccfa6[_0x34dcf5]={'$like':'%'+_0x556822[_0xbd75('0x32')][_0xbd75('0x4c')]+'%'};return _0x3ccfa6;})});}_0x572288=_[_0xbd75('0x3d')]({},_0x572288,_0x556822[_0xbd75('0x3f')]);return _0x6b7de4[_0xbd75('0x51')](_0x572288);}})[_0xbd75('0x26')](function(_0x51fe4a){if(_0x51fe4a){_0x3f92c3=_0x51fe4a['length'];if(!_0x556822[_0xbd75('0x32')][_0xbd75('0x38')](_0xbd75('0x4e'))){_0x572288[_0xbd75('0x21')]=qs[_0xbd75('0x21')](_0x556822[_0xbd75('0x32')][_0xbd75('0x21')]);_0x572288[_0xbd75('0x1f')]=qs['offset'](_0x556822[_0xbd75('0x32')]['offset']);}return _0x6b7de4['getDescriptions'](_0x572288);}})[_0xbd75('0x26')](function(_0x5dafe3){if(_0x5dafe3){return _0x5dafe3?{'count':_0x3f92c3,'rows':_0x5dafe3}:null;}})[_0xbd75('0x26')](respondWithResult(_0x345d6c,null))[_0xbd75('0x44')](handleError(_0x345d6c,null));};exports['getTags']=function(_0x5bebea,_0x5523,_0x2787a7){var _0x4aab24={};var _0x2765b0={};var _0x14a01a;var _0x35b719;return db['FreshdeskConfiguration'][_0xbd75('0x50')]({'where':{'id':_0x5bebea['params']['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0x5523,null))[_0xbd75('0x26')](function(_0x427527){if(_0x427527){_0x14a01a=_0x427527;_0x2765b0[_0xbd75('0x31')]=_[_0xbd75('0x33')](db[_0xbd75('0x52')][_0xbd75('0x2d')]);_0x2765b0[_0xbd75('0x32')]=_[_0xbd75('0x33')](_0x5bebea[_0xbd75('0x32')]);_0x2765b0['filters']=_[_0xbd75('0x34')](_0x2765b0[_0xbd75('0x31')],_0x2765b0['query']);_0x4aab24[_0xbd75('0x37')]=_[_0xbd75('0x34')](_0x2765b0[_0xbd75('0x31')],qs[_0xbd75('0x35')](_0x5bebea[_0xbd75('0x32')][_0xbd75('0x35')]));_0x4aab24[_0xbd75('0x37')]=_0x4aab24[_0xbd75('0x37')]['length']?_0x4aab24['attributes']:_0x2765b0[_0xbd75('0x31')];_0x4aab24[_0xbd75('0x39')]=qs['sort'](_0x5bebea['query'][_0xbd75('0x3a')]);_0x4aab24[_0xbd75('0x3b')]=qs[_0xbd75('0x47')](_[_0xbd75('0x3c')](_0x5bebea[_0xbd75('0x32')],_0x2765b0[_0xbd75('0x47')]));if(_0x5bebea[_0xbd75('0x32')]['filter']){_0x4aab24[_0xbd75('0x3b')]=_['merge'](_0x4aab24[_0xbd75('0x3b')],{'$or':_['map'](_0x4aab24[_0xbd75('0x37')],function(_0xa38ad){var _0x3cb774={};_0x3cb774[_0xa38ad]={'$like':'%'+_0x5bebea['query'][_0xbd75('0x4c')]+'%'};return _0x3cb774;})});}_0x4aab24=_[_0xbd75('0x3d')]({},_0x4aab24,_0x5bebea[_0xbd75('0x3f')]);return _0x14a01a['getTags'](_0x4aab24);}})[_0xbd75('0x26')](function(_0x3c8b16){if(_0x3c8b16){_0x35b719=_0x3c8b16[_0xbd75('0x36')];if(!_0x5bebea['query'][_0xbd75('0x38')](_0xbd75('0x4e'))){_0x4aab24['limit']=qs[_0xbd75('0x21')](_0x5bebea[_0xbd75('0x32')][_0xbd75('0x21')]);_0x4aab24[_0xbd75('0x1f')]=qs[_0xbd75('0x1f')](_0x5bebea[_0xbd75('0x32')][_0xbd75('0x1f')]);}return _0x14a01a[_0xbd75('0x53')](_0x4aab24);}})[_0xbd75('0x26')](function(_0x1f34d2){if(_0x1f34d2){return _0x1f34d2?{'count':_0x35b719,'rows':_0x1f34d2}:null;}})[_0xbd75('0x26')](respondWithResult(_0x5523,null))[_0xbd75('0x44')](handleError(_0x5523,null));};exports['setTags']=function(_0x2626c3,_0x3115f8,_0x2bcfc1){if(_0x2626c3[_0xbd75('0x4a')]['id']){delete _0x2626c3['body']['id'];}return db[_0xbd75('0x40')][_0xbd75('0x50')]({'where':{'id':_0x2626c3['params']['id']}})[_0xbd75('0x26')](handleEntityNotFound(_0x3115f8,null))[_0xbd75('0x26')](function(_0x38e956){if(_0x38e956){return _0x38e956[_0xbd75('0x54')](_0x2626c3[_0xbd75('0x4a')][_0xbd75('0x55')]||[]);}return null;})[_0xbd75('0x26')](respondWithResult(_0x3115f8,null))[_0xbd75('0x44')](handleError(_0x3115f8,null));};
\ No newline at end of file
+var _0x3a77=['body','find','getFields','findOne','FreshdeskField','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','then','destroy','end','name','send','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','create'];(function(_0x5a4634,_0x3b99f1){var _0x2410f8=function(_0x3546e5){while(--_0x3546e5){_0x5a4634['push'](_0x5a4634['shift']());}};_0x2410f8(++_0x3b99f1);}(_0x3a77,0x152));var _0x73a7=function(_0x54a687,_0x4ce189){_0x54a687=_0x54a687-0x0;var _0x4b5083=_0x3a77[_0x54a687];return _0x4b5083;};'use strict';var emlformat=require(_0x73a7('0x0'));var rimraf=require(_0x73a7('0x1'));var zipdir=require(_0x73a7('0x2'));var jsonpatch=require(_0x73a7('0x3'));var rp=require(_0x73a7('0x4'));var moment=require(_0x73a7('0x5'));var BPromise=require(_0x73a7('0x6'));var Mustache=require('mustache');var util=require(_0x73a7('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x73a7('0x8'));var ejs=require(_0x73a7('0x9'));var fs=require('fs');var fs_extra=require(_0x73a7('0xa'));var _=require('lodash');var squel=require(_0x73a7('0xb'));var crypto=require('crypto');var jsforce=require(_0x73a7('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x73a7('0x8'));var querystring=require('querystring');var Papa=require(_0x73a7('0xd'));var Redis=require(_0x73a7('0xe'));var authService=require(_0x73a7('0xf'));var qs=require(_0x73a7('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x73a7('0x11'))(_0x73a7('0x12'));var utils=require(_0x73a7('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x73a7('0x14'));var db=require(_0x73a7('0x15'))['db'];function respondWithStatusCode(_0x4ffb03,_0x32f112){_0x32f112=_0x32f112||0xcc;return function(_0x207e36){if(_0x207e36){return _0x4ffb03[_0x73a7('0x16')](_0x32f112);}return _0x4ffb03[_0x73a7('0x17')](_0x32f112)['end']();};}function respondWithResult(_0x4357a0,_0x22c090){_0x22c090=_0x22c090||0xc8;return function(_0x367517){if(_0x367517){return _0x4357a0[_0x73a7('0x17')](_0x22c090)['json'](_0x367517);}};}function respondWithFilteredResult(_0xe7abce,_0x6a2e13){return function(_0x4faa43){if(_0x4faa43){var _0x154642=typeof _0x6a2e13['offset']===_0x73a7('0x18')&&typeof _0x6a2e13[_0x73a7('0x19')]==='undefined';var _0x568053=_0x4faa43[_0x73a7('0x1a')];var _0x3e55d7=_0x154642?0x0:_0x6a2e13[_0x73a7('0x1b')];var _0x5e1e38=_0x154642?_0x4faa43[_0x73a7('0x1a')]:_0x6a2e13[_0x73a7('0x1b')]+_0x6a2e13[_0x73a7('0x19')];var _0x5182b6;if(_0x5e1e38>=_0x568053){_0x5e1e38=_0x568053;_0x5182b6=0xc8;}else{_0x5182b6=0xce;}_0xe7abce[_0x73a7('0x17')](_0x5182b6);return _0xe7abce[_0x73a7('0x1c')](_0x73a7('0x1d'),_0x3e55d7+'-'+_0x5e1e38+'/'+_0x568053)[_0x73a7('0x1e')](_0x4faa43);}return null;};}function patchUpdates(_0x1c3393){return function(_0x111b8f){try{jsonpatch[_0x73a7('0x1f')](_0x111b8f,_0x1c3393,!![]);}catch(_0x5eb47c){return BPromise[_0x73a7('0x20')](_0x5eb47c);}return _0x111b8f[_0x73a7('0x21')]();};}function saveUpdates(_0x5eebcd,_0x31249e){return function(_0x456f81){if(_0x456f81){return _0x456f81[_0x73a7('0x22')](_0x5eebcd)[_0x73a7('0x23')](function(_0x55bb9b){return _0x55bb9b;});}return null;};}function removeEntity(_0x4df2d2,_0x13611d){return function(_0xb1b404){if(_0xb1b404){return _0xb1b404[_0x73a7('0x24')]()['then'](function(){_0x4df2d2['status'](0xcc)[_0x73a7('0x25')]();});}};}function handleEntityNotFound(_0x1014ce,_0x2c502c){return function(_0x26a695){if(!_0x26a695){_0x1014ce['sendStatus'](0x194);}return _0x26a695;};}function handleError(_0x483c85,_0x4df08c){_0x4df08c=_0x4df08c||0x1f4;return function(_0x16d5ba){logger['error'](_0x16d5ba['stack']);if(_0x16d5ba['name']){delete _0x16d5ba[_0x73a7('0x26')];}_0x483c85[_0x73a7('0x17')](_0x4df08c)[_0x73a7('0x27')](_0x16d5ba);};}exports['index']=function(_0x2ffb32,_0x332284){var _0x49388b={},_0x12955a={},_0x6c01ac={'count':0x0,'rows':[]};var _0x584935=_[_0x73a7('0x28')](db[_0x73a7('0x29')][_0x73a7('0x2a')],function(_0x4ef06c){return{'name':_0x4ef06c[_0x73a7('0x2b')],'type':_0x4ef06c[_0x73a7('0x2c')][_0x73a7('0x2d')]};});_0x12955a['model']=_[_0x73a7('0x28')](_0x584935,'name');_0x12955a[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x2ffb32[_0x73a7('0x2e')]);_0x12955a[_0x73a7('0x30')]=_[_0x73a7('0x31')](_0x12955a[_0x73a7('0x32')],_0x12955a[_0x73a7('0x2e')]);_0x49388b[_0x73a7('0x33')]=_[_0x73a7('0x31')](_0x12955a[_0x73a7('0x32')],qs['fields'](_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x34')]));_0x49388b[_0x73a7('0x33')]=_0x49388b['attributes'][_0x73a7('0x35')]?_0x49388b[_0x73a7('0x33')]:_0x12955a[_0x73a7('0x32')];if(!_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x36')](_0x73a7('0x37'))){_0x49388b['limit']=qs[_0x73a7('0x19')](_0x2ffb32['query']['limit']);_0x49388b[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x1b')]);}_0x49388b[_0x73a7('0x38')]=qs[_0x73a7('0x39')](_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x49388b[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x2ffb32['query'],_0x12955a['filters']),_0x584935);if(_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x3c')]){_0x49388b['where']=_['merge'](_0x49388b[_0x73a7('0x3a')],{'$or':_[_0x73a7('0x28')](_0x584935,function(_0x17903f){if(_0x17903f[_0x73a7('0x2c')]!==_0x73a7('0x3d')){var _0x455dae={};_0x455dae[_0x17903f['name']]={'$like':'%'+_0x2ffb32[_0x73a7('0x2e')]['filter']+'%'};return _0x455dae;}})});}_0x49388b=_[_0x73a7('0x3e')]({},_0x49388b,_0x2ffb32[_0x73a7('0x3f')]);var _0x2e02cf={'where':_0x49388b[_0x73a7('0x3a')]};return db['FreshdeskConfiguration'][_0x73a7('0x1a')](_0x2e02cf)[_0x73a7('0x23')](function(_0x327be2){_0x6c01ac[_0x73a7('0x1a')]=_0x327be2;if(_0x2ffb32[_0x73a7('0x2e')][_0x73a7('0x40')]){_0x49388b[_0x73a7('0x41')]=[{'all':!![]}];}return db['FreshdeskConfiguration'][_0x73a7('0x42')](_0x49388b);})[_0x73a7('0x23')](function(_0x33c9a7){_0x6c01ac[_0x73a7('0x43')]=_0x33c9a7;return _0x6c01ac;})[_0x73a7('0x23')](respondWithFilteredResult(_0x332284,_0x49388b))[_0x73a7('0x44')](handleError(_0x332284,null));};exports[_0x73a7('0x45')]=function(_0x19a10f,_0x521d24){var _0x5339c8={'raw':![],'where':{'id':_0x19a10f[_0x73a7('0x46')]['id']}},_0x4a42be={};_0x4a42be[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db['FreshdeskConfiguration'][_0x73a7('0x2a')]);_0x4a42be[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x19a10f['query']);_0x4a42be['filters']=_['intersection'](_0x4a42be[_0x73a7('0x32')],_0x4a42be[_0x73a7('0x2e')]);_0x5339c8[_0x73a7('0x33')]=_['intersection'](_0x4a42be[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x19a10f['query'][_0x73a7('0x34')]));_0x5339c8[_0x73a7('0x33')]=_0x5339c8[_0x73a7('0x33')]['length']?_0x5339c8[_0x73a7('0x33')]:_0x4a42be[_0x73a7('0x32')];if(_0x19a10f[_0x73a7('0x2e')][_0x73a7('0x40')]){_0x5339c8[_0x73a7('0x41')]=[{'all':!![]}];}_0x5339c8=_[_0x73a7('0x3e')]({},_0x5339c8,_0x19a10f['options']);return db[_0x73a7('0x29')]['find'](_0x5339c8)[_0x73a7('0x23')](handleEntityNotFound(_0x521d24,null))['then'](respondWithResult(_0x521d24,null))['catch'](handleError(_0x521d24,null));};exports[_0x73a7('0x47')]=function(_0x88606,_0x4578c1){return db[_0x73a7('0x29')][_0x73a7('0x47')](_0x88606[_0x73a7('0x48')],{})['then'](respondWithResult(_0x4578c1,0xc9))['catch'](handleError(_0x4578c1,null));};exports['update']=function(_0x28ba78,_0x48c0c0){if(_0x28ba78[_0x73a7('0x48')]['id']){delete _0x28ba78[_0x73a7('0x48')]['id'];}return db[_0x73a7('0x29')]['find']({'where':{'id':_0x28ba78['params']['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x48c0c0,null))[_0x73a7('0x23')](saveUpdates(_0x28ba78['body'],null))['then'](respondWithResult(_0x48c0c0,null))['catch'](handleError(_0x48c0c0,null));};exports[_0x73a7('0x24')]=function(_0x2ba896,_0xbc255b){return db[_0x73a7('0x29')][_0x73a7('0x49')]({'where':{'id':_0x2ba896[_0x73a7('0x46')]['id']}})['then'](handleEntityNotFound(_0xbc255b,null))[_0x73a7('0x23')](removeEntity(_0xbc255b,null))[_0x73a7('0x44')](handleError(_0xbc255b,null));};exports[_0x73a7('0x4a')]=function(_0x2df85a,_0x5adbd7,_0x35fad6){var _0x509f27={};var _0x13e2f8={};var _0x279f51;var _0x4107c0;return db['FreshdeskConfiguration'][_0x73a7('0x4b')]({'where':{'id':_0x2df85a['params']['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x5adbd7,null))[_0x73a7('0x23')](function(_0x1b76ab){if(_0x1b76ab){_0x279f51=_0x1b76ab;_0x13e2f8['model']=_[_0x73a7('0x2f')](db[_0x73a7('0x4c')][_0x73a7('0x2a')]);_0x13e2f8[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x2df85a[_0x73a7('0x2e')]);_0x13e2f8[_0x73a7('0x30')]=_[_0x73a7('0x31')](_0x13e2f8[_0x73a7('0x32')],_0x13e2f8['query']);_0x509f27[_0x73a7('0x33')]=_[_0x73a7('0x31')](_0x13e2f8[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x34')]));_0x509f27['attributes']=_0x509f27[_0x73a7('0x33')][_0x73a7('0x35')]?_0x509f27[_0x73a7('0x33')]:_0x13e2f8[_0x73a7('0x32')];_0x509f27['order']=qs[_0x73a7('0x39')](_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x509f27[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x2df85a[_0x73a7('0x2e')],_0x13e2f8['filters']));if(_0x2df85a['query'][_0x73a7('0x3c')]){_0x509f27[_0x73a7('0x3a')]=_[_0x73a7('0x3e')](_0x509f27['where'],{'$or':_['map'](_0x509f27[_0x73a7('0x33')],function(_0x1eb31d){var _0x2db418={};_0x2db418[_0x1eb31d]={'$like':'%'+_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x3c')]+'%'};return _0x2db418;})});}_0x509f27=_[_0x73a7('0x3e')]({},_0x509f27,_0x2df85a[_0x73a7('0x3f')]);return _0x279f51[_0x73a7('0x4a')](_0x509f27);}})[_0x73a7('0x23')](function(_0x280c46){if(_0x280c46){_0x4107c0=_0x280c46[_0x73a7('0x35')];if(!_0x2df85a[_0x73a7('0x2e')]['hasOwnProperty']('nolimit')){_0x509f27[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x2df85a[_0x73a7('0x2e')]['limit']);_0x509f27[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x2df85a[_0x73a7('0x2e')][_0x73a7('0x1b')]);}return _0x279f51[_0x73a7('0x4a')](_0x509f27);}})[_0x73a7('0x23')](function(_0x3e7313){if(_0x3e7313){return _0x3e7313?{'count':_0x4107c0,'rows':_0x3e7313}:null;}})[_0x73a7('0x23')](respondWithResult(_0x5adbd7,null))[_0x73a7('0x44')](handleError(_0x5adbd7,null));};exports[_0x73a7('0x4d')]=function(_0x174060,_0x433758,_0x19bd4f){var _0x201d30={};var _0x55d061={};var _0x27b6c6;var _0x16aadc;return db['FreshdeskConfiguration'][_0x73a7('0x4b')]({'where':{'id':_0x174060[_0x73a7('0x46')]['id']}})['then'](handleEntityNotFound(_0x433758,null))['then'](function(_0x411feb){if(_0x411feb){_0x27b6c6=_0x411feb;_0x55d061[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db[_0x73a7('0x4c')]['rawAttributes']);_0x55d061['query']=_[_0x73a7('0x2f')](_0x174060[_0x73a7('0x2e')]);_0x55d061['filters']=_['intersection'](_0x55d061[_0x73a7('0x32')],_0x55d061['query']);_0x201d30[_0x73a7('0x33')]=_[_0x73a7('0x31')](_0x55d061['model'],qs[_0x73a7('0x34')](_0x174060['query'][_0x73a7('0x34')]));_0x201d30['attributes']=_0x201d30['attributes'][_0x73a7('0x35')]?_0x201d30['attributes']:_0x55d061[_0x73a7('0x32')];_0x201d30[_0x73a7('0x38')]=qs['sort'](_0x174060[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x201d30['where']=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x174060[_0x73a7('0x2e')],_0x55d061[_0x73a7('0x30')]));if(_0x174060[_0x73a7('0x2e')][_0x73a7('0x3c')]){_0x201d30[_0x73a7('0x3a')]=_['merge'](_0x201d30[_0x73a7('0x3a')],{'$or':_['map'](_0x201d30[_0x73a7('0x33')],function(_0x137e88){var _0x592e77={};_0x592e77[_0x137e88]={'$like':'%'+_0x174060['query'][_0x73a7('0x3c')]+'%'};return _0x592e77;})});}_0x201d30=_['merge']({},_0x201d30,_0x174060[_0x73a7('0x3f')]);return _0x27b6c6[_0x73a7('0x4d')](_0x201d30);}})[_0x73a7('0x23')](function(_0x467581){if(_0x467581){_0x16aadc=_0x467581['length'];if(!_0x174060['query'][_0x73a7('0x36')]('nolimit')){_0x201d30[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x174060['query'][_0x73a7('0x19')]);_0x201d30[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x174060[_0x73a7('0x2e')]['offset']);}return _0x27b6c6['getSubjects'](_0x201d30);}})[_0x73a7('0x23')](function(_0x5c2d05){if(_0x5c2d05){return _0x5c2d05?{'count':_0x16aadc,'rows':_0x5c2d05}:null;}})[_0x73a7('0x23')](respondWithResult(_0x433758,null))['catch'](handleError(_0x433758,null));};exports[_0x73a7('0x4e')]=function(_0x3a0ca9,_0x525b69,_0x345388){var _0x5462fb={};var _0x1312cb={};var _0xbf2423;var _0x14458f;return db[_0x73a7('0x29')][_0x73a7('0x4b')]({'where':{'id':_0x3a0ca9[_0x73a7('0x46')]['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x525b69,null))['then'](function(_0x19e201){if(_0x19e201){_0xbf2423=_0x19e201;_0x1312cb[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db[_0x73a7('0x4c')][_0x73a7('0x2a')]);_0x1312cb[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x3a0ca9[_0x73a7('0x2e')]);_0x1312cb[_0x73a7('0x30')]=_['intersection'](_0x1312cb[_0x73a7('0x32')],_0x1312cb[_0x73a7('0x2e')]);_0x5462fb['attributes']=_['intersection'](_0x1312cb[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x34')]));_0x5462fb[_0x73a7('0x33')]=_0x5462fb[_0x73a7('0x33')][_0x73a7('0x35')]?_0x5462fb[_0x73a7('0x33')]:_0x1312cb[_0x73a7('0x32')];_0x5462fb[_0x73a7('0x38')]=qs[_0x73a7('0x39')](_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x39')]);_0x5462fb[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x3a0ca9[_0x73a7('0x2e')],_0x1312cb[_0x73a7('0x30')]));if(_0x3a0ca9['query'][_0x73a7('0x3c')]){_0x5462fb[_0x73a7('0x3a')]=_[_0x73a7('0x3e')](_0x5462fb['where'],{'$or':_['map'](_0x5462fb[_0x73a7('0x33')],function(_0x576126){var _0x334182={};_0x334182[_0x576126]={'$like':'%'+_0x3a0ca9[_0x73a7('0x2e')]['filter']+'%'};return _0x334182;})});}_0x5462fb=_[_0x73a7('0x3e')]({},_0x5462fb,_0x3a0ca9[_0x73a7('0x3f')]);return _0xbf2423[_0x73a7('0x4e')](_0x5462fb);}})[_0x73a7('0x23')](function(_0x5a66e4){if(_0x5a66e4){_0x14458f=_0x5a66e4['length'];if(!_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x36')]('nolimit')){_0x5462fb[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x3a0ca9['query'][_0x73a7('0x19')]);_0x5462fb[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x3a0ca9[_0x73a7('0x2e')][_0x73a7('0x1b')]);}return _0xbf2423[_0x73a7('0x4e')](_0x5462fb);}})[_0x73a7('0x23')](function(_0x3a96dd){if(_0x3a96dd){return _0x3a96dd?{'count':_0x14458f,'rows':_0x3a96dd}:null;}})[_0x73a7('0x23')](respondWithResult(_0x525b69,null))['catch'](handleError(_0x525b69,null));};exports[_0x73a7('0x4f')]=function(_0x1d2675,_0xfa9a01,_0x1d9e9b){var _0xed7cbc={};var _0x1e02db={};var _0x44225e;var _0x1b31e0;return db[_0x73a7('0x29')]['findOne']({'where':{'id':_0x1d2675[_0x73a7('0x46')]['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0xfa9a01,null))[_0x73a7('0x23')](function(_0x5538b9){if(_0x5538b9){_0x44225e=_0x5538b9;_0x1e02db[_0x73a7('0x32')]=_[_0x73a7('0x2f')](db[_0x73a7('0x50')]['rawAttributes']);_0x1e02db[_0x73a7('0x2e')]=_[_0x73a7('0x2f')](_0x1d2675[_0x73a7('0x2e')]);_0x1e02db['filters']=_[_0x73a7('0x31')](_0x1e02db[_0x73a7('0x32')],_0x1e02db['query']);_0xed7cbc[_0x73a7('0x33')]=_['intersection'](_0x1e02db[_0x73a7('0x32')],qs[_0x73a7('0x34')](_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x34')]));_0xed7cbc[_0x73a7('0x33')]=_0xed7cbc['attributes'][_0x73a7('0x35')]?_0xed7cbc[_0x73a7('0x33')]:_0x1e02db['model'];_0xed7cbc[_0x73a7('0x38')]=qs[_0x73a7('0x39')](_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x39')]);_0xed7cbc[_0x73a7('0x3a')]=qs[_0x73a7('0x30')](_[_0x73a7('0x3b')](_0x1d2675['query'],_0x1e02db['filters']));if(_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x3c')]){_0xed7cbc['where']=_[_0x73a7('0x3e')](_0xed7cbc[_0x73a7('0x3a')],{'$or':_[_0x73a7('0x28')](_0xed7cbc[_0x73a7('0x33')],function(_0x4664af){var _0x668dde={};_0x668dde[_0x4664af]={'$like':'%'+_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x3c')]+'%'};return _0x668dde;})});}_0xed7cbc=_[_0x73a7('0x3e')]({},_0xed7cbc,_0x1d2675[_0x73a7('0x3f')]);return _0x44225e[_0x73a7('0x4f')](_0xed7cbc);}})['then'](function(_0xb6d814){if(_0xb6d814){_0x1b31e0=_0xb6d814['length'];if(!_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x36')](_0x73a7('0x37'))){_0xed7cbc[_0x73a7('0x19')]=qs[_0x73a7('0x19')](_0x1d2675['query'][_0x73a7('0x19')]);_0xed7cbc[_0x73a7('0x1b')]=qs[_0x73a7('0x1b')](_0x1d2675[_0x73a7('0x2e')][_0x73a7('0x1b')]);}return _0x44225e[_0x73a7('0x4f')](_0xed7cbc);}})[_0x73a7('0x23')](function(_0x345314){if(_0x345314){return _0x345314?{'count':_0x1b31e0,'rows':_0x345314}:null;}})[_0x73a7('0x23')](respondWithResult(_0xfa9a01,null))[_0x73a7('0x44')](handleError(_0xfa9a01,null));};exports['setTags']=function(_0x1a8e40,_0x63391f,_0x3bc536){if(_0x1a8e40['body']['id']){delete _0x1a8e40[_0x73a7('0x48')]['id'];}return db[_0x73a7('0x29')][_0x73a7('0x4b')]({'where':{'id':_0x1a8e40[_0x73a7('0x46')]['id']}})[_0x73a7('0x23')](handleEntityNotFound(_0x63391f,null))[_0x73a7('0x23')](function(_0x517143){if(_0x517143){return _0x517143[_0x73a7('0x51')](_0x1a8e40[_0x73a7('0x48')]['ids']||[]);}return null;})['then'](respondWithResult(_0x63391f,null))[_0x73a7('0x44')](handleError(_0x63391f,null));};
\ No newline at end of file
index 132246b..20d2895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f5b=['../../config/logger','moment','rimraf','../../config/environment','define','int_freshdesk_configurations','lodash','util'];(function(_0x2e004e,_0x497ad3){var _0x3e5dff=function(_0xf756fc){while(--_0xf756fc){_0x2e004e['push'](_0x2e004e['shift']());}};_0x3e5dff(++_0x497ad3);}(_0x2f5b,0xe6));var _0xb2f5=function(_0x2fbce8,_0xd456fc){_0x2fbce8=_0x2fbce8-0x0;var _0x3b30ac=_0x2f5b[_0x2fbce8];return _0x3b30ac;};'use strict';var _=require(_0xb2f5('0x0'));var util=require(_0xb2f5('0x1'));var logger=require(_0xb2f5('0x2'))('api');var moment=require(_0xb2f5('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb2f5('0x4'));var config=require(_0xb2f5('0x5'));var attributes=require('./intFreshdeskConfiguration.attributes');module['exports']=function(_0x5be582,_0x441a91){return _0x5be582[_0xb2f5('0x6')]('FreshdeskConfiguration',attributes,{'tableName':_0xb2f5('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3698=['exports','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./intFreshdeskConfiguration.attributes'];(function(_0x6f6e64,_0x495938){var _0xf7445a=function(_0x42f400){while(--_0x42f400){_0x6f6e64['push'](_0x6f6e64['shift']());}};_0xf7445a(++_0x495938);}(_0x3698,0xd4));var _0x8369=function(_0x464d1b,_0x4d4525){_0x464d1b=_0x464d1b-0x0;var _0x1b21c0=_0x3698[_0x464d1b];return _0x1b21c0;};'use strict';var _=require(_0x8369('0x0'));var util=require(_0x8369('0x1'));var logger=require(_0x8369('0x2'))(_0x8369('0x3'));var moment=require(_0x8369('0x4'));var BPromise=require(_0x8369('0x5'));var rp=require(_0x8369('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8369('0x7'));module[_0x8369('0x8')]=function(_0x110ab5,_0x1c498a){return _0x110ab5['define'](_0x8369('0x9'),attributes,{'tableName':_0x8369('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b071d7..a0c699a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3233=['message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','debug','request\x20sent','stringify','error','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x117f98,_0x116788){var _0x441ca3=function(_0x501b42){while(--_0x501b42){_0x117f98['push'](_0x117f98['shift']());}};_0x441ca3(++_0x116788);}(_0x3233,0xe7));var _0x3323=function(_0x1d382e,_0x2522a6){_0x1d382e=_0x1d382e-0x0;var _0x2b7968=_0x3233[_0x1d382e];return _0x2b7968;};'use strict';var _=require('lodash');var util=require(_0x3323('0x0'));var moment=require('moment');var BPromise=require(_0x3323('0x1'));var rs=require(_0x3323('0x2'));var fs=require('fs');var Redis=require(_0x3323('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3323('0x4'));var logger=require(_0x3323('0x5'))('rpc');var config=require(_0x3323('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3323('0x7')][_0x3323('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x543a5d,_0x46fd89,_0x296104){return new BPromise(function(_0x4b335a,_0xe3a3bf){return client[_0x3323('0x9')](_0x543a5d,_0x296104)['then'](function(_0x542f8a){logger[_0x3323('0xa')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x46fd89,'request\x20sent');logger[_0x3323('0xb')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x46fd89,_0x3323('0xc'),JSON[_0x3323('0xd')](_0x542f8a));if(_0x542f8a['error']){if(_0x542f8a[_0x3323('0xe')]['code']===0x1f4){logger[_0x3323('0xe')](_0x3323('0xf'),_0x46fd89,_0x542f8a[_0x3323('0xe')][_0x3323('0x10')]);return _0xe3a3bf(_0x542f8a['error'][_0x3323('0x10')]);}logger['error'](_0x3323('0xf'),_0x46fd89,_0x542f8a[_0x3323('0xe')]['message']);return _0x4b335a(_0x542f8a['error'][_0x3323('0x10')]);}else{logger['info'](_0x3323('0xf'),_0x46fd89,_0x3323('0xc'));_0x4b335a(_0x542f8a[_0x3323('0x11')][_0x3323('0x10')]);}})[_0x3323('0x12')](function(_0x3e31e7){logger[_0x3323('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x46fd89,_0x3e31e7);_0xe3a3bf(_0x3e31e7);});});}
\ No newline at end of file
+var _0x8a03=['rpc','../../config/environment','jayson/promise','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','bluebird','ioredis'];(function(_0x3a994f,_0x3fec47){var _0x58916c=function(_0x178043){while(--_0x178043){_0x3a994f['push'](_0x3a994f['shift']());}};_0x58916c(++_0x3fec47);}(_0x8a03,0xdd));var _0x38a0=function(_0x2f4d00,_0x492fea){_0x2f4d00=_0x2f4d00-0x0;var _0x1070c8=_0x8a03[_0x2f4d00];return _0x1070c8;};'use strict';var _=require(_0x38a0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x38a0('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38a0('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x38a0('0x3'));var config=require(_0x38a0('0x4'));var jayson=require(_0x38a0('0x5'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x51bdd3,_0x23f85b,_0x5958a5){return new BPromise(function(_0x390226,_0x264d5c){return client['request'](_0x51bdd3,_0x5958a5)[_0x38a0('0x6')](function(_0x18b30c){logger[_0x38a0('0x7')](_0x38a0('0x8'),_0x23f85b,_0x38a0('0x9'));logger[_0x38a0('0xa')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x23f85b,'request\x20sent',JSON[_0x38a0('0xb')](_0x18b30c));if(_0x18b30c['error']){if(_0x18b30c[_0x38a0('0xc')]['code']===0x1f4){logger['error'](_0x38a0('0x8'),_0x23f85b,_0x18b30c[_0x38a0('0xc')][_0x38a0('0xd')]);return _0x264d5c(_0x18b30c['error']['message']);}logger[_0x38a0('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x23f85b,_0x18b30c[_0x38a0('0xc')][_0x38a0('0xd')]);return _0x390226(_0x18b30c[_0x38a0('0xc')][_0x38a0('0xd')]);}else{logger[_0x38a0('0x7')](_0x38a0('0x8'),_0x23f85b,_0x38a0('0x9'));_0x390226(_0x18b30c[_0x38a0('0xe')][_0x38a0('0xd')]);}})[_0x38a0('0xf')](function(_0x214e8c){logger['error'](_0x38a0('0x8'),_0x23f85b,_0x214e8c);_0x264d5c(_0x214e8c);});});}
\ No newline at end of file
index a17dbec..5ae8cd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x623e=['./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x27ed28,_0xb643a6){var _0x3c7559=function(_0x28725e){while(--_0x28725e){_0x27ed28['push'](_0x27ed28['shift']());}};_0x3c7559(++_0xb643a6);}(_0x623e,0x8c));var _0xe623=function(_0x4530df,_0x31f387){_0x4530df=_0x4530df-0x0;var _0x3e4f08=_0x623e[_0x4530df];return _0x3e4f08;};'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[_0xe623('0x0')]();var fs_extra=require('fs-extra');var auth=require(_0xe623('0x1'));var interaction=require(_0xe623('0x2'));var config=require(_0xe623('0x3'));var controller=require(_0xe623('0x4'));router[_0xe623('0x5')]('/',auth[_0xe623('0x6')](),controller[_0xe623('0x7')]);router[_0xe623('0x5')](_0xe623('0x8'),auth['isAuthenticated'](),controller[_0xe623('0x9')]);router[_0xe623('0xa')]('/',auth[_0xe623('0x6')](),controller[_0xe623('0xb')]);router[_0xe623('0xc')](_0xe623('0x8'),auth[_0xe623('0x6')](),controller[_0xe623('0xd')]);router['delete']('/:id',auth[_0xe623('0x6')](),controller[_0xe623('0xe')]);module[_0xe623('0xf')]=router;
\ No newline at end of file
+var _0xe088=['update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','./intFreshdeskField.controller','get','isAuthenticated','post','create','put','/:id'];(function(_0x175e89,_0x20835f){var _0x2ed996=function(_0x56239f){while(--_0x56239f){_0x175e89['push'](_0x175e89['shift']());}};_0x2ed996(++_0x20835f);}(_0xe088,0x1ad));var _0x8e08=function(_0x5f58bb,_0x3f0bad){_0x5f58bb=_0x5f58bb-0x0;var _0xcc672d=_0xe088[_0x5f58bb];return _0xcc672d;};'use strict';var multer=require(_0x8e08('0x0'));var util=require(_0x8e08('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8e08('0x2'));var router=express[_0x8e08('0x3')]();var fs_extra=require(_0x8e08('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8e08('0x5'));var config=require('../../config/environment');var controller=require(_0x8e08('0x6'));router[_0x8e08('0x7')]('/',auth[_0x8e08('0x8')](),controller['index']);router[_0x8e08('0x7')]('/:id',auth[_0x8e08('0x8')](),controller['show']);router[_0x8e08('0x9')]('/',auth[_0x8e08('0x8')](),controller[_0x8e08('0xa')]);router[_0x8e08('0xb')](_0x8e08('0xc'),auth[_0x8e08('0x8')](),controller[_0x8e08('0xd')]);router[_0x8e08('0xe')](_0x8e08('0xc'),auth[_0x8e08('0x8')](),controller[_0x8e08('0xf')]);module[_0x8e08('0x10')]=router;
\ No newline at end of file
index a88b0b5..e4fa86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd411=['string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','ENUM'];(function(_0x49dc76,_0x4fdb01){var _0x1344a9=function(_0x4f599a){while(--_0x4f599a){_0x49dc76['push'](_0x49dc76['shift']());}};_0x1344a9(++_0x4fdb01);}(_0xd411,0x1d7));var _0x1d41=function(_0xe93582,_0x222871){_0xe93582=_0xe93582-0x0;var _0x25ebb1=_0xd411[_0xe93582];return _0x25ebb1;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x1d41('0x0')](_0x1d41('0x1'),'variable',_0x1d41('0x2'),_0x1d41('0x3'),_0x1d41('0x4')),'defaultValue':_0x1d41('0x1')},'content':{'type':Sequelize[_0x1d41('0x5')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x1d41('0x0')](_0x1d41('0x1'),_0x1d41('0x6'),_0x1d41('0x2'))},'keyContent':{'type':Sequelize[_0x1d41('0x5')]},'idField':{'type':Sequelize[_0x1d41('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x1d41('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x1d41('0x5')]}};
\ No newline at end of file
+var _0x5505=['variable','customVariable','STRING','ENUM','BOOLEAN','sequelize','exports','string'];(function(_0x39340a,_0x533d5a){var _0x27fa75=function(_0x176dd0){while(--_0x176dd0){_0x39340a['push'](_0x39340a['shift']());}};_0x27fa75(++_0x533d5a);}(_0x5505,0x18d));var _0x5550=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x5505[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x5550('0x0'));module[_0x5550('0x1')]={'type':{'type':Sequelize['ENUM'](_0x5550('0x2'),_0x5550('0x3'),_0x5550('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x5550('0x5')]},'keyType':{'type':Sequelize[_0x5550('0x6')](_0x5550('0x2'),_0x5550('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x5550('0x5')]},'idField':{'type':Sequelize[_0x5550('0x5')]},'nameField':{'type':Sequelize[_0x5550('0x5')]},'customField':{'type':Sequelize[_0x5550('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ec6985b..7a1cf5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5712=['fieldName','type','query','keys','filters','intersection','attributes','model','fields','offset','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','count','limit','set','Content-Range','apply','save','then','destroy','name','send','index','map','FreshdeskField','rawAttributes'];(function(_0x22e47a,_0x4ea10c){var _0x15a12a=function(_0x4a097f){while(--_0x4a097f){_0x22e47a['push'](_0x22e47a['shift']());}};_0x15a12a(++_0x4ea10c);}(_0x5712,0x140));var _0x2571=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5712[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2571('0x0'));var rimraf=require(_0x2571('0x1'));var zipdir=require(_0x2571('0x2'));var jsonpatch=require(_0x2571('0x3'));var rp=require(_0x2571('0x4'));var moment=require(_0x2571('0x5'));var BPromise=require(_0x2571('0x6'));var Mustache=require(_0x2571('0x7'));var util=require(_0x2571('0x8'));var path=require(_0x2571('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2571('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2571('0xb'));var squel=require(_0x2571('0xc'));var crypto=require(_0x2571('0xd'));var jsforce=require(_0x2571('0xe'));var deskjs=require(_0x2571('0xf'));var toCsv=require(_0x2571('0x10'));var querystring=require('querystring');var Papa=require(_0x2571('0x11'));var Redis=require('ioredis');var authService=require(_0x2571('0x12'));var qs=require(_0x2571('0x13'));var as=require(_0x2571('0x14'));var hardwareService=require(_0x2571('0x15'));var logger=require(_0x2571('0x16'))(_0x2571('0x17'));var utils=require(_0x2571('0x18'));var config=require(_0x2571('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33d3ed,_0x1ab846){_0x1ab846=_0x1ab846||0xcc;return function(_0x10823d){if(_0x10823d){return _0x33d3ed[_0x2571('0x1a')](_0x1ab846);}return _0x33d3ed[_0x2571('0x1b')](_0x1ab846)[_0x2571('0x1c')]();};}function respondWithResult(_0x241129,_0x130ab1){_0x130ab1=_0x130ab1||0xc8;return function(_0xdf8c3a){if(_0xdf8c3a){return _0x241129[_0x2571('0x1b')](_0x130ab1)[_0x2571('0x1d')](_0xdf8c3a);}};}function respondWithFilteredResult(_0x3c1a08,_0x5b0392){return function(_0x30b0f2){if(_0x30b0f2){var _0x47b5e9=typeof _0x5b0392['offset']==='undefined'&&typeof _0x5b0392['limit']===_0x2571('0x1e');var _0x371ae2=_0x30b0f2[_0x2571('0x1f')];var _0x75af2a=_0x47b5e9?0x0:_0x5b0392['offset'];var _0x7707=_0x47b5e9?_0x30b0f2[_0x2571('0x1f')]:_0x5b0392['offset']+_0x5b0392[_0x2571('0x20')];var _0x7303ad;if(_0x7707>=_0x371ae2){_0x7707=_0x371ae2;_0x7303ad=0xc8;}else{_0x7303ad=0xce;}_0x3c1a08[_0x2571('0x1b')](_0x7303ad);return _0x3c1a08[_0x2571('0x21')](_0x2571('0x22'),_0x75af2a+'-'+_0x7707+'/'+_0x371ae2)['json'](_0x30b0f2);}return null;};}function patchUpdates(_0x52da27){return function(_0x5fe030){try{jsonpatch[_0x2571('0x23')](_0x5fe030,_0x52da27,!![]);}catch(_0x58f6aa){return BPromise['reject'](_0x58f6aa);}return _0x5fe030[_0x2571('0x24')]();};}function saveUpdates(_0x2e7d89,_0x2218fb){return function(_0xb6dfa6){if(_0xb6dfa6){return _0xb6dfa6['update'](_0x2e7d89)[_0x2571('0x25')](function(_0x55ec06){return _0x55ec06;});}return null;};}function removeEntity(_0x1ec23c,_0x4316b1){return function(_0x5d6778){if(_0x5d6778){return _0x5d6778[_0x2571('0x26')]()[_0x2571('0x25')](function(){_0x1ec23c[_0x2571('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d455d,_0x77e02){return function(_0x1cbbdc){if(!_0x1cbbdc){_0x5d455d[_0x2571('0x1a')](0x194);}return _0x1cbbdc;};}function handleError(_0x1547d2,_0x2f5cae){_0x2f5cae=_0x2f5cae||0x1f4;return function(_0x246bbd){logger['error'](_0x246bbd['stack']);if(_0x246bbd[_0x2571('0x27')]){delete _0x246bbd[_0x2571('0x27')];}_0x1547d2[_0x2571('0x1b')](_0x2f5cae)[_0x2571('0x28')](_0x246bbd);};}exports[_0x2571('0x29')]=function(_0x165aa8,_0x3d5660){var _0x315dc1={},_0x1f7562={},_0xac59bc={'count':0x0,'rows':[]};var _0x5b3373=_[_0x2571('0x2a')](db[_0x2571('0x2b')][_0x2571('0x2c')],function(_0x441e7d){return{'name':_0x441e7d[_0x2571('0x2d')],'type':_0x441e7d[_0x2571('0x2e')]['key']};});_0x1f7562['model']=_[_0x2571('0x2a')](_0x5b3373,_0x2571('0x27'));_0x1f7562[_0x2571('0x2f')]=_[_0x2571('0x30')](_0x165aa8['query']);_0x1f7562[_0x2571('0x31')]=_[_0x2571('0x32')](_0x1f7562['model'],_0x1f7562['query']);_0x315dc1[_0x2571('0x33')]=_[_0x2571('0x32')](_0x1f7562[_0x2571('0x34')],qs['fields'](_0x165aa8[_0x2571('0x2f')][_0x2571('0x35')]));_0x315dc1['attributes']=_0x315dc1[_0x2571('0x33')]['length']?_0x315dc1[_0x2571('0x33')]:_0x1f7562[_0x2571('0x34')];if(!_0x165aa8[_0x2571('0x2f')]['hasOwnProperty']('nolimit')){_0x315dc1[_0x2571('0x20')]=qs['limit'](_0x165aa8[_0x2571('0x2f')][_0x2571('0x20')]);_0x315dc1[_0x2571('0x36')]=qs[_0x2571('0x36')](_0x165aa8['query'][_0x2571('0x36')]);}_0x315dc1[_0x2571('0x37')]=qs['sort'](_0x165aa8[_0x2571('0x2f')][_0x2571('0x38')]);_0x315dc1['where']=qs[_0x2571('0x31')](_[_0x2571('0x39')](_0x165aa8[_0x2571('0x2f')],_0x1f7562[_0x2571('0x31')]),_0x5b3373);if(_0x165aa8[_0x2571('0x2f')][_0x2571('0x3a')]){_0x315dc1[_0x2571('0x3b')]=_[_0x2571('0x3c')](_0x315dc1[_0x2571('0x3b')],{'$or':_[_0x2571('0x2a')](_0x5b3373,function(_0x379a45){if(_0x379a45[_0x2571('0x2e')]!==_0x2571('0x3d')){var _0x198f44={};_0x198f44[_0x379a45['name']]={'$like':'%'+_0x165aa8[_0x2571('0x2f')][_0x2571('0x3a')]+'%'};return _0x198f44;}})});}_0x315dc1=_[_0x2571('0x3c')]({},_0x315dc1,_0x165aa8[_0x2571('0x3e')]);var _0x158432={'where':_0x315dc1[_0x2571('0x3b')]};return db[_0x2571('0x2b')]['count'](_0x158432)[_0x2571('0x25')](function(_0x15c610){_0xac59bc[_0x2571('0x1f')]=_0x15c610;if(_0x165aa8['query'][_0x2571('0x3f')]){_0x315dc1[_0x2571('0x40')]=[{'all':!![]}];}return db[_0x2571('0x2b')]['findAll'](_0x315dc1);})[_0x2571('0x25')](function(_0x1c6ccd){_0xac59bc[_0x2571('0x41')]=_0x1c6ccd;return _0xac59bc;})[_0x2571('0x25')](respondWithFilteredResult(_0x3d5660,_0x315dc1))[_0x2571('0x42')](handleError(_0x3d5660,null));};exports[_0x2571('0x43')]=function(_0x3a817a,_0x45fdd9){var _0x3d4004={'raw':!![],'where':{'id':_0x3a817a[_0x2571('0x44')]['id']}},_0x5d2734={};_0x5d2734[_0x2571('0x34')]=_[_0x2571('0x30')](db[_0x2571('0x2b')][_0x2571('0x2c')]);_0x5d2734[_0x2571('0x2f')]=_[_0x2571('0x30')](_0x3a817a[_0x2571('0x2f')]);_0x5d2734['filters']=_['intersection'](_0x5d2734['model'],_0x5d2734['query']);_0x3d4004['attributes']=_['intersection'](_0x5d2734[_0x2571('0x34')],qs[_0x2571('0x35')](_0x3a817a['query'][_0x2571('0x35')]));_0x3d4004[_0x2571('0x33')]=_0x3d4004[_0x2571('0x33')][_0x2571('0x45')]?_0x3d4004[_0x2571('0x33')]:_0x5d2734['model'];if(_0x3a817a['query']['includeAll']){_0x3d4004[_0x2571('0x40')]=[{'all':!![]}];}_0x3d4004=_[_0x2571('0x3c')]({},_0x3d4004,_0x3a817a[_0x2571('0x3e')]);return db[_0x2571('0x2b')][_0x2571('0x46')](_0x3d4004)[_0x2571('0x25')](handleEntityNotFound(_0x45fdd9,null))[_0x2571('0x25')](respondWithResult(_0x45fdd9,null))['catch'](handleError(_0x45fdd9,null));};exports[_0x2571('0x47')]=function(_0x20189c,_0x1642a8){return db['FreshdeskField'][_0x2571('0x47')](_0x20189c[_0x2571('0x48')],{})[_0x2571('0x25')](respondWithResult(_0x1642a8,0xc9))[_0x2571('0x42')](handleError(_0x1642a8,null));};exports['update']=function(_0x18291c,_0x245edb){if(_0x18291c[_0x2571('0x48')]['id']){delete _0x18291c[_0x2571('0x48')]['id'];}return db['FreshdeskField'][_0x2571('0x46')]({'where':{'id':_0x18291c[_0x2571('0x44')]['id']}})[_0x2571('0x25')](handleEntityNotFound(_0x245edb,null))[_0x2571('0x25')](saveUpdates(_0x18291c[_0x2571('0x48')],null))['then'](respondWithResult(_0x245edb,null))[_0x2571('0x42')](handleError(_0x245edb,null));};exports[_0x2571('0x26')]=function(_0x20302b,_0x1d2e36){return db[_0x2571('0x2b')][_0x2571('0x46')]({'where':{'id':_0x20302b['params']['id']}})['then'](handleEntityNotFound(_0x1d2e36,null))[_0x2571('0x25')](removeEntity(_0x1d2e36,null))['catch'](handleError(_0x1d2e36,null));};
\ No newline at end of file
+var _0x7fce=['merge','VIRTUAL','includeAll','include','FreshdeskField','findAll','show','params','options','find','create','body','catch','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','end','status','offset','undefined','limit','count','set','Content-Range','json','reject','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','type','model','keys','filters','intersection','fields','query','attributes','length','nolimit','order','sort','where','pick','filter'];(function(_0x3387dd,_0x12cba3){var _0x34d6b2=function(_0x16e4e3){while(--_0x16e4e3){_0x3387dd['push'](_0x3387dd['shift']());}};_0x34d6b2(++_0x12cba3);}(_0x7fce,0xdc));var _0xe7fc=function(_0x5165e7,_0x47b3c5){_0x5165e7=_0x5165e7-0x0;var _0x11e2c6=_0x7fce[_0x5165e7];return _0x11e2c6;};'use strict';var emlformat=require(_0xe7fc('0x0'));var rimraf=require(_0xe7fc('0x1'));var zipdir=require(_0xe7fc('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe7fc('0x3'));var moment=require('moment');var BPromise=require(_0xe7fc('0x4'));var Mustache=require('mustache');var util=require(_0xe7fc('0x5'));var path=require(_0xe7fc('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe7fc('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe7fc('0x8'));var squel=require(_0xe7fc('0x9'));var crypto=require(_0xe7fc('0xa'));var jsforce=require(_0xe7fc('0xb'));var deskjs=require(_0xe7fc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe7fc('0xd'));var Papa=require('papaparse');var Redis=require(_0xe7fc('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe7fc('0xf'));var as=require(_0xe7fc('0x10'));var hardwareService=require(_0xe7fc('0x11'));var logger=require(_0xe7fc('0x12'))('api');var utils=require(_0xe7fc('0x13'));var config=require(_0xe7fc('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x243600,_0x59da2e){_0x59da2e=_0x59da2e||0xcc;return function(_0x38512a){if(_0x38512a){return _0x243600['sendStatus'](_0x59da2e);}return _0x243600['status'](_0x59da2e)[_0xe7fc('0x15')]();};}function respondWithResult(_0x14fcbf,_0x235692){_0x235692=_0x235692||0xc8;return function(_0x307f58){if(_0x307f58){return _0x14fcbf[_0xe7fc('0x16')](_0x235692)['json'](_0x307f58);}};}function respondWithFilteredResult(_0x272cd5,_0x5ce83f){return function(_0x4da73b){if(_0x4da73b){var _0x1302e5=typeof _0x5ce83f[_0xe7fc('0x17')]===_0xe7fc('0x18')&&typeof _0x5ce83f[_0xe7fc('0x19')]==='undefined';var _0x552429=_0x4da73b['count'];var _0x4aa4f0=_0x1302e5?0x0:_0x5ce83f['offset'];var _0x490a99=_0x1302e5?_0x4da73b[_0xe7fc('0x1a')]:_0x5ce83f['offset']+_0x5ce83f[_0xe7fc('0x19')];var _0xb43fde;if(_0x490a99>=_0x552429){_0x490a99=_0x552429;_0xb43fde=0xc8;}else{_0xb43fde=0xce;}_0x272cd5[_0xe7fc('0x16')](_0xb43fde);return _0x272cd5[_0xe7fc('0x1b')](_0xe7fc('0x1c'),_0x4aa4f0+'-'+_0x490a99+'/'+_0x552429)[_0xe7fc('0x1d')](_0x4da73b);}return null;};}function patchUpdates(_0x329051){return function(_0x763103){try{jsonpatch['apply'](_0x763103,_0x329051,!![]);}catch(_0x39c75a){return BPromise[_0xe7fc('0x1e')](_0x39c75a);}return _0x763103['save']();};}function saveUpdates(_0x587dee,_0x35bb53){return function(_0x3c31e7){if(_0x3c31e7){return _0x3c31e7[_0xe7fc('0x1f')](_0x587dee)[_0xe7fc('0x20')](function(_0x26977a){return _0x26977a;});}return null;};}function removeEntity(_0x11c5a3,_0x3f850f){return function(_0x1731b6){if(_0x1731b6){return _0x1731b6[_0xe7fc('0x21')]()[_0xe7fc('0x20')](function(){_0x11c5a3[_0xe7fc('0x16')](0xcc)[_0xe7fc('0x15')]();});}};}function handleEntityNotFound(_0x12ebdd,_0x5255b7){return function(_0x2d9e77){if(!_0x2d9e77){_0x12ebdd[_0xe7fc('0x22')](0x194);}return _0x2d9e77;};}function handleError(_0x416464,_0x3be1fd){_0x3be1fd=_0x3be1fd||0x1f4;return function(_0x2249ed){logger[_0xe7fc('0x23')](_0x2249ed['stack']);if(_0x2249ed[_0xe7fc('0x24')]){delete _0x2249ed[_0xe7fc('0x24')];}_0x416464[_0xe7fc('0x16')](_0x3be1fd)[_0xe7fc('0x25')](_0x2249ed);};}exports[_0xe7fc('0x26')]=function(_0x4416b5,_0x383ca6){var _0x4da084={},_0x36a68b={},_0x2a08a4={'count':0x0,'rows':[]};var _0x512518=_[_0xe7fc('0x27')](db['FreshdeskField'][_0xe7fc('0x28')],function(_0x27255a){return{'name':_0x27255a['fieldName'],'type':_0x27255a[_0xe7fc('0x29')]['key']};});_0x36a68b[_0xe7fc('0x2a')]=_[_0xe7fc('0x27')](_0x512518,_0xe7fc('0x24'));_0x36a68b['query']=_[_0xe7fc('0x2b')](_0x4416b5['query']);_0x36a68b[_0xe7fc('0x2c')]=_[_0xe7fc('0x2d')](_0x36a68b['model'],_0x36a68b['query']);_0x4da084['attributes']=_['intersection'](_0x36a68b[_0xe7fc('0x2a')],qs[_0xe7fc('0x2e')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x2e')]));_0x4da084[_0xe7fc('0x30')]=_0x4da084[_0xe7fc('0x30')][_0xe7fc('0x31')]?_0x4da084[_0xe7fc('0x30')]:_0x36a68b[_0xe7fc('0x2a')];if(!_0x4416b5[_0xe7fc('0x2f')]['hasOwnProperty'](_0xe7fc('0x32'))){_0x4da084[_0xe7fc('0x19')]=qs[_0xe7fc('0x19')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x19')]);_0x4da084['offset']=qs[_0xe7fc('0x17')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x17')]);}_0x4da084[_0xe7fc('0x33')]=qs[_0xe7fc('0x34')](_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x34')]);_0x4da084[_0xe7fc('0x35')]=qs[_0xe7fc('0x2c')](_[_0xe7fc('0x36')](_0x4416b5[_0xe7fc('0x2f')],_0x36a68b[_0xe7fc('0x2c')]),_0x512518);if(_0x4416b5['query'][_0xe7fc('0x37')]){_0x4da084[_0xe7fc('0x35')]=_[_0xe7fc('0x38')](_0x4da084[_0xe7fc('0x35')],{'$or':_[_0xe7fc('0x27')](_0x512518,function(_0x4ed2e4){if(_0x4ed2e4[_0xe7fc('0x29')]!==_0xe7fc('0x39')){var _0x112bb9={};_0x112bb9[_0x4ed2e4[_0xe7fc('0x24')]]={'$like':'%'+_0x4416b5[_0xe7fc('0x2f')][_0xe7fc('0x37')]+'%'};return _0x112bb9;}})});}_0x4da084=_['merge']({},_0x4da084,_0x4416b5['options']);var _0x582053={'where':_0x4da084['where']};return db['FreshdeskField'][_0xe7fc('0x1a')](_0x582053)[_0xe7fc('0x20')](function(_0x4cc33f){_0x2a08a4[_0xe7fc('0x1a')]=_0x4cc33f;if(_0x4416b5['query'][_0xe7fc('0x3a')]){_0x4da084[_0xe7fc('0x3b')]=[{'all':!![]}];}return db[_0xe7fc('0x3c')][_0xe7fc('0x3d')](_0x4da084);})[_0xe7fc('0x20')](function(_0x3e35c7){_0x2a08a4['rows']=_0x3e35c7;return _0x2a08a4;})[_0xe7fc('0x20')](respondWithFilteredResult(_0x383ca6,_0x4da084))['catch'](handleError(_0x383ca6,null));};exports[_0xe7fc('0x3e')]=function(_0x381bb4,_0x533f26){var _0x636368={'raw':!![],'where':{'id':_0x381bb4[_0xe7fc('0x3f')]['id']}},_0x3ce7ad={};_0x3ce7ad[_0xe7fc('0x2a')]=_[_0xe7fc('0x2b')](db[_0xe7fc('0x3c')][_0xe7fc('0x28')]);_0x3ce7ad[_0xe7fc('0x2f')]=_[_0xe7fc('0x2b')](_0x381bb4[_0xe7fc('0x2f')]);_0x3ce7ad[_0xe7fc('0x2c')]=_[_0xe7fc('0x2d')](_0x3ce7ad[_0xe7fc('0x2a')],_0x3ce7ad[_0xe7fc('0x2f')]);_0x636368[_0xe7fc('0x30')]=_[_0xe7fc('0x2d')](_0x3ce7ad[_0xe7fc('0x2a')],qs['fields'](_0x381bb4[_0xe7fc('0x2f')][_0xe7fc('0x2e')]));_0x636368[_0xe7fc('0x30')]=_0x636368['attributes'][_0xe7fc('0x31')]?_0x636368[_0xe7fc('0x30')]:_0x3ce7ad[_0xe7fc('0x2a')];if(_0x381bb4[_0xe7fc('0x2f')][_0xe7fc('0x3a')]){_0x636368['include']=[{'all':!![]}];}_0x636368=_['merge']({},_0x636368,_0x381bb4[_0xe7fc('0x40')]);return db[_0xe7fc('0x3c')][_0xe7fc('0x41')](_0x636368)[_0xe7fc('0x20')](handleEntityNotFound(_0x533f26,null))[_0xe7fc('0x20')](respondWithResult(_0x533f26,null))['catch'](handleError(_0x533f26,null));};exports[_0xe7fc('0x42')]=function(_0x2dd594,_0x2807ff){return db[_0xe7fc('0x3c')][_0xe7fc('0x42')](_0x2dd594[_0xe7fc('0x43')],{})[_0xe7fc('0x20')](respondWithResult(_0x2807ff,0xc9))[_0xe7fc('0x44')](handleError(_0x2807ff,null));};exports[_0xe7fc('0x1f')]=function(_0x45edbf,_0x533f31){if(_0x45edbf[_0xe7fc('0x43')]['id']){delete _0x45edbf['body']['id'];}return db[_0xe7fc('0x3c')][_0xe7fc('0x41')]({'where':{'id':_0x45edbf[_0xe7fc('0x3f')]['id']}})[_0xe7fc('0x20')](handleEntityNotFound(_0x533f31,null))[_0xe7fc('0x20')](saveUpdates(_0x45edbf[_0xe7fc('0x43')],null))[_0xe7fc('0x20')](respondWithResult(_0x533f31,null))[_0xe7fc('0x44')](handleError(_0x533f31,null));};exports[_0xe7fc('0x21')]=function(_0x535afb,_0x63a8bf){return db[_0xe7fc('0x3c')][_0xe7fc('0x41')]({'where':{'id':_0x535afb[_0xe7fc('0x3f')]['id']}})[_0xe7fc('0x20')](handleEntityNotFound(_0x63a8bf,null))[_0xe7fc('0x20')](removeEntity(_0x63a8bf,null))['catch'](handleError(_0x63a8bf,null));};
\ No newline at end of file
index 214b967..292a965 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2141=['rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x2141,0x1ba));var _0x1214=function(_0x41dce6,_0x30dd01){_0x41dce6=_0x41dce6-0x0;var _0x13d49e=_0x2141[_0x41dce6];return _0x13d49e;};'use strict';var _=require(_0x1214('0x0'));var util=require(_0x1214('0x1'));var logger=require(_0x1214('0x2'))(_0x1214('0x3'));var moment=require(_0x1214('0x4'));var BPromise=require(_0x1214('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1214('0x6'));var config=require(_0x1214('0x7'));var attributes=require(_0x1214('0x8'));module[_0x1214('0x9')]=function(_0xf2eb34,_0x2c8a69){return _0xf2eb34[_0x1214('0xa')](_0x1214('0xb'),attributes,{'tableName':_0x1214('0xc'),'paranoid':![],'indexes':[{'name':_0x1214('0xd'),'fields':[_0x1214('0xe'),_0x1214('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe920=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','FreshdeskField','int_freshdesk_fields','idField','FieldId','lodash','util'];(function(_0x4d49d2,_0x25b27b){var _0x51563d=function(_0x28a77b){while(--_0x28a77b){_0x4d49d2['push'](_0x4d49d2['shift']());}};_0x51563d(++_0x25b27b);}(_0xe920,0xbe));var _0x0e92=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0xe920[_0x273dc5];return _0x46dae7;};'use strict';var _=require(_0x0e92('0x0'));var util=require(_0x0e92('0x1'));var logger=require(_0x0e92('0x2'))(_0x0e92('0x3'));var moment=require(_0x0e92('0x4'));var BPromise=require(_0x0e92('0x5'));var rp=require(_0x0e92('0x6'));var fs=require('fs');var path=require(_0x0e92('0x7'));var rimraf=require(_0x0e92('0x8'));var config=require(_0x0e92('0x9'));var attributes=require('./intFreshdeskField.attributes');module[_0x0e92('0xa')]=function(_0x5291e2,_0x40d9f2){return _0x5291e2[_0x0e92('0xb')](_0x0e92('0xc'),attributes,{'tableName':_0x0e92('0xd'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x0e92('0xe'),_0x0e92('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index b79b958..944de16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x453e=['rpc','client','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x13d2a5,_0x5016a4){var _0x437a87=function(_0x54854d){while(--_0x54854d){_0x13d2a5['push'](_0x13d2a5['shift']());}};_0x437a87(++_0x5016a4);}(_0x453e,0xbe));var _0xe453=function(_0x23d957,_0x5d2176){_0x23d957=_0x23d957-0x0;var _0x568ff2=_0x453e[_0x23d957];return _0x568ff2;};'use strict';var _=require(_0xe453('0x0'));var util=require(_0xe453('0x1'));var moment=require(_0xe453('0x2'));var BPromise=require('bluebird');var rs=require(_0xe453('0x3'));var fs=require('fs');var Redis=require(_0xe453('0x4'));var db=require(_0xe453('0x5'))['db'];var utils=require(_0xe453('0x6'));var logger=require(_0xe453('0x7'))(_0xe453('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe453('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a3219,_0x24b77c,_0x586b04){return new BPromise(function(_0x1143dc,_0x2863ba){return client[_0xe453('0xa')](_0x4a3219,_0x586b04)[_0xe453('0xb')](function(_0x42bcb4){logger[_0xe453('0xc')](_0xe453('0xd'),_0x24b77c,_0xe453('0xe'));logger[_0xe453('0xf')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x24b77c,_0xe453('0xe'),JSON[_0xe453('0x10')](_0x42bcb4));if(_0x42bcb4[_0xe453('0x11')]){if(_0x42bcb4[_0xe453('0x11')][_0xe453('0x12')]===0x1f4){logger[_0xe453('0x11')]('FreshdeskField,\x20%s,\x20%s',_0x24b77c,_0x42bcb4['error'][_0xe453('0x13')]);return _0x2863ba(_0x42bcb4[_0xe453('0x11')][_0xe453('0x13')]);}logger[_0xe453('0x11')](_0xe453('0xd'),_0x24b77c,_0x42bcb4[_0xe453('0x11')]['message']);return _0x1143dc(_0x42bcb4[_0xe453('0x11')][_0xe453('0x13')]);}else{logger[_0xe453('0xc')]('FreshdeskField,\x20%s,\x20%s',_0x24b77c,_0xe453('0xe'));_0x1143dc(_0x42bcb4[_0xe453('0x14')][_0xe453('0x13')]);}})[_0xe453('0x15')](function(_0x1eff14){logger[_0xe453('0x11')](_0xe453('0xd'),_0x24b77c,_0x1eff14);_0x2863ba(_0x1eff14);});});}
\ No newline at end of file
+var _0x6f01=['bluebird','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x6f01,0xd0));var _0x16f0=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6f01[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x16f0('0x0'));var moment=require(_0x16f0('0x1'));var BPromise=require(_0x16f0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x16f0('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x16f0('0x4'));var config=require(_0x16f0('0x5'));var jayson=require(_0x16f0('0x6'));var client=jayson[_0x16f0('0x7')][_0x16f0('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x18f97a,_0x1410c6,_0x142160){return new BPromise(function(_0xf6f9ae,_0x263a5a){return client[_0x16f0('0x9')](_0x18f97a,_0x142160)[_0x16f0('0xa')](function(_0x3f1a18){logger[_0x16f0('0xb')](_0x16f0('0xc'),_0x1410c6,_0x16f0('0xd'));logger[_0x16f0('0xe')](_0x16f0('0xf'),_0x1410c6,_0x16f0('0xd'),JSON[_0x16f0('0x10')](_0x3f1a18));if(_0x3f1a18[_0x16f0('0x11')]){if(_0x3f1a18[_0x16f0('0x11')]['code']===0x1f4){logger[_0x16f0('0x11')](_0x16f0('0xc'),_0x1410c6,_0x3f1a18[_0x16f0('0x11')]['message']);return _0x263a5a(_0x3f1a18[_0x16f0('0x11')]['message']);}logger[_0x16f0('0x11')](_0x16f0('0xc'),_0x1410c6,_0x3f1a18[_0x16f0('0x11')][_0x16f0('0x12')]);return _0xf6f9ae(_0x3f1a18['error'][_0x16f0('0x12')]);}else{logger[_0x16f0('0xb')]('FreshdeskField,\x20%s,\x20%s',_0x1410c6,_0x16f0('0xd'));_0xf6f9ae(_0x3f1a18[_0x16f0('0x13')][_0x16f0('0x12')]);}})[_0x16f0('0x14')](function(_0x380933){logger[_0x16f0('0x11')](_0x16f0('0xc'),_0x1410c6,_0x380933);_0x263a5a(_0x380933);});});}
\ No newline at end of file
index 2387f23..13b8dfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae60=['put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration'];(function(_0x37bdf6,_0x38854f){var _0x52c3f4=function(_0x715671){while(--_0x715671){_0x37bdf6['push'](_0x37bdf6['shift']());}};_0x52c3f4(++_0x38854f);}(_0xae60,0x1c7));var _0x0ae6=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0xae60[_0x344a3f];return _0x264712;};'use strict';var multer=require(_0x0ae6('0x0'));var util=require(_0x0ae6('0x1'));var path=require(_0x0ae6('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ae6('0x3'));var router=express[_0x0ae6('0x4')]();var fs_extra=require(_0x0ae6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0ae6('0x6'));var config=require(_0x0ae6('0x7'));var controller=require('./intFreshsalesAccount.controller');router[_0x0ae6('0x8')]('/',auth[_0x0ae6('0x9')](),controller[_0x0ae6('0xa')]);router[_0x0ae6('0x8')](_0x0ae6('0xb'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0xc')]);router[_0x0ae6('0x8')]('/:id/configurations',auth[_0x0ae6('0x9')](),controller[_0x0ae6('0xd')]);router[_0x0ae6('0x8')](_0x0ae6('0xe'),auth['isAuthenticated'](),controller[_0x0ae6('0xf')]);router[_0x0ae6('0x10')]('/',auth[_0x0ae6('0x9')](),controller[_0x0ae6('0x11')]);router[_0x0ae6('0x10')](_0x0ae6('0x12'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0x13')]);router[_0x0ae6('0x14')](_0x0ae6('0xb'),auth[_0x0ae6('0x9')](),controller[_0x0ae6('0x15')]);router[_0x0ae6('0x16')](_0x0ae6('0xb'),auth['isAuthenticated'](),controller[_0x0ae6('0x17')]);module[_0x0ae6('0x18')]=router;
\ No newline at end of file
+var _0xd87e=['post','create','addConfiguration','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./intFreshsalesAccount.controller','isAuthenticated','/:id','show','get','getConfigurations','/:id/fields','getFields'];(function(_0x135b11,_0x8b8b53){var _0x7abc52=function(_0x28717e){while(--_0x28717e){_0x135b11['push'](_0x135b11['shift']());}};_0x7abc52(++_0x8b8b53);}(_0xd87e,0x1bf));var _0xed87=function(_0x533bcc,_0x1ba26f){_0x533bcc=_0x533bcc-0x0;var _0x364d38=_0xd87e[_0x533bcc];return _0x364d38;};'use strict';var multer=require(_0xed87('0x0'));var util=require(_0xed87('0x1'));var path=require('path');var timeout=require(_0xed87('0x2'));var express=require(_0xed87('0x3'));var router=express[_0xed87('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xed87('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xed87('0x6'));var controller=require(_0xed87('0x7'));router['get']('/',auth[_0xed87('0x8')](),controller['index']);router['get'](_0xed87('0x9'),auth[_0xed87('0x8')](),controller[_0xed87('0xa')]);router[_0xed87('0xb')]('/:id/configurations',auth[_0xed87('0x8')](),controller[_0xed87('0xc')]);router[_0xed87('0xb')](_0xed87('0xd'),auth[_0xed87('0x8')](),controller[_0xed87('0xe')]);router[_0xed87('0xf')]('/',auth['isAuthenticated'](),controller[_0xed87('0x10')]);router[_0xed87('0xf')]('/:id/configurations',auth[_0xed87('0x8')](),controller[_0xed87('0x11')]);router['put']('/:id',auth[_0xed87('0x8')](),controller[_0xed87('0x12')]);router[_0xed87('0x13')](_0xed87('0x9'),auth[_0xed87('0x8')](),controller[_0xed87('0x14')]);module['exports']=router;
\ No newline at end of file
index 045e3e6..4d575ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03e=['STRING','username','remoteUri','exports'];(function(_0x3c3c17,_0x779bc9){var _0x43940c=function(_0x300c4b){while(--_0x300c4b){_0x3c3c17['push'](_0x3c3c17['shift']());}};_0x43940c(++_0x779bc9);}(_0xb03e,0x1eb));var _0xeb03=function(_0x3b82ec,_0x243b8d){_0x3b82ec=_0x3b82ec-0x0;var _0x55113b=_0xb03e[_0x3b82ec];return _0x55113b;};'use strict';var Sequelize=require('sequelize');module[_0xeb03('0x0')]={'name':{'type':Sequelize[_0xeb03('0x1')]},'description':{'type':Sequelize[_0xeb03('0x1')]},'username':{'type':Sequelize[_0xeb03('0x1')],'unique':_0xeb03('0x2')},'apiKey':{'type':Sequelize[_0xeb03('0x1')]},'remoteUri':{'type':Sequelize[_0xeb03('0x1')],'unique':_0xeb03('0x3')},'serverUrl':{'type':Sequelize[_0xeb03('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xb44a=['STRING'];(function(_0x53286a,_0x485c92){var _0x5730ff=function(_0x478c81){while(--_0x478c81){_0x53286a['push'](_0x53286a['shift']());}};_0x5730ff(++_0x485c92);}(_0xb44a,0x1c2));var _0xab44=function(_0x385eb1,_0x497a94){_0x385eb1=_0x385eb1-0x0;var _0x5d40eb=_0xb44a[_0x385eb1];return _0x5d40eb;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xab44('0x0')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xab44('0x0')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xab44('0x0')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xab44('0x0')],'allowNull':![]}};
\ No newline at end of file
index 88e692b..b3f4c96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0f2=['offset','undefined','limit','set','Content-Range','apply','reject','destroy','then','error','name','send','index','map','FreshsalesAccount','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','params','rawAttributes','create','body','find','getConfigurations','findOne','FreshsalesConfiguration','pick','addConfiguration','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','getFields','username','remoteUri','apiKey','slice','substring','format','%s%s','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json'];(function(_0x18bdf4,_0x2734aa){var _0x3accb0=function(_0x367e54){while(--_0x367e54){_0x18bdf4['push'](_0x18bdf4['shift']());}};_0x3accb0(++_0x2734aa);}(_0xe0f2,0x174));var _0x2e0f=function(_0x232fe1,_0x338be5){_0x232fe1=_0x232fe1-0x0;var _0x4f07a4=_0xe0f2[_0x232fe1];return _0x4f07a4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2e0f('0x0'));var zipdir=require(_0x2e0f('0x1'));var jsonpatch=require(_0x2e0f('0x2'));var rp=require(_0x2e0f('0x3'));var moment=require(_0x2e0f('0x4'));var BPromise=require(_0x2e0f('0x5'));var Mustache=require('mustache');var util=require(_0x2e0f('0x6'));var path=require(_0x2e0f('0x7'));var sox=require(_0x2e0f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2e0f('0x9'));var squel=require(_0x2e0f('0xa'));var crypto=require(_0x2e0f('0xb'));var jsforce=require(_0x2e0f('0xc'));var deskjs=require(_0x2e0f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2e0f('0xe'));var Papa=require(_0x2e0f('0xf'));var Redis=require('ioredis');var authService=require(_0x2e0f('0x10'));var qs=require(_0x2e0f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2e0f('0x12'));var logger=require(_0x2e0f('0x13'))(_0x2e0f('0x14'));var utils=require(_0x2e0f('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2e0f('0x16'));var db=require(_0x2e0f('0x17'))['db'];var integrations=require(_0x2e0f('0x18'));function respondWithStatusCode(_0x38288f,_0x508204){_0x508204=_0x508204||0xcc;return function(_0x3189fd){if(_0x3189fd){return _0x38288f[_0x2e0f('0x19')](_0x508204);}return _0x38288f[_0x2e0f('0x1a')](_0x508204)['end']();};}function respondWithResult(_0x3095b8,_0x39819c){_0x39819c=_0x39819c||0xc8;return function(_0xb6657c){if(_0xb6657c){return _0x3095b8[_0x2e0f('0x1a')](_0x39819c)[_0x2e0f('0x1b')](_0xb6657c);}};}function respondWithFilteredResult(_0x2bae5f,_0x59d2f7){return function(_0x29d661){if(_0x29d661){var _0x1aa594=typeof _0x59d2f7[_0x2e0f('0x1c')]===_0x2e0f('0x1d')&&typeof _0x59d2f7[_0x2e0f('0x1e')]===_0x2e0f('0x1d');var _0x1d814c=_0x29d661['count'];var _0x5be32c=_0x1aa594?0x0:_0x59d2f7[_0x2e0f('0x1c')];var _0x3a4704=_0x1aa594?_0x29d661['count']:_0x59d2f7[_0x2e0f('0x1c')]+_0x59d2f7['limit'];var _0x4131ab;if(_0x3a4704>=_0x1d814c){_0x3a4704=_0x1d814c;_0x4131ab=0xc8;}else{_0x4131ab=0xce;}_0x2bae5f[_0x2e0f('0x1a')](_0x4131ab);return _0x2bae5f[_0x2e0f('0x1f')](_0x2e0f('0x20'),_0x5be32c+'-'+_0x3a4704+'/'+_0x1d814c)[_0x2e0f('0x1b')](_0x29d661);}return null;};}function patchUpdates(_0x15e9a5){return function(_0x307916){try{jsonpatch[_0x2e0f('0x21')](_0x307916,_0x15e9a5,!![]);}catch(_0x4d7430){return BPromise[_0x2e0f('0x22')](_0x4d7430);}return _0x307916['save']();};}function saveUpdates(_0x3eee06,_0x3b2f96){return function(_0x24b1dd){if(_0x24b1dd){return _0x24b1dd['update'](_0x3eee06)['then'](function(_0x14d2ec){return _0x14d2ec;});}return null;};}function removeEntity(_0x3abddd,_0x51c54d){return function(_0x234ade){if(_0x234ade){return _0x234ade[_0x2e0f('0x23')]()[_0x2e0f('0x24')](function(){_0x3abddd[_0x2e0f('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25424f,_0x175b51){return function(_0x3de4b7){if(!_0x3de4b7){_0x25424f[_0x2e0f('0x19')](0x194);}return _0x3de4b7;};}function handleError(_0xa70428,_0x152c60){_0x152c60=_0x152c60||0x1f4;return function(_0x2a08e0){logger[_0x2e0f('0x25')](_0x2a08e0['stack']);if(_0x2a08e0[_0x2e0f('0x26')]){delete _0x2a08e0[_0x2e0f('0x26')];}_0xa70428[_0x2e0f('0x1a')](_0x152c60)[_0x2e0f('0x27')](_0x2a08e0);};}exports[_0x2e0f('0x28')]=function(_0x3e4b59,_0x1e48e6){var _0x2e324e={},_0xfb3ed5={},_0x174cb6={'count':0x0,'rows':[]};var _0x42aea6=_[_0x2e0f('0x29')](db[_0x2e0f('0x2a')]['rawAttributes'],function(_0x19c752){return{'name':_0x19c752[_0x2e0f('0x2b')],'type':_0x19c752[_0x2e0f('0x2c')][_0x2e0f('0x2d')]};});_0xfb3ed5['model']=_[_0x2e0f('0x29')](_0x42aea6,_0x2e0f('0x26'));_0xfb3ed5[_0x2e0f('0x2e')]=_[_0x2e0f('0x2f')](_0x3e4b59[_0x2e0f('0x2e')]);_0xfb3ed5[_0x2e0f('0x30')]=_['intersection'](_0xfb3ed5[_0x2e0f('0x31')],_0xfb3ed5[_0x2e0f('0x2e')]);_0x2e324e[_0x2e0f('0x32')]=_[_0x2e0f('0x33')](_0xfb3ed5['model'],qs[_0x2e0f('0x34')](_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x34')]));_0x2e324e[_0x2e0f('0x32')]=_0x2e324e[_0x2e0f('0x32')][_0x2e0f('0x35')]?_0x2e324e['attributes']:_0xfb3ed5[_0x2e0f('0x31')];if(!_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x36')]('nolimit')){_0x2e324e[_0x2e0f('0x1e')]=qs[_0x2e0f('0x1e')](_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x1e')]);_0x2e324e['offset']=qs[_0x2e0f('0x1c')](_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x1c')]);}_0x2e324e[_0x2e0f('0x37')]=qs[_0x2e0f('0x38')](_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x38')]);_0x2e324e['where']=qs[_0x2e0f('0x30')](_['pick'](_0x3e4b59[_0x2e0f('0x2e')],_0xfb3ed5[_0x2e0f('0x30')]),_0x42aea6);if(_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x39')]){_0x2e324e[_0x2e0f('0x3a')]=_[_0x2e0f('0x3b')](_0x2e324e['where'],{'$or':_[_0x2e0f('0x29')](_0x42aea6,function(_0x3727d6){if(_0x3727d6[_0x2e0f('0x2c')]!==_0x2e0f('0x3c')){var _0x1f35a3={};_0x1f35a3[_0x3727d6[_0x2e0f('0x26')]]={'$like':'%'+_0x3e4b59[_0x2e0f('0x2e')]['filter']+'%'};return _0x1f35a3;}})});}_0x2e324e=_[_0x2e0f('0x3b')]({},_0x2e324e,_0x3e4b59[_0x2e0f('0x3d')]);var _0x13af92={'where':_0x2e324e[_0x2e0f('0x3a')]};return db[_0x2e0f('0x2a')][_0x2e0f('0x3e')](_0x13af92)[_0x2e0f('0x24')](function(_0x5ab01a){_0x174cb6['count']=_0x5ab01a;if(_0x3e4b59[_0x2e0f('0x2e')][_0x2e0f('0x3f')]){_0x2e324e[_0x2e0f('0x40')]=[{'all':!![]}];}return db[_0x2e0f('0x2a')][_0x2e0f('0x41')](_0x2e324e);})['then'](function(_0x38a7c1){_0x174cb6[_0x2e0f('0x42')]=_0x38a7c1;return _0x174cb6;})[_0x2e0f('0x24')](respondWithFilteredResult(_0x1e48e6,_0x2e324e))[_0x2e0f('0x43')](handleError(_0x1e48e6,null));};exports['show']=function(_0x330c3b,_0x268cf7){var _0x189890={'raw':![],'where':{'id':_0x330c3b[_0x2e0f('0x44')]['id']}},_0x1d94eb={};_0x1d94eb[_0x2e0f('0x31')]=_[_0x2e0f('0x2f')](db[_0x2e0f('0x2a')][_0x2e0f('0x45')]);_0x1d94eb[_0x2e0f('0x2e')]=_['keys'](_0x330c3b[_0x2e0f('0x2e')]);_0x1d94eb[_0x2e0f('0x30')]=_[_0x2e0f('0x33')](_0x1d94eb['model'],_0x1d94eb['query']);_0x189890['attributes']=_[_0x2e0f('0x33')](_0x1d94eb[_0x2e0f('0x31')],qs[_0x2e0f('0x34')](_0x330c3b[_0x2e0f('0x2e')][_0x2e0f('0x34')]));_0x189890[_0x2e0f('0x32')]=_0x189890[_0x2e0f('0x32')][_0x2e0f('0x35')]?_0x189890[_0x2e0f('0x32')]:_0x1d94eb[_0x2e0f('0x31')];if(_0x330c3b[_0x2e0f('0x2e')][_0x2e0f('0x3f')]){_0x189890['include']=[{'all':!![]}];}_0x189890=_[_0x2e0f('0x3b')]({},_0x189890,_0x330c3b['options']);return db[_0x2e0f('0x2a')]['find'](_0x189890)['then'](handleEntityNotFound(_0x268cf7,null))[_0x2e0f('0x24')](respondWithResult(_0x268cf7,null))[_0x2e0f('0x43')](handleError(_0x268cf7,null));};exports[_0x2e0f('0x46')]=function(_0x655716,_0x4cbabc){return db[_0x2e0f('0x2a')][_0x2e0f('0x46')](_0x655716['body'],{})[_0x2e0f('0x24')](respondWithResult(_0x4cbabc,0xc9))[_0x2e0f('0x43')](handleError(_0x4cbabc,null));};exports['update']=function(_0x1c5d3a,_0x4b28dc){if(_0x1c5d3a[_0x2e0f('0x47')]['id']){delete _0x1c5d3a[_0x2e0f('0x47')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x1c5d3a[_0x2e0f('0x44')]['id']}})[_0x2e0f('0x24')](handleEntityNotFound(_0x4b28dc,null))[_0x2e0f('0x24')](saveUpdates(_0x1c5d3a[_0x2e0f('0x47')],null))[_0x2e0f('0x24')](respondWithResult(_0x4b28dc,null))[_0x2e0f('0x43')](handleError(_0x4b28dc,null));};exports['destroy']=function(_0x4e362c,_0xe0d6bc){return db['FreshsalesAccount'][_0x2e0f('0x48')]({'where':{'id':_0x4e362c[_0x2e0f('0x44')]['id']}})['then'](handleEntityNotFound(_0xe0d6bc,null))[_0x2e0f('0x24')](removeEntity(_0xe0d6bc,null))[_0x2e0f('0x43')](handleError(_0xe0d6bc,null));};exports[_0x2e0f('0x49')]=function(_0x3c2b48,_0x35baf2,_0x16f8d7){var _0x2e3b40={};var _0x256b6f={};var _0x433f72;var _0x1cbc50;return db[_0x2e0f('0x2a')][_0x2e0f('0x4a')]({'where':{'id':_0x3c2b48['params']['id']}})[_0x2e0f('0x24')](handleEntityNotFound(_0x35baf2,null))['then'](function(_0x201b3f){if(_0x201b3f){_0x433f72=_0x201b3f;_0x256b6f['model']=_[_0x2e0f('0x2f')](db[_0x2e0f('0x4b')][_0x2e0f('0x45')]);_0x256b6f[_0x2e0f('0x2e')]=_[_0x2e0f('0x2f')](_0x3c2b48[_0x2e0f('0x2e')]);_0x256b6f['filters']=_[_0x2e0f('0x33')](_0x256b6f['model'],_0x256b6f[_0x2e0f('0x2e')]);_0x2e3b40[_0x2e0f('0x32')]=_['intersection'](_0x256b6f[_0x2e0f('0x31')],qs[_0x2e0f('0x34')](_0x3c2b48[_0x2e0f('0x2e')][_0x2e0f('0x34')]));_0x2e3b40[_0x2e0f('0x32')]=_0x2e3b40['attributes'][_0x2e0f('0x35')]?_0x2e3b40[_0x2e0f('0x32')]:_0x256b6f[_0x2e0f('0x31')];_0x2e3b40[_0x2e0f('0x37')]=qs[_0x2e0f('0x38')](_0x3c2b48[_0x2e0f('0x2e')][_0x2e0f('0x38')]);_0x2e3b40[_0x2e0f('0x3a')]=qs['filters'](_[_0x2e0f('0x4c')](_0x3c2b48['query'],_0x256b6f[_0x2e0f('0x30')]));if(_0x3c2b48[_0x2e0f('0x2e')][_0x2e0f('0x39')]){_0x2e3b40[_0x2e0f('0x3a')]=_[_0x2e0f('0x3b')](_0x2e3b40['where'],{'$or':_[_0x2e0f('0x29')](_0x2e3b40[_0x2e0f('0x32')],function(_0x186654){var _0x5a0d81={};_0x5a0d81[_0x186654]={'$like':'%'+_0x3c2b48[_0x2e0f('0x2e')][_0x2e0f('0x39')]+'%'};return _0x5a0d81;})});}_0x2e3b40=_[_0x2e0f('0x3b')]({},_0x2e3b40,_0x3c2b48[_0x2e0f('0x3d')]);return _0x433f72['getConfigurations'](_0x2e3b40);}})[_0x2e0f('0x24')](function(_0x253dbc){if(_0x253dbc){_0x1cbc50=_0x253dbc[_0x2e0f('0x35')];if(!_0x3c2b48['query']['hasOwnProperty']('nolimit')){_0x2e3b40[_0x2e0f('0x1e')]=qs[_0x2e0f('0x1e')](_0x3c2b48[_0x2e0f('0x2e')][_0x2e0f('0x1e')]);_0x2e3b40[_0x2e0f('0x1c')]=qs[_0x2e0f('0x1c')](_0x3c2b48[_0x2e0f('0x2e')][_0x2e0f('0x1c')]);}return _0x433f72[_0x2e0f('0x49')](_0x2e3b40);}})['then'](function(_0xb8dc26){if(_0xb8dc26){return _0xb8dc26?{'count':_0x1cbc50,'rows':_0xb8dc26}:null;}})[_0x2e0f('0x24')](respondWithResult(_0x35baf2,null))[_0x2e0f('0x43')](handleError(_0x35baf2,null));};exports[_0x2e0f('0x4d')]=function(_0x4443f0,_0x499d7f,_0x8ccffb){if(_0x4443f0[_0x2e0f('0x47')]['id']){delete _0x4443f0[_0x2e0f('0x47')]['id'];}return db[_0x2e0f('0x2a')]['findOne']({'where':{'id':_0x4443f0['params']['id']}})[_0x2e0f('0x24')](handleEntityNotFound(_0x499d7f,null))[_0x2e0f('0x24')](function(_0x4f44a3){if(_0x4f44a3){_0x4443f0[_0x2e0f('0x47')]['AccountId']=_0x4f44a3['id'];_0x4443f0[_0x2e0f('0x47')][_0x2e0f('0x4e')]=integrations[_0x2e0f('0x4f')](_0x4443f0[_0x2e0f('0x47')][_0x2e0f('0x50')],_0x4443f0[_0x2e0f('0x47')][_0x2e0f('0x2c')]);_0x4443f0[_0x2e0f('0x47')][_0x2e0f('0x51')]=integrations[_0x2e0f('0x52')](_0x4443f0['body'][_0x2e0f('0x50')],_0x4443f0[_0x2e0f('0x47')]['type']);return db[_0x2e0f('0x4b')][_0x2e0f('0x46')](_0x4443f0[_0x2e0f('0x47')],{'include':[{'model':db[_0x2e0f('0x53')],'as':_0x2e0f('0x4e')},{'model':db[_0x2e0f('0x53')],'as':'Descriptions'}]});}return null;})[_0x2e0f('0x24')](respondWithResult(_0x499d7f,null))[_0x2e0f('0x43')](handleError(_0x499d7f,null));};exports[_0x2e0f('0x54')]=function(_0x2ba671,_0x1a9af4,_0x1951ce){var _0x445f64='';var _0x45d962='';return db[_0x2e0f('0x2a')][_0x2e0f('0x4a')]({'where':{'id':_0x2ba671['params']['id']},'attributes':['id',_0x2e0f('0x55'),_0x2e0f('0x56'),_0x2e0f('0x57')]})[_0x2e0f('0x24')](handleEntityNotFound(_0x1a9af4,null))[_0x2e0f('0x24')](function(_0x242670){if(_0x242670){_0x45d962=_0x242670[_0x2e0f('0x55')];_0x445f64=_0x242670['remoteUri'];var _0x26bb20=_0x242670['remoteUri'][_0x2e0f('0x58')](-0x1);if(_0x26bb20==='/'){_0x445f64=_0x445f64[_0x2e0f('0x59')](0x0,_0x445f64['lastIndexOf'](_0x26bb20));}return rp({'method':'GET','uri':util[_0x2e0f('0x5a')](_0x2e0f('0x5b'),_0x445f64,'/api/selector/owners'),'headers':{'Authorization':_0x2e0f('0x5c')+_0x242670[_0x2e0f('0x57')]},'json':!![]});}})[_0x2e0f('0x24')](function(_0x43007e){if(_0x43007e){var _0x26c7c5=_0x43007e[_0x2e0f('0x5d')];var _0x49675d=![];var _0x235726=null;for(_0x235726=0x0;_0x235726<_0x26c7c5[_0x2e0f('0x35')];_0x235726++){if(_0x26c7c5[_0x235726][_0x2e0f('0x5e')]===_0x45d962){_0x49675d=!![];}}if(_0x49675d){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x2e0f('0x5f')});}}})[_0x2e0f('0x24')](respondWithResult(_0x1a9af4,null))[_0x2e0f('0x43')](function(_0x1406da){var _0x19d450=_0x2ba671[_0x2e0f('0x2e')]['test']?0x1f4:_0x1406da[_0x2e0f('0x60')]||0x1f4;logger[_0x2e0f('0x25')](_0x2e0f('0x61'),_0x2e0f('0x54'),_0x19d450,JSON['stringify'](_0x1406da));delete _0x1406da[_0x2e0f('0x26')];if(_0x19d450===0x191){_0x19d450=0x190;}_0x1a9af4['status'](_0x19d450)[_0x2e0f('0x27')](_0x2ba671[_0x2e0f('0x2e')][_0x2e0f('0x62')]?{'message':_0x2e0f('0x63'),'statusCode':_0x1406da[_0x2e0f('0x60')]}:_0x1406da);});};
\ No newline at end of file
+var _0x2e99=['then','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','options','FreshsalesAccount','count','include','findAll','rows','catch','params','includeAll','find','create','body','getConfigurations','findOne','FreshsalesConfiguration','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','Subjects','getFields','username','remoteUri','slice','substring','GET','format','/api/selector/owners','users','email','Requested\x20Resource\x20not\x20Found','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','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/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','limit','undefined','Content-Range','apply','reject','save','update','destroy'];(function(_0x5e208d,_0x565b29){var _0x4042ec=function(_0x4b5ecf){while(--_0x4b5ecf){_0x5e208d['push'](_0x5e208d['shift']());}};_0x4042ec(++_0x565b29);}(_0x2e99,0x182));var _0x92e9=function(_0x3a4468,_0x288644){_0x3a4468=_0x3a4468-0x0;var _0x19e2f1=_0x2e99[_0x3a4468];return _0x19e2f1;};'use strict';var emlformat=require(_0x92e9('0x0'));var rimraf=require(_0x92e9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x92e9('0x2'));var rp=require(_0x92e9('0x3'));var moment=require('moment');var BPromise=require(_0x92e9('0x4'));var Mustache=require(_0x92e9('0x5'));var util=require(_0x92e9('0x6'));var path=require(_0x92e9('0x7'));var sox=require(_0x92e9('0x8'));var csv=require(_0x92e9('0x9'));var ejs=require(_0x92e9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x92e9('0xb'));var crypto=require(_0x92e9('0xc'));var jsforce=require(_0x92e9('0xd'));var deskjs=require(_0x92e9('0xe'));var toCsv=require(_0x92e9('0x9'));var querystring=require(_0x92e9('0xf'));var Papa=require(_0x92e9('0x10'));var Redis=require('ioredis');var authService=require(_0x92e9('0x11'));var qs=require(_0x92e9('0x12'));var as=require(_0x92e9('0x13'));var hardwareService=require(_0x92e9('0x14'));var logger=require('../../config/logger')(_0x92e9('0x15'));var utils=require(_0x92e9('0x16'));var config=require(_0x92e9('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x92e9('0x18'))['db'];var integrations=require(_0x92e9('0x19'));function respondWithStatusCode(_0x2c5beb,_0x537109){_0x537109=_0x537109||0xcc;return function(_0x556380){if(_0x556380){return _0x2c5beb[_0x92e9('0x1a')](_0x537109);}return _0x2c5beb[_0x92e9('0x1b')](_0x537109)['end']();};}function respondWithResult(_0x3eeae4,_0xfef8ef){_0xfef8ef=_0xfef8ef||0xc8;return function(_0x5786c9){if(_0x5786c9){return _0x3eeae4[_0x92e9('0x1b')](_0xfef8ef)[_0x92e9('0x1c')](_0x5786c9);}};}function respondWithFilteredResult(_0x381b91,_0x8f6edc){return function(_0x3df4f5){if(_0x3df4f5){var _0x515a7b=typeof _0x8f6edc[_0x92e9('0x1d')]==='undefined'&&typeof _0x8f6edc[_0x92e9('0x1e')]===_0x92e9('0x1f');var _0x3bb919=_0x3df4f5['count'];var _0x5f144e=_0x515a7b?0x0:_0x8f6edc['offset'];var _0x210f11=_0x515a7b?_0x3df4f5['count']:_0x8f6edc['offset']+_0x8f6edc[_0x92e9('0x1e')];var _0x187d01;if(_0x210f11>=_0x3bb919){_0x210f11=_0x3bb919;_0x187d01=0xc8;}else{_0x187d01=0xce;}_0x381b91[_0x92e9('0x1b')](_0x187d01);return _0x381b91['set'](_0x92e9('0x20'),_0x5f144e+'-'+_0x210f11+'/'+_0x3bb919)[_0x92e9('0x1c')](_0x3df4f5);}return null;};}function patchUpdates(_0x1ba94a){return function(_0x2b3949){try{jsonpatch[_0x92e9('0x21')](_0x2b3949,_0x1ba94a,!![]);}catch(_0x46308b){return BPromise[_0x92e9('0x22')](_0x46308b);}return _0x2b3949[_0x92e9('0x23')]();};}function saveUpdates(_0x5abdb9,_0x3da73d){return function(_0xf6b405){if(_0xf6b405){return _0xf6b405[_0x92e9('0x24')](_0x5abdb9)['then'](function(_0x355c5b){return _0x355c5b;});}return null;};}function removeEntity(_0x31f009,_0x250dea){return function(_0x3811fc){if(_0x3811fc){return _0x3811fc[_0x92e9('0x25')]()[_0x92e9('0x26')](function(){_0x31f009[_0x92e9('0x1b')](0xcc)[_0x92e9('0x27')]();});}};}function handleEntityNotFound(_0x2fdbeb,_0x1395dc){return function(_0x4c706f){if(!_0x4c706f){_0x2fdbeb[_0x92e9('0x1a')](0x194);}return _0x4c706f;};}function handleError(_0x4ee026,_0x236fd3){_0x236fd3=_0x236fd3||0x1f4;return function(_0x22d411){logger[_0x92e9('0x28')](_0x22d411[_0x92e9('0x29')]);if(_0x22d411[_0x92e9('0x2a')]){delete _0x22d411[_0x92e9('0x2a')];}_0x4ee026[_0x92e9('0x1b')](_0x236fd3)[_0x92e9('0x2b')](_0x22d411);};}exports[_0x92e9('0x2c')]=function(_0x4164cf,_0x247586){var _0x465199={},_0x26fe8c={},_0x232416={'count':0x0,'rows':[]};var _0x23d710=_[_0x92e9('0x2d')](db['FreshsalesAccount'][_0x92e9('0x2e')],function(_0x1ca541){return{'name':_0x1ca541[_0x92e9('0x2f')],'type':_0x1ca541[_0x92e9('0x30')][_0x92e9('0x31')]};});_0x26fe8c[_0x92e9('0x32')]=_[_0x92e9('0x2d')](_0x23d710,_0x92e9('0x2a'));_0x26fe8c[_0x92e9('0x33')]=_[_0x92e9('0x34')](_0x4164cf['query']);_0x26fe8c[_0x92e9('0x35')]=_[_0x92e9('0x36')](_0x26fe8c['model'],_0x26fe8c[_0x92e9('0x33')]);_0x465199[_0x92e9('0x37')]=_[_0x92e9('0x36')](_0x26fe8c[_0x92e9('0x32')],qs[_0x92e9('0x38')](_0x4164cf[_0x92e9('0x33')][_0x92e9('0x38')]));_0x465199['attributes']=_0x465199[_0x92e9('0x37')][_0x92e9('0x39')]?_0x465199[_0x92e9('0x37')]:_0x26fe8c[_0x92e9('0x32')];if(!_0x4164cf['query']['hasOwnProperty'](_0x92e9('0x3a'))){_0x465199[_0x92e9('0x1e')]=qs[_0x92e9('0x1e')](_0x4164cf[_0x92e9('0x33')]['limit']);_0x465199[_0x92e9('0x1d')]=qs[_0x92e9('0x1d')](_0x4164cf[_0x92e9('0x33')]['offset']);}_0x465199[_0x92e9('0x3b')]=qs[_0x92e9('0x3c')](_0x4164cf[_0x92e9('0x33')][_0x92e9('0x3c')]);_0x465199['where']=qs[_0x92e9('0x35')](_[_0x92e9('0x3d')](_0x4164cf['query'],_0x26fe8c[_0x92e9('0x35')]),_0x23d710);if(_0x4164cf[_0x92e9('0x33')]['filter']){_0x465199['where']=_[_0x92e9('0x3e')](_0x465199[_0x92e9('0x3f')],{'$or':_[_0x92e9('0x2d')](_0x23d710,function(_0x27a19c){if(_0x27a19c[_0x92e9('0x30')]!==_0x92e9('0x40')){var _0x5c6bca={};_0x5c6bca[_0x27a19c['name']]={'$like':'%'+_0x4164cf['query'][_0x92e9('0x41')]+'%'};return _0x5c6bca;}})});}_0x465199=_[_0x92e9('0x3e')]({},_0x465199,_0x4164cf[_0x92e9('0x42')]);var _0x39f81d={'where':_0x465199[_0x92e9('0x3f')]};return db[_0x92e9('0x43')]['count'](_0x39f81d)[_0x92e9('0x26')](function(_0x4fa03b){_0x232416[_0x92e9('0x44')]=_0x4fa03b;if(_0x4164cf[_0x92e9('0x33')]['includeAll']){_0x465199[_0x92e9('0x45')]=[{'all':!![]}];}return db[_0x92e9('0x43')][_0x92e9('0x46')](_0x465199);})['then'](function(_0x55ed5f){_0x232416[_0x92e9('0x47')]=_0x55ed5f;return _0x232416;})[_0x92e9('0x26')](respondWithFilteredResult(_0x247586,_0x465199))[_0x92e9('0x48')](handleError(_0x247586,null));};exports['show']=function(_0xbc1ac3,_0x1866cf){var _0x58a996={'raw':![],'where':{'id':_0xbc1ac3[_0x92e9('0x49')]['id']}},_0x170c21={};_0x170c21[_0x92e9('0x32')]=_[_0x92e9('0x34')](db[_0x92e9('0x43')][_0x92e9('0x2e')]);_0x170c21['query']=_[_0x92e9('0x34')](_0xbc1ac3['query']);_0x170c21[_0x92e9('0x35')]=_[_0x92e9('0x36')](_0x170c21[_0x92e9('0x32')],_0x170c21[_0x92e9('0x33')]);_0x58a996[_0x92e9('0x37')]=_[_0x92e9('0x36')](_0x170c21[_0x92e9('0x32')],qs[_0x92e9('0x38')](_0xbc1ac3[_0x92e9('0x33')][_0x92e9('0x38')]));_0x58a996[_0x92e9('0x37')]=_0x58a996['attributes'][_0x92e9('0x39')]?_0x58a996['attributes']:_0x170c21[_0x92e9('0x32')];if(_0xbc1ac3[_0x92e9('0x33')][_0x92e9('0x4a')]){_0x58a996['include']=[{'all':!![]}];}_0x58a996=_[_0x92e9('0x3e')]({},_0x58a996,_0xbc1ac3[_0x92e9('0x42')]);return db['FreshsalesAccount'][_0x92e9('0x4b')](_0x58a996)[_0x92e9('0x26')](handleEntityNotFound(_0x1866cf,null))[_0x92e9('0x26')](respondWithResult(_0x1866cf,null))[_0x92e9('0x48')](handleError(_0x1866cf,null));};exports[_0x92e9('0x4c')]=function(_0x2de3e4,_0x65fafe){return db[_0x92e9('0x43')]['create'](_0x2de3e4[_0x92e9('0x4d')],{})['then'](respondWithResult(_0x65fafe,0xc9))['catch'](handleError(_0x65fafe,null));};exports['update']=function(_0x3ff59d,_0x29f4a5){if(_0x3ff59d[_0x92e9('0x4d')]['id']){delete _0x3ff59d[_0x92e9('0x4d')]['id'];}return db[_0x92e9('0x43')][_0x92e9('0x4b')]({'where':{'id':_0x3ff59d[_0x92e9('0x49')]['id']}})['then'](handleEntityNotFound(_0x29f4a5,null))[_0x92e9('0x26')](saveUpdates(_0x3ff59d['body'],null))['then'](respondWithResult(_0x29f4a5,null))['catch'](handleError(_0x29f4a5,null));};exports[_0x92e9('0x25')]=function(_0x4d71cf,_0x1d37be){return db[_0x92e9('0x43')][_0x92e9('0x4b')]({'where':{'id':_0x4d71cf['params']['id']}})[_0x92e9('0x26')](handleEntityNotFound(_0x1d37be,null))['then'](removeEntity(_0x1d37be,null))[_0x92e9('0x48')](handleError(_0x1d37be,null));};exports[_0x92e9('0x4e')]=function(_0x4cf4a0,_0x1c8949,_0x201d6f){var _0x3863f2={};var _0xda6644={};var _0x35e38c;var _0xea0a32;return db[_0x92e9('0x43')][_0x92e9('0x4f')]({'where':{'id':_0x4cf4a0['params']['id']}})[_0x92e9('0x26')](handleEntityNotFound(_0x1c8949,null))[_0x92e9('0x26')](function(_0x31a9b0){if(_0x31a9b0){_0x35e38c=_0x31a9b0;_0xda6644[_0x92e9('0x32')]=_[_0x92e9('0x34')](db[_0x92e9('0x50')][_0x92e9('0x2e')]);_0xda6644[_0x92e9('0x33')]=_['keys'](_0x4cf4a0[_0x92e9('0x33')]);_0xda6644[_0x92e9('0x35')]=_[_0x92e9('0x36')](_0xda6644[_0x92e9('0x32')],_0xda6644[_0x92e9('0x33')]);_0x3863f2[_0x92e9('0x37')]=_[_0x92e9('0x36')](_0xda6644[_0x92e9('0x32')],qs[_0x92e9('0x38')](_0x4cf4a0['query'][_0x92e9('0x38')]));_0x3863f2[_0x92e9('0x37')]=_0x3863f2[_0x92e9('0x37')][_0x92e9('0x39')]?_0x3863f2[_0x92e9('0x37')]:_0xda6644[_0x92e9('0x32')];_0x3863f2[_0x92e9('0x3b')]=qs[_0x92e9('0x3c')](_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x3c')]);_0x3863f2[_0x92e9('0x3f')]=qs[_0x92e9('0x35')](_[_0x92e9('0x3d')](_0x4cf4a0[_0x92e9('0x33')],_0xda6644[_0x92e9('0x35')]));if(_0x4cf4a0['query']['filter']){_0x3863f2[_0x92e9('0x3f')]=_['merge'](_0x3863f2[_0x92e9('0x3f')],{'$or':_['map'](_0x3863f2[_0x92e9('0x37')],function(_0x48b5fc){var _0x51e8b8={};_0x51e8b8[_0x48b5fc]={'$like':'%'+_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x41')]+'%'};return _0x51e8b8;})});}_0x3863f2=_['merge']({},_0x3863f2,_0x4cf4a0[_0x92e9('0x42')]);return _0x35e38c[_0x92e9('0x4e')](_0x3863f2);}})[_0x92e9('0x26')](function(_0x206354){if(_0x206354){_0xea0a32=_0x206354[_0x92e9('0x39')];if(!_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x51')](_0x92e9('0x3a'))){_0x3863f2['limit']=qs['limit'](_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x1e')]);_0x3863f2[_0x92e9('0x1d')]=qs[_0x92e9('0x1d')](_0x4cf4a0[_0x92e9('0x33')][_0x92e9('0x1d')]);}return _0x35e38c[_0x92e9('0x4e')](_0x3863f2);}})[_0x92e9('0x26')](function(_0x2545b7){if(_0x2545b7){return _0x2545b7?{'count':_0xea0a32,'rows':_0x2545b7}:null;}})[_0x92e9('0x26')](respondWithResult(_0x1c8949,null))[_0x92e9('0x48')](handleError(_0x1c8949,null));};exports[_0x92e9('0x52')]=function(_0x59fd78,_0x291e08,_0x5caf1a){if(_0x59fd78['body']['id']){delete _0x59fd78['body']['id'];}return db[_0x92e9('0x43')]['findOne']({'where':{'id':_0x59fd78[_0x92e9('0x49')]['id']}})[_0x92e9('0x26')](handleEntityNotFound(_0x291e08,null))[_0x92e9('0x26')](function(_0x58df55){if(_0x58df55){_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x53')]=_0x58df55['id'];_0x59fd78[_0x92e9('0x4d')]['Subjects']=integrations[_0x92e9('0x54')](_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x55')],_0x59fd78['body'][_0x92e9('0x30')]);_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x56')]=integrations[_0x92e9('0x57')](_0x59fd78[_0x92e9('0x4d')][_0x92e9('0x55')],_0x59fd78['body'][_0x92e9('0x30')]);return db[_0x92e9('0x50')]['create'](_0x59fd78[_0x92e9('0x4d')],{'include':[{'model':db[_0x92e9('0x58')],'as':_0x92e9('0x59')},{'model':db[_0x92e9('0x58')],'as':_0x92e9('0x56')}]});}return null;})['then'](respondWithResult(_0x291e08,null))[_0x92e9('0x48')](handleError(_0x291e08,null));};exports[_0x92e9('0x5a')]=function(_0x21609b,_0x4d2717,_0x186e2b){var _0x5218f8='';var _0x2e23e7='';return db[_0x92e9('0x43')][_0x92e9('0x4f')]({'where':{'id':_0x21609b[_0x92e9('0x49')]['id']},'attributes':['id',_0x92e9('0x5b'),_0x92e9('0x5c'),'apiKey']})[_0x92e9('0x26')](handleEntityNotFound(_0x4d2717,null))[_0x92e9('0x26')](function(_0x515be8){if(_0x515be8){_0x2e23e7=_0x515be8[_0x92e9('0x5b')];_0x5218f8=_0x515be8[_0x92e9('0x5c')];var _0x54c3b1=_0x515be8[_0x92e9('0x5c')][_0x92e9('0x5d')](-0x1);if(_0x54c3b1==='/'){_0x5218f8=_0x5218f8[_0x92e9('0x5e')](0x0,_0x5218f8['lastIndexOf'](_0x54c3b1));}return rp({'method':_0x92e9('0x5f'),'uri':util[_0x92e9('0x60')]('%s%s',_0x5218f8,_0x92e9('0x61')),'headers':{'Authorization':'Token\x20token='+_0x515be8['apiKey']},'json':!![]});}})[_0x92e9('0x26')](function(_0x29b1e2){if(_0x29b1e2){var _0x3e644f=_0x29b1e2[_0x92e9('0x62')];var _0x365ad8=![];var _0x2bff84=null;for(_0x2bff84=0x0;_0x2bff84<_0x3e644f[_0x92e9('0x39')];_0x2bff84++){if(_0x3e644f[_0x2bff84][_0x92e9('0x63')]===_0x2e23e7){_0x365ad8=!![];}}if(_0x365ad8){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x92e9('0x64')});}}})['then'](respondWithResult(_0x4d2717,null))[_0x92e9('0x48')](function(_0x2f1fa8){var _0x2056b9=_0x21609b['query'][_0x92e9('0x65')]?0x1f4:_0x2f1fa8['statusCode']||0x1f4;logger[_0x92e9('0x28')](_0x92e9('0x66'),_0x92e9('0x5a'),_0x2056b9,JSON[_0x92e9('0x67')](_0x2f1fa8));delete _0x2f1fa8[_0x92e9('0x2a')];if(_0x2056b9===0x191){_0x2056b9=0x190;}_0x4d2717[_0x92e9('0x1b')](_0x2056b9)['send'](_0x21609b[_0x92e9('0x33')][_0x92e9('0x65')]?{'message':_0x92e9('0x68'),'statusCode':_0x2f1fa8[_0x92e9('0x69')]}:_0x2f1fa8);});};
\ No newline at end of file
index a0ac2aa..2932f6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['exports','define','FreshsalesAccount','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x8f9d,0x93));var _0xd8f9=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x8f9d[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0xd8f9('0x0'));var util=require('util');var logger=require(_0xd8f9('0x1'))('api');var moment=require(_0xd8f9('0x2'));var BPromise=require(_0xd8f9('0x3'));var rp=require(_0xd8f9('0x4'));var fs=require('fs');var path=require(_0xd8f9('0x5'));var rimraf=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var attributes=require(_0xd8f9('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xd8f9('0x9')]=function(_0x24dd1e,_0x25d417){return _0x24dd1e[_0xd8f9('0xa')](_0xd8f9('0xb'),attributes,{'tableName':'int_freshsales_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe5af=['FreshsalesAccount','int_freshsales_accounts','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../components/integrations/configuration','exports','define'];(function(_0x549d3a,_0x42ff6e){var _0x573922=function(_0x3eff89){while(--_0x3eff89){_0x549d3a['push'](_0x549d3a['shift']());}};_0x573922(++_0x42ff6e);}(_0xe5af,0x9c));var _0xfe5a=function(_0x341c7d,_0x4ca460){_0x341c7d=_0x341c7d-0x0;var _0x5ab893=_0xe5af[_0x341c7d];return _0x5ab893;};'use strict';var _=require('lodash');var util=require(_0xfe5a('0x0'));var logger=require(_0xfe5a('0x1'))('api');var moment=require(_0xfe5a('0x2'));var BPromise=require(_0xfe5a('0x3'));var rp=require(_0xfe5a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfe5a('0x5'));var config=require('../../config/environment');var attributes=require('./intFreshsalesAccount.attributes');var integrations=require(_0xfe5a('0x6'));module[_0xfe5a('0x7')]=function(_0x4e418f,_0x5eea2e){return _0x4e418f[_0xfe5a('0x8')](_0xfe5a('0x9'),attributes,{'tableName':_0xfe5a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4d1a0bd..a4cfb41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e7=['find','ShowFreshsalesAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','map','include','model','stringify'];(function(_0x4bd06e,_0x593701){var _0x85ebb=function(_0x26a7f2){while(--_0x26a7f2){_0x4bd06e['push'](_0x4bd06e['shift']());}};_0x85ebb(++_0x593701);}(_0x25e7,0x1d6));var _0x725e=function(_0x2336ea,_0x46e872){_0x2336ea=_0x2336ea-0x0;var _0x216bf9=_0x25e7[_0x2336ea];return _0x216bf9;};'use strict';var _=require(_0x725e('0x0'));var util=require(_0x725e('0x1'));var moment=require(_0x725e('0x2'));var BPromise=require(_0x725e('0x3'));var rs=require(_0x725e('0x4'));var fs=require('fs');var Redis=require(_0x725e('0x5'));var db=require(_0x725e('0x6'))['db'];var utils=require(_0x725e('0x7'));var logger=require(_0x725e('0x8'))(_0x725e('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x725e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x481316,_0x111a50,_0x192c27){return new BPromise(function(_0x216b33,_0x67de0c){return client[_0x725e('0xb')](_0x481316,_0x192c27)[_0x725e('0xc')](function(_0x39858a){logger[_0x725e('0xd')](_0x725e('0xe'),_0x111a50,_0x725e('0xf'));logger[_0x725e('0x10')](_0x725e('0x11'),_0x111a50,'request\x20sent',JSON['stringify'](_0x39858a));if(_0x39858a[_0x725e('0x12')]){if(_0x39858a[_0x725e('0x12')]['code']===0x1f4){logger['error'](_0x725e('0xe'),_0x111a50,_0x39858a[_0x725e('0x12')]['message']);return _0x67de0c(_0x39858a[_0x725e('0x12')][_0x725e('0x13')]);}logger[_0x725e('0x12')]('FreshsalesAccount,\x20%s,\x20%s',_0x111a50,_0x39858a[_0x725e('0x12')][_0x725e('0x13')]);return _0x216b33(_0x39858a[_0x725e('0x12')][_0x725e('0x13')]);}else{logger[_0x725e('0xd')](_0x725e('0xe'),_0x111a50,'request\x20sent');_0x216b33(_0x39858a[_0x725e('0x14')][_0x725e('0x13')]);}})[_0x725e('0x15')](function(_0x54ac0f){logger[_0x725e('0x12')](_0x725e('0xe'),_0x111a50,_0x54ac0f);_0x67de0c(_0x54ac0f);});});}exports[_0x725e('0x16')]=function(_0x397e33){var _0x268438=this;return new Promise(function(_0x2811e7,_0x528e7d){return db[_0x725e('0x17')][_0x725e('0x18')]({'raw':_0x397e33[_0x725e('0x19')]?_0x397e33[_0x725e('0x19')][_0x725e('0x1a')]===undefined?!![]:![]:!![],'where':_0x397e33[_0x725e('0x19')]?_0x397e33['options'][_0x725e('0x1b')]||null:null,'attributes':_0x397e33[_0x725e('0x19')]?_0x397e33[_0x725e('0x19')][_0x725e('0x1c')]||null:null,'limit':_0x397e33[_0x725e('0x19')]?_0x397e33[_0x725e('0x19')][_0x725e('0x1d')]||null:null,'include':_0x397e33[_0x725e('0x19')]?_0x397e33[_0x725e('0x19')]['include']?_[_0x725e('0x1e')](_0x397e33[_0x725e('0x19')][_0x725e('0x1f')],function(_0x3facae){return{'model':db[_0x3facae['model']],'as':_0x3facae['as'],'attributes':_0x3facae[_0x725e('0x1c')],'include':_0x3facae['include']?_['map'](_0x3facae['include'],function(_0x2aad7b){return{'model':db[_0x2aad7b[_0x725e('0x20')]],'as':_0x2aad7b['as'],'attributes':_0x2aad7b[_0x725e('0x1c')],'include':_0x2aad7b['include']?_[_0x725e('0x1e')](_0x2aad7b[_0x725e('0x1f')],function(_0x5a5bef){return{'model':db[_0x5a5bef[_0x725e('0x20')]],'as':_0x5a5bef['as'],'attributes':_0x5a5bef[_0x725e('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x378ace){logger['info']('GetFreshsalesAccount',_0x397e33);logger[_0x725e('0x10')]('GetFreshsalesAccount',_0x397e33,JSON[_0x725e('0x21')](_0x378ace));_0x2811e7(_0x378ace);})['catch'](function(_0x4de2e0){logger[_0x725e('0x12')](_0x725e('0x16'),_0x4de2e0[_0x725e('0x13')],_0x397e33);_0x528e7d(_0x268438['error'](0x1f4,_0x4de2e0[_0x725e('0x13')]));});});};exports['ShowFreshsalesAccount']=function(_0x85d29c){var _0x1ce9c8=this;return new Promise(function(_0x39932f,_0x28951f){return db[_0x725e('0x17')][_0x725e('0x22')]({'raw':_0x85d29c[_0x725e('0x19')]?_0x85d29c[_0x725e('0x19')][_0x725e('0x1a')]===undefined?!![]:![]:!![],'where':_0x85d29c[_0x725e('0x19')]?_0x85d29c[_0x725e('0x19')]['where']||null:null,'attributes':_0x85d29c[_0x725e('0x19')]?_0x85d29c[_0x725e('0x19')]['attributes']||null:null,'include':_0x85d29c[_0x725e('0x19')]?_0x85d29c['options'][_0x725e('0x1f')]?_['map'](_0x85d29c[_0x725e('0x19')][_0x725e('0x1f')],function(_0x1f2898){return{'model':db[_0x1f2898[_0x725e('0x20')]],'as':_0x1f2898['as'],'attributes':_0x1f2898[_0x725e('0x1c')],'include':_0x1f2898[_0x725e('0x1f')]?_['map'](_0x1f2898['include'],function(_0x35e5e7){return{'model':db[_0x35e5e7[_0x725e('0x20')]],'as':_0x35e5e7['as'],'attributes':_0x35e5e7[_0x725e('0x1c')],'include':_0x35e5e7['include']?_[_0x725e('0x1e')](_0x35e5e7['include'],function(_0x3ce327){return{'model':db[_0x3ce327[_0x725e('0x20')]],'as':_0x3ce327['as'],'attributes':_0x3ce327[_0x725e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x725e('0xc')](function(_0x4f15f3){logger['info'](_0x725e('0x23'),_0x85d29c);logger[_0x725e('0x10')](_0x725e('0x23'),_0x85d29c,JSON['stringify'](_0x4f15f3));_0x39932f(_0x4f15f3);})[_0x725e('0x15')](function(_0xec3b9d){logger[_0x725e('0x12')]('ShowFreshsalesAccount',_0xec3b9d[_0x725e('0x13')],_0x85d29c);_0x28951f(_0x1ce9c8['error'](0x1f4,_0xec3b9d[_0x725e('0x13')]));});});};
\ No newline at end of file
+var _0x2da6=['info','FreshsalesAccount,\x20%s,\x20%s','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FreshsalesAccount','options','raw','where','attributes','include','map','model','GetFreshsalesAccount','ShowFreshsalesAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','then'];(function(_0x31ac72,_0x467dcb){var _0xe4325a=function(_0x14c93c){while(--_0x14c93c){_0x31ac72['push'](_0x31ac72['shift']());}};_0xe4325a(++_0x467dcb);}(_0x2da6,0x1dd));var _0x62da=function(_0x5ec366,_0xd3f4c2){_0x5ec366=_0x5ec366-0x0;var _0x57d1f8=_0x2da6[_0x5ec366];return _0x57d1f8;};'use strict';var _=require(_0x62da('0x0'));var util=require(_0x62da('0x1'));var moment=require(_0x62da('0x2'));var BPromise=require(_0x62da('0x3'));var rs=require(_0x62da('0x4'));var fs=require('fs');var Redis=require(_0x62da('0x5'));var db=require(_0x62da('0x6'))['db'];var utils=require(_0x62da('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x62da('0x8'));var jayson=require(_0x62da('0x9'));var client=jayson[_0x62da('0xa')][_0x62da('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x100e73,_0x9d9139,_0x310c15){return new BPromise(function(_0x16f919,_0xbfd2b0){return client['request'](_0x100e73,_0x310c15)[_0x62da('0xc')](function(_0x2a3937){logger[_0x62da('0xd')](_0x62da('0xe'),_0x9d9139,'request\x20sent');logger[_0x62da('0xf')](_0x62da('0x10'),_0x9d9139,_0x62da('0x11'),JSON[_0x62da('0x12')](_0x2a3937));if(_0x2a3937[_0x62da('0x13')]){if(_0x2a3937['error'][_0x62da('0x14')]===0x1f4){logger[_0x62da('0x13')](_0x62da('0xe'),_0x9d9139,_0x2a3937[_0x62da('0x13')][_0x62da('0x15')]);return _0xbfd2b0(_0x2a3937['error']['message']);}logger[_0x62da('0x13')](_0x62da('0xe'),_0x9d9139,_0x2a3937[_0x62da('0x13')][_0x62da('0x15')]);return _0x16f919(_0x2a3937[_0x62da('0x13')][_0x62da('0x15')]);}else{logger[_0x62da('0xd')](_0x62da('0xe'),_0x9d9139,_0x62da('0x11'));_0x16f919(_0x2a3937[_0x62da('0x16')][_0x62da('0x15')]);}})[_0x62da('0x17')](function(_0x1f6bc8){logger[_0x62da('0x13')]('FreshsalesAccount,\x20%s,\x20%s',_0x9d9139,_0x1f6bc8);_0xbfd2b0(_0x1f6bc8);});});}exports['GetFreshsalesAccount']=function(_0xa7050b){var _0x4ae4fb=this;return new Promise(function(_0x4d6482,_0x264366){return db[_0x62da('0x18')]['findAll']({'raw':_0xa7050b[_0x62da('0x19')]?_0xa7050b['options'][_0x62da('0x1a')]===undefined?!![]:![]:!![],'where':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')][_0x62da('0x1b')]||null:null,'attributes':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')][_0x62da('0x1c')]||null:null,'limit':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')]['limit']||null:null,'include':_0xa7050b[_0x62da('0x19')]?_0xa7050b[_0x62da('0x19')][_0x62da('0x1d')]?_[_0x62da('0x1e')](_0xa7050b[_0x62da('0x19')][_0x62da('0x1d')],function(_0x24298a){return{'model':db[_0x24298a['model']],'as':_0x24298a['as'],'attributes':_0x24298a['attributes'],'include':_0x24298a['include']?_[_0x62da('0x1e')](_0x24298a[_0x62da('0x1d')],function(_0x14897c){return{'model':db[_0x14897c[_0x62da('0x1f')]],'as':_0x14897c['as'],'attributes':_0x14897c['attributes'],'include':_0x14897c[_0x62da('0x1d')]?_[_0x62da('0x1e')](_0x14897c['include'],function(_0x3ccf96){return{'model':db[_0x3ccf96[_0x62da('0x1f')]],'as':_0x3ccf96['as'],'attributes':_0x3ccf96[_0x62da('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x41de3a){logger[_0x62da('0xd')](_0x62da('0x20'),_0xa7050b);logger['debug']('GetFreshsalesAccount',_0xa7050b,JSON[_0x62da('0x12')](_0x41de3a));_0x4d6482(_0x41de3a);})[_0x62da('0x17')](function(_0x220ffc){logger['error'](_0x62da('0x20'),_0x220ffc[_0x62da('0x15')],_0xa7050b);_0x264366(_0x4ae4fb[_0x62da('0x13')](0x1f4,_0x220ffc[_0x62da('0x15')]));});});};exports[_0x62da('0x21')]=function(_0x1cf765){var _0x592c6c=this;return new Promise(function(_0xbe398f,_0x4f71bc){return db[_0x62da('0x18')][_0x62da('0x22')]({'raw':_0x1cf765[_0x62da('0x19')]?_0x1cf765[_0x62da('0x19')][_0x62da('0x1a')]===undefined?!![]:![]:!![],'where':_0x1cf765[_0x62da('0x19')]?_0x1cf765['options'][_0x62da('0x1b')]||null:null,'attributes':_0x1cf765[_0x62da('0x19')]?_0x1cf765[_0x62da('0x19')]['attributes']||null:null,'include':_0x1cf765[_0x62da('0x19')]?_0x1cf765[_0x62da('0x19')][_0x62da('0x1d')]?_['map'](_0x1cf765[_0x62da('0x19')][_0x62da('0x1d')],function(_0x55eda7){return{'model':db[_0x55eda7[_0x62da('0x1f')]],'as':_0x55eda7['as'],'attributes':_0x55eda7[_0x62da('0x1c')],'include':_0x55eda7['include']?_[_0x62da('0x1e')](_0x55eda7[_0x62da('0x1d')],function(_0x11bf73){return{'model':db[_0x11bf73[_0x62da('0x1f')]],'as':_0x11bf73['as'],'attributes':_0x11bf73[_0x62da('0x1c')],'include':_0x11bf73[_0x62da('0x1d')]?_[_0x62da('0x1e')](_0x11bf73[_0x62da('0x1d')],function(_0x2f1115){return{'model':db[_0x2f1115[_0x62da('0x1f')]],'as':_0x2f1115['as'],'attributes':_0x2f1115[_0x62da('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x62da('0xc')](function(_0x3057f6){logger[_0x62da('0xd')](_0x62da('0x21'),_0x1cf765);logger[_0x62da('0xf')](_0x62da('0x21'),_0x1cf765,JSON['stringify'](_0x3057f6));_0xbe398f(_0x3057f6);})[_0x62da('0x17')](function(_0x5e9295){logger[_0x62da('0x13')](_0x62da('0x21'),_0x5e9295[_0x62da('0x15')],_0x1cf765);_0x4f71bc(_0x592c6c['error'](0x1f4,_0x5e9295[_0x62da('0x15')]));});});};
\ No newline at end of file
index 9a65bf6..4d011fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf5c=['../../components/interaction/service','./intFreshsalesConfiguration.controller','get','isAuthenticated','index','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','post','create','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x5091a1,_0x29f0c9){var _0x3cf081=function(_0x44ad2d){while(--_0x44ad2d){_0x5091a1['push'](_0x5091a1['shift']());}};_0x3cf081(++_0x29f0c9);}(_0xbf5c,0xd0));var _0xcbf5=function(_0x50961c,_0x47d795){_0x50961c=_0x50961c-0x0;var _0x34f303=_0xbf5c[_0x50961c];return _0x34f303;};'use strict';var multer=require(_0xcbf5('0x0'));var util=require(_0xcbf5('0x1'));var path=require(_0xcbf5('0x2'));var timeout=require(_0xcbf5('0x3'));var express=require(_0xcbf5('0x4'));var router=express[_0xcbf5('0x5')]();var fs_extra=require(_0xcbf5('0x6'));var auth=require(_0xcbf5('0x7'));var interaction=require(_0xcbf5('0x8'));var config=require('../../config/environment');var controller=require(_0xcbf5('0x9'));router[_0xcbf5('0xa')]('/',auth[_0xcbf5('0xb')](),controller[_0xcbf5('0xc')]);router[_0xcbf5('0xa')]('/:id',auth[_0xcbf5('0xb')](),controller[_0xcbf5('0xd')]);router[_0xcbf5('0xa')](_0xcbf5('0xe'),auth[_0xcbf5('0xb')](),controller[_0xcbf5('0xf')]);router[_0xcbf5('0xa')](_0xcbf5('0x10'),auth[_0xcbf5('0xb')](),controller[_0xcbf5('0x11')]);router[_0xcbf5('0xa')](_0xcbf5('0x12'),auth['isAuthenticated'](),controller['getFields']);router[_0xcbf5('0x13')]('/',auth[_0xcbf5('0xb')](),controller[_0xcbf5('0x14')]);router[_0xcbf5('0x15')]('/:id',auth[_0xcbf5('0xb')](),controller[_0xcbf5('0x16')]);router[_0xcbf5('0x17')](_0xcbf5('0x18'),auth[_0xcbf5('0xb')](),controller[_0xcbf5('0x19')]);module[_0xcbf5('0x1a')]=router;
\ No newline at end of file
+var _0x8335=['../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/subjects','getDescriptions','getFields','put','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x212d2d,_0x53a4f6){var _0x38f0fd=function(_0x1300b2){while(--_0x1300b2){_0x212d2d['push'](_0x212d2d['shift']());}};_0x38f0fd(++_0x53a4f6);}(_0x8335,0xcb));var _0x5833=function(_0x2fc4af,_0x15d582){_0x2fc4af=_0x2fc4af-0x0;var _0x41d60a=_0x8335[_0x2fc4af];return _0x41d60a;};'use strict';var multer=require(_0x5833('0x0'));var util=require(_0x5833('0x1'));var path=require(_0x5833('0x2'));var timeout=require(_0x5833('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5833('0x4'));var auth=require(_0x5833('0x5'));var interaction=require(_0x5833('0x6'));var config=require(_0x5833('0x7'));var controller=require(_0x5833('0x8'));router['get']('/',auth[_0x5833('0x9')](),controller[_0x5833('0xa')]);router[_0x5833('0xb')](_0x5833('0xc'),auth[_0x5833('0x9')](),controller[_0x5833('0xd')]);router['get'](_0x5833('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x5833('0xb')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x5833('0xf')]);router[_0x5833('0xb')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5833('0x10')]);router['post']('/',auth[_0x5833('0x9')](),controller['create']);router[_0x5833('0x11')](_0x5833('0xc'),auth[_0x5833('0x9')](),controller['update']);router[_0x5833('0x12')](_0x5833('0xc'),auth[_0x5833('0x9')](),controller[_0x5833('0x13')]);module[_0x5833('0x14')]=router;
\ No newline at end of file
index 14adfa6..cfbd0de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58e4=['exports','STRING'];(function(_0x14d939,_0x47e1cb){var _0x506982=function(_0x55eb54){while(--_0x55eb54){_0x14d939['push'](_0x14d939['shift']());}};_0x506982(++_0x47e1cb);}(_0x58e4,0x186));var _0x458e=function(_0x19f61e,_0x3ade86){_0x19f61e=_0x19f61e-0x0;var _0x1eb7c7=_0x58e4[_0x19f61e];return _0x1eb7c7;};'use strict';var Sequelize=require('sequelize');module[_0x458e('0x0')]={'name':{'type':Sequelize[_0x458e('0x1')]},'description':{'type':Sequelize[_0x458e('0x1')]}};
\ No newline at end of file
+var _0x88f7=['STRING'];(function(_0x1ca3ea,_0x2f02ed){var _0x180ae5=function(_0x1b449a){while(--_0x1b449a){_0x1ca3ea['push'](_0x1ca3ea['shift']());}};_0x180ae5(++_0x2f02ed);}(_0x88f7,0x1af));var _0x788f=function(_0x15c421,_0x6366f7){_0x15c421=_0x15c421-0x0;var _0x5e5ed5=_0x88f7[_0x15c421];return _0x5e5ed5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x788f('0x0')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b1f7de9..a2340fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a4=['sort','where','pick','filter','merge','VIRTUAL','options','rows','catch','params','length','includeAll','include','find','create','body','update','getSubjects','FreshsalesField','order','getDescriptions','findOne','getFields','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','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x15a4,0x6d));var _0x415a=function(_0x11c06e,_0x1cb9c7){_0x11c06e=_0x11c06e-0x0;var _0x20a7dc=_0x15a4[_0x11c06e];return _0x20a7dc;};'use strict';var emlformat=require(_0x415a('0x0'));var rimraf=require(_0x415a('0x1'));var zipdir=require(_0x415a('0x2'));var jsonpatch=require(_0x415a('0x3'));var rp=require(_0x415a('0x4'));var moment=require(_0x415a('0x5'));var BPromise=require(_0x415a('0x6'));var Mustache=require(_0x415a('0x7'));var util=require(_0x415a('0x8'));var path=require(_0x415a('0x9'));var sox=require(_0x415a('0xa'));var csv=require(_0x415a('0xb'));var ejs=require(_0x415a('0xc'));var fs=require('fs');var fs_extra=require(_0x415a('0xd'));var _=require(_0x415a('0xe'));var squel=require('squel');var crypto=require(_0x415a('0xf'));var jsforce=require(_0x415a('0x10'));var deskjs=require(_0x415a('0x11'));var toCsv=require('to-csv');var querystring=require(_0x415a('0x12'));var Papa=require(_0x415a('0x13'));var Redis=require(_0x415a('0x14'));var authService=require(_0x415a('0x15'));var qs=require(_0x415a('0x16'));var as=require(_0x415a('0x17'));var hardwareService=require(_0x415a('0x18'));var logger=require(_0x415a('0x19'))(_0x415a('0x1a'));var utils=require(_0x415a('0x1b'));var config=require(_0x415a('0x1c'));var licenseUtil=require('../../config/license/util');var db=require(_0x415a('0x1d'))['db'];function respondWithStatusCode(_0x318dba,_0x5969df){_0x5969df=_0x5969df||0xcc;return function(_0x13ae1a){if(_0x13ae1a){return _0x318dba[_0x415a('0x1e')](_0x5969df);}return _0x318dba[_0x415a('0x1f')](_0x5969df)[_0x415a('0x20')]();};}function respondWithResult(_0x300579,_0x161e06){_0x161e06=_0x161e06||0xc8;return function(_0x249738){if(_0x249738){return _0x300579[_0x415a('0x1f')](_0x161e06)[_0x415a('0x21')](_0x249738);}};}function respondWithFilteredResult(_0x304ec6,_0xaf6b7e){return function(_0x1eaa60){if(_0x1eaa60){var _0x38be07=typeof _0xaf6b7e[_0x415a('0x22')]==='undefined'&&typeof _0xaf6b7e['limit']==='undefined';var _0x597ec8=_0x1eaa60[_0x415a('0x23')];var _0x42685d=_0x38be07?0x0:_0xaf6b7e[_0x415a('0x22')];var _0xf7f0db=_0x38be07?_0x1eaa60[_0x415a('0x23')]:_0xaf6b7e['offset']+_0xaf6b7e[_0x415a('0x24')];var _0x5f170e;if(_0xf7f0db>=_0x597ec8){_0xf7f0db=_0x597ec8;_0x5f170e=0xc8;}else{_0x5f170e=0xce;}_0x304ec6[_0x415a('0x1f')](_0x5f170e);return _0x304ec6[_0x415a('0x25')](_0x415a('0x26'),_0x42685d+'-'+_0xf7f0db+'/'+_0x597ec8)[_0x415a('0x21')](_0x1eaa60);}return null;};}function patchUpdates(_0x513c52){return function(_0x188926){try{jsonpatch[_0x415a('0x27')](_0x188926,_0x513c52,!![]);}catch(_0x4bcc66){return BPromise[_0x415a('0x28')](_0x4bcc66);}return _0x188926['save']();};}function saveUpdates(_0x151ee5,_0x2a1dc4){return function(_0x54d88f){if(_0x54d88f){return _0x54d88f['update'](_0x151ee5)[_0x415a('0x29')](function(_0x14b38c){return _0x14b38c;});}return null;};}function removeEntity(_0x5b8650,_0x8db3b9){return function(_0x306660){if(_0x306660){return _0x306660[_0x415a('0x2a')]()['then'](function(){_0x5b8650['status'](0xcc)[_0x415a('0x20')]();});}};}function handleEntityNotFound(_0x54cc80,_0x5082e8){return function(_0x492944){if(!_0x492944){_0x54cc80['sendStatus'](0x194);}return _0x492944;};}function handleError(_0xc0c56f,_0x275a7b){_0x275a7b=_0x275a7b||0x1f4;return function(_0x1b027b){logger[_0x415a('0x2b')](_0x1b027b[_0x415a('0x2c')]);if(_0x1b027b[_0x415a('0x2d')]){delete _0x1b027b[_0x415a('0x2d')];}_0xc0c56f['status'](_0x275a7b)[_0x415a('0x2e')](_0x1b027b);};}exports[_0x415a('0x2f')]=function(_0x354f2b,_0x575f1a){var _0x5b4858={},_0x8fb2fe={},_0x3a6c2b={'count':0x0,'rows':[]};var _0x1514d4=_[_0x415a('0x30')](db[_0x415a('0x31')][_0x415a('0x32')],function(_0x28c39e){return{'name':_0x28c39e[_0x415a('0x33')],'type':_0x28c39e[_0x415a('0x34')][_0x415a('0x35')]};});_0x8fb2fe[_0x415a('0x36')]=_[_0x415a('0x30')](_0x1514d4,_0x415a('0x2d'));_0x8fb2fe[_0x415a('0x37')]=_[_0x415a('0x38')](_0x354f2b['query']);_0x8fb2fe[_0x415a('0x39')]=_[_0x415a('0x3a')](_0x8fb2fe[_0x415a('0x36')],_0x8fb2fe[_0x415a('0x37')]);_0x5b4858[_0x415a('0x3b')]=_['intersection'](_0x8fb2fe[_0x415a('0x36')],qs[_0x415a('0x3c')](_0x354f2b[_0x415a('0x37')][_0x415a('0x3c')]));_0x5b4858[_0x415a('0x3b')]=_0x5b4858[_0x415a('0x3b')]['length']?_0x5b4858['attributes']:_0x8fb2fe[_0x415a('0x36')];if(!_0x354f2b[_0x415a('0x37')][_0x415a('0x3d')](_0x415a('0x3e'))){_0x5b4858['limit']=qs[_0x415a('0x24')](_0x354f2b['query']['limit']);_0x5b4858[_0x415a('0x22')]=qs[_0x415a('0x22')](_0x354f2b[_0x415a('0x37')]['offset']);}_0x5b4858['order']=qs[_0x415a('0x3f')](_0x354f2b[_0x415a('0x37')][_0x415a('0x3f')]);_0x5b4858[_0x415a('0x40')]=qs[_0x415a('0x39')](_[_0x415a('0x41')](_0x354f2b[_0x415a('0x37')],_0x8fb2fe[_0x415a('0x39')]),_0x1514d4);if(_0x354f2b['query'][_0x415a('0x42')]){_0x5b4858[_0x415a('0x40')]=_[_0x415a('0x43')](_0x5b4858[_0x415a('0x40')],{'$or':_[_0x415a('0x30')](_0x1514d4,function(_0x2e5a4d){if(_0x2e5a4d['type']!==_0x415a('0x44')){var _0x583ec5={};_0x583ec5[_0x2e5a4d[_0x415a('0x2d')]]={'$like':'%'+_0x354f2b[_0x415a('0x37')][_0x415a('0x42')]+'%'};return _0x583ec5;}})});}_0x5b4858=_[_0x415a('0x43')]({},_0x5b4858,_0x354f2b[_0x415a('0x45')]);var _0x2ba31c={'where':_0x5b4858[_0x415a('0x40')]};return db[_0x415a('0x31')][_0x415a('0x23')](_0x2ba31c)[_0x415a('0x29')](function(_0x32e067){_0x3a6c2b[_0x415a('0x23')]=_0x32e067;if(_0x354f2b[_0x415a('0x37')]['includeAll']){_0x5b4858['include']=[{'all':!![]}];}return db['FreshsalesConfiguration']['findAll'](_0x5b4858);})['then'](function(_0x24b433){_0x3a6c2b[_0x415a('0x46')]=_0x24b433;return _0x3a6c2b;})['then'](respondWithFilteredResult(_0x575f1a,_0x5b4858))[_0x415a('0x47')](handleError(_0x575f1a,null));};exports['show']=function(_0x9ef461,_0x33c99c){var _0x13d8d5={'raw':![],'where':{'id':_0x9ef461[_0x415a('0x48')]['id']}},_0x58a3e3={};_0x58a3e3[_0x415a('0x36')]=_['keys'](db[_0x415a('0x31')]['rawAttributes']);_0x58a3e3[_0x415a('0x37')]=_[_0x415a('0x38')](_0x9ef461[_0x415a('0x37')]);_0x58a3e3['filters']=_[_0x415a('0x3a')](_0x58a3e3[_0x415a('0x36')],_0x58a3e3['query']);_0x13d8d5['attributes']=_['intersection'](_0x58a3e3[_0x415a('0x36')],qs[_0x415a('0x3c')](_0x9ef461[_0x415a('0x37')][_0x415a('0x3c')]));_0x13d8d5[_0x415a('0x3b')]=_0x13d8d5['attributes'][_0x415a('0x49')]?_0x13d8d5[_0x415a('0x3b')]:_0x58a3e3[_0x415a('0x36')];if(_0x9ef461['query'][_0x415a('0x4a')]){_0x13d8d5[_0x415a('0x4b')]=[{'all':!![]}];}_0x13d8d5=_[_0x415a('0x43')]({},_0x13d8d5,_0x9ef461[_0x415a('0x45')]);return db[_0x415a('0x31')][_0x415a('0x4c')](_0x13d8d5)[_0x415a('0x29')](handleEntityNotFound(_0x33c99c,null))['then'](respondWithResult(_0x33c99c,null))[_0x415a('0x47')](handleError(_0x33c99c,null));};exports[_0x415a('0x4d')]=function(_0x2b51b6,_0x4cd7e4){return db[_0x415a('0x31')]['create'](_0x2b51b6[_0x415a('0x4e')],{})[_0x415a('0x29')](respondWithResult(_0x4cd7e4,0xc9))[_0x415a('0x47')](handleError(_0x4cd7e4,null));};exports[_0x415a('0x4f')]=function(_0x12249f,_0x223ab2){if(_0x12249f[_0x415a('0x4e')]['id']){delete _0x12249f[_0x415a('0x4e')]['id'];}return db[_0x415a('0x31')][_0x415a('0x4c')]({'where':{'id':_0x12249f[_0x415a('0x48')]['id']}})[_0x415a('0x29')](handleEntityNotFound(_0x223ab2,null))[_0x415a('0x29')](saveUpdates(_0x12249f[_0x415a('0x4e')],null))['then'](respondWithResult(_0x223ab2,null))['catch'](handleError(_0x223ab2,null));};exports[_0x415a('0x2a')]=function(_0x2fb8d3,_0x23a558){return db['FreshsalesConfiguration'][_0x415a('0x4c')]({'where':{'id':_0x2fb8d3[_0x415a('0x48')]['id']}})[_0x415a('0x29')](handleEntityNotFound(_0x23a558,null))[_0x415a('0x29')](removeEntity(_0x23a558,null))['catch'](handleError(_0x23a558,null));};exports[_0x415a('0x50')]=function(_0x64b23d,_0x417995,_0x5a3ed5){var _0x4e707b={};var _0x4e63ad={};var _0x1631a9;var _0x347370;return db[_0x415a('0x31')]['findOne']({'where':{'id':_0x64b23d[_0x415a('0x48')]['id']}})[_0x415a('0x29')](handleEntityNotFound(_0x417995,null))[_0x415a('0x29')](function(_0x563387){if(_0x563387){_0x1631a9=_0x563387;_0x4e63ad[_0x415a('0x36')]=_[_0x415a('0x38')](db[_0x415a('0x51')][_0x415a('0x32')]);_0x4e63ad[_0x415a('0x37')]=_[_0x415a('0x38')](_0x64b23d['query']);_0x4e63ad[_0x415a('0x39')]=_[_0x415a('0x3a')](_0x4e63ad[_0x415a('0x36')],_0x4e63ad[_0x415a('0x37')]);_0x4e707b[_0x415a('0x3b')]=_[_0x415a('0x3a')](_0x4e63ad[_0x415a('0x36')],qs[_0x415a('0x3c')](_0x64b23d['query'][_0x415a('0x3c')]));_0x4e707b[_0x415a('0x3b')]=_0x4e707b[_0x415a('0x3b')]['length']?_0x4e707b['attributes']:_0x4e63ad[_0x415a('0x36')];_0x4e707b[_0x415a('0x52')]=qs['sort'](_0x64b23d[_0x415a('0x37')]['sort']);_0x4e707b[_0x415a('0x40')]=qs[_0x415a('0x39')](_['pick'](_0x64b23d[_0x415a('0x37')],_0x4e63ad[_0x415a('0x39')]));if(_0x64b23d[_0x415a('0x37')]['filter']){_0x4e707b[_0x415a('0x40')]=_['merge'](_0x4e707b[_0x415a('0x40')],{'$or':_['map'](_0x4e707b[_0x415a('0x3b')],function(_0x504a97){var _0x45c440={};_0x45c440[_0x504a97]={'$like':'%'+_0x64b23d[_0x415a('0x37')]['filter']+'%'};return _0x45c440;})});}_0x4e707b=_[_0x415a('0x43')]({},_0x4e707b,_0x64b23d[_0x415a('0x45')]);return _0x1631a9['getSubjects'](_0x4e707b);}})['then'](function(_0x9b900d){if(_0x9b900d){_0x347370=_0x9b900d['length'];if(!_0x64b23d['query'][_0x415a('0x3d')](_0x415a('0x3e'))){_0x4e707b[_0x415a('0x24')]=qs[_0x415a('0x24')](_0x64b23d[_0x415a('0x37')][_0x415a('0x24')]);_0x4e707b['offset']=qs[_0x415a('0x22')](_0x64b23d[_0x415a('0x37')]['offset']);}return _0x1631a9[_0x415a('0x50')](_0x4e707b);}})[_0x415a('0x29')](function(_0x44fbb7){if(_0x44fbb7){return _0x44fbb7?{'count':_0x347370,'rows':_0x44fbb7}:null;}})[_0x415a('0x29')](respondWithResult(_0x417995,null))['catch'](handleError(_0x417995,null));};exports[_0x415a('0x53')]=function(_0x395f94,_0x1b2588,_0x148423){var _0x78e437={};var _0x5efe32={};var _0x443657;var _0x4dcc1e;return db[_0x415a('0x31')][_0x415a('0x54')]({'where':{'id':_0x395f94[_0x415a('0x48')]['id']}})[_0x415a('0x29')](handleEntityNotFound(_0x1b2588,null))['then'](function(_0x3f6223){if(_0x3f6223){_0x443657=_0x3f6223;_0x5efe32[_0x415a('0x36')]=_[_0x415a('0x38')](db[_0x415a('0x51')][_0x415a('0x32')]);_0x5efe32['query']=_[_0x415a('0x38')](_0x395f94['query']);_0x5efe32['filters']=_[_0x415a('0x3a')](_0x5efe32['model'],_0x5efe32[_0x415a('0x37')]);_0x78e437[_0x415a('0x3b')]=_[_0x415a('0x3a')](_0x5efe32['model'],qs[_0x415a('0x3c')](_0x395f94[_0x415a('0x37')]['fields']));_0x78e437[_0x415a('0x3b')]=_0x78e437['attributes'][_0x415a('0x49')]?_0x78e437[_0x415a('0x3b')]:_0x5efe32[_0x415a('0x36')];_0x78e437[_0x415a('0x52')]=qs[_0x415a('0x3f')](_0x395f94[_0x415a('0x37')]['sort']);_0x78e437['where']=qs[_0x415a('0x39')](_[_0x415a('0x41')](_0x395f94['query'],_0x5efe32[_0x415a('0x39')]));if(_0x395f94['query']['filter']){_0x78e437[_0x415a('0x40')]=_[_0x415a('0x43')](_0x78e437[_0x415a('0x40')],{'$or':_[_0x415a('0x30')](_0x78e437['attributes'],function(_0x1f72ff){var _0x39dc61={};_0x39dc61[_0x1f72ff]={'$like':'%'+_0x395f94[_0x415a('0x37')][_0x415a('0x42')]+'%'};return _0x39dc61;})});}_0x78e437=_[_0x415a('0x43')]({},_0x78e437,_0x395f94['options']);return _0x443657[_0x415a('0x53')](_0x78e437);}})[_0x415a('0x29')](function(_0x220834){if(_0x220834){_0x4dcc1e=_0x220834['length'];if(!_0x395f94[_0x415a('0x37')][_0x415a('0x3d')]('nolimit')){_0x78e437[_0x415a('0x24')]=qs[_0x415a('0x24')](_0x395f94[_0x415a('0x37')][_0x415a('0x24')]);_0x78e437[_0x415a('0x22')]=qs[_0x415a('0x22')](_0x395f94['query']['offset']);}return _0x443657['getDescriptions'](_0x78e437);}})[_0x415a('0x29')](function(_0x20eff2){if(_0x20eff2){return _0x20eff2?{'count':_0x4dcc1e,'rows':_0x20eff2}:null;}})[_0x415a('0x29')](respondWithResult(_0x1b2588,null))[_0x415a('0x47')](handleError(_0x1b2588,null));};exports['getFields']=function(_0x5690d0,_0x344227,_0x19dc7f){var _0x2635ed={};var _0x47f8e5={};var _0xb6c155;var _0x1375e3;return db[_0x415a('0x31')][_0x415a('0x54')]({'where':{'id':_0x5690d0[_0x415a('0x48')]['id']}})[_0x415a('0x29')](handleEntityNotFound(_0x344227,null))['then'](function(_0x34748f){if(_0x34748f){_0xb6c155=_0x34748f;_0x47f8e5[_0x415a('0x36')]=_[_0x415a('0x38')](db['FreshsalesField'][_0x415a('0x32')]);_0x47f8e5[_0x415a('0x37')]=_[_0x415a('0x38')](_0x5690d0['query']);_0x47f8e5[_0x415a('0x39')]=_[_0x415a('0x3a')](_0x47f8e5[_0x415a('0x36')],_0x47f8e5[_0x415a('0x37')]);_0x2635ed[_0x415a('0x3b')]=_['intersection'](_0x47f8e5[_0x415a('0x36')],qs[_0x415a('0x3c')](_0x5690d0[_0x415a('0x37')][_0x415a('0x3c')]));_0x2635ed[_0x415a('0x3b')]=_0x2635ed[_0x415a('0x3b')][_0x415a('0x49')]?_0x2635ed['attributes']:_0x47f8e5[_0x415a('0x36')];_0x2635ed['order']=qs['sort'](_0x5690d0[_0x415a('0x37')]['sort']);_0x2635ed['where']=qs[_0x415a('0x39')](_[_0x415a('0x41')](_0x5690d0[_0x415a('0x37')],_0x47f8e5[_0x415a('0x39')]));if(_0x5690d0[_0x415a('0x37')][_0x415a('0x42')]){_0x2635ed[_0x415a('0x40')]=_[_0x415a('0x43')](_0x2635ed['where'],{'$or':_[_0x415a('0x30')](_0x2635ed[_0x415a('0x3b')],function(_0xc9b1d7){var _0x15e219={};_0x15e219[_0xc9b1d7]={'$like':'%'+_0x5690d0[_0x415a('0x37')][_0x415a('0x42')]+'%'};return _0x15e219;})});}_0x2635ed=_[_0x415a('0x43')]({},_0x2635ed,_0x5690d0[_0x415a('0x45')]);return _0xb6c155[_0x415a('0x55')](_0x2635ed);}})['then'](function(_0x94bee3){if(_0x94bee3){_0x1375e3=_0x94bee3['length'];if(!_0x5690d0[_0x415a('0x37')][_0x415a('0x3d')](_0x415a('0x3e'))){_0x2635ed[_0x415a('0x24')]=qs['limit'](_0x5690d0['query'][_0x415a('0x24')]);_0x2635ed[_0x415a('0x22')]=qs[_0x415a('0x22')](_0x5690d0[_0x415a('0x37')][_0x415a('0x22')]);}return _0xb6c155[_0x415a('0x55')](_0x2635ed);}})[_0x415a('0x29')](function(_0x52247d){if(_0x52247d){return _0x52247d?{'count':_0x1375e3,'rows':_0x52247d}:null;}})[_0x415a('0x29')](respondWithResult(_0x344227,null))[_0x415a('0x47')](handleError(_0x344227,null));};
\ No newline at end of file
+var _0xf941=['../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','end','error','stack','name','index','map','FreshsalesConfiguration','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','getSubjects','findOne','rawAttributes','order','filter','FreshsalesField','getDescriptions','getFields','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x35618f,_0x4bedc5){var _0x21b1c3=function(_0x22dfee){while(--_0x22dfee){_0x35618f['push'](_0x35618f['shift']());}};_0x21b1c3(++_0x4bedc5);}(_0xf941,0x135));var _0x1f94=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xf941[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x1f94('0x0'));var rimraf=require(_0x1f94('0x1'));var zipdir=require(_0x1f94('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1f94('0x3'));var moment=require(_0x1f94('0x4'));var BPromise=require(_0x1f94('0x5'));var Mustache=require(_0x1f94('0x6'));var util=require(_0x1f94('0x7'));var path=require(_0x1f94('0x8'));var sox=require(_0x1f94('0x9'));var csv=require(_0x1f94('0xa'));var ejs=require(_0x1f94('0xb'));var fs=require('fs');var fs_extra=require(_0x1f94('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1f94('0xd'));var jsforce=require(_0x1f94('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x1f94('0xa'));var querystring=require(_0x1f94('0xf'));var Papa=require(_0x1f94('0x10'));var Redis=require(_0x1f94('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x1f94('0x12'));var as=require(_0x1f94('0x13'));var hardwareService=require(_0x1f94('0x14'));var logger=require('../../config/logger')(_0x1f94('0x15'));var utils=require('../../config/utils');var config=require(_0x1f94('0x16'));var licenseUtil=require(_0x1f94('0x17'));var db=require(_0x1f94('0x18'))['db'];function respondWithStatusCode(_0x50d0a7,_0x2565fc){_0x2565fc=_0x2565fc||0xcc;return function(_0x2d53c1){if(_0x2d53c1){return _0x50d0a7[_0x1f94('0x19')](_0x2565fc);}return _0x50d0a7['status'](_0x2565fc)['end']();};}function respondWithResult(_0x59eeba,_0x4c3c60){_0x4c3c60=_0x4c3c60||0xc8;return function(_0x2eeb25){if(_0x2eeb25){return _0x59eeba[_0x1f94('0x1a')](_0x4c3c60)['json'](_0x2eeb25);}};}function respondWithFilteredResult(_0x5c00d8,_0x5acd5e){return function(_0x487c65){if(_0x487c65){var _0xcbdee4=typeof _0x5acd5e[_0x1f94('0x1b')]===_0x1f94('0x1c')&&typeof _0x5acd5e[_0x1f94('0x1d')]===_0x1f94('0x1c');var _0x5b4d8a=_0x487c65[_0x1f94('0x1e')];var _0x58265d=_0xcbdee4?0x0:_0x5acd5e[_0x1f94('0x1b')];var _0x4e59c8=_0xcbdee4?_0x487c65[_0x1f94('0x1e')]:_0x5acd5e['offset']+_0x5acd5e[_0x1f94('0x1d')];var _0x6d430e;if(_0x4e59c8>=_0x5b4d8a){_0x4e59c8=_0x5b4d8a;_0x6d430e=0xc8;}else{_0x6d430e=0xce;}_0x5c00d8['status'](_0x6d430e);return _0x5c00d8[_0x1f94('0x1f')](_0x1f94('0x20'),_0x58265d+'-'+_0x4e59c8+'/'+_0x5b4d8a)[_0x1f94('0x21')](_0x487c65);}return null;};}function patchUpdates(_0x279695){return function(_0x59bbba){try{jsonpatch[_0x1f94('0x22')](_0x59bbba,_0x279695,!![]);}catch(_0x2d2176){return BPromise['reject'](_0x2d2176);}return _0x59bbba[_0x1f94('0x23')]();};}function saveUpdates(_0x2259b2,_0x177e0f){return function(_0x1b7088){if(_0x1b7088){return _0x1b7088[_0x1f94('0x24')](_0x2259b2)['then'](function(_0x37a8c9){return _0x37a8c9;});}return null;};}function removeEntity(_0x28b284,_0x344478){return function(_0x2fea11){if(_0x2fea11){return _0x2fea11[_0x1f94('0x25')]()[_0x1f94('0x26')](function(){_0x28b284[_0x1f94('0x1a')](0xcc)[_0x1f94('0x27')]();});}};}function handleEntityNotFound(_0x151383,_0x10074c){return function(_0xe6b429){if(!_0xe6b429){_0x151383['sendStatus'](0x194);}return _0xe6b429;};}function handleError(_0xa1d44,_0x2863c8){_0x2863c8=_0x2863c8||0x1f4;return function(_0x2637ab){logger[_0x1f94('0x28')](_0x2637ab[_0x1f94('0x29')]);if(_0x2637ab[_0x1f94('0x2a')]){delete _0x2637ab[_0x1f94('0x2a')];}_0xa1d44[_0x1f94('0x1a')](_0x2863c8)['send'](_0x2637ab);};}exports[_0x1f94('0x2b')]=function(_0x1064a4,_0x5f28f4){var _0x2f44b0={},_0x18fdb5={},_0x18266f={'count':0x0,'rows':[]};var _0x1221e4=_[_0x1f94('0x2c')](db[_0x1f94('0x2d')]['rawAttributes'],function(_0x47c6e8){return{'name':_0x47c6e8[_0x1f94('0x2e')],'type':_0x47c6e8[_0x1f94('0x2f')][_0x1f94('0x30')]};});_0x18fdb5['model']=_[_0x1f94('0x2c')](_0x1221e4,_0x1f94('0x2a'));_0x18fdb5[_0x1f94('0x31')]=_[_0x1f94('0x32')](_0x1064a4[_0x1f94('0x31')]);_0x18fdb5[_0x1f94('0x33')]=_[_0x1f94('0x34')](_0x18fdb5[_0x1f94('0x35')],_0x18fdb5['query']);_0x2f44b0[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0x18fdb5['model'],qs[_0x1f94('0x37')](_0x1064a4['query'][_0x1f94('0x37')]));_0x2f44b0[_0x1f94('0x36')]=_0x2f44b0[_0x1f94('0x36')]['length']?_0x2f44b0['attributes']:_0x18fdb5[_0x1f94('0x35')];if(!_0x1064a4[_0x1f94('0x31')][_0x1f94('0x38')](_0x1f94('0x39'))){_0x2f44b0['limit']=qs['limit'](_0x1064a4[_0x1f94('0x31')][_0x1f94('0x1d')]);_0x2f44b0[_0x1f94('0x1b')]=qs[_0x1f94('0x1b')](_0x1064a4[_0x1f94('0x31')][_0x1f94('0x1b')]);}_0x2f44b0['order']=qs[_0x1f94('0x3a')](_0x1064a4[_0x1f94('0x31')]['sort']);_0x2f44b0[_0x1f94('0x3b')]=qs['filters'](_[_0x1f94('0x3c')](_0x1064a4[_0x1f94('0x31')],_0x18fdb5['filters']),_0x1221e4);if(_0x1064a4[_0x1f94('0x31')]['filter']){_0x2f44b0[_0x1f94('0x3b')]=_[_0x1f94('0x3d')](_0x2f44b0[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x1221e4,function(_0x9fdb3){if(_0x9fdb3[_0x1f94('0x2f')]!==_0x1f94('0x3e')){var _0x2e72f6={};_0x2e72f6[_0x9fdb3[_0x1f94('0x2a')]]={'$like':'%'+_0x1064a4['query']['filter']+'%'};return _0x2e72f6;}})});}_0x2f44b0=_[_0x1f94('0x3d')]({},_0x2f44b0,_0x1064a4[_0x1f94('0x3f')]);var _0x4d9699={'where':_0x2f44b0[_0x1f94('0x3b')]};return db[_0x1f94('0x2d')]['count'](_0x4d9699)[_0x1f94('0x26')](function(_0x38e66f){_0x18266f[_0x1f94('0x1e')]=_0x38e66f;if(_0x1064a4[_0x1f94('0x31')]['includeAll']){_0x2f44b0[_0x1f94('0x40')]=[{'all':!![]}];}return db[_0x1f94('0x2d')][_0x1f94('0x41')](_0x2f44b0);})[_0x1f94('0x26')](function(_0x4d8cdc){_0x18266f[_0x1f94('0x42')]=_0x4d8cdc;return _0x18266f;})[_0x1f94('0x26')](respondWithFilteredResult(_0x5f28f4,_0x2f44b0))[_0x1f94('0x43')](handleError(_0x5f28f4,null));};exports[_0x1f94('0x44')]=function(_0x3822df,_0x20c331){var _0xfc21f={'raw':![],'where':{'id':_0x3822df[_0x1f94('0x45')]['id']}},_0xbc5c36={};_0xbc5c36['model']=_[_0x1f94('0x32')](db['FreshsalesConfiguration']['rawAttributes']);_0xbc5c36[_0x1f94('0x31')]=_[_0x1f94('0x32')](_0x3822df[_0x1f94('0x31')]);_0xbc5c36[_0x1f94('0x33')]=_[_0x1f94('0x34')](_0xbc5c36[_0x1f94('0x35')],_0xbc5c36[_0x1f94('0x31')]);_0xfc21f[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0xbc5c36[_0x1f94('0x35')],qs[_0x1f94('0x37')](_0x3822df['query'][_0x1f94('0x37')]));_0xfc21f[_0x1f94('0x36')]=_0xfc21f[_0x1f94('0x36')][_0x1f94('0x46')]?_0xfc21f[_0x1f94('0x36')]:_0xbc5c36['model'];if(_0x3822df[_0x1f94('0x31')][_0x1f94('0x47')]){_0xfc21f[_0x1f94('0x40')]=[{'all':!![]}];}_0xfc21f=_[_0x1f94('0x3d')]({},_0xfc21f,_0x3822df[_0x1f94('0x3f')]);return db['FreshsalesConfiguration'][_0x1f94('0x48')](_0xfc21f)[_0x1f94('0x26')](handleEntityNotFound(_0x20c331,null))[_0x1f94('0x26')](respondWithResult(_0x20c331,null))[_0x1f94('0x43')](handleError(_0x20c331,null));};exports[_0x1f94('0x49')]=function(_0x37cf44,_0x272077){return db[_0x1f94('0x2d')][_0x1f94('0x49')](_0x37cf44[_0x1f94('0x4a')],{})[_0x1f94('0x26')](respondWithResult(_0x272077,0xc9))[_0x1f94('0x43')](handleError(_0x272077,null));};exports[_0x1f94('0x24')]=function(_0x477f0a,_0xca72bc){if(_0x477f0a[_0x1f94('0x4a')]['id']){delete _0x477f0a['body']['id'];}return db[_0x1f94('0x2d')][_0x1f94('0x48')]({'where':{'id':_0x477f0a['params']['id']}})[_0x1f94('0x26')](handleEntityNotFound(_0xca72bc,null))[_0x1f94('0x26')](saveUpdates(_0x477f0a[_0x1f94('0x4a')],null))[_0x1f94('0x26')](respondWithResult(_0xca72bc,null))[_0x1f94('0x43')](handleError(_0xca72bc,null));};exports['destroy']=function(_0x1d7242,_0x5c7bb0){return db[_0x1f94('0x2d')]['find']({'where':{'id':_0x1d7242[_0x1f94('0x45')]['id']}})[_0x1f94('0x26')](handleEntityNotFound(_0x5c7bb0,null))[_0x1f94('0x26')](removeEntity(_0x5c7bb0,null))[_0x1f94('0x43')](handleError(_0x5c7bb0,null));};exports[_0x1f94('0x4b')]=function(_0x521fd7,_0x25bbe0,_0x5abd4b){var _0x455073={};var _0x225827={};var _0xb2143c;var _0x42c635;return db[_0x1f94('0x2d')][_0x1f94('0x4c')]({'where':{'id':_0x521fd7[_0x1f94('0x45')]['id']}})['then'](handleEntityNotFound(_0x25bbe0,null))[_0x1f94('0x26')](function(_0xcdf7c8){if(_0xcdf7c8){_0xb2143c=_0xcdf7c8;_0x225827[_0x1f94('0x35')]=_[_0x1f94('0x32')](db['FreshsalesField'][_0x1f94('0x4d')]);_0x225827[_0x1f94('0x31')]=_[_0x1f94('0x32')](_0x521fd7['query']);_0x225827[_0x1f94('0x33')]=_[_0x1f94('0x34')](_0x225827[_0x1f94('0x35')],_0x225827[_0x1f94('0x31')]);_0x455073[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0x225827['model'],qs[_0x1f94('0x37')](_0x521fd7['query']['fields']));_0x455073[_0x1f94('0x36')]=_0x455073[_0x1f94('0x36')]['length']?_0x455073[_0x1f94('0x36')]:_0x225827['model'];_0x455073[_0x1f94('0x4e')]=qs[_0x1f94('0x3a')](_0x521fd7[_0x1f94('0x31')][_0x1f94('0x3a')]);_0x455073[_0x1f94('0x3b')]=qs[_0x1f94('0x33')](_['pick'](_0x521fd7[_0x1f94('0x31')],_0x225827[_0x1f94('0x33')]));if(_0x521fd7[_0x1f94('0x31')][_0x1f94('0x4f')]){_0x455073[_0x1f94('0x3b')]=_['merge'](_0x455073[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x455073[_0x1f94('0x36')],function(_0x350527){var _0x2a9582={};_0x2a9582[_0x350527]={'$like':'%'+_0x521fd7['query'][_0x1f94('0x4f')]+'%'};return _0x2a9582;})});}_0x455073=_[_0x1f94('0x3d')]({},_0x455073,_0x521fd7[_0x1f94('0x3f')]);return _0xb2143c[_0x1f94('0x4b')](_0x455073);}})['then'](function(_0x6df19f){if(_0x6df19f){_0x42c635=_0x6df19f[_0x1f94('0x46')];if(!_0x521fd7['query'][_0x1f94('0x38')](_0x1f94('0x39'))){_0x455073['limit']=qs['limit'](_0x521fd7['query'][_0x1f94('0x1d')]);_0x455073['offset']=qs[_0x1f94('0x1b')](_0x521fd7['query']['offset']);}return _0xb2143c[_0x1f94('0x4b')](_0x455073);}})[_0x1f94('0x26')](function(_0x6c5c80){if(_0x6c5c80){return _0x6c5c80?{'count':_0x42c635,'rows':_0x6c5c80}:null;}})[_0x1f94('0x26')](respondWithResult(_0x25bbe0,null))[_0x1f94('0x43')](handleError(_0x25bbe0,null));};exports['getDescriptions']=function(_0x473848,_0x9c809a,_0x4bceb4){var _0x10ec87={};var _0x1318d={};var _0xee08b2;var _0x5a4af3;return db[_0x1f94('0x2d')]['findOne']({'where':{'id':_0x473848[_0x1f94('0x45')]['id']}})[_0x1f94('0x26')](handleEntityNotFound(_0x9c809a,null))[_0x1f94('0x26')](function(_0x5171fc){if(_0x5171fc){_0xee08b2=_0x5171fc;_0x1318d[_0x1f94('0x35')]=_[_0x1f94('0x32')](db[_0x1f94('0x50')][_0x1f94('0x4d')]);_0x1318d[_0x1f94('0x31')]=_['keys'](_0x473848['query']);_0x1318d['filters']=_[_0x1f94('0x34')](_0x1318d[_0x1f94('0x35')],_0x1318d['query']);_0x10ec87[_0x1f94('0x36')]=_['intersection'](_0x1318d[_0x1f94('0x35')],qs[_0x1f94('0x37')](_0x473848[_0x1f94('0x31')]['fields']));_0x10ec87[_0x1f94('0x36')]=_0x10ec87[_0x1f94('0x36')][_0x1f94('0x46')]?_0x10ec87[_0x1f94('0x36')]:_0x1318d['model'];_0x10ec87[_0x1f94('0x4e')]=qs[_0x1f94('0x3a')](_0x473848['query']['sort']);_0x10ec87[_0x1f94('0x3b')]=qs[_0x1f94('0x33')](_[_0x1f94('0x3c')](_0x473848['query'],_0x1318d[_0x1f94('0x33')]));if(_0x473848['query'][_0x1f94('0x4f')]){_0x10ec87['where']=_['merge'](_0x10ec87[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x10ec87[_0x1f94('0x36')],function(_0x11e6f8){var _0x188af8={};_0x188af8[_0x11e6f8]={'$like':'%'+_0x473848[_0x1f94('0x31')][_0x1f94('0x4f')]+'%'};return _0x188af8;})});}_0x10ec87=_[_0x1f94('0x3d')]({},_0x10ec87,_0x473848[_0x1f94('0x3f')]);return _0xee08b2['getDescriptions'](_0x10ec87);}})[_0x1f94('0x26')](function(_0x2116a5){if(_0x2116a5){_0x5a4af3=_0x2116a5[_0x1f94('0x46')];if(!_0x473848[_0x1f94('0x31')]['hasOwnProperty'](_0x1f94('0x39'))){_0x10ec87[_0x1f94('0x1d')]=qs[_0x1f94('0x1d')](_0x473848[_0x1f94('0x31')][_0x1f94('0x1d')]);_0x10ec87['offset']=qs[_0x1f94('0x1b')](_0x473848[_0x1f94('0x31')][_0x1f94('0x1b')]);}return _0xee08b2[_0x1f94('0x51')](_0x10ec87);}})[_0x1f94('0x26')](function(_0x44eac9){if(_0x44eac9){return _0x44eac9?{'count':_0x5a4af3,'rows':_0x44eac9}:null;}})[_0x1f94('0x26')](respondWithResult(_0x9c809a,null))[_0x1f94('0x43')](handleError(_0x9c809a,null));};exports[_0x1f94('0x52')]=function(_0x4d307a,_0x2440d8,_0x593f70){var _0x256dbb={};var _0x44d7d6={};var _0x21d7b8;var _0x2c247a;return db['FreshsalesConfiguration'][_0x1f94('0x4c')]({'where':{'id':_0x4d307a['params']['id']}})['then'](handleEntityNotFound(_0x2440d8,null))['then'](function(_0x333760){if(_0x333760){_0x21d7b8=_0x333760;_0x44d7d6[_0x1f94('0x35')]=_['keys'](db['FreshsalesField']['rawAttributes']);_0x44d7d6[_0x1f94('0x31')]=_['keys'](_0x4d307a[_0x1f94('0x31')]);_0x44d7d6['filters']=_[_0x1f94('0x34')](_0x44d7d6[_0x1f94('0x35')],_0x44d7d6[_0x1f94('0x31')]);_0x256dbb[_0x1f94('0x36')]=_[_0x1f94('0x34')](_0x44d7d6['model'],qs['fields'](_0x4d307a[_0x1f94('0x31')][_0x1f94('0x37')]));_0x256dbb[_0x1f94('0x36')]=_0x256dbb[_0x1f94('0x36')][_0x1f94('0x46')]?_0x256dbb[_0x1f94('0x36')]:_0x44d7d6['model'];_0x256dbb[_0x1f94('0x4e')]=qs['sort'](_0x4d307a['query'][_0x1f94('0x3a')]);_0x256dbb['where']=qs[_0x1f94('0x33')](_[_0x1f94('0x3c')](_0x4d307a['query'],_0x44d7d6[_0x1f94('0x33')]));if(_0x4d307a['query'][_0x1f94('0x4f')]){_0x256dbb['where']=_['merge'](_0x256dbb[_0x1f94('0x3b')],{'$or':_[_0x1f94('0x2c')](_0x256dbb[_0x1f94('0x36')],function(_0x4ba2a7){var _0x4a261e={};_0x4a261e[_0x4ba2a7]={'$like':'%'+_0x4d307a[_0x1f94('0x31')][_0x1f94('0x4f')]+'%'};return _0x4a261e;})});}_0x256dbb=_[_0x1f94('0x3d')]({},_0x256dbb,_0x4d307a['options']);return _0x21d7b8[_0x1f94('0x52')](_0x256dbb);}})['then'](function(_0x50045b){if(_0x50045b){_0x2c247a=_0x50045b[_0x1f94('0x46')];if(!_0x4d307a['query'][_0x1f94('0x38')]('nolimit')){_0x256dbb[_0x1f94('0x1d')]=qs[_0x1f94('0x1d')](_0x4d307a[_0x1f94('0x31')]['limit']);_0x256dbb[_0x1f94('0x1b')]=qs[_0x1f94('0x1b')](_0x4d307a[_0x1f94('0x31')][_0x1f94('0x1b')]);}return _0x21d7b8[_0x1f94('0x52')](_0x256dbb);}})[_0x1f94('0x26')](function(_0x45ddef){if(_0x45ddef){return _0x45ddef?{'count':_0x2c247a,'rows':_0x45ddef}:null;}})[_0x1f94('0x26')](respondWithResult(_0x2440d8,null))[_0x1f94('0x43')](handleError(_0x2440d8,null));};
\ No newline at end of file
index e384f2d..7dfc046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa021=['FreshsalesConfiguration','int_freshsales_configurations','util','api','bluebird','request-promise','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports'];(function(_0x479160,_0x3ab560){var _0x47ac6d=function(_0x3f7314){while(--_0x3f7314){_0x479160['push'](_0x479160['shift']());}};_0x47ac6d(++_0x3ab560);}(_0xa021,0x1ce));var _0x1a02=function(_0x1a127a,_0x42f6e6){_0x1a127a=_0x1a127a-0x0;var _0x2a724b=_0xa021[_0x1a127a];return _0x2a724b;};'use strict';var _=require('lodash');var util=require(_0x1a02('0x0'));var logger=require('../../config/logger')(_0x1a02('0x1'));var moment=require('moment');var BPromise=require(_0x1a02('0x2'));var rp=require(_0x1a02('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1a02('0x4'));var config=require(_0x1a02('0x5'));var attributes=require(_0x1a02('0x6'));module[_0x1a02('0x7')]=function(_0x2edcf7,_0x745704){return _0x2edcf7['define'](_0x1a02('0x8'),attributes,{'tableName':_0x1a02('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x20bd=['exports','define','lodash','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes'];(function(_0x1d559c,_0x120e87){var _0x1f1550=function(_0x5035ca){while(--_0x5035ca){_0x1d559c['push'](_0x1d559c['shift']());}};_0x1f1550(++_0x120e87);}(_0x20bd,0xc0));var _0xd20b=function(_0x4d55ef,_0x1a1f7c){_0x4d55ef=_0x4d55ef-0x0;var _0x467e37=_0x20bd[_0x4d55ef];return _0x467e37;};'use strict';var _=require(_0xd20b('0x0'));var util=require('util');var logger=require(_0xd20b('0x1'))(_0xd20b('0x2'));var moment=require('moment');var BPromise=require(_0xd20b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd20b('0x4'));var rimraf=require(_0xd20b('0x5'));var config=require(_0xd20b('0x6'));var attributes=require(_0xd20b('0x7'));module[_0xd20b('0x8')]=function(_0x1a6c0a,_0x1b9665){return _0x1a6c0a[_0xd20b('0x9')]('FreshsalesConfiguration',attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a456c44..9c1b89f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeea=['jayson/promise','client','http','request','then','info','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','FreshsalesConfiguration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x2ddf2d,_0x272b8a){var _0x53dd02=function(_0x5a889c){while(--_0x5a889c){_0x2ddf2d['push'](_0x2ddf2d['shift']());}};_0x53dd02(++_0x272b8a);}(_0xfeea,0xe8));var _0xafee=function(_0x3cf053,_0x7a9947){_0x3cf053=_0x3cf053-0x0;var _0x3b55a0=_0xfeea[_0x3cf053];return _0x3b55a0;};'use strict';var _=require(_0xafee('0x0'));var util=require(_0xafee('0x1'));var moment=require(_0xafee('0x2'));var BPromise=require(_0xafee('0x3'));var rs=require(_0xafee('0x4'));var fs=require('fs');var Redis=require(_0xafee('0x5'));var db=require(_0xafee('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xafee('0x7'))(_0xafee('0x8'));var config=require(_0xafee('0x9'));var jayson=require(_0xafee('0xa'));var client=jayson[_0xafee('0xb')][_0xafee('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xc8fa13,_0xfeff3d,_0x4dfb02){return new BPromise(function(_0x7ec848,_0x311fb9){return client[_0xafee('0xd')](_0xc8fa13,_0x4dfb02)[_0xafee('0xe')](function(_0x2f68fe){logger[_0xafee('0xf')]('FreshsalesConfiguration,\x20%s,\x20%s',_0xfeff3d,_0xafee('0x10'));logger['debug'](_0xafee('0x11'),_0xfeff3d,'request\x20sent',JSON['stringify'](_0x2f68fe));if(_0x2f68fe[_0xafee('0x12')]){if(_0x2f68fe['error']['code']===0x1f4){logger[_0xafee('0x12')](_0xafee('0x13'),_0xfeff3d,_0x2f68fe[_0xafee('0x12')]['message']);return _0x311fb9(_0x2f68fe[_0xafee('0x12')][_0xafee('0x14')]);}logger[_0xafee('0x12')](_0xafee('0x13'),_0xfeff3d,_0x2f68fe['error'][_0xafee('0x14')]);return _0x7ec848(_0x2f68fe[_0xafee('0x12')][_0xafee('0x14')]);}else{logger['info'](_0xafee('0x13'),_0xfeff3d,'request\x20sent');_0x7ec848(_0x2f68fe['result'][_0xafee('0x14')]);}})[_0xafee('0x15')](function(_0x3df2f0){logger[_0xafee('0x12')](_0xafee('0x13'),_0xfeff3d,_0x3df2f0);_0x311fb9(_0x3df2f0);});});}
\ No newline at end of file
+var _0xf20d=['info','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','request\x20sent','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message'];(function(_0x5da280,_0x95073e){var _0x36656a=function(_0x46e3af){while(--_0x46e3af){_0x5da280['push'](_0x5da280['shift']());}};_0x36656a(++_0x95073e);}(_0xf20d,0xa2));var _0xdf20=function(_0x96244a,_0x5af29f){_0x96244a=_0x96244a-0x0;var _0x1a9a25=_0xf20d[_0x96244a];return _0x1a9a25;};'use strict';var _=require(_0xdf20('0x0'));var util=require(_0xdf20('0x1'));var moment=require(_0xdf20('0x2'));var BPromise=require('bluebird');var rs=require(_0xdf20('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf20('0x4'))['db'];var utils=require(_0xdf20('0x5'));var logger=require(_0xdf20('0x6'))('rpc');var config=require(_0xdf20('0x7'));var jayson=require(_0xdf20('0x8'));var client=jayson[_0xdf20('0x9')][_0xdf20('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x109443,_0x12d486,_0x1f010f){return new BPromise(function(_0x293cf9,_0x2fbe25){return client['request'](_0x109443,_0x1f010f)[_0xdf20('0xb')](function(_0x3d54df){logger['info']('FreshsalesConfiguration,\x20%s,\x20%s',_0x12d486,_0xdf20('0xc'));logger['debug'](_0xdf20('0xd'),_0x12d486,'request\x20sent',JSON['stringify'](_0x3d54df));if(_0x3d54df[_0xdf20('0xe')]){if(_0x3d54df[_0xdf20('0xe')][_0xdf20('0xf')]===0x1f4){logger['error'](_0xdf20('0x10'),_0x12d486,_0x3d54df[_0xdf20('0xe')][_0xdf20('0x11')]);return _0x2fbe25(_0x3d54df[_0xdf20('0xe')][_0xdf20('0x11')]);}logger[_0xdf20('0xe')](_0xdf20('0x10'),_0x12d486,_0x3d54df[_0xdf20('0xe')]['message']);return _0x293cf9(_0x3d54df[_0xdf20('0xe')][_0xdf20('0x11')]);}else{logger[_0xdf20('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x12d486,_0xdf20('0xc'));_0x293cf9(_0x3d54df[_0xdf20('0x13')][_0xdf20('0x11')]);}})['catch'](function(_0x48b3b3){logger[_0xdf20('0xe')](_0xdf20('0x10'),_0x12d486,_0x48b3b3);_0x2fbe25(_0x48b3b3);});});}
\ No newline at end of file
index d502290..58afcf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x765e=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','multer','util','path'];(function(_0x49a37c,_0x1452d2){var _0x57508b=function(_0x278ca2){while(--_0x278ca2){_0x49a37c['push'](_0x49a37c['shift']());}};_0x57508b(++_0x1452d2);}(_0x765e,0x131));var _0xe765=function(_0x340f2a,_0x3f9368){_0x340f2a=_0x340f2a-0x0;var _0x42b746=_0x765e[_0x340f2a];return _0x42b746;};'use strict';var multer=require(_0xe765('0x0'));var util=require(_0xe765('0x1'));var path=require(_0xe765('0x2'));var timeout=require(_0xe765('0x3'));var express=require(_0xe765('0x4'));var router=express[_0xe765('0x5')]();var fs_extra=require(_0xe765('0x6'));var auth=require(_0xe765('0x7'));var interaction=require(_0xe765('0x8'));var config=require(_0xe765('0x9'));var controller=require(_0xe765('0xa'));router[_0xe765('0xb')]('/',auth[_0xe765('0xc')](),controller[_0xe765('0xd')]);router[_0xe765('0xb')]('/:id',auth[_0xe765('0xc')](),controller[_0xe765('0xe')]);router[_0xe765('0xf')]('/',auth[_0xe765('0xc')](),controller[_0xe765('0x10')]);router[_0xe765('0x11')](_0xe765('0x12'),auth['isAuthenticated'](),controller[_0xe765('0x13')]);router[_0xe765('0x14')](_0xe765('0x12'),auth['isAuthenticated'](),controller[_0xe765('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xe205=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshsalesField.controller','get','isAuthenticated','index','create','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xfa2f68,_0x23836e){var _0x252d9a=function(_0x285e61){while(--_0x285e61){_0xfa2f68['push'](_0xfa2f68['shift']());}};_0x252d9a(++_0x23836e);}(_0xe205,0xa7));var _0x5e20=function(_0x1b017e,_0x2d9433){_0x1b017e=_0x1b017e-0x0;var _0x3bf16e=_0xe205[_0x1b017e];return _0x3bf16e;};'use strict';var multer=require(_0x5e20('0x0'));var util=require(_0x5e20('0x1'));var path=require(_0x5e20('0x2'));var timeout=require(_0x5e20('0x3'));var express=require(_0x5e20('0x4'));var router=express[_0x5e20('0x5')]();var fs_extra=require(_0x5e20('0x6'));var auth=require(_0x5e20('0x7'));var interaction=require(_0x5e20('0x8'));var config=require('../../config/environment');var controller=require(_0x5e20('0x9'));router[_0x5e20('0xa')]('/',auth[_0x5e20('0xb')](),controller[_0x5e20('0xc')]);router['get']('/:id',auth[_0x5e20('0xb')](),controller['show']);router['post']('/',auth[_0x5e20('0xb')](),controller[_0x5e20('0xd')]);router['put'](_0x5e20('0xe'),auth[_0x5e20('0xb')](),controller[_0x5e20('0xf')]);router[_0x5e20('0x10')]('/:id',auth[_0x5e20('0xb')](),controller[_0x5e20('0x11')]);module[_0x5e20('0x12')]=router;
\ No newline at end of file
index e51ca2d..8d6b187 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b08=['STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x5e2603,_0x3a55af){var _0x2664d9=function(_0x42938f){while(--_0x42938f){_0x5e2603['push'](_0x5e2603['shift']());}};_0x2664d9(++_0x3a55af);}(_0x5b08,0x110));var _0x85b0=function(_0x2fbb45,_0x1b2c7f){_0x2fbb45=_0x2fbb45-0x0;var _0x526325=_0x5b08[_0x2fbb45];return _0x526325;};'use strict';var Sequelize=require(_0x85b0('0x0'));module[_0x85b0('0x1')]={'type':{'type':Sequelize[_0x85b0('0x2')](_0x85b0('0x3'),_0x85b0('0x4'),_0x85b0('0x5'),_0x85b0('0x6'),_0x85b0('0x7')),'defaultValue':_0x85b0('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x85b0('0x2')](_0x85b0('0x3'),_0x85b0('0x4'),_0x85b0('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x85b0('0x8')]},'customField':{'type':Sequelize[_0x85b0('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x85b0('0x8')]}};
\ No newline at end of file
+var _0xf0e7=['string','STRING','BOOLEAN','exports','ENUM','variable','customVariable','keyValue','picklist'];(function(_0x1599bf,_0x3cc1fb){var _0x2470f2=function(_0x555023){while(--_0x555023){_0x1599bf['push'](_0x1599bf['shift']());}};_0x2470f2(++_0x3cc1fb);}(_0xf0e7,0x1f2));var _0x7f0e=function(_0x35bad0,_0x21927d){_0x35bad0=_0x35bad0-0x0;var _0x4fe50f=_0xf0e7[_0x35bad0];return _0x4fe50f;};'use strict';var Sequelize=require('sequelize');module[_0x7f0e('0x0')]={'type':{'type':Sequelize[_0x7f0e('0x1')]('string',_0x7f0e('0x2'),_0x7f0e('0x3'),_0x7f0e('0x4'),_0x7f0e('0x5')),'defaultValue':_0x7f0e('0x6')},'content':{'type':Sequelize[_0x7f0e('0x7')]},'key':{'type':Sequelize[_0x7f0e('0x7')]},'keyType':{'type':Sequelize[_0x7f0e('0x1')]('string','variable',_0x7f0e('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x7f0e('0x7')]},'nameField':{'type':Sequelize[_0x7f0e('0x7')]},'customField':{'type':Sequelize[_0x7f0e('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d5af126..37e53f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6737=['../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','index','FreshsalesField','fieldName','type','key','keys','filters','model','attributes','intersection','fields','query','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','options','create','body','find','params','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x4463ba,_0x3436c1){var _0x47406c=function(_0x5b5ab8){while(--_0x5b5ab8){_0x4463ba['push'](_0x4463ba['shift']());}};_0x47406c(++_0x3436c1);}(_0x6737,0x1a8));var _0x7673=function(_0x7a9984,_0x94e9f5){_0x7a9984=_0x7a9984-0x0;var _0xb74756=_0x6737[_0x7a9984];return _0xb74756;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x7673('0x0'));var jsonpatch=require(_0x7673('0x1'));var rp=require(_0x7673('0x2'));var moment=require(_0x7673('0x3'));var BPromise=require(_0x7673('0x4'));var Mustache=require(_0x7673('0x5'));var util=require('util');var path=require(_0x7673('0x6'));var sox=require(_0x7673('0x7'));var csv=require(_0x7673('0x8'));var ejs=require(_0x7673('0x9'));var fs=require('fs');var fs_extra=require(_0x7673('0xa'));var _=require('lodash');var squel=require(_0x7673('0xb'));var crypto=require(_0x7673('0xc'));var jsforce=require(_0x7673('0xd'));var deskjs=require(_0x7673('0xe'));var toCsv=require(_0x7673('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7673('0xf'));var authService=require(_0x7673('0x10'));var qs=require(_0x7673('0x11'));var as=require(_0x7673('0x12'));var hardwareService=require(_0x7673('0x13'));var logger=require(_0x7673('0x14'))('api');var utils=require(_0x7673('0x15'));var config=require(_0x7673('0x16'));var licenseUtil=require(_0x7673('0x17'));var db=require(_0x7673('0x18'))['db'];function respondWithStatusCode(_0x5df313,_0x36136c){_0x36136c=_0x36136c||0xcc;return function(_0x4d7471){if(_0x4d7471){return _0x5df313[_0x7673('0x19')](_0x36136c);}return _0x5df313['status'](_0x36136c)['end']();};}function respondWithResult(_0xbec264,_0x5d4dbe){_0x5d4dbe=_0x5d4dbe||0xc8;return function(_0xe67668){if(_0xe67668){return _0xbec264['status'](_0x5d4dbe)[_0x7673('0x1a')](_0xe67668);}};}function respondWithFilteredResult(_0x42299b,_0x4fd9c9){return function(_0x763bef){if(_0x763bef){var _0x3da83e=typeof _0x4fd9c9[_0x7673('0x1b')]==='undefined'&&typeof _0x4fd9c9[_0x7673('0x1c')]===_0x7673('0x1d');var _0x441cd4=_0x763bef[_0x7673('0x1e')];var _0x4d657d=_0x3da83e?0x0:_0x4fd9c9[_0x7673('0x1b')];var _0x39c8f4=_0x3da83e?_0x763bef[_0x7673('0x1e')]:_0x4fd9c9[_0x7673('0x1b')]+_0x4fd9c9['limit'];var _0x5d2d2c;if(_0x39c8f4>=_0x441cd4){_0x39c8f4=_0x441cd4;_0x5d2d2c=0xc8;}else{_0x5d2d2c=0xce;}_0x42299b[_0x7673('0x1f')](_0x5d2d2c);return _0x42299b[_0x7673('0x20')](_0x7673('0x21'),_0x4d657d+'-'+_0x39c8f4+'/'+_0x441cd4)[_0x7673('0x1a')](_0x763bef);}return null;};}function patchUpdates(_0x2d7e86){return function(_0x450c54){try{jsonpatch[_0x7673('0x22')](_0x450c54,_0x2d7e86,!![]);}catch(_0x455d80){return BPromise[_0x7673('0x23')](_0x455d80);}return _0x450c54[_0x7673('0x24')]();};}function saveUpdates(_0x18e8aa,_0x3aedfa){return function(_0x13ef14){if(_0x13ef14){return _0x13ef14[_0x7673('0x25')](_0x18e8aa)[_0x7673('0x26')](function(_0x494050){return _0x494050;});}return null;};}function removeEntity(_0x212844,_0xb8add){return function(_0x2be90a){if(_0x2be90a){return _0x2be90a[_0x7673('0x27')]()[_0x7673('0x26')](function(){_0x212844['status'](0xcc)[_0x7673('0x28')]();});}};}function handleEntityNotFound(_0x1279f0,_0x48073c){return function(_0x5d3933){if(!_0x5d3933){_0x1279f0['sendStatus'](0x194);}return _0x5d3933;};}function handleError(_0x66cab9,_0x530a8c){_0x530a8c=_0x530a8c||0x1f4;return function(_0x1bcdeb){logger[_0x7673('0x29')](_0x1bcdeb['stack']);if(_0x1bcdeb[_0x7673('0x2a')]){delete _0x1bcdeb[_0x7673('0x2a')];}_0x66cab9[_0x7673('0x1f')](_0x530a8c)['send'](_0x1bcdeb);};}exports[_0x7673('0x2b')]=function(_0x3f074c,_0x19053b){var _0x212d0c={},_0x5332d0={},_0x4a21ae={'count':0x0,'rows':[]};var _0x10afbd=_['map'](db[_0x7673('0x2c')]['rawAttributes'],function(_0x3d8142){return{'name':_0x3d8142[_0x7673('0x2d')],'type':_0x3d8142[_0x7673('0x2e')][_0x7673('0x2f')]};});_0x5332d0['model']=_['map'](_0x10afbd,'name');_0x5332d0['query']=_[_0x7673('0x30')](_0x3f074c['query']);_0x5332d0[_0x7673('0x31')]=_['intersection'](_0x5332d0[_0x7673('0x32')],_0x5332d0['query']);_0x212d0c[_0x7673('0x33')]=_[_0x7673('0x34')](_0x5332d0[_0x7673('0x32')],qs[_0x7673('0x35')](_0x3f074c[_0x7673('0x36')][_0x7673('0x35')]));_0x212d0c[_0x7673('0x33')]=_0x212d0c[_0x7673('0x33')][_0x7673('0x37')]?_0x212d0c[_0x7673('0x33')]:_0x5332d0[_0x7673('0x32')];if(!_0x3f074c['query'][_0x7673('0x38')]('nolimit')){_0x212d0c[_0x7673('0x1c')]=qs[_0x7673('0x1c')](_0x3f074c['query'][_0x7673('0x1c')]);_0x212d0c[_0x7673('0x1b')]=qs[_0x7673('0x1b')](_0x3f074c['query'][_0x7673('0x1b')]);}_0x212d0c[_0x7673('0x39')]=qs[_0x7673('0x3a')](_0x3f074c[_0x7673('0x36')]['sort']);_0x212d0c[_0x7673('0x3b')]=qs[_0x7673('0x31')](_[_0x7673('0x3c')](_0x3f074c['query'],_0x5332d0[_0x7673('0x31')]),_0x10afbd);if(_0x3f074c[_0x7673('0x36')][_0x7673('0x3d')]){_0x212d0c[_0x7673('0x3b')]=_[_0x7673('0x3e')](_0x212d0c[_0x7673('0x3b')],{'$or':_['map'](_0x10afbd,function(_0x4fcd7f){if(_0x4fcd7f[_0x7673('0x2e')]!==_0x7673('0x3f')){var _0x5255eb={};_0x5255eb[_0x4fcd7f[_0x7673('0x2a')]]={'$like':'%'+_0x3f074c['query'][_0x7673('0x3d')]+'%'};return _0x5255eb;}})});}_0x212d0c=_[_0x7673('0x3e')]({},_0x212d0c,_0x3f074c['options']);var _0x1e95b9={'where':_0x212d0c[_0x7673('0x3b')]};return db[_0x7673('0x2c')][_0x7673('0x1e')](_0x1e95b9)[_0x7673('0x26')](function(_0x34ff34){_0x4a21ae['count']=_0x34ff34;if(_0x3f074c[_0x7673('0x36')]['includeAll']){_0x212d0c[_0x7673('0x40')]=[{'all':!![]}];}return db[_0x7673('0x2c')][_0x7673('0x41')](_0x212d0c);})[_0x7673('0x26')](function(_0x275e40){_0x4a21ae[_0x7673('0x42')]=_0x275e40;return _0x4a21ae;})[_0x7673('0x26')](respondWithFilteredResult(_0x19053b,_0x212d0c))[_0x7673('0x43')](handleError(_0x19053b,null));};exports[_0x7673('0x44')]=function(_0x6055fa,_0x3997b4){var _0x318a06={'raw':!![],'where':{'id':_0x6055fa['params']['id']}},_0x59f93c={};_0x59f93c[_0x7673('0x32')]=_[_0x7673('0x30')](db[_0x7673('0x2c')]['rawAttributes']);_0x59f93c['query']=_['keys'](_0x6055fa['query']);_0x59f93c['filters']=_[_0x7673('0x34')](_0x59f93c['model'],_0x59f93c[_0x7673('0x36')]);_0x318a06[_0x7673('0x33')]=_['intersection'](_0x59f93c[_0x7673('0x32')],qs['fields'](_0x6055fa[_0x7673('0x36')][_0x7673('0x35')]));_0x318a06[_0x7673('0x33')]=_0x318a06[_0x7673('0x33')][_0x7673('0x37')]?_0x318a06['attributes']:_0x59f93c[_0x7673('0x32')];if(_0x6055fa['query']['includeAll']){_0x318a06['include']=[{'all':!![]}];}_0x318a06=_[_0x7673('0x3e')]({},_0x318a06,_0x6055fa[_0x7673('0x45')]);return db[_0x7673('0x2c')]['find'](_0x318a06)[_0x7673('0x26')](handleEntityNotFound(_0x3997b4,null))[_0x7673('0x26')](respondWithResult(_0x3997b4,null))['catch'](handleError(_0x3997b4,null));};exports['create']=function(_0x296056,_0x49c0b8){return db[_0x7673('0x2c')][_0x7673('0x46')](_0x296056['body'],{})[_0x7673('0x26')](respondWithResult(_0x49c0b8,0xc9))['catch'](handleError(_0x49c0b8,null));};exports['update']=function(_0x14fe4b,_0x388e9a){if(_0x14fe4b[_0x7673('0x47')]['id']){delete _0x14fe4b[_0x7673('0x47')]['id'];}return db[_0x7673('0x2c')][_0x7673('0x48')]({'where':{'id':_0x14fe4b[_0x7673('0x49')]['id']}})[_0x7673('0x26')](handleEntityNotFound(_0x388e9a,null))['then'](saveUpdates(_0x14fe4b[_0x7673('0x47')],null))[_0x7673('0x26')](respondWithResult(_0x388e9a,null))[_0x7673('0x43')](handleError(_0x388e9a,null));};exports['destroy']=function(_0x2fb224,_0x15b68c){return db[_0x7673('0x2c')][_0x7673('0x48')]({'where':{'id':_0x2fb224['params']['id']}})[_0x7673('0x26')](handleEntityNotFound(_0x15b68c,null))[_0x7673('0x26')](removeEntity(_0x15b68c,null))[_0x7673('0x43')](handleError(_0x15b68c,null));};
\ No newline at end of file
+var _0x679b=['undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','FreshsalesField','rawAttributes','fieldName','key','query','filters','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','count','include','findAll','params','intersection','length','catch','create','body','find','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../config/logger','api','../../config/license/util','sendStatus','status','end','json','offset'];(function(_0x3cd80f,_0x39b658){var _0x2439a1=function(_0x379e16){while(--_0x379e16){_0x3cd80f['push'](_0x3cd80f['shift']());}};_0x2439a1(++_0x39b658);}(_0x679b,0x180));var _0xb679=function(_0x1a2506,_0xf17646){_0x1a2506=_0x1a2506-0x0;var _0x2cd4ef=_0x679b[_0x1a2506];return _0x2cd4ef;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb679('0x0'));var zipdir=require(_0xb679('0x1'));var jsonpatch=require(_0xb679('0x2'));var rp=require('request-promise');var moment=require(_0xb679('0x3'));var BPromise=require(_0xb679('0x4'));var Mustache=require('mustache');var util=require(_0xb679('0x5'));var path=require('path');var sox=require(_0xb679('0x6'));var csv=require(_0xb679('0x7'));var ejs=require(_0xb679('0x8'));var fs=require('fs');var fs_extra=require(_0xb679('0x9'));var _=require('lodash');var squel=require(_0xb679('0xa'));var crypto=require(_0xb679('0xb'));var jsforce=require(_0xb679('0xc'));var deskjs=require(_0xb679('0xd'));var toCsv=require(_0xb679('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb679('0xe'));var authService=require(_0xb679('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb679('0x10'))(_0xb679('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb679('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbabed9,_0x5465ac){_0x5465ac=_0x5465ac||0xcc;return function(_0x2b7c24){if(_0x2b7c24){return _0xbabed9[_0xb679('0x13')](_0x5465ac);}return _0xbabed9[_0xb679('0x14')](_0x5465ac)[_0xb679('0x15')]();};}function respondWithResult(_0x54659d,_0x16f6b6){_0x16f6b6=_0x16f6b6||0xc8;return function(_0x4fbd86){if(_0x4fbd86){return _0x54659d[_0xb679('0x14')](_0x16f6b6)[_0xb679('0x16')](_0x4fbd86);}};}function respondWithFilteredResult(_0x4f6c34,_0x3d1d01){return function(_0x11df5a){if(_0x11df5a){var _0x71ba15=typeof _0x3d1d01[_0xb679('0x17')]===_0xb679('0x18')&&typeof _0x3d1d01[_0xb679('0x19')]==='undefined';var _0x59d7e4=_0x11df5a['count'];var _0x538122=_0x71ba15?0x0:_0x3d1d01['offset'];var _0x293c42=_0x71ba15?_0x11df5a['count']:_0x3d1d01[_0xb679('0x17')]+_0x3d1d01[_0xb679('0x19')];var _0x1b102f;if(_0x293c42>=_0x59d7e4){_0x293c42=_0x59d7e4;_0x1b102f=0xc8;}else{_0x1b102f=0xce;}_0x4f6c34[_0xb679('0x14')](_0x1b102f);return _0x4f6c34[_0xb679('0x1a')](_0xb679('0x1b'),_0x538122+'-'+_0x293c42+'/'+_0x59d7e4)[_0xb679('0x16')](_0x11df5a);}return null;};}function patchUpdates(_0x295cc8){return function(_0x4f1261){try{jsonpatch[_0xb679('0x1c')](_0x4f1261,_0x295cc8,!![]);}catch(_0x1e2764){return BPromise[_0xb679('0x1d')](_0x1e2764);}return _0x4f1261[_0xb679('0x1e')]();};}function saveUpdates(_0x35e9cc,_0xe583e0){return function(_0x5d271b){if(_0x5d271b){return _0x5d271b['update'](_0x35e9cc)[_0xb679('0x1f')](function(_0x28b0ee){return _0x28b0ee;});}return null;};}function removeEntity(_0x135c05,_0x1937be){return function(_0x3fdfcf){if(_0x3fdfcf){return _0x3fdfcf[_0xb679('0x20')]()[_0xb679('0x1f')](function(){_0x135c05['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xc7019d,_0xb7925e){return function(_0x2a11f0){if(!_0x2a11f0){_0xc7019d[_0xb679('0x13')](0x194);}return _0x2a11f0;};}function handleError(_0xcb3ac,_0x56939c){_0x56939c=_0x56939c||0x1f4;return function(_0x969ca4){logger[_0xb679('0x21')](_0x969ca4[_0xb679('0x22')]);if(_0x969ca4[_0xb679('0x23')]){delete _0x969ca4[_0xb679('0x23')];}_0xcb3ac['status'](_0x56939c)[_0xb679('0x24')](_0x969ca4);};}exports['index']=function(_0x4e60bd,_0x3504f0){var _0x33a1c9={},_0x5077af={},_0x4fa8d2={'count':0x0,'rows':[]};var _0x50aae9=_[_0xb679('0x25')](db[_0xb679('0x26')][_0xb679('0x27')],function(_0x22de88){return{'name':_0x22de88[_0xb679('0x28')],'type':_0x22de88['type'][_0xb679('0x29')]};});_0x5077af['model']=_[_0xb679('0x25')](_0x50aae9,'name');_0x5077af[_0xb679('0x2a')]=_['keys'](_0x4e60bd['query']);_0x5077af[_0xb679('0x2b')]=_['intersection'](_0x5077af['model'],_0x5077af[_0xb679('0x2a')]);_0x33a1c9[_0xb679('0x2c')]=_['intersection'](_0x5077af[_0xb679('0x2d')],qs[_0xb679('0x2e')](_0x4e60bd['query'][_0xb679('0x2e')]));_0x33a1c9[_0xb679('0x2c')]=_0x33a1c9[_0xb679('0x2c')]['length']?_0x33a1c9[_0xb679('0x2c')]:_0x5077af[_0xb679('0x2d')];if(!_0x4e60bd[_0xb679('0x2a')][_0xb679('0x2f')](_0xb679('0x30'))){_0x33a1c9['limit']=qs[_0xb679('0x19')](_0x4e60bd[_0xb679('0x2a')][_0xb679('0x19')]);_0x33a1c9[_0xb679('0x17')]=qs[_0xb679('0x17')](_0x4e60bd[_0xb679('0x2a')]['offset']);}_0x33a1c9[_0xb679('0x31')]=qs[_0xb679('0x32')](_0x4e60bd[_0xb679('0x2a')][_0xb679('0x32')]);_0x33a1c9[_0xb679('0x33')]=qs[_0xb679('0x2b')](_[_0xb679('0x34')](_0x4e60bd[_0xb679('0x2a')],_0x5077af[_0xb679('0x2b')]),_0x50aae9);if(_0x4e60bd[_0xb679('0x2a')][_0xb679('0x35')]){_0x33a1c9[_0xb679('0x33')]=_['merge'](_0x33a1c9[_0xb679('0x33')],{'$or':_[_0xb679('0x25')](_0x50aae9,function(_0x1c5975){if(_0x1c5975[_0xb679('0x36')]!==_0xb679('0x37')){var _0x7d1756={};_0x7d1756[_0x1c5975[_0xb679('0x23')]]={'$like':'%'+_0x4e60bd[_0xb679('0x2a')][_0xb679('0x35')]+'%'};return _0x7d1756;}})});}_0x33a1c9=_[_0xb679('0x38')]({},_0x33a1c9,_0x4e60bd[_0xb679('0x39')]);var _0x11e89e={'where':_0x33a1c9['where']};return db[_0xb679('0x26')][_0xb679('0x3a')](_0x11e89e)['then'](function(_0x1c6b9b){_0x4fa8d2[_0xb679('0x3a')]=_0x1c6b9b;if(_0x4e60bd[_0xb679('0x2a')]['includeAll']){_0x33a1c9[_0xb679('0x3b')]=[{'all':!![]}];}return db[_0xb679('0x26')][_0xb679('0x3c')](_0x33a1c9);})[_0xb679('0x1f')](function(_0x193d4d){_0x4fa8d2['rows']=_0x193d4d;return _0x4fa8d2;})['then'](respondWithFilteredResult(_0x3504f0,_0x33a1c9))['catch'](handleError(_0x3504f0,null));};exports['show']=function(_0x4e24ed,_0x5299e3){var _0x5222b7={'raw':!![],'where':{'id':_0x4e24ed[_0xb679('0x3d')]['id']}},_0x14994f={};_0x14994f[_0xb679('0x2d')]=_['keys'](db['FreshsalesField']['rawAttributes']);_0x14994f[_0xb679('0x2a')]=_['keys'](_0x4e24ed[_0xb679('0x2a')]);_0x14994f['filters']=_[_0xb679('0x3e')](_0x14994f[_0xb679('0x2d')],_0x14994f['query']);_0x5222b7[_0xb679('0x2c')]=_[_0xb679('0x3e')](_0x14994f[_0xb679('0x2d')],qs[_0xb679('0x2e')](_0x4e24ed['query'][_0xb679('0x2e')]));_0x5222b7[_0xb679('0x2c')]=_0x5222b7[_0xb679('0x2c')][_0xb679('0x3f')]?_0x5222b7['attributes']:_0x14994f[_0xb679('0x2d')];if(_0x4e24ed[_0xb679('0x2a')]['includeAll']){_0x5222b7['include']=[{'all':!![]}];}_0x5222b7=_[_0xb679('0x38')]({},_0x5222b7,_0x4e24ed[_0xb679('0x39')]);return db['FreshsalesField']['find'](_0x5222b7)[_0xb679('0x1f')](handleEntityNotFound(_0x5299e3,null))['then'](respondWithResult(_0x5299e3,null))[_0xb679('0x40')](handleError(_0x5299e3,null));};exports[_0xb679('0x41')]=function(_0x196fe7,_0xfb48ac){return db[_0xb679('0x26')]['create'](_0x196fe7[_0xb679('0x42')],{})[_0xb679('0x1f')](respondWithResult(_0xfb48ac,0xc9))[_0xb679('0x40')](handleError(_0xfb48ac,null));};exports['update']=function(_0x2ff31b,_0x42c557){if(_0x2ff31b[_0xb679('0x42')]['id']){delete _0x2ff31b[_0xb679('0x42')]['id'];}return db[_0xb679('0x26')][_0xb679('0x43')]({'where':{'id':_0x2ff31b[_0xb679('0x3d')]['id']}})[_0xb679('0x1f')](handleEntityNotFound(_0x42c557,null))[_0xb679('0x1f')](saveUpdates(_0x2ff31b[_0xb679('0x42')],null))[_0xb679('0x1f')](respondWithResult(_0x42c557,null))[_0xb679('0x40')](handleError(_0x42c557,null));};exports[_0xb679('0x20')]=function(_0xd80732,_0x4c6b97){return db[_0xb679('0x26')][_0xb679('0x43')]({'where':{'id':_0xd80732[_0xb679('0x3d')]['id']}})[_0xb679('0x1f')](handleEntityNotFound(_0x4c6b97,null))['then'](removeEntity(_0x4c6b97,null))['catch'](handleError(_0x4c6b97,null));};
\ No newline at end of file
index 66d94d4..9cdae4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60a5=['FieldId','lodash','api','request-promise','path','rimraf','./intFreshsalesField.attributes','exports','freshsales_unique_index','idField'];(function(_0xc40618,_0x1d3ceb){var _0x4d1cc4=function(_0x11b18e){while(--_0x11b18e){_0xc40618['push'](_0xc40618['shift']());}};_0x4d1cc4(++_0x1d3ceb);}(_0x60a5,0x83));var _0x560a=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x60a5[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x560a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x560a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x560a('0x2'));var fs=require('fs');var path=require(_0x560a('0x3'));var rimraf=require(_0x560a('0x4'));var config=require('../../config/environment');var attributes=require(_0x560a('0x5'));module[_0x560a('0x6')]=function(_0x3856ae,_0x5aaec6){return _0x3856ae['define']('FreshsalesField',attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':_0x560a('0x7'),'fields':[_0x560a('0x8'),_0x560a('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c8b=['exports','define','int_freshsales_fields','idField','FieldId','util','api','moment','bluebird','path','rimraf','../../config/environment','./intFreshsalesField.attributes'];(function(_0xeab874,_0x5c248e){var _0x5bab28=function(_0xb98c14){while(--_0xb98c14){_0xeab874['push'](_0xeab874['shift']());}};_0x5bab28(++_0x5c248e);}(_0x3c8b,0x18b));var _0xb3c8=function(_0x3ae026,_0x50b98a){_0x3ae026=_0x3ae026-0x0;var _0x2307c0=_0x3c8b[_0x3ae026];return _0x2307c0;};'use strict';var _=require('lodash');var util=require(_0xb3c8('0x0'));var logger=require('../../config/logger')(_0xb3c8('0x1'));var moment=require(_0xb3c8('0x2'));var BPromise=require(_0xb3c8('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb3c8('0x4'));var rimraf=require(_0xb3c8('0x5'));var config=require(_0xb3c8('0x6'));var attributes=require(_0xb3c8('0x7'));module[_0xb3c8('0x8')]=function(_0x1fa5f2,_0x46c864){return _0x1fa5f2[_0xb3c8('0x9')]('FreshsalesField',attributes,{'tableName':_0xb3c8('0xa'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xb3c8('0xb'),_0xb3c8('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index af5d198..985abe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1623=['../../config/utils','../../config/environment','client','http','request','then','info','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshsalesField,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2efdc2,_0x47fdf6){var _0x42b469=function(_0x299c9b){while(--_0x299c9b){_0x2efdc2['push'](_0x2efdc2['shift']());}};_0x42b469(++_0x47fdf6);}(_0x1623,0xab));var _0x3162=function(_0x258071,_0x351c10){_0x258071=_0x258071-0x0;var _0x192931=_0x1623[_0x258071];return _0x192931;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3162('0x1'));var rs=require(_0x3162('0x2'));var fs=require('fs');var Redis=require(_0x3162('0x3'));var db=require(_0x3162('0x4'))['db'];var utils=require(_0x3162('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x3162('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x3162('0x7')][_0x3162('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x53260d,_0xffe9b6,_0x2dc07e){return new BPromise(function(_0x26ee32,_0x36609e){return client[_0x3162('0x9')](_0x53260d,_0x2dc07e)[_0x3162('0xa')](function(_0xe43099){logger[_0x3162('0xb')]('FreshsalesField,\x20%s,\x20%s',_0xffe9b6,'request\x20sent');logger[_0x3162('0xc')](_0x3162('0xd'),_0xffe9b6,_0x3162('0xe'),JSON[_0x3162('0xf')](_0xe43099));if(_0xe43099[_0x3162('0x10')]){if(_0xe43099[_0x3162('0x10')][_0x3162('0x11')]===0x1f4){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x36609e(_0xe43099['error'][_0x3162('0x13')]);}logger[_0x3162('0x10')]('FreshsalesField,\x20%s,\x20%s',_0xffe9b6,_0xe43099['error'][_0x3162('0x13')]);return _0x26ee32(_0xe43099[_0x3162('0x10')][_0x3162('0x13')]);}else{logger['info'](_0x3162('0x12'),_0xffe9b6,_0x3162('0xe'));_0x26ee32(_0xe43099[_0x3162('0x14')]['message']);}})[_0x3162('0x15')](function(_0x42cf7d){logger[_0x3162('0x10')](_0x3162('0x12'),_0xffe9b6,_0x42cf7d);_0x36609e(_0x42cf7d);});});}
\ No newline at end of file
+var _0x90b1=['message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','request','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x16acb7,_0x4e85a7){var _0x51bdde=function(_0x5bcfa6){while(--_0x5bcfa6){_0x16acb7['push'](_0x16acb7['shift']());}};_0x51bdde(++_0x4e85a7);}(_0x90b1,0x1bb));var _0x190b=function(_0x47b3bc,_0x41cc2d){_0x47b3bc=_0x47b3bc-0x0;var _0x3b024f=_0x90b1[_0x47b3bc];return _0x3b024f;};'use strict';var _=require(_0x190b('0x0'));var util=require(_0x190b('0x1'));var moment=require(_0x190b('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x190b('0x3'));var db=require(_0x190b('0x4'))['db'];var utils=require(_0x190b('0x5'));var logger=require(_0x190b('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x190b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x34a689,_0x3b57f7,_0x626aa1){return new BPromise(function(_0x311161,_0x802924){return client[_0x190b('0x8')](_0x34a689,_0x626aa1)['then'](function(_0x14b93d){logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));logger[_0x190b('0xc')](_0x190b('0xd'),_0x3b57f7,_0x190b('0xb'),JSON[_0x190b('0xe')](_0x14b93d));if(_0x14b93d['error']){if(_0x14b93d[_0x190b('0xf')][_0x190b('0x10')]===0x1f4){logger['error'](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x802924(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}logger[_0x190b('0xf')](_0x190b('0xa'),_0x3b57f7,_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);return _0x311161(_0x14b93d[_0x190b('0xf')][_0x190b('0x11')]);}else{logger[_0x190b('0x9')](_0x190b('0xa'),_0x3b57f7,_0x190b('0xb'));_0x311161(_0x14b93d[_0x190b('0x12')][_0x190b('0x11')]);}})[_0x190b('0x13')](function(_0x5c63d9){logger[_0x190b('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x3b57f7,_0x5c63d9);_0x802924(_0x5c63d9);});});}
\ No newline at end of file
index 233d9ec..d736fe1 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(_0x175f0d,_0x1dbcbd){var _0x3a80bb=function(_0x3a1b63){while(--_0x3a1b63){_0x175f0d['push'](_0x175f0d['shift']());}};_0x3a80bb(++_0x1dbcbd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37c22c,_0x28a70d){_0x37c22c=_0x37c22c-0x0;var _0x119d79=_0xa9e0[_0x37c22c];return _0x119d79;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0xe925d0,_0xa7e39b){var _0x413990=function(_0x1e0370){while(--_0x1e0370){_0xe925d0['push'](_0xe925d0['shift']());}};_0x413990(++_0xa7e39b);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('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 ccd1fe4..9459094 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x229c=['exports','STRING','integrationTab'];(function(_0x3091fc,_0x26e483){var _0x39f3e2=function(_0x44834c){while(--_0x44834c){_0x3091fc['push'](_0x3091fc['shift']());}};_0x39f3e2(++_0x26e483);}(_0x229c,0xcf));var _0xc229=function(_0xdd365b,_0x517f24){_0xdd365b=_0xdd365b-0x0;var _0x232f42=_0x229c[_0xdd365b];return _0x232f42;};'use strict';var Sequelize=require('sequelize');module[_0xc229('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xc229('0x1')],'unique':'username'},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xc229('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xc229('0x1')]},'securityToken':{'type':Sequelize[_0xc229('0x1')]},'serverUrl':{'type':Sequelize[_0xc229('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xc229('0x2'),'newTab'),'defaultValue':_0xc229('0x2')}};
\ No newline at end of file
+var _0x090a=['newTab','sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x5ec7f9,_0x3868a4){var _0x151960=function(_0x251a2c){while(--_0x251a2c){_0x5ec7f9['push'](_0x5ec7f9['shift']());}};_0x151960(++_0x3868a4);}(_0x090a,0x133));var _0xa090=function(_0x46a394,_0xc74b03){_0x46a394=_0x46a394-0x0;var _0x1b7534=_0x090a[_0x46a394];return _0x1b7534;};'use strict';var Sequelize=require(_0xa090('0x0'));module[_0xa090('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa090('0x2')]},'username':{'type':Sequelize[_0xa090('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xa090('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xa090('0x2')]},'securityToken':{'type':Sequelize[_0xa090('0x2')]},'serverUrl':{'type':Sequelize[_0xa090('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xa090('0x3')](_0xa090('0x4'),_0xa090('0x5')),'defaultValue':_0xa090('0x4')}};
\ No newline at end of file
index be9a139..d5e3cea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f48=['clientId','clientSecret','password','securityToken','slice','substring','login','username','isNil','ticketType','sobject','OwnerId','IsReminderSet','IsRecurrence','Subject','string','int','picklist','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','value','false','test','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','request-promise','moment','mustache','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','map','SalesforceAccount','rawAttributes','fieldName','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','catch','show','params','body','find','getConfigurations','findOne','SalesforceConfiguration','addConfiguration','AccountId','Subjects','type','getDescriptions','channel','create','SalesforceField','Descriptions','getFields','Task','remoteUri'];(function(_0x18cf8a,_0xcc5571){var _0x1f13c9=function(_0x1c2ea1){while(--_0x1c2ea1){_0x18cf8a['push'](_0x18cf8a['shift']());}};_0x1f13c9(++_0xcc5571);}(_0x3f48,0x18f));var _0x83f4=function(_0x44033a,_0x259f60){_0x44033a=_0x44033a-0x0;var _0xcb4f9=_0x3f48[_0x44033a];return _0xcb4f9;};'use strict';var emlformat=require(_0x83f4('0x0'));var rimraf=require(_0x83f4('0x1'));var zipdir=require(_0x83f4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x83f4('0x3'));var moment=require(_0x83f4('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x83f4('0x5'));var util=require('util');var path=require(_0x83f4('0x6'));var sox=require('sox');var csv=require(_0x83f4('0x7'));var ejs=require(_0x83f4('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x83f4('0x9'));var squel=require(_0x83f4('0xa'));var crypto=require('crypto');var jsforce=require(_0x83f4('0xb'));var deskjs=require(_0x83f4('0xc'));var toCsv=require('to-csv');var querystring=require(_0x83f4('0xd'));var Papa=require('papaparse');var Redis=require(_0x83f4('0xe'));var authService=require(_0x83f4('0xf'));var qs=require(_0x83f4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x83f4('0x11'));var logger=require(_0x83f4('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x83f4('0x13'));var licenseUtil=require(_0x83f4('0x14'));var db=require(_0x83f4('0x15'))['db'];var integrations=require(_0x83f4('0x16'));function respondWithStatusCode(_0x42dc5,_0x15b854){_0x15b854=_0x15b854||0xcc;return function(_0x51ef48){if(_0x51ef48){return _0x42dc5['sendStatus'](_0x15b854);}return _0x42dc5[_0x83f4('0x17')](_0x15b854)[_0x83f4('0x18')]();};}function respondWithResult(_0x1a9c8c,_0x4753af){_0x4753af=_0x4753af||0xc8;return function(_0x17f233){if(_0x17f233){return _0x1a9c8c[_0x83f4('0x17')](_0x4753af)[_0x83f4('0x19')](_0x17f233);}};}function respondWithFilteredResult(_0x9aae00,_0x5039e3){return function(_0x4ed255){if(_0x4ed255){var _0x379e1c=typeof _0x5039e3['offset']===_0x83f4('0x1a')&&typeof _0x5039e3[_0x83f4('0x1b')]==='undefined';var _0x5e8df3=_0x4ed255[_0x83f4('0x1c')];var _0x4cdc71=_0x379e1c?0x0:_0x5039e3['offset'];var _0x21b517=_0x379e1c?_0x4ed255[_0x83f4('0x1c')]:_0x5039e3[_0x83f4('0x1d')]+_0x5039e3[_0x83f4('0x1b')];var _0x526bc8;if(_0x21b517>=_0x5e8df3){_0x21b517=_0x5e8df3;_0x526bc8=0xc8;}else{_0x526bc8=0xce;}_0x9aae00[_0x83f4('0x17')](_0x526bc8);return _0x9aae00['set'](_0x83f4('0x1e'),_0x4cdc71+'-'+_0x21b517+'/'+_0x5e8df3)['json'](_0x4ed255);}return null;};}function patchUpdates(_0x1a2233){return function(_0x472e3c){try{jsonpatch[_0x83f4('0x1f')](_0x472e3c,_0x1a2233,!![]);}catch(_0x4facd0){return BPromise[_0x83f4('0x20')](_0x4facd0);}return _0x472e3c[_0x83f4('0x21')]();};}function saveUpdates(_0x4770e6,_0x553f98){return function(_0x43dbb1){if(_0x43dbb1){return _0x43dbb1[_0x83f4('0x22')](_0x4770e6)['then'](function(_0x2e0bc3){return _0x2e0bc3;});}return null;};}function removeEntity(_0x4e4ccd,_0x277ff1){return function(_0x433fe4){if(_0x433fe4){return _0x433fe4[_0x83f4('0x23')]()['then'](function(){_0x4e4ccd[_0x83f4('0x17')](0xcc)[_0x83f4('0x18')]();});}};}function handleEntityNotFound(_0x1f69ae,_0x151e2c){return function(_0x5df836){if(!_0x5df836){_0x1f69ae[_0x83f4('0x24')](0x194);}return _0x5df836;};}function handleError(_0x14a9ba,_0x3147b7){_0x3147b7=_0x3147b7||0x1f4;return function(_0x445445){logger[_0x83f4('0x25')](_0x445445[_0x83f4('0x26')]);if(_0x445445['name']){delete _0x445445[_0x83f4('0x27')];}_0x14a9ba[_0x83f4('0x17')](_0x3147b7)[_0x83f4('0x28')](_0x445445);};}exports['index']=function(_0x2a1e8c,_0x1980f8){var _0x142a1b={},_0x3c4f69={},_0x4c9623={'count':0x0,'rows':[]};var _0x14178a=_[_0x83f4('0x29')](db[_0x83f4('0x2a')][_0x83f4('0x2b')],function(_0x3bc810){return{'name':_0x3bc810[_0x83f4('0x2c')],'type':_0x3bc810['type'][_0x83f4('0x2d')]};});_0x3c4f69[_0x83f4('0x2e')]=_[_0x83f4('0x29')](_0x14178a,_0x83f4('0x27'));_0x3c4f69['query']=_[_0x83f4('0x2f')](_0x2a1e8c[_0x83f4('0x30')]);_0x3c4f69[_0x83f4('0x31')]=_['intersection'](_0x3c4f69[_0x83f4('0x2e')],_0x3c4f69[_0x83f4('0x30')]);_0x142a1b[_0x83f4('0x32')]=_[_0x83f4('0x33')](_0x3c4f69['model'],qs[_0x83f4('0x34')](_0x2a1e8c['query'][_0x83f4('0x34')]));_0x142a1b[_0x83f4('0x32')]=_0x142a1b[_0x83f4('0x32')][_0x83f4('0x35')]?_0x142a1b['attributes']:_0x3c4f69['model'];if(!_0x2a1e8c[_0x83f4('0x30')][_0x83f4('0x36')](_0x83f4('0x37'))){_0x142a1b[_0x83f4('0x1b')]=qs[_0x83f4('0x1b')](_0x2a1e8c[_0x83f4('0x30')][_0x83f4('0x1b')]);_0x142a1b[_0x83f4('0x1d')]=qs['offset'](_0x2a1e8c[_0x83f4('0x30')][_0x83f4('0x1d')]);}_0x142a1b[_0x83f4('0x38')]=qs[_0x83f4('0x39')](_0x2a1e8c[_0x83f4('0x30')][_0x83f4('0x39')]);_0x142a1b[_0x83f4('0x3a')]=qs[_0x83f4('0x31')](_[_0x83f4('0x3b')](_0x2a1e8c['query'],_0x3c4f69[_0x83f4('0x31')]),_0x14178a);if(_0x2a1e8c[_0x83f4('0x30')][_0x83f4('0x3c')]){_0x142a1b['where']=_['merge'](_0x142a1b[_0x83f4('0x3a')],{'$or':_[_0x83f4('0x29')](_0x14178a,function(_0x3596b7){if(_0x3596b7['type']!==_0x83f4('0x3d')){var _0x30daed={};_0x30daed[_0x3596b7[_0x83f4('0x27')]]={'$like':'%'+_0x2a1e8c['query'][_0x83f4('0x3c')]+'%'};return _0x30daed;}})});}_0x142a1b=_[_0x83f4('0x3e')]({},_0x142a1b,_0x2a1e8c[_0x83f4('0x3f')]);var _0x36f6f1={'where':_0x142a1b[_0x83f4('0x3a')]};return db[_0x83f4('0x2a')][_0x83f4('0x1c')](_0x36f6f1)[_0x83f4('0x40')](function(_0x3f225c){_0x4c9623[_0x83f4('0x1c')]=_0x3f225c;if(_0x2a1e8c['query'][_0x83f4('0x41')]){_0x142a1b[_0x83f4('0x42')]=[{'all':!![]}];}return db[_0x83f4('0x2a')][_0x83f4('0x43')](_0x142a1b);})[_0x83f4('0x40')](function(_0x46431c){_0x4c9623[_0x83f4('0x44')]=_0x46431c;return _0x4c9623;})[_0x83f4('0x40')](respondWithFilteredResult(_0x1980f8,_0x142a1b))[_0x83f4('0x45')](handleError(_0x1980f8,null));};exports[_0x83f4('0x46')]=function(_0x2d0987,_0x21206d){var _0x59738d={'raw':![],'where':{'id':_0x2d0987[_0x83f4('0x47')]['id']}},_0x247b79={};_0x247b79[_0x83f4('0x2e')]=_[_0x83f4('0x2f')](db[_0x83f4('0x2a')][_0x83f4('0x2b')]);_0x247b79[_0x83f4('0x30')]=_['keys'](_0x2d0987['query']);_0x247b79[_0x83f4('0x31')]=_['intersection'](_0x247b79[_0x83f4('0x2e')],_0x247b79[_0x83f4('0x30')]);_0x59738d['attributes']=_[_0x83f4('0x33')](_0x247b79['model'],qs['fields'](_0x2d0987[_0x83f4('0x30')][_0x83f4('0x34')]));_0x59738d[_0x83f4('0x32')]=_0x59738d[_0x83f4('0x32')][_0x83f4('0x35')]?_0x59738d[_0x83f4('0x32')]:_0x247b79[_0x83f4('0x2e')];if(_0x2d0987[_0x83f4('0x30')]['includeAll']){_0x59738d[_0x83f4('0x42')]=[{'all':!![]}];}_0x59738d=_[_0x83f4('0x3e')]({},_0x59738d,_0x2d0987[_0x83f4('0x3f')]);return db[_0x83f4('0x2a')]['find'](_0x59738d)[_0x83f4('0x40')](handleEntityNotFound(_0x21206d,null))[_0x83f4('0x40')](respondWithResult(_0x21206d,null))[_0x83f4('0x45')](handleError(_0x21206d,null));};exports['create']=function(_0x1a1f89,_0x588f85){return db['SalesforceAccount']['create'](_0x1a1f89['body'],{})['then'](respondWithResult(_0x588f85,0xc9))[_0x83f4('0x45')](handleError(_0x588f85,null));};exports[_0x83f4('0x22')]=function(_0x2e2d50,_0x3c37bd){if(_0x2e2d50[_0x83f4('0x48')]['id']){delete _0x2e2d50['body']['id'];}return db[_0x83f4('0x2a')][_0x83f4('0x49')]({'where':{'id':_0x2e2d50[_0x83f4('0x47')]['id']}})[_0x83f4('0x40')](handleEntityNotFound(_0x3c37bd,null))[_0x83f4('0x40')](saveUpdates(_0x2e2d50['body'],null))[_0x83f4('0x40')](respondWithResult(_0x3c37bd,null))[_0x83f4('0x45')](handleError(_0x3c37bd,null));};exports['destroy']=function(_0x585adc,_0x4e3b1a){return db['SalesforceAccount'][_0x83f4('0x49')]({'where':{'id':_0x585adc[_0x83f4('0x47')]['id']}})[_0x83f4('0x40')](handleEntityNotFound(_0x4e3b1a,null))[_0x83f4('0x40')](removeEntity(_0x4e3b1a,null))['catch'](handleError(_0x4e3b1a,null));};exports[_0x83f4('0x4a')]=function(_0x7eb927,_0x3e6321,_0x2c0780){var _0x3078f4={};var _0x257054={};var _0x26957b;var _0x4824fd;return db[_0x83f4('0x2a')][_0x83f4('0x4b')]({'where':{'id':_0x7eb927['params']['id']}})['then'](handleEntityNotFound(_0x3e6321,null))[_0x83f4('0x40')](function(_0x55d45f){if(_0x55d45f){_0x26957b=_0x55d45f;_0x257054[_0x83f4('0x2e')]=_[_0x83f4('0x2f')](db[_0x83f4('0x4c')]['rawAttributes']);_0x257054[_0x83f4('0x30')]=_[_0x83f4('0x2f')](_0x7eb927[_0x83f4('0x30')]);_0x257054[_0x83f4('0x31')]=_[_0x83f4('0x33')](_0x257054['model'],_0x257054['query']);_0x3078f4[_0x83f4('0x32')]=_[_0x83f4('0x33')](_0x257054['model'],qs[_0x83f4('0x34')](_0x7eb927[_0x83f4('0x30')][_0x83f4('0x34')]));_0x3078f4[_0x83f4('0x32')]=_0x3078f4[_0x83f4('0x32')][_0x83f4('0x35')]?_0x3078f4[_0x83f4('0x32')]:_0x257054[_0x83f4('0x2e')];_0x3078f4['order']=qs[_0x83f4('0x39')](_0x7eb927[_0x83f4('0x30')]['sort']);_0x3078f4['where']=qs['filters'](_[_0x83f4('0x3b')](_0x7eb927[_0x83f4('0x30')],_0x257054[_0x83f4('0x31')]));if(_0x7eb927[_0x83f4('0x30')][_0x83f4('0x3c')]){_0x3078f4[_0x83f4('0x3a')]=_[_0x83f4('0x3e')](_0x3078f4[_0x83f4('0x3a')],{'$or':_[_0x83f4('0x29')](_0x3078f4[_0x83f4('0x32')],function(_0x67163a){var _0x2570a0={};_0x2570a0[_0x67163a]={'$like':'%'+_0x7eb927[_0x83f4('0x30')][_0x83f4('0x3c')]+'%'};return _0x2570a0;})});}_0x3078f4=_[_0x83f4('0x3e')]({},_0x3078f4,_0x7eb927[_0x83f4('0x3f')]);return _0x26957b[_0x83f4('0x4a')](_0x3078f4);}})[_0x83f4('0x40')](function(_0xccc40d){if(_0xccc40d){_0x4824fd=_0xccc40d[_0x83f4('0x35')];if(!_0x7eb927[_0x83f4('0x30')]['hasOwnProperty'](_0x83f4('0x37'))){_0x3078f4[_0x83f4('0x1b')]=qs[_0x83f4('0x1b')](_0x7eb927[_0x83f4('0x30')][_0x83f4('0x1b')]);_0x3078f4[_0x83f4('0x1d')]=qs[_0x83f4('0x1d')](_0x7eb927[_0x83f4('0x30')][_0x83f4('0x1d')]);}return _0x26957b[_0x83f4('0x4a')](_0x3078f4);}})[_0x83f4('0x40')](function(_0x4fe366){if(_0x4fe366){return _0x4fe366?{'count':_0x4824fd,'rows':_0x4fe366}:null;}})['then'](respondWithResult(_0x3e6321,null))[_0x83f4('0x45')](handleError(_0x3e6321,null));};exports[_0x83f4('0x4d')]=function(_0x40eae0,_0x3f6b40,_0x43a6e1){if(_0x40eae0['body']['id']){delete _0x40eae0[_0x83f4('0x48')]['id'];}return db[_0x83f4('0x2a')][_0x83f4('0x4b')]({'where':{'id':_0x40eae0[_0x83f4('0x47')]['id']}})[_0x83f4('0x40')](handleEntityNotFound(_0x3f6b40,null))[_0x83f4('0x40')](function(_0x309a9f){if(_0x309a9f){_0x40eae0[_0x83f4('0x48')][_0x83f4('0x4e')]=_0x309a9f['id'];_0x40eae0['body'][_0x83f4('0x4f')]=integrations['getSubjects'](_0x40eae0[_0x83f4('0x48')]['channel'],_0x40eae0[_0x83f4('0x48')][_0x83f4('0x50')]);_0x40eae0['body']['Descriptions']=integrations[_0x83f4('0x51')](_0x40eae0[_0x83f4('0x48')][_0x83f4('0x52')],_0x40eae0[_0x83f4('0x48')][_0x83f4('0x50')]);return db[_0x83f4('0x4c')][_0x83f4('0x53')](_0x40eae0['body'],{'include':[{'model':db[_0x83f4('0x54')],'as':_0x83f4('0x4f')},{'model':db[_0x83f4('0x54')],'as':_0x83f4('0x55')}]});}return null;})[_0x83f4('0x40')](respondWithResult(_0x3f6b40,null))[_0x83f4('0x45')](handleError(_0x3f6b40,null));};exports[_0x83f4('0x56')]=function(_0x2d2e31,_0x5370c4,_0x1932f3){var _0xbac755;var _0x47dbb6='';var _0x1b6dfa=_0x83f4('0x57');return db[_0x83f4('0x2a')]['findOne']({'where':{'id':_0x2d2e31['params']['id']},'attributes':['id',_0x83f4('0x58'),_0x83f4('0x59'),_0x83f4('0x5a'),'username',_0x83f4('0x5b'),_0x83f4('0x5c')]})[_0x83f4('0x40')](handleEntityNotFound(_0x5370c4,null))['then'](function(_0x3d85f1){if(_0x3d85f1){_0x47dbb6=_0x3d85f1[_0x83f4('0x58')];var _0x181c38=_0x47dbb6[_0x83f4('0x5d')](-0x1);if(_0x181c38==='/'){_0x47dbb6=_0x47dbb6[_0x83f4('0x5e')](0x0,_0x47dbb6['lastIndexOf'](_0x181c38));}_0xbac755=new jsforce['Connection']({'oauth2':{'loginUrl':_0x47dbb6,'clientId':_0x3d85f1[_0x83f4('0x59')],'clientSecret':_0x3d85f1[_0x83f4('0x5a')]}});return _0xbac755[_0x83f4('0x5f')](_0x3d85f1[_0x83f4('0x60')],_0x3d85f1['password']['concat'](_0x3d85f1[_0x83f4('0x5c')]));}})['then'](function(_0x5e3086){if(_0x5e3086){if(!_[_0x83f4('0x61')](_0x2d2e31[_0x83f4('0x30')][_0x83f4('0x62')])){_0x1b6dfa=_0x2d2e31['query'][_0x83f4('0x62')];}return _0xbac755[_0x83f4('0x63')](_0x1b6dfa)['describe']();}})[_0x83f4('0x40')](function(_0x5626fd){var _0x382606=[_0x83f4('0x64'),'ActivityDate',_0x83f4('0x65'),_0x83f4('0x66'),_0x83f4('0x67'),'Description'];var _0xb08dac=[_0x83f4('0x68'),_0x83f4('0x69'),_0x83f4('0x6a'),_0x83f4('0x6b'),_0x83f4('0x6c'),_0x83f4('0x6d'),_0x83f4('0x6e')];if(_0x5626fd){_[_0x83f4('0x6f')](_0x5626fd[_0x83f4('0x34')],function(_0x3a7efa){return _0x382606[_0x83f4('0x70')](_0x3a7efa['name'])||!_0xb08dac['includes'](_0x3a7efa[_0x83f4('0x50')]);});return{'count':_0x5626fd[_0x83f4('0x34')][_0x83f4('0x35')],'rows':_[_0x83f4('0x29')](_0x5626fd[_0x83f4('0x34')],function(_0x3a9168){return{'id':_0x3a9168[_0x83f4('0x27')],'name':_0x3a9168[_0x83f4('0x71')],'custom':_0x3a9168[_0x83f4('0x72')],'options':_0x3a9168[_0x83f4('0x73')][_0x83f4('0x35')]>0x0?_[_0x83f4('0x29')](_0x3a9168[_0x83f4('0x73')],function(_0x418275){return{'name':_0x418275[_0x83f4('0x71')],'value':_0x418275[_0x83f4('0x74')]};}):_0x3a9168[_0x83f4('0x50')]==_0x83f4('0x6b')?[{'name':'True','value':'true'},{'name':'False','value':_0x83f4('0x75')}]:[]};})};}})[_0x83f4('0x40')](respondWithResult(_0x5370c4,null))[_0x83f4('0x45')](function(_0xeb3761){var _0x25f821=_0x2d2e31[_0x83f4('0x30')][_0x83f4('0x76')]?0x1f4:_0xeb3761['statusCode']||0x1f4;logger[_0x83f4('0x25')]('getFields,\x20%s,\x20%s,\x20%s',_0x83f4('0x56'),_0x25f821,JSON[_0x83f4('0x77')](_0xeb3761));delete _0xeb3761[_0x83f4('0x27')];if(_0x25f821===0x191){_0x25f821=0x190;}_0x5370c4['status'](_0x25f821)[_0x83f4('0x28')](_0x2d2e31['query']['test']?{'message':_0x83f4('0x78'),'statusCode':_0xeb3761[_0x83f4('0x79')]}:_0xeb3761);});};
\ No newline at end of file
+var _0x26e8=['getFields','Task','clientId','username','password','securityToken','remoteUri','slice','lastIndexOf','Connection','clientSecret','login','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','Subject','Description','string','int','picklist','boolean','email','textarea','phone','includes','label','custom','picklistValues','value','True','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../components/integrations/configuration','sendStatus','status','offset','limit','undefined','count','set','json','apply','save','update','then','destroy','end','error','stack','name','send','index','map','SalesforceAccount','fieldName','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','find','create','body','getConfigurations','SalesforceConfiguration','order','pick','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SalesforceField','Descriptions'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x26e8,0x12f));var _0x826e=function(_0x4d610f,_0x39c24f){_0x4d610f=_0x4d610f-0x0;var _0x440478=_0x26e8[_0x4d610f];return _0x440478;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x826e('0x0'));var zipdir=require(_0x826e('0x1'));var jsonpatch=require(_0x826e('0x2'));var rp=require(_0x826e('0x3'));var moment=require(_0x826e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x826e('0x5'));var util=require('util');var path=require(_0x826e('0x6'));var sox=require('sox');var csv=require(_0x826e('0x7'));var ejs=require(_0x826e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x826e('0x9'));var crypto=require(_0x826e('0xa'));var jsforce=require(_0x826e('0xb'));var deskjs=require(_0x826e('0xc'));var toCsv=require('to-csv');var querystring=require(_0x826e('0xd'));var Papa=require(_0x826e('0xe'));var Redis=require(_0x826e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x826e('0x10'));var hardwareService=require(_0x826e('0x11'));var logger=require(_0x826e('0x12'))(_0x826e('0x13'));var utils=require(_0x826e('0x14'));var config=require(_0x826e('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0x826e('0x16'));function respondWithStatusCode(_0x36d5e6,_0x166a84){_0x166a84=_0x166a84||0xcc;return function(_0x4a9200){if(_0x4a9200){return _0x36d5e6[_0x826e('0x17')](_0x166a84);}return _0x36d5e6[_0x826e('0x18')](_0x166a84)['end']();};}function respondWithResult(_0x196b9f,_0x571c04){_0x571c04=_0x571c04||0xc8;return function(_0x43843d){if(_0x43843d){return _0x196b9f['status'](_0x571c04)['json'](_0x43843d);}};}function respondWithFilteredResult(_0x30b551,_0x1f348a){return function(_0x44b064){if(_0x44b064){var _0x5547cb=typeof _0x1f348a[_0x826e('0x19')]==='undefined'&&typeof _0x1f348a[_0x826e('0x1a')]===_0x826e('0x1b');var _0x4e87c0=_0x44b064[_0x826e('0x1c')];var _0x44cecb=_0x5547cb?0x0:_0x1f348a[_0x826e('0x19')];var _0x25727b=_0x5547cb?_0x44b064['count']:_0x1f348a['offset']+_0x1f348a['limit'];var _0x1d66f6;if(_0x25727b>=_0x4e87c0){_0x25727b=_0x4e87c0;_0x1d66f6=0xc8;}else{_0x1d66f6=0xce;}_0x30b551['status'](_0x1d66f6);return _0x30b551[_0x826e('0x1d')]('Content-Range',_0x44cecb+'-'+_0x25727b+'/'+_0x4e87c0)[_0x826e('0x1e')](_0x44b064);}return null;};}function patchUpdates(_0x60ff97){return function(_0x46cf36){try{jsonpatch[_0x826e('0x1f')](_0x46cf36,_0x60ff97,!![]);}catch(_0x2fdc07){return BPromise['reject'](_0x2fdc07);}return _0x46cf36[_0x826e('0x20')]();};}function saveUpdates(_0x28a9d2,_0x516c25){return function(_0x2ed155){if(_0x2ed155){return _0x2ed155[_0x826e('0x21')](_0x28a9d2)[_0x826e('0x22')](function(_0x412a8e){return _0x412a8e;});}return null;};}function removeEntity(_0x5a13c5,_0x2dd35e){return function(_0x2ff201){if(_0x2ff201){return _0x2ff201[_0x826e('0x23')]()['then'](function(){_0x5a13c5[_0x826e('0x18')](0xcc)[_0x826e('0x24')]();});}};}function handleEntityNotFound(_0x187538,_0x498edb){return function(_0x221ef2){if(!_0x221ef2){_0x187538[_0x826e('0x17')](0x194);}return _0x221ef2;};}function handleError(_0x286570,_0x28ad20){_0x28ad20=_0x28ad20||0x1f4;return function(_0x57cb4d){logger[_0x826e('0x25')](_0x57cb4d[_0x826e('0x26')]);if(_0x57cb4d[_0x826e('0x27')]){delete _0x57cb4d[_0x826e('0x27')];}_0x286570[_0x826e('0x18')](_0x28ad20)[_0x826e('0x28')](_0x57cb4d);};}exports[_0x826e('0x29')]=function(_0x93c6f9,_0x35cc0a){var _0x274f1a={},_0x453762={},_0x1e1af4={'count':0x0,'rows':[]};var _0x43badf=_[_0x826e('0x2a')](db[_0x826e('0x2b')]['rawAttributes'],function(_0x35d932){return{'name':_0x35d932[_0x826e('0x2c')],'type':_0x35d932['type'][_0x826e('0x2d')]};});_0x453762[_0x826e('0x2e')]=_['map'](_0x43badf,'name');_0x453762[_0x826e('0x2f')]=_[_0x826e('0x30')](_0x93c6f9[_0x826e('0x2f')]);_0x453762[_0x826e('0x31')]=_['intersection'](_0x453762[_0x826e('0x2e')],_0x453762[_0x826e('0x2f')]);_0x274f1a[_0x826e('0x32')]=_['intersection'](_0x453762[_0x826e('0x2e')],qs[_0x826e('0x33')](_0x93c6f9['query'][_0x826e('0x33')]));_0x274f1a[_0x826e('0x32')]=_0x274f1a['attributes'][_0x826e('0x34')]?_0x274f1a['attributes']:_0x453762[_0x826e('0x2e')];if(!_0x93c6f9[_0x826e('0x2f')][_0x826e('0x35')](_0x826e('0x36'))){_0x274f1a[_0x826e('0x1a')]=qs[_0x826e('0x1a')](_0x93c6f9[_0x826e('0x2f')][_0x826e('0x1a')]);_0x274f1a[_0x826e('0x19')]=qs[_0x826e('0x19')](_0x93c6f9['query'][_0x826e('0x19')]);}_0x274f1a['order']=qs[_0x826e('0x37')](_0x93c6f9[_0x826e('0x2f')]['sort']);_0x274f1a[_0x826e('0x38')]=qs[_0x826e('0x31')](_['pick'](_0x93c6f9['query'],_0x453762[_0x826e('0x31')]),_0x43badf);if(_0x93c6f9['query'][_0x826e('0x39')]){_0x274f1a['where']=_['merge'](_0x274f1a['where'],{'$or':_[_0x826e('0x2a')](_0x43badf,function(_0x34b6f4){if(_0x34b6f4[_0x826e('0x3a')]!==_0x826e('0x3b')){var _0x2053a8={};_0x2053a8[_0x34b6f4[_0x826e('0x27')]]={'$like':'%'+_0x93c6f9[_0x826e('0x2f')][_0x826e('0x39')]+'%'};return _0x2053a8;}})});}_0x274f1a=_[_0x826e('0x3c')]({},_0x274f1a,_0x93c6f9[_0x826e('0x3d')]);var _0x3f6af8={'where':_0x274f1a[_0x826e('0x38')]};return db['SalesforceAccount'][_0x826e('0x1c')](_0x3f6af8)[_0x826e('0x22')](function(_0x400a85){_0x1e1af4[_0x826e('0x1c')]=_0x400a85;if(_0x93c6f9[_0x826e('0x2f')][_0x826e('0x3e')]){_0x274f1a[_0x826e('0x3f')]=[{'all':!![]}];}return db['SalesforceAccount'][_0x826e('0x40')](_0x274f1a);})[_0x826e('0x22')](function(_0x43a208){_0x1e1af4[_0x826e('0x41')]=_0x43a208;return _0x1e1af4;})[_0x826e('0x22')](respondWithFilteredResult(_0x35cc0a,_0x274f1a))[_0x826e('0x42')](handleError(_0x35cc0a,null));};exports[_0x826e('0x43')]=function(_0xb3b768,_0x106a59){var _0x813af8={'raw':![],'where':{'id':_0xb3b768[_0x826e('0x44')]['id']}},_0x58b68d={};_0x58b68d[_0x826e('0x2e')]=_[_0x826e('0x30')](db[_0x826e('0x2b')][_0x826e('0x45')]);_0x58b68d['query']=_[_0x826e('0x30')](_0xb3b768['query']);_0x58b68d['filters']=_[_0x826e('0x46')](_0x58b68d[_0x826e('0x2e')],_0x58b68d[_0x826e('0x2f')]);_0x813af8['attributes']=_[_0x826e('0x46')](_0x58b68d['model'],qs[_0x826e('0x33')](_0xb3b768[_0x826e('0x2f')][_0x826e('0x33')]));_0x813af8[_0x826e('0x32')]=_0x813af8[_0x826e('0x32')][_0x826e('0x34')]?_0x813af8['attributes']:_0x58b68d[_0x826e('0x2e')];if(_0xb3b768[_0x826e('0x2f')]['includeAll']){_0x813af8[_0x826e('0x3f')]=[{'all':!![]}];}_0x813af8=_[_0x826e('0x3c')]({},_0x813af8,_0xb3b768[_0x826e('0x3d')]);return db[_0x826e('0x2b')][_0x826e('0x47')](_0x813af8)[_0x826e('0x22')](handleEntityNotFound(_0x106a59,null))[_0x826e('0x22')](respondWithResult(_0x106a59,null))[_0x826e('0x42')](handleError(_0x106a59,null));};exports[_0x826e('0x48')]=function(_0x132927,_0x41a95f){return db[_0x826e('0x2b')][_0x826e('0x48')](_0x132927[_0x826e('0x49')],{})[_0x826e('0x22')](respondWithResult(_0x41a95f,0xc9))[_0x826e('0x42')](handleError(_0x41a95f,null));};exports[_0x826e('0x21')]=function(_0x383293,_0x455c5f){if(_0x383293[_0x826e('0x49')]['id']){delete _0x383293[_0x826e('0x49')]['id'];}return db[_0x826e('0x2b')][_0x826e('0x47')]({'where':{'id':_0x383293[_0x826e('0x44')]['id']}})[_0x826e('0x22')](handleEntityNotFound(_0x455c5f,null))[_0x826e('0x22')](saveUpdates(_0x383293[_0x826e('0x49')],null))[_0x826e('0x22')](respondWithResult(_0x455c5f,null))[_0x826e('0x42')](handleError(_0x455c5f,null));};exports[_0x826e('0x23')]=function(_0x581a6c,_0x3ec710){return db[_0x826e('0x2b')][_0x826e('0x47')]({'where':{'id':_0x581a6c[_0x826e('0x44')]['id']}})[_0x826e('0x22')](handleEntityNotFound(_0x3ec710,null))['then'](removeEntity(_0x3ec710,null))[_0x826e('0x42')](handleError(_0x3ec710,null));};exports[_0x826e('0x4a')]=function(_0xe19868,_0x22efcf,_0x2f059b){var _0x4c7637={};var _0x427afd={};var _0xe2a519;var _0x537425;return db[_0x826e('0x2b')]['findOne']({'where':{'id':_0xe19868[_0x826e('0x44')]['id']}})[_0x826e('0x22')](handleEntityNotFound(_0x22efcf,null))[_0x826e('0x22')](function(_0x47df2f){if(_0x47df2f){_0xe2a519=_0x47df2f;_0x427afd['model']=_[_0x826e('0x30')](db[_0x826e('0x4b')][_0x826e('0x45')]);_0x427afd[_0x826e('0x2f')]=_[_0x826e('0x30')](_0xe19868[_0x826e('0x2f')]);_0x427afd[_0x826e('0x31')]=_[_0x826e('0x46')](_0x427afd[_0x826e('0x2e')],_0x427afd[_0x826e('0x2f')]);_0x4c7637['attributes']=_[_0x826e('0x46')](_0x427afd[_0x826e('0x2e')],qs['fields'](_0xe19868[_0x826e('0x2f')]['fields']));_0x4c7637[_0x826e('0x32')]=_0x4c7637['attributes'][_0x826e('0x34')]?_0x4c7637[_0x826e('0x32')]:_0x427afd[_0x826e('0x2e')];_0x4c7637[_0x826e('0x4c')]=qs['sort'](_0xe19868[_0x826e('0x2f')][_0x826e('0x37')]);_0x4c7637[_0x826e('0x38')]=qs[_0x826e('0x31')](_[_0x826e('0x4d')](_0xe19868[_0x826e('0x2f')],_0x427afd[_0x826e('0x31')]));if(_0xe19868[_0x826e('0x2f')][_0x826e('0x39')]){_0x4c7637[_0x826e('0x38')]=_[_0x826e('0x3c')](_0x4c7637['where'],{'$or':_[_0x826e('0x2a')](_0x4c7637['attributes'],function(_0x211043){var _0x520fbb={};_0x520fbb[_0x211043]={'$like':'%'+_0xe19868[_0x826e('0x2f')][_0x826e('0x39')]+'%'};return _0x520fbb;})});}_0x4c7637=_[_0x826e('0x3c')]({},_0x4c7637,_0xe19868['options']);return _0xe2a519[_0x826e('0x4a')](_0x4c7637);}})[_0x826e('0x22')](function(_0x241fe6){if(_0x241fe6){_0x537425=_0x241fe6[_0x826e('0x34')];if(!_0xe19868[_0x826e('0x2f')][_0x826e('0x35')](_0x826e('0x36'))){_0x4c7637[_0x826e('0x1a')]=qs['limit'](_0xe19868[_0x826e('0x2f')]['limit']);_0x4c7637[_0x826e('0x19')]=qs[_0x826e('0x19')](_0xe19868['query'][_0x826e('0x19')]);}return _0xe2a519['getConfigurations'](_0x4c7637);}})[_0x826e('0x22')](function(_0x38fff9){if(_0x38fff9){return _0x38fff9?{'count':_0x537425,'rows':_0x38fff9}:null;}})[_0x826e('0x22')](respondWithResult(_0x22efcf,null))[_0x826e('0x42')](handleError(_0x22efcf,null));};exports[_0x826e('0x4e')]=function(_0x3e477f,_0x70f6cd,_0x54db9a){if(_0x3e477f[_0x826e('0x49')]['id']){delete _0x3e477f[_0x826e('0x49')]['id'];}return db[_0x826e('0x2b')][_0x826e('0x4f')]({'where':{'id':_0x3e477f['params']['id']}})['then'](handleEntityNotFound(_0x70f6cd,null))[_0x826e('0x22')](function(_0x2dd9f5){if(_0x2dd9f5){_0x3e477f[_0x826e('0x49')][_0x826e('0x50')]=_0x2dd9f5['id'];_0x3e477f[_0x826e('0x49')][_0x826e('0x51')]=integrations[_0x826e('0x52')](_0x3e477f['body'][_0x826e('0x53')],_0x3e477f['body'][_0x826e('0x3a')]);_0x3e477f[_0x826e('0x49')]['Descriptions']=integrations[_0x826e('0x54')](_0x3e477f[_0x826e('0x49')][_0x826e('0x53')],_0x3e477f[_0x826e('0x49')][_0x826e('0x3a')]);return db['SalesforceConfiguration'][_0x826e('0x48')](_0x3e477f['body'],{'include':[{'model':db[_0x826e('0x55')],'as':_0x826e('0x51')},{'model':db['SalesforceField'],'as':_0x826e('0x56')}]});}return null;})['then'](respondWithResult(_0x70f6cd,null))[_0x826e('0x42')](handleError(_0x70f6cd,null));};exports[_0x826e('0x57')]=function(_0x417477,_0x2204bf,_0x3b0d4d){var _0x3163c0;var _0x41bd97='';var _0x2fed8f=_0x826e('0x58');return db[_0x826e('0x2b')][_0x826e('0x4f')]({'where':{'id':_0x417477['params']['id']},'attributes':['id','remoteUri',_0x826e('0x59'),'clientSecret',_0x826e('0x5a'),_0x826e('0x5b'),_0x826e('0x5c')]})[_0x826e('0x22')](handleEntityNotFound(_0x2204bf,null))[_0x826e('0x22')](function(_0x43264c){if(_0x43264c){_0x41bd97=_0x43264c[_0x826e('0x5d')];var _0x20ec71=_0x41bd97[_0x826e('0x5e')](-0x1);if(_0x20ec71==='/'){_0x41bd97=_0x41bd97['substring'](0x0,_0x41bd97[_0x826e('0x5f')](_0x20ec71));}_0x3163c0=new jsforce[(_0x826e('0x60'))]({'oauth2':{'loginUrl':_0x41bd97,'clientId':_0x43264c['clientId'],'clientSecret':_0x43264c[_0x826e('0x61')]}});return _0x3163c0[_0x826e('0x62')](_0x43264c[_0x826e('0x5a')],_0x43264c[_0x826e('0x5b')][_0x826e('0x63')](_0x43264c[_0x826e('0x5c')]));}})['then'](function(_0x23d31e){if(_0x23d31e){if(!_[_0x826e('0x64')](_0x417477[_0x826e('0x2f')][_0x826e('0x65')])){_0x2fed8f=_0x417477[_0x826e('0x2f')][_0x826e('0x65')];}return _0x3163c0[_0x826e('0x66')](_0x2fed8f)[_0x826e('0x67')]();}})[_0x826e('0x22')](function(_0x59b8ac){var _0x538670=[_0x826e('0x68'),_0x826e('0x69'),_0x826e('0x6a'),'IsRecurrence',_0x826e('0x6b'),_0x826e('0x6c')];var _0x45e053=[_0x826e('0x6d'),_0x826e('0x6e'),_0x826e('0x6f'),_0x826e('0x70'),_0x826e('0x71'),_0x826e('0x72'),_0x826e('0x73')];if(_0x59b8ac){_['remove'](_0x59b8ac[_0x826e('0x33')],function(_0x583431){return _0x538670[_0x826e('0x74')](_0x583431['name'])||!_0x45e053[_0x826e('0x74')](_0x583431[_0x826e('0x3a')]);});return{'count':_0x59b8ac[_0x826e('0x33')][_0x826e('0x34')],'rows':_[_0x826e('0x2a')](_0x59b8ac['fields'],function(_0x2fea97){return{'id':_0x2fea97[_0x826e('0x27')],'name':_0x2fea97[_0x826e('0x75')],'custom':_0x2fea97[_0x826e('0x76')],'options':_0x2fea97[_0x826e('0x77')][_0x826e('0x34')]>0x0?_[_0x826e('0x2a')](_0x2fea97[_0x826e('0x77')],function(_0x8b4ed){return{'name':_0x8b4ed[_0x826e('0x75')],'value':_0x8b4ed[_0x826e('0x78')]};}):_0x2fea97[_0x826e('0x3a')]==_0x826e('0x70')?[{'name':_0x826e('0x79'),'value':_0x826e('0x7a')},{'name':_0x826e('0x7b'),'value':_0x826e('0x7c')}]:[]};})};}})[_0x826e('0x22')](respondWithResult(_0x2204bf,null))[_0x826e('0x42')](function(_0x267c03){var _0x4732fb=_0x417477[_0x826e('0x2f')][_0x826e('0x7d')]?0x1f4:_0x267c03[_0x826e('0x7e')]||0x1f4;logger[_0x826e('0x25')](_0x826e('0x7f'),_0x826e('0x57'),_0x4732fb,JSON[_0x826e('0x80')](_0x267c03));delete _0x267c03[_0x826e('0x27')];if(_0x4732fb===0x191){_0x4732fb=0x190;}_0x2204bf['status'](_0x4732fb)['send'](_0x417477[_0x826e('0x2f')][_0x826e('0x7d')]?{'message':_0x826e('0x81'),'statusCode':_0x267c03['statusCode']}:_0x267c03);});};
\ No newline at end of file
index e80e766..9b457b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb79c=['request-promise','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x599041,_0x40fbea){var _0x1c4969=function(_0x138048){while(--_0x138048){_0x599041['push'](_0x599041['shift']());}};_0x1c4969(++_0x40fbea);}(_0xb79c,0x1e7));var _0xcb79=function(_0x17c995,_0x419b99){_0x17c995=_0x17c995-0x0;var _0xad0ce3=_0xb79c[_0x17c995];return _0xad0ce3;};'use strict';var _=require(_0xcb79('0x0'));var util=require(_0xcb79('0x1'));var logger=require(_0xcb79('0x2'))(_0xcb79('0x3'));var moment=require(_0xcb79('0x4'));var BPromise=require('bluebird');var rp=require(_0xcb79('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb79('0x6'));var config=require(_0xcb79('0x7'));var attributes=require(_0xcb79('0x8'));var integrations=require(_0xcb79('0x9'));module['exports']=function(_0x32e50d,_0x3275c6){return _0x32e50d['define'](_0xcb79('0xa'),attributes,{'tableName':_0xcb79('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1c08=['exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration'];(function(_0x313250,_0x20b49e){var _0x54bc32=function(_0x41e41f){while(--_0x41e41f){_0x313250['push'](_0x313250['shift']());}};_0x54bc32(++_0x20b49e);}(_0x1c08,0x17b));var _0x81c0=function(_0x367ac0,_0x2cb992){_0x367ac0=_0x367ac0-0x0;var _0x26013e=_0x1c08[_0x367ac0];return _0x26013e;};'use strict';var _=require(_0x81c0('0x0'));var util=require(_0x81c0('0x1'));var logger=require(_0x81c0('0x2'))(_0x81c0('0x3'));var moment=require('moment');var BPromise=require(_0x81c0('0x4'));var rp=require(_0x81c0('0x5'));var fs=require('fs');var path=require(_0x81c0('0x6'));var rimraf=require(_0x81c0('0x7'));var config=require(_0x81c0('0x8'));var attributes=require(_0x81c0('0x9'));var integrations=require(_0x81c0('0xa'));module[_0x81c0('0xb')]=function(_0x47c1b9,_0x1219a4){return _0x47c1b9[_0x81c0('0xc')](_0x81c0('0xd'),attributes,{'tableName':_0x81c0('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 67011bd..d76bb1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1aa=['request\x20sent','debug','stringify','error','message','result','catch','GetSalesforceAccount','SalesforceAccount','options','raw','where','attributes','limit','map','include','model','ShowSalesforceAccount','find','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','client','http','then','info','SalesforceAccount,\x20%s,\x20%s'];(function(_0x3cae69,_0x233c38){var _0x3128eb=function(_0x21d64e){while(--_0x21d64e){_0x3cae69['push'](_0x3cae69['shift']());}};_0x3128eb(++_0x233c38);}(_0xd1aa,0x13f));var _0xad1a=function(_0x5e32f3,_0x3386c1){_0x5e32f3=_0x5e32f3-0x0;var _0x4d4e03=_0xd1aa[_0x5e32f3];return _0x4d4e03;};'use strict';var _=require(_0xad1a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xad1a('0x1'));var rs=require(_0xad1a('0x2'));var fs=require('fs');var Redis=require(_0xad1a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xad1a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xad1a('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xad1a('0x6')][_0xad1a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2d17d9,_0x4694ca,_0x38a975){return new BPromise(function(_0x23f58d,_0x2352ee){return client['request'](_0x2d17d9,_0x38a975)[_0xad1a('0x8')](function(_0x4a6152){logger[_0xad1a('0x9')](_0xad1a('0xa'),_0x4694ca,_0xad1a('0xb'));logger[_0xad1a('0xc')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x4694ca,_0xad1a('0xb'),JSON[_0xad1a('0xd')](_0x4a6152));if(_0x4a6152['error']){if(_0x4a6152[_0xad1a('0xe')]['code']===0x1f4){logger[_0xad1a('0xe')]('SalesforceAccount,\x20%s,\x20%s',_0x4694ca,_0x4a6152[_0xad1a('0xe')][_0xad1a('0xf')]);return _0x2352ee(_0x4a6152[_0xad1a('0xe')][_0xad1a('0xf')]);}logger[_0xad1a('0xe')](_0xad1a('0xa'),_0x4694ca,_0x4a6152[_0xad1a('0xe')][_0xad1a('0xf')]);return _0x23f58d(_0x4a6152[_0xad1a('0xe')][_0xad1a('0xf')]);}else{logger[_0xad1a('0x9')](_0xad1a('0xa'),_0x4694ca,_0xad1a('0xb'));_0x23f58d(_0x4a6152[_0xad1a('0x10')][_0xad1a('0xf')]);}})[_0xad1a('0x11')](function(_0x1217c6){logger[_0xad1a('0xe')](_0xad1a('0xa'),_0x4694ca,_0x1217c6);_0x2352ee(_0x1217c6);});});}exports[_0xad1a('0x12')]=function(_0x2365f6){var _0x361595=this;return new Promise(function(_0x1bc17f,_0x8e8387){return db[_0xad1a('0x13')]['findAll']({'raw':_0x2365f6[_0xad1a('0x14')]?_0x2365f6[_0xad1a('0x14')][_0xad1a('0x15')]===undefined?!![]:![]:!![],'where':_0x2365f6[_0xad1a('0x14')]?_0x2365f6[_0xad1a('0x14')][_0xad1a('0x16')]||null:null,'attributes':_0x2365f6[_0xad1a('0x14')]?_0x2365f6[_0xad1a('0x14')][_0xad1a('0x17')]||null:null,'limit':_0x2365f6[_0xad1a('0x14')]?_0x2365f6[_0xad1a('0x14')][_0xad1a('0x18')]||null:null,'include':_0x2365f6[_0xad1a('0x14')]?_0x2365f6[_0xad1a('0x14')]['include']?_[_0xad1a('0x19')](_0x2365f6[_0xad1a('0x14')][_0xad1a('0x1a')],function(_0x9ac8a){return{'model':db[_0x9ac8a[_0xad1a('0x1b')]],'as':_0x9ac8a['as'],'attributes':_0x9ac8a[_0xad1a('0x17')],'include':_0x9ac8a['include']?_[_0xad1a('0x19')](_0x9ac8a[_0xad1a('0x1a')],function(_0xabd28b){return{'model':db[_0xabd28b['model']],'as':_0xabd28b['as'],'attributes':_0xabd28b[_0xad1a('0x17')],'include':_0xabd28b[_0xad1a('0x1a')]?_[_0xad1a('0x19')](_0xabd28b[_0xad1a('0x1a')],function(_0x2b7abe){return{'model':db[_0x2b7abe[_0xad1a('0x1b')]],'as':_0x2b7abe['as'],'attributes':_0x2b7abe[_0xad1a('0x17')]};}):[]};}):[]};}):[]:[]})[_0xad1a('0x8')](function(_0x3c6098){logger[_0xad1a('0x9')](_0xad1a('0x12'),_0x2365f6);logger[_0xad1a('0xc')](_0xad1a('0x12'),_0x2365f6,JSON[_0xad1a('0xd')](_0x3c6098));_0x1bc17f(_0x3c6098);})[_0xad1a('0x11')](function(_0xc8fa6f){logger[_0xad1a('0xe')]('GetSalesforceAccount',_0xc8fa6f[_0xad1a('0xf')],_0x2365f6);_0x8e8387(_0x361595[_0xad1a('0xe')](0x1f4,_0xc8fa6f[_0xad1a('0xf')]));});});};exports[_0xad1a('0x1c')]=function(_0x2f507d){var _0xf8aabb=this;return new Promise(function(_0x4db406,_0x4ed2b5){return db['SalesforceAccount'][_0xad1a('0x1d')]({'raw':_0x2f507d['options']?_0x2f507d[_0xad1a('0x14')][_0xad1a('0x15')]===undefined?!![]:![]:!![],'where':_0x2f507d[_0xad1a('0x14')]?_0x2f507d['options']['where']||null:null,'attributes':_0x2f507d[_0xad1a('0x14')]?_0x2f507d[_0xad1a('0x14')][_0xad1a('0x17')]||null:null,'include':_0x2f507d[_0xad1a('0x14')]?_0x2f507d['options'][_0xad1a('0x1a')]?_['map'](_0x2f507d[_0xad1a('0x14')]['include'],function(_0x327b49){return{'model':db[_0x327b49['model']],'as':_0x327b49['as'],'attributes':_0x327b49['attributes'],'include':_0x327b49[_0xad1a('0x1a')]?_[_0xad1a('0x19')](_0x327b49[_0xad1a('0x1a')],function(_0x559142){return{'model':db[_0x559142['model']],'as':_0x559142['as'],'attributes':_0x559142[_0xad1a('0x17')],'include':_0x559142[_0xad1a('0x1a')]?_[_0xad1a('0x19')](_0x559142['include'],function(_0x1258e4){return{'model':db[_0x1258e4[_0xad1a('0x1b')]],'as':_0x1258e4['as'],'attributes':_0x1258e4[_0xad1a('0x17')]};}):[]};}):[]};}):[]:[]})[_0xad1a('0x8')](function(_0x1127f8){logger[_0xad1a('0x9')](_0xad1a('0x1c'),_0x2f507d);logger[_0xad1a('0xc')](_0xad1a('0x1c'),_0x2f507d,JSON[_0xad1a('0xd')](_0x1127f8));_0x4db406(_0x1127f8);})['catch'](function(_0x13d68e){logger[_0xad1a('0xe')](_0xad1a('0x1c'),_0x13d68e[_0xad1a('0xf')],_0x2f507d);_0x4ed2b5(_0xf8aabb[_0xad1a('0xe')](0x1f4,_0x13d68e[_0xad1a('0xf')]));});});};
\ No newline at end of file
+var _0x1f92=['request\x20sent','debug','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','info','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','where','attributes','include','map','model','ShowSalesforceAccount','find','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x4861b2,_0x2cd8a9){var _0xf19c3c=function(_0x1175c5){while(--_0x1175c5){_0x4861b2['push'](_0x4861b2['shift']());}};_0xf19c3c(++_0x2cd8a9);}(_0x1f92,0x1ad));var _0x21f9=function(_0xee385c,_0x29b852){_0xee385c=_0xee385c-0x0;var _0x18ad3=_0x1f92[_0xee385c];return _0x18ad3;};'use strict';var _=require(_0x21f9('0x0'));var util=require('util');var moment=require(_0x21f9('0x1'));var BPromise=require(_0x21f9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x21f9('0x3'))['db'];var utils=require(_0x21f9('0x4'));var logger=require(_0x21f9('0x5'))(_0x21f9('0x6'));var config=require(_0x21f9('0x7'));var jayson=require(_0x21f9('0x8'));var client=jayson[_0x21f9('0x9')][_0x21f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x44afd8,_0x2590dd,_0x2bba30){return new BPromise(function(_0x261881,_0x4abee7){return client[_0x21f9('0xb')](_0x44afd8,_0x2bba30)[_0x21f9('0xc')](function(_0x345f68){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x2590dd,_0x21f9('0xd'));logger[_0x21f9('0xe')]('SalesforceAccount,\x20%s,\x20%s,\x20%s',_0x2590dd,_0x21f9('0xd'),JSON[_0x21f9('0xf')](_0x345f68));if(_0x345f68[_0x21f9('0x10')]){if(_0x345f68[_0x21f9('0x10')][_0x21f9('0x11')]===0x1f4){logger[_0x21f9('0x10')](_0x21f9('0x12'),_0x2590dd,_0x345f68[_0x21f9('0x10')][_0x21f9('0x13')]);return _0x4abee7(_0x345f68['error']['message']);}logger[_0x21f9('0x10')]('SalesforceAccount,\x20%s,\x20%s',_0x2590dd,_0x345f68[_0x21f9('0x10')][_0x21f9('0x13')]);return _0x261881(_0x345f68[_0x21f9('0x10')][_0x21f9('0x13')]);}else{logger[_0x21f9('0x14')](_0x21f9('0x12'),_0x2590dd,_0x21f9('0xd'));_0x261881(_0x345f68['result'][_0x21f9('0x13')]);}})[_0x21f9('0x15')](function(_0x1c62ca){logger[_0x21f9('0x10')](_0x21f9('0x12'),_0x2590dd,_0x1c62ca);_0x4abee7(_0x1c62ca);});});}exports[_0x21f9('0x16')]=function(_0x219bf5){var _0x1bc133=this;return new Promise(function(_0x1ad569,_0x29ec30){return db[_0x21f9('0x17')][_0x21f9('0x18')]({'raw':_0x219bf5[_0x21f9('0x19')]?_0x219bf5[_0x21f9('0x19')][_0x21f9('0x1a')]===undefined?!![]:![]:!![],'where':_0x219bf5[_0x21f9('0x19')]?_0x219bf5[_0x21f9('0x19')][_0x21f9('0x1b')]||null:null,'attributes':_0x219bf5[_0x21f9('0x19')]?_0x219bf5['options'][_0x21f9('0x1c')]||null:null,'limit':_0x219bf5[_0x21f9('0x19')]?_0x219bf5[_0x21f9('0x19')]['limit']||null:null,'include':_0x219bf5['options']?_0x219bf5[_0x21f9('0x19')][_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x219bf5['options'][_0x21f9('0x1d')],function(_0x264d0c){return{'model':db[_0x264d0c[_0x21f9('0x1f')]],'as':_0x264d0c['as'],'attributes':_0x264d0c['attributes'],'include':_0x264d0c[_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x264d0c[_0x21f9('0x1d')],function(_0x57bd4d){return{'model':db[_0x57bd4d[_0x21f9('0x1f')]],'as':_0x57bd4d['as'],'attributes':_0x57bd4d[_0x21f9('0x1c')],'include':_0x57bd4d['include']?_[_0x21f9('0x1e')](_0x57bd4d[_0x21f9('0x1d')],function(_0x14731e){return{'model':db[_0x14731e[_0x21f9('0x1f')]],'as':_0x14731e['as'],'attributes':_0x14731e[_0x21f9('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x21f9('0xc')](function(_0x6b6cd6){logger['info']('GetSalesforceAccount',_0x219bf5);logger[_0x21f9('0xe')](_0x21f9('0x16'),_0x219bf5,JSON['stringify'](_0x6b6cd6));_0x1ad569(_0x6b6cd6);})[_0x21f9('0x15')](function(_0x4527e4){logger[_0x21f9('0x10')](_0x21f9('0x16'),_0x4527e4[_0x21f9('0x13')],_0x219bf5);_0x29ec30(_0x1bc133['error'](0x1f4,_0x4527e4[_0x21f9('0x13')]));});});};exports[_0x21f9('0x20')]=function(_0xe9ad3d){var _0x3eeaeb=this;return new Promise(function(_0x166bc1,_0x2f6122){return db[_0x21f9('0x17')][_0x21f9('0x21')]({'raw':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d[_0x21f9('0x19')][_0x21f9('0x1a')]===undefined?!![]:![]:!![],'where':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d['options'][_0x21f9('0x1b')]||null:null,'attributes':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d[_0x21f9('0x19')][_0x21f9('0x1c')]||null:null,'include':_0xe9ad3d[_0x21f9('0x19')]?_0xe9ad3d[_0x21f9('0x19')][_0x21f9('0x1d')]?_['map'](_0xe9ad3d[_0x21f9('0x19')]['include'],function(_0x45751b){return{'model':db[_0x45751b[_0x21f9('0x1f')]],'as':_0x45751b['as'],'attributes':_0x45751b['attributes'],'include':_0x45751b[_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x45751b['include'],function(_0x1e1755){return{'model':db[_0x1e1755[_0x21f9('0x1f')]],'as':_0x1e1755['as'],'attributes':_0x1e1755[_0x21f9('0x1c')],'include':_0x1e1755[_0x21f9('0x1d')]?_[_0x21f9('0x1e')](_0x1e1755[_0x21f9('0x1d')],function(_0x52f892){return{'model':db[_0x52f892[_0x21f9('0x1f')]],'as':_0x52f892['as'],'attributes':_0x52f892['attributes']};}):[]};}):[]};}):[]:[]})[_0x21f9('0xc')](function(_0x53474b){logger[_0x21f9('0x14')]('ShowSalesforceAccount',_0xe9ad3d);logger[_0x21f9('0xe')](_0x21f9('0x20'),_0xe9ad3d,JSON[_0x21f9('0xf')](_0x53474b));_0x166bc1(_0x53474b);})[_0x21f9('0x15')](function(_0x2f8690){logger[_0x21f9('0x10')](_0x21f9('0x20'),_0x2f8690[_0x21f9('0x13')],_0xe9ad3d);_0x2f6122(_0x3eeaeb[_0x21f9('0x10')](0x1f4,_0x2f8690[_0x21f9('0x13')]));});});};
\ No newline at end of file
index d757a3a..706005e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','put','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x146325,_0x483762){var _0x3af4a7=function(_0x1d7d59){while(--_0x1d7d59){_0x146325['push'](_0x146325['shift']());}};_0x3af4a7(++_0x483762);}(_0xadb5,0xad));var _0x5adb=function(_0xced642,_0x1023d8){_0xced642=_0xced642-0x0;var _0x210591=_0xadb5[_0xced642];return _0x210591;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./intSalesforceConfiguration.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0x7')](_0x5adb('0xe'),auth[_0x5adb('0x8')](),controller['getSubjects']);router['get'](_0x5adb('0xf'),auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router['post']('/',auth[_0x5adb('0x8')](),controller['create']);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x12')]);router[_0x5adb('0x13')]('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x14')]);module[_0x5adb('0x15')]=router;
\ No newline at end of file
+var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xdb28,0x106));var _0x8db2=function(_0x2b4d71,_0xf9e41f){_0x2b4d71=_0x2b4d71-0x0;var _0x2f832b=_0xdb28[_0x2b4d71];return _0x2f832b;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
index 4fd615f..b14b28f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca88=['sequelize','STRING','ENUM','Task','Case','contact','contact_lead','lead','account'];(function(_0x1a9610,_0x501fc4){var _0x4d799f=function(_0x49fb9b){while(--_0x49fb9b){_0x1a9610['push'](_0x1a9610['shift']());}};_0x4d799f(++_0x501fc4);}(_0xca88,0x18c));var _0x8ca8=function(_0x570356,_0x190e47){_0x570356=_0x570356-0x0;var _0x4ff430=_0xca88[_0x570356];return _0x4ff430;};'use strict';var Sequelize=require(_0x8ca8('0x0'));module['exports']={'name':{'type':Sequelize[_0x8ca8('0x1')]},'description':{'type':Sequelize[_0x8ca8('0x1')]},'ticketType':{'type':Sequelize[_0x8ca8('0x2')](_0x8ca8('0x3'),_0x8ca8('0x4')),'defaultValue':_0x8ca8('0x3')},'moduleSearch':{'type':Sequelize[_0x8ca8('0x2')]('contact_lead',_0x8ca8('0x5'),'lead','account_contact_lead','account'),'defaultValue':_0x8ca8('0x6')},'moduleCreate':{'type':Sequelize[_0x8ca8('0x2')]('nothing','contact',_0x8ca8('0x7'),_0x8ca8('0x8')),'defaultValue':'lead'},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize[_0x8ca8('0x1')]},'additionalSearchContact':{'type':Sequelize[_0x8ca8('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0dff=['sequelize','STRING','ENUM','Task','contact','lead','account_contact_lead','contact_lead','nothing','account'];(function(_0x10022a,_0x3979d6){var _0x567cce=function(_0x56da6a){while(--_0x56da6a){_0x10022a['push'](_0x10022a['shift']());}};_0x567cce(++_0x3979d6);}(_0x0dff,0x168));var _0xf0df=function(_0x2800d1,_0x136b87){_0x2800d1=_0x2800d1-0x0;var _0x491918=_0x0dff[_0x2800d1];return _0x491918;};'use strict';var Sequelize=require(_0xf0df('0x0'));module['exports']={'name':{'type':Sequelize[_0xf0df('0x1')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xf0df('0x2')](_0xf0df('0x3'),'Case'),'defaultValue':'Task'},'moduleSearch':{'type':Sequelize[_0xf0df('0x2')]('contact_lead',_0xf0df('0x4'),_0xf0df('0x5'),_0xf0df('0x6'),'account'),'defaultValue':_0xf0df('0x7')},'moduleCreate':{'type':Sequelize[_0xf0df('0x2')](_0xf0df('0x8'),_0xf0df('0x4'),'lead',_0xf0df('0x9')),'defaultValue':_0xf0df('0x5')},'leadId':{'type':Sequelize[_0xf0df('0x1')]},'additionalSearchAccount':{'type':Sequelize[_0xf0df('0x1')]},'additionalSearchContact':{'type':Sequelize[_0xf0df('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 81732ff..0b0d288 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dec=['attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','SalesforceConfiguration','rows','catch','show','params','fields','find','create','body','getFields','findOne','SalesforceField','order','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','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/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x6dec,0x10e));var _0xc6de=function(_0x319300,_0xb5ba0){_0x319300=_0x319300-0x0;var _0x1eb168=_0x6dec[_0x319300];return _0x1eb168;};'use strict';var emlformat=require(_0xc6de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc6de('0x1'));var jsonpatch=require(_0xc6de('0x2'));var rp=require(_0xc6de('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc6de('0x4'));var util=require(_0xc6de('0x5'));var path=require(_0xc6de('0x6'));var sox=require(_0xc6de('0x7'));var csv=require(_0xc6de('0x8'));var ejs=require(_0xc6de('0x9'));var fs=require('fs');var fs_extra=require(_0xc6de('0xa'));var _=require(_0xc6de('0xb'));var squel=require(_0xc6de('0xc'));var crypto=require(_0xc6de('0xd'));var jsforce=require(_0xc6de('0xe'));var deskjs=require(_0xc6de('0xf'));var toCsv=require(_0xc6de('0x8'));var querystring=require(_0xc6de('0x10'));var Papa=require(_0xc6de('0x11'));var Redis=require(_0xc6de('0x12'));var authService=require(_0xc6de('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc6de('0x14'));var hardwareService=require(_0xc6de('0x15'));var logger=require(_0xc6de('0x16'))(_0xc6de('0x17'));var utils=require(_0xc6de('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc6de('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ef333,_0x33a17a){_0x33a17a=_0x33a17a||0xcc;return function(_0x62c56d){if(_0x62c56d){return _0x5ef333[_0xc6de('0x1a')](_0x33a17a);}return _0x5ef333[_0xc6de('0x1b')](_0x33a17a)[_0xc6de('0x1c')]();};}function respondWithResult(_0x389d41,_0x236d06){_0x236d06=_0x236d06||0xc8;return function(_0x526079){if(_0x526079){return _0x389d41[_0xc6de('0x1b')](_0x236d06)[_0xc6de('0x1d')](_0x526079);}};}function respondWithFilteredResult(_0xf6398c,_0x2d3109){return function(_0x53fba0){if(_0x53fba0){var _0x290cee=typeof _0x2d3109[_0xc6de('0x1e')]===_0xc6de('0x1f')&&typeof _0x2d3109[_0xc6de('0x20')]==='undefined';var _0x51adca=_0x53fba0['count'];var _0x5a3a05=_0x290cee?0x0:_0x2d3109[_0xc6de('0x1e')];var _0x66e8e6=_0x290cee?_0x53fba0[_0xc6de('0x21')]:_0x2d3109[_0xc6de('0x1e')]+_0x2d3109[_0xc6de('0x20')];var _0x350b49;if(_0x66e8e6>=_0x51adca){_0x66e8e6=_0x51adca;_0x350b49=0xc8;}else{_0x350b49=0xce;}_0xf6398c['status'](_0x350b49);return _0xf6398c[_0xc6de('0x22')](_0xc6de('0x23'),_0x5a3a05+'-'+_0x66e8e6+'/'+_0x51adca)[_0xc6de('0x1d')](_0x53fba0);}return null;};}function patchUpdates(_0x554a95){return function(_0x4189d3){try{jsonpatch[_0xc6de('0x24')](_0x4189d3,_0x554a95,!![]);}catch(_0x5d311e){return BPromise[_0xc6de('0x25')](_0x5d311e);}return _0x4189d3[_0xc6de('0x26')]();};}function saveUpdates(_0x1ec0b3,_0x5a3b08){return function(_0x275006){if(_0x275006){return _0x275006[_0xc6de('0x27')](_0x1ec0b3)['then'](function(_0x57343e){return _0x57343e;});}return null;};}function removeEntity(_0x46354b,_0x1d0725){return function(_0x4f5222){if(_0x4f5222){return _0x4f5222[_0xc6de('0x28')]()[_0xc6de('0x29')](function(){_0x46354b[_0xc6de('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe3b2a5,_0x5deff3){return function(_0x318947){if(!_0x318947){_0xe3b2a5[_0xc6de('0x1a')](0x194);}return _0x318947;};}function handleError(_0x2c1d86,_0x225eb2){_0x225eb2=_0x225eb2||0x1f4;return function(_0x231d6a){logger['error'](_0x231d6a[_0xc6de('0x2a')]);if(_0x231d6a[_0xc6de('0x2b')]){delete _0x231d6a[_0xc6de('0x2b')];}_0x2c1d86[_0xc6de('0x1b')](_0x225eb2)[_0xc6de('0x2c')](_0x231d6a);};}exports['index']=function(_0x44399b,_0x251465){var _0x3fb811={},_0x33d132={},_0x422c2d={'count':0x0,'rows':[]};var _0x1e8617=_[_0xc6de('0x2d')](db['SalesforceConfiguration'][_0xc6de('0x2e')],function(_0x30d94c){return{'name':_0x30d94c[_0xc6de('0x2f')],'type':_0x30d94c[_0xc6de('0x30')]['key']};});_0x33d132[_0xc6de('0x31')]=_[_0xc6de('0x2d')](_0x1e8617,_0xc6de('0x2b'));_0x33d132[_0xc6de('0x32')]=_[_0xc6de('0x33')](_0x44399b[_0xc6de('0x32')]);_0x33d132[_0xc6de('0x34')]=_[_0xc6de('0x35')](_0x33d132[_0xc6de('0x31')],_0x33d132[_0xc6de('0x32')]);_0x3fb811[_0xc6de('0x36')]=_[_0xc6de('0x35')](_0x33d132['model'],qs['fields'](_0x44399b[_0xc6de('0x32')]['fields']));_0x3fb811[_0xc6de('0x36')]=_0x3fb811[_0xc6de('0x36')][_0xc6de('0x37')]?_0x3fb811[_0xc6de('0x36')]:_0x33d132['model'];if(!_0x44399b[_0xc6de('0x32')][_0xc6de('0x38')](_0xc6de('0x39'))){_0x3fb811['limit']=qs[_0xc6de('0x20')](_0x44399b[_0xc6de('0x32')][_0xc6de('0x20')]);_0x3fb811[_0xc6de('0x1e')]=qs[_0xc6de('0x1e')](_0x44399b['query'][_0xc6de('0x1e')]);}_0x3fb811['order']=qs[_0xc6de('0x3a')](_0x44399b[_0xc6de('0x32')][_0xc6de('0x3a')]);_0x3fb811[_0xc6de('0x3b')]=qs['filters'](_[_0xc6de('0x3c')](_0x44399b[_0xc6de('0x32')],_0x33d132[_0xc6de('0x34')]),_0x1e8617);if(_0x44399b[_0xc6de('0x32')][_0xc6de('0x3d')]){_0x3fb811[_0xc6de('0x3b')]=_[_0xc6de('0x3e')](_0x3fb811[_0xc6de('0x3b')],{'$or':_[_0xc6de('0x2d')](_0x1e8617,function(_0x463876){if(_0x463876['type']!=='VIRTUAL'){var _0x57f5b9={};_0x57f5b9[_0x463876[_0xc6de('0x2b')]]={'$like':'%'+_0x44399b[_0xc6de('0x32')][_0xc6de('0x3d')]+'%'};return _0x57f5b9;}})});}_0x3fb811=_[_0xc6de('0x3e')]({},_0x3fb811,_0x44399b[_0xc6de('0x3f')]);var _0x12413e={'where':_0x3fb811['where']};return db['SalesforceConfiguration'][_0xc6de('0x21')](_0x12413e)[_0xc6de('0x29')](function(_0x382e75){_0x422c2d[_0xc6de('0x21')]=_0x382e75;if(_0x44399b[_0xc6de('0x32')][_0xc6de('0x40')]){_0x3fb811[_0xc6de('0x41')]=[{'all':!![]}];}return db[_0xc6de('0x42')]['findAll'](_0x3fb811);})[_0xc6de('0x29')](function(_0x5068eb){_0x422c2d[_0xc6de('0x43')]=_0x5068eb;return _0x422c2d;})[_0xc6de('0x29')](respondWithFilteredResult(_0x251465,_0x3fb811))[_0xc6de('0x44')](handleError(_0x251465,null));};exports[_0xc6de('0x45')]=function(_0x516e1e,_0x167451){var _0x1484bd={'raw':![],'where':{'id':_0x516e1e[_0xc6de('0x46')]['id']}},_0x4ec271={};_0x4ec271[_0xc6de('0x31')]=_[_0xc6de('0x33')](db['SalesforceConfiguration']['rawAttributes']);_0x4ec271['query']=_['keys'](_0x516e1e[_0xc6de('0x32')]);_0x4ec271[_0xc6de('0x34')]=_[_0xc6de('0x35')](_0x4ec271[_0xc6de('0x31')],_0x4ec271['query']);_0x1484bd['attributes']=_['intersection'](_0x4ec271[_0xc6de('0x31')],qs[_0xc6de('0x47')](_0x516e1e[_0xc6de('0x32')][_0xc6de('0x47')]));_0x1484bd[_0xc6de('0x36')]=_0x1484bd[_0xc6de('0x36')][_0xc6de('0x37')]?_0x1484bd[_0xc6de('0x36')]:_0x4ec271[_0xc6de('0x31')];if(_0x516e1e[_0xc6de('0x32')]['includeAll']){_0x1484bd['include']=[{'all':!![]}];}_0x1484bd=_['merge']({},_0x1484bd,_0x516e1e[_0xc6de('0x3f')]);return db['SalesforceConfiguration'][_0xc6de('0x48')](_0x1484bd)[_0xc6de('0x29')](handleEntityNotFound(_0x167451,null))[_0xc6de('0x29')](respondWithResult(_0x167451,null))[_0xc6de('0x44')](handleError(_0x167451,null));};exports[_0xc6de('0x49')]=function(_0x33102c,_0x5a6e34){return db['SalesforceConfiguration'][_0xc6de('0x49')](_0x33102c['body'],{})[_0xc6de('0x29')](respondWithResult(_0x5a6e34,0xc9))['catch'](handleError(_0x5a6e34,null));};exports['update']=function(_0x3fa301,_0x4636e6){if(_0x3fa301[_0xc6de('0x4a')]['id']){delete _0x3fa301['body']['id'];}return db[_0xc6de('0x42')][_0xc6de('0x48')]({'where':{'id':_0x3fa301[_0xc6de('0x46')]['id']}})['then'](handleEntityNotFound(_0x4636e6,null))[_0xc6de('0x29')](saveUpdates(_0x3fa301[_0xc6de('0x4a')],null))[_0xc6de('0x29')](respondWithResult(_0x4636e6,null))[_0xc6de('0x44')](handleError(_0x4636e6,null));};exports[_0xc6de('0x28')]=function(_0x53587f,_0x58891f){return db[_0xc6de('0x42')]['find']({'where':{'id':_0x53587f['params']['id']}})[_0xc6de('0x29')](handleEntityNotFound(_0x58891f,null))[_0xc6de('0x29')](removeEntity(_0x58891f,null))[_0xc6de('0x44')](handleError(_0x58891f,null));};exports[_0xc6de('0x4b')]=function(_0x2b82fe,_0x36f95b,_0x72593a){var _0x17ca57={};var _0x47519c={};var _0x136df8;var _0x39a327;return db['SalesforceConfiguration'][_0xc6de('0x4c')]({'where':{'id':_0x2b82fe[_0xc6de('0x46')]['id']}})['then'](handleEntityNotFound(_0x36f95b,null))[_0xc6de('0x29')](function(_0xebc35e){if(_0xebc35e){_0x136df8=_0xebc35e;_0x47519c[_0xc6de('0x31')]=_['keys'](db[_0xc6de('0x4d')][_0xc6de('0x2e')]);_0x47519c['query']=_[_0xc6de('0x33')](_0x2b82fe[_0xc6de('0x32')]);_0x47519c[_0xc6de('0x34')]=_[_0xc6de('0x35')](_0x47519c[_0xc6de('0x31')],_0x47519c['query']);_0x17ca57[_0xc6de('0x36')]=_[_0xc6de('0x35')](_0x47519c['model'],qs[_0xc6de('0x47')](_0x2b82fe[_0xc6de('0x32')][_0xc6de('0x47')]));_0x17ca57[_0xc6de('0x36')]=_0x17ca57[_0xc6de('0x36')]['length']?_0x17ca57[_0xc6de('0x36')]:_0x47519c[_0xc6de('0x31')];_0x17ca57[_0xc6de('0x4e')]=qs[_0xc6de('0x3a')](_0x2b82fe[_0xc6de('0x32')]['sort']);_0x17ca57[_0xc6de('0x3b')]=qs['filters'](_[_0xc6de('0x3c')](_0x2b82fe[_0xc6de('0x32')],_0x47519c[_0xc6de('0x34')]));if(_0x2b82fe['query']['filter']){_0x17ca57[_0xc6de('0x3b')]=_['merge'](_0x17ca57[_0xc6de('0x3b')],{'$or':_['map'](_0x17ca57['attributes'],function(_0x4659b9){var _0x2988e3={};_0x2988e3[_0x4659b9]={'$like':'%'+_0x2b82fe[_0xc6de('0x32')]['filter']+'%'};return _0x2988e3;})});}_0x17ca57=_[_0xc6de('0x3e')]({},_0x17ca57,_0x2b82fe['options']);return _0x136df8[_0xc6de('0x4b')](_0x17ca57);}})['then'](function(_0x53bad0){if(_0x53bad0){_0x39a327=_0x53bad0[_0xc6de('0x37')];if(!_0x2b82fe[_0xc6de('0x32')][_0xc6de('0x38')](_0xc6de('0x39'))){_0x17ca57[_0xc6de('0x20')]=qs['limit'](_0x2b82fe[_0xc6de('0x32')][_0xc6de('0x20')]);_0x17ca57[_0xc6de('0x1e')]=qs[_0xc6de('0x1e')](_0x2b82fe[_0xc6de('0x32')]['offset']);}return _0x136df8[_0xc6de('0x4b')](_0x17ca57);}})[_0xc6de('0x29')](function(_0x496e04){if(_0x496e04){return _0x496e04?{'count':_0x39a327,'rows':_0x496e04}:null;}})[_0xc6de('0x29')](respondWithResult(_0x36f95b,null))[_0xc6de('0x44')](handleError(_0x36f95b,null));};exports['getSubjects']=function(_0x4fc735,_0x560592,_0x4b5e1d){var _0x3c74aa={};var _0x5d2ef5={};var _0x23b167;var _0x37b363;return db[_0xc6de('0x42')][_0xc6de('0x4c')]({'where':{'id':_0x4fc735['params']['id']}})[_0xc6de('0x29')](handleEntityNotFound(_0x560592,null))['then'](function(_0x19eb34){if(_0x19eb34){_0x23b167=_0x19eb34;_0x5d2ef5[_0xc6de('0x31')]=_[_0xc6de('0x33')](db[_0xc6de('0x4d')][_0xc6de('0x2e')]);_0x5d2ef5[_0xc6de('0x32')]=_[_0xc6de('0x33')](_0x4fc735[_0xc6de('0x32')]);_0x5d2ef5[_0xc6de('0x34')]=_['intersection'](_0x5d2ef5[_0xc6de('0x31')],_0x5d2ef5[_0xc6de('0x32')]);_0x3c74aa[_0xc6de('0x36')]=_[_0xc6de('0x35')](_0x5d2ef5[_0xc6de('0x31')],qs['fields'](_0x4fc735['query'][_0xc6de('0x47')]));_0x3c74aa[_0xc6de('0x36')]=_0x3c74aa[_0xc6de('0x36')][_0xc6de('0x37')]?_0x3c74aa['attributes']:_0x5d2ef5[_0xc6de('0x31')];_0x3c74aa[_0xc6de('0x4e')]=qs[_0xc6de('0x3a')](_0x4fc735[_0xc6de('0x32')]['sort']);_0x3c74aa[_0xc6de('0x3b')]=qs['filters'](_[_0xc6de('0x3c')](_0x4fc735[_0xc6de('0x32')],_0x5d2ef5[_0xc6de('0x34')]));if(_0x4fc735['query'][_0xc6de('0x3d')]){_0x3c74aa[_0xc6de('0x3b')]=_['merge'](_0x3c74aa[_0xc6de('0x3b')],{'$or':_[_0xc6de('0x2d')](_0x3c74aa['attributes'],function(_0x2adff8){var _0x3587bd={};_0x3587bd[_0x2adff8]={'$like':'%'+_0x4fc735[_0xc6de('0x32')][_0xc6de('0x3d')]+'%'};return _0x3587bd;})});}_0x3c74aa=_[_0xc6de('0x3e')]({},_0x3c74aa,_0x4fc735[_0xc6de('0x3f')]);return _0x23b167[_0xc6de('0x4f')](_0x3c74aa);}})[_0xc6de('0x29')](function(_0x359a80){if(_0x359a80){_0x37b363=_0x359a80[_0xc6de('0x37')];if(!_0x4fc735[_0xc6de('0x32')]['hasOwnProperty'](_0xc6de('0x39'))){_0x3c74aa[_0xc6de('0x20')]=qs[_0xc6de('0x20')](_0x4fc735[_0xc6de('0x32')][_0xc6de('0x20')]);_0x3c74aa[_0xc6de('0x1e')]=qs[_0xc6de('0x1e')](_0x4fc735[_0xc6de('0x32')]['offset']);}return _0x23b167[_0xc6de('0x4f')](_0x3c74aa);}})[_0xc6de('0x29')](function(_0x34e94f){if(_0x34e94f){return _0x34e94f?{'count':_0x37b363,'rows':_0x34e94f}:null;}})[_0xc6de('0x29')](respondWithResult(_0x560592,null))[_0xc6de('0x44')](handleError(_0x560592,null));};exports['getDescriptions']=function(_0x51d483,_0x42a134,_0x5f23a0){var _0x3e1632={};var _0x401d0b={};var _0x4b48aa;var _0x4bc060;return db[_0xc6de('0x42')][_0xc6de('0x4c')]({'where':{'id':_0x51d483[_0xc6de('0x46')]['id']}})[_0xc6de('0x29')](handleEntityNotFound(_0x42a134,null))[_0xc6de('0x29')](function(_0x3d99a0){if(_0x3d99a0){_0x4b48aa=_0x3d99a0;_0x401d0b[_0xc6de('0x31')]=_[_0xc6de('0x33')](db[_0xc6de('0x4d')][_0xc6de('0x2e')]);_0x401d0b[_0xc6de('0x32')]=_[_0xc6de('0x33')](_0x51d483[_0xc6de('0x32')]);_0x401d0b[_0xc6de('0x34')]=_[_0xc6de('0x35')](_0x401d0b[_0xc6de('0x31')],_0x401d0b['query']);_0x3e1632['attributes']=_[_0xc6de('0x35')](_0x401d0b[_0xc6de('0x31')],qs[_0xc6de('0x47')](_0x51d483[_0xc6de('0x32')]['fields']));_0x3e1632[_0xc6de('0x36')]=_0x3e1632['attributes'][_0xc6de('0x37')]?_0x3e1632[_0xc6de('0x36')]:_0x401d0b[_0xc6de('0x31')];_0x3e1632[_0xc6de('0x4e')]=qs['sort'](_0x51d483[_0xc6de('0x32')][_0xc6de('0x3a')]);_0x3e1632[_0xc6de('0x3b')]=qs['filters'](_[_0xc6de('0x3c')](_0x51d483[_0xc6de('0x32')],_0x401d0b[_0xc6de('0x34')]));if(_0x51d483[_0xc6de('0x32')][_0xc6de('0x3d')]){_0x3e1632[_0xc6de('0x3b')]=_[_0xc6de('0x3e')](_0x3e1632['where'],{'$or':_['map'](_0x3e1632[_0xc6de('0x36')],function(_0x400cd8){var _0x3147a4={};_0x3147a4[_0x400cd8]={'$like':'%'+_0x51d483[_0xc6de('0x32')]['filter']+'%'};return _0x3147a4;})});}_0x3e1632=_[_0xc6de('0x3e')]({},_0x3e1632,_0x51d483['options']);return _0x4b48aa[_0xc6de('0x50')](_0x3e1632);}})['then'](function(_0x4c3fe9){if(_0x4c3fe9){_0x4bc060=_0x4c3fe9['length'];if(!_0x51d483[_0xc6de('0x32')][_0xc6de('0x38')](_0xc6de('0x39'))){_0x3e1632[_0xc6de('0x20')]=qs['limit'](_0x51d483[_0xc6de('0x32')]['limit']);_0x3e1632[_0xc6de('0x1e')]=qs['offset'](_0x51d483['query'][_0xc6de('0x1e')]);}return _0x4b48aa['getDescriptions'](_0x3e1632);}})[_0xc6de('0x29')](function(_0x43a5df){if(_0x43a5df){return _0x43a5df?{'count':_0x4bc060,'rows':_0x43a5df}:null;}})['then'](respondWithResult(_0x42a134,null))[_0xc6de('0x44')](handleError(_0x42a134,null));};
\ No newline at end of file
+var _0x3aff=['intersection','attributes','fields','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','length','create','body','update','find','getFields','findOne','order','pick','hasOwnProperty','getSubjects','getDescriptions','SalesforceField','eml-format','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../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','reject','save','then','destroy','name','index','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters'];(function(_0x521929,_0x479be5){var _0x632436=function(_0x288290){while(--_0x288290){_0x521929['push'](_0x521929['shift']());}};_0x632436(++_0x479be5);}(_0x3aff,0x148));var _0xf3af=function(_0x4464fb,_0x30f81a){_0x4464fb=_0x4464fb-0x0;var _0x305ca3=_0x3aff[_0x4464fb];return _0x305ca3;};'use strict';var emlformat=require(_0xf3af('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf3af('0x1'));var moment=require('moment');var BPromise=require(_0xf3af('0x2'));var Mustache=require('mustache');var util=require(_0xf3af('0x3'));var path=require('path');var sox=require(_0xf3af('0x4'));var csv=require(_0xf3af('0x5'));var ejs=require(_0xf3af('0x6'));var fs=require('fs');var fs_extra=require(_0xf3af('0x7'));var _=require(_0xf3af('0x8'));var squel=require('squel');var crypto=require(_0xf3af('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xf3af('0xa'));var toCsv=require(_0xf3af('0x5'));var querystring=require(_0xf3af('0xb'));var Papa=require(_0xf3af('0xc'));var Redis=require('ioredis');var authService=require(_0xf3af('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xf3af('0xe'));var hardwareService=require(_0xf3af('0xf'));var logger=require(_0xf3af('0x10'))(_0xf3af('0x11'));var utils=require('../../config/utils');var config=require(_0xf3af('0x12'));var licenseUtil=require(_0xf3af('0x13'));var db=require(_0xf3af('0x14'))['db'];function respondWithStatusCode(_0x70b03c,_0x314826){_0x314826=_0x314826||0xcc;return function(_0x41c1f5){if(_0x41c1f5){return _0x70b03c[_0xf3af('0x15')](_0x314826);}return _0x70b03c[_0xf3af('0x16')](_0x314826)[_0xf3af('0x17')]();};}function respondWithResult(_0x5deb8a,_0x4d878e){_0x4d878e=_0x4d878e||0xc8;return function(_0x51e0e0){if(_0x51e0e0){return _0x5deb8a['status'](_0x4d878e)[_0xf3af('0x18')](_0x51e0e0);}};}function respondWithFilteredResult(_0x3bf109,_0x41cd1b){return function(_0x55adb2){if(_0x55adb2){var _0xe3f207=typeof _0x41cd1b[_0xf3af('0x19')]===_0xf3af('0x1a')&&typeof _0x41cd1b[_0xf3af('0x1b')]==='undefined';var _0x3eb4b5=_0x55adb2[_0xf3af('0x1c')];var _0x55b30b=_0xe3f207?0x0:_0x41cd1b[_0xf3af('0x19')];var _0xf56224=_0xe3f207?_0x55adb2[_0xf3af('0x1c')]:_0x41cd1b['offset']+_0x41cd1b['limit'];var _0x2c126c;if(_0xf56224>=_0x3eb4b5){_0xf56224=_0x3eb4b5;_0x2c126c=0xc8;}else{_0x2c126c=0xce;}_0x3bf109[_0xf3af('0x16')](_0x2c126c);return _0x3bf109[_0xf3af('0x1d')](_0xf3af('0x1e'),_0x55b30b+'-'+_0xf56224+'/'+_0x3eb4b5)['json'](_0x55adb2);}return null;};}function patchUpdates(_0x2509ff){return function(_0x132371){try{jsonpatch['apply'](_0x132371,_0x2509ff,!![]);}catch(_0x550595){return BPromise[_0xf3af('0x1f')](_0x550595);}return _0x132371[_0xf3af('0x20')]();};}function saveUpdates(_0x5887b5,_0xb1411f){return function(_0x13fea6){if(_0x13fea6){return _0x13fea6['update'](_0x5887b5)[_0xf3af('0x21')](function(_0x2ff49f){return _0x2ff49f;});}return null;};}function removeEntity(_0x49be85,_0x232fc1){return function(_0x49c3a6){if(_0x49c3a6){return _0x49c3a6[_0xf3af('0x22')]()[_0xf3af('0x21')](function(){_0x49be85[_0xf3af('0x16')](0xcc)[_0xf3af('0x17')]();});}};}function handleEntityNotFound(_0x1853fe,_0x543eee){return function(_0x19efc7){if(!_0x19efc7){_0x1853fe['sendStatus'](0x194);}return _0x19efc7;};}function handleError(_0x3e3894,_0x472a72){_0x472a72=_0x472a72||0x1f4;return function(_0x288def){logger['error'](_0x288def['stack']);if(_0x288def[_0xf3af('0x23')]){delete _0x288def[_0xf3af('0x23')];}_0x3e3894[_0xf3af('0x16')](_0x472a72)['send'](_0x288def);};}exports[_0xf3af('0x24')]=function(_0xa175ca,_0x468706){var _0x557b6d={},_0x2b3e86={},_0x5d237a={'count':0x0,'rows':[]};var _0x491957=_[_0xf3af('0x25')](db[_0xf3af('0x26')][_0xf3af('0x27')],function(_0x503630){return{'name':_0x503630[_0xf3af('0x28')],'type':_0x503630[_0xf3af('0x29')][_0xf3af('0x2a')]};});_0x2b3e86[_0xf3af('0x2b')]=_['map'](_0x491957,_0xf3af('0x23'));_0x2b3e86[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0xa175ca[_0xf3af('0x2c')]);_0x2b3e86[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0x2b3e86[_0xf3af('0x2b')],_0x2b3e86[_0xf3af('0x2c')]);_0x557b6d[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x2b3e86['model'],qs[_0xf3af('0x31')](_0xa175ca['query'][_0xf3af('0x31')]));_0x557b6d['attributes']=_0x557b6d['attributes']['length']?_0x557b6d[_0xf3af('0x30')]:_0x2b3e86['model'];if(!_0xa175ca[_0xf3af('0x2c')]['hasOwnProperty'](_0xf3af('0x32'))){_0x557b6d['limit']=qs[_0xf3af('0x1b')](_0xa175ca[_0xf3af('0x2c')]['limit']);_0x557b6d[_0xf3af('0x19')]=qs[_0xf3af('0x19')](_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x19')]);}_0x557b6d['order']=qs['sort'](_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x33')]);_0x557b6d[_0xf3af('0x34')]=qs[_0xf3af('0x2e')](_['pick'](_0xa175ca['query'],_0x2b3e86[_0xf3af('0x2e')]),_0x491957);if(_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x35')]){_0x557b6d[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0x557b6d[_0xf3af('0x34')],{'$or':_[_0xf3af('0x25')](_0x491957,function(_0x1dda19){if(_0x1dda19[_0xf3af('0x29')]!==_0xf3af('0x37')){var _0x381afe={};_0x381afe[_0x1dda19[_0xf3af('0x23')]]={'$like':'%'+_0xa175ca['query'][_0xf3af('0x35')]+'%'};return _0x381afe;}})});}_0x557b6d=_[_0xf3af('0x36')]({},_0x557b6d,_0xa175ca[_0xf3af('0x38')]);var _0x14a357={'where':_0x557b6d[_0xf3af('0x34')]};return db[_0xf3af('0x26')][_0xf3af('0x1c')](_0x14a357)[_0xf3af('0x21')](function(_0x4b4b36){_0x5d237a[_0xf3af('0x1c')]=_0x4b4b36;if(_0xa175ca[_0xf3af('0x2c')][_0xf3af('0x39')]){_0x557b6d[_0xf3af('0x3a')]=[{'all':!![]}];}return db[_0xf3af('0x26')][_0xf3af('0x3b')](_0x557b6d);})[_0xf3af('0x21')](function(_0x125a4b){_0x5d237a['rows']=_0x125a4b;return _0x5d237a;})[_0xf3af('0x21')](respondWithFilteredResult(_0x468706,_0x557b6d))[_0xf3af('0x3c')](handleError(_0x468706,null));};exports['show']=function(_0x5d8398,_0x1c834a){var _0x1cad9e={'raw':![],'where':{'id':_0x5d8398[_0xf3af('0x3d')]['id']}},_0x88d07f={};_0x88d07f[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db['SalesforceConfiguration']['rawAttributes']);_0x88d07f[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x5d8398[_0xf3af('0x2c')]);_0x88d07f[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0x88d07f[_0xf3af('0x2b')],_0x88d07f[_0xf3af('0x2c')]);_0x1cad9e[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x88d07f[_0xf3af('0x2b')],qs[_0xf3af('0x31')](_0x5d8398[_0xf3af('0x2c')][_0xf3af('0x31')]));_0x1cad9e[_0xf3af('0x30')]=_0x1cad9e[_0xf3af('0x30')][_0xf3af('0x3e')]?_0x1cad9e[_0xf3af('0x30')]:_0x88d07f[_0xf3af('0x2b')];if(_0x5d8398[_0xf3af('0x2c')][_0xf3af('0x39')]){_0x1cad9e[_0xf3af('0x3a')]=[{'all':!![]}];}_0x1cad9e=_[_0xf3af('0x36')]({},_0x1cad9e,_0x5d8398[_0xf3af('0x38')]);return db['SalesforceConfiguration']['find'](_0x1cad9e)['then'](handleEntityNotFound(_0x1c834a,null))[_0xf3af('0x21')](respondWithResult(_0x1c834a,null))['catch'](handleError(_0x1c834a,null));};exports[_0xf3af('0x3f')]=function(_0x33cf82,_0xcbabcc){return db[_0xf3af('0x26')][_0xf3af('0x3f')](_0x33cf82[_0xf3af('0x40')],{})[_0xf3af('0x21')](respondWithResult(_0xcbabcc,0xc9))[_0xf3af('0x3c')](handleError(_0xcbabcc,null));};exports[_0xf3af('0x41')]=function(_0x2a1b17,_0x147c07){if(_0x2a1b17[_0xf3af('0x40')]['id']){delete _0x2a1b17[_0xf3af('0x40')]['id'];}return db[_0xf3af('0x26')][_0xf3af('0x42')]({'where':{'id':_0x2a1b17['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x147c07,null))['then'](saveUpdates(_0x2a1b17['body'],null))['then'](respondWithResult(_0x147c07,null))[_0xf3af('0x3c')](handleError(_0x147c07,null));};exports[_0xf3af('0x22')]=function(_0x27de25,_0x2aaafc){return db[_0xf3af('0x26')][_0xf3af('0x42')]({'where':{'id':_0x27de25['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x2aaafc,null))['then'](removeEntity(_0x2aaafc,null))['catch'](handleError(_0x2aaafc,null));};exports[_0xf3af('0x43')]=function(_0x50f566,_0x8b4633,_0x494546){var _0x1eed7f={};var _0x120c0e={};var _0x3d8b81;var _0x4e2b96;return db[_0xf3af('0x26')][_0xf3af('0x44')]({'where':{'id':_0x50f566['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x8b4633,null))[_0xf3af('0x21')](function(_0x18a95c){if(_0x18a95c){_0x3d8b81=_0x18a95c;_0x120c0e[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db['SalesforceField'][_0xf3af('0x27')]);_0x120c0e[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x50f566['query']);_0x120c0e[_0xf3af('0x2e')]=_['intersection'](_0x120c0e[_0xf3af('0x2b')],_0x120c0e[_0xf3af('0x2c')]);_0x1eed7f[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x120c0e[_0xf3af('0x2b')],qs[_0xf3af('0x31')](_0x50f566[_0xf3af('0x2c')][_0xf3af('0x31')]));_0x1eed7f[_0xf3af('0x30')]=_0x1eed7f[_0xf3af('0x30')][_0xf3af('0x3e')]?_0x1eed7f['attributes']:_0x120c0e['model'];_0x1eed7f[_0xf3af('0x45')]=qs['sort'](_0x50f566['query'][_0xf3af('0x33')]);_0x1eed7f[_0xf3af('0x34')]=qs[_0xf3af('0x2e')](_[_0xf3af('0x46')](_0x50f566[_0xf3af('0x2c')],_0x120c0e[_0xf3af('0x2e')]));if(_0x50f566['query'][_0xf3af('0x35')]){_0x1eed7f[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0x1eed7f['where'],{'$or':_[_0xf3af('0x25')](_0x1eed7f[_0xf3af('0x30')],function(_0x12a5f9){var _0x2a4f56={};_0x2a4f56[_0x12a5f9]={'$like':'%'+_0x50f566[_0xf3af('0x2c')][_0xf3af('0x35')]+'%'};return _0x2a4f56;})});}_0x1eed7f=_['merge']({},_0x1eed7f,_0x50f566[_0xf3af('0x38')]);return _0x3d8b81[_0xf3af('0x43')](_0x1eed7f);}})[_0xf3af('0x21')](function(_0x4d3062){if(_0x4d3062){_0x4e2b96=_0x4d3062['length'];if(!_0x50f566[_0xf3af('0x2c')][_0xf3af('0x47')]('nolimit')){_0x1eed7f[_0xf3af('0x1b')]=qs[_0xf3af('0x1b')](_0x50f566[_0xf3af('0x2c')][_0xf3af('0x1b')]);_0x1eed7f[_0xf3af('0x19')]=qs[_0xf3af('0x19')](_0x50f566['query'][_0xf3af('0x19')]);}return _0x3d8b81[_0xf3af('0x43')](_0x1eed7f);}})[_0xf3af('0x21')](function(_0x46fe5c){if(_0x46fe5c){return _0x46fe5c?{'count':_0x4e2b96,'rows':_0x46fe5c}:null;}})['then'](respondWithResult(_0x8b4633,null))[_0xf3af('0x3c')](handleError(_0x8b4633,null));};exports[_0xf3af('0x48')]=function(_0x389cf4,_0x12db67,_0x2f4269){var _0x57648c={};var _0xa345b6={};var _0x129007;var _0x3ec711;return db['SalesforceConfiguration'][_0xf3af('0x44')]({'where':{'id':_0x389cf4[_0xf3af('0x3d')]['id']}})['then'](handleEntityNotFound(_0x12db67,null))[_0xf3af('0x21')](function(_0x294583){if(_0x294583){_0x129007=_0x294583;_0xa345b6[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db['SalesforceField']['rawAttributes']);_0xa345b6[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x389cf4[_0xf3af('0x2c')]);_0xa345b6[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0xa345b6['model'],_0xa345b6['query']);_0x57648c[_0xf3af('0x30')]=_['intersection'](_0xa345b6['model'],qs[_0xf3af('0x31')](_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x31')]));_0x57648c[_0xf3af('0x30')]=_0x57648c[_0xf3af('0x30')]['length']?_0x57648c['attributes']:_0xa345b6[_0xf3af('0x2b')];_0x57648c[_0xf3af('0x45')]=qs[_0xf3af('0x33')](_0x389cf4['query'][_0xf3af('0x33')]);_0x57648c[_0xf3af('0x34')]=qs['filters'](_[_0xf3af('0x46')](_0x389cf4['query'],_0xa345b6['filters']));if(_0x389cf4['query'][_0xf3af('0x35')]){_0x57648c[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0x57648c[_0xf3af('0x34')],{'$or':_[_0xf3af('0x25')](_0x57648c['attributes'],function(_0x321ead){var _0x1aba99={};_0x1aba99[_0x321ead]={'$like':'%'+_0x389cf4['query']['filter']+'%'};return _0x1aba99;})});}_0x57648c=_[_0xf3af('0x36')]({},_0x57648c,_0x389cf4[_0xf3af('0x38')]);return _0x129007[_0xf3af('0x48')](_0x57648c);}})[_0xf3af('0x21')](function(_0x3e29f9){if(_0x3e29f9){_0x3ec711=_0x3e29f9['length'];if(!_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x47')]('nolimit')){_0x57648c[_0xf3af('0x1b')]=qs['limit'](_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x1b')]);_0x57648c[_0xf3af('0x19')]=qs[_0xf3af('0x19')](_0x389cf4[_0xf3af('0x2c')][_0xf3af('0x19')]);}return _0x129007['getSubjects'](_0x57648c);}})[_0xf3af('0x21')](function(_0x1162f6){if(_0x1162f6){return _0x1162f6?{'count':_0x3ec711,'rows':_0x1162f6}:null;}})['then'](respondWithResult(_0x12db67,null))[_0xf3af('0x3c')](handleError(_0x12db67,null));};exports[_0xf3af('0x49')]=function(_0x2da192,_0x34366a,_0x213241){var _0xfde04d={};var _0x15af8d={};var _0x127f16;var _0x1658ee;return db[_0xf3af('0x26')][_0xf3af('0x44')]({'where':{'id':_0x2da192['params']['id']}})[_0xf3af('0x21')](handleEntityNotFound(_0x34366a,null))[_0xf3af('0x21')](function(_0x3249ba){if(_0x3249ba){_0x127f16=_0x3249ba;_0x15af8d[_0xf3af('0x2b')]=_[_0xf3af('0x2d')](db[_0xf3af('0x4a')][_0xf3af('0x27')]);_0x15af8d[_0xf3af('0x2c')]=_[_0xf3af('0x2d')](_0x2da192[_0xf3af('0x2c')]);_0x15af8d[_0xf3af('0x2e')]=_[_0xf3af('0x2f')](_0x15af8d[_0xf3af('0x2b')],_0x15af8d['query']);_0xfde04d[_0xf3af('0x30')]=_[_0xf3af('0x2f')](_0x15af8d[_0xf3af('0x2b')],qs[_0xf3af('0x31')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x31')]));_0xfde04d[_0xf3af('0x30')]=_0xfde04d['attributes'][_0xf3af('0x3e')]?_0xfde04d[_0xf3af('0x30')]:_0x15af8d['model'];_0xfde04d[_0xf3af('0x45')]=qs[_0xf3af('0x33')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x33')]);_0xfde04d[_0xf3af('0x34')]=qs[_0xf3af('0x2e')](_['pick'](_0x2da192['query'],_0x15af8d[_0xf3af('0x2e')]));if(_0x2da192['query'][_0xf3af('0x35')]){_0xfde04d[_0xf3af('0x34')]=_[_0xf3af('0x36')](_0xfde04d[_0xf3af('0x34')],{'$or':_[_0xf3af('0x25')](_0xfde04d[_0xf3af('0x30')],function(_0x9b3a94){var _0x4efbae={};_0x4efbae[_0x9b3a94]={'$like':'%'+_0x2da192[_0xf3af('0x2c')][_0xf3af('0x35')]+'%'};return _0x4efbae;})});}_0xfde04d=_[_0xf3af('0x36')]({},_0xfde04d,_0x2da192[_0xf3af('0x38')]);return _0x127f16[_0xf3af('0x49')](_0xfde04d);}})['then'](function(_0x2633a5){if(_0x2633a5){_0x1658ee=_0x2633a5[_0xf3af('0x3e')];if(!_0x2da192[_0xf3af('0x2c')][_0xf3af('0x47')](_0xf3af('0x32'))){_0xfde04d[_0xf3af('0x1b')]=qs[_0xf3af('0x1b')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x1b')]);_0xfde04d['offset']=qs[_0xf3af('0x19')](_0x2da192[_0xf3af('0x2c')][_0xf3af('0x19')]);}return _0x127f16[_0xf3af('0x49')](_0xfde04d);}})[_0xf3af('0x21')](function(_0x3ba0a2){if(_0x3ba0a2){return _0x3ba0a2?{'count':_0x1658ee,'rows':_0x3ba0a2}:null;}})[_0xf3af('0x21')](respondWithResult(_0x34366a,null))[_0xf3af('0x3c')](handleError(_0x34366a,null));};
\ No newline at end of file
index 0483779..88689eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb33=['rimraf','exports','int_salesforce_configurations','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x491b2b,_0xfa079d){var _0x4806d7=function(_0x3ecab1){while(--_0x3ecab1){_0x491b2b['push'](_0x491b2b['shift']());}};_0x4806d7(++_0xfa079d);}(_0xbb33,0xad));var _0x3bb3=function(_0x1a71ef,_0x31ed01){_0x1a71ef=_0x1a71ef-0x0;var _0x1899f7=_0xbb33[_0x1a71ef];return _0x1899f7;};'use strict';var _=require(_0x3bb3('0x0'));var util=require(_0x3bb3('0x1'));var logger=require('../../config/logger')(_0x3bb3('0x2'));var moment=require(_0x3bb3('0x3'));var BPromise=require(_0x3bb3('0x4'));var rp=require(_0x3bb3('0x5'));var fs=require('fs');var path=require(_0x3bb3('0x6'));var rimraf=require(_0x3bb3('0x7'));var config=require('../../config/environment');var attributes=require('./intSalesforceConfiguration.attributes');module[_0x3bb3('0x8')]=function(_0x26cd59,_0x108d1b){return _0x26cd59['define']('SalesforceConfiguration',attributes,{'tableName':_0x3bb3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e99=['lodash','util','api','moment','request-promise','path','../../config/environment','./intSalesforceConfiguration.attributes','define','int_salesforce_configurations'];(function(_0xda464c,_0x26e47d){var _0x19e222=function(_0x1ec605){while(--_0x1ec605){_0xda464c['push'](_0xda464c['shift']());}};_0x19e222(++_0x26e47d);}(_0x7e99,0x186));var _0x97e9=function(_0x307086,_0x3bfe4e){_0x307086=_0x307086-0x0;var _0x699043=_0x7e99[_0x307086];return _0x699043;};'use strict';var _=require(_0x97e9('0x0'));var util=require(_0x97e9('0x1'));var logger=require('../../config/logger')(_0x97e9('0x2'));var moment=require(_0x97e9('0x3'));var BPromise=require('bluebird');var rp=require(_0x97e9('0x4'));var fs=require('fs');var path=require(_0x97e9('0x5'));var rimraf=require('rimraf');var config=require(_0x97e9('0x6'));var attributes=require(_0x97e9('0x7'));module['exports']=function(_0x3175c4,_0xf5b0b9){return _0x3175c4[_0x97e9('0x8')]('SalesforceConfiguration',attributes,{'tableName':_0x97e9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78bf6f2..cdb6f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab5e=['error','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xab5e,0x78));var _0xeab5=function(_0xeb74e4,_0x40bea0){_0xeb74e4=_0xeb74e4-0x0;var _0x401e92=_0xab5e[_0xeb74e4];return _0x401e92;};'use strict';var _=require(_0xeab5('0x0'));var util=require(_0xeab5('0x1'));var moment=require(_0xeab5('0x2'));var BPromise=require('bluebird');var rs=require(_0xeab5('0x3'));var fs=require('fs');var Redis=require(_0xeab5('0x4'));var db=require(_0xeab5('0x5'))['db'];var utils=require(_0xeab5('0x6'));var logger=require(_0xeab5('0x7'))(_0xeab5('0x8'));var config=require('../../config/environment');var jayson=require(_0xeab5('0x9'));var client=jayson[_0xeab5('0xa')][_0xeab5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1836c0,_0x4d6c0c,_0xa00f4){return new BPromise(function(_0x2dad55,_0x15f35a){return client[_0xeab5('0xc')](_0x1836c0,_0xa00f4)[_0xeab5('0xd')](function(_0x530d5b){logger['info'](_0xeab5('0xe'),_0x4d6c0c,_0xeab5('0xf'));logger[_0xeab5('0x10')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x4d6c0c,_0xeab5('0xf'),JSON[_0xeab5('0x11')](_0x530d5b));if(_0x530d5b[_0xeab5('0x12')]){if(_0x530d5b[_0xeab5('0x12')]['code']===0x1f4){logger[_0xeab5('0x12')](_0xeab5('0xe'),_0x4d6c0c,_0x530d5b[_0xeab5('0x12')][_0xeab5('0x13')]);return _0x15f35a(_0x530d5b[_0xeab5('0x12')]['message']);}logger[_0xeab5('0x12')](_0xeab5('0xe'),_0x4d6c0c,_0x530d5b[_0xeab5('0x12')][_0xeab5('0x13')]);return _0x2dad55(_0x530d5b[_0xeab5('0x12')]['message']);}else{logger[_0xeab5('0x14')]('SalesforceConfiguration,\x20%s,\x20%s',_0x4d6c0c,_0xeab5('0xf'));_0x2dad55(_0x530d5b[_0xeab5('0x15')][_0xeab5('0x13')]);}})[_0xeab5('0x16')](function(_0xe36701){logger['error'](_0xeab5('0xe'),_0x4d6c0c,_0xe36701);_0x15f35a(_0xe36701);});});}
\ No newline at end of file
+var _0xf3a7=['jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3c59fc,_0x10dbd2){var _0x2b78d4=function(_0x5f161a){while(--_0x5f161a){_0x3c59fc['push'](_0x3c59fc['shift']());}};_0x2b78d4(++_0x10dbd2);}(_0xf3a7,0x1ea));var _0x7f3a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf3a7[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x7f3a('0x0'));var util=require(_0x7f3a('0x1'));var moment=require(_0x7f3a('0x2'));var BPromise=require(_0x7f3a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f3a('0x4'));var db=require(_0x7f3a('0x5'))['db'];var utils=require(_0x7f3a('0x6'));var logger=require(_0x7f3a('0x7'))(_0x7f3a('0x8'));var config=require(_0x7f3a('0x9'));var jayson=require(_0x7f3a('0xa'));var client=jayson[_0x7f3a('0xb')][_0x7f3a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34bfdb,_0x2ba4fa,_0x223f24){return new BPromise(function(_0x31796d,_0x2a2dbf){return client[_0x7f3a('0xd')](_0x34bfdb,_0x223f24)[_0x7f3a('0xe')](function(_0x2dcbcc){logger[_0x7f3a('0xf')](_0x7f3a('0x10'),_0x2ba4fa,'request\x20sent');logger[_0x7f3a('0x11')](_0x7f3a('0x12'),_0x2ba4fa,_0x7f3a('0x13'),JSON[_0x7f3a('0x14')](_0x2dcbcc));if(_0x2dcbcc[_0x7f3a('0x15')]){if(_0x2dcbcc['error'][_0x7f3a('0x16')]===0x1f4){logger[_0x7f3a('0x15')](_0x7f3a('0x10'),_0x2ba4fa,_0x2dcbcc[_0x7f3a('0x15')][_0x7f3a('0x17')]);return _0x2a2dbf(_0x2dcbcc['error'][_0x7f3a('0x17')]);}logger[_0x7f3a('0x15')](_0x7f3a('0x10'),_0x2ba4fa,_0x2dcbcc[_0x7f3a('0x15')][_0x7f3a('0x17')]);return _0x31796d(_0x2dcbcc[_0x7f3a('0x15')][_0x7f3a('0x17')]);}else{logger[_0x7f3a('0xf')](_0x7f3a('0x10'),_0x2ba4fa,'request\x20sent');_0x31796d(_0x2dcbcc['result']['message']);}})[_0x7f3a('0x18')](function(_0x358a37){logger[_0x7f3a('0x15')]('SalesforceConfiguration,\x20%s,\x20%s',_0x2ba4fa,_0x358a37);_0x2a2dbf(_0x358a37);});});}
\ No newline at end of file
index b39c949..b2f5961 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9db=['update','delete','destroy','exports','multer','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','post','put'];(function(_0x8bd517,_0x513d7d){var _0x5c843e=function(_0x1247e8){while(--_0x1247e8){_0x8bd517['push'](_0x8bd517['shift']());}};_0x5c843e(++_0x513d7d);}(_0xe9db,0xe4));var _0xbe9d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe9db[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xbe9d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xbe9d('0x1'));var auth=require(_0xbe9d('0x2'));var interaction=require(_0xbe9d('0x3'));var config=require(_0xbe9d('0x4'));var controller=require('./intSalesforceField.controller');router[_0xbe9d('0x5')]('/',auth[_0xbe9d('0x6')](),controller['index']);router[_0xbe9d('0x5')](_0xbe9d('0x7'),auth['isAuthenticated'](),controller['show']);router[_0xbe9d('0x8')]('/',auth[_0xbe9d('0x6')](),controller['create']);router[_0xbe9d('0x9')](_0xbe9d('0x7'),auth[_0xbe9d('0x6')](),controller[_0xbe9d('0xa')]);router[_0xbe9d('0xb')](_0xbe9d('0x7'),auth['isAuthenticated'](),controller[_0xbe9d('0xc')]);module[_0xbe9d('0xd')]=router;
\ No newline at end of file
+var _0x5e51=['post','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intSalesforceField.controller','index','/:id','isAuthenticated','show'];(function(_0xa6a4f8,_0x31f67d){var _0x528152=function(_0x221777){while(--_0x221777){_0xa6a4f8['push'](_0xa6a4f8['shift']());}};_0x528152(++_0x31f67d);}(_0x5e51,0x148));var _0x15e5=function(_0x5e76c6,_0xf16290){_0x5e76c6=_0x5e76c6-0x0;var _0x43fb22=_0x5e51[_0x5e76c6];return _0x43fb22;};'use strict';var multer=require('multer');var util=require(_0x15e5('0x0'));var path=require(_0x15e5('0x1'));var timeout=require(_0x15e5('0x2'));var express=require(_0x15e5('0x3'));var router=express[_0x15e5('0x4')]();var fs_extra=require(_0x15e5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x15e5('0x6'));var config=require('../../config/environment');var controller=require(_0x15e5('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x15e5('0x8')]);router['get'](_0x15e5('0x9'),auth[_0x15e5('0xa')](),controller[_0x15e5('0xb')]);router[_0x15e5('0xc')]('/',auth[_0x15e5('0xa')](),controller['create']);router[_0x15e5('0xd')](_0x15e5('0x9'),auth[_0x15e5('0xa')](),controller['update']);router[_0x15e5('0xe')]('/:id',auth[_0x15e5('0xa')](),controller[_0x15e5('0xf')]);module[_0x15e5('0x10')]=router;
\ No newline at end of file
index ec272c7..ba16c47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf69f=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize'];(function(_0x5d406f,_0x9658d9){var _0x5d2a60=function(_0x41dd9a){while(--_0x41dd9a){_0x5d406f['push'](_0x5d406f['shift']());}};_0x5d2a60(++_0x9658d9);}(_0xf69f,0x1ee));var _0xff69=function(_0x5b25ae,_0x4c16cc){_0x5b25ae=_0x5b25ae-0x0;var _0x2831b7=_0xf69f[_0x5b25ae];return _0x2831b7;};'use strict';var Sequelize=require(_0xff69('0x0'));module[_0xff69('0x1')]={'type':{'type':Sequelize[_0xff69('0x2')](_0xff69('0x3'),_0xff69('0x4'),_0xff69('0x5'),_0xff69('0x6'),_0xff69('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xff69('0x8')]},'key':{'type':Sequelize[_0xff69('0x8')]},'keyType':{'type':Sequelize[_0xff69('0x2')](_0xff69('0x3'),'variable',_0xff69('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xff69('0x8')]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x97f8=['customVariable','picklist','STRING','variable','sequelize','ENUM','string'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0x97f8,0x170));var _0x897f=function(_0x3265af,_0x505052){_0x3265af=_0x3265af-0x0;var _0x15955b=_0x97f8[_0x3265af];return _0x15955b;};'use strict';var Sequelize=require(_0x897f('0x0'));module['exports']={'type':{'type':Sequelize[_0x897f('0x1')](_0x897f('0x2'),'variable',_0x897f('0x3'),'keyValue',_0x897f('0x4')),'defaultValue':_0x897f('0x2')},'content':{'type':Sequelize[_0x897f('0x5')]},'key':{'type':Sequelize[_0x897f('0x5')]},'keyType':{'type':Sequelize[_0x897f('0x1')](_0x897f('0x2'),_0x897f('0x6'),'customVariable')},'keyContent':{'type':Sequelize[_0x897f('0x5')]},'idField':{'type':Sequelize[_0x897f('0x5')]},'variableName':{'type':Sequelize[_0x897f('0x5')]}};
\ No newline at end of file
index 859bfee..a5bc95b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bdd=['bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','SalesforceField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','include','findAll','params','includeAll','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x5d33b2,_0x10c3b7){var _0x50a16d=function(_0x35a4){while(--_0x35a4){_0x5d33b2['push'](_0x5d33b2['shift']());}};_0x50a16d(++_0x10c3b7);}(_0x3bdd,0x94));var _0xd3bd=function(_0x5cb512,_0x5be502){_0x5cb512=_0x5cb512-0x0;var _0x232914=_0x3bdd[_0x5cb512];return _0x232914;};'use strict';var emlformat=require(_0xd3bd('0x0'));var rimraf=require(_0xd3bd('0x1'));var zipdir=require(_0xd3bd('0x2'));var jsonpatch=require(_0xd3bd('0x3'));var rp=require(_0xd3bd('0x4'));var moment=require(_0xd3bd('0x5'));var BPromise=require(_0xd3bd('0x6'));var Mustache=require(_0xd3bd('0x7'));var util=require(_0xd3bd('0x8'));var path=require(_0xd3bd('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd3bd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd3bd('0xb'));var squel=require(_0xd3bd('0xc'));var crypto=require(_0xd3bd('0xd'));var jsforce=require(_0xd3bd('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd3bd('0xf'));var querystring=require(_0xd3bd('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd3bd('0x11'));var qs=require(_0xd3bd('0x12'));var as=require(_0xd3bd('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd3bd('0x14'))(_0xd3bd('0x15'));var utils=require(_0xd3bd('0x16'));var config=require(_0xd3bd('0x17'));var licenseUtil=require(_0xd3bd('0x18'));var db=require(_0xd3bd('0x19'))['db'];function respondWithStatusCode(_0x189b90,_0x485e78){_0x485e78=_0x485e78||0xcc;return function(_0x12ad10){if(_0x12ad10){return _0x189b90[_0xd3bd('0x1a')](_0x485e78);}return _0x189b90[_0xd3bd('0x1b')](_0x485e78)[_0xd3bd('0x1c')]();};}function respondWithResult(_0x49b852,_0x3bef98){_0x3bef98=_0x3bef98||0xc8;return function(_0x5d37d6){if(_0x5d37d6){return _0x49b852['status'](_0x3bef98)[_0xd3bd('0x1d')](_0x5d37d6);}};}function respondWithFilteredResult(_0x32a48c,_0x2cf5c2){return function(_0x372b0a){if(_0x372b0a){var _0x46e5a5=typeof _0x2cf5c2[_0xd3bd('0x1e')]===_0xd3bd('0x1f')&&typeof _0x2cf5c2[_0xd3bd('0x20')]==='undefined';var _0x2aa176=_0x372b0a['count'];var _0x2a42e6=_0x46e5a5?0x0:_0x2cf5c2[_0xd3bd('0x1e')];var _0x90e31a=_0x46e5a5?_0x372b0a[_0xd3bd('0x21')]:_0x2cf5c2['offset']+_0x2cf5c2[_0xd3bd('0x20')];var _0x2ac6d8;if(_0x90e31a>=_0x2aa176){_0x90e31a=_0x2aa176;_0x2ac6d8=0xc8;}else{_0x2ac6d8=0xce;}_0x32a48c['status'](_0x2ac6d8);return _0x32a48c[_0xd3bd('0x22')](_0xd3bd('0x23'),_0x2a42e6+'-'+_0x90e31a+'/'+_0x2aa176)['json'](_0x372b0a);}return null;};}function patchUpdates(_0x38b7a3){return function(_0x2d8921){try{jsonpatch['apply'](_0x2d8921,_0x38b7a3,!![]);}catch(_0x325c41){return BPromise[_0xd3bd('0x24')](_0x325c41);}return _0x2d8921[_0xd3bd('0x25')]();};}function saveUpdates(_0x36b011,_0x55ff91){return function(_0x472caf){if(_0x472caf){return _0x472caf[_0xd3bd('0x26')](_0x36b011)['then'](function(_0x22d4ef){return _0x22d4ef;});}return null;};}function removeEntity(_0x1ab669,_0x51f230){return function(_0x5b2dd1){if(_0x5b2dd1){return _0x5b2dd1[_0xd3bd('0x27')]()[_0xd3bd('0x28')](function(){_0x1ab669[_0xd3bd('0x1b')](0xcc)[_0xd3bd('0x1c')]();});}};}function handleEntityNotFound(_0x4163f5,_0x2beea0){return function(_0x3e6dd7){if(!_0x3e6dd7){_0x4163f5[_0xd3bd('0x1a')](0x194);}return _0x3e6dd7;};}function handleError(_0x23d30f,_0x3f6e37){_0x3f6e37=_0x3f6e37||0x1f4;return function(_0x2888e6){logger[_0xd3bd('0x29')](_0x2888e6[_0xd3bd('0x2a')]);if(_0x2888e6[_0xd3bd('0x2b')]){delete _0x2888e6[_0xd3bd('0x2b')];}_0x23d30f[_0xd3bd('0x1b')](_0x3f6e37)[_0xd3bd('0x2c')](_0x2888e6);};}exports[_0xd3bd('0x2d')]=function(_0x1165cf,_0x343759){var _0x41fbf9={},_0x483f15={},_0x50787c={'count':0x0,'rows':[]};var _0x4471fc=_['map'](db[_0xd3bd('0x2e')][_0xd3bd('0x2f')],function(_0x574b17){return{'name':_0x574b17[_0xd3bd('0x30')],'type':_0x574b17[_0xd3bd('0x31')][_0xd3bd('0x32')]};});_0x483f15[_0xd3bd('0x33')]=_[_0xd3bd('0x34')](_0x4471fc,_0xd3bd('0x2b'));_0x483f15[_0xd3bd('0x35')]=_[_0xd3bd('0x36')](_0x1165cf[_0xd3bd('0x35')]);_0x483f15['filters']=_[_0xd3bd('0x37')](_0x483f15['model'],_0x483f15['query']);_0x41fbf9[_0xd3bd('0x38')]=_[_0xd3bd('0x37')](_0x483f15[_0xd3bd('0x33')],qs[_0xd3bd('0x39')](_0x1165cf[_0xd3bd('0x35')][_0xd3bd('0x39')]));_0x41fbf9[_0xd3bd('0x38')]=_0x41fbf9[_0xd3bd('0x38')][_0xd3bd('0x3a')]?_0x41fbf9[_0xd3bd('0x38')]:_0x483f15[_0xd3bd('0x33')];if(!_0x1165cf['query'][_0xd3bd('0x3b')](_0xd3bd('0x3c'))){_0x41fbf9['limit']=qs['limit'](_0x1165cf[_0xd3bd('0x35')][_0xd3bd('0x20')]);_0x41fbf9[_0xd3bd('0x1e')]=qs[_0xd3bd('0x1e')](_0x1165cf[_0xd3bd('0x35')][_0xd3bd('0x1e')]);}_0x41fbf9[_0xd3bd('0x3d')]=qs['sort'](_0x1165cf[_0xd3bd('0x35')][_0xd3bd('0x3e')]);_0x41fbf9[_0xd3bd('0x3f')]=qs[_0xd3bd('0x40')](_[_0xd3bd('0x41')](_0x1165cf[_0xd3bd('0x35')],_0x483f15[_0xd3bd('0x40')]),_0x4471fc);if(_0x1165cf[_0xd3bd('0x35')][_0xd3bd('0x42')]){_0x41fbf9['where']=_[_0xd3bd('0x43')](_0x41fbf9[_0xd3bd('0x3f')],{'$or':_[_0xd3bd('0x34')](_0x4471fc,function(_0x42fec6){if(_0x42fec6[_0xd3bd('0x31')]!==_0xd3bd('0x44')){var _0x1809d0={};_0x1809d0[_0x42fec6[_0xd3bd('0x2b')]]={'$like':'%'+_0x1165cf[_0xd3bd('0x35')][_0xd3bd('0x42')]+'%'};return _0x1809d0;}})});}_0x41fbf9=_[_0xd3bd('0x43')]({},_0x41fbf9,_0x1165cf['options']);var _0x8dae89={'where':_0x41fbf9[_0xd3bd('0x3f')]};return db[_0xd3bd('0x2e')][_0xd3bd('0x21')](_0x8dae89)[_0xd3bd('0x28')](function(_0x2678c8){_0x50787c[_0xd3bd('0x21')]=_0x2678c8;if(_0x1165cf[_0xd3bd('0x35')]['includeAll']){_0x41fbf9[_0xd3bd('0x45')]=[{'all':!![]}];}return db['SalesforceField'][_0xd3bd('0x46')](_0x41fbf9);})[_0xd3bd('0x28')](function(_0x19e15f){_0x50787c['rows']=_0x19e15f;return _0x50787c;})[_0xd3bd('0x28')](respondWithFilteredResult(_0x343759,_0x41fbf9))['catch'](handleError(_0x343759,null));};exports['show']=function(_0x278bb5,_0x2e473f){var _0x595ad5={'raw':!![],'where':{'id':_0x278bb5[_0xd3bd('0x47')]['id']}},_0x1f4609={};_0x1f4609['model']=_[_0xd3bd('0x36')](db[_0xd3bd('0x2e')]['rawAttributes']);_0x1f4609['query']=_[_0xd3bd('0x36')](_0x278bb5[_0xd3bd('0x35')]);_0x1f4609[_0xd3bd('0x40')]=_[_0xd3bd('0x37')](_0x1f4609[_0xd3bd('0x33')],_0x1f4609['query']);_0x595ad5['attributes']=_['intersection'](_0x1f4609[_0xd3bd('0x33')],qs['fields'](_0x278bb5[_0xd3bd('0x35')][_0xd3bd('0x39')]));_0x595ad5[_0xd3bd('0x38')]=_0x595ad5[_0xd3bd('0x38')][_0xd3bd('0x3a')]?_0x595ad5[_0xd3bd('0x38')]:_0x1f4609[_0xd3bd('0x33')];if(_0x278bb5[_0xd3bd('0x35')][_0xd3bd('0x48')]){_0x595ad5[_0xd3bd('0x45')]=[{'all':!![]}];}_0x595ad5=_['merge']({},_0x595ad5,_0x278bb5['options']);return db[_0xd3bd('0x2e')][_0xd3bd('0x49')](_0x595ad5)[_0xd3bd('0x28')](handleEntityNotFound(_0x2e473f,null))[_0xd3bd('0x28')](respondWithResult(_0x2e473f,null))[_0xd3bd('0x4a')](handleError(_0x2e473f,null));};exports[_0xd3bd('0x4b')]=function(_0xbaa22f,_0x26633c){return db[_0xd3bd('0x2e')]['create'](_0xbaa22f[_0xd3bd('0x4c')],{})[_0xd3bd('0x28')](respondWithResult(_0x26633c,0xc9))[_0xd3bd('0x4a')](handleError(_0x26633c,null));};exports[_0xd3bd('0x26')]=function(_0x4ff04f,_0x4434d9){if(_0x4ff04f[_0xd3bd('0x4c')]['id']){delete _0x4ff04f['body']['id'];}return db['SalesforceField'][_0xd3bd('0x49')]({'where':{'id':_0x4ff04f[_0xd3bd('0x47')]['id']}})[_0xd3bd('0x28')](handleEntityNotFound(_0x4434d9,null))[_0xd3bd('0x28')](saveUpdates(_0x4ff04f[_0xd3bd('0x4c')],null))[_0xd3bd('0x28')](respondWithResult(_0x4434d9,null))['catch'](handleError(_0x4434d9,null));};exports[_0xd3bd('0x27')]=function(_0x5bfa60,_0x987d0c){return db['SalesforceField']['find']({'where':{'id':_0x5bfa60['params']['id']}})['then'](handleEntityNotFound(_0x987d0c,null))[_0xd3bd('0x28')](removeEntity(_0x987d0c,null))[_0xd3bd('0x4a')](handleError(_0x987d0c,null));};
\ No newline at end of file
+var _0x0a68=['filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','keys','length','include','find','create','body','params','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','index','map','SalesforceField','rawAttributes','fieldName','type','key','query'];(function(_0x437654,_0x5f40bc){var _0x4711d5=function(_0x342f61){while(--_0x342f61){_0x437654['push'](_0x437654['shift']());}};_0x4711d5(++_0x5f40bc);}(_0x0a68,0x194));var _0x80a6=function(_0x37b2b9,_0x4a68ab){_0x37b2b9=_0x37b2b9-0x0;var _0x422cb3=_0x0a68[_0x37b2b9];return _0x422cb3;};'use strict';var emlformat=require(_0x80a6('0x0'));var rimraf=require(_0x80a6('0x1'));var zipdir=require(_0x80a6('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x80a6('0x3'));var moment=require('moment');var BPromise=require(_0x80a6('0x4'));var Mustache=require(_0x80a6('0x5'));var util=require(_0x80a6('0x6'));var path=require(_0x80a6('0x7'));var sox=require(_0x80a6('0x8'));var csv=require(_0x80a6('0x9'));var ejs=require(_0x80a6('0xa'));var fs=require('fs');var fs_extra=require(_0x80a6('0xb'));var _=require(_0x80a6('0xc'));var squel=require(_0x80a6('0xd'));var crypto=require(_0x80a6('0xe'));var jsforce=require(_0x80a6('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x80a6('0x9'));var querystring=require(_0x80a6('0x10'));var Papa=require(_0x80a6('0x11'));var Redis=require(_0x80a6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x80a6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x80a6('0x14'));var logger=require(_0x80a6('0x15'))(_0x80a6('0x16'));var utils=require(_0x80a6('0x17'));var config=require(_0x80a6('0x18'));var licenseUtil=require(_0x80a6('0x19'));var db=require(_0x80a6('0x1a'))['db'];function respondWithStatusCode(_0x27bc1f,_0x5a3a55){_0x5a3a55=_0x5a3a55||0xcc;return function(_0x3689ba){if(_0x3689ba){return _0x27bc1f['sendStatus'](_0x5a3a55);}return _0x27bc1f[_0x80a6('0x1b')](_0x5a3a55)[_0x80a6('0x1c')]();};}function respondWithResult(_0x4dfca,_0x4ec1a5){_0x4ec1a5=_0x4ec1a5||0xc8;return function(_0xe426bf){if(_0xe426bf){return _0x4dfca[_0x80a6('0x1b')](_0x4ec1a5)[_0x80a6('0x1d')](_0xe426bf);}};}function respondWithFilteredResult(_0x1d107f,_0x5d0664){return function(_0x5b9f57){if(_0x5b9f57){var _0x30323e=typeof _0x5d0664[_0x80a6('0x1e')]==='undefined'&&typeof _0x5d0664[_0x80a6('0x1f')]===_0x80a6('0x20');var _0x33eb62=_0x5b9f57[_0x80a6('0x21')];var _0x16343c=_0x30323e?0x0:_0x5d0664['offset'];var _0x143eb7=_0x30323e?_0x5b9f57[_0x80a6('0x21')]:_0x5d0664[_0x80a6('0x1e')]+_0x5d0664['limit'];var _0x44c1d3;if(_0x143eb7>=_0x33eb62){_0x143eb7=_0x33eb62;_0x44c1d3=0xc8;}else{_0x44c1d3=0xce;}_0x1d107f['status'](_0x44c1d3);return _0x1d107f['set'](_0x80a6('0x22'),_0x16343c+'-'+_0x143eb7+'/'+_0x33eb62)['json'](_0x5b9f57);}return null;};}function patchUpdates(_0x3494f5){return function(_0x15f107){try{jsonpatch[_0x80a6('0x23')](_0x15f107,_0x3494f5,!![]);}catch(_0x4b3029){return BPromise[_0x80a6('0x24')](_0x4b3029);}return _0x15f107[_0x80a6('0x25')]();};}function saveUpdates(_0x5e3f9c,_0x3a5a1b){return function(_0x4df03b){if(_0x4df03b){return _0x4df03b[_0x80a6('0x26')](_0x5e3f9c)[_0x80a6('0x27')](function(_0x1ea0ef){return _0x1ea0ef;});}return null;};}function removeEntity(_0x198161,_0x3c3ab3){return function(_0x18bc25){if(_0x18bc25){return _0x18bc25[_0x80a6('0x28')]()[_0x80a6('0x27')](function(){_0x198161[_0x80a6('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a8d10,_0x1fbcbb){return function(_0x5cf1f0){if(!_0x5cf1f0){_0x3a8d10[_0x80a6('0x29')](0x194);}return _0x5cf1f0;};}function handleError(_0x489e07,_0x383e84){_0x383e84=_0x383e84||0x1f4;return function(_0x31a449){logger['error'](_0x31a449[_0x80a6('0x2a')]);if(_0x31a449[_0x80a6('0x2b')]){delete _0x31a449[_0x80a6('0x2b')];}_0x489e07['status'](_0x383e84)['send'](_0x31a449);};}exports[_0x80a6('0x2c')]=function(_0x236b37,_0x478c33){var _0x489a48={},_0x1c08ee={},_0x25179a={'count':0x0,'rows':[]};var _0x34caf7=_[_0x80a6('0x2d')](db[_0x80a6('0x2e')][_0x80a6('0x2f')],function(_0xfa0943){return{'name':_0xfa0943[_0x80a6('0x30')],'type':_0xfa0943[_0x80a6('0x31')][_0x80a6('0x32')]};});_0x1c08ee['model']=_[_0x80a6('0x2d')](_0x34caf7,_0x80a6('0x2b'));_0x1c08ee[_0x80a6('0x33')]=_['keys'](_0x236b37[_0x80a6('0x33')]);_0x1c08ee[_0x80a6('0x34')]=_['intersection'](_0x1c08ee[_0x80a6('0x35')],_0x1c08ee[_0x80a6('0x33')]);_0x489a48[_0x80a6('0x36')]=_[_0x80a6('0x37')](_0x1c08ee[_0x80a6('0x35')],qs[_0x80a6('0x38')](_0x236b37[_0x80a6('0x33')][_0x80a6('0x38')]));_0x489a48['attributes']=_0x489a48[_0x80a6('0x36')]['length']?_0x489a48[_0x80a6('0x36')]:_0x1c08ee[_0x80a6('0x35')];if(!_0x236b37['query'][_0x80a6('0x39')](_0x80a6('0x3a'))){_0x489a48['limit']=qs[_0x80a6('0x1f')](_0x236b37['query'][_0x80a6('0x1f')]);_0x489a48[_0x80a6('0x1e')]=qs[_0x80a6('0x1e')](_0x236b37['query']['offset']);}_0x489a48[_0x80a6('0x3b')]=qs['sort'](_0x236b37['query']['sort']);_0x489a48[_0x80a6('0x3c')]=qs[_0x80a6('0x34')](_['pick'](_0x236b37[_0x80a6('0x33')],_0x1c08ee[_0x80a6('0x34')]),_0x34caf7);if(_0x236b37['query'][_0x80a6('0x3d')]){_0x489a48[_0x80a6('0x3c')]=_[_0x80a6('0x3e')](_0x489a48[_0x80a6('0x3c')],{'$or':_[_0x80a6('0x2d')](_0x34caf7,function(_0x1c1f1e){if(_0x1c1f1e[_0x80a6('0x31')]!==_0x80a6('0x3f')){var _0x480ed5={};_0x480ed5[_0x1c1f1e[_0x80a6('0x2b')]]={'$like':'%'+_0x236b37[_0x80a6('0x33')][_0x80a6('0x3d')]+'%'};return _0x480ed5;}})});}_0x489a48=_[_0x80a6('0x3e')]({},_0x489a48,_0x236b37[_0x80a6('0x40')]);var _0x789c19={'where':_0x489a48[_0x80a6('0x3c')]};return db[_0x80a6('0x2e')][_0x80a6('0x21')](_0x789c19)['then'](function(_0x7beab7){_0x25179a[_0x80a6('0x21')]=_0x7beab7;if(_0x236b37[_0x80a6('0x33')][_0x80a6('0x41')]){_0x489a48['include']=[{'all':!![]}];}return db[_0x80a6('0x2e')]['findAll'](_0x489a48);})[_0x80a6('0x27')](function(_0x5983cc){_0x25179a[_0x80a6('0x42')]=_0x5983cc;return _0x25179a;})[_0x80a6('0x27')](respondWithFilteredResult(_0x478c33,_0x489a48))[_0x80a6('0x43')](handleError(_0x478c33,null));};exports[_0x80a6('0x44')]=function(_0x3edeb1,_0x55dce2){var _0x1edf27={'raw':!![],'where':{'id':_0x3edeb1['params']['id']}},_0x5b22da={};_0x5b22da['model']=_['keys'](db[_0x80a6('0x2e')]['rawAttributes']);_0x5b22da[_0x80a6('0x33')]=_[_0x80a6('0x45')](_0x3edeb1[_0x80a6('0x33')]);_0x5b22da['filters']=_[_0x80a6('0x37')](_0x5b22da[_0x80a6('0x35')],_0x5b22da[_0x80a6('0x33')]);_0x1edf27[_0x80a6('0x36')]=_[_0x80a6('0x37')](_0x5b22da[_0x80a6('0x35')],qs['fields'](_0x3edeb1[_0x80a6('0x33')][_0x80a6('0x38')]));_0x1edf27[_0x80a6('0x36')]=_0x1edf27[_0x80a6('0x36')][_0x80a6('0x46')]?_0x1edf27['attributes']:_0x5b22da['model'];if(_0x3edeb1['query'][_0x80a6('0x41')]){_0x1edf27[_0x80a6('0x47')]=[{'all':!![]}];}_0x1edf27=_[_0x80a6('0x3e')]({},_0x1edf27,_0x3edeb1[_0x80a6('0x40')]);return db['SalesforceField'][_0x80a6('0x48')](_0x1edf27)[_0x80a6('0x27')](handleEntityNotFound(_0x55dce2,null))[_0x80a6('0x27')](respondWithResult(_0x55dce2,null))[_0x80a6('0x43')](handleError(_0x55dce2,null));};exports['create']=function(_0xe934c3,_0x14a5cb){return db[_0x80a6('0x2e')][_0x80a6('0x49')](_0xe934c3[_0x80a6('0x4a')],{})[_0x80a6('0x27')](respondWithResult(_0x14a5cb,0xc9))[_0x80a6('0x43')](handleError(_0x14a5cb,null));};exports[_0x80a6('0x26')]=function(_0x563c1e,_0x3f76e0){if(_0x563c1e[_0x80a6('0x4a')]['id']){delete _0x563c1e['body']['id'];}return db[_0x80a6('0x2e')]['find']({'where':{'id':_0x563c1e[_0x80a6('0x4b')]['id']}})[_0x80a6('0x27')](handleEntityNotFound(_0x3f76e0,null))[_0x80a6('0x27')](saveUpdates(_0x563c1e[_0x80a6('0x4a')],null))[_0x80a6('0x27')](respondWithResult(_0x3f76e0,null))[_0x80a6('0x43')](handleError(_0x3f76e0,null));};exports[_0x80a6('0x28')]=function(_0xdd7245,_0xd15c0f){return db['SalesforceField'][_0x80a6('0x48')]({'where':{'id':_0xdd7245[_0x80a6('0x4b')]['id']}})['then'](handleEntityNotFound(_0xd15c0f,null))[_0x80a6('0x27')](removeEntity(_0xd15c0f,null))['catch'](handleError(_0xd15c0f,null));};
\ No newline at end of file
index 20583bb..383def2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ea=['idField','FieldId','lodash','../../config/logger','api','moment','bluebird','path','rimraf','./intSalesforceField.attributes','exports','define','SalesforceField','int_salesforce_fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x57ea,0x64));var _0xa57e=function(_0x2b3100,_0x345565){_0x2b3100=_0x2b3100-0x0;var _0x59bb19=_0x57ea[_0x2b3100];return _0x59bb19;};'use strict';var _=require(_0xa57e('0x0'));var util=require('util');var logger=require(_0xa57e('0x1'))(_0xa57e('0x2'));var moment=require(_0xa57e('0x3'));var BPromise=require(_0xa57e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa57e('0x5'));var rimraf=require(_0xa57e('0x6'));var config=require('../../config/environment');var attributes=require(_0xa57e('0x7'));module[_0xa57e('0x8')]=function(_0x144d64,_0x2dd0b1){return _0x144d64[_0xa57e('0x9')](_0xa57e('0xa'),attributes,{'tableName':_0xa57e('0xb'),'paranoid':![],'indexes':[{'name':'salesforce_unique_index','fields':[_0xa57e('0xc'),_0xa57e('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8008=['lodash','util','api','bluebird','request-promise','path','rimraf','exports','define','salesforce_unique_index'];(function(_0x49d11b,_0x601f4a){var _0x34b12c=function(_0x32d77f){while(--_0x32d77f){_0x49d11b['push'](_0x49d11b['shift']());}};_0x34b12c(++_0x601f4a);}(_0x8008,0xd2));var _0x8800=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8008[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x8800('0x0'));var util=require(_0x8800('0x1'));var logger=require('../../config/logger')(_0x8800('0x2'));var moment=require('moment');var BPromise=require(_0x8800('0x3'));var rp=require(_0x8800('0x4'));var fs=require('fs');var path=require(_0x8800('0x5'));var rimraf=require(_0x8800('0x6'));var config=require('../../config/environment');var attributes=require('./intSalesforceField.attributes');module[_0x8800('0x7')]=function(_0x5e8819,_0x21e466){return _0x5e8819[_0x8800('0x8')]('SalesforceField',attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x8800('0x9'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3e1bc9c..0c11538 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9468=['error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s'];(function(_0x1c2628,_0x2a7556){var _0xf5b7b3=function(_0x47e6a){while(--_0x47e6a){_0x1c2628['push'](_0x1c2628['shift']());}};_0xf5b7b3(++_0x2a7556);}(_0x9468,0x97));var _0x8946=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0x9468[_0x9fd887];return _0x1a54ab;};'use strict';var _=require(_0x8946('0x0'));var util=require(_0x8946('0x1'));var moment=require(_0x8946('0x2'));var BPromise=require('bluebird');var rs=require(_0x8946('0x3'));var fs=require('fs');var Redis=require(_0x8946('0x4'));var db=require(_0x8946('0x5'))['db'];var utils=require(_0x8946('0x6'));var logger=require(_0x8946('0x7'))('rpc');var config=require(_0x8946('0x8'));var jayson=require(_0x8946('0x9'));var client=jayson['client'][_0x8946('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xffb0e8,_0x39caaf,_0x4edd2a){return new BPromise(function(_0x405581,_0x3132d9){return client[_0x8946('0xb')](_0xffb0e8,_0x4edd2a)[_0x8946('0xc')](function(_0xb89090){logger['info'](_0x8946('0xd'),_0x39caaf,_0x8946('0xe'));logger[_0x8946('0xf')](_0x8946('0x10'),_0x39caaf,_0x8946('0xe'),JSON['stringify'](_0xb89090));if(_0xb89090[_0x8946('0x11')]){if(_0xb89090[_0x8946('0x11')][_0x8946('0x12')]===0x1f4){logger['error']('SalesforceField,\x20%s,\x20%s',_0x39caaf,_0xb89090[_0x8946('0x11')][_0x8946('0x13')]);return _0x3132d9(_0xb89090[_0x8946('0x11')][_0x8946('0x13')]);}logger['error'](_0x8946('0xd'),_0x39caaf,_0xb89090['error'][_0x8946('0x13')]);return _0x405581(_0xb89090[_0x8946('0x11')][_0x8946('0x13')]);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x39caaf,'request\x20sent');_0x405581(_0xb89090[_0x8946('0x14')]['message']);}})['catch'](function(_0x2270a6){logger[_0x8946('0x11')](_0x8946('0xd'),_0x39caaf,_0x2270a6);_0x3132d9(_0x2270a6);});});}
\ No newline at end of file
+var _0xa71c=['request','then','request\x20sent','debug','stringify','code','error','SalesforceField,\x20%s,\x20%s','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x55daf2,_0x1b48de){var _0x1c8500=function(_0x4686b5){while(--_0x4686b5){_0x55daf2['push'](_0x55daf2['shift']());}};_0x1c8500(++_0x1b48de);}(_0xa71c,0x193));var _0xca71=function(_0x44548e,_0x3ae4cd){_0x44548e=_0x44548e-0x0;var _0x4cd439=_0xa71c[_0x44548e];return _0x4cd439;};'use strict';var _=require(_0xca71('0x0'));var util=require(_0xca71('0x1'));var moment=require('moment');var BPromise=require(_0xca71('0x2'));var rs=require(_0xca71('0x3'));var fs=require('fs');var Redis=require(_0xca71('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xca71('0x5'));var logger=require(_0xca71('0x6'))(_0xca71('0x7'));var config=require(_0xca71('0x8'));var jayson=require(_0xca71('0x9'));var client=jayson[_0xca71('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x139630,_0x5ee201,_0x6ee12c){return new BPromise(function(_0x59557a,_0x142381){return client[_0xca71('0xb')](_0x139630,_0x6ee12c)[_0xca71('0xc')](function(_0x4f2881){logger['info']('SalesforceField,\x20%s,\x20%s',_0x5ee201,_0xca71('0xd'));logger[_0xca71('0xe')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x5ee201,_0xca71('0xd'),JSON[_0xca71('0xf')](_0x4f2881));if(_0x4f2881['error']){if(_0x4f2881['error'][_0xca71('0x10')]===0x1f4){logger[_0xca71('0x11')](_0xca71('0x12'),_0x5ee201,_0x4f2881[_0xca71('0x11')][_0xca71('0x13')]);return _0x142381(_0x4f2881[_0xca71('0x11')][_0xca71('0x13')]);}logger[_0xca71('0x11')](_0xca71('0x12'),_0x5ee201,_0x4f2881['error']['message']);return _0x59557a(_0x4f2881[_0xca71('0x11')][_0xca71('0x13')]);}else{logger[_0xca71('0x14')]('SalesforceField,\x20%s,\x20%s',_0x5ee201,'request\x20sent');_0x59557a(_0x4f2881[_0xca71('0x15')][_0xca71('0x13')]);}})[_0xca71('0x16')](function(_0x1ad8d5){logger[_0xca71('0x11')](_0xca71('0x12'),_0x5ee201,_0x1ad8d5);_0x142381(_0x1ad8d5);});});}
\ No newline at end of file
index d41f7b0..29b9444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d44=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id','update','delete','multer','util','path'];(function(_0x3fc3a9,_0x404db8){var _0x4e17d1=function(_0x5c8be9){while(--_0x5c8be9){_0x3fc3a9['push'](_0x3fc3a9['shift']());}};_0x4e17d1(++_0x404db8);}(_0x6d44,0x70));var _0x46d4=function(_0x385f70,_0x3475a0){_0x385f70=_0x385f70-0x0;var _0x59057f=_0x6d44[_0x385f70];return _0x59057f;};'use strict';var multer=require(_0x46d4('0x0'));var util=require(_0x46d4('0x1'));var path=require(_0x46d4('0x2'));var timeout=require(_0x46d4('0x3'));var express=require(_0x46d4('0x4'));var router=express[_0x46d4('0x5')]();var fs_extra=require(_0x46d4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x46d4('0x7'));var config=require(_0x46d4('0x8'));var controller=require(_0x46d4('0x9'));router[_0x46d4('0xa')]('/',auth[_0x46d4('0xb')](),controller['index']);router[_0x46d4('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x46d4('0xc')]);router[_0x46d4('0xa')](_0x46d4('0xd'),auth[_0x46d4('0xb')](),controller[_0x46d4('0xe')]);router[_0x46d4('0xa')](_0x46d4('0xf'),auth[_0x46d4('0xb')](),controller[_0x46d4('0x10')]);router[_0x46d4('0x11')]('/',auth[_0x46d4('0xb')](),controller[_0x46d4('0x12')]);router[_0x46d4('0x11')](_0x46d4('0xd'),auth[_0x46d4('0xb')](),controller['addConfiguration']);router[_0x46d4('0x13')](_0x46d4('0x14'),auth['isAuthenticated'](),controller[_0x46d4('0x15')]);router[_0x46d4('0x16')](_0x46d4('0x14'),auth[_0x46d4('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf491=['../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','/:id/configurations','isAuthenticated','/:id/fields','getFields','create','post','put','/:id','update','delete','destroy','exports','multer','util','path','Router'];(function(_0x24de8e,_0x58d206){var _0x482694=function(_0x338528){while(--_0x338528){_0x24de8e['push'](_0x24de8e['shift']());}};_0x482694(++_0x58d206);}(_0xf491,0x178));var _0x1f49=function(_0x23870c,_0x28959b){_0x23870c=_0x23870c-0x0;var _0x197d1f=_0xf491[_0x23870c];return _0x197d1f;};'use strict';var multer=require(_0x1f49('0x0'));var util=require(_0x1f49('0x1'));var path=require(_0x1f49('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1f49('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1f49('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1f49('0x5'));var controller=require(_0x1f49('0x6'));router[_0x1f49('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1f49('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x1f49('0x7')](_0x1f49('0x8'),auth[_0x1f49('0x9')](),controller['getConfigurations']);router[_0x1f49('0x7')](_0x1f49('0xa'),auth[_0x1f49('0x9')](),controller[_0x1f49('0xb')]);router['post']('/',auth[_0x1f49('0x9')](),controller[_0x1f49('0xc')]);router[_0x1f49('0xd')](_0x1f49('0x8'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0x1f49('0xe')](_0x1f49('0xf'),auth[_0x1f49('0x9')](),controller[_0x1f49('0x10')]);router[_0x1f49('0x11')](_0x1f49('0xf'),auth[_0x1f49('0x9')](),controller[_0x1f49('0x12')]);module[_0x1f49('0x13')]=router;
\ No newline at end of file
index 5e3f461..5a92305 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d91=['exports','STRING','sequelize'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0x0d91,0x146));var _0x10d9=function(_0x5a86a9,_0x49f269){_0x5a86a9=_0x5a86a9-0x0;var _0x3ab2cc=_0x0d91[_0x5a86a9];return _0x3ab2cc;};'use strict';var Sequelize=require(_0x10d9('0x0'));module[_0x10d9('0x1')]={'name':{'type':Sequelize[_0x10d9('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x10d9('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x10d9('0x2')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x10d9('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x10d9('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x453b=['STRING','username','sequelize','exports'];(function(_0x5814ca,_0x3b6713){var _0xeb1833=function(_0x553de1){while(--_0x553de1){_0x5814ca['push'](_0x5814ca['shift']());}};_0xeb1833(++_0x3b6713);}(_0x453b,0x1aa));var _0xb453=function(_0x54de5d,_0x1f8b26){_0x54de5d=_0x54de5d-0x0;var _0x1b349e=_0x453b[_0x54de5d];return _0x1b349e;};'use strict';var Sequelize=require(_0xb453('0x0'));module[_0xb453('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb453('0x2')]},'username':{'type':Sequelize[_0xb453('0x2')],'unique':_0xb453('0x3')},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xb453('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xb453('0x2')],'allowNull':![]}};
\ No newline at end of file
index 679dd7f..356ce80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8cc=['value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','error','stack','name','send','index','map','ServicenowAccount','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','length','includeAll','create','body','find','params','getConfigurations','ServicenowConfiguration','addConfiguration','findOne','AccountId','Subjects','getDescriptions','channel','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','category','parent','watch_list','upon_reject','sys_updated_on','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','closed_at','cmdb_ci','impact','active','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','work_end','resolved_at','work_notes','delivery_task','work_start','assignment_group','business_stc','description','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','urgency','problem_id','company','activity_due','comments','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','sys_tags','escalation','upon_approval','correlation_id','location','password','remoteUri','substring','format','%s/api/now/table/','username','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','all','TCL:\x20_object','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','test','statusCode','Wrong\x20credentials','boolean','True','true','false','sys_choice?sysparm_query=name=incident^element=','inactive','label'];(function(_0x10714e,_0x25c2c5){var _0x2c7c19=function(_0x2845c0){while(--_0x2845c0){_0x10714e['push'](_0x10714e['shift']());}};_0x2c7c19(++_0x25c2c5);}(_0xa8cc,0xb4));var _0xca8c=function(_0x4d7378,_0x485249){_0x4d7378=_0x4d7378-0x0;var _0x499998=_0xa8cc[_0x4d7378];return _0x499998;};'use strict';var emlformat=require(_0xca8c('0x0'));var rimraf=require(_0xca8c('0x1'));var zipdir=require(_0xca8c('0x2'));var jsonpatch=require(_0xca8c('0x3'));var rp=require(_0xca8c('0x4'));var moment=require(_0xca8c('0x5'));var BPromise=require(_0xca8c('0x6'));var Mustache=require('mustache');var util=require(_0xca8c('0x7'));var path=require(_0xca8c('0x8'));var sox=require('sox');var csv=require(_0xca8c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xca8c('0xa'));var _=require(_0xca8c('0xb'));var squel=require('squel');var crypto=require(_0xca8c('0xc'));var jsforce=require(_0xca8c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xca8c('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xca8c('0xf'));var as=require(_0xca8c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xca8c('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xca8c('0x12'));var licenseUtil=require(_0xca8c('0x13'));var db=require(_0xca8c('0x14'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x100e03,_0x19dbb2){_0x19dbb2=_0x19dbb2||0xcc;return function(_0xff7ade){if(_0xff7ade){return _0x100e03[_0xca8c('0x15')](_0x19dbb2);}return _0x100e03['status'](_0x19dbb2)[_0xca8c('0x16')]();};}function respondWithResult(_0x3781a6,_0x205a5f){_0x205a5f=_0x205a5f||0xc8;return function(_0xce1a7c){if(_0xce1a7c){return _0x3781a6[_0xca8c('0x17')](_0x205a5f)[_0xca8c('0x18')](_0xce1a7c);}};}function respondWithFilteredResult(_0x31d21d,_0x9e37a0){return function(_0x49f045){if(_0x49f045){var _0xb43e18=typeof _0x9e37a0[_0xca8c('0x19')]===_0xca8c('0x1a')&&typeof _0x9e37a0[_0xca8c('0x1b')]==='undefined';var _0x338c96=_0x49f045[_0xca8c('0x1c')];var _0x5ce367=_0xb43e18?0x0:_0x9e37a0[_0xca8c('0x19')];var _0x1d549e=_0xb43e18?_0x49f045[_0xca8c('0x1c')]:_0x9e37a0['offset']+_0x9e37a0[_0xca8c('0x1b')];var _0x458e3f;if(_0x1d549e>=_0x338c96){_0x1d549e=_0x338c96;_0x458e3f=0xc8;}else{_0x458e3f=0xce;}_0x31d21d[_0xca8c('0x17')](_0x458e3f);return _0x31d21d[_0xca8c('0x1d')]('Content-Range',_0x5ce367+'-'+_0x1d549e+'/'+_0x338c96)[_0xca8c('0x18')](_0x49f045);}return null;};}function patchUpdates(_0x2ba78e){return function(_0x5a04e5){try{jsonpatch[_0xca8c('0x1e')](_0x5a04e5,_0x2ba78e,!![]);}catch(_0x53d7f0){return BPromise['reject'](_0x53d7f0);}return _0x5a04e5[_0xca8c('0x1f')]();};}function saveUpdates(_0x543270,_0x3cb001){return function(_0x25696e){if(_0x25696e){return _0x25696e[_0xca8c('0x20')](_0x543270)['then'](function(_0x11d4db){return _0x11d4db;});}return null;};}function removeEntity(_0x227c7d,_0x3ad150){return function(_0x58b9fb){if(_0x58b9fb){return _0x58b9fb['destroy']()[_0xca8c('0x21')](function(){_0x227c7d['status'](0xcc)[_0xca8c('0x16')]();});}};}function handleEntityNotFound(_0x53f782,_0x1b118a){return function(_0x1dbe2b){if(!_0x1dbe2b){_0x53f782[_0xca8c('0x15')](0x194);}return _0x1dbe2b;};}function handleError(_0x4e424,_0x3ae638){_0x3ae638=_0x3ae638||0x1f4;return function(_0x4ce15a){logger[_0xca8c('0x22')](_0x4ce15a[_0xca8c('0x23')]);if(_0x4ce15a[_0xca8c('0x24')]){delete _0x4ce15a[_0xca8c('0x24')];}_0x4e424[_0xca8c('0x17')](_0x3ae638)[_0xca8c('0x25')](_0x4ce15a);};}exports[_0xca8c('0x26')]=function(_0xa490b0,_0x256b86){var _0x3d8a3f={},_0x232d41={},_0x17ddda={'count':0x0,'rows':[]};var _0x492636=_[_0xca8c('0x27')](db[_0xca8c('0x28')][_0xca8c('0x29')],function(_0x70720e){return{'name':_0x70720e['fieldName'],'type':_0x70720e[_0xca8c('0x2a')]['key']};});_0x232d41['model']=_[_0xca8c('0x27')](_0x492636,_0xca8c('0x24'));_0x232d41[_0xca8c('0x2b')]=_[_0xca8c('0x2c')](_0xa490b0[_0xca8c('0x2b')]);_0x232d41[_0xca8c('0x2d')]=_[_0xca8c('0x2e')](_0x232d41[_0xca8c('0x2f')],_0x232d41[_0xca8c('0x2b')]);_0x3d8a3f[_0xca8c('0x30')]=_[_0xca8c('0x2e')](_0x232d41[_0xca8c('0x2f')],qs['fields'](_0xa490b0['query'][_0xca8c('0x31')]));_0x3d8a3f[_0xca8c('0x30')]=_0x3d8a3f[_0xca8c('0x30')]['length']?_0x3d8a3f['attributes']:_0x232d41['model'];if(!_0xa490b0['query'][_0xca8c('0x32')](_0xca8c('0x33'))){_0x3d8a3f[_0xca8c('0x1b')]=qs[_0xca8c('0x1b')](_0xa490b0['query']['limit']);_0x3d8a3f[_0xca8c('0x19')]=qs[_0xca8c('0x19')](_0xa490b0[_0xca8c('0x2b')]['offset']);}_0x3d8a3f[_0xca8c('0x34')]=qs['sort'](_0xa490b0['query'][_0xca8c('0x35')]);_0x3d8a3f[_0xca8c('0x36')]=qs[_0xca8c('0x2d')](_[_0xca8c('0x37')](_0xa490b0[_0xca8c('0x2b')],_0x232d41['filters']),_0x492636);if(_0xa490b0[_0xca8c('0x2b')][_0xca8c('0x38')]){_0x3d8a3f[_0xca8c('0x36')]=_[_0xca8c('0x39')](_0x3d8a3f['where'],{'$or':_[_0xca8c('0x27')](_0x492636,function(_0x27db8a){if(_0x27db8a[_0xca8c('0x2a')]!==_0xca8c('0x3a')){var _0x278783={};_0x278783[_0x27db8a['name']]={'$like':'%'+_0xa490b0[_0xca8c('0x2b')]['filter']+'%'};return _0x278783;}})});}_0x3d8a3f=_[_0xca8c('0x39')]({},_0x3d8a3f,_0xa490b0[_0xca8c('0x3b')]);var _0x442765={'where':_0x3d8a3f['where']};return db['ServicenowAccount'][_0xca8c('0x1c')](_0x442765)[_0xca8c('0x21')](function(_0x215030){_0x17ddda[_0xca8c('0x1c')]=_0x215030;if(_0xa490b0[_0xca8c('0x2b')]['includeAll']){_0x3d8a3f[_0xca8c('0x3c')]=[{'all':!![]}];}return db[_0xca8c('0x28')][_0xca8c('0x3d')](_0x3d8a3f);})[_0xca8c('0x21')](function(_0x590822){_0x17ddda[_0xca8c('0x3e')]=_0x590822;return _0x17ddda;})['then'](respondWithFilteredResult(_0x256b86,_0x3d8a3f))[_0xca8c('0x3f')](handleError(_0x256b86,null));};exports[_0xca8c('0x40')]=function(_0x2bf706,_0x5265bf){var _0x1f202d={'raw':![],'where':{'id':_0x2bf706['params']['id']}},_0xe4a041={};_0xe4a041[_0xca8c('0x2f')]=_[_0xca8c('0x2c')](db[_0xca8c('0x28')][_0xca8c('0x29')]);_0xe4a041['query']=_[_0xca8c('0x2c')](_0x2bf706[_0xca8c('0x2b')]);_0xe4a041[_0xca8c('0x2d')]=_['intersection'](_0xe4a041['model'],_0xe4a041[_0xca8c('0x2b')]);_0x1f202d['attributes']=_[_0xca8c('0x2e')](_0xe4a041[_0xca8c('0x2f')],qs[_0xca8c('0x31')](_0x2bf706[_0xca8c('0x2b')][_0xca8c('0x31')]));_0x1f202d[_0xca8c('0x30')]=_0x1f202d[_0xca8c('0x30')][_0xca8c('0x41')]?_0x1f202d[_0xca8c('0x30')]:_0xe4a041[_0xca8c('0x2f')];if(_0x2bf706['query'][_0xca8c('0x42')]){_0x1f202d[_0xca8c('0x3c')]=[{'all':!![]}];}_0x1f202d=_['merge']({},_0x1f202d,_0x2bf706[_0xca8c('0x3b')]);return db[_0xca8c('0x28')]['find'](_0x1f202d)['then'](handleEntityNotFound(_0x5265bf,null))['then'](respondWithResult(_0x5265bf,null))['catch'](handleError(_0x5265bf,null));};exports[_0xca8c('0x43')]=function(_0x2dc04b,_0xd804d){return db['ServicenowAccount'][_0xca8c('0x43')](_0x2dc04b[_0xca8c('0x44')],{})[_0xca8c('0x21')](respondWithResult(_0xd804d,0xc9))[_0xca8c('0x3f')](handleError(_0xd804d,null));};exports['update']=function(_0x2377b4,_0x160f21){if(_0x2377b4[_0xca8c('0x44')]['id']){delete _0x2377b4[_0xca8c('0x44')]['id'];}return db[_0xca8c('0x28')][_0xca8c('0x45')]({'where':{'id':_0x2377b4[_0xca8c('0x46')]['id']}})[_0xca8c('0x21')](handleEntityNotFound(_0x160f21,null))[_0xca8c('0x21')](saveUpdates(_0x2377b4[_0xca8c('0x44')],null))[_0xca8c('0x21')](respondWithResult(_0x160f21,null))[_0xca8c('0x3f')](handleError(_0x160f21,null));};exports['destroy']=function(_0x4fa7c8,_0x48db41){return db[_0xca8c('0x28')][_0xca8c('0x45')]({'where':{'id':_0x4fa7c8[_0xca8c('0x46')]['id']}})['then'](handleEntityNotFound(_0x48db41,null))['then'](removeEntity(_0x48db41,null))[_0xca8c('0x3f')](handleError(_0x48db41,null));};exports[_0xca8c('0x47')]=function(_0x12cff7,_0x50950e,_0x183f0b){var _0x1bbe1b={};var _0x7fb958={};var _0x976681;var _0x30d328;return db[_0xca8c('0x28')]['findOne']({'where':{'id':_0x12cff7[_0xca8c('0x46')]['id']}})[_0xca8c('0x21')](handleEntityNotFound(_0x50950e,null))[_0xca8c('0x21')](function(_0x391160){if(_0x391160){_0x976681=_0x391160;_0x7fb958[_0xca8c('0x2f')]=_[_0xca8c('0x2c')](db[_0xca8c('0x48')][_0xca8c('0x29')]);_0x7fb958['query']=_[_0xca8c('0x2c')](_0x12cff7[_0xca8c('0x2b')]);_0x7fb958[_0xca8c('0x2d')]=_['intersection'](_0x7fb958[_0xca8c('0x2f')],_0x7fb958[_0xca8c('0x2b')]);_0x1bbe1b['attributes']=_[_0xca8c('0x2e')](_0x7fb958[_0xca8c('0x2f')],qs[_0xca8c('0x31')](_0x12cff7[_0xca8c('0x2b')][_0xca8c('0x31')]));_0x1bbe1b[_0xca8c('0x30')]=_0x1bbe1b[_0xca8c('0x30')][_0xca8c('0x41')]?_0x1bbe1b['attributes']:_0x7fb958[_0xca8c('0x2f')];_0x1bbe1b[_0xca8c('0x34')]=qs[_0xca8c('0x35')](_0x12cff7[_0xca8c('0x2b')][_0xca8c('0x35')]);_0x1bbe1b[_0xca8c('0x36')]=qs['filters'](_[_0xca8c('0x37')](_0x12cff7[_0xca8c('0x2b')],_0x7fb958['filters']));if(_0x12cff7[_0xca8c('0x2b')][_0xca8c('0x38')]){_0x1bbe1b[_0xca8c('0x36')]=_[_0xca8c('0x39')](_0x1bbe1b['where'],{'$or':_[_0xca8c('0x27')](_0x1bbe1b[_0xca8c('0x30')],function(_0x18c266){var _0x8a1af7={};_0x8a1af7[_0x18c266]={'$like':'%'+_0x12cff7[_0xca8c('0x2b')][_0xca8c('0x38')]+'%'};return _0x8a1af7;})});}_0x1bbe1b=_[_0xca8c('0x39')]({},_0x1bbe1b,_0x12cff7['options']);return _0x976681['getConfigurations'](_0x1bbe1b);}})[_0xca8c('0x21')](function(_0x3a3fc6){if(_0x3a3fc6){_0x30d328=_0x3a3fc6[_0xca8c('0x41')];if(!_0x12cff7['query']['hasOwnProperty']('nolimit')){_0x1bbe1b['limit']=qs[_0xca8c('0x1b')](_0x12cff7[_0xca8c('0x2b')][_0xca8c('0x1b')]);_0x1bbe1b[_0xca8c('0x19')]=qs[_0xca8c('0x19')](_0x12cff7[_0xca8c('0x2b')][_0xca8c('0x19')]);}return _0x976681['getConfigurations'](_0x1bbe1b);}})[_0xca8c('0x21')](function(_0x9d8628){if(_0x9d8628){return _0x9d8628?{'count':_0x30d328,'rows':_0x9d8628}:null;}})[_0xca8c('0x21')](respondWithResult(_0x50950e,null))[_0xca8c('0x3f')](handleError(_0x50950e,null));};exports[_0xca8c('0x49')]=function(_0x84932a,_0x3b494e,_0x14c8a1){if(_0x84932a[_0xca8c('0x44')]['id']){delete _0x84932a['body']['id'];}return db['ServicenowAccount'][_0xca8c('0x4a')]({'where':{'id':_0x84932a[_0xca8c('0x46')]['id']}})[_0xca8c('0x21')](handleEntityNotFound(_0x3b494e,null))[_0xca8c('0x21')](function(_0x24ffc2){if(_0x24ffc2){_0x84932a['body'][_0xca8c('0x4b')]=_0x24ffc2['id'];_0x84932a[_0xca8c('0x44')][_0xca8c('0x4c')]=integrations['getSubjects'](_0x84932a[_0xca8c('0x44')]['channel'],_0x84932a[_0xca8c('0x44')][_0xca8c('0x2a')]);_0x84932a['body']['Descriptions']=integrations[_0xca8c('0x4d')](_0x84932a[_0xca8c('0x44')][_0xca8c('0x4e')],_0x84932a[_0xca8c('0x44')]['type']);return db[_0xca8c('0x48')]['create'](_0x84932a[_0xca8c('0x44')],{'include':[{'model':db[_0xca8c('0x4f')],'as':_0xca8c('0x4c')},{'model':db[_0xca8c('0x4f')],'as':_0xca8c('0x50')}]});}return null;})[_0xca8c('0x21')](respondWithResult(_0x3b494e,null))[_0xca8c('0x3f')](handleError(_0x3b494e,null));};exports[_0xca8c('0x51')]=function(_0x252a72,_0x133d0a,_0x5dd718){var _0x388a95=[_0xca8c('0x52'),_0xca8c('0x53'),_0xca8c('0x54'),_0xca8c('0x55'),_0xca8c('0x56'),_0xca8c('0x57'),_0xca8c('0x58'),_0xca8c('0x59'),_0xca8c('0x5a')];var _0x548119=[_0xca8c('0x5b'),_0xca8c('0x52'),'caused_by',_0xca8c('0x5c'),_0xca8c('0x5d'),_0xca8c('0x5e'),'child_incidents',_0xca8c('0x53'),_0xca8c('0x5f'),_0xca8c('0x60'),_0xca8c('0x61'),_0xca8c('0x62'),_0xca8c('0x63'),_0xca8c('0x64'),_0xca8c('0x65'),_0xca8c('0x66'),_0xca8c('0x67'),_0xca8c('0x68'),_0xca8c('0x54'),_0xca8c('0x34'),'calendar_stc',_0xca8c('0x69'),_0xca8c('0x6a'),'delivery_plan',_0xca8c('0x6b'),_0xca8c('0x6c'),'work_notes_list',_0xca8c('0x6d'),_0xca8c('0x6e'),_0xca8c('0x6f'),_0xca8c('0x70'),_0xca8c('0x71'),_0xca8c('0x72'),_0xca8c('0x73'),_0xca8c('0x74'),'group_list',_0xca8c('0x75'),'reopened_time',_0xca8c('0x76'),'caller_id','approval_set',_0xca8c('0x55'),_0xca8c('0x77'),'short_description',_0xca8c('0x56'),'correlation_display',_0xca8c('0x78'),_0xca8c('0x79'),_0xca8c('0x7a'),_0xca8c('0x7b'),'additional_assignee_list',_0xca8c('0x7c'),'calendar_duration','notify',_0xca8c('0x7d'),_0xca8c('0x7e'),_0xca8c('0x7f'),_0xca8c('0x80'),_0xca8c('0x81'),_0xca8c('0x82'),_0xca8c('0x83'),'reopened_by',_0xca8c('0x58'),_0xca8c('0x84'),_0xca8c('0x85'),_0xca8c('0x86'),'reassignment_count',_0xca8c('0x87'),'assigned_to',_0xca8c('0x59'),_0xca8c('0x88'),_0xca8c('0x89'),_0xca8c('0x8a'),_0xca8c('0x8b'),_0xca8c('0x8c'),_0xca8c('0x8d'),'reopen_count',_0xca8c('0x8e'),_0xca8c('0x8f'),_0xca8c('0x90'),_0xca8c('0x91'),_0xca8c('0x92'),'category'];var _0x33131c='';var _0x261dfc='';var _0x5d2933=[];var _0x17e160='';var _0x338a2b='';var _0xab18cd=[];var _0x317c89='';var _0x56cd4f='';var _0x1bf477={};var _0x4aabbd='';return db[_0xca8c('0x28')][_0xca8c('0x4a')]({'where':{'id':_0x252a72['params']['id']},'attributes':['id','username',_0xca8c('0x93'),'email',_0xca8c('0x94'),'serverUrl']})[_0xca8c('0x21')](handleEntityNotFound(_0x133d0a,null))[_0xca8c('0x21')](function(_0x136645){if(_0x136645){_0x4aabbd=_0x136645[_0xca8c('0x94')];var _0x112907=_0x4aabbd['slice'](-0x1);if(_0x112907==='/'){_0x4aabbd=_0x4aabbd[_0xca8c('0x95')](0x0,_0x4aabbd['lastIndexOf'](_0x112907));}_0x56cd4f=util[_0xca8c('0x96')]('%s/api/now/doc/table/schema/',_0x4aabbd);_0x317c89=util[_0xca8c('0x96')](_0xca8c('0x97'),_0x4aabbd);_0x1bf477={'user':_0x136645[_0xca8c('0x98')],'pass':_0x136645['password']};var _0x334859={'method':_0xca8c('0x99'),'uri':_0x56cd4f+_0xca8c('0x9a'),'auth':_0x1bf477,'json':!![]};return rp(_0x334859);}})['then'](function(_0x197508){if(_0x197508[_0xca8c('0x9b')][_0xca8c('0x41')]>0x0){_0x33131c=_0x197508[_0xca8c('0x9b')];}console[_0xca8c('0x9c')](_0xca8c('0x9d'),_0x33131c);_0xab18cd=[];_0x261dfc=Object[_0xca8c('0x9e')]([],_0x33131c);_[_0xca8c('0x9f')](_0x261dfc,function(_0x2bf349){return!_0x388a95['includes'](_0x2bf349[_0xca8c('0x24')]);});_0x261dfc[_0xca8c('0xa0')](function(_0x247600){var _0x45a131=createFieldObject(_0x317c89,_0x1bf477,_0x247600[_0xca8c('0xa1')],_0x247600[_0xca8c('0x24')],_0x247600['label'],![]);_0xab18cd['push'](_0x45a131);});return Promise[_0xca8c('0xa2')](_0xab18cd);})[_0xca8c('0x21')](function(_0x1ff06c){_0x5d2933=_0x1ff06c;_0x17e160=Object['assign']([],_0x33131c);console[_0xca8c('0x9c')](_0xca8c('0xa3'),_0x33131c);_[_0xca8c('0x9f')](_0x17e160,function(_0xf2f36){return _0x548119[_0xca8c('0xa4')](_0xf2f36['name']);});console[_0xca8c('0x9c')](_0xca8c('0xa5'),_0x17e160);_0xab18cd=[];_0x17e160['forEach'](function(_0x25dea8){var _0x12c564=createFieldObject(_0x317c89,_0x1bf477,_0x25dea8[_0xca8c('0xa1')],_0x25dea8[_0xca8c('0x24')],_0x25dea8['label'],!![]);_0xab18cd[_0xca8c('0xa6')](_0x12c564);});return Promise[_0xca8c('0xa2')](_0xab18cd);})['then'](function(_0x45a37c){_0x338a2b=_0x45a37c;var _0x42ccc4=_0x5d2933[_0xca8c('0xa7')](_0x338a2b);return{'count':_0x42ccc4[_0xca8c('0x41')],'rows':_0x42ccc4};})[_0xca8c('0x21')](respondWithResult(_0x133d0a,null))['catch'](function(_0x1a3d50){console[_0xca8c('0x9c')]('ServiceNow\x20error:\x20'+_0x1a3d50);var _0x4d8077=_0x252a72[_0xca8c('0x2b')][_0xca8c('0xa8')]?0x1f4:_0x1a3d50[_0xca8c('0xa9')]||0x1f4;logger[_0xca8c('0x22')](_0x1a3d50[_0xca8c('0x23')]);delete _0x1a3d50[_0xca8c('0x24')];if(_0x4d8077===0x191){_0x4d8077=0x190;}_0x133d0a[_0xca8c('0x17')](_0x4d8077)[_0xca8c('0x25')](_0x252a72[_0xca8c('0x2b')]['test']?{'message':_0xca8c('0xaa'),'statusCode':_0x1a3d50[_0xca8c('0xa9')]}:_0x1a3d50);});};function createFieldObject(_0x31ff76,_0x414040,_0x11d5c8,_0x1ba73f,_0x41378d,_0x3e2e1d){return new Promise(function(_0x1ad08c,_0x2a999e){var _0x8cbce7={'id':_0x1ba73f,'name':_0x41378d,'custom':_0x3e2e1d};if(_0x11d5c8===_0xca8c('0xab')){_0x8cbce7['options']=[{'name':_0xca8c('0xac'),'value':_0xca8c('0xad')},{'name':'False','value':_0xca8c('0xae')}];_0x1ad08c(_0x8cbce7);}else{var _0x5b7e04={'method':_0xca8c('0x99'),'uri':_0x31ff76+_0xca8c('0xaf')+_0x1ba73f,'auth':_0x414040,'json':!![]};return rp(_0x5b7e04)[_0xca8c('0x21')](function(_0x1fc6ec){var _0x41fd73=[];if(_0x1fc6ec['result'][_0xca8c('0x41')]>0x0){_0x1fc6ec[_0xca8c('0x9b')]['forEach'](function(_0x384023){if(_0x384023[_0xca8c('0xb0')]==='false'){var _0x550368={'name':_0x384023[_0xca8c('0xb1')],'value':_0x384023[_0xca8c('0xb2')]};_0x41fd73[_0xca8c('0xa6')](_0x550368);}});}_0x8cbce7[_0xca8c('0x3b')]=_0x41fd73;if(_0x8cbce7['options']['length']>0x0){_0x1ad08c(_0x8cbce7);}else{if(_0x3e2e1d==![]){_0x1ad08c();}else{_0x1ad08c(_0x8cbce7);}}});}});}
\ No newline at end of file
+var _0xdeb5=['offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','error','stack','name','index','map','ServicenowAccount','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','create','body','find','getConfigurations','findOne','params','ServicenowConfiguration','getSubjects','channel','getDescriptions','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','incident_state','severity','category','parent','caused_by','watch_list','sys_updated_on','child_incidents','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','cmdb_ci','delivery_plan','impact','work_notes_list','business_service','priority','sys_domain_path','rfc','time_worked','expected_start','opened_at','business_duration','work_end','resolved_at','caller_id','approval_set','short_description','close_code','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','reopened_by','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','comments_and_work_notes','sys_mod_count','reopen_count','escalation','upon_approval','location','username','password','email','remoteUri','slice','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','remove','includes','forEach','label','push','all','assign','log','TCL:\x20_object','concat','test','statusCode','send','Wrong\x20credentials','True','true','False','sys_choice?sysparm_query=name=incident^element=','inactive','false','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json'];(function(_0x236ed6,_0x562e24){var _0x2507e4=function(_0x1fdd4b){while(--_0x1fdd4b){_0x236ed6['push'](_0x236ed6['shift']());}};_0x2507e4(++_0x562e24);}(_0xdeb5,0x9a));var _0x5deb=function(_0x4fc01a,_0x49d35c){_0x4fc01a=_0x4fc01a-0x0;var _0x1ccf29=_0xdeb5[_0x4fc01a];return _0x1ccf29;};'use strict';var emlformat=require(_0x5deb('0x0'));var rimraf=require(_0x5deb('0x1'));var zipdir=require(_0x5deb('0x2'));var jsonpatch=require(_0x5deb('0x3'));var rp=require(_0x5deb('0x4'));var moment=require(_0x5deb('0x5'));var BPromise=require(_0x5deb('0x6'));var Mustache=require(_0x5deb('0x7'));var util=require(_0x5deb('0x8'));var path=require(_0x5deb('0x9'));var sox=require(_0x5deb('0xa'));var csv=require(_0x5deb('0xb'));var ejs=require(_0x5deb('0xc'));var fs=require('fs');var fs_extra=require(_0x5deb('0xd'));var _=require(_0x5deb('0xe'));var squel=require(_0x5deb('0xf'));var crypto=require(_0x5deb('0x10'));var jsforce=require(_0x5deb('0x11'));var deskjs=require(_0x5deb('0x12'));var toCsv=require(_0x5deb('0xb'));var querystring=require(_0x5deb('0x13'));var Papa=require(_0x5deb('0x14'));var Redis=require('ioredis');var authService=require(_0x5deb('0x15'));var qs=require(_0x5deb('0x16'));var as=require(_0x5deb('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5deb('0x18'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5deb('0x19'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5deb('0x1a'));function respondWithStatusCode(_0xaa95a7,_0x13a5f6){_0x13a5f6=_0x13a5f6||0xcc;return function(_0x4e414c){if(_0x4e414c){return _0xaa95a7[_0x5deb('0x1b')](_0x13a5f6);}return _0xaa95a7[_0x5deb('0x1c')](_0x13a5f6)[_0x5deb('0x1d')]();};}function respondWithResult(_0x4a5359,_0x19caa2){_0x19caa2=_0x19caa2||0xc8;return function(_0x1907e2){if(_0x1907e2){return _0x4a5359[_0x5deb('0x1c')](_0x19caa2)[_0x5deb('0x1e')](_0x1907e2);}};}function respondWithFilteredResult(_0x5d5c3a,_0xceaf9d){return function(_0x5c17e0){if(_0x5c17e0){var _0x59e7d5=typeof _0xceaf9d[_0x5deb('0x1f')]===_0x5deb('0x20')&&typeof _0xceaf9d[_0x5deb('0x21')]===_0x5deb('0x20');var _0x38b5ec=_0x5c17e0['count'];var _0x40d59c=_0x59e7d5?0x0:_0xceaf9d[_0x5deb('0x1f')];var _0x114edc=_0x59e7d5?_0x5c17e0[_0x5deb('0x22')]:_0xceaf9d['offset']+_0xceaf9d[_0x5deb('0x21')];var _0x4c0ad7;if(_0x114edc>=_0x38b5ec){_0x114edc=_0x38b5ec;_0x4c0ad7=0xc8;}else{_0x4c0ad7=0xce;}_0x5d5c3a[_0x5deb('0x1c')](_0x4c0ad7);return _0x5d5c3a[_0x5deb('0x23')](_0x5deb('0x24'),_0x40d59c+'-'+_0x114edc+'/'+_0x38b5ec)['json'](_0x5c17e0);}return null;};}function patchUpdates(_0x519967){return function(_0x1a64ea){try{jsonpatch[_0x5deb('0x25')](_0x1a64ea,_0x519967,!![]);}catch(_0x281b70){return BPromise['reject'](_0x281b70);}return _0x1a64ea['save']();};}function saveUpdates(_0x877d1d,_0x55be8b){return function(_0x2ffbd7){if(_0x2ffbd7){return _0x2ffbd7[_0x5deb('0x26')](_0x877d1d)[_0x5deb('0x27')](function(_0xd9a26d){return _0xd9a26d;});}return null;};}function removeEntity(_0x2a3c86,_0xf03ed6){return function(_0x30d67d){if(_0x30d67d){return _0x30d67d[_0x5deb('0x28')]()[_0x5deb('0x27')](function(){_0x2a3c86[_0x5deb('0x1c')](0xcc)[_0x5deb('0x1d')]();});}};}function handleEntityNotFound(_0x4680d8,_0x3121c8){return function(_0x5286f3){if(!_0x5286f3){_0x4680d8[_0x5deb('0x1b')](0x194);}return _0x5286f3;};}function handleError(_0x35fe0f,_0x47a4f9){_0x47a4f9=_0x47a4f9||0x1f4;return function(_0x3e4749){logger[_0x5deb('0x29')](_0x3e4749[_0x5deb('0x2a')]);if(_0x3e4749[_0x5deb('0x2b')]){delete _0x3e4749[_0x5deb('0x2b')];}_0x35fe0f[_0x5deb('0x1c')](_0x47a4f9)['send'](_0x3e4749);};}exports[_0x5deb('0x2c')]=function(_0x215066,_0x364b68){var _0x47f88d={},_0x359244={},_0x4268a3={'count':0x0,'rows':[]};var _0x4ac189=_[_0x5deb('0x2d')](db[_0x5deb('0x2e')][_0x5deb('0x2f')],function(_0x2c1edc){return{'name':_0x2c1edc[_0x5deb('0x30')],'type':_0x2c1edc['type'][_0x5deb('0x31')]};});_0x359244[_0x5deb('0x32')]=_[_0x5deb('0x2d')](_0x4ac189,_0x5deb('0x2b'));_0x359244[_0x5deb('0x33')]=_[_0x5deb('0x34')](_0x215066['query']);_0x359244['filters']=_[_0x5deb('0x35')](_0x359244[_0x5deb('0x32')],_0x359244[_0x5deb('0x33')]);_0x47f88d[_0x5deb('0x36')]=_['intersection'](_0x359244['model'],qs['fields'](_0x215066[_0x5deb('0x33')][_0x5deb('0x37')]));_0x47f88d[_0x5deb('0x36')]=_0x47f88d[_0x5deb('0x36')]['length']?_0x47f88d[_0x5deb('0x36')]:_0x359244[_0x5deb('0x32')];if(!_0x215066[_0x5deb('0x33')]['hasOwnProperty'](_0x5deb('0x38'))){_0x47f88d[_0x5deb('0x21')]=qs[_0x5deb('0x21')](_0x215066[_0x5deb('0x33')]['limit']);_0x47f88d['offset']=qs[_0x5deb('0x1f')](_0x215066['query'][_0x5deb('0x1f')]);}_0x47f88d[_0x5deb('0x39')]=qs[_0x5deb('0x3a')](_0x215066[_0x5deb('0x33')][_0x5deb('0x3a')]);_0x47f88d[_0x5deb('0x3b')]=qs[_0x5deb('0x3c')](_[_0x5deb('0x3d')](_0x215066[_0x5deb('0x33')],_0x359244['filters']),_0x4ac189);if(_0x215066[_0x5deb('0x33')][_0x5deb('0x3e')]){_0x47f88d[_0x5deb('0x3b')]=_[_0x5deb('0x3f')](_0x47f88d[_0x5deb('0x3b')],{'$or':_[_0x5deb('0x2d')](_0x4ac189,function(_0x2ebcf6){if(_0x2ebcf6[_0x5deb('0x40')]!==_0x5deb('0x41')){var _0x245b23={};_0x245b23[_0x2ebcf6[_0x5deb('0x2b')]]={'$like':'%'+_0x215066[_0x5deb('0x33')]['filter']+'%'};return _0x245b23;}})});}_0x47f88d=_[_0x5deb('0x3f')]({},_0x47f88d,_0x215066[_0x5deb('0x42')]);var _0x27b28d={'where':_0x47f88d[_0x5deb('0x3b')]};return db[_0x5deb('0x2e')][_0x5deb('0x22')](_0x27b28d)[_0x5deb('0x27')](function(_0x26eb00){_0x4268a3['count']=_0x26eb00;if(_0x215066[_0x5deb('0x33')][_0x5deb('0x43')]){_0x47f88d[_0x5deb('0x44')]=[{'all':!![]}];}return db[_0x5deb('0x2e')][_0x5deb('0x45')](_0x47f88d);})[_0x5deb('0x27')](function(_0x10f417){_0x4268a3[_0x5deb('0x46')]=_0x10f417;return _0x4268a3;})[_0x5deb('0x27')](respondWithFilteredResult(_0x364b68,_0x47f88d))[_0x5deb('0x47')](handleError(_0x364b68,null));};exports[_0x5deb('0x48')]=function(_0x55246b,_0x3f05c1){var _0x21b914={'raw':![],'where':{'id':_0x55246b['params']['id']}},_0x332281={};_0x332281['model']=_[_0x5deb('0x34')](db['ServicenowAccount'][_0x5deb('0x2f')]);_0x332281[_0x5deb('0x33')]=_[_0x5deb('0x34')](_0x55246b['query']);_0x332281[_0x5deb('0x3c')]=_[_0x5deb('0x35')](_0x332281[_0x5deb('0x32')],_0x332281[_0x5deb('0x33')]);_0x21b914['attributes']=_['intersection'](_0x332281[_0x5deb('0x32')],qs[_0x5deb('0x37')](_0x55246b[_0x5deb('0x33')][_0x5deb('0x37')]));_0x21b914[_0x5deb('0x36')]=_0x21b914[_0x5deb('0x36')][_0x5deb('0x49')]?_0x21b914[_0x5deb('0x36')]:_0x332281[_0x5deb('0x32')];if(_0x55246b['query'][_0x5deb('0x43')]){_0x21b914[_0x5deb('0x44')]=[{'all':!![]}];}_0x21b914=_[_0x5deb('0x3f')]({},_0x21b914,_0x55246b[_0x5deb('0x42')]);return db[_0x5deb('0x2e')]['find'](_0x21b914)[_0x5deb('0x27')](handleEntityNotFound(_0x3f05c1,null))[_0x5deb('0x27')](respondWithResult(_0x3f05c1,null))['catch'](handleError(_0x3f05c1,null));};exports[_0x5deb('0x4a')]=function(_0x5334de,_0xab415b){return db['ServicenowAccount'][_0x5deb('0x4a')](_0x5334de[_0x5deb('0x4b')],{})[_0x5deb('0x27')](respondWithResult(_0xab415b,0xc9))[_0x5deb('0x47')](handleError(_0xab415b,null));};exports[_0x5deb('0x26')]=function(_0x373d9a,_0x241c93){if(_0x373d9a[_0x5deb('0x4b')]['id']){delete _0x373d9a[_0x5deb('0x4b')]['id'];}return db[_0x5deb('0x2e')][_0x5deb('0x4c')]({'where':{'id':_0x373d9a['params']['id']}})[_0x5deb('0x27')](handleEntityNotFound(_0x241c93,null))['then'](saveUpdates(_0x373d9a[_0x5deb('0x4b')],null))[_0x5deb('0x27')](respondWithResult(_0x241c93,null))[_0x5deb('0x47')](handleError(_0x241c93,null));};exports['destroy']=function(_0x4a952e,_0x49fd0d){return db[_0x5deb('0x2e')]['find']({'where':{'id':_0x4a952e['params']['id']}})[_0x5deb('0x27')](handleEntityNotFound(_0x49fd0d,null))[_0x5deb('0x27')](removeEntity(_0x49fd0d,null))[_0x5deb('0x47')](handleError(_0x49fd0d,null));};exports[_0x5deb('0x4d')]=function(_0x4e05f8,_0x58e500,_0x4576de){var _0x4eae81={};var _0x29e1b0={};var _0x4819dc;var _0x2fad29;return db[_0x5deb('0x2e')][_0x5deb('0x4e')]({'where':{'id':_0x4e05f8[_0x5deb('0x4f')]['id']}})[_0x5deb('0x27')](handleEntityNotFound(_0x58e500,null))['then'](function(_0x2ffce1){if(_0x2ffce1){_0x4819dc=_0x2ffce1;_0x29e1b0[_0x5deb('0x32')]=_[_0x5deb('0x34')](db[_0x5deb('0x50')][_0x5deb('0x2f')]);_0x29e1b0[_0x5deb('0x33')]=_[_0x5deb('0x34')](_0x4e05f8[_0x5deb('0x33')]);_0x29e1b0[_0x5deb('0x3c')]=_[_0x5deb('0x35')](_0x29e1b0[_0x5deb('0x32')],_0x29e1b0[_0x5deb('0x33')]);_0x4eae81[_0x5deb('0x36')]=_[_0x5deb('0x35')](_0x29e1b0[_0x5deb('0x32')],qs['fields'](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x37')]));_0x4eae81[_0x5deb('0x36')]=_0x4eae81['attributes'][_0x5deb('0x49')]?_0x4eae81[_0x5deb('0x36')]:_0x29e1b0[_0x5deb('0x32')];_0x4eae81[_0x5deb('0x39')]=qs[_0x5deb('0x3a')](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x3a')]);_0x4eae81[_0x5deb('0x3b')]=qs[_0x5deb('0x3c')](_[_0x5deb('0x3d')](_0x4e05f8['query'],_0x29e1b0[_0x5deb('0x3c')]));if(_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x3e')]){_0x4eae81['where']=_['merge'](_0x4eae81[_0x5deb('0x3b')],{'$or':_[_0x5deb('0x2d')](_0x4eae81[_0x5deb('0x36')],function(_0x3f702b){var _0x1a6ce5={};_0x1a6ce5[_0x3f702b]={'$like':'%'+_0x4e05f8[_0x5deb('0x33')]['filter']+'%'};return _0x1a6ce5;})});}_0x4eae81=_[_0x5deb('0x3f')]({},_0x4eae81,_0x4e05f8['options']);return _0x4819dc[_0x5deb('0x4d')](_0x4eae81);}})[_0x5deb('0x27')](function(_0x2df334){if(_0x2df334){_0x2fad29=_0x2df334[_0x5deb('0x49')];if(!_0x4e05f8['query']['hasOwnProperty']('nolimit')){_0x4eae81[_0x5deb('0x21')]=qs[_0x5deb('0x21')](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x21')]);_0x4eae81[_0x5deb('0x1f')]=qs['offset'](_0x4e05f8[_0x5deb('0x33')][_0x5deb('0x1f')]);}return _0x4819dc[_0x5deb('0x4d')](_0x4eae81);}})['then'](function(_0x2cf037){if(_0x2cf037){return _0x2cf037?{'count':_0x2fad29,'rows':_0x2cf037}:null;}})[_0x5deb('0x27')](respondWithResult(_0x58e500,null))[_0x5deb('0x47')](handleError(_0x58e500,null));};exports['addConfiguration']=function(_0x64c0e8,_0x3e6e93,_0x2866f1){if(_0x64c0e8[_0x5deb('0x4b')]['id']){delete _0x64c0e8[_0x5deb('0x4b')]['id'];}return db[_0x5deb('0x2e')][_0x5deb('0x4e')]({'where':{'id':_0x64c0e8[_0x5deb('0x4f')]['id']}})['then'](handleEntityNotFound(_0x3e6e93,null))[_0x5deb('0x27')](function(_0x5088d7){if(_0x5088d7){_0x64c0e8[_0x5deb('0x4b')]['AccountId']=_0x5088d7['id'];_0x64c0e8['body']['Subjects']=integrations[_0x5deb('0x51')](_0x64c0e8['body'][_0x5deb('0x52')],_0x64c0e8[_0x5deb('0x4b')][_0x5deb('0x40')]);_0x64c0e8[_0x5deb('0x4b')]['Descriptions']=integrations[_0x5deb('0x53')](_0x64c0e8[_0x5deb('0x4b')][_0x5deb('0x52')],_0x64c0e8['body'][_0x5deb('0x40')]);return db[_0x5deb('0x50')][_0x5deb('0x4a')](_0x64c0e8['body'],{'include':[{'model':db[_0x5deb('0x54')],'as':'Subjects'},{'model':db['ServicenowField'],'as':_0x5deb('0x55')}]});}return null;})[_0x5deb('0x27')](respondWithResult(_0x3e6e93,null))['catch'](handleError(_0x3e6e93,null));};exports[_0x5deb('0x56')]=function(_0x2f94af,_0x38df9f,_0x1937a2){var _0x5119b2=[_0x5deb('0x57'),_0x5deb('0x58'),_0x5deb('0x59'),_0x5deb('0x5a'),'close_code','notify',_0x5deb('0x5b'),_0x5deb('0x5c'),_0x5deb('0x5d')];var _0x3f1ec8=[_0x5deb('0x5e'),_0x5deb('0x57'),_0x5deb('0x5f'),_0x5deb('0x60'),'upon_reject',_0x5deb('0x61'),_0x5deb('0x62'),'hold_reason','approval_history','number',_0x5deb('0x63'),_0x5deb('0x64'),_0x5deb('0x65'),_0x5deb('0x66'),_0x5deb('0x67'),_0x5deb('0x68'),_0x5deb('0x69'),_0x5deb('0x6a'),'knowledge',_0x5deb('0x39'),_0x5deb('0x6b'),'closed_at',_0x5deb('0x6c'),_0x5deb('0x6d'),_0x5deb('0x6e'),'active',_0x5deb('0x6f'),_0x5deb('0x70'),_0x5deb('0x71'),_0x5deb('0x72'),_0x5deb('0x73'),_0x5deb('0x74'),_0x5deb('0x75'),_0x5deb('0x76'),_0x5deb('0x77'),'group_list',_0x5deb('0x78'),'reopened_time',_0x5deb('0x79'),_0x5deb('0x7a'),_0x5deb('0x7b'),_0x5deb('0x5a'),'work_notes',_0x5deb('0x7c'),_0x5deb('0x7d'),_0x5deb('0x7e'),_0x5deb('0x7f'),_0x5deb('0x80'),_0x5deb('0x81'),_0x5deb('0x82'),_0x5deb('0x83'),_0x5deb('0x84'),'calendar_duration','notify',_0x5deb('0x85'),_0x5deb('0x86'),_0x5deb('0x87'),_0x5deb('0x88'),_0x5deb('0x89'),_0x5deb('0x8a'),'contact_type',_0x5deb('0x8b'),_0x5deb('0x5b'),'urgency',_0x5deb('0x8c'),_0x5deb('0x8d'),_0x5deb('0x8e'),_0x5deb('0x8f'),_0x5deb('0x90'),'severity',_0x5deb('0x91'),_0x5deb('0x92'),'approval',_0x5deb('0x93'),'due_date',_0x5deb('0x94'),_0x5deb('0x95'),'sys_tags',_0x5deb('0x96'),_0x5deb('0x97'),'correlation_id',_0x5deb('0x98'),_0x5deb('0x5d')];var _0x53976f='';var _0x5b8f39='';var _0x146b54=[];var _0x563ca3='';var _0xadfeeb='';var _0x4e567c=[];var _0x3b843d='';var _0xe7bc72='';var _0x3eda1a={};var _0x11d16e='';return db[_0x5deb('0x2e')][_0x5deb('0x4e')]({'where':{'id':_0x2f94af[_0x5deb('0x4f')]['id']},'attributes':['id',_0x5deb('0x99'),_0x5deb('0x9a'),_0x5deb('0x9b'),_0x5deb('0x9c'),'serverUrl']})[_0x5deb('0x27')](handleEntityNotFound(_0x38df9f,null))[_0x5deb('0x27')](function(_0x4121a4){if(_0x4121a4){_0x11d16e=_0x4121a4[_0x5deb('0x9c')];var _0x176746=_0x11d16e[_0x5deb('0x9d')](-0x1);if(_0x176746==='/'){_0x11d16e=_0x11d16e['substring'](0x0,_0x11d16e[_0x5deb('0x9e')](_0x176746));}_0xe7bc72=util[_0x5deb('0x9f')](_0x5deb('0xa0'),_0x11d16e);_0x3b843d=util['format'](_0x5deb('0xa1'),_0x11d16e);_0x3eda1a={'user':_0x4121a4[_0x5deb('0x99')],'pass':_0x4121a4[_0x5deb('0x9a')]};var _0xe544a7={'method':_0x5deb('0xa2'),'uri':_0xe7bc72+_0x5deb('0xa3'),'auth':_0x3eda1a,'json':!![]};return rp(_0xe544a7);}})['then'](function(_0x2a66b0){if(_0x2a66b0['result'][_0x5deb('0x49')]>0x0){_0x53976f=_0x2a66b0[_0x5deb('0xa4')];}console['log']('incident\x20table\x20objects',_0x53976f);_0x4e567c=[];_0x5b8f39=Object['assign']([],_0x53976f);_[_0x5deb('0xa5')](_0x5b8f39,function(_0x4b1f38){return!_0x5119b2[_0x5deb('0xa6')](_0x4b1f38['name']);});_0x5b8f39[_0x5deb('0xa7')](function(_0xe38b7d){var _0x35fe20=createFieldObject(_0x3b843d,_0x3eda1a,_0xe38b7d['internalType'],_0xe38b7d['name'],_0xe38b7d[_0x5deb('0xa8')],![]);_0x4e567c[_0x5deb('0xa9')](_0x35fe20);});return Promise[_0x5deb('0xaa')](_0x4e567c);})[_0x5deb('0x27')](function(_0x1c1a86){_0x146b54=_0x1c1a86;_0x563ca3=Object[_0x5deb('0xab')]([],_0x53976f);console[_0x5deb('0xac')](_0x5deb('0xad'),_0x53976f);_[_0x5deb('0xa5')](_0x563ca3,function(_0x968818){return _0x3f1ec8[_0x5deb('0xa6')](_0x968818['name']);});console[_0x5deb('0xac')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x563ca3);_0x4e567c=[];_0x563ca3[_0x5deb('0xa7')](function(_0x102bde){var _0x4b88b1=createFieldObject(_0x3b843d,_0x3eda1a,_0x102bde['internalType'],_0x102bde[_0x5deb('0x2b')],_0x102bde[_0x5deb('0xa8')],!![]);_0x4e567c[_0x5deb('0xa9')](_0x4b88b1);});return Promise[_0x5deb('0xaa')](_0x4e567c);})[_0x5deb('0x27')](function(_0x12ad08){_0xadfeeb=_0x12ad08;var _0x553050=_0x146b54[_0x5deb('0xae')](_0xadfeeb);return{'count':_0x553050['length'],'rows':_0x553050};})[_0x5deb('0x27')](respondWithResult(_0x38df9f,null))[_0x5deb('0x47')](function(_0x5c7bb5){console[_0x5deb('0xac')]('ServiceNow\x20error:\x20'+_0x5c7bb5);var _0x4619dd=_0x2f94af[_0x5deb('0x33')][_0x5deb('0xaf')]?0x1f4:_0x5c7bb5[_0x5deb('0xb0')]||0x1f4;logger[_0x5deb('0x29')](_0x5c7bb5[_0x5deb('0x2a')]);delete _0x5c7bb5[_0x5deb('0x2b')];if(_0x4619dd===0x191){_0x4619dd=0x190;}_0x38df9f[_0x5deb('0x1c')](_0x4619dd)[_0x5deb('0xb1')](_0x2f94af[_0x5deb('0x33')][_0x5deb('0xaf')]?{'message':_0x5deb('0xb2'),'statusCode':_0x5c7bb5[_0x5deb('0xb0')]}:_0x5c7bb5);});};function createFieldObject(_0x45e847,_0x743b8,_0x5471a6,_0x2b6335,_0x128f76,_0x243733){return new Promise(function(_0x268819,_0x47ae46){var _0x15d968={'id':_0x2b6335,'name':_0x128f76,'custom':_0x243733};if(_0x5471a6==='boolean'){_0x15d968['options']=[{'name':_0x5deb('0xb3'),'value':_0x5deb('0xb4')},{'name':_0x5deb('0xb5'),'value':'false'}];_0x268819(_0x15d968);}else{var _0x37aecc={'method':_0x5deb('0xa2'),'uri':_0x45e847+_0x5deb('0xb6')+_0x2b6335,'auth':_0x743b8,'json':!![]};return rp(_0x37aecc)[_0x5deb('0x27')](function(_0x48605d){var _0x388abd=[];if(_0x48605d[_0x5deb('0xa4')]['length']>0x0){_0x48605d[_0x5deb('0xa4')][_0x5deb('0xa7')](function(_0x34840e){if(_0x34840e[_0x5deb('0xb7')]===_0x5deb('0xb8')){var _0x229830={'name':_0x34840e[_0x5deb('0xa8')],'value':_0x34840e['value']};_0x388abd['push'](_0x229830);}});}_0x15d968[_0x5deb('0x42')]=_0x388abd;if(_0x15d968[_0x5deb('0x42')][_0x5deb('0x49')]>0x0){_0x268819(_0x15d968);}else{if(_0x243733==![]){_0x268819();}else{_0x268819(_0x15d968);}}});}});}
\ No newline at end of file
index 2583214..ef22a56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x29df20,_0x2ac0b7){var _0x182a73=function(_0x1d589a){while(--_0x1d589a){_0x29df20['push'](_0x29df20['shift']());}};_0x182a73(++_0x2ac0b7);}(_0x4975,0x86));var _0x5497=function(_0x182170,_0x422544){_0x182170=_0x182170-0x0;var _0x33a7e1=_0x4975[_0x182170];return _0x33a7e1;};'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'));var integrations=require(_0x5497('0xa'));module['exports']=function(_0x37e48d,_0x4f563d){return _0x37e48d[_0x5497('0xb')](_0x5497('0xc'),attributes,{'tableName':_0x5497('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf2ca=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','ServicenowAccount','int_servicenow_accounts','lodash','util'];(function(_0x233716,_0x346676){var _0x302298=function(_0x53d84c){while(--_0x53d84c){_0x233716['push'](_0x233716['shift']());}};_0x302298(++_0x346676);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x50c492,_0x5c1e67){_0x50c492=_0x50c492-0x0;var _0x3505a8=_0xf2ca[_0x50c492];return _0x3505a8;};'use strict';var _=require(_0xaf2c('0x0'));var util=require(_0xaf2c('0x1'));var logger=require(_0xaf2c('0x2'))('api');var moment=require(_0xaf2c('0x3'));var BPromise=require(_0xaf2c('0x4'));var rp=require(_0xaf2c('0x5'));var fs=require('fs');var path=require(_0xaf2c('0x6'));var rimraf=require(_0xaf2c('0x7'));var config=require(_0xaf2c('0x8'));var attributes=require('./intServicenowAccount.attributes');var integrations=require(_0xaf2c('0x9'));module[_0xaf2c('0xa')]=function(_0x297740,_0x1f9531){return _0x297740['define'](_0xaf2c('0xb'),attributes,{'tableName':_0xaf2c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 80864fd..9797a94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcae6=['options','where','attributes','limit','include','model','map','GetServicenowAccount','find','raw','ShowServicenowAccount','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ServicenowAccount','findAll'];(function(_0x4bd950,_0x184ed5){var _0x5dc59a=function(_0x6ff30f){while(--_0x6ff30f){_0x4bd950['push'](_0x4bd950['shift']());}};_0x5dc59a(++_0x184ed5);}(_0xcae6,0x1ae));var _0x6cae=function(_0x25701b,_0x2a6976){_0x25701b=_0x25701b-0x0;var _0x3a8a2c=_0xcae6[_0x25701b];return _0x3a8a2c;};'use strict';var _=require(_0x6cae('0x0'));var util=require(_0x6cae('0x1'));var moment=require(_0x6cae('0x2'));var BPromise=require(_0x6cae('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6cae('0x4'));var db=require(_0x6cae('0x5'))['db'];var utils=require(_0x6cae('0x6'));var logger=require('../../config/logger')(_0x6cae('0x7'));var config=require(_0x6cae('0x8'));var jayson=require(_0x6cae('0x9'));var client=jayson[_0x6cae('0xa')][_0x6cae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14a922,_0x5b7120,_0xd9fb85){return new BPromise(function(_0x33bffb,_0x469fe9){return client[_0x6cae('0xc')](_0x14a922,_0xd9fb85)[_0x6cae('0xd')](function(_0x208f8f){logger[_0x6cae('0xe')](_0x6cae('0xf'),_0x5b7120,_0x6cae('0x10'));logger[_0x6cae('0x11')](_0x6cae('0x12'),_0x5b7120,_0x6cae('0x10'),JSON['stringify'](_0x208f8f));if(_0x208f8f[_0x6cae('0x13')]){if(_0x208f8f[_0x6cae('0x13')][_0x6cae('0x14')]===0x1f4){logger[_0x6cae('0x13')](_0x6cae('0xf'),_0x5b7120,_0x208f8f[_0x6cae('0x13')][_0x6cae('0x15')]);return _0x469fe9(_0x208f8f[_0x6cae('0x13')][_0x6cae('0x15')]);}logger[_0x6cae('0x13')](_0x6cae('0xf'),_0x5b7120,_0x208f8f[_0x6cae('0x13')][_0x6cae('0x15')]);return _0x33bffb(_0x208f8f['error']['message']);}else{logger['info'](_0x6cae('0xf'),_0x5b7120,_0x6cae('0x10'));_0x33bffb(_0x208f8f[_0x6cae('0x16')][_0x6cae('0x15')]);}})[_0x6cae('0x17')](function(_0x52f36c){logger[_0x6cae('0x13')](_0x6cae('0xf'),_0x5b7120,_0x52f36c);_0x469fe9(_0x52f36c);});});}exports['GetServicenowAccount']=function(_0x3da136){var _0x3cb872=this;return new Promise(function(_0x475832,_0x1faca1){return db[_0x6cae('0x18')][_0x6cae('0x19')]({'raw':_0x3da136[_0x6cae('0x1a')]?_0x3da136[_0x6cae('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x3da136[_0x6cae('0x1a')]?_0x3da136[_0x6cae('0x1a')][_0x6cae('0x1b')]||null:null,'attributes':_0x3da136[_0x6cae('0x1a')]?_0x3da136[_0x6cae('0x1a')][_0x6cae('0x1c')]||null:null,'limit':_0x3da136[_0x6cae('0x1a')]?_0x3da136['options'][_0x6cae('0x1d')]||null:null,'include':_0x3da136['options']?_0x3da136[_0x6cae('0x1a')][_0x6cae('0x1e')]?_['map'](_0x3da136[_0x6cae('0x1a')][_0x6cae('0x1e')],function(_0x2f8b47){return{'model':db[_0x2f8b47[_0x6cae('0x1f')]],'as':_0x2f8b47['as'],'attributes':_0x2f8b47[_0x6cae('0x1c')],'include':_0x2f8b47[_0x6cae('0x1e')]?_[_0x6cae('0x20')](_0x2f8b47[_0x6cae('0x1e')],function(_0x55f644){return{'model':db[_0x55f644['model']],'as':_0x55f644['as'],'attributes':_0x55f644[_0x6cae('0x1c')],'include':_0x55f644['include']?_[_0x6cae('0x20')](_0x55f644['include'],function(_0xa0ffb4){return{'model':db[_0xa0ffb4[_0x6cae('0x1f')]],'as':_0xa0ffb4['as'],'attributes':_0xa0ffb4[_0x6cae('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6cae('0xd')](function(_0x46de5e){logger[_0x6cae('0xe')](_0x6cae('0x21'),_0x3da136);logger[_0x6cae('0x11')](_0x6cae('0x21'),_0x3da136,JSON['stringify'](_0x46de5e));_0x475832(_0x46de5e);})[_0x6cae('0x17')](function(_0x4dc3cb){logger['error'](_0x6cae('0x21'),_0x4dc3cb[_0x6cae('0x15')],_0x3da136);_0x1faca1(_0x3cb872[_0x6cae('0x13')](0x1f4,_0x4dc3cb[_0x6cae('0x15')]));});});};exports['ShowServicenowAccount']=function(_0x5c83e1){var _0xa80a9c=this;return new Promise(function(_0x21ec87,_0x24a756){return db[_0x6cae('0x18')][_0x6cae('0x22')]({'raw':_0x5c83e1[_0x6cae('0x1a')]?_0x5c83e1[_0x6cae('0x1a')][_0x6cae('0x23')]===undefined?!![]:![]:!![],'where':_0x5c83e1['options']?_0x5c83e1['options'][_0x6cae('0x1b')]||null:null,'attributes':_0x5c83e1[_0x6cae('0x1a')]?_0x5c83e1[_0x6cae('0x1a')][_0x6cae('0x1c')]||null:null,'include':_0x5c83e1[_0x6cae('0x1a')]?_0x5c83e1[_0x6cae('0x1a')]['include']?_[_0x6cae('0x20')](_0x5c83e1[_0x6cae('0x1a')][_0x6cae('0x1e')],function(_0x4bd33e){return{'model':db[_0x4bd33e[_0x6cae('0x1f')]],'as':_0x4bd33e['as'],'attributes':_0x4bd33e[_0x6cae('0x1c')],'include':_0x4bd33e[_0x6cae('0x1e')]?_[_0x6cae('0x20')](_0x4bd33e['include'],function(_0x45773d){return{'model':db[_0x45773d[_0x6cae('0x1f')]],'as':_0x45773d['as'],'attributes':_0x45773d[_0x6cae('0x1c')],'include':_0x45773d[_0x6cae('0x1e')]?_[_0x6cae('0x20')](_0x45773d['include'],function(_0x2c6171){return{'model':db[_0x2c6171[_0x6cae('0x1f')]],'as':_0x2c6171['as'],'attributes':_0x2c6171[_0x6cae('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6cae('0xd')](function(_0xaee04){logger[_0x6cae('0xe')](_0x6cae('0x24'),_0x5c83e1);logger[_0x6cae('0x11')](_0x6cae('0x24'),_0x5c83e1,JSON[_0x6cae('0x25')](_0xaee04));_0x21ec87(_0xaee04);})[_0x6cae('0x17')](function(_0x47cf89){logger[_0x6cae('0x13')]('ShowServicenowAccount',_0x47cf89[_0x6cae('0x15')],_0x5c83e1);_0x24a756(_0xa80a9c['error'](0x1f4,_0x47cf89[_0x6cae('0x15')]));});});};
\ No newline at end of file
+var _0x9a6e=['find','ShowServicenowAccount','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','ServicenowAccount,\x20%s,\x20%s','request\x20sent','error','message','catch','GetServicenowAccount','ServicenowAccount','options','raw','where','attributes','include','map','model','debug','stringify'];(function(_0x29859f,_0x2f7896){var _0x3a4118=function(_0x724cc7){while(--_0x724cc7){_0x29859f['push'](_0x29859f['shift']());}};_0x3a4118(++_0x2f7896);}(_0x9a6e,0xdb));var _0xe9a6=function(_0x422be2,_0x1c439e){_0x422be2=_0x422be2-0x0;var _0x1b820e=_0x9a6e[_0x422be2];return _0x1b820e;};'use strict';var _=require(_0xe9a6('0x0'));var util=require(_0xe9a6('0x1'));var moment=require('moment');var BPromise=require(_0xe9a6('0x2'));var rs=require(_0xe9a6('0x3'));var fs=require('fs');var Redis=require(_0xe9a6('0x4'));var db=require(_0xe9a6('0x5'))['db'];var utils=require(_0xe9a6('0x6'));var logger=require(_0xe9a6('0x7'))('rpc');var config=require(_0xe9a6('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe9a6('0x9')][_0xe9a6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1a2ae9,_0x200263,_0x53e594){return new BPromise(function(_0xa6da24,_0xc9dece){return client['request'](_0x1a2ae9,_0x53e594)[_0xe9a6('0xb')](function(_0x168e7c){logger[_0xe9a6('0xc')](_0xe9a6('0xd'),_0x200263,_0xe9a6('0xe'));logger['debug']('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x200263,'request\x20sent',JSON['stringify'](_0x168e7c));if(_0x168e7c[_0xe9a6('0xf')]){if(_0x168e7c[_0xe9a6('0xf')]['code']===0x1f4){logger[_0xe9a6('0xf')](_0xe9a6('0xd'),_0x200263,_0x168e7c[_0xe9a6('0xf')][_0xe9a6('0x10')]);return _0xc9dece(_0x168e7c[_0xe9a6('0xf')]['message']);}logger['error'](_0xe9a6('0xd'),_0x200263,_0x168e7c['error'][_0xe9a6('0x10')]);return _0xa6da24(_0x168e7c['error'][_0xe9a6('0x10')]);}else{logger[_0xe9a6('0xc')]('ServicenowAccount,\x20%s,\x20%s',_0x200263,_0xe9a6('0xe'));_0xa6da24(_0x168e7c['result']['message']);}})[_0xe9a6('0x11')](function(_0x31d382){logger[_0xe9a6('0xf')](_0xe9a6('0xd'),_0x200263,_0x31d382);_0xc9dece(_0x31d382);});});}exports[_0xe9a6('0x12')]=function(_0x306efd){var _0x46a61=this;return new Promise(function(_0x5b31b9,_0x1c02d3){return db[_0xe9a6('0x13')]['findAll']({'raw':_0x306efd[_0xe9a6('0x14')]?_0x306efd[_0xe9a6('0x14')][_0xe9a6('0x15')]===undefined?!![]:![]:!![],'where':_0x306efd[_0xe9a6('0x14')]?_0x306efd['options'][_0xe9a6('0x16')]||null:null,'attributes':_0x306efd[_0xe9a6('0x14')]?_0x306efd[_0xe9a6('0x14')][_0xe9a6('0x17')]||null:null,'limit':_0x306efd[_0xe9a6('0x14')]?_0x306efd[_0xe9a6('0x14')]['limit']||null:null,'include':_0x306efd[_0xe9a6('0x14')]?_0x306efd['options'][_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0x306efd['options']['include'],function(_0x1cb30f){return{'model':db[_0x1cb30f['model']],'as':_0x1cb30f['as'],'attributes':_0x1cb30f[_0xe9a6('0x17')],'include':_0x1cb30f['include']?_[_0xe9a6('0x19')](_0x1cb30f['include'],function(_0xf28ba7){return{'model':db[_0xf28ba7['model']],'as':_0xf28ba7['as'],'attributes':_0xf28ba7[_0xe9a6('0x17')],'include':_0xf28ba7[_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0xf28ba7[_0xe9a6('0x18')],function(_0x5e0397){return{'model':db[_0x5e0397[_0xe9a6('0x1a')]],'as':_0x5e0397['as'],'attributes':_0x5e0397[_0xe9a6('0x17')]};}):[]};}):[]};}):[]:[]})[_0xe9a6('0xb')](function(_0x5dcb00){logger['info']('GetServicenowAccount',_0x306efd);logger[_0xe9a6('0x1b')](_0xe9a6('0x12'),_0x306efd,JSON[_0xe9a6('0x1c')](_0x5dcb00));_0x5b31b9(_0x5dcb00);})['catch'](function(_0x236838){logger['error'](_0xe9a6('0x12'),_0x236838[_0xe9a6('0x10')],_0x306efd);_0x1c02d3(_0x46a61[_0xe9a6('0xf')](0x1f4,_0x236838['message']));});});};exports['ShowServicenowAccount']=function(_0x199f42){var _0xee6637=this;return new Promise(function(_0x3a1ad9,_0x361866){return db[_0xe9a6('0x13')][_0xe9a6('0x1d')]({'raw':_0x199f42['options']?_0x199f42[_0xe9a6('0x14')][_0xe9a6('0x15')]===undefined?!![]:![]:!![],'where':_0x199f42['options']?_0x199f42['options'][_0xe9a6('0x16')]||null:null,'attributes':_0x199f42['options']?_0x199f42[_0xe9a6('0x14')][_0xe9a6('0x17')]||null:null,'include':_0x199f42[_0xe9a6('0x14')]?_0x199f42[_0xe9a6('0x14')][_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0x199f42[_0xe9a6('0x14')]['include'],function(_0x403cde){return{'model':db[_0x403cde[_0xe9a6('0x1a')]],'as':_0x403cde['as'],'attributes':_0x403cde[_0xe9a6('0x17')],'include':_0x403cde['include']?_['map'](_0x403cde[_0xe9a6('0x18')],function(_0x721f76){return{'model':db[_0x721f76['model']],'as':_0x721f76['as'],'attributes':_0x721f76['attributes'],'include':_0x721f76[_0xe9a6('0x18')]?_[_0xe9a6('0x19')](_0x721f76[_0xe9a6('0x18')],function(_0x461e90){return{'model':db[_0x461e90[_0xe9a6('0x1a')]],'as':_0x461e90['as'],'attributes':_0x461e90[_0xe9a6('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1cddd2){logger[_0xe9a6('0xc')]('ShowServicenowAccount',_0x199f42);logger[_0xe9a6('0x1b')]('ShowServicenowAccount',_0x199f42,JSON[_0xe9a6('0x1c')](_0x1cddd2));_0x3a1ad9(_0x1cddd2);})[_0xe9a6('0x11')](function(_0x100a9b){logger['error'](_0xe9a6('0x1e'),_0x100a9b['message'],_0x199f42);_0x361866(_0xee6637[_0xe9a6('0xf')](0x1f4,_0x100a9b['message']));});});};
\ No newline at end of file
index 48bfd14..ff0a560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa78a=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','put'];(function(_0x2b91c5,_0x3b6db5){var _0xbd5531=function(_0x54783d){while(--_0x54783d){_0x2b91c5['push'](_0x2b91c5['shift']());}};_0xbd5531(++_0x3b6db5);}(_0xa78a,0x18a));var _0xaa78=function(_0x2c4d09,_0x319082){_0x2c4d09=_0x2c4d09-0x0;var _0x587d64=_0xa78a[_0x2c4d09];return _0x587d64;};'use strict';var multer=require(_0xaa78('0x0'));var util=require(_0xaa78('0x1'));var path=require(_0xaa78('0x2'));var timeout=require(_0xaa78('0x3'));var express=require(_0xaa78('0x4'));var router=express['Router']();var fs_extra=require(_0xaa78('0x5'));var auth=require(_0xaa78('0x6'));var interaction=require(_0xaa78('0x7'));var config=require(_0xaa78('0x8'));var controller=require(_0xaa78('0x9'));router[_0xaa78('0xa')]('/',auth[_0xaa78('0xb')](),controller[_0xaa78('0xc')]);router[_0xaa78('0xa')](_0xaa78('0xd'),auth['isAuthenticated'](),controller[_0xaa78('0xe')]);router[_0xaa78('0xa')](_0xaa78('0xf'),auth[_0xaa78('0xb')](),controller[_0xaa78('0x10')]);router[_0xaa78('0xa')](_0xaa78('0x11'),auth[_0xaa78('0xb')](),controller[_0xaa78('0x12')]);router['get'](_0xaa78('0x13'),auth[_0xaa78('0xb')](),controller[_0xaa78('0x14')]);router['post']('/',auth[_0xaa78('0xb')](),controller['create']);router[_0xaa78('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xaa78('0x16')]);router[_0xaa78('0x17')](_0xaa78('0xd'),auth['isAuthenticated'](),controller[_0xaa78('0x18')]);module[_0xaa78('0x19')]=router;
\ No newline at end of file
+var _0x99b6=['/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index'];(function(_0x72c11f,_0xc2f446){var _0x55ac38=function(_0x3127f5){while(--_0x3127f5){_0x72c11f['push'](_0x72c11f['shift']());}};_0x55ac38(++_0xc2f446);}(_0x99b6,0x84));var _0x699b=function(_0x1bb083,_0xdf31c9){_0x1bb083=_0x1bb083-0x0;var _0x54067e=_0x99b6[_0x1bb083];return _0x54067e;};'use strict';var multer=require(_0x699b('0x0'));var util=require(_0x699b('0x1'));var path=require('path');var timeout=require(_0x699b('0x2'));var express=require('express');var router=express[_0x699b('0x3')]();var fs_extra=require(_0x699b('0x4'));var auth=require(_0x699b('0x5'));var interaction=require(_0x699b('0x6'));var config=require(_0x699b('0x7'));var controller=require(_0x699b('0x8'));router[_0x699b('0x9')]('/',auth[_0x699b('0xa')](),controller[_0x699b('0xb')]);router[_0x699b('0x9')](_0x699b('0xc'),auth['isAuthenticated'](),controller[_0x699b('0xd')]);router[_0x699b('0x9')]('/:id/fields',auth['isAuthenticated'](),controller[_0x699b('0xe')]);router[_0x699b('0x9')](_0x699b('0xf'),auth[_0x699b('0xa')](),controller[_0x699b('0x10')]);router['get'](_0x699b('0x11'),auth[_0x699b('0xa')](),controller[_0x699b('0x12')]);router[_0x699b('0x13')]('/',auth[_0x699b('0xa')](),controller[_0x699b('0x14')]);router['put'](_0x699b('0xc'),auth[_0x699b('0xa')](),controller[_0x699b('0x15')]);router['delete'](_0x699b('0xc'),auth[_0x699b('0xa')](),controller[_0x699b('0x16')]);module[_0x699b('0x17')]=router;
\ No newline at end of file
index 63ff88b..5b2f291 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8a8=['STRING','sequelize'];(function(_0x26a3fe,_0x1a5471){var _0x33f708=function(_0x468152){while(--_0x468152){_0x26a3fe['push'](_0x26a3fe['shift']());}};_0x33f708(++_0x1a5471);}(_0xc8a8,0x73));var _0x8c8a=function(_0x1627ae,_0x2aaa24){_0x1627ae=_0x1627ae-0x0;var _0x34b38f=_0xc8a8[_0x1627ae];return _0x34b38f;};'use strict';var Sequelize=require(_0x8c8a('0x0'));module['exports']={'name':{'type':Sequelize[_0x8c8a('0x1')]},'description':{'type':Sequelize[_0x8c8a('0x1')]}};
\ No newline at end of file
+var _0xbfb0=['sequelize','exports','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xbfb0,0x1b0));var _0x0bfb=function(_0x4e0026,_0x2b52b6){_0x4e0026=_0x4e0026-0x0;var _0x3f8ee7=_0xbfb0[_0x4e0026];return _0x3f8ee7;};'use strict';var Sequelize=require(_0x0bfb('0x0'));module[_0x0bfb('0x1')]={'name':{'type':Sequelize[_0x0bfb('0x2')]},'description':{'type':Sequelize[_0x0bfb('0x2')]}};
\ No newline at end of file
index 91506eb..95f0c62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7414=['map','ServicenowConfiguration','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','catch','show','params','include','create','update','body','find','getFields','findOne','ServicenowField','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','reject','then','destroy','end','error','stack','name','send','index'];(function(_0x31b5b2,_0x5ab927){var _0x364f13=function(_0x163bd0){while(--_0x163bd0){_0x31b5b2['push'](_0x31b5b2['shift']());}};_0x364f13(++_0x5ab927);}(_0x7414,0x1b6));var _0x4741=function(_0xdbdc82,_0x5cb6ae){_0xdbdc82=_0xdbdc82-0x0;var _0x631bc4=_0x7414[_0xdbdc82];return _0x631bc4;};'use strict';var emlformat=require(_0x4741('0x0'));var rimraf=require(_0x4741('0x1'));var zipdir=require(_0x4741('0x2'));var jsonpatch=require(_0x4741('0x3'));var rp=require('request-promise');var moment=require(_0x4741('0x4'));var BPromise=require(_0x4741('0x5'));var Mustache=require('mustache');var util=require(_0x4741('0x6'));var path=require(_0x4741('0x7'));var sox=require(_0x4741('0x8'));var csv=require(_0x4741('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4741('0xa'));var squel=require(_0x4741('0xb'));var crypto=require(_0x4741('0xc'));var jsforce=require(_0x4741('0xd'));var deskjs=require(_0x4741('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x4741('0xf'));var Redis=require('ioredis');var authService=require(_0x4741('0x10'));var qs=require(_0x4741('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4741('0x12'));var logger=require(_0x4741('0x13'))('api');var utils=require(_0x4741('0x14'));var config=require(_0x4741('0x15'));var licenseUtil=require(_0x4741('0x16'));var db=require(_0x4741('0x17'))['db'];function respondWithStatusCode(_0x37d0ed,_0x7c3cf7){_0x7c3cf7=_0x7c3cf7||0xcc;return function(_0x131e55){if(_0x131e55){return _0x37d0ed[_0x4741('0x18')](_0x7c3cf7);}return _0x37d0ed['status'](_0x7c3cf7)['end']();};}function respondWithResult(_0x212dd6,_0x130ae5){_0x130ae5=_0x130ae5||0xc8;return function(_0x17a739){if(_0x17a739){return _0x212dd6[_0x4741('0x19')](_0x130ae5)['json'](_0x17a739);}};}function respondWithFilteredResult(_0x289cec,_0x2d99d5){return function(_0x189ddf){if(_0x189ddf){var _0x34e12a=typeof _0x2d99d5['offset']===_0x4741('0x1a')&&typeof _0x2d99d5[_0x4741('0x1b')]==='undefined';var _0x21ab7=_0x189ddf[_0x4741('0x1c')];var _0x56c56b=_0x34e12a?0x0:_0x2d99d5[_0x4741('0x1d')];var _0x520a1f=_0x34e12a?_0x189ddf[_0x4741('0x1c')]:_0x2d99d5['offset']+_0x2d99d5[_0x4741('0x1b')];var _0x31823a;if(_0x520a1f>=_0x21ab7){_0x520a1f=_0x21ab7;_0x31823a=0xc8;}else{_0x31823a=0xce;}_0x289cec[_0x4741('0x19')](_0x31823a);return _0x289cec[_0x4741('0x1e')](_0x4741('0x1f'),_0x56c56b+'-'+_0x520a1f+'/'+_0x21ab7)[_0x4741('0x20')](_0x189ddf);}return null;};}function patchUpdates(_0x52cb77){return function(_0x831182){try{jsonpatch['apply'](_0x831182,_0x52cb77,!![]);}catch(_0x3594e2){return BPromise[_0x4741('0x21')](_0x3594e2);}return _0x831182['save']();};}function saveUpdates(_0x1a147f,_0x2358a4){return function(_0x3c7a5d){if(_0x3c7a5d){return _0x3c7a5d['update'](_0x1a147f)[_0x4741('0x22')](function(_0x11e185){return _0x11e185;});}return null;};}function removeEntity(_0x83e3a,_0x29168d){return function(_0x2b1282){if(_0x2b1282){return _0x2b1282[_0x4741('0x23')]()[_0x4741('0x22')](function(){_0x83e3a['status'](0xcc)[_0x4741('0x24')]();});}};}function handleEntityNotFound(_0x20a6f1,_0x2b31d3){return function(_0x3cc4ed){if(!_0x3cc4ed){_0x20a6f1[_0x4741('0x18')](0x194);}return _0x3cc4ed;};}function handleError(_0x257dac,_0x254c93){_0x254c93=_0x254c93||0x1f4;return function(_0x58787f){logger[_0x4741('0x25')](_0x58787f[_0x4741('0x26')]);if(_0x58787f[_0x4741('0x27')]){delete _0x58787f[_0x4741('0x27')];}_0x257dac[_0x4741('0x19')](_0x254c93)[_0x4741('0x28')](_0x58787f);};}exports[_0x4741('0x29')]=function(_0x301500,_0x47e5eb){var _0x511eac={},_0x53e7f7={},_0x6858b9={'count':0x0,'rows':[]};var _0x529428=_[_0x4741('0x2a')](db[_0x4741('0x2b')][_0x4741('0x2c')],function(_0x5ea067){return{'name':_0x5ea067['fieldName'],'type':_0x5ea067[_0x4741('0x2d')][_0x4741('0x2e')]};});_0x53e7f7[_0x4741('0x2f')]=_[_0x4741('0x2a')](_0x529428,_0x4741('0x27'));_0x53e7f7[_0x4741('0x30')]=_[_0x4741('0x31')](_0x301500['query']);_0x53e7f7[_0x4741('0x32')]=_[_0x4741('0x33')](_0x53e7f7[_0x4741('0x2f')],_0x53e7f7[_0x4741('0x30')]);_0x511eac[_0x4741('0x34')]=_[_0x4741('0x33')](_0x53e7f7[_0x4741('0x2f')],qs[_0x4741('0x35')](_0x301500['query']['fields']));_0x511eac[_0x4741('0x34')]=_0x511eac[_0x4741('0x34')][_0x4741('0x36')]?_0x511eac[_0x4741('0x34')]:_0x53e7f7[_0x4741('0x2f')];if(!_0x301500['query'][_0x4741('0x37')](_0x4741('0x38'))){_0x511eac[_0x4741('0x1b')]=qs['limit'](_0x301500[_0x4741('0x30')]['limit']);_0x511eac[_0x4741('0x1d')]=qs[_0x4741('0x1d')](_0x301500['query'][_0x4741('0x1d')]);}_0x511eac[_0x4741('0x39')]=qs[_0x4741('0x3a')](_0x301500[_0x4741('0x30')][_0x4741('0x3a')]);_0x511eac[_0x4741('0x3b')]=qs[_0x4741('0x32')](_['pick'](_0x301500[_0x4741('0x30')],_0x53e7f7[_0x4741('0x32')]),_0x529428);if(_0x301500[_0x4741('0x30')][_0x4741('0x3c')]){_0x511eac['where']=_['merge'](_0x511eac['where'],{'$or':_[_0x4741('0x2a')](_0x529428,function(_0x3bd3c8){if(_0x3bd3c8[_0x4741('0x2d')]!==_0x4741('0x3d')){var _0x204f5a={};_0x204f5a[_0x3bd3c8[_0x4741('0x27')]]={'$like':'%'+_0x301500[_0x4741('0x30')][_0x4741('0x3c')]+'%'};return _0x204f5a;}})});}_0x511eac=_[_0x4741('0x3e')]({},_0x511eac,_0x301500[_0x4741('0x3f')]);var _0x4a05bb={'where':_0x511eac['where']};return db['ServicenowConfiguration']['count'](_0x4a05bb)[_0x4741('0x22')](function(_0x16ed5e){_0x6858b9[_0x4741('0x1c')]=_0x16ed5e;if(_0x301500[_0x4741('0x30')][_0x4741('0x40')]){_0x511eac['include']=[{'all':!![]}];}return db['ServicenowConfiguration'][_0x4741('0x41')](_0x511eac);})['then'](function(_0xe34862){_0x6858b9['rows']=_0xe34862;return _0x6858b9;})['then'](respondWithFilteredResult(_0x47e5eb,_0x511eac))[_0x4741('0x42')](handleError(_0x47e5eb,null));};exports[_0x4741('0x43')]=function(_0x45c0e0,_0x22faca){var _0x4a1ebc={'raw':![],'where':{'id':_0x45c0e0[_0x4741('0x44')]['id']}},_0x5b10ff={};_0x5b10ff['model']=_[_0x4741('0x31')](db[_0x4741('0x2b')][_0x4741('0x2c')]);_0x5b10ff[_0x4741('0x30')]=_['keys'](_0x45c0e0[_0x4741('0x30')]);_0x5b10ff[_0x4741('0x32')]=_[_0x4741('0x33')](_0x5b10ff[_0x4741('0x2f')],_0x5b10ff['query']);_0x4a1ebc[_0x4741('0x34')]=_[_0x4741('0x33')](_0x5b10ff[_0x4741('0x2f')],qs[_0x4741('0x35')](_0x45c0e0[_0x4741('0x30')]['fields']));_0x4a1ebc[_0x4741('0x34')]=_0x4a1ebc['attributes']['length']?_0x4a1ebc['attributes']:_0x5b10ff[_0x4741('0x2f')];if(_0x45c0e0['query'][_0x4741('0x40')]){_0x4a1ebc[_0x4741('0x45')]=[{'all':!![]}];}_0x4a1ebc=_[_0x4741('0x3e')]({},_0x4a1ebc,_0x45c0e0[_0x4741('0x3f')]);return db[_0x4741('0x2b')]['find'](_0x4a1ebc)[_0x4741('0x22')](handleEntityNotFound(_0x22faca,null))['then'](respondWithResult(_0x22faca,null))[_0x4741('0x42')](handleError(_0x22faca,null));};exports['create']=function(_0x8cb202,_0x227226){return db[_0x4741('0x2b')][_0x4741('0x46')](_0x8cb202['body'],{})['then'](respondWithResult(_0x227226,0xc9))[_0x4741('0x42')](handleError(_0x227226,null));};exports[_0x4741('0x47')]=function(_0x531a34,_0x182086){if(_0x531a34[_0x4741('0x48')]['id']){delete _0x531a34[_0x4741('0x48')]['id'];}return db[_0x4741('0x2b')][_0x4741('0x49')]({'where':{'id':_0x531a34['params']['id']}})['then'](handleEntityNotFound(_0x182086,null))['then'](saveUpdates(_0x531a34[_0x4741('0x48')],null))[_0x4741('0x22')](respondWithResult(_0x182086,null))[_0x4741('0x42')](handleError(_0x182086,null));};exports[_0x4741('0x23')]=function(_0x28085f,_0x32f251){return db[_0x4741('0x2b')]['find']({'where':{'id':_0x28085f[_0x4741('0x44')]['id']}})['then'](handleEntityNotFound(_0x32f251,null))[_0x4741('0x22')](removeEntity(_0x32f251,null))[_0x4741('0x42')](handleError(_0x32f251,null));};exports[_0x4741('0x4a')]=function(_0x50a770,_0x34090d,_0x13a6ce){var _0x5b05b6={};var _0x5b9f88={};var _0x3ca868;var _0x1b553a;return db[_0x4741('0x2b')][_0x4741('0x4b')]({'where':{'id':_0x50a770[_0x4741('0x44')]['id']}})[_0x4741('0x22')](handleEntityNotFound(_0x34090d,null))[_0x4741('0x22')](function(_0x59cec5){if(_0x59cec5){_0x3ca868=_0x59cec5;_0x5b9f88['model']=_[_0x4741('0x31')](db[_0x4741('0x4c')][_0x4741('0x2c')]);_0x5b9f88['query']=_[_0x4741('0x31')](_0x50a770['query']);_0x5b9f88[_0x4741('0x32')]=_['intersection'](_0x5b9f88['model'],_0x5b9f88[_0x4741('0x30')]);_0x5b05b6[_0x4741('0x34')]=_[_0x4741('0x33')](_0x5b9f88[_0x4741('0x2f')],qs['fields'](_0x50a770['query'][_0x4741('0x35')]));_0x5b05b6[_0x4741('0x34')]=_0x5b05b6['attributes'][_0x4741('0x36')]?_0x5b05b6[_0x4741('0x34')]:_0x5b9f88[_0x4741('0x2f')];_0x5b05b6['order']=qs[_0x4741('0x3a')](_0x50a770[_0x4741('0x30')]['sort']);_0x5b05b6[_0x4741('0x3b')]=qs['filters'](_[_0x4741('0x4d')](_0x50a770[_0x4741('0x30')],_0x5b9f88[_0x4741('0x32')]));if(_0x50a770[_0x4741('0x30')][_0x4741('0x3c')]){_0x5b05b6['where']=_[_0x4741('0x3e')](_0x5b05b6[_0x4741('0x3b')],{'$or':_[_0x4741('0x2a')](_0x5b05b6[_0x4741('0x34')],function(_0x104750){var _0x1bb547={};_0x1bb547[_0x104750]={'$like':'%'+_0x50a770[_0x4741('0x30')]['filter']+'%'};return _0x1bb547;})});}_0x5b05b6=_[_0x4741('0x3e')]({},_0x5b05b6,_0x50a770[_0x4741('0x3f')]);return _0x3ca868['getFields'](_0x5b05b6);}})[_0x4741('0x22')](function(_0x50136c){if(_0x50136c){_0x1b553a=_0x50136c[_0x4741('0x36')];if(!_0x50a770[_0x4741('0x30')]['hasOwnProperty'](_0x4741('0x38'))){_0x5b05b6[_0x4741('0x1b')]=qs['limit'](_0x50a770[_0x4741('0x30')][_0x4741('0x1b')]);_0x5b05b6[_0x4741('0x1d')]=qs[_0x4741('0x1d')](_0x50a770[_0x4741('0x30')][_0x4741('0x1d')]);}return _0x3ca868[_0x4741('0x4a')](_0x5b05b6);}})['then'](function(_0x15a3d2){if(_0x15a3d2){return _0x15a3d2?{'count':_0x1b553a,'rows':_0x15a3d2}:null;}})['then'](respondWithResult(_0x34090d,null))[_0x4741('0x42')](handleError(_0x34090d,null));};exports['getSubjects']=function(_0x5c0298,_0x2791f6,_0x53a0b3){var _0x36b894={};var _0x386ede={};var _0x38c52c;var _0x6d2b52;return db[_0x4741('0x2b')][_0x4741('0x4b')]({'where':{'id':_0x5c0298[_0x4741('0x44')]['id']}})[_0x4741('0x22')](handleEntityNotFound(_0x2791f6,null))[_0x4741('0x22')](function(_0x1adeda){if(_0x1adeda){_0x38c52c=_0x1adeda;_0x386ede[_0x4741('0x2f')]=_[_0x4741('0x31')](db['ServicenowField'][_0x4741('0x2c')]);_0x386ede[_0x4741('0x30')]=_[_0x4741('0x31')](_0x5c0298[_0x4741('0x30')]);_0x386ede[_0x4741('0x32')]=_[_0x4741('0x33')](_0x386ede[_0x4741('0x2f')],_0x386ede[_0x4741('0x30')]);_0x36b894[_0x4741('0x34')]=_[_0x4741('0x33')](_0x386ede[_0x4741('0x2f')],qs[_0x4741('0x35')](_0x5c0298[_0x4741('0x30')][_0x4741('0x35')]));_0x36b894[_0x4741('0x34')]=_0x36b894[_0x4741('0x34')][_0x4741('0x36')]?_0x36b894[_0x4741('0x34')]:_0x386ede['model'];_0x36b894[_0x4741('0x39')]=qs[_0x4741('0x3a')](_0x5c0298['query'][_0x4741('0x3a')]);_0x36b894[_0x4741('0x3b')]=qs['filters'](_[_0x4741('0x4d')](_0x5c0298[_0x4741('0x30')],_0x386ede[_0x4741('0x32')]));if(_0x5c0298[_0x4741('0x30')][_0x4741('0x3c')]){_0x36b894[_0x4741('0x3b')]=_[_0x4741('0x3e')](_0x36b894[_0x4741('0x3b')],{'$or':_[_0x4741('0x2a')](_0x36b894[_0x4741('0x34')],function(_0x29c167){var _0x874547={};_0x874547[_0x29c167]={'$like':'%'+_0x5c0298['query'][_0x4741('0x3c')]+'%'};return _0x874547;})});}_0x36b894=_[_0x4741('0x3e')]({},_0x36b894,_0x5c0298[_0x4741('0x3f')]);return _0x38c52c[_0x4741('0x4e')](_0x36b894);}})[_0x4741('0x22')](function(_0x4d46a5){if(_0x4d46a5){_0x6d2b52=_0x4d46a5[_0x4741('0x36')];if(!_0x5c0298[_0x4741('0x30')][_0x4741('0x37')](_0x4741('0x38'))){_0x36b894['limit']=qs[_0x4741('0x1b')](_0x5c0298[_0x4741('0x30')][_0x4741('0x1b')]);_0x36b894[_0x4741('0x1d')]=qs[_0x4741('0x1d')](_0x5c0298[_0x4741('0x30')]['offset']);}return _0x38c52c[_0x4741('0x4e')](_0x36b894);}})[_0x4741('0x22')](function(_0x2b30b3){if(_0x2b30b3){return _0x2b30b3?{'count':_0x6d2b52,'rows':_0x2b30b3}:null;}})[_0x4741('0x22')](respondWithResult(_0x2791f6,null))[_0x4741('0x42')](handleError(_0x2791f6,null));};exports[_0x4741('0x4f')]=function(_0x4966d8,_0x2161a7,_0x18bc41){var _0x3dcb95={};var _0x3f8f0f={};var _0x22e0f1;var _0x131ea8;return db[_0x4741('0x2b')][_0x4741('0x4b')]({'where':{'id':_0x4966d8[_0x4741('0x44')]['id']}})['then'](handleEntityNotFound(_0x2161a7,null))[_0x4741('0x22')](function(_0x434c29){if(_0x434c29){_0x22e0f1=_0x434c29;_0x3f8f0f[_0x4741('0x2f')]=_['keys'](db[_0x4741('0x4c')][_0x4741('0x2c')]);_0x3f8f0f[_0x4741('0x30')]=_[_0x4741('0x31')](_0x4966d8[_0x4741('0x30')]);_0x3f8f0f[_0x4741('0x32')]=_['intersection'](_0x3f8f0f[_0x4741('0x2f')],_0x3f8f0f['query']);_0x3dcb95['attributes']=_[_0x4741('0x33')](_0x3f8f0f[_0x4741('0x2f')],qs[_0x4741('0x35')](_0x4966d8[_0x4741('0x30')][_0x4741('0x35')]));_0x3dcb95['attributes']=_0x3dcb95['attributes'][_0x4741('0x36')]?_0x3dcb95[_0x4741('0x34')]:_0x3f8f0f[_0x4741('0x2f')];_0x3dcb95[_0x4741('0x39')]=qs[_0x4741('0x3a')](_0x4966d8['query'][_0x4741('0x3a')]);_0x3dcb95[_0x4741('0x3b')]=qs['filters'](_['pick'](_0x4966d8[_0x4741('0x30')],_0x3f8f0f['filters']));if(_0x4966d8[_0x4741('0x30')]['filter']){_0x3dcb95['where']=_[_0x4741('0x3e')](_0x3dcb95[_0x4741('0x3b')],{'$or':_[_0x4741('0x2a')](_0x3dcb95[_0x4741('0x34')],function(_0x34d18c){var _0x5b0f7e={};_0x5b0f7e[_0x34d18c]={'$like':'%'+_0x4966d8[_0x4741('0x30')]['filter']+'%'};return _0x5b0f7e;})});}_0x3dcb95=_[_0x4741('0x3e')]({},_0x3dcb95,_0x4966d8[_0x4741('0x3f')]);return _0x22e0f1[_0x4741('0x4f')](_0x3dcb95);}})[_0x4741('0x22')](function(_0x36de92){if(_0x36de92){_0x131ea8=_0x36de92[_0x4741('0x36')];if(!_0x4966d8['query'][_0x4741('0x37')](_0x4741('0x38'))){_0x3dcb95[_0x4741('0x1b')]=qs[_0x4741('0x1b')](_0x4966d8[_0x4741('0x30')][_0x4741('0x1b')]);_0x3dcb95['offset']=qs[_0x4741('0x1d')](_0x4966d8['query']['offset']);}return _0x22e0f1[_0x4741('0x4f')](_0x3dcb95);}})[_0x4741('0x22')](function(_0x3e40f1){if(_0x3e40f1){return _0x3e40f1?{'count':_0x131ea8,'rows':_0x3e40f1}:null;}})['then'](respondWithResult(_0x2161a7,null))[_0x4741('0x42')](handleError(_0x2161a7,null));};
\ No newline at end of file
+var _0x9d5d=['moment','bluebird','mustache','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/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','sort','where','pick','filter','VIRTUAL','merge','options','ServicenowConfiguration','includeAll','include','findAll','rows','catch','show','find','update','body','params','getFields','findOne','ServicenowField','length','order','map','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0x9d5d,0xf5));var _0xd9d5=function(_0x14afc0,_0x5e8b91){_0x14afc0=_0x14afc0-0x0;var _0x5a532f=_0x9d5d[_0x14afc0];return _0x5a532f;};'use strict';var emlformat=require(_0xd9d5('0x0'));var rimraf=require(_0xd9d5('0x1'));var zipdir=require(_0xd9d5('0x2'));var jsonpatch=require(_0xd9d5('0x3'));var rp=require('request-promise');var moment=require(_0xd9d5('0x4'));var BPromise=require(_0xd9d5('0x5'));var Mustache=require(_0xd9d5('0x6'));var util=require(_0xd9d5('0x7'));var path=require(_0xd9d5('0x8'));var sox=require(_0xd9d5('0x9'));var csv=require(_0xd9d5('0xa'));var ejs=require(_0xd9d5('0xb'));var fs=require('fs');var fs_extra=require(_0xd9d5('0xc'));var _=require(_0xd9d5('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd9d5('0xe'));var deskjs=require(_0xd9d5('0xf'));var toCsv=require(_0xd9d5('0xa'));var querystring=require(_0xd9d5('0x10'));var Papa=require(_0xd9d5('0x11'));var Redis=require(_0xd9d5('0x12'));var authService=require(_0xd9d5('0x13'));var qs=require(_0xd9d5('0x14'));var as=require(_0xd9d5('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd9d5('0x16'))('api');var utils=require(_0xd9d5('0x17'));var config=require(_0xd9d5('0x18'));var licenseUtil=require(_0xd9d5('0x19'));var db=require(_0xd9d5('0x1a'))['db'];function respondWithStatusCode(_0x38acb9,_0x9edbfe){_0x9edbfe=_0x9edbfe||0xcc;return function(_0x4aa22f){if(_0x4aa22f){return _0x38acb9[_0xd9d5('0x1b')](_0x9edbfe);}return _0x38acb9[_0xd9d5('0x1c')](_0x9edbfe)[_0xd9d5('0x1d')]();};}function respondWithResult(_0x59a917,_0x5243ee){_0x5243ee=_0x5243ee||0xc8;return function(_0x543b5a){if(_0x543b5a){return _0x59a917[_0xd9d5('0x1c')](_0x5243ee)[_0xd9d5('0x1e')](_0x543b5a);}};}function respondWithFilteredResult(_0x38aac0,_0xb8190f){return function(_0x1fa6ff){if(_0x1fa6ff){var _0x2c4e96=typeof _0xb8190f[_0xd9d5('0x1f')]===_0xd9d5('0x20')&&typeof _0xb8190f[_0xd9d5('0x21')]==='undefined';var _0x65062a=_0x1fa6ff[_0xd9d5('0x22')];var _0x3e077b=_0x2c4e96?0x0:_0xb8190f[_0xd9d5('0x1f')];var _0x19f3d9=_0x2c4e96?_0x1fa6ff[_0xd9d5('0x22')]:_0xb8190f[_0xd9d5('0x1f')]+_0xb8190f[_0xd9d5('0x21')];var _0x4c5d23;if(_0x19f3d9>=_0x65062a){_0x19f3d9=_0x65062a;_0x4c5d23=0xc8;}else{_0x4c5d23=0xce;}_0x38aac0[_0xd9d5('0x1c')](_0x4c5d23);return _0x38aac0[_0xd9d5('0x23')]('Content-Range',_0x3e077b+'-'+_0x19f3d9+'/'+_0x65062a)[_0xd9d5('0x1e')](_0x1fa6ff);}return null;};}function patchUpdates(_0x4d913e){return function(_0x245638){try{jsonpatch[_0xd9d5('0x24')](_0x245638,_0x4d913e,!![]);}catch(_0x232a49){return BPromise[_0xd9d5('0x25')](_0x232a49);}return _0x245638['save']();};}function saveUpdates(_0x3a7430,_0x37b136){return function(_0xcad88c){if(_0xcad88c){return _0xcad88c['update'](_0x3a7430)[_0xd9d5('0x26')](function(_0x27f72f){return _0x27f72f;});}return null;};}function removeEntity(_0x1f9620,_0x1a9dff){return function(_0x1c1339){if(_0x1c1339){return _0x1c1339[_0xd9d5('0x27')]()[_0xd9d5('0x26')](function(){_0x1f9620['status'](0xcc)[_0xd9d5('0x1d')]();});}};}function handleEntityNotFound(_0x32098e,_0x42512b){return function(_0x54ef04){if(!_0x54ef04){_0x32098e[_0xd9d5('0x1b')](0x194);}return _0x54ef04;};}function handleError(_0x29c283,_0x777d8c){_0x777d8c=_0x777d8c||0x1f4;return function(_0x417a71){logger[_0xd9d5('0x28')](_0x417a71[_0xd9d5('0x29')]);if(_0x417a71[_0xd9d5('0x2a')]){delete _0x417a71[_0xd9d5('0x2a')];}_0x29c283[_0xd9d5('0x1c')](_0x777d8c)[_0xd9d5('0x2b')](_0x417a71);};}exports[_0xd9d5('0x2c')]=function(_0x6ccf3b,_0x49e36c){var _0x5989f4={},_0x1b02a6={},_0x39bc6e={'count':0x0,'rows':[]};var _0x212e4c=_['map'](db['ServicenowConfiguration'][_0xd9d5('0x2d')],function(_0x408bfd){return{'name':_0x408bfd[_0xd9d5('0x2e')],'type':_0x408bfd[_0xd9d5('0x2f')]['key']};});_0x1b02a6['model']=_['map'](_0x212e4c,_0xd9d5('0x2a'));_0x1b02a6[_0xd9d5('0x30')]=_[_0xd9d5('0x31')](_0x6ccf3b[_0xd9d5('0x30')]);_0x1b02a6[_0xd9d5('0x32')]=_[_0xd9d5('0x33')](_0x1b02a6[_0xd9d5('0x34')],_0x1b02a6[_0xd9d5('0x30')]);_0x5989f4[_0xd9d5('0x35')]=_['intersection'](_0x1b02a6[_0xd9d5('0x34')],qs[_0xd9d5('0x36')](_0x6ccf3b[_0xd9d5('0x30')][_0xd9d5('0x36')]));_0x5989f4[_0xd9d5('0x35')]=_0x5989f4['attributes']['length']?_0x5989f4[_0xd9d5('0x35')]:_0x1b02a6[_0xd9d5('0x34')];if(!_0x6ccf3b['query']['hasOwnProperty']('nolimit')){_0x5989f4[_0xd9d5('0x21')]=qs['limit'](_0x6ccf3b['query'][_0xd9d5('0x21')]);_0x5989f4['offset']=qs[_0xd9d5('0x1f')](_0x6ccf3b[_0xd9d5('0x30')][_0xd9d5('0x1f')]);}_0x5989f4['order']=qs[_0xd9d5('0x37')](_0x6ccf3b['query'][_0xd9d5('0x37')]);_0x5989f4[_0xd9d5('0x38')]=qs[_0xd9d5('0x32')](_[_0xd9d5('0x39')](_0x6ccf3b['query'],_0x1b02a6[_0xd9d5('0x32')]),_0x212e4c);if(_0x6ccf3b[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x5989f4[_0xd9d5('0x38')]=_['merge'](_0x5989f4[_0xd9d5('0x38')],{'$or':_['map'](_0x212e4c,function(_0x3e8c4a){if(_0x3e8c4a['type']!==_0xd9d5('0x3b')){var _0x4c82ac={};_0x4c82ac[_0x3e8c4a['name']]={'$like':'%'+_0x6ccf3b[_0xd9d5('0x30')]['filter']+'%'};return _0x4c82ac;}})});}_0x5989f4=_[_0xd9d5('0x3c')]({},_0x5989f4,_0x6ccf3b[_0xd9d5('0x3d')]);var _0x1af726={'where':_0x5989f4[_0xd9d5('0x38')]};return db[_0xd9d5('0x3e')][_0xd9d5('0x22')](_0x1af726)['then'](function(_0x4f9ce7){_0x39bc6e['count']=_0x4f9ce7;if(_0x6ccf3b['query'][_0xd9d5('0x3f')]){_0x5989f4[_0xd9d5('0x40')]=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xd9d5('0x41')](_0x5989f4);})[_0xd9d5('0x26')](function(_0xcf2cca){_0x39bc6e[_0xd9d5('0x42')]=_0xcf2cca;return _0x39bc6e;})[_0xd9d5('0x26')](respondWithFilteredResult(_0x49e36c,_0x5989f4))[_0xd9d5('0x43')](handleError(_0x49e36c,null));};exports[_0xd9d5('0x44')]=function(_0x5e3e73,_0x473a57){var _0x3fb3f1={'raw':![],'where':{'id':_0x5e3e73['params']['id']}},_0x1788a6={};_0x1788a6[_0xd9d5('0x34')]=_['keys'](db[_0xd9d5('0x3e')][_0xd9d5('0x2d')]);_0x1788a6[_0xd9d5('0x30')]=_['keys'](_0x5e3e73[_0xd9d5('0x30')]);_0x1788a6[_0xd9d5('0x32')]=_[_0xd9d5('0x33')](_0x1788a6['model'],_0x1788a6[_0xd9d5('0x30')]);_0x3fb3f1[_0xd9d5('0x35')]=_[_0xd9d5('0x33')](_0x1788a6[_0xd9d5('0x34')],qs[_0xd9d5('0x36')](_0x5e3e73[_0xd9d5('0x30')][_0xd9d5('0x36')]));_0x3fb3f1['attributes']=_0x3fb3f1[_0xd9d5('0x35')]['length']?_0x3fb3f1[_0xd9d5('0x35')]:_0x1788a6[_0xd9d5('0x34')];if(_0x5e3e73['query'][_0xd9d5('0x3f')]){_0x3fb3f1[_0xd9d5('0x40')]=[{'all':!![]}];}_0x3fb3f1=_[_0xd9d5('0x3c')]({},_0x3fb3f1,_0x5e3e73[_0xd9d5('0x3d')]);return db['ServicenowConfiguration'][_0xd9d5('0x45')](_0x3fb3f1)[_0xd9d5('0x26')](handleEntityNotFound(_0x473a57,null))[_0xd9d5('0x26')](respondWithResult(_0x473a57,null))[_0xd9d5('0x43')](handleError(_0x473a57,null));};exports['create']=function(_0x226da2,_0x121a0e){return db[_0xd9d5('0x3e')]['create'](_0x226da2['body'],{})[_0xd9d5('0x26')](respondWithResult(_0x121a0e,0xc9))[_0xd9d5('0x43')](handleError(_0x121a0e,null));};exports[_0xd9d5('0x46')]=function(_0x2dab1b,_0x29195){if(_0x2dab1b[_0xd9d5('0x47')]['id']){delete _0x2dab1b[_0xd9d5('0x47')]['id'];}return db[_0xd9d5('0x3e')][_0xd9d5('0x45')]({'where':{'id':_0x2dab1b[_0xd9d5('0x48')]['id']}})[_0xd9d5('0x26')](handleEntityNotFound(_0x29195,null))[_0xd9d5('0x26')](saveUpdates(_0x2dab1b['body'],null))[_0xd9d5('0x26')](respondWithResult(_0x29195,null))[_0xd9d5('0x43')](handleError(_0x29195,null));};exports[_0xd9d5('0x27')]=function(_0x4ec588,_0xe06382){return db[_0xd9d5('0x3e')][_0xd9d5('0x45')]({'where':{'id':_0x4ec588[_0xd9d5('0x48')]['id']}})['then'](handleEntityNotFound(_0xe06382,null))[_0xd9d5('0x26')](removeEntity(_0xe06382,null))[_0xd9d5('0x43')](handleError(_0xe06382,null));};exports[_0xd9d5('0x49')]=function(_0x1dd495,_0x410c83,_0x19ae31){var _0x1be065={};var _0x45d9cc={};var _0x2b41bf;var _0x227399;return db['ServicenowConfiguration'][_0xd9d5('0x4a')]({'where':{'id':_0x1dd495[_0xd9d5('0x48')]['id']}})[_0xd9d5('0x26')](handleEntityNotFound(_0x410c83,null))[_0xd9d5('0x26')](function(_0x50d8ec){if(_0x50d8ec){_0x2b41bf=_0x50d8ec;_0x45d9cc[_0xd9d5('0x34')]=_[_0xd9d5('0x31')](db[_0xd9d5('0x4b')][_0xd9d5('0x2d')]);_0x45d9cc['query']=_[_0xd9d5('0x31')](_0x1dd495[_0xd9d5('0x30')]);_0x45d9cc['filters']=_[_0xd9d5('0x33')](_0x45d9cc['model'],_0x45d9cc[_0xd9d5('0x30')]);_0x1be065[_0xd9d5('0x35')]=_[_0xd9d5('0x33')](_0x45d9cc['model'],qs[_0xd9d5('0x36')](_0x1dd495[_0xd9d5('0x30')]['fields']));_0x1be065[_0xd9d5('0x35')]=_0x1be065[_0xd9d5('0x35')][_0xd9d5('0x4c')]?_0x1be065[_0xd9d5('0x35')]:_0x45d9cc[_0xd9d5('0x34')];_0x1be065[_0xd9d5('0x4d')]=qs[_0xd9d5('0x37')](_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x37')]);_0x1be065[_0xd9d5('0x38')]=qs[_0xd9d5('0x32')](_[_0xd9d5('0x39')](_0x1dd495['query'],_0x45d9cc[_0xd9d5('0x32')]));if(_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x1be065[_0xd9d5('0x38')]=_[_0xd9d5('0x3c')](_0x1be065[_0xd9d5('0x38')],{'$or':_[_0xd9d5('0x4e')](_0x1be065[_0xd9d5('0x35')],function(_0x57a24c){var _0x4e709e={};_0x4e709e[_0x57a24c]={'$like':'%'+_0x1dd495[_0xd9d5('0x30')]['filter']+'%'};return _0x4e709e;})});}_0x1be065=_[_0xd9d5('0x3c')]({},_0x1be065,_0x1dd495[_0xd9d5('0x3d')]);return _0x2b41bf[_0xd9d5('0x49')](_0x1be065);}})[_0xd9d5('0x26')](function(_0x1adb33){if(_0x1adb33){_0x227399=_0x1adb33[_0xd9d5('0x4c')];if(!_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x4f')](_0xd9d5('0x50'))){_0x1be065[_0xd9d5('0x21')]=qs['limit'](_0x1dd495[_0xd9d5('0x30')][_0xd9d5('0x21')]);_0x1be065['offset']=qs['offset'](_0x1dd495['query'][_0xd9d5('0x1f')]);}return _0x2b41bf[_0xd9d5('0x49')](_0x1be065);}})[_0xd9d5('0x26')](function(_0x2a9fec){if(_0x2a9fec){return _0x2a9fec?{'count':_0x227399,'rows':_0x2a9fec}:null;}})[_0xd9d5('0x26')](respondWithResult(_0x410c83,null))[_0xd9d5('0x43')](handleError(_0x410c83,null));};exports[_0xd9d5('0x51')]=function(_0x2ece8d,_0x45ca90,_0x23f40f){var _0x51998a={};var _0x22a063={};var _0x117cac;var _0x4dcbf5;return db[_0xd9d5('0x3e')]['findOne']({'where':{'id':_0x2ece8d[_0xd9d5('0x48')]['id']}})['then'](handleEntityNotFound(_0x45ca90,null))[_0xd9d5('0x26')](function(_0x17d725){if(_0x17d725){_0x117cac=_0x17d725;_0x22a063['model']=_[_0xd9d5('0x31')](db[_0xd9d5('0x4b')]['rawAttributes']);_0x22a063[_0xd9d5('0x30')]=_[_0xd9d5('0x31')](_0x2ece8d[_0xd9d5('0x30')]);_0x22a063[_0xd9d5('0x32')]=_['intersection'](_0x22a063[_0xd9d5('0x34')],_0x22a063[_0xd9d5('0x30')]);_0x51998a[_0xd9d5('0x35')]=_['intersection'](_0x22a063[_0xd9d5('0x34')],qs[_0xd9d5('0x36')](_0x2ece8d[_0xd9d5('0x30')]['fields']));_0x51998a['attributes']=_0x51998a[_0xd9d5('0x35')][_0xd9d5('0x4c')]?_0x51998a['attributes']:_0x22a063[_0xd9d5('0x34')];_0x51998a['order']=qs[_0xd9d5('0x37')](_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x37')]);_0x51998a[_0xd9d5('0x38')]=qs[_0xd9d5('0x32')](_[_0xd9d5('0x39')](_0x2ece8d['query'],_0x22a063[_0xd9d5('0x32')]));if(_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x51998a[_0xd9d5('0x38')]=_[_0xd9d5('0x3c')](_0x51998a[_0xd9d5('0x38')],{'$or':_[_0xd9d5('0x4e')](_0x51998a[_0xd9d5('0x35')],function(_0x187934){var _0x4ea7e1={};_0x4ea7e1[_0x187934]={'$like':'%'+_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x3a')]+'%'};return _0x4ea7e1;})});}_0x51998a=_['merge']({},_0x51998a,_0x2ece8d['options']);return _0x117cac[_0xd9d5('0x51')](_0x51998a);}})[_0xd9d5('0x26')](function(_0x7fec55){if(_0x7fec55){_0x4dcbf5=_0x7fec55[_0xd9d5('0x4c')];if(!_0x2ece8d['query'][_0xd9d5('0x4f')](_0xd9d5('0x50'))){_0x51998a[_0xd9d5('0x21')]=qs[_0xd9d5('0x21')](_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x21')]);_0x51998a['offset']=qs[_0xd9d5('0x1f')](_0x2ece8d[_0xd9d5('0x30')][_0xd9d5('0x1f')]);}return _0x117cac[_0xd9d5('0x51')](_0x51998a);}})[_0xd9d5('0x26')](function(_0x3824cf){if(_0x3824cf){return _0x3824cf?{'count':_0x4dcbf5,'rows':_0x3824cf}:null;}})['then'](respondWithResult(_0x45ca90,null))['catch'](handleError(_0x45ca90,null));};exports[_0xd9d5('0x52')]=function(_0x335d93,_0x219673,_0x529626){var _0x11cbfb={};var _0x102051={};var _0x2c06e0;var _0xf33444;return db[_0xd9d5('0x3e')]['findOne']({'where':{'id':_0x335d93[_0xd9d5('0x48')]['id']}})[_0xd9d5('0x26')](handleEntityNotFound(_0x219673,null))[_0xd9d5('0x26')](function(_0x429395){if(_0x429395){_0x2c06e0=_0x429395;_0x102051['model']=_[_0xd9d5('0x31')](db['ServicenowField'][_0xd9d5('0x2d')]);_0x102051[_0xd9d5('0x30')]=_[_0xd9d5('0x31')](_0x335d93[_0xd9d5('0x30')]);_0x102051[_0xd9d5('0x32')]=_[_0xd9d5('0x33')](_0x102051[_0xd9d5('0x34')],_0x102051[_0xd9d5('0x30')]);_0x11cbfb['attributes']=_['intersection'](_0x102051['model'],qs['fields'](_0x335d93[_0xd9d5('0x30')]['fields']));_0x11cbfb[_0xd9d5('0x35')]=_0x11cbfb[_0xd9d5('0x35')][_0xd9d5('0x4c')]?_0x11cbfb[_0xd9d5('0x35')]:_0x102051[_0xd9d5('0x34')];_0x11cbfb[_0xd9d5('0x4d')]=qs[_0xd9d5('0x37')](_0x335d93[_0xd9d5('0x30')]['sort']);_0x11cbfb[_0xd9d5('0x38')]=qs['filters'](_['pick'](_0x335d93[_0xd9d5('0x30')],_0x102051['filters']));if(_0x335d93[_0xd9d5('0x30')][_0xd9d5('0x3a')]){_0x11cbfb[_0xd9d5('0x38')]=_[_0xd9d5('0x3c')](_0x11cbfb['where'],{'$or':_[_0xd9d5('0x4e')](_0x11cbfb[_0xd9d5('0x35')],function(_0x38d6fb){var _0x565e38={};_0x565e38[_0x38d6fb]={'$like':'%'+_0x335d93[_0xd9d5('0x30')][_0xd9d5('0x3a')]+'%'};return _0x565e38;})});}_0x11cbfb=_[_0xd9d5('0x3c')]({},_0x11cbfb,_0x335d93[_0xd9d5('0x3d')]);return _0x2c06e0[_0xd9d5('0x52')](_0x11cbfb);}})['then'](function(_0x1a156d){if(_0x1a156d){_0xf33444=_0x1a156d[_0xd9d5('0x4c')];if(!_0x335d93[_0xd9d5('0x30')][_0xd9d5('0x4f')]('nolimit')){_0x11cbfb[_0xd9d5('0x21')]=qs['limit'](_0x335d93[_0xd9d5('0x30')]['limit']);_0x11cbfb[_0xd9d5('0x1f')]=qs[_0xd9d5('0x1f')](_0x335d93[_0xd9d5('0x30')]['offset']);}return _0x2c06e0[_0xd9d5('0x52')](_0x11cbfb);}})[_0xd9d5('0x26')](function(_0x123994){if(_0x123994){return _0x123994?{'count':_0xf33444,'rows':_0x123994}:null;}})[_0xd9d5('0x26')](respondWithResult(_0x219673,null))[_0xd9d5('0x43')](handleError(_0x219673,null));};
\ No newline at end of file
index de585c6..d326a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1e8=['lodash','../../config/logger','bluebird','request-promise','path','rimraf','exports','define','int_servicenow_configurations'];(function(_0x519cf0,_0xb4d587){var _0xaa8512=function(_0x114126){while(--_0x114126){_0x519cf0['push'](_0x519cf0['shift']());}};_0xaa8512(++_0xb4d587);}(_0xe1e8,0x1cb));var _0x8e1e=function(_0x2ba867,_0x125479){_0x2ba867=_0x2ba867-0x0;var _0x482e5d=_0xe1e8[_0x2ba867];return _0x482e5d;};'use strict';var _=require(_0x8e1e('0x0'));var util=require('util');var logger=require(_0x8e1e('0x1'))('api');var moment=require('moment');var BPromise=require(_0x8e1e('0x2'));var rp=require(_0x8e1e('0x3'));var fs=require('fs');var path=require(_0x8e1e('0x4'));var rimraf=require(_0x8e1e('0x5'));var config=require('../../config/environment');var attributes=require('./intServicenowConfiguration.attributes');module[_0x8e1e('0x6')]=function(_0xf371b5,_0x13c945){return _0xf371b5[_0x8e1e('0x7')]('ServicenowConfiguration',attributes,{'tableName':_0x8e1e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x68b7=['request-promise','path','rimraf','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','int_servicenow_configurations','lodash','../../config/logger','api','moment'];(function(_0x19196a,_0x4c7f3e){var _0x4c196d=function(_0xf4cf49){while(--_0xf4cf49){_0x19196a['push'](_0x19196a['shift']());}};_0x4c196d(++_0x4c7f3e);}(_0x68b7,0x8c));var _0x768b=function(_0x27c3bc,_0x54632d){_0x27c3bc=_0x27c3bc-0x0;var _0x2d756a=_0x68b7[_0x27c3bc];return _0x2d756a;};'use strict';var _=require(_0x768b('0x0'));var util=require('util');var logger=require(_0x768b('0x1'))(_0x768b('0x2'));var moment=require(_0x768b('0x3'));var BPromise=require('bluebird');var rp=require(_0x768b('0x4'));var fs=require('fs');var path=require(_0x768b('0x5'));var rimraf=require(_0x768b('0x6'));var config=require('../../config/environment');var attributes=require(_0x768b('0x7'));module[_0x768b('0x8')]=function(_0x18aaaa,_0x31aba4){return _0x18aaaa[_0x768b('0x9')](_0x768b('0xa'),attributes,{'tableName':_0x768b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8fffa91..46a3d6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a42=['info','result','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','error','message'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4a42,0x158));var _0x24a4=function(_0x3b38d1,_0x57fcdf){_0x3b38d1=_0x3b38d1-0x0;var _0x93a789=_0x4a42[_0x3b38d1];return _0x93a789;};'use strict';var _=require(_0x24a4('0x0'));var util=require(_0x24a4('0x1'));var moment=require(_0x24a4('0x2'));var BPromise=require(_0x24a4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x24a4('0x4'))['db'];var utils=require(_0x24a4('0x5'));var logger=require(_0x24a4('0x6'))(_0x24a4('0x7'));var config=require(_0x24a4('0x8'));var jayson=require(_0x24a4('0x9'));var client=jayson[_0x24a4('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1e2876,_0x27228f,_0x1b04a1){return new BPromise(function(_0x4e53e5,_0x48eab4){return client['request'](_0x1e2876,_0x1b04a1)[_0x24a4('0xb')](function(_0x32d144){logger['info'](_0x24a4('0xc'),_0x27228f,'request\x20sent');logger['debug']('ServicenowConfiguration,\x20%s,\x20%s,\x20%s',_0x27228f,_0x24a4('0xd'),JSON['stringify'](_0x32d144));if(_0x32d144[_0x24a4('0xe')]){if(_0x32d144['error']['code']===0x1f4){logger[_0x24a4('0xe')](_0x24a4('0xc'),_0x27228f,_0x32d144[_0x24a4('0xe')][_0x24a4('0xf')]);return _0x48eab4(_0x32d144[_0x24a4('0xe')][_0x24a4('0xf')]);}logger[_0x24a4('0xe')](_0x24a4('0xc'),_0x27228f,_0x32d144[_0x24a4('0xe')][_0x24a4('0xf')]);return _0x4e53e5(_0x32d144[_0x24a4('0xe')]['message']);}else{logger[_0x24a4('0x10')](_0x24a4('0xc'),_0x27228f,'request\x20sent');_0x4e53e5(_0x32d144[_0x24a4('0x11')][_0x24a4('0xf')]);}})['catch'](function(_0x3ab6d9){logger[_0x24a4('0xe')](_0x24a4('0xc'),_0x27228f,_0x3ab6d9);_0x48eab4(_0x3ab6d9);});});}
\ No newline at end of file
+var _0xafca=['http','request','then','info','ServicenowConfiguration,\x20%s,\x20%s','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client'];(function(_0x3a7a34,_0x4b8cd5){var _0x371b54=function(_0x275439){while(--_0x275439){_0x3a7a34['push'](_0x3a7a34['shift']());}};_0x371b54(++_0x4b8cd5);}(_0xafca,0x1ef));var _0xaafc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xafca[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaafc('0x0'));var util=require('util');var moment=require(_0xaafc('0x1'));var BPromise=require(_0xaafc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaafc('0x3'))['db'];var utils=require(_0xaafc('0x4'));var logger=require(_0xaafc('0x5'))(_0xaafc('0x6'));var config=require(_0xaafc('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xaafc('0x8')][_0xaafc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x978cf0,_0x29d3ec,_0x83ea82){return new BPromise(function(_0x2cf865,_0xd953fb){return client[_0xaafc('0xa')](_0x978cf0,_0x83ea82)[_0xaafc('0xb')](function(_0x318181){logger[_0xaafc('0xc')](_0xaafc('0xd'),_0x29d3ec,'request\x20sent');logger['debug'](_0xaafc('0xe'),_0x29d3ec,'request\x20sent',JSON[_0xaafc('0xf')](_0x318181));if(_0x318181['error']){if(_0x318181[_0xaafc('0x10')]['code']===0x1f4){logger[_0xaafc('0x10')](_0xaafc('0xd'),_0x29d3ec,_0x318181[_0xaafc('0x10')][_0xaafc('0x11')]);return _0xd953fb(_0x318181[_0xaafc('0x10')][_0xaafc('0x11')]);}logger[_0xaafc('0x10')](_0xaafc('0xd'),_0x29d3ec,_0x318181[_0xaafc('0x10')][_0xaafc('0x11')]);return _0x2cf865(_0x318181[_0xaafc('0x10')]['message']);}else{logger[_0xaafc('0xc')](_0xaafc('0xd'),_0x29d3ec,_0xaafc('0x12'));_0x2cf865(_0x318181[_0xaafc('0x13')][_0xaafc('0x11')]);}})[_0xaafc('0x14')](function(_0x1f46e8){logger[_0xaafc('0x10')](_0xaafc('0xd'),_0x29d3ec,_0x1f46e8);_0xd953fb(_0x1f46e8);});});}
\ No newline at end of file
index ae365a5..d973246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fdf=['../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x487d56,_0x1d4a80){var _0x3f409f=function(_0x212b88){while(--_0x212b88){_0x487d56['push'](_0x487d56['shift']());}};_0x3f409f(++_0x1d4a80);}(_0x1fdf,0x12b));var _0xf1fd=function(_0x84c858,_0x32c06a){_0x84c858=_0x84c858-0x0;var _0x566333=_0x1fdf[_0x84c858];return _0x566333;};'use strict';var multer=require('multer');var util=require(_0xf1fd('0x0'));var path=require(_0xf1fd('0x1'));var timeout=require(_0xf1fd('0x2'));var express=require(_0xf1fd('0x3'));var router=express['Router']();var fs_extra=require(_0xf1fd('0x4'));var auth=require(_0xf1fd('0x5'));var interaction=require(_0xf1fd('0x6'));var config=require(_0xf1fd('0x7'));var controller=require('./intServicenowField.controller');router[_0xf1fd('0x8')]('/',auth[_0xf1fd('0x9')](),controller['index']);router[_0xf1fd('0x8')](_0xf1fd('0xa'),auth[_0xf1fd('0x9')](),controller[_0xf1fd('0xb')]);router[_0xf1fd('0xc')]('/',auth[_0xf1fd('0x9')](),controller[_0xf1fd('0xd')]);router[_0xf1fd('0xe')]('/:id',auth[_0xf1fd('0x9')](),controller[_0xf1fd('0xf')]);router[_0xf1fd('0x10')](_0xf1fd('0xa'),auth[_0xf1fd('0x9')](),controller['destroy']);module[_0xf1fd('0x11')]=router;
\ No newline at end of file
+var _0x30a8=['index','get','/:id','show','post','put','update','delete','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','isAuthenticated'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x30a8,0x171));var _0x830a=function(_0x1e6ab8,_0x216121){_0x1e6ab8=_0x1e6ab8-0x0;var _0x4a3c76=_0x30a8[_0x1e6ab8];return _0x4a3c76;};'use strict';var multer=require(_0x830a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x830a('0x1'));var express=require(_0x830a('0x2'));var router=express[_0x830a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x830a('0x4'));var interaction=require(_0x830a('0x5'));var config=require(_0x830a('0x6'));var controller=require(_0x830a('0x7'));router['get']('/',auth[_0x830a('0x8')](),controller[_0x830a('0x9')]);router[_0x830a('0xa')](_0x830a('0xb'),auth['isAuthenticated'](),controller[_0x830a('0xc')]);router[_0x830a('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x830a('0xe')](_0x830a('0xb'),auth[_0x830a('0x8')](),controller[_0x830a('0xf')]);router[_0x830a('0x10')](_0x830a('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x830a('0x11')]=router;
\ No newline at end of file
index 72c2e75..4131ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc30=['exports','string','variable','customVariable','keyValue','picklist','STRING','ENUM','BOOLEAN','sequelize'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xbc30,0xef));var _0x0bc3=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xbc30[_0x4b055c];return _0x4b62bb;};'use strict';var Sequelize=require(_0x0bc3('0x0'));module[_0x0bc3('0x1')]={'type':{'type':Sequelize['ENUM'](_0x0bc3('0x2'),_0x0bc3('0x3'),_0x0bc3('0x4'),_0x0bc3('0x5'),_0x0bc3('0x6')),'defaultValue':_0x0bc3('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x0bc3('0x7')]},'keyType':{'type':Sequelize[_0x0bc3('0x8')](_0x0bc3('0x2'),'variable',_0x0bc3('0x4'))},'keyContent':{'type':Sequelize[_0x0bc3('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x0bc3('0x7')]},'customField':{'type':Sequelize[_0x0bc3('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcb24=['customVariable','keyValue','picklist','STRING','variable','BOOLEAN','exports','ENUM','string'];(function(_0x572743,_0x2cc13c){var _0x3abb61=function(_0x47d6fb){while(--_0x47d6fb){_0x572743['push'](_0x572743['shift']());}};_0x3abb61(++_0x2cc13c);}(_0xcb24,0xb1));var _0x4cb2=function(_0x26ad08,_0x784432){_0x26ad08=_0x26ad08-0x0;var _0xfeebfb=_0xcb24[_0x26ad08];return _0xfeebfb;};'use strict';var Sequelize=require('sequelize');module[_0x4cb2('0x0')]={'type':{'type':Sequelize[_0x4cb2('0x1')](_0x4cb2('0x2'),'variable',_0x4cb2('0x3'),_0x4cb2('0x4'),_0x4cb2('0x5')),'defaultValue':_0x4cb2('0x2')},'content':{'type':Sequelize[_0x4cb2('0x6')]},'key':{'type':Sequelize[_0x4cb2('0x6')]},'keyType':{'type':Sequelize[_0x4cb2('0x1')](_0x4cb2('0x2'),_0x4cb2('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x4cb2('0x6')]},'idField':{'type':Sequelize[_0x4cb2('0x6')]},'nameField':{'type':Sequelize[_0x4cb2('0x6')]},'customField':{'type':Sequelize[_0x4cb2('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4cb2('0x6')]}};
\ No newline at end of file
index da4bbc6..fcf54ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd340=['sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','rawAttributes','find','catch','create','body','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','ServicenowField','fieldName','key','model','keys','query','intersection','fields','attributes','length','hasOwnProperty','order'];(function(_0x17925d,_0x46543f){var _0x5492b7=function(_0x413f0b){while(--_0x413f0b){_0x17925d['push'](_0x17925d['shift']());}};_0x5492b7(++_0x46543f);}(_0xd340,0x14b));var _0x0d34=function(_0x38f712,_0x51d3e4){_0x38f712=_0x38f712-0x0;var _0x54fdaf=_0xd340[_0x38f712];return _0x54fdaf;};'use strict';var emlformat=require(_0x0d34('0x0'));var rimraf=require(_0x0d34('0x1'));var zipdir=require(_0x0d34('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0d34('0x3'));var moment=require(_0x0d34('0x4'));var BPromise=require(_0x0d34('0x5'));var Mustache=require(_0x0d34('0x6'));var util=require(_0x0d34('0x7'));var path=require(_0x0d34('0x8'));var sox=require(_0x0d34('0x9'));var csv=require(_0x0d34('0xa'));var ejs=require(_0x0d34('0xb'));var fs=require('fs');var fs_extra=require(_0x0d34('0xc'));var _=require(_0x0d34('0xd'));var squel=require(_0x0d34('0xe'));var crypto=require(_0x0d34('0xf'));var jsforce=require(_0x0d34('0x10'));var deskjs=require(_0x0d34('0x11'));var toCsv=require(_0x0d34('0xa'));var querystring=require('querystring');var Papa=require(_0x0d34('0x12'));var Redis=require('ioredis');var authService=require(_0x0d34('0x13'));var qs=require(_0x0d34('0x14'));var as=require(_0x0d34('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0d34('0x16'))(_0x0d34('0x17'));var utils=require(_0x0d34('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0d34('0x19'))['db'];function respondWithStatusCode(_0x675de6,_0x48ff57){_0x48ff57=_0x48ff57||0xcc;return function(_0x1d8ae2){if(_0x1d8ae2){return _0x675de6[_0x0d34('0x1a')](_0x48ff57);}return _0x675de6[_0x0d34('0x1b')](_0x48ff57)[_0x0d34('0x1c')]();};}function respondWithResult(_0x30c666,_0x26d628){_0x26d628=_0x26d628||0xc8;return function(_0x1948d7){if(_0x1948d7){return _0x30c666[_0x0d34('0x1b')](_0x26d628)[_0x0d34('0x1d')](_0x1948d7);}};}function respondWithFilteredResult(_0xedca15,_0x3466b3){return function(_0x1435dc){if(_0x1435dc){var _0x567110=typeof _0x3466b3['offset']===_0x0d34('0x1e')&&typeof _0x3466b3['limit']==='undefined';var _0x3442e8=_0x1435dc[_0x0d34('0x1f')];var _0x293037=_0x567110?0x0:_0x3466b3[_0x0d34('0x20')];var _0x2bb45d=_0x567110?_0x1435dc[_0x0d34('0x1f')]:_0x3466b3[_0x0d34('0x20')]+_0x3466b3[_0x0d34('0x21')];var _0x568766;if(_0x2bb45d>=_0x3442e8){_0x2bb45d=_0x3442e8;_0x568766=0xc8;}else{_0x568766=0xce;}_0xedca15['status'](_0x568766);return _0xedca15[_0x0d34('0x22')](_0x0d34('0x23'),_0x293037+'-'+_0x2bb45d+'/'+_0x3442e8)['json'](_0x1435dc);}return null;};}function patchUpdates(_0x3e640c){return function(_0x203b63){try{jsonpatch[_0x0d34('0x24')](_0x203b63,_0x3e640c,!![]);}catch(_0x25f335){return BPromise[_0x0d34('0x25')](_0x25f335);}return _0x203b63[_0x0d34('0x26')]();};}function saveUpdates(_0xfca73e,_0x290922){return function(_0x1aa972){if(_0x1aa972){return _0x1aa972[_0x0d34('0x27')](_0xfca73e)[_0x0d34('0x28')](function(_0x17f0b8){return _0x17f0b8;});}return null;};}function removeEntity(_0x3c6e19,_0x1a85bc){return function(_0x45497a){if(_0x45497a){return _0x45497a['destroy']()[_0x0d34('0x28')](function(){_0x3c6e19[_0x0d34('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4616fb,_0x3e10dc){return function(_0x100d4a){if(!_0x100d4a){_0x4616fb[_0x0d34('0x1a')](0x194);}return _0x100d4a;};}function handleError(_0x490e04,_0xd7e052){_0xd7e052=_0xd7e052||0x1f4;return function(_0x54d568){logger[_0x0d34('0x29')](_0x54d568[_0x0d34('0x2a')]);if(_0x54d568[_0x0d34('0x2b')]){delete _0x54d568[_0x0d34('0x2b')];}_0x490e04[_0x0d34('0x1b')](_0xd7e052)[_0x0d34('0x2c')](_0x54d568);};}exports[_0x0d34('0x2d')]=function(_0x1664bd,_0x3301a3){var _0x373dda={},_0x525513={},_0x24bca6={'count':0x0,'rows':[]};var _0x3e6105=_[_0x0d34('0x2e')](db[_0x0d34('0x2f')]['rawAttributes'],function(_0x5d5eeb){return{'name':_0x5d5eeb[_0x0d34('0x30')],'type':_0x5d5eeb['type'][_0x0d34('0x31')]};});_0x525513[_0x0d34('0x32')]=_[_0x0d34('0x2e')](_0x3e6105,_0x0d34('0x2b'));_0x525513['query']=_[_0x0d34('0x33')](_0x1664bd[_0x0d34('0x34')]);_0x525513['filters']=_[_0x0d34('0x35')](_0x525513['model'],_0x525513['query']);_0x373dda['attributes']=_[_0x0d34('0x35')](_0x525513[_0x0d34('0x32')],qs[_0x0d34('0x36')](_0x1664bd[_0x0d34('0x34')][_0x0d34('0x36')]));_0x373dda[_0x0d34('0x37')]=_0x373dda[_0x0d34('0x37')][_0x0d34('0x38')]?_0x373dda[_0x0d34('0x37')]:_0x525513[_0x0d34('0x32')];if(!_0x1664bd[_0x0d34('0x34')][_0x0d34('0x39')]('nolimit')){_0x373dda[_0x0d34('0x21')]=qs[_0x0d34('0x21')](_0x1664bd[_0x0d34('0x34')][_0x0d34('0x21')]);_0x373dda[_0x0d34('0x20')]=qs[_0x0d34('0x20')](_0x1664bd['query'][_0x0d34('0x20')]);}_0x373dda[_0x0d34('0x3a')]=qs[_0x0d34('0x3b')](_0x1664bd[_0x0d34('0x34')][_0x0d34('0x3b')]);_0x373dda[_0x0d34('0x3c')]=qs[_0x0d34('0x3d')](_[_0x0d34('0x3e')](_0x1664bd['query'],_0x525513[_0x0d34('0x3d')]),_0x3e6105);if(_0x1664bd[_0x0d34('0x34')]['filter']){_0x373dda['where']=_['merge'](_0x373dda[_0x0d34('0x3c')],{'$or':_['map'](_0x3e6105,function(_0x43346a){if(_0x43346a['type']!==_0x0d34('0x3f')){var _0x58251d={};_0x58251d[_0x43346a[_0x0d34('0x2b')]]={'$like':'%'+_0x1664bd[_0x0d34('0x34')][_0x0d34('0x40')]+'%'};return _0x58251d;}})});}_0x373dda=_[_0x0d34('0x41')]({},_0x373dda,_0x1664bd[_0x0d34('0x42')]);var _0x55011d={'where':_0x373dda[_0x0d34('0x3c')]};return db[_0x0d34('0x2f')][_0x0d34('0x1f')](_0x55011d)['then'](function(_0x467020){_0x24bca6[_0x0d34('0x1f')]=_0x467020;if(_0x1664bd[_0x0d34('0x34')][_0x0d34('0x43')]){_0x373dda[_0x0d34('0x44')]=[{'all':!![]}];}return db['ServicenowField'][_0x0d34('0x45')](_0x373dda);})[_0x0d34('0x28')](function(_0x33d998){_0x24bca6[_0x0d34('0x46')]=_0x33d998;return _0x24bca6;})[_0x0d34('0x28')](respondWithFilteredResult(_0x3301a3,_0x373dda))['catch'](handleError(_0x3301a3,null));};exports['show']=function(_0x47c1aa,_0x5eb3b4){var _0x5db42a={'raw':!![],'where':{'id':_0x47c1aa['params']['id']}},_0x53658a={};_0x53658a[_0x0d34('0x32')]=_[_0x0d34('0x33')](db[_0x0d34('0x2f')][_0x0d34('0x47')]);_0x53658a[_0x0d34('0x34')]=_['keys'](_0x47c1aa['query']);_0x53658a['filters']=_[_0x0d34('0x35')](_0x53658a[_0x0d34('0x32')],_0x53658a[_0x0d34('0x34')]);_0x5db42a['attributes']=_[_0x0d34('0x35')](_0x53658a[_0x0d34('0x32')],qs[_0x0d34('0x36')](_0x47c1aa[_0x0d34('0x34')]['fields']));_0x5db42a[_0x0d34('0x37')]=_0x5db42a[_0x0d34('0x37')][_0x0d34('0x38')]?_0x5db42a[_0x0d34('0x37')]:_0x53658a[_0x0d34('0x32')];if(_0x47c1aa[_0x0d34('0x34')][_0x0d34('0x43')]){_0x5db42a[_0x0d34('0x44')]=[{'all':!![]}];}_0x5db42a=_[_0x0d34('0x41')]({},_0x5db42a,_0x47c1aa[_0x0d34('0x42')]);return db[_0x0d34('0x2f')][_0x0d34('0x48')](_0x5db42a)[_0x0d34('0x28')](handleEntityNotFound(_0x5eb3b4,null))['then'](respondWithResult(_0x5eb3b4,null))[_0x0d34('0x49')](handleError(_0x5eb3b4,null));};exports[_0x0d34('0x4a')]=function(_0x566f49,_0x23305f){return db['ServicenowField'][_0x0d34('0x4a')](_0x566f49[_0x0d34('0x4b')],{})['then'](respondWithResult(_0x23305f,0xc9))[_0x0d34('0x49')](handleError(_0x23305f,null));};exports[_0x0d34('0x27')]=function(_0x406df6,_0x55758f){if(_0x406df6[_0x0d34('0x4b')]['id']){delete _0x406df6[_0x0d34('0x4b')]['id'];}return db[_0x0d34('0x2f')]['find']({'where':{'id':_0x406df6[_0x0d34('0x4c')]['id']}})['then'](handleEntityNotFound(_0x55758f,null))[_0x0d34('0x28')](saveUpdates(_0x406df6['body'],null))[_0x0d34('0x28')](respondWithResult(_0x55758f,null))[_0x0d34('0x49')](handleError(_0x55758f,null));};exports[_0x0d34('0x4d')]=function(_0x2c5772,_0x15b47c){return db[_0x0d34('0x2f')][_0x0d34('0x48')]({'where':{'id':_0x2c5772[_0x0d34('0x4c')]['id']}})[_0x0d34('0x28')](handleEntityNotFound(_0x15b47c,null))['then'](removeEntity(_0x15b47c,null))[_0x0d34('0x49')](handleError(_0x15b47c,null));};
\ No newline at end of file
+var _0x15df=['nolimit','order','sort','filters','filter','where','VIRTUAL','ServicenowField','include','findAll','rows','catch','params','includeAll','merge','options','find','create','body','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x15df,0xa9));var _0xf15d=function(_0x12f1ed,_0x6588f5){_0x12f1ed=_0x12f1ed-0x0;var _0x10c1bb=_0x15df[_0x12f1ed];return _0x10c1bb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf15d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf15d('0x1'));var rp=require('request-promise');var moment=require(_0xf15d('0x2'));var BPromise=require(_0xf15d('0x3'));var Mustache=require(_0xf15d('0x4'));var util=require(_0xf15d('0x5'));var path=require(_0xf15d('0x6'));var sox=require(_0xf15d('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf15d('0x8'));var _=require(_0xf15d('0x9'));var squel=require(_0xf15d('0xa'));var crypto=require('crypto');var jsforce=require(_0xf15d('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xf15d('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf15d('0xd'));var authService=require(_0xf15d('0xe'));var qs=require(_0xf15d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf15d('0x10'));var logger=require(_0xf15d('0x11'))(_0xf15d('0x12'));var utils=require(_0xf15d('0x13'));var config=require(_0xf15d('0x14'));var licenseUtil=require(_0xf15d('0x15'));var db=require(_0xf15d('0x16'))['db'];function respondWithStatusCode(_0x20c85d,_0x17f078){_0x17f078=_0x17f078||0xcc;return function(_0x4abec9){if(_0x4abec9){return _0x20c85d[_0xf15d('0x17')](_0x17f078);}return _0x20c85d[_0xf15d('0x18')](_0x17f078)[_0xf15d('0x19')]();};}function respondWithResult(_0x29258a,_0x54f37d){_0x54f37d=_0x54f37d||0xc8;return function(_0x2bb603){if(_0x2bb603){return _0x29258a['status'](_0x54f37d)['json'](_0x2bb603);}};}function respondWithFilteredResult(_0x569703,_0xb01775){return function(_0x363d4f){if(_0x363d4f){var _0xbc86c=typeof _0xb01775[_0xf15d('0x1a')]===_0xf15d('0x1b')&&typeof _0xb01775[_0xf15d('0x1c')]===_0xf15d('0x1b');var _0x4ada27=_0x363d4f[_0xf15d('0x1d')];var _0x278080=_0xbc86c?0x0:_0xb01775[_0xf15d('0x1a')];var _0x3fc3b3=_0xbc86c?_0x363d4f[_0xf15d('0x1d')]:_0xb01775['offset']+_0xb01775['limit'];var _0x35ba91;if(_0x3fc3b3>=_0x4ada27){_0x3fc3b3=_0x4ada27;_0x35ba91=0xc8;}else{_0x35ba91=0xce;}_0x569703[_0xf15d('0x18')](_0x35ba91);return _0x569703['set'](_0xf15d('0x1e'),_0x278080+'-'+_0x3fc3b3+'/'+_0x4ada27)[_0xf15d('0x1f')](_0x363d4f);}return null;};}function patchUpdates(_0x46bcc8){return function(_0x4a67c8){try{jsonpatch[_0xf15d('0x20')](_0x4a67c8,_0x46bcc8,!![]);}catch(_0x19c9cc){return BPromise[_0xf15d('0x21')](_0x19c9cc);}return _0x4a67c8[_0xf15d('0x22')]();};}function saveUpdates(_0x3b8761,_0x13af6d){return function(_0x4917e7){if(_0x4917e7){return _0x4917e7[_0xf15d('0x23')](_0x3b8761)[_0xf15d('0x24')](function(_0x36ae54){return _0x36ae54;});}return null;};}function removeEntity(_0x56450e,_0x5558e6){return function(_0x2a04ca){if(_0x2a04ca){return _0x2a04ca[_0xf15d('0x25')]()[_0xf15d('0x24')](function(){_0x56450e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5cfb6d,_0x577cd7){return function(_0x49768f){if(!_0x49768f){_0x5cfb6d[_0xf15d('0x17')](0x194);}return _0x49768f;};}function handleError(_0x4be581,_0x25ee8e){_0x25ee8e=_0x25ee8e||0x1f4;return function(_0x31df39){logger[_0xf15d('0x26')](_0x31df39[_0xf15d('0x27')]);if(_0x31df39[_0xf15d('0x28')]){delete _0x31df39[_0xf15d('0x28')];}_0x4be581['status'](_0x25ee8e)[_0xf15d('0x29')](_0x31df39);};}exports[_0xf15d('0x2a')]=function(_0xf72a92,_0x1506e2){var _0x2227ce={},_0x464201={},_0x82698c={'count':0x0,'rows':[]};var _0x18c179=_[_0xf15d('0x2b')](db['ServicenowField'][_0xf15d('0x2c')],function(_0x34c2be){return{'name':_0x34c2be[_0xf15d('0x2d')],'type':_0x34c2be[_0xf15d('0x2e')][_0xf15d('0x2f')]};});_0x464201[_0xf15d('0x30')]=_[_0xf15d('0x2b')](_0x18c179,_0xf15d('0x28'));_0x464201['query']=_[_0xf15d('0x31')](_0xf72a92[_0xf15d('0x32')]);_0x464201['filters']=_[_0xf15d('0x33')](_0x464201[_0xf15d('0x30')],_0x464201[_0xf15d('0x32')]);_0x2227ce[_0xf15d('0x34')]=_[_0xf15d('0x33')](_0x464201['model'],qs[_0xf15d('0x35')](_0xf72a92[_0xf15d('0x32')][_0xf15d('0x35')]));_0x2227ce['attributes']=_0x2227ce['attributes'][_0xf15d('0x36')]?_0x2227ce[_0xf15d('0x34')]:_0x464201[_0xf15d('0x30')];if(!_0xf72a92['query'][_0xf15d('0x37')](_0xf15d('0x38'))){_0x2227ce['limit']=qs[_0xf15d('0x1c')](_0xf72a92[_0xf15d('0x32')]['limit']);_0x2227ce['offset']=qs[_0xf15d('0x1a')](_0xf72a92['query'][_0xf15d('0x1a')]);}_0x2227ce[_0xf15d('0x39')]=qs[_0xf15d('0x3a')](_0xf72a92[_0xf15d('0x32')][_0xf15d('0x3a')]);_0x2227ce['where']=qs['filters'](_['pick'](_0xf72a92['query'],_0x464201[_0xf15d('0x3b')]),_0x18c179);if(_0xf72a92['query'][_0xf15d('0x3c')]){_0x2227ce[_0xf15d('0x3d')]=_['merge'](_0x2227ce[_0xf15d('0x3d')],{'$or':_['map'](_0x18c179,function(_0x114cf9){if(_0x114cf9[_0xf15d('0x2e')]!==_0xf15d('0x3e')){var _0x40c2fc={};_0x40c2fc[_0x114cf9[_0xf15d('0x28')]]={'$like':'%'+_0xf72a92[_0xf15d('0x32')]['filter']+'%'};return _0x40c2fc;}})});}_0x2227ce=_['merge']({},_0x2227ce,_0xf72a92['options']);var _0x57ae62={'where':_0x2227ce[_0xf15d('0x3d')]};return db[_0xf15d('0x3f')][_0xf15d('0x1d')](_0x57ae62)[_0xf15d('0x24')](function(_0xdffde9){_0x82698c[_0xf15d('0x1d')]=_0xdffde9;if(_0xf72a92[_0xf15d('0x32')]['includeAll']){_0x2227ce[_0xf15d('0x40')]=[{'all':!![]}];}return db[_0xf15d('0x3f')][_0xf15d('0x41')](_0x2227ce);})[_0xf15d('0x24')](function(_0x16267e){_0x82698c[_0xf15d('0x42')]=_0x16267e;return _0x82698c;})[_0xf15d('0x24')](respondWithFilteredResult(_0x1506e2,_0x2227ce))[_0xf15d('0x43')](handleError(_0x1506e2,null));};exports['show']=function(_0x1dcb74,_0x12baae){var _0x149798={'raw':!![],'where':{'id':_0x1dcb74[_0xf15d('0x44')]['id']}},_0x23319e={};_0x23319e[_0xf15d('0x30')]=_[_0xf15d('0x31')](db['ServicenowField'][_0xf15d('0x2c')]);_0x23319e[_0xf15d('0x32')]=_[_0xf15d('0x31')](_0x1dcb74[_0xf15d('0x32')]);_0x23319e['filters']=_['intersection'](_0x23319e[_0xf15d('0x30')],_0x23319e[_0xf15d('0x32')]);_0x149798[_0xf15d('0x34')]=_['intersection'](_0x23319e[_0xf15d('0x30')],qs[_0xf15d('0x35')](_0x1dcb74['query'][_0xf15d('0x35')]));_0x149798[_0xf15d('0x34')]=_0x149798[_0xf15d('0x34')]['length']?_0x149798[_0xf15d('0x34')]:_0x23319e['model'];if(_0x1dcb74[_0xf15d('0x32')][_0xf15d('0x45')]){_0x149798[_0xf15d('0x40')]=[{'all':!![]}];}_0x149798=_[_0xf15d('0x46')]({},_0x149798,_0x1dcb74[_0xf15d('0x47')]);return db[_0xf15d('0x3f')][_0xf15d('0x48')](_0x149798)['then'](handleEntityNotFound(_0x12baae,null))[_0xf15d('0x24')](respondWithResult(_0x12baae,null))[_0xf15d('0x43')](handleError(_0x12baae,null));};exports[_0xf15d('0x49')]=function(_0x385663,_0x1b7576){return db['ServicenowField'][_0xf15d('0x49')](_0x385663[_0xf15d('0x4a')],{})['then'](respondWithResult(_0x1b7576,0xc9))['catch'](handleError(_0x1b7576,null));};exports[_0xf15d('0x23')]=function(_0x44ce2d,_0x22ff7b){if(_0x44ce2d[_0xf15d('0x4a')]['id']){delete _0x44ce2d[_0xf15d('0x4a')]['id'];}return db[_0xf15d('0x3f')][_0xf15d('0x48')]({'where':{'id':_0x44ce2d[_0xf15d('0x44')]['id']}})['then'](handleEntityNotFound(_0x22ff7b,null))[_0xf15d('0x24')](saveUpdates(_0x44ce2d[_0xf15d('0x4a')],null))[_0xf15d('0x24')](respondWithResult(_0x22ff7b,null))[_0xf15d('0x43')](handleError(_0x22ff7b,null));};exports[_0xf15d('0x25')]=function(_0x3acd20,_0x399096){return db[_0xf15d('0x3f')][_0xf15d('0x48')]({'where':{'id':_0x3acd20[_0xf15d('0x44')]['id']}})['then'](handleEntityNotFound(_0x399096,null))[_0xf15d('0x24')](removeEntity(_0x399096,null))['catch'](handleError(_0x399096,null));};
\ No newline at end of file
index 122257b..e4a2a64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9b5=['int_servicenow_fields','servicenow_unique_index','idField','FieldId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports','define'];(function(_0x48779a,_0x2afba6){var _0x4af39b=function(_0x3b5d26){while(--_0x3b5d26){_0x48779a['push'](_0x48779a['shift']());}};_0x4af39b(++_0x2afba6);}(_0xe9b5,0x104));var _0x5e9b=function(_0x4e7713,_0x52e623){_0x4e7713=_0x4e7713-0x0;var _0x404ee2=_0xe9b5[_0x4e7713];return _0x404ee2;};'use strict';var _=require(_0x5e9b('0x0'));var util=require(_0x5e9b('0x1'));var logger=require(_0x5e9b('0x2'))('api');var moment=require(_0x5e9b('0x3'));var BPromise=require(_0x5e9b('0x4'));var rp=require(_0x5e9b('0x5'));var fs=require('fs');var path=require(_0x5e9b('0x6'));var rimraf=require(_0x5e9b('0x7'));var config=require(_0x5e9b('0x8'));var attributes=require(_0x5e9b('0x9'));module[_0x5e9b('0xa')]=function(_0x41e18e,_0x5bd455){return _0x41e18e[_0x5e9b('0xb')]('ServicenowField',attributes,{'tableName':_0x5e9b('0xc'),'paranoid':![],'indexes':[{'name':_0x5e9b('0xd'),'fields':[_0x5e9b('0xe'),_0x5e9b('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc99=['api','moment','bluebird','request-promise','rimraf','./intServicenowField.attributes','define','ServicenowField','servicenow_unique_index','idField','lodash','../../config/logger'];(function(_0xa71f02,_0x5c9690){var _0x19798a=function(_0x8b592c){while(--_0x8b592c){_0xa71f02['push'](_0xa71f02['shift']());}};_0x19798a(++_0x5c9690);}(_0xfc99,0x17e));var _0x9fc9=function(_0x5a1475,_0x417765){_0x5a1475=_0x5a1475-0x0;var _0x5430e7=_0xfc99[_0x5a1475];return _0x5430e7;};'use strict';var _=require(_0x9fc9('0x0'));var util=require('util');var logger=require(_0x9fc9('0x1'))(_0x9fc9('0x2'));var moment=require(_0x9fc9('0x3'));var BPromise=require(_0x9fc9('0x4'));var rp=require(_0x9fc9('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9fc9('0x6'));var config=require('../../config/environment');var attributes=require(_0x9fc9('0x7'));module['exports']=function(_0x230198,_0x4386eb){return _0x230198[_0x9fc9('0x8')](_0x9fc9('0x9'),attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x9fc9('0xa'),'fields':[_0x9fc9('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index a250748..1f23b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s'];(function(_0x2f2d31,_0x30b3b8){var _0x36ca42=function(_0x4f0960){while(--_0x4f0960){_0x2f2d31['push'](_0x2f2d31['shift']());}};_0x36ca42(++_0x30b3b8);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x35485a,_0x91cdd4){_0x35485a=_0x35485a-0x0;var _0x5148e6=_0xcb91[_0x35485a];return _0x5148e6;};'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')]('ServicenowField,\x20%s,\x20%s',_0x4ffe20,_0x567139['error']['message']);return _0x59d1be(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x567139['error'][_0x1cb9('0x12')]);return _0x12567c(_0x567139[_0x1cb9('0x10')][_0x1cb9('0x12')]);}else{logger[_0x1cb9('0xa')](_0x1cb9('0xb'),_0x4ffe20,'request\x20sent');_0x12567c(_0x567139['result'][_0x1cb9('0x12')]);}})[_0x1cb9('0x13')](function(_0x3904b7){logger[_0x1cb9('0x10')](_0x1cb9('0xb'),_0x4ffe20,_0x3904b7);_0x59d1be(_0x3904b7);});});}
\ No newline at end of file
+var _0xda3f=['rpc','jayson/promise','client','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0xda3f,0xec));var _0xfda3=function(_0x2f2226,_0x4ed27a){_0x2f2226=_0x2f2226-0x0;var _0x30eaee=_0xda3f[_0x2f2226];return _0x30eaee;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('ServicenowField,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('ServicenowField,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
index 369f554..432f66d 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(_0x21df11,_0x1884c5){var _0x548414=function(_0x1a747e){while(--_0x1a747e){_0x21df11['push'](_0x21df11['shift']());}};_0x548414(++_0x1884c5);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x4deff3,_0x2df052){var _0x507bfd=function(_0x4f72dd){while(--_0x4f72dd){_0x4deff3['push'](_0x4deff3['shift']());}};_0x507bfd(++_0x2df052);}(_0xa9e0,0x123));var _0x0a9e=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xa9e0[_0x24237f];return _0x48298e;};'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 0af71b0..7fd96b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x2d660c,_0x47e3a5){var _0x29d5fc=function(_0x4915e6){while(--_0x4915e6){_0x2d660c['push'](_0x2d660c['shift']());}};_0x29d5fc(++_0x47e3a5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xa9e0[_0x55f8b4];return _0x2475f9;};'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(_0x1c225d,_0x2ac333){var _0x405f59=function(_0x3a31eb){while(--_0x3a31eb){_0x1c225d['push'](_0x1c225d['shift']());}};_0x405f59(++_0x2ac333);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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 9574efb..db90682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x966c=['SugarcrmConfiguration','SugarcrmField','getFields','assigned_user_id','created_by','description','date_start','parent_id','parent_type','parent_name','direction','username','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','get_module_fields','stringify','Calls','module_fields','remove','includes','label','endsWith','value','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../components/integrations/configuration','status','json','undefined','limit','count','offset','set','Content-Range','then','end','sendStatus','name','send','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','keys','includeAll','find','create','body','getConfigurations','findOne','options','addConfiguration','AccountId','Subjects','channel','Descriptions','getDescriptions'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x966c,0xa0));var _0xc966=function(_0x1483bd,_0x32adde){_0x1483bd=_0x1483bd-0x0;var _0x166c75=_0x966c[_0x1483bd];return _0x166c75;};'use strict';var emlformat=require(_0xc966('0x0'));var rimraf=require(_0xc966('0x1'));var zipdir=require(_0xc966('0x2'));var jsonpatch=require(_0xc966('0x3'));var rp=require(_0xc966('0x4'));var moment=require(_0xc966('0x5'));var BPromise=require(_0xc966('0x6'));var Mustache=require(_0xc966('0x7'));var util=require(_0xc966('0x8'));var path=require(_0xc966('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xc966('0xa'));var fs=require('fs');var fs_extra=require(_0xc966('0xb'));var _=require(_0xc966('0xc'));var squel=require(_0xc966('0xd'));var crypto=require('crypto');var jsforce=require(_0xc966('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xc966('0xf'));var querystring=require(_0xc966('0x10'));var Papa=require('papaparse');var Redis=require(_0xc966('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc966('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc966('0x13'));var utils=require(_0xc966('0x14'));var config=require(_0xc966('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require(_0xc966('0x16'));function respondWithStatusCode(_0x23cc72,_0x572214){_0x572214=_0x572214||0xcc;return function(_0x4ce3bd){if(_0x4ce3bd){return _0x23cc72['sendStatus'](_0x572214);}return _0x23cc72[_0xc966('0x17')](_0x572214)['end']();};}function respondWithResult(_0xfbafe5,_0x409f74){_0x409f74=_0x409f74||0xc8;return function(_0x394f6f){if(_0x394f6f){return _0xfbafe5['status'](_0x409f74)[_0xc966('0x18')](_0x394f6f);}};}function respondWithFilteredResult(_0x2adcf7,_0x214794){return function(_0x4c5c3d){if(_0x4c5c3d){var _0x149784=typeof _0x214794['offset']===_0xc966('0x19')&&typeof _0x214794[_0xc966('0x1a')]===_0xc966('0x19');var _0x1a9b59=_0x4c5c3d[_0xc966('0x1b')];var _0x37b8fb=_0x149784?0x0:_0x214794[_0xc966('0x1c')];var _0x5edba9=_0x149784?_0x4c5c3d['count']:_0x214794['offset']+_0x214794[_0xc966('0x1a')];var _0x5ecc30;if(_0x5edba9>=_0x1a9b59){_0x5edba9=_0x1a9b59;_0x5ecc30=0xc8;}else{_0x5ecc30=0xce;}_0x2adcf7['status'](_0x5ecc30);return _0x2adcf7[_0xc966('0x1d')](_0xc966('0x1e'),_0x37b8fb+'-'+_0x5edba9+'/'+_0x1a9b59)['json'](_0x4c5c3d);}return null;};}function patchUpdates(_0x152bf7){return function(_0x310fe0){try{jsonpatch['apply'](_0x310fe0,_0x152bf7,!![]);}catch(_0x5a3032){return BPromise['reject'](_0x5a3032);}return _0x310fe0['save']();};}function saveUpdates(_0x32b32b,_0x262dbe){return function(_0x2afe5d){if(_0x2afe5d){return _0x2afe5d['update'](_0x32b32b)['then'](function(_0x3da6f7){return _0x3da6f7;});}return null;};}function removeEntity(_0x4ccb49,_0xa2ee36){return function(_0x434e5e){if(_0x434e5e){return _0x434e5e['destroy']()[_0xc966('0x1f')](function(){_0x4ccb49[_0xc966('0x17')](0xcc)[_0xc966('0x20')]();});}};}function handleEntityNotFound(_0xb07c,_0x29696e){return function(_0x19e719){if(!_0x19e719){_0xb07c[_0xc966('0x21')](0x194);}return _0x19e719;};}function handleError(_0x49460c,_0x2cc329){_0x2cc329=_0x2cc329||0x1f4;return function(_0x38a4ec){logger['error'](_0x38a4ec['stack']);if(_0x38a4ec[_0xc966('0x22')]){delete _0x38a4ec[_0xc966('0x22')];}_0x49460c[_0xc966('0x17')](_0x2cc329)[_0xc966('0x23')](_0x38a4ec);};}exports['index']=function(_0x635ffd,_0x3d5c93){var _0x13a882={},_0x2f4312={},_0x3b5a6c={'count':0x0,'rows':[]};var _0x37637d=_[_0xc966('0x24')](db[_0xc966('0x25')][_0xc966('0x26')],function(_0x266af1){return{'name':_0x266af1[_0xc966('0x27')],'type':_0x266af1[_0xc966('0x28')][_0xc966('0x29')]};});_0x2f4312[_0xc966('0x2a')]=_['map'](_0x37637d,_0xc966('0x22'));_0x2f4312['query']=_['keys'](_0x635ffd[_0xc966('0x2b')]);_0x2f4312[_0xc966('0x2c')]=_[_0xc966('0x2d')](_0x2f4312[_0xc966('0x2a')],_0x2f4312[_0xc966('0x2b')]);_0x13a882['attributes']=_[_0xc966('0x2d')](_0x2f4312[_0xc966('0x2a')],qs[_0xc966('0x2e')](_0x635ffd[_0xc966('0x2b')][_0xc966('0x2e')]));_0x13a882[_0xc966('0x2f')]=_0x13a882['attributes'][_0xc966('0x30')]?_0x13a882[_0xc966('0x2f')]:_0x2f4312[_0xc966('0x2a')];if(!_0x635ffd[_0xc966('0x2b')][_0xc966('0x31')](_0xc966('0x32'))){_0x13a882[_0xc966('0x1a')]=qs['limit'](_0x635ffd[_0xc966('0x2b')][_0xc966('0x1a')]);_0x13a882[_0xc966('0x1c')]=qs[_0xc966('0x1c')](_0x635ffd[_0xc966('0x2b')][_0xc966('0x1c')]);}_0x13a882[_0xc966('0x33')]=qs[_0xc966('0x34')](_0x635ffd[_0xc966('0x2b')]['sort']);_0x13a882[_0xc966('0x35')]=qs['filters'](_[_0xc966('0x36')](_0x635ffd[_0xc966('0x2b')],_0x2f4312[_0xc966('0x2c')]),_0x37637d);if(_0x635ffd[_0xc966('0x2b')][_0xc966('0x37')]){_0x13a882[_0xc966('0x35')]=_[_0xc966('0x38')](_0x13a882[_0xc966('0x35')],{'$or':_[_0xc966('0x24')](_0x37637d,function(_0x78ee1c){if(_0x78ee1c[_0xc966('0x28')]!==_0xc966('0x39')){var _0x46f2e5={};_0x46f2e5[_0x78ee1c['name']]={'$like':'%'+_0x635ffd[_0xc966('0x2b')][_0xc966('0x37')]+'%'};return _0x46f2e5;}})});}_0x13a882=_[_0xc966('0x38')]({},_0x13a882,_0x635ffd['options']);var _0x2959e6={'where':_0x13a882[_0xc966('0x35')]};return db[_0xc966('0x25')][_0xc966('0x1b')](_0x2959e6)[_0xc966('0x1f')](function(_0x4632a1){_0x3b5a6c[_0xc966('0x1b')]=_0x4632a1;if(_0x635ffd['query']['includeAll']){_0x13a882[_0xc966('0x3a')]=[{'all':!![]}];}return db[_0xc966('0x25')][_0xc966('0x3b')](_0x13a882);})[_0xc966('0x1f')](function(_0x17543c){_0x3b5a6c[_0xc966('0x3c')]=_0x17543c;return _0x3b5a6c;})[_0xc966('0x1f')](respondWithFilteredResult(_0x3d5c93,_0x13a882))[_0xc966('0x3d')](handleError(_0x3d5c93,null));};exports[_0xc966('0x3e')]=function(_0x31b959,_0x46576a){var _0x353a4c={'raw':![],'where':{'id':_0x31b959[_0xc966('0x3f')]['id']}},_0x45c96f={};_0x45c96f['model']=_[_0xc966('0x40')](db[_0xc966('0x25')][_0xc966('0x26')]);_0x45c96f[_0xc966('0x2b')]=_[_0xc966('0x40')](_0x31b959['query']);_0x45c96f['filters']=_[_0xc966('0x2d')](_0x45c96f[_0xc966('0x2a')],_0x45c96f[_0xc966('0x2b')]);_0x353a4c[_0xc966('0x2f')]=_['intersection'](_0x45c96f[_0xc966('0x2a')],qs[_0xc966('0x2e')](_0x31b959[_0xc966('0x2b')][_0xc966('0x2e')]));_0x353a4c[_0xc966('0x2f')]=_0x353a4c[_0xc966('0x2f')][_0xc966('0x30')]?_0x353a4c['attributes']:_0x45c96f[_0xc966('0x2a')];if(_0x31b959['query'][_0xc966('0x41')]){_0x353a4c[_0xc966('0x3a')]=[{'all':!![]}];}_0x353a4c=_[_0xc966('0x38')]({},_0x353a4c,_0x31b959['options']);return db['SugarcrmAccount'][_0xc966('0x42')](_0x353a4c)[_0xc966('0x1f')](handleEntityNotFound(_0x46576a,null))['then'](respondWithResult(_0x46576a,null))[_0xc966('0x3d')](handleError(_0x46576a,null));};exports[_0xc966('0x43')]=function(_0x4ecf84,_0x38a338){return db[_0xc966('0x25')][_0xc966('0x43')](_0x4ecf84[_0xc966('0x44')],{})[_0xc966('0x1f')](respondWithResult(_0x38a338,0xc9))[_0xc966('0x3d')](handleError(_0x38a338,null));};exports['update']=function(_0x1b839f,_0x27384c){if(_0x1b839f['body']['id']){delete _0x1b839f[_0xc966('0x44')]['id'];}return db['SugarcrmAccount']['find']({'where':{'id':_0x1b839f[_0xc966('0x3f')]['id']}})['then'](handleEntityNotFound(_0x27384c,null))[_0xc966('0x1f')](saveUpdates(_0x1b839f[_0xc966('0x44')],null))[_0xc966('0x1f')](respondWithResult(_0x27384c,null))[_0xc966('0x3d')](handleError(_0x27384c,null));};exports['destroy']=function(_0x5a5caf,_0x21c1e3){return db[_0xc966('0x25')]['find']({'where':{'id':_0x5a5caf[_0xc966('0x3f')]['id']}})[_0xc966('0x1f')](handleEntityNotFound(_0x21c1e3,null))[_0xc966('0x1f')](removeEntity(_0x21c1e3,null))['catch'](handleError(_0x21c1e3,null));};exports[_0xc966('0x45')]=function(_0x4b1abb,_0x20f358,_0x2fff17){var _0x33d2e4={};var _0x61051a={};var _0x5a5008;var _0x446329;return db['SugarcrmAccount'][_0xc966('0x46')]({'where':{'id':_0x4b1abb[_0xc966('0x3f')]['id']}})[_0xc966('0x1f')](handleEntityNotFound(_0x20f358,null))[_0xc966('0x1f')](function(_0x224f58){if(_0x224f58){_0x5a5008=_0x224f58;_0x61051a['model']=_[_0xc966('0x40')](db['SugarcrmConfiguration'][_0xc966('0x26')]);_0x61051a[_0xc966('0x2b')]=_['keys'](_0x4b1abb[_0xc966('0x2b')]);_0x61051a[_0xc966('0x2c')]=_[_0xc966('0x2d')](_0x61051a[_0xc966('0x2a')],_0x61051a[_0xc966('0x2b')]);_0x33d2e4[_0xc966('0x2f')]=_[_0xc966('0x2d')](_0x61051a['model'],qs[_0xc966('0x2e')](_0x4b1abb['query']['fields']));_0x33d2e4['attributes']=_0x33d2e4[_0xc966('0x2f')]['length']?_0x33d2e4[_0xc966('0x2f')]:_0x61051a[_0xc966('0x2a')];_0x33d2e4[_0xc966('0x33')]=qs[_0xc966('0x34')](_0x4b1abb[_0xc966('0x2b')][_0xc966('0x34')]);_0x33d2e4['where']=qs['filters'](_[_0xc966('0x36')](_0x4b1abb[_0xc966('0x2b')],_0x61051a[_0xc966('0x2c')]));if(_0x4b1abb[_0xc966('0x2b')][_0xc966('0x37')]){_0x33d2e4['where']=_[_0xc966('0x38')](_0x33d2e4[_0xc966('0x35')],{'$or':_[_0xc966('0x24')](_0x33d2e4[_0xc966('0x2f')],function(_0x54c393){var _0x5b0356={};_0x5b0356[_0x54c393]={'$like':'%'+_0x4b1abb[_0xc966('0x2b')][_0xc966('0x37')]+'%'};return _0x5b0356;})});}_0x33d2e4=_[_0xc966('0x38')]({},_0x33d2e4,_0x4b1abb[_0xc966('0x47')]);return _0x5a5008['getConfigurations'](_0x33d2e4);}})[_0xc966('0x1f')](function(_0x4dabfd){if(_0x4dabfd){_0x446329=_0x4dabfd[_0xc966('0x30')];if(!_0x4b1abb[_0xc966('0x2b')][_0xc966('0x31')]('nolimit')){_0x33d2e4[_0xc966('0x1a')]=qs[_0xc966('0x1a')](_0x4b1abb[_0xc966('0x2b')][_0xc966('0x1a')]);_0x33d2e4['offset']=qs[_0xc966('0x1c')](_0x4b1abb[_0xc966('0x2b')][_0xc966('0x1c')]);}return _0x5a5008[_0xc966('0x45')](_0x33d2e4);}})[_0xc966('0x1f')](function(_0x2095b3){if(_0x2095b3){return _0x2095b3?{'count':_0x446329,'rows':_0x2095b3}:null;}})['then'](respondWithResult(_0x20f358,null))['catch'](handleError(_0x20f358,null));};exports[_0xc966('0x48')]=function(_0x31232c,_0x3b510c,_0x3f64d9){if(_0x31232c[_0xc966('0x44')]['id']){delete _0x31232c[_0xc966('0x44')]['id'];}return db['SugarcrmAccount'][_0xc966('0x46')]({'where':{'id':_0x31232c[_0xc966('0x3f')]['id']}})[_0xc966('0x1f')](handleEntityNotFound(_0x3b510c,null))[_0xc966('0x1f')](function(_0x438690){if(_0x438690){_0x31232c[_0xc966('0x44')][_0xc966('0x49')]=_0x438690['id'];_0x31232c[_0xc966('0x44')][_0xc966('0x4a')]=integrations['getSubjects'](_0x31232c[_0xc966('0x44')][_0xc966('0x4b')],_0x31232c[_0xc966('0x44')][_0xc966('0x28')]);_0x31232c[_0xc966('0x44')][_0xc966('0x4c')]=integrations[_0xc966('0x4d')](_0x31232c['body'][_0xc966('0x4b')],_0x31232c[_0xc966('0x44')]['type']);return db[_0xc966('0x4e')][_0xc966('0x43')](_0x31232c[_0xc966('0x44')],{'include':[{'model':db[_0xc966('0x4f')],'as':'Subjects'},{'model':db[_0xc966('0x4f')],'as':_0xc966('0x4c')}]});}return null;})[_0xc966('0x1f')](respondWithResult(_0x3b510c,null))['catch'](handleError(_0x3b510c,null));};exports[_0xc966('0x50')]=function(_0x435e11,_0x336393,_0x577409){var _0x253db4='';var _0x4f67b5=['id',_0xc966('0x22'),_0xc966('0x51'),_0xc966('0x52'),_0xc966('0x53'),_0xc966('0x54'),'duration_hours','duration_minutes',_0xc966('0x55'),_0xc966('0x56'),_0xc966('0x57'),_0xc966('0x58')];return db[_0xc966('0x25')][_0xc966('0x46')]({'where':{'id':_0x435e11[_0xc966('0x3f')]['id']},'attributes':['id',_0xc966('0x59'),_0xc966('0x5a'),_0xc966('0x5b')]})[_0xc966('0x1f')](handleEntityNotFound(_0x336393,null))[_0xc966('0x1f')](function(_0x48271f){if(_0x48271f){_0x253db4=_0x48271f['remoteUri'];var _0x2d7c3c=_0x253db4[_0xc966('0x5c')](-0x1);if(_0x2d7c3c==='/'){_0x253db4=_0x253db4[_0xc966('0x5d')](0x0,_0x253db4[_0xc966('0x5e')](_0x2d7c3c));}return rp({'method':_0xc966('0x5f'),'uri':util[_0xc966('0x60')](_0xc966('0x61'),_0x253db4,_0xc966('0x62')),'json':!![],'form':{'method':_0xc966('0x63'),'input_type':_0xc966('0x64'),'response_type':_0xc966('0x64'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x48271f['username'],'password':_0x48271f[_0xc966('0x5a')],'encryption':_0xc966('0x65')},'application':_0xc966('0x66')})}});}})[_0xc966('0x1f')](function(_0x2b8338){if(_0x2b8338&&_0x2b8338[_0xc966('0x22')]!==_0xc966('0x67')&&_0x2b8338[_0xc966('0x22')]!==_0xc966('0x68')){return rp({'method':'POST','uri':util['format'](_0xc966('0x61'),_0x253db4,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0xc966('0x69'),'input_type':_0xc966('0x64'),'response_type':'JSON','rest_data':JSON[_0xc966('0x6a')]({'session':_0x2b8338['id'],'module_name':_0xc966('0x6b')})}})[_0xc966('0x1f')](function(_0x297935){if(_0x297935){var _0xf0150=_['values'](_0x297935[_0xc966('0x6c')]);_[_0xc966('0x6d')](_0xf0150,function(_0x318640){return _0x4f67b5[_0xc966('0x6e')](_0x318640[_0xc966('0x22')]);});return{'count':_0xf0150['length'],'rows':_[_0xc966('0x24')](_0xf0150,function(_0xa1ca6a){return{'id':_0xa1ca6a['name'],'name':_0xa1ca6a[_0xc966('0x6f')],'custom':_[_0xc966('0x70')](_0xa1ca6a[_0xc966('0x22')],'_c')?!![]:![],'options':_0xa1ca6a['options']?_[_0xc966('0x24')](_['values'](_0xa1ca6a[_0xc966('0x47')]),function(_0x218e33){return{'name':_0x218e33[_0xc966('0x71')],'value':_0x218e33[_0xc966('0x22')]};}):[]};})};}})[_0xc966('0x1f')](respondWithResult(_0x336393,null))[_0xc966('0x3d')](function(_0x510037){var _0x2c52ef=_0x435e11[_0xc966('0x2b')]['test']?0x1f4:_0x510037[_0xc966('0x72')]||0x1f4;logger[_0xc966('0x73')](_0xc966('0x74'),_0xc966('0x50'),_0x2c52ef,JSON[_0xc966('0x6a')](_0x510037));delete _0x510037['name'];if(_0x2c52ef===0x191){_0x2c52ef=0x190;}_0x336393[_0xc966('0x17')](_0x2c52ef)[_0xc966('0x23')](_0x435e11['query'][_0xc966('0x75')]?{'message':_0xc966('0x76'),'statusCode':_0x510037[_0xc966('0x72')]}:_0x510037);});}else{var _0x4e75f2=0x1f4;_0x336393['status'](_0x4e75f2)['send']({'message':_0xc966('0x76'),'statusCode':0x190});}});};
\ No newline at end of file
+var _0xa7d3=['getFields','assigned_user_id','created_by','date_start','duration_hours','duration_minutes','parent_type','direction','findOne','username','password','remoteUri','slice','substring','lastIndexOf','login','JSON','stringify','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','POST','format','/service/v4_1/rest.php','get_module_fields','Calls','values','remove','label','endsWith','value','test','statusCode','Wrong\x20credentials','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','VIRTUAL','merge','options','includeAll','include','catch','show','params','length','find','create','body','destroy','getConfigurations','SugarcrmConfiguration','sort','filter','AccountId','getSubjects','Descriptions','channel','SugarcrmField','Subjects'];(function(_0x3820a8,_0x2a1fce){var _0x533cae=function(_0x15c4ce){while(--_0x15c4ce){_0x3820a8['push'](_0x3820a8['shift']());}};_0x533cae(++_0x2a1fce);}(_0xa7d3,0x1ea));var _0x3a7d=function(_0x2393c4,_0x22c157){_0x2393c4=_0x2393c4-0x0;var _0x31c7be=_0xa7d3[_0x2393c4];return _0x31c7be;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3a7d('0x0'));var rp=require(_0x3a7d('0x1'));var moment=require(_0x3a7d('0x2'));var BPromise=require(_0x3a7d('0x3'));var Mustache=require(_0x3a7d('0x4'));var util=require(_0x3a7d('0x5'));var path=require(_0x3a7d('0x6'));var sox=require(_0x3a7d('0x7'));var csv=require(_0x3a7d('0x8'));var ejs=require(_0x3a7d('0x9'));var fs=require('fs');var fs_extra=require(_0x3a7d('0xa'));var _=require(_0x3a7d('0xb'));var squel=require('squel');var crypto=require(_0x3a7d('0xc'));var jsforce=require(_0x3a7d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3a7d('0x8'));var querystring=require(_0x3a7d('0xe'));var Papa=require(_0x3a7d('0xf'));var Redis=require('ioredis');var authService=require(_0x3a7d('0x10'));var qs=require(_0x3a7d('0x11'));var as=require(_0x3a7d('0x12'));var hardwareService=require(_0x3a7d('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3a7d('0x14'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x275b3f,_0x1aea43){_0x1aea43=_0x1aea43||0xcc;return function(_0x1fbcaa){if(_0x1fbcaa){return _0x275b3f[_0x3a7d('0x15')](_0x1aea43);}return _0x275b3f[_0x3a7d('0x16')](_0x1aea43)[_0x3a7d('0x17')]();};}function respondWithResult(_0x6772bf,_0x2b0381){_0x2b0381=_0x2b0381||0xc8;return function(_0x1e1bbb){if(_0x1e1bbb){return _0x6772bf[_0x3a7d('0x16')](_0x2b0381)[_0x3a7d('0x18')](_0x1e1bbb);}};}function respondWithFilteredResult(_0x4f5d1a,_0x3b118d){return function(_0x5be59f){if(_0x5be59f){var _0x3017bd=typeof _0x3b118d[_0x3a7d('0x19')]===_0x3a7d('0x1a')&&typeof _0x3b118d[_0x3a7d('0x1b')]===_0x3a7d('0x1a');var _0x1be67d=_0x5be59f[_0x3a7d('0x1c')];var _0x32e521=_0x3017bd?0x0:_0x3b118d[_0x3a7d('0x19')];var _0x25ab84=_0x3017bd?_0x5be59f['count']:_0x3b118d[_0x3a7d('0x19')]+_0x3b118d[_0x3a7d('0x1b')];var _0x39fd54;if(_0x25ab84>=_0x1be67d){_0x25ab84=_0x1be67d;_0x39fd54=0xc8;}else{_0x39fd54=0xce;}_0x4f5d1a[_0x3a7d('0x16')](_0x39fd54);return _0x4f5d1a[_0x3a7d('0x1d')](_0x3a7d('0x1e'),_0x32e521+'-'+_0x25ab84+'/'+_0x1be67d)[_0x3a7d('0x18')](_0x5be59f);}return null;};}function patchUpdates(_0x4ee28c){return function(_0x44d07f){try{jsonpatch[_0x3a7d('0x1f')](_0x44d07f,_0x4ee28c,!![]);}catch(_0x27bf1a){return BPromise[_0x3a7d('0x20')](_0x27bf1a);}return _0x44d07f[_0x3a7d('0x21')]();};}function saveUpdates(_0x278f05,_0xf1748c){return function(_0x2b2d15){if(_0x2b2d15){return _0x2b2d15[_0x3a7d('0x22')](_0x278f05)[_0x3a7d('0x23')](function(_0x550629){return _0x550629;});}return null;};}function removeEntity(_0x46bcc4,_0x6d0bff){return function(_0x381a7a){if(_0x381a7a){return _0x381a7a['destroy']()[_0x3a7d('0x23')](function(){_0x46bcc4['status'](0xcc)[_0x3a7d('0x17')]();});}};}function handleEntityNotFound(_0x1146bb,_0x1b67ea){return function(_0x330350){if(!_0x330350){_0x1146bb[_0x3a7d('0x15')](0x194);}return _0x330350;};}function handleError(_0x20440a,_0x191cb8){_0x191cb8=_0x191cb8||0x1f4;return function(_0x219deb){logger[_0x3a7d('0x24')](_0x219deb['stack']);if(_0x219deb[_0x3a7d('0x25')]){delete _0x219deb[_0x3a7d('0x25')];}_0x20440a[_0x3a7d('0x16')](_0x191cb8)[_0x3a7d('0x26')](_0x219deb);};}exports[_0x3a7d('0x27')]=function(_0x353d22,_0x381181){var _0x336a59={},_0x2495de={},_0x2da02e={'count':0x0,'rows':[]};var _0x4c9341=_[_0x3a7d('0x28')](db[_0x3a7d('0x29')][_0x3a7d('0x2a')],function(_0x4bf481){return{'name':_0x4bf481[_0x3a7d('0x2b')],'type':_0x4bf481[_0x3a7d('0x2c')][_0x3a7d('0x2d')]};});_0x2495de['model']=_[_0x3a7d('0x28')](_0x4c9341,'name');_0x2495de[_0x3a7d('0x2e')]=_[_0x3a7d('0x2f')](_0x353d22['query']);_0x2495de[_0x3a7d('0x30')]=_[_0x3a7d('0x31')](_0x2495de[_0x3a7d('0x32')],_0x2495de[_0x3a7d('0x2e')]);_0x336a59[_0x3a7d('0x33')]=_[_0x3a7d('0x31')](_0x2495de[_0x3a7d('0x32')],qs[_0x3a7d('0x34')](_0x353d22[_0x3a7d('0x2e')]['fields']));_0x336a59[_0x3a7d('0x33')]=_0x336a59[_0x3a7d('0x33')]['length']?_0x336a59[_0x3a7d('0x33')]:_0x2495de[_0x3a7d('0x32')];if(!_0x353d22['query'][_0x3a7d('0x35')](_0x3a7d('0x36'))){_0x336a59['limit']=qs[_0x3a7d('0x1b')](_0x353d22[_0x3a7d('0x2e')]['limit']);_0x336a59[_0x3a7d('0x19')]=qs[_0x3a7d('0x19')](_0x353d22[_0x3a7d('0x2e')][_0x3a7d('0x19')]);}_0x336a59[_0x3a7d('0x37')]=qs['sort'](_0x353d22[_0x3a7d('0x2e')]['sort']);_0x336a59[_0x3a7d('0x38')]=qs[_0x3a7d('0x30')](_['pick'](_0x353d22[_0x3a7d('0x2e')],_0x2495de['filters']),_0x4c9341);if(_0x353d22[_0x3a7d('0x2e')]['filter']){_0x336a59[_0x3a7d('0x38')]=_['merge'](_0x336a59[_0x3a7d('0x38')],{'$or':_[_0x3a7d('0x28')](_0x4c9341,function(_0x14635f){if(_0x14635f['type']!==_0x3a7d('0x39')){var _0x3835ba={};_0x3835ba[_0x14635f[_0x3a7d('0x25')]]={'$like':'%'+_0x353d22['query']['filter']+'%'};return _0x3835ba;}})});}_0x336a59=_[_0x3a7d('0x3a')]({},_0x336a59,_0x353d22[_0x3a7d('0x3b')]);var _0x3248f9={'where':_0x336a59[_0x3a7d('0x38')]};return db[_0x3a7d('0x29')]['count'](_0x3248f9)['then'](function(_0x5da1cb){_0x2da02e[_0x3a7d('0x1c')]=_0x5da1cb;if(_0x353d22[_0x3a7d('0x2e')][_0x3a7d('0x3c')]){_0x336a59[_0x3a7d('0x3d')]=[{'all':!![]}];}return db[_0x3a7d('0x29')]['findAll'](_0x336a59);})[_0x3a7d('0x23')](function(_0x689ae5){_0x2da02e['rows']=_0x689ae5;return _0x2da02e;})['then'](respondWithFilteredResult(_0x381181,_0x336a59))[_0x3a7d('0x3e')](handleError(_0x381181,null));};exports[_0x3a7d('0x3f')]=function(_0x4d8596,_0xd140a0){var _0x4711f1={'raw':![],'where':{'id':_0x4d8596[_0x3a7d('0x40')]['id']}},_0x2c7422={};_0x2c7422['model']=_[_0x3a7d('0x2f')](db['SugarcrmAccount'][_0x3a7d('0x2a')]);_0x2c7422[_0x3a7d('0x2e')]=_[_0x3a7d('0x2f')](_0x4d8596[_0x3a7d('0x2e')]);_0x2c7422[_0x3a7d('0x30')]=_[_0x3a7d('0x31')](_0x2c7422[_0x3a7d('0x32')],_0x2c7422[_0x3a7d('0x2e')]);_0x4711f1[_0x3a7d('0x33')]=_[_0x3a7d('0x31')](_0x2c7422[_0x3a7d('0x32')],qs['fields'](_0x4d8596['query'][_0x3a7d('0x34')]));_0x4711f1[_0x3a7d('0x33')]=_0x4711f1[_0x3a7d('0x33')][_0x3a7d('0x41')]?_0x4711f1[_0x3a7d('0x33')]:_0x2c7422['model'];if(_0x4d8596[_0x3a7d('0x2e')][_0x3a7d('0x3c')]){_0x4711f1[_0x3a7d('0x3d')]=[{'all':!![]}];}_0x4711f1=_[_0x3a7d('0x3a')]({},_0x4711f1,_0x4d8596[_0x3a7d('0x3b')]);return db[_0x3a7d('0x29')][_0x3a7d('0x42')](_0x4711f1)[_0x3a7d('0x23')](handleEntityNotFound(_0xd140a0,null))['then'](respondWithResult(_0xd140a0,null))[_0x3a7d('0x3e')](handleError(_0xd140a0,null));};exports[_0x3a7d('0x43')]=function(_0x3ef72e,_0x52b3f1){return db[_0x3a7d('0x29')]['create'](_0x3ef72e[_0x3a7d('0x44')],{})[_0x3a7d('0x23')](respondWithResult(_0x52b3f1,0xc9))['catch'](handleError(_0x52b3f1,null));};exports[_0x3a7d('0x22')]=function(_0x4b9fe6,_0x12a73e){if(_0x4b9fe6[_0x3a7d('0x44')]['id']){delete _0x4b9fe6[_0x3a7d('0x44')]['id'];}return db[_0x3a7d('0x29')][_0x3a7d('0x42')]({'where':{'id':_0x4b9fe6['params']['id']}})[_0x3a7d('0x23')](handleEntityNotFound(_0x12a73e,null))[_0x3a7d('0x23')](saveUpdates(_0x4b9fe6[_0x3a7d('0x44')],null))[_0x3a7d('0x23')](respondWithResult(_0x12a73e,null))[_0x3a7d('0x3e')](handleError(_0x12a73e,null));};exports[_0x3a7d('0x45')]=function(_0x2a9f29,_0xa70d33){return db['SugarcrmAccount'][_0x3a7d('0x42')]({'where':{'id':_0x2a9f29[_0x3a7d('0x40')]['id']}})[_0x3a7d('0x23')](handleEntityNotFound(_0xa70d33,null))[_0x3a7d('0x23')](removeEntity(_0xa70d33,null))[_0x3a7d('0x3e')](handleError(_0xa70d33,null));};exports[_0x3a7d('0x46')]=function(_0x2a8b44,_0xfd48bc,_0x306990){var _0x17a9d9={};var _0x7a2335={};var _0x98bc67;var _0xa8cd76;return db['SugarcrmAccount']['findOne']({'where':{'id':_0x2a8b44[_0x3a7d('0x40')]['id']}})['then'](handleEntityNotFound(_0xfd48bc,null))[_0x3a7d('0x23')](function(_0x47a963){if(_0x47a963){_0x98bc67=_0x47a963;_0x7a2335[_0x3a7d('0x32')]=_[_0x3a7d('0x2f')](db[_0x3a7d('0x47')][_0x3a7d('0x2a')]);_0x7a2335['query']=_[_0x3a7d('0x2f')](_0x2a8b44[_0x3a7d('0x2e')]);_0x7a2335['filters']=_[_0x3a7d('0x31')](_0x7a2335['model'],_0x7a2335[_0x3a7d('0x2e')]);_0x17a9d9[_0x3a7d('0x33')]=_['intersection'](_0x7a2335[_0x3a7d('0x32')],qs[_0x3a7d('0x34')](_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x34')]));_0x17a9d9[_0x3a7d('0x33')]=_0x17a9d9[_0x3a7d('0x33')]['length']?_0x17a9d9[_0x3a7d('0x33')]:_0x7a2335[_0x3a7d('0x32')];_0x17a9d9[_0x3a7d('0x37')]=qs[_0x3a7d('0x48')](_0x2a8b44[_0x3a7d('0x2e')]['sort']);_0x17a9d9[_0x3a7d('0x38')]=qs['filters'](_['pick'](_0x2a8b44[_0x3a7d('0x2e')],_0x7a2335[_0x3a7d('0x30')]));if(_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x49')]){_0x17a9d9[_0x3a7d('0x38')]=_[_0x3a7d('0x3a')](_0x17a9d9[_0x3a7d('0x38')],{'$or':_[_0x3a7d('0x28')](_0x17a9d9[_0x3a7d('0x33')],function(_0x24aba1){var _0x1b9056={};_0x1b9056[_0x24aba1]={'$like':'%'+_0x2a8b44[_0x3a7d('0x2e')]['filter']+'%'};return _0x1b9056;})});}_0x17a9d9=_[_0x3a7d('0x3a')]({},_0x17a9d9,_0x2a8b44[_0x3a7d('0x3b')]);return _0x98bc67['getConfigurations'](_0x17a9d9);}})[_0x3a7d('0x23')](function(_0x367bdc){if(_0x367bdc){_0xa8cd76=_0x367bdc[_0x3a7d('0x41')];if(!_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x35')](_0x3a7d('0x36'))){_0x17a9d9['limit']=qs[_0x3a7d('0x1b')](_0x2a8b44[_0x3a7d('0x2e')]['limit']);_0x17a9d9[_0x3a7d('0x19')]=qs['offset'](_0x2a8b44[_0x3a7d('0x2e')][_0x3a7d('0x19')]);}return _0x98bc67[_0x3a7d('0x46')](_0x17a9d9);}})[_0x3a7d('0x23')](function(_0x30d30f){if(_0x30d30f){return _0x30d30f?{'count':_0xa8cd76,'rows':_0x30d30f}:null;}})[_0x3a7d('0x23')](respondWithResult(_0xfd48bc,null))[_0x3a7d('0x3e')](handleError(_0xfd48bc,null));};exports['addConfiguration']=function(_0x8dc025,_0x78a210,_0x1f573f){if(_0x8dc025[_0x3a7d('0x44')]['id']){delete _0x8dc025[_0x3a7d('0x44')]['id'];}return db[_0x3a7d('0x29')]['findOne']({'where':{'id':_0x8dc025[_0x3a7d('0x40')]['id']}})[_0x3a7d('0x23')](handleEntityNotFound(_0x78a210,null))[_0x3a7d('0x23')](function(_0x28b7fd){if(_0x28b7fd){_0x8dc025['body'][_0x3a7d('0x4a')]=_0x28b7fd['id'];_0x8dc025[_0x3a7d('0x44')]['Subjects']=integrations[_0x3a7d('0x4b')](_0x8dc025[_0x3a7d('0x44')]['channel'],_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x2c')]);_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x4c')]=integrations['getDescriptions'](_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x4d')],_0x8dc025[_0x3a7d('0x44')][_0x3a7d('0x2c')]);return db['SugarcrmConfiguration'][_0x3a7d('0x43')](_0x8dc025[_0x3a7d('0x44')],{'include':[{'model':db[_0x3a7d('0x4e')],'as':_0x3a7d('0x4f')},{'model':db['SugarcrmField'],'as':_0x3a7d('0x4c')}]});}return null;})[_0x3a7d('0x23')](respondWithResult(_0x78a210,null))[_0x3a7d('0x3e')](handleError(_0x78a210,null));};exports[_0x3a7d('0x50')]=function(_0x432c59,_0x2df38c,_0x681521){var _0x1100cf='';var _0xe8ab66=['id','name',_0x3a7d('0x51'),_0x3a7d('0x52'),'description',_0x3a7d('0x53'),_0x3a7d('0x54'),_0x3a7d('0x55'),'parent_id',_0x3a7d('0x56'),'parent_name',_0x3a7d('0x57')];return db[_0x3a7d('0x29')][_0x3a7d('0x58')]({'where':{'id':_0x432c59[_0x3a7d('0x40')]['id']},'attributes':['id',_0x3a7d('0x59'),_0x3a7d('0x5a'),'remoteUri']})[_0x3a7d('0x23')](handleEntityNotFound(_0x2df38c,null))[_0x3a7d('0x23')](function(_0x7f18cd){if(_0x7f18cd){_0x1100cf=_0x7f18cd[_0x3a7d('0x5b')];var _0x3501ef=_0x1100cf[_0x3a7d('0x5c')](-0x1);if(_0x3501ef==='/'){_0x1100cf=_0x1100cf[_0x3a7d('0x5d')](0x0,_0x1100cf[_0x3a7d('0x5e')](_0x3501ef));}return rp({'method':'POST','uri':util['format']('%s%s',_0x1100cf,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x3a7d('0x5f'),'input_type':_0x3a7d('0x60'),'response_type':_0x3a7d('0x60'),'rest_data':JSON[_0x3a7d('0x61')]({'user_auth':{'user_name':_0x7f18cd[_0x3a7d('0x59')],'password':_0x7f18cd['password'],'encryption':_0x3a7d('0x62')},'application':_0x3a7d('0x63')})}});}})[_0x3a7d('0x23')](function(_0x2401f4){if(_0x2401f4&&_0x2401f4['name']!==_0x3a7d('0x64')&&_0x2401f4['name']!=='Password\x20Expired'){return rp({'method':_0x3a7d('0x65'),'uri':util[_0x3a7d('0x66')]('%s%s',_0x1100cf,_0x3a7d('0x67')),'json':!![],'form':{'method':_0x3a7d('0x68'),'input_type':_0x3a7d('0x60'),'response_type':_0x3a7d('0x60'),'rest_data':JSON[_0x3a7d('0x61')]({'session':_0x2401f4['id'],'module_name':_0x3a7d('0x69')})}})[_0x3a7d('0x23')](function(_0x217a44){if(_0x217a44){var _0x4279e8=_[_0x3a7d('0x6a')](_0x217a44['module_fields']);_[_0x3a7d('0x6b')](_0x4279e8,function(_0x4c0e79){return _0xe8ab66['includes'](_0x4c0e79[_0x3a7d('0x25')]);});return{'count':_0x4279e8[_0x3a7d('0x41')],'rows':_[_0x3a7d('0x28')](_0x4279e8,function(_0x45387c){return{'id':_0x45387c['name'],'name':_0x45387c[_0x3a7d('0x6c')],'custom':_[_0x3a7d('0x6d')](_0x45387c[_0x3a7d('0x25')],'_c')?!![]:![],'options':_0x45387c['options']?_['map'](_[_0x3a7d('0x6a')](_0x45387c['options']),function(_0xb55b08){return{'name':_0xb55b08[_0x3a7d('0x6e')],'value':_0xb55b08[_0x3a7d('0x25')]};}):[]};})};}})['then'](respondWithResult(_0x2df38c,null))['catch'](function(_0x1a6b59){var _0x43d23f=_0x432c59[_0x3a7d('0x2e')][_0x3a7d('0x6f')]?0x1f4:_0x1a6b59[_0x3a7d('0x70')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x3a7d('0x50'),_0x43d23f,JSON[_0x3a7d('0x61')](_0x1a6b59));delete _0x1a6b59[_0x3a7d('0x25')];if(_0x43d23f===0x191){_0x43d23f=0x190;}_0x2df38c['status'](_0x43d23f)[_0x3a7d('0x26')](_0x432c59[_0x3a7d('0x2e')][_0x3a7d('0x6f')]?{'message':_0x3a7d('0x71'),'statusCode':_0x1a6b59['statusCode']}:_0x1a6b59);});}else{var _0x54111a=0x1f4;_0x2df38c[_0x3a7d('0x16')](_0x54111a)[_0x3a7d('0x26')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
index bd4af02..e8bc8df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd276=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','./intSugarcrmAccount.attributes','../../components/integrations/configuration','int_sugarcrm_accounts','lodash'];(function(_0x5710ed,_0x3198aa){var _0x3f656f=function(_0x3ee9cd){while(--_0x3ee9cd){_0x5710ed['push'](_0x5710ed['shift']());}};_0x3f656f(++_0x3198aa);}(_0xd276,0xfc));var _0x6d27=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xd276[_0xf71120];return _0xbe2fd3;};'use strict';var _=require(_0x6d27('0x0'));var util=require(_0x6d27('0x1'));var logger=require(_0x6d27('0x2'))(_0x6d27('0x3'));var moment=require('moment');var BPromise=require(_0x6d27('0x4'));var rp=require(_0x6d27('0x5'));var fs=require('fs');var path=require(_0x6d27('0x6'));var rimraf=require(_0x6d27('0x7'));var config=require('../../config/environment');var attributes=require(_0x6d27('0x8'));var integrations=require(_0x6d27('0x9'));module['exports']=function(_0x3060f5,_0x422029){return _0x3060f5['define']('SugarcrmAccount',attributes,{'tableName':_0x6d27('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfaf6=['request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount','int_sugarcrm_accounts','util','../../config/logger','api','moment','bluebird'];(function(_0x4652e3,_0x5348a7){var _0x1b55c1=function(_0x1ca9b8){while(--_0x1ca9b8){_0x4652e3['push'](_0x4652e3['shift']());}};_0x1b55c1(++_0x5348a7);}(_0xfaf6,0xcd));var _0x6faf=function(_0x20151c,_0x340afa){_0x20151c=_0x20151c-0x0;var _0xaeff0d=_0xfaf6[_0x20151c];return _0xaeff0d;};'use strict';var _=require('lodash');var util=require(_0x6faf('0x0'));var logger=require(_0x6faf('0x1'))(_0x6faf('0x2'));var moment=require(_0x6faf('0x3'));var BPromise=require(_0x6faf('0x4'));var rp=require(_0x6faf('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6faf('0x6'));var config=require(_0x6faf('0x7'));var attributes=require(_0x6faf('0x8'));var integrations=require(_0x6faf('0x9'));module[_0x6faf('0xa')]=function(_0x21c61c,_0x556e4d){return _0x21c61c[_0x6faf('0xb')](_0x6faf('0xc'),attributes,{'tableName':_0x6faf('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f4fd4b0..c726714 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef48=['map','attributes','ShowSugarcrmAccount','SugarcrmAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','request','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetSugarcrmAccount','findAll','options','raw','where','limit','include','model'];(function(_0x308de4,_0x55b6e2){var _0x5e569f=function(_0x4eb8c1){while(--_0x4eb8c1){_0x308de4['push'](_0x308de4['shift']());}};_0x5e569f(++_0x55b6e2);}(_0xef48,0x1bf));var _0x8ef4=function(_0x206ef0,_0x551c1d){_0x206ef0=_0x206ef0-0x0;var _0x596667=_0xef48[_0x206ef0];return _0x596667;};'use strict';var _=require(_0x8ef4('0x0'));var util=require(_0x8ef4('0x1'));var moment=require(_0x8ef4('0x2'));var BPromise=require(_0x8ef4('0x3'));var rs=require(_0x8ef4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8ef4('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8ef4('0x6'))(_0x8ef4('0x7'));var config=require(_0x8ef4('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x6204f6,_0x37ff78,_0x178d16){return new BPromise(function(_0x3e552b,_0x4b94bf){return client[_0x8ef4('0x9')](_0x6204f6,_0x178d16)[_0x8ef4('0xa')](function(_0x592281){logger[_0x8ef4('0xb')](_0x8ef4('0xc'),_0x37ff78,_0x8ef4('0xd'));logger[_0x8ef4('0xe')](_0x8ef4('0xf'),_0x37ff78,_0x8ef4('0xd'),JSON[_0x8ef4('0x10')](_0x592281));if(_0x592281[_0x8ef4('0x11')]){if(_0x592281[_0x8ef4('0x11')][_0x8ef4('0x12')]===0x1f4){logger[_0x8ef4('0x11')](_0x8ef4('0xc'),_0x37ff78,_0x592281[_0x8ef4('0x11')][_0x8ef4('0x13')]);return _0x4b94bf(_0x592281[_0x8ef4('0x11')][_0x8ef4('0x13')]);}logger[_0x8ef4('0x11')](_0x8ef4('0xc'),_0x37ff78,_0x592281[_0x8ef4('0x11')]['message']);return _0x3e552b(_0x592281[_0x8ef4('0x11')][_0x8ef4('0x13')]);}else{logger[_0x8ef4('0xb')](_0x8ef4('0xc'),_0x37ff78,_0x8ef4('0xd'));_0x3e552b(_0x592281['result'][_0x8ef4('0x13')]);}})[_0x8ef4('0x14')](function(_0x4c1861){logger[_0x8ef4('0x11')](_0x8ef4('0xc'),_0x37ff78,_0x4c1861);_0x4b94bf(_0x4c1861);});});}exports[_0x8ef4('0x15')]=function(_0x4d8e9e){var _0x4f5638=this;return new Promise(function(_0x6aa16f,_0x2ec96e){return db['SugarcrmAccount'][_0x8ef4('0x16')]({'raw':_0x4d8e9e[_0x8ef4('0x17')]?_0x4d8e9e['options'][_0x8ef4('0x18')]===undefined?!![]:![]:!![],'where':_0x4d8e9e[_0x8ef4('0x17')]?_0x4d8e9e['options'][_0x8ef4('0x19')]||null:null,'attributes':_0x4d8e9e[_0x8ef4('0x17')]?_0x4d8e9e[_0x8ef4('0x17')]['attributes']||null:null,'limit':_0x4d8e9e[_0x8ef4('0x17')]?_0x4d8e9e[_0x8ef4('0x17')][_0x8ef4('0x1a')]||null:null,'include':_0x4d8e9e[_0x8ef4('0x17')]?_0x4d8e9e[_0x8ef4('0x17')][_0x8ef4('0x1b')]?_['map'](_0x4d8e9e[_0x8ef4('0x17')]['include'],function(_0x255229){return{'model':db[_0x255229[_0x8ef4('0x1c')]],'as':_0x255229['as'],'attributes':_0x255229['attributes'],'include':_0x255229[_0x8ef4('0x1b')]?_[_0x8ef4('0x1d')](_0x255229[_0x8ef4('0x1b')],function(_0x421adf){return{'model':db[_0x421adf[_0x8ef4('0x1c')]],'as':_0x421adf['as'],'attributes':_0x421adf['attributes'],'include':_0x421adf[_0x8ef4('0x1b')]?_[_0x8ef4('0x1d')](_0x421adf[_0x8ef4('0x1b')],function(_0x1f4f00){return{'model':db[_0x1f4f00[_0x8ef4('0x1c')]],'as':_0x1f4f00['as'],'attributes':_0x1f4f00[_0x8ef4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8ef4('0xa')](function(_0x289495){logger[_0x8ef4('0xb')](_0x8ef4('0x15'),_0x4d8e9e);logger[_0x8ef4('0xe')](_0x8ef4('0x15'),_0x4d8e9e,JSON[_0x8ef4('0x10')](_0x289495));_0x6aa16f(_0x289495);})[_0x8ef4('0x14')](function(_0x56c7ef){logger[_0x8ef4('0x11')](_0x8ef4('0x15'),_0x56c7ef[_0x8ef4('0x13')],_0x4d8e9e);_0x2ec96e(_0x4f5638[_0x8ef4('0x11')](0x1f4,_0x56c7ef[_0x8ef4('0x13')]));});});};exports[_0x8ef4('0x1f')]=function(_0x47a1e4){var _0x519eed=this;return new Promise(function(_0x33a35d,_0x357fce){return db[_0x8ef4('0x20')][_0x8ef4('0x21')]({'raw':_0x47a1e4['options']?_0x47a1e4['options'][_0x8ef4('0x18')]===undefined?!![]:![]:!![],'where':_0x47a1e4['options']?_0x47a1e4[_0x8ef4('0x17')]['where']||null:null,'attributes':_0x47a1e4[_0x8ef4('0x17')]?_0x47a1e4[_0x8ef4('0x17')][_0x8ef4('0x1e')]||null:null,'include':_0x47a1e4[_0x8ef4('0x17')]?_0x47a1e4[_0x8ef4('0x17')][_0x8ef4('0x1b')]?_[_0x8ef4('0x1d')](_0x47a1e4[_0x8ef4('0x17')][_0x8ef4('0x1b')],function(_0x26f485){return{'model':db[_0x26f485['model']],'as':_0x26f485['as'],'attributes':_0x26f485[_0x8ef4('0x1e')],'include':_0x26f485['include']?_[_0x8ef4('0x1d')](_0x26f485[_0x8ef4('0x1b')],function(_0x4c8d2e){return{'model':db[_0x4c8d2e[_0x8ef4('0x1c')]],'as':_0x4c8d2e['as'],'attributes':_0x4c8d2e[_0x8ef4('0x1e')],'include':_0x4c8d2e[_0x8ef4('0x1b')]?_[_0x8ef4('0x1d')](_0x4c8d2e['include'],function(_0xe00157){return{'model':db[_0xe00157[_0x8ef4('0x1c')]],'as':_0xe00157['as'],'attributes':_0xe00157[_0x8ef4('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8ef4('0xa')](function(_0x865559){logger[_0x8ef4('0xb')]('ShowSugarcrmAccount',_0x47a1e4);logger[_0x8ef4('0xe')](_0x8ef4('0x1f'),_0x47a1e4,JSON[_0x8ef4('0x10')](_0x865559));_0x33a35d(_0x865559);})[_0x8ef4('0x14')](function(_0x2930a6){logger[_0x8ef4('0x11')](_0x8ef4('0x1f'),_0x2930a6['message'],_0x47a1e4);_0x357fce(_0x519eed[_0x8ef4('0x11')](0x1f4,_0x2930a6[_0x8ef4('0x13')]));});});};
\ No newline at end of file
+var _0x2820=['options','raw','where','attributes','limit','include','map','model','debug','ShowSugarcrmAccount','find','util','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','SugarcrmAccount,\x20%s,\x20%s','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetSugarcrmAccount','SugarcrmAccount','findAll'];(function(_0x123911,_0x361093){var _0x261713=function(_0x20952f){while(--_0x20952f){_0x123911['push'](_0x123911['shift']());}};_0x261713(++_0x361093);}(_0x2820,0x1e7));var _0x0282=function(_0x360cd1,_0x4bf479){_0x360cd1=_0x360cd1-0x0;var _0x13314b=_0x2820[_0x360cd1];return _0x13314b;};'use strict';var _=require('lodash');var util=require(_0x0282('0x0'));var moment=require(_0x0282('0x1'));var BPromise=require(_0x0282('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0282('0x3'))['db'];var utils=require(_0x0282('0x4'));var logger=require('../../config/logger')(_0x0282('0x5'));var config=require(_0x0282('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x0282('0x7')][_0x0282('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x203635,_0x525939,_0x25be7a){return new BPromise(function(_0x1795e6,_0x48a553){return client['request'](_0x203635,_0x25be7a)[_0x0282('0x9')](function(_0x58418a){logger['info'](_0x0282('0xa'),_0x525939,_0x0282('0xb'));logger['debug'](_0x0282('0xc'),_0x525939,_0x0282('0xb'),JSON[_0x0282('0xd')](_0x58418a));if(_0x58418a[_0x0282('0xe')]){if(_0x58418a[_0x0282('0xe')][_0x0282('0xf')]===0x1f4){logger['error'](_0x0282('0xa'),_0x525939,_0x58418a[_0x0282('0xe')][_0x0282('0x10')]);return _0x48a553(_0x58418a['error'][_0x0282('0x10')]);}logger[_0x0282('0xe')](_0x0282('0xa'),_0x525939,_0x58418a[_0x0282('0xe')][_0x0282('0x10')]);return _0x1795e6(_0x58418a[_0x0282('0xe')][_0x0282('0x10')]);}else{logger[_0x0282('0x11')](_0x0282('0xa'),_0x525939,_0x0282('0xb'));_0x1795e6(_0x58418a[_0x0282('0x12')][_0x0282('0x10')]);}})[_0x0282('0x13')](function(_0x3eeacc){logger['error'](_0x0282('0xa'),_0x525939,_0x3eeacc);_0x48a553(_0x3eeacc);});});}exports[_0x0282('0x14')]=function(_0xdb3795){var _0xf00ad3=this;return new Promise(function(_0x373c1c,_0x1c2fb6){return db[_0x0282('0x15')][_0x0282('0x16')]({'raw':_0xdb3795[_0x0282('0x17')]?_0xdb3795[_0x0282('0x17')][_0x0282('0x18')]===undefined?!![]:![]:!![],'where':_0xdb3795[_0x0282('0x17')]?_0xdb3795[_0x0282('0x17')][_0x0282('0x19')]||null:null,'attributes':_0xdb3795[_0x0282('0x17')]?_0xdb3795[_0x0282('0x17')][_0x0282('0x1a')]||null:null,'limit':_0xdb3795['options']?_0xdb3795[_0x0282('0x17')][_0x0282('0x1b')]||null:null,'include':_0xdb3795[_0x0282('0x17')]?_0xdb3795['options'][_0x0282('0x1c')]?_[_0x0282('0x1d')](_0xdb3795[_0x0282('0x17')][_0x0282('0x1c')],function(_0x2728c6){return{'model':db[_0x2728c6[_0x0282('0x1e')]],'as':_0x2728c6['as'],'attributes':_0x2728c6[_0x0282('0x1a')],'include':_0x2728c6[_0x0282('0x1c')]?_[_0x0282('0x1d')](_0x2728c6[_0x0282('0x1c')],function(_0xd51603){return{'model':db[_0xd51603[_0x0282('0x1e')]],'as':_0xd51603['as'],'attributes':_0xd51603[_0x0282('0x1a')],'include':_0xd51603[_0x0282('0x1c')]?_['map'](_0xd51603['include'],function(_0x5d9305){return{'model':db[_0x5d9305[_0x0282('0x1e')]],'as':_0x5d9305['as'],'attributes':_0x5d9305['attributes']};}):[]};}):[]};}):[]:[]})[_0x0282('0x9')](function(_0x408c2e){logger['info'](_0x0282('0x14'),_0xdb3795);logger[_0x0282('0x1f')](_0x0282('0x14'),_0xdb3795,JSON[_0x0282('0xd')](_0x408c2e));_0x373c1c(_0x408c2e);})[_0x0282('0x13')](function(_0x5d7b45){logger[_0x0282('0xe')](_0x0282('0x14'),_0x5d7b45[_0x0282('0x10')],_0xdb3795);_0x1c2fb6(_0xf00ad3[_0x0282('0xe')](0x1f4,_0x5d7b45['message']));});});};exports[_0x0282('0x20')]=function(_0x35bccf){var _0x43075b=this;return new Promise(function(_0x24e8c1,_0x1a3017){return db[_0x0282('0x15')][_0x0282('0x21')]({'raw':_0x35bccf[_0x0282('0x17')]?_0x35bccf['options'][_0x0282('0x18')]===undefined?!![]:![]:!![],'where':_0x35bccf[_0x0282('0x17')]?_0x35bccf['options'][_0x0282('0x19')]||null:null,'attributes':_0x35bccf[_0x0282('0x17')]?_0x35bccf[_0x0282('0x17')]['attributes']||null:null,'include':_0x35bccf[_0x0282('0x17')]?_0x35bccf[_0x0282('0x17')]['include']?_['map'](_0x35bccf[_0x0282('0x17')][_0x0282('0x1c')],function(_0x834d89){return{'model':db[_0x834d89['model']],'as':_0x834d89['as'],'attributes':_0x834d89[_0x0282('0x1a')],'include':_0x834d89[_0x0282('0x1c')]?_['map'](_0x834d89[_0x0282('0x1c')],function(_0x5ca2db){return{'model':db[_0x5ca2db['model']],'as':_0x5ca2db['as'],'attributes':_0x5ca2db[_0x0282('0x1a')],'include':_0x5ca2db[_0x0282('0x1c')]?_[_0x0282('0x1d')](_0x5ca2db[_0x0282('0x1c')],function(_0x3bcec4){return{'model':db[_0x3bcec4['model']],'as':_0x3bcec4['as'],'attributes':_0x3bcec4['attributes']};}):[]};}):[]};}):[]:[]})[_0x0282('0x9')](function(_0x11d118){logger['info']('ShowSugarcrmAccount',_0x35bccf);logger[_0x0282('0x1f')](_0x0282('0x20'),_0x35bccf,JSON[_0x0282('0xd')](_0x11d118));_0x24e8c1(_0x11d118);})[_0x0282('0x13')](function(_0x2b08f4){logger[_0x0282('0xe')](_0x0282('0x20'),_0x2b08f4[_0x0282('0x10')],_0x35bccf);_0x1a3017(_0x43075b[_0x0282('0xe')](0x1f4,_0x2b08f4[_0x0282('0x10')]));});});};
\ No newline at end of file
index 5b72735..1e89a98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae0=['getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','update','delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields'];(function(_0x528989,_0x349be5){var _0x51c812=function(_0x38661b){while(--_0x38661b){_0x528989['push'](_0x528989['shift']());}};_0x51c812(++_0x349be5);}(_0x6ae0,0x105));var _0x06ae=function(_0x414322,_0x1b4fb0){_0x414322=_0x414322-0x0;var _0x3a0c40=_0x6ae0[_0x414322];return _0x3a0c40;};'use strict';var multer=require(_0x06ae('0x0'));var util=require(_0x06ae('0x1'));var path=require(_0x06ae('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x06ae('0x3'));var auth=require(_0x06ae('0x4'));var interaction=require(_0x06ae('0x5'));var config=require(_0x06ae('0x6'));var controller=require(_0x06ae('0x7'));router['get']('/',auth[_0x06ae('0x8')](),controller[_0x06ae('0x9')]);router[_0x06ae('0xa')](_0x06ae('0xb'),auth['isAuthenticated'](),controller[_0x06ae('0xc')]);router[_0x06ae('0xa')](_0x06ae('0xd'),auth[_0x06ae('0x8')](),controller[_0x06ae('0xe')]);router[_0x06ae('0xa')](_0x06ae('0xf'),auth[_0x06ae('0x8')](),controller[_0x06ae('0x10')]);router[_0x06ae('0xa')](_0x06ae('0x11'),auth['isAuthenticated'](),controller[_0x06ae('0x12')]);router[_0x06ae('0x13')]('/',auth[_0x06ae('0x8')](),controller['create']);router[_0x06ae('0x14')]('/:id',auth[_0x06ae('0x8')](),controller[_0x06ae('0x15')]);router[_0x06ae('0x16')](_0x06ae('0xb'),auth['isAuthenticated'](),controller[_0x06ae('0x17')]);module[_0x06ae('0x18')]=router;
\ No newline at end of file
+var _0x44fb=['put','update','destroy','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','post','create'];(function(_0x58e078,_0x29d415){var _0x3349f2=function(_0x5920d7){while(--_0x5920d7){_0x58e078['push'](_0x58e078['shift']());}};_0x3349f2(++_0x29d415);}(_0x44fb,0x1a8));var _0xb44f=function(_0x167cfa,_0x8af9ef){_0x167cfa=_0x167cfa-0x0;var _0x427357=_0x44fb[_0x167cfa];return _0x427357;};'use strict';var multer=require(_0xb44f('0x0'));var util=require(_0xb44f('0x1'));var path=require('path');var timeout=require(_0xb44f('0x2'));var express=require(_0xb44f('0x3'));var router=express[_0xb44f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb44f('0x5'));var interaction=require(_0xb44f('0x6'));var config=require(_0xb44f('0x7'));var controller=require('./intSugarcrmConfiguration.controller');router[_0xb44f('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb44f('0x8')](_0xb44f('0x9'),auth[_0xb44f('0xa')](),controller[_0xb44f('0xb')]);router[_0xb44f('0x8')]('/:id/fields',auth[_0xb44f('0xa')](),controller['getFields']);router['get'](_0xb44f('0xc'),auth[_0xb44f('0xa')](),controller[_0xb44f('0xd')]);router[_0xb44f('0x8')](_0xb44f('0xe'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0xb44f('0xf')]('/',auth[_0xb44f('0xa')](),controller[_0xb44f('0x10')]);router[_0xb44f('0x11')](_0xb44f('0x9'),auth[_0xb44f('0xa')](),controller[_0xb44f('0x12')]);router['delete'](_0xb44f('0x9'),auth[_0xb44f('0xa')](),controller[_0xb44f('0x13')]);module[_0xb44f('0x14')]=router;
\ No newline at end of file
index 30c188f..ba5788c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9600=['exports','STRING','sequelize'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9600,0x6e));var _0x0960=function(_0x4f2f3b,_0x97a06){_0x4f2f3b=_0x4f2f3b-0x0;var _0x26b2e0=_0x9600[_0x4f2f3b];return _0x26b2e0;};'use strict';var Sequelize=require(_0x0960('0x0'));module[_0x0960('0x1')]={'name':{'type':Sequelize[_0x0960('0x2')]},'description':{'type':Sequelize[_0x0960('0x2')]}};
\ No newline at end of file
+var _0x80f6=['STRING','sequelize','exports'];(function(_0x5e709a,_0x1d7975){var _0x57401a=function(_0x27eab5){while(--_0x27eab5){_0x5e709a['push'](_0x5e709a['shift']());}};_0x57401a(++_0x1d7975);}(_0x80f6,0x13c));var _0x680f=function(_0x141491,_0x22a272){_0x141491=_0x141491-0x0;var _0xdd712b=_0x80f6[_0x141491];return _0xdd712b;};'use strict';var Sequelize=require(_0x680f('0x0'));module[_0x680f('0x1')]={'name':{'type':Sequelize[_0x680f('0x2')]},'description':{'type':Sequelize[_0x680f('0x2')]}};
\ No newline at end of file
index 22e5255..394848a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc432=['destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','SugarcrmConfiguration','includeAll','include','findAll','rows','params','fields','options','find','create','body','update','catch','getFields','findOne','nolimit','getSubjects','getDescriptions','SugarcrmField','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../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','Content-Range','reject','save','then'];(function(_0x50b847,_0x34e03a){var _0xea0877=function(_0x10b5d0){while(--_0x10b5d0){_0x50b847['push'](_0x50b847['shift']());}};_0xea0877(++_0x34e03a);}(_0xc432,0x1c6));var _0x2c43=function(_0x2f94c5,_0x4714e7){_0x2f94c5=_0x2f94c5-0x0;var _0x492573=_0xc432[_0x2f94c5];return _0x492573;};'use strict';var emlformat=require(_0x2c43('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2c43('0x1'));var jsonpatch=require(_0x2c43('0x2'));var rp=require(_0x2c43('0x3'));var moment=require(_0x2c43('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2c43('0x5'));var path=require(_0x2c43('0x6'));var sox=require(_0x2c43('0x7'));var csv=require(_0x2c43('0x8'));var ejs=require(_0x2c43('0x9'));var fs=require('fs');var fs_extra=require(_0x2c43('0xa'));var _=require(_0x2c43('0xb'));var squel=require(_0x2c43('0xc'));var crypto=require(_0x2c43('0xd'));var jsforce=require(_0x2c43('0xe'));var deskjs=require(_0x2c43('0xf'));var toCsv=require(_0x2c43('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2c43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2c43('0x11'));var as=require(_0x2c43('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c43('0x13'))(_0x2c43('0x14'));var utils=require(_0x2c43('0x15'));var config=require(_0x2c43('0x16'));var licenseUtil=require(_0x2c43('0x17'));var db=require(_0x2c43('0x18'))['db'];function respondWithStatusCode(_0xf20cfd,_0x5c6bf7){_0x5c6bf7=_0x5c6bf7||0xcc;return function(_0x1ca299){if(_0x1ca299){return _0xf20cfd[_0x2c43('0x19')](_0x5c6bf7);}return _0xf20cfd[_0x2c43('0x1a')](_0x5c6bf7)[_0x2c43('0x1b')]();};}function respondWithResult(_0x5d8941,_0x267689){_0x267689=_0x267689||0xc8;return function(_0x2dc367){if(_0x2dc367){return _0x5d8941[_0x2c43('0x1a')](_0x267689)[_0x2c43('0x1c')](_0x2dc367);}};}function respondWithFilteredResult(_0x359a71,_0x4e0737){return function(_0x320093){if(_0x320093){var _0x479a41=typeof _0x4e0737[_0x2c43('0x1d')]==='undefined'&&typeof _0x4e0737[_0x2c43('0x1e')]===_0x2c43('0x1f');var _0x83d477=_0x320093['count'];var _0x17f511=_0x479a41?0x0:_0x4e0737[_0x2c43('0x1d')];var _0x3d71f0=_0x479a41?_0x320093[_0x2c43('0x20')]:_0x4e0737[_0x2c43('0x1d')]+_0x4e0737[_0x2c43('0x1e')];var _0x47a5bb;if(_0x3d71f0>=_0x83d477){_0x3d71f0=_0x83d477;_0x47a5bb=0xc8;}else{_0x47a5bb=0xce;}_0x359a71['status'](_0x47a5bb);return _0x359a71[_0x2c43('0x21')](_0x2c43('0x22'),_0x17f511+'-'+_0x3d71f0+'/'+_0x83d477)[_0x2c43('0x1c')](_0x320093);}return null;};}function patchUpdates(_0x336373){return function(_0x4494bf){try{jsonpatch['apply'](_0x4494bf,_0x336373,!![]);}catch(_0x5eb249){return BPromise[_0x2c43('0x23')](_0x5eb249);}return _0x4494bf[_0x2c43('0x24')]();};}function saveUpdates(_0x422286,_0x383abd){return function(_0x57226b){if(_0x57226b){return _0x57226b['update'](_0x422286)[_0x2c43('0x25')](function(_0x1532e8){return _0x1532e8;});}return null;};}function removeEntity(_0x3a2ccf,_0x3c29f2){return function(_0x177da7){if(_0x177da7){return _0x177da7[_0x2c43('0x26')]()[_0x2c43('0x25')](function(){_0x3a2ccf['status'](0xcc)[_0x2c43('0x1b')]();});}};}function handleEntityNotFound(_0x3b5cdc,_0x211cb6){return function(_0x3a0e27){if(!_0x3a0e27){_0x3b5cdc['sendStatus'](0x194);}return _0x3a0e27;};}function handleError(_0x10d0b5,_0x230e33){_0x230e33=_0x230e33||0x1f4;return function(_0x107a0e){logger[_0x2c43('0x27')](_0x107a0e[_0x2c43('0x28')]);if(_0x107a0e[_0x2c43('0x29')]){delete _0x107a0e['name'];}_0x10d0b5[_0x2c43('0x1a')](_0x230e33)[_0x2c43('0x2a')](_0x107a0e);};}exports[_0x2c43('0x2b')]=function(_0x595ff5,_0x296ccf){var _0x583bd0={},_0x26440b={},_0xa92266={'count':0x0,'rows':[]};var _0x50ec24=_[_0x2c43('0x2c')](db['SugarcrmConfiguration'][_0x2c43('0x2d')],function(_0x30baeb){return{'name':_0x30baeb[_0x2c43('0x2e')],'type':_0x30baeb['type'][_0x2c43('0x2f')]};});_0x26440b[_0x2c43('0x30')]=_[_0x2c43('0x2c')](_0x50ec24,_0x2c43('0x29'));_0x26440b[_0x2c43('0x31')]=_[_0x2c43('0x32')](_0x595ff5[_0x2c43('0x31')]);_0x26440b[_0x2c43('0x33')]=_[_0x2c43('0x34')](_0x26440b[_0x2c43('0x30')],_0x26440b[_0x2c43('0x31')]);_0x583bd0[_0x2c43('0x35')]=_[_0x2c43('0x34')](_0x26440b[_0x2c43('0x30')],qs['fields'](_0x595ff5['query']['fields']));_0x583bd0[_0x2c43('0x35')]=_0x583bd0[_0x2c43('0x35')][_0x2c43('0x36')]?_0x583bd0[_0x2c43('0x35')]:_0x26440b['model'];if(!_0x595ff5[_0x2c43('0x31')][_0x2c43('0x37')]('nolimit')){_0x583bd0[_0x2c43('0x1e')]=qs[_0x2c43('0x1e')](_0x595ff5['query'][_0x2c43('0x1e')]);_0x583bd0[_0x2c43('0x1d')]=qs[_0x2c43('0x1d')](_0x595ff5[_0x2c43('0x31')][_0x2c43('0x1d')]);}_0x583bd0[_0x2c43('0x38')]=qs[_0x2c43('0x39')](_0x595ff5[_0x2c43('0x31')]['sort']);_0x583bd0[_0x2c43('0x3a')]=qs[_0x2c43('0x33')](_[_0x2c43('0x3b')](_0x595ff5[_0x2c43('0x31')],_0x26440b[_0x2c43('0x33')]),_0x50ec24);if(_0x595ff5[_0x2c43('0x31')]['filter']){_0x583bd0[_0x2c43('0x3a')]=_[_0x2c43('0x3c')](_0x583bd0[_0x2c43('0x3a')],{'$or':_['map'](_0x50ec24,function(_0x1188ae){if(_0x1188ae['type']!==_0x2c43('0x3d')){var _0x5712c8={};_0x5712c8[_0x1188ae['name']]={'$like':'%'+_0x595ff5[_0x2c43('0x31')][_0x2c43('0x3e')]+'%'};return _0x5712c8;}})});}_0x583bd0=_[_0x2c43('0x3c')]({},_0x583bd0,_0x595ff5['options']);var _0x4c1ae6={'where':_0x583bd0[_0x2c43('0x3a')]};return db[_0x2c43('0x3f')][_0x2c43('0x20')](_0x4c1ae6)[_0x2c43('0x25')](function(_0x5eb212){_0xa92266['count']=_0x5eb212;if(_0x595ff5[_0x2c43('0x31')][_0x2c43('0x40')]){_0x583bd0[_0x2c43('0x41')]=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x2c43('0x42')](_0x583bd0);})[_0x2c43('0x25')](function(_0x149957){_0xa92266[_0x2c43('0x43')]=_0x149957;return _0xa92266;})[_0x2c43('0x25')](respondWithFilteredResult(_0x296ccf,_0x583bd0))['catch'](handleError(_0x296ccf,null));};exports['show']=function(_0x1ff6aa,_0x244127){var _0x50bb2e={'raw':![],'where':{'id':_0x1ff6aa[_0x2c43('0x44')]['id']}},_0x3734b7={};_0x3734b7[_0x2c43('0x30')]=_['keys'](db[_0x2c43('0x3f')]['rawAttributes']);_0x3734b7['query']=_[_0x2c43('0x32')](_0x1ff6aa['query']);_0x3734b7[_0x2c43('0x33')]=_[_0x2c43('0x34')](_0x3734b7[_0x2c43('0x30')],_0x3734b7['query']);_0x50bb2e[_0x2c43('0x35')]=_[_0x2c43('0x34')](_0x3734b7['model'],qs[_0x2c43('0x45')](_0x1ff6aa[_0x2c43('0x31')][_0x2c43('0x45')]));_0x50bb2e[_0x2c43('0x35')]=_0x50bb2e[_0x2c43('0x35')][_0x2c43('0x36')]?_0x50bb2e[_0x2c43('0x35')]:_0x3734b7['model'];if(_0x1ff6aa['query']['includeAll']){_0x50bb2e[_0x2c43('0x41')]=[{'all':!![]}];}_0x50bb2e=_[_0x2c43('0x3c')]({},_0x50bb2e,_0x1ff6aa[_0x2c43('0x46')]);return db[_0x2c43('0x3f')][_0x2c43('0x47')](_0x50bb2e)[_0x2c43('0x25')](handleEntityNotFound(_0x244127,null))[_0x2c43('0x25')](respondWithResult(_0x244127,null))['catch'](handleError(_0x244127,null));};exports[_0x2c43('0x48')]=function(_0x41fef0,_0x46d4ca){return db[_0x2c43('0x3f')][_0x2c43('0x48')](_0x41fef0[_0x2c43('0x49')],{})[_0x2c43('0x25')](respondWithResult(_0x46d4ca,0xc9))['catch'](handleError(_0x46d4ca,null));};exports[_0x2c43('0x4a')]=function(_0x1dd56f,_0x2c7635){if(_0x1dd56f[_0x2c43('0x49')]['id']){delete _0x1dd56f['body']['id'];}return db['SugarcrmConfiguration'][_0x2c43('0x47')]({'where':{'id':_0x1dd56f['params']['id']}})[_0x2c43('0x25')](handleEntityNotFound(_0x2c7635,null))['then'](saveUpdates(_0x1dd56f[_0x2c43('0x49')],null))[_0x2c43('0x25')](respondWithResult(_0x2c7635,null))['catch'](handleError(_0x2c7635,null));};exports[_0x2c43('0x26')]=function(_0x2d35d5,_0x237781){return db[_0x2c43('0x3f')][_0x2c43('0x47')]({'where':{'id':_0x2d35d5[_0x2c43('0x44')]['id']}})['then'](handleEntityNotFound(_0x237781,null))[_0x2c43('0x25')](removeEntity(_0x237781,null))[_0x2c43('0x4b')](handleError(_0x237781,null));};exports[_0x2c43('0x4c')]=function(_0x5b5a80,_0x3a1c9e,_0x3cc961){var _0x1aad15={};var _0x5a4f6a={};var _0x56c9e1;var _0x4f93f6;return db['SugarcrmConfiguration'][_0x2c43('0x4d')]({'where':{'id':_0x5b5a80['params']['id']}})['then'](handleEntityNotFound(_0x3a1c9e,null))[_0x2c43('0x25')](function(_0x497441){if(_0x497441){_0x56c9e1=_0x497441;_0x5a4f6a[_0x2c43('0x30')]=_[_0x2c43('0x32')](db['SugarcrmField'][_0x2c43('0x2d')]);_0x5a4f6a[_0x2c43('0x31')]=_[_0x2c43('0x32')](_0x5b5a80[_0x2c43('0x31')]);_0x5a4f6a[_0x2c43('0x33')]=_[_0x2c43('0x34')](_0x5a4f6a['model'],_0x5a4f6a['query']);_0x1aad15[_0x2c43('0x35')]=_[_0x2c43('0x34')](_0x5a4f6a['model'],qs[_0x2c43('0x45')](_0x5b5a80['query']['fields']));_0x1aad15['attributes']=_0x1aad15[_0x2c43('0x35')]['length']?_0x1aad15[_0x2c43('0x35')]:_0x5a4f6a[_0x2c43('0x30')];_0x1aad15[_0x2c43('0x38')]=qs['sort'](_0x5b5a80[_0x2c43('0x31')][_0x2c43('0x39')]);_0x1aad15[_0x2c43('0x3a')]=qs[_0x2c43('0x33')](_[_0x2c43('0x3b')](_0x5b5a80[_0x2c43('0x31')],_0x5a4f6a[_0x2c43('0x33')]));if(_0x5b5a80['query'][_0x2c43('0x3e')]){_0x1aad15[_0x2c43('0x3a')]=_['merge'](_0x1aad15[_0x2c43('0x3a')],{'$or':_[_0x2c43('0x2c')](_0x1aad15['attributes'],function(_0x278b97){var _0x1a5781={};_0x1a5781[_0x278b97]={'$like':'%'+_0x5b5a80[_0x2c43('0x31')][_0x2c43('0x3e')]+'%'};return _0x1a5781;})});}_0x1aad15=_[_0x2c43('0x3c')]({},_0x1aad15,_0x5b5a80['options']);return _0x56c9e1[_0x2c43('0x4c')](_0x1aad15);}})[_0x2c43('0x25')](function(_0x500de7){if(_0x500de7){_0x4f93f6=_0x500de7['length'];if(!_0x5b5a80[_0x2c43('0x31')][_0x2c43('0x37')](_0x2c43('0x4e'))){_0x1aad15['limit']=qs[_0x2c43('0x1e')](_0x5b5a80[_0x2c43('0x31')][_0x2c43('0x1e')]);_0x1aad15[_0x2c43('0x1d')]=qs[_0x2c43('0x1d')](_0x5b5a80[_0x2c43('0x31')][_0x2c43('0x1d')]);}return _0x56c9e1[_0x2c43('0x4c')](_0x1aad15);}})['then'](function(_0x34ade1){if(_0x34ade1){return _0x34ade1?{'count':_0x4f93f6,'rows':_0x34ade1}:null;}})[_0x2c43('0x25')](respondWithResult(_0x3a1c9e,null))[_0x2c43('0x4b')](handleError(_0x3a1c9e,null));};exports[_0x2c43('0x4f')]=function(_0x13084f,_0x2fe91f,_0x454223){var _0x313c1c={};var _0x149f34={};var _0x42a88e;var _0x32c87f;return db[_0x2c43('0x3f')][_0x2c43('0x4d')]({'where':{'id':_0x13084f['params']['id']}})[_0x2c43('0x25')](handleEntityNotFound(_0x2fe91f,null))[_0x2c43('0x25')](function(_0x29740a){if(_0x29740a){_0x42a88e=_0x29740a;_0x149f34['model']=_['keys'](db['SugarcrmField'][_0x2c43('0x2d')]);_0x149f34['query']=_[_0x2c43('0x32')](_0x13084f[_0x2c43('0x31')]);_0x149f34[_0x2c43('0x33')]=_[_0x2c43('0x34')](_0x149f34['model'],_0x149f34[_0x2c43('0x31')]);_0x313c1c[_0x2c43('0x35')]=_['intersection'](_0x149f34['model'],qs[_0x2c43('0x45')](_0x13084f[_0x2c43('0x31')][_0x2c43('0x45')]));_0x313c1c[_0x2c43('0x35')]=_0x313c1c['attributes'][_0x2c43('0x36')]?_0x313c1c[_0x2c43('0x35')]:_0x149f34[_0x2c43('0x30')];_0x313c1c['order']=qs['sort'](_0x13084f[_0x2c43('0x31')]['sort']);_0x313c1c[_0x2c43('0x3a')]=qs[_0x2c43('0x33')](_[_0x2c43('0x3b')](_0x13084f['query'],_0x149f34[_0x2c43('0x33')]));if(_0x13084f[_0x2c43('0x31')][_0x2c43('0x3e')]){_0x313c1c[_0x2c43('0x3a')]=_[_0x2c43('0x3c')](_0x313c1c[_0x2c43('0x3a')],{'$or':_[_0x2c43('0x2c')](_0x313c1c['attributes'],function(_0x5cf5a0){var _0x15bedd={};_0x15bedd[_0x5cf5a0]={'$like':'%'+_0x13084f[_0x2c43('0x31')][_0x2c43('0x3e')]+'%'};return _0x15bedd;})});}_0x313c1c=_[_0x2c43('0x3c')]({},_0x313c1c,_0x13084f[_0x2c43('0x46')]);return _0x42a88e[_0x2c43('0x4f')](_0x313c1c);}})[_0x2c43('0x25')](function(_0x1527b0){if(_0x1527b0){_0x32c87f=_0x1527b0[_0x2c43('0x36')];if(!_0x13084f[_0x2c43('0x31')][_0x2c43('0x37')](_0x2c43('0x4e'))){_0x313c1c[_0x2c43('0x1e')]=qs[_0x2c43('0x1e')](_0x13084f['query'][_0x2c43('0x1e')]);_0x313c1c['offset']=qs[_0x2c43('0x1d')](_0x13084f[_0x2c43('0x31')][_0x2c43('0x1d')]);}return _0x42a88e['getSubjects'](_0x313c1c);}})[_0x2c43('0x25')](function(_0x57109e){if(_0x57109e){return _0x57109e?{'count':_0x32c87f,'rows':_0x57109e}:null;}})[_0x2c43('0x25')](respondWithResult(_0x2fe91f,null))[_0x2c43('0x4b')](handleError(_0x2fe91f,null));};exports[_0x2c43('0x50')]=function(_0x1e7e64,_0x38c24d,_0x5530fc){var _0x57d09c={};var _0x3a65d7={};var _0x1f052c;var _0x55e126;return db[_0x2c43('0x3f')][_0x2c43('0x4d')]({'where':{'id':_0x1e7e64[_0x2c43('0x44')]['id']}})['then'](handleEntityNotFound(_0x38c24d,null))[_0x2c43('0x25')](function(_0x29ea06){if(_0x29ea06){_0x1f052c=_0x29ea06;_0x3a65d7['model']=_[_0x2c43('0x32')](db[_0x2c43('0x51')][_0x2c43('0x2d')]);_0x3a65d7[_0x2c43('0x31')]=_[_0x2c43('0x32')](_0x1e7e64[_0x2c43('0x31')]);_0x3a65d7[_0x2c43('0x33')]=_[_0x2c43('0x34')](_0x3a65d7['model'],_0x3a65d7['query']);_0x57d09c['attributes']=_[_0x2c43('0x34')](_0x3a65d7['model'],qs[_0x2c43('0x45')](_0x1e7e64[_0x2c43('0x31')][_0x2c43('0x45')]));_0x57d09c[_0x2c43('0x35')]=_0x57d09c['attributes']['length']?_0x57d09c[_0x2c43('0x35')]:_0x3a65d7[_0x2c43('0x30')];_0x57d09c['order']=qs[_0x2c43('0x39')](_0x1e7e64[_0x2c43('0x31')]['sort']);_0x57d09c[_0x2c43('0x3a')]=qs[_0x2c43('0x33')](_[_0x2c43('0x3b')](_0x1e7e64[_0x2c43('0x31')],_0x3a65d7[_0x2c43('0x33')]));if(_0x1e7e64[_0x2c43('0x31')][_0x2c43('0x3e')]){_0x57d09c[_0x2c43('0x3a')]=_[_0x2c43('0x3c')](_0x57d09c[_0x2c43('0x3a')],{'$or':_[_0x2c43('0x2c')](_0x57d09c['attributes'],function(_0x4cb63c){var _0x33da25={};_0x33da25[_0x4cb63c]={'$like':'%'+_0x1e7e64['query'][_0x2c43('0x3e')]+'%'};return _0x33da25;})});}_0x57d09c=_['merge']({},_0x57d09c,_0x1e7e64[_0x2c43('0x46')]);return _0x1f052c[_0x2c43('0x50')](_0x57d09c);}})[_0x2c43('0x25')](function(_0xd35b6c){if(_0xd35b6c){_0x55e126=_0xd35b6c[_0x2c43('0x36')];if(!_0x1e7e64[_0x2c43('0x31')]['hasOwnProperty']('nolimit')){_0x57d09c[_0x2c43('0x1e')]=qs[_0x2c43('0x1e')](_0x1e7e64[_0x2c43('0x31')][_0x2c43('0x1e')]);_0x57d09c[_0x2c43('0x1d')]=qs[_0x2c43('0x1d')](_0x1e7e64[_0x2c43('0x31')][_0x2c43('0x1d')]);}return _0x1f052c[_0x2c43('0x50')](_0x57d09c);}})[_0x2c43('0x25')](function(_0x598dbf){if(_0x598dbf){return _0x598dbf?{'count':_0x55e126,'rows':_0x598dbf}:null;}})[_0x2c43('0x25')](respondWithResult(_0x38c24d,null))[_0x2c43('0x4b')](handleError(_0x38c24d,null));};
\ No newline at end of file
+var _0x4aa6=['type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','SugarcrmConfiguration','findAll','rows','catch','show','params','keys','merge','create','body','find','findOne','SugarcrmField','getFields','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0xbcc4c5,_0x39940f){var _0x2c9d61=function(_0x56d663){while(--_0x56d663){_0xbcc4c5['push'](_0xbcc4c5['shift']());}};_0x2c9d61(++_0x39940f);}(_0x4aa6,0x174));var _0x64aa=function(_0x451dfc,_0x6d474f){_0x451dfc=_0x451dfc-0x0;var _0x3dd56b=_0x4aa6[_0x451dfc];return _0x3dd56b;};'use strict';var emlformat=require(_0x64aa('0x0'));var rimraf=require(_0x64aa('0x1'));var zipdir=require(_0x64aa('0x2'));var jsonpatch=require(_0x64aa('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x64aa('0x4'));var util=require(_0x64aa('0x5'));var path=require(_0x64aa('0x6'));var sox=require(_0x64aa('0x7'));var csv=require(_0x64aa('0x8'));var ejs=require(_0x64aa('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64aa('0xa'));var squel=require('squel');var crypto=require(_0x64aa('0xb'));var jsforce=require(_0x64aa('0xc'));var deskjs=require(_0x64aa('0xd'));var toCsv=require('to-csv');var querystring=require(_0x64aa('0xe'));var Papa=require(_0x64aa('0xf'));var Redis=require(_0x64aa('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x64aa('0x11'));var as=require(_0x64aa('0x12'));var hardwareService=require(_0x64aa('0x13'));var logger=require(_0x64aa('0x14'))(_0x64aa('0x15'));var utils=require(_0x64aa('0x16'));var config=require(_0x64aa('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x64aa('0x18'))['db'];function respondWithStatusCode(_0x156737,_0x312a9b){_0x312a9b=_0x312a9b||0xcc;return function(_0x5164a5){if(_0x5164a5){return _0x156737[_0x64aa('0x19')](_0x312a9b);}return _0x156737['status'](_0x312a9b)['end']();};}function respondWithResult(_0x2bb65d,_0x2a4dbf){_0x2a4dbf=_0x2a4dbf||0xc8;return function(_0x39cf54){if(_0x39cf54){return _0x2bb65d[_0x64aa('0x1a')](_0x2a4dbf)[_0x64aa('0x1b')](_0x39cf54);}};}function respondWithFilteredResult(_0x20077b,_0x2f1a55){return function(_0x4086bb){if(_0x4086bb){var _0x88f3f8=typeof _0x2f1a55['offset']===_0x64aa('0x1c')&&typeof _0x2f1a55[_0x64aa('0x1d')]===_0x64aa('0x1c');var _0x17ce45=_0x4086bb[_0x64aa('0x1e')];var _0x3ada09=_0x88f3f8?0x0:_0x2f1a55[_0x64aa('0x1f')];var _0x198bac=_0x88f3f8?_0x4086bb[_0x64aa('0x1e')]:_0x2f1a55['offset']+_0x2f1a55[_0x64aa('0x1d')];var _0x350451;if(_0x198bac>=_0x17ce45){_0x198bac=_0x17ce45;_0x350451=0xc8;}else{_0x350451=0xce;}_0x20077b[_0x64aa('0x1a')](_0x350451);return _0x20077b[_0x64aa('0x20')](_0x64aa('0x21'),_0x3ada09+'-'+_0x198bac+'/'+_0x17ce45)[_0x64aa('0x1b')](_0x4086bb);}return null;};}function patchUpdates(_0x4881f5){return function(_0x421af9){try{jsonpatch[_0x64aa('0x22')](_0x421af9,_0x4881f5,!![]);}catch(_0x1ab95a){return BPromise[_0x64aa('0x23')](_0x1ab95a);}return _0x421af9[_0x64aa('0x24')]();};}function saveUpdates(_0x1aa2f2,_0x117084){return function(_0x25a5ad){if(_0x25a5ad){return _0x25a5ad[_0x64aa('0x25')](_0x1aa2f2)[_0x64aa('0x26')](function(_0x391dce){return _0x391dce;});}return null;};}function removeEntity(_0xce9880,_0x2f36b7){return function(_0x5a4ee1){if(_0x5a4ee1){return _0x5a4ee1[_0x64aa('0x27')]()[_0x64aa('0x26')](function(){_0xce9880[_0x64aa('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f2d91,_0x53e459){return function(_0x126acc){if(!_0x126acc){_0x5f2d91[_0x64aa('0x19')](0x194);}return _0x126acc;};}function handleError(_0x48cf4f,_0x2bf212){_0x2bf212=_0x2bf212||0x1f4;return function(_0x3ac8f6){logger[_0x64aa('0x28')](_0x3ac8f6[_0x64aa('0x29')]);if(_0x3ac8f6[_0x64aa('0x2a')]){delete _0x3ac8f6[_0x64aa('0x2a')];}_0x48cf4f[_0x64aa('0x1a')](_0x2bf212)[_0x64aa('0x2b')](_0x3ac8f6);};}exports[_0x64aa('0x2c')]=function(_0x599770,_0x517dab){var _0x27bb46={},_0x626bb1={},_0xe77851={'count':0x0,'rows':[]};var _0x4303cf=_[_0x64aa('0x2d')](db['SugarcrmConfiguration'][_0x64aa('0x2e')],function(_0x49c41f){return{'name':_0x49c41f[_0x64aa('0x2f')],'type':_0x49c41f[_0x64aa('0x30')][_0x64aa('0x31')]};});_0x626bb1[_0x64aa('0x32')]=_[_0x64aa('0x2d')](_0x4303cf,_0x64aa('0x2a'));_0x626bb1[_0x64aa('0x33')]=_['keys'](_0x599770[_0x64aa('0x33')]);_0x626bb1[_0x64aa('0x34')]=_['intersection'](_0x626bb1[_0x64aa('0x32')],_0x626bb1[_0x64aa('0x33')]);_0x27bb46[_0x64aa('0x35')]=_[_0x64aa('0x36')](_0x626bb1[_0x64aa('0x32')],qs[_0x64aa('0x37')](_0x599770['query'][_0x64aa('0x37')]));_0x27bb46[_0x64aa('0x35')]=_0x27bb46['attributes'][_0x64aa('0x38')]?_0x27bb46[_0x64aa('0x35')]:_0x626bb1[_0x64aa('0x32')];if(!_0x599770[_0x64aa('0x33')]['hasOwnProperty'](_0x64aa('0x39'))){_0x27bb46[_0x64aa('0x1d')]=qs[_0x64aa('0x1d')](_0x599770[_0x64aa('0x33')][_0x64aa('0x1d')]);_0x27bb46[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x599770[_0x64aa('0x33')][_0x64aa('0x1f')]);}_0x27bb46[_0x64aa('0x3a')]=qs['sort'](_0x599770['query'][_0x64aa('0x3b')]);_0x27bb46[_0x64aa('0x3c')]=qs[_0x64aa('0x34')](_[_0x64aa('0x3d')](_0x599770[_0x64aa('0x33')],_0x626bb1[_0x64aa('0x34')]),_0x4303cf);if(_0x599770[_0x64aa('0x33')][_0x64aa('0x3e')]){_0x27bb46['where']=_['merge'](_0x27bb46[_0x64aa('0x3c')],{'$or':_['map'](_0x4303cf,function(_0x450ded){if(_0x450ded['type']!==_0x64aa('0x3f')){var _0x19a9be={};_0x19a9be[_0x450ded[_0x64aa('0x2a')]]={'$like':'%'+_0x599770[_0x64aa('0x33')][_0x64aa('0x3e')]+'%'};return _0x19a9be;}})});}_0x27bb46=_['merge']({},_0x27bb46,_0x599770[_0x64aa('0x40')]);var _0x375696={'where':_0x27bb46['where']};return db['SugarcrmConfiguration'][_0x64aa('0x1e')](_0x375696)[_0x64aa('0x26')](function(_0x4ded98){_0xe77851[_0x64aa('0x1e')]=_0x4ded98;if(_0x599770[_0x64aa('0x33')][_0x64aa('0x41')]){_0x27bb46[_0x64aa('0x42')]=[{'all':!![]}];}return db[_0x64aa('0x43')][_0x64aa('0x44')](_0x27bb46);})[_0x64aa('0x26')](function(_0x38a733){_0xe77851[_0x64aa('0x45')]=_0x38a733;return _0xe77851;})['then'](respondWithFilteredResult(_0x517dab,_0x27bb46))[_0x64aa('0x46')](handleError(_0x517dab,null));};exports[_0x64aa('0x47')]=function(_0x14f1dc,_0xd495bb){var _0x2ee29b={'raw':![],'where':{'id':_0x14f1dc[_0x64aa('0x48')]['id']}},_0x2f7290={};_0x2f7290[_0x64aa('0x32')]=_[_0x64aa('0x49')](db[_0x64aa('0x43')]['rawAttributes']);_0x2f7290['query']=_[_0x64aa('0x49')](_0x14f1dc['query']);_0x2f7290[_0x64aa('0x34')]=_[_0x64aa('0x36')](_0x2f7290['model'],_0x2f7290[_0x64aa('0x33')]);_0x2ee29b[_0x64aa('0x35')]=_[_0x64aa('0x36')](_0x2f7290[_0x64aa('0x32')],qs[_0x64aa('0x37')](_0x14f1dc[_0x64aa('0x33')][_0x64aa('0x37')]));_0x2ee29b[_0x64aa('0x35')]=_0x2ee29b[_0x64aa('0x35')][_0x64aa('0x38')]?_0x2ee29b['attributes']:_0x2f7290[_0x64aa('0x32')];if(_0x14f1dc['query']['includeAll']){_0x2ee29b[_0x64aa('0x42')]=[{'all':!![]}];}_0x2ee29b=_[_0x64aa('0x4a')]({},_0x2ee29b,_0x14f1dc['options']);return db[_0x64aa('0x43')]['find'](_0x2ee29b)[_0x64aa('0x26')](handleEntityNotFound(_0xd495bb,null))[_0x64aa('0x26')](respondWithResult(_0xd495bb,null))[_0x64aa('0x46')](handleError(_0xd495bb,null));};exports[_0x64aa('0x4b')]=function(_0x5d000b,_0x357a7f){return db[_0x64aa('0x43')][_0x64aa('0x4b')](_0x5d000b[_0x64aa('0x4c')],{})[_0x64aa('0x26')](respondWithResult(_0x357a7f,0xc9))['catch'](handleError(_0x357a7f,null));};exports[_0x64aa('0x25')]=function(_0x30e032,_0x2af7e0){if(_0x30e032[_0x64aa('0x4c')]['id']){delete _0x30e032[_0x64aa('0x4c')]['id'];}return db[_0x64aa('0x43')][_0x64aa('0x4d')]({'where':{'id':_0x30e032[_0x64aa('0x48')]['id']}})[_0x64aa('0x26')](handleEntityNotFound(_0x2af7e0,null))[_0x64aa('0x26')](saveUpdates(_0x30e032[_0x64aa('0x4c')],null))['then'](respondWithResult(_0x2af7e0,null))[_0x64aa('0x46')](handleError(_0x2af7e0,null));};exports['destroy']=function(_0x307578,_0x2ee05e){return db[_0x64aa('0x43')][_0x64aa('0x4d')]({'where':{'id':_0x307578[_0x64aa('0x48')]['id']}})[_0x64aa('0x26')](handleEntityNotFound(_0x2ee05e,null))['then'](removeEntity(_0x2ee05e,null))[_0x64aa('0x46')](handleError(_0x2ee05e,null));};exports['getFields']=function(_0x302a2b,_0x52f819,_0x4d74a5){var _0x367e0d={};var _0x11cd31={};var _0x365a82;var _0x4cdf28;return db[_0x64aa('0x43')][_0x64aa('0x4e')]({'where':{'id':_0x302a2b['params']['id']}})['then'](handleEntityNotFound(_0x52f819,null))[_0x64aa('0x26')](function(_0x33c1e8){if(_0x33c1e8){_0x365a82=_0x33c1e8;_0x11cd31['model']=_[_0x64aa('0x49')](db[_0x64aa('0x4f')][_0x64aa('0x2e')]);_0x11cd31[_0x64aa('0x33')]=_[_0x64aa('0x49')](_0x302a2b['query']);_0x11cd31[_0x64aa('0x34')]=_[_0x64aa('0x36')](_0x11cd31[_0x64aa('0x32')],_0x11cd31[_0x64aa('0x33')]);_0x367e0d[_0x64aa('0x35')]=_[_0x64aa('0x36')](_0x11cd31['model'],qs[_0x64aa('0x37')](_0x302a2b['query'][_0x64aa('0x37')]));_0x367e0d['attributes']=_0x367e0d[_0x64aa('0x35')][_0x64aa('0x38')]?_0x367e0d[_0x64aa('0x35')]:_0x11cd31['model'];_0x367e0d[_0x64aa('0x3a')]=qs[_0x64aa('0x3b')](_0x302a2b[_0x64aa('0x33')][_0x64aa('0x3b')]);_0x367e0d[_0x64aa('0x3c')]=qs[_0x64aa('0x34')](_['pick'](_0x302a2b['query'],_0x11cd31['filters']));if(_0x302a2b[_0x64aa('0x33')][_0x64aa('0x3e')]){_0x367e0d['where']=_[_0x64aa('0x4a')](_0x367e0d[_0x64aa('0x3c')],{'$or':_[_0x64aa('0x2d')](_0x367e0d[_0x64aa('0x35')],function(_0x230576){var _0x34fdbb={};_0x34fdbb[_0x230576]={'$like':'%'+_0x302a2b[_0x64aa('0x33')][_0x64aa('0x3e')]+'%'};return _0x34fdbb;})});}_0x367e0d=_['merge']({},_0x367e0d,_0x302a2b['options']);return _0x365a82[_0x64aa('0x50')](_0x367e0d);}})['then'](function(_0xb4a50e){if(_0xb4a50e){_0x4cdf28=_0xb4a50e[_0x64aa('0x38')];if(!_0x302a2b[_0x64aa('0x33')][_0x64aa('0x51')](_0x64aa('0x39'))){_0x367e0d[_0x64aa('0x1d')]=qs['limit'](_0x302a2b['query'][_0x64aa('0x1d')]);_0x367e0d[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x302a2b[_0x64aa('0x33')]['offset']);}return _0x365a82[_0x64aa('0x50')](_0x367e0d);}})[_0x64aa('0x26')](function(_0x1d3580){if(_0x1d3580){return _0x1d3580?{'count':_0x4cdf28,'rows':_0x1d3580}:null;}})[_0x64aa('0x26')](respondWithResult(_0x52f819,null))['catch'](handleError(_0x52f819,null));};exports['getSubjects']=function(_0x11283d,_0x39d157,_0x2927c5){var _0x2679e4={};var _0x1efd54={};var _0x16bb9c;var _0x31c640;return db[_0x64aa('0x43')][_0x64aa('0x4e')]({'where':{'id':_0x11283d[_0x64aa('0x48')]['id']}})['then'](handleEntityNotFound(_0x39d157,null))['then'](function(_0xd3288a){if(_0xd3288a){_0x16bb9c=_0xd3288a;_0x1efd54['model']=_[_0x64aa('0x49')](db[_0x64aa('0x4f')][_0x64aa('0x2e')]);_0x1efd54['query']=_[_0x64aa('0x49')](_0x11283d[_0x64aa('0x33')]);_0x1efd54['filters']=_[_0x64aa('0x36')](_0x1efd54[_0x64aa('0x32')],_0x1efd54['query']);_0x2679e4['attributes']=_[_0x64aa('0x36')](_0x1efd54[_0x64aa('0x32')],qs['fields'](_0x11283d['query'][_0x64aa('0x37')]));_0x2679e4[_0x64aa('0x35')]=_0x2679e4[_0x64aa('0x35')][_0x64aa('0x38')]?_0x2679e4[_0x64aa('0x35')]:_0x1efd54['model'];_0x2679e4[_0x64aa('0x3a')]=qs[_0x64aa('0x3b')](_0x11283d[_0x64aa('0x33')][_0x64aa('0x3b')]);_0x2679e4[_0x64aa('0x3c')]=qs['filters'](_[_0x64aa('0x3d')](_0x11283d['query'],_0x1efd54[_0x64aa('0x34')]));if(_0x11283d[_0x64aa('0x33')][_0x64aa('0x3e')]){_0x2679e4[_0x64aa('0x3c')]=_['merge'](_0x2679e4[_0x64aa('0x3c')],{'$or':_[_0x64aa('0x2d')](_0x2679e4['attributes'],function(_0x5ee0a2){var _0x1225b9={};_0x1225b9[_0x5ee0a2]={'$like':'%'+_0x11283d[_0x64aa('0x33')][_0x64aa('0x3e')]+'%'};return _0x1225b9;})});}_0x2679e4=_[_0x64aa('0x4a')]({},_0x2679e4,_0x11283d[_0x64aa('0x40')]);return _0x16bb9c[_0x64aa('0x52')](_0x2679e4);}})[_0x64aa('0x26')](function(_0x2e49f4){if(_0x2e49f4){_0x31c640=_0x2e49f4[_0x64aa('0x38')];if(!_0x11283d[_0x64aa('0x33')][_0x64aa('0x51')]('nolimit')){_0x2679e4[_0x64aa('0x1d')]=qs[_0x64aa('0x1d')](_0x11283d[_0x64aa('0x33')][_0x64aa('0x1d')]);_0x2679e4[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x11283d[_0x64aa('0x33')][_0x64aa('0x1f')]);}return _0x16bb9c['getSubjects'](_0x2679e4);}})[_0x64aa('0x26')](function(_0x132ed9){if(_0x132ed9){return _0x132ed9?{'count':_0x31c640,'rows':_0x132ed9}:null;}})[_0x64aa('0x26')](respondWithResult(_0x39d157,null))[_0x64aa('0x46')](handleError(_0x39d157,null));};exports[_0x64aa('0x53')]=function(_0x8237db,_0x33c966,_0x2bcf8d){var _0xcb4f13={};var _0x207082={};var _0x46e182;var _0x4a8d2b;return db[_0x64aa('0x43')][_0x64aa('0x4e')]({'where':{'id':_0x8237db[_0x64aa('0x48')]['id']}})[_0x64aa('0x26')](handleEntityNotFound(_0x33c966,null))[_0x64aa('0x26')](function(_0x5c6110){if(_0x5c6110){_0x46e182=_0x5c6110;_0x207082['model']=_[_0x64aa('0x49')](db[_0x64aa('0x4f')][_0x64aa('0x2e')]);_0x207082[_0x64aa('0x33')]=_[_0x64aa('0x49')](_0x8237db['query']);_0x207082[_0x64aa('0x34')]=_[_0x64aa('0x36')](_0x207082['model'],_0x207082[_0x64aa('0x33')]);_0xcb4f13[_0x64aa('0x35')]=_['intersection'](_0x207082[_0x64aa('0x32')],qs[_0x64aa('0x37')](_0x8237db[_0x64aa('0x33')][_0x64aa('0x37')]));_0xcb4f13[_0x64aa('0x35')]=_0xcb4f13['attributes'][_0x64aa('0x38')]?_0xcb4f13[_0x64aa('0x35')]:_0x207082['model'];_0xcb4f13[_0x64aa('0x3a')]=qs['sort'](_0x8237db[_0x64aa('0x33')][_0x64aa('0x3b')]);_0xcb4f13[_0x64aa('0x3c')]=qs['filters'](_[_0x64aa('0x3d')](_0x8237db['query'],_0x207082[_0x64aa('0x34')]));if(_0x8237db[_0x64aa('0x33')]['filter']){_0xcb4f13[_0x64aa('0x3c')]=_['merge'](_0xcb4f13[_0x64aa('0x3c')],{'$or':_[_0x64aa('0x2d')](_0xcb4f13[_0x64aa('0x35')],function(_0x4406ed){var _0x1aca69={};_0x1aca69[_0x4406ed]={'$like':'%'+_0x8237db[_0x64aa('0x33')]['filter']+'%'};return _0x1aca69;})});}_0xcb4f13=_[_0x64aa('0x4a')]({},_0xcb4f13,_0x8237db[_0x64aa('0x40')]);return _0x46e182[_0x64aa('0x53')](_0xcb4f13);}})[_0x64aa('0x26')](function(_0x55d14a){if(_0x55d14a){_0x4a8d2b=_0x55d14a[_0x64aa('0x38')];if(!_0x8237db[_0x64aa('0x33')][_0x64aa('0x51')](_0x64aa('0x39'))){_0xcb4f13['limit']=qs[_0x64aa('0x1d')](_0x8237db[_0x64aa('0x33')][_0x64aa('0x1d')]);_0xcb4f13[_0x64aa('0x1f')]=qs[_0x64aa('0x1f')](_0x8237db['query']['offset']);}return _0x46e182[_0x64aa('0x53')](_0xcb4f13);}})[_0x64aa('0x26')](function(_0x11e22c){if(_0x11e22c){return _0x11e22c?{'count':_0x4a8d2b,'rows':_0x11e22c}:null;}})[_0x64aa('0x26')](respondWithResult(_0x33c966,null))['catch'](handleError(_0x33c966,null));};
\ No newline at end of file
index 1ac8b72..61acd0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d8b=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations'];(function(_0x2b669c,_0x20cd62){var _0x4947b6=function(_0x1ede3f){while(--_0x1ede3f){_0x2b669c['push'](_0x2b669c['shift']());}};_0x4947b6(++_0x20cd62);}(_0x8d8b,0x75));var _0xb8d8=function(_0x115822,_0x4f4332){_0x115822=_0x115822-0x0;var _0x25e66e=_0x8d8b[_0x115822];return _0x25e66e;};'use strict';var _=require(_0xb8d8('0x0'));var util=require(_0xb8d8('0x1'));var logger=require(_0xb8d8('0x2'))(_0xb8d8('0x3'));var moment=require(_0xb8d8('0x4'));var BPromise=require(_0xb8d8('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb8d8('0x6'));var rimraf=require(_0xb8d8('0x7'));var config=require(_0xb8d8('0x8'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0xb8d8('0x9')]=function(_0x4524d8,_0xd89cd){return _0x4524d8[_0xb8d8('0xa')](_0xb8d8('0xb'),attributes,{'tableName':_0xb8d8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b45=['bluebird','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','int_sugarcrm_configurations','lodash','util','api'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x4b45,0x1bf));var _0x54b4=function(_0xa388f7,_0x244326){_0xa388f7=_0xa388f7-0x0;var _0x42037f=_0x4b45[_0xa388f7];return _0x42037f;};'use strict';var _=require(_0x54b4('0x0'));var util=require(_0x54b4('0x1'));var logger=require('../../config/logger')(_0x54b4('0x2'));var moment=require('moment');var BPromise=require(_0x54b4('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x54b4('0x4'));var config=require(_0x54b4('0x5'));var attributes=require(_0x54b4('0x6'));module[_0x54b4('0x7')]=function(_0x274540,_0x37f214){return _0x274540['define']('SugarcrmConfiguration',attributes,{'tableName':_0x54b4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 154d97d..191e67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa711=['stringify','error','code','message','result','lodash','moment','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0xa711,0xb9));var _0x1a71=function(_0x204af1,_0x57f5a0){_0x204af1=_0x204af1-0x0;var _0x314f4e=_0xa711[_0x204af1];return _0x314f4e;};'use strict';var _=require(_0x1a71('0x0'));var util=require('util');var moment=require(_0x1a71('0x1'));var BPromise=require(_0x1a71('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a71('0x3'))['db'];var utils=require(_0x1a71('0x4'));var logger=require('../../config/logger')(_0x1a71('0x5'));var config=require(_0x1a71('0x6'));var jayson=require(_0x1a71('0x7'));var client=jayson[_0x1a71('0x8')][_0x1a71('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f0a40,_0x1000f5,_0x331081){return new BPromise(function(_0x307bd3,_0x2e5a2f){return client['request'](_0x2f0a40,_0x331081)[_0x1a71('0xa')](function(_0x5a7b5e){logger['info'](_0x1a71('0xb'),_0x1000f5,'request\x20sent');logger[_0x1a71('0xc')](_0x1a71('0xd'),_0x1000f5,_0x1a71('0xe'),JSON[_0x1a71('0xf')](_0x5a7b5e));if(_0x5a7b5e['error']){if(_0x5a7b5e[_0x1a71('0x10')][_0x1a71('0x11')]===0x1f4){logger[_0x1a71('0x10')](_0x1a71('0xb'),_0x1000f5,_0x5a7b5e[_0x1a71('0x10')]['message']);return _0x2e5a2f(_0x5a7b5e['error'][_0x1a71('0x12')]);}logger['error'](_0x1a71('0xb'),_0x1000f5,_0x5a7b5e[_0x1a71('0x10')]['message']);return _0x307bd3(_0x5a7b5e[_0x1a71('0x10')][_0x1a71('0x12')]);}else{logger['info'](_0x1a71('0xb'),_0x1000f5,_0x1a71('0xe'));_0x307bd3(_0x5a7b5e[_0x1a71('0x13')]['message']);}})['catch'](function(_0x37287d){logger[_0x1a71('0x10')](_0x1a71('0xb'),_0x1000f5,_0x37287d);_0x2e5a2f(_0x37287d);});});}
\ No newline at end of file
+var _0x9862=['request','then','info','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmConfiguration,\x20%s,\x20%s','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x82c4df,_0x192546){var _0xe3b9ec=function(_0x5a4f31){while(--_0x5a4f31){_0x82c4df['push'](_0x82c4df['shift']());}};_0xe3b9ec(++_0x192546);}(_0x9862,0x113));var _0x2986=function(_0x434836,_0x5458f6){_0x434836=_0x434836-0x0;var _0x52390f=_0x9862[_0x434836];return _0x52390f;};'use strict';var _=require('lodash');var util=require(_0x2986('0x0'));var moment=require(_0x2986('0x1'));var BPromise=require(_0x2986('0x2'));var rs=require(_0x2986('0x3'));var fs=require('fs');var Redis=require(_0x2986('0x4'));var db=require(_0x2986('0x5'))['db'];var utils=require(_0x2986('0x6'));var logger=require(_0x2986('0x7'))(_0x2986('0x8'));var config=require(_0x2986('0x9'));var jayson=require(_0x2986('0xa'));var client=jayson[_0x2986('0xb')][_0x2986('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4f760c,_0x1fe037,_0x4cff9d){return new BPromise(function(_0x239b7c,_0x5728f0){return client[_0x2986('0xd')](_0x4f760c,_0x4cff9d)[_0x2986('0xe')](function(_0x3f0661){logger[_0x2986('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1fe037,_0x2986('0x10'));logger[_0x2986('0x11')](_0x2986('0x12'),_0x1fe037,'request\x20sent',JSON[_0x2986('0x13')](_0x3f0661));if(_0x3f0661[_0x2986('0x14')]){if(_0x3f0661['error'][_0x2986('0x15')]===0x1f4){logger['error'](_0x2986('0x16'),_0x1fe037,_0x3f0661[_0x2986('0x14')][_0x2986('0x17')]);return _0x5728f0(_0x3f0661[_0x2986('0x14')][_0x2986('0x17')]);}logger[_0x2986('0x14')](_0x2986('0x16'),_0x1fe037,_0x3f0661['error'][_0x2986('0x17')]);return _0x239b7c(_0x3f0661[_0x2986('0x14')]['message']);}else{logger[_0x2986('0xf')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x1fe037,_0x2986('0x10'));_0x239b7c(_0x3f0661['result'][_0x2986('0x17')]);}})['catch'](function(_0x1a42bb){logger[_0x2986('0x14')](_0x2986('0x16'),_0x1fe037,_0x1a42bb);_0x5728f0(_0x1a42bb);});});}
\ No newline at end of file
index 1284a27..aabe777 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb9a=['delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./intSugarcrmField.controller','isAuthenticated','index','get','/:id','show','put','update'];(function(_0x38a995,_0x129e64){var _0x3e402b=function(_0x36514a){while(--_0x36514a){_0x38a995['push'](_0x38a995['shift']());}};_0x3e402b(++_0x129e64);}(_0xcb9a,0xac));var _0xacb9=function(_0x2c4e32,_0x3a5590){_0x2c4e32=_0x2c4e32-0x0;var _0x1eac30=_0xcb9a[_0x2c4e32];return _0x1eac30;};'use strict';var multer=require(_0xacb9('0x0'));var util=require(_0xacb9('0x1'));var path=require(_0xacb9('0x2'));var timeout=require('connect-timeout');var express=require(_0xacb9('0x3'));var router=express[_0xacb9('0x4')]();var fs_extra=require(_0xacb9('0x5'));var auth=require(_0xacb9('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xacb9('0x7'));router['get']('/',auth[_0xacb9('0x8')](),controller[_0xacb9('0x9')]);router[_0xacb9('0xa')](_0xacb9('0xb'),auth['isAuthenticated'](),controller[_0xacb9('0xc')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xacb9('0xd')]('/:id',auth[_0xacb9('0x8')](),controller[_0xacb9('0xe')]);router[_0xacb9('0xf')](_0xacb9('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0xacb9('0x10')]=router;
\ No newline at end of file
+var _0x4fc8=['post','create','put','/:id','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get'];(function(_0x2acedb,_0x5865fc){var _0x450e2e=function(_0x49552d){while(--_0x49552d){_0x2acedb['push'](_0x2acedb['shift']());}};_0x450e2e(++_0x5865fc);}(_0x4fc8,0x15a));var _0x84fc=function(_0x5a70d8,_0xbfc41a){_0x5a70d8=_0x5a70d8-0x0;var _0x5f1483=_0x4fc8[_0x5a70d8];return _0x5f1483;};'use strict';var multer=require('multer');var util=require(_0x84fc('0x0'));var path=require(_0x84fc('0x1'));var timeout=require(_0x84fc('0x2'));var express=require(_0x84fc('0x3'));var router=express[_0x84fc('0x4')]();var fs_extra=require(_0x84fc('0x5'));var auth=require(_0x84fc('0x6'));var interaction=require(_0x84fc('0x7'));var config=require(_0x84fc('0x8'));var controller=require('./intSugarcrmField.controller');router['get']('/',auth[_0x84fc('0x9')](),controller['index']);router[_0x84fc('0xa')]('/:id',auth[_0x84fc('0x9')](),controller['show']);router[_0x84fc('0xb')]('/',auth[_0x84fc('0x9')](),controller[_0x84fc('0xc')]);router[_0x84fc('0xd')](_0x84fc('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x84fc('0xe'),auth[_0x84fc('0x9')](),controller[_0x84fc('0xf')]);module[_0x84fc('0x10')]=router;
\ No newline at end of file
index deb2bdc..df22ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf586=['STRING','ENUM','customVariable','exports','string','variable','keyValue','picklist'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xf586,0x183));var _0x6f58=function(_0x155af3,_0x4b7f9a){_0x155af3=_0x155af3-0x0;var _0x15a675=_0xf586[_0x155af3];return _0x15a675;};'use strict';var Sequelize=require('sequelize');module[_0x6f58('0x0')]={'type':{'type':Sequelize['ENUM'](_0x6f58('0x1'),_0x6f58('0x2'),'customVariable',_0x6f58('0x3'),_0x6f58('0x4')),'defaultValue':_0x6f58('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x6f58('0x5')]},'keyType':{'type':Sequelize[_0x6f58('0x6')]('string','variable',_0x6f58('0x7'))},'keyContent':{'type':Sequelize[_0x6f58('0x5')]},'idField':{'type':Sequelize[_0x6f58('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6f58('0x5')]}};
\ No newline at end of file
+var _0xb587=['BOOLEAN','sequelize','exports','string','customVariable','keyValue','picklist','STRING','ENUM','variable'];(function(_0x238202,_0x10da07){var _0x217367=function(_0x34f6d0){while(--_0x34f6d0){_0x238202['push'](_0x238202['shift']());}};_0x217367(++_0x10da07);}(_0xb587,0x141));var _0x7b58=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb587[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7b58('0x0'));module[_0x7b58('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7b58('0x2'),'variable',_0x7b58('0x3'),_0x7b58('0x4'),_0x7b58('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x7b58('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7b58('0x7')](_0x7b58('0x2'),_0x7b58('0x8'),_0x7b58('0x3'))},'keyContent':{'type':Sequelize[_0x7b58('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x7b58('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7b58('0x6')]}};
\ No newline at end of file
index c43c25d..11a71c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ce=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','stack','name','send','index','map','fieldName','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','SugarcrmField','includeAll','include','catch','params','fields','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','desk.js','querystring','papaparse'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xd4ce,0xc3));var _0xed4c=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xd4ce[_0x4bfac3];return _0x15f0f2;};'use strict';var emlformat=require(_0xed4c('0x0'));var rimraf=require(_0xed4c('0x1'));var zipdir=require(_0xed4c('0x2'));var jsonpatch=require(_0xed4c('0x3'));var rp=require(_0xed4c('0x4'));var moment=require(_0xed4c('0x5'));var BPromise=require(_0xed4c('0x6'));var Mustache=require(_0xed4c('0x7'));var util=require(_0xed4c('0x8'));var path=require(_0xed4c('0x9'));var sox=require(_0xed4c('0xa'));var csv=require(_0xed4c('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xed4c('0xc'));var _=require('lodash');var squel=require(_0xed4c('0xd'));var crypto=require('crypto');var jsforce=require(_0xed4c('0xe'));var deskjs=require(_0xed4c('0xf'));var toCsv=require(_0xed4c('0xb'));var querystring=require(_0xed4c('0x10'));var Papa=require(_0xed4c('0x11'));var Redis=require('ioredis');var authService=require(_0xed4c('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xed4c('0x13'));var hardwareService=require(_0xed4c('0x14'));var logger=require(_0xed4c('0x15'))('api');var utils=require(_0xed4c('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xed4c('0x17'));var db=require(_0xed4c('0x18'))['db'];function respondWithStatusCode(_0x1e50b0,_0x59cec5){_0x59cec5=_0x59cec5||0xcc;return function(_0x332142){if(_0x332142){return _0x1e50b0[_0xed4c('0x19')](_0x59cec5);}return _0x1e50b0['status'](_0x59cec5)[_0xed4c('0x1a')]();};}function respondWithResult(_0x2ab6a5,_0x142502){_0x142502=_0x142502||0xc8;return function(_0x1e3d6c){if(_0x1e3d6c){return _0x2ab6a5[_0xed4c('0x1b')](_0x142502)[_0xed4c('0x1c')](_0x1e3d6c);}};}function respondWithFilteredResult(_0x5c067c,_0x4ac496){return function(_0x25f35d){if(_0x25f35d){var _0x534d76=typeof _0x4ac496[_0xed4c('0x1d')]===_0xed4c('0x1e')&&typeof _0x4ac496['limit']===_0xed4c('0x1e');var _0x168e33=_0x25f35d[_0xed4c('0x1f')];var _0x48d9f4=_0x534d76?0x0:_0x4ac496[_0xed4c('0x1d')];var _0x2e7d2a=_0x534d76?_0x25f35d[_0xed4c('0x1f')]:_0x4ac496[_0xed4c('0x1d')]+_0x4ac496[_0xed4c('0x20')];var _0x3bd2fe;if(_0x2e7d2a>=_0x168e33){_0x2e7d2a=_0x168e33;_0x3bd2fe=0xc8;}else{_0x3bd2fe=0xce;}_0x5c067c[_0xed4c('0x1b')](_0x3bd2fe);return _0x5c067c[_0xed4c('0x21')](_0xed4c('0x22'),_0x48d9f4+'-'+_0x2e7d2a+'/'+_0x168e33)[_0xed4c('0x1c')](_0x25f35d);}return null;};}function patchUpdates(_0xcec10){return function(_0x591e84){try{jsonpatch[_0xed4c('0x23')](_0x591e84,_0xcec10,!![]);}catch(_0x1dff57){return BPromise['reject'](_0x1dff57);}return _0x591e84['save']();};}function saveUpdates(_0x1e05fc,_0x282c12){return function(_0x4ca76c){if(_0x4ca76c){return _0x4ca76c[_0xed4c('0x24')](_0x1e05fc)[_0xed4c('0x25')](function(_0x120e94){return _0x120e94;});}return null;};}function removeEntity(_0x47f095,_0x472813){return function(_0x5c750f){if(_0x5c750f){return _0x5c750f['destroy']()[_0xed4c('0x25')](function(){_0x47f095[_0xed4c('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44df5e,_0x4f23a3){return function(_0x3d6172){if(!_0x3d6172){_0x44df5e[_0xed4c('0x19')](0x194);}return _0x3d6172;};}function handleError(_0xf92230,_0x1c05a4){_0x1c05a4=_0x1c05a4||0x1f4;return function(_0x7e2efc){logger['error'](_0x7e2efc[_0xed4c('0x26')]);if(_0x7e2efc[_0xed4c('0x27')]){delete _0x7e2efc[_0xed4c('0x27')];}_0xf92230[_0xed4c('0x1b')](_0x1c05a4)[_0xed4c('0x28')](_0x7e2efc);};}exports[_0xed4c('0x29')]=function(_0x243001,_0x1b94ce){var _0x435f3b={},_0x596984={},_0x1c38b3={'count':0x0,'rows':[]};var _0x127438=_[_0xed4c('0x2a')](db['SugarcrmField']['rawAttributes'],function(_0xb3c5d1){return{'name':_0xb3c5d1[_0xed4c('0x2b')],'type':_0xb3c5d1['type'][_0xed4c('0x2c')]};});_0x596984[_0xed4c('0x2d')]=_[_0xed4c('0x2a')](_0x127438,_0xed4c('0x27'));_0x596984[_0xed4c('0x2e')]=_[_0xed4c('0x2f')](_0x243001[_0xed4c('0x2e')]);_0x596984[_0xed4c('0x30')]=_[_0xed4c('0x31')](_0x596984[_0xed4c('0x2d')],_0x596984[_0xed4c('0x2e')]);_0x435f3b[_0xed4c('0x32')]=_[_0xed4c('0x31')](_0x596984[_0xed4c('0x2d')],qs['fields'](_0x243001[_0xed4c('0x2e')]['fields']));_0x435f3b['attributes']=_0x435f3b[_0xed4c('0x32')][_0xed4c('0x33')]?_0x435f3b[_0xed4c('0x32')]:_0x596984['model'];if(!_0x243001[_0xed4c('0x2e')]['hasOwnProperty'](_0xed4c('0x34'))){_0x435f3b[_0xed4c('0x20')]=qs[_0xed4c('0x20')](_0x243001['query'][_0xed4c('0x20')]);_0x435f3b[_0xed4c('0x1d')]=qs[_0xed4c('0x1d')](_0x243001['query'][_0xed4c('0x1d')]);}_0x435f3b[_0xed4c('0x35')]=qs[_0xed4c('0x36')](_0x243001['query'][_0xed4c('0x36')]);_0x435f3b['where']=qs[_0xed4c('0x30')](_['pick'](_0x243001[_0xed4c('0x2e')],_0x596984[_0xed4c('0x30')]),_0x127438);if(_0x243001['query'][_0xed4c('0x37')]){_0x435f3b[_0xed4c('0x38')]=_[_0xed4c('0x39')](_0x435f3b['where'],{'$or':_[_0xed4c('0x2a')](_0x127438,function(_0x418f94){if(_0x418f94[_0xed4c('0x3a')]!==_0xed4c('0x3b')){var _0x4c4a25={};_0x4c4a25[_0x418f94[_0xed4c('0x27')]]={'$like':'%'+_0x243001['query']['filter']+'%'};return _0x4c4a25;}})});}_0x435f3b=_[_0xed4c('0x39')]({},_0x435f3b,_0x243001[_0xed4c('0x3c')]);var _0x28d0db={'where':_0x435f3b[_0xed4c('0x38')]};return db[_0xed4c('0x3d')]['count'](_0x28d0db)['then'](function(_0x923364){_0x1c38b3['count']=_0x923364;if(_0x243001[_0xed4c('0x2e')][_0xed4c('0x3e')]){_0x435f3b[_0xed4c('0x3f')]=[{'all':!![]}];}return db[_0xed4c('0x3d')]['findAll'](_0x435f3b);})['then'](function(_0x365d85){_0x1c38b3['rows']=_0x365d85;return _0x1c38b3;})[_0xed4c('0x25')](respondWithFilteredResult(_0x1b94ce,_0x435f3b))[_0xed4c('0x40')](handleError(_0x1b94ce,null));};exports['show']=function(_0x543e3b,_0x39d3a4){var _0x378a4e={'raw':!![],'where':{'id':_0x543e3b[_0xed4c('0x41')]['id']}},_0x38be85={};_0x38be85[_0xed4c('0x2d')]=_[_0xed4c('0x2f')](db[_0xed4c('0x3d')]['rawAttributes']);_0x38be85[_0xed4c('0x2e')]=_[_0xed4c('0x2f')](_0x543e3b['query']);_0x38be85[_0xed4c('0x30')]=_[_0xed4c('0x31')](_0x38be85[_0xed4c('0x2d')],_0x38be85[_0xed4c('0x2e')]);_0x378a4e[_0xed4c('0x32')]=_['intersection'](_0x38be85['model'],qs[_0xed4c('0x42')](_0x543e3b['query'][_0xed4c('0x42')]));_0x378a4e[_0xed4c('0x32')]=_0x378a4e[_0xed4c('0x32')][_0xed4c('0x33')]?_0x378a4e[_0xed4c('0x32')]:_0x38be85['model'];if(_0x543e3b[_0xed4c('0x2e')][_0xed4c('0x3e')]){_0x378a4e[_0xed4c('0x3f')]=[{'all':!![]}];}_0x378a4e=_['merge']({},_0x378a4e,_0x543e3b[_0xed4c('0x3c')]);return db[_0xed4c('0x3d')][_0xed4c('0x43')](_0x378a4e)['then'](handleEntityNotFound(_0x39d3a4,null))[_0xed4c('0x25')](respondWithResult(_0x39d3a4,null))[_0xed4c('0x40')](handleError(_0x39d3a4,null));};exports[_0xed4c('0x44')]=function(_0x37fe83,_0x5c81d8){return db['SugarcrmField'][_0xed4c('0x44')](_0x37fe83[_0xed4c('0x45')],{})[_0xed4c('0x25')](respondWithResult(_0x5c81d8,0xc9))[_0xed4c('0x40')](handleError(_0x5c81d8,null));};exports[_0xed4c('0x24')]=function(_0x4fcd02,_0x4b965d){if(_0x4fcd02[_0xed4c('0x45')]['id']){delete _0x4fcd02[_0xed4c('0x45')]['id'];}return db['SugarcrmField'][_0xed4c('0x43')]({'where':{'id':_0x4fcd02['params']['id']}})[_0xed4c('0x25')](handleEntityNotFound(_0x4b965d,null))[_0xed4c('0x25')](saveUpdates(_0x4fcd02[_0xed4c('0x45')],null))[_0xed4c('0x25')](respondWithResult(_0x4b965d,null))[_0xed4c('0x40')](handleError(_0x4b965d,null));};exports[_0xed4c('0x46')]=function(_0x5438b9,_0x40dde1){return db[_0xed4c('0x3d')][_0xed4c('0x43')]({'where':{'id':_0x5438b9[_0xed4c('0x41')]['id']}})['then'](handleEntityNotFound(_0x40dde1,null))[_0xed4c('0x25')](removeEntity(_0x40dde1,null))[_0xed4c('0x40')](handleError(_0x40dde1,null));};
\ No newline at end of file
+var _0xa2ef=['stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','SugarcrmField','includeAll','include','findAll','catch','show','keys','find','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','destroy','then','end','error'];(function(_0x37c619,_0x16734c){var _0x1980d4=function(_0x381ac9){while(--_0x381ac9){_0x37c619['push'](_0x37c619['shift']());}};_0x1980d4(++_0x16734c);}(_0xa2ef,0x157));var _0xfa2e=function(_0x424378,_0x54908f){_0x424378=_0x424378-0x0;var _0x21e4b3=_0xa2ef[_0x424378];return _0x21e4b3;};'use strict';var emlformat=require(_0xfa2e('0x0'));var rimraf=require(_0xfa2e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfa2e('0x2'));var rp=require(_0xfa2e('0x3'));var moment=require('moment');var BPromise=require(_0xfa2e('0x4'));var Mustache=require(_0xfa2e('0x5'));var util=require(_0xfa2e('0x6'));var path=require(_0xfa2e('0x7'));var sox=require(_0xfa2e('0x8'));var csv=require(_0xfa2e('0x9'));var ejs=require(_0xfa2e('0xa'));var fs=require('fs');var fs_extra=require(_0xfa2e('0xb'));var _=require(_0xfa2e('0xc'));var squel=require(_0xfa2e('0xd'));var crypto=require(_0xfa2e('0xe'));var jsforce=require(_0xfa2e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xfa2e('0x9'));var querystring=require(_0xfa2e('0x10'));var Papa=require(_0xfa2e('0x11'));var Redis=require(_0xfa2e('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xfa2e('0x13'));var hardwareService=require(_0xfa2e('0x14'));var logger=require(_0xfa2e('0x15'))(_0xfa2e('0x16'));var utils=require(_0xfa2e('0x17'));var config=require(_0xfa2e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xfa2e('0x19'))['db'];function respondWithStatusCode(_0x332245,_0x1bd72f){_0x1bd72f=_0x1bd72f||0xcc;return function(_0x2c181c){if(_0x2c181c){return _0x332245[_0xfa2e('0x1a')](_0x1bd72f);}return _0x332245[_0xfa2e('0x1b')](_0x1bd72f)['end']();};}function respondWithResult(_0x2ef2f9,_0x3a2a37){_0x3a2a37=_0x3a2a37||0xc8;return function(_0x485241){if(_0x485241){return _0x2ef2f9['status'](_0x3a2a37)[_0xfa2e('0x1c')](_0x485241);}};}function respondWithFilteredResult(_0xd39b8f,_0x2fedc1){return function(_0x3f71a5){if(_0x3f71a5){var _0xd86ff2=typeof _0x2fedc1['offset']===_0xfa2e('0x1d')&&typeof _0x2fedc1[_0xfa2e('0x1e')]===_0xfa2e('0x1d');var _0x512f72=_0x3f71a5[_0xfa2e('0x1f')];var _0x6f318e=_0xd86ff2?0x0:_0x2fedc1[_0xfa2e('0x20')];var _0x49ff42=_0xd86ff2?_0x3f71a5[_0xfa2e('0x1f')]:_0x2fedc1[_0xfa2e('0x20')]+_0x2fedc1[_0xfa2e('0x1e')];var _0x1cbcfc;if(_0x49ff42>=_0x512f72){_0x49ff42=_0x512f72;_0x1cbcfc=0xc8;}else{_0x1cbcfc=0xce;}_0xd39b8f[_0xfa2e('0x1b')](_0x1cbcfc);return _0xd39b8f[_0xfa2e('0x21')](_0xfa2e('0x22'),_0x6f318e+'-'+_0x49ff42+'/'+_0x512f72)['json'](_0x3f71a5);}return null;};}function patchUpdates(_0x5bc4f8){return function(_0x8e474b){try{jsonpatch['apply'](_0x8e474b,_0x5bc4f8,!![]);}catch(_0x237d6c){return BPromise[_0xfa2e('0x23')](_0x237d6c);}return _0x8e474b[_0xfa2e('0x24')]();};}function saveUpdates(_0x6d0279,_0x331571){return function(_0x56ab17){if(_0x56ab17){return _0x56ab17[_0xfa2e('0x25')](_0x6d0279)['then'](function(_0x2e6016){return _0x2e6016;});}return null;};}function removeEntity(_0x9ca864,_0x339954){return function(_0x5ea087){if(_0x5ea087){return _0x5ea087[_0xfa2e('0x26')]()[_0xfa2e('0x27')](function(){_0x9ca864[_0xfa2e('0x1b')](0xcc)[_0xfa2e('0x28')]();});}};}function handleEntityNotFound(_0xe96b2d,_0x5b1366){return function(_0xab755b){if(!_0xab755b){_0xe96b2d[_0xfa2e('0x1a')](0x194);}return _0xab755b;};}function handleError(_0x3b16ac,_0x47409a){_0x47409a=_0x47409a||0x1f4;return function(_0xa5d672){logger[_0xfa2e('0x29')](_0xa5d672[_0xfa2e('0x2a')]);if(_0xa5d672[_0xfa2e('0x2b')]){delete _0xa5d672['name'];}_0x3b16ac[_0xfa2e('0x1b')](_0x47409a)[_0xfa2e('0x2c')](_0xa5d672);};}exports[_0xfa2e('0x2d')]=function(_0x52875a,_0x255c9d){var _0x5b52aa={},_0x19e0f1={},_0x5eb0aa={'count':0x0,'rows':[]};var _0x2dfb56=_[_0xfa2e('0x2e')](db['SugarcrmField'][_0xfa2e('0x2f')],function(_0x17b2cd){return{'name':_0x17b2cd[_0xfa2e('0x30')],'type':_0x17b2cd[_0xfa2e('0x31')][_0xfa2e('0x32')]};});_0x19e0f1[_0xfa2e('0x33')]=_[_0xfa2e('0x2e')](_0x2dfb56,_0xfa2e('0x2b'));_0x19e0f1[_0xfa2e('0x34')]=_['keys'](_0x52875a[_0xfa2e('0x34')]);_0x19e0f1['filters']=_['intersection'](_0x19e0f1[_0xfa2e('0x33')],_0x19e0f1[_0xfa2e('0x34')]);_0x5b52aa[_0xfa2e('0x35')]=_[_0xfa2e('0x36')](_0x19e0f1[_0xfa2e('0x33')],qs['fields'](_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x37')]));_0x5b52aa[_0xfa2e('0x35')]=_0x5b52aa[_0xfa2e('0x35')][_0xfa2e('0x38')]?_0x5b52aa[_0xfa2e('0x35')]:_0x19e0f1[_0xfa2e('0x33')];if(!_0x52875a[_0xfa2e('0x34')]['hasOwnProperty'](_0xfa2e('0x39'))){_0x5b52aa[_0xfa2e('0x1e')]=qs[_0xfa2e('0x1e')](_0x52875a['query']['limit']);_0x5b52aa[_0xfa2e('0x20')]=qs[_0xfa2e('0x20')](_0x52875a['query'][_0xfa2e('0x20')]);}_0x5b52aa[_0xfa2e('0x3a')]=qs['sort'](_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x3b')]);_0x5b52aa[_0xfa2e('0x3c')]=qs['filters'](_['pick'](_0x52875a[_0xfa2e('0x34')],_0x19e0f1[_0xfa2e('0x3d')]),_0x2dfb56);if(_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x3e')]){_0x5b52aa[_0xfa2e('0x3c')]=_['merge'](_0x5b52aa[_0xfa2e('0x3c')],{'$or':_[_0xfa2e('0x2e')](_0x2dfb56,function(_0x4093b9){if(_0x4093b9['type']!==_0xfa2e('0x3f')){var _0x12197d={};_0x12197d[_0x4093b9[_0xfa2e('0x2b')]]={'$like':'%'+_0x52875a[_0xfa2e('0x34')][_0xfa2e('0x3e')]+'%'};return _0x12197d;}})});}_0x5b52aa=_[_0xfa2e('0x40')]({},_0x5b52aa,_0x52875a[_0xfa2e('0x41')]);var _0x23cf5b={'where':_0x5b52aa[_0xfa2e('0x3c')]};return db[_0xfa2e('0x42')][_0xfa2e('0x1f')](_0x23cf5b)[_0xfa2e('0x27')](function(_0x2571b5){_0x5eb0aa['count']=_0x2571b5;if(_0x52875a['query'][_0xfa2e('0x43')]){_0x5b52aa[_0xfa2e('0x44')]=[{'all':!![]}];}return db[_0xfa2e('0x42')][_0xfa2e('0x45')](_0x5b52aa);})[_0xfa2e('0x27')](function(_0x6b532e){_0x5eb0aa['rows']=_0x6b532e;return _0x5eb0aa;})[_0xfa2e('0x27')](respondWithFilteredResult(_0x255c9d,_0x5b52aa))[_0xfa2e('0x46')](handleError(_0x255c9d,null));};exports[_0xfa2e('0x47')]=function(_0x576cb8,_0x51897f){var _0x7938b={'raw':!![],'where':{'id':_0x576cb8['params']['id']}},_0x5557f0={};_0x5557f0['model']=_['keys'](db[_0xfa2e('0x42')][_0xfa2e('0x2f')]);_0x5557f0[_0xfa2e('0x34')]=_[_0xfa2e('0x48')](_0x576cb8[_0xfa2e('0x34')]);_0x5557f0['filters']=_[_0xfa2e('0x36')](_0x5557f0[_0xfa2e('0x33')],_0x5557f0[_0xfa2e('0x34')]);_0x7938b['attributes']=_['intersection'](_0x5557f0['model'],qs[_0xfa2e('0x37')](_0x576cb8[_0xfa2e('0x34')][_0xfa2e('0x37')]));_0x7938b[_0xfa2e('0x35')]=_0x7938b['attributes'][_0xfa2e('0x38')]?_0x7938b[_0xfa2e('0x35')]:_0x5557f0[_0xfa2e('0x33')];if(_0x576cb8[_0xfa2e('0x34')][_0xfa2e('0x43')]){_0x7938b[_0xfa2e('0x44')]=[{'all':!![]}];}_0x7938b=_[_0xfa2e('0x40')]({},_0x7938b,_0x576cb8[_0xfa2e('0x41')]);return db['SugarcrmField'][_0xfa2e('0x49')](_0x7938b)[_0xfa2e('0x27')](handleEntityNotFound(_0x51897f,null))[_0xfa2e('0x27')](respondWithResult(_0x51897f,null))[_0xfa2e('0x46')](handleError(_0x51897f,null));};exports[_0xfa2e('0x4a')]=function(_0x20b9a6,_0x287d21){return db['SugarcrmField'][_0xfa2e('0x4a')](_0x20b9a6[_0xfa2e('0x4b')],{})['then'](respondWithResult(_0x287d21,0xc9))['catch'](handleError(_0x287d21,null));};exports[_0xfa2e('0x25')]=function(_0x2a5c6a,_0x22e6a3){if(_0x2a5c6a[_0xfa2e('0x4b')]['id']){delete _0x2a5c6a[_0xfa2e('0x4b')]['id'];}return db[_0xfa2e('0x42')][_0xfa2e('0x49')]({'where':{'id':_0x2a5c6a[_0xfa2e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x22e6a3,null))[_0xfa2e('0x27')](saveUpdates(_0x2a5c6a[_0xfa2e('0x4b')],null))[_0xfa2e('0x27')](respondWithResult(_0x22e6a3,null))[_0xfa2e('0x46')](handleError(_0x22e6a3,null));};exports['destroy']=function(_0x5d2450,_0x5f07dd){return db['SugarcrmField'][_0xfa2e('0x49')]({'where':{'id':_0x5d2450[_0xfa2e('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f07dd,null))[_0xfa2e('0x27')](removeEntity(_0x5f07dd,null))[_0xfa2e('0x46')](handleError(_0x5f07dd,null));};
\ No newline at end of file
index 3500c82..871536d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6482=['request-promise','rimraf','../../config/environment','exports','define','SugarcrmField','int_sugarcrm_fields','FieldId','lodash','../../config/logger','api','bluebird'];(function(_0x5ee409,_0x21fcdb){var _0x44060d=function(_0x10e186){while(--_0x10e186){_0x5ee409['push'](_0x5ee409['shift']());}};_0x44060d(++_0x21fcdb);}(_0x6482,0x14c));var _0x2648=function(_0x440b22,_0x168e36){_0x440b22=_0x440b22-0x0;var _0x20efa4=_0x6482[_0x440b22];return _0x20efa4;};'use strict';var _=require(_0x2648('0x0'));var util=require('util');var logger=require(_0x2648('0x1'))(_0x2648('0x2'));var moment=require('moment');var BPromise=require(_0x2648('0x3'));var rp=require(_0x2648('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2648('0x5'));var config=require(_0x2648('0x6'));var attributes=require('./intSugarcrmField.attributes');module[_0x2648('0x7')]=function(_0x512d86,_0x24e287){return _0x512d86[_0x2648('0x8')](_0x2648('0x9'),attributes,{'tableName':_0x2648('0xa'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x2648('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x20dd=['../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','util','../../config/logger','moment','bluebird','path'];(function(_0x5edca6,_0x1178a6){var _0x2d30ab=function(_0x15c024){while(--_0x15c024){_0x5edca6['push'](_0x5edca6['shift']());}};_0x2d30ab(++_0x1178a6);}(_0x20dd,0x87));var _0xd20d=function(_0x10dc5d,_0x35ef9e){_0x10dc5d=_0x10dc5d-0x0;var _0x141f2b=_0x20dd[_0x10dc5d];return _0x141f2b;};'use strict';var _=require('lodash');var util=require(_0xd20d('0x0'));var logger=require(_0xd20d('0x1'))('api');var moment=require(_0xd20d('0x2'));var BPromise=require(_0xd20d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd20d('0x4'));var rimraf=require('rimraf');var config=require(_0xd20d('0x5'));var attributes=require(_0xd20d('0x6'));module[_0xd20d('0x7')]=function(_0x4c3191,_0xcf391d){return _0x4c3191[_0xd20d('0x8')](_0xd20d('0x9'),attributes,{'tableName':_0xd20d('0xa'),'paranoid':![],'indexes':[{'name':_0xd20d('0xb'),'fields':[_0xd20d('0xc'),_0xd20d('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fa91305..a7ab3a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91cf=['stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s'];(function(_0x450d4e,_0x52f637){var _0x2f36e5=function(_0x253b8b){while(--_0x253b8b){_0x450d4e['push'](_0x450d4e['shift']());}};_0x2f36e5(++_0x52f637);}(_0x91cf,0x1a4));var _0xf91c=function(_0x277415,_0x38968b){_0x277415=_0x277415-0x0;var _0x376342=_0x91cf[_0x277415];return _0x376342;};'use strict';var _=require(_0xf91c('0x0'));var util=require(_0xf91c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xf91c('0x2'));var fs=require('fs');var Redis=require(_0xf91c('0x3'));var db=require(_0xf91c('0x4'))['db'];var utils=require(_0xf91c('0x5'));var logger=require('../../config/logger')(_0xf91c('0x6'));var config=require(_0xf91c('0x7'));var jayson=require(_0xf91c('0x8'));var client=jayson[_0xf91c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f6c13,_0x3f9d34,_0x2b0b5b){return new BPromise(function(_0x3f2328,_0x39019b){return client[_0xf91c('0xa')](_0x2f6c13,_0x2b0b5b)[_0xf91c('0xb')](function(_0x446451){logger[_0xf91c('0xc')](_0xf91c('0xd'),_0x3f9d34,_0xf91c('0xe'));logger[_0xf91c('0xf')](_0xf91c('0x10'),_0x3f9d34,_0xf91c('0xe'),JSON[_0xf91c('0x11')](_0x446451));if(_0x446451[_0xf91c('0x12')]){if(_0x446451[_0xf91c('0x12')][_0xf91c('0x13')]===0x1f4){logger[_0xf91c('0x12')](_0xf91c('0xd'),_0x3f9d34,_0x446451[_0xf91c('0x12')][_0xf91c('0x14')]);return _0x39019b(_0x446451[_0xf91c('0x12')]['message']);}logger['error'](_0xf91c('0xd'),_0x3f9d34,_0x446451['error'][_0xf91c('0x14')]);return _0x3f2328(_0x446451['error'][_0xf91c('0x14')]);}else{logger[_0xf91c('0xc')](_0xf91c('0xd'),_0x3f9d34,_0xf91c('0xe'));_0x3f2328(_0x446451[_0xf91c('0x15')][_0xf91c('0x14')]);}})[_0xf91c('0x16')](function(_0x11cd93){logger[_0xf91c('0x12')](_0xf91c('0xd'),_0x3f9d34,_0x11cd93);_0x39019b(_0x11cd93);});});}
\ No newline at end of file
+var _0x9be5=['info','request\x20sent','debug','SugarcrmField,\x20%s,\x20%s,\x20%s','error','code','SugarcrmField,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0x9be5,0x189));var _0x59be=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0x9be5[_0x3c4737];return _0x2bb926;};'use strict';var _=require(_0x59be('0x0'));var util=require(_0x59be('0x1'));var moment=require(_0x59be('0x2'));var BPromise=require(_0x59be('0x3'));var rs=require(_0x59be('0x4'));var fs=require('fs');var Redis=require(_0x59be('0x5'));var db=require(_0x59be('0x6'))['db'];var utils=require(_0x59be('0x7'));var logger=require(_0x59be('0x8'))(_0x59be('0x9'));var config=require(_0x59be('0xa'));var jayson=require(_0x59be('0xb'));var client=jayson[_0x59be('0xc')][_0x59be('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x105ca8,_0x201ff6,_0x4858ef){return new BPromise(function(_0x8338cf,_0x58fe57){return client['request'](_0x105ca8,_0x4858ef)[_0x59be('0xe')](function(_0x1e48c5){logger[_0x59be('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x201ff6,_0x59be('0x10'));logger[_0x59be('0x11')](_0x59be('0x12'),_0x201ff6,_0x59be('0x10'),JSON['stringify'](_0x1e48c5));if(_0x1e48c5[_0x59be('0x13')]){if(_0x1e48c5[_0x59be('0x13')][_0x59be('0x14')]===0x1f4){logger[_0x59be('0x13')](_0x59be('0x15'),_0x201ff6,_0x1e48c5['error'][_0x59be('0x16')]);return _0x58fe57(_0x1e48c5[_0x59be('0x13')][_0x59be('0x16')]);}logger[_0x59be('0x13')](_0x59be('0x15'),_0x201ff6,_0x1e48c5[_0x59be('0x13')]['message']);return _0x8338cf(_0x1e48c5[_0x59be('0x13')][_0x59be('0x16')]);}else{logger[_0x59be('0xf')](_0x59be('0x15'),_0x201ff6,'request\x20sent');_0x8338cf(_0x1e48c5['result'][_0x59be('0x16')]);}})[_0x59be('0x17')](function(_0x550be2){logger[_0x59be('0x13')](_0x59be('0x15'),_0x201ff6,_0x550be2);_0x58fe57(_0x550be2);});});}
\ No newline at end of file
index 5002333..9ea73a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f82=['getConfigurations','/:id/fields','post','addConfiguration','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x4f82,0xbc));var _0x24f8=function(_0x474bc0,_0x26989c){_0x474bc0=_0x474bc0-0x0;var _0x4b24cf=_0x4f82[_0x474bc0];return _0x4b24cf;};'use strict';var multer=require(_0x24f8('0x0'));var util=require(_0x24f8('0x1'));var path=require('path');var timeout=require(_0x24f8('0x2'));var express=require('express');var router=express[_0x24f8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x24f8('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x24f8('0x5'));var controller=require(_0x24f8('0x6'));router[_0x24f8('0x7')]('/',auth[_0x24f8('0x8')](),controller['index']);router[_0x24f8('0x7')](_0x24f8('0x9'),auth[_0x24f8('0x8')](),controller[_0x24f8('0xa')]);router[_0x24f8('0x7')](_0x24f8('0xb'),auth['isAuthenticated'](),controller[_0x24f8('0xc')]);router[_0x24f8('0x7')](_0x24f8('0xd'),auth[_0x24f8('0x8')](),controller['getFields']);router[_0x24f8('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x24f8('0xb'),auth['isAuthenticated'](),controller[_0x24f8('0xf')]);router['put']('/:id',auth[_0x24f8('0x8')](),controller[_0x24f8('0x10')]);router[_0x24f8('0x11')](_0x24f8('0x9'),auth[_0x24f8('0x8')](),controller[_0x24f8('0x12')]);module[_0x24f8('0x13')]=router;
\ No newline at end of file
+var _0x8e0d=['/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','put','exports','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x2b46f7,_0x5f1a2b){var _0x2f837c=function(_0x51ac5e){while(--_0x51ac5e){_0x2b46f7['push'](_0x2b46f7['shift']());}};_0x2f837c(++_0x5f1a2b);}(_0x8e0d,0x82));var _0xd8e0=function(_0x363ef8,_0x4ecb1a){_0x363ef8=_0x363ef8-0x0;var _0x148822=_0x8e0d[_0x363ef8];return _0x148822;};'use strict';var multer=require(_0xd8e0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd8e0('0x1'));var express=require(_0xd8e0('0x2'));var router=express['Router']();var fs_extra=require(_0xd8e0('0x3'));var auth=require(_0xd8e0('0x4'));var interaction=require(_0xd8e0('0x5'));var config=require(_0xd8e0('0x6'));var controller=require('./intVtigerAccount.controller');router['get']('/',auth[_0xd8e0('0x7')](),controller[_0xd8e0('0x8')]);router[_0xd8e0('0x9')](_0xd8e0('0xa'),auth['isAuthenticated'](),controller[_0xd8e0('0xb')]);router[_0xd8e0('0x9')](_0xd8e0('0xc'),auth[_0xd8e0('0x7')](),controller[_0xd8e0('0xd')]);router['get'](_0xd8e0('0xe'),auth['isAuthenticated'](),controller[_0xd8e0('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd8e0('0x10')]);router[_0xd8e0('0x11')](_0xd8e0('0xc'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xd8e0('0x12')]('/:id',auth[_0xd8e0('0x7')](),controller['update']);router['delete']('/:id',auth[_0xd8e0('0x7')](),controller['destroy']);module[_0xd8e0('0x13')]=router;
\ No newline at end of file
index 3efbd2e..7e9947d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b2c=['STRING','HelpDesk','exports'];(function(_0x59a13e,_0xfdf9d0){var _0x3f6979=function(_0xd40796){while(--_0xd40796){_0x59a13e['push'](_0x59a13e['shift']());}};_0x3f6979(++_0xfdf9d0);}(_0x1b2c,0x15b));var _0xc1b2=function(_0x41f1ac,_0x48eb21){_0x41f1ac=_0x41f1ac-0x0;var _0x1b2cdf=_0x1b2c[_0x41f1ac];return _0x1b2cdf;};'use strict';var Sequelize=require('sequelize');module[_0xc1b2('0x0')]={'name':{'type':Sequelize[_0xc1b2('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc1b2('0x1')]},'username':{'type':Sequelize[_0xc1b2('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xc1b2('0x1')],'allowNull':![],'defaultValue':_0xc1b2('0x2')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0xc1b2('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x3268=['STRING','HelpDesk','exports'];(function(_0x3fcee8,_0x24cfb3){var _0x32e04d=function(_0x19a0d1){while(--_0x19a0d1){_0x3fcee8['push'](_0x3fcee8['shift']());}};_0x32e04d(++_0x24cfb3);}(_0x3268,0xbc));var _0x8326=function(_0x355631,_0x539cef){_0x355631=_0x355631-0x0;var _0x38a5fa=_0x3268[_0x355631];return _0x38a5fa;};'use strict';var Sequelize=require('sequelize');module[_0x8326('0x0')]={'name':{'type':Sequelize[_0x8326('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x8326('0x1')]},'username':{'type':Sequelize['STRING'],'allowNull':![]},'moduleName':{'type':Sequelize[_0x8326('0x1')],'allowNull':![],'defaultValue':_0x8326('0x2')},'remoteUri':{'type':Sequelize[_0x8326('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x8326('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 95cc3d8..cc5b4d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa729=['then','destroy','name','send','index','fieldName','model','map','keys','filters','intersection','attributes','query','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','VIRTUAL','filter','VtigerAccount','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','getConfigurations','findOne','VtigerConfiguration','addConfiguration','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','username','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','reference','owner','remove','editable','false','label','startsWith','cf_','picklist','picklistValues','value','log','test','error','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','statusCode','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update'];(function(_0x37c8ef,_0x334449){var _0x5eaee9=function(_0x4b1b98){while(--_0x4b1b98){_0x37c8ef['push'](_0x37c8ef['shift']());}};_0x5eaee9(++_0x334449);}(_0xa729,0xd1));var _0x9a72=function(_0x379816,_0xc6ee82){_0x379816=_0x379816-0x0;var _0xadec45=_0xa729[_0x379816];return _0xadec45;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9a72('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9a72('0x1'));var moment=require(_0x9a72('0x2'));var BPromise=require(_0x9a72('0x3'));var Mustache=require('mustache');var util=require(_0x9a72('0x4'));var path=require(_0x9a72('0x5'));var sox=require(_0x9a72('0x6'));var csv=require(_0x9a72('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9a72('0x8'));var _=require('lodash');var squel=require(_0x9a72('0x9'));var crypto=require(_0x9a72('0xa'));var jsforce=require(_0x9a72('0xb'));var deskjs=require(_0x9a72('0xc'));var toCsv=require('to-csv');var querystring=require(_0x9a72('0xd'));var Papa=require(_0x9a72('0xe'));var Redis=require(_0x9a72('0xf'));var authService=require(_0x9a72('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x9a72('0x11'));var hardwareService=require(_0x9a72('0x12'));var logger=require('../../config/logger')(_0x9a72('0x13'));var utils=require(_0x9a72('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x9a72('0x15'));var db=require(_0x9a72('0x16'))['db'];var integrations=require(_0x9a72('0x17'));function respondWithStatusCode(_0x4f132d,_0x968ec){_0x968ec=_0x968ec||0xcc;return function(_0x48982f){if(_0x48982f){return _0x4f132d['sendStatus'](_0x968ec);}return _0x4f132d[_0x9a72('0x18')](_0x968ec)[_0x9a72('0x19')]();};}function respondWithResult(_0x5aba07,_0x1e9ae6){_0x1e9ae6=_0x1e9ae6||0xc8;return function(_0xb78954){if(_0xb78954){return _0x5aba07[_0x9a72('0x18')](_0x1e9ae6)[_0x9a72('0x1a')](_0xb78954);}};}function respondWithFilteredResult(_0x54f7d4,_0x941c2){return function(_0x56169b){if(_0x56169b){var _0x174b12=typeof _0x941c2[_0x9a72('0x1b')]===_0x9a72('0x1c')&&typeof _0x941c2['limit']===_0x9a72('0x1c');var _0x1d07bb=_0x56169b['count'];var _0x9544d7=_0x174b12?0x0:_0x941c2[_0x9a72('0x1b')];var _0x2d1a59=_0x174b12?_0x56169b[_0x9a72('0x1d')]:_0x941c2[_0x9a72('0x1b')]+_0x941c2[_0x9a72('0x1e')];var _0x29829b;if(_0x2d1a59>=_0x1d07bb){_0x2d1a59=_0x1d07bb;_0x29829b=0xc8;}else{_0x29829b=0xce;}_0x54f7d4[_0x9a72('0x18')](_0x29829b);return _0x54f7d4[_0x9a72('0x1f')](_0x9a72('0x20'),_0x9544d7+'-'+_0x2d1a59+'/'+_0x1d07bb)['json'](_0x56169b);}return null;};}function patchUpdates(_0x289a7f){return function(_0x5c58c8){try{jsonpatch[_0x9a72('0x21')](_0x5c58c8,_0x289a7f,!![]);}catch(_0x249863){return BPromise[_0x9a72('0x22')](_0x249863);}return _0x5c58c8[_0x9a72('0x23')]();};}function saveUpdates(_0x1c4cd0,_0x10b10e){return function(_0x2ac03e){if(_0x2ac03e){return _0x2ac03e[_0x9a72('0x24')](_0x1c4cd0)[_0x9a72('0x25')](function(_0x5c55ef){return _0x5c55ef;});}return null;};}function removeEntity(_0x4ae947,_0xdead17){return function(_0x214638){if(_0x214638){return _0x214638[_0x9a72('0x26')]()['then'](function(){_0x4ae947[_0x9a72('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xdeae2f,_0x455af2){return function(_0x3bb130){if(!_0x3bb130){_0xdeae2f['sendStatus'](0x194);}return _0x3bb130;};}function handleError(_0x12428e,_0x1914c3){_0x1914c3=_0x1914c3||0x1f4;return function(_0x24792e){logger['error'](_0x24792e['stack']);if(_0x24792e[_0x9a72('0x27')]){delete _0x24792e[_0x9a72('0x27')];}_0x12428e[_0x9a72('0x18')](_0x1914c3)[_0x9a72('0x28')](_0x24792e);};}exports[_0x9a72('0x29')]=function(_0x13ec55,_0x254b14){var _0xe3e0dd={},_0x102dc6={},_0x4fa80c={'count':0x0,'rows':[]};var _0x5078a7=_['map'](db['VtigerAccount']['rawAttributes'],function(_0x4c799a){return{'name':_0x4c799a[_0x9a72('0x2a')],'type':_0x4c799a['type']['key']};});_0x102dc6[_0x9a72('0x2b')]=_[_0x9a72('0x2c')](_0x5078a7,_0x9a72('0x27'));_0x102dc6['query']=_[_0x9a72('0x2d')](_0x13ec55['query']);_0x102dc6[_0x9a72('0x2e')]=_[_0x9a72('0x2f')](_0x102dc6[_0x9a72('0x2b')],_0x102dc6['query']);_0xe3e0dd[_0x9a72('0x30')]=_[_0x9a72('0x2f')](_0x102dc6[_0x9a72('0x2b')],qs['fields'](_0x13ec55[_0x9a72('0x31')][_0x9a72('0x32')]));_0xe3e0dd[_0x9a72('0x30')]=_0xe3e0dd[_0x9a72('0x30')][_0x9a72('0x33')]?_0xe3e0dd[_0x9a72('0x30')]:_0x102dc6[_0x9a72('0x2b')];if(!_0x13ec55[_0x9a72('0x31')][_0x9a72('0x34')](_0x9a72('0x35'))){_0xe3e0dd[_0x9a72('0x1e')]=qs[_0x9a72('0x1e')](_0x13ec55['query']['limit']);_0xe3e0dd[_0x9a72('0x1b')]=qs['offset'](_0x13ec55[_0x9a72('0x31')][_0x9a72('0x1b')]);}_0xe3e0dd[_0x9a72('0x36')]=qs[_0x9a72('0x37')](_0x13ec55[_0x9a72('0x31')]['sort']);_0xe3e0dd[_0x9a72('0x38')]=qs['filters'](_['pick'](_0x13ec55[_0x9a72('0x31')],_0x102dc6[_0x9a72('0x2e')]),_0x5078a7);if(_0x13ec55['query']['filter']){_0xe3e0dd[_0x9a72('0x38')]=_[_0x9a72('0x39')](_0xe3e0dd[_0x9a72('0x38')],{'$or':_[_0x9a72('0x2c')](_0x5078a7,function(_0x409fe7){if(_0x409fe7[_0x9a72('0x3a')]!==_0x9a72('0x3b')){var _0x476937={};_0x476937[_0x409fe7[_0x9a72('0x27')]]={'$like':'%'+_0x13ec55[_0x9a72('0x31')][_0x9a72('0x3c')]+'%'};return _0x476937;}})});}_0xe3e0dd=_[_0x9a72('0x39')]({},_0xe3e0dd,_0x13ec55['options']);var _0x195177={'where':_0xe3e0dd['where']};return db[_0x9a72('0x3d')][_0x9a72('0x1d')](_0x195177)[_0x9a72('0x25')](function(_0x5753c4){_0x4fa80c[_0x9a72('0x1d')]=_0x5753c4;if(_0x13ec55['query'][_0x9a72('0x3e')]){_0xe3e0dd[_0x9a72('0x3f')]=[{'all':!![]}];}return db[_0x9a72('0x3d')][_0x9a72('0x40')](_0xe3e0dd);})['then'](function(_0x5d7381){_0x4fa80c[_0x9a72('0x41')]=_0x5d7381;return _0x4fa80c;})[_0x9a72('0x25')](respondWithFilteredResult(_0x254b14,_0xe3e0dd))[_0x9a72('0x42')](handleError(_0x254b14,null));};exports[_0x9a72('0x43')]=function(_0x14eb91,_0x46e0a6){var _0xd94a28={'raw':![],'where':{'id':_0x14eb91[_0x9a72('0x44')]['id']}},_0x3f7e58={};_0x3f7e58[_0x9a72('0x2b')]=_['keys'](db[_0x9a72('0x3d')][_0x9a72('0x45')]);_0x3f7e58[_0x9a72('0x31')]=_['keys'](_0x14eb91[_0x9a72('0x31')]);_0x3f7e58[_0x9a72('0x2e')]=_['intersection'](_0x3f7e58[_0x9a72('0x2b')],_0x3f7e58[_0x9a72('0x31')]);_0xd94a28['attributes']=_[_0x9a72('0x2f')](_0x3f7e58['model'],qs[_0x9a72('0x32')](_0x14eb91[_0x9a72('0x31')]['fields']));_0xd94a28['attributes']=_0xd94a28[_0x9a72('0x30')]['length']?_0xd94a28[_0x9a72('0x30')]:_0x3f7e58[_0x9a72('0x2b')];if(_0x14eb91[_0x9a72('0x31')][_0x9a72('0x3e')]){_0xd94a28[_0x9a72('0x3f')]=[{'all':!![]}];}_0xd94a28=_[_0x9a72('0x39')]({},_0xd94a28,_0x14eb91[_0x9a72('0x46')]);return db[_0x9a72('0x3d')][_0x9a72('0x47')](_0xd94a28)[_0x9a72('0x25')](handleEntityNotFound(_0x46e0a6,null))['then'](respondWithResult(_0x46e0a6,null))[_0x9a72('0x42')](handleError(_0x46e0a6,null));};exports[_0x9a72('0x48')]=function(_0x1117a6,_0x4023bb){return db[_0x9a72('0x3d')][_0x9a72('0x48')](_0x1117a6[_0x9a72('0x49')],{})['then'](respondWithResult(_0x4023bb,0xc9))[_0x9a72('0x42')](handleError(_0x4023bb,null));};exports['update']=function(_0xce81b5,_0xbf7cce){if(_0xce81b5[_0x9a72('0x49')]['id']){delete _0xce81b5[_0x9a72('0x49')]['id'];}return db[_0x9a72('0x3d')][_0x9a72('0x47')]({'where':{'id':_0xce81b5['params']['id']}})[_0x9a72('0x25')](handleEntityNotFound(_0xbf7cce,null))[_0x9a72('0x25')](saveUpdates(_0xce81b5[_0x9a72('0x49')],null))['then'](respondWithResult(_0xbf7cce,null))[_0x9a72('0x42')](handleError(_0xbf7cce,null));};exports[_0x9a72('0x26')]=function(_0x3070ff,_0x50c352){return db['VtigerAccount'][_0x9a72('0x47')]({'where':{'id':_0x3070ff[_0x9a72('0x44')]['id']}})[_0x9a72('0x25')](handleEntityNotFound(_0x50c352,null))[_0x9a72('0x25')](removeEntity(_0x50c352,null))[_0x9a72('0x42')](handleError(_0x50c352,null));};exports[_0x9a72('0x4a')]=function(_0x364f1e,_0x1bc9f3,_0x45a98c){var _0x6f768f={};var _0x14add3={};var _0x2e6f90;var _0x122efc;return db[_0x9a72('0x3d')][_0x9a72('0x4b')]({'where':{'id':_0x364f1e[_0x9a72('0x44')]['id']}})[_0x9a72('0x25')](handleEntityNotFound(_0x1bc9f3,null))[_0x9a72('0x25')](function(_0x9291b9){if(_0x9291b9){_0x2e6f90=_0x9291b9;_0x14add3[_0x9a72('0x2b')]=_[_0x9a72('0x2d')](db[_0x9a72('0x4c')][_0x9a72('0x45')]);_0x14add3[_0x9a72('0x31')]=_[_0x9a72('0x2d')](_0x364f1e[_0x9a72('0x31')]);_0x14add3['filters']=_['intersection'](_0x14add3[_0x9a72('0x2b')],_0x14add3['query']);_0x6f768f[_0x9a72('0x30')]=_[_0x9a72('0x2f')](_0x14add3[_0x9a72('0x2b')],qs[_0x9a72('0x32')](_0x364f1e[_0x9a72('0x31')]['fields']));_0x6f768f[_0x9a72('0x30')]=_0x6f768f[_0x9a72('0x30')][_0x9a72('0x33')]?_0x6f768f[_0x9a72('0x30')]:_0x14add3[_0x9a72('0x2b')];_0x6f768f['order']=qs['sort'](_0x364f1e[_0x9a72('0x31')]['sort']);_0x6f768f[_0x9a72('0x38')]=qs[_0x9a72('0x2e')](_['pick'](_0x364f1e['query'],_0x14add3[_0x9a72('0x2e')]));if(_0x364f1e['query'][_0x9a72('0x3c')]){_0x6f768f[_0x9a72('0x38')]=_[_0x9a72('0x39')](_0x6f768f[_0x9a72('0x38')],{'$or':_[_0x9a72('0x2c')](_0x6f768f[_0x9a72('0x30')],function(_0x3a7436){var _0x2e5031={};_0x2e5031[_0x3a7436]={'$like':'%'+_0x364f1e['query'][_0x9a72('0x3c')]+'%'};return _0x2e5031;})});}_0x6f768f=_[_0x9a72('0x39')]({},_0x6f768f,_0x364f1e[_0x9a72('0x46')]);return _0x2e6f90[_0x9a72('0x4a')](_0x6f768f);}})['then'](function(_0x5a2a86){if(_0x5a2a86){_0x122efc=_0x5a2a86['length'];if(!_0x364f1e[_0x9a72('0x31')][_0x9a72('0x34')](_0x9a72('0x35'))){_0x6f768f[_0x9a72('0x1e')]=qs[_0x9a72('0x1e')](_0x364f1e['query'][_0x9a72('0x1e')]);_0x6f768f[_0x9a72('0x1b')]=qs['offset'](_0x364f1e[_0x9a72('0x31')][_0x9a72('0x1b')]);}return _0x2e6f90['getConfigurations'](_0x6f768f);}})['then'](function(_0x4a54b2){if(_0x4a54b2){return _0x4a54b2?{'count':_0x122efc,'rows':_0x4a54b2}:null;}})[_0x9a72('0x25')](respondWithResult(_0x1bc9f3,null))['catch'](handleError(_0x1bc9f3,null));};exports[_0x9a72('0x4d')]=function(_0x5e8a97,_0x40e630,_0x3a8fac){if(_0x5e8a97[_0x9a72('0x49')]['id']){delete _0x5e8a97['body']['id'];}return db[_0x9a72('0x3d')]['findOne']({'where':{'id':_0x5e8a97[_0x9a72('0x44')]['id']}})[_0x9a72('0x25')](handleEntityNotFound(_0x40e630,null))[_0x9a72('0x25')](function(_0x218b1f){if(_0x218b1f){_0x5e8a97[_0x9a72('0x49')]['AccountId']=_0x218b1f['id'];_0x5e8a97['body'][_0x9a72('0x4e')]=integrations[_0x9a72('0x4f')](_0x5e8a97[_0x9a72('0x49')][_0x9a72('0x50')],_0x5e8a97[_0x9a72('0x49')][_0x9a72('0x3a')]);_0x5e8a97[_0x9a72('0x49')][_0x9a72('0x51')]=integrations['getDescriptions'](_0x5e8a97[_0x9a72('0x49')][_0x9a72('0x50')],_0x5e8a97[_0x9a72('0x49')][_0x9a72('0x3a')]);return db[_0x9a72('0x4c')][_0x9a72('0x48')](_0x5e8a97['body'],{'include':[{'model':db[_0x9a72('0x52')],'as':_0x9a72('0x4e')},{'model':db[_0x9a72('0x52')],'as':_0x9a72('0x51')}]});}return null;})['then'](respondWithResult(_0x40e630,null))['catch'](handleError(_0x40e630,null));};var md5=require(_0x9a72('0x53'));exports['getFields']=function(_0x1d6e60,_0x4273e8,_0x52e8aa){var _0x2e9ccf=null;var _0x3122e0=null;var _0x256a88=null;var _0x21b486=null;var _0x14e00d='';return db[_0x9a72('0x3d')][_0x9a72('0x4b')]({'where':{'id':_0x1d6e60[_0x9a72('0x44')]['id']},'attributes':['id',_0x9a72('0x27'),_0x9a72('0x54'),'description',_0x9a72('0x55'),_0x9a72('0x56'),_0x9a72('0x57'),_0x9a72('0x58')]})[_0x9a72('0x25')](handleEntityNotFound(_0x4273e8,null))[_0x9a72('0x25')](function(_0x4b439b){if(_0x4b439b){_0x2e9ccf=_0x4b439b['username'];_0x3122e0=_0x4b439b['accessKey'];_0x256a88=_0x4b439b['moduleName'];_0x14e00d=_0x4b439b[_0x9a72('0x56')];var _0x359d84=_0x14e00d[_0x9a72('0x59')](-0x1);if(_0x359d84==='/'){_0x14e00d=_0x14e00d[_0x9a72('0x5a')](0x0,_0x14e00d[_0x9a72('0x5b')](_0x359d84));}_0x21b486=util[_0x9a72('0x5c')](_0x9a72('0x5d'),_0x14e00d);var _0x571e18={'method':_0x9a72('0x5e'),'uri':_0x21b486,'qs':{'operation':_0x9a72('0x5f'),'username':_0x4b439b['username']},'json':!![]};return rp(_0x571e18);}})['then'](function(_0x443676){if(_0x443676[_0x9a72('0x60')]){var _0x165058={'method':_0x9a72('0x61'),'uri':_0x21b486,'form':{'operation':_0x9a72('0x62'),'username':_0x2e9ccf,'accessKey':md5(_0x443676[_0x9a72('0x63')][_0x9a72('0x64')]+_0x3122e0)},'json':!![]};return rp(_0x165058);}})[_0x9a72('0x25')](function(_0x33e8f2){if(_0x33e8f2[_0x9a72('0x60')]){var _0x3788b8={'method':'GET','uri':_0x21b486,'qs':{'operation':_0x9a72('0x65'),'username':_0x2e9ccf,'sessionName':_0x33e8f2[_0x9a72('0x63')][_0x9a72('0x66')],'elementType':_0x256a88},'json':!![]};return rp(_0x3788b8);}})[_0x9a72('0x25')](function(_0xdf6d1b){if(_0xdf6d1b[_0x9a72('0x60')]){var _0x31538b=[_0x9a72('0x67'),_0x9a72('0x68'),_0x9a72('0x69')];_[_0x9a72('0x6a')](_0xdf6d1b[_0x9a72('0x63')]['fields'],function(_0x2baa5b){return _0x31538b['includes'](_0x2baa5b[_0x9a72('0x3a')][_0x9a72('0x27')]);});_['remove'](_0xdf6d1b[_0x9a72('0x63')][_0x9a72('0x32')],function(_0xbaac03){return _0xbaac03[_0x9a72('0x6b')]===_0x9a72('0x6c');});return{'count':_0xdf6d1b[_0x9a72('0x63')][_0x9a72('0x32')][_0x9a72('0x33')],'rows':_['map'](_0xdf6d1b[_0x9a72('0x63')][_0x9a72('0x32')],function(_0x48274e){return{'id':_0x48274e[_0x9a72('0x27')],'name':_0x48274e[_0x9a72('0x6d')],'custom':_[_0x9a72('0x6e')](_0x48274e['name'],_0x9a72('0x6f'))?!![]:![],'options':_0x48274e[_0x9a72('0x3a')]['name']===_0x9a72('0x70')&&_0x48274e['type'][_0x9a72('0x71')][_0x9a72('0x33')]>0x0?_[_0x9a72('0x2c')](_0x48274e[_0x9a72('0x3a')][_0x9a72('0x71')],function(_0x4ef210){return{'name':_0x4ef210[_0x9a72('0x6d')],'value':_0x4ef210[_0x9a72('0x72')]};}):[]};})};}})['then'](respondWithResult(_0x4273e8,null))[_0x9a72('0x42')](function(_0x3eb37c){console[_0x9a72('0x73')]('vTiger\x20error:\x20'+_0x3eb37c);var _0x79f2b5=_0x1d6e60[_0x9a72('0x31')][_0x9a72('0x74')]?0x1f4:_0x3eb37c['statusCode']||0x1f4;logger[_0x9a72('0x75')](_0x9a72('0x76'),_0x9a72('0x77'),_0x79f2b5,JSON[_0x9a72('0x78')](_0x3eb37c));delete _0x3eb37c['name'];if(_0x79f2b5===0x191){_0x79f2b5=0x190;}_0x4273e8[_0x9a72('0x18')](_0x79f2b5)[_0x9a72('0x28')](_0x1d6e60[_0x9a72('0x31')][_0x9a72('0x74')]?{'message':_0x9a72('0x79'),'statusCode':_0x3eb37c[_0x9a72('0x7a')]}:_0x3eb37c);});};
\ No newline at end of file
+var _0x41e7=['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','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','map','VtigerAccount','rawAttributes','fieldName','type','key','query','intersection','model','fields','attributes','length','nolimit','order','sort','filters','pick','filter','merge','VIRTUAL','options','where','include','findAll','rows','catch','show','keys','includeAll','find','create','body','params','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','md5','getFields','username','description','serverUrl','accessKey','moduleName','substring','format','%s/webservice.php','GET','POST','result','token','describe','success','autogenerated','reference','owner','remove','includes','editable','cf_','picklist','value','log','vTiger\x20error:\x20','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x41e7,0xe4));var _0x741e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x41e7[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0x741e('0x0'));var rimraf=require(_0x741e('0x1'));var zipdir=require(_0x741e('0x2'));var jsonpatch=require(_0x741e('0x3'));var rp=require(_0x741e('0x4'));var moment=require(_0x741e('0x5'));var BPromise=require(_0x741e('0x6'));var Mustache=require(_0x741e('0x7'));var util=require('util');var path=require(_0x741e('0x8'));var sox=require(_0x741e('0x9'));var csv=require(_0x741e('0xa'));var ejs=require(_0x741e('0xb'));var fs=require('fs');var fs_extra=require(_0x741e('0xc'));var _=require(_0x741e('0xd'));var squel=require(_0x741e('0xe'));var crypto=require(_0x741e('0xf'));var jsforce=require(_0x741e('0x10'));var deskjs=require(_0x741e('0x11'));var toCsv=require(_0x741e('0xa'));var querystring=require(_0x741e('0x12'));var Papa=require(_0x741e('0x13'));var Redis=require(_0x741e('0x14'));var authService=require(_0x741e('0x15'));var qs=require(_0x741e('0x16'));var as=require(_0x741e('0x17'));var hardwareService=require(_0x741e('0x18'));var logger=require(_0x741e('0x19'))(_0x741e('0x1a'));var utils=require(_0x741e('0x1b'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x741e('0x1c'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x56db0f,_0x4dc4ff){_0x4dc4ff=_0x4dc4ff||0xcc;return function(_0x1d4ff7){if(_0x1d4ff7){return _0x56db0f['sendStatus'](_0x4dc4ff);}return _0x56db0f[_0x741e('0x1d')](_0x4dc4ff)['end']();};}function respondWithResult(_0x193dc0,_0x4b060c){_0x4b060c=_0x4b060c||0xc8;return function(_0x570747){if(_0x570747){return _0x193dc0[_0x741e('0x1d')](_0x4b060c)[_0x741e('0x1e')](_0x570747);}};}function respondWithFilteredResult(_0x4c3a4b,_0x2e656d){return function(_0x5df91a){if(_0x5df91a){var _0xda6aa2=typeof _0x2e656d[_0x741e('0x1f')]===_0x741e('0x20')&&typeof _0x2e656d['limit']===_0x741e('0x20');var _0xbc5e4b=_0x5df91a[_0x741e('0x21')];var _0x4dba5d=_0xda6aa2?0x0:_0x2e656d['offset'];var _0x366f8e=_0xda6aa2?_0x5df91a[_0x741e('0x21')]:_0x2e656d['offset']+_0x2e656d[_0x741e('0x22')];var _0x583561;if(_0x366f8e>=_0xbc5e4b){_0x366f8e=_0xbc5e4b;_0x583561=0xc8;}else{_0x583561=0xce;}_0x4c3a4b[_0x741e('0x1d')](_0x583561);return _0x4c3a4b[_0x741e('0x23')](_0x741e('0x24'),_0x4dba5d+'-'+_0x366f8e+'/'+_0xbc5e4b)[_0x741e('0x1e')](_0x5df91a);}return null;};}function patchUpdates(_0x508960){return function(_0xd98864){try{jsonpatch['apply'](_0xd98864,_0x508960,!![]);}catch(_0x3c19f7){return BPromise['reject'](_0x3c19f7);}return _0xd98864['save']();};}function saveUpdates(_0x28d756,_0x3053f8){return function(_0x28de2d){if(_0x28de2d){return _0x28de2d[_0x741e('0x25')](_0x28d756)[_0x741e('0x26')](function(_0x589229){return _0x589229;});}return null;};}function removeEntity(_0x4d7983,_0x4a1108){return function(_0x577acc){if(_0x577acc){return _0x577acc[_0x741e('0x27')]()[_0x741e('0x26')](function(){_0x4d7983['status'](0xcc)[_0x741e('0x28')]();});}};}function handleEntityNotFound(_0xb5074b,_0x35c6b4){return function(_0x3604c6){if(!_0x3604c6){_0xb5074b[_0x741e('0x29')](0x194);}return _0x3604c6;};}function handleError(_0x2e4c8f,_0x44ca36){_0x44ca36=_0x44ca36||0x1f4;return function(_0x2f4858){logger[_0x741e('0x2a')](_0x2f4858[_0x741e('0x2b')]);if(_0x2f4858['name']){delete _0x2f4858[_0x741e('0x2c')];}_0x2e4c8f[_0x741e('0x1d')](_0x44ca36)[_0x741e('0x2d')](_0x2f4858);};}exports[_0x741e('0x2e')]=function(_0xa70aaf,_0x4adfa4){var _0x4f3a02={},_0x4e4a2f={},_0x2c9a4c={'count':0x0,'rows':[]};var _0x16141c=_[_0x741e('0x2f')](db[_0x741e('0x30')][_0x741e('0x31')],function(_0x3f8ad4){return{'name':_0x3f8ad4[_0x741e('0x32')],'type':_0x3f8ad4[_0x741e('0x33')][_0x741e('0x34')]};});_0x4e4a2f['model']=_['map'](_0x16141c,_0x741e('0x2c'));_0x4e4a2f[_0x741e('0x35')]=_['keys'](_0xa70aaf[_0x741e('0x35')]);_0x4e4a2f['filters']=_[_0x741e('0x36')](_0x4e4a2f[_0x741e('0x37')],_0x4e4a2f[_0x741e('0x35')]);_0x4f3a02['attributes']=_[_0x741e('0x36')](_0x4e4a2f['model'],qs[_0x741e('0x38')](_0xa70aaf[_0x741e('0x35')][_0x741e('0x38')]));_0x4f3a02[_0x741e('0x39')]=_0x4f3a02[_0x741e('0x39')][_0x741e('0x3a')]?_0x4f3a02[_0x741e('0x39')]:_0x4e4a2f[_0x741e('0x37')];if(!_0xa70aaf[_0x741e('0x35')]['hasOwnProperty'](_0x741e('0x3b'))){_0x4f3a02['limit']=qs[_0x741e('0x22')](_0xa70aaf[_0x741e('0x35')][_0x741e('0x22')]);_0x4f3a02[_0x741e('0x1f')]=qs[_0x741e('0x1f')](_0xa70aaf['query'][_0x741e('0x1f')]);}_0x4f3a02[_0x741e('0x3c')]=qs['sort'](_0xa70aaf[_0x741e('0x35')][_0x741e('0x3d')]);_0x4f3a02['where']=qs[_0x741e('0x3e')](_[_0x741e('0x3f')](_0xa70aaf[_0x741e('0x35')],_0x4e4a2f[_0x741e('0x3e')]),_0x16141c);if(_0xa70aaf[_0x741e('0x35')][_0x741e('0x40')]){_0x4f3a02['where']=_[_0x741e('0x41')](_0x4f3a02['where'],{'$or':_[_0x741e('0x2f')](_0x16141c,function(_0x43433a){if(_0x43433a[_0x741e('0x33')]!==_0x741e('0x42')){var _0x14ec75={};_0x14ec75[_0x43433a[_0x741e('0x2c')]]={'$like':'%'+_0xa70aaf[_0x741e('0x35')]['filter']+'%'};return _0x14ec75;}})});}_0x4f3a02=_[_0x741e('0x41')]({},_0x4f3a02,_0xa70aaf[_0x741e('0x43')]);var _0x2a379c={'where':_0x4f3a02[_0x741e('0x44')]};return db['VtigerAccount']['count'](_0x2a379c)[_0x741e('0x26')](function(_0x5ce736){_0x2c9a4c['count']=_0x5ce736;if(_0xa70aaf[_0x741e('0x35')]['includeAll']){_0x4f3a02[_0x741e('0x45')]=[{'all':!![]}];}return db['VtigerAccount'][_0x741e('0x46')](_0x4f3a02);})[_0x741e('0x26')](function(_0x1e0d94){_0x2c9a4c[_0x741e('0x47')]=_0x1e0d94;return _0x2c9a4c;})['then'](respondWithFilteredResult(_0x4adfa4,_0x4f3a02))[_0x741e('0x48')](handleError(_0x4adfa4,null));};exports[_0x741e('0x49')]=function(_0xc068aa,_0x17ab5f){var _0xecb88f={'raw':![],'where':{'id':_0xc068aa['params']['id']}},_0xc85dc0={};_0xc85dc0[_0x741e('0x37')]=_[_0x741e('0x4a')](db[_0x741e('0x30')][_0x741e('0x31')]);_0xc85dc0[_0x741e('0x35')]=_[_0x741e('0x4a')](_0xc068aa[_0x741e('0x35')]);_0xc85dc0[_0x741e('0x3e')]=_[_0x741e('0x36')](_0xc85dc0['model'],_0xc85dc0[_0x741e('0x35')]);_0xecb88f[_0x741e('0x39')]=_[_0x741e('0x36')](_0xc85dc0['model'],qs[_0x741e('0x38')](_0xc068aa[_0x741e('0x35')][_0x741e('0x38')]));_0xecb88f[_0x741e('0x39')]=_0xecb88f[_0x741e('0x39')][_0x741e('0x3a')]?_0xecb88f[_0x741e('0x39')]:_0xc85dc0[_0x741e('0x37')];if(_0xc068aa['query'][_0x741e('0x4b')]){_0xecb88f[_0x741e('0x45')]=[{'all':!![]}];}_0xecb88f=_[_0x741e('0x41')]({},_0xecb88f,_0xc068aa['options']);return db[_0x741e('0x30')][_0x741e('0x4c')](_0xecb88f)[_0x741e('0x26')](handleEntityNotFound(_0x17ab5f,null))['then'](respondWithResult(_0x17ab5f,null))[_0x741e('0x48')](handleError(_0x17ab5f,null));};exports[_0x741e('0x4d')]=function(_0x38e0b1,_0x398a29){return db[_0x741e('0x30')][_0x741e('0x4d')](_0x38e0b1['body'],{})[_0x741e('0x26')](respondWithResult(_0x398a29,0xc9))[_0x741e('0x48')](handleError(_0x398a29,null));};exports[_0x741e('0x25')]=function(_0x176e89,_0x4a7c08){if(_0x176e89[_0x741e('0x4e')]['id']){delete _0x176e89[_0x741e('0x4e')]['id'];}return db['VtigerAccount'][_0x741e('0x4c')]({'where':{'id':_0x176e89[_0x741e('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4a7c08,null))[_0x741e('0x26')](saveUpdates(_0x176e89[_0x741e('0x4e')],null))['then'](respondWithResult(_0x4a7c08,null))[_0x741e('0x48')](handleError(_0x4a7c08,null));};exports[_0x741e('0x27')]=function(_0x4daf85,_0x44223e){return db[_0x741e('0x30')][_0x741e('0x4c')]({'where':{'id':_0x4daf85['params']['id']}})[_0x741e('0x26')](handleEntityNotFound(_0x44223e,null))['then'](removeEntity(_0x44223e,null))[_0x741e('0x48')](handleError(_0x44223e,null));};exports['getConfigurations']=function(_0x5eb829,_0x54c566,_0x15364a){var _0x2a1c2e={};var _0x3e8e98={};var _0x363944;var _0x5cd470;return db[_0x741e('0x30')][_0x741e('0x50')]({'where':{'id':_0x5eb829[_0x741e('0x4f')]['id']}})[_0x741e('0x26')](handleEntityNotFound(_0x54c566,null))['then'](function(_0x5443da){if(_0x5443da){_0x363944=_0x5443da;_0x3e8e98[_0x741e('0x37')]=_['keys'](db[_0x741e('0x51')][_0x741e('0x31')]);_0x3e8e98[_0x741e('0x35')]=_['keys'](_0x5eb829['query']);_0x3e8e98[_0x741e('0x3e')]=_[_0x741e('0x36')](_0x3e8e98[_0x741e('0x37')],_0x3e8e98[_0x741e('0x35')]);_0x2a1c2e[_0x741e('0x39')]=_['intersection'](_0x3e8e98[_0x741e('0x37')],qs[_0x741e('0x38')](_0x5eb829['query'][_0x741e('0x38')]));_0x2a1c2e[_0x741e('0x39')]=_0x2a1c2e[_0x741e('0x39')][_0x741e('0x3a')]?_0x2a1c2e[_0x741e('0x39')]:_0x3e8e98['model'];_0x2a1c2e[_0x741e('0x3c')]=qs[_0x741e('0x3d')](_0x5eb829['query']['sort']);_0x2a1c2e[_0x741e('0x44')]=qs[_0x741e('0x3e')](_[_0x741e('0x3f')](_0x5eb829[_0x741e('0x35')],_0x3e8e98['filters']));if(_0x5eb829[_0x741e('0x35')]['filter']){_0x2a1c2e[_0x741e('0x44')]=_[_0x741e('0x41')](_0x2a1c2e['where'],{'$or':_[_0x741e('0x2f')](_0x2a1c2e[_0x741e('0x39')],function(_0x5d365d){var _0xc90e0b={};_0xc90e0b[_0x5d365d]={'$like':'%'+_0x5eb829[_0x741e('0x35')]['filter']+'%'};return _0xc90e0b;})});}_0x2a1c2e=_[_0x741e('0x41')]({},_0x2a1c2e,_0x5eb829[_0x741e('0x43')]);return _0x363944['getConfigurations'](_0x2a1c2e);}})[_0x741e('0x26')](function(_0x31d483){if(_0x31d483){_0x5cd470=_0x31d483[_0x741e('0x3a')];if(!_0x5eb829[_0x741e('0x35')]['hasOwnProperty'](_0x741e('0x3b'))){_0x2a1c2e[_0x741e('0x22')]=qs[_0x741e('0x22')](_0x5eb829[_0x741e('0x35')][_0x741e('0x22')]);_0x2a1c2e['offset']=qs['offset'](_0x5eb829[_0x741e('0x35')][_0x741e('0x1f')]);}return _0x363944['getConfigurations'](_0x2a1c2e);}})['then'](function(_0x580e6f){if(_0x580e6f){return _0x580e6f?{'count':_0x5cd470,'rows':_0x580e6f}:null;}})['then'](respondWithResult(_0x54c566,null))[_0x741e('0x48')](handleError(_0x54c566,null));};exports[_0x741e('0x52')]=function(_0x471ff4,_0x5c1906,_0x15b083){if(_0x471ff4[_0x741e('0x4e')]['id']){delete _0x471ff4['body']['id'];}return db['VtigerAccount'][_0x741e('0x50')]({'where':{'id':_0x471ff4['params']['id']}})[_0x741e('0x26')](handleEntityNotFound(_0x5c1906,null))[_0x741e('0x26')](function(_0x332788){if(_0x332788){_0x471ff4[_0x741e('0x4e')][_0x741e('0x53')]=_0x332788['id'];_0x471ff4['body'][_0x741e('0x54')]=integrations[_0x741e('0x55')](_0x471ff4[_0x741e('0x4e')][_0x741e('0x56')],_0x471ff4['body'][_0x741e('0x33')]);_0x471ff4[_0x741e('0x4e')][_0x741e('0x57')]=integrations[_0x741e('0x58')](_0x471ff4[_0x741e('0x4e')][_0x741e('0x56')],_0x471ff4['body'][_0x741e('0x33')]);return db[_0x741e('0x51')]['create'](_0x471ff4[_0x741e('0x4e')],{'include':[{'model':db[_0x741e('0x59')],'as':_0x741e('0x54')},{'model':db['VtigerField'],'as':_0x741e('0x57')}]});}return null;})[_0x741e('0x26')](respondWithResult(_0x5c1906,null))[_0x741e('0x48')](handleError(_0x5c1906,null));};var md5=require(_0x741e('0x5a'));exports[_0x741e('0x5b')]=function(_0x399e0d,_0x1dfe81,_0x16f8cd){var _0x49ed28=null;var _0x336710=null;var _0x260a43=null;var _0x5d72f0=null;var _0x222dfc='';return db[_0x741e('0x30')][_0x741e('0x50')]({'where':{'id':_0x399e0d[_0x741e('0x4f')]['id']},'attributes':['id',_0x741e('0x2c'),_0x741e('0x5c'),_0x741e('0x5d'),'moduleName','remoteUri',_0x741e('0x5e'),_0x741e('0x5f')]})[_0x741e('0x26')](handleEntityNotFound(_0x1dfe81,null))[_0x741e('0x26')](function(_0x5872b7){if(_0x5872b7){_0x49ed28=_0x5872b7[_0x741e('0x5c')];_0x336710=_0x5872b7[_0x741e('0x5f')];_0x260a43=_0x5872b7[_0x741e('0x60')];_0x222dfc=_0x5872b7['remoteUri'];var _0x2a3f20=_0x222dfc['slice'](-0x1);if(_0x2a3f20==='/'){_0x222dfc=_0x222dfc[_0x741e('0x61')](0x0,_0x222dfc['lastIndexOf'](_0x2a3f20));}_0x5d72f0=util[_0x741e('0x62')](_0x741e('0x63'),_0x222dfc);var _0x28abf3={'method':_0x741e('0x64'),'uri':_0x5d72f0,'qs':{'operation':'getchallenge','username':_0x5872b7['username']},'json':!![]};return rp(_0x28abf3);}})[_0x741e('0x26')](function(_0x2a1be6){if(_0x2a1be6['success']){var _0x336351={'method':_0x741e('0x65'),'uri':_0x5d72f0,'form':{'operation':'login','username':_0x49ed28,'accessKey':md5(_0x2a1be6[_0x741e('0x66')][_0x741e('0x67')]+_0x336710)},'json':!![]};return rp(_0x336351);}})[_0x741e('0x26')](function(_0x203e58){if(_0x203e58['success']){var _0x30fde9={'method':_0x741e('0x64'),'uri':_0x5d72f0,'qs':{'operation':_0x741e('0x68'),'username':_0x49ed28,'sessionName':_0x203e58[_0x741e('0x66')]['sessionName'],'elementType':_0x260a43},'json':!![]};return rp(_0x30fde9);}})[_0x741e('0x26')](function(_0x170480){if(_0x170480[_0x741e('0x69')]){var _0x5e43da=[_0x741e('0x6a'),_0x741e('0x6b'),_0x741e('0x6c')];_[_0x741e('0x6d')](_0x170480['result'][_0x741e('0x38')],function(_0x4c45a0){return _0x5e43da[_0x741e('0x6e')](_0x4c45a0['type'][_0x741e('0x2c')]);});_[_0x741e('0x6d')](_0x170480[_0x741e('0x66')][_0x741e('0x38')],function(_0x5d176a){return _0x5d176a[_0x741e('0x6f')]==='false';});return{'count':_0x170480['result']['fields']['length'],'rows':_[_0x741e('0x2f')](_0x170480[_0x741e('0x66')]['fields'],function(_0x2802e2){return{'id':_0x2802e2['name'],'name':_0x2802e2['label'],'custom':_['startsWith'](_0x2802e2[_0x741e('0x2c')],_0x741e('0x70'))?!![]:![],'options':_0x2802e2[_0x741e('0x33')]['name']===_0x741e('0x71')&&_0x2802e2[_0x741e('0x33')]['picklistValues'][_0x741e('0x3a')]>0x0?_[_0x741e('0x2f')](_0x2802e2[_0x741e('0x33')]['picklistValues'],function(_0x315634){return{'name':_0x315634['label'],'value':_0x315634[_0x741e('0x72')]};}):[]};})};}})['then'](respondWithResult(_0x1dfe81,null))['catch'](function(_0x2a9908){console[_0x741e('0x73')](_0x741e('0x74')+_0x2a9908);var _0x13bd22=_0x399e0d[_0x741e('0x35')][_0x741e('0x75')]?0x1f4:_0x2a9908[_0x741e('0x76')]||0x1f4;logger[_0x741e('0x2a')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x13bd22,JSON[_0x741e('0x77')](_0x2a9908));delete _0x2a9908[_0x741e('0x2c')];if(_0x13bd22===0x191){_0x13bd22=0x190;}_0x1dfe81[_0x741e('0x1d')](_0x13bd22)['send'](_0x399e0d['query'][_0x741e('0x75')]?{'message':_0x741e('0x78'),'statusCode':_0x2a9908[_0x741e('0x76')]}:_0x2a9908);});};
\ No newline at end of file
index 7e5a53e..cf03a07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c6=['./intVtigerAccount.attributes','../../components/integrations/configuration','exports','int_vtiger_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3973ef,_0x3f2ac7){var _0x58053b=function(_0x20af81){while(--_0x20af81){_0x3973ef['push'](_0x3973ef['shift']());}};_0x58053b(++_0x3f2ac7);}(_0x80c6,0x93));var _0x680c=function(_0x3e8a15,_0x1d05b4){_0x3e8a15=_0x3e8a15-0x0;var _0x5d5b36=_0x80c6[_0x3e8a15];return _0x5d5b36;};'use strict';var _=require(_0x680c('0x0'));var util=require(_0x680c('0x1'));var logger=require('../../config/logger')(_0x680c('0x2'));var moment=require(_0x680c('0x3'));var BPromise=require(_0x680c('0x4'));var rp=require(_0x680c('0x5'));var fs=require('fs');var path=require(_0x680c('0x6'));var rimraf=require(_0x680c('0x7'));var config=require(_0x680c('0x8'));var attributes=require(_0x680c('0x9'));var integrations=require(_0x680c('0xa'));module[_0x680c('0xb')]=function(_0x3300b4,_0x3a51fb){return _0x3300b4['define']('VtigerAccount',attributes,{'tableName':_0x680c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x773d=['api','moment','bluebird','request-promise','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','../../config/logger'];(function(_0x1811e6,_0x906641){var _0x2f6034=function(_0x1d77cf){while(--_0x1d77cf){_0x1811e6['push'](_0x1811e6['shift']());}};_0x2f6034(++_0x906641);}(_0x773d,0x193));var _0xd773=function(_0x3bfbec,_0x38356f){_0x3bfbec=_0x3bfbec-0x0;var _0x11021f=_0x773d[_0x3bfbec];return _0x11021f;};'use strict';var _=require(_0xd773('0x0'));var util=require(_0xd773('0x1'));var logger=require(_0xd773('0x2'))(_0xd773('0x3'));var moment=require(_0xd773('0x4'));var BPromise=require(_0xd773('0x5'));var rp=require(_0xd773('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xd773('0x7'));var attributes=require(_0xd773('0x8'));var integrations=require(_0xd773('0x9'));module[_0xd773('0xa')]=function(_0x4bce1c,_0x5d7e9d){return _0x4bce1c[_0xd773('0xb')](_0xd773('0xc'),attributes,{'tableName':_0xd773('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 04e929e..e433a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde2c=['findAll','options','raw','where','limit','include','model','attributes','GetVtigerAccount','stringify','find','map','ShowVtigerAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','VtigerAccount'];(function(_0x579b39,_0x42c13d){var _0x6f5088=function(_0x3394c6){while(--_0x3394c6){_0x579b39['push'](_0x579b39['shift']());}};_0x6f5088(++_0x42c13d);}(_0xde2c,0x7f));var _0xcde2=function(_0x3c4dad,_0x25ffd5){_0x3c4dad=_0x3c4dad-0x0;var _0x1a4f49=_0xde2c[_0x3c4dad];return _0x1a4f49;};'use strict';var _=require(_0xcde2('0x0'));var util=require(_0xcde2('0x1'));var moment=require(_0xcde2('0x2'));var BPromise=require(_0xcde2('0x3'));var rs=require(_0xcde2('0x4'));var fs=require('fs');var Redis=require(_0xcde2('0x5'));var db=require(_0xcde2('0x6'))['db'];var utils=require(_0xcde2('0x7'));var logger=require('../../config/logger')(_0xcde2('0x8'));var config=require(_0xcde2('0x9'));var jayson=require(_0xcde2('0xa'));var client=jayson[_0xcde2('0xb')][_0xcde2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53c558,_0x2b27ef,_0x385e83){return new BPromise(function(_0x9c7036,_0x544235){return client['request'](_0x53c558,_0x385e83)[_0xcde2('0xd')](function(_0x1c8b3c){logger['info'](_0xcde2('0xe'),_0x2b27ef,_0xcde2('0xf'));logger[_0xcde2('0x10')](_0xcde2('0x11'),_0x2b27ef,'request\x20sent',JSON['stringify'](_0x1c8b3c));if(_0x1c8b3c[_0xcde2('0x12')]){if(_0x1c8b3c[_0xcde2('0x12')][_0xcde2('0x13')]===0x1f4){logger[_0xcde2('0x12')](_0xcde2('0xe'),_0x2b27ef,_0x1c8b3c[_0xcde2('0x12')]['message']);return _0x544235(_0x1c8b3c[_0xcde2('0x12')]['message']);}logger[_0xcde2('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x2b27ef,_0x1c8b3c['error'][_0xcde2('0x14')]);return _0x9c7036(_0x1c8b3c[_0xcde2('0x12')][_0xcde2('0x14')]);}else{logger[_0xcde2('0x15')](_0xcde2('0xe'),_0x2b27ef,'request\x20sent');_0x9c7036(_0x1c8b3c[_0xcde2('0x16')]['message']);}})[_0xcde2('0x17')](function(_0x198840){logger[_0xcde2('0x12')](_0xcde2('0xe'),_0x2b27ef,_0x198840);_0x544235(_0x198840);});});}exports['GetVtigerAccount']=function(_0x4fd5aa){var _0x4fe586=this;return new Promise(function(_0x2b4468,_0x582e84){return db[_0xcde2('0x18')][_0xcde2('0x19')]({'raw':_0x4fd5aa[_0xcde2('0x1a')]?_0x4fd5aa['options'][_0xcde2('0x1b')]===undefined?!![]:![]:!![],'where':_0x4fd5aa[_0xcde2('0x1a')]?_0x4fd5aa[_0xcde2('0x1a')][_0xcde2('0x1c')]||null:null,'attributes':_0x4fd5aa[_0xcde2('0x1a')]?_0x4fd5aa['options']['attributes']||null:null,'limit':_0x4fd5aa['options']?_0x4fd5aa[_0xcde2('0x1a')][_0xcde2('0x1d')]||null:null,'include':_0x4fd5aa[_0xcde2('0x1a')]?_0x4fd5aa[_0xcde2('0x1a')][_0xcde2('0x1e')]?_['map'](_0x4fd5aa[_0xcde2('0x1a')]['include'],function(_0x280d8c){return{'model':db[_0x280d8c[_0xcde2('0x1f')]],'as':_0x280d8c['as'],'attributes':_0x280d8c[_0xcde2('0x20')],'include':_0x280d8c['include']?_['map'](_0x280d8c[_0xcde2('0x1e')],function(_0x207a12){return{'model':db[_0x207a12[_0xcde2('0x1f')]],'as':_0x207a12['as'],'attributes':_0x207a12[_0xcde2('0x20')],'include':_0x207a12[_0xcde2('0x1e')]?_['map'](_0x207a12[_0xcde2('0x1e')],function(_0x45275a){return{'model':db[_0x45275a[_0xcde2('0x1f')]],'as':_0x45275a['as'],'attributes':_0x45275a['attributes']};}):[]};}):[]};}):[]:[]})[_0xcde2('0xd')](function(_0x348ca1){logger[_0xcde2('0x15')](_0xcde2('0x21'),_0x4fd5aa);logger[_0xcde2('0x10')](_0xcde2('0x21'),_0x4fd5aa,JSON[_0xcde2('0x22')](_0x348ca1));_0x2b4468(_0x348ca1);})[_0xcde2('0x17')](function(_0x5bf1e6){logger[_0xcde2('0x12')]('GetVtigerAccount',_0x5bf1e6[_0xcde2('0x14')],_0x4fd5aa);_0x582e84(_0x4fe586[_0xcde2('0x12')](0x1f4,_0x5bf1e6[_0xcde2('0x14')]));});});};exports['ShowVtigerAccount']=function(_0xae46dc){var _0x28fedd=this;return new Promise(function(_0x58afb1,_0x26ec42){return db[_0xcde2('0x18')][_0xcde2('0x23')]({'raw':_0xae46dc[_0xcde2('0x1a')]?_0xae46dc[_0xcde2('0x1a')][_0xcde2('0x1b')]===undefined?!![]:![]:!![],'where':_0xae46dc[_0xcde2('0x1a')]?_0xae46dc[_0xcde2('0x1a')]['where']||null:null,'attributes':_0xae46dc[_0xcde2('0x1a')]?_0xae46dc[_0xcde2('0x1a')][_0xcde2('0x20')]||null:null,'include':_0xae46dc[_0xcde2('0x1a')]?_0xae46dc['options'][_0xcde2('0x1e')]?_[_0xcde2('0x24')](_0xae46dc[_0xcde2('0x1a')][_0xcde2('0x1e')],function(_0x498339){return{'model':db[_0x498339[_0xcde2('0x1f')]],'as':_0x498339['as'],'attributes':_0x498339[_0xcde2('0x20')],'include':_0x498339[_0xcde2('0x1e')]?_[_0xcde2('0x24')](_0x498339['include'],function(_0xb9c8d2){return{'model':db[_0xb9c8d2[_0xcde2('0x1f')]],'as':_0xb9c8d2['as'],'attributes':_0xb9c8d2[_0xcde2('0x20')],'include':_0xb9c8d2[_0xcde2('0x1e')]?_[_0xcde2('0x24')](_0xb9c8d2['include'],function(_0x2cd313){return{'model':db[_0x2cd313[_0xcde2('0x1f')]],'as':_0x2cd313['as'],'attributes':_0x2cd313[_0xcde2('0x20')]};}):[]};}):[]};}):[]:[]})[_0xcde2('0xd')](function(_0x4a64c1){logger['info'](_0xcde2('0x25'),_0xae46dc);logger[_0xcde2('0x10')](_0xcde2('0x25'),_0xae46dc,JSON[_0xcde2('0x22')](_0x4a64c1));_0x58afb1(_0x4a64c1);})[_0xcde2('0x17')](function(_0x45af6e){logger[_0xcde2('0x12')](_0xcde2('0x25'),_0x45af6e[_0xcde2('0x14')],_0xae46dc);_0x26ec42(_0x28fedd['error'](0x1f4,_0x45af6e[_0xcde2('0x14')]));});});};
\ No newline at end of file
+var _0x9354=['catch','GetVtigerAccount','findAll','options','where','attributes','limit','include','map','model','then','stringify','ShowVtigerAccount','raw','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','error','message','result'];(function(_0x3bc10d,_0x53afae){var _0xbe2aad=function(_0x5b2c66){while(--_0x5b2c66){_0x3bc10d['push'](_0x3bc10d['shift']());}};_0xbe2aad(++_0x53afae);}(_0x9354,0x96));var _0x4935=function(_0x345de7,_0x1de531){_0x345de7=_0x345de7-0x0;var _0x26ffc7=_0x9354[_0x345de7];return _0x26ffc7;};'use strict';var _=require('lodash');var util=require(_0x4935('0x0'));var moment=require(_0x4935('0x1'));var BPromise=require('bluebird');var rs=require(_0x4935('0x2'));var fs=require('fs');var Redis=require(_0x4935('0x3'));var db=require(_0x4935('0x4'))['db'];var utils=require(_0x4935('0x5'));var logger=require('../../config/logger')(_0x4935('0x6'));var config=require(_0x4935('0x7'));var jayson=require(_0x4935('0x8'));var client=jayson[_0x4935('0x9')][_0x4935('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e47bd,_0x118d36,_0x2d735e){return new BPromise(function(_0x10793e,_0x4c9902){return client[_0x4935('0xb')](_0x2e47bd,_0x2d735e)['then'](function(_0x2aac9a){logger[_0x4935('0xc')](_0x4935('0xd'),_0x118d36,_0x4935('0xe'));logger[_0x4935('0xf')](_0x4935('0x10'),_0x118d36,'request\x20sent',JSON['stringify'](_0x2aac9a));if(_0x2aac9a[_0x4935('0x11')]){if(_0x2aac9a['error']['code']===0x1f4){logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);return _0x4c9902(_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);}logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);return _0x10793e(_0x2aac9a[_0x4935('0x11')][_0x4935('0x12')]);}else{logger[_0x4935('0xc')](_0x4935('0xd'),_0x118d36,_0x4935('0xe'));_0x10793e(_0x2aac9a[_0x4935('0x13')]['message']);}})[_0x4935('0x14')](function(_0x46526a){logger[_0x4935('0x11')](_0x4935('0xd'),_0x118d36,_0x46526a);_0x4c9902(_0x46526a);});});}exports[_0x4935('0x15')]=function(_0x429ef3){var _0x4ebc63=this;return new Promise(function(_0xd70eff,_0x145277){return db['VtigerAccount'][_0x4935('0x16')]({'raw':_0x429ef3[_0x4935('0x17')]?_0x429ef3[_0x4935('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x429ef3['options']?_0x429ef3[_0x4935('0x17')][_0x4935('0x18')]||null:null,'attributes':_0x429ef3[_0x4935('0x17')]?_0x429ef3[_0x4935('0x17')][_0x4935('0x19')]||null:null,'limit':_0x429ef3[_0x4935('0x17')]?_0x429ef3[_0x4935('0x17')][_0x4935('0x1a')]||null:null,'include':_0x429ef3['options']?_0x429ef3[_0x4935('0x17')][_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x429ef3[_0x4935('0x17')][_0x4935('0x1b')],function(_0x53530f){return{'model':db[_0x53530f['model']],'as':_0x53530f['as'],'attributes':_0x53530f[_0x4935('0x19')],'include':_0x53530f[_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x53530f[_0x4935('0x1b')],function(_0x344e51){return{'model':db[_0x344e51[_0x4935('0x1d')]],'as':_0x344e51['as'],'attributes':_0x344e51[_0x4935('0x19')],'include':_0x344e51[_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x344e51[_0x4935('0x1b')],function(_0x1d08b5){return{'model':db[_0x1d08b5[_0x4935('0x1d')]],'as':_0x1d08b5['as'],'attributes':_0x1d08b5[_0x4935('0x19')]};}):[]};}):[]};}):[]:[]})[_0x4935('0x1e')](function(_0x359522){logger['info']('GetVtigerAccount',_0x429ef3);logger['debug'](_0x4935('0x15'),_0x429ef3,JSON[_0x4935('0x1f')](_0x359522));_0xd70eff(_0x359522);})['catch'](function(_0x3f0707){logger[_0x4935('0x11')](_0x4935('0x15'),_0x3f0707[_0x4935('0x12')],_0x429ef3);_0x145277(_0x4ebc63[_0x4935('0x11')](0x1f4,_0x3f0707[_0x4935('0x12')]));});});};exports[_0x4935('0x20')]=function(_0x2fe6da){var _0x5b3c8e=this;return new Promise(function(_0xb7fe2a,_0x2dcb0b){return db['VtigerAccount']['find']({'raw':_0x2fe6da[_0x4935('0x17')]?_0x2fe6da['options'][_0x4935('0x21')]===undefined?!![]:![]:!![],'where':_0x2fe6da[_0x4935('0x17')]?_0x2fe6da[_0x4935('0x17')]['where']||null:null,'attributes':_0x2fe6da['options']?_0x2fe6da[_0x4935('0x17')][_0x4935('0x19')]||null:null,'include':_0x2fe6da['options']?_0x2fe6da[_0x4935('0x17')][_0x4935('0x1b')]?_[_0x4935('0x1c')](_0x2fe6da[_0x4935('0x17')][_0x4935('0x1b')],function(_0x4a69bc){return{'model':db[_0x4a69bc['model']],'as':_0x4a69bc['as'],'attributes':_0x4a69bc[_0x4935('0x19')],'include':_0x4a69bc[_0x4935('0x1b')]?_['map'](_0x4a69bc['include'],function(_0xb3d934){return{'model':db[_0xb3d934['model']],'as':_0xb3d934['as'],'attributes':_0xb3d934[_0x4935('0x19')],'include':_0xb3d934[_0x4935('0x1b')]?_[_0x4935('0x1c')](_0xb3d934[_0x4935('0x1b')],function(_0x1d77b8){return{'model':db[_0x1d77b8[_0x4935('0x1d')]],'as':_0x1d77b8['as'],'attributes':_0x1d77b8['attributes']};}):[]};}):[]};}):[]:[]})[_0x4935('0x1e')](function(_0x51b7ac){logger[_0x4935('0xc')]('ShowVtigerAccount',_0x2fe6da);logger[_0x4935('0xf')]('ShowVtigerAccount',_0x2fe6da,JSON[_0x4935('0x1f')](_0x51b7ac));_0xb7fe2a(_0x51b7ac);})[_0x4935('0x14')](function(_0x352679){logger[_0x4935('0x11')](_0x4935('0x20'),_0x352679[_0x4935('0x12')],_0x2fe6da);_0x2dcb0b(_0x5b3c8e[_0x4935('0x11')](0x1f4,_0x352679['message']));});});};
\ No newline at end of file
index cd69bf5..b50af10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x707b=['express','Router','fs-extra','../../components/auth/service','./intVtigerConfiguration.controller','get','isAuthenticated','show','/:id/fields','getSubjects','post','create','/:id','update','delete','exports','multer','path','connect-timeout'];(function(_0x492a9e,_0x3ca8e5){var _0x4ff03f=function(_0x1ce448){while(--_0x1ce448){_0x492a9e['push'](_0x492a9e['shift']());}};_0x4ff03f(++_0x3ca8e5);}(_0x707b,0x1b2));var _0xb707=function(_0x416586,_0xbdf0b1){_0x416586=_0x416586-0x0;var _0x5cbb10=_0x707b[_0x416586];return _0x5cbb10;};'use strict';var multer=require(_0xb707('0x0'));var util=require('util');var path=require(_0xb707('0x1'));var timeout=require(_0xb707('0x2'));var express=require(_0xb707('0x3'));var router=express[_0xb707('0x4')]();var fs_extra=require(_0xb707('0x5'));var auth=require(_0xb707('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xb707('0x7'));router[_0xb707('0x8')]('/',auth[_0xb707('0x9')](),controller['index']);router[_0xb707('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xb707('0xa')]);router['get'](_0xb707('0xb'),auth[_0xb707('0x9')](),controller['getFields']);router[_0xb707('0x8')]('/:id/subjects',auth[_0xb707('0x9')](),controller[_0xb707('0xc')]);router[_0xb707('0x8')]('/:id/descriptions',auth[_0xb707('0x9')](),controller['getDescriptions']);router[_0xb707('0xd')]('/',auth['isAuthenticated'](),controller[_0xb707('0xe')]);router['put'](_0xb707('0xf'),auth['isAuthenticated'](),controller[_0xb707('0x10')]);router[_0xb707('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xb707('0x12')]=router;
\ No newline at end of file
+var _0x19cf=['multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intVtigerConfiguration.controller','isAuthenticated','get','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','destroy','exports'];(function(_0x257579,_0x627180){var _0x1a329d=function(_0x27e1f8){while(--_0x27e1f8){_0x257579['push'](_0x257579['shift']());}};_0x1a329d(++_0x627180);}(_0x19cf,0xdc));var _0xf19c=function(_0x4fce51,_0x31cfcb){_0x4fce51=_0x4fce51-0x0;var _0x28649d=_0x19cf[_0x4fce51];return _0x28649d;};'use strict';var multer=require(_0xf19c('0x0'));var util=require('util');var path=require(_0xf19c('0x1'));var timeout=require(_0xf19c('0x2'));var express=require(_0xf19c('0x3'));var router=express[_0xf19c('0x4')]();var fs_extra=require(_0xf19c('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf19c('0x6'));var config=require('../../config/environment');var controller=require(_0xf19c('0x7'));router['get']('/',auth[_0xf19c('0x8')](),controller['index']);router[_0xf19c('0x9')](_0xf19c('0xa'),auth[_0xf19c('0x8')](),controller[_0xf19c('0xb')]);router[_0xf19c('0x9')](_0xf19c('0xc'),auth[_0xf19c('0x8')](),controller[_0xf19c('0xd')]);router[_0xf19c('0x9')](_0xf19c('0xe'),auth[_0xf19c('0x8')](),controller['getSubjects']);router[_0xf19c('0x9')](_0xf19c('0xf'),auth[_0xf19c('0x8')](),controller[_0xf19c('0x10')]);router[_0xf19c('0x11')]('/',auth[_0xf19c('0x8')](),controller[_0xf19c('0x12')]);router[_0xf19c('0x13')](_0xf19c('0xa'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xf19c('0x14')]);module[_0xf19c('0x15')]=router;
\ No newline at end of file
index 861efc5..9e92f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aa2=['STRING','sequelize'];(function(_0x363cd1,_0x204a3e){var _0x5e6fdc=function(_0x9d037f){while(--_0x9d037f){_0x363cd1['push'](_0x363cd1['shift']());}};_0x5e6fdc(++_0x204a3e);}(_0x3aa2,0xe7));var _0x23aa=function(_0x555890,_0xd516c8){_0x555890=_0x555890-0x0;var _0x3e574b=_0x3aa2[_0x555890];return _0x3e574b;};'use strict';var Sequelize=require(_0x23aa('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x23aa('0x1')]}};
\ No newline at end of file
+var _0xd566=['sequelize','STRING'];(function(_0x1bed81,_0x4b326a){var _0x2ac7ac=function(_0x3ce991){while(--_0x3ce991){_0x1bed81['push'](_0x1bed81['shift']());}};_0x2ac7ac(++_0x4b326a);}(_0xd566,0xe2));var _0x6d56=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xd566[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x6d56('0x0'));module['exports']={'name':{'type':Sequelize[_0x6d56('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index acdd45a..605caea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b7b=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','VtigerConfiguration','include','rows','catch','show','params','create','body','update','find','getFields','VtigerField','getSubjects','findOne','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs'];(function(_0x1bb812,_0x23eacc){var _0x372adb=function(_0x5ad456){while(--_0x5ad456){_0x1bb812['push'](_0x1bb812['shift']());}};_0x372adb(++_0x23eacc);}(_0x6b7b,0x93));var _0xb6b7=function(_0xac744d,_0x2f7b0f){_0xac744d=_0xac744d-0x0;var _0x28bd7a=_0x6b7b[_0xac744d];return _0x28bd7a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb6b7('0x0'));var zipdir=require(_0xb6b7('0x1'));var jsonpatch=require(_0xb6b7('0x2'));var rp=require(_0xb6b7('0x3'));var moment=require(_0xb6b7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xb6b7('0x5'));var util=require(_0xb6b7('0x6'));var path=require(_0xb6b7('0x7'));var sox=require(_0xb6b7('0x8'));var csv=require(_0xb6b7('0x9'));var ejs=require(_0xb6b7('0xa'));var fs=require('fs');var fs_extra=require(_0xb6b7('0xb'));var _=require(_0xb6b7('0xc'));var squel=require(_0xb6b7('0xd'));var crypto=require(_0xb6b7('0xe'));var jsforce=require(_0xb6b7('0xf'));var deskjs=require(_0xb6b7('0x10'));var toCsv=require('to-csv');var querystring=require(_0xb6b7('0x11'));var Papa=require(_0xb6b7('0x12'));var Redis=require('ioredis');var authService=require(_0xb6b7('0x13'));var qs=require(_0xb6b7('0x14'));var as=require(_0xb6b7('0x15'));var hardwareService=require(_0xb6b7('0x16'));var logger=require(_0xb6b7('0x17'))(_0xb6b7('0x18'));var utils=require(_0xb6b7('0x19'));var config=require(_0xb6b7('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xb6b7('0x1b'))['db'];function respondWithStatusCode(_0x570c6d,_0x179664){_0x179664=_0x179664||0xcc;return function(_0x3d3b80){if(_0x3d3b80){return _0x570c6d[_0xb6b7('0x1c')](_0x179664);}return _0x570c6d[_0xb6b7('0x1d')](_0x179664)[_0xb6b7('0x1e')]();};}function respondWithResult(_0x175f0,_0x1f8723){_0x1f8723=_0x1f8723||0xc8;return function(_0x42c082){if(_0x42c082){return _0x175f0[_0xb6b7('0x1d')](_0x1f8723)[_0xb6b7('0x1f')](_0x42c082);}};}function respondWithFilteredResult(_0x315586,_0x8b8707){return function(_0x393295){if(_0x393295){var _0xc74c9c=typeof _0x8b8707[_0xb6b7('0x20')]===_0xb6b7('0x21')&&typeof _0x8b8707[_0xb6b7('0x22')]===_0xb6b7('0x21');var _0x7df967=_0x393295[_0xb6b7('0x23')];var _0x440b91=_0xc74c9c?0x0:_0x8b8707[_0xb6b7('0x20')];var _0x35ee94=_0xc74c9c?_0x393295[_0xb6b7('0x23')]:_0x8b8707[_0xb6b7('0x20')]+_0x8b8707[_0xb6b7('0x22')];var _0x4461e7;if(_0x35ee94>=_0x7df967){_0x35ee94=_0x7df967;_0x4461e7=0xc8;}else{_0x4461e7=0xce;}_0x315586['status'](_0x4461e7);return _0x315586[_0xb6b7('0x24')](_0xb6b7('0x25'),_0x440b91+'-'+_0x35ee94+'/'+_0x7df967)['json'](_0x393295);}return null;};}function patchUpdates(_0x255d70){return function(_0x994895){try{jsonpatch[_0xb6b7('0x26')](_0x994895,_0x255d70,!![]);}catch(_0x52c13d){return BPromise[_0xb6b7('0x27')](_0x52c13d);}return _0x994895[_0xb6b7('0x28')]();};}function saveUpdates(_0x24a90f,_0x5dfdb6){return function(_0xbc8b29){if(_0xbc8b29){return _0xbc8b29['update'](_0x24a90f)[_0xb6b7('0x29')](function(_0x13e8f7){return _0x13e8f7;});}return null;};}function removeEntity(_0x4c1391,_0x2770ac){return function(_0x58b52a){if(_0x58b52a){return _0x58b52a[_0xb6b7('0x2a')]()['then'](function(){_0x4c1391[_0xb6b7('0x1d')](0xcc)[_0xb6b7('0x1e')]();});}};}function handleEntityNotFound(_0x388513,_0x30e117){return function(_0x48a7fd){if(!_0x48a7fd){_0x388513[_0xb6b7('0x1c')](0x194);}return _0x48a7fd;};}function handleError(_0x56f120,_0x456b4b){_0x456b4b=_0x456b4b||0x1f4;return function(_0x5464b6){logger[_0xb6b7('0x2b')](_0x5464b6['stack']);if(_0x5464b6['name']){delete _0x5464b6[_0xb6b7('0x2c')];}_0x56f120[_0xb6b7('0x1d')](_0x456b4b)['send'](_0x5464b6);};}exports[_0xb6b7('0x2d')]=function(_0x26a67c,_0x283c3f){var _0x3b9e69={},_0x14ce13={},_0x25ac89={'count':0x0,'rows':[]};var _0x5ad007=_[_0xb6b7('0x2e')](db['VtigerConfiguration'][_0xb6b7('0x2f')],function(_0x5bdde8){return{'name':_0x5bdde8[_0xb6b7('0x30')],'type':_0x5bdde8[_0xb6b7('0x31')][_0xb6b7('0x32')]};});_0x14ce13[_0xb6b7('0x33')]=_[_0xb6b7('0x2e')](_0x5ad007,_0xb6b7('0x2c'));_0x14ce13['query']=_[_0xb6b7('0x34')](_0x26a67c[_0xb6b7('0x35')]);_0x14ce13[_0xb6b7('0x36')]=_[_0xb6b7('0x37')](_0x14ce13[_0xb6b7('0x33')],_0x14ce13['query']);_0x3b9e69[_0xb6b7('0x38')]=_[_0xb6b7('0x37')](_0x14ce13[_0xb6b7('0x33')],qs[_0xb6b7('0x39')](_0x26a67c[_0xb6b7('0x35')][_0xb6b7('0x39')]));_0x3b9e69[_0xb6b7('0x38')]=_0x3b9e69[_0xb6b7('0x38')][_0xb6b7('0x3a')]?_0x3b9e69['attributes']:_0x14ce13[_0xb6b7('0x33')];if(!_0x26a67c[_0xb6b7('0x35')][_0xb6b7('0x3b')](_0xb6b7('0x3c'))){_0x3b9e69[_0xb6b7('0x22')]=qs['limit'](_0x26a67c[_0xb6b7('0x35')][_0xb6b7('0x22')]);_0x3b9e69['offset']=qs['offset'](_0x26a67c[_0xb6b7('0x35')][_0xb6b7('0x20')]);}_0x3b9e69[_0xb6b7('0x3d')]=qs[_0xb6b7('0x3e')](_0x26a67c['query'][_0xb6b7('0x3e')]);_0x3b9e69[_0xb6b7('0x3f')]=qs[_0xb6b7('0x36')](_[_0xb6b7('0x40')](_0x26a67c['query'],_0x14ce13[_0xb6b7('0x36')]),_0x5ad007);if(_0x26a67c[_0xb6b7('0x35')][_0xb6b7('0x41')]){_0x3b9e69[_0xb6b7('0x3f')]=_[_0xb6b7('0x42')](_0x3b9e69['where'],{'$or':_['map'](_0x5ad007,function(_0x5b107e){if(_0x5b107e[_0xb6b7('0x31')]!==_0xb6b7('0x43')){var _0x3b8854={};_0x3b8854[_0x5b107e[_0xb6b7('0x2c')]]={'$like':'%'+_0x26a67c[_0xb6b7('0x35')][_0xb6b7('0x41')]+'%'};return _0x3b8854;}})});}_0x3b9e69=_[_0xb6b7('0x42')]({},_0x3b9e69,_0x26a67c[_0xb6b7('0x44')]);var _0x59d583={'where':_0x3b9e69['where']};return db[_0xb6b7('0x45')][_0xb6b7('0x23')](_0x59d583)[_0xb6b7('0x29')](function(_0x3ede75){_0x25ac89[_0xb6b7('0x23')]=_0x3ede75;if(_0x26a67c['query']['includeAll']){_0x3b9e69[_0xb6b7('0x46')]=[{'all':!![]}];}return db[_0xb6b7('0x45')]['findAll'](_0x3b9e69);})[_0xb6b7('0x29')](function(_0xffde7a){_0x25ac89[_0xb6b7('0x47')]=_0xffde7a;return _0x25ac89;})[_0xb6b7('0x29')](respondWithFilteredResult(_0x283c3f,_0x3b9e69))[_0xb6b7('0x48')](handleError(_0x283c3f,null));};exports[_0xb6b7('0x49')]=function(_0x1896d0,_0x3c19a5){var _0x33be45={'raw':![],'where':{'id':_0x1896d0[_0xb6b7('0x4a')]['id']}},_0x5a52e8={};_0x5a52e8['model']=_['keys'](db[_0xb6b7('0x45')]['rawAttributes']);_0x5a52e8[_0xb6b7('0x35')]=_[_0xb6b7('0x34')](_0x1896d0[_0xb6b7('0x35')]);_0x5a52e8[_0xb6b7('0x36')]=_[_0xb6b7('0x37')](_0x5a52e8[_0xb6b7('0x33')],_0x5a52e8[_0xb6b7('0x35')]);_0x33be45[_0xb6b7('0x38')]=_[_0xb6b7('0x37')](_0x5a52e8[_0xb6b7('0x33')],qs[_0xb6b7('0x39')](_0x1896d0[_0xb6b7('0x35')][_0xb6b7('0x39')]));_0x33be45[_0xb6b7('0x38')]=_0x33be45['attributes'][_0xb6b7('0x3a')]?_0x33be45[_0xb6b7('0x38')]:_0x5a52e8[_0xb6b7('0x33')];if(_0x1896d0['query']['includeAll']){_0x33be45[_0xb6b7('0x46')]=[{'all':!![]}];}_0x33be45=_[_0xb6b7('0x42')]({},_0x33be45,_0x1896d0[_0xb6b7('0x44')]);return db['VtigerConfiguration']['find'](_0x33be45)['then'](handleEntityNotFound(_0x3c19a5,null))[_0xb6b7('0x29')](respondWithResult(_0x3c19a5,null))[_0xb6b7('0x48')](handleError(_0x3c19a5,null));};exports[_0xb6b7('0x4b')]=function(_0x4046b1,_0x3a5b9d){return db[_0xb6b7('0x45')][_0xb6b7('0x4b')](_0x4046b1[_0xb6b7('0x4c')],{})[_0xb6b7('0x29')](respondWithResult(_0x3a5b9d,0xc9))[_0xb6b7('0x48')](handleError(_0x3a5b9d,null));};exports[_0xb6b7('0x4d')]=function(_0x3ba8f8,_0x429591){if(_0x3ba8f8[_0xb6b7('0x4c')]['id']){delete _0x3ba8f8[_0xb6b7('0x4c')]['id'];}return db[_0xb6b7('0x45')][_0xb6b7('0x4e')]({'where':{'id':_0x3ba8f8['params']['id']}})[_0xb6b7('0x29')](handleEntityNotFound(_0x429591,null))[_0xb6b7('0x29')](saveUpdates(_0x3ba8f8['body'],null))['then'](respondWithResult(_0x429591,null))['catch'](handleError(_0x429591,null));};exports['destroy']=function(_0x19b926,_0x199c4f){return db['VtigerConfiguration'][_0xb6b7('0x4e')]({'where':{'id':_0x19b926[_0xb6b7('0x4a')]['id']}})[_0xb6b7('0x29')](handleEntityNotFound(_0x199c4f,null))['then'](removeEntity(_0x199c4f,null))['catch'](handleError(_0x199c4f,null));};exports[_0xb6b7('0x4f')]=function(_0xe768e3,_0x544b12,_0x56493d){var _0x5e28a3={};var _0x1adf78={};var _0x5b51f9;var _0x3d1cb8;return db[_0xb6b7('0x45')]['findOne']({'where':{'id':_0xe768e3[_0xb6b7('0x4a')]['id']}})[_0xb6b7('0x29')](handleEntityNotFound(_0x544b12,null))[_0xb6b7('0x29')](function(_0xc07c9d){if(_0xc07c9d){_0x5b51f9=_0xc07c9d;_0x1adf78[_0xb6b7('0x33')]=_[_0xb6b7('0x34')](db[_0xb6b7('0x50')][_0xb6b7('0x2f')]);_0x1adf78[_0xb6b7('0x35')]=_[_0xb6b7('0x34')](_0xe768e3['query']);_0x1adf78[_0xb6b7('0x36')]=_[_0xb6b7('0x37')](_0x1adf78[_0xb6b7('0x33')],_0x1adf78['query']);_0x5e28a3[_0xb6b7('0x38')]=_[_0xb6b7('0x37')](_0x1adf78[_0xb6b7('0x33')],qs[_0xb6b7('0x39')](_0xe768e3[_0xb6b7('0x35')]['fields']));_0x5e28a3[_0xb6b7('0x38')]=_0x5e28a3[_0xb6b7('0x38')][_0xb6b7('0x3a')]?_0x5e28a3[_0xb6b7('0x38')]:_0x1adf78[_0xb6b7('0x33')];_0x5e28a3[_0xb6b7('0x3d')]=qs['sort'](_0xe768e3[_0xb6b7('0x35')][_0xb6b7('0x3e')]);_0x5e28a3['where']=qs[_0xb6b7('0x36')](_['pick'](_0xe768e3['query'],_0x1adf78[_0xb6b7('0x36')]));if(_0xe768e3[_0xb6b7('0x35')][_0xb6b7('0x41')]){_0x5e28a3[_0xb6b7('0x3f')]=_[_0xb6b7('0x42')](_0x5e28a3[_0xb6b7('0x3f')],{'$or':_[_0xb6b7('0x2e')](_0x5e28a3[_0xb6b7('0x38')],function(_0x3f2791){var _0x25daba={};_0x25daba[_0x3f2791]={'$like':'%'+_0xe768e3[_0xb6b7('0x35')][_0xb6b7('0x41')]+'%'};return _0x25daba;})});}_0x5e28a3=_['merge']({},_0x5e28a3,_0xe768e3[_0xb6b7('0x44')]);return _0x5b51f9[_0xb6b7('0x4f')](_0x5e28a3);}})[_0xb6b7('0x29')](function(_0x3a8bfa){if(_0x3a8bfa){_0x3d1cb8=_0x3a8bfa[_0xb6b7('0x3a')];if(!_0xe768e3[_0xb6b7('0x35')][_0xb6b7('0x3b')](_0xb6b7('0x3c'))){_0x5e28a3[_0xb6b7('0x22')]=qs['limit'](_0xe768e3[_0xb6b7('0x35')][_0xb6b7('0x22')]);_0x5e28a3[_0xb6b7('0x20')]=qs[_0xb6b7('0x20')](_0xe768e3[_0xb6b7('0x35')]['offset']);}return _0x5b51f9[_0xb6b7('0x4f')](_0x5e28a3);}})['then'](function(_0xec18c9){if(_0xec18c9){return _0xec18c9?{'count':_0x3d1cb8,'rows':_0xec18c9}:null;}})[_0xb6b7('0x29')](respondWithResult(_0x544b12,null))[_0xb6b7('0x48')](handleError(_0x544b12,null));};exports[_0xb6b7('0x51')]=function(_0x59ac00,_0x392415,_0x5487fc){var _0x57bd49={};var _0x5687be={};var _0x340c8a;var _0x51753f;return db[_0xb6b7('0x45')][_0xb6b7('0x52')]({'where':{'id':_0x59ac00[_0xb6b7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x392415,null))[_0xb6b7('0x29')](function(_0x1d5b72){if(_0x1d5b72){_0x340c8a=_0x1d5b72;_0x5687be['model']=_['keys'](db['VtigerField']['rawAttributes']);_0x5687be[_0xb6b7('0x35')]=_[_0xb6b7('0x34')](_0x59ac00[_0xb6b7('0x35')]);_0x5687be[_0xb6b7('0x36')]=_[_0xb6b7('0x37')](_0x5687be[_0xb6b7('0x33')],_0x5687be['query']);_0x57bd49[_0xb6b7('0x38')]=_[_0xb6b7('0x37')](_0x5687be[_0xb6b7('0x33')],qs['fields'](_0x59ac00[_0xb6b7('0x35')]['fields']));_0x57bd49['attributes']=_0x57bd49[_0xb6b7('0x38')]['length']?_0x57bd49[_0xb6b7('0x38')]:_0x5687be[_0xb6b7('0x33')];_0x57bd49['order']=qs['sort'](_0x59ac00[_0xb6b7('0x35')][_0xb6b7('0x3e')]);_0x57bd49[_0xb6b7('0x3f')]=qs[_0xb6b7('0x36')](_['pick'](_0x59ac00['query'],_0x5687be[_0xb6b7('0x36')]));if(_0x59ac00['query'][_0xb6b7('0x41')]){_0x57bd49[_0xb6b7('0x3f')]=_[_0xb6b7('0x42')](_0x57bd49[_0xb6b7('0x3f')],{'$or':_[_0xb6b7('0x2e')](_0x57bd49[_0xb6b7('0x38')],function(_0x41597f){var _0x5d2775={};_0x5d2775[_0x41597f]={'$like':'%'+_0x59ac00[_0xb6b7('0x35')][_0xb6b7('0x41')]+'%'};return _0x5d2775;})});}_0x57bd49=_[_0xb6b7('0x42')]({},_0x57bd49,_0x59ac00['options']);return _0x340c8a['getSubjects'](_0x57bd49);}})[_0xb6b7('0x29')](function(_0xd29556){if(_0xd29556){_0x51753f=_0xd29556['length'];if(!_0x59ac00['query']['hasOwnProperty'](_0xb6b7('0x3c'))){_0x57bd49[_0xb6b7('0x22')]=qs[_0xb6b7('0x22')](_0x59ac00[_0xb6b7('0x35')][_0xb6b7('0x22')]);_0x57bd49[_0xb6b7('0x20')]=qs[_0xb6b7('0x20')](_0x59ac00[_0xb6b7('0x35')][_0xb6b7('0x20')]);}return _0x340c8a[_0xb6b7('0x51')](_0x57bd49);}})[_0xb6b7('0x29')](function(_0x5a29e7){if(_0x5a29e7){return _0x5a29e7?{'count':_0x51753f,'rows':_0x5a29e7}:null;}})['then'](respondWithResult(_0x392415,null))[_0xb6b7('0x48')](handleError(_0x392415,null));};exports[_0xb6b7('0x53')]=function(_0x387ed1,_0x5b9709,_0x11b589){var _0x35597b={};var _0x4bb0bd={};var _0x38fa09;var _0x1b28a2;return db['VtigerConfiguration']['findOne']({'where':{'id':_0x387ed1[_0xb6b7('0x4a')]['id']}})[_0xb6b7('0x29')](handleEntityNotFound(_0x5b9709,null))[_0xb6b7('0x29')](function(_0x1f5380){if(_0x1f5380){_0x38fa09=_0x1f5380;_0x4bb0bd[_0xb6b7('0x33')]=_['keys'](db[_0xb6b7('0x50')][_0xb6b7('0x2f')]);_0x4bb0bd['query']=_[_0xb6b7('0x34')](_0x387ed1[_0xb6b7('0x35')]);_0x4bb0bd[_0xb6b7('0x36')]=_[_0xb6b7('0x37')](_0x4bb0bd[_0xb6b7('0x33')],_0x4bb0bd[_0xb6b7('0x35')]);_0x35597b[_0xb6b7('0x38')]=_[_0xb6b7('0x37')](_0x4bb0bd[_0xb6b7('0x33')],qs[_0xb6b7('0x39')](_0x387ed1[_0xb6b7('0x35')][_0xb6b7('0x39')]));_0x35597b[_0xb6b7('0x38')]=_0x35597b[_0xb6b7('0x38')]['length']?_0x35597b[_0xb6b7('0x38')]:_0x4bb0bd[_0xb6b7('0x33')];_0x35597b['order']=qs[_0xb6b7('0x3e')](_0x387ed1[_0xb6b7('0x35')][_0xb6b7('0x3e')]);_0x35597b[_0xb6b7('0x3f')]=qs[_0xb6b7('0x36')](_[_0xb6b7('0x40')](_0x387ed1[_0xb6b7('0x35')],_0x4bb0bd[_0xb6b7('0x36')]));if(_0x387ed1['query'][_0xb6b7('0x41')]){_0x35597b['where']=_[_0xb6b7('0x42')](_0x35597b[_0xb6b7('0x3f')],{'$or':_[_0xb6b7('0x2e')](_0x35597b[_0xb6b7('0x38')],function(_0x38fb5d){var _0xfbc5d7={};_0xfbc5d7[_0x38fb5d]={'$like':'%'+_0x387ed1[_0xb6b7('0x35')][_0xb6b7('0x41')]+'%'};return _0xfbc5d7;})});}_0x35597b=_['merge']({},_0x35597b,_0x387ed1['options']);return _0x38fa09[_0xb6b7('0x53')](_0x35597b);}})['then'](function(_0x4d3bcb){if(_0x4d3bcb){_0x1b28a2=_0x4d3bcb[_0xb6b7('0x3a')];if(!_0x387ed1[_0xb6b7('0x35')][_0xb6b7('0x3b')](_0xb6b7('0x3c'))){_0x35597b[_0xb6b7('0x22')]=qs['limit'](_0x387ed1['query'][_0xb6b7('0x22')]);_0x35597b[_0xb6b7('0x20')]=qs[_0xb6b7('0x20')](_0x387ed1['query'][_0xb6b7('0x20')]);}return _0x38fa09[_0xb6b7('0x53')](_0x35597b);}})[_0xb6b7('0x29')](function(_0x40e61a){if(_0x40e61a){return _0x40e61a?{'count':_0x1b28a2,'rows':_0x40e61a}:null;}})[_0xb6b7('0x29')](respondWithResult(_0x5b9709,null))[_0xb6b7('0x48')](handleError(_0x5b9709,null));};
\ No newline at end of file
+var _0x81a7=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','offset','limit','undefined','count','Content-Range','json','apply','reject','update','then','destroy','end','error','name','send','index','map','VtigerConfiguration','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','params','catch','create','body','find','getFields','findOne','VtigerField','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x4763ed,_0x92d47d){var _0x1bf5bd=function(_0x5ba695){while(--_0x5ba695){_0x4763ed['push'](_0x4763ed['shift']());}};_0x1bf5bd(++_0x92d47d);}(_0x81a7,0x177));var _0x781a=function(_0x314a0f,_0x1a21de){_0x314a0f=_0x314a0f-0x0;var _0x4a1784=_0x81a7[_0x314a0f];return _0x4a1784;};'use strict';var emlformat=require(_0x781a('0x0'));var rimraf=require(_0x781a('0x1'));var zipdir=require(_0x781a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x781a('0x3'));var Mustache=require(_0x781a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x781a('0x5'));var csv=require(_0x781a('0x6'));var ejs=require(_0x781a('0x7'));var fs=require('fs');var fs_extra=require(_0x781a('0x8'));var _=require(_0x781a('0x9'));var squel=require(_0x781a('0xa'));var crypto=require(_0x781a('0xb'));var jsforce=require(_0x781a('0xc'));var deskjs=require(_0x781a('0xd'));var toCsv=require(_0x781a('0x6'));var querystring=require(_0x781a('0xe'));var Papa=require(_0x781a('0xf'));var Redis=require(_0x781a('0x10'));var authService=require(_0x781a('0x11'));var qs=require(_0x781a('0x12'));var as=require(_0x781a('0x13'));var hardwareService=require(_0x781a('0x14'));var logger=require(_0x781a('0x15'))(_0x781a('0x16'));var utils=require(_0x781a('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x781a('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c83cf,_0x255fe0){_0x255fe0=_0x255fe0||0xcc;return function(_0x396d33){if(_0x396d33){return _0x5c83cf[_0x781a('0x19')](_0x255fe0);}return _0x5c83cf[_0x781a('0x1a')](_0x255fe0)['end']();};}function respondWithResult(_0x479cc3,_0x3520e3){_0x3520e3=_0x3520e3||0xc8;return function(_0x2741b3){if(_0x2741b3){return _0x479cc3['status'](_0x3520e3)['json'](_0x2741b3);}};}function respondWithFilteredResult(_0x3de439,_0x4e63be){return function(_0x207761){if(_0x207761){var _0x284dfb=typeof _0x4e63be[_0x781a('0x1b')]==='undefined'&&typeof _0x4e63be[_0x781a('0x1c')]===_0x781a('0x1d');var _0x1a5bdc=_0x207761[_0x781a('0x1e')];var _0x49580c=_0x284dfb?0x0:_0x4e63be[_0x781a('0x1b')];var _0x156403=_0x284dfb?_0x207761[_0x781a('0x1e')]:_0x4e63be[_0x781a('0x1b')]+_0x4e63be[_0x781a('0x1c')];var _0x34941e;if(_0x156403>=_0x1a5bdc){_0x156403=_0x1a5bdc;_0x34941e=0xc8;}else{_0x34941e=0xce;}_0x3de439[_0x781a('0x1a')](_0x34941e);return _0x3de439['set'](_0x781a('0x1f'),_0x49580c+'-'+_0x156403+'/'+_0x1a5bdc)[_0x781a('0x20')](_0x207761);}return null;};}function patchUpdates(_0x4fdf89){return function(_0x5eb516){try{jsonpatch[_0x781a('0x21')](_0x5eb516,_0x4fdf89,!![]);}catch(_0x942c9a){return BPromise[_0x781a('0x22')](_0x942c9a);}return _0x5eb516['save']();};}function saveUpdates(_0x1175fa,_0x37c8d0){return function(_0x24f38c){if(_0x24f38c){return _0x24f38c[_0x781a('0x23')](_0x1175fa)[_0x781a('0x24')](function(_0x10b6c8){return _0x10b6c8;});}return null;};}function removeEntity(_0x2f7720,_0x14e2b8){return function(_0x2eb32f){if(_0x2eb32f){return _0x2eb32f[_0x781a('0x25')]()['then'](function(){_0x2f7720[_0x781a('0x1a')](0xcc)[_0x781a('0x26')]();});}};}function handleEntityNotFound(_0x2f97a0,_0x4312c1){return function(_0x431b25){if(!_0x431b25){_0x2f97a0['sendStatus'](0x194);}return _0x431b25;};}function handleError(_0x12d233,_0x28ebf9){_0x28ebf9=_0x28ebf9||0x1f4;return function(_0x410cde){logger[_0x781a('0x27')](_0x410cde['stack']);if(_0x410cde[_0x781a('0x28')]){delete _0x410cde[_0x781a('0x28')];}_0x12d233[_0x781a('0x1a')](_0x28ebf9)[_0x781a('0x29')](_0x410cde);};}exports[_0x781a('0x2a')]=function(_0x2be8a7,_0x3ac9a2){var _0x373b41={},_0x45b21b={},_0x25f702={'count':0x0,'rows':[]};var _0x2eac72=_[_0x781a('0x2b')](db[_0x781a('0x2c')][_0x781a('0x2d')],function(_0x51f644){return{'name':_0x51f644[_0x781a('0x2e')],'type':_0x51f644[_0x781a('0x2f')]['key']};});_0x45b21b[_0x781a('0x30')]=_[_0x781a('0x2b')](_0x2eac72,'name');_0x45b21b[_0x781a('0x31')]=_[_0x781a('0x32')](_0x2be8a7[_0x781a('0x31')]);_0x45b21b[_0x781a('0x33')]=_['intersection'](_0x45b21b[_0x781a('0x30')],_0x45b21b[_0x781a('0x31')]);_0x373b41[_0x781a('0x34')]=_[_0x781a('0x35')](_0x45b21b['model'],qs[_0x781a('0x36')](_0x2be8a7[_0x781a('0x31')][_0x781a('0x36')]));_0x373b41[_0x781a('0x34')]=_0x373b41['attributes'][_0x781a('0x37')]?_0x373b41[_0x781a('0x34')]:_0x45b21b[_0x781a('0x30')];if(!_0x2be8a7[_0x781a('0x31')]['hasOwnProperty'](_0x781a('0x38'))){_0x373b41[_0x781a('0x1c')]=qs[_0x781a('0x1c')](_0x2be8a7[_0x781a('0x31')][_0x781a('0x1c')]);_0x373b41['offset']=qs[_0x781a('0x1b')](_0x2be8a7[_0x781a('0x31')][_0x781a('0x1b')]);}_0x373b41[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x2be8a7[_0x781a('0x31')]['sort']);_0x373b41['where']=qs[_0x781a('0x33')](_[_0x781a('0x3b')](_0x2be8a7[_0x781a('0x31')],_0x45b21b[_0x781a('0x33')]),_0x2eac72);if(_0x2be8a7[_0x781a('0x31')][_0x781a('0x3c')]){_0x373b41[_0x781a('0x3d')]=_['merge'](_0x373b41[_0x781a('0x3d')],{'$or':_[_0x781a('0x2b')](_0x2eac72,function(_0x5b1211){if(_0x5b1211['type']!=='VIRTUAL'){var _0x53eff8={};_0x53eff8[_0x5b1211[_0x781a('0x28')]]={'$like':'%'+_0x2be8a7[_0x781a('0x31')][_0x781a('0x3c')]+'%'};return _0x53eff8;}})});}_0x373b41=_[_0x781a('0x3e')]({},_0x373b41,_0x2be8a7[_0x781a('0x3f')]);var _0x4b7363={'where':_0x373b41[_0x781a('0x3d')]};return db[_0x781a('0x2c')][_0x781a('0x1e')](_0x4b7363)[_0x781a('0x24')](function(_0x1e656c){_0x25f702[_0x781a('0x1e')]=_0x1e656c;if(_0x2be8a7[_0x781a('0x31')][_0x781a('0x40')]){_0x373b41[_0x781a('0x41')]=[{'all':!![]}];}return db[_0x781a('0x2c')][_0x781a('0x42')](_0x373b41);})['then'](function(_0x4e958e){_0x25f702[_0x781a('0x43')]=_0x4e958e;return _0x25f702;})[_0x781a('0x24')](respondWithFilteredResult(_0x3ac9a2,_0x373b41))['catch'](handleError(_0x3ac9a2,null));};exports['show']=function(_0x31c685,_0x39ac9f){var _0x2e7ed9={'raw':![],'where':{'id':_0x31c685[_0x781a('0x44')]['id']}},_0x31ba8b={};_0x31ba8b[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x2c')][_0x781a('0x2d')]);_0x31ba8b[_0x781a('0x31')]=_[_0x781a('0x32')](_0x31c685[_0x781a('0x31')]);_0x31ba8b[_0x781a('0x33')]=_[_0x781a('0x35')](_0x31ba8b[_0x781a('0x30')],_0x31ba8b[_0x781a('0x31')]);_0x2e7ed9[_0x781a('0x34')]=_['intersection'](_0x31ba8b['model'],qs[_0x781a('0x36')](_0x31c685['query'][_0x781a('0x36')]));_0x2e7ed9[_0x781a('0x34')]=_0x2e7ed9[_0x781a('0x34')]['length']?_0x2e7ed9[_0x781a('0x34')]:_0x31ba8b[_0x781a('0x30')];if(_0x31c685[_0x781a('0x31')]['includeAll']){_0x2e7ed9[_0x781a('0x41')]=[{'all':!![]}];}_0x2e7ed9=_[_0x781a('0x3e')]({},_0x2e7ed9,_0x31c685[_0x781a('0x3f')]);return db[_0x781a('0x2c')]['find'](_0x2e7ed9)[_0x781a('0x24')](handleEntityNotFound(_0x39ac9f,null))[_0x781a('0x24')](respondWithResult(_0x39ac9f,null))[_0x781a('0x45')](handleError(_0x39ac9f,null));};exports['create']=function(_0xb1517a,_0x236a3a){return db[_0x781a('0x2c')][_0x781a('0x46')](_0xb1517a[_0x781a('0x47')],{})[_0x781a('0x24')](respondWithResult(_0x236a3a,0xc9))[_0x781a('0x45')](handleError(_0x236a3a,null));};exports[_0x781a('0x23')]=function(_0xd13a57,_0xfb3ed){if(_0xd13a57[_0x781a('0x47')]['id']){delete _0xd13a57[_0x781a('0x47')]['id'];}return db[_0x781a('0x2c')][_0x781a('0x48')]({'where':{'id':_0xd13a57['params']['id']}})['then'](handleEntityNotFound(_0xfb3ed,null))[_0x781a('0x24')](saveUpdates(_0xd13a57[_0x781a('0x47')],null))[_0x781a('0x24')](respondWithResult(_0xfb3ed,null))[_0x781a('0x45')](handleError(_0xfb3ed,null));};exports[_0x781a('0x25')]=function(_0x43da86,_0x524789){return db[_0x781a('0x2c')][_0x781a('0x48')]({'where':{'id':_0x43da86[_0x781a('0x44')]['id']}})[_0x781a('0x24')](handleEntityNotFound(_0x524789,null))[_0x781a('0x24')](removeEntity(_0x524789,null))[_0x781a('0x45')](handleError(_0x524789,null));};exports[_0x781a('0x49')]=function(_0x229282,_0x509d0f,_0x37b735){var _0x4cef8c={};var _0x4801f2={};var _0x36f18e;var _0xc37afb;return db[_0x781a('0x2c')][_0x781a('0x4a')]({'where':{'id':_0x229282[_0x781a('0x44')]['id']}})['then'](handleEntityNotFound(_0x509d0f,null))[_0x781a('0x24')](function(_0x4db810){if(_0x4db810){_0x36f18e=_0x4db810;_0x4801f2[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x4b')][_0x781a('0x2d')]);_0x4801f2['query']=_[_0x781a('0x32')](_0x229282['query']);_0x4801f2['filters']=_['intersection'](_0x4801f2[_0x781a('0x30')],_0x4801f2[_0x781a('0x31')]);_0x4cef8c[_0x781a('0x34')]=_[_0x781a('0x35')](_0x4801f2[_0x781a('0x30')],qs['fields'](_0x229282[_0x781a('0x31')][_0x781a('0x36')]));_0x4cef8c[_0x781a('0x34')]=_0x4cef8c[_0x781a('0x34')][_0x781a('0x37')]?_0x4cef8c[_0x781a('0x34')]:_0x4801f2['model'];_0x4cef8c[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x229282[_0x781a('0x31')]['sort']);_0x4cef8c[_0x781a('0x3d')]=qs['filters'](_[_0x781a('0x3b')](_0x229282[_0x781a('0x31')],_0x4801f2[_0x781a('0x33')]));if(_0x229282['query'][_0x781a('0x3c')]){_0x4cef8c[_0x781a('0x3d')]=_[_0x781a('0x3e')](_0x4cef8c['where'],{'$or':_[_0x781a('0x2b')](_0x4cef8c[_0x781a('0x34')],function(_0x333234){var _0x375330={};_0x375330[_0x333234]={'$like':'%'+_0x229282[_0x781a('0x31')][_0x781a('0x3c')]+'%'};return _0x375330;})});}_0x4cef8c=_['merge']({},_0x4cef8c,_0x229282[_0x781a('0x3f')]);return _0x36f18e['getFields'](_0x4cef8c);}})[_0x781a('0x24')](function(_0x1595ac){if(_0x1595ac){_0xc37afb=_0x1595ac[_0x781a('0x37')];if(!_0x229282['query'][_0x781a('0x4c')](_0x781a('0x38'))){_0x4cef8c[_0x781a('0x1c')]=qs[_0x781a('0x1c')](_0x229282[_0x781a('0x31')][_0x781a('0x1c')]);_0x4cef8c[_0x781a('0x1b')]=qs[_0x781a('0x1b')](_0x229282[_0x781a('0x31')]['offset']);}return _0x36f18e[_0x781a('0x49')](_0x4cef8c);}})['then'](function(_0x39f2f9){if(_0x39f2f9){return _0x39f2f9?{'count':_0xc37afb,'rows':_0x39f2f9}:null;}})[_0x781a('0x24')](respondWithResult(_0x509d0f,null))[_0x781a('0x45')](handleError(_0x509d0f,null));};exports['getSubjects']=function(_0x42faac,_0x2eb190,_0x3b7c38){var _0x292288={};var _0x2493e8={};var _0x1c4263;var _0x1e9069;return db[_0x781a('0x2c')][_0x781a('0x4a')]({'where':{'id':_0x42faac[_0x781a('0x44')]['id']}})[_0x781a('0x24')](handleEntityNotFound(_0x2eb190,null))[_0x781a('0x24')](function(_0x4ae184){if(_0x4ae184){_0x1c4263=_0x4ae184;_0x2493e8[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x4b')]['rawAttributes']);_0x2493e8[_0x781a('0x31')]=_[_0x781a('0x32')](_0x42faac[_0x781a('0x31')]);_0x2493e8[_0x781a('0x33')]=_[_0x781a('0x35')](_0x2493e8[_0x781a('0x30')],_0x2493e8['query']);_0x292288[_0x781a('0x34')]=_[_0x781a('0x35')](_0x2493e8[_0x781a('0x30')],qs[_0x781a('0x36')](_0x42faac[_0x781a('0x31')][_0x781a('0x36')]));_0x292288['attributes']=_0x292288[_0x781a('0x34')]['length']?_0x292288[_0x781a('0x34')]:_0x2493e8[_0x781a('0x30')];_0x292288[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x42faac[_0x781a('0x31')][_0x781a('0x3a')]);_0x292288[_0x781a('0x3d')]=qs[_0x781a('0x33')](_[_0x781a('0x3b')](_0x42faac['query'],_0x2493e8[_0x781a('0x33')]));if(_0x42faac[_0x781a('0x31')]['filter']){_0x292288[_0x781a('0x3d')]=_[_0x781a('0x3e')](_0x292288['where'],{'$or':_[_0x781a('0x2b')](_0x292288['attributes'],function(_0x95f21e){var _0x5c2e98={};_0x5c2e98[_0x95f21e]={'$like':'%'+_0x42faac[_0x781a('0x31')][_0x781a('0x3c')]+'%'};return _0x5c2e98;})});}_0x292288=_[_0x781a('0x3e')]({},_0x292288,_0x42faac[_0x781a('0x3f')]);return _0x1c4263['getSubjects'](_0x292288);}})['then'](function(_0x59bb86){if(_0x59bb86){_0x1e9069=_0x59bb86[_0x781a('0x37')];if(!_0x42faac['query'][_0x781a('0x4c')](_0x781a('0x38'))){_0x292288['limit']=qs['limit'](_0x42faac[_0x781a('0x31')]['limit']);_0x292288[_0x781a('0x1b')]=qs['offset'](_0x42faac[_0x781a('0x31')][_0x781a('0x1b')]);}return _0x1c4263[_0x781a('0x4d')](_0x292288);}})[_0x781a('0x24')](function(_0x173d95){if(_0x173d95){return _0x173d95?{'count':_0x1e9069,'rows':_0x173d95}:null;}})[_0x781a('0x24')](respondWithResult(_0x2eb190,null))['catch'](handleError(_0x2eb190,null));};exports['getDescriptions']=function(_0x16e351,_0x3351fa,_0x508dbb){var _0x3f0465={};var _0x44f602={};var _0xe36ead;var _0x406a1e;return db['VtigerConfiguration'][_0x781a('0x4a')]({'where':{'id':_0x16e351[_0x781a('0x44')]['id']}})[_0x781a('0x24')](handleEntityNotFound(_0x3351fa,null))[_0x781a('0x24')](function(_0x305dc5){if(_0x305dc5){_0xe36ead=_0x305dc5;_0x44f602[_0x781a('0x30')]=_[_0x781a('0x32')](db[_0x781a('0x4b')][_0x781a('0x2d')]);_0x44f602[_0x781a('0x31')]=_[_0x781a('0x32')](_0x16e351[_0x781a('0x31')]);_0x44f602[_0x781a('0x33')]=_[_0x781a('0x35')](_0x44f602['model'],_0x44f602[_0x781a('0x31')]);_0x3f0465[_0x781a('0x34')]=_[_0x781a('0x35')](_0x44f602[_0x781a('0x30')],qs[_0x781a('0x36')](_0x16e351[_0x781a('0x31')]['fields']));_0x3f0465[_0x781a('0x34')]=_0x3f0465[_0x781a('0x34')][_0x781a('0x37')]?_0x3f0465[_0x781a('0x34')]:_0x44f602[_0x781a('0x30')];_0x3f0465[_0x781a('0x39')]=qs[_0x781a('0x3a')](_0x16e351[_0x781a('0x31')][_0x781a('0x3a')]);_0x3f0465['where']=qs[_0x781a('0x33')](_[_0x781a('0x3b')](_0x16e351[_0x781a('0x31')],_0x44f602['filters']));if(_0x16e351[_0x781a('0x31')][_0x781a('0x3c')]){_0x3f0465[_0x781a('0x3d')]=_[_0x781a('0x3e')](_0x3f0465[_0x781a('0x3d')],{'$or':_['map'](_0x3f0465[_0x781a('0x34')],function(_0x1d2468){var _0x4cd4a7={};_0x4cd4a7[_0x1d2468]={'$like':'%'+_0x16e351['query'][_0x781a('0x3c')]+'%'};return _0x4cd4a7;})});}_0x3f0465=_[_0x781a('0x3e')]({},_0x3f0465,_0x16e351[_0x781a('0x3f')]);return _0xe36ead[_0x781a('0x4e')](_0x3f0465);}})[_0x781a('0x24')](function(_0x4dd426){if(_0x4dd426){_0x406a1e=_0x4dd426[_0x781a('0x37')];if(!_0x16e351[_0x781a('0x31')][_0x781a('0x4c')](_0x781a('0x38'))){_0x3f0465['limit']=qs[_0x781a('0x1c')](_0x16e351['query'][_0x781a('0x1c')]);_0x3f0465[_0x781a('0x1b')]=qs[_0x781a('0x1b')](_0x16e351[_0x781a('0x31')]['offset']);}return _0xe36ead[_0x781a('0x4e')](_0x3f0465);}})[_0x781a('0x24')](function(_0x5aa209){if(_0x5aa209){return _0x5aa209?{'count':_0x406a1e,'rows':_0x5aa209}:null;}})[_0x781a('0x24')](respondWithResult(_0x3351fa,null))[_0x781a('0x45')](handleError(_0x3351fa,null));};
\ No newline at end of file
index bd74e83..449bc1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf8=['bluebird','path','rimraf','int_vtiger_configurations','lodash','util','../../config/logger','api'];(function(_0x5ae28c,_0x562cd7){var _0x1bf066=function(_0x1e070b){while(--_0x1e070b){_0x5ae28c['push'](_0x5ae28c['shift']());}};_0x1bf066(++_0x562cd7);}(_0xbaf8,0x6c));var _0x8baf=function(_0x2adae0,_0x4fa150){_0x2adae0=_0x2adae0-0x0;var _0x4bbb68=_0xbaf8[_0x2adae0];return _0x4bbb68;};'use strict';var _=require(_0x8baf('0x0'));var util=require(_0x8baf('0x1'));var logger=require(_0x8baf('0x2'))(_0x8baf('0x3'));var moment=require('moment');var BPromise=require(_0x8baf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8baf('0x5'));var rimraf=require(_0x8baf('0x6'));var config=require('../../config/environment');var attributes=require('./intVtigerConfiguration.attributes');module['exports']=function(_0x150b75,_0x871cd5){return _0x150b75['define']('VtigerConfiguration',attributes,{'tableName':_0x8baf('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc72b=['int_vtiger_configurations','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','exports','define','VtigerConfiguration'];(function(_0x59625f,_0x3b2c76){var _0x498e1e=function(_0x85bb84){while(--_0x85bb84){_0x59625f['push'](_0x59625f['shift']());}};_0x498e1e(++_0x3b2c76);}(_0xc72b,0x1e5));var _0xbc72=function(_0x100e36,_0x4da225){_0x100e36=_0x100e36-0x0;var _0x1df0c9=_0xc72b[_0x100e36];return _0x1df0c9;};'use strict';var _=require('lodash');var util=require(_0xbc72('0x0'));var logger=require(_0xbc72('0x1'))('api');var moment=require(_0xbc72('0x2'));var BPromise=require('bluebird');var rp=require(_0xbc72('0x3'));var fs=require('fs');var path=require(_0xbc72('0x4'));var rimraf=require(_0xbc72('0x5'));var config=require(_0xbc72('0x6'));var attributes=require('./intVtigerConfiguration.attributes');module[_0xbc72('0x7')]=function(_0x1f4fdf,_0xe2593e){return _0x1f4fdf[_0xbc72('0x8')](_0xbc72('0x9'),attributes,{'tableName':_0xbc72('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 260d66b..5af3a8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x800c=['http','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client'];(function(_0x3d47e4,_0x1d1751){var _0x4c82a6=function(_0x105e56){while(--_0x105e56){_0x3d47e4['push'](_0x3d47e4['shift']());}};_0x4c82a6(++_0x1d1751);}(_0x800c,0x1ee));var _0xc800=function(_0x17f52c,_0x50d040){_0x17f52c=_0x17f52c-0x0;var _0x48b0dd=_0x800c[_0x17f52c];return _0x48b0dd;};'use strict';var _=require(_0xc800('0x0'));var util=require(_0xc800('0x1'));var moment=require(_0xc800('0x2'));var BPromise=require(_0xc800('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc800('0x4'));var db=require(_0xc800('0x5'))['db'];var utils=require(_0xc800('0x6'));var logger=require('../../config/logger')(_0xc800('0x7'));var config=require('../../config/environment');var jayson=require(_0xc800('0x8'));var client=jayson[_0xc800('0x9')][_0xc800('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xafacfb,_0x1f77ba,_0x4bc1c5){return new BPromise(function(_0x152aeb,_0x1013a2){return client[_0xc800('0xb')](_0xafacfb,_0x4bc1c5)['then'](function(_0x1f901c){logger[_0xc800('0xc')](_0xc800('0xd'),_0x1f77ba,_0xc800('0xe'));logger[_0xc800('0xf')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x1f77ba,'request\x20sent',JSON['stringify'](_0x1f901c));if(_0x1f901c[_0xc800('0x10')]){if(_0x1f901c[_0xc800('0x10')][_0xc800('0x11')]===0x1f4){logger[_0xc800('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x1f77ba,_0x1f901c[_0xc800('0x10')][_0xc800('0x12')]);return _0x1013a2(_0x1f901c[_0xc800('0x10')][_0xc800('0x12')]);}logger[_0xc800('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x1f77ba,_0x1f901c['error'][_0xc800('0x12')]);return _0x152aeb(_0x1f901c['error'][_0xc800('0x12')]);}else{logger[_0xc800('0xc')](_0xc800('0xd'),_0x1f77ba,_0xc800('0xe'));_0x152aeb(_0x1f901c[_0xc800('0x13')][_0xc800('0x12')]);}})[_0xc800('0x14')](function(_0x441fb0){logger[_0xc800('0x10')](_0xc800('0xd'),_0x1f77ba,_0x441fb0);_0x1013a2(_0x441fb0);});});}
\ No newline at end of file
+var _0xa1e3=['message','catch','util','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code'];(function(_0x5aa2b6,_0x589465){var _0x2e529b=function(_0x3cfae8){while(--_0x3cfae8){_0x5aa2b6['push'](_0x5aa2b6['shift']());}};_0x2e529b(++_0x589465);}(_0xa1e3,0xad));var _0x3a1e=function(_0x29b286,_0x52d803){_0x29b286=_0x29b286-0x0;var _0x21275c=_0xa1e3[_0x29b286];return _0x21275c;};'use strict';var _=require('lodash');var util=require(_0x3a1e('0x0'));var moment=require('moment');var BPromise=require(_0x3a1e('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3a1e('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3a1e('0x3'));var logger=require(_0x3a1e('0x4'))('rpc');var config=require(_0x3a1e('0x5'));var jayson=require(_0x3a1e('0x6'));var client=jayson[_0x3a1e('0x7')][_0x3a1e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3d1d63,_0x3ec156,_0x62c77a){return new BPromise(function(_0x1ec1e4,_0x25fb53){return client[_0x3a1e('0x9')](_0x3d1d63,_0x62c77a)[_0x3a1e('0xa')](function(_0x7b5c90){logger[_0x3a1e('0xb')](_0x3a1e('0xc'),_0x3ec156,_0x3a1e('0xd'));logger[_0x3a1e('0xe')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x3ec156,_0x3a1e('0xd'),JSON['stringify'](_0x7b5c90));if(_0x7b5c90[_0x3a1e('0xf')]){if(_0x7b5c90['error'][_0x3a1e('0x10')]===0x1f4){logger['error'](_0x3a1e('0xc'),_0x3ec156,_0x7b5c90[_0x3a1e('0xf')]['message']);return _0x25fb53(_0x7b5c90[_0x3a1e('0xf')]['message']);}logger[_0x3a1e('0xf')](_0x3a1e('0xc'),_0x3ec156,_0x7b5c90[_0x3a1e('0xf')][_0x3a1e('0x11')]);return _0x1ec1e4(_0x7b5c90[_0x3a1e('0xf')]['message']);}else{logger['info'](_0x3a1e('0xc'),_0x3ec156,_0x3a1e('0xd'));_0x1ec1e4(_0x7b5c90['result'][_0x3a1e('0x11')]);}})[_0x3a1e('0x12')](function(_0x3d431c){logger[_0x3a1e('0xf')](_0x3a1e('0xc'),_0x3ec156,_0x3d431c);_0x25fb53(_0x3d431c);});});}
\ No newline at end of file
index 55da814..3150854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9289=['/:id','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intVtigerField.controller','get','isAuthenticated','index','show','post','put','update'];(function(_0x17aad1,_0x53161b){var _0x260253=function(_0x1f6b98){while(--_0x1f6b98){_0x17aad1['push'](_0x17aad1['shift']());}};_0x260253(++_0x53161b);}(_0x9289,0x1e9));var _0x9928=function(_0x5e522a,_0x117612){_0x5e522a=_0x5e522a-0x0;var _0xd20438=_0x9289[_0x5e522a];return _0xd20438;};'use strict';var multer=require(_0x9928('0x0'));var util=require(_0x9928('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9928('0x2'));var router=express[_0x9928('0x3')]();var fs_extra=require(_0x9928('0x4'));var auth=require(_0x9928('0x5'));var interaction=require(_0x9928('0x6'));var config=require('../../config/environment');var controller=require(_0x9928('0x7'));router[_0x9928('0x8')]('/',auth[_0x9928('0x9')](),controller[_0x9928('0xa')]);router['get']('/:id',auth[_0x9928('0x9')](),controller[_0x9928('0xb')]);router[_0x9928('0xc')]('/',auth[_0x9928('0x9')](),controller['create']);router[_0x9928('0xd')]('/:id',auth[_0x9928('0x9')](),controller[_0x9928('0xe')]);router['delete'](_0x9928('0xf'),auth['isAuthenticated'](),controller[_0x9928('0x10')]);module[_0x9928('0x11')]=router;
\ No newline at end of file
+var _0xcea7=['update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','show','post','/:id'];(function(_0x3324d6,_0x156731){var _0x588698=function(_0x37743a){while(--_0x37743a){_0x3324d6['push'](_0x3324d6['shift']());}};_0x588698(++_0x156731);}(_0xcea7,0x81));var _0x7cea=function(_0x371898,_0x431924){_0x371898=_0x371898-0x0;var _0x1fab9d=_0xcea7[_0x371898];return _0x1fab9d;};'use strict';var multer=require(_0x7cea('0x0'));var util=require(_0x7cea('0x1'));var path=require(_0x7cea('0x2'));var timeout=require(_0x7cea('0x3'));var express=require(_0x7cea('0x4'));var router=express[_0x7cea('0x5')]();var fs_extra=require(_0x7cea('0x6'));var auth=require(_0x7cea('0x7'));var interaction=require(_0x7cea('0x8'));var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router['get']('/',auth[_0x7cea('0x9')](),controller[_0x7cea('0xa')]);router[_0x7cea('0xb')]('/:id',auth[_0x7cea('0x9')](),controller[_0x7cea('0xc')]);router[_0x7cea('0xd')]('/',auth[_0x7cea('0x9')](),controller['create']);router['put'](_0x7cea('0xe'),auth[_0x7cea('0x9')](),controller[_0x7cea('0xf')]);router[_0x7cea('0x10')](_0x7cea('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x7cea('0x11')]=router;
\ No newline at end of file
index bd40059..14d3049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8df=['string','variable','customVariable','keyValue','picklist','STRING','ENUM','sequelize'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0xd8df,0x1cf));var _0xfd8d=function(_0x45d3e5,_0x1645e3){_0x45d3e5=_0x45d3e5-0x0;var _0x31dcac=_0xd8df[_0x45d3e5];return _0x31dcac;};'use strict';var Sequelize=require(_0xfd8d('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xfd8d('0x1'),_0xfd8d('0x2'),_0xfd8d('0x3'),_0xfd8d('0x4'),_0xfd8d('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xfd8d('0x6')]},'key':{'type':Sequelize[_0xfd8d('0x6')]},'keyType':{'type':Sequelize[_0xfd8d('0x7')](_0xfd8d('0x1'),_0xfd8d('0x2'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xfd8d('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xfd8d('0x6')]}};
\ No newline at end of file
+var _0x76f6=['customVariable','BOOLEAN','sequelize','exports','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0x2d5146,_0xb0aebf){var _0x58ffaf=function(_0x219001){while(--_0x219001){_0x2d5146['push'](_0x2d5146['shift']());}};_0x58ffaf(++_0xb0aebf);}(_0x76f6,0xa2));var _0x676f=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x76f6[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x676f('0x0'));module[_0x676f('0x1')]={'type':{'type':Sequelize[_0x676f('0x2')](_0x676f('0x3'),_0x676f('0x4'),'customVariable',_0x676f('0x5'),_0x676f('0x6')),'defaultValue':_0x676f('0x3')},'content':{'type':Sequelize[_0x676f('0x7')]},'key':{'type':Sequelize[_0x676f('0x7')]},'keyType':{'type':Sequelize[_0x676f('0x2')]('string',_0x676f('0x4'),_0x676f('0x8'))},'keyContent':{'type':Sequelize[_0x676f('0x7')]},'idField':{'type':Sequelize[_0x676f('0x7')]},'nameField':{'type':Sequelize[_0x676f('0x7')]},'customField':{'type':Sequelize[_0x676f('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x676f('0x7')]}};
\ No newline at end of file
index 1d3f7ff..2d7e7c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d12=['order','sort','where','pick','filter','merge','type','options','include','findAll','rows','catch','show','keys','includeAll','find','create','body','update','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x4d12,0xb2));var _0x24d1=function(_0x5ccca1,_0x2edd54){_0x5ccca1=_0x5ccca1-0x0;var _0x411308=_0x4d12[_0x5ccca1];return _0x411308;};'use strict';var emlformat=require(_0x24d1('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x24d1('0x1'));var jsonpatch=require(_0x24d1('0x2'));var rp=require(_0x24d1('0x3'));var moment=require(_0x24d1('0x4'));var BPromise=require(_0x24d1('0x5'));var Mustache=require(_0x24d1('0x6'));var util=require('util');var path=require(_0x24d1('0x7'));var sox=require(_0x24d1('0x8'));var csv=require(_0x24d1('0x9'));var ejs=require(_0x24d1('0xa'));var fs=require('fs');var fs_extra=require(_0x24d1('0xb'));var _=require(_0x24d1('0xc'));var squel=require('squel');var crypto=require(_0x24d1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x24d1('0xe'));var toCsv=require(_0x24d1('0x9'));var querystring=require(_0x24d1('0xf'));var Papa=require(_0x24d1('0x10'));var Redis=require(_0x24d1('0x11'));var authService=require(_0x24d1('0x12'));var qs=require(_0x24d1('0x13'));var as=require(_0x24d1('0x14'));var hardwareService=require(_0x24d1('0x15'));var logger=require(_0x24d1('0x16'))(_0x24d1('0x17'));var utils=require(_0x24d1('0x18'));var config=require(_0x24d1('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x24d1('0x1a'))['db'];function respondWithStatusCode(_0x3a2f41,_0x3c2f61){_0x3c2f61=_0x3c2f61||0xcc;return function(_0x54de3d){if(_0x54de3d){return _0x3a2f41['sendStatus'](_0x3c2f61);}return _0x3a2f41[_0x24d1('0x1b')](_0x3c2f61)[_0x24d1('0x1c')]();};}function respondWithResult(_0x3634b1,_0x3df1c9){_0x3df1c9=_0x3df1c9||0xc8;return function(_0x43c48f){if(_0x43c48f){return _0x3634b1[_0x24d1('0x1b')](_0x3df1c9)[_0x24d1('0x1d')](_0x43c48f);}};}function respondWithFilteredResult(_0x3e7d21,_0x200882){return function(_0x2853c2){if(_0x2853c2){var _0x154701=typeof _0x200882[_0x24d1('0x1e')]===_0x24d1('0x1f')&&typeof _0x200882[_0x24d1('0x20')]===_0x24d1('0x1f');var _0x514b2e=_0x2853c2[_0x24d1('0x21')];var _0x6d83ba=_0x154701?0x0:_0x200882[_0x24d1('0x1e')];var _0x2972db=_0x154701?_0x2853c2[_0x24d1('0x21')]:_0x200882[_0x24d1('0x1e')]+_0x200882[_0x24d1('0x20')];var _0x282753;if(_0x2972db>=_0x514b2e){_0x2972db=_0x514b2e;_0x282753=0xc8;}else{_0x282753=0xce;}_0x3e7d21['status'](_0x282753);return _0x3e7d21[_0x24d1('0x22')](_0x24d1('0x23'),_0x6d83ba+'-'+_0x2972db+'/'+_0x514b2e)[_0x24d1('0x1d')](_0x2853c2);}return null;};}function patchUpdates(_0x3a57cb){return function(_0x3360c0){try{jsonpatch['apply'](_0x3360c0,_0x3a57cb,!![]);}catch(_0x48f2b0){return BPromise[_0x24d1('0x24')](_0x48f2b0);}return _0x3360c0[_0x24d1('0x25')]();};}function saveUpdates(_0x5d771e,_0x202ae4){return function(_0x3b1638){if(_0x3b1638){return _0x3b1638['update'](_0x5d771e)[_0x24d1('0x26')](function(_0x5e1c66){return _0x5e1c66;});}return null;};}function removeEntity(_0x211068,_0x56999b){return function(_0x46521e){if(_0x46521e){return _0x46521e[_0x24d1('0x27')]()[_0x24d1('0x26')](function(){_0x211068[_0x24d1('0x1b')](0xcc)[_0x24d1('0x1c')]();});}};}function handleEntityNotFound(_0x26ae62,_0xb3a10c){return function(_0x307b15){if(!_0x307b15){_0x26ae62[_0x24d1('0x28')](0x194);}return _0x307b15;};}function handleError(_0x2c0425,_0x569592){_0x569592=_0x569592||0x1f4;return function(_0x1cb322){logger[_0x24d1('0x29')](_0x1cb322[_0x24d1('0x2a')]);if(_0x1cb322[_0x24d1('0x2b')]){delete _0x1cb322[_0x24d1('0x2b')];}_0x2c0425[_0x24d1('0x1b')](_0x569592)[_0x24d1('0x2c')](_0x1cb322);};}exports[_0x24d1('0x2d')]=function(_0x40db86,_0x2e6e1c){var _0x34b58e={},_0x369c7c={},_0x2105d6={'count':0x0,'rows':[]};var _0x3dfa85=_[_0x24d1('0x2e')](db[_0x24d1('0x2f')][_0x24d1('0x30')],function(_0x1d61a8){return{'name':_0x1d61a8[_0x24d1('0x31')],'type':_0x1d61a8['type'][_0x24d1('0x32')]};});_0x369c7c[_0x24d1('0x33')]=_['map'](_0x3dfa85,_0x24d1('0x2b'));_0x369c7c[_0x24d1('0x34')]=_['keys'](_0x40db86[_0x24d1('0x34')]);_0x369c7c[_0x24d1('0x35')]=_['intersection'](_0x369c7c[_0x24d1('0x33')],_0x369c7c['query']);_0x34b58e['attributes']=_[_0x24d1('0x36')](_0x369c7c[_0x24d1('0x33')],qs[_0x24d1('0x37')](_0x40db86[_0x24d1('0x34')][_0x24d1('0x37')]));_0x34b58e[_0x24d1('0x38')]=_0x34b58e[_0x24d1('0x38')]['length']?_0x34b58e['attributes']:_0x369c7c[_0x24d1('0x33')];if(!_0x40db86['query'][_0x24d1('0x39')](_0x24d1('0x3a'))){_0x34b58e[_0x24d1('0x20')]=qs['limit'](_0x40db86['query'][_0x24d1('0x20')]);_0x34b58e[_0x24d1('0x1e')]=qs['offset'](_0x40db86[_0x24d1('0x34')]['offset']);}_0x34b58e[_0x24d1('0x3b')]=qs[_0x24d1('0x3c')](_0x40db86[_0x24d1('0x34')][_0x24d1('0x3c')]);_0x34b58e[_0x24d1('0x3d')]=qs[_0x24d1('0x35')](_[_0x24d1('0x3e')](_0x40db86['query'],_0x369c7c[_0x24d1('0x35')]),_0x3dfa85);if(_0x40db86[_0x24d1('0x34')][_0x24d1('0x3f')]){_0x34b58e['where']=_[_0x24d1('0x40')](_0x34b58e['where'],{'$or':_[_0x24d1('0x2e')](_0x3dfa85,function(_0x51a269){if(_0x51a269[_0x24d1('0x41')]!=='VIRTUAL'){var _0x1b58c0={};_0x1b58c0[_0x51a269[_0x24d1('0x2b')]]={'$like':'%'+_0x40db86[_0x24d1('0x34')][_0x24d1('0x3f')]+'%'};return _0x1b58c0;}})});}_0x34b58e=_['merge']({},_0x34b58e,_0x40db86[_0x24d1('0x42')]);var _0x5c8833={'where':_0x34b58e[_0x24d1('0x3d')]};return db['VtigerField'][_0x24d1('0x21')](_0x5c8833)[_0x24d1('0x26')](function(_0x3264bb){_0x2105d6[_0x24d1('0x21')]=_0x3264bb;if(_0x40db86[_0x24d1('0x34')]['includeAll']){_0x34b58e[_0x24d1('0x43')]=[{'all':!![]}];}return db[_0x24d1('0x2f')][_0x24d1('0x44')](_0x34b58e);})[_0x24d1('0x26')](function(_0x36998a){_0x2105d6[_0x24d1('0x45')]=_0x36998a;return _0x2105d6;})[_0x24d1('0x26')](respondWithFilteredResult(_0x2e6e1c,_0x34b58e))[_0x24d1('0x46')](handleError(_0x2e6e1c,null));};exports[_0x24d1('0x47')]=function(_0x1ac0d8,_0xf301db){var _0x5b5cff={'raw':!![],'where':{'id':_0x1ac0d8['params']['id']}},_0x41b59e={};_0x41b59e['model']=_['keys'](db['VtigerField'][_0x24d1('0x30')]);_0x41b59e[_0x24d1('0x34')]=_[_0x24d1('0x48')](_0x1ac0d8[_0x24d1('0x34')]);_0x41b59e[_0x24d1('0x35')]=_[_0x24d1('0x36')](_0x41b59e[_0x24d1('0x33')],_0x41b59e[_0x24d1('0x34')]);_0x5b5cff['attributes']=_[_0x24d1('0x36')](_0x41b59e[_0x24d1('0x33')],qs[_0x24d1('0x37')](_0x1ac0d8['query'][_0x24d1('0x37')]));_0x5b5cff['attributes']=_0x5b5cff[_0x24d1('0x38')]['length']?_0x5b5cff[_0x24d1('0x38')]:_0x41b59e['model'];if(_0x1ac0d8[_0x24d1('0x34')][_0x24d1('0x49')]){_0x5b5cff['include']=[{'all':!![]}];}_0x5b5cff=_[_0x24d1('0x40')]({},_0x5b5cff,_0x1ac0d8[_0x24d1('0x42')]);return db[_0x24d1('0x2f')][_0x24d1('0x4a')](_0x5b5cff)[_0x24d1('0x26')](handleEntityNotFound(_0xf301db,null))['then'](respondWithResult(_0xf301db,null))[_0x24d1('0x46')](handleError(_0xf301db,null));};exports[_0x24d1('0x4b')]=function(_0x4b4eab,_0x4c2816){return db[_0x24d1('0x2f')][_0x24d1('0x4b')](_0x4b4eab[_0x24d1('0x4c')],{})[_0x24d1('0x26')](respondWithResult(_0x4c2816,0xc9))['catch'](handleError(_0x4c2816,null));};exports[_0x24d1('0x4d')]=function(_0x22d4d3,_0x164d17){if(_0x22d4d3[_0x24d1('0x4c')]['id']){delete _0x22d4d3['body']['id'];}return db[_0x24d1('0x2f')][_0x24d1('0x4a')]({'where':{'id':_0x22d4d3[_0x24d1('0x4e')]['id']}})[_0x24d1('0x26')](handleEntityNotFound(_0x164d17,null))[_0x24d1('0x26')](saveUpdates(_0x22d4d3[_0x24d1('0x4c')],null))[_0x24d1('0x26')](respondWithResult(_0x164d17,null))[_0x24d1('0x46')](handleError(_0x164d17,null));};exports[_0x24d1('0x27')]=function(_0x1c49a3,_0x291cfe){return db['VtigerField'][_0x24d1('0x4a')]({'where':{'id':_0x1c49a3[_0x24d1('0x4e')]['id']}})[_0x24d1('0x26')](handleEntityNotFound(_0x291cfe,null))[_0x24d1('0x26')](removeEntity(_0x291cfe,null))[_0x24d1('0x46')](handleError(_0x291cfe,null));};
\ No newline at end of file
+var _0x5ed0=['filter','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../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','destroy','end','sendStatus','error','name','index','map','VtigerField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x4f45bc,_0x3ea5f3){var _0x2c5112=function(_0x5f707b){while(--_0x5f707b){_0x4f45bc['push'](_0x4f45bc['shift']());}};_0x2c5112(++_0x3ea5f3);}(_0x5ed0,0x195));var _0x05ed=function(_0xde3f0e,_0x57ab89){_0xde3f0e=_0xde3f0e-0x0;var _0x4b1f70=_0x5ed0[_0xde3f0e];return _0x4b1f70;};'use strict';var emlformat=require(_0x05ed('0x0'));var rimraf=require(_0x05ed('0x1'));var zipdir=require(_0x05ed('0x2'));var jsonpatch=require(_0x05ed('0x3'));var rp=require(_0x05ed('0x4'));var moment=require(_0x05ed('0x5'));var BPromise=require(_0x05ed('0x6'));var Mustache=require(_0x05ed('0x7'));var util=require(_0x05ed('0x8'));var path=require(_0x05ed('0x9'));var sox=require(_0x05ed('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x05ed('0xb'));var squel=require(_0x05ed('0xc'));var crypto=require(_0x05ed('0xd'));var jsforce=require(_0x05ed('0xe'));var deskjs=require(_0x05ed('0xf'));var toCsv=require(_0x05ed('0x10'));var querystring=require(_0x05ed('0x11'));var Papa=require(_0x05ed('0x12'));var Redis=require(_0x05ed('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x05ed('0x14'));var as=require(_0x05ed('0x15'));var hardwareService=require(_0x05ed('0x16'));var logger=require(_0x05ed('0x17'))(_0x05ed('0x18'));var utils=require(_0x05ed('0x19'));var config=require(_0x05ed('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x05ed('0x1b'))['db'];function respondWithStatusCode(_0x54f1fd,_0x351e36){_0x351e36=_0x351e36||0xcc;return function(_0x3b77aa){if(_0x3b77aa){return _0x54f1fd['sendStatus'](_0x351e36);}return _0x54f1fd[_0x05ed('0x1c')](_0x351e36)['end']();};}function respondWithResult(_0x452b50,_0x248a4b){_0x248a4b=_0x248a4b||0xc8;return function(_0x4b952a){if(_0x4b952a){return _0x452b50[_0x05ed('0x1c')](_0x248a4b)[_0x05ed('0x1d')](_0x4b952a);}};}function respondWithFilteredResult(_0x484364,_0x56886c){return function(_0x4c3396){if(_0x4c3396){var _0x503df5=typeof _0x56886c[_0x05ed('0x1e')]===_0x05ed('0x1f')&&typeof _0x56886c[_0x05ed('0x20')]===_0x05ed('0x1f');var _0x75cb71=_0x4c3396[_0x05ed('0x21')];var _0x973923=_0x503df5?0x0:_0x56886c['offset'];var _0x4cadc2=_0x503df5?_0x4c3396[_0x05ed('0x21')]:_0x56886c['offset']+_0x56886c['limit'];var _0xcbe40e;if(_0x4cadc2>=_0x75cb71){_0x4cadc2=_0x75cb71;_0xcbe40e=0xc8;}else{_0xcbe40e=0xce;}_0x484364[_0x05ed('0x1c')](_0xcbe40e);return _0x484364[_0x05ed('0x22')](_0x05ed('0x23'),_0x973923+'-'+_0x4cadc2+'/'+_0x75cb71)[_0x05ed('0x1d')](_0x4c3396);}return null;};}function patchUpdates(_0x5ed341){return function(_0x54504a){try{jsonpatch['apply'](_0x54504a,_0x5ed341,!![]);}catch(_0x5b5fe0){return BPromise['reject'](_0x5b5fe0);}return _0x54504a[_0x05ed('0x24')]();};}function saveUpdates(_0x146f4e,_0x1983aa){return function(_0x2a2291){if(_0x2a2291){return _0x2a2291[_0x05ed('0x25')](_0x146f4e)[_0x05ed('0x26')](function(_0x2841a8){return _0x2841a8;});}return null;};}function removeEntity(_0x4d007f,_0x53f659){return function(_0x402aed){if(_0x402aed){return _0x402aed[_0x05ed('0x27')]()[_0x05ed('0x26')](function(){_0x4d007f[_0x05ed('0x1c')](0xcc)[_0x05ed('0x28')]();});}};}function handleEntityNotFound(_0x11d524,_0x1f4a15){return function(_0xeec084){if(!_0xeec084){_0x11d524[_0x05ed('0x29')](0x194);}return _0xeec084;};}function handleError(_0x573836,_0x2258f3){_0x2258f3=_0x2258f3||0x1f4;return function(_0x26b4d1){logger[_0x05ed('0x2a')](_0x26b4d1['stack']);if(_0x26b4d1['name']){delete _0x26b4d1[_0x05ed('0x2b')];}_0x573836[_0x05ed('0x1c')](_0x2258f3)['send'](_0x26b4d1);};}exports[_0x05ed('0x2c')]=function(_0x52f2f8,_0x12972d){var _0x4da19b={},_0x4eade9={},_0xdcfea5={'count':0x0,'rows':[]};var _0x4517fb=_[_0x05ed('0x2d')](db[_0x05ed('0x2e')][_0x05ed('0x2f')],function(_0x44d7bf){return{'name':_0x44d7bf[_0x05ed('0x30')],'type':_0x44d7bf['type'][_0x05ed('0x31')]};});_0x4eade9[_0x05ed('0x32')]=_[_0x05ed('0x2d')](_0x4517fb,'name');_0x4eade9[_0x05ed('0x33')]=_[_0x05ed('0x34')](_0x52f2f8[_0x05ed('0x33')]);_0x4eade9[_0x05ed('0x35')]=_[_0x05ed('0x36')](_0x4eade9[_0x05ed('0x32')],_0x4eade9[_0x05ed('0x33')]);_0x4da19b[_0x05ed('0x37')]=_[_0x05ed('0x36')](_0x4eade9[_0x05ed('0x32')],qs['fields'](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x38')]));_0x4da19b[_0x05ed('0x37')]=_0x4da19b['attributes'][_0x05ed('0x39')]?_0x4da19b[_0x05ed('0x37')]:_0x4eade9[_0x05ed('0x32')];if(!_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x3a')](_0x05ed('0x3b'))){_0x4da19b[_0x05ed('0x20')]=qs[_0x05ed('0x20')](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x20')]);_0x4da19b['offset']=qs['offset'](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x1e')]);}_0x4da19b[_0x05ed('0x3c')]=qs['sort'](_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x3d')]);_0x4da19b[_0x05ed('0x3e')]=qs['filters'](_['pick'](_0x52f2f8[_0x05ed('0x33')],_0x4eade9[_0x05ed('0x35')]),_0x4517fb);if(_0x52f2f8[_0x05ed('0x33')][_0x05ed('0x3f')]){_0x4da19b[_0x05ed('0x3e')]=_[_0x05ed('0x40')](_0x4da19b[_0x05ed('0x3e')],{'$or':_[_0x05ed('0x2d')](_0x4517fb,function(_0x1c9cef){if(_0x1c9cef[_0x05ed('0x41')]!==_0x05ed('0x42')){var _0x9aa22b={};_0x9aa22b[_0x1c9cef['name']]={'$like':'%'+_0x52f2f8[_0x05ed('0x33')]['filter']+'%'};return _0x9aa22b;}})});}_0x4da19b=_[_0x05ed('0x40')]({},_0x4da19b,_0x52f2f8[_0x05ed('0x43')]);var _0x434627={'where':_0x4da19b[_0x05ed('0x3e')]};return db[_0x05ed('0x2e')]['count'](_0x434627)[_0x05ed('0x26')](function(_0x43f0bb){_0xdcfea5[_0x05ed('0x21')]=_0x43f0bb;if(_0x52f2f8[_0x05ed('0x33')]['includeAll']){_0x4da19b[_0x05ed('0x44')]=[{'all':!![]}];}return db[_0x05ed('0x2e')][_0x05ed('0x45')](_0x4da19b);})[_0x05ed('0x26')](function(_0x1a2e7){_0xdcfea5[_0x05ed('0x46')]=_0x1a2e7;return _0xdcfea5;})[_0x05ed('0x26')](respondWithFilteredResult(_0x12972d,_0x4da19b))[_0x05ed('0x47')](handleError(_0x12972d,null));};exports[_0x05ed('0x48')]=function(_0x452180,_0x5df377){var _0x1b4dca={'raw':!![],'where':{'id':_0x452180['params']['id']}},_0x307eaf={};_0x307eaf[_0x05ed('0x32')]=_[_0x05ed('0x34')](db[_0x05ed('0x2e')][_0x05ed('0x2f')]);_0x307eaf[_0x05ed('0x33')]=_[_0x05ed('0x34')](_0x452180['query']);_0x307eaf[_0x05ed('0x35')]=_[_0x05ed('0x36')](_0x307eaf['model'],_0x307eaf[_0x05ed('0x33')]);_0x1b4dca[_0x05ed('0x37')]=_[_0x05ed('0x36')](_0x307eaf[_0x05ed('0x32')],qs[_0x05ed('0x38')](_0x452180[_0x05ed('0x33')][_0x05ed('0x38')]));_0x1b4dca[_0x05ed('0x37')]=_0x1b4dca['attributes'][_0x05ed('0x39')]?_0x1b4dca['attributes']:_0x307eaf[_0x05ed('0x32')];if(_0x452180[_0x05ed('0x33')][_0x05ed('0x49')]){_0x1b4dca['include']=[{'all':!![]}];}_0x1b4dca=_[_0x05ed('0x40')]({},_0x1b4dca,_0x452180['options']);return db[_0x05ed('0x2e')][_0x05ed('0x4a')](_0x1b4dca)[_0x05ed('0x26')](handleEntityNotFound(_0x5df377,null))[_0x05ed('0x26')](respondWithResult(_0x5df377,null))['catch'](handleError(_0x5df377,null));};exports[_0x05ed('0x4b')]=function(_0x378b24,_0x22f7c3){return db[_0x05ed('0x2e')]['create'](_0x378b24[_0x05ed('0x4c')],{})[_0x05ed('0x26')](respondWithResult(_0x22f7c3,0xc9))[_0x05ed('0x47')](handleError(_0x22f7c3,null));};exports[_0x05ed('0x25')]=function(_0x30f65a,_0x45113f){if(_0x30f65a['body']['id']){delete _0x30f65a['body']['id'];}return db['VtigerField']['find']({'where':{'id':_0x30f65a['params']['id']}})[_0x05ed('0x26')](handleEntityNotFound(_0x45113f,null))['then'](saveUpdates(_0x30f65a['body'],null))['then'](respondWithResult(_0x45113f,null))[_0x05ed('0x47')](handleError(_0x45113f,null));};exports[_0x05ed('0x27')]=function(_0xf42cd7,_0x4bd073){return db[_0x05ed('0x2e')]['find']({'where':{'id':_0xf42cd7[_0x05ed('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4bd073,null))[_0x05ed('0x26')](removeEntity(_0x4bd073,null))[_0x05ed('0x47')](handleError(_0x4bd073,null));};
\ No newline at end of file
index 39f40a4..b826aa1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb691=['moment','bluebird','request-promise','path','rimraf','./intVtigerField.attributes','int_vtiger_fields','vtiger_unique_index','idField','api'];(function(_0xee5d2a,_0x534134){var _0x346948=function(_0x458fdf){while(--_0x458fdf){_0xee5d2a['push'](_0xee5d2a['shift']());}};_0x346948(++_0x534134);}(_0xb691,0x1ad));var _0x1b69=function(_0x2a3c0a,_0x163f5c){_0x2a3c0a=_0x2a3c0a-0x0;var _0x1703a2=_0xb691[_0x2a3c0a];return _0x1703a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x1b69('0x0'));var moment=require(_0x1b69('0x1'));var BPromise=require(_0x1b69('0x2'));var rp=require(_0x1b69('0x3'));var fs=require('fs');var path=require(_0x1b69('0x4'));var rimraf=require(_0x1b69('0x5'));var config=require('../../config/environment');var attributes=require(_0x1b69('0x6'));module['exports']=function(_0xd821c,_0x1f7516){return _0xd821c['define']('VtigerField',attributes,{'tableName':_0x1b69('0x7'),'paranoid':![],'indexes':[{'name':_0x1b69('0x8'),'fields':[_0x1b69('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x60df=['rimraf','../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x3ae00b,_0x260102){var _0x396e24=function(_0x3a5f14){while(--_0x3a5f14){_0x3ae00b['push'](_0x3ae00b['shift']());}};_0x396e24(++_0x260102);}(_0x60df,0x92));var _0xf60d=function(_0x5965e4,_0x496d02){_0x5965e4=_0x5965e4-0x0;var _0x2f1f53=_0x60df[_0x5965e4];return _0x2f1f53;};'use strict';var _=require(_0xf60d('0x0'));var util=require(_0xf60d('0x1'));var logger=require(_0xf60d('0x2'))(_0xf60d('0x3'));var moment=require(_0xf60d('0x4'));var BPromise=require('bluebird');var rp=require(_0xf60d('0x5'));var fs=require('fs');var path=require(_0xf60d('0x6'));var rimraf=require(_0xf60d('0x7'));var config=require(_0xf60d('0x8'));var attributes=require(_0xf60d('0x9'));module[_0xf60d('0xa')]=function(_0x1911be,_0x55e981){return _0x1911be[_0xf60d('0xb')](_0xf60d('0xc'),attributes,{'tableName':_0xf60d('0xd'),'paranoid':![],'indexes':[{'name':_0xf60d('0xe'),'fields':[_0xf60d('0xf'),_0xf60d('0x10')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9d72c54..0bcf962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5efc=['request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','VtigerField,\x20%s,\x20%s','message','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info'];(function(_0x1634f3,_0x39354b){var _0x6f4ded=function(_0x3e3e40){while(--_0x3e3e40){_0x1634f3['push'](_0x1634f3['shift']());}};_0x6f4ded(++_0x39354b);}(_0x5efc,0x184));var _0xc5ef=function(_0x3f1d7f,_0x57bb05){_0x3f1d7f=_0x3f1d7f-0x0;var _0x5ba6da=_0x5efc[_0x3f1d7f];return _0x5ba6da;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xc5ef('0x0'));var rs=require(_0xc5ef('0x1'));var fs=require('fs');var Redis=require(_0xc5ef('0x2'));var db=require(_0xc5ef('0x3'))['db'];var utils=require(_0xc5ef('0x4'));var logger=require(_0xc5ef('0x5'))('rpc');var config=require(_0xc5ef('0x6'));var jayson=require(_0xc5ef('0x7'));var client=jayson['client'][_0xc5ef('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x58221a,_0xdaaff8,_0x2ff47e){return new BPromise(function(_0x3b8541,_0x1522c1){return client['request'](_0x58221a,_0x2ff47e)[_0xc5ef('0x9')](function(_0x58dd3c){logger[_0xc5ef('0xa')]('VtigerField,\x20%s,\x20%s',_0xdaaff8,_0xc5ef('0xb'));logger[_0xc5ef('0xc')](_0xc5ef('0xd'),_0xdaaff8,_0xc5ef('0xb'),JSON[_0xc5ef('0xe')](_0x58dd3c));if(_0x58dd3c[_0xc5ef('0xf')]){if(_0x58dd3c[_0xc5ef('0xf')]['code']===0x1f4){logger['error'](_0xc5ef('0x10'),_0xdaaff8,_0x58dd3c[_0xc5ef('0xf')][_0xc5ef('0x11')]);return _0x1522c1(_0x58dd3c[_0xc5ef('0xf')][_0xc5ef('0x11')]);}logger['error'](_0xc5ef('0x10'),_0xdaaff8,_0x58dd3c[_0xc5ef('0xf')][_0xc5ef('0x11')]);return _0x3b8541(_0x58dd3c[_0xc5ef('0xf')][_0xc5ef('0x11')]);}else{logger['info'](_0xc5ef('0x10'),_0xdaaff8,_0xc5ef('0xb'));_0x3b8541(_0x58dd3c['result'][_0xc5ef('0x11')]);}})[_0xc5ef('0x12')](function(_0x3ce502){logger[_0xc5ef('0xf')]('VtigerField,\x20%s,\x20%s',_0xdaaff8,_0x3ce502);_0x1522c1(_0x3ce502);});});}
\ No newline at end of file
+var _0xb18e=['then','info','debug','VtigerField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VtigerField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','http','request'];(function(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xb18e,0x147));var _0xeb18=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0xb18e[_0x37e845];return _0x59e55b;};'use strict';var _=require(_0xeb18('0x0'));var util=require(_0xeb18('0x1'));var moment=require(_0xeb18('0x2'));var BPromise=require('bluebird');var rs=require(_0xeb18('0x3'));var fs=require('fs');var Redis=require(_0xeb18('0x4'));var db=require(_0xeb18('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xeb18('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xeb18('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1aade2,_0x43c5e2,_0x3f7204){return new BPromise(function(_0x293512,_0x3874f1){return client[_0xeb18('0x8')](_0x1aade2,_0x3f7204)[_0xeb18('0x9')](function(_0x573558){logger[_0xeb18('0xa')]('VtigerField,\x20%s,\x20%s',_0x43c5e2,'request\x20sent');logger[_0xeb18('0xb')](_0xeb18('0xc'),_0x43c5e2,_0xeb18('0xd'),JSON[_0xeb18('0xe')](_0x573558));if(_0x573558['error']){if(_0x573558[_0xeb18('0xf')][_0xeb18('0x10')]===0x1f4){logger['error'](_0xeb18('0x11'),_0x43c5e2,_0x573558[_0xeb18('0xf')][_0xeb18('0x12')]);return _0x3874f1(_0x573558['error']['message']);}logger[_0xeb18('0xf')](_0xeb18('0x11'),_0x43c5e2,_0x573558[_0xeb18('0xf')][_0xeb18('0x12')]);return _0x293512(_0x573558[_0xeb18('0xf')][_0xeb18('0x12')]);}else{logger[_0xeb18('0xa')]('VtigerField,\x20%s,\x20%s',_0x43c5e2,'request\x20sent');_0x293512(_0x573558[_0xeb18('0x13')][_0xeb18('0x12')]);}})[_0xeb18('0x14')](function(_0x421aad){logger[_0xeb18('0xf')](_0xeb18('0x11'),_0x43c5e2,_0x421aad);_0x3874f1(_0x421aad);});});}
\ No newline at end of file
index dcf952e..660311c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee51=['express','Router','fs-extra','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','/:id','show','/:id/configurations','getConfigurations','/:id/fields','post','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x8393f9,_0x51cc11){var _0x9b7d7b=function(_0x3569c8){while(--_0x3569c8){_0x8393f9['push'](_0x8393f9['shift']());}};_0x9b7d7b(++_0x51cc11);}(_0xee51,0x7a));var _0x1ee5=function(_0x2158e5,_0x111ced){_0x2158e5=_0x2158e5-0x0;var _0x37b296=_0xee51[_0x2158e5];return _0x37b296;};'use strict';var multer=require(_0x1ee5('0x0'));var util=require(_0x1ee5('0x1'));var path=require(_0x1ee5('0x2'));var timeout=require(_0x1ee5('0x3'));var express=require(_0x1ee5('0x4'));var router=express[_0x1ee5('0x5')]();var fs_extra=require(_0x1ee5('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1ee5('0x7'));var controller=require(_0x1ee5('0x8'));router[_0x1ee5('0x9')]('/',auth[_0x1ee5('0xa')](),controller['index']);router[_0x1ee5('0x9')](_0x1ee5('0xb'),auth[_0x1ee5('0xa')](),controller[_0x1ee5('0xc')]);router[_0x1ee5('0x9')](_0x1ee5('0xd'),auth[_0x1ee5('0xa')](),controller[_0x1ee5('0xe')]);router[_0x1ee5('0x9')](_0x1ee5('0xf'),auth[_0x1ee5('0xa')](),controller['getFields']);router[_0x1ee5('0x10')]('/',auth[_0x1ee5('0xa')](),controller['create']);router['post'](_0x1ee5('0xd'),auth[_0x1ee5('0xa')](),controller['addConfiguration']);router['put'](_0x1ee5('0xb'),auth[_0x1ee5('0xa')](),controller[_0x1ee5('0x11')]);router[_0x1ee5('0x12')](_0x1ee5('0xb'),auth[_0x1ee5('0xa')](),controller[_0x1ee5('0x13')]);module[_0x1ee5('0x14')]=router;
\ No newline at end of file
+var _0xa97d=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','update','destroy','exports','connect-timeout'];(function(_0x187f12,_0x40d281){var _0x8e230e=function(_0x1c5e9c){while(--_0x1c5e9c){_0x187f12['push'](_0x187f12['shift']());}};_0x8e230e(++_0x40d281);}(_0xa97d,0x17b));var _0xda97=function(_0x56ec07,_0x56a55f){_0x56ec07=_0x56ec07-0x0;var _0x3ce6f7=_0xa97d[_0x56ec07];return _0x3ce6f7;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xda97('0x0'));var express=require(_0xda97('0x1'));var router=express[_0xda97('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xda97('0x3'));var interaction=require(_0xda97('0x4'));var config=require(_0xda97('0x5'));var controller=require('./intZendeskAccount.controller');router[_0xda97('0x6')]('/',auth[_0xda97('0x7')](),controller['index']);router[_0xda97('0x6')](_0xda97('0x8'),auth[_0xda97('0x7')](),controller['show']);router[_0xda97('0x6')](_0xda97('0x9'),auth[_0xda97('0x7')](),controller['getConfigurations']);router[_0xda97('0x6')](_0xda97('0xa'),auth['isAuthenticated'](),controller[_0xda97('0xb')]);router[_0xda97('0xc')]('/',auth[_0xda97('0x7')](),controller[_0xda97('0xd')]);router[_0xda97('0xc')]('/:id/configurations',auth[_0xda97('0x7')](),controller[_0xda97('0xe')]);router[_0xda97('0xf')](_0xda97('0x8'),auth[_0xda97('0x7')](),controller[_0xda97('0x10')]);router['delete'](_0xda97('0x8'),auth[_0xda97('0x7')](),controller[_0xda97('0x11')]);module[_0xda97('0x12')]=router;
\ No newline at end of file
index 97c730d..74441cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['remoteUri','ENUM','password','integrationTab','newTab','sequelize','exports','STRING'];(function(_0x3b0419,_0x3d9b2f){var _0x471c73=function(_0x424612){while(--_0x424612){_0x3b0419['push'](_0x3b0419['shift']());}};_0x471c73(++_0x3d9b2f);}(_0x5496,0x175));var _0x6549=function(_0x2dd715,_0x424294){_0x2dd715=_0x2dd715-0x0;var _0x2b408a=_0x5496[_0x2dd715];return _0x2b408a;};'use strict';var Sequelize=require(_0x6549('0x0'));module[_0x6549('0x1')]={'name':{'type':Sequelize[_0x6549('0x2')]},'description':{'type':Sequelize[_0x6549('0x2')]},'username':{'type':Sequelize[_0x6549('0x2')],'unique':'username'},'password':{'type':Sequelize[_0x6549('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x6549('0x2')],'unique':_0x6549('0x3')},'authType':{'type':Sequelize[_0x6549('0x4')]('password','token'),'defaultValue':_0x6549('0x5')},'serverUrl':{'type':Sequelize[_0x6549('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x6549('0x6'),_0x6549('0x7')),'defaultValue':_0x6549('0x6')}};
\ No newline at end of file
+var _0x7b84=['sequelize','exports','STRING','username','remoteUri','ENUM','password','token','integrationTab','newTab'];(function(_0x1e1965,_0x55785c){var _0x1a2e96=function(_0x27d366){while(--_0x27d366){_0x1e1965['push'](_0x1e1965['shift']());}};_0x1a2e96(++_0x55785c);}(_0x7b84,0x17c));var _0x47b8=function(_0x2372b5,_0xd752a4){_0x2372b5=_0x2372b5-0x0;var _0x587cf3=_0x7b84[_0x2372b5];return _0x587cf3;};'use strict';var Sequelize=require(_0x47b8('0x0'));module[_0x47b8('0x1')]={'name':{'type':Sequelize[_0x47b8('0x2')]},'description':{'type':Sequelize[_0x47b8('0x2')]},'username':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x3')},'password':{'type':Sequelize[_0x47b8('0x2')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x47b8('0x2')],'unique':_0x47b8('0x4')},'authType':{'type':Sequelize[_0x47b8('0x5')](_0x47b8('0x6'),_0x47b8('0x7')),'defaultValue':_0x47b8('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x47b8('0x5')](_0x47b8('0x8'),_0x47b8('0x9')),'defaultValue':_0x47b8('0x8')}};
\ No newline at end of file
index 66a4a0a..1ddca74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['where','pick','filters','filter','merge','VIRTUAL','options','ZendeskAccount','include','findAll','rows','show','params','find','catch','create','body','order','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','ZendeskConfiguration','ZendeskField','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','toString','base64','%s/token:%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','group','remove','includes','title','position','system_field_options','custom_field_options','getFields,\x20%s,\x20%s,\x20%s','send','test','statusCode','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','reject','save','update','then','destroy','stack','name','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort'];(function(_0x3c71a4,_0x50b4e9){var _0x28de20=function(_0x4f19a8){while(--_0x4f19a8){_0x3c71a4['push'](_0x3c71a4['shift']());}};_0x28de20(++_0x50b4e9);}(_0x13f6,0x124));var _0x613f=function(_0x29cc17,_0x14aab3){_0x29cc17=_0x29cc17-0x0;var _0x37501a=_0x13f6[_0x29cc17];return _0x37501a;};'use strict';var emlformat=require(_0x613f('0x0'));var rimraf=require(_0x613f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x613f('0x2'));var moment=require(_0x613f('0x3'));var BPromise=require(_0x613f('0x4'));var Mustache=require('mustache');var util=require(_0x613f('0x5'));var path=require(_0x613f('0x6'));var sox=require(_0x613f('0x7'));var csv=require('to-csv');var ejs=require(_0x613f('0x8'));var fs=require('fs');var fs_extra=require(_0x613f('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x613f('0xa'));var toCsv=require(_0x613f('0xb'));var querystring=require(_0x613f('0xc'));var Papa=require(_0x613f('0xd'));var Redis=require('ioredis');var authService=require(_0x613f('0xe'));var qs=require(_0x613f('0xf'));var as=require(_0x613f('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x613f('0x11'))(_0x613f('0x12'));var utils=require(_0x613f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x613f('0x14'));var db=require(_0x613f('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x4c2a85,_0x517f57){_0x517f57=_0x517f57||0xcc;return function(_0x38d90a){if(_0x38d90a){return _0x4c2a85[_0x613f('0x16')](_0x517f57);}return _0x4c2a85[_0x613f('0x17')](_0x517f57)[_0x613f('0x18')]();};}function respondWithResult(_0x329fcf,_0x4a6fc){_0x4a6fc=_0x4a6fc||0xc8;return function(_0x305894){if(_0x305894){return _0x329fcf[_0x613f('0x17')](_0x4a6fc)[_0x613f('0x19')](_0x305894);}};}function respondWithFilteredResult(_0x1d68fd,_0x548218){return function(_0x3c9edf){if(_0x3c9edf){var _0x5d7c69=typeof _0x548218['offset']===_0x613f('0x1a')&&typeof _0x548218[_0x613f('0x1b')]==='undefined';var _0x39e417=_0x3c9edf['count'];var _0x62ebfe=_0x5d7c69?0x0:_0x548218[_0x613f('0x1c')];var _0x431266=_0x5d7c69?_0x3c9edf[_0x613f('0x1d')]:_0x548218[_0x613f('0x1c')]+_0x548218[_0x613f('0x1b')];var _0x4e412c;if(_0x431266>=_0x39e417){_0x431266=_0x39e417;_0x4e412c=0xc8;}else{_0x4e412c=0xce;}_0x1d68fd['status'](_0x4e412c);return _0x1d68fd[_0x613f('0x1e')]('Content-Range',_0x62ebfe+'-'+_0x431266+'/'+_0x39e417)['json'](_0x3c9edf);}return null;};}function patchUpdates(_0x3c9b58){return function(_0x446562){try{jsonpatch['apply'](_0x446562,_0x3c9b58,!![]);}catch(_0x19123f){return BPromise[_0x613f('0x1f')](_0x19123f);}return _0x446562[_0x613f('0x20')]();};}function saveUpdates(_0x48b28a,_0x5401c2){return function(_0x11f5f3){if(_0x11f5f3){return _0x11f5f3[_0x613f('0x21')](_0x48b28a)[_0x613f('0x22')](function(_0x51f376){return _0x51f376;});}return null;};}function removeEntity(_0x41104e,_0x33e0c6){return function(_0x30de90){if(_0x30de90){return _0x30de90[_0x613f('0x23')]()[_0x613f('0x22')](function(){_0x41104e['status'](0xcc)[_0x613f('0x18')]();});}};}function handleEntityNotFound(_0x204185,_0x51bba1){return function(_0x22035f){if(!_0x22035f){_0x204185[_0x613f('0x16')](0x194);}return _0x22035f;};}function handleError(_0x32e747,_0x4a878d){_0x4a878d=_0x4a878d||0x1f4;return function(_0x53e32b){logger['error'](_0x53e32b[_0x613f('0x24')]);if(_0x53e32b['name']){delete _0x53e32b[_0x613f('0x25')];}_0x32e747[_0x613f('0x17')](_0x4a878d)['send'](_0x53e32b);};}exports[_0x613f('0x26')]=function(_0x2551c1,_0x4c8aa1){var _0x4cff5d={},_0x4f892d={},_0x24be7c={'count':0x0,'rows':[]};var _0x7c1a94=_[_0x613f('0x27')](db['ZendeskAccount'][_0x613f('0x28')],function(_0x439478){return{'name':_0x439478[_0x613f('0x29')],'type':_0x439478[_0x613f('0x2a')]['key']};});_0x4f892d[_0x613f('0x2b')]=_[_0x613f('0x27')](_0x7c1a94,_0x613f('0x25'));_0x4f892d[_0x613f('0x2c')]=_[_0x613f('0x2d')](_0x2551c1[_0x613f('0x2c')]);_0x4f892d['filters']=_[_0x613f('0x2e')](_0x4f892d[_0x613f('0x2b')],_0x4f892d[_0x613f('0x2c')]);_0x4cff5d['attributes']=_[_0x613f('0x2e')](_0x4f892d['model'],qs[_0x613f('0x2f')](_0x2551c1[_0x613f('0x2c')][_0x613f('0x2f')]));_0x4cff5d[_0x613f('0x30')]=_0x4cff5d[_0x613f('0x30')][_0x613f('0x31')]?_0x4cff5d['attributes']:_0x4f892d[_0x613f('0x2b')];if(!_0x2551c1[_0x613f('0x2c')][_0x613f('0x32')](_0x613f('0x33'))){_0x4cff5d[_0x613f('0x1b')]=qs['limit'](_0x2551c1['query']['limit']);_0x4cff5d[_0x613f('0x1c')]=qs[_0x613f('0x1c')](_0x2551c1[_0x613f('0x2c')][_0x613f('0x1c')]);}_0x4cff5d['order']=qs[_0x613f('0x34')](_0x2551c1[_0x613f('0x2c')]['sort']);_0x4cff5d[_0x613f('0x35')]=qs['filters'](_[_0x613f('0x36')](_0x2551c1['query'],_0x4f892d[_0x613f('0x37')]),_0x7c1a94);if(_0x2551c1['query'][_0x613f('0x38')]){_0x4cff5d[_0x613f('0x35')]=_[_0x613f('0x39')](_0x4cff5d['where'],{'$or':_[_0x613f('0x27')](_0x7c1a94,function(_0x2c6a0c){if(_0x2c6a0c[_0x613f('0x2a')]!==_0x613f('0x3a')){var _0x474432={};_0x474432[_0x2c6a0c[_0x613f('0x25')]]={'$like':'%'+_0x2551c1[_0x613f('0x2c')][_0x613f('0x38')]+'%'};return _0x474432;}})});}_0x4cff5d=_[_0x613f('0x39')]({},_0x4cff5d,_0x2551c1[_0x613f('0x3b')]);var _0x4da8d3={'where':_0x4cff5d[_0x613f('0x35')]};return db[_0x613f('0x3c')][_0x613f('0x1d')](_0x4da8d3)[_0x613f('0x22')](function(_0x301d33){_0x24be7c[_0x613f('0x1d')]=_0x301d33;if(_0x2551c1[_0x613f('0x2c')]['includeAll']){_0x4cff5d[_0x613f('0x3d')]=[{'all':!![]}];}return db[_0x613f('0x3c')][_0x613f('0x3e')](_0x4cff5d);})[_0x613f('0x22')](function(_0x59d34f){_0x24be7c[_0x613f('0x3f')]=_0x59d34f;return _0x24be7c;})[_0x613f('0x22')](respondWithFilteredResult(_0x4c8aa1,_0x4cff5d))['catch'](handleError(_0x4c8aa1,null));};exports[_0x613f('0x40')]=function(_0x18f427,_0x3bb605){var _0x2f584e={'raw':![],'where':{'id':_0x18f427[_0x613f('0x41')]['id']}},_0x3952c9={};_0x3952c9[_0x613f('0x2b')]=_[_0x613f('0x2d')](db[_0x613f('0x3c')][_0x613f('0x28')]);_0x3952c9[_0x613f('0x2c')]=_[_0x613f('0x2d')](_0x18f427[_0x613f('0x2c')]);_0x3952c9['filters']=_[_0x613f('0x2e')](_0x3952c9[_0x613f('0x2b')],_0x3952c9[_0x613f('0x2c')]);_0x2f584e[_0x613f('0x30')]=_['intersection'](_0x3952c9[_0x613f('0x2b')],qs[_0x613f('0x2f')](_0x18f427[_0x613f('0x2c')][_0x613f('0x2f')]));_0x2f584e[_0x613f('0x30')]=_0x2f584e[_0x613f('0x30')][_0x613f('0x31')]?_0x2f584e[_0x613f('0x30')]:_0x3952c9[_0x613f('0x2b')];if(_0x18f427[_0x613f('0x2c')]['includeAll']){_0x2f584e['include']=[{'all':!![]}];}_0x2f584e=_[_0x613f('0x39')]({},_0x2f584e,_0x18f427[_0x613f('0x3b')]);return db['ZendeskAccount'][_0x613f('0x42')](_0x2f584e)[_0x613f('0x22')](handleEntityNotFound(_0x3bb605,null))[_0x613f('0x22')](respondWithResult(_0x3bb605,null))[_0x613f('0x43')](handleError(_0x3bb605,null));};exports[_0x613f('0x44')]=function(_0x1c0b07,_0x412dd4){return db[_0x613f('0x3c')][_0x613f('0x44')](_0x1c0b07[_0x613f('0x45')],{})[_0x613f('0x22')](respondWithResult(_0x412dd4,0xc9))[_0x613f('0x43')](handleError(_0x412dd4,null));};exports[_0x613f('0x21')]=function(_0x17f8e5,_0x1fd46c){if(_0x17f8e5[_0x613f('0x45')]['id']){delete _0x17f8e5[_0x613f('0x45')]['id'];}return db[_0x613f('0x3c')]['find']({'where':{'id':_0x17f8e5['params']['id']}})[_0x613f('0x22')](handleEntityNotFound(_0x1fd46c,null))[_0x613f('0x22')](saveUpdates(_0x17f8e5['body'],null))['then'](respondWithResult(_0x1fd46c,null))[_0x613f('0x43')](handleError(_0x1fd46c,null));};exports['destroy']=function(_0x513bf1,_0x6e006b){return db[_0x613f('0x3c')][_0x613f('0x42')]({'where':{'id':_0x513bf1['params']['id']}})[_0x613f('0x22')](handleEntityNotFound(_0x6e006b,null))[_0x613f('0x22')](removeEntity(_0x6e006b,null))['catch'](handleError(_0x6e006b,null));};exports['getConfigurations']=function(_0x1c0c8e,_0x30d7b1,_0x13b585){var _0x145009={};var _0x3f7ead={};var _0x395357;var _0x24d162;return db['ZendeskAccount']['findOne']({'where':{'id':_0x1c0c8e[_0x613f('0x41')]['id']}})['then'](handleEntityNotFound(_0x30d7b1,null))['then'](function(_0x387913){if(_0x387913){_0x395357=_0x387913;_0x3f7ead[_0x613f('0x2b')]=_[_0x613f('0x2d')](db['ZendeskConfiguration'][_0x613f('0x28')]);_0x3f7ead[_0x613f('0x2c')]=_[_0x613f('0x2d')](_0x1c0c8e[_0x613f('0x2c')]);_0x3f7ead[_0x613f('0x37')]=_[_0x613f('0x2e')](_0x3f7ead[_0x613f('0x2b')],_0x3f7ead['query']);_0x145009[_0x613f('0x30')]=_['intersection'](_0x3f7ead[_0x613f('0x2b')],qs[_0x613f('0x2f')](_0x1c0c8e[_0x613f('0x2c')][_0x613f('0x2f')]));_0x145009[_0x613f('0x30')]=_0x145009[_0x613f('0x30')][_0x613f('0x31')]?_0x145009[_0x613f('0x30')]:_0x3f7ead[_0x613f('0x2b')];_0x145009[_0x613f('0x46')]=qs[_0x613f('0x34')](_0x1c0c8e[_0x613f('0x2c')][_0x613f('0x34')]);_0x145009['where']=qs['filters'](_[_0x613f('0x36')](_0x1c0c8e['query'],_0x3f7ead[_0x613f('0x37')]));if(_0x1c0c8e[_0x613f('0x2c')][_0x613f('0x38')]){_0x145009[_0x613f('0x35')]=_[_0x613f('0x39')](_0x145009[_0x613f('0x35')],{'$or':_[_0x613f('0x27')](_0x145009[_0x613f('0x30')],function(_0x3ababc){var _0x29bb88={};_0x29bb88[_0x3ababc]={'$like':'%'+_0x1c0c8e[_0x613f('0x2c')]['filter']+'%'};return _0x29bb88;})});}_0x145009=_[_0x613f('0x39')]({},_0x145009,_0x1c0c8e[_0x613f('0x3b')]);return _0x395357[_0x613f('0x47')](_0x145009);}})[_0x613f('0x22')](function(_0x5a3ea1){if(_0x5a3ea1){_0x24d162=_0x5a3ea1[_0x613f('0x31')];if(!_0x1c0c8e[_0x613f('0x2c')]['hasOwnProperty']('nolimit')){_0x145009[_0x613f('0x1b')]=qs['limit'](_0x1c0c8e['query']['limit']);_0x145009[_0x613f('0x1c')]=qs['offset'](_0x1c0c8e['query']['offset']);}return _0x395357[_0x613f('0x47')](_0x145009);}})[_0x613f('0x22')](function(_0x5bf4ce){if(_0x5bf4ce){return _0x5bf4ce?{'count':_0x24d162,'rows':_0x5bf4ce}:null;}})[_0x613f('0x22')](respondWithResult(_0x30d7b1,null))[_0x613f('0x43')](handleError(_0x30d7b1,null));};exports[_0x613f('0x48')]=function(_0x2a7ca7,_0x5b8712,_0x24f25c){if(_0x2a7ca7[_0x613f('0x45')]['id']){delete _0x2a7ca7['body']['id'];}return db[_0x613f('0x3c')][_0x613f('0x49')]({'where':{'id':_0x2a7ca7[_0x613f('0x41')]['id']}})[_0x613f('0x22')](handleEntityNotFound(_0x5b8712,null))[_0x613f('0x22')](function(_0xdf8993){if(_0xdf8993){_0x2a7ca7[_0x613f('0x45')][_0x613f('0x4a')]=_0xdf8993['id'];_0x2a7ca7[_0x613f('0x45')][_0x613f('0x4b')]=integrations[_0x613f('0x4c')](_0x2a7ca7[_0x613f('0x45')]['channel'],_0x2a7ca7[_0x613f('0x45')][_0x613f('0x2a')]);_0x2a7ca7[_0x613f('0x45')][_0x613f('0x4d')]=integrations[_0x613f('0x4e')](_0x2a7ca7[_0x613f('0x45')]['channel'],_0x2a7ca7[_0x613f('0x45')][_0x613f('0x2a')]);return db[_0x613f('0x4f')][_0x613f('0x44')](_0x2a7ca7[_0x613f('0x45')],{'include':[{'model':db[_0x613f('0x50')],'as':'Subjects'},{'model':db['ZendeskField'],'as':_0x613f('0x4d')}]});}return null;})[_0x613f('0x22')](respondWithResult(_0x5b8712,null))[_0x613f('0x43')](handleError(_0x5b8712,null));};exports[_0x613f('0x51')]=function(_0x4f28c7,_0x11d2f4,_0x29e5c8){var _0x3d8777='';return db[_0x613f('0x3c')]['findOne']({'where':{'id':_0x4f28c7[_0x613f('0x41')]['id']},'attributes':['id',_0x613f('0x52'),_0x613f('0x53'),_0x613f('0x54'),_0x613f('0x55'),_0x613f('0x56')]})[_0x613f('0x22')](handleEntityNotFound(_0x11d2f4,null))[_0x613f('0x22')](function(_0x5dc81a){if(_0x5dc81a){_0x3d8777=_0x5dc81a[_0x613f('0x56')];var _0x792bf3=_0x3d8777[_0x613f('0x57')](-0x1);if(_0x792bf3==='/'){_0x3d8777=_0x3d8777[_0x613f('0x58')](0x0,_0x3d8777[_0x613f('0x59')](_0x792bf3));}var _0x15ef2d={'method':_0x613f('0x5a'),'uri':util[_0x613f('0x5b')](_0x613f('0x5c'),_0x3d8777,_0x613f('0x5d')),'json':!![]};switch(_0x5dc81a['authType']){case _0x613f('0x53'):_0x15ef2d[_0x613f('0x5e')]={'Authorization':util[_0x613f('0x5b')](_0x613f('0x5f'),new Buffer(util[_0x613f('0x5b')](_0x613f('0x60'),_0x5dc81a[_0x613f('0x52')],_0x5dc81a[_0x613f('0x53')]))[_0x613f('0x61')](_0x613f('0x62')))};break;case _0x613f('0x54'):_0x15ef2d['headers']={'Authorization':util[_0x613f('0x5b')](_0x613f('0x5f'),new Buffer(util[_0x613f('0x5b')](_0x613f('0x63'),_0x5dc81a[_0x613f('0x52')],_0x5dc81a[_0x613f('0x54')]))[_0x613f('0x61')](_0x613f('0x62')))};break;default:throw new db[(_0x613f('0x64'))][(_0x613f('0x65'))](_0x613f('0x66'));}return rp(_0x15ef2d);}})[_0x613f('0x22')](function(_0x5b8563){if(_0x5b8563){var _0x30c62f=[_0x613f('0x67'),'description',_0x613f('0x68'),'assignee'];_[_0x613f('0x69')](_0x5b8563['ticket_fields'],function(_0x49cb13){return _0x30c62f[_0x613f('0x6a')](_0x49cb13[_0x613f('0x2a')]);});return{'count':_0x5b8563[_0x613f('0x5d')][_0x613f('0x31')],'rows':_[_0x613f('0x27')](_0x5b8563[_0x613f('0x5d')],function(_0x622812){return{'id':_0x622812['id'],'name':_0x622812['position']>0x7?_0x622812[_0x613f('0x6b')]:_0x622812[_0x613f('0x2a')],'custom':_0x622812[_0x613f('0x6c')]>0x7?!![]:![],'options':_0x622812[_0x613f('0x6d')]?_0x622812[_0x613f('0x6d')]:_0x622812['custom_field_options']?_0x622812[_0x613f('0x6e')]:[]};})};}})[_0x613f('0x22')](respondWithResult(_0x11d2f4,null))['catch'](function(_0x188be6){var _0x8073b2=_0x4f28c7[_0x613f('0x2c')]['test']?0x1f4:_0x188be6['statusCode']||0x1f4;logger['error'](_0x613f('0x6f'),_0x613f('0x51'),_0x8073b2,JSON['stringify'](_0x188be6));delete _0x188be6[_0x613f('0x25')];if(_0x8073b2===0x191){_0x8073b2=0x190;}_0x11d2f4[_0x613f('0x17')](_0x8073b2)[_0x613f('0x70')](_0x4f28c7['query'][_0x613f('0x71')]?{'message':'Wrong\x20credentials','statusCode':_0x188be6[_0x613f('0x72')]}:_0x188be6);});};
\ No newline at end of file
+var _0x9348=['authType','remoteUri','substring','lastIndexOf','%s/%s','ticket_fields','password','headers','format','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','Unknown\x20authentication\x20type','description','group','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','ZendeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','create','body','find','getConfigurations','ZendeskConfiguration','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','Descriptions','getFields','username','token'];(function(_0x69448,_0x3732d2){var _0x21e177=function(_0x50f3b3){while(--_0x50f3b3){_0x69448['push'](_0x69448['shift']());}};_0x21e177(++_0x3732d2);}(_0x9348,0x10d));var _0x8934=function(_0x45eb29,_0x309e77){_0x45eb29=_0x45eb29-0x0;var _0x2339af=_0x9348[_0x45eb29];return _0x2339af;};'use strict';var emlformat=require(_0x8934('0x0'));var rimraf=require(_0x8934('0x1'));var zipdir=require(_0x8934('0x2'));var jsonpatch=require(_0x8934('0x3'));var rp=require(_0x8934('0x4'));var moment=require('moment');var BPromise=require(_0x8934('0x5'));var Mustache=require(_0x8934('0x6'));var util=require('util');var path=require(_0x8934('0x7'));var sox=require(_0x8934('0x8'));var csv=require(_0x8934('0x9'));var ejs=require(_0x8934('0xa'));var fs=require('fs');var fs_extra=require(_0x8934('0xb'));var _=require(_0x8934('0xc'));var squel=require('squel');var crypto=require(_0x8934('0xd'));var jsforce=require(_0x8934('0xe'));var deskjs=require(_0x8934('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8934('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x8934('0x11'));var hardwareService=require(_0x8934('0x12'));var logger=require(_0x8934('0x13'))(_0x8934('0x14'));var utils=require(_0x8934('0x15'));var config=require(_0x8934('0x16'));var licenseUtil=require(_0x8934('0x17'));var db=require(_0x8934('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x68427d,_0x108eab){_0x108eab=_0x108eab||0xcc;return function(_0x46bca5){if(_0x46bca5){return _0x68427d[_0x8934('0x19')](_0x108eab);}return _0x68427d[_0x8934('0x1a')](_0x108eab)[_0x8934('0x1b')]();};}function respondWithResult(_0x5b560f,_0x254720){_0x254720=_0x254720||0xc8;return function(_0x38230a){if(_0x38230a){return _0x5b560f[_0x8934('0x1a')](_0x254720)[_0x8934('0x1c')](_0x38230a);}};}function respondWithFilteredResult(_0x34d4dc,_0x41e6a9){return function(_0x2a5b04){if(_0x2a5b04){var _0x357cf8=typeof _0x41e6a9['offset']===_0x8934('0x1d')&&typeof _0x41e6a9[_0x8934('0x1e')]===_0x8934('0x1d');var _0x5de8f0=_0x2a5b04['count'];var _0x597eed=_0x357cf8?0x0:_0x41e6a9[_0x8934('0x1f')];var _0x51f9ed=_0x357cf8?_0x2a5b04[_0x8934('0x20')]:_0x41e6a9[_0x8934('0x1f')]+_0x41e6a9[_0x8934('0x1e')];var _0x36c3b9;if(_0x51f9ed>=_0x5de8f0){_0x51f9ed=_0x5de8f0;_0x36c3b9=0xc8;}else{_0x36c3b9=0xce;}_0x34d4dc[_0x8934('0x1a')](_0x36c3b9);return _0x34d4dc['set'](_0x8934('0x21'),_0x597eed+'-'+_0x51f9ed+'/'+_0x5de8f0)['json'](_0x2a5b04);}return null;};}function patchUpdates(_0x476c6c){return function(_0x34f4e7){try{jsonpatch[_0x8934('0x22')](_0x34f4e7,_0x476c6c,!![]);}catch(_0x379445){return BPromise[_0x8934('0x23')](_0x379445);}return _0x34f4e7[_0x8934('0x24')]();};}function saveUpdates(_0x36fe20,_0x4f4a9b){return function(_0xe763c6){if(_0xe763c6){return _0xe763c6[_0x8934('0x25')](_0x36fe20)[_0x8934('0x26')](function(_0x343e09){return _0x343e09;});}return null;};}function removeEntity(_0x43b89a,_0x5e593b){return function(_0x3cf295){if(_0x3cf295){return _0x3cf295[_0x8934('0x27')]()[_0x8934('0x26')](function(){_0x43b89a['status'](0xcc)[_0x8934('0x1b')]();});}};}function handleEntityNotFound(_0x561df2,_0x14c5f0){return function(_0x1783ce){if(!_0x1783ce){_0x561df2[_0x8934('0x19')](0x194);}return _0x1783ce;};}function handleError(_0x5ef0ed,_0x1fd5eb){_0x1fd5eb=_0x1fd5eb||0x1f4;return function(_0x15910b){logger[_0x8934('0x28')](_0x15910b[_0x8934('0x29')]);if(_0x15910b['name']){delete _0x15910b[_0x8934('0x2a')];}_0x5ef0ed[_0x8934('0x1a')](_0x1fd5eb)[_0x8934('0x2b')](_0x15910b);};}exports[_0x8934('0x2c')]=function(_0x44972b,_0x20d448){var _0x3f328a={},_0x457634={},_0x9c6a71={'count':0x0,'rows':[]};var _0x18938a=_['map'](db[_0x8934('0x2d')][_0x8934('0x2e')],function(_0x54d28d){return{'name':_0x54d28d[_0x8934('0x2f')],'type':_0x54d28d[_0x8934('0x30')][_0x8934('0x31')]};});_0x457634[_0x8934('0x32')]=_['map'](_0x18938a,_0x8934('0x2a'));_0x457634[_0x8934('0x33')]=_[_0x8934('0x34')](_0x44972b[_0x8934('0x33')]);_0x457634[_0x8934('0x35')]=_['intersection'](_0x457634[_0x8934('0x32')],_0x457634['query']);_0x3f328a['attributes']=_[_0x8934('0x36')](_0x457634[_0x8934('0x32')],qs[_0x8934('0x37')](_0x44972b[_0x8934('0x33')]['fields']));_0x3f328a[_0x8934('0x38')]=_0x3f328a[_0x8934('0x38')][_0x8934('0x39')]?_0x3f328a[_0x8934('0x38')]:_0x457634[_0x8934('0x32')];if(!_0x44972b['query'][_0x8934('0x3a')](_0x8934('0x3b'))){_0x3f328a['limit']=qs['limit'](_0x44972b[_0x8934('0x33')][_0x8934('0x1e')]);_0x3f328a['offset']=qs['offset'](_0x44972b[_0x8934('0x33')][_0x8934('0x1f')]);}_0x3f328a[_0x8934('0x3c')]=qs[_0x8934('0x3d')](_0x44972b[_0x8934('0x33')][_0x8934('0x3d')]);_0x3f328a[_0x8934('0x3e')]=qs[_0x8934('0x35')](_[_0x8934('0x3f')](_0x44972b[_0x8934('0x33')],_0x457634[_0x8934('0x35')]),_0x18938a);if(_0x44972b['query'][_0x8934('0x40')]){_0x3f328a[_0x8934('0x3e')]=_['merge'](_0x3f328a[_0x8934('0x3e')],{'$or':_[_0x8934('0x41')](_0x18938a,function(_0x414091){if(_0x414091[_0x8934('0x30')]!==_0x8934('0x42')){var _0x5b0307={};_0x5b0307[_0x414091['name']]={'$like':'%'+_0x44972b['query'][_0x8934('0x40')]+'%'};return _0x5b0307;}})});}_0x3f328a=_[_0x8934('0x43')]({},_0x3f328a,_0x44972b[_0x8934('0x44')]);var _0x53581b={'where':_0x3f328a[_0x8934('0x3e')]};return db['ZendeskAccount']['count'](_0x53581b)[_0x8934('0x26')](function(_0x1f36d0){_0x9c6a71['count']=_0x1f36d0;if(_0x44972b['query'][_0x8934('0x45')]){_0x3f328a[_0x8934('0x46')]=[{'all':!![]}];}return db[_0x8934('0x2d')]['findAll'](_0x3f328a);})[_0x8934('0x26')](function(_0x5e543c){_0x9c6a71[_0x8934('0x47')]=_0x5e543c;return _0x9c6a71;})['then'](respondWithFilteredResult(_0x20d448,_0x3f328a))[_0x8934('0x48')](handleError(_0x20d448,null));};exports[_0x8934('0x49')]=function(_0x83be9e,_0x566d67){var _0xefdfab={'raw':![],'where':{'id':_0x83be9e[_0x8934('0x4a')]['id']}},_0x350d04={};_0x350d04[_0x8934('0x32')]=_['keys'](db[_0x8934('0x2d')][_0x8934('0x2e')]);_0x350d04[_0x8934('0x33')]=_[_0x8934('0x34')](_0x83be9e[_0x8934('0x33')]);_0x350d04[_0x8934('0x35')]=_[_0x8934('0x36')](_0x350d04[_0x8934('0x32')],_0x350d04['query']);_0xefdfab['attributes']=_['intersection'](_0x350d04[_0x8934('0x32')],qs[_0x8934('0x37')](_0x83be9e['query'][_0x8934('0x37')]));_0xefdfab['attributes']=_0xefdfab[_0x8934('0x38')][_0x8934('0x39')]?_0xefdfab['attributes']:_0x350d04[_0x8934('0x32')];if(_0x83be9e[_0x8934('0x33')][_0x8934('0x45')]){_0xefdfab[_0x8934('0x46')]=[{'all':!![]}];}_0xefdfab=_['merge']({},_0xefdfab,_0x83be9e[_0x8934('0x44')]);return db[_0x8934('0x2d')]['find'](_0xefdfab)[_0x8934('0x26')](handleEntityNotFound(_0x566d67,null))[_0x8934('0x26')](respondWithResult(_0x566d67,null))[_0x8934('0x48')](handleError(_0x566d67,null));};exports[_0x8934('0x4b')]=function(_0x406d0a,_0x419e30){return db[_0x8934('0x2d')][_0x8934('0x4b')](_0x406d0a[_0x8934('0x4c')],{})[_0x8934('0x26')](respondWithResult(_0x419e30,0xc9))[_0x8934('0x48')](handleError(_0x419e30,null));};exports[_0x8934('0x25')]=function(_0x2c322d,_0x2febf5){if(_0x2c322d[_0x8934('0x4c')]['id']){delete _0x2c322d[_0x8934('0x4c')]['id'];}return db[_0x8934('0x2d')][_0x8934('0x4d')]({'where':{'id':_0x2c322d['params']['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x2febf5,null))[_0x8934('0x26')](saveUpdates(_0x2c322d['body'],null))['then'](respondWithResult(_0x2febf5,null))['catch'](handleError(_0x2febf5,null));};exports['destroy']=function(_0x3610a0,_0x15310a){return db[_0x8934('0x2d')]['find']({'where':{'id':_0x3610a0['params']['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x15310a,null))['then'](removeEntity(_0x15310a,null))['catch'](handleError(_0x15310a,null));};exports[_0x8934('0x4e')]=function(_0x2778f9,_0x173bc1,_0x334f27){var _0x21ca17={};var _0x1b66d8={};var _0x3902fb;var _0x575bd7;return db[_0x8934('0x2d')]['findOne']({'where':{'id':_0x2778f9[_0x8934('0x4a')]['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x173bc1,null))[_0x8934('0x26')](function(_0x3df31e){if(_0x3df31e){_0x3902fb=_0x3df31e;_0x1b66d8[_0x8934('0x32')]=_[_0x8934('0x34')](db[_0x8934('0x4f')][_0x8934('0x2e')]);_0x1b66d8['query']=_[_0x8934('0x34')](_0x2778f9[_0x8934('0x33')]);_0x1b66d8[_0x8934('0x35')]=_[_0x8934('0x36')](_0x1b66d8[_0x8934('0x32')],_0x1b66d8['query']);_0x21ca17[_0x8934('0x38')]=_[_0x8934('0x36')](_0x1b66d8[_0x8934('0x32')],qs['fields'](_0x2778f9[_0x8934('0x33')][_0x8934('0x37')]));_0x21ca17[_0x8934('0x38')]=_0x21ca17['attributes']['length']?_0x21ca17['attributes']:_0x1b66d8[_0x8934('0x32')];_0x21ca17[_0x8934('0x3c')]=qs[_0x8934('0x3d')](_0x2778f9['query'][_0x8934('0x3d')]);_0x21ca17[_0x8934('0x3e')]=qs['filters'](_['pick'](_0x2778f9[_0x8934('0x33')],_0x1b66d8[_0x8934('0x35')]));if(_0x2778f9[_0x8934('0x33')][_0x8934('0x40')]){_0x21ca17['where']=_['merge'](_0x21ca17['where'],{'$or':_['map'](_0x21ca17[_0x8934('0x38')],function(_0x2b8837){var _0x18d08e={};_0x18d08e[_0x2b8837]={'$like':'%'+_0x2778f9[_0x8934('0x33')][_0x8934('0x40')]+'%'};return _0x18d08e;})});}_0x21ca17=_[_0x8934('0x43')]({},_0x21ca17,_0x2778f9['options']);return _0x3902fb[_0x8934('0x4e')](_0x21ca17);}})[_0x8934('0x26')](function(_0x4991bd){if(_0x4991bd){_0x575bd7=_0x4991bd[_0x8934('0x39')];if(!_0x2778f9['query'][_0x8934('0x3a')]('nolimit')){_0x21ca17[_0x8934('0x1e')]=qs[_0x8934('0x1e')](_0x2778f9[_0x8934('0x33')][_0x8934('0x1e')]);_0x21ca17[_0x8934('0x1f')]=qs[_0x8934('0x1f')](_0x2778f9[_0x8934('0x33')]['offset']);}return _0x3902fb['getConfigurations'](_0x21ca17);}})[_0x8934('0x26')](function(_0x3a0378){if(_0x3a0378){return _0x3a0378?{'count':_0x575bd7,'rows':_0x3a0378}:null;}})[_0x8934('0x26')](respondWithResult(_0x173bc1,null))[_0x8934('0x48')](handleError(_0x173bc1,null));};exports[_0x8934('0x50')]=function(_0x18850a,_0x35c437,_0x112957){if(_0x18850a[_0x8934('0x4c')]['id']){delete _0x18850a[_0x8934('0x4c')]['id'];}return db[_0x8934('0x2d')][_0x8934('0x51')]({'where':{'id':_0x18850a[_0x8934('0x4a')]['id']}})[_0x8934('0x26')](handleEntityNotFound(_0x35c437,null))['then'](function(_0x5c2819){if(_0x5c2819){_0x18850a[_0x8934('0x4c')][_0x8934('0x52')]=_0x5c2819['id'];_0x18850a[_0x8934('0x4c')][_0x8934('0x53')]=integrations[_0x8934('0x54')](_0x18850a[_0x8934('0x4c')][_0x8934('0x55')],_0x18850a['body'][_0x8934('0x30')]);_0x18850a[_0x8934('0x4c')]['Descriptions']=integrations[_0x8934('0x56')](_0x18850a['body'][_0x8934('0x55')],_0x18850a[_0x8934('0x4c')][_0x8934('0x30')]);return db['ZendeskConfiguration'][_0x8934('0x4b')](_0x18850a[_0x8934('0x4c')],{'include':[{'model':db['ZendeskField'],'as':_0x8934('0x53')},{'model':db['ZendeskField'],'as':_0x8934('0x57')}]});}return null;})['then'](respondWithResult(_0x35c437,null))[_0x8934('0x48')](handleError(_0x35c437,null));};exports[_0x8934('0x58')]=function(_0x24b0ce,_0x5ea4fe,_0x196372){var _0xfbad9='';return db[_0x8934('0x2d')][_0x8934('0x51')]({'where':{'id':_0x24b0ce['params']['id']},'attributes':['id',_0x8934('0x59'),'password',_0x8934('0x5a'),_0x8934('0x5b'),_0x8934('0x5c')]})[_0x8934('0x26')](handleEntityNotFound(_0x5ea4fe,null))['then'](function(_0xc2799d){if(_0xc2799d){_0xfbad9=_0xc2799d[_0x8934('0x5c')];var _0xd880ba=_0xfbad9['slice'](-0x1);if(_0xd880ba==='/'){_0xfbad9=_0xfbad9[_0x8934('0x5d')](0x0,_0xfbad9[_0x8934('0x5e')](_0xd880ba));}var _0x2acd18={'method':'GET','uri':util['format'](_0x8934('0x5f'),_0xfbad9,_0x8934('0x60')),'json':!![]};switch(_0xc2799d[_0x8934('0x5b')]){case _0x8934('0x61'):_0x2acd18[_0x8934('0x62')]={'Authorization':util[_0x8934('0x63')](_0x8934('0x64'),new Buffer(util[_0x8934('0x63')](_0x8934('0x65'),_0xc2799d['username'],_0xc2799d[_0x8934('0x61')]))[_0x8934('0x66')](_0x8934('0x67')))};break;case _0x8934('0x5a'):_0x2acd18[_0x8934('0x62')]={'Authorization':util['format'](_0x8934('0x64'),new Buffer(util[_0x8934('0x63')]('%s/token:%s',_0xc2799d[_0x8934('0x59')],_0xc2799d['token']))['toString']('base64'))};break;default:throw new db[(_0x8934('0x68'))][(_0x8934('0x69'))](_0x8934('0x6a'));}return rp(_0x2acd18);}})['then'](function(_0x2c289b){if(_0x2c289b){var _0x1d3372=['subject',_0x8934('0x6b'),_0x8934('0x6c'),_0x8934('0x6d')];_[_0x8934('0x6e')](_0x2c289b[_0x8934('0x60')],function(_0x324722){return _0x1d3372[_0x8934('0x6f')](_0x324722[_0x8934('0x30')]);});return{'count':_0x2c289b[_0x8934('0x60')][_0x8934('0x39')],'rows':_['map'](_0x2c289b[_0x8934('0x60')],function(_0x31e7d1){return{'id':_0x31e7d1['id'],'name':_0x31e7d1[_0x8934('0x70')]>0x7?_0x31e7d1[_0x8934('0x71')]:_0x31e7d1[_0x8934('0x30')],'custom':_0x31e7d1[_0x8934('0x70')]>0x7?!![]:![],'options':_0x31e7d1[_0x8934('0x72')]?_0x31e7d1['system_field_options']:_0x31e7d1[_0x8934('0x73')]?_0x31e7d1[_0x8934('0x73')]:[]};})};}})[_0x8934('0x26')](respondWithResult(_0x5ea4fe,null))[_0x8934('0x48')](function(_0x9de459){var _0xdf0ab2=_0x24b0ce[_0x8934('0x33')][_0x8934('0x74')]?0x1f4:_0x9de459[_0x8934('0x75')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x8934('0x58'),_0xdf0ab2,JSON[_0x8934('0x76')](_0x9de459));delete _0x9de459['name'];if(_0xdf0ab2===0x191){_0xdf0ab2=0x190;}_0x5ea4fe[_0x8934('0x1a')](_0xdf0ab2)[_0x8934('0x2b')](_0x24b0ce[_0x8934('0x33')][_0x8934('0x74')]?{'message':_0x8934('0x77'),'statusCode':_0x9de459[_0x8934('0x75')]}:_0x9de459);});};
\ No newline at end of file
index 8f73fbd..1892df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x041a=['request-promise','path','../../config/environment','../../components/integrations/configuration','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x5b76af,_0x389828){var _0x29ad20=function(_0x5cd4c1){while(--_0x5cd4c1){_0x5b76af['push'](_0x5b76af['shift']());}};_0x29ad20(++_0x389828);}(_0x041a,0x1ce));var _0xa041=function(_0x294823,_0xd41314){_0x294823=_0x294823-0x0;var _0x4283ad=_0x041a[_0x294823];return _0x4283ad;};'use strict';var _=require(_0xa041('0x0'));var util=require(_0xa041('0x1'));var logger=require(_0xa041('0x2'))(_0xa041('0x3'));var moment=require(_0xa041('0x4'));var BPromise=require(_0xa041('0x5'));var rp=require(_0xa041('0x6'));var fs=require('fs');var path=require(_0xa041('0x7'));var rimraf=require('rimraf');var config=require(_0xa041('0x8'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xa041('0x9'));module['exports']=function(_0x491f6e,_0x3a6df7){return _0x491f6e['define'](_0xa041('0xa'),attributes,{'tableName':_0xa041('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd0d7=['ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xd0d7,0x1d6));var _0x7d0d=function(_0x5d184b,_0x1b04c5){_0x5d184b=_0x5d184b-0x0;var _0x5cee64=_0xd0d7[_0x5d184b];return _0x5cee64;};'use strict';var _=require(_0x7d0d('0x0'));var util=require(_0x7d0d('0x1'));var logger=require(_0x7d0d('0x2'))(_0x7d0d('0x3'));var moment=require(_0x7d0d('0x4'));var BPromise=require('bluebird');var rp=require(_0x7d0d('0x5'));var fs=require('fs');var path=require(_0x7d0d('0x6'));var rimraf=require(_0x7d0d('0x7'));var config=require(_0x7d0d('0x8'));var attributes=require(_0x7d0d('0x9'));var integrations=require(_0x7d0d('0xa'));module['exports']=function(_0x511d19,_0x5edb44){return _0x511d19['define'](_0x7d0d('0xb'),attributes,{'tableName':_0x7d0d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 148a723..a78fd28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d7b=['result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','include','map','model','then','ShowZendeskAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x1e87b4,_0x38178f){var _0x3c8d53=function(_0x205cbe){while(--_0x205cbe){_0x1e87b4['push'](_0x1e87b4['shift']());}};_0x3c8d53(++_0x38178f);}(_0x1d7b,0xb9));var _0xb1d7=function(_0x1e8740,_0x4e0c8e){_0x1e8740=_0x1e8740-0x0;var _0x57d2a9=_0x1d7b[_0x1e8740];return _0x57d2a9;};'use strict';var _=require(_0xb1d7('0x0'));var util=require(_0xb1d7('0x1'));var moment=require(_0xb1d7('0x2'));var BPromise=require(_0xb1d7('0x3'));var rs=require(_0xb1d7('0x4'));var fs=require('fs');var Redis=require(_0xb1d7('0x5'));var db=require(_0xb1d7('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb1d7('0x7'));var config=require(_0xb1d7('0x8'));var jayson=require(_0xb1d7('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1c8bf5,_0x4e9d58,_0x4d421d){return new BPromise(function(_0x5eed59,_0x147bc0){return client['request'](_0x1c8bf5,_0x4d421d)['then'](function(_0x4e308c){logger['info'](_0xb1d7('0xa'),_0x4e9d58,_0xb1d7('0xb'));logger[_0xb1d7('0xc')](_0xb1d7('0xd'),_0x4e9d58,_0xb1d7('0xb'),JSON[_0xb1d7('0xe')](_0x4e308c));if(_0x4e308c['error']){if(_0x4e308c[_0xb1d7('0xf')][_0xb1d7('0x10')]===0x1f4){logger[_0xb1d7('0xf')](_0xb1d7('0xa'),_0x4e9d58,_0x4e308c[_0xb1d7('0xf')][_0xb1d7('0x11')]);return _0x147bc0(_0x4e308c[_0xb1d7('0xf')][_0xb1d7('0x11')]);}logger['error'](_0xb1d7('0xa'),_0x4e9d58,_0x4e308c[_0xb1d7('0xf')][_0xb1d7('0x11')]);return _0x5eed59(_0x4e308c[_0xb1d7('0xf')][_0xb1d7('0x11')]);}else{logger[_0xb1d7('0x12')]('ZendeskAccount,\x20%s,\x20%s',_0x4e9d58,_0xb1d7('0xb'));_0x5eed59(_0x4e308c[_0xb1d7('0x13')][_0xb1d7('0x11')]);}})[_0xb1d7('0x14')](function(_0x3cd53c){logger[_0xb1d7('0xf')](_0xb1d7('0xa'),_0x4e9d58,_0x3cd53c);_0x147bc0(_0x3cd53c);});});}exports[_0xb1d7('0x15')]=function(_0x560b9d){var _0x17cce2=this;return new Promise(function(_0x59318d,_0x1cdca8){return db[_0xb1d7('0x16')][_0xb1d7('0x17')]({'raw':_0x560b9d[_0xb1d7('0x18')]?_0x560b9d['options'][_0xb1d7('0x19')]===undefined?!![]:![]:!![],'where':_0x560b9d[_0xb1d7('0x18')]?_0x560b9d[_0xb1d7('0x18')][_0xb1d7('0x1a')]||null:null,'attributes':_0x560b9d[_0xb1d7('0x18')]?_0x560b9d[_0xb1d7('0x18')][_0xb1d7('0x1b')]||null:null,'limit':_0x560b9d[_0xb1d7('0x18')]?_0x560b9d[_0xb1d7('0x18')]['limit']||null:null,'include':_0x560b9d[_0xb1d7('0x18')]?_0x560b9d[_0xb1d7('0x18')][_0xb1d7('0x1c')]?_[_0xb1d7('0x1d')](_0x560b9d[_0xb1d7('0x18')][_0xb1d7('0x1c')],function(_0x1c61cc){return{'model':db[_0x1c61cc['model']],'as':_0x1c61cc['as'],'attributes':_0x1c61cc['attributes'],'include':_0x1c61cc['include']?_[_0xb1d7('0x1d')](_0x1c61cc['include'],function(_0x2689f4){return{'model':db[_0x2689f4[_0xb1d7('0x1e')]],'as':_0x2689f4['as'],'attributes':_0x2689f4['attributes'],'include':_0x2689f4[_0xb1d7('0x1c')]?_['map'](_0x2689f4[_0xb1d7('0x1c')],function(_0x4c2499){return{'model':db[_0x4c2499['model']],'as':_0x4c2499['as'],'attributes':_0x4c2499[_0xb1d7('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb1d7('0x1f')](function(_0x145dd7){logger['info'](_0xb1d7('0x15'),_0x560b9d);logger[_0xb1d7('0xc')](_0xb1d7('0x15'),_0x560b9d,JSON['stringify'](_0x145dd7));_0x59318d(_0x145dd7);})[_0xb1d7('0x14')](function(_0x1941be){logger[_0xb1d7('0xf')](_0xb1d7('0x15'),_0x1941be[_0xb1d7('0x11')],_0x560b9d);_0x1cdca8(_0x17cce2[_0xb1d7('0xf')](0x1f4,_0x1941be[_0xb1d7('0x11')]));});});};exports[_0xb1d7('0x20')]=function(_0xd9d951){var _0x2c651e=this;return new Promise(function(_0x5077dd,_0x137834){return db['ZendeskAccount'][_0xb1d7('0x21')]({'raw':_0xd9d951[_0xb1d7('0x18')]?_0xd9d951[_0xb1d7('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0xd9d951[_0xb1d7('0x18')]?_0xd9d951[_0xb1d7('0x18')][_0xb1d7('0x1a')]||null:null,'attributes':_0xd9d951['options']?_0xd9d951[_0xb1d7('0x18')][_0xb1d7('0x1b')]||null:null,'include':_0xd9d951[_0xb1d7('0x18')]?_0xd9d951['options']['include']?_['map'](_0xd9d951[_0xb1d7('0x18')][_0xb1d7('0x1c')],function(_0x480d69){return{'model':db[_0x480d69[_0xb1d7('0x1e')]],'as':_0x480d69['as'],'attributes':_0x480d69[_0xb1d7('0x1b')],'include':_0x480d69['include']?_[_0xb1d7('0x1d')](_0x480d69[_0xb1d7('0x1c')],function(_0x42ee4c){return{'model':db[_0x42ee4c[_0xb1d7('0x1e')]],'as':_0x42ee4c['as'],'attributes':_0x42ee4c[_0xb1d7('0x1b')],'include':_0x42ee4c['include']?_[_0xb1d7('0x1d')](_0x42ee4c[_0xb1d7('0x1c')],function(_0x566acd){return{'model':db[_0x566acd[_0xb1d7('0x1e')]],'as':_0x566acd['as'],'attributes':_0x566acd['attributes']};}):[]};}):[]};}):[]:[]})[_0xb1d7('0x1f')](function(_0x4d1e0b){logger[_0xb1d7('0x12')]('ShowZendeskAccount',_0xd9d951);logger['debug'](_0xb1d7('0x20'),_0xd9d951,JSON[_0xb1d7('0xe')](_0x4d1e0b));_0x5077dd(_0x4d1e0b);})[_0xb1d7('0x14')](function(_0xd4b3c4){logger['error'](_0xb1d7('0x20'),_0xd4b3c4[_0xb1d7('0x11')],_0xd9d951);_0x137834(_0x2c651e[_0xb1d7('0xf')](0x1f4,_0xd4b3c4[_0xb1d7('0x11')]));});});};
\ No newline at end of file
+var _0x3451=['where','attributes','limit','include','map','stringify','ShowZendeskAccount','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0x3451,0x1a8));var _0x1345=function(_0x456716,_0x569449){_0x456716=_0x456716-0x0;var _0x72e44f=_0x3451[_0x456716];return _0x72e44f;};'use strict';var _=require(_0x1345('0x0'));var util=require(_0x1345('0x1'));var moment=require(_0x1345('0x2'));var BPromise=require(_0x1345('0x3'));var rs=require(_0x1345('0x4'));var fs=require('fs');var Redis=require(_0x1345('0x5'));var db=require(_0x1345('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x1345('0x7'))(_0x1345('0x8'));var config=require('../../config/environment');var jayson=require(_0x1345('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5e3d53,_0x155146,_0x145fda){return new BPromise(function(_0x5ed70,_0x7be220){return client['request'](_0x5e3d53,_0x145fda)[_0x1345('0xa')](function(_0x2cd946){logger[_0x1345('0xb')](_0x1345('0xc'),_0x155146,_0x1345('0xd'));logger[_0x1345('0xe')]('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0x155146,_0x1345('0xd'),JSON['stringify'](_0x2cd946));if(_0x2cd946[_0x1345('0xf')]){if(_0x2cd946[_0x1345('0xf')][_0x1345('0x10')]===0x1f4){logger[_0x1345('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x155146,_0x2cd946['error'][_0x1345('0x11')]);return _0x7be220(_0x2cd946[_0x1345('0xf')][_0x1345('0x11')]);}logger[_0x1345('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x155146,_0x2cd946[_0x1345('0xf')][_0x1345('0x11')]);return _0x5ed70(_0x2cd946[_0x1345('0xf')][_0x1345('0x11')]);}else{logger[_0x1345('0xb')]('ZendeskAccount,\x20%s,\x20%s',_0x155146,'request\x20sent');_0x5ed70(_0x2cd946['result'][_0x1345('0x11')]);}})[_0x1345('0x12')](function(_0x37626e){logger[_0x1345('0xf')](_0x1345('0xc'),_0x155146,_0x37626e);_0x7be220(_0x37626e);});});}exports[_0x1345('0x13')]=function(_0x4bb2a7){var _0x263476=this;return new Promise(function(_0x1451a6,_0x2fcba0){return db[_0x1345('0x14')][_0x1345('0x15')]({'raw':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x17')]===undefined?!![]:![]:!![],'where':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x18')]||null:null,'attributes':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x19')]||null:null,'limit':_0x4bb2a7['options']?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x1a')]||null:null,'include':_0x4bb2a7[_0x1345('0x16')]?_0x4bb2a7[_0x1345('0x16')][_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x4bb2a7[_0x1345('0x16')]['include'],function(_0x3ee936){return{'model':db[_0x3ee936['model']],'as':_0x3ee936['as'],'attributes':_0x3ee936[_0x1345('0x19')],'include':_0x3ee936[_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x3ee936['include'],function(_0x2bb4fd){return{'model':db[_0x2bb4fd['model']],'as':_0x2bb4fd['as'],'attributes':_0x2bb4fd['attributes'],'include':_0x2bb4fd[_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x2bb4fd[_0x1345('0x1b')],function(_0x378801){return{'model':db[_0x378801['model']],'as':_0x378801['as'],'attributes':_0x378801[_0x1345('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1345('0xa')](function(_0x3ebdf6){logger['info'](_0x1345('0x13'),_0x4bb2a7);logger[_0x1345('0xe')](_0x1345('0x13'),_0x4bb2a7,JSON[_0x1345('0x1d')](_0x3ebdf6));_0x1451a6(_0x3ebdf6);})[_0x1345('0x12')](function(_0x52c436){logger[_0x1345('0xf')](_0x1345('0x13'),_0x52c436['message'],_0x4bb2a7);_0x2fcba0(_0x263476['error'](0x1f4,_0x52c436[_0x1345('0x11')]));});});};exports[_0x1345('0x1e')]=function(_0x3d325f){var _0x3b7bdb=this;return new Promise(function(_0x20e799,_0x5b619d){return db[_0x1345('0x14')]['find']({'raw':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')][_0x1345('0x17')]===undefined?!![]:![]:!![],'where':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')]['where']||null:null,'attributes':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')][_0x1345('0x19')]||null:null,'include':_0x3d325f[_0x1345('0x16')]?_0x3d325f[_0x1345('0x16')][_0x1345('0x1b')]?_[_0x1345('0x1c')](_0x3d325f[_0x1345('0x16')][_0x1345('0x1b')],function(_0x17743d){return{'model':db[_0x17743d['model']],'as':_0x17743d['as'],'attributes':_0x17743d[_0x1345('0x19')],'include':_0x17743d['include']?_[_0x1345('0x1c')](_0x17743d[_0x1345('0x1b')],function(_0x1982d7){return{'model':db[_0x1982d7[_0x1345('0x1f')]],'as':_0x1982d7['as'],'attributes':_0x1982d7[_0x1345('0x19')],'include':_0x1982d7['include']?_[_0x1345('0x1c')](_0x1982d7['include'],function(_0x2c1e4f){return{'model':db[_0x2c1e4f[_0x1345('0x1f')]],'as':_0x2c1e4f['as'],'attributes':_0x2c1e4f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x108714){logger[_0x1345('0xb')](_0x1345('0x1e'),_0x3d325f);logger[_0x1345('0xe')]('ShowZendeskAccount',_0x3d325f,JSON[_0x1345('0x1d')](_0x108714));_0x20e799(_0x108714);})[_0x1345('0x12')](function(_0x5b5c0f){logger[_0x1345('0xf')](_0x1345('0x1e'),_0x5b5c0f[_0x1345('0x11')],_0x3d325f);_0x5b619d(_0x3b7bdb[_0x1345('0xf')](0x1f4,_0x5b5c0f['message']));});});};
\ No newline at end of file
index 9efc921..7fda892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x878f=['../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get','/:id','/:id/fields','/:id/subjects','isAuthenticated','/:id/descriptions','getDescriptions','/:id/tags','getTags','create','post','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0x878f,0x173));var _0xf878=function(_0x36614e,_0x260295){_0x36614e=_0x36614e-0x0;var _0x20c610=_0x878f[_0x36614e];return _0x20c610;};'use strict';var multer=require('multer');var util=require(_0xf878('0x0'));var path=require(_0xf878('0x1'));var timeout=require(_0xf878('0x2'));var express=require(_0xf878('0x3'));var router=express[_0xf878('0x4')]();var fs_extra=require(_0xf878('0x5'));var auth=require(_0xf878('0x6'));var interaction=require(_0xf878('0x7'));var config=require(_0xf878('0x8'));var controller=require(_0xf878('0x9'));router[_0xf878('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xf878('0xa')](_0xf878('0xb'),auth['isAuthenticated'](),controller['show']);router['get'](_0xf878('0xc'),auth['isAuthenticated'](),controller['getFields']);router[_0xf878('0xa')](_0xf878('0xd'),auth[_0xf878('0xe')](),controller['getSubjects']);router[_0xf878('0xa')](_0xf878('0xf'),auth['isAuthenticated'](),controller[_0xf878('0x10')]);router['get'](_0xf878('0x11'),auth[_0xf878('0xe')](),controller[_0xf878('0x12')]);router['post']('/',auth[_0xf878('0xe')](),controller[_0xf878('0x13')]);router[_0xf878('0x14')]('/:id/tags',auth[_0xf878('0xe')](),controller[_0xf878('0x15')]);router[_0xf878('0x16')]('/:id',auth['isAuthenticated'](),controller[_0xf878('0x17')]);router[_0xf878('0x18')](_0xf878('0xb'),auth[_0xf878('0xe')](),controller[_0xf878('0x19')]);module[_0xf878('0x1a')]=router;
\ No newline at end of file
+var _0xda3f=['../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','post','create','put','destroy','exports','util','path','fs-extra','../../components/interaction/service'];(function(_0x7078a,_0x2efdba){var _0x16ac85=function(_0xdf342a){while(--_0xdf342a){_0x7078a['push'](_0x7078a['shift']());}};_0x16ac85(++_0x2efdba);}(_0xda3f,0xec));var _0xfda3=function(_0x17f80c,_0x36b485){_0x17f80c=_0x17f80c-0x0;var _0x1b905f=_0xda3f[_0x17f80c];return _0x1b905f;};'use strict';var multer=require('multer');var util=require(_0xfda3('0x0'));var path=require(_0xfda3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xfda3('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xfda3('0x3'));var config=require(_0xfda3('0x4'));var controller=require('./intZendeskConfiguration.controller');router[_0xfda3('0x5')]('/',auth[_0xfda3('0x6')](),controller['index']);router['get'](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0x8')]);router[_0xfda3('0x5')](_0xfda3('0x9'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xa')]);router[_0xfda3('0x5')](_0xfda3('0xb'),auth[_0xfda3('0x6')](),controller[_0xfda3('0xc')]);router[_0xfda3('0x5')]('/:id/descriptions',auth[_0xfda3('0x6')](),controller[_0xfda3('0xd')]);router[_0xfda3('0x5')](_0xfda3('0xe'),auth[_0xfda3('0x6')](),controller['getTags']);router[_0xfda3('0xf')]('/',auth['isAuthenticated'](),controller[_0xfda3('0x10')]);router[_0xfda3('0xf')]('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0xfda3('0x11')](_0xfda3('0x7'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xfda3('0x7'),auth[_0xfda3('0x6')](),controller[_0xfda3('0x12')]);module[_0xfda3('0x13')]=router;
\ No newline at end of file
index 8d6c617..843ae93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d9=['exports','STRING','sequelize'];(function(_0x5bd626,_0xdbf46d){var _0x2661ca=function(_0x421ff4){while(--_0x421ff4){_0x5bd626['push'](_0x5bd626['shift']());}};_0x2661ca(++_0xdbf46d);}(_0x99d9,0x13d));var _0x999d=function(_0x5eb2fb,_0x2e203e){_0x5eb2fb=_0x5eb2fb-0x0;var _0x2e5503=_0x99d9[_0x5eb2fb];return _0x2e5503;};'use strict';var Sequelize=require(_0x999d('0x0'));module[_0x999d('0x1')]={'name':{'type':Sequelize[_0x999d('0x2')]},'description':{'type':Sequelize[_0x999d('0x2')]}};
\ No newline at end of file
+var _0x7dd6=['STRING','exports'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0x7dd6,0x6b));var _0x67dd=function(_0x166d93,_0x301f09){_0x166d93=_0x166d93-0x0;var _0xba708=_0x7dd6[_0x166d93];return _0xba708;};'use strict';var Sequelize=require('sequelize');module[_0x67dd('0x0')]={'name':{'type':Sequelize[_0x67dd('0x1')]},'description':{'type':Sequelize[_0x67dd('0x1')]}};
\ No newline at end of file
index ac70e88..e4fa740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6da2=['ejs','fs-extra','lodash','crypto','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','order','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','params','length','find','create','body','update','findOne','ZendeskField','getFields','hasOwnProperty','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv'];(function(_0x590ed9,_0x5fc7da){var _0x7c90ef=function(_0x2c01e3){while(--_0x2c01e3){_0x590ed9['push'](_0x590ed9['shift']());}};_0x7c90ef(++_0x5fc7da);}(_0x6da2,0x99));var _0x26da=function(_0x354803,_0x3b56d8){_0x354803=_0x354803-0x0;var _0x2e30ba=_0x6da2[_0x354803];return _0x2e30ba;};'use strict';var emlformat=require(_0x26da('0x0'));var rimraf=require(_0x26da('0x1'));var zipdir=require(_0x26da('0x2'));var jsonpatch=require(_0x26da('0x3'));var rp=require('request-promise');var moment=require(_0x26da('0x4'));var BPromise=require(_0x26da('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x26da('0x6'));var sox=require(_0x26da('0x7'));var csv=require(_0x26da('0x8'));var ejs=require(_0x26da('0x9'));var fs=require('fs');var fs_extra=require(_0x26da('0xa'));var _=require(_0x26da('0xb'));var squel=require('squel');var crypto=require(_0x26da('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x26da('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x26da('0xd'));var authService=require(_0x26da('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x26da('0xf'));var hardwareService=require(_0x26da('0x10'));var logger=require(_0x26da('0x11'))(_0x26da('0x12'));var utils=require(_0x26da('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x26da('0x14'));var db=require(_0x26da('0x15'))['db'];function respondWithStatusCode(_0x46fba1,_0x45b2db){_0x45b2db=_0x45b2db||0xcc;return function(_0x4629f8){if(_0x4629f8){return _0x46fba1[_0x26da('0x16')](_0x45b2db);}return _0x46fba1[_0x26da('0x17')](_0x45b2db)[_0x26da('0x18')]();};}function respondWithResult(_0x361bd2,_0x3e341d){_0x3e341d=_0x3e341d||0xc8;return function(_0x5037e0){if(_0x5037e0){return _0x361bd2[_0x26da('0x17')](_0x3e341d)[_0x26da('0x19')](_0x5037e0);}};}function respondWithFilteredResult(_0x4258cc,_0x5e3598){return function(_0x9e0e3d){if(_0x9e0e3d){var _0x2113ee=typeof _0x5e3598[_0x26da('0x1a')]===_0x26da('0x1b')&&typeof _0x5e3598[_0x26da('0x1c')]==='undefined';var _0x4c1469=_0x9e0e3d[_0x26da('0x1d')];var _0x58b704=_0x2113ee?0x0:_0x5e3598[_0x26da('0x1a')];var _0x52da8b=_0x2113ee?_0x9e0e3d[_0x26da('0x1d')]:_0x5e3598[_0x26da('0x1a')]+_0x5e3598[_0x26da('0x1c')];var _0x2d42d0;if(_0x52da8b>=_0x4c1469){_0x52da8b=_0x4c1469;_0x2d42d0=0xc8;}else{_0x2d42d0=0xce;}_0x4258cc[_0x26da('0x17')](_0x2d42d0);return _0x4258cc[_0x26da('0x1e')](_0x26da('0x1f'),_0x58b704+'-'+_0x52da8b+'/'+_0x4c1469)[_0x26da('0x19')](_0x9e0e3d);}return null;};}function patchUpdates(_0x45202a){return function(_0x3a7a28){try{jsonpatch[_0x26da('0x20')](_0x3a7a28,_0x45202a,!![]);}catch(_0x811736){return BPromise[_0x26da('0x21')](_0x811736);}return _0x3a7a28[_0x26da('0x22')]();};}function saveUpdates(_0x481cef,_0x2a410c){return function(_0x29a079){if(_0x29a079){return _0x29a079['update'](_0x481cef)[_0x26da('0x23')](function(_0x341a32){return _0x341a32;});}return null;};}function removeEntity(_0x3b46ab,_0x114248){return function(_0x1594c1){if(_0x1594c1){return _0x1594c1[_0x26da('0x24')]()[_0x26da('0x23')](function(){_0x3b46ab[_0x26da('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x370060,_0x1e319c){return function(_0x29052d){if(!_0x29052d){_0x370060[_0x26da('0x16')](0x194);}return _0x29052d;};}function handleError(_0x55e940,_0x552026){_0x552026=_0x552026||0x1f4;return function(_0x135901){logger['error'](_0x135901[_0x26da('0x25')]);if(_0x135901['name']){delete _0x135901[_0x26da('0x26')];}_0x55e940[_0x26da('0x17')](_0x552026)[_0x26da('0x27')](_0x135901);};}exports[_0x26da('0x28')]=function(_0x23d6b9,_0x205ff6){var _0x2ff43a={},_0x211006={},_0x4c7492={'count':0x0,'rows':[]};var _0x32ca5a=_[_0x26da('0x29')](db[_0x26da('0x2a')][_0x26da('0x2b')],function(_0x40531a){return{'name':_0x40531a[_0x26da('0x2c')],'type':_0x40531a[_0x26da('0x2d')][_0x26da('0x2e')]};});_0x211006['model']=_[_0x26da('0x29')](_0x32ca5a,'name');_0x211006[_0x26da('0x2f')]=_[_0x26da('0x30')](_0x23d6b9[_0x26da('0x2f')]);_0x211006['filters']=_[_0x26da('0x31')](_0x211006[_0x26da('0x32')],_0x211006[_0x26da('0x2f')]);_0x2ff43a[_0x26da('0x33')]=_['intersection'](_0x211006[_0x26da('0x32')],qs[_0x26da('0x34')](_0x23d6b9['query']['fields']));_0x2ff43a[_0x26da('0x33')]=_0x2ff43a[_0x26da('0x33')]['length']?_0x2ff43a[_0x26da('0x33')]:_0x211006['model'];if(!_0x23d6b9[_0x26da('0x2f')]['hasOwnProperty']('nolimit')){_0x2ff43a[_0x26da('0x1c')]=qs['limit'](_0x23d6b9[_0x26da('0x2f')][_0x26da('0x1c')]);_0x2ff43a[_0x26da('0x1a')]=qs[_0x26da('0x1a')](_0x23d6b9['query']['offset']);}_0x2ff43a[_0x26da('0x35')]=qs['sort'](_0x23d6b9[_0x26da('0x2f')][_0x26da('0x36')]);_0x2ff43a[_0x26da('0x37')]=qs[_0x26da('0x38')](_[_0x26da('0x39')](_0x23d6b9[_0x26da('0x2f')],_0x211006[_0x26da('0x38')]),_0x32ca5a);if(_0x23d6b9[_0x26da('0x2f')][_0x26da('0x3a')]){_0x2ff43a[_0x26da('0x37')]=_[_0x26da('0x3b')](_0x2ff43a[_0x26da('0x37')],{'$or':_[_0x26da('0x29')](_0x32ca5a,function(_0x11edd5){if(_0x11edd5[_0x26da('0x2d')]!=='VIRTUAL'){var _0x300c38={};_0x300c38[_0x11edd5[_0x26da('0x26')]]={'$like':'%'+_0x23d6b9[_0x26da('0x2f')][_0x26da('0x3a')]+'%'};return _0x300c38;}})});}_0x2ff43a=_[_0x26da('0x3b')]({},_0x2ff43a,_0x23d6b9[_0x26da('0x3c')]);var _0x42257a={'where':_0x2ff43a[_0x26da('0x37')]};return db[_0x26da('0x2a')][_0x26da('0x1d')](_0x42257a)[_0x26da('0x23')](function(_0xb9a2ce){_0x4c7492[_0x26da('0x1d')]=_0xb9a2ce;if(_0x23d6b9[_0x26da('0x2f')][_0x26da('0x3d')]){_0x2ff43a[_0x26da('0x3e')]=[{'all':!![]}];}return db[_0x26da('0x2a')][_0x26da('0x3f')](_0x2ff43a);})[_0x26da('0x23')](function(_0xee765f){_0x4c7492['rows']=_0xee765f;return _0x4c7492;})[_0x26da('0x23')](respondWithFilteredResult(_0x205ff6,_0x2ff43a))[_0x26da('0x40')](handleError(_0x205ff6,null));};exports['show']=function(_0x26a16c,_0x4f926c){var _0x117b7f={'raw':![],'where':{'id':_0x26a16c[_0x26da('0x41')]['id']}},_0xff8e09={};_0xff8e09['model']=_['keys'](db[_0x26da('0x2a')][_0x26da('0x2b')]);_0xff8e09['query']=_[_0x26da('0x30')](_0x26a16c[_0x26da('0x2f')]);_0xff8e09[_0x26da('0x38')]=_['intersection'](_0xff8e09[_0x26da('0x32')],_0xff8e09[_0x26da('0x2f')]);_0x117b7f[_0x26da('0x33')]=_['intersection'](_0xff8e09[_0x26da('0x32')],qs[_0x26da('0x34')](_0x26a16c[_0x26da('0x2f')]['fields']));_0x117b7f[_0x26da('0x33')]=_0x117b7f[_0x26da('0x33')][_0x26da('0x42')]?_0x117b7f[_0x26da('0x33')]:_0xff8e09[_0x26da('0x32')];if(_0x26a16c['query'][_0x26da('0x3d')]){_0x117b7f[_0x26da('0x3e')]=[{'all':!![]}];}_0x117b7f=_[_0x26da('0x3b')]({},_0x117b7f,_0x26a16c['options']);return db[_0x26da('0x2a')][_0x26da('0x43')](_0x117b7f)['then'](handleEntityNotFound(_0x4f926c,null))[_0x26da('0x23')](respondWithResult(_0x4f926c,null))[_0x26da('0x40')](handleError(_0x4f926c,null));};exports[_0x26da('0x44')]=function(_0x3830ea,_0x3f0e9d){return db[_0x26da('0x2a')][_0x26da('0x44')](_0x3830ea[_0x26da('0x45')],{})[_0x26da('0x23')](respondWithResult(_0x3f0e9d,0xc9))[_0x26da('0x40')](handleError(_0x3f0e9d,null));};exports[_0x26da('0x46')]=function(_0x5ae133,_0x1282b8){if(_0x5ae133[_0x26da('0x45')]['id']){delete _0x5ae133[_0x26da('0x45')]['id'];}return db[_0x26da('0x2a')]['find']({'where':{'id':_0x5ae133[_0x26da('0x41')]['id']}})['then'](handleEntityNotFound(_0x1282b8,null))[_0x26da('0x23')](saveUpdates(_0x5ae133[_0x26da('0x45')],null))['then'](respondWithResult(_0x1282b8,null))['catch'](handleError(_0x1282b8,null));};exports[_0x26da('0x24')]=function(_0x4b8fac,_0x23af13){return db[_0x26da('0x2a')][_0x26da('0x43')]({'where':{'id':_0x4b8fac[_0x26da('0x41')]['id']}})['then'](handleEntityNotFound(_0x23af13,null))[_0x26da('0x23')](removeEntity(_0x23af13,null))[_0x26da('0x40')](handleError(_0x23af13,null));};exports['getFields']=function(_0xd9b9d,_0x56b31c,_0xb56e6b){var _0x1fbf3d={};var _0x2960da={};var _0x283a23;var _0x5dc6bf;return db[_0x26da('0x2a')][_0x26da('0x47')]({'where':{'id':_0xd9b9d[_0x26da('0x41')]['id']}})[_0x26da('0x23')](handleEntityNotFound(_0x56b31c,null))[_0x26da('0x23')](function(_0x3e6de6){if(_0x3e6de6){_0x283a23=_0x3e6de6;_0x2960da['model']=_[_0x26da('0x30')](db[_0x26da('0x48')][_0x26da('0x2b')]);_0x2960da[_0x26da('0x2f')]=_[_0x26da('0x30')](_0xd9b9d[_0x26da('0x2f')]);_0x2960da[_0x26da('0x38')]=_[_0x26da('0x31')](_0x2960da[_0x26da('0x32')],_0x2960da[_0x26da('0x2f')]);_0x1fbf3d[_0x26da('0x33')]=_[_0x26da('0x31')](_0x2960da['model'],qs[_0x26da('0x34')](_0xd9b9d[_0x26da('0x2f')][_0x26da('0x34')]));_0x1fbf3d[_0x26da('0x33')]=_0x1fbf3d['attributes']['length']?_0x1fbf3d[_0x26da('0x33')]:_0x2960da['model'];_0x1fbf3d['order']=qs[_0x26da('0x36')](_0xd9b9d[_0x26da('0x2f')][_0x26da('0x36')]);_0x1fbf3d['where']=qs[_0x26da('0x38')](_[_0x26da('0x39')](_0xd9b9d[_0x26da('0x2f')],_0x2960da[_0x26da('0x38')]));if(_0xd9b9d[_0x26da('0x2f')]['filter']){_0x1fbf3d[_0x26da('0x37')]=_[_0x26da('0x3b')](_0x1fbf3d[_0x26da('0x37')],{'$or':_['map'](_0x1fbf3d[_0x26da('0x33')],function(_0x36b9e6){var _0x472da5={};_0x472da5[_0x36b9e6]={'$like':'%'+_0xd9b9d['query']['filter']+'%'};return _0x472da5;})});}_0x1fbf3d=_['merge']({},_0x1fbf3d,_0xd9b9d['options']);return _0x283a23[_0x26da('0x49')](_0x1fbf3d);}})[_0x26da('0x23')](function(_0x124e09){if(_0x124e09){_0x5dc6bf=_0x124e09['length'];if(!_0xd9b9d[_0x26da('0x2f')][_0x26da('0x4a')](_0x26da('0x4b'))){_0x1fbf3d[_0x26da('0x1c')]=qs[_0x26da('0x1c')](_0xd9b9d['query'][_0x26da('0x1c')]);_0x1fbf3d['offset']=qs[_0x26da('0x1a')](_0xd9b9d['query'][_0x26da('0x1a')]);}return _0x283a23['getFields'](_0x1fbf3d);}})[_0x26da('0x23')](function(_0x2d65cd){if(_0x2d65cd){return _0x2d65cd?{'count':_0x5dc6bf,'rows':_0x2d65cd}:null;}})['then'](respondWithResult(_0x56b31c,null))[_0x26da('0x40')](handleError(_0x56b31c,null));};exports[_0x26da('0x4c')]=function(_0x5e72b3,_0x185e8b,_0x240eea){var _0x82deb5={};var _0x234e5e={};var _0x2ad415;var _0x404cb4;return db[_0x26da('0x2a')][_0x26da('0x47')]({'where':{'id':_0x5e72b3[_0x26da('0x41')]['id']}})[_0x26da('0x23')](handleEntityNotFound(_0x185e8b,null))[_0x26da('0x23')](function(_0x4de6f7){if(_0x4de6f7){_0x2ad415=_0x4de6f7;_0x234e5e[_0x26da('0x32')]=_[_0x26da('0x30')](db[_0x26da('0x48')][_0x26da('0x2b')]);_0x234e5e[_0x26da('0x2f')]=_['keys'](_0x5e72b3['query']);_0x234e5e[_0x26da('0x38')]=_[_0x26da('0x31')](_0x234e5e[_0x26da('0x32')],_0x234e5e[_0x26da('0x2f')]);_0x82deb5[_0x26da('0x33')]=_[_0x26da('0x31')](_0x234e5e[_0x26da('0x32')],qs[_0x26da('0x34')](_0x5e72b3[_0x26da('0x2f')]['fields']));_0x82deb5['attributes']=_0x82deb5[_0x26da('0x33')][_0x26da('0x42')]?_0x82deb5[_0x26da('0x33')]:_0x234e5e[_0x26da('0x32')];_0x82deb5[_0x26da('0x35')]=qs[_0x26da('0x36')](_0x5e72b3[_0x26da('0x2f')][_0x26da('0x36')]);_0x82deb5[_0x26da('0x37')]=qs[_0x26da('0x38')](_[_0x26da('0x39')](_0x5e72b3['query'],_0x234e5e[_0x26da('0x38')]));if(_0x5e72b3[_0x26da('0x2f')][_0x26da('0x3a')]){_0x82deb5[_0x26da('0x37')]=_[_0x26da('0x3b')](_0x82deb5[_0x26da('0x37')],{'$or':_['map'](_0x82deb5[_0x26da('0x33')],function(_0x4bb3cf){var _0x558b71={};_0x558b71[_0x4bb3cf]={'$like':'%'+_0x5e72b3[_0x26da('0x2f')][_0x26da('0x3a')]+'%'};return _0x558b71;})});}_0x82deb5=_[_0x26da('0x3b')]({},_0x82deb5,_0x5e72b3[_0x26da('0x3c')]);return _0x2ad415[_0x26da('0x4c')](_0x82deb5);}})['then'](function(_0x76446){if(_0x76446){_0x404cb4=_0x76446['length'];if(!_0x5e72b3['query'][_0x26da('0x4a')](_0x26da('0x4b'))){_0x82deb5[_0x26da('0x1c')]=qs['limit'](_0x5e72b3[_0x26da('0x2f')][_0x26da('0x1c')]);_0x82deb5['offset']=qs[_0x26da('0x1a')](_0x5e72b3['query'][_0x26da('0x1a')]);}return _0x2ad415['getSubjects'](_0x82deb5);}})['then'](function(_0x1f6e24){if(_0x1f6e24){return _0x1f6e24?{'count':_0x404cb4,'rows':_0x1f6e24}:null;}})[_0x26da('0x23')](respondWithResult(_0x185e8b,null))[_0x26da('0x40')](handleError(_0x185e8b,null));};exports[_0x26da('0x4d')]=function(_0xe43a35,_0x51f8e2,_0x22c2e0){var _0x7a5084={};var _0x121076={};var _0x32532b;var _0x567934;return db[_0x26da('0x2a')][_0x26da('0x47')]({'where':{'id':_0xe43a35[_0x26da('0x41')]['id']}})[_0x26da('0x23')](handleEntityNotFound(_0x51f8e2,null))[_0x26da('0x23')](function(_0x5c439b){if(_0x5c439b){_0x32532b=_0x5c439b;_0x121076[_0x26da('0x32')]=_[_0x26da('0x30')](db['ZendeskField']['rawAttributes']);_0x121076[_0x26da('0x2f')]=_[_0x26da('0x30')](_0xe43a35[_0x26da('0x2f')]);_0x121076[_0x26da('0x38')]=_[_0x26da('0x31')](_0x121076[_0x26da('0x32')],_0x121076[_0x26da('0x2f')]);_0x7a5084[_0x26da('0x33')]=_['intersection'](_0x121076[_0x26da('0x32')],qs[_0x26da('0x34')](_0xe43a35[_0x26da('0x2f')][_0x26da('0x34')]));_0x7a5084['attributes']=_0x7a5084[_0x26da('0x33')]['length']?_0x7a5084['attributes']:_0x121076[_0x26da('0x32')];_0x7a5084[_0x26da('0x35')]=qs[_0x26da('0x36')](_0xe43a35[_0x26da('0x2f')][_0x26da('0x36')]);_0x7a5084['where']=qs['filters'](_[_0x26da('0x39')](_0xe43a35[_0x26da('0x2f')],_0x121076[_0x26da('0x38')]));if(_0xe43a35[_0x26da('0x2f')][_0x26da('0x3a')]){_0x7a5084[_0x26da('0x37')]=_[_0x26da('0x3b')](_0x7a5084[_0x26da('0x37')],{'$or':_[_0x26da('0x29')](_0x7a5084[_0x26da('0x33')],function(_0x34a499){var _0x3fb383={};_0x3fb383[_0x34a499]={'$like':'%'+_0xe43a35[_0x26da('0x2f')][_0x26da('0x3a')]+'%'};return _0x3fb383;})});}_0x7a5084=_[_0x26da('0x3b')]({},_0x7a5084,_0xe43a35[_0x26da('0x3c')]);return _0x32532b['getDescriptions'](_0x7a5084);}})[_0x26da('0x23')](function(_0x5ebf92){if(_0x5ebf92){_0x567934=_0x5ebf92['length'];if(!_0xe43a35['query']['hasOwnProperty'](_0x26da('0x4b'))){_0x7a5084[_0x26da('0x1c')]=qs[_0x26da('0x1c')](_0xe43a35['query']['limit']);_0x7a5084[_0x26da('0x1a')]=qs['offset'](_0xe43a35[_0x26da('0x2f')][_0x26da('0x1a')]);}return _0x32532b[_0x26da('0x4d')](_0x7a5084);}})['then'](function(_0x530870){if(_0x530870){return _0x530870?{'count':_0x567934,'rows':_0x530870}:null;}})['then'](respondWithResult(_0x51f8e2,null))[_0x26da('0x40')](handleError(_0x51f8e2,null));};exports[_0x26da('0x4e')]=function(_0x3a5da9,_0x58e13b,_0x272802){var _0x4b28a5={};var _0x1b3c95={};var _0x56cd4f;var _0x4c4ad4;return db[_0x26da('0x2a')][_0x26da('0x47')]({'where':{'id':_0x3a5da9[_0x26da('0x41')]['id']}})[_0x26da('0x23')](handleEntityNotFound(_0x58e13b,null))[_0x26da('0x23')](function(_0x4f764e){if(_0x4f764e){_0x56cd4f=_0x4f764e;_0x1b3c95[_0x26da('0x32')]=_['keys'](db[_0x26da('0x4f')][_0x26da('0x2b')]);_0x1b3c95[_0x26da('0x2f')]=_[_0x26da('0x30')](_0x3a5da9[_0x26da('0x2f')]);_0x1b3c95['filters']=_['intersection'](_0x1b3c95[_0x26da('0x32')],_0x1b3c95['query']);_0x4b28a5[_0x26da('0x33')]=_['intersection'](_0x1b3c95['model'],qs[_0x26da('0x34')](_0x3a5da9[_0x26da('0x2f')][_0x26da('0x34')]));_0x4b28a5['attributes']=_0x4b28a5['attributes']['length']?_0x4b28a5[_0x26da('0x33')]:_0x1b3c95['model'];_0x4b28a5[_0x26da('0x35')]=qs[_0x26da('0x36')](_0x3a5da9['query'][_0x26da('0x36')]);_0x4b28a5['where']=qs[_0x26da('0x38')](_[_0x26da('0x39')](_0x3a5da9[_0x26da('0x2f')],_0x1b3c95[_0x26da('0x38')]));if(_0x3a5da9[_0x26da('0x2f')][_0x26da('0x3a')]){_0x4b28a5['where']=_[_0x26da('0x3b')](_0x4b28a5[_0x26da('0x37')],{'$or':_[_0x26da('0x29')](_0x4b28a5[_0x26da('0x33')],function(_0x55a81d){var _0x273ac1={};_0x273ac1[_0x55a81d]={'$like':'%'+_0x3a5da9[_0x26da('0x2f')][_0x26da('0x3a')]+'%'};return _0x273ac1;})});}_0x4b28a5=_[_0x26da('0x3b')]({},_0x4b28a5,_0x3a5da9[_0x26da('0x3c')]);return _0x56cd4f[_0x26da('0x4e')](_0x4b28a5);}})[_0x26da('0x23')](function(_0x51e03b){if(_0x51e03b){_0x4c4ad4=_0x51e03b[_0x26da('0x42')];if(!_0x3a5da9[_0x26da('0x2f')]['hasOwnProperty'](_0x26da('0x4b'))){_0x4b28a5[_0x26da('0x1c')]=qs[_0x26da('0x1c')](_0x3a5da9[_0x26da('0x2f')][_0x26da('0x1c')]);_0x4b28a5[_0x26da('0x1a')]=qs[_0x26da('0x1a')](_0x3a5da9[_0x26da('0x2f')][_0x26da('0x1a')]);}return _0x56cd4f['getTags'](_0x4b28a5);}})['then'](function(_0x347a37){if(_0x347a37){return _0x347a37?{'count':_0x4c4ad4,'rows':_0x347a37}:null;}})[_0x26da('0x23')](respondWithResult(_0x58e13b,null))[_0x26da('0x40')](handleError(_0x58e13b,null));};exports[_0x26da('0x50')]=function(_0x218435,_0xb1ad08,_0x4a9f5c){if(_0x218435[_0x26da('0x45')]['id']){delete _0x218435[_0x26da('0x45')]['id'];}return db[_0x26da('0x2a')][_0x26da('0x47')]({'where':{'id':_0x218435['params']['id']}})[_0x26da('0x23')](handleEntityNotFound(_0xb1ad08,null))['then'](function(_0xd80f9a){if(_0xd80f9a){return _0xd80f9a[_0x26da('0x50')](_0x218435[_0x26da('0x45')]['ids']||[]);}return null;})[_0x26da('0x23')](respondWithResult(_0xb1ad08,null))[_0x26da('0x40')](handleError(_0xb1ad08,null));};
\ No newline at end of file
+var _0x4fe2=['update','destroy','then','stack','name','index','map','ZendeskConfiguration','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','create','body','find','getFields','findOne','pick','getSubjects','ZendeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save'];(function(_0x7a8be9,_0x1caf02){var _0x4bab19=function(_0x539448){while(--_0x539448){_0x7a8be9['push'](_0x7a8be9['shift']());}};_0x4bab19(++_0x1caf02);}(_0x4fe2,0x86));var _0x24fe=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4fe2[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0x24fe('0x0'));var rimraf=require(_0x24fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x24fe('0x2'));var rp=require(_0x24fe('0x3'));var moment=require(_0x24fe('0x4'));var BPromise=require(_0x24fe('0x5'));var Mustache=require('mustache');var util=require(_0x24fe('0x6'));var path=require(_0x24fe('0x7'));var sox=require(_0x24fe('0x8'));var csv=require(_0x24fe('0x9'));var ejs=require(_0x24fe('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x24fe('0xb'));var crypto=require(_0x24fe('0xc'));var jsforce=require(_0x24fe('0xd'));var deskjs=require(_0x24fe('0xe'));var toCsv=require(_0x24fe('0x9'));var querystring=require(_0x24fe('0xf'));var Papa=require('papaparse');var Redis=require(_0x24fe('0x10'));var authService=require(_0x24fe('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x24fe('0x12'));var hardwareService=require(_0x24fe('0x13'));var logger=require(_0x24fe('0x14'))(_0x24fe('0x15'));var utils=require(_0x24fe('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x24fe('0x17'));var db=require(_0x24fe('0x18'))['db'];function respondWithStatusCode(_0x42b86d,_0x3ce163){_0x3ce163=_0x3ce163||0xcc;return function(_0x5a29be){if(_0x5a29be){return _0x42b86d[_0x24fe('0x19')](_0x3ce163);}return _0x42b86d[_0x24fe('0x1a')](_0x3ce163)[_0x24fe('0x1b')]();};}function respondWithResult(_0x38226e,_0x9d556a){_0x9d556a=_0x9d556a||0xc8;return function(_0x2c70e6){if(_0x2c70e6){return _0x38226e[_0x24fe('0x1a')](_0x9d556a)['json'](_0x2c70e6);}};}function respondWithFilteredResult(_0x537210,_0x3aab0d){return function(_0x57b988){if(_0x57b988){var _0x29543f=typeof _0x3aab0d['offset']===_0x24fe('0x1c')&&typeof _0x3aab0d[_0x24fe('0x1d')]===_0x24fe('0x1c');var _0x4cdfad=_0x57b988['count'];var _0x5c1fb2=_0x29543f?0x0:_0x3aab0d[_0x24fe('0x1e')];var _0x4ef8d6=_0x29543f?_0x57b988[_0x24fe('0x1f')]:_0x3aab0d[_0x24fe('0x1e')]+_0x3aab0d[_0x24fe('0x1d')];var _0x446eaa;if(_0x4ef8d6>=_0x4cdfad){_0x4ef8d6=_0x4cdfad;_0x446eaa=0xc8;}else{_0x446eaa=0xce;}_0x537210[_0x24fe('0x1a')](_0x446eaa);return _0x537210[_0x24fe('0x20')](_0x24fe('0x21'),_0x5c1fb2+'-'+_0x4ef8d6+'/'+_0x4cdfad)[_0x24fe('0x22')](_0x57b988);}return null;};}function patchUpdates(_0x55bb7d){return function(_0x4a2ef1){try{jsonpatch[_0x24fe('0x23')](_0x4a2ef1,_0x55bb7d,!![]);}catch(_0xaebc87){return BPromise[_0x24fe('0x24')](_0xaebc87);}return _0x4a2ef1[_0x24fe('0x25')]();};}function saveUpdates(_0x1e1faa,_0x4c8d34){return function(_0x3ed356){if(_0x3ed356){return _0x3ed356[_0x24fe('0x26')](_0x1e1faa)['then'](function(_0x43e4fa){return _0x43e4fa;});}return null;};}function removeEntity(_0xe6fcce,_0x1c38e7){return function(_0x5ec55c){if(_0x5ec55c){return _0x5ec55c[_0x24fe('0x27')]()[_0x24fe('0x28')](function(){_0xe6fcce[_0x24fe('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbaaec9,_0x2335cc){return function(_0x51f38c){if(!_0x51f38c){_0xbaaec9['sendStatus'](0x194);}return _0x51f38c;};}function handleError(_0x3661d0,_0x52180a){_0x52180a=_0x52180a||0x1f4;return function(_0x523755){logger['error'](_0x523755[_0x24fe('0x29')]);if(_0x523755[_0x24fe('0x2a')]){delete _0x523755[_0x24fe('0x2a')];}_0x3661d0[_0x24fe('0x1a')](_0x52180a)['send'](_0x523755);};}exports[_0x24fe('0x2b')]=function(_0x561d16,_0x37d388){var _0xb8d9b9={},_0x37a028={},_0x3bf101={'count':0x0,'rows':[]};var _0x55347d=_[_0x24fe('0x2c')](db[_0x24fe('0x2d')]['rawAttributes'],function(_0x201866){return{'name':_0x201866['fieldName'],'type':_0x201866[_0x24fe('0x2e')][_0x24fe('0x2f')]};});_0x37a028['model']=_[_0x24fe('0x2c')](_0x55347d,'name');_0x37a028['query']=_['keys'](_0x561d16[_0x24fe('0x30')]);_0x37a028[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x37a028['model'],_0x37a028[_0x24fe('0x30')]);_0xb8d9b9['attributes']=_['intersection'](_0x37a028[_0x24fe('0x33')],qs[_0x24fe('0x34')](_0x561d16[_0x24fe('0x30')][_0x24fe('0x34')]));_0xb8d9b9[_0x24fe('0x35')]=_0xb8d9b9['attributes'][_0x24fe('0x36')]?_0xb8d9b9['attributes']:_0x37a028[_0x24fe('0x33')];if(!_0x561d16[_0x24fe('0x30')][_0x24fe('0x37')](_0x24fe('0x38'))){_0xb8d9b9[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x561d16[_0x24fe('0x30')][_0x24fe('0x1d')]);_0xb8d9b9[_0x24fe('0x1e')]=qs[_0x24fe('0x1e')](_0x561d16[_0x24fe('0x30')]['offset']);}_0xb8d9b9[_0x24fe('0x39')]=qs[_0x24fe('0x3a')](_0x561d16[_0x24fe('0x30')][_0x24fe('0x3a')]);_0xb8d9b9['where']=qs[_0x24fe('0x31')](_['pick'](_0x561d16['query'],_0x37a028['filters']),_0x55347d);if(_0x561d16[_0x24fe('0x30')]['filter']){_0xb8d9b9[_0x24fe('0x3b')]=_[_0x24fe('0x3c')](_0xb8d9b9[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x55347d,function(_0x440185){if(_0x440185[_0x24fe('0x2e')]!==_0x24fe('0x3d')){var _0x353e5d={};_0x353e5d[_0x440185[_0x24fe('0x2a')]]={'$like':'%'+_0x561d16[_0x24fe('0x30')][_0x24fe('0x3e')]+'%'};return _0x353e5d;}})});}_0xb8d9b9=_[_0x24fe('0x3c')]({},_0xb8d9b9,_0x561d16[_0x24fe('0x3f')]);var _0x5435c3={'where':_0xb8d9b9[_0x24fe('0x3b')]};return db[_0x24fe('0x2d')]['count'](_0x5435c3)[_0x24fe('0x28')](function(_0x3f8301){_0x3bf101['count']=_0x3f8301;if(_0x561d16[_0x24fe('0x30')][_0x24fe('0x40')]){_0xb8d9b9[_0x24fe('0x41')]=[{'all':!![]}];}return db[_0x24fe('0x2d')][_0x24fe('0x42')](_0xb8d9b9);})[_0x24fe('0x28')](function(_0x55dc6f){_0x3bf101[_0x24fe('0x43')]=_0x55dc6f;return _0x3bf101;})[_0x24fe('0x28')](respondWithFilteredResult(_0x37d388,_0xb8d9b9))[_0x24fe('0x44')](handleError(_0x37d388,null));};exports[_0x24fe('0x45')]=function(_0x3cdaf5,_0x454923){var _0x4ed660={'raw':![],'where':{'id':_0x3cdaf5[_0x24fe('0x46')]['id']}},_0x31279e={};_0x31279e['model']=_[_0x24fe('0x47')](db[_0x24fe('0x2d')][_0x24fe('0x48')]);_0x31279e['query']=_[_0x24fe('0x47')](_0x3cdaf5[_0x24fe('0x30')]);_0x31279e[_0x24fe('0x31')]=_['intersection'](_0x31279e['model'],_0x31279e[_0x24fe('0x30')]);_0x4ed660['attributes']=_[_0x24fe('0x32')](_0x31279e[_0x24fe('0x33')],qs['fields'](_0x3cdaf5[_0x24fe('0x30')][_0x24fe('0x34')]));_0x4ed660[_0x24fe('0x35')]=_0x4ed660[_0x24fe('0x35')][_0x24fe('0x36')]?_0x4ed660[_0x24fe('0x35')]:_0x31279e[_0x24fe('0x33')];if(_0x3cdaf5[_0x24fe('0x30')][_0x24fe('0x40')]){_0x4ed660[_0x24fe('0x41')]=[{'all':!![]}];}_0x4ed660=_['merge']({},_0x4ed660,_0x3cdaf5[_0x24fe('0x3f')]);return db[_0x24fe('0x2d')]['find'](_0x4ed660)[_0x24fe('0x28')](handleEntityNotFound(_0x454923,null))[_0x24fe('0x28')](respondWithResult(_0x454923,null))['catch'](handleError(_0x454923,null));};exports[_0x24fe('0x49')]=function(_0x9cab68,_0x38907c){return db[_0x24fe('0x2d')][_0x24fe('0x49')](_0x9cab68['body'],{})['then'](respondWithResult(_0x38907c,0xc9))[_0x24fe('0x44')](handleError(_0x38907c,null));};exports[_0x24fe('0x26')]=function(_0x59746f,_0x556117){if(_0x59746f[_0x24fe('0x4a')]['id']){delete _0x59746f['body']['id'];}return db[_0x24fe('0x2d')][_0x24fe('0x4b')]({'where':{'id':_0x59746f[_0x24fe('0x46')]['id']}})['then'](handleEntityNotFound(_0x556117,null))[_0x24fe('0x28')](saveUpdates(_0x59746f[_0x24fe('0x4a')],null))[_0x24fe('0x28')](respondWithResult(_0x556117,null))['catch'](handleError(_0x556117,null));};exports[_0x24fe('0x27')]=function(_0x477e44,_0xaf1a12){return db[_0x24fe('0x2d')][_0x24fe('0x4b')]({'where':{'id':_0x477e44['params']['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0xaf1a12,null))['then'](removeEntity(_0xaf1a12,null))['catch'](handleError(_0xaf1a12,null));};exports[_0x24fe('0x4c')]=function(_0x21b54f,_0x3906f8,_0x343de6){var _0x4bbae7={};var _0x595428={};var _0x595bef;var _0x3f7f75;return db['ZendeskConfiguration'][_0x24fe('0x4d')]({'where':{'id':_0x21b54f[_0x24fe('0x46')]['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x3906f8,null))['then'](function(_0x381080){if(_0x381080){_0x595bef=_0x381080;_0x595428[_0x24fe('0x33')]=_[_0x24fe('0x47')](db['ZendeskField'][_0x24fe('0x48')]);_0x595428['query']=_['keys'](_0x21b54f['query']);_0x595428[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x595428['model'],_0x595428[_0x24fe('0x30')]);_0x4bbae7['attributes']=_[_0x24fe('0x32')](_0x595428['model'],qs[_0x24fe('0x34')](_0x21b54f[_0x24fe('0x30')][_0x24fe('0x34')]));_0x4bbae7['attributes']=_0x4bbae7['attributes'][_0x24fe('0x36')]?_0x4bbae7['attributes']:_0x595428['model'];_0x4bbae7[_0x24fe('0x39')]=qs[_0x24fe('0x3a')](_0x21b54f['query']['sort']);_0x4bbae7[_0x24fe('0x3b')]=qs[_0x24fe('0x31')](_[_0x24fe('0x4e')](_0x21b54f['query'],_0x595428[_0x24fe('0x31')]));if(_0x21b54f[_0x24fe('0x30')][_0x24fe('0x3e')]){_0x4bbae7['where']=_['merge'](_0x4bbae7[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x4bbae7[_0x24fe('0x35')],function(_0x21f382){var _0x236df0={};_0x236df0[_0x21f382]={'$like':'%'+_0x21b54f[_0x24fe('0x30')]['filter']+'%'};return _0x236df0;})});}_0x4bbae7=_[_0x24fe('0x3c')]({},_0x4bbae7,_0x21b54f[_0x24fe('0x3f')]);return _0x595bef['getFields'](_0x4bbae7);}})[_0x24fe('0x28')](function(_0x4701cf){if(_0x4701cf){_0x3f7f75=_0x4701cf[_0x24fe('0x36')];if(!_0x21b54f[_0x24fe('0x30')][_0x24fe('0x37')]('nolimit')){_0x4bbae7[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x21b54f['query'][_0x24fe('0x1d')]);_0x4bbae7[_0x24fe('0x1e')]=qs['offset'](_0x21b54f[_0x24fe('0x30')][_0x24fe('0x1e')]);}return _0x595bef['getFields'](_0x4bbae7);}})[_0x24fe('0x28')](function(_0x586948){if(_0x586948){return _0x586948?{'count':_0x3f7f75,'rows':_0x586948}:null;}})[_0x24fe('0x28')](respondWithResult(_0x3906f8,null))['catch'](handleError(_0x3906f8,null));};exports[_0x24fe('0x4f')]=function(_0x5d9e3d,_0x5a7f97,_0x43bee0){var _0x377e47={};var _0x5012df={};var _0xac54ed;var _0x4512a5;return db[_0x24fe('0x2d')][_0x24fe('0x4d')]({'where':{'id':_0x5d9e3d[_0x24fe('0x46')]['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x5a7f97,null))[_0x24fe('0x28')](function(_0x1cdacd){if(_0x1cdacd){_0xac54ed=_0x1cdacd;_0x5012df[_0x24fe('0x33')]=_[_0x24fe('0x47')](db[_0x24fe('0x50')][_0x24fe('0x48')]);_0x5012df[_0x24fe('0x30')]=_[_0x24fe('0x47')](_0x5d9e3d[_0x24fe('0x30')]);_0x5012df[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x5012df[_0x24fe('0x33')],_0x5012df[_0x24fe('0x30')]);_0x377e47['attributes']=_[_0x24fe('0x32')](_0x5012df[_0x24fe('0x33')],qs['fields'](_0x5d9e3d['query'][_0x24fe('0x34')]));_0x377e47[_0x24fe('0x35')]=_0x377e47['attributes'][_0x24fe('0x36')]?_0x377e47['attributes']:_0x5012df['model'];_0x377e47['order']=qs['sort'](_0x5d9e3d['query'][_0x24fe('0x3a')]);_0x377e47['where']=qs[_0x24fe('0x31')](_[_0x24fe('0x4e')](_0x5d9e3d[_0x24fe('0x30')],_0x5012df[_0x24fe('0x31')]));if(_0x5d9e3d[_0x24fe('0x30')][_0x24fe('0x3e')]){_0x377e47[_0x24fe('0x3b')]=_[_0x24fe('0x3c')](_0x377e47[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x377e47[_0x24fe('0x35')],function(_0x429ac6){var _0x59798f={};_0x59798f[_0x429ac6]={'$like':'%'+_0x5d9e3d[_0x24fe('0x30')][_0x24fe('0x3e')]+'%'};return _0x59798f;})});}_0x377e47=_[_0x24fe('0x3c')]({},_0x377e47,_0x5d9e3d[_0x24fe('0x3f')]);return _0xac54ed[_0x24fe('0x4f')](_0x377e47);}})['then'](function(_0x179e87){if(_0x179e87){_0x4512a5=_0x179e87['length'];if(!_0x5d9e3d[_0x24fe('0x30')][_0x24fe('0x37')](_0x24fe('0x38'))){_0x377e47[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x5d9e3d['query'][_0x24fe('0x1d')]);_0x377e47['offset']=qs[_0x24fe('0x1e')](_0x5d9e3d['query'][_0x24fe('0x1e')]);}return _0xac54ed['getSubjects'](_0x377e47);}})[_0x24fe('0x28')](function(_0x445d31){if(_0x445d31){return _0x445d31?{'count':_0x4512a5,'rows':_0x445d31}:null;}})['then'](respondWithResult(_0x5a7f97,null))[_0x24fe('0x44')](handleError(_0x5a7f97,null));};exports['getDescriptions']=function(_0x3cb378,_0x2dea1b,_0x156e46){var _0x2cd785={};var _0x1a1c15={};var _0xdd690e;var _0x3e883e;return db[_0x24fe('0x2d')]['findOne']({'where':{'id':_0x3cb378['params']['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x2dea1b,null))[_0x24fe('0x28')](function(_0x23d0c4){if(_0x23d0c4){_0xdd690e=_0x23d0c4;_0x1a1c15[_0x24fe('0x33')]=_[_0x24fe('0x47')](db[_0x24fe('0x50')][_0x24fe('0x48')]);_0x1a1c15[_0x24fe('0x30')]=_[_0x24fe('0x47')](_0x3cb378[_0x24fe('0x30')]);_0x1a1c15[_0x24fe('0x31')]=_[_0x24fe('0x32')](_0x1a1c15[_0x24fe('0x33')],_0x1a1c15[_0x24fe('0x30')]);_0x2cd785[_0x24fe('0x35')]=_[_0x24fe('0x32')](_0x1a1c15[_0x24fe('0x33')],qs[_0x24fe('0x34')](_0x3cb378['query'][_0x24fe('0x34')]));_0x2cd785['attributes']=_0x2cd785[_0x24fe('0x35')][_0x24fe('0x36')]?_0x2cd785[_0x24fe('0x35')]:_0x1a1c15['model'];_0x2cd785[_0x24fe('0x39')]=qs['sort'](_0x3cb378[_0x24fe('0x30')][_0x24fe('0x3a')]);_0x2cd785[_0x24fe('0x3b')]=qs[_0x24fe('0x31')](_[_0x24fe('0x4e')](_0x3cb378[_0x24fe('0x30')],_0x1a1c15[_0x24fe('0x31')]));if(_0x3cb378['query'][_0x24fe('0x3e')]){_0x2cd785[_0x24fe('0x3b')]=_[_0x24fe('0x3c')](_0x2cd785[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x2cd785[_0x24fe('0x35')],function(_0x5eaa76){var _0x3f5ca4={};_0x3f5ca4[_0x5eaa76]={'$like':'%'+_0x3cb378[_0x24fe('0x30')][_0x24fe('0x3e')]+'%'};return _0x3f5ca4;})});}_0x2cd785=_[_0x24fe('0x3c')]({},_0x2cd785,_0x3cb378[_0x24fe('0x3f')]);return _0xdd690e[_0x24fe('0x51')](_0x2cd785);}})['then'](function(_0x6af2c3){if(_0x6af2c3){_0x3e883e=_0x6af2c3['length'];if(!_0x3cb378[_0x24fe('0x30')][_0x24fe('0x37')](_0x24fe('0x38'))){_0x2cd785[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x3cb378[_0x24fe('0x30')][_0x24fe('0x1d')]);_0x2cd785[_0x24fe('0x1e')]=qs[_0x24fe('0x1e')](_0x3cb378[_0x24fe('0x30')][_0x24fe('0x1e')]);}return _0xdd690e['getDescriptions'](_0x2cd785);}})[_0x24fe('0x28')](function(_0x3b6d50){if(_0x3b6d50){return _0x3b6d50?{'count':_0x3e883e,'rows':_0x3b6d50}:null;}})[_0x24fe('0x28')](respondWithResult(_0x2dea1b,null))[_0x24fe('0x44')](handleError(_0x2dea1b,null));};exports[_0x24fe('0x52')]=function(_0x3aa2f6,_0x8ae034,_0x28567d){var _0x225e68={};var _0x4a91d1={};var _0x5daa4e;var _0x1ddf3d;return db['ZendeskConfiguration'][_0x24fe('0x4d')]({'where':{'id':_0x3aa2f6[_0x24fe('0x46')]['id']}})[_0x24fe('0x28')](handleEntityNotFound(_0x8ae034,null))['then'](function(_0x5db460){if(_0x5db460){_0x5daa4e=_0x5db460;_0x4a91d1[_0x24fe('0x33')]=_['keys'](db[_0x24fe('0x53')][_0x24fe('0x48')]);_0x4a91d1[_0x24fe('0x30')]=_['keys'](_0x3aa2f6[_0x24fe('0x30')]);_0x4a91d1[_0x24fe('0x31')]=_['intersection'](_0x4a91d1['model'],_0x4a91d1[_0x24fe('0x30')]);_0x225e68[_0x24fe('0x35')]=_['intersection'](_0x4a91d1['model'],qs['fields'](_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x34')]));_0x225e68[_0x24fe('0x35')]=_0x225e68[_0x24fe('0x35')][_0x24fe('0x36')]?_0x225e68['attributes']:_0x4a91d1[_0x24fe('0x33')];_0x225e68['order']=qs[_0x24fe('0x3a')](_0x3aa2f6['query'][_0x24fe('0x3a')]);_0x225e68[_0x24fe('0x3b')]=qs['filters'](_['pick'](_0x3aa2f6['query'],_0x4a91d1['filters']));if(_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x3e')]){_0x225e68['where']=_[_0x24fe('0x3c')](_0x225e68[_0x24fe('0x3b')],{'$or':_[_0x24fe('0x2c')](_0x225e68[_0x24fe('0x35')],function(_0x20eef9){var _0x3585e9={};_0x3585e9[_0x20eef9]={'$like':'%'+_0x3aa2f6['query'][_0x24fe('0x3e')]+'%'};return _0x3585e9;})});}_0x225e68=_['merge']({},_0x225e68,_0x3aa2f6['options']);return _0x5daa4e[_0x24fe('0x52')](_0x225e68);}})[_0x24fe('0x28')](function(_0x39854c){if(_0x39854c){_0x1ddf3d=_0x39854c[_0x24fe('0x36')];if(!_0x3aa2f6['query'][_0x24fe('0x37')](_0x24fe('0x38'))){_0x225e68[_0x24fe('0x1d')]=qs[_0x24fe('0x1d')](_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x1d')]);_0x225e68[_0x24fe('0x1e')]=qs['offset'](_0x3aa2f6[_0x24fe('0x30')][_0x24fe('0x1e')]);}return _0x5daa4e[_0x24fe('0x52')](_0x225e68);}})['then'](function(_0x49a6d5){if(_0x49a6d5){return _0x49a6d5?{'count':_0x1ddf3d,'rows':_0x49a6d5}:null;}})['then'](respondWithResult(_0x8ae034,null))['catch'](handleError(_0x8ae034,null));};exports['setTags']=function(_0x43dab6,_0x213379,_0x56a199){if(_0x43dab6[_0x24fe('0x4a')]['id']){delete _0x43dab6[_0x24fe('0x4a')]['id'];}return db[_0x24fe('0x2d')]['findOne']({'where':{'id':_0x43dab6[_0x24fe('0x46')]['id']}})['then'](handleEntityNotFound(_0x213379,null))['then'](function(_0x26d1cc){if(_0x26d1cc){return _0x26d1cc[_0x24fe('0x54')](_0x43dab6[_0x24fe('0x4a')][_0x24fe('0x55')]||[]);}return null;})[_0x24fe('0x28')](respondWithResult(_0x213379,null))['catch'](handleError(_0x213379,null));};
\ No newline at end of file
index 99b5f03..fad354d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77e6=['path','../../config/environment','./intZendeskConfiguration.attributes','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x1bc79b,_0x46d6f6){var _0x5eb89f=function(_0x392943){while(--_0x392943){_0x1bc79b['push'](_0x1bc79b['shift']());}};_0x5eb89f(++_0x46d6f6);}(_0x77e6,0x1a6));var _0x677e=function(_0x46f1ea,_0x234e59){_0x46f1ea=_0x46f1ea-0x0;var _0x10a3d5=_0x77e6[_0x46f1ea];return _0x10a3d5;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var logger=require(_0x677e('0x2'))(_0x677e('0x3'));var moment=require(_0x677e('0x4'));var BPromise=require(_0x677e('0x5'));var rp=require(_0x677e('0x6'));var fs=require('fs');var path=require(_0x677e('0x7'));var rimraf=require('rimraf');var config=require(_0x677e('0x8'));var attributes=require(_0x677e('0x9'));module['exports']=function(_0x18c5e1,_0x591b21){return _0x18c5e1[_0x677e('0xa')]('ZendeskConfiguration',attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe605=['exports','define','int_zendesk_configurations','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x27b32e,_0xf515b4){var _0x644883=function(_0x32cd35){while(--_0x32cd35){_0x27b32e['push'](_0x27b32e['shift']());}};_0x644883(++_0xf515b4);}(_0xe605,0x92));var _0x5e60=function(_0x57bc99,_0x3ab973){_0x57bc99=_0x57bc99-0x0;var _0x55ab4c=_0xe605[_0x57bc99];return _0x55ab4c;};'use strict';var _=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var logger=require('../../config/logger')(_0x5e60('0x2'));var moment=require(_0x5e60('0x3'));var BPromise=require(_0x5e60('0x4'));var rp=require(_0x5e60('0x5'));var fs=require('fs');var path=require(_0x5e60('0x6'));var rimraf=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var attributes=require(_0x5e60('0x9'));module[_0x5e60('0xa')]=function(_0xc41535,_0x1d4a08){return _0xc41535[_0x5e60('0xb')]('ZendeskConfiguration',attributes,{'tableName':_0x5e60('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed9b46a..97e3005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7db=['debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x5f04d2,_0x24bb7f){var _0x436a6f=function(_0x4e27e4){while(--_0x4e27e4){_0x5f04d2['push'](_0x5f04d2['shift']());}};_0x436a6f(++_0x24bb7f);}(_0xb7db,0x1e9));var _0xbb7d=function(_0x3f9e4f,_0x248f80){_0x3f9e4f=_0x3f9e4f-0x0;var _0x44ff2f=_0xb7db[_0x3f9e4f];return _0x44ff2f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbb7d('0x0'));var BPromise=require(_0xbb7d('0x1'));var rs=require(_0xbb7d('0x2'));var fs=require('fs');var Redis=require(_0xbb7d('0x3'));var db=require(_0xbb7d('0x4'))['db'];var utils=require(_0xbb7d('0x5'));var logger=require(_0xbb7d('0x6'))('rpc');var config=require(_0xbb7d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbb7d('0x8')][_0xbb7d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x38a2bd,_0x2c87a5,_0x24e55e){return new BPromise(function(_0x958d8b,_0x45ba5c){return client[_0xbb7d('0xa')](_0x38a2bd,_0x24e55e)[_0xbb7d('0xb')](function(_0x47530f){logger[_0xbb7d('0xc')](_0xbb7d('0xd'),_0x2c87a5,_0xbb7d('0xe'));logger[_0xbb7d('0xf')](_0xbb7d('0x10'),_0x2c87a5,_0xbb7d('0xe'),JSON[_0xbb7d('0x11')](_0x47530f));if(_0x47530f[_0xbb7d('0x12')]){if(_0x47530f[_0xbb7d('0x12')]['code']===0x1f4){logger[_0xbb7d('0x12')](_0xbb7d('0xd'),_0x2c87a5,_0x47530f[_0xbb7d('0x12')][_0xbb7d('0x13')]);return _0x45ba5c(_0x47530f['error'][_0xbb7d('0x13')]);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x2c87a5,_0x47530f['error'][_0xbb7d('0x13')]);return _0x958d8b(_0x47530f['error'][_0xbb7d('0x13')]);}else{logger[_0xbb7d('0xc')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2c87a5,_0xbb7d('0xe'));_0x958d8b(_0x47530f['result'][_0xbb7d('0x13')]);}})[_0xbb7d('0x14')](function(_0x5a03cf){logger[_0xbb7d('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2c87a5,_0x5a03cf);_0x45ba5c(_0x5a03cf);});});}
\ No newline at end of file
+var _0xd289=['result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','request','then','info','request\x20sent','debug','stringify','error','ZendeskConfiguration,\x20%s,\x20%s','message'];(function(_0x38e5a3,_0x51c02c){var _0x1cdda3=function(_0x1fd301){while(--_0x1fd301){_0x38e5a3['push'](_0x38e5a3['shift']());}};_0x1cdda3(++_0x51c02c);}(_0xd289,0x1cd));var _0x9d28=function(_0x26236f,_0x36916c){_0x26236f=_0x26236f-0x0;var _0x11c59f=_0xd289[_0x26236f];return _0x11c59f;};'use strict';var _=require(_0x9d28('0x0'));var util=require(_0x9d28('0x1'));var moment=require(_0x9d28('0x2'));var BPromise=require(_0x9d28('0x3'));var rs=require(_0x9d28('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d28('0x5'))['db'];var utils=require(_0x9d28('0x6'));var logger=require(_0x9d28('0x7'))(_0x9d28('0x8'));var config=require(_0x9d28('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x117c32,_0x451f74,_0x3f0206){return new BPromise(function(_0x38b4e3,_0x280f7b){return client[_0x9d28('0xa')](_0x117c32,_0x3f0206)[_0x9d28('0xb')](function(_0x29643d){logger[_0x9d28('0xc')]('ZendeskConfiguration,\x20%s,\x20%s',_0x451f74,_0x9d28('0xd'));logger[_0x9d28('0xe')]('ZendeskConfiguration,\x20%s,\x20%s,\x20%s',_0x451f74,_0x9d28('0xd'),JSON[_0x9d28('0xf')](_0x29643d));if(_0x29643d['error']){if(_0x29643d[_0x9d28('0x10')]['code']===0x1f4){logger[_0x9d28('0x10')](_0x9d28('0x11'),_0x451f74,_0x29643d[_0x9d28('0x10')][_0x9d28('0x12')]);return _0x280f7b(_0x29643d[_0x9d28('0x10')][_0x9d28('0x12')]);}logger[_0x9d28('0x10')](_0x9d28('0x11'),_0x451f74,_0x29643d[_0x9d28('0x10')][_0x9d28('0x12')]);return _0x38b4e3(_0x29643d[_0x9d28('0x10')]['message']);}else{logger[_0x9d28('0xc')](_0x9d28('0x11'),_0x451f74,_0x9d28('0xd'));_0x38b4e3(_0x29643d[_0x9d28('0x13')][_0x9d28('0x12')]);}})['catch'](function(_0x33b461){logger[_0x9d28('0x10')](_0x9d28('0x11'),_0x451f74,_0x33b461);_0x280f7b(_0x33b461);});});}
\ No newline at end of file
index 06e3771..53150ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cbd=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskField.controller','isAuthenticated','index','get','/:id','show','post','create','put'];(function(_0x362e90,_0x3907a2){var _0x5d595f=function(_0x2cb8c9){while(--_0x2cb8c9){_0x362e90['push'](_0x362e90['shift']());}};_0x5d595f(++_0x3907a2);}(_0x4cbd,0x1ed));var _0xd4cb=function(_0x2e93d0,_0x5d6526){_0x2e93d0=_0x2e93d0-0x0;var _0x2a88a6=_0x4cbd[_0x2e93d0];return _0x2a88a6;};'use strict';var multer=require('multer');var util=require(_0xd4cb('0x0'));var path=require(_0xd4cb('0x1'));var timeout=require(_0xd4cb('0x2'));var express=require('express');var router=express[_0xd4cb('0x3')]();var fs_extra=require(_0xd4cb('0x4'));var auth=require(_0xd4cb('0x5'));var interaction=require(_0xd4cb('0x6'));var config=require(_0xd4cb('0x7'));var controller=require(_0xd4cb('0x8'));router['get']('/',auth[_0xd4cb('0x9')](),controller[_0xd4cb('0xa')]);router[_0xd4cb('0xb')](_0xd4cb('0xc'),auth['isAuthenticated'](),controller[_0xd4cb('0xd')]);router[_0xd4cb('0xe')]('/',auth[_0xd4cb('0x9')](),controller[_0xd4cb('0xf')]);router[_0xd4cb('0x10')](_0xd4cb('0xc'),auth[_0xd4cb('0x9')](),controller['update']);router['delete'](_0xd4cb('0xc'),auth[_0xd4cb('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7d8a=['get','/:id','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','isAuthenticated','index'];(function(_0x337388,_0x4aa66c){var _0x406db9=function(_0x51e489){while(--_0x51e489){_0x337388['push'](_0x337388['shift']());}};_0x406db9(++_0x4aa66c);}(_0x7d8a,0xff));var _0xa7d8=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0x7d8a[_0x28aea5];return _0x6a55f9;};'use strict';var multer=require(_0xa7d8('0x0'));var util=require(_0xa7d8('0x1'));var path=require('path');var timeout=require(_0xa7d8('0x2'));var express=require(_0xa7d8('0x3'));var router=express[_0xa7d8('0x4')]();var fs_extra=require(_0xa7d8('0x5'));var auth=require(_0xa7d8('0x6'));var interaction=require(_0xa7d8('0x7'));var config=require('../../config/environment');var controller=require(_0xa7d8('0x8'));router['get']('/',auth[_0xa7d8('0x9')](),controller[_0xa7d8('0xa')]);router[_0xa7d8('0xb')](_0xa7d8('0xc'),auth[_0xa7d8('0x9')](),controller['show']);router[_0xa7d8('0xd')]('/',auth[_0xa7d8('0x9')](),controller[_0xa7d8('0xe')]);router[_0xa7d8('0xf')]('/:id',auth[_0xa7d8('0x9')](),controller[_0xa7d8('0x10')]);router[_0xa7d8('0x11')](_0xa7d8('0xc'),auth['isAuthenticated'](),controller[_0xa7d8('0x12')]);module['exports']=router;
\ No newline at end of file
index 6afa29d..264fb9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x805f=['customVariable','picklist','string','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x95ff77,_0x364106){var _0x4c2e64=function(_0x19f7aa){while(--_0x19f7aa){_0x95ff77['push'](_0x95ff77['shift']());}};_0x4c2e64(++_0x364106);}(_0x805f,0x1c5));var _0xf805=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x805f[_0x138adb];return _0x1b27f2;};'use strict';var Sequelize=require(_0xf805('0x0'));module[_0xf805('0x1')]={'type':{'type':Sequelize[_0xf805('0x2')]('string','variable',_0xf805('0x3'),'keyValue',_0xf805('0x4')),'defaultValue':_0xf805('0x5')},'content':{'type':Sequelize[_0xf805('0x6')]},'key':{'type':Sequelize[_0xf805('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0xf805('0x5'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xf805('0x6')]},'idField':{'type':Sequelize[_0xf805('0x6')]},'nameField':{'type':Sequelize[_0xf805('0x6')]},'customField':{'type':Sequelize[_0xf805('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf805('0x6')]}};
\ No newline at end of file
+var _0x14af=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0x14af,0x85));var _0xf14a=function(_0x4b216b,_0xa2909c){_0x4b216b=_0x4b216b-0x0;var _0x375163=_0x14af[_0x4b216b];return _0x375163;};'use strict';var Sequelize=require(_0xf14a('0x0'));module[_0xf14a('0x1')]={'type':{'type':Sequelize[_0xf14a('0x2')](_0xf14a('0x3'),_0xf14a('0x4'),_0xf14a('0x5'),_0xf14a('0x6'),_0xf14a('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xf14a('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0xf14a('0x3'),_0xf14a('0x4'),_0xf14a('0x5'))},'keyContent':{'type':Sequelize[_0xf14a('0x8')]},'idField':{'type':Sequelize[_0xf14a('0x8')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xf14a('0x8')]}};
\ No newline at end of file
index 0d56e59..506be2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0e4=['rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','findAll','rows','catch','show','params','find','create','body','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','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','count','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','ZendeskField'];(function(_0x572618,_0x287468){var _0x113a44=function(_0x2d4e17){while(--_0x2d4e17){_0x572618['push'](_0x572618['shift']());}};_0x113a44(++_0x287468);}(_0xa0e4,0x1a3));var _0x4a0e=function(_0x1780f8,_0x11ba93){_0x1780f8=_0x1780f8-0x0;var _0x33a410=_0xa0e4[_0x1780f8];return _0x33a410;};'use strict';var emlformat=require(_0x4a0e('0x0'));var rimraf=require(_0x4a0e('0x1'));var zipdir=require(_0x4a0e('0x2'));var jsonpatch=require(_0x4a0e('0x3'));var rp=require(_0x4a0e('0x4'));var moment=require(_0x4a0e('0x5'));var BPromise=require(_0x4a0e('0x6'));var Mustache=require(_0x4a0e('0x7'));var util=require(_0x4a0e('0x8'));var path=require(_0x4a0e('0x9'));var sox=require(_0x4a0e('0xa'));var csv=require(_0x4a0e('0xb'));var ejs=require(_0x4a0e('0xc'));var fs=require('fs');var fs_extra=require(_0x4a0e('0xd'));var _=require(_0x4a0e('0xe'));var squel=require('squel');var crypto=require(_0x4a0e('0xf'));var jsforce=require(_0x4a0e('0x10'));var deskjs=require(_0x4a0e('0x11'));var toCsv=require(_0x4a0e('0xb'));var querystring=require(_0x4a0e('0x12'));var Papa=require(_0x4a0e('0x13'));var Redis=require('ioredis');var authService=require(_0x4a0e('0x14'));var qs=require(_0x4a0e('0x15'));var as=require(_0x4a0e('0x16'));var hardwareService=require(_0x4a0e('0x17'));var logger=require(_0x4a0e('0x18'))(_0x4a0e('0x19'));var utils=require('../../config/utils');var config=require(_0x4a0e('0x1a'));var licenseUtil=require(_0x4a0e('0x1b'));var db=require(_0x4a0e('0x1c'))['db'];function respondWithStatusCode(_0x12205e,_0x59f8fd){_0x59f8fd=_0x59f8fd||0xcc;return function(_0x4fa34e){if(_0x4fa34e){return _0x12205e[_0x4a0e('0x1d')](_0x59f8fd);}return _0x12205e['status'](_0x59f8fd)[_0x4a0e('0x1e')]();};}function respondWithResult(_0x1145d1,_0x1dfdc3){_0x1dfdc3=_0x1dfdc3||0xc8;return function(_0x372fc4){if(_0x372fc4){return _0x1145d1[_0x4a0e('0x1f')](_0x1dfdc3)[_0x4a0e('0x20')](_0x372fc4);}};}function respondWithFilteredResult(_0x458ae4,_0x286c99){return function(_0x4ba600){if(_0x4ba600){var _0x2ebf63=typeof _0x286c99[_0x4a0e('0x21')]==='undefined'&&typeof _0x286c99[_0x4a0e('0x22')]==='undefined';var _0xaac16f=_0x4ba600[_0x4a0e('0x23')];var _0x12306a=_0x2ebf63?0x0:_0x286c99[_0x4a0e('0x21')];var _0x77fe50=_0x2ebf63?_0x4ba600[_0x4a0e('0x23')]:_0x286c99[_0x4a0e('0x21')]+_0x286c99[_0x4a0e('0x22')];var _0x2b957f;if(_0x77fe50>=_0xaac16f){_0x77fe50=_0xaac16f;_0x2b957f=0xc8;}else{_0x2b957f=0xce;}_0x458ae4[_0x4a0e('0x1f')](_0x2b957f);return _0x458ae4['set']('Content-Range',_0x12306a+'-'+_0x77fe50+'/'+_0xaac16f)['json'](_0x4ba600);}return null;};}function patchUpdates(_0x198c67){return function(_0x49511b){try{jsonpatch[_0x4a0e('0x24')](_0x49511b,_0x198c67,!![]);}catch(_0x3d2005){return BPromise[_0x4a0e('0x25')](_0x3d2005);}return _0x49511b[_0x4a0e('0x26')]();};}function saveUpdates(_0x365551,_0xfa3778){return function(_0x3b86b6){if(_0x3b86b6){return _0x3b86b6[_0x4a0e('0x27')](_0x365551)['then'](function(_0x389d54){return _0x389d54;});}return null;};}function removeEntity(_0x4bce12,_0x36d658){return function(_0x24a958){if(_0x24a958){return _0x24a958[_0x4a0e('0x28')]()[_0x4a0e('0x29')](function(){_0x4bce12[_0x4a0e('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32e5bc,_0x33ac9d){return function(_0x330c0e){if(!_0x330c0e){_0x32e5bc[_0x4a0e('0x1d')](0x194);}return _0x330c0e;};}function handleError(_0x1cbc92,_0x2b31d2){_0x2b31d2=_0x2b31d2||0x1f4;return function(_0x33d710){logger[_0x4a0e('0x2a')](_0x33d710[_0x4a0e('0x2b')]);if(_0x33d710[_0x4a0e('0x2c')]){delete _0x33d710[_0x4a0e('0x2c')];}_0x1cbc92[_0x4a0e('0x1f')](_0x2b31d2)[_0x4a0e('0x2d')](_0x33d710);};}exports[_0x4a0e('0x2e')]=function(_0xabd3e9,_0x318b1f){var _0x4fdf6d={},_0x38914b={},_0x1fe641={'count':0x0,'rows':[]};var _0x257c6a=_[_0x4a0e('0x2f')](db[_0x4a0e('0x30')][_0x4a0e('0x31')],function(_0x5e1505){return{'name':_0x5e1505[_0x4a0e('0x32')],'type':_0x5e1505[_0x4a0e('0x33')][_0x4a0e('0x34')]};});_0x38914b['model']=_[_0x4a0e('0x2f')](_0x257c6a,'name');_0x38914b[_0x4a0e('0x35')]=_[_0x4a0e('0x36')](_0xabd3e9['query']);_0x38914b[_0x4a0e('0x37')]=_[_0x4a0e('0x38')](_0x38914b[_0x4a0e('0x39')],_0x38914b[_0x4a0e('0x35')]);_0x4fdf6d[_0x4a0e('0x3a')]=_['intersection'](_0x38914b[_0x4a0e('0x39')],qs[_0x4a0e('0x3b')](_0xabd3e9[_0x4a0e('0x35')][_0x4a0e('0x3b')]));_0x4fdf6d[_0x4a0e('0x3a')]=_0x4fdf6d[_0x4a0e('0x3a')][_0x4a0e('0x3c')]?_0x4fdf6d['attributes']:_0x38914b[_0x4a0e('0x39')];if(!_0xabd3e9[_0x4a0e('0x35')][_0x4a0e('0x3d')](_0x4a0e('0x3e'))){_0x4fdf6d['limit']=qs[_0x4a0e('0x22')](_0xabd3e9['query'][_0x4a0e('0x22')]);_0x4fdf6d[_0x4a0e('0x21')]=qs[_0x4a0e('0x21')](_0xabd3e9[_0x4a0e('0x35')][_0x4a0e('0x21')]);}_0x4fdf6d[_0x4a0e('0x3f')]=qs[_0x4a0e('0x40')](_0xabd3e9['query'][_0x4a0e('0x40')]);_0x4fdf6d[_0x4a0e('0x41')]=qs[_0x4a0e('0x37')](_[_0x4a0e('0x42')](_0xabd3e9[_0x4a0e('0x35')],_0x38914b['filters']),_0x257c6a);if(_0xabd3e9['query'][_0x4a0e('0x43')]){_0x4fdf6d['where']=_[_0x4a0e('0x44')](_0x4fdf6d[_0x4a0e('0x41')],{'$or':_[_0x4a0e('0x2f')](_0x257c6a,function(_0x520a56){if(_0x520a56[_0x4a0e('0x33')]!=='VIRTUAL'){var _0x54adbc={};_0x54adbc[_0x520a56[_0x4a0e('0x2c')]]={'$like':'%'+_0xabd3e9[_0x4a0e('0x35')]['filter']+'%'};return _0x54adbc;}})});}_0x4fdf6d=_[_0x4a0e('0x44')]({},_0x4fdf6d,_0xabd3e9[_0x4a0e('0x45')]);var _0x2ec13b={'where':_0x4fdf6d[_0x4a0e('0x41')]};return db[_0x4a0e('0x30')][_0x4a0e('0x23')](_0x2ec13b)[_0x4a0e('0x29')](function(_0x254e6e){_0x1fe641['count']=_0x254e6e;if(_0xabd3e9[_0x4a0e('0x35')]['includeAll']){_0x4fdf6d['include']=[{'all':!![]}];}return db[_0x4a0e('0x30')][_0x4a0e('0x46')](_0x4fdf6d);})[_0x4a0e('0x29')](function(_0x1fc4c6){_0x1fe641[_0x4a0e('0x47')]=_0x1fc4c6;return _0x1fe641;})[_0x4a0e('0x29')](respondWithFilteredResult(_0x318b1f,_0x4fdf6d))[_0x4a0e('0x48')](handleError(_0x318b1f,null));};exports[_0x4a0e('0x49')]=function(_0x450666,_0x3d236c){var _0x521051={'raw':!![],'where':{'id':_0x450666[_0x4a0e('0x4a')]['id']}},_0x11d26b={};_0x11d26b[_0x4a0e('0x39')]=_['keys'](db[_0x4a0e('0x30')][_0x4a0e('0x31')]);_0x11d26b[_0x4a0e('0x35')]=_[_0x4a0e('0x36')](_0x450666[_0x4a0e('0x35')]);_0x11d26b[_0x4a0e('0x37')]=_['intersection'](_0x11d26b[_0x4a0e('0x39')],_0x11d26b[_0x4a0e('0x35')]);_0x521051[_0x4a0e('0x3a')]=_['intersection'](_0x11d26b['model'],qs[_0x4a0e('0x3b')](_0x450666[_0x4a0e('0x35')][_0x4a0e('0x3b')]));_0x521051[_0x4a0e('0x3a')]=_0x521051[_0x4a0e('0x3a')][_0x4a0e('0x3c')]?_0x521051['attributes']:_0x11d26b[_0x4a0e('0x39')];if(_0x450666[_0x4a0e('0x35')]['includeAll']){_0x521051['include']=[{'all':!![]}];}_0x521051=_[_0x4a0e('0x44')]({},_0x521051,_0x450666[_0x4a0e('0x45')]);return db[_0x4a0e('0x30')][_0x4a0e('0x4b')](_0x521051)['then'](handleEntityNotFound(_0x3d236c,null))[_0x4a0e('0x29')](respondWithResult(_0x3d236c,null))['catch'](handleError(_0x3d236c,null));};exports[_0x4a0e('0x4c')]=function(_0x7d3425,_0x480ae9){return db['ZendeskField'][_0x4a0e('0x4c')](_0x7d3425['body'],{})[_0x4a0e('0x29')](respondWithResult(_0x480ae9,0xc9))[_0x4a0e('0x48')](handleError(_0x480ae9,null));};exports[_0x4a0e('0x27')]=function(_0x5fc3d9,_0x86ebcc){if(_0x5fc3d9[_0x4a0e('0x4d')]['id']){delete _0x5fc3d9[_0x4a0e('0x4d')]['id'];}return db[_0x4a0e('0x30')][_0x4a0e('0x4b')]({'where':{'id':_0x5fc3d9[_0x4a0e('0x4a')]['id']}})[_0x4a0e('0x29')](handleEntityNotFound(_0x86ebcc,null))[_0x4a0e('0x29')](saveUpdates(_0x5fc3d9[_0x4a0e('0x4d')],null))[_0x4a0e('0x29')](respondWithResult(_0x86ebcc,null))[_0x4a0e('0x48')](handleError(_0x86ebcc,null));};exports[_0x4a0e('0x28')]=function(_0xda72,_0x9d0f6e){return db[_0x4a0e('0x30')][_0x4a0e('0x4b')]({'where':{'id':_0xda72[_0x4a0e('0x4a')]['id']}})[_0x4a0e('0x29')](handleEntityNotFound(_0x9d0f6e,null))[_0x4a0e('0x29')](removeEntity(_0x9d0f6e,null))[_0x4a0e('0x48')](handleError(_0x9d0f6e,null));};
\ No newline at end of file
+var _0xb162=['end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','error','stack','index','map','ZendeskField','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','then','findAll','rows','show','includeAll','include','options','find','catch','create','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status'];(function(_0x285154,_0xad3651){var _0x472725=function(_0x3f5393){while(--_0x3f5393){_0x285154['push'](_0x285154['shift']());}};_0x472725(++_0xad3651);}(_0xb162,0x110));var _0x2b16=function(_0x3a4185,_0x63e96e){_0x3a4185=_0x3a4185-0x0;var _0x4866cf=_0xb162[_0x3a4185];return _0x4866cf;};'use strict';var emlformat=require(_0x2b16('0x0'));var rimraf=require(_0x2b16('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2b16('0x2'));var rp=require(_0x2b16('0x3'));var moment=require(_0x2b16('0x4'));var BPromise=require(_0x2b16('0x5'));var Mustache=require(_0x2b16('0x6'));var util=require(_0x2b16('0x7'));var path=require(_0x2b16('0x8'));var sox=require(_0x2b16('0x9'));var csv=require(_0x2b16('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2b16('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2b16('0xc'));var jsforce=require(_0x2b16('0xd'));var deskjs=require(_0x2b16('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2b16('0xf'));var Papa=require(_0x2b16('0x10'));var Redis=require('ioredis');var authService=require(_0x2b16('0x11'));var qs=require(_0x2b16('0x12'));var as=require(_0x2b16('0x13'));var hardwareService=require(_0x2b16('0x14'));var logger=require(_0x2b16('0x15'))(_0x2b16('0x16'));var utils=require(_0x2b16('0x17'));var config=require(_0x2b16('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x2b16('0x19'))['db'];function respondWithStatusCode(_0x2270cc,_0x29f1b8){_0x29f1b8=_0x29f1b8||0xcc;return function(_0x49626c){if(_0x49626c){return _0x2270cc[_0x2b16('0x1a')](_0x29f1b8);}return _0x2270cc[_0x2b16('0x1b')](_0x29f1b8)[_0x2b16('0x1c')]();};}function respondWithResult(_0x5a45a4,_0x30614f){_0x30614f=_0x30614f||0xc8;return function(_0x237f4a){if(_0x237f4a){return _0x5a45a4[_0x2b16('0x1b')](_0x30614f)[_0x2b16('0x1d')](_0x237f4a);}};}function respondWithFilteredResult(_0x5aeaac,_0x3378af){return function(_0x258887){if(_0x258887){var _0x515427=typeof _0x3378af[_0x2b16('0x1e')]===_0x2b16('0x1f')&&typeof _0x3378af[_0x2b16('0x20')]===_0x2b16('0x1f');var _0x34e8bf=_0x258887[_0x2b16('0x21')];var _0x49559c=_0x515427?0x0:_0x3378af[_0x2b16('0x1e')];var _0x54534a=_0x515427?_0x258887['count']:_0x3378af[_0x2b16('0x1e')]+_0x3378af[_0x2b16('0x20')];var _0x58f344;if(_0x54534a>=_0x34e8bf){_0x54534a=_0x34e8bf;_0x58f344=0xc8;}else{_0x58f344=0xce;}_0x5aeaac[_0x2b16('0x1b')](_0x58f344);return _0x5aeaac[_0x2b16('0x22')](_0x2b16('0x23'),_0x49559c+'-'+_0x54534a+'/'+_0x34e8bf)[_0x2b16('0x1d')](_0x258887);}return null;};}function patchUpdates(_0x2c9d2d){return function(_0x4411ca){try{jsonpatch[_0x2b16('0x24')](_0x4411ca,_0x2c9d2d,!![]);}catch(_0x5e0819){return BPromise[_0x2b16('0x25')](_0x5e0819);}return _0x4411ca['save']();};}function saveUpdates(_0x350cc6,_0x4903bf){return function(_0x414b16){if(_0x414b16){return _0x414b16['update'](_0x350cc6)['then'](function(_0x244929){return _0x244929;});}return null;};}function removeEntity(_0x40ce10,_0x52b0e8){return function(_0x573781){if(_0x573781){return _0x573781[_0x2b16('0x26')]()['then'](function(){_0x40ce10[_0x2b16('0x1b')](0xcc)[_0x2b16('0x1c')]();});}};}function handleEntityNotFound(_0x91b384,_0xa76e4a){return function(_0x3bc92b){if(!_0x3bc92b){_0x91b384[_0x2b16('0x1a')](0x194);}return _0x3bc92b;};}function handleError(_0x540266,_0x54381a){_0x54381a=_0x54381a||0x1f4;return function(_0x2b0404){logger[_0x2b16('0x27')](_0x2b0404[_0x2b16('0x28')]);if(_0x2b0404['name']){delete _0x2b0404['name'];}_0x540266[_0x2b16('0x1b')](_0x54381a)['send'](_0x2b0404);};}exports[_0x2b16('0x29')]=function(_0x4cf7ed,_0x2908f5){var _0x595df4={},_0x5a21a4={},_0x26f895={'count':0x0,'rows':[]};var _0x3c543b=_[_0x2b16('0x2a')](db[_0x2b16('0x2b')][_0x2b16('0x2c')],function(_0x2819cd){return{'name':_0x2819cd[_0x2b16('0x2d')],'type':_0x2819cd[_0x2b16('0x2e')][_0x2b16('0x2f')]};});_0x5a21a4[_0x2b16('0x30')]=_[_0x2b16('0x2a')](_0x3c543b,_0x2b16('0x31'));_0x5a21a4[_0x2b16('0x32')]=_[_0x2b16('0x33')](_0x4cf7ed[_0x2b16('0x32')]);_0x5a21a4[_0x2b16('0x34')]=_['intersection'](_0x5a21a4[_0x2b16('0x30')],_0x5a21a4[_0x2b16('0x32')]);_0x595df4['attributes']=_[_0x2b16('0x35')](_0x5a21a4[_0x2b16('0x30')],qs[_0x2b16('0x36')](_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x36')]));_0x595df4[_0x2b16('0x37')]=_0x595df4[_0x2b16('0x37')][_0x2b16('0x38')]?_0x595df4[_0x2b16('0x37')]:_0x5a21a4[_0x2b16('0x30')];if(!_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x39')](_0x2b16('0x3a'))){_0x595df4[_0x2b16('0x20')]=qs[_0x2b16('0x20')](_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x20')]);_0x595df4[_0x2b16('0x1e')]=qs[_0x2b16('0x1e')](_0x4cf7ed['query']['offset']);}_0x595df4['order']=qs[_0x2b16('0x3b')](_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x3b')]);_0x595df4[_0x2b16('0x3c')]=qs[_0x2b16('0x34')](_['pick'](_0x4cf7ed[_0x2b16('0x32')],_0x5a21a4[_0x2b16('0x34')]),_0x3c543b);if(_0x4cf7ed[_0x2b16('0x32')][_0x2b16('0x3d')]){_0x595df4[_0x2b16('0x3c')]=_[_0x2b16('0x3e')](_0x595df4[_0x2b16('0x3c')],{'$or':_[_0x2b16('0x2a')](_0x3c543b,function(_0x378e5b){if(_0x378e5b[_0x2b16('0x2e')]!=='VIRTUAL'){var _0x376ffb={};_0x376ffb[_0x378e5b['name']]={'$like':'%'+_0x4cf7ed['query'][_0x2b16('0x3d')]+'%'};return _0x376ffb;}})});}_0x595df4=_[_0x2b16('0x3e')]({},_0x595df4,_0x4cf7ed['options']);var _0x2288b5={'where':_0x595df4['where']};return db[_0x2b16('0x2b')]['count'](_0x2288b5)[_0x2b16('0x3f')](function(_0x1a9a3a){_0x26f895['count']=_0x1a9a3a;if(_0x4cf7ed['query']['includeAll']){_0x595df4['include']=[{'all':!![]}];}return db['ZendeskField'][_0x2b16('0x40')](_0x595df4);})['then'](function(_0x1a6dcd){_0x26f895[_0x2b16('0x41')]=_0x1a6dcd;return _0x26f895;})[_0x2b16('0x3f')](respondWithFilteredResult(_0x2908f5,_0x595df4))['catch'](handleError(_0x2908f5,null));};exports[_0x2b16('0x42')]=function(_0x5b1a1d,_0x3f142e){var _0x1701a4={'raw':!![],'where':{'id':_0x5b1a1d['params']['id']}},_0x14c482={};_0x14c482[_0x2b16('0x30')]=_[_0x2b16('0x33')](db[_0x2b16('0x2b')]['rawAttributes']);_0x14c482['query']=_[_0x2b16('0x33')](_0x5b1a1d[_0x2b16('0x32')]);_0x14c482[_0x2b16('0x34')]=_[_0x2b16('0x35')](_0x14c482[_0x2b16('0x30')],_0x14c482['query']);_0x1701a4[_0x2b16('0x37')]=_[_0x2b16('0x35')](_0x14c482[_0x2b16('0x30')],qs[_0x2b16('0x36')](_0x5b1a1d[_0x2b16('0x32')][_0x2b16('0x36')]));_0x1701a4[_0x2b16('0x37')]=_0x1701a4[_0x2b16('0x37')][_0x2b16('0x38')]?_0x1701a4[_0x2b16('0x37')]:_0x14c482[_0x2b16('0x30')];if(_0x5b1a1d[_0x2b16('0x32')][_0x2b16('0x43')]){_0x1701a4[_0x2b16('0x44')]=[{'all':!![]}];}_0x1701a4=_[_0x2b16('0x3e')]({},_0x1701a4,_0x5b1a1d[_0x2b16('0x45')]);return db[_0x2b16('0x2b')][_0x2b16('0x46')](_0x1701a4)[_0x2b16('0x3f')](handleEntityNotFound(_0x3f142e,null))[_0x2b16('0x3f')](respondWithResult(_0x3f142e,null))[_0x2b16('0x47')](handleError(_0x3f142e,null));};exports[_0x2b16('0x48')]=function(_0x501f84,_0x374bbc){return db[_0x2b16('0x2b')][_0x2b16('0x48')](_0x501f84[_0x2b16('0x49')],{})[_0x2b16('0x3f')](respondWithResult(_0x374bbc,0xc9))[_0x2b16('0x47')](handleError(_0x374bbc,null));};exports['update']=function(_0x37a65e,_0x2dc3d7){if(_0x37a65e[_0x2b16('0x49')]['id']){delete _0x37a65e[_0x2b16('0x49')]['id'];}return db[_0x2b16('0x2b')][_0x2b16('0x46')]({'where':{'id':_0x37a65e[_0x2b16('0x4a')]['id']}})[_0x2b16('0x3f')](handleEntityNotFound(_0x2dc3d7,null))[_0x2b16('0x3f')](saveUpdates(_0x37a65e[_0x2b16('0x49')],null))[_0x2b16('0x3f')](respondWithResult(_0x2dc3d7,null))[_0x2b16('0x47')](handleError(_0x2dc3d7,null));};exports[_0x2b16('0x26')]=function(_0x4fac59,_0x3e30eb){return db[_0x2b16('0x2b')]['find']({'where':{'id':_0x4fac59[_0x2b16('0x4a')]['id']}})[_0x2b16('0x3f')](handleEntityNotFound(_0x3e30eb,null))[_0x2b16('0x3f')](removeEntity(_0x3e30eb,null))[_0x2b16('0x47')](handleError(_0x3e30eb,null));};
\ No newline at end of file
index 7c236c7..2d71aa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5e=['./intZendeskField.attributes','exports','define','ZendeskField','idField','FieldId','util','../../config/logger','moment','request-promise','rimraf'];(function(_0x159231,_0x39a543){var _0x429279=function(_0x24b94f){while(--_0x24b94f){_0x159231['push'](_0x159231['shift']());}};_0x429279(++_0x39a543);}(_0x6c5e,0xab));var _0xe6c5=function(_0x21aea9,_0x4cc2c3){_0x21aea9=_0x21aea9-0x0;var _0x233ea8=_0x6c5e[_0x21aea9];return _0x233ea8;};'use strict';var _=require('lodash');var util=require(_0xe6c5('0x0'));var logger=require(_0xe6c5('0x1'))('api');var moment=require(_0xe6c5('0x2'));var BPromise=require('bluebird');var rp=require(_0xe6c5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe6c5('0x4'));var config=require('../../config/environment');var attributes=require(_0xe6c5('0x5'));module[_0xe6c5('0x6')]=function(_0x289783,_0x3645e4){return _0x289783[_0xe6c5('0x7')](_0xe6c5('0x8'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0xe6c5('0x9'),_0xe6c5('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x69e1=['int_zendesk_fields','zendesk_unique_index','idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x1e1c84,_0x121a07){var _0x46614e=function(_0x2ca946){while(--_0x2ca946){_0x1e1c84['push'](_0x1e1c84['shift']());}};_0x46614e(++_0x121a07);}(_0x69e1,0x1b1));var _0x169e=function(_0x33a428,_0x2c418d){_0x33a428=_0x33a428-0x0;var _0x3b583f=_0x69e1[_0x33a428];return _0x3b583f;};'use strict';var _=require('lodash');var util=require(_0x169e('0x0'));var logger=require(_0x169e('0x1'))(_0x169e('0x2'));var moment=require(_0x169e('0x3'));var BPromise=require(_0x169e('0x4'));var rp=require(_0x169e('0x5'));var fs=require('fs');var path=require(_0x169e('0x6'));var rimraf=require(_0x169e('0x7'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0x169e('0x8')]=function(_0xad4790,_0xd00bd0){return _0xad4790['define']('ZendeskField',attributes,{'tableName':_0x169e('0x9'),'paranoid':![],'indexes':[{'name':_0x169e('0xa'),'fields':[_0x169e('0xb'),_0x169e('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 574fdba..bd7d66b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe840=['info','request\x20sent','stringify','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','rpc','jayson/promise','client','http','then'];(function(_0x22183f,_0x1dfa1e){var _0x37571b=function(_0x1fc21a){while(--_0x1fc21a){_0x22183f['push'](_0x22183f['shift']());}};_0x37571b(++_0x1dfa1e);}(_0xe840,0xc7));var _0x0e84=function(_0x301db9,_0x4455a7){_0x301db9=_0x301db9-0x0;var _0x261873=_0xe840[_0x301db9];return _0x261873;};'use strict';var _=require(_0x0e84('0x0'));var util=require(_0x0e84('0x1'));var moment=require(_0x0e84('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e84('0x3'));var db=require(_0x0e84('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0e84('0x5'));var config=require('../../config/environment');var jayson=require(_0x0e84('0x6'));var client=jayson[_0x0e84('0x7')][_0x0e84('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e96da,_0x237dc4,_0x23e4fe){return new BPromise(function(_0x245d11,_0x565b51){return client['request'](_0x5e96da,_0x23e4fe)[_0x0e84('0x9')](function(_0x3b2ebd){logger[_0x0e84('0xa')]('ZendeskField,\x20%s,\x20%s',_0x237dc4,_0x0e84('0xb'));logger['debug']('ZendeskField,\x20%s,\x20%s,\x20%s',_0x237dc4,'request\x20sent',JSON[_0x0e84('0xc')](_0x3b2ebd));if(_0x3b2ebd[_0x0e84('0xd')]){if(_0x3b2ebd[_0x0e84('0xd')][_0x0e84('0xe')]===0x1f4){logger[_0x0e84('0xd')](_0x0e84('0xf'),_0x237dc4,_0x3b2ebd[_0x0e84('0xd')][_0x0e84('0x10')]);return _0x565b51(_0x3b2ebd[_0x0e84('0xd')]['message']);}logger[_0x0e84('0xd')]('ZendeskField,\x20%s,\x20%s',_0x237dc4,_0x3b2ebd[_0x0e84('0xd')]['message']);return _0x245d11(_0x3b2ebd['error']['message']);}else{logger['info'](_0x0e84('0xf'),_0x237dc4,_0x0e84('0xb'));_0x245d11(_0x3b2ebd[_0x0e84('0x11')]['message']);}})[_0x0e84('0x12')](function(_0x3842e2){logger[_0x0e84('0xd')](_0x0e84('0xf'),_0x237dc4,_0x3842e2);_0x565b51(_0x3842e2);});});}
\ No newline at end of file
+var _0x7309=['client','http','request','then','info','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','code','ZendeskField,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x3294f1,_0x6cf327){var _0x45b3b3=function(_0x14771f){while(--_0x14771f){_0x3294f1['push'](_0x3294f1['shift']());}};_0x45b3b3(++_0x6cf327);}(_0x7309,0x116));var _0x9730=function(_0x51cabc,_0x422a05){_0x51cabc=_0x51cabc-0x0;var _0x10bef4=_0x7309[_0x51cabc];return _0x10bef4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9730('0x0'));var BPromise=require(_0x9730('0x1'));var rs=require(_0x9730('0x2'));var fs=require('fs');var Redis=require(_0x9730('0x3'));var db=require(_0x9730('0x4'))['db'];var utils=require(_0x9730('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x9730('0x6'));var jayson=require(_0x9730('0x7'));var client=jayson[_0x9730('0x8')][_0x9730('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f2263,_0x27c318,_0x4c46c0){return new BPromise(function(_0xa03cb3,_0x3cc2f1){return client[_0x9730('0xa')](_0x4f2263,_0x4c46c0)[_0x9730('0xb')](function(_0x418d4f){logger[_0x9730('0xc')]('ZendeskField,\x20%s,\x20%s',_0x27c318,_0x9730('0xd'));logger[_0x9730('0xe')](_0x9730('0xf'),_0x27c318,_0x9730('0xd'),JSON['stringify'](_0x418d4f));if(_0x418d4f[_0x9730('0x10')]){if(_0x418d4f[_0x9730('0x10')][_0x9730('0x11')]===0x1f4){logger[_0x9730('0x10')](_0x9730('0x12'),_0x27c318,_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);return _0x3cc2f1(_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);}logger[_0x9730('0x10')](_0x9730('0x12'),_0x27c318,_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);return _0xa03cb3(_0x418d4f[_0x9730('0x10')][_0x9730('0x13')]);}else{logger[_0x9730('0xc')]('ZendeskField,\x20%s,\x20%s',_0x27c318,_0x9730('0xd'));_0xa03cb3(_0x418d4f[_0x9730('0x14')][_0x9730('0x13')]);}})[_0x9730('0x15')](function(_0x32f265){logger['error'](_0x9730('0x12'),_0x27c318,_0x32f265);_0x3cc2f1(_0x32f265);});});}
\ No newline at end of file
index 1be3878..8735f19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa143=['index','/:id/configurations','/:id/fields','getFields','create','post','addConfiguration','put','/:id','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x417e65,_0x254006){var _0x4d73f0=function(_0x1de17b){while(--_0x1de17b){_0x417e65['push'](_0x417e65['shift']());}};_0x4d73f0(++_0x254006);}(_0xa143,0x108));var _0x3a14=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xa143[_0x19950b];return _0x3c6b41;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3a14('0x0'));var timeout=require(_0x3a14('0x1'));var express=require(_0x3a14('0x2'));var router=express[_0x3a14('0x3')]();var fs_extra=require(_0x3a14('0x4'));var auth=require(_0x3a14('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x3a14('0x6'));var controller=require('./intZohoAccount.controller');router[_0x3a14('0x7')]('/',auth[_0x3a14('0x8')](),controller[_0x3a14('0x9')]);router[_0x3a14('0x7')]('/:id',auth[_0x3a14('0x8')](),controller['show']);router[_0x3a14('0x7')](_0x3a14('0xa'),auth[_0x3a14('0x8')](),controller['getConfigurations']);router[_0x3a14('0x7')](_0x3a14('0xb'),auth['isAuthenticated'](),controller[_0x3a14('0xc')]);router['post']('/',auth[_0x3a14('0x8')](),controller[_0x3a14('0xd')]);router[_0x3a14('0xe')](_0x3a14('0xa'),auth['isAuthenticated'](),controller[_0x3a14('0xf')]);router[_0x3a14('0x10')](_0x3a14('0x11'),auth[_0x3a14('0x8')](),controller['update']);router[_0x3a14('0x12')](_0x3a14('0x11'),auth['isAuthenticated'](),controller[_0x3a14('0x13')]);module[_0x3a14('0x14')]=router;
\ No newline at end of file
+var _0xc0de=['post','addConfiguration','put','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','/:id/configurations','isAuthenticated','/:id/fields','getFields'];(function(_0x3c2a69,_0x4c8b41){var _0x596bc8=function(_0x1b4b7c){while(--_0x1b4b7c){_0x3c2a69['push'](_0x3c2a69['shift']());}};_0x596bc8(++_0x4c8b41);}(_0xc0de,0x11e));var _0xec0d=function(_0x194a79,_0x3d49ae){_0x194a79=_0x194a79-0x0;var _0x533d98=_0xc0de[_0x194a79];return _0x533d98;};'use strict';var multer=require(_0xec0d('0x0'));var util=require('util');var path=require(_0xec0d('0x1'));var timeout=require(_0xec0d('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xec0d('0x3'));var auth=require(_0xec0d('0x4'));var interaction=require(_0xec0d('0x5'));var config=require(_0xec0d('0x6'));var controller=require('./intZohoAccount.controller');router[_0xec0d('0x7')]('/',auth['isAuthenticated'](),controller[_0xec0d('0x8')]);router['get'](_0xec0d('0x9'),auth['isAuthenticated'](),controller['show']);router[_0xec0d('0x7')](_0xec0d('0xa'),auth[_0xec0d('0xb')](),controller['getConfigurations']);router[_0xec0d('0x7')](_0xec0d('0xc'),auth[_0xec0d('0xb')](),controller[_0xec0d('0xd')]);router[_0xec0d('0xe')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xec0d('0xa'),auth[_0xec0d('0xb')](),controller[_0xec0d('0xf')]);router[_0xec0d('0x10')]('/:id',auth[_0xec0d('0xb')](),controller['update']);router[_0xec0d('0x11')](_0xec0d('0x9'),auth[_0xec0d('0xb')](),controller[_0xec0d('0x12')]);module[_0xec0d('0x13')]=router;
\ No newline at end of file
index 169f5c2..7a424a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['sequelize','STRING'];(function(_0x29f759,_0x2c24e6){var _0x24e642=function(_0x2982d3){while(--_0x2982d3){_0x29f759['push'](_0x29f759['shift']());}};_0x24e642(++_0x2c24e6);}(_0xf4eb,0xec));var _0xbf4e=function(_0x53465a,_0x1e8e75){_0x53465a=_0x53465a-0x0;var _0x17a5ef=_0xf4eb[_0x53465a];return _0x17a5ef;};'use strict';var Sequelize=require(_0xbf4e('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xbf4e('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xbf4e('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0xbf4e('0x1')]},'refreshToken':{'type':Sequelize[_0xbf4e('0x1')]}};
\ No newline at end of file
+var _0x5ff3=['STRING','exports'];(function(_0x299fa,_0x47bbcb){var _0x5e57a0=function(_0x39e22e){while(--_0x39e22e){_0x299fa['push'](_0x299fa['shift']());}};_0x5e57a0(++_0x47bbcb);}(_0x5ff3,0x17d));var _0x35ff=function(_0x35e992,_0x5bda3a){_0x35e992=_0x35e992-0x0;var _0x418157=_0x5ff3[_0x35e992];return _0x418157;};'use strict';var Sequelize=require('sequelize');module[_0x35ff('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x35ff('0x1')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0x35ff('0x1')]},'clientId':{'type':Sequelize[_0x35ff('0x1')]},'clientSecret':{'type':Sequelize[_0x35ff('0x1')]},'serverUrl':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x35ff('0x1')]}};
\ No newline at end of file
index 77a1910..a32f1df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x953d=['stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','limit','count','Content-Range','apply','then','destroy','error','stack','name','send','index','ZohoAccount','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','offset','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','create','body','update','find','params','findOne','ZohoConfiguration','length','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','access_token','getFields','host','serverUrl','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','message','Owner','Description','WhoId','Call_Start_Time','remove','includes','system_mandatory','push','custom_field','data_type','picklist','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s'];(function(_0x44c9fa,_0x3beddd){var _0x61b98e=function(_0x5c3cb5){while(--_0x5c3cb5){_0x44c9fa['push'](_0x44c9fa['shift']());}};_0x61b98e(++_0x3beddd);}(_0x953d,0x105));var _0xd953=function(_0x6364f,_0x24393e){_0x6364f=_0x6364f-0x0;var _0x4bf4c6=_0x953d[_0x6364f];return _0x4bf4c6;};'use strict';var emlformat=require(_0xd953('0x0'));var rimraf=require(_0xd953('0x1'));var zipdir=require(_0xd953('0x2'));var jsonpatch=require(_0xd953('0x3'));var rp=require(_0xd953('0x4'));var moment=require('moment');var BPromise=require(_0xd953('0x5'));var Mustache=require(_0xd953('0x6'));var util=require(_0xd953('0x7'));var path=require(_0xd953('0x8'));var sox=require('sox');var csv=require(_0xd953('0x9'));var ejs=require(_0xd953('0xa'));var fs=require('fs');var fs_extra=require(_0xd953('0xb'));var _=require(_0xd953('0xc'));var squel=require(_0xd953('0xd'));var crypto=require(_0xd953('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd953('0xf'));var toCsv=require(_0xd953('0x9'));var querystring=require(_0xd953('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd953('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd953('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd953('0x13'))(_0xd953('0x14'));var utils=require(_0xd953('0x15'));var config=require(_0xd953('0x16'));var licenseUtil=require(_0xd953('0x17'));var db=require(_0xd953('0x18'))['db'];var integrations=require(_0xd953('0x19'));function respondWithStatusCode(_0x10d1fe,_0x4363ab){_0x4363ab=_0x4363ab||0xcc;return function(_0x47a807){if(_0x47a807){return _0x10d1fe[_0xd953('0x1a')](_0x4363ab);}return _0x10d1fe['status'](_0x4363ab)[_0xd953('0x1b')]();};}function respondWithResult(_0x5900f8,_0x3840ab){_0x3840ab=_0x3840ab||0xc8;return function(_0x37db37){if(_0x37db37){return _0x5900f8[_0xd953('0x1c')](_0x3840ab)[_0xd953('0x1d')](_0x37db37);}};}function respondWithFilteredResult(_0x2f9662,_0x54882a){return function(_0x3af557){if(_0x3af557){var _0x544cf1=typeof _0x54882a['offset']==='undefined'&&typeof _0x54882a[_0xd953('0x1e')]==='undefined';var _0x36cba0=_0x3af557[_0xd953('0x1f')];var _0x1bb1dd=_0x544cf1?0x0:_0x54882a['offset'];var _0x4adabe=_0x544cf1?_0x3af557['count']:_0x54882a['offset']+_0x54882a[_0xd953('0x1e')];var _0x159171;if(_0x4adabe>=_0x36cba0){_0x4adabe=_0x36cba0;_0x159171=0xc8;}else{_0x159171=0xce;}_0x2f9662[_0xd953('0x1c')](_0x159171);return _0x2f9662['set'](_0xd953('0x20'),_0x1bb1dd+'-'+_0x4adabe+'/'+_0x36cba0)[_0xd953('0x1d')](_0x3af557);}return null;};}function patchUpdates(_0x1c8894){return function(_0x31b1a0){try{jsonpatch[_0xd953('0x21')](_0x31b1a0,_0x1c8894,!![]);}catch(_0x513efe){return BPromise['reject'](_0x513efe);}return _0x31b1a0['save']();};}function saveUpdates(_0x554a2a,_0x247e8a){return function(_0x32dccf){if(_0x32dccf){return _0x32dccf['update'](_0x554a2a)[_0xd953('0x22')](function(_0x510a93){return _0x510a93;});}return null;};}function removeEntity(_0x58cbe4,_0x2026d6){return function(_0x3b2042){if(_0x3b2042){return _0x3b2042[_0xd953('0x23')]()[_0xd953('0x22')](function(){_0x58cbe4[_0xd953('0x1c')](0xcc)[_0xd953('0x1b')]();});}};}function handleEntityNotFound(_0x576f6f,_0x53f4ce){return function(_0x502e85){if(!_0x502e85){_0x576f6f[_0xd953('0x1a')](0x194);}return _0x502e85;};}function handleError(_0x581099,_0x13d55a){_0x13d55a=_0x13d55a||0x1f4;return function(_0x124ddc){logger[_0xd953('0x24')](_0x124ddc[_0xd953('0x25')]);if(_0x124ddc[_0xd953('0x26')]){delete _0x124ddc[_0xd953('0x26')];}_0x581099[_0xd953('0x1c')](_0x13d55a)[_0xd953('0x27')](_0x124ddc);};}exports[_0xd953('0x28')]=function(_0x2a7d66,_0x282b25){var _0x4e05e4={},_0x23a7c9={},_0x461170={'count':0x0,'rows':[]};var _0x4b8d25=_['map'](db[_0xd953('0x29')]['rawAttributes'],function(_0x32bd1d){return{'name':_0x32bd1d[_0xd953('0x2a')],'type':_0x32bd1d[_0xd953('0x2b')][_0xd953('0x2c')]};});_0x23a7c9[_0xd953('0x2d')]=_[_0xd953('0x2e')](_0x4b8d25,_0xd953('0x26'));_0x23a7c9['query']=_[_0xd953('0x2f')](_0x2a7d66['query']);_0x23a7c9[_0xd953('0x30')]=_[_0xd953('0x31')](_0x23a7c9[_0xd953('0x2d')],_0x23a7c9[_0xd953('0x32')]);_0x4e05e4[_0xd953('0x33')]=_[_0xd953('0x31')](_0x23a7c9['model'],qs[_0xd953('0x34')](_0x2a7d66['query']['fields']));_0x4e05e4[_0xd953('0x33')]=_0x4e05e4[_0xd953('0x33')]['length']?_0x4e05e4['attributes']:_0x23a7c9[_0xd953('0x2d')];if(!_0x2a7d66[_0xd953('0x32')][_0xd953('0x35')](_0xd953('0x36'))){_0x4e05e4[_0xd953('0x1e')]=qs[_0xd953('0x1e')](_0x2a7d66['query'][_0xd953('0x1e')]);_0x4e05e4[_0xd953('0x37')]=qs['offset'](_0x2a7d66['query'][_0xd953('0x37')]);}_0x4e05e4['order']=qs[_0xd953('0x38')](_0x2a7d66[_0xd953('0x32')][_0xd953('0x38')]);_0x4e05e4[_0xd953('0x39')]=qs['filters'](_[_0xd953('0x3a')](_0x2a7d66[_0xd953('0x32')],_0x23a7c9[_0xd953('0x30')]),_0x4b8d25);if(_0x2a7d66[_0xd953('0x32')][_0xd953('0x3b')]){_0x4e05e4[_0xd953('0x39')]=_[_0xd953('0x3c')](_0x4e05e4[_0xd953('0x39')],{'$or':_[_0xd953('0x2e')](_0x4b8d25,function(_0x236838){if(_0x236838[_0xd953('0x2b')]!==_0xd953('0x3d')){var _0x54c119={};_0x54c119[_0x236838[_0xd953('0x26')]]={'$like':'%'+_0x2a7d66[_0xd953('0x32')][_0xd953('0x3b')]+'%'};return _0x54c119;}})});}_0x4e05e4=_['merge']({},_0x4e05e4,_0x2a7d66[_0xd953('0x3e')]);var _0x3f7fb4={'where':_0x4e05e4['where']};return db[_0xd953('0x29')]['count'](_0x3f7fb4)[_0xd953('0x22')](function(_0x2ee94e){_0x461170[_0xd953('0x1f')]=_0x2ee94e;if(_0x2a7d66[_0xd953('0x32')]['includeAll']){_0x4e05e4[_0xd953('0x3f')]=[{'all':!![]}];}return db[_0xd953('0x29')][_0xd953('0x40')](_0x4e05e4);})[_0xd953('0x22')](function(_0x9a9828){_0x461170[_0xd953('0x41')]=_0x9a9828;return _0x461170;})[_0xd953('0x22')](respondWithFilteredResult(_0x282b25,_0x4e05e4))[_0xd953('0x42')](handleError(_0x282b25,null));};exports[_0xd953('0x43')]=function(_0x274ca4,_0x46c5ea){var _0x5cfd06={'raw':![],'where':{'id':_0x274ca4['params']['id']}},_0x44365a={};_0x44365a['model']=_['keys'](db[_0xd953('0x29')][_0xd953('0x44')]);_0x44365a[_0xd953('0x32')]=_['keys'](_0x274ca4[_0xd953('0x32')]);_0x44365a[_0xd953('0x30')]=_[_0xd953('0x31')](_0x44365a[_0xd953('0x2d')],_0x44365a[_0xd953('0x32')]);_0x5cfd06[_0xd953('0x33')]=_[_0xd953('0x31')](_0x44365a['model'],qs['fields'](_0x274ca4[_0xd953('0x32')][_0xd953('0x34')]));_0x5cfd06[_0xd953('0x33')]=_0x5cfd06[_0xd953('0x33')]['length']?_0x5cfd06['attributes']:_0x44365a[_0xd953('0x2d')];if(_0x274ca4[_0xd953('0x32')][_0xd953('0x45')]){_0x5cfd06[_0xd953('0x3f')]=[{'all':!![]}];}_0x5cfd06=_['merge']({},_0x5cfd06,_0x274ca4[_0xd953('0x3e')]);return db[_0xd953('0x29')]['find'](_0x5cfd06)[_0xd953('0x22')](handleEntityNotFound(_0x46c5ea,null))['then'](respondWithResult(_0x46c5ea,null))[_0xd953('0x42')](handleError(_0x46c5ea,null));};exports[_0xd953('0x46')]=function(_0x9f7bdb,_0x3a954e){return db[_0xd953('0x29')]['create'](_0x9f7bdb[_0xd953('0x47')],{})[_0xd953('0x22')](respondWithResult(_0x3a954e,0xc9))['catch'](handleError(_0x3a954e,null));};exports[_0xd953('0x48')]=function(_0x297cda,_0xae6773){if(_0x297cda[_0xd953('0x47')]['id']){delete _0x297cda[_0xd953('0x47')]['id'];}return db[_0xd953('0x29')][_0xd953('0x49')]({'where':{'id':_0x297cda[_0xd953('0x4a')]['id']}})['then'](handleEntityNotFound(_0xae6773,null))[_0xd953('0x22')](saveUpdates(_0x297cda[_0xd953('0x47')],null))[_0xd953('0x22')](respondWithResult(_0xae6773,null))[_0xd953('0x42')](handleError(_0xae6773,null));};exports[_0xd953('0x23')]=function(_0xa2a04b,_0x16fc5f){return db[_0xd953('0x29')]['find']({'where':{'id':_0xa2a04b['params']['id']}})[_0xd953('0x22')](handleEntityNotFound(_0x16fc5f,null))[_0xd953('0x22')](removeEntity(_0x16fc5f,null))[_0xd953('0x42')](handleError(_0x16fc5f,null));};exports['getConfigurations']=function(_0xc1a0db,_0x35f591,_0x500f2e){var _0x4dc459={};var _0x374dd3={};var _0x1e9150;var _0x3dae68;return db['ZohoAccount'][_0xd953('0x4b')]({'where':{'id':_0xc1a0db[_0xd953('0x4a')]['id']}})['then'](handleEntityNotFound(_0x35f591,null))[_0xd953('0x22')](function(_0x1dd8de){if(_0x1dd8de){_0x1e9150=_0x1dd8de;_0x374dd3[_0xd953('0x2d')]=_[_0xd953('0x2f')](db[_0xd953('0x4c')][_0xd953('0x44')]);_0x374dd3[_0xd953('0x32')]=_[_0xd953('0x2f')](_0xc1a0db[_0xd953('0x32')]);_0x374dd3[_0xd953('0x30')]=_['intersection'](_0x374dd3[_0xd953('0x2d')],_0x374dd3[_0xd953('0x32')]);_0x4dc459[_0xd953('0x33')]=_[_0xd953('0x31')](_0x374dd3['model'],qs[_0xd953('0x34')](_0xc1a0db[_0xd953('0x32')][_0xd953('0x34')]));_0x4dc459['attributes']=_0x4dc459[_0xd953('0x33')][_0xd953('0x4d')]?_0x4dc459[_0xd953('0x33')]:_0x374dd3[_0xd953('0x2d')];_0x4dc459['order']=qs['sort'](_0xc1a0db['query'][_0xd953('0x38')]);_0x4dc459['where']=qs[_0xd953('0x30')](_[_0xd953('0x3a')](_0xc1a0db[_0xd953('0x32')],_0x374dd3[_0xd953('0x30')]));if(_0xc1a0db['query']['filter']){_0x4dc459['where']=_[_0xd953('0x3c')](_0x4dc459['where'],{'$or':_[_0xd953('0x2e')](_0x4dc459[_0xd953('0x33')],function(_0x54388b){var _0x2205dd={};_0x2205dd[_0x54388b]={'$like':'%'+_0xc1a0db[_0xd953('0x32')]['filter']+'%'};return _0x2205dd;})});}_0x4dc459=_['merge']({},_0x4dc459,_0xc1a0db[_0xd953('0x3e')]);return _0x1e9150['getConfigurations'](_0x4dc459);}})[_0xd953('0x22')](function(_0x3dcf51){if(_0x3dcf51){_0x3dae68=_0x3dcf51['length'];if(!_0xc1a0db[_0xd953('0x32')][_0xd953('0x35')](_0xd953('0x36'))){_0x4dc459[_0xd953('0x1e')]=qs['limit'](_0xc1a0db[_0xd953('0x32')][_0xd953('0x1e')]);_0x4dc459['offset']=qs[_0xd953('0x37')](_0xc1a0db[_0xd953('0x32')][_0xd953('0x37')]);}return _0x1e9150['getConfigurations'](_0x4dc459);}})[_0xd953('0x22')](function(_0x14dbf2){if(_0x14dbf2){return _0x14dbf2?{'count':_0x3dae68,'rows':_0x14dbf2}:null;}})[_0xd953('0x22')](respondWithResult(_0x35f591,null))['catch'](handleError(_0x35f591,null));};exports[_0xd953('0x4e')]=function(_0x2aecda,_0x1a8f13,_0x3235d8){if(_0x2aecda[_0xd953('0x47')]['id']){delete _0x2aecda[_0xd953('0x47')]['id'];}return db[_0xd953('0x29')][_0xd953('0x4b')]({'where':{'id':_0x2aecda[_0xd953('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1a8f13,null))['then'](function(_0x36baa1){if(_0x36baa1){_0x2aecda[_0xd953('0x47')][_0xd953('0x4f')]=_0x36baa1['id'];_0x2aecda['body'][_0xd953('0x50')]=integrations[_0xd953('0x51')](_0x2aecda[_0xd953('0x47')][_0xd953('0x52')],_0x2aecda['body'][_0xd953('0x2b')]);_0x2aecda[_0xd953('0x47')][_0xd953('0x53')]=integrations['getDescriptions'](_0x2aecda[_0xd953('0x47')][_0xd953('0x52')],_0x2aecda[_0xd953('0x47')][_0xd953('0x2b')]);return db[_0xd953('0x4c')][_0xd953('0x46')](_0x2aecda[_0xd953('0x47')],{'include':[{'model':db[_0xd953('0x54')],'as':_0xd953('0x50')},{'model':db[_0xd953('0x54')],'as':'Descriptions'}]});}return null;})[_0xd953('0x22')](respondWithResult(_0x1a8f13,null))[_0xd953('0x42')](handleError(_0x1a8f13,null));};function getAccessToken(_0x4d1ea8){return new Promise(function(_0xdd6dd9,_0x38748a){var _0x198d7a;switch(_0x4d1ea8[_0xd953('0x55')]){case'US':_0x198d7a=_0xd953('0x56');break;case'AU':_0x198d7a=_0xd953('0x57');break;case'EU':_0x198d7a=_0xd953('0x58');break;case'IN':_0x198d7a=_0xd953('0x59');break;case'CN':_0x198d7a=_0xd953('0x5a');break;default:_0x198d7a=_0xd953('0x58');break;}var _0x5945dc={'method':_0xd953('0x5b'),'uri':_0x198d7a+_0xd953('0x5c'),'qs':{'refresh_token':_0x4d1ea8[_0xd953('0x5d')],'client_id':_0x4d1ea8[_0xd953('0x5e')],'client_secret':_0x4d1ea8[_0xd953('0x5f')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x5945dc)[_0xd953('0x22')](function(_0xa32ec9){if(_0xa32ec9[_0xd953('0x60')]){_0xdd6dd9(_0xa32ec9[_0xd953('0x60')]);}else{_0x38748a('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x41ae66){_0x38748a(_0x41ae66);});});}exports[_0xd953('0x61')]=function(_0x2e57c0,_0x45640e,_0x2e34ba){var _0x269eb8,_0x24e452,_0x2f9767,_0x5a5e07,_0x3d79d2;return db['ZohoAccount'][_0xd953('0x4b')]({'where':{'id':_0x2e57c0[_0xd953('0x4a')]['id']},'attributes':['id',_0xd953('0x62'),'zone','clientId',_0xd953('0x5f'),_0xd953('0x63'),'code','refreshToken']})[_0xd953('0x22')](handleEntityNotFound(_0x45640e,null))[_0xd953('0x22')](function(_0x59a079){_0x3d79d2=_0x59a079;_0x269eb8=_0x3d79d2[_0xd953('0x62')];_0x24e452=_0x269eb8===_0xd953('0x64')?'eu':_0xd953('0x65');_0x2f9767=_0x3d79d2['serverUrl'];var _0x1931ac=_0x2f9767[_0xd953('0x66')](-0x1);if(_0x1931ac==='/'||_0x1931ac==='\x5c'||_0x1931ac===':'){_0x2f9767=_0x2f9767[_0xd953('0x67')](0x0,_0x2f9767[_0xd953('0x68')](_0x1931ac));}if(!_0x3d79d2[_0xd953('0x5d')]){throw new Error(_0xd953('0x69'));}return getAccessToken(_0x3d79d2);})[_0xd953('0x22')](function(_0x4439ee){if(_0x4439ee){return rp({'method':_0xd953('0x6a'),'uri':util[_0xd953('0x6b')](_0xd953('0x6c'),_0x24e452),'qs':{'module':_0xd953('0x6d')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x4439ee},'json':!![]});}})[_0xd953('0x22')](function(_0x726799){if(_0x726799){if(_0x726799[_0xd953('0x6e')]&&_0x726799[_0xd953('0x6e')]['error']){throw new Error(_0x726799[_0xd953('0x6e')]['error'][_0xd953('0x6f')]);}var _0x2cdb60=[];var _0x40695c=[];var _0x1d32b6=[_0xd953('0x70'),'Subject',_0xd953('0x71'),_0xd953('0x72'),'Call_Duration','Call_Result',_0xd953('0x73'),'Call_Type'];_0x40695c=_[_0xd953('0x74')](_0x726799[_0xd953('0x34')],function(_0x6a5c9b){return _0x1d32b6[_0xd953('0x75')](_0x6a5c9b['api_name']);});for(var _0x18235b=0x0;_0x18235b<_0x40695c[_0xd953('0x4d')];_0x18235b++){if(_0x40695c[_0x18235b][_0xd953('0x76')]===![]){_0x2cdb60[_0xd953('0x77')]({'id':_0x40695c[_0x18235b]['id'],'name':_0x40695c[_0x18235b]['display_label'],'custom':_0x40695c[_0x18235b][_0xd953('0x78')],'options':_0x40695c[_0x18235b][_0xd953('0x79')]===_0xd953('0x7a')&&_0x40695c[_0x18235b][_0xd953('0x7b')]['length']>-0x1?_['map'](_0x40695c[_0x18235b]['pick_list_values'],function(_0x2cb0e4){return{'name':_0x2cb0e4,'value':_0x2cb0e4};}):[]});}}return{'count':_0x2cdb60[_0xd953('0x4d')],'rows':_0x2cdb60};}else{return{'count':0x0,'rows':[]};}})[_0xd953('0x22')](respondWithResult(_0x45640e,null))[_0xd953('0x42')](function(_0x43291a){var _0x3772d6=_0x2e57c0[_0xd953('0x32')]['test']?0x1f4:_0x43291a[_0xd953('0x7c')]||0x1f4;logger['error'](_0xd953('0x7d'),_0xd953('0x61'),_0x3772d6,JSON[_0xd953('0x7e')](_0x43291a));delete _0x43291a['name'];if(_0x3772d6===0x191){_0x3772d6=0x190;}_0x45640e[_0xd953('0x1c')](_0x3772d6)[_0xd953('0x27')](_0x2e57c0[_0xd953('0x32')][_0xd953('0x7f')]?{'message':_0xd953('0x80'),'statusCode':_0x43291a[_0xd953('0x7c')]}:_0x43291a);});};
\ No newline at end of file
+var _0x4d0c=['length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','catch','params','keys','find','create','body','findOne','hasOwnProperty','getConfigurations','AccountId','Subjects','getSubjects','channel','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','access_token','getFields','serverUrl','code','host','zoho.eu','com','slice','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','custom_field','data_type','picklist','pick_list_values','getFields,\x20%s,\x20%s,\x20%s','test','statusCode','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','map','ZohoAccount','rawAttributes','type','key','model','query','intersection','attributes','fields'];(function(_0x1a80df,_0x315037){var _0x1362fc=function(_0x42a0ff){while(--_0x42a0ff){_0x1a80df['push'](_0x1a80df['shift']());}};_0x1362fc(++_0x315037);}(_0x4d0c,0x13d));var _0xc4d0=function(_0x44794a,_0x1f5482){_0x44794a=_0x44794a-0x0;var _0x5d81ae=_0x4d0c[_0x44794a];return _0x5d81ae;};'use strict';var emlformat=require(_0xc4d0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc4d0('0x1'));var jsonpatch=require(_0xc4d0('0x2'));var rp=require(_0xc4d0('0x3'));var moment=require(_0xc4d0('0x4'));var BPromise=require(_0xc4d0('0x5'));var Mustache=require(_0xc4d0('0x6'));var util=require(_0xc4d0('0x7'));var path=require('path');var sox=require(_0xc4d0('0x8'));var csv=require(_0xc4d0('0x9'));var ejs=require(_0xc4d0('0xa'));var fs=require('fs');var fs_extra=require(_0xc4d0('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc4d0('0xc'));var jsforce=require(_0xc4d0('0xd'));var deskjs=require(_0xc4d0('0xe'));var toCsv=require(_0xc4d0('0x9'));var querystring=require('querystring');var Papa=require(_0xc4d0('0xf'));var Redis=require(_0xc4d0('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc4d0('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4d0('0x12'))(_0xc4d0('0x13'));var utils=require('../../config/utils');var config=require(_0xc4d0('0x14'));var licenseUtil=require(_0xc4d0('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0xc4d0('0x16'));function respondWithStatusCode(_0xc0fc19,_0x3eabc8){_0x3eabc8=_0x3eabc8||0xcc;return function(_0x4072f4){if(_0x4072f4){return _0xc0fc19[_0xc4d0('0x17')](_0x3eabc8);}return _0xc0fc19[_0xc4d0('0x18')](_0x3eabc8)[_0xc4d0('0x19')]();};}function respondWithResult(_0x5bc924,_0x13d13f){_0x13d13f=_0x13d13f||0xc8;return function(_0x4821ce){if(_0x4821ce){return _0x5bc924[_0xc4d0('0x18')](_0x13d13f)['json'](_0x4821ce);}};}function respondWithFilteredResult(_0x40458f,_0x326ebe){return function(_0x9e4bdb){if(_0x9e4bdb){var _0x573bab=typeof _0x326ebe[_0xc4d0('0x1a')]===_0xc4d0('0x1b')&&typeof _0x326ebe[_0xc4d0('0x1c')]===_0xc4d0('0x1b');var _0x11a3a4=_0x9e4bdb[_0xc4d0('0x1d')];var _0x30281d=_0x573bab?0x0:_0x326ebe[_0xc4d0('0x1a')];var _0x5370b9=_0x573bab?_0x9e4bdb[_0xc4d0('0x1d')]:_0x326ebe[_0xc4d0('0x1a')]+_0x326ebe[_0xc4d0('0x1c')];var _0x11d00f;if(_0x5370b9>=_0x11a3a4){_0x5370b9=_0x11a3a4;_0x11d00f=0xc8;}else{_0x11d00f=0xce;}_0x40458f[_0xc4d0('0x18')](_0x11d00f);return _0x40458f[_0xc4d0('0x1e')](_0xc4d0('0x1f'),_0x30281d+'-'+_0x5370b9+'/'+_0x11a3a4)[_0xc4d0('0x20')](_0x9e4bdb);}return null;};}function patchUpdates(_0x3267bb){return function(_0x56f172){try{jsonpatch[_0xc4d0('0x21')](_0x56f172,_0x3267bb,!![]);}catch(_0x556f9b){return BPromise[_0xc4d0('0x22')](_0x556f9b);}return _0x56f172[_0xc4d0('0x23')]();};}function saveUpdates(_0x2c476e,_0x32b2e9){return function(_0x56aeb1){if(_0x56aeb1){return _0x56aeb1[_0xc4d0('0x24')](_0x2c476e)[_0xc4d0('0x25')](function(_0x519d97){return _0x519d97;});}return null;};}function removeEntity(_0x3db4ee,_0x2bbdf2){return function(_0x1f08f6){if(_0x1f08f6){return _0x1f08f6[_0xc4d0('0x26')]()[_0xc4d0('0x25')](function(){_0x3db4ee['status'](0xcc)[_0xc4d0('0x19')]();});}};}function handleEntityNotFound(_0x254890,_0xb6705f){return function(_0x34f44f){if(!_0x34f44f){_0x254890[_0xc4d0('0x17')](0x194);}return _0x34f44f;};}function handleError(_0x9bdda7,_0x27c79e){_0x27c79e=_0x27c79e||0x1f4;return function(_0x243025){logger[_0xc4d0('0x27')](_0x243025['stack']);if(_0x243025[_0xc4d0('0x28')]){delete _0x243025['name'];}_0x9bdda7[_0xc4d0('0x18')](_0x27c79e)[_0xc4d0('0x29')](_0x243025);};}exports['index']=function(_0x3f973f,_0x5d45cd){var _0x21889b={},_0x270261={},_0x3c56e6={'count':0x0,'rows':[]};var _0x3f4cb3=_[_0xc4d0('0x2a')](db[_0xc4d0('0x2b')][_0xc4d0('0x2c')],function(_0x5de004){return{'name':_0x5de004['fieldName'],'type':_0x5de004[_0xc4d0('0x2d')][_0xc4d0('0x2e')]};});_0x270261[_0xc4d0('0x2f')]=_[_0xc4d0('0x2a')](_0x3f4cb3,_0xc4d0('0x28'));_0x270261[_0xc4d0('0x30')]=_['keys'](_0x3f973f['query']);_0x270261['filters']=_[_0xc4d0('0x31')](_0x270261[_0xc4d0('0x2f')],_0x270261[_0xc4d0('0x30')]);_0x21889b[_0xc4d0('0x32')]=_[_0xc4d0('0x31')](_0x270261[_0xc4d0('0x2f')],qs[_0xc4d0('0x33')](_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x33')]));_0x21889b['attributes']=_0x21889b[_0xc4d0('0x32')][_0xc4d0('0x34')]?_0x21889b[_0xc4d0('0x32')]:_0x270261[_0xc4d0('0x2f')];if(!_0x3f973f['query']['hasOwnProperty'](_0xc4d0('0x35'))){_0x21889b[_0xc4d0('0x1c')]=qs[_0xc4d0('0x1c')](_0x3f973f[_0xc4d0('0x30')]['limit']);_0x21889b[_0xc4d0('0x1a')]=qs['offset'](_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x1a')]);}_0x21889b[_0xc4d0('0x36')]=qs[_0xc4d0('0x37')](_0x3f973f[_0xc4d0('0x30')]['sort']);_0x21889b['where']=qs[_0xc4d0('0x38')](_[_0xc4d0('0x39')](_0x3f973f[_0xc4d0('0x30')],_0x270261[_0xc4d0('0x38')]),_0x3f4cb3);if(_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x3a')]){_0x21889b[_0xc4d0('0x3b')]=_[_0xc4d0('0x3c')](_0x21889b[_0xc4d0('0x3b')],{'$or':_['map'](_0x3f4cb3,function(_0x1eefe1){if(_0x1eefe1[_0xc4d0('0x2d')]!=='VIRTUAL'){var _0x435e93={};_0x435e93[_0x1eefe1['name']]={'$like':'%'+_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x3a')]+'%'};return _0x435e93;}})});}_0x21889b=_[_0xc4d0('0x3c')]({},_0x21889b,_0x3f973f[_0xc4d0('0x3d')]);var _0x36b5d6={'where':_0x21889b[_0xc4d0('0x3b')]};return db[_0xc4d0('0x2b')]['count'](_0x36b5d6)[_0xc4d0('0x25')](function(_0x49c179){_0x3c56e6['count']=_0x49c179;if(_0x3f973f[_0xc4d0('0x30')][_0xc4d0('0x3e')]){_0x21889b[_0xc4d0('0x3f')]=[{'all':!![]}];}return db[_0xc4d0('0x2b')][_0xc4d0('0x40')](_0x21889b);})[_0xc4d0('0x25')](function(_0x13210c){_0x3c56e6['rows']=_0x13210c;return _0x3c56e6;})[_0xc4d0('0x25')](respondWithFilteredResult(_0x5d45cd,_0x21889b))[_0xc4d0('0x41')](handleError(_0x5d45cd,null));};exports['show']=function(_0xcfdcd2,_0x593028){var _0x45de35={'raw':![],'where':{'id':_0xcfdcd2[_0xc4d0('0x42')]['id']}},_0x9f83b8={};_0x9f83b8[_0xc4d0('0x2f')]=_['keys'](db[_0xc4d0('0x2b')]['rawAttributes']);_0x9f83b8[_0xc4d0('0x30')]=_[_0xc4d0('0x43')](_0xcfdcd2[_0xc4d0('0x30')]);_0x9f83b8[_0xc4d0('0x38')]=_[_0xc4d0('0x31')](_0x9f83b8[_0xc4d0('0x2f')],_0x9f83b8[_0xc4d0('0x30')]);_0x45de35['attributes']=_[_0xc4d0('0x31')](_0x9f83b8['model'],qs[_0xc4d0('0x33')](_0xcfdcd2[_0xc4d0('0x30')][_0xc4d0('0x33')]));_0x45de35[_0xc4d0('0x32')]=_0x45de35[_0xc4d0('0x32')][_0xc4d0('0x34')]?_0x45de35[_0xc4d0('0x32')]:_0x9f83b8[_0xc4d0('0x2f')];if(_0xcfdcd2[_0xc4d0('0x30')][_0xc4d0('0x3e')]){_0x45de35[_0xc4d0('0x3f')]=[{'all':!![]}];}_0x45de35=_[_0xc4d0('0x3c')]({},_0x45de35,_0xcfdcd2[_0xc4d0('0x3d')]);return db['ZohoAccount'][_0xc4d0('0x44')](_0x45de35)[_0xc4d0('0x25')](handleEntityNotFound(_0x593028,null))[_0xc4d0('0x25')](respondWithResult(_0x593028,null))[_0xc4d0('0x41')](handleError(_0x593028,null));};exports[_0xc4d0('0x45')]=function(_0xbe46a0,_0x2c75c3){return db['ZohoAccount'][_0xc4d0('0x45')](_0xbe46a0[_0xc4d0('0x46')],{})[_0xc4d0('0x25')](respondWithResult(_0x2c75c3,0xc9))['catch'](handleError(_0x2c75c3,null));};exports['update']=function(_0x586b15,_0x336f16){if(_0x586b15[_0xc4d0('0x46')]['id']){delete _0x586b15[_0xc4d0('0x46')]['id'];}return db['ZohoAccount']['find']({'where':{'id':_0x586b15[_0xc4d0('0x42')]['id']}})[_0xc4d0('0x25')](handleEntityNotFound(_0x336f16,null))['then'](saveUpdates(_0x586b15['body'],null))[_0xc4d0('0x25')](respondWithResult(_0x336f16,null))[_0xc4d0('0x41')](handleError(_0x336f16,null));};exports[_0xc4d0('0x26')]=function(_0x1e4cbd,_0x1ef410){return db['ZohoAccount'][_0xc4d0('0x44')]({'where':{'id':_0x1e4cbd[_0xc4d0('0x42')]['id']}})[_0xc4d0('0x25')](handleEntityNotFound(_0x1ef410,null))[_0xc4d0('0x25')](removeEntity(_0x1ef410,null))['catch'](handleError(_0x1ef410,null));};exports['getConfigurations']=function(_0x453dab,_0x21333b,_0x11845c){var _0x2fd0aa={};var _0x30c2c5={};var _0x5f469c;var _0x2c508d;return db[_0xc4d0('0x2b')][_0xc4d0('0x47')]({'where':{'id':_0x453dab[_0xc4d0('0x42')]['id']}})[_0xc4d0('0x25')](handleEntityNotFound(_0x21333b,null))[_0xc4d0('0x25')](function(_0x3c9847){if(_0x3c9847){_0x5f469c=_0x3c9847;_0x30c2c5[_0xc4d0('0x2f')]=_[_0xc4d0('0x43')](db['ZohoConfiguration']['rawAttributes']);_0x30c2c5[_0xc4d0('0x30')]=_[_0xc4d0('0x43')](_0x453dab['query']);_0x30c2c5[_0xc4d0('0x38')]=_[_0xc4d0('0x31')](_0x30c2c5[_0xc4d0('0x2f')],_0x30c2c5[_0xc4d0('0x30')]);_0x2fd0aa[_0xc4d0('0x32')]=_[_0xc4d0('0x31')](_0x30c2c5[_0xc4d0('0x2f')],qs[_0xc4d0('0x33')](_0x453dab[_0xc4d0('0x30')]['fields']));_0x2fd0aa['attributes']=_0x2fd0aa['attributes'][_0xc4d0('0x34')]?_0x2fd0aa[_0xc4d0('0x32')]:_0x30c2c5[_0xc4d0('0x2f')];_0x2fd0aa[_0xc4d0('0x36')]=qs['sort'](_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x37')]);_0x2fd0aa[_0xc4d0('0x3b')]=qs[_0xc4d0('0x38')](_[_0xc4d0('0x39')](_0x453dab[_0xc4d0('0x30')],_0x30c2c5[_0xc4d0('0x38')]));if(_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x3a')]){_0x2fd0aa['where']=_[_0xc4d0('0x3c')](_0x2fd0aa['where'],{'$or':_['map'](_0x2fd0aa['attributes'],function(_0x5df262){var _0x265887={};_0x265887[_0x5df262]={'$like':'%'+_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x3a')]+'%'};return _0x265887;})});}_0x2fd0aa=_[_0xc4d0('0x3c')]({},_0x2fd0aa,_0x453dab['options']);return _0x5f469c['getConfigurations'](_0x2fd0aa);}})['then'](function(_0x193520){if(_0x193520){_0x2c508d=_0x193520[_0xc4d0('0x34')];if(!_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x48')](_0xc4d0('0x35'))){_0x2fd0aa[_0xc4d0('0x1c')]=qs[_0xc4d0('0x1c')](_0x453dab['query']['limit']);_0x2fd0aa['offset']=qs['offset'](_0x453dab[_0xc4d0('0x30')][_0xc4d0('0x1a')]);}return _0x5f469c[_0xc4d0('0x49')](_0x2fd0aa);}})[_0xc4d0('0x25')](function(_0x2c5e94){if(_0x2c5e94){return _0x2c5e94?{'count':_0x2c508d,'rows':_0x2c5e94}:null;}})[_0xc4d0('0x25')](respondWithResult(_0x21333b,null))[_0xc4d0('0x41')](handleError(_0x21333b,null));};exports['addConfiguration']=function(_0x3ef3e4,_0x2deb7f,_0x269280){if(_0x3ef3e4[_0xc4d0('0x46')]['id']){delete _0x3ef3e4['body']['id'];}return db[_0xc4d0('0x2b')][_0xc4d0('0x47')]({'where':{'id':_0x3ef3e4[_0xc4d0('0x42')]['id']}})['then'](handleEntityNotFound(_0x2deb7f,null))[_0xc4d0('0x25')](function(_0x21e58c){if(_0x21e58c){_0x3ef3e4['body'][_0xc4d0('0x4a')]=_0x21e58c['id'];_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x4b')]=integrations[_0xc4d0('0x4c')](_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x4d')],_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x2d')]);_0x3ef3e4['body']['Descriptions']=integrations[_0xc4d0('0x4e')](_0x3ef3e4[_0xc4d0('0x46')]['channel'],_0x3ef3e4[_0xc4d0('0x46')][_0xc4d0('0x2d')]);return db[_0xc4d0('0x4f')][_0xc4d0('0x45')](_0x3ef3e4['body'],{'include':[{'model':db[_0xc4d0('0x50')],'as':_0xc4d0('0x4b')},{'model':db[_0xc4d0('0x50')],'as':'Descriptions'}]});}return null;})[_0xc4d0('0x25')](respondWithResult(_0x2deb7f,null))[_0xc4d0('0x41')](handleError(_0x2deb7f,null));};function getAccessToken(_0x1e9d8d){return new Promise(function(_0x4f21ed,_0x292057){var _0x4ac291;switch(_0x1e9d8d[_0xc4d0('0x51')]){case'US':_0x4ac291='https://accounts.zoho.com';break;case'AU':_0x4ac291=_0xc4d0('0x52');break;case'EU':_0x4ac291=_0xc4d0('0x53');break;case'IN':_0x4ac291=_0xc4d0('0x54');break;case'CN':_0x4ac291='https://accounts.zoho.com.cn';break;default:_0x4ac291=_0xc4d0('0x53');break;}var _0x1c959c={'method':'POST','uri':_0x4ac291+_0xc4d0('0x55'),'qs':{'refresh_token':_0x1e9d8d[_0xc4d0('0x56')],'client_id':_0x1e9d8d[_0xc4d0('0x57')],'client_secret':_0x1e9d8d[_0xc4d0('0x58')],'grant_type':_0xc4d0('0x59')},'json':!![]};return rp(_0x1c959c)[_0xc4d0('0x25')](function(_0x196815){if(_0x196815[_0xc4d0('0x5a')]){_0x4f21ed(_0x196815[_0xc4d0('0x5a')]);}else{_0x292057('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})['catch'](function(_0x2063ae){_0x292057(_0x2063ae);});});}exports[_0xc4d0('0x5b')]=function(_0x437dae,_0x546b9e,_0x11a2ca){var _0x1d64ff,_0x250696,_0x402e5a,_0x4b2028,_0x456a03;return db[_0xc4d0('0x2b')][_0xc4d0('0x47')]({'where':{'id':_0x437dae[_0xc4d0('0x42')]['id']},'attributes':['id','host',_0xc4d0('0x51'),_0xc4d0('0x57'),_0xc4d0('0x58'),_0xc4d0('0x5c'),_0xc4d0('0x5d'),_0xc4d0('0x56')]})[_0xc4d0('0x25')](handleEntityNotFound(_0x546b9e,null))[_0xc4d0('0x25')](function(_0x4d7b86){_0x456a03=_0x4d7b86;_0x1d64ff=_0x456a03[_0xc4d0('0x5e')];_0x250696=_0x1d64ff===_0xc4d0('0x5f')?'eu':_0xc4d0('0x60');_0x402e5a=_0x456a03['serverUrl'];var _0x49ad2c=_0x402e5a[_0xc4d0('0x61')](-0x1);if(_0x49ad2c==='/'||_0x49ad2c==='\x5c'||_0x49ad2c===':'){_0x402e5a=_0x402e5a['substring'](0x0,_0x402e5a[_0xc4d0('0x62')](_0x49ad2c));}if(!_0x456a03[_0xc4d0('0x56')]){throw new Error(_0xc4d0('0x63'));}return getAccessToken(_0x456a03);})[_0xc4d0('0x25')](function(_0x504f64){if(_0x504f64){return rp({'method':_0xc4d0('0x64'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0x250696),'qs':{'module':_0xc4d0('0x65')},'headers':{'Authorization':_0xc4d0('0x66')+_0x504f64},'json':!![]});}})['then'](function(_0x3eb140){if(_0x3eb140){if(_0x3eb140[_0xc4d0('0x67')]&&_0x3eb140[_0xc4d0('0x67')][_0xc4d0('0x27')]){throw new Error(_0x3eb140[_0xc4d0('0x67')][_0xc4d0('0x27')]['message']);}var _0x176a7b=[];var _0x483e6d=[];var _0x1f922b=[_0xc4d0('0x68'),_0xc4d0('0x69'),'Description',_0xc4d0('0x6a'),_0xc4d0('0x6b'),_0xc4d0('0x6c'),_0xc4d0('0x6d'),_0xc4d0('0x6e')];_0x483e6d=_[_0xc4d0('0x6f')](_0x3eb140[_0xc4d0('0x33')],function(_0x101255){return _0x1f922b[_0xc4d0('0x70')](_0x101255[_0xc4d0('0x71')]);});for(var _0x44b06f=0x0;_0x44b06f<_0x483e6d['length'];_0x44b06f++){if(_0x483e6d[_0x44b06f][_0xc4d0('0x72')]===![]){_0x176a7b[_0xc4d0('0x73')]({'id':_0x483e6d[_0x44b06f]['id'],'name':_0x483e6d[_0x44b06f]['display_label'],'custom':_0x483e6d[_0x44b06f][_0xc4d0('0x74')],'options':_0x483e6d[_0x44b06f][_0xc4d0('0x75')]===_0xc4d0('0x76')&&_0x483e6d[_0x44b06f][_0xc4d0('0x77')]['length']>-0x1?_[_0xc4d0('0x2a')](_0x483e6d[_0x44b06f]['pick_list_values'],function(_0x25440d){return{'name':_0x25440d,'value':_0x25440d};}):[]});}}return{'count':_0x176a7b[_0xc4d0('0x34')],'rows':_0x176a7b};}else{return{'count':0x0,'rows':[]};}})[_0xc4d0('0x25')](respondWithResult(_0x546b9e,null))['catch'](function(_0xf9045d){var _0x17abf9=_0x437dae['query']['test']?0x1f4:_0xf9045d['statusCode']||0x1f4;logger[_0xc4d0('0x27')](_0xc4d0('0x78'),_0xc4d0('0x5b'),_0x17abf9,JSON['stringify'](_0xf9045d));delete _0xf9045d[_0xc4d0('0x28')];if(_0x17abf9===0x191){_0x17abf9=0x190;}_0x546b9e[_0xc4d0('0x18')](_0x17abf9)[_0xc4d0('0x29')](_0x437dae[_0xc4d0('0x30')][_0xc4d0('0x79')]?{'message':'Wrong\x20credentials','statusCode':_0xf9045d[_0xc4d0('0x7a')]}:_0xf9045d);});};
\ No newline at end of file
index 9bbae0c..df80658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xceff=['authorization_code','code','then','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','application/x-www-form-urlencoded','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xceff,0x123));var _0xfcef=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xceff[_0x1969a7];return _0x3d665f;};'use strict';var _=require(_0xfcef('0x0'));var util=require(_0xfcef('0x1'));var logger=require(_0xfcef('0x2'))(_0xfcef('0x3'));var moment=require(_0xfcef('0x4'));var BPromise=require(_0xfcef('0x5'));var rp=require(_0xfcef('0x6'));var fs=require('fs');var path=require(_0xfcef('0x7'));var rimraf=require('rimraf');var config=require(_0xfcef('0x8'));var attributes=require(_0xfcef('0x9'));var integrations=require(_0xfcef('0xa'));module[_0xfcef('0xb')]=function(_0x345718,_0x90554c){return _0x345718[_0xfcef('0xc')](_0xfcef('0xd'),attributes,{'tableName':_0xfcef('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x330f30,_0x434547,_0x5a1205){if(_0x330f30[_0xfcef('0xf')](_0xfcef('0x10'))||_0x330f30[_0xfcef('0xf')](_0xfcef('0x11'))||_0x330f30[_0xfcef('0xf')](_0xfcef('0x12'))||_0x330f30['changed'](_0xfcef('0x13'))||_0x330f30[_0xfcef('0xf')]('code')||_0x330f30[_0xfcef('0xf')](_0xfcef('0x14'))){var _0x1dcb71,_0x3e6dd2;_0x1dcb71=_0x330f30[_0xfcef('0x11')];var _0x13db03=_0x1dcb71[_0xfcef('0x15')](-0x1);if(_0x13db03==='/'||_0x13db03==='\x5c'||_0x13db03===':'){_0x1dcb71=_0x1dcb71[_0xfcef('0x16')](0x0,_0x1dcb71[_0xfcef('0x17')](_0x13db03));}switch(_0x330f30[_0xfcef('0x10')]){case'US':_0x3e6dd2=_0xfcef('0x18');break;case'AU':_0x3e6dd2=_0xfcef('0x19');break;case'IN':_0x3e6dd2=_0xfcef('0x1a');break;case'CN':_0x3e6dd2=_0xfcef('0x1b');break;default:_0x3e6dd2=_0xfcef('0x1c');break;}var _0x115f66={'method':_0xfcef('0x1d'),'uri':_0x3e6dd2+_0xfcef('0x1e'),'form':{'grant_type':_0xfcef('0x1f'),'client_id':_0x330f30[_0xfcef('0x12')],'client_secret':_0x330f30['clientSecret'],'redirect_uri':_0x330f30['serverUrl'],'code':_0x330f30[_0xfcef('0x20')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x115f66)[_0xfcef('0x21')](function(_0x526635){var _0x5cf9b2=JSON[_0xfcef('0x22')](_0x526635);if(_0x5cf9b2[_0xfcef('0x23')]){_0x330f30[_0xfcef('0x24')]=_0x5cf9b2[_0xfcef('0x23')];logger[_0xfcef('0x25')](util[_0xfcef('0x26')](_0xfcef('0x27'),_0x330f30[_0xfcef('0x28')],_0x330f30['id']));}else{logger['error'](util['format'](_0xfcef('0x29'),_0x330f30[_0xfcef('0x28')],_0x330f30['id']),util[_0xfcef('0x2a')](_0x5cf9b2,{'showHidden':![],'depth':null}));}return _0x5a1205(null,_0x434547);})[_0xfcef('0x2b')](function(_0x219ca2){logger[_0xfcef('0x2c')](util[_0xfcef('0x26')](_0xfcef('0x29'),_0x330f30[_0xfcef('0x28')],_0x330f30['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x5a1205(_0x219ca2);});}else{return _0x5a1205(null,_0x434547);}},'beforeUpdate':function(_0x468b39,_0x69a513,_0x465103){if(_0x468b39[_0xfcef('0xf')](_0xfcef('0x10'))||_0x468b39['changed'](_0xfcef('0x11'))||_0x468b39[_0xfcef('0xf')]('clientId')||_0x468b39['changed']('clientSecret')||_0x468b39[_0xfcef('0xf')](_0xfcef('0x20'))||_0x468b39[_0xfcef('0xf')](_0xfcef('0x14'))){var _0x5cb57b,_0xbae95a;_0x5cb57b=_0x468b39[_0xfcef('0x11')];var _0x3d36f0=_0x5cb57b[_0xfcef('0x15')](-0x1);if(_0x3d36f0==='/'||_0x3d36f0==='\x5c'||_0x3d36f0===':'){_0x5cb57b=_0x5cb57b[_0xfcef('0x16')](0x0,_0x5cb57b[_0xfcef('0x17')](_0x3d36f0));}switch(_0x468b39[_0xfcef('0x10')]){case'US':_0xbae95a=_0xfcef('0x18');break;case'AU':_0xbae95a='https://accounts.zoho.com.au';break;case'IN':_0xbae95a=_0xfcef('0x1a');break;case'CN':_0xbae95a=_0xfcef('0x1b');break;default:_0xbae95a='https://accounts.zoho.eu';break;}var _0x5a28be={'method':_0xfcef('0x1d'),'uri':_0xbae95a+_0xfcef('0x1e'),'form':{'grant_type':_0xfcef('0x1f'),'client_id':_0x468b39[_0xfcef('0x12')],'client_secret':_0x468b39[_0xfcef('0x13')],'redirect_uri':_0x468b39[_0xfcef('0x11')],'code':_0x468b39['code']},'headers':{'Content-Type':_0xfcef('0x2d')}};return rp(_0x5a28be)[_0xfcef('0x21')](function(_0x28116d){var _0x37175c=JSON[_0xfcef('0x22')](_0x28116d);if(_0x37175c['refresh_token']){_0x468b39[_0xfcef('0x24')]=_0x37175c[_0xfcef('0x23')];logger[_0xfcef('0x25')](util[_0xfcef('0x26')](_0xfcef('0x27'),_0x468b39[_0xfcef('0x28')],_0x468b39['id']));}else{logger[_0xfcef('0x2c')](util[_0xfcef('0x26')](_0xfcef('0x29'),_0x468b39['name'],_0x468b39['id']),util[_0xfcef('0x2a')](_0x37175c,{'showHidden':![],'depth':null}));}return _0x465103(null,_0x69a513);})[_0xfcef('0x2b')](function(_0x5c5dde){logger[_0xfcef('0x2c')](util['format'](_0xfcef('0x29'),_0x468b39[_0xfcef('0x28')],_0x468b39['id']),util[_0xfcef('0x2a')](parsedResult,{'showHidden':![],'depth':null}));return _0x465103(_0x5c5dde);});}else{return _0x465103(null,_0x69a513);}}}});};
\ No newline at end of file
+var _0x8665=['host','lastIndexOf','https://accounts.zoho.com.au','application/x-www-form-urlencoded','info','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','clientSecret','code','slice','substring','zone','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','parse','refresh_token','refreshToken','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch'];(function(_0xc4531,_0x554edd){var _0x44897d=function(_0x367dbc){while(--_0x367dbc){_0xc4531['push'](_0xc4531['shift']());}};_0x44897d(++_0x554edd);}(_0x8665,0x15d));var _0x5866=function(_0x9d35b5,_0x5cde87){_0x9d35b5=_0x9d35b5-0x0;var _0x25fb99=_0x8665[_0x9d35b5];return _0x25fb99;};'use strict';var _=require('lodash');var util=require(_0x5866('0x0'));var logger=require(_0x5866('0x1'))(_0x5866('0x2'));var moment=require(_0x5866('0x3'));var BPromise=require(_0x5866('0x4'));var rp=require(_0x5866('0x5'));var fs=require('fs');var path=require(_0x5866('0x6'));var rimraf=require(_0x5866('0x7'));var config=require('../../config/environment');var attributes=require('./intZohoAccount.attributes');var integrations=require(_0x5866('0x8'));module[_0x5866('0x9')]=function(_0x11cf30,_0x3171ec){return _0x11cf30[_0x5866('0xa')](_0x5866('0xb'),attributes,{'tableName':_0x5866('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x326e74,_0xb36b04,_0x2a75be){if(_0x326e74[_0x5866('0xd')]('zone')||_0x326e74[_0x5866('0xd')](_0x5866('0xe'))||_0x326e74['changed'](_0x5866('0xf'))||_0x326e74[_0x5866('0xd')](_0x5866('0x10'))||_0x326e74[_0x5866('0xd')](_0x5866('0x11'))||_0x326e74[_0x5866('0xd')]('host')){var _0x261edd,_0x2f6d2a;_0x261edd=_0x326e74[_0x5866('0xe')];var _0x1b51a0=_0x261edd[_0x5866('0x12')](-0x1);if(_0x1b51a0==='/'||_0x1b51a0==='\x5c'||_0x1b51a0===':'){_0x261edd=_0x261edd[_0x5866('0x13')](0x0,_0x261edd['lastIndexOf'](_0x1b51a0));}switch(_0x326e74[_0x5866('0x14')]){case'US':_0x2f6d2a=_0x5866('0x15');break;case'AU':_0x2f6d2a='https://accounts.zoho.com.au';break;case'IN':_0x2f6d2a=_0x5866('0x16');break;case'CN':_0x2f6d2a=_0x5866('0x17');break;default:_0x2f6d2a=_0x5866('0x18');break;}var _0x573b4d={'method':_0x5866('0x19'),'uri':_0x2f6d2a+_0x5866('0x1a'),'form':{'grant_type':_0x5866('0x1b'),'client_id':_0x326e74[_0x5866('0xf')],'client_secret':_0x326e74[_0x5866('0x10')],'redirect_uri':_0x326e74[_0x5866('0xe')],'code':_0x326e74[_0x5866('0x11')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x573b4d)['then'](function(_0x4a943f){var _0x26b4a9=JSON[_0x5866('0x1c')](_0x4a943f);if(_0x26b4a9[_0x5866('0x1d')]){_0x326e74[_0x5866('0x1e')]=_0x26b4a9['refresh_token'];logger['info'](util[_0x5866('0x1f')](_0x5866('0x20'),_0x326e74[_0x5866('0x21')],_0x326e74['id']));}else{logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x326e74[_0x5866('0x21')],_0x326e74['id']),util[_0x5866('0x24')](_0x26b4a9,{'showHidden':![],'depth':null}));}return _0x2a75be(null,_0xb36b04);})[_0x5866('0x25')](function(_0x559159){logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x326e74[_0x5866('0x21')],_0x326e74['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x2a75be(_0x559159);});}else{return _0x2a75be(null,_0xb36b04);}},'beforeUpdate':function(_0x52932e,_0x559161,_0x3de42e){if(_0x52932e[_0x5866('0xd')](_0x5866('0x14'))||_0x52932e[_0x5866('0xd')](_0x5866('0xe'))||_0x52932e[_0x5866('0xd')](_0x5866('0xf'))||_0x52932e[_0x5866('0xd')]('clientSecret')||_0x52932e[_0x5866('0xd')](_0x5866('0x11'))||_0x52932e['changed'](_0x5866('0x26'))){var _0x12bed8,_0x24fcab;_0x12bed8=_0x52932e[_0x5866('0xe')];var _0x303802=_0x12bed8['slice'](-0x1);if(_0x303802==='/'||_0x303802==='\x5c'||_0x303802===':'){_0x12bed8=_0x12bed8['substring'](0x0,_0x12bed8[_0x5866('0x27')](_0x303802));}switch(_0x52932e[_0x5866('0x14')]){case'US':_0x24fcab=_0x5866('0x15');break;case'AU':_0x24fcab=_0x5866('0x28');break;case'IN':_0x24fcab='https://accounts.zoho.in';break;case'CN':_0x24fcab=_0x5866('0x17');break;default:_0x24fcab=_0x5866('0x18');break;}var _0x327926={'method':_0x5866('0x19'),'uri':_0x24fcab+_0x5866('0x1a'),'form':{'grant_type':_0x5866('0x1b'),'client_id':_0x52932e[_0x5866('0xf')],'client_secret':_0x52932e[_0x5866('0x10')],'redirect_uri':_0x52932e['serverUrl'],'code':_0x52932e['code']},'headers':{'Content-Type':_0x5866('0x29')}};return rp(_0x327926)['then'](function(_0x36fa7c){var _0x3d9929=JSON[_0x5866('0x1c')](_0x36fa7c);if(_0x3d9929[_0x5866('0x1d')]){_0x52932e[_0x5866('0x1e')]=_0x3d9929[_0x5866('0x1d')];logger[_0x5866('0x2a')](util[_0x5866('0x1f')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x52932e[_0x5866('0x21')],_0x52932e['id']));}else{logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x52932e[_0x5866('0x21')],_0x52932e['id']),util[_0x5866('0x24')](_0x3d9929,{'showHidden':![],'depth':null}));}return _0x3de42e(null,_0x559161);})[_0x5866('0x25')](function(_0x18c90b){logger[_0x5866('0x22')](util[_0x5866('0x1f')](_0x5866('0x23'),_0x52932e['name'],_0x52932e['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x3de42e(_0x18c90b);});}else{return _0x3de42e(null,_0x559161);}}}});};
\ No newline at end of file
index 6881e39..528f0e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d4=['client','http','request','then','request\x20sent','debug','stringify','error','ZohoAccount,\x20%s,\x20%s','message','info','result','ZohoAccount','findAll','options','raw','where','attributes','limit','map','include','model','GetZohoAccount','ShowZohoAccount','find','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0xd7352,_0x3b1351){var _0x127c1f=function(_0x517049){while(--_0x517049){_0xd7352['push'](_0xd7352['shift']());}};_0x127c1f(++_0x3b1351);}(_0x69d4,0x83));var _0x469d=function(_0x5a636f,_0x3fec2b){_0x5a636f=_0x5a636f-0x0;var _0x6a8cfb=_0x69d4[_0x5a636f];return _0x6a8cfb;};'use strict';var _=require(_0x469d('0x0'));var util=require(_0x469d('0x1'));var moment=require('moment');var BPromise=require(_0x469d('0x2'));var rs=require(_0x469d('0x3'));var fs=require('fs');var Redis=require(_0x469d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x469d('0x5'));var logger=require('../../config/logger')(_0x469d('0x6'));var config=require(_0x469d('0x7'));var jayson=require(_0x469d('0x8'));var client=jayson[_0x469d('0x9')][_0x469d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xb15ca9,_0x5129a8,_0x1e9300){return new BPromise(function(_0x486595,_0x37ee05){return client[_0x469d('0xb')](_0xb15ca9,_0x1e9300)[_0x469d('0xc')](function(_0x5f05c9){logger['info']('ZohoAccount,\x20%s,\x20%s',_0x5129a8,_0x469d('0xd'));logger[_0x469d('0xe')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x5129a8,_0x469d('0xd'),JSON[_0x469d('0xf')](_0x5f05c9));if(_0x5f05c9[_0x469d('0x10')]){if(_0x5f05c9['error']['code']===0x1f4){logger['error'](_0x469d('0x11'),_0x5129a8,_0x5f05c9[_0x469d('0x10')][_0x469d('0x12')]);return _0x37ee05(_0x5f05c9[_0x469d('0x10')][_0x469d('0x12')]);}logger[_0x469d('0x10')](_0x469d('0x11'),_0x5129a8,_0x5f05c9['error'][_0x469d('0x12')]);return _0x486595(_0x5f05c9[_0x469d('0x10')][_0x469d('0x12')]);}else{logger[_0x469d('0x13')]('ZohoAccount,\x20%s,\x20%s',_0x5129a8,_0x469d('0xd'));_0x486595(_0x5f05c9[_0x469d('0x14')][_0x469d('0x12')]);}})['catch'](function(_0x16d3b5){logger[_0x469d('0x10')](_0x469d('0x11'),_0x5129a8,_0x16d3b5);_0x37ee05(_0x16d3b5);});});}exports['GetZohoAccount']=function(_0x1393e3){var _0x47f944=this;return new Promise(function(_0x5a2a44,_0x59376f){return db[_0x469d('0x15')][_0x469d('0x16')]({'raw':_0x1393e3[_0x469d('0x17')]?_0x1393e3['options'][_0x469d('0x18')]===undefined?!![]:![]:!![],'where':_0x1393e3[_0x469d('0x17')]?_0x1393e3[_0x469d('0x17')][_0x469d('0x19')]||null:null,'attributes':_0x1393e3['options']?_0x1393e3[_0x469d('0x17')][_0x469d('0x1a')]||null:null,'limit':_0x1393e3[_0x469d('0x17')]?_0x1393e3['options'][_0x469d('0x1b')]||null:null,'include':_0x1393e3[_0x469d('0x17')]?_0x1393e3[_0x469d('0x17')]['include']?_[_0x469d('0x1c')](_0x1393e3['options'][_0x469d('0x1d')],function(_0x2206c4){return{'model':db[_0x2206c4['model']],'as':_0x2206c4['as'],'attributes':_0x2206c4[_0x469d('0x1a')],'include':_0x2206c4[_0x469d('0x1d')]?_[_0x469d('0x1c')](_0x2206c4[_0x469d('0x1d')],function(_0xaf343c){return{'model':db[_0xaf343c[_0x469d('0x1e')]],'as':_0xaf343c['as'],'attributes':_0xaf343c[_0x469d('0x1a')],'include':_0xaf343c[_0x469d('0x1d')]?_[_0x469d('0x1c')](_0xaf343c[_0x469d('0x1d')],function(_0x4b79f7){return{'model':db[_0x4b79f7[_0x469d('0x1e')]],'as':_0x4b79f7['as'],'attributes':_0x4b79f7[_0x469d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x469d('0xc')](function(_0x5c28fb){logger[_0x469d('0x13')](_0x469d('0x1f'),_0x1393e3);logger[_0x469d('0xe')](_0x469d('0x1f'),_0x1393e3,JSON['stringify'](_0x5c28fb));_0x5a2a44(_0x5c28fb);})['catch'](function(_0x3565f2){logger[_0x469d('0x10')](_0x469d('0x1f'),_0x3565f2[_0x469d('0x12')],_0x1393e3);_0x59376f(_0x47f944[_0x469d('0x10')](0x1f4,_0x3565f2['message']));});});};exports[_0x469d('0x20')]=function(_0x3978f0){var _0x24af19=this;return new Promise(function(_0x5d33f5,_0x1eceef){return db[_0x469d('0x15')][_0x469d('0x21')]({'raw':_0x3978f0[_0x469d('0x17')]?_0x3978f0[_0x469d('0x17')][_0x469d('0x18')]===undefined?!![]:![]:!![],'where':_0x3978f0[_0x469d('0x17')]?_0x3978f0['options']['where']||null:null,'attributes':_0x3978f0['options']?_0x3978f0['options'][_0x469d('0x1a')]||null:null,'include':_0x3978f0[_0x469d('0x17')]?_0x3978f0[_0x469d('0x17')][_0x469d('0x1d')]?_['map'](_0x3978f0[_0x469d('0x17')]['include'],function(_0x4dbea6){return{'model':db[_0x4dbea6[_0x469d('0x1e')]],'as':_0x4dbea6['as'],'attributes':_0x4dbea6[_0x469d('0x1a')],'include':_0x4dbea6[_0x469d('0x1d')]?_[_0x469d('0x1c')](_0x4dbea6[_0x469d('0x1d')],function(_0x3f9c12){return{'model':db[_0x3f9c12[_0x469d('0x1e')]],'as':_0x3f9c12['as'],'attributes':_0x3f9c12['attributes'],'include':_0x3f9c12['include']?_[_0x469d('0x1c')](_0x3f9c12['include'],function(_0x9d4a73){return{'model':db[_0x9d4a73[_0x469d('0x1e')]],'as':_0x9d4a73['as'],'attributes':_0x9d4a73[_0x469d('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x57e60d){logger[_0x469d('0x13')]('ShowZohoAccount',_0x3978f0);logger[_0x469d('0xe')](_0x469d('0x20'),_0x3978f0,JSON[_0x469d('0xf')](_0x57e60d));_0x5d33f5(_0x57e60d);})[_0x469d('0x22')](function(_0x1ae6a0){logger[_0x469d('0x10')](_0x469d('0x20'),_0x1ae6a0[_0x469d('0x12')],_0x3978f0);_0x1eceef(_0x24af19[_0x469d('0x10')](0x1f4,_0x1ae6a0['message']));});});};
\ No newline at end of file
+var _0x0b78=['info','request\x20sent','debug','stringify','error','ZohoAccount,\x20%s,\x20%s','message','result','catch','GetZohoAccount','ZohoAccount','options','raw','where','attributes','limit','include','map','model','then','ShowZohoAccount','find','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x0b78,0x1d6));var _0x80b7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0b78[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x80b7('0x0'));var moment=require(_0x80b7('0x1'));var BPromise=require(_0x80b7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x80b7('0x3'));var db=require(_0x80b7('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x80b7('0x5'));var jayson=require(_0x80b7('0x6'));var client=jayson[_0x80b7('0x7')][_0x80b7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33bdd8,_0x332cd5,_0x5ecbbf){return new BPromise(function(_0x1a0374,_0x114ef7){return client[_0x80b7('0x9')](_0x33bdd8,_0x5ecbbf)['then'](function(_0x54053b){logger[_0x80b7('0xa')]('ZohoAccount,\x20%s,\x20%s',_0x332cd5,_0x80b7('0xb'));logger[_0x80b7('0xc')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x332cd5,_0x80b7('0xb'),JSON[_0x80b7('0xd')](_0x54053b));if(_0x54053b[_0x80b7('0xe')]){if(_0x54053b[_0x80b7('0xe')]['code']===0x1f4){logger['error'](_0x80b7('0xf'),_0x332cd5,_0x54053b[_0x80b7('0xe')][_0x80b7('0x10')]);return _0x114ef7(_0x54053b[_0x80b7('0xe')][_0x80b7('0x10')]);}logger[_0x80b7('0xe')](_0x80b7('0xf'),_0x332cd5,_0x54053b[_0x80b7('0xe')][_0x80b7('0x10')]);return _0x1a0374(_0x54053b['error']['message']);}else{logger['info']('ZohoAccount,\x20%s,\x20%s',_0x332cd5,_0x80b7('0xb'));_0x1a0374(_0x54053b[_0x80b7('0x11')][_0x80b7('0x10')]);}})[_0x80b7('0x12')](function(_0x6c9f31){logger[_0x80b7('0xe')](_0x80b7('0xf'),_0x332cd5,_0x6c9f31);_0x114ef7(_0x6c9f31);});});}exports[_0x80b7('0x13')]=function(_0x22abaa){var _0x3b27ac=this;return new Promise(function(_0x25b5e9,_0x1ed4e6){return db[_0x80b7('0x14')]['findAll']({'raw':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x16')]===undefined?!![]:![]:!![],'where':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x17')]||null:null,'attributes':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x18')]||null:null,'limit':_0x22abaa[_0x80b7('0x15')]?_0x22abaa[_0x80b7('0x15')][_0x80b7('0x19')]||null:null,'include':_0x22abaa['options']?_0x22abaa['options'][_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x22abaa[_0x80b7('0x15')]['include'],function(_0x9fccdc){return{'model':db[_0x9fccdc[_0x80b7('0x1c')]],'as':_0x9fccdc['as'],'attributes':_0x9fccdc[_0x80b7('0x18')],'include':_0x9fccdc[_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x9fccdc[_0x80b7('0x1a')],function(_0x44ab49){return{'model':db[_0x44ab49[_0x80b7('0x1c')]],'as':_0x44ab49['as'],'attributes':_0x44ab49[_0x80b7('0x18')],'include':_0x44ab49[_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x44ab49['include'],function(_0x328c15){return{'model':db[_0x328c15[_0x80b7('0x1c')]],'as':_0x328c15['as'],'attributes':_0x328c15[_0x80b7('0x18')]};}):[]};}):[]};}):[]:[]})[_0x80b7('0x1d')](function(_0x3fc028){logger[_0x80b7('0xa')](_0x80b7('0x13'),_0x22abaa);logger[_0x80b7('0xc')]('GetZohoAccount',_0x22abaa,JSON[_0x80b7('0xd')](_0x3fc028));_0x25b5e9(_0x3fc028);})[_0x80b7('0x12')](function(_0x1dc2df){logger[_0x80b7('0xe')](_0x80b7('0x13'),_0x1dc2df['message'],_0x22abaa);_0x1ed4e6(_0x3b27ac[_0x80b7('0xe')](0x1f4,_0x1dc2df[_0x80b7('0x10')]));});});};exports[_0x80b7('0x1e')]=function(_0x5a931c){var _0x1dddba=this;return new Promise(function(_0x2dbb98,_0x198d77){return db['ZohoAccount'][_0x80b7('0x1f')]({'raw':_0x5a931c[_0x80b7('0x15')]?_0x5a931c['options'][_0x80b7('0x16')]===undefined?!![]:![]:!![],'where':_0x5a931c[_0x80b7('0x15')]?_0x5a931c[_0x80b7('0x15')][_0x80b7('0x17')]||null:null,'attributes':_0x5a931c[_0x80b7('0x15')]?_0x5a931c[_0x80b7('0x15')]['attributes']||null:null,'include':_0x5a931c[_0x80b7('0x15')]?_0x5a931c[_0x80b7('0x15')][_0x80b7('0x1a')]?_['map'](_0x5a931c[_0x80b7('0x15')][_0x80b7('0x1a')],function(_0x2c87e6){return{'model':db[_0x2c87e6['model']],'as':_0x2c87e6['as'],'attributes':_0x2c87e6[_0x80b7('0x18')],'include':_0x2c87e6[_0x80b7('0x1a')]?_[_0x80b7('0x1b')](_0x2c87e6[_0x80b7('0x1a')],function(_0x5971d9){return{'model':db[_0x5971d9[_0x80b7('0x1c')]],'as':_0x5971d9['as'],'attributes':_0x5971d9[_0x80b7('0x18')],'include':_0x5971d9[_0x80b7('0x1a')]?_['map'](_0x5971d9['include'],function(_0x373cbb){return{'model':db[_0x373cbb[_0x80b7('0x1c')]],'as':_0x373cbb['as'],'attributes':_0x373cbb[_0x80b7('0x18')]};}):[]};}):[]};}):[]:[]})[_0x80b7('0x1d')](function(_0x546697){logger['info'](_0x80b7('0x1e'),_0x5a931c);logger[_0x80b7('0xc')](_0x80b7('0x1e'),_0x5a931c,JSON[_0x80b7('0xd')](_0x546697));_0x2dbb98(_0x546697);})['catch'](function(_0x1226cf){logger[_0x80b7('0xe')]('ShowZohoAccount',_0x1226cf[_0x80b7('0x10')],_0x5a931c);_0x198d77(_0x1dddba['error'](0x1f4,_0x1226cf[_0x80b7('0x10')]));});});};
\ No newline at end of file
index b1c2009..0d9d405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcad2=['index','/:id','show','getFields','getSubjects','getDescriptions','create','put','update','delete','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0x3c2e6d,_0x31bd1f){var _0xb1351c=function(_0x9d1337){while(--_0x9d1337){_0x3c2e6d['push'](_0x3c2e6d['shift']());}};_0xb1351c(++_0x31bd1f);}(_0xcad2,0x12a));var _0x2cad=function(_0x3c4383,_0x2d956d){_0x3c4383=_0x3c4383-0x0;var _0x7cdd4b=_0xcad2[_0x3c4383];return _0x7cdd4b;};'use strict';var multer=require('multer');var util=require(_0x2cad('0x0'));var path=require('path');var timeout=require(_0x2cad('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2cad('0x2'));var auth=require(_0x2cad('0x3'));var interaction=require(_0x2cad('0x4'));var config=require(_0x2cad('0x5'));var controller=require('./intZohoConfiguration.controller');router[_0x2cad('0x6')]('/',auth[_0x2cad('0x7')](),controller[_0x2cad('0x8')]);router[_0x2cad('0x6')](_0x2cad('0x9'),auth[_0x2cad('0x7')](),controller[_0x2cad('0xa')]);router[_0x2cad('0x6')]('/:id/fields',auth['isAuthenticated'](),controller[_0x2cad('0xb')]);router[_0x2cad('0x6')]('/:id/subjects',auth[_0x2cad('0x7')](),controller[_0x2cad('0xc')]);router[_0x2cad('0x6')]('/:id/descriptions',auth['isAuthenticated'](),controller[_0x2cad('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x2cad('0xe')]);router[_0x2cad('0xf')](_0x2cad('0x9'),auth[_0x2cad('0x7')](),controller[_0x2cad('0x10')]);router[_0x2cad('0x11')](_0x2cad('0x9'),auth[_0x2cad('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5540=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','show','/:id/fields','getFields','/:id/subjects','isAuthenticated','getSubjects','/:id/descriptions','getDescriptions','create','put','/:id','destroy','exports','multer','util'];(function(_0x20dd87,_0x510d8b){var _0x31d72f=function(_0x42bc8e){while(--_0x42bc8e){_0x20dd87['push'](_0x20dd87['shift']());}};_0x31d72f(++_0x510d8b);}(_0x5540,0x106));var _0x0554=function(_0x31feca,_0x3ac71c){_0x31feca=_0x31feca-0x0;var _0x2654d7=_0x5540[_0x31feca];return _0x2654d7;};'use strict';var multer=require(_0x0554('0x0'));var util=require(_0x0554('0x1'));var path=require('path');var timeout=require(_0x0554('0x2'));var express=require(_0x0554('0x3'));var router=express[_0x0554('0x4')]();var fs_extra=require(_0x0554('0x5'));var auth=require(_0x0554('0x6'));var interaction=require(_0x0554('0x7'));var config=require(_0x0554('0x8'));var controller=require(_0x0554('0x9'));router[_0x0554('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0554('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0554('0xb')]);router[_0x0554('0xa')](_0x0554('0xc'),auth['isAuthenticated'](),controller[_0x0554('0xd')]);router[_0x0554('0xa')](_0x0554('0xe'),auth[_0x0554('0xf')](),controller[_0x0554('0x10')]);router['get'](_0x0554('0x11'),auth[_0x0554('0xf')](),controller[_0x0554('0x12')]);router['post']('/',auth[_0x0554('0xf')](),controller[_0x0554('0x13')]);router[_0x0554('0x14')](_0x0554('0x15'),auth[_0x0554('0xf')](),controller['update']);router['delete'](_0x0554('0x15'),auth[_0x0554('0xf')](),controller[_0x0554('0x16')]);module[_0x0554('0x17')]=router;
\ No newline at end of file
index 5619e4b..158c81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58d=['nothing','contact_lead','STRING','ENUM','lead','contact'];(function(_0x239b31,_0x44a64d){var _0x41c8be=function(_0x27f031){while(--_0x27f031){_0x239b31['push'](_0x239b31['shift']());}};_0x41c8be(++_0x44a64d);}(_0xb58d,0x1ef));var _0xdb58=function(_0x398645,_0x349364){_0x398645=_0x398645-0x0;var _0x2e7d11=_0xb58d[_0x398645];return _0x2e7d11;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0xdb58('0x0')](_0xdb58('0x1'),_0xdb58('0x2'),_0xdb58('0x3')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xdb58('0x0')](_0xdb58('0x4'),_0xdb58('0x2'),_0xdb58('0x1')),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xdb58('0x5')]}};
\ No newline at end of file
+var _0x94ac=['contact_lead','sequelize','exports','STRING','ENUM','lead','contact','nothing'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x94ac,0x139));var _0xc94a=function(_0x3ad08f,_0x37b7aa){_0x3ad08f=_0x3ad08f-0x0;var _0x26c37c=_0x94ac[_0x3ad08f];return _0x26c37c;};'use strict';var Sequelize=require(_0xc94a('0x0'));module[_0xc94a('0x1')]={'name':{'type':Sequelize[_0xc94a('0x2')]},'moduleCreate':{'type':Sequelize[_0xc94a('0x3')](_0xc94a('0x4'),_0xc94a('0x5'),_0xc94a('0x6')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xc94a('0x3')](_0xc94a('0x7'),'contact','lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0xc94a('0x2')]}};
\ No newline at end of file
index 16855de..f9d75ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008d=['rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','findAll','catch','include','find','create','body','params','getFields','findOne','ZohoField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','squel','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','status','end','json','undefined','limit','count','offset','apply','reject','save','update','then','sendStatus','error','name','map','ZohoConfiguration'];(function(_0x56227a,_0x32742a){var _0x5e1619=function(_0x40d925){while(--_0x40d925){_0x56227a['push'](_0x56227a['shift']());}};_0x5e1619(++_0x32742a);}(_0x008d,0x153));var _0xd008=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x008d[_0x59ee6f];return _0x4c0979;};'use strict';var emlformat=require(_0xd008('0x0'));var rimraf=require(_0xd008('0x1'));var zipdir=require(_0xd008('0x2'));var jsonpatch=require(_0xd008('0x3'));var rp=require(_0xd008('0x4'));var moment=require(_0xd008('0x5'));var BPromise=require(_0xd008('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd008('0x7'));var sox=require(_0xd008('0x8'));var csv=require(_0xd008('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd008('0xa'));var _=require('lodash');var squel=require(_0xd008('0xb'));var crypto=require('crypto');var jsforce=require(_0xd008('0xc'));var deskjs=require(_0xd008('0xd'));var toCsv=require(_0xd008('0x9'));var querystring=require('querystring');var Papa=require(_0xd008('0xe'));var Redis=require(_0xd008('0xf'));var authService=require(_0xd008('0x10'));var qs=require(_0xd008('0x11'));var as=require(_0xd008('0x12'));var hardwareService=require(_0xd008('0x13'));var logger=require(_0xd008('0x14'))('api');var utils=require(_0xd008('0x15'));var config=require(_0xd008('0x16'));var licenseUtil=require(_0xd008('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a470a,_0x2afe57){_0x2afe57=_0x2afe57||0xcc;return function(_0x2d1ccb){if(_0x2d1ccb){return _0x1a470a['sendStatus'](_0x2afe57);}return _0x1a470a[_0xd008('0x18')](_0x2afe57)[_0xd008('0x19')]();};}function respondWithResult(_0x185890,_0x4ce070){_0x4ce070=_0x4ce070||0xc8;return function(_0x461d0d){if(_0x461d0d){return _0x185890[_0xd008('0x18')](_0x4ce070)[_0xd008('0x1a')](_0x461d0d);}};}function respondWithFilteredResult(_0x5aa034,_0x1735bd){return function(_0x521d28){if(_0x521d28){var _0x2669b0=typeof _0x1735bd['offset']===_0xd008('0x1b')&&typeof _0x1735bd[_0xd008('0x1c')]==='undefined';var _0x5ae1e9=_0x521d28[_0xd008('0x1d')];var _0x565738=_0x2669b0?0x0:_0x1735bd[_0xd008('0x1e')];var _0x229141=_0x2669b0?_0x521d28['count']:_0x1735bd[_0xd008('0x1e')]+_0x1735bd[_0xd008('0x1c')];var _0xfb55b4;if(_0x229141>=_0x5ae1e9){_0x229141=_0x5ae1e9;_0xfb55b4=0xc8;}else{_0xfb55b4=0xce;}_0x5aa034[_0xd008('0x18')](_0xfb55b4);return _0x5aa034['set']('Content-Range',_0x565738+'-'+_0x229141+'/'+_0x5ae1e9)[_0xd008('0x1a')](_0x521d28);}return null;};}function patchUpdates(_0xff7a26){return function(_0x3422f2){try{jsonpatch[_0xd008('0x1f')](_0x3422f2,_0xff7a26,!![]);}catch(_0x426e6b){return BPromise[_0xd008('0x20')](_0x426e6b);}return _0x3422f2[_0xd008('0x21')]();};}function saveUpdates(_0x54ed53,_0x140cf4){return function(_0x267e43){if(_0x267e43){return _0x267e43[_0xd008('0x22')](_0x54ed53)[_0xd008('0x23')](function(_0x5709f1){return _0x5709f1;});}return null;};}function removeEntity(_0x440543,_0x50c809){return function(_0x30c496){if(_0x30c496){return _0x30c496['destroy']()[_0xd008('0x23')](function(){_0x440543[_0xd008('0x18')](0xcc)[_0xd008('0x19')]();});}};}function handleEntityNotFound(_0x418af3,_0x5c864a){return function(_0xbfe89){if(!_0xbfe89){_0x418af3[_0xd008('0x24')](0x194);}return _0xbfe89;};}function handleError(_0x8f355,_0x157829){_0x157829=_0x157829||0x1f4;return function(_0x4cde04){logger[_0xd008('0x25')](_0x4cde04['stack']);if(_0x4cde04[_0xd008('0x26')]){delete _0x4cde04[_0xd008('0x26')];}_0x8f355[_0xd008('0x18')](_0x157829)['send'](_0x4cde04);};}exports['index']=function(_0x155807,_0x4ecd89){var _0xfaf4a9={},_0x32eac7={},_0x42f1eb={'count':0x0,'rows':[]};var _0x1acae2=_[_0xd008('0x27')](db[_0xd008('0x28')][_0xd008('0x29')],function(_0x463716){return{'name':_0x463716[_0xd008('0x2a')],'type':_0x463716[_0xd008('0x2b')][_0xd008('0x2c')]};});_0x32eac7[_0xd008('0x2d')]=_[_0xd008('0x27')](_0x1acae2,_0xd008('0x26'));_0x32eac7[_0xd008('0x2e')]=_[_0xd008('0x2f')](_0x155807[_0xd008('0x2e')]);_0x32eac7[_0xd008('0x30')]=_['intersection'](_0x32eac7[_0xd008('0x2d')],_0x32eac7[_0xd008('0x2e')]);_0xfaf4a9[_0xd008('0x31')]=_[_0xd008('0x32')](_0x32eac7[_0xd008('0x2d')],qs['fields'](_0x155807[_0xd008('0x2e')][_0xd008('0x33')]));_0xfaf4a9[_0xd008('0x31')]=_0xfaf4a9['attributes'][_0xd008('0x34')]?_0xfaf4a9['attributes']:_0x32eac7[_0xd008('0x2d')];if(!_0x155807[_0xd008('0x2e')][_0xd008('0x35')](_0xd008('0x36'))){_0xfaf4a9[_0xd008('0x1c')]=qs[_0xd008('0x1c')](_0x155807[_0xd008('0x2e')][_0xd008('0x1c')]);_0xfaf4a9['offset']=qs['offset'](_0x155807[_0xd008('0x2e')][_0xd008('0x1e')]);}_0xfaf4a9[_0xd008('0x37')]=qs[_0xd008('0x38')](_0x155807[_0xd008('0x2e')][_0xd008('0x38')]);_0xfaf4a9['where']=qs[_0xd008('0x30')](_[_0xd008('0x39')](_0x155807[_0xd008('0x2e')],_0x32eac7[_0xd008('0x30')]),_0x1acae2);if(_0x155807['query'][_0xd008('0x3a')]){_0xfaf4a9['where']=_[_0xd008('0x3b')](_0xfaf4a9[_0xd008('0x3c')],{'$or':_[_0xd008('0x27')](_0x1acae2,function(_0x1e6420){if(_0x1e6420[_0xd008('0x2b')]!==_0xd008('0x3d')){var _0x2e796d={};_0x2e796d[_0x1e6420[_0xd008('0x26')]]={'$like':'%'+_0x155807[_0xd008('0x2e')]['filter']+'%'};return _0x2e796d;}})});}_0xfaf4a9=_[_0xd008('0x3b')]({},_0xfaf4a9,_0x155807[_0xd008('0x3e')]);var _0x14d8cd={'where':_0xfaf4a9[_0xd008('0x3c')]};return db['ZohoConfiguration'][_0xd008('0x1d')](_0x14d8cd)[_0xd008('0x23')](function(_0x4ad8b1){_0x42f1eb[_0xd008('0x1d')]=_0x4ad8b1;if(_0x155807[_0xd008('0x2e')][_0xd008('0x3f')]){_0xfaf4a9['include']=[{'all':!![]}];}return db[_0xd008('0x28')][_0xd008('0x40')](_0xfaf4a9);})[_0xd008('0x23')](function(_0x112d60){_0x42f1eb['rows']=_0x112d60;return _0x42f1eb;})[_0xd008('0x23')](respondWithFilteredResult(_0x4ecd89,_0xfaf4a9))[_0xd008('0x41')](handleError(_0x4ecd89,null));};exports['show']=function(_0x3b2c71,_0x2788dd){var _0x2f6f33={'raw':![],'where':{'id':_0x3b2c71['params']['id']}},_0x279433={};_0x279433[_0xd008('0x2d')]=_[_0xd008('0x2f')](db['ZohoConfiguration'][_0xd008('0x29')]);_0x279433['query']=_[_0xd008('0x2f')](_0x3b2c71['query']);_0x279433[_0xd008('0x30')]=_[_0xd008('0x32')](_0x279433[_0xd008('0x2d')],_0x279433['query']);_0x2f6f33[_0xd008('0x31')]=_[_0xd008('0x32')](_0x279433[_0xd008('0x2d')],qs[_0xd008('0x33')](_0x3b2c71[_0xd008('0x2e')][_0xd008('0x33')]));_0x2f6f33['attributes']=_0x2f6f33['attributes'][_0xd008('0x34')]?_0x2f6f33[_0xd008('0x31')]:_0x279433[_0xd008('0x2d')];if(_0x3b2c71[_0xd008('0x2e')]['includeAll']){_0x2f6f33[_0xd008('0x42')]=[{'all':!![]}];}_0x2f6f33=_[_0xd008('0x3b')]({},_0x2f6f33,_0x3b2c71[_0xd008('0x3e')]);return db[_0xd008('0x28')][_0xd008('0x43')](_0x2f6f33)[_0xd008('0x23')](handleEntityNotFound(_0x2788dd,null))[_0xd008('0x23')](respondWithResult(_0x2788dd,null))['catch'](handleError(_0x2788dd,null));};exports['create']=function(_0xf8c92a,_0x259849){return db[_0xd008('0x28')][_0xd008('0x44')](_0xf8c92a[_0xd008('0x45')],{})[_0xd008('0x23')](respondWithResult(_0x259849,0xc9))[_0xd008('0x41')](handleError(_0x259849,null));};exports[_0xd008('0x22')]=function(_0x27fe19,_0x2b1406){if(_0x27fe19[_0xd008('0x45')]['id']){delete _0x27fe19['body']['id'];}return db[_0xd008('0x28')][_0xd008('0x43')]({'where':{'id':_0x27fe19[_0xd008('0x46')]['id']}})[_0xd008('0x23')](handleEntityNotFound(_0x2b1406,null))['then'](saveUpdates(_0x27fe19[_0xd008('0x45')],null))[_0xd008('0x23')](respondWithResult(_0x2b1406,null))[_0xd008('0x41')](handleError(_0x2b1406,null));};exports['destroy']=function(_0x58f57e,_0x479170){return db[_0xd008('0x28')]['find']({'where':{'id':_0x58f57e[_0xd008('0x46')]['id']}})[_0xd008('0x23')](handleEntityNotFound(_0x479170,null))[_0xd008('0x23')](removeEntity(_0x479170,null))['catch'](handleError(_0x479170,null));};exports[_0xd008('0x47')]=function(_0x328ff1,_0x13768b,_0x1d5079){var _0x4f83fa={};var _0x25182c={};var _0x295f82;var _0x307fc9;return db[_0xd008('0x28')][_0xd008('0x48')]({'where':{'id':_0x328ff1[_0xd008('0x46')]['id']}})[_0xd008('0x23')](handleEntityNotFound(_0x13768b,null))['then'](function(_0x466a41){if(_0x466a41){_0x295f82=_0x466a41;_0x25182c['model']=_[_0xd008('0x2f')](db[_0xd008('0x49')][_0xd008('0x29')]);_0x25182c[_0xd008('0x2e')]=_[_0xd008('0x2f')](_0x328ff1[_0xd008('0x2e')]);_0x25182c['filters']=_[_0xd008('0x32')](_0x25182c['model'],_0x25182c[_0xd008('0x2e')]);_0x4f83fa['attributes']=_[_0xd008('0x32')](_0x25182c[_0xd008('0x2d')],qs[_0xd008('0x33')](_0x328ff1[_0xd008('0x2e')]['fields']));_0x4f83fa[_0xd008('0x31')]=_0x4f83fa[_0xd008('0x31')]['length']?_0x4f83fa[_0xd008('0x31')]:_0x25182c[_0xd008('0x2d')];_0x4f83fa['order']=qs[_0xd008('0x38')](_0x328ff1[_0xd008('0x2e')][_0xd008('0x38')]);_0x4f83fa[_0xd008('0x3c')]=qs['filters'](_['pick'](_0x328ff1[_0xd008('0x2e')],_0x25182c[_0xd008('0x30')]));if(_0x328ff1[_0xd008('0x2e')][_0xd008('0x3a')]){_0x4f83fa['where']=_[_0xd008('0x3b')](_0x4f83fa[_0xd008('0x3c')],{'$or':_[_0xd008('0x27')](_0x4f83fa[_0xd008('0x31')],function(_0xc1bf97){var _0x1917f0={};_0x1917f0[_0xc1bf97]={'$like':'%'+_0x328ff1[_0xd008('0x2e')]['filter']+'%'};return _0x1917f0;})});}_0x4f83fa=_[_0xd008('0x3b')]({},_0x4f83fa,_0x328ff1[_0xd008('0x3e')]);return _0x295f82['getFields'](_0x4f83fa);}})[_0xd008('0x23')](function(_0x4d192d){if(_0x4d192d){_0x307fc9=_0x4d192d[_0xd008('0x34')];if(!_0x328ff1[_0xd008('0x2e')]['hasOwnProperty'](_0xd008('0x36'))){_0x4f83fa['limit']=qs['limit'](_0x328ff1['query'][_0xd008('0x1c')]);_0x4f83fa[_0xd008('0x1e')]=qs[_0xd008('0x1e')](_0x328ff1['query'][_0xd008('0x1e')]);}return _0x295f82[_0xd008('0x47')](_0x4f83fa);}})['then'](function(_0x4b592e){if(_0x4b592e){return _0x4b592e?{'count':_0x307fc9,'rows':_0x4b592e}:null;}})[_0xd008('0x23')](respondWithResult(_0x13768b,null))['catch'](handleError(_0x13768b,null));};exports[_0xd008('0x4a')]=function(_0x1feffe,_0x3617c4,_0x1269a0){var _0x137757={};var _0x341372={};var _0x3b0953;var _0x39ad6f;return db[_0xd008('0x28')][_0xd008('0x48')]({'where':{'id':_0x1feffe[_0xd008('0x46')]['id']}})[_0xd008('0x23')](handleEntityNotFound(_0x3617c4,null))[_0xd008('0x23')](function(_0x26590b){if(_0x26590b){_0x3b0953=_0x26590b;_0x341372[_0xd008('0x2d')]=_['keys'](db[_0xd008('0x49')][_0xd008('0x29')]);_0x341372[_0xd008('0x2e')]=_['keys'](_0x1feffe['query']);_0x341372['filters']=_[_0xd008('0x32')](_0x341372['model'],_0x341372['query']);_0x137757['attributes']=_[_0xd008('0x32')](_0x341372[_0xd008('0x2d')],qs['fields'](_0x1feffe[_0xd008('0x2e')][_0xd008('0x33')]));_0x137757[_0xd008('0x31')]=_0x137757[_0xd008('0x31')][_0xd008('0x34')]?_0x137757[_0xd008('0x31')]:_0x341372[_0xd008('0x2d')];_0x137757['order']=qs[_0xd008('0x38')](_0x1feffe[_0xd008('0x2e')][_0xd008('0x38')]);_0x137757[_0xd008('0x3c')]=qs[_0xd008('0x30')](_[_0xd008('0x39')](_0x1feffe[_0xd008('0x2e')],_0x341372[_0xd008('0x30')]));if(_0x1feffe[_0xd008('0x2e')][_0xd008('0x3a')]){_0x137757[_0xd008('0x3c')]=_[_0xd008('0x3b')](_0x137757[_0xd008('0x3c')],{'$or':_['map'](_0x137757[_0xd008('0x31')],function(_0x307a71){var _0x1800b3={};_0x1800b3[_0x307a71]={'$like':'%'+_0x1feffe[_0xd008('0x2e')]['filter']+'%'};return _0x1800b3;})});}_0x137757=_[_0xd008('0x3b')]({},_0x137757,_0x1feffe[_0xd008('0x3e')]);return _0x3b0953['getSubjects'](_0x137757);}})[_0xd008('0x23')](function(_0x188e47){if(_0x188e47){_0x39ad6f=_0x188e47['length'];if(!_0x1feffe[_0xd008('0x2e')][_0xd008('0x35')](_0xd008('0x36'))){_0x137757[_0xd008('0x1c')]=qs[_0xd008('0x1c')](_0x1feffe[_0xd008('0x2e')][_0xd008('0x1c')]);_0x137757[_0xd008('0x1e')]=qs[_0xd008('0x1e')](_0x1feffe[_0xd008('0x2e')][_0xd008('0x1e')]);}return _0x3b0953[_0xd008('0x4a')](_0x137757);}})[_0xd008('0x23')](function(_0xc7a619){if(_0xc7a619){return _0xc7a619?{'count':_0x39ad6f,'rows':_0xc7a619}:null;}})[_0xd008('0x23')](respondWithResult(_0x3617c4,null))[_0xd008('0x41')](handleError(_0x3617c4,null));};exports['getDescriptions']=function(_0x36f3ff,_0x444421,_0x25b92d){var _0x19168a={};var _0x9acee5={};var _0x17b8a8;var _0x41b5f7;return db['ZohoConfiguration'][_0xd008('0x48')]({'where':{'id':_0x36f3ff[_0xd008('0x46')]['id']}})[_0xd008('0x23')](handleEntityNotFound(_0x444421,null))[_0xd008('0x23')](function(_0x2ce397){if(_0x2ce397){_0x17b8a8=_0x2ce397;_0x9acee5[_0xd008('0x2d')]=_[_0xd008('0x2f')](db[_0xd008('0x49')][_0xd008('0x29')]);_0x9acee5[_0xd008('0x2e')]=_[_0xd008('0x2f')](_0x36f3ff['query']);_0x9acee5[_0xd008('0x30')]=_[_0xd008('0x32')](_0x9acee5[_0xd008('0x2d')],_0x9acee5[_0xd008('0x2e')]);_0x19168a['attributes']=_['intersection'](_0x9acee5['model'],qs[_0xd008('0x33')](_0x36f3ff[_0xd008('0x2e')][_0xd008('0x33')]));_0x19168a[_0xd008('0x31')]=_0x19168a['attributes'][_0xd008('0x34')]?_0x19168a[_0xd008('0x31')]:_0x9acee5[_0xd008('0x2d')];_0x19168a[_0xd008('0x37')]=qs[_0xd008('0x38')](_0x36f3ff[_0xd008('0x2e')][_0xd008('0x38')]);_0x19168a[_0xd008('0x3c')]=qs[_0xd008('0x30')](_[_0xd008('0x39')](_0x36f3ff['query'],_0x9acee5[_0xd008('0x30')]));if(_0x36f3ff[_0xd008('0x2e')][_0xd008('0x3a')]){_0x19168a[_0xd008('0x3c')]=_[_0xd008('0x3b')](_0x19168a[_0xd008('0x3c')],{'$or':_['map'](_0x19168a[_0xd008('0x31')],function(_0x48faea){var _0x5b339a={};_0x5b339a[_0x48faea]={'$like':'%'+_0x36f3ff['query']['filter']+'%'};return _0x5b339a;})});}_0x19168a=_['merge']({},_0x19168a,_0x36f3ff['options']);return _0x17b8a8[_0xd008('0x4b')](_0x19168a);}})[_0xd008('0x23')](function(_0x1e85dd){if(_0x1e85dd){_0x41b5f7=_0x1e85dd[_0xd008('0x34')];if(!_0x36f3ff[_0xd008('0x2e')]['hasOwnProperty'](_0xd008('0x36'))){_0x19168a[_0xd008('0x1c')]=qs['limit'](_0x36f3ff[_0xd008('0x2e')][_0xd008('0x1c')]);_0x19168a['offset']=qs['offset'](_0x36f3ff['query'][_0xd008('0x1e')]);}return _0x17b8a8[_0xd008('0x4b')](_0x19168a);}})['then'](function(_0x2765c1){if(_0x2765c1){return _0x2765c1?{'count':_0x41b5f7,'rows':_0x2765c1}:null;}})[_0xd008('0x23')](respondWithResult(_0x444421,null))[_0xd008('0x41')](handleError(_0x444421,null));};
\ No newline at end of file
+var _0xa1ef=['attributes','length','hasOwnProperty','nolimit','sort','pick','where','VIRTUAL','merge','findAll','rows','then','catch','show','fields','includeAll','include','options','create','body','find','params','getFields','findOne','ZohoField','order','filter','getSubjects','getDescriptions','eml-format','rimraf','moment','bluebird','mustache','util','path','sox','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','name','index','ZohoConfiguration','rawAttributes','type','key','model','map','query','keys','filters','intersection'];(function(_0x1e03a6,_0xf0349){var _0x295b64=function(_0x1ad0a5){while(--_0x1ad0a5){_0x1e03a6['push'](_0x1e03a6['shift']());}};_0x295b64(++_0xf0349);}(_0xa1ef,0x1f1));var _0xfa1e=function(_0x4e158a,_0x31b81e){_0x4e158a=_0x4e158a-0x0;var _0x168261=_0xa1ef[_0x4e158a];return _0x168261;};'use strict';var emlformat=require(_0xfa1e('0x0'));var rimraf=require(_0xfa1e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xfa1e('0x2'));var BPromise=require(_0xfa1e('0x3'));var Mustache=require(_0xfa1e('0x4'));var util=require(_0xfa1e('0x5'));var path=require(_0xfa1e('0x6'));var sox=require(_0xfa1e('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfa1e('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfa1e('0x9'));var deskjs=require('desk.js');var toCsv=require(_0xfa1e('0xa'));var querystring=require(_0xfa1e('0xb'));var Papa=require(_0xfa1e('0xc'));var Redis=require(_0xfa1e('0xd'));var authService=require(_0xfa1e('0xe'));var qs=require(_0xfa1e('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfa1e('0x10'))(_0xfa1e('0x11'));var utils=require('../../config/utils');var config=require(_0xfa1e('0x12'));var licenseUtil=require(_0xfa1e('0x13'));var db=require(_0xfa1e('0x14'))['db'];function respondWithStatusCode(_0x1c2397,_0x297df3){_0x297df3=_0x297df3||0xcc;return function(_0x46e804){if(_0x46e804){return _0x1c2397['sendStatus'](_0x297df3);}return _0x1c2397[_0xfa1e('0x15')](_0x297df3)[_0xfa1e('0x16')]();};}function respondWithResult(_0x2e3763,_0xd2adeb){_0xd2adeb=_0xd2adeb||0xc8;return function(_0x363d11){if(_0x363d11){return _0x2e3763[_0xfa1e('0x15')](_0xd2adeb)[_0xfa1e('0x17')](_0x363d11);}};}function respondWithFilteredResult(_0x5ef54f,_0x30ff35){return function(_0x4de925){if(_0x4de925){var _0x389cdc=typeof _0x30ff35[_0xfa1e('0x18')]==='undefined'&&typeof _0x30ff35[_0xfa1e('0x19')]===_0xfa1e('0x1a');var _0x5eef40=_0x4de925[_0xfa1e('0x1b')];var _0x10ceee=_0x389cdc?0x0:_0x30ff35[_0xfa1e('0x18')];var _0x568439=_0x389cdc?_0x4de925[_0xfa1e('0x1b')]:_0x30ff35[_0xfa1e('0x18')]+_0x30ff35[_0xfa1e('0x19')];var _0x56b119;if(_0x568439>=_0x5eef40){_0x568439=_0x5eef40;_0x56b119=0xc8;}else{_0x56b119=0xce;}_0x5ef54f[_0xfa1e('0x15')](_0x56b119);return _0x5ef54f[_0xfa1e('0x1c')](_0xfa1e('0x1d'),_0x10ceee+'-'+_0x568439+'/'+_0x5eef40)[_0xfa1e('0x17')](_0x4de925);}return null;};}function patchUpdates(_0x3a9b3c){return function(_0xb6c64f){try{jsonpatch[_0xfa1e('0x1e')](_0xb6c64f,_0x3a9b3c,!![]);}catch(_0x5849be){return BPromise[_0xfa1e('0x1f')](_0x5849be);}return _0xb6c64f[_0xfa1e('0x20')]();};}function saveUpdates(_0x1a1f94,_0x22c376){return function(_0x2387cd){if(_0x2387cd){return _0x2387cd[_0xfa1e('0x21')](_0x1a1f94)['then'](function(_0x588a8f){return _0x588a8f;});}return null;};}function removeEntity(_0x272d38,_0x3a171c){return function(_0x514b4c){if(_0x514b4c){return _0x514b4c[_0xfa1e('0x22')]()['then'](function(){_0x272d38[_0xfa1e('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x503989,_0x3ab60b){return function(_0x1f1fd4){if(!_0x1f1fd4){_0x503989[_0xfa1e('0x23')](0x194);}return _0x1f1fd4;};}function handleError(_0x1bade2,_0x48a10b){_0x48a10b=_0x48a10b||0x1f4;return function(_0x166869){logger[_0xfa1e('0x24')](_0x166869['stack']);if(_0x166869[_0xfa1e('0x25')]){delete _0x166869['name'];}_0x1bade2[_0xfa1e('0x15')](_0x48a10b)['send'](_0x166869);};}exports[_0xfa1e('0x26')]=function(_0x39eb7d,_0x5c9f92){var _0x3f0c7c={},_0x2f5129={},_0x3bc399={'count':0x0,'rows':[]};var _0x420e50=_['map'](db[_0xfa1e('0x27')][_0xfa1e('0x28')],function(_0x22e546){return{'name':_0x22e546['fieldName'],'type':_0x22e546[_0xfa1e('0x29')][_0xfa1e('0x2a')]};});_0x2f5129[_0xfa1e('0x2b')]=_[_0xfa1e('0x2c')](_0x420e50,_0xfa1e('0x25'));_0x2f5129[_0xfa1e('0x2d')]=_[_0xfa1e('0x2e')](_0x39eb7d[_0xfa1e('0x2d')]);_0x2f5129[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x2f5129[_0xfa1e('0x2b')],_0x2f5129[_0xfa1e('0x2d')]);_0x3f0c7c[_0xfa1e('0x31')]=_[_0xfa1e('0x30')](_0x2f5129[_0xfa1e('0x2b')],qs['fields'](_0x39eb7d[_0xfa1e('0x2d')]['fields']));_0x3f0c7c[_0xfa1e('0x31')]=_0x3f0c7c['attributes'][_0xfa1e('0x32')]?_0x3f0c7c[_0xfa1e('0x31')]:_0x2f5129['model'];if(!_0x39eb7d[_0xfa1e('0x2d')][_0xfa1e('0x33')](_0xfa1e('0x34'))){_0x3f0c7c['limit']=qs['limit'](_0x39eb7d[_0xfa1e('0x2d')][_0xfa1e('0x19')]);_0x3f0c7c[_0xfa1e('0x18')]=qs[_0xfa1e('0x18')](_0x39eb7d[_0xfa1e('0x2d')][_0xfa1e('0x18')]);}_0x3f0c7c['order']=qs[_0xfa1e('0x35')](_0x39eb7d[_0xfa1e('0x2d')]['sort']);_0x3f0c7c['where']=qs['filters'](_[_0xfa1e('0x36')](_0x39eb7d[_0xfa1e('0x2d')],_0x2f5129[_0xfa1e('0x2f')]),_0x420e50);if(_0x39eb7d['query']['filter']){_0x3f0c7c[_0xfa1e('0x37')]=_['merge'](_0x3f0c7c[_0xfa1e('0x37')],{'$or':_['map'](_0x420e50,function(_0x112d04){if(_0x112d04[_0xfa1e('0x29')]!==_0xfa1e('0x38')){var _0x1f3e4d={};_0x1f3e4d[_0x112d04[_0xfa1e('0x25')]]={'$like':'%'+_0x39eb7d[_0xfa1e('0x2d')]['filter']+'%'};return _0x1f3e4d;}})});}_0x3f0c7c=_[_0xfa1e('0x39')]({},_0x3f0c7c,_0x39eb7d['options']);var _0x2ec951={'where':_0x3f0c7c[_0xfa1e('0x37')]};return db[_0xfa1e('0x27')][_0xfa1e('0x1b')](_0x2ec951)['then'](function(_0x29868a){_0x3bc399[_0xfa1e('0x1b')]=_0x29868a;if(_0x39eb7d[_0xfa1e('0x2d')]['includeAll']){_0x3f0c7c['include']=[{'all':!![]}];}return db[_0xfa1e('0x27')][_0xfa1e('0x3a')](_0x3f0c7c);})['then'](function(_0x34d809){_0x3bc399[_0xfa1e('0x3b')]=_0x34d809;return _0x3bc399;})[_0xfa1e('0x3c')](respondWithFilteredResult(_0x5c9f92,_0x3f0c7c))[_0xfa1e('0x3d')](handleError(_0x5c9f92,null));};exports[_0xfa1e('0x3e')]=function(_0x3c8e7c,_0x2e729b){var _0x1c575a={'raw':![],'where':{'id':_0x3c8e7c['params']['id']}},_0x2d60c9={};_0x2d60c9[_0xfa1e('0x2b')]=_[_0xfa1e('0x2e')](db[_0xfa1e('0x27')][_0xfa1e('0x28')]);_0x2d60c9[_0xfa1e('0x2d')]=_[_0xfa1e('0x2e')](_0x3c8e7c[_0xfa1e('0x2d')]);_0x2d60c9[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x2d60c9[_0xfa1e('0x2b')],_0x2d60c9[_0xfa1e('0x2d')]);_0x1c575a[_0xfa1e('0x31')]=_['intersection'](_0x2d60c9[_0xfa1e('0x2b')],qs[_0xfa1e('0x3f')](_0x3c8e7c[_0xfa1e('0x2d')][_0xfa1e('0x3f')]));_0x1c575a[_0xfa1e('0x31')]=_0x1c575a[_0xfa1e('0x31')][_0xfa1e('0x32')]?_0x1c575a[_0xfa1e('0x31')]:_0x2d60c9[_0xfa1e('0x2b')];if(_0x3c8e7c[_0xfa1e('0x2d')][_0xfa1e('0x40')]){_0x1c575a[_0xfa1e('0x41')]=[{'all':!![]}];}_0x1c575a=_[_0xfa1e('0x39')]({},_0x1c575a,_0x3c8e7c[_0xfa1e('0x42')]);return db['ZohoConfiguration']['find'](_0x1c575a)[_0xfa1e('0x3c')](handleEntityNotFound(_0x2e729b,null))[_0xfa1e('0x3c')](respondWithResult(_0x2e729b,null))['catch'](handleError(_0x2e729b,null));};exports[_0xfa1e('0x43')]=function(_0xe1edbc,_0x19bac8){return db[_0xfa1e('0x27')][_0xfa1e('0x43')](_0xe1edbc['body'],{})[_0xfa1e('0x3c')](respondWithResult(_0x19bac8,0xc9))[_0xfa1e('0x3d')](handleError(_0x19bac8,null));};exports[_0xfa1e('0x21')]=function(_0x381262,_0x2a5709){if(_0x381262[_0xfa1e('0x44')]['id']){delete _0x381262['body']['id'];}return db[_0xfa1e('0x27')][_0xfa1e('0x45')]({'where':{'id':_0x381262[_0xfa1e('0x46')]['id']}})[_0xfa1e('0x3c')](handleEntityNotFound(_0x2a5709,null))['then'](saveUpdates(_0x381262[_0xfa1e('0x44')],null))['then'](respondWithResult(_0x2a5709,null))[_0xfa1e('0x3d')](handleError(_0x2a5709,null));};exports['destroy']=function(_0x36f69c,_0x51f4fc){return db['ZohoConfiguration'][_0xfa1e('0x45')]({'where':{'id':_0x36f69c['params']['id']}})[_0xfa1e('0x3c')](handleEntityNotFound(_0x51f4fc,null))[_0xfa1e('0x3c')](removeEntity(_0x51f4fc,null))[_0xfa1e('0x3d')](handleError(_0x51f4fc,null));};exports[_0xfa1e('0x47')]=function(_0x503ee9,_0x2f5471,_0x1b2cc8){var _0x438f94={};var _0x398209={};var _0x49dfe2;var _0x34a206;return db[_0xfa1e('0x27')][_0xfa1e('0x48')]({'where':{'id':_0x503ee9[_0xfa1e('0x46')]['id']}})[_0xfa1e('0x3c')](handleEntityNotFound(_0x2f5471,null))['then'](function(_0x8ad3e9){if(_0x8ad3e9){_0x49dfe2=_0x8ad3e9;_0x398209[_0xfa1e('0x2b')]=_[_0xfa1e('0x2e')](db[_0xfa1e('0x49')]['rawAttributes']);_0x398209[_0xfa1e('0x2d')]=_[_0xfa1e('0x2e')](_0x503ee9[_0xfa1e('0x2d')]);_0x398209[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x398209['model'],_0x398209[_0xfa1e('0x2d')]);_0x438f94[_0xfa1e('0x31')]=_[_0xfa1e('0x30')](_0x398209['model'],qs['fields'](_0x503ee9[_0xfa1e('0x2d')]['fields']));_0x438f94[_0xfa1e('0x31')]=_0x438f94[_0xfa1e('0x31')][_0xfa1e('0x32')]?_0x438f94[_0xfa1e('0x31')]:_0x398209[_0xfa1e('0x2b')];_0x438f94[_0xfa1e('0x4a')]=qs[_0xfa1e('0x35')](_0x503ee9[_0xfa1e('0x2d')]['sort']);_0x438f94['where']=qs[_0xfa1e('0x2f')](_[_0xfa1e('0x36')](_0x503ee9[_0xfa1e('0x2d')],_0x398209['filters']));if(_0x503ee9[_0xfa1e('0x2d')][_0xfa1e('0x4b')]){_0x438f94[_0xfa1e('0x37')]=_[_0xfa1e('0x39')](_0x438f94[_0xfa1e('0x37')],{'$or':_['map'](_0x438f94[_0xfa1e('0x31')],function(_0x1307fc){var _0x5b273d={};_0x5b273d[_0x1307fc]={'$like':'%'+_0x503ee9[_0xfa1e('0x2d')]['filter']+'%'};return _0x5b273d;})});}_0x438f94=_[_0xfa1e('0x39')]({},_0x438f94,_0x503ee9[_0xfa1e('0x42')]);return _0x49dfe2[_0xfa1e('0x47')](_0x438f94);}})[_0xfa1e('0x3c')](function(_0x4af1d8){if(_0x4af1d8){_0x34a206=_0x4af1d8[_0xfa1e('0x32')];if(!_0x503ee9[_0xfa1e('0x2d')]['hasOwnProperty'](_0xfa1e('0x34'))){_0x438f94[_0xfa1e('0x19')]=qs['limit'](_0x503ee9[_0xfa1e('0x2d')]['limit']);_0x438f94[_0xfa1e('0x18')]=qs[_0xfa1e('0x18')](_0x503ee9['query'][_0xfa1e('0x18')]);}return _0x49dfe2[_0xfa1e('0x47')](_0x438f94);}})[_0xfa1e('0x3c')](function(_0x294345){if(_0x294345){return _0x294345?{'count':_0x34a206,'rows':_0x294345}:null;}})['then'](respondWithResult(_0x2f5471,null))[_0xfa1e('0x3d')](handleError(_0x2f5471,null));};exports['getSubjects']=function(_0x21a2d7,_0x1501dc,_0x2733b1){var _0x3f3e31={};var _0x997559={};var _0x116d83;var _0x292151;return db['ZohoConfiguration'][_0xfa1e('0x48')]({'where':{'id':_0x21a2d7[_0xfa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x1501dc,null))['then'](function(_0x3c25a5){if(_0x3c25a5){_0x116d83=_0x3c25a5;_0x997559[_0xfa1e('0x2b')]=_[_0xfa1e('0x2e')](db[_0xfa1e('0x49')]['rawAttributes']);_0x997559[_0xfa1e('0x2d')]=_['keys'](_0x21a2d7[_0xfa1e('0x2d')]);_0x997559[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x997559[_0xfa1e('0x2b')],_0x997559['query']);_0x3f3e31[_0xfa1e('0x31')]=_['intersection'](_0x997559[_0xfa1e('0x2b')],qs[_0xfa1e('0x3f')](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x3f')]));_0x3f3e31[_0xfa1e('0x31')]=_0x3f3e31[_0xfa1e('0x31')][_0xfa1e('0x32')]?_0x3f3e31[_0xfa1e('0x31')]:_0x997559[_0xfa1e('0x2b')];_0x3f3e31['order']=qs[_0xfa1e('0x35')](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x35')]);_0x3f3e31[_0xfa1e('0x37')]=qs['filters'](_['pick'](_0x21a2d7[_0xfa1e('0x2d')],_0x997559[_0xfa1e('0x2f')]));if(_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x4b')]){_0x3f3e31[_0xfa1e('0x37')]=_['merge'](_0x3f3e31[_0xfa1e('0x37')],{'$or':_[_0xfa1e('0x2c')](_0x3f3e31[_0xfa1e('0x31')],function(_0x483d86){var _0x40c90b={};_0x40c90b[_0x483d86]={'$like':'%'+_0x21a2d7[_0xfa1e('0x2d')]['filter']+'%'};return _0x40c90b;})});}_0x3f3e31=_[_0xfa1e('0x39')]({},_0x3f3e31,_0x21a2d7[_0xfa1e('0x42')]);return _0x116d83[_0xfa1e('0x4c')](_0x3f3e31);}})[_0xfa1e('0x3c')](function(_0x3878a7){if(_0x3878a7){_0x292151=_0x3878a7['length'];if(!_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x33')](_0xfa1e('0x34'))){_0x3f3e31[_0xfa1e('0x19')]=qs[_0xfa1e('0x19')](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x19')]);_0x3f3e31['offset']=qs['offset'](_0x21a2d7[_0xfa1e('0x2d')][_0xfa1e('0x18')]);}return _0x116d83['getSubjects'](_0x3f3e31);}})['then'](function(_0x23464c){if(_0x23464c){return _0x23464c?{'count':_0x292151,'rows':_0x23464c}:null;}})[_0xfa1e('0x3c')](respondWithResult(_0x1501dc,null))[_0xfa1e('0x3d')](handleError(_0x1501dc,null));};exports[_0xfa1e('0x4d')]=function(_0x522013,_0x43931b,_0x48aadf){var _0x5c2c0f={};var _0x53f355={};var _0x406b70;var _0xc8b5c4;return db[_0xfa1e('0x27')]['findOne']({'where':{'id':_0x522013[_0xfa1e('0x46')]['id']}})['then'](handleEntityNotFound(_0x43931b,null))[_0xfa1e('0x3c')](function(_0x19ae0d){if(_0x19ae0d){_0x406b70=_0x19ae0d;_0x53f355['model']=_['keys'](db[_0xfa1e('0x49')]['rawAttributes']);_0x53f355[_0xfa1e('0x2d')]=_['keys'](_0x522013['query']);_0x53f355[_0xfa1e('0x2f')]=_[_0xfa1e('0x30')](_0x53f355[_0xfa1e('0x2b')],_0x53f355[_0xfa1e('0x2d')]);_0x5c2c0f[_0xfa1e('0x31')]=_[_0xfa1e('0x30')](_0x53f355['model'],qs[_0xfa1e('0x3f')](_0x522013['query'][_0xfa1e('0x3f')]));_0x5c2c0f['attributes']=_0x5c2c0f[_0xfa1e('0x31')]['length']?_0x5c2c0f[_0xfa1e('0x31')]:_0x53f355['model'];_0x5c2c0f[_0xfa1e('0x4a')]=qs[_0xfa1e('0x35')](_0x522013[_0xfa1e('0x2d')][_0xfa1e('0x35')]);_0x5c2c0f[_0xfa1e('0x37')]=qs[_0xfa1e('0x2f')](_[_0xfa1e('0x36')](_0x522013[_0xfa1e('0x2d')],_0x53f355['filters']));if(_0x522013['query'][_0xfa1e('0x4b')]){_0x5c2c0f[_0xfa1e('0x37')]=_[_0xfa1e('0x39')](_0x5c2c0f['where'],{'$or':_[_0xfa1e('0x2c')](_0x5c2c0f['attributes'],function(_0x3d0adf){var _0x1a387b={};_0x1a387b[_0x3d0adf]={'$like':'%'+_0x522013[_0xfa1e('0x2d')]['filter']+'%'};return _0x1a387b;})});}_0x5c2c0f=_[_0xfa1e('0x39')]({},_0x5c2c0f,_0x522013[_0xfa1e('0x42')]);return _0x406b70[_0xfa1e('0x4d')](_0x5c2c0f);}})['then'](function(_0x1115ac){if(_0x1115ac){_0xc8b5c4=_0x1115ac[_0xfa1e('0x32')];if(!_0x522013[_0xfa1e('0x2d')][_0xfa1e('0x33')](_0xfa1e('0x34'))){_0x5c2c0f[_0xfa1e('0x19')]=qs[_0xfa1e('0x19')](_0x522013[_0xfa1e('0x2d')][_0xfa1e('0x19')]);_0x5c2c0f[_0xfa1e('0x18')]=qs[_0xfa1e('0x18')](_0x522013[_0xfa1e('0x2d')]['offset']);}return _0x406b70[_0xfa1e('0x4d')](_0x5c2c0f);}})['then'](function(_0x1d57f6){if(_0x1d57f6){return _0x1d57f6?{'count':_0xc8b5c4,'rows':_0x1d57f6}:null;}})[_0xfa1e('0x3c')](respondWithResult(_0x43931b,null))[_0xfa1e('0x3d')](handleError(_0x43931b,null));};
\ No newline at end of file
index bc760fa..69e15d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb9c=['util','../../config/logger','api','moment','bluebird','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdb9c,0x1eb));var _0xcdb9=function(_0x550a5e,_0xa61dd7){_0x550a5e=_0x550a5e-0x0;var _0x376ed6=_0xdb9c[_0x550a5e];return _0x376ed6;};'use strict';var _=require(_0xcdb9('0x0'));var util=require(_0xcdb9('0x1'));var logger=require(_0xcdb9('0x2'))(_0xcdb9('0x3'));var moment=require(_0xcdb9('0x4'));var BPromise=require(_0xcdb9('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcdb9('0x6'));var attributes=require(_0xcdb9('0x7'));module[_0xcdb9('0x8')]=function(_0x158a42,_0x40cc76){return _0x158a42[_0xcdb9('0x9')](_0xcdb9('0xa'),attributes,{'tableName':_0xcdb9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3071=['request-promise','path','rimraf','exports','define','int_zoho_configurations','util','../../config/logger','moment','bluebird'];(function(_0x243cb0,_0x13564e){var _0x30d42e=function(_0x35b4fa){while(--_0x35b4fa){_0x243cb0['push'](_0x243cb0['shift']());}};_0x30d42e(++_0x13564e);}(_0x3071,0x132));var _0x1307=function(_0x519756,_0x288785){_0x519756=_0x519756-0x0;var _0x37047e=_0x3071[_0x519756];return _0x37047e;};'use strict';var _=require('lodash');var util=require(_0x1307('0x0'));var logger=require(_0x1307('0x1'))('api');var moment=require(_0x1307('0x2'));var BPromise=require(_0x1307('0x3'));var rp=require(_0x1307('0x4'));var fs=require('fs');var path=require(_0x1307('0x5'));var rimraf=require(_0x1307('0x6'));var config=require('../../config/environment');var attributes=require('./intZohoConfiguration.attributes');module[_0x1307('0x7')]=function(_0x2c7629,_0x3301c6){return _0x2c7629[_0x1307('0x8')]('ZohoConfiguration',attributes,{'tableName':_0x1307('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a3581be..ee5c756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd24a=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0xaaa4fd,_0x9c5f4b){var _0xd428ce=function(_0x1b930c){while(--_0x1b930c){_0xaaa4fd['push'](_0xaaa4fd['shift']());}};_0xd428ce(++_0x9c5f4b);}(_0xd24a,0x1de));var _0xad24=function(_0x28a6c6,_0x53b40a){_0x28a6c6=_0x28a6c6-0x0;var _0x4c1d37=_0xd24a[_0x28a6c6];return _0x4c1d37;};'use strict';var _=require(_0xad24('0x0'));var util=require(_0xad24('0x1'));var moment=require('moment');var BPromise=require(_0xad24('0x2'));var rs=require(_0xad24('0x3'));var fs=require('fs');var Redis=require(_0xad24('0x4'));var db=require(_0xad24('0x5'))['db'];var utils=require(_0xad24('0x6'));var logger=require(_0xad24('0x7'))(_0xad24('0x8'));var config=require('../../config/environment');var jayson=require(_0xad24('0x9'));var client=jayson[_0xad24('0xa')][_0xad24('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x44f285,_0x3b9920,_0x183024){return new BPromise(function(_0x5f52ab,_0x4b44ee){return client[_0xad24('0xc')](_0x44f285,_0x183024)[_0xad24('0xd')](function(_0x48908e){logger[_0xad24('0xe')](_0xad24('0xf'),_0x3b9920,_0xad24('0x10'));logger['debug'](_0xad24('0x11'),_0x3b9920,_0xad24('0x10'),JSON[_0xad24('0x12')](_0x48908e));if(_0x48908e['error']){if(_0x48908e[_0xad24('0x13')][_0xad24('0x14')]===0x1f4){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x3b9920,_0x48908e[_0xad24('0x13')]['message']);return _0x4b44ee(_0x48908e[_0xad24('0x13')][_0xad24('0x15')]);}logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0x3b9920,_0x48908e[_0xad24('0x13')][_0xad24('0x15')]);return _0x5f52ab(_0x48908e[_0xad24('0x13')][_0xad24('0x15')]);}else{logger['info'](_0xad24('0xf'),_0x3b9920,_0xad24('0x10'));_0x5f52ab(_0x48908e[_0xad24('0x16')]['message']);}})[_0xad24('0x17')](function(_0x4481c5){logger[_0xad24('0x13')](_0xad24('0xf'),_0x3b9920,_0x4481c5);_0x4b44ee(_0x4481c5);});});}
\ No newline at end of file
+var _0x4692=['../../config/environment','client','http','request','then','info','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','ZohoConfiguration,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc'];(function(_0x3cd154,_0x54c960){var _0x4ef352=function(_0x5093a6){while(--_0x5093a6){_0x3cd154['push'](_0x3cd154['shift']());}};_0x4ef352(++_0x54c960);}(_0x4692,0xbe));var _0x2469=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4692[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x2469('0x0'));var util=require(_0x2469('0x1'));var moment=require(_0x2469('0x2'));var BPromise=require(_0x2469('0x3'));var rs=require(_0x2469('0x4'));var fs=require('fs');var Redis=require(_0x2469('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2469('0x6'))(_0x2469('0x7'));var config=require(_0x2469('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x2469('0x9')][_0x2469('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe79c0d,_0x2612a7,_0x5ebb80){return new BPromise(function(_0x5dc5e0,_0x5bbdd0){return client[_0x2469('0xb')](_0xe79c0d,_0x5ebb80)[_0x2469('0xc')](function(_0x5a0cea){logger[_0x2469('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0x2612a7,_0x2469('0xe'));logger[_0x2469('0xf')](_0x2469('0x10'),_0x2612a7,_0x2469('0xe'),JSON[_0x2469('0x11')](_0x5a0cea));if(_0x5a0cea[_0x2469('0x12')]){if(_0x5a0cea[_0x2469('0x12')]['code']===0x1f4){logger['error'](_0x2469('0x13'),_0x2612a7,_0x5a0cea[_0x2469('0x12')][_0x2469('0x14')]);return _0x5bbdd0(_0x5a0cea['error']['message']);}logger['error'](_0x2469('0x13'),_0x2612a7,_0x5a0cea[_0x2469('0x12')][_0x2469('0x14')]);return _0x5dc5e0(_0x5a0cea[_0x2469('0x12')][_0x2469('0x14')]);}else{logger[_0x2469('0xd')](_0x2469('0x13'),_0x2612a7,_0x2469('0xe'));_0x5dc5e0(_0x5a0cea[_0x2469('0x15')][_0x2469('0x14')]);}})['catch'](function(_0x33ad98){logger[_0x2469('0x12')](_0x2469('0x13'),_0x2612a7,_0x33ad98);_0x5bbdd0(_0x33ad98);});});}
\ No newline at end of file
index 63cb6e5..3f2884c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0ae=['../../config/environment','get','isAuthenticated','index','/:id','show','post','update','destroy','exports','path','connect-timeout','../../components/auth/service','../../components/interaction/service'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xc0ae,0xb2));var _0xec0a=function(_0x16c94f,_0x3733e2){_0x16c94f=_0x16c94f-0x0;var _0x5ddf05=_0xc0ae[_0x16c94f];return _0x5ddf05;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xec0a('0x0'));var timeout=require(_0xec0a('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xec0a('0x2'));var interaction=require(_0xec0a('0x3'));var config=require(_0xec0a('0x4'));var controller=require('./intZohoField.controller');router[_0xec0a('0x5')]('/',auth[_0xec0a('0x6')](),controller[_0xec0a('0x7')]);router[_0xec0a('0x5')](_0xec0a('0x8'),auth['isAuthenticated'](),controller[_0xec0a('0x9')]);router[_0xec0a('0xa')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xec0a('0x8'),auth[_0xec0a('0x6')](),controller[_0xec0a('0xb')]);router['delete'](_0xec0a('0x8'),auth[_0xec0a('0x6')](),controller[_0xec0a('0xc')]);module[_0xec0a('0xd')]=router;
\ No newline at end of file
+var _0xdcb7=['/:id','isAuthenticated','show','create','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoField.controller','get'];(function(_0x17d921,_0x5a0ff8){var _0x11c9b6=function(_0x3c8667){while(--_0x3c8667){_0x17d921['push'](_0x17d921['shift']());}};_0x11c9b6(++_0x5a0ff8);}(_0xdcb7,0x118));var _0x7dcb=function(_0x2861e6,_0x19893f){_0x2861e6=_0x2861e6-0x0;var _0xea3712=_0xdcb7[_0x2861e6];return _0xea3712;};'use strict';var multer=require('multer');var util=require(_0x7dcb('0x0'));var path=require(_0x7dcb('0x1'));var timeout=require(_0x7dcb('0x2'));var express=require('express');var router=express[_0x7dcb('0x3')]();var fs_extra=require(_0x7dcb('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7dcb('0x5'));var config=require(_0x7dcb('0x6'));var controller=require(_0x7dcb('0x7'));router[_0x7dcb('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x7dcb('0x8')](_0x7dcb('0x9'),auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xb')]);router['post']('/',auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xc')]);router[_0x7dcb('0xd')](_0x7dcb('0x9'),auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xe')]);router['delete'](_0x7dcb('0x9'),auth[_0x7dcb('0xa')](),controller[_0x7dcb('0xf')]);module[_0x7dcb('0x10')]=router;
\ No newline at end of file
index 7a155e0..6ec9883 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe0d=['ENUM','customVariable','BOOLEAN','sequelize','exports','string','variable','keyValue','STRING'];(function(_0x272667,_0x51c8de){var _0x5d1a5c=function(_0x363eda){while(--_0x363eda){_0x272667['push'](_0x272667['shift']());}};_0x5d1a5c(++_0x51c8de);}(_0xfe0d,0xd2));var _0xdfe0=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xfe0d[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0xdfe0('0x0'));module[_0xdfe0('0x1')]={'type':{'type':Sequelize['ENUM'](_0xdfe0('0x2'),_0xdfe0('0x3'),'customVariable',_0xdfe0('0x4'),'picklist'),'defaultValue':_0xdfe0('0x2')},'content':{'type':Sequelize[_0xdfe0('0x5')]},'key':{'type':Sequelize[_0xdfe0('0x5')]},'keyType':{'type':Sequelize[_0xdfe0('0x6')](_0xdfe0('0x2'),_0xdfe0('0x3'),_0xdfe0('0x7'))},'keyContent':{'type':Sequelize[_0xdfe0('0x5')]},'idField':{'type':Sequelize[_0xdfe0('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xdfe0('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7cea=['STRING','variable','BOOLEAN','sequelize','ENUM','string','customVariable','keyValue','picklist'];(function(_0x2bc586,_0x346c61){var _0x403324=function(_0x1f1177){while(--_0x1f1177){_0x2bc586['push'](_0x2bc586['shift']());}};_0x403324(++_0x346c61);}(_0x7cea,0x108));var _0xa7ce=function(_0x5aaf05,_0x3241e0){_0x5aaf05=_0x5aaf05-0x0;var _0x240d54=_0x7cea[_0x5aaf05];return _0x240d54;};'use strict';var Sequelize=require(_0xa7ce('0x0'));module['exports']={'type':{'type':Sequelize[_0xa7ce('0x1')](_0xa7ce('0x2'),'variable',_0xa7ce('0x3'),_0xa7ce('0x4'),_0xa7ce('0x5')),'defaultValue':_0xa7ce('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa7ce('0x6')]},'keyType':{'type':Sequelize[_0xa7ce('0x1')](_0xa7ce('0x2'),_0xa7ce('0x7'),_0xa7ce('0x3'))},'keyContent':{'type':Sequelize[_0xa7ce('0x6')]},'idField':{'type':Sequelize[_0xa7ce('0x6')]},'nameField':{'type':Sequelize[_0xa7ce('0x6')]},'customField':{'type':Sequelize[_0xa7ce('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa7ce('0x6')]}};
\ No newline at end of file
index 6c4c3ad..1ef194b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b7c=['findAll','rows','show','params','find','catch','create','body','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','end','name','send','index','map','ZohoField','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5b7c,0x9e));var _0xc5b7=function(_0x55312b,_0x50e42b){_0x55312b=_0x55312b-0x0;var _0x87b244=_0x5b7c[_0x55312b];return _0x87b244;};'use strict';var emlformat=require(_0xc5b7('0x0'));var rimraf=require(_0xc5b7('0x1'));var zipdir=require(_0xc5b7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc5b7('0x3'));var moment=require(_0xc5b7('0x4'));var BPromise=require(_0xc5b7('0x5'));var Mustache=require(_0xc5b7('0x6'));var util=require(_0xc5b7('0x7'));var path=require('path');var sox=require(_0xc5b7('0x8'));var csv=require(_0xc5b7('0x9'));var ejs=require(_0xc5b7('0xa'));var fs=require('fs');var fs_extra=require(_0xc5b7('0xb'));var _=require(_0xc5b7('0xc'));var squel=require(_0xc5b7('0xd'));var crypto=require(_0xc5b7('0xe'));var jsforce=require(_0xc5b7('0xf'));var deskjs=require(_0xc5b7('0x10'));var toCsv=require(_0xc5b7('0x9'));var querystring=require(_0xc5b7('0x11'));var Papa=require(_0xc5b7('0x12'));var Redis=require(_0xc5b7('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc5b7('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc5b7('0x15'));var utils=require(_0xc5b7('0x16'));var config=require(_0xc5b7('0x17'));var licenseUtil=require(_0xc5b7('0x18'));var db=require(_0xc5b7('0x19'))['db'];function respondWithStatusCode(_0x2ce32e,_0x405155){_0x405155=_0x405155||0xcc;return function(_0x5b882b){if(_0x5b882b){return _0x2ce32e[_0xc5b7('0x1a')](_0x405155);}return _0x2ce32e[_0xc5b7('0x1b')](_0x405155)['end']();};}function respondWithResult(_0xd1ad86,_0x15cc43){_0x15cc43=_0x15cc43||0xc8;return function(_0x5375cf){if(_0x5375cf){return _0xd1ad86[_0xc5b7('0x1b')](_0x15cc43)[_0xc5b7('0x1c')](_0x5375cf);}};}function respondWithFilteredResult(_0x49c745,_0x5902fb){return function(_0xf37add){if(_0xf37add){var _0x1c00ac=typeof _0x5902fb[_0xc5b7('0x1d')]===_0xc5b7('0x1e')&&typeof _0x5902fb[_0xc5b7('0x1f')]===_0xc5b7('0x1e');var _0x89bc57=_0xf37add[_0xc5b7('0x20')];var _0x318463=_0x1c00ac?0x0:_0x5902fb[_0xc5b7('0x1d')];var _0x2c1f2f=_0x1c00ac?_0xf37add[_0xc5b7('0x20')]:_0x5902fb[_0xc5b7('0x1d')]+_0x5902fb['limit'];var _0xcdcd45;if(_0x2c1f2f>=_0x89bc57){_0x2c1f2f=_0x89bc57;_0xcdcd45=0xc8;}else{_0xcdcd45=0xce;}_0x49c745[_0xc5b7('0x1b')](_0xcdcd45);return _0x49c745[_0xc5b7('0x21')](_0xc5b7('0x22'),_0x318463+'-'+_0x2c1f2f+'/'+_0x89bc57)['json'](_0xf37add);}return null;};}function patchUpdates(_0x1e84d7){return function(_0x57a9df){try{jsonpatch['apply'](_0x57a9df,_0x1e84d7,!![]);}catch(_0x1bc541){return BPromise['reject'](_0x1bc541);}return _0x57a9df[_0xc5b7('0x23')]();};}function saveUpdates(_0x18fa4a,_0x8b8320){return function(_0x6610c5){if(_0x6610c5){return _0x6610c5[_0xc5b7('0x24')](_0x18fa4a)[_0xc5b7('0x25')](function(_0x9f8b96){return _0x9f8b96;});}return null;};}function removeEntity(_0x4c0692,_0x4441b0){return function(_0x21642b){if(_0x21642b){return _0x21642b[_0xc5b7('0x26')]()[_0xc5b7('0x25')](function(){_0x4c0692[_0xc5b7('0x1b')](0xcc)[_0xc5b7('0x27')]();});}};}function handleEntityNotFound(_0x2ad37e,_0x555e05){return function(_0xa87ef){if(!_0xa87ef){_0x2ad37e[_0xc5b7('0x1a')](0x194);}return _0xa87ef;};}function handleError(_0x10c7cb,_0x1670ea){_0x1670ea=_0x1670ea||0x1f4;return function(_0x460978){logger['error'](_0x460978['stack']);if(_0x460978[_0xc5b7('0x28')]){delete _0x460978['name'];}_0x10c7cb['status'](_0x1670ea)[_0xc5b7('0x29')](_0x460978);};}exports[_0xc5b7('0x2a')]=function(_0x2ec749,_0x336af0){var _0x12c96c={},_0x2011d9={},_0x1a8765={'count':0x0,'rows':[]};var _0x5d78f5=_[_0xc5b7('0x2b')](db[_0xc5b7('0x2c')][_0xc5b7('0x2d')],function(_0x7a4769){return{'name':_0x7a4769[_0xc5b7('0x2e')],'type':_0x7a4769[_0xc5b7('0x2f')][_0xc5b7('0x30')]};});_0x2011d9[_0xc5b7('0x31')]=_[_0xc5b7('0x2b')](_0x5d78f5,_0xc5b7('0x28'));_0x2011d9['query']=_[_0xc5b7('0x32')](_0x2ec749[_0xc5b7('0x33')]);_0x2011d9[_0xc5b7('0x34')]=_[_0xc5b7('0x35')](_0x2011d9[_0xc5b7('0x31')],_0x2011d9[_0xc5b7('0x33')]);_0x12c96c[_0xc5b7('0x36')]=_[_0xc5b7('0x35')](_0x2011d9[_0xc5b7('0x31')],qs['fields'](_0x2ec749['query'][_0xc5b7('0x37')]));_0x12c96c['attributes']=_0x12c96c[_0xc5b7('0x36')][_0xc5b7('0x38')]?_0x12c96c[_0xc5b7('0x36')]:_0x2011d9['model'];if(!_0x2ec749['query'][_0xc5b7('0x39')]('nolimit')){_0x12c96c['limit']=qs[_0xc5b7('0x1f')](_0x2ec749['query'][_0xc5b7('0x1f')]);_0x12c96c[_0xc5b7('0x1d')]=qs[_0xc5b7('0x1d')](_0x2ec749[_0xc5b7('0x33')]['offset']);}_0x12c96c[_0xc5b7('0x3a')]=qs[_0xc5b7('0x3b')](_0x2ec749[_0xc5b7('0x33')][_0xc5b7('0x3b')]);_0x12c96c[_0xc5b7('0x3c')]=qs['filters'](_['pick'](_0x2ec749['query'],_0x2011d9['filters']),_0x5d78f5);if(_0x2ec749[_0xc5b7('0x33')][_0xc5b7('0x3d')]){_0x12c96c[_0xc5b7('0x3c')]=_[_0xc5b7('0x3e')](_0x12c96c[_0xc5b7('0x3c')],{'$or':_[_0xc5b7('0x2b')](_0x5d78f5,function(_0x57971a){if(_0x57971a[_0xc5b7('0x2f')]!==_0xc5b7('0x3f')){var _0x550701={};_0x550701[_0x57971a[_0xc5b7('0x28')]]={'$like':'%'+_0x2ec749[_0xc5b7('0x33')]['filter']+'%'};return _0x550701;}})});}_0x12c96c=_[_0xc5b7('0x3e')]({},_0x12c96c,_0x2ec749[_0xc5b7('0x40')]);var _0x506dff={'where':_0x12c96c[_0xc5b7('0x3c')]};return db['ZohoField']['count'](_0x506dff)['then'](function(_0x1067cd){_0x1a8765[_0xc5b7('0x20')]=_0x1067cd;if(_0x2ec749['query'][_0xc5b7('0x41')]){_0x12c96c[_0xc5b7('0x42')]=[{'all':!![]}];}return db['ZohoField'][_0xc5b7('0x43')](_0x12c96c);})['then'](function(_0x27cd9e){_0x1a8765[_0xc5b7('0x44')]=_0x27cd9e;return _0x1a8765;})[_0xc5b7('0x25')](respondWithFilteredResult(_0x336af0,_0x12c96c))['catch'](handleError(_0x336af0,null));};exports[_0xc5b7('0x45')]=function(_0x1747a4,_0x2073b3){var _0x26fc87={'raw':!![],'where':{'id':_0x1747a4[_0xc5b7('0x46')]['id']}},_0x2c9d7e={};_0x2c9d7e[_0xc5b7('0x31')]=_[_0xc5b7('0x32')](db[_0xc5b7('0x2c')][_0xc5b7('0x2d')]);_0x2c9d7e[_0xc5b7('0x33')]=_['keys'](_0x1747a4[_0xc5b7('0x33')]);_0x2c9d7e[_0xc5b7('0x34')]=_['intersection'](_0x2c9d7e[_0xc5b7('0x31')],_0x2c9d7e['query']);_0x26fc87[_0xc5b7('0x36')]=_[_0xc5b7('0x35')](_0x2c9d7e[_0xc5b7('0x31')],qs[_0xc5b7('0x37')](_0x1747a4[_0xc5b7('0x33')]['fields']));_0x26fc87['attributes']=_0x26fc87[_0xc5b7('0x36')][_0xc5b7('0x38')]?_0x26fc87[_0xc5b7('0x36')]:_0x2c9d7e[_0xc5b7('0x31')];if(_0x1747a4['query'][_0xc5b7('0x41')]){_0x26fc87['include']=[{'all':!![]}];}_0x26fc87=_[_0xc5b7('0x3e')]({},_0x26fc87,_0x1747a4['options']);return db[_0xc5b7('0x2c')][_0xc5b7('0x47')](_0x26fc87)[_0xc5b7('0x25')](handleEntityNotFound(_0x2073b3,null))[_0xc5b7('0x25')](respondWithResult(_0x2073b3,null))[_0xc5b7('0x48')](handleError(_0x2073b3,null));};exports[_0xc5b7('0x49')]=function(_0x123da5,_0x146038){return db[_0xc5b7('0x2c')][_0xc5b7('0x49')](_0x123da5[_0xc5b7('0x4a')],{})['then'](respondWithResult(_0x146038,0xc9))[_0xc5b7('0x48')](handleError(_0x146038,null));};exports[_0xc5b7('0x24')]=function(_0x5f3feb,_0x49b575){if(_0x5f3feb[_0xc5b7('0x4a')]['id']){delete _0x5f3feb['body']['id'];}return db[_0xc5b7('0x2c')][_0xc5b7('0x47')]({'where':{'id':_0x5f3feb[_0xc5b7('0x46')]['id']}})[_0xc5b7('0x25')](handleEntityNotFound(_0x49b575,null))[_0xc5b7('0x25')](saveUpdates(_0x5f3feb[_0xc5b7('0x4a')],null))[_0xc5b7('0x25')](respondWithResult(_0x49b575,null))[_0xc5b7('0x48')](handleError(_0x49b575,null));};exports[_0xc5b7('0x26')]=function(_0x2e0c01,_0x599909){return db[_0xc5b7('0x2c')][_0xc5b7('0x47')]({'where':{'id':_0x2e0c01['params']['id']}})[_0xc5b7('0x25')](handleEntityNotFound(_0x599909,null))[_0xc5b7('0x25')](removeEntity(_0x599909,null))['catch'](handleError(_0x599909,null));};
\ No newline at end of file
+var _0xbf70=['fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','body','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','ZohoField','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes'];(function(_0x860520,_0x20520a){var _0x22ce80=function(_0x54ccbf){while(--_0x54ccbf){_0x860520['push'](_0x860520['shift']());}};_0x22ce80(++_0x20520a);}(_0xbf70,0x1b0));var _0x0bf7=function(_0xebcad1,_0x4fbdbc){_0xebcad1=_0xebcad1-0x0;var _0x5de580=_0xbf70[_0xebcad1];return _0x5de580;};'use strict';var emlformat=require(_0x0bf7('0x0'));var rimraf=require(_0x0bf7('0x1'));var zipdir=require(_0x0bf7('0x2'));var jsonpatch=require(_0x0bf7('0x3'));var rp=require(_0x0bf7('0x4'));var moment=require(_0x0bf7('0x5'));var BPromise=require(_0x0bf7('0x6'));var Mustache=require(_0x0bf7('0x7'));var util=require(_0x0bf7('0x8'));var path=require('path');var sox=require(_0x0bf7('0x9'));var csv=require(_0x0bf7('0xa'));var ejs=require(_0x0bf7('0xb'));var fs=require('fs');var fs_extra=require(_0x0bf7('0xc'));var _=require('lodash');var squel=require(_0x0bf7('0xd'));var crypto=require(_0x0bf7('0xe'));var jsforce=require(_0x0bf7('0xf'));var deskjs=require(_0x0bf7('0x10'));var toCsv=require(_0x0bf7('0xa'));var querystring=require(_0x0bf7('0x11'));var Papa=require(_0x0bf7('0x12'));var Redis=require(_0x0bf7('0x13'));var authService=require(_0x0bf7('0x14'));var qs=require(_0x0bf7('0x15'));var as=require(_0x0bf7('0x16'));var hardwareService=require(_0x0bf7('0x17'));var logger=require('../../config/logger')(_0x0bf7('0x18'));var utils=require(_0x0bf7('0x19'));var config=require(_0x0bf7('0x1a'));var licenseUtil=require(_0x0bf7('0x1b'));var db=require(_0x0bf7('0x1c'))['db'];function respondWithStatusCode(_0x80544f,_0xf35073){_0xf35073=_0xf35073||0xcc;return function(_0x1ef562){if(_0x1ef562){return _0x80544f['sendStatus'](_0xf35073);}return _0x80544f['status'](_0xf35073)[_0x0bf7('0x1d')]();};}function respondWithResult(_0x4ba753,_0x30ee6a){_0x30ee6a=_0x30ee6a||0xc8;return function(_0x17655b){if(_0x17655b){return _0x4ba753[_0x0bf7('0x1e')](_0x30ee6a)[_0x0bf7('0x1f')](_0x17655b);}};}function respondWithFilteredResult(_0x3cc22c,_0x598935){return function(_0x319d68){if(_0x319d68){var _0x4764e9=typeof _0x598935[_0x0bf7('0x20')]===_0x0bf7('0x21')&&typeof _0x598935['limit']==='undefined';var _0x1f00ba=_0x319d68['count'];var _0x39d88c=_0x4764e9?0x0:_0x598935[_0x0bf7('0x20')];var _0x4bc308=_0x4764e9?_0x319d68[_0x0bf7('0x22')]:_0x598935[_0x0bf7('0x20')]+_0x598935[_0x0bf7('0x23')];var _0x383bd2;if(_0x4bc308>=_0x1f00ba){_0x4bc308=_0x1f00ba;_0x383bd2=0xc8;}else{_0x383bd2=0xce;}_0x3cc22c[_0x0bf7('0x1e')](_0x383bd2);return _0x3cc22c[_0x0bf7('0x24')](_0x0bf7('0x25'),_0x39d88c+'-'+_0x4bc308+'/'+_0x1f00ba)[_0x0bf7('0x1f')](_0x319d68);}return null;};}function patchUpdates(_0x194aff){return function(_0x172190){try{jsonpatch[_0x0bf7('0x26')](_0x172190,_0x194aff,!![]);}catch(_0x59ea27){return BPromise[_0x0bf7('0x27')](_0x59ea27);}return _0x172190[_0x0bf7('0x28')]();};}function saveUpdates(_0x2aa441,_0x24955b){return function(_0x2146cd){if(_0x2146cd){return _0x2146cd[_0x0bf7('0x29')](_0x2aa441)[_0x0bf7('0x2a')](function(_0x26017b){return _0x26017b;});}return null;};}function removeEntity(_0x5d7850,_0x58931a){return function(_0x5c61c7){if(_0x5c61c7){return _0x5c61c7['destroy']()[_0x0bf7('0x2a')](function(){_0x5d7850[_0x0bf7('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe66b4a,_0x4847da){return function(_0x30bd14){if(!_0x30bd14){_0xe66b4a[_0x0bf7('0x2b')](0x194);}return _0x30bd14;};}function handleError(_0x37e4f8,_0x1d23a4){_0x1d23a4=_0x1d23a4||0x1f4;return function(_0x2607f6){logger[_0x0bf7('0x2c')](_0x2607f6[_0x0bf7('0x2d')]);if(_0x2607f6[_0x0bf7('0x2e')]){delete _0x2607f6['name'];}_0x37e4f8[_0x0bf7('0x1e')](_0x1d23a4)[_0x0bf7('0x2f')](_0x2607f6);};}exports[_0x0bf7('0x30')]=function(_0x586fad,_0x5e0022){var _0x41cea1={},_0x46c9db={},_0x4ff4d9={'count':0x0,'rows':[]};var _0x86bb40=_['map'](db[_0x0bf7('0x31')][_0x0bf7('0x32')],function(_0x3db49b){return{'name':_0x3db49b[_0x0bf7('0x33')],'type':_0x3db49b[_0x0bf7('0x34')][_0x0bf7('0x35')]};});_0x46c9db[_0x0bf7('0x36')]=_[_0x0bf7('0x37')](_0x86bb40,_0x0bf7('0x2e'));_0x46c9db[_0x0bf7('0x38')]=_[_0x0bf7('0x39')](_0x586fad[_0x0bf7('0x38')]);_0x46c9db['filters']=_[_0x0bf7('0x3a')](_0x46c9db['model'],_0x46c9db[_0x0bf7('0x38')]);_0x41cea1[_0x0bf7('0x3b')]=_[_0x0bf7('0x3a')](_0x46c9db[_0x0bf7('0x36')],qs[_0x0bf7('0x3c')](_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x3c')]));_0x41cea1[_0x0bf7('0x3b')]=_0x41cea1[_0x0bf7('0x3b')]['length']?_0x41cea1[_0x0bf7('0x3b')]:_0x46c9db[_0x0bf7('0x36')];if(!_0x586fad['query'][_0x0bf7('0x3d')](_0x0bf7('0x3e'))){_0x41cea1[_0x0bf7('0x23')]=qs[_0x0bf7('0x23')](_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x23')]);_0x41cea1[_0x0bf7('0x20')]=qs[_0x0bf7('0x20')](_0x586fad['query'][_0x0bf7('0x20')]);}_0x41cea1[_0x0bf7('0x3f')]=qs[_0x0bf7('0x40')](_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x40')]);_0x41cea1[_0x0bf7('0x41')]=qs[_0x0bf7('0x42')](_[_0x0bf7('0x43')](_0x586fad[_0x0bf7('0x38')],_0x46c9db['filters']),_0x86bb40);if(_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x44')]){_0x41cea1[_0x0bf7('0x41')]=_[_0x0bf7('0x45')](_0x41cea1[_0x0bf7('0x41')],{'$or':_[_0x0bf7('0x37')](_0x86bb40,function(_0xc6af24){if(_0xc6af24['type']!==_0x0bf7('0x46')){var _0x4e3c2d={};_0x4e3c2d[_0xc6af24[_0x0bf7('0x2e')]]={'$like':'%'+_0x586fad[_0x0bf7('0x38')][_0x0bf7('0x44')]+'%'};return _0x4e3c2d;}})});}_0x41cea1=_['merge']({},_0x41cea1,_0x586fad[_0x0bf7('0x47')]);var _0x4b7158={'where':_0x41cea1[_0x0bf7('0x41')]};return db[_0x0bf7('0x31')][_0x0bf7('0x22')](_0x4b7158)[_0x0bf7('0x2a')](function(_0x2c1a28){_0x4ff4d9['count']=_0x2c1a28;if(_0x586fad['query'][_0x0bf7('0x48')]){_0x41cea1[_0x0bf7('0x49')]=[{'all':!![]}];}return db[_0x0bf7('0x31')][_0x0bf7('0x4a')](_0x41cea1);})[_0x0bf7('0x2a')](function(_0x4d1bb4){_0x4ff4d9[_0x0bf7('0x4b')]=_0x4d1bb4;return _0x4ff4d9;})[_0x0bf7('0x2a')](respondWithFilteredResult(_0x5e0022,_0x41cea1))[_0x0bf7('0x4c')](handleError(_0x5e0022,null));};exports[_0x0bf7('0x4d')]=function(_0x2ebd0b,_0x1cdc3b){var _0x3075b6={'raw':!![],'where':{'id':_0x2ebd0b[_0x0bf7('0x4e')]['id']}},_0x2de398={};_0x2de398['model']=_[_0x0bf7('0x39')](db[_0x0bf7('0x31')]['rawAttributes']);_0x2de398[_0x0bf7('0x38')]=_['keys'](_0x2ebd0b[_0x0bf7('0x38')]);_0x2de398[_0x0bf7('0x42')]=_[_0x0bf7('0x3a')](_0x2de398[_0x0bf7('0x36')],_0x2de398[_0x0bf7('0x38')]);_0x3075b6[_0x0bf7('0x3b')]=_[_0x0bf7('0x3a')](_0x2de398['model'],qs[_0x0bf7('0x3c')](_0x2ebd0b[_0x0bf7('0x38')][_0x0bf7('0x3c')]));_0x3075b6[_0x0bf7('0x3b')]=_0x3075b6[_0x0bf7('0x3b')][_0x0bf7('0x4f')]?_0x3075b6['attributes']:_0x2de398['model'];if(_0x2ebd0b[_0x0bf7('0x38')][_0x0bf7('0x48')]){_0x3075b6[_0x0bf7('0x49')]=[{'all':!![]}];}_0x3075b6=_[_0x0bf7('0x45')]({},_0x3075b6,_0x2ebd0b[_0x0bf7('0x47')]);return db[_0x0bf7('0x31')][_0x0bf7('0x50')](_0x3075b6)['then'](handleEntityNotFound(_0x1cdc3b,null))[_0x0bf7('0x2a')](respondWithResult(_0x1cdc3b,null))[_0x0bf7('0x4c')](handleError(_0x1cdc3b,null));};exports['create']=function(_0x213169,_0x304dbb){return db[_0x0bf7('0x31')]['create'](_0x213169['body'],{})[_0x0bf7('0x2a')](respondWithResult(_0x304dbb,0xc9))[_0x0bf7('0x4c')](handleError(_0x304dbb,null));};exports['update']=function(_0x20fad4,_0x1c51c7){if(_0x20fad4[_0x0bf7('0x51')]['id']){delete _0x20fad4['body']['id'];}return db[_0x0bf7('0x31')][_0x0bf7('0x50')]({'where':{'id':_0x20fad4[_0x0bf7('0x4e')]['id']}})[_0x0bf7('0x2a')](handleEntityNotFound(_0x1c51c7,null))[_0x0bf7('0x2a')](saveUpdates(_0x20fad4[_0x0bf7('0x51')],null))['then'](respondWithResult(_0x1c51c7,null))[_0x0bf7('0x4c')](handleError(_0x1c51c7,null));};exports['destroy']=function(_0x5a8156,_0x3a9fdd){return db[_0x0bf7('0x31')][_0x0bf7('0x50')]({'where':{'id':_0x5a8156[_0x0bf7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3a9fdd,null))['then'](removeEntity(_0x3a9fdd,null))[_0x0bf7('0x4c')](handleError(_0x3a9fdd,null));};
\ No newline at end of file
index dbd6146..8c924ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27a0=['../../config/logger','api','moment','bluebird','./intZohoField.attributes','exports','define','ZohoField','zoho_unique_index','idField','FieldId','util'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x27a0,0xbf));var _0x027a=function(_0x28ccf6,_0xb22057){_0x28ccf6=_0x28ccf6-0x0;var _0x4d28dc=_0x27a0[_0x28ccf6];return _0x4d28dc;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var logger=require(_0x027a('0x1'))(_0x027a('0x2'));var moment=require(_0x027a('0x3'));var BPromise=require(_0x027a('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(_0x027a('0x5'));module[_0x027a('0x6')]=function(_0x137b09,_0x639bec){return _0x137b09[_0x027a('0x7')](_0x027a('0x8'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':_0x027a('0x9'),'fields':[_0x027a('0xa'),_0x027a('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xba34=['FieldId','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./intZohoField.attributes','exports','define','int_zoho_fields','zoho_unique_index','idField'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0xba34,0x119));var _0x4ba3=function(_0x55d862,_0x430bc5){_0x55d862=_0x55d862-0x0;var _0x89937=_0xba34[_0x55d862];return _0x89937;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var logger=require(_0x4ba3('0x2'))(_0x4ba3('0x3'));var moment=require(_0x4ba3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x4ba3('0x5'));var config=require(_0x4ba3('0x6'));var attributes=require(_0x4ba3('0x7'));module[_0x4ba3('0x8')]=function(_0x3590a1,_0xb88621){return _0x3590a1[_0x4ba3('0x9')]('ZohoField',attributes,{'tableName':_0x4ba3('0xa'),'paranoid':![],'indexes':[{'name':_0x4ba3('0xb'),'fields':[_0x4ba3('0xc'),_0x4ba3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index db05340..c0a2761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1f2=['ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info'];(function(_0x18b203,_0x3845b5){var _0x56aa6=function(_0x3ede1f){while(--_0x3ede1f){_0x18b203['push'](_0x18b203['shift']());}};_0x56aa6(++_0x3845b5);}(_0xe1f2,0x14b));var _0x2e1f=function(_0x501d0d,_0x38b758){_0x501d0d=_0x501d0d-0x0;var _0x37a8b8=_0xe1f2[_0x501d0d];return _0x37a8b8;};'use strict';var _=require(_0x2e1f('0x0'));var util=require(_0x2e1f('0x1'));var moment=require(_0x2e1f('0x2'));var BPromise=require(_0x2e1f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2e1f('0x4'));var db=require(_0x2e1f('0x5'))['db'];var utils=require(_0x2e1f('0x6'));var logger=require(_0x2e1f('0x7'))(_0x2e1f('0x8'));var config=require('../../config/environment');var jayson=require(_0x2e1f('0x9'));var client=jayson[_0x2e1f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c1cfc,_0x5b9ccd,_0x1d5d1a){return new BPromise(function(_0xdade82,_0x14aa69){return client[_0x2e1f('0xb')](_0x2c1cfc,_0x1d5d1a)[_0x2e1f('0xc')](function(_0x3538e7){logger[_0x2e1f('0xd')](_0x2e1f('0xe'),_0x5b9ccd,_0x2e1f('0xf'));logger[_0x2e1f('0x10')](_0x2e1f('0x11'),_0x5b9ccd,_0x2e1f('0xf'),JSON[_0x2e1f('0x12')](_0x3538e7));if(_0x3538e7[_0x2e1f('0x13')]){if(_0x3538e7[_0x2e1f('0x13')][_0x2e1f('0x14')]===0x1f4){logger[_0x2e1f('0x13')](_0x2e1f('0xe'),_0x5b9ccd,_0x3538e7['error'][_0x2e1f('0x15')]);return _0x14aa69(_0x3538e7['error'][_0x2e1f('0x15')]);}logger['error']('ZohoField,\x20%s,\x20%s',_0x5b9ccd,_0x3538e7['error'][_0x2e1f('0x15')]);return _0xdade82(_0x3538e7[_0x2e1f('0x13')][_0x2e1f('0x15')]);}else{logger[_0x2e1f('0xd')]('ZohoField,\x20%s,\x20%s',_0x5b9ccd,_0x2e1f('0xf'));_0xdade82(_0x3538e7['result']['message']);}})[_0x2e1f('0x16')](function(_0x36005e){logger[_0x2e1f('0x13')]('ZohoField,\x20%s,\x20%s',_0x5b9ccd,_0x36005e);_0x14aa69(_0x36005e);});});}
\ No newline at end of file
+var _0x853b=['../../config/environment','jayson/promise','client','http','request','then','info','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoField,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x28d18e,_0x46a650){var _0x1eef33=function(_0x347409){while(--_0x347409){_0x28d18e['push'](_0x28d18e['shift']());}};_0x1eef33(++_0x46a650);}(_0x853b,0xb0));var _0xb853=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x853b[_0x465028];return _0xb783d4;};'use strict';var _=require(_0xb853('0x0'));var util=require(_0xb853('0x1'));var moment=require('moment');var BPromise=require(_0xb853('0x2'));var rs=require(_0xb853('0x3'));var fs=require('fs');var Redis=require(_0xb853('0x4'));var db=require(_0xb853('0x5'))['db'];var utils=require(_0xb853('0x6'));var logger=require(_0xb853('0x7'))('rpc');var config=require(_0xb853('0x8'));var jayson=require(_0xb853('0x9'));var client=jayson[_0xb853('0xa')][_0xb853('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4938f8,_0x4748d1,_0x400c41){return new BPromise(function(_0x490d75,_0x57ff6f){return client[_0xb853('0xc')](_0x4938f8,_0x400c41)[_0xb853('0xd')](function(_0x1cc010){logger[_0xb853('0xe')]('ZohoField,\x20%s,\x20%s',_0x4748d1,'request\x20sent');logger[_0xb853('0xf')](_0xb853('0x10'),_0x4748d1,'request\x20sent',JSON[_0xb853('0x11')](_0x1cc010));if(_0x1cc010[_0xb853('0x12')]){if(_0x1cc010[_0xb853('0x12')][_0xb853('0x13')]===0x1f4){logger[_0xb853('0x12')]('ZohoField,\x20%s,\x20%s',_0x4748d1,_0x1cc010[_0xb853('0x12')][_0xb853('0x14')]);return _0x57ff6f(_0x1cc010['error'][_0xb853('0x14')]);}logger[_0xb853('0x12')]('ZohoField,\x20%s,\x20%s',_0x4748d1,_0x1cc010['error'][_0xb853('0x14')]);return _0x490d75(_0x1cc010[_0xb853('0x12')][_0xb853('0x14')]);}else{logger[_0xb853('0xe')](_0xb853('0x15'),_0x4748d1,'request\x20sent');_0x490d75(_0x1cc010['result'][_0xb853('0x14')]);}})[_0xb853('0x16')](function(_0x5ed0ba){logger[_0xb853('0x12')](_0xb853('0x15'),_0x4748d1,_0x5ed0ba);_0x57ff6f(_0x5ed0ba);});});}
\ No newline at end of file
index 5a0386f..9fc9b3b 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(_0xde8b60,_0x50a2de){var _0x5474ff=function(_0x206004){while(--_0x206004){_0xde8b60['push'](_0xde8b60['shift']());}};_0x5474ff(++_0x50a2de);}(_0xe706,0xa3));var _0x6e70=function(_0x466aeb,_0x3a35bf){_0x466aeb=_0x466aeb-0x0;var _0x57818e=_0xe706[_0x466aeb];return _0x57818e;};'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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x24696b,_0x12de19){var _0x3f86b0=function(_0x11f2eb){while(--_0x11f2eb){_0x24696b['push'](_0x24696b['shift']());}};_0x3f86b0(++_0x12de19);}(_0x9c44,0x178));var _0x49c4=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x9c44[_0x17b6e3];return _0x3906f3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index ae92735..8662a48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88c8=['INTEGER','BOOLEAN','state','sequelize','exports','STRING','app.js'];(function(_0x45ec0b,_0x260c5d){var _0x99a3d8=function(_0x524391){while(--_0x524391){_0x45ec0b['push'](_0x45ec0b['shift']());}};_0x99a3d8(++_0x260c5d);}(_0x88c8,0x7a));var _0x888c=function(_0x1edab8,_0x3e9cc9){_0x1edab8=_0x1edab8-0x0;var _0x370d90=_0x88c8[_0x1edab8];return _0x370d90;};'use strict';var Sequelize=require(_0x888c('0x0'));module[_0x888c('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x888c('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize['STRING'],'defaultValue':_0x888c('0x3')},'filename':{'type':Sequelize[_0x888c('0x2')]},'path':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x888c('0x2')]},'size':{'type':Sequelize[_0x888c('0x4')]},'active':{'type':Sequelize[_0x888c('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x888c('0x2')]},'logo':{'type':Sequelize[_0x888c('0x2')]},'state':{'type':Sequelize[_0x888c('0x2')],'unique':_0x888c('0x6')},'description':{'type':Sequelize[_0x888c('0x2')]},'title':{'type':Sequelize[_0x888c('0x2')]},'remoteUri':{'type':Sequelize[_0x888c('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0x18ad=['app.js','BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version'];(function(_0x22760e,_0x36048f){var _0x3a501b=function(_0x58a5dc){while(--_0x58a5dc){_0x22760e['push'](_0x22760e['shift']());}};_0x3a501b(++_0x36048f);}(_0x18ad,0x1bc));var _0xd18a=function(_0x5413f5,_0x3154c7){_0x5413f5=_0x5413f5-0x0;var _0x639288=_0x18ad[_0x5413f5];return _0x639288;};'use strict';var Sequelize=require(_0xd18a('0x0'));module[_0xd18a('0x1')]={'name':{'type':Sequelize[_0xd18a('0x2')],'allowNull':![],'unique':_0xd18a('0x3')},'version':{'type':Sequelize[_0xd18a('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize['STRING'],'defaultValue':_0xd18a('0x4')},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0xd18a('0x2')]},'type':{'type':Sequelize[_0xd18a('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0xd18a('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xd18a('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0xd18a('0x2')],'unique':_0xd18a('0x6')},'description':{'type':Sequelize[_0xd18a('0x2')]},'title':{'type':Sequelize[_0xd18a('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index f0cea1c..e3a748b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','Integration','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','create','body','find','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'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xc4aa[_0x4792c8];return _0x35edb1;};'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'];function respondWithStatusCode(_0x24291d,_0x5e16aa){_0x5e16aa=_0x5e16aa||0xcc;return function(_0x21a79){if(_0x21a79){return _0x24291d[_0xac4a('0x17')](_0x5e16aa);}return _0x24291d[_0xac4a('0x18')](_0x5e16aa)[_0xac4a('0x19')]();};}function respondWithResult(_0x1b4313,_0x3b71c0){_0x3b71c0=_0x3b71c0||0xc8;return function(_0x34bc01){if(_0x34bc01){return _0x1b4313[_0xac4a('0x18')](_0x3b71c0)[_0xac4a('0x1a')](_0x34bc01);}};}function respondWithFilteredResult(_0x42c7fc,_0x11e101){return function(_0x26dbb8){if(_0x26dbb8){var _0x4a2119=typeof _0x11e101[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x11e101[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x3e88e3=_0x26dbb8[_0xac4a('0x1e')];var _0x28e304=_0x4a2119?0x0:_0x11e101[_0xac4a('0x1b')];var _0x546c5d=_0x4a2119?_0x26dbb8['count']:_0x11e101[_0xac4a('0x1b')]+_0x11e101[_0xac4a('0x1d')];var _0x39b691;if(_0x546c5d>=_0x3e88e3){_0x546c5d=_0x3e88e3;_0x39b691=0xc8;}else{_0x39b691=0xce;}_0x42c7fc['status'](_0x39b691);return _0x42c7fc[_0xac4a('0x1f')](_0xac4a('0x20'),_0x28e304+'-'+_0x546c5d+'/'+_0x3e88e3)[_0xac4a('0x1a')](_0x26dbb8);}return null;};}function patchUpdates(_0x3a3cdb){return function(_0x123694){try{jsonpatch[_0xac4a('0x21')](_0x123694,_0x3a3cdb,!![]);}catch(_0xe38996){return BPromise[_0xac4a('0x22')](_0xe38996);}return _0x123694['save']();};}function saveUpdates(_0x3d8f0a,_0x3204ad){return function(_0x599787){if(_0x599787){return _0x599787[_0xac4a('0x23')](_0x3d8f0a)[_0xac4a('0x24')](function(_0x3eacd3){return _0x3eacd3;});}return null;};}function removeEntity(_0x947d8e,_0x4d2d6c){return function(_0x1b7998){if(_0x1b7998){return _0x1b7998[_0xac4a('0x25')]()[_0xac4a('0x24')](function(){_0x947d8e[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x2b0dc2,_0x222507){return function(_0x36054a){if(!_0x36054a){_0x2b0dc2[_0xac4a('0x17')](0x194);}return _0x36054a;};}function handleError(_0x3bc318,_0x1d0539){_0x1d0539=_0x1d0539||0x1f4;return function(_0x215a31){logger[_0xac4a('0x26')](_0x215a31[_0xac4a('0x27')]);if(_0x215a31[_0xac4a('0x28')]){delete _0x215a31[_0xac4a('0x28')];}_0x3bc318['status'](_0x1d0539)[_0xac4a('0x29')](_0x215a31);};}exports[_0xac4a('0x2a')]=function(_0x42a33c,_0x2772fe){var _0x116700={},_0x4a5a9e={},_0x47f49c={'count':0x0,'rows':[]};var _0xdb7e=_[_0xac4a('0x2b')](db[_0xac4a('0x2c')]['rawAttributes'],function(_0x4bda1f){return{'name':_0x4bda1f[_0xac4a('0x2d')],'type':_0x4bda1f[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x4a5a9e[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0xdb7e,'name');_0x4a5a9e[_0xac4a('0x31')]=_['keys'](_0x42a33c[_0xac4a('0x31')]);_0x4a5a9e['filters']=_[_0xac4a('0x32')](_0x4a5a9e[_0xac4a('0x30')],_0x4a5a9e[_0xac4a('0x31')]);_0x116700[_0xac4a('0x33')]=_[_0xac4a('0x32')](_0x4a5a9e[_0xac4a('0x30')],qs[_0xac4a('0x34')](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x34')]));_0x116700[_0xac4a('0x33')]=_0x116700[_0xac4a('0x33')][_0xac4a('0x35')]?_0x116700[_0xac4a('0x33')]:_0x4a5a9e[_0xac4a('0x30')];if(!_0x42a33c['query'][_0xac4a('0x36')](_0xac4a('0x37'))){_0x116700['limit']=qs[_0xac4a('0x1d')](_0x42a33c[_0xac4a('0x31')]['limit']);_0x116700['offset']=qs[_0xac4a('0x1b')](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x1b')]);}_0x116700[_0xac4a('0x38')]=qs['sort'](_0x42a33c[_0xac4a('0x31')][_0xac4a('0x39')]);_0x116700['where']=qs[_0xac4a('0x3a')](_[_0xac4a('0x3b')](_0x42a33c[_0xac4a('0x31')],_0x4a5a9e['filters']),_0xdb7e);if(_0x42a33c[_0xac4a('0x31')][_0xac4a('0x3c')]){_0x116700[_0xac4a('0x3d')]=_['merge'](_0x116700[_0xac4a('0x3d')],{'$or':_[_0xac4a('0x2b')](_0xdb7e,function(_0x4b9faf){if(_0x4b9faf['type']!==_0xac4a('0x3e')){var _0x5e0926={};_0x5e0926[_0x4b9faf['name']]={'$like':'%'+_0x42a33c['query']['filter']+'%'};return _0x5e0926;}})});}_0x116700=_[_0xac4a('0x3f')]({},_0x116700,_0x42a33c[_0xac4a('0x40')]);var _0x37834b={'where':_0x116700[_0xac4a('0x3d')]};return db[_0xac4a('0x2c')][_0xac4a('0x1e')](_0x37834b)[_0xac4a('0x24')](function(_0x2b16f0){_0x47f49c[_0xac4a('0x1e')]=_0x2b16f0;if(_0x42a33c[_0xac4a('0x31')][_0xac4a('0x41')]){_0x116700[_0xac4a('0x42')]=[{'all':!![]}];}return db['Integration']['findAll'](_0x116700);})['then'](function(_0x1e1cc5){_0x47f49c[_0xac4a('0x43')]=_0x1e1cc5;return _0x47f49c;})[_0xac4a('0x24')](respondWithFilteredResult(_0x2772fe,_0x116700))[_0xac4a('0x44')](handleError(_0x2772fe,null));};exports[_0xac4a('0x45')]=function(_0x411543,_0x8febf0){var _0x3441f2={'raw':![],'where':{'id':_0x411543[_0xac4a('0x46')]['id']}},_0x3e9973={};_0x3e9973['model']=_[_0xac4a('0x47')](db[_0xac4a('0x2c')][_0xac4a('0x48')]);_0x3e9973[_0xac4a('0x31')]=_[_0xac4a('0x47')](_0x411543['query']);_0x3e9973[_0xac4a('0x3a')]=_[_0xac4a('0x32')](_0x3e9973['model'],_0x3e9973[_0xac4a('0x31')]);_0x3441f2['attributes']=_[_0xac4a('0x32')](_0x3e9973[_0xac4a('0x30')],qs[_0xac4a('0x34')](_0x411543[_0xac4a('0x31')][_0xac4a('0x34')]));_0x3441f2[_0xac4a('0x33')]=_0x3441f2[_0xac4a('0x33')][_0xac4a('0x35')]?_0x3441f2[_0xac4a('0x33')]:_0x3e9973[_0xac4a('0x30')];if(_0x411543[_0xac4a('0x31')][_0xac4a('0x41')]){_0x3441f2['include']=[{'all':!![]}];}_0x3441f2=_[_0xac4a('0x3f')]({},_0x3441f2,_0x411543[_0xac4a('0x40')]);return db[_0xac4a('0x2c')]['find'](_0x3441f2)[_0xac4a('0x24')](handleEntityNotFound(_0x8febf0,null))[_0xac4a('0x24')](respondWithResult(_0x8febf0,null))['catch'](handleError(_0x8febf0,null));};exports[_0xac4a('0x49')]=function(_0x5a7f6e,_0x244950){return db[_0xac4a('0x2c')][_0xac4a('0x49')](_0x5a7f6e['body'],{})['then'](respondWithResult(_0x244950,0xc9))[_0xac4a('0x44')](handleError(_0x244950,null));};exports['update']=function(_0x18ae96,_0x566258){if(_0x18ae96[_0xac4a('0x4a')]['id']){delete _0x18ae96['body']['id'];}return db[_0xac4a('0x2c')][_0xac4a('0x4b')]({'where':{'id':_0x18ae96[_0xac4a('0x46')]['id']}})[_0xac4a('0x24')](handleEntityNotFound(_0x566258,null))['then'](saveUpdates(_0x18ae96[_0xac4a('0x4a')],null))[_0xac4a('0x24')](respondWithResult(_0x566258,null))[_0xac4a('0x44')](handleError(_0x566258,null));};exports[_0xac4a('0x25')]=function(_0x2f30e2,_0x138876){return db[_0xac4a('0x2c')]['find']({'where':{'id':_0x2f30e2[_0xac4a('0x46')]['id']}})[_0xac4a('0x24')](handleEntityNotFound(_0x138876,null))['then'](removeEntity(_0x138876,null))[_0xac4a('0x44')](handleError(_0x138876,null));};
\ No newline at end of file
+var _0x430c=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','then','destroy','error','stack','name','send','index','Integration','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','eml-format','fast-json-patch','request-promise','moment','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x5365a9,_0x34eee4){var _0x43b00c=function(_0x42de41){while(--_0x42de41){_0x5365a9['push'](_0x5365a9['shift']());}};_0x43b00c(++_0x34eee4);}(_0x430c,0x1a1));var _0xc430=function(_0x1f7839,_0x2a26e6){_0x1f7839=_0x1f7839-0x0;var _0x36b42e=_0x430c[_0x1f7839];return _0x36b42e;};'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));};
\ No newline at end of file
index d44fb7c..ea7b09a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f3f=['api','moment','path','rimraf','exports','define','integrations','lodash','util','../../config/logger'];(function(_0x1db251,_0xf0443d){var _0x56685a=function(_0x6ec6b7){while(--_0x6ec6b7){_0x1db251['push'](_0x1db251['shift']());}};_0x56685a(++_0xf0443d);}(_0x2f3f,0x18d));var _0xf2f3=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x2f3f[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xf2f3('0x0'));var util=require(_0xf2f3('0x1'));var logger=require(_0xf2f3('0x2'))(_0xf2f3('0x3'));var moment=require(_0xf2f3('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf2f3('0x5'));var rimraf=require(_0xf2f3('0x6'));var config=require('../../config/environment');var attributes=require('./integration.attributes');module[_0xf2f3('0x7')]=function(_0x4d7271,_0x119fb6){return _0x4d7271[_0xf2f3('0x8')]('Integration',attributes,{'tableName':_0xf2f3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4742=['rimraf','../../config/environment','./integration.attributes','define','Integration','integrations','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x231118,_0x12041a){var _0x42bd92=function(_0x182901){while(--_0x182901){_0x231118['push'](_0x231118['shift']());}};_0x42bd92(++_0x12041a);}(_0x4742,0x1b6));var _0x2474=function(_0x169195,_0xffd958){_0x169195=_0x169195-0x0;var _0x3c1f6c=_0x4742[_0x169195];return _0x3c1f6c;};'use strict';var _=require(_0x2474('0x0'));var util=require('util');var logger=require(_0x2474('0x1'))(_0x2474('0x2'));var moment=require(_0x2474('0x3'));var BPromise=require(_0x2474('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2474('0x5'));var rimraf=require(_0x2474('0x6'));var config=require(_0x2474('0x7'));var attributes=require(_0x2474('0x8'));module['exports']=function(_0x365a3f,_0x3bb181){return _0x365a3f[_0x2474('0x9')](_0x2474('0xa'),attributes,{'tableName':_0x2474('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa8ee67..365110c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x524e,0x15e));var _0xe524=function(_0x3b581f,_0x5deed9){_0x3b581f=_0x3b581f-0x0;var _0x17b7fb=_0x524e[_0x3b581f];return _0x17b7fb;};'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
+var _0x896e=['Integration,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then'];(function(_0x88a170,_0x570911){var _0x171401=function(_0x375835){while(--_0x375835){_0x88a170['push'](_0x88a170['shift']());}};_0x171401(++_0x570911);}(_0x896e,0x1e9));var _0xe896=function(_0x1930a2,_0x43eeb1){_0x1930a2=_0x1930a2-0x0;var _0x36fb1f=_0x896e[_0x1930a2];return _0x36fb1f;};'use strict';var _=require(_0xe896('0x0'));var util=require(_0xe896('0x1'));var moment=require(_0xe896('0x2'));var BPromise=require(_0xe896('0x3'));var rs=require(_0xe896('0x4'));var fs=require('fs');var Redis=require(_0xe896('0x5'));var db=require(_0xe896('0x6'))['db'];var utils=require(_0xe896('0x7'));var logger=require(_0xe896('0x8'))(_0xe896('0x9'));var config=require(_0xe896('0xa'));var jayson=require(_0xe896('0xb'));var client=jayson['client'][_0xe896('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7a0721,_0x3b902c,_0x264eeb){return new BPromise(function(_0x43c619,_0x5a1909){return client[_0xe896('0xd')](_0x7a0721,_0x264eeb)[_0xe896('0xe')](function(_0x37a90d){logger['info'](_0xe896('0xf'),_0x3b902c,'request\x20sent');logger[_0xe896('0x10')]('Integration,\x20%s,\x20%s,\x20%s',_0x3b902c,_0xe896('0x11'),JSON[_0xe896('0x12')](_0x37a90d));if(_0x37a90d[_0xe896('0x13')]){if(_0x37a90d['error'][_0xe896('0x14')]===0x1f4){logger[_0xe896('0x13')](_0xe896('0xf'),_0x3b902c,_0x37a90d['error'][_0xe896('0x15')]);return _0x5a1909(_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);}logger['error'](_0xe896('0xf'),_0x3b902c,_0x37a90d[_0xe896('0x13')][_0xe896('0x15')]);return _0x43c619(_0x37a90d['error']['message']);}else{logger[_0xe896('0x16')](_0xe896('0xf'),_0x3b902c,'request\x20sent');_0x43c619(_0x37a90d['result'][_0xe896('0x15')]);}})[_0xe896('0x17')](function(_0x57f04b){logger[_0xe896('0x13')]('Integration,\x20%s,\x20%s',_0x3b902c,_0x57f04b);_0x5a1909(_0x57f04b);});});}
\ No newline at end of file
index b3198ce..9ec1d23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x5f2f,0x73));var _0xf5f2=function(_0x755816,_0x1bbc98){_0x755816=_0x755816-0x0;var _0x499a95=_0x5f2f[_0x755816];return _0x499a95;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')]('/',auth[_0xf5f2('0xa')](),controller['create']);router[_0xf5f2('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);router[_0xf5f2('0x13')]('/:id',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x14')]);module[_0xf5f2('0x15')]=router;
\ No newline at end of file
+var _0xef0f=['update','delete','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./integrationReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x4f8a25,_0x4efaf5){var _0x5796fe=function(_0x5dcc54){while(--_0x5dcc54){_0x4f8a25['push'](_0x4f8a25['shift']());}};_0x5796fe(++_0x4efaf5);}(_0xef0f,0x168));var _0xfef0=function(_0x5532e1,_0x388cd1){_0x5532e1=_0x5532e1-0x0;var _0x276bb5=_0xef0f[_0x5532e1];return _0x276bb5;};'use strict';var multer=require(_0xfef0('0x0'));var util=require('util');var path=require(_0xfef0('0x1'));var timeout=require(_0xfef0('0x2'));var express=require(_0xfef0('0x3'));var router=express['Router']();var fs_extra=require(_0xfef0('0x4'));var auth=require(_0xfef0('0x5'));var interaction=require(_0xfef0('0x6'));var config=require('../../config/environment');var controller=require(_0xfef0('0x7'));router[_0xfef0('0x8')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0xa')]);router[_0xfef0('0x8')](_0xfef0('0xb'),auth['isAuthenticated'](),controller[_0xfef0('0xc')]);router['get'](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0xe')]);router[_0xfef0('0xf')]('/',auth[_0xfef0('0x9')](),controller[_0xfef0('0x10')]);router[_0xfef0('0x11')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x12')]);router[_0xfef0('0x13')](_0xfef0('0xd'),auth[_0xfef0('0x9')](),controller[_0xfef0('0x14')]);module['exports']=router;
\ No newline at end of file
index 1ef381c..1644dcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1512=['STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM','RECEIVED','FAILED','sequelize','exports'];(function(_0x5c4d0b,_0x1293a7){var _0xb61057=function(_0x50f06b){while(--_0x50f06b){_0x5c4d0b['push'](_0x5c4d0b['shift']());}};_0xb61057(++_0x1293a7);}(_0x1512,0x184));var _0x2151=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x1512[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x2151('0x0'));module[_0x2151('0x1')]={'integration':{'type':Sequelize[_0x2151('0x2')]},'eventChannel':{'type':Sequelize[_0x2151('0x2')]},'exitStatus':{'type':Sequelize[_0x2151('0x2')]},'ticketId':{'type':Sequelize[_0x2151('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x2151('0x2')]},'uniqueid':{'type':Sequelize[_0x2151('0x2')]},'calleridnum':{'type':Sequelize[_0x2151('0x2')]},'calleridname':{'type':Sequelize[_0x2151('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x2151('0x2')]},'membername':{'type':Sequelize[_0x2151('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x2151('0x3')]},'holdtime':{'type':Sequelize[_0x2151('0x4')]},'agentcomplete':{'type':Sequelize[_0x2151('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x2151('0x3')]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x2151('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x2151('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x2151('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x2151('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x2151('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x2151('0x4')]},'channelstatedesc':{'type':Sequelize[_0x2151('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x2151('0x2')]},'accountcode':{'type':Sequelize[_0x2151('0x2')]},'context':{'type':Sequelize[_0x2151('0x2')]},'exten':{'type':Sequelize[_0x2151('0x2')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x2151('0x2')]},'destcalleridnum':{'type':Sequelize[_0x2151('0x2')]},'destcalleridname':{'type':Sequelize[_0x2151('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x2151('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x2151('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x2151('0x2')]},'destpriority':{'type':Sequelize[_0x2151('0x2')]},'destuniqueid':{'type':Sequelize[_0x2151('0x2')]},'messageId':{'type':Sequelize[_0x2151('0x2')]},'inReplyTo':{'type':Sequelize[_0x2151('0x2')]},'subject':{'type':Sequelize[_0x2151('0x2')]},'from':{'type':Sequelize[_0x2151('0x2')]},'to':{'type':Sequelize[_0x2151('0x2')]},'cc':{'type':Sequelize[_0x2151('0x2')]},'attachment':{'type':Sequelize[_0x2151('0x6')]},'html':{'type':Sequelize[_0x2151('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x2151('0x7')]('SENT','SENDING',_0x2151('0x8'),_0x2151('0x9'))},'url':{'type':Sequelize[_0x2151('0x2')]},'app':{'type':Sequelize[_0x2151('0x2')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x2151('0x4')]}};
\ No newline at end of file
+var _0x8ea8=['SENT','SENDING','FAILED','sequelize','exports','STRING','DATE','BOOLEAN','INTEGER','TEXT'];(function(_0x538182,_0x1670c6){var _0x8eb6c5=function(_0x478a05){while(--_0x478a05){_0x538182['push'](_0x538182['shift']());}};_0x8eb6c5(++_0x1670c6);}(_0x8ea8,0x1c5));var _0x88ea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ea8[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x88ea('0x0'));module[_0x88ea('0x1')]={'integration':{'type':Sequelize[_0x88ea('0x2')]},'eventChannel':{'type':Sequelize[_0x88ea('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x88ea('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x88ea('0x2')]},'calleridnum':{'type':Sequelize[_0x88ea('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x88ea('0x2')]},'membername':{'type':Sequelize[_0x88ea('0x2')]},'agentcalledAt':{'type':Sequelize[_0x88ea('0x3')]},'agentconnectAt':{'type':Sequelize[_0x88ea('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x88ea('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize[_0x88ea('0x5')]},'agentacw':{'type':Sequelize[_0x88ea('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x88ea('0x5')]},'reason':{'type':Sequelize[_0x88ea('0x2')]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x88ea('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x88ea('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x88ea('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x88ea('0x2')]},'connectedlinenum':{'type':Sequelize[_0x88ea('0x2')]},'connectedlinename':{'type':Sequelize[_0x88ea('0x2')]},'language':{'type':Sequelize[_0x88ea('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x88ea('0x2')]},'exten':{'type':Sequelize[_0x88ea('0x2')]},'priority':{'type':Sequelize[_0x88ea('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x88ea('0x2')]},'destcalleridnum':{'type':Sequelize[_0x88ea('0x2')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x88ea('0x2')]},'destlanguage':{'type':Sequelize[_0x88ea('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x88ea('0x2')]},'destexten':{'type':Sequelize[_0x88ea('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x88ea('0x2')]},'messageId':{'type':Sequelize[_0x88ea('0x2')]},'inReplyTo':{'type':Sequelize['STRING']},'subject':{'type':Sequelize[_0x88ea('0x2')]},'from':{'type':Sequelize[_0x88ea('0x2')]},'to':{'type':Sequelize[_0x88ea('0x2')]},'cc':{'type':Sequelize[_0x88ea('0x2')]},'attachment':{'type':Sequelize[_0x88ea('0x6')]},'html':{'type':Sequelize[_0x88ea('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize['ENUM'](_0x88ea('0x7'),_0x88ea('0x8'),'RECEIVED',_0x88ea('0x9'))},'url':{'type':Sequelize['STRING']},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 09c80c9..6c0d16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98e5=['sort','where','pick','filter','merge','VIRTUAL','IntegrationReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','intersection','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','set','Content-Range','update','then','error','stack','name','index','map','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','offset','order'];(function(_0x35d9f4,_0x34aee0){var _0x23f280=function(_0x58c586){while(--_0x58c586){_0x35d9f4['push'](_0x35d9f4['shift']());}};_0x23f280(++_0x34aee0);}(_0x98e5,0x1d1));var _0x598e=function(_0x1f9861,_0x4e2d51){_0x1f9861=_0x1f9861-0x0;var _0x624354=_0x98e5[_0x1f9861];return _0x624354;};'use strict';var emlformat=require(_0x598e('0x0'));var rimraf=require(_0x598e('0x1'));var zipdir=require(_0x598e('0x2'));var jsonpatch=require(_0x598e('0x3'));var rp=require('request-promise');var moment=require(_0x598e('0x4'));var BPromise=require(_0x598e('0x5'));var Mustache=require('mustache');var util=require(_0x598e('0x6'));var path=require(_0x598e('0x7'));var sox=require('sox');var csv=require(_0x598e('0x8'));var ejs=require(_0x598e('0x9'));var fs=require('fs');var fs_extra=require(_0x598e('0xa'));var _=require(_0x598e('0xb'));var squel=require(_0x598e('0xc'));var crypto=require(_0x598e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x598e('0xe'));var toCsv=require(_0x598e('0x8'));var querystring=require('querystring');var Papa=require(_0x598e('0xf'));var Redis=require(_0x598e('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x598e('0x11'));var as=require(_0x598e('0x12'));var hardwareService=require(_0x598e('0x13'));var logger=require('../../config/logger')(_0x598e('0x14'));var utils=require(_0x598e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x598e('0x16'));var db=require(_0x598e('0x17'))['db'];function respondWithStatusCode(_0x3d62b7,_0x3617be){_0x3617be=_0x3617be||0xcc;return function(_0x59dc10){if(_0x59dc10){return _0x3d62b7[_0x598e('0x18')](_0x3617be);}return _0x3d62b7[_0x598e('0x19')](_0x3617be)[_0x598e('0x1a')]();};}function respondWithResult(_0x14e9d7,_0x4e19a6){_0x4e19a6=_0x4e19a6||0xc8;return function(_0x257ce2){if(_0x257ce2){return _0x14e9d7[_0x598e('0x19')](_0x4e19a6)[_0x598e('0x1b')](_0x257ce2);}};}function respondWithFilteredResult(_0xec9612,_0xbfdbf3){return function(_0x2ab16a){if(_0x2ab16a){var _0x3b195c=typeof _0xbfdbf3['offset']===_0x598e('0x1c')&&typeof _0xbfdbf3[_0x598e('0x1d')]===_0x598e('0x1c');var _0x313637=_0x2ab16a[_0x598e('0x1e')];var _0x3d0a32=_0x3b195c?0x0:_0xbfdbf3['offset'];var _0x47bf84=_0x3b195c?_0x2ab16a[_0x598e('0x1e')]:_0xbfdbf3['offset']+_0xbfdbf3['limit'];var _0x37b377;if(_0x47bf84>=_0x313637){_0x47bf84=_0x313637;_0x37b377=0xc8;}else{_0x37b377=0xce;}_0xec9612[_0x598e('0x19')](_0x37b377);return _0xec9612[_0x598e('0x1f')](_0x598e('0x20'),_0x3d0a32+'-'+_0x47bf84+'/'+_0x313637)[_0x598e('0x1b')](_0x2ab16a);}return null;};}function patchUpdates(_0x15e174){return function(_0x1dc0c8){try{jsonpatch['apply'](_0x1dc0c8,_0x15e174,!![]);}catch(_0x2e1604){return BPromise['reject'](_0x2e1604);}return _0x1dc0c8['save']();};}function saveUpdates(_0x4e6f59,_0x244652){return function(_0x2f8528){if(_0x2f8528){return _0x2f8528[_0x598e('0x21')](_0x4e6f59)[_0x598e('0x22')](function(_0x555a86){return _0x555a86;});}return null;};}function removeEntity(_0x2d4093,_0x33a0ca){return function(_0x5e4b79){if(_0x5e4b79){return _0x5e4b79['destroy']()[_0x598e('0x22')](function(){_0x2d4093[_0x598e('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x363ee3,_0x5797dd){return function(_0x196d8f){if(!_0x196d8f){_0x363ee3['sendStatus'](0x194);}return _0x196d8f;};}function handleError(_0xa20574,_0x1bee20){_0x1bee20=_0x1bee20||0x1f4;return function(_0x49b7d6){logger[_0x598e('0x23')](_0x49b7d6[_0x598e('0x24')]);if(_0x49b7d6[_0x598e('0x25')]){delete _0x49b7d6[_0x598e('0x25')];}_0xa20574[_0x598e('0x19')](_0x1bee20)['send'](_0x49b7d6);};}exports[_0x598e('0x26')]=function(_0x55b805,_0x352f79){var _0x3e0a02={},_0x3ab0c4={},_0xe3abf7={'count':0x0,'rows':[]};var _0x1e5d53=_[_0x598e('0x27')](db['IntegrationReport']['rawAttributes'],function(_0x32df87){return{'name':_0x32df87[_0x598e('0x28')],'type':_0x32df87[_0x598e('0x29')][_0x598e('0x2a')]};});_0x3ab0c4[_0x598e('0x2b')]=_[_0x598e('0x27')](_0x1e5d53,'name');_0x3ab0c4[_0x598e('0x2c')]=_[_0x598e('0x2d')](_0x55b805[_0x598e('0x2c')]);_0x3ab0c4[_0x598e('0x2e')]=_['intersection'](_0x3ab0c4['model'],_0x3ab0c4[_0x598e('0x2c')]);_0x3e0a02[_0x598e('0x2f')]=_['intersection'](_0x3ab0c4[_0x598e('0x2b')],qs[_0x598e('0x30')](_0x55b805[_0x598e('0x2c')][_0x598e('0x30')]));_0x3e0a02['attributes']=_0x3e0a02[_0x598e('0x2f')][_0x598e('0x31')]?_0x3e0a02[_0x598e('0x2f')]:_0x3ab0c4[_0x598e('0x2b')];if(!_0x55b805[_0x598e('0x2c')][_0x598e('0x32')]('nolimit')){_0x3e0a02[_0x598e('0x1d')]=qs[_0x598e('0x1d')](_0x55b805[_0x598e('0x2c')][_0x598e('0x1d')]);_0x3e0a02['offset']=qs[_0x598e('0x33')](_0x55b805[_0x598e('0x2c')][_0x598e('0x33')]);}_0x3e0a02[_0x598e('0x34')]=qs[_0x598e('0x35')](_0x55b805[_0x598e('0x2c')][_0x598e('0x35')]);_0x3e0a02[_0x598e('0x36')]=qs[_0x598e('0x2e')](_[_0x598e('0x37')](_0x55b805[_0x598e('0x2c')],_0x3ab0c4['filters']),_0x1e5d53);if(_0x55b805[_0x598e('0x2c')][_0x598e('0x38')]){_0x3e0a02['where']=_[_0x598e('0x39')](_0x3e0a02[_0x598e('0x36')],{'$or':_[_0x598e('0x27')](_0x1e5d53,function(_0x1afac2){if(_0x1afac2[_0x598e('0x29')]!==_0x598e('0x3a')){var _0xa3c96c={};_0xa3c96c[_0x1afac2[_0x598e('0x25')]]={'$like':'%'+_0x55b805[_0x598e('0x2c')]['filter']+'%'};return _0xa3c96c;}})});}_0x3e0a02=_[_0x598e('0x39')]({},_0x3e0a02,_0x55b805['options']);var _0x15b5c4={'where':_0x3e0a02[_0x598e('0x36')]};return db[_0x598e('0x3b')][_0x598e('0x1e')](_0x15b5c4)[_0x598e('0x22')](function(_0x387650){_0xe3abf7[_0x598e('0x1e')]=_0x387650;if(_0x55b805[_0x598e('0x2c')][_0x598e('0x3c')]){_0x3e0a02[_0x598e('0x3d')]=[{'all':!![]}];}return db[_0x598e('0x3b')][_0x598e('0x3e')](_0x3e0a02);})[_0x598e('0x22')](function(_0x51ecdc){_0xe3abf7[_0x598e('0x3f')]=_0x51ecdc;return _0xe3abf7;})['then'](respondWithFilteredResult(_0x352f79,_0x3e0a02))[_0x598e('0x40')](handleError(_0x352f79,null));};exports[_0x598e('0x41')]=function(_0x2b080b,_0x247a61){var _0x1db06f={'raw':![],'where':{'id':_0x2b080b[_0x598e('0x42')]['id']}},_0x3e543c={};_0x3e543c[_0x598e('0x2b')]=_[_0x598e('0x2d')](db[_0x598e('0x3b')][_0x598e('0x43')]);_0x3e543c[_0x598e('0x2c')]=_[_0x598e('0x2d')](_0x2b080b[_0x598e('0x2c')]);_0x3e543c[_0x598e('0x2e')]=_[_0x598e('0x44')](_0x3e543c[_0x598e('0x2b')],_0x3e543c[_0x598e('0x2c')]);_0x1db06f[_0x598e('0x2f')]=_[_0x598e('0x44')](_0x3e543c[_0x598e('0x2b')],qs[_0x598e('0x30')](_0x2b080b['query'][_0x598e('0x30')]));_0x1db06f[_0x598e('0x2f')]=_0x1db06f['attributes']['length']?_0x1db06f[_0x598e('0x2f')]:_0x3e543c['model'];if(_0x2b080b['query'][_0x598e('0x3c')]){_0x1db06f[_0x598e('0x3d')]=[{'all':!![]}];}_0x1db06f=_['merge']({},_0x1db06f,_0x2b080b[_0x598e('0x45')]);return db[_0x598e('0x3b')][_0x598e('0x46')](_0x1db06f)[_0x598e('0x22')](handleEntityNotFound(_0x247a61,null))[_0x598e('0x22')](respondWithResult(_0x247a61,null))[_0x598e('0x40')](handleError(_0x247a61,null));};exports[_0x598e('0x47')]=function(_0x47bb70,_0x58d7fc){return db[_0x598e('0x3b')][_0x598e('0x47')](_0x47bb70[_0x598e('0x48')],{})[_0x598e('0x22')](respondWithResult(_0x58d7fc,0xc9))[_0x598e('0x40')](handleError(_0x58d7fc,null));};exports[_0x598e('0x21')]=function(_0x31fa3b,_0x3d2a34){if(_0x31fa3b['body']['id']){delete _0x31fa3b[_0x598e('0x48')]['id'];}return db['IntegrationReport'][_0x598e('0x46')]({'where':{'id':_0x31fa3b['params']['id']}})[_0x598e('0x22')](handleEntityNotFound(_0x3d2a34,null))[_0x598e('0x22')](saveUpdates(_0x31fa3b[_0x598e('0x48')],null))[_0x598e('0x22')](respondWithResult(_0x3d2a34,null))[_0x598e('0x40')](handleError(_0x3d2a34,null));};exports['destroy']=function(_0x3de2b7,_0x2fdcb0){return db[_0x598e('0x3b')][_0x598e('0x46')]({'where':{'id':_0x3de2b7[_0x598e('0x42')]['id']}})[_0x598e('0x22')](handleEntityNotFound(_0x2fdcb0,null))[_0x598e('0x22')](removeEntity(_0x2fdcb0,null))[_0x598e('0x40')](handleError(_0x2fdcb0,null));};exports[_0x598e('0x49')]=function(_0x594a2f,_0x52ff52){return db[_0x598e('0x3b')][_0x598e('0x49')]()[_0x598e('0x22')](respondWithResult(_0x52ff52,null))[_0x598e('0x40')](handleError(_0x52ff52,null));};
\ No newline at end of file
+var _0x8dc4=['save','update','then','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','options','IntegrationReport','includeAll','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject'];(function(_0x9dfc10,_0x19c2d5){var _0x4f938a=function(_0x12b1e5){while(--_0x12b1e5){_0x9dfc10['push'](_0x9dfc10['shift']());}};_0x4f938a(++_0x19c2d5);}(_0x8dc4,0x1a2));var _0x48dc=function(_0x1fbdf4,_0x3288d9){_0x1fbdf4=_0x1fbdf4-0x0;var _0xe8c87b=_0x8dc4[_0x1fbdf4];return _0xe8c87b;};'use strict';var emlformat=require(_0x48dc('0x0'));var rimraf=require(_0x48dc('0x1'));var zipdir=require(_0x48dc('0x2'));var jsonpatch=require(_0x48dc('0x3'));var rp=require(_0x48dc('0x4'));var moment=require(_0x48dc('0x5'));var BPromise=require(_0x48dc('0x6'));var Mustache=require('mustache');var util=require(_0x48dc('0x7'));var path=require(_0x48dc('0x8'));var sox=require('sox');var csv=require(_0x48dc('0x9'));var ejs=require(_0x48dc('0xa'));var fs=require('fs');var fs_extra=require(_0x48dc('0xb'));var _=require(_0x48dc('0xc'));var squel=require(_0x48dc('0xd'));var crypto=require('crypto');var jsforce=require(_0x48dc('0xe'));var deskjs=require(_0x48dc('0xf'));var toCsv=require(_0x48dc('0x9'));var querystring=require(_0x48dc('0x10'));var Papa=require(_0x48dc('0x11'));var Redis=require(_0x48dc('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x48dc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x48dc('0x14'))(_0x48dc('0x15'));var utils=require(_0x48dc('0x16'));var config=require(_0x48dc('0x17'));var licenseUtil=require(_0x48dc('0x18'));var db=require(_0x48dc('0x19'))['db'];function respondWithStatusCode(_0x32ca8d,_0x585c21){_0x585c21=_0x585c21||0xcc;return function(_0x5533c1){if(_0x5533c1){return _0x32ca8d[_0x48dc('0x1a')](_0x585c21);}return _0x32ca8d[_0x48dc('0x1b')](_0x585c21)[_0x48dc('0x1c')]();};}function respondWithResult(_0x47da25,_0x5bb54e){_0x5bb54e=_0x5bb54e||0xc8;return function(_0x23b957){if(_0x23b957){return _0x47da25[_0x48dc('0x1b')](_0x5bb54e)[_0x48dc('0x1d')](_0x23b957);}};}function respondWithFilteredResult(_0xbd3c61,_0x58f6ba){return function(_0x51fb2d){if(_0x51fb2d){var _0x3dee4f=typeof _0x58f6ba['offset']==='undefined'&&typeof _0x58f6ba['limit']===_0x48dc('0x1e');var _0x150c10=_0x51fb2d[_0x48dc('0x1f')];var _0xc6f647=_0x3dee4f?0x0:_0x58f6ba['offset'];var _0x39a32a=_0x3dee4f?_0x51fb2d[_0x48dc('0x1f')]:_0x58f6ba[_0x48dc('0x20')]+_0x58f6ba[_0x48dc('0x21')];var _0xf7689d;if(_0x39a32a>=_0x150c10){_0x39a32a=_0x150c10;_0xf7689d=0xc8;}else{_0xf7689d=0xce;}_0xbd3c61[_0x48dc('0x1b')](_0xf7689d);return _0xbd3c61[_0x48dc('0x22')](_0x48dc('0x23'),_0xc6f647+'-'+_0x39a32a+'/'+_0x150c10)[_0x48dc('0x1d')](_0x51fb2d);}return null;};}function patchUpdates(_0x7112e7){return function(_0x41bfcd){try{jsonpatch[_0x48dc('0x24')](_0x41bfcd,_0x7112e7,!![]);}catch(_0x12a3f8){return BPromise[_0x48dc('0x25')](_0x12a3f8);}return _0x41bfcd[_0x48dc('0x26')]();};}function saveUpdates(_0x1e98b6,_0x39264e){return function(_0x110d66){if(_0x110d66){return _0x110d66[_0x48dc('0x27')](_0x1e98b6)[_0x48dc('0x28')](function(_0x10a5d7){return _0x10a5d7;});}return null;};}function removeEntity(_0x1fa78b,_0x4617d3){return function(_0x4ccc9c){if(_0x4ccc9c){return _0x4ccc9c['destroy']()[_0x48dc('0x28')](function(){_0x1fa78b[_0x48dc('0x1b')](0xcc)[_0x48dc('0x1c')]();});}};}function handleEntityNotFound(_0x5c60ab,_0x3de30f){return function(_0x585b1c){if(!_0x585b1c){_0x5c60ab[_0x48dc('0x1a')](0x194);}return _0x585b1c;};}function handleError(_0x4757ec,_0x2be159){_0x2be159=_0x2be159||0x1f4;return function(_0x2c3dd3){logger[_0x48dc('0x29')](_0x2c3dd3['stack']);if(_0x2c3dd3['name']){delete _0x2c3dd3[_0x48dc('0x2a')];}_0x4757ec['status'](_0x2be159)[_0x48dc('0x2b')](_0x2c3dd3);};}exports[_0x48dc('0x2c')]=function(_0x434dfa,_0x548ba5){var _0x2396c2={},_0x4b1da2={},_0x47430c={'count':0x0,'rows':[]};var _0x434209=_[_0x48dc('0x2d')](db['IntegrationReport'][_0x48dc('0x2e')],function(_0x5a910b){return{'name':_0x5a910b[_0x48dc('0x2f')],'type':_0x5a910b[_0x48dc('0x30')]['key']};});_0x4b1da2[_0x48dc('0x31')]=_[_0x48dc('0x2d')](_0x434209,_0x48dc('0x2a'));_0x4b1da2[_0x48dc('0x32')]=_[_0x48dc('0x33')](_0x434dfa['query']);_0x4b1da2[_0x48dc('0x34')]=_['intersection'](_0x4b1da2[_0x48dc('0x31')],_0x4b1da2['query']);_0x2396c2[_0x48dc('0x35')]=_[_0x48dc('0x36')](_0x4b1da2[_0x48dc('0x31')],qs['fields'](_0x434dfa['query'][_0x48dc('0x37')]));_0x2396c2['attributes']=_0x2396c2[_0x48dc('0x35')][_0x48dc('0x38')]?_0x2396c2['attributes']:_0x4b1da2['model'];if(!_0x434dfa[_0x48dc('0x32')]['hasOwnProperty'](_0x48dc('0x39'))){_0x2396c2['limit']=qs[_0x48dc('0x21')](_0x434dfa[_0x48dc('0x32')]['limit']);_0x2396c2['offset']=qs[_0x48dc('0x20')](_0x434dfa[_0x48dc('0x32')]['offset']);}_0x2396c2[_0x48dc('0x3a')]=qs[_0x48dc('0x3b')](_0x434dfa[_0x48dc('0x32')][_0x48dc('0x3b')]);_0x2396c2[_0x48dc('0x3c')]=qs[_0x48dc('0x34')](_[_0x48dc('0x3d')](_0x434dfa[_0x48dc('0x32')],_0x4b1da2[_0x48dc('0x34')]),_0x434209);if(_0x434dfa[_0x48dc('0x32')][_0x48dc('0x3e')]){_0x2396c2[_0x48dc('0x3c')]=_[_0x48dc('0x3f')](_0x2396c2[_0x48dc('0x3c')],{'$or':_[_0x48dc('0x2d')](_0x434209,function(_0x1f2e5b){if(_0x1f2e5b['type']!=='VIRTUAL'){var _0xac2d9={};_0xac2d9[_0x1f2e5b['name']]={'$like':'%'+_0x434dfa[_0x48dc('0x32')]['filter']+'%'};return _0xac2d9;}})});}_0x2396c2=_['merge']({},_0x2396c2,_0x434dfa[_0x48dc('0x40')]);var _0x2bd174={'where':_0x2396c2[_0x48dc('0x3c')]};return db[_0x48dc('0x41')]['count'](_0x2bd174)['then'](function(_0x41c024){_0x47430c[_0x48dc('0x1f')]=_0x41c024;if(_0x434dfa['query'][_0x48dc('0x42')]){_0x2396c2[_0x48dc('0x43')]=[{'all':!![]}];}return db[_0x48dc('0x41')][_0x48dc('0x44')](_0x2396c2);})['then'](function(_0x2c7ea1){_0x47430c[_0x48dc('0x45')]=_0x2c7ea1;return _0x47430c;})[_0x48dc('0x28')](respondWithFilteredResult(_0x548ba5,_0x2396c2))[_0x48dc('0x46')](handleError(_0x548ba5,null));};exports['show']=function(_0x4f662e,_0x23ee5f){var _0x4752a9={'raw':![],'where':{'id':_0x4f662e[_0x48dc('0x47')]['id']}},_0x263f77={};_0x263f77['model']=_[_0x48dc('0x33')](db[_0x48dc('0x41')]['rawAttributes']);_0x263f77['query']=_['keys'](_0x4f662e[_0x48dc('0x32')]);_0x263f77[_0x48dc('0x34')]=_[_0x48dc('0x36')](_0x263f77[_0x48dc('0x31')],_0x263f77['query']);_0x4752a9['attributes']=_[_0x48dc('0x36')](_0x263f77[_0x48dc('0x31')],qs[_0x48dc('0x37')](_0x4f662e[_0x48dc('0x32')]['fields']));_0x4752a9[_0x48dc('0x35')]=_0x4752a9[_0x48dc('0x35')][_0x48dc('0x38')]?_0x4752a9[_0x48dc('0x35')]:_0x263f77[_0x48dc('0x31')];if(_0x4f662e['query'][_0x48dc('0x42')]){_0x4752a9['include']=[{'all':!![]}];}_0x4752a9=_['merge']({},_0x4752a9,_0x4f662e[_0x48dc('0x40')]);return db[_0x48dc('0x41')][_0x48dc('0x48')](_0x4752a9)['then'](handleEntityNotFound(_0x23ee5f,null))['then'](respondWithResult(_0x23ee5f,null))[_0x48dc('0x46')](handleError(_0x23ee5f,null));};exports[_0x48dc('0x49')]=function(_0x5be680,_0x37e87f){return db[_0x48dc('0x41')]['create'](_0x5be680['body'],{})[_0x48dc('0x28')](respondWithResult(_0x37e87f,0xc9))['catch'](handleError(_0x37e87f,null));};exports[_0x48dc('0x27')]=function(_0x260453,_0x4dd47b){if(_0x260453['body']['id']){delete _0x260453['body']['id'];}return db[_0x48dc('0x41')][_0x48dc('0x48')]({'where':{'id':_0x260453[_0x48dc('0x47')]['id']}})[_0x48dc('0x28')](handleEntityNotFound(_0x4dd47b,null))[_0x48dc('0x28')](saveUpdates(_0x260453[_0x48dc('0x4a')],null))[_0x48dc('0x28')](respondWithResult(_0x4dd47b,null))[_0x48dc('0x46')](handleError(_0x4dd47b,null));};exports['destroy']=function(_0x6f756b,_0x1b699c){return db['IntegrationReport']['find']({'where':{'id':_0x6f756b[_0x48dc('0x47')]['id']}})[_0x48dc('0x28')](handleEntityNotFound(_0x1b699c,null))[_0x48dc('0x28')](removeEntity(_0x1b699c,null))[_0x48dc('0x46')](handleError(_0x1b699c,null));};exports[_0x48dc('0x4b')]=function(_0x4aeb07,_0x4e2be7){return db[_0x48dc('0x41')][_0x48dc('0x4b')]()[_0x48dc('0x28')](respondWithResult(_0x4e2be7,null))[_0x48dc('0x46')](handleError(_0x4e2be7,null));};
\ No newline at end of file
index 3c848aa..deac9f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58d3=['path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','report_integration','util','../../config/logger','api','moment','request-promise'];(function(_0x3f68fe,_0x33c86e){var _0x243c1f=function(_0x530d32){while(--_0x530d32){_0x3f68fe['push'](_0x3f68fe['shift']());}};_0x243c1f(++_0x33c86e);}(_0x58d3,0xd3));var _0x358d=function(_0x236f97,_0x218bfd){_0x236f97=_0x236f97-0x0;var _0x3dbdf1=_0x58d3[_0x236f97];return _0x3dbdf1;};'use strict';var _=require('lodash');var util=require(_0x358d('0x0'));var logger=require(_0x358d('0x1'))(_0x358d('0x2'));var moment=require(_0x358d('0x3'));var BPromise=require('bluebird');var rp=require(_0x358d('0x4'));var fs=require('fs');var path=require(_0x358d('0x5'));var rimraf=require(_0x358d('0x6'));var config=require(_0x358d('0x7'));var attributes=require(_0x358d('0x8'));module[_0x358d('0x9')]=function(_0x36c092,_0x3a1a86){return _0x36c092[_0x358d('0xa')]('IntegrationReport',attributes,{'tableName':_0x358d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b73=['bluebird','request-promise','path','rimraf','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger'];(function(_0x3328bd,_0x34b6cc){var _0xf2012a=function(_0x35a4e5){while(--_0x35a4e5){_0x3328bd['push'](_0x3328bd['shift']());}};_0xf2012a(++_0x34b6cc);}(_0x9b73,0x14f));var _0x39b7=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9b73[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x39b7('0x0'));var util=require(_0x39b7('0x1'));var logger=require(_0x39b7('0x2'))('api');var moment=require('moment');var BPromise=require(_0x39b7('0x3'));var rp=require(_0x39b7('0x4'));var fs=require('fs');var path=require(_0x39b7('0x5'));var rimraf=require(_0x39b7('0x6'));var config=require(_0x39b7('0x7'));var attributes=require(_0x39b7('0x8'));module[_0x39b7('0x9')]=function(_0x4446be,_0x4e4d39){return _0x4446be[_0x39b7('0xa')](_0x39b7('0xb'),attributes,{'tableName':_0x39b7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d9c4d6..4ab7fbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../config/environment','jayson/promise','client','request','then','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','IntegrationReport,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x47b1a9,_0x14e74f){var _0x1be6e2=function(_0x8c39be){while(--_0x8c39be){_0x47b1a9['push'](_0x47b1a9['shift']());}};_0x1be6e2(++_0x14e74f);}(_0x5fab,0x177));var _0xb5fa=function(_0x3831ef,_0x58fea6){_0x3831ef=_0x3831ef-0x0;var _0x32c7c6=_0x5fab[_0x3831ef];return _0x32c7c6;};'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']('IntegrationReport,\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')]('IntegrationReport,\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']('IntegrationReport,\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
+var _0xc6ac=['http','request','then','info','IntegrationReport,\x20%s,\x20%s','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x148e39,_0x581123){var _0x47d521=function(_0x8019b2){while(--_0x8019b2){_0x148e39['push'](_0x148e39['shift']());}};_0x47d521(++_0x581123);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x1a7dd6,_0x31be8e){_0x1a7dd6=_0x1a7dd6-0x0;var _0x114d31=_0xc6ac[_0x1a7dd6];return _0x114d31;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var moment=require(_0xcc6a('0x2'));var BPromise=require(_0xcc6a('0x3'));var rs=require(_0xcc6a('0x4'));var fs=require('fs');var Redis=require(_0xcc6a('0x5'));var db=require(_0xcc6a('0x6'))['db'];var utils=require(_0xcc6a('0x7'));var logger=require(_0xcc6a('0x8'))(_0xcc6a('0x9'));var config=require(_0xcc6a('0xa'));var jayson=require(_0xcc6a('0xb'));var client=jayson[_0xcc6a('0xc')][_0xcc6a('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5f3887,_0x3dd497,_0x11b919){return new BPromise(function(_0xf02261,_0x560cc4){return client[_0xcc6a('0xe')](_0x5f3887,_0x11b919)[_0xcc6a('0xf')](function(_0x7806a0){logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,'request\x20sent');logger[_0xcc6a('0x12')](_0xcc6a('0x13'),_0x3dd497,_0xcc6a('0x14'),JSON['stringify'](_0x7806a0));if(_0x7806a0[_0xcc6a('0x15')]){if(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x16')]===0x1f4){logger['error']('IntegrationReport,\x20%s,\x20%s',_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0x560cc4(_0x7806a0[_0xcc6a('0x15')]['message']);}logger['error'](_0xcc6a('0x11'),_0x3dd497,_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);return _0xf02261(_0x7806a0[_0xcc6a('0x15')][_0xcc6a('0x17')]);}else{logger[_0xcc6a('0x10')](_0xcc6a('0x11'),_0x3dd497,_0xcc6a('0x14'));_0xf02261(_0x7806a0['result']['message']);}})['catch'](function(_0x395a55){logger[_0xcc6a('0x15')](_0xcc6a('0x11'),_0x3dd497,_0x395a55);_0x560cc4(_0x395a55);});});}
\ No newline at end of file
index 065d5d5..16d0c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd18=['addInterval','put','update','delete','destroy','exports','multer','util','path','express','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/sub_intervals','getIntervals','post','create'];(function(_0xe99d07,_0x3b0755){var _0x30bb02=function(_0x5bd633){while(--_0x5bd633){_0xe99d07['push'](_0xe99d07['shift']());}};_0x30bb02(++_0x3b0755);}(_0xbd18,0x195));var _0x8bd1=function(_0x19896b,_0x4f2d5b){_0x19896b=_0x19896b-0x0;var _0x11287f=_0xbd18[_0x19896b];return _0x11287f;};'use strict';var multer=require(_0x8bd1('0x0'));var util=require(_0x8bd1('0x1'));var path=require(_0x8bd1('0x2'));var timeout=require('connect-timeout');var express=require(_0x8bd1('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x8bd1('0x4'));var config=require(_0x8bd1('0x5'));var controller=require('./interval.controller');router['get']('/',auth[_0x8bd1('0x6')](),controller[_0x8bd1('0x7')]);router[_0x8bd1('0x8')](_0x8bd1('0x9'),auth['isAuthenticated'](),controller[_0x8bd1('0xa')]);router[_0x8bd1('0x8')](_0x8bd1('0xb'),auth['isAuthenticated'](),controller[_0x8bd1('0xc')]);router[_0x8bd1('0xd')]('/',auth[_0x8bd1('0x6')](),controller[_0x8bd1('0xe')]);router['post'](_0x8bd1('0xb'),auth['isAuthenticated'](),controller[_0x8bd1('0xf')]);router[_0x8bd1('0xd')]('/:id/sub_intervals/create_many',auth[_0x8bd1('0x6')](),controller['addIntervals']);router[_0x8bd1('0x10')](_0x8bd1('0x9'),auth[_0x8bd1('0x6')](),controller[_0x8bd1('0x11')]);router[_0x8bd1('0x12')](_0x8bd1('0x9'),auth[_0x8bd1('0x6')](),controller[_0x8bd1('0x13')]);module[_0x8bd1('0x14')]=router;
\ No newline at end of file
+var _0x9485=['index','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./interval.controller','get','isAuthenticated'];(function(_0x25d314,_0x2ef847){var _0x1a31e2=function(_0x122cbf){while(--_0x122cbf){_0x25d314['push'](_0x25d314['shift']());}};_0x1a31e2(++_0x2ef847);}(_0x9485,0x8b));var _0x5948=function(_0x3c5d36,_0x2cd165){_0x3c5d36=_0x3c5d36-0x0;var _0xf0c844=_0x9485[_0x3c5d36];return _0xf0c844;};'use strict';var multer=require(_0x5948('0x0'));var util=require(_0x5948('0x1'));var path=require(_0x5948('0x2'));var timeout=require(_0x5948('0x3'));var express=require('express');var router=express[_0x5948('0x4')]();var fs_extra=require(_0x5948('0x5'));var auth=require(_0x5948('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5948('0x7'));var controller=require(_0x5948('0x8'));router[_0x5948('0x9')]('/',auth[_0x5948('0xa')](),controller[_0x5948('0xb')]);router[_0x5948('0x9')]('/:id',auth[_0x5948('0xa')](),controller['show']);router[_0x5948('0x9')](_0x5948('0xc'),auth['isAuthenticated'](),controller[_0x5948('0xd')]);router[_0x5948('0xe')]('/',auth['isAuthenticated'](),controller[_0x5948('0xf')]);router[_0x5948('0xe')](_0x5948('0xc'),auth[_0x5948('0xa')](),controller[_0x5948('0x10')]);router[_0x5948('0xe')](_0x5948('0x11'),auth[_0x5948('0xa')](),controller[_0x5948('0x12')]);router[_0x5948('0x13')](_0x5948('0x14'),auth['isAuthenticated'](),controller[_0x5948('0x15')]);router[_0x5948('0x16')](_0x5948('0x14'),auth[_0x5948('0xa')](),controller[_0x5948('0x17')]);module[_0x5948('0x18')]=router;
\ No newline at end of file
index 842f50a..d90ba9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0f=['STRING','sequelize'];(function(_0x39fdc3,_0xb45dd0){var _0x1a944b=function(_0x1d7549){while(--_0x1d7549){_0x39fdc3['push'](_0x39fdc3['shift']());}};_0x1a944b(++_0xb45dd0);}(_0x6f0f,0x11f));var _0xf6f0=function(_0x5f3f60,_0x5623b3){_0x5f3f60=_0x5f3f60-0x0;var _0x3f0e96=_0x6f0f[_0x5f3f60];return _0x3f0e96;};'use strict';var Sequelize=require(_0xf6f0('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf6f0('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xd184=['sequelize','STRING'];(function(_0x13b19a,_0x53d0bc){var _0x106bc0=function(_0x33046b){while(--_0x33046b){_0x13b19a['push'](_0x13b19a['shift']());}};_0x106bc0(++_0x53d0bc);}(_0xd184,0x1c8));var _0x4d18=function(_0x4acd26,_0x40f588){_0x4acd26=_0x4acd26-0x0;var _0x465453=_0xd184[_0x4acd26];return _0x465453;};'use strict';var Sequelize=require(_0x4d18('0x0'));module['exports']={'name':{'type':Sequelize[_0x4d18('0x1')]},'description':{'type':Sequelize[_0x4d18('0x1')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index 74bc8ed..db4c1f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6918=['util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','save','update','then','destroy','Intervals','UserProfileResource','error','stack','name','index','Interval','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','show','params','keys','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','IntervalId','getIntervals','addIntervals','findOne','transaction','findAll','eml-format','rimraf','zip-dir','moment','bluebird'];(function(_0x26968f,_0x5a2826){var _0x1e4c81=function(_0x1dfde0){while(--_0x1dfde0){_0x26968f['push'](_0x26968f['shift']());}};_0x1e4c81(++_0x5a2826);}(_0x6918,0xad));var _0x8691=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x6918[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x8691('0x0'));var rimraf=require(_0x8691('0x1'));var zipdir=require(_0x8691('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8691('0x3'));var BPromise=require(_0x8691('0x4'));var Mustache=require('mustache');var util=require(_0x8691('0x5'));var path=require('path');var sox=require(_0x8691('0x6'));var csv=require(_0x8691('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8691('0x8'));var _=require(_0x8691('0x9'));var squel=require(_0x8691('0xa'));var crypto=require(_0x8691('0xb'));var jsforce=require(_0x8691('0xc'));var deskjs=require(_0x8691('0xd'));var toCsv=require(_0x8691('0x7'));var querystring=require(_0x8691('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x8691('0xf'));var as=require(_0x8691('0x10'));var hardwareService=require(_0x8691('0x11'));var logger=require(_0x8691('0x12'))(_0x8691('0x13'));var utils=require(_0x8691('0x14'));var config=require(_0x8691('0x15'));var licenseUtil=require(_0x8691('0x16'));var db=require(_0x8691('0x17'))['db'];var extensions=require(_0x8691('0x18'));function respondWithStatusCode(_0xe6a2d,_0x3d1a87){_0x3d1a87=_0x3d1a87||0xcc;return function(_0x4e7e53){if(_0x4e7e53){return _0xe6a2d[_0x8691('0x19')](_0x3d1a87);}return _0xe6a2d[_0x8691('0x1a')](_0x3d1a87)[_0x8691('0x1b')]();};}function respondWithResult(_0x4fe87c,_0x4d6dfd){_0x4d6dfd=_0x4d6dfd||0xc8;return function(_0x38fd5b){if(_0x38fd5b){return _0x4fe87c['status'](_0x4d6dfd)[_0x8691('0x1c')](_0x38fd5b);}};}function respondWithFilteredResult(_0x14e740,_0x162d14){return function(_0x4faf3e){if(_0x4faf3e){var _0x1ac183=typeof _0x162d14[_0x8691('0x1d')]===_0x8691('0x1e')&&typeof _0x162d14['limit']===_0x8691('0x1e');var _0x490dea=_0x4faf3e[_0x8691('0x1f')];var _0x28c421=_0x1ac183?0x0:_0x162d14[_0x8691('0x1d')];var _0x5ef625=_0x1ac183?_0x4faf3e[_0x8691('0x1f')]:_0x162d14[_0x8691('0x1d')]+_0x162d14['limit'];var _0x39e4db;if(_0x5ef625>=_0x490dea){_0x5ef625=_0x490dea;_0x39e4db=0xc8;}else{_0x39e4db=0xce;}_0x14e740[_0x8691('0x1a')](_0x39e4db);return _0x14e740[_0x8691('0x20')](_0x8691('0x21'),_0x28c421+'-'+_0x5ef625+'/'+_0x490dea)['json'](_0x4faf3e);}return null;};}function patchUpdates(_0x5c1f31){return function(_0x50d11b){try{jsonpatch['apply'](_0x50d11b,_0x5c1f31,!![]);}catch(_0x1496a4){return BPromise['reject'](_0x1496a4);}return _0x50d11b[_0x8691('0x22')]();};}function saveUpdates(_0x757add,_0x476e75){return function(_0xbc7831){if(_0xbc7831){return _0xbc7831[_0x8691('0x23')](_0x757add)[_0x8691('0x24')](function(_0x5505a5){return _0x5505a5;});}return null;};}function removeEntity(_0x48f260,_0x5900d1){return function(_0x38b3f1){if(_0x38b3f1){return _0x38b3f1[_0x8691('0x25')]()[_0x8691('0x24')](function(){var _0x441899=_0x38b3f1['get']({'plain':!![]});var _0x30bcfd=_0x8691('0x26');return db[_0x8691('0x27')]['destroy']({'where':{'type':_0x30bcfd,'resourceId':_0x441899['id']}})['then'](function(){return _0x38b3f1;});})[_0x8691('0x24')](function(){_0x48f260['status'](0xcc)[_0x8691('0x1b')]();});}};}function handleEntityNotFound(_0x57dd8d,_0x497f85){return function(_0x324855){if(!_0x324855){_0x57dd8d[_0x8691('0x19')](0x194);}return _0x324855;};}function handleError(_0x1da5a8,_0x23e400){_0x23e400=_0x23e400||0x1f4;return function(_0x5af7ba){logger[_0x8691('0x28')](_0x5af7ba[_0x8691('0x29')]);if(_0x5af7ba[_0x8691('0x2a')]){delete _0x5af7ba[_0x8691('0x2a')];}_0x1da5a8[_0x8691('0x1a')](_0x23e400)['send'](_0x5af7ba);};}exports[_0x8691('0x2b')]=function(_0x130b56,_0xcfbad7){var _0x5369b8={},_0x27297a={},_0x57aa71={'count':0x0,'rows':[]};var _0x19e96d=_['map'](db[_0x8691('0x2c')]['rawAttributes'],function(_0x31828c){return{'name':_0x31828c[_0x8691('0x2d')],'type':_0x31828c[_0x8691('0x2e')]['key']};});_0x27297a[_0x8691('0x2f')]=_[_0x8691('0x30')](_0x19e96d,_0x8691('0x2a'));_0x27297a[_0x8691('0x31')]=_['keys'](_0x130b56[_0x8691('0x31')]);_0x27297a[_0x8691('0x32')]=_[_0x8691('0x33')](_0x27297a['model'],_0x27297a[_0x8691('0x31')]);_0x5369b8[_0x8691('0x34')]=_[_0x8691('0x33')](_0x27297a[_0x8691('0x2f')],qs[_0x8691('0x35')](_0x130b56[_0x8691('0x31')][_0x8691('0x35')]));_0x5369b8['attributes']=_0x5369b8[_0x8691('0x34')][_0x8691('0x36')]?_0x5369b8[_0x8691('0x34')]:_0x27297a[_0x8691('0x2f')];if(!_0x130b56[_0x8691('0x31')][_0x8691('0x37')](_0x8691('0x38'))){_0x5369b8['limit']=qs[_0x8691('0x39')](_0x130b56[_0x8691('0x31')]['limit']);_0x5369b8[_0x8691('0x1d')]=qs['offset'](_0x130b56[_0x8691('0x31')][_0x8691('0x1d')]);}_0x5369b8[_0x8691('0x3a')]=qs[_0x8691('0x3b')](_0x130b56[_0x8691('0x31')][_0x8691('0x3b')]);_0x5369b8[_0x8691('0x3c')]=qs[_0x8691('0x32')](_[_0x8691('0x3d')](_0x130b56[_0x8691('0x31')],_0x27297a[_0x8691('0x32')]),_0x19e96d);if(_0x130b56[_0x8691('0x31')][_0x8691('0x3e')]){_0x5369b8[_0x8691('0x3c')]=_[_0x8691('0x3f')](_0x5369b8[_0x8691('0x3c')],{'$or':_[_0x8691('0x30')](_0x19e96d,function(_0x193dfa){if(_0x193dfa[_0x8691('0x2e')]!=='VIRTUAL'){var _0x31bc93={};_0x31bc93[_0x193dfa[_0x8691('0x2a')]]={'$like':'%'+_0x130b56[_0x8691('0x31')][_0x8691('0x3e')]+'%'};return _0x31bc93;}})});}_0x5369b8=_['merge']({},_0x5369b8,_0x130b56[_0x8691('0x40')]);var _0x1530c5={'where':_0x5369b8[_0x8691('0x3c')]};return db[_0x8691('0x2c')][_0x8691('0x1f')](_0x1530c5)[_0x8691('0x24')](function(_0x251a9c){_0x57aa71[_0x8691('0x1f')]=_0x251a9c;if(_0x130b56['query'][_0x8691('0x41')]){_0x5369b8[_0x8691('0x42')]=[{'all':!![]}];}return db[_0x8691('0x2c')]['findAll'](_0x5369b8);})[_0x8691('0x24')](function(_0x5aa76a){_0x57aa71[_0x8691('0x43')]=_0x5aa76a;return _0x57aa71;})['then'](respondWithFilteredResult(_0xcfbad7,_0x5369b8))['catch'](handleError(_0xcfbad7,null));};exports[_0x8691('0x44')]=function(_0x282ddf,_0x3e4ecb){var _0x3477d0={'raw':!![],'where':{'id':_0x282ddf[_0x8691('0x45')]['id']}},_0x5086fd={};_0x5086fd[_0x8691('0x2f')]=_[_0x8691('0x46')](db[_0x8691('0x2c')]['rawAttributes']);_0x5086fd['query']=_[_0x8691('0x46')](_0x282ddf[_0x8691('0x31')]);_0x5086fd[_0x8691('0x32')]=_[_0x8691('0x33')](_0x5086fd['model'],_0x5086fd[_0x8691('0x31')]);_0x3477d0['attributes']=_['intersection'](_0x5086fd[_0x8691('0x2f')],qs[_0x8691('0x35')](_0x282ddf[_0x8691('0x31')][_0x8691('0x35')]));_0x3477d0[_0x8691('0x34')]=_0x3477d0[_0x8691('0x34')][_0x8691('0x36')]?_0x3477d0['attributes']:_0x5086fd['model'];if(_0x282ddf['query']['includeAll']){_0x3477d0[_0x8691('0x42')]=[{'all':!![]}];}_0x3477d0=_['merge']({},_0x3477d0,_0x282ddf[_0x8691('0x40')]);return db[_0x8691('0x2c')][_0x8691('0x47')](_0x3477d0)[_0x8691('0x24')](handleEntityNotFound(_0x3e4ecb,null))['then'](respondWithResult(_0x3e4ecb,null))['catch'](handleError(_0x3e4ecb,null));};exports['create']=function(_0x5251f1,_0xcdcbd9){return db['Interval'][_0x8691('0x48')](_0x5251f1[_0x8691('0x49')],{})[_0x8691('0x24')](function(_0x346f58){var _0x33dd52=_0x5251f1[_0x8691('0x4a')][_0x8691('0x4b')]({'plain':!![]});if(!_0x33dd52)throw new Error(_0x8691('0x4c'));if(_0x33dd52[_0x8691('0x4d')]==='user'){var _0x878b86=_0x346f58[_0x8691('0x4b')]({'plain':!![]});var _0x3d2dd6=_0x8691('0x26');return db[_0x8691('0x4e')][_0x8691('0x47')]({'where':{'name':_0x3d2dd6,'userProfileId':_0x33dd52[_0x8691('0x4f')]},'raw':!![]})[_0x8691('0x24')](function(_0xcb50e2){if(_0xcb50e2&&_0xcb50e2[_0x8691('0x50')]===0x0){return db[_0x8691('0x27')][_0x8691('0x48')]({'name':_0x878b86[_0x8691('0x2a')],'resourceId':_0x878b86['id'],'type':_0xcb50e2[_0x8691('0x2a')],'sectionId':_0xcb50e2['id']},{})[_0x8691('0x24')](function(){return _0x346f58;});}else{return _0x346f58;}})['catch'](function(_0x3a585f){logger[_0x8691('0x28')](_0x8691('0x51'),_0x3a585f);throw _0x3a585f;});}return _0x346f58;})[_0x8691('0x24')](respondWithResult(_0xcdcbd9,0xc9))[_0x8691('0x52')](handleError(_0xcdcbd9,null));};exports[_0x8691('0x23')]=function(_0x2758df,_0x5dcc8a){if(_0x2758df[_0x8691('0x49')]['id']){delete _0x2758df[_0x8691('0x49')]['id'];}return db[_0x8691('0x2c')][_0x8691('0x47')]({'where':{'id':_0x2758df[_0x8691('0x45')]['id']}})['then'](handleEntityNotFound(_0x5dcc8a,null))[_0x8691('0x24')](saveUpdates(_0x2758df[_0x8691('0x49')],null))[_0x8691('0x24')](respondWithResult(_0x5dcc8a,null))[_0x8691('0x52')](handleError(_0x5dcc8a,null));};exports[_0x8691('0x25')]=function(_0x4bff05,_0x8c8b7c){return db[_0x8691('0x2c')]['find']({'where':{'id':_0x4bff05[_0x8691('0x45')]['id']}})[_0x8691('0x24')](handleEntityNotFound(_0x8c8b7c,null))[_0x8691('0x24')](removeEntity(_0x8c8b7c,null))[_0x8691('0x52')](handleError(_0x8c8b7c,null));};exports['addInterval']=function(_0x103e6e,_0x1fa6df,_0x11ffea){if(_0x103e6e['body']['id']){delete _0x103e6e['body']['id'];}return db['Interval']['find']({'where':{'id':_0x103e6e[_0x8691('0x45')]['id']}})[_0x8691('0x24')](handleEntityNotFound(_0x1fa6df,null))['then'](function(_0xe1b25e){if(_0xe1b25e){_0x103e6e[_0x8691('0x49')][_0x8691('0x53')]=_0xe1b25e['id'];return db[_0x8691('0x2c')][_0x8691('0x48')](_0x103e6e[_0x8691('0x49')]);}})['then'](respondWithResult(_0x1fa6df,null))['catch'](handleError(_0x1fa6df,null));};exports[_0x8691('0x54')]=function(_0x27db25,_0x587712,_0x22c4bd){var _0x9e7cb2={};var _0x224b82={};var _0x10f4b7;var _0x29d826;return db[_0x8691('0x2c')]['findOne']({'where':{'id':_0x27db25[_0x8691('0x45')]['id']}})[_0x8691('0x24')](handleEntityNotFound(_0x587712,null))[_0x8691('0x24')](function(_0x9c0b17){if(_0x9c0b17){_0x10f4b7=_0x9c0b17;_0x224b82['model']=_[_0x8691('0x46')](db['Interval']['rawAttributes']);_0x224b82[_0x8691('0x31')]=_[_0x8691('0x46')](_0x27db25['query']);_0x224b82['filters']=_['intersection'](_0x224b82[_0x8691('0x2f')],_0x224b82[_0x8691('0x31')]);_0x9e7cb2['attributes']=_['intersection'](_0x224b82[_0x8691('0x2f')],qs[_0x8691('0x35')](_0x27db25[_0x8691('0x31')]['fields']));_0x9e7cb2[_0x8691('0x34')]=_0x9e7cb2[_0x8691('0x34')]['length']?_0x9e7cb2[_0x8691('0x34')]:_0x224b82[_0x8691('0x2f')];_0x9e7cb2[_0x8691('0x3a')]=qs['sort'](_0x27db25[_0x8691('0x31')][_0x8691('0x3b')]);_0x9e7cb2[_0x8691('0x3c')]=qs[_0x8691('0x32')](_[_0x8691('0x3d')](_0x27db25[_0x8691('0x31')],_0x224b82['filters']));if(_0x27db25['query']['filter']){_0x9e7cb2[_0x8691('0x3c')]=_[_0x8691('0x3f')](_0x9e7cb2['where'],{'$or':_[_0x8691('0x30')](_0x9e7cb2[_0x8691('0x34')],function(_0x35fcec){var _0x579b61={};_0x579b61[_0x35fcec]={'$like':'%'+_0x27db25['query'][_0x8691('0x3e')]+'%'};return _0x579b61;})});}_0x9e7cb2=_[_0x8691('0x3f')]({},_0x9e7cb2,_0x27db25[_0x8691('0x40')]);return _0x10f4b7['getIntervals'](_0x9e7cb2);}})['then'](function(_0x2037a4){if(_0x2037a4){_0x29d826=_0x2037a4[_0x8691('0x36')];if(!_0x27db25[_0x8691('0x31')][_0x8691('0x37')](_0x8691('0x38'))){_0x9e7cb2[_0x8691('0x39')]=qs[_0x8691('0x39')](_0x27db25[_0x8691('0x31')]['limit']);_0x9e7cb2[_0x8691('0x1d')]=qs['offset'](_0x27db25[_0x8691('0x31')][_0x8691('0x1d')]);}return _0x10f4b7[_0x8691('0x54')](_0x9e7cb2);}})['then'](function(_0x5d8a50){if(_0x5d8a50){return _0x5d8a50?{'count':_0x29d826,'rows':_0x5d8a50}:null;}})[_0x8691('0x24')](respondWithResult(_0x587712,null))[_0x8691('0x52')](handleError(_0x587712,null));};exports[_0x8691('0x55')]=function(_0x33e53a,_0x116fb6,_0x2e77b0){return db[_0x8691('0x2c')][_0x8691('0x56')]({'where':{'id':_0x33e53a['params']['id']}})['then'](handleEntityNotFound(_0x116fb6,null))['then'](function(_0x3250d0){if(_0x3250d0){return db['sequelize'][_0x8691('0x57')](function(_0x4f5425){return db[_0x8691('0x2c')]['destroy']({'where':{'IntervalId':_0x33e53a[_0x8691('0x45')]['id']},'transaction':_0x4f5425})[_0x8691('0x24')](function(_0x266ae2){var _0x5c6d3e=_['map'](_0x33e53a['body'],function(_0x43b3f7){delete _0x43b3f7['id'];_0x43b3f7[_0x8691('0x53')]=_0x33e53a['params']['id'];return _0x43b3f7;});return db[_0x8691('0x2c')]['bulkCreate'](_0x5c6d3e,{'transaction':_0x4f5425});});})[_0x8691('0x24')](function(){return db[_0x8691('0x2c')][_0x8691('0x58')]({'where':{'IntervalId':_0x33e53a[_0x8691('0x45')]['id']}});});}})[_0x8691('0x24')](respondWithResult(_0x116fb6,null))[_0x8691('0x52')](handleError(_0x116fb6,null));};
\ No newline at end of file
+var _0xb945=['model','map','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','Interval','includeAll','include','findAll','catch','show','keys','intersection','options','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','addInterval','IntervalId','getIntervals','findOne','pick','nolimit','addIntervals','sequelize','transaction','bulkCreate','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','then','Intervals','UserProfileResource','destroy','error','name','rawAttributes','fieldName','type','key'];(function(_0x5b617b,_0x18d41b){var _0x2baf50=function(_0x4059e3){while(--_0x4059e3){_0x5b617b['push'](_0x5b617b['shift']());}};_0x2baf50(++_0x18d41b);}(_0xb945,0xde));var _0x5b94=function(_0xd46033,_0xa8f11f){_0xd46033=_0xd46033-0x0;var _0x2c64d9=_0xb945[_0xd46033];return _0x2c64d9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5b94('0x0'));var rp=require('request-promise');var moment=require(_0x5b94('0x1'));var BPromise=require(_0x5b94('0x2'));var Mustache=require(_0x5b94('0x3'));var util=require('util');var path=require(_0x5b94('0x4'));var sox=require(_0x5b94('0x5'));var csv=require(_0x5b94('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5b94('0x7'));var _=require(_0x5b94('0x8'));var squel=require(_0x5b94('0x9'));var crypto=require(_0x5b94('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x5b94('0x6'));var querystring=require(_0x5b94('0xb'));var Papa=require(_0x5b94('0xc'));var Redis=require(_0x5b94('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5b94('0xe'));var as=require(_0x5b94('0xf'));var hardwareService=require(_0x5b94('0x10'));var logger=require(_0x5b94('0x11'))(_0x5b94('0x12'));var utils=require(_0x5b94('0x13'));var config=require(_0x5b94('0x14'));var licenseUtil=require(_0x5b94('0x15'));var db=require(_0x5b94('0x16'))['db'];var extensions=require(_0x5b94('0x17'));function respondWithStatusCode(_0x549362,_0x2ee063){_0x2ee063=_0x2ee063||0xcc;return function(_0x34f278){if(_0x34f278){return _0x549362['sendStatus'](_0x2ee063);}return _0x549362[_0x5b94('0x18')](_0x2ee063)[_0x5b94('0x19')]();};}function respondWithResult(_0x3de15d,_0x19c94e){_0x19c94e=_0x19c94e||0xc8;return function(_0x486932){if(_0x486932){return _0x3de15d[_0x5b94('0x18')](_0x19c94e)[_0x5b94('0x1a')](_0x486932);}};}function respondWithFilteredResult(_0x118978,_0x1c5e72){return function(_0x34e0de){if(_0x34e0de){var _0x57c41f=typeof _0x1c5e72[_0x5b94('0x1b')]===_0x5b94('0x1c')&&typeof _0x1c5e72[_0x5b94('0x1d')]==='undefined';var _0x27d658=_0x34e0de[_0x5b94('0x1e')];var _0x265441=_0x57c41f?0x0:_0x1c5e72[_0x5b94('0x1b')];var _0x3f330c=_0x57c41f?_0x34e0de[_0x5b94('0x1e')]:_0x1c5e72[_0x5b94('0x1b')]+_0x1c5e72[_0x5b94('0x1d')];var _0x21f925;if(_0x3f330c>=_0x27d658){_0x3f330c=_0x27d658;_0x21f925=0xc8;}else{_0x21f925=0xce;}_0x118978['status'](_0x21f925);return _0x118978[_0x5b94('0x1f')](_0x5b94('0x20'),_0x265441+'-'+_0x3f330c+'/'+_0x27d658)[_0x5b94('0x1a')](_0x34e0de);}return null;};}function patchUpdates(_0x371bf0){return function(_0x463586){try{jsonpatch[_0x5b94('0x21')](_0x463586,_0x371bf0,!![]);}catch(_0x389bd1){return BPromise['reject'](_0x389bd1);}return _0x463586[_0x5b94('0x22')]();};}function saveUpdates(_0x531081,_0x2d984f){return function(_0x4c1fef){if(_0x4c1fef){return _0x4c1fef['update'](_0x531081)[_0x5b94('0x23')](function(_0x51304c){return _0x51304c;});}return null;};}function removeEntity(_0x234322,_0x184d86){return function(_0x2bceda){if(_0x2bceda){return _0x2bceda['destroy']()[_0x5b94('0x23')](function(){var _0x41c7fa=_0x2bceda['get']({'plain':!![]});var _0x4ef2d2=_0x5b94('0x24');return db[_0x5b94('0x25')][_0x5b94('0x26')]({'where':{'type':_0x4ef2d2,'resourceId':_0x41c7fa['id']}})['then'](function(){return _0x2bceda;});})[_0x5b94('0x23')](function(){_0x234322[_0x5b94('0x18')](0xcc)[_0x5b94('0x19')]();});}};}function handleEntityNotFound(_0xe479f5,_0x2c3891){return function(_0x47f412){if(!_0x47f412){_0xe479f5['sendStatus'](0x194);}return _0x47f412;};}function handleError(_0x4fa992,_0x13883c){_0x13883c=_0x13883c||0x1f4;return function(_0x2ddd39){logger[_0x5b94('0x27')](_0x2ddd39['stack']);if(_0x2ddd39[_0x5b94('0x28')]){delete _0x2ddd39['name'];}_0x4fa992[_0x5b94('0x18')](_0x13883c)['send'](_0x2ddd39);};}exports['index']=function(_0x17ff57,_0x5d0f45){var _0x350322={},_0x6e152={},_0x4b71d6={'count':0x0,'rows':[]};var _0x2dd0fc=_['map'](db['Interval'][_0x5b94('0x29')],function(_0x4d397c){return{'name':_0x4d397c[_0x5b94('0x2a')],'type':_0x4d397c[_0x5b94('0x2b')][_0x5b94('0x2c')]};});_0x6e152[_0x5b94('0x2d')]=_[_0x5b94('0x2e')](_0x2dd0fc,_0x5b94('0x28'));_0x6e152[_0x5b94('0x2f')]=_['keys'](_0x17ff57[_0x5b94('0x2f')]);_0x6e152[_0x5b94('0x30')]=_['intersection'](_0x6e152[_0x5b94('0x2d')],_0x6e152[_0x5b94('0x2f')]);_0x350322[_0x5b94('0x31')]=_['intersection'](_0x6e152[_0x5b94('0x2d')],qs[_0x5b94('0x32')](_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x32')]));_0x350322['attributes']=_0x350322[_0x5b94('0x31')][_0x5b94('0x33')]?_0x350322[_0x5b94('0x31')]:_0x6e152[_0x5b94('0x2d')];if(!_0x17ff57['query'][_0x5b94('0x34')]('nolimit')){_0x350322[_0x5b94('0x1d')]=qs[_0x5b94('0x1d')](_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x1d')]);_0x350322[_0x5b94('0x1b')]=qs['offset'](_0x17ff57[_0x5b94('0x2f')]['offset']);}_0x350322[_0x5b94('0x35')]=qs[_0x5b94('0x36')](_0x17ff57[_0x5b94('0x2f')]['sort']);_0x350322[_0x5b94('0x37')]=qs[_0x5b94('0x30')](_['pick'](_0x17ff57['query'],_0x6e152['filters']),_0x2dd0fc);if(_0x17ff57['query'][_0x5b94('0x38')]){_0x350322[_0x5b94('0x37')]=_[_0x5b94('0x39')](_0x350322[_0x5b94('0x37')],{'$or':_[_0x5b94('0x2e')](_0x2dd0fc,function(_0x317628){if(_0x317628['type']!==_0x5b94('0x3a')){var _0x5a2c08={};_0x5a2c08[_0x317628['name']]={'$like':'%'+_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x38')]+'%'};return _0x5a2c08;}})});}_0x350322=_[_0x5b94('0x39')]({},_0x350322,_0x17ff57['options']);var _0x4fc940={'where':_0x350322[_0x5b94('0x37')]};return db[_0x5b94('0x3b')][_0x5b94('0x1e')](_0x4fc940)[_0x5b94('0x23')](function(_0x73c19){_0x4b71d6[_0x5b94('0x1e')]=_0x73c19;if(_0x17ff57[_0x5b94('0x2f')][_0x5b94('0x3c')]){_0x350322[_0x5b94('0x3d')]=[{'all':!![]}];}return db['Interval'][_0x5b94('0x3e')](_0x350322);})[_0x5b94('0x23')](function(_0x2d634d){_0x4b71d6['rows']=_0x2d634d;return _0x4b71d6;})['then'](respondWithFilteredResult(_0x5d0f45,_0x350322))[_0x5b94('0x3f')](handleError(_0x5d0f45,null));};exports[_0x5b94('0x40')]=function(_0x3bab97,_0x1231cd){var _0x5388ab={'raw':!![],'where':{'id':_0x3bab97['params']['id']}},_0x2d9d8e={};_0x2d9d8e[_0x5b94('0x2d')]=_[_0x5b94('0x41')](db[_0x5b94('0x3b')][_0x5b94('0x29')]);_0x2d9d8e[_0x5b94('0x2f')]=_[_0x5b94('0x41')](_0x3bab97[_0x5b94('0x2f')]);_0x2d9d8e[_0x5b94('0x30')]=_['intersection'](_0x2d9d8e[_0x5b94('0x2d')],_0x2d9d8e[_0x5b94('0x2f')]);_0x5388ab[_0x5b94('0x31')]=_[_0x5b94('0x42')](_0x2d9d8e[_0x5b94('0x2d')],qs[_0x5b94('0x32')](_0x3bab97[_0x5b94('0x2f')][_0x5b94('0x32')]));_0x5388ab[_0x5b94('0x31')]=_0x5388ab[_0x5b94('0x31')]['length']?_0x5388ab[_0x5b94('0x31')]:_0x2d9d8e['model'];if(_0x3bab97['query'][_0x5b94('0x3c')]){_0x5388ab[_0x5b94('0x3d')]=[{'all':!![]}];}_0x5388ab=_[_0x5b94('0x39')]({},_0x5388ab,_0x3bab97[_0x5b94('0x43')]);return db[_0x5b94('0x3b')]['find'](_0x5388ab)[_0x5b94('0x23')](handleEntityNotFound(_0x1231cd,null))[_0x5b94('0x23')](respondWithResult(_0x1231cd,null))[_0x5b94('0x3f')](handleError(_0x1231cd,null));};exports[_0x5b94('0x44')]=function(_0x23ce5a,_0x5e5768){return db[_0x5b94('0x3b')][_0x5b94('0x44')](_0x23ce5a[_0x5b94('0x45')],{})[_0x5b94('0x23')](function(_0x243c38){var _0x3f8051=_0x23ce5a['user'][_0x5b94('0x46')]({'plain':!![]});if(!_0x3f8051)throw new Error(_0x5b94('0x47'));if(_0x3f8051[_0x5b94('0x48')]==='user'){var _0x252505=_0x243c38[_0x5b94('0x46')]({'plain':!![]});var _0x4908ca=_0x5b94('0x24');return db['UserProfileSection']['find']({'where':{'name':_0x4908ca,'userProfileId':_0x3f8051[_0x5b94('0x49')]},'raw':!![]})[_0x5b94('0x23')](function(_0x482c5f){if(_0x482c5f&&_0x482c5f[_0x5b94('0x4a')]===0x0){return db[_0x5b94('0x25')][_0x5b94('0x44')]({'name':_0x252505[_0x5b94('0x28')],'resourceId':_0x252505['id'],'type':_0x482c5f[_0x5b94('0x28')],'sectionId':_0x482c5f['id']},{})[_0x5b94('0x23')](function(){return _0x243c38;});}else{return _0x243c38;}})[_0x5b94('0x3f')](function(_0x1f01d8){logger[_0x5b94('0x27')](_0x5b94('0x4b'),_0x1f01d8);throw _0x1f01d8;});}return _0x243c38;})[_0x5b94('0x23')](respondWithResult(_0x5e5768,0xc9))[_0x5b94('0x3f')](handleError(_0x5e5768,null));};exports[_0x5b94('0x4c')]=function(_0x84f828,_0x4270f9){if(_0x84f828[_0x5b94('0x45')]['id']){delete _0x84f828[_0x5b94('0x45')]['id'];}return db[_0x5b94('0x3b')][_0x5b94('0x4d')]({'where':{'id':_0x84f828[_0x5b94('0x4e')]['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x4270f9,null))[_0x5b94('0x23')](saveUpdates(_0x84f828['body'],null))['then'](respondWithResult(_0x4270f9,null))['catch'](handleError(_0x4270f9,null));};exports['destroy']=function(_0x5d6f6a,_0x54f6f4){return db['Interval'][_0x5b94('0x4d')]({'where':{'id':_0x5d6f6a['params']['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x54f6f4,null))[_0x5b94('0x23')](removeEntity(_0x54f6f4,null))[_0x5b94('0x3f')](handleError(_0x54f6f4,null));};exports[_0x5b94('0x4f')]=function(_0x12b92e,_0x2bc08a,_0x1e4ef7){if(_0x12b92e['body']['id']){delete _0x12b92e[_0x5b94('0x45')]['id'];}return db['Interval'][_0x5b94('0x4d')]({'where':{'id':_0x12b92e[_0x5b94('0x4e')]['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x2bc08a,null))[_0x5b94('0x23')](function(_0x587456){if(_0x587456){_0x12b92e[_0x5b94('0x45')][_0x5b94('0x50')]=_0x587456['id'];return db[_0x5b94('0x3b')][_0x5b94('0x44')](_0x12b92e[_0x5b94('0x45')]);}})['then'](respondWithResult(_0x2bc08a,null))[_0x5b94('0x3f')](handleError(_0x2bc08a,null));};exports[_0x5b94('0x51')]=function(_0x5a59d8,_0x2035a0,_0x285f1b){var _0x184a87={};var _0xe9f3a7={};var _0xbc320e;var _0x2676cf;return db[_0x5b94('0x3b')][_0x5b94('0x52')]({'where':{'id':_0x5a59d8[_0x5b94('0x4e')]['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x2035a0,null))[_0x5b94('0x23')](function(_0x4adcb2){if(_0x4adcb2){_0xbc320e=_0x4adcb2;_0xe9f3a7[_0x5b94('0x2d')]=_[_0x5b94('0x41')](db[_0x5b94('0x3b')]['rawAttributes']);_0xe9f3a7[_0x5b94('0x2f')]=_['keys'](_0x5a59d8[_0x5b94('0x2f')]);_0xe9f3a7['filters']=_['intersection'](_0xe9f3a7[_0x5b94('0x2d')],_0xe9f3a7[_0x5b94('0x2f')]);_0x184a87[_0x5b94('0x31')]=_[_0x5b94('0x42')](_0xe9f3a7[_0x5b94('0x2d')],qs[_0x5b94('0x32')](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x32')]));_0x184a87[_0x5b94('0x31')]=_0x184a87[_0x5b94('0x31')]['length']?_0x184a87[_0x5b94('0x31')]:_0xe9f3a7[_0x5b94('0x2d')];_0x184a87[_0x5b94('0x35')]=qs[_0x5b94('0x36')](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x36')]);_0x184a87[_0x5b94('0x37')]=qs[_0x5b94('0x30')](_[_0x5b94('0x53')](_0x5a59d8['query'],_0xe9f3a7[_0x5b94('0x30')]));if(_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x38')]){_0x184a87[_0x5b94('0x37')]=_[_0x5b94('0x39')](_0x184a87[_0x5b94('0x37')],{'$or':_[_0x5b94('0x2e')](_0x184a87[_0x5b94('0x31')],function(_0x1b5f57){var _0x29be29={};_0x29be29[_0x1b5f57]={'$like':'%'+_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x38')]+'%'};return _0x29be29;})});}_0x184a87=_['merge']({},_0x184a87,_0x5a59d8['options']);return _0xbc320e[_0x5b94('0x51')](_0x184a87);}})[_0x5b94('0x23')](function(_0x52e1c1){if(_0x52e1c1){_0x2676cf=_0x52e1c1[_0x5b94('0x33')];if(!_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x34')](_0x5b94('0x54'))){_0x184a87[_0x5b94('0x1d')]=qs[_0x5b94('0x1d')](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x1d')]);_0x184a87[_0x5b94('0x1b')]=qs['offset'](_0x5a59d8[_0x5b94('0x2f')][_0x5b94('0x1b')]);}return _0xbc320e[_0x5b94('0x51')](_0x184a87);}})[_0x5b94('0x23')](function(_0x5a633f){if(_0x5a633f){return _0x5a633f?{'count':_0x2676cf,'rows':_0x5a633f}:null;}})[_0x5b94('0x23')](respondWithResult(_0x2035a0,null))['catch'](handleError(_0x2035a0,null));};exports[_0x5b94('0x55')]=function(_0x2b73af,_0x2b936b,_0x46d188){return db[_0x5b94('0x3b')]['findOne']({'where':{'id':_0x2b73af['params']['id']}})[_0x5b94('0x23')](handleEntityNotFound(_0x2b936b,null))['then'](function(_0x10624e){if(_0x10624e){return db[_0x5b94('0x56')][_0x5b94('0x57')](function(_0x5a10d4){return db['Interval'][_0x5b94('0x26')]({'where':{'IntervalId':_0x2b73af[_0x5b94('0x4e')]['id']},'transaction':_0x5a10d4})[_0x5b94('0x23')](function(_0x2d0c3b){var _0x3678b5=_[_0x5b94('0x2e')](_0x2b73af[_0x5b94('0x45')],function(_0x3da4e7){delete _0x3da4e7['id'];_0x3da4e7[_0x5b94('0x50')]=_0x2b73af[_0x5b94('0x4e')]['id'];return _0x3da4e7;});return db[_0x5b94('0x3b')][_0x5b94('0x58')](_0x3678b5,{'transaction':_0x5a10d4});});})['then'](function(){return db[_0x5b94('0x3b')][_0x5b94('0x3e')]({'where':{'IntervalId':_0x2b73af[_0x5b94('0x4e')]['id']}});});}})['then'](respondWithResult(_0x2b936b,null))['catch'](handleError(_0x2b936b,null));};
\ No newline at end of file
index 92841db..4f81c98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2825=['request-promise','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','define','Interval','tools_intervals','rewrite','moment','bluebird'];(function(_0x30182f,_0x30ce41){var _0x5207db=function(_0x50a417){while(--_0x50a417){_0x30182f['push'](_0x30182f['shift']());}};_0x5207db(++_0x30ce41);}(_0x2825,0x195));var _0x5282=function(_0x126461,_0xe10273){_0x126461=_0x126461-0x0;var _0x293958=_0x2825[_0x126461];return _0x293958;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5282('0x0'));var BPromise=require(_0x5282('0x1'));var rp=require(_0x5282('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5282('0x3'));var config=require(_0x5282('0x4'));var attributes=require(_0x5282('0x5'));var extensions=require(_0x5282('0x6'));module['exports']=function(_0x19b8aa,_0x59ec4a){return _0x19b8aa[_0x5282('0x7')](_0x5282('0x8'),attributes,{'tableName':_0x5282('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x53ca23,_0x272f12){extensions[_0x5282('0xa')](_0x19b8aa,_0x53ca23);},'afterBulkCreate':function(_0x240b72,_0x50d99b,_0x593cd5){_0x593cd5();extensions[_0x5282('0xa')](_0x19b8aa,_0x240b72[0x0]);},'afterUpdate':function(_0x1e3100,_0xa6ddb4){extensions[_0x5282('0xa')](_0x19b8aa,_0x1e3100);},'afterDestroy':function(_0x549840,_0x4fa3e2){extensions[_0x5282('0xa')](_0x19b8aa,_0x549840);}}});};
\ No newline at end of file
+var _0x6a80=['./interval.attributes','../../components/extensions/rewrite','exports','Interval','tools_intervals','rewrite','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x362382,_0x3aad6f){var _0x33c3dc=function(_0x22447d){while(--_0x22447d){_0x362382['push'](_0x362382['shift']());}};_0x33c3dc(++_0x3aad6f);}(_0x6a80,0x1e7));var _0x06a8=function(_0x504fa3,_0x56e4ee){_0x504fa3=_0x504fa3-0x0;var _0x8323e4=_0x6a80[_0x504fa3];return _0x8323e4;};'use strict';var _=require(_0x06a8('0x0'));var util=require(_0x06a8('0x1'));var logger=require('../../config/logger')(_0x06a8('0x2'));var moment=require(_0x06a8('0x3'));var BPromise=require(_0x06a8('0x4'));var rp=require(_0x06a8('0x5'));var fs=require('fs');var path=require(_0x06a8('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x06a8('0x7'));var extensions=require(_0x06a8('0x8'));module[_0x06a8('0x9')]=function(_0x1f63e6,_0x518e52){return _0x1f63e6['define'](_0x06a8('0xa'),attributes,{'tableName':_0x06a8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x469d13,_0x57ad19){extensions[_0x06a8('0xc')](_0x1f63e6,_0x469d13);},'afterBulkCreate':function(_0x4abf65,_0x298436,_0x5e5851){_0x5e5851();extensions[_0x06a8('0xc')](_0x1f63e6,_0x4abf65[0x0]);},'afterUpdate':function(_0x5510e7,_0x3e0b26){extensions[_0x06a8('0xc')](_0x1f63e6,_0x5510e7);},'afterDestroy':function(_0x1324e1,_0x24b833){extensions['rewrite'](_0x1f63e6,_0x1324e1);}}});};
\ No newline at end of file
index a93657c..f53fb0a 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(_0x4409e7,_0x307f17){var _0x24c751=function(_0x3a7d33){while(--_0x3a7d33){_0x4409e7['push'](_0x4409e7['shift']());}};_0x24c751(++_0x307f17);}(_0xa9e0,0x123));var _0x0a9e=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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(_0x3dc68d,_0x1c1951){var _0xdf7f94=function(_0x339428){while(--_0x339428){_0x3dc68d['push'](_0x3dc68d['shift']());}};_0xdf7f94(++_0x1c1951);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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 b3eaf71..de94856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['isAuthenticated','send','Router','../../components/auth/service','./jira.controller'];(function(_0x2d4f02,_0x58fffa){var _0x294472=function(_0x4f034a){while(--_0x4f034a){_0x2d4f02['push'](_0x2d4f02['shift']());}};_0x294472(++_0x58fffa);}(_0x2032,0xd9));var _0x2203=function(_0xc049f6,_0x1544e8){_0xc049f6=_0xc049f6-0x0;var _0x1f40b0=_0x2032[_0xc049f6];return _0x1f40b0;};'use strict';var express=require('express');var router=express[_0x2203('0x0')]();var auth=require(_0x2203('0x1'));var controller=require(_0x2203('0x2'));router['post']('/',auth[_0x2203('0x3')](),controller[_0x2203('0x4')]);module['exports']=router;
\ No newline at end of file
+var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x5f66,0x1a0));var _0x65f6=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x5f66[_0x502c7d];return _0x30b7ed;};'use strict';var express=require('express');var router=express[_0x65f6('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x65f6('0x1'));router[_0x65f6('0x2')]('/',auth[_0x65f6('0x3')](),controller[_0x65f6('0x4')]);module[_0x65f6('0x5')]=router;
\ No newline at end of file
index a99a792..1467425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4220=['email','oldToken','newToken','customfield_11503','name','customfield_11504','customfield_10102','/rest/api/2/issue','POST','Basic\x20','toString','base64','request','setEncoding','utf8','statusCode','json','parse','error','status','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','send','x-forwarded-for','connection','socket','remoteAddress','body','bluebird','https','../../config/logger','api','MOTGUI','summary','Report','\x20from\x20','description','stringify','issuetype','Bug','fields'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x4220,0x71));var _0x0422=function(_0x2555be,_0x10045d){_0x2555be=_0x2555be-0x0;var _0x19334b=_0x4220[_0x2555be];return _0x19334b;};'use strict';var BPromise=require(_0x0422('0x0'));var https=require(_0x0422('0x1'));var logger=require(_0x0422('0x2'))(_0x0422('0x3'));var USERNAME='support';var PASSWORD='3eAmWpBVP0';function openIssue(_0x18af8a,_0x351d1b){var _0x39ddcd={'fields':{'project':{'key':_0x18af8a['key']||_0x0422('0x4')},'summary':(_0x18af8a[_0x0422('0x5')]||_0x0422('0x6'))+_0x0422('0x7')+_0x18af8a['ip'],'description':_0x18af8a[_0x0422('0x8')]||JSON[_0x0422('0x9')](_0x18af8a),'issuetype':{'name':_0x18af8a[_0x0422('0xa')]||_0x0422('0xb')}}};_0x39ddcd[_0x0422('0xc')]['customfield_11500']=_0x18af8a[_0x0422('0xd')];_0x39ddcd[_0x0422('0xc')]['customfield_11501']=_0x18af8a[_0x0422('0xe')];_0x39ddcd[_0x0422('0xc')]['customfield_11502']=_0x18af8a[_0x0422('0xf')];_0x39ddcd[_0x0422('0xc')][_0x0422('0x10')]=_0x18af8a[_0x0422('0x11')];_0x39ddcd[_0x0422('0xc')][_0x0422('0x12')]=_0x18af8a['reason'];_0x39ddcd['fields'][_0x0422('0x13')]=_0x18af8a['ip'];var _0x2fe5fe={'host':'track.xcallymotion.com','port':0x1bb,'path':_0x0422('0x14'),'method':_0x0422('0x15'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':_0x0422('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0x0422('0x17')](_0x0422('0x18'))}};var _0x36ae94=JSON['stringify'](_0x39ddcd);var _0x1d6d32=https[_0x0422('0x19')](_0x2fe5fe,function(_0x423bd3){_0x423bd3[_0x0422('0x1a')](_0x0422('0x1b'));var _0x4027fc='';_0x423bd3['on']('data',function(_0x5b3eb8){_0x4027fc+=_0x5b3eb8;});_0x423bd3['on']('end',function(){if(_0x351d1b){return _0x351d1b['status'](_0x423bd3[_0x0422('0x1c')])[_0x0422('0x1d')](JSON[_0x0422('0x1e')](_0x4027fc));}});});_0x1d6d32['on'](_0x0422('0x1f'),function(_0x3c8456){if(_0x351d1b){return _0x351d1b[_0x0422('0x20')](0x1f4)[_0x0422('0x1d')]({'errors':[{'message':_0x0422('0x21'),'type':_0x0422('0x22')}]});}});_0x1d6d32[_0x0422('0x23')](_0x36ae94);_0x1d6d32['end']();}exports['openIssue']=openIssue;exports[_0x0422('0x24')]=function(_0x506089,_0x40a858){_0x506089['body']['ip']=_0x506089['headers'][_0x0422('0x25')]||_0x506089[_0x0422('0x26')]['remoteAddress']||_0x506089[_0x0422('0x27')][_0x0422('0x28')]||_0x506089['connection'][_0x0422('0x27')][_0x0422('0x28')];return openIssue(_0x506089[_0x0422('0x29')],_0x40a858);};
\ No newline at end of file
+var _0xcba0=['/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','data','end','status','statusCode','json','parse','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','remoteAddress','socket','connection','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI','summary','\x20from\x20','issuetype','fields','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com'];(function(_0xbb6683,_0xf3bb){var _0x3ca15a=function(_0x2da09){while(--_0x2da09){_0xbb6683['push'](_0xbb6683['shift']());}};_0x3ca15a(++_0xf3bb);}(_0xcba0,0x188));var _0x0cba=function(_0x2320bd,_0x5cc478){_0x2320bd=_0x2320bd-0x0;var _0x4c2f77=_0xcba0[_0x2320bd];return _0x4c2f77;};'use strict';var BPromise=require(_0x0cba('0x0'));var https=require(_0x0cba('0x1'));var logger=require(_0x0cba('0x2'))(_0x0cba('0x3'));var USERNAME=_0x0cba('0x4');var PASSWORD=_0x0cba('0x5');function openIssue(_0x2ec77a,_0x2c6380){var _0x3e1d5f={'fields':{'project':{'key':_0x2ec77a['key']||_0x0cba('0x6')},'summary':(_0x2ec77a[_0x0cba('0x7')]||'Report')+_0x0cba('0x8')+_0x2ec77a['ip'],'description':_0x2ec77a['description']||JSON['stringify'](_0x2ec77a),'issuetype':{'name':_0x2ec77a[_0x0cba('0x9')]||'Bug'}}};_0x3e1d5f[_0x0cba('0xa')]['customfield_11500']=_0x2ec77a[_0x0cba('0xb')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0xc')]=_0x2ec77a[_0x0cba('0xd')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0xe')]=_0x2ec77a[_0x0cba('0xf')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0x10')]=_0x2ec77a[_0x0cba('0x11')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0x12')]=_0x2ec77a[_0x0cba('0x13')];_0x3e1d5f[_0x0cba('0xa')][_0x0cba('0x14')]=_0x2ec77a['ip'];var _0x222dbf={'host':_0x0cba('0x15'),'port':0x1bb,'path':_0x0cba('0x16'),'method':_0x0cba('0x17'),'timeout':0x4e20,'headers':{'Content-Type':_0x0cba('0x18'),'Authorization':_0x0cba('0x19')+new Buffer(USERNAME+':'+PASSWORD)[_0x0cba('0x1a')](_0x0cba('0x1b'))}};var _0x4e5312=JSON['stringify'](_0x3e1d5f);var _0x279e38=https[_0x0cba('0x1c')](_0x222dbf,function(_0x43fd92){_0x43fd92[_0x0cba('0x1d')]('utf8');var _0x43c952='';_0x43fd92['on'](_0x0cba('0x1e'),function(_0x56f836){_0x43c952+=_0x56f836;});_0x43fd92['on'](_0x0cba('0x1f'),function(){if(_0x2c6380){return _0x2c6380[_0x0cba('0x20')](_0x43fd92[_0x0cba('0x21')])[_0x0cba('0x22')](JSON[_0x0cba('0x23')](_0x43c952));}});});_0x279e38['on']('error',function(_0x384841){if(_0x2c6380){return _0x2c6380[_0x0cba('0x20')](0x1f4)['json']({'errors':[{'message':_0x0cba('0x24'),'type':_0x0cba('0x25')}]});}});_0x279e38[_0x0cba('0x26')](_0x4e5312);_0x279e38[_0x0cba('0x1f')]();}exports[_0x0cba('0x27')]=openIssue;exports[_0x0cba('0x28')]=function(_0xa4f69f,_0x3093ef){_0xa4f69f[_0x0cba('0x29')]['ip']=_0xa4f69f[_0x0cba('0x2a')]['x-forwarded-for']||_0xa4f69f['connection'][_0x0cba('0x2b')]||_0xa4f69f[_0x0cba('0x2c')][_0x0cba('0x2b')]||_0xa4f69f[_0x0cba('0x2d')][_0x0cba('0x2c')][_0x0cba('0x2b')];return openIssue(_0xa4f69f[_0x0cba('0x29')],_0x3093ef);};
\ No newline at end of file
index 62617d5..21cb3bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ff3=['/:id','post','create','put','update','destroy','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x58d89e,_0x4349ca){var _0x56cdea=function(_0x23ce22){while(--_0x23ce22){_0x58d89e['push'](_0x58d89e['shift']());}};_0x56cdea(++_0x4349ca);}(_0x5ff3,0x17d));var _0x35ff=function(_0x19ad7c,_0x1b4805){_0x19ad7c=_0x19ad7c-0x0;var _0x11579c=_0x5ff3[_0x19ad7c];return _0x11579c;};'use strict';var multer=require('multer');var util=require(_0x35ff('0x0'));var path=require('path');var timeout=require(_0x35ff('0x1'));var express=require('express');var router=express[_0x35ff('0x2')]();var fs_extra=require(_0x35ff('0x3'));var auth=require(_0x35ff('0x4'));var interaction=require(_0x35ff('0x5'));var config=require('../../config/environment');var controller=require(_0x35ff('0x6'));router[_0x35ff('0x7')]('/',auth[_0x35ff('0x8')](),controller[_0x35ff('0x9')]);router[_0x35ff('0x7')]('/describe',auth[_0x35ff('0x8')](),controller['describe']);router[_0x35ff('0x7')](_0x35ff('0xa'),auth[_0x35ff('0x8')](),controller['show']);router[_0x35ff('0xb')]('/',auth['isAuthenticated'](),controller[_0x35ff('0xc')]);router[_0x35ff('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x35ff('0xe')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x35ff('0xf')]);module[_0x35ff('0x10')]=router;
\ No newline at end of file
+var _0xb43b=['../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','index','/describe','isAuthenticated','describe','get','/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x4e23df,_0x1a3b01){var _0x326e41=function(_0x4b457a){while(--_0x4b457a){_0x4e23df['push'](_0x4e23df['shift']());}};_0x326e41(++_0x1a3b01);}(_0xb43b,0x1b2));var _0xbb43=function(_0x308750,_0x4714db){_0x308750=_0x308750-0x0;var _0x5674fa=_0xb43b[_0x308750];return _0x5674fa;};'use strict';var multer=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var path=require('path');var timeout=require(_0xbb43('0x2'));var express=require(_0xbb43('0x3'));var router=express[_0xbb43('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xbb43('0x5'));var interaction=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var controller=require(_0xbb43('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xbb43('0x9')]);router['get'](_0xbb43('0xa'),auth[_0xbb43('0xb')](),controller[_0xbb43('0xc')]);router[_0xbb43('0xd')](_0xbb43('0xe'),auth['isAuthenticated'](),controller[_0xbb43('0xf')]);router[_0xbb43('0x10')]('/',auth['isAuthenticated'](),controller[_0xbb43('0x11')]);router[_0xbb43('0x12')](_0xbb43('0xe'),auth[_0xbb43('0xb')](),controller[_0xbb43('0x13')]);router[_0xbb43('0x14')]('/:id',auth[_0xbb43('0xb')](),controller[_0xbb43('0x15')]);module['exports']=router;
\ No newline at end of file
index 7fc7de9..7c672a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x7a54,0x106));var _0x47a5=function(_0x4b7b4a,_0x21fc85){_0x4b7b4a=_0x4b7b4a-0x0;var _0x35186f=_0x7a54[_0x4b7b4a];return _0x35186f;};'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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x7a54,0x106));var _0x47a5=function(_0x24c5e3,_0x129016){_0x24c5e3=_0x24c5e3-0x0;var _0x43c84b=_0x7a54[_0x24c5e3];return _0x43c84b;};'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 c872989..7172080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0960=['offset','set','Content-Range','apply','reject','save','then','destroy','name','send','index','map','JscriptyAnswerReport','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','type','VIRTUAL','filter','includeAll','include','rows','params','keys','rawAttributes','options','create','body','update','find','catch','describe','eml-format','rimraf','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','api','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count'];(function(_0x418bf5,_0x568d7b){var _0x36d37b=function(_0x4b5537){while(--_0x4b5537){_0x418bf5['push'](_0x418bf5['shift']());}};_0x36d37b(++_0x568d7b);}(_0x0960,0xc2));var _0x0096=function(_0x43cf6c,_0x2120ed){_0x43cf6c=_0x43cf6c-0x0;var _0x4c24a4=_0x0960[_0x43cf6c];return _0x4c24a4;};'use strict';var emlformat=require(_0x0096('0x0'));var rimraf=require(_0x0096('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0096('0x2'));var rp=require(_0x0096('0x3'));var moment=require(_0x0096('0x4'));var BPromise=require(_0x0096('0x5'));var Mustache=require(_0x0096('0x6'));var util=require(_0x0096('0x7'));var path=require(_0x0096('0x8'));var sox=require(_0x0096('0x9'));var csv=require(_0x0096('0xa'));var ejs=require(_0x0096('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0096('0xc'));var squel=require('squel');var crypto=require(_0x0096('0xd'));var jsforce=require(_0x0096('0xe'));var deskjs=require(_0x0096('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0096('0x10'));var Papa=require(_0x0096('0x11'));var Redis=require(_0x0096('0x12'));var authService=require(_0x0096('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x0096('0x14'));var hardwareService=require(_0x0096('0x15'));var logger=require('../../config/logger')(_0x0096('0x16'));var utils=require('../../config/utils');var config=require(_0x0096('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0096('0x18'))['db'];function respondWithStatusCode(_0x25011c,_0x55678a){_0x55678a=_0x55678a||0xcc;return function(_0x2be406){if(_0x2be406){return _0x25011c[_0x0096('0x19')](_0x55678a);}return _0x25011c['status'](_0x55678a)['end']();};}function respondWithResult(_0x753d99,_0x39b6f6){_0x39b6f6=_0x39b6f6||0xc8;return function(_0x407361){if(_0x407361){return _0x753d99[_0x0096('0x1a')](_0x39b6f6)[_0x0096('0x1b')](_0x407361);}};}function respondWithFilteredResult(_0x5c901f,_0x590c96){return function(_0x19db10){if(_0x19db10){var _0x50c804=typeof _0x590c96['offset']===_0x0096('0x1c')&&typeof _0x590c96[_0x0096('0x1d')]==='undefined';var _0x7afa5f=_0x19db10[_0x0096('0x1e')];var _0x5468e2=_0x50c804?0x0:_0x590c96[_0x0096('0x1f')];var _0x27462a=_0x50c804?_0x19db10[_0x0096('0x1e')]:_0x590c96[_0x0096('0x1f')]+_0x590c96[_0x0096('0x1d')];var _0x507463;if(_0x27462a>=_0x7afa5f){_0x27462a=_0x7afa5f;_0x507463=0xc8;}else{_0x507463=0xce;}_0x5c901f[_0x0096('0x1a')](_0x507463);return _0x5c901f[_0x0096('0x20')](_0x0096('0x21'),_0x5468e2+'-'+_0x27462a+'/'+_0x7afa5f)['json'](_0x19db10);}return null;};}function patchUpdates(_0x1f5aad){return function(_0xef7a81){try{jsonpatch[_0x0096('0x22')](_0xef7a81,_0x1f5aad,!![]);}catch(_0x4e6338){return BPromise[_0x0096('0x23')](_0x4e6338);}return _0xef7a81[_0x0096('0x24')]();};}function saveUpdates(_0x4ac6f0,_0x263951){return function(_0x29b2c2){if(_0x29b2c2){return _0x29b2c2['update'](_0x4ac6f0)[_0x0096('0x25')](function(_0xfb20d0){return _0xfb20d0;});}return null;};}function removeEntity(_0x1a8e0e,_0x5ee101){return function(_0x224748){if(_0x224748){return _0x224748[_0x0096('0x26')]()[_0x0096('0x25')](function(){_0x1a8e0e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x569a7e,_0x2ea1df){return function(_0x1a6df7){if(!_0x1a6df7){_0x569a7e['sendStatus'](0x194);}return _0x1a6df7;};}function handleError(_0x47abff,_0x230d46){_0x230d46=_0x230d46||0x1f4;return function(_0x3eac07){logger['error'](_0x3eac07['stack']);if(_0x3eac07[_0x0096('0x27')]){delete _0x3eac07[_0x0096('0x27')];}_0x47abff['status'](_0x230d46)[_0x0096('0x28')](_0x3eac07);};}exports[_0x0096('0x29')]=function(_0x204002,_0x205b79){var _0x102346={},_0x48e20f={},_0x511806={'count':0x0,'rows':[]};var _0x3b842b=_[_0x0096('0x2a')](db[_0x0096('0x2b')]['rawAttributes'],function(_0x593074){return{'name':_0x593074[_0x0096('0x2c')],'type':_0x593074['type'][_0x0096('0x2d')]};});_0x48e20f[_0x0096('0x2e')]=_[_0x0096('0x2a')](_0x3b842b,_0x0096('0x27'));_0x48e20f['query']=_['keys'](_0x204002[_0x0096('0x2f')]);_0x48e20f['filters']=_[_0x0096('0x30')](_0x48e20f[_0x0096('0x2e')],_0x48e20f[_0x0096('0x2f')]);_0x102346[_0x0096('0x31')]=_[_0x0096('0x30')](_0x48e20f[_0x0096('0x2e')],qs[_0x0096('0x32')](_0x204002[_0x0096('0x2f')][_0x0096('0x32')]));_0x102346[_0x0096('0x31')]=_0x102346[_0x0096('0x31')][_0x0096('0x33')]?_0x102346['attributes']:_0x48e20f[_0x0096('0x2e')];if(!_0x204002[_0x0096('0x2f')][_0x0096('0x34')](_0x0096('0x35'))){_0x102346[_0x0096('0x1d')]=qs[_0x0096('0x1d')](_0x204002[_0x0096('0x2f')]['limit']);_0x102346[_0x0096('0x1f')]=qs[_0x0096('0x1f')](_0x204002[_0x0096('0x2f')][_0x0096('0x1f')]);}_0x102346[_0x0096('0x36')]=qs[_0x0096('0x37')](_0x204002[_0x0096('0x2f')][_0x0096('0x37')]);_0x102346[_0x0096('0x38')]=qs[_0x0096('0x39')](_[_0x0096('0x3a')](_0x204002[_0x0096('0x2f')],_0x48e20f['filters']),_0x3b842b);if(_0x204002[_0x0096('0x2f')]['filter']){_0x102346[_0x0096('0x38')]=_['merge'](_0x102346['where'],{'$or':_[_0x0096('0x2a')](_0x3b842b,function(_0x179496){if(_0x179496[_0x0096('0x3b')]!==_0x0096('0x3c')){var _0x157a61={};_0x157a61[_0x179496['name']]={'$like':'%'+_0x204002[_0x0096('0x2f')][_0x0096('0x3d')]+'%'};return _0x157a61;}})});}_0x102346=_['merge']({},_0x102346,_0x204002['options']);var _0x505ede={'where':_0x102346[_0x0096('0x38')]};return db[_0x0096('0x2b')][_0x0096('0x1e')](_0x505ede)[_0x0096('0x25')](function(_0x5722b6){_0x511806[_0x0096('0x1e')]=_0x5722b6;if(_0x204002[_0x0096('0x2f')][_0x0096('0x3e')]){_0x102346[_0x0096('0x3f')]=[{'all':!![]}];}return db[_0x0096('0x2b')]['findAll'](_0x102346);})[_0x0096('0x25')](function(_0x2dccba){_0x511806[_0x0096('0x40')]=_0x2dccba;return _0x511806;})[_0x0096('0x25')](respondWithFilteredResult(_0x205b79,_0x102346))['catch'](handleError(_0x205b79,null));};exports['show']=function(_0x4b4ab7,_0x12d010){var _0x543e14={'raw':!![],'where':{'id':_0x4b4ab7[_0x0096('0x41')]['id']}},_0x31f7c0={};_0x31f7c0[_0x0096('0x2e')]=_[_0x0096('0x42')](db['JscriptyAnswerReport'][_0x0096('0x43')]);_0x31f7c0[_0x0096('0x2f')]=_[_0x0096('0x42')](_0x4b4ab7[_0x0096('0x2f')]);_0x31f7c0[_0x0096('0x39')]=_[_0x0096('0x30')](_0x31f7c0['model'],_0x31f7c0[_0x0096('0x2f')]);_0x543e14['attributes']=_[_0x0096('0x30')](_0x31f7c0[_0x0096('0x2e')],qs[_0x0096('0x32')](_0x4b4ab7['query'][_0x0096('0x32')]));_0x543e14[_0x0096('0x31')]=_0x543e14[_0x0096('0x31')]['length']?_0x543e14[_0x0096('0x31')]:_0x31f7c0[_0x0096('0x2e')];if(_0x4b4ab7['query'][_0x0096('0x3e')]){_0x543e14[_0x0096('0x3f')]=[{'all':!![]}];}_0x543e14=_['merge']({},_0x543e14,_0x4b4ab7[_0x0096('0x44')]);return db[_0x0096('0x2b')]['find'](_0x543e14)[_0x0096('0x25')](handleEntityNotFound(_0x12d010,null))[_0x0096('0x25')](respondWithResult(_0x12d010,null))['catch'](handleError(_0x12d010,null));};exports['create']=function(_0x34cc4d,_0x18baac){return db['JscriptyAnswerReport'][_0x0096('0x45')](_0x34cc4d[_0x0096('0x46')],{})['then'](respondWithResult(_0x18baac,0xc9))['catch'](handleError(_0x18baac,null));};exports[_0x0096('0x47')]=function(_0x392ca0,_0x29993c){if(_0x392ca0[_0x0096('0x46')]['id']){delete _0x392ca0[_0x0096('0x46')]['id'];}return db[_0x0096('0x2b')][_0x0096('0x48')]({'where':{'id':_0x392ca0[_0x0096('0x41')]['id']}})[_0x0096('0x25')](handleEntityNotFound(_0x29993c,null))[_0x0096('0x25')](saveUpdates(_0x392ca0['body'],null))['then'](respondWithResult(_0x29993c,null))[_0x0096('0x49')](handleError(_0x29993c,null));};exports[_0x0096('0x26')]=function(_0x2f5f2f,_0x7fc578){return db[_0x0096('0x2b')]['find']({'where':{'id':_0x2f5f2f[_0x0096('0x41')]['id']}})[_0x0096('0x25')](handleEntityNotFound(_0x7fc578,null))[_0x0096('0x25')](removeEntity(_0x7fc578,null))[_0x0096('0x49')](handleError(_0x7fc578,null));};exports['describe']=function(_0x56a7c8,_0x425f60){return db[_0x0096('0x2b')][_0x0096('0x4a')]()[_0x0096('0x25')](respondWithResult(_0x425f60,null))[_0x0096('0x49')](handleError(_0x425f60,null));};
\ No newline at end of file
+var _0x379e=['key','model','query','keys','intersection','attributes','fields','length','nolimit','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include','JscriptyAnswerReport','rows','show','find','create','body','update','catch','params','describe','eml-format','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/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x379e,0x104));var _0xe379=function(_0x19d3d7,_0x3be694){_0x19d3d7=_0x19d3d7-0x0;var _0x111a85=_0x379e[_0x19d3d7];return _0x111a85;};'use strict';var emlformat=require(_0xe379('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe379('0x1'));var moment=require(_0xe379('0x2'));var BPromise=require(_0xe379('0x3'));var Mustache=require(_0xe379('0x4'));var util=require(_0xe379('0x5'));var path=require(_0xe379('0x6'));var sox=require(_0xe379('0x7'));var csv=require('to-csv');var ejs=require(_0xe379('0x8'));var fs=require('fs');var fs_extra=require(_0xe379('0x9'));var _=require(_0xe379('0xa'));var squel=require(_0xe379('0xb'));var crypto=require(_0xe379('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe379('0xd'));var toCsv=require(_0xe379('0xe'));var querystring=require(_0xe379('0xf'));var Papa=require(_0xe379('0x10'));var Redis=require(_0xe379('0x11'));var authService=require(_0xe379('0x12'));var qs=require(_0xe379('0x13'));var as=require(_0xe379('0x14'));var hardwareService=require(_0xe379('0x15'));var logger=require('../../config/logger')(_0xe379('0x16'));var utils=require(_0xe379('0x17'));var config=require(_0xe379('0x18'));var licenseUtil=require(_0xe379('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c6562,_0x2642a8){_0x2642a8=_0x2642a8||0xcc;return function(_0x45cf1a){if(_0x45cf1a){return _0x4c6562[_0xe379('0x1a')](_0x2642a8);}return _0x4c6562[_0xe379('0x1b')](_0x2642a8)[_0xe379('0x1c')]();};}function respondWithResult(_0x1ee8e0,_0x2a5b60){_0x2a5b60=_0x2a5b60||0xc8;return function(_0x70d82){if(_0x70d82){return _0x1ee8e0['status'](_0x2a5b60)[_0xe379('0x1d')](_0x70d82);}};}function respondWithFilteredResult(_0xab59c7,_0x20eaaf){return function(_0x105d7f){if(_0x105d7f){var _0x3d9351=typeof _0x20eaaf[_0xe379('0x1e')]==='undefined'&&typeof _0x20eaaf[_0xe379('0x1f')]==='undefined';var _0x2c2bd9=_0x105d7f['count'];var _0x150d92=_0x3d9351?0x0:_0x20eaaf[_0xe379('0x1e')];var _0xe4f3d1=_0x3d9351?_0x105d7f[_0xe379('0x20')]:_0x20eaaf['offset']+_0x20eaaf[_0xe379('0x1f')];var _0x260b2e;if(_0xe4f3d1>=_0x2c2bd9){_0xe4f3d1=_0x2c2bd9;_0x260b2e=0xc8;}else{_0x260b2e=0xce;}_0xab59c7[_0xe379('0x1b')](_0x260b2e);return _0xab59c7[_0xe379('0x21')](_0xe379('0x22'),_0x150d92+'-'+_0xe4f3d1+'/'+_0x2c2bd9)['json'](_0x105d7f);}return null;};}function patchUpdates(_0x2c749e){return function(_0x3a8d17){try{jsonpatch['apply'](_0x3a8d17,_0x2c749e,!![]);}catch(_0x39ec4d){return BPromise[_0xe379('0x23')](_0x39ec4d);}return _0x3a8d17[_0xe379('0x24')]();};}function saveUpdates(_0x2e946f,_0x32f43e){return function(_0x10b3c3){if(_0x10b3c3){return _0x10b3c3['update'](_0x2e946f)[_0xe379('0x25')](function(_0x32e16e){return _0x32e16e;});}return null;};}function removeEntity(_0x21e31b,_0x48b543){return function(_0x38236b){if(_0x38236b){return _0x38236b[_0xe379('0x26')]()['then'](function(){_0x21e31b[_0xe379('0x1b')](0xcc)[_0xe379('0x1c')]();});}};}function handleEntityNotFound(_0x4da256,_0x544bf3){return function(_0x22f596){if(!_0x22f596){_0x4da256[_0xe379('0x1a')](0x194);}return _0x22f596;};}function handleError(_0x26ba82,_0x4aa041){_0x4aa041=_0x4aa041||0x1f4;return function(_0x17ba51){logger[_0xe379('0x27')](_0x17ba51[_0xe379('0x28')]);if(_0x17ba51[_0xe379('0x29')]){delete _0x17ba51['name'];}_0x26ba82[_0xe379('0x1b')](_0x4aa041)[_0xe379('0x2a')](_0x17ba51);};}exports[_0xe379('0x2b')]=function(_0x50b0aa,_0x33037d){var _0x120239={},_0x5d9ca1={},_0x24c85d={'count':0x0,'rows':[]};var _0x528a44=_[_0xe379('0x2c')](db['JscriptyAnswerReport'][_0xe379('0x2d')],function(_0x214a0c){return{'name':_0x214a0c[_0xe379('0x2e')],'type':_0x214a0c[_0xe379('0x2f')][_0xe379('0x30')]};});_0x5d9ca1[_0xe379('0x31')]=_[_0xe379('0x2c')](_0x528a44,'name');_0x5d9ca1[_0xe379('0x32')]=_[_0xe379('0x33')](_0x50b0aa[_0xe379('0x32')]);_0x5d9ca1['filters']=_[_0xe379('0x34')](_0x5d9ca1['model'],_0x5d9ca1['query']);_0x120239[_0xe379('0x35')]=_[_0xe379('0x34')](_0x5d9ca1[_0xe379('0x31')],qs[_0xe379('0x36')](_0x50b0aa['query'][_0xe379('0x36')]));_0x120239[_0xe379('0x35')]=_0x120239['attributes'][_0xe379('0x37')]?_0x120239[_0xe379('0x35')]:_0x5d9ca1[_0xe379('0x31')];if(!_0x50b0aa[_0xe379('0x32')]['hasOwnProperty'](_0xe379('0x38'))){_0x120239['limit']=qs[_0xe379('0x1f')](_0x50b0aa[_0xe379('0x32')][_0xe379('0x1f')]);_0x120239[_0xe379('0x1e')]=qs[_0xe379('0x1e')](_0x50b0aa['query'][_0xe379('0x1e')]);}_0x120239['order']=qs[_0xe379('0x39')](_0x50b0aa[_0xe379('0x32')][_0xe379('0x39')]);_0x120239['where']=qs[_0xe379('0x3a')](_[_0xe379('0x3b')](_0x50b0aa[_0xe379('0x32')],_0x5d9ca1[_0xe379('0x3a')]),_0x528a44);if(_0x50b0aa['query'][_0xe379('0x3c')]){_0x120239['where']=_[_0xe379('0x3d')](_0x120239[_0xe379('0x3e')],{'$or':_[_0xe379('0x2c')](_0x528a44,function(_0x12e67e){if(_0x12e67e[_0xe379('0x2f')]!==_0xe379('0x3f')){var _0x56ebb7={};_0x56ebb7[_0x12e67e[_0xe379('0x29')]]={'$like':'%'+_0x50b0aa['query'][_0xe379('0x3c')]+'%'};return _0x56ebb7;}})});}_0x120239=_[_0xe379('0x3d')]({},_0x120239,_0x50b0aa[_0xe379('0x40')]);var _0x2e3eef={'where':_0x120239[_0xe379('0x3e')]};return db['JscriptyAnswerReport'][_0xe379('0x20')](_0x2e3eef)[_0xe379('0x25')](function(_0x59ba54){_0x24c85d['count']=_0x59ba54;if(_0x50b0aa['query'][_0xe379('0x41')]){_0x120239[_0xe379('0x42')]=[{'all':!![]}];}return db[_0xe379('0x43')]['findAll'](_0x120239);})[_0xe379('0x25')](function(_0x3089df){_0x24c85d[_0xe379('0x44')]=_0x3089df;return _0x24c85d;})[_0xe379('0x25')](respondWithFilteredResult(_0x33037d,_0x120239))['catch'](handleError(_0x33037d,null));};exports[_0xe379('0x45')]=function(_0x36ce8e,_0x3c6f5d){var _0x32ecbe={'raw':!![],'where':{'id':_0x36ce8e['params']['id']}},_0x48f0cc={};_0x48f0cc[_0xe379('0x31')]=_[_0xe379('0x33')](db[_0xe379('0x43')][_0xe379('0x2d')]);_0x48f0cc[_0xe379('0x32')]=_[_0xe379('0x33')](_0x36ce8e['query']);_0x48f0cc[_0xe379('0x3a')]=_['intersection'](_0x48f0cc[_0xe379('0x31')],_0x48f0cc[_0xe379('0x32')]);_0x32ecbe[_0xe379('0x35')]=_[_0xe379('0x34')](_0x48f0cc[_0xe379('0x31')],qs[_0xe379('0x36')](_0x36ce8e[_0xe379('0x32')][_0xe379('0x36')]));_0x32ecbe[_0xe379('0x35')]=_0x32ecbe[_0xe379('0x35')][_0xe379('0x37')]?_0x32ecbe[_0xe379('0x35')]:_0x48f0cc[_0xe379('0x31')];if(_0x36ce8e[_0xe379('0x32')][_0xe379('0x41')]){_0x32ecbe[_0xe379('0x42')]=[{'all':!![]}];}_0x32ecbe=_[_0xe379('0x3d')]({},_0x32ecbe,_0x36ce8e[_0xe379('0x40')]);return db[_0xe379('0x43')][_0xe379('0x46')](_0x32ecbe)[_0xe379('0x25')](handleEntityNotFound(_0x3c6f5d,null))[_0xe379('0x25')](respondWithResult(_0x3c6f5d,null))['catch'](handleError(_0x3c6f5d,null));};exports[_0xe379('0x47')]=function(_0x266bfe,_0x42a378){return db[_0xe379('0x43')][_0xe379('0x47')](_0x266bfe[_0xe379('0x48')],{})['then'](respondWithResult(_0x42a378,0xc9))['catch'](handleError(_0x42a378,null));};exports[_0xe379('0x49')]=function(_0x5db39f,_0x55b27b){if(_0x5db39f[_0xe379('0x48')]['id']){delete _0x5db39f[_0xe379('0x48')]['id'];}return db[_0xe379('0x43')][_0xe379('0x46')]({'where':{'id':_0x5db39f['params']['id']}})[_0xe379('0x25')](handleEntityNotFound(_0x55b27b,null))[_0xe379('0x25')](saveUpdates(_0x5db39f['body'],null))[_0xe379('0x25')](respondWithResult(_0x55b27b,null))[_0xe379('0x4a')](handleError(_0x55b27b,null));};exports['destroy']=function(_0x4ac3eb,_0x3af1be){return db[_0xe379('0x43')]['find']({'where':{'id':_0x4ac3eb[_0xe379('0x4b')]['id']}})[_0xe379('0x25')](handleEntityNotFound(_0x3af1be,null))[_0xe379('0x25')](removeEntity(_0x3af1be,null))[_0xe379('0x4a')](handleError(_0x3af1be,null));};exports[_0xe379('0x4c')]=function(_0x4a9c86,_0x337775){return db['JscriptyAnswerReport']['describe']()[_0xe379('0x25')](respondWithResult(_0x337775,null))[_0xe379('0x4a')](handleError(_0x337775,null));};
\ No newline at end of file
index 8046a7d..7d86442 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07aa=['JscriptyAnswerReport','lodash','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x07aa,0x17d));var _0xa07a=function(_0x2f8bbf,_0x2dd4a2){_0x2f8bbf=_0x2f8bbf-0x0;var _0xab2ac2=_0x07aa[_0x2f8bbf];return _0xab2ac2;};'use strict';var _=require(_0xa07a('0x0'));var util=require('util');var logger=require(_0xa07a('0x1'))(_0xa07a('0x2'));var moment=require(_0xa07a('0x3'));var BPromise=require('bluebird');var rp=require(_0xa07a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa07a('0x5'));var config=require(_0xa07a('0x6'));var attributes=require(_0xa07a('0x7'));module[_0xa07a('0x8')]=function(_0x1514d1,_0x10bc8b){return _0x1514d1['define'](_0xa07a('0x9'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x08cc=['bluebird','request-promise','path','../../config/environment','exports','define','JscriptyAnswerReport','lodash','util','../../config/logger','api','moment'];(function(_0x3f6c4b,_0x2f89b5){var _0x4da1ab=function(_0x44a7eb){while(--_0x44a7eb){_0x3f6c4b['push'](_0x3f6c4b['shift']());}};_0x4da1ab(++_0x2f89b5);}(_0x08cc,0x13f));var _0xc08c=function(_0x904e3c,_0xadb3dc){_0x904e3c=_0x904e3c-0x0;var _0xa2cb50=_0x08cc[_0x904e3c];return _0xa2cb50;};'use strict';var _=require(_0xc08c('0x0'));var util=require(_0xc08c('0x1'));var logger=require(_0xc08c('0x2'))(_0xc08c('0x3'));var moment=require(_0xc08c('0x4'));var BPromise=require(_0xc08c('0x5'));var rp=require(_0xc08c('0x6'));var fs=require('fs');var path=require(_0xc08c('0x7'));var rimraf=require('rimraf');var config=require(_0xc08c('0x8'));var attributes=require('./jscriptyAnswerReport.attributes');module[_0xc08c('0x9')]=function(_0x482616,_0x1c1980){return _0x482616[_0xc08c('0xa')](_0xc08c('0xb'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c249cb0..afa2bab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ae0=['stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s'];(function(_0x370a0b,_0x4b6863){var _0x50c603=function(_0x12285b){while(--_0x12285b){_0x370a0b['push'](_0x370a0b['shift']());}};_0x50c603(++_0x4b6863);}(_0x8ae0,0x83));var _0x08ae=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x8ae0[_0x1035c1];return _0x308d67;};'use strict';var _=require('lodash');var util=require(_0x08ae('0x0'));var moment=require(_0x08ae('0x1'));var BPromise=require(_0x08ae('0x2'));var rs=require(_0x08ae('0x3'));var fs=require('fs');var Redis=require(_0x08ae('0x4'));var db=require(_0x08ae('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x08ae('0x6'));var config=require(_0x08ae('0x7'));var jayson=require(_0x08ae('0x8'));var client=jayson['client'][_0x08ae('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b3e62,_0x3eb311,_0x19f4fa){return new BPromise(function(_0x5f1360,_0x3a8f64){return client[_0x08ae('0xa')](_0x3b3e62,_0x19f4fa)['then'](function(_0x22d99f){logger[_0x08ae('0xb')](_0x08ae('0xc'),_0x3eb311,_0x08ae('0xd'));logger[_0x08ae('0xe')](_0x08ae('0xf'),_0x3eb311,_0x08ae('0xd'),JSON[_0x08ae('0x10')](_0x22d99f));if(_0x22d99f[_0x08ae('0x11')]){if(_0x22d99f['error'][_0x08ae('0x12')]===0x1f4){logger[_0x08ae('0x11')](_0x08ae('0xc'),_0x3eb311,_0x22d99f['error'][_0x08ae('0x13')]);return _0x3a8f64(_0x22d99f[_0x08ae('0x11')]['message']);}logger[_0x08ae('0x11')](_0x08ae('0xc'),_0x3eb311,_0x22d99f[_0x08ae('0x11')][_0x08ae('0x13')]);return _0x5f1360(_0x22d99f[_0x08ae('0x11')][_0x08ae('0x13')]);}else{logger[_0x08ae('0xb')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x3eb311,'request\x20sent');_0x5f1360(_0x22d99f['result']['message']);}})[_0x08ae('0x14')](function(_0x1df61a){logger[_0x08ae('0x11')](_0x08ae('0xc'),_0x3eb311,_0x1df61a);_0x3a8f64(_0x1df61a);});});}
\ No newline at end of file
+var _0x3e9c=['JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x241ccf,_0x2f51c4){var _0x2b7277=function(_0xafe1e7){while(--_0xafe1e7){_0x241ccf['push'](_0x241ccf['shift']());}};_0x2b7277(++_0x2f51c4);}(_0x3e9c,0x172));var _0xc3e9=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x3e9c[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0xc3e9('0x0'));var util=require(_0xc3e9('0x1'));var moment=require('moment');var BPromise=require(_0xc3e9('0x2'));var rs=require(_0xc3e9('0x3'));var fs=require('fs');var Redis=require(_0xc3e9('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xc3e9('0x5'));var logger=require(_0xc3e9('0x6'))(_0xc3e9('0x7'));var config=require('../../config/environment');var jayson=require(_0xc3e9('0x8'));var client=jayson[_0xc3e9('0x9')][_0xc3e9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x316818,_0x147726,_0x4c4a0e){return new BPromise(function(_0x4f7675,_0x4361a4){return client[_0xc3e9('0xb')](_0x316818,_0x4c4a0e)[_0xc3e9('0xc')](function(_0x54c4e9){logger[_0xc3e9('0xd')](_0xc3e9('0xe'),_0x147726,_0xc3e9('0xf'));logger[_0xc3e9('0x10')](_0xc3e9('0x11'),_0x147726,_0xc3e9('0xf'),JSON[_0xc3e9('0x12')](_0x54c4e9));if(_0x54c4e9[_0xc3e9('0x13')]){if(_0x54c4e9[_0xc3e9('0x13')][_0xc3e9('0x14')]===0x1f4){logger[_0xc3e9('0x13')](_0xc3e9('0xe'),_0x147726,_0x54c4e9['error']['message']);return _0x4361a4(_0x54c4e9['error'][_0xc3e9('0x15')]);}logger[_0xc3e9('0x13')](_0xc3e9('0xe'),_0x147726,_0x54c4e9[_0xc3e9('0x13')]['message']);return _0x4f7675(_0x54c4e9[_0xc3e9('0x13')][_0xc3e9('0x15')]);}else{logger['info'](_0xc3e9('0xe'),_0x147726,_0xc3e9('0xf'));_0x4f7675(_0x54c4e9[_0xc3e9('0x16')][_0xc3e9('0x15')]);}})[_0xc3e9('0x17')](function(_0x3312a5){logger['error'](_0xc3e9('0xe'),_0x147726,_0x3312a5);_0x4361a4(_0x3312a5);});});}
\ No newline at end of file
index 5c5dd59..a9c711d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb80e=['/:id/summary','getSummary','create','clone','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','index','get','/:id','show','/:id/sessions','getSessions','/:id/answers','isAuthenticated','getAnswers'];(function(_0x44946b,_0xf874ec){var _0x249bc4=function(_0x40a23e){while(--_0x40a23e){_0x44946b['push'](_0x44946b['shift']());}};_0x249bc4(++_0xf874ec);}(_0xb80e,0xe1));var _0xeb80=function(_0x475dd5,_0x3db81c){_0x475dd5=_0x475dd5-0x0;var _0x249fae=_0xb80e[_0x475dd5];return _0x249fae;};'use strict';var multer=require(_0xeb80('0x0'));var util=require(_0xeb80('0x1'));var path=require(_0xeb80('0x2'));var timeout=require(_0xeb80('0x3'));var express=require('express');var router=express[_0xeb80('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xeb80('0x5'));var interaction=require(_0xeb80('0x6'));var config=require(_0xeb80('0x7'));var controller=require(_0xeb80('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xeb80('0x9')]);router[_0xeb80('0xa')](_0xeb80('0xb'),auth['isAuthenticated'](),controller[_0xeb80('0xc')]);router[_0xeb80('0xa')](_0xeb80('0xd'),auth['isAuthenticated'](),controller[_0xeb80('0xe')]);router[_0xeb80('0xa')](_0xeb80('0xf'),auth[_0xeb80('0x10')](),controller[_0xeb80('0x11')]);router[_0xeb80('0xa')](_0xeb80('0x12'),auth[_0xeb80('0x10')](),timeout('30s'),controller[_0xeb80('0x13')]);router['post']('/',auth[_0xeb80('0x10')](),controller[_0xeb80('0x14')]);router['post']('/:id/clone',auth[_0xeb80('0x10')](),controller[_0xeb80('0x15')]);router[_0xeb80('0x16')](_0xeb80('0xb'),auth[_0xeb80('0x10')](),controller[_0xeb80('0x17')]);router[_0xeb80('0x18')]('/:id',auth[_0xeb80('0x10')](),controller[_0xeb80('0x19')]);module[_0xeb80('0x1a')]=router;
\ No newline at end of file
+var _0xf4d6=['/:id/answers','getAnswers','30s','getSummary','create','post','clone','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','isAuthenticated','/:id','getSessions'];(function(_0x3e75fe,_0x3fbf77){var _0x55bed1=function(_0x53af3c){while(--_0x53af3c){_0x3e75fe['push'](_0x3e75fe['shift']());}};_0x55bed1(++_0x3fbf77);}(_0xf4d6,0x143));var _0x6f4d=function(_0x1802df,_0x2048ea){_0x1802df=_0x1802df-0x0;var _0x382e85=_0xf4d6[_0x1802df];return _0x382e85;};'use strict';var multer=require(_0x6f4d('0x0'));var util=require('util');var path=require(_0x6f4d('0x1'));var timeout=require(_0x6f4d('0x2'));var express=require('express');var router=express[_0x6f4d('0x3')]();var fs_extra=require(_0x6f4d('0x4'));var auth=require(_0x6f4d('0x5'));var interaction=require(_0x6f4d('0x6'));var config=require(_0x6f4d('0x7'));var controller=require(_0x6f4d('0x8'));router[_0x6f4d('0x9')]('/',auth[_0x6f4d('0xa')](),controller['index']);router[_0x6f4d('0x9')](_0x6f4d('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x6f4d('0x9')]('/:id/sessions',auth['isAuthenticated'](),controller[_0x6f4d('0xc')]);router['get'](_0x6f4d('0xd'),auth[_0x6f4d('0xa')](),controller[_0x6f4d('0xe')]);router[_0x6f4d('0x9')]('/:id/summary',auth[_0x6f4d('0xa')](),timeout(_0x6f4d('0xf')),controller[_0x6f4d('0x10')]);router['post']('/',auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x11')]);router[_0x6f4d('0x12')]('/:id/clone',auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x13')]);router['put']('/:id',auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x14')]);router[_0x6f4d('0x15')](_0x6f4d('0xb'),auth[_0x6f4d('0xa')](),controller[_0x6f4d('0x16')]);module[_0x6f4d('0x17')]=router;
\ No newline at end of file
index 91e6151..a44c329 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f23=['STRING','TEXT','setDataValue','stringify','formData','format','getDataValue','description','BOOLEAN','sequelize','util'];(function(_0x1ebc27,_0x15b961){var _0x1d0aeb=function(_0x1de287){while(--_0x1de287){_0x1ebc27['push'](_0x1ebc27['shift']());}};_0x1d0aeb(++_0x15b961);}(_0x7f23,0x169));var _0x37f2=function(_0x3cb859,_0x2cc431){_0x3cb859=_0x3cb859-0x0;var _0x14c001=_0x7f23[_0x3cb859];return _0x14c001;};'use strict';var Sequelize=require(_0x37f2('0x0'));var _=require('lodash');var util=require(_0x37f2('0x1'));module['exports']={'name':{'type':Sequelize[_0x37f2('0x2')],'unique':'name'},'description':{'type':Sequelize[_0x37f2('0x2')]},'formData':{'type':Sequelize[_0x37f2('0x3')]('long'),'set':function(_0x485fd0){if(_['isObjectLike'](_0x485fd0)){this[_0x37f2('0x4')]('formData',JSON[_0x37f2('0x5')](_0x485fd0));}else if(_['isString'](_0x485fd0)){this['setDataValue']('formData',_0x485fd0);}else{this[_0x37f2('0x4')](_0x37f2('0x6'),util[_0x37f2('0x7')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this[_0x37f2('0x8')]('name')||'',this['getDataValue'](_0x37f2('0x9'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x37f2('0xa')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4e47=['long','setDataValue','formData','stringify','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','util','exports','STRING','TEXT'];(function(_0xd8b0ca,_0x1d7dd9){var _0x2dba3c=function(_0x5a2343){while(--_0x5a2343){_0xd8b0ca['push'](_0xd8b0ca['shift']());}};_0x2dba3c(++_0x1d7dd9);}(_0x4e47,0x18f));var _0x74e4=function(_0x43316e,_0x16aef6){_0x43316e=_0x43316e-0x0;var _0x5cbfa8=_0x4e47[_0x43316e];return _0x5cbfa8;};'use strict';var Sequelize=require(_0x74e4('0x0'));var _=require(_0x74e4('0x1'));var util=require(_0x74e4('0x2'));module[_0x74e4('0x3')]={'name':{'type':Sequelize[_0x74e4('0x4')],'unique':'name'},'description':{'type':Sequelize[_0x74e4('0x4')]},'formData':{'type':Sequelize[_0x74e4('0x5')](_0x74e4('0x6')),'set':function(_0x50ba66){if(_['isObjectLike'](_0x50ba66)){this[_0x74e4('0x7')](_0x74e4('0x8'),JSON[_0x74e4('0x9')](_0x50ba66));}else if(_['isString'](_0x50ba66)){this[_0x74e4('0x7')]('formData',_0x50ba66);}else{this[_0x74e4('0x7')](_0x74e4('0x8'),util[_0x74e4('0xa')](_0x74e4('0xb'),this['getDataValue']('name')||'',this[_0x74e4('0xc')](_0x74e4('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x74e4('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x74e4('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 79e2390..d8e6136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9037=['JscriptyProject','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','userProfileId','clone','rawAttributes','omit','createdAt','updatedAt','body','autoAssociation','update','getSessions','JscriptySessionReport','nolimit','ProjectId','getAnswers','findOne','JscriptyAnswerReport','number','apply','toString','indexOf','replace','getSummary','startTime','findAll','-createdAt','questionId','question','format','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','push','isEmpty','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','download','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','Projects','UserProfileResource','sendStatus','error','name','index','map'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9037,0xbf));var _0x7903=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9037[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7903('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7903('0x1'));var rp=require(_0x7903('0x2'));var moment=require(_0x7903('0x3'));var BPromise=require(_0x7903('0x4'));var Mustache=require(_0x7903('0x5'));var util=require(_0x7903('0x6'));var path=require(_0x7903('0x7'));var sox=require(_0x7903('0x8'));var csv=require(_0x7903('0x9'));var ejs=require(_0x7903('0xa'));var fs=require('fs');var fs_extra=require(_0x7903('0xb'));var _=require(_0x7903('0xc'));var squel=require('squel');var crypto=require(_0x7903('0xd'));var jsforce=require(_0x7903('0xe'));var deskjs=require(_0x7903('0xf'));var toCsv=require(_0x7903('0x9'));var querystring=require(_0x7903('0x10'));var Papa=require(_0x7903('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7903('0x12'));var as=require(_0x7903('0x13'));var hardwareService=require(_0x7903('0x14'));var logger=require(_0x7903('0x15'))(_0x7903('0x16'));var utils=require(_0x7903('0x17'));var config=require(_0x7903('0x18'));var licenseUtil=require(_0x7903('0x19'));var db=require(_0x7903('0x1a'))['db'];function respondWithStatusCode(_0x59b5e5,_0x1630ea){_0x1630ea=_0x1630ea||0xcc;return function(_0x367571){if(_0x367571){return _0x59b5e5['sendStatus'](_0x1630ea);}return _0x59b5e5[_0x7903('0x1b')](_0x1630ea)[_0x7903('0x1c')]();};}function respondWithResult(_0x27e32c,_0x4bf254){_0x4bf254=_0x4bf254||0xc8;return function(_0x2b137c){if(_0x2b137c){return _0x27e32c['status'](_0x4bf254)[_0x7903('0x1d')](_0x2b137c);}};}function respondWithFilteredResult(_0x5b995d,_0x32facd){return function(_0x2d4228){if(_0x2d4228){var _0xee9dfb=typeof _0x32facd[_0x7903('0x1e')]===_0x7903('0x1f')&&typeof _0x32facd[_0x7903('0x20')]===_0x7903('0x1f');var _0x33f748=_0x2d4228[_0x7903('0x21')];var _0xf47c47=_0xee9dfb?0x0:_0x32facd[_0x7903('0x1e')];var _0x45fd67=_0xee9dfb?_0x2d4228[_0x7903('0x21')]:_0x32facd[_0x7903('0x1e')]+_0x32facd[_0x7903('0x20')];var _0x57a5f0;if(_0x45fd67>=_0x33f748){_0x45fd67=_0x33f748;_0x57a5f0=0xc8;}else{_0x57a5f0=0xce;}_0x5b995d[_0x7903('0x1b')](_0x57a5f0);return _0x5b995d[_0x7903('0x22')](_0x7903('0x23'),_0xf47c47+'-'+_0x45fd67+'/'+_0x33f748)[_0x7903('0x1d')](_0x2d4228);}return null;};}function patchUpdates(_0x1a51e7){return function(_0x203bd9){try{jsonpatch['apply'](_0x203bd9,_0x1a51e7,!![]);}catch(_0x4a1de5){return BPromise[_0x7903('0x24')](_0x4a1de5);}return _0x203bd9[_0x7903('0x25')]();};}function saveUpdates(_0x3d8e57,_0xd3b3b6){return function(_0x5f005e){if(_0x5f005e){return _0x5f005e['update'](_0x3d8e57)[_0x7903('0x26')](function(_0x5ab611){return _0x5ab611;});}return null;};}function removeEntity(_0x4d30bd,_0x240d63){return function(_0x3cb7ce){if(_0x3cb7ce){return _0x3cb7ce[_0x7903('0x27')]()[_0x7903('0x26')](function(){var _0x35f3b4=_0x3cb7ce['get']({'plain':!![]});var _0x3b732d=_0x7903('0x28');return db[_0x7903('0x29')][_0x7903('0x27')]({'where':{'type':_0x3b732d,'resourceId':_0x35f3b4['id']}})['then'](function(){return _0x3cb7ce;});})['then'](function(){_0x4d30bd[_0x7903('0x1b')](0xcc)[_0x7903('0x1c')]();});}};}function handleEntityNotFound(_0x183689,_0x2072f8){return function(_0xb64413){if(!_0xb64413){_0x183689[_0x7903('0x2a')](0x194);}return _0xb64413;};}function handleError(_0x3b58e3,_0x1337df){_0x1337df=_0x1337df||0x1f4;return function(_0x54a20a){logger[_0x7903('0x2b')](_0x54a20a['stack']);if(_0x54a20a[_0x7903('0x2c')]){delete _0x54a20a[_0x7903('0x2c')];}_0x3b58e3[_0x7903('0x1b')](_0x1337df)['send'](_0x54a20a);};}exports[_0x7903('0x2d')]=function(_0xefbe42,_0x12de68){var _0x44506e={},_0x496c42={},_0x5a84ae={'count':0x0,'rows':[]};var _0x3e0888=_[_0x7903('0x2e')](db[_0x7903('0x2f')]['rawAttributes'],function(_0x2bc43f){return{'name':_0x2bc43f['fieldName'],'type':_0x2bc43f[_0x7903('0x30')][_0x7903('0x31')]};});_0x496c42[_0x7903('0x32')]=_[_0x7903('0x2e')](_0x3e0888,_0x7903('0x2c'));_0x496c42[_0x7903('0x33')]=_[_0x7903('0x34')](_0xefbe42[_0x7903('0x33')]);_0x496c42['filters']=_[_0x7903('0x35')](_0x496c42[_0x7903('0x32')],_0x496c42[_0x7903('0x33')]);_0x44506e[_0x7903('0x36')]=_[_0x7903('0x35')](_0x496c42[_0x7903('0x32')],qs[_0x7903('0x37')](_0xefbe42[_0x7903('0x33')][_0x7903('0x37')]));_0x44506e[_0x7903('0x36')]=_0x44506e['attributes'][_0x7903('0x38')]?_0x44506e['attributes']:_0x496c42['model'];if(!_0xefbe42['query'][_0x7903('0x39')]('nolimit')){_0x44506e[_0x7903('0x20')]=qs[_0x7903('0x20')](_0xefbe42[_0x7903('0x33')][_0x7903('0x20')]);_0x44506e[_0x7903('0x1e')]=qs[_0x7903('0x1e')](_0xefbe42[_0x7903('0x33')][_0x7903('0x1e')]);}_0x44506e[_0x7903('0x3a')]=qs[_0x7903('0x3b')](_0xefbe42[_0x7903('0x33')][_0x7903('0x3b')]);_0x44506e[_0x7903('0x3c')]=qs[_0x7903('0x3d')](_[_0x7903('0x3e')](_0xefbe42[_0x7903('0x33')],_0x496c42[_0x7903('0x3d')]),_0x3e0888);if(_0xefbe42['query'][_0x7903('0x3f')]){_0x44506e['where']=_[_0x7903('0x40')](_0x44506e[_0x7903('0x3c')],{'$or':_[_0x7903('0x2e')](_0x3e0888,function(_0xfe3564){if(_0xfe3564[_0x7903('0x30')]!==_0x7903('0x41')){var _0x421d9d={};_0x421d9d[_0xfe3564[_0x7903('0x2c')]]={'$like':'%'+_0xefbe42['query'][_0x7903('0x3f')]+'%'};return _0x421d9d;}})});}_0x44506e=_['merge']({},_0x44506e,_0xefbe42[_0x7903('0x42')]);var _0x2c2084={'where':_0x44506e[_0x7903('0x3c')]};return db[_0x7903('0x2f')][_0x7903('0x21')](_0x2c2084)['then'](function(_0x3cfa5d){_0x5a84ae[_0x7903('0x21')]=_0x3cfa5d;if(_0xefbe42[_0x7903('0x33')][_0x7903('0x43')]){_0x44506e[_0x7903('0x44')]=[{'all':!![]}];}return db[_0x7903('0x2f')]['findAll'](_0x44506e);})[_0x7903('0x26')](function(_0x4dd5ce){_0x5a84ae[_0x7903('0x45')]=_0x4dd5ce;return _0x5a84ae;})['then'](respondWithFilteredResult(_0x12de68,_0x44506e))[_0x7903('0x46')](handleError(_0x12de68,null));};exports[_0x7903('0x47')]=function(_0x456eac,_0x14f0cd){var _0x4620bb={'raw':![],'where':{'id':_0x456eac[_0x7903('0x48')]['id']}},_0xac2d6d={};_0xac2d6d[_0x7903('0x32')]=_[_0x7903('0x34')](db['JscriptyProject']['rawAttributes']);_0xac2d6d[_0x7903('0x33')]=_[_0x7903('0x34')](_0x456eac[_0x7903('0x33')]);_0xac2d6d['filters']=_['intersection'](_0xac2d6d[_0x7903('0x32')],_0xac2d6d[_0x7903('0x33')]);_0x4620bb['attributes']=_[_0x7903('0x35')](_0xac2d6d['model'],qs[_0x7903('0x37')](_0x456eac[_0x7903('0x33')][_0x7903('0x37')]));_0x4620bb['attributes']=_0x4620bb['attributes'][_0x7903('0x38')]?_0x4620bb['attributes']:_0xac2d6d[_0x7903('0x32')];if(_0x456eac['query']['includeAll']){_0x4620bb['include']=[{'all':!![]}];}_0x4620bb=_[_0x7903('0x40')]({},_0x4620bb,_0x456eac[_0x7903('0x42')]);return db[_0x7903('0x2f')][_0x7903('0x49')](_0x4620bb)[_0x7903('0x26')](handleEntityNotFound(_0x14f0cd,null))[_0x7903('0x26')](respondWithResult(_0x14f0cd,null))[_0x7903('0x46')](handleError(_0x14f0cd,null));};exports[_0x7903('0x4a')]=function(_0x1f5213,_0x1b8bc0){return db[_0x7903('0x2f')][_0x7903('0x4a')](_0x1f5213['body'],{})['then'](function(_0x36568d){var _0x24eeae=_0x1f5213['user']['get']({'plain':!![]});if(!_0x24eeae)throw new Error(_0x7903('0x4b'));if(_0x24eeae[_0x7903('0x4c')]===_0x7903('0x4d')){var _0x1fa0c5=_0x36568d[_0x7903('0x4e')]({'plain':!![]});var _0x23cda0=_0x7903('0x28');return db[_0x7903('0x4f')][_0x7903('0x49')]({'where':{'name':_0x23cda0,'userProfileId':_0x24eeae[_0x7903('0x50')]},'raw':!![]})['then'](function(_0x5c71b0){if(_0x5c71b0&&_0x5c71b0['autoAssociation']===0x0){return db[_0x7903('0x29')][_0x7903('0x4a')]({'name':_0x1fa0c5['name'],'resourceId':_0x1fa0c5['id'],'type':_0x5c71b0['name'],'sectionId':_0x5c71b0['id']},{})['then'](function(){return _0x36568d;});}else{return _0x36568d;}})[_0x7903('0x46')](function(_0x455508){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x455508);throw _0x455508;});}return _0x36568d;})[_0x7903('0x26')](respondWithResult(_0x1b8bc0,0xc9))['catch'](handleError(_0x1b8bc0,null));};exports[_0x7903('0x51')]=function(_0x1d0040,_0x59b9dd){var _0x3106c4={'where':{'id':_0x1d0040[_0x7903('0x48')]['id']}},_0x158452={};_0x158452[_0x7903('0x32')]=_[_0x7903('0x34')](db[_0x7903('0x2f')][_0x7903('0x52')]);_0x3106c4[_0x7903('0x36')]=_[_0x7903('0x35')](_0x158452[_0x7903('0x32')],qs['fields'](_0x1d0040[_0x7903('0x33')][_0x7903('0x37')]));_0x3106c4[_0x7903('0x36')]=_0x3106c4[_0x7903('0x36')][_0x7903('0x38')]?_0x3106c4[_0x7903('0x36')]:_0x158452[_0x7903('0x32')];if(_0x1d0040[_0x7903('0x33')][_0x7903('0x43')]){_0x3106c4['include']=[{'all':!![]}];}_0x3106c4=_['merge']({},_0x3106c4,_0x1d0040[_0x7903('0x42')]);return db[_0x7903('0x2f')][_0x7903('0x49')](_0x3106c4)['then'](handleEntityNotFound(_0x59b9dd,null))[_0x7903('0x26')](function(_0x364c31){if(_0x364c31){var _0x2e2177=_0x364c31[_0x7903('0x4e')]({'plain':!![]});_0x2e2177=qs[_0x7903('0x53')](_0x2e2177,['id',_0x7903('0x54'),_0x7903('0x55')]);_0x1d0040[_0x7903('0x56')]=_[_0x7903('0x53')](_0x1d0040[_0x7903('0x56')],['id','createdAt','updatedAt']);return db[_0x7903('0x2f')][_0x7903('0x4a')](_[_0x7903('0x40')](_0x2e2177,_0x1d0040[_0x7903('0x56')]),{'include':_0x1d0040[_0x7903('0x33')]['includeAll']?[{'all':!![]}]:undefined})[_0x7903('0x26')](function(_0x4fae17){var _0x3fb539=_0x1d0040[_0x7903('0x4d')][_0x7903('0x4e')]({'plain':!![]});if(!_0x3fb539)throw new Error(_0x7903('0x4b'));if(_0x3fb539['role']==='user'){var _0x5080cc=_0x4fae17['get']({'plain':!![]});var _0x22746c=_0x7903('0x28');return db[_0x7903('0x4f')][_0x7903('0x49')]({'where':{'name':_0x22746c,'userProfileId':_0x3fb539[_0x7903('0x50')]},'raw':!![]})[_0x7903('0x26')](function(_0x5192ac){if(_0x5192ac&&_0x5192ac[_0x7903('0x57')]===0x0){return db[_0x7903('0x29')][_0x7903('0x4a')]({'name':_0x5080cc[_0x7903('0x2c')],'resourceId':_0x5080cc['id'],'type':_0x5192ac[_0x7903('0x2c')],'sectionId':_0x5192ac['id']},{})[_0x7903('0x26')](function(){return _0x4fae17;});}else{return _0x4fae17;}})[_0x7903('0x46')](function(_0x57725c){logger[_0x7903('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x57725c);throw _0x57725c;});}return _0x4fae17;});}})['then'](respondWithResult(_0x59b9dd,0xc9))[_0x7903('0x46')](handleError(_0x59b9dd,null));};exports[_0x7903('0x58')]=function(_0x1a5dbd,_0x5d1531){if(_0x1a5dbd[_0x7903('0x56')]['id']){delete _0x1a5dbd['body']['id'];}return db[_0x7903('0x2f')][_0x7903('0x49')]({'where':{'id':_0x1a5dbd['params']['id']}})[_0x7903('0x26')](handleEntityNotFound(_0x5d1531,null))[_0x7903('0x26')](saveUpdates(_0x1a5dbd[_0x7903('0x56')],null))[_0x7903('0x26')](respondWithResult(_0x5d1531,null))[_0x7903('0x46')](handleError(_0x5d1531,null));};exports[_0x7903('0x27')]=function(_0x261ce2,_0x3d4354){return db[_0x7903('0x2f')][_0x7903('0x49')]({'where':{'id':_0x261ce2[_0x7903('0x48')]['id']}})['then'](handleEntityNotFound(_0x3d4354,null))['then'](removeEntity(_0x3d4354,null))[_0x7903('0x46')](handleError(_0x3d4354,null));};exports[_0x7903('0x59')]=function(_0x38eaf5,_0x3445be,_0x219bf0){var _0x39550b={'raw':!![],'where':{}};var _0x433101={};var _0x538a56={'count':0x0,'rows':[]};return db[_0x7903('0x2f')]['findOne']({'where':{'id':_0x38eaf5[_0x7903('0x48')]['id']}})[_0x7903('0x26')](handleEntityNotFound(_0x3445be,null))[_0x7903('0x26')](function(_0x555b24){if(_0x555b24){_0x433101['model']=_['keys'](db[_0x7903('0x5a')][_0x7903('0x52')]);_0x433101[_0x7903('0x33')]=_[_0x7903('0x34')](_0x38eaf5[_0x7903('0x33')]);_0x433101[_0x7903('0x3d')]=_[_0x7903('0x35')](_0x433101[_0x7903('0x32')],_0x433101[_0x7903('0x33')]);_0x39550b['attributes']=_[_0x7903('0x35')](_0x433101['model'],qs[_0x7903('0x37')](_0x38eaf5[_0x7903('0x33')]['fields']));_0x39550b['attributes']=_0x39550b[_0x7903('0x36')][_0x7903('0x38')]?_0x39550b['attributes']:_0x433101['model'];if(!_0x38eaf5[_0x7903('0x33')]['hasOwnProperty'](_0x7903('0x5b'))){_0x39550b[_0x7903('0x20')]=qs['limit'](_0x38eaf5['query'][_0x7903('0x20')]);_0x39550b[_0x7903('0x1e')]=qs[_0x7903('0x1e')](_0x38eaf5[_0x7903('0x33')]['offset']);}_0x39550b['order']=qs[_0x7903('0x3b')](_0x38eaf5[_0x7903('0x33')][_0x7903('0x3b')]);_0x39550b[_0x7903('0x3c')]=qs[_0x7903('0x3d')](_[_0x7903('0x3e')](_0x38eaf5[_0x7903('0x33')],_0x433101[_0x7903('0x3d')]));_0x39550b[_0x7903('0x3c')][_0x7903('0x5c')]=_0x555b24['id'];if(_0x38eaf5['query'][_0x7903('0x3f')]){_0x39550b[_0x7903('0x3c')]=_[_0x7903('0x40')](_0x39550b['where'],{'$or':_[_0x7903('0x2e')](_0x39550b['attributes'],function(_0x5f0f93){var _0x26ebd2={};_0x26ebd2[_0x5f0f93]={'$like':'%'+_0x38eaf5['query'][_0x7903('0x3f')]+'%'};return _0x26ebd2;})});}_0x39550b=_[_0x7903('0x40')]({},_0x39550b,_0x38eaf5[_0x7903('0x42')]);return db[_0x7903('0x5a')][_0x7903('0x21')]({'where':_0x39550b['where']})[_0x7903('0x26')](function(_0x53ede6){_0x538a56['count']=_0x53ede6;if(_0x38eaf5[_0x7903('0x33')][_0x7903('0x43')]){_0x39550b[_0x7903('0x44')]=[{'all':!![]}];}return db[_0x7903('0x5a')]['findAll'](_0x39550b);})[_0x7903('0x26')](function(_0x36e4ff){_0x538a56[_0x7903('0x45')]=_0x36e4ff;return _0x538a56;});}})['then'](respondWithFilteredResult(_0x3445be,_0x39550b))['catch'](handleError(_0x3445be,null));};exports[_0x7903('0x5d')]=function(_0x353939,_0x42e888,_0x32d92d){var _0x3c820b={'raw':!![],'where':{}};var _0x1608e9={};var _0x40c8b2={'count':0x0,'rows':[]};return db[_0x7903('0x2f')][_0x7903('0x5e')]({'where':{'id':_0x353939[_0x7903('0x48')]['id']}})[_0x7903('0x26')](handleEntityNotFound(_0x42e888,null))[_0x7903('0x26')](function(_0x2f3772){if(_0x2f3772){_0x1608e9[_0x7903('0x32')]=_[_0x7903('0x34')](db['JscriptyAnswerReport']['rawAttributes']);_0x1608e9[_0x7903('0x33')]=_[_0x7903('0x34')](_0x353939[_0x7903('0x33')]);_0x1608e9[_0x7903('0x3d')]=_[_0x7903('0x35')](_0x1608e9[_0x7903('0x32')],_0x1608e9[_0x7903('0x33')]);_0x3c820b['attributes']=_['intersection'](_0x1608e9['model'],qs[_0x7903('0x37')](_0x353939['query'][_0x7903('0x37')]));_0x3c820b[_0x7903('0x36')]=_0x3c820b['attributes'][_0x7903('0x38')]?_0x3c820b[_0x7903('0x36')]:_0x1608e9[_0x7903('0x32')];if(!_0x353939[_0x7903('0x33')][_0x7903('0x39')](_0x7903('0x5b'))){_0x3c820b[_0x7903('0x20')]=qs['limit'](_0x353939[_0x7903('0x33')][_0x7903('0x20')]);_0x3c820b[_0x7903('0x1e')]=qs['offset'](_0x353939[_0x7903('0x33')][_0x7903('0x1e')]);}_0x3c820b['order']=qs[_0x7903('0x3b')](_0x353939[_0x7903('0x33')][_0x7903('0x3b')]);_0x3c820b[_0x7903('0x3c')]=qs[_0x7903('0x3d')](_['pick'](_0x353939['query'],_0x1608e9[_0x7903('0x3d')]));_0x3c820b[_0x7903('0x3c')]['ProjectId']=_0x2f3772['id'];if(_0x353939[_0x7903('0x33')][_0x7903('0x3f')]){_0x3c820b[_0x7903('0x3c')]=_[_0x7903('0x40')](_0x3c820b['where'],{'$or':_[_0x7903('0x2e')](_0x3c820b[_0x7903('0x36')],function(_0x6f9a12){var _0x248f91={};_0x248f91[_0x6f9a12]={'$like':'%'+_0x353939['query'][_0x7903('0x3f')]+'%'};return _0x248f91;})});}_0x3c820b=_[_0x7903('0x40')]({},_0x3c820b,_0x353939[_0x7903('0x42')]);return db[_0x7903('0x5f')]['count']({'where':_0x3c820b[_0x7903('0x3c')]})[_0x7903('0x26')](function(_0x2260c1){_0x40c8b2[_0x7903('0x21')]=_0x2260c1;if(_0x353939[_0x7903('0x33')][_0x7903('0x43')]){_0x3c820b['include']=[{'all':!![]}];}return db[_0x7903('0x5f')]['findAll'](_0x3c820b);})[_0x7903('0x26')](function(_0x5aa439){_0x40c8b2[_0x7903('0x45')]=_0x5aa439;return _0x40c8b2;});}})['then'](respondWithFilteredResult(_0x42e888,_0x3c820b))['catch'](handleError(_0x42e888,null));};function char(_0x1f5a24){return _0x7903('0x60')===typeof _0x1f5a24?String['fromCharCode'][_0x7903('0x61')](null,arguments):_0x1f5a24;}function needsEncapsulation(_0x48603f){return!!_0x48603f&&(_0x48603f[_0x7903('0x62')]()[_0x7903('0x63')](char(0xd))>=0x0||_0x48603f[_0x7903('0x62')]()[_0x7903('0x63')](char(0xa))>=0x0||_0x48603f[_0x7903('0x62')]()[_0x7903('0x63')](char(0x2c))>=0x0||_0x48603f[_0x7903('0x62')]()[_0x7903('0x63')](char(0x22))>=0x0);}function encapsulate(_0x1c516e){var _0x239835=char(0x22),_0x5dcbb1='\x5c'+char(0x22),_0x357580=_0x1c516e[_0x7903('0x62')]()[_0x7903('0x64')](new RegExp(_0x239835,'g'),_0x5dcbb1);return _0x239835+_0x357580+_0x239835;}exports[_0x7903('0x65')]=function(_0x5a7c05,_0x2e413a,_0x42ecb1){var _0x519029,_0x151413;var _0xf8c64b={'where':{'ProjectId':_0x5a7c05['params']['id']}};if(_0x5a7c05[_0x7903('0x33')][_0x7903('0x66')]){_0xf8c64b[_0x7903('0x3c')]['starttime']=JSON['parse'](_0x5a7c05[_0x7903('0x33')]['startTime']);}return db[_0x7903('0x5a')]['findAll'](_0xf8c64b)[_0x7903('0x26')](handleEntityNotFound(_0x2e413a,null))[_0x7903('0x26')](function(_0x4931f9){if(_0x4931f9){_0x519029=_0x4931f9;return db['JscriptyQuestionReport'][_0x7903('0x67')]({'where':{'SessionId':{'$in':_[_0x7903('0x2e')](_0x519029,'id')},'ProjectId':_0x5a7c05['params']['id']},'order':_0x7903('0x68')});}})[_0x7903('0x26')](handleEntityNotFound(_0x2e413a,null))[_0x7903('0x26')](function(_0x2b5d4b){if(_0x2b5d4b){_0x151413=_0x2b5d4b;var _0x20c617={};for(var _0x45c306=0x0,_0x118be1=_0x151413[_0x7903('0x38')];_0x45c306<_0x118be1;_0x45c306++){if(!_0x20c617[_0x7903('0x39')](_0x151413[_0x45c306][_0x7903('0x69')])){_0x20c617[_0x151413[_0x45c306][_0x7903('0x69')]]=needsEncapsulation(_0x151413[_0x45c306][_0x7903('0x6a')])?encapsulate(_0x151413[_0x45c306]['question']):_0x151413[_0x45c306][_0x7903('0x6a')];}}var _0x2957ae=[],_0x52997e={};for(var _0x89dc98=0x0,_0x43265c=_0x519029[_0x7903('0x38')];_0x89dc98<_0x43265c;_0x89dc98++){_0x52997e={'ProjectId':_0x5a7c05[_0x7903('0x48')]['id'],'SessionId':_0x519029[_0x89dc98]['id'],'StartTime':moment(_0x519029[_0x89dc98]['starttime'])[_0x7903('0x6b')](_0x7903('0x6c'))};for(var _0xaa8b30=0x0,_0x47294f=_0x151413['length'];_0xaa8b30<_0x47294f;_0xaa8b30++){if(_0x151413[_0xaa8b30][_0x7903('0x6d')]==_0x519029[_0x89dc98]['id']&&_0x20c617['hasOwnProperty'](_0x151413[_0xaa8b30][_0x7903('0x69')])){_0x52997e[_0x20c617[_0x151413[_0xaa8b30][_0x7903('0x69')]]]=_0x151413[_0xaa8b30][_0x7903('0x6e')];}}for(var _0x262499 in _0x20c617){if(!_0x52997e['hasOwnProperty'](_0x20c617[_0x262499])){_0x52997e[_0x20c617[_0x262499]]=null;}}_0x2957ae[_0x7903('0x6f')](_0x52997e);}return _0x2957ae;}})['then'](function(_0x57dc23){if(!_[_0x7903('0x70')](_0x57dc23)){var _0x359988=toCsv(_0x57dc23);var _0xe94339=Date['now']();fs['writeFileSync'](util['format'](_0x7903('0x71'),_0x5a7c05[_0x7903('0x48')]['id'],_0xe94339),_0x359988);_0x2e413a[_0x7903('0x72')]('Content-disposition','attachment;\x20filename='+util[_0x7903('0x6b')](_0x7903('0x73'),_0x5a7c05[_0x7903('0x48')]['id'],_0xe94339));_0x2e413a['setHeader'](_0x7903('0x74'),_0x7903('0x75'));return _0x2e413a[_0x7903('0x76')](util[_0x7903('0x6b')](_0x7903('0x71'),_0x5a7c05[_0x7903('0x48')]['id'],_0xe94339));}else{return _0x2e413a[_0x7903('0x2a')](0xcc);}})[_0x7903('0x46')](handleError(_0x2e413a,null));};
\ No newline at end of file
+var _0x4dfd=['../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','UserProfileResource','stack','name','send','map','JscriptyProject','rawAttributes','fieldName','key','model','keys','filters','query','attributes','fields','hasOwnProperty','nolimit','where','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','intersection','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Projects','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','length','omit','updatedAt','userProfileId','error','update','params','getSessions','findOne','JscriptySessionReport','order','sort','pick','ProjectId','findAll','JscriptyAnswerReport','number','toString','indexOf','replace','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','YYYY-MM-DD\x20HH:mm:ss','answer','push','isEmpty','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','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/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util'];(function(_0x30ebbd,_0x3f51d8){var _0xc3b968=function(_0x562357){while(--_0x562357){_0x30ebbd['push'](_0x30ebbd['shift']());}};_0xc3b968(++_0x3f51d8);}(_0x4dfd,0x148));var _0xd4df=function(_0x4c1834,_0x210f70){_0x4c1834=_0x4c1834-0x0;var _0x38c043=_0x4dfd[_0x4c1834];return _0x38c043;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd4df('0x0'));var jsonpatch=require(_0xd4df('0x1'));var rp=require(_0xd4df('0x2'));var moment=require(_0xd4df('0x3'));var BPromise=require(_0xd4df('0x4'));var Mustache=require(_0xd4df('0x5'));var util=require(_0xd4df('0x6'));var path=require(_0xd4df('0x7'));var sox=require(_0xd4df('0x8'));var csv=require(_0xd4df('0x9'));var ejs=require(_0xd4df('0xa'));var fs=require('fs');var fs_extra=require(_0xd4df('0xb'));var _=require('lodash');var squel=require(_0xd4df('0xc'));var crypto=require(_0xd4df('0xd'));var jsforce=require(_0xd4df('0xe'));var deskjs=require(_0xd4df('0xf'));var toCsv=require(_0xd4df('0x9'));var querystring=require(_0xd4df('0x10'));var Papa=require(_0xd4df('0x11'));var Redis=require('ioredis');var authService=require(_0xd4df('0x12'));var qs=require(_0xd4df('0x13'));var as=require(_0xd4df('0x14'));var hardwareService=require(_0xd4df('0x15'));var logger=require(_0xd4df('0x16'))(_0xd4df('0x17'));var utils=require('../../config/utils');var config=require(_0xd4df('0x18'));var licenseUtil=require(_0xd4df('0x19'));var db=require(_0xd4df('0x1a'))['db'];function respondWithStatusCode(_0x2f7d9e,_0x295be4){_0x295be4=_0x295be4||0xcc;return function(_0x30009b){if(_0x30009b){return _0x2f7d9e[_0xd4df('0x1b')](_0x295be4);}return _0x2f7d9e[_0xd4df('0x1c')](_0x295be4)[_0xd4df('0x1d')]();};}function respondWithResult(_0x531aea,_0x433771){_0x433771=_0x433771||0xc8;return function(_0x4e2d80){if(_0x4e2d80){return _0x531aea[_0xd4df('0x1c')](_0x433771)[_0xd4df('0x1e')](_0x4e2d80);}};}function respondWithFilteredResult(_0x2f88de,_0x2e9a83){return function(_0x32daa5){if(_0x32daa5){var _0x15db6d=typeof _0x2e9a83[_0xd4df('0x1f')]===_0xd4df('0x20')&&typeof _0x2e9a83[_0xd4df('0x21')]==='undefined';var _0xa40996=_0x32daa5[_0xd4df('0x22')];var _0x34b0b9=_0x15db6d?0x0:_0x2e9a83[_0xd4df('0x1f')];var _0x9b4ad4=_0x15db6d?_0x32daa5['count']:_0x2e9a83[_0xd4df('0x1f')]+_0x2e9a83[_0xd4df('0x21')];var _0x30edf7;if(_0x9b4ad4>=_0xa40996){_0x9b4ad4=_0xa40996;_0x30edf7=0xc8;}else{_0x30edf7=0xce;}_0x2f88de['status'](_0x30edf7);return _0x2f88de[_0xd4df('0x23')]('Content-Range',_0x34b0b9+'-'+_0x9b4ad4+'/'+_0xa40996)[_0xd4df('0x1e')](_0x32daa5);}return null;};}function patchUpdates(_0x949bd4){return function(_0x2f3f51){try{jsonpatch[_0xd4df('0x24')](_0x2f3f51,_0x949bd4,!![]);}catch(_0x44df46){return BPromise[_0xd4df('0x25')](_0x44df46);}return _0x2f3f51[_0xd4df('0x26')]();};}function saveUpdates(_0x58e2dd,_0x4daa75){return function(_0x544648){if(_0x544648){return _0x544648['update'](_0x58e2dd)[_0xd4df('0x27')](function(_0x3ec72d){return _0x3ec72d;});}return null;};}function removeEntity(_0x22b3a2,_0x3898af){return function(_0xdff551){if(_0xdff551){return _0xdff551[_0xd4df('0x28')]()[_0xd4df('0x27')](function(){var _0x31c7c7=_0xdff551['get']({'plain':!![]});var _0x5030dc='Projects';return db[_0xd4df('0x29')]['destroy']({'where':{'type':_0x5030dc,'resourceId':_0x31c7c7['id']}})[_0xd4df('0x27')](function(){return _0xdff551;});})[_0xd4df('0x27')](function(){_0x22b3a2[_0xd4df('0x1c')](0xcc)[_0xd4df('0x1d')]();});}};}function handleEntityNotFound(_0x1b418d,_0x768b50){return function(_0x2bb17a){if(!_0x2bb17a){_0x1b418d[_0xd4df('0x1b')](0x194);}return _0x2bb17a;};}function handleError(_0x131f99,_0x2d2e1a){_0x2d2e1a=_0x2d2e1a||0x1f4;return function(_0x3db2ba){logger['error'](_0x3db2ba[_0xd4df('0x2a')]);if(_0x3db2ba[_0xd4df('0x2b')]){delete _0x3db2ba[_0xd4df('0x2b')];}_0x131f99['status'](_0x2d2e1a)[_0xd4df('0x2c')](_0x3db2ba);};}exports['index']=function(_0x331c33,_0x110d42){var _0x5c9acc={},_0x2f6dbd={},_0x56e265={'count':0x0,'rows':[]};var _0x52a5f8=_[_0xd4df('0x2d')](db[_0xd4df('0x2e')][_0xd4df('0x2f')],function(_0x56b812){return{'name':_0x56b812[_0xd4df('0x30')],'type':_0x56b812['type'][_0xd4df('0x31')]};});_0x2f6dbd[_0xd4df('0x32')]=_['map'](_0x52a5f8,_0xd4df('0x2b'));_0x2f6dbd['query']=_[_0xd4df('0x33')](_0x331c33['query']);_0x2f6dbd[_0xd4df('0x34')]=_['intersection'](_0x2f6dbd['model'],_0x2f6dbd[_0xd4df('0x35')]);_0x5c9acc[_0xd4df('0x36')]=_['intersection'](_0x2f6dbd[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x331c33[_0xd4df('0x35')][_0xd4df('0x37')]));_0x5c9acc[_0xd4df('0x36')]=_0x5c9acc['attributes']['length']?_0x5c9acc[_0xd4df('0x36')]:_0x2f6dbd[_0xd4df('0x32')];if(!_0x331c33[_0xd4df('0x35')][_0xd4df('0x38')](_0xd4df('0x39'))){_0x5c9acc[_0xd4df('0x21')]=qs[_0xd4df('0x21')](_0x331c33['query'][_0xd4df('0x21')]);_0x5c9acc['offset']=qs['offset'](_0x331c33['query'][_0xd4df('0x1f')]);}_0x5c9acc['order']=qs['sort'](_0x331c33['query']['sort']);_0x5c9acc[_0xd4df('0x3a')]=qs[_0xd4df('0x34')](_['pick'](_0x331c33[_0xd4df('0x35')],_0x2f6dbd[_0xd4df('0x34')]),_0x52a5f8);if(_0x331c33['query'][_0xd4df('0x3b')]){_0x5c9acc[_0xd4df('0x3a')]=_[_0xd4df('0x3c')](_0x5c9acc['where'],{'$or':_[_0xd4df('0x2d')](_0x52a5f8,function(_0x566621){if(_0x566621[_0xd4df('0x3d')]!==_0xd4df('0x3e')){var _0x1f2a4e={};_0x1f2a4e[_0x566621[_0xd4df('0x2b')]]={'$like':'%'+_0x331c33[_0xd4df('0x35')]['filter']+'%'};return _0x1f2a4e;}})});}_0x5c9acc=_[_0xd4df('0x3c')]({},_0x5c9acc,_0x331c33[_0xd4df('0x3f')]);var _0x2b869c={'where':_0x5c9acc['where']};return db[_0xd4df('0x2e')][_0xd4df('0x22')](_0x2b869c)[_0xd4df('0x27')](function(_0x2caaf5){_0x56e265[_0xd4df('0x22')]=_0x2caaf5;if(_0x331c33[_0xd4df('0x35')][_0xd4df('0x40')]){_0x5c9acc[_0xd4df('0x41')]=[{'all':!![]}];}return db[_0xd4df('0x2e')]['findAll'](_0x5c9acc);})['then'](function(_0x3921ca){_0x56e265[_0xd4df('0x42')]=_0x3921ca;return _0x56e265;})[_0xd4df('0x27')](respondWithFilteredResult(_0x110d42,_0x5c9acc))[_0xd4df('0x43')](handleError(_0x110d42,null));};exports[_0xd4df('0x44')]=function(_0x3b5329,_0x4b9f72){var _0x1ac5d5={'raw':![],'where':{'id':_0x3b5329['params']['id']}},_0x4013ff={};_0x4013ff[_0xd4df('0x32')]=_[_0xd4df('0x33')](db[_0xd4df('0x2e')][_0xd4df('0x2f')]);_0x4013ff[_0xd4df('0x35')]=_[_0xd4df('0x33')](_0x3b5329[_0xd4df('0x35')]);_0x4013ff['filters']=_[_0xd4df('0x45')](_0x4013ff[_0xd4df('0x32')],_0x4013ff[_0xd4df('0x35')]);_0x1ac5d5[_0xd4df('0x36')]=_[_0xd4df('0x45')](_0x4013ff[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x3b5329[_0xd4df('0x35')]['fields']));_0x1ac5d5[_0xd4df('0x36')]=_0x1ac5d5[_0xd4df('0x36')]['length']?_0x1ac5d5[_0xd4df('0x36')]:_0x4013ff[_0xd4df('0x32')];if(_0x3b5329[_0xd4df('0x35')][_0xd4df('0x40')]){_0x1ac5d5[_0xd4df('0x41')]=[{'all':!![]}];}_0x1ac5d5=_[_0xd4df('0x3c')]({},_0x1ac5d5,_0x3b5329['options']);return db[_0xd4df('0x2e')]['find'](_0x1ac5d5)[_0xd4df('0x27')](handleEntityNotFound(_0x4b9f72,null))[_0xd4df('0x27')](respondWithResult(_0x4b9f72,null))[_0xd4df('0x43')](handleError(_0x4b9f72,null));};exports[_0xd4df('0x46')]=function(_0x4b716b,_0x181659){return db[_0xd4df('0x2e')][_0xd4df('0x46')](_0x4b716b[_0xd4df('0x47')],{})[_0xd4df('0x27')](function(_0x248f2d){var _0x308120=_0x4b716b[_0xd4df('0x48')]['get']({'plain':!![]});if(!_0x308120)throw new Error(_0xd4df('0x49'));if(_0x308120[_0xd4df('0x4a')]===_0xd4df('0x48')){var _0x257da8=_0x248f2d[_0xd4df('0x4b')]({'plain':!![]});var _0x153bf8=_0xd4df('0x4c');return db['UserProfileSection'][_0xd4df('0x4d')]({'where':{'name':_0x153bf8,'userProfileId':_0x308120['userProfileId']},'raw':!![]})[_0xd4df('0x27')](function(_0x2d9624){if(_0x2d9624&&_0x2d9624[_0xd4df('0x4e')]===0x0){return db[_0xd4df('0x29')][_0xd4df('0x46')]({'name':_0x257da8[_0xd4df('0x2b')],'resourceId':_0x257da8['id'],'type':_0x2d9624['name'],'sectionId':_0x2d9624['id']},{})[_0xd4df('0x27')](function(){return _0x248f2d;});}else{return _0x248f2d;}})[_0xd4df('0x43')](function(_0x387b88){logger['error'](_0xd4df('0x4f'),_0x387b88);throw _0x387b88;});}return _0x248f2d;})['then'](respondWithResult(_0x181659,0xc9))[_0xd4df('0x43')](handleError(_0x181659,null));};exports[_0xd4df('0x50')]=function(_0x456a4e,_0x813995){var _0x3ff72c={'where':{'id':_0x456a4e['params']['id']}},_0x894ba6={};_0x894ba6[_0xd4df('0x32')]=_[_0xd4df('0x33')](db[_0xd4df('0x2e')]['rawAttributes']);_0x3ff72c[_0xd4df('0x36')]=_['intersection'](_0x894ba6[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x456a4e[_0xd4df('0x35')][_0xd4df('0x37')]));_0x3ff72c[_0xd4df('0x36')]=_0x3ff72c[_0xd4df('0x36')][_0xd4df('0x51')]?_0x3ff72c[_0xd4df('0x36')]:_0x894ba6[_0xd4df('0x32')];if(_0x456a4e[_0xd4df('0x35')][_0xd4df('0x40')]){_0x3ff72c[_0xd4df('0x41')]=[{'all':!![]}];}_0x3ff72c=_[_0xd4df('0x3c')]({},_0x3ff72c,_0x456a4e[_0xd4df('0x3f')]);return db['JscriptyProject']['find'](_0x3ff72c)[_0xd4df('0x27')](handleEntityNotFound(_0x813995,null))[_0xd4df('0x27')](function(_0x47242a){if(_0x47242a){var _0x536d94=_0x47242a[_0xd4df('0x4b')]({'plain':!![]});_0x536d94=qs[_0xd4df('0x52')](_0x536d94,['id','createdAt',_0xd4df('0x53')]);_0x456a4e['body']=_['omit'](_0x456a4e[_0xd4df('0x47')],['id','createdAt',_0xd4df('0x53')]);return db[_0xd4df('0x2e')][_0xd4df('0x46')](_['merge'](_0x536d94,_0x456a4e[_0xd4df('0x47')]),{'include':_0x456a4e[_0xd4df('0x35')][_0xd4df('0x40')]?[{'all':!![]}]:undefined})[_0xd4df('0x27')](function(_0x537163){var _0x1c9e35=_0x456a4e[_0xd4df('0x48')][_0xd4df('0x4b')]({'plain':!![]});if(!_0x1c9e35)throw new Error(_0xd4df('0x49'));if(_0x1c9e35[_0xd4df('0x4a')]===_0xd4df('0x48')){var _0x1aecf3=_0x537163['get']({'plain':!![]});var _0x435f4b=_0xd4df('0x4c');return db['UserProfileSection'][_0xd4df('0x4d')]({'where':{'name':_0x435f4b,'userProfileId':_0x1c9e35[_0xd4df('0x54')]},'raw':!![]})[_0xd4df('0x27')](function(_0x3bf71a){if(_0x3bf71a&&_0x3bf71a['autoAssociation']===0x0){return db['UserProfileResource'][_0xd4df('0x46')]({'name':_0x1aecf3[_0xd4df('0x2b')],'resourceId':_0x1aecf3['id'],'type':_0x3bf71a[_0xd4df('0x2b')],'sectionId':_0x3bf71a['id']},{})[_0xd4df('0x27')](function(){return _0x537163;});}else{return _0x537163;}})[_0xd4df('0x43')](function(_0xf680ed){logger[_0xd4df('0x55')](_0xd4df('0x4f'),_0xf680ed);throw _0xf680ed;});}return _0x537163;});}})[_0xd4df('0x27')](respondWithResult(_0x813995,0xc9))[_0xd4df('0x43')](handleError(_0x813995,null));};exports[_0xd4df('0x56')]=function(_0x2667fb,_0x20db13){if(_0x2667fb[_0xd4df('0x47')]['id']){delete _0x2667fb[_0xd4df('0x47')]['id'];}return db[_0xd4df('0x2e')]['find']({'where':{'id':_0x2667fb[_0xd4df('0x57')]['id']}})[_0xd4df('0x27')](handleEntityNotFound(_0x20db13,null))[_0xd4df('0x27')](saveUpdates(_0x2667fb['body'],null))[_0xd4df('0x27')](respondWithResult(_0x20db13,null))[_0xd4df('0x43')](handleError(_0x20db13,null));};exports['destroy']=function(_0x440acf,_0x58f541){return db[_0xd4df('0x2e')][_0xd4df('0x4d')]({'where':{'id':_0x440acf[_0xd4df('0x57')]['id']}})['then'](handleEntityNotFound(_0x58f541,null))['then'](removeEntity(_0x58f541,null))[_0xd4df('0x43')](handleError(_0x58f541,null));};exports[_0xd4df('0x58')]=function(_0x121423,_0x357004,_0x39a5bd){var _0x3955bc={'raw':!![],'where':{}};var _0x251c15={};var _0x3a5510={'count':0x0,'rows':[]};return db[_0xd4df('0x2e')][_0xd4df('0x59')]({'where':{'id':_0x121423['params']['id']}})['then'](handleEntityNotFound(_0x357004,null))['then'](function(_0x10bd56){if(_0x10bd56){_0x251c15['model']=_['keys'](db[_0xd4df('0x5a')]['rawAttributes']);_0x251c15['query']=_[_0xd4df('0x33')](_0x121423[_0xd4df('0x35')]);_0x251c15[_0xd4df('0x34')]=_[_0xd4df('0x45')](_0x251c15[_0xd4df('0x32')],_0x251c15[_0xd4df('0x35')]);_0x3955bc[_0xd4df('0x36')]=_['intersection'](_0x251c15['model'],qs[_0xd4df('0x37')](_0x121423[_0xd4df('0x35')][_0xd4df('0x37')]));_0x3955bc[_0xd4df('0x36')]=_0x3955bc[_0xd4df('0x36')][_0xd4df('0x51')]?_0x3955bc['attributes']:_0x251c15[_0xd4df('0x32')];if(!_0x121423['query'][_0xd4df('0x38')](_0xd4df('0x39'))){_0x3955bc[_0xd4df('0x21')]=qs[_0xd4df('0x21')](_0x121423[_0xd4df('0x35')][_0xd4df('0x21')]);_0x3955bc[_0xd4df('0x1f')]=qs['offset'](_0x121423['query']['offset']);}_0x3955bc[_0xd4df('0x5b')]=qs[_0xd4df('0x5c')](_0x121423['query'][_0xd4df('0x5c')]);_0x3955bc[_0xd4df('0x3a')]=qs[_0xd4df('0x34')](_[_0xd4df('0x5d')](_0x121423['query'],_0x251c15[_0xd4df('0x34')]));_0x3955bc[_0xd4df('0x3a')][_0xd4df('0x5e')]=_0x10bd56['id'];if(_0x121423['query']['filter']){_0x3955bc[_0xd4df('0x3a')]=_[_0xd4df('0x3c')](_0x3955bc['where'],{'$or':_[_0xd4df('0x2d')](_0x3955bc[_0xd4df('0x36')],function(_0x2cafa9){var _0x3e2160={};_0x3e2160[_0x2cafa9]={'$like':'%'+_0x121423[_0xd4df('0x35')][_0xd4df('0x3b')]+'%'};return _0x3e2160;})});}_0x3955bc=_[_0xd4df('0x3c')]({},_0x3955bc,_0x121423['options']);return db[_0xd4df('0x5a')][_0xd4df('0x22')]({'where':_0x3955bc[_0xd4df('0x3a')]})[_0xd4df('0x27')](function(_0x496fbd){_0x3a5510[_0xd4df('0x22')]=_0x496fbd;if(_0x121423[_0xd4df('0x35')][_0xd4df('0x40')]){_0x3955bc[_0xd4df('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0xd4df('0x5f')](_0x3955bc);})[_0xd4df('0x27')](function(_0x58df03){_0x3a5510[_0xd4df('0x42')]=_0x58df03;return _0x3a5510;});}})[_0xd4df('0x27')](respondWithFilteredResult(_0x357004,_0x3955bc))[_0xd4df('0x43')](handleError(_0x357004,null));};exports['getAnswers']=function(_0x1297fa,_0x4ef0c8,_0x59070d){var _0x1ff873={'raw':!![],'where':{}};var _0x317492={};var _0x182a98={'count':0x0,'rows':[]};return db['JscriptyProject'][_0xd4df('0x59')]({'where':{'id':_0x1297fa[_0xd4df('0x57')]['id']}})['then'](handleEntityNotFound(_0x4ef0c8,null))[_0xd4df('0x27')](function(_0x49534f){if(_0x49534f){_0x317492[_0xd4df('0x32')]=_[_0xd4df('0x33')](db['JscriptyAnswerReport'][_0xd4df('0x2f')]);_0x317492['query']=_[_0xd4df('0x33')](_0x1297fa['query']);_0x317492[_0xd4df('0x34')]=_[_0xd4df('0x45')](_0x317492[_0xd4df('0x32')],_0x317492['query']);_0x1ff873[_0xd4df('0x36')]=_[_0xd4df('0x45')](_0x317492[_0xd4df('0x32')],qs[_0xd4df('0x37')](_0x1297fa[_0xd4df('0x35')][_0xd4df('0x37')]));_0x1ff873[_0xd4df('0x36')]=_0x1ff873[_0xd4df('0x36')][_0xd4df('0x51')]?_0x1ff873['attributes']:_0x317492[_0xd4df('0x32')];if(!_0x1297fa['query']['hasOwnProperty'](_0xd4df('0x39'))){_0x1ff873[_0xd4df('0x21')]=qs[_0xd4df('0x21')](_0x1297fa['query'][_0xd4df('0x21')]);_0x1ff873[_0xd4df('0x1f')]=qs['offset'](_0x1297fa[_0xd4df('0x35')][_0xd4df('0x1f')]);}_0x1ff873[_0xd4df('0x5b')]=qs[_0xd4df('0x5c')](_0x1297fa[_0xd4df('0x35')][_0xd4df('0x5c')]);_0x1ff873[_0xd4df('0x3a')]=qs[_0xd4df('0x34')](_[_0xd4df('0x5d')](_0x1297fa['query'],_0x317492['filters']));_0x1ff873[_0xd4df('0x3a')]['ProjectId']=_0x49534f['id'];if(_0x1297fa[_0xd4df('0x35')]['filter']){_0x1ff873['where']=_[_0xd4df('0x3c')](_0x1ff873[_0xd4df('0x3a')],{'$or':_['map'](_0x1ff873['attributes'],function(_0x41276d){var _0x4e6ce1={};_0x4e6ce1[_0x41276d]={'$like':'%'+_0x1297fa[_0xd4df('0x35')][_0xd4df('0x3b')]+'%'};return _0x4e6ce1;})});}_0x1ff873=_[_0xd4df('0x3c')]({},_0x1ff873,_0x1297fa[_0xd4df('0x3f')]);return db[_0xd4df('0x60')][_0xd4df('0x22')]({'where':_0x1ff873[_0xd4df('0x3a')]})[_0xd4df('0x27')](function(_0x4c00e8){_0x182a98[_0xd4df('0x22')]=_0x4c00e8;if(_0x1297fa[_0xd4df('0x35')][_0xd4df('0x40')]){_0x1ff873[_0xd4df('0x41')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xd4df('0x5f')](_0x1ff873);})['then'](function(_0x3e0388){_0x182a98[_0xd4df('0x42')]=_0x3e0388;return _0x182a98;});}})[_0xd4df('0x27')](respondWithFilteredResult(_0x4ef0c8,_0x1ff873))[_0xd4df('0x43')](handleError(_0x4ef0c8,null));};function char(_0x430744){return _0xd4df('0x61')===typeof _0x430744?String['fromCharCode'][_0xd4df('0x24')](null,arguments):_0x430744;}function needsEncapsulation(_0x48e7d9){return!!_0x48e7d9&&(_0x48e7d9[_0xd4df('0x62')]()['indexOf'](char(0xd))>=0x0||_0x48e7d9[_0xd4df('0x62')]()[_0xd4df('0x63')](char(0xa))>=0x0||_0x48e7d9[_0xd4df('0x62')]()['indexOf'](char(0x2c))>=0x0||_0x48e7d9[_0xd4df('0x62')]()[_0xd4df('0x63')](char(0x22))>=0x0);}function encapsulate(_0x58f5e4){var _0x1c3a8f=char(0x22),_0x3134b7='\x5c'+char(0x22),_0x9585c2=_0x58f5e4[_0xd4df('0x62')]()[_0xd4df('0x64')](new RegExp(_0x1c3a8f,'g'),_0x3134b7);return _0x1c3a8f+_0x9585c2+_0x1c3a8f;}exports[_0xd4df('0x65')]=function(_0xf16861,_0x5ed0b2,_0x5ed0ac){var _0x3b42e2,_0x446436;var _0x2ddbe3={'where':{'ProjectId':_0xf16861[_0xd4df('0x57')]['id']}};if(_0xf16861[_0xd4df('0x35')][_0xd4df('0x66')]){_0x2ddbe3[_0xd4df('0x3a')]['starttime']=JSON[_0xd4df('0x67')](_0xf16861['query'][_0xd4df('0x66')]);}return db[_0xd4df('0x5a')][_0xd4df('0x5f')](_0x2ddbe3)[_0xd4df('0x27')](handleEntityNotFound(_0x5ed0b2,null))[_0xd4df('0x27')](function(_0x14e18f){if(_0x14e18f){_0x3b42e2=_0x14e18f;return db[_0xd4df('0x68')]['findAll']({'where':{'SessionId':{'$in':_[_0xd4df('0x2d')](_0x3b42e2,'id')},'ProjectId':_0xf16861[_0xd4df('0x57')]['id']},'order':_0xd4df('0x69')});}})[_0xd4df('0x27')](handleEntityNotFound(_0x5ed0b2,null))[_0xd4df('0x27')](function(_0x3e0317){if(_0x3e0317){_0x446436=_0x3e0317;var _0x949e4d={};for(var _0x14bce7=0x0,_0x3396f2=_0x446436[_0xd4df('0x51')];_0x14bce7<_0x3396f2;_0x14bce7++){if(!_0x949e4d['hasOwnProperty'](_0x446436[_0x14bce7][_0xd4df('0x6a')])){_0x949e4d[_0x446436[_0x14bce7]['questionId']]=needsEncapsulation(_0x446436[_0x14bce7]['question'])?encapsulate(_0x446436[_0x14bce7][_0xd4df('0x6b')]):_0x446436[_0x14bce7][_0xd4df('0x6b')];}}var _0x34b89f=[],_0x473d81={};for(var _0x468d06=0x0,_0x101512=_0x3b42e2[_0xd4df('0x51')];_0x468d06<_0x101512;_0x468d06++){_0x473d81={'ProjectId':_0xf16861[_0xd4df('0x57')]['id'],'SessionId':_0x3b42e2[_0x468d06]['id'],'StartTime':moment(_0x3b42e2[_0x468d06][_0xd4df('0x6c')])['format'](_0xd4df('0x6d'))};for(var _0x54b381=0x0,_0x476bb8=_0x446436['length'];_0x54b381<_0x476bb8;_0x54b381++){if(_0x446436[_0x54b381]['SessionId']==_0x3b42e2[_0x468d06]['id']&&_0x949e4d['hasOwnProperty'](_0x446436[_0x54b381]['questionId'])){_0x473d81[_0x949e4d[_0x446436[_0x54b381][_0xd4df('0x6a')]]]=_0x446436[_0x54b381][_0xd4df('0x6e')];}}for(var _0x31b777 in _0x949e4d){if(!_0x473d81['hasOwnProperty'](_0x949e4d[_0x31b777])){_0x473d81[_0x949e4d[_0x31b777]]=null;}}_0x34b89f[_0xd4df('0x6f')](_0x473d81);}return _0x34b89f;}})['then'](function(_0x2cd961){if(!_[_0xd4df('0x70')](_0x2cd961)){var _0xab86d5=toCsv(_0x2cd961);var _0x42bca9=Date['now']();fs[_0xd4df('0x71')](util[_0xd4df('0x72')](_0xd4df('0x73'),_0xf16861['params']['id'],_0x42bca9),_0xab86d5);_0x5ed0b2['setHeader']('Content-disposition','attachment;\x20filename='+util[_0xd4df('0x72')]('Jscripty_Project_%d_Summary_%s.csv',_0xf16861[_0xd4df('0x57')]['id'],_0x42bca9));_0x5ed0b2[_0xd4df('0x74')](_0xd4df('0x75'),'text/csv');return _0x5ed0b2['download'](util[_0xd4df('0x72')](_0xd4df('0x73'),_0xf16861[_0xd4df('0x57')]['id'],_0x42bca9));}else{return _0x5ed0b2[_0xd4df('0x1b')](0xcc);}})[_0xd4df('0x43')](handleError(_0x5ed0b2,null));};
\ No newline at end of file
index b6b4f89..db914ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf987=['bluebird','request-promise','path','rimraf','../../config/environment','./jscriptyProject.attributes','exports','define','JscriptyProject','jscripty_projects','../../config/logger','api'];(function(_0x3f2043,_0x1703e2){var _0x56ddd2=function(_0x3ca785){while(--_0x3ca785){_0x3f2043['push'](_0x3f2043['shift']());}};_0x56ddd2(++_0x1703e2);}(_0xf987,0x18a));var _0x7f98=function(_0x30153f,_0x1fe571){_0x30153f=_0x30153f-0x0;var _0x331018=_0xf987[_0x30153f];return _0x331018;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x7f98('0x0'))(_0x7f98('0x1'));var moment=require('moment');var BPromise=require(_0x7f98('0x2'));var rp=require(_0x7f98('0x3'));var fs=require('fs');var path=require(_0x7f98('0x4'));var rimraf=require(_0x7f98('0x5'));var config=require(_0x7f98('0x6'));var attributes=require(_0x7f98('0x7'));module[_0x7f98('0x8')]=function(_0x3b5abb,_0x3fb8e2){return _0x3b5abb[_0x7f98('0x9')](_0x7f98('0xa'),attributes,{'tableName':_0x7f98('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2ff=['./jscriptyProject.attributes','exports','JscriptyProject','lodash','util','api','path','../../config/environment'];(function(_0x2c22aa,_0x46163d){var _0x2c40cf=function(_0x109946){while(--_0x109946){_0x2c22aa['push'](_0x2c22aa['shift']());}};_0x2c40cf(++_0x46163d);}(_0xb2ff,0x123));var _0xfb2f=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xb2ff[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xfb2f('0x0'));var util=require(_0xfb2f('0x1'));var logger=require('../../config/logger')(_0xfb2f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xfb2f('0x3'));var rimraf=require('rimraf');var config=require(_0xfb2f('0x4'));var attributes=require(_0xfb2f('0x5'));module[_0xfb2f('0x6')]=function(_0x1d3416,_0x542ce7){return _0x1d3416['define'](_0xfb2f('0x7'),attributes,{'tableName':'jscripty_projects','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1db041f..8c30f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','client','http','request','then','request\x20sent','debug','stringify','code','error','message','JscriptyProject,\x20%s,\x20%s','info','result','catch','moment','bluebird'];(function(_0x4152aa,_0x3051eb){var _0xa78692=function(_0x567314){while(--_0x567314){_0x4152aa['push'](_0x4152aa['shift']());}};_0xa78692(++_0x3051eb);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var BPromise=require(_0x49c4('0x1'));var rs=require(_0x49c4('0x2'));var fs=require('fs');var Redis=require(_0x49c4('0x3'));var db=require(_0x49c4('0x4'))['db'];var utils=require(_0x49c4('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x49c4('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x49c4('0x7')][_0x49c4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x69bc41,_0x2c4e2e,_0x436234){return new BPromise(function(_0x511d53,_0x11c586){return client[_0x49c4('0x9')](_0x69bc41,_0x436234)[_0x49c4('0xa')](function(_0x4487ca){logger['info']('JscriptyProject,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));logger[_0x49c4('0xc')]('JscriptyProject,\x20%s,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'),JSON[_0x49c4('0xd')](_0x4487ca));if(_0x4487ca['error']){if(_0x4487ca['error'][_0x49c4('0xe')]===0x1f4){logger[_0x49c4('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x11c586(_0x4487ca['error'][_0x49c4('0x10')]);}logger[_0x49c4('0xf')](_0x49c4('0x11'),_0x2c4e2e,_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);return _0x511d53(_0x4487ca[_0x49c4('0xf')][_0x49c4('0x10')]);}else{logger[_0x49c4('0x12')]('JscriptyProject,\x20%s,\x20%s',_0x2c4e2e,_0x49c4('0xb'));_0x511d53(_0x4487ca[_0x49c4('0x13')][_0x49c4('0x10')]);}})[_0x49c4('0x14')](function(_0x2abc78){logger['error'](_0x49c4('0x11'),_0x2c4e2e,_0x2abc78);_0x11c586(_0x2abc78);});});}
\ No newline at end of file
+var _0xaa88=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','error','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0x1f8cbc,_0x404fad){var _0x26e5d6=function(_0x3777bf){while(--_0x3777bf){_0x1f8cbc['push'](_0x1f8cbc['shift']());}};_0x26e5d6(++_0x404fad);}(_0xaa88,0x137));var _0x8aa8=function(_0x1168a1,_0xa0d8c9){_0x1168a1=_0x1168a1-0x0;var _0xcc5ad8=_0xaa88[_0x1168a1];return _0xcc5ad8;};'use strict';var _=require(_0x8aa8('0x0'));var util=require(_0x8aa8('0x1'));var moment=require(_0x8aa8('0x2'));var BPromise=require(_0x8aa8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8aa8('0x4'));var db=require(_0x8aa8('0x5'))['db'];var utils=require(_0x8aa8('0x6'));var logger=require(_0x8aa8('0x7'))(_0x8aa8('0x8'));var config=require(_0x8aa8('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8aa8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5264ff,_0x449d2d,_0x1ed84d){return new BPromise(function(_0x27c08d,_0x40826f){return client['request'](_0x5264ff,_0x1ed84d)[_0x8aa8('0xb')](function(_0x2d974c){logger[_0x8aa8('0xc')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x8aa8('0xd'));logger[_0x8aa8('0xe')](_0x8aa8('0xf'),_0x449d2d,_0x8aa8('0xd'),JSON['stringify'](_0x2d974c));if(_0x2d974c[_0x8aa8('0x10')]){if(_0x2d974c[_0x8aa8('0x10')]['code']===0x1f4){logger[_0x8aa8('0x10')](_0x8aa8('0x11'),_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x40826f(_0x2d974c[_0x8aa8('0x10')][_0x8aa8('0x12')]);}logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0x2d974c[_0x8aa8('0x10')]['message']);return _0x27c08d(_0x2d974c['error'][_0x8aa8('0x12')]);}else{logger[_0x8aa8('0xc')](_0x8aa8('0x11'),_0x449d2d,_0x8aa8('0xd'));_0x27c08d(_0x2d974c[_0x8aa8('0x13')][_0x8aa8('0x12')]);}})[_0x8aa8('0x14')](function(_0xd59fb8){logger[_0x8aa8('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x449d2d,_0xd59fb8);_0x40826f(_0xd59fb8);});});}
\ No newline at end of file
index 85f2613..937e566 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82f3=['express','Router','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x82f3,0x90));var _0x382f=function(_0x48da37,_0xbfebcf){_0x48da37=_0x48da37-0x0;var _0xdafd00=_0x82f3[_0x48da37];return _0xdafd00;};'use strict';var multer=require('multer');var util=require(_0x382f('0x0'));var path=require(_0x382f('0x1'));var timeout=require(_0x382f('0x2'));var express=require(_0x382f('0x3'));var router=express[_0x382f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x382f('0x5'));var config=require(_0x382f('0x6'));var controller=require(_0x382f('0x7'));router[_0x382f('0x8')]('/',auth[_0x382f('0x9')](),controller[_0x382f('0xa')]);router[_0x382f('0x8')](_0x382f('0xb'),auth[_0x382f('0x9')](),controller[_0x382f('0xc')]);router[_0x382f('0x8')](_0x382f('0xd'),auth[_0x382f('0x9')](),controller[_0x382f('0xe')]);router['post']('/',auth[_0x382f('0x9')](),controller[_0x382f('0xf')]);router[_0x382f('0x10')](_0x382f('0xd'),auth[_0x382f('0x9')](),controller[_0x382f('0x11')]);router[_0x382f('0x12')](_0x382f('0xd'),auth[_0x382f('0x9')](),controller[_0x382f('0x13')]);module[_0x382f('0x14')]=router;
\ No newline at end of file
+var _0x9f63=['exports','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index','/describe','describe','isAuthenticated','post','create','put','/:id','update','delete','destroy'];(function(_0x812dcf,_0x12b0ed){var _0x146a71=function(_0x11132d){while(--_0x11132d){_0x812dcf['push'](_0x812dcf['shift']());}};_0x146a71(++_0x12b0ed);}(_0x9f63,0xd2));var _0x39f6=function(_0x946e15,_0x5500c2){_0x946e15=_0x946e15-0x0;var _0x4d1f5a=_0x9f63[_0x946e15];return _0x4d1f5a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x39f6('0x0'));var express=require(_0x39f6('0x1'));var router=express[_0x39f6('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x39f6('0x3'));var config=require(_0x39f6('0x4'));var controller=require(_0x39f6('0x5'));router[_0x39f6('0x6')]('/',auth['isAuthenticated'](),controller[_0x39f6('0x7')]);router[_0x39f6('0x6')](_0x39f6('0x8'),auth['isAuthenticated'](),controller[_0x39f6('0x9')]);router[_0x39f6('0x6')]('/:id',auth[_0x39f6('0xa')](),controller['show']);router[_0x39f6('0xb')]('/',auth[_0x39f6('0xa')](),controller[_0x39f6('0xc')]);router[_0x39f6('0xd')](_0x39f6('0xe'),auth[_0x39f6('0xa')](),controller[_0x39f6('0xf')]);router[_0x39f6('0x10')](_0x39f6('0xe'),auth[_0x39f6('0xa')](),controller[_0x39f6('0x11')]);module[_0x39f6('0x12')]=router;
\ No newline at end of file
index 2fbaa12..8267586 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3aa1d7,_0x29ac8b){_0x3aa1d7=_0x3aa1d7-0x0;var _0x550a8f=_0x7a54[_0x3aa1d7];return _0x550a8f;};'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(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x7a54,0x106));var _0x47a5=function(_0xc2b969,_0x1dcb9f){_0xc2b969=_0xc2b969-0x0;var _0x3c79ac=_0x7a54[_0xc2b969];return _0x3c79ac;};'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 6c32927..c74fde8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb57d=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','count','Content-Range','json','apply','reject','save','then','error','name','send','index','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model'];(function(_0x42abed,_0x4bca02){var _0x2dcbf0=function(_0x5eb843){while(--_0x5eb843){_0x42abed['push'](_0x42abed['shift']());}};_0x2dcbf0(++_0x4bca02);}(_0xb57d,0xb8));var _0xdb57=function(_0x46ebdd,_0x1e07dc){_0x46ebdd=_0x46ebdd-0x0;var _0x41d84e=_0xb57d[_0x46ebdd];return _0x41d84e;};'use strict';var emlformat=require(_0xdb57('0x0'));var rimraf=require(_0xdb57('0x1'));var zipdir=require(_0xdb57('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdb57('0x3'));var BPromise=require(_0xdb57('0x4'));var Mustache=require(_0xdb57('0x5'));var util=require('util');var path=require(_0xdb57('0x6'));var sox=require(_0xdb57('0x7'));var csv=require(_0xdb57('0x8'));var ejs=require(_0xdb57('0x9'));var fs=require('fs');var fs_extra=require(_0xdb57('0xa'));var _=require('lodash');var squel=require(_0xdb57('0xb'));var crypto=require('crypto');var jsforce=require(_0xdb57('0xc'));var deskjs=require(_0xdb57('0xd'));var toCsv=require(_0xdb57('0x8'));var querystring=require(_0xdb57('0xe'));var Papa=require(_0xdb57('0xf'));var Redis=require(_0xdb57('0x10'));var authService=require(_0xdb57('0x11'));var qs=require(_0xdb57('0x12'));var as=require(_0xdb57('0x13'));var hardwareService=require(_0xdb57('0x14'));var logger=require(_0xdb57('0x15'))(_0xdb57('0x16'));var utils=require(_0xdb57('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xdb57('0x18'));var db=require(_0xdb57('0x19'))['db'];function respondWithStatusCode(_0x3419e5,_0x3b1b33){_0x3b1b33=_0x3b1b33||0xcc;return function(_0x3d4cbf){if(_0x3d4cbf){return _0x3419e5[_0xdb57('0x1a')](_0x3b1b33);}return _0x3419e5['status'](_0x3b1b33)[_0xdb57('0x1b')]();};}function respondWithResult(_0x4c485a,_0x61c2be){_0x61c2be=_0x61c2be||0xc8;return function(_0x279e5f){if(_0x279e5f){return _0x4c485a[_0xdb57('0x1c')](_0x61c2be)['json'](_0x279e5f);}};}function respondWithFilteredResult(_0x491c32,_0x45d871){return function(_0x46411e){if(_0x46411e){var _0x4427a2=typeof _0x45d871[_0xdb57('0x1d')]==='undefined'&&typeof _0x45d871[_0xdb57('0x1e')]===_0xdb57('0x1f');var _0x45a27a=_0x46411e['count'];var _0x575cd=_0x4427a2?0x0:_0x45d871[_0xdb57('0x1d')];var _0x27f96c=_0x4427a2?_0x46411e[_0xdb57('0x20')]:_0x45d871['offset']+_0x45d871['limit'];var _0x2a22e8;if(_0x27f96c>=_0x45a27a){_0x27f96c=_0x45a27a;_0x2a22e8=0xc8;}else{_0x2a22e8=0xce;}_0x491c32[_0xdb57('0x1c')](_0x2a22e8);return _0x491c32['set'](_0xdb57('0x21'),_0x575cd+'-'+_0x27f96c+'/'+_0x45a27a)[_0xdb57('0x22')](_0x46411e);}return null;};}function patchUpdates(_0x19945b){return function(_0x5d4bc1){try{jsonpatch[_0xdb57('0x23')](_0x5d4bc1,_0x19945b,!![]);}catch(_0x20b191){return BPromise[_0xdb57('0x24')](_0x20b191);}return _0x5d4bc1[_0xdb57('0x25')]();};}function saveUpdates(_0x5c5aec,_0x1c370f){return function(_0x32ec93){if(_0x32ec93){return _0x32ec93['update'](_0x5c5aec)['then'](function(_0x4d3d49){return _0x4d3d49;});}return null;};}function removeEntity(_0xa6f68f,_0x5dd3ad){return function(_0x163421){if(_0x163421){return _0x163421['destroy']()[_0xdb57('0x26')](function(){_0xa6f68f[_0xdb57('0x1c')](0xcc)[_0xdb57('0x1b')]();});}};}function handleEntityNotFound(_0xf49f7e,_0x3e63dc){return function(_0x3b4ed3){if(!_0x3b4ed3){_0xf49f7e['sendStatus'](0x194);}return _0x3b4ed3;};}function handleError(_0x394e82,_0x5338aa){_0x5338aa=_0x5338aa||0x1f4;return function(_0x2086f0){logger[_0xdb57('0x27')](_0x2086f0['stack']);if(_0x2086f0[_0xdb57('0x28')]){delete _0x2086f0[_0xdb57('0x28')];}_0x394e82['status'](_0x5338aa)[_0xdb57('0x29')](_0x2086f0);};}exports[_0xdb57('0x2a')]=function(_0x1e08f3,_0x2da80b){var _0x1a02a8={},_0x166635={},_0x586af8={'count':0x0,'rows':[]};var _0x73eaec=_[_0xdb57('0x2b')](db[_0xdb57('0x2c')][_0xdb57('0x2d')],function(_0x538211){return{'name':_0x538211[_0xdb57('0x2e')],'type':_0x538211[_0xdb57('0x2f')][_0xdb57('0x30')]};});_0x166635[_0xdb57('0x31')]=_[_0xdb57('0x2b')](_0x73eaec,_0xdb57('0x28'));_0x166635[_0xdb57('0x32')]=_[_0xdb57('0x33')](_0x1e08f3[_0xdb57('0x32')]);_0x166635[_0xdb57('0x34')]=_[_0xdb57('0x35')](_0x166635[_0xdb57('0x31')],_0x166635[_0xdb57('0x32')]);_0x1a02a8[_0xdb57('0x36')]=_[_0xdb57('0x35')](_0x166635[_0xdb57('0x31')],qs[_0xdb57('0x37')](_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x37')]));_0x1a02a8[_0xdb57('0x36')]=_0x1a02a8[_0xdb57('0x36')][_0xdb57('0x38')]?_0x1a02a8[_0xdb57('0x36')]:_0x166635[_0xdb57('0x31')];if(!_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x39')](_0xdb57('0x3a'))){_0x1a02a8[_0xdb57('0x1e')]=qs[_0xdb57('0x1e')](_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x1e')]);_0x1a02a8[_0xdb57('0x1d')]=qs[_0xdb57('0x1d')](_0x1e08f3[_0xdb57('0x32')]['offset']);}_0x1a02a8[_0xdb57('0x3b')]=qs['sort'](_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x3c')]);_0x1a02a8[_0xdb57('0x3d')]=qs[_0xdb57('0x34')](_[_0xdb57('0x3e')](_0x1e08f3['query'],_0x166635[_0xdb57('0x34')]),_0x73eaec);if(_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x3f')]){_0x1a02a8[_0xdb57('0x3d')]=_[_0xdb57('0x40')](_0x1a02a8[_0xdb57('0x3d')],{'$or':_['map'](_0x73eaec,function(_0x50fdd4){if(_0x50fdd4[_0xdb57('0x2f')]!=='VIRTUAL'){var _0x513380={};_0x513380[_0x50fdd4[_0xdb57('0x28')]]={'$like':'%'+_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x3f')]+'%'};return _0x513380;}})});}_0x1a02a8=_[_0xdb57('0x40')]({},_0x1a02a8,_0x1e08f3[_0xdb57('0x41')]);var _0x3fc048={'where':_0x1a02a8[_0xdb57('0x3d')]};return db[_0xdb57('0x2c')][_0xdb57('0x20')](_0x3fc048)['then'](function(_0x39da2b){_0x586af8[_0xdb57('0x20')]=_0x39da2b;if(_0x1e08f3[_0xdb57('0x32')][_0xdb57('0x42')]){_0x1a02a8[_0xdb57('0x43')]=[{'all':!![]}];}return db[_0xdb57('0x2c')][_0xdb57('0x44')](_0x1a02a8);})[_0xdb57('0x26')](function(_0x184cf9){_0x586af8[_0xdb57('0x45')]=_0x184cf9;return _0x586af8;})[_0xdb57('0x26')](respondWithFilteredResult(_0x2da80b,_0x1a02a8))[_0xdb57('0x46')](handleError(_0x2da80b,null));};exports['show']=function(_0x24c033,_0x36b27d){var _0x5586b7={'raw':!![],'where':{'id':_0x24c033[_0xdb57('0x47')]['id']}},_0x21e52e={};_0x21e52e['model']=_['keys'](db[_0xdb57('0x2c')][_0xdb57('0x2d')]);_0x21e52e['query']=_[_0xdb57('0x33')](_0x24c033[_0xdb57('0x32')]);_0x21e52e['filters']=_[_0xdb57('0x35')](_0x21e52e['model'],_0x21e52e[_0xdb57('0x32')]);_0x5586b7[_0xdb57('0x36')]=_[_0xdb57('0x35')](_0x21e52e[_0xdb57('0x31')],qs[_0xdb57('0x37')](_0x24c033[_0xdb57('0x32')][_0xdb57('0x37')]));_0x5586b7[_0xdb57('0x36')]=_0x5586b7[_0xdb57('0x36')][_0xdb57('0x38')]?_0x5586b7['attributes']:_0x21e52e[_0xdb57('0x31')];if(_0x24c033[_0xdb57('0x32')][_0xdb57('0x42')]){_0x5586b7[_0xdb57('0x43')]=[{'all':!![]}];}_0x5586b7=_[_0xdb57('0x40')]({},_0x5586b7,_0x24c033[_0xdb57('0x41')]);return db[_0xdb57('0x2c')][_0xdb57('0x48')](_0x5586b7)[_0xdb57('0x26')](handleEntityNotFound(_0x36b27d,null))[_0xdb57('0x26')](respondWithResult(_0x36b27d,null))[_0xdb57('0x46')](handleError(_0x36b27d,null));};exports[_0xdb57('0x49')]=function(_0x3c486c,_0x23989f){return db[_0xdb57('0x2c')][_0xdb57('0x49')](_0x3c486c[_0xdb57('0x4a')],{})[_0xdb57('0x26')](respondWithResult(_0x23989f,0xc9))[_0xdb57('0x46')](handleError(_0x23989f,null));};exports[_0xdb57('0x4b')]=function(_0x5c1960,_0x28772a){if(_0x5c1960[_0xdb57('0x4a')]['id']){delete _0x5c1960[_0xdb57('0x4a')]['id'];}return db[_0xdb57('0x2c')][_0xdb57('0x48')]({'where':{'id':_0x5c1960[_0xdb57('0x47')]['id']}})[_0xdb57('0x26')](handleEntityNotFound(_0x28772a,null))[_0xdb57('0x26')](saveUpdates(_0x5c1960['body'],null))['then'](respondWithResult(_0x28772a,null))[_0xdb57('0x46')](handleError(_0x28772a,null));};exports[_0xdb57('0x4c')]=function(_0x2e012d,_0x29fa77){return db[_0xdb57('0x2c')][_0xdb57('0x48')]({'where':{'id':_0x2e012d[_0xdb57('0x47')]['id']}})[_0xdb57('0x26')](handleEntityNotFound(_0x29fa77,null))[_0xdb57('0x26')](removeEntity(_0x29fa77,null))[_0xdb57('0x46')](handleError(_0x29fa77,null));};exports['describe']=function(_0x4da70d,_0x7af3c3){return db[_0xdb57('0x2c')][_0xdb57('0x4d')]()['then'](respondWithResult(_0x7af3c3,null))[_0xdb57('0x46')](handleError(_0x7af3c3,null));};
\ No newline at end of file
+var _0x79f7=['JscriptyQuestionReport','include','findAll','rows','show','params','includeAll','options','find','create','body','catch','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','error','stack','name','map','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','VIRTUAL'];(function(_0x207811,_0x3420a6){var _0x170d56=function(_0x4340b7){while(--_0x4340b7){_0x207811['push'](_0x207811['shift']());}};_0x170d56(++_0x3420a6);}(_0x79f7,0x180));var _0x779f=function(_0x3df7a4,_0x3d8f7c){_0x3df7a4=_0x3df7a4-0x0;var _0x3edd1d=_0x79f7[_0x3df7a4];return _0x3edd1d;};'use strict';var emlformat=require(_0x779f('0x0'));var rimraf=require(_0x779f('0x1'));var zipdir=require(_0x779f('0x2'));var jsonpatch=require(_0x779f('0x3'));var rp=require(_0x779f('0x4'));var moment=require(_0x779f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x779f('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x779f('0x7'));var ejs=require(_0x779f('0x8'));var fs=require('fs');var fs_extra=require(_0x779f('0x9'));var _=require('lodash');var squel=require(_0x779f('0xa'));var crypto=require('crypto');var jsforce=require(_0x779f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x779f('0x7'));var querystring=require(_0x779f('0xc'));var Papa=require(_0x779f('0xd'));var Redis=require(_0x779f('0xe'));var authService=require(_0x779f('0xf'));var qs=require(_0x779f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x779f('0x11'));var logger=require(_0x779f('0x12'))(_0x779f('0x13'));var utils=require(_0x779f('0x14'));var config=require(_0x779f('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x233129,_0x5a78f9){_0x5a78f9=_0x5a78f9||0xcc;return function(_0x2c441a){if(_0x2c441a){return _0x233129[_0x779f('0x16')](_0x5a78f9);}return _0x233129['status'](_0x5a78f9)[_0x779f('0x17')]();};}function respondWithResult(_0x30166e,_0x4d12b8){_0x4d12b8=_0x4d12b8||0xc8;return function(_0x2fd815){if(_0x2fd815){return _0x30166e[_0x779f('0x18')](_0x4d12b8)[_0x779f('0x19')](_0x2fd815);}};}function respondWithFilteredResult(_0x583178,_0x36db53){return function(_0x1b6d97){if(_0x1b6d97){var _0x2e0915=typeof _0x36db53[_0x779f('0x1a')]===_0x779f('0x1b')&&typeof _0x36db53[_0x779f('0x1c')]==='undefined';var _0x3a82e2=_0x1b6d97[_0x779f('0x1d')];var _0x172f7d=_0x2e0915?0x0:_0x36db53[_0x779f('0x1a')];var _0x5c784e=_0x2e0915?_0x1b6d97[_0x779f('0x1d')]:_0x36db53[_0x779f('0x1a')]+_0x36db53[_0x779f('0x1c')];var _0x529acd;if(_0x5c784e>=_0x3a82e2){_0x5c784e=_0x3a82e2;_0x529acd=0xc8;}else{_0x529acd=0xce;}_0x583178[_0x779f('0x18')](_0x529acd);return _0x583178[_0x779f('0x1e')](_0x779f('0x1f'),_0x172f7d+'-'+_0x5c784e+'/'+_0x3a82e2)[_0x779f('0x19')](_0x1b6d97);}return null;};}function patchUpdates(_0x58c7a3){return function(_0x1c297e){try{jsonpatch[_0x779f('0x20')](_0x1c297e,_0x58c7a3,!![]);}catch(_0x3772b6){return BPromise[_0x779f('0x21')](_0x3772b6);}return _0x1c297e[_0x779f('0x22')]();};}function saveUpdates(_0x1a718f,_0x3bf79b){return function(_0x5012d5){if(_0x5012d5){return _0x5012d5['update'](_0x1a718f)['then'](function(_0x217294){return _0x217294;});}return null;};}function removeEntity(_0x3dfd49,_0x50e486){return function(_0x12549d){if(_0x12549d){return _0x12549d[_0x779f('0x23')]()[_0x779f('0x24')](function(){_0x3dfd49[_0x779f('0x18')](0xcc)[_0x779f('0x17')]();});}};}function handleEntityNotFound(_0x36712d,_0x5ced59){return function(_0x663481){if(!_0x663481){_0x36712d[_0x779f('0x16')](0x194);}return _0x663481;};}function handleError(_0x129f69,_0x2dfb1b){_0x2dfb1b=_0x2dfb1b||0x1f4;return function(_0x47d388){logger[_0x779f('0x25')](_0x47d388[_0x779f('0x26')]);if(_0x47d388[_0x779f('0x27')]){delete _0x47d388[_0x779f('0x27')];}_0x129f69['status'](_0x2dfb1b)['send'](_0x47d388);};}exports['index']=function(_0x399e40,_0x231865){var _0xfe2302={},_0x48615f={},_0x557645={'count':0x0,'rows':[]};var _0x2906e7=_[_0x779f('0x28')](db['JscriptyQuestionReport'][_0x779f('0x29')],function(_0x642c85){return{'name':_0x642c85[_0x779f('0x2a')],'type':_0x642c85[_0x779f('0x2b')][_0x779f('0x2c')]};});_0x48615f['model']=_[_0x779f('0x28')](_0x2906e7,_0x779f('0x27'));_0x48615f[_0x779f('0x2d')]=_[_0x779f('0x2e')](_0x399e40[_0x779f('0x2d')]);_0x48615f['filters']=_[_0x779f('0x2f')](_0x48615f[_0x779f('0x30')],_0x48615f[_0x779f('0x2d')]);_0xfe2302[_0x779f('0x31')]=_['intersection'](_0x48615f[_0x779f('0x30')],qs[_0x779f('0x32')](_0x399e40['query']['fields']));_0xfe2302[_0x779f('0x31')]=_0xfe2302[_0x779f('0x31')][_0x779f('0x33')]?_0xfe2302['attributes']:_0x48615f[_0x779f('0x30')];if(!_0x399e40[_0x779f('0x2d')][_0x779f('0x34')]('nolimit')){_0xfe2302[_0x779f('0x1c')]=qs['limit'](_0x399e40[_0x779f('0x2d')][_0x779f('0x1c')]);_0xfe2302[_0x779f('0x1a')]=qs[_0x779f('0x1a')](_0x399e40[_0x779f('0x2d')][_0x779f('0x1a')]);}_0xfe2302[_0x779f('0x35')]=qs[_0x779f('0x36')](_0x399e40['query'][_0x779f('0x36')]);_0xfe2302[_0x779f('0x37')]=qs[_0x779f('0x38')](_['pick'](_0x399e40['query'],_0x48615f[_0x779f('0x38')]),_0x2906e7);if(_0x399e40['query'][_0x779f('0x39')]){_0xfe2302[_0x779f('0x37')]=_[_0x779f('0x3a')](_0xfe2302[_0x779f('0x37')],{'$or':_[_0x779f('0x28')](_0x2906e7,function(_0x23d64f){if(_0x23d64f[_0x779f('0x2b')]!==_0x779f('0x3b')){var _0x4629ea={};_0x4629ea[_0x23d64f[_0x779f('0x27')]]={'$like':'%'+_0x399e40[_0x779f('0x2d')][_0x779f('0x39')]+'%'};return _0x4629ea;}})});}_0xfe2302=_[_0x779f('0x3a')]({},_0xfe2302,_0x399e40['options']);var _0x426530={'where':_0xfe2302[_0x779f('0x37')]};return db[_0x779f('0x3c')][_0x779f('0x1d')](_0x426530)[_0x779f('0x24')](function(_0x145bdf){_0x557645['count']=_0x145bdf;if(_0x399e40[_0x779f('0x2d')]['includeAll']){_0xfe2302[_0x779f('0x3d')]=[{'all':!![]}];}return db[_0x779f('0x3c')][_0x779f('0x3e')](_0xfe2302);})[_0x779f('0x24')](function(_0x2ec152){_0x557645[_0x779f('0x3f')]=_0x2ec152;return _0x557645;})[_0x779f('0x24')](respondWithFilteredResult(_0x231865,_0xfe2302))['catch'](handleError(_0x231865,null));};exports[_0x779f('0x40')]=function(_0x4560a9,_0x2ec249){var _0x3e3471={'raw':!![],'where':{'id':_0x4560a9[_0x779f('0x41')]['id']}},_0x121903={};_0x121903[_0x779f('0x30')]=_['keys'](db['JscriptyQuestionReport'][_0x779f('0x29')]);_0x121903[_0x779f('0x2d')]=_['keys'](_0x4560a9[_0x779f('0x2d')]);_0x121903[_0x779f('0x38')]=_['intersection'](_0x121903['model'],_0x121903[_0x779f('0x2d')]);_0x3e3471['attributes']=_[_0x779f('0x2f')](_0x121903['model'],qs['fields'](_0x4560a9[_0x779f('0x2d')]['fields']));_0x3e3471['attributes']=_0x3e3471[_0x779f('0x31')][_0x779f('0x33')]?_0x3e3471[_0x779f('0x31')]:_0x121903[_0x779f('0x30')];if(_0x4560a9[_0x779f('0x2d')][_0x779f('0x42')]){_0x3e3471[_0x779f('0x3d')]=[{'all':!![]}];}_0x3e3471=_['merge']({},_0x3e3471,_0x4560a9[_0x779f('0x43')]);return db['JscriptyQuestionReport'][_0x779f('0x44')](_0x3e3471)[_0x779f('0x24')](handleEntityNotFound(_0x2ec249,null))['then'](respondWithResult(_0x2ec249,null))['catch'](handleError(_0x2ec249,null));};exports['create']=function(_0x45731c,_0x27a1e4){return db[_0x779f('0x3c')][_0x779f('0x45')](_0x45731c[_0x779f('0x46')],{})[_0x779f('0x24')](respondWithResult(_0x27a1e4,0xc9))[_0x779f('0x47')](handleError(_0x27a1e4,null));};exports[_0x779f('0x48')]=function(_0x4fcc88,_0x5524db){if(_0x4fcc88[_0x779f('0x46')]['id']){delete _0x4fcc88[_0x779f('0x46')]['id'];}return db[_0x779f('0x3c')][_0x779f('0x44')]({'where':{'id':_0x4fcc88['params']['id']}})[_0x779f('0x24')](handleEntityNotFound(_0x5524db,null))['then'](saveUpdates(_0x4fcc88['body'],null))['then'](respondWithResult(_0x5524db,null))[_0x779f('0x47')](handleError(_0x5524db,null));};exports['destroy']=function(_0x4e986f,_0x550ace){return db[_0x779f('0x3c')][_0x779f('0x44')]({'where':{'id':_0x4e986f[_0x779f('0x41')]['id']}})[_0x779f('0x24')](handleEntityNotFound(_0x550ace,null))[_0x779f('0x24')](removeEntity(_0x550ace,null))[_0x779f('0x47')](handleError(_0x550ace,null));};exports['describe']=function(_0x398e78,_0x8b04b1){return db[_0x779f('0x3c')][_0x779f('0x49')]()[_0x779f('0x24')](respondWithResult(_0x8b04b1,null))[_0x779f('0x47')](handleError(_0x8b04b1,null));};
\ No newline at end of file
index 7061424..6383c05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb331=['report_jscripty_questions','lodash','moment','request-promise','path','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport'];(function(_0x348155,_0x44fbc0){var _0x2de9c2=function(_0x19fddf){while(--_0x19fddf){_0x348155['push'](_0x348155['shift']());}};_0x2de9c2(++_0x44fbc0);}(_0xb331,0x7a));var _0x1b33=function(_0x1fc2dd,_0x21abf0){_0x1fc2dd=_0x1fc2dd-0x0;var _0x339076=_0xb331[_0x1fc2dd];return _0x339076;};'use strict';var _=require(_0x1b33('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1b33('0x1'));var BPromise=require('bluebird');var rp=require(_0x1b33('0x2'));var fs=require('fs');var path=require(_0x1b33('0x3'));var rimraf=require(_0x1b33('0x4'));var config=require(_0x1b33('0x5'));var attributes=require(_0x1b33('0x6'));module[_0x1b33('0x7')]=function(_0x58118b,_0x3c96e4){return _0x58118b[_0x1b33('0x8')](_0x1b33('0x9'),attributes,{'tableName':_0x1b33('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdb9a=['bluebird','request-promise','rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','report_jscripty_questions','util','../../config/logger','moment'];(function(_0x7d30b0,_0x593dce){var _0x253771=function(_0x2c0537){while(--_0x2c0537){_0x7d30b0['push'](_0x7d30b0['shift']());}};_0x253771(++_0x593dce);}(_0xdb9a,0x173));var _0xadb9=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdb9a[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require(_0xadb9('0x0'));var logger=require(_0xadb9('0x1'))('api');var moment=require(_0xadb9('0x2'));var BPromise=require(_0xadb9('0x3'));var rp=require(_0xadb9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xadb9('0x5'));var config=require(_0xadb9('0x6'));var attributes=require(_0xadb9('0x7'));module[_0xadb9('0x8')]=function(_0x1063e5,_0x7f3118){return _0x1063e5[_0xadb9('0x9')]('JscriptyQuestionReport',attributes,{'tableName':_0xadb9('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c455907..ddadc71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc64=['info','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyQuestionReport,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0xcaa4b9,_0x124ea2){var _0x4dc6d2=function(_0x5dce39){while(--_0x5dce39){_0xcaa4b9['push'](_0xcaa4b9['shift']());}};_0x4dc6d2(++_0x124ea2);}(_0xcc64,0x1c2));var _0x4cc6=function(_0x532885,_0x471824){_0x532885=_0x532885-0x0;var _0x32b183=_0xcc64[_0x532885];return _0x32b183;};'use strict';var _=require(_0x4cc6('0x0'));var util=require('util');var moment=require(_0x4cc6('0x1'));var BPromise=require(_0x4cc6('0x2'));var rs=require(_0x4cc6('0x3'));var fs=require('fs');var Redis=require(_0x4cc6('0x4'));var db=require(_0x4cc6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x4cc6('0x6'))('rpc');var config=require(_0x4cc6('0x7'));var jayson=require(_0x4cc6('0x8'));var client=jayson['client'][_0x4cc6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4e770a,_0x1bd81e,_0x2882a7){return new BPromise(function(_0x1aac14,_0x2797ef){return client['request'](_0x4e770a,_0x2882a7)['then'](function(_0x20dc46){logger[_0x4cc6('0xa')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x1bd81e,_0x4cc6('0xb'));logger[_0x4cc6('0xc')](_0x4cc6('0xd'),_0x1bd81e,_0x4cc6('0xb'),JSON[_0x4cc6('0xe')](_0x20dc46));if(_0x20dc46['error']){if(_0x20dc46[_0x4cc6('0xf')][_0x4cc6('0x10')]===0x1f4){logger[_0x4cc6('0xf')](_0x4cc6('0x11'),_0x1bd81e,_0x20dc46[_0x4cc6('0xf')][_0x4cc6('0x12')]);return _0x2797ef(_0x20dc46['error'][_0x4cc6('0x12')]);}logger['error'](_0x4cc6('0x11'),_0x1bd81e,_0x20dc46['error']['message']);return _0x1aac14(_0x20dc46[_0x4cc6('0xf')][_0x4cc6('0x12')]);}else{logger[_0x4cc6('0xa')](_0x4cc6('0x11'),_0x1bd81e,_0x4cc6('0xb'));_0x1aac14(_0x20dc46['result'][_0x4cc6('0x12')]);}})[_0x4cc6('0x13')](function(_0x4dd1c6){logger[_0x4cc6('0xf')](_0x4cc6('0x11'),_0x1bd81e,_0x4dd1c6);_0x2797ef(_0x4dd1c6);});});}
\ No newline at end of file
+var _0x981d=['stringify','error','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','rpc','http','request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s'];(function(_0x2b8807,_0xf92c50){var _0x26493f=function(_0x473062){while(--_0x473062){_0x2b8807['push'](_0x2b8807['shift']());}};_0x26493f(++_0xf92c50);}(_0x981d,0x137));var _0xd981=function(_0x321721,_0x44f31a){_0x321721=_0x321721-0x0;var _0xb72892=_0x981d[_0x321721];return _0xb72892;};'use strict';var _=require(_0xd981('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd981('0x1'));var rs=require(_0xd981('0x2'));var fs=require('fs');var Redis=require(_0xd981('0x3'));var db=require(_0xd981('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd981('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xd981('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2a3f43,_0x42b549,_0x329b4f){return new BPromise(function(_0x2f9d6c,_0x148a3d){return client[_0xd981('0x7')](_0x2a3f43,_0x329b4f)['then'](function(_0x1aa160){logger[_0xd981('0x8')](_0xd981('0x9'),_0x42b549,_0xd981('0xa'));logger[_0xd981('0xb')](_0xd981('0xc'),_0x42b549,_0xd981('0xa'),JSON[_0xd981('0xd')](_0x1aa160));if(_0x1aa160[_0xd981('0xe')]){if(_0x1aa160['error']['code']===0x1f4){logger[_0xd981('0xe')](_0xd981('0x9'),_0x42b549,_0x1aa160[_0xd981('0xe')]['message']);return _0x148a3d(_0x1aa160['error']['message']);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x42b549,_0x1aa160[_0xd981('0xe')]['message']);return _0x2f9d6c(_0x1aa160[_0xd981('0xe')][_0xd981('0xf')]);}else{logger[_0xd981('0x8')](_0xd981('0x9'),_0x42b549,'request\x20sent');_0x2f9d6c(_0x1aa160[_0xd981('0x10')]['message']);}})[_0xd981('0x11')](function(_0xbaccd8){logger[_0xd981('0xe')](_0xd981('0x9'),_0x42b549,_0xbaccd8);_0x148a3d(_0xbaccd8);});});}
\ No newline at end of file
index 400e133..f16a357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x730f=['destroy','exports','util','path','express','Router','fs-extra','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','describe','/:id','show','getQuestions','post','create','put','update','delete'];(function(_0x4002d1,_0x25da0b){var _0x4088ab=function(_0x440bc8){while(--_0x440bc8){_0x4002d1['push'](_0x4002d1['shift']());}};_0x4088ab(++_0x25da0b);}(_0x730f,0x1e2));var _0xf730=function(_0x7e7d91,_0x368424){_0x7e7d91=_0x7e7d91-0x0;var _0x446a8f=_0x730f[_0x7e7d91];return _0x446a8f;};'use strict';var multer=require('multer');var util=require(_0xf730('0x0'));var path=require(_0xf730('0x1'));var timeout=require('connect-timeout');var express=require(_0xf730('0x2'));var router=express[_0xf730('0x3')]();var fs_extra=require(_0xf730('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf730('0x5'));var controller=require(_0xf730('0x6'));router[_0xf730('0x7')]('/',auth[_0xf730('0x8')](),controller['index']);router[_0xf730('0x7')]('/describe',auth['isAuthenticated'](),controller[_0xf730('0x9')]);router['get'](_0xf730('0xa'),auth[_0xf730('0x8')](),controller[_0xf730('0xb')]);router[_0xf730('0x7')]('/:id/questions',auth[_0xf730('0x8')](),controller[_0xf730('0xc')]);router[_0xf730('0xd')]('/',auth[_0xf730('0x8')](),controller[_0xf730('0xe')]);router[_0xf730('0xf')](_0xf730('0xa'),auth[_0xf730('0x8')](),controller[_0xf730('0x10')]);router[_0xf730('0x11')]('/:id',auth[_0xf730('0x8')](),controller[_0xf730('0x12')]);module[_0xf730('0x13')]=router;
\ No newline at end of file
+var _0x3336=['show','/:id/questions','getQuestions','post','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3336,0x133));var _0x6333=function(_0x409deb,_0x2b731){_0x409deb=_0x409deb-0x0;var _0x15a4f7=_0x3336[_0x409deb];return _0x15a4f7;};'use strict';var multer=require(_0x6333('0x0'));var util=require(_0x6333('0x1'));var path=require(_0x6333('0x2'));var timeout=require(_0x6333('0x3'));var express=require(_0x6333('0x4'));var router=express[_0x6333('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6333('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x6333('0x7'));var controller=require(_0x6333('0x8'));router[_0x6333('0x9')]('/',auth[_0x6333('0xa')](),controller[_0x6333('0xb')]);router[_0x6333('0x9')](_0x6333('0xc'),auth[_0x6333('0xa')](),controller[_0x6333('0xd')]);router[_0x6333('0x9')](_0x6333('0xe'),auth['isAuthenticated'](),controller[_0x6333('0xf')]);router[_0x6333('0x9')](_0x6333('0x10'),auth['isAuthenticated'](),controller[_0x6333('0x11')]);router[_0x6333('0x12')]('/',auth[_0x6333('0xa')](),controller['create']);router[_0x6333('0x13')](_0x6333('0xe'),auth[_0x6333('0xa')](),controller[_0x6333('0x14')]);router[_0x6333('0x15')](_0x6333('0xe'),auth[_0x6333('0xa')](),controller[_0x6333('0x16')]);module['exports']=router;
\ No newline at end of file
index fd07c70..bf2d84e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40d5=['sequelize','exports','setDataValue','starttime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','moment'];(function(_0x5da27f,_0x504b76){var _0x54a3fb=function(_0x3b65a8){while(--_0x3b65a8){_0x5da27f['push'](_0x5da27f['shift']());}};_0x54a3fb(++_0x504b76);}(_0x40d5,0x15d));var _0x540d=function(_0x180297,_0x56bb6d){_0x180297=_0x180297-0x0;var _0x1f7aae=_0x40d5[_0x180297];return _0x1f7aae;};'use strict';var moment=require(_0x540d('0x0'));var Sequelize=require(_0x540d('0x1'));module[_0x540d('0x2')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x4df556){this[_0x540d('0x3')](_0x540d('0x4'),_0x4df556);this[_0x540d('0x3')](_0x540d('0x5'),moment()[_0x540d('0x6')](_0x540d('0x7')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0x540d('0x8')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x540d('0x8')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x540d('0x8')]},'completed':{'type':Sequelize[_0x540d('0x9')],'defaultValue':![]}};
\ No newline at end of file
+var _0xb6f9=['endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','sequelize','exports','DATE'];(function(_0x3beabd,_0x34fb49){var _0x43d256=function(_0x12d8ab){while(--_0x12d8ab){_0x3beabd['push'](_0x3beabd['shift']());}};_0x43d256(++_0x34fb49);}(_0xb6f9,0x145));var _0x9b6f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb6f9[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require('moment');var Sequelize=require(_0x9b6f('0x0'));module[_0x9b6f('0x1')]={'starttime':{'type':Sequelize[_0x9b6f('0x2')],'set':function(_0x9c479d){this['setDataValue']('starttime',_0x9c479d);this['setDataValue'](_0x9b6f('0x3'),moment()[_0x9b6f('0x4')](_0x9b6f('0x5')));}},'endtime':{'type':Sequelize[_0x9b6f('0x2')]},'membername':{'type':Sequelize[_0x9b6f('0x6')]},'projectname':{'type':Sequelize[_0x9b6f('0x6')]},'queue':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x9b6f('0x6')]},'calleridname':{'type':Sequelize[_0x9b6f('0x6')]},'calleridnum':{'type':Sequelize[_0x9b6f('0x6')]},'completed':{'type':Sequelize[_0x9b6f('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 8a3e6a1..a8d637b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a88=['fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','Content-Range','apply','reject','update','then','destroy','end','stack','name','send','index','map','JscriptySessionReport','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','findOne','JscriptyQuestionReport','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs'];(function(_0x1e5fed,_0x512a20){var _0x4a9139=function(_0x22ace9){while(--_0x22ace9){_0x1e5fed['push'](_0x1e5fed['shift']());}};_0x4a9139(++_0x512a20);}(_0x9a88,0x171));var _0x89a8=function(_0x403230,_0x100c91){_0x403230=_0x403230-0x0;var _0x246eb3=_0x9a88[_0x403230];return _0x246eb3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x89a8('0x0'));var zipdir=require(_0x89a8('0x1'));var jsonpatch=require(_0x89a8('0x2'));var rp=require(_0x89a8('0x3'));var moment=require(_0x89a8('0x4'));var BPromise=require(_0x89a8('0x5'));var Mustache=require('mustache');var util=require(_0x89a8('0x6'));var path=require(_0x89a8('0x7'));var sox=require(_0x89a8('0x8'));var csv=require(_0x89a8('0x9'));var ejs=require(_0x89a8('0xa'));var fs=require('fs');var fs_extra=require(_0x89a8('0xb'));var _=require(_0x89a8('0xc'));var squel=require(_0x89a8('0xd'));var crypto=require('crypto');var jsforce=require(_0x89a8('0xe'));var deskjs=require(_0x89a8('0xf'));var toCsv=require(_0x89a8('0x9'));var querystring=require(_0x89a8('0x10'));var Papa=require(_0x89a8('0x11'));var Redis=require(_0x89a8('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x89a8('0x13'));var as=require(_0x89a8('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x89a8('0x15'))(_0x89a8('0x16'));var utils=require(_0x89a8('0x17'));var config=require(_0x89a8('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x89a8('0x19'))['db'];function respondWithStatusCode(_0x2de9cc,_0x4bd88b){_0x4bd88b=_0x4bd88b||0xcc;return function(_0x555f07){if(_0x555f07){return _0x2de9cc[_0x89a8('0x1a')](_0x4bd88b);}return _0x2de9cc['status'](_0x4bd88b)['end']();};}function respondWithResult(_0x2b852e,_0x59fdac){_0x59fdac=_0x59fdac||0xc8;return function(_0x36aeea){if(_0x36aeea){return _0x2b852e['status'](_0x59fdac)[_0x89a8('0x1b')](_0x36aeea);}};}function respondWithFilteredResult(_0x168c09,_0x3cdba4){return function(_0x2a24b9){if(_0x2a24b9){var _0x3ce675=typeof _0x3cdba4[_0x89a8('0x1c')]==='undefined'&&typeof _0x3cdba4[_0x89a8('0x1d')]===_0x89a8('0x1e');var _0x541932=_0x2a24b9[_0x89a8('0x1f')];var _0x1e96e3=_0x3ce675?0x0:_0x3cdba4['offset'];var _0x44bab6=_0x3ce675?_0x2a24b9[_0x89a8('0x1f')]:_0x3cdba4[_0x89a8('0x1c')]+_0x3cdba4[_0x89a8('0x1d')];var _0x31b7e0;if(_0x44bab6>=_0x541932){_0x44bab6=_0x541932;_0x31b7e0=0xc8;}else{_0x31b7e0=0xce;}_0x168c09[_0x89a8('0x20')](_0x31b7e0);return _0x168c09['set'](_0x89a8('0x21'),_0x1e96e3+'-'+_0x44bab6+'/'+_0x541932)['json'](_0x2a24b9);}return null;};}function patchUpdates(_0x784bd4){return function(_0x40ddba){try{jsonpatch[_0x89a8('0x22')](_0x40ddba,_0x784bd4,!![]);}catch(_0x48635d){return BPromise[_0x89a8('0x23')](_0x48635d);}return _0x40ddba['save']();};}function saveUpdates(_0x2ed07c,_0x5f452f){return function(_0x54f2ac){if(_0x54f2ac){return _0x54f2ac[_0x89a8('0x24')](_0x2ed07c)[_0x89a8('0x25')](function(_0x3a2471){return _0x3a2471;});}return null;};}function removeEntity(_0x16c39f,_0xce79bb){return function(_0x5348a3){if(_0x5348a3){return _0x5348a3[_0x89a8('0x26')]()[_0x89a8('0x25')](function(){_0x16c39f[_0x89a8('0x20')](0xcc)[_0x89a8('0x27')]();});}};}function handleEntityNotFound(_0x22bdd8,_0x4f5488){return function(_0x1cf411){if(!_0x1cf411){_0x22bdd8['sendStatus'](0x194);}return _0x1cf411;};}function handleError(_0x4dfcc9,_0x3a6f97){_0x3a6f97=_0x3a6f97||0x1f4;return function(_0x4a6497){logger['error'](_0x4a6497[_0x89a8('0x28')]);if(_0x4a6497['name']){delete _0x4a6497[_0x89a8('0x29')];}_0x4dfcc9[_0x89a8('0x20')](_0x3a6f97)[_0x89a8('0x2a')](_0x4a6497);};}exports[_0x89a8('0x2b')]=function(_0xa042bf,_0x97b83a){var _0x1d1528={},_0xe98fa5={},_0x2b4cf1={'count':0x0,'rows':[]};var _0x29a743=_[_0x89a8('0x2c')](db[_0x89a8('0x2d')]['rawAttributes'],function(_0x2642ce){return{'name':_0x2642ce['fieldName'],'type':_0x2642ce[_0x89a8('0x2e')][_0x89a8('0x2f')]};});_0xe98fa5[_0x89a8('0x30')]=_[_0x89a8('0x2c')](_0x29a743,_0x89a8('0x29'));_0xe98fa5[_0x89a8('0x31')]=_[_0x89a8('0x32')](_0xa042bf[_0x89a8('0x31')]);_0xe98fa5[_0x89a8('0x33')]=_[_0x89a8('0x34')](_0xe98fa5['model'],_0xe98fa5[_0x89a8('0x31')]);_0x1d1528[_0x89a8('0x35')]=_[_0x89a8('0x34')](_0xe98fa5[_0x89a8('0x30')],qs[_0x89a8('0x36')](_0xa042bf[_0x89a8('0x31')][_0x89a8('0x36')]));_0x1d1528[_0x89a8('0x35')]=_0x1d1528[_0x89a8('0x35')][_0x89a8('0x37')]?_0x1d1528[_0x89a8('0x35')]:_0xe98fa5['model'];if(!_0xa042bf[_0x89a8('0x31')][_0x89a8('0x38')](_0x89a8('0x39'))){_0x1d1528[_0x89a8('0x1d')]=qs[_0x89a8('0x1d')](_0xa042bf['query'][_0x89a8('0x1d')]);_0x1d1528['offset']=qs['offset'](_0xa042bf[_0x89a8('0x31')][_0x89a8('0x1c')]);}_0x1d1528[_0x89a8('0x3a')]=qs[_0x89a8('0x3b')](_0xa042bf[_0x89a8('0x31')]['sort']);_0x1d1528['where']=qs[_0x89a8('0x33')](_[_0x89a8('0x3c')](_0xa042bf['query'],_0xe98fa5[_0x89a8('0x33')]),_0x29a743);if(_0xa042bf['query'][_0x89a8('0x3d')]){_0x1d1528[_0x89a8('0x3e')]=_['merge'](_0x1d1528['where'],{'$or':_[_0x89a8('0x2c')](_0x29a743,function(_0x35f829){if(_0x35f829[_0x89a8('0x2e')]!=='VIRTUAL'){var _0x3f7aef={};_0x3f7aef[_0x35f829[_0x89a8('0x29')]]={'$like':'%'+_0xa042bf[_0x89a8('0x31')]['filter']+'%'};return _0x3f7aef;}})});}_0x1d1528=_[_0x89a8('0x3f')]({},_0x1d1528,_0xa042bf[_0x89a8('0x40')]);var _0x25edb8={'where':_0x1d1528['where']};return db['JscriptySessionReport'][_0x89a8('0x1f')](_0x25edb8)['then'](function(_0x3b0a20){_0x2b4cf1[_0x89a8('0x1f')]=_0x3b0a20;if(_0xa042bf[_0x89a8('0x31')][_0x89a8('0x41')]){_0x1d1528[_0x89a8('0x42')]=[{'all':!![]}];}return db[_0x89a8('0x2d')][_0x89a8('0x43')](_0x1d1528);})[_0x89a8('0x25')](function(_0x5a1fcd){_0x2b4cf1[_0x89a8('0x44')]=_0x5a1fcd;return _0x2b4cf1;})[_0x89a8('0x25')](respondWithFilteredResult(_0x97b83a,_0x1d1528))[_0x89a8('0x45')](handleError(_0x97b83a,null));};exports[_0x89a8('0x46')]=function(_0x167792,_0x549ba1){var _0x2893ed={'raw':!![],'where':{'id':_0x167792[_0x89a8('0x47')]['id']}},_0x58f237={};_0x58f237[_0x89a8('0x30')]=_['keys'](db[_0x89a8('0x2d')]['rawAttributes']);_0x58f237[_0x89a8('0x31')]=_[_0x89a8('0x32')](_0x167792[_0x89a8('0x31')]);_0x58f237[_0x89a8('0x33')]=_[_0x89a8('0x34')](_0x58f237['model'],_0x58f237[_0x89a8('0x31')]);_0x2893ed['attributes']=_[_0x89a8('0x34')](_0x58f237['model'],qs['fields'](_0x167792[_0x89a8('0x31')][_0x89a8('0x36')]));_0x2893ed[_0x89a8('0x35')]=_0x2893ed[_0x89a8('0x35')][_0x89a8('0x37')]?_0x2893ed[_0x89a8('0x35')]:_0x58f237[_0x89a8('0x30')];if(_0x167792[_0x89a8('0x31')][_0x89a8('0x41')]){_0x2893ed['include']=[{'all':!![]}];}_0x2893ed=_[_0x89a8('0x3f')]({},_0x2893ed,_0x167792[_0x89a8('0x40')]);return db['JscriptySessionReport']['find'](_0x2893ed)[_0x89a8('0x25')](handleEntityNotFound(_0x549ba1,null))['then'](respondWithResult(_0x549ba1,null))[_0x89a8('0x45')](handleError(_0x549ba1,null));};exports[_0x89a8('0x48')]=function(_0x3b0d6d,_0x240e59){return db['JscriptySessionReport'][_0x89a8('0x48')](_0x3b0d6d[_0x89a8('0x49')],{})[_0x89a8('0x25')](respondWithResult(_0x240e59,0xc9))[_0x89a8('0x45')](handleError(_0x240e59,null));};exports[_0x89a8('0x24')]=function(_0xa48062,_0x1de170){if(_0xa48062[_0x89a8('0x49')]['id']){delete _0xa48062['body']['id'];}return db[_0x89a8('0x2d')]['find']({'where':{'id':_0xa48062[_0x89a8('0x47')]['id']}})[_0x89a8('0x25')](handleEntityNotFound(_0x1de170,null))[_0x89a8('0x25')](saveUpdates(_0xa48062['body'],null))[_0x89a8('0x25')](respondWithResult(_0x1de170,null))[_0x89a8('0x45')](handleError(_0x1de170,null));};exports[_0x89a8('0x26')]=function(_0x5ea8c8,_0x242a0b){return db[_0x89a8('0x2d')]['find']({'where':{'id':_0x5ea8c8[_0x89a8('0x47')]['id']}})[_0x89a8('0x25')](handleEntityNotFound(_0x242a0b,null))[_0x89a8('0x25')](removeEntity(_0x242a0b,null))[_0x89a8('0x45')](handleError(_0x242a0b,null));};exports['describe']=function(_0xeb036c,_0x3aa564){return db['JscriptySessionReport']['describe']()[_0x89a8('0x25')](respondWithResult(_0x3aa564,null))[_0x89a8('0x45')](handleError(_0x3aa564,null));};exports['getQuestions']=function(_0x30937b,_0x32f2f7,_0x4639f7){var _0x300a89={'raw':!![],'where':{}};var _0x38f65e={};var _0x168823={'count':0x0,'rows':[]};return db[_0x89a8('0x2d')][_0x89a8('0x4a')]({'where':{'id':_0x30937b['params']['id']}})[_0x89a8('0x25')](handleEntityNotFound(_0x32f2f7,null))[_0x89a8('0x25')](function(_0x1f1842){if(_0x1f1842){_0x38f65e['model']=_[_0x89a8('0x32')](db[_0x89a8('0x4b')]['rawAttributes']);_0x38f65e[_0x89a8('0x31')]=_[_0x89a8('0x32')](_0x30937b[_0x89a8('0x31')]);_0x38f65e[_0x89a8('0x33')]=_[_0x89a8('0x34')](_0x38f65e['model'],_0x38f65e[_0x89a8('0x31')]);_0x300a89[_0x89a8('0x35')]=_[_0x89a8('0x34')](_0x38f65e[_0x89a8('0x30')],qs[_0x89a8('0x36')](_0x30937b['query']['fields']));_0x300a89[_0x89a8('0x35')]=_0x300a89[_0x89a8('0x35')][_0x89a8('0x37')]?_0x300a89[_0x89a8('0x35')]:_0x38f65e[_0x89a8('0x30')];if(!_0x30937b[_0x89a8('0x31')][_0x89a8('0x38')](_0x89a8('0x39'))){_0x300a89[_0x89a8('0x1d')]=qs[_0x89a8('0x1d')](_0x30937b[_0x89a8('0x31')][_0x89a8('0x1d')]);_0x300a89['offset']=qs[_0x89a8('0x1c')](_0x30937b['query'][_0x89a8('0x1c')]);}_0x300a89[_0x89a8('0x3a')]=qs['sort'](_0x30937b['query']['sort']);_0x300a89[_0x89a8('0x3e')]=qs['filters'](_['pick'](_0x30937b['query'],_0x38f65e[_0x89a8('0x33')]));_0x300a89[_0x89a8('0x3e')]['SessionId']=_0x1f1842['id'];if(_0x30937b[_0x89a8('0x31')][_0x89a8('0x3d')]){_0x300a89[_0x89a8('0x3e')]=_[_0x89a8('0x3f')](_0x300a89['where'],{'$or':_['map'](_0x300a89[_0x89a8('0x35')],function(_0x413b78){var _0x3e091c={};_0x3e091c[_0x413b78]={'$like':'%'+_0x30937b[_0x89a8('0x31')][_0x89a8('0x3d')]+'%'};return _0x3e091c;})});}_0x300a89=_[_0x89a8('0x3f')]({},_0x300a89,_0x30937b[_0x89a8('0x40')]);return db[_0x89a8('0x4b')]['count']({'where':_0x300a89['where']})[_0x89a8('0x25')](function(_0x56eb9a){_0x168823[_0x89a8('0x1f')]=_0x56eb9a;if(_0x30937b[_0x89a8('0x31')][_0x89a8('0x41')]){_0x300a89[_0x89a8('0x42')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0x89a8('0x43')](_0x300a89);})['then'](function(_0x9d3a48){_0x168823['rows']=_0x9d3a48;return _0x168823;});}})['then'](respondWithFilteredResult(_0x32f2f7,_0x300a89))[_0x89a8('0x45')](handleError(_0x32f2f7,null));};
\ No newline at end of file
+var _0xdb2f=['apply','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','query','keys','model','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','JscriptySessionReport','include','findAll','rows','catch','params','attributes','includeAll','find','create','body','update','describe','getQuestions','findOne','JscriptyQuestionReport','pick','SessionId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x2d022f,_0x258843){var _0xaa1339=function(_0x265c06){while(--_0x265c06){_0x2d022f['push'](_0x2d022f['shift']());}};_0xaa1339(++_0x258843);}(_0xdb2f,0x1bd));var _0xfdb2=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xdb2f[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xfdb2('0x0'));var rimraf=require(_0xfdb2('0x1'));var zipdir=require(_0xfdb2('0x2'));var jsonpatch=require(_0xfdb2('0x3'));var rp=require(_0xfdb2('0x4'));var moment=require(_0xfdb2('0x5'));var BPromise=require(_0xfdb2('0x6'));var Mustache=require(_0xfdb2('0x7'));var util=require(_0xfdb2('0x8'));var path=require(_0xfdb2('0x9'));var sox=require(_0xfdb2('0xa'));var csv=require(_0xfdb2('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfdb2('0xc'));var _=require(_0xfdb2('0xd'));var squel=require('squel');var crypto=require(_0xfdb2('0xe'));var jsforce=require(_0xfdb2('0xf'));var deskjs=require(_0xfdb2('0x10'));var toCsv=require(_0xfdb2('0xb'));var querystring=require('querystring');var Papa=require(_0xfdb2('0x11'));var Redis=require(_0xfdb2('0x12'));var authService=require(_0xfdb2('0x13'));var qs=require(_0xfdb2('0x14'));var as=require(_0xfdb2('0x15'));var hardwareService=require(_0xfdb2('0x16'));var logger=require(_0xfdb2('0x17'))('api');var utils=require(_0xfdb2('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xfdb2('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1417ce,_0x5a9e4b){_0x5a9e4b=_0x5a9e4b||0xcc;return function(_0x21ad1c){if(_0x21ad1c){return _0x1417ce[_0xfdb2('0x1a')](_0x5a9e4b);}return _0x1417ce['status'](_0x5a9e4b)['end']();};}function respondWithResult(_0x14d0a6,_0x5e3e2a){_0x5e3e2a=_0x5e3e2a||0xc8;return function(_0x21b226){if(_0x21b226){return _0x14d0a6[_0xfdb2('0x1b')](_0x5e3e2a)[_0xfdb2('0x1c')](_0x21b226);}};}function respondWithFilteredResult(_0x489fdc,_0x2e5d0e){return function(_0x11ef21){if(_0x11ef21){var _0x3e2bf7=typeof _0x2e5d0e[_0xfdb2('0x1d')]===_0xfdb2('0x1e')&&typeof _0x2e5d0e[_0xfdb2('0x1f')]==='undefined';var _0x49dbe8=_0x11ef21[_0xfdb2('0x20')];var _0x5e64dd=_0x3e2bf7?0x0:_0x2e5d0e[_0xfdb2('0x1d')];var _0x4dff84=_0x3e2bf7?_0x11ef21['count']:_0x2e5d0e[_0xfdb2('0x1d')]+_0x2e5d0e[_0xfdb2('0x1f')];var _0x369be9;if(_0x4dff84>=_0x49dbe8){_0x4dff84=_0x49dbe8;_0x369be9=0xc8;}else{_0x369be9=0xce;}_0x489fdc['status'](_0x369be9);return _0x489fdc[_0xfdb2('0x21')](_0xfdb2('0x22'),_0x5e64dd+'-'+_0x4dff84+'/'+_0x49dbe8)[_0xfdb2('0x1c')](_0x11ef21);}return null;};}function patchUpdates(_0x1bba28){return function(_0x59a1d0){try{jsonpatch[_0xfdb2('0x23')](_0x59a1d0,_0x1bba28,!![]);}catch(_0x1a4059){return BPromise['reject'](_0x1a4059);}return _0x59a1d0['save']();};}function saveUpdates(_0x59c33a,_0x1ec81d){return function(_0x1486a1){if(_0x1486a1){return _0x1486a1['update'](_0x59c33a)[_0xfdb2('0x24')](function(_0x2dcbd0){return _0x2dcbd0;});}return null;};}function removeEntity(_0x1148d6,_0x28c858){return function(_0x2d290c){if(_0x2d290c){return _0x2d290c[_0xfdb2('0x25')]()[_0xfdb2('0x24')](function(){_0x1148d6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x29a24e,_0x2c8e96){return function(_0x241cf1){if(!_0x241cf1){_0x29a24e[_0xfdb2('0x1a')](0x194);}return _0x241cf1;};}function handleError(_0x2f3698,_0x3a52ba){_0x3a52ba=_0x3a52ba||0x1f4;return function(_0x319228){logger[_0xfdb2('0x26')](_0x319228['stack']);if(_0x319228['name']){delete _0x319228[_0xfdb2('0x27')];}_0x2f3698[_0xfdb2('0x1b')](_0x3a52ba)[_0xfdb2('0x28')](_0x319228);};}exports[_0xfdb2('0x29')]=function(_0x5a100e,_0x4ff6dd){var _0x494a31={},_0x352c99={},_0x35189={'count':0x0,'rows':[]};var _0x160270=_[_0xfdb2('0x2a')](db['JscriptySessionReport'][_0xfdb2('0x2b')],function(_0x4a41a2){return{'name':_0x4a41a2[_0xfdb2('0x2c')],'type':_0x4a41a2[_0xfdb2('0x2d')]['key']};});_0x352c99['model']=_[_0xfdb2('0x2a')](_0x160270,_0xfdb2('0x27'));_0x352c99[_0xfdb2('0x2e')]=_[_0xfdb2('0x2f')](_0x5a100e[_0xfdb2('0x2e')]);_0x352c99['filters']=_['intersection'](_0x352c99[_0xfdb2('0x30')],_0x352c99[_0xfdb2('0x2e')]);_0x494a31['attributes']=_[_0xfdb2('0x31')](_0x352c99[_0xfdb2('0x30')],qs['fields'](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x32')]));_0x494a31['attributes']=_0x494a31['attributes'][_0xfdb2('0x33')]?_0x494a31['attributes']:_0x352c99[_0xfdb2('0x30')];if(!_0x5a100e['query'][_0xfdb2('0x34')](_0xfdb2('0x35'))){_0x494a31[_0xfdb2('0x1f')]=qs[_0xfdb2('0x1f')](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x1f')]);_0x494a31[_0xfdb2('0x1d')]=qs[_0xfdb2('0x1d')](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x1d')]);}_0x494a31[_0xfdb2('0x36')]=qs[_0xfdb2('0x37')](_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x37')]);_0x494a31[_0xfdb2('0x38')]=qs[_0xfdb2('0x39')](_['pick'](_0x5a100e['query'],_0x352c99[_0xfdb2('0x39')]),_0x160270);if(_0x5a100e[_0xfdb2('0x2e')][_0xfdb2('0x3a')]){_0x494a31['where']=_[_0xfdb2('0x3b')](_0x494a31[_0xfdb2('0x38')],{'$or':_[_0xfdb2('0x2a')](_0x160270,function(_0x13823b){if(_0x13823b[_0xfdb2('0x2d')]!==_0xfdb2('0x3c')){var _0x3bf524={};_0x3bf524[_0x13823b[_0xfdb2('0x27')]]={'$like':'%'+_0x5a100e[_0xfdb2('0x2e')]['filter']+'%'};return _0x3bf524;}})});}_0x494a31=_[_0xfdb2('0x3b')]({},_0x494a31,_0x5a100e[_0xfdb2('0x3d')]);var _0x2e4645={'where':_0x494a31['where']};return db[_0xfdb2('0x3e')]['count'](_0x2e4645)[_0xfdb2('0x24')](function(_0x33970d){_0x35189[_0xfdb2('0x20')]=_0x33970d;if(_0x5a100e[_0xfdb2('0x2e')]['includeAll']){_0x494a31[_0xfdb2('0x3f')]=[{'all':!![]}];}return db[_0xfdb2('0x3e')][_0xfdb2('0x40')](_0x494a31);})[_0xfdb2('0x24')](function(_0x14ab46){_0x35189[_0xfdb2('0x41')]=_0x14ab46;return _0x35189;})['then'](respondWithFilteredResult(_0x4ff6dd,_0x494a31))[_0xfdb2('0x42')](handleError(_0x4ff6dd,null));};exports['show']=function(_0x506232,_0x3a3513){var _0x5d4a1a={'raw':!![],'where':{'id':_0x506232[_0xfdb2('0x43')]['id']}},_0x181257={};_0x181257['model']=_['keys'](db[_0xfdb2('0x3e')]['rawAttributes']);_0x181257[_0xfdb2('0x2e')]=_[_0xfdb2('0x2f')](_0x506232[_0xfdb2('0x2e')]);_0x181257['filters']=_[_0xfdb2('0x31')](_0x181257[_0xfdb2('0x30')],_0x181257['query']);_0x5d4a1a[_0xfdb2('0x44')]=_[_0xfdb2('0x31')](_0x181257[_0xfdb2('0x30')],qs['fields'](_0x506232[_0xfdb2('0x2e')]['fields']));_0x5d4a1a[_0xfdb2('0x44')]=_0x5d4a1a['attributes']['length']?_0x5d4a1a[_0xfdb2('0x44')]:_0x181257['model'];if(_0x506232['query'][_0xfdb2('0x45')]){_0x5d4a1a[_0xfdb2('0x3f')]=[{'all':!![]}];}_0x5d4a1a=_[_0xfdb2('0x3b')]({},_0x5d4a1a,_0x506232['options']);return db[_0xfdb2('0x3e')][_0xfdb2('0x46')](_0x5d4a1a)[_0xfdb2('0x24')](handleEntityNotFound(_0x3a3513,null))[_0xfdb2('0x24')](respondWithResult(_0x3a3513,null))[_0xfdb2('0x42')](handleError(_0x3a3513,null));};exports['create']=function(_0x204a15,_0x2b4851){return db['JscriptySessionReport'][_0xfdb2('0x47')](_0x204a15[_0xfdb2('0x48')],{})['then'](respondWithResult(_0x2b4851,0xc9))[_0xfdb2('0x42')](handleError(_0x2b4851,null));};exports[_0xfdb2('0x49')]=function(_0x4eda8c,_0x589534){if(_0x4eda8c[_0xfdb2('0x48')]['id']){delete _0x4eda8c[_0xfdb2('0x48')]['id'];}return db[_0xfdb2('0x3e')][_0xfdb2('0x46')]({'where':{'id':_0x4eda8c[_0xfdb2('0x43')]['id']}})[_0xfdb2('0x24')](handleEntityNotFound(_0x589534,null))[_0xfdb2('0x24')](saveUpdates(_0x4eda8c[_0xfdb2('0x48')],null))[_0xfdb2('0x24')](respondWithResult(_0x589534,null))[_0xfdb2('0x42')](handleError(_0x589534,null));};exports[_0xfdb2('0x25')]=function(_0x355e3b,_0x346908){return db[_0xfdb2('0x3e')][_0xfdb2('0x46')]({'where':{'id':_0x355e3b[_0xfdb2('0x43')]['id']}})['then'](handleEntityNotFound(_0x346908,null))[_0xfdb2('0x24')](removeEntity(_0x346908,null))[_0xfdb2('0x42')](handleError(_0x346908,null));};exports[_0xfdb2('0x4a')]=function(_0xc6a540,_0x4e485e){return db[_0xfdb2('0x3e')]['describe']()[_0xfdb2('0x24')](respondWithResult(_0x4e485e,null))[_0xfdb2('0x42')](handleError(_0x4e485e,null));};exports[_0xfdb2('0x4b')]=function(_0x3c4f0e,_0x45fc43,_0x545900){var _0x43e8e4={'raw':!![],'where':{}};var _0x576eb3={};var _0x3b4224={'count':0x0,'rows':[]};return db[_0xfdb2('0x3e')][_0xfdb2('0x4c')]({'where':{'id':_0x3c4f0e[_0xfdb2('0x43')]['id']}})[_0xfdb2('0x24')](handleEntityNotFound(_0x45fc43,null))[_0xfdb2('0x24')](function(_0x3100ec){if(_0x3100ec){_0x576eb3[_0xfdb2('0x30')]=_[_0xfdb2('0x2f')](db[_0xfdb2('0x4d')][_0xfdb2('0x2b')]);_0x576eb3[_0xfdb2('0x2e')]=_[_0xfdb2('0x2f')](_0x3c4f0e[_0xfdb2('0x2e')]);_0x576eb3['filters']=_[_0xfdb2('0x31')](_0x576eb3[_0xfdb2('0x30')],_0x576eb3[_0xfdb2('0x2e')]);_0x43e8e4[_0xfdb2('0x44')]=_['intersection'](_0x576eb3[_0xfdb2('0x30')],qs[_0xfdb2('0x32')](_0x3c4f0e[_0xfdb2('0x2e')]['fields']));_0x43e8e4['attributes']=_0x43e8e4['attributes'][_0xfdb2('0x33')]?_0x43e8e4[_0xfdb2('0x44')]:_0x576eb3[_0xfdb2('0x30')];if(!_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x34')](_0xfdb2('0x35'))){_0x43e8e4[_0xfdb2('0x1f')]=qs[_0xfdb2('0x1f')](_0x3c4f0e['query'][_0xfdb2('0x1f')]);_0x43e8e4['offset']=qs[_0xfdb2('0x1d')](_0x3c4f0e[_0xfdb2('0x2e')]['offset']);}_0x43e8e4[_0xfdb2('0x36')]=qs[_0xfdb2('0x37')](_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x37')]);_0x43e8e4[_0xfdb2('0x38')]=qs['filters'](_[_0xfdb2('0x4e')](_0x3c4f0e[_0xfdb2('0x2e')],_0x576eb3['filters']));_0x43e8e4[_0xfdb2('0x38')][_0xfdb2('0x4f')]=_0x3100ec['id'];if(_0x3c4f0e[_0xfdb2('0x2e')]['filter']){_0x43e8e4[_0xfdb2('0x38')]=_[_0xfdb2('0x3b')](_0x43e8e4[_0xfdb2('0x38')],{'$or':_[_0xfdb2('0x2a')](_0x43e8e4[_0xfdb2('0x44')],function(_0x4ccc57){var _0x51dae5={};_0x51dae5[_0x4ccc57]={'$like':'%'+_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x3a')]+'%'};return _0x51dae5;})});}_0x43e8e4=_[_0xfdb2('0x3b')]({},_0x43e8e4,_0x3c4f0e['options']);return db[_0xfdb2('0x4d')][_0xfdb2('0x20')]({'where':_0x43e8e4[_0xfdb2('0x38')]})[_0xfdb2('0x24')](function(_0x3cc8e7){_0x3b4224[_0xfdb2('0x20')]=_0x3cc8e7;if(_0x3c4f0e[_0xfdb2('0x2e')][_0xfdb2('0x45')]){_0x43e8e4[_0xfdb2('0x3f')]=[{'all':!![]}];}return db[_0xfdb2('0x4d')][_0xfdb2('0x40')](_0x43e8e4);})[_0xfdb2('0x24')](function(_0x334ae1){_0x3b4224[_0xfdb2('0x41')]=_0x334ae1;return _0x3b4224;});}})[_0xfdb2('0x24')](respondWithFilteredResult(_0x45fc43,_0x43e8e4))[_0xfdb2('0x42')](handleError(_0x45fc43,null));};
\ No newline at end of file
index 37a3dd0..e5a8a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1883=['../../config/environment','./jscriptySessionReport.attributes','exports','define','JscriptySessionReport','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1ad279,_0x42d157){var _0x272861=function(_0x3cb41f){while(--_0x3cb41f){_0x1ad279['push'](_0x1ad279['shift']());}};_0x272861(++_0x42d157);}(_0x1883,0xab));var _0x3188=function(_0x40c375,_0x8a1a72){_0x40c375=_0x40c375-0x0;var _0x3b23e=_0x1883[_0x40c375];return _0x3b23e;};'use strict';var _=require(_0x3188('0x0'));var util=require(_0x3188('0x1'));var logger=require(_0x3188('0x2'))(_0x3188('0x3'));var moment=require(_0x3188('0x4'));var BPromise=require(_0x3188('0x5'));var rp=require(_0x3188('0x6'));var fs=require('fs');var path=require(_0x3188('0x7'));var rimraf=require(_0x3188('0x8'));var config=require(_0x3188('0x9'));var attributes=require(_0x3188('0xa'));module[_0x3188('0xb')]=function(_0x408ae0,_0x33b62d){return _0x408ae0[_0x3188('0xc')](_0x3188('0xd'),attributes,{'tableName':_0x3188('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4745=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes','exports','define','report_jscripty_sessions','lodash','util','../../config/logger'];(function(_0x54c1d1,_0x478f5e){var _0xbb806d=function(_0x478de3){while(--_0x478de3){_0x54c1d1['push'](_0x54c1d1['shift']());}};_0xbb806d(++_0x478f5e);}(_0x4745,0x1e7));var _0x5474=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0x4745[_0x92c450];return _0x2a9599;};'use strict';var _=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var logger=require(_0x5474('0x2'))(_0x5474('0x3'));var moment=require(_0x5474('0x4'));var BPromise=require(_0x5474('0x5'));var rp=require(_0x5474('0x6'));var fs=require('fs');var path=require(_0x5474('0x7'));var rimraf=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var attributes=require(_0x5474('0xa'));module[_0x5474('0xb')]=function(_0x4e7ce7,_0x3d1e1){return _0x4e7ce7[_0x5474('0xc')]('JscriptySessionReport',attributes,{'tableName':_0x5474('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a37f2e9..17b3be9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf55=['util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptySessionReport,\x20%s,\x20%s','message','info','result','catch','lodash'];(function(_0x5199d1,_0x3069d9){var _0x5d93ea=function(_0x3c3228){while(--_0x3c3228){_0x5199d1['push'](_0x5199d1['shift']());}};_0x5d93ea(++_0x3069d9);}(_0xdf55,0x83));var _0x5df5=function(_0x413b13,_0x4a25de){_0x413b13=_0x413b13-0x0;var _0x1cad2e=_0xdf55[_0x413b13];return _0x1cad2e;};'use strict';var _=require(_0x5df5('0x0'));var util=require(_0x5df5('0x1'));var moment=require('moment');var BPromise=require(_0x5df5('0x2'));var rs=require(_0x5df5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5df5('0x4'))['db'];var utils=require(_0x5df5('0x5'));var logger=require(_0x5df5('0x6'))('rpc');var config=require(_0x5df5('0x7'));var jayson=require(_0x5df5('0x8'));var client=jayson[_0x5df5('0x9')][_0x5df5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x9b8756,_0x2b7ed9,_0x4722a2){return new BPromise(function(_0x3743f3,_0x4d43a3){return client[_0x5df5('0xb')](_0x9b8756,_0x4722a2)[_0x5df5('0xc')](function(_0x41941e){logger['info']('JscriptySessionReport,\x20%s,\x20%s',_0x2b7ed9,_0x5df5('0xd'));logger['debug'](_0x5df5('0xe'),_0x2b7ed9,_0x5df5('0xd'),JSON['stringify'](_0x41941e));if(_0x41941e['error']){if(_0x41941e[_0x5df5('0xf')][_0x5df5('0x10')]===0x1f4){logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);return _0x4d43a3(_0x41941e[_0x5df5('0xf')][_0x5df5('0x12')]);}logger[_0x5df5('0xf')](_0x5df5('0x11'),_0x2b7ed9,_0x41941e['error'][_0x5df5('0x12')]);return _0x3743f3(_0x41941e['error'][_0x5df5('0x12')]);}else{logger[_0x5df5('0x13')](_0x5df5('0x11'),_0x2b7ed9,_0x5df5('0xd'));_0x3743f3(_0x41941e[_0x5df5('0x14')]['message']);}})[_0x5df5('0x15')](function(_0x457205){logger['error'](_0x5df5('0x11'),_0x2b7ed9,_0x457205);_0x4d43a3(_0x457205);});});}
\ No newline at end of file
+var _0xa6b0=['client','http','request','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x9a764,_0x399ff6){var _0x43f792=function(_0x41a032){while(--_0x41a032){_0x9a764['push'](_0x9a764['shift']());}};_0x43f792(++_0x399ff6);}(_0xa6b0,0xaf));var _0x0a6b=function(_0x3dc428,_0x2d1a25){_0x3dc428=_0x3dc428-0x0;var _0x4bdea0=_0xa6b0[_0x3dc428];return _0x4bdea0;};'use strict';var _=require(_0x0a6b('0x0'));var util=require(_0x0a6b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0a6b('0x2'));var fs=require('fs');var Redis=require(_0x0a6b('0x3'));var db=require(_0x0a6b('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0a6b('0x5'))(_0x0a6b('0x6'));var config=require(_0x0a6b('0x7'));var jayson=require(_0x0a6b('0x8'));var client=jayson[_0x0a6b('0x9')][_0x0a6b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b5fb5,_0xa908dd,_0x26f761){return new BPromise(function(_0x340a33,_0x8e89f){return client[_0x0a6b('0xb')](_0x1b5fb5,_0x26f761)['then'](function(_0x493948){logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));logger[_0x0a6b('0xf')](_0x0a6b('0x10'),_0xa908dd,_0x0a6b('0xe'),JSON[_0x0a6b('0x11')](_0x493948));if(_0x493948[_0x0a6b('0x12')]){if(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x13')]===0x1f4){logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x8e89f(_0x493948['error']['message']);}logger[_0x0a6b('0x12')](_0x0a6b('0xd'),_0xa908dd,_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);return _0x340a33(_0x493948[_0x0a6b('0x12')][_0x0a6b('0x14')]);}else{logger[_0x0a6b('0xc')](_0x0a6b('0xd'),_0xa908dd,_0x0a6b('0xe'));_0x340a33(_0x493948[_0x0a6b('0x15')]['message']);}})[_0x0a6b('0x16')](function(_0x1538f4){logger['error'](_0x0a6b('0xd'),_0xa908dd,_0x1538f4);_0x8e89f(_0x1538f4);});});}
\ No newline at end of file
index cb60030..833041a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f5=['index','put','/:id','isAuthenticated','update','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./license.controller','get'];(function(_0x1af322,_0x16d095){var _0x28ac48=function(_0x32a921){while(--_0x32a921){_0x1af322['push'](_0x1af322['shift']());}};_0x28ac48(++_0x16d095);}(_0x14f5,0xae));var _0x514f=function(_0xa7fb1f,_0x1c49bc){_0xa7fb1f=_0xa7fb1f-0x0;var _0x32e057=_0x14f5[_0xa7fb1f];return _0x32e057;};'use strict';var multer=require('multer');var util=require(_0x514f('0x0'));var path=require('path');var timeout=require(_0x514f('0x1'));var express=require(_0x514f('0x2'));var router=express[_0x514f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x514f('0x4'));var interaction=require(_0x514f('0x5'));var config=require('../../config/environment');var controller=require(_0x514f('0x6'));router[_0x514f('0x7')]('/',controller[_0x514f('0x8')]);router[_0x514f('0x9')](_0x514f('0xa'),auth[_0x514f('0xb')](),controller[_0x514f('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0xf50b=['put','/:id','isAuthenticated','update','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./license.controller','get','index'];(function(_0x218dd5,_0x556e84){var _0x4524c7=function(_0x419e15){while(--_0x419e15){_0x218dd5['push'](_0x218dd5['shift']());}};_0x4524c7(++_0x556e84);}(_0xf50b,0xc8));var _0xbf50=function(_0x2c133f,_0x386f){_0x2c133f=_0x2c133f-0x0;var _0x763aa9=_0xf50b[_0x2c133f];return _0x763aa9;};'use strict';var multer=require(_0xbf50('0x0'));var util=require(_0xbf50('0x1'));var path=require('path');var timeout=require(_0xbf50('0x2'));var express=require(_0xbf50('0x3'));var router=express[_0xbf50('0x4')]();var fs_extra=require(_0xbf50('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbf50('0x6'));var config=require('../../config/environment');var controller=require(_0xbf50('0x7'));router[_0xbf50('0x8')]('/',controller[_0xbf50('0x9')]);router[_0xbf50('0xa')](_0xbf50('0xb'),auth[_0xbf50('0xc')](),controller[_0xbf50('0xd')]);module['exports']=router;
\ No newline at end of file
index 0c35548..5ad5e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6db3=['exports','TEXT','STRING','INTEGER','sequelize'];(function(_0x1d103b,_0x5d4d48){var _0x33f998=function(_0x2ee696){while(--_0x2ee696){_0x1d103b['push'](_0x1d103b['shift']());}};_0x33f998(++_0x5d4d48);}(_0x6db3,0x10d));var _0x36db=function(_0x27d020,_0x3e50af){_0x27d020=_0x27d020-0x0;var _0x14a24b=_0x6db3[_0x27d020];return _0x14a24b;};'use strict';var Sequelize=require(_0x36db('0x0'));module[_0x36db('0x1')]={'license':{'type':Sequelize[_0x36db('0x2')]},'data1':{'type':Sequelize[_0x36db('0x3')]},'data2':{'type':Sequelize[_0x36db('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0x36db('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x45f5=['sequelize','TEXT','STRING','INTEGER'];(function(_0x46f1a6,_0xc7a582){var _0x38429a=function(_0x31adae){while(--_0x31adae){_0x46f1a6['push'](_0x46f1a6['shift']());}};_0x38429a(++_0xc7a582);}(_0x45f5,0x94));var _0x545f=function(_0x5cabac,_0x5ccb08){_0x5cabac=_0x5cabac-0x0;var _0x5f47b8=_0x45f5[_0x5cabac];return _0x5f47b8;};'use strict';var Sequelize=require(_0x545f('0x0'));module['exports']={'license':{'type':Sequelize[_0x545f('0x1')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0x545f('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x545f('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 8bf0f7c..adc67f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['demo','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','../../config/license/util','model','keys','rawAttributes','query','filters','intersection','attributes','fields','merge','options','catch','body','License','find','checkLicense','key'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x0295,0x1f0));var _0x5029=function(_0x18528a,_0x4de7d1){_0x18528a=_0x18528a-0x0;var _0x2c3214=_0x0295[_0x18528a];return _0x2c3214;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}var utilLicense=require(_0x5029('0x25'));exports['index']=function(_0x32da06,_0x251f99){var _0xe5313e={'raw':!![],'where':{'id':0x1}},_0x4b6f92={};_0x4b6f92[_0x5029('0x26')]=_[_0x5029('0x27')](db['License'][_0x5029('0x28')]);_0x4b6f92[_0x5029('0x29')]=_[_0x5029('0x27')](_0x32da06[_0x5029('0x29')]);_0x4b6f92[_0x5029('0x2a')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],_0x4b6f92[_0x5029('0x29')]);_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2b')](_0x4b6f92[_0x5029('0x26')],qs[_0x5029('0x2d')](_0x32da06['query'][_0x5029('0x2d')]));_0xe5313e['attributes']=_0xe5313e[_0x5029('0x2c')]['length']?_0xe5313e['attributes']:_0x4b6f92[_0x5029('0x26')];_0xe5313e=_[_0x5029('0x2e')]({},_0xe5313e,_0x32da06[_0x5029('0x2f')]);return utilLicense['getLicense'](_0xe5313e)[_0x5029('0x20')](respondWithResult(_0x251f99,null))[_0x5029('0x30')](handleError(_0x251f99,null));};exports[_0x5029('0x1f')]=function(_0x29c59a,_0x1bb896){if(_0x29c59a[_0x5029('0x31')]['id']){delete _0x29c59a[_0x5029('0x31')]['id'];}return db[_0x5029('0x32')][_0x5029('0x33')]({'where':{'id':_0x29c59a['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x1bb896,null))[_0x5029('0x20')](function(_0xc110e8){var _0x1b3817=_0xc110e8['get']({'plain':!![]});return utilLicense[_0x5029('0x34')](_0x1b3817,_0x29c59a[_0x5029('0x31')][_0x5029('0x35')]);})['then'](function(_0x4904cc){if(!_0x4904cc[_0x5029('0x36')]){return saveUpdates(_0x29c59a[_0x5029('0x31')],null);}return _0x4904cc;})['then'](respondWithResult(_0x1bb896,null))['catch'](handleError(_0x1bb896,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(_0x5399b0,_0xfd3c16){var _0x54f067=function(_0x5e6e36){while(--_0x5e6e36){_0x5399b0['push'](_0x5399b0['shift']());}};_0x54f067(++_0xfd3c16);}(_0xabce,0x103));var _0xeabc=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xabce[_0x3054be];return _0x3df150;};'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 0451b5c..facc96b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb77e=['exports','define','License','license','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./license.attributes'];(function(_0x4a0fb7,_0x154bf1){var _0x36ff09=function(_0x21ad9e){while(--_0x21ad9e){_0x4a0fb7['push'](_0x4a0fb7['shift']());}};_0x36ff09(++_0x154bf1);}(_0xb77e,0xb8));var _0xeb77=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xb77e[_0xb0f7c3];return _0x28ea68;};'use strict';var _=require('lodash');var util=require(_0xeb77('0x0'));var logger=require('../../config/logger')(_0xeb77('0x1'));var moment=require(_0xeb77('0x2'));var BPromise=require(_0xeb77('0x3'));var rp=require(_0xeb77('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xeb77('0x5'));var config=require(_0xeb77('0x6'));var attributes=require(_0xeb77('0x7'));module[_0xeb77('0x8')]=function(_0x37d9fd,_0x49354b){return _0x37d9fd[_0xeb77('0x9')](_0xeb77('0xa'),attributes,{'tableName':_0xeb77('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbd9b=['request-promise','path','rimraf','./license.attributes','exports','define','license','lodash','util','api','moment','bluebird'];(function(_0x368787,_0x29d74f){var _0x545265=function(_0x35b1d1){while(--_0x35b1d1){_0x368787['push'](_0x368787['shift']());}};_0x545265(++_0x29d74f);}(_0xbd9b,0x67));var _0xbbd9=function(_0x3aa130,_0x323ce4){_0x3aa130=_0x3aa130-0x0;var _0x2de283=_0xbd9b[_0x3aa130];return _0x2de283;};'use strict';var _=require(_0xbbd9('0x0'));var util=require(_0xbbd9('0x1'));var logger=require('../../config/logger')(_0xbbd9('0x2'));var moment=require(_0xbbd9('0x3'));var BPromise=require(_0xbbd9('0x4'));var rp=require(_0xbbd9('0x5'));var fs=require('fs');var path=require(_0xbbd9('0x6'));var rimraf=require(_0xbbd9('0x7'));var config=require('../../config/environment');var attributes=require(_0xbbd9('0x8'));module[_0xbbd9('0x9')]=function(_0x2e1852,_0x2d8013){return _0x2e1852[_0xbbd9('0xa')]('License',attributes,{'tableName':_0xbbd9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10c17e1..ef5f55d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa01=['info','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','debug','stringify','error','message','License,\x20%s,\x20%s'];(function(_0x312e52,_0x7b6a6e){var _0x245994=function(_0x597b68){while(--_0x597b68){_0x312e52['push'](_0x312e52['shift']());}};_0x245994(++_0x7b6a6e);}(_0xfa01,0x1a4));var _0x1fa0=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xfa01[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x1fa0('0x0'));var util=require(_0x1fa0('0x1'));var moment=require(_0x1fa0('0x2'));var BPromise=require(_0x1fa0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1fa0('0x4'));var db=require(_0x1fa0('0x5'))['db'];var utils=require(_0x1fa0('0x6'));var logger=require(_0x1fa0('0x7'))(_0x1fa0('0x8'));var config=require(_0x1fa0('0x9'));var jayson=require(_0x1fa0('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x35c0b7,_0x30f74e,_0x31c054){return new BPromise(function(_0x17c675,_0x595947){return client['request'](_0x35c0b7,_0x31c054)[_0x1fa0('0xb')](function(_0x4d0dc3){logger['info']('License,\x20%s,\x20%s',_0x30f74e,'request\x20sent');logger[_0x1fa0('0xc')]('License,\x20%s,\x20%s,\x20%s',_0x30f74e,'request\x20sent',JSON[_0x1fa0('0xd')](_0x4d0dc3));if(_0x4d0dc3['error']){if(_0x4d0dc3[_0x1fa0('0xe')]['code']===0x1f4){logger[_0x1fa0('0xe')]('License,\x20%s,\x20%s',_0x30f74e,_0x4d0dc3[_0x1fa0('0xe')][_0x1fa0('0xf')]);return _0x595947(_0x4d0dc3['error'][_0x1fa0('0xf')]);}logger[_0x1fa0('0xe')](_0x1fa0('0x10'),_0x30f74e,_0x4d0dc3[_0x1fa0('0xe')][_0x1fa0('0xf')]);return _0x17c675(_0x4d0dc3['error'][_0x1fa0('0xf')]);}else{logger[_0x1fa0('0x11')](_0x1fa0('0x10'),_0x30f74e,'request\x20sent');_0x17c675(_0x4d0dc3['result']['message']);}})[_0x1fa0('0x12')](function(_0x11e7ab){logger[_0x1fa0('0xe')](_0x1fa0('0x10'),_0x30f74e,_0x11e7ab);_0x595947(_0x11e7ab);});});}
\ No newline at end of file
+var _0xdcee=['rpc','jayson/promise','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x45dd0e,_0x28e603){var _0x50e5ca=function(_0x46a412){while(--_0x46a412){_0x45dd0e['push'](_0x45dd0e['shift']());}};_0x50e5ca(++_0x28e603);}(_0xdcee,0xe8));var _0xedce=function(_0x10b6ae,_0x56a559){_0x10b6ae=_0x10b6ae-0x0;var _0x1321e9=_0xdcee[_0x10b6ae];return _0x1321e9;};'use strict';var _=require(_0xedce('0x0'));var util=require(_0xedce('0x1'));var moment=require(_0xedce('0x2'));var BPromise=require(_0xedce('0x3'));var rs=require(_0xedce('0x4'));var fs=require('fs');var Redis=require(_0xedce('0x5'));var db=require(_0xedce('0x6'))['db'];var utils=require(_0xedce('0x7'));var logger=require('../../config/logger')(_0xedce('0x8'));var config=require('../../config/environment');var jayson=require(_0xedce('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3ad40b,_0x1a0b40,_0x2bab6f){return new BPromise(function(_0x4ee61f,_0x1efe3b){return client['request'](_0x3ad40b,_0x2bab6f)['then'](function(_0x5bcd96){logger[_0xedce('0xa')](_0xedce('0xb'),_0x1a0b40,_0xedce('0xc'));logger[_0xedce('0xd')](_0xedce('0xe'),_0x1a0b40,_0xedce('0xc'),JSON[_0xedce('0xf')](_0x5bcd96));if(_0x5bcd96[_0xedce('0x10')]){if(_0x5bcd96['error']['code']===0x1f4){logger[_0xedce('0x10')](_0xedce('0xb'),_0x1a0b40,_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);return _0x1efe3b(_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);}logger[_0xedce('0x10')]('License,\x20%s,\x20%s',_0x1a0b40,_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);return _0x4ee61f(_0x5bcd96[_0xedce('0x10')][_0xedce('0x11')]);}else{logger['info'](_0xedce('0xb'),_0x1a0b40,_0xedce('0xc'));_0x4ee61f(_0x5bcd96[_0xedce('0x12')]['message']);}})[_0xedce('0x13')](function(_0x23bc4d){logger['error'](_0xedce('0xb'),_0x1a0b40,_0x23bc4d);_0x1efe3b(_0x23bc4d);});});}
\ No newline at end of file
index 136d411..848c7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ef=['/:id/dispositions','addDisposition','addAnswer','addImap','addSmtp','addInteraction','/:id/send','send','put','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','removeAgents','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./mailAccount.controller','get','isAuthenticated','index','/:id','show','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','/:id/verify','verifySmtp','/:id/users','post'];(function(_0x4345ed,_0x1a9ffa){var _0x3b99a0=function(_0xd49e4){while(--_0xd49e4){_0x4345ed['push'](_0x4345ed['shift']());}};_0x3b99a0(++_0x1a9ffa);}(_0xa2ef,0x158));var _0xfa2e=function(_0xe5bfdd,_0x5dba2e){_0xe5bfdd=_0xe5bfdd-0x0;var _0x3040aa=_0xa2ef[_0xe5bfdd];return _0x3040aa;};'use strict';var multer=require(_0xfa2e('0x0'));var util=require('util');var path=require(_0xfa2e('0x1'));var timeout=require('connect-timeout');var express=require(_0xfa2e('0x2'));var router=express[_0xfa2e('0x3')]();var fs_extra=require(_0xfa2e('0x4'));var auth=require(_0xfa2e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xfa2e('0x6'));router[_0xfa2e('0x7')]('/',auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x9')]);router['get']('/describe',auth[_0xfa2e('0x8')](),controller['describe']);router[_0xfa2e('0x7')](_0xfa2e('0xa'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0xb')]);router[_0xfa2e('0x7')]('/:id/dispositions',auth[_0xfa2e('0x8')](),controller['getDispositions']);router[_0xfa2e('0x7')](_0xfa2e('0xc'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0xd')]);router[_0xfa2e('0x7')](_0xfa2e('0xe'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0xf')]);router[_0xfa2e('0x7')](_0xfa2e('0x10'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x11')]);router[_0xfa2e('0x7')](_0xfa2e('0x12'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x13')]);router[_0xfa2e('0x7')](_0xfa2e('0x14'),auth[_0xfa2e('0x8')](),controller['getApplications']);router[_0xfa2e('0x7')]('/:id/messages',auth[_0xfa2e('0x8')](),controller['getMessages']);router[_0xfa2e('0x7')](_0xfa2e('0x15'),auth['isAuthenticated'](),controller[_0xfa2e('0x16')]);router[_0xfa2e('0x7')](_0xfa2e('0x17'),auth[_0xfa2e('0x8')](),controller['getAgents']);router[_0xfa2e('0x18')](_0xfa2e('0x19'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x1a')]);router[_0xfa2e('0x18')](_0xfa2e('0xc'),auth['isAuthenticated'](),controller[_0xfa2e('0x1b')]);router[_0xfa2e('0x18')]('/',auth['isAuthenticated'](),controller['create']);router[_0xfa2e('0x18')](_0xfa2e('0xe'),auth['isAuthenticated'](),controller[_0xfa2e('0x1c')]);router[_0xfa2e('0x18')]('/:id/out_servers',auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x1d')]);router[_0xfa2e('0x18')](_0xfa2e('0x12'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x1e')]);router['post'](_0xfa2e('0x14'),auth['isAuthenticated'](),controller['addApplications']);router['post'](_0xfa2e('0x1f'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x20')]);router[_0xfa2e('0x18')]('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0xfa2e('0x21')](_0xfa2e('0xa'),auth[_0xfa2e('0x8')](),controller['update']);router[_0xfa2e('0x22')](_0xfa2e('0x19'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x23')]);router[_0xfa2e('0x22')](_0xfa2e('0xc'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x24')]);router[_0xfa2e('0x22')](_0xfa2e('0xe'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x25')]);router[_0xfa2e('0x22')]('/:id/out_servers',auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x26')]);router[_0xfa2e('0x22')](_0xfa2e('0xa'),auth[_0xfa2e('0x8')](),controller['destroy']);router[_0xfa2e('0x22')](_0xfa2e('0x17'),auth[_0xfa2e('0x8')](),controller[_0xfa2e('0x27')]);module[_0xfa2e('0x28')]=router;
\ No newline at end of file
+var _0x366e=['update','delete','removeAnswers','removeImap','removeSmtp','destroy','/:id/users','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','isAuthenticated','index','/describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','getAgents','post','addDisposition','create','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','addAgents','put'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x366e,0xf2));var _0xe366=function(_0x1c322f,_0x3ba8e9){_0x1c322f=_0x1c322f-0x0;var _0x318f79=_0x366e[_0x1c322f];return _0x318f79;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xe366('0x0'));var express=require(_0xe366('0x1'));var router=express[_0xe366('0x2')]();var fs_extra=require(_0xe366('0x3'));var auth=require(_0xe366('0x4'));var interaction=require(_0xe366('0x5'));var config=require(_0xe366('0x6'));var controller=require(_0xe366('0x7'));router['get']('/',auth[_0xe366('0x8')](),controller[_0xe366('0x9')]);router['get'](_0xe366('0xa'),auth[_0xe366('0x8')](),controller['describe']);router[_0xe366('0xb')](_0xe366('0xc'),auth['isAuthenticated'](),controller[_0xe366('0xd')]);router[_0xe366('0xb')](_0xe366('0xe'),auth[_0xe366('0x8')](),controller[_0xe366('0xf')]);router[_0xe366('0xb')](_0xe366('0x10'),auth[_0xe366('0x8')](),controller[_0xe366('0x11')]);router[_0xe366('0xb')](_0xe366('0x12'),auth['isAuthenticated'](),controller[_0xe366('0x13')]);router['get'](_0xe366('0x14'),auth['isAuthenticated'](),controller[_0xe366('0x15')]);router[_0xe366('0xb')](_0xe366('0x16'),auth[_0xe366('0x8')](),controller[_0xe366('0x17')]);router[_0xe366('0xb')](_0xe366('0x18'),auth[_0xe366('0x8')](),controller[_0xe366('0x19')]);router[_0xe366('0xb')](_0xe366('0x1a'),auth['isAuthenticated'](),controller[_0xe366('0x1b')]);router[_0xe366('0xb')]('/:id/verify',auth[_0xe366('0x8')](),controller['verifySmtp']);router[_0xe366('0xb')]('/:id/users',auth[_0xe366('0x8')](),controller[_0xe366('0x1c')]);router[_0xe366('0x1d')](_0xe366('0xe'),auth[_0xe366('0x8')](),controller[_0xe366('0x1e')]);router[_0xe366('0x1d')](_0xe366('0x10'),auth[_0xe366('0x8')](),controller['addAnswer']);router[_0xe366('0x1d')]('/',auth[_0xe366('0x8')](),controller[_0xe366('0x1f')]);router[_0xe366('0x1d')](_0xe366('0x12'),auth['isAuthenticated'](),controller[_0xe366('0x20')]);router[_0xe366('0x1d')](_0xe366('0x14'),auth[_0xe366('0x8')](),controller[_0xe366('0x21')]);router[_0xe366('0x1d')](_0xe366('0x16'),auth[_0xe366('0x8')](),controller[_0xe366('0x22')]);router[_0xe366('0x1d')](_0xe366('0x18'),auth[_0xe366('0x8')](),controller[_0xe366('0x23')]);router[_0xe366('0x1d')](_0xe366('0x24'),auth[_0xe366('0x8')](),controller[_0xe366('0x25')]);router[_0xe366('0x1d')]('/:id/users',auth[_0xe366('0x8')](),controller[_0xe366('0x26')]);router[_0xe366('0x27')](_0xe366('0xc'),auth[_0xe366('0x8')](),controller[_0xe366('0x28')]);router['delete'](_0xe366('0xe'),auth[_0xe366('0x8')](),controller['removeDispositions']);router[_0xe366('0x29')](_0xe366('0x10'),auth[_0xe366('0x8')](),controller[_0xe366('0x2a')]);router[_0xe366('0x29')]('/:id/in_servers',auth[_0xe366('0x8')](),controller[_0xe366('0x2b')]);router[_0xe366('0x29')](_0xe366('0x14'),auth[_0xe366('0x8')](),controller[_0xe366('0x2c')]);router[_0xe366('0x29')](_0xe366('0xc'),auth[_0xe366('0x8')](),controller[_0xe366('0x2d')]);router[_0xe366('0x29')](_0xe366('0x2e'),auth[_0xe366('0x8')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index ccb3bb5..7910deb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a08=['sequelize','exports','BOOLEAN','STRING','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition'];(function(_0xf7bf02,_0x13da13){var _0x4f263f=function(_0x3b5603){while(--_0x3b5603){_0xf7bf02['push'](_0xf7bf02['shift']());}};_0x4f263f(++_0x13da13);}(_0x7a08,0x11e));var _0x87a0=function(_0x29fcaf,_0x20c943){_0x29fcaf=_0x29fcaf-0x0;var _0x4adcb2=_0x7a08[_0x29fcaf];return _0x4adcb2;};'use strict';var Sequelize=require(_0x87a0('0x0'));module[_0x87a0('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x87a0('0x3')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x87a0('0x3')],'allowNull':![]},'template':{'type':Sequelize[_0x87a0('0x4')]},'markAsUnread':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x87a0('0x3')],'allowNull':![],'defaultValue':_0x87a0('0x5')},'fontSize':{'type':Sequelize[_0x87a0('0x6')](0x2)[_0x87a0('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x87a0('0x4')],'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[_0x87a0('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x87a0('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x87a0('0x6')],'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[_0x87a0('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x87a0('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x87a0('0x2')],'defaultValue':![],'comment':_0x87a0('0x9'),'set':function(_0x34ba3a){if(!_0x34ba3a)this['setDataValue'](_0x87a0('0xa'),null);this[_0x87a0('0xb')](_0x87a0('0xc'),_0x34ba3a);}}};
\ No newline at end of file
+var _0xee24=['Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','exports','STRING','BOOLEAN','Arial,Helvetica,sans-serif','INTEGER','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}'];(function(_0x50235f,_0x1f6fb9){var _0x50d800=function(_0x4a7b87){while(--_0x4a7b87){_0x50235f['push'](_0x50235f['shift']());}};_0x50d800(++_0x1f6fb9);}(_0xee24,0x1a6));var _0x4ee2=function(_0x10abcd,_0x2fd20b){_0x10abcd=_0x10abcd-0x0;var _0x22a5f3=_0xee24[_0x10abcd];return _0x22a5f3;};'use strict';var Sequelize=require('sequelize');module[_0x4ee2('0x0')]={'description':{'type':Sequelize[_0x4ee2('0x1')]},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x4ee2('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x4ee2('0x1')],'allowNull':![]},'template':{'type':Sequelize['TEXT']},'markAsUnread':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x4ee2('0x1')],'allowNull':![],'defaultValue':_0x4ee2('0x3')},'fontSize':{'type':Sequelize[_0x4ee2('0x4')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x4ee2('0x5')],'defaultValue':function(){return _0x4ee2('0x6');}},'notificationSound':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x4ee2('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4ee2('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x4ee2('0x7')},'mandatoryDisposition':{'type':Sequelize[_0x4ee2('0x2')],'defaultValue':![],'comment':_0x4ee2('0x8'),'set':function(_0x2145d5){if(!_0x2145d5)this[_0x4ee2('0x9')]('mandatoryDispositionPauseId',null);this[_0x4ee2('0x9')](_0x4ee2('0xa'),_0x2145d5);}}};
\ No newline at end of file
index 9a2e138..16db6e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70f7=['include','findAll','params','Imap','fields','find','body','Smtp','Pause','describe','MailAccountId','Disposition','create','getDispositions','findOne','rows','removeDispositions','ids','CannedAnswer','removeAnswers','email','ListId','active','description','isNil','cauthentication','user','password','pass','cpassword','host','port','service','cservice','cuser','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','getSmtp','addSmtp','removeSmtp','setSmtp','MailInteraction','addInteraction','getInteractions','CmContact','Contact','User','fullname','internal','Tags','color','tag','addApplications','sequelize','transaction','MailApplication','bulkCreate','findAndCountAll','getApplications','getMessages','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','updatedAt','from','%s\x20<%s>','attachments','server/files/attachments','secure','auth','SendMail','sendMail','List\x20not\x20found','Contacts','defaults','messageId','subject','attach','out','Interaction','Messages','verifySmtp','authentication','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','omit','spread','emit','removeAgents','userMailAccount:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','juice','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./mailAccount.socket','register','client','http','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','save','update','destroy','get','MailAccounts','stack','name','send','index','MailServerIn','MailServerOut','mandatoryDispositionPause','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','MailAccount','includeAll'];(function(_0x30d953,_0x1331a5){var _0x46b995=function(_0xd417c7){while(--_0xd417c7){_0x30d953['push'](_0x30d953['shift']());}};_0x46b995(++_0x1331a5);}(_0x70f7,0x12d));var _0x770f=function(_0x55af86,_0x5c8ff6){_0x55af86=_0x55af86-0x0;var _0x58df3b=_0x70f7[_0x55af86];return _0x58df3b;};'use strict';var emlformat=require(_0x770f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x770f('0x1'));var jsonpatch=require(_0x770f('0x2'));var rp=require(_0x770f('0x3'));var moment=require(_0x770f('0x4'));var BPromise=require(_0x770f('0x5'));var Mustache=require(_0x770f('0x6'));var util=require('util');var path=require('path');var sox=require(_0x770f('0x7'));var csv=require(_0x770f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x770f('0x9'));var crypto=require(_0x770f('0xa'));var jsforce=require(_0x770f('0xb'));var deskjs=require(_0x770f('0xc'));var toCsv=require('to-csv');var querystring=require(_0x770f('0xd'));var Papa=require(_0x770f('0xe'));var htmlToText=require(_0x770f('0xf'));var juice=require(_0x770f('0x10'));var Redis=require(_0x770f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x770f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x770f('0x13'));var utils=require(_0x770f('0x14'));var config=require(_0x770f('0x15'));var licenseUtil=require(_0x770f('0x16'));var db=require(_0x770f('0x17'))['db'];config['redis']=_['defaults'](config[_0x770f('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x770f('0x19'))(new Redis(config[_0x770f('0x18')]));require(_0x770f('0x1a'))[_0x770f('0x1b')](socket);var jayson=require('jayson/promise');var client=jayson[_0x770f('0x1c')][_0x770f('0x1d')]({'port':0x232b});function respondWithRpcPromise(_0x128fec,_0xd52bf9,_0x21b26e,_0x348c9f){return new BPromise(function(_0x194428,_0x4c9af0){var _0xd24ad0=_0x348c9f||client;return _0xd24ad0[_0x770f('0x1e')](_0x128fec,_0x21b26e)[_0x770f('0x1f')](function(_0x43075f){logger[_0x770f('0x20')](_0x770f('0x21'),_0xd52bf9,_0x770f('0x22'));logger[_0x770f('0x23')](_0x770f('0x24'),_0xd52bf9,_0x770f('0x22'),JSON[_0x770f('0x25')](_0x43075f));if(_0x43075f[_0x770f('0x26')]){if(_0x43075f[_0x770f('0x26')][_0x770f('0x27')]===0x1f4){logger[_0x770f('0x26')](_0x770f('0x21'),_0xd52bf9,_0x43075f['error'][_0x770f('0x28')]);return _0x4c9af0(_0x43075f[_0x770f('0x26')][_0x770f('0x28')]);}logger['error'](_0x770f('0x21'),_0xd52bf9,_0x43075f[_0x770f('0x26')]['message']);return _0x194428(_0x43075f[_0x770f('0x26')][_0x770f('0x28')]);}else{logger[_0x770f('0x20')](_0x770f('0x21'),_0xd52bf9,_0x770f('0x22'));_0x194428(_0x43075f['result'][_0x770f('0x28')]);}})[_0x770f('0x29')](function(_0x27064b){logger[_0x770f('0x26')](_0x770f('0x21'),_0xd52bf9,_0x27064b);_0x4c9af0(_0x27064b);});});}function respondWithStatusCode(_0x5e1ecf,_0x4e70d0){_0x4e70d0=_0x4e70d0||0xcc;return function(_0x525dd3){if(_0x525dd3){return _0x5e1ecf[_0x770f('0x2a')](_0x4e70d0);}return _0x5e1ecf[_0x770f('0x2b')](_0x4e70d0)[_0x770f('0x2c')]();};}function respondWithResult(_0x2e1c47,_0x107a6a){_0x107a6a=_0x107a6a||0xc8;return function(_0x36bc5c){if(_0x36bc5c){return _0x2e1c47['status'](_0x107a6a)[_0x770f('0x2d')](_0x36bc5c);}};}function respondWithFilteredResult(_0x4e1843,_0x16d393){return function(_0x58b95f){if(_0x58b95f){var _0x4707ff=typeof _0x16d393[_0x770f('0x2e')]===_0x770f('0x2f')&&typeof _0x16d393['limit']===_0x770f('0x2f');var _0x23ed5e=_0x58b95f[_0x770f('0x30')];var _0x49dc04=_0x4707ff?0x0:_0x16d393[_0x770f('0x2e')];var _0xfd9507=_0x4707ff?_0x58b95f[_0x770f('0x30')]:_0x16d393[_0x770f('0x2e')]+_0x16d393['limit'];var _0x1ed169;if(_0xfd9507>=_0x23ed5e){_0xfd9507=_0x23ed5e;_0x1ed169=0xc8;}else{_0x1ed169=0xce;}_0x4e1843[_0x770f('0x2b')](_0x1ed169);return _0x4e1843[_0x770f('0x31')](_0x770f('0x32'),_0x49dc04+'-'+_0xfd9507+'/'+_0x23ed5e)[_0x770f('0x2d')](_0x58b95f);}return null;};}function patchUpdates(_0x18996c){return function(_0x15dc4d){try{jsonpatch['apply'](_0x15dc4d,_0x18996c,!![]);}catch(_0x3209ca){return BPromise['reject'](_0x3209ca);}return _0x15dc4d[_0x770f('0x33')]();};}function saveUpdates(_0x409caf,_0xf03cef){return function(_0x41577b){if(_0x41577b){return _0x41577b[_0x770f('0x34')](_0x409caf)[_0x770f('0x1f')](function(_0x4e1736){return _0x4e1736;});}return null;};}function removeEntity(_0x358a3a,_0x4e4c65){return function(_0x609c0c){if(_0x609c0c){return _0x609c0c[_0x770f('0x35')]()['then'](function(){var _0x28cb4d=_0x609c0c[_0x770f('0x36')]({'plain':!![]});var _0x8096f2=_0x770f('0x37');return db['UserProfileResource'][_0x770f('0x35')]({'where':{'type':_0x8096f2,'resourceId':_0x28cb4d['id']}})['then'](function(){return _0x609c0c;});})['then'](function(){_0x358a3a['status'](0xcc)[_0x770f('0x2c')]();});}};}function handleEntityNotFound(_0x213812,_0x15d705){return function(_0xba734f){if(!_0xba734f){_0x213812[_0x770f('0x2a')](0x194);}return _0xba734f;};}function handleError(_0x248413,_0x3f0db2){_0x3f0db2=_0x3f0db2||0x1f4;return function(_0x2a2707){logger['error'](_0x2a2707[_0x770f('0x38')]);if(_0x2a2707[_0x770f('0x39')]){delete _0x2a2707[_0x770f('0x39')];}_0x248413[_0x770f('0x2b')](_0x3f0db2)[_0x770f('0x3a')](_0x2a2707);};}exports[_0x770f('0x3b')]=function(_0x688d53,_0x573a78){var _0x297ec7={'include':[{'model':db[_0x770f('0x3c')],'as':'Imap'},{'model':db[_0x770f('0x3d')],'as':'Smtp'},{'model':db['Pause'],'as':_0x770f('0x3e')}]},_0x4a80f0={},_0x4e12b3={'count':0x0,'rows':[]};var _0x495c23=_[_0x770f('0x3f')](db['MailAccount'][_0x770f('0x40')],function(_0x4bdcad){return{'name':_0x4bdcad['fieldName'],'type':_0x4bdcad[_0x770f('0x41')][_0x770f('0x42')]};});_0x4a80f0[_0x770f('0x43')]=_[_0x770f('0x3f')](_0x495c23,_0x770f('0x39'));_0x4a80f0[_0x770f('0x44')]=_[_0x770f('0x45')](_0x688d53[_0x770f('0x44')]);_0x4a80f0[_0x770f('0x46')]=_[_0x770f('0x47')](_0x4a80f0['model'],_0x4a80f0[_0x770f('0x44')]);_0x297ec7[_0x770f('0x48')]=_[_0x770f('0x47')](_0x4a80f0[_0x770f('0x43')],qs['fields'](_0x688d53[_0x770f('0x44')]['fields']));_0x297ec7['attributes']=_0x297ec7['attributes'][_0x770f('0x49')]?_0x297ec7['attributes']:_0x4a80f0[_0x770f('0x43')];if(!_0x688d53[_0x770f('0x44')][_0x770f('0x4a')](_0x770f('0x4b'))){_0x297ec7[_0x770f('0x4c')]=qs[_0x770f('0x4c')](_0x688d53[_0x770f('0x44')][_0x770f('0x4c')]);_0x297ec7[_0x770f('0x2e')]=qs[_0x770f('0x2e')](_0x688d53['query']['offset']);}_0x297ec7[_0x770f('0x4d')]=qs[_0x770f('0x4e')](_0x688d53[_0x770f('0x44')]['sort']);_0x297ec7[_0x770f('0x4f')]=qs[_0x770f('0x46')](_[_0x770f('0x50')](_0x688d53[_0x770f('0x44')],_0x4a80f0[_0x770f('0x46')]),_0x495c23);if(_0x688d53[_0x770f('0x44')][_0x770f('0x51')]){_0x297ec7['where']=_[_0x770f('0x52')](_0x297ec7[_0x770f('0x4f')],{'$or':_['map'](_0x495c23,function(_0x59d4b5){if(_0x59d4b5[_0x770f('0x41')]!==_0x770f('0x53')){var _0x4b4bc7={};_0x4b4bc7[_0x59d4b5[_0x770f('0x39')]]={'$like':'%'+_0x688d53['query'][_0x770f('0x51')]+'%'};return _0x4b4bc7;}})});}_0x297ec7=_[_0x770f('0x52')]({},_0x297ec7,_0x688d53[_0x770f('0x54')]);var _0x314fa7={'where':_0x297ec7['where']};return db[_0x770f('0x55')]['count'](_0x314fa7)['then'](function(_0x5c8735){_0x4e12b3[_0x770f('0x30')]=_0x5c8735;if(_0x688d53[_0x770f('0x44')][_0x770f('0x56')]){_0x297ec7[_0x770f('0x57')]=[{'all':!![]}];}return db[_0x770f('0x55')][_0x770f('0x58')](_0x297ec7);})[_0x770f('0x1f')](function(_0x2e8ac3){_0x4e12b3['rows']=_0x2e8ac3;return _0x4e12b3;})[_0x770f('0x1f')](respondWithFilteredResult(_0x573a78,_0x297ec7))[_0x770f('0x29')](handleError(_0x573a78,null));};exports['show']=function(_0x49e0bf,_0x1c1da8){var _0x52c968={'raw':![],'where':{'id':_0x49e0bf[_0x770f('0x59')]['id']},'include':[{'model':db[_0x770f('0x3c')],'as':_0x770f('0x5a')},{'model':db[_0x770f('0x3d')],'as':'Smtp'},{'model':db['Pause'],'as':_0x770f('0x3e')}]},_0x43af12={};_0x43af12[_0x770f('0x43')]=_[_0x770f('0x45')](db[_0x770f('0x55')][_0x770f('0x40')]);_0x43af12[_0x770f('0x44')]=_[_0x770f('0x45')](_0x49e0bf[_0x770f('0x44')]);_0x43af12[_0x770f('0x46')]=_['intersection'](_0x43af12[_0x770f('0x43')],_0x43af12['query']);_0x52c968[_0x770f('0x48')]=_['intersection'](_0x43af12[_0x770f('0x43')],qs['fields'](_0x49e0bf['query'][_0x770f('0x5b')]));_0x52c968[_0x770f('0x48')]=_0x52c968[_0x770f('0x48')]['length']?_0x52c968[_0x770f('0x48')]:_0x43af12[_0x770f('0x43')];if(_0x49e0bf[_0x770f('0x44')]['includeAll']){_0x52c968[_0x770f('0x57')]=[{'all':!![]}];}_0x52c968=_[_0x770f('0x52')]({},_0x52c968,_0x49e0bf[_0x770f('0x54')]);return db[_0x770f('0x55')][_0x770f('0x5c')](_0x52c968)[_0x770f('0x1f')](handleEntityNotFound(_0x1c1da8,null))['then'](respondWithResult(_0x1c1da8,null))['catch'](handleError(_0x1c1da8,null));};exports[_0x770f('0x34')]=function(_0x2ff172,_0x8cb5a5){if(_0x2ff172[_0x770f('0x5d')]['id']){delete _0x2ff172[_0x770f('0x5d')]['id'];}return db['MailAccount'][_0x770f('0x5c')]({'where':{'id':_0x2ff172['params']['id']},'include':[{'model':db[_0x770f('0x3c')],'as':_0x770f('0x5a')},{'model':db['MailServerOut'],'as':_0x770f('0x5e')},{'model':db[_0x770f('0x5f')],'as':_0x770f('0x3e')}]})[_0x770f('0x1f')](handleEntityNotFound(_0x8cb5a5,null))[_0x770f('0x1f')](saveUpdates(_0x2ff172[_0x770f('0x5d')],null))[_0x770f('0x1f')](function(_0xe10918){if(_0xe10918&&_0x2ff172[_0x770f('0x5d')][_0x770f('0x5a')]){return db[_0x770f('0x3c')][_0x770f('0x34')](_0x2ff172[_0x770f('0x5d')][_0x770f('0x5a')],{'where':{'MailAccountId':_0xe10918['id']}})['then'](function(){return _0xe10918;});}return _0xe10918;})[_0x770f('0x1f')](function(_0x481b60){if(_0x481b60&&_0x2ff172[_0x770f('0x5d')]['Smtp']){return db[_0x770f('0x3d')]['update'](_0x2ff172['body'][_0x770f('0x5e')],{'where':{'MailAccountId':_0x481b60['id']}})['then'](function(){return _0x481b60;});}return _0x481b60;})[_0x770f('0x1f')](respondWithResult(_0x8cb5a5,null))['catch'](handleError(_0x8cb5a5,null));};exports['describe']=function(_0x9d287e,_0x489c59){return db[_0x770f('0x55')][_0x770f('0x60')]()[_0x770f('0x1f')](respondWithResult(_0x489c59,null))[_0x770f('0x29')](handleError(_0x489c59,null));};exports['addDisposition']=function(_0x40bf5f,_0x513a69,_0x553628){if(_0x40bf5f[_0x770f('0x5d')]['id']){delete _0x40bf5f[_0x770f('0x5d')]['id'];}return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x40bf5f[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x513a69,null))[_0x770f('0x1f')](function(_0x3df7b0){if(_0x3df7b0){_0x40bf5f[_0x770f('0x5d')][_0x770f('0x61')]=_0x3df7b0['id'];return db[_0x770f('0x62')][_0x770f('0x63')](_0x40bf5f[_0x770f('0x5d')]);}})[_0x770f('0x1f')](respondWithResult(_0x513a69,null))[_0x770f('0x29')](handleError(_0x513a69,null));};exports[_0x770f('0x64')]=function(_0x2da039,_0x2a058b,_0x481ec5){var _0x175019={'raw':![],'where':{}};var _0x516273={};var _0x382448={'count':0x0,'rows':[]};return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x2da039[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x2a058b,null))[_0x770f('0x1f')](function(_0x29be99){if(_0x29be99){_0x516273[_0x770f('0x43')]=_[_0x770f('0x45')](db[_0x770f('0x62')]['rawAttributes']);_0x516273[_0x770f('0x44')]=_[_0x770f('0x45')](_0x2da039[_0x770f('0x44')]);_0x516273[_0x770f('0x46')]=_['intersection'](_0x516273[_0x770f('0x43')],_0x516273[_0x770f('0x44')]);_0x175019['attributes']=_['intersection'](_0x516273[_0x770f('0x43')],qs[_0x770f('0x5b')](_0x2da039[_0x770f('0x44')][_0x770f('0x5b')]));_0x175019[_0x770f('0x48')]=_0x175019['attributes'][_0x770f('0x49')]?_0x175019[_0x770f('0x48')]:_0x516273[_0x770f('0x43')];if(!_0x2da039[_0x770f('0x44')][_0x770f('0x4a')](_0x770f('0x4b'))){_0x175019[_0x770f('0x4c')]=qs[_0x770f('0x4c')](_0x2da039[_0x770f('0x44')][_0x770f('0x4c')]);_0x175019[_0x770f('0x2e')]=qs[_0x770f('0x2e')](_0x2da039[_0x770f('0x44')][_0x770f('0x2e')]);}_0x175019[_0x770f('0x4d')]=qs['sort'](_0x2da039[_0x770f('0x44')][_0x770f('0x4e')]);_0x175019[_0x770f('0x4f')]=qs['filters'](_[_0x770f('0x50')](_0x2da039['query'],_0x516273[_0x770f('0x46')]));_0x175019[_0x770f('0x4f')]['MailAccountId']=_0x29be99['id'];if(_0x2da039[_0x770f('0x44')][_0x770f('0x51')]){_0x175019['where']=_[_0x770f('0x52')](_0x175019[_0x770f('0x4f')],{'$or':_[_0x770f('0x3f')](_0x175019[_0x770f('0x48')],function(_0x4eddd1){var _0x4b28bc={};_0x4b28bc[_0x4eddd1]={'$like':'%'+_0x2da039[_0x770f('0x44')][_0x770f('0x51')]+'%'};return _0x4b28bc;})});}_0x175019=_[_0x770f('0x52')]({},_0x175019,_0x2da039[_0x770f('0x54')]);return db[_0x770f('0x62')][_0x770f('0x30')]({'where':_0x175019[_0x770f('0x4f')]})[_0x770f('0x1f')](function(_0x2fc59c){_0x382448[_0x770f('0x30')]=_0x2fc59c;if(_0x2da039[_0x770f('0x44')]['includeAll']){_0x175019[_0x770f('0x57')]=[{'all':!![]}];}return db[_0x770f('0x62')][_0x770f('0x58')](_0x175019);})[_0x770f('0x1f')](function(_0x39504c){_0x382448[_0x770f('0x66')]=_0x39504c;return _0x382448;});}})[_0x770f('0x1f')](respondWithFilteredResult(_0x2a058b,_0x175019))[_0x770f('0x29')](handleError(_0x2a058b,null));};exports[_0x770f('0x67')]=function(_0x341bcd,_0x208ce3,_0x2aefb5){return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x341bcd[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x208ce3,null))[_0x770f('0x1f')](function(_0x1cec8d){if(_0x1cec8d){return _0x1cec8d[_0x770f('0x67')](_0x341bcd[_0x770f('0x44')][_0x770f('0x68')]);}})['then'](respondWithStatusCode(_0x208ce3,null))['catch'](handleError(_0x208ce3,null));};exports['addAnswer']=function(_0x56ba98,_0x5cad1c,_0x3052b1){if(_0x56ba98[_0x770f('0x5d')]['id']){delete _0x56ba98[_0x770f('0x5d')]['id'];}return db['MailAccount'][_0x770f('0x5c')]({'where':{'id':_0x56ba98['params']['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x5cad1c,null))[_0x770f('0x1f')](function(_0x458839){if(_0x458839){_0x56ba98[_0x770f('0x5d')]['MailAccountId']=_0x458839['id'];return db['CannedAnswer'][_0x770f('0x63')](_0x56ba98[_0x770f('0x5d')]);}})[_0x770f('0x1f')](respondWithResult(_0x5cad1c,null))[_0x770f('0x29')](handleError(_0x5cad1c,null));};exports['getAnswers']=function(_0x3b8d85,_0x33382a,_0x5bd0db){var _0x54045a={'raw':![],'where':{}};var _0x266ba0={};var _0x2c383d={'count':0x0,'rows':[]};return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x3b8d85[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x33382a,null))['then'](function(_0xb228a2){if(_0xb228a2){_0x266ba0[_0x770f('0x43')]=_[_0x770f('0x45')](db[_0x770f('0x69')][_0x770f('0x40')]);_0x266ba0[_0x770f('0x44')]=_['keys'](_0x3b8d85[_0x770f('0x44')]);_0x266ba0['filters']=_[_0x770f('0x47')](_0x266ba0[_0x770f('0x43')],_0x266ba0[_0x770f('0x44')]);_0x54045a['attributes']=_[_0x770f('0x47')](_0x266ba0[_0x770f('0x43')],qs['fields'](_0x3b8d85['query'][_0x770f('0x5b')]));_0x54045a['attributes']=_0x54045a[_0x770f('0x48')][_0x770f('0x49')]?_0x54045a[_0x770f('0x48')]:_0x266ba0['model'];if(!_0x3b8d85['query']['hasOwnProperty']('nolimit')){_0x54045a['limit']=qs[_0x770f('0x4c')](_0x3b8d85[_0x770f('0x44')][_0x770f('0x4c')]);_0x54045a[_0x770f('0x2e')]=qs[_0x770f('0x2e')](_0x3b8d85[_0x770f('0x44')][_0x770f('0x2e')]);}_0x54045a[_0x770f('0x4d')]=qs[_0x770f('0x4e')](_0x3b8d85[_0x770f('0x44')][_0x770f('0x4e')]);_0x54045a[_0x770f('0x4f')]=qs[_0x770f('0x46')](_['pick'](_0x3b8d85[_0x770f('0x44')],_0x266ba0[_0x770f('0x46')]));_0x54045a[_0x770f('0x4f')][_0x770f('0x61')]=_0xb228a2['id'];if(_0x3b8d85[_0x770f('0x44')][_0x770f('0x51')]){_0x54045a[_0x770f('0x4f')]=_['merge'](_0x54045a[_0x770f('0x4f')],{'$or':_[_0x770f('0x3f')](_0x54045a[_0x770f('0x48')],function(_0x4618ce){var _0x1fe327={};_0x1fe327[_0x4618ce]={'$like':'%'+_0x3b8d85[_0x770f('0x44')][_0x770f('0x51')]+'%'};return _0x1fe327;})});}_0x54045a=_['merge']({},_0x54045a,_0x3b8d85[_0x770f('0x54')]);return db[_0x770f('0x69')][_0x770f('0x30')]({'where':_0x54045a[_0x770f('0x4f')]})[_0x770f('0x1f')](function(_0x229398){_0x2c383d[_0x770f('0x30')]=_0x229398;if(_0x3b8d85[_0x770f('0x44')][_0x770f('0x56')]){_0x54045a[_0x770f('0x57')]=[{'all':!![]}];}return db[_0x770f('0x69')][_0x770f('0x58')](_0x54045a);})[_0x770f('0x1f')](function(_0x4ee7ba){_0x2c383d['rows']=_0x4ee7ba;return _0x2c383d;});}})[_0x770f('0x1f')](respondWithFilteredResult(_0x33382a,_0x54045a))['catch'](handleError(_0x33382a,null));};exports[_0x770f('0x6a')]=function(_0x59abc5,_0x2c3322,_0x2022c0){return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x59abc5[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x2c3322,null))['then'](function(_0x2634bd){if(_0x2634bd){return _0x2634bd['removeAnswers'](_0x59abc5['query'][_0x770f('0x68')]);}})[_0x770f('0x1f')](respondWithStatusCode(_0x2c3322,null))['catch'](handleError(_0x2c3322,null));};exports[_0x770f('0x63')]=function(_0x40181e,_0x281597){var _0x4a6117={'name':_0x40181e[_0x770f('0x5d')][_0x770f('0x39')],'key':_0x40181e[_0x770f('0x5d')][_0x770f('0x42')],'email':_0x40181e['body'][_0x770f('0x6b')],'ListId':_0x40181e[_0x770f('0x5d')][_0x770f('0x6c')],'active':!_['isNil'](_0x40181e[_0x770f('0x5d')][_0x770f('0x6d')])?_0x40181e[_0x770f('0x5d')][_0x770f('0x6d')]:!![],'description':_0x40181e[_0x770f('0x5d')][_0x770f('0x6e')]||null,'Imap':{},'Smtp':{}};if(_[_0x770f('0x6f')](_0x40181e[_0x770f('0x5d')]['cservice'])){if(_0x40181e[_0x770f('0x5d')][_0x770f('0x70')]){_0x4a6117[_0x770f('0x5a')][_0x770f('0x71')]=_0x4a6117[_0x770f('0x5e')][_0x770f('0x71')]=_0x40181e['body']['cuser'];_0x4a6117[_0x770f('0x5a')][_0x770f('0x72')]=_0x4a6117[_0x770f('0x5e')][_0x770f('0x73')]=_0x40181e[_0x770f('0x5d')][_0x770f('0x74')];}else{_0x4a6117['Imap']['authentication']=_0x4a6117[_0x770f('0x5e')]['authentication']=![];}_0x4a6117[_0x770f('0x5a')][_0x770f('0x75')]=_0x40181e[_0x770f('0x5d')]['Imap'][_0x770f('0x75')];_0x4a6117['Imap'][_0x770f('0x76')]=_0x40181e[_0x770f('0x5d')][_0x770f('0x5a')][_0x770f('0x76')];_0x4a6117['Smtp'][_0x770f('0x75')]=_0x40181e[_0x770f('0x5d')][_0x770f('0x5e')][_0x770f('0x75')];_0x4a6117['Smtp'][_0x770f('0x76')]=_0x40181e['body'][_0x770f('0x5e')][_0x770f('0x76')];}else{_0x4a6117[_0x770f('0x5a')][_0x770f('0x77')]=_0x4a6117[_0x770f('0x5e')][_0x770f('0x77')]=_0x40181e[_0x770f('0x5d')][_0x770f('0x78')];_0x4a6117[_0x770f('0x5a')][_0x770f('0x71')]=_0x4a6117['Smtp'][_0x770f('0x71')]=_0x40181e[_0x770f('0x5d')][_0x770f('0x79')];_0x4a6117['Imap'][_0x770f('0x72')]=_0x4a6117['Smtp'][_0x770f('0x73')]=_0x40181e[_0x770f('0x5d')][_0x770f('0x74')];}return db[_0x770f('0x55')][_0x770f('0x63')](_0x4a6117,{'include':[{'model':db['MailServerOut'],'as':_0x770f('0x5e')},{'model':db[_0x770f('0x3c')],'as':_0x770f('0x5a')}]})[_0x770f('0x1f')](function(_0x3f3132){var _0x32d6f8=_0x40181e['user'][_0x770f('0x36')]({'plain':!![]});if(!_0x32d6f8)throw new Error(_0x770f('0x7a'));if(_0x32d6f8[_0x770f('0x7b')]===_0x770f('0x71')){var _0x12b303=_0x3f3132['get']({'plain':!![]});return db[_0x770f('0x7c')][_0x770f('0x5c')]({'where':{'name':_0x770f('0x37'),'userProfileId':_0x32d6f8[_0x770f('0x7d')]},'raw':!![]})[_0x770f('0x1f')](function(_0x304a51){if(_0x304a51&&_0x304a51[_0x770f('0x7e')]===0x0){return db[_0x770f('0x7f')][_0x770f('0x63')]({'name':_0x12b303[_0x770f('0x39')],'resourceId':_0x12b303['id'],'type':_0x304a51[_0x770f('0x39')],'sectionId':_0x304a51['id']},{})['then'](function(){return _0x3f3132;});}else{return _0x3f3132;}})['catch'](function(_0x49c7fd){logger[_0x770f('0x26')](_0x770f('0x80'),_0x49c7fd);throw _0x49c7fd;});}return _0x3f3132;})[_0x770f('0x1f')](respondWithResult(_0x281597,0xc9))[_0x770f('0x29')](handleError(_0x281597,null));};exports[_0x770f('0x81')]=function(_0x53ddf1,_0x4069a4,_0x210698){return db[_0x770f('0x55')]['findOne']({'where':{'id':_0x53ddf1['params']['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x4069a4,null))[_0x770f('0x1f')](function(_0x1cd9e3){if(_0x1cd9e3){return _0x1cd9e3[_0x770f('0x81')]();}return null;})[_0x770f('0x1f')](respondWithResult(_0x4069a4,null))[_0x770f('0x29')](handleError(_0x4069a4,null));};exports[_0x770f('0x82')]=function(_0x253dfb,_0x12b064,_0x5cf732){if(_0x253dfb[_0x770f('0x5d')]['id']){delete _0x253dfb['body']['id'];}return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x253dfb['params']['id']}})['then'](handleEntityNotFound(_0x12b064,null))[_0x770f('0x1f')](function(_0x982aef){if(_0x982aef){_0x253dfb[_0x770f('0x5d')]['MailAccountId']=_0x982aef['id'];return db[_0x770f('0x3c')]['create'](_0x253dfb[_0x770f('0x5d')]);}})[_0x770f('0x1f')](respondWithResult(_0x12b064,null))['catch'](handleError(_0x12b064,null));};exports['removeImap']=function(_0x1b27cc,_0x53ae04,_0x37e28b){return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x1b27cc['params']['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x53ae04,null))['then'](function(_0x3402b4){if(_0x3402b4){return _0x3402b4['setImap'](null);}return null;})[_0x770f('0x1f')](respondWithStatusCode(_0x53ae04,null))['catch'](handleError(_0x53ae04,null));};exports[_0x770f('0x83')]=function(_0x207564,_0x4a8942,_0x4ab19d){return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x207564[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x4a8942,null))[_0x770f('0x1f')](function(_0x512f64){if(_0x512f64){return _0x512f64[_0x770f('0x83')]();}return null;})['then'](respondWithResult(_0x4a8942,null))[_0x770f('0x29')](handleError(_0x4a8942,null));};exports[_0x770f('0x84')]=function(_0x4e6653,_0xd72a07,_0xa1a21e){if(_0x4e6653[_0x770f('0x5d')]['id']){delete _0x4e6653[_0x770f('0x5d')]['id'];}return db[_0x770f('0x55')]['find']({'where':{'id':_0x4e6653[_0x770f('0x59')]['id']}})['then'](handleEntityNotFound(_0xd72a07,null))[_0x770f('0x1f')](function(_0x5a237b){if(_0x5a237b){_0x4e6653[_0x770f('0x5d')]['MailAccountId']=_0x5a237b['id'];return db['MailServerOut'][_0x770f('0x63')](_0x4e6653['body']);}})[_0x770f('0x1f')](respondWithResult(_0xd72a07,null))[_0x770f('0x29')](handleError(_0xd72a07,null));};exports[_0x770f('0x85')]=function(_0x1d8bbe,_0x4805cf,_0x13b603){return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x1d8bbe['params']['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x4805cf,null))[_0x770f('0x1f')](function(_0x193e09){if(_0x193e09){return _0x193e09[_0x770f('0x86')](null);}return null;})[_0x770f('0x1f')](respondWithStatusCode(_0x4805cf,null))[_0x770f('0x29')](handleError(_0x4805cf,null));};exports['addInteraction']=function(_0x517f1b,_0x3e59eb,_0x504e88){return db[_0x770f('0x87')]['find']({'where':{'id':_0x517f1b[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x3e59eb,null))[_0x770f('0x1f')](function(_0x3f4d90){if(_0x3f4d90){return _0x3f4d90[_0x770f('0x88')](_0x517f1b[_0x770f('0x5d')][_0x770f('0x68')],_['omit'](_0x517f1b[_0x770f('0x5d')],['ids','id'])||{});}})[_0x770f('0x1f')](respondWithResult(_0x3e59eb,null))[_0x770f('0x29')](handleError(_0x3e59eb,null));};exports[_0x770f('0x89')]=function(_0x304196,_0x370939,_0x3a900b){var _0x21fe62={'raw':![],'where':{}};var _0x9cb448={};var _0x5f8a31={'count':0x0,'rows':[]};return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x304196[_0x770f('0x59')]['id']}})['then'](handleEntityNotFound(_0x370939,null))[_0x770f('0x1f')](function(_0x39d4cc){if(_0x39d4cc){_0x9cb448[_0x770f('0x43')]=_[_0x770f('0x45')](db[_0x770f('0x87')][_0x770f('0x40')]);_0x9cb448[_0x770f('0x44')]=_['keys'](_0x304196[_0x770f('0x44')]);_0x9cb448['filters']=_[_0x770f('0x47')](_0x9cb448['model'],_0x9cb448[_0x770f('0x44')]);_0x21fe62['attributes']=_['intersection'](_0x9cb448['model'],qs[_0x770f('0x5b')](_0x304196[_0x770f('0x44')][_0x770f('0x5b')]));_0x21fe62[_0x770f('0x48')]=_0x21fe62['attributes'][_0x770f('0x49')]?_0x21fe62[_0x770f('0x48')]:_0x9cb448[_0x770f('0x43')];if(!_0x304196[_0x770f('0x44')]['hasOwnProperty'](_0x770f('0x4b'))){_0x21fe62[_0x770f('0x4c')]=qs[_0x770f('0x4c')](_0x304196['query'][_0x770f('0x4c')]);_0x21fe62[_0x770f('0x2e')]=qs[_0x770f('0x2e')](_0x304196['query'][_0x770f('0x2e')]);}_0x21fe62['order']=qs[_0x770f('0x4e')](_0x304196[_0x770f('0x44')]['sort']);_0x21fe62[_0x770f('0x4f')]=qs[_0x770f('0x46')](_['pick'](_0x304196['query'],_0x9cb448['filters']));_0x21fe62[_0x770f('0x4f')]['MailAccountId']=_0x39d4cc['id'];if(_0x304196[_0x770f('0x44')]['filter']){_0x21fe62[_0x770f('0x4f')]=_[_0x770f('0x52')](_0x21fe62['where'],{'$or':_[_0x770f('0x3f')](_0x21fe62['attributes'],function(_0x20b98f){var _0x2b071f={};_0x2b071f[_0x20b98f]={'$like':'%'+_0x304196[_0x770f('0x44')][_0x770f('0x51')]+'%'};return _0x2b071f;})});}_0x21fe62=_[_0x770f('0x52')]({},_0x21fe62,_0x304196[_0x770f('0x54')]);return db[_0x770f('0x87')][_0x770f('0x30')]({'where':_0x21fe62[_0x770f('0x4f')]})['then'](function(_0x268897){_0x5f8a31[_0x770f('0x30')]=_0x268897;if(_0x304196[_0x770f('0x44')][_0x770f('0x56')]){_0x21fe62[_0x770f('0x57')]=[{'model':db[_0x770f('0x8a')],'as':_0x770f('0x8b'),'required':![]},{'model':db[_0x770f('0x8c')],'as':'Owner','attributes':[_0x770f('0x39'),_0x770f('0x8d'),_0x770f('0x8e')],'required':![]},{'model':db['Tag'],'as':_0x770f('0x8f'),'attributes':['id','name',_0x770f('0x90')],'where':_0x304196[_0x770f('0x44')]['tag']?{'id':_0x304196[_0x770f('0x44')][_0x770f('0x91')]}:undefined,'required':_0x304196[_0x770f('0x44')][_0x770f('0x91')]?!![]:![]}];}return db[_0x770f('0x87')][_0x770f('0x58')](_0x21fe62);})[_0x770f('0x1f')](function(_0x47bc96){_0x5f8a31['rows']=_0x47bc96;return _0x5f8a31;});}})[_0x770f('0x1f')](respondWithFilteredResult(_0x370939,_0x21fe62))[_0x770f('0x29')](handleError(_0x370939,null));};exports[_0x770f('0x92')]=function(_0x54d2a8,_0x5c1714,_0x6efef4){return db['MailAccount']['findOne']({'where':{'id':_0x54d2a8[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x5c1714,null))[_0x770f('0x1f')](function(_0x2074fc){if(_0x2074fc){return db[_0x770f('0x93')][_0x770f('0x94')](function(_0x59fc83){return db[_0x770f('0x95')][_0x770f('0x35')]({'where':{'MailAccountId':_0x54d2a8[_0x770f('0x59')]['id']},'transaction':_0x59fc83})['then'](function(_0xfb079f){var _0x3865af=_[_0x770f('0x3f')](_0x54d2a8['body'],function(_0x57508b){_0x57508b['MailAccountId']=_0x54d2a8[_0x770f('0x59')]['id'];return _0x57508b;});return db['MailApplication'][_0x770f('0x96')](_0x3865af,{'transaction':_0x59fc83});});})[_0x770f('0x1f')](function(){return db[_0x770f('0x95')][_0x770f('0x97')]({'where':{'MailAccountId':_0x54d2a8[_0x770f('0x59')]['id']},'order':'priority'});});}})[_0x770f('0x1f')](respondWithResult(_0x5c1714,null))[_0x770f('0x29')](handleError(_0x5c1714,null));};exports[_0x770f('0x98')]=function(_0x2e8ee1,_0x3cff3f,_0x2c9e5f){var _0x347cce={};var _0x328d6e={};var _0x158a35;var _0x2b5e7a;return db[_0x770f('0x55')][_0x770f('0x65')]({'where':{'id':_0x2e8ee1[_0x770f('0x59')]['id']}})['then'](handleEntityNotFound(_0x3cff3f,null))['then'](function(_0x71246e){if(_0x71246e){_0x158a35=_0x71246e;_0x328d6e['model']=_['keys'](db[_0x770f('0x95')][_0x770f('0x40')]);_0x328d6e[_0x770f('0x44')]=_[_0x770f('0x45')](_0x2e8ee1[_0x770f('0x44')]);_0x328d6e['filters']=_[_0x770f('0x47')](_0x328d6e[_0x770f('0x43')],_0x328d6e['query']);_0x347cce[_0x770f('0x48')]=_[_0x770f('0x47')](_0x328d6e['model'],qs['fields'](_0x2e8ee1[_0x770f('0x44')][_0x770f('0x5b')]));_0x347cce[_0x770f('0x48')]=_0x347cce[_0x770f('0x48')][_0x770f('0x49')]?_0x347cce[_0x770f('0x48')]:_0x328d6e[_0x770f('0x43')];_0x347cce['order']=qs[_0x770f('0x4e')](_0x2e8ee1[_0x770f('0x44')][_0x770f('0x4e')]);_0x347cce['where']=qs[_0x770f('0x46')](_['pick'](_0x2e8ee1[_0x770f('0x44')],_0x328d6e[_0x770f('0x46')]));if(_0x2e8ee1[_0x770f('0x44')][_0x770f('0x51')]){_0x347cce[_0x770f('0x4f')]=_[_0x770f('0x52')](_0x347cce['where'],{'$or':_[_0x770f('0x3f')](_0x347cce[_0x770f('0x48')],function(_0x334fb2){var _0x46ad7f={};_0x46ad7f[_0x334fb2]={'$like':'%'+_0x2e8ee1['query'][_0x770f('0x51')]+'%'};return _0x46ad7f;})});}_0x347cce=_['merge']({},_0x347cce,_0x2e8ee1[_0x770f('0x54')]);return _0x158a35[_0x770f('0x98')](_0x347cce);}})[_0x770f('0x1f')](function(_0x915eee){if(_0x915eee){_0x2b5e7a=_0x915eee[_0x770f('0x49')];if(!_0x2e8ee1[_0x770f('0x44')][_0x770f('0x4a')]('nolimit')){_0x347cce[_0x770f('0x4c')]=qs[_0x770f('0x4c')](_0x2e8ee1['query'][_0x770f('0x4c')]);_0x347cce[_0x770f('0x2e')]=qs[_0x770f('0x2e')](_0x2e8ee1[_0x770f('0x44')][_0x770f('0x2e')]);}return _0x158a35['getApplications'](_0x347cce);}})[_0x770f('0x1f')](function(_0x3f5e47){if(_0x3f5e47){return _0x3f5e47?{'count':_0x2b5e7a,'rows':_0x3f5e47}:null;}})[_0x770f('0x1f')](respondWithResult(_0x3cff3f,null))[_0x770f('0x29')](handleError(_0x3cff3f,null));};exports[_0x770f('0x99')]=function(_0x4db2d8,_0x10287a,_0x2c5baf){var _0x3553fa={'raw':!![],'where':{}};var _0x1d52a7={};var _0x820e20={'count':0x0,'rows':[]};return db[_0x770f('0x55')]['findOne']({'where':{'id':_0x4db2d8['params']['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x10287a,null))[_0x770f('0x1f')](function(_0x9dda15){if(_0x9dda15){_0x1d52a7[_0x770f('0x43')]=_[_0x770f('0x45')](db[_0x770f('0x9a')][_0x770f('0x40')]);_0x1d52a7[_0x770f('0x44')]=_[_0x770f('0x45')](_0x4db2d8['query']);_0x1d52a7[_0x770f('0x46')]=_[_0x770f('0x47')](_0x1d52a7[_0x770f('0x43')],_0x1d52a7[_0x770f('0x44')]);_0x3553fa[_0x770f('0x48')]=_['intersection'](_0x1d52a7[_0x770f('0x43')],qs[_0x770f('0x5b')](_0x4db2d8[_0x770f('0x44')]['fields']));_0x3553fa[_0x770f('0x48')]=_0x3553fa[_0x770f('0x48')][_0x770f('0x49')]?_0x3553fa[_0x770f('0x48')]:_0x1d52a7[_0x770f('0x43')];if(!_0x4db2d8[_0x770f('0x44')]['hasOwnProperty'](_0x770f('0x4b'))){_0x3553fa['limit']=qs[_0x770f('0x4c')](_0x4db2d8[_0x770f('0x44')]['limit']);_0x3553fa[_0x770f('0x2e')]=qs[_0x770f('0x2e')](_0x4db2d8[_0x770f('0x44')][_0x770f('0x2e')]);}_0x3553fa[_0x770f('0x4d')]=qs[_0x770f('0x4e')](_0x4db2d8['query'][_0x770f('0x4e')]);_0x3553fa[_0x770f('0x4f')]=qs[_0x770f('0x46')](_[_0x770f('0x50')](_0x4db2d8['query'],_0x1d52a7[_0x770f('0x46')]));_0x3553fa[_0x770f('0x4f')][_0x770f('0x61')]=_0x9dda15['id'];if(_0x4db2d8[_0x770f('0x44')][_0x770f('0x51')]){_0x3553fa[_0x770f('0x4f')]=_[_0x770f('0x52')](_0x3553fa[_0x770f('0x4f')],{'$or':_[_0x770f('0x3f')](_0x3553fa['attributes'],function(_0x5e9831){var _0x3cfb34={};_0x3cfb34[_0x5e9831]={'$like':'%'+_0x4db2d8[_0x770f('0x44')][_0x770f('0x51')]+'%'};return _0x3cfb34;})});}if(_0x4db2d8[_0x770f('0x44')]['$gte']){var _0x40ab5b=_0x4db2d8[_0x770f('0x44')][_0x770f('0x9b')][_0x770f('0x9c')](',');var _0xc397d2={};_0xc397d2[_0x40ab5b[0x0]]={'$gte':moment(_0x40ab5b[0x1])[_0x770f('0x9d')](_0x770f('0x9e'))};_0x3553fa[_0x770f('0x4f')]=_[_0x770f('0x52')](_0x3553fa[_0x770f('0x4f')],_0xc397d2);}_0x3553fa=_[_0x770f('0x52')]({},_0x3553fa,_0x4db2d8['options']);return db[_0x770f('0x9a')][_0x770f('0x30')]({'where':_0x3553fa[_0x770f('0x4f')]})[_0x770f('0x1f')](function(_0x224d00){_0x820e20['count']=_0x224d00;if(_0x4db2d8[_0x770f('0x44')]['includeAll']){_0x3553fa[_0x770f('0x57')]=[{'all':!![]}];}return db[_0x770f('0x9a')][_0x770f('0x58')](_0x3553fa);})[_0x770f('0x1f')](function(_0x1b5b4e){if(_0x4db2d8[_0x770f('0x44')][_0x770f('0x9f')]===_0x770f('0xa0')){for(var _0x3f1e52=0x0;_0x3f1e52<_0x1b5b4e[_0x770f('0x49')];_0x3f1e52++){_0x1b5b4e[_0x3f1e52][_0x770f('0x5d')]=juice(_0x1b5b4e[_0x3f1e52][_0x770f('0x5d')]);}}_0x820e20[_0x770f('0x66')]=_0x1b5b4e;return _0x820e20;});}})[_0x770f('0x1f')](respondWithFilteredResult(_0x10287a,_0x3553fa))['catch'](handleError(_0x10287a,null));};exports['send']=function(_0x2bab82,_0x549fb2,_0x1dfb8b){var _0x29c1fc,_0x861aed={},_0x250d92;if(_0x2bab82[_0x770f('0x5d')]['to']){_0x250d92=_0x2bab82['body']['to'][_0x770f('0x9c')](',')[0x0];}return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x2bab82[_0x770f('0x59')]['id']},'include':[{'model':db[_0x770f('0xa1')],'as':_0x770f('0xa2'),'include':[{'model':db[_0x770f('0x8a')],'as':'Contacts','where':{'email':_0x250d92},'limit':0x1,'order':[[_0x770f('0xa3'),'DESC']]}]},{'model':db['MailServerOut'],'as':_0x770f('0x5e'),'raw':!![]}]})['then'](handleEntityNotFound(_0x549fb2,null))[_0x770f('0x1f')](function(_0x5dcc57){if(_0x5dcc57){_0x29c1fc=_0x5dcc57;if(_0x5dcc57[_0x770f('0x5e')]){if(_[_0x770f('0x6f')](_0x2bab82['body'][_0x770f('0xa4')])){_0x2bab82[_0x770f('0x5d')]['from']=util[_0x770f('0x9d')](_0x770f('0xa5'),_0x5dcc57['name'],_0x5dcc57[_0x770f('0x6b')]||_0x5dcc57[_0x770f('0x5e')][_0x770f('0x71')]);}if(_0x2bab82[_0x770f('0x5d')][_0x770f('0xa6')]&&_0x2bab82[_0x770f('0x5d')][_0x770f('0xa6')]['length']){for(var _0x4d00dc=0x0;_0x4d00dc<_0x2bab82[_0x770f('0x5d')]['attachments'][_0x770f('0x49')];_0x4d00dc+=0x1){_0x2bab82['body'][_0x770f('0xa6')][_0x4d00dc]={'filename':_0x2bab82['body'][_0x770f('0xa6')][_0x4d00dc][_0x770f('0x39')],'path':path['join'](config['root'],_0x770f('0xa7'),_0x2bab82[_0x770f('0x5d')][_0x770f('0xa6')][_0x4d00dc]['basename'])};}}var _0x2703be={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x5dcc57[_0x770f('0x5e')]['service'])){if(_0x5dcc57[_0x770f('0x5e')]['authentication']){_0x2703be['auth']={'user':_0x5dcc57[_0x770f('0x5e')][_0x770f('0x71')],'pass':_0x5dcc57[_0x770f('0x5e')][_0x770f('0x73')]};}_0x2703be[_0x770f('0x75')]=_0x5dcc57[_0x770f('0x5e')][_0x770f('0x75')];_0x2703be['port']=_0x5dcc57['Smtp'][_0x770f('0x76')];_0x2703be[_0x770f('0xa8')]=_0x5dcc57[_0x770f('0x5e')][_0x770f('0xa8')];}else{_0x2703be[_0x770f('0x77')]=_0x5dcc57[_0x770f('0x5e')][_0x770f('0x77')];_0x2703be[_0x770f('0xa9')]={'user':_0x5dcc57['Smtp'][_0x770f('0x71')],'pass':_0x5dcc57[_0x770f('0x5e')][_0x770f('0x73')]};}return respondWithRpcPromise(_0x770f('0xaa'),_0x770f('0xab'),{'account':_0x2703be,'message':_0x2bab82[_0x770f('0x5d')]});}else{throw new Error(_0x770f('0xac'));}}})[_0x770f('0x1f')](function(_0x55537e){if(_0x55537e){_0x861aed=_0x55537e;if(_0x29c1fc[_0x770f('0xa2')]){if(_0x29c1fc['List'][_0x770f('0xad')][_0x770f('0x49')]){return _0x29c1fc[_0x770f('0xa2')]['Contacts'][0x0];}else{return db[_0x770f('0x8a')][_0x770f('0x63')](_[_0x770f('0xae')](_0x2bab82['body'],{'firstName':_0x2bab82[_0x770f('0x5d')]['to'],'email':_0x2bab82['body']['to'],'phone':_0x2bab82['body']['to'],'ListId':_0x29c1fc['ListId']}));}}else{throw new Error(_0x770f('0xac'));}}})[_0x770f('0x1f')](function(_0x6921bb){if(_0x6921bb){var _0x3975ba={'UserId':_0x2bab82[_0x770f('0x71')]['id'],'ContactId':_0x6921bb['id'],'MailAccountId':_0x29c1fc['id'],'inReplyTo':_0x861aed[_0x770f('0xaf')],'to':_0x2bab82[_0x770f('0x5d')]['from'],'cc':_0x2bab82[_0x770f('0x5d')]['cc'],'subject':_0x2bab82[_0x770f('0x5d')][_0x770f('0xb0')],'attach':_0x2bab82[_0x770f('0x5d')][_0x770f('0xb1')],'firstMsgDirection':_0x770f('0xb2'),'lastMsgAt':moment()[_0x770f('0x9d')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'out','Messages':[_[_0x770f('0x52')](_0x2bab82[_0x770f('0x5d')],{'messageId':_0x861aed['messageId'],'sentAt':moment()['format'](_0x770f('0x9e')),'read':!![],'MailAccountId':_0x29c1fc['id'],'UserId':_0x2bab82[_0x770f('0x71')]['id'],'ContactId':_0x6921bb['id']})]};if(_0x2bab82[_0x770f('0x5d')]['Interaction']){_0x3975ba=_['merge'](_0x3975ba,_0x2bab82[_0x770f('0x5d')][_0x770f('0xb3')]);}return db['MailInteraction'][_0x770f('0x63')](_0x3975ba,{'include':[{'model':db[_0x770f('0x9a')],'as':_0x770f('0xb4')}]});}})[_0x770f('0x1f')](respondWithResult(_0x549fb2,null))['catch'](handleError(_0x549fb2,null));};exports[_0x770f('0xb5')]=function(_0x517e7b,_0xc4d209,_0x556464){return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x517e7b[_0x770f('0x59')]['id']},'include':[{'model':db[_0x770f('0x3d')],'as':_0x770f('0x5e'),'raw':!![]}]})[_0x770f('0x1f')](handleEntityNotFound(_0xc4d209,null))[_0x770f('0x1f')](function(_0x286297){if(_0x286297&&_0x286297[_0x770f('0x5e')]){var _0x4786b6={'id':_0x286297['id'],'tls':{'rejectUnauthorized':![]}};if(_0x286297[_0x770f('0x5e')][_0x770f('0x77')]){_0x4786b6[_0x770f('0x77')]=_0x286297[_0x770f('0x5e')][_0x770f('0x77')];}else{_0x4786b6['host']=_0x286297[_0x770f('0x5e')][_0x770f('0x75')];_0x4786b6[_0x770f('0x76')]=_0x286297[_0x770f('0x5e')][_0x770f('0x76')];_0x4786b6['secure']=_0x286297[_0x770f('0x5e')][_0x770f('0xa8')];}if(_0x286297[_0x770f('0x5e')][_0x770f('0xb6')]){_0x4786b6['auth']={'user':_0x286297[_0x770f('0x5e')][_0x770f('0x71')],'pass':_0x286297[_0x770f('0x5e')][_0x770f('0x73')]};}return respondWithRpcPromise(_0x770f('0xb7'),_0x770f('0xb5'),{'account':_0x4786b6});}})[_0x770f('0x1f')](respondWithResult(_0xc4d209,null))['catch'](handleError(_0xc4d209,null));};exports[_0x770f('0x35')]=function(_0xccebae,_0x1c63be){return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0xccebae['params']['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x1c63be,null))['then'](function(_0x1f1c85){if(_0x1f1c85&&_0x1f1c85[_0x770f('0x77')]){throw new db[(_0x770f('0xb8'))][(_0x770f('0xb9'))](_0x770f('0xba'));}return _0x1f1c85;})['then'](removeEntity(_0x1c63be,null))[_0x770f('0x29')](handleError(_0x1c63be,null));};exports[_0x770f('0xbb')]=function(_0x33c09d,_0x492713,_0x40a6d1){return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x33c09d[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x492713,null))[_0x770f('0x1f')](function(_0xe9881){if(_0xe9881){return _0xe9881['addAgents'](_0x33c09d[_0x770f('0x5d')][_0x770f('0x68')],_[_0x770f('0xbc')](_0x33c09d[_0x770f('0x5d')],[_0x770f('0x68'),'id'])||{})[_0x770f('0xbd')](function(_0x1fbf20){for(var _0x898e80=0x0;_0x898e80<_0x33c09d[_0x770f('0x5d')][_0x770f('0x68')][_0x770f('0x49')];_0x898e80+=0x1){socket[_0x770f('0xbe')]('userMailAccount:save',{'UserId':Number(_0x33c09d[_0x770f('0x5d')][_0x770f('0x68')][_0x898e80]),'MailAccountId':Number(_0x33c09d[_0x770f('0x59')]['id'])});}return _0x1fbf20;});}})[_0x770f('0x1f')](respondWithResult(_0x492713,null))[_0x770f('0x29')](handleError(_0x492713,null));};exports['removeAgents']=function(_0x1d3f04,_0x178614,_0x59e26b){return db[_0x770f('0x55')][_0x770f('0x5c')]({'where':{'id':_0x1d3f04[_0x770f('0x59')]['id']}})[_0x770f('0x1f')](handleEntityNotFound(_0x178614,null))[_0x770f('0x1f')](function(_0x10f703){if(_0x10f703){return _0x10f703[_0x770f('0xbf')](_0x1d3f04[_0x770f('0x44')][_0x770f('0x68')])[_0x770f('0x1f')](function(){if(_['isArray'](_0x1d3f04[_0x770f('0x44')][_0x770f('0x68')])){for(var _0x22c2e9=0x0;_0x22c2e9<_0x1d3f04[_0x770f('0x44')]['ids'][_0x770f('0x49')];_0x22c2e9+=0x1){socket[_0x770f('0xbe')](_0x770f('0xc0'),{'UserId':Number(_0x1d3f04[_0x770f('0x44')]['ids'][_0x22c2e9]),'MailAccountId':Number(_0x1d3f04[_0x770f('0x59')]['id'])});}}else{socket[_0x770f('0xbe')](_0x770f('0xc0'),{'UserId':Number(_0x1d3f04['query'][_0x770f('0x68')]),'MailAccountId':Number(_0x1d3f04['params']['id'])});}});}})[_0x770f('0x1f')](respondWithStatusCode(_0x178614,null))[_0x770f('0x29')](handleError(_0x178614,null));};exports[_0x770f('0xc1')]=function(_0x3e26ca,_0x5825b7,_0x1c49bf){var _0x4da1e5={};var _0x1b1ce9={};var _0x1649cf;var _0x3116d0;return db['MailAccount'][_0x770f('0x65')]({'where':{'id':_0x3e26ca[_0x770f('0x59')]['id']}})['then'](handleEntityNotFound(_0x5825b7,null))[_0x770f('0x1f')](function(_0x558a4d){if(_0x558a4d){_0x1649cf=_0x558a4d;_0x1b1ce9[_0x770f('0x43')]=_[_0x770f('0x45')](db[_0x770f('0x8c')]['rawAttributes']);_0x1b1ce9['query']=_['keys'](_0x3e26ca[_0x770f('0x44')]);_0x1b1ce9[_0x770f('0x46')]=_[_0x770f('0x47')](_0x1b1ce9['model'],_0x1b1ce9[_0x770f('0x44')]);_0x4da1e5[_0x770f('0x48')]=_['intersection'](_0x1b1ce9[_0x770f('0x43')],qs[_0x770f('0x5b')](_0x3e26ca[_0x770f('0x44')][_0x770f('0x5b')]));_0x4da1e5[_0x770f('0x48')]=_0x4da1e5[_0x770f('0x48')][_0x770f('0x49')]?_0x4da1e5[_0x770f('0x48')]:_0x1b1ce9[_0x770f('0x43')];_0x4da1e5[_0x770f('0x4d')]=qs[_0x770f('0x4e')](_0x3e26ca[_0x770f('0x44')]['sort']);_0x4da1e5['where']=qs['filters'](_[_0x770f('0x50')](_0x3e26ca[_0x770f('0x44')],_0x1b1ce9[_0x770f('0x46')]));if(_0x3e26ca[_0x770f('0x44')][_0x770f('0x51')]){_0x4da1e5['where']=_['merge'](_0x4da1e5[_0x770f('0x4f')],{'$or':_[_0x770f('0x3f')](_0x4da1e5[_0x770f('0x48')],function(_0x50eb32){var _0xb1d73d={};_0xb1d73d[_0x50eb32]={'$like':'%'+_0x3e26ca[_0x770f('0x44')][_0x770f('0x51')]+'%'};return _0xb1d73d;})});}_0x4da1e5=_[_0x770f('0x52')]({},_0x4da1e5,_0x3e26ca['options']);return _0x1649cf[_0x770f('0xc1')](_0x4da1e5);}})[_0x770f('0x1f')](function(_0xbc0e73){if(_0xbc0e73){_0x3116d0=_0xbc0e73[_0x770f('0x49')];if(!_0x3e26ca[_0x770f('0x44')][_0x770f('0x4a')](_0x770f('0x4b'))){_0x4da1e5[_0x770f('0x4c')]=qs[_0x770f('0x4c')](_0x3e26ca[_0x770f('0x44')][_0x770f('0x4c')]);_0x4da1e5[_0x770f('0x2e')]=qs['offset'](_0x3e26ca['query'][_0x770f('0x2e')]);}return _0x1649cf['getAgents'](_0x4da1e5);}})[_0x770f('0x1f')](function(_0x490283){if(_0x490283){return _0x490283?{'count':_0x3116d0,'rows':_0x490283}:null;}})[_0x770f('0x1f')](respondWithResult(_0x5825b7,null))['catch'](handleError(_0x5825b7,null));};
\ No newline at end of file
+var _0x4622=['VIRTUAL','options','includeAll','include','rows','params','find','body','describe','MailAccountId','Disposition','findOne','order','addAnswer','CannedAnswer','create','findAll','removeAnswers','ids','key','email','ListId','active','description','isNil','cauthentication','user','password','pass','cpassword','authentication','host','port','service','cservice','cuser','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','setImap','getSmtp','removeSmtp','setSmtp','addInteraction','MailInteraction','omit','getInteractions','CmContact','User','Owner','fullname','Tag','color','tag','addApplications','sequelize','MailApplication','findAndCountAll','priority','getApplications','MailMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','send','CmList','List','Contacts','DESC','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','auth','secure','defaults','messageId','subject','attach','out','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','html-to-text','juice','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','localhost','redis','./mailAccount.socket','register','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','error','code','message','request\x20sent','result','catch','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','UserProfileResource','end','stack','name','index','MailServerIn','Imap','MailServerOut','Smtp','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','type','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge'];(function(_0x5810b8,_0x401588){var _0x13a456=function(_0x4c25e1){while(--_0x4c25e1){_0x5810b8['push'](_0x5810b8['shift']());}};_0x13a456(++_0x401588);}(_0x4622,0x1e7));var _0x2462=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0x4622[_0x3cc9d9];return _0x1a425d;};'use strict';var emlformat=require(_0x2462('0x0'));var rimraf=require(_0x2462('0x1'));var zipdir=require(_0x2462('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2462('0x3'));var moment=require('moment');var BPromise=require(_0x2462('0x4'));var Mustache=require(_0x2462('0x5'));var util=require('util');var path=require(_0x2462('0x6'));var sox=require('sox');var csv=require(_0x2462('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2462('0x8'));var squel=require(_0x2462('0x9'));var crypto=require(_0x2462('0xa'));var jsforce=require(_0x2462('0xb'));var deskjs=require(_0x2462('0xc'));var toCsv=require(_0x2462('0x7'));var querystring=require(_0x2462('0xd'));var Papa=require(_0x2462('0xe'));var htmlToText=require(_0x2462('0xf'));var juice=require(_0x2462('0x10'));var Redis=require(_0x2462('0x11'));var authService=require(_0x2462('0x12'));var qs=require(_0x2462('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2462('0x14'));var logger=require(_0x2462('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x2462('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2462('0x17'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x2462('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2462('0x19')]));require(_0x2462('0x1a'))[_0x2462('0x1b')](socket);var jayson=require(_0x2462('0x1c'));var client=jayson[_0x2462('0x1d')][_0x2462('0x1e')]({'port':0x232b});function respondWithRpcPromise(_0x2fd98f,_0x4ad894,_0x4fa983,_0x4d132b){return new BPromise(function(_0x571487,_0x4622ae){var _0xd3469f=_0x4d132b||client;return _0xd3469f[_0x2462('0x1f')](_0x2fd98f,_0x4fa983)[_0x2462('0x20')](function(_0xb868c){logger[_0x2462('0x21')](_0x2462('0x22'),_0x4ad894,'request\x20sent');logger[_0x2462('0x23')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x4ad894,'request\x20sent',JSON['stringify'](_0xb868c));if(_0xb868c['error']){if(_0xb868c[_0x2462('0x24')][_0x2462('0x25')]===0x1f4){logger[_0x2462('0x24')](_0x2462('0x22'),_0x4ad894,_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);return _0x4622ae(_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);}logger['error'](_0x2462('0x22'),_0x4ad894,_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);return _0x571487(_0xb868c[_0x2462('0x24')][_0x2462('0x26')]);}else{logger[_0x2462('0x21')](_0x2462('0x22'),_0x4ad894,_0x2462('0x27'));_0x571487(_0xb868c[_0x2462('0x28')][_0x2462('0x26')]);}})[_0x2462('0x29')](function(_0x4a917b){logger[_0x2462('0x24')](_0x2462('0x22'),_0x4ad894,_0x4a917b);_0x4622ae(_0x4a917b);});});}function respondWithStatusCode(_0x156546,_0x6dd46){_0x6dd46=_0x6dd46||0xcc;return function(_0x324b97){if(_0x324b97){return _0x156546[_0x2462('0x2a')](_0x6dd46);}return _0x156546[_0x2462('0x2b')](_0x6dd46)['end']();};}function respondWithResult(_0x1da604,_0x4c7788){_0x4c7788=_0x4c7788||0xc8;return function(_0x52828c){if(_0x52828c){return _0x1da604[_0x2462('0x2b')](_0x4c7788)[_0x2462('0x2c')](_0x52828c);}};}function respondWithFilteredResult(_0x27abc3,_0x143ee3){return function(_0x46b624){if(_0x46b624){var _0xccb954=typeof _0x143ee3[_0x2462('0x2d')]==='undefined'&&typeof _0x143ee3['limit']===_0x2462('0x2e');var _0x598d06=_0x46b624[_0x2462('0x2f')];var _0x2feac3=_0xccb954?0x0:_0x143ee3['offset'];var _0xfd9ebc=_0xccb954?_0x46b624[_0x2462('0x2f')]:_0x143ee3[_0x2462('0x2d')]+_0x143ee3[_0x2462('0x30')];var _0x1a6196;if(_0xfd9ebc>=_0x598d06){_0xfd9ebc=_0x598d06;_0x1a6196=0xc8;}else{_0x1a6196=0xce;}_0x27abc3[_0x2462('0x2b')](_0x1a6196);return _0x27abc3[_0x2462('0x31')](_0x2462('0x32'),_0x2feac3+'-'+_0xfd9ebc+'/'+_0x598d06)['json'](_0x46b624);}return null;};}function patchUpdates(_0x58af47){return function(_0x4a431f){try{jsonpatch[_0x2462('0x33')](_0x4a431f,_0x58af47,!![]);}catch(_0x5ee7f3){return BPromise[_0x2462('0x34')](_0x5ee7f3);}return _0x4a431f[_0x2462('0x35')]();};}function saveUpdates(_0x32b81e,_0x3f96b5){return function(_0x2740bc){if(_0x2740bc){return _0x2740bc[_0x2462('0x36')](_0x32b81e)['then'](function(_0x4a1a78){return _0x4a1a78;});}return null;};}function removeEntity(_0x543ef0,_0x4fe51e){return function(_0x2ec0bd){if(_0x2ec0bd){return _0x2ec0bd[_0x2462('0x37')]()[_0x2462('0x20')](function(){var _0xa0bad0=_0x2ec0bd['get']({'plain':!![]});var _0x12e1b2='MailAccounts';return db[_0x2462('0x38')][_0x2462('0x37')]({'where':{'type':_0x12e1b2,'resourceId':_0xa0bad0['id']}})[_0x2462('0x20')](function(){return _0x2ec0bd;});})[_0x2462('0x20')](function(){_0x543ef0['status'](0xcc)[_0x2462('0x39')]();});}};}function handleEntityNotFound(_0x2a1dcb,_0x950da1){return function(_0x4a10c2){if(!_0x4a10c2){_0x2a1dcb[_0x2462('0x2a')](0x194);}return _0x4a10c2;};}function handleError(_0xd9e4e6,_0x438ccf){_0x438ccf=_0x438ccf||0x1f4;return function(_0x484639){logger[_0x2462('0x24')](_0x484639[_0x2462('0x3a')]);if(_0x484639[_0x2462('0x3b')]){delete _0x484639[_0x2462('0x3b')];}_0xd9e4e6[_0x2462('0x2b')](_0x438ccf)['send'](_0x484639);};}exports[_0x2462('0x3c')]=function(_0x336c3f,_0x76e4cd){var _0xf11fd1={'include':[{'model':db[_0x2462('0x3d')],'as':_0x2462('0x3e')},{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40')},{'model':db[_0x2462('0x41')],'as':_0x2462('0x42')}]},_0x431ae8={},_0x409370={'count':0x0,'rows':[]};var _0x27dd72=_[_0x2462('0x43')](db[_0x2462('0x44')][_0x2462('0x45')],function(_0x39d6c8){return{'name':_0x39d6c8['fieldName'],'type':_0x39d6c8[_0x2462('0x46')]['key']};});_0x431ae8[_0x2462('0x47')]=_[_0x2462('0x43')](_0x27dd72,_0x2462('0x3b'));_0x431ae8['query']=_[_0x2462('0x48')](_0x336c3f[_0x2462('0x49')]);_0x431ae8['filters']=_['intersection'](_0x431ae8['model'],_0x431ae8['query']);_0xf11fd1[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x431ae8[_0x2462('0x47')],qs[_0x2462('0x4c')](_0x336c3f[_0x2462('0x49')]['fields']));_0xf11fd1[_0x2462('0x4a')]=_0xf11fd1['attributes'][_0x2462('0x4d')]?_0xf11fd1[_0x2462('0x4a')]:_0x431ae8[_0x2462('0x47')];if(!_0x336c3f[_0x2462('0x49')][_0x2462('0x4e')](_0x2462('0x4f'))){_0xf11fd1[_0x2462('0x30')]=qs['limit'](_0x336c3f[_0x2462('0x49')]['limit']);_0xf11fd1[_0x2462('0x2d')]=qs['offset'](_0x336c3f[_0x2462('0x49')][_0x2462('0x2d')]);}_0xf11fd1['order']=qs[_0x2462('0x50')](_0x336c3f[_0x2462('0x49')]['sort']);_0xf11fd1[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0x336c3f['query'],_0x431ae8[_0x2462('0x52')]),_0x27dd72);if(_0x336c3f[_0x2462('0x49')][_0x2462('0x54')]){_0xf11fd1[_0x2462('0x51')]=_[_0x2462('0x55')](_0xf11fd1[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x27dd72,function(_0x44d6cf){if(_0x44d6cf[_0x2462('0x46')]!==_0x2462('0x56')){var _0x4f6748={};_0x4f6748[_0x44d6cf[_0x2462('0x3b')]]={'$like':'%'+_0x336c3f['query'][_0x2462('0x54')]+'%'};return _0x4f6748;}})});}_0xf11fd1=_[_0x2462('0x55')]({},_0xf11fd1,_0x336c3f[_0x2462('0x57')]);var _0x59b6dd={'where':_0xf11fd1['where']};return db[_0x2462('0x44')][_0x2462('0x2f')](_0x59b6dd)[_0x2462('0x20')](function(_0x5b96b1){_0x409370[_0x2462('0x2f')]=_0x5b96b1;if(_0x336c3f['query'][_0x2462('0x58')]){_0xf11fd1[_0x2462('0x59')]=[{'all':!![]}];}return db[_0x2462('0x44')]['findAll'](_0xf11fd1);})['then'](function(_0x5a2213){_0x409370[_0x2462('0x5a')]=_0x5a2213;return _0x409370;})['then'](respondWithFilteredResult(_0x76e4cd,_0xf11fd1))['catch'](handleError(_0x76e4cd,null));};exports['show']=function(_0x3fbc32,_0xd63a8){var _0xc09dfc={'raw':![],'where':{'id':_0x3fbc32[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x3d')],'as':_0x2462('0x3e')},{'model':db['MailServerOut'],'as':_0x2462('0x40')},{'model':db['Pause'],'as':_0x2462('0x42')}]},_0x417c1a={};_0x417c1a[_0x2462('0x47')]=_['keys'](db['MailAccount'][_0x2462('0x45')]);_0x417c1a[_0x2462('0x49')]=_['keys'](_0x3fbc32[_0x2462('0x49')]);_0x417c1a[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x417c1a[_0x2462('0x47')],_0x417c1a[_0x2462('0x49')]);_0xc09dfc[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x417c1a[_0x2462('0x47')],qs['fields'](_0x3fbc32[_0x2462('0x49')][_0x2462('0x4c')]));_0xc09dfc['attributes']=_0xc09dfc[_0x2462('0x4a')]['length']?_0xc09dfc['attributes']:_0x417c1a[_0x2462('0x47')];if(_0x3fbc32[_0x2462('0x49')][_0x2462('0x58')]){_0xc09dfc[_0x2462('0x59')]=[{'all':!![]}];}_0xc09dfc=_[_0x2462('0x55')]({},_0xc09dfc,_0x3fbc32[_0x2462('0x57')]);return db[_0x2462('0x44')][_0x2462('0x5c')](_0xc09dfc)['then'](handleEntityNotFound(_0xd63a8,null))['then'](respondWithResult(_0xd63a8,null))['catch'](handleError(_0xd63a8,null));};exports[_0x2462('0x36')]=function(_0xf3508c,_0x282476){if(_0xf3508c[_0x2462('0x5d')]['id']){delete _0xf3508c[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0xf3508c[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x3d')],'as':_0x2462('0x3e')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db[_0x2462('0x41')],'as':_0x2462('0x42')}]})[_0x2462('0x20')](handleEntityNotFound(_0x282476,null))[_0x2462('0x20')](saveUpdates(_0xf3508c[_0x2462('0x5d')],null))[_0x2462('0x20')](function(_0x29ea9a){if(_0x29ea9a&&_0xf3508c['body'][_0x2462('0x3e')]){return db[_0x2462('0x3d')][_0x2462('0x36')](_0xf3508c[_0x2462('0x5d')][_0x2462('0x3e')],{'where':{'MailAccountId':_0x29ea9a['id']}})[_0x2462('0x20')](function(){return _0x29ea9a;});}return _0x29ea9a;})[_0x2462('0x20')](function(_0x25e68d){if(_0x25e68d&&_0xf3508c[_0x2462('0x5d')][_0x2462('0x40')]){return db[_0x2462('0x3f')][_0x2462('0x36')](_0xf3508c['body'][_0x2462('0x40')],{'where':{'MailAccountId':_0x25e68d['id']}})['then'](function(){return _0x25e68d;});}return _0x25e68d;})[_0x2462('0x20')](respondWithResult(_0x282476,null))[_0x2462('0x29')](handleError(_0x282476,null));};exports['describe']=function(_0x10419c,_0x24ff64){return db[_0x2462('0x44')][_0x2462('0x5e')]()[_0x2462('0x20')](respondWithResult(_0x24ff64,null))[_0x2462('0x29')](handleError(_0x24ff64,null));};exports['addDisposition']=function(_0x20c718,_0x4d9ab2,_0xa2fe79){if(_0x20c718[_0x2462('0x5d')]['id']){delete _0x20c718['body']['id'];}return db['MailAccount'][_0x2462('0x5c')]({'where':{'id':_0x20c718[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x4d9ab2,null))[_0x2462('0x20')](function(_0x487305){if(_0x487305){_0x20c718[_0x2462('0x5d')][_0x2462('0x5f')]=_0x487305['id'];return db[_0x2462('0x60')]['create'](_0x20c718['body']);}})[_0x2462('0x20')](respondWithResult(_0x4d9ab2,null))['catch'](handleError(_0x4d9ab2,null));};exports['getDispositions']=function(_0x45a553,_0x1b28b1,_0x1c7960){var _0x1b4b1f={'raw':![],'where':{}};var _0x53688c={};var _0x998101={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x45a553[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1b28b1,null))[_0x2462('0x20')](function(_0x20f0f7){if(_0x20f0f7){_0x53688c[_0x2462('0x47')]=_['keys'](db[_0x2462('0x60')][_0x2462('0x45')]);_0x53688c[_0x2462('0x49')]=_[_0x2462('0x48')](_0x45a553[_0x2462('0x49')]);_0x53688c[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x53688c[_0x2462('0x47')],_0x53688c[_0x2462('0x49')]);_0x1b4b1f[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x53688c[_0x2462('0x47')],qs[_0x2462('0x4c')](_0x45a553[_0x2462('0x49')]['fields']));_0x1b4b1f[_0x2462('0x4a')]=_0x1b4b1f[_0x2462('0x4a')][_0x2462('0x4d')]?_0x1b4b1f[_0x2462('0x4a')]:_0x53688c[_0x2462('0x47')];if(!_0x45a553['query'][_0x2462('0x4e')]('nolimit')){_0x1b4b1f[_0x2462('0x30')]=qs[_0x2462('0x30')](_0x45a553[_0x2462('0x49')]['limit']);_0x1b4b1f[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x45a553[_0x2462('0x49')][_0x2462('0x2d')]);}_0x1b4b1f[_0x2462('0x62')]=qs[_0x2462('0x50')](_0x45a553[_0x2462('0x49')][_0x2462('0x50')]);_0x1b4b1f[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0x45a553[_0x2462('0x49')],_0x53688c[_0x2462('0x52')]));_0x1b4b1f[_0x2462('0x51')][_0x2462('0x5f')]=_0x20f0f7['id'];if(_0x45a553[_0x2462('0x49')][_0x2462('0x54')]){_0x1b4b1f['where']=_['merge'](_0x1b4b1f[_0x2462('0x51')],{'$or':_['map'](_0x1b4b1f['attributes'],function(_0x36363e){var _0x594854={};_0x594854[_0x36363e]={'$like':'%'+_0x45a553['query'][_0x2462('0x54')]+'%'};return _0x594854;})});}_0x1b4b1f=_[_0x2462('0x55')]({},_0x1b4b1f,_0x45a553['options']);return db[_0x2462('0x60')][_0x2462('0x2f')]({'where':_0x1b4b1f[_0x2462('0x51')]})[_0x2462('0x20')](function(_0x3d3e95){_0x998101[_0x2462('0x2f')]=_0x3d3e95;if(_0x45a553['query'][_0x2462('0x58')]){_0x1b4b1f[_0x2462('0x59')]=[{'all':!![]}];}return db[_0x2462('0x60')]['findAll'](_0x1b4b1f);})['then'](function(_0x4d2440){_0x998101['rows']=_0x4d2440;return _0x998101;});}})[_0x2462('0x20')](respondWithFilteredResult(_0x1b28b1,_0x1b4b1f))[_0x2462('0x29')](handleError(_0x1b28b1,null));};exports['removeDispositions']=function(_0x478d42,_0x54ef12,_0x1adb3e){return db['MailAccount'][_0x2462('0x5c')]({'where':{'id':_0x478d42[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x54ef12,null))[_0x2462('0x20')](function(_0x4a2776){if(_0x4a2776){return _0x4a2776['removeDispositions'](_0x478d42[_0x2462('0x49')]['ids']);}})[_0x2462('0x20')](respondWithStatusCode(_0x54ef12,null))[_0x2462('0x29')](handleError(_0x54ef12,null));};exports[_0x2462('0x63')]=function(_0x4d18b6,_0x5d9257,_0x30ba54){if(_0x4d18b6[_0x2462('0x5d')]['id']){delete _0x4d18b6[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')]['find']({'where':{'id':_0x4d18b6['params']['id']}})['then'](handleEntityNotFound(_0x5d9257,null))[_0x2462('0x20')](function(_0x547e35){if(_0x547e35){_0x4d18b6['body'][_0x2462('0x5f')]=_0x547e35['id'];return db[_0x2462('0x64')][_0x2462('0x65')](_0x4d18b6[_0x2462('0x5d')]);}})[_0x2462('0x20')](respondWithResult(_0x5d9257,null))['catch'](handleError(_0x5d9257,null));};exports['getAnswers']=function(_0x19c2ae,_0x5d93f4,_0x2a7f82){var _0x106689={'raw':![],'where':{}};var _0x22b9d0={};var _0x4151a5={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x19c2ae['params']['id']}})['then'](handleEntityNotFound(_0x5d93f4,null))[_0x2462('0x20')](function(_0x466767){if(_0x466767){_0x22b9d0[_0x2462('0x47')]=_[_0x2462('0x48')](db[_0x2462('0x64')][_0x2462('0x45')]);_0x22b9d0[_0x2462('0x49')]=_[_0x2462('0x48')](_0x19c2ae['query']);_0x22b9d0[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x22b9d0[_0x2462('0x47')],_0x22b9d0[_0x2462('0x49')]);_0x106689[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x22b9d0['model'],qs[_0x2462('0x4c')](_0x19c2ae['query'][_0x2462('0x4c')]));_0x106689[_0x2462('0x4a')]=_0x106689[_0x2462('0x4a')][_0x2462('0x4d')]?_0x106689[_0x2462('0x4a')]:_0x22b9d0[_0x2462('0x47')];if(!_0x19c2ae[_0x2462('0x49')][_0x2462('0x4e')]('nolimit')){_0x106689['limit']=qs[_0x2462('0x30')](_0x19c2ae['query']['limit']);_0x106689[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x19c2ae[_0x2462('0x49')]['offset']);}_0x106689[_0x2462('0x62')]=qs['sort'](_0x19c2ae['query'][_0x2462('0x50')]);_0x106689[_0x2462('0x51')]=qs['filters'](_[_0x2462('0x53')](_0x19c2ae[_0x2462('0x49')],_0x22b9d0[_0x2462('0x52')]));_0x106689[_0x2462('0x51')][_0x2462('0x5f')]=_0x466767['id'];if(_0x19c2ae[_0x2462('0x49')][_0x2462('0x54')]){_0x106689[_0x2462('0x51')]=_[_0x2462('0x55')](_0x106689[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x106689[_0x2462('0x4a')],function(_0x1a45bc){var _0x443b28={};_0x443b28[_0x1a45bc]={'$like':'%'+_0x19c2ae[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x443b28;})});}_0x106689=_[_0x2462('0x55')]({},_0x106689,_0x19c2ae['options']);return db[_0x2462('0x64')][_0x2462('0x2f')]({'where':_0x106689['where']})[_0x2462('0x20')](function(_0x10ef4f){_0x4151a5[_0x2462('0x2f')]=_0x10ef4f;if(_0x19c2ae['query'][_0x2462('0x58')]){_0x106689[_0x2462('0x59')]=[{'all':!![]}];}return db[_0x2462('0x64')][_0x2462('0x66')](_0x106689);})[_0x2462('0x20')](function(_0xdbb1c8){_0x4151a5[_0x2462('0x5a')]=_0xdbb1c8;return _0x4151a5;});}})[_0x2462('0x20')](respondWithFilteredResult(_0x5d93f4,_0x106689))['catch'](handleError(_0x5d93f4,null));};exports[_0x2462('0x67')]=function(_0x489985,_0x4c7781,_0x2c7d68){return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x489985[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x4c7781,null))[_0x2462('0x20')](function(_0x2f9712){if(_0x2f9712){return _0x2f9712[_0x2462('0x67')](_0x489985[_0x2462('0x49')][_0x2462('0x68')]);}})[_0x2462('0x20')](respondWithStatusCode(_0x4c7781,null))[_0x2462('0x29')](handleError(_0x4c7781,null));};exports[_0x2462('0x65')]=function(_0x18a108,_0x57df77){var _0x39d7a5={'name':_0x18a108[_0x2462('0x5d')][_0x2462('0x3b')],'key':_0x18a108[_0x2462('0x5d')][_0x2462('0x69')],'email':_0x18a108[_0x2462('0x5d')][_0x2462('0x6a')],'ListId':_0x18a108[_0x2462('0x5d')][_0x2462('0x6b')],'active':!_['isNil'](_0x18a108[_0x2462('0x5d')]['active'])?_0x18a108[_0x2462('0x5d')][_0x2462('0x6c')]:!![],'description':_0x18a108[_0x2462('0x5d')][_0x2462('0x6d')]||null,'Imap':{},'Smtp':{}};if(_[_0x2462('0x6e')](_0x18a108[_0x2462('0x5d')]['cservice'])){if(_0x18a108[_0x2462('0x5d')][_0x2462('0x6f')]){_0x39d7a5[_0x2462('0x3e')][_0x2462('0x70')]=_0x39d7a5[_0x2462('0x40')]['user']=_0x18a108['body']['cuser'];_0x39d7a5['Imap'][_0x2462('0x71')]=_0x39d7a5['Smtp'][_0x2462('0x72')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x73')];}else{_0x39d7a5[_0x2462('0x3e')]['authentication']=_0x39d7a5['Smtp'][_0x2462('0x74')]=![];}_0x39d7a5[_0x2462('0x3e')][_0x2462('0x75')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x3e')][_0x2462('0x75')];_0x39d7a5[_0x2462('0x3e')]['port']=_0x18a108['body'][_0x2462('0x3e')][_0x2462('0x76')];_0x39d7a5['Smtp'][_0x2462('0x75')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x40')]['host'];_0x39d7a5['Smtp'][_0x2462('0x76')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x40')][_0x2462('0x76')];}else{_0x39d7a5[_0x2462('0x3e')]['service']=_0x39d7a5['Smtp'][_0x2462('0x77')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x78')];_0x39d7a5[_0x2462('0x3e')]['user']=_0x39d7a5[_0x2462('0x40')][_0x2462('0x70')]=_0x18a108[_0x2462('0x5d')][_0x2462('0x79')];_0x39d7a5[_0x2462('0x3e')][_0x2462('0x71')]=_0x39d7a5[_0x2462('0x40')][_0x2462('0x72')]=_0x18a108['body'][_0x2462('0x73')];}return db[_0x2462('0x44')][_0x2462('0x65')](_0x39d7a5,{'include':[{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40')},{'model':db[_0x2462('0x3d')],'as':'Imap'}]})['then'](function(_0x419690){var _0x32a80b=_0x18a108[_0x2462('0x70')][_0x2462('0x7a')]({'plain':!![]});if(!_0x32a80b)throw new Error(_0x2462('0x7b'));if(_0x32a80b['role']==='user'){var _0x13c5af=_0x419690[_0x2462('0x7a')]({'plain':!![]});return db[_0x2462('0x7c')][_0x2462('0x5c')]({'where':{'name':_0x2462('0x7d'),'userProfileId':_0x32a80b['userProfileId']},'raw':!![]})[_0x2462('0x20')](function(_0x46da77){if(_0x46da77&&_0x46da77[_0x2462('0x7e')]===0x0){return db[_0x2462('0x38')][_0x2462('0x65')]({'name':_0x13c5af[_0x2462('0x3b')],'resourceId':_0x13c5af['id'],'type':_0x46da77[_0x2462('0x3b')],'sectionId':_0x46da77['id']},{})[_0x2462('0x20')](function(){return _0x419690;});}else{return _0x419690;}})[_0x2462('0x29')](function(_0x782d5e){logger['error'](_0x2462('0x7f'),_0x782d5e);throw _0x782d5e;});}return _0x419690;})[_0x2462('0x20')](respondWithResult(_0x57df77,0xc9))[_0x2462('0x29')](handleError(_0x57df77,null));};exports[_0x2462('0x80')]=function(_0x4fba41,_0x48d707,_0xb8e42b){return db['MailAccount']['findOne']({'where':{'id':_0x4fba41[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x48d707,null))[_0x2462('0x20')](function(_0x54745b){if(_0x54745b){return _0x54745b[_0x2462('0x80')]();}return null;})[_0x2462('0x20')](respondWithResult(_0x48d707,null))[_0x2462('0x29')](handleError(_0x48d707,null));};exports[_0x2462('0x81')]=function(_0x3eee21,_0x1a59de,_0x27cec9){if(_0x3eee21[_0x2462('0x5d')]['id']){delete _0x3eee21[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x3eee21[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x1a59de,null))[_0x2462('0x20')](function(_0xd4c32d){if(_0xd4c32d){_0x3eee21[_0x2462('0x5d')][_0x2462('0x5f')]=_0xd4c32d['id'];return db[_0x2462('0x3d')][_0x2462('0x65')](_0x3eee21['body']);}})[_0x2462('0x20')](respondWithResult(_0x1a59de,null))[_0x2462('0x29')](handleError(_0x1a59de,null));};exports['removeImap']=function(_0x42ad79,_0x1293e3,_0x2514ab){return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x42ad79['params']['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x1293e3,null))[_0x2462('0x20')](function(_0x32836a){if(_0x32836a){return _0x32836a[_0x2462('0x82')](null);}return null;})[_0x2462('0x20')](respondWithStatusCode(_0x1293e3,null))[_0x2462('0x29')](handleError(_0x1293e3,null));};exports[_0x2462('0x83')]=function(_0x1cb570,_0x2a26e1,_0x35a7e1){return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x1cb570[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x2a26e1,null))[_0x2462('0x20')](function(_0x14c04a){if(_0x14c04a){return _0x14c04a[_0x2462('0x83')]();}return null;})[_0x2462('0x20')](respondWithResult(_0x2a26e1,null))[_0x2462('0x29')](handleError(_0x2a26e1,null));};exports['addSmtp']=function(_0x21eee2,_0x1e1d23,_0x4fba16){if(_0x21eee2[_0x2462('0x5d')]['id']){delete _0x21eee2[_0x2462('0x5d')]['id'];}return db[_0x2462('0x44')]['find']({'where':{'id':_0x21eee2[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x1e1d23,null))[_0x2462('0x20')](function(_0x2a5768){if(_0x2a5768){_0x21eee2[_0x2462('0x5d')][_0x2462('0x5f')]=_0x2a5768['id'];return db[_0x2462('0x3f')][_0x2462('0x65')](_0x21eee2[_0x2462('0x5d')]);}})[_0x2462('0x20')](respondWithResult(_0x1e1d23,null))[_0x2462('0x29')](handleError(_0x1e1d23,null));};exports[_0x2462('0x84')]=function(_0x31e3cd,_0x5ec1ac,_0x1b12c0){return db[_0x2462('0x44')]['findOne']({'where':{'id':_0x31e3cd[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5ec1ac,null))[_0x2462('0x20')](function(_0xe2234c){if(_0xe2234c){return _0xe2234c[_0x2462('0x85')](null);}return null;})[_0x2462('0x20')](respondWithStatusCode(_0x5ec1ac,null))[_0x2462('0x29')](handleError(_0x5ec1ac,null));};exports[_0x2462('0x86')]=function(_0xd44881,_0x6b0676,_0x3bab68){return db[_0x2462('0x87')][_0x2462('0x5c')]({'where':{'id':_0xd44881['params']['id']}})['then'](handleEntityNotFound(_0x6b0676,null))['then'](function(_0x4bc0cf){if(_0x4bc0cf){return _0x4bc0cf[_0x2462('0x86')](_0xd44881[_0x2462('0x5d')][_0x2462('0x68')],_[_0x2462('0x88')](_0xd44881[_0x2462('0x5d')],[_0x2462('0x68'),'id'])||{});}})[_0x2462('0x20')](respondWithResult(_0x6b0676,null))[_0x2462('0x29')](handleError(_0x6b0676,null));};exports[_0x2462('0x89')]=function(_0x5da6a2,_0x1854c3,_0x4bfcbd){var _0x4f1ed9={'raw':![],'where':{}};var _0x4a1114={};var _0x2463ee={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x5da6a2[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1854c3,null))['then'](function(_0x4d41e1){if(_0x4d41e1){_0x4a1114[_0x2462('0x47')]=_[_0x2462('0x48')](db[_0x2462('0x87')][_0x2462('0x45')]);_0x4a1114[_0x2462('0x49')]=_[_0x2462('0x48')](_0x5da6a2['query']);_0x4a1114[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x4a1114['model'],_0x4a1114[_0x2462('0x49')]);_0x4f1ed9[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x4a1114[_0x2462('0x47')],qs['fields'](_0x5da6a2[_0x2462('0x49')][_0x2462('0x4c')]));_0x4f1ed9[_0x2462('0x4a')]=_0x4f1ed9[_0x2462('0x4a')][_0x2462('0x4d')]?_0x4f1ed9['attributes']:_0x4a1114[_0x2462('0x47')];if(!_0x5da6a2[_0x2462('0x49')][_0x2462('0x4e')](_0x2462('0x4f'))){_0x4f1ed9[_0x2462('0x30')]=qs[_0x2462('0x30')](_0x5da6a2[_0x2462('0x49')]['limit']);_0x4f1ed9[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x5da6a2[_0x2462('0x49')][_0x2462('0x2d')]);}_0x4f1ed9['order']=qs[_0x2462('0x50')](_0x5da6a2[_0x2462('0x49')][_0x2462('0x50')]);_0x4f1ed9[_0x2462('0x51')]=qs[_0x2462('0x52')](_['pick'](_0x5da6a2[_0x2462('0x49')],_0x4a1114['filters']));_0x4f1ed9[_0x2462('0x51')][_0x2462('0x5f')]=_0x4d41e1['id'];if(_0x5da6a2[_0x2462('0x49')][_0x2462('0x54')]){_0x4f1ed9[_0x2462('0x51')]=_[_0x2462('0x55')](_0x4f1ed9[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x4f1ed9['attributes'],function(_0x4bca3f){var _0x1ff813={};_0x1ff813[_0x4bca3f]={'$like':'%'+_0x5da6a2[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x1ff813;})});}_0x4f1ed9=_[_0x2462('0x55')]({},_0x4f1ed9,_0x5da6a2[_0x2462('0x57')]);return db['MailInteraction'][_0x2462('0x2f')]({'where':_0x4f1ed9[_0x2462('0x51')]})[_0x2462('0x20')](function(_0x52ef24){_0x2463ee[_0x2462('0x2f')]=_0x52ef24;if(_0x5da6a2[_0x2462('0x49')][_0x2462('0x58')]){_0x4f1ed9['include']=[{'model':db[_0x2462('0x8a')],'as':'Contact','required':![]},{'model':db[_0x2462('0x8b')],'as':_0x2462('0x8c'),'attributes':[_0x2462('0x3b'),_0x2462('0x8d'),'internal'],'required':![]},{'model':db[_0x2462('0x8e')],'as':'Tags','attributes':['id',_0x2462('0x3b'),_0x2462('0x8f')],'where':_0x5da6a2[_0x2462('0x49')][_0x2462('0x90')]?{'id':_0x5da6a2[_0x2462('0x49')][_0x2462('0x90')]}:undefined,'required':_0x5da6a2[_0x2462('0x49')][_0x2462('0x90')]?!![]:![]}];}return db[_0x2462('0x87')]['findAll'](_0x4f1ed9);})[_0x2462('0x20')](function(_0x1bea17){_0x2463ee['rows']=_0x1bea17;return _0x2463ee;});}})[_0x2462('0x20')](respondWithFilteredResult(_0x1854c3,_0x4f1ed9))[_0x2462('0x29')](handleError(_0x1854c3,null));};exports[_0x2462('0x91')]=function(_0x14bdd5,_0x414cc5,_0x1f4862){return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x14bdd5[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x414cc5,null))[_0x2462('0x20')](function(_0x70e3cf){if(_0x70e3cf){return db[_0x2462('0x92')]['transaction'](function(_0x44030b){return db[_0x2462('0x93')][_0x2462('0x37')]({'where':{'MailAccountId':_0x14bdd5[_0x2462('0x5b')]['id']},'transaction':_0x44030b})[_0x2462('0x20')](function(_0x12f385){var _0x110d61=_[_0x2462('0x43')](_0x14bdd5['body'],function(_0x55163e){_0x55163e[_0x2462('0x5f')]=_0x14bdd5[_0x2462('0x5b')]['id'];return _0x55163e;});return db[_0x2462('0x93')]['bulkCreate'](_0x110d61,{'transaction':_0x44030b});});})[_0x2462('0x20')](function(){return db['MailApplication'][_0x2462('0x94')]({'where':{'MailAccountId':_0x14bdd5[_0x2462('0x5b')]['id']},'order':_0x2462('0x95')});});}})[_0x2462('0x20')](respondWithResult(_0x414cc5,null))[_0x2462('0x29')](handleError(_0x414cc5,null));};exports[_0x2462('0x96')]=function(_0x33f9dc,_0x1df280,_0x2dab9a){var _0x2dd146={};var _0x584c48={};var _0x16e960;var _0x206618;return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x33f9dc[_0x2462('0x5b')]['id']}})['then'](handleEntityNotFound(_0x1df280,null))[_0x2462('0x20')](function(_0x452bca){if(_0x452bca){_0x16e960=_0x452bca;_0x584c48['model']=_[_0x2462('0x48')](db['MailApplication'][_0x2462('0x45')]);_0x584c48['query']=_[_0x2462('0x48')](_0x33f9dc[_0x2462('0x49')]);_0x584c48['filters']=_[_0x2462('0x4b')](_0x584c48[_0x2462('0x47')],_0x584c48[_0x2462('0x49')]);_0x2dd146['attributes']=_[_0x2462('0x4b')](_0x584c48[_0x2462('0x47')],qs[_0x2462('0x4c')](_0x33f9dc[_0x2462('0x49')][_0x2462('0x4c')]));_0x2dd146[_0x2462('0x4a')]=_0x2dd146['attributes'][_0x2462('0x4d')]?_0x2dd146[_0x2462('0x4a')]:_0x584c48[_0x2462('0x47')];_0x2dd146[_0x2462('0x62')]=qs['sort'](_0x33f9dc['query']['sort']);_0x2dd146[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0x33f9dc[_0x2462('0x49')],_0x584c48['filters']));if(_0x33f9dc[_0x2462('0x49')][_0x2462('0x54')]){_0x2dd146['where']=_[_0x2462('0x55')](_0x2dd146[_0x2462('0x51')],{'$or':_['map'](_0x2dd146[_0x2462('0x4a')],function(_0x165156){var _0x5410ac={};_0x5410ac[_0x165156]={'$like':'%'+_0x33f9dc[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x5410ac;})});}_0x2dd146=_[_0x2462('0x55')]({},_0x2dd146,_0x33f9dc['options']);return _0x16e960[_0x2462('0x96')](_0x2dd146);}})[_0x2462('0x20')](function(_0x5e6d58){if(_0x5e6d58){_0x206618=_0x5e6d58[_0x2462('0x4d')];if(!_0x33f9dc[_0x2462('0x49')]['hasOwnProperty'](_0x2462('0x4f'))){_0x2dd146[_0x2462('0x30')]=qs[_0x2462('0x30')](_0x33f9dc[_0x2462('0x49')][_0x2462('0x30')]);_0x2dd146[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x33f9dc[_0x2462('0x49')][_0x2462('0x2d')]);}return _0x16e960[_0x2462('0x96')](_0x2dd146);}})[_0x2462('0x20')](function(_0x438bdb){if(_0x438bdb){return _0x438bdb?{'count':_0x206618,'rows':_0x438bdb}:null;}})[_0x2462('0x20')](respondWithResult(_0x1df280,null))[_0x2462('0x29')](handleError(_0x1df280,null));};exports['getMessages']=function(_0xc9a355,_0x32b511,_0x47c1cd){var _0x501c7b={'raw':!![],'where':{}};var _0x4c2e03={};var _0x2ae4a7={'count':0x0,'rows':[]};return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0xc9a355[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x32b511,null))[_0x2462('0x20')](function(_0x23c6e0){if(_0x23c6e0){_0x4c2e03[_0x2462('0x47')]=_['keys'](db[_0x2462('0x97')][_0x2462('0x45')]);_0x4c2e03[_0x2462('0x49')]=_[_0x2462('0x48')](_0xc9a355[_0x2462('0x49')]);_0x4c2e03[_0x2462('0x52')]=_[_0x2462('0x4b')](_0x4c2e03[_0x2462('0x47')],_0x4c2e03[_0x2462('0x49')]);_0x501c7b[_0x2462('0x4a')]=_['intersection'](_0x4c2e03[_0x2462('0x47')],qs[_0x2462('0x4c')](_0xc9a355[_0x2462('0x49')][_0x2462('0x4c')]));_0x501c7b[_0x2462('0x4a')]=_0x501c7b[_0x2462('0x4a')]['length']?_0x501c7b[_0x2462('0x4a')]:_0x4c2e03['model'];if(!_0xc9a355['query'][_0x2462('0x4e')](_0x2462('0x4f'))){_0x501c7b[_0x2462('0x30')]=qs['limit'](_0xc9a355[_0x2462('0x49')][_0x2462('0x30')]);_0x501c7b['offset']=qs[_0x2462('0x2d')](_0xc9a355[_0x2462('0x49')][_0x2462('0x2d')]);}_0x501c7b[_0x2462('0x62')]=qs[_0x2462('0x50')](_0xc9a355['query']['sort']);_0x501c7b[_0x2462('0x51')]=qs[_0x2462('0x52')](_[_0x2462('0x53')](_0xc9a355[_0x2462('0x49')],_0x4c2e03[_0x2462('0x52')]));_0x501c7b[_0x2462('0x51')][_0x2462('0x5f')]=_0x23c6e0['id'];if(_0xc9a355[_0x2462('0x49')]['filter']){_0x501c7b[_0x2462('0x51')]=_['merge'](_0x501c7b[_0x2462('0x51')],{'$or':_[_0x2462('0x43')](_0x501c7b[_0x2462('0x4a')],function(_0x90158a){var _0x365fb0={};_0x365fb0[_0x90158a]={'$like':'%'+_0xc9a355[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x365fb0;})});}if(_0xc9a355[_0x2462('0x49')][_0x2462('0x98')]){var _0x1c4f39=_0xc9a355[_0x2462('0x49')][_0x2462('0x98')][_0x2462('0x99')](',');var _0x191a84={};_0x191a84[_0x1c4f39[0x0]]={'$gte':moment(_0x1c4f39[0x1])[_0x2462('0x9a')](_0x2462('0x9b'))};_0x501c7b[_0x2462('0x51')]=_[_0x2462('0x55')](_0x501c7b[_0x2462('0x51')],_0x191a84);}_0x501c7b=_[_0x2462('0x55')]({},_0x501c7b,_0xc9a355[_0x2462('0x57')]);return db[_0x2462('0x97')][_0x2462('0x2f')]({'where':_0x501c7b[_0x2462('0x51')]})[_0x2462('0x20')](function(_0xb10c23){_0x2ae4a7[_0x2462('0x2f')]=_0xb10c23;if(_0xc9a355[_0x2462('0x49')][_0x2462('0x58')]){_0x501c7b[_0x2462('0x59')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x501c7b);})['then'](function(_0x1334f0){if(_0xc9a355[_0x2462('0x49')][_0x2462('0x9c')]==='true'){for(var _0x2e5e1e=0x0;_0x2e5e1e<_0x1334f0['length'];_0x2e5e1e++){_0x1334f0[_0x2e5e1e][_0x2462('0x5d')]=juice(_0x1334f0[_0x2e5e1e]['body']);}}_0x2ae4a7['rows']=_0x1334f0;return _0x2ae4a7;});}})['then'](respondWithFilteredResult(_0x32b511,_0x501c7b))['catch'](handleError(_0x32b511,null));};exports[_0x2462('0x9d')]=function(_0x4b7057,_0x4b9372,_0x27da68){var _0x1c533a,_0x2f8194={},_0x491155;if(_0x4b7057['body']['to']){_0x491155=_0x4b7057['body']['to'][_0x2462('0x99')](',')[0x0];}return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x4b7057[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x9e')],'as':_0x2462('0x9f'),'include':[{'model':db[_0x2462('0x8a')],'as':_0x2462('0xa0'),'where':{'email':_0x491155},'limit':0x1,'order':[['updatedAt',_0x2462('0xa1')]]}]},{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40'),'raw':!![]}]})[_0x2462('0x20')](handleEntityNotFound(_0x4b9372,null))[_0x2462('0x20')](function(_0x5b6668){if(_0x5b6668){_0x1c533a=_0x5b6668;if(_0x5b6668['Smtp']){if(_['isNil'](_0x4b7057[_0x2462('0x5d')]['from'])){_0x4b7057['body'][_0x2462('0xa2')]=util[_0x2462('0x9a')](_0x2462('0xa3'),_0x5b6668[_0x2462('0x3b')],_0x5b6668[_0x2462('0x6a')]||_0x5b6668['Smtp'][_0x2462('0x70')]);}if(_0x4b7057['body'][_0x2462('0xa4')]&&_0x4b7057['body'][_0x2462('0xa4')][_0x2462('0x4d')]){for(var _0x1a1ec4=0x0;_0x1a1ec4<_0x4b7057[_0x2462('0x5d')][_0x2462('0xa4')][_0x2462('0x4d')];_0x1a1ec4+=0x1){_0x4b7057['body']['attachments'][_0x1a1ec4]={'filename':_0x4b7057[_0x2462('0x5d')][_0x2462('0xa4')][_0x1a1ec4]['name'],'path':path[_0x2462('0xa5')](config[_0x2462('0xa6')],_0x2462('0xa7'),_0x4b7057[_0x2462('0x5d')][_0x2462('0xa4')][_0x1a1ec4][_0x2462('0xa8')])};}}var _0x4ccefc={'tls':{'rejectUnauthorized':![]}};if(_[_0x2462('0x6e')](_0x5b6668[_0x2462('0x40')][_0x2462('0x77')])){if(_0x5b6668[_0x2462('0x40')][_0x2462('0x74')]){_0x4ccefc[_0x2462('0xa9')]={'user':_0x5b6668[_0x2462('0x40')][_0x2462('0x70')],'pass':_0x5b6668[_0x2462('0x40')]['pass']};}_0x4ccefc[_0x2462('0x75')]=_0x5b6668[_0x2462('0x40')][_0x2462('0x75')];_0x4ccefc[_0x2462('0x76')]=_0x5b6668[_0x2462('0x40')]['port'];_0x4ccefc[_0x2462('0xaa')]=_0x5b6668[_0x2462('0x40')][_0x2462('0xaa')];}else{_0x4ccefc[_0x2462('0x77')]=_0x5b6668[_0x2462('0x40')]['service'];_0x4ccefc[_0x2462('0xa9')]={'user':_0x5b6668[_0x2462('0x40')][_0x2462('0x70')],'pass':_0x5b6668[_0x2462('0x40')]['pass']};}return respondWithRpcPromise('SendMail','sendMail',{'account':_0x4ccefc,'message':_0x4b7057[_0x2462('0x5d')]});}else{throw new Error('List\x20not\x20found');}}})[_0x2462('0x20')](function(_0x4c2907){if(_0x4c2907){_0x2f8194=_0x4c2907;if(_0x1c533a[_0x2462('0x9f')]){if(_0x1c533a[_0x2462('0x9f')][_0x2462('0xa0')][_0x2462('0x4d')]){return _0x1c533a[_0x2462('0x9f')][_0x2462('0xa0')][0x0];}else{return db['CmContact']['create'](_[_0x2462('0xab')](_0x4b7057['body'],{'firstName':_0x4b7057['body']['to'],'email':_0x4b7057['body']['to'],'phone':_0x4b7057[_0x2462('0x5d')]['to'],'ListId':_0x1c533a[_0x2462('0x6b')]}));}}else{throw new Error('List\x20not\x20found');}}})['then'](function(_0x35689d){if(_0x35689d){var _0x52bfc7={'UserId':_0x4b7057['user']['id'],'ContactId':_0x35689d['id'],'MailAccountId':_0x1c533a['id'],'inReplyTo':_0x2f8194[_0x2462('0xac')],'to':_0x4b7057[_0x2462('0x5d')]['from'],'cc':_0x4b7057[_0x2462('0x5d')]['cc'],'subject':_0x4b7057[_0x2462('0x5d')][_0x2462('0xad')],'attach':_0x4b7057[_0x2462('0x5d')][_0x2462('0xae')],'firstMsgDirection':'out','lastMsgAt':moment()['format'](_0x2462('0x9b')),'lastMsgDirection':_0x2462('0xaf'),'Messages':[_[_0x2462('0x55')](_0x4b7057['body'],{'messageId':_0x2f8194['messageId'],'sentAt':moment()[_0x2462('0x9a')](_0x2462('0x9b')),'read':!![],'MailAccountId':_0x1c533a['id'],'UserId':_0x4b7057[_0x2462('0x70')]['id'],'ContactId':_0x35689d['id']})]};if(_0x4b7057[_0x2462('0x5d')]['Interaction']){_0x52bfc7=_[_0x2462('0x55')](_0x52bfc7,_0x4b7057[_0x2462('0x5d')][_0x2462('0xb0')]);}return db['MailInteraction'][_0x2462('0x65')](_0x52bfc7,{'include':[{'model':db['MailMessage'],'as':_0x2462('0xb1')}]});}})[_0x2462('0x20')](respondWithResult(_0x4b9372,null))[_0x2462('0x29')](handleError(_0x4b9372,null));};exports[_0x2462('0xb2')]=function(_0x5bc112,_0x578c03,_0x1d9130){return db[_0x2462('0x44')]['find']({'where':{'id':_0x5bc112[_0x2462('0x5b')]['id']},'include':[{'model':db[_0x2462('0x3f')],'as':_0x2462('0x40'),'raw':!![]}]})[_0x2462('0x20')](handleEntityNotFound(_0x578c03,null))['then'](function(_0x24c483){if(_0x24c483&&_0x24c483['Smtp']){var _0x4ebbcf={'id':_0x24c483['id'],'tls':{'rejectUnauthorized':![]}};if(_0x24c483[_0x2462('0x40')][_0x2462('0x77')]){_0x4ebbcf[_0x2462('0x77')]=_0x24c483[_0x2462('0x40')][_0x2462('0x77')];}else{_0x4ebbcf[_0x2462('0x75')]=_0x24c483[_0x2462('0x40')][_0x2462('0x75')];_0x4ebbcf[_0x2462('0x76')]=_0x24c483[_0x2462('0x40')][_0x2462('0x76')];_0x4ebbcf[_0x2462('0xaa')]=_0x24c483[_0x2462('0x40')][_0x2462('0xaa')];}if(_0x24c483[_0x2462('0x40')][_0x2462('0x74')]){_0x4ebbcf[_0x2462('0xa9')]={'user':_0x24c483[_0x2462('0x40')][_0x2462('0x70')],'pass':_0x24c483[_0x2462('0x40')][_0x2462('0x72')]};}return respondWithRpcPromise(_0x2462('0xb3'),_0x2462('0xb2'),{'account':_0x4ebbcf});}})[_0x2462('0x20')](respondWithResult(_0x578c03,null))[_0x2462('0x29')](handleError(_0x578c03,null));};exports[_0x2462('0x37')]=function(_0x1de7e7,_0x368496){return db[_0x2462('0x44')]['find']({'where':{'id':_0x1de7e7[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x368496,null))[_0x2462('0x20')](function(_0x4c2e5d){if(_0x4c2e5d&&_0x4c2e5d[_0x2462('0x77')]){throw new db[(_0x2462('0xb4'))][(_0x2462('0xb5'))](_0x2462('0xb6'));}return _0x4c2e5d;})['then'](removeEntity(_0x368496,null))[_0x2462('0x29')](handleError(_0x368496,null));};exports[_0x2462('0xb7')]=function(_0x1ab79b,_0xe6dc77,_0x431946){return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x1ab79b[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0xe6dc77,null))[_0x2462('0x20')](function(_0x22ed1c){if(_0x22ed1c){return _0x22ed1c[_0x2462('0xb7')](_0x1ab79b['body'][_0x2462('0x68')],_[_0x2462('0x88')](_0x1ab79b['body'],[_0x2462('0x68'),'id'])||{})[_0x2462('0xb8')](function(_0x4b8b19){for(var _0x4fd145=0x0;_0x4fd145<_0x1ab79b[_0x2462('0x5d')]['ids'][_0x2462('0x4d')];_0x4fd145+=0x1){socket[_0x2462('0xb9')](_0x2462('0xba'),{'UserId':Number(_0x1ab79b[_0x2462('0x5d')][_0x2462('0x68')][_0x4fd145]),'MailAccountId':Number(_0x1ab79b[_0x2462('0x5b')]['id'])});}return _0x4b8b19;});}})[_0x2462('0x20')](respondWithResult(_0xe6dc77,null))[_0x2462('0x29')](handleError(_0xe6dc77,null));};exports[_0x2462('0xbb')]=function(_0x45ccba,_0x22edaa,_0x477880){return db[_0x2462('0x44')][_0x2462('0x5c')]({'where':{'id':_0x45ccba['params']['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x22edaa,null))[_0x2462('0x20')](function(_0x4f83b9){if(_0x4f83b9){return _0x4f83b9[_0x2462('0xbb')](_0x45ccba[_0x2462('0x49')][_0x2462('0x68')])[_0x2462('0x20')](function(){if(_[_0x2462('0xbc')](_0x45ccba[_0x2462('0x49')]['ids'])){for(var _0x5824e5=0x0;_0x5824e5<_0x45ccba[_0x2462('0x49')][_0x2462('0x68')][_0x2462('0x4d')];_0x5824e5+=0x1){socket[_0x2462('0xb9')]('userMailAccount:remove',{'UserId':Number(_0x45ccba['query']['ids'][_0x5824e5]),'MailAccountId':Number(_0x45ccba[_0x2462('0x5b')]['id'])});}}else{socket[_0x2462('0xb9')](_0x2462('0xbd'),{'UserId':Number(_0x45ccba['query'][_0x2462('0x68')]),'MailAccountId':Number(_0x45ccba[_0x2462('0x5b')]['id'])});}});}})[_0x2462('0x20')](respondWithStatusCode(_0x22edaa,null))['catch'](handleError(_0x22edaa,null));};exports[_0x2462('0xbe')]=function(_0x4751f3,_0x354954,_0x2594f1){var _0x519ad5={};var _0x229666={};var _0x588d3a;var _0x5f2a17;return db[_0x2462('0x44')][_0x2462('0x61')]({'where':{'id':_0x4751f3[_0x2462('0x5b')]['id']}})[_0x2462('0x20')](handleEntityNotFound(_0x354954,null))['then'](function(_0x52f7fc){if(_0x52f7fc){_0x588d3a=_0x52f7fc;_0x229666[_0x2462('0x47')]=_['keys'](db[_0x2462('0x8b')][_0x2462('0x45')]);_0x229666[_0x2462('0x49')]=_[_0x2462('0x48')](_0x4751f3[_0x2462('0x49')]);_0x229666[_0x2462('0x52')]=_['intersection'](_0x229666[_0x2462('0x47')],_0x229666[_0x2462('0x49')]);_0x519ad5[_0x2462('0x4a')]=_[_0x2462('0x4b')](_0x229666[_0x2462('0x47')],qs['fields'](_0x4751f3[_0x2462('0x49')][_0x2462('0x4c')]));_0x519ad5[_0x2462('0x4a')]=_0x519ad5[_0x2462('0x4a')][_0x2462('0x4d')]?_0x519ad5[_0x2462('0x4a')]:_0x229666[_0x2462('0x47')];_0x519ad5[_0x2462('0x62')]=qs[_0x2462('0x50')](_0x4751f3[_0x2462('0x49')][_0x2462('0x50')]);_0x519ad5['where']=qs['filters'](_[_0x2462('0x53')](_0x4751f3[_0x2462('0x49')],_0x229666['filters']));if(_0x4751f3[_0x2462('0x49')][_0x2462('0x54')]){_0x519ad5['where']=_[_0x2462('0x55')](_0x519ad5['where'],{'$or':_['map'](_0x519ad5[_0x2462('0x4a')],function(_0x3e5e65){var _0x10bd76={};_0x10bd76[_0x3e5e65]={'$like':'%'+_0x4751f3[_0x2462('0x49')][_0x2462('0x54')]+'%'};return _0x10bd76;})});}_0x519ad5=_[_0x2462('0x55')]({},_0x519ad5,_0x4751f3[_0x2462('0x57')]);return _0x588d3a[_0x2462('0xbe')](_0x519ad5);}})['then'](function(_0x2d6e92){if(_0x2d6e92){_0x5f2a17=_0x2d6e92[_0x2462('0x4d')];if(!_0x4751f3[_0x2462('0x49')][_0x2462('0x4e')](_0x2462('0x4f'))){_0x519ad5['limit']=qs['limit'](_0x4751f3[_0x2462('0x49')][_0x2462('0x30')]);_0x519ad5[_0x2462('0x2d')]=qs[_0x2462('0x2d')](_0x4751f3[_0x2462('0x49')]['offset']);}return _0x588d3a['getAgents'](_0x519ad5);}})[_0x2462('0x20')](function(_0x15f400){if(_0x15f400){return _0x15f400?{'count':_0x5f2a17,'rows':_0x15f400}:null;}})['then'](respondWithResult(_0x354954,null))[_0x2462('0x29')](handleError(_0x354954,null));};
\ No newline at end of file
index aac16ae..32c06c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa282=['hook','exports','events','setMaxListeners','update','emit','hasOwnProperty'];(function(_0x5578b7,_0x284ae0){var _0x43eb4f=function(_0x5bdb15){while(--_0x5bdb15){_0x5578b7['push'](_0x5578b7['shift']());}};_0x43eb4f(++_0x284ae0);}(_0xa282,0x1f3));var _0x2a28=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xa282[_0x1caf6a];return _0x1bf493;};'use strict';var EventEmitter=require(_0x2a28('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x2a28('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2a28('0x2'),'afterDestroy':'remove'};function emitEvent(_0xe7cd2e){return function(_0x1aec55,_0x2e12ef,_0x194226){MailAccountEvents[_0x2a28('0x3')](_0xe7cd2e+':'+_0x1aec55['id'],_0x1aec55);MailAccountEvents[_0x2a28('0x3')](_0xe7cd2e,_0x1aec55);_0x194226(null);};}for(var e in events){if(events[_0x2a28('0x4')](e)){var event=events[e];MailAccount[_0x2a28('0x5')](e,emitEvent(event));}}module[_0x2a28('0x6')]=MailAccountEvents;
\ No newline at end of file
+var _0x0a93=['hasOwnProperty','hook','events','../../mysqldb','MailAccount','save','update','remove'];(function(_0x4dd8cb,_0x5c67f9){var _0x5cf72d=function(_0x21f171){while(--_0x21f171){_0x4dd8cb['push'](_0x4dd8cb['shift']());}};_0x5cf72d(++_0x5c67f9);}(_0x0a93,0x6a));var _0x30a9=function(_0x566415,_0x3e375d){_0x566415=_0x566415-0x0;var _0x228869=_0x0a93[_0x566415];return _0x228869;};'use strict';var EventEmitter=require(_0x30a9('0x0'));var MailAccount=require(_0x30a9('0x1'))['db'][_0x30a9('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x30a9('0x3'),'afterUpdate':_0x30a9('0x4'),'afterDestroy':_0x30a9('0x5')};function emitEvent(_0x2bdf19){return function(_0x556c5e,_0x53e03b,_0x54321d){MailAccountEvents['emit'](_0x2bdf19+':'+_0x556c5e['id'],_0x556c5e);MailAccountEvents['emit'](_0x2bdf19,_0x556c5e);_0x54321d(null);};}for(var e in events){if(events[_0x30a9('0x6')](e)){var event=events[e];MailAccount[_0x30a9('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index aed23bf..1952cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fcc=['util','api','moment','bluebird','request-promise','path','rimraf','./mailAccount.attributes','exports','MailAccount','lodash'];(function(_0x25825b,_0xf6fd5f){var _0x5e9b99=function(_0x59bd03){while(--_0x59bd03){_0x25825b['push'](_0x25825b['shift']());}};_0x5e9b99(++_0xf6fd5f);}(_0x6fcc,0xf1));var _0xc6fc=function(_0x1bd3b2,_0x14d3b7){_0x1bd3b2=_0x1bd3b2-0x0;var _0x2b95bc=_0x6fcc[_0x1bd3b2];return _0x2b95bc;};'use strict';var _=require(_0xc6fc('0x0'));var util=require(_0xc6fc('0x1'));var logger=require('../../config/logger')(_0xc6fc('0x2'));var moment=require(_0xc6fc('0x3'));var BPromise=require(_0xc6fc('0x4'));var rp=require(_0xc6fc('0x5'));var fs=require('fs');var path=require(_0xc6fc('0x6'));var rimraf=require(_0xc6fc('0x7'));var config=require('../../config/environment');var attributes=require(_0xc6fc('0x8'));module[_0xc6fc('0x9')]=function(_0x3f6ea5,_0x150872){return _0x3f6ea5['define'](_0xc6fc('0xa'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf285=['mail_accounts','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment','./mailAccount.attributes','exports','define','MailAccount'];(function(_0x5c2888,_0x7b6665){var _0x115094=function(_0x14d0f1){while(--_0x14d0f1){_0x5c2888['push'](_0x5c2888['shift']());}};_0x115094(++_0x7b6665);}(_0xf285,0x121));var _0x5f28=function(_0x43dd74,_0x2161fe){_0x43dd74=_0x43dd74-0x0;var _0xed76d3=_0xf285[_0x43dd74];return _0xed76d3;};'use strict';var _=require(_0x5f28('0x0'));var util=require('util');var logger=require(_0x5f28('0x1'))(_0x5f28('0x2'));var moment=require(_0x5f28('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x5f28('0x4'));var rimraf=require(_0x5f28('0x5'));var config=require(_0x5f28('0x6'));var attributes=require(_0x5f28('0x7'));module[_0x5f28('0x8')]=function(_0x47ccd4,_0x22a828){return _0x47ccd4[_0x5f28('0x9')](_0x5f28('0xa'),attributes,{'tableName':_0x5f28('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b1d75a2..15350c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9c3=['includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','CmList','List','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','get','account','omit','applications','list','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','create','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','attach','interaction','created','contact','attachments','originTo','originCc','bcc','ChatWebsiteId','ChatOfflineMessageId','Attachment','Attachments','UserId','User','name','unshift','agent','waitForTheAssignedAgent','Start','startRouting','util','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailAccount.socket','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetMailAccount','MailAccount','findAll','options','where','attributes','limit','include','map','model','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','from','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey'];(function(_0x397dd0,_0x58a7a8){var _0x4188b2=function(_0x173bb7){while(--_0x173bb7){_0x397dd0['push'](_0x397dd0['shift']());}};_0x4188b2(++_0x58a7a8);}(_0xe9c3,0x1d7));var _0x3e9c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe9c3[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x3e9c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e9c('0x1'))['db'];var utils=require(_0x3e9c('0x2'));var logger=require('../../config/logger')(_0x3e9c('0x3'));var config=require(_0x3e9c('0x4'));var jayson=require(_0x3e9c('0x5'));var client=jayson[_0x3e9c('0x6')][_0x3e9c('0x7')]({'port':0x232c});config[_0x3e9c('0x8')]=_[_0x3e9c('0x9')](config[_0x3e9c('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x3e9c('0xa'))(new Redis(config['redis']));require(_0x3e9c('0xb'))['register'](socket);function respondWithRpcPromise(_0x22062a,_0x8a47cf,_0x24fdf1){return new BPromise(function(_0x1ba24f,_0x5a1083){return client[_0x3e9c('0xc')](_0x22062a,_0x24fdf1)[_0x3e9c('0xd')](function(_0x15adb6){logger[_0x3e9c('0xe')](_0x3e9c('0xf'),_0x8a47cf,_0x3e9c('0x10'));logger[_0x3e9c('0x11')]('MailAccount,\x20%s,\x20%s,\x20%s',_0x8a47cf,'request\x20sent',JSON[_0x3e9c('0x12')](_0x15adb6));if(_0x15adb6[_0x3e9c('0x13')]){if(_0x15adb6['error'][_0x3e9c('0x14')]===0x1f4){logger[_0x3e9c('0x13')]('MailAccount,\x20%s,\x20%s',_0x8a47cf,_0x15adb6[_0x3e9c('0x13')][_0x3e9c('0x15')]);return _0x5a1083(_0x15adb6[_0x3e9c('0x13')]['message']);}logger['error'](_0x3e9c('0xf'),_0x8a47cf,_0x15adb6['error'][_0x3e9c('0x15')]);return _0x1ba24f(_0x15adb6[_0x3e9c('0x13')]['message']);}else{logger['info']('MailAccount,\x20%s,\x20%s',_0x8a47cf,_0x3e9c('0x10'));_0x1ba24f(_0x15adb6['result'][_0x3e9c('0x15')]);}})[_0x3e9c('0x16')](function(_0x3bcc68){logger['error'](_0x3e9c('0xf'),_0x8a47cf,_0x3bcc68);_0x5a1083(_0x3bcc68);});});}exports[_0x3e9c('0x17')]=function(_0xd22d25){var _0xfaff63=this;return new Promise(function(_0x373305,_0x59abb2){return db[_0x3e9c('0x18')][_0x3e9c('0x19')]({'raw':_0xd22d25[_0x3e9c('0x1a')]?_0xd22d25[_0x3e9c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0xd22d25[_0x3e9c('0x1a')]?_0xd22d25['options'][_0x3e9c('0x1b')]||null:null,'attributes':_0xd22d25['options']?_0xd22d25['options'][_0x3e9c('0x1c')]||null:null,'limit':_0xd22d25['options']?_0xd22d25[_0x3e9c('0x1a')][_0x3e9c('0x1d')]||null:null,'include':_0xd22d25[_0x3e9c('0x1a')]?_0xd22d25[_0x3e9c('0x1a')][_0x3e9c('0x1e')]?_[_0x3e9c('0x1f')](_0xd22d25['options']['include'],function(_0x30f11a){return{'model':db[_0x30f11a['model']],'as':_0x30f11a['as'],'attributes':_0x30f11a[_0x3e9c('0x1c')],'include':_0x30f11a[_0x3e9c('0x1e')]?_[_0x3e9c('0x1f')](_0x30f11a[_0x3e9c('0x1e')],function(_0xc9fcd3){return{'model':db[_0xc9fcd3[_0x3e9c('0x20')]],'as':_0xc9fcd3['as'],'attributes':_0xc9fcd3[_0x3e9c('0x1c')],'include':_0xc9fcd3['include']?_[_0x3e9c('0x1f')](_0xc9fcd3['include'],function(_0x292933){return{'model':db[_0x292933[_0x3e9c('0x20')]],'as':_0x292933['as'],'attributes':_0x292933[_0x3e9c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3e9c('0xd')](function(_0x103e6d){logger[_0x3e9c('0xe')](_0x3e9c('0x17'),_0xd22d25);logger[_0x3e9c('0x11')](_0x3e9c('0x17'),_0xd22d25,JSON['stringify'](_0x103e6d));_0x373305(_0x103e6d);})['catch'](function(_0xa6e601){logger[_0x3e9c('0x13')](_0x3e9c('0x17'),_0xa6e601[_0x3e9c('0x15')],_0xd22d25);_0x59abb2(_0xfaff63[_0x3e9c('0x13')](0x1f4,_0xa6e601[_0x3e9c('0x15')]));});});};exports[_0x3e9c('0x21')]=function(_0x4e4b3b){var _0x35fdfa=this;return new Promise(function(_0x1a9d63,_0x5cc66f){return db['MailAccount']['find']({'raw':_0x4e4b3b['options']?_0x4e4b3b['options']['raw']===undefined?!![]:![]:!![],'where':_0x4e4b3b['options']?_0x4e4b3b[_0x3e9c('0x1a')][_0x3e9c('0x1b')]||null:null,'attributes':_0x4e4b3b['options']?_0x4e4b3b['options'][_0x3e9c('0x1c')]||null:null,'include':_0x4e4b3b[_0x3e9c('0x1a')]?_0x4e4b3b['options'][_0x3e9c('0x1e')]?_['map'](_0x4e4b3b['options']['include'],function(_0x5b0e7d){return{'model':db[_0x5b0e7d[_0x3e9c('0x20')]],'as':_0x5b0e7d['as'],'attributes':_0x5b0e7d[_0x3e9c('0x1c')],'include':_0x5b0e7d[_0x3e9c('0x1e')]?_['map'](_0x5b0e7d[_0x3e9c('0x1e')],function(_0x10c604){return{'model':db[_0x10c604[_0x3e9c('0x20')]],'as':_0x10c604['as'],'attributes':_0x10c604['attributes'],'include':_0x10c604[_0x3e9c('0x1e')]?_[_0x3e9c('0x1f')](_0x10c604['include'],function(_0x5e8318){return{'model':db[_0x5e8318['model']],'as':_0x5e8318['as'],'attributes':_0x5e8318[_0x3e9c('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26c808){logger[_0x3e9c('0xe')](_0x3e9c('0x21'),_0x4e4b3b);logger[_0x3e9c('0x11')]('ShowMailAccount',_0x4e4b3b,JSON['stringify'](_0x26c808));_0x1a9d63(_0x26c808);})[_0x3e9c('0x16')](function(_0x12f8b7){logger[_0x3e9c('0x13')]('ShowMailAccount',_0x12f8b7['message'],_0x4e4b3b);_0x5cc66f(_0x35fdfa[_0x3e9c('0x13')](0x1f4,_0x12f8b7[_0x3e9c('0x15')]));});});};exports[_0x3e9c('0x22')]=function(_0x246f66){var _0x28ca08=this;return new Promise(function(_0x3329cc,_0x3a9826){var _0x391516={'body':_0x246f66[_0x3e9c('0x23')],'channel':_0x3e9c('0x24')};var _0x337cde=_[_0x3e9c('0x25')](_[_0x3e9c('0x26')](db[_0x3e9c('0x27')][_0x3e9c('0x28')]),[_0x3e9c('0x29'),_0x3e9c('0x2a'),_0x3e9c('0x2b'),_0x3e9c('0x2c')]);var _0x171dec=![];if(_0x246f66[_0x3e9c('0x23')]['id']){delete _0x246f66['body']['id'];}if(_['isNil'](_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x2d')])){return _0x3a9826(_0x28ca08[_0x3e9c('0x13')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x3e9c('0x2e')](_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x23')])||_0x246f66[_0x3e9c('0x23')]['body']===''){return _0x3a9826(_0x28ca08[_0x3e9c('0x13')](0x1f4,_0x3e9c('0x2f')));}if(_[_0x3e9c('0x2e')](_0x246f66['body'][_0x3e9c('0x30')])){return _0x3a9826(_0x28ca08['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x337cde));}if(!_[_0x3e9c('0x31')](_0x337cde,_0x246f66['body'][_0x3e9c('0x30')])){return _0x3a9826(_0x28ca08[_0x3e9c('0x13')](0x1f4,_0x3e9c('0x32')+_0x337cde));}var _0x56754b={};_0x56754b[_0x246f66['body']['mapKey']]=_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x2d')];return db[_0x3e9c('0x18')][_0x3e9c('0x33')]({'where':{'id':_0x246f66['account']['id']},'include':[{'model':db[_0x3e9c('0x34')],'as':_0x3e9c('0x35'),'include':[{'model':db['CmContact'],'as':_0x3e9c('0x36'),'where':_0x56754b,'limit':0x1,'order':[[_0x3e9c('0x2a'),_0x3e9c('0x37')]]}]},{'model':db[_0x3e9c('0x38')],'as':_0x3e9c('0x39')},{'model':db[_0x3e9c('0x3a')],'as':_0x3e9c('0x3b')}]})['then'](function(_0x4798d4){if(_0x4798d4&&_0x4798d4['List']){var _0x4f2533=_0x4798d4[_0x3e9c('0x3c')]({'plain':!![]});_0x391516[_0x3e9c('0x3d')]=_[_0x3e9c('0x3e')](_0x4f2533,['Applications',_0x3e9c('0x35')]);_0x391516[_0x3e9c('0x3f')]=_0x4f2533[_0x3e9c('0x39')];_0x391516[_0x3e9c('0x40')]=_0x4f2533[_0x3e9c('0x35')];_0x391516['applications']=_[_0x3e9c('0x41')](_0x391516[_0x3e9c('0x3f')],[_0x3e9c('0x42')],[_0x3e9c('0x43')]);if(_0x391516['account']&&_0x391516['account'][_0x3e9c('0x44')]){_0x391516['applications'][_0x3e9c('0x45')]({'id':0x0,'priority':_0x391516[_0x3e9c('0x3f')][_0x3e9c('0x46')]+0x1,'app':_0x3e9c('0x47'),'appdata':_0x3e9c('0x44'),'interval':_0x3e9c('0x48')});}if(_0x391516[_0x3e9c('0x3d')][_0x3e9c('0x39')]){delete _0x391516['account'][_0x3e9c('0x39')];}if(_0x391516[_0x3e9c('0x3d')][_0x3e9c('0x35')]){delete _0x391516[_0x3e9c('0x3d')][_0x3e9c('0x35')];}if(_0x4f2533[_0x3e9c('0x35')][_0x3e9c('0x36')][_0x3e9c('0x46')]){return _0x4f2533[_0x3e9c('0x35')][_0x3e9c('0x36')][0x0];}var _0x2741ba=_[_0x3e9c('0x9')](_0x246f66[_0x3e9c('0x23')],{'firstName':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x2d')],'ListId':_0x4f2533[_0x3e9c('0x2c')]});_0x2741ba[_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x30')]]=_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x2d')];return db['CmContact'][_0x3e9c('0x49')](_0x2741ba);}else{throw new Error('List\x20not\x20found');}})[_0x3e9c('0xd')](function(_0x1c403a){_0x391516['contact']=_0x1c403a;if(_0x1c403a){if(!_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x4a')]){_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x4a')]=rs[_0x3e9c('0x4b')]()+'\x20'+_0x246f66['body'][_0x3e9c('0x15')][_0x3e9c('0x2d')];}var _0x3d137b={'ContactId':_0x1c403a['id'],'MailAccountId':_0x246f66[_0x3e9c('0x3d')]['id'],'inReplyTo':_0x246f66['body'][_0x3e9c('0x15')][_0x3e9c('0x4a')],'to':_0x246f66[_0x3e9c('0x23')]['message'][_0x3e9c('0x2d')],'cc':_0x246f66['body']['message']['cc'],'subject':_0x246f66['body'][_0x3e9c('0x15')][_0x3e9c('0x4c')],'attach':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')]['attach'],'lastMsgAt':moment()[_0x3e9c('0x4d')](_0x3e9c('0x4e')),'lastMsgDirection':'in'};return db[_0x3e9c('0x4f')][_0x3e9c('0x33')]({'where':{'closed':![],'MailAccountId':_0x246f66[_0x3e9c('0x3d')]['id']},'include':[{'model':db[_0x3e9c('0x50')],'as':_0x3e9c('0x51'),'attributes':['messageId'],'where':{'messageId':_0x246f66[_0x3e9c('0x23')]['message'][_0x3e9c('0x52')]}}]})[_0x3e9c('0xd')](function(_0x2feb80){if(_0x2feb80){return[_0x2feb80,![]];}return db[_0x3e9c('0x4f')][_0x3e9c('0x49')](_0x3d137b)[_0x3e9c('0xd')](function(_0x4c7a1e){return[_0x4c7a1e,!![]];});});}else{throw new Error(_0x3e9c('0x53'));}})['spread'](function(_0x153efb,_0x405a24){if(_0x153efb){_0x171dec=_0x405a24;if(!_0x405a24){return _0x153efb['update']({'inReplyTo':_0x246f66['body'][_0x3e9c('0x15')][_0x3e9c('0x4a')],'to':_0x246f66['body'][_0x3e9c('0x15')]['from'],'cc':_0x246f66['body'][_0x3e9c('0x15')]['cc'],'subject':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x4c')],'attach':_0x153efb[_0x3e9c('0x54')]?_0x153efb['attach']:_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')]['attach'],'substatus':null,'substatusAt':moment()[_0x3e9c('0x4d')](_0x3e9c('0x4e')),'lastMsgAt':moment()[_0x3e9c('0x4d')](_0x3e9c('0x4e')),'lastMsgDirection':'in'});}else{return _0x153efb;}}})['then'](function(_0x365cba){_0x391516[_0x3e9c('0x55')]=_0x365cba['get']({'plain':!![]});_0x391516[_0x3e9c('0x55')][_0x3e9c('0x56')]=_0x171dec;return db['MailMessage']['create']({'body':_0x246f66['body'][_0x3e9c('0x23')],'MailAccountId':_0x246f66[_0x3e9c('0x3d')]['id'],'MailInteractionId':_0x365cba['id'],'direction':'in','ContactId':_0x391516[_0x3e9c('0x57')]['id'],'messageId':_0x246f66[_0x3e9c('0x23')]['message'][_0x3e9c('0x4a')],'from':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')]['from'],'to':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')]['to'],'cc':_0x246f66['body'][_0x3e9c('0x15')]['cc'],'subject':_0x246f66[_0x3e9c('0x23')]['message'][_0x3e9c('0x4c')],'attach':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x54')],'Attachments':_0x246f66['body']['message'][_0x3e9c('0x58')],'originTo':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x59')],'originCc':_0x246f66[_0x3e9c('0x23')]['message'][_0x3e9c('0x5a')],'bcc':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x5b')],'ChatWebsiteId':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x5c')]||null,'originChannel':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')]['originChannel']||'Email','ChatOfflineMessageId':_0x246f66[_0x3e9c('0x23')][_0x3e9c('0x15')][_0x3e9c('0x5d')]||null},{'include':[{'model':db[_0x3e9c('0x5e')],'as':_0x3e9c('0x5f')}]});})[_0x3e9c('0xd')](function(_0x18d898){_0x391516['message']=_0x18d898;if(_0x391516[_0x3e9c('0x55')][_0x3e9c('0x60')]){return db[_0x3e9c('0x61')][_0x3e9c('0x33')]({'attributes':['id',_0x3e9c('0x62')],'where':{'id':_0x391516['interaction'][_0x3e9c('0x60')]}})['then'](function(_0x32b40){if(_0x32b40){_0x391516['applications'][_0x3e9c('0x63')]({'id':0x0,'priority':0x0,'app':_0x3e9c('0x64'),'appdata':_0x32b40[_0x3e9c('0x62')]+','+(_0x391516[_0x3e9c('0x3d')][_0x3e9c('0x65')]||0xa),'interval':_0x3e9c('0x48')});}return respondWithRpcPromise(_0x3e9c('0x66'),_0x3e9c('0x67'),_0x391516);});}return respondWithRpcPromise(_0x3e9c('0x66'),_0x3e9c('0x67'),_0x391516);})[_0x3e9c('0xd')](function(_0x3874cc){_0x3329cc(_0x3874cc);})[_0x3e9c('0x16')](function(_0x5bed48){_0x3a9826(_0x28ca08[_0x3e9c('0x13')](0x1f4,_0x5bed48[_0x3e9c('0x15')]));});});};
\ No newline at end of file
+var _0x1cff=['redis','defaults','./mailAccount.socket','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','options','raw','where','attributes','limit','include','map','model','GetMailAccount','stringify','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','CmContact','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','find','account','CmList','List','DESC','Applications','omit','applications','list','orderBy','priority','asc','length','autoclose','Contacts','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inReplyTo','MailInteraction','create','update','get','interaction','contact','originTo','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','UserId','name','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0xe2d654,_0x16726f){var _0x16fffe=function(_0x1659d7){while(--_0x1659d7){_0xe2d654['push'](_0xe2d654['shift']());}};_0x16fffe(++_0x16726f);}(_0x1cff,0x10d));var _0xf1cf=function(_0x270426,_0x1a60e3){_0x270426=_0x270426-0x0;var _0x5edf1e=_0x1cff[_0x270426];return _0x5edf1e;};'use strict';var _=require(_0xf1cf('0x0'));var util=require('util');var moment=require(_0xf1cf('0x1'));var BPromise=require('bluebird');var rs=require(_0xf1cf('0x2'));var fs=require('fs');var Redis=require(_0xf1cf('0x3'));var db=require(_0xf1cf('0x4'))['db'];var utils=require(_0xf1cf('0x5'));var logger=require(_0xf1cf('0x6'))(_0xf1cf('0x7'));var config=require('../../config/environment');var jayson=require(_0xf1cf('0x8'));var client=jayson[_0xf1cf('0x9')]['http']({'port':0x232c});config[_0xf1cf('0xa')]=_[_0xf1cf('0xb')](config[_0xf1cf('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf1cf('0xa')]));require(_0xf1cf('0xc'))['register'](socket);function respondWithRpcPromise(_0x1f469b,_0x2b6943,_0x1b00e2){return new BPromise(function(_0x3cf75c,_0x25575f){return client[_0xf1cf('0xd')](_0x1f469b,_0x1b00e2)[_0xf1cf('0xe')](function(_0x3d655f){logger[_0xf1cf('0xf')](_0xf1cf('0x10'),_0x2b6943,_0xf1cf('0x11'));logger[_0xf1cf('0x12')](_0xf1cf('0x13'),_0x2b6943,_0xf1cf('0x11'),JSON['stringify'](_0x3d655f));if(_0x3d655f[_0xf1cf('0x14')]){if(_0x3d655f[_0xf1cf('0x14')]['code']===0x1f4){logger['error'](_0xf1cf('0x10'),_0x2b6943,_0x3d655f['error'][_0xf1cf('0x15')]);return _0x25575f(_0x3d655f[_0xf1cf('0x14')][_0xf1cf('0x15')]);}logger[_0xf1cf('0x14')]('MailAccount,\x20%s,\x20%s',_0x2b6943,_0x3d655f[_0xf1cf('0x14')][_0xf1cf('0x15')]);return _0x3cf75c(_0x3d655f[_0xf1cf('0x14')][_0xf1cf('0x15')]);}else{logger[_0xf1cf('0xf')](_0xf1cf('0x10'),_0x2b6943,_0xf1cf('0x11'));_0x3cf75c(_0x3d655f[_0xf1cf('0x16')][_0xf1cf('0x15')]);}})[_0xf1cf('0x17')](function(_0x36837d){logger[_0xf1cf('0x14')](_0xf1cf('0x10'),_0x2b6943,_0x36837d);_0x25575f(_0x36837d);});});}exports['GetMailAccount']=function(_0x1b4e89){var _0x20ea7d=this;return new Promise(function(_0x1695c5,_0x4cce51){return db['MailAccount']['findAll']({'raw':_0x1b4e89[_0xf1cf('0x18')]?_0x1b4e89[_0xf1cf('0x18')][_0xf1cf('0x19')]===undefined?!![]:![]:!![],'where':_0x1b4e89['options']?_0x1b4e89[_0xf1cf('0x18')][_0xf1cf('0x1a')]||null:null,'attributes':_0x1b4e89['options']?_0x1b4e89['options'][_0xf1cf('0x1b')]||null:null,'limit':_0x1b4e89[_0xf1cf('0x18')]?_0x1b4e89['options'][_0xf1cf('0x1c')]||null:null,'include':_0x1b4e89[_0xf1cf('0x18')]?_0x1b4e89[_0xf1cf('0x18')]['include']?_['map'](_0x1b4e89[_0xf1cf('0x18')][_0xf1cf('0x1d')],function(_0x54b4dc){return{'model':db[_0x54b4dc['model']],'as':_0x54b4dc['as'],'attributes':_0x54b4dc['attributes'],'include':_0x54b4dc[_0xf1cf('0x1d')]?_[_0xf1cf('0x1e')](_0x54b4dc[_0xf1cf('0x1d')],function(_0x2385a){return{'model':db[_0x2385a['model']],'as':_0x2385a['as'],'attributes':_0x2385a[_0xf1cf('0x1b')],'include':_0x2385a[_0xf1cf('0x1d')]?_[_0xf1cf('0x1e')](_0x2385a[_0xf1cf('0x1d')],function(_0x44d1db){return{'model':db[_0x44d1db[_0xf1cf('0x1f')]],'as':_0x44d1db['as'],'attributes':_0x44d1db['attributes']};}):[]};}):[]};}):[]:[]})[_0xf1cf('0xe')](function(_0xfad6ca){logger[_0xf1cf('0xf')](_0xf1cf('0x20'),_0x1b4e89);logger[_0xf1cf('0x12')](_0xf1cf('0x20'),_0x1b4e89,JSON[_0xf1cf('0x21')](_0xfad6ca));_0x1695c5(_0xfad6ca);})[_0xf1cf('0x17')](function(_0x50d9f1){logger['error'](_0xf1cf('0x20'),_0x50d9f1[_0xf1cf('0x15')],_0x1b4e89);_0x4cce51(_0x20ea7d[_0xf1cf('0x14')](0x1f4,_0x50d9f1[_0xf1cf('0x15')]));});});};exports[_0xf1cf('0x22')]=function(_0x2bbb5f){var _0x25a7b9=this;return new Promise(function(_0x4fa871,_0x28003a){return db['MailAccount']['find']({'raw':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x19')]===undefined?!![]:![]:!![],'where':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x1a')]||null:null,'attributes':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x1b')]||null:null,'include':_0x2bbb5f[_0xf1cf('0x18')]?_0x2bbb5f['options'][_0xf1cf('0x1d')]?_['map'](_0x2bbb5f[_0xf1cf('0x18')][_0xf1cf('0x1d')],function(_0x18082c){return{'model':db[_0x18082c[_0xf1cf('0x1f')]],'as':_0x18082c['as'],'attributes':_0x18082c['attributes'],'include':_0x18082c[_0xf1cf('0x1d')]?_[_0xf1cf('0x1e')](_0x18082c[_0xf1cf('0x1d')],function(_0x3447bc){return{'model':db[_0x3447bc[_0xf1cf('0x1f')]],'as':_0x3447bc['as'],'attributes':_0x3447bc[_0xf1cf('0x1b')],'include':_0x3447bc['include']?_[_0xf1cf('0x1e')](_0x3447bc[_0xf1cf('0x1d')],function(_0x69bb9a){return{'model':db[_0x69bb9a[_0xf1cf('0x1f')]],'as':_0x69bb9a['as'],'attributes':_0x69bb9a[_0xf1cf('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf1cf('0xe')](function(_0xe938a7){logger[_0xf1cf('0xf')](_0xf1cf('0x22'),_0x2bbb5f);logger[_0xf1cf('0x12')](_0xf1cf('0x22'),_0x2bbb5f,JSON['stringify'](_0xe938a7));_0x4fa871(_0xe938a7);})[_0xf1cf('0x17')](function(_0x3c83d4){logger[_0xf1cf('0x14')](_0xf1cf('0x22'),_0x3c83d4[_0xf1cf('0x15')],_0x2bbb5f);_0x28003a(_0x25a7b9[_0xf1cf('0x14')](0x1f4,_0x3c83d4[_0xf1cf('0x15')]));});});};exports[_0xf1cf('0x23')]=function(_0x13438b){var _0x4ca26c=this;return new Promise(function(_0x2ee464,_0x81385e){var _0xecb635={'body':_0x13438b[_0xf1cf('0x24')],'channel':_0xf1cf('0x25')};var _0x49ccc6=_[_0xf1cf('0x26')](_[_0xf1cf('0x27')](db[_0xf1cf('0x28')]['rawAttributes']),['createdAt',_0xf1cf('0x29'),_0xf1cf('0x2a'),_0xf1cf('0x2b')]);var _0x40feec=![];if(_0x13438b[_0xf1cf('0x24')]['id']){delete _0x13438b['body']['id'];}if(_['isNil'](_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x2c')])){return _0x81385e(_0x4ca26c['error'](0x1f4,_0xf1cf('0x2d')));}if(_[_0xf1cf('0x2e')](_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x24')])||_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x24')]===''){return _0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,_0xf1cf('0x2f')));}if(_[_0xf1cf('0x2e')](_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x30')])){return _0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49ccc6));}if(!_['includes'](_0x49ccc6,_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x30')])){return _0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49ccc6));}var _0x40c6ca={};_0x40c6ca[_0x13438b['body'][_0xf1cf('0x30')]]=_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x2c')];return db['MailAccount'][_0xf1cf('0x31')]({'where':{'id':_0x13438b[_0xf1cf('0x32')]['id']},'include':[{'model':db[_0xf1cf('0x33')],'as':_0xf1cf('0x34'),'include':[{'model':db[_0xf1cf('0x28')],'as':'Contacts','where':_0x40c6ca,'limit':0x1,'order':[[_0xf1cf('0x29'),_0xf1cf('0x35')]]}]},{'model':db['MailApplication'],'as':_0xf1cf('0x36')},{'model':db['MailServerOut'],'as':'Smtp'}]})[_0xf1cf('0xe')](function(_0x307347){if(_0x307347&&_0x307347[_0xf1cf('0x34')]){var _0x267ecc=_0x307347['get']({'plain':!![]});_0xecb635[_0xf1cf('0x32')]=_[_0xf1cf('0x37')](_0x267ecc,[_0xf1cf('0x36'),_0xf1cf('0x34')]);_0xecb635[_0xf1cf('0x38')]=_0x267ecc['Applications'];_0xecb635[_0xf1cf('0x39')]=_0x267ecc[_0xf1cf('0x34')];_0xecb635[_0xf1cf('0x38')]=_[_0xf1cf('0x3a')](_0xecb635[_0xf1cf('0x38')],[_0xf1cf('0x3b')],[_0xf1cf('0x3c')]);if(_0xecb635[_0xf1cf('0x32')]&&_0xecb635[_0xf1cf('0x32')]['autoclose']){_0xecb635['applications']['push']({'id':0x0,'priority':_0xecb635[_0xf1cf('0x38')][_0xf1cf('0x3d')]+0x1,'app':'close','appdata':_0xf1cf('0x3e'),'interval':'*,*,*,*'});}if(_0xecb635[_0xf1cf('0x32')][_0xf1cf('0x36')]){delete _0xecb635['account'][_0xf1cf('0x36')];}if(_0xecb635[_0xf1cf('0x32')][_0xf1cf('0x34')]){delete _0xecb635['account'][_0xf1cf('0x34')];}if(_0x267ecc['List'][_0xf1cf('0x3f')]['length']){return _0x267ecc['List'][_0xf1cf('0x3f')][0x0];}var _0x5643cd=_[_0xf1cf('0xb')](_0x13438b[_0xf1cf('0x24')],{'firstName':_0x13438b['body'][_0xf1cf('0x2c')],'ListId':_0x267ecc[_0xf1cf('0x2b')]});_0x5643cd[_0x13438b['body'][_0xf1cf('0x30')]]=_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x2c')];return db[_0xf1cf('0x28')]['create'](_0x5643cd);}else{throw new Error(_0xf1cf('0x40'));}})[_0xf1cf('0xe')](function(_0x341fa8){_0xecb635['contact']=_0x341fa8;if(_0x341fa8){if(!_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x41')]){_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x41')]=rs[_0xf1cf('0x42')]()+'\x20'+_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['from'];}var _0x1ac860={'ContactId':_0x341fa8['id'],'MailAccountId':_0x13438b[_0xf1cf('0x32')]['id'],'inReplyTo':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x41')],'to':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x2c')],'cc':_0x13438b[_0xf1cf('0x24')]['message']['cc'],'subject':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x43')],'attach':_0x13438b[_0xf1cf('0x24')]['message'][_0xf1cf('0x44')],'lastMsgAt':moment()[_0xf1cf('0x45')](_0xf1cf('0x46')),'lastMsgDirection':'in'};return db['MailInteraction'][_0xf1cf('0x31')]({'where':{'closed':![],'MailAccountId':_0x13438b['account']['id']},'include':[{'model':db[_0xf1cf('0x47')],'as':'Messages','attributes':[_0xf1cf('0x41')],'where':{'messageId':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x48')]}}]})[_0xf1cf('0xe')](function(_0x33c808){if(_0x33c808){return[_0x33c808,![]];}return db[_0xf1cf('0x49')][_0xf1cf('0x4a')](_0x1ac860)[_0xf1cf('0xe')](function(_0x3709a5){return[_0x3709a5,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})['spread'](function(_0x49490e,_0x3e9aa0){if(_0x49490e){_0x40feec=_0x3e9aa0;if(!_0x3e9aa0){return _0x49490e[_0xf1cf('0x4b')]({'inReplyTo':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['messageId'],'to':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['from'],'cc':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['cc'],'subject':_0x13438b['body'][_0xf1cf('0x15')]['subject'],'attach':_0x49490e[_0xf1cf('0x44')]?_0x49490e[_0xf1cf('0x44')]:_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x44')],'substatus':null,'substatusAt':moment()[_0xf1cf('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0xf1cf('0x45')](_0xf1cf('0x46')),'lastMsgDirection':'in'});}else{return _0x49490e;}}})[_0xf1cf('0xe')](function(_0x1fd03a){_0xecb635['interaction']=_0x1fd03a[_0xf1cf('0x4c')]({'plain':!![]});_0xecb635[_0xf1cf('0x4d')]['created']=_0x40feec;return db['MailMessage'][_0xf1cf('0x4a')]({'body':_0x13438b['body'][_0xf1cf('0x24')],'MailAccountId':_0x13438b[_0xf1cf('0x32')]['id'],'MailInteractionId':_0x1fd03a['id'],'direction':'in','ContactId':_0xecb635[_0xf1cf('0x4e')]['id'],'messageId':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')][_0xf1cf('0x41')],'from':_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x2c')],'to':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['to'],'cc':_0x13438b['body']['message']['cc'],'subject':_0x13438b['body']['message']['subject'],'attach':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['attach'],'Attachments':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['attachments'],'originTo':_0x13438b['body']['message'][_0xf1cf('0x4f')],'originCc':_0x13438b[_0xf1cf('0x24')][_0xf1cf('0x15')]['originCc'],'bcc':_0x13438b['body']['message'][_0xf1cf('0x50')],'ChatWebsiteId':_0x13438b[_0xf1cf('0x24')]['message'][_0xf1cf('0x51')]||null,'originChannel':_0x13438b['body'][_0xf1cf('0x15')][_0xf1cf('0x52')]||_0xf1cf('0x53'),'ChatOfflineMessageId':_0x13438b['body']['message'][_0xf1cf('0x54')]||null},{'include':[{'model':db[_0xf1cf('0x55')],'as':'Attachments'}]});})['then'](function(_0xdf6140){_0xecb635[_0xf1cf('0x15')]=_0xdf6140;if(_0xecb635[_0xf1cf('0x4d')][_0xf1cf('0x56')]){return db['User']['find']({'attributes':['id',_0xf1cf('0x57')],'where':{'id':_0xecb635['interaction'][_0xf1cf('0x56')]}})['then'](function(_0x4917e8){if(_0x4917e8){_0xecb635[_0xf1cf('0x38')][_0xf1cf('0x58')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4917e8[_0xf1cf('0x57')]+','+(_0xecb635['account'][_0xf1cf('0x59')]||0xa),'interval':_0xf1cf('0x5a')});}return respondWithRpcPromise(_0xf1cf('0x5b'),_0xf1cf('0x5c'),_0xecb635);});}return respondWithRpcPromise('Start',_0xf1cf('0x5c'),_0xecb635);})[_0xf1cf('0xe')](function(_0x9045ec){_0x2ee464(_0x9045ec);})['catch'](function(_0x5cae03){_0x81385e(_0x4ca26c[_0xf1cf('0x14')](0x1f4,_0x5cae03['message']));});});};
\ No newline at end of file
index 55e4850..edc04e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf058=['save','remove','emit','removeListener','register','length','mailAccount:','./mailAccount.events'];(function(_0x1d0c0f,_0xaeaf3b){var _0x55a52a=function(_0x11bd39){while(--_0x11bd39){_0x1d0c0f['push'](_0x1d0c0f['shift']());}};_0x55a52a(++_0xaeaf3b);}(_0xf058,0x1ef));var _0x8f05=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf058[_0x3dd15e];return _0x231fd0;};'use strict';var MailAccountEvents=require(_0x8f05('0x0'));var events=[_0x8f05('0x1'),_0x8f05('0x2'),'update'];function createListener(_0xe20d66,_0x1ddea7){return function(_0x344610){_0x1ddea7[_0x8f05('0x3')](_0xe20d66,_0x344610);};}function removeListener(_0x2c3399,_0x353e7a){return function(){MailAccountEvents[_0x8f05('0x4')](_0x2c3399,_0x353e7a);};}exports[_0x8f05('0x5')]=function(_0x12fd26){for(var _0x447514=0x0,_0x5d0e84=events[_0x8f05('0x6')];_0x447514<_0x5d0e84;_0x447514++){var _0x17796a=events[_0x447514];var _0x58b3c1=createListener(_0x8f05('0x7')+_0x17796a,_0x12fd26);MailAccountEvents['on'](_0x17796a,_0x58b3c1);}};
\ No newline at end of file
+var _0x0790=['length','mailAccount:','emit','register'];(function(_0x160cd5,_0x19c58e){var _0x366763=function(_0x3b8e31){while(--_0x3b8e31){_0x160cd5['push'](_0x160cd5['shift']());}};_0x366763(++_0x19c58e);}(_0x0790,0xf2));var _0x0079=function(_0x36d203,_0x3653f3){_0x36d203=_0x36d203-0x0;var _0x2f9e62=_0x0790[_0x36d203];return _0x2f9e62;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save','remove','update'];function createListener(_0x417cac,_0x8cc555){return function(_0xb37be0){_0x8cc555[_0x0079('0x0')](_0x417cac,_0xb37be0);};}function removeListener(_0x27d0ca,_0x15b085){return function(){MailAccountEvents['removeListener'](_0x27d0ca,_0x15b085);};}exports[_0x0079('0x1')]=function(_0x473d73){for(var _0x20e8f6=0x0,_0x504031=events[_0x0079('0x2')];_0x20e8f6<_0x504031;_0x20e8f6++){var _0x235f01=events[_0x20e8f6];var _0x246e71=createListener(_0x0079('0x3')+_0x235f01,_0x473d73);MailAccountEvents['on'](_0x235f01,_0x246e71);}};
\ No newline at end of file
index 1d79d65..4f8934b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88aa=['exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','destroy'];(function(_0x40eec9,_0x817a67){var _0xfee890=function(_0x186640){while(--_0x186640){_0x40eec9['push'](_0x40eec9['shift']());}};_0xfee890(++_0x817a67);}(_0x88aa,0x83));var _0xa88a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x88aa[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0xa88a('0x0'));var path=require(_0xa88a('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa88a('0x2')]();var fs_extra=require(_0xa88a('0x3'));var auth=require(_0xa88a('0x4'));var interaction=require(_0xa88a('0x5'));var config=require(_0xa88a('0x6'));var controller=require(_0xa88a('0x7'));router[_0xa88a('0x8')](_0xa88a('0x9'),auth[_0xa88a('0xa')](),controller['show']);router['put']('/:id',auth[_0xa88a('0xa')](),controller['update']);router['delete'](_0xa88a('0x9'),auth['isAuthenticated'](),controller[_0xa88a('0xb')]);module[_0xa88a('0xc')]=router;
\ No newline at end of file
+var _0x5108=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','show','/:id','update','isAuthenticated','destroy'];(function(_0x1eae7c,_0x42d9a3){var _0x1377d7=function(_0x190fd1){while(--_0x190fd1){_0x1eae7c['push'](_0x1eae7c['shift']());}};_0x1377d7(++_0x42d9a3);}(_0x5108,0xe1));var _0x8510=function(_0x1e2446,_0xf4b68){_0x1e2446=_0x1e2446-0x0;var _0x1a6369=_0x5108[_0x1e2446];return _0x1a6369;};'use strict';var multer=require(_0x8510('0x0'));var util=require(_0x8510('0x1'));var path=require(_0x8510('0x2'));var timeout=require(_0x8510('0x3'));var express=require('express');var router=express[_0x8510('0x4')]();var fs_extra=require(_0x8510('0x5'));var auth=require(_0x8510('0x6'));var interaction=require(_0x8510('0x7'));var config=require(_0x8510('0x8'));var controller=require('./mailApplication.controller');router[_0x8510('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x8510('0xa')]);router['put'](_0x8510('0xb'),auth['isAuthenticated'](),controller[_0x8510('0xc')]);router['delete'](_0x8510('0xb'),auth[_0x8510('0xd')](),controller[_0x8510('0xe')]);module[_0x8510('0xf')]=router;
\ No newline at end of file
index 843ab74..f621922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc83d=['TEXT','*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x3c600d,_0x4b5c85){var _0xd195e3=function(_0x2a2f5f){while(--_0x2a2f5f){_0x3c600d['push'](_0x3c600d['shift']());}};_0xd195e3(++_0x4b5c85);}(_0xc83d,0x16f));var _0xdc83=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc83d[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0xdc83('0x0'));module['exports']={'priority':{'type':Sequelize[_0xdc83('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xdc83('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xdc83('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xdc83('0x2')],'defaultValue':_0xdc83('0x4')}};
\ No newline at end of file
+var _0xd0b4=['INTEGER','STRING','noop','TEXT','sequelize','exports'];(function(_0x114c1c,_0x5bfd6d){var _0x50a0a6=function(_0x4f97f0){while(--_0x4f97f0){_0x114c1c['push'](_0x114c1c['shift']());}};_0x50a0a6(++_0x5bfd6d);}(_0xd0b4,0xfa));var _0x4d0b=function(_0x52a1eb,_0x89a577){_0x52a1eb=_0x52a1eb-0x0;var _0x581239=_0xd0b4[_0x52a1eb];return _0x581239;};'use strict';var Sequelize=require(_0x4d0b('0x0'));module[_0x4d0b('0x1')]={'priority':{'type':Sequelize[_0x4d0b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4d0b('0x3')],'allowNull':![],'defaultValue':_0x4d0b('0x4')},'appdata':{'type':Sequelize[_0x4d0b('0x5')]()},'description':{'type':Sequelize[_0x4d0b('0x3')]},'interval':{'type':Sequelize[_0x4d0b('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 2fccb23..17e150c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['limit','count','Content-Range','json','apply','reject','save','then','destroy','error','name','send','params','keys','MailApplication','rawAttributes','query','filters','intersection','model','fields','attributes','includeAll','include','options','find','catch','body','eml-format','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined'];(function(_0x272993,_0x4ea8d4){var _0x2270ed=function(_0x1bc05d){while(--_0x1bc05d){_0x272993['push'](_0x272993['shift']());}};_0x2270ed(++_0x4ea8d4);}(_0xf4eb,0xec));var _0xbf4e=function(_0x1b2299,_0x1361a4){_0x1b2299=_0x1b2299-0x0;var _0x354118=_0xf4eb[_0x1b2299];return _0x354118;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fd01,_0x5a3035){_0x5a3035=_0x5a3035||0xcc;return function(_0x56d185){if(_0x56d185){return _0x17fd01[_0xbf4e('0x13')](_0x5a3035);}return _0x17fd01[_0xbf4e('0x14')](_0x5a3035)[_0xbf4e('0x15')]();};}function respondWithResult(_0x302841,_0x3b74bd){_0x3b74bd=_0x3b74bd||0xc8;return function(_0x61bd54){if(_0x61bd54){return _0x302841['status'](_0x3b74bd)['json'](_0x61bd54);}};}function respondWithFilteredResult(_0x180432,_0x1735ae){return function(_0x28fc6b){if(_0x28fc6b){var _0x542909=typeof _0x1735ae[_0xbf4e('0x16')]===_0xbf4e('0x17')&&typeof _0x1735ae[_0xbf4e('0x18')]===_0xbf4e('0x17');var _0x5a631e=_0x28fc6b[_0xbf4e('0x19')];var _0x577c27=_0x542909?0x0:_0x1735ae['offset'];var _0x566ec3=_0x542909?_0x28fc6b['count']:_0x1735ae[_0xbf4e('0x16')]+_0x1735ae[_0xbf4e('0x18')];var _0x1fc800;if(_0x566ec3>=_0x5a631e){_0x566ec3=_0x5a631e;_0x1fc800=0xc8;}else{_0x1fc800=0xce;}_0x180432['status'](_0x1fc800);return _0x180432['set'](_0xbf4e('0x1a'),_0x577c27+'-'+_0x566ec3+'/'+_0x5a631e)[_0xbf4e('0x1b')](_0x28fc6b);}return null;};}function patchUpdates(_0x3be138){return function(_0x3a875b){try{jsonpatch[_0xbf4e('0x1c')](_0x3a875b,_0x3be138,!![]);}catch(_0x1e2a68){return BPromise[_0xbf4e('0x1d')](_0x1e2a68);}return _0x3a875b[_0xbf4e('0x1e')]();};}function saveUpdates(_0xd09e12,_0x376832){return function(_0x30539b){if(_0x30539b){return _0x30539b['update'](_0xd09e12)[_0xbf4e('0x1f')](function(_0x2e7673){return _0x2e7673;});}return null;};}function removeEntity(_0x51648c,_0x31e3f5){return function(_0x30994d){if(_0x30994d){return _0x30994d[_0xbf4e('0x20')]()[_0xbf4e('0x1f')](function(){_0x51648c[_0xbf4e('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x90635e,_0x36688a){return function(_0x3d6863){if(!_0x3d6863){_0x90635e['sendStatus'](0x194);}return _0x3d6863;};}function handleError(_0x2fb490,_0x5e08b1){_0x5e08b1=_0x5e08b1||0x1f4;return function(_0x5bcf71){logger[_0xbf4e('0x21')](_0x5bcf71['stack']);if(_0x5bcf71[_0xbf4e('0x22')]){delete _0x5bcf71[_0xbf4e('0x22')];}_0x2fb490[_0xbf4e('0x14')](_0x5e08b1)[_0xbf4e('0x23')](_0x5bcf71);};}exports['show']=function(_0x2d4686,_0x8e0ab5){var _0x43879d={'raw':!![],'where':{'id':_0x2d4686[_0xbf4e('0x24')]['id']}},_0x4cd4a1={};_0x4cd4a1['model']=_[_0xbf4e('0x25')](db[_0xbf4e('0x26')][_0xbf4e('0x27')]);_0x4cd4a1['query']=_[_0xbf4e('0x25')](_0x2d4686[_0xbf4e('0x28')]);_0x4cd4a1[_0xbf4e('0x29')]=_[_0xbf4e('0x2a')](_0x4cd4a1[_0xbf4e('0x2b')],_0x4cd4a1[_0xbf4e('0x28')]);_0x43879d['attributes']=_[_0xbf4e('0x2a')](_0x4cd4a1[_0xbf4e('0x2b')],qs['fields'](_0x2d4686[_0xbf4e('0x28')][_0xbf4e('0x2c')]));_0x43879d['attributes']=_0x43879d[_0xbf4e('0x2d')]['length']?_0x43879d[_0xbf4e('0x2d')]:_0x4cd4a1['model'];if(_0x2d4686[_0xbf4e('0x28')][_0xbf4e('0x2e')]){_0x43879d[_0xbf4e('0x2f')]=[{'all':!![]}];}_0x43879d=_['merge']({},_0x43879d,_0x2d4686[_0xbf4e('0x30')]);return db[_0xbf4e('0x26')][_0xbf4e('0x31')](_0x43879d)[_0xbf4e('0x1f')](handleEntityNotFound(_0x8e0ab5,null))[_0xbf4e('0x1f')](respondWithResult(_0x8e0ab5,null))[_0xbf4e('0x32')](handleError(_0x8e0ab5,null));};exports['update']=function(_0x99b320,_0x3dbb2b){if(_0x99b320[_0xbf4e('0x33')]['id']){delete _0x99b320[_0xbf4e('0x33')]['id'];}return db[_0xbf4e('0x26')]['find']({'where':{'id':_0x99b320['params']['id']}})['then'](handleEntityNotFound(_0x3dbb2b,null))['then'](saveUpdates(_0x99b320[_0xbf4e('0x33')],null))[_0xbf4e('0x1f')](respondWithResult(_0x3dbb2b,null))[_0xbf4e('0x32')](handleError(_0x3dbb2b,null));};exports[_0xbf4e('0x20')]=function(_0x22ddde,_0x257b74){return db[_0xbf4e('0x26')][_0xbf4e('0x31')]({'where':{'id':_0x22ddde[_0xbf4e('0x24')]['id']}})['then'](handleEntityNotFound(_0x257b74,null))['then'](removeEntity(_0x257b74,null))[_0xbf4e('0x32')](handleError(_0x257b74,null));};
\ No newline at end of file
+var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0x551906,_0x569941){var _0x58bfb6=function(_0x1eb6de){while(--_0x1eb6de){_0x551906['push'](_0x551906['shift']());}};_0x58bfb6(++_0x569941);}(_0xe706,0xa3));var _0x6e70=function(_0x48291a,_0x5a29dc){_0x48291a=_0x48291a-0x0;var _0xf76871=_0xe706[_0x48291a];return _0xf76871;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
index f797e9b..f9682ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d7=['lodash','util','../../config/logger','api','moment','request-promise','path','define','MailApplication','utf8mb4_unicode_ci'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x17d7,0x118));var _0x717d=function(_0x3da901,_0x498bec){_0x3da901=_0x3da901-0x0;var _0xda8ce8=_0x17d7[_0x3da901];return _0xda8ce8;};'use strict';var _=require(_0x717d('0x0'));var util=require(_0x717d('0x1'));var logger=require(_0x717d('0x2'))(_0x717d('0x3'));var moment=require(_0x717d('0x4'));var BPromise=require('bluebird');var rp=require(_0x717d('0x5'));var fs=require('fs');var path=require(_0x717d('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module['exports']=function(_0x48d21b,_0x232d88){return _0x48d21b[_0x717d('0x7')](_0x717d('0x8'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x717d('0x9')});};
\ No newline at end of file
+var _0xfc66=['path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2bc3f4,_0x470b26){var _0x14ac53=function(_0x5121bd){while(--_0x5121bd){_0x2bc3f4['push'](_0x2bc3f4['shift']());}};_0x14ac53(++_0x470b26);}(_0xfc66,0x1c4));var _0x6fc6=function(_0xe05fd3,_0x4bf7a9){_0xe05fd3=_0xe05fd3-0x0;var _0x4a5805=_0xfc66[_0xe05fd3];return _0x4a5805;};'use strict';var _=require(_0x6fc6('0x0'));var util=require(_0x6fc6('0x1'));var logger=require(_0x6fc6('0x2'))(_0x6fc6('0x3'));var moment=require(_0x6fc6('0x4'));var BPromise=require(_0x6fc6('0x5'));var rp=require(_0x6fc6('0x6'));var fs=require('fs');var path=require(_0x6fc6('0x7'));var rimraf=require(_0x6fc6('0x8'));var config=require(_0x6fc6('0x9'));var attributes=require(_0x6fc6('0xa'));module[_0x6fc6('0xb')]=function(_0x19a3ac,_0x54d1fc){return _0x19a3ac[_0x6fc6('0xc')](_0x6fc6('0xd'),attributes,{'tableName':_0x6fc6('0xe'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6fc6('0xf'),'collate':_0x6fc6('0x10')});};
\ No newline at end of file
index 483b436..dd09e3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a0=['then','info','MailApplication,\x20%s,\x20%s','request\x20sent','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','MailApplication','update','body','options','raw','attributes','limit','UpdateMailApplication','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x503350,_0x3fbbb8){var _0x49e615=function(_0x58b6f0){while(--_0x58b6f0){_0x503350['push'](_0x503350['shift']());}};_0x49e615(++_0x3fbbb8);}(_0xb9a0,0x186));var _0x0b9a=function(_0x212476,_0x25fd97){_0x212476=_0x212476-0x0;var _0x21b5fb=_0xb9a0[_0x212476];return _0x21b5fb;};'use strict';var _=require(_0x0b9a('0x0'));var util=require(_0x0b9a('0x1'));var moment=require(_0x0b9a('0x2'));var BPromise=require('bluebird');var rs=require(_0x0b9a('0x3'));var fs=require('fs');var Redis=require(_0x0b9a('0x4'));var db=require(_0x0b9a('0x5'))['db'];var utils=require(_0x0b9a('0x6'));var logger=require(_0x0b9a('0x7'))(_0x0b9a('0x8'));var config=require(_0x0b9a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0b9a('0xa')][_0x0b9a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x131a2c,_0x457e80,_0xe430f6){return new BPromise(function(_0x33ce5a,_0x1cec71){return client[_0x0b9a('0xc')](_0x131a2c,_0xe430f6)[_0x0b9a('0xd')](function(_0x2f78b8){logger[_0x0b9a('0xe')](_0x0b9a('0xf'),_0x457e80,_0x0b9a('0x10'));logger['debug'](_0x0b9a('0x11'),_0x457e80,'request\x20sent',JSON[_0x0b9a('0x12')](_0x2f78b8));if(_0x2f78b8['error']){if(_0x2f78b8[_0x0b9a('0x13')]['code']===0x1f4){logger['error'](_0x0b9a('0xf'),_0x457e80,_0x2f78b8[_0x0b9a('0x13')][_0x0b9a('0x14')]);return _0x1cec71(_0x2f78b8[_0x0b9a('0x13')]['message']);}logger[_0x0b9a('0x13')](_0x0b9a('0xf'),_0x457e80,_0x2f78b8[_0x0b9a('0x13')][_0x0b9a('0x14')]);return _0x33ce5a(_0x2f78b8[_0x0b9a('0x13')][_0x0b9a('0x14')]);}else{logger[_0x0b9a('0xe')](_0x0b9a('0xf'),_0x457e80,_0x0b9a('0x10'));_0x33ce5a(_0x2f78b8[_0x0b9a('0x15')][_0x0b9a('0x14')]);}})['catch'](function(_0x102d2e){logger[_0x0b9a('0x13')](_0x0b9a('0xf'),_0x457e80,_0x102d2e);_0x1cec71(_0x102d2e);});});}exports['UpdateMailApplication']=function(_0x3fb823){var _0x5f0fd9=this;return new Promise(function(_0x47b9e1,_0x1df5d9){return db[_0x0b9a('0x16')][_0x0b9a('0x17')](_0x3fb823[_0x0b9a('0x18')],{'raw':_0x3fb823[_0x0b9a('0x19')]?_0x3fb823[_0x0b9a('0x19')][_0x0b9a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3fb823[_0x0b9a('0x19')]?_0x3fb823['options']['where']||null:null,'attributes':_0x3fb823[_0x0b9a('0x19')]?_0x3fb823['options'][_0x0b9a('0x1b')]||null:null,'limit':_0x3fb823[_0x0b9a('0x19')]?_0x3fb823[_0x0b9a('0x19')][_0x0b9a('0x1c')]||null:null})[_0x0b9a('0xd')](function(_0xdb6a0b){logger[_0x0b9a('0xe')](_0x0b9a('0x1d'),_0x3fb823);logger['debug'](_0x0b9a('0x1d'),_0x3fb823,JSON[_0x0b9a('0x12')](_0xdb6a0b));_0x47b9e1(_0xdb6a0b);})[_0x0b9a('0x1e')](function(_0x1f29ac){logger[_0x0b9a('0x13')](_0x0b9a('0x1d'),_0x1f29ac[_0x0b9a('0x14')],_0x3fb823);_0x1df5d9(_0x5f0fd9[_0x0b9a('0x13')](0x1f4,_0x1f29ac['message']));});});};
\ No newline at end of file
+var _0xb602=['result','catch','UpdateMailApplication','MailApplication','update','options','raw','limit','then','lodash','util','moment','bluebird','../../config/utils','../../config/environment','client','http','request','MailApplication,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent'];(function(_0x33a47b,_0x25022a){var _0x3164d0=function(_0x1f070f){while(--_0x1f070f){_0x33a47b['push'](_0x33a47b['shift']());}};_0x3164d0(++_0x25022a);}(_0xb602,0x175));var _0x2b60=function(_0x22d6f8,_0x4bbab4){_0x22d6f8=_0x22d6f8-0x0;var _0xdff824=_0xb602[_0x22d6f8];return _0xdff824;};'use strict';var _=require(_0x2b60('0x0'));var util=require(_0x2b60('0x1'));var moment=require(_0x2b60('0x2'));var BPromise=require(_0x2b60('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2b60('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x2b60('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x2b60('0x6')][_0x2b60('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x272982,_0x149e5d,_0x43420e){return new BPromise(function(_0x2b54bf,_0x25de9f){return client[_0x2b60('0x8')](_0x272982,_0x43420e)['then'](function(_0x1dff91){logger['info'](_0x2b60('0x9'),_0x149e5d,'request\x20sent');logger[_0x2b60('0xa')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x149e5d,'request\x20sent',JSON[_0x2b60('0xb')](_0x1dff91));if(_0x1dff91['error']){if(_0x1dff91[_0x2b60('0xc')][_0x2b60('0xd')]===0x1f4){logger[_0x2b60('0xc')](_0x2b60('0x9'),_0x149e5d,_0x1dff91[_0x2b60('0xc')]['message']);return _0x25de9f(_0x1dff91[_0x2b60('0xc')]['message']);}logger[_0x2b60('0xc')](_0x2b60('0x9'),_0x149e5d,_0x1dff91['error'][_0x2b60('0xe')]);return _0x2b54bf(_0x1dff91['error'][_0x2b60('0xe')]);}else{logger[_0x2b60('0xf')](_0x2b60('0x9'),_0x149e5d,_0x2b60('0x10'));_0x2b54bf(_0x1dff91[_0x2b60('0x11')][_0x2b60('0xe')]);}})[_0x2b60('0x12')](function(_0x208575){logger[_0x2b60('0xc')](_0x2b60('0x9'),_0x149e5d,_0x208575);_0x25de9f(_0x208575);});});}exports[_0x2b60('0x13')]=function(_0xf2daa0){var _0x2e4779=this;return new Promise(function(_0xa9dde4,_0x4ec5fd){return db[_0x2b60('0x14')][_0x2b60('0x15')](_0xf2daa0['body'],{'raw':_0xf2daa0['options']?_0xf2daa0[_0x2b60('0x16')][_0x2b60('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf2daa0[_0x2b60('0x16')]?_0xf2daa0[_0x2b60('0x16')]['where']||null:null,'attributes':_0xf2daa0[_0x2b60('0x16')]?_0xf2daa0[_0x2b60('0x16')]['attributes']||null:null,'limit':_0xf2daa0[_0x2b60('0x16')]?_0xf2daa0['options'][_0x2b60('0x18')]||null:null})[_0x2b60('0x19')](function(_0xca02cf){logger[_0x2b60('0xf')]('UpdateMailApplication',_0xf2daa0);logger['debug'](_0x2b60('0x13'),_0xf2daa0,JSON[_0x2b60('0xb')](_0xca02cf));_0xa9dde4(_0xca02cf);})['catch'](function(_0x4f4caa){logger[_0x2b60('0xc')](_0x2b60('0x13'),_0x4f4caa[_0x2b60('0xe')],_0xf2daa0);_0x4ec5fd(_0x2e4779[_0x2b60('0xc')](0x1f4,_0x4f4caa['message']));});});};
\ No newline at end of file
index cdc2df9..790826b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f2b=['./mailInteraction.controller','isAuthenticated','get','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','/:id/tags','tracked','mail','mailinteraction:addtags','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','removeTags','exports','Router','../../components/auth/service'];(function(_0x570ae7,_0x365171){var _0x30b8f0=function(_0x2741a2){while(--_0x2741a2){_0x570ae7['push'](_0x570ae7['shift']());}};_0x30b8f0(++_0x365171);}(_0x9f2b,0x1c0));var _0xb9f2=function(_0x5b720c,_0x5b8cf0){_0x5b720c=_0x5b720c-0x0;var _0x3e1120=_0x9f2b[_0x5b720c];return _0x3e1120;};'use strict';var express=require('express');var router=express[_0xb9f2('0x0')]();var auth=require(_0xb9f2('0x1'));var interaction=require('../../components/interaction/service');var controller=require(_0xb9f2('0x2'));router['get']('/',auth[_0xb9f2('0x3')](),controller['index']);router[_0xb9f2('0x4')](_0xb9f2('0x5'),auth['isAuthenticated'](),controller[_0xb9f2('0x6')]);router[_0xb9f2('0x4')](_0xb9f2('0x7'),auth[_0xb9f2('0x3')](),controller['show']);router['get'](_0xb9f2('0x8'),auth['isAuthenticated'](),controller[_0xb9f2('0x9')]);router[_0xb9f2('0x4')](_0xb9f2('0xa'),auth[_0xb9f2('0x3')](),controller[_0xb9f2('0xb')]);router[_0xb9f2('0xc')]('/',auth[_0xb9f2('0x3')](),controller[_0xb9f2('0xd')]);router[_0xb9f2('0xc')](_0xb9f2('0x8'),auth[_0xb9f2('0x3')](),controller['addMessage']);router[_0xb9f2('0xc')](_0xb9f2('0xe'),auth[_0xb9f2('0x3')](),interaction[_0xb9f2('0xf')](_0xb9f2('0x10'),_0xb9f2('0x11')),controller['addTags']);router['put'](_0xb9f2('0x7'),auth['isAuthenticated'](),interaction[_0xb9f2('0xf')](_0xb9f2('0x10'),_0xb9f2('0x12')),controller[_0xb9f2('0x13')]);router[_0xb9f2('0x14')](_0xb9f2('0x7'),auth[_0xb9f2('0x3')](),interaction[_0xb9f2('0xf')](_0xb9f2('0x10'),_0xb9f2('0x15')),controller[_0xb9f2('0x16')]);router[_0xb9f2('0x14')](_0xb9f2('0xe'),auth[_0xb9f2('0x3')](),controller[_0xb9f2('0x17')]);module[_0xb9f2('0x18')]=router;
\ No newline at end of file
+var _0x62c2=['./mailInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','post','addMessage','/:id/tags','mailinteraction:addtags','addTags','put','tracked','mail','mailinteraction:update','update','mailinteraction:destroy','exports','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x62c2,0xbf));var _0x262c=function(_0x22f716,_0x1f5ed8){_0x22f716=_0x22f716-0x0;var _0x11d495=_0x62c2[_0x22f716];return _0x11d495;};'use strict';var express=require('express');var router=express[_0x262c('0x0')]();var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var controller=require(_0x262c('0x1'));router[_0x262c('0x2')]('/',auth[_0x262c('0x3')](),controller[_0x262c('0x4')]);router['get'](_0x262c('0x5'),auth[_0x262c('0x3')](),controller[_0x262c('0x6')]);router[_0x262c('0x2')](_0x262c('0x7'),auth['isAuthenticated'](),controller[_0x262c('0x8')]);router[_0x262c('0x2')](_0x262c('0x9'),auth[_0x262c('0x3')](),controller[_0x262c('0xa')]);router[_0x262c('0x2')](_0x262c('0xb'),auth[_0x262c('0x3')](),controller['download']);router[_0x262c('0xc')]('/',auth[_0x262c('0x3')](),controller['create']);router[_0x262c('0xc')](_0x262c('0x9'),auth[_0x262c('0x3')](),controller[_0x262c('0xd')]);router[_0x262c('0xc')](_0x262c('0xe'),auth['isAuthenticated'](),interaction['tracked']('mail',_0x262c('0xf')),controller[_0x262c('0x10')]);router[_0x262c('0x11')](_0x262c('0x7'),auth[_0x262c('0x3')](),interaction[_0x262c('0x12')](_0x262c('0x13'),_0x262c('0x14')),controller[_0x262c('0x15')]);router['delete'](_0x262c('0x7'),auth[_0x262c('0x3')](),interaction['tracked']('mail',_0x262c('0x16')),controller['destroy']);router['delete'](_0x262c('0xe'),auth[_0x262c('0x3')](),controller['removeTags']);module[_0x262c('0x17')]=router;
\ No newline at end of file
index 0f64c55..d35201e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6729=['TEXT','long','ENUM','out','sequelize','iconv','exports','BOOLEAN','DATE','STRING'];(function(_0x451b32,_0x1eace6){var _0x4ac489=function(_0x458d72){while(--_0x458d72){_0x451b32['push'](_0x451b32['shift']());}};_0x4ac489(++_0x1eace6);}(_0x6729,0x130));var _0x9672=function(_0x3f77ad,_0x5d9bbf){_0x3f77ad=_0x3f77ad-0x0;var _0x561b66=_0x6729[_0x3f77ad];return _0x561b66;};'use strict';var Sequelize=require(_0x9672('0x0'));var iconv=require(_0x9672('0x1'));module[_0x9672('0x2')]={'closed':{'type':Sequelize[_0x9672('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9672('0x4')]},'disposition':{'type':Sequelize[_0x9672('0x5')]},'secondDisposition':{'type':Sequelize[_0x9672('0x5')]},'thirdDisposition':{'type':Sequelize[_0x9672('0x5')]},'note':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x9672('0x6')](_0x9672('0x7'))},'subject':{'type':Sequelize[_0x9672('0x6')]()},'attach':{'type':Sequelize[_0x9672('0x3')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x9672('0x5')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x9672('0x8')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x9672('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x9672('0x8')]('in',_0x9672('0x9')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9672('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8ca7=['out','iconv','BOOLEAN','STRING','TEXT','long','DATE','ENUM'];(function(_0x369590,_0x1e5b2f){var _0x4c4888=function(_0x5db1cb){while(--_0x5db1cb){_0x369590['push'](_0x369590['shift']());}};_0x4c4888(++_0x1e5b2f);}(_0x8ca7,0x149));var _0x78ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8ca7[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x78ca('0x0'));module['exports']={'closed':{'type':Sequelize[_0x78ca('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x78ca('0x2')]},'secondDisposition':{'type':Sequelize[_0x78ca('0x2')]},'thirdDisposition':{'type':Sequelize[_0x78ca('0x2')]},'note':{'type':Sequelize[_0x78ca('0x2')]},'inReplyTo':{'type':Sequelize['STRING'](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x78ca('0x3')](_0x78ca('0x4'))},'subject':{'type':Sequelize[_0x78ca('0x3')]()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x78ca('0x2')](0x3c)},'substatusAt':{'type':Sequelize[_0x78ca('0x5')]},'firstMsgDirection':{'type':Sequelize[_0x78ca('0x6')]('in',_0x78ca('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x78ca('0x5')]},'lastMsgDirection':{'type':Sequelize[_0x78ca('0x6')]('in',_0x78ca('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x78ca('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 7a7051c..f90ed02 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(_0x31edbe,_0x34d231){var _0x37fcee=function(_0x17ecba){while(--_0x17ecba){_0x31edbe['push'](_0x31edbe['shift']());}};_0x37fcee(++_0x34d231);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xa9e0[_0x2b4411];return _0x8e41ef;};'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(_0x1a2b51,_0xa3a7ef){var _0x58e9da=function(_0xdd21fa){while(--_0xdd21fa){_0x1a2b51['push'](_0x1a2b51['shift']());}};_0x58e9da(++_0xa3a7ef);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'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 3fcef3d..ab27eb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f6e=['setDataValue','emit','catch','hasOwnProperty','hook','events','MailInteraction','../../mysqldb','update','remove','getUsers','then','Users','map','findAll'];(function(_0x11946c,_0x12152c){var _0x383935=function(_0x61fce2){while(--_0x61fce2){_0x11946c['push'](_0x11946c['shift']());}};_0x383935(++_0x12152c);}(_0x4f6e,0x1e5));var _0xe4f6=function(_0x18563b,_0x5ce02a){_0x18563b=_0x18563b-0x0;var _0x46534e=_0x4f6e[_0x18563b];return _0x46534e;};'use strict';var EventEmitter=require(_0xe4f6('0x0'));var MailInteraction=require('../../mysqldb')['db'][_0xe4f6('0x1')];var MailMessage=require(_0xe4f6('0x2'))['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe4f6('0x3'),'afterDestroy':_0xe4f6('0x4')};function emitEvent(_0xe132d6){return function(_0x1e6065,_0x5b3fb7,_0x2ae047){_0x1e6065[_0xe4f6('0x5')]({'attributes':['id'],'raw':!![]})[_0xe4f6('0x6')](function(_0x28486e){_0x1e6065['setDataValue'](_0xe4f6('0x7'),_0x28486e[_0xe4f6('0x8')](function(_0x21a6da){return{'id':_0x21a6da['id']};}));return MailMessage[_0xe4f6('0x9')]({'where':{'MailInteractionId':_0x1e6065['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe4f6('0x6')](function(_0xde81e2){_0x1e6065[_0xe4f6('0xa')]('unreadMessages',_0xde81e2['length']);MailInteractionEvents[_0xe4f6('0xb')](_0xe132d6+':'+_0x1e6065['id'],_0x1e6065);MailInteractionEvents[_0xe4f6('0xb')](_0xe132d6,_0x1e6065);_0x2ae047(null);})[_0xe4f6('0xc')](_0x2ae047(null));};}for(var e in events){if(events[_0xe4f6('0xd')](e)){var event=events[e];MailInteraction[_0xe4f6('0xe')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
+var _0x3b0a=['MailInteraction','MailMessage','setMaxListeners','save','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','../../mysqldb'];(function(_0x2c32b3,_0x5704fd){var _0x2bab98=function(_0x36b0c3){while(--_0x36b0c3){_0x2c32b3['push'](_0x2c32b3['shift']());}};_0x2bab98(++_0x5704fd);}(_0x3b0a,0xa9));var _0xa3b0=function(_0x5db380,_0x5be964){_0x5db380=_0x5db380-0x0;var _0x483264=_0x3b0a[_0x5db380];return _0x483264;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0xa3b0('0x0'))['db'][_0xa3b0('0x1')];var MailMessage=require(_0xa3b0('0x0'))['db'][_0xa3b0('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa3b0('0x3')](0x0);var events={'afterCreate':_0xa3b0('0x4'),'afterUpdate':'update','afterDestroy':_0xa3b0('0x5')};function emitEvent(_0xdd1ca9){return function(_0x2ad724,_0x505f19,_0x29863f){_0x2ad724[_0xa3b0('0x6')]({'attributes':['id'],'raw':!![]})[_0xa3b0('0x7')](function(_0x157e6b){_0x2ad724[_0xa3b0('0x8')](_0xa3b0('0x9'),_0x157e6b[_0xa3b0('0xa')](function(_0x463402){return{'id':_0x463402['id']};}));return MailMessage[_0xa3b0('0xb')]({'where':{'MailInteractionId':_0x2ad724['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa3b0('0x7')](function(_0x48c875){_0x2ad724['setDataValue'](_0xa3b0('0xc'),_0x48c875[_0xa3b0('0xd')]);MailInteractionEvents[_0xa3b0('0xe')](_0xdd1ca9+':'+_0x2ad724['id'],_0x2ad724);MailInteractionEvents[_0xa3b0('0xe')](_0xdd1ca9,_0x2ad724);_0x29863f(null);})[_0xa3b0('0xf')](_0x29863f(null));};}for(var e in events){if(events[_0xa3b0('0x10')](e)){var event=events[e];MailInteraction['hook'](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 940258e..cc07591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dbd=['exports','define','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','substatus','MailMessage','update','catch','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailInteraction.attributes'];(function(_0x5a5fc5,_0x458433){var _0x116945=function(_0x3e6441){while(--_0x3e6441){_0x5a5fc5['push'](_0x5a5fc5['shift']());}};_0x116945(++_0x458433);}(_0x6dbd,0x1ed));var _0xd6db=function(_0x3ec15b,_0x24a8f9){_0x3ec15b=_0x3ec15b-0x0;var _0x28c370=_0x6dbd[_0x3ec15b];return _0x28c370;};'use strict';var _=require(_0xd6db('0x0'));var util=require(_0xd6db('0x1'));var logger=require(_0xd6db('0x2'))(_0xd6db('0x3'));var moment=require(_0xd6db('0x4'));var BPromise=require(_0xd6db('0x5'));var rp=require(_0xd6db('0x6'));var fs=require('fs');var path=require(_0xd6db('0x7'));var rimraf=require(_0xd6db('0x8'));var config=require(_0xd6db('0x9'));var attributes=require(_0xd6db('0xa'));module[_0xd6db('0xb')]=function(_0x212ba5,_0x15ec2f){return _0x212ba5[_0xd6db('0xc')](_0xd6db('0xd'),attributes,{'tableName':_0xd6db('0xe'),'paranoid':![],'indexes':[{'name':_0xd6db('0xf'),'fields':['subject','to'],'type':_0xd6db('0x10')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x52d826,_0x2cef7c,_0x28e934){if(_0x52d826['substatus']){_0x52d826[_0xd6db('0x11')]=moment()[_0xd6db('0x12')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x52d826[_0xd6db('0x13')]){_0x52d826[_0xd6db('0x14')]=moment()[_0xd6db('0x12')](_0xd6db('0x15'));}_0x28e934(null,_0x2cef7c);},'beforeUpdate':function(_0x2eaf4b,_0x1cbee5,_0x542079){if(_0x2eaf4b[_0xd6db('0x16')]('substatus')){_0x2eaf4b[_0xd6db('0x11')]=_0x2eaf4b[_0xd6db('0x17')]?moment()[_0xd6db('0x12')](_0xd6db('0x15')):null;}if(_0x2eaf4b[_0xd6db('0x16')]('closed')){_0x2eaf4b[_0xd6db('0x14')]=moment()[_0xd6db('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x2eaf4b[_0xd6db('0x17')]=null;_0x2eaf4b[_0xd6db('0x11')]=null;}_0x542079(null,_0x2eaf4b);},'afterUpdate':function(_0x5a23fe,_0x235bae,_0x5f5c8b){var _0x3ee79d=_0x212ba5['models'];var _0x11132d=_0x5a23fe['get']({'plain':!![]});if(_0x11132d[_0xd6db('0x13')]){return _0x3ee79d[_0xd6db('0x18')][_0xd6db('0x19')]({'read':!![]},{'where':{'MailInteractionId':_0x11132d['id']}})['then'](function(){_0x5f5c8b();})[_0xd6db('0x1a')](function(_0x11d927){_0x5f5c8b(_0x11d927);});}else{_0x5f5c8b();}}},'charset':'utf8mb4','collate':_0xd6db('0x1b')});};
\ No newline at end of file
+var _0xdd3e=['utf8mb4_unicode_ci','util','api','moment','bluebird','request-promise','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','models','get','MailMessage','update','then','utf8mb4'];(function(_0x216799,_0x44b817){var _0x3661c3=function(_0x28f85e){while(--_0x28f85e){_0x216799['push'](_0x216799['shift']());}};_0x3661c3(++_0x44b817);}(_0xdd3e,0x65));var _0xedd3=function(_0x6c434d,_0x5ae386){_0x6c434d=_0x6c434d-0x0;var _0x5a1f2f=_0xdd3e[_0x6c434d];return _0x5a1f2f;};'use strict';var _=require('lodash');var util=require(_0xedd3('0x0'));var logger=require('../../config/logger')(_0xedd3('0x1'));var moment=require(_0xedd3('0x2'));var BPromise=require(_0xedd3('0x3'));var rp=require(_0xedd3('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xedd3('0x5'));var attributes=require(_0xedd3('0x6'));module[_0xedd3('0x7')]=function(_0x1cfee6,_0x3c29c3){return _0x1cfee6[_0xedd3('0x8')]('MailInteraction',attributes,{'tableName':_0xedd3('0x9'),'paranoid':![],'indexes':[{'name':_0xedd3('0xa'),'fields':['subject','to'],'type':_0xedd3('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x246201,_0x3d5f75,_0x3d1d02){if(_0x246201[_0xedd3('0xc')]){_0x246201[_0xedd3('0xd')]=moment()['format'](_0xedd3('0xe'));}if(_0x246201[_0xedd3('0xf')]){_0x246201[_0xedd3('0x10')]=moment()[_0xedd3('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}_0x3d1d02(null,_0x3d5f75);},'beforeUpdate':function(_0x32c4c6,_0xca41b3,_0x99b76e){if(_0x32c4c6['changed'](_0xedd3('0xc'))){_0x32c4c6[_0xedd3('0xd')]=_0x32c4c6[_0xedd3('0xc')]?moment()[_0xedd3('0x11')]('YYYY-MM-DD\x20HH:mm:ss'):null;}if(_0x32c4c6['changed'](_0xedd3('0xf'))){_0x32c4c6['closedAt']=moment()[_0xedd3('0x11')](_0xedd3('0xe'));_0x32c4c6['substatus']=null;_0x32c4c6[_0xedd3('0xd')]=null;}_0x99b76e(null,_0x32c4c6);},'afterUpdate':function(_0x4112b0,_0x2c4093,_0x580d05){var _0xa36f2=_0x1cfee6[_0xedd3('0x12')];var _0x163e10=_0x4112b0[_0xedd3('0x13')]({'plain':!![]});if(_0x163e10[_0xedd3('0xf')]){return _0xa36f2[_0xedd3('0x14')][_0xedd3('0x15')]({'read':!![]},{'where':{'MailInteractionId':_0x163e10['id']}})[_0xedd3('0x16')](function(){_0x580d05();})['catch'](function(_0x588fa2){_0x580d05(_0x588fa2);});}else{_0x580d05();}}},'charset':_0xedd3('0x17'),'collate':_0xedd3('0x18')});};
\ No newline at end of file
index 051d56d..13c1404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd3=['redis','defaults','socket.io-emitter','register','request','info','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','MailInteraction,\x20%s,\x20%s','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','attributes','then','AddTagsToMailInteraction','find','where','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','http'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcdd3,0x115));var _0x3cdd=function(_0x3cbe36,_0x188ba1){_0x3cbe36=_0x3cbe36-0x0;var _0x4a36f5=_0xcdd3[_0x3cbe36];return _0x4a36f5;};'use strict';var _=require(_0x3cdd('0x0'));var util=require('util');var moment=require(_0x3cdd('0x1'));var BPromise=require(_0x3cdd('0x2'));var rs=require(_0x3cdd('0x3'));var fs=require('fs');var Redis=require(_0x3cdd('0x4'));var db=require(_0x3cdd('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3cdd('0x6'));var config=require(_0x3cdd('0x7'));var jayson=require(_0x3cdd('0x8'));var client=jayson['client'][_0x3cdd('0x9')]({'port':0x232a});config[_0x3cdd('0xa')]=_[_0x3cdd('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3cdd('0xc'))(new Redis(config['redis']));require('./mailInteraction.socket')[_0x3cdd('0xd')](socket);function respondWithRpcPromise(_0x34f8ed,_0xc500dd,_0x36d1d6){return new BPromise(function(_0x30347a,_0x4d968c){return client[_0x3cdd('0xe')](_0x34f8ed,_0x36d1d6)['then'](function(_0x3a8578){logger[_0x3cdd('0xf')]('MailInteraction,\x20%s,\x20%s',_0xc500dd,_0x3cdd('0x10'));logger[_0x3cdd('0x11')](_0x3cdd('0x12'),_0xc500dd,_0x3cdd('0x10'),JSON[_0x3cdd('0x13')](_0x3a8578));if(_0x3a8578[_0x3cdd('0x14')]){if(_0x3a8578['error'][_0x3cdd('0x15')]===0x1f4){logger['error'](_0x3cdd('0x16'),_0xc500dd,_0x3a8578['error'][_0x3cdd('0x17')]);return _0x4d968c(_0x3a8578[_0x3cdd('0x14')]['message']);}logger[_0x3cdd('0x14')]('MailInteraction,\x20%s,\x20%s',_0xc500dd,_0x3a8578[_0x3cdd('0x14')]['message']);return _0x30347a(_0x3a8578[_0x3cdd('0x14')][_0x3cdd('0x17')]);}else{logger[_0x3cdd('0xf')](_0x3cdd('0x16'),_0xc500dd,'request\x20sent');_0x30347a(_0x3a8578[_0x3cdd('0x18')][_0x3cdd('0x17')]);}})[_0x3cdd('0x19')](function(_0x13c015){logger[_0x3cdd('0x14')](_0x3cdd('0x16'),_0xc500dd,_0x13c015);_0x4d968c(_0x13c015);});});}exports[_0x3cdd('0x1a')]=function(_0x206aeb){var _0x3f4645=this;return new Promise(function(_0x5e1abe,_0x2c3244){return db[_0x3cdd('0x1b')][_0x3cdd('0x1c')](_0x206aeb[_0x3cdd('0x1d')],{'raw':_0x206aeb[_0x3cdd('0x1e')]?_0x206aeb['options'][_0x3cdd('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x206aeb[_0x3cdd('0x1e')]?_0x206aeb[_0x3cdd('0x1e')]['where']||null:null,'attributes':_0x206aeb[_0x3cdd('0x1e')]?_0x206aeb[_0x3cdd('0x1e')][_0x3cdd('0x20')]||null:null,'limit':_0x206aeb['options']?_0x206aeb[_0x3cdd('0x1e')]['limit']||null:null})[_0x3cdd('0x21')](function(_0x254a3b){logger[_0x3cdd('0xf')](_0x3cdd('0x1a'),_0x206aeb);logger[_0x3cdd('0x11')](_0x3cdd('0x1a'),_0x206aeb,JSON[_0x3cdd('0x13')](_0x254a3b));_0x5e1abe(_0x254a3b);})[_0x3cdd('0x19')](function(_0x57f0e2){logger['error']('UpdateMailInteraction',_0x57f0e2[_0x3cdd('0x17')],_0x206aeb);_0x2c3244(_0x3f4645[_0x3cdd('0x14')](0x1f4,_0x57f0e2[_0x3cdd('0x17')]));});});};exports[_0x3cdd('0x22')]=function(_0x32e66e){return new Promise(function(_0x8c52a2,_0x2e9daf){return db[_0x3cdd('0x1b')][_0x3cdd('0x23')]({'where':_0x32e66e[_0x3cdd('0x1e')]?_0x32e66e[_0x3cdd('0x1e')][_0x3cdd('0x24')]||null:null})['then'](function(_0xc09124){if(_0xc09124){return _0xc09124['addTags'](_0x32e66e['body'][_0x3cdd('0x25')],_[_0x3cdd('0x26')](_0x32e66e[_0x3cdd('0x1d')],[_0x3cdd('0x25'),'id'])||{});}})[_0x3cdd('0x27')](function(_0x422eff){logger[_0x3cdd('0xf')](_0x3cdd('0x28'),_0x32e66e);logger['debug']('AddTags',_0x32e66e,JSON[_0x3cdd('0x13')](_0x422eff));_0x8c52a2(_0x422eff);})[_0x3cdd('0x19')](function(_0x44c852){logger[_0x3cdd('0x14')]('AddTags',_0x44c852[_0x3cdd('0x17')],_0x32e66e);_0x2e9daf(_this[_0x3cdd('0x14')](0x1f4,_0x44c852[_0x3cdd('0x17')]));});});};
\ No newline at end of file
+var _0xb768=['raw','where','attributes','limit','AddTagsToMailInteraction','find','addTags','body','ids','omit','spread','AddTags','stringify','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','UpdateMailInteraction','MailInteraction','update','options'];(function(_0x561a67,_0x431e77){var _0x2fc22f=function(_0x53a231){while(--_0x53a231){_0x561a67['push'](_0x561a67['shift']());}};_0x2fc22f(++_0x431e77);}(_0xb768,0x1ba));var _0x8b76=function(_0x315476,_0x4e1d2f){_0x315476=_0x315476-0x0;var _0x552681=_0xb768[_0x315476];return _0x552681;};'use strict';var _=require(_0x8b76('0x0'));var util=require('util');var moment=require(_0x8b76('0x1'));var BPromise=require(_0x8b76('0x2'));var rs=require(_0x8b76('0x3'));var fs=require('fs');var Redis=require(_0x8b76('0x4'));var db=require(_0x8b76('0x5'))['db'];var utils=require(_0x8b76('0x6'));var logger=require(_0x8b76('0x7'))('rpc');var config=require(_0x8b76('0x8'));var jayson=require(_0x8b76('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x8b76('0xa')]=_[_0x8b76('0xb')](config[_0x8b76('0xa')],{'host':_0x8b76('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8b76('0xa')]));require('./mailInteraction.socket')['register'](socket);function respondWithRpcPromise(_0x53b740,_0x53d318,_0x594f40){return new BPromise(function(_0x482941,_0x34cc5b){return client['request'](_0x53b740,_0x594f40)[_0x8b76('0xd')](function(_0x2076e5){logger[_0x8b76('0xe')](_0x8b76('0xf'),_0x53d318,_0x8b76('0x10'));logger[_0x8b76('0x11')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x53d318,'request\x20sent',JSON['stringify'](_0x2076e5));if(_0x2076e5['error']){if(_0x2076e5[_0x8b76('0x12')]['code']===0x1f4){logger[_0x8b76('0x12')](_0x8b76('0xf'),_0x53d318,_0x2076e5['error'][_0x8b76('0x13')]);return _0x34cc5b(_0x2076e5[_0x8b76('0x12')]['message']);}logger[_0x8b76('0x12')]('MailInteraction,\x20%s,\x20%s',_0x53d318,_0x2076e5[_0x8b76('0x12')]['message']);return _0x482941(_0x2076e5[_0x8b76('0x12')][_0x8b76('0x13')]);}else{logger[_0x8b76('0xe')](_0x8b76('0xf'),_0x53d318,'request\x20sent');_0x482941(_0x2076e5[_0x8b76('0x14')][_0x8b76('0x13')]);}})[_0x8b76('0x15')](function(_0x18cf50){logger[_0x8b76('0x12')]('MailInteraction,\x20%s,\x20%s',_0x53d318,_0x18cf50);_0x34cc5b(_0x18cf50);});});}exports[_0x8b76('0x16')]=function(_0x941a11){var _0x4338b9=this;return new Promise(function(_0x148d44,_0x541047){return db[_0x8b76('0x17')][_0x8b76('0x18')](_0x941a11['body'],{'raw':_0x941a11[_0x8b76('0x19')]?_0x941a11['options'][_0x8b76('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x941a11[_0x8b76('0x19')]?_0x941a11[_0x8b76('0x19')][_0x8b76('0x1b')]||null:null,'attributes':_0x941a11[_0x8b76('0x19')]?_0x941a11['options'][_0x8b76('0x1c')]||null:null,'limit':_0x941a11[_0x8b76('0x19')]?_0x941a11['options'][_0x8b76('0x1d')]||null:null})[_0x8b76('0xd')](function(_0x2c2c3a){logger[_0x8b76('0xe')](_0x8b76('0x16'),_0x941a11);logger['debug'](_0x8b76('0x16'),_0x941a11,JSON['stringify'](_0x2c2c3a));_0x148d44(_0x2c2c3a);})[_0x8b76('0x15')](function(_0x32db79){logger[_0x8b76('0x12')](_0x8b76('0x16'),_0x32db79[_0x8b76('0x13')],_0x941a11);_0x541047(_0x4338b9['error'](0x1f4,_0x32db79[_0x8b76('0x13')]));});});};exports[_0x8b76('0x1e')]=function(_0xebafb0){return new Promise(function(_0x4ac2e0,_0x2a508e){return db['MailInteraction'][_0x8b76('0x1f')]({'where':_0xebafb0[_0x8b76('0x19')]?_0xebafb0[_0x8b76('0x19')][_0x8b76('0x1b')]||null:null})[_0x8b76('0xd')](function(_0xe30c0b){if(_0xe30c0b){return _0xe30c0b[_0x8b76('0x20')](_0xebafb0[_0x8b76('0x21')][_0x8b76('0x22')],_[_0x8b76('0x23')](_0xebafb0[_0x8b76('0x21')],['ids','id'])||{});}})[_0x8b76('0x24')](function(_0x91fe9e){logger[_0x8b76('0xe')](_0x8b76('0x25'),_0xebafb0);logger[_0x8b76('0x11')](_0x8b76('0x25'),_0xebafb0,JSON[_0x8b76('0x26')](_0x91fe9e));_0x4ac2e0(_0x91fe9e);})[_0x8b76('0x15')](function(_0x4d1ed0){logger[_0x8b76('0x12')](_0x8b76('0x25'),_0x4d1ed0['message'],_0xebafb0);_0x2a508e(_this['error'](0x1f4,_0x4d1ed0[_0x8b76('0x13')]));});});};
\ No newline at end of file
index d05ff9e..c88b87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0dd7=['update','emit','removeListener','register','mailInteraction:','./mailInteraction.events','save','remove'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0dd7,0xcd));var _0x70dd=function(_0x409353,_0xe9f04d){_0x409353=_0x409353-0x0;var _0x4f4b59=_0x0dd7[_0x409353];return _0x4f4b59;};'use strict';var MailInteractionEvents=require(_0x70dd('0x0'));var events=[_0x70dd('0x1'),_0x70dd('0x2'),_0x70dd('0x3')];function createListener(_0x518243,_0x2b8950){return function(_0x14f4fd){_0x2b8950[_0x70dd('0x4')](_0x518243,_0x14f4fd);};}function removeListener(_0x474045,_0x39004d){return function(){MailInteractionEvents[_0x70dd('0x5')](_0x474045,_0x39004d);};}exports[_0x70dd('0x6')]=function(_0x26daab){for(var _0x20d354=0x0,_0x31185f=events['length'];_0x20d354<_0x31185f;_0x20d354++){var _0x444c04=events[_0x20d354];var _0x3df014=createListener(_0x70dd('0x7')+_0x444c04,_0x26daab);MailInteractionEvents['on'](_0x444c04,_0x3df014);}};
\ No newline at end of file
+var _0x1354=['register','mailInteraction:','./mailInteraction.events','remove','update','removeListener'];(function(_0x22a8c4,_0x51c09a){var _0x104c6d=function(_0x4d4d3d){while(--_0x4d4d3d){_0x22a8c4['push'](_0x22a8c4['shift']());}};_0x104c6d(++_0x51c09a);}(_0x1354,0x7a));var _0x4135=function(_0x484032,_0x11ce70){_0x484032=_0x484032-0x0;var _0xec7c10=_0x1354[_0x484032];return _0xec7c10;};'use strict';var MailInteractionEvents=require(_0x4135('0x0'));var events=['save',_0x4135('0x1'),_0x4135('0x2')];function createListener(_0x623120,_0x2d8451){return function(_0x5d9ed2){_0x2d8451['emit'](_0x623120,_0x5d9ed2);};}function removeListener(_0x313642,_0x9b1a81){return function(){MailInteractionEvents[_0x4135('0x3')](_0x313642,_0x9b1a81);};}exports[_0x4135('0x4')]=function(_0x63e752){for(var _0x4c6980=0x0,_0x3e2862=events['length'];_0x4c6980<_0x3e2862;_0x4c6980++){var _0x45f57f=events[_0x4c6980];var _0xda7619=createListener(_0x4135('0x5')+_0x45f57f,_0x63e752);MailInteractionEvents['on'](_0x45f57f,_0xda7619);}};
\ No newline at end of file
index c3d6a15..8fc3c79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057f=['get','isAuthenticated','index','/describe','describe','show','/:id/download','download','post','tracked','mailmessage:create','create','put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller'];(function(_0x38e207,_0x4ed30c){var _0x21c980=function(_0x4e0c93){while(--_0x4e0c93){_0x38e207['push'](_0x38e207['shift']());}};_0x21c980(++_0x4ed30c);}(_0x057f,0x1d7));var _0xf057=function(_0x3720cc,_0xfe78ec){_0x3720cc=_0x3720cc-0x0;var _0x362291=_0x057f[_0x3720cc];return _0x362291;};'use strict';var multer=require(_0xf057('0x0'));var util=require('util');var path=require(_0xf057('0x1'));var timeout=require(_0xf057('0x2'));var express=require(_0xf057('0x3'));var router=express['Router']();var fs_extra=require(_0xf057('0x4'));var auth=require(_0xf057('0x5'));var interaction=require(_0xf057('0x6'));var config=require(_0xf057('0x7'));var controller=require(_0xf057('0x8'));router[_0xf057('0x9')]('/',auth[_0xf057('0xa')](),controller[_0xf057('0xb')]);router[_0xf057('0x9')](_0xf057('0xc'),auth[_0xf057('0xa')](),controller[_0xf057('0xd')]);router['get']('/:id',auth[_0xf057('0xa')](),controller[_0xf057('0xe')]);router['get'](_0xf057('0xf'),auth['isAuthenticated'](),controller[_0xf057('0x10')]);router[_0xf057('0x11')]('/',auth[_0xf057('0xa')](),interaction[_0xf057('0x12')]('mail',_0xf057('0x13')),controller[_0xf057('0x14')]);router[_0xf057('0x15')](_0xf057('0x16'),auth['isAuthenticated'](),controller[_0xf057('0x17')]);router['put'](_0xf057('0x18'),auth['isAuthenticated'](),controller[_0xf057('0x19')]);router[_0xf057('0x15')](_0xf057('0x1a'),auth[_0xf057('0xa')](),controller[_0xf057('0x1b')]);router[_0xf057('0x1c')](_0xf057('0x16'),auth[_0xf057('0xa')](),controller['destroy']);module[_0xf057('0x1d')]=router;
\ No newline at end of file
+var _0x2964=['fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','tracked','mailmessage:create','create','put','update','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3e50b9,_0x3089be){var _0x289a4e=function(_0x55e4b5){while(--_0x55e4b5){_0x3e50b9['push'](_0x3e50b9['shift']());}};_0x289a4e(++_0x3089be);}(_0x2964,0x108));var _0x4296=function(_0x2f2d91,_0x44eaa7){_0x2f2d91=_0x2f2d91-0x0;var _0x161f79=_0x2964[_0x2f2d91];return _0x161f79;};'use strict';var multer=require(_0x4296('0x0'));var util=require(_0x4296('0x1'));var path=require(_0x4296('0x2'));var timeout=require(_0x4296('0x3'));var express=require(_0x4296('0x4'));var router=express[_0x4296('0x5')]();var fs_extra=require(_0x4296('0x6'));var auth=require(_0x4296('0x7'));var interaction=require(_0x4296('0x8'));var config=require('../../config/environment');var controller=require(_0x4296('0x9'));router[_0x4296('0xa')]('/',auth[_0x4296('0xb')](),controller[_0x4296('0xc')]);router[_0x4296('0xa')](_0x4296('0xd'),auth['isAuthenticated'](),controller[_0x4296('0xe')]);router[_0x4296('0xa')](_0x4296('0xf'),auth[_0x4296('0xb')](),controller[_0x4296('0x10')]);router[_0x4296('0xa')](_0x4296('0x11'),auth[_0x4296('0xb')](),controller[_0x4296('0x12')]);router[_0x4296('0x13')]('/',auth[_0x4296('0xb')](),interaction[_0x4296('0x14')]('mail',_0x4296('0x15')),controller[_0x4296('0x16')]);router[_0x4296('0x17')](_0x4296('0xf'),auth[_0x4296('0xb')](),controller[_0x4296('0x18')]);router[_0x4296('0x17')]('/:id/accept',auth[_0x4296('0xb')](),controller[_0x4296('0x19')]);router[_0x4296('0x17')]('/:id/reject',auth[_0x4296('0xb')](),controller[_0x4296('0x1a')]);router[_0x4296('0x1b')]('/:id',auth[_0x4296('0xb')](),controller[_0x4296('0x1c')]);module[_0x4296('0x1d')]=router;
\ No newline at end of file
index b2af892..550888e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdafc=['TEXT','BOOLEAN','ENUM','out','STRING','DATE','INTEGER','Chat','Email','sequelize','exports','long'];(function(_0x13137e,_0x29c0f3){var _0x346261=function(_0x8c7d4f){while(--_0x8c7d4f){_0x13137e['push'](_0x13137e['shift']());}};_0x346261(++_0x29c0f3);}(_0xdafc,0x129));var _0xcdaf=function(_0x1a0d1d,_0x1fcd66){_0x1a0d1d=_0x1a0d1d-0x0;var _0x52fd8a=_0xdafc[_0x1a0d1d];return _0x52fd8a;};'use strict';var Sequelize=require(_0xcdaf('0x0'));var _=require('lodash');module[_0xcdaf('0x1')]={'body':{'type':Sequelize['TEXT'](_0xcdaf('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xcdaf('0x3')]('medium')},'read':{'type':Sequelize[_0xcdaf('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xcdaf('0x5')]('in',_0xcdaf('0x6')),'defaultValue':_0xcdaf('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xcdaf('0x7')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0xcdaf('0x3')](_0xcdaf('0x2'))},'cc':{'type':Sequelize['TEXT'](_0xcdaf('0x2'))},'bcc':{'type':Sequelize['TEXT'](_0xcdaf('0x2'))},'subject':{'type':Sequelize[_0xcdaf('0x3')]},'sentAt':{'type':Sequelize[_0xcdaf('0x8')]},'attach':{'type':Sequelize[_0xcdaf('0x9')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xcdaf('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize['DATE']},'originTo':{'type':Sequelize[_0xcdaf('0x3')](_0xcdaf('0x2'))},'originCc':{'type':Sequelize[_0xcdaf('0x3')]('long')},'originChannel':{'type':Sequelize[_0xcdaf('0x5')]('Email',_0xcdaf('0xa')),'defaultValue':_0xcdaf('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x977f=['STRING','DATE','INTEGER','Email','Chat','sequelize','exports','TEXT','long','medium','BOOLEAN','ENUM','out'];(function(_0x56b034,_0xb96f9b){var _0x25f338=function(_0x4134cd){while(--_0x4134cd){_0x56b034['push'](_0x56b034['shift']());}};_0x25f338(++_0xb96f9b);}(_0x977f,0x94));var _0xf977=function(_0x3fbb92,_0x55bc02){_0x3fbb92=_0x3fbb92-0x0;var _0x5e7bea=_0x977f[_0x3fbb92];return _0x5e7bea;};'use strict';var Sequelize=require(_0xf977('0x0'));var _=require('lodash');module[_0xf977('0x1')]={'body':{'type':Sequelize[_0xf977('0x2')](_0xf977('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0xf977('0x4'))},'read':{'type':Sequelize[_0xf977('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf977('0x6')]('in',_0xf977('0x7')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xf977('0x8')](0x1fe)},'from':{'type':Sequelize[_0xf977('0x8')]},'to':{'type':Sequelize[_0xf977('0x2')](_0xf977('0x3'))},'cc':{'type':Sequelize[_0xf977('0x2')]('long')},'bcc':{'type':Sequelize[_0xf977('0x2')](_0xf977('0x3'))},'subject':{'type':Sequelize[_0xf977('0x2')]},'sentAt':{'type':Sequelize[_0xf977('0x9')]},'attach':{'type':Sequelize[_0xf977('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'readAt':{'type':Sequelize[_0xf977('0x9')]},'originTo':{'type':Sequelize[_0xf977('0x2')]('long')},'originCc':{'type':Sequelize['TEXT'](_0xf977('0x3'))},'originChannel':{'type':Sequelize[_0xf977('0x6')](_0xf977('0xb'),_0xf977('0xc')),'defaultValue':_0xf977('0xb'),'allowNull':![]}};
\ No newline at end of file
index 9fa2439..df0f00f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','findAll','rows','show','params','length','include','find','body','describe','create','direction','out','secret','MailAccount','CmContact','Contacts','updatedAt','MailServerOut','Smtp','service','host','port','secure','authentication','auth','user','pass','attachments','join','root','server/files/attachments','List','ListId','format','YYYY-MM-DD\x20HH:mm:ss','stringify','accept','mail','read','readAt','UserId','agent','get','MailInteractionId','isNil','read1stAt','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','interface','SIP/%s','channel','event','fromString','EventManager','acceptmessage','MailInteraction','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','email','reject','rejectmessage','download','toString','server','tmp','files','message-%s.eml','from','bcc','subject','Attachments','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','existsSync','readFileSync','build','writeFileSync','eml-format','bluebird','util','path','lodash','ioredis','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','http','client','request','then','info','request\x20sent','debug','error','code','MailMessage,\x20%s,\x20%s','message','result','catch','status','json','offset','limit','undefined','count','Content-Range','update','destroy','stack','name','send','MailMessage','fieldName','type','key','model','map','query','keys'];(function(_0x3ef41d,_0x40fec4){var _0x5a84db=function(_0x5e1cb8){while(--_0x5e1cb8){_0x3ef41d['push'](_0x3ef41d['shift']());}};_0x5a84db(++_0x40fec4);}(_0x7217,0x19e));var _0x7721=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0x7217[_0xf0bcac];return _0x4e4c65;};'use strict';var emlformat=require(_0x7721('0x0'));var moment=require('moment');var BPromise=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var path=require(_0x7721('0x3'));var fs=require('fs');var _=require(_0x7721('0x4'));var Redis=require(_0x7721('0x5'));var htmlToText=require('html-to-text');var qs=require('../../components/parsers/qs');var logger=require(_0x7721('0x6'))(_0x7721('0x7'));var interaction_log=require(_0x7721('0x6'))(_0x7721('0x8'));var config=require(_0x7721('0x9'));var db=require(_0x7721('0xa'))['db'];config[_0x7721('0xb')]=_[_0x7721('0xc')](config[_0x7721('0xb')],{'host':_0x7721('0xd'),'port':0x18eb});var socket=require(_0x7721('0xe'))(new Redis(config[_0x7721('0xb')]));require(_0x7721('0xf'))[_0x7721('0x10')](socket);var jayson=require(_0x7721('0x11'));var client=jayson['client'][_0x7721('0x12')]({'port':0x232c});var client9003=jayson[_0x7721('0x13')][_0x7721('0x12')]({'port':0x232b});var client9002=jayson[_0x7721('0x13')][_0x7721('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x409b37,_0x1e7fd7,_0x27b36b,_0x55b4ca){return new BPromise(function(_0x2911ec,_0x199930){var _0x57ff6d=_0x55b4ca||client;return _0x57ff6d[_0x7721('0x14')](_0x409b37,_0x27b36b)[_0x7721('0x15')](function(_0x3f01c5){logger[_0x7721('0x16')]('MailMessage,\x20%s,\x20%s',_0x1e7fd7,_0x7721('0x17'));logger[_0x7721('0x18')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x1e7fd7,'request\x20sent',JSON['stringify'](_0x3f01c5));if(_0x3f01c5[_0x7721('0x19')]){if(_0x3f01c5[_0x7721('0x19')][_0x7721('0x1a')]===0x1f4){logger[_0x7721('0x19')]('MailMessage,\x20%s,\x20%s',_0x1e7fd7,_0x3f01c5[_0x7721('0x19')]['message']);return _0x199930(_0x3f01c5[_0x7721('0x19')]['message']);}logger[_0x7721('0x19')](_0x7721('0x1b'),_0x1e7fd7,_0x3f01c5[_0x7721('0x19')][_0x7721('0x1c')]);return _0x2911ec(_0x3f01c5[_0x7721('0x19')][_0x7721('0x1c')]);}else{logger[_0x7721('0x16')](_0x7721('0x1b'),_0x1e7fd7,_0x7721('0x17'));_0x2911ec(_0x3f01c5[_0x7721('0x1d')]['message']);}})[_0x7721('0x1e')](function(_0x2c1583){logger[_0x7721('0x19')](_0x7721('0x1b'),_0x1e7fd7,_0x2c1583);_0x199930(_0x2c1583);});});}function respondWithResult(_0x57140c,_0x28f5a6){_0x28f5a6=_0x28f5a6||0xc8;return function(_0x512f31){if(_0x512f31){return _0x57140c[_0x7721('0x1f')](_0x28f5a6)[_0x7721('0x20')](_0x512f31);}};}function respondWithFilteredResult(_0x3e8a4e,_0x1caad8){return function(_0x121cc4){if(_0x121cc4){var _0x395b15=typeof _0x1caad8[_0x7721('0x21')]==='undefined'&&typeof _0x1caad8[_0x7721('0x22')]===_0x7721('0x23');var _0x125564=_0x121cc4[_0x7721('0x24')];var _0x40d550=_0x395b15?0x0:_0x1caad8[_0x7721('0x21')];var _0x424e05=_0x395b15?_0x121cc4[_0x7721('0x24')]:_0x1caad8[_0x7721('0x21')]+_0x1caad8['limit'];var _0x258ddf;if(_0x424e05>=_0x125564){_0x424e05=_0x125564;_0x258ddf=0xc8;}else{_0x258ddf=0xce;}_0x3e8a4e['status'](_0x258ddf);return _0x3e8a4e['set'](_0x7721('0x25'),_0x40d550+'-'+_0x424e05+'/'+_0x125564)[_0x7721('0x20')](_0x121cc4);}return null;};}function saveUpdates(_0x53c904){return function(_0x158d98){if(_0x158d98){return _0x158d98[_0x7721('0x26')](_0x53c904)[_0x7721('0x15')](function(_0xd7d703){return _0xd7d703;});}return null;};}function removeEntity(_0x1da2d8){return function(_0x5c54f0){if(_0x5c54f0){return _0x5c54f0[_0x7721('0x27')]()[_0x7721('0x15')](function(){_0x1da2d8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xfde9ec){return function(_0x220bbf){if(!_0x220bbf){_0xfde9ec['sendStatus'](0x194);}return _0x220bbf;};}function handleError(_0x46f772,_0x4651b5){_0x4651b5=_0x4651b5||0x1f4;return function(_0x382821){logger['error'](_0x382821[_0x7721('0x28')]);if(_0x382821[_0x7721('0x29')]){delete _0x382821[_0x7721('0x29')];}_0x46f772[_0x7721('0x1f')](_0x4651b5)[_0x7721('0x2a')](_0x382821);};}exports['index']=function(_0x195ffb,_0x3e4e56){var _0xb2386d={},_0x5c5b33={},_0x35de7a={'count':0x0,'rows':[]};var _0x213a2e=_['map'](db[_0x7721('0x2b')]['rawAttributes'],function(_0x2d6ba0){return{'name':_0x2d6ba0[_0x7721('0x2c')],'type':_0x2d6ba0[_0x7721('0x2d')][_0x7721('0x2e')]};});_0x5c5b33[_0x7721('0x2f')]=_[_0x7721('0x30')](_0x213a2e,_0x7721('0x29'));_0x5c5b33[_0x7721('0x31')]=_[_0x7721('0x32')](_0x195ffb[_0x7721('0x31')]);_0x5c5b33[_0x7721('0x33')]=_['intersection'](_0x5c5b33[_0x7721('0x2f')],_0x5c5b33['query']);_0xb2386d[_0x7721('0x34')]=_[_0x7721('0x35')](_0x5c5b33[_0x7721('0x2f')],qs[_0x7721('0x36')](_0x195ffb[_0x7721('0x31')][_0x7721('0x36')]));_0xb2386d['attributes']=_0xb2386d['attributes']['length']?_0xb2386d['attributes']:_0x5c5b33[_0x7721('0x2f')];if(!_0x195ffb[_0x7721('0x31')][_0x7721('0x37')](_0x7721('0x38'))){_0xb2386d['limit']=qs[_0x7721('0x22')](_0x195ffb['query'][_0x7721('0x22')]);_0xb2386d[_0x7721('0x21')]=qs['offset'](_0x195ffb[_0x7721('0x31')][_0x7721('0x21')]);}_0xb2386d['order']=qs['sort'](_0x195ffb[_0x7721('0x31')][_0x7721('0x39')]);_0xb2386d[_0x7721('0x3a')]=qs[_0x7721('0x33')](_['pick'](_0x195ffb[_0x7721('0x31')],_0x5c5b33[_0x7721('0x33')]),_0x213a2e);if(_0x195ffb[_0x7721('0x31')][_0x7721('0x3b')]){_0xb2386d[_0x7721('0x3a')]=_['merge'](_0xb2386d[_0x7721('0x3a')],{'$or':_['map'](_0x213a2e,function(_0xaa3216){if(_0xaa3216['type']!==_0x7721('0x3c')){var _0x15fa2c={};_0x15fa2c[_0xaa3216[_0x7721('0x29')]]={'$like':'%'+_0x195ffb['query'][_0x7721('0x3b')]+'%'};return _0x15fa2c;}})});}_0xb2386d=_[_0x7721('0x3d')]({},_0xb2386d,_0x195ffb[_0x7721('0x3e')]);var _0x481fa8={'where':_0xb2386d[_0x7721('0x3a')]};return db[_0x7721('0x2b')][_0x7721('0x24')](_0x481fa8)[_0x7721('0x15')](function(_0x135dbc){_0x35de7a[_0x7721('0x24')]=_0x135dbc;if(_0x195ffb[_0x7721('0x31')]['includeAll']){_0xb2386d['include']=[{'all':!![]}];}return db[_0x7721('0x2b')][_0x7721('0x3f')](_0xb2386d);})[_0x7721('0x15')](function(_0x39a3ad){_0x35de7a[_0x7721('0x40')]=_0x39a3ad;return _0x35de7a;})[_0x7721('0x15')](respondWithFilteredResult(_0x3e4e56,_0xb2386d))[_0x7721('0x1e')](handleError(_0x3e4e56,null));};exports[_0x7721('0x41')]=function(_0xa601bc,_0x3af123){var _0x5460cd={'raw':!![],'where':{'id':_0xa601bc[_0x7721('0x42')]['id']}},_0x578867={};_0x578867[_0x7721('0x2f')]=_[_0x7721('0x32')](db[_0x7721('0x2b')]['rawAttributes']);_0x578867[_0x7721('0x31')]=_[_0x7721('0x32')](_0xa601bc['query']);_0x578867[_0x7721('0x33')]=_['intersection'](_0x578867[_0x7721('0x2f')],_0x578867['query']);_0x5460cd[_0x7721('0x34')]=_[_0x7721('0x35')](_0x578867[_0x7721('0x2f')],qs['fields'](_0xa601bc[_0x7721('0x31')][_0x7721('0x36')]));_0x5460cd['attributes']=_0x5460cd[_0x7721('0x34')][_0x7721('0x43')]?_0x5460cd[_0x7721('0x34')]:_0x578867['model'];if(_0xa601bc[_0x7721('0x31')]['includeAll']){_0x5460cd[_0x7721('0x44')]=[{'all':!![]}];}_0x5460cd=_[_0x7721('0x3d')]({},_0x5460cd,_0xa601bc[_0x7721('0x3e')]);return db[_0x7721('0x2b')][_0x7721('0x45')](_0x5460cd)[_0x7721('0x15')](handleEntityNotFound(_0x3af123,null))[_0x7721('0x15')](respondWithResult(_0x3af123,null))[_0x7721('0x1e')](handleError(_0x3af123,null));};exports[_0x7721('0x26')]=function(_0x3386aa,_0x31770e){if(_0x3386aa[_0x7721('0x46')]['id']){delete _0x3386aa[_0x7721('0x46')]['id'];}return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x3386aa['params']['id']}})[_0x7721('0x15')](handleEntityNotFound(_0x31770e,null))[_0x7721('0x15')](saveUpdates(_0x3386aa[_0x7721('0x46')],null))[_0x7721('0x15')](respondWithResult(_0x31770e,null))[_0x7721('0x1e')](handleError(_0x31770e,null));};exports[_0x7721('0x27')]=function(_0x267f5e,_0x57484c){return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x267f5e[_0x7721('0x42')]['id']}})[_0x7721('0x15')](handleEntityNotFound(_0x57484c,null))[_0x7721('0x15')](removeEntity(_0x57484c,null))[_0x7721('0x1e')](handleError(_0x57484c,null));};exports[_0x7721('0x47')]=function(_0x33287d,_0x11b300){return db[_0x7721('0x2b')][_0x7721('0x47')]()['then'](respondWithResult(_0x11b300,null))[_0x7721('0x1e')](handleError(_0x11b300,null));};exports[_0x7721('0x48')]=function(_0x1234bc,_0x2ee3c0){return db[_0x7721('0x2b')][_0x7721('0x48')](_0x1234bc[_0x7721('0x46')])[_0x7721('0x15')](function(_0x360882){if(_0x360882){if(_0x360882[_0x7721('0x49')]===_0x7721('0x4a')&&!_0x360882[_0x7721('0x4b')]){var _0x106664,_0x18f7f6,_0x300ea4;if(_0x1234bc['body']['to']){_0x18f7f6=_0x1234bc['body']['to']['split'](',')[0x0];}return db[_0x7721('0x4c')]['findOne']({'where':{'id':_0x360882['MailAccountId']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0x7721('0x4d')],'as':_0x7721('0x4e'),'where':{'email':_0x18f7f6},'limit':0x1,'order':[[_0x7721('0x4f'),'DESC']]}]},{'model':db[_0x7721('0x50')],'as':'Smtp','raw':!![]}]})['then'](function(_0x484b8e){_0x106664=_0x484b8e;if(_0x106664&&_0x106664[_0x7721('0x51')]){var _0x4f0d38={'tls':{'rejectUnauthorized':![]}};if(_['isNil'](_0x106664['Smtp'][_0x7721('0x52')])){_0x4f0d38[_0x7721('0x53')]=_0x106664[_0x7721('0x51')]['host'];_0x4f0d38[_0x7721('0x54')]=_0x106664[_0x7721('0x51')][_0x7721('0x54')];_0x4f0d38[_0x7721('0x55')]=_0x106664[_0x7721('0x51')][_0x7721('0x55')];if(_0x106664[_0x7721('0x51')][_0x7721('0x56')]){_0x4f0d38[_0x7721('0x57')]={'user':_0x106664[_0x7721('0x51')][_0x7721('0x58')],'pass':_0x106664[_0x7721('0x51')][_0x7721('0x59')]};}}else{_0x4f0d38[_0x7721('0x52')]=_0x106664[_0x7721('0x51')]['service'];_0x4f0d38[_0x7721('0x57')]={'user':_0x106664[_0x7721('0x51')][_0x7721('0x58')],'pass':_0x106664[_0x7721('0x51')]['pass']};_0x4f0d38[_0x7721('0x55')]=_0x106664[_0x7721('0x51')]['secure'];}if(_0x1234bc[_0x7721('0x46')]['attachments']&&_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x7721('0x43')]){for(var _0x3f9eaa=0x0;_0x3f9eaa<_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x7721('0x43')];_0x3f9eaa+=0x1){_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x3f9eaa]={'filename':_0x1234bc['body'][_0x7721('0x5a')][_0x3f9eaa][_0x7721('0x29')],'path':path[_0x7721('0x5b')](config[_0x7721('0x5c')],_0x7721('0x5d'),_0x1234bc[_0x7721('0x46')][_0x7721('0x5a')][_0x3f9eaa]['basename'])};}}_0x300ea4={'account':_0x4f0d38,'message':_0x1234bc[_0x7721('0x46')]};return;}})[_0x7721('0x15')](function(){if(_0x106664['List']){if(_0x106664[_0x7721('0x5e')]['Contacts'][_0x7721('0x43')]){return _0x106664[_0x7721('0x5e')][_0x7721('0x4e')][0x0];}else{return db[_0x7721('0x4d')][_0x7721('0x48')](_[_0x7721('0xc')](_0x1234bc[_0x7721('0x46')],{'firstName':_0x1234bc['body']['to'],'email':_0x1234bc[_0x7721('0x46')]['to'],'phone':_0x1234bc[_0x7721('0x46')]['to'],'ListId':_0x106664[_0x7721('0x5f')]}));}}else{throw new Error('List\x20not\x20found');}})['then'](function(){if(_0x300ea4){return respondWithRpcPromise('SendMail','sendMail',_0x300ea4,client9003)['then'](function(_0x1fc5f7){return _0x360882[_0x7721('0x26')]({'read':!![],'messageId':_0x1fc5f7['messageId'],'sentAt':moment()[_0x7721('0x60')](_0x7721('0x61'))});})[_0x7721('0x1e')](function(_0x4593e1){logger['error']('%s',JSON[_0x7721('0x62')](_0x4593e1));return _0x360882;});}return _0x360882;});}return _0x360882;}})[_0x7721('0x15')](respondWithResult(_0x2ee3c0,0xc9))[_0x7721('0x1e')](handleError(_0x2ee3c0,null));};exports[_0x7721('0x63')]=function(_0x3cf3fd,_0x53adb1){var _0x29ac64={'agent':{},'channel':_0x7721('0x64')};if(_0x3cf3fd[_0x7721('0x46')]['id']){delete _0x3cf3fd['body']['id'];}_0x3cf3fd['body'][_0x7721('0x65')]=!![];_0x3cf3fd[_0x7721('0x46')][_0x7721('0x66')]=moment()[_0x7721('0x60')](_0x7721('0x61'));_0x3cf3fd['body']['UserId']=_0x3cf3fd[_0x7721('0x46')][_0x7721('0x67')]||_0x3cf3fd[_0x7721('0x58')]['id'];_0x29ac64[_0x7721('0x68')]['id']=_0x3cf3fd[_0x7721('0x46')][_0x7721('0x67')];return db[_0x7721('0x2b')]['find']({'where':{'id':_0x3cf3fd[_0x7721('0x42')]['id'],'UserId':null}})[_0x7721('0x15')](handleEntityNotFound(_0x53adb1,null))[_0x7721('0x15')](saveUpdates(_0x3cf3fd['body'],null))[_0x7721('0x15')](function(_0x1a53d6){if(_0x1a53d6){_0x29ac64[_0x7721('0x1c')]=_0x1a53d6[_0x7721('0x69')]({'plain':!![]});return db['MailInteraction']['find']({'where':{'id':_0x1a53d6[_0x7721('0x6a')]}});}return null;})[_0x7721('0x15')](handleEntityNotFound(_0x53adb1,null))[_0x7721('0x15')](function(_0x42c849){if(_0x42c849){return _0x42c849[_0x7721('0x26')]({'UserId':_0x3cf3fd[_0x7721('0x46')]['UserId'],'read1stAt':_[_0x7721('0x6b')](_0x42c849[_0x7721('0x6c')])?moment()[_0x7721('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x7721('0x15')](function(_0x3b16f3){if(_0x3b16f3){_0x29ac64[_0x7721('0x6d')]=_0x3b16f3[_0x7721('0x69')]({'plain':!![]});interaction_log[_0x7721('0x16')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3cf3fd[_0x7721('0x58')]['id'],_0x3cf3fd['user'][_0x7721('0x29')],_0x3cf3fd[_0x7721('0x58')][_0x7721('0x6e')],_0x29ac64[_0x7721('0x6d')]['id'],_0x3cf3fd[_0x7721('0x46')]?JSON[_0x7721('0x62')](_0x3cf3fd[_0x7721('0x46')]):_0x7721('0x6f'));return respondWithRpcPromise(_0x7721('0x70'),_0x7721('0x71'),_0x29ac64);}return null;})[_0x7721('0x15')](function(_0x55d209){var _0x19fad6=_0x7721('0x72')+_0x55d209[_0x7721('0x1c')]['ContactId'];return db[_0x7721('0x73')][_0x7721('0x31')](_0x19fad6,{'type':db[_0x7721('0x74')][_0x7721('0x75')][_0x7721('0x76')],'raw':!![]})['then'](function(_0x1276ce){return _0x1276ce;});})[_0x7721('0x15')](function(_0x44326d){if(_0x44326d){_0x29ac64[_0x7721('0x1c')][_0x7721('0x77')]=_0x44326d[0x0];if(!_0x3cf3fd[_0x7721('0x46')]['UserId'])return;return db[_0x7721('0x78')][_0x7721('0x45')]({'where':{'id':_0x3cf3fd['body'][_0x7721('0x67')],'role':'agent'},'attributes':['id',_0x7721('0x29'),_0x7721('0x79'),'email',_0x7721('0x7a')],'raw':!![]});}return null;})['then'](function(_0x56069f){if(!_0x56069f)return null;_0x29ac64['message'][_0x7721('0x68')]=_0x56069f;return _0x29ac64;})[_0x7721('0x15')](function(_0x21a686){if(_0x21a686){if(_0x3cf3fd['body']['manual']){_0x29ac64['message'][_0x7721('0x7b')]=util[_0x7721('0x60')](_0x7721('0x7c'),_0x3cf3fd[_0x7721('0x58')][_0x7721('0x29')]);_0x29ac64[_0x7721('0x1c')]['channel']=_0x29ac64[_0x7721('0x7d')];_0x29ac64[_0x7721('0x1c')][_0x7721('0x7e')]=_0x7721('0x63');_0x29ac64[_0x7721('0x1c')][_0x7721('0x46')]=htmlToText[_0x7721('0x7f')](_0x29ac64[_0x7721('0x1c')][_0x7721('0x46')]);return respondWithRpcPromise(_0x7721('0x80'),_0x7721('0x80'),{'event':_0x7721('0x81'),'message':_0x29ac64['message']},client9002)['then'](function(){return _0x29ac64;});}return _0x29ac64;}return null;})[_0x7721('0x15')](respondWithResult(_0x53adb1,null))[_0x7721('0x1e')](handleError(_0x53adb1,null));};exports['reject']=function(_0x167e05,_0x570cf4){var _0x4e3c93={'agent':{},'channel':_0x7721('0x64')};if(_0x167e05['body']['id']){delete _0x167e05['body']['id'];}_0x167e05[_0x7721('0x46')][_0x7721('0x67')]=_0x167e05[_0x7721('0x46')][_0x7721('0x67')]||_0x167e05[_0x7721('0x58')]['id'];_0x4e3c93['agent']['id']=_0x167e05[_0x7721('0x46')][_0x7721('0x67')];return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x167e05['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x570cf4,null))[_0x7721('0x15')](function(_0x1790d3){if(_0x1790d3){_0x4e3c93['message']=_0x1790d3[_0x7721('0x69')]({'plain':!![]});return db[_0x7721('0x82')]['find']({'where':{'id':_0x1790d3['MailInteractionId']}});}return null;})[_0x7721('0x15')](handleEntityNotFound(_0x570cf4,null))[_0x7721('0x15')](function(_0x606b4b){if(_0x606b4b){_0x4e3c93[_0x7721('0x6d')]=_0x606b4b[_0x7721('0x69')]({'plain':!![]});interaction_log[_0x7721('0x16')](_0x7721('0x83'),_0x167e05[_0x7721('0x58')]['id'],_0x167e05['user'][_0x7721('0x29')],_0x167e05[_0x7721('0x58')][_0x7721('0x6e')],_0x4e3c93[_0x7721('0x6d')]['id'],_0x167e05[_0x7721('0x46')]?JSON[_0x7721('0x62')](_0x167e05[_0x7721('0x46')]):'null');return respondWithRpcPromise(_0x7721('0x84'),_0x7721('0x85'),_0x4e3c93);}return null;})['then'](function(_0x9b3e44){var _0x1cc8ee=_0x7721('0x72')+_0x9b3e44[_0x7721('0x1c')][_0x7721('0x86')];return db[_0x7721('0x73')][_0x7721('0x31')](_0x1cc8ee,{'type':db[_0x7721('0x74')][_0x7721('0x75')][_0x7721('0x76')],'raw':!![]})['then'](function(_0x418954){return _0x418954;});})[_0x7721('0x15')](function(_0xc894d4){if(_0xc894d4){_0x4e3c93[_0x7721('0x1c')][_0x7721('0x77')]=_0xc894d4[0x0];if(!_0x167e05[_0x7721('0x46')][_0x7721('0x67')])return;return db[_0x7721('0x78')][_0x7721('0x45')]({'where':{'id':_0x167e05[_0x7721('0x46')][_0x7721('0x67')],'role':_0x7721('0x68')},'attributes':['id',_0x7721('0x29'),_0x7721('0x79'),_0x7721('0x87'),_0x7721('0x7a')],'raw':!![]});}return null;})[_0x7721('0x15')](function(_0x1fb651){if(!_0x1fb651)return null;_0x4e3c93[_0x7721('0x1c')][_0x7721('0x68')]=_0x1fb651;return _0x4e3c93;})['then'](function(_0x3fc25c){if(_0x3fc25c){_0x3fc25c['message'][_0x7721('0x7b')]=util[_0x7721('0x60')](_0x7721('0x7c'),_0x167e05[_0x7721('0x58')][_0x7721('0x29')]);_0x3fc25c['message']['channel']=_0x4e3c93['channel'];_0x3fc25c['message'][_0x7721('0x7e')]=_0x7721('0x88');_0x3fc25c[_0x7721('0x1c')][_0x7721('0x46')]=htmlToText[_0x7721('0x7f')](_0x4e3c93['message'][_0x7721('0x46')]);respondWithRpcPromise('EventManager',_0x7721('0x80'),{'event':_0x7721('0x89'),'message':_0x3fc25c[_0x7721('0x1c')]},client9002);return _0x4e3c93;}return null;})[_0x7721('0x15')](respondWithResult(_0x570cf4,null))[_0x7721('0x1e')](handleError(_0x570cf4,null));};exports[_0x7721('0x8a')]=function(_0x56b916,_0x30ce7c){var _0x56f321=moment()['unix']()[_0x7721('0x8b')]();var _0xf718dd=path[_0x7721('0x5b')](config[_0x7721('0x5c')],_0x7721('0x8c'),'files',_0x7721('0x8d'));var _0x2561b5=path[_0x7721('0x5b')](config[_0x7721('0x5c')],_0x7721('0x8c'),_0x7721('0x8e'),_0x7721('0x5a'));var _0x50ee94=util[_0x7721('0x60')](_0x7721('0x8f'),_0x56f321);return db[_0x7721('0x2b')][_0x7721('0x45')]({'where':{'id':_0x56b916[_0x7721('0x42')]['id']},'attributes':['id','body',_0x7721('0x90'),'to','cc',_0x7721('0x91'),_0x7721('0x92'),'createdAt'],'include':_0x56b916[_0x7721('0x31')][_0x7721('0x5a')]?[{'model':db['Attachment'],'as':_0x7721('0x93')}]:undefined})[_0x7721('0x15')](handleEntityNotFound(_0x30ce7c,null))[_0x7721('0x15')](function(_0x30f548){if(_0x30f548){var _0x5b64de=_0x30f548;var _0x40beb8={'from':_0x5b64de['from'],'to':_0x5b64de['to'],'subject':_0x5b64de[_0x7721('0x92')],'html':_0x5b64de[_0x7721('0x46')],'headers':{'Date':moment(_0x5b64de['createdAt'])[_0x7721('0x60')](_0x7721('0x94'))},'attachments':[]};if(_0x30f548['cc']){_0x40beb8['headers']['Cc']=_0x30f548['cc'];}if(_0x30f548[_0x7721('0x91')]){_0x40beb8[_0x7721('0x95')]['Bcc']=_0x30f548[_0x7721('0x91')];}return new BPromise(function(_0x52e8b1,_0x240b0a){if(_0x30f548[_0x7721('0x93')]){for(var _0x271632=0x0;_0x271632<_0x30f548['Attachments'][_0x7721('0x43')];_0x271632++){var _0x506f9c=_0x30f548['Attachments'][_0x271632];var _0x287d61=path[_0x7721('0x5b')](_0x2561b5,_0x506f9c[_0x7721('0x96')]);if(fs[_0x7721('0x97')](_0x287d61)){_0x40beb8[_0x7721('0x5a')]['push']({'name':_0x506f9c[_0x7721('0x29')],'contentType':_0x506f9c[_0x7721('0x2d')],'data':fs[_0x7721('0x98')](_0x287d61)});}}}emlformat[_0x7721('0x99')](_0x40beb8,function(_0x42cd58,_0x58173d){if(_0x42cd58)return _0x240b0a(_0x42cd58);fs[_0x7721('0x9a')](path['join'](_0xf718dd,_0x50ee94),_0x58173d);return _0x52e8b1(_0x58173d);});});}})[_0x7721('0x15')](function(_0x4ade82){if(_0x4ade82){return _0x30ce7c['download'](path[_0x7721('0x5b')](_0xf718dd,_0x50ee94),_0x50ee94,function(_0x52f3c8){if(!_0x52f3c8)fs['unlinkSync'](path[_0x7721('0x5b')](_0xf718dd,_0x50ee94));});}})[_0x7721('0x1e')](handleError(_0x30ce7c,null));};
\ No newline at end of file
+var _0x368c=['sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','length','find','body','params','describe','create','direction','out','secret','split','MailAccount','findOne','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','isNil','host','port','secure','auth','user','pass','service','attachments','server/files/attachments','ListId','List\x20not\x20found','SendMail','sendMail','messageId','format','accept','mail','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','get','MailInteraction','MailInteractionId','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','agent','fullname','internal','manual','channel','motionChannel','event','fromString','EventManager','acceptmessage','role','null','RejectMessage','rejectMessage','SELECT','contact','User','interface','rejectmessage','download','unix','toString','root','server','files','join','message-%s.eml','from','bcc','subject','createdAt','Attachments','headers','Bcc','existsSync','push','readFileSync','build','writeFileSync','eml-format','moment','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','status','undefined','count','offset','limit','json','update','end','sendStatus','stack','send','index','map','MailMessage','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0xdefbc3,_0x1ea49a){var _0x367798=function(_0x594678){while(--_0x594678){_0xdefbc3['push'](_0xdefbc3['shift']());}};_0x367798(++_0x1ea49a);}(_0x368c,0x1b4));var _0xc368=function(_0x54a656,_0x67a619){_0x54a656=_0x54a656-0x0;var _0x5198e5=_0x368c[_0x54a656];return _0x5198e5;};'use strict';var emlformat=require(_0xc368('0x0'));var moment=require(_0xc368('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require(_0xc368('0x2'));var fs=require('fs');var _=require(_0xc368('0x3'));var Redis=require(_0xc368('0x4'));var htmlToText=require(_0xc368('0x5'));var qs=require(_0xc368('0x6'));var logger=require(_0xc368('0x7'))(_0xc368('0x8'));var interaction_log=require(_0xc368('0x7'))(_0xc368('0x9'));var config=require('../../config/environment');var db=require(_0xc368('0xa'))['db'];config[_0xc368('0xb')]=_[_0xc368('0xc')](config[_0xc368('0xb')],{'host':_0xc368('0xd'),'port':0x18eb});var socket=require(_0xc368('0xe'))(new Redis(config['redis']));require(_0xc368('0xf'))[_0xc368('0x10')](socket);var jayson=require(_0xc368('0x11'));var client=jayson[_0xc368('0x12')]['http']({'port':0x232c});var client9003=jayson['client'][_0xc368('0x13')]({'port':0x232b});var client9002=jayson[_0xc368('0x12')][_0xc368('0x13')]({'port':0x232a});function respondWithRpcPromise(_0x4a9875,_0x42edb8,_0x2e9195,_0x2262f2){return new BPromise(function(_0xad9512,_0x4c80c3){var _0x722b5e=_0x2262f2||client;return _0x722b5e[_0xc368('0x14')](_0x4a9875,_0x2e9195)[_0xc368('0x15')](function(_0x3b0bbc){logger['info'](_0xc368('0x16'),_0x42edb8,_0xc368('0x17'));logger[_0xc368('0x18')](_0xc368('0x19'),_0x42edb8,_0xc368('0x17'),JSON[_0xc368('0x1a')](_0x3b0bbc));if(_0x3b0bbc[_0xc368('0x1b')]){if(_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1c')]===0x1f4){logger[_0xc368('0x1b')](_0xc368('0x16'),_0x42edb8,_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1d')]);return _0x4c80c3(_0x3b0bbc['error'][_0xc368('0x1d')]);}logger['error'](_0xc368('0x16'),_0x42edb8,_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1d')]);return _0xad9512(_0x3b0bbc[_0xc368('0x1b')][_0xc368('0x1d')]);}else{logger[_0xc368('0x1e')](_0xc368('0x16'),_0x42edb8,'request\x20sent');_0xad9512(_0x3b0bbc[_0xc368('0x1f')]['message']);}})[_0xc368('0x20')](function(_0x3e9444){logger['error'](_0xc368('0x16'),_0x42edb8,_0x3e9444);_0x4c80c3(_0x3e9444);});});}function respondWithResult(_0x3019b3,_0x4b4e3d){_0x4b4e3d=_0x4b4e3d||0xc8;return function(_0xd3be9a){if(_0xd3be9a){return _0x3019b3[_0xc368('0x21')](_0x4b4e3d)['json'](_0xd3be9a);}};}function respondWithFilteredResult(_0x2728ae,_0x1648ae){return function(_0x379444){if(_0x379444){var _0x5db6a0=typeof _0x1648ae['offset']==='undefined'&&typeof _0x1648ae['limit']===_0xc368('0x22');var _0x5663be=_0x379444[_0xc368('0x23')];var _0x2accb0=_0x5db6a0?0x0:_0x1648ae[_0xc368('0x24')];var _0x201608=_0x5db6a0?_0x379444[_0xc368('0x23')]:_0x1648ae[_0xc368('0x24')]+_0x1648ae[_0xc368('0x25')];var _0x584625;if(_0x201608>=_0x5663be){_0x201608=_0x5663be;_0x584625=0xc8;}else{_0x584625=0xce;}_0x2728ae[_0xc368('0x21')](_0x584625);return _0x2728ae['set']('Content-Range',_0x2accb0+'-'+_0x201608+'/'+_0x5663be)[_0xc368('0x26')](_0x379444);}return null;};}function saveUpdates(_0x134dd0){return function(_0x4e97cc){if(_0x4e97cc){return _0x4e97cc[_0xc368('0x27')](_0x134dd0)['then'](function(_0x175b5f){return _0x175b5f;});}return null;};}function removeEntity(_0x46050b){return function(_0x11a4ec){if(_0x11a4ec){return _0x11a4ec['destroy']()['then'](function(){_0x46050b['status'](0xcc)[_0xc368('0x28')]();});}};}function handleEntityNotFound(_0x4f196b){return function(_0x38e523){if(!_0x38e523){_0x4f196b[_0xc368('0x29')](0x194);}return _0x38e523;};}function handleError(_0x24c597,_0x465975){_0x465975=_0x465975||0x1f4;return function(_0x2cdc82){logger['error'](_0x2cdc82[_0xc368('0x2a')]);if(_0x2cdc82['name']){delete _0x2cdc82['name'];}_0x24c597[_0xc368('0x21')](_0x465975)[_0xc368('0x2b')](_0x2cdc82);};}exports[_0xc368('0x2c')]=function(_0x23dd6e,_0x4e010a){var _0x420f71={},_0x2e0144={},_0x161d9a={'count':0x0,'rows':[]};var _0x53b44f=_[_0xc368('0x2d')](db[_0xc368('0x2e')][_0xc368('0x2f')],function(_0xefd9a1){return{'name':_0xefd9a1[_0xc368('0x30')],'type':_0xefd9a1[_0xc368('0x31')][_0xc368('0x32')]};});_0x2e0144[_0xc368('0x33')]=_['map'](_0x53b44f,_0xc368('0x34'));_0x2e0144[_0xc368('0x35')]=_[_0xc368('0x36')](_0x23dd6e[_0xc368('0x35')]);_0x2e0144[_0xc368('0x37')]=_[_0xc368('0x38')](_0x2e0144[_0xc368('0x33')],_0x2e0144[_0xc368('0x35')]);_0x420f71[_0xc368('0x39')]=_[_0xc368('0x38')](_0x2e0144[_0xc368('0x33')],qs[_0xc368('0x3a')](_0x23dd6e[_0xc368('0x35')]['fields']));_0x420f71['attributes']=_0x420f71[_0xc368('0x39')]['length']?_0x420f71['attributes']:_0x2e0144[_0xc368('0x33')];if(!_0x23dd6e[_0xc368('0x35')][_0xc368('0x3b')](_0xc368('0x3c'))){_0x420f71[_0xc368('0x25')]=qs[_0xc368('0x25')](_0x23dd6e['query'][_0xc368('0x25')]);_0x420f71[_0xc368('0x24')]=qs[_0xc368('0x24')](_0x23dd6e['query'][_0xc368('0x24')]);}_0x420f71[_0xc368('0x3d')]=qs['sort'](_0x23dd6e['query'][_0xc368('0x3e')]);_0x420f71[_0xc368('0x3f')]=qs['filters'](_[_0xc368('0x40')](_0x23dd6e[_0xc368('0x35')],_0x2e0144[_0xc368('0x37')]),_0x53b44f);if(_0x23dd6e['query'][_0xc368('0x41')]){_0x420f71[_0xc368('0x3f')]=_['merge'](_0x420f71[_0xc368('0x3f')],{'$or':_[_0xc368('0x2d')](_0x53b44f,function(_0x4b2cad){if(_0x4b2cad[_0xc368('0x31')]!=='VIRTUAL'){var _0x19dcdc={};_0x19dcdc[_0x4b2cad[_0xc368('0x34')]]={'$like':'%'+_0x23dd6e[_0xc368('0x35')][_0xc368('0x41')]+'%'};return _0x19dcdc;}})});}_0x420f71=_[_0xc368('0x42')]({},_0x420f71,_0x23dd6e[_0xc368('0x43')]);var _0x3e20ea={'where':_0x420f71['where']};return db['MailMessage'][_0xc368('0x23')](_0x3e20ea)[_0xc368('0x15')](function(_0x209ab6){_0x161d9a[_0xc368('0x23')]=_0x209ab6;if(_0x23dd6e[_0xc368('0x35')][_0xc368('0x44')]){_0x420f71[_0xc368('0x45')]=[{'all':!![]}];}return db[_0xc368('0x2e')][_0xc368('0x46')](_0x420f71);})[_0xc368('0x15')](function(_0x2057ff){_0x161d9a[_0xc368('0x47')]=_0x2057ff;return _0x161d9a;})['then'](respondWithFilteredResult(_0x4e010a,_0x420f71))[_0xc368('0x20')](handleError(_0x4e010a,null));};exports[_0xc368('0x48')]=function(_0x163055,_0x13d08d){var _0x3179a4={'raw':!![],'where':{'id':_0x163055['params']['id']}},_0x6ece1f={};_0x6ece1f[_0xc368('0x33')]=_[_0xc368('0x36')](db[_0xc368('0x2e')]['rawAttributes']);_0x6ece1f[_0xc368('0x35')]=_[_0xc368('0x36')](_0x163055[_0xc368('0x35')]);_0x6ece1f[_0xc368('0x37')]=_[_0xc368('0x38')](_0x6ece1f[_0xc368('0x33')],_0x6ece1f[_0xc368('0x35')]);_0x3179a4[_0xc368('0x39')]=_['intersection'](_0x6ece1f[_0xc368('0x33')],qs[_0xc368('0x3a')](_0x163055[_0xc368('0x35')][_0xc368('0x3a')]));_0x3179a4['attributes']=_0x3179a4[_0xc368('0x39')][_0xc368('0x49')]?_0x3179a4['attributes']:_0x6ece1f[_0xc368('0x33')];if(_0x163055[_0xc368('0x35')][_0xc368('0x44')]){_0x3179a4['include']=[{'all':!![]}];}_0x3179a4=_['merge']({},_0x3179a4,_0x163055[_0xc368('0x43')]);return db[_0xc368('0x2e')][_0xc368('0x4a')](_0x3179a4)[_0xc368('0x15')](handleEntityNotFound(_0x13d08d,null))['then'](respondWithResult(_0x13d08d,null))[_0xc368('0x20')](handleError(_0x13d08d,null));};exports[_0xc368('0x27')]=function(_0x55bbe3,_0x1e9b60){if(_0x55bbe3[_0xc368('0x4b')]['id']){delete _0x55bbe3[_0xc368('0x4b')]['id'];}return db[_0xc368('0x2e')][_0xc368('0x4a')]({'where':{'id':_0x55bbe3[_0xc368('0x4c')]['id']}})[_0xc368('0x15')](handleEntityNotFound(_0x1e9b60,null))[_0xc368('0x15')](saveUpdates(_0x55bbe3['body'],null))[_0xc368('0x15')](respondWithResult(_0x1e9b60,null))[_0xc368('0x20')](handleError(_0x1e9b60,null));};exports['destroy']=function(_0x200b8b,_0x1dd784){return db['MailMessage']['find']({'where':{'id':_0x200b8b[_0xc368('0x4c')]['id']}})[_0xc368('0x15')](handleEntityNotFound(_0x1dd784,null))[_0xc368('0x15')](removeEntity(_0x1dd784,null))[_0xc368('0x20')](handleError(_0x1dd784,null));};exports[_0xc368('0x4d')]=function(_0x22e61e,_0x267ccf){return db[_0xc368('0x2e')]['describe']()[_0xc368('0x15')](respondWithResult(_0x267ccf,null))['catch'](handleError(_0x267ccf,null));};exports[_0xc368('0x4e')]=function(_0x3a6043,_0x2b6611){return db[_0xc368('0x2e')][_0xc368('0x4e')](_0x3a6043['body'])[_0xc368('0x15')](function(_0x10cc53){if(_0x10cc53){if(_0x10cc53[_0xc368('0x4f')]===_0xc368('0x50')&&!_0x10cc53[_0xc368('0x51')]){var _0x6681f7,_0x2f410e,_0x517152;if(_0x3a6043[_0xc368('0x4b')]['to']){_0x2f410e=_0x3a6043[_0xc368('0x4b')]['to'][_0xc368('0x52')](',')[0x0];}return db[_0xc368('0x53')][_0xc368('0x54')]({'where':{'id':_0x10cc53['MailAccountId']},'include':[{'model':db[_0xc368('0x55')],'as':_0xc368('0x56'),'include':[{'model':db[_0xc368('0x57')],'as':_0xc368('0x58'),'where':{'email':_0x2f410e},'limit':0x1,'order':[[_0xc368('0x59'),_0xc368('0x5a')]]}]},{'model':db[_0xc368('0x5b')],'as':'Smtp','raw':!![]}]})[_0xc368('0x15')](function(_0x2f346d){_0x6681f7=_0x2f346d;if(_0x6681f7&&_0x6681f7[_0xc368('0x5c')]){var _0x7db3aa={'tls':{'rejectUnauthorized':![]}};if(_[_0xc368('0x5d')](_0x6681f7[_0xc368('0x5c')]['service'])){_0x7db3aa[_0xc368('0x5e')]=_0x6681f7[_0xc368('0x5c')]['host'];_0x7db3aa[_0xc368('0x5f')]=_0x6681f7['Smtp'][_0xc368('0x5f')];_0x7db3aa[_0xc368('0x60')]=_0x6681f7[_0xc368('0x5c')][_0xc368('0x60')];if(_0x6681f7[_0xc368('0x5c')]['authentication']){_0x7db3aa[_0xc368('0x61')]={'user':_0x6681f7[_0xc368('0x5c')][_0xc368('0x62')],'pass':_0x6681f7[_0xc368('0x5c')][_0xc368('0x63')]};}}else{_0x7db3aa[_0xc368('0x64')]=_0x6681f7[_0xc368('0x5c')][_0xc368('0x64')];_0x7db3aa[_0xc368('0x61')]={'user':_0x6681f7[_0xc368('0x5c')]['user'],'pass':_0x6681f7[_0xc368('0x5c')][_0xc368('0x63')]};_0x7db3aa[_0xc368('0x60')]=_0x6681f7[_0xc368('0x5c')][_0xc368('0x60')];}if(_0x3a6043['body'][_0xc368('0x65')]&&_0x3a6043['body'][_0xc368('0x65')]['length']){for(var _0x5cf467=0x0;_0x5cf467<_0x3a6043[_0xc368('0x4b')]['attachments'][_0xc368('0x49')];_0x5cf467+=0x1){_0x3a6043[_0xc368('0x4b')][_0xc368('0x65')][_0x5cf467]={'filename':_0x3a6043[_0xc368('0x4b')][_0xc368('0x65')][_0x5cf467][_0xc368('0x34')],'path':path['join'](config['root'],_0xc368('0x66'),_0x3a6043[_0xc368('0x4b')][_0xc368('0x65')][_0x5cf467]['basename'])};}}_0x517152={'account':_0x7db3aa,'message':_0x3a6043[_0xc368('0x4b')]};return;}})['then'](function(){if(_0x6681f7['List']){if(_0x6681f7[_0xc368('0x56')][_0xc368('0x58')][_0xc368('0x49')]){return _0x6681f7[_0xc368('0x56')][_0xc368('0x58')][0x0];}else{return db[_0xc368('0x57')][_0xc368('0x4e')](_[_0xc368('0xc')](_0x3a6043[_0xc368('0x4b')],{'firstName':_0x3a6043['body']['to'],'email':_0x3a6043[_0xc368('0x4b')]['to'],'phone':_0x3a6043[_0xc368('0x4b')]['to'],'ListId':_0x6681f7[_0xc368('0x67')]}));}}else{throw new Error(_0xc368('0x68'));}})[_0xc368('0x15')](function(){if(_0x517152){return respondWithRpcPromise(_0xc368('0x69'),_0xc368('0x6a'),_0x517152,client9003)['then'](function(_0x138bb9){return _0x10cc53[_0xc368('0x27')]({'read':!![],'messageId':_0x138bb9[_0xc368('0x6b')],'sentAt':moment()[_0xc368('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xc368('0x20')](function(_0x873e37){logger[_0xc368('0x1b')]('%s',JSON[_0xc368('0x1a')](_0x873e37));return _0x10cc53;});}return _0x10cc53;});}return _0x10cc53;}})[_0xc368('0x15')](respondWithResult(_0x2b6611,0xc9))[_0xc368('0x20')](handleError(_0x2b6611,null));};exports[_0xc368('0x6d')]=function(_0xc7f5d3,_0x3ffa6d){var _0x58fe23={'agent':{},'channel':_0xc368('0x6e')};if(_0xc7f5d3[_0xc368('0x4b')]['id']){delete _0xc7f5d3[_0xc368('0x4b')]['id'];}_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x6f')]=!![];_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x70')]=moment()[_0xc368('0x6c')](_0xc368('0x71'));_0xc7f5d3['body']['UserId']=_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x72')]||_0xc7f5d3[_0xc368('0x62')]['id'];_0x58fe23['agent']['id']=_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x72')];return db['MailMessage'][_0xc368('0x4a')]({'where':{'id':_0xc7f5d3[_0xc368('0x4c')]['id'],'UserId':null}})[_0xc368('0x15')](handleEntityNotFound(_0x3ffa6d,null))[_0xc368('0x15')](saveUpdates(_0xc7f5d3['body'],null))[_0xc368('0x15')](function(_0x56d635){if(_0x56d635){_0x58fe23[_0xc368('0x1d')]=_0x56d635[_0xc368('0x73')]({'plain':!![]});return db[_0xc368('0x74')][_0xc368('0x4a')]({'where':{'id':_0x56d635[_0xc368('0x75')]}});}return null;})[_0xc368('0x15')](handleEntityNotFound(_0x3ffa6d,null))[_0xc368('0x15')](function(_0x264009){if(_0x264009){return _0x264009[_0xc368('0x27')]({'UserId':_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x72')],'read1stAt':_[_0xc368('0x5d')](_0x264009['read1stAt'])?moment()[_0xc368('0x6c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x4135b2){if(_0x4135b2){_0x58fe23[_0xc368('0x76')]=_0x4135b2[_0xc368('0x73')]({'plain':!![]});interaction_log[_0xc368('0x1e')](_0xc368('0x77'),_0xc7f5d3[_0xc368('0x62')]['id'],_0xc7f5d3[_0xc368('0x62')][_0xc368('0x34')],_0xc7f5d3['user']['role'],_0x58fe23['interaction']['id'],_0xc7f5d3['body']?JSON[_0xc368('0x1a')](_0xc7f5d3[_0xc368('0x4b')]):'null');return respondWithRpcPromise(_0xc368('0x78'),_0xc368('0x79'),_0x58fe23);}return null;})[_0xc368('0x15')](function(_0x3eca9a){var _0x376d86=_0xc368('0x7a')+_0x3eca9a[_0xc368('0x1d')][_0xc368('0x7b')];return db[_0xc368('0x7c')][_0xc368('0x35')](_0x376d86,{'type':db[_0xc368('0x7d')][_0xc368('0x7e')]['SELECT'],'raw':!![]})[_0xc368('0x15')](function(_0x14d8d0){return _0x14d8d0;});})['then'](function(_0x4c48d2){if(_0x4c48d2){_0x58fe23[_0xc368('0x1d')]['contact']=_0x4c48d2[0x0];if(!_0xc7f5d3[_0xc368('0x4b')]['UserId'])return;return db['User'][_0xc368('0x4a')]({'where':{'id':_0xc7f5d3['body'][_0xc368('0x72')],'role':_0xc368('0x7f')},'attributes':['id',_0xc368('0x34'),_0xc368('0x80'),'email',_0xc368('0x81')],'raw':!![]});}return null;})[_0xc368('0x15')](function(_0x60e3a1){if(!_0x60e3a1)return null;_0x58fe23[_0xc368('0x1d')]['agent']=_0x60e3a1;return _0x58fe23;})[_0xc368('0x15')](function(_0x5ee8b7){if(_0x5ee8b7){if(_0xc7f5d3[_0xc368('0x4b')][_0xc368('0x82')]){_0x58fe23[_0xc368('0x1d')]['interface']=util[_0xc368('0x6c')]('SIP/%s',_0xc7f5d3['user'][_0xc368('0x34')]);_0x58fe23['message']['channel']=_0x58fe23[_0xc368('0x83')];_0x58fe23[_0xc368('0x1d')][_0xc368('0x84')]=_0x58fe23[_0xc368('0x83')];_0x58fe23[_0xc368('0x1d')][_0xc368('0x85')]=_0xc368('0x6d');_0x58fe23[_0xc368('0x1d')][_0xc368('0x4b')]=htmlToText[_0xc368('0x86')](_0x58fe23['message'][_0xc368('0x4b')]);return respondWithRpcPromise('EventManager',_0xc368('0x87'),{'event':_0xc368('0x88'),'message':_0x58fe23[_0xc368('0x1d')]},client9002)[_0xc368('0x15')](function(){return _0x58fe23;});}return _0x58fe23;}return null;})[_0xc368('0x15')](respondWithResult(_0x3ffa6d,null))[_0xc368('0x20')](handleError(_0x3ffa6d,null));};exports['reject']=function(_0x4bbf28,_0x3714e6){var _0x2e00fb={'agent':{},'channel':'mail'};if(_0x4bbf28[_0xc368('0x4b')]['id']){delete _0x4bbf28[_0xc368('0x4b')]['id'];}_0x4bbf28['body'][_0xc368('0x72')]=_0x4bbf28[_0xc368('0x4b')]['UserId']||_0x4bbf28[_0xc368('0x62')]['id'];_0x2e00fb['agent']['id']=_0x4bbf28['body'][_0xc368('0x72')];return db[_0xc368('0x2e')]['find']({'where':{'id':_0x4bbf28['params']['id'],'UserId':null}})[_0xc368('0x15')](handleEntityNotFound(_0x3714e6,null))[_0xc368('0x15')](function(_0x3e72d6){if(_0x3e72d6){_0x2e00fb[_0xc368('0x1d')]=_0x3e72d6[_0xc368('0x73')]({'plain':!![]});return db[_0xc368('0x74')][_0xc368('0x4a')]({'where':{'id':_0x3e72d6[_0xc368('0x75')]}});}return null;})[_0xc368('0x15')](handleEntityNotFound(_0x3714e6,null))[_0xc368('0x15')](function(_0x46c20d){if(_0x46c20d){_0x2e00fb[_0xc368('0x76')]=_0x46c20d[_0xc368('0x73')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x4bbf28[_0xc368('0x62')]['id'],_0x4bbf28[_0xc368('0x62')]['name'],_0x4bbf28[_0xc368('0x62')][_0xc368('0x89')],_0x2e00fb[_0xc368('0x76')]['id'],_0x4bbf28['body']?JSON[_0xc368('0x1a')](_0x4bbf28[_0xc368('0x4b')]):_0xc368('0x8a'));return respondWithRpcPromise(_0xc368('0x8b'),_0xc368('0x8c'),_0x2e00fb);}return null;})['then'](function(_0x2bc4f9){var _0x257305=_0xc368('0x7a')+_0x2bc4f9[_0xc368('0x1d')][_0xc368('0x7b')];return db[_0xc368('0x7c')][_0xc368('0x35')](_0x257305,{'type':db[_0xc368('0x7d')][_0xc368('0x7e')][_0xc368('0x8d')],'raw':!![]})[_0xc368('0x15')](function(_0x2897c2){return _0x2897c2;});})[_0xc368('0x15')](function(_0xcce20b){if(_0xcce20b){_0x2e00fb[_0xc368('0x1d')][_0xc368('0x8e')]=_0xcce20b[0x0];if(!_0x4bbf28[_0xc368('0x4b')][_0xc368('0x72')])return;return db[_0xc368('0x8f')][_0xc368('0x4a')]({'where':{'id':_0x4bbf28[_0xc368('0x4b')]['UserId'],'role':_0xc368('0x7f')},'attributes':['id','name',_0xc368('0x80'),'email',_0xc368('0x81')],'raw':!![]});}return null;})[_0xc368('0x15')](function(_0x533067){if(!_0x533067)return null;_0x2e00fb[_0xc368('0x1d')][_0xc368('0x7f')]=_0x533067;return _0x2e00fb;})[_0xc368('0x15')](function(_0x496076){if(_0x496076){_0x496076[_0xc368('0x1d')][_0xc368('0x90')]=util[_0xc368('0x6c')]('SIP/%s',_0x4bbf28[_0xc368('0x62')]['name']);_0x496076[_0xc368('0x1d')][_0xc368('0x83')]=_0x2e00fb[_0xc368('0x83')];_0x496076['message'][_0xc368('0x84')]=_0x2e00fb[_0xc368('0x83')];_0x496076[_0xc368('0x1d')][_0xc368('0x85')]='reject';_0x496076[_0xc368('0x1d')][_0xc368('0x4b')]=htmlToText[_0xc368('0x86')](_0x2e00fb[_0xc368('0x1d')][_0xc368('0x4b')]);respondWithRpcPromise(_0xc368('0x87'),_0xc368('0x87'),{'event':_0xc368('0x91'),'message':_0x496076['message']},client9002);return _0x2e00fb;}return null;})[_0xc368('0x15')](respondWithResult(_0x3714e6,null))['catch'](handleError(_0x3714e6,null));};exports[_0xc368('0x92')]=function(_0x1e5b01,_0x6dcaa2){var _0x208f1d=moment()[_0xc368('0x93')]()[_0xc368('0x94')]();var _0x1864b0=path['join'](config[_0xc368('0x95')],_0xc368('0x96'),_0xc368('0x97'),'tmp');var _0x4d1fcc=path[_0xc368('0x98')](config[_0xc368('0x95')],_0xc368('0x96'),_0xc368('0x97'),_0xc368('0x65'));var _0x30a91d=util['format'](_0xc368('0x99'),_0x208f1d);return db['MailMessage'][_0xc368('0x4a')]({'where':{'id':_0x1e5b01['params']['id']},'attributes':['id',_0xc368('0x4b'),_0xc368('0x9a'),'to','cc',_0xc368('0x9b'),_0xc368('0x9c'),_0xc368('0x9d')],'include':_0x1e5b01['query'][_0xc368('0x65')]?[{'model':db['Attachment'],'as':_0xc368('0x9e')}]:undefined})[_0xc368('0x15')](handleEntityNotFound(_0x6dcaa2,null))['then'](function(_0xd339d8){if(_0xd339d8){var _0x4cfd69=_0xd339d8;var _0x4da879={'from':_0x4cfd69[_0xc368('0x9a')],'to':_0x4cfd69['to'],'subject':_0x4cfd69['subject'],'html':_0x4cfd69['body'],'headers':{'Date':moment(_0x4cfd69[_0xc368('0x9d')])[_0xc368('0x6c')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0xd339d8['cc']){_0x4da879[_0xc368('0x9f')]['Cc']=_0xd339d8['cc'];}if(_0xd339d8[_0xc368('0x9b')]){_0x4da879['headers'][_0xc368('0xa0')]=_0xd339d8[_0xc368('0x9b')];}return new BPromise(function(_0x8fa167,_0x54a01e){if(_0xd339d8[_0xc368('0x9e')]){for(var _0x566347=0x0;_0x566347<_0xd339d8[_0xc368('0x9e')][_0xc368('0x49')];_0x566347++){var _0x480157=_0xd339d8[_0xc368('0x9e')][_0x566347];var _0x28b4c7=path['join'](_0x4d1fcc,_0x480157['basename']);if(fs[_0xc368('0xa1')](_0x28b4c7)){_0x4da879[_0xc368('0x65')][_0xc368('0xa2')]({'name':_0x480157['name'],'contentType':_0x480157[_0xc368('0x31')],'data':fs[_0xc368('0xa3')](_0x28b4c7)});}}}emlformat[_0xc368('0xa4')](_0x4da879,function(_0x4a6e2c,_0x47f83c){if(_0x4a6e2c)return _0x54a01e(_0x4a6e2c);fs[_0xc368('0xa5')](path[_0xc368('0x98')](_0x1864b0,_0x30a91d),_0x47f83c);return _0x8fa167(_0x47f83c);});});}})['then'](function(_0x1e5b10){if(_0x1e5b10){return _0x6dcaa2[_0xc368('0x92')](path[_0xc368('0x98')](_0x1864b0,_0x30a91d),_0x30a91d,function(_0x513674){if(!_0x513674)fs['unlinkSync'](path[_0xc368('0x98')](_0x1864b0,_0x30a91d));});}})['catch'](handleError(_0x6dcaa2,null));};
\ No newline at end of file
index 5ab8250..d3bec23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3601=['hasOwnProperty','exports','setMaxListeners','update','remove','emit'];(function(_0x42f9be,_0x170990){var _0x10a803=function(_0x43deda){while(--_0x43deda){_0x42f9be['push'](_0x42f9be['shift']());}};_0x10a803(++_0x170990);}(_0x3601,0x1ee));var _0x1360=function(_0x24b964,_0x5d8ac3){_0x24b964=_0x24b964-0x0;var _0x349fb6=_0x3601[_0x24b964];return _0x349fb6;};'use strict';var EventEmitter=require('events');var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x1360('0x0')](0x0);var events={'afterCreate':'save','afterUpdate':_0x1360('0x1'),'afterDestroy':_0x1360('0x2')};function emitEvent(_0x3ba108){return function(_0x2f5736,_0x588ded,_0x2f02af){MailMessageEvents[_0x1360('0x3')](_0x3ba108+':'+_0x2f5736['id'],_0x2f5736);MailMessageEvents[_0x1360('0x3')](_0x3ba108,_0x2f5736);_0x2f02af(null);};}for(var e in events){if(events[_0x1360('0x4')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module[_0x1360('0x5')]=MailMessageEvents;
\ No newline at end of file
+var _0x02d9=['setMaxListeners','save','remove','emit','hasOwnProperty','../../mysqldb','MailMessage'];(function(_0x1a9479,_0x427a74){var _0x40964b=function(_0x26e6ea){while(--_0x26e6ea){_0x1a9479['push'](_0x1a9479['shift']());}};_0x40964b(++_0x427a74);}(_0x02d9,0x194));var _0x902d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x02d9[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0x902d('0x0'))['db'][_0x902d('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x902d('0x2')](0x0);var events={'afterCreate':_0x902d('0x3'),'afterUpdate':'update','afterDestroy':_0x902d('0x4')};function emitEvent(_0x2a4b41){return function(_0x3a4258,_0x40e5fc,_0x294f50){MailMessageEvents['emit'](_0x2a4b41+':'+_0x3a4258['id'],_0x3a4258);MailMessageEvents[_0x902d('0x5')](_0x2a4b41,_0x3a4258);_0x294f50(null);};}for(var e in events){if(events[_0x902d('0x6')](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index 963963b..3e2904a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ed=['MailInteraction','findOne','MailInteractionId','then','createdAt','catch','error','utf8mb4','../../config/logger','moment','bluebird','request-promise','html-to-text','path','rimraf','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','FULLTEXT','body','plainBody','models','direction','toLowerCase','out','isNil','UserId'];(function(_0x41aa13,_0x1fb2d7){var _0x527eaf=function(_0x4d00b5){while(--_0x4d00b5){_0x41aa13['push'](_0x41aa13['shift']());}};_0x527eaf(++_0x1fb2d7);}(_0x15ed,0xda));var _0xd15e=function(_0x77d286,_0x1ddc6d){_0x77d286=_0x77d286-0x0;var _0x5446a5=_0x15ed[_0x77d286];return _0x5446a5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd15e('0x0'))('api');var moment=require(_0xd15e('0x1'));var BPromise=require(_0xd15e('0x2'));var rp=require(_0xd15e('0x3'));var htmlToText=require(_0xd15e('0x4'));var fs=require('fs');var path=require(_0xd15e('0x5'));var rimraf=require(_0xd15e('0x6'));var config=require('../../config/environment');var attributes=require('./mailMessage.attributes');module[_0xd15e('0x7')]=function(_0xd9aadb,_0x38cfbe){return _0xd9aadb[_0xd15e('0x8')](_0xd15e('0x9'),attributes,{'tableName':_0xd15e('0xa'),'paranoid':![],'indexes':[{'name':_0xd15e('0xb'),'fields':[_0xd15e('0xb')]},{'name':_0xd15e('0xc'),'fields':['plainBody','subject'],'type':_0xd15e('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x195606,_0x4951f4,_0x3c6df8){if(_0x195606[_0xd15e('0xe')]){_0x195606[_0xd15e('0xf')]=htmlToText['fromString'](_0x195606[_0xd15e('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x3c6df8(null,_0x4951f4);},'afterCreate':function(_0x4f660e,_0x582297,_0x318a28){var _0x29d85b=_0xd9aadb[_0xd15e('0x10')];var _0xf5b4ed=_0x4f660e['get']({'plain':!![]});if(_0xf5b4ed[_0xd15e('0x11')][_0xd15e('0x12')]()==='in'||_0xf5b4ed[_0xd15e('0x11')][_0xd15e('0x12')]()===_0xd15e('0x13')&&!_0xf5b4ed['secret']&&!_[_0xd15e('0x14')](_0xf5b4ed[_0xd15e('0x15')])){_0x29d85b[_0xd15e('0x16')][_0xd15e('0x17')]({'where':{'id':_0xf5b4ed[_0xd15e('0x18')]}})[_0xd15e('0x19')](function(_0x282d11){if(_0x282d11){_0x282d11['update']({'lastMsgAt':_0xf5b4ed[_0xd15e('0x1a')],'lastMsgDirection':_0xf5b4ed['direction']['toLowerCase']()});}})[_0xd15e('0x1b')](function(_0x46032d){console[_0xd15e('0x1c')](_0x46032d);});}_0x318a28();}},'charset':_0xd15e('0x1d'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x64b1=['body','fromString','models','get','direction','toLowerCase','out','isNil','UserId','MailInteraction','then','catch','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','subject','FULLTEXT'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x64b1,0xed));var _0x164b=function(_0x3349e0,_0x28dedd){_0x3349e0=_0x3349e0-0x0;var _0x952ab3=_0x64b1[_0x3349e0];return _0x952ab3;};'use strict';var _=require(_0x164b('0x0'));var util=require('util');var logger=require(_0x164b('0x1'))('api');var moment=require(_0x164b('0x2'));var BPromise=require(_0x164b('0x3'));var rp=require(_0x164b('0x4'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require('path');var rimraf=require(_0x164b('0x5'));var config=require(_0x164b('0x6'));var attributes=require(_0x164b('0x7'));module[_0x164b('0x8')]=function(_0x1ad726,_0x1279ac){return _0x1ad726[_0x164b('0x9')](_0x164b('0xa'),attributes,{'tableName':_0x164b('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x164b('0xc')]},{'name':'fti_mail_messages','fields':['plainBody',_0x164b('0xd')],'type':_0x164b('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3049e5,_0x121531,_0x411843){if(_0x3049e5[_0x164b('0xf')]){_0x3049e5['plainBody']=htmlToText[_0x164b('0x10')](_0x3049e5[_0x164b('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x411843(null,_0x121531);},'afterCreate':function(_0x13e385,_0x256b52,_0xf6cc8c){var _0xa3ff34=_0x1ad726[_0x164b('0x11')];var _0xd59009=_0x13e385[_0x164b('0x12')]({'plain':!![]});if(_0xd59009[_0x164b('0x13')][_0x164b('0x14')]()==='in'||_0xd59009[_0x164b('0x13')][_0x164b('0x14')]()===_0x164b('0x15')&&!_0xd59009['secret']&&!_[_0x164b('0x16')](_0xd59009[_0x164b('0x17')])){_0xa3ff34[_0x164b('0x18')]['findOne']({'where':{'id':_0xd59009['MailInteractionId']}})[_0x164b('0x19')](function(_0x3d491a){if(_0x3d491a){_0x3d491a['update']({'lastMsgAt':_0xd59009['createdAt'],'lastMsgDirection':_0xd59009[_0x164b('0x13')][_0x164b('0x14')]()});}})[_0x164b('0x1a')](function(_0x42052f){console['error'](_0x42052f);});}_0xf6cc8c();}},'charset':'utf8mb4','collate':_0x164b('0x1b')});};
\ No newline at end of file
index 0f04bbb..117423b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1eba=['jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','then','info','request\x20sent','debug','error','MailMessage,\x20%s,\x20%s','message','result','catch','CreateMailMessage','MailMessage','body','options','raw','stringify','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x172133,_0x10246b){_0x172133=_0x172133-0x0;var _0x2460e5=_0x1eba[_0x172133];return _0x2460e5;};'use strict';var _=require(_0xa1eb('0x0'));var util=require(_0xa1eb('0x1'));var moment=require(_0xa1eb('0x2'));var BPromise=require(_0xa1eb('0x3'));var rs=require(_0xa1eb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa1eb('0x5'));var logger=require(_0xa1eb('0x6'))(_0xa1eb('0x7'));var config=require(_0xa1eb('0x8'));var jayson=require(_0xa1eb('0x9'));var client=jayson[_0xa1eb('0xa')][_0xa1eb('0xb')]({'port':0x232a});config[_0xa1eb('0xc')]=_[_0xa1eb('0xd')](config[_0xa1eb('0xc')],{'host':_0xa1eb('0xe'),'port':0x18eb});var socket=require(_0xa1eb('0xf'))(new Redis(config['redis']));require(_0xa1eb('0x10'))['register'](socket);function respondWithRpcPromise(_0x219802,_0x54cdad,_0x3f53ff){return new BPromise(function(_0x5d7101,_0x41a7bc){return client['request'](_0x219802,_0x3f53ff)[_0xa1eb('0x11')](function(_0x325d13){logger[_0xa1eb('0x12')]('MailMessage,\x20%s,\x20%s',_0x54cdad,_0xa1eb('0x13'));logger[_0xa1eb('0x14')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x54cdad,_0xa1eb('0x13'),JSON['stringify'](_0x325d13));if(_0x325d13['error']){if(_0x325d13[_0xa1eb('0x15')]['code']===0x1f4){logger[_0xa1eb('0x15')](_0xa1eb('0x16'),_0x54cdad,_0x325d13[_0xa1eb('0x15')][_0xa1eb('0x17')]);return _0x41a7bc(_0x325d13[_0xa1eb('0x15')][_0xa1eb('0x17')]);}logger[_0xa1eb('0x15')](_0xa1eb('0x16'),_0x54cdad,_0x325d13[_0xa1eb('0x15')]['message']);return _0x5d7101(_0x325d13[_0xa1eb('0x15')]['message']);}else{logger[_0xa1eb('0x12')](_0xa1eb('0x16'),_0x54cdad,_0xa1eb('0x13'));_0x5d7101(_0x325d13[_0xa1eb('0x18')]['message']);}})[_0xa1eb('0x19')](function(_0x22cd44){logger[_0xa1eb('0x15')](_0xa1eb('0x16'),_0x54cdad,_0x22cd44);_0x41a7bc(_0x22cd44);});});}exports[_0xa1eb('0x1a')]=function(_0x3b8607){var _0x2143e6=this;return new Promise(function(_0x166f7f,_0x4fc14a){return db[_0xa1eb('0x1b')]['create'](_0x3b8607[_0xa1eb('0x1c')],{'raw':_0x3b8607[_0xa1eb('0x1d')]?_0x3b8607[_0xa1eb('0x1d')][_0xa1eb('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x539634){logger[_0xa1eb('0x12')](_0xa1eb('0x1a'),_0x3b8607);logger['debug'](_0xa1eb('0x1a'),_0x3b8607,JSON[_0xa1eb('0x1f')](_0x539634));_0x166f7f(_0x539634);})[_0xa1eb('0x19')](function(_0xa6b20c){logger[_0xa1eb('0x15')](_0xa1eb('0x1a'),_0xa6b20c[_0xa1eb('0x17')],_0x3b8607);_0x4fc14a(_0x2143e6[_0xa1eb('0x15')](0x1f4,_0xa6b20c[_0xa1eb('0x17')]));});});};
\ No newline at end of file
+var _0xd4f4=['CreateMailMessage','create','body','options','raw','debug','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x3efa79,_0xe4f028){var _0x53e599=function(_0x374807){while(--_0x374807){_0x3efa79['push'](_0x3efa79['shift']());}};_0x53e599(++_0xe4f028);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x4f4f55,_0x21d475){_0x4f4f55=_0x4f4f55-0x0;var _0x51c8a7=_0xd4f4[_0x4f4f55];return _0x51c8a7;};'use strict';var _=require(_0x4d4f('0x0'));var util=require(_0x4d4f('0x1'));var moment=require(_0x4d4f('0x2'));var BPromise=require(_0x4d4f('0x3'));var rs=require(_0x4d4f('0x4'));var fs=require('fs');var Redis=require(_0x4d4f('0x5'));var db=require(_0x4d4f('0x6'))['db'];var utils=require(_0x4d4f('0x7'));var logger=require(_0x4d4f('0x8'))(_0x4d4f('0x9'));var config=require(_0x4d4f('0xa'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x4d4f('0xb')]=_[_0x4d4f('0xc')](config[_0x4d4f('0xb')],{'host':_0x4d4f('0xd'),'port':0x18eb});var socket=require(_0x4d4f('0xe'))(new Redis(config[_0x4d4f('0xb')]));require(_0x4d4f('0xf'))[_0x4d4f('0x10')](socket);function respondWithRpcPromise(_0x385597,_0xba5200,_0x20db50){return new BPromise(function(_0x88b592,_0x128d39){return client[_0x4d4f('0x11')](_0x385597,_0x20db50)[_0x4d4f('0x12')](function(_0x28fb3e){logger[_0x4d4f('0x13')](_0x4d4f('0x14'),_0xba5200,'request\x20sent');logger['debug']('MailMessage,\x20%s,\x20%s,\x20%s',_0xba5200,_0x4d4f('0x15'),JSON[_0x4d4f('0x16')](_0x28fb3e));if(_0x28fb3e['error']){if(_0x28fb3e[_0x4d4f('0x17')][_0x4d4f('0x18')]===0x1f4){logger[_0x4d4f('0x17')]('MailMessage,\x20%s,\x20%s',_0xba5200,_0x28fb3e[_0x4d4f('0x17')][_0x4d4f('0x19')]);return _0x128d39(_0x28fb3e[_0x4d4f('0x17')]['message']);}logger[_0x4d4f('0x17')]('MailMessage,\x20%s,\x20%s',_0xba5200,_0x28fb3e[_0x4d4f('0x17')][_0x4d4f('0x19')]);return _0x88b592(_0x28fb3e[_0x4d4f('0x17')]['message']);}else{logger[_0x4d4f('0x13')](_0x4d4f('0x14'),_0xba5200,'request\x20sent');_0x88b592(_0x28fb3e['result']['message']);}})['catch'](function(_0x5eebec){logger[_0x4d4f('0x17')](_0x4d4f('0x14'),_0xba5200,_0x5eebec);_0x128d39(_0x5eebec);});});}exports[_0x4d4f('0x1a')]=function(_0x3566a5){var _0x5d7b1f=this;return new Promise(function(_0x5b2863,_0x1e1ae2){return db['MailMessage'][_0x4d4f('0x1b')](_0x3566a5[_0x4d4f('0x1c')],{'raw':_0x3566a5[_0x4d4f('0x1d')]?_0x3566a5[_0x4d4f('0x1d')][_0x4d4f('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x570520){logger[_0x4d4f('0x13')]('CreateMailMessage',_0x3566a5);logger[_0x4d4f('0x1f')](_0x4d4f('0x1a'),_0x3566a5,JSON[_0x4d4f('0x16')](_0x570520));_0x5b2863(_0x570520);})[_0x4d4f('0x20')](function(_0xf3f7a4){logger['error'](_0x4d4f('0x1a'),_0xf3f7a4[_0x4d4f('0x19')],_0x3566a5);_0x1e1ae2(_0x5d7b1f[_0x4d4f('0x17')](0x1f4,_0xf3f7a4[_0x4d4f('0x19')]));});});};
\ No newline at end of file
index ba8cf0d..ae95021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa70f=['update','emit','register','length','mailMessage:'];(function(_0x369151,_0x179f72){var _0x4292d5=function(_0x330422){while(--_0x330422){_0x369151['push'](_0x369151['shift']());}};_0x4292d5(++_0x179f72);}(_0xa70f,0xb4));var _0xfa70=function(_0x377edb,_0x154849){_0x377edb=_0x377edb-0x0;var _0x632fa3=_0xa70f[_0x377edb];return _0x632fa3;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=['save','remove',_0xfa70('0x0')];function createListener(_0xdd3582,_0x423c06){return function(_0x22a1e4){_0x423c06[_0xfa70('0x1')](_0xdd3582,_0x22a1e4);};}function removeListener(_0x49c1ad,_0x5c02b5){return function(){MailMessageEvents['removeListener'](_0x49c1ad,_0x5c02b5);};}exports[_0xfa70('0x2')]=function(_0x276de4){for(var _0xb80191=0x0,_0x2fd406=events[_0xfa70('0x3')];_0xb80191<_0x2fd406;_0xb80191++){var _0x527aa1=events[_0xb80191];var _0x5c5bb4=createListener(_0xfa70('0x4')+_0x527aa1,_0x276de4);MailMessageEvents['on'](_0x527aa1,_0x5c5bb4);}};
\ No newline at end of file
+var _0xae79=['removeListener','register','mailMessage:','./mailMessage.events','save','remove','update','emit'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0xae79,0x1d3));var _0x9ae7=function(_0x5aa70d,_0xa17184){_0x5aa70d=_0x5aa70d-0x0;var _0x1cbad0=_0xae79[_0x5aa70d];return _0x1cbad0;};'use strict';var MailMessageEvents=require(_0x9ae7('0x0'));var events=[_0x9ae7('0x1'),_0x9ae7('0x2'),_0x9ae7('0x3')];function createListener(_0x1f75bc,_0x2cc556){return function(_0x26b6a7){_0x2cc556[_0x9ae7('0x4')](_0x1f75bc,_0x26b6a7);};}function removeListener(_0x988f5e,_0x27817e){return function(){MailMessageEvents[_0x9ae7('0x5')](_0x988f5e,_0x27817e);};}exports[_0x9ae7('0x6')]=function(_0x3e98cf){for(var _0x396863=0x0,_0x409d34=events['length'];_0x396863<_0x409d34;_0x396863++){var _0x2761c2=events[_0x396863];var _0x47774e=createListener(_0x9ae7('0x7')+_0x2761c2,_0x3e98cf);MailMessageEvents['on'](_0x2761c2,_0x47774e);}};
\ No newline at end of file
index 924f10a..030663b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d3=['../../components/interaction/service','./mailQueue.controller','get','index','/describe','isAuthenticated','describe','/:id/members','getMembers','getTeams','/:id/users','post','create','addTeams','addAgents','put','/:id','update','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xd8b3cb,_0x2c26db){var _0x273a8f=function(_0x124e48){while(--_0x124e48){_0xd8b3cb['push'](_0xd8b3cb['shift']());}};_0x273a8f(++_0x2c26db);}(_0xd6d3,0x1f0));var _0x3d6d=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xd6d3[_0x413feb];return _0x40ee88;};'use strict';var multer=require(_0x3d6d('0x0'));var util=require(_0x3d6d('0x1'));var path=require(_0x3d6d('0x2'));var timeout=require(_0x3d6d('0x3'));var express=require(_0x3d6d('0x4'));var router=express[_0x3d6d('0x5')]();var fs_extra=require(_0x3d6d('0x6'));var auth=require(_0x3d6d('0x7'));var interaction=require(_0x3d6d('0x8'));var config=require('../../config/environment');var controller=require(_0x3d6d('0x9'));router[_0x3d6d('0xa')]('/',auth['isAuthenticated'](),controller[_0x3d6d('0xb')]);router['get'](_0x3d6d('0xc'),auth[_0x3d6d('0xd')](),controller[_0x3d6d('0xe')]);router[_0x3d6d('0xa')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x3d6d('0xa')](_0x3d6d('0xf'),auth[_0x3d6d('0xd')](),controller[_0x3d6d('0x10')]);router['get']('/:id/teams',auth[_0x3d6d('0xd')](),controller[_0x3d6d('0x11')]);router[_0x3d6d('0xa')](_0x3d6d('0x12'),auth[_0x3d6d('0xd')](),controller['getAgents']);router[_0x3d6d('0x13')]('/',auth[_0x3d6d('0xd')](),controller[_0x3d6d('0x14')]);router[_0x3d6d('0x13')]('/:id/teams',auth[_0x3d6d('0xd')](),controller[_0x3d6d('0x15')]);router[_0x3d6d('0x13')]('/:id/users',auth['isAuthenticated'](),controller[_0x3d6d('0x16')]);router[_0x3d6d('0x17')](_0x3d6d('0x18'),auth[_0x3d6d('0xd')](),controller[_0x3d6d('0x19')]);router['delete'](_0x3d6d('0x18'),auth['isAuthenticated'](),controller[_0x3d6d('0x1a')]);router['delete']('/:id/teams',auth[_0x3d6d('0xd')](),controller['removeTeams']);router['delete'](_0x3d6d('0x12'),auth['isAuthenticated'](),controller[_0x3d6d('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x70f7=['/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','delete','/:id','destroy','removeTeams','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','describe','get','show','getMembers'];(function(_0x482ee4,_0x4f17aa){var _0x2a3a0a=function(_0x5e9364){while(--_0x5e9364){_0x482ee4['push'](_0x482ee4['shift']());}};_0x2a3a0a(++_0x4f17aa);}(_0x70f7,0x14d));var _0x770f=function(_0x1bfe2b,_0x34856e){_0x1bfe2b=_0x1bfe2b-0x0;var _0x1477d4=_0x70f7[_0x1bfe2b];return _0x1477d4;};'use strict';var multer=require(_0x770f('0x0'));var util=require(_0x770f('0x1'));var path=require(_0x770f('0x2'));var timeout=require('connect-timeout');var express=require(_0x770f('0x3'));var router=express[_0x770f('0x4')]();var fs_extra=require(_0x770f('0x5'));var auth=require(_0x770f('0x6'));var interaction=require(_0x770f('0x7'));var config=require(_0x770f('0x8'));var controller=require('./mailQueue.controller');router['get']('/',auth[_0x770f('0x9')](),controller[_0x770f('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x770f('0xb')]);router[_0x770f('0xc')]('/:id',auth['isAuthenticated'](),controller[_0x770f('0xd')]);router[_0x770f('0xc')]('/:id/members',auth['isAuthenticated'](),controller[_0x770f('0xe')]);router['get'](_0x770f('0xf'),auth[_0x770f('0x9')](),controller[_0x770f('0x10')]);router[_0x770f('0xc')](_0x770f('0x11'),auth[_0x770f('0x9')](),controller[_0x770f('0x12')]);router[_0x770f('0x13')]('/',auth[_0x770f('0x9')](),controller[_0x770f('0x14')]);router['post']('/:id/teams',auth[_0x770f('0x9')](),controller[_0x770f('0x15')]);router[_0x770f('0x13')]('/:id/users',auth[_0x770f('0x9')](),controller[_0x770f('0x16')]);router[_0x770f('0x17')]('/:id',auth[_0x770f('0x9')](),controller['update']);router[_0x770f('0x18')](_0x770f('0x19'),auth['isAuthenticated'](),controller[_0x770f('0x1a')]);router[_0x770f('0x18')](_0x770f('0xf'),auth[_0x770f('0x9')](),controller[_0x770f('0x1b')]);router[_0x770f('0x18')]('/:id/users',auth[_0x770f('0x9')](),controller['removeAgents']);module[_0x770f('0x1c')]=router;
\ No newline at end of file
index 15775ed..a529f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4709=['exports','STRING','INTEGER','rrmemory','beepall','roundrobin','sequelize'];(function(_0x476cda,_0x1f7aba){var _0x2e077b=function(_0x3016ec){while(--_0x3016ec){_0x476cda['push'](_0x476cda['shift']());}};_0x2e077b(++_0x1f7aba);}(_0x4709,0x164));var _0x9470=function(_0x2222cb,_0x37d729){_0x2222cb=_0x2222cb-0x0;var _0x2ec931=_0x4709[_0x2222cb];return _0x2ec931;};'use strict';var Sequelize=require(_0x9470('0x0'));module[_0x9470('0x1')]={'name':{'type':Sequelize[_0x9470('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x9470('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x9470('0x4'),_0x9470('0x5'),_0x9470('0x6'))}};
\ No newline at end of file
+var _0x0b94=['exports','STRING','INTEGER','ENUM','rrmemory','beepall','sequelize'];(function(_0x104a0f,_0x363a29){var _0x116e42=function(_0x4f5c2a){while(--_0x4f5c2a){_0x104a0f['push'](_0x104a0f['shift']());}};_0x116e42(++_0x363a29);}(_0x0b94,0xdf));var _0x40b9=function(_0xab7808,_0x2c0ac5){_0xab7808=_0xab7808-0x0;var _0x55a45a=_0x0b94[_0xab7808];return _0x55a45a;};'use strict';var Sequelize=require(_0x40b9('0x0'));module[_0x40b9('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x40b9('0x2')]},'timeout':{'type':Sequelize[_0x40b9('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x40b9('0x4')](_0x40b9('0x5'),_0x40b9('0x6'),'roundrobin')}};
\ No newline at end of file
index c5493c1..134ae53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe920=['hasOwnProperty','MailQueueId','findAll','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','rows','format','Team','pick','getTeams','addTeams','ids','online','flatMap','get','Agents','sequelize','transaction','findOrCreate','forEach','emit','userMailQueue:save','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','union','removeTeams','userMailQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./mailQueue.socket','register','end','status','offset','undefined','limit','set','Content-Range','save','update','then','MailQueues','sendStatus','error','stack','name','send','index','MailQueue','rawAttributes','type','key','model','map','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','filter','merge','count','includeAll','include','catch','show','params','options','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','describe','getMembers','findOne','UserMailQueue'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe920,0xbe));var _0x0e92=function(_0x38c632,_0x14e8e6){_0x38c632=_0x38c632-0x0;var _0x12737e=_0xe920[_0x38c632];return _0x12737e;};'use strict';var emlformat=require(_0x0e92('0x0'));var rimraf=require(_0x0e92('0x1'));var zipdir=require(_0x0e92('0x2'));var jsonpatch=require(_0x0e92('0x3'));var rp=require(_0x0e92('0x4'));var moment=require(_0x0e92('0x5'));var BPromise=require(_0x0e92('0x6'));var Mustache=require(_0x0e92('0x7'));var util=require(_0x0e92('0x8'));var path=require(_0x0e92('0x9'));var sox=require('sox');var csv=require(_0x0e92('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0e92('0xb'));var _=require(_0x0e92('0xc'));var squel=require(_0x0e92('0xd'));var crypto=require(_0x0e92('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0e92('0xf'));var toCsv=require(_0x0e92('0xa'));var querystring=require(_0x0e92('0x10'));var Papa=require(_0x0e92('0x11'));var Redis=require(_0x0e92('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0e92('0x13'));var logger=require(_0x0e92('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0e92('0x15'));var db=require(_0x0e92('0x16'))['db'];config['redis']=_[_0x0e92('0x17')](config[_0x0e92('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0x0e92('0x19'))(new Redis(config[_0x0e92('0x18')]));require(_0x0e92('0x1a'))[_0x0e92('0x1b')](socket);function respondWithStatusCode(_0x218f02,_0x77fab3){_0x77fab3=_0x77fab3||0xcc;return function(_0x44dcd0){if(_0x44dcd0){return _0x218f02['sendStatus'](_0x77fab3);}return _0x218f02['status'](_0x77fab3)[_0x0e92('0x1c')]();};}function respondWithResult(_0x211716,_0x4f1e28){_0x4f1e28=_0x4f1e28||0xc8;return function(_0x4f4c4a){if(_0x4f4c4a){return _0x211716[_0x0e92('0x1d')](_0x4f1e28)['json'](_0x4f4c4a);}};}function respondWithFilteredResult(_0x9ecd13,_0x1b1d08){return function(_0x3316a5){if(_0x3316a5){var _0x46aa84=typeof _0x1b1d08[_0x0e92('0x1e')]===_0x0e92('0x1f')&&typeof _0x1b1d08[_0x0e92('0x20')]==='undefined';var _0x1412ef=_0x3316a5['count'];var _0x475ed2=_0x46aa84?0x0:_0x1b1d08['offset'];var _0x59be04=_0x46aa84?_0x3316a5['count']:_0x1b1d08[_0x0e92('0x1e')]+_0x1b1d08['limit'];var _0x433c05;if(_0x59be04>=_0x1412ef){_0x59be04=_0x1412ef;_0x433c05=0xc8;}else{_0x433c05=0xce;}_0x9ecd13['status'](_0x433c05);return _0x9ecd13[_0x0e92('0x21')](_0x0e92('0x22'),_0x475ed2+'-'+_0x59be04+'/'+_0x1412ef)['json'](_0x3316a5);}return null;};}function patchUpdates(_0x3f2105){return function(_0x475cc2){try{jsonpatch['apply'](_0x475cc2,_0x3f2105,!![]);}catch(_0x3a18e1){return BPromise['reject'](_0x3a18e1);}return _0x475cc2[_0x0e92('0x23')]();};}function saveUpdates(_0x40375c,_0xedeb4e){return function(_0x22c53b){if(_0x22c53b){return _0x22c53b[_0x0e92('0x24')](_0x40375c)[_0x0e92('0x25')](function(_0xc34ae4){return _0xc34ae4;});}return null;};}function removeEntity(_0x42c5bc,_0x32d258){return function(_0x1ea0dc){if(_0x1ea0dc){return _0x1ea0dc['destroy']()[_0x0e92('0x25')](function(){var _0x47f156=_0x1ea0dc['get']({'plain':!![]});var _0x28463d=_0x0e92('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x28463d,'resourceId':_0x47f156['id']}})[_0x0e92('0x25')](function(){return _0x1ea0dc;});})[_0x0e92('0x25')](function(){_0x42c5bc['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x140666,_0x329c5f){return function(_0xc3d81d){if(!_0xc3d81d){_0x140666[_0x0e92('0x27')](0x194);}return _0xc3d81d;};}function handleError(_0x36538b,_0x10000e){_0x10000e=_0x10000e||0x1f4;return function(_0x3139bf){logger[_0x0e92('0x28')](_0x3139bf[_0x0e92('0x29')]);if(_0x3139bf[_0x0e92('0x2a')]){delete _0x3139bf[_0x0e92('0x2a')];}_0x36538b[_0x0e92('0x1d')](_0x10000e)[_0x0e92('0x2b')](_0x3139bf);};}exports[_0x0e92('0x2c')]=function(_0x4201ab,_0x41d7e5){var _0x3542fa={},_0x1ca84b={},_0x3758f0={'count':0x0,'rows':[]};var _0xe043a5=_['map'](db[_0x0e92('0x2d')][_0x0e92('0x2e')],function(_0x5b5e46){return{'name':_0x5b5e46['fieldName'],'type':_0x5b5e46[_0x0e92('0x2f')][_0x0e92('0x30')]};});_0x1ca84b[_0x0e92('0x31')]=_[_0x0e92('0x32')](_0xe043a5,_0x0e92('0x2a'));_0x1ca84b[_0x0e92('0x33')]=_[_0x0e92('0x34')](_0x4201ab[_0x0e92('0x33')]);_0x1ca84b['filters']=_[_0x0e92('0x35')](_0x1ca84b[_0x0e92('0x31')],_0x1ca84b[_0x0e92('0x33')]);_0x3542fa[_0x0e92('0x36')]=_[_0x0e92('0x35')](_0x1ca84b[_0x0e92('0x31')],qs[_0x0e92('0x37')](_0x4201ab[_0x0e92('0x33')][_0x0e92('0x37')]));_0x3542fa['attributes']=_0x3542fa['attributes'][_0x0e92('0x38')]?_0x3542fa[_0x0e92('0x36')]:_0x1ca84b['model'];if(!_0x4201ab[_0x0e92('0x33')]['hasOwnProperty'](_0x0e92('0x39'))){_0x3542fa['limit']=qs[_0x0e92('0x20')](_0x4201ab['query'][_0x0e92('0x20')]);_0x3542fa[_0x0e92('0x1e')]=qs[_0x0e92('0x1e')](_0x4201ab['query']['offset']);}_0x3542fa[_0x0e92('0x3a')]=qs[_0x0e92('0x3b')](_0x4201ab[_0x0e92('0x33')]['sort']);_0x3542fa[_0x0e92('0x3c')]=qs['filters'](_['pick'](_0x4201ab[_0x0e92('0x33')],_0x1ca84b[_0x0e92('0x3d')]),_0xe043a5);if(_0x4201ab['query'][_0x0e92('0x3e')]){_0x3542fa['where']=_[_0x0e92('0x3f')](_0x3542fa[_0x0e92('0x3c')],{'$or':_['map'](_0xe043a5,function(_0x14b4ae){if(_0x14b4ae['type']!=='VIRTUAL'){var _0x499e6a={};_0x499e6a[_0x14b4ae[_0x0e92('0x2a')]]={'$like':'%'+_0x4201ab[_0x0e92('0x33')][_0x0e92('0x3e')]+'%'};return _0x499e6a;}})});}_0x3542fa=_[_0x0e92('0x3f')]({},_0x3542fa,_0x4201ab['options']);var _0x563a14={'where':_0x3542fa[_0x0e92('0x3c')]};return db[_0x0e92('0x2d')][_0x0e92('0x40')](_0x563a14)[_0x0e92('0x25')](function(_0x4f242d){_0x3758f0[_0x0e92('0x40')]=_0x4f242d;if(_0x4201ab[_0x0e92('0x33')][_0x0e92('0x41')]){_0x3542fa[_0x0e92('0x42')]=[{'all':!![]}];}return db['MailQueue']['findAll'](_0x3542fa);})[_0x0e92('0x25')](function(_0x2d44f0){_0x3758f0['rows']=_0x2d44f0;return _0x3758f0;})[_0x0e92('0x25')](respondWithFilteredResult(_0x41d7e5,_0x3542fa))[_0x0e92('0x43')](handleError(_0x41d7e5,null));};exports[_0x0e92('0x44')]=function(_0xbc137f,_0x232eb9){var _0x8a5376={'raw':!![],'where':{'id':_0xbc137f[_0x0e92('0x45')]['id']}},_0x4ebd55={};_0x4ebd55[_0x0e92('0x31')]=_[_0x0e92('0x34')](db['MailQueue'][_0x0e92('0x2e')]);_0x4ebd55[_0x0e92('0x33')]=_[_0x0e92('0x34')](_0xbc137f[_0x0e92('0x33')]);_0x4ebd55[_0x0e92('0x3d')]=_[_0x0e92('0x35')](_0x4ebd55[_0x0e92('0x31')],_0x4ebd55[_0x0e92('0x33')]);_0x8a5376[_0x0e92('0x36')]=_['intersection'](_0x4ebd55['model'],qs[_0x0e92('0x37')](_0xbc137f[_0x0e92('0x33')][_0x0e92('0x37')]));_0x8a5376[_0x0e92('0x36')]=_0x8a5376[_0x0e92('0x36')]['length']?_0x8a5376[_0x0e92('0x36')]:_0x4ebd55[_0x0e92('0x31')];if(_0xbc137f['query']['includeAll']){_0x8a5376[_0x0e92('0x42')]=[{'all':!![]}];}_0x8a5376=_['merge']({},_0x8a5376,_0xbc137f[_0x0e92('0x46')]);return db[_0x0e92('0x2d')][_0x0e92('0x47')](_0x8a5376)[_0x0e92('0x25')](handleEntityNotFound(_0x232eb9,null))[_0x0e92('0x25')](respondWithResult(_0x232eb9,null))['catch'](handleError(_0x232eb9,null));};exports[_0x0e92('0x48')]=function(_0xa90e38,_0x1a8578){return db[_0x0e92('0x2d')][_0x0e92('0x48')](_0xa90e38[_0x0e92('0x49')],{})[_0x0e92('0x25')](function(_0x4a71d1){var _0xaa654a=_0xa90e38[_0x0e92('0x4a')]['get']({'plain':!![]});if(!_0xaa654a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xaa654a[_0x0e92('0x4b')]==='user'){var _0x3c27f0=_0x4a71d1['get']({'plain':!![]});var _0x30b31d=_0x0e92('0x26');return db[_0x0e92('0x4c')][_0x0e92('0x47')]({'where':{'name':_0x30b31d,'userProfileId':_0xaa654a[_0x0e92('0x4d')]},'raw':!![]})[_0x0e92('0x25')](function(_0x1f593d){if(_0x1f593d&&_0x1f593d[_0x0e92('0x4e')]===0x0){return db[_0x0e92('0x4f')]['create']({'name':_0x3c27f0[_0x0e92('0x2a')],'resourceId':_0x3c27f0['id'],'type':_0x1f593d[_0x0e92('0x2a')],'sectionId':_0x1f593d['id']},{})[_0x0e92('0x25')](function(){return _0x4a71d1;});}else{return _0x4a71d1;}})[_0x0e92('0x43')](function(_0x532e18){logger['error'](_0x0e92('0x50'),_0x532e18);throw _0x532e18;});}return _0x4a71d1;})[_0x0e92('0x25')](respondWithResult(_0x1a8578,0xc9))['catch'](handleError(_0x1a8578,null));};exports[_0x0e92('0x24')]=function(_0x4a696c,_0x3ef78a){if(_0x4a696c[_0x0e92('0x49')]['id']){delete _0x4a696c[_0x0e92('0x49')]['id'];}return db[_0x0e92('0x2d')][_0x0e92('0x47')]({'where':{'id':_0x4a696c[_0x0e92('0x45')]['id']}})[_0x0e92('0x25')](handleEntityNotFound(_0x3ef78a,null))[_0x0e92('0x25')](saveUpdates(_0x4a696c[_0x0e92('0x49')],null))[_0x0e92('0x25')](respondWithResult(_0x3ef78a,null))['catch'](handleError(_0x3ef78a,null));};exports[_0x0e92('0x51')]=function(_0x141057,_0x45fe7e){return db[_0x0e92('0x2d')]['find']({'where':{'id':_0x141057['params']['id']}})['then'](handleEntityNotFound(_0x45fe7e,null))[_0x0e92('0x25')](removeEntity(_0x45fe7e,null))[_0x0e92('0x43')](handleError(_0x45fe7e,null));};exports['describe']=function(_0x41f110,_0x1ec439){return db[_0x0e92('0x2d')][_0x0e92('0x52')]()['then'](respondWithResult(_0x1ec439,null))[_0x0e92('0x43')](handleError(_0x1ec439,null));};exports[_0x0e92('0x53')]=function(_0x10353a,_0x5f1719,_0x7e8f83){var _0x3f3c08={'raw':!![],'where':{}},_0x116b25={},_0x33f00c;return db['MailQueue'][_0x0e92('0x54')]({'where':{'id':_0x10353a[_0x0e92('0x45')]['id']}})[_0x0e92('0x25')](handleEntityNotFound(_0x5f1719,null))[_0x0e92('0x25')](function(_0x1cbabe){if(_0x1cbabe){_0x33f00c=_0x1cbabe['get']({'plain':!![]});_0x116b25['model']=_[_0x0e92('0x34')](db[_0x0e92('0x55')][_0x0e92('0x2e')]);_0x116b25[_0x0e92('0x33')]=_[_0x0e92('0x34')](_0x10353a[_0x0e92('0x33')]);_0x116b25['filters']=_['intersection'](_0x116b25[_0x0e92('0x31')],_0x116b25[_0x0e92('0x33')]);_0x3f3c08['attributes']=_['intersection'](_0x116b25[_0x0e92('0x31')],qs[_0x0e92('0x37')](_0x10353a[_0x0e92('0x33')]['fields']));_0x3f3c08['attributes']=_0x3f3c08[_0x0e92('0x36')][_0x0e92('0x38')]?_0x3f3c08[_0x0e92('0x36')]:_0x116b25[_0x0e92('0x31')];if(!_0x10353a[_0x0e92('0x33')][_0x0e92('0x56')](_0x0e92('0x39'))){_0x3f3c08['limit']=qs[_0x0e92('0x20')](_0x10353a['query'][_0x0e92('0x20')]);_0x3f3c08[_0x0e92('0x1e')]=qs[_0x0e92('0x1e')](_0x10353a['query'][_0x0e92('0x1e')]);}_0x3f3c08['order']=qs[_0x0e92('0x3b')](_0x10353a[_0x0e92('0x33')][_0x0e92('0x3b')]);_0x3f3c08[_0x0e92('0x3c')]=qs['filters'](_['pick'](_0x10353a[_0x0e92('0x33')],_0x116b25['filters']));_0x3f3c08[_0x0e92('0x3c')][_0x0e92('0x57')]=_0x1cbabe['id'];if(_0x10353a['query']['filter']){_0x3f3c08[_0x0e92('0x3c')]=_['merge'](_0x3f3c08[_0x0e92('0x3c')],{'$or':_['map'](_0x3f3c08['attributes'],function(_0x3f6da6){var _0x64f354={};_0x64f354[_0x3f6da6]={'$like':'%'+_0x10353a[_0x0e92('0x33')][_0x0e92('0x3e')]+'%'};return _0x64f354;})});}_0x3f3c08=_[_0x0e92('0x3f')]({},_0x3f3c08,_0x10353a['options']);return db[_0x0e92('0x55')][_0x0e92('0x58')](_0x3f3c08);}})[_0x0e92('0x25')](function(_0xfb3937){if(_0xfb3937){return db[_0x0e92('0x59')][_0x0e92('0x5a')]({'where':{'id':_['map'](_0xfb3937,_0x0e92('0x5b')),'role':_0x0e92('0x5c')},'attributes':['id',_0x0e92('0x2a'),_0x0e92('0x5d'),_0x0e92('0x5e'),_0x0e92('0x5f')]});}})[_0x0e92('0x25')](function(_0x32d965){if(_0x32d965){return{'count':_0x32d965[_0x0e92('0x40')],'rows':_[_0x0e92('0x32')](_0x32d965[_0x0e92('0x60')],function(_0x43c894){return{'membername':_0x43c894[_0x0e92('0x2a')],'UserId':_0x43c894['id'],'queue_name':_0x33f00c[_0x0e92('0x2a')],'MailQueueId':_0x33f00c['id'],'interface':util[_0x0e92('0x61')]('%s/%s','SIP',_0x43c894[_0x0e92('0x2a')]),'penalty':0x0,'paused':_0x43c894[_0x0e92('0x5d')],'createdAt':_0x43c894[_0x0e92('0x5f')],'updatedAt':_0x43c894[_0x0e92('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x0e92('0x25')](respondWithFilteredResult(_0x5f1719,_0x3f3c08))[_0x0e92('0x43')](handleError(_0x5f1719,null));};exports['getTeams']=function(_0x1387b5,_0x2f6978,_0x4605f2){var _0xbed5ce={};var _0x3fa2a6={};var _0x30798f;var _0x4a6cbf;return db[_0x0e92('0x2d')][_0x0e92('0x54')]({'where':{'id':_0x1387b5[_0x0e92('0x45')]['id']}})[_0x0e92('0x25')](handleEntityNotFound(_0x2f6978,null))['then'](function(_0x14fb76){if(_0x14fb76){_0x30798f=_0x14fb76;_0x3fa2a6[_0x0e92('0x31')]=_[_0x0e92('0x34')](db[_0x0e92('0x62')][_0x0e92('0x2e')]);_0x3fa2a6['query']=_[_0x0e92('0x34')](_0x1387b5[_0x0e92('0x33')]);_0x3fa2a6[_0x0e92('0x3d')]=_['intersection'](_0x3fa2a6[_0x0e92('0x31')],_0x3fa2a6[_0x0e92('0x33')]);_0xbed5ce[_0x0e92('0x36')]=_[_0x0e92('0x35')](_0x3fa2a6['model'],qs[_0x0e92('0x37')](_0x1387b5[_0x0e92('0x33')][_0x0e92('0x37')]));_0xbed5ce[_0x0e92('0x36')]=_0xbed5ce[_0x0e92('0x36')][_0x0e92('0x38')]?_0xbed5ce[_0x0e92('0x36')]:_0x3fa2a6[_0x0e92('0x31')];_0xbed5ce[_0x0e92('0x3a')]=qs['sort'](_0x1387b5[_0x0e92('0x33')][_0x0e92('0x3b')]);_0xbed5ce[_0x0e92('0x3c')]=qs['filters'](_[_0x0e92('0x63')](_0x1387b5['query'],_0x3fa2a6[_0x0e92('0x3d')]));if(_0x1387b5[_0x0e92('0x33')]['filter']){_0xbed5ce[_0x0e92('0x3c')]=_[_0x0e92('0x3f')](_0xbed5ce['where'],{'$or':_['map'](_0xbed5ce[_0x0e92('0x36')],function(_0x5b0b44){var _0x18f4bc={};_0x18f4bc[_0x5b0b44]={'$like':'%'+_0x1387b5[_0x0e92('0x33')][_0x0e92('0x3e')]+'%'};return _0x18f4bc;})});}_0xbed5ce=_[_0x0e92('0x3f')]({},_0xbed5ce,_0x1387b5[_0x0e92('0x46')]);return _0x30798f[_0x0e92('0x64')](_0xbed5ce);}})[_0x0e92('0x25')](function(_0x59b6a9){if(_0x59b6a9){_0x4a6cbf=_0x59b6a9[_0x0e92('0x38')];if(!_0x1387b5[_0x0e92('0x33')][_0x0e92('0x56')](_0x0e92('0x39'))){_0xbed5ce[_0x0e92('0x20')]=qs[_0x0e92('0x20')](_0x1387b5['query'][_0x0e92('0x20')]);_0xbed5ce[_0x0e92('0x1e')]=qs['offset'](_0x1387b5[_0x0e92('0x33')]['offset']);}return _0x30798f[_0x0e92('0x64')](_0xbed5ce);}})[_0x0e92('0x25')](function(_0x4e2f3d){if(_0x4e2f3d){return _0x4e2f3d?{'count':_0x4a6cbf,'rows':_0x4e2f3d}:null;}})[_0x0e92('0x25')](respondWithResult(_0x2f6978,null))[_0x0e92('0x43')](handleError(_0x2f6978,null));};exports[_0x0e92('0x65')]=function(_0x3339b1,_0x4491ea,_0xf4be12){var _0x15b6d2=_0x3339b1[_0x0e92('0x49')][_0x0e92('0x66')];return db[_0x0e92('0x62')][_0x0e92('0x58')]({'where':{'id':_0x15b6d2},'attributes':['id'],'include':[{'model':db[_0x0e92('0x59')],'as':'Agents','attributes':['id',_0x0e92('0x2a'),_0x0e92('0x67'),'voicePause','interface'],'raw':!![]}]})[_0x0e92('0x25')](function(_0x50e00c){if(_0x50e00c){var _0x3554bc=_[_0x0e92('0x68')](_0x50e00c,function(_0x80106){var _0x777e66=_0x80106[_0x0e92('0x69')]({'plain':!![]});return _0x777e66[_0x0e92('0x6a')];});return db[_0x0e92('0x2d')][_0x0e92('0x47')]({'where':{'id':_0x3339b1[_0x0e92('0x45')]['id']}})[_0x0e92('0x25')](function(_0x148e53){return db[_0x0e92('0x6b')][_0x0e92('0x6c')](function(_0x293fdc){return _0x148e53[_0x0e92('0x65')](_0x15b6d2,{'transaction':_0x293fdc})['then'](function(){return BPromise['each'](_0x3554bc,function(_0x585e60){return db[_0x0e92('0x55')][_0x0e92('0x6d')]({'where':{'UserId':_0x585e60['id'],'MailQueueId':_0x3339b1[_0x0e92('0x45')]['id']},'transaction':_0x293fdc});});})[_0x0e92('0x25')](function(){_0x3554bc[_0x0e92('0x6e')](function(_0xa128e5){socket[_0x0e92('0x6f')](_0x0e92('0x70'),{'UserId':_0xa128e5['id'],'MailQueueId':_0x148e53['id']});});});});});}})[_0x0e92('0x25')](respondWithStatusCode(_0x4491ea,null))['catch'](handleError(_0x4491ea,null));};exports['removeTeams']=function(_0x2a7b75,_0x5a854b,_0x1affeb){return db[_0x0e92('0x62')][_0x0e92('0x58')]({'where':{'id':_0x2a7b75['query']['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x0e92('0x6a'),'attributes':['id'],'raw':!![]}]})[_0x0e92('0x25')](handleEntityNotFound(_0x5a854b,null))['then'](function(_0x3f6f60){var _0x1d2fe1=_[_0x0e92('0x32')](_0x3f6f60,'id');var _0x2e25ec=[];var _0x38f4a9=[];var _0x32eb0c=squel[_0x0e92('0x71')]();_0x32eb0c[_0x0e92('0x72')](_0x0e92('0x73'))[_0x0e92('0x74')](_0x0e92('0x75'),'tq')[_0x0e92('0x76')](_0x0e92('0x77'),'ut',_0x0e92('0x78'))[_0x0e92('0x3c')](_0x0e92('0x79'),_0x2a7b75['params']['id']);for(var _0x1fada7=0x0;_0x1fada7<_0x3f6f60[_0x0e92('0x38')];_0x1fada7+=0x1){let _0x802848=_0x3f6f60[_0x1fada7];for(var _0x39b726=0x0;_0x39b726<_0x802848[_0x0e92('0x6a')]['length'];_0x39b726+=0x1){let _0x4305cd=_0x802848[_0x0e92('0x6a')][_0x39b726];var _0x4b22a8=_0x32eb0c[_0x0e92('0x7a')]();_0x4b22a8[_0x0e92('0x3c')](_0x0e92('0x7b'),_0x4305cd['id']);_0x38f4a9['push'](db['sequelize'][_0x0e92('0x33')](_0x4b22a8[_0x0e92('0x7c')](),{'type':db[_0x0e92('0x6b')][_0x0e92('0x7d')][_0x0e92('0x7e')]})[_0x0e92('0x25')](function(_0x29f74c){if(_0x29f74c[_0x0e92('0x38')]===0x1){return _0x4305cd['id'];}else{var _0xa8555d=_[_0x0e92('0x7f')](_['map'](_0x29f74c,_0x0e92('0x80')),function(_0x4e3826){return _[_0x0e92('0x81')](_0x1d2fe1,_0x4e3826);});if(_0xa8555d){return _0x4305cd['id'];}}}));}}return BPromise['all'](_0x38f4a9)['then'](function(_0x403d05){_0x2e25ec=_(_0x2e25ec)[_0x0e92('0x82')](_0x403d05)['compact']()['value']();return db['MailQueue'][_0x0e92('0x47')]({'where':{'id':_0x2a7b75['params']['id']}})[_0x0e92('0x25')](function(_0x178c63){return db[_0x0e92('0x6b')][_0x0e92('0x6c')](function(_0x52be59){return _0x178c63[_0x0e92('0x83')](_0x2a7b75[_0x0e92('0x33')][_0x0e92('0x66')],{'transaction':_0x52be59})[_0x0e92('0x25')](function(){if(!_['isEmpty'](_0x2e25ec)){return _0x178c63['removeAgents'](_0x2e25ec,{'transaction':_0x52be59});}})[_0x0e92('0x25')](function(){_0x2e25ec[_0x0e92('0x6e')](function(_0x4f4425){socket[_0x0e92('0x6f')](_0x0e92('0x84'),{'UserId':_0x4f4425,'MailQueueId':_0x178c63['id']});});});});});});})['then'](respondWithStatusCode(_0x5a854b,null))[_0x0e92('0x43')](handleError(_0x5a854b,null));};exports[_0x0e92('0x85')]=function(_0x25c519,_0x4a27eb,_0x49ff9e){return db[_0x0e92('0x2d')][_0x0e92('0x47')]({'where':{'id':_0x25c519['params']['id']}})['then'](handleEntityNotFound(_0x4a27eb,null))[_0x0e92('0x25')](function(_0x41631b){if(_0x41631b){return _0x41631b['addAgents'](_0x25c519[_0x0e92('0x49')]['ids'],_['omit'](_0x25c519[_0x0e92('0x49')],[_0x0e92('0x66'),'id'])||{})[_0x0e92('0x86')](function(_0x2ea3cc){for(var _0x4072a2=0x0;_0x4072a2<_0x25c519[_0x0e92('0x49')][_0x0e92('0x66')]['length'];_0x4072a2+=0x1){socket[_0x0e92('0x6f')](_0x0e92('0x70'),{'UserId':Number(_0x25c519[_0x0e92('0x49')][_0x0e92('0x66')][_0x4072a2]),'MailQueueId':Number(_0x25c519[_0x0e92('0x45')]['id'])});}return _0x2ea3cc;});}})[_0x0e92('0x25')](respondWithResult(_0x4a27eb,null))[_0x0e92('0x43')](handleError(_0x4a27eb,null));};exports[_0x0e92('0x87')]=function(_0xf35906,_0x57aa22,_0x4f8183){return db[_0x0e92('0x2d')][_0x0e92('0x47')]({'where':{'id':_0xf35906[_0x0e92('0x45')]['id']}})[_0x0e92('0x25')](handleEntityNotFound(_0x57aa22,null))[_0x0e92('0x25')](function(_0x41e6ff){if(_0x41e6ff){return _0x41e6ff['removeAgents'](_0xf35906[_0x0e92('0x33')]['ids'])[_0x0e92('0x25')](function(){if(_[_0x0e92('0x88')](_0xf35906[_0x0e92('0x33')][_0x0e92('0x66')])){for(var _0x32dffe=0x0;_0x32dffe<_0xf35906[_0x0e92('0x33')][_0x0e92('0x66')]['length'];_0x32dffe+=0x1){socket[_0x0e92('0x6f')]('userMailQueue:remove',{'UserId':Number(_0xf35906[_0x0e92('0x33')]['ids'][_0x32dffe]),'MailQueueId':Number(_0xf35906[_0x0e92('0x45')]['id'])});}}else{socket[_0x0e92('0x6f')](_0x0e92('0x84'),{'UserId':Number(_0xf35906[_0x0e92('0x33')]['ids']),'MailQueueId':Number(_0xf35906['params']['id'])});}});}})[_0x0e92('0x25')](respondWithStatusCode(_0x57aa22,null))[_0x0e92('0x43')](handleError(_0x57aa22,null));};exports[_0x0e92('0x89')]=function(_0x542cfb,_0x15cedd,_0x30532a){var _0x5bc336={};var _0x3e932f={};var _0x31995f;var _0x14a562;return db[_0x0e92('0x2d')][_0x0e92('0x54')]({'where':{'id':_0x542cfb[_0x0e92('0x45')]['id']}})[_0x0e92('0x25')](handleEntityNotFound(_0x15cedd,null))[_0x0e92('0x25')](function(_0x58bdc6){if(_0x58bdc6){_0x31995f=_0x58bdc6;_0x3e932f['model']=_['keys'](db[_0x0e92('0x59')][_0x0e92('0x2e')]);_0x3e932f[_0x0e92('0x33')]=_['keys'](_0x542cfb[_0x0e92('0x33')]);_0x3e932f['filters']=_[_0x0e92('0x35')](_0x3e932f[_0x0e92('0x31')],_0x3e932f[_0x0e92('0x33')]);_0x5bc336[_0x0e92('0x36')]=_['intersection'](_0x3e932f[_0x0e92('0x31')],qs[_0x0e92('0x37')](_0x542cfb[_0x0e92('0x33')]['fields']));_0x5bc336[_0x0e92('0x36')]=_0x5bc336['attributes'][_0x0e92('0x38')]?_0x5bc336[_0x0e92('0x36')]:_0x3e932f[_0x0e92('0x31')];_0x5bc336[_0x0e92('0x3a')]=qs[_0x0e92('0x3b')](_0x542cfb[_0x0e92('0x33')][_0x0e92('0x3b')]);_0x5bc336[_0x0e92('0x3c')]=qs[_0x0e92('0x3d')](_[_0x0e92('0x63')](_0x542cfb['query'],_0x3e932f[_0x0e92('0x3d')]));if(_0x542cfb[_0x0e92('0x33')]['filter']){_0x5bc336[_0x0e92('0x3c')]=_['merge'](_0x5bc336['where'],{'$or':_[_0x0e92('0x32')](_0x5bc336[_0x0e92('0x36')],function(_0x3c8e1c){var _0x936475={};_0x936475[_0x3c8e1c]={'$like':'%'+_0x542cfb['query'][_0x0e92('0x3e')]+'%'};return _0x936475;})});}_0x5bc336=_[_0x0e92('0x3f')]({},_0x5bc336,_0x542cfb[_0x0e92('0x46')]);return _0x31995f[_0x0e92('0x89')](_0x5bc336);}})[_0x0e92('0x25')](function(_0x5a8039){if(_0x5a8039){_0x14a562=_0x5a8039[_0x0e92('0x38')];if(!_0x542cfb[_0x0e92('0x33')][_0x0e92('0x56')](_0x0e92('0x39'))){_0x5bc336[_0x0e92('0x20')]=qs['limit'](_0x542cfb[_0x0e92('0x33')][_0x0e92('0x20')]);_0x5bc336[_0x0e92('0x1e')]=qs['offset'](_0x542cfb[_0x0e92('0x33')][_0x0e92('0x1e')]);}return _0x31995f[_0x0e92('0x89')](_0x5bc336);}})[_0x0e92('0x25')](function(_0x290bff){if(_0x290bff){return _0x290bff?{'count':_0x14a562,'rows':_0x290bff}:null;}})[_0x0e92('0x25')](respondWithResult(_0x15cedd,null))[_0x0e92('0x43')](handleError(_0x15cedd,null));};
\ No newline at end of file
+var _0xbe23=['removeTeams','tq.TeamId','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','TeamId','includes','all','union','value','transaction','isEmpty','removeAgents','forEach','addAgents','omit','spread','isArray','userMailQueue:remove','getAgents','eml-format','fast-json-patch','request-promise','moment','mustache','util','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/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','end','name','send','index','map','MailQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','intersection','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','hasOwnProperty','nolimit','order','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','addTeams','ids','Team','online','voicePause','interface','Agents','each','findOrCreate','emit','userMailQueue:save'];(function(_0x4eb713,_0x41293d){var _0x4bc1f7=function(_0x49ad95){while(--_0x49ad95){_0x4eb713['push'](_0x4eb713['shift']());}};_0x4bc1f7(++_0x41293d);}(_0xbe23,0x1c2));var _0x3be2=function(_0x22895a,_0x1aa9c3){_0x22895a=_0x22895a-0x0;var _0x5cee51=_0xbe23[_0x22895a];return _0x5cee51;};'use strict';var emlformat=require(_0x3be2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3be2('0x1'));var rp=require(_0x3be2('0x2'));var moment=require(_0x3be2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3be2('0x4'));var util=require(_0x3be2('0x5'));var path=require(_0x3be2('0x6'));var sox=require(_0x3be2('0x7'));var csv=require(_0x3be2('0x8'));var ejs=require(_0x3be2('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3be2('0xa'));var crypto=require(_0x3be2('0xb'));var jsforce=require(_0x3be2('0xc'));var deskjs=require(_0x3be2('0xd'));var toCsv=require('to-csv');var querystring=require(_0x3be2('0xe'));var Papa=require(_0x3be2('0xf'));var Redis=require(_0x3be2('0x10'));var authService=require(_0x3be2('0x11'));var qs=require(_0x3be2('0x12'));var as=require(_0x3be2('0x13'));var hardwareService=require(_0x3be2('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x3be2('0x15'));var licenseUtil=require(_0x3be2('0x16'));var db=require('../../mysqldb')['db'];config[_0x3be2('0x17')]=_[_0x3be2('0x18')](config[_0x3be2('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x3be2('0x19'))(new Redis(config['redis']));require('./mailQueue.socket')[_0x3be2('0x1a')](socket);function respondWithStatusCode(_0x176389,_0x5d0123){_0x5d0123=_0x5d0123||0xcc;return function(_0x3179ae){if(_0x3179ae){return _0x176389['sendStatus'](_0x5d0123);}return _0x176389[_0x3be2('0x1b')](_0x5d0123)['end']();};}function respondWithResult(_0x8fae14,_0xdab76c){_0xdab76c=_0xdab76c||0xc8;return function(_0x34a71e){if(_0x34a71e){return _0x8fae14[_0x3be2('0x1b')](_0xdab76c)[_0x3be2('0x1c')](_0x34a71e);}};}function respondWithFilteredResult(_0x33a9ef,_0x26d86e){return function(_0x2fe4eb){if(_0x2fe4eb){var _0x3b4c5f=typeof _0x26d86e[_0x3be2('0x1d')]===_0x3be2('0x1e')&&typeof _0x26d86e[_0x3be2('0x1f')]===_0x3be2('0x1e');var _0x4beb76=_0x2fe4eb[_0x3be2('0x20')];var _0xf86328=_0x3b4c5f?0x0:_0x26d86e[_0x3be2('0x1d')];var _0x1c628e=_0x3b4c5f?_0x2fe4eb[_0x3be2('0x20')]:_0x26d86e[_0x3be2('0x1d')]+_0x26d86e[_0x3be2('0x1f')];var _0x3f7780;if(_0x1c628e>=_0x4beb76){_0x1c628e=_0x4beb76;_0x3f7780=0xc8;}else{_0x3f7780=0xce;}_0x33a9ef['status'](_0x3f7780);return _0x33a9ef[_0x3be2('0x21')](_0x3be2('0x22'),_0xf86328+'-'+_0x1c628e+'/'+_0x4beb76)[_0x3be2('0x1c')](_0x2fe4eb);}return null;};}function patchUpdates(_0xd2c980){return function(_0x4109b5){try{jsonpatch['apply'](_0x4109b5,_0xd2c980,!![]);}catch(_0x44bf46){return BPromise[_0x3be2('0x23')](_0x44bf46);}return _0x4109b5[_0x3be2('0x24')]();};}function saveUpdates(_0x3e6f86,_0x2b8b5b){return function(_0xc1417b){if(_0xc1417b){return _0xc1417b[_0x3be2('0x25')](_0x3e6f86)[_0x3be2('0x26')](function(_0x554c83){return _0x554c83;});}return null;};}function removeEntity(_0x4ae344,_0x53157b){return function(_0x28f05d){if(_0x28f05d){return _0x28f05d[_0x3be2('0x27')]()[_0x3be2('0x26')](function(){var _0xf22677=_0x28f05d[_0x3be2('0x28')]({'plain':!![]});var _0x38c9fc=_0x3be2('0x29');return db[_0x3be2('0x2a')][_0x3be2('0x27')]({'where':{'type':_0x38c9fc,'resourceId':_0xf22677['id']}})[_0x3be2('0x26')](function(){return _0x28f05d;});})[_0x3be2('0x26')](function(){_0x4ae344[_0x3be2('0x1b')](0xcc)[_0x3be2('0x2b')]();});}};}function handleEntityNotFound(_0x360922,_0x517913){return function(_0x2cc1e6){if(!_0x2cc1e6){_0x360922['sendStatus'](0x194);}return _0x2cc1e6;};}function handleError(_0x8807ee,_0x2b7d78){_0x2b7d78=_0x2b7d78||0x1f4;return function(_0xbb8c02){logger['error'](_0xbb8c02['stack']);if(_0xbb8c02[_0x3be2('0x2c')]){delete _0xbb8c02[_0x3be2('0x2c')];}_0x8807ee[_0x3be2('0x1b')](_0x2b7d78)[_0x3be2('0x2d')](_0xbb8c02);};}exports[_0x3be2('0x2e')]=function(_0x51e01b,_0x259777){var _0x14406c={},_0x3fa53a={},_0x1cc687={'count':0x0,'rows':[]};var _0x2a5704=_[_0x3be2('0x2f')](db[_0x3be2('0x30')][_0x3be2('0x31')],function(_0xd48ae1){return{'name':_0xd48ae1[_0x3be2('0x32')],'type':_0xd48ae1[_0x3be2('0x33')][_0x3be2('0x34')]};});_0x3fa53a[_0x3be2('0x35')]=_[_0x3be2('0x2f')](_0x2a5704,_0x3be2('0x2c'));_0x3fa53a[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x51e01b[_0x3be2('0x36')]);_0x3fa53a[_0x3be2('0x38')]=_['intersection'](_0x3fa53a['model'],_0x3fa53a[_0x3be2('0x36')]);_0x14406c[_0x3be2('0x39')]=_['intersection'](_0x3fa53a[_0x3be2('0x35')],qs['fields'](_0x51e01b['query'][_0x3be2('0x3a')]));_0x14406c[_0x3be2('0x39')]=_0x14406c[_0x3be2('0x39')][_0x3be2('0x3b')]?_0x14406c['attributes']:_0x3fa53a[_0x3be2('0x35')];if(!_0x51e01b[_0x3be2('0x36')]['hasOwnProperty']('nolimit')){_0x14406c['limit']=qs[_0x3be2('0x1f')](_0x51e01b[_0x3be2('0x36')][_0x3be2('0x1f')]);_0x14406c[_0x3be2('0x1d')]=qs[_0x3be2('0x1d')](_0x51e01b[_0x3be2('0x36')][_0x3be2('0x1d')]);}_0x14406c['order']=qs['sort'](_0x51e01b[_0x3be2('0x36')][_0x3be2('0x3c')]);_0x14406c[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x51e01b[_0x3be2('0x36')],_0x3fa53a[_0x3be2('0x38')]),_0x2a5704);if(_0x51e01b[_0x3be2('0x36')][_0x3be2('0x3f')]){_0x14406c[_0x3be2('0x3d')]=_['merge'](_0x14406c[_0x3be2('0x3d')],{'$or':_[_0x3be2('0x2f')](_0x2a5704,function(_0x4d2d58){if(_0x4d2d58[_0x3be2('0x33')]!==_0x3be2('0x40')){var _0x21ffed={};_0x21ffed[_0x4d2d58['name']]={'$like':'%'+_0x51e01b[_0x3be2('0x36')][_0x3be2('0x3f')]+'%'};return _0x21ffed;}})});}_0x14406c=_['merge']({},_0x14406c,_0x51e01b[_0x3be2('0x41')]);var _0x244789={'where':_0x14406c[_0x3be2('0x3d')]};return db[_0x3be2('0x30')][_0x3be2('0x20')](_0x244789)['then'](function(_0x3e472f){_0x1cc687[_0x3be2('0x20')]=_0x3e472f;if(_0x51e01b[_0x3be2('0x36')][_0x3be2('0x42')]){_0x14406c[_0x3be2('0x43')]=[{'all':!![]}];}return db[_0x3be2('0x30')][_0x3be2('0x44')](_0x14406c);})[_0x3be2('0x26')](function(_0x394434){_0x1cc687[_0x3be2('0x45')]=_0x394434;return _0x1cc687;})['then'](respondWithFilteredResult(_0x259777,_0x14406c))[_0x3be2('0x46')](handleError(_0x259777,null));};exports['show']=function(_0x1028ee,_0x30e316){var _0x1e710b={'raw':!![],'where':{'id':_0x1028ee[_0x3be2('0x47')]['id']}},_0x2ddfeb={};_0x2ddfeb[_0x3be2('0x35')]=_[_0x3be2('0x37')](db[_0x3be2('0x30')]['rawAttributes']);_0x2ddfeb[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x1028ee[_0x3be2('0x36')]);_0x2ddfeb[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x2ddfeb[_0x3be2('0x35')],_0x2ddfeb['query']);_0x1e710b[_0x3be2('0x39')]=_[_0x3be2('0x48')](_0x2ddfeb[_0x3be2('0x35')],qs['fields'](_0x1028ee[_0x3be2('0x36')]['fields']));_0x1e710b['attributes']=_0x1e710b['attributes'][_0x3be2('0x3b')]?_0x1e710b['attributes']:_0x2ddfeb['model'];if(_0x1028ee['query'][_0x3be2('0x42')]){_0x1e710b[_0x3be2('0x43')]=[{'all':!![]}];}_0x1e710b=_[_0x3be2('0x49')]({},_0x1e710b,_0x1028ee[_0x3be2('0x41')]);return db[_0x3be2('0x30')][_0x3be2('0x4a')](_0x1e710b)['then'](handleEntityNotFound(_0x30e316,null))['then'](respondWithResult(_0x30e316,null))[_0x3be2('0x46')](handleError(_0x30e316,null));};exports['create']=function(_0x527443,_0x1797f9){return db[_0x3be2('0x30')][_0x3be2('0x4b')](_0x527443[_0x3be2('0x4c')],{})[_0x3be2('0x26')](function(_0x1d75a4){var _0x2d877d=_0x527443[_0x3be2('0x4d')]['get']({'plain':!![]});if(!_0x2d877d)throw new Error(_0x3be2('0x4e'));if(_0x2d877d[_0x3be2('0x4f')]===_0x3be2('0x4d')){var _0x13ec24=_0x1d75a4[_0x3be2('0x28')]({'plain':!![]});var _0x184d8d=_0x3be2('0x29');return db[_0x3be2('0x50')][_0x3be2('0x4a')]({'where':{'name':_0x184d8d,'userProfileId':_0x2d877d[_0x3be2('0x51')]},'raw':!![]})[_0x3be2('0x26')](function(_0x5ef0d0){if(_0x5ef0d0&&_0x5ef0d0[_0x3be2('0x52')]===0x0){return db[_0x3be2('0x2a')]['create']({'name':_0x13ec24[_0x3be2('0x2c')],'resourceId':_0x13ec24['id'],'type':_0x5ef0d0[_0x3be2('0x2c')],'sectionId':_0x5ef0d0['id']},{})[_0x3be2('0x26')](function(){return _0x1d75a4;});}else{return _0x1d75a4;}})['catch'](function(_0x55f24f){logger[_0x3be2('0x53')](_0x3be2('0x54'),_0x55f24f);throw _0x55f24f;});}return _0x1d75a4;})[_0x3be2('0x26')](respondWithResult(_0x1797f9,0xc9))[_0x3be2('0x46')](handleError(_0x1797f9,null));};exports[_0x3be2('0x25')]=function(_0x2b237e,_0x15c391){if(_0x2b237e[_0x3be2('0x4c')]['id']){delete _0x2b237e['body']['id'];}return db[_0x3be2('0x30')][_0x3be2('0x4a')]({'where':{'id':_0x2b237e[_0x3be2('0x47')]['id']}})['then'](handleEntityNotFound(_0x15c391,null))[_0x3be2('0x26')](saveUpdates(_0x2b237e['body'],null))['then'](respondWithResult(_0x15c391,null))[_0x3be2('0x46')](handleError(_0x15c391,null));};exports[_0x3be2('0x27')]=function(_0x4ea350,_0x5dc4a7){return db['MailQueue'][_0x3be2('0x4a')]({'where':{'id':_0x4ea350['params']['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x5dc4a7,null))[_0x3be2('0x26')](removeEntity(_0x5dc4a7,null))[_0x3be2('0x46')](handleError(_0x5dc4a7,null));};exports['describe']=function(_0x2bc8f7,_0x15aad9){return db[_0x3be2('0x30')][_0x3be2('0x55')]()[_0x3be2('0x26')](respondWithResult(_0x15aad9,null))['catch'](handleError(_0x15aad9,null));};exports[_0x3be2('0x56')]=function(_0x1fedfa,_0x150c18,_0x2423d9){var _0x4ac78f={'raw':!![],'where':{}},_0x276748={},_0x24ec69;return db[_0x3be2('0x30')][_0x3be2('0x57')]({'where':{'id':_0x1fedfa[_0x3be2('0x47')]['id']}})['then'](handleEntityNotFound(_0x150c18,null))[_0x3be2('0x26')](function(_0x225b40){if(_0x225b40){_0x24ec69=_0x225b40[_0x3be2('0x28')]({'plain':!![]});_0x276748['model']=_[_0x3be2('0x37')](db[_0x3be2('0x58')][_0x3be2('0x31')]);_0x276748[_0x3be2('0x36')]=_['keys'](_0x1fedfa[_0x3be2('0x36')]);_0x276748[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x276748[_0x3be2('0x35')],_0x276748['query']);_0x4ac78f['attributes']=_['intersection'](_0x276748[_0x3be2('0x35')],qs[_0x3be2('0x3a')](_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3a')]));_0x4ac78f[_0x3be2('0x39')]=_0x4ac78f['attributes'][_0x3be2('0x3b')]?_0x4ac78f['attributes']:_0x276748[_0x3be2('0x35')];if(!_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x59')](_0x3be2('0x5a'))){_0x4ac78f['limit']=qs['limit'](_0x1fedfa[_0x3be2('0x36')]['limit']);_0x4ac78f[_0x3be2('0x1d')]=qs[_0x3be2('0x1d')](_0x1fedfa['query']['offset']);}_0x4ac78f[_0x3be2('0x5b')]=qs[_0x3be2('0x3c')](_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3c')]);_0x4ac78f[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x1fedfa['query'],_0x276748[_0x3be2('0x38')]));_0x4ac78f[_0x3be2('0x3d')]['MailQueueId']=_0x225b40['id'];if(_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3f')]){_0x4ac78f[_0x3be2('0x3d')]=_[_0x3be2('0x49')](_0x4ac78f[_0x3be2('0x3d')],{'$or':_[_0x3be2('0x2f')](_0x4ac78f[_0x3be2('0x39')],function(_0x5dd2cb){var _0x17784a={};_0x17784a[_0x5dd2cb]={'$like':'%'+_0x1fedfa[_0x3be2('0x36')][_0x3be2('0x3f')]+'%'};return _0x17784a;})});}_0x4ac78f=_['merge']({},_0x4ac78f,_0x1fedfa[_0x3be2('0x41')]);return db[_0x3be2('0x58')][_0x3be2('0x44')](_0x4ac78f);}})[_0x3be2('0x26')](function(_0x4847f4){if(_0x4847f4){return db[_0x3be2('0x5c')][_0x3be2('0x5d')]({'where':{'id':_[_0x3be2('0x2f')](_0x4847f4,_0x3be2('0x5e')),'role':_0x3be2('0x5f')},'attributes':['id','name',_0x3be2('0x60'),_0x3be2('0x61'),_0x3be2('0x62')]});}})[_0x3be2('0x26')](function(_0x242f89){if(_0x242f89){return{'count':_0x242f89['count'],'rows':_[_0x3be2('0x2f')](_0x242f89[_0x3be2('0x45')],function(_0x268108){return{'membername':_0x268108[_0x3be2('0x2c')],'UserId':_0x268108['id'],'queue_name':_0x24ec69[_0x3be2('0x2c')],'MailQueueId':_0x24ec69['id'],'interface':util[_0x3be2('0x63')](_0x3be2('0x64'),_0x3be2('0x65'),_0x268108[_0x3be2('0x2c')]),'penalty':0x0,'paused':_0x268108[_0x3be2('0x60')],'createdAt':_0x268108['createdAt'],'updatedAt':_0x268108[_0x3be2('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3be2('0x26')](respondWithFilteredResult(_0x150c18,_0x4ac78f))['catch'](handleError(_0x150c18,null));};exports[_0x3be2('0x66')]=function(_0x383f9,_0x37646d,_0x22e54f){var _0x55288a={};var _0x4f5ddb={};var _0x1635d3;var _0x18e09b;return db[_0x3be2('0x30')]['findOne']({'where':{'id':_0x383f9[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x37646d,null))[_0x3be2('0x26')](function(_0x167d06){if(_0x167d06){_0x1635d3=_0x167d06;_0x4f5ddb['model']=_[_0x3be2('0x37')](db['Team'][_0x3be2('0x31')]);_0x4f5ddb[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x383f9[_0x3be2('0x36')]);_0x4f5ddb[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x4f5ddb[_0x3be2('0x35')],_0x4f5ddb[_0x3be2('0x36')]);_0x55288a[_0x3be2('0x39')]=_[_0x3be2('0x48')](_0x4f5ddb[_0x3be2('0x35')],qs[_0x3be2('0x3a')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x3a')]));_0x55288a[_0x3be2('0x39')]=_0x55288a[_0x3be2('0x39')][_0x3be2('0x3b')]?_0x55288a[_0x3be2('0x39')]:_0x4f5ddb[_0x3be2('0x35')];_0x55288a[_0x3be2('0x5b')]=qs[_0x3be2('0x3c')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x3c')]);_0x55288a[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x383f9[_0x3be2('0x36')],_0x4f5ddb[_0x3be2('0x38')]));if(_0x383f9[_0x3be2('0x36')][_0x3be2('0x3f')]){_0x55288a[_0x3be2('0x3d')]=_[_0x3be2('0x49')](_0x55288a['where'],{'$or':_[_0x3be2('0x2f')](_0x55288a[_0x3be2('0x39')],function(_0x50a2dd){var _0xba4b13={};_0xba4b13[_0x50a2dd]={'$like':'%'+_0x383f9[_0x3be2('0x36')][_0x3be2('0x3f')]+'%'};return _0xba4b13;})});}_0x55288a=_['merge']({},_0x55288a,_0x383f9[_0x3be2('0x41')]);return _0x1635d3[_0x3be2('0x66')](_0x55288a);}})[_0x3be2('0x26')](function(_0x4efced){if(_0x4efced){_0x18e09b=_0x4efced[_0x3be2('0x3b')];if(!_0x383f9['query']['hasOwnProperty'](_0x3be2('0x5a'))){_0x55288a[_0x3be2('0x1f')]=qs[_0x3be2('0x1f')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x1f')]);_0x55288a[_0x3be2('0x1d')]=qs[_0x3be2('0x1d')](_0x383f9[_0x3be2('0x36')][_0x3be2('0x1d')]);}return _0x1635d3[_0x3be2('0x66')](_0x55288a);}})[_0x3be2('0x26')](function(_0x4d7806){if(_0x4d7806){return _0x4d7806?{'count':_0x18e09b,'rows':_0x4d7806}:null;}})[_0x3be2('0x26')](respondWithResult(_0x37646d,null))[_0x3be2('0x46')](handleError(_0x37646d,null));};exports[_0x3be2('0x67')]=function(_0x366527,_0x15b579,_0x4bc71c){var _0x2e53f8=_0x366527[_0x3be2('0x4c')][_0x3be2('0x68')];return db[_0x3be2('0x69')]['findAll']({'where':{'id':_0x2e53f8},'attributes':['id'],'include':[{'model':db[_0x3be2('0x5c')],'as':'Agents','attributes':['id',_0x3be2('0x2c'),_0x3be2('0x6a'),_0x3be2('0x6b'),_0x3be2('0x6c')],'raw':!![]}]})[_0x3be2('0x26')](function(_0x83e324){if(_0x83e324){var _0x30aae2=_['flatMap'](_0x83e324,function(_0x120834){var _0x198921=_0x120834[_0x3be2('0x28')]({'plain':!![]});return _0x198921[_0x3be2('0x6d')];});return db['MailQueue'][_0x3be2('0x4a')]({'where':{'id':_0x366527[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](function(_0x4dc5fc){return db['sequelize']['transaction'](function(_0x33d8c1){return _0x4dc5fc[_0x3be2('0x67')](_0x2e53f8,{'transaction':_0x33d8c1})[_0x3be2('0x26')](function(){return BPromise[_0x3be2('0x6e')](_0x30aae2,function(_0x51a244){return db[_0x3be2('0x58')][_0x3be2('0x6f')]({'where':{'UserId':_0x51a244['id'],'MailQueueId':_0x366527['params']['id']},'transaction':_0x33d8c1});});})[_0x3be2('0x26')](function(){_0x30aae2['forEach'](function(_0x8d3045){socket[_0x3be2('0x70')](_0x3be2('0x71'),{'UserId':_0x8d3045['id'],'MailQueueId':_0x4dc5fc['id']});});});});});}})[_0x3be2('0x26')](respondWithStatusCode(_0x15b579,null))[_0x3be2('0x46')](handleError(_0x15b579,null));};exports[_0x3be2('0x72')]=function(_0x460c75,_0x1d02c4,_0x3c5ee1){return db[_0x3be2('0x69')][_0x3be2('0x44')]({'where':{'id':_0x460c75[_0x3be2('0x36')][_0x3be2('0x68')]},'attributes':['id'],'include':[{'model':db[_0x3be2('0x5c')],'as':_0x3be2('0x6d'),'attributes':['id'],'raw':!![]}]})[_0x3be2('0x26')](handleEntityNotFound(_0x1d02c4,null))[_0x3be2('0x26')](function(_0xe3d8a){var _0x15bc3d=_['map'](_0xe3d8a,'id');var _0x9de14f=[];var _0x2b5f8d=[];var _0x42bf09=squel['select']();_0x42bf09['field'](_0x3be2('0x73'))['from'](_0x3be2('0x74'),'tq')[_0x3be2('0x75')](_0x3be2('0x76'),'ut',_0x3be2('0x77'))[_0x3be2('0x3d')](_0x3be2('0x78'),_0x460c75[_0x3be2('0x47')]['id']);for(var _0x1d0fb4=0x0;_0x1d0fb4<_0xe3d8a[_0x3be2('0x3b')];_0x1d0fb4+=0x1){let _0x2f61c0=_0xe3d8a[_0x1d0fb4];for(var _0x53a1b1=0x0;_0x53a1b1<_0x2f61c0['Agents']['length'];_0x53a1b1+=0x1){let _0x4950d7=_0x2f61c0[_0x3be2('0x6d')][_0x53a1b1];var _0x3b32ef=_0x42bf09['clone']();_0x3b32ef[_0x3be2('0x3d')](_0x3be2('0x79'),_0x4950d7['id']);_0x2b5f8d[_0x3be2('0x7a')](db[_0x3be2('0x7b')][_0x3be2('0x36')](_0x3b32ef['toString'](),{'type':db[_0x3be2('0x7b')][_0x3be2('0x7c')][_0x3be2('0x7d')]})['then'](function(_0x160c3e){if(_0x160c3e[_0x3be2('0x3b')]===0x1){return _0x4950d7['id'];}else{var _0x1cbc5a=_['every'](_[_0x3be2('0x2f')](_0x160c3e,_0x3be2('0x7e')),function(_0x16231b){return _[_0x3be2('0x7f')](_0x15bc3d,_0x16231b);});if(_0x1cbc5a){return _0x4950d7['id'];}}}));}}return BPromise[_0x3be2('0x80')](_0x2b5f8d)[_0x3be2('0x26')](function(_0x434f96){_0x9de14f=_(_0x9de14f)[_0x3be2('0x81')](_0x434f96)['compact']()[_0x3be2('0x82')]();return db[_0x3be2('0x30')][_0x3be2('0x4a')]({'where':{'id':_0x460c75[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](function(_0x34e2a4){return db['sequelize'][_0x3be2('0x83')](function(_0x3473ed){return _0x34e2a4['removeTeams'](_0x460c75[_0x3be2('0x36')][_0x3be2('0x68')],{'transaction':_0x3473ed})[_0x3be2('0x26')](function(){if(!_[_0x3be2('0x84')](_0x9de14f)){return _0x34e2a4[_0x3be2('0x85')](_0x9de14f,{'transaction':_0x3473ed});}})[_0x3be2('0x26')](function(){_0x9de14f[_0x3be2('0x86')](function(_0x1dac2b){socket[_0x3be2('0x70')]('userMailQueue:remove',{'UserId':_0x1dac2b,'MailQueueId':_0x34e2a4['id']});});});});});});})[_0x3be2('0x26')](respondWithStatusCode(_0x1d02c4,null))[_0x3be2('0x46')](handleError(_0x1d02c4,null));};exports['addAgents']=function(_0x9ca7ad,_0x4e3191,_0x310418){return db[_0x3be2('0x30')]['find']({'where':{'id':_0x9ca7ad[_0x3be2('0x47')]['id']}})['then'](handleEntityNotFound(_0x4e3191,null))[_0x3be2('0x26')](function(_0x12f26e){if(_0x12f26e){return _0x12f26e[_0x3be2('0x87')](_0x9ca7ad[_0x3be2('0x4c')][_0x3be2('0x68')],_[_0x3be2('0x88')](_0x9ca7ad[_0x3be2('0x4c')],['ids','id'])||{})[_0x3be2('0x89')](function(_0x45ee22){for(var _0x1d48f6=0x0;_0x1d48f6<_0x9ca7ad[_0x3be2('0x4c')][_0x3be2('0x68')][_0x3be2('0x3b')];_0x1d48f6+=0x1){socket['emit']('userMailQueue:save',{'UserId':Number(_0x9ca7ad['body']['ids'][_0x1d48f6]),'MailQueueId':Number(_0x9ca7ad[_0x3be2('0x47')]['id'])});}return _0x45ee22;});}})['then'](respondWithResult(_0x4e3191,null))['catch'](handleError(_0x4e3191,null));};exports[_0x3be2('0x85')]=function(_0x5aa847,_0x196b29,_0x26a5bb){return db['MailQueue'][_0x3be2('0x4a')]({'where':{'id':_0x5aa847[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x196b29,null))[_0x3be2('0x26')](function(_0x72b487){if(_0x72b487){return _0x72b487[_0x3be2('0x85')](_0x5aa847['query'][_0x3be2('0x68')])[_0x3be2('0x26')](function(){if(_[_0x3be2('0x8a')](_0x5aa847['query']['ids'])){for(var _0x455ed5=0x0;_0x455ed5<_0x5aa847[_0x3be2('0x36')][_0x3be2('0x68')][_0x3be2('0x3b')];_0x455ed5+=0x1){socket[_0x3be2('0x70')](_0x3be2('0x8b'),{'UserId':Number(_0x5aa847[_0x3be2('0x36')][_0x3be2('0x68')][_0x455ed5]),'MailQueueId':Number(_0x5aa847[_0x3be2('0x47')]['id'])});}}else{socket[_0x3be2('0x70')](_0x3be2('0x8b'),{'UserId':Number(_0x5aa847[_0x3be2('0x36')][_0x3be2('0x68')]),'MailQueueId':Number(_0x5aa847[_0x3be2('0x47')]['id'])});}});}})[_0x3be2('0x26')](respondWithStatusCode(_0x196b29,null))['catch'](handleError(_0x196b29,null));};exports[_0x3be2('0x8c')]=function(_0x5ea1df,_0x3c46c5,_0x916b41){var _0x4458be={};var _0x4640b1={};var _0x407123;var _0x425f3f;return db[_0x3be2('0x30')][_0x3be2('0x57')]({'where':{'id':_0x5ea1df[_0x3be2('0x47')]['id']}})[_0x3be2('0x26')](handleEntityNotFound(_0x3c46c5,null))[_0x3be2('0x26')](function(_0x140c4b){if(_0x140c4b){_0x407123=_0x140c4b;_0x4640b1[_0x3be2('0x35')]=_['keys'](db[_0x3be2('0x5c')][_0x3be2('0x31')]);_0x4640b1[_0x3be2('0x36')]=_[_0x3be2('0x37')](_0x5ea1df[_0x3be2('0x36')]);_0x4640b1[_0x3be2('0x38')]=_[_0x3be2('0x48')](_0x4640b1['model'],_0x4640b1[_0x3be2('0x36')]);_0x4458be['attributes']=_[_0x3be2('0x48')](_0x4640b1[_0x3be2('0x35')],qs[_0x3be2('0x3a')](_0x5ea1df[_0x3be2('0x36')]['fields']));_0x4458be[_0x3be2('0x39')]=_0x4458be[_0x3be2('0x39')]['length']?_0x4458be[_0x3be2('0x39')]:_0x4640b1[_0x3be2('0x35')];_0x4458be[_0x3be2('0x5b')]=qs[_0x3be2('0x3c')](_0x5ea1df[_0x3be2('0x36')]['sort']);_0x4458be[_0x3be2('0x3d')]=qs[_0x3be2('0x38')](_[_0x3be2('0x3e')](_0x5ea1df['query'],_0x4640b1['filters']));if(_0x5ea1df[_0x3be2('0x36')]['filter']){_0x4458be[_0x3be2('0x3d')]=_[_0x3be2('0x49')](_0x4458be[_0x3be2('0x3d')],{'$or':_[_0x3be2('0x2f')](_0x4458be[_0x3be2('0x39')],function(_0x4fef9c){var _0x495beb={};_0x495beb[_0x4fef9c]={'$like':'%'+_0x5ea1df['query'][_0x3be2('0x3f')]+'%'};return _0x495beb;})});}_0x4458be=_['merge']({},_0x4458be,_0x5ea1df[_0x3be2('0x41')]);return _0x407123['getAgents'](_0x4458be);}})[_0x3be2('0x26')](function(_0x410b93){if(_0x410b93){_0x425f3f=_0x410b93[_0x3be2('0x3b')];if(!_0x5ea1df[_0x3be2('0x36')][_0x3be2('0x59')](_0x3be2('0x5a'))){_0x4458be[_0x3be2('0x1f')]=qs[_0x3be2('0x1f')](_0x5ea1df[_0x3be2('0x36')][_0x3be2('0x1f')]);_0x4458be['offset']=qs[_0x3be2('0x1d')](_0x5ea1df[_0x3be2('0x36')]['offset']);}return _0x407123[_0x3be2('0x8c')](_0x4458be);}})[_0x3be2('0x26')](function(_0x201158){if(_0x201158){return _0x201158?{'count':_0x425f3f,'rows':_0x201158}:null;}})[_0x3be2('0x26')](respondWithResult(_0x3c46c5,null))[_0x3be2('0x46')](handleError(_0x3c46c5,null));};
\ No newline at end of file
index dcb7a04..5efa6f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64c3=['exports','events','../../mysqldb','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x5c6c2e,_0x86e980){var _0xd262ac=function(_0x2469a1){while(--_0x2469a1){_0x5c6c2e['push'](_0x5c6c2e['shift']());}};_0xd262ac(++_0x86e980);}(_0x64c3,0x17b));var _0x364c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64c3[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x364c('0x0'));var MailQueue=require(_0x364c('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x364c('0x2')](0x0);var events={'afterCreate':_0x364c('0x3'),'afterUpdate':_0x364c('0x4'),'afterDestroy':_0x364c('0x5')};function emitEvent(_0x948167){return function(_0x279b3c,_0x1608eb,_0x45f7d0){MailQueueEvents[_0x364c('0x6')](_0x948167+':'+_0x279b3c['id'],_0x279b3c);MailQueueEvents['emit'](_0x948167,_0x279b3c);_0x45f7d0(null);};}for(var e in events){if(events[_0x364c('0x7')](e)){var event=events[e];MailQueue['hook'](e,emitEvent(event));}}module[_0x364c('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0xa335=['exports','../../mysqldb','MailQueue','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x549a09,_0x2fe584){var _0x3ef978=function(_0x245752){while(--_0x245752){_0x549a09['push'](_0x549a09['shift']());}};_0x3ef978(++_0x2fe584);}(_0xa335,0x145));var _0x5a33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa335[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x5a33('0x0'))['db'][_0x5a33('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5a33('0x2'),'afterUpdate':_0x5a33('0x3'),'afterDestroy':_0x5a33('0x4')};function emitEvent(_0x5b62e1){return function(_0x3e91e2,_0x2bffca,_0x1bf6be){MailQueueEvents[_0x5a33('0x5')](_0x5b62e1+':'+_0x3e91e2['id'],_0x3e91e2);MailQueueEvents[_0x5a33('0x5')](_0x5b62e1,_0x3e91e2);_0x1bf6be(null);};}for(var e in events){if(events[_0x5a33('0x6')](e)){var event=events[e];MailQueue[_0x5a33('0x7')](e,emitEvent(event));}}module[_0x5a33('0x8')]=MailQueueEvents;
\ No newline at end of file
index 955ec95..7bccb2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6df=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','define','MailQueue','lodash','util'];(function(_0x41627a,_0x2947f3){var _0x2ee59c=function(_0x487ca9){while(--_0x487ca9){_0x41627a['push'](_0x41627a['shift']());}};_0x2ee59c(++_0x2947f3);}(_0xe6df,0x11c));var _0xfe6d=function(_0x291369,_0xac73ef){_0x291369=_0x291369-0x0;var _0x4ca387=_0xe6df[_0x291369];return _0x4ca387;};'use strict';var _=require(_0xfe6d('0x0'));var util=require(_0xfe6d('0x1'));var logger=require(_0xfe6d('0x2'))(_0xfe6d('0x3'));var moment=require(_0xfe6d('0x4'));var BPromise=require(_0xfe6d('0x5'));var rp=require(_0xfe6d('0x6'));var fs=require('fs');var path=require(_0xfe6d('0x7'));var rimraf=require(_0xfe6d('0x8'));var config=require(_0xfe6d('0x9'));var attributes=require(_0xfe6d('0xa'));module['exports']=function(_0x3cbfae,_0x1456b7){return _0x3cbfae[_0xfe6d('0xb')](_0xfe6d('0xc'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c36=['mail_queues','lodash','util','../../config/logger','api','bluebird','../../config/environment','./mailQueue.attributes','define','MailQueue'];(function(_0x431ae1,_0x385f06){var _0x27fcbd=function(_0x16e71f){while(--_0x16e71f){_0x431ae1['push'](_0x431ae1['shift']());}};_0x27fcbd(++_0x385f06);}(_0x3c36,0x1d7));var _0x63c3=function(_0x4452b6,_0x920e41){_0x4452b6=_0x4452b6-0x0;var _0x2b48f8=_0x3c36[_0x4452b6];return _0x2b48f8;};'use strict';var _=require(_0x63c3('0x0'));var util=require(_0x63c3('0x1'));var logger=require(_0x63c3('0x2'))(_0x63c3('0x3'));var moment=require('moment');var BPromise=require(_0x63c3('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x63c3('0x5'));var attributes=require(_0x63c3('0x6'));module['exports']=function(_0xef4a58,_0x43f0fd){return _0xef4a58[_0x63c3('0x7')](_0x63c3('0x8'),attributes,{'tableName':_0x63c3('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index befcb0c..815ffa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x634d=['http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','info','MailQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','findAll','options','where','attributes','map','include','model','then','debug','find','ShowMailQueue','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x15ec12,_0x23d8ee){var _0x1b6747=function(_0x4ac478){while(--_0x4ac478){_0x15ec12['push'](_0x15ec12['shift']());}};_0x1b6747(++_0x23d8ee);}(_0x634d,0x120));var _0xd634=function(_0x4edb52,_0x4b7f20){_0x4edb52=_0x4edb52-0x0;var _0xde3b4a=_0x634d[_0x4edb52];return _0xde3b4a;};'use strict';var _=require(_0xd634('0x0'));var util=require(_0xd634('0x1'));var moment=require(_0xd634('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd634('0x3'))['db'];var utils=require(_0xd634('0x4'));var logger=require(_0xd634('0x5'))('rpc');var config=require(_0xd634('0x6'));var jayson=require(_0xd634('0x7'));var client=jayson['client'][_0xd634('0x8')]({'port':0x232a});config[_0xd634('0x9')]=_[_0xd634('0xa')](config[_0xd634('0x9')],{'host':_0xd634('0xb'),'port':0x18eb});var socket=require(_0xd634('0xc'))(new Redis(config['redis']));require(_0xd634('0xd'))[_0xd634('0xe')](socket);function respondWithRpcPromise(_0x5b4ebc,_0x1985fa,_0x360fac){return new BPromise(function(_0x53a011,_0x2bd5ea){return client['request'](_0x5b4ebc,_0x360fac)['then'](function(_0x558334){logger[_0xd634('0xf')](_0xd634('0x10'),_0x1985fa,_0xd634('0x11'));logger['debug']('MailQueue,\x20%s,\x20%s,\x20%s',_0x1985fa,_0xd634('0x11'),JSON[_0xd634('0x12')](_0x558334));if(_0x558334[_0xd634('0x13')]){if(_0x558334['error'][_0xd634('0x14')]===0x1f4){logger[_0xd634('0x13')](_0xd634('0x10'),_0x1985fa,_0x558334[_0xd634('0x13')][_0xd634('0x15')]);return _0x2bd5ea(_0x558334[_0xd634('0x13')][_0xd634('0x15')]);}logger[_0xd634('0x13')](_0xd634('0x10'),_0x1985fa,_0x558334['error'][_0xd634('0x15')]);return _0x53a011(_0x558334[_0xd634('0x13')][_0xd634('0x15')]);}else{logger[_0xd634('0xf')](_0xd634('0x10'),_0x1985fa,_0xd634('0x11'));_0x53a011(_0x558334[_0xd634('0x16')][_0xd634('0x15')]);}})[_0xd634('0x17')](function(_0x387300){logger['error'](_0xd634('0x10'),_0x1985fa,_0x387300);_0x2bd5ea(_0x387300);});});}exports[_0xd634('0x18')]=function(_0x1e61d7){var _0x413348=this;return new Promise(function(_0x7070f3,_0x1f904d){return db[_0xd634('0x19')][_0xd634('0x1a')]({'raw':_0x1e61d7[_0xd634('0x1b')]?_0x1e61d7[_0xd634('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x1e61d7['options']?_0x1e61d7[_0xd634('0x1b')][_0xd634('0x1c')]||null:null,'attributes':_0x1e61d7[_0xd634('0x1b')]?_0x1e61d7['options'][_0xd634('0x1d')]||null:null,'limit':_0x1e61d7[_0xd634('0x1b')]?_0x1e61d7['options']['limit']||null:null,'include':_0x1e61d7[_0xd634('0x1b')]?_0x1e61d7['options']['include']?_[_0xd634('0x1e')](_0x1e61d7[_0xd634('0x1b')][_0xd634('0x1f')],function(_0x548f5b){return{'model':db[_0x548f5b['model']],'as':_0x548f5b['as'],'attributes':_0x548f5b[_0xd634('0x1d')],'include':_0x548f5b['include']?_[_0xd634('0x1e')](_0x548f5b[_0xd634('0x1f')],function(_0x262d2f){return{'model':db[_0x262d2f[_0xd634('0x20')]],'as':_0x262d2f['as'],'attributes':_0x262d2f[_0xd634('0x1d')],'include':_0x262d2f[_0xd634('0x1f')]?_[_0xd634('0x1e')](_0x262d2f[_0xd634('0x1f')],function(_0x427c03){return{'model':db[_0x427c03[_0xd634('0x20')]],'as':_0x427c03['as'],'attributes':_0x427c03[_0xd634('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd634('0x21')](function(_0x37783f){logger[_0xd634('0xf')](_0xd634('0x18'),_0x1e61d7);logger[_0xd634('0x22')](_0xd634('0x18'),_0x1e61d7,JSON[_0xd634('0x12')](_0x37783f));_0x7070f3(_0x37783f);})[_0xd634('0x17')](function(_0x45b049){logger[_0xd634('0x13')]('GetMailQueue',_0x45b049[_0xd634('0x15')],_0x1e61d7);_0x1f904d(_0x413348['error'](0x1f4,_0x45b049[_0xd634('0x15')]));});});};exports['ShowMailQueue']=function(_0x15ce96){var _0x40e4d5=this;return new Promise(function(_0x3dae52,_0x4af19e){return db[_0xd634('0x19')][_0xd634('0x23')]({'raw':_0x15ce96[_0xd634('0x1b')]?_0x15ce96[_0xd634('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x15ce96[_0xd634('0x1b')]?_0x15ce96[_0xd634('0x1b')][_0xd634('0x1c')]||null:null,'attributes':_0x15ce96[_0xd634('0x1b')]?_0x15ce96[_0xd634('0x1b')][_0xd634('0x1d')]||null:null,'include':_0x15ce96[_0xd634('0x1b')]?_0x15ce96[_0xd634('0x1b')]['include']?_[_0xd634('0x1e')](_0x15ce96[_0xd634('0x1b')]['include'],function(_0x488666){return{'model':db[_0x488666['model']],'as':_0x488666['as'],'attributes':_0x488666[_0xd634('0x1d')],'include':_0x488666[_0xd634('0x1f')]?_[_0xd634('0x1e')](_0x488666[_0xd634('0x1f')],function(_0x126f2f){return{'model':db[_0x126f2f[_0xd634('0x20')]],'as':_0x126f2f['as'],'attributes':_0x126f2f['attributes'],'include':_0x126f2f[_0xd634('0x1f')]?_[_0xd634('0x1e')](_0x126f2f[_0xd634('0x1f')],function(_0x1c7a21){return{'model':db[_0x1c7a21[_0xd634('0x20')]],'as':_0x1c7a21['as'],'attributes':_0x1c7a21[_0xd634('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xd634('0x21')](function(_0x2c1228){logger['info'](_0xd634('0x24'),_0x15ce96);logger['debug'](_0xd634('0x24'),_0x15ce96,JSON[_0xd634('0x12')](_0x2c1228));_0x3dae52(_0x2c1228);})[_0xd634('0x17')](function(_0x14e55e){logger[_0xd634('0x13')](_0xd634('0x24'),_0x14e55e[_0xd634('0x15')],_0x15ce96);_0x4af19e(_0x40e4d5['error'](0x1f4,_0x14e55e[_0xd634('0x15')]));});});};
\ No newline at end of file
+var _0x0628=['../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s','debug','MailQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetMailQueue','MailQueue','options','raw','where','limit','map','include','attributes','model','ShowMailQueue','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x0628,0x173));var _0x8062=function(_0x1fee6c,_0x423559){_0x1fee6c=_0x1fee6c-0x0;var _0x5c7760=_0x0628[_0x1fee6c];return _0x5c7760;};'use strict';var _=require(_0x8062('0x0'));var util=require(_0x8062('0x1'));var moment=require(_0x8062('0x2'));var BPromise=require('bluebird');var rs=require(_0x8062('0x3'));var fs=require('fs');var Redis=require(_0x8062('0x4'));var db=require(_0x8062('0x5'))['db'];var utils=require(_0x8062('0x6'));var logger=require(_0x8062('0x7'))(_0x8062('0x8'));var config=require(_0x8062('0x9'));var jayson=require(_0x8062('0xa'));var client=jayson['client'][_0x8062('0xb')]({'port':0x232a});config[_0x8062('0xc')]=_[_0x8062('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8062('0xe'))(new Redis(config[_0x8062('0xc')]));require(_0x8062('0xf'))[_0x8062('0x10')](socket);function respondWithRpcPromise(_0x2f2705,_0xded67c,_0xf3e6ab){return new BPromise(function(_0xc9b267,_0x1b6da2){return client[_0x8062('0x11')](_0x2f2705,_0xf3e6ab)[_0x8062('0x12')](function(_0x38833c){logger[_0x8062('0x13')](_0x8062('0x14'),_0xded67c,'request\x20sent');logger[_0x8062('0x15')](_0x8062('0x16'),_0xded67c,_0x8062('0x17'),JSON[_0x8062('0x18')](_0x38833c));if(_0x38833c['error']){if(_0x38833c[_0x8062('0x19')][_0x8062('0x1a')]===0x1f4){logger[_0x8062('0x19')](_0x8062('0x14'),_0xded67c,_0x38833c['error']['message']);return _0x1b6da2(_0x38833c[_0x8062('0x19')][_0x8062('0x1b')]);}logger['error'](_0x8062('0x14'),_0xded67c,_0x38833c[_0x8062('0x19')]['message']);return _0xc9b267(_0x38833c['error']['message']);}else{logger['info'](_0x8062('0x14'),_0xded67c,_0x8062('0x17'));_0xc9b267(_0x38833c[_0x8062('0x1c')][_0x8062('0x1b')]);}})[_0x8062('0x1d')](function(_0x2dbe80){logger[_0x8062('0x19')](_0x8062('0x14'),_0xded67c,_0x2dbe80);_0x1b6da2(_0x2dbe80);});});}exports[_0x8062('0x1e')]=function(_0x371fa8){var _0x417bdb=this;return new Promise(function(_0x2764de,_0x344b93){return db[_0x8062('0x1f')]['findAll']({'raw':_0x371fa8[_0x8062('0x20')]?_0x371fa8[_0x8062('0x20')][_0x8062('0x21')]===undefined?!![]:![]:!![],'where':_0x371fa8[_0x8062('0x20')]?_0x371fa8[_0x8062('0x20')][_0x8062('0x22')]||null:null,'attributes':_0x371fa8[_0x8062('0x20')]?_0x371fa8['options']['attributes']||null:null,'limit':_0x371fa8[_0x8062('0x20')]?_0x371fa8[_0x8062('0x20')][_0x8062('0x23')]||null:null,'include':_0x371fa8[_0x8062('0x20')]?_0x371fa8['options']['include']?_[_0x8062('0x24')](_0x371fa8[_0x8062('0x20')][_0x8062('0x25')],function(_0x2c6740){return{'model':db[_0x2c6740['model']],'as':_0x2c6740['as'],'attributes':_0x2c6740[_0x8062('0x26')],'include':_0x2c6740[_0x8062('0x25')]?_[_0x8062('0x24')](_0x2c6740[_0x8062('0x25')],function(_0x3721e6){return{'model':db[_0x3721e6[_0x8062('0x27')]],'as':_0x3721e6['as'],'attributes':_0x3721e6[_0x8062('0x26')],'include':_0x3721e6[_0x8062('0x25')]?_[_0x8062('0x24')](_0x3721e6['include'],function(_0x1a0d6d){return{'model':db[_0x1a0d6d['model']],'as':_0x1a0d6d['as'],'attributes':_0x1a0d6d[_0x8062('0x26')]};}):[]};}):[]};}):[]:[]})[_0x8062('0x12')](function(_0x2f69f4){logger[_0x8062('0x13')](_0x8062('0x1e'),_0x371fa8);logger['debug']('GetMailQueue',_0x371fa8,JSON['stringify'](_0x2f69f4));_0x2764de(_0x2f69f4);})[_0x8062('0x1d')](function(_0x2514ad){logger[_0x8062('0x19')](_0x8062('0x1e'),_0x2514ad[_0x8062('0x1b')],_0x371fa8);_0x344b93(_0x417bdb['error'](0x1f4,_0x2514ad[_0x8062('0x1b')]));});});};exports[_0x8062('0x28')]=function(_0xc59e76){var _0x413ce4=this;return new Promise(function(_0x5a3b47,_0x3cb521){return db[_0x8062('0x1f')][_0x8062('0x29')]({'raw':_0xc59e76[_0x8062('0x20')]?_0xc59e76['options'][_0x8062('0x21')]===undefined?!![]:![]:!![],'where':_0xc59e76[_0x8062('0x20')]?_0xc59e76[_0x8062('0x20')][_0x8062('0x22')]||null:null,'attributes':_0xc59e76['options']?_0xc59e76[_0x8062('0x20')][_0x8062('0x26')]||null:null,'include':_0xc59e76[_0x8062('0x20')]?_0xc59e76[_0x8062('0x20')]['include']?_['map'](_0xc59e76[_0x8062('0x20')][_0x8062('0x25')],function(_0x438bc1){return{'model':db[_0x438bc1[_0x8062('0x27')]],'as':_0x438bc1['as'],'attributes':_0x438bc1['attributes'],'include':_0x438bc1[_0x8062('0x25')]?_[_0x8062('0x24')](_0x438bc1[_0x8062('0x25')],function(_0x11075b){return{'model':db[_0x11075b['model']],'as':_0x11075b['as'],'attributes':_0x11075b['attributes'],'include':_0x11075b[_0x8062('0x25')]?_['map'](_0x11075b['include'],function(_0x22796a){return{'model':db[_0x22796a['model']],'as':_0x22796a['as'],'attributes':_0x22796a[_0x8062('0x26')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xdf5642){logger[_0x8062('0x13')](_0x8062('0x28'),_0xc59e76);logger[_0x8062('0x15')](_0x8062('0x28'),_0xc59e76,JSON[_0x8062('0x18')](_0xdf5642));_0x5a3b47(_0xdf5642);})['catch'](function(_0x1e1018){logger[_0x8062('0x19')](_0x8062('0x28'),_0x1e1018['message'],_0xc59e76);_0x3cb521(_0x413ce4[_0x8062('0x19')](0x1f4,_0x1e1018[_0x8062('0x1b')]));});});};
\ No newline at end of file
index 3b104b7..33fa7fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x827a=['length','mailQueue:','./mailQueue.events','update','emit','removeListener','register'];(function(_0x15cec1,_0x24fe2d){var _0x4c2274=function(_0x11712b){while(--_0x11712b){_0x15cec1['push'](_0x15cec1['shift']());}};_0x4c2274(++_0x24fe2d);}(_0x827a,0x167));var _0xa827=function(_0x512422,_0x1e294c){_0x512422=_0x512422-0x0;var _0x2b4d5b=_0x827a[_0x512422];return _0x2b4d5b;};'use strict';var MailQueueEvents=require(_0xa827('0x0'));var events=['save','remove',_0xa827('0x1')];function createListener(_0x228511,_0x1053d0){return function(_0xd5d420){_0x1053d0[_0xa827('0x2')](_0x228511,_0xd5d420);};}function removeListener(_0x57484c,_0x184e05){return function(){MailQueueEvents[_0xa827('0x3')](_0x57484c,_0x184e05);};}exports[_0xa827('0x4')]=function(_0x5d92ab){for(var _0x15d9fe=0x0,_0x5af65e=events[_0xa827('0x5')];_0x15d9fe<_0x5af65e;_0x15d9fe++){var _0x3de707=events[_0x15d9fe];var _0x512f81=createListener(_0xa827('0x6')+_0x3de707,_0x5d92ab);MailQueueEvents['on'](_0x3de707,_0x512f81);}};
\ No newline at end of file
+var _0x8f4c=['register','length','mailQueue:','./mailQueue.events','save','remove','update','emit'];(function(_0x2821d0,_0x5149d1){var _0x3683d6=function(_0x238d51){while(--_0x238d51){_0x2821d0['push'](_0x2821d0['shift']());}};_0x3683d6(++_0x5149d1);}(_0x8f4c,0x113));var _0xc8f4=function(_0x4f51f9,_0x5d5613){_0x4f51f9=_0x4f51f9-0x0;var _0x533984=_0x8f4c[_0x4f51f9];return _0x533984;};'use strict';var MailQueueEvents=require(_0xc8f4('0x0'));var events=[_0xc8f4('0x1'),_0xc8f4('0x2'),_0xc8f4('0x3')];function createListener(_0x19893b,_0x134d73){return function(_0x580083){_0x134d73[_0xc8f4('0x4')](_0x19893b,_0x580083);};}function removeListener(_0x47350d,_0x133764){return function(){MailQueueEvents['removeListener'](_0x47350d,_0x133764);};}exports[_0xc8f4('0x5')]=function(_0x5208da){for(var _0x4c86f8=0x0,_0x520063=events[_0xc8f4('0x6')];_0x4c86f8<_0x520063;_0x4c86f8++){var _0x48c39d=events[_0x4c86f8];var _0x3ea9a2=createListener(_0xc8f4('0x7')+_0x48c39d,_0x5208da);MailQueueEvents['on'](_0x48c39d,_0x3ea9a2);}};
\ No newline at end of file
index 64a8a96..104cfbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd05a=['post','create','put','/:id','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','./mailQueueReport.controller','isAuthenticated','index','get','describe','show'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd05a,0xa8));var _0xad05=function(_0x406c63,_0x5f4369){_0x406c63=_0x406c63-0x0;var _0x10f132=_0xd05a[_0x406c63];return _0x10f132;};'use strict';var multer=require(_0xad05('0x0'));var util=require(_0xad05('0x1'));var path=require(_0xad05('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xad05('0x3')]();var fs_extra=require(_0xad05('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xad05('0x5'));var config=require('../../config/environment');var controller=require(_0xad05('0x6'));router['get']('/',auth[_0xad05('0x7')](),controller[_0xad05('0x8')]);router[_0xad05('0x9')]('/describe',auth[_0xad05('0x7')](),controller[_0xad05('0xa')]);router['get']('/:id',auth[_0xad05('0x7')](),controller[_0xad05('0xb')]);router[_0xad05('0xc')]('/',auth[_0xad05('0x7')](),controller[_0xad05('0xd')]);router[_0xad05('0xe')](_0xad05('0xf'),auth[_0xad05('0x7')](),controller[_0xad05('0x10')]);router[_0xad05('0x11')](_0xad05('0xf'),auth['isAuthenticated'](),controller[_0xad05('0x12')]);module[_0xad05('0x13')]=router;
\ No newline at end of file
+var _0xddb6=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','index','/describe','describe','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x101557,_0x139da6){var _0xfda26a=function(_0x195b82){while(--_0x195b82){_0x101557['push'](_0x101557['shift']());}};_0xfda26a(++_0x139da6);}(_0xddb6,0x1a3));var _0x6ddb=function(_0x2bd486,_0x47a6ab){_0x2bd486=_0x2bd486-0x0;var _0x35c35f=_0xddb6[_0x2bd486];return _0x35c35f;};'use strict';var multer=require(_0x6ddb('0x0'));var util=require(_0x6ddb('0x1'));var path=require(_0x6ddb('0x2'));var timeout=require(_0x6ddb('0x3'));var express=require(_0x6ddb('0x4'));var router=express[_0x6ddb('0x5')]();var fs_extra=require(_0x6ddb('0x6'));var auth=require(_0x6ddb('0x7'));var interaction=require(_0x6ddb('0x8'));var config=require(_0x6ddb('0x9'));var controller=require(_0x6ddb('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x6ddb('0xb')]);router['get'](_0x6ddb('0xc'),auth['isAuthenticated'](),controller[_0x6ddb('0xd')]);router[_0x6ddb('0xe')](_0x6ddb('0xf'),auth[_0x6ddb('0x10')](),controller[_0x6ddb('0x11')]);router[_0x6ddb('0x12')]('/',auth['isAuthenticated'](),controller[_0x6ddb('0x13')]);router[_0x6ddb('0x14')]('/:id',auth[_0x6ddb('0x10')](),controller[_0x6ddb('0x15')]);router[_0x6ddb('0x16')](_0x6ddb('0xf'),auth[_0x6ddb('0x10')](),controller[_0x6ddb('0x17')]);module[_0x6ddb('0x18')]=router;
\ No newline at end of file
index 10e5b05..699c686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e06=['sequelize','exports','STRING','DATE','moment'];(function(_0x1ce281,_0xa492ca){var _0x3cf4aa=function(_0x390bb5){while(--_0x390bb5){_0x1ce281['push'](_0x1ce281['shift']());}};_0x3cf4aa(++_0xa492ca);}(_0x3e06,0x153));var _0x63e0=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x3e06[_0x42cae2];return _0x5f256f;};'use strict';var moment=require(_0x63e0('0x0'));var Sequelize=require(_0x63e0('0x1'));module[_0x63e0('0x2')]={'uniqueid':{'type':Sequelize[_0x63e0('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x63e0('0x3')]},'joinAt':{'type':Sequelize[_0x63e0('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x63e0('0x4')]},'exitAt':{'type':Sequelize[_0x63e0('0x4')]},'reason':{'type':Sequelize[_0x63e0('0x3')]}};
\ No newline at end of file
+var _0x65e0=['moment','sequelize','exports','STRING','DATE'];(function(_0x13e0e6,_0x146b11){var _0x3f374f=function(_0x4ac979){while(--_0x4ac979){_0x13e0e6['push'](_0x13e0e6['shift']());}};_0x3f374f(++_0x146b11);}(_0x65e0,0x96));var _0x065e=function(_0xc0213d,_0x4a3b1d){_0xc0213d=_0xc0213d-0x0;var _0x1a93c4=_0x65e0[_0xc0213d];return _0x1a93c4;};'use strict';var moment=require(_0x065e('0x0'));var Sequelize=require(_0x065e('0x1'));module[_0x065e('0x2')]={'uniqueid':{'type':Sequelize[_0x065e('0x3')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x065e('0x4')]},'leaveAt':{'type':Sequelize[_0x065e('0x4')]},'acceptAt':{'type':Sequelize[_0x065e('0x4')]},'exitAt':{'type':Sequelize[_0x065e('0x4')]},'reason':{'type':Sequelize[_0x065e('0x3')]}};
\ No newline at end of file
index f415adc..dea9e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['destroy','error','stack','name','send','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','MailQueueReport','rawAttributes','include','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','Content-Range','reject','save','then'];(function(_0x3a8c1e,_0x11b2fe){var _0x5c3f0f=function(_0x30c914){while(--_0x30c914){_0x3a8c1e['push'](_0x3a8c1e['shift']());}};_0x5c3f0f(++_0x11b2fe);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x48a836,_0xa1d010){_0x48a836=_0x48a836-0x0;var _0x249dc8=_0xeb3b[_0x48a836];return _0x249dc8;};'use strict';var emlformat=require(_0xbeb3('0x0'));var rimraf=require(_0xbeb3('0x1'));var zipdir=require(_0xbeb3('0x2'));var jsonpatch=require(_0xbeb3('0x3'));var rp=require(_0xbeb3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xbeb3('0x5'));var util=require('util');var path=require(_0xbeb3('0x6'));var sox=require('sox');var csv=require(_0xbeb3('0x7'));var ejs=require(_0xbeb3('0x8'));var fs=require('fs');var fs_extra=require(_0xbeb3('0x9'));var _=require(_0xbeb3('0xa'));var squel=require(_0xbeb3('0xb'));var crypto=require(_0xbeb3('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xbeb3('0xd'));var toCsv=require(_0xbeb3('0x7'));var querystring=require(_0xbeb3('0xe'));var Papa=require(_0xbeb3('0xf'));var Redis=require(_0xbeb3('0x10'));var authService=require(_0xbeb3('0x11'));var qs=require(_0xbeb3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbeb3('0x13'));var logger=require(_0xbeb3('0x14'))('api');var utils=require(_0xbeb3('0x15'));var config=require(_0xbeb3('0x16'));var licenseUtil=require(_0xbeb3('0x17'));var db=require(_0xbeb3('0x18'))['db'];function respondWithStatusCode(_0x19868e,_0x313296){_0x313296=_0x313296||0xcc;return function(_0x5b9ace){if(_0x5b9ace){return _0x19868e['sendStatus'](_0x313296);}return _0x19868e[_0xbeb3('0x19')](_0x313296)[_0xbeb3('0x1a')]();};}function respondWithResult(_0x5f521b,_0x4dfb28){_0x4dfb28=_0x4dfb28||0xc8;return function(_0xed9879){if(_0xed9879){return _0x5f521b[_0xbeb3('0x19')](_0x4dfb28)[_0xbeb3('0x1b')](_0xed9879);}};}function respondWithFilteredResult(_0x43d58a,_0x26daf2){return function(_0x535836){if(_0x535836){var _0x1aeaee=typeof _0x26daf2['offset']===_0xbeb3('0x1c')&&typeof _0x26daf2['limit']==='undefined';var _0x4f8481=_0x535836[_0xbeb3('0x1d')];var _0x44a4bb=_0x1aeaee?0x0:_0x26daf2[_0xbeb3('0x1e')];var _0x10b15d=_0x1aeaee?_0x535836['count']:_0x26daf2[_0xbeb3('0x1e')]+_0x26daf2[_0xbeb3('0x1f')];var _0xe2cc47;if(_0x10b15d>=_0x4f8481){_0x10b15d=_0x4f8481;_0xe2cc47=0xc8;}else{_0xe2cc47=0xce;}_0x43d58a['status'](_0xe2cc47);return _0x43d58a['set'](_0xbeb3('0x20'),_0x44a4bb+'-'+_0x10b15d+'/'+_0x4f8481)['json'](_0x535836);}return null;};}function patchUpdates(_0x1d917b){return function(_0x50b005){try{jsonpatch['apply'](_0x50b005,_0x1d917b,!![]);}catch(_0xfa2736){return BPromise[_0xbeb3('0x21')](_0xfa2736);}return _0x50b005[_0xbeb3('0x22')]();};}function saveUpdates(_0x4bd89e,_0x301899){return function(_0x18ea0f){if(_0x18ea0f){return _0x18ea0f['update'](_0x4bd89e)[_0xbeb3('0x23')](function(_0x366bdb){return _0x366bdb;});}return null;};}function removeEntity(_0x55a59d,_0xfc384a){return function(_0x278fe4){if(_0x278fe4){return _0x278fe4[_0xbeb3('0x24')]()[_0xbeb3('0x23')](function(){_0x55a59d[_0xbeb3('0x19')](0xcc)[_0xbeb3('0x1a')]();});}};}function handleEntityNotFound(_0x84921a,_0x340581){return function(_0x46fe17){if(!_0x46fe17){_0x84921a['sendStatus'](0x194);}return _0x46fe17;};}function handleError(_0x4e695e,_0x1f36b9){_0x1f36b9=_0x1f36b9||0x1f4;return function(_0x520116){logger[_0xbeb3('0x25')](_0x520116[_0xbeb3('0x26')]);if(_0x520116[_0xbeb3('0x27')]){delete _0x520116[_0xbeb3('0x27')];}_0x4e695e['status'](_0x1f36b9)[_0xbeb3('0x28')](_0x520116);};}exports['index']=function(_0x26cd8f,_0xab301c){var _0x5bd93d={},_0x483198={},_0x9b8f13={'count':0x0,'rows':[]};var _0x585c6f=_['map'](db['MailQueueReport']['rawAttributes'],function(_0xf5dbaf){return{'name':_0xf5dbaf['fieldName'],'type':_0xf5dbaf[_0xbeb3('0x29')][_0xbeb3('0x2a')]};});_0x483198[_0xbeb3('0x2b')]=_[_0xbeb3('0x2c')](_0x585c6f,_0xbeb3('0x27'));_0x483198[_0xbeb3('0x2d')]=_[_0xbeb3('0x2e')](_0x26cd8f[_0xbeb3('0x2d')]);_0x483198[_0xbeb3('0x2f')]=_[_0xbeb3('0x30')](_0x483198['model'],_0x483198[_0xbeb3('0x2d')]);_0x5bd93d[_0xbeb3('0x31')]=_['intersection'](_0x483198[_0xbeb3('0x2b')],qs[_0xbeb3('0x32')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x32')]));_0x5bd93d['attributes']=_0x5bd93d[_0xbeb3('0x31')][_0xbeb3('0x33')]?_0x5bd93d[_0xbeb3('0x31')]:_0x483198[_0xbeb3('0x2b')];if(!_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x34')](_0xbeb3('0x35'))){_0x5bd93d[_0xbeb3('0x1f')]=qs[_0xbeb3('0x1f')](_0x26cd8f['query'][_0xbeb3('0x1f')]);_0x5bd93d['offset']=qs[_0xbeb3('0x1e')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x1e')]);}_0x5bd93d[_0xbeb3('0x36')]=qs[_0xbeb3('0x37')](_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x37')]);_0x5bd93d[_0xbeb3('0x38')]=qs['filters'](_[_0xbeb3('0x39')](_0x26cd8f['query'],_0x483198['filters']),_0x585c6f);if(_0x26cd8f['query'][_0xbeb3('0x3a')]){_0x5bd93d[_0xbeb3('0x38')]=_[_0xbeb3('0x3b')](_0x5bd93d[_0xbeb3('0x38')],{'$or':_[_0xbeb3('0x2c')](_0x585c6f,function(_0x40f166){if(_0x40f166['type']!==_0xbeb3('0x3c')){var _0x40de8d={};_0x40de8d[_0x40f166[_0xbeb3('0x27')]]={'$like':'%'+_0x26cd8f['query']['filter']+'%'};return _0x40de8d;}})});}_0x5bd93d=_['merge']({},_0x5bd93d,_0x26cd8f[_0xbeb3('0x3d')]);var _0x2a8860={'where':_0x5bd93d[_0xbeb3('0x38')]};return db['MailQueueReport'][_0xbeb3('0x1d')](_0x2a8860)['then'](function(_0x1b6700){_0x9b8f13[_0xbeb3('0x1d')]=_0x1b6700;if(_0x26cd8f[_0xbeb3('0x2d')][_0xbeb3('0x3e')]){_0x5bd93d['include']=[{'all':!![]}];}return db['MailQueueReport'][_0xbeb3('0x3f')](_0x5bd93d);})[_0xbeb3('0x23')](function(_0x3d4262){_0x9b8f13[_0xbeb3('0x40')]=_0x3d4262;return _0x9b8f13;})[_0xbeb3('0x23')](respondWithFilteredResult(_0xab301c,_0x5bd93d))[_0xbeb3('0x41')](handleError(_0xab301c,null));};exports[_0xbeb3('0x42')]=function(_0x4606a6,_0x5758c6){var _0xfcb57f={'raw':!![],'where':{'id':_0x4606a6[_0xbeb3('0x43')]['id']}},_0x39f2d2={};_0x39f2d2[_0xbeb3('0x2b')]=_[_0xbeb3('0x2e')](db[_0xbeb3('0x44')][_0xbeb3('0x45')]);_0x39f2d2['query']=_[_0xbeb3('0x2e')](_0x4606a6[_0xbeb3('0x2d')]);_0x39f2d2[_0xbeb3('0x2f')]=_[_0xbeb3('0x30')](_0x39f2d2[_0xbeb3('0x2b')],_0x39f2d2[_0xbeb3('0x2d')]);_0xfcb57f[_0xbeb3('0x31')]=_[_0xbeb3('0x30')](_0x39f2d2[_0xbeb3('0x2b')],qs[_0xbeb3('0x32')](_0x4606a6[_0xbeb3('0x2d')][_0xbeb3('0x32')]));_0xfcb57f[_0xbeb3('0x31')]=_0xfcb57f['attributes'][_0xbeb3('0x33')]?_0xfcb57f[_0xbeb3('0x31')]:_0x39f2d2[_0xbeb3('0x2b')];if(_0x4606a6['query']['includeAll']){_0xfcb57f[_0xbeb3('0x46')]=[{'all':!![]}];}_0xfcb57f=_[_0xbeb3('0x3b')]({},_0xfcb57f,_0x4606a6[_0xbeb3('0x3d')]);return db[_0xbeb3('0x44')]['find'](_0xfcb57f)[_0xbeb3('0x23')](handleEntityNotFound(_0x5758c6,null))['then'](respondWithResult(_0x5758c6,null))['catch'](handleError(_0x5758c6,null));};exports[_0xbeb3('0x47')]=function(_0x393e60,_0x1ff297){return db[_0xbeb3('0x44')]['create'](_0x393e60[_0xbeb3('0x48')],{})[_0xbeb3('0x23')](respondWithResult(_0x1ff297,0xc9))[_0xbeb3('0x41')](handleError(_0x1ff297,null));};exports['update']=function(_0x3f93ab,_0x58c49f){if(_0x3f93ab['body']['id']){delete _0x3f93ab[_0xbeb3('0x48')]['id'];}return db[_0xbeb3('0x44')][_0xbeb3('0x49')]({'where':{'id':_0x3f93ab['params']['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x58c49f,null))[_0xbeb3('0x23')](saveUpdates(_0x3f93ab[_0xbeb3('0x48')],null))['then'](respondWithResult(_0x58c49f,null))[_0xbeb3('0x41')](handleError(_0x58c49f,null));};exports['destroy']=function(_0x39605b,_0x4d8e21){return db[_0xbeb3('0x44')][_0xbeb3('0x49')]({'where':{'id':_0x39605b[_0xbeb3('0x43')]['id']}})[_0xbeb3('0x23')](handleEntityNotFound(_0x4d8e21,null))[_0xbeb3('0x23')](removeEntity(_0x4d8e21,null))[_0xbeb3('0x41')](handleError(_0x4d8e21,null));};exports[_0xbeb3('0x4a')]=function(_0x168434,_0x49fded){return db[_0xbeb3('0x44')][_0xbeb3('0x4a')]()[_0xbeb3('0x23')](respondWithResult(_0x49fded,null))[_0xbeb3('0x41')](handleError(_0x49fded,null));};
\ No newline at end of file
+var _0xe5af=['length','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','MailQueueReport','includeAll','include','findAll','catch','params','create','body','find','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','then','error','stack','name','rawAttributes','key','model','map','query','keys','filters','intersection','fields','attributes'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0xe5af,0x9c));var _0xfe5a=function(_0x2ec183,_0x55f033){_0x2ec183=_0x2ec183-0x0;var _0x52d19e=_0xe5af[_0x2ec183];return _0x52d19e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe5a('0x0'));var zipdir=require(_0xfe5a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe5a('0x2'));var moment=require(_0xfe5a('0x3'));var BPromise=require(_0xfe5a('0x4'));var Mustache=require('mustache');var util=require(_0xfe5a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0xfe5a('0x6'));var ejs=require(_0xfe5a('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfe5a('0x8'));var crypto=require(_0xfe5a('0x9'));var jsforce=require(_0xfe5a('0xa'));var deskjs=require(_0xfe5a('0xb'));var toCsv=require('to-csv');var querystring=require(_0xfe5a('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xfe5a('0xd'));var qs=require(_0xfe5a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe5a('0xf'));var logger=require(_0xfe5a('0x10'))(_0xfe5a('0x11'));var utils=require(_0xfe5a('0x12'));var config=require(_0xfe5a('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe5a('0x14'))['db'];function respondWithStatusCode(_0x9d1f4f,_0x20b206){_0x20b206=_0x20b206||0xcc;return function(_0x374ded){if(_0x374ded){return _0x9d1f4f[_0xfe5a('0x15')](_0x20b206);}return _0x9d1f4f['status'](_0x20b206)[_0xfe5a('0x16')]();};}function respondWithResult(_0x17bbbe,_0x42969b){_0x42969b=_0x42969b||0xc8;return function(_0x362115){if(_0x362115){return _0x17bbbe[_0xfe5a('0x17')](_0x42969b)[_0xfe5a('0x18')](_0x362115);}};}function respondWithFilteredResult(_0x375380,_0xeb454){return function(_0x111d4d){if(_0x111d4d){var _0x18c57b=typeof _0xeb454[_0xfe5a('0x19')]===_0xfe5a('0x1a')&&typeof _0xeb454[_0xfe5a('0x1b')]===_0xfe5a('0x1a');var _0x3edcab=_0x111d4d[_0xfe5a('0x1c')];var _0x5bf597=_0x18c57b?0x0:_0xeb454[_0xfe5a('0x19')];var _0x456707=_0x18c57b?_0x111d4d['count']:_0xeb454[_0xfe5a('0x19')]+_0xeb454[_0xfe5a('0x1b')];var _0x39d905;if(_0x456707>=_0x3edcab){_0x456707=_0x3edcab;_0x39d905=0xc8;}else{_0x39d905=0xce;}_0x375380['status'](_0x39d905);return _0x375380['set'](_0xfe5a('0x1d'),_0x5bf597+'-'+_0x456707+'/'+_0x3edcab)[_0xfe5a('0x18')](_0x111d4d);}return null;};}function patchUpdates(_0xded538){return function(_0x3b3022){try{jsonpatch[_0xfe5a('0x1e')](_0x3b3022,_0xded538,!![]);}catch(_0x355869){return BPromise['reject'](_0x355869);}return _0x3b3022[_0xfe5a('0x1f')]();};}function saveUpdates(_0x592521,_0x3dfa57){return function(_0x39d825){if(_0x39d825){return _0x39d825[_0xfe5a('0x20')](_0x592521)['then'](function(_0x4bbef1){return _0x4bbef1;});}return null;};}function removeEntity(_0x247be4,_0x3e55fd){return function(_0x494df3){if(_0x494df3){return _0x494df3[_0xfe5a('0x21')]()[_0xfe5a('0x22')](function(){_0x247be4['status'](0xcc)[_0xfe5a('0x16')]();});}};}function handleEntityNotFound(_0x3a4f3c,_0x31cc60){return function(_0x2b4f1c){if(!_0x2b4f1c){_0x3a4f3c['sendStatus'](0x194);}return _0x2b4f1c;};}function handleError(_0x42136e,_0x2f5d04){_0x2f5d04=_0x2f5d04||0x1f4;return function(_0x24481f){logger[_0xfe5a('0x23')](_0x24481f[_0xfe5a('0x24')]);if(_0x24481f[_0xfe5a('0x25')]){delete _0x24481f[_0xfe5a('0x25')];}_0x42136e[_0xfe5a('0x17')](_0x2f5d04)['send'](_0x24481f);};}exports['index']=function(_0x712b44,_0x485f9d){var _0xc53869={},_0xfcb05b={},_0x11bf97={'count':0x0,'rows':[]};var _0x482a35=_['map'](db['MailQueueReport'][_0xfe5a('0x26')],function(_0x582f2d){return{'name':_0x582f2d['fieldName'],'type':_0x582f2d['type'][_0xfe5a('0x27')]};});_0xfcb05b[_0xfe5a('0x28')]=_[_0xfe5a('0x29')](_0x482a35,_0xfe5a('0x25'));_0xfcb05b[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x712b44[_0xfe5a('0x2a')]);_0xfcb05b[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],_0xfcb05b[_0xfe5a('0x2a')]);_0xc53869['attributes']=_[_0xfe5a('0x2d')](_0xfcb05b[_0xfe5a('0x28')],qs['fields'](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0xc53869[_0xfe5a('0x2f')]=_0xc53869[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0xc53869['attributes']:_0xfcb05b['model'];if(!_0x712b44[_0xfe5a('0x2a')]['hasOwnProperty'](_0xfe5a('0x31'))){_0xc53869[_0xfe5a('0x1b')]=qs[_0xfe5a('0x1b')](_0x712b44[_0xfe5a('0x2a')]['limit']);_0xc53869[_0xfe5a('0x19')]=qs[_0xfe5a('0x19')](_0x712b44[_0xfe5a('0x2a')]['offset']);}_0xc53869[_0xfe5a('0x32')]=qs[_0xfe5a('0x33')](_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x33')]);_0xc53869['where']=qs[_0xfe5a('0x2c')](_['pick'](_0x712b44[_0xfe5a('0x2a')],_0xfcb05b[_0xfe5a('0x2c')]),_0x482a35);if(_0x712b44['query'][_0xfe5a('0x34')]){_0xc53869[_0xfe5a('0x35')]=_[_0xfe5a('0x36')](_0xc53869[_0xfe5a('0x35')],{'$or':_['map'](_0x482a35,function(_0x193ce0){if(_0x193ce0[_0xfe5a('0x37')]!==_0xfe5a('0x38')){var _0x560088={};_0x560088[_0x193ce0[_0xfe5a('0x25')]]={'$like':'%'+_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x34')]+'%'};return _0x560088;}})});}_0xc53869=_[_0xfe5a('0x36')]({},_0xc53869,_0x712b44[_0xfe5a('0x39')]);var _0x162c48={'where':_0xc53869[_0xfe5a('0x35')]};return db[_0xfe5a('0x3a')][_0xfe5a('0x1c')](_0x162c48)[_0xfe5a('0x22')](function(_0x20da14){_0x11bf97['count']=_0x20da14;if(_0x712b44[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0xc53869[_0xfe5a('0x3c')]=[{'all':!![]}];}return db[_0xfe5a('0x3a')][_0xfe5a('0x3d')](_0xc53869);})[_0xfe5a('0x22')](function(_0x3475fb){_0x11bf97['rows']=_0x3475fb;return _0x11bf97;})[_0xfe5a('0x22')](respondWithFilteredResult(_0x485f9d,_0xc53869))[_0xfe5a('0x3e')](handleError(_0x485f9d,null));};exports['show']=function(_0x59caa1,_0x252904){var _0x4c17fd={'raw':!![],'where':{'id':_0x59caa1[_0xfe5a('0x3f')]['id']}},_0x54096d={};_0x54096d[_0xfe5a('0x28')]=_['keys'](db[_0xfe5a('0x3a')]['rawAttributes']);_0x54096d[_0xfe5a('0x2a')]=_[_0xfe5a('0x2b')](_0x59caa1[_0xfe5a('0x2a')]);_0x54096d[_0xfe5a('0x2c')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],_0x54096d['query']);_0x4c17fd[_0xfe5a('0x2f')]=_[_0xfe5a('0x2d')](_0x54096d[_0xfe5a('0x28')],qs[_0xfe5a('0x2e')](_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x2e')]));_0x4c17fd[_0xfe5a('0x2f')]=_0x4c17fd[_0xfe5a('0x2f')][_0xfe5a('0x30')]?_0x4c17fd[_0xfe5a('0x2f')]:_0x54096d[_0xfe5a('0x28')];if(_0x59caa1[_0xfe5a('0x2a')][_0xfe5a('0x3b')]){_0x4c17fd[_0xfe5a('0x3c')]=[{'all':!![]}];}_0x4c17fd=_['merge']({},_0x4c17fd,_0x59caa1[_0xfe5a('0x39')]);return db[_0xfe5a('0x3a')]['find'](_0x4c17fd)['then'](handleEntityNotFound(_0x252904,null))[_0xfe5a('0x22')](respondWithResult(_0x252904,null))[_0xfe5a('0x3e')](handleError(_0x252904,null));};exports[_0xfe5a('0x40')]=function(_0x3ccf98,_0x3cf1b5){return db[_0xfe5a('0x3a')][_0xfe5a('0x40')](_0x3ccf98['body'],{})[_0xfe5a('0x22')](respondWithResult(_0x3cf1b5,0xc9))['catch'](handleError(_0x3cf1b5,null));};exports[_0xfe5a('0x20')]=function(_0x5a807e,_0x433562){if(_0x5a807e[_0xfe5a('0x41')]['id']){delete _0x5a807e[_0xfe5a('0x41')]['id'];}return db[_0xfe5a('0x3a')]['find']({'where':{'id':_0x5a807e[_0xfe5a('0x3f')]['id']}})[_0xfe5a('0x22')](handleEntityNotFound(_0x433562,null))['then'](saveUpdates(_0x5a807e[_0xfe5a('0x41')],null))['then'](respondWithResult(_0x433562,null))['catch'](handleError(_0x433562,null));};exports[_0xfe5a('0x21')]=function(_0x4e02c9,_0x374ce5){return db[_0xfe5a('0x3a')][_0xfe5a('0x42')]({'where':{'id':_0x4e02c9[_0xfe5a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x374ce5,null))[_0xfe5a('0x22')](removeEntity(_0x374ce5,null))['catch'](handleError(_0x374ce5,null));};exports[_0xfe5a('0x43')]=function(_0x38409b,_0x149132){return db['MailQueueReport'][_0xfe5a('0x43')]()[_0xfe5a('0x22')](respondWithResult(_0x149132,null))['catch'](handleError(_0x149132,null));};
\ No newline at end of file
index 02e337f..2ba7d2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x870c=['MailQueueReport','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./mailQueueReport.attributes','exports','define'];(function(_0x48da45,_0x259bea){var _0x5d5687=function(_0x2d0a0f){while(--_0x2d0a0f){_0x48da45['push'](_0x48da45['shift']());}};_0x5d5687(++_0x259bea);}(_0x870c,0x1b9));var _0xc870=function(_0x323031,_0x4f7d3e){_0x323031=_0x323031-0x0;var _0x2f595d=_0x870c[_0x323031];return _0x2f595d;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc870('0x0'))(_0xc870('0x1'));var moment=require(_0xc870('0x2'));var BPromise=require(_0xc870('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc870('0x4'));var rimraf=require(_0xc870('0x5'));var config=require(_0xc870('0x6'));var attributes=require(_0xc870('0x7'));module[_0xc870('0x8')]=function(_0x48e422,_0x127896){return _0x48e422[_0xc870('0x9')](_0xc870('0xa'),attributes,{'tableName':'report_mail_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1f60=['MailQueueReport','report_mail_queue','uniqueid','lodash','util','api','request-promise','path','rimraf','../../config/environment','./mailQueueReport.attributes','define'];(function(_0x117473,_0x485375){var _0x38711a=function(_0x33e119){while(--_0x33e119){_0x117473['push'](_0x117473['shift']());}};_0x38711a(++_0x485375);}(_0x1f60,0x1bf));var _0x01f6=function(_0x2ca2d9,_0x493cfb){_0x2ca2d9=_0x2ca2d9-0x0;var _0x218a20=_0x1f60[_0x2ca2d9];return _0x218a20;};'use strict';var _=require(_0x01f6('0x0'));var util=require(_0x01f6('0x1'));var logger=require('../../config/logger')(_0x01f6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x01f6('0x3'));var fs=require('fs');var path=require(_0x01f6('0x4'));var rimraf=require(_0x01f6('0x5'));var config=require(_0x01f6('0x6'));var attributes=require(_0x01f6('0x7'));module['exports']=function(_0x150d0b,_0x13ddeb){return _0x150d0b[_0x01f6('0x8')](_0x01f6('0x9'),attributes,{'tableName':_0x01f6('0xa'),'paranoid':![],'indexes':[{'name':_0x01f6('0xb'),'fields':[_0x01f6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 1776eab..8cf2553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['create','body','options','raw','update','where','attributes','limit','UpdateMailQueueReport','stringify','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','CreateMailQueueReport','MailQueueReport'];(function(_0x3e3406,_0x34fd84){var _0x37fece=function(_0xd44b3f){while(--_0xd44b3f){_0x3e3406['push'](_0x3e3406['shift']());}};_0x37fece(++_0x34fd84);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc4aa[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}exports[_0xac4a('0x15')]=function(_0x28e304){var _0x44ec59=this;return new Promise(function(_0x546c5d,_0x5ac21e){return db[_0xac4a('0x16')][_0xac4a('0x17')](_0x28e304[_0xac4a('0x18')],{'raw':_0x28e304['options']?_0x28e304[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![]})[_0xac4a('0xc')](function(_0x3a3cdb){logger[_0xac4a('0x13')](_0xac4a('0x15'),_0x28e304);logger[_0xac4a('0xf')](_0xac4a('0x15'),_0x28e304,JSON['stringify'](_0x3a3cdb));_0x546c5d(_0x3a3cdb);})[_0xac4a('0x14')](function(_0x3204ad){logger['error'](_0xac4a('0x15'),_0x3204ad[_0xac4a('0x12')],_0x28e304);_0x5ac21e(_0x44ec59[_0xac4a('0x10')](0x1f4,_0x3204ad[_0xac4a('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x1b7998){var _0x2503d8=this;return new Promise(function(_0x15435c,_0x412494){return db[_0xac4a('0x16')][_0xac4a('0x1b')](_0x1b7998[_0xac4a('0x18')],{'raw':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1c')]||null:null,'attributes':_0x1b7998[_0xac4a('0x19')]?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1d')]||null:null,'limit':_0x1b7998['options']?_0x1b7998[_0xac4a('0x19')][_0xac4a('0x1e')]||null:null})[_0xac4a('0xc')](function(_0x2772fe){logger[_0xac4a('0x13')]('UpdateMailQueueReport',_0x1b7998);logger['debug'](_0xac4a('0x1f'),_0x1b7998,JSON[_0xac4a('0x20')](_0x2772fe));_0x15435c(_0x2772fe);})[_0xac4a('0x14')](function(_0x546b65){logger['error'](_0xac4a('0x1f'),_0x546b65[_0xac4a('0x12')],_0x1b7998);_0x412494(_0x2503d8[_0xac4a('0x10')](0x1f4,_0x546b65[_0xac4a('0x12')]));});});};
\ No newline at end of file
+var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x13fd51,_0x403570){var _0x576306=function(_0x217b7b){while(--_0x217b7b){_0x13fd51['push'](_0x13fd51['shift']());}};_0x576306(++_0x403570);}(_0x326f,0xd1));var _0xf326=function(_0x23101a,_0x50481f){_0x23101a=_0x23101a-0x0;var _0x4f811a=_0x326f[_0x23101a];return _0x4f811a;};'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')]('MailQueueReport,\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')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
index da3e71d..0cc970f 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(_0x1d107f,_0x2157cc){var _0x19270c=function(_0x5816be){while(--_0x5816be){_0x1d107f['push'](_0x1d107f['shift']());}};_0x19270c(++_0x2157cc);}(_0xe706,0xa3));var _0x6e70=function(_0x46d041,_0x4b80db){_0x46d041=_0x46d041-0x0;var _0x294f8a=_0xe706[_0x46d041];return _0x294f8a;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x441c12,_0x491e5a){var _0x312edf=function(_0x40605b){while(--_0x40605b){_0x441c12['push'](_0x441c12['shift']());}};_0x312edf(++_0x491e5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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 626bd48..cff2f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['INBOX','STRING','BOOLEAN','INTEGER'];(function(_0x1e518c,_0x38c5d6){var _0x1da661=function(_0x12b0d4){while(--_0x12b0d4){_0x1e518c['push'](_0x1e518c['shift']());}};_0x1da661(++_0x38c5d6);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x16e57d,_0x2cb7ba){_0x16e57d=_0x16e57d-0x0;var _0x40239c=_0xcb91[_0x16e57d];return _0x40239c;};'use strict';var Sequelize=require('sequelize');module['exports']={'description':{'type':Sequelize[_0x1cb9('0x0')]},'host':{'type':Sequelize[_0x1cb9('0x0')]},'authentication':{'type':Sequelize[_0x1cb9('0x1')],'defaultValue':!![]},'user':{'type':Sequelize[_0x1cb9('0x0')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x1cb9('0x2')]},'tls':{'type':Sequelize[_0x1cb9('0x1')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x1cb9('0x3')},'connTimeout':{'type':Sequelize[_0x1cb9('0x2')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x1cb9('0x0')]}};
\ No newline at end of file
+var _0x073e=['sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0xa9dd3e,_0x218069){var _0x4f03a1=function(_0x3427d7){while(--_0x3427d7){_0xa9dd3e['push'](_0xa9dd3e['shift']());}};_0x4f03a1(++_0x218069);}(_0x073e,0x181));var _0xe073=function(_0x4ee096,_0x53f5d2){_0x4ee096=_0x4ee096-0x0;var _0x575f3c=_0x073e[_0x4ee096];return _0x575f3c;};'use strict';var Sequelize=require(_0xe073('0x0'));module[_0xe073('0x1')]={'description':{'type':Sequelize[_0xe073('0x2')]},'host':{'type':Sequelize[_0xe073('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xe073('0x3')]},'tls':{'type':Sequelize[_0xe073('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xe073('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0xe073('0x2')]}};
\ No newline at end of file
index 1ac1f25..047595e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35bb=['define','MailServerIn','mail_servers_in','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./mailServerIn.attributes','exports'];(function(_0x59ce42,_0x1e5c95){var _0x30009a=function(_0x3b8664){while(--_0x3b8664){_0x59ce42['push'](_0x59ce42['shift']());}};_0x30009a(++_0x1e5c95);}(_0x35bb,0x92));var _0xb35b=function(_0x412324,_0x37e69d){_0x412324=_0x412324-0x0;var _0x542ba5=_0x35bb[_0x412324];return _0x542ba5;};'use strict';var _=require('lodash');var util=require(_0xb35b('0x0'));var logger=require(_0xb35b('0x1'))(_0xb35b('0x2'));var moment=require('moment');var BPromise=require(_0xb35b('0x3'));var rp=require(_0xb35b('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb35b('0x5'));var attributes=require(_0xb35b('0x6'));module[_0xb35b('0x7')]=function(_0x5596bf,_0x543684){return _0x5596bf[_0xb35b('0x8')](_0xb35b('0x9'),attributes,{'tableName':_0xb35b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x33ce=['path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api','moment','bluebird'];(function(_0xacfcd9,_0xb223f7){var _0x4d112d=function(_0x3a2318){while(--_0x3a2318){_0xacfcd9['push'](_0xacfcd9['shift']());}};_0x4d112d(++_0xb223f7);}(_0x33ce,0x1b5));var _0xe33c=function(_0x3b295e,_0x3c18a6){_0x3b295e=_0x3b295e-0x0;var _0x22a0bc=_0x33ce[_0x3b295e];return _0x22a0bc;};'use strict';var _=require(_0xe33c('0x0'));var util=require('util');var logger=require(_0xe33c('0x1'))(_0xe33c('0x2'));var moment=require(_0xe33c('0x3'));var BPromise=require(_0xe33c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe33c('0x5'));var rimraf=require(_0xe33c('0x6'));var config=require(_0xe33c('0x7'));var attributes=require(_0xe33c('0x8'));module[_0xe33c('0x9')]=function(_0x3d90f9,_0x28fcd8){return _0x3d90f9[_0xe33c('0xa')](_0xe33c('0xb'),attributes,{'tableName':_0xe33c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5be1ac..4ce2127 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2567=['../../config/environment','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetMailServerIn','MailServerIn','options','raw','where','include','model','attributes','map','debug','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x2567,0x1c7));var _0x7256=function(_0x5cc655,_0x4b6145){_0x5cc655=_0x5cc655-0x0;var _0x244379=_0x2567[_0x5cc655];return _0x244379;};'use strict';var _=require(_0x7256('0x0'));var util=require(_0x7256('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x7256('0x2'));var fs=require('fs');var Redis=require(_0x7256('0x3'));var db=require(_0x7256('0x4'))['db'];var utils=require(_0x7256('0x5'));var logger=require('../../config/logger')(_0x7256('0x6'));var config=require(_0x7256('0x7'));var jayson=require(_0x7256('0x8'));var client=jayson[_0x7256('0x9')][_0x7256('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ce5c9,_0x383bf7,_0x15e913){return new BPromise(function(_0x3c3104,_0x31c458){return client[_0x7256('0xb')](_0x5ce5c9,_0x15e913)[_0x7256('0xc')](function(_0x22d1f1){logger[_0x7256('0xd')](_0x7256('0xe'),_0x383bf7,_0x7256('0xf'));logger['debug'](_0x7256('0x10'),_0x383bf7,_0x7256('0xf'),JSON['stringify'](_0x22d1f1));if(_0x22d1f1['error']){if(_0x22d1f1[_0x7256('0x11')][_0x7256('0x12')]===0x1f4){logger['error'](_0x7256('0xe'),_0x383bf7,_0x22d1f1[_0x7256('0x11')]['message']);return _0x31c458(_0x22d1f1['error'][_0x7256('0x13')]);}logger[_0x7256('0x11')](_0x7256('0xe'),_0x383bf7,_0x22d1f1[_0x7256('0x11')]['message']);return _0x3c3104(_0x22d1f1[_0x7256('0x11')][_0x7256('0x13')]);}else{logger['info']('MailServerIn,\x20%s,\x20%s',_0x383bf7,_0x7256('0xf'));_0x3c3104(_0x22d1f1[_0x7256('0x14')][_0x7256('0x13')]);}})[_0x7256('0x15')](function(_0x4dd220){logger['error']('MailServerIn,\x20%s,\x20%s',_0x383bf7,_0x4dd220);_0x31c458(_0x4dd220);});});}exports[_0x7256('0x16')]=function(_0x4b9933){var _0x20422a=this;return new Promise(function(_0x3ba265,_0x559a2f){return db[_0x7256('0x17')]['findAll']({'raw':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')][_0x7256('0x19')]===undefined?!![]:![]:!![],'where':_0x4b9933['options']?_0x4b9933[_0x7256('0x18')][_0x7256('0x1a')]||null:null,'attributes':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')]['attributes']||null:null,'limit':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')]['limit']||null:null,'include':_0x4b9933[_0x7256('0x18')]?_0x4b9933[_0x7256('0x18')]['include']?_['map'](_0x4b9933[_0x7256('0x18')][_0x7256('0x1b')],function(_0x539c32){return{'model':db[_0x539c32[_0x7256('0x1c')]],'as':_0x539c32['as'],'attributes':_0x539c32[_0x7256('0x1d')],'include':_0x539c32[_0x7256('0x1b')]?_[_0x7256('0x1e')](_0x539c32[_0x7256('0x1b')],function(_0x9ae1c){return{'model':db[_0x9ae1c[_0x7256('0x1c')]],'as':_0x9ae1c['as'],'attributes':_0x9ae1c[_0x7256('0x1d')],'include':_0x9ae1c[_0x7256('0x1b')]?_[_0x7256('0x1e')](_0x9ae1c[_0x7256('0x1b')],function(_0x343e32){return{'model':db[_0x343e32[_0x7256('0x1c')]],'as':_0x343e32['as'],'attributes':_0x343e32[_0x7256('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x7256('0xc')](function(_0x165b4f){logger['info']('GetMailServerIn',_0x4b9933);logger[_0x7256('0x1f')]('GetMailServerIn',_0x4b9933,JSON[_0x7256('0x20')](_0x165b4f));_0x3ba265(_0x165b4f);})[_0x7256('0x15')](function(_0xae099f){logger[_0x7256('0x11')](_0x7256('0x16'),_0xae099f[_0x7256('0x13')],_0x4b9933);_0x559a2f(_0x20422a['error'](0x1f4,_0xae099f[_0x7256('0x13')]));});});};
\ No newline at end of file
+var _0x67be=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','MailServerIn','options','raw','where','attributes','limit','include','map','model','GetMailServerIn','lodash','util','moment'];(function(_0x456b57,_0x58691a){var _0x18f49f=function(_0x1dc195){while(--_0x1dc195){_0x456b57['push'](_0x456b57['shift']());}};_0x18f49f(++_0x58691a);}(_0x67be,0x105));var _0xe67b=function(_0x1568f4,_0x13bf98){_0x1568f4=_0x1568f4-0x0;var _0x3ad3fc=_0x67be[_0x1568f4];return _0x3ad3fc;};'use strict';var _=require(_0xe67b('0x0'));var util=require(_0xe67b('0x1'));var moment=require(_0xe67b('0x2'));var BPromise=require(_0xe67b('0x3'));var rs=require(_0xe67b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe67b('0x5'))['db'];var utils=require(_0xe67b('0x6'));var logger=require(_0xe67b('0x7'))(_0xe67b('0x8'));var config=require('../../config/environment');var jayson=require(_0xe67b('0x9'));var client=jayson[_0xe67b('0xa')][_0xe67b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x55b950,_0x1a381b,_0x4872de){return new BPromise(function(_0x3f1251,_0x2fcd18){return client[_0xe67b('0xc')](_0x55b950,_0x4872de)[_0xe67b('0xd')](function(_0x447a7a){logger[_0xe67b('0xe')](_0xe67b('0xf'),_0x1a381b,'request\x20sent');logger[_0xe67b('0x10')](_0xe67b('0x11'),_0x1a381b,_0xe67b('0x12'),JSON[_0xe67b('0x13')](_0x447a7a));if(_0x447a7a[_0xe67b('0x14')]){if(_0x447a7a[_0xe67b('0x14')]['code']===0x1f4){logger['error'](_0xe67b('0xf'),_0x1a381b,_0x447a7a['error'][_0xe67b('0x15')]);return _0x2fcd18(_0x447a7a[_0xe67b('0x14')][_0xe67b('0x15')]);}logger[_0xe67b('0x14')](_0xe67b('0xf'),_0x1a381b,_0x447a7a[_0xe67b('0x14')][_0xe67b('0x15')]);return _0x3f1251(_0x447a7a[_0xe67b('0x14')][_0xe67b('0x15')]);}else{logger[_0xe67b('0xe')](_0xe67b('0xf'),_0x1a381b,_0xe67b('0x12'));_0x3f1251(_0x447a7a[_0xe67b('0x16')]['message']);}})['catch'](function(_0x48b8d5){logger[_0xe67b('0x14')]('MailServerIn,\x20%s,\x20%s',_0x1a381b,_0x48b8d5);_0x2fcd18(_0x48b8d5);});});}exports['GetMailServerIn']=function(_0x1427df){var _0x2a8f99=this;return new Promise(function(_0x575a43,_0x3261c1){return db[_0xe67b('0x17')]['findAll']({'raw':_0x1427df[_0xe67b('0x18')]?_0x1427df['options'][_0xe67b('0x19')]===undefined?!![]:![]:!![],'where':_0x1427df[_0xe67b('0x18')]?_0x1427df[_0xe67b('0x18')][_0xe67b('0x1a')]||null:null,'attributes':_0x1427df[_0xe67b('0x18')]?_0x1427df[_0xe67b('0x18')][_0xe67b('0x1b')]||null:null,'limit':_0x1427df[_0xe67b('0x18')]?_0x1427df[_0xe67b('0x18')][_0xe67b('0x1c')]||null:null,'include':_0x1427df[_0xe67b('0x18')]?_0x1427df['options'][_0xe67b('0x1d')]?_[_0xe67b('0x1e')](_0x1427df['options'][_0xe67b('0x1d')],function(_0x260e04){return{'model':db[_0x260e04[_0xe67b('0x1f')]],'as':_0x260e04['as'],'attributes':_0x260e04[_0xe67b('0x1b')],'include':_0x260e04[_0xe67b('0x1d')]?_[_0xe67b('0x1e')](_0x260e04['include'],function(_0x46ae23){return{'model':db[_0x46ae23[_0xe67b('0x1f')]],'as':_0x46ae23['as'],'attributes':_0x46ae23[_0xe67b('0x1b')],'include':_0x46ae23[_0xe67b('0x1d')]?_[_0xe67b('0x1e')](_0x46ae23[_0xe67b('0x1d')],function(_0x5461aa){return{'model':db[_0x5461aa[_0xe67b('0x1f')]],'as':_0x5461aa['as'],'attributes':_0x5461aa[_0xe67b('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xe67b('0xd')](function(_0x33cf1f){logger[_0xe67b('0xe')](_0xe67b('0x20'),_0x1427df);logger[_0xe67b('0x10')]('GetMailServerIn',_0x1427df,JSON[_0xe67b('0x13')](_0x33cf1f));_0x575a43(_0x33cf1f);})['catch'](function(_0x241413){logger[_0xe67b('0x14')](_0xe67b('0x20'),_0x241413[_0xe67b('0x15')],_0x1427df);_0x3261c1(_0x2a8f99[_0xe67b('0x14')](0x1f4,_0x241413[_0xe67b('0x15')]));});});};
\ No newline at end of file
index 12402c5..1413461 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x7a54,0x106));var _0x47a5=function(_0x32a3a1,_0x203c26){_0x32a3a1=_0x32a3a1-0x0;var _0x56e8f3=_0x7a54[_0x32a3a1];return _0x56e8f3;};'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
+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(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0x7a54,0x106));var _0x47a5=function(_0x2ebe95,_0x3c1de9){_0x2ebe95=_0x2ebe95-0x0;var _0x43a6e7=_0x7a54[_0x2ebe95];return _0x43a6e7;};'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 2dc0fd0..611b30d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4610=['BOOLEAN','sequelize','exports','STRING','INTEGER'];(function(_0x257a59,_0x3cda3d){var _0x54f22e=function(_0x5386a4){while(--_0x5386a4){_0x257a59['push'](_0x257a59['shift']());}};_0x54f22e(++_0x3cda3d);}(_0x4610,0xfb));var _0x0461=function(_0x377f50,_0x5589ba){_0x377f50=_0x377f50-0x0;var _0x14a9d2=_0x4610[_0x377f50];return _0x14a9d2;};'use strict';var Sequelize=require(_0x0461('0x0'));module[_0x0461('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x0461('0x2')]},'user':{'type':Sequelize[_0x0461('0x2')]},'pass':{'type':Sequelize[_0x0461('0x2')]},'port':{'type':Sequelize[_0x0461('0x3')]},'secure':{'type':Sequelize[_0x0461('0x4')],'defaultValue':![]},'service':{'type':Sequelize[_0x0461('0x2')]},'authentication':{'type':Sequelize[_0x0461('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xf30d=['exports','STRING','INTEGER','BOOLEAN'];(function(_0x551b1c,_0x3584f9){var _0x131273=function(_0x553185){while(--_0x553185){_0x551b1c['push'](_0x551b1c['shift']());}};_0x131273(++_0x3584f9);}(_0xf30d,0xd0));var _0xdf30=function(_0x42013a,_0x455d8f){_0x42013a=_0x42013a-0x0;var _0x48b136=_0xf30d[_0x42013a];return _0x48b136;};'use strict';var Sequelize=require('sequelize');module[_0xdf30('0x0')]={'description':{'type':Sequelize[_0xdf30('0x1')]},'host':{'type':Sequelize[_0xdf30('0x1')]},'user':{'type':Sequelize[_0xdf30('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xdf30('0x2')]},'secure':{'type':Sequelize[_0xdf30('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0xdf30('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 0112367..2d003c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fa5=['limit','count','set','json','then','destroy','error','stack','name','send','index','MailServerOut','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','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','sendStatus','end','status','offset','undefined'];(function(_0x1f8bcc,_0x49f5a0){var _0x2509d1=function(_0x57ae50){while(--_0x57ae50){_0x1f8bcc['push'](_0x1f8bcc['shift']());}};_0x2509d1(++_0x49f5a0);}(_0x2fa5,0x14c));var _0x52fa=function(_0x348700,_0x4d85b4){_0x348700=_0x348700-0x0;var _0x22397b=_0x2fa5[_0x348700];return _0x22397b;};'use strict';var emlformat=require(_0x52fa('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x52fa('0x1'));var rp=require(_0x52fa('0x2'));var moment=require('moment');var BPromise=require(_0x52fa('0x3'));var Mustache=require(_0x52fa('0x4'));var util=require(_0x52fa('0x5'));var path=require('path');var sox=require(_0x52fa('0x6'));var csv=require(_0x52fa('0x7'));var ejs=require(_0x52fa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x52fa('0x9'));var crypto=require(_0x52fa('0xa'));var jsforce=require(_0x52fa('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x52fa('0x7'));var querystring=require('querystring');var Papa=require(_0x52fa('0xc'));var Redis=require(_0x52fa('0xd'));var authService=require(_0x52fa('0xe'));var qs=require(_0x52fa('0xf'));var as=require(_0x52fa('0x10'));var hardwareService=require(_0x52fa('0x11'));var logger=require(_0x52fa('0x12'))(_0x52fa('0x13'));var utils=require(_0x52fa('0x14'));var config=require(_0x52fa('0x15'));var licenseUtil=require(_0x52fa('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x478a0c,_0x4ed76d){_0x4ed76d=_0x4ed76d||0xcc;return function(_0x3fef38){if(_0x3fef38){return _0x478a0c[_0x52fa('0x17')](_0x4ed76d);}return _0x478a0c['status'](_0x4ed76d)[_0x52fa('0x18')]();};}function respondWithResult(_0x5e7b72,_0x172bf1){_0x172bf1=_0x172bf1||0xc8;return function(_0x42c97f){if(_0x42c97f){return _0x5e7b72[_0x52fa('0x19')](_0x172bf1)['json'](_0x42c97f);}};}function respondWithFilteredResult(_0x439474,_0x300fea){return function(_0x4ec0d9){if(_0x4ec0d9){var _0x2d833d=typeof _0x300fea[_0x52fa('0x1a')]===_0x52fa('0x1b')&&typeof _0x300fea[_0x52fa('0x1c')]===_0x52fa('0x1b');var _0x179b58=_0x4ec0d9[_0x52fa('0x1d')];var _0x5af549=_0x2d833d?0x0:_0x300fea[_0x52fa('0x1a')];var _0x540146=_0x2d833d?_0x4ec0d9[_0x52fa('0x1d')]:_0x300fea['offset']+_0x300fea[_0x52fa('0x1c')];var _0x231fa5;if(_0x540146>=_0x179b58){_0x540146=_0x179b58;_0x231fa5=0xc8;}else{_0x231fa5=0xce;}_0x439474[_0x52fa('0x19')](_0x231fa5);return _0x439474[_0x52fa('0x1e')]('Content-Range',_0x5af549+'-'+_0x540146+'/'+_0x179b58)[_0x52fa('0x1f')](_0x4ec0d9);}return null;};}function patchUpdates(_0x513bff){return function(_0x728d6b){try{jsonpatch['apply'](_0x728d6b,_0x513bff,!![]);}catch(_0x48a406){return BPromise['reject'](_0x48a406);}return _0x728d6b['save']();};}function saveUpdates(_0x1d46ef,_0x2ccf6a){return function(_0x126669){if(_0x126669){return _0x126669['update'](_0x1d46ef)[_0x52fa('0x20')](function(_0x1e877d){return _0x1e877d;});}return null;};}function removeEntity(_0x20fa4a,_0xd28945){return function(_0xc05f23){if(_0xc05f23){return _0xc05f23[_0x52fa('0x21')]()[_0x52fa('0x20')](function(){_0x20fa4a[_0x52fa('0x19')](0xcc)[_0x52fa('0x18')]();});}};}function handleEntityNotFound(_0x3e8c04,_0x3194b4){return function(_0x25ac72){if(!_0x25ac72){_0x3e8c04[_0x52fa('0x17')](0x194);}return _0x25ac72;};}function handleError(_0x4db6e6,_0x4a286f){_0x4a286f=_0x4a286f||0x1f4;return function(_0x27ef67){logger[_0x52fa('0x22')](_0x27ef67[_0x52fa('0x23')]);if(_0x27ef67['name']){delete _0x27ef67[_0x52fa('0x24')];}_0x4db6e6['status'](_0x4a286f)[_0x52fa('0x25')](_0x27ef67);};}exports[_0x52fa('0x26')]=function(_0x125c1a,_0x410916){var _0x1b1e3c={},_0x280728={},_0xa7eaab={'count':0x0,'rows':[]};var _0x33b45c=_['map'](db[_0x52fa('0x27')][_0x52fa('0x28')],function(_0x4e9c9d){return{'name':_0x4e9c9d[_0x52fa('0x29')],'type':_0x4e9c9d[_0x52fa('0x2a')][_0x52fa('0x2b')]};});_0x280728[_0x52fa('0x2c')]=_[_0x52fa('0x2d')](_0x33b45c,_0x52fa('0x24'));_0x280728['query']=_['keys'](_0x125c1a[_0x52fa('0x2e')]);_0x280728[_0x52fa('0x2f')]=_[_0x52fa('0x30')](_0x280728[_0x52fa('0x2c')],_0x280728['query']);_0x1b1e3c[_0x52fa('0x31')]=_['intersection'](_0x280728[_0x52fa('0x2c')],qs['fields'](_0x125c1a['query'][_0x52fa('0x32')]));_0x1b1e3c[_0x52fa('0x31')]=_0x1b1e3c[_0x52fa('0x31')][_0x52fa('0x33')]?_0x1b1e3c['attributes']:_0x280728[_0x52fa('0x2c')];if(!_0x125c1a[_0x52fa('0x2e')][_0x52fa('0x34')](_0x52fa('0x35'))){_0x1b1e3c[_0x52fa('0x1c')]=qs['limit'](_0x125c1a[_0x52fa('0x2e')]['limit']);_0x1b1e3c['offset']=qs[_0x52fa('0x1a')](_0x125c1a[_0x52fa('0x2e')][_0x52fa('0x1a')]);}_0x1b1e3c[_0x52fa('0x36')]=qs[_0x52fa('0x37')](_0x125c1a[_0x52fa('0x2e')]['sort']);_0x1b1e3c[_0x52fa('0x38')]=qs[_0x52fa('0x2f')](_[_0x52fa('0x39')](_0x125c1a[_0x52fa('0x2e')],_0x280728[_0x52fa('0x2f')]),_0x33b45c);if(_0x125c1a['query'][_0x52fa('0x3a')]){_0x1b1e3c[_0x52fa('0x38')]=_[_0x52fa('0x3b')](_0x1b1e3c['where'],{'$or':_[_0x52fa('0x2d')](_0x33b45c,function(_0x1a3619){if(_0x1a3619[_0x52fa('0x2a')]!=='VIRTUAL'){var _0x706a5={};_0x706a5[_0x1a3619[_0x52fa('0x24')]]={'$like':'%'+_0x125c1a[_0x52fa('0x2e')][_0x52fa('0x3a')]+'%'};return _0x706a5;}})});}_0x1b1e3c=_[_0x52fa('0x3b')]({},_0x1b1e3c,_0x125c1a[_0x52fa('0x3c')]);var _0x272bf9={'where':_0x1b1e3c[_0x52fa('0x38')]};return db['MailServerOut'][_0x52fa('0x1d')](_0x272bf9)[_0x52fa('0x20')](function(_0x3be639){_0xa7eaab['count']=_0x3be639;if(_0x125c1a[_0x52fa('0x2e')][_0x52fa('0x3d')]){_0x1b1e3c[_0x52fa('0x3e')]=[{'all':!![]}];}return db['MailServerOut'][_0x52fa('0x3f')](_0x1b1e3c);})[_0x52fa('0x20')](function(_0x22c44a){_0xa7eaab[_0x52fa('0x40')]=_0x22c44a;return _0xa7eaab;})[_0x52fa('0x20')](respondWithFilteredResult(_0x410916,_0x1b1e3c))[_0x52fa('0x41')](handleError(_0x410916,null));};exports[_0x52fa('0x42')]=function(_0x4744e1,_0x44fe2f){var _0x385b96={'raw':!![],'where':{'id':_0x4744e1[_0x52fa('0x43')]['id']}},_0x40323f={};_0x40323f[_0x52fa('0x2c')]=_['keys'](db[_0x52fa('0x27')][_0x52fa('0x28')]);_0x40323f[_0x52fa('0x2e')]=_[_0x52fa('0x44')](_0x4744e1['query']);_0x40323f[_0x52fa('0x2f')]=_[_0x52fa('0x30')](_0x40323f[_0x52fa('0x2c')],_0x40323f[_0x52fa('0x2e')]);_0x385b96[_0x52fa('0x31')]=_[_0x52fa('0x30')](_0x40323f[_0x52fa('0x2c')],qs[_0x52fa('0x32')](_0x4744e1[_0x52fa('0x2e')]['fields']));_0x385b96[_0x52fa('0x31')]=_0x385b96[_0x52fa('0x31')][_0x52fa('0x33')]?_0x385b96[_0x52fa('0x31')]:_0x40323f[_0x52fa('0x2c')];if(_0x4744e1[_0x52fa('0x2e')][_0x52fa('0x3d')]){_0x385b96[_0x52fa('0x3e')]=[{'all':!![]}];}_0x385b96=_[_0x52fa('0x3b')]({},_0x385b96,_0x4744e1[_0x52fa('0x3c')]);return db[_0x52fa('0x27')][_0x52fa('0x45')](_0x385b96)[_0x52fa('0x20')](handleEntityNotFound(_0x44fe2f,null))[_0x52fa('0x20')](respondWithResult(_0x44fe2f,null))[_0x52fa('0x41')](handleError(_0x44fe2f,null));};exports[_0x52fa('0x46')]=function(_0x2395da,_0x28193a){return db[_0x52fa('0x27')][_0x52fa('0x46')](_0x2395da[_0x52fa('0x47')],{})['then'](respondWithResult(_0x28193a,0xc9))[_0x52fa('0x41')](handleError(_0x28193a,null));};exports['update']=function(_0x206e15,_0x748800){if(_0x206e15['body']['id']){delete _0x206e15['body']['id'];}return db['MailServerOut']['find']({'where':{'id':_0x206e15['params']['id']}})[_0x52fa('0x20')](handleEntityNotFound(_0x748800,null))['then'](saveUpdates(_0x206e15[_0x52fa('0x47')],null))[_0x52fa('0x20')](respondWithResult(_0x748800,null))[_0x52fa('0x41')](handleError(_0x748800,null));};exports['destroy']=function(_0x51adad,_0x421398){return db[_0x52fa('0x27')][_0x52fa('0x45')]({'where':{'id':_0x51adad['params']['id']}})[_0x52fa('0x20')](handleEntityNotFound(_0x421398,null))[_0x52fa('0x20')](removeEntity(_0x421398,null))[_0x52fa('0x41')](handleError(_0x421398,null));};
\ No newline at end of file
+var _0xe475=['ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','offset','undefined','count','set','json','reject','save','then','destroy','end','sendStatus','error','stack','name','send','map','MailServerOut','fieldName','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','pick','where','filter','includeAll','findAll','rows','show','params','keys','rawAttributes','merge','options','find','catch','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x57ca86,_0x50f912){var _0x584c2=function(_0x592bef){while(--_0x592bef){_0x57ca86['push'](_0x57ca86['shift']());}};_0x584c2(++_0x50f912);}(_0xe475,0x8f));var _0x5e47=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe475[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x5e47('0x0'));var rimraf=require(_0x5e47('0x1'));var zipdir=require(_0x5e47('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5e47('0x3'));var moment=require(_0x5e47('0x4'));var BPromise=require(_0x5e47('0x5'));var Mustache=require(_0x5e47('0x6'));var util=require(_0x5e47('0x7'));var path=require(_0x5e47('0x8'));var sox=require(_0x5e47('0x9'));var csv=require(_0x5e47('0xa'));var ejs=require(_0x5e47('0xb'));var fs=require('fs');var fs_extra=require(_0x5e47('0xc'));var _=require(_0x5e47('0xd'));var squel=require(_0x5e47('0xe'));var crypto=require(_0x5e47('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x5e47('0x10'));var toCsv=require('to-csv');var querystring=require(_0x5e47('0x11'));var Papa=require(_0x5e47('0x12'));var Redis=require(_0x5e47('0x13'));var authService=require(_0x5e47('0x14'));var qs=require(_0x5e47('0x15'));var as=require(_0x5e47('0x16'));var hardwareService=require(_0x5e47('0x17'));var logger=require('../../config/logger')(_0x5e47('0x18'));var utils=require(_0x5e47('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5e47('0x1a'));var db=require(_0x5e47('0x1b'))['db'];function respondWithStatusCode(_0x3ddec8,_0x3fca6f){_0x3fca6f=_0x3fca6f||0xcc;return function(_0x834b56){if(_0x834b56){return _0x3ddec8['sendStatus'](_0x3fca6f);}return _0x3ddec8['status'](_0x3fca6f)['end']();};}function respondWithResult(_0x1f2e49,_0x26dabb){_0x26dabb=_0x26dabb||0xc8;return function(_0x221bac){if(_0x221bac){return _0x1f2e49[_0x5e47('0x1c')](_0x26dabb)['json'](_0x221bac);}};}function respondWithFilteredResult(_0x88bed9,_0x32e445){return function(_0x2e0d8c){if(_0x2e0d8c){var _0x1157b8=typeof _0x32e445[_0x5e47('0x1d')]===_0x5e47('0x1e')&&typeof _0x32e445['limit']==='undefined';var _0x15c4b5=_0x2e0d8c[_0x5e47('0x1f')];var _0x2f2ce9=_0x1157b8?0x0:_0x32e445['offset'];var _0x45671d=_0x1157b8?_0x2e0d8c['count']:_0x32e445[_0x5e47('0x1d')]+_0x32e445['limit'];var _0x1b29f1;if(_0x45671d>=_0x15c4b5){_0x45671d=_0x15c4b5;_0x1b29f1=0xc8;}else{_0x1b29f1=0xce;}_0x88bed9[_0x5e47('0x1c')](_0x1b29f1);return _0x88bed9[_0x5e47('0x20')]('Content-Range',_0x2f2ce9+'-'+_0x45671d+'/'+_0x15c4b5)[_0x5e47('0x21')](_0x2e0d8c);}return null;};}function patchUpdates(_0x1b0616){return function(_0x55ab84){try{jsonpatch['apply'](_0x55ab84,_0x1b0616,!![]);}catch(_0x1dc3b1){return BPromise[_0x5e47('0x22')](_0x1dc3b1);}return _0x55ab84[_0x5e47('0x23')]();};}function saveUpdates(_0x133236,_0x57171d){return function(_0x5ae72a){if(_0x5ae72a){return _0x5ae72a['update'](_0x133236)[_0x5e47('0x24')](function(_0x313cda){return _0x313cda;});}return null;};}function removeEntity(_0x554c92,_0x32a497){return function(_0x3f703f){if(_0x3f703f){return _0x3f703f[_0x5e47('0x25')]()[_0x5e47('0x24')](function(){_0x554c92[_0x5e47('0x1c')](0xcc)[_0x5e47('0x26')]();});}};}function handleEntityNotFound(_0x226828,_0x427b17){return function(_0x438218){if(!_0x438218){_0x226828[_0x5e47('0x27')](0x194);}return _0x438218;};}function handleError(_0x2a8f4c,_0x7a1b44){_0x7a1b44=_0x7a1b44||0x1f4;return function(_0x1f7947){logger[_0x5e47('0x28')](_0x1f7947[_0x5e47('0x29')]);if(_0x1f7947[_0x5e47('0x2a')]){delete _0x1f7947['name'];}_0x2a8f4c[_0x5e47('0x1c')](_0x7a1b44)[_0x5e47('0x2b')](_0x1f7947);};}exports['index']=function(_0x314835,_0xbfc967){var _0x1093e8={},_0x273813={},_0x16e131={'count':0x0,'rows':[]};var _0x2615dc=_[_0x5e47('0x2c')](db[_0x5e47('0x2d')]['rawAttributes'],function(_0x2cdd51){return{'name':_0x2cdd51[_0x5e47('0x2e')],'type':_0x2cdd51['type'][_0x5e47('0x2f')]};});_0x273813['model']=_[_0x5e47('0x2c')](_0x2615dc,_0x5e47('0x2a'));_0x273813[_0x5e47('0x30')]=_['keys'](_0x314835[_0x5e47('0x30')]);_0x273813[_0x5e47('0x31')]=_[_0x5e47('0x32')](_0x273813[_0x5e47('0x33')],_0x273813[_0x5e47('0x30')]);_0x1093e8[_0x5e47('0x34')]=_[_0x5e47('0x32')](_0x273813[_0x5e47('0x33')],qs[_0x5e47('0x35')](_0x314835[_0x5e47('0x30')][_0x5e47('0x35')]));_0x1093e8[_0x5e47('0x34')]=_0x1093e8['attributes'][_0x5e47('0x36')]?_0x1093e8[_0x5e47('0x34')]:_0x273813['model'];if(!_0x314835['query'][_0x5e47('0x37')](_0x5e47('0x38'))){_0x1093e8[_0x5e47('0x39')]=qs[_0x5e47('0x39')](_0x314835[_0x5e47('0x30')][_0x5e47('0x39')]);_0x1093e8[_0x5e47('0x1d')]=qs[_0x5e47('0x1d')](_0x314835[_0x5e47('0x30')][_0x5e47('0x1d')]);}_0x1093e8[_0x5e47('0x3a')]=qs[_0x5e47('0x3b')](_0x314835[_0x5e47('0x30')][_0x5e47('0x3b')]);_0x1093e8['where']=qs[_0x5e47('0x31')](_[_0x5e47('0x3c')](_0x314835[_0x5e47('0x30')],_0x273813['filters']),_0x2615dc);if(_0x314835['query']['filter']){_0x1093e8[_0x5e47('0x3d')]=_['merge'](_0x1093e8[_0x5e47('0x3d')],{'$or':_[_0x5e47('0x2c')](_0x2615dc,function(_0x1e599c){if(_0x1e599c['type']!=='VIRTUAL'){var _0x2408fe={};_0x2408fe[_0x1e599c['name']]={'$like':'%'+_0x314835[_0x5e47('0x30')][_0x5e47('0x3e')]+'%'};return _0x2408fe;}})});}_0x1093e8=_['merge']({},_0x1093e8,_0x314835['options']);var _0x22c188={'where':_0x1093e8['where']};return db[_0x5e47('0x2d')][_0x5e47('0x1f')](_0x22c188)['then'](function(_0x499f9c){_0x16e131['count']=_0x499f9c;if(_0x314835[_0x5e47('0x30')][_0x5e47('0x3f')]){_0x1093e8['include']=[{'all':!![]}];}return db['MailServerOut'][_0x5e47('0x40')](_0x1093e8);})[_0x5e47('0x24')](function(_0x736483){_0x16e131[_0x5e47('0x41')]=_0x736483;return _0x16e131;})['then'](respondWithFilteredResult(_0xbfc967,_0x1093e8))['catch'](handleError(_0xbfc967,null));};exports[_0x5e47('0x42')]=function(_0x282f1b,_0x1b84fd){var _0x5e01={'raw':!![],'where':{'id':_0x282f1b[_0x5e47('0x43')]['id']}},_0x2b6249={};_0x2b6249['model']=_[_0x5e47('0x44')](db[_0x5e47('0x2d')][_0x5e47('0x45')]);_0x2b6249[_0x5e47('0x30')]=_[_0x5e47('0x44')](_0x282f1b[_0x5e47('0x30')]);_0x2b6249[_0x5e47('0x31')]=_[_0x5e47('0x32')](_0x2b6249[_0x5e47('0x33')],_0x2b6249[_0x5e47('0x30')]);_0x5e01[_0x5e47('0x34')]=_['intersection'](_0x2b6249[_0x5e47('0x33')],qs[_0x5e47('0x35')](_0x282f1b[_0x5e47('0x30')][_0x5e47('0x35')]));_0x5e01[_0x5e47('0x34')]=_0x5e01[_0x5e47('0x34')][_0x5e47('0x36')]?_0x5e01['attributes']:_0x2b6249[_0x5e47('0x33')];if(_0x282f1b[_0x5e47('0x30')][_0x5e47('0x3f')]){_0x5e01['include']=[{'all':!![]}];}_0x5e01=_[_0x5e47('0x46')]({},_0x5e01,_0x282f1b[_0x5e47('0x47')]);return db['MailServerOut'][_0x5e47('0x48')](_0x5e01)['then'](handleEntityNotFound(_0x1b84fd,null))['then'](respondWithResult(_0x1b84fd,null))[_0x5e47('0x49')](handleError(_0x1b84fd,null));};exports[_0x5e47('0x4a')]=function(_0x4b5a7b,_0x386dba){return db['MailServerOut']['create'](_0x4b5a7b[_0x5e47('0x4b')],{})[_0x5e47('0x24')](respondWithResult(_0x386dba,0xc9))[_0x5e47('0x49')](handleError(_0x386dba,null));};exports[_0x5e47('0x4c')]=function(_0x2de2ce,_0x2e78be){if(_0x2de2ce[_0x5e47('0x4b')]['id']){delete _0x2de2ce[_0x5e47('0x4b')]['id'];}return db[_0x5e47('0x2d')][_0x5e47('0x48')]({'where':{'id':_0x2de2ce[_0x5e47('0x43')]['id']}})[_0x5e47('0x24')](handleEntityNotFound(_0x2e78be,null))[_0x5e47('0x24')](saveUpdates(_0x2de2ce[_0x5e47('0x4b')],null))[_0x5e47('0x24')](respondWithResult(_0x2e78be,null))[_0x5e47('0x49')](handleError(_0x2e78be,null));};exports[_0x5e47('0x25')]=function(_0x1d8b01,_0x4d1981){return db['MailServerOut']['find']({'where':{'id':_0x1d8b01['params']['id']}})[_0x5e47('0x24')](handleEntityNotFound(_0x4d1981,null))[_0x5e47('0x24')](removeEntity(_0x4d1981,null))[_0x5e47('0x49')](handleError(_0x4d1981,null));};
\ No newline at end of file
index fa145eb..9dd8f7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c8=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./mailServerOut.attributes','MailServerOut','mail_servers_out','lodash'];(function(_0x4de3e4,_0x4b12da){var _0xd170d5=function(_0x2b8fde){while(--_0x2b8fde){_0x4de3e4['push'](_0x4de3e4['shift']());}};_0xd170d5(++_0x4b12da);}(_0x17c8,0x1af));var _0x817c=function(_0x2fb744,_0x46dbb1){_0x2fb744=_0x2fb744-0x0;var _0x169912=_0x17c8[_0x2fb744];return _0x169912;};'use strict';var _=require(_0x817c('0x0'));var util=require(_0x817c('0x1'));var logger=require(_0x817c('0x2'))(_0x817c('0x3'));var moment=require(_0x817c('0x4'));var BPromise=require(_0x817c('0x5'));var rp=require(_0x817c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x817c('0x7'));var config=require(_0x817c('0x8'));var attributes=require(_0x817c('0x9'));module['exports']=function(_0x5d40ab,_0x1f41e8){return _0x5d40ab['define'](_0x817c('0xa'),attributes,{'tableName':_0x817c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb700=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','MailServerOut','mail_servers_out','lodash'];(function(_0x4dba79,_0x2eaa57){var _0x57662a=function(_0x667768){while(--_0x667768){_0x4dba79['push'](_0x4dba79['shift']());}};_0x57662a(++_0x2eaa57);}(_0xb700,0x9b));var _0x0b70=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0xb700[_0x5ce8b9];return _0xe34be0;};'use strict';var _=require(_0x0b70('0x0'));var util=require('util');var logger=require(_0x0b70('0x1'))(_0x0b70('0x2'));var moment=require(_0x0b70('0x3'));var BPromise=require(_0x0b70('0x4'));var rp=require(_0x0b70('0x5'));var fs=require('fs');var path=require(_0x0b70('0x6'));var rimraf=require(_0x0b70('0x7'));var config=require(_0x0b70('0x8'));var attributes=require(_0x0b70('0x9'));module[_0x0b70('0xa')]=function(_0x3df31b,_0x57d749){return _0x3df31b['define'](_0x0b70('0xb'),attributes,{'tableName':_0x0b70('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7e61e9d..30ee2b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x1a5673,_0x4edadc){var _0x1a8951=function(_0x3f91fc){while(--_0x3f91fc){_0x1a5673['push'](_0x1a5673['shift']());}};_0x1a8951(++_0x4edadc);}(_0x5f2f,0x73));var _0xf5f2=function(_0x3434db,_0x55f7e3){_0x3434db=_0x3434db-0x0;var _0x1c0c49=_0x5f2f[_0x3434db];return _0x1c0c49;};'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')]('MailServerOut,\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
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailServerOut,\x20%s,\x20%s','MailServerOut,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x534c33,_0x120ebc){var _0x22b732=function(_0x2ecd80){while(--_0x2ecd80){_0x534c33['push'](_0x534c33['shift']());}};_0x22b732(++_0x120ebc);}(_0x2ef3,0xba));var _0x32ef=function(_0x246ae7,_0xe87c35){_0x246ae7=_0x246ae7-0x0;var _0x40a5d1=_0x2ef3[_0x246ae7];return _0x40a5d1;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index 39cac38..866f2d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4eb=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','delete','destroy','util','path'];(function(_0x53846d,_0x116d77){var _0x51b922=function(_0x2214a5){while(--_0x2214a5){_0x53846d['push'](_0x53846d['shift']());}};_0x51b922(++_0x116d77);}(_0xd4eb,0x83));var _0xbd4e=function(_0x97c2dc,_0x213a4b){_0x97c2dc=_0x97c2dc-0x0;var _0x7fd0d0=_0xd4eb[_0x97c2dc];return _0x7fd0d0;};'use strict';var multer=require('multer');var util=require(_0xbd4e('0x0'));var path=require(_0xbd4e('0x1'));var timeout=require(_0xbd4e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbd4e('0x3'));var auth=require(_0xbd4e('0x4'));var interaction=require(_0xbd4e('0x5'));var config=require(_0xbd4e('0x6'));var controller=require(_0xbd4e('0x7'));router[_0xbd4e('0x8')]('/',auth[_0xbd4e('0x9')](),controller[_0xbd4e('0xa')]);router[_0xbd4e('0x8')](_0xbd4e('0xb'),auth[_0xbd4e('0x9')](),controller[_0xbd4e('0xc')]);router[_0xbd4e('0x8')](_0xbd4e('0xd'),auth[_0xbd4e('0x9')](),controller[_0xbd4e('0xe')]);router['post']('/',auth[_0xbd4e('0x9')](),controller[_0xbd4e('0xf')]);router[_0xbd4e('0x10')]('/:id',auth[_0xbd4e('0x9')](),controller['update']);router[_0xbd4e('0x11')](_0xbd4e('0xd'),auth[_0xbd4e('0x9')](),controller[_0xbd4e('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x694a=['/:id','show','post','create','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','/describe','describe'];(function(_0x594ae6,_0x39a7c7){var _0x36d241=function(_0x372d68){while(--_0x372d68){_0x594ae6['push'](_0x594ae6['shift']());}};_0x36d241(++_0x39a7c7);}(_0x694a,0x1ed));var _0xa694=function(_0x385379,_0x9b2b8c){_0x385379=_0x385379-0x0;var _0x1dc027=_0x694a[_0x385379];return _0x1dc027;};'use strict';var multer=require('multer');var util=require(_0xa694('0x0'));var path=require(_0xa694('0x1'));var timeout=require(_0xa694('0x2'));var express=require(_0xa694('0x3'));var router=express[_0xa694('0x4')]();var fs_extra=require(_0xa694('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa694('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0xa694('0x7')]('/',auth[_0xa694('0x8')](),controller['index']);router[_0xa694('0x7')](_0xa694('0x9'),auth[_0xa694('0x8')](),controller[_0xa694('0xa')]);router['get'](_0xa694('0xb'),auth[_0xa694('0x8')](),controller[_0xa694('0xc')]);router[_0xa694('0xd')]('/',auth[_0xa694('0x8')](),controller[_0xa694('0xe')]);router[_0xa694('0xf')](_0xa694('0xb'),auth[_0xa694('0x8')](),controller['update']);router[_0xa694('0x10')]('/:id',auth[_0xa694('0x8')](),controller['destroy']);module[_0xa694('0x11')]=router;
\ No newline at end of file
index 521380c..d1333de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['sequelize','exports','STRING'];(function(_0x52cd66,_0x37dfc3){var _0x26fc62=function(_0x110933){while(--_0x110933){_0x52cd66['push'](_0x52cd66['shift']());}};_0x26fc62(++_0x37dfc3);}(_0x31af,0xde));var _0xf31a=function(_0x5e29cc,_0x4cc7ca){_0x5e29cc=_0x5e29cc-0x0;var _0x2f2bb6=_0x31af[_0x5e29cc];return _0x2f2bb6;};'use strict';var Sequelize=require(_0xf31a('0x0'));module[_0xf31a('0x1')]={'name':{'type':Sequelize[_0xf31a('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8c46=['name','sequelize'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x8c46,0x171));var _0x68c4=function(_0x156515,_0x760da4){_0x156515=_0x156515-0x0;var _0x3e1e8b=_0x8c46[_0x156515];return _0x3e1e8b;};'use strict';var Sequelize=require(_0x68c4('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x68c4('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d49597d..4f5715e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe708=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','json','reject','save','destroy','then','stack','name','send','index','MailSubstatus','fieldName','model','map','query','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger'];(function(_0x2b5ccf,_0x45b1c8){var _0x4b3b60=function(_0x569223){while(--_0x569223){_0x2b5ccf['push'](_0x2b5ccf['shift']());}};_0x4b3b60(++_0x45b1c8);}(_0xe708,0x1e5));var _0x8e70=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0xe708[_0x1a9204];return _0x17ca68;};'use strict';var emlformat=require(_0x8e70('0x0'));var rimraf=require(_0x8e70('0x1'));var zipdir=require(_0x8e70('0x2'));var jsonpatch=require(_0x8e70('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x8e70('0x4'));var Mustache=require(_0x8e70('0x5'));var util=require(_0x8e70('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x8e70('0x7'));var ejs=require(_0x8e70('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8e70('0x9'));var squel=require(_0x8e70('0xa'));var crypto=require(_0x8e70('0xb'));var jsforce=require(_0x8e70('0xc'));var deskjs=require(_0x8e70('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8e70('0xe'));var Papa=require(_0x8e70('0xf'));var Redis=require(_0x8e70('0x10'));var authService=require(_0x8e70('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x8e70('0x12'))(_0x8e70('0x13'));var utils=require(_0x8e70('0x14'));var config=require(_0x8e70('0x15'));var licenseUtil=require(_0x8e70('0x16'));var db=require(_0x8e70('0x17'))['db'];function respondWithStatusCode(_0x384cf1,_0x447172){_0x447172=_0x447172||0xcc;return function(_0x5b47c1){if(_0x5b47c1){return _0x384cf1[_0x8e70('0x18')](_0x447172);}return _0x384cf1[_0x8e70('0x19')](_0x447172)[_0x8e70('0x1a')]();};}function respondWithResult(_0x1564d1,_0x10498d){_0x10498d=_0x10498d||0xc8;return function(_0x2c4f1b){if(_0x2c4f1b){return _0x1564d1[_0x8e70('0x19')](_0x10498d)['json'](_0x2c4f1b);}};}function respondWithFilteredResult(_0x2c7455,_0x2794ca){return function(_0x2be314){if(_0x2be314){var _0x1dfc69=typeof _0x2794ca[_0x8e70('0x1b')]==='undefined'&&typeof _0x2794ca[_0x8e70('0x1c')]===_0x8e70('0x1d');var _0x495814=_0x2be314[_0x8e70('0x1e')];var _0x192603=_0x1dfc69?0x0:_0x2794ca[_0x8e70('0x1b')];var _0x196e84=_0x1dfc69?_0x2be314[_0x8e70('0x1e')]:_0x2794ca[_0x8e70('0x1b')]+_0x2794ca['limit'];var _0x3c3468;if(_0x196e84>=_0x495814){_0x196e84=_0x495814;_0x3c3468=0xc8;}else{_0x3c3468=0xce;}_0x2c7455[_0x8e70('0x19')](_0x3c3468);return _0x2c7455[_0x8e70('0x1f')]('Content-Range',_0x192603+'-'+_0x196e84+'/'+_0x495814)[_0x8e70('0x20')](_0x2be314);}return null;};}function patchUpdates(_0x15a91b){return function(_0x4e684a){try{jsonpatch['apply'](_0x4e684a,_0x15a91b,!![]);}catch(_0x36ab3d){return BPromise[_0x8e70('0x21')](_0x36ab3d);}return _0x4e684a[_0x8e70('0x22')]();};}function saveUpdates(_0x1502e6,_0x3292bf){return function(_0x43e49f){if(_0x43e49f){return _0x43e49f['update'](_0x1502e6)['then'](function(_0x38239d){return _0x38239d;});}return null;};}function removeEntity(_0x21519e,_0x1076ee){return function(_0x521f6f){if(_0x521f6f){return _0x521f6f[_0x8e70('0x23')]()[_0x8e70('0x24')](function(){_0x21519e[_0x8e70('0x19')](0xcc)[_0x8e70('0x1a')]();});}};}function handleEntityNotFound(_0xbefcbe,_0x39b538){return function(_0x6aafa8){if(!_0x6aafa8){_0xbefcbe[_0x8e70('0x18')](0x194);}return _0x6aafa8;};}function handleError(_0x92cdc6,_0x1b9bb0){_0x1b9bb0=_0x1b9bb0||0x1f4;return function(_0x943c43){logger['error'](_0x943c43[_0x8e70('0x25')]);if(_0x943c43[_0x8e70('0x26')]){delete _0x943c43[_0x8e70('0x26')];}_0x92cdc6[_0x8e70('0x19')](_0x1b9bb0)[_0x8e70('0x27')](_0x943c43);};}exports[_0x8e70('0x28')]=function(_0x12ad6d,_0x1f1780){var _0x20fe74={},_0x43a894={},_0x3513c8={'count':0x0,'rows':[]};var _0x3f3209=_['map'](db[_0x8e70('0x29')]['rawAttributes'],function(_0x42d4f2){return{'name':_0x42d4f2[_0x8e70('0x2a')],'type':_0x42d4f2['type']['key']};});_0x43a894[_0x8e70('0x2b')]=_[_0x8e70('0x2c')](_0x3f3209,_0x8e70('0x26'));_0x43a894['query']=_['keys'](_0x12ad6d[_0x8e70('0x2d')]);_0x43a894[_0x8e70('0x2e')]=_[_0x8e70('0x2f')](_0x43a894['model'],_0x43a894['query']);_0x20fe74[_0x8e70('0x30')]=_[_0x8e70('0x2f')](_0x43a894['model'],qs[_0x8e70('0x31')](_0x12ad6d['query'][_0x8e70('0x31')]));_0x20fe74[_0x8e70('0x30')]=_0x20fe74['attributes'][_0x8e70('0x32')]?_0x20fe74[_0x8e70('0x30')]:_0x43a894[_0x8e70('0x2b')];if(!_0x12ad6d['query']['hasOwnProperty']('nolimit')){_0x20fe74[_0x8e70('0x1c')]=qs[_0x8e70('0x1c')](_0x12ad6d['query'][_0x8e70('0x1c')]);_0x20fe74[_0x8e70('0x1b')]=qs[_0x8e70('0x1b')](_0x12ad6d['query'][_0x8e70('0x1b')]);}_0x20fe74[_0x8e70('0x33')]=qs['sort'](_0x12ad6d['query'][_0x8e70('0x34')]);_0x20fe74[_0x8e70('0x35')]=qs[_0x8e70('0x2e')](_['pick'](_0x12ad6d[_0x8e70('0x2d')],_0x43a894[_0x8e70('0x2e')]),_0x3f3209);if(_0x12ad6d['query'][_0x8e70('0x36')]){_0x20fe74[_0x8e70('0x35')]=_[_0x8e70('0x37')](_0x20fe74[_0x8e70('0x35')],{'$or':_[_0x8e70('0x2c')](_0x3f3209,function(_0x578439){if(_0x578439[_0x8e70('0x38')]!==_0x8e70('0x39')){var _0xe8b123={};_0xe8b123[_0x578439[_0x8e70('0x26')]]={'$like':'%'+_0x12ad6d[_0x8e70('0x2d')]['filter']+'%'};return _0xe8b123;}})});}_0x20fe74=_[_0x8e70('0x37')]({},_0x20fe74,_0x12ad6d[_0x8e70('0x3a')]);var _0x5dcd03={'where':_0x20fe74[_0x8e70('0x35')]};return db[_0x8e70('0x29')][_0x8e70('0x1e')](_0x5dcd03)['then'](function(_0x311fb2){_0x3513c8[_0x8e70('0x1e')]=_0x311fb2;if(_0x12ad6d['query'][_0x8e70('0x3b')]){_0x20fe74['include']=[{'all':!![]}];}return db[_0x8e70('0x29')]['findAll'](_0x20fe74);})[_0x8e70('0x24')](function(_0x2b818a){_0x3513c8[_0x8e70('0x3c')]=_0x2b818a;return _0x3513c8;})[_0x8e70('0x24')](respondWithFilteredResult(_0x1f1780,_0x20fe74))[_0x8e70('0x3d')](handleError(_0x1f1780,null));};exports[_0x8e70('0x3e')]=function(_0x4c5f7c,_0x1131ce){var _0x19612e={'raw':!![],'where':{'id':_0x4c5f7c[_0x8e70('0x3f')]['id']}},_0x41efb3={};_0x41efb3[_0x8e70('0x2b')]=_[_0x8e70('0x40')](db[_0x8e70('0x29')][_0x8e70('0x41')]);_0x41efb3[_0x8e70('0x2d')]=_[_0x8e70('0x40')](_0x4c5f7c[_0x8e70('0x2d')]);_0x41efb3[_0x8e70('0x2e')]=_[_0x8e70('0x2f')](_0x41efb3[_0x8e70('0x2b')],_0x41efb3[_0x8e70('0x2d')]);_0x19612e['attributes']=_[_0x8e70('0x2f')](_0x41efb3[_0x8e70('0x2b')],qs[_0x8e70('0x31')](_0x4c5f7c[_0x8e70('0x2d')][_0x8e70('0x31')]));_0x19612e['attributes']=_0x19612e['attributes'][_0x8e70('0x32')]?_0x19612e[_0x8e70('0x30')]:_0x41efb3['model'];if(_0x4c5f7c[_0x8e70('0x2d')]['includeAll']){_0x19612e[_0x8e70('0x42')]=[{'all':!![]}];}_0x19612e=_[_0x8e70('0x37')]({},_0x19612e,_0x4c5f7c[_0x8e70('0x3a')]);return db[_0x8e70('0x29')][_0x8e70('0x43')](_0x19612e)[_0x8e70('0x24')](handleEntityNotFound(_0x1131ce,null))['then'](respondWithResult(_0x1131ce,null))[_0x8e70('0x3d')](handleError(_0x1131ce,null));};exports[_0x8e70('0x44')]=function(_0x343763,_0x3ef83f){return db[_0x8e70('0x29')]['create'](_0x343763[_0x8e70('0x45')],{})[_0x8e70('0x24')](respondWithResult(_0x3ef83f,0xc9))[_0x8e70('0x3d')](handleError(_0x3ef83f,null));};exports[_0x8e70('0x46')]=function(_0x4dd953,_0x5d987b){if(_0x4dd953[_0x8e70('0x45')]['id']){delete _0x4dd953[_0x8e70('0x45')]['id'];}return db[_0x8e70('0x29')]['find']({'where':{'id':_0x4dd953['params']['id']}})[_0x8e70('0x24')](handleEntityNotFound(_0x5d987b,null))[_0x8e70('0x24')](saveUpdates(_0x4dd953[_0x8e70('0x45')],null))[_0x8e70('0x24')](respondWithResult(_0x5d987b,null))['catch'](handleError(_0x5d987b,null));};exports[_0x8e70('0x23')]=function(_0xc19a56,_0x326d06){return db[_0x8e70('0x29')][_0x8e70('0x43')]({'where':{'id':_0xc19a56['params']['id']}})['then'](handleEntityNotFound(_0x326d06,null))['then'](removeEntity(_0x326d06,null))[_0x8e70('0x3d')](handleError(_0x326d06,null));};exports[_0x8e70('0x47')]=function(_0x4b6916,_0x4cf432){return db[_0x8e70('0x29')][_0x8e70('0x47')]()[_0x8e70('0x24')](respondWithResult(_0x4cf432,null))[_0x8e70('0x3d')](handleError(_0x4cf432,null));};
\ No newline at end of file
+var _0x0137=['request-promise','moment','bluebird','mustache','util','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','save','then','end','error','stack','name','send','index','map','MailSubstatus','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','catch','show','params','includeAll','create','update','body','find','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x3f083b,_0x199509){var _0x51ee09=function(_0x4c282d){while(--_0x4c282d){_0x3f083b['push'](_0x3f083b['shift']());}};_0x51ee09(++_0x199509);}(_0x0137,0x178));var _0x7013=function(_0x44799d,_0x26c23a){_0x44799d=_0x44799d-0x0;var _0x4f4a20=_0x0137[_0x44799d];return _0x4f4a20;};'use strict';var emlformat=require(_0x7013('0x0'));var rimraf=require(_0x7013('0x1'));var zipdir=require(_0x7013('0x2'));var jsonpatch=require(_0x7013('0x3'));var rp=require(_0x7013('0x4'));var moment=require(_0x7013('0x5'));var BPromise=require(_0x7013('0x6'));var Mustache=require(_0x7013('0x7'));var util=require(_0x7013('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7013('0x9'));var _=require(_0x7013('0xa'));var squel=require('squel');var crypto=require(_0x7013('0xb'));var jsforce=require(_0x7013('0xc'));var deskjs=require(_0x7013('0xd'));var toCsv=require(_0x7013('0xe'));var querystring=require(_0x7013('0xf'));var Papa=require(_0x7013('0x10'));var Redis=require('ioredis');var authService=require(_0x7013('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x7013('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x7013('0x13'));var config=require(_0x7013('0x14'));var licenseUtil=require(_0x7013('0x15'));var db=require(_0x7013('0x16'))['db'];function respondWithStatusCode(_0x158bed,_0xe83767){_0xe83767=_0xe83767||0xcc;return function(_0x3fde9f){if(_0x3fde9f){return _0x158bed[_0x7013('0x17')](_0xe83767);}return _0x158bed[_0x7013('0x18')](_0xe83767)['end']();};}function respondWithResult(_0x5e72bb,_0x1e7425){_0x1e7425=_0x1e7425||0xc8;return function(_0x4d0d83){if(_0x4d0d83){return _0x5e72bb[_0x7013('0x18')](_0x1e7425)['json'](_0x4d0d83);}};}function respondWithFilteredResult(_0xed06de,_0x48d4c4){return function(_0x1fb144){if(_0x1fb144){var _0x283666=typeof _0x48d4c4['offset']===_0x7013('0x19')&&typeof _0x48d4c4[_0x7013('0x1a')]===_0x7013('0x19');var _0x3442ac=_0x1fb144['count'];var _0x110165=_0x283666?0x0:_0x48d4c4[_0x7013('0x1b')];var _0x4e9885=_0x283666?_0x1fb144[_0x7013('0x1c')]:_0x48d4c4[_0x7013('0x1b')]+_0x48d4c4[_0x7013('0x1a')];var _0x16d6dd;if(_0x4e9885>=_0x3442ac){_0x4e9885=_0x3442ac;_0x16d6dd=0xc8;}else{_0x16d6dd=0xce;}_0xed06de[_0x7013('0x18')](_0x16d6dd);return _0xed06de[_0x7013('0x1d')](_0x7013('0x1e'),_0x110165+'-'+_0x4e9885+'/'+_0x3442ac)[_0x7013('0x1f')](_0x1fb144);}return null;};}function patchUpdates(_0x11044e){return function(_0x587e7e){try{jsonpatch[_0x7013('0x20')](_0x587e7e,_0x11044e,!![]);}catch(_0xf9e4d6){return BPromise[_0x7013('0x21')](_0xf9e4d6);}return _0x587e7e[_0x7013('0x22')]();};}function saveUpdates(_0x5c70f3,_0x5dfab6){return function(_0x322247){if(_0x322247){return _0x322247['update'](_0x5c70f3)[_0x7013('0x23')](function(_0x56f6a1){return _0x56f6a1;});}return null;};}function removeEntity(_0x2b322c,_0x4e72af){return function(_0xa343b){if(_0xa343b){return _0xa343b['destroy']()[_0x7013('0x23')](function(){_0x2b322c['status'](0xcc)[_0x7013('0x24')]();});}};}function handleEntityNotFound(_0x488d8d,_0xbef5fe){return function(_0x396cc4){if(!_0x396cc4){_0x488d8d[_0x7013('0x17')](0x194);}return _0x396cc4;};}function handleError(_0x565b92,_0x585d34){_0x585d34=_0x585d34||0x1f4;return function(_0x59bfdb){logger[_0x7013('0x25')](_0x59bfdb[_0x7013('0x26')]);if(_0x59bfdb['name']){delete _0x59bfdb[_0x7013('0x27')];}_0x565b92[_0x7013('0x18')](_0x585d34)[_0x7013('0x28')](_0x59bfdb);};}exports[_0x7013('0x29')]=function(_0x2e4090,_0x52afcc){var _0x366693={},_0x539cb8={},_0x2d94fd={'count':0x0,'rows':[]};var _0x5a1014=_[_0x7013('0x2a')](db[_0x7013('0x2b')][_0x7013('0x2c')],function(_0x18daf4){return{'name':_0x18daf4['fieldName'],'type':_0x18daf4[_0x7013('0x2d')][_0x7013('0x2e')]};});_0x539cb8[_0x7013('0x2f')]=_[_0x7013('0x2a')](_0x5a1014,_0x7013('0x27'));_0x539cb8['query']=_[_0x7013('0x30')](_0x2e4090[_0x7013('0x31')]);_0x539cb8[_0x7013('0x32')]=_[_0x7013('0x33')](_0x539cb8['model'],_0x539cb8['query']);_0x366693['attributes']=_[_0x7013('0x33')](_0x539cb8[_0x7013('0x2f')],qs['fields'](_0x2e4090[_0x7013('0x31')][_0x7013('0x34')]));_0x366693[_0x7013('0x35')]=_0x366693[_0x7013('0x35')][_0x7013('0x36')]?_0x366693['attributes']:_0x539cb8[_0x7013('0x2f')];if(!_0x2e4090[_0x7013('0x31')]['hasOwnProperty'](_0x7013('0x37'))){_0x366693[_0x7013('0x1a')]=qs[_0x7013('0x1a')](_0x2e4090[_0x7013('0x31')][_0x7013('0x1a')]);_0x366693[_0x7013('0x1b')]=qs['offset'](_0x2e4090[_0x7013('0x31')][_0x7013('0x1b')]);}_0x366693[_0x7013('0x38')]=qs[_0x7013('0x39')](_0x2e4090[_0x7013('0x31')][_0x7013('0x39')]);_0x366693[_0x7013('0x3a')]=qs[_0x7013('0x32')](_[_0x7013('0x3b')](_0x2e4090[_0x7013('0x31')],_0x539cb8[_0x7013('0x32')]),_0x5a1014);if(_0x2e4090[_0x7013('0x31')]['filter']){_0x366693[_0x7013('0x3a')]=_[_0x7013('0x3c')](_0x366693['where'],{'$or':_[_0x7013('0x2a')](_0x5a1014,function(_0x11d993){if(_0x11d993['type']!==_0x7013('0x3d')){var _0x417683={};_0x417683[_0x11d993['name']]={'$like':'%'+_0x2e4090['query'][_0x7013('0x3e')]+'%'};return _0x417683;}})});}_0x366693=_[_0x7013('0x3c')]({},_0x366693,_0x2e4090[_0x7013('0x3f')]);var _0x33ea3e={'where':_0x366693[_0x7013('0x3a')]};return db[_0x7013('0x2b')]['count'](_0x33ea3e)['then'](function(_0xf09a2){_0x2d94fd['count']=_0xf09a2;if(_0x2e4090[_0x7013('0x31')]['includeAll']){_0x366693[_0x7013('0x40')]=[{'all':!![]}];}return db[_0x7013('0x2b')][_0x7013('0x41')](_0x366693);})[_0x7013('0x23')](function(_0x251c2e){_0x2d94fd['rows']=_0x251c2e;return _0x2d94fd;})[_0x7013('0x23')](respondWithFilteredResult(_0x52afcc,_0x366693))[_0x7013('0x42')](handleError(_0x52afcc,null));};exports[_0x7013('0x43')]=function(_0x575d8b,_0x391018){var _0x2f6a88={'raw':!![],'where':{'id':_0x575d8b[_0x7013('0x44')]['id']}},_0x7cd98={};_0x7cd98[_0x7013('0x2f')]=_[_0x7013('0x30')](db[_0x7013('0x2b')][_0x7013('0x2c')]);_0x7cd98[_0x7013('0x31')]=_[_0x7013('0x30')](_0x575d8b['query']);_0x7cd98['filters']=_[_0x7013('0x33')](_0x7cd98[_0x7013('0x2f')],_0x7cd98[_0x7013('0x31')]);_0x2f6a88[_0x7013('0x35')]=_['intersection'](_0x7cd98[_0x7013('0x2f')],qs[_0x7013('0x34')](_0x575d8b['query']['fields']));_0x2f6a88['attributes']=_0x2f6a88['attributes'][_0x7013('0x36')]?_0x2f6a88['attributes']:_0x7cd98[_0x7013('0x2f')];if(_0x575d8b[_0x7013('0x31')][_0x7013('0x45')]){_0x2f6a88[_0x7013('0x40')]=[{'all':!![]}];}_0x2f6a88=_[_0x7013('0x3c')]({},_0x2f6a88,_0x575d8b[_0x7013('0x3f')]);return db['MailSubstatus']['find'](_0x2f6a88)['then'](handleEntityNotFound(_0x391018,null))[_0x7013('0x23')](respondWithResult(_0x391018,null))[_0x7013('0x42')](handleError(_0x391018,null));};exports['create']=function(_0x5b02e0,_0x249b94){return db[_0x7013('0x2b')][_0x7013('0x46')](_0x5b02e0['body'],{})['then'](respondWithResult(_0x249b94,0xc9))[_0x7013('0x42')](handleError(_0x249b94,null));};exports[_0x7013('0x47')]=function(_0x48561c,_0x367a55){if(_0x48561c['body']['id']){delete _0x48561c[_0x7013('0x48')]['id'];}return db[_0x7013('0x2b')][_0x7013('0x49')]({'where':{'id':_0x48561c[_0x7013('0x44')]['id']}})[_0x7013('0x23')](handleEntityNotFound(_0x367a55,null))[_0x7013('0x23')](saveUpdates(_0x48561c[_0x7013('0x48')],null))[_0x7013('0x23')](respondWithResult(_0x367a55,null))[_0x7013('0x42')](handleError(_0x367a55,null));};exports[_0x7013('0x4a')]=function(_0x49d761,_0x1a5b2b){return db[_0x7013('0x2b')][_0x7013('0x49')]({'where':{'id':_0x49d761[_0x7013('0x44')]['id']}})[_0x7013('0x23')](handleEntityNotFound(_0x1a5b2b,null))[_0x7013('0x23')](removeEntity(_0x1a5b2b,null))[_0x7013('0x42')](handleError(_0x1a5b2b,null));};exports[_0x7013('0x4b')]=function(_0x44ddfa,_0x12d9db){return db['MailSubstatus'][_0x7013('0x4b')]()[_0x7013('0x23')](respondWithResult(_0x12d9db,null))['catch'](handleError(_0x12d9db,null));};
\ No newline at end of file
index 21546c2..8d81b53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf14f=['path','rimraf','../../config/environment','./mailSubstatus.attributes','MailSubstatus','mail_substatuses','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x26cb06,_0x5d0a2c){var _0x34a7e2=function(_0x5ecbcf){while(--_0x5ecbcf){_0x26cb06['push'](_0x26cb06['shift']());}};_0x34a7e2(++_0x5d0a2c);}(_0xf14f,0x8a));var _0xff14=function(_0x8bb4c1,_0x2d6e53){_0x8bb4c1=_0x8bb4c1-0x0;var _0x67a6e1=_0xf14f[_0x8bb4c1];return _0x67a6e1;};'use strict';var _=require(_0xff14('0x0'));var util=require(_0xff14('0x1'));var logger=require(_0xff14('0x2'))(_0xff14('0x3'));var moment=require('moment');var BPromise=require(_0xff14('0x4'));var rp=require(_0xff14('0x5'));var fs=require('fs');var path=require(_0xff14('0x6'));var rimraf=require(_0xff14('0x7'));var config=require(_0xff14('0x8'));var attributes=require(_0xff14('0x9'));module['exports']=function(_0x326e72,_0x1cadb8){return _0x326e72['define'](_0xff14('0xa'),attributes,{'tableName':_0xff14('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee7d=['MailSubstatus','mail_substatuses','lodash','api','moment','bluebird','rimraf','../../config/environment','./mailSubstatus.attributes','define'];(function(_0x285c85,_0x132c21){var _0x2f81cd=function(_0x9b9962){while(--_0x9b9962){_0x285c85['push'](_0x285c85['shift']());}};_0x2f81cd(++_0x132c21);}(_0xee7d,0xa2));var _0xdee7=function(_0x1245fd,_0x5effe9){_0x1245fd=_0x1245fd-0x0;var _0x159e8d=_0xee7d[_0x1245fd];return _0x159e8d;};'use strict';var _=require(_0xdee7('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xdee7('0x1'));var moment=require(_0xdee7('0x2'));var BPromise=require(_0xdee7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xdee7('0x4'));var config=require(_0xdee7('0x5'));var attributes=require(_0xdee7('0x6'));module['exports']=function(_0x55307c,_0x29cd60){return _0x55307c[_0xdee7('0x7')](_0xdee7('0x8'),attributes,{'tableName':_0xdee7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 545bbe6..9df2d06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8888=['jayson/promise','http','then','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','MailSubstatus,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8888,0x99));var _0x8888=function(_0x43cf0e,_0x241496){_0x43cf0e=_0x43cf0e-0x0;var _0x46452b=_0x8888[_0x43cf0e];return _0x46452b;};'use strict';var _=require(_0x8888('0x0'));var util=require(_0x8888('0x1'));var moment=require(_0x8888('0x2'));var BPromise=require('bluebird');var rs=require(_0x8888('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8888('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8888('0x5'))(_0x8888('0x6'));var config=require('../../config/environment');var jayson=require(_0x8888('0x7'));var client=jayson['client'][_0x8888('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4dd006,_0x36611a,_0x3248a8){return new BPromise(function(_0x2bcffa,_0x4d8443){return client['request'](_0x4dd006,_0x3248a8)[_0x8888('0x9')](function(_0x53109b){logger[_0x8888('0xa')]('MailSubstatus,\x20%s,\x20%s',_0x36611a,_0x8888('0xb'));logger[_0x8888('0xc')](_0x8888('0xd'),_0x36611a,_0x8888('0xb'),JSON[_0x8888('0xe')](_0x53109b));if(_0x53109b[_0x8888('0xf')]){if(_0x53109b[_0x8888('0xf')]['code']===0x1f4){logger['error'](_0x8888('0x10'),_0x36611a,_0x53109b['error'][_0x8888('0x11')]);return _0x4d8443(_0x53109b[_0x8888('0xf')][_0x8888('0x11')]);}logger[_0x8888('0xf')](_0x8888('0x10'),_0x36611a,_0x53109b['error']['message']);return _0x2bcffa(_0x53109b[_0x8888('0xf')][_0x8888('0x11')]);}else{logger[_0x8888('0xa')](_0x8888('0x10'),_0x36611a,_0x8888('0xb'));_0x2bcffa(_0x53109b[_0x8888('0x12')][_0x8888('0x11')]);}})[_0x8888('0x13')](function(_0x4ded08){logger[_0x8888('0xf')](_0x8888('0x10'),_0x36611a,_0x4ded08);_0x4d8443(_0x4ded08);});});}
\ No newline at end of file
+var _0x1059=['http','request','info','debug','stringify','code','error','message','MailSubstatus,\x20%s,\x20%s','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0xd63d8,_0xd87d73){var _0x4c5e68=function(_0xa327d8){while(--_0xa327d8){_0xd63d8['push'](_0xd63d8['shift']());}};_0x4c5e68(++_0xd87d73);}(_0x1059,0x1ba));var _0x9105=function(_0x31b286,_0x542fb5){_0x31b286=_0x31b286-0x0;var _0x541635=_0x1059[_0x31b286];return _0x541635;};'use strict';var _=require(_0x9105('0x0'));var util=require('util');var moment=require(_0x9105('0x1'));var BPromise=require('bluebird');var rs=require(_0x9105('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9105('0x3'))['db'];var utils=require(_0x9105('0x4'));var logger=require(_0x9105('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9105('0x6'));var client=jayson[_0x9105('0x7')][_0x9105('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x154424,_0x460435,_0xbc19fd){return new BPromise(function(_0x46bf91,_0x390412){return client[_0x9105('0x9')](_0x154424,_0xbc19fd)['then'](function(_0x3e81db){logger[_0x9105('0xa')]('MailSubstatus,\x20%s,\x20%s',_0x460435,'request\x20sent');logger[_0x9105('0xb')]('MailSubstatus,\x20%s,\x20%s,\x20%s',_0x460435,'request\x20sent',JSON[_0x9105('0xc')](_0x3e81db));if(_0x3e81db['error']){if(_0x3e81db['error'][_0x9105('0xd')]===0x1f4){logger[_0x9105('0xe')]('MailSubstatus,\x20%s,\x20%s',_0x460435,_0x3e81db['error'][_0x9105('0xf')]);return _0x390412(_0x3e81db['error']['message']);}logger[_0x9105('0xe')](_0x9105('0x10'),_0x460435,_0x3e81db['error'][_0x9105('0xf')]);return _0x46bf91(_0x3e81db[_0x9105('0xe')]['message']);}else{logger[_0x9105('0xa')](_0x9105('0x10'),_0x460435,'request\x20sent');_0x46bf91(_0x3e81db['result'][_0x9105('0xf')]);}})[_0x9105('0x11')](function(_0x501338){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x460435,_0x501338);_0x390412(_0x501338);});});}
\ No newline at end of file
index 7f9c128..f71b7ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa06=['exports','multer','util','path','connect-timeout','express','Router','./mailTransferReport.controller','isAuthenticated','index','get','/describe','/:id','show','post','put','update','delete','destroy'];(function(_0x349b5c,_0x55e5fa){var _0x3efcac=function(_0x27832d){while(--_0x27832d){_0x349b5c['push'](_0x349b5c['shift']());}};_0x3efcac(++_0x55e5fa);}(_0xfa06,0xf8));var _0x6fa0=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xfa06[_0x34bf97];return _0x292719;};'use strict';var multer=require(_0x6fa0('0x0'));var util=require(_0x6fa0('0x1'));var path=require(_0x6fa0('0x2'));var timeout=require(_0x6fa0('0x3'));var express=require(_0x6fa0('0x4'));var router=express[_0x6fa0('0x5')]();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(_0x6fa0('0x6'));router['get']('/',auth[_0x6fa0('0x7')](),controller[_0x6fa0('0x8')]);router[_0x6fa0('0x9')](_0x6fa0('0xa'),auth[_0x6fa0('0x7')](),controller['describe']);router[_0x6fa0('0x9')](_0x6fa0('0xb'),auth[_0x6fa0('0x7')](),controller[_0x6fa0('0xc')]);router[_0x6fa0('0xd')]('/',auth[_0x6fa0('0x7')](),controller['create']);router[_0x6fa0('0xe')](_0x6fa0('0xb'),auth['isAuthenticated'](),controller[_0x6fa0('0xf')]);router[_0x6fa0('0x10')](_0x6fa0('0xb'),auth[_0x6fa0('0x7')](),controller[_0x6fa0('0x11')]);module[_0x6fa0('0x12')]=router;
\ No newline at end of file
+var _0x7440=['get','index','/describe','isAuthenticated','describe','/:id','post','create','update','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1bf6b7,_0x12519b){var _0x5e2768=function(_0x2fb507){while(--_0x2fb507){_0x1bf6b7['push'](_0x1bf6b7['shift']());}};_0x5e2768(++_0x12519b);}(_0x7440,0x91));var _0x0744=function(_0x3939d9,_0x2da4f5){_0x3939d9=_0x3939d9-0x0;var _0x5be6cb=_0x7440[_0x3939d9];return _0x5be6cb;};'use strict';var multer=require(_0x0744('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x0744('0x1'));var express=require(_0x0744('0x2'));var router=express[_0x0744('0x3')]();var fs_extra=require(_0x0744('0x4'));var auth=require(_0x0744('0x5'));var interaction=require(_0x0744('0x6'));var config=require(_0x0744('0x7'));var controller=require('./mailTransferReport.controller');router[_0x0744('0x8')]('/',auth['isAuthenticated'](),controller[_0x0744('0x9')]);router[_0x0744('0x8')](_0x0744('0xa'),auth[_0x0744('0xb')](),controller[_0x0744('0xc')]);router[_0x0744('0x8')](_0x0744('0xd'),auth[_0x0744('0xb')](),controller['show']);router[_0x0744('0xe')]('/',auth[_0x0744('0xb')](),controller[_0x0744('0xf')]);router['put']('/:id',auth[_0x0744('0xb')](),controller[_0x0744('0x10')]);router['delete'](_0x0744('0xd'),auth[_0x0744('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7af4359..ff76ed5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x50d099,_0x1ac8d9){var _0x7d701c=function(_0x27d227){while(--_0x27d227){_0x50d099['push'](_0x50d099['shift']());}};_0x7d701c(++_0x1ac8d9);}(_0xedd9,0xfc));var _0x9edd=function(_0xb55612,_0x576eb2){_0xb55612=_0xb55612-0x0;var _0x391939=_0xedd9[_0xb55612];return _0x391939;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x21f089,_0x5ebacd){var _0x59c5e7=function(_0x2af336){while(--_0x2af336){_0x21f089['push'](_0x21f089['shift']());}};_0x59c5e7(++_0x5ebacd);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 15d4994..5821246 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e4d=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','count','set','update','then','destroy','error','stack','name','send','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','length','create','body','catch','find','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x4e26b8,_0x1a3c12){var _0x10a6f0=function(_0x119948){while(--_0x119948){_0x4e26b8['push'](_0x4e26b8['shift']());}};_0x10a6f0(++_0x1a3c12);}(_0x9e4d,0x7a));var _0xd9e4=function(_0x3d9e7c,_0x97ca34){_0x3d9e7c=_0x3d9e7c-0x0;var _0x2fe9c6=_0x9e4d[_0x3d9e7c];return _0x2fe9c6;};'use strict';var emlformat=require(_0xd9e4('0x0'));var rimraf=require(_0xd9e4('0x1'));var zipdir=require(_0xd9e4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd9e4('0x3'));var BPromise=require(_0xd9e4('0x4'));var Mustache=require(_0xd9e4('0x5'));var util=require(_0xd9e4('0x6'));var path=require('path');var sox=require(_0xd9e4('0x7'));var csv=require(_0xd9e4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd9e4('0x9'));var _=require('lodash');var squel=require(_0xd9e4('0xa'));var crypto=require(_0xd9e4('0xb'));var jsforce=require(_0xd9e4('0xc'));var deskjs=require(_0xd9e4('0xd'));var toCsv=require(_0xd9e4('0x8'));var querystring=require(_0xd9e4('0xe'));var Papa=require(_0xd9e4('0xf'));var Redis=require(_0xd9e4('0x10'));var authService=require(_0xd9e4('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd9e4('0x12'));var hardwareService=require(_0xd9e4('0x13'));var logger=require('../../config/logger')(_0xd9e4('0x14'));var utils=require(_0xd9e4('0x15'));var config=require(_0xd9e4('0x16'));var licenseUtil=require(_0xd9e4('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48f5c0,_0x4ed076){_0x4ed076=_0x4ed076||0xcc;return function(_0x4c817c){if(_0x4c817c){return _0x48f5c0[_0xd9e4('0x18')](_0x4ed076);}return _0x48f5c0[_0xd9e4('0x19')](_0x4ed076)['end']();};}function respondWithResult(_0x3bc5e8,_0x2d1063){_0x2d1063=_0x2d1063||0xc8;return function(_0x2fdb82){if(_0x2fdb82){return _0x3bc5e8[_0xd9e4('0x19')](_0x2d1063)[_0xd9e4('0x1a')](_0x2fdb82);}};}function respondWithFilteredResult(_0x4c8c11,_0x51bfdb){return function(_0x198fc3){if(_0x198fc3){var _0x53ada5=typeof _0x51bfdb[_0xd9e4('0x1b')]==='undefined'&&typeof _0x51bfdb[_0xd9e4('0x1c')]==='undefined';var _0x2a6746=_0x198fc3[_0xd9e4('0x1d')];var _0x1cb220=_0x53ada5?0x0:_0x51bfdb['offset'];var _0x10f47d=_0x53ada5?_0x198fc3['count']:_0x51bfdb[_0xd9e4('0x1b')]+_0x51bfdb[_0xd9e4('0x1c')];var _0x5ce3db;if(_0x10f47d>=_0x2a6746){_0x10f47d=_0x2a6746;_0x5ce3db=0xc8;}else{_0x5ce3db=0xce;}_0x4c8c11[_0xd9e4('0x19')](_0x5ce3db);return _0x4c8c11[_0xd9e4('0x1e')]('Content-Range',_0x1cb220+'-'+_0x10f47d+'/'+_0x2a6746)[_0xd9e4('0x1a')](_0x198fc3);}return null;};}function patchUpdates(_0x7ef51){return function(_0x4a0aa1){try{jsonpatch['apply'](_0x4a0aa1,_0x7ef51,!![]);}catch(_0x17c2e3){return BPromise['reject'](_0x17c2e3);}return _0x4a0aa1['save']();};}function saveUpdates(_0x251e95,_0x1cdfc8){return function(_0x17eb7a){if(_0x17eb7a){return _0x17eb7a[_0xd9e4('0x1f')](_0x251e95)[_0xd9e4('0x20')](function(_0x4b0b1d){return _0x4b0b1d;});}return null;};}function removeEntity(_0x18e14c,_0x9b8e22){return function(_0x382285){if(_0x382285){return _0x382285[_0xd9e4('0x21')]()['then'](function(){_0x18e14c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xe3566,_0x171c3e){return function(_0x1d9e4b){if(!_0x1d9e4b){_0xe3566[_0xd9e4('0x18')](0x194);}return _0x1d9e4b;};}function handleError(_0x512e18,_0x37c466){_0x37c466=_0x37c466||0x1f4;return function(_0x1cc811){logger[_0xd9e4('0x22')](_0x1cc811[_0xd9e4('0x23')]);if(_0x1cc811[_0xd9e4('0x24')]){delete _0x1cc811[_0xd9e4('0x24')];}_0x512e18[_0xd9e4('0x19')](_0x37c466)[_0xd9e4('0x25')](_0x1cc811);};}exports['index']=function(_0x7627f7,_0x3d457d){var _0x17e118={},_0x372782={},_0x70e213={'count':0x0,'rows':[]};var _0xd24637=_[_0xd9e4('0x26')](db[_0xd9e4('0x27')][_0xd9e4('0x28')],function(_0x38373f){return{'name':_0x38373f[_0xd9e4('0x29')],'type':_0x38373f[_0xd9e4('0x2a')][_0xd9e4('0x2b')]};});_0x372782[_0xd9e4('0x2c')]=_[_0xd9e4('0x26')](_0xd24637,_0xd9e4('0x24'));_0x372782[_0xd9e4('0x2d')]=_[_0xd9e4('0x2e')](_0x7627f7[_0xd9e4('0x2d')]);_0x372782['filters']=_[_0xd9e4('0x2f')](_0x372782[_0xd9e4('0x2c')],_0x372782[_0xd9e4('0x2d')]);_0x17e118[_0xd9e4('0x30')]=_[_0xd9e4('0x2f')](_0x372782[_0xd9e4('0x2c')],qs[_0xd9e4('0x31')](_0x7627f7[_0xd9e4('0x2d')][_0xd9e4('0x31')]));_0x17e118[_0xd9e4('0x30')]=_0x17e118[_0xd9e4('0x30')]['length']?_0x17e118['attributes']:_0x372782['model'];if(!_0x7627f7[_0xd9e4('0x2d')][_0xd9e4('0x32')](_0xd9e4('0x33'))){_0x17e118[_0xd9e4('0x1c')]=qs[_0xd9e4('0x1c')](_0x7627f7[_0xd9e4('0x2d')]['limit']);_0x17e118['offset']=qs[_0xd9e4('0x1b')](_0x7627f7[_0xd9e4('0x2d')][_0xd9e4('0x1b')]);}_0x17e118['order']=qs[_0xd9e4('0x34')](_0x7627f7[_0xd9e4('0x2d')][_0xd9e4('0x34')]);_0x17e118[_0xd9e4('0x35')]=qs[_0xd9e4('0x36')](_['pick'](_0x7627f7['query'],_0x372782[_0xd9e4('0x36')]),_0xd24637);if(_0x7627f7['query'][_0xd9e4('0x37')]){_0x17e118['where']=_[_0xd9e4('0x38')](_0x17e118['where'],{'$or':_[_0xd9e4('0x26')](_0xd24637,function(_0x1f3e34){if(_0x1f3e34[_0xd9e4('0x2a')]!==_0xd9e4('0x39')){var _0x3a0972={};_0x3a0972[_0x1f3e34[_0xd9e4('0x24')]]={'$like':'%'+_0x7627f7['query']['filter']+'%'};return _0x3a0972;}})});}_0x17e118=_[_0xd9e4('0x38')]({},_0x17e118,_0x7627f7[_0xd9e4('0x3a')]);var _0x4385b5={'where':_0x17e118[_0xd9e4('0x35')]};return db[_0xd9e4('0x27')][_0xd9e4('0x1d')](_0x4385b5)[_0xd9e4('0x20')](function(_0x2745b1){_0x70e213['count']=_0x2745b1;if(_0x7627f7[_0xd9e4('0x2d')][_0xd9e4('0x3b')]){_0x17e118[_0xd9e4('0x3c')]=[{'all':!![]}];}return db[_0xd9e4('0x27')][_0xd9e4('0x3d')](_0x17e118);})[_0xd9e4('0x20')](function(_0x1474bb){_0x70e213['rows']=_0x1474bb;return _0x70e213;})[_0xd9e4('0x20')](respondWithFilteredResult(_0x3d457d,_0x17e118))['catch'](handleError(_0x3d457d,null));};exports[_0xd9e4('0x3e')]=function(_0x3961a9,_0x1d7613){var _0x1cc7ce={'raw':!![],'where':{'id':_0x3961a9[_0xd9e4('0x3f')]['id']}},_0x3865f1={};_0x3865f1['model']=_[_0xd9e4('0x2e')](db[_0xd9e4('0x27')][_0xd9e4('0x28')]);_0x3865f1[_0xd9e4('0x2d')]=_[_0xd9e4('0x2e')](_0x3961a9[_0xd9e4('0x2d')]);_0x3865f1[_0xd9e4('0x36')]=_[_0xd9e4('0x2f')](_0x3865f1[_0xd9e4('0x2c')],_0x3865f1[_0xd9e4('0x2d')]);_0x1cc7ce['attributes']=_[_0xd9e4('0x2f')](_0x3865f1[_0xd9e4('0x2c')],qs['fields'](_0x3961a9[_0xd9e4('0x2d')][_0xd9e4('0x31')]));_0x1cc7ce['attributes']=_0x1cc7ce[_0xd9e4('0x30')][_0xd9e4('0x40')]?_0x1cc7ce['attributes']:_0x3865f1['model'];if(_0x3961a9[_0xd9e4('0x2d')][_0xd9e4('0x3b')]){_0x1cc7ce[_0xd9e4('0x3c')]=[{'all':!![]}];}_0x1cc7ce=_[_0xd9e4('0x38')]({},_0x1cc7ce,_0x3961a9['options']);return db['MailTransferReport']['find'](_0x1cc7ce)['then'](handleEntityNotFound(_0x1d7613,null))['then'](respondWithResult(_0x1d7613,null))['catch'](handleError(_0x1d7613,null));};exports[_0xd9e4('0x41')]=function(_0x4a843c,_0x168ade){return db[_0xd9e4('0x27')][_0xd9e4('0x41')](_0x4a843c[_0xd9e4('0x42')],{})['then'](respondWithResult(_0x168ade,0xc9))[_0xd9e4('0x43')](handleError(_0x168ade,null));};exports[_0xd9e4('0x1f')]=function(_0x3becb7,_0x2b936e){if(_0x3becb7[_0xd9e4('0x42')]['id']){delete _0x3becb7[_0xd9e4('0x42')]['id'];}return db[_0xd9e4('0x27')][_0xd9e4('0x44')]({'where':{'id':_0x3becb7[_0xd9e4('0x3f')]['id']}})[_0xd9e4('0x20')](handleEntityNotFound(_0x2b936e,null))['then'](saveUpdates(_0x3becb7['body'],null))[_0xd9e4('0x20')](respondWithResult(_0x2b936e,null))['catch'](handleError(_0x2b936e,null));};exports[_0xd9e4('0x21')]=function(_0x6162fd,_0x3418d8){return db[_0xd9e4('0x27')][_0xd9e4('0x44')]({'where':{'id':_0x6162fd['params']['id']}})[_0xd9e4('0x20')](handleEntityNotFound(_0x3418d8,null))[_0xd9e4('0x20')](removeEntity(_0x3418d8,null))[_0xd9e4('0x43')](handleError(_0x3418d8,null));};exports['describe']=function(_0x177261,_0x9329a0){return db[_0xd9e4('0x27')][_0xd9e4('0x45')]()[_0xd9e4('0x20')](respondWithResult(_0x9329a0,null))[_0xd9e4('0x43')](handleError(_0x9329a0,null));};
\ No newline at end of file
+var _0x8678=['ejs','lodash','crypto','jsforce','desk.js','to-csv','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','undefined','limit','offset','count','set','apply','reject','update','then','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','where','merge','VIRTUAL','filter','options','include','findAll','rows','params','includeAll','catch','create','body','find','destroy','describe','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox'];(function(_0x298d34,_0x160b1b){var _0x451392=function(_0x2df217){while(--_0x2df217){_0x298d34['push'](_0x298d34['shift']());}};_0x451392(++_0x160b1b);}(_0x8678,0xdf));var _0x8867=function(_0x37e2a5,_0x3964ec){_0x37e2a5=_0x37e2a5-0x0;var _0x3f2bba=_0x8678[_0x37e2a5];return _0x3f2bba;};'use strict';var emlformat=require(_0x8867('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8867('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8867('0x2'));var BPromise=require(_0x8867('0x3'));var Mustache=require(_0x8867('0x4'));var util=require(_0x8867('0x5'));var path=require(_0x8867('0x6'));var sox=require(_0x8867('0x7'));var csv=require('to-csv');var ejs=require(_0x8867('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8867('0x9'));var squel=require('squel');var crypto=require(_0x8867('0xa'));var jsforce=require(_0x8867('0xb'));var deskjs=require(_0x8867('0xc'));var toCsv=require(_0x8867('0xd'));var querystring=require(_0x8867('0xe'));var Papa=require(_0x8867('0xf'));var Redis=require(_0x8867('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x8867('0x11'));var as=require(_0x8867('0x12'));var hardwareService=require(_0x8867('0x13'));var logger=require(_0x8867('0x14'))(_0x8867('0x15'));var utils=require(_0x8867('0x16'));var config=require(_0x8867('0x17'));var licenseUtil=require(_0x8867('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b29b1,_0x46cf74){_0x46cf74=_0x46cf74||0xcc;return function(_0xf16382){if(_0xf16382){return _0x2b29b1['sendStatus'](_0x46cf74);}return _0x2b29b1['status'](_0x46cf74)[_0x8867('0x19')]();};}function respondWithResult(_0x9f36fe,_0x12647d){_0x12647d=_0x12647d||0xc8;return function(_0x159b1a){if(_0x159b1a){return _0x9f36fe[_0x8867('0x1a')](_0x12647d)[_0x8867('0x1b')](_0x159b1a);}};}function respondWithFilteredResult(_0x3c6f60,_0x3c080c){return function(_0x208a1e){if(_0x208a1e){var _0x2c2164=typeof _0x3c080c['offset']===_0x8867('0x1c')&&typeof _0x3c080c[_0x8867('0x1d')]===_0x8867('0x1c');var _0x3bd064=_0x208a1e['count'];var _0xe32f14=_0x2c2164?0x0:_0x3c080c[_0x8867('0x1e')];var _0xa205b3=_0x2c2164?_0x208a1e[_0x8867('0x1f')]:_0x3c080c[_0x8867('0x1e')]+_0x3c080c[_0x8867('0x1d')];var _0x54a3ee;if(_0xa205b3>=_0x3bd064){_0xa205b3=_0x3bd064;_0x54a3ee=0xc8;}else{_0x54a3ee=0xce;}_0x3c6f60['status'](_0x54a3ee);return _0x3c6f60[_0x8867('0x20')]('Content-Range',_0xe32f14+'-'+_0xa205b3+'/'+_0x3bd064)['json'](_0x208a1e);}return null;};}function patchUpdates(_0x2a2af7){return function(_0x413bb3){try{jsonpatch[_0x8867('0x21')](_0x413bb3,_0x2a2af7,!![]);}catch(_0x208467){return BPromise[_0x8867('0x22')](_0x208467);}return _0x413bb3['save']();};}function saveUpdates(_0x226285,_0x21e1ff){return function(_0x32567a){if(_0x32567a){return _0x32567a[_0x8867('0x23')](_0x226285)[_0x8867('0x24')](function(_0x486b85){return _0x486b85;});}return null;};}function removeEntity(_0x37a4fd,_0x2ce157){return function(_0xad45c2){if(_0xad45c2){return _0xad45c2['destroy']()[_0x8867('0x24')](function(){_0x37a4fd[_0x8867('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x548bc4,_0x40cf23){return function(_0x55a321){if(!_0x55a321){_0x548bc4[_0x8867('0x25')](0x194);}return _0x55a321;};}function handleError(_0x23b8b2,_0x565a85){_0x565a85=_0x565a85||0x1f4;return function(_0x4bc340){logger[_0x8867('0x26')](_0x4bc340[_0x8867('0x27')]);if(_0x4bc340['name']){delete _0x4bc340[_0x8867('0x28')];}_0x23b8b2[_0x8867('0x1a')](_0x565a85)[_0x8867('0x29')](_0x4bc340);};}exports[_0x8867('0x2a')]=function(_0x521353,_0x3f0e19){var _0x4230db={},_0x72093a={},_0x322afe={'count':0x0,'rows':[]};var _0x54d211=_[_0x8867('0x2b')](db[_0x8867('0x2c')][_0x8867('0x2d')],function(_0x5a46ce){return{'name':_0x5a46ce[_0x8867('0x2e')],'type':_0x5a46ce[_0x8867('0x2f')][_0x8867('0x30')]};});_0x72093a[_0x8867('0x31')]=_[_0x8867('0x2b')](_0x54d211,_0x8867('0x28'));_0x72093a[_0x8867('0x32')]=_[_0x8867('0x33')](_0x521353['query']);_0x72093a['filters']=_[_0x8867('0x34')](_0x72093a['model'],_0x72093a[_0x8867('0x32')]);_0x4230db[_0x8867('0x35')]=_[_0x8867('0x34')](_0x72093a[_0x8867('0x31')],qs[_0x8867('0x36')](_0x521353[_0x8867('0x32')][_0x8867('0x36')]));_0x4230db[_0x8867('0x35')]=_0x4230db[_0x8867('0x35')][_0x8867('0x37')]?_0x4230db['attributes']:_0x72093a[_0x8867('0x31')];if(!_0x521353['query'][_0x8867('0x38')](_0x8867('0x39'))){_0x4230db[_0x8867('0x1d')]=qs['limit'](_0x521353['query'][_0x8867('0x1d')]);_0x4230db['offset']=qs[_0x8867('0x1e')](_0x521353[_0x8867('0x32')]['offset']);}_0x4230db[_0x8867('0x3a')]=qs[_0x8867('0x3b')](_0x521353[_0x8867('0x32')][_0x8867('0x3b')]);_0x4230db['where']=qs['filters'](_['pick'](_0x521353[_0x8867('0x32')],_0x72093a[_0x8867('0x3c')]),_0x54d211);if(_0x521353['query']['filter']){_0x4230db[_0x8867('0x3d')]=_[_0x8867('0x3e')](_0x4230db[_0x8867('0x3d')],{'$or':_[_0x8867('0x2b')](_0x54d211,function(_0x499276){if(_0x499276['type']!==_0x8867('0x3f')){var _0x15efe6={};_0x15efe6[_0x499276[_0x8867('0x28')]]={'$like':'%'+_0x521353[_0x8867('0x32')][_0x8867('0x40')]+'%'};return _0x15efe6;}})});}_0x4230db=_[_0x8867('0x3e')]({},_0x4230db,_0x521353[_0x8867('0x41')]);var _0x5cc2b1={'where':_0x4230db[_0x8867('0x3d')]};return db[_0x8867('0x2c')][_0x8867('0x1f')](_0x5cc2b1)['then'](function(_0x48f2af){_0x322afe[_0x8867('0x1f')]=_0x48f2af;if(_0x521353[_0x8867('0x32')]['includeAll']){_0x4230db[_0x8867('0x42')]=[{'all':!![]}];}return db[_0x8867('0x2c')][_0x8867('0x43')](_0x4230db);})[_0x8867('0x24')](function(_0x44921b){_0x322afe[_0x8867('0x44')]=_0x44921b;return _0x322afe;})[_0x8867('0x24')](respondWithFilteredResult(_0x3f0e19,_0x4230db))['catch'](handleError(_0x3f0e19,null));};exports['show']=function(_0x2ce287,_0x24f6d6){var _0x3983cb={'raw':!![],'where':{'id':_0x2ce287[_0x8867('0x45')]['id']}},_0x35d229={};_0x35d229[_0x8867('0x31')]=_[_0x8867('0x33')](db[_0x8867('0x2c')][_0x8867('0x2d')]);_0x35d229[_0x8867('0x32')]=_[_0x8867('0x33')](_0x2ce287[_0x8867('0x32')]);_0x35d229[_0x8867('0x3c')]=_['intersection'](_0x35d229['model'],_0x35d229[_0x8867('0x32')]);_0x3983cb['attributes']=_['intersection'](_0x35d229[_0x8867('0x31')],qs[_0x8867('0x36')](_0x2ce287[_0x8867('0x32')][_0x8867('0x36')]));_0x3983cb[_0x8867('0x35')]=_0x3983cb[_0x8867('0x35')]['length']?_0x3983cb['attributes']:_0x35d229['model'];if(_0x2ce287[_0x8867('0x32')][_0x8867('0x46')]){_0x3983cb[_0x8867('0x42')]=[{'all':!![]}];}_0x3983cb=_[_0x8867('0x3e')]({},_0x3983cb,_0x2ce287[_0x8867('0x41')]);return db[_0x8867('0x2c')]['find'](_0x3983cb)[_0x8867('0x24')](handleEntityNotFound(_0x24f6d6,null))[_0x8867('0x24')](respondWithResult(_0x24f6d6,null))[_0x8867('0x47')](handleError(_0x24f6d6,null));};exports['create']=function(_0x3d107b,_0x571749){return db[_0x8867('0x2c')][_0x8867('0x48')](_0x3d107b['body'],{})[_0x8867('0x24')](respondWithResult(_0x571749,0xc9))[_0x8867('0x47')](handleError(_0x571749,null));};exports[_0x8867('0x23')]=function(_0x2f83db,_0x58dc82){if(_0x2f83db[_0x8867('0x49')]['id']){delete _0x2f83db[_0x8867('0x49')]['id'];}return db[_0x8867('0x2c')][_0x8867('0x4a')]({'where':{'id':_0x2f83db[_0x8867('0x45')]['id']}})[_0x8867('0x24')](handleEntityNotFound(_0x58dc82,null))[_0x8867('0x24')](saveUpdates(_0x2f83db[_0x8867('0x49')],null))['then'](respondWithResult(_0x58dc82,null))[_0x8867('0x47')](handleError(_0x58dc82,null));};exports[_0x8867('0x4b')]=function(_0x39f11f,_0x4b6cf4){return db[_0x8867('0x2c')][_0x8867('0x4a')]({'where':{'id':_0x39f11f['params']['id']}})[_0x8867('0x24')](handleEntityNotFound(_0x4b6cf4,null))[_0x8867('0x24')](removeEntity(_0x4b6cf4,null))['catch'](handleError(_0x4b6cf4,null));};exports[_0x8867('0x4c')]=function(_0x3f0ba4,_0x2751da){return db['MailTransferReport']['describe']()['then'](respondWithResult(_0x2751da,null))[_0x8867('0x47')](handleError(_0x2751da,null));};
\ No newline at end of file
index 8045f58..85ee0bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f1=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailTransferReport','uniqueid','lodash','util'];(function(_0x5316d4,_0x3e273a){var _0x590f57=function(_0x37718c){while(--_0x37718c){_0x5316d4['push'](_0x5316d4['shift']());}};_0x590f57(++_0x3e273a);}(_0xd9f1,0x1df));var _0x1d9f=function(_0x59ac41,_0x4011fe){_0x59ac41=_0x59ac41-0x0;var _0x1a6264=_0xd9f1[_0x59ac41];return _0x1a6264;};'use strict';var _=require(_0x1d9f('0x0'));var util=require(_0x1d9f('0x1'));var logger=require('../../config/logger')(_0x1d9f('0x2'));var moment=require(_0x1d9f('0x3'));var BPromise=require(_0x1d9f('0x4'));var rp=require(_0x1d9f('0x5'));var fs=require('fs');var path=require(_0x1d9f('0x6'));var rimraf=require(_0x1d9f('0x7'));var config=require(_0x1d9f('0x8'));var attributes=require('./mailTransferReport.attributes');module[_0x1d9f('0x9')]=function(_0x3e88d4,_0x5f0bb7){return _0x3e88d4[_0x1d9f('0xa')](_0x1d9f('0xb'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x1d9f('0xc'),'fields':[_0x1d9f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x535f=['moment','bluebird','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','uniqueid','util','../../config/logger'];(function(_0x2c4e6f,_0x1b97b2){var _0x2d6ed1=function(_0x1cf0d3){while(--_0x1cf0d3){_0x2c4e6f['push'](_0x2c4e6f['shift']());}};_0x2d6ed1(++_0x1b97b2);}(_0x535f,0x111));var _0xf535=function(_0x5ad37c,_0x48985a){_0x5ad37c=_0x5ad37c-0x0;var _0x322c6a=_0x535f[_0x5ad37c];return _0x322c6a;};'use strict';var _=require('lodash');var util=require(_0xf535('0x0'));var logger=require(_0xf535('0x1'))('api');var moment=require(_0xf535('0x2'));var BPromise=require(_0xf535('0x3'));var rp=require(_0xf535('0x4'));var fs=require('fs');var path=require(_0xf535('0x5'));var rimraf=require('rimraf');var config=require(_0xf535('0x6'));var attributes=require(_0xf535('0x7'));module[_0xf535('0x8')]=function(_0x30936d,_0x41ca74){return _0x30936d[_0xf535('0x9')]('MailTransferReport',attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0xf535('0xa'),'fields':[_0xf535('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index beb778c..5a5f58c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe03=['then','info','request\x20sent','debug','error','code','message','MailTransferReport,\x20%s,\x20%s','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request'];(function(_0x4f4d19,_0x574245){var _0x27a258=function(_0x38da3e){while(--_0x38da3e){_0x4f4d19['push'](_0x4f4d19['shift']());}};_0x27a258(++_0x574245);}(_0xfe03,0xb2));var _0x3fe0=function(_0x109b5b,_0x4a6a4f){_0x109b5b=_0x109b5b-0x0;var _0x18c24d=_0xfe03[_0x109b5b];return _0x18c24d;};'use strict';var _=require('lodash');var util=require(_0x3fe0('0x0'));var moment=require(_0x3fe0('0x1'));var BPromise=require('bluebird');var rs=require(_0x3fe0('0x2'));var fs=require('fs');var Redis=require(_0x3fe0('0x3'));var db=require(_0x3fe0('0x4'))['db'];var utils=require(_0x3fe0('0x5'));var logger=require(_0x3fe0('0x6'))('rpc');var config=require(_0x3fe0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x3fe0('0x8')][_0x3fe0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f2efd,_0x452f97,_0xf5d311){return new BPromise(function(_0x393ae0,_0x24d39c){return client[_0x3fe0('0xa')](_0x2f2efd,_0xf5d311)[_0x3fe0('0xb')](function(_0x13b485){logger[_0x3fe0('0xc')]('MailTransferReport,\x20%s,\x20%s',_0x452f97,_0x3fe0('0xd'));logger[_0x3fe0('0xe')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x452f97,_0x3fe0('0xd'),JSON['stringify'](_0x13b485));if(_0x13b485[_0x3fe0('0xf')]){if(_0x13b485['error'][_0x3fe0('0x10')]===0x1f4){logger[_0x3fe0('0xf')]('MailTransferReport,\x20%s,\x20%s',_0x452f97,_0x13b485[_0x3fe0('0xf')][_0x3fe0('0x11')]);return _0x24d39c(_0x13b485[_0x3fe0('0xf')][_0x3fe0('0x11')]);}logger[_0x3fe0('0xf')]('MailTransferReport,\x20%s,\x20%s',_0x452f97,_0x13b485['error']['message']);return _0x393ae0(_0x13b485['error'][_0x3fe0('0x11')]);}else{logger[_0x3fe0('0xc')](_0x3fe0('0x12'),_0x452f97,_0x3fe0('0xd'));_0x393ae0(_0x13b485[_0x3fe0('0x13')][_0x3fe0('0x11')]);}})[_0x3fe0('0x14')](function(_0x515c95){logger[_0x3fe0('0xf')]('MailTransferReport,\x20%s,\x20%s',_0x452f97,_0x515c95);_0x24d39c(_0x515c95);});});}
\ No newline at end of file
+var _0x55ab=['util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','then','MailTransferReport,\x20%s,\x20%s','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','lodash'];(function(_0x19cfb9,_0x43a74a){var _0x372df7=function(_0x6eed38){while(--_0x6eed38){_0x19cfb9['push'](_0x19cfb9['shift']());}};_0x372df7(++_0x43a74a);}(_0x55ab,0xb7));var _0xb55a=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x55ab[_0x110c3d];return _0x226d67;};'use strict';var _=require(_0xb55a('0x0'));var util=require(_0xb55a('0x1'));var moment=require(_0xb55a('0x2'));var BPromise=require(_0xb55a('0x3'));var rs=require(_0xb55a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb55a('0x5'));var logger=require('../../config/logger')(_0xb55a('0x6'));var config=require(_0xb55a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb55a('0x8')][_0xb55a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x495fb3,_0x1dae30,_0x5a3cef){return new BPromise(function(_0x36e205,_0x4dfadf){return client[_0xb55a('0xa')](_0x495fb3,_0x5a3cef)[_0xb55a('0xb')](function(_0x3a699f){logger['info'](_0xb55a('0xc'),_0x1dae30,'request\x20sent');logger[_0xb55a('0xd')](_0xb55a('0xe'),_0x1dae30,_0xb55a('0xf'),JSON[_0xb55a('0x10')](_0x3a699f));if(_0x3a699f[_0xb55a('0x11')]){if(_0x3a699f[_0xb55a('0x11')][_0xb55a('0x12')]===0x1f4){logger[_0xb55a('0x11')]('MailTransferReport,\x20%s,\x20%s',_0x1dae30,_0x3a699f['error'][_0xb55a('0x13')]);return _0x4dfadf(_0x3a699f['error'][_0xb55a('0x13')]);}logger['error'](_0xb55a('0xc'),_0x1dae30,_0x3a699f[_0xb55a('0x11')][_0xb55a('0x13')]);return _0x36e205(_0x3a699f[_0xb55a('0x11')][_0xb55a('0x13')]);}else{logger[_0xb55a('0x14')](_0xb55a('0xc'),_0x1dae30,_0xb55a('0xf'));_0x36e205(_0x3a699f[_0xb55a('0x15')][_0xb55a('0x13')]);}})[_0xb55a('0x16')](function(_0xcbb3ab){logger[_0xb55a('0x11')](_0xb55a('0xc'),_0x1dae30,_0xcbb3ab);_0x4dfadf(_0xcbb3ab);});});}
\ No newline at end of file
index b630fd2..fdde9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f92=['./memberReport.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x2f51b1,_0x370ac2){var _0x83fa03=function(_0x2b29f0){while(--_0x2b29f0){_0x2f51b1['push'](_0x2f51b1['shift']());}};_0x83fa03(++_0x370ac2);}(_0x8f92,0x1b0));var _0x28f9=function(_0x17aa1c,_0xebf9ce){_0x17aa1c=_0x17aa1c-0x0;var _0x5c096b=_0x8f92[_0x17aa1c];return _0x5c096b;};'use strict';var multer=require(_0x28f9('0x0'));var util=require(_0x28f9('0x1'));var path=require(_0x28f9('0x2'));var timeout=require(_0x28f9('0x3'));var express=require(_0x28f9('0x4'));var router=express[_0x28f9('0x5')]();var fs_extra=require(_0x28f9('0x6'));var auth=require(_0x28f9('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x28f9('0x8'));var controller=require(_0x28f9('0x9'));router[_0x28f9('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x28f9('0xb'),auth[_0x28f9('0xc')](),controller[_0x28f9('0xd')]);router[_0x28f9('0xa')](_0x28f9('0xe'),auth[_0x28f9('0xc')](),controller[_0x28f9('0xf')]);router[_0x28f9('0x10')]('/',auth['isAuthenticated'](),controller[_0x28f9('0x11')]);router[_0x28f9('0x12')](_0x28f9('0xe'),auth['isAuthenticated'](),controller[_0x28f9('0x13')]);router[_0x28f9('0x14')](_0x28f9('0xe'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x704a=['exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','/describe','/:id','show','post','put','delete','destroy'];(function(_0xd1c39b,_0x16f0c6){var _0x58f5bc=function(_0x412cf3){while(--_0x412cf3){_0xd1c39b['push'](_0xd1c39b['shift']());}};_0x58f5bc(++_0x16f0c6);}(_0x704a,0x86));var _0xa704=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x704a[_0x209941];return _0x1e8729;};'use strict';var multer=require(_0xa704('0x0'));var util=require('util');var path=require(_0xa704('0x1'));var timeout=require(_0xa704('0x2'));var express=require('express');var router=express[_0xa704('0x3')]();var fs_extra=require(_0xa704('0x4'));var auth=require(_0xa704('0x5'));var interaction=require(_0xa704('0x6'));var config=require(_0xa704('0x7'));var controller=require(_0xa704('0x8'));router[_0xa704('0x9')]('/',auth[_0xa704('0xa')](),controller['index']);router[_0xa704('0x9')](_0xa704('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0xa704('0x9')](_0xa704('0xc'),auth[_0xa704('0xa')](),controller[_0xa704('0xd')]);router[_0xa704('0xe')]('/',auth[_0xa704('0xa')](),controller['create']);router[_0xa704('0xf')](_0xa704('0xc'),auth[_0xa704('0xa')](),controller['update']);router[_0xa704('0x10')]('/:id',auth['isAuthenticated'](),controller[_0xa704('0x11')]);module[_0xa704('0x12')]=router;
\ No newline at end of file
index cc12e61..dbf0c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa12=['talk:[dial\x20string]','talk:[queue]','sequelize','moment','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','diff','seconds','exitAt','setDataValue','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]'];(function(_0x47e7e5,_0x1df164){var _0x3d9c35=function(_0x5d3096){while(--_0x5d3096){_0x47e7e5['push'](_0x47e7e5['shift']());}};_0x3d9c35(++_0x1df164);}(_0xfa12,0x1b2));var _0x2fa1=function(_0x16b156,_0x50304a){_0x16b156=_0x16b156-0x0;var _0x4e65ef=_0xfa12[_0x16b156];return _0x4e65ef;};'use strict';var Sequelize=require(_0x2fa1('0x0'));var moment=require(_0x2fa1('0x1'));module['exports']={'channel':{'type':Sequelize[_0x2fa1('0x2')]},'membername':{'type':Sequelize[_0x2fa1('0x2')]},'interface':{'type':Sequelize[_0x2fa1('0x2')]},'type':{'type':Sequelize[_0x2fa1('0x2')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0x2fa1('0x3')},'duration':{'type':Sequelize[_0x2fa1('0x4')]},'enterAt':{'type':Sequelize[_0x2fa1('0x5')]},'exitAt':{'type':Sequelize[_0x2fa1('0x5')],'set':function(_0x4d61b0){var _0x166949=moment(_0x4d61b0);var _0x25b233=moment(this['getDataValue'](_0x2fa1('0x6')));var _0x30a897=_0x166949[_0x2fa1('0x7')](_0x25b233,_0x2fa1('0x8'));this['setDataValue'](_0x2fa1('0x9'),_0x4d61b0);this[_0x2fa1('0xa')]('duration',_0x30a897||null);}},'data1':{'type':Sequelize[_0x2fa1('0x2')],'comment':_0x2fa1('0xb')},'data2':{'type':Sequelize[_0x2fa1('0x2')],'comment':_0x2fa1('0xc')},'data3':{'type':Sequelize[_0x2fa1('0x2')],'comment':_0x2fa1('0xd')},'data4':{'type':Sequelize[_0x2fa1('0x2')],'comment':_0x2fa1('0xe')},'data5':{'type':Sequelize['STRING'],'comment':_0x2fa1('0xf')},'role':{'type':Sequelize[_0x2fa1('0x2')]},'internal':{'type':Sequelize[_0x2fa1('0x4')]},'uniqueid':{'type':Sequelize[_0x2fa1('0x2')]}};
\ No newline at end of file
+var _0x7914=['seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','sequelize','moment','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','enterAt','diff'];(function(_0x264bea,_0x3080ab){var _0x5fa694=function(_0x1ee3ff){while(--_0x1ee3ff){_0x264bea['push'](_0x264bea['shift']());}};_0x5fa694(++_0x3080ab);}(_0x7914,0x107));var _0x4791=function(_0x56d34e,_0x1bf74f){_0x56d34e=_0x56d34e-0x0;var _0x379864=_0x7914[_0x56d34e];return _0x379864;};'use strict';var Sequelize=require(_0x4791('0x0'));var moment=require(_0x4791('0x1'));module['exports']={'channel':{'type':Sequelize[_0x4791('0x2')]},'membername':{'type':Sequelize[_0x4791('0x2')]},'interface':{'type':Sequelize[_0x4791('0x2')]},'type':{'type':Sequelize[_0x4791('0x2')],'defaultValue':_0x4791('0x3'),'comment':_0x4791('0x4')},'duration':{'type':Sequelize[_0x4791('0x5')]},'enterAt':{'type':Sequelize[_0x4791('0x6')]},'exitAt':{'type':Sequelize[_0x4791('0x6')],'set':function(_0x3ec3ea){var _0x498f55=moment(_0x3ec3ea);var _0x306863=moment(this['getDataValue'](_0x4791('0x7')));var _0x22163f=_0x498f55[_0x4791('0x8')](_0x306863,_0x4791('0x9'));this[_0x4791('0xa')](_0x4791('0xb'),_0x3ec3ea);this[_0x4791('0xa')](_0x4791('0xc'),_0x22163f||null);}},'data1':{'type':Sequelize['STRING'],'comment':_0x4791('0xd')},'data2':{'type':Sequelize[_0x4791('0x2')],'comment':_0x4791('0xe')},'data3':{'type':Sequelize[_0x4791('0x2')],'comment':_0x4791('0xf')},'data4':{'type':Sequelize[_0x4791('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0x4791('0x2')],'comment':_0x4791('0x10')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x4791('0x5')]},'uniqueid':{'type':Sequelize[_0x4791('0x2')]}};
\ No newline at end of file
index 5be479c..7fef74c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0xedd9,0xfc));var _0x9edd=function(_0xb4b75e,_0x51dc22){_0xb4b75e=_0xb4b75e-0x0;var _0x5a17c7=_0xedd9[_0xb4b75e];return _0x5a17c7;};'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
+var _0x9957=['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','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','MemberReport','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x202b05,_0x5a246c){var _0x22a0a7=function(_0x5157f2){while(--_0x5157f2){_0x202b05['push'](_0x202b05['shift']());}};_0x22a0a7(++_0x5a246c);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['MemberReport']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['MemberReport'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['MemberReport'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x4ffc8a['params']['id']}})['then'](handleEntityNotFound(_0x19da63,null))['then'](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x4c')]=function(_0x4cf5db,_0x1cd85){return db[_0x7995('0x40')][_0x7995('0x4c')]()[_0x7995('0x26')](respondWithResult(_0x1cd85,null))[_0x7995('0x49')](handleError(_0x1cd85,null));};
\ No newline at end of file
index 8a230b0..f1b2062 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2eb=['bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','report_member','membername','interface','lodash','util','api','moment'];(function(_0x1b6839,_0x46980d){var _0x434365=function(_0x5945e4){while(--_0x5945e4){_0x1b6839['push'](_0x1b6839['shift']());}};_0x434365(++_0x46980d);}(_0xe2eb,0xac));var _0xbe2e=function(_0x2c532,_0x6e2168){_0x2c532=_0x2c532-0x0;var _0x163c0f=_0xe2eb[_0x2c532];return _0x163c0f;};'use strict';var _=require(_0xbe2e('0x0'));var util=require(_0xbe2e('0x1'));var logger=require('../../config/logger')(_0xbe2e('0x2'));var moment=require(_0xbe2e('0x3'));var BPromise=require(_0xbe2e('0x4'));var rp=require(_0xbe2e('0x5'));var fs=require('fs');var path=require(_0xbe2e('0x6'));var rimraf=require(_0xbe2e('0x7'));var config=require(_0xbe2e('0x8'));var attributes=require(_0xbe2e('0x9'));module[_0xbe2e('0xa')]=function(_0x4f479c,_0x50a531){return _0x4f479c[_0xbe2e('0xb')](_0xbe2e('0xc'),attributes,{'tableName':_0xbe2e('0xd'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0xbe2e('0xe'),_0xbe2e('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe25=['../../config/environment','./memberReport.attributes','exports','define','membername_interface','membername','interface','lodash','util','../../config/logger','api','moment'];(function(_0x146dd7,_0x4d877d){var _0x2af0bb=function(_0x2327bc){while(--_0x2327bc){_0x146dd7['push'](_0x146dd7['shift']());}};_0x2af0bb(++_0x4d877d);}(_0xbe25,0x1ab));var _0x5be2=function(_0x1cc8fe,_0x105328){_0x1cc8fe=_0x1cc8fe-0x0;var _0x230054=_0xbe25[_0x1cc8fe];return _0x230054;};'use strict';var _=require(_0x5be2('0x0'));var util=require(_0x5be2('0x1'));var logger=require(_0x5be2('0x2'))(_0x5be2('0x3'));var moment=require(_0x5be2('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(_0x5be2('0x5'));var attributes=require(_0x5be2('0x6'));module[_0x5be2('0x7')]=function(_0x127e09,_0x27458f){return _0x127e09[_0x5be2('0x8')]('MemberReport',attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':_0x5be2('0x9'),'fields':[_0x5be2('0xa'),_0x5be2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index a2b7f26..d7699e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x448a=['options','raw','where','attributes','limit','include','map','model','catch','CreateMemberReport','create','body','UpdateMemberReport','update','util','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','GetMemberReport','MemberReport','findAll'];(function(_0xcf5536,_0x4518f0){var _0x3dc63e=function(_0x45e2ae){while(--_0x45e2ae){_0xcf5536['push'](_0xcf5536['shift']());}};_0x3dc63e(++_0x4518f0);}(_0x448a,0x1ef));var _0xa448=function(_0xe67ad3,_0x57cfd6){_0xe67ad3=_0xe67ad3-0x0;var _0x519baa=_0x448a[_0xe67ad3];return _0x519baa;};'use strict';var _=require('lodash');var util=require(_0xa448('0x0'));var moment=require(_0xa448('0x1'));var BPromise=require('bluebird');var rs=require(_0xa448('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa448('0x3'));var logger=require(_0xa448('0x4'))('rpc');var config=require(_0xa448('0x5'));var jayson=require(_0xa448('0x6'));var client=jayson[_0xa448('0x7')][_0xa448('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x12b0e2,_0x1f4749,_0x1ec2d8){return new BPromise(function(_0x54bdb0,_0x5df2c1){return client[_0xa448('0x9')](_0x12b0e2,_0x1ec2d8)[_0xa448('0xa')](function(_0x40006c){logger[_0xa448('0xb')](_0xa448('0xc'),_0x1f4749,_0xa448('0xd'));logger[_0xa448('0xe')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x1f4749,'request\x20sent',JSON[_0xa448('0xf')](_0x40006c));if(_0x40006c[_0xa448('0x10')]){if(_0x40006c['error'][_0xa448('0x11')]===0x1f4){logger[_0xa448('0x10')](_0xa448('0xc'),_0x1f4749,_0x40006c[_0xa448('0x10')][_0xa448('0x12')]);return _0x5df2c1(_0x40006c[_0xa448('0x10')][_0xa448('0x12')]);}logger[_0xa448('0x10')](_0xa448('0xc'),_0x1f4749,_0x40006c['error']['message']);return _0x54bdb0(_0x40006c[_0xa448('0x10')][_0xa448('0x12')]);}else{logger[_0xa448('0xb')](_0xa448('0xc'),_0x1f4749,_0xa448('0xd'));_0x54bdb0(_0x40006c[_0xa448('0x13')]['message']);}})['catch'](function(_0x5b8899){logger['error'](_0xa448('0xc'),_0x1f4749,_0x5b8899);_0x5df2c1(_0x5b8899);});});}exports[_0xa448('0x14')]=function(_0x5d76c2){var _0x2546e2=this;return new Promise(function(_0x3a5f44,_0x2d8d97){return db[_0xa448('0x15')][_0xa448('0x16')]({'raw':_0x5d76c2['options']?_0x5d76c2[_0xa448('0x17')][_0xa448('0x18')]===undefined?!![]:![]:!![],'where':_0x5d76c2[_0xa448('0x17')]?_0x5d76c2[_0xa448('0x17')][_0xa448('0x19')]||null:null,'attributes':_0x5d76c2['options']?_0x5d76c2[_0xa448('0x17')][_0xa448('0x1a')]||null:null,'limit':_0x5d76c2[_0xa448('0x17')]?_0x5d76c2[_0xa448('0x17')][_0xa448('0x1b')]||null:null,'include':_0x5d76c2[_0xa448('0x17')]?_0x5d76c2[_0xa448('0x17')][_0xa448('0x1c')]?_[_0xa448('0x1d')](_0x5d76c2[_0xa448('0x17')][_0xa448('0x1c')],function(_0x4aee1e){return{'model':db[_0x4aee1e[_0xa448('0x1e')]],'as':_0x4aee1e['as'],'attributes':_0x4aee1e[_0xa448('0x1a')],'include':_0x4aee1e[_0xa448('0x1c')]?_[_0xa448('0x1d')](_0x4aee1e['include'],function(_0x2ccc29){return{'model':db[_0x2ccc29[_0xa448('0x1e')]],'as':_0x2ccc29['as'],'attributes':_0x2ccc29[_0xa448('0x1a')],'include':_0x2ccc29[_0xa448('0x1c')]?_['map'](_0x2ccc29[_0xa448('0x1c')],function(_0x4daa90){return{'model':db[_0x4daa90[_0xa448('0x1e')]],'as':_0x4daa90['as'],'attributes':_0x4daa90[_0xa448('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa448('0xa')](function(_0x1f045c){logger[_0xa448('0xb')]('GetMemberReport',_0x5d76c2);logger[_0xa448('0xe')](_0xa448('0x14'),_0x5d76c2,JSON[_0xa448('0xf')](_0x1f045c));_0x3a5f44(_0x1f045c);})[_0xa448('0x1f')](function(_0x3b4f23){logger[_0xa448('0x10')](_0xa448('0x14'),_0x3b4f23[_0xa448('0x12')],_0x5d76c2);_0x2d8d97(_0x2546e2[_0xa448('0x10')](0x1f4,_0x3b4f23[_0xa448('0x12')]));});});};exports[_0xa448('0x20')]=function(_0x2c84c4){var _0xe0461c=this;return new Promise(function(_0x7a2715,_0x597a99){return db[_0xa448('0x15')][_0xa448('0x21')](_0x2c84c4[_0xa448('0x22')],{'raw':_0x2c84c4[_0xa448('0x17')]?_0x2c84c4[_0xa448('0x17')][_0xa448('0x18')]===undefined?!![]:![]:!![]})[_0xa448('0xa')](function(_0x4e164b){logger[_0xa448('0xb')]('CreateMemberReport',_0x2c84c4);logger['debug'](_0xa448('0x20'),_0x2c84c4,JSON[_0xa448('0xf')](_0x4e164b));_0x7a2715(_0x4e164b);})[_0xa448('0x1f')](function(_0x39ba7a){logger[_0xa448('0x10')]('CreateMemberReport',_0x39ba7a['message'],_0x2c84c4);_0x597a99(_0xe0461c[_0xa448('0x10')](0x1f4,_0x39ba7a[_0xa448('0x12')]));});});};exports[_0xa448('0x23')]=function(_0x4bb81c){var _0x2c7ed2=this;return new Promise(function(_0x387faf,_0x5db478){return db[_0xa448('0x15')][_0xa448('0x24')](_0x4bb81c[_0xa448('0x22')],{'raw':_0x4bb81c[_0xa448('0x17')]?_0x4bb81c[_0xa448('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bb81c[_0xa448('0x17')]?_0x4bb81c[_0xa448('0x17')][_0xa448('0x19')]||null:null,'attributes':_0x4bb81c[_0xa448('0x17')]?_0x4bb81c['options'][_0xa448('0x1a')]||null:null,'limit':_0x4bb81c[_0xa448('0x17')]?_0x4bb81c[_0xa448('0x17')][_0xa448('0x1b')]||null:null})[_0xa448('0xa')](function(_0x4c45a5){logger[_0xa448('0xb')](_0xa448('0x23'),_0x4bb81c);logger[_0xa448('0xe')](_0xa448('0x23'),_0x4bb81c,JSON[_0xa448('0xf')](_0x4c45a5));_0x387faf(_0x4c45a5);})[_0xa448('0x1f')](function(_0x17616a){logger['error'](_0xa448('0x23'),_0x17616a['message'],_0x4bb81c);_0x5db478(_0x2c7ed2['error'](0x1f4,_0x17616a[_0xa448('0x12')]));});});};
\ No newline at end of file
+var _0x737d=['request\x20sent','debug','stringify','error','MemberReport,\x20%s,\x20%s','message','catch','GetMemberReport','findAll','options','where','attributes','limit','map','include','model','then','CreateMemberReport','MemberReport','body','raw','UpdateMemberReport','update','lodash','util','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x36d1f6,_0x522a10){var _0x138210=function(_0x27f93b){while(--_0x27f93b){_0x36d1f6['push'](_0x36d1f6['shift']());}};_0x138210(++_0x522a10);}(_0x737d,0xbc));var _0xd737=function(_0x4736a5,_0x2e5e72){_0x4736a5=_0x4736a5-0x0;var _0x32258=_0x737d[_0x4736a5];return _0x32258;};'use strict';var _=require(_0xd737('0x0'));var util=require(_0xd737('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd737('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xd737('0x3'))('rpc');var config=require(_0xd737('0x4'));var jayson=require(_0xd737('0x5'));var client=jayson[_0xd737('0x6')][_0xd737('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46f559,_0x3ee641,_0x3a78be){return new BPromise(function(_0xb077fb,_0x1034aa){return client[_0xd737('0x8')](_0x46f559,_0x3a78be)['then'](function(_0x2aa91f){logger[_0xd737('0x9')]('MemberReport,\x20%s,\x20%s',_0x3ee641,_0xd737('0xa'));logger[_0xd737('0xb')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x3ee641,_0xd737('0xa'),JSON[_0xd737('0xc')](_0x2aa91f));if(_0x2aa91f['error']){if(_0x2aa91f[_0xd737('0xd')]['code']===0x1f4){logger[_0xd737('0xd')](_0xd737('0xe'),_0x3ee641,_0x2aa91f['error']['message']);return _0x1034aa(_0x2aa91f[_0xd737('0xd')][_0xd737('0xf')]);}logger['error'](_0xd737('0xe'),_0x3ee641,_0x2aa91f[_0xd737('0xd')][_0xd737('0xf')]);return _0xb077fb(_0x2aa91f[_0xd737('0xd')][_0xd737('0xf')]);}else{logger[_0xd737('0x9')](_0xd737('0xe'),_0x3ee641,_0xd737('0xa'));_0xb077fb(_0x2aa91f['result']['message']);}})[_0xd737('0x10')](function(_0x28238c){logger[_0xd737('0xd')](_0xd737('0xe'),_0x3ee641,_0x28238c);_0x1034aa(_0x28238c);});});}exports[_0xd737('0x11')]=function(_0x39401d){var _0x130579=this;return new Promise(function(_0x1f6fa1,_0x508e0b){return db['MemberReport'][_0xd737('0x12')]({'raw':_0x39401d['options']?_0x39401d['options']['raw']===undefined?!![]:![]:!![],'where':_0x39401d['options']?_0x39401d[_0xd737('0x13')][_0xd737('0x14')]||null:null,'attributes':_0x39401d[_0xd737('0x13')]?_0x39401d['options'][_0xd737('0x15')]||null:null,'limit':_0x39401d['options']?_0x39401d[_0xd737('0x13')][_0xd737('0x16')]||null:null,'include':_0x39401d[_0xd737('0x13')]?_0x39401d[_0xd737('0x13')]['include']?_[_0xd737('0x17')](_0x39401d['options'][_0xd737('0x18')],function(_0x48a116){return{'model':db[_0x48a116[_0xd737('0x19')]],'as':_0x48a116['as'],'attributes':_0x48a116[_0xd737('0x15')],'include':_0x48a116[_0xd737('0x18')]?_[_0xd737('0x17')](_0x48a116[_0xd737('0x18')],function(_0x507029){return{'model':db[_0x507029['model']],'as':_0x507029['as'],'attributes':_0x507029[_0xd737('0x15')],'include':_0x507029[_0xd737('0x18')]?_['map'](_0x507029[_0xd737('0x18')],function(_0x45aa95){return{'model':db[_0x45aa95[_0xd737('0x19')]],'as':_0x45aa95['as'],'attributes':_0x45aa95[_0xd737('0x15')]};}):[]};}):[]};}):[]:[]})[_0xd737('0x1a')](function(_0x10e7bf){logger['info'](_0xd737('0x11'),_0x39401d);logger[_0xd737('0xb')](_0xd737('0x11'),_0x39401d,JSON[_0xd737('0xc')](_0x10e7bf));_0x1f6fa1(_0x10e7bf);})['catch'](function(_0x53029a){logger[_0xd737('0xd')]('GetMemberReport',_0x53029a[_0xd737('0xf')],_0x39401d);_0x508e0b(_0x130579[_0xd737('0xd')](0x1f4,_0x53029a['message']));});});};exports[_0xd737('0x1b')]=function(_0xf6787b){var _0x1f4528=this;return new Promise(function(_0x309c42,_0x17b80d){return db[_0xd737('0x1c')]['create'](_0xf6787b[_0xd737('0x1d')],{'raw':_0xf6787b[_0xd737('0x13')]?_0xf6787b[_0xd737('0x13')][_0xd737('0x1e')]===undefined?!![]:![]:!![]})[_0xd737('0x1a')](function(_0x5e43aa){logger['info']('CreateMemberReport',_0xf6787b);logger['debug'](_0xd737('0x1b'),_0xf6787b,JSON['stringify'](_0x5e43aa));_0x309c42(_0x5e43aa);})[_0xd737('0x10')](function(_0x42df1e){logger['error'](_0xd737('0x1b'),_0x42df1e['message'],_0xf6787b);_0x17b80d(_0x1f4528[_0xd737('0xd')](0x1f4,_0x42df1e[_0xd737('0xf')]));});});};exports[_0xd737('0x1f')]=function(_0x145adc){var _0x3ced48=this;return new Promise(function(_0x4465b9,_0x53e080){return db[_0xd737('0x1c')][_0xd737('0x20')](_0x145adc[_0xd737('0x1d')],{'raw':_0x145adc[_0xd737('0x13')]?_0x145adc[_0xd737('0x13')][_0xd737('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x145adc[_0xd737('0x13')]?_0x145adc[_0xd737('0x13')]['where']||null:null,'attributes':_0x145adc[_0xd737('0x13')]?_0x145adc['options']['attributes']||null:null,'limit':_0x145adc[_0xd737('0x13')]?_0x145adc[_0xd737('0x13')][_0xd737('0x16')]||null:null})[_0xd737('0x1a')](function(_0x5bfd4c){logger[_0xd737('0x9')](_0xd737('0x1f'),_0x145adc);logger[_0xd737('0xb')](_0xd737('0x1f'),_0x145adc,JSON[_0xd737('0xc')](_0x5bfd4c));_0x4465b9(_0x5bfd4c);})[_0xd737('0x10')](function(_0xf2000e){logger['error'](_0xd737('0x1f'),_0xf2000e['message'],_0x145adc);_0x53e080(_0x3ced48['error'](0x1f4,_0xf2000e['message']));});});};
\ No newline at end of file
index cc92f42..4d0b092 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa990=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./migration.controller','get','index','exports','multer','util','path'];(function(_0x4446d2,_0x57ef39){var _0x43fc36=function(_0x1caf3c){while(--_0x1caf3c){_0x4446d2['push'](_0x4446d2['shift']());}};_0x43fc36(++_0x57ef39);}(_0xa990,0xc9));var _0x0a99=function(_0x3313f5,_0x2ab8ba){_0x3313f5=_0x3313f5-0x0;var _0x1e494a=_0xa990[_0x3313f5];return _0x1e494a;};'use strict';var multer=require(_0x0a99('0x0'));var util=require(_0x0a99('0x1'));var path=require(_0x0a99('0x2'));var timeout=require(_0x0a99('0x3'));var express=require(_0x0a99('0x4'));var router=express[_0x0a99('0x5')]();var fs_extra=require(_0x0a99('0x6'));var auth=require(_0x0a99('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0a99('0x8'));router[_0x0a99('0x9')]('/',controller[_0x0a99('0xa')]);module[_0x0a99('0xb')]=router;
\ No newline at end of file
+var _0x50e3=['get','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x34fd2d,_0xc9074d){var _0x1cf3bd=function(_0x28217f){while(--_0x28217f){_0x34fd2d['push'](_0x34fd2d['shift']());}};_0x1cf3bd(++_0xc9074d);}(_0x50e3,0xea));var _0x350e=function(_0x35ff0a,_0x2f7775){_0x35ff0a=_0x35ff0a-0x0;var _0x4f5e23=_0x50e3[_0x35ff0a];return _0x4f5e23;};'use strict';var multer=require('multer');var util=require(_0x350e('0x0'));var path=require('path');var timeout=require(_0x350e('0x1'));var express=require(_0x350e('0x2'));var router=express[_0x350e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x350e('0x4'));var interaction=require(_0x350e('0x5'));var config=require('../../config/environment');var controller=require('./migration.controller');router[_0x350e('0x6')]('/',controller['index']);module[_0x350e('0x7')]=router;
\ No newline at end of file
index f761e03..db1257a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ad=['sequelize','exports','STRING','version'];(function(_0x490b20,_0x12f6f3){var _0x52ce75=function(_0x3d2445){while(--_0x3d2445){_0x490b20['push'](_0x490b20['shift']());}};_0x52ce75(++_0x12f6f3);}(_0xd7ad,0x110));var _0xdd7a=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0xd7ad[_0x256b72];return _0x2183e3;};'use strict';var Sequelize=require(_0xdd7a('0x0'));module[_0xdd7a('0x1')]={'version':{'type':Sequelize[_0xdd7a('0x2')],'unique':_0xdd7a('0x3')}};
\ No newline at end of file
+var _0x2207=['version','exports','STRING'];(function(_0x27bf75,_0x21787c){var _0x5078a1=function(_0x5379bd){while(--_0x5379bd){_0x27bf75['push'](_0x27bf75['shift']());}};_0x5078a1(++_0x21787c);}(_0x2207,0x8b));var _0x7220=function(_0x3aaaaa,_0x106612){_0x3aaaaa=_0x3aaaaa-0x0;var _0x48d14d=_0x2207[_0x3aaaaa];return _0x48d14d;};'use strict';var Sequelize=require('sequelize');module[_0x7220('0x0')]={'version':{'type':Sequelize[_0x7220('0x1')],'unique':_0x7220('0x2')}};
\ No newline at end of file
index ca0732b..a5774a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ed8=['sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','error','name','index','map','Migration','fieldName','type','key','model','keys','query','attributes','fields','hasOwnProperty','nolimit','order','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util'];(function(_0x51b563,_0x2eaf70){var _0x35840d=function(_0x340340){while(--_0x340340){_0x51b563['push'](_0x51b563['shift']());}};_0x35840d(++_0x2eaf70);}(_0x6ed8,0xa5));var _0x86ed=function(_0xb50908,_0x34bae3){_0xb50908=_0xb50908-0x0;var _0x5bee69=_0x6ed8[_0xb50908];return _0x5bee69;};'use strict';var emlformat=require(_0x86ed('0x0'));var rimraf=require(_0x86ed('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x86ed('0x2'));var rp=require(_0x86ed('0x3'));var moment=require('moment');var BPromise=require(_0x86ed('0x4'));var Mustache=require(_0x86ed('0x5'));var util=require('util');var path=require(_0x86ed('0x6'));var sox=require(_0x86ed('0x7'));var csv=require(_0x86ed('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x86ed('0x9'));var _=require(_0x86ed('0xa'));var squel=require(_0x86ed('0xb'));var crypto=require('crypto');var jsforce=require(_0x86ed('0xc'));var deskjs=require(_0x86ed('0xd'));var toCsv=require(_0x86ed('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x86ed('0xe'));var qs=require(_0x86ed('0xf'));var as=require(_0x86ed('0x10'));var hardwareService=require(_0x86ed('0x11'));var logger=require('../../config/logger')(_0x86ed('0x12'));var utils=require('../../config/utils');var config=require(_0x86ed('0x13'));var licenseUtil=require(_0x86ed('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x23f24c,_0x57cc21){_0x57cc21=_0x57cc21||0xcc;return function(_0xc03fd8){if(_0xc03fd8){return _0x23f24c[_0x86ed('0x15')](_0x57cc21);}return _0x23f24c[_0x86ed('0x16')](_0x57cc21)[_0x86ed('0x17')]();};}function respondWithResult(_0x2b0a38,_0x173b29){_0x173b29=_0x173b29||0xc8;return function(_0x1ebe2f){if(_0x1ebe2f){return _0x2b0a38[_0x86ed('0x16')](_0x173b29)['json'](_0x1ebe2f);}};}function respondWithFilteredResult(_0x5eeb96,_0x187b58){return function(_0x5078c0){if(_0x5078c0){var _0x5a2e3e=typeof _0x187b58[_0x86ed('0x18')]==='undefined'&&typeof _0x187b58[_0x86ed('0x19')]===_0x86ed('0x1a');var _0x3d0d3e=_0x5078c0[_0x86ed('0x1b')];var _0x4a88cf=_0x5a2e3e?0x0:_0x187b58[_0x86ed('0x18')];var _0x476ccb=_0x5a2e3e?_0x5078c0['count']:_0x187b58[_0x86ed('0x18')]+_0x187b58['limit'];var _0x4ff654;if(_0x476ccb>=_0x3d0d3e){_0x476ccb=_0x3d0d3e;_0x4ff654=0xc8;}else{_0x4ff654=0xce;}_0x5eeb96[_0x86ed('0x16')](_0x4ff654);return _0x5eeb96[_0x86ed('0x1c')](_0x86ed('0x1d'),_0x4a88cf+'-'+_0x476ccb+'/'+_0x3d0d3e)['json'](_0x5078c0);}return null;};}function patchUpdates(_0x4ba992){return function(_0x569eac){try{jsonpatch[_0x86ed('0x1e')](_0x569eac,_0x4ba992,!![]);}catch(_0x357b29){return BPromise[_0x86ed('0x1f')](_0x357b29);}return _0x569eac['save']();};}function saveUpdates(_0x2d37ba,_0x11eadb){return function(_0x123a83){if(_0x123a83){return _0x123a83[_0x86ed('0x20')](_0x2d37ba)[_0x86ed('0x21')](function(_0x5f0589){return _0x5f0589;});}return null;};}function removeEntity(_0x1daa60,_0x3fae52){return function(_0x2d5090){if(_0x2d5090){return _0x2d5090['destroy']()[_0x86ed('0x21')](function(){_0x1daa60[_0x86ed('0x16')](0xcc)[_0x86ed('0x17')]();});}};}function handleEntityNotFound(_0x80a1b0,_0x198c37){return function(_0x1f9edf){if(!_0x1f9edf){_0x80a1b0[_0x86ed('0x15')](0x194);}return _0x1f9edf;};}function handleError(_0x5d3d85,_0x7ebb1){_0x7ebb1=_0x7ebb1||0x1f4;return function(_0x1a4230){logger[_0x86ed('0x22')](_0x1a4230['stack']);if(_0x1a4230[_0x86ed('0x23')]){delete _0x1a4230[_0x86ed('0x23')];}_0x5d3d85[_0x86ed('0x16')](_0x7ebb1)['send'](_0x1a4230);};}exports[_0x86ed('0x24')]=function(_0x31e0c4,_0x44475e){var _0x2aa2f0={},_0x1198c9={},_0x244179={'count':0x0,'rows':[]};var _0x2b79b0=_[_0x86ed('0x25')](db[_0x86ed('0x26')]['rawAttributes'],function(_0x404bd0){return{'name':_0x404bd0[_0x86ed('0x27')],'type':_0x404bd0[_0x86ed('0x28')][_0x86ed('0x29')]};});_0x1198c9[_0x86ed('0x2a')]=_[_0x86ed('0x25')](_0x2b79b0,_0x86ed('0x23'));_0x1198c9['query']=_[_0x86ed('0x2b')](_0x31e0c4[_0x86ed('0x2c')]);_0x1198c9['filters']=_['intersection'](_0x1198c9[_0x86ed('0x2a')],_0x1198c9['query']);_0x2aa2f0[_0x86ed('0x2d')]=_['intersection'](_0x1198c9[_0x86ed('0x2a')],qs[_0x86ed('0x2e')](_0x31e0c4[_0x86ed('0x2c')][_0x86ed('0x2e')]));_0x2aa2f0[_0x86ed('0x2d')]=_0x2aa2f0[_0x86ed('0x2d')]['length']?_0x2aa2f0[_0x86ed('0x2d')]:_0x1198c9['model'];if(!_0x31e0c4[_0x86ed('0x2c')][_0x86ed('0x2f')](_0x86ed('0x30'))){_0x2aa2f0[_0x86ed('0x19')]=qs[_0x86ed('0x19')](_0x31e0c4[_0x86ed('0x2c')][_0x86ed('0x19')]);_0x2aa2f0['offset']=qs[_0x86ed('0x18')](_0x31e0c4[_0x86ed('0x2c')][_0x86ed('0x18')]);}_0x2aa2f0[_0x86ed('0x31')]=qs['sort'](_0x31e0c4[_0x86ed('0x2c')]['sort']);_0x2aa2f0[_0x86ed('0x32')]=qs[_0x86ed('0x33')](_[_0x86ed('0x34')](_0x31e0c4[_0x86ed('0x2c')],_0x1198c9[_0x86ed('0x33')]),_0x2b79b0);if(_0x31e0c4['query']['filter']){_0x2aa2f0[_0x86ed('0x32')]=_[_0x86ed('0x35')](_0x2aa2f0[_0x86ed('0x32')],{'$or':_['map'](_0x2b79b0,function(_0x5c0e46){if(_0x5c0e46[_0x86ed('0x28')]!==_0x86ed('0x36')){var _0x55dd3d={};_0x55dd3d[_0x5c0e46[_0x86ed('0x23')]]={'$like':'%'+_0x31e0c4['query'][_0x86ed('0x37')]+'%'};return _0x55dd3d;}})});}_0x2aa2f0=_[_0x86ed('0x35')]({},_0x2aa2f0,_0x31e0c4[_0x86ed('0x38')]);var _0x89fad7={'where':_0x2aa2f0[_0x86ed('0x32')]};return db[_0x86ed('0x26')][_0x86ed('0x1b')](_0x89fad7)[_0x86ed('0x21')](function(_0x5016ea){_0x244179[_0x86ed('0x1b')]=_0x5016ea;if(_0x31e0c4['query'][_0x86ed('0x39')]){_0x2aa2f0[_0x86ed('0x3a')]=[{'all':!![]}];}return db[_0x86ed('0x26')][_0x86ed('0x3b')](_0x2aa2f0);})['then'](function(_0x3936a2){_0x244179[_0x86ed('0x3c')]=_0x3936a2;return _0x244179;})[_0x86ed('0x21')](respondWithFilteredResult(_0x44475e,_0x2aa2f0))[_0x86ed('0x3d')](handleError(_0x44475e,null));};
\ No newline at end of file
+var _0x07ea=['findAll','rows','catch','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','name','send','index','Migration','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','merge','map','include'];(function(_0x4f3e61,_0x4ac856){var _0x37a26e=function(_0xf3a1e5){while(--_0xf3a1e5){_0x4f3e61['push'](_0x4f3e61['shift']());}};_0x37a26e(++_0x4ac856);}(_0x07ea,0x177));var _0xa07e=function(_0x1e5cb0,_0x864448){_0x1e5cb0=_0x1e5cb0-0x0;var _0x20ac9d=_0x07ea[_0x1e5cb0];return _0x20ac9d;};'use strict';var emlformat=require(_0xa07e('0x0'));var rimraf=require(_0xa07e('0x1'));var zipdir=require(_0xa07e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa07e('0x3'));var BPromise=require(_0xa07e('0x4'));var Mustache=require(_0xa07e('0x5'));var util=require(_0xa07e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xa07e('0x7'));var ejs=require(_0xa07e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa07e('0x9'));var squel=require(_0xa07e('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa07e('0x7'));var querystring=require(_0xa07e('0xb'));var Papa=require(_0xa07e('0xc'));var Redis=require(_0xa07e('0xd'));var authService=require(_0xa07e('0xe'));var qs=require(_0xa07e('0xf'));var as=require(_0xa07e('0x10'));var hardwareService=require(_0xa07e('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xa07e('0x12'));var config=require(_0xa07e('0x13'));var licenseUtil=require(_0xa07e('0x14'));var db=require(_0xa07e('0x15'))['db'];function respondWithStatusCode(_0x37facf,_0x4f0033){_0x4f0033=_0x4f0033||0xcc;return function(_0x2e2d45){if(_0x2e2d45){return _0x37facf[_0xa07e('0x16')](_0x4f0033);}return _0x37facf[_0xa07e('0x17')](_0x4f0033)[_0xa07e('0x18')]();};}function respondWithResult(_0x14c595,_0x409ee1){_0x409ee1=_0x409ee1||0xc8;return function(_0x2f0860){if(_0x2f0860){return _0x14c595[_0xa07e('0x17')](_0x409ee1)[_0xa07e('0x19')](_0x2f0860);}};}function respondWithFilteredResult(_0x42250e,_0x5f003a){return function(_0x288d47){if(_0x288d47){var _0x5900f4=typeof _0x5f003a[_0xa07e('0x1a')]===_0xa07e('0x1b')&&typeof _0x5f003a[_0xa07e('0x1c')]===_0xa07e('0x1b');var _0x2320e=_0x288d47[_0xa07e('0x1d')];var _0x51430d=_0x5900f4?0x0:_0x5f003a[_0xa07e('0x1a')];var _0x42e36b=_0x5900f4?_0x288d47[_0xa07e('0x1d')]:_0x5f003a[_0xa07e('0x1a')]+_0x5f003a[_0xa07e('0x1c')];var _0x4e3c90;if(_0x42e36b>=_0x2320e){_0x42e36b=_0x2320e;_0x4e3c90=0xc8;}else{_0x4e3c90=0xce;}_0x42250e[_0xa07e('0x17')](_0x4e3c90);return _0x42250e[_0xa07e('0x1e')](_0xa07e('0x1f'),_0x51430d+'-'+_0x42e36b+'/'+_0x2320e)[_0xa07e('0x19')](_0x288d47);}return null;};}function patchUpdates(_0x56268){return function(_0x27a9d0){try{jsonpatch['apply'](_0x27a9d0,_0x56268,!![]);}catch(_0x4f76f2){return BPromise['reject'](_0x4f76f2);}return _0x27a9d0[_0xa07e('0x20')]();};}function saveUpdates(_0xc1de3b,_0x52513f){return function(_0x513e97){if(_0x513e97){return _0x513e97[_0xa07e('0x21')](_0xc1de3b)[_0xa07e('0x22')](function(_0x43fba6){return _0x43fba6;});}return null;};}function removeEntity(_0xc1e2b,_0x5708a2){return function(_0x4f2cb9){if(_0x4f2cb9){return _0x4f2cb9[_0xa07e('0x23')]()[_0xa07e('0x22')](function(){_0xc1e2b['status'](0xcc)[_0xa07e('0x18')]();});}};}function handleEntityNotFound(_0x1fb9bf,_0x50c6eb){return function(_0x1508e8){if(!_0x1508e8){_0x1fb9bf[_0xa07e('0x16')](0x194);}return _0x1508e8;};}function handleError(_0x1336ab,_0x25c3fa){_0x25c3fa=_0x25c3fa||0x1f4;return function(_0x140f20){logger['error'](_0x140f20[_0xa07e('0x24')]);if(_0x140f20['name']){delete _0x140f20[_0xa07e('0x25')];}_0x1336ab[_0xa07e('0x17')](_0x25c3fa)[_0xa07e('0x26')](_0x140f20);};}exports[_0xa07e('0x27')]=function(_0x1c8611,_0x420daf){var _0x34b32d={},_0x130406={},_0x31da01={'count':0x0,'rows':[]};var _0x200a5a=_['map'](db[_0xa07e('0x28')]['rawAttributes'],function(_0x55053d){return{'name':_0x55053d[_0xa07e('0x29')],'type':_0x55053d[_0xa07e('0x2a')][_0xa07e('0x2b')]};});_0x130406[_0xa07e('0x2c')]=_['map'](_0x200a5a,_0xa07e('0x25'));_0x130406[_0xa07e('0x2d')]=_[_0xa07e('0x2e')](_0x1c8611[_0xa07e('0x2d')]);_0x130406[_0xa07e('0x2f')]=_[_0xa07e('0x30')](_0x130406[_0xa07e('0x2c')],_0x130406[_0xa07e('0x2d')]);_0x34b32d[_0xa07e('0x31')]=_[_0xa07e('0x30')](_0x130406[_0xa07e('0x2c')],qs[_0xa07e('0x32')](_0x1c8611[_0xa07e('0x2d')][_0xa07e('0x32')]));_0x34b32d[_0xa07e('0x31')]=_0x34b32d[_0xa07e('0x31')]['length']?_0x34b32d[_0xa07e('0x31')]:_0x130406[_0xa07e('0x2c')];if(!_0x1c8611['query'][_0xa07e('0x33')](_0xa07e('0x34'))){_0x34b32d['limit']=qs[_0xa07e('0x1c')](_0x1c8611[_0xa07e('0x2d')][_0xa07e('0x1c')]);_0x34b32d['offset']=qs[_0xa07e('0x1a')](_0x1c8611[_0xa07e('0x2d')]['offset']);}_0x34b32d['order']=qs[_0xa07e('0x35')](_0x1c8611[_0xa07e('0x2d')][_0xa07e('0x35')]);_0x34b32d[_0xa07e('0x36')]=qs[_0xa07e('0x2f')](_[_0xa07e('0x37')](_0x1c8611[_0xa07e('0x2d')],_0x130406[_0xa07e('0x2f')]),_0x200a5a);if(_0x1c8611['query']['filter']){_0x34b32d['where']=_[_0xa07e('0x38')](_0x34b32d[_0xa07e('0x36')],{'$or':_[_0xa07e('0x39')](_0x200a5a,function(_0xb48a44){if(_0xb48a44['type']!=='VIRTUAL'){var _0x3b346a={};_0x3b346a[_0xb48a44[_0xa07e('0x25')]]={'$like':'%'+_0x1c8611[_0xa07e('0x2d')]['filter']+'%'};return _0x3b346a;}})});}_0x34b32d=_[_0xa07e('0x38')]({},_0x34b32d,_0x1c8611['options']);var _0x310386={'where':_0x34b32d['where']};return db[_0xa07e('0x28')][_0xa07e('0x1d')](_0x310386)[_0xa07e('0x22')](function(_0x3d4172){_0x31da01[_0xa07e('0x1d')]=_0x3d4172;if(_0x1c8611[_0xa07e('0x2d')]['includeAll']){_0x34b32d[_0xa07e('0x3a')]=[{'all':!![]}];}return db[_0xa07e('0x28')][_0xa07e('0x3b')](_0x34b32d);})[_0xa07e('0x22')](function(_0x309635){_0x31da01[_0xa07e('0x3c')]=_0x309635;return _0x31da01;})[_0xa07e('0x22')](respondWithFilteredResult(_0x420daf,_0x34b32d))[_0xa07e('0x3d')](handleError(_0x420daf,null));};
\ No newline at end of file
index e1856e2..651999b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487a=['../../config/environment','exports','define','migrations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x2718c7,_0x5a1636){var _0x59d89c=function(_0x4d4f49){while(--_0x4d4f49){_0x2718c7['push'](_0x2718c7['shift']());}};_0x59d89c(++_0x5a1636);}(_0x487a,0xac));var _0xa487=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x487a[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0xa487('0x0'));var util=require(_0xa487('0x1'));var logger=require(_0xa487('0x2'))(_0xa487('0x3'));var moment=require(_0xa487('0x4'));var BPromise=require(_0xa487('0x5'));var rp=require(_0xa487('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa487('0x7'));var config=require(_0xa487('0x8'));var attributes=require('./migration.attributes');module[_0xa487('0x9')]=function(_0x29e60d,_0x59eef9){return _0x29e60d[_0xa487('0xa')]('Migration',attributes,{'tableName':_0xa487('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf7cd=['api','bluebird','request-promise','rimraf','./migration.attributes','exports','define','Migration','lodash','util'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xf7cd,0x102));var _0xdf7c=function(_0x178551,_0xb93833){_0x178551=_0x178551-0x0;var _0x29bff7=_0xf7cd[_0x178551];return _0x29bff7;};'use strict';var _=require(_0xdf7c('0x0'));var util=require(_0xdf7c('0x1'));var logger=require('../../config/logger')(_0xdf7c('0x2'));var moment=require('moment');var BPromise=require(_0xdf7c('0x3'));var rp=require(_0xdf7c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdf7c('0x5'));var config=require('../../config/environment');var attributes=require(_0xdf7c('0x6'));module[_0xdf7c('0x7')]=function(_0x2d35bd,_0x56bbb2){return _0x2d35bd[_0xdf7c('0x8')](_0xdf7c('0x9'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ac179b..5c39c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24cf=['info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x45fb30,_0x289cbd){var _0x55e0c3=function(_0x31ab48){while(--_0x31ab48){_0x45fb30['push'](_0x45fb30['shift']());}};_0x55e0c3(++_0x289cbd);}(_0x24cf,0x1d5));var _0xf24c=function(_0x26d6a3,_0x5eed3d){_0x26d6a3=_0x26d6a3-0x0;var _0x34a062=_0x24cf[_0x26d6a3];return _0x34a062;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf24c('0x0'));var BPromise=require(_0xf24c('0x1'));var rs=require(_0xf24c('0x2'));var fs=require('fs');var Redis=require(_0xf24c('0x3'));var db=require(_0xf24c('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xf24c('0x5'))(_0xf24c('0x6'));var config=require(_0xf24c('0x7'));var jayson=require(_0xf24c('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5104bd,_0x272d25,_0x596e81){return new BPromise(function(_0x3b7cf1,_0x13163e){return client[_0xf24c('0x9')](_0x5104bd,_0x596e81)[_0xf24c('0xa')](function(_0x4b3ea3){logger[_0xf24c('0xb')](_0xf24c('0xc'),_0x272d25,_0xf24c('0xd'));logger[_0xf24c('0xe')](_0xf24c('0xf'),_0x272d25,_0xf24c('0xd'),JSON['stringify'](_0x4b3ea3));if(_0x4b3ea3[_0xf24c('0x10')]){if(_0x4b3ea3[_0xf24c('0x10')][_0xf24c('0x11')]===0x1f4){logger['error'](_0xf24c('0xc'),_0x272d25,_0x4b3ea3[_0xf24c('0x10')]['message']);return _0x13163e(_0x4b3ea3['error'][_0xf24c('0x12')]);}logger['error'](_0xf24c('0xc'),_0x272d25,_0x4b3ea3[_0xf24c('0x10')]['message']);return _0x3b7cf1(_0x4b3ea3[_0xf24c('0x10')][_0xf24c('0x12')]);}else{logger[_0xf24c('0xb')](_0xf24c('0xc'),_0x272d25,_0xf24c('0xd'));_0x3b7cf1(_0x4b3ea3['result']['message']);}})[_0xf24c('0x13')](function(_0x462801){logger['error'](_0xf24c('0xc'),_0x272d25,_0x462801);_0x13163e(_0x462801);});});}
\ No newline at end of file
+var _0xbf1a=['../../config/environment','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','debug','Migration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0xbf1a,0x7c));var _0xabf1=function(_0x51993b,_0x4e2a17){_0x51993b=_0x51993b-0x0;var _0x370f2b=_0xbf1a[_0x51993b];return _0x370f2b;};'use strict';var _=require(_0xabf1('0x0'));var util=require(_0xabf1('0x1'));var moment=require(_0xabf1('0x2'));var BPromise=require(_0xabf1('0x3'));var rs=require(_0xabf1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xabf1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xabf1('0x6'))(_0xabf1('0x7'));var config=require(_0xabf1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xabf1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f5b53,_0x3bdf07,_0x1cc1f6){return new BPromise(function(_0x1f48f5,_0x3eb992){return client[_0xabf1('0xa')](_0x4f5b53,_0x1cc1f6)[_0xabf1('0xb')](function(_0x59a7a2){logger[_0xabf1('0xc')](_0xabf1('0xd'),_0x3bdf07,_0xabf1('0xe'));logger[_0xabf1('0xf')](_0xabf1('0x10'),_0x3bdf07,_0xabf1('0xe'),JSON['stringify'](_0x59a7a2));if(_0x59a7a2[_0xabf1('0x11')]){if(_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x12')]===0x1f4){logger[_0xabf1('0x11')](_0xabf1('0xd'),_0x3bdf07,_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);return _0x3eb992(_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);}logger[_0xabf1('0x11')]('Migration,\x20%s,\x20%s',_0x3bdf07,_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);return _0x1f48f5(_0x59a7a2[_0xabf1('0x11')]['message']);}else{logger[_0xabf1('0xc')](_0xabf1('0xd'),_0x3bdf07,_0xabf1('0xe'));_0x1f48f5(_0x59a7a2[_0xabf1('0x14')]['message']);}})[_0xabf1('0x15')](function(_0x4b138d){logger[_0xabf1('0x11')](_0xabf1('0xd'),_0x3bdf07,_0x4b138d);_0x3eb992(_0x4b138d);});});}
\ No newline at end of file
index e5425f3..ec54e81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x598a=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./network.controller','isAuthenticated','index','/:id','show','post','create','update','destroy','multer','util'];(function(_0xe2ac7c,_0x3ddb7e){var _0x447193=function(_0x5c4d93){while(--_0x5c4d93){_0xe2ac7c['push'](_0xe2ac7c['shift']());}};_0x447193(++_0x3ddb7e);}(_0x598a,0x1c9));var _0xa598=function(_0x3d73eb,_0x180e5b){_0x3d73eb=_0x3d73eb-0x0;var _0x2239fd=_0x598a[_0x3d73eb];return _0x2239fd;};'use strict';var multer=require(_0xa598('0x0'));var util=require(_0xa598('0x1'));var path=require(_0xa598('0x2'));var timeout=require(_0xa598('0x3'));var express=require(_0xa598('0x4'));var router=express[_0xa598('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xa598('0x6'));var interaction=require(_0xa598('0x7'));var config=require('../../config/environment');var controller=require(_0xa598('0x8'));router['get']('/',auth[_0xa598('0x9')](),controller[_0xa598('0xa')]);router['get'](_0xa598('0xb'),auth[_0xa598('0x9')](),controller[_0xa598('0xc')]);router[_0xa598('0xd')]('/',auth[_0xa598('0x9')](),controller[_0xa598('0xe')]);router['put'](_0xa598('0xb'),auth[_0xa598('0x9')](),controller[_0xa598('0xf')]);router['delete'](_0xa598('0xb'),auth[_0xa598('0x9')](),controller[_0xa598('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xe1d3=['delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','post','put','update'];(function(_0x18941f,_0x20095e){var _0x15ea1b=function(_0x4b42f1){while(--_0x4b42f1){_0x18941f['push'](_0x18941f['shift']());}};_0x15ea1b(++_0x20095e);}(_0xe1d3,0x159));var _0x3e1d=function(_0x1ac00d,_0x465802){_0x1ac00d=_0x1ac00d-0x0;var _0xf8bcb0=_0xe1d3[_0x1ac00d];return _0xf8bcb0;};'use strict';var multer=require(_0x3e1d('0x0'));var util=require(_0x3e1d('0x1'));var path=require(_0x3e1d('0x2'));var timeout=require(_0x3e1d('0x3'));var express=require(_0x3e1d('0x4'));var router=express['Router']();var fs_extra=require(_0x3e1d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3e1d('0x6'));var config=require(_0x3e1d('0x7'));var controller=require('./network.controller');router['get']('/',auth[_0x3e1d('0x8')](),controller[_0x3e1d('0x9')]);router[_0x3e1d('0xa')](_0x3e1d('0xb'),auth[_0x3e1d('0x8')](),controller['show']);router[_0x3e1d('0xc')]('/',auth[_0x3e1d('0x8')](),controller['create']);router[_0x3e1d('0xd')](_0x3e1d('0xb'),auth[_0x3e1d('0x8')](),controller[_0x3e1d('0xe')]);router[_0x3e1d('0xf')](_0x3e1d('0xb'),auth[_0x3e1d('0x8')](),controller[_0x3e1d('0x10')]);module[_0x3e1d('0x11')]=router;
\ No newline at end of file
index 22a3e25..1359cab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cff=['stun','turn','STRING','sequelize','exports','ENUM','externip'];(function(_0x57dc85,_0x3a6d51){var _0x563a2e=function(_0x5713b2){while(--_0x5713b2){_0x57dc85['push'](_0x57dc85['shift']());}};_0x563a2e(++_0x3a6d51);}(_0x6cff,0x129));var _0xf6cf=function(_0x23bc85,_0x19addc){_0x23bc85=_0x23bc85-0x0;var _0x177dfd=_0x6cff[_0x23bc85];return _0x177dfd;};'use strict';var Sequelize=require(_0xf6cf('0x0'));module[_0xf6cf('0x1')]={'type':{'type':Sequelize[_0xf6cf('0x2')]('localnet',_0xf6cf('0x3'),_0xf6cf('0x4'),_0xf6cf('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xf6cf('0x6')]},'password':{'type':Sequelize[_0xf6cf('0x6')]}};
\ No newline at end of file
+var _0xa41b=['localnet','externip','stun','turn','STRING','sequelize','exports','ENUM'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xa41b,0x105));var _0xba41=function(_0x52a857,_0xc99fa1){_0x52a857=_0x52a857-0x0;var _0x4e2aae=_0xa41b[_0x52a857];return _0x4e2aae;};'use strict';var Sequelize=require(_0xba41('0x0'));module[_0xba41('0x1')]={'type':{'type':Sequelize[_0xba41('0x2')](_0xba41('0x3'),_0xba41('0x4'),_0xba41('0x5'),_0xba41('0x6'))},'value':{'type':Sequelize[_0xba41('0x7')]},'username':{'type':Sequelize[_0xba41('0x7')]},'password':{'type':Sequelize[_0xba41('0x7')]}};
\ No newline at end of file
index 7e325df..dc63b6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dab=['message','catch','sendStatus','end','status','undefined','count','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','map','Network','rawAttributes','type','key','model','keys','filters','query','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','params','intersection','length','includeAll','include','find','create','transaction','body','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','utf8','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN','readFileSync','server/files/templates/turn_multiple.ejs','render','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','writeFileSync','format','chan_sip.so','sequelize','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','jayson/promise','client','http','request','info','request\x20sent','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','Network,\x20%s,\x20%s'];(function(_0x3930c2,_0x55cae8){var _0x1d1d6d=function(_0x3bc6d5){while(--_0x3bc6d5){_0x3930c2['push'](_0x3930c2['shift']());}};_0x1d1d6d(++_0x55cae8);}(_0x2dab,0x120));var _0xb2da=function(_0x18ceee,_0x4c5e42){_0x18ceee=_0x18ceee-0x0;var _0x3ebe81=_0x2dab[_0x18ceee];return _0x3ebe81;};'use strict';var emlformat=require(_0xb2da('0x0'));var rimraf=require(_0xb2da('0x1'));var zipdir=require(_0xb2da('0x2'));var jsonpatch=require(_0xb2da('0x3'));var rp=require(_0xb2da('0x4'));var moment=require('moment');var BPromise=require(_0xb2da('0x5'));var Mustache=require('mustache');var util=require(_0xb2da('0x6'));var path=require(_0xb2da('0x7'));var sox=require(_0xb2da('0x8'));var csv=require(_0xb2da('0x9'));var ejs=require(_0xb2da('0xa'));var fs=require('fs');var fs_extra=require(_0xb2da('0xb'));var _=require(_0xb2da('0xc'));var squel=require('squel');var crypto=require(_0xb2da('0xd'));var jsforce=require(_0xb2da('0xe'));var deskjs=require(_0xb2da('0xf'));var toCsv=require(_0xb2da('0x9'));var querystring=require(_0xb2da('0x10'));var Papa=require(_0xb2da('0x11'));var Redis=require(_0xb2da('0x12'));var authService=require(_0xb2da('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb2da('0x14'));var logger=require(_0xb2da('0x15'))(_0xb2da('0x16'));var utils=require(_0xb2da('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb2da('0x18'))['db'];var jayson=require(_0xb2da('0x19'));var client=jayson[_0xb2da('0x1a')][_0xb2da('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x544d0a,_0x24f407,_0x3fb685,_0x17963c){return new BPromise(function(_0x441e56,_0x1f3ef3){var _0x3ac025=_0x17963c||client;return _0x3ac025[_0xb2da('0x1c')](_0x544d0a,_0x3fb685)['then'](function(_0x53dd3d){logger[_0xb2da('0x1d')]('Network,\x20%s,\x20%s',_0x24f407,_0xb2da('0x1e'));logger['debug'](_0xb2da('0x1f'),_0x24f407,_0xb2da('0x1e'),JSON[_0xb2da('0x20')](_0x53dd3d));if(_0x53dd3d[_0xb2da('0x21')]){if(_0x53dd3d[_0xb2da('0x21')][_0xb2da('0x22')]===0x1f4){logger[_0xb2da('0x21')](_0xb2da('0x23'),_0x24f407,_0x53dd3d[_0xb2da('0x21')]['message']);return _0x1f3ef3(_0x53dd3d[_0xb2da('0x21')][_0xb2da('0x24')]);}logger[_0xb2da('0x21')](_0xb2da('0x23'),_0x24f407,_0x53dd3d[_0xb2da('0x21')][_0xb2da('0x24')]);return _0x441e56(_0x53dd3d[_0xb2da('0x21')][_0xb2da('0x24')]);}else{logger[_0xb2da('0x1d')](_0xb2da('0x23'),_0x24f407,'request\x20sent');_0x441e56(_0x53dd3d['result'][_0xb2da('0x24')]);}})[_0xb2da('0x25')](function(_0x4b68f3){logger[_0xb2da('0x21')](_0xb2da('0x23'),_0x24f407,_0x4b68f3);_0x1f3ef3(_0x4b68f3);});});}function respondWithStatusCode(_0x5cfefd,_0x3fa83e){_0x3fa83e=_0x3fa83e||0xcc;return function(_0x2d31e3){if(_0x2d31e3){return _0x5cfefd[_0xb2da('0x26')](_0x3fa83e);}return _0x5cfefd['status'](_0x3fa83e)[_0xb2da('0x27')]();};}function respondWithResult(_0x4c324f,_0x3b1f88){_0x3b1f88=_0x3b1f88||0xc8;return function(_0x1241eb){if(_0x1241eb){return _0x4c324f[_0xb2da('0x28')](_0x3b1f88)['json'](_0x1241eb);}};}function respondWithFilteredResult(_0x3d5a7d,_0x308180){return function(_0x1c5598){if(_0x1c5598){var _0x23a6aa=typeof _0x308180['offset']===_0xb2da('0x29')&&typeof _0x308180['limit']==='undefined';var _0x54510d=_0x1c5598[_0xb2da('0x2a')];var _0xa99dbf=_0x23a6aa?0x0:_0x308180[_0xb2da('0x2b')];var _0x51887c=_0x23a6aa?_0x1c5598[_0xb2da('0x2a')]:_0x308180[_0xb2da('0x2b')]+_0x308180['limit'];var _0x31b75a;if(_0x51887c>=_0x54510d){_0x51887c=_0x54510d;_0x31b75a=0xc8;}else{_0x31b75a=0xce;}_0x3d5a7d[_0xb2da('0x28')](_0x31b75a);return _0x3d5a7d[_0xb2da('0x2c')](_0xb2da('0x2d'),_0xa99dbf+'-'+_0x51887c+'/'+_0x54510d)['json'](_0x1c5598);}return null;};}function patchUpdates(_0xb2456e){return function(_0x4b3a7b){try{jsonpatch[_0xb2da('0x2e')](_0x4b3a7b,_0xb2456e,!![]);}catch(_0x41dea2){return BPromise[_0xb2da('0x2f')](_0x41dea2);}return _0x4b3a7b['save']();};}function saveUpdates(_0x508c7c,_0x1c764d){return function(_0x322b1d){if(_0x322b1d){return _0x322b1d[_0xb2da('0x30')](_0x508c7c)[_0xb2da('0x31')](function(_0x28c5f1){return _0x28c5f1;});}return null;};}function removeEntity(_0x3922f4,_0x1842b9){return function(_0xf2b699){if(_0xf2b699){return _0xf2b699[_0xb2da('0x32')]()[_0xb2da('0x31')](function(){_0x3922f4[_0xb2da('0x28')](0xcc)[_0xb2da('0x27')]();});}};}function handleEntityNotFound(_0x1e9fac,_0x18b250){return function(_0xb3c2ab){if(!_0xb3c2ab){_0x1e9fac[_0xb2da('0x26')](0x194);}return _0xb3c2ab;};}function handleError(_0x5eedce,_0x1ce7ed){_0x1ce7ed=_0x1ce7ed||0x1f4;return function(_0x949e56){logger[_0xb2da('0x21')](_0x949e56[_0xb2da('0x33')]);if(_0x949e56[_0xb2da('0x34')]){delete _0x949e56[_0xb2da('0x34')];}_0x5eedce[_0xb2da('0x28')](_0x1ce7ed)[_0xb2da('0x35')](_0x949e56);};}exports['index']=function(_0x63b786,_0x1bd2c8){var _0x222f14={},_0x235ca9={},_0x41377c={'count':0x0,'rows':[]};var _0x55c09f=_[_0xb2da('0x36')](db[_0xb2da('0x37')][_0xb2da('0x38')],function(_0x4ec29e){return{'name':_0x4ec29e['fieldName'],'type':_0x4ec29e[_0xb2da('0x39')][_0xb2da('0x3a')]};});_0x235ca9[_0xb2da('0x3b')]=_[_0xb2da('0x36')](_0x55c09f,_0xb2da('0x34'));_0x235ca9['query']=_[_0xb2da('0x3c')](_0x63b786['query']);_0x235ca9[_0xb2da('0x3d')]=_['intersection'](_0x235ca9['model'],_0x235ca9[_0xb2da('0x3e')]);_0x222f14[_0xb2da('0x3f')]=_['intersection'](_0x235ca9[_0xb2da('0x3b')],qs[_0xb2da('0x40')](_0x63b786[_0xb2da('0x3e')][_0xb2da('0x40')]));_0x222f14[_0xb2da('0x3f')]=_0x222f14[_0xb2da('0x3f')]['length']?_0x222f14[_0xb2da('0x3f')]:_0x235ca9[_0xb2da('0x3b')];if(!_0x63b786['query'][_0xb2da('0x41')](_0xb2da('0x42'))){_0x222f14['limit']=qs[_0xb2da('0x43')](_0x63b786[_0xb2da('0x3e')]['limit']);_0x222f14[_0xb2da('0x2b')]=qs[_0xb2da('0x2b')](_0x63b786[_0xb2da('0x3e')][_0xb2da('0x2b')]);}_0x222f14[_0xb2da('0x44')]=qs['sort'](_0x63b786[_0xb2da('0x3e')][_0xb2da('0x45')]);_0x222f14[_0xb2da('0x46')]=qs[_0xb2da('0x3d')](_[_0xb2da('0x47')](_0x63b786[_0xb2da('0x3e')],_0x235ca9[_0xb2da('0x3d')]),_0x55c09f);if(_0x63b786[_0xb2da('0x3e')][_0xb2da('0x48')]){_0x222f14['where']=_[_0xb2da('0x49')](_0x222f14['where'],{'$or':_[_0xb2da('0x36')](_0x55c09f,function(_0xb30688){if(_0xb30688[_0xb2da('0x39')]!==_0xb2da('0x4a')){var _0xad239f={};_0xad239f[_0xb30688[_0xb2da('0x34')]]={'$like':'%'+_0x63b786['query'][_0xb2da('0x48')]+'%'};return _0xad239f;}})});}_0x222f14=_[_0xb2da('0x49')]({},_0x222f14,_0x63b786[_0xb2da('0x4b')]);var _0x2ba09d={'where':_0x222f14[_0xb2da('0x46')]};return db[_0xb2da('0x37')][_0xb2da('0x2a')](_0x2ba09d)[_0xb2da('0x31')](function(_0x345f26){_0x41377c[_0xb2da('0x2a')]=_0x345f26;if(_0x63b786[_0xb2da('0x3e')]['includeAll']){_0x222f14['include']=[{'all':!![]}];}return db[_0xb2da('0x37')][_0xb2da('0x4c')](_0x222f14);})[_0xb2da('0x31')](function(_0x5d52c1){_0x41377c[_0xb2da('0x4d')]=_0x5d52c1;return _0x41377c;})[_0xb2da('0x31')](respondWithFilteredResult(_0x1bd2c8,_0x222f14))[_0xb2da('0x25')](handleError(_0x1bd2c8,null));};exports['show']=function(_0xdd8b67,_0x1d50c2){var _0x279033={'raw':!![],'where':{'id':_0xdd8b67[_0xb2da('0x4e')]['id']}},_0x2c7e84={};_0x2c7e84[_0xb2da('0x3b')]=_['keys'](db[_0xb2da('0x37')]['rawAttributes']);_0x2c7e84['query']=_[_0xb2da('0x3c')](_0xdd8b67[_0xb2da('0x3e')]);_0x2c7e84[_0xb2da('0x3d')]=_[_0xb2da('0x4f')](_0x2c7e84[_0xb2da('0x3b')],_0x2c7e84[_0xb2da('0x3e')]);_0x279033[_0xb2da('0x3f')]=_[_0xb2da('0x4f')](_0x2c7e84[_0xb2da('0x3b')],qs[_0xb2da('0x40')](_0xdd8b67['query'][_0xb2da('0x40')]));_0x279033[_0xb2da('0x3f')]=_0x279033[_0xb2da('0x3f')][_0xb2da('0x50')]?_0x279033[_0xb2da('0x3f')]:_0x2c7e84[_0xb2da('0x3b')];if(_0xdd8b67['query'][_0xb2da('0x51')]){_0x279033[_0xb2da('0x52')]=[{'all':!![]}];}_0x279033=_[_0xb2da('0x49')]({},_0x279033,_0xdd8b67[_0xb2da('0x4b')]);return db[_0xb2da('0x37')][_0xb2da('0x53')](_0x279033)[_0xb2da('0x31')](handleEntityNotFound(_0x1d50c2,null))['then'](respondWithResult(_0x1d50c2,null))['catch'](handleError(_0x1d50c2,null));};exports[_0xb2da('0x54')]=function(_0x42a01c,_0x282fcf,_0x3e15a1){var _0x201d55;return db['sequelize'][_0xb2da('0x55')](function(_0x25ac26){return db[_0xb2da('0x37')][_0xb2da('0x54')](_0x42a01c[_0xb2da('0x56')],{'raw':!![]})[_0xb2da('0x31')](function(_0x576c64){_0x201d55=_0x576c64;return db[_0xb2da('0x37')][_0xb2da('0x4c')]({'where':{'type':_0x42a01c[_0xb2da('0x56')][_0xb2da('0x39')]},'raw':!![]});})['then'](function(_0x4a2349){if(_0x201d55[_0xb2da('0x39')][_0xb2da('0x57')]()==_0xb2da('0x58')){var _0x2445d0=fs['readFileSync'](path[_0xb2da('0x59')](config[_0xb2da('0x5a')],_0xb2da('0x5b')),_0xb2da('0x5c'));var _0x4ad9bb=ejs['render'](_0x2445d0,{'networks':_0x4a2349||[]});fs['writeFileSync'](_0xb2da('0x5d'),_0x4ad9bb);return respondWithRpcPromise(_0xb2da('0x5e'),_0xb2da('0x54'),{'module':_0xb2da('0x5f')});}else if(_0x201d55[_0xb2da('0x39')]['toUpperCase']()==_0xb2da('0x60')){var _0x4604df=fs[_0xb2da('0x61')](path['join'](config[_0xb2da('0x5a')],_0xb2da('0x62')),_0xb2da('0x5c'));var _0x55c73c=ejs[_0xb2da('0x63')](_0x4604df,{'networks':_0x4a2349||[]});fs['writeFileSync'](_0xb2da('0x64'),_0x55c73c);return respondWithRpcPromise(_0xb2da('0x5e'),_0xb2da('0x54'),{'module':'res_stun_monitor.so'});}else{var _0x32f570=fs[_0xb2da('0x61')](path[_0xb2da('0x59')](config[_0xb2da('0x5a')],_0xb2da('0x65')),_0xb2da('0x5c'));var _0x2e906d=ejs[_0xb2da('0x63')](_0x32f570,{'networks':_0x4a2349||[]});fs[_0xb2da('0x66')](util[_0xb2da('0x67')]('/etc/asterisk/sip_xcally_%s.conf',_0x42a01c['body'][_0xb2da('0x39')]['toLowerCase']()),_0x2e906d);return respondWithRpcPromise('Reload',_0xb2da('0x54'),{'module':_0xb2da('0x68')});}return null;})['then'](function(){return _0x201d55;});})[_0xb2da('0x31')](respondWithResult(_0x282fcf,0xc9))[_0xb2da('0x25')](handleError(_0x282fcf,null));};exports[_0xb2da('0x30')]=function(_0x56af11,_0x3bcca8,_0x709982){var _0x51dab2;return db[_0xb2da('0x69')][_0xb2da('0x55')](function(_0x382f09){return db[_0xb2da('0x37')]['find']({'where':{'id':_0x56af11[_0xb2da('0x4e')]['id']}})[_0xb2da('0x31')](handleEntityNotFound(_0x3bcca8,null))['then'](saveUpdates(_0x56af11['body'],null))[_0xb2da('0x31')](function(_0x151c90){if(_0x151c90){_0x51dab2=_0x151c90;return db[_0xb2da('0x37')][_0xb2da('0x4c')]({'where':{'type':_0x51dab2[_0xb2da('0x39')]},'raw':!![]});}return null;})[_0xb2da('0x31')](function(_0x36d8b8){if(_0x51dab2[_0xb2da('0x39')]['toUpperCase']()==_0xb2da('0x58')){var _0x236e30=fs[_0xb2da('0x61')](path[_0xb2da('0x59')](config[_0xb2da('0x5a')],'server/files/templates/stun_multiple.ejs'),'utf8');var _0x1222b6=ejs[_0xb2da('0x63')](_0x236e30,{'networks':_0x36d8b8||[]});fs['writeFileSync'](_0xb2da('0x5d'),_0x1222b6);return respondWithRpcPromise('Reload',_0xb2da('0x30'),{'module':_0xb2da('0x5f')});}else if(_0x51dab2['type'][_0xb2da('0x57')]()==_0xb2da('0x60')){var _0x1d768c=fs[_0xb2da('0x61')](path[_0xb2da('0x59')](config[_0xb2da('0x5a')],_0xb2da('0x62')),_0xb2da('0x5c'));var _0x4e44fb=ejs['render'](_0x1d768c,{'networks':_0x36d8b8||[]});fs[_0xb2da('0x66')](_0xb2da('0x64'),_0x4e44fb);return respondWithRpcPromise(_0xb2da('0x5e'),_0xb2da('0x30'),{'module':'res_stun_monitor.so'});}else{var _0x3da42b=fs[_0xb2da('0x61')](path[_0xb2da('0x59')](config['root'],'server/files/templates/network.ejs'),_0xb2da('0x5c'));var _0x308c2d=ejs[_0xb2da('0x63')](_0x3da42b,{'networks':_0x36d8b8||[]});fs['writeFileSync'](util[_0xb2da('0x67')]('/etc/asterisk/sip_xcally_%s.conf',_0x56af11[_0xb2da('0x56')]['type']['toLowerCase']()),_0x308c2d);return respondWithRpcPromise(_0xb2da('0x5e'),'update',{'module':_0xb2da('0x68')});}return null;})[_0xb2da('0x31')](function(_0x12757d){if(_0x12757d){return _0x51dab2;}return null;});})[_0xb2da('0x31')](respondWithResult(_0x3bcca8,null))['catch'](handleError(_0x3bcca8,null));};exports[_0xb2da('0x32')]=function(_0x986f60,_0x2e75a0,_0x4a05b8){var _0x4a4f16;return db[_0xb2da('0x37')][_0xb2da('0x53')]({'where':{'id':_0x986f60['params']['id']}})[_0xb2da('0x31')](function(_0x215782){_0x4a4f16=_0x215782;return _0x215782;})[_0xb2da('0x31')](handleEntityNotFound(_0x2e75a0,null))[_0xb2da('0x31')](removeEntity(_0x2e75a0,null))[_0xb2da('0x31')](function(){if(_0x4a4f16){return db[_0xb2da('0x37')]['findAll']({'where':{'type':_0x4a4f16[_0xb2da('0x39')]},'raw':!![]});}})[_0xb2da('0x31')](function(_0x27d965){if(_0x4a4f16['type'][_0xb2da('0x57')]()==_0xb2da('0x58')){var _0x25c232=fs[_0xb2da('0x61')](path[_0xb2da('0x59')](config[_0xb2da('0x5a')],_0xb2da('0x5b')),_0xb2da('0x5c'));var _0x35e49f=ejs[_0xb2da('0x63')](_0x25c232,{'networks':_0x27d965||[]});fs[_0xb2da('0x66')](_0xb2da('0x5d'),_0x35e49f);return respondWithRpcPromise(_0xb2da('0x5e'),_0xb2da('0x32'),{'module':_0xb2da('0x5f')});}else if(_0x4a4f16[_0xb2da('0x39')][_0xb2da('0x57')]()==_0xb2da('0x60')){var _0x918be3=fs['readFileSync'](path[_0xb2da('0x59')](config[_0xb2da('0x5a')],_0xb2da('0x62')),'utf8');var _0x155b47=ejs[_0xb2da('0x63')](_0x918be3,{'networks':_0x27d965||[]});fs[_0xb2da('0x66')]('/etc/asterisk/turn_xcally.conf',_0x155b47);return respondWithRpcPromise(_0xb2da('0x5e'),_0xb2da('0x32'),{'module':_0xb2da('0x5f')});}else{var _0xa1c760=fs[_0xb2da('0x61')](path[_0xb2da('0x59')](config['root'],_0xb2da('0x65')),'utf8');var _0x22c502=ejs['render'](_0xa1c760,{'networks':_0x27d965||[]});fs['writeFileSync'](util[_0xb2da('0x67')](_0xb2da('0x6a'),_0x986f60[_0xb2da('0x56')][_0xb2da('0x39')][_0xb2da('0x6b')]()),_0x22c502);return respondWithRpcPromise(_0xb2da('0x5e'),_0xb2da('0x32'),{'module':'chan_sip.so'});}return null;})[_0xb2da('0x25')](handleError(_0x2e75a0,null));};
\ No newline at end of file
+var _0xfc0b=['then','info','Network,\x20%s,\x20%s','request\x20sent','debug','error','message','result','sendStatus','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','destroy','status','stack','name','map','Network','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','find','sequelize','transaction','body','toUpperCase','STUN','readFileSync','root','utf8','render','Reload','create','res_stun_monitor.so','TURN','join','server/files/templates/turn_multiple.ejs','writeFileSync','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','server/files/templates/stun_multiple.ejs','/etc/asterisk/turn_xcally.conf','/etc/asterisk/stun_xcally.conf','rimraf','zip-dir','fast-json-patch','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','../../config/utils','../../config/license/util','jayson/promise','http','request'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0xfc0b,0x189));var _0xbfc0=function(_0xfc2e4e,_0x419a93){_0xfc2e4e=_0xfc2e4e-0x0;var _0x321dc7=_0xfc0b[_0xfc2e4e];return _0x321dc7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbfc0('0x0'));var zipdir=require(_0xbfc0('0x1'));var jsonpatch=require(_0xbfc0('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xbfc0('0x3'));var Mustache=require(_0xbfc0('0x4'));var util=require('util');var path=require(_0xbfc0('0x5'));var sox=require(_0xbfc0('0x6'));var csv=require(_0xbfc0('0x7'));var ejs=require(_0xbfc0('0x8'));var fs=require('fs');var fs_extra=require(_0xbfc0('0x9'));var _=require(_0xbfc0('0xa'));var squel=require(_0xbfc0('0xb'));var crypto=require(_0xbfc0('0xc'));var jsforce=require(_0xbfc0('0xd'));var deskjs=require(_0xbfc0('0xe'));var toCsv=require(_0xbfc0('0x7'));var querystring=require('querystring');var Papa=require(_0xbfc0('0xf'));var Redis=require(_0xbfc0('0x10'));var authService=require(_0xbfc0('0x11'));var qs=require(_0xbfc0('0x12'));var as=require(_0xbfc0('0x13'));var hardwareService=require(_0xbfc0('0x14'));var logger=require(_0xbfc0('0x15'))('api');var utils=require(_0xbfc0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbfc0('0x17'));var db=require('../../mysqldb')['db'];var jayson=require(_0xbfc0('0x18'));var client=jayson['client'][_0xbfc0('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x4de2c3,_0x25448a,_0xfd91bc,_0x5ed393){return new BPromise(function(_0x3c2a3e,_0x2e3f35){var _0x380f81=_0x5ed393||client;return _0x380f81[_0xbfc0('0x1a')](_0x4de2c3,_0xfd91bc)[_0xbfc0('0x1b')](function(_0x27eaf6){logger[_0xbfc0('0x1c')](_0xbfc0('0x1d'),_0x25448a,_0xbfc0('0x1e'));logger[_0xbfc0('0x1f')]('Network,\x20%s,\x20%s,\x20%s',_0x25448a,_0xbfc0('0x1e'),JSON['stringify'](_0x27eaf6));if(_0x27eaf6[_0xbfc0('0x20')]){if(_0x27eaf6[_0xbfc0('0x20')]['code']===0x1f4){logger['error'](_0xbfc0('0x1d'),_0x25448a,_0x27eaf6[_0xbfc0('0x20')]['message']);return _0x2e3f35(_0x27eaf6[_0xbfc0('0x20')][_0xbfc0('0x21')]);}logger[_0xbfc0('0x20')]('Network,\x20%s,\x20%s',_0x25448a,_0x27eaf6[_0xbfc0('0x20')][_0xbfc0('0x21')]);return _0x3c2a3e(_0x27eaf6[_0xbfc0('0x20')][_0xbfc0('0x21')]);}else{logger[_0xbfc0('0x1c')](_0xbfc0('0x1d'),_0x25448a,_0xbfc0('0x1e'));_0x3c2a3e(_0x27eaf6[_0xbfc0('0x22')][_0xbfc0('0x21')]);}})['catch'](function(_0x27da61){logger[_0xbfc0('0x20')](_0xbfc0('0x1d'),_0x25448a,_0x27da61);_0x2e3f35(_0x27da61);});});}function respondWithStatusCode(_0x280852,_0x23d469){_0x23d469=_0x23d469||0xcc;return function(_0x2fb0a1){if(_0x2fb0a1){return _0x280852[_0xbfc0('0x23')](_0x23d469);}return _0x280852['status'](_0x23d469)[_0xbfc0('0x24')]();};}function respondWithResult(_0x4510c0,_0x339b2c){_0x339b2c=_0x339b2c||0xc8;return function(_0x28ad83){if(_0x28ad83){return _0x4510c0['status'](_0x339b2c)['json'](_0x28ad83);}};}function respondWithFilteredResult(_0x38cb82,_0x46e338){return function(_0x176e76){if(_0x176e76){var _0x1a71fa=typeof _0x46e338['offset']===_0xbfc0('0x25')&&typeof _0x46e338[_0xbfc0('0x26')]===_0xbfc0('0x25');var _0x2af12f=_0x176e76[_0xbfc0('0x27')];var _0x1a884c=_0x1a71fa?0x0:_0x46e338[_0xbfc0('0x28')];var _0x3bda22=_0x1a71fa?_0x176e76[_0xbfc0('0x27')]:_0x46e338[_0xbfc0('0x28')]+_0x46e338[_0xbfc0('0x26')];var _0x32df1d;if(_0x3bda22>=_0x2af12f){_0x3bda22=_0x2af12f;_0x32df1d=0xc8;}else{_0x32df1d=0xce;}_0x38cb82['status'](_0x32df1d);return _0x38cb82[_0xbfc0('0x29')](_0xbfc0('0x2a'),_0x1a884c+'-'+_0x3bda22+'/'+_0x2af12f)[_0xbfc0('0x2b')](_0x176e76);}return null;};}function patchUpdates(_0x38f3f6){return function(_0xb2cdac){try{jsonpatch['apply'](_0xb2cdac,_0x38f3f6,!![]);}catch(_0x792817){return BPromise[_0xbfc0('0x2c')](_0x792817);}return _0xb2cdac[_0xbfc0('0x2d')]();};}function saveUpdates(_0x59a9bd,_0x41bb35){return function(_0x3b4a3d){if(_0x3b4a3d){return _0x3b4a3d[_0xbfc0('0x2e')](_0x59a9bd)['then'](function(_0x200fb4){return _0x200fb4;});}return null;};}function removeEntity(_0x2ff7f8,_0xf57c3c){return function(_0x2c870e){if(_0x2c870e){return _0x2c870e[_0xbfc0('0x2f')]()[_0xbfc0('0x1b')](function(){_0x2ff7f8[_0xbfc0('0x30')](0xcc)[_0xbfc0('0x24')]();});}};}function handleEntityNotFound(_0x3048f3,_0x5d7697){return function(_0x452323){if(!_0x452323){_0x3048f3[_0xbfc0('0x23')](0x194);}return _0x452323;};}function handleError(_0x5cdaf0,_0x2e967e){_0x2e967e=_0x2e967e||0x1f4;return function(_0x9d213d){logger[_0xbfc0('0x20')](_0x9d213d[_0xbfc0('0x31')]);if(_0x9d213d[_0xbfc0('0x32')]){delete _0x9d213d['name'];}_0x5cdaf0[_0xbfc0('0x30')](_0x2e967e)['send'](_0x9d213d);};}exports['index']=function(_0x5dbb5e,_0x418c57){var _0x1d175a={},_0x36464b={},_0x26b73f={'count':0x0,'rows':[]};var _0x41f2ff=_[_0xbfc0('0x33')](db[_0xbfc0('0x34')][_0xbfc0('0x35')],function(_0x4c3779){return{'name':_0x4c3779['fieldName'],'type':_0x4c3779['type'][_0xbfc0('0x36')]};});_0x36464b[_0xbfc0('0x37')]=_['map'](_0x41f2ff,'name');_0x36464b[_0xbfc0('0x38')]=_[_0xbfc0('0x39')](_0x5dbb5e[_0xbfc0('0x38')]);_0x36464b[_0xbfc0('0x3a')]=_[_0xbfc0('0x3b')](_0x36464b['model'],_0x36464b[_0xbfc0('0x38')]);_0x1d175a[_0xbfc0('0x3c')]=_[_0xbfc0('0x3b')](_0x36464b['model'],qs['fields'](_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x3d')]));_0x1d175a[_0xbfc0('0x3c')]=_0x1d175a['attributes'][_0xbfc0('0x3e')]?_0x1d175a[_0xbfc0('0x3c')]:_0x36464b[_0xbfc0('0x37')];if(!_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x3f')](_0xbfc0('0x40'))){_0x1d175a['limit']=qs[_0xbfc0('0x26')](_0x5dbb5e[_0xbfc0('0x38')]['limit']);_0x1d175a[_0xbfc0('0x28')]=qs[_0xbfc0('0x28')](_0x5dbb5e['query'][_0xbfc0('0x28')]);}_0x1d175a['order']=qs[_0xbfc0('0x41')](_0x5dbb5e[_0xbfc0('0x38')]['sort']);_0x1d175a['where']=qs[_0xbfc0('0x3a')](_[_0xbfc0('0x42')](_0x5dbb5e[_0xbfc0('0x38')],_0x36464b[_0xbfc0('0x3a')]),_0x41f2ff);if(_0x5dbb5e[_0xbfc0('0x38')]['filter']){_0x1d175a[_0xbfc0('0x43')]=_['merge'](_0x1d175a[_0xbfc0('0x43')],{'$or':_[_0xbfc0('0x33')](_0x41f2ff,function(_0x47e50b){if(_0x47e50b[_0xbfc0('0x44')]!==_0xbfc0('0x45')){var _0x287520={};_0x287520[_0x47e50b[_0xbfc0('0x32')]]={'$like':'%'+_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x46')]+'%'};return _0x287520;}})});}_0x1d175a=_[_0xbfc0('0x47')]({},_0x1d175a,_0x5dbb5e[_0xbfc0('0x48')]);var _0x4d27f2={'where':_0x1d175a[_0xbfc0('0x43')]};return db[_0xbfc0('0x34')][_0xbfc0('0x27')](_0x4d27f2)['then'](function(_0x394f3c){_0x26b73f['count']=_0x394f3c;if(_0x5dbb5e[_0xbfc0('0x38')][_0xbfc0('0x49')]){_0x1d175a[_0xbfc0('0x4a')]=[{'all':!![]}];}return db[_0xbfc0('0x34')][_0xbfc0('0x4b')](_0x1d175a);})[_0xbfc0('0x1b')](function(_0x3f457e){_0x26b73f[_0xbfc0('0x4c')]=_0x3f457e;return _0x26b73f;})[_0xbfc0('0x1b')](respondWithFilteredResult(_0x418c57,_0x1d175a))[_0xbfc0('0x4d')](handleError(_0x418c57,null));};exports[_0xbfc0('0x4e')]=function(_0x52f47c,_0xbc745c){var _0x799f3={'raw':!![],'where':{'id':_0x52f47c[_0xbfc0('0x4f')]['id']}},_0xf81ba9={};_0xf81ba9['model']=_[_0xbfc0('0x39')](db[_0xbfc0('0x34')][_0xbfc0('0x35')]);_0xf81ba9['query']=_['keys'](_0x52f47c[_0xbfc0('0x38')]);_0xf81ba9[_0xbfc0('0x3a')]=_['intersection'](_0xf81ba9[_0xbfc0('0x37')],_0xf81ba9['query']);_0x799f3[_0xbfc0('0x3c')]=_['intersection'](_0xf81ba9[_0xbfc0('0x37')],qs[_0xbfc0('0x3d')](_0x52f47c['query'][_0xbfc0('0x3d')]));_0x799f3[_0xbfc0('0x3c')]=_0x799f3[_0xbfc0('0x3c')]['length']?_0x799f3[_0xbfc0('0x3c')]:_0xf81ba9[_0xbfc0('0x37')];if(_0x52f47c[_0xbfc0('0x38')][_0xbfc0('0x49')]){_0x799f3['include']=[{'all':!![]}];}_0x799f3=_[_0xbfc0('0x47')]({},_0x799f3,_0x52f47c['options']);return db['Network'][_0xbfc0('0x50')](_0x799f3)[_0xbfc0('0x1b')](handleEntityNotFound(_0xbc745c,null))[_0xbfc0('0x1b')](respondWithResult(_0xbc745c,null))['catch'](handleError(_0xbc745c,null));};exports['create']=function(_0x119629,_0x173f04,_0xcc345c){var _0x32373a;return db[_0xbfc0('0x51')][_0xbfc0('0x52')](function(_0x176386){return db[_0xbfc0('0x34')]['create'](_0x119629['body'],{'raw':!![]})[_0xbfc0('0x1b')](function(_0x5c538a){_0x32373a=_0x5c538a;return db['Network']['findAll']({'where':{'type':_0x119629[_0xbfc0('0x53')][_0xbfc0('0x44')]},'raw':!![]});})[_0xbfc0('0x1b')](function(_0xbad4e0){if(_0x32373a[_0xbfc0('0x44')][_0xbfc0('0x54')]()==_0xbfc0('0x55')){var _0x195818=fs[_0xbfc0('0x56')](path['join'](config[_0xbfc0('0x57')],'server/files/templates/stun_multiple.ejs'),_0xbfc0('0x58'));var _0x15e1ad=ejs[_0xbfc0('0x59')](_0x195818,{'networks':_0xbad4e0||[]});fs['writeFileSync']('/etc/asterisk/stun_xcally.conf',_0x15e1ad);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x5b'),{'module':_0xbfc0('0x5c')});}else if(_0x32373a[_0xbfc0('0x44')][_0xbfc0('0x54')]()==_0xbfc0('0x5d')){var _0x5d8968=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x5f')),_0xbfc0('0x58'));var _0x11eca7=ejs[_0xbfc0('0x59')](_0x5d8968,{'networks':_0xbad4e0||[]});fs[_0xbfc0('0x60')]('/etc/asterisk/turn_xcally.conf',_0x11eca7);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x5b'),{'module':'res_stun_monitor.so'});}else{var _0xae6719=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x61')),_0xbfc0('0x58'));var _0x1234a1=ejs[_0xbfc0('0x59')](_0xae6719,{'networks':_0xbad4e0||[]});fs[_0xbfc0('0x60')](util[_0xbfc0('0x62')](_0xbfc0('0x63'),_0x119629[_0xbfc0('0x53')][_0xbfc0('0x44')][_0xbfc0('0x64')]()),_0x1234a1);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x5b'),{'module':_0xbfc0('0x65')});}return null;})[_0xbfc0('0x1b')](function(){return _0x32373a;});})[_0xbfc0('0x1b')](respondWithResult(_0x173f04,0xc9))['catch'](handleError(_0x173f04,null));};exports[_0xbfc0('0x2e')]=function(_0x25a5db,_0x32afc8,_0xd090f5){var _0x425950;return db[_0xbfc0('0x51')][_0xbfc0('0x52')](function(_0x31ccce){return db['Network'][_0xbfc0('0x50')]({'where':{'id':_0x25a5db[_0xbfc0('0x4f')]['id']}})['then'](handleEntityNotFound(_0x32afc8,null))[_0xbfc0('0x1b')](saveUpdates(_0x25a5db['body'],null))[_0xbfc0('0x1b')](function(_0xcf730){if(_0xcf730){_0x425950=_0xcf730;return db[_0xbfc0('0x34')]['findAll']({'where':{'type':_0x425950[_0xbfc0('0x44')]},'raw':!![]});}return null;})[_0xbfc0('0x1b')](function(_0x3c24d9){if(_0x425950['type'][_0xbfc0('0x54')]()==_0xbfc0('0x55')){var _0x49a101=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x66')),'utf8');var _0x449ecb=ejs[_0xbfc0('0x59')](_0x49a101,{'networks':_0x3c24d9||[]});fs[_0xbfc0('0x60')]('/etc/asterisk/stun_xcally.conf',_0x449ecb);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2e'),{'module':_0xbfc0('0x5c')});}else if(_0x425950['type'][_0xbfc0('0x54')]()==_0xbfc0('0x5d')){var _0x53c721=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x5f')),'utf8');var _0x42b1fe=ejs[_0xbfc0('0x59')](_0x53c721,{'networks':_0x3c24d9||[]});fs['writeFileSync'](_0xbfc0('0x67'),_0x42b1fe);return respondWithRpcPromise('Reload',_0xbfc0('0x2e'),{'module':_0xbfc0('0x5c')});}else{var _0x3630bd=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x61')),'utf8');var _0x106c8f=ejs[_0xbfc0('0x59')](_0x3630bd,{'networks':_0x3c24d9||[]});fs[_0xbfc0('0x60')](util[_0xbfc0('0x62')]('/etc/asterisk/sip_xcally_%s.conf',_0x25a5db[_0xbfc0('0x53')][_0xbfc0('0x44')][_0xbfc0('0x64')]()),_0x106c8f);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2e'),{'module':_0xbfc0('0x65')});}return null;})[_0xbfc0('0x1b')](function(_0x46ef10){if(_0x46ef10){return _0x425950;}return null;});})[_0xbfc0('0x1b')](respondWithResult(_0x32afc8,null))[_0xbfc0('0x4d')](handleError(_0x32afc8,null));};exports['destroy']=function(_0x1f5820,_0x4dbb9c,_0x2c600a){var _0x3d44f5;return db[_0xbfc0('0x34')][_0xbfc0('0x50')]({'where':{'id':_0x1f5820[_0xbfc0('0x4f')]['id']}})['then'](function(_0x2b178c){_0x3d44f5=_0x2b178c;return _0x2b178c;})[_0xbfc0('0x1b')](handleEntityNotFound(_0x4dbb9c,null))[_0xbfc0('0x1b')](removeEntity(_0x4dbb9c,null))[_0xbfc0('0x1b')](function(){if(_0x3d44f5){return db['Network'][_0xbfc0('0x4b')]({'where':{'type':_0x3d44f5[_0xbfc0('0x44')]},'raw':!![]});}})['then'](function(_0x51376f){if(_0x3d44f5[_0xbfc0('0x44')][_0xbfc0('0x54')]()=='STUN'){var _0x17a040=fs[_0xbfc0('0x56')](path['join'](config['root'],_0xbfc0('0x66')),_0xbfc0('0x58'));var _0x144af8=ejs[_0xbfc0('0x59')](_0x17a040,{'networks':_0x51376f||[]});fs['writeFileSync'](_0xbfc0('0x68'),_0x144af8);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2f'),{'module':_0xbfc0('0x5c')});}else if(_0x3d44f5[_0xbfc0('0x44')]['toUpperCase']()==_0xbfc0('0x5d')){var _0x2b8ca8=fs[_0xbfc0('0x56')](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],_0xbfc0('0x5f')),_0xbfc0('0x58'));var _0x3f8fc7=ejs[_0xbfc0('0x59')](_0x2b8ca8,{'networks':_0x51376f||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x3f8fc7);return respondWithRpcPromise(_0xbfc0('0x5a'),'destroy',{'module':_0xbfc0('0x5c')});}else{var _0x4af7c9=fs['readFileSync'](path[_0xbfc0('0x5e')](config[_0xbfc0('0x57')],'server/files/templates/network.ejs'),_0xbfc0('0x58'));var _0x86dd21=ejs[_0xbfc0('0x59')](_0x4af7c9,{'networks':_0x51376f||[]});fs['writeFileSync'](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x1f5820['body']['type'][_0xbfc0('0x64')]()),_0x86dd21);return respondWithRpcPromise(_0xbfc0('0x5a'),_0xbfc0('0x2f'),{'module':'chan_sip.so'});}return null;})['catch'](handleError(_0x4dbb9c,null));};
\ No newline at end of file
index 3191661..ffba4db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['lodash','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./network.attributes','exports','define','Network','network'];(function(_0x1d87fc,_0x1e5321){var _0x492b56=function(_0x4c6b16){while(--_0x4c6b16){_0x1d87fc['push'](_0x1d87fc['shift']());}};_0x492b56(++_0x1e5321);}(_0x4e81,0x1bc));var _0x14e8=function(_0x476c7,_0x298ee0){_0x476c7=_0x476c7-0x0;var _0x47ae56=_0x4e81[_0x476c7];return _0x47ae56;};'use strict';var _=require(_0x14e8('0x0'));var util=require(_0x14e8('0x1'));var logger=require(_0x14e8('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x14e8('0x3'));var fs=require('fs');var path=require(_0x14e8('0x4'));var rimraf=require(_0x14e8('0x5'));var config=require(_0x14e8('0x6'));var attributes=require(_0x14e8('0x7'));module[_0x14e8('0x8')]=function(_0x56a266,_0x57c79b){return _0x56a266[_0x14e8('0x9')](_0x14e8('0xa'),attributes,{'tableName':_0x14e8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa45c=['request-promise','rimraf','exports','define','network','lodash','util','moment'];(function(_0x4f7329,_0x52b4a0){var _0x163d0e=function(_0x6f3fb6){while(--_0x6f3fb6){_0x4f7329['push'](_0x4f7329['shift']());}};_0x163d0e(++_0x52b4a0);}(_0xa45c,0x6d));var _0xca45=function(_0x56e892,_0x192ad2){_0x56e892=_0x56e892-0x0;var _0x51b574=_0xa45c[_0x56e892];return _0x51b574;};'use strict';var _=require(_0xca45('0x0'));var util=require(_0xca45('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xca45('0x2'));var BPromise=require('bluebird');var rp=require(_0xca45('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xca45('0x4'));var config=require('../../config/environment');var attributes=require('./network.attributes');module[_0xca45('0x5')]=function(_0x3803d6,_0x18d789){return _0x3803d6[_0xca45('0x6')]('Network',attributes,{'tableName':_0xca45('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cf3aa19..8ca4db1 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(_0x43189c,_0x27c5ec){_0x43189c=_0x43189c-0x0;var _0x5c3b64=_0x7a54[_0x43189c];return _0x5c3b64;};'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 _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(_0x176d81,_0x35c768){_0x176d81=_0x176d81-0x0;var _0x36427f=_0x7a54[_0x176d81];return _0x36427f;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 9f97ec3..3362029 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefad=['delete','destroy','removeAnswers','/:id/users','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelAccount.controller','isAuthenticated','index','get','/describe','describe','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','post','create','/:id/dispositions','addDisposition','addAnswer','/:id/notify','addAgents','/:id/send','send','put','update'];(function(_0x373b5b,_0x30c10e){var _0x11b33e=function(_0x485a92){while(--_0x485a92){_0x373b5b['push'](_0x373b5b['shift']());}};_0x11b33e(++_0x30c10e);}(_0xefad,0x1ce));var _0xdefa=function(_0x1cca56,_0x5e0aa0){_0x1cca56=_0x1cca56-0x0;var _0xe8ceed=_0xefad[_0x1cca56];return _0xe8ceed;};'use strict';var multer=require(_0xdefa('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdefa('0x1'));var express=require(_0xdefa('0x2'));var router=express[_0xdefa('0x3')]();var fs_extra=require(_0xdefa('0x4'));var auth=require(_0xdefa('0x5'));var interaction=require(_0xdefa('0x6'));var config=require('../../config/environment');var controller=require(_0xdefa('0x7'));router['get']('/',auth[_0xdefa('0x8')](),controller[_0xdefa('0x9')]);router[_0xdefa('0xa')](_0xdefa('0xb'),auth[_0xdefa('0x8')](),controller[_0xdefa('0xc')]);router[_0xdefa('0xa')](_0xdefa('0xd'),auth['isAuthenticated'](),controller[_0xdefa('0xe')]);router[_0xdefa('0xa')]('/:id/dispositions',auth[_0xdefa('0x8')](),controller[_0xdefa('0xf')]);router[_0xdefa('0xa')](_0xdefa('0x10'),auth['isAuthenticated'](),controller[_0xdefa('0x11')]);router[_0xdefa('0xa')](_0xdefa('0x12'),auth[_0xdefa('0x8')](),controller[_0xdefa('0x13')]);router[_0xdefa('0xa')]('/:id/interactions',auth[_0xdefa('0x8')](),controller[_0xdefa('0x14')]);router[_0xdefa('0xa')]('/:id/users',auth['isAuthenticated'](),controller['getAgents']);router[_0xdefa('0x15')]('/',auth[_0xdefa('0x8')](),controller[_0xdefa('0x16')]);router[_0xdefa('0x15')](_0xdefa('0x17'),auth[_0xdefa('0x8')](),controller[_0xdefa('0x18')]);router[_0xdefa('0x15')](_0xdefa('0x10'),auth[_0xdefa('0x8')](),controller[_0xdefa('0x19')]);router['post'](_0xdefa('0x1a'),controller['notify']);router[_0xdefa('0x15')](_0xdefa('0x12'),auth['isAuthenticated'](),controller['addApplications']);router[_0xdefa('0x15')]('/:id/users',auth['isAuthenticated'](),controller[_0xdefa('0x1b')]);router[_0xdefa('0x15')](_0xdefa('0x1c'),auth[_0xdefa('0x8')](),controller[_0xdefa('0x1d')]);router[_0xdefa('0x1e')]('/:id',auth['isAuthenticated'](),controller[_0xdefa('0x1f')]);router[_0xdefa('0x20')]('/:id',auth[_0xdefa('0x8')](),controller[_0xdefa('0x21')]);router[_0xdefa('0x20')]('/:id/dispositions',auth[_0xdefa('0x8')](),controller['removeDispositions']);router[_0xdefa('0x20')](_0xdefa('0x10'),auth[_0xdefa('0x8')](),controller[_0xdefa('0x22')]);router[_0xdefa('0x20')](_0xdefa('0x23'),auth[_0xdefa('0x8')](),controller[_0xdefa('0x24')]);module[_0xdefa('0x25')]=router;
\ No newline at end of file
+var _0xc2f9=['../../components/interaction/service','./openchannelAccount.controller','get','isAuthenticated','index','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','create','post','addDisposition','addAnswer','/:id/notify','notify','addApplications','addAgents','/:id/send','send','put','update','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x426560,_0x51a27d){var _0x4a5192=function(_0x265317){while(--_0x265317){_0x426560['push'](_0x426560['shift']());}};_0x4a5192(++_0x51a27d);}(_0xc2f9,0x1e4));var _0x9c2f=function(_0x1e8c91,_0x2a57c6){_0x1e8c91=_0x1e8c91-0x0;var _0x4d7229=_0xc2f9[_0x1e8c91];return _0x4d7229;};'use strict';var multer=require(_0x9c2f('0x0'));var util=require(_0x9c2f('0x1'));var path=require(_0x9c2f('0x2'));var timeout=require(_0x9c2f('0x3'));var express=require(_0x9c2f('0x4'));var router=express[_0x9c2f('0x5')]();var fs_extra=require(_0x9c2f('0x6'));var auth=require(_0x9c2f('0x7'));var interaction=require(_0x9c2f('0x8'));var config=require('../../config/environment');var controller=require(_0x9c2f('0x9'));router[_0x9c2f('0xa')]('/',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0xc')]);router[_0x9c2f('0xa')]('/describe',auth[_0x9c2f('0xb')](),controller['describe']);router[_0x9c2f('0xa')](_0x9c2f('0xd'),auth[_0x9c2f('0xb')](),controller['show']);router[_0x9c2f('0xa')](_0x9c2f('0xe'),auth['isAuthenticated'](),controller[_0x9c2f('0xf')]);router[_0x9c2f('0xa')](_0x9c2f('0x10'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x11')]);router[_0x9c2f('0xa')](_0x9c2f('0x12'),auth['isAuthenticated'](),controller[_0x9c2f('0x13')]);router[_0x9c2f('0xa')](_0x9c2f('0x14'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x15')]);router[_0x9c2f('0xa')](_0x9c2f('0x16'),auth['isAuthenticated'](),controller[_0x9c2f('0x17')]);router['post']('/',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x18')]);router[_0x9c2f('0x19')]('/:id/dispositions',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1a')]);router['post']('/:id/canned_answers',auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1b')]);router[_0x9c2f('0x19')](_0x9c2f('0x1c'),controller[_0x9c2f('0x1d')]);router[_0x9c2f('0x19')](_0x9c2f('0x12'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1e')]);router[_0x9c2f('0x19')](_0x9c2f('0x16'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x1f')]);router[_0x9c2f('0x19')](_0x9c2f('0x20'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x21')]);router[_0x9c2f('0x22')](_0x9c2f('0xd'),auth['isAuthenticated'](),controller[_0x9c2f('0x23')]);router[_0x9c2f('0x24')](_0x9c2f('0xd'),auth[_0x9c2f('0xb')](),controller['destroy']);router[_0x9c2f('0x24')](_0x9c2f('0xe'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x25')]);router[_0x9c2f('0x24')](_0x9c2f('0x10'),auth[_0x9c2f('0xb')](),controller[_0x9c2f('0x26')]);router['delete'](_0x9c2f('0x16'),auth['isAuthenticated'](),controller[_0x9c2f('0x27')]);module[_0x9c2f('0x28')]=router;
\ No newline at end of file
index 5e75269..e6c7828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aaa=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','exports','STRING','name','generate'];(function(_0x441a8b,_0x443d8b){var _0x23a72f=function(_0x472df4){while(--_0x472df4){_0x441a8b['push'](_0x441a8b['shift']());}};_0x23a72f(++_0x443d8b);}(_0x5aaa,0x18e));var _0xa5aa=function(_0x2b2b34,_0x202957){_0x2b2b34=_0x2b2b34-0x0;var _0x3fded2=_0x5aaa[_0x2b2b34];return _0x3fded2;};'use strict';var Sequelize=require(_0xa5aa('0x0'));var rs=require('randomstring');module[_0xa5aa('0x1')]={'name':{'type':Sequelize[_0xa5aa('0x2')],'unique':_0xa5aa('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xa5aa('0x2')]},'token':{'type':Sequelize[_0xa5aa('0x2')],'defaultValue':function(){return rs[_0xa5aa('0x4')]();}},'replyUri':{'type':Sequelize[_0xa5aa('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xa5aa('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xa5aa('0x5')],'defaultValue':function(){return _0xa5aa('0x6');}},'notificationSound':{'type':Sequelize[_0xa5aa('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa5aa('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa5aa('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xa5aa('0x2')]},'queueTransfer':{'type':Sequelize[_0xa5aa('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa5aa('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa5aa('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa5aa('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa5aa('0x8')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xa5aa('0x7')],'defaultValue':![],'comment':_0xa5aa('0x9'),'set':function(_0xc79f21){if(!_0xc79f21)this['setDataValue'](_0xa5aa('0xa'),null);this[_0xa5aa('0xb')](_0xa5aa('0xc'),_0xc79f21);}}};
\ No newline at end of file
+var _0x5d1b=['INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','randomstring','STRING','name','BOOLEAN'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x5d1b,0xe2));var _0xb5d1=function(_0x32ddd2,_0xe0f618){_0x32ddd2=_0x32ddd2-0x0;var _0x48de30=_0x5d1b[_0x32ddd2];return _0x48de30;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xb5d1('0x0'));module['exports']={'name':{'type':Sequelize[_0xb5d1('0x1')],'unique':_0xb5d1('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xb5d1('0x1')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xb5d1('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xb5d1('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb5d1('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xb5d1('0x1')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb5d1('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb5d1('0x4')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xb5d1('0x4')],'allowNull':!![],'defaultValue':null,'comment':_0xb5d1('0x5')},'mandatoryDisposition':{'type':Sequelize[_0xb5d1('0x3')],'defaultValue':![],'comment':_0xb5d1('0x6'),'set':function(_0xd61a3c){if(!_0xd61a3c)this[_0xb5d1('0x7')](_0xb5d1('0x8'),null);this[_0xb5d1('0x7')](_0xb5d1('0x9'),_0xd61a3c);}}};
\ No newline at end of file
index 0cb87ab..9ff8fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd49=['notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','account','applications','list','orderBy','priority','asc','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','messageId','interaction','created','autoclose','push','close','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','*,*,*,*','forcedOwnership','Start','startRouting','EventManager','addApplications','findAndCountAll','getApplications','nolimit','getInteractions','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','spread','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','Messages','dataValues','eml-format','rimraf','zip-dir','request-promise','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','api','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','then','request\x20sent','debug','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','undefined','count','offset','set','Content-Range','save','update','destroy','get','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','rows','show','params','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','keys','includeAll','findAll','removeDispositions','ids','CannedAnswer','removeAnswers'];(function(_0x122afc,_0x2b77e8){var _0x2041d0=function(_0x21563c){while(--_0x21563c){_0x122afc['push'](_0x122afc['shift']());}};_0x2041d0(++_0x2b77e8);}(_0xbd49,0x1c5));var _0x9bd4=function(_0xd07c86,_0x28978b){_0xd07c86=_0xd07c86-0x0;var _0x401e06=_0xbd49[_0xd07c86];return _0x401e06;};'use strict';var emlformat=require(_0x9bd4('0x0'));var rimraf=require(_0x9bd4('0x1'));var zipdir=require(_0x9bd4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9bd4('0x3'));var moment=require('moment');var BPromise=require(_0x9bd4('0x4'));var Mustache=require(_0x9bd4('0x5'));var util=require(_0x9bd4('0x6'));var path=require(_0x9bd4('0x7'));var sox=require(_0x9bd4('0x8'));var csv=require(_0x9bd4('0x9'));var ejs=require(_0x9bd4('0xa'));var fs=require('fs');var fs_extra=require(_0x9bd4('0xb'));var _=require(_0x9bd4('0xc'));var squel=require('squel');var crypto=require(_0x9bd4('0xd'));var jsforce=require(_0x9bd4('0xe'));var deskjs=require(_0x9bd4('0xf'));var toCsv=require('to-csv');var querystring=require(_0x9bd4('0x10'));var Papa=require(_0x9bd4('0x11'));var Redis=require(_0x9bd4('0x12'));var authService=require(_0x9bd4('0x13'));var qs=require(_0x9bd4('0x14'));var as=require(_0x9bd4('0x15'));var hardwareService=require(_0x9bd4('0x16'));var logger=require('../../config/logger')(_0x9bd4('0x17'));var utils=require(_0x9bd4('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x9bd4('0x19'));var db=require('../../mysqldb')['db'];config[_0x9bd4('0x1a')]=_[_0x9bd4('0x1b')](config[_0x9bd4('0x1a')],{'host':_0x9bd4('0x1c'),'port':0x18eb});var socket=require(_0x9bd4('0x1d'))(new Redis(config[_0x9bd4('0x1a')]));require('./openchannelAccount.socket')['register'](socket);var jayson=require(_0x9bd4('0x1e'));var client=jayson[_0x9bd4('0x1f')][_0x9bd4('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x9bd4('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x45d361,_0x5d6403,_0x32bdf6,_0x1d59d6){return new BPromise(function(_0x22303d,_0x1f35ea){var _0x25697a=_0x1d59d6||client;return _0x25697a['request'](_0x45d361,_0x32bdf6)[_0x9bd4('0x21')](function(_0x11f01a){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x5d6403,_0x9bd4('0x22'));logger[_0x9bd4('0x23')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x5d6403,_0x9bd4('0x22'),JSON[_0x9bd4('0x24')](_0x11f01a));if(_0x11f01a[_0x9bd4('0x25')]){if(_0x11f01a['error'][_0x9bd4('0x26')]===0x1f4){logger[_0x9bd4('0x25')](_0x9bd4('0x27'),_0x5d6403,_0x11f01a[_0x9bd4('0x25')][_0x9bd4('0x28')]);return _0x1f35ea(_0x11f01a['error']['message']);}logger[_0x9bd4('0x25')](_0x9bd4('0x27'),_0x5d6403,_0x11f01a[_0x9bd4('0x25')][_0x9bd4('0x28')]);return _0x22303d(_0x11f01a['error'][_0x9bd4('0x28')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x5d6403,_0x9bd4('0x22'));_0x22303d(_0x11f01a[_0x9bd4('0x29')][_0x9bd4('0x28')]);}})[_0x9bd4('0x2a')](function(_0x593de8){logger[_0x9bd4('0x25')](_0x9bd4('0x27'),_0x5d6403,_0x593de8);_0x1f35ea(_0x593de8);});});}function respondWithStatusCode(_0x19ba9e,_0x399d64){_0x399d64=_0x399d64||0xcc;return function(_0x5dd39c){if(_0x5dd39c){return _0x19ba9e[_0x9bd4('0x2b')](_0x399d64);}return _0x19ba9e[_0x9bd4('0x2c')](_0x399d64)[_0x9bd4('0x2d')]();};}function respondWithResult(_0x1b914b,_0x1d8522){_0x1d8522=_0x1d8522||0xc8;return function(_0x4e248e){if(_0x4e248e){return _0x1b914b[_0x9bd4('0x2c')](_0x1d8522)[_0x9bd4('0x2e')](_0x4e248e);}};}function respondWithFilteredResult(_0x1f2ba7,_0x454680){return function(_0x424d8d){if(_0x424d8d){var _0x2aa73c=typeof _0x454680['offset']===_0x9bd4('0x2f')&&typeof _0x454680['limit']===_0x9bd4('0x2f');var _0x2482cc=_0x424d8d[_0x9bd4('0x30')];var _0x7845db=_0x2aa73c?0x0:_0x454680[_0x9bd4('0x31')];var _0x46dceb=_0x2aa73c?_0x424d8d['count']:_0x454680['offset']+_0x454680['limit'];var _0x5db661;if(_0x46dceb>=_0x2482cc){_0x46dceb=_0x2482cc;_0x5db661=0xc8;}else{_0x5db661=0xce;}_0x1f2ba7['status'](_0x5db661);return _0x1f2ba7[_0x9bd4('0x32')](_0x9bd4('0x33'),_0x7845db+'-'+_0x46dceb+'/'+_0x2482cc)[_0x9bd4('0x2e')](_0x424d8d);}return null;};}function patchUpdates(_0x490eee){return function(_0x4d944c){try{jsonpatch['apply'](_0x4d944c,_0x490eee,!![]);}catch(_0x46e785){return BPromise['reject'](_0x46e785);}return _0x4d944c[_0x9bd4('0x34')]();};}function saveUpdates(_0x1c1d24,_0x388ed7){return function(_0x288b90){if(_0x288b90){return _0x288b90[_0x9bd4('0x35')](_0x1c1d24)[_0x9bd4('0x21')](function(_0x37e685){return _0x37e685;});}return null;};}function removeEntity(_0x53b4f0,_0x42436e){return function(_0x5f12a1){if(_0x5f12a1){return _0x5f12a1[_0x9bd4('0x36')]()[_0x9bd4('0x21')](function(){var _0x22ab9e=_0x5f12a1[_0x9bd4('0x37')]({'plain':!![]});var _0x20c344=_0x9bd4('0x38');return db['UserProfileResource'][_0x9bd4('0x36')]({'where':{'type':_0x20c344,'resourceId':_0x22ab9e['id']}})[_0x9bd4('0x21')](function(){return _0x5f12a1;});})[_0x9bd4('0x21')](function(){_0x53b4f0[_0x9bd4('0x2c')](0xcc)[_0x9bd4('0x2d')]();});}};}function handleEntityNotFound(_0x2bdb1e,_0x4bed04){return function(_0x3744bf){if(!_0x3744bf){_0x2bdb1e['sendStatus'](0x194);}return _0x3744bf;};}function handleError(_0x3de477,_0x42b100){_0x42b100=_0x42b100||0x1f4;return function(_0x1728f6){logger[_0x9bd4('0x25')](_0x1728f6[_0x9bd4('0x39')]);if(_0x1728f6[_0x9bd4('0x3a')]){delete _0x1728f6['name'];}_0x3de477[_0x9bd4('0x2c')](_0x42b100)[_0x9bd4('0x3b')](_0x1728f6);};}exports[_0x9bd4('0x3c')]=function(_0x3610f0,_0x16f736){var _0x2214d5={'include':[{'model':db[_0x9bd4('0x3d')],'as':_0x9bd4('0x3e')}]},_0x19ec02={},_0x312720={'count':0x0,'rows':[]};var _0x39e22c=_[_0x9bd4('0x3f')](db[_0x9bd4('0x40')][_0x9bd4('0x41')],function(_0x46c6c9){return{'name':_0x46c6c9[_0x9bd4('0x42')],'type':_0x46c6c9['type'][_0x9bd4('0x43')]};});_0x19ec02[_0x9bd4('0x44')]=_[_0x9bd4('0x3f')](_0x39e22c,'name');_0x19ec02[_0x9bd4('0x45')]=_['keys'](_0x3610f0[_0x9bd4('0x45')]);_0x19ec02[_0x9bd4('0x46')]=_[_0x9bd4('0x47')](_0x19ec02[_0x9bd4('0x44')],_0x19ec02[_0x9bd4('0x45')]);_0x2214d5[_0x9bd4('0x48')]=_[_0x9bd4('0x47')](_0x19ec02['model'],qs[_0x9bd4('0x49')](_0x3610f0['query']['fields']));_0x2214d5['attributes']=_0x2214d5[_0x9bd4('0x48')][_0x9bd4('0x4a')]?_0x2214d5['attributes']:_0x19ec02[_0x9bd4('0x44')];if(!_0x3610f0['query'][_0x9bd4('0x4b')]('nolimit')){_0x2214d5['limit']=qs[_0x9bd4('0x4c')](_0x3610f0['query'][_0x9bd4('0x4c')]);_0x2214d5[_0x9bd4('0x31')]=qs[_0x9bd4('0x31')](_0x3610f0[_0x9bd4('0x45')]['offset']);}_0x2214d5[_0x9bd4('0x4d')]=qs['sort'](_0x3610f0[_0x9bd4('0x45')][_0x9bd4('0x4e')]);_0x2214d5[_0x9bd4('0x4f')]=qs[_0x9bd4('0x46')](_[_0x9bd4('0x50')](_0x3610f0[_0x9bd4('0x45')],_0x19ec02[_0x9bd4('0x46')]),_0x39e22c);if(_0x3610f0[_0x9bd4('0x45')][_0x9bd4('0x51')]){_0x2214d5[_0x9bd4('0x4f')]=_['merge'](_0x2214d5[_0x9bd4('0x4f')],{'$or':_[_0x9bd4('0x3f')](_0x39e22c,function(_0xad7a0){if(_0xad7a0['type']!==_0x9bd4('0x52')){var _0x2dd431={};_0x2dd431[_0xad7a0['name']]={'$like':'%'+_0x3610f0[_0x9bd4('0x45')][_0x9bd4('0x51')]+'%'};return _0x2dd431;}})});}_0x2214d5=_[_0x9bd4('0x53')]({},_0x2214d5,_0x3610f0[_0x9bd4('0x54')]);var _0x7aca8d={'where':_0x2214d5[_0x9bd4('0x4f')]};return db[_0x9bd4('0x40')][_0x9bd4('0x30')](_0x7aca8d)[_0x9bd4('0x21')](function(_0xf36d7a){_0x312720[_0x9bd4('0x30')]=_0xf36d7a;if(_0x3610f0[_0x9bd4('0x45')]['includeAll']){_0x2214d5[_0x9bd4('0x55')]=[{'all':!![]}];}return db[_0x9bd4('0x40')]['findAll'](_0x2214d5);})['then'](function(_0x4a5e45){_0x312720[_0x9bd4('0x56')]=_0x4a5e45;return _0x312720;})[_0x9bd4('0x21')](respondWithFilteredResult(_0x16f736,_0x2214d5))[_0x9bd4('0x2a')](handleError(_0x16f736,null));};exports[_0x9bd4('0x57')]=function(_0x150ab1,_0x9861e3){var _0x2321b5={'raw':![],'where':{'id':_0x150ab1[_0x9bd4('0x58')]['id']},'include':[{'model':db[_0x9bd4('0x3d')],'as':_0x9bd4('0x3e')}]},_0x4f9afd={};_0x4f9afd[_0x9bd4('0x44')]=_['keys'](db[_0x9bd4('0x40')][_0x9bd4('0x41')]);_0x4f9afd[_0x9bd4('0x45')]=_['keys'](_0x150ab1[_0x9bd4('0x45')]);_0x4f9afd[_0x9bd4('0x46')]=_[_0x9bd4('0x47')](_0x4f9afd['model'],_0x4f9afd[_0x9bd4('0x45')]);_0x2321b5[_0x9bd4('0x48')]=_[_0x9bd4('0x47')](_0x4f9afd[_0x9bd4('0x44')],qs[_0x9bd4('0x49')](_0x150ab1[_0x9bd4('0x45')][_0x9bd4('0x49')]));_0x2321b5['attributes']=_0x2321b5['attributes']['length']?_0x2321b5['attributes']:_0x4f9afd[_0x9bd4('0x44')];if(_0x150ab1[_0x9bd4('0x45')]['includeAll']){_0x2321b5[_0x9bd4('0x55')]=[{'all':!![]}];}_0x2321b5=_[_0x9bd4('0x53')]({},_0x2321b5,_0x150ab1['options']);return db['OpenchannelAccount']['find'](_0x2321b5)[_0x9bd4('0x21')](handleEntityNotFound(_0x9861e3,null))[_0x9bd4('0x21')](respondWithResult(_0x9861e3,null))[_0x9bd4('0x2a')](handleError(_0x9861e3,null));};exports[_0x9bd4('0x59')]=function(_0x42e4ba,_0x1732b5){return db[_0x9bd4('0x40')][_0x9bd4('0x59')](_0x42e4ba[_0x9bd4('0x5a')],{})[_0x9bd4('0x21')](function(_0x1a7433){var _0x5675b1=_0x42e4ba['user']['get']({'plain':!![]});if(!_0x5675b1)throw new Error(_0x9bd4('0x5b'));if(_0x5675b1[_0x9bd4('0x5c')]===_0x9bd4('0x5d')){var _0x2f4092=_0x1a7433[_0x9bd4('0x37')]({'plain':!![]});var _0x558287=_0x9bd4('0x38');return db['UserProfileSection']['find']({'where':{'name':_0x558287,'userProfileId':_0x5675b1[_0x9bd4('0x5e')]},'raw':!![]})['then'](function(_0x194aac){if(_0x194aac&&_0x194aac['autoAssociation']===0x0){return db[_0x9bd4('0x5f')][_0x9bd4('0x59')]({'name':_0x2f4092[_0x9bd4('0x3a')],'resourceId':_0x2f4092['id'],'type':_0x194aac[_0x9bd4('0x3a')],'sectionId':_0x194aac['id']},{})[_0x9bd4('0x21')](function(){return _0x1a7433;});}else{return _0x1a7433;}})[_0x9bd4('0x2a')](function(_0x40a79f){logger[_0x9bd4('0x25')](_0x9bd4('0x60'),_0x40a79f);throw _0x40a79f;});}return _0x1a7433;})[_0x9bd4('0x21')](respondWithResult(_0x1732b5,0xc9))[_0x9bd4('0x2a')](handleError(_0x1732b5,null));};exports[_0x9bd4('0x35')]=function(_0x4f6132,_0x18e46b){if(_0x4f6132[_0x9bd4('0x5a')]['id']){delete _0x4f6132[_0x9bd4('0x5a')]['id'];}return db['OpenchannelAccount'][_0x9bd4('0x61')]({'where':{'id':_0x4f6132[_0x9bd4('0x58')]['id']},'include':[{'model':db[_0x9bd4('0x3d')],'as':'mandatoryDispositionPause'}]})[_0x9bd4('0x21')](handleEntityNotFound(_0x18e46b,null))[_0x9bd4('0x21')](saveUpdates(_0x4f6132['body'],null))[_0x9bd4('0x21')](respondWithResult(_0x18e46b,null))['catch'](handleError(_0x18e46b,null));};exports['destroy']=function(_0x42245c,_0x54c32c){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x42245c[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x54c32c,null))[_0x9bd4('0x21')](removeEntity(_0x54c32c,null))[_0x9bd4('0x2a')](handleError(_0x54c32c,null));};exports[_0x9bd4('0x62')]=function(_0x2421ff,_0x16e715){return db['OpenchannelAccount'][_0x9bd4('0x62')]()[_0x9bd4('0x21')](respondWithResult(_0x16e715,null))[_0x9bd4('0x2a')](handleError(_0x16e715,null));};exports[_0x9bd4('0x63')]=function(_0x272f0c,_0x598a1a,_0x580aed){if(_0x272f0c['body']['id']){delete _0x272f0c['body']['id'];}return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x272f0c[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x598a1a,null))['then'](function(_0x19df7e){if(_0x19df7e){_0x272f0c['body'][_0x9bd4('0x64')]=_0x19df7e['id'];return db[_0x9bd4('0x65')][_0x9bd4('0x59')](_0x272f0c['body']);}})[_0x9bd4('0x21')](respondWithResult(_0x598a1a,null))[_0x9bd4('0x2a')](handleError(_0x598a1a,null));};exports[_0x9bd4('0x66')]=function(_0x2e40b7,_0x63b9e3,_0x16a31b){var _0xffcacf={'raw':![],'where':{}};var _0x2bc317={};var _0x25684c={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x9bd4('0x67')]({'where':{'id':_0x2e40b7[_0x9bd4('0x58')]['id']}})['then'](handleEntityNotFound(_0x63b9e3,null))[_0x9bd4('0x21')](function(_0x22eb21){if(_0x22eb21){_0x2bc317[_0x9bd4('0x44')]=_[_0x9bd4('0x68')](db[_0x9bd4('0x65')]['rawAttributes']);_0x2bc317['query']=_[_0x9bd4('0x68')](_0x2e40b7[_0x9bd4('0x45')]);_0x2bc317[_0x9bd4('0x46')]=_['intersection'](_0x2bc317['model'],_0x2bc317[_0x9bd4('0x45')]);_0xffcacf[_0x9bd4('0x48')]=_[_0x9bd4('0x47')](_0x2bc317['model'],qs[_0x9bd4('0x49')](_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x49')]));_0xffcacf[_0x9bd4('0x48')]=_0xffcacf[_0x9bd4('0x48')][_0x9bd4('0x4a')]?_0xffcacf[_0x9bd4('0x48')]:_0x2bc317[_0x9bd4('0x44')];if(!_0x2e40b7['query'][_0x9bd4('0x4b')]('nolimit')){_0xffcacf[_0x9bd4('0x4c')]=qs[_0x9bd4('0x4c')](_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x4c')]);_0xffcacf[_0x9bd4('0x31')]=qs[_0x9bd4('0x31')](_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x31')]);}_0xffcacf['order']=qs[_0x9bd4('0x4e')](_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x4e')]);_0xffcacf[_0x9bd4('0x4f')]=qs[_0x9bd4('0x46')](_['pick'](_0x2e40b7[_0x9bd4('0x45')],_0x2bc317[_0x9bd4('0x46')]));_0xffcacf['where'][_0x9bd4('0x64')]=_0x22eb21['id'];if(_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x51')]){_0xffcacf[_0x9bd4('0x4f')]=_[_0x9bd4('0x53')](_0xffcacf[_0x9bd4('0x4f')],{'$or':_[_0x9bd4('0x3f')](_0xffcacf[_0x9bd4('0x48')],function(_0x27c212){var _0x47833e={};_0x47833e[_0x27c212]={'$like':'%'+_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x51')]+'%'};return _0x47833e;})});}_0xffcacf=_[_0x9bd4('0x53')]({},_0xffcacf,_0x2e40b7[_0x9bd4('0x54')]);return db[_0x9bd4('0x65')]['count']({'where':_0xffcacf[_0x9bd4('0x4f')]})[_0x9bd4('0x21')](function(_0x24c113){_0x25684c[_0x9bd4('0x30')]=_0x24c113;if(_0x2e40b7[_0x9bd4('0x45')][_0x9bd4('0x69')]){_0xffcacf[_0x9bd4('0x55')]=[{'all':!![]}];}return db[_0x9bd4('0x65')][_0x9bd4('0x6a')](_0xffcacf);})[_0x9bd4('0x21')](function(_0x5e49db){_0x25684c[_0x9bd4('0x56')]=_0x5e49db;return _0x25684c;});}})[_0x9bd4('0x21')](respondWithFilteredResult(_0x63b9e3,_0xffcacf))[_0x9bd4('0x2a')](handleError(_0x63b9e3,null));};exports[_0x9bd4('0x6b')]=function(_0x3d237b,_0x537953,_0x4e4f99){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x3d237b['params']['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x537953,null))[_0x9bd4('0x21')](function(_0x435ce4){if(_0x435ce4){return _0x435ce4['removeDispositions'](_0x3d237b['query'][_0x9bd4('0x6c')]);}})[_0x9bd4('0x21')](respondWithStatusCode(_0x537953,null))['catch'](handleError(_0x537953,null));};exports['addAnswer']=function(_0xbf44fa,_0x3eefd7,_0x3aac22){if(_0xbf44fa[_0x9bd4('0x5a')]['id']){delete _0xbf44fa[_0x9bd4('0x5a')]['id'];}return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0xbf44fa[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x3eefd7,null))[_0x9bd4('0x21')](function(_0x22efd8){if(_0x22efd8){_0xbf44fa[_0x9bd4('0x5a')]['OpenchannelAccountId']=_0x22efd8['id'];return db[_0x9bd4('0x6d')]['create'](_0xbf44fa[_0x9bd4('0x5a')]);}})['then'](respondWithResult(_0x3eefd7,null))[_0x9bd4('0x2a')](handleError(_0x3eefd7,null));};exports['getAnswers']=function(_0xa75bf3,_0x3e501c,_0x282fe8){var _0x26cfc9={'raw':![],'where':{}};var _0x5b164b={};var _0x5230c7={'count':0x0,'rows':[]};return db[_0x9bd4('0x40')]['findOne']({'where':{'id':_0xa75bf3[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x3e501c,null))['then'](function(_0x206f81){if(_0x206f81){_0x5b164b['model']=_[_0x9bd4('0x68')](db['CannedAnswer']['rawAttributes']);_0x5b164b['query']=_[_0x9bd4('0x68')](_0xa75bf3[_0x9bd4('0x45')]);_0x5b164b['filters']=_['intersection'](_0x5b164b['model'],_0x5b164b['query']);_0x26cfc9[_0x9bd4('0x48')]=_['intersection'](_0x5b164b['model'],qs['fields'](_0xa75bf3['query']['fields']));_0x26cfc9[_0x9bd4('0x48')]=_0x26cfc9[_0x9bd4('0x48')][_0x9bd4('0x4a')]?_0x26cfc9[_0x9bd4('0x48')]:_0x5b164b[_0x9bd4('0x44')];if(!_0xa75bf3[_0x9bd4('0x45')][_0x9bd4('0x4b')]('nolimit')){_0x26cfc9[_0x9bd4('0x4c')]=qs[_0x9bd4('0x4c')](_0xa75bf3[_0x9bd4('0x45')][_0x9bd4('0x4c')]);_0x26cfc9[_0x9bd4('0x31')]=qs[_0x9bd4('0x31')](_0xa75bf3[_0x9bd4('0x45')][_0x9bd4('0x31')]);}_0x26cfc9[_0x9bd4('0x4d')]=qs[_0x9bd4('0x4e')](_0xa75bf3[_0x9bd4('0x45')][_0x9bd4('0x4e')]);_0x26cfc9[_0x9bd4('0x4f')]=qs['filters'](_[_0x9bd4('0x50')](_0xa75bf3[_0x9bd4('0x45')],_0x5b164b[_0x9bd4('0x46')]));_0x26cfc9[_0x9bd4('0x4f')][_0x9bd4('0x64')]=_0x206f81['id'];if(_0xa75bf3[_0x9bd4('0x45')][_0x9bd4('0x51')]){_0x26cfc9[_0x9bd4('0x4f')]=_[_0x9bd4('0x53')](_0x26cfc9[_0x9bd4('0x4f')],{'$or':_['map'](_0x26cfc9['attributes'],function(_0x34e0e4){var _0x18f82c={};_0x18f82c[_0x34e0e4]={'$like':'%'+_0xa75bf3[_0x9bd4('0x45')][_0x9bd4('0x51')]+'%'};return _0x18f82c;})});}_0x26cfc9=_[_0x9bd4('0x53')]({},_0x26cfc9,_0xa75bf3[_0x9bd4('0x54')]);return db[_0x9bd4('0x6d')][_0x9bd4('0x30')]({'where':_0x26cfc9[_0x9bd4('0x4f')]})[_0x9bd4('0x21')](function(_0x4c74bb){_0x5230c7[_0x9bd4('0x30')]=_0x4c74bb;if(_0xa75bf3['query'][_0x9bd4('0x69')]){_0x26cfc9[_0x9bd4('0x55')]=[{'all':!![]}];}return db[_0x9bd4('0x6d')][_0x9bd4('0x6a')](_0x26cfc9);})[_0x9bd4('0x21')](function(_0x370a31){_0x5230c7['rows']=_0x370a31;return _0x5230c7;});}})[_0x9bd4('0x21')](respondWithFilteredResult(_0x3e501c,_0x26cfc9))[_0x9bd4('0x2a')](handleError(_0x3e501c,null));};exports[_0x9bd4('0x6e')]=function(_0x3119c5,_0x3c5e30,_0x42cdb2){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x3119c5[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x3c5e30,null))[_0x9bd4('0x21')](function(_0x2ee4d6){if(_0x2ee4d6){return _0x2ee4d6[_0x9bd4('0x6e')](_0x3119c5[_0x9bd4('0x45')][_0x9bd4('0x6c')]);}})[_0x9bd4('0x21')](respondWithStatusCode(_0x3c5e30,null))[_0x9bd4('0x2a')](handleError(_0x3c5e30,null));};exports[_0x9bd4('0x6f')]=function(_0x24fcab,_0x2f83c0,_0x57f01a){var _0x59cf13={'body':_0x24fcab[_0x9bd4('0x5a')],'channel':_0x9bd4('0x70')};var _0x522fd2=[];var _0x514d4e=[];var _0x3484f5={};var _0x6ac05f=![];return db[_0x9bd4('0x71')]['describe']()[_0x9bd4('0x21')](function(_0x27caa8){if(!_0x27caa8){throw new db[(_0x9bd4('0x72'))][(_0x9bd4('0x73'))](_0x9bd4('0x74'));}_0x522fd2=_[_0x9bd4('0x75')](_['keys'](_0x27caa8),[_0x9bd4('0x76'),'updatedAt']);_0x514d4e=_[_0x9bd4('0x75')](_[_0x9bd4('0x68')](_0x27caa8),[_0x9bd4('0x76'),_0x9bd4('0x77'),_0x9bd4('0x78'),_0x9bd4('0x79')]);if(_0x24fcab['body']['id']){delete _0x24fcab[_0x9bd4('0x5a')]['id'];}if(_[_0x9bd4('0x7a')](_0x24fcab['body'][_0x9bd4('0x7b')])){throw new db[(_0x9bd4('0x72'))][(_0x9bd4('0x73'))](_0x9bd4('0x7c'));}if(_[_0x9bd4('0x7a')](_0x24fcab[_0x9bd4('0x5a')]['body'])||_0x24fcab[_0x9bd4('0x5a')]['body']===''){throw new db[(_0x9bd4('0x72'))][(_0x9bd4('0x73'))](_0x9bd4('0x7d'));}if(_['isNil'](_0x24fcab['body'][_0x9bd4('0x7e')])){throw new db[(_0x9bd4('0x72'))][(_0x9bd4('0x73'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x514d4e);}if(!_[_0x9bd4('0x7f')](_0x514d4e,_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x7e')])){throw new db[(_0x9bd4('0x72'))][(_0x9bd4('0x73'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x514d4e);}_0x3484f5[_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x7e')]]=_0x24fcab[_0x9bd4('0x5a')]['from'];})[_0x9bd4('0x21')](function(){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x24fcab[_0x9bd4('0x58')]['id']},'include':[{'model':db[_0x9bd4('0x80')],'as':_0x9bd4('0x81'),'include':[{'model':db[_0x9bd4('0x71')],'as':_0x9bd4('0x82'),'where':_0x3484f5,'limit':0x1,'order':[[_0x9bd4('0x77'),_0x9bd4('0x83')]]}]},{'model':db[_0x9bd4('0x84')],'as':_0x9bd4('0x85')}]});})[_0x9bd4('0x21')](handleEntityNotFound(_0x2f83c0,null))[_0x9bd4('0x21')](function(_0x2c6a18){if(_0x2c6a18&&_0x2c6a18[_0x9bd4('0x81')]){_0x59cf13[_0x9bd4('0x86')]=_0x2c6a18;_0x59cf13[_0x9bd4('0x87')]=_0x2c6a18[_0x9bd4('0x85')];_0x59cf13[_0x9bd4('0x88')]=_0x2c6a18[_0x9bd4('0x81')];_0x59cf13[_0x9bd4('0x87')]=_[_0x9bd4('0x89')](_0x59cf13['applications'],[_0x9bd4('0x8a')],[_0x9bd4('0x8b')]);if(_0x59cf13[_0x9bd4('0x86')]['Applications']){delete _0x59cf13[_0x9bd4('0x86')][_0x9bd4('0x85')];}if(_0x59cf13[_0x9bd4('0x86')][_0x9bd4('0x81')]&&_0x59cf13[_0x9bd4('0x86')][_0x9bd4('0x81')][_0x9bd4('0x82')][_0x9bd4('0x4a')]){return _0x59cf13[_0x9bd4('0x86')][_0x9bd4('0x81')]['Contacts'][0x0];}var _0x369dda=_[_0x9bd4('0x1b')](_0x24fcab['body'],{'firstName':_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x7b')],'ListId':_0x2c6a18[_0x9bd4('0x79')]});_0x369dda[_0x24fcab['body'][_0x9bd4('0x7e')]]=_0x24fcab['body'][_0x9bd4('0x7b')];return db[_0x9bd4('0x71')][_0x9bd4('0x59')](_0x369dda,{'fields':_0x522fd2,'raw':!![]});}})[_0x9bd4('0x21')](handleEntityNotFound(_0x2f83c0,null))[_0x9bd4('0x21')](function(_0x5a6265){_0x59cf13[_0x9bd4('0x8c')]=_0x5a6265;if(_0x5a6265){var _0x3255f8={'ContactId':_0x5a6265['id'],'OpenchannelAccountId':_0x24fcab[_0x9bd4('0x58')]['id'],'from':(_0x5a6265[_0x9bd4('0x8d')]||'')+'\x20'+(_0x5a6265[_0x9bd4('0x8e')]||'')};var _0x37982c={'OpenchannelAccountId':_0x24fcab[_0x9bd4('0x58')]['id'],'closed':![]};if(_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x8f')]){_0x37982c[_0x9bd4('0x8f')]=_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x8f')];return db['OpenchannelInteraction'][_0x9bd4('0x61')]({'where':_0x37982c})[_0x9bd4('0x21')](function(_0x24d615){if(_0x24d615){return[_0x24d615,![]];}_0x3255f8[_0x9bd4('0x8f')]=_0x24fcab[_0x9bd4('0x5a')]['threadId'];_0x3255f8[_0x9bd4('0x90')]=_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x90')];return db[_0x9bd4('0x91')][_0x9bd4('0x59')](_0x3255f8)[_0x9bd4('0x21')](function(_0x143901){return[_0x143901,!![]];});});}else{_0x37982c[_0x9bd4('0x8f')]=null;}_0x37982c[_0x9bd4('0x92')]=_0x5a6265['id'];return db['OpenchannelInteraction']['find']({'where':_0x37982c})[_0x9bd4('0x21')](function(_0x3721de){if(_0x3721de){return[_0x3721de,![]];}return db['OpenchannelInteraction'][_0x9bd4('0x59')](_0x3255f8)[_0x9bd4('0x21')](function(_0xe394bd){return[_0xe394bd,!![]];});});}})['spread'](function(_0xb88b3f,_0x1a0493){if(_0xb88b3f){_0x6ac05f=_0x1a0493;if(!_0x1a0493){var _0x8d668e={'from':(_0x59cf13['contact'][_0x9bd4('0x8d')]||'')+'\x20'+(_0x59cf13['contact'][_0x9bd4('0x8e')]||'')};if(_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x8f')]&&_0x24fcab[_0x9bd4('0x5a')]['messageId']&&_0x24fcab[_0x9bd4('0x5a')]['threadId']!=_0x24fcab[_0x9bd4('0x5a')]['messageId']){_0x8d668e[_0x9bd4('0x8f')]=_0x24fcab[_0x9bd4('0x5a')][_0x9bd4('0x93')];}return _0xb88b3f[_0x9bd4('0x35')](_0x8d668e);}else{return _0xb88b3f;}}})[_0x9bd4('0x21')](function(_0x33a785){_0x59cf13[_0x9bd4('0x94')]=_0x33a785[_0x9bd4('0x37')]({'plain':!![]});_0x59cf13[_0x9bd4('0x94')][_0x9bd4('0x95')]=_0x6ac05f;if(_0x59cf13[_0x9bd4('0x94')][_0x9bd4('0x95')]){if(_0x59cf13[_0x9bd4('0x86')][_0x9bd4('0x96')]){_0x59cf13[_0x9bd4('0x87')][_0x9bd4('0x97')]({'id':0x0,'priority':_0x59cf13['applications']['length']+0x1,'app':_0x9bd4('0x98'),'appdata':'unmanaged','interval':'*,*,*,*'});}}return db[_0x9bd4('0x99')][_0x9bd4('0x59')]({'body':_0x24fcab['body'][_0x9bd4('0x5a')],'OpenchannelAccountId':_0x24fcab[_0x9bd4('0x58')]['id'],'OpenchannelInteractionId':_0x33a785['id'],'direction':'in','ContactId':_0x59cf13[_0x9bd4('0x8c')]['id'],'AttachmentId':_0x24fcab['body'][_0x9bd4('0x9a')]});})[_0x9bd4('0x21')](function(_0x4c0795){_0x59cf13['message']=_0x4c0795;if(_0x59cf13[_0x9bd4('0x94')][_0x9bd4('0x9b')]){return db[_0x9bd4('0x9c')][_0x9bd4('0x61')]({'attributes':['id',_0x9bd4('0x3a')],'where':{'id':_0x59cf13[_0x9bd4('0x94')][_0x9bd4('0x9b')]}})['then'](function(_0x171861){if(_0x171861){_0x59cf13['applications'][_0x9bd4('0x9d')]({'id':0x0,'priority':0x0,'app':_0x9bd4('0x9e'),'appdata':_0x171861['name']+','+(_0x59cf13['account'][_0x9bd4('0x9f')]||0xa),'interval':_0x9bd4('0xa0')});_0x59cf13[_0x9bd4('0xa1')]=![];}return respondWithRpcPromise(_0x9bd4('0xa2'),'startRouting',_0x59cf13);});}return respondWithRpcPromise(_0x9bd4('0xa2'),_0x9bd4('0xa3'),_0x59cf13);})[_0x9bd4('0x21')](function(_0x373825){respondWithRpcPromise('EventManager',_0x9bd4('0xa4'),{'event':_0x9bd4('0x6f'),'message':_0x373825},client9002);return _0x373825;})[_0x9bd4('0x21')](respondWithResult(_0x2f83c0,null))[_0x9bd4('0x2a')](handleError(_0x2f83c0,null));};exports[_0x9bd4('0xa5')]=function(_0x87779c,_0x6230ae,_0x3cd4d4){return db[_0x9bd4('0x40')][_0x9bd4('0x67')]({'where':{'id':_0x87779c[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x6230ae,null))[_0x9bd4('0x21')](function(_0x20da7e){if(_0x20da7e){return db['sequelize']['transaction'](function(_0x13b93d){return db[_0x9bd4('0x84')][_0x9bd4('0x36')]({'where':{'OpenchannelAccountId':_0x87779c[_0x9bd4('0x58')]['id']},'transaction':_0x13b93d})['then'](function(_0x1489bc){var _0x5e1999=_[_0x9bd4('0x3f')](_0x87779c[_0x9bd4('0x5a')],function(_0x2ba17c){_0x2ba17c['OpenchannelAccountId']=_0x87779c[_0x9bd4('0x58')]['id'];return _0x2ba17c;});return db['OpenchannelApplication']['bulkCreate'](_0x5e1999,{'transaction':_0x13b93d});});})['then'](function(){return db[_0x9bd4('0x84')][_0x9bd4('0xa6')]({'where':{'OpenchannelAccountId':_0x87779c[_0x9bd4('0x58')]['id']},'order':_0x9bd4('0x8a')});});}})['then'](respondWithResult(_0x6230ae,null))[_0x9bd4('0x2a')](handleError(_0x6230ae,null));};exports[_0x9bd4('0xa7')]=function(_0xe0c18b,_0xf6a2f6,_0x4805a6){var _0x66c46d={};var _0x4d66c1={};var _0x2523e9;var _0x16e46f;return db[_0x9bd4('0x40')][_0x9bd4('0x67')]({'where':{'id':_0xe0c18b[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0xf6a2f6,null))[_0x9bd4('0x21')](function(_0x51b5ee){if(_0x51b5ee){_0x2523e9=_0x51b5ee;_0x4d66c1[_0x9bd4('0x44')]=_['keys'](db['OpenchannelApplication'][_0x9bd4('0x41')]);_0x4d66c1[_0x9bd4('0x45')]=_[_0x9bd4('0x68')](_0xe0c18b[_0x9bd4('0x45')]);_0x4d66c1[_0x9bd4('0x46')]=_[_0x9bd4('0x47')](_0x4d66c1['model'],_0x4d66c1['query']);_0x66c46d['attributes']=_['intersection'](_0x4d66c1[_0x9bd4('0x44')],qs[_0x9bd4('0x49')](_0xe0c18b[_0x9bd4('0x45')][_0x9bd4('0x49')]));_0x66c46d[_0x9bd4('0x48')]=_0x66c46d[_0x9bd4('0x48')][_0x9bd4('0x4a')]?_0x66c46d[_0x9bd4('0x48')]:_0x4d66c1[_0x9bd4('0x44')];_0x66c46d[_0x9bd4('0x4d')]=qs[_0x9bd4('0x4e')](_0xe0c18b[_0x9bd4('0x45')]['sort']);_0x66c46d['where']=qs[_0x9bd4('0x46')](_['pick'](_0xe0c18b[_0x9bd4('0x45')],_0x4d66c1['filters']));if(_0xe0c18b['query'][_0x9bd4('0x51')]){_0x66c46d[_0x9bd4('0x4f')]=_[_0x9bd4('0x53')](_0x66c46d['where'],{'$or':_[_0x9bd4('0x3f')](_0x66c46d[_0x9bd4('0x48')],function(_0xee416a){var _0x28f017={};_0x28f017[_0xee416a]={'$like':'%'+_0xe0c18b[_0x9bd4('0x45')][_0x9bd4('0x51')]+'%'};return _0x28f017;})});}_0x66c46d=_[_0x9bd4('0x53')]({},_0x66c46d,_0xe0c18b['options']);return _0x2523e9[_0x9bd4('0xa7')](_0x66c46d);}})[_0x9bd4('0x21')](function(_0x109fd6){if(_0x109fd6){_0x16e46f=_0x109fd6[_0x9bd4('0x4a')];if(!_0xe0c18b[_0x9bd4('0x45')]['hasOwnProperty'](_0x9bd4('0xa8'))){_0x66c46d[_0x9bd4('0x4c')]=qs[_0x9bd4('0x4c')](_0xe0c18b[_0x9bd4('0x45')][_0x9bd4('0x4c')]);_0x66c46d[_0x9bd4('0x31')]=qs[_0x9bd4('0x31')](_0xe0c18b[_0x9bd4('0x45')][_0x9bd4('0x31')]);}return _0x2523e9[_0x9bd4('0xa7')](_0x66c46d);}})['then'](function(_0x11f607){if(_0x11f607){return _0x11f607?{'count':_0x16e46f,'rows':_0x11f607}:null;}})[_0x9bd4('0x21')](respondWithResult(_0xf6a2f6,null))[_0x9bd4('0x2a')](handleError(_0xf6a2f6,null));};exports[_0x9bd4('0xa9')]=function(_0x162b3c,_0x4b29dd,_0x5e72c9){var _0x8094d2={'raw':![],'where':{}};var _0x43f2b8={};var _0x3371eb={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x9bd4('0x67')]({'where':{'id':_0x162b3c[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x4b29dd,null))['then'](function(_0x390dae){if(_0x390dae){_0x43f2b8['model']=_[_0x9bd4('0x68')](db[_0x9bd4('0x91')]['rawAttributes']);_0x43f2b8[_0x9bd4('0x45')]=_['keys'](_0x162b3c[_0x9bd4('0x45')]);_0x43f2b8['filters']=_[_0x9bd4('0x47')](_0x43f2b8[_0x9bd4('0x44')],_0x43f2b8[_0x9bd4('0x45')]);_0x8094d2[_0x9bd4('0x48')]=_[_0x9bd4('0x47')](_0x43f2b8['model'],qs[_0x9bd4('0x49')](_0x162b3c['query'][_0x9bd4('0x49')]));_0x8094d2[_0x9bd4('0x48')]=_0x8094d2[_0x9bd4('0x48')]['length']?_0x8094d2['attributes']:_0x43f2b8[_0x9bd4('0x44')];if(!_0x162b3c[_0x9bd4('0x45')][_0x9bd4('0x4b')](_0x9bd4('0xa8'))){_0x8094d2[_0x9bd4('0x4c')]=qs['limit'](_0x162b3c[_0x9bd4('0x45')]['limit']);_0x8094d2[_0x9bd4('0x31')]=qs[_0x9bd4('0x31')](_0x162b3c[_0x9bd4('0x45')][_0x9bd4('0x31')]);}_0x8094d2['order']=qs['sort'](_0x162b3c['query'][_0x9bd4('0x4e')]);_0x8094d2[_0x9bd4('0x4f')]=qs[_0x9bd4('0x46')](_['pick'](_0x162b3c[_0x9bd4('0x45')],_0x43f2b8[_0x9bd4('0x46')]));_0x8094d2['where'][_0x9bd4('0x64')]=_0x390dae['id'];if(_0x162b3c[_0x9bd4('0x45')][_0x9bd4('0x51')]){_0x8094d2[_0x9bd4('0x4f')]=_['merge'](_0x8094d2[_0x9bd4('0x4f')],{'$or':_['map'](_0x8094d2[_0x9bd4('0x48')],function(_0x6cd5b7){var _0x287e34={};_0x287e34[_0x6cd5b7]={'$like':'%'+_0x162b3c['query'][_0x9bd4('0x51')]+'%'};return _0x287e34;})});}_0x8094d2=_[_0x9bd4('0x53')]({},_0x8094d2,_0x162b3c[_0x9bd4('0x54')]);return db[_0x9bd4('0x91')][_0x9bd4('0x30')]({'where':_0x8094d2[_0x9bd4('0x4f')]})[_0x9bd4('0x21')](function(_0x23f3fe){_0x3371eb[_0x9bd4('0x30')]=_0x23f3fe;if(_0x162b3c['query'][_0x9bd4('0x69')]){_0x8094d2[_0x9bd4('0x55')]=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db['User'],'as':_0x9bd4('0xaa'),'attributes':['name',_0x9bd4('0xab'),_0x9bd4('0xac')],'required':![]},{'model':db[_0x9bd4('0xad')],'as':_0x9bd4('0xae'),'attributes':['id','name',_0x9bd4('0xaf')],'where':_0x162b3c[_0x9bd4('0x45')][_0x9bd4('0xb0')]?{'id':_0x162b3c[_0x9bd4('0x45')][_0x9bd4('0xb0')]}:undefined,'required':_0x162b3c[_0x9bd4('0x45')]['tag']?!![]:![]}];}return db[_0x9bd4('0x91')][_0x9bd4('0x6a')](_0x8094d2);})['then'](function(_0x533634){_0x3371eb[_0x9bd4('0x56')]=_0x533634;return _0x3371eb;});}})[_0x9bd4('0x21')](respondWithFilteredResult(_0x4b29dd,_0x8094d2))[_0x9bd4('0x2a')](handleError(_0x4b29dd,null));};exports[_0x9bd4('0xb1')]=function(_0x16a048,_0x5a5b53,_0x512656){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x16a048['params']['id']}})['then'](handleEntityNotFound(_0x5a5b53,null))['then'](function(_0x2543e9){if(_0x2543e9){return _0x2543e9[_0x9bd4('0xb1')](_0x16a048[_0x9bd4('0x5a')][_0x9bd4('0x6c')],_[_0x9bd4('0xb2')](_0x16a048[_0x9bd4('0x5a')],[_0x9bd4('0x6c'),'id'])||{})[_0x9bd4('0xb3')](function(_0x298665){for(var _0x1d5f3a=0x0;_0x1d5f3a<_0x16a048[_0x9bd4('0x5a')][_0x9bd4('0x6c')][_0x9bd4('0x4a')];_0x1d5f3a+=0x1){socket[_0x9bd4('0xb4')](_0x9bd4('0xb5'),{'UserId':Number(_0x16a048[_0x9bd4('0x5a')][_0x9bd4('0x6c')][_0x1d5f3a]),'OpenchannelAccountId':Number(_0x16a048[_0x9bd4('0x58')]['id'])});}return _0x298665;});}})['then'](respondWithResult(_0x5a5b53,null))[_0x9bd4('0x2a')](handleError(_0x5a5b53,null));};exports[_0x9bd4('0xb6')]=function(_0x2afade,_0x56c3ac,_0x15aea6){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x2afade[_0x9bd4('0x58')]['id']}})['then'](handleEntityNotFound(_0x56c3ac,null))[_0x9bd4('0x21')](function(_0x320032){if(_0x320032){return _0x320032[_0x9bd4('0xb6')](_0x2afade[_0x9bd4('0x45')][_0x9bd4('0x6c')])[_0x9bd4('0x21')](function(){if(_[_0x9bd4('0xb7')](_0x2afade[_0x9bd4('0x45')][_0x9bd4('0x6c')])){for(var _0x5cbe80=0x0;_0x5cbe80<_0x2afade['query'][_0x9bd4('0x6c')][_0x9bd4('0x4a')];_0x5cbe80+=0x1){socket[_0x9bd4('0xb4')](_0x9bd4('0xb8'),{'UserId':Number(_0x2afade[_0x9bd4('0x45')][_0x9bd4('0x6c')][_0x5cbe80]),'OpenchannelAccountId':Number(_0x2afade['params']['id'])});}}else{socket[_0x9bd4('0xb4')](_0x9bd4('0xb8'),{'UserId':Number(_0x2afade[_0x9bd4('0x45')][_0x9bd4('0x6c')]),'OpenchannelAccountId':Number(_0x2afade['params']['id'])});}});}})['then'](respondWithStatusCode(_0x56c3ac,null))[_0x9bd4('0x2a')](handleError(_0x56c3ac,null));};exports[_0x9bd4('0xb9')]=function(_0x2e1868,_0x4e3c56,_0x44c046){var _0x225c38={};var _0x40cfed={};var _0x2cf8b6;var _0x5306b4;return db[_0x9bd4('0x40')][_0x9bd4('0x67')]({'where':{'id':_0x2e1868[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x4e3c56,null))['then'](function(_0x2a8a7b){if(_0x2a8a7b){_0x2cf8b6=_0x2a8a7b;_0x40cfed[_0x9bd4('0x44')]=_['keys'](db[_0x9bd4('0x9c')][_0x9bd4('0x41')]);_0x40cfed[_0x9bd4('0x45')]=_[_0x9bd4('0x68')](_0x2e1868[_0x9bd4('0x45')]);_0x40cfed['filters']=_[_0x9bd4('0x47')](_0x40cfed[_0x9bd4('0x44')],_0x40cfed[_0x9bd4('0x45')]);_0x225c38['attributes']=_['intersection'](_0x40cfed[_0x9bd4('0x44')],qs['fields'](_0x2e1868[_0x9bd4('0x45')]['fields']));_0x225c38[_0x9bd4('0x48')]=_0x225c38[_0x9bd4('0x48')][_0x9bd4('0x4a')]?_0x225c38[_0x9bd4('0x48')]:_0x40cfed[_0x9bd4('0x44')];_0x225c38[_0x9bd4('0x4d')]=qs[_0x9bd4('0x4e')](_0x2e1868[_0x9bd4('0x45')][_0x9bd4('0x4e')]);_0x225c38[_0x9bd4('0x4f')]=qs[_0x9bd4('0x46')](_[_0x9bd4('0x50')](_0x2e1868[_0x9bd4('0x45')],_0x40cfed['filters']));if(_0x2e1868[_0x9bd4('0x45')][_0x9bd4('0x51')]){_0x225c38[_0x9bd4('0x4f')]=_[_0x9bd4('0x53')](_0x225c38[_0x9bd4('0x4f')],{'$or':_[_0x9bd4('0x3f')](_0x225c38[_0x9bd4('0x48')],function(_0x2c8b3b){var _0x6c75b4={};_0x6c75b4[_0x2c8b3b]={'$like':'%'+_0x2e1868['query'][_0x9bd4('0x51')]+'%'};return _0x6c75b4;})});}_0x225c38=_[_0x9bd4('0x53')]({},_0x225c38,_0x2e1868[_0x9bd4('0x54')]);return _0x2cf8b6[_0x9bd4('0xb9')](_0x225c38);}})[_0x9bd4('0x21')](function(_0x592550){if(_0x592550){_0x5306b4=_0x592550[_0x9bd4('0x4a')];if(!_0x2e1868[_0x9bd4('0x45')][_0x9bd4('0x4b')](_0x9bd4('0xa8'))){_0x225c38['limit']=qs[_0x9bd4('0x4c')](_0x2e1868[_0x9bd4('0x45')][_0x9bd4('0x4c')]);_0x225c38['offset']=qs[_0x9bd4('0x31')](_0x2e1868[_0x9bd4('0x45')][_0x9bd4('0x31')]);}return _0x2cf8b6[_0x9bd4('0xb9')](_0x225c38);}})[_0x9bd4('0x21')](function(_0x198d0b){if(_0x198d0b){return _0x198d0b?{'count':_0x5306b4,'rows':_0x198d0b}:null;}})[_0x9bd4('0x21')](respondWithResult(_0x4e3c56,null))[_0x9bd4('0x2a')](handleError(_0x4e3c56,null));};exports[_0x9bd4('0x3b')]=function(_0x463e84,_0x13de54,_0x1a5512){var _0x1dff6c,_0x1ef7e8,_0x5bf788;if(_[_0x9bd4('0x7a')](_0x463e84[_0x9bd4('0x5a')][_0x9bd4('0x5a')])||_0x463e84[_0x9bd4('0x5a')][_0x9bd4('0x5a')]===''){throw new db[(_0x9bd4('0x72'))][(_0x9bd4('0x73'))](_0x9bd4('0x7d'));}if(_[_0x9bd4('0x7a')](_0x463e84[_0x9bd4('0x5a')]['to'])){}_0x1dff6c=_0x463e84[_0x9bd4('0x5a')]['to'];return db[_0x9bd4('0x40')][_0x9bd4('0x67')]({'where':{'id':_0x463e84[_0x9bd4('0x58')]['id']}})[_0x9bd4('0x21')](handleEntityNotFound(_0x13de54,null))[_0x9bd4('0x21')](function(_0x5a685d){if(_0x5a685d){return db[_0x9bd4('0x40')][_0x9bd4('0x61')]({'where':{'id':_0x5a685d['id']},'include':[{'model':db['CmList'],'as':_0x9bd4('0x81'),'include':[{'model':db[_0x9bd4('0x71')],'as':_0x9bd4('0x82'),'where':{[_0x5a685d[_0x9bd4('0x7e')]]:_0x1dff6c},'limit':0x1,'order':[['updatedAt','DESC']]}]}]})[_0x9bd4('0x21')](handleEntityNotFound(_0x13de54,null))[_0x9bd4('0x21')](function(_0x4893a5){if(_0x4893a5&&_0x4893a5[_0x9bd4('0x81')]){_0x1ef7e8=_0x4893a5[_0x9bd4('0x37')]({'plain':!![]});if(_0x1ef7e8['List']&&_0x1ef7e8[_0x9bd4('0x81')][_0x9bd4('0x82')][_0x9bd4('0x4a')]){return _0x1ef7e8[_0x9bd4('0x81')][_0x9bd4('0x82')][0x0];}return db[_0x9bd4('0x71')][_0x9bd4('0x59')](_[_0x9bd4('0x1b')](_0x463e84['body'],{'firstName':_0x1dff6c,[_0x4893a5['mapKey']]:_0x1dff6c,'phone':_0x1dff6c,'ListId':_0x1ef7e8['ListId']}));}})['then'](handleEntityNotFound(_0x13de54,null))[_0x9bd4('0x21')](function(_0xd0b9c7){if(_0xd0b9c7){_0x5bf788=_0xd0b9c7;return db[_0x9bd4('0x91')][_0x9bd4('0x61')]({'where':{'ContactId':_0x5bf788['id'],'closed':![],'OpenchannelAccountId':_0x1ef7e8['id']}})['then'](function(_0x43a98b){if(_0x43a98b){return[_0x43a98b,![]];}return db[_0x9bd4('0x91')][_0x9bd4('0x59')]({'UserId':_0x463e84[_0x9bd4('0x5d')]['id'],'ContactId':_0x5bf788['id'],'OpenchannelAccountId':_0x1ef7e8['id'],'lastMsgDirection':'out','Messages':[_['merge'](_0x463e84[_0x9bd4('0x5a')],{'read':![],'body':_0x463e84[_0x9bd4('0x5a')][_0x9bd4('0x5a')],'OpenchannelAccountId':_0x1ef7e8['id'],'UserId':_0x463e84[_0x9bd4('0x5d')]['id'],'ContactId':_0x5bf788['id']})]},{'include':[{'model':db[_0x9bd4('0x99')],'as':_0x9bd4('0xba')}]})[_0x9bd4('0x21')](function(_0x25c1cb){return[_0x25c1cb,!![]];});});}})[_0x9bd4('0xb3')](function(_0x135db9,_0x428156){if(_0x428156){return _0x135db9;}return db[_0x9bd4('0x99')]['create'](_[_0x9bd4('0x53')](_0x463e84['body'],{'read':![],'body':_0x463e84['body'][_0x9bd4('0x5a')],'OpenchannelAccountId':_0x1ef7e8['id'],'OpenchannelInteractionId':_0x135db9['id'],'UserId':_0x463e84['user']['id'],'ContactId':_0x5bf788['id']}))[_0x9bd4('0x21')](function(_0x1f32a3){_0x135db9['dataValues']['Messages']=[];_0x135db9[_0x9bd4('0xbb')][_0x9bd4('0xba')]['push'](_0x1f32a3['dataValues']);return _0x135db9;});});}})[_0x9bd4('0x21')](respondWithResult(_0x13de54,null))[_0x9bd4('0x2a')](handleError(_0x13de54,null));};
\ No newline at end of file
+var _0x21b6=['limit','count','offset','set','Content-Range','save','update','then','destroy','get','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','map','OpenchannelAccount','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','VIRTUAL','merge','includeAll','include','findAll','rows','catch','options','find','user','role','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','hasOwnProperty','filter','removeDispositions','ids','addAnswer','CannedAnswer','findOne','pick','removeAnswers','notify','CmContact','Sequelize','ValidationError','difference','updatedAt','createdAt','CompanyId','isNil','from','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','account','applications','list','orderBy','priority','asc','defaults','ListId','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','spread','messageId','created','interaction','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','sequelize','bulkCreate','getApplications','Contact','Owner','internal','Tag','Tags','color','tag','addAgents','omit','emit','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','info','OpenchannelAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','sendStatus','end','status','json','undefined'];(function(_0x5cca06,_0x4073a2){var _0x141053=function(_0x4ae781){while(--_0x4ae781){_0x5cca06['push'](_0x5cca06['shift']());}};_0x141053(++_0x4073a2);}(_0x21b6,0x8e));var _0x621b=function(_0x1eb3f9,_0x39edcf){_0x1eb3f9=_0x1eb3f9-0x0;var _0x2c5e73=_0x21b6[_0x1eb3f9];return _0x2c5e73;};'use strict';var emlformat=require(_0x621b('0x0'));var rimraf=require(_0x621b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x621b('0x2'));var rp=require('request-promise');var moment=require(_0x621b('0x3'));var BPromise=require(_0x621b('0x4'));var Mustache=require(_0x621b('0x5'));var util=require(_0x621b('0x6'));var path=require(_0x621b('0x7'));var sox=require('sox');var csv=require(_0x621b('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x621b('0x9'));var squel=require(_0x621b('0xa'));var crypto=require(_0x621b('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x621b('0x8'));var querystring=require(_0x621b('0xc'));var Papa=require(_0x621b('0xd'));var Redis=require('ioredis');var authService=require(_0x621b('0xe'));var qs=require(_0x621b('0xf'));var as=require(_0x621b('0x10'));var hardwareService=require(_0x621b('0x11'));var logger=require(_0x621b('0x12'))('api');var utils=require(_0x621b('0x13'));var config=require(_0x621b('0x14'));var licenseUtil=require(_0x621b('0x15'));var db=require('../../mysqldb')['db'];config[_0x621b('0x16')]=_['defaults'](config[_0x621b('0x16')],{'host':_0x621b('0x17'),'port':0x18eb});var socket=require(_0x621b('0x18'))(new Redis(config[_0x621b('0x16')]));require(_0x621b('0x19'))['register'](socket);var jayson=require(_0x621b('0x1a'));var client=jayson[_0x621b('0x1b')][_0x621b('0x1c')]({'port':0x232c});var client9002=jayson[_0x621b('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f3416,_0x5093bc,_0x4f68d9,_0x325290){return new BPromise(function(_0x34043b,_0x65afc2){var _0x1a28dc=_0x325290||client;return _0x1a28dc[_0x621b('0x1d')](_0x1f3416,_0x4f68d9)['then'](function(_0x4e7a58){logger[_0x621b('0x1e')](_0x621b('0x1f'),_0x5093bc,'request\x20sent');logger[_0x621b('0x20')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x5093bc,_0x621b('0x21'),JSON['stringify'](_0x4e7a58));if(_0x4e7a58[_0x621b('0x22')]){if(_0x4e7a58[_0x621b('0x22')][_0x621b('0x23')]===0x1f4){logger[_0x621b('0x22')](_0x621b('0x1f'),_0x5093bc,_0x4e7a58['error'][_0x621b('0x24')]);return _0x65afc2(_0x4e7a58[_0x621b('0x22')]['message']);}logger['error'](_0x621b('0x1f'),_0x5093bc,_0x4e7a58[_0x621b('0x22')][_0x621b('0x24')]);return _0x34043b(_0x4e7a58[_0x621b('0x22')]['message']);}else{logger['info'](_0x621b('0x1f'),_0x5093bc,_0x621b('0x21'));_0x34043b(_0x4e7a58[_0x621b('0x25')][_0x621b('0x24')]);}})['catch'](function(_0xbfcefa){logger[_0x621b('0x22')](_0x621b('0x1f'),_0x5093bc,_0xbfcefa);_0x65afc2(_0xbfcefa);});});}function respondWithStatusCode(_0x4967ef,_0x169aef){_0x169aef=_0x169aef||0xcc;return function(_0x492102){if(_0x492102){return _0x4967ef[_0x621b('0x26')](_0x169aef);}return _0x4967ef['status'](_0x169aef)[_0x621b('0x27')]();};}function respondWithResult(_0x25bc2f,_0x3493d4){_0x3493d4=_0x3493d4||0xc8;return function(_0x34a534){if(_0x34a534){return _0x25bc2f[_0x621b('0x28')](_0x3493d4)[_0x621b('0x29')](_0x34a534);}};}function respondWithFilteredResult(_0x3ac1fd,_0x19d51b){return function(_0x2b96f3){if(_0x2b96f3){var _0x492999=typeof _0x19d51b['offset']===_0x621b('0x2a')&&typeof _0x19d51b[_0x621b('0x2b')]===_0x621b('0x2a');var _0x3a4922=_0x2b96f3[_0x621b('0x2c')];var _0x4c9760=_0x492999?0x0:_0x19d51b[_0x621b('0x2d')];var _0x4380a0=_0x492999?_0x2b96f3[_0x621b('0x2c')]:_0x19d51b['offset']+_0x19d51b['limit'];var _0x36bf35;if(_0x4380a0>=_0x3a4922){_0x4380a0=_0x3a4922;_0x36bf35=0xc8;}else{_0x36bf35=0xce;}_0x3ac1fd[_0x621b('0x28')](_0x36bf35);return _0x3ac1fd[_0x621b('0x2e')](_0x621b('0x2f'),_0x4c9760+'-'+_0x4380a0+'/'+_0x3a4922)['json'](_0x2b96f3);}return null;};}function patchUpdates(_0x4bf71c){return function(_0x27233f){try{jsonpatch['apply'](_0x27233f,_0x4bf71c,!![]);}catch(_0x220067){return BPromise['reject'](_0x220067);}return _0x27233f[_0x621b('0x30')]();};}function saveUpdates(_0xad79d1,_0x43a8ac){return function(_0x44fbfb){if(_0x44fbfb){return _0x44fbfb[_0x621b('0x31')](_0xad79d1)[_0x621b('0x32')](function(_0x4a629f){return _0x4a629f;});}return null;};}function removeEntity(_0x12a1b0,_0x5a1070){return function(_0x40b727){if(_0x40b727){return _0x40b727[_0x621b('0x33')]()[_0x621b('0x32')](function(){var _0x9e38cb=_0x40b727[_0x621b('0x34')]({'plain':!![]});var _0x1bb3ac='OpenchannelAccounts';return db[_0x621b('0x35')]['destroy']({'where':{'type':_0x1bb3ac,'resourceId':_0x9e38cb['id']}})[_0x621b('0x32')](function(){return _0x40b727;});})[_0x621b('0x32')](function(){_0x12a1b0['status'](0xcc)[_0x621b('0x27')]();});}};}function handleEntityNotFound(_0x3e7da7,_0x58d260){return function(_0x41e282){if(!_0x41e282){_0x3e7da7[_0x621b('0x26')](0x194);}return _0x41e282;};}function handleError(_0x4c8dfe,_0x49c5e9){_0x49c5e9=_0x49c5e9||0x1f4;return function(_0x516429){logger[_0x621b('0x22')](_0x516429[_0x621b('0x36')]);if(_0x516429[_0x621b('0x37')]){delete _0x516429[_0x621b('0x37')];}_0x4c8dfe[_0x621b('0x28')](_0x49c5e9)['send'](_0x516429);};}exports[_0x621b('0x38')]=function(_0x13b5c7,_0x46d565){var _0x45e089={'include':[{'model':db[_0x621b('0x39')],'as':_0x621b('0x3a')}]},_0x5645f4={},_0xa377be={'count':0x0,'rows':[]};var _0x1d7b7e=_[_0x621b('0x3b')](db[_0x621b('0x3c')][_0x621b('0x3d')],function(_0x47fb35){return{'name':_0x47fb35[_0x621b('0x3e')],'type':_0x47fb35[_0x621b('0x3f')]['key']};});_0x5645f4[_0x621b('0x40')]=_[_0x621b('0x3b')](_0x1d7b7e,_0x621b('0x37'));_0x5645f4['query']=_[_0x621b('0x41')](_0x13b5c7[_0x621b('0x42')]);_0x5645f4[_0x621b('0x43')]=_[_0x621b('0x44')](_0x5645f4[_0x621b('0x40')],_0x5645f4[_0x621b('0x42')]);_0x45e089['attributes']=_[_0x621b('0x44')](_0x5645f4[_0x621b('0x40')],qs['fields'](_0x13b5c7[_0x621b('0x42')][_0x621b('0x45')]));_0x45e089[_0x621b('0x46')]=_0x45e089[_0x621b('0x46')][_0x621b('0x47')]?_0x45e089[_0x621b('0x46')]:_0x5645f4[_0x621b('0x40')];if(!_0x13b5c7['query']['hasOwnProperty'](_0x621b('0x48'))){_0x45e089[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x13b5c7['query'][_0x621b('0x2b')]);_0x45e089['offset']=qs['offset'](_0x13b5c7[_0x621b('0x42')][_0x621b('0x2d')]);}_0x45e089[_0x621b('0x49')]=qs[_0x621b('0x4a')](_0x13b5c7[_0x621b('0x42')]['sort']);_0x45e089['where']=qs[_0x621b('0x43')](_['pick'](_0x13b5c7[_0x621b('0x42')],_0x5645f4[_0x621b('0x43')]),_0x1d7b7e);if(_0x13b5c7[_0x621b('0x42')]['filter']){_0x45e089[_0x621b('0x4b')]=_['merge'](_0x45e089[_0x621b('0x4b')],{'$or':_[_0x621b('0x3b')](_0x1d7b7e,function(_0x433a8d){if(_0x433a8d['type']!==_0x621b('0x4c')){var _0x3f7307={};_0x3f7307[_0x433a8d['name']]={'$like':'%'+_0x13b5c7[_0x621b('0x42')]['filter']+'%'};return _0x3f7307;}})});}_0x45e089=_[_0x621b('0x4d')]({},_0x45e089,_0x13b5c7['options']);var _0x580e9e={'where':_0x45e089['where']};return db[_0x621b('0x3c')][_0x621b('0x2c')](_0x580e9e)['then'](function(_0x3937e4){_0xa377be['count']=_0x3937e4;if(_0x13b5c7[_0x621b('0x42')][_0x621b('0x4e')]){_0x45e089[_0x621b('0x4f')]=[{'all':!![]}];}return db[_0x621b('0x3c')][_0x621b('0x50')](_0x45e089);})[_0x621b('0x32')](function(_0x3f995c){_0xa377be[_0x621b('0x51')]=_0x3f995c;return _0xa377be;})['then'](respondWithFilteredResult(_0x46d565,_0x45e089))[_0x621b('0x52')](handleError(_0x46d565,null));};exports['show']=function(_0x44871a,_0x423a37){var _0x20c575={'raw':![],'where':{'id':_0x44871a['params']['id']},'include':[{'model':db[_0x621b('0x39')],'as':_0x621b('0x3a')}]},_0x3d75d4={};_0x3d75d4[_0x621b('0x40')]=_[_0x621b('0x41')](db['OpenchannelAccount']['rawAttributes']);_0x3d75d4[_0x621b('0x42')]=_[_0x621b('0x41')](_0x44871a[_0x621b('0x42')]);_0x3d75d4[_0x621b('0x43')]=_[_0x621b('0x44')](_0x3d75d4[_0x621b('0x40')],_0x3d75d4[_0x621b('0x42')]);_0x20c575[_0x621b('0x46')]=_[_0x621b('0x44')](_0x3d75d4[_0x621b('0x40')],qs[_0x621b('0x45')](_0x44871a[_0x621b('0x42')]['fields']));_0x20c575['attributes']=_0x20c575['attributes'][_0x621b('0x47')]?_0x20c575[_0x621b('0x46')]:_0x3d75d4[_0x621b('0x40')];if(_0x44871a[_0x621b('0x42')]['includeAll']){_0x20c575[_0x621b('0x4f')]=[{'all':!![]}];}_0x20c575=_[_0x621b('0x4d')]({},_0x20c575,_0x44871a[_0x621b('0x53')]);return db[_0x621b('0x3c')][_0x621b('0x54')](_0x20c575)[_0x621b('0x32')](handleEntityNotFound(_0x423a37,null))[_0x621b('0x32')](respondWithResult(_0x423a37,null))[_0x621b('0x52')](handleError(_0x423a37,null));};exports['create']=function(_0x4829b1,_0x388f68){return db[_0x621b('0x3c')]['create'](_0x4829b1['body'],{})[_0x621b('0x32')](function(_0x7f19ca){var _0xba028b=_0x4829b1[_0x621b('0x55')][_0x621b('0x34')]({'plain':!![]});if(!_0xba028b)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xba028b[_0x621b('0x56')]===_0x621b('0x55')){var _0x3eefe8=_0x7f19ca[_0x621b('0x34')]({'plain':!![]});var _0x49ad2c=_0x621b('0x57');return db[_0x621b('0x58')][_0x621b('0x54')]({'where':{'name':_0x49ad2c,'userProfileId':_0xba028b[_0x621b('0x59')]},'raw':!![]})[_0x621b('0x32')](function(_0x1a4aad){if(_0x1a4aad&&_0x1a4aad[_0x621b('0x5a')]===0x0){return db[_0x621b('0x35')][_0x621b('0x5b')]({'name':_0x3eefe8[_0x621b('0x37')],'resourceId':_0x3eefe8['id'],'type':_0x1a4aad['name'],'sectionId':_0x1a4aad['id']},{})[_0x621b('0x32')](function(){return _0x7f19ca;});}else{return _0x7f19ca;}})[_0x621b('0x52')](function(_0x3990d4){logger[_0x621b('0x22')](_0x621b('0x5c'),_0x3990d4);throw _0x3990d4;});}return _0x7f19ca;})['then'](respondWithResult(_0x388f68,0xc9))[_0x621b('0x52')](handleError(_0x388f68,null));};exports[_0x621b('0x31')]=function(_0x2f30f0,_0xe82afd){if(_0x2f30f0[_0x621b('0x5d')]['id']){delete _0x2f30f0['body']['id'];}return db[_0x621b('0x3c')]['find']({'where':{'id':_0x2f30f0['params']['id']},'include':[{'model':db['Pause'],'as':_0x621b('0x3a')}]})[_0x621b('0x32')](handleEntityNotFound(_0xe82afd,null))[_0x621b('0x32')](saveUpdates(_0x2f30f0[_0x621b('0x5d')],null))[_0x621b('0x32')](respondWithResult(_0xe82afd,null))['catch'](handleError(_0xe82afd,null));};exports[_0x621b('0x33')]=function(_0x38ca21,_0x170fa0){return db[_0x621b('0x3c')]['find']({'where':{'id':_0x38ca21[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x170fa0,null))[_0x621b('0x32')](removeEntity(_0x170fa0,null))[_0x621b('0x52')](handleError(_0x170fa0,null));};exports['describe']=function(_0x46f612,_0x4b36a2){return db[_0x621b('0x3c')][_0x621b('0x5f')]()[_0x621b('0x32')](respondWithResult(_0x4b36a2,null))[_0x621b('0x52')](handleError(_0x4b36a2,null));};exports[_0x621b('0x60')]=function(_0x899104,_0x7152cb,_0x4aac9a){if(_0x899104[_0x621b('0x5d')]['id']){delete _0x899104['body']['id'];}return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x899104[_0x621b('0x5e')]['id']}})['then'](handleEntityNotFound(_0x7152cb,null))['then'](function(_0x17b65e){if(_0x17b65e){_0x899104[_0x621b('0x5d')][_0x621b('0x61')]=_0x17b65e['id'];return db[_0x621b('0x62')][_0x621b('0x5b')](_0x899104[_0x621b('0x5d')]);}})[_0x621b('0x32')](respondWithResult(_0x7152cb,null))['catch'](handleError(_0x7152cb,null));};exports[_0x621b('0x63')]=function(_0x2459ae,_0x4c9c2f,_0x3097b7){var _0x5be22b={'raw':![],'where':{}};var _0x2c2d0e={};var _0x189aed={'count':0x0,'rows':[]};return db[_0x621b('0x3c')]['findOne']({'where':{'id':_0x2459ae[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x4c9c2f,null))[_0x621b('0x32')](function(_0x337ada){if(_0x337ada){_0x2c2d0e[_0x621b('0x40')]=_[_0x621b('0x41')](db[_0x621b('0x62')][_0x621b('0x3d')]);_0x2c2d0e[_0x621b('0x42')]=_[_0x621b('0x41')](_0x2459ae[_0x621b('0x42')]);_0x2c2d0e[_0x621b('0x43')]=_[_0x621b('0x44')](_0x2c2d0e[_0x621b('0x40')],_0x2c2d0e[_0x621b('0x42')]);_0x5be22b['attributes']=_[_0x621b('0x44')](_0x2c2d0e[_0x621b('0x40')],qs[_0x621b('0x45')](_0x2459ae['query'][_0x621b('0x45')]));_0x5be22b[_0x621b('0x46')]=_0x5be22b[_0x621b('0x46')]['length']?_0x5be22b[_0x621b('0x46')]:_0x2c2d0e['model'];if(!_0x2459ae[_0x621b('0x42')][_0x621b('0x64')]('nolimit')){_0x5be22b[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x2459ae['query'][_0x621b('0x2b')]);_0x5be22b[_0x621b('0x2d')]=qs[_0x621b('0x2d')](_0x2459ae['query'][_0x621b('0x2d')]);}_0x5be22b[_0x621b('0x49')]=qs[_0x621b('0x4a')](_0x2459ae['query'][_0x621b('0x4a')]);_0x5be22b['where']=qs['filters'](_['pick'](_0x2459ae[_0x621b('0x42')],_0x2c2d0e[_0x621b('0x43')]));_0x5be22b[_0x621b('0x4b')][_0x621b('0x61')]=_0x337ada['id'];if(_0x2459ae[_0x621b('0x42')][_0x621b('0x65')]){_0x5be22b['where']=_[_0x621b('0x4d')](_0x5be22b[_0x621b('0x4b')],{'$or':_['map'](_0x5be22b[_0x621b('0x46')],function(_0x5db57c){var _0x141547={};_0x141547[_0x5db57c]={'$like':'%'+_0x2459ae[_0x621b('0x42')][_0x621b('0x65')]+'%'};return _0x141547;})});}_0x5be22b=_['merge']({},_0x5be22b,_0x2459ae['options']);return db[_0x621b('0x62')][_0x621b('0x2c')]({'where':_0x5be22b['where']})[_0x621b('0x32')](function(_0x135a52){_0x189aed[_0x621b('0x2c')]=_0x135a52;if(_0x2459ae['query']['includeAll']){_0x5be22b[_0x621b('0x4f')]=[{'all':!![]}];}return db['Disposition'][_0x621b('0x50')](_0x5be22b);})['then'](function(_0x33eafb){_0x189aed[_0x621b('0x51')]=_0x33eafb;return _0x189aed;});}})[_0x621b('0x32')](respondWithFilteredResult(_0x4c9c2f,_0x5be22b))[_0x621b('0x52')](handleError(_0x4c9c2f,null));};exports[_0x621b('0x66')]=function(_0x1cba48,_0x4e56bd,_0x580f53){return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x1cba48['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x4e56bd,null))[_0x621b('0x32')](function(_0x1eab3e){if(_0x1eab3e){return _0x1eab3e['removeDispositions'](_0x1cba48['query'][_0x621b('0x67')]);}})[_0x621b('0x32')](respondWithStatusCode(_0x4e56bd,null))[_0x621b('0x52')](handleError(_0x4e56bd,null));};exports[_0x621b('0x68')]=function(_0x39fbcd,_0x3d4ef0,_0x57d175){if(_0x39fbcd[_0x621b('0x5d')]['id']){delete _0x39fbcd[_0x621b('0x5d')]['id'];}return db[_0x621b('0x3c')]['find']({'where':{'id':_0x39fbcd[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x3d4ef0,null))['then'](function(_0x422508){if(_0x422508){_0x39fbcd[_0x621b('0x5d')][_0x621b('0x61')]=_0x422508['id'];return db[_0x621b('0x69')]['create'](_0x39fbcd[_0x621b('0x5d')]);}})[_0x621b('0x32')](respondWithResult(_0x3d4ef0,null))[_0x621b('0x52')](handleError(_0x3d4ef0,null));};exports['getAnswers']=function(_0x426768,_0x527c10,_0x5c0b0f){var _0x3647e0={'raw':![],'where':{}};var _0x14d6ad={};var _0x5374d1={'count':0x0,'rows':[]};return db[_0x621b('0x3c')][_0x621b('0x6a')]({'where':{'id':_0x426768[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x527c10,null))[_0x621b('0x32')](function(_0x2d950c){if(_0x2d950c){_0x14d6ad['model']=_['keys'](db[_0x621b('0x69')]['rawAttributes']);_0x14d6ad[_0x621b('0x42')]=_['keys'](_0x426768[_0x621b('0x42')]);_0x14d6ad[_0x621b('0x43')]=_[_0x621b('0x44')](_0x14d6ad[_0x621b('0x40')],_0x14d6ad[_0x621b('0x42')]);_0x3647e0[_0x621b('0x46')]=_[_0x621b('0x44')](_0x14d6ad[_0x621b('0x40')],qs[_0x621b('0x45')](_0x426768['query'][_0x621b('0x45')]));_0x3647e0[_0x621b('0x46')]=_0x3647e0[_0x621b('0x46')]['length']?_0x3647e0[_0x621b('0x46')]:_0x14d6ad[_0x621b('0x40')];if(!_0x426768['query'][_0x621b('0x64')]('nolimit')){_0x3647e0[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x426768[_0x621b('0x42')][_0x621b('0x2b')]);_0x3647e0[_0x621b('0x2d')]=qs[_0x621b('0x2d')](_0x426768['query']['offset']);}_0x3647e0[_0x621b('0x49')]=qs['sort'](_0x426768[_0x621b('0x42')][_0x621b('0x4a')]);_0x3647e0[_0x621b('0x4b')]=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x426768['query'],_0x14d6ad['filters']));_0x3647e0['where'][_0x621b('0x61')]=_0x2d950c['id'];if(_0x426768[_0x621b('0x42')][_0x621b('0x65')]){_0x3647e0[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x3647e0[_0x621b('0x4b')],{'$or':_['map'](_0x3647e0[_0x621b('0x46')],function(_0x502ad6){var _0x2a6862={};_0x2a6862[_0x502ad6]={'$like':'%'+_0x426768[_0x621b('0x42')]['filter']+'%'};return _0x2a6862;})});}_0x3647e0=_[_0x621b('0x4d')]({},_0x3647e0,_0x426768[_0x621b('0x53')]);return db[_0x621b('0x69')][_0x621b('0x2c')]({'where':_0x3647e0[_0x621b('0x4b')]})['then'](function(_0x248387){_0x5374d1[_0x621b('0x2c')]=_0x248387;if(_0x426768[_0x621b('0x42')]['includeAll']){_0x3647e0[_0x621b('0x4f')]=[{'all':!![]}];}return db['CannedAnswer'][_0x621b('0x50')](_0x3647e0);})['then'](function(_0x3f448d){_0x5374d1['rows']=_0x3f448d;return _0x5374d1;});}})[_0x621b('0x32')](respondWithFilteredResult(_0x527c10,_0x3647e0))[_0x621b('0x52')](handleError(_0x527c10,null));};exports[_0x621b('0x6c')]=function(_0x3d8b87,_0x5708a2,_0x947d22){return db[_0x621b('0x3c')]['find']({'where':{'id':_0x3d8b87[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x5708a2,null))[_0x621b('0x32')](function(_0x59db14){if(_0x59db14){return _0x59db14[_0x621b('0x6c')](_0x3d8b87['query'][_0x621b('0x67')]);}})[_0x621b('0x32')](respondWithStatusCode(_0x5708a2,null))[_0x621b('0x52')](handleError(_0x5708a2,null));};exports[_0x621b('0x6d')]=function(_0x2d7d08,_0x1404a5,_0x1a8470){var _0xfdda38={'body':_0x2d7d08[_0x621b('0x5d')],'channel':'openchannel'};var _0x5e995c=[];var _0x135581=[];var _0x30b962={};var _0x4175e6=![];return db[_0x621b('0x6e')]['describe']()[_0x621b('0x32')](function(_0x37c91d){if(!_0x37c91d){throw new db[(_0x621b('0x6f'))][(_0x621b('0x70'))]('no\x20available\x20attributes');}_0x5e995c=_[_0x621b('0x71')](_['keys'](_0x37c91d),['createdAt',_0x621b('0x72')]);_0x135581=_[_0x621b('0x71')](_[_0x621b('0x41')](_0x37c91d),[_0x621b('0x73'),_0x621b('0x72'),_0x621b('0x74'),'ListId']);if(_0x2d7d08[_0x621b('0x5d')]['id']){delete _0x2d7d08[_0x621b('0x5d')]['id'];}if(_[_0x621b('0x75')](_0x2d7d08[_0x621b('0x5d')][_0x621b('0x76')])){throw new db[(_0x621b('0x6f'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x2d7d08[_0x621b('0x5d')][_0x621b('0x5d')])||_0x2d7d08['body'][_0x621b('0x5d')]===''){throw new db['Sequelize'][(_0x621b('0x70'))](_0x621b('0x77'));}if(_[_0x621b('0x75')](_0x2d7d08['body'][_0x621b('0x78')])){throw new db[(_0x621b('0x6f'))]['ValidationError'](_0x621b('0x79')+_0x135581);}if(!_[_0x621b('0x7a')](_0x135581,_0x2d7d08[_0x621b('0x5d')][_0x621b('0x78')])){throw new db['Sequelize'][(_0x621b('0x70'))](_0x621b('0x7b')+_0x135581);}_0x30b962[_0x2d7d08['body'][_0x621b('0x78')]]=_0x2d7d08[_0x621b('0x5d')][_0x621b('0x76')];})[_0x621b('0x32')](function(){return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x2d7d08[_0x621b('0x5e')]['id']},'include':[{'model':db[_0x621b('0x7c')],'as':_0x621b('0x7d'),'include':[{'model':db[_0x621b('0x6e')],'as':_0x621b('0x7e'),'where':_0x30b962,'limit':0x1,'order':[['updatedAt',_0x621b('0x7f')]]}]},{'model':db[_0x621b('0x80')],'as':_0x621b('0x81')}]});})['then'](handleEntityNotFound(_0x1404a5,null))['then'](function(_0x371f3e){if(_0x371f3e&&_0x371f3e[_0x621b('0x7d')]){_0xfdda38[_0x621b('0x82')]=_0x371f3e;_0xfdda38[_0x621b('0x83')]=_0x371f3e[_0x621b('0x81')];_0xfdda38[_0x621b('0x84')]=_0x371f3e[_0x621b('0x7d')];_0xfdda38[_0x621b('0x83')]=_[_0x621b('0x85')](_0xfdda38[_0x621b('0x83')],[_0x621b('0x86')],[_0x621b('0x87')]);if(_0xfdda38[_0x621b('0x82')][_0x621b('0x81')]){delete _0xfdda38[_0x621b('0x82')][_0x621b('0x81')];}if(_0xfdda38[_0x621b('0x82')][_0x621b('0x7d')]&&_0xfdda38['account'][_0x621b('0x7d')][_0x621b('0x7e')]['length']){return _0xfdda38['account'][_0x621b('0x7d')][_0x621b('0x7e')][0x0];}var _0x1eab8a=_[_0x621b('0x88')](_0x2d7d08[_0x621b('0x5d')],{'firstName':_0x2d7d08['body'][_0x621b('0x76')],'ListId':_0x371f3e[_0x621b('0x89')]});_0x1eab8a[_0x2d7d08[_0x621b('0x5d')]['mapKey']]=_0x2d7d08['body'][_0x621b('0x76')];return db[_0x621b('0x6e')][_0x621b('0x5b')](_0x1eab8a,{'fields':_0x5e995c,'raw':!![]});}})[_0x621b('0x32')](handleEntityNotFound(_0x1404a5,null))[_0x621b('0x32')](function(_0x362968){_0xfdda38[_0x621b('0x8a')]=_0x362968;if(_0x362968){var _0x44236d={'ContactId':_0x362968['id'],'OpenchannelAccountId':_0x2d7d08[_0x621b('0x5e')]['id'],'from':(_0x362968[_0x621b('0x8b')]||'')+'\x20'+(_0x362968[_0x621b('0x8c')]||'')};var _0x5151f6={'OpenchannelAccountId':_0x2d7d08[_0x621b('0x5e')]['id'],'closed':![]};if(_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')]){_0x5151f6['threadId']=_0x2d7d08[_0x621b('0x5d')]['threadId'];return db[_0x621b('0x8e')]['find']({'where':_0x5151f6})[_0x621b('0x32')](function(_0xb28c92){if(_0xb28c92){return[_0xb28c92,![]];}_0x44236d[_0x621b('0x8d')]=_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')];_0x44236d[_0x621b('0x8f')]=_0x2d7d08['body']['externalUrl'];return db[_0x621b('0x8e')][_0x621b('0x5b')](_0x44236d)[_0x621b('0x32')](function(_0x2cf781){return[_0x2cf781,!![]];});});}else{_0x5151f6[_0x621b('0x8d')]=null;}_0x5151f6[_0x621b('0x90')]=_0x362968['id'];return db[_0x621b('0x8e')]['find']({'where':_0x5151f6})[_0x621b('0x32')](function(_0x3b6b14){if(_0x3b6b14){return[_0x3b6b14,![]];}return db[_0x621b('0x8e')]['create'](_0x44236d)[_0x621b('0x32')](function(_0x22c032){return[_0x22c032,!![]];});});}})[_0x621b('0x91')](function(_0x5119c4,_0x31727e){if(_0x5119c4){_0x4175e6=_0x31727e;if(!_0x31727e){var _0x709a6={'from':(_0xfdda38[_0x621b('0x8a')][_0x621b('0x8b')]||'')+'\x20'+(_0xfdda38[_0x621b('0x8a')]['lastName']||'')};if(_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')]&&_0x2d7d08[_0x621b('0x5d')][_0x621b('0x92')]&&_0x2d7d08[_0x621b('0x5d')][_0x621b('0x8d')]!=_0x2d7d08[_0x621b('0x5d')]['messageId']){_0x709a6[_0x621b('0x8d')]=_0x2d7d08[_0x621b('0x5d')][_0x621b('0x92')];}return _0x5119c4[_0x621b('0x31')](_0x709a6);}else{return _0x5119c4;}}})[_0x621b('0x32')](function(_0x3bb4af){_0xfdda38['interaction']=_0x3bb4af[_0x621b('0x34')]({'plain':!![]});_0xfdda38['interaction'][_0x621b('0x93')]=_0x4175e6;if(_0xfdda38[_0x621b('0x94')]['created']){if(_0xfdda38[_0x621b('0x82')][_0x621b('0x95')]){_0xfdda38[_0x621b('0x83')][_0x621b('0x96')]({'id':0x0,'priority':_0xfdda38['applications'][_0x621b('0x47')]+0x1,'app':_0x621b('0x97'),'appdata':_0x621b('0x98'),'interval':_0x621b('0x99')});}}return db[_0x621b('0x9a')][_0x621b('0x5b')]({'body':_0x2d7d08[_0x621b('0x5d')][_0x621b('0x5d')],'OpenchannelAccountId':_0x2d7d08['params']['id'],'OpenchannelInteractionId':_0x3bb4af['id'],'direction':'in','ContactId':_0xfdda38[_0x621b('0x8a')]['id'],'AttachmentId':_0x2d7d08['body'][_0x621b('0x9b')]});})[_0x621b('0x32')](function(_0x2fd11a){_0xfdda38[_0x621b('0x24')]=_0x2fd11a;if(_0xfdda38[_0x621b('0x94')][_0x621b('0x9c')]){return db[_0x621b('0x9d')][_0x621b('0x54')]({'attributes':['id',_0x621b('0x37')],'where':{'id':_0xfdda38[_0x621b('0x94')][_0x621b('0x9c')]}})[_0x621b('0x32')](function(_0x3ba83c){if(_0x3ba83c){_0xfdda38[_0x621b('0x83')][_0x621b('0x9e')]({'id':0x0,'priority':0x0,'app':_0x621b('0x9f'),'appdata':_0x3ba83c['name']+','+(_0xfdda38[_0x621b('0x82')][_0x621b('0xa0')]||0xa),'interval':_0x621b('0x99')});_0xfdda38[_0x621b('0xa1')]=![];}return respondWithRpcPromise(_0x621b('0xa2'),_0x621b('0xa3'),_0xfdda38);});}return respondWithRpcPromise(_0x621b('0xa2'),_0x621b('0xa3'),_0xfdda38);})[_0x621b('0x32')](function(_0x145587){respondWithRpcPromise('EventManager',_0x621b('0xa4'),{'event':_0x621b('0x6d'),'message':_0x145587},client9002);return _0x145587;})['then'](respondWithResult(_0x1404a5,null))['catch'](handleError(_0x1404a5,null));};exports['addApplications']=function(_0x351596,_0x516b8a,_0x216e4e){return db[_0x621b('0x3c')][_0x621b('0x6a')]({'where':{'id':_0x351596['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x516b8a,null))[_0x621b('0x32')](function(_0x2a98f3){if(_0x2a98f3){return db[_0x621b('0xa5')]['transaction'](function(_0x477b7c){return db[_0x621b('0x80')][_0x621b('0x33')]({'where':{'OpenchannelAccountId':_0x351596[_0x621b('0x5e')]['id']},'transaction':_0x477b7c})[_0x621b('0x32')](function(_0x9c66be){var _0x304d65=_[_0x621b('0x3b')](_0x351596[_0x621b('0x5d')],function(_0x495437){_0x495437['OpenchannelAccountId']=_0x351596['params']['id'];return _0x495437;});return db[_0x621b('0x80')][_0x621b('0xa6')](_0x304d65,{'transaction':_0x477b7c});});})['then'](function(){return db['OpenchannelApplication']['findAndCountAll']({'where':{'OpenchannelAccountId':_0x351596['params']['id']},'order':_0x621b('0x86')});});}})[_0x621b('0x32')](respondWithResult(_0x516b8a,null))[_0x621b('0x52')](handleError(_0x516b8a,null));};exports[_0x621b('0xa7')]=function(_0x823c68,_0x5a6154,_0x51cefe){var _0x58f64c={};var _0x554330={};var _0x39277d;var _0x2f920f;return db['OpenchannelAccount'][_0x621b('0x6a')]({'where':{'id':_0x823c68[_0x621b('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5a6154,null))[_0x621b('0x32')](function(_0x50529c){if(_0x50529c){_0x39277d=_0x50529c;_0x554330[_0x621b('0x40')]=_[_0x621b('0x41')](db['OpenchannelApplication'][_0x621b('0x3d')]);_0x554330[_0x621b('0x42')]=_[_0x621b('0x41')](_0x823c68[_0x621b('0x42')]);_0x554330[_0x621b('0x43')]=_[_0x621b('0x44')](_0x554330['model'],_0x554330['query']);_0x58f64c[_0x621b('0x46')]=_['intersection'](_0x554330[_0x621b('0x40')],qs[_0x621b('0x45')](_0x823c68[_0x621b('0x42')][_0x621b('0x45')]));_0x58f64c[_0x621b('0x46')]=_0x58f64c['attributes'][_0x621b('0x47')]?_0x58f64c[_0x621b('0x46')]:_0x554330[_0x621b('0x40')];_0x58f64c[_0x621b('0x49')]=qs[_0x621b('0x4a')](_0x823c68[_0x621b('0x42')][_0x621b('0x4a')]);_0x58f64c[_0x621b('0x4b')]=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x823c68['query'],_0x554330[_0x621b('0x43')]));if(_0x823c68['query']['filter']){_0x58f64c[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x58f64c['where'],{'$or':_[_0x621b('0x3b')](_0x58f64c[_0x621b('0x46')],function(_0xc30427){var _0x24e010={};_0x24e010[_0xc30427]={'$like':'%'+_0x823c68[_0x621b('0x42')][_0x621b('0x65')]+'%'};return _0x24e010;})});}_0x58f64c=_[_0x621b('0x4d')]({},_0x58f64c,_0x823c68['options']);return _0x39277d[_0x621b('0xa7')](_0x58f64c);}})[_0x621b('0x32')](function(_0x34c95b){if(_0x34c95b){_0x2f920f=_0x34c95b[_0x621b('0x47')];if(!_0x823c68[_0x621b('0x42')][_0x621b('0x64')](_0x621b('0x48'))){_0x58f64c[_0x621b('0x2b')]=qs[_0x621b('0x2b')](_0x823c68[_0x621b('0x42')][_0x621b('0x2b')]);_0x58f64c['offset']=qs['offset'](_0x823c68['query'][_0x621b('0x2d')]);}return _0x39277d[_0x621b('0xa7')](_0x58f64c);}})[_0x621b('0x32')](function(_0x14f490){if(_0x14f490){return _0x14f490?{'count':_0x2f920f,'rows':_0x14f490}:null;}})[_0x621b('0x32')](respondWithResult(_0x5a6154,null))[_0x621b('0x52')](handleError(_0x5a6154,null));};exports['getInteractions']=function(_0x4cd220,_0x251c4d,_0x2ae604){var _0x280eec={'raw':![],'where':{}};var _0x2db15c={};var _0xb1d537={'count':0x0,'rows':[]};return db[_0x621b('0x3c')]['findOne']({'where':{'id':_0x4cd220[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x251c4d,null))[_0x621b('0x32')](function(_0x30059c){if(_0x30059c){_0x2db15c[_0x621b('0x40')]=_[_0x621b('0x41')](db[_0x621b('0x8e')][_0x621b('0x3d')]);_0x2db15c['query']=_[_0x621b('0x41')](_0x4cd220[_0x621b('0x42')]);_0x2db15c[_0x621b('0x43')]=_[_0x621b('0x44')](_0x2db15c['model'],_0x2db15c['query']);_0x280eec[_0x621b('0x46')]=_[_0x621b('0x44')](_0x2db15c[_0x621b('0x40')],qs['fields'](_0x4cd220['query'][_0x621b('0x45')]));_0x280eec[_0x621b('0x46')]=_0x280eec[_0x621b('0x46')][_0x621b('0x47')]?_0x280eec[_0x621b('0x46')]:_0x2db15c[_0x621b('0x40')];if(!_0x4cd220[_0x621b('0x42')][_0x621b('0x64')](_0x621b('0x48'))){_0x280eec['limit']=qs[_0x621b('0x2b')](_0x4cd220['query'][_0x621b('0x2b')]);_0x280eec['offset']=qs[_0x621b('0x2d')](_0x4cd220[_0x621b('0x42')][_0x621b('0x2d')]);}_0x280eec['order']=qs['sort'](_0x4cd220[_0x621b('0x42')][_0x621b('0x4a')]);_0x280eec['where']=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x4cd220[_0x621b('0x42')],_0x2db15c[_0x621b('0x43')]));_0x280eec[_0x621b('0x4b')][_0x621b('0x61')]=_0x30059c['id'];if(_0x4cd220['query'][_0x621b('0x65')]){_0x280eec[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x280eec[_0x621b('0x4b')],{'$or':_[_0x621b('0x3b')](_0x280eec[_0x621b('0x46')],function(_0x46987f){var _0x4699cb={};_0x4699cb[_0x46987f]={'$like':'%'+_0x4cd220[_0x621b('0x42')][_0x621b('0x65')]+'%'};return _0x4699cb;})});}_0x280eec=_[_0x621b('0x4d')]({},_0x280eec,_0x4cd220[_0x621b('0x53')]);return db[_0x621b('0x8e')]['count']({'where':_0x280eec[_0x621b('0x4b')]})['then'](function(_0x169566){_0xb1d537[_0x621b('0x2c')]=_0x169566;if(_0x4cd220[_0x621b('0x42')][_0x621b('0x4e')]){_0x280eec[_0x621b('0x4f')]=[{'model':db[_0x621b('0x6e')],'as':_0x621b('0xa8'),'required':![]},{'model':db[_0x621b('0x9d')],'as':_0x621b('0xa9'),'attributes':[_0x621b('0x37'),'fullname',_0x621b('0xaa')],'required':![]},{'model':db[_0x621b('0xab')],'as':_0x621b('0xac'),'attributes':['id','name',_0x621b('0xad')],'where':_0x4cd220[_0x621b('0x42')][_0x621b('0xae')]?{'id':_0x4cd220[_0x621b('0x42')]['tag']}:undefined,'required':_0x4cd220[_0x621b('0x42')][_0x621b('0xae')]?!![]:![]}];}return db[_0x621b('0x8e')][_0x621b('0x50')](_0x280eec);})[_0x621b('0x32')](function(_0x1a03d1){_0xb1d537['rows']=_0x1a03d1;return _0xb1d537;});}})[_0x621b('0x32')](respondWithFilteredResult(_0x251c4d,_0x280eec))['catch'](handleError(_0x251c4d,null));};exports[_0x621b('0xaf')]=function(_0x4ca588,_0x4e178c,_0x534c8e){return db[_0x621b('0x3c')][_0x621b('0x54')]({'where':{'id':_0x4ca588['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x4e178c,null))[_0x621b('0x32')](function(_0x4d10d6){if(_0x4d10d6){return _0x4d10d6[_0x621b('0xaf')](_0x4ca588[_0x621b('0x5d')][_0x621b('0x67')],_[_0x621b('0xb0')](_0x4ca588[_0x621b('0x5d')],[_0x621b('0x67'),'id'])||{})[_0x621b('0x91')](function(_0x2f8693){for(var _0x7cc27e=0x0;_0x7cc27e<_0x4ca588[_0x621b('0x5d')][_0x621b('0x67')]['length'];_0x7cc27e+=0x1){socket[_0x621b('0xb1')]('userOpenchannelAccount:save',{'UserId':Number(_0x4ca588['body'][_0x621b('0x67')][_0x7cc27e]),'OpenchannelAccountId':Number(_0x4ca588[_0x621b('0x5e')]['id'])});}return _0x2f8693;});}})[_0x621b('0x32')](respondWithResult(_0x4e178c,null))['catch'](handleError(_0x4e178c,null));};exports['removeAgents']=function(_0x5a7f7a,_0x450b32,_0x5c5b00){return db['OpenchannelAccount'][_0x621b('0x54')]({'where':{'id':_0x5a7f7a[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x450b32,null))[_0x621b('0x32')](function(_0x577325){if(_0x577325){return _0x577325[_0x621b('0xb2')](_0x5a7f7a[_0x621b('0x42')][_0x621b('0x67')])[_0x621b('0x32')](function(){if(_[_0x621b('0xb3')](_0x5a7f7a[_0x621b('0x42')][_0x621b('0x67')])){for(var _0x4d56fe=0x0;_0x4d56fe<_0x5a7f7a[_0x621b('0x42')]['ids']['length'];_0x4d56fe+=0x1){socket['emit'](_0x621b('0xb4'),{'UserId':Number(_0x5a7f7a[_0x621b('0x42')]['ids'][_0x4d56fe]),'OpenchannelAccountId':Number(_0x5a7f7a[_0x621b('0x5e')]['id'])});}}else{socket[_0x621b('0xb1')](_0x621b('0xb4'),{'UserId':Number(_0x5a7f7a[_0x621b('0x42')][_0x621b('0x67')]),'OpenchannelAccountId':Number(_0x5a7f7a[_0x621b('0x5e')]['id'])});}});}})[_0x621b('0x32')](respondWithStatusCode(_0x450b32,null))[_0x621b('0x52')](handleError(_0x450b32,null));};exports['getAgents']=function(_0x5e8d42,_0x59c096,_0x24a6da){var _0x3e4a94={};var _0x4fbe2b={};var _0x5af633;var _0x228509;return db[_0x621b('0x3c')][_0x621b('0x6a')]({'where':{'id':_0x5e8d42[_0x621b('0x5e')]['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x59c096,null))[_0x621b('0x32')](function(_0xc5b1b3){if(_0xc5b1b3){_0x5af633=_0xc5b1b3;_0x4fbe2b[_0x621b('0x40')]=_[_0x621b('0x41')](db[_0x621b('0x9d')]['rawAttributes']);_0x4fbe2b[_0x621b('0x42')]=_[_0x621b('0x41')](_0x5e8d42[_0x621b('0x42')]);_0x4fbe2b[_0x621b('0x43')]=_[_0x621b('0x44')](_0x4fbe2b[_0x621b('0x40')],_0x4fbe2b[_0x621b('0x42')]);_0x3e4a94[_0x621b('0x46')]=_[_0x621b('0x44')](_0x4fbe2b[_0x621b('0x40')],qs['fields'](_0x5e8d42['query'][_0x621b('0x45')]));_0x3e4a94[_0x621b('0x46')]=_0x3e4a94[_0x621b('0x46')][_0x621b('0x47')]?_0x3e4a94[_0x621b('0x46')]:_0x4fbe2b[_0x621b('0x40')];_0x3e4a94[_0x621b('0x49')]=qs['sort'](_0x5e8d42[_0x621b('0x42')][_0x621b('0x4a')]);_0x3e4a94['where']=qs[_0x621b('0x43')](_[_0x621b('0x6b')](_0x5e8d42[_0x621b('0x42')],_0x4fbe2b['filters']));if(_0x5e8d42[_0x621b('0x42')][_0x621b('0x65')]){_0x3e4a94[_0x621b('0x4b')]=_[_0x621b('0x4d')](_0x3e4a94['where'],{'$or':_[_0x621b('0x3b')](_0x3e4a94['attributes'],function(_0x119972){var _0xe62f9={};_0xe62f9[_0x119972]={'$like':'%'+_0x5e8d42[_0x621b('0x42')]['filter']+'%'};return _0xe62f9;})});}_0x3e4a94=_['merge']({},_0x3e4a94,_0x5e8d42[_0x621b('0x53')]);return _0x5af633['getAgents'](_0x3e4a94);}})[_0x621b('0x32')](function(_0x2b73d6){if(_0x2b73d6){_0x228509=_0x2b73d6['length'];if(!_0x5e8d42['query'][_0x621b('0x64')](_0x621b('0x48'))){_0x3e4a94['limit']=qs[_0x621b('0x2b')](_0x5e8d42[_0x621b('0x42')][_0x621b('0x2b')]);_0x3e4a94[_0x621b('0x2d')]=qs[_0x621b('0x2d')](_0x5e8d42['query'][_0x621b('0x2d')]);}return _0x5af633[_0x621b('0xb5')](_0x3e4a94);}})[_0x621b('0x32')](function(_0xe4c607){if(_0xe4c607){return _0xe4c607?{'count':_0x228509,'rows':_0xe4c607}:null;}})[_0x621b('0x32')](respondWithResult(_0x59c096,null))[_0x621b('0x52')](handleError(_0x59c096,null));};exports['send']=function(_0x1bb48a,_0x7c8b71,_0x5d51dd){var _0x321960,_0x3dd346,_0x4f2fa6;if(_[_0x621b('0x75')](_0x1bb48a[_0x621b('0x5d')]['body'])||_0x1bb48a['body'][_0x621b('0x5d')]===''){throw new db[(_0x621b('0x6f'))][(_0x621b('0x70'))](_0x621b('0x77'));}if(_[_0x621b('0x75')](_0x1bb48a[_0x621b('0x5d')]['to'])){}_0x321960=_0x1bb48a[_0x621b('0x5d')]['to'];return db['OpenchannelAccount'][_0x621b('0x6a')]({'where':{'id':_0x1bb48a['params']['id']}})[_0x621b('0x32')](handleEntityNotFound(_0x7c8b71,null))[_0x621b('0x32')](function(_0x311ea2){if(_0x311ea2){return db[_0x621b('0x3c')][_0x621b('0x54')]({'where':{'id':_0x311ea2['id']},'include':[{'model':db[_0x621b('0x7c')],'as':'List','include':[{'model':db[_0x621b('0x6e')],'as':'Contacts','where':{[_0x311ea2[_0x621b('0x78')]]:_0x321960},'limit':0x1,'order':[[_0x621b('0x72'),'DESC']]}]}]})[_0x621b('0x32')](handleEntityNotFound(_0x7c8b71,null))['then'](function(_0x21a77f){if(_0x21a77f&&_0x21a77f[_0x621b('0x7d')]){_0x3dd346=_0x21a77f['get']({'plain':!![]});if(_0x3dd346['List']&&_0x3dd346[_0x621b('0x7d')]['Contacts'][_0x621b('0x47')]){return _0x3dd346['List'][_0x621b('0x7e')][0x0];}return db[_0x621b('0x6e')]['create'](_['defaults'](_0x1bb48a['body'],{'firstName':_0x321960,[_0x21a77f[_0x621b('0x78')]]:_0x321960,'phone':_0x321960,'ListId':_0x3dd346[_0x621b('0x89')]}));}})[_0x621b('0x32')](handleEntityNotFound(_0x7c8b71,null))['then'](function(_0x1fd4e7){if(_0x1fd4e7){_0x4f2fa6=_0x1fd4e7;return db[_0x621b('0x8e')][_0x621b('0x54')]({'where':{'ContactId':_0x4f2fa6['id'],'closed':![],'OpenchannelAccountId':_0x3dd346['id']}})[_0x621b('0x32')](function(_0x28b5c7){if(_0x28b5c7){return[_0x28b5c7,![]];}return db[_0x621b('0x8e')][_0x621b('0x5b')]({'UserId':_0x1bb48a[_0x621b('0x55')]['id'],'ContactId':_0x4f2fa6['id'],'OpenchannelAccountId':_0x3dd346['id'],'lastMsgDirection':_0x621b('0xb6'),'Messages':[_['merge'](_0x1bb48a[_0x621b('0x5d')],{'read':![],'body':_0x1bb48a['body'][_0x621b('0x5d')],'OpenchannelAccountId':_0x3dd346['id'],'UserId':_0x1bb48a['user']['id'],'ContactId':_0x4f2fa6['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x621b('0xb7')}]})[_0x621b('0x32')](function(_0x2389c0){return[_0x2389c0,!![]];});});}})[_0x621b('0x91')](function(_0x1c67d7,_0x16552c){if(_0x16552c){return _0x1c67d7;}return db[_0x621b('0x9a')][_0x621b('0x5b')](_[_0x621b('0x4d')](_0x1bb48a[_0x621b('0x5d')],{'read':![],'body':_0x1bb48a[_0x621b('0x5d')]['body'],'OpenchannelAccountId':_0x3dd346['id'],'OpenchannelInteractionId':_0x1c67d7['id'],'UserId':_0x1bb48a['user']['id'],'ContactId':_0x4f2fa6['id']}))[_0x621b('0x32')](function(_0x4e1c82){_0x1c67d7[_0x621b('0xb8')]['Messages']=[];_0x1c67d7['dataValues'][_0x621b('0xb7')]['push'](_0x4e1c82[_0x621b('0xb8')]);return _0x1c67d7;});});}})[_0x621b('0x32')](respondWithResult(_0x7c8b71,null))[_0x621b('0x52')](handleError(_0x7c8b71,null));};
\ No newline at end of file
index e978f0d..3608c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['remove','emit','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners'];(function(_0x19c0ea,_0x19f687){var _0x3db00e=function(_0x320ddb){while(--_0x320ddb){_0x19c0ea['push'](_0x19c0ea['shift']());}};_0x3db00e(++_0x19f687);}(_0x55e0,0xdc));var _0x055e=function(_0x5390b3,_0x207725){_0x5390b3=_0x5390b3-0x0;var _0x42d5be=_0x55e0[_0x5390b3];return _0x42d5be;};'use strict';var EventEmitter=require(_0x055e('0x0'));var OpenchannelAccount=require(_0x055e('0x1'))['db'][_0x055e('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x055e('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x055e('0x4')};function emitEvent(_0x2d9bd5){return function(_0x33cd7b,_0x2773e4,_0x157473){OpenchannelAccountEvents[_0x055e('0x5')](_0x2d9bd5+':'+_0x33cd7b['id'],_0x33cd7b);OpenchannelAccountEvents['emit'](_0x2d9bd5,_0x33cd7b);_0x157473(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0x055e('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
+var _0x13f6=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x17214a,_0x5dede8){var _0x1903db=function(_0x110712){while(--_0x110712){_0x17214a['push'](_0x17214a['shift']());}};_0x1903db(++_0x5dede8);}(_0x13f6,0x124));var _0x613f=function(_0x58a440,_0x2b62a9){_0x58a440=_0x58a440-0x0;var _0x40ff4b=_0x13f6[_0x58a440];return _0x40ff4b;};'use strict';var EventEmitter=require(_0x613f('0x0'));var OpenchannelAccount=require(_0x613f('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x613f('0x2'),'afterUpdate':_0x613f('0x3'),'afterDestroy':_0x613f('0x4')};function emitEvent(_0x5414ff){return function(_0x179f6e,_0x1e01e3,_0x20af2f){OpenchannelAccountEvents['emit'](_0x5414ff+':'+_0x179f6e['id'],_0x179f6e);OpenchannelAccountEvents[_0x613f('0x5')](_0x5414ff,_0x179f6e);_0x20af2f(null);};}for(var e in events){if(events[_0x613f('0x6')](e)){var event=events[e];OpenchannelAccount['hook'](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 5b73488..7dbe562 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(_0x19464d,_0x3a3d0c){var _0x14614c=function(_0x3fdac6){while(--_0x3fdac6){_0x19464d['push'](_0x19464d['shift']());}};_0x14614c(++_0x3a3d0c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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(_0xe6138e,_0x37312e){var _0x238b59=function(_0x8fadfe){while(--_0x8fadfe){_0xe6138e['push'](_0xe6138e['shift']());}};_0x238b59(++_0x37312e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'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 666971f..42b1d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6582=['code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','./openchannelAccount.socket','register','request','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2a1814,_0x3531d6){var _0x36b7ba=function(_0xcbbbe9){while(--_0xcbbbe9){_0x2a1814['push'](_0x2a1814['shift']());}};_0x36b7ba(++_0x3531d6);}(_0x6582,0x108));var _0x2658=function(_0x3c0a36,_0x8e2f2b){_0x3c0a36=_0x3c0a36-0x0;var _0x5ac4cb=_0x6582[_0x3c0a36];return _0x5ac4cb;};'use strict';var _=require(_0x2658('0x0'));var util=require(_0x2658('0x1'));var moment=require(_0x2658('0x2'));var BPromise=require(_0x2658('0x3'));var rs=require(_0x2658('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2658('0x5'))['db'];var utils=require(_0x2658('0x6'));var logger=require(_0x2658('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2658('0x8')][_0x2658('0x9')]({'port':0x232a});config[_0x2658('0xa')]=_[_0x2658('0xb')](config[_0x2658('0xa')],{'host':_0x2658('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2658('0xa')]));require(_0x2658('0xd'))[_0x2658('0xe')](socket);function respondWithRpcPromise(_0x99b9db,_0x455ff9,_0x2b2561){return new BPromise(function(_0x3f22a5,_0x1aaaac){return client[_0x2658('0xf')](_0x99b9db,_0x2b2561)['then'](function(_0x20fe6d){logger['info'](_0x2658('0x10'),_0x455ff9,_0x2658('0x11'));logger[_0x2658('0x12')](_0x2658('0x13'),_0x455ff9,_0x2658('0x11'),JSON[_0x2658('0x14')](_0x20fe6d));if(_0x20fe6d[_0x2658('0x15')]){if(_0x20fe6d['error'][_0x2658('0x16')]===0x1f4){logger[_0x2658('0x15')](_0x2658('0x10'),_0x455ff9,_0x20fe6d[_0x2658('0x15')][_0x2658('0x17')]);return _0x1aaaac(_0x20fe6d['error'][_0x2658('0x17')]);}logger[_0x2658('0x15')](_0x2658('0x10'),_0x455ff9,_0x20fe6d['error'][_0x2658('0x17')]);return _0x3f22a5(_0x20fe6d[_0x2658('0x15')][_0x2658('0x17')]);}else{logger[_0x2658('0x18')]('OpenchannelAccount,\x20%s,\x20%s',_0x455ff9,_0x2658('0x11'));_0x3f22a5(_0x20fe6d['result'][_0x2658('0x17')]);}})[_0x2658('0x19')](function(_0x307220){logger[_0x2658('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x455ff9,_0x307220);_0x1aaaac(_0x307220);});});}
\ No newline at end of file
+var _0x74f0=['message','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','register','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2f5290,_0x3b4318){var _0x4d84d4=function(_0x19dae4){while(--_0x19dae4){_0x2f5290['push'](_0x2f5290['shift']());}};_0x4d84d4(++_0x3b4318);}(_0x74f0,0xf3));var _0x074f=function(_0x34ed48,_0x2cc995){_0x34ed48=_0x34ed48-0x0;var _0x37da5c=_0x74f0[_0x34ed48];return _0x37da5c;};'use strict';var _=require('lodash');var util=require(_0x074f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x074f('0x1'));var fs=require('fs');var Redis=require(_0x074f('0x2'));var db=require(_0x074f('0x3'))['db'];var utils=require(_0x074f('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x074f('0x5'));var jayson=require(_0x074f('0x6'));var client=jayson[_0x074f('0x7')][_0x074f('0x8')]({'port':0x232a});config[_0x074f('0x9')]=_[_0x074f('0xa')](config[_0x074f('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x074f('0xb'))(new Redis(config[_0x074f('0x9')]));require('./openchannelAccount.socket')[_0x074f('0xc')](socket);function respondWithRpcPromise(_0x1a778a,_0x4337f9,_0x33d8c4){return new BPromise(function(_0x40179d,_0x4f37e1){return client['request'](_0x1a778a,_0x33d8c4)[_0x074f('0xd')](function(_0x41646d){logger[_0x074f('0xe')](_0x074f('0xf'),_0x4337f9,_0x074f('0x10'));logger[_0x074f('0x11')](_0x074f('0x12'),_0x4337f9,_0x074f('0x10'),JSON[_0x074f('0x13')](_0x41646d));if(_0x41646d['error']){if(_0x41646d[_0x074f('0x14')]['code']===0x1f4){logger[_0x074f('0x14')](_0x074f('0xf'),_0x4337f9,_0x41646d[_0x074f('0x14')][_0x074f('0x15')]);return _0x4f37e1(_0x41646d[_0x074f('0x14')][_0x074f('0x15')]);}logger[_0x074f('0x14')](_0x074f('0xf'),_0x4337f9,_0x41646d[_0x074f('0x14')][_0x074f('0x15')]);return _0x40179d(_0x41646d[_0x074f('0x14')]['message']);}else{logger[_0x074f('0xe')](_0x074f('0xf'),_0x4337f9,_0x074f('0x10'));_0x40179d(_0x41646d[_0x074f('0x16')][_0x074f('0x15')]);}})[_0x074f('0x17')](function(_0x548aab){logger['error'](_0x074f('0xf'),_0x4337f9,_0x548aab);_0x4f37e1(_0x548aab);});});}
\ No newline at end of file
index 130b9d3..e967c44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8696=['openchannelAccount:','./openchannelAccount.events','save','update','emit','register','length'];(function(_0x2ffc5d,_0x564eba){var _0x57f0a=function(_0x44d8fb){while(--_0x44d8fb){_0x2ffc5d['push'](_0x2ffc5d['shift']());}};_0x57f0a(++_0x564eba);}(_0x8696,0x143));var _0x6869=function(_0xc1cd42,_0x59249a){_0xc1cd42=_0xc1cd42-0x0;var _0x56f172=_0x8696[_0xc1cd42];return _0x56f172;};'use strict';var OpenchannelAccountEvents=require(_0x6869('0x0'));var events=[_0x6869('0x1'),'remove',_0x6869('0x2')];function createListener(_0x596fbb,_0x3d6bc2){return function(_0x5befa3){_0x3d6bc2[_0x6869('0x3')](_0x596fbb,_0x5befa3);};}function removeListener(_0x4dadb5,_0x46c26d){return function(){OpenchannelAccountEvents['removeListener'](_0x4dadb5,_0x46c26d);};}exports[_0x6869('0x4')]=function(_0x45542c){for(var _0x54d39b=0x0,_0x4c8ad5=events[_0x6869('0x5')];_0x54d39b<_0x4c8ad5;_0x54d39b++){var _0x1e667d=events[_0x54d39b];var _0xa343ab=createListener(_0x6869('0x6')+_0x1e667d,_0x45542c);OpenchannelAccountEvents['on'](_0x1e667d,_0xa343ab);}};
\ No newline at end of file
+var _0x1c42=['remove','update','emit','removeListener','register','length','save'];(function(_0x1153ff,_0x2bb354){var _0xbc230a=function(_0x179812){while(--_0x179812){_0x1153ff['push'](_0x1153ff['shift']());}};_0xbc230a(++_0x2bb354);}(_0x1c42,0x13a));var _0x21c4=function(_0x203216,_0x3cce8a){_0x203216=_0x203216-0x0;var _0x35faf8=_0x1c42[_0x203216];return _0x35faf8;};'use strict';var OpenchannelAccountEvents=require('./openchannelAccount.events');var events=[_0x21c4('0x0'),_0x21c4('0x1'),_0x21c4('0x2')];function createListener(_0x558257,_0x27cb4a){return function(_0x40bc3e){_0x27cb4a[_0x21c4('0x3')](_0x558257,_0x40bc3e);};}function removeListener(_0xd7340,_0x435179){return function(){OpenchannelAccountEvents[_0x21c4('0x4')](_0xd7340,_0x435179);};}exports[_0x21c4('0x5')]=function(_0x8d4312){for(var _0x4fc4da=0x0,_0x247ec9=events[_0x21c4('0x6')];_0x4fc4da<_0x247ec9;_0x4fc4da++){var _0x54b2ea=events[_0x4fc4da];var _0x184e75=createListener('openchannelAccount:'+_0x54b2ea,_0x8d4312);OpenchannelAccountEvents['on'](_0x54b2ea,_0x184e75);}};
\ No newline at end of file
index 7a0dd8b..aae486a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc90d=['path','Router','fs-extra','get','isAuthenticated','/:id','show','post','create','put','destroy','multer','util'];(function(_0x445619,_0x4d1e8d){var _0x1d2d7f=function(_0x24dc96){while(--_0x24dc96){_0x445619['push'](_0x445619['shift']());}};_0x1d2d7f(++_0x4d1e8d);}(_0xc90d,0x73));var _0xdc90=function(_0x3abe58,_0x184dd9){_0x3abe58=_0x3abe58-0x0;var _0x457389=_0xc90d[_0x3abe58];return _0x457389;};'use strict';var multer=require(_0xdc90('0x0'));var util=require(_0xdc90('0x1'));var path=require(_0xdc90('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xdc90('0x3')]();var fs_extra=require(_0xdc90('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./openchannelApplication.controller');router[_0xdc90('0x5')]('/',auth[_0xdc90('0x6')](),controller['index']);router[_0xdc90('0x5')](_0xdc90('0x7'),auth[_0xdc90('0x6')](),controller[_0xdc90('0x8')]);router[_0xdc90('0x9')]('/',auth[_0xdc90('0x6')](),controller[_0xdc90('0xa')]);router[_0xdc90('0xb')](_0xdc90('0x7'),auth[_0xdc90('0x6')](),controller['update']);router['delete'](_0xdc90('0x7'),auth[_0xdc90('0x6')](),controller[_0xdc90('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x08c2=['isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get'];(function(_0x55a802,_0x10ab3a){var _0x1a0461=function(_0x43d162){while(--_0x43d162){_0x55a802['push'](_0x55a802['shift']());}};_0x1a0461(++_0x10ab3a);}(_0x08c2,0x1e5));var _0x208c=function(_0x1dd2cc,_0x36ddfe){_0x1dd2cc=_0x1dd2cc-0x0;var _0x305d8e=_0x08c2[_0x1dd2cc];return _0x305d8e;};'use strict';var multer=require(_0x208c('0x0'));var util=require(_0x208c('0x1'));var path=require(_0x208c('0x2'));var timeout=require(_0x208c('0x3'));var express=require('express');var router=express[_0x208c('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x208c('0x5'));var config=require(_0x208c('0x6'));var controller=require(_0x208c('0x7'));router[_0x208c('0x8')]('/',auth[_0x208c('0x9')](),controller[_0x208c('0xa')]);router[_0x208c('0x8')](_0x208c('0xb'),auth[_0x208c('0x9')](),controller[_0x208c('0xc')]);router[_0x208c('0xd')]('/',auth[_0x208c('0x9')](),controller[_0x208c('0xe')]);router[_0x208c('0xf')]('/:id',auth[_0x208c('0x9')](),controller[_0x208c('0x10')]);router[_0x208c('0x11')](_0x208c('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x208c('0x12')]=router;
\ No newline at end of file
index 919b380..5bbaba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee64=['TEXT','*,*,*,*','sequelize','exports','STRING','noop'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xee64,0x1ca));var _0x4ee6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xee64[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4ee6('0x0'));module[_0x4ee6('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x4ee6('0x2')],'allowNull':![],'defaultValue':_0x4ee6('0x3')},'appdata':{'type':Sequelize[_0x4ee6('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x4ee6('0x5')}};
\ No newline at end of file
+var _0xe404=['exports','INTEGER','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0x24cdd5,_0x4232a0){var _0x52a09e=function(_0x2599f4){while(--_0x2599f4){_0x24cdd5['push'](_0x24cdd5['shift']());}};_0x52a09e(++_0x4232a0);}(_0xe404,0x117));var _0x4e40=function(_0x202829,_0x2de9a2){_0x202829=_0x202829-0x0;var _0x4003f3=_0xe404[_0x202829];return _0x4003f3;};'use strict';var Sequelize=require(_0x4e40('0x0'));module[_0x4e40('0x1')]={'priority':{'type':Sequelize[_0x4e40('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x4e40('0x3')],'allowNull':![],'defaultValue':_0x4e40('0x4')},'appdata':{'type':Sequelize[_0x4e40('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x4e40('0x6')}};
\ No newline at end of file
index e56c670..ccc028c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03a5=['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','limit','offset','set','apply','save','update','then','destroy','error','stack','name','send','index','map','OpenchannelApplication','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','pick','filter','where','merge','options','count','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','rimraf','zip-dir','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x03a5,0x11a));var _0x503a=function(_0x2c1841,_0x505204){_0x2c1841=_0x2c1841-0x0;var _0x28d148=_0x03a5[_0x2c1841];return _0x28d148;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x503a('0x0'));var zipdir=require(_0x503a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x503a('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x503a('0x3'));var util=require(_0x503a('0x4'));var path=require('path');var sox=require(_0x503a('0x5'));var csv=require(_0x503a('0x6'));var ejs=require(_0x503a('0x7'));var fs=require('fs');var fs_extra=require(_0x503a('0x8'));var _=require(_0x503a('0x9'));var squel=require(_0x503a('0xa'));var crypto=require(_0x503a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x503a('0x6'));var querystring=require(_0x503a('0xc'));var Papa=require('papaparse');var Redis=require(_0x503a('0xd'));var authService=require(_0x503a('0xe'));var qs=require(_0x503a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x503a('0x10'));var logger=require(_0x503a('0x11'))(_0x503a('0x12'));var utils=require(_0x503a('0x13'));var config=require(_0x503a('0x14'));var licenseUtil=require(_0x503a('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43947a,_0x4d9822){_0x4d9822=_0x4d9822||0xcc;return function(_0x5285a3){if(_0x5285a3){return _0x43947a[_0x503a('0x16')](_0x4d9822);}return _0x43947a[_0x503a('0x17')](_0x4d9822)[_0x503a('0x18')]();};}function respondWithResult(_0x5e9888,_0x2ded9f){_0x2ded9f=_0x2ded9f||0xc8;return function(_0x227e51){if(_0x227e51){return _0x5e9888['status'](_0x2ded9f)[_0x503a('0x19')](_0x227e51);}};}function respondWithFilteredResult(_0x473e6c,_0x4bac91){return function(_0x373df2){if(_0x373df2){var _0x28d80b=typeof _0x4bac91['offset']===_0x503a('0x1a')&&typeof _0x4bac91[_0x503a('0x1b')]===_0x503a('0x1a');var _0xb738ce=_0x373df2['count'];var _0x1cdf08=_0x28d80b?0x0:_0x4bac91['offset'];var _0x212894=_0x28d80b?_0x373df2['count']:_0x4bac91[_0x503a('0x1c')]+_0x4bac91['limit'];var _0x21daac;if(_0x212894>=_0xb738ce){_0x212894=_0xb738ce;_0x21daac=0xc8;}else{_0x21daac=0xce;}_0x473e6c[_0x503a('0x17')](_0x21daac);return _0x473e6c[_0x503a('0x1d')]('Content-Range',_0x1cdf08+'-'+_0x212894+'/'+_0xb738ce)[_0x503a('0x19')](_0x373df2);}return null;};}function patchUpdates(_0x595d6d){return function(_0x296aa5){try{jsonpatch[_0x503a('0x1e')](_0x296aa5,_0x595d6d,!![]);}catch(_0x13f584){return BPromise['reject'](_0x13f584);}return _0x296aa5[_0x503a('0x1f')]();};}function saveUpdates(_0x7d56df,_0x557ee2){return function(_0x3075de){if(_0x3075de){return _0x3075de[_0x503a('0x20')](_0x7d56df)[_0x503a('0x21')](function(_0x375d5c){return _0x375d5c;});}return null;};}function removeEntity(_0x2edfd3,_0x374c6a){return function(_0xfa6c97){if(_0xfa6c97){return _0xfa6c97[_0x503a('0x22')]()[_0x503a('0x21')](function(){_0x2edfd3[_0x503a('0x17')](0xcc)[_0x503a('0x18')]();});}};}function handleEntityNotFound(_0x1faab7,_0x1f6b1e){return function(_0x36b781){if(!_0x36b781){_0x1faab7[_0x503a('0x16')](0x194);}return _0x36b781;};}function handleError(_0x579047,_0x36187a){_0x36187a=_0x36187a||0x1f4;return function(_0x52045c){logger[_0x503a('0x23')](_0x52045c[_0x503a('0x24')]);if(_0x52045c[_0x503a('0x25')]){delete _0x52045c[_0x503a('0x25')];}_0x579047['status'](_0x36187a)[_0x503a('0x26')](_0x52045c);};}exports[_0x503a('0x27')]=function(_0x32f85f,_0xdec58a){var _0x5f4f74={},_0x11459b={},_0x1e0948={'count':0x0,'rows':[]};var _0x5c94d6=_[_0x503a('0x28')](db[_0x503a('0x29')]['rawAttributes'],function(_0x64f767){return{'name':_0x64f767[_0x503a('0x2a')],'type':_0x64f767[_0x503a('0x2b')][_0x503a('0x2c')]};});_0x11459b[_0x503a('0x2d')]=_[_0x503a('0x28')](_0x5c94d6,_0x503a('0x25'));_0x11459b[_0x503a('0x2e')]=_[_0x503a('0x2f')](_0x32f85f[_0x503a('0x2e')]);_0x11459b[_0x503a('0x30')]=_[_0x503a('0x31')](_0x11459b[_0x503a('0x2d')],_0x11459b[_0x503a('0x2e')]);_0x5f4f74[_0x503a('0x32')]=_[_0x503a('0x31')](_0x11459b[_0x503a('0x2d')],qs[_0x503a('0x33')](_0x32f85f[_0x503a('0x2e')]['fields']));_0x5f4f74[_0x503a('0x32')]=_0x5f4f74[_0x503a('0x32')][_0x503a('0x34')]?_0x5f4f74[_0x503a('0x32')]:_0x11459b[_0x503a('0x2d')];if(!_0x32f85f[_0x503a('0x2e')][_0x503a('0x35')](_0x503a('0x36'))){_0x5f4f74[_0x503a('0x1b')]=qs['limit'](_0x32f85f['query']['limit']);_0x5f4f74['offset']=qs[_0x503a('0x1c')](_0x32f85f[_0x503a('0x2e')][_0x503a('0x1c')]);}_0x5f4f74[_0x503a('0x37')]=qs['sort'](_0x32f85f[_0x503a('0x2e')]['sort']);_0x5f4f74['where']=qs[_0x503a('0x30')](_[_0x503a('0x38')](_0x32f85f[_0x503a('0x2e')],_0x11459b[_0x503a('0x30')]),_0x5c94d6);if(_0x32f85f[_0x503a('0x2e')][_0x503a('0x39')]){_0x5f4f74[_0x503a('0x3a')]=_[_0x503a('0x3b')](_0x5f4f74[_0x503a('0x3a')],{'$or':_[_0x503a('0x28')](_0x5c94d6,function(_0xbc5efe){if(_0xbc5efe['type']!=='VIRTUAL'){var _0x7df78a={};_0x7df78a[_0xbc5efe['name']]={'$like':'%'+_0x32f85f[_0x503a('0x2e')]['filter']+'%'};return _0x7df78a;}})});}_0x5f4f74=_['merge']({},_0x5f4f74,_0x32f85f[_0x503a('0x3c')]);var _0x2f440f={'where':_0x5f4f74[_0x503a('0x3a')]};return db[_0x503a('0x29')][_0x503a('0x3d')](_0x2f440f)[_0x503a('0x21')](function(_0x598903){_0x1e0948[_0x503a('0x3d')]=_0x598903;if(_0x32f85f['query'][_0x503a('0x3e')]){_0x5f4f74[_0x503a('0x3f')]=[{'all':!![]}];}return db[_0x503a('0x29')][_0x503a('0x40')](_0x5f4f74);})[_0x503a('0x21')](function(_0x522931){_0x1e0948[_0x503a('0x41')]=_0x522931;return _0x1e0948;})[_0x503a('0x21')](respondWithFilteredResult(_0xdec58a,_0x5f4f74))[_0x503a('0x42')](handleError(_0xdec58a,null));};exports[_0x503a('0x43')]=function(_0x18c157,_0x50f53a){var _0xea5717={'raw':!![],'where':{'id':_0x18c157[_0x503a('0x44')]['id']}},_0x2aa7c1={};_0x2aa7c1[_0x503a('0x2d')]=_[_0x503a('0x2f')](db[_0x503a('0x29')][_0x503a('0x45')]);_0x2aa7c1[_0x503a('0x2e')]=_['keys'](_0x18c157[_0x503a('0x2e')]);_0x2aa7c1['filters']=_['intersection'](_0x2aa7c1[_0x503a('0x2d')],_0x2aa7c1['query']);_0xea5717['attributes']=_[_0x503a('0x31')](_0x2aa7c1[_0x503a('0x2d')],qs[_0x503a('0x33')](_0x18c157[_0x503a('0x2e')][_0x503a('0x33')]));_0xea5717[_0x503a('0x32')]=_0xea5717[_0x503a('0x32')]['length']?_0xea5717['attributes']:_0x2aa7c1['model'];if(_0x18c157[_0x503a('0x2e')][_0x503a('0x3e')]){_0xea5717[_0x503a('0x3f')]=[{'all':!![]}];}_0xea5717=_[_0x503a('0x3b')]({},_0xea5717,_0x18c157[_0x503a('0x3c')]);return db[_0x503a('0x29')][_0x503a('0x46')](_0xea5717)[_0x503a('0x21')](handleEntityNotFound(_0x50f53a,null))[_0x503a('0x21')](respondWithResult(_0x50f53a,null))['catch'](handleError(_0x50f53a,null));};exports[_0x503a('0x47')]=function(_0x721963,_0x2110f3){return db['OpenchannelApplication'][_0x503a('0x47')](_0x721963[_0x503a('0x48')],{})[_0x503a('0x21')](respondWithResult(_0x2110f3,0xc9))[_0x503a('0x42')](handleError(_0x2110f3,null));};exports['update']=function(_0x1eef55,_0x22ba76){if(_0x1eef55[_0x503a('0x48')]['id']){delete _0x1eef55[_0x503a('0x48')]['id'];}return db[_0x503a('0x29')]['find']({'where':{'id':_0x1eef55[_0x503a('0x44')]['id']}})[_0x503a('0x21')](handleEntityNotFound(_0x22ba76,null))[_0x503a('0x21')](saveUpdates(_0x1eef55[_0x503a('0x48')],null))[_0x503a('0x21')](respondWithResult(_0x22ba76,null))[_0x503a('0x42')](handleError(_0x22ba76,null));};exports[_0x503a('0x22')]=function(_0x5837a9,_0x49db72){return db[_0x503a('0x29')]['find']({'where':{'id':_0x5837a9[_0x503a('0x44')]['id']}})[_0x503a('0x21')](handleEntityNotFound(_0x49db72,null))[_0x503a('0x21')](removeEntity(_0x49db72,null))[_0x503a('0x42')](handleError(_0x49db72,null));};
\ No newline at end of file
+var _0xc5bd=['VIRTUAL','options','OpenchannelApplication','count','includeAll','include','findAll','rows','catch','params','find','create','body','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x49a456,_0x76c6d6){var _0x5818aa=function(_0x327b84){while(--_0x327b84){_0x49a456['push'](_0x49a456['shift']());}};_0x5818aa(++_0x76c6d6);}(_0xc5bd,0x184));var _0xdc5b=function(_0x23b494,_0x3caa8b){_0x23b494=_0x23b494-0x0;var _0xf0b3fe=_0xc5bd[_0x23b494];return _0xf0b3fe;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc5b('0x0'));var zipdir=require(_0xdc5b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xdc5b('0x2'));var moment=require(_0xdc5b('0x3'));var BPromise=require(_0xdc5b('0x4'));var Mustache=require(_0xdc5b('0x5'));var util=require('util');var path=require('path');var sox=require(_0xdc5b('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdc5b('0x7'));var _=require(_0xdc5b('0x8'));var squel=require(_0xdc5b('0x9'));var crypto=require(_0xdc5b('0xa'));var jsforce=require(_0xdc5b('0xb'));var deskjs=require(_0xdc5b('0xc'));var toCsv=require('to-csv');var querystring=require(_0xdc5b('0xd'));var Papa=require(_0xdc5b('0xe'));var Redis=require('ioredis');var authService=require(_0xdc5b('0xf'));var qs=require(_0xdc5b('0x10'));var as=require(_0xdc5b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdc5b('0x12'))(_0xdc5b('0x13'));var utils=require(_0xdc5b('0x14'));var config=require(_0xdc5b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xdc5b('0x16'))['db'];function respondWithStatusCode(_0x354141,_0x5d0867){_0x5d0867=_0x5d0867||0xcc;return function(_0x525601){if(_0x525601){return _0x354141['sendStatus'](_0x5d0867);}return _0x354141[_0xdc5b('0x17')](_0x5d0867)[_0xdc5b('0x18')]();};}function respondWithResult(_0x2bb8a5,_0x4f778a){_0x4f778a=_0x4f778a||0xc8;return function(_0x174754){if(_0x174754){return _0x2bb8a5[_0xdc5b('0x17')](_0x4f778a)['json'](_0x174754);}};}function respondWithFilteredResult(_0xe12104,_0x32bb19){return function(_0x4821e5){if(_0x4821e5){var _0x211e98=typeof _0x32bb19[_0xdc5b('0x19')]===_0xdc5b('0x1a')&&typeof _0x32bb19[_0xdc5b('0x1b')]===_0xdc5b('0x1a');var _0x3ae184=_0x4821e5['count'];var _0x402c64=_0x211e98?0x0:_0x32bb19[_0xdc5b('0x19')];var _0x2e792e=_0x211e98?_0x4821e5['count']:_0x32bb19[_0xdc5b('0x19')]+_0x32bb19['limit'];var _0x59f500;if(_0x2e792e>=_0x3ae184){_0x2e792e=_0x3ae184;_0x59f500=0xc8;}else{_0x59f500=0xce;}_0xe12104[_0xdc5b('0x17')](_0x59f500);return _0xe12104[_0xdc5b('0x1c')](_0xdc5b('0x1d'),_0x402c64+'-'+_0x2e792e+'/'+_0x3ae184)[_0xdc5b('0x1e')](_0x4821e5);}return null;};}function patchUpdates(_0x490aac){return function(_0x126bb0){try{jsonpatch['apply'](_0x126bb0,_0x490aac,!![]);}catch(_0x5883e8){return BPromise[_0xdc5b('0x1f')](_0x5883e8);}return _0x126bb0[_0xdc5b('0x20')]();};}function saveUpdates(_0x3c71a2,_0x3ffb3c){return function(_0x5607ba){if(_0x5607ba){return _0x5607ba[_0xdc5b('0x21')](_0x3c71a2)[_0xdc5b('0x22')](function(_0x416f9e){return _0x416f9e;});}return null;};}function removeEntity(_0x5f8832,_0x4ab8db){return function(_0xcc1637){if(_0xcc1637){return _0xcc1637[_0xdc5b('0x23')]()[_0xdc5b('0x22')](function(){_0x5f8832[_0xdc5b('0x17')](0xcc)[_0xdc5b('0x18')]();});}};}function handleEntityNotFound(_0x3ae4e4,_0x181dce){return function(_0x43fb13){if(!_0x43fb13){_0x3ae4e4[_0xdc5b('0x24')](0x194);}return _0x43fb13;};}function handleError(_0x23816c,_0x4ef813){_0x4ef813=_0x4ef813||0x1f4;return function(_0x2558dd){logger[_0xdc5b('0x25')](_0x2558dd[_0xdc5b('0x26')]);if(_0x2558dd[_0xdc5b('0x27')]){delete _0x2558dd[_0xdc5b('0x27')];}_0x23816c[_0xdc5b('0x17')](_0x4ef813)[_0xdc5b('0x28')](_0x2558dd);};}exports['index']=function(_0x221fcd,_0x5d457d){var _0x4c3ae={},_0x8bdf78={},_0x36ebce={'count':0x0,'rows':[]};var _0x307206=_[_0xdc5b('0x29')](db['OpenchannelApplication'][_0xdc5b('0x2a')],function(_0x4015dd){return{'name':_0x4015dd[_0xdc5b('0x2b')],'type':_0x4015dd[_0xdc5b('0x2c')][_0xdc5b('0x2d')]};});_0x8bdf78['model']=_['map'](_0x307206,_0xdc5b('0x27'));_0x8bdf78[_0xdc5b('0x2e')]=_[_0xdc5b('0x2f')](_0x221fcd[_0xdc5b('0x2e')]);_0x8bdf78[_0xdc5b('0x30')]=_[_0xdc5b('0x31')](_0x8bdf78[_0xdc5b('0x32')],_0x8bdf78['query']);_0x4c3ae[_0xdc5b('0x33')]=_['intersection'](_0x8bdf78[_0xdc5b('0x32')],qs[_0xdc5b('0x34')](_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x34')]));_0x4c3ae['attributes']=_0x4c3ae[_0xdc5b('0x33')][_0xdc5b('0x35')]?_0x4c3ae[_0xdc5b('0x33')]:_0x8bdf78[_0xdc5b('0x32')];if(!_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x36')](_0xdc5b('0x37'))){_0x4c3ae[_0xdc5b('0x1b')]=qs[_0xdc5b('0x1b')](_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x1b')]);_0x4c3ae[_0xdc5b('0x19')]=qs['offset'](_0x221fcd[_0xdc5b('0x2e')]['offset']);}_0x4c3ae[_0xdc5b('0x38')]=qs[_0xdc5b('0x39')](_0x221fcd[_0xdc5b('0x2e')]['sort']);_0x4c3ae[_0xdc5b('0x3a')]=qs['filters'](_[_0xdc5b('0x3b')](_0x221fcd[_0xdc5b('0x2e')],_0x8bdf78[_0xdc5b('0x30')]),_0x307206);if(_0x221fcd['query'][_0xdc5b('0x3c')]){_0x4c3ae[_0xdc5b('0x3a')]=_[_0xdc5b('0x3d')](_0x4c3ae[_0xdc5b('0x3a')],{'$or':_[_0xdc5b('0x29')](_0x307206,function(_0x17d4ff){if(_0x17d4ff[_0xdc5b('0x2c')]!==_0xdc5b('0x3e')){var _0x401198={};_0x401198[_0x17d4ff['name']]={'$like':'%'+_0x221fcd['query'][_0xdc5b('0x3c')]+'%'};return _0x401198;}})});}_0x4c3ae=_[_0xdc5b('0x3d')]({},_0x4c3ae,_0x221fcd[_0xdc5b('0x3f')]);var _0x51a476={'where':_0x4c3ae[_0xdc5b('0x3a')]};return db[_0xdc5b('0x40')][_0xdc5b('0x41')](_0x51a476)[_0xdc5b('0x22')](function(_0x27dc4c){_0x36ebce['count']=_0x27dc4c;if(_0x221fcd[_0xdc5b('0x2e')][_0xdc5b('0x42')]){_0x4c3ae[_0xdc5b('0x43')]=[{'all':!![]}];}return db[_0xdc5b('0x40')][_0xdc5b('0x44')](_0x4c3ae);})[_0xdc5b('0x22')](function(_0x1d996b){_0x36ebce[_0xdc5b('0x45')]=_0x1d996b;return _0x36ebce;})[_0xdc5b('0x22')](respondWithFilteredResult(_0x5d457d,_0x4c3ae))[_0xdc5b('0x46')](handleError(_0x5d457d,null));};exports['show']=function(_0x5f48b1,_0x13239b){var _0x3b8e4a={'raw':!![],'where':{'id':_0x5f48b1[_0xdc5b('0x47')]['id']}},_0x355a81={};_0x355a81[_0xdc5b('0x32')]=_[_0xdc5b('0x2f')](db[_0xdc5b('0x40')][_0xdc5b('0x2a')]);_0x355a81[_0xdc5b('0x2e')]=_['keys'](_0x5f48b1[_0xdc5b('0x2e')]);_0x355a81[_0xdc5b('0x30')]=_[_0xdc5b('0x31')](_0x355a81['model'],_0x355a81[_0xdc5b('0x2e')]);_0x3b8e4a[_0xdc5b('0x33')]=_[_0xdc5b('0x31')](_0x355a81['model'],qs[_0xdc5b('0x34')](_0x5f48b1[_0xdc5b('0x2e')][_0xdc5b('0x34')]));_0x3b8e4a[_0xdc5b('0x33')]=_0x3b8e4a[_0xdc5b('0x33')]['length']?_0x3b8e4a[_0xdc5b('0x33')]:_0x355a81['model'];if(_0x5f48b1[_0xdc5b('0x2e')]['includeAll']){_0x3b8e4a['include']=[{'all':!![]}];}_0x3b8e4a=_[_0xdc5b('0x3d')]({},_0x3b8e4a,_0x5f48b1['options']);return db[_0xdc5b('0x40')][_0xdc5b('0x48')](_0x3b8e4a)[_0xdc5b('0x22')](handleEntityNotFound(_0x13239b,null))[_0xdc5b('0x22')](respondWithResult(_0x13239b,null))[_0xdc5b('0x46')](handleError(_0x13239b,null));};exports[_0xdc5b('0x49')]=function(_0x3dadb4,_0x3e6475){return db[_0xdc5b('0x40')]['create'](_0x3dadb4[_0xdc5b('0x4a')],{})[_0xdc5b('0x22')](respondWithResult(_0x3e6475,0xc9))['catch'](handleError(_0x3e6475,null));};exports[_0xdc5b('0x21')]=function(_0x4da6d8,_0x415048){if(_0x4da6d8['body']['id']){delete _0x4da6d8[_0xdc5b('0x4a')]['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x4da6d8[_0xdc5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x415048,null))['then'](saveUpdates(_0x4da6d8['body'],null))[_0xdc5b('0x22')](respondWithResult(_0x415048,null))[_0xdc5b('0x46')](handleError(_0x415048,null));};exports[_0xdc5b('0x23')]=function(_0x1a14b3,_0x28fcd8){return db[_0xdc5b('0x40')][_0xdc5b('0x48')]({'where':{'id':_0x1a14b3[_0xdc5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x28fcd8,null))[_0xdc5b('0x22')](removeEntity(_0x28fcd8,null))[_0xdc5b('0x46')](handleError(_0x28fcd8,null));};
\ No newline at end of file
index db73401..92a976f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeee8=['rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication','openchannel_applications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x39387f,_0x532e5e){var _0x48861b=function(_0x138dd0){while(--_0x138dd0){_0x39387f['push'](_0x39387f['shift']());}};_0x48861b(++_0x532e5e);}(_0xeee8,0x1ba));var _0x8eee=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xeee8[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x8eee('0x0'));var util=require('util');var logger=require(_0x8eee('0x1'))(_0x8eee('0x2'));var moment=require(_0x8eee('0x3'));var BPromise=require('bluebird');var rp=require(_0x8eee('0x4'));var fs=require('fs');var path=require(_0x8eee('0x5'));var rimraf=require(_0x8eee('0x6'));var config=require(_0x8eee('0x7'));var attributes=require(_0x8eee('0x8'));module[_0x8eee('0x9')]=function(_0x1fd95c,_0x46a1f4){return _0x1fd95c[_0x8eee('0xa')](_0x8eee('0xb'),attributes,{'tableName':_0x8eee('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8eee('0xd')});};
\ No newline at end of file
+var _0xc06d=['rimraf','./openchannelApplication.attributes','define','OpenchannelApplication','openchannel_applications','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x16337a,_0x4789a1){var _0x422365=function(_0x34f039){while(--_0x34f039){_0x16337a['push'](_0x16337a['shift']());}};_0x422365(++_0x4789a1);}(_0xc06d,0x1e5));var _0xdc06=function(_0x32e039,_0x5d3039){_0x32e039=_0x32e039-0x0;var _0x34f410=_0xc06d[_0x32e039];return _0x34f410;};'use strict';var _=require(_0xdc06('0x0'));var util=require(_0xdc06('0x1'));var logger=require(_0xdc06('0x2'))(_0xdc06('0x3'));var moment=require('moment');var BPromise=require(_0xdc06('0x4'));var rp=require(_0xdc06('0x5'));var fs=require('fs');var path=require(_0xdc06('0x6'));var rimraf=require(_0xdc06('0x7'));var config=require('../../config/environment');var attributes=require(_0xdc06('0x8'));module['exports']=function(_0x191772,_0x392f77){return _0x191772[_0xdc06('0x9')](_0xdc06('0xa'),attributes,{'tableName':_0xdc06('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a5699e0..fca53ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3857=['stringify','error','code','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','attributes','limit','then','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','info','request\x20sent','debug'];(function(_0x32b0e4,_0x435081){var _0x2fd9cf=function(_0x4384c5){while(--_0x4384c5){_0x32b0e4['push'](_0x32b0e4['shift']());}};_0x2fd9cf(++_0x435081);}(_0x3857,0x1f0));var _0x7385=function(_0x1bca06,_0x3577c6){_0x1bca06=_0x1bca06-0x0;var _0x253131=_0x3857[_0x1bca06];return _0x253131;};'use strict';var _=require(_0x7385('0x0'));var util=require(_0x7385('0x1'));var moment=require(_0x7385('0x2'));var BPromise=require(_0x7385('0x3'));var rs=require(_0x7385('0x4'));var fs=require('fs');var Redis=require(_0x7385('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7385('0x6'));var logger=require(_0x7385('0x7'))(_0x7385('0x8'));var config=require('../../config/environment');var jayson=require(_0x7385('0x9'));var client=jayson[_0x7385('0xa')][_0x7385('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x389dab,_0xc5918f,_0x4bae2b){return new BPromise(function(_0xcc77f1,_0x1e4e47){return client[_0x7385('0xc')](_0x389dab,_0x4bae2b)['then'](function(_0x295661){logger[_0x7385('0xd')]('OpenchannelApplication,\x20%s,\x20%s',_0xc5918f,_0x7385('0xe'));logger[_0x7385('0xf')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0xc5918f,_0x7385('0xe'),JSON[_0x7385('0x10')](_0x295661));if(_0x295661[_0x7385('0x11')]){if(_0x295661[_0x7385('0x11')][_0x7385('0x12')]===0x1f4){logger[_0x7385('0x11')](_0x7385('0x13'),_0xc5918f,_0x295661[_0x7385('0x11')]['message']);return _0x1e4e47(_0x295661[_0x7385('0x11')][_0x7385('0x14')]);}logger['error']('OpenchannelApplication,\x20%s,\x20%s',_0xc5918f,_0x295661[_0x7385('0x11')]['message']);return _0xcc77f1(_0x295661[_0x7385('0x11')][_0x7385('0x14')]);}else{logger[_0x7385('0xd')](_0x7385('0x13'),_0xc5918f,_0x7385('0xe'));_0xcc77f1(_0x295661[_0x7385('0x15')][_0x7385('0x14')]);}})[_0x7385('0x16')](function(_0x41e365){logger[_0x7385('0x11')](_0x7385('0x13'),_0xc5918f,_0x41e365);_0x1e4e47(_0x41e365);});});}exports[_0x7385('0x17')]=function(_0x507fea){var _0x5985e1=this;return new Promise(function(_0x5471ab,_0x3d3589){return db[_0x7385('0x18')][_0x7385('0x19')](_0x507fea[_0x7385('0x1a')],{'raw':_0x507fea[_0x7385('0x1b')]?_0x507fea['options'][_0x7385('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x507fea[_0x7385('0x1b')]?_0x507fea[_0x7385('0x1b')]['where']||null:null,'attributes':_0x507fea[_0x7385('0x1b')]?_0x507fea['options'][_0x7385('0x1d')]||null:null,'limit':_0x507fea[_0x7385('0x1b')]?_0x507fea[_0x7385('0x1b')][_0x7385('0x1e')]||null:null})[_0x7385('0x1f')](function(_0x1464d5){logger[_0x7385('0xd')](_0x7385('0x17'),_0x507fea);logger['debug']('UpdateOpenchannelApplication',_0x507fea,JSON[_0x7385('0x10')](_0x1464d5));_0x5471ab(_0x1464d5);})[_0x7385('0x16')](function(_0x2f1c5e){logger[_0x7385('0x11')]('UpdateOpenchannelApplication',_0x2f1c5e[_0x7385('0x14')],_0x507fea);_0x3d3589(_0x5985e1[_0x7385('0x11')](0x1f4,_0x2f1c5e[_0x7385('0x14')]));});});};
\ No newline at end of file
+var _0x2f3b=['catch','body','options','where','attributes','limit','UpdateOpenchannelApplication','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1112af,_0x1341c8){var _0x153496=function(_0x4aa7e1){while(--_0x4aa7e1){_0x1112af['push'](_0x1112af['shift']());}};_0x153496(++_0x1341c8);}(_0x2f3b,0x19c));var _0xb2f3=function(_0xe16390,_0x58c6e9){_0xe16390=_0xe16390-0x0;var _0x1ed342=_0x2f3b[_0xe16390];return _0x1ed342;};'use strict';var _=require(_0xb2f3('0x0'));var util=require('util');var moment=require(_0xb2f3('0x1'));var BPromise=require(_0xb2f3('0x2'));var rs=require(_0xb2f3('0x3'));var fs=require('fs');var Redis=require(_0xb2f3('0x4'));var db=require(_0xb2f3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb2f3('0x6'))(_0xb2f3('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xb2f3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x41bd6a,_0x27e7b2,_0x49bb50){return new BPromise(function(_0x4a5d6d,_0x5eb7e4){return client[_0xb2f3('0x9')](_0x41bd6a,_0x49bb50)[_0xb2f3('0xa')](function(_0x28d1ba){logger[_0xb2f3('0xb')](_0xb2f3('0xc'),_0x27e7b2,_0xb2f3('0xd'));logger[_0xb2f3('0xe')](_0xb2f3('0xf'),_0x27e7b2,_0xb2f3('0xd'),JSON[_0xb2f3('0x10')](_0x28d1ba));if(_0x28d1ba[_0xb2f3('0x11')]){if(_0x28d1ba[_0xb2f3('0x11')][_0xb2f3('0x12')]===0x1f4){logger[_0xb2f3('0x11')](_0xb2f3('0xc'),_0x27e7b2,_0x28d1ba['error'][_0xb2f3('0x13')]);return _0x5eb7e4(_0x28d1ba[_0xb2f3('0x11')]['message']);}logger[_0xb2f3('0x11')](_0xb2f3('0xc'),_0x27e7b2,_0x28d1ba[_0xb2f3('0x11')][_0xb2f3('0x13')]);return _0x4a5d6d(_0x28d1ba[_0xb2f3('0x11')]['message']);}else{logger[_0xb2f3('0xb')](_0xb2f3('0xc'),_0x27e7b2,_0xb2f3('0xd'));_0x4a5d6d(_0x28d1ba['result']['message']);}})[_0xb2f3('0x14')](function(_0x33c5b0){logger[_0xb2f3('0x11')](_0xb2f3('0xc'),_0x27e7b2,_0x33c5b0);_0x5eb7e4(_0x33c5b0);});});}exports['UpdateOpenchannelApplication']=function(_0x3ed74d){var _0x37ba58=this;return new Promise(function(_0x13f61f,_0x2bae50){return db['OpenchannelApplication']['update'](_0x3ed74d[_0xb2f3('0x15')],{'raw':_0x3ed74d[_0xb2f3('0x16')]?_0x3ed74d['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ed74d[_0xb2f3('0x16')]?_0x3ed74d['options'][_0xb2f3('0x17')]||null:null,'attributes':_0x3ed74d['options']?_0x3ed74d[_0xb2f3('0x16')][_0xb2f3('0x18')]||null:null,'limit':_0x3ed74d[_0xb2f3('0x16')]?_0x3ed74d[_0xb2f3('0x16')][_0xb2f3('0x19')]||null:null})[_0xb2f3('0xa')](function(_0x29d9bf){logger[_0xb2f3('0xb')]('UpdateOpenchannelApplication',_0x3ed74d);logger['debug'](_0xb2f3('0x1a'),_0x3ed74d,JSON['stringify'](_0x29d9bf));_0x13f61f(_0x29d9bf);})[_0xb2f3('0x14')](function(_0x219692){logger[_0xb2f3('0x11')](_0xb2f3('0x1a'),_0x219692[_0xb2f3('0x13')],_0x3ed74d);_0x2bae50(_0x37ba58['error'](0x1f4,_0x219692['message']));});});};
\ No newline at end of file
index 835bb85..bd488ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc97a=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','tracked','openchannel','openchannelinteraction:addtags','addTags','put','openchannelinteraction:update','update','delete','removeTags','exports','multer','util','path','connect-timeout','express'];(function(_0x5abf55,_0x4ac5ce){var _0x38157f=function(_0x3a97fd){while(--_0x3a97fd){_0x5abf55['push'](_0x5abf55['shift']());}};_0x38157f(++_0x4ac5ce);}(_0xc97a,0xd4));var _0xac97=function(_0x53c098,_0xdea94a){_0x53c098=_0x53c098-0x0;var _0x4cd7=_0xc97a[_0x53c098];return _0x4cd7;};'use strict';var multer=require(_0xac97('0x0'));var util=require(_0xac97('0x1'));var path=require(_0xac97('0x2'));var timeout=require(_0xac97('0x3'));var express=require(_0xac97('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xac97('0x5'));var interaction=require(_0xac97('0x6'));var config=require(_0xac97('0x7'));var controller=require('./openchannelInteraction.controller');router[_0xac97('0x8')]('/',auth[_0xac97('0x9')](),controller[_0xac97('0xa')]);router[_0xac97('0x8')](_0xac97('0xb'),auth['isAuthenticated'](),controller[_0xac97('0xc')]);router[_0xac97('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xac97('0xd')]);router[_0xac97('0x8')](_0xac97('0xe'),auth[_0xac97('0x9')](),controller[_0xac97('0xf')]);router['get']('/:id/download',auth['isAuthenticated'](),controller[_0xac97('0x10')]);router[_0xac97('0x11')]('/',auth[_0xac97('0x9')](),controller[_0xac97('0x12')]);router['post'](_0xac97('0xe'),auth[_0xac97('0x9')](),controller[_0xac97('0x13')]);router[_0xac97('0x11')](_0xac97('0x14'),auth['isAuthenticated'](),interaction[_0xac97('0x15')](_0xac97('0x16'),_0xac97('0x17')),controller[_0xac97('0x18')]);router[_0xac97('0x19')]('/:id',auth[_0xac97('0x9')](),interaction['tracked'](_0xac97('0x16'),_0xac97('0x1a')),controller[_0xac97('0x1b')]);router[_0xac97('0x1c')]('/:id',auth[_0xac97('0x9')](),interaction[_0xac97('0x15')](_0xac97('0x16'),'openchannelinteraction:destroy'),controller['destroy']);router['delete'](_0xac97('0x14'),auth[_0xac97('0x9')](),controller[_0xac97('0x1d')]);module[_0xac97('0x1e')]=router;
\ No newline at end of file
+var _0xce3f=['get','isAuthenticated','index','/describe','/:id','show','getMessages','/:id/download','download','post','/:id/messages','addMessage','/:id/tags','tracked','openchannelinteraction:addtags','addTags','openchannel','openchannelinteraction:update','update','delete','destroy','removeTags','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x458dcd,_0x5da2a5){var _0x37dcb2=function(_0x380276){while(--_0x380276){_0x458dcd['push'](_0x458dcd['shift']());}};_0x37dcb2(++_0x5da2a5);}(_0xce3f,0xe9));var _0xfce3=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xce3f[_0x42245d];return _0x4b211a;};'use strict';var multer=require(_0xfce3('0x0'));var util=require(_0xfce3('0x1'));var path=require(_0xfce3('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfce3('0x3')]();var fs_extra=require(_0xfce3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfce3('0x5'));var config=require(_0xfce3('0x6'));var controller=require('./openchannelInteraction.controller');router[_0xfce3('0x7')]('/',auth[_0xfce3('0x8')](),controller[_0xfce3('0x9')]);router[_0xfce3('0x7')](_0xfce3('0xa'),auth[_0xfce3('0x8')](),controller['describe']);router[_0xfce3('0x7')](_0xfce3('0xb'),auth[_0xfce3('0x8')](),controller[_0xfce3('0xc')]);router[_0xfce3('0x7')]('/:id/messages',auth[_0xfce3('0x8')](),controller[_0xfce3('0xd')]);router[_0xfce3('0x7')](_0xfce3('0xe'),auth['isAuthenticated'](),controller[_0xfce3('0xf')]);router[_0xfce3('0x10')]('/',auth[_0xfce3('0x8')](),controller['create']);router[_0xfce3('0x10')](_0xfce3('0x11'),auth[_0xfce3('0x8')](),controller[_0xfce3('0x12')]);router[_0xfce3('0x10')](_0xfce3('0x13'),auth[_0xfce3('0x8')](),interaction[_0xfce3('0x14')]('openchannel',_0xfce3('0x15')),controller[_0xfce3('0x16')]);router['put'](_0xfce3('0xb'),auth[_0xfce3('0x8')](),interaction[_0xfce3('0x14')](_0xfce3('0x17'),_0xfce3('0x18')),controller[_0xfce3('0x19')]);router[_0xfce3('0x1a')](_0xfce3('0xb'),auth[_0xfce3('0x8')](),interaction['tracked']('openchannel','openchannelinteraction:destroy'),controller[_0xfce3('0x1b')]);router[_0xfce3('0x1a')](_0xfce3('0x13'),auth[_0xfce3('0x8')](),controller[_0xfce3('0x1c')]);module[_0xfce3('0x1d')]=router;
\ No newline at end of file
index 40a2cab..cdfb97e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9362=['out','sequelize','BOOLEAN','STRING','DATE','ENUM'];(function(_0x4ee654,_0x3f3fec){var _0x4e07b9=function(_0x544305){while(--_0x544305){_0x4ee654['push'](_0x4ee654['shift']());}};_0x4e07b9(++_0x3f3fec);}(_0x9362,0x169));var _0x2936=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9362[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x2936('0x0'));module['exports']={'closed':{'type':Sequelize[_0x2936('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x2936('0x2')]},'secondDisposition':{'type':Sequelize[_0x2936('0x2')]},'thirdDisposition':{'type':Sequelize[_0x2936('0x2')]},'note':{'type':Sequelize[_0x2936('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x2936('0x2')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x2936('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x2936('0x4')]('in',_0x2936('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x2936('0x2')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x7314=['DATE','STRING','ENUM','BOOLEAN','sequelize','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x7314,0x100));var _0x4731=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7314[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x4731('0x0'));module[_0x4731('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x4731('0x2')]},'disposition':{'type':Sequelize[_0x4731('0x3')]},'secondDisposition':{'type':Sequelize[_0x4731('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4731('0x3')]},'read1stAt':{'type':Sequelize[_0x4731('0x2')]},'threadId':{'type':Sequelize[_0x4731('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x4731('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x4731('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x4731('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x4731('0x5')],'defaultValue':![]}};
\ No newline at end of file
index e67fd63..8805e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc86d=['OpenchannelInteractionId','show','params','includeAll','include','options','create','describe','OpenchannelMessage','addMessage','omit','ids','getMessages','findOne','nolimit','pick','YYYY-MM-DD\x20HH:mm:ss','findAll','rows','setTags','emit','openchannelInteractionTags:save','removeTags','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','fullname','CmContact','firstName','lastName','Attachment','direction','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','closed','closedAt','format','threadId','Private','pipe','createWriteStream','basename','out','System','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','then','destroy','stack','name','Users','TagIds','split','forEach','Tags','push','catch','map','OpenchannelInteraction','rawAttributes','fieldName','type','key','model','keys','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','parseSearch','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','body','some','compact','isEmpty','OpenchannelAccountId','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','group','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','DESC','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','i.OpenchannelAccountId\x20IN\x20?','sequelize','count','keyBy','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','toString','ui.OpenchannelInteractionId\x20IN\x20?','groupBy'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xc86d,0x129));var _0xdc86=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xc86d[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0xdc86('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdc86('0x1'));var rp=require(_0xdc86('0x2'));var moment=require(_0xdc86('0x3'));var BPromise=require(_0xdc86('0x4'));var Mustache=require(_0xdc86('0x5'));var util=require(_0xdc86('0x6'));var path=require('path');var sox=require(_0xdc86('0x7'));var csv=require(_0xdc86('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdc86('0x9'));var _=require('lodash');var squel=require(_0xdc86('0xa'));var crypto=require(_0xdc86('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdc86('0xc'));var toCsv=require(_0xdc86('0x8'));var querystring=require(_0xdc86('0xd'));var Papa=require(_0xdc86('0xe'));var Redis=require(_0xdc86('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xdc86('0x10'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0xdc86('0x11'));var logger=require(_0xdc86('0x12'))(_0xdc86('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdc86('0x14'));var db=require(_0xdc86('0x15'))['db'];config[_0xdc86('0x16')]=_[_0xdc86('0x17')](config[_0xdc86('0x16')],{'host':_0xdc86('0x18'),'port':0x18eb});var socket=require(_0xdc86('0x19'))(new Redis(config[_0xdc86('0x16')]));require(_0xdc86('0x1a'))[_0xdc86('0x1b')](socket);function respondWithStatusCode(_0x18022e,_0x49d0d0){_0x49d0d0=_0x49d0d0||0xcc;return function(_0x30c717){if(_0x30c717){return _0x18022e[_0xdc86('0x1c')](_0x49d0d0);}return _0x18022e[_0xdc86('0x1d')](_0x49d0d0)[_0xdc86('0x1e')]();};}function respondWithResult(_0x80cb9f,_0x58dccc){_0x58dccc=_0x58dccc||0xc8;return function(_0x1d9392){if(_0x1d9392){return _0x80cb9f[_0xdc86('0x1d')](_0x58dccc)[_0xdc86('0x1f')](_0x1d9392);}};}function respondWithFilteredResult(_0x2127d3,_0x56cfe){return function(_0x2ea84b){if(_0x2ea84b){var _0x5ef8fb=typeof _0x56cfe[_0xdc86('0x20')]==='undefined'&&typeof _0x56cfe[_0xdc86('0x21')]===_0xdc86('0x22');var _0x4d3e70=_0x2ea84b['count'];var _0x2b2a02=_0x5ef8fb?0x0:_0x56cfe['offset'];var _0x5a61e8=_0x5ef8fb?_0x2ea84b['count']:_0x56cfe[_0xdc86('0x20')]+_0x56cfe[_0xdc86('0x21')];var _0x198107;if(_0x5a61e8>=_0x4d3e70){_0x5a61e8=_0x4d3e70;_0x198107=0xc8;}else{_0x198107=0xce;}_0x2127d3[_0xdc86('0x1d')](_0x198107);return _0x2127d3[_0xdc86('0x23')]('Content-Range',_0x2b2a02+'-'+_0x5a61e8+'/'+_0x4d3e70)['json'](_0x2ea84b);}return null;};}function patchUpdates(_0x5093fb){return function(_0x32952e){try{jsonpatch[_0xdc86('0x24')](_0x32952e,_0x5093fb,!![]);}catch(_0x4e06d0){return BPromise[_0xdc86('0x25')](_0x4e06d0);}return _0x32952e[_0xdc86('0x26')]();};}function saveUpdates(_0x117390,_0x5f4f8e){return function(_0x5a0f99){if(_0x5a0f99){return _0x5a0f99['update'](_0x117390)[_0xdc86('0x27')](function(_0x251c46){return _0x251c46;});}return null;};}function removeEntity(_0x3f786e,_0x2415d9){return function(_0xfa2ee9){if(_0xfa2ee9){return _0xfa2ee9[_0xdc86('0x28')]()[_0xdc86('0x27')](function(){_0x3f786e[_0xdc86('0x1d')](0xcc)[_0xdc86('0x1e')]();});}};}function handleEntityNotFound(_0x172f6c,_0x85157b){return function(_0x228097){if(!_0x228097){_0x172f6c[_0xdc86('0x1c')](0x194);}return _0x228097;};}function handleError(_0x23d123,_0x260fc2){_0x260fc2=_0x260fc2||0x1f4;return function(_0x43ad4d){logger['error'](_0x43ad4d[_0xdc86('0x29')]);if(_0x43ad4d[_0xdc86('0x2a')]){delete _0x43ad4d[_0xdc86('0x2a')];}_0x23d123[_0xdc86('0x1d')](_0x260fc2)['send'](_0x43ad4d);};}function getInteractionUsers(_0x1fa08f,_0x1a2f5c){return new BPromise(function(_0x3c2601,_0x4b481e){try{if(_0x1a2f5c[_0x1fa08f['id']]){_0x1fa08f[_0xdc86('0x2b')]=_['map'](_0x1a2f5c[_0x1fa08f['id']],function(_0x73fd5e){return{'id':_0x73fd5e['id'],'fullname':_0x73fd5e['fullname']};});}}catch(_0x310726){_0x4b481e(_0x310726);}_0x3c2601(_0x1fa08f);});}function getInteractionTags(_0x577a6b,_0x5a0f5e){return new BPromise(function(_0x3b9095,_0x26fcd1){try{if(_0x577a6b[_0xdc86('0x2c')]){_0x577a6b['Tags']=[];_0x577a6b[_0xdc86('0x2c')][_0xdc86('0x2d')](',')[_0xdc86('0x2e')](function(_0x3c42ec){_0x577a6b[_0xdc86('0x2f')][_0xdc86('0x30')](_0x5a0f5e[_0x3c42ec]);});}delete _0x577a6b[_0xdc86('0x2c')];}catch(_0x4c2450){_0x26fcd1(_0x4c2450);}_0x3b9095(_0x577a6b);});}function updateOpenchannelInteraction(_0x424788,_0x5bd89b,_0x3578c6){return new BPromise(function(_0x2c3d8f,_0x15cc51){return getInteractionUsers(_0x424788,_0x3578c6)['then'](function(_0x410ab3){return getInteractionTags(_0x410ab3,_0x5bd89b);})[_0xdc86('0x27')](function(_0x1e38c6){_0x2c3d8f(_0x1e38c6);})[_0xdc86('0x31')](function(_0x5b7e9e){_0x15cc51(_0x5b7e9e);});});}exports['index']=function(_0xc4b0ae,_0x21bde3){var _0xe73d13={},_0x52de90={},_0x2e0368={'count':0x0,'rows':[]};var _0x323ed6=_[_0xdc86('0x32')](db[_0xdc86('0x33')][_0xdc86('0x34')],function(_0x176bd1){return{'name':_0x176bd1[_0xdc86('0x35')],'type':_0x176bd1[_0xdc86('0x36')][_0xdc86('0x37')]};});_0x52de90[_0xdc86('0x38')]=_[_0xdc86('0x32')](_0x323ed6,_0xdc86('0x2a'));_0x52de90['query']=_[_0xdc86('0x39')](_0xc4b0ae['query']);_0x52de90['filters']=_[_0xdc86('0x3a')](_0x52de90['model'],_0x52de90[_0xdc86('0x3b')]);_0xe73d13[_0xdc86('0x3c')]=_['intersection'](_0x52de90[_0xdc86('0x38')],qs[_0xdc86('0x3d')](_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x3d')]));_0xe73d13['attributes']=_0xe73d13['attributes'][_0xdc86('0x3e')]?_0xe73d13['attributes']:_0x52de90[_0xdc86('0x38')];if(!_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x3f')]('nolimit')){_0xe73d13[_0xdc86('0x21')]=qs[_0xdc86('0x21')](_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x21')]);_0xe73d13[_0xdc86('0x20')]=qs[_0xdc86('0x20')](_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x20')]);}_0xe73d13[_0xdc86('0x40')]=qs['sort'](_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x41')]);_0xe73d13[_0xdc86('0x42')]=qs[_0xdc86('0x43')](_['pick'](_0xc4b0ae[_0xdc86('0x3b')],_0x52de90[_0xdc86('0x43')]),_0x323ed6);var _0x16f9e3=[];var _0x27ae0a=squel[_0xdc86('0x44')]()[_0xdc86('0x45')]('id')[_0xdc86('0x45')](_0xdc86('0x2a'))[_0xdc86('0x45')](_0xdc86('0x46'))[_0xdc86('0x47')](_0xdc86('0x48'));var _0x3fdc30=squel[_0xdc86('0x44')]()[_0xdc86('0x45')](_0xdc86('0x49'))[_0xdc86('0x45')](_0xdc86('0x4a'))[_0xdc86('0x45')](_0xdc86('0x4b'))[_0xdc86('0x47')]('user_has_openchannel_interactions','ui')[_0xdc86('0x4c')](_0xdc86('0x4d'),'u','u.id\x20=\x20ui.UserId');var _0x31e963=squel[_0xdc86('0x44')]()[_0xdc86('0x47')]('openchannel_interactions','i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xdc86('0x4c')](_0xdc86('0x4d'),'o',_0xdc86('0x4e'))[_0xdc86('0x4c')](_0xdc86('0x4f'),'a',_0xdc86('0x50'))[_0xdc86('0x4c')](_0xdc86('0x51'),'me','me.OpenchannelInteractionId\x20=\x20i.id')['left_join'](_0xdc86('0x52'),'it',_0xdc86('0x53'))[_0xdc86('0x4c')](_0xdc86('0x48'),'t','t.id\x20=\x20it.TagId');var _0x157d46=squel[_0xdc86('0x54')]();var _0x56d0d9=[];var _0x199ceb=squel[_0xdc86('0x54')]();var _0x205408;if(_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x55')]){_0x205408=as[_0xdc86('0x56')](_0xc4b0ae['query']['search']);var _0x57ac70=_0x205408['sqlOperator'];for(var _0x1c6553=0x0;_0x1c6553<_0x205408['conditions']['length'];_0x1c6553++){var _0x96968e=_0x205408['conditions'][_0x1c6553];var _0x4b5b24='i';var _0x3bab31=_['find'](_0x323ed6,['name',_0x96968e[_0xdc86('0x45')]]);if(!_0x3bab31){switch(_0x96968e['field']){case'unreadMessages':if(_0x96968e[_0xdc86('0x57')]==0x1){_0x31e963[_0xdc86('0x58')]('`'+_0x96968e[_0xdc86('0x45')]+_0xdc86('0x59'));}else{_0x31e963[_0xdc86('0x58')]('`'+_0x96968e[_0xdc86('0x45')]+_0xdc86('0x5a'));}break;case _0xdc86('0x5b'):if(_0x96968e[_0xdc86('0x5c')]===_0xdc86('0x5d')){if(_0x96968e[_0xdc86('0x57')]['split']('\x20')[_0xdc86('0x3e')]>0x1){_0x157d46[_0x57ac70](_0xdc86('0x5e'),qs[_0xdc86('0x5f')](_0x96968e[_0xdc86('0x57')]),null);}else{var _0x5340ec='%'+_0x96968e['value']+'%';_0x157d46[_0x57ac70](_0xdc86('0x60'),_0x5340ec,_0x5340ec,_0x5340ec);}}else{_0x3bab31=_[_0xdc86('0x61')](_0x323ed6,[_0xdc86('0x2a'),'ContactId']);_0x96968e['field']=_0xdc86('0x62');_0x439543=as['buildExpression'](_0x4b5b24,_0x3bab31[_0xdc86('0x36')],_0x96968e);_0x157d46[_0x57ac70](_0x439543[_0xdc86('0x63')],_0x439543['value'][_0xdc86('0x64')],_0x439543[_0xdc86('0x57')][_0xdc86('0x1e')]);}break;case _0xdc86('0x65'):var _0xd790f8=_0x96968e[_0xdc86('0x57')][_0xdc86('0x2d')](',')[_0xdc86('0x32')](function(_0xaf3b54){return Number(_0xaf3b54);});_0xd790f8[_0xdc86('0x2e')](function(_0x5a8dc2){_0x199ceb['or'](_0xdc86('0x66'),'%,'+_0x5a8dc2+',%');});_0x56d0d9=_[_0xdc86('0x67')](_0x56d0d9,_0xd790f8);break;case _0xdc86('0x68'):if(_0x96968e[_0xdc86('0x5c')]===_0xdc86('0x5d')){_0x157d46[_0x57ac70](_0xdc86('0x69'),'%'+_0x96968e[_0xdc86('0x57')]+'%',null);}else{_0x3bab31=_[_0xdc86('0x61')](_0x323ed6,[_0xdc86('0x2a'),_0xdc86('0x6a')]);_0x96968e[_0xdc86('0x45')]=_0xdc86('0x6a');_0x439543=as[_0xdc86('0x6b')](_0x4b5b24,_0x3bab31[_0xdc86('0x36')],_0x96968e);_0x157d46[_0x57ac70](_0x439543[_0xdc86('0x63')],_0x439543[_0xdc86('0x57')]['start'],_0x439543[_0xdc86('0x57')]['end']);}break;case _0xdc86('0x6c'):_0x439543=as[_0xdc86('0x6b')]('me',null,_0x96968e);_0x157d46[_0x57ac70](_0x439543['text'],_0x439543[_0xdc86('0x57')]['start'],_0x439543['value']['end']);break;}}else{var _0x439543=as['buildExpression'](_0x4b5b24,_0x3bab31['type'],_0x96968e);_0x157d46[_0x57ac70](_0x439543[_0xdc86('0x63')],_0x439543['value'][_0xdc86('0x64')],_0x439543[_0xdc86('0x57')][_0xdc86('0x1e')]);}}}else{var _0x1f120d=_(_0xc4b0ae[_0xdc86('0x3b')])[_0xdc86('0x39')]()[_0xdc86('0x32')](function(_0x1d6fc2){return _[_0xdc86('0x6d')](_0x323ed6,[_0xdc86('0x2a'),_0x1d6fc2])?_0x1d6fc2:undefined;})[_0xdc86('0x6e')]()[_0xdc86('0x57')]();if(!_[_0xdc86('0x6f')](_0x1f120d)){_0x1f120d[_0xdc86('0x2e')](function(_0x1ef0a6){if(_0x1ef0a6===_0xdc86('0x70')){_0x31e963[_0xdc86('0x42')]('i.OpenchannelAccountId\x20IN\x20?',[][_0xdc86('0x71')](_0xc4b0ae[_0xdc86('0x3b')][_0x1ef0a6]));}else if(_0x1ef0a6===_0xdc86('0x72')){var _0x57161a=JSON[_0xdc86('0x73')](_0xc4b0ae['query'][_0x1ef0a6])[_0xdc86('0x74')];var _0x32d4ad=JSON[_0xdc86('0x73')](_0xc4b0ae[_0xdc86('0x3b')][_0x1ef0a6])[_0xdc86('0x75')];_0x31e963['where'](_0xdc86('0x76'),_0x57161a,_0x32d4ad);}else{if(_0xc4b0ae[_0xdc86('0x3b')][_0x1ef0a6]===_0xdc86('0x77')){_0x31e963[_0xdc86('0x42')]('i.'+_0x1ef0a6+_0xdc86('0x78'));}else{_0x31e963[_0xdc86('0x42')]('i.'+_0x1ef0a6+'\x20=\x20?',_0xc4b0ae[_0xdc86('0x3b')][_0x1ef0a6]);}}});}if(_0xc4b0ae['query'][_0xdc86('0x79')]){if(_0xc4b0ae[_0xdc86('0x3b')]['read']==0x1){_0x31e963[_0xdc86('0x58')](_0xdc86('0x7a'));}else{_0x31e963['having'](_0xdc86('0x7b'));}}if(_0xc4b0ae[_0xdc86('0x3b')]['tag']){_0x56d0d9=_[_0xdc86('0x7c')](_0xc4b0ae[_0xdc86('0x3b')]['tag'])?_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x7d')]:new Array(_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x7d')]);_0x56d0d9[_0xdc86('0x2e')](function(_0x1fcc14){_0x199ceb['or'](_0xdc86('0x66'),'%,'+_0x1fcc14+',%');});}if(_0xc4b0ae[_0xdc86('0x3b')]['filter']){var _0x279180=_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x7e')][_0xdc86('0x7f')]('\x5c','\x5c\x5c')[_0xdc86('0x7f')](/'/g,'\x27\x27');if(qs[_0xdc86('0x80')](_0x279180)){_0x157d46['or'](_0xdc86('0x81'),_0x279180+'%');}else{_0x157d46['or'](_0xdc86('0x82'),qs[_0xdc86('0x5f')](_0x279180))['or'](_0xdc86('0x83'),_0x279180+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x279180+'%');}}}_0x31e963[_0xdc86('0x42')](_0x157d46);_0x31e963[_0xdc86('0x84')]('i.id');var _0x37d2f0={'type':db[_0xdc86('0x85')][_0xdc86('0x86')][_0xdc86('0x87')],'raw':!![]};var _0x815b90=_0x31e963[_0xdc86('0x88')]();_0x815b90[_0xdc86('0x45')]('i.id');_0x815b90[_0xdc86('0x45')](_0xdc86('0x89'),_0xdc86('0x8a'));if(_0xe73d13[_0xdc86('0x40')]){_0xe73d13[_0xdc86('0x40')][_0xdc86('0x2e')](function(_0x33cf8c){var _0xa21ee0=_0x33cf8c[0x0]===_0xdc86('0x8b')?_0x33cf8c[0x0]:'i.'+_0x33cf8c[0x0];_0x31e963[_0xdc86('0x40')](_0xa21ee0,_0x33cf8c[0x1]===_0xdc86('0x8c')?![]:!![]);});}if(!_[_0xdc86('0x6f')](_0x56d0d9)){_0x31e963[_0xdc86('0x58')](_0x199ceb);_0x815b90[_0xdc86('0x42')]('t.id\x20IN\x20?',_0x56d0d9);}BPromise['resolve']()['then'](function(){if(!_0x205408){if(_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x70')])return;_0x815b90[_0xdc86('0x42')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');_0x31e963[_0xdc86('0x42')](_0xdc86('0x8d'));return;}if(_0xc4b0ae[_0xdc86('0x8e')][_0xdc86('0x8f')]!==_0xdc86('0x90'))return;return _0xc4b0ae[_0xdc86('0x8e')][_0xdc86('0x91')]({'attributes':['id'],'raw':!![]})[_0xdc86('0x27')](function(_0x403935){if(_[_0xdc86('0x6f')](_0x403935)){_0x815b90[_0xdc86('0x42')](_0xdc86('0x92'));_0x31e963[_0xdc86('0x42')](_0xdc86('0x92'));}else{_0x815b90[_0xdc86('0x42')](_0xdc86('0x93'),_[_0xdc86('0x32')](_0x403935,'id'));_0x31e963[_0xdc86('0x42')](_0xdc86('0x93'),_[_0xdc86('0x32')](_0x403935,'id'));}});})[_0xdc86('0x27')](function(){if(_0xc4b0ae['user'][_0xdc86('0x8f')]==='agent'&&!_0x205408&&!_0xc4b0ae[_0xdc86('0x3b')][_0xdc86('0x70')])return[];return db[_0xdc86('0x94')][_0xdc86('0x3b')](_0x815b90['toString'](),_0x37d2f0);})[_0xdc86('0x27')](function(_0x4b5636){_0x2e0368[_0xdc86('0x95')]=_0x4b5636[_0xdc86('0x3e')];if(_0x2e0368[_0xdc86('0x95')]===0x0)return[];return db[_0xdc86('0x94')][_0xdc86('0x3b')](_0x27ae0a['toString'](),_0x37d2f0)[_0xdc86('0x27')](function(_0x2148e0){_0x16f9e3=_[_0xdc86('0x96')](_0x2148e0,'id');_0x37d2f0=_[_0xdc86('0x97')](_0x37d2f0,{'model':db['OpenchannelInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xc4b0ae['query'][_0xdc86('0x3d')]){_0xe73d13[_0xdc86('0x3c')]['forEach'](function(_0x1b3131){_0x31e963[_0xdc86('0x45')]('i.'+_0x1b3131);});}else{_0x31e963[_0xdc86('0x45')](_0xdc86('0x89'),'unreadMessages');_0x31e963[_0xdc86('0x45')](_0xdc86('0x98'),'Account.key');_0x31e963['field'](_0xdc86('0x99'),_0xdc86('0x9a'));_0x31e963[_0xdc86('0x45')](_0xdc86('0x9b'),'contactName');_0x31e963[_0xdc86('0x45')](_0xdc86('0x9c'));_0x31e963[_0xdc86('0x45')](_0xdc86('0x9d'),'Contact.firstName');_0x31e963[_0xdc86('0x45')](_0xdc86('0x9e'),_0xdc86('0x9f'));_0x31e963[_0xdc86('0x45')](_0xdc86('0xa0'),_0xdc86('0xa1'));_0x31e963[_0xdc86('0x45')](_0xdc86('0xa2'),_0xdc86('0xa3'));_0x31e963[_0xdc86('0x45')]('c.mobile',_0xdc86('0xa4'));_0x31e963['field']('c.fax',_0xdc86('0xa5'));_0x31e963['field'](_0xdc86('0xa6'),_0xdc86('0xa7'));_0x31e963[_0xdc86('0x45')](_0xdc86('0xa8'),_0xdc86('0xa9'));_0x31e963[_0xdc86('0x45')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xdc86('0x2c'));}if(_0xe73d13[_0xdc86('0x21')])_0x31e963['limit'](_0xe73d13['limit']);if(_0xe73d13[_0xdc86('0x20')])_0x31e963['offset'](_0xe73d13[_0xdc86('0x20')]);return db['sequelize'][_0xdc86('0x3b')](_0x31e963[_0xdc86('0xaa')](),_0x37d2f0);})[_0xdc86('0x27')](function(_0xd37ad4){if(_0xd37ad4[_0xdc86('0x3e')]>0x0)_0x3fdc30['where'](_0xdc86('0xab'),_[_0xdc86('0x32')](_0xd37ad4,'id'));return db[_0xdc86('0x94')][_0xdc86('0x3b')](_0x3fdc30['toString'](),_0x37d2f0)['then'](function(_0x692372){var _0x150afd=_[_0xdc86('0xac')](_0x692372,_0xdc86('0xad'));var _0x55031a=[];_0xd37ad4[_0xdc86('0x2e')](function(_0x51b75e){_0x55031a[_0xdc86('0x30')](updateOpenchannelInteraction(_0x51b75e,_0x16f9e3,_0x150afd));});return BPromise['all'](_0x55031a);});});})['then'](function(_0x4ec2b6){_0x2e0368['rows']=_0x4ec2b6;return _0x2e0368;})[_0xdc86('0x27')](respondWithFilteredResult(_0x21bde3,_0xe73d13))[_0xdc86('0x31')](handleError(_0x21bde3,null));};exports[_0xdc86('0xae')]=function(_0x5636ca,_0xf22265){var _0x17df31={};if(_0x5636ca[_0xdc86('0x3b')][_0xdc86('0x36')]&&_0x5636ca[_0xdc86('0x3b')][_0xdc86('0x36')]===_0xdc86('0x47')){_0x17df31[_0xdc86('0x47')]=_0x5636ca[_0xdc86('0xaf')]['id'];}else{_0x17df31['id']=_0x5636ca[_0xdc86('0xaf')]['id'];}var _0x28f05c={'raw':![],'where':_0x17df31},_0x257e6c={};_0x257e6c['model']=_[_0xdc86('0x39')](db[_0xdc86('0x33')]['rawAttributes']);_0x257e6c[_0xdc86('0x3b')]=_['keys'](_0x5636ca['query']);_0x257e6c[_0xdc86('0x43')]=_[_0xdc86('0x3a')](_0x257e6c[_0xdc86('0x38')],_0x257e6c['query']);_0x28f05c['attributes']=_[_0xdc86('0x3a')](_0x257e6c[_0xdc86('0x38')],qs[_0xdc86('0x3d')](_0x5636ca['query'][_0xdc86('0x3d')]));_0x28f05c[_0xdc86('0x3c')]=_0x28f05c[_0xdc86('0x3c')][_0xdc86('0x3e')]?_0x28f05c[_0xdc86('0x3c')]:_0x257e6c[_0xdc86('0x38')];if(_0x5636ca[_0xdc86('0x3b')][_0xdc86('0xb0')]){_0x28f05c[_0xdc86('0xb1')]=[{'all':!![]}];}_0x28f05c=_[_0xdc86('0x97')]({},_0x28f05c,_0x5636ca[_0xdc86('0xb2')]);return db[_0xdc86('0x33')]['find'](_0x28f05c)[_0xdc86('0x27')](handleEntityNotFound(_0xf22265,null))['then'](respondWithResult(_0xf22265,null))[_0xdc86('0x31')](handleError(_0xf22265,null));};exports[_0xdc86('0xb3')]=function(_0x9d50d2,_0x70f78d){return db[_0xdc86('0x33')][_0xdc86('0xb3')](_0x9d50d2['body'],{})[_0xdc86('0x27')](respondWithResult(_0x70f78d,0xc9))['catch'](handleError(_0x70f78d,null));};exports['update']=function(_0x37202f,_0x475e72){if(_0x37202f['body']['id']){delete _0x37202f[_0xdc86('0x6c')]['id'];}return db['OpenchannelInteraction']['find']({'where':{'id':_0x37202f['params']['id']}})[_0xdc86('0x27')](handleEntityNotFound(_0x475e72,null))[_0xdc86('0x27')](saveUpdates(_0x37202f['body'],null))[_0xdc86('0x27')](respondWithResult(_0x475e72,null))['catch'](handleError(_0x475e72,null));};exports[_0xdc86('0x28')]=function(_0x11cda8,_0x28174d){return db[_0xdc86('0x33')][_0xdc86('0x61')]({'where':{'id':_0x11cda8['params']['id']}})[_0xdc86('0x27')](handleEntityNotFound(_0x28174d,null))[_0xdc86('0x27')](removeEntity(_0x28174d,null))[_0xdc86('0x31')](handleError(_0x28174d,null));};exports[_0xdc86('0xb4')]=function(_0x468ca8,_0x287a45){return db['OpenchannelInteraction']['describe']()['then'](respondWithResult(_0x287a45,null))[_0xdc86('0x31')](handleError(_0x287a45,null));};exports['addMessage']=function(_0x311a78,_0x5ebb3c,_0x4479bd){return db[_0xdc86('0xb5')]['find']({'where':{'id':_0x311a78[_0xdc86('0xaf')]['id']}})[_0xdc86('0x27')](handleEntityNotFound(_0x5ebb3c,null))[_0xdc86('0x27')](function(_0x56ce86){if(_0x56ce86){return _0x56ce86[_0xdc86('0xb6')](_0x311a78[_0xdc86('0x6c')]['ids'],_[_0xdc86('0xb7')](_0x311a78[_0xdc86('0x6c')],[_0xdc86('0xb8'),'id'])||{});}})['then'](respondWithResult(_0x5ebb3c,null))[_0xdc86('0x31')](handleError(_0x5ebb3c,null));};exports[_0xdc86('0xb9')]=function(_0x2d4ee7,_0x3c46c0,_0x599406){var _0x4dd349={'raw':![],'where':{}};var _0x20e628={};var _0x51a199={'count':0x0,'rows':[]};return db[_0xdc86('0x33')][_0xdc86('0xba')]({'where':{'id':_0x2d4ee7[_0xdc86('0xaf')]['id']}})[_0xdc86('0x27')](handleEntityNotFound(_0x3c46c0,null))[_0xdc86('0x27')](function(_0x3157e5){if(_0x3157e5){_0x20e628[_0xdc86('0x38')]=_[_0xdc86('0x39')](db[_0xdc86('0xb5')][_0xdc86('0x34')]);_0x20e628[_0xdc86('0x3b')]=_[_0xdc86('0x39')](_0x2d4ee7[_0xdc86('0x3b')]);_0x20e628[_0xdc86('0x43')]=_['intersection'](_0x20e628['model'],_0x20e628[_0xdc86('0x3b')]);_0x4dd349['attributes']=_[_0xdc86('0x3a')](_0x20e628[_0xdc86('0x38')],qs[_0xdc86('0x3d')](_0x2d4ee7['query'][_0xdc86('0x3d')]));_0x4dd349[_0xdc86('0x3c')]=_0x4dd349[_0xdc86('0x3c')][_0xdc86('0x3e')]?_0x4dd349[_0xdc86('0x3c')]:_0x20e628[_0xdc86('0x38')];if(!_0x2d4ee7['query'][_0xdc86('0x3f')](_0xdc86('0xbb'))){_0x4dd349[_0xdc86('0x21')]=qs[_0xdc86('0x21')](_0x2d4ee7[_0xdc86('0x3b')][_0xdc86('0x21')]);_0x4dd349[_0xdc86('0x20')]=qs[_0xdc86('0x20')](_0x2d4ee7[_0xdc86('0x3b')][_0xdc86('0x20')]);}_0x4dd349['order']=qs['sort'](_0x2d4ee7['query']['sort']);_0x4dd349['where']=qs['filters'](_[_0xdc86('0xbc')](_0x2d4ee7[_0xdc86('0x3b')],_0x20e628['filters']));_0x4dd349[_0xdc86('0x42')]['OpenchannelInteractionId']=_0x3157e5['id'];if(_0x2d4ee7['query']['filter']){_0x4dd349[_0xdc86('0x42')]=_[_0xdc86('0x97')](_0x4dd349[_0xdc86('0x42')],{'$or':_['map'](_0x4dd349['attributes'],function(_0x5396a8){var _0x2d4bce={};_0x2d4bce[_0x5396a8]={'$like':'%'+_0x2d4ee7[_0xdc86('0x3b')][_0xdc86('0x7e')]+'%'};return _0x2d4bce;})});}if(_0x2d4ee7[_0xdc86('0x3b')][_0xdc86('0x74')]){var _0x347978=_0x2d4ee7[_0xdc86('0x3b')][_0xdc86('0x74')][_0xdc86('0x2d')](',');var _0x47ed2c={};_0x47ed2c[_0x347978[0x0]]={'$gte':moment(_0x347978[0x1])['format'](_0xdc86('0xbd'))};_0x4dd349[_0xdc86('0x42')]=_[_0xdc86('0x97')](_0x4dd349[_0xdc86('0x42')],_0x47ed2c);}_0x4dd349=_[_0xdc86('0x97')]({},_0x4dd349,_0x2d4ee7[_0xdc86('0xb2')]);return db[_0xdc86('0xb5')][_0xdc86('0x95')]({'where':_0x4dd349[_0xdc86('0x42')]})['then'](function(_0x28092b){_0x51a199[_0xdc86('0x95')]=_0x28092b;if(_0x2d4ee7['query'][_0xdc86('0xb0')]){_0x4dd349[_0xdc86('0xb1')]=[{'all':!![]}];}return db[_0xdc86('0xb5')][_0xdc86('0xbe')](_0x4dd349);})[_0xdc86('0x27')](function(_0x5f38d7){_0x51a199[_0xdc86('0xbf')]=_0x5f38d7;return _0x51a199;});}})[_0xdc86('0x27')](respondWithFilteredResult(_0x3c46c0,_0x4dd349))[_0xdc86('0x31')](handleError(_0x3c46c0,null));};exports['addTags']=function(_0xaf2bf7,_0x4aef67,_0x4436a0){return db[_0xdc86('0x33')]['find']({'where':{'id':_0xaf2bf7['params']['id']}})[_0xdc86('0x27')](handleEntityNotFound(_0x4aef67,null))[_0xdc86('0x27')](function(_0x14eb96){if(_0x14eb96){return _0x14eb96[_0xdc86('0xc0')](_0xaf2bf7['body']['ids'],_[_0xdc86('0xb7')](_0xaf2bf7['body'],[_0xdc86('0xb8'),'id'])||{})['spread'](function(){return db['Tag'][_0xdc86('0xbe')]({'attributes':['id',_0xdc86('0x2a'),_0xdc86('0x46')],'where':{'id':_0xaf2bf7[_0xdc86('0x6c')][_0xdc86('0xb8')]}});})[_0xdc86('0x27')](function(_0x3e84a3){socket[_0xdc86('0xc1')](_0xdc86('0xc2'),{'id':Number(_0xaf2bf7[_0xdc86('0xaf')]['id']),'tags':_0x3e84a3||[]});return{'id':Number(_0xaf2bf7[_0xdc86('0xaf')]['id']),'tags':_0x3e84a3||[]};});}})[_0xdc86('0x27')](respondWithResult(_0x4aef67,null))[_0xdc86('0x31')](handleError(_0x4aef67,null));};exports[_0xdc86('0xc3')]=function(_0x1e778f,_0x9f92d2,_0x2d854d){return db[_0xdc86('0x33')]['find']({'where':{'id':_0x1e778f[_0xdc86('0xaf')]['id']}})[_0xdc86('0x27')](handleEntityNotFound(_0x9f92d2,null))[_0xdc86('0x27')](function(_0x1a0feb){if(_0x1a0feb){return _0x1a0feb[_0xdc86('0xc3')](_0x1e778f[_0xdc86('0x3b')][_0xdc86('0xb8')]);}})[_0xdc86('0x27')](respondWithStatusCode(_0x9f92d2,null))[_0xdc86('0x31')](handleError(_0x9f92d2,null));};exports['download']=function(_0x3a4a55,_0x2d9b31){var _0x571e9d=moment()[_0xdc86('0xc4')]()['toString']();var _0x4cca06=path[_0xdc86('0xc5')](config[_0xdc86('0xc6')],_0xdc86('0xc7'),_0xdc86('0xc8'),_0xdc86('0xc9'));var _0x492bb0=path[_0xdc86('0xc5')](config['root'],_0xdc86('0xc7'),_0xdc86('0xc8'),_0xdc86('0xca'));var _0xcf0677=path[_0xdc86('0xc5')](_0x4cca06,_0x571e9d);var _0x5658fe=util['format'](_0xdc86('0xcb'),_0x3a4a55['params']['id'],_0x571e9d);var _0x38778c=path['join'](_0x4cca06,_0x5658fe);var _0x301d89=[];_0x301d89[_0xdc86('0x30')]({'model':db[_0xdc86('0x68')],'as':'User','attributes':['id',_0xdc86('0xcc')],'raw':!![]});_0x301d89[_0xdc86('0x30')]({'model':db[_0xdc86('0xcd')],'as':_0xdc86('0x5b'),'attributes':['id',_0xdc86('0xce'),_0xdc86('0xcf')],'raw':!![]});if(_0x3a4a55['query']['attachments']){_0x301d89['push']({'model':db[_0xdc86('0xd0')],'as':_0xdc86('0xd0'),'raw':!![]});}var _0x322da4=[{'model':db[_0xdc86('0xb5')],'as':'Messages','attributes':['id',_0xdc86('0x6c'),_0xdc86('0x72'),_0xdc86('0xd1'),_0xdc86('0xd2'),_0xdc86('0x79')],'include':_0x301d89}];_0x322da4[_0xdc86('0x30')]({'model':db[_0xdc86('0xd3')],'as':_0xdc86('0xd4'),'attributes':['id',_0xdc86('0x2a')]});_0x322da4[_0xdc86('0x30')]({'model':db[_0xdc86('0x68')],'as':_0xdc86('0xd5'),'attributes':['id',_0xdc86('0xcc')]});return db[_0xdc86('0x33')][_0xdc86('0x61')]({'where':{'id':_0x3a4a55[_0xdc86('0xaf')]['id']},'include':_0x322da4})[_0xdc86('0x27')](handleEntityNotFound(_0x2d9b31,null))[_0xdc86('0x27')](function(_0x143bef){if(_0x143bef){var _0x1298e9=_0x143bef[_0xdc86('0xd6')]({'plain':!![]});fs[_0xdc86('0xd7')](_0xcf0677);var _0x143eb6={'channel':_0xdc86('0xd8'),'account':_0x1298e9[_0xdc86('0xd4')][_0xdc86('0x2a')],'agent':_0x1298e9['Owner']?_0x1298e9['Owner']['fullname']:'N.A.','createdAt':moment(_0x1298e9[_0xdc86('0x72')])['format'](_0xdc86('0xbd'))[_0xdc86('0xaa')](),'closedAt':_0x1298e9[_0xdc86('0xd9')]?moment(_0x1298e9[_0xdc86('0xda')])[_0xdc86('0xdb')](_0xdc86('0xbd'))[_0xdc86('0xaa')]():'','disposition':_0x1298e9['disposition'],'visibility':_0x1298e9[_0xdc86('0xdc')]?'Public':_0xdc86('0xdd'),'messages':_(_0x1298e9['Messages'])[_0xdc86('0x7e')]({'secret':![]})[_0xdc86('0x32')](function(_0x220064){if(_0x220064[_0xdc86('0xd0')]){var _0x2e699e=path['join'](_0x492bb0,_0x220064[_0xdc86('0xd0')]['basename']);if(fs['existsSync'](_0x2e699e)){fs['createReadStream'](_0x2e699e)[_0xdc86('0xde')](fs[_0xdc86('0xdf')](path['join'](_0xcf0677,_0x220064[_0xdc86('0xd0')][_0xdc86('0xe0')])));}}return{'date':moment(_0x220064[_0xdc86('0x72')])[_0xdc86('0xdb')](_0xdc86('0xbd'))[_0xdc86('0xaa')](),'sender':_0x220064['direction']===_0xdc86('0xe1')?_0x220064[_0xdc86('0x68')]?_0x220064[_0xdc86('0x68')][_0xdc86('0xcc')]:_0xdc86('0xe2'):_0x220064[_0xdc86('0x5b')][_0xdc86('0xce')]+(_0x220064['Contact'][_0xdc86('0xcf')]?'\x20'+_0x220064['Contact']['lastName']:''),'body':_0x220064['Attachment']?_0x220064[_0xdc86('0xd0')]['basename']:_0x220064[_0xdc86('0x6c')],'direction':_0x220064['direction']===_0xdc86('0xe1')?'A':'C','secret':_0x220064['secret'],'read':_0x220064[_0xdc86('0x79')],'attachment':_0x220064[_0xdc86('0xd0')]};})[_0xdc86('0x57')]()};return ejs['renderFile'](path[_0xdc86('0xc5')](config[_0xdc86('0xc6')],_0xdc86('0xc7'),_0xdc86('0xe3'),_0xdc86('0xe4')),{'interaction':_0x143eb6})[_0xdc86('0x27')](function(_0x4961d6){var _0x48f7c9=path[_0xdc86('0xc5')](_0xcf0677,_0xdc86('0xe5')+_0x1298e9['id']+'-'+_0x571e9d+_0xdc86('0xe6'));var _0x385bc5={'path':_0x48f7c9,'channel':_0xdc86('0xd8'),'interactionId':_0x1298e9['id']};return pdf[_0xdc86('0xe7')](_0x4961d6,_0x385bc5);})[_0xdc86('0x27')](function(){return new BPromise(function(_0x4bb722,_0x2096ed){zipdir(_0xcf0677,{'saveTo':_0x38778c},function(_0x2f3adf,_0x2a455a){if(_0x2f3adf)return _0x2096ed(_0x2f3adf);return _0x4bb722(_0x2a455a);});})['then'](function(){return new BPromise(function(_0xbf2836,_0x5e0461){rimraf(_0xcf0677,function(_0x15f7b9){if(_0x15f7b9)_0x5e0461(_0x15f7b9);return _0xbf2836();});});})[_0xdc86('0x27')](function(){return _0x2d9b31[_0xdc86('0xe8')](_0x38778c,_0x5658fe,function(_0x3e9380){if(_0x3e9380){console[_0xdc86('0xe9')](_0xdc86('0xea'),_0x3e9380);}else{fs['unlinkSync'](_0x38778c);}});});});}else{return _0x2d9b31[_0xdc86('0x1c')](0xc8);}})[_0xdc86('0x31')](handleError(_0x2d9b31,null));};
\ No newline at end of file
+var _0x6ac7=['OpenchannelInteraction','rawAttributes','fieldName','type','key','query','filters','model','intersection','fields','attributes','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','left_join','users','openchannel_interactions','cm_contacts','o.id\x20=\x20i.UserId','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','sqlOperator','conditions','length','find','unreadMessages','value','`\x20=\x200','having','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','text','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','buildExpression','keys','some','compact','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','QueryTypes','SELECT','clone','i.id','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','isEmpty','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','sequelize','toString','merge','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.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)','groupBy','OpenchannelInteractionId','push','all','rows','show','params','include','options','create','body','catch','describe','addMessage','OpenchannelMessage','ids','omit','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','findAll','addTags','setTags','spread','Tag','emit','removeTags','download','unix','join','root','server','tmp','files','attachments','User','CmContact','firstName','lastName','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','N.A.','closedAt','disposition','threadId','Public','Private','basename','createReadStream','pipe','createWriteStream','out','renderFile','views','transcript-','Openchannel','createPdfFromHTML','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','localhost','./openchannelInteraction.socket','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','Users','map','fullname','TagIds','Tags','split','index'];(function(_0x1111b6,_0x406ede){var _0x2b4945=function(_0x31ec4f){while(--_0x31ec4f){_0x1111b6['push'](_0x1111b6['shift']());}};_0x2b4945(++_0x406ede);}(_0x6ac7,0x1ab));var _0x76ac=function(_0x19d63e,_0x1c6651){_0x19d63e=_0x19d63e-0x0;var _0x596ef2=_0x6ac7[_0x19d63e];return _0x596ef2;};'use strict';var emlformat=require(_0x76ac('0x0'));var rimraf=require(_0x76ac('0x1'));var zipdir=require(_0x76ac('0x2'));var jsonpatch=require(_0x76ac('0x3'));var rp=require(_0x76ac('0x4'));var moment=require(_0x76ac('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x76ac('0x6'));var path=require('path');var sox=require(_0x76ac('0x7'));var csv=require(_0x76ac('0x8'));var ejs=require(_0x76ac('0x9'));var fs=require('fs');var fs_extra=require(_0x76ac('0xa'));var _=require(_0x76ac('0xb'));var squel=require('squel');var crypto=require(_0x76ac('0xc'));var jsforce=require(_0x76ac('0xd'));var deskjs=require(_0x76ac('0xe'));var toCsv=require(_0x76ac('0x8'));var querystring=require('querystring');var Papa=require(_0x76ac('0xf'));var Redis=require(_0x76ac('0x10'));var authService=require(_0x76ac('0x11'));var qs=require(_0x76ac('0x12'));var as=require(_0x76ac('0x13'));var pdf=require(_0x76ac('0x14'));var hardwareService=require(_0x76ac('0x15'));var logger=require(_0x76ac('0x16'))('api');var utils=require(_0x76ac('0x17'));var config=require(_0x76ac('0x18'));var licenseUtil=require(_0x76ac('0x19'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x76ac('0x1a')](config[_0x76ac('0x1b')],{'host':_0x76ac('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x76ac('0x1b')]));require(_0x76ac('0x1d'))['register'](socket);function respondWithStatusCode(_0xbf9987,_0x5b5042){_0x5b5042=_0x5b5042||0xcc;return function(_0x332adc){if(_0x332adc){return _0xbf9987['sendStatus'](_0x5b5042);}return _0xbf9987['status'](_0x5b5042)[_0x76ac('0x1e')]();};}function respondWithResult(_0x3fbbae,_0x205e9f){_0x205e9f=_0x205e9f||0xc8;return function(_0x5d6ed4){if(_0x5d6ed4){return _0x3fbbae[_0x76ac('0x1f')](_0x205e9f)['json'](_0x5d6ed4);}};}function respondWithFilteredResult(_0x2f2ed1,_0x4c6625){return function(_0x5eb1fd){if(_0x5eb1fd){var _0x5c2823=typeof _0x4c6625[_0x76ac('0x20')]===_0x76ac('0x21')&&typeof _0x4c6625[_0x76ac('0x22')]==='undefined';var _0x4be157=_0x5eb1fd['count'];var _0xff32e4=_0x5c2823?0x0:_0x4c6625[_0x76ac('0x20')];var _0x41914b=_0x5c2823?_0x5eb1fd[_0x76ac('0x23')]:_0x4c6625[_0x76ac('0x20')]+_0x4c6625['limit'];var _0x317d9a;if(_0x41914b>=_0x4be157){_0x41914b=_0x4be157;_0x317d9a=0xc8;}else{_0x317d9a=0xce;}_0x2f2ed1[_0x76ac('0x1f')](_0x317d9a);return _0x2f2ed1[_0x76ac('0x24')](_0x76ac('0x25'),_0xff32e4+'-'+_0x41914b+'/'+_0x4be157)['json'](_0x5eb1fd);}return null;};}function patchUpdates(_0x28e99c){return function(_0xdcff52){try{jsonpatch[_0x76ac('0x26')](_0xdcff52,_0x28e99c,!![]);}catch(_0x2e078b){return BPromise[_0x76ac('0x27')](_0x2e078b);}return _0xdcff52[_0x76ac('0x28')]();};}function saveUpdates(_0x2756a5,_0x32507c){return function(_0x199250){if(_0x199250){return _0x199250[_0x76ac('0x29')](_0x2756a5)['then'](function(_0x5789c8){return _0x5789c8;});}return null;};}function removeEntity(_0x263e0f,_0x60973e){return function(_0x18244d){if(_0x18244d){return _0x18244d[_0x76ac('0x2a')]()[_0x76ac('0x2b')](function(){_0x263e0f[_0x76ac('0x1f')](0xcc)[_0x76ac('0x1e')]();});}};}function handleEntityNotFound(_0x53bdff,_0x54dcf5){return function(_0x39034a){if(!_0x39034a){_0x53bdff[_0x76ac('0x2c')](0x194);}return _0x39034a;};}function handleError(_0x5ef1d7,_0xe3a84a){_0xe3a84a=_0xe3a84a||0x1f4;return function(_0x217a6e){logger[_0x76ac('0x2d')](_0x217a6e[_0x76ac('0x2e')]);if(_0x217a6e[_0x76ac('0x2f')]){delete _0x217a6e[_0x76ac('0x2f')];}_0x5ef1d7[_0x76ac('0x1f')](_0xe3a84a)['send'](_0x217a6e);};}function getInteractionUsers(_0x1aeaa4,_0x12a103){return new BPromise(function(_0x43a91e,_0x1ececf){try{if(_0x12a103[_0x1aeaa4['id']]){_0x1aeaa4[_0x76ac('0x30')]=_[_0x76ac('0x31')](_0x12a103[_0x1aeaa4['id']],function(_0x562174){return{'id':_0x562174['id'],'fullname':_0x562174[_0x76ac('0x32')]};});}}catch(_0xbac5d3){_0x1ececf(_0xbac5d3);}_0x43a91e(_0x1aeaa4);});}function getInteractionTags(_0x1990a5,_0x3309ff){return new BPromise(function(_0x49e631,_0x582818){try{if(_0x1990a5[_0x76ac('0x33')]){_0x1990a5[_0x76ac('0x34')]=[];_0x1990a5[_0x76ac('0x33')][_0x76ac('0x35')](',')['forEach'](function(_0x3d3b1c){_0x1990a5['Tags']['push'](_0x3309ff[_0x3d3b1c]);});}delete _0x1990a5['TagIds'];}catch(_0x1807d3){_0x582818(_0x1807d3);}_0x49e631(_0x1990a5);});}function updateOpenchannelInteraction(_0x3fb334,_0x2d682d,_0x20bad5){return new BPromise(function(_0x4daf96,_0x2897ae){return getInteractionUsers(_0x3fb334,_0x20bad5)[_0x76ac('0x2b')](function(_0x53bb6e){return getInteractionTags(_0x53bb6e,_0x2d682d);})['then'](function(_0x1ee50a){_0x4daf96(_0x1ee50a);})['catch'](function(_0x20af06){_0x2897ae(_0x20af06);});});}exports[_0x76ac('0x36')]=function(_0x160152,_0x19a1f3){var _0x578c15={},_0x42db4f={},_0xfaae7c={'count':0x0,'rows':[]};var _0x5c6174=_[_0x76ac('0x31')](db[_0x76ac('0x37')][_0x76ac('0x38')],function(_0x565b27){return{'name':_0x565b27[_0x76ac('0x39')],'type':_0x565b27[_0x76ac('0x3a')][_0x76ac('0x3b')]};});_0x42db4f['model']=_['map'](_0x5c6174,_0x76ac('0x2f'));_0x42db4f[_0x76ac('0x3c')]=_['keys'](_0x160152['query']);_0x42db4f[_0x76ac('0x3d')]=_['intersection'](_0x42db4f[_0x76ac('0x3e')],_0x42db4f['query']);_0x578c15['attributes']=_[_0x76ac('0x3f')](_0x42db4f[_0x76ac('0x3e')],qs['fields'](_0x160152['query'][_0x76ac('0x40')]));_0x578c15[_0x76ac('0x41')]=_0x578c15[_0x76ac('0x41')]['length']?_0x578c15[_0x76ac('0x41')]:_0x42db4f[_0x76ac('0x3e')];if(!_0x160152[_0x76ac('0x3c')]['hasOwnProperty']('nolimit')){_0x578c15[_0x76ac('0x22')]=qs[_0x76ac('0x22')](_0x160152[_0x76ac('0x3c')]['limit']);_0x578c15[_0x76ac('0x20')]=qs['offset'](_0x160152[_0x76ac('0x3c')][_0x76ac('0x20')]);}_0x578c15[_0x76ac('0x42')]=qs[_0x76ac('0x43')](_0x160152[_0x76ac('0x3c')][_0x76ac('0x43')]);_0x578c15[_0x76ac('0x44')]=qs[_0x76ac('0x3d')](_[_0x76ac('0x45')](_0x160152[_0x76ac('0x3c')],_0x42db4f['filters']),_0x5c6174);var _0x33c66b=[];var _0x4f669f=squel[_0x76ac('0x46')]()[_0x76ac('0x47')]('id')['field'](_0x76ac('0x2f'))['field'](_0x76ac('0x48'))[_0x76ac('0x49')](_0x76ac('0x4a'));var _0x46aa92=squel[_0x76ac('0x46')]()[_0x76ac('0x47')](_0x76ac('0x4b'))[_0x76ac('0x47')](_0x76ac('0x4c'))[_0x76ac('0x47')](_0x76ac('0x4d'))['from']('user_has_openchannel_interactions','ui')[_0x76ac('0x4e')](_0x76ac('0x4f'),'u','u.id\x20=\x20ui.UserId');var _0x5dbf39=squel[_0x76ac('0x46')]()['from'](_0x76ac('0x50'),'i')[_0x76ac('0x4e')](_0x76ac('0x51'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')['left_join'](_0x76ac('0x4f'),'o',_0x76ac('0x52'))[_0x76ac('0x4e')](_0x76ac('0x53'),'a',_0x76ac('0x54'))[_0x76ac('0x4e')](_0x76ac('0x55'),'me',_0x76ac('0x56'))[_0x76ac('0x4e')]('openchannel_interaction_has_tags','it',_0x76ac('0x57'))[_0x76ac('0x4e')](_0x76ac('0x4a'),'t',_0x76ac('0x58'));var _0x4c6eb7=squel[_0x76ac('0x59')]();var _0x43a775=[];var _0x1e8e93=squel[_0x76ac('0x59')]();var _0x46c52a;if(_0x160152[_0x76ac('0x3c')]['search']){_0x46c52a=as[_0x76ac('0x5a')](_0x160152[_0x76ac('0x3c')][_0x76ac('0x5b')]);var _0x58312c=_0x46c52a[_0x76ac('0x5c')];for(var _0x27ad3e=0x0;_0x27ad3e<_0x46c52a[_0x76ac('0x5d')][_0x76ac('0x5e')];_0x27ad3e++){var _0xc199f0=_0x46c52a['conditions'][_0x27ad3e];var _0x3c0ad8='i';var _0x3c76c6=_[_0x76ac('0x5f')](_0x5c6174,[_0x76ac('0x2f'),_0xc199f0[_0x76ac('0x47')]]);if(!_0x3c76c6){switch(_0xc199f0[_0x76ac('0x47')]){case _0x76ac('0x60'):if(_0xc199f0[_0x76ac('0x61')]==0x1){_0x5dbf39['having']('`'+_0xc199f0[_0x76ac('0x47')]+_0x76ac('0x62'));}else{_0x5dbf39[_0x76ac('0x63')]('`'+_0xc199f0[_0x76ac('0x47')]+'`\x20>\x200');}break;case _0x76ac('0x64'):if(_0xc199f0[_0x76ac('0x65')]===_0x76ac('0x66')){if(_0xc199f0[_0x76ac('0x61')][_0x76ac('0x35')]('\x20')['length']>0x1){_0x4c6eb7[_0x58312c](_0x76ac('0x67'),qs[_0x76ac('0x68')](_0xc199f0[_0x76ac('0x61')]),null);}else{var _0x26fbc1='%'+_0xc199f0[_0x76ac('0x61')]+'%';_0x4c6eb7[_0x58312c](_0x76ac('0x69'),_0x26fbc1,_0x26fbc1,_0x26fbc1);}}else{_0x3c76c6=_[_0x76ac('0x5f')](_0x5c6174,[_0x76ac('0x2f'),_0x76ac('0x6a')]);_0xc199f0['field']='ContactId';_0x3f7729=as['buildExpression'](_0x3c0ad8,_0x3c76c6[_0x76ac('0x3a')],_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729[_0x76ac('0x6b')],_0x3f7729[_0x76ac('0x61')][_0x76ac('0x6c')],_0x3f7729['value'][_0x76ac('0x1e')]);}break;case'Tag':var _0x1691d5=_0xc199f0[_0x76ac('0x61')][_0x76ac('0x35')](',')[_0x76ac('0x31')](function(_0x1e0f1d){return Number(_0x1e0f1d);});_0x1691d5[_0x76ac('0x6d')](function(_0x5dc4a0){_0x1e8e93['or'](_0x76ac('0x6e'),'%,'+_0x5dc4a0+',%');});_0x43a775=_[_0x76ac('0x6f')](_0x43a775,_0x1691d5);break;case'User':if(_0xc199f0['operator']===_0x76ac('0x66')){_0x4c6eb7[_0x58312c](_0x76ac('0x70'),'%'+_0xc199f0[_0x76ac('0x61')]+'%',null);}else{_0x3c76c6=_[_0x76ac('0x5f')](_0x5c6174,[_0x76ac('0x2f'),'UserId']);_0xc199f0[_0x76ac('0x47')]=_0x76ac('0x71');_0x3f7729=as[_0x76ac('0x72')](_0x3c0ad8,_0x3c76c6[_0x76ac('0x3a')],_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729['text'],_0x3f7729[_0x76ac('0x61')]['start'],_0x3f7729['value'][_0x76ac('0x1e')]);}break;case'body':_0x3f7729=as[_0x76ac('0x72')]('me',null,_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729[_0x76ac('0x6b')],_0x3f7729['value'][_0x76ac('0x6c')],_0x3f7729['value'][_0x76ac('0x1e')]);break;}}else{var _0x3f7729=as[_0x76ac('0x72')](_0x3c0ad8,_0x3c76c6['type'],_0xc199f0);_0x4c6eb7[_0x58312c](_0x3f7729[_0x76ac('0x6b')],_0x3f7729[_0x76ac('0x61')][_0x76ac('0x6c')],_0x3f7729[_0x76ac('0x61')][_0x76ac('0x1e')]);}}}else{var _0x20dee8=_(_0x160152[_0x76ac('0x3c')])[_0x76ac('0x73')]()[_0x76ac('0x31')](function(_0x4a16fe){return _[_0x76ac('0x74')](_0x5c6174,[_0x76ac('0x2f'),_0x4a16fe])?_0x4a16fe:undefined;})[_0x76ac('0x75')]()[_0x76ac('0x61')]();if(!_['isEmpty'](_0x20dee8)){_0x20dee8[_0x76ac('0x6d')](function(_0x4522a5){if(_0x4522a5===_0x76ac('0x76')){_0x5dbf39[_0x76ac('0x44')](_0x76ac('0x77'),[][_0x76ac('0x78')](_0x160152[_0x76ac('0x3c')][_0x4522a5]));}else if(_0x4522a5===_0x76ac('0x79')){var _0x46e01f=JSON['parse'](_0x160152[_0x76ac('0x3c')][_0x4522a5])[_0x76ac('0x7a')];var _0x540339=JSON[_0x76ac('0x7b')](_0x160152['query'][_0x4522a5])[_0x76ac('0x7c')];_0x5dbf39[_0x76ac('0x44')](_0x76ac('0x7d'),_0x46e01f,_0x540339);}else{if(_0x160152[_0x76ac('0x3c')][_0x4522a5]===_0x76ac('0x7e')){_0x5dbf39['where']('i.'+_0x4522a5+_0x76ac('0x7f'));}else{_0x5dbf39[_0x76ac('0x44')]('i.'+_0x4522a5+_0x76ac('0x80'),_0x160152[_0x76ac('0x3c')][_0x4522a5]);}}});}if(_0x160152['query'][_0x76ac('0x81')]){if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x81')]==0x1){_0x5dbf39[_0x76ac('0x63')](_0x76ac('0x82'));}else{_0x5dbf39[_0x76ac('0x63')]('`unreadMessages`\x20>\x200');}}if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x83')]){_0x43a775=_[_0x76ac('0x84')](_0x160152['query'][_0x76ac('0x83')])?_0x160152[_0x76ac('0x3c')][_0x76ac('0x83')]:new Array(_0x160152[_0x76ac('0x3c')][_0x76ac('0x83')]);_0x43a775[_0x76ac('0x6d')](function(_0x130e64){_0x1e8e93['or'](_0x76ac('0x6e'),'%,'+_0x130e64+',%');});}if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x85')]){var _0x28fd2e=_0x160152[_0x76ac('0x3c')]['filter'][_0x76ac('0x86')]('\x5c','\x5c\x5c')[_0x76ac('0x86')](/'/g,'\x27\x27');if(qs[_0x76ac('0x87')](_0x28fd2e)){_0x4c6eb7['or']('i.id\x20LIKE\x20?',_0x28fd2e+'%');}else{_0x4c6eb7['or'](_0x76ac('0x88'),qs[_0x76ac('0x68')](_0x28fd2e))['or'](_0x76ac('0x89'),_0x28fd2e+'%')['or'](_0x76ac('0x8a'),_0x28fd2e+'%');}}}_0x5dbf39['where'](_0x4c6eb7);_0x5dbf39[_0x76ac('0x8b')]('i.id');var _0x14c6c2={'type':db['Sequelize'][_0x76ac('0x8c')][_0x76ac('0x8d')],'raw':!![]};var _0x589524=_0x5dbf39[_0x76ac('0x8e')]();_0x589524['field'](_0x76ac('0x8f'));_0x589524[_0x76ac('0x47')](_0x76ac('0x90'),_0x76ac('0x60'));if(_0x578c15[_0x76ac('0x42')]){_0x578c15[_0x76ac('0x42')]['forEach'](function(_0x521671){var _0x5e251e=_0x521671[0x0]===_0x76ac('0x91')?_0x521671[0x0]:'i.'+_0x521671[0x0];_0x5dbf39[_0x76ac('0x42')](_0x5e251e,_0x521671[0x1]===_0x76ac('0x92')?![]:!![]);});}if(!_[_0x76ac('0x93')](_0x43a775)){_0x5dbf39[_0x76ac('0x63')](_0x1e8e93);_0x589524[_0x76ac('0x44')]('t.id\x20IN\x20?',_0x43a775);}BPromise[_0x76ac('0x94')]()[_0x76ac('0x2b')](function(){if(!_0x46c52a){if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x76')])return;_0x589524['where'](_0x76ac('0x95'));_0x5dbf39[_0x76ac('0x44')](_0x76ac('0x95'));return;}if(_0x160152[_0x76ac('0x96')][_0x76ac('0x97')]!==_0x76ac('0x98'))return;return _0x160152['user'][_0x76ac('0x99')]({'attributes':['id'],'raw':!![]})[_0x76ac('0x2b')](function(_0x5ce974){if(_[_0x76ac('0x93')](_0x5ce974)){_0x589524[_0x76ac('0x44')](_0x76ac('0x9a'));_0x5dbf39['where'](_0x76ac('0x9a'));}else{_0x589524[_0x76ac('0x44')](_0x76ac('0x77'),_[_0x76ac('0x31')](_0x5ce974,'id'));_0x5dbf39[_0x76ac('0x44')]('i.OpenchannelAccountId\x20IN\x20?',_[_0x76ac('0x31')](_0x5ce974,'id'));}});})[_0x76ac('0x2b')](function(){if(_0x160152[_0x76ac('0x96')][_0x76ac('0x97')]===_0x76ac('0x98')&&!_0x46c52a&&!_0x160152['query'][_0x76ac('0x76')])return[];return db[_0x76ac('0x9b')]['query'](_0x589524[_0x76ac('0x9c')](),_0x14c6c2);})[_0x76ac('0x2b')](function(_0x1f2506){_0xfaae7c['count']=_0x1f2506[_0x76ac('0x5e')];if(_0xfaae7c[_0x76ac('0x23')]===0x0)return[];return db[_0x76ac('0x9b')][_0x76ac('0x3c')](_0x4f669f[_0x76ac('0x9c')](),_0x14c6c2)['then'](function(_0x308ee1){_0x33c66b=_['keyBy'](_0x308ee1,'id');_0x14c6c2=_[_0x76ac('0x9d')](_0x14c6c2,{'model':db[_0x76ac('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x160152[_0x76ac('0x3c')][_0x76ac('0x40')]){_0x578c15[_0x76ac('0x41')][_0x76ac('0x6d')](function(_0xbc6d9c){_0x5dbf39['field']('i.'+_0xbc6d9c);});}else{_0x5dbf39['field'](_0x76ac('0x90'),'unreadMessages');_0x5dbf39['field']('a.key','Account.key');_0x5dbf39[_0x76ac('0x47')](_0x76ac('0x9e'),_0x76ac('0x9f'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa0'),_0x76ac('0x91'));_0x5dbf39[_0x76ac('0x47')]('i.*');_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa1'),_0x76ac('0xa2'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa3'),'Contact.lastName');_0x5dbf39['field'](_0x76ac('0xa4'),_0x76ac('0xa5'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xa6'),_0x76ac('0xa7'));_0x5dbf39['field'](_0x76ac('0xa8'),_0x76ac('0xa9'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xaa'),'Contact.fax');_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xab'),_0x76ac('0xac'));_0x5dbf39['field'](_0x76ac('0xad'),_0x76ac('0xae'));_0x5dbf39[_0x76ac('0x47')](_0x76ac('0xaf'),_0x76ac('0x33'));}if(_0x578c15[_0x76ac('0x22')])_0x5dbf39[_0x76ac('0x22')](_0x578c15[_0x76ac('0x22')]);if(_0x578c15[_0x76ac('0x20')])_0x5dbf39[_0x76ac('0x20')](_0x578c15[_0x76ac('0x20')]);return db['sequelize'][_0x76ac('0x3c')](_0x5dbf39[_0x76ac('0x9c')](),_0x14c6c2);})['then'](function(_0xa66f80){if(_0xa66f80['length']>0x0)_0x46aa92[_0x76ac('0x44')]('ui.OpenchannelInteractionId\x20IN\x20?',_[_0x76ac('0x31')](_0xa66f80,'id'));return db[_0x76ac('0x9b')]['query'](_0x46aa92[_0x76ac('0x9c')](),_0x14c6c2)['then'](function(_0x509bee){var _0x457b44=_[_0x76ac('0xb0')](_0x509bee,_0x76ac('0xb1'));var _0x551468=[];_0xa66f80[_0x76ac('0x6d')](function(_0x1ebd0f){_0x551468[_0x76ac('0xb2')](updateOpenchannelInteraction(_0x1ebd0f,_0x33c66b,_0x457b44));});return BPromise[_0x76ac('0xb3')](_0x551468);});});})['then'](function(_0x4b006e){_0xfaae7c[_0x76ac('0xb4')]=_0x4b006e;return _0xfaae7c;})['then'](respondWithFilteredResult(_0x19a1f3,_0x578c15))['catch'](handleError(_0x19a1f3,null));};exports[_0x76ac('0xb5')]=function(_0x2beb5e,_0x533c30){var _0x470b97={};if(_0x2beb5e['query'][_0x76ac('0x3a')]&&_0x2beb5e['query'][_0x76ac('0x3a')]==='from'){_0x470b97[_0x76ac('0x49')]=_0x2beb5e['params']['id'];}else{_0x470b97['id']=_0x2beb5e[_0x76ac('0xb6')]['id'];}var _0x4031c8={'raw':![],'where':_0x470b97},_0xef4b8f={};_0xef4b8f[_0x76ac('0x3e')]=_[_0x76ac('0x73')](db['OpenchannelInteraction'][_0x76ac('0x38')]);_0xef4b8f[_0x76ac('0x3c')]=_[_0x76ac('0x73')](_0x2beb5e[_0x76ac('0x3c')]);_0xef4b8f['filters']=_[_0x76ac('0x3f')](_0xef4b8f[_0x76ac('0x3e')],_0xef4b8f[_0x76ac('0x3c')]);_0x4031c8[_0x76ac('0x41')]=_[_0x76ac('0x3f')](_0xef4b8f[_0x76ac('0x3e')],qs['fields'](_0x2beb5e[_0x76ac('0x3c')][_0x76ac('0x40')]));_0x4031c8['attributes']=_0x4031c8['attributes'][_0x76ac('0x5e')]?_0x4031c8[_0x76ac('0x41')]:_0xef4b8f[_0x76ac('0x3e')];if(_0x2beb5e[_0x76ac('0x3c')]['includeAll']){_0x4031c8[_0x76ac('0xb7')]=[{'all':!![]}];}_0x4031c8=_[_0x76ac('0x9d')]({},_0x4031c8,_0x2beb5e[_0x76ac('0xb8')]);return db[_0x76ac('0x37')][_0x76ac('0x5f')](_0x4031c8)[_0x76ac('0x2b')](handleEntityNotFound(_0x533c30,null))[_0x76ac('0x2b')](respondWithResult(_0x533c30,null))['catch'](handleError(_0x533c30,null));};exports['create']=function(_0x3dba03,_0x375f82){return db[_0x76ac('0x37')][_0x76ac('0xb9')](_0x3dba03[_0x76ac('0xba')],{})[_0x76ac('0x2b')](respondWithResult(_0x375f82,0xc9))[_0x76ac('0xbb')](handleError(_0x375f82,null));};exports[_0x76ac('0x29')]=function(_0x16e41c,_0x34b51a){if(_0x16e41c[_0x76ac('0xba')]['id']){delete _0x16e41c[_0x76ac('0xba')]['id'];}return db[_0x76ac('0x37')]['find']({'where':{'id':_0x16e41c[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x34b51a,null))[_0x76ac('0x2b')](saveUpdates(_0x16e41c[_0x76ac('0xba')],null))[_0x76ac('0x2b')](respondWithResult(_0x34b51a,null))[_0x76ac('0xbb')](handleError(_0x34b51a,null));};exports['destroy']=function(_0x17252e,_0x47c4d1){return db[_0x76ac('0x37')][_0x76ac('0x5f')]({'where':{'id':_0x17252e[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x47c4d1,null))['then'](removeEntity(_0x47c4d1,null))[_0x76ac('0xbb')](handleError(_0x47c4d1,null));};exports[_0x76ac('0xbc')]=function(_0x5b20a1,_0x47c5fd){return db[_0x76ac('0x37')][_0x76ac('0xbc')]()[_0x76ac('0x2b')](respondWithResult(_0x47c5fd,null))['catch'](handleError(_0x47c5fd,null));};exports[_0x76ac('0xbd')]=function(_0x27f887,_0x34ab60,_0x41bd44){return db[_0x76ac('0xbe')][_0x76ac('0x5f')]({'where':{'id':_0x27f887[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x34ab60,null))[_0x76ac('0x2b')](function(_0x8d91a4){if(_0x8d91a4){return _0x8d91a4['addMessage'](_0x27f887[_0x76ac('0xba')][_0x76ac('0xbf')],_[_0x76ac('0xc0')](_0x27f887['body'],[_0x76ac('0xbf'),'id'])||{});}})[_0x76ac('0x2b')](respondWithResult(_0x34ab60,null))[_0x76ac('0xbb')](handleError(_0x34ab60,null));};exports['getMessages']=function(_0x45f908,_0x3aaf1e,_0x40bb81){var _0x5794c6={'raw':![],'where':{}};var _0x522f01={};var _0x1b51ec={'count':0x0,'rows':[]};return db[_0x76ac('0x37')]['findOne']({'where':{'id':_0x45f908[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x3aaf1e,null))[_0x76ac('0x2b')](function(_0x47cff1){if(_0x47cff1){_0x522f01[_0x76ac('0x3e')]=_[_0x76ac('0x73')](db['OpenchannelMessage'][_0x76ac('0x38')]);_0x522f01[_0x76ac('0x3c')]=_[_0x76ac('0x73')](_0x45f908[_0x76ac('0x3c')]);_0x522f01[_0x76ac('0x3d')]=_[_0x76ac('0x3f')](_0x522f01[_0x76ac('0x3e')],_0x522f01[_0x76ac('0x3c')]);_0x5794c6['attributes']=_[_0x76ac('0x3f')](_0x522f01['model'],qs[_0x76ac('0x40')](_0x45f908['query']['fields']));_0x5794c6[_0x76ac('0x41')]=_0x5794c6[_0x76ac('0x41')][_0x76ac('0x5e')]?_0x5794c6[_0x76ac('0x41')]:_0x522f01['model'];if(!_0x45f908[_0x76ac('0x3c')]['hasOwnProperty'](_0x76ac('0xc1'))){_0x5794c6[_0x76ac('0x22')]=qs['limit'](_0x45f908[_0x76ac('0x3c')][_0x76ac('0x22')]);_0x5794c6['offset']=qs[_0x76ac('0x20')](_0x45f908[_0x76ac('0x3c')][_0x76ac('0x20')]);}_0x5794c6[_0x76ac('0x42')]=qs[_0x76ac('0x43')](_0x45f908['query'][_0x76ac('0x43')]);_0x5794c6[_0x76ac('0x44')]=qs[_0x76ac('0x3d')](_[_0x76ac('0x45')](_0x45f908[_0x76ac('0x3c')],_0x522f01[_0x76ac('0x3d')]));_0x5794c6['where'][_0x76ac('0xb1')]=_0x47cff1['id'];if(_0x45f908[_0x76ac('0x3c')][_0x76ac('0x85')]){_0x5794c6[_0x76ac('0x44')]=_['merge'](_0x5794c6[_0x76ac('0x44')],{'$or':_[_0x76ac('0x31')](_0x5794c6[_0x76ac('0x41')],function(_0xc152e5){var _0x162baa={};_0x162baa[_0xc152e5]={'$like':'%'+_0x45f908[_0x76ac('0x3c')]['filter']+'%'};return _0x162baa;})});}if(_0x45f908[_0x76ac('0x3c')][_0x76ac('0x7a')]){var _0x16fc2c=_0x45f908[_0x76ac('0x3c')][_0x76ac('0x7a')][_0x76ac('0x35')](',');var _0x46b1d5={};_0x46b1d5[_0x16fc2c[0x0]]={'$gte':moment(_0x16fc2c[0x1])[_0x76ac('0xc2')](_0x76ac('0xc3'))};_0x5794c6[_0x76ac('0x44')]=_[_0x76ac('0x9d')](_0x5794c6[_0x76ac('0x44')],_0x46b1d5);}_0x5794c6=_[_0x76ac('0x9d')]({},_0x5794c6,_0x45f908['options']);return db['OpenchannelMessage'][_0x76ac('0x23')]({'where':_0x5794c6[_0x76ac('0x44')]})[_0x76ac('0x2b')](function(_0x396c93){_0x1b51ec[_0x76ac('0x23')]=_0x396c93;if(_0x45f908[_0x76ac('0x3c')][_0x76ac('0xc4')]){_0x5794c6['include']=[{'all':!![]}];}return db[_0x76ac('0xbe')][_0x76ac('0xc5')](_0x5794c6);})[_0x76ac('0x2b')](function(_0x1a99d0){_0x1b51ec['rows']=_0x1a99d0;return _0x1b51ec;});}})[_0x76ac('0x2b')](respondWithFilteredResult(_0x3aaf1e,_0x5794c6))[_0x76ac('0xbb')](handleError(_0x3aaf1e,null));};exports[_0x76ac('0xc6')]=function(_0x276c07,_0x1ea076,_0x4ecc78){return db[_0x76ac('0x37')][_0x76ac('0x5f')]({'where':{'id':_0x276c07[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x1ea076,null))[_0x76ac('0x2b')](function(_0x4d4c1e){if(_0x4d4c1e){return _0x4d4c1e[_0x76ac('0xc7')](_0x276c07[_0x76ac('0xba')][_0x76ac('0xbf')],_['omit'](_0x276c07[_0x76ac('0xba')],['ids','id'])||{})[_0x76ac('0xc8')](function(){return db[_0x76ac('0xc9')]['findAll']({'attributes':['id',_0x76ac('0x2f'),'color'],'where':{'id':_0x276c07[_0x76ac('0xba')][_0x76ac('0xbf')]}});})[_0x76ac('0x2b')](function(_0x382587){socket[_0x76ac('0xca')]('openchannelInteractionTags:save',{'id':Number(_0x276c07[_0x76ac('0xb6')]['id']),'tags':_0x382587||[]});return{'id':Number(_0x276c07['params']['id']),'tags':_0x382587||[]};});}})[_0x76ac('0x2b')](respondWithResult(_0x1ea076,null))['catch'](handleError(_0x1ea076,null));};exports[_0x76ac('0xcb')]=function(_0x1d6403,_0x44576f,_0x8bba84){return db['OpenchannelInteraction'][_0x76ac('0x5f')]({'where':{'id':_0x1d6403[_0x76ac('0xb6')]['id']}})[_0x76ac('0x2b')](handleEntityNotFound(_0x44576f,null))['then'](function(_0x26624c){if(_0x26624c){return _0x26624c['removeTags'](_0x1d6403[_0x76ac('0x3c')][_0x76ac('0xbf')]);}})[_0x76ac('0x2b')](respondWithStatusCode(_0x44576f,null))[_0x76ac('0xbb')](handleError(_0x44576f,null));};exports[_0x76ac('0xcc')]=function(_0x1d50ae,_0x135575){var _0x329a8c=moment()[_0x76ac('0xcd')]()[_0x76ac('0x9c')]();var _0x1aac3f=path[_0x76ac('0xce')](config[_0x76ac('0xcf')],_0x76ac('0xd0'),'files',_0x76ac('0xd1'));var _0x58feeb=path[_0x76ac('0xce')](config[_0x76ac('0xcf')],_0x76ac('0xd0'),_0x76ac('0xd2'),_0x76ac('0xd3'));var _0x3d1f35=path[_0x76ac('0xce')](_0x1aac3f,_0x329a8c);var _0x565d03=util[_0x76ac('0xc2')]('transcript-%d-%s.zip',_0x1d50ae[_0x76ac('0xb6')]['id'],_0x329a8c);var _0x59ae=path[_0x76ac('0xce')](_0x1aac3f,_0x565d03);var _0x17b7bd=[];_0x17b7bd[_0x76ac('0xb2')]({'model':db[_0x76ac('0xd4')],'as':_0x76ac('0xd4'),'attributes':['id',_0x76ac('0x32')],'raw':!![]});_0x17b7bd[_0x76ac('0xb2')]({'model':db[_0x76ac('0xd5')],'as':_0x76ac('0x64'),'attributes':['id',_0x76ac('0xd6'),_0x76ac('0xd7')],'raw':!![]});if(_0x1d50ae[_0x76ac('0x3c')][_0x76ac('0xd3')]){_0x17b7bd['push']({'model':db['Attachment'],'as':_0x76ac('0xd8'),'raw':!![]});}var _0x4a823a=[{'model':db[_0x76ac('0xbe')],'as':_0x76ac('0xd9'),'attributes':['id',_0x76ac('0xba'),_0x76ac('0x79'),_0x76ac('0xda'),_0x76ac('0xdb'),_0x76ac('0x81')],'include':_0x17b7bd}];_0x4a823a['push']({'model':db[_0x76ac('0xdc')],'as':_0x76ac('0xdd'),'attributes':['id','name']});_0x4a823a[_0x76ac('0xb2')]({'model':db[_0x76ac('0xd4')],'as':_0x76ac('0xde'),'attributes':['id',_0x76ac('0x32')]});return db[_0x76ac('0x37')][_0x76ac('0x5f')]({'where':{'id':_0x1d50ae['params']['id']},'include':_0x4a823a})['then'](handleEntityNotFound(_0x135575,null))[_0x76ac('0x2b')](function(_0x404beb){if(_0x404beb){var _0x40b4ff=_0x404beb['get']({'plain':!![]});fs['mkdirSync'](_0x3d1f35);var _0x56da1c={'channel':'Openchannel','account':_0x40b4ff[_0x76ac('0xdd')][_0x76ac('0x2f')],'agent':_0x40b4ff[_0x76ac('0xde')]?_0x40b4ff[_0x76ac('0xde')][_0x76ac('0x32')]:_0x76ac('0xdf'),'createdAt':moment(_0x40b4ff[_0x76ac('0x79')])[_0x76ac('0xc2')](_0x76ac('0xc3'))[_0x76ac('0x9c')](),'closedAt':_0x40b4ff['closed']?moment(_0x40b4ff[_0x76ac('0xe0')])[_0x76ac('0xc2')](_0x76ac('0xc3'))[_0x76ac('0x9c')]():'','disposition':_0x40b4ff[_0x76ac('0xe1')],'visibility':_0x40b4ff[_0x76ac('0xe2')]?_0x76ac('0xe3'):_0x76ac('0xe4'),'messages':_(_0x40b4ff[_0x76ac('0xd9')])[_0x76ac('0x85')]({'secret':![]})[_0x76ac('0x31')](function(_0x4e156b){if(_0x4e156b[_0x76ac('0xd8')]){var _0x41d203=path[_0x76ac('0xce')](_0x58feeb,_0x4e156b[_0x76ac('0xd8')][_0x76ac('0xe5')]);if(fs['existsSync'](_0x41d203)){fs[_0x76ac('0xe6')](_0x41d203)[_0x76ac('0xe7')](fs[_0x76ac('0xe8')](path['join'](_0x3d1f35,_0x4e156b['Attachment']['basename'])));}}return{'date':moment(_0x4e156b[_0x76ac('0x79')])[_0x76ac('0xc2')](_0x76ac('0xc3'))['toString'](),'sender':_0x4e156b[_0x76ac('0xda')]===_0x76ac('0xe9')?_0x4e156b[_0x76ac('0xd4')]?_0x4e156b[_0x76ac('0xd4')][_0x76ac('0x32')]:'System':_0x4e156b[_0x76ac('0x64')][_0x76ac('0xd6')]+(_0x4e156b[_0x76ac('0x64')][_0x76ac('0xd7')]?'\x20'+_0x4e156b[_0x76ac('0x64')][_0x76ac('0xd7')]:''),'body':_0x4e156b[_0x76ac('0xd8')]?_0x4e156b[_0x76ac('0xd8')][_0x76ac('0xe5')]:_0x4e156b[_0x76ac('0xba')],'direction':_0x4e156b[_0x76ac('0xda')]===_0x76ac('0xe9')?'A':'C','secret':_0x4e156b['secret'],'read':_0x4e156b[_0x76ac('0x81')],'attachment':_0x4e156b[_0x76ac('0xd8')]};})['value']()};return ejs[_0x76ac('0xea')](path['join'](config[_0x76ac('0xcf')],'server',_0x76ac('0xeb'),'downloadInteraction.ejs'),{'interaction':_0x56da1c})[_0x76ac('0x2b')](function(_0x4f7b20){var _0x93aba1=path[_0x76ac('0xce')](_0x3d1f35,_0x76ac('0xec')+_0x40b4ff['id']+'-'+_0x329a8c+'.pdf');var _0x3d2c68={'path':_0x93aba1,'channel':_0x76ac('0xed'),'interactionId':_0x40b4ff['id']};return pdf[_0x76ac('0xee')](_0x4f7b20,_0x3d2c68);})[_0x76ac('0x2b')](function(){return new BPromise(function(_0x55e322,_0x3894c3){zipdir(_0x3d1f35,{'saveTo':_0x59ae},function(_0x14ccd2,_0x2891d8){if(_0x14ccd2)return _0x3894c3(_0x14ccd2);return _0x55e322(_0x2891d8);});})[_0x76ac('0x2b')](function(){return new BPromise(function(_0x1464d6,_0x345bad){rimraf(_0x3d1f35,function(_0x145101){if(_0x145101)_0x345bad(_0x145101);return _0x1464d6();});});})[_0x76ac('0x2b')](function(){return _0x135575[_0x76ac('0xcc')](_0x59ae,_0x565d03,function(_0x28c5a1){if(_0x28c5a1){console[_0x76ac('0xef')](_0x76ac('0xf0'),_0x28c5a1);}else{fs['unlinkSync'](_0x59ae);}});});});}else{return _0x135575[_0x76ac('0x2c')](0xc8);}})['catch'](handleError(_0x135575,null));};
\ No newline at end of file
index 54b34fb..ff498cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4899=['map','findAll','unreadMessages','emit','hasOwnProperty','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','update','setDataValue','Users'];(function(_0x47c5bf,_0x45977e){var _0x11b779=function(_0x1bd585){while(--_0x1bd585){_0x47c5bf['push'](_0x47c5bf['shift']());}};_0x11b779(++_0x45977e);}(_0x4899,0x1b9));var _0x9489=function(_0x14283c,_0x5a095a){_0x14283c=_0x14283c-0x0;var _0x1e7fc5=_0x4899[_0x14283c];return _0x1e7fc5;};'use strict';var EventEmitter=require(_0x9489('0x0'));var OpenchannelInteraction=require(_0x9489('0x1'))['db'][_0x9489('0x2')];var OpenchannelMessage=require('../../mysqldb')['db'][_0x9489('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x9489('0x4')](0x0);var events={'afterCreate':_0x9489('0x5'),'afterUpdate':_0x9489('0x6'),'afterDestroy':'remove'};function emitEvent(_0x4f2f44){return function(_0x1baea0,_0xf9753d,_0x372640){_0x1baea0['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x40f296){_0x1baea0[_0x9489('0x7')](_0x9489('0x8'),_0x40f296[_0x9489('0x9')](function(_0x39f901){return{'id':_0x39f901['id']};}));return OpenchannelMessage[_0x9489('0xa')]({'where':{'OpenchannelInteractionId':_0x1baea0['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x15456f){_0x1baea0[_0x9489('0x7')](_0x9489('0xb'),_0x15456f['length']);OpenchannelInteractionEvents[_0x9489('0xc')](_0x4f2f44+':'+_0x1baea0['id'],_0x1baea0);OpenchannelInteractionEvents['emit'](_0x4f2f44,_0x1baea0);_0x372640(null);})['catch'](_0x372640(null));};}for(var e in events){if(events[_0x9489('0xd')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module[_0x9489('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x7f0d=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users'];(function(_0x3d2475,_0x3dc2c8){var _0x4e1625=function(_0xbd56f0){while(--_0xbd56f0){_0x3d2475['push'](_0x3d2475['shift']());}};_0x4e1625(++_0x3dc2c8);}(_0x7f0d,0x113));var _0xd7f0=function(_0xf6804f,_0x1e69a6){_0xf6804f=_0xf6804f-0x0;var _0x21ded0=_0x7f0d[_0xf6804f];return _0x21ded0;};'use strict';var EventEmitter=require(_0xd7f0('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0xd7f0('0x1'))['db'][_0xd7f0('0x2')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xd7f0('0x3')](0x0);var events={'afterCreate':_0xd7f0('0x4'),'afterUpdate':_0xd7f0('0x5'),'afterDestroy':'remove'};function emitEvent(_0x12b7b8){return function(_0x136190,_0xcffae9,_0x5cec6b){_0x136190[_0xd7f0('0x6')]({'attributes':['id'],'raw':!![]})[_0xd7f0('0x7')](function(_0x1e232a){_0x136190[_0xd7f0('0x8')](_0xd7f0('0x9'),_0x1e232a[_0xd7f0('0xa')](function(_0x5c1dad){return{'id':_0x5c1dad['id']};}));return OpenchannelMessage[_0xd7f0('0xb')]({'where':{'OpenchannelInteractionId':_0x136190['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd7f0('0x7')](function(_0x151ca7){_0x136190[_0xd7f0('0x8')](_0xd7f0('0xc'),_0x151ca7[_0xd7f0('0xd')]);OpenchannelInteractionEvents['emit'](_0x12b7b8+':'+_0x136190['id'],_0x136190);OpenchannelInteractionEvents[_0xd7f0('0xe')](_0x12b7b8,_0x136190);_0x5cec6b(null);})[_0xd7f0('0xf')](_0x5cec6b(null));};}for(var e in events){if(events[_0xd7f0('0x10')](e)){var event=events[e];OpenchannelInteraction[_0xd7f0('0x11')](e,emitEvent(event));}}module[_0xd7f0('0x12')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 91a47bb..8c76a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd3=['openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./openchannelInteraction.attributes','exports'];(function(_0x74745d,_0x177606){var _0x174ab3=function(_0x1c94e9){while(--_0x1c94e9){_0x74745d['push'](_0x74745d['shift']());}};_0x174ab3(++_0x177606);}(_0xdbd3,0xe6));var _0x3dbd=function(_0x3bb859,_0x589816){_0x3bb859=_0x3bb859-0x0;var _0x3bf534=_0xdbd3[_0x3bb859];return _0x3bf534;};'use strict';var _=require(_0x3dbd('0x0'));var util=require(_0x3dbd('0x1'));var logger=require(_0x3dbd('0x2'))('api');var moment=require(_0x3dbd('0x3'));var BPromise=require(_0x3dbd('0x4'));var rp=require(_0x3dbd('0x5'));var fs=require('fs');var path=require(_0x3dbd('0x6'));var rimraf=require(_0x3dbd('0x7'));var config=require('../../config/environment');var attributes=require(_0x3dbd('0x8'));module[_0x3dbd('0x9')]=function(_0x34821e,_0x236a4e){return _0x34821e['define']('OpenchannelInteraction',attributes,{'tableName':_0x3dbd('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3dbd('0xb'),'collate':_0x3dbd('0xc'),'hooks':{'beforeUpdate':function(_0xee244c,_0x4fe3a6,_0x3b9f04){if(_0xee244c['changed']('closed')){_0xee244c[_0x3dbd('0xd')]=moment()[_0x3dbd('0xe')](_0x3dbd('0xf'));}_0x3b9f04(null,_0xee244c);}}});};
\ No newline at end of file
+var _0x9c0b=['request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes','define','OpenchannelInteraction','openchannel_interactions','utf8mb4','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api','moment'];(function(_0x39e283,_0x247e6b){var _0x7de89f=function(_0x2f8c50){while(--_0x2f8c50){_0x39e283['push'](_0x39e283['shift']());}};_0x7de89f(++_0x247e6b);}(_0x9c0b,0xc8));var _0xb9c0=function(_0x33c147,_0xd24400){_0x33c147=_0x33c147-0x0;var _0x216d7d=_0x9c0b[_0x33c147];return _0x216d7d;};'use strict';var _=require(_0xb9c0('0x0'));var util=require(_0xb9c0('0x1'));var logger=require('../../config/logger')(_0xb9c0('0x2'));var moment=require(_0xb9c0('0x3'));var BPromise=require('bluebird');var rp=require(_0xb9c0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb9c0('0x5'));var config=require(_0xb9c0('0x6'));var attributes=require(_0xb9c0('0x7'));module['exports']=function(_0x2a29e1,_0x3cd88a){return _0x2a29e1[_0xb9c0('0x8')](_0xb9c0('0x9'),attributes,{'tableName':_0xb9c0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xb9c0('0xb'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x21b5ba,_0x3273ba,_0x3e8b88){if(_0x21b5ba[_0xb9c0('0xc')](_0xb9c0('0xd'))){_0x21b5ba[_0xb9c0('0xe')]=moment()[_0xb9c0('0xf')](_0xb9c0('0x10'));}_0x3e8b88(null,_0x21b5ba);}}});};
\ No newline at end of file
index b9f304d..a76e006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeb9=['defaults','redis','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','error','code','message','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','body','options','raw','where','debug','stringify','AddTagsToOpenchannelInteraction','find','ids','spread','AddTags','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x12ee23,_0xacb61a){var _0x101a49=function(_0x248ba5){while(--_0x248ba5){_0x12ee23['push'](_0x12ee23['shift']());}};_0x101a49(++_0xacb61a);}(_0xeeb9,0xb3));var _0x9eeb=function(_0x1e7c82,_0x5c085e){_0x1e7c82=_0x1e7c82-0x0;var _0x1fc19a=_0xeeb9[_0x1e7c82];return _0x1fc19a;};'use strict';var _=require(_0x9eeb('0x0'));var util=require(_0x9eeb('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9eeb('0x2'));var fs=require('fs');var Redis=require(_0x9eeb('0x3'));var db=require(_0x9eeb('0x4'))['db'];var utils=require(_0x9eeb('0x5'));var logger=require(_0x9eeb('0x6'))(_0x9eeb('0x7'));var config=require(_0x9eeb('0x8'));var jayson=require(_0x9eeb('0x9'));var client=jayson['client'][_0x9eeb('0xa')]({'port':0x232a});config['redis']=_[_0x9eeb('0xb')](config[_0x9eeb('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9eeb('0xc')]));require(_0x9eeb('0xd'))[_0x9eeb('0xe')](socket);function respondWithRpcPromise(_0x1e5d4c,_0x4dfb96,_0x1c4083){return new BPromise(function(_0x49bec8,_0x29008a){return client[_0x9eeb('0xf')](_0x1e5d4c,_0x1c4083)[_0x9eeb('0x10')](function(_0x43f492){logger[_0x9eeb('0x11')](_0x9eeb('0x12'),_0x4dfb96,_0x9eeb('0x13'));logger['debug'](_0x9eeb('0x14'),_0x4dfb96,'request\x20sent',JSON['stringify'](_0x43f492));if(_0x43f492['error']){if(_0x43f492[_0x9eeb('0x15')][_0x9eeb('0x16')]===0x1f4){logger[_0x9eeb('0x15')](_0x9eeb('0x12'),_0x4dfb96,_0x43f492[_0x9eeb('0x15')][_0x9eeb('0x17')]);return _0x29008a(_0x43f492[_0x9eeb('0x15')]['message']);}logger[_0x9eeb('0x15')](_0x9eeb('0x12'),_0x4dfb96,_0x43f492[_0x9eeb('0x15')]['message']);return _0x49bec8(_0x43f492['error'][_0x9eeb('0x17')]);}else{logger[_0x9eeb('0x11')](_0x9eeb('0x12'),_0x4dfb96,_0x9eeb('0x13'));_0x49bec8(_0x43f492['result'][_0x9eeb('0x17')]);}})[_0x9eeb('0x18')](function(_0xbe79c8){logger[_0x9eeb('0x15')](_0x9eeb('0x12'),_0x4dfb96,_0xbe79c8);_0x29008a(_0xbe79c8);});});}exports[_0x9eeb('0x19')]=function(_0x39fda4){var _0x13c984=this;return new Promise(function(_0x52536f,_0x4d95d1){return db[_0x9eeb('0x1a')]['update'](_0x39fda4[_0x9eeb('0x1b')],{'raw':_0x39fda4[_0x9eeb('0x1c')]?_0x39fda4[_0x9eeb('0x1c')][_0x9eeb('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39fda4[_0x9eeb('0x1c')]?_0x39fda4[_0x9eeb('0x1c')][_0x9eeb('0x1e')]||null:null,'attributes':_0x39fda4[_0x9eeb('0x1c')]?_0x39fda4[_0x9eeb('0x1c')]['attributes']||null:null,'limit':_0x39fda4[_0x9eeb('0x1c')]?_0x39fda4[_0x9eeb('0x1c')]['limit']||null:null})[_0x9eeb('0x10')](function(_0x3f2618){logger['info']('UpdateOpenchannelInteraction',_0x39fda4);logger[_0x9eeb('0x1f')](_0x9eeb('0x19'),_0x39fda4,JSON[_0x9eeb('0x20')](_0x3f2618));_0x52536f(_0x3f2618);})['catch'](function(_0x509a16){logger[_0x9eeb('0x15')](_0x9eeb('0x19'),_0x509a16[_0x9eeb('0x17')],_0x39fda4);_0x4d95d1(_0x13c984[_0x9eeb('0x15')](0x1f4,_0x509a16[_0x9eeb('0x17')]));});});};exports[_0x9eeb('0x21')]=function(_0x5e143b){return new Promise(function(_0x4d4577,_0x1c4f52){return db[_0x9eeb('0x1a')][_0x9eeb('0x22')]({'where':_0x5e143b[_0x9eeb('0x1c')]?_0x5e143b['options'][_0x9eeb('0x1e')]||null:null})['then'](function(_0x6bf652){if(_0x6bf652){return _0x6bf652['addTags'](_0x5e143b[_0x9eeb('0x1b')][_0x9eeb('0x23')],_['omit'](_0x5e143b[_0x9eeb('0x1b')],[_0x9eeb('0x23'),'id'])||{});}})[_0x9eeb('0x24')](function(_0x1cd210){logger[_0x9eeb('0x11')](_0x9eeb('0x25'),_0x5e143b);logger[_0x9eeb('0x1f')](_0x9eeb('0x25'),_0x5e143b,JSON[_0x9eeb('0x20')](_0x1cd210));_0x4d4577(_0x1cd210);})[_0x9eeb('0x18')](function(_0x19a0dc){logger[_0x9eeb('0x15')]('AddTags',_0x19a0dc[_0x9eeb('0x17')],_0x5e143b);_0x1c4f52(_this[_0x9eeb('0x15')](0x1f4,_0x19a0dc[_0x9eeb('0x17')]));});});};
\ No newline at end of file
+var _0xa791=['jayson/promise','client','http','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','OpenchannelInteraction','update','body','options','raw','attributes','limit','UpdateOpenchannelInteraction','AddTagsToOpenchannelInteraction','find','where','addTags','ids','spread','AddTags','lodash','util','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x456e6c,_0x505c52){var _0x373dcc=function(_0x913f7e){while(--_0x913f7e){_0x456e6c['push'](_0x456e6c['shift']());}};_0x373dcc(++_0x505c52);}(_0xa791,0x1c8));var _0x1a79=function(_0x5ac909,_0x1aab79){_0x5ac909=_0x5ac909-0x0;var _0x222478=_0xa791[_0x5ac909];return _0x222478;};'use strict';var _=require(_0x1a79('0x0'));var util=require(_0x1a79('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a79('0x2'));var db=require(_0x1a79('0x3'))['db'];var utils=require(_0x1a79('0x4'));var logger=require('../../config/logger')(_0x1a79('0x5'));var config=require('../../config/environment');var jayson=require(_0x1a79('0x6'));var client=jayson[_0x1a79('0x7')][_0x1a79('0x8')]({'port':0x232a});config[_0x1a79('0x9')]=_[_0x1a79('0xa')](config[_0x1a79('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x1a79('0xb'))(new Redis(config[_0x1a79('0x9')]));require(_0x1a79('0xc'))[_0x1a79('0xd')](socket);function respondWithRpcPromise(_0x43a543,_0x1807a8,_0x482d67){return new BPromise(function(_0xa2f6a9,_0x4e3d92){return client[_0x1a79('0xe')](_0x43a543,_0x482d67)[_0x1a79('0xf')](function(_0x509caf){logger[_0x1a79('0x10')](_0x1a79('0x11'),_0x1807a8,'request\x20sent');logger[_0x1a79('0x12')](_0x1a79('0x13'),_0x1807a8,_0x1a79('0x14'),JSON[_0x1a79('0x15')](_0x509caf));if(_0x509caf[_0x1a79('0x16')]){if(_0x509caf[_0x1a79('0x16')][_0x1a79('0x17')]===0x1f4){logger[_0x1a79('0x16')](_0x1a79('0x11'),_0x1807a8,_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);return _0x4e3d92(_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);}logger['error'](_0x1a79('0x11'),_0x1807a8,_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);return _0xa2f6a9(_0x509caf[_0x1a79('0x16')][_0x1a79('0x18')]);}else{logger[_0x1a79('0x10')](_0x1a79('0x11'),_0x1807a8,_0x1a79('0x14'));_0xa2f6a9(_0x509caf[_0x1a79('0x19')][_0x1a79('0x18')]);}})[_0x1a79('0x1a')](function(_0x5ad62d){logger['error'](_0x1a79('0x11'),_0x1807a8,_0x5ad62d);_0x4e3d92(_0x5ad62d);});});}exports['UpdateOpenchannelInteraction']=function(_0x429ba9){var _0xc13fc3=this;return new Promise(function(_0x5d0288,_0x3fc637){return db[_0x1a79('0x1b')][_0x1a79('0x1c')](_0x429ba9[_0x1a79('0x1d')],{'raw':_0x429ba9[_0x1a79('0x1e')]?_0x429ba9[_0x1a79('0x1e')][_0x1a79('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x429ba9[_0x1a79('0x1e')]?_0x429ba9[_0x1a79('0x1e')]['where']||null:null,'attributes':_0x429ba9[_0x1a79('0x1e')]?_0x429ba9[_0x1a79('0x1e')][_0x1a79('0x20')]||null:null,'limit':_0x429ba9['options']?_0x429ba9['options'][_0x1a79('0x21')]||null:null})[_0x1a79('0xf')](function(_0x33b610){logger[_0x1a79('0x10')]('UpdateOpenchannelInteraction',_0x429ba9);logger[_0x1a79('0x12')](_0x1a79('0x22'),_0x429ba9,JSON['stringify'](_0x33b610));_0x5d0288(_0x33b610);})[_0x1a79('0x1a')](function(_0xa7d4e5){logger[_0x1a79('0x16')](_0x1a79('0x22'),_0xa7d4e5[_0x1a79('0x18')],_0x429ba9);_0x3fc637(_0xc13fc3[_0x1a79('0x16')](0x1f4,_0xa7d4e5['message']));});});};exports[_0x1a79('0x23')]=function(_0x41c8b1){return new Promise(function(_0x5327fe,_0x56de28){return db[_0x1a79('0x1b')][_0x1a79('0x24')]({'where':_0x41c8b1[_0x1a79('0x1e')]?_0x41c8b1['options'][_0x1a79('0x25')]||null:null})['then'](function(_0x2ae05c){if(_0x2ae05c){return _0x2ae05c[_0x1a79('0x26')](_0x41c8b1[_0x1a79('0x1d')][_0x1a79('0x27')],_['omit'](_0x41c8b1['body'],[_0x1a79('0x27'),'id'])||{});}})[_0x1a79('0x28')](function(_0x587fe1){logger[_0x1a79('0x10')](_0x1a79('0x29'),_0x41c8b1);logger[_0x1a79('0x12')]('AddTags',_0x41c8b1,JSON[_0x1a79('0x15')](_0x587fe1));_0x5327fe(_0x587fe1);})[_0x1a79('0x1a')](function(_0x513d05){logger[_0x1a79('0x16')]('AddTags',_0x513d05[_0x1a79('0x18')],_0x41c8b1);_0x56de28(_this[_0x1a79('0x16')](0x1f4,_0x513d05[_0x1a79('0x18')]));});});};
\ No newline at end of file
index f9b4d07..8668e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc804=['save','update','removeListener','register','openchannelInteraction:'];(function(_0x3a57e9,_0x590e02){var _0x93d12f=function(_0x49baf4){while(--_0x49baf4){_0x3a57e9['push'](_0x3a57e9['shift']());}};_0x93d12f(++_0x590e02);}(_0xc804,0x1d6));var _0x4c80=function(_0x1f0e4d,_0x2105f3){_0x1f0e4d=_0x1f0e4d-0x0;var _0x128996=_0xc804[_0x1f0e4d];return _0x128996;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x4c80('0x0'),'remove',_0x4c80('0x1')];function createListener(_0x682578,_0x3ec4a8){return function(_0x3b7d8c){_0x3ec4a8['emit'](_0x682578,_0x3b7d8c);};}function removeListener(_0x1aeae5,_0x56f781){return function(){OpenchannelInteractionEvents[_0x4c80('0x2')](_0x1aeae5,_0x56f781);};}exports[_0x4c80('0x3')]=function(_0x2c9e53){for(var _0x1e2f13=0x0,_0x5156f6=events['length'];_0x1e2f13<_0x5156f6;_0x1e2f13++){var _0x590b41=events[_0x1e2f13];var _0x310ce4=createListener(_0x4c80('0x4')+_0x590b41,_0x2c9e53);OpenchannelInteractionEvents['on'](_0x590b41,_0x310ce4);}};
\ No newline at end of file
+var _0x5632=['length','./openchannelInteraction.events','save','remove','emit','removeListener','register'];(function(_0x32a547,_0x1e6dcb){var _0x277e66=function(_0x53f787){while(--_0x53f787){_0x32a547['push'](_0x32a547['shift']());}};_0x277e66(++_0x1e6dcb);}(_0x5632,0x1f2));var _0x2563=function(_0x48cf28,_0x2b9da5){_0x48cf28=_0x48cf28-0x0;var _0xc7ad51=_0x5632[_0x48cf28];return _0xc7ad51;};'use strict';var OpenchannelInteractionEvents=require(_0x2563('0x0'));var events=[_0x2563('0x1'),_0x2563('0x2'),'update'];function createListener(_0x44e159,_0x2734be){return function(_0x401154){_0x2734be[_0x2563('0x3')](_0x44e159,_0x401154);};}function removeListener(_0x357ce8,_0x4e3a94){return function(){OpenchannelInteractionEvents[_0x2563('0x4')](_0x357ce8,_0x4e3a94);};}exports[_0x2563('0x5')]=function(_0x3ea998){for(var _0x110344=0x0,_0x4fd05b=events[_0x2563('0x6')];_0x110344<_0x4fd05b;_0x110344++){var _0x3840e3=events[_0x110344];var _0x2ea815=createListener('openchannelInteraction:'+_0x3840e3,_0x3ea998);OpenchannelInteractionEvents['on'](_0x3840e3,_0x2ea815);}};
\ No newline at end of file
index e37fb40..9d812fa 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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70e0,0x17b));var _0x070e=function(_0xf2c7ad,_0x1d929f){_0xf2c7ad=_0xf2c7ad-0x0;var _0x14b94e=_0x70e0[_0xf2c7ad];return _0x14b94e;};'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 _0x0713=['get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','openchannelmessage:create','put','update','accept','/:id/reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelMessage.controller'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_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'));var controller=require(_0x3071('0x7'));router[_0x3071('0x8')]('/',auth[_0x3071('0x9')](),controller[_0x3071('0xa')]);router[_0x3071('0x8')](_0x3071('0xb'),auth[_0x3071('0x9')](),controller[_0x3071('0xc')]);router[_0x3071('0x8')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller['show']);router[_0x3071('0xe')]('/',auth[_0x3071('0x9')](),interaction[_0x3071('0xf')](_0x3071('0x10'),_0x3071('0x11')),controller['create']);router[_0x3071('0x12')](_0x3071('0xd'),auth[_0x3071('0x9')](),controller[_0x3071('0x13')]);router[_0x3071('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x3071('0x14')]);router['put'](_0x3071('0x15'),auth[_0x3071('0x9')](),controller['reject']);router[_0x3071('0x16')]('/:id',auth[_0x3071('0x9')](),controller[_0x3071('0x17')]);module[_0x3071('0x18')]=router;
\ No newline at end of file
index 2f8e8f5..67330ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7269=['TEXT','BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x7269,0x76));var _0x9726=function(_0x4ded7f,_0x147611){_0x4ded7f=_0x4ded7f-0x0;var _0x160884=_0x7269[_0x4ded7f];return _0x160884;};'use strict';var Sequelize=require(_0x9726('0x0'));module[_0x9726('0x1')]={'body':{'type':Sequelize[_0x9726('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x9726('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x9726('0x4')]('in','out'),'defaultValue':_0x9726('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x9726('0x6')]},'providerName':{'type':Sequelize[_0x9726('0x7')]},'providerResponse':{'type':Sequelize[_0x9726('0x2')]}};
\ No newline at end of file
+var _0xe511=['medium','BOOLEAN','ENUM','out','DATE','STRING','TEXT','sequelize','exports'];(function(_0x5ac5c7,_0x3e5ecd){var _0x1eede1=function(_0x128357){while(--_0x128357){_0x5ac5c7['push'](_0x5ac5c7['shift']());}};_0x1eede1(++_0x3e5ecd);}(_0xe511,0x16f));var _0x1e51=function(_0x5ee823,_0x24650b){_0x5ee823=_0x5ee823-0x0;var _0x209bd2=_0xe511[_0x5ee823];return _0x209bd2;};'use strict';var Sequelize=require(_0x1e51('0x0'));module[_0x1e51('0x1')]={'body':{'type':Sequelize['TEXT'](_0x1e51('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x1e51('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x1e51('0x4')]('in','out'),'defaultValue':_0x1e51('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x1e51('0x6')]},'providerName':{'type':Sequelize[_0x1e51('0x7')]},'providerResponse':{'type':Sequelize[_0x1e51('0x8')]}};
\ No newline at end of file
index 449bab2..b64fa79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a08=['key','model','query','keys','intersection','attributes','fields','nolimit','sort','filters','pick','filter','where','merge','map','VIRTUAL','options','OpenchannelMessage','includeAll','findAll','rows','show','params','rawAttributes','length','include','find','create','body','update','describe','accept','read','format','YYYY-MM-DD\x20HH:mm:ss','user','agent','UserId','OpenchannelInteraction','OpenchannelInteractionId','isNil','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','openchannel-interactions','null','rejectMessage','internal','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','stack','name','send','index','fieldName','type'];(function(_0xcb8d50,_0x3d470f){var _0x5a292c=function(_0x3c6978){while(--_0x3c6978){_0xcb8d50['push'](_0xcb8d50['shift']());}};_0x5a292c(++_0x3d470f);}(_0x0a08,0x153));var _0x80a0=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x0a08[_0x47b58b];return _0x46bebe;};'use strict';var emlformat=require(_0x80a0('0x0'));var rimraf=require(_0x80a0('0x1'));var zipdir=require(_0x80a0('0x2'));var jsonpatch=require(_0x80a0('0x3'));var rp=require(_0x80a0('0x4'));var moment=require(_0x80a0('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x80a0('0x6'));var util=require('util');var path=require(_0x80a0('0x7'));var sox=require(_0x80a0('0x8'));var csv=require(_0x80a0('0x9'));var ejs=require(_0x80a0('0xa'));var fs=require('fs');var fs_extra=require(_0x80a0('0xb'));var _=require(_0x80a0('0xc'));var squel=require('squel');var crypto=require(_0x80a0('0xd'));var jsforce=require(_0x80a0('0xe'));var deskjs=require(_0x80a0('0xf'));var toCsv=require('to-csv');var querystring=require(_0x80a0('0x10'));var Papa=require(_0x80a0('0x11'));var Redis=require(_0x80a0('0x12'));var authService=require(_0x80a0('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x80a0('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x80a0('0x15'))(_0x80a0('0x16'));var utils=require(_0x80a0('0x17'));var config=require(_0x80a0('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x80a0('0x19'))['db'];config[_0x80a0('0x1a')]=_[_0x80a0('0x1b')](config[_0x80a0('0x1a')],{'host':_0x80a0('0x1c'),'port':0x18eb});var socket=require(_0x80a0('0x1d'))(new Redis(config['redis']));require(_0x80a0('0x1e'))[_0x80a0('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x80a0('0x20')]['http']({'port':0x232c});var client9002=jayson[_0x80a0('0x20')][_0x80a0('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x15f71c,_0x3fe3c2,_0x453ea9,_0x27b06f){return new BPromise(function(_0x252762,_0xc95622){var _0x45addd=_0x27b06f||client;return _0x45addd[_0x80a0('0x22')](_0x15f71c,_0x453ea9)[_0x80a0('0x23')](function(_0x51cf83){logger[_0x80a0('0x24')](_0x80a0('0x25'),_0x3fe3c2,_0x80a0('0x26'));logger[_0x80a0('0x27')](_0x80a0('0x28'),_0x3fe3c2,_0x80a0('0x26'),JSON['stringify'](_0x51cf83));if(_0x51cf83[_0x80a0('0x29')]){if(_0x51cf83[_0x80a0('0x29')][_0x80a0('0x2a')]===0x1f4){logger[_0x80a0('0x29')](_0x80a0('0x25'),_0x3fe3c2,_0x51cf83[_0x80a0('0x29')]['message']);return _0xc95622(_0x51cf83[_0x80a0('0x29')][_0x80a0('0x2b')]);}logger[_0x80a0('0x29')]('OpenchannelMessage,\x20%s,\x20%s',_0x3fe3c2,_0x51cf83[_0x80a0('0x29')]['message']);return _0x252762(_0x51cf83[_0x80a0('0x29')][_0x80a0('0x2b')]);}else{logger[_0x80a0('0x24')](_0x80a0('0x25'),_0x3fe3c2,'request\x20sent');_0x252762(_0x51cf83[_0x80a0('0x2c')][_0x80a0('0x2b')]);}})[_0x80a0('0x2d')](function(_0x163807){logger[_0x80a0('0x29')](_0x80a0('0x25'),_0x3fe3c2,_0x163807);_0xc95622(_0x163807);});});}function respondWithStatusCode(_0x53cc64,_0x1a8817){_0x1a8817=_0x1a8817||0xcc;return function(_0x3cb993){if(_0x3cb993){return _0x53cc64[_0x80a0('0x2e')](_0x1a8817);}return _0x53cc64[_0x80a0('0x2f')](_0x1a8817)[_0x80a0('0x30')]();};}function respondWithResult(_0x616e14,_0x448386){_0x448386=_0x448386||0xc8;return function(_0x3e9e1f){if(_0x3e9e1f){return _0x616e14['status'](_0x448386)[_0x80a0('0x31')](_0x3e9e1f);}};}function respondWithFilteredResult(_0x26323a,_0x4c2a08){return function(_0x49b749){if(_0x49b749){var _0x3331be=typeof _0x4c2a08[_0x80a0('0x32')]===_0x80a0('0x33')&&typeof _0x4c2a08[_0x80a0('0x34')]===_0x80a0('0x33');var _0x5536c1=_0x49b749[_0x80a0('0x35')];var _0x3abc5f=_0x3331be?0x0:_0x4c2a08[_0x80a0('0x32')];var _0x1bd0e4=_0x3331be?_0x49b749[_0x80a0('0x35')]:_0x4c2a08[_0x80a0('0x32')]+_0x4c2a08[_0x80a0('0x34')];var _0x932703;if(_0x1bd0e4>=_0x5536c1){_0x1bd0e4=_0x5536c1;_0x932703=0xc8;}else{_0x932703=0xce;}_0x26323a[_0x80a0('0x2f')](_0x932703);return _0x26323a[_0x80a0('0x36')](_0x80a0('0x37'),_0x3abc5f+'-'+_0x1bd0e4+'/'+_0x5536c1)[_0x80a0('0x31')](_0x49b749);}return null;};}function patchUpdates(_0x1dafbb){return function(_0x3204fa){try{jsonpatch[_0x80a0('0x38')](_0x3204fa,_0x1dafbb,!![]);}catch(_0x1a7678){return BPromise[_0x80a0('0x39')](_0x1a7678);}return _0x3204fa[_0x80a0('0x3a')]();};}function saveUpdates(_0x23aa90,_0x55f0be){return function(_0x189505){if(_0x189505){return _0x189505['update'](_0x23aa90)[_0x80a0('0x23')](function(_0x22f27f){return _0x22f27f;});}return null;};}function removeEntity(_0x3a7f60,_0x2aee42){return function(_0x3614bf){if(_0x3614bf){return _0x3614bf[_0x80a0('0x3b')]()['then'](function(){_0x3a7f60[_0x80a0('0x2f')](0xcc)[_0x80a0('0x30')]();});}};}function handleEntityNotFound(_0x520a02,_0x4a0d89){return function(_0x3dde0f){if(!_0x3dde0f){_0x520a02[_0x80a0('0x2e')](0x194);}return _0x3dde0f;};}function handleError(_0x27a361,_0xc8ddda){_0xc8ddda=_0xc8ddda||0x1f4;return function(_0x29f8b0){logger['error'](_0x29f8b0[_0x80a0('0x3c')]);if(_0x29f8b0[_0x80a0('0x3d')]){delete _0x29f8b0[_0x80a0('0x3d')];}_0x27a361[_0x80a0('0x2f')](_0xc8ddda)[_0x80a0('0x3e')](_0x29f8b0);};}exports[_0x80a0('0x3f')]=function(_0x25653c,_0x19f2bc){var _0x268270={},_0x1cc488={},_0x10e88e={'count':0x0,'rows':[]};var _0x2687e3=_['map'](db['OpenchannelMessage']['rawAttributes'],function(_0x4c250b){return{'name':_0x4c250b[_0x80a0('0x40')],'type':_0x4c250b[_0x80a0('0x41')][_0x80a0('0x42')]};});_0x1cc488[_0x80a0('0x43')]=_['map'](_0x2687e3,_0x80a0('0x3d'));_0x1cc488[_0x80a0('0x44')]=_[_0x80a0('0x45')](_0x25653c[_0x80a0('0x44')]);_0x1cc488['filters']=_[_0x80a0('0x46')](_0x1cc488[_0x80a0('0x43')],_0x1cc488['query']);_0x268270[_0x80a0('0x47')]=_['intersection'](_0x1cc488['model'],qs[_0x80a0('0x48')](_0x25653c[_0x80a0('0x44')][_0x80a0('0x48')]));_0x268270[_0x80a0('0x47')]=_0x268270[_0x80a0('0x47')]['length']?_0x268270[_0x80a0('0x47')]:_0x1cc488[_0x80a0('0x43')];if(!_0x25653c[_0x80a0('0x44')]['hasOwnProperty'](_0x80a0('0x49'))){_0x268270[_0x80a0('0x34')]=qs['limit'](_0x25653c['query'][_0x80a0('0x34')]);_0x268270[_0x80a0('0x32')]=qs['offset'](_0x25653c['query'][_0x80a0('0x32')]);}_0x268270['order']=qs[_0x80a0('0x4a')](_0x25653c[_0x80a0('0x44')][_0x80a0('0x4a')]);_0x268270['where']=qs[_0x80a0('0x4b')](_[_0x80a0('0x4c')](_0x25653c[_0x80a0('0x44')],_0x1cc488[_0x80a0('0x4b')]),_0x2687e3);if(_0x25653c['query'][_0x80a0('0x4d')]){_0x268270[_0x80a0('0x4e')]=_[_0x80a0('0x4f')](_0x268270['where'],{'$or':_[_0x80a0('0x50')](_0x2687e3,function(_0x4b827c){if(_0x4b827c[_0x80a0('0x41')]!==_0x80a0('0x51')){var _0x410eaf={};_0x410eaf[_0x4b827c[_0x80a0('0x3d')]]={'$like':'%'+_0x25653c[_0x80a0('0x44')][_0x80a0('0x4d')]+'%'};return _0x410eaf;}})});}_0x268270=_[_0x80a0('0x4f')]({},_0x268270,_0x25653c[_0x80a0('0x52')]);var _0x1e76d6={'where':_0x268270[_0x80a0('0x4e')]};return db[_0x80a0('0x53')]['count'](_0x1e76d6)[_0x80a0('0x23')](function(_0x2c3c77){_0x10e88e['count']=_0x2c3c77;if(_0x25653c[_0x80a0('0x44')][_0x80a0('0x54')]){_0x268270['include']=[{'all':!![]}];}return db[_0x80a0('0x53')][_0x80a0('0x55')](_0x268270);})[_0x80a0('0x23')](function(_0x2be628){_0x10e88e[_0x80a0('0x56')]=_0x2be628;return _0x10e88e;})[_0x80a0('0x23')](respondWithFilteredResult(_0x19f2bc,_0x268270))[_0x80a0('0x2d')](handleError(_0x19f2bc,null));};exports[_0x80a0('0x57')]=function(_0x9ec95d,_0x1d5aa8){var _0x560e85={'raw':!![],'where':{'id':_0x9ec95d[_0x80a0('0x58')]['id']}},_0x541d0e={};_0x541d0e['model']=_['keys'](db[_0x80a0('0x53')][_0x80a0('0x59')]);_0x541d0e['query']=_[_0x80a0('0x45')](_0x9ec95d[_0x80a0('0x44')]);_0x541d0e[_0x80a0('0x4b')]=_[_0x80a0('0x46')](_0x541d0e[_0x80a0('0x43')],_0x541d0e[_0x80a0('0x44')]);_0x560e85[_0x80a0('0x47')]=_['intersection'](_0x541d0e[_0x80a0('0x43')],qs[_0x80a0('0x48')](_0x9ec95d['query']['fields']));_0x560e85['attributes']=_0x560e85[_0x80a0('0x47')][_0x80a0('0x5a')]?_0x560e85[_0x80a0('0x47')]:_0x541d0e['model'];if(_0x9ec95d['query'][_0x80a0('0x54')]){_0x560e85[_0x80a0('0x5b')]=[{'all':!![]}];}_0x560e85=_[_0x80a0('0x4f')]({},_0x560e85,_0x9ec95d['options']);return db[_0x80a0('0x53')][_0x80a0('0x5c')](_0x560e85)[_0x80a0('0x23')](handleEntityNotFound(_0x1d5aa8,null))[_0x80a0('0x23')](respondWithResult(_0x1d5aa8,null))[_0x80a0('0x2d')](handleError(_0x1d5aa8,null));};exports[_0x80a0('0x5d')]=function(_0x310392,_0x51759e){return db[_0x80a0('0x53')][_0x80a0('0x5d')](_0x310392[_0x80a0('0x5e')],{})['then'](respondWithResult(_0x51759e,0xc9))[_0x80a0('0x2d')](handleError(_0x51759e,null));};exports[_0x80a0('0x5f')]=function(_0x52ff9c,_0x4ac6e2){if(_0x52ff9c[_0x80a0('0x5e')]['id']){delete _0x52ff9c[_0x80a0('0x5e')]['id'];}return db['OpenchannelMessage']['find']({'where':{'id':_0x52ff9c[_0x80a0('0x58')]['id']}})[_0x80a0('0x23')](handleEntityNotFound(_0x4ac6e2,null))['then'](saveUpdates(_0x52ff9c[_0x80a0('0x5e')],null))[_0x80a0('0x23')](respondWithResult(_0x4ac6e2,null))[_0x80a0('0x2d')](handleError(_0x4ac6e2,null));};exports[_0x80a0('0x3b')]=function(_0x3b250e,_0x3acbf8){return db[_0x80a0('0x53')]['find']({'where':{'id':_0x3b250e[_0x80a0('0x58')]['id']}})['then'](handleEntityNotFound(_0x3acbf8,null))[_0x80a0('0x23')](removeEntity(_0x3acbf8,null))['catch'](handleError(_0x3acbf8,null));};exports[_0x80a0('0x60')]=function(_0x2ec983,_0x4c9077){return db['OpenchannelMessage'][_0x80a0('0x60')]()[_0x80a0('0x23')](respondWithResult(_0x4c9077,null))[_0x80a0('0x2d')](handleError(_0x4c9077,null));};var interaction_log=require('../../config/logger')('openchannel-interactions');exports[_0x80a0('0x61')]=function(_0x42109d,_0x49873b,_0x2423f5){var _0x2c89f2={'agent':{},'channel':'openchannel'};if(_0x42109d[_0x80a0('0x5e')]['id']){delete _0x42109d[_0x80a0('0x5e')]['id'];}_0x42109d['body'][_0x80a0('0x62')]=!![];_0x42109d[_0x80a0('0x5e')]['readAt']=moment()[_0x80a0('0x63')](_0x80a0('0x64'));_0x42109d[_0x80a0('0x5e')]['UserId']=_0x42109d[_0x80a0('0x5e')]['UserId']||_0x42109d[_0x80a0('0x65')]['id'];_0x2c89f2[_0x80a0('0x66')]['id']=_0x42109d[_0x80a0('0x5e')][_0x80a0('0x67')];return db[_0x80a0('0x53')][_0x80a0('0x5c')]({'where':{'id':_0x42109d[_0x80a0('0x58')]['id'],'UserId':null}})[_0x80a0('0x23')](handleEntityNotFound(_0x49873b,null))[_0x80a0('0x23')](saveUpdates(_0x42109d[_0x80a0('0x5e')],null))[_0x80a0('0x23')](function(_0x546d58){if(_0x546d58){_0x2c89f2[_0x80a0('0x2b')]=_0x546d58['get']({'plain':!![]});return db[_0x80a0('0x68')][_0x80a0('0x5c')]({'where':{'id':_0x546d58[_0x80a0('0x69')]}});}return null;})[_0x80a0('0x23')](handleEntityNotFound(_0x49873b,null))[_0x80a0('0x23')](function(_0x3761b9){if(_0x3761b9){return _0x3761b9[_0x80a0('0x5f')]({'UserId':_0x42109d[_0x80a0('0x5e')][_0x80a0('0x67')],'read1stAt':_[_0x80a0('0x6a')](_0x3761b9['read1stAt'])?moment()[_0x80a0('0x63')](_0x80a0('0x64')):undefined});}return null;})[_0x80a0('0x23')](function(_0x12e766){if(_0x12e766){_0x2c89f2[_0x80a0('0x6b')]=_0x12e766[_0x80a0('0x6c')]({'plain':!![]});interaction_log[_0x80a0('0x24')](_0x80a0('0x6d'),_0x42109d[_0x80a0('0x65')]['id'],_0x42109d[_0x80a0('0x65')][_0x80a0('0x3d')],_0x42109d[_0x80a0('0x65')][_0x80a0('0x6e')],_0x2c89f2[_0x80a0('0x6b')]['id'],_0x42109d['body']?JSON[_0x80a0('0x6f')](_0x42109d[_0x80a0('0x5e')]):'null');return respondWithRpcPromise(_0x80a0('0x70'),_0x80a0('0x71'),_0x2c89f2);}return null;})[_0x80a0('0x23')](function(_0x146a44){var _0x58ffe2=_0x80a0('0x72')+_0x146a44['message'][_0x80a0('0x73')];return db[_0x80a0('0x74')][_0x80a0('0x44')](_0x58ffe2,{'type':db[_0x80a0('0x75')][_0x80a0('0x76')][_0x80a0('0x77')],'raw':!![]})['then'](function(_0x20f815){return _0x20f815;});})[_0x80a0('0x23')](function(_0x3ff67d){if(_0x3ff67d){_0x2c89f2[_0x80a0('0x2b')][_0x80a0('0x78')]=_0x3ff67d[0x0];if(!_0x42109d[_0x80a0('0x5e')][_0x80a0('0x67')])return;return db[_0x80a0('0x79')]['find']({'where':{'id':_0x42109d['body'][_0x80a0('0x67')],'role':_0x80a0('0x66')},'attributes':['id',_0x80a0('0x3d'),_0x80a0('0x7a'),_0x80a0('0x7b'),'internal'],'raw':!![]});}return null;})['then'](function(_0x124344){if(!_0x124344)return null;_0x2c89f2[_0x80a0('0x2b')]['agent']=_0x124344;return _0x2c89f2;})[_0x80a0('0x23')](function(_0x571c80){if(_0x571c80){if(_0x42109d[_0x80a0('0x5e')][_0x80a0('0x7c')]){_0x2c89f2[_0x80a0('0x2b')][_0x80a0('0x7d')]=util[_0x80a0('0x63')](_0x80a0('0x7e'),_0x42109d['user'][_0x80a0('0x3d')]);_0x2c89f2[_0x80a0('0x2b')][_0x80a0('0x7f')]=_0x2c89f2[_0x80a0('0x7f')];_0x2c89f2[_0x80a0('0x2b')][_0x80a0('0x80')]=_0x80a0('0x61');return respondWithRpcPromise(_0x80a0('0x81'),'EventManager',{'event':_0x80a0('0x82'),'message':_0x2c89f2[_0x80a0('0x2b')]},client9002)[_0x80a0('0x23')](function(){return _0x2c89f2;});}return _0x2c89f2;}return null;})[_0x80a0('0x23')](respondWithResult(_0x49873b,null))[_0x80a0('0x2d')](handleError(_0x49873b,null));};var interaction_log=require(_0x80a0('0x15'))(_0x80a0('0x83'));exports[_0x80a0('0x39')]=function(_0xbbdc2b,_0x113cf1,_0x13d57e){var _0x4759db={'agent':{},'channel':'openchannel'};if(_0xbbdc2b[_0x80a0('0x5e')]['id']){delete _0xbbdc2b['body']['id'];}_0xbbdc2b[_0x80a0('0x5e')][_0x80a0('0x67')]=_0xbbdc2b[_0x80a0('0x5e')][_0x80a0('0x67')]||_0xbbdc2b[_0x80a0('0x65')]['id'];_0x4759db[_0x80a0('0x66')]['id']=_0xbbdc2b[_0x80a0('0x5e')][_0x80a0('0x67')];return db['OpenchannelMessage']['find']({'where':{'id':_0xbbdc2b[_0x80a0('0x58')]['id'],'UserId':null}})[_0x80a0('0x23')](handleEntityNotFound(_0x113cf1,null))[_0x80a0('0x23')](function(_0x13ac12){if(_0x13ac12){_0x4759db[_0x80a0('0x2b')]=_0x13ac12[_0x80a0('0x6c')]({'plain':!![]});return db[_0x80a0('0x68')][_0x80a0('0x5c')]({'where':{'id':_0x13ac12[_0x80a0('0x69')]}});}return null;})[_0x80a0('0x23')](handleEntityNotFound(_0x113cf1,null))[_0x80a0('0x23')](function(_0x12b083){if(_0x12b083){_0x4759db[_0x80a0('0x6b')]=_0x12b083[_0x80a0('0x6c')]({'plain':!![]});interaction_log[_0x80a0('0x24')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xbbdc2b[_0x80a0('0x65')]['id'],_0xbbdc2b[_0x80a0('0x65')][_0x80a0('0x3d')],_0xbbdc2b[_0x80a0('0x65')][_0x80a0('0x6e')],_0x4759db[_0x80a0('0x6b')]['id'],_0xbbdc2b[_0x80a0('0x5e')]?JSON[_0x80a0('0x6f')](_0xbbdc2b[_0x80a0('0x5e')]):_0x80a0('0x84'));return respondWithRpcPromise('RejectMessage',_0x80a0('0x85'),_0x4759db);}return null;})[_0x80a0('0x23')](function(_0x4859ed){var _0x495418='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4859ed[_0x80a0('0x2b')][_0x80a0('0x73')];return db['sequelize']['query'](_0x495418,{'type':db[_0x80a0('0x75')][_0x80a0('0x76')]['SELECT'],'raw':!![]})['then'](function(_0x16e3d6){return _0x16e3d6;});})[_0x80a0('0x23')](function(_0x2f91ea){if(_0x2f91ea){_0x4759db['message'][_0x80a0('0x78')]=_0x2f91ea[0x0];if(!_0xbbdc2b[_0x80a0('0x5e')][_0x80a0('0x67')])return;return db['User'][_0x80a0('0x5c')]({'where':{'id':_0xbbdc2b[_0x80a0('0x5e')][_0x80a0('0x67')],'role':_0x80a0('0x66')},'attributes':['id',_0x80a0('0x3d'),_0x80a0('0x7a'),_0x80a0('0x7b'),_0x80a0('0x86')],'raw':!![]});}return null;})[_0x80a0('0x23')](function(_0x578d5e){if(!_0x578d5e)return null;_0x4759db[_0x80a0('0x2b')][_0x80a0('0x66')]=_0x578d5e;return _0x4759db;})[_0x80a0('0x23')](function(_0x12b848){if(_0x12b848){_0x12b848[_0x80a0('0x2b')][_0x80a0('0x7d')]=util[_0x80a0('0x63')]('SIP/%s',_0xbbdc2b['user']['name']);_0x12b848[_0x80a0('0x2b')][_0x80a0('0x7f')]=_0x4759db['channel'];_0x12b848['message'][_0x80a0('0x80')]=_0x80a0('0x39');respondWithRpcPromise('EventManager',_0x80a0('0x81'),{'event':'rejectmessage','message':_0x12b848[_0x80a0('0x2b')]},client9002);return _0x4759db;}return null;})['then'](respondWithResult(_0x113cf1,null))[_0x80a0('0x2d')](handleError(_0x113cf1,null));};
\ No newline at end of file
+var _0x67f5=['acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','fullname','email','internal','manual','interface','channel','motionChannel','event','accept','EventManager','acceptmessage','openchannel-interactions','reject','OpenchannelInteractionId','role','SELECT','SIP/%s','eml-format','rimraf','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','client','http','request','info','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelMessage,\x20%s,\x20%s','sendStatus','status','json','offset','limit','set','apply','save','destroy','then','end','name','send','index','map','OpenchannelMessage','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','sort','where','merge','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','params','find','create','body','describe','openchannel','read','readAt','UserId','user','agent','get','OpenchannelInteraction','update','isNil','read1stAt','format','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null'];(function(_0x202d24,_0x5e8641){var _0x2b3a8e=function(_0x4c7c4a){while(--_0x4c7c4a){_0x202d24['push'](_0x202d24['shift']());}};_0x2b3a8e(++_0x5e8641);}(_0x67f5,0x99));var _0x567f=function(_0x2e249d,_0x41b7e7){_0x2e249d=_0x2e249d-0x0;var _0x1faa37=_0x67f5[_0x2e249d];return _0x1faa37;};'use strict';var emlformat=require(_0x567f('0x0'));var rimraf=require(_0x567f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x567f('0x2'));var moment=require(_0x567f('0x3'));var BPromise=require(_0x567f('0x4'));var Mustache=require(_0x567f('0x5'));var util=require('util');var path=require('path');var sox=require(_0x567f('0x6'));var csv=require(_0x567f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x567f('0x8'));var _=require(_0x567f('0x9'));var squel=require(_0x567f('0xa'));var crypto=require('crypto');var jsforce=require(_0x567f('0xb'));var deskjs=require(_0x567f('0xc'));var toCsv=require(_0x567f('0x7'));var querystring=require(_0x567f('0xd'));var Papa=require(_0x567f('0xe'));var Redis=require(_0x567f('0xf'));var authService=require(_0x567f('0x10'));var qs=require(_0x567f('0x11'));var as=require(_0x567f('0x12'));var hardwareService=require(_0x567f('0x13'));var logger=require(_0x567f('0x14'))(_0x567f('0x15'));var utils=require(_0x567f('0x16'));var config=require(_0x567f('0x17'));var licenseUtil=require(_0x567f('0x18'));var db=require(_0x567f('0x19'))['db'];config[_0x567f('0x1a')]=_[_0x567f('0x1b')](config['redis'],{'host':_0x567f('0x1c'),'port':0x18eb});var socket=require(_0x567f('0x1d'))(new Redis(config[_0x567f('0x1a')]));require(_0x567f('0x1e'))[_0x567f('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0x567f('0x20')][_0x567f('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x567f('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x51429d,_0x395d6c,_0xf0fb55,_0x3322eb){return new BPromise(function(_0x1ed15e,_0x37dd23){var _0x35386e=_0x3322eb||client;return _0x35386e[_0x567f('0x22')](_0x51429d,_0xf0fb55)['then'](function(_0xf27b39){logger[_0x567f('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x395d6c,_0x567f('0x24'));logger['debug'](_0x567f('0x25'),_0x395d6c,'request\x20sent',JSON[_0x567f('0x26')](_0xf27b39));if(_0xf27b39[_0x567f('0x27')]){if(_0xf27b39[_0x567f('0x27')][_0x567f('0x28')]===0x1f4){logger[_0x567f('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x395d6c,_0xf27b39[_0x567f('0x27')][_0x567f('0x29')]);return _0x37dd23(_0xf27b39[_0x567f('0x27')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x395d6c,_0xf27b39[_0x567f('0x27')][_0x567f('0x29')]);return _0x1ed15e(_0xf27b39[_0x567f('0x27')][_0x567f('0x29')]);}else{logger[_0x567f('0x23')](_0x567f('0x2a'),_0x395d6c,_0x567f('0x24'));_0x1ed15e(_0xf27b39['result'][_0x567f('0x29')]);}})['catch'](function(_0x3a9cfa){logger[_0x567f('0x27')](_0x567f('0x2a'),_0x395d6c,_0x3a9cfa);_0x37dd23(_0x3a9cfa);});});}function respondWithStatusCode(_0x21403e,_0x1654d5){_0x1654d5=_0x1654d5||0xcc;return function(_0xa9f997){if(_0xa9f997){return _0x21403e[_0x567f('0x2b')](_0x1654d5);}return _0x21403e[_0x567f('0x2c')](_0x1654d5)['end']();};}function respondWithResult(_0x311625,_0x5bc03c){_0x5bc03c=_0x5bc03c||0xc8;return function(_0x1d0884){if(_0x1d0884){return _0x311625['status'](_0x5bc03c)[_0x567f('0x2d')](_0x1d0884);}};}function respondWithFilteredResult(_0x406a36,_0x386513){return function(_0x38dbca){if(_0x38dbca){var _0x2201c0=typeof _0x386513[_0x567f('0x2e')]==='undefined'&&typeof _0x386513['limit']==='undefined';var _0x46fdc4=_0x38dbca['count'];var _0x1e1952=_0x2201c0?0x0:_0x386513[_0x567f('0x2e')];var _0x36c49c=_0x2201c0?_0x38dbca['count']:_0x386513[_0x567f('0x2e')]+_0x386513[_0x567f('0x2f')];var _0x20cfb0;if(_0x36c49c>=_0x46fdc4){_0x36c49c=_0x46fdc4;_0x20cfb0=0xc8;}else{_0x20cfb0=0xce;}_0x406a36[_0x567f('0x2c')](_0x20cfb0);return _0x406a36[_0x567f('0x30')]('Content-Range',_0x1e1952+'-'+_0x36c49c+'/'+_0x46fdc4)[_0x567f('0x2d')](_0x38dbca);}return null;};}function patchUpdates(_0x421919){return function(_0x108b2f){try{jsonpatch[_0x567f('0x31')](_0x108b2f,_0x421919,!![]);}catch(_0x1cea6a){return BPromise['reject'](_0x1cea6a);}return _0x108b2f[_0x567f('0x32')]();};}function saveUpdates(_0x327318,_0x16819a){return function(_0x564104){if(_0x564104){return _0x564104['update'](_0x327318)['then'](function(_0x294d12){return _0x294d12;});}return null;};}function removeEntity(_0x1c4e1e,_0x536786){return function(_0x429b0f){if(_0x429b0f){return _0x429b0f[_0x567f('0x33')]()[_0x567f('0x34')](function(){_0x1c4e1e[_0x567f('0x2c')](0xcc)[_0x567f('0x35')]();});}};}function handleEntityNotFound(_0x22cd7a,_0x598128){return function(_0x501031){if(!_0x501031){_0x22cd7a[_0x567f('0x2b')](0x194);}return _0x501031;};}function handleError(_0x2d9be3,_0x303420){_0x303420=_0x303420||0x1f4;return function(_0x41473c){logger['error'](_0x41473c['stack']);if(_0x41473c['name']){delete _0x41473c[_0x567f('0x36')];}_0x2d9be3[_0x567f('0x2c')](_0x303420)[_0x567f('0x37')](_0x41473c);};}exports[_0x567f('0x38')]=function(_0x45ddeb,_0x5a4ae4){var _0x4db1c8={},_0x56979e={},_0x46fa74={'count':0x0,'rows':[]};var _0x5c999c=_[_0x567f('0x39')](db[_0x567f('0x3a')][_0x567f('0x3b')],function(_0x575962){return{'name':_0x575962[_0x567f('0x3c')],'type':_0x575962[_0x567f('0x3d')][_0x567f('0x3e')]};});_0x56979e[_0x567f('0x3f')]=_[_0x567f('0x39')](_0x5c999c,_0x567f('0x36'));_0x56979e['query']=_[_0x567f('0x40')](_0x45ddeb['query']);_0x56979e[_0x567f('0x41')]=_[_0x567f('0x42')](_0x56979e[_0x567f('0x3f')],_0x56979e[_0x567f('0x43')]);_0x4db1c8[_0x567f('0x44')]=_[_0x567f('0x42')](_0x56979e[_0x567f('0x3f')],qs[_0x567f('0x45')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x45')]));_0x4db1c8[_0x567f('0x44')]=_0x4db1c8[_0x567f('0x44')][_0x567f('0x46')]?_0x4db1c8[_0x567f('0x44')]:_0x56979e[_0x567f('0x3f')];if(!_0x45ddeb[_0x567f('0x43')]['hasOwnProperty'](_0x567f('0x47'))){_0x4db1c8[_0x567f('0x2f')]=qs[_0x567f('0x2f')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x2f')]);_0x4db1c8['offset']=qs[_0x567f('0x2e')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x2e')]);}_0x4db1c8[_0x567f('0x48')]=qs[_0x567f('0x49')](_0x45ddeb[_0x567f('0x43')][_0x567f('0x49')]);_0x4db1c8['where']=qs[_0x567f('0x41')](_['pick'](_0x45ddeb['query'],_0x56979e['filters']),_0x5c999c);if(_0x45ddeb[_0x567f('0x43')]['filter']){_0x4db1c8[_0x567f('0x4a')]=_[_0x567f('0x4b')](_0x4db1c8[_0x567f('0x4a')],{'$or':_['map'](_0x5c999c,function(_0x3ce23f){if(_0x3ce23f[_0x567f('0x3d')]!==_0x567f('0x4c')){var _0x390ed7={};_0x390ed7[_0x3ce23f[_0x567f('0x36')]]={'$like':'%'+_0x45ddeb[_0x567f('0x43')][_0x567f('0x4d')]+'%'};return _0x390ed7;}})});}_0x4db1c8=_[_0x567f('0x4b')]({},_0x4db1c8,_0x45ddeb[_0x567f('0x4e')]);var _0x1558c8={'where':_0x4db1c8[_0x567f('0x4a')]};return db[_0x567f('0x3a')][_0x567f('0x4f')](_0x1558c8)['then'](function(_0x155028){_0x46fa74[_0x567f('0x4f')]=_0x155028;if(_0x45ddeb['query'][_0x567f('0x50')]){_0x4db1c8[_0x567f('0x51')]=[{'all':!![]}];}return db[_0x567f('0x3a')][_0x567f('0x52')](_0x4db1c8);})[_0x567f('0x34')](function(_0x2898bc){_0x46fa74[_0x567f('0x53')]=_0x2898bc;return _0x46fa74;})[_0x567f('0x34')](respondWithFilteredResult(_0x5a4ae4,_0x4db1c8))[_0x567f('0x54')](handleError(_0x5a4ae4,null));};exports['show']=function(_0x33526f,_0x47b001){var _0x55737d={'raw':!![],'where':{'id':_0x33526f[_0x567f('0x55')]['id']}},_0x288e0d={};_0x288e0d[_0x567f('0x3f')]=_[_0x567f('0x40')](db['OpenchannelMessage']['rawAttributes']);_0x288e0d['query']=_[_0x567f('0x40')](_0x33526f[_0x567f('0x43')]);_0x288e0d[_0x567f('0x41')]=_['intersection'](_0x288e0d[_0x567f('0x3f')],_0x288e0d[_0x567f('0x43')]);_0x55737d['attributes']=_['intersection'](_0x288e0d[_0x567f('0x3f')],qs[_0x567f('0x45')](_0x33526f[_0x567f('0x43')]['fields']));_0x55737d[_0x567f('0x44')]=_0x55737d[_0x567f('0x44')]['length']?_0x55737d['attributes']:_0x288e0d[_0x567f('0x3f')];if(_0x33526f[_0x567f('0x43')]['includeAll']){_0x55737d['include']=[{'all':!![]}];}_0x55737d=_[_0x567f('0x4b')]({},_0x55737d,_0x33526f[_0x567f('0x4e')]);return db[_0x567f('0x3a')][_0x567f('0x56')](_0x55737d)[_0x567f('0x34')](handleEntityNotFound(_0x47b001,null))['then'](respondWithResult(_0x47b001,null))['catch'](handleError(_0x47b001,null));};exports[_0x567f('0x57')]=function(_0x527301,_0x18bc80){return db[_0x567f('0x3a')]['create'](_0x527301[_0x567f('0x58')],{})[_0x567f('0x34')](respondWithResult(_0x18bc80,0xc9))['catch'](handleError(_0x18bc80,null));};exports['update']=function(_0x445ad7,_0x3cde8a){if(_0x445ad7[_0x567f('0x58')]['id']){delete _0x445ad7[_0x567f('0x58')]['id'];}return db[_0x567f('0x3a')][_0x567f('0x56')]({'where':{'id':_0x445ad7['params']['id']}})[_0x567f('0x34')](handleEntityNotFound(_0x3cde8a,null))[_0x567f('0x34')](saveUpdates(_0x445ad7[_0x567f('0x58')],null))[_0x567f('0x34')](respondWithResult(_0x3cde8a,null))[_0x567f('0x54')](handleError(_0x3cde8a,null));};exports[_0x567f('0x33')]=function(_0x115af0,_0x4aacc1){return db[_0x567f('0x3a')]['find']({'where':{'id':_0x115af0[_0x567f('0x55')]['id']}})['then'](handleEntityNotFound(_0x4aacc1,null))[_0x567f('0x34')](removeEntity(_0x4aacc1,null))['catch'](handleError(_0x4aacc1,null));};exports[_0x567f('0x59')]=function(_0x1ccf16,_0x3104fb){return db['OpenchannelMessage'][_0x567f('0x59')]()[_0x567f('0x34')](respondWithResult(_0x3104fb,null))[_0x567f('0x54')](handleError(_0x3104fb,null));};var interaction_log=require(_0x567f('0x14'))('openchannel-interactions');exports['accept']=function(_0x8690a2,_0x22f58f,_0x36273f){var _0x1bf3ac={'agent':{},'channel':_0x567f('0x5a')};if(_0x8690a2[_0x567f('0x58')]['id']){delete _0x8690a2['body']['id'];}_0x8690a2[_0x567f('0x58')][_0x567f('0x5b')]=!![];_0x8690a2['body'][_0x567f('0x5c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x8690a2['body'][_0x567f('0x5d')]=_0x8690a2[_0x567f('0x58')][_0x567f('0x5d')]||_0x8690a2[_0x567f('0x5e')]['id'];_0x1bf3ac[_0x567f('0x5f')]['id']=_0x8690a2['body'][_0x567f('0x5d')];return db[_0x567f('0x3a')][_0x567f('0x56')]({'where':{'id':_0x8690a2[_0x567f('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x22f58f,null))[_0x567f('0x34')](saveUpdates(_0x8690a2[_0x567f('0x58')],null))[_0x567f('0x34')](function(_0x137624){if(_0x137624){_0x1bf3ac[_0x567f('0x29')]=_0x137624[_0x567f('0x60')]({'plain':!![]});return db[_0x567f('0x61')][_0x567f('0x56')]({'where':{'id':_0x137624['OpenchannelInteractionId']}});}return null;})[_0x567f('0x34')](handleEntityNotFound(_0x22f58f,null))[_0x567f('0x34')](function(_0x5c5988){if(_0x5c5988){return _0x5c5988[_0x567f('0x62')]({'UserId':_0x8690a2[_0x567f('0x58')][_0x567f('0x5d')],'read1stAt':_[_0x567f('0x63')](_0x5c5988[_0x567f('0x64')])?moment()[_0x567f('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x567f('0x34')](function(_0x3a45eb){if(_0x3a45eb){_0x1bf3ac['interaction']=_0x3a45eb['get']({'plain':!![]});interaction_log[_0x567f('0x23')](_0x567f('0x66'),_0x8690a2[_0x567f('0x5e')]['id'],_0x8690a2[_0x567f('0x5e')]['name'],_0x8690a2['user']['role'],_0x1bf3ac[_0x567f('0x67')]['id'],_0x8690a2[_0x567f('0x58')]?JSON[_0x567f('0x26')](_0x8690a2[_0x567f('0x58')]):_0x567f('0x68'));return respondWithRpcPromise('AcceptMessage',_0x567f('0x69'),_0x1bf3ac);}return null;})[_0x567f('0x34')](function(_0x231619){var _0x126c6a=_0x567f('0x6a')+_0x231619[_0x567f('0x29')][_0x567f('0x6b')];return db[_0x567f('0x6c')]['query'](_0x126c6a,{'type':db[_0x567f('0x6d')][_0x567f('0x6e')]['SELECT'],'raw':!![]})[_0x567f('0x34')](function(_0x138022){return _0x138022;});})[_0x567f('0x34')](function(_0x5a0f2c){if(_0x5a0f2c){_0x1bf3ac['message'][_0x567f('0x6f')]=_0x5a0f2c[0x0];if(!_0x8690a2[_0x567f('0x58')][_0x567f('0x5d')])return;return db['User'][_0x567f('0x56')]({'where':{'id':_0x8690a2['body'][_0x567f('0x5d')],'role':_0x567f('0x5f')},'attributes':['id',_0x567f('0x36'),_0x567f('0x70'),_0x567f('0x71'),_0x567f('0x72')],'raw':!![]});}return null;})['then'](function(_0x5bddb5){if(!_0x5bddb5)return null;_0x1bf3ac[_0x567f('0x29')][_0x567f('0x5f')]=_0x5bddb5;return _0x1bf3ac;})[_0x567f('0x34')](function(_0x414024){if(_0x414024){if(_0x8690a2[_0x567f('0x58')][_0x567f('0x73')]){_0x1bf3ac[_0x567f('0x29')][_0x567f('0x74')]=util[_0x567f('0x65')]('SIP/%s',_0x8690a2[_0x567f('0x5e')][_0x567f('0x36')]);_0x1bf3ac['message'][_0x567f('0x75')]=_0x1bf3ac[_0x567f('0x75')];_0x1bf3ac[_0x567f('0x29')][_0x567f('0x76')]=_0x1bf3ac[_0x567f('0x75')];_0x1bf3ac['message'][_0x567f('0x77')]=_0x567f('0x78');return respondWithRpcPromise(_0x567f('0x79'),'EventManager',{'event':_0x567f('0x7a'),'message':_0x1bf3ac['message']},client9002)[_0x567f('0x34')](function(){return _0x1bf3ac;});}return _0x1bf3ac;}return null;})[_0x567f('0x34')](respondWithResult(_0x22f58f,null))['catch'](handleError(_0x22f58f,null));};var interaction_log=require(_0x567f('0x14'))(_0x567f('0x7b'));exports[_0x567f('0x7c')]=function(_0x436aa6,_0x19d64b,_0x165405){var _0xbb747d={'agent':{},'channel':_0x567f('0x5a')};if(_0x436aa6[_0x567f('0x58')]['id']){delete _0x436aa6['body']['id'];}_0x436aa6[_0x567f('0x58')][_0x567f('0x5d')]=_0x436aa6[_0x567f('0x58')]['UserId']||_0x436aa6[_0x567f('0x5e')]['id'];_0xbb747d[_0x567f('0x5f')]['id']=_0x436aa6[_0x567f('0x58')][_0x567f('0x5d')];return db['OpenchannelMessage'][_0x567f('0x56')]({'where':{'id':_0x436aa6[_0x567f('0x55')]['id'],'UserId':null}})[_0x567f('0x34')](handleEntityNotFound(_0x19d64b,null))[_0x567f('0x34')](function(_0x1b88af){if(_0x1b88af){_0xbb747d[_0x567f('0x29')]=_0x1b88af[_0x567f('0x60')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x1b88af[_0x567f('0x7d')]}});}return null;})[_0x567f('0x34')](handleEntityNotFound(_0x19d64b,null))[_0x567f('0x34')](function(_0xa0e987){if(_0xa0e987){_0xbb747d[_0x567f('0x67')]=_0xa0e987[_0x567f('0x60')]({'plain':!![]});interaction_log[_0x567f('0x23')]('[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x436aa6['user']['id'],_0x436aa6['user'][_0x567f('0x36')],_0x436aa6[_0x567f('0x5e')][_0x567f('0x7e')],_0xbb747d[_0x567f('0x67')]['id'],_0x436aa6[_0x567f('0x58')]?JSON[_0x567f('0x26')](_0x436aa6['body']):_0x567f('0x68'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0xbb747d);}return null;})[_0x567f('0x34')](function(_0x5cbfba){var _0x58c5bc=_0x567f('0x6a')+_0x5cbfba[_0x567f('0x29')][_0x567f('0x6b')];return db[_0x567f('0x6c')][_0x567f('0x43')](_0x58c5bc,{'type':db[_0x567f('0x6d')][_0x567f('0x6e')][_0x567f('0x7f')],'raw':!![]})['then'](function(_0x2f66a5){return _0x2f66a5;});})[_0x567f('0x34')](function(_0x403b1f){if(_0x403b1f){_0xbb747d['message']['contact']=_0x403b1f[0x0];if(!_0x436aa6['body'][_0x567f('0x5d')])return;return db['User'][_0x567f('0x56')]({'where':{'id':_0x436aa6[_0x567f('0x58')][_0x567f('0x5d')],'role':'agent'},'attributes':['id','name','fullname',_0x567f('0x71'),_0x567f('0x72')],'raw':!![]});}return null;})[_0x567f('0x34')](function(_0x1f1b31){if(!_0x1f1b31)return null;_0xbb747d[_0x567f('0x29')]['agent']=_0x1f1b31;return _0xbb747d;})['then'](function(_0xd28c65){if(_0xd28c65){_0xd28c65[_0x567f('0x29')]['interface']=util[_0x567f('0x65')](_0x567f('0x80'),_0x436aa6['user'][_0x567f('0x36')]);_0xd28c65[_0x567f('0x29')][_0x567f('0x75')]=_0xbb747d[_0x567f('0x75')];_0xd28c65[_0x567f('0x29')][_0x567f('0x76')]=_0xbb747d[_0x567f('0x75')];_0xd28c65['message'][_0x567f('0x77')]=_0x567f('0x7c');respondWithRpcPromise(_0x567f('0x79'),_0x567f('0x79'),{'event':'rejectmessage','message':_0xd28c65[_0x567f('0x29')]},client9002);return _0xbb747d;}return null;})[_0x567f('0x34')](respondWithResult(_0x19d64b,null))['catch'](handleError(_0x19d64b,null));};
\ No newline at end of file
index b3b257e..0a54949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c4=['hook','events','../../mysqldb','update','remove','emit','hasOwnProperty'];(function(_0x24491f,_0x53296a){var _0x44218b=function(_0x5eba0c){while(--_0x5eba0c){_0x24491f['push'](_0x24491f['shift']());}};_0x44218b(++_0x53296a);}(_0x17c4,0xe8));var _0x417c=function(_0x12f42c,_0x415b84){_0x12f42c=_0x12f42c-0x0;var _0xbcf616=_0x17c4[_0x12f42c];return _0xbcf616;};'use strict';var EventEmitter=require(_0x417c('0x0'));var OpenchannelMessage=require(_0x417c('0x1'))['db']['OpenchannelMessage'];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x417c('0x2'),'afterDestroy':_0x417c('0x3')};function emitEvent(_0x540285){return function(_0x15d754,_0x5ef6ce,_0x31da72){OpenchannelMessageEvents[_0x417c('0x4')](_0x540285+':'+_0x15d754['id'],_0x15d754);OpenchannelMessageEvents['emit'](_0x540285,_0x15d754);_0x31da72(null);};}for(var e in events){if(events[_0x417c('0x5')](e)){var event=events[e];OpenchannelMessage[_0x417c('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x16d2=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update'];(function(_0x57c501,_0x319f03){var _0x4f15ba=function(_0x52e0c1){while(--_0x52e0c1){_0x57c501['push'](_0x57c501['shift']());}};_0x4f15ba(++_0x319f03);}(_0x16d2,0x123));var _0x216d=function(_0x61e3e7,_0xe0e3e8){_0x61e3e7=_0x61e3e7-0x0;var _0x38bf26=_0x16d2[_0x61e3e7];return _0x38bf26;};'use strict';var EventEmitter=require(_0x216d('0x0'));var OpenchannelMessage=require(_0x216d('0x1'))['db'][_0x216d('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0x216d('0x3')](0x0);var events={'afterCreate':_0x216d('0x4'),'afterUpdate':_0x216d('0x5'),'afterDestroy':_0x216d('0x6')};function emitEvent(_0x239b49){return function(_0xfd7306,_0x593bb0,_0x2c662d){OpenchannelMessageEvents[_0x216d('0x7')](_0x239b49+':'+_0xfd7306['id'],_0xfd7306);OpenchannelMessageEvents[_0x216d('0x7')](_0x239b49,_0xfd7306);_0x2c662d(null);};}for(var e in events){if(events[_0x216d('0x8')](e)){var event=events[e];OpenchannelMessage[_0x216d('0x9')](e,emitEvent(event));}}module[_0x216d('0xa')]=OpenchannelMessageEvents;
\ No newline at end of file
index 671038d..3b96e21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['util','api','moment','path','../../config/environment','exports','define','OpenchannelMessage','fti_openchannel_messages','body','models','get','direction','toLowerCase','secret','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','error','out','find','OpenchannelAccountId','Interactions','CmContact','Contact','keys','then','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST','method','info','Message\x20%d\x20forwarded\x20to\x20%s','threadId','catch','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0xf78ed4,_0x30427e){var _0x1ac0bd=function(_0x256f4d){while(--_0x256f4d){_0xf78ed4['push'](_0xf78ed4['shift']());}};_0x1ac0bd(++_0x30427e);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6e6c[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0xc6e6('0x0'));var util=require(_0xc6e6('0x1'));var logger=require('../../config/logger')(_0xc6e6('0x2'));var moment=require(_0xc6e6('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc6e6('0x4'));var rimraf=require('rimraf');var config=require(_0xc6e6('0x5'));var attributes=require('./openchannelMessage.attributes');module[_0xc6e6('0x6')]=function(_0x1182c7,_0x4bf906){return _0x1182c7[_0xc6e6('0x7')](_0xc6e6('0x8'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0xc6e6('0x9'),'fields':[_0xc6e6('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x324f05,_0x481799,_0x172aa9){var _0x3b2f50=_0x1182c7[_0xc6e6('0xb')];var _0x3ddf6f=_0x324f05[_0xc6e6('0xc')]({'plain':!![]});if(_0x3ddf6f[_0xc6e6('0xd')][_0xc6e6('0xe')]()==='in'||_0x3ddf6f[_0xc6e6('0xd')][_0xc6e6('0xe')]()==='out'&&!_0x3ddf6f[_0xc6e6('0xf')]&&!_['isNil'](_0x3ddf6f[_0xc6e6('0x10')])){_0x3b2f50[_0xc6e6('0x11')][_0xc6e6('0x12')]({'where':{'id':_0x3ddf6f[_0xc6e6('0x13')]}})['then'](function(_0x149ac6){if(_0x149ac6){_0x149ac6[_0xc6e6('0x14')]({'lastMsgAt':_0x3ddf6f[_0xc6e6('0x15')],'lastMsgDirection':_0x3ddf6f[_0xc6e6('0xd')][_0xc6e6('0xe')]()});}})['catch'](function(_0x413cf8){console[_0xc6e6('0x16')](_0x413cf8);});}if(_0x3ddf6f['direction']===_0xc6e6('0x17')&&!_0x3ddf6f[_0xc6e6('0xf')]){var _0xedf127;_0x3b2f50['CmContact']['describe']()['then'](function(_0x3a1ccc){return _0x3b2f50['OpenchannelAccount'][_0xc6e6('0x18')]({'where':{'id':_0x3ddf6f[_0xc6e6('0x19')]},'include':[{'model':_0x3b2f50[_0xc6e6('0x11')],'as':_0xc6e6('0x1a'),'where':{'id':_0x3ddf6f[_0xc6e6('0x13')]},'limit':0x1,'include':[{'model':_0x3b2f50[_0xc6e6('0x1b')],'as':_0xc6e6('0x1c'),'attributes':_[_0xc6e6('0x1d')](_0x3a1ccc)}]}]});})[_0xc6e6('0x1e')](function(_0x3d734d){_0xedf127=_0x3d734d['get']({'plain':!![]});if(_0xedf127&&_0xedf127[_0xc6e6('0x1f')]){logger['info'](_0xc6e6('0x20'),_0xc6e6('0x21'),util[_0xc6e6('0x22')](_0xc6e6('0x23'),_0x3ddf6f['id'],_0xedf127['replyUri']));if(_0xedf127[_0xc6e6('0x1a')]&&_0xedf127[_0xc6e6('0x1a')][_0xc6e6('0x24')]){_0x3ddf6f[_0xc6e6('0x25')]=_[_0xc6e6('0x26')](_0xedf127['Interactions'][0x0],_0xc6e6('0x1c'));_0x3ddf6f['Contact']=_0xedf127[_0xc6e6('0x1a')][0x0][_0xc6e6('0x1c')];}var _0x481799={'method':_0xc6e6('0x27'),'uri':encodeURI(_0xedf127['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x481799[_0xc6e6('0x28')]){case'GET':_0x481799['qs']=_0x3ddf6f;break;case _0xc6e6('0x27'):_0x481799['body']=_0x3ddf6f;break;}return rp(_0x481799)[_0xc6e6('0x1e')](function(_0x16dcd9){logger[_0xc6e6('0x29')](_0xc6e6('0x20'),_0xc6e6('0x21'),util['format'](_0xc6e6('0x2a'),_0x3ddf6f['id'],_0xedf127[_0xc6e6('0x1f')]));if(_0x16dcd9[_0xc6e6('0xa')][_0xc6e6('0x2b')]&&_0x16dcd9['body'][_0xc6e6('0x2b')]!=_0x3ddf6f['Interaction'][_0xc6e6('0x2b')]){return _0x3b2f50[_0xc6e6('0x11')][_0xc6e6('0x14')]({'threadId':_0x16dcd9[_0xc6e6('0xa')][_0xc6e6('0x2b')]},{'logging':!![],'where':{'id':_0x3ddf6f[_0xc6e6('0x25')]['id']}});}else{return;}})[_0xc6e6('0x1e')](function(){return _0x324f05[_0xc6e6('0x14')]({'read':!![]});})[_0xc6e6('0x2c')](function(_0x1eb477){logger[_0xc6e6('0x16')](_0xc6e6('0x20'),_0xc6e6('0x21'),util[_0xc6e6('0x2d')](_0x1eb477,{'showHidden':![],'depth':null}));_0x172aa9();});}else{_0x172aa9();}})[_0xc6e6('0x2e')](function(){_0x172aa9();});}else{_0x172aa9();}}},'charset':_0xc6e6('0x2f'),'collate':_0xc6e6('0x30')});};
\ No newline at end of file
+var _0xa571=['afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','replyUri','length','Interaction','omit','Contact','POST','method','GET','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','secret','isNil','UserId','findOne','OpenchannelInteractionId','createdAt','catch','error','CmContact','then','OpenchannelAccount','OpenchannelAccountId','OpenchannelInteraction','Interactions'];(function(_0x4f782e,_0x5c049d){var _0x3193cd=function(_0x412841){while(--_0x412841){_0x4f782e['push'](_0x4f782e['shift']());}};_0x3193cd(++_0x5c049d);}(_0xa571,0x107));var _0x1a57=function(_0x243c7b,_0x1e479a){_0x243c7b=_0x243c7b-0x0;var _0x45b9c1=_0xa571[_0x243c7b];return _0x45b9c1;};'use strict';var _=require(_0x1a57('0x0'));var util=require(_0x1a57('0x1'));var logger=require(_0x1a57('0x2'))(_0x1a57('0x3'));var moment=require('moment');var BPromise=require(_0x1a57('0x4'));var rp=require(_0x1a57('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1a57('0x6'));var attributes=require('./openchannelMessage.attributes');module[_0x1a57('0x7')]=function(_0xd97a33,_0x22ca20){return _0xd97a33[_0x1a57('0x8')](_0x1a57('0x9'),attributes,{'tableName':_0x1a57('0xa'),'paranoid':![],'indexes':[{'name':'fti_openchannel_messages','fields':[_0x1a57('0xb')],'type':_0x1a57('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3631d6,_0x58e266,_0x3c8182){var _0x1f7086=_0xd97a33[_0x1a57('0xd')];var _0x289dc0=_0x3631d6[_0x1a57('0xe')]({'plain':!![]});if(_0x289dc0[_0x1a57('0xf')][_0x1a57('0x10')]()==='in'||_0x289dc0[_0x1a57('0xf')]['toLowerCase']()==='out'&&!_0x289dc0[_0x1a57('0x11')]&&!_[_0x1a57('0x12')](_0x289dc0[_0x1a57('0x13')])){_0x1f7086['OpenchannelInteraction'][_0x1a57('0x14')]({'where':{'id':_0x289dc0[_0x1a57('0x15')]}})['then'](function(_0x503278){if(_0x503278){_0x503278['update']({'lastMsgAt':_0x289dc0[_0x1a57('0x16')],'lastMsgDirection':_0x289dc0[_0x1a57('0xf')][_0x1a57('0x10')]()});}})[_0x1a57('0x17')](function(_0x5802d6){console[_0x1a57('0x18')](_0x5802d6);});}if(_0x289dc0['direction']==='out'&&!_0x289dc0[_0x1a57('0x11')]){var _0x1c537f;_0x1f7086[_0x1a57('0x19')]['describe']()[_0x1a57('0x1a')](function(_0x1662a3){return _0x1f7086[_0x1a57('0x1b')]['find']({'where':{'id':_0x289dc0[_0x1a57('0x1c')]},'include':[{'model':_0x1f7086[_0x1a57('0x1d')],'as':_0x1a57('0x1e'),'where':{'id':_0x289dc0[_0x1a57('0x15')]},'limit':0x1,'include':[{'model':_0x1f7086[_0x1a57('0x19')],'as':'Contact','attributes':_['keys'](_0x1662a3)}]}]});})[_0x1a57('0x1a')](function(_0x21e811){_0x1c537f=_0x21e811[_0x1a57('0xe')]({'plain':!![]});if(_0x1c537f&&_0x1c537f['replyUri']){logger['info']('OpenchannelMessage,\x20%s,\x20%s',_0x1a57('0x1f'),util[_0x1a57('0x20')](_0x1a57('0x21'),_0x289dc0['id'],_0x1c537f[_0x1a57('0x22')]));if(_0x1c537f[_0x1a57('0x1e')]&&_0x1c537f[_0x1a57('0x1e')][_0x1a57('0x23')]){_0x289dc0[_0x1a57('0x24')]=_[_0x1a57('0x25')](_0x1c537f[_0x1a57('0x1e')][0x0],_0x1a57('0x26'));_0x289dc0[_0x1a57('0x26')]=_0x1c537f[_0x1a57('0x1e')][0x0][_0x1a57('0x26')];}var _0x58e266={'method':_0x1a57('0x27'),'uri':encodeURI(_0x1c537f[_0x1a57('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x58e266[_0x1a57('0x28')]){case _0x1a57('0x29'):_0x58e266['qs']=_0x289dc0;break;case _0x1a57('0x27'):_0x58e266[_0x1a57('0xb')]=_0x289dc0;break;}return rp(_0x58e266)[_0x1a57('0x1a')](function(_0x5a53c8){logger['info'](_0x1a57('0x2a'),_0x1a57('0x1f'),util['format'](_0x1a57('0x2b'),_0x289dc0['id'],_0x1c537f['replyUri']));if(_0x5a53c8[_0x1a57('0xb')][_0x1a57('0x2c')]&&_0x5a53c8['body'][_0x1a57('0x2c')]!=_0x289dc0[_0x1a57('0x24')][_0x1a57('0x2c')]){return _0x1f7086[_0x1a57('0x1d')]['update']({'threadId':_0x5a53c8[_0x1a57('0xb')][_0x1a57('0x2c')]},{'logging':!![],'where':{'id':_0x289dc0[_0x1a57('0x24')]['id']}});}else{return;}})[_0x1a57('0x1a')](function(){return _0x3631d6['update']({'read':!![]});})[_0x1a57('0x17')](function(_0x251a54){logger[_0x1a57('0x18')](_0x1a57('0x2a'),_0x1a57('0x1f'),util[_0x1a57('0x2d')](_0x251a54,{'showHidden':![],'depth':null}));_0x3c8182();});}else{_0x3c8182();}})[_0x1a57('0x2e')](function(){_0x3c8182();});}else{_0x3c8182();}}},'charset':_0x1a57('0x2f'),'collate':_0x1a57('0x30')});};
\ No newline at end of file
index 4f92caf..82b5be5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x184771,_0x212938){var _0x4642ff=function(_0x2b0a2c){while(--_0x2b0a2c){_0x184771['push'](_0x184771['shift']());}};_0x4642ff(++_0x212938);}(_0x5f2f,0x73));var _0xf5f2=function(_0x16b77e,_0x4a56a3){_0x16b77e=_0x16b77e-0x0;var _0x3ae284=_0x5f2f[_0x16b77e];return _0x3ae284;};'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});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
+var _0x5f2f=['OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','OpenchannelMessage','create','options','raw','CreateOpenchannelMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x369146,_0x2ed234){var _0x21870f=function(_0x1376f8){while(--_0x1376f8){_0x369146['push'](_0x369146['shift']());}};_0x21870f(++_0x2ed234);}(_0x5f2f,0x73));var _0xf5f2=function(_0xa59eb9,_0x39e45e){_0xa59eb9=_0xa59eb9-0x0;var _0x2146fd=_0x5f2f[_0xa59eb9];return _0x2146fd;};'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});config[_0xf5f2('0xc')]=_[_0xf5f2('0xd')](config['redis'],{'host':_0xf5f2('0xe'),'port':0x18eb});var socket=require(_0xf5f2('0xf'))(new Redis(config[_0xf5f2('0xc')]));require('./openchannelMessage.socket')[_0xf5f2('0x10')](socket);function respondWithRpcPromise(_0x15dd7c,_0x218ae3,_0x4e0e6b){return new BPromise(function(_0x977a59,_0x4ebbbe){return client['request'](_0x15dd7c,_0x4e0e6b)[_0xf5f2('0x11')](function(_0x151aba){logger['info'](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));logger[_0xf5f2('0x14')](_0xf5f2('0x15'),_0x218ae3,_0xf5f2('0x13'),JSON[_0xf5f2('0x16')](_0x151aba));if(_0x151aba['error']){if(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x18')]===0x1f4){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')]['message']);return _0x4ebbbe(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);return _0x977a59(_0x151aba[_0xf5f2('0x17')][_0xf5f2('0x19')]);}else{logger[_0xf5f2('0x1a')](_0xf5f2('0x12'),_0x218ae3,_0xf5f2('0x13'));_0x977a59(_0x151aba[_0xf5f2('0x1b')][_0xf5f2('0x19')]);}})[_0xf5f2('0x1c')](function(_0x3cf5ea){logger[_0xf5f2('0x17')](_0xf5f2('0x12'),_0x218ae3,_0x3cf5ea);_0x4ebbbe(_0x3cf5ea);});});}exports['CreateOpenchannelMessage']=function(_0x34706d){var _0x47101e=this;return new Promise(function(_0x49dac2,_0x47acfc){return db[_0xf5f2('0x1d')][_0xf5f2('0x1e')](_0x34706d['body'],{'raw':_0x34706d[_0xf5f2('0x1f')]?_0x34706d[_0xf5f2('0x1f')][_0xf5f2('0x20')]===undefined?!![]:![]:!![]})[_0xf5f2('0x11')](function(_0x36f1cb){logger['info'](_0xf5f2('0x21'),_0x34706d);logger[_0xf5f2('0x14')](_0xf5f2('0x21'),_0x34706d,JSON[_0xf5f2('0x16')](_0x36f1cb));_0x49dac2(_0x36f1cb);})[_0xf5f2('0x1c')](function(_0x5bdf4a){logger['error'](_0xf5f2('0x21'),_0x5bdf4a[_0xf5f2('0x19')],_0x34706d);_0x47acfc(_0x47101e[_0xf5f2('0x17')](0x1f4,_0x5bdf4a[_0xf5f2('0x19')]));});});};
\ No newline at end of file
index 179e510..2a7d987 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2171=['openchannelMessage:','save','remove','update','removeListener','register','length'];(function(_0x5f3742,_0x15ff91){var _0x5dee3e=function(_0x1a950a){while(--_0x1a950a){_0x5f3742['push'](_0x5f3742['shift']());}};_0x5dee3e(++_0x15ff91);}(_0x2171,0x143));var _0x1217=function(_0x3566d0,_0x34a49f){_0x3566d0=_0x3566d0-0x0;var _0x3fd4da=_0x2171[_0x3566d0];return _0x3fd4da;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x1217('0x0'),_0x1217('0x1'),_0x1217('0x2')];function createListener(_0x49e4e8,_0x553b57){return function(_0x2f6288){_0x553b57['emit'](_0x49e4e8,_0x2f6288);};}function removeListener(_0x38b8ff,_0x41f787){return function(){OpenchannelMessageEvents[_0x1217('0x3')](_0x38b8ff,_0x41f787);};}exports[_0x1217('0x4')]=function(_0x4eb644){for(var _0xafdf42=0x0,_0x8742bc=events[_0x1217('0x5')];_0xafdf42<_0x8742bc;_0xafdf42++){var _0x5bde7e=events[_0xafdf42];var _0x46474e=createListener(_0x1217('0x6')+_0x5bde7e,_0x4eb644);OpenchannelMessageEvents['on'](_0x5bde7e,_0x46474e);}};
\ No newline at end of file
+var _0xa2f3=['emit','register','length','openchannelMessage:','save','update'];(function(_0x371b47,_0x1e28da){var _0x48fb33=function(_0x2e8031){while(--_0x2e8031){_0x371b47['push'](_0x371b47['shift']());}};_0x48fb33(++_0x1e28da);}(_0xa2f3,0x76));var _0x3a2f=function(_0x4f6972,_0x40529b){_0x4f6972=_0x4f6972-0x0;var _0x471a48=_0xa2f3[_0x4f6972];return _0x471a48;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0x3a2f('0x0'),'remove',_0x3a2f('0x1')];function createListener(_0x2ae180,_0x53e45a){return function(_0x28e1cd){_0x53e45a[_0x3a2f('0x2')](_0x2ae180,_0x28e1cd);};}function removeListener(_0x1b94f5,_0xcab785){return function(){OpenchannelMessageEvents['removeListener'](_0x1b94f5,_0xcab785);};}exports[_0x3a2f('0x3')]=function(_0x553478){for(var _0x581703=0x0,_0x3489bf=events[_0x3a2f('0x4')];_0x581703<_0x3489bf;_0x581703++){var _0xac48f1=events[_0x581703];var _0x5acfa7=createListener(_0x3a2f('0x5')+_0xac48f1,_0x553478);OpenchannelMessageEvents['on'](_0xac48f1,_0x5acfa7);}};
\ No newline at end of file
index d1d3644..cd4c783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6df=['./openchannelQueue.controller','isAuthenticated','index','get','describe','/:id','/:id/members','/:id/users','create','/:id/teams','addTeams','addAgents','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1389e3,_0x2ed4bd){var _0x3f6873=function(_0x494b3a){while(--_0x494b3a){_0x1389e3['push'](_0x1389e3['shift']());}};_0x3f6873(++_0x2ed4bd);}(_0xd6df,0x1b2));var _0xfd6d=function(_0x52e584,_0x4fa67d){_0x52e584=_0x52e584-0x0;var _0x4133f6=_0xd6df[_0x52e584];return _0x4133f6;};'use strict';var multer=require(_0xfd6d('0x0'));var util=require(_0xfd6d('0x1'));var path=require('path');var timeout=require(_0xfd6d('0x2'));var express=require(_0xfd6d('0x3'));var router=express[_0xfd6d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfd6d('0x5'));var interaction=require(_0xfd6d('0x6'));var config=require(_0xfd6d('0x7'));var controller=require(_0xfd6d('0x8'));router['get']('/',auth[_0xfd6d('0x9')](),controller[_0xfd6d('0xa')]);router[_0xfd6d('0xb')]('/describe',auth['isAuthenticated'](),controller[_0xfd6d('0xc')]);router[_0xfd6d('0xb')](_0xfd6d('0xd'),auth[_0xfd6d('0x9')](),controller['show']);router[_0xfd6d('0xb')](_0xfd6d('0xe'),auth[_0xfd6d('0x9')](),controller['getMembers']);router['get']('/:id/teams',auth[_0xfd6d('0x9')](),controller['getTeams']);router[_0xfd6d('0xb')](_0xfd6d('0xf'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x10')]);router['post'](_0xfd6d('0x11'),auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x12')]);router['post'](_0xfd6d('0xf'),auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x13')]);router['put'](_0xfd6d('0xd'),auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x14')]);router[_0xfd6d('0x15')](_0xfd6d('0xd'),auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x16')]);router[_0xfd6d('0x15')](_0xfd6d('0x11'),auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x17')]);router['delete'](_0xfd6d('0xf'),auth[_0xfd6d('0x9')](),controller[_0xfd6d('0x18')]);module[_0xfd6d('0x19')]=router;
\ No newline at end of file
+var _0xbe3a=['isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','create','post','/:id/teams','addTeams','update','delete','destroy','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x542394,_0xa1dfe7){var _0x3e4354=function(_0x1d4a73){while(--_0x1d4a73){_0x542394['push'](_0x542394['shift']());}};_0x3e4354(++_0xa1dfe7);}(_0xbe3a,0x147));var _0xabe3=function(_0x847be1,_0x24f745){_0x847be1=_0x847be1-0x0;var _0x4e8f21=_0xbe3a[_0x847be1];return _0x4e8f21;};'use strict';var multer=require(_0xabe3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xabe3('0x1'));var express=require(_0xabe3('0x2'));var router=express[_0xabe3('0x3')]();var fs_extra=require(_0xabe3('0x4'));var auth=require(_0xabe3('0x5'));var interaction=require(_0xabe3('0x6'));var config=require(_0xabe3('0x7'));var controller=require('./openchannelQueue.controller');router[_0xabe3('0x8')]('/',auth[_0xabe3('0x9')](),controller[_0xabe3('0xa')]);router[_0xabe3('0x8')](_0xabe3('0xb'),auth[_0xabe3('0x9')](),controller['describe']);router[_0xabe3('0x8')](_0xabe3('0xc'),auth['isAuthenticated'](),controller[_0xabe3('0xd')]);router['get'](_0xabe3('0xe'),auth[_0xabe3('0x9')](),controller[_0xabe3('0xf')]);router[_0xabe3('0x8')]('/:id/teams',auth[_0xabe3('0x9')](),controller[_0xabe3('0x10')]);router[_0xabe3('0x8')](_0xabe3('0x11'),auth[_0xabe3('0x9')](),controller[_0xabe3('0x12')]);router['post']('/',auth[_0xabe3('0x9')](),controller[_0xabe3('0x13')]);router[_0xabe3('0x14')](_0xabe3('0x15'),auth[_0xabe3('0x9')](),controller[_0xabe3('0x16')]);router[_0xabe3('0x14')](_0xabe3('0x11'),auth[_0xabe3('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0xabe3('0x9')](),controller[_0xabe3('0x17')]);router[_0xabe3('0x18')](_0xabe3('0xc'),auth[_0xabe3('0x9')](),controller[_0xabe3('0x19')]);router['delete']('/:id/teams',auth[_0xabe3('0x9')](),controller['removeTeams']);router[_0xabe3('0x18')](_0xabe3('0x11'),auth['isAuthenticated'](),controller[_0xabe3('0x1a')]);module[_0xabe3('0x1b')]=router;
\ No newline at end of file
index a77fd85..2a8b6bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ec2=['name','STRING','ENUM','beepall','roundrobin','sequelize','exports'];(function(_0x456ca4,_0x776cf9){var _0x1a2bff=function(_0x584dce){while(--_0x584dce){_0x456ca4['push'](_0x456ca4['shift']());}};_0x1a2bff(++_0x776cf9);}(_0x2ec2,0x1a9));var _0x22ec=function(_0x4ec42,_0x36177b){_0x4ec42=_0x4ec42-0x0;var _0x385e11=_0x2ec2[_0x4ec42];return _0x385e11;};'use strict';var Sequelize=require(_0x22ec('0x0'));module[_0x22ec('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x22ec('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x22ec('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x22ec('0x4')]('rrmemory',_0x22ec('0x5'),_0x22ec('0x6'))}};
\ No newline at end of file
+var _0x22fd=['exports','name','ENUM','rrmemory','beepall','roundrobin','sequelize'];(function(_0x3ffebb,_0x1b67b3){var _0x2ad9ce=function(_0x4c978b){while(--_0x4c978b){_0x3ffebb['push'](_0x3ffebb['shift']());}};_0x2ad9ce(++_0x1b67b3);}(_0x22fd,0x187));var _0xd22f=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0x22fd[_0x3c8e9a];return _0x2d4c57;};'use strict';var Sequelize=require(_0xd22f('0x0'));module[_0xd22f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xd22f('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd22f('0x3')](_0xd22f('0x4'),_0xd22f('0x5'),_0xd22f('0x6'))}};
\ No newline at end of file
index 26f66f5..e91f20c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16a5=['value','removeAgents','forEach','userOpenchannelQueue:remove','omit','spread','isArray','getAgents','hasOwnProperty','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','undefined','count','offset','limit','Content-Range','json','save','update','destroy','then','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','OpenchannelQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','findAll','rows','catch','show','params','include','options','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','UserOpenchannelQueue','pick','OpenchannelQueueId','User','findAndCountAll','agent','openchannelPause','updatedAt','%s/%s','SIP','createdAt','findOne','Team','getTeams','Agents','interface','flatMap','sequelize','transaction','addTeams','each','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','ids','field','tq.TeamId','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','every','includes','all','compact'];(function(_0x3825f4,_0x2a939a){var _0x352fad=function(_0x3c544f){while(--_0x3c544f){_0x3825f4['push'](_0x3825f4['shift']());}};_0x352fad(++_0x2a939a);}(_0x16a5,0x19e));var _0x516a=function(_0x58418a,_0x3d9f06){_0x58418a=_0x58418a-0x0;var _0x2716bf=_0x16a5[_0x58418a];return _0x2716bf;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x516a('0x0'));var jsonpatch=require(_0x516a('0x1'));var rp=require(_0x516a('0x2'));var moment=require(_0x516a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x516a('0x4'));var util=require(_0x516a('0x5'));var path=require(_0x516a('0x6'));var sox=require(_0x516a('0x7'));var csv=require('to-csv');var ejs=require(_0x516a('0x8'));var fs=require('fs');var fs_extra=require(_0x516a('0x9'));var _=require(_0x516a('0xa'));var squel=require(_0x516a('0xb'));var crypto=require(_0x516a('0xc'));var jsforce=require(_0x516a('0xd'));var deskjs=require(_0x516a('0xe'));var toCsv=require(_0x516a('0xf'));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(_0x516a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x516a('0x11'))('api');var utils=require(_0x516a('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x516a('0x13'));var db=require(_0x516a('0x14'))['db'];config['redis']=_[_0x516a('0x15')](config[_0x516a('0x16')],{'host':_0x516a('0x17'),'port':0x18eb});var socket=require(_0x516a('0x18'))(new Redis(config['redis']));require(_0x516a('0x19'))[_0x516a('0x1a')](socket);function respondWithStatusCode(_0x299901,_0x471584){_0x471584=_0x471584||0xcc;return function(_0x18c70b){if(_0x18c70b){return _0x299901[_0x516a('0x1b')](_0x471584);}return _0x299901[_0x516a('0x1c')](_0x471584)[_0x516a('0x1d')]();};}function respondWithResult(_0x55a5a4,_0x418713){_0x418713=_0x418713||0xc8;return function(_0x56a993){if(_0x56a993){return _0x55a5a4['status'](_0x418713)['json'](_0x56a993);}};}function respondWithFilteredResult(_0x324732,_0x3402ee){return function(_0x594c53){if(_0x594c53){var _0xfe78df=typeof _0x3402ee['offset']===_0x516a('0x1e')&&typeof _0x3402ee['limit']===_0x516a('0x1e');var _0x33aa2e=_0x594c53[_0x516a('0x1f')];var _0x1e7d0d=_0xfe78df?0x0:_0x3402ee[_0x516a('0x20')];var _0x26d50e=_0xfe78df?_0x594c53[_0x516a('0x1f')]:_0x3402ee[_0x516a('0x20')]+_0x3402ee[_0x516a('0x21')];var _0x22772f;if(_0x26d50e>=_0x33aa2e){_0x26d50e=_0x33aa2e;_0x22772f=0xc8;}else{_0x22772f=0xce;}_0x324732[_0x516a('0x1c')](_0x22772f);return _0x324732['set'](_0x516a('0x22'),_0x1e7d0d+'-'+_0x26d50e+'/'+_0x33aa2e)[_0x516a('0x23')](_0x594c53);}return null;};}function patchUpdates(_0x1bb73e){return function(_0x4d51aa){try{jsonpatch['apply'](_0x4d51aa,_0x1bb73e,!![]);}catch(_0xbd4913){return BPromise['reject'](_0xbd4913);}return _0x4d51aa[_0x516a('0x24')]();};}function saveUpdates(_0x5f3b4b,_0x5cff0a){return function(_0x8bd7d7){if(_0x8bd7d7){return _0x8bd7d7[_0x516a('0x25')](_0x5f3b4b)['then'](function(_0x10b32f){return _0x10b32f;});}return null;};}function removeEntity(_0xff6f5d,_0xb9dc5){return function(_0x87d8fc){if(_0x87d8fc){return _0x87d8fc[_0x516a('0x26')]()[_0x516a('0x27')](function(){var _0x244150=_0x87d8fc[_0x516a('0x28')]({'plain':!![]});var _0x2d31a1=_0x516a('0x29');return db[_0x516a('0x2a')][_0x516a('0x26')]({'where':{'type':_0x2d31a1,'resourceId':_0x244150['id']}})[_0x516a('0x27')](function(){return _0x87d8fc;});})[_0x516a('0x27')](function(){_0xff6f5d[_0x516a('0x1c')](0xcc)[_0x516a('0x1d')]();});}};}function handleEntityNotFound(_0x3a694e,_0xc6f18){return function(_0x2b2cea){if(!_0x2b2cea){_0x3a694e['sendStatus'](0x194);}return _0x2b2cea;};}function handleError(_0x1c3450,_0x123bcb){_0x123bcb=_0x123bcb||0x1f4;return function(_0x2c48e3){logger[_0x516a('0x2b')](_0x2c48e3[_0x516a('0x2c')]);if(_0x2c48e3[_0x516a('0x2d')]){delete _0x2c48e3[_0x516a('0x2d')];}_0x1c3450[_0x516a('0x1c')](_0x123bcb)[_0x516a('0x2e')](_0x2c48e3);};}exports[_0x516a('0x2f')]=function(_0x4aaae0,_0x458fb4){var _0x4a3784={},_0x40d9d5={},_0x5f1a1e={'count':0x0,'rows':[]};var _0x5e1282=_['map'](db[_0x516a('0x30')][_0x516a('0x31')],function(_0x17af15){return{'name':_0x17af15[_0x516a('0x32')],'type':_0x17af15[_0x516a('0x33')][_0x516a('0x34')]};});_0x40d9d5[_0x516a('0x35')]=_[_0x516a('0x36')](_0x5e1282,_0x516a('0x2d'));_0x40d9d5[_0x516a('0x37')]=_[_0x516a('0x38')](_0x4aaae0[_0x516a('0x37')]);_0x40d9d5[_0x516a('0x39')]=_[_0x516a('0x3a')](_0x40d9d5['model'],_0x40d9d5['query']);_0x4a3784[_0x516a('0x3b')]=_[_0x516a('0x3a')](_0x40d9d5[_0x516a('0x35')],qs['fields'](_0x4aaae0[_0x516a('0x37')][_0x516a('0x3c')]));_0x4a3784[_0x516a('0x3b')]=_0x4a3784[_0x516a('0x3b')][_0x516a('0x3d')]?_0x4a3784[_0x516a('0x3b')]:_0x40d9d5['model'];if(!_0x4aaae0['query']['hasOwnProperty'](_0x516a('0x3e'))){_0x4a3784['limit']=qs[_0x516a('0x21')](_0x4aaae0['query'][_0x516a('0x21')]);_0x4a3784[_0x516a('0x20')]=qs[_0x516a('0x20')](_0x4aaae0[_0x516a('0x37')][_0x516a('0x20')]);}_0x4a3784[_0x516a('0x3f')]=qs[_0x516a('0x40')](_0x4aaae0['query'][_0x516a('0x40')]);_0x4a3784[_0x516a('0x41')]=qs[_0x516a('0x39')](_['pick'](_0x4aaae0[_0x516a('0x37')],_0x40d9d5[_0x516a('0x39')]),_0x5e1282);if(_0x4aaae0[_0x516a('0x37')][_0x516a('0x42')]){_0x4a3784[_0x516a('0x41')]=_['merge'](_0x4a3784[_0x516a('0x41')],{'$or':_['map'](_0x5e1282,function(_0x3e252d){if(_0x3e252d[_0x516a('0x33')]!==_0x516a('0x43')){var _0x47cc69={};_0x47cc69[_0x3e252d[_0x516a('0x2d')]]={'$like':'%'+_0x4aaae0[_0x516a('0x37')][_0x516a('0x42')]+'%'};return _0x47cc69;}})});}_0x4a3784=_[_0x516a('0x44')]({},_0x4a3784,_0x4aaae0['options']);var _0x3008c7={'where':_0x4a3784['where']};return db['OpenchannelQueue'][_0x516a('0x1f')](_0x3008c7)['then'](function(_0x485ae0){_0x5f1a1e[_0x516a('0x1f')]=_0x485ae0;if(_0x4aaae0['query']['includeAll']){_0x4a3784['include']=[{'all':!![]}];}return db[_0x516a('0x30')][_0x516a('0x45')](_0x4a3784);})[_0x516a('0x27')](function(_0x4e4b3c){_0x5f1a1e[_0x516a('0x46')]=_0x4e4b3c;return _0x5f1a1e;})[_0x516a('0x27')](respondWithFilteredResult(_0x458fb4,_0x4a3784))[_0x516a('0x47')](handleError(_0x458fb4,null));};exports[_0x516a('0x48')]=function(_0x35a6ae,_0x15a02f){var _0x391976={'raw':!![],'where':{'id':_0x35a6ae[_0x516a('0x49')]['id']}},_0x5beb8e={};_0x5beb8e['model']=_['keys'](db[_0x516a('0x30')]['rawAttributes']);_0x5beb8e['query']=_['keys'](_0x35a6ae['query']);_0x5beb8e[_0x516a('0x39')]=_[_0x516a('0x3a')](_0x5beb8e[_0x516a('0x35')],_0x5beb8e[_0x516a('0x37')]);_0x391976[_0x516a('0x3b')]=_['intersection'](_0x5beb8e['model'],qs[_0x516a('0x3c')](_0x35a6ae[_0x516a('0x37')][_0x516a('0x3c')]));_0x391976['attributes']=_0x391976[_0x516a('0x3b')][_0x516a('0x3d')]?_0x391976[_0x516a('0x3b')]:_0x5beb8e['model'];if(_0x35a6ae['query']['includeAll']){_0x391976[_0x516a('0x4a')]=[{'all':!![]}];}_0x391976=_['merge']({},_0x391976,_0x35a6ae[_0x516a('0x4b')]);return db['OpenchannelQueue'][_0x516a('0x4c')](_0x391976)[_0x516a('0x27')](handleEntityNotFound(_0x15a02f,null))[_0x516a('0x27')](respondWithResult(_0x15a02f,null))[_0x516a('0x47')](handleError(_0x15a02f,null));};exports['create']=function(_0x55a604,_0x368990){return db[_0x516a('0x30')]['create'](_0x55a604[_0x516a('0x4d')],{})['then'](function(_0x4bd67c){var _0x5bc863=_0x55a604[_0x516a('0x4e')][_0x516a('0x28')]({'plain':!![]});if(!_0x5bc863)throw new Error(_0x516a('0x4f'));if(_0x5bc863['role']===_0x516a('0x4e')){var _0x5e3f66=_0x4bd67c[_0x516a('0x28')]({'plain':!![]});var _0x305f29=_0x516a('0x29');return db[_0x516a('0x50')][_0x516a('0x4c')]({'where':{'name':_0x305f29,'userProfileId':_0x5bc863['userProfileId']},'raw':!![]})[_0x516a('0x27')](function(_0x41181b){if(_0x41181b&&_0x41181b[_0x516a('0x51')]===0x0){return db['UserProfileResource'][_0x516a('0x52')]({'name':_0x5e3f66[_0x516a('0x2d')],'resourceId':_0x5e3f66['id'],'type':_0x41181b['name'],'sectionId':_0x41181b['id']},{})[_0x516a('0x27')](function(){return _0x4bd67c;});}else{return _0x4bd67c;}})[_0x516a('0x47')](function(_0x573a3e){logger[_0x516a('0x2b')](_0x516a('0x53'),_0x573a3e);throw _0x573a3e;});}return _0x4bd67c;})[_0x516a('0x27')](respondWithResult(_0x368990,0xc9))[_0x516a('0x47')](handleError(_0x368990,null));};exports[_0x516a('0x25')]=function(_0x3f425e,_0x3fdde4){if(_0x3f425e[_0x516a('0x4d')]['id']){delete _0x3f425e[_0x516a('0x4d')]['id'];}return db[_0x516a('0x30')]['find']({'where':{'id':_0x3f425e['params']['id']}})[_0x516a('0x27')](handleEntityNotFound(_0x3fdde4,null))[_0x516a('0x27')](saveUpdates(_0x3f425e[_0x516a('0x4d')],null))[_0x516a('0x27')](respondWithResult(_0x3fdde4,null))[_0x516a('0x47')](handleError(_0x3fdde4,null));};exports[_0x516a('0x26')]=function(_0x1ad0c4,_0x5f37c6){return db[_0x516a('0x30')][_0x516a('0x4c')]({'where':{'id':_0x1ad0c4[_0x516a('0x49')]['id']}})['then'](handleEntityNotFound(_0x5f37c6,null))['then'](removeEntity(_0x5f37c6,null))[_0x516a('0x47')](handleError(_0x5f37c6,null));};exports[_0x516a('0x54')]=function(_0x99eff4,_0x13f84c){return db['OpenchannelQueue'][_0x516a('0x54')]()[_0x516a('0x27')](respondWithResult(_0x13f84c,null))[_0x516a('0x47')](handleError(_0x13f84c,null));};exports['getMembers']=function(_0x496903,_0x3223c7,_0x117838){var _0x2b6c9e={'raw':!![],'where':{}},_0x514f41={},_0x5eb357;return db[_0x516a('0x30')]['findOne']({'where':{'id':_0x496903[_0x516a('0x49')]['id']}})[_0x516a('0x27')](handleEntityNotFound(_0x3223c7,null))['then'](function(_0x23f9de){if(_0x23f9de){_0x5eb357=_0x23f9de[_0x516a('0x28')]({'plain':!![]});_0x514f41[_0x516a('0x35')]=_[_0x516a('0x38')](db[_0x516a('0x55')][_0x516a('0x31')]);_0x514f41[_0x516a('0x37')]=_['keys'](_0x496903[_0x516a('0x37')]);_0x514f41['filters']=_[_0x516a('0x3a')](_0x514f41[_0x516a('0x35')],_0x514f41[_0x516a('0x37')]);_0x2b6c9e['attributes']=_[_0x516a('0x3a')](_0x514f41[_0x516a('0x35')],qs[_0x516a('0x3c')](_0x496903['query'][_0x516a('0x3c')]));_0x2b6c9e[_0x516a('0x3b')]=_0x2b6c9e[_0x516a('0x3b')][_0x516a('0x3d')]?_0x2b6c9e[_0x516a('0x3b')]:_0x514f41[_0x516a('0x35')];if(!_0x496903[_0x516a('0x37')]['hasOwnProperty'](_0x516a('0x3e'))){_0x2b6c9e[_0x516a('0x21')]=qs[_0x516a('0x21')](_0x496903[_0x516a('0x37')][_0x516a('0x21')]);_0x2b6c9e['offset']=qs[_0x516a('0x20')](_0x496903[_0x516a('0x37')]['offset']);}_0x2b6c9e[_0x516a('0x3f')]=qs[_0x516a('0x40')](_0x496903[_0x516a('0x37')][_0x516a('0x40')]);_0x2b6c9e[_0x516a('0x41')]=qs['filters'](_[_0x516a('0x56')](_0x496903[_0x516a('0x37')],_0x514f41['filters']));_0x2b6c9e[_0x516a('0x41')][_0x516a('0x57')]=_0x23f9de['id'];if(_0x496903[_0x516a('0x37')][_0x516a('0x42')]){_0x2b6c9e[_0x516a('0x41')]=_[_0x516a('0x44')](_0x2b6c9e[_0x516a('0x41')],{'$or':_['map'](_0x2b6c9e[_0x516a('0x3b')],function(_0x581320){var _0x4a643d={};_0x4a643d[_0x581320]={'$like':'%'+_0x496903['query'][_0x516a('0x42')]+'%'};return _0x4a643d;})});}_0x2b6c9e=_[_0x516a('0x44')]({},_0x2b6c9e,_0x496903[_0x516a('0x4b')]);return db[_0x516a('0x55')][_0x516a('0x45')](_0x2b6c9e);}})['then'](function(_0x14f2f9){if(_0x14f2f9){return db[_0x516a('0x58')][_0x516a('0x59')]({'where':{'id':_[_0x516a('0x36')](_0x14f2f9,'UserId'),'role':_0x516a('0x5a')},'attributes':['id',_0x516a('0x2d'),_0x516a('0x5b'),_0x516a('0x5c'),'createdAt']});}})['then'](function(_0x216191){if(_0x216191){return{'count':_0x216191[_0x516a('0x1f')],'rows':_['map'](_0x216191[_0x516a('0x46')],function(_0x18fbf0){return{'membername':_0x18fbf0['name'],'UserId':_0x18fbf0['id'],'queue_name':_0x5eb357['name'],'OpenchannelQueueId':_0x5eb357['id'],'interface':util['format'](_0x516a('0x5d'),_0x516a('0x5e'),_0x18fbf0[_0x516a('0x2d')]),'penalty':0x0,'paused':_0x18fbf0[_0x516a('0x5b')],'createdAt':_0x18fbf0[_0x516a('0x5f')],'updatedAt':_0x18fbf0[_0x516a('0x5c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x516a('0x27')](respondWithFilteredResult(_0x3223c7,_0x2b6c9e))[_0x516a('0x47')](handleError(_0x3223c7,null));};exports['getTeams']=function(_0x19a93f,_0x2cc83c,_0x10015d){var _0x56bfe6={};var _0x330e85={};var _0x2dd35a;var _0x2c1f11;return db[_0x516a('0x30')][_0x516a('0x60')]({'where':{'id':_0x19a93f[_0x516a('0x49')]['id']}})[_0x516a('0x27')](handleEntityNotFound(_0x2cc83c,null))[_0x516a('0x27')](function(_0x1b96f6){if(_0x1b96f6){_0x2dd35a=_0x1b96f6;_0x330e85[_0x516a('0x35')]=_[_0x516a('0x38')](db[_0x516a('0x61')]['rawAttributes']);_0x330e85[_0x516a('0x37')]=_[_0x516a('0x38')](_0x19a93f[_0x516a('0x37')]);_0x330e85[_0x516a('0x39')]=_[_0x516a('0x3a')](_0x330e85[_0x516a('0x35')],_0x330e85[_0x516a('0x37')]);_0x56bfe6['attributes']=_[_0x516a('0x3a')](_0x330e85['model'],qs[_0x516a('0x3c')](_0x19a93f[_0x516a('0x37')][_0x516a('0x3c')]));_0x56bfe6[_0x516a('0x3b')]=_0x56bfe6[_0x516a('0x3b')][_0x516a('0x3d')]?_0x56bfe6[_0x516a('0x3b')]:_0x330e85[_0x516a('0x35')];_0x56bfe6[_0x516a('0x3f')]=qs['sort'](_0x19a93f['query'][_0x516a('0x40')]);_0x56bfe6['where']=qs[_0x516a('0x39')](_[_0x516a('0x56')](_0x19a93f[_0x516a('0x37')],_0x330e85[_0x516a('0x39')]));if(_0x19a93f[_0x516a('0x37')]['filter']){_0x56bfe6['where']=_['merge'](_0x56bfe6['where'],{'$or':_[_0x516a('0x36')](_0x56bfe6['attributes'],function(_0x31efc0){var _0xb32ab1={};_0xb32ab1[_0x31efc0]={'$like':'%'+_0x19a93f[_0x516a('0x37')][_0x516a('0x42')]+'%'};return _0xb32ab1;})});}_0x56bfe6=_[_0x516a('0x44')]({},_0x56bfe6,_0x19a93f[_0x516a('0x4b')]);return _0x2dd35a[_0x516a('0x62')](_0x56bfe6);}})['then'](function(_0x2da394){if(_0x2da394){_0x2c1f11=_0x2da394[_0x516a('0x3d')];if(!_0x19a93f[_0x516a('0x37')]['hasOwnProperty']('nolimit')){_0x56bfe6[_0x516a('0x21')]=qs[_0x516a('0x21')](_0x19a93f[_0x516a('0x37')][_0x516a('0x21')]);_0x56bfe6[_0x516a('0x20')]=qs[_0x516a('0x20')](_0x19a93f['query'][_0x516a('0x20')]);}return _0x2dd35a[_0x516a('0x62')](_0x56bfe6);}})[_0x516a('0x27')](function(_0x4a34a5){if(_0x4a34a5){return _0x4a34a5?{'count':_0x2c1f11,'rows':_0x4a34a5}:null;}})[_0x516a('0x27')](respondWithResult(_0x2cc83c,null))[_0x516a('0x47')](handleError(_0x2cc83c,null));};exports['addTeams']=function(_0x44031a,_0x480243,_0x66b52b){var _0x520686=_0x44031a[_0x516a('0x4d')]['ids'];return db[_0x516a('0x61')][_0x516a('0x45')]({'where':{'id':_0x520686},'attributes':['id'],'include':[{'model':db[_0x516a('0x58')],'as':_0x516a('0x63'),'attributes':['id','name','online','voicePause',_0x516a('0x64')],'raw':!![]}]})[_0x516a('0x27')](function(_0x4660a8){if(_0x4660a8){var _0x5a765c=_[_0x516a('0x65')](_0x4660a8,function(_0x987d74){var _0x421f5f=_0x987d74[_0x516a('0x28')]({'plain':!![]});return _0x421f5f['Agents'];});return db['OpenchannelQueue']['find']({'where':{'id':_0x44031a['params']['id']}})[_0x516a('0x27')](function(_0x45007c){return db[_0x516a('0x66')][_0x516a('0x67')](function(_0x3b7f68){return _0x45007c[_0x516a('0x68')](_0x520686,{'transaction':_0x3b7f68})['then'](function(){return BPromise[_0x516a('0x69')](_0x5a765c,function(_0x3f2c93){return db[_0x516a('0x55')][_0x516a('0x6a')]({'where':{'UserId':_0x3f2c93['id'],'OpenchannelQueueId':_0x44031a[_0x516a('0x49')]['id']},'transaction':_0x3b7f68});});})[_0x516a('0x27')](function(){_0x5a765c['forEach'](function(_0x46d895){socket[_0x516a('0x6b')](_0x516a('0x6c'),{'UserId':_0x46d895['id'],'OpenchannelQueueId':_0x45007c['id']});});});});});}})[_0x516a('0x27')](respondWithStatusCode(_0x480243,null))[_0x516a('0x47')](handleError(_0x480243,null));};exports[_0x516a('0x6d')]=function(_0x3ad6cd,_0x5efbf2,_0x1cb3ad){return db[_0x516a('0x61')][_0x516a('0x45')]({'where':{'id':_0x3ad6cd[_0x516a('0x37')][_0x516a('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x516a('0x58')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x516a('0x27')](handleEntityNotFound(_0x5efbf2,null))[_0x516a('0x27')](function(_0x416c7c){var _0x18fb05=_['map'](_0x416c7c,'id');var _0x348a72=[];var _0x43997a=[];var _0xb723ae=squel['select']();_0xb723ae[_0x516a('0x6f')](_0x516a('0x70'))['from'](_0x516a('0x71'),'tq')[_0x516a('0x72')](_0x516a('0x73'),'ut',_0x516a('0x74'))[_0x516a('0x41')](_0x516a('0x75'),_0x3ad6cd[_0x516a('0x49')]['id']);for(var _0x462e46=0x0;_0x462e46<_0x416c7c['length'];_0x462e46+=0x1){let _0x2397b2=_0x416c7c[_0x462e46];for(var _0x330fef=0x0;_0x330fef<_0x2397b2['Agents'][_0x516a('0x3d')];_0x330fef+=0x1){let _0x5b8bac=_0x2397b2[_0x516a('0x63')][_0x330fef];var _0x5e5a6d=_0xb723ae[_0x516a('0x76')]();_0x5e5a6d['where'](_0x516a('0x77'),_0x5b8bac['id']);_0x43997a['push'](db[_0x516a('0x66')][_0x516a('0x37')](_0x5e5a6d['toString'](),{'type':db['sequelize'][_0x516a('0x78')][_0x516a('0x79')]})[_0x516a('0x27')](function(_0x3864ae){if(_0x3864ae[_0x516a('0x3d')]===0x1){return _0x5b8bac['id'];}else{var _0x168749=_[_0x516a('0x7a')](_[_0x516a('0x36')](_0x3864ae,'TeamId'),function(_0x326e10){return _[_0x516a('0x7b')](_0x18fb05,_0x326e10);});if(_0x168749){return _0x5b8bac['id'];}}}));}}return BPromise[_0x516a('0x7c')](_0x43997a)[_0x516a('0x27')](function(_0x4e3bb6){_0x348a72=_(_0x348a72)['union'](_0x4e3bb6)[_0x516a('0x7d')]()[_0x516a('0x7e')]();return db[_0x516a('0x30')][_0x516a('0x4c')]({'where':{'id':_0x3ad6cd[_0x516a('0x49')]['id']}})[_0x516a('0x27')](function(_0xe2d92e){return db[_0x516a('0x66')][_0x516a('0x67')](function(_0x53fe17){return _0xe2d92e[_0x516a('0x6d')](_0x3ad6cd[_0x516a('0x37')]['ids'],{'transaction':_0x53fe17})[_0x516a('0x27')](function(){if(!_['isEmpty'](_0x348a72)){return _0xe2d92e[_0x516a('0x7f')](_0x348a72,{'transaction':_0x53fe17});}})[_0x516a('0x27')](function(){_0x348a72[_0x516a('0x80')](function(_0x3ecdbf){socket['emit'](_0x516a('0x81'),{'UserId':_0x3ecdbf,'OpenchannelQueueId':_0xe2d92e['id']});});});});});});})[_0x516a('0x27')](respondWithStatusCode(_0x5efbf2,null))[_0x516a('0x47')](handleError(_0x5efbf2,null));};exports['addAgents']=function(_0x4dda4c,_0x37cf91,_0x2a78e1){return db[_0x516a('0x30')]['find']({'where':{'id':_0x4dda4c[_0x516a('0x49')]['id']}})['then'](handleEntityNotFound(_0x37cf91,null))[_0x516a('0x27')](function(_0x3c0bef){if(_0x3c0bef){return _0x3c0bef['addAgents'](_0x4dda4c['body'][_0x516a('0x6e')],_[_0x516a('0x82')](_0x4dda4c[_0x516a('0x4d')],[_0x516a('0x6e'),'id'])||{})[_0x516a('0x83')](function(_0x26a1b4){for(var _0x4905f9=0x0;_0x4905f9<_0x4dda4c[_0x516a('0x4d')][_0x516a('0x6e')][_0x516a('0x3d')];_0x4905f9+=0x1){socket['emit'](_0x516a('0x6c'),{'UserId':Number(_0x4dda4c[_0x516a('0x4d')]['ids'][_0x4905f9]),'OpenchannelQueueId':Number(_0x4dda4c[_0x516a('0x49')]['id'])});}return _0x26a1b4;});}})['then'](respondWithResult(_0x37cf91,null))['catch'](handleError(_0x37cf91,null));};exports['removeAgents']=function(_0x25d3a2,_0x2a787f,_0x5de3e2){return db[_0x516a('0x30')][_0x516a('0x4c')]({'where':{'id':_0x25d3a2[_0x516a('0x49')]['id']}})['then'](handleEntityNotFound(_0x2a787f,null))[_0x516a('0x27')](function(_0x3d6815){if(_0x3d6815){return _0x3d6815['removeAgents'](_0x25d3a2['query'][_0x516a('0x6e')])[_0x516a('0x27')](function(){if(_[_0x516a('0x84')](_0x25d3a2['query']['ids'])){for(var _0x377a60=0x0;_0x377a60<_0x25d3a2[_0x516a('0x37')]['ids'][_0x516a('0x3d')];_0x377a60+=0x1){socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x25d3a2[_0x516a('0x37')][_0x516a('0x6e')][_0x377a60]),'OpenchannelQueueId':Number(_0x25d3a2[_0x516a('0x49')]['id'])});}}else{socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x25d3a2['query'][_0x516a('0x6e')]),'OpenchannelQueueId':Number(_0x25d3a2[_0x516a('0x49')]['id'])});}});}})[_0x516a('0x27')](respondWithStatusCode(_0x2a787f,null))['catch'](handleError(_0x2a787f,null));};exports['getAgents']=function(_0x12789a,_0x3336ae,_0x15f04e){var _0x443a7c={};var _0x106d4a={};var _0x260eb1;var _0xef8dcf;return db[_0x516a('0x30')][_0x516a('0x60')]({'where':{'id':_0x12789a[_0x516a('0x49')]['id']}})[_0x516a('0x27')](handleEntityNotFound(_0x3336ae,null))['then'](function(_0x501be7){if(_0x501be7){_0x260eb1=_0x501be7;_0x106d4a[_0x516a('0x35')]=_[_0x516a('0x38')](db[_0x516a('0x58')]['rawAttributes']);_0x106d4a[_0x516a('0x37')]=_['keys'](_0x12789a[_0x516a('0x37')]);_0x106d4a[_0x516a('0x39')]=_['intersection'](_0x106d4a[_0x516a('0x35')],_0x106d4a[_0x516a('0x37')]);_0x443a7c[_0x516a('0x3b')]=_[_0x516a('0x3a')](_0x106d4a[_0x516a('0x35')],qs[_0x516a('0x3c')](_0x12789a['query'][_0x516a('0x3c')]));_0x443a7c[_0x516a('0x3b')]=_0x443a7c[_0x516a('0x3b')][_0x516a('0x3d')]?_0x443a7c[_0x516a('0x3b')]:_0x106d4a['model'];_0x443a7c[_0x516a('0x3f')]=qs[_0x516a('0x40')](_0x12789a['query'][_0x516a('0x40')]);_0x443a7c[_0x516a('0x41')]=qs[_0x516a('0x39')](_[_0x516a('0x56')](_0x12789a[_0x516a('0x37')],_0x106d4a[_0x516a('0x39')]));if(_0x12789a[_0x516a('0x37')][_0x516a('0x42')]){_0x443a7c[_0x516a('0x41')]=_['merge'](_0x443a7c[_0x516a('0x41')],{'$or':_[_0x516a('0x36')](_0x443a7c[_0x516a('0x3b')],function(_0x42b72c){var _0x4c9c3d={};_0x4c9c3d[_0x42b72c]={'$like':'%'+_0x12789a[_0x516a('0x37')][_0x516a('0x42')]+'%'};return _0x4c9c3d;})});}_0x443a7c=_['merge']({},_0x443a7c,_0x12789a['options']);return _0x260eb1[_0x516a('0x85')](_0x443a7c);}})[_0x516a('0x27')](function(_0x2cf376){if(_0x2cf376){_0xef8dcf=_0x2cf376[_0x516a('0x3d')];if(!_0x12789a['query'][_0x516a('0x86')](_0x516a('0x3e'))){_0x443a7c[_0x516a('0x21')]=qs[_0x516a('0x21')](_0x12789a[_0x516a('0x37')][_0x516a('0x21')]);_0x443a7c[_0x516a('0x20')]=qs[_0x516a('0x20')](_0x12789a[_0x516a('0x37')][_0x516a('0x20')]);}return _0x260eb1[_0x516a('0x85')](_0x443a7c);}})[_0x516a('0x27')](function(_0x482a98){if(_0x482a98){return _0x482a98?{'count':_0xef8dcf,'rows':_0x482a98}:null;}})[_0x516a('0x27')](respondWithResult(_0x3336ae,null))[_0x516a('0x47')](handleError(_0x3336ae,null));};
\ No newline at end of file
+var _0xd019=['OpenchannelQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','%s/%s','openchannelPause','getTeams','Team','addTeams','ids','Agents','voicePause','interface','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','tq.TeamId','team_has_openchannel_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','all','union','value','isEmpty','removeAgents','emit','userOpenchannelQueue:remove','addAgents','omit','spread','isArray','getAgents','rawAttributes','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','redis','socket.io-emitter','./openchannelQueue.socket','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','index','map','OpenchannelQueue','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','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','describe','getMembers','findOne','UserOpenchannelQueue','sort'];(function(_0x32a066,_0xc2b66b){var _0x548224=function(_0x20d21a){while(--_0x20d21a){_0x32a066['push'](_0x32a066['shift']());}};_0x548224(++_0xc2b66b);}(_0xd019,0xb7));var _0x9d01=function(_0x329437,_0x1de73a){_0x329437=_0x329437-0x0;var _0x3789d9=_0xd019[_0x329437];return _0x3789d9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9d01('0x0'));var jsonpatch=require(_0x9d01('0x1'));var rp=require('request-promise');var moment=require(_0x9d01('0x2'));var BPromise=require(_0x9d01('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9d01('0x4'));var sox=require(_0x9d01('0x5'));var csv=require(_0x9d01('0x6'));var ejs=require(_0x9d01('0x7'));var fs=require('fs');var fs_extra=require(_0x9d01('0x8'));var _=require(_0x9d01('0x9'));var squel=require(_0x9d01('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x9d01('0x6'));var querystring=require(_0x9d01('0xb'));var Papa=require(_0x9d01('0xc'));var Redis=require(_0x9d01('0xd'));var authService=require(_0x9d01('0xe'));var qs=require(_0x9d01('0xf'));var as=require(_0x9d01('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d01('0x11'))(_0x9d01('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9d01('0x13'))['db'];config[_0x9d01('0x14')]=_['defaults'](config[_0x9d01('0x14')],{'host':'localhost','port':0x18eb});var socket=require(_0x9d01('0x15'))(new Redis(config['redis']));require(_0x9d01('0x16'))['register'](socket);function respondWithStatusCode(_0x3adaad,_0x217d53){_0x217d53=_0x217d53||0xcc;return function(_0x33ca74){if(_0x33ca74){return _0x3adaad[_0x9d01('0x17')](_0x217d53);}return _0x3adaad['status'](_0x217d53)[_0x9d01('0x18')]();};}function respondWithResult(_0x2839a9,_0x296069){_0x296069=_0x296069||0xc8;return function(_0x5e16c4){if(_0x5e16c4){return _0x2839a9[_0x9d01('0x19')](_0x296069)[_0x9d01('0x1a')](_0x5e16c4);}};}function respondWithFilteredResult(_0x1dadc4,_0x5d51d8){return function(_0x437e3d){if(_0x437e3d){var _0x28547f=typeof _0x5d51d8[_0x9d01('0x1b')]==='undefined'&&typeof _0x5d51d8['limit']===_0x9d01('0x1c');var _0x17a781=_0x437e3d[_0x9d01('0x1d')];var _0x9558ba=_0x28547f?0x0:_0x5d51d8[_0x9d01('0x1b')];var _0x3a536b=_0x28547f?_0x437e3d[_0x9d01('0x1d')]:_0x5d51d8['offset']+_0x5d51d8[_0x9d01('0x1e')];var _0x4e4a65;if(_0x3a536b>=_0x17a781){_0x3a536b=_0x17a781;_0x4e4a65=0xc8;}else{_0x4e4a65=0xce;}_0x1dadc4[_0x9d01('0x19')](_0x4e4a65);return _0x1dadc4[_0x9d01('0x1f')](_0x9d01('0x20'),_0x9558ba+'-'+_0x3a536b+'/'+_0x17a781)['json'](_0x437e3d);}return null;};}function patchUpdates(_0x9c0a0d){return function(_0x48a2e5){try{jsonpatch[_0x9d01('0x21')](_0x48a2e5,_0x9c0a0d,!![]);}catch(_0x3474b3){return BPromise[_0x9d01('0x22')](_0x3474b3);}return _0x48a2e5['save']();};}function saveUpdates(_0x24fc29,_0x1c49c9){return function(_0x129f75){if(_0x129f75){return _0x129f75[_0x9d01('0x23')](_0x24fc29)[_0x9d01('0x24')](function(_0xec7cfa){return _0xec7cfa;});}return null;};}function removeEntity(_0x2781c6,_0x323e39){return function(_0x58749c){if(_0x58749c){return _0x58749c[_0x9d01('0x25')]()[_0x9d01('0x24')](function(){var _0xb17297=_0x58749c[_0x9d01('0x26')]({'plain':!![]});var _0x195585=_0x9d01('0x27');return db[_0x9d01('0x28')]['destroy']({'where':{'type':_0x195585,'resourceId':_0xb17297['id']}})['then'](function(){return _0x58749c;});})[_0x9d01('0x24')](function(){_0x2781c6[_0x9d01('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5823aa,_0x442335){return function(_0x3496ac){if(!_0x3496ac){_0x5823aa[_0x9d01('0x17')](0x194);}return _0x3496ac;};}function handleError(_0x110d7e,_0x14d13a){_0x14d13a=_0x14d13a||0x1f4;return function(_0x22ea1d){logger[_0x9d01('0x29')](_0x22ea1d[_0x9d01('0x2a')]);if(_0x22ea1d[_0x9d01('0x2b')]){delete _0x22ea1d['name'];}_0x110d7e['status'](_0x14d13a)['send'](_0x22ea1d);};}exports[_0x9d01('0x2c')]=function(_0x3d5f9f,_0x509216){var _0x51c685={},_0x2043be={},_0x5edc94={'count':0x0,'rows':[]};var _0x2cf892=_[_0x9d01('0x2d')](db[_0x9d01('0x2e')]['rawAttributes'],function(_0xeab661){return{'name':_0xeab661[_0x9d01('0x2f')],'type':_0xeab661[_0x9d01('0x30')][_0x9d01('0x31')]};});_0x2043be['model']=_[_0x9d01('0x2d')](_0x2cf892,_0x9d01('0x2b'));_0x2043be['query']=_[_0x9d01('0x32')](_0x3d5f9f[_0x9d01('0x33')]);_0x2043be[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x2043be[_0x9d01('0x36')],_0x2043be[_0x9d01('0x33')]);_0x51c685['attributes']=_[_0x9d01('0x35')](_0x2043be['model'],qs[_0x9d01('0x37')](_0x3d5f9f['query'][_0x9d01('0x37')]));_0x51c685['attributes']=_0x51c685[_0x9d01('0x38')][_0x9d01('0x39')]?_0x51c685[_0x9d01('0x38')]:_0x2043be[_0x9d01('0x36')];if(!_0x3d5f9f[_0x9d01('0x33')][_0x9d01('0x3a')](_0x9d01('0x3b'))){_0x51c685[_0x9d01('0x1e')]=qs[_0x9d01('0x1e')](_0x3d5f9f[_0x9d01('0x33')]['limit']);_0x51c685['offset']=qs[_0x9d01('0x1b')](_0x3d5f9f[_0x9d01('0x33')][_0x9d01('0x1b')]);}_0x51c685[_0x9d01('0x3c')]=qs['sort'](_0x3d5f9f[_0x9d01('0x33')]['sort']);_0x51c685[_0x9d01('0x3d')]=qs[_0x9d01('0x34')](_[_0x9d01('0x3e')](_0x3d5f9f[_0x9d01('0x33')],_0x2043be['filters']),_0x2cf892);if(_0x3d5f9f[_0x9d01('0x33')][_0x9d01('0x3f')]){_0x51c685['where']=_[_0x9d01('0x40')](_0x51c685[_0x9d01('0x3d')],{'$or':_[_0x9d01('0x2d')](_0x2cf892,function(_0x2ce09f){if(_0x2ce09f['type']!==_0x9d01('0x41')){var _0x47eacb={};_0x47eacb[_0x2ce09f[_0x9d01('0x2b')]]={'$like':'%'+_0x3d5f9f['query']['filter']+'%'};return _0x47eacb;}})});}_0x51c685=_['merge']({},_0x51c685,_0x3d5f9f[_0x9d01('0x42')]);var _0x1e4756={'where':_0x51c685[_0x9d01('0x3d')]};return db['OpenchannelQueue'][_0x9d01('0x1d')](_0x1e4756)['then'](function(_0x496b48){_0x5edc94[_0x9d01('0x1d')]=_0x496b48;if(_0x3d5f9f['query'][_0x9d01('0x43')]){_0x51c685[_0x9d01('0x44')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x9d01('0x45')](_0x51c685);})[_0x9d01('0x24')](function(_0x644c64){_0x5edc94[_0x9d01('0x46')]=_0x644c64;return _0x5edc94;})[_0x9d01('0x24')](respondWithFilteredResult(_0x509216,_0x51c685))[_0x9d01('0x47')](handleError(_0x509216,null));};exports[_0x9d01('0x48')]=function(_0x1c8f30,_0xf40953){var _0x34d77b={'raw':!![],'where':{'id':_0x1c8f30[_0x9d01('0x49')]['id']}},_0x49634d={};_0x49634d[_0x9d01('0x36')]=_[_0x9d01('0x32')](db['OpenchannelQueue']['rawAttributes']);_0x49634d[_0x9d01('0x33')]=_['keys'](_0x1c8f30[_0x9d01('0x33')]);_0x49634d[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x49634d['model'],_0x49634d['query']);_0x34d77b[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x49634d['model'],qs['fields'](_0x1c8f30[_0x9d01('0x33')][_0x9d01('0x37')]));_0x34d77b[_0x9d01('0x38')]=_0x34d77b['attributes'][_0x9d01('0x39')]?_0x34d77b[_0x9d01('0x38')]:_0x49634d[_0x9d01('0x36')];if(_0x1c8f30[_0x9d01('0x33')][_0x9d01('0x43')]){_0x34d77b[_0x9d01('0x44')]=[{'all':!![]}];}_0x34d77b=_['merge']({},_0x34d77b,_0x1c8f30[_0x9d01('0x42')]);return db['OpenchannelQueue'][_0x9d01('0x4a')](_0x34d77b)[_0x9d01('0x24')](handleEntityNotFound(_0xf40953,null))['then'](respondWithResult(_0xf40953,null))[_0x9d01('0x47')](handleError(_0xf40953,null));};exports['create']=function(_0x2f23da,_0x3e4a55){return db['OpenchannelQueue'][_0x9d01('0x4b')](_0x2f23da[_0x9d01('0x4c')],{})[_0x9d01('0x24')](function(_0x3b8e68){var _0x536f28=_0x2f23da[_0x9d01('0x4d')]['get']({'plain':!![]});if(!_0x536f28)throw new Error(_0x9d01('0x4e'));if(_0x536f28[_0x9d01('0x4f')]===_0x9d01('0x4d')){var _0x55633b=_0x3b8e68[_0x9d01('0x26')]({'plain':!![]});var _0x8beb91=_0x9d01('0x27');return db[_0x9d01('0x50')][_0x9d01('0x4a')]({'where':{'name':_0x8beb91,'userProfileId':_0x536f28[_0x9d01('0x51')]},'raw':!![]})[_0x9d01('0x24')](function(_0x102ba6){if(_0x102ba6&&_0x102ba6[_0x9d01('0x52')]===0x0){return db['UserProfileResource'][_0x9d01('0x4b')]({'name':_0x55633b[_0x9d01('0x2b')],'resourceId':_0x55633b['id'],'type':_0x102ba6[_0x9d01('0x2b')],'sectionId':_0x102ba6['id']},{})['then'](function(){return _0x3b8e68;});}else{return _0x3b8e68;}})[_0x9d01('0x47')](function(_0x1e3211){logger[_0x9d01('0x29')](_0x9d01('0x53'),_0x1e3211);throw _0x1e3211;});}return _0x3b8e68;})[_0x9d01('0x24')](respondWithResult(_0x3e4a55,0xc9))['catch'](handleError(_0x3e4a55,null));};exports['update']=function(_0xb19f16,_0x1a59c9){if(_0xb19f16[_0x9d01('0x4c')]['id']){delete _0xb19f16['body']['id'];}return db[_0x9d01('0x2e')][_0x9d01('0x4a')]({'where':{'id':_0xb19f16[_0x9d01('0x49')]['id']}})[_0x9d01('0x24')](handleEntityNotFound(_0x1a59c9,null))['then'](saveUpdates(_0xb19f16[_0x9d01('0x4c')],null))['then'](respondWithResult(_0x1a59c9,null))[_0x9d01('0x47')](handleError(_0x1a59c9,null));};exports[_0x9d01('0x25')]=function(_0x4fe82a,_0x2550d5){return db[_0x9d01('0x2e')]['find']({'where':{'id':_0x4fe82a[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x2550d5,null))['then'](removeEntity(_0x2550d5,null))[_0x9d01('0x47')](handleError(_0x2550d5,null));};exports[_0x9d01('0x54')]=function(_0x58645e,_0x506a0f){return db[_0x9d01('0x2e')][_0x9d01('0x54')]()['then'](respondWithResult(_0x506a0f,null))[_0x9d01('0x47')](handleError(_0x506a0f,null));};exports[_0x9d01('0x55')]=function(_0x1fdb9f,_0x3647ea,_0x437dad){var _0x3d02a0={'raw':!![],'where':{}},_0x489dc8={},_0x253975;return db['OpenchannelQueue'][_0x9d01('0x56')]({'where':{'id':_0x1fdb9f[_0x9d01('0x49')]['id']}})[_0x9d01('0x24')](handleEntityNotFound(_0x3647ea,null))[_0x9d01('0x24')](function(_0x103f35){if(_0x103f35){_0x253975=_0x103f35[_0x9d01('0x26')]({'plain':!![]});_0x489dc8[_0x9d01('0x36')]=_[_0x9d01('0x32')](db[_0x9d01('0x57')]['rawAttributes']);_0x489dc8[_0x9d01('0x33')]=_['keys'](_0x1fdb9f[_0x9d01('0x33')]);_0x489dc8[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x489dc8[_0x9d01('0x36')],_0x489dc8['query']);_0x3d02a0[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x489dc8[_0x9d01('0x36')],qs[_0x9d01('0x37')](_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x37')]));_0x3d02a0[_0x9d01('0x38')]=_0x3d02a0[_0x9d01('0x38')][_0x9d01('0x39')]?_0x3d02a0[_0x9d01('0x38')]:_0x489dc8['model'];if(!_0x1fdb9f['query'][_0x9d01('0x3a')](_0x9d01('0x3b'))){_0x3d02a0[_0x9d01('0x1e')]=qs[_0x9d01('0x1e')](_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x1e')]);_0x3d02a0[_0x9d01('0x1b')]=qs[_0x9d01('0x1b')](_0x1fdb9f['query'][_0x9d01('0x1b')]);}_0x3d02a0['order']=qs[_0x9d01('0x58')](_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x58')]);_0x3d02a0[_0x9d01('0x3d')]=qs[_0x9d01('0x34')](_[_0x9d01('0x3e')](_0x1fdb9f['query'],_0x489dc8[_0x9d01('0x34')]));_0x3d02a0[_0x9d01('0x3d')][_0x9d01('0x59')]=_0x103f35['id'];if(_0x1fdb9f[_0x9d01('0x33')][_0x9d01('0x3f')]){_0x3d02a0[_0x9d01('0x3d')]=_['merge'](_0x3d02a0['where'],{'$or':_[_0x9d01('0x2d')](_0x3d02a0['attributes'],function(_0x3ec7e8){var _0x4a633b={};_0x4a633b[_0x3ec7e8]={'$like':'%'+_0x1fdb9f['query'][_0x9d01('0x3f')]+'%'};return _0x4a633b;})});}_0x3d02a0=_[_0x9d01('0x40')]({},_0x3d02a0,_0x1fdb9f[_0x9d01('0x42')]);return db[_0x9d01('0x57')][_0x9d01('0x45')](_0x3d02a0);}})[_0x9d01('0x24')](function(_0x47f1e4){if(_0x47f1e4){return db[_0x9d01('0x5a')][_0x9d01('0x5b')]({'where':{'id':_[_0x9d01('0x2d')](_0x47f1e4,_0x9d01('0x5c')),'role':_0x9d01('0x5d')},'attributes':['id',_0x9d01('0x2b'),'openchannelPause',_0x9d01('0x5e'),_0x9d01('0x5f')]});}})[_0x9d01('0x24')](function(_0x5e5d89){if(_0x5e5d89){return{'count':_0x5e5d89[_0x9d01('0x1d')],'rows':_[_0x9d01('0x2d')](_0x5e5d89[_0x9d01('0x46')],function(_0x39f377){return{'membername':_0x39f377[_0x9d01('0x2b')],'UserId':_0x39f377['id'],'queue_name':_0x253975['name'],'OpenchannelQueueId':_0x253975['id'],'interface':util['format'](_0x9d01('0x60'),'SIP',_0x39f377[_0x9d01('0x2b')]),'penalty':0x0,'paused':_0x39f377[_0x9d01('0x61')],'createdAt':_0x39f377[_0x9d01('0x5f')],'updatedAt':_0x39f377[_0x9d01('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x9d01('0x24')](respondWithFilteredResult(_0x3647ea,_0x3d02a0))['catch'](handleError(_0x3647ea,null));};exports[_0x9d01('0x62')]=function(_0x450ed7,_0x378818,_0x38298a){var _0x4665b8={};var _0x14b681={};var _0x2a97ec;var _0x31bfea;return db[_0x9d01('0x2e')]['findOne']({'where':{'id':_0x450ed7['params']['id']}})[_0x9d01('0x24')](handleEntityNotFound(_0x378818,null))['then'](function(_0x3f4da9){if(_0x3f4da9){_0x2a97ec=_0x3f4da9;_0x14b681[_0x9d01('0x36')]=_['keys'](db[_0x9d01('0x63')]['rawAttributes']);_0x14b681[_0x9d01('0x33')]=_[_0x9d01('0x32')](_0x450ed7[_0x9d01('0x33')]);_0x14b681[_0x9d01('0x34')]=_[_0x9d01('0x35')](_0x14b681[_0x9d01('0x36')],_0x14b681[_0x9d01('0x33')]);_0x4665b8[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x14b681['model'],qs[_0x9d01('0x37')](_0x450ed7[_0x9d01('0x33')][_0x9d01('0x37')]));_0x4665b8[_0x9d01('0x38')]=_0x4665b8[_0x9d01('0x38')][_0x9d01('0x39')]?_0x4665b8[_0x9d01('0x38')]:_0x14b681[_0x9d01('0x36')];_0x4665b8[_0x9d01('0x3c')]=qs[_0x9d01('0x58')](_0x450ed7[_0x9d01('0x33')]['sort']);_0x4665b8[_0x9d01('0x3d')]=qs['filters'](_[_0x9d01('0x3e')](_0x450ed7['query'],_0x14b681[_0x9d01('0x34')]));if(_0x450ed7['query'][_0x9d01('0x3f')]){_0x4665b8[_0x9d01('0x3d')]=_[_0x9d01('0x40')](_0x4665b8['where'],{'$or':_[_0x9d01('0x2d')](_0x4665b8[_0x9d01('0x38')],function(_0x2daa6d){var _0x142688={};_0x142688[_0x2daa6d]={'$like':'%'+_0x450ed7['query'][_0x9d01('0x3f')]+'%'};return _0x142688;})});}_0x4665b8=_[_0x9d01('0x40')]({},_0x4665b8,_0x450ed7[_0x9d01('0x42')]);return _0x2a97ec[_0x9d01('0x62')](_0x4665b8);}})[_0x9d01('0x24')](function(_0xb47c05){if(_0xb47c05){_0x31bfea=_0xb47c05[_0x9d01('0x39')];if(!_0x450ed7[_0x9d01('0x33')][_0x9d01('0x3a')]('nolimit')){_0x4665b8['limit']=qs[_0x9d01('0x1e')](_0x450ed7[_0x9d01('0x33')][_0x9d01('0x1e')]);_0x4665b8[_0x9d01('0x1b')]=qs[_0x9d01('0x1b')](_0x450ed7[_0x9d01('0x33')][_0x9d01('0x1b')]);}return _0x2a97ec[_0x9d01('0x62')](_0x4665b8);}})[_0x9d01('0x24')](function(_0x593868){if(_0x593868){return _0x593868?{'count':_0x31bfea,'rows':_0x593868}:null;}})['then'](respondWithResult(_0x378818,null))['catch'](handleError(_0x378818,null));};exports[_0x9d01('0x64')]=function(_0x492816,_0x1d6902,_0x43c89b){var _0x2e259c=_0x492816[_0x9d01('0x4c')][_0x9d01('0x65')];return db['Team'][_0x9d01('0x45')]({'where':{'id':_0x2e259c},'attributes':['id'],'include':[{'model':db[_0x9d01('0x5a')],'as':_0x9d01('0x66'),'attributes':['id','name','online',_0x9d01('0x67'),_0x9d01('0x68')],'raw':!![]}]})['then'](function(_0xd909a8){if(_0xd909a8){var _0x1063e2=_[_0x9d01('0x69')](_0xd909a8,function(_0x20ecd9){var _0x27534e=_0x20ecd9[_0x9d01('0x26')]({'plain':!![]});return _0x27534e[_0x9d01('0x66')];});return db[_0x9d01('0x2e')]['find']({'where':{'id':_0x492816[_0x9d01('0x49')]['id']}})[_0x9d01('0x24')](function(_0x5e2321){return db[_0x9d01('0x6a')][_0x9d01('0x6b')](function(_0x274805){return _0x5e2321[_0x9d01('0x64')](_0x2e259c,{'transaction':_0x274805})[_0x9d01('0x24')](function(){return BPromise[_0x9d01('0x6c')](_0x1063e2,function(_0x1ac4cc){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0x1ac4cc['id'],'OpenchannelQueueId':_0x492816[_0x9d01('0x49')]['id']},'transaction':_0x274805});});})['then'](function(){_0x1063e2[_0x9d01('0x6d')](function(_0x324bb2){socket['emit'](_0x9d01('0x6e'),{'UserId':_0x324bb2['id'],'OpenchannelQueueId':_0x5e2321['id']});});});});});}})[_0x9d01('0x24')](respondWithStatusCode(_0x1d6902,null))[_0x9d01('0x47')](handleError(_0x1d6902,null));};exports[_0x9d01('0x6f')]=function(_0x7a431e,_0x4b6107,_0x42d797){return db[_0x9d01('0x63')][_0x9d01('0x45')]({'where':{'id':_0x7a431e[_0x9d01('0x33')][_0x9d01('0x65')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x9d01('0x66'),'attributes':['id'],'raw':!![]}]})[_0x9d01('0x24')](handleEntityNotFound(_0x4b6107,null))[_0x9d01('0x24')](function(_0x1876be){var _0xe1c4c4=_[_0x9d01('0x2d')](_0x1876be,'id');var _0x271f5f=[];var _0x110ebd=[];var _0x36fd62=squel[_0x9d01('0x70')]();_0x36fd62['field'](_0x9d01('0x71'))['from'](_0x9d01('0x72'),'tq')['join'](_0x9d01('0x73'),'ut',_0x9d01('0x74'))[_0x9d01('0x3d')]('OpenchannelQueueId\x20=\x20?',_0x7a431e[_0x9d01('0x49')]['id']);for(var _0x32d921=0x0;_0x32d921<_0x1876be[_0x9d01('0x39')];_0x32d921+=0x1){let _0xa91a21=_0x1876be[_0x32d921];for(var _0x1ab8b6=0x0;_0x1ab8b6<_0xa91a21[_0x9d01('0x66')][_0x9d01('0x39')];_0x1ab8b6+=0x1){let _0xffa476=_0xa91a21[_0x9d01('0x66')][_0x1ab8b6];var _0x5c82fc=_0x36fd62[_0x9d01('0x75')]();_0x5c82fc['where'](_0x9d01('0x76'),_0xffa476['id']);_0x110ebd[_0x9d01('0x77')](db[_0x9d01('0x6a')]['query'](_0x5c82fc['toString'](),{'type':db[_0x9d01('0x6a')]['QueryTypes'][_0x9d01('0x78')]})[_0x9d01('0x24')](function(_0x448e75){if(_0x448e75[_0x9d01('0x39')]===0x1){return _0xffa476['id'];}else{var _0x523c85=_[_0x9d01('0x79')](_[_0x9d01('0x2d')](_0x448e75,_0x9d01('0x7a')),function(_0x26426c){return _['includes'](_0xe1c4c4,_0x26426c);});if(_0x523c85){return _0xffa476['id'];}}}));}}return BPromise[_0x9d01('0x7b')](_0x110ebd)['then'](function(_0x18fa00){_0x271f5f=_(_0x271f5f)[_0x9d01('0x7c')](_0x18fa00)['compact']()[_0x9d01('0x7d')]();return db[_0x9d01('0x2e')]['find']({'where':{'id':_0x7a431e[_0x9d01('0x49')]['id']}})['then'](function(_0x2dd3eb){return db[_0x9d01('0x6a')][_0x9d01('0x6b')](function(_0x1f39d3){return _0x2dd3eb[_0x9d01('0x6f')](_0x7a431e['query'][_0x9d01('0x65')],{'transaction':_0x1f39d3})['then'](function(){if(!_[_0x9d01('0x7e')](_0x271f5f)){return _0x2dd3eb[_0x9d01('0x7f')](_0x271f5f,{'transaction':_0x1f39d3});}})[_0x9d01('0x24')](function(){_0x271f5f[_0x9d01('0x6d')](function(_0x6473be){socket[_0x9d01('0x80')](_0x9d01('0x81'),{'UserId':_0x6473be,'OpenchannelQueueId':_0x2dd3eb['id']});});});});});});})['then'](respondWithStatusCode(_0x4b6107,null))['catch'](handleError(_0x4b6107,null));};exports[_0x9d01('0x82')]=function(_0x54057b,_0x183d5e,_0x5a58d1){return db['OpenchannelQueue']['find']({'where':{'id':_0x54057b[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x183d5e,null))[_0x9d01('0x24')](function(_0x483491){if(_0x483491){return _0x483491[_0x9d01('0x82')](_0x54057b[_0x9d01('0x4c')][_0x9d01('0x65')],_[_0x9d01('0x83')](_0x54057b[_0x9d01('0x4c')],[_0x9d01('0x65'),'id'])||{})[_0x9d01('0x84')](function(_0x400ce7){for(var _0x374f22=0x0;_0x374f22<_0x54057b['body'][_0x9d01('0x65')]['length'];_0x374f22+=0x1){socket[_0x9d01('0x80')](_0x9d01('0x6e'),{'UserId':Number(_0x54057b[_0x9d01('0x4c')][_0x9d01('0x65')][_0x374f22]),'OpenchannelQueueId':Number(_0x54057b[_0x9d01('0x49')]['id'])});}return _0x400ce7;});}})['then'](respondWithResult(_0x183d5e,null))[_0x9d01('0x47')](handleError(_0x183d5e,null));};exports[_0x9d01('0x7f')]=function(_0x43a780,_0x32438b,_0x7d239c){return db['OpenchannelQueue'][_0x9d01('0x4a')]({'where':{'id':_0x43a780[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x32438b,null))[_0x9d01('0x24')](function(_0x5e0c93){if(_0x5e0c93){return _0x5e0c93['removeAgents'](_0x43a780[_0x9d01('0x33')][_0x9d01('0x65')])['then'](function(){if(_[_0x9d01('0x85')](_0x43a780[_0x9d01('0x33')][_0x9d01('0x65')])){for(var _0x3c78ca=0x0;_0x3c78ca<_0x43a780['query'][_0x9d01('0x65')][_0x9d01('0x39')];_0x3c78ca+=0x1){socket[_0x9d01('0x80')](_0x9d01('0x81'),{'UserId':Number(_0x43a780[_0x9d01('0x33')][_0x9d01('0x65')][_0x3c78ca]),'OpenchannelQueueId':Number(_0x43a780['params']['id'])});}}else{socket[_0x9d01('0x80')]('userOpenchannelQueue:remove',{'UserId':Number(_0x43a780[_0x9d01('0x33')]['ids']),'OpenchannelQueueId':Number(_0x43a780['params']['id'])});}});}})[_0x9d01('0x24')](respondWithStatusCode(_0x32438b,null))[_0x9d01('0x47')](handleError(_0x32438b,null));};exports[_0x9d01('0x86')]=function(_0x3259c8,_0x5a088b,_0xe12b70){var _0x4723f1={};var _0x3f4e22={};var _0x3707e1;var _0x428c17;return db['OpenchannelQueue'][_0x9d01('0x56')]({'where':{'id':_0x3259c8[_0x9d01('0x49')]['id']}})['then'](handleEntityNotFound(_0x5a088b,null))[_0x9d01('0x24')](function(_0x2f78fb){if(_0x2f78fb){_0x3707e1=_0x2f78fb;_0x3f4e22[_0x9d01('0x36')]=_[_0x9d01('0x32')](db['User'][_0x9d01('0x87')]);_0x3f4e22[_0x9d01('0x33')]=_[_0x9d01('0x32')](_0x3259c8[_0x9d01('0x33')]);_0x3f4e22[_0x9d01('0x34')]=_['intersection'](_0x3f4e22[_0x9d01('0x36')],_0x3f4e22[_0x9d01('0x33')]);_0x4723f1[_0x9d01('0x38')]=_[_0x9d01('0x35')](_0x3f4e22[_0x9d01('0x36')],qs['fields'](_0x3259c8['query']['fields']));_0x4723f1['attributes']=_0x4723f1[_0x9d01('0x38')]['length']?_0x4723f1['attributes']:_0x3f4e22['model'];_0x4723f1[_0x9d01('0x3c')]=qs['sort'](_0x3259c8[_0x9d01('0x33')]['sort']);_0x4723f1[_0x9d01('0x3d')]=qs[_0x9d01('0x34')](_[_0x9d01('0x3e')](_0x3259c8[_0x9d01('0x33')],_0x3f4e22[_0x9d01('0x34')]));if(_0x3259c8['query'][_0x9d01('0x3f')]){_0x4723f1[_0x9d01('0x3d')]=_['merge'](_0x4723f1['where'],{'$or':_['map'](_0x4723f1[_0x9d01('0x38')],function(_0x2c7ba1){var _0x35c177={};_0x35c177[_0x2c7ba1]={'$like':'%'+_0x3259c8['query'][_0x9d01('0x3f')]+'%'};return _0x35c177;})});}_0x4723f1=_[_0x9d01('0x40')]({},_0x4723f1,_0x3259c8[_0x9d01('0x42')]);return _0x3707e1[_0x9d01('0x86')](_0x4723f1);}})[_0x9d01('0x24')](function(_0x1a6574){if(_0x1a6574){_0x428c17=_0x1a6574[_0x9d01('0x39')];if(!_0x3259c8[_0x9d01('0x33')][_0x9d01('0x3a')](_0x9d01('0x3b'))){_0x4723f1['limit']=qs['limit'](_0x3259c8[_0x9d01('0x33')]['limit']);_0x4723f1[_0x9d01('0x1b')]=qs[_0x9d01('0x1b')](_0x3259c8[_0x9d01('0x33')][_0x9d01('0x1b')]);}return _0x3707e1[_0x9d01('0x86')](_0x4723f1);}})[_0x9d01('0x24')](function(_0xa34369){if(_0xa34369){return _0xa34369?{'count':_0x428c17,'rows':_0xa34369}:null;}})[_0x9d01('0x24')](respondWithResult(_0x5a088b,null))[_0x9d01('0x47')](handleError(_0x5a088b,null));};
\ No newline at end of file
index 4f0ee33..761ecd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaf2=['events','../../mysqldb','OpenchannelQueue','remove','emit','hasOwnProperty','hook'];(function(_0x8c64d9,_0x45535c){var _0x22b21e=function(_0x3da323){while(--_0x3da323){_0x8c64d9['push'](_0x8c64d9['shift']());}};_0x22b21e(++_0x45535c);}(_0xdaf2,0x13b));var _0x2daf=function(_0x1dbaf7,_0x3d05b3){_0x1dbaf7=_0x1dbaf7-0x0;var _0x593f05=_0xdaf2[_0x1dbaf7];return _0x593f05;};'use strict';var EventEmitter=require(_0x2daf('0x0'));var OpenchannelQueue=require(_0x2daf('0x1'))['db'][_0x2daf('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x2daf('0x3')};function emitEvent(_0x56c60e){return function(_0x147328,_0x3352ee,_0x5e170a){OpenchannelQueueEvents[_0x2daf('0x4')](_0x56c60e+':'+_0x147328['id'],_0x147328);OpenchannelQueueEvents['emit'](_0x56c60e,_0x147328);_0x5e170a(null);};}for(var e in events){if(events[_0x2daf('0x5')](e)){var event=events[e];OpenchannelQueue[_0x2daf('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x127a=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','update'];(function(_0xba42a4,_0x2644a6){var _0x43ab16=function(_0x23aa88){while(--_0x23aa88){_0xba42a4['push'](_0xba42a4['shift']());}};_0x43ab16(++_0x2644a6);}(_0x127a,0x175));var _0xa127=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x127a[_0x424a9a];return _0xa7831c;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0xa127('0x0'))['db']['OpenchannelQueue'];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0xa127('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa127('0x2'),'afterDestroy':_0xa127('0x3')};function emitEvent(_0x5b2dfa){return function(_0x472aa4,_0x424c65,_0x156971){OpenchannelQueueEvents[_0xa127('0x4')](_0x5b2dfa+':'+_0x472aa4['id'],_0x472aa4);OpenchannelQueueEvents['emit'](_0x5b2dfa,_0x472aa4);_0x156971(null);};}for(var e in events){if(events[_0xa127('0x5')](e)){var event=events[e];OpenchannelQueue[_0xa127('0x6')](e,emitEvent(event));}}module[_0xa127('0x7')]=OpenchannelQueueEvents;
\ No newline at end of file
index eda3e29..274f343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x130b=['rimraf','../../config/environment','define','OpenchannelQueue','lodash','util','../../config/logger','bluebird','path'];(function(_0x30fa9d,_0x88c6ee){var _0x5ef4e8=function(_0x4bf428){while(--_0x4bf428){_0x30fa9d['push'](_0x30fa9d['shift']());}};_0x5ef4e8(++_0x88c6ee);}(_0x130b,0xa6));var _0xb130=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x130b[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0xb130('0x0'));var util=require(_0xb130('0x1'));var logger=require(_0xb130('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb130('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb130('0x4'));var rimraf=require(_0xb130('0x5'));var config=require(_0xb130('0x6'));var attributes=require('./openchannelQueue.attributes');module['exports']=function(_0x2aa82e,_0x2a6f2d){return _0x2aa82e[_0xb130('0x7')](_0xb130('0x8'),attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe531=['openchannel_queues','../../config/logger','api','moment','bluebird','path','../../config/environment','exports','define','OpenchannelQueue'];(function(_0x3e20a9,_0x2dcc47){var _0xa7212f=function(_0x11e69a){while(--_0x11e69a){_0x3e20a9['push'](_0x3e20a9['shift']());}};_0xa7212f(++_0x2dcc47);}(_0xe531,0xd3));var _0x1e53=function(_0x2c9985,_0x2975c1){_0x2c9985=_0x2c9985-0x0;var _0x5e1bea=_0xe531[_0x2c9985];return _0x5e1bea;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1e53('0x0'))(_0x1e53('0x1'));var moment=require(_0x1e53('0x2'));var BPromise=require(_0x1e53('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1e53('0x4'));var rimraf=require('rimraf');var config=require(_0x1e53('0x5'));var attributes=require('./openchannelQueue.attributes');module[_0x1e53('0x6')]=function(_0x375e96,_0x15e361){return _0x375e96[_0x1e53('0x7')](_0x1e53('0x8'),attributes,{'tableName':_0x1e53('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa1bca8..91fe4e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7747=['request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','code','error','message','result','findAll','options','raw','where','attributes','limit','include','map','model','GetOpenchannelQueue','OpenchannelQueue','find','ShowOpenchannelQueue','stringify','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./openchannelQueue.socket','request','info','OpenchannelQueue,\x20%s,\x20%s'];(function(_0x98cae9,_0x420089){var _0x56e97b=function(_0x296d7a){while(--_0x296d7a){_0x98cae9['push'](_0x98cae9['shift']());}};_0x56e97b(++_0x420089);}(_0x7747,0x1e4));var _0x7774=function(_0x5cd60f,_0x3a852e){_0x5cd60f=_0x5cd60f-0x0;var _0x51dc86=_0x7747[_0x5cd60f];return _0x51dc86;};'use strict';var _=require(_0x7774('0x0'));var util=require(_0x7774('0x1'));var moment=require(_0x7774('0x2'));var BPromise=require(_0x7774('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7774('0x4'))['db'];var utils=require(_0x7774('0x5'));var logger=require(_0x7774('0x6'))(_0x7774('0x7'));var config=require(_0x7774('0x8'));var jayson=require(_0x7774('0x9'));var client=jayson[_0x7774('0xa')][_0x7774('0xb')]({'port':0x232a});config['redis']=_[_0x7774('0xc')](config[_0x7774('0xd')],{'host':_0x7774('0xe'),'port':0x18eb});var socket=require(_0x7774('0xf'))(new Redis(config[_0x7774('0xd')]));require(_0x7774('0x10'))['register'](socket);function respondWithRpcPromise(_0x231d2a,_0x50166c,_0x5d1090){return new BPromise(function(_0x1c57ac,_0x15e4c5){return client[_0x7774('0x11')](_0x231d2a,_0x5d1090)['then'](function(_0x549ba7){logger[_0x7774('0x12')](_0x7774('0x13'),_0x50166c,_0x7774('0x14'));logger[_0x7774('0x15')](_0x7774('0x16'),_0x50166c,'request\x20sent',JSON['stringify'](_0x549ba7));if(_0x549ba7['error']){if(_0x549ba7['error'][_0x7774('0x17')]===0x1f4){logger[_0x7774('0x18')]('OpenchannelQueue,\x20%s,\x20%s',_0x50166c,_0x549ba7['error'][_0x7774('0x19')]);return _0x15e4c5(_0x549ba7[_0x7774('0x18')][_0x7774('0x19')]);}logger['error'](_0x7774('0x13'),_0x50166c,_0x549ba7[_0x7774('0x18')][_0x7774('0x19')]);return _0x1c57ac(_0x549ba7['error'][_0x7774('0x19')]);}else{logger[_0x7774('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x50166c,_0x7774('0x14'));_0x1c57ac(_0x549ba7[_0x7774('0x1a')][_0x7774('0x19')]);}})['catch'](function(_0x3e7e65){logger[_0x7774('0x18')]('OpenchannelQueue,\x20%s,\x20%s',_0x50166c,_0x3e7e65);_0x15e4c5(_0x3e7e65);});});}exports['GetOpenchannelQueue']=function(_0x1515f8){var _0x3cee2a=this;return new Promise(function(_0x5c200e,_0x41c6ea){return db['OpenchannelQueue'][_0x7774('0x1b')]({'raw':_0x1515f8['options']?_0x1515f8[_0x7774('0x1c')][_0x7774('0x1d')]===undefined?!![]:![]:!![],'where':_0x1515f8[_0x7774('0x1c')]?_0x1515f8[_0x7774('0x1c')][_0x7774('0x1e')]||null:null,'attributes':_0x1515f8[_0x7774('0x1c')]?_0x1515f8[_0x7774('0x1c')][_0x7774('0x1f')]||null:null,'limit':_0x1515f8['options']?_0x1515f8[_0x7774('0x1c')][_0x7774('0x20')]||null:null,'include':_0x1515f8[_0x7774('0x1c')]?_0x1515f8[_0x7774('0x1c')]['include']?_['map'](_0x1515f8[_0x7774('0x1c')][_0x7774('0x21')],function(_0x4dd7f5){return{'model':db[_0x4dd7f5['model']],'as':_0x4dd7f5['as'],'attributes':_0x4dd7f5[_0x7774('0x1f')],'include':_0x4dd7f5['include']?_[_0x7774('0x22')](_0x4dd7f5[_0x7774('0x21')],function(_0x21885e){return{'model':db[_0x21885e[_0x7774('0x23')]],'as':_0x21885e['as'],'attributes':_0x21885e[_0x7774('0x1f')],'include':_0x21885e['include']?_[_0x7774('0x22')](_0x21885e[_0x7774('0x21')],function(_0x2ab05f){return{'model':db[_0x2ab05f[_0x7774('0x23')]],'as':_0x2ab05f['as'],'attributes':_0x2ab05f['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x445b5e){logger[_0x7774('0x12')](_0x7774('0x24'),_0x1515f8);logger[_0x7774('0x15')](_0x7774('0x24'),_0x1515f8,JSON['stringify'](_0x445b5e));_0x5c200e(_0x445b5e);})['catch'](function(_0x136424){logger[_0x7774('0x18')](_0x7774('0x24'),_0x136424[_0x7774('0x19')],_0x1515f8);_0x41c6ea(_0x3cee2a[_0x7774('0x18')](0x1f4,_0x136424[_0x7774('0x19')]));});});};exports['ShowOpenchannelQueue']=function(_0x624be1){var _0x2635a0=this;return new Promise(function(_0x55eb95,_0x193f06){return db[_0x7774('0x25')][_0x7774('0x26')]({'raw':_0x624be1[_0x7774('0x1c')]?_0x624be1[_0x7774('0x1c')][_0x7774('0x1d')]===undefined?!![]:![]:!![],'where':_0x624be1[_0x7774('0x1c')]?_0x624be1[_0x7774('0x1c')][_0x7774('0x1e')]||null:null,'attributes':_0x624be1[_0x7774('0x1c')]?_0x624be1[_0x7774('0x1c')]['attributes']||null:null,'include':_0x624be1[_0x7774('0x1c')]?_0x624be1[_0x7774('0x1c')][_0x7774('0x21')]?_[_0x7774('0x22')](_0x624be1['options'][_0x7774('0x21')],function(_0x5a0eab){return{'model':db[_0x5a0eab[_0x7774('0x23')]],'as':_0x5a0eab['as'],'attributes':_0x5a0eab[_0x7774('0x1f')],'include':_0x5a0eab[_0x7774('0x21')]?_[_0x7774('0x22')](_0x5a0eab[_0x7774('0x21')],function(_0xb8d596){return{'model':db[_0xb8d596['model']],'as':_0xb8d596['as'],'attributes':_0xb8d596[_0x7774('0x1f')],'include':_0xb8d596[_0x7774('0x21')]?_[_0x7774('0x22')](_0xb8d596[_0x7774('0x21')],function(_0x5058e0){return{'model':db[_0x5058e0[_0x7774('0x23')]],'as':_0x5058e0['as'],'attributes':_0x5058e0[_0x7774('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x189881){logger[_0x7774('0x12')]('ShowOpenchannelQueue',_0x624be1);logger[_0x7774('0x15')](_0x7774('0x27'),_0x624be1,JSON[_0x7774('0x28')](_0x189881));_0x55eb95(_0x189881);})[_0x7774('0x29')](function(_0x327d08){logger[_0x7774('0x18')](_0x7774('0x27'),_0x327d08['message'],_0x624be1);_0x193f06(_0x2635a0[_0x7774('0x18')](0x1f4,_0x327d08[_0x7774('0x19')]));});});};
\ No newline at end of file
+var _0x0bac=['request\x20sent','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','OpenchannelQueue,\x20%s,\x20%s','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','attributes','include','map','model','stringify','ShowOpenchannelQueue','find','where','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info'];(function(_0x9f27e0,_0x457a5b){var _0x359e03=function(_0x51c460){while(--_0x51c460){_0x9f27e0['push'](_0x9f27e0['shift']());}};_0x359e03(++_0x457a5b);}(_0x0bac,0x97));var _0xc0ba=function(_0x4c8be9,_0x39e389){_0x4c8be9=_0x4c8be9-0x0;var _0x3f94f0=_0x0bac[_0x4c8be9];return _0x3f94f0;};'use strict';var _=require(_0xc0ba('0x0'));var util=require(_0xc0ba('0x1'));var moment=require(_0xc0ba('0x2'));var BPromise=require(_0xc0ba('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc0ba('0x4'));var db=require(_0xc0ba('0x5'))['db'];var utils=require(_0xc0ba('0x6'));var logger=require(_0xc0ba('0x7'))(_0xc0ba('0x8'));var config=require(_0xc0ba('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc0ba('0xa')][_0xc0ba('0xb')]({'port':0x232a});config[_0xc0ba('0xc')]=_[_0xc0ba('0xd')](config[_0xc0ba('0xc')],{'host':_0xc0ba('0xe'),'port':0x18eb});var socket=require(_0xc0ba('0xf'))(new Redis(config['redis']));require(_0xc0ba('0x10'))[_0xc0ba('0x11')](socket);function respondWithRpcPromise(_0x101094,_0x32133b,_0x1cd114){return new BPromise(function(_0x52bf97,_0x2fe095){return client[_0xc0ba('0x12')](_0x101094,_0x1cd114)[_0xc0ba('0x13')](function(_0x3ef369){logger[_0xc0ba('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x32133b,_0xc0ba('0x15'));logger[_0xc0ba('0x16')](_0xc0ba('0x17'),_0x32133b,_0xc0ba('0x15'),JSON['stringify'](_0x3ef369));if(_0x3ef369[_0xc0ba('0x18')]){if(_0x3ef369[_0xc0ba('0x18')][_0xc0ba('0x19')]===0x1f4){logger[_0xc0ba('0x18')](_0xc0ba('0x1a'),_0x32133b,_0x3ef369[_0xc0ba('0x18')][_0xc0ba('0x1b')]);return _0x2fe095(_0x3ef369[_0xc0ba('0x18')]['message']);}logger[_0xc0ba('0x18')](_0xc0ba('0x1a'),_0x32133b,_0x3ef369[_0xc0ba('0x18')][_0xc0ba('0x1b')]);return _0x52bf97(_0x3ef369['error'][_0xc0ba('0x1b')]);}else{logger[_0xc0ba('0x14')]('OpenchannelQueue,\x20%s,\x20%s',_0x32133b,_0xc0ba('0x15'));_0x52bf97(_0x3ef369[_0xc0ba('0x1c')][_0xc0ba('0x1b')]);}})[_0xc0ba('0x1d')](function(_0x5730ed){logger['error'](_0xc0ba('0x1a'),_0x32133b,_0x5730ed);_0x2fe095(_0x5730ed);});});}exports[_0xc0ba('0x1e')]=function(_0x25244d){var _0x4ddc7e=this;return new Promise(function(_0x6e1d66,_0x53f44f){return db[_0xc0ba('0x1f')][_0xc0ba('0x20')]({'raw':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')][_0xc0ba('0x22')]===undefined?!![]:![]:!![],'where':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')]['where']||null:null,'attributes':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')][_0xc0ba('0x23')]||null:null,'limit':_0x25244d['options']?_0x25244d[_0xc0ba('0x21')]['limit']||null:null,'include':_0x25244d[_0xc0ba('0x21')]?_0x25244d[_0xc0ba('0x21')][_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x25244d[_0xc0ba('0x21')]['include'],function(_0x1a957d){return{'model':db[_0x1a957d[_0xc0ba('0x26')]],'as':_0x1a957d['as'],'attributes':_0x1a957d[_0xc0ba('0x23')],'include':_0x1a957d['include']?_['map'](_0x1a957d[_0xc0ba('0x24')],function(_0x535c83){return{'model':db[_0x535c83['model']],'as':_0x535c83['as'],'attributes':_0x535c83['attributes'],'include':_0x535c83[_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x535c83[_0xc0ba('0x24')],function(_0x2e1162){return{'model':db[_0x2e1162[_0xc0ba('0x26')]],'as':_0x2e1162['as'],'attributes':_0x2e1162[_0xc0ba('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x31638b){logger['info'](_0xc0ba('0x1e'),_0x25244d);logger[_0xc0ba('0x16')]('GetOpenchannelQueue',_0x25244d,JSON[_0xc0ba('0x27')](_0x31638b));_0x6e1d66(_0x31638b);})['catch'](function(_0x4fb3af){logger[_0xc0ba('0x18')](_0xc0ba('0x1e'),_0x4fb3af[_0xc0ba('0x1b')],_0x25244d);_0x53f44f(_0x4ddc7e[_0xc0ba('0x18')](0x1f4,_0x4fb3af[_0xc0ba('0x1b')]));});});};exports[_0xc0ba('0x28')]=function(_0x4fa2c4){var _0x864804=this;return new Promise(function(_0x3ec7b6,_0x20c43a){return db[_0xc0ba('0x1f')][_0xc0ba('0x29')]({'raw':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x22')]===undefined?!![]:![]:!![],'where':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x2a')]||null:null,'attributes':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')]['attributes']||null:null,'include':_0x4fa2c4[_0xc0ba('0x21')]?_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x4fa2c4[_0xc0ba('0x21')][_0xc0ba('0x24')],function(_0x10e8f8){return{'model':db[_0x10e8f8[_0xc0ba('0x26')]],'as':_0x10e8f8['as'],'attributes':_0x10e8f8[_0xc0ba('0x23')],'include':_0x10e8f8[_0xc0ba('0x24')]?_[_0xc0ba('0x25')](_0x10e8f8[_0xc0ba('0x24')],function(_0xc7f393){return{'model':db[_0xc7f393['model']],'as':_0xc7f393['as'],'attributes':_0xc7f393[_0xc0ba('0x23')],'include':_0xc7f393['include']?_[_0xc0ba('0x25')](_0xc7f393[_0xc0ba('0x24')],function(_0x2abd1a){return{'model':db[_0x2abd1a[_0xc0ba('0x26')]],'as':_0x2abd1a['as'],'attributes':_0x2abd1a[_0xc0ba('0x23')]};}):[]};}):[]};}):[]:[]})[_0xc0ba('0x13')](function(_0xb4265a){logger[_0xc0ba('0x14')]('ShowOpenchannelQueue',_0x4fa2c4);logger[_0xc0ba('0x16')]('ShowOpenchannelQueue',_0x4fa2c4,JSON['stringify'](_0xb4265a));_0x3ec7b6(_0xb4265a);})[_0xc0ba('0x1d')](function(_0x165cf2){logger['error'](_0xc0ba('0x28'),_0x165cf2['message'],_0x4fa2c4);_0x20c43a(_0x864804[_0xc0ba('0x18')](0x1f4,_0x165cf2[_0xc0ba('0x1b')]));});});};
\ No newline at end of file
index 452e823..81a5ba5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e5e=['save','removeListener','register','openchannelQueue:','./openchannelQueue.events'];(function(_0x3c2261,_0xa752ce){var _0x45fd72=function(_0x2301c){while(--_0x2301c){_0x3c2261['push'](_0x3c2261['shift']());}};_0x45fd72(++_0xa752ce);}(_0x9e5e,0x9f));var _0xe9e5=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x9e5e[_0x29d94e];return _0x106237;};'use strict';var OpenchannelQueueEvents=require(_0xe9e5('0x0'));var events=[_0xe9e5('0x1'),'remove','update'];function createListener(_0x221a7f,_0x1525c6){return function(_0x43c299){_0x1525c6['emit'](_0x221a7f,_0x43c299);};}function removeListener(_0x4521b9,_0x3e246c){return function(){OpenchannelQueueEvents[_0xe9e5('0x2')](_0x4521b9,_0x3e246c);};}exports[_0xe9e5('0x3')]=function(_0x5d9983){for(var _0x30a127=0x0,_0x3b0164=events['length'];_0x30a127<_0x3b0164;_0x30a127++){var _0x2a3b21=events[_0x30a127];var _0x2a1b54=createListener(_0xe9e5('0x4')+_0x2a3b21,_0x5d9983);OpenchannelQueueEvents['on'](_0x2a3b21,_0x2a1b54);}};
\ No newline at end of file
+var _0x94db=['./openchannelQueue.events','save','remove','update','removeListener','register','length','openchannelQueue:'];(function(_0x5e6cea,_0x24b02a){var _0x55a315=function(_0x395b80){while(--_0x395b80){_0x5e6cea['push'](_0x5e6cea['shift']());}};_0x55a315(++_0x24b02a);}(_0x94db,0x1b8));var _0xb94d=function(_0x5a137e,_0x57dac1){_0x5a137e=_0x5a137e-0x0;var _0x202ff1=_0x94db[_0x5a137e];return _0x202ff1;};'use strict';var OpenchannelQueueEvents=require(_0xb94d('0x0'));var events=[_0xb94d('0x1'),_0xb94d('0x2'),_0xb94d('0x3')];function createListener(_0x15edc2,_0xdde8a9){return function(_0xe0c10d){_0xdde8a9['emit'](_0x15edc2,_0xe0c10d);};}function removeListener(_0x2c06da,_0x1d4f74){return function(){OpenchannelQueueEvents[_0xb94d('0x4')](_0x2c06da,_0x1d4f74);};}exports[_0xb94d('0x5')]=function(_0x207b8d){for(var _0x34dcfd=0x0,_0x5509d3=events[_0xb94d('0x6')];_0x34dcfd<_0x5509d3;_0x34dcfd++){var _0x2d354a=events[_0x34dcfd];var _0x365874=createListener(_0xb94d('0x7')+_0x2d354a,_0x207b8d);OpenchannelQueueEvents['on'](_0x2d354a,_0x365874);}};
\ No newline at end of file
index cf30fef..fadad05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7fa=['/describe','isAuthenticated','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./openchannelQueueReport.controller','get','index'];(function(_0x11a4ef,_0x5790ce){var _0x311fcb=function(_0x4629d1){while(--_0x4629d1){_0x11a4ef['push'](_0x11a4ef['shift']());}};_0x311fcb(++_0x5790ce);}(_0xf7fa,0x1ee));var _0xaf7f=function(_0x4c86b2,_0x19c2c6){_0x4c86b2=_0x4c86b2-0x0;var _0xc71974=_0xf7fa[_0x4c86b2];return _0xc71974;};'use strict';var multer=require(_0xaf7f('0x0'));var util=require(_0xaf7f('0x1'));var path=require(_0xaf7f('0x2'));var timeout=require(_0xaf7f('0x3'));var express=require('express');var router=express[_0xaf7f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xaf7f('0x5'));var interaction=require(_0xaf7f('0x6'));var config=require('../../config/environment');var controller=require(_0xaf7f('0x7'));router[_0xaf7f('0x8')]('/',auth['isAuthenticated'](),controller[_0xaf7f('0x9')]);router[_0xaf7f('0x8')](_0xaf7f('0xa'),auth[_0xaf7f('0xb')](),controller[_0xaf7f('0xc')]);router[_0xaf7f('0x8')](_0xaf7f('0xd'),auth[_0xaf7f('0xb')](),controller[_0xaf7f('0xe')]);router[_0xaf7f('0xf')]('/',auth['isAuthenticated'](),controller[_0xaf7f('0x10')]);router[_0xaf7f('0x11')](_0xaf7f('0xd'),auth[_0xaf7f('0xb')](),controller['update']);router[_0xaf7f('0x12')]('/:id',auth[_0xaf7f('0xb')](),controller[_0xaf7f('0x13')]);module[_0xaf7f('0x14')]=router;
\ No newline at end of file
+var _0x35dc=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','delete','destroy','path','connect-timeout','express'];(function(_0x4e8d62,_0x124a4c){var _0x33f4b2=function(_0x2896e0){while(--_0x2896e0){_0x4e8d62['push'](_0x4e8d62['shift']());}};_0x33f4b2(++_0x124a4c);}(_0x35dc,0xce));var _0xc35d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x35dc[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc35d('0x0'));var timeout=require(_0xc35d('0x1'));var express=require(_0xc35d('0x2'));var router=express[_0xc35d('0x3')]();var fs_extra=require(_0xc35d('0x4'));var auth=require(_0xc35d('0x5'));var interaction=require(_0xc35d('0x6'));var config=require(_0xc35d('0x7'));var controller=require(_0xc35d('0x8'));router[_0xc35d('0x9')]('/',auth[_0xc35d('0xa')](),controller['index']);router[_0xc35d('0x9')](_0xc35d('0xb'),auth[_0xc35d('0xa')](),controller[_0xc35d('0xc')]);router[_0xc35d('0x9')](_0xc35d('0xd'),auth['isAuthenticated'](),controller[_0xc35d('0xe')]);router[_0xc35d('0xf')]('/',auth['isAuthenticated'](),controller[_0xc35d('0x10')]);router['put'](_0xc35d('0xd'),auth['isAuthenticated'](),controller['update']);router[_0xc35d('0x11')](_0xc35d('0xd'),auth[_0xc35d('0xa')](),controller[_0xc35d('0x12')]);module['exports']=router;
\ No newline at end of file
index 3723870..679dafd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x369e=['moment','sequelize','STRING','DATE'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x369e,0x174));var _0xe369=function(_0x8d6c19,_0x513845){_0x8d6c19=_0x8d6c19-0x0;var _0x10ad87=_0x369e[_0x8d6c19];return _0x10ad87;};'use strict';var moment=require(_0xe369('0x0'));var Sequelize=require(_0xe369('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xe369('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe369('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xe369('0x3')]},'exitAt':{'type':Sequelize[_0xe369('0x3')]},'reason':{'type':Sequelize[_0xe369('0x2')]}};
\ No newline at end of file
+var _0x3b68=['DATE','moment','exports','STRING'];(function(_0x45ec0b,_0x260c5d){var _0x99a3d8=function(_0x524391){while(--_0x524391){_0x45ec0b['push'](_0x45ec0b['shift']());}};_0x99a3d8(++_0x260c5d);}(_0x3b68,0x1a5));var _0x83b6=function(_0x2d010a,_0x5c2013){_0x2d010a=_0x2d010a-0x0;var _0x15d5d2=_0x3b68[_0x2d010a];return _0x15d5d2;};'use strict';var moment=require(_0x83b6('0x0'));var Sequelize=require('sequelize');module[_0x83b6('0x1')]={'uniqueid':{'type':Sequelize[_0x83b6('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x83b6('0x2')]},'joinAt':{'type':Sequelize[_0x83b6('0x3')]},'leaveAt':{'type':Sequelize[_0x83b6('0x3')]},'acceptAt':{'type':Sequelize[_0x83b6('0x3')]},'exitAt':{'type':Sequelize[_0x83b6('0x3')]},'reason':{'type':Sequelize[_0x83b6('0x2')]}};
\ No newline at end of file
index 1f4b445..06c29fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35a2=['fast-json-patch','request-promise','bluebird','sox','ejs','fs-extra','jsforce','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','status','end','sendStatus','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf'];(function(_0x42124d,_0x12ac9e){var _0x5a7b6d=function(_0x53cbbd){while(--_0x53cbbd){_0x42124d['push'](_0x42124d['shift']());}};_0x5a7b6d(++_0x12ac9e);}(_0x35a2,0x10a));var _0x235a=function(_0xf504e3,_0x51c8b4){_0xf504e3=_0xf504e3-0x0;var _0x49943d=_0x35a2[_0xf504e3];return _0x49943d;};'use strict';var emlformat=require(_0x235a('0x0'));var rimraf=require(_0x235a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x235a('0x2'));var rp=require(_0x235a('0x3'));var moment=require('moment');var BPromise=require(_0x235a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x235a('0x5'));var csv=require('to-csv');var ejs=require(_0x235a('0x6'));var fs=require('fs');var fs_extra=require(_0x235a('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x235a('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x235a('0x9'));var querystring=require(_0x235a('0xa'));var Papa=require(_0x235a('0xb'));var Redis=require(_0x235a('0xc'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x235a('0xd'));var logger=require(_0x235a('0xe'))('api');var utils=require('../../config/utils');var config=require(_0x235a('0xf'));var licenseUtil=require('../../config/license/util');var db=require(_0x235a('0x10'))['db'];function respondWithStatusCode(_0x1e860f,_0x238737){_0x238737=_0x238737||0xcc;return function(_0x5c4b74){if(_0x5c4b74){return _0x1e860f['sendStatus'](_0x238737);}return _0x1e860f['status'](_0x238737)['end']();};}function respondWithResult(_0x511650,_0x46a85c){_0x46a85c=_0x46a85c||0xc8;return function(_0x2c71c3){if(_0x2c71c3){return _0x511650['status'](_0x46a85c)[_0x235a('0x11')](_0x2c71c3);}};}function respondWithFilteredResult(_0x25ab15,_0x5f2c0f){return function(_0x3b7cf1){if(_0x3b7cf1){var _0x449e30=typeof _0x5f2c0f[_0x235a('0x12')]===_0x235a('0x13')&&typeof _0x5f2c0f[_0x235a('0x14')]===_0x235a('0x13');var _0x4caa4c=_0x3b7cf1[_0x235a('0x15')];var _0x47b2ad=_0x449e30?0x0:_0x5f2c0f[_0x235a('0x12')];var _0x2cd36b=_0x449e30?_0x3b7cf1[_0x235a('0x15')]:_0x5f2c0f[_0x235a('0x12')]+_0x5f2c0f[_0x235a('0x14')];var _0x23bc3d;if(_0x2cd36b>=_0x4caa4c){_0x2cd36b=_0x4caa4c;_0x23bc3d=0xc8;}else{_0x23bc3d=0xce;}_0x25ab15['status'](_0x23bc3d);return _0x25ab15['set'](_0x235a('0x16'),_0x47b2ad+'-'+_0x2cd36b+'/'+_0x4caa4c)[_0x235a('0x11')](_0x3b7cf1);}return null;};}function patchUpdates(_0x71cb80){return function(_0x3e02d3){try{jsonpatch[_0x235a('0x17')](_0x3e02d3,_0x71cb80,!![]);}catch(_0x3dced0){return BPromise[_0x235a('0x18')](_0x3dced0);}return _0x3e02d3['save']();};}function saveUpdates(_0x238feb,_0x474bbe){return function(_0x269bd5){if(_0x269bd5){return _0x269bd5[_0x235a('0x19')](_0x238feb)[_0x235a('0x1a')](function(_0x3e3a44){return _0x3e3a44;});}return null;};}function removeEntity(_0x2a94a9,_0x5c88e4){return function(_0x44214e){if(_0x44214e){return _0x44214e[_0x235a('0x1b')]()[_0x235a('0x1a')](function(){_0x2a94a9[_0x235a('0x1c')](0xcc)[_0x235a('0x1d')]();});}};}function handleEntityNotFound(_0x23e2b0,_0x540ce7){return function(_0x33c490){if(!_0x33c490){_0x23e2b0[_0x235a('0x1e')](0x194);}return _0x33c490;};}function handleError(_0x4f1a93,_0x1d8cd1){_0x1d8cd1=_0x1d8cd1||0x1f4;return function(_0x552cd3){logger['error'](_0x552cd3[_0x235a('0x1f')]);if(_0x552cd3['name']){delete _0x552cd3[_0x235a('0x20')];}_0x4f1a93['status'](_0x1d8cd1)[_0x235a('0x21')](_0x552cd3);};}exports[_0x235a('0x22')]=function(_0x120427,_0x5796b0){var _0x13c7b0={},_0x59e95c={},_0x394311={'count':0x0,'rows':[]};var _0x27b88a=_[_0x235a('0x23')](db[_0x235a('0x24')][_0x235a('0x25')],function(_0x2d644e){return{'name':_0x2d644e['fieldName'],'type':_0x2d644e[_0x235a('0x26')]['key']};});_0x59e95c[_0x235a('0x27')]=_['map'](_0x27b88a,_0x235a('0x20'));_0x59e95c[_0x235a('0x28')]=_[_0x235a('0x29')](_0x120427[_0x235a('0x28')]);_0x59e95c[_0x235a('0x2a')]=_['intersection'](_0x59e95c[_0x235a('0x27')],_0x59e95c[_0x235a('0x28')]);_0x13c7b0[_0x235a('0x2b')]=_[_0x235a('0x2c')](_0x59e95c['model'],qs[_0x235a('0x2d')](_0x120427['query'][_0x235a('0x2d')]));_0x13c7b0[_0x235a('0x2b')]=_0x13c7b0[_0x235a('0x2b')][_0x235a('0x2e')]?_0x13c7b0['attributes']:_0x59e95c['model'];if(!_0x120427['query'][_0x235a('0x2f')](_0x235a('0x30'))){_0x13c7b0[_0x235a('0x14')]=qs[_0x235a('0x14')](_0x120427[_0x235a('0x28')]['limit']);_0x13c7b0[_0x235a('0x12')]=qs[_0x235a('0x12')](_0x120427[_0x235a('0x28')]['offset']);}_0x13c7b0['order']=qs[_0x235a('0x31')](_0x120427[_0x235a('0x28')][_0x235a('0x31')]);_0x13c7b0[_0x235a('0x32')]=qs[_0x235a('0x2a')](_[_0x235a('0x33')](_0x120427['query'],_0x59e95c[_0x235a('0x2a')]),_0x27b88a);if(_0x120427['query'][_0x235a('0x34')]){_0x13c7b0[_0x235a('0x32')]=_[_0x235a('0x35')](_0x13c7b0[_0x235a('0x32')],{'$or':_[_0x235a('0x23')](_0x27b88a,function(_0x50bd64){if(_0x50bd64[_0x235a('0x26')]!==_0x235a('0x36')){var _0x5a3ed3={};_0x5a3ed3[_0x50bd64[_0x235a('0x20')]]={'$like':'%'+_0x120427[_0x235a('0x28')][_0x235a('0x34')]+'%'};return _0x5a3ed3;}})});}_0x13c7b0=_[_0x235a('0x35')]({},_0x13c7b0,_0x120427[_0x235a('0x37')]);var _0x37b2e7={'where':_0x13c7b0[_0x235a('0x32')]};return db[_0x235a('0x24')][_0x235a('0x15')](_0x37b2e7)[_0x235a('0x1a')](function(_0xf01d01){_0x394311['count']=_0xf01d01;if(_0x120427[_0x235a('0x28')][_0x235a('0x38')]){_0x13c7b0[_0x235a('0x39')]=[{'all':!![]}];}return db[_0x235a('0x24')][_0x235a('0x3a')](_0x13c7b0);})[_0x235a('0x1a')](function(_0x2c5da7){_0x394311[_0x235a('0x3b')]=_0x2c5da7;return _0x394311;})[_0x235a('0x1a')](respondWithFilteredResult(_0x5796b0,_0x13c7b0))[_0x235a('0x3c')](handleError(_0x5796b0,null));};exports[_0x235a('0x3d')]=function(_0x1715a3,_0x2b5e0d){var _0x1b4375={'raw':!![],'where':{'id':_0x1715a3[_0x235a('0x3e')]['id']}},_0x10811d={};_0x10811d[_0x235a('0x27')]=_[_0x235a('0x29')](db['OpenchannelQueueReport'][_0x235a('0x25')]);_0x10811d['query']=_[_0x235a('0x29')](_0x1715a3['query']);_0x10811d[_0x235a('0x2a')]=_['intersection'](_0x10811d[_0x235a('0x27')],_0x10811d[_0x235a('0x28')]);_0x1b4375[_0x235a('0x2b')]=_[_0x235a('0x2c')](_0x10811d[_0x235a('0x27')],qs[_0x235a('0x2d')](_0x1715a3[_0x235a('0x28')][_0x235a('0x2d')]));_0x1b4375['attributes']=_0x1b4375[_0x235a('0x2b')][_0x235a('0x2e')]?_0x1b4375[_0x235a('0x2b')]:_0x10811d[_0x235a('0x27')];if(_0x1715a3[_0x235a('0x28')][_0x235a('0x38')]){_0x1b4375[_0x235a('0x39')]=[{'all':!![]}];}_0x1b4375=_[_0x235a('0x35')]({},_0x1b4375,_0x1715a3[_0x235a('0x37')]);return db[_0x235a('0x24')][_0x235a('0x3f')](_0x1b4375)[_0x235a('0x1a')](handleEntityNotFound(_0x2b5e0d,null))[_0x235a('0x1a')](respondWithResult(_0x2b5e0d,null))[_0x235a('0x3c')](handleError(_0x2b5e0d,null));};exports['create']=function(_0x209c35,_0x12247c){return db[_0x235a('0x24')][_0x235a('0x40')](_0x209c35[_0x235a('0x41')],{})[_0x235a('0x1a')](respondWithResult(_0x12247c,0xc9))[_0x235a('0x3c')](handleError(_0x12247c,null));};exports['update']=function(_0x3a4c52,_0xb16446){if(_0x3a4c52[_0x235a('0x41')]['id']){delete _0x3a4c52[_0x235a('0x41')]['id'];}return db['OpenchannelQueueReport'][_0x235a('0x3f')]({'where':{'id':_0x3a4c52[_0x235a('0x3e')]['id']}})['then'](handleEntityNotFound(_0xb16446,null))[_0x235a('0x1a')](saveUpdates(_0x3a4c52[_0x235a('0x41')],null))[_0x235a('0x1a')](respondWithResult(_0xb16446,null))[_0x235a('0x3c')](handleError(_0xb16446,null));};exports['destroy']=function(_0x14cc67,_0x44f344){return db[_0x235a('0x24')]['find']({'where':{'id':_0x14cc67[_0x235a('0x3e')]['id']}})['then'](handleEntityNotFound(_0x44f344,null))[_0x235a('0x1a')](removeEntity(_0x44f344,null))['catch'](handleError(_0x44f344,null));};exports[_0x235a('0x42')]=function(_0x5d7d4f,_0x20064c){return db[_0x235a('0x24')][_0x235a('0x42')]()[_0x235a('0x1a')](respondWithResult(_0x20064c,null))[_0x235a('0x3c')](handleError(_0x20064c,null));};
\ No newline at end of file
+var _0x9a97=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelQueueReport','rawAttributes','fieldName','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','create','body','find','params','describe','eml-format','rimraf','zip-dir','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x15c591,_0x5a6f81){var _0x44a957=function(_0x4eb340){while(--_0x4eb340){_0x15c591['push'](_0x15c591['shift']());}};_0x44a957(++_0x5a6f81);}(_0x9a97,0xd1));var _0x79a9=function(_0x7d582c,_0x3c47e7){_0x7d582c=_0x7d582c-0x0;var _0xcf92be=_0x9a97[_0x7d582c];return _0xcf92be;};'use strict';var emlformat=require(_0x79a9('0x0'));var rimraf=require(_0x79a9('0x1'));var zipdir=require(_0x79a9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x79a9('0x3'));var util=require('util');var path=require(_0x79a9('0x4'));var sox=require(_0x79a9('0x5'));var csv=require('to-csv');var ejs=require(_0x79a9('0x6'));var fs=require('fs');var fs_extra=require(_0x79a9('0x7'));var _=require(_0x79a9('0x8'));var squel=require(_0x79a9('0x9'));var crypto=require(_0x79a9('0xa'));var jsforce=require(_0x79a9('0xb'));var deskjs=require(_0x79a9('0xc'));var toCsv=require(_0x79a9('0xd'));var querystring=require(_0x79a9('0xe'));var Papa=require(_0x79a9('0xf'));var Redis=require(_0x79a9('0x10'));var authService=require(_0x79a9('0x11'));var qs=require(_0x79a9('0x12'));var as=require(_0x79a9('0x13'));var hardwareService=require(_0x79a9('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x79a9('0x15'));var licenseUtil=require(_0x79a9('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13c86e,_0x3585e2){_0x3585e2=_0x3585e2||0xcc;return function(_0x402db2){if(_0x402db2){return _0x13c86e[_0x79a9('0x17')](_0x3585e2);}return _0x13c86e[_0x79a9('0x18')](_0x3585e2)[_0x79a9('0x19')]();};}function respondWithResult(_0x2d54e0,_0x59a582){_0x59a582=_0x59a582||0xc8;return function(_0x5c8ea4){if(_0x5c8ea4){return _0x2d54e0['status'](_0x59a582)[_0x79a9('0x1a')](_0x5c8ea4);}};}function respondWithFilteredResult(_0x121d67,_0x570dc7){return function(_0x497bb5){if(_0x497bb5){var _0x1c9daf=typeof _0x570dc7[_0x79a9('0x1b')]===_0x79a9('0x1c')&&typeof _0x570dc7[_0x79a9('0x1d')]===_0x79a9('0x1c');var _0x22a2f8=_0x497bb5['count'];var _0xbf6909=_0x1c9daf?0x0:_0x570dc7[_0x79a9('0x1b')];var _0x4ed22a=_0x1c9daf?_0x497bb5[_0x79a9('0x1e')]:_0x570dc7[_0x79a9('0x1b')]+_0x570dc7[_0x79a9('0x1d')];var _0x338a3b;if(_0x4ed22a>=_0x22a2f8){_0x4ed22a=_0x22a2f8;_0x338a3b=0xc8;}else{_0x338a3b=0xce;}_0x121d67[_0x79a9('0x18')](_0x338a3b);return _0x121d67['set'](_0x79a9('0x1f'),_0xbf6909+'-'+_0x4ed22a+'/'+_0x22a2f8)[_0x79a9('0x1a')](_0x497bb5);}return null;};}function patchUpdates(_0x39cd22){return function(_0x3a24ea){try{jsonpatch[_0x79a9('0x20')](_0x3a24ea,_0x39cd22,!![]);}catch(_0x362f26){return BPromise[_0x79a9('0x21')](_0x362f26);}return _0x3a24ea[_0x79a9('0x22')]();};}function saveUpdates(_0x167c4f,_0x4ff322){return function(_0x4551e4){if(_0x4551e4){return _0x4551e4[_0x79a9('0x23')](_0x167c4f)[_0x79a9('0x24')](function(_0x4fce81){return _0x4fce81;});}return null;};}function removeEntity(_0x408ec5,_0x172451){return function(_0x589f36){if(_0x589f36){return _0x589f36[_0x79a9('0x25')]()[_0x79a9('0x24')](function(){_0x408ec5[_0x79a9('0x18')](0xcc)[_0x79a9('0x19')]();});}};}function handleEntityNotFound(_0x46d036,_0x50a5e2){return function(_0x31054e){if(!_0x31054e){_0x46d036[_0x79a9('0x17')](0x194);}return _0x31054e;};}function handleError(_0x27a429,_0x811b75){_0x811b75=_0x811b75||0x1f4;return function(_0x3c6847){logger[_0x79a9('0x26')](_0x3c6847[_0x79a9('0x27')]);if(_0x3c6847[_0x79a9('0x28')]){delete _0x3c6847[_0x79a9('0x28')];}_0x27a429[_0x79a9('0x18')](_0x811b75)[_0x79a9('0x29')](_0x3c6847);};}exports['index']=function(_0x4af2ca,_0x45a017){var _0x47b5e6={},_0x3872e1={},_0x21f474={'count':0x0,'rows':[]};var _0x52397f=_[_0x79a9('0x2a')](db[_0x79a9('0x2b')][_0x79a9('0x2c')],function(_0x1b66a1){return{'name':_0x1b66a1[_0x79a9('0x2d')],'type':_0x1b66a1[_0x79a9('0x2e')]['key']};});_0x3872e1[_0x79a9('0x2f')]=_[_0x79a9('0x2a')](_0x52397f,_0x79a9('0x28'));_0x3872e1['query']=_[_0x79a9('0x30')](_0x4af2ca[_0x79a9('0x31')]);_0x3872e1[_0x79a9('0x32')]=_['intersection'](_0x3872e1[_0x79a9('0x2f')],_0x3872e1[_0x79a9('0x31')]);_0x47b5e6['attributes']=_[_0x79a9('0x33')](_0x3872e1[_0x79a9('0x2f')],qs[_0x79a9('0x34')](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x34')]));_0x47b5e6[_0x79a9('0x35')]=_0x47b5e6[_0x79a9('0x35')]['length']?_0x47b5e6[_0x79a9('0x35')]:_0x3872e1['model'];if(!_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x36')](_0x79a9('0x37'))){_0x47b5e6[_0x79a9('0x1d')]=qs[_0x79a9('0x1d')](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x1d')]);_0x47b5e6[_0x79a9('0x1b')]=qs['offset'](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x1b')]);}_0x47b5e6['order']=qs[_0x79a9('0x38')](_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x38')]);_0x47b5e6[_0x79a9('0x39')]=qs[_0x79a9('0x32')](_[_0x79a9('0x3a')](_0x4af2ca[_0x79a9('0x31')],_0x3872e1['filters']),_0x52397f);if(_0x4af2ca[_0x79a9('0x31')][_0x79a9('0x3b')]){_0x47b5e6[_0x79a9('0x39')]=_[_0x79a9('0x3c')](_0x47b5e6[_0x79a9('0x39')],{'$or':_[_0x79a9('0x2a')](_0x52397f,function(_0x12c0e5){if(_0x12c0e5[_0x79a9('0x2e')]!==_0x79a9('0x3d')){var _0x5b7ee7={};_0x5b7ee7[_0x12c0e5['name']]={'$like':'%'+_0x4af2ca[_0x79a9('0x31')]['filter']+'%'};return _0x5b7ee7;}})});}_0x47b5e6=_[_0x79a9('0x3c')]({},_0x47b5e6,_0x4af2ca[_0x79a9('0x3e')]);var _0x26a4d5={'where':_0x47b5e6['where']};return db['OpenchannelQueueReport'][_0x79a9('0x1e')](_0x26a4d5)['then'](function(_0x246fae){_0x21f474[_0x79a9('0x1e')]=_0x246fae;if(_0x4af2ca[_0x79a9('0x31')]['includeAll']){_0x47b5e6[_0x79a9('0x3f')]=[{'all':!![]}];}return db[_0x79a9('0x2b')][_0x79a9('0x40')](_0x47b5e6);})[_0x79a9('0x24')](function(_0x25ac83){_0x21f474[_0x79a9('0x41')]=_0x25ac83;return _0x21f474;})[_0x79a9('0x24')](respondWithFilteredResult(_0x45a017,_0x47b5e6))[_0x79a9('0x42')](handleError(_0x45a017,null));};exports[_0x79a9('0x43')]=function(_0x2b1b17,_0x5975ed){var _0x2e6ba8={'raw':!![],'where':{'id':_0x2b1b17['params']['id']}},_0x45b2c6={};_0x45b2c6[_0x79a9('0x2f')]=_[_0x79a9('0x30')](db['OpenchannelQueueReport']['rawAttributes']);_0x45b2c6[_0x79a9('0x31')]=_[_0x79a9('0x30')](_0x2b1b17[_0x79a9('0x31')]);_0x45b2c6[_0x79a9('0x32')]=_[_0x79a9('0x33')](_0x45b2c6[_0x79a9('0x2f')],_0x45b2c6[_0x79a9('0x31')]);_0x2e6ba8[_0x79a9('0x35')]=_['intersection'](_0x45b2c6[_0x79a9('0x2f')],qs[_0x79a9('0x34')](_0x2b1b17[_0x79a9('0x31')][_0x79a9('0x34')]));_0x2e6ba8[_0x79a9('0x35')]=_0x2e6ba8[_0x79a9('0x35')]['length']?_0x2e6ba8['attributes']:_0x45b2c6[_0x79a9('0x2f')];if(_0x2b1b17['query'][_0x79a9('0x44')]){_0x2e6ba8[_0x79a9('0x3f')]=[{'all':!![]}];}_0x2e6ba8=_[_0x79a9('0x3c')]({},_0x2e6ba8,_0x2b1b17[_0x79a9('0x3e')]);return db['OpenchannelQueueReport']['find'](_0x2e6ba8)[_0x79a9('0x24')](handleEntityNotFound(_0x5975ed,null))[_0x79a9('0x24')](respondWithResult(_0x5975ed,null))[_0x79a9('0x42')](handleError(_0x5975ed,null));};exports[_0x79a9('0x45')]=function(_0x1b29bf,_0x150abe){return db['OpenchannelQueueReport'][_0x79a9('0x45')](_0x1b29bf[_0x79a9('0x46')],{})['then'](respondWithResult(_0x150abe,0xc9))['catch'](handleError(_0x150abe,null));};exports[_0x79a9('0x23')]=function(_0x57e48e,_0x30d94d){if(_0x57e48e[_0x79a9('0x46')]['id']){delete _0x57e48e['body']['id'];}return db[_0x79a9('0x2b')][_0x79a9('0x47')]({'where':{'id':_0x57e48e[_0x79a9('0x48')]['id']}})['then'](handleEntityNotFound(_0x30d94d,null))[_0x79a9('0x24')](saveUpdates(_0x57e48e[_0x79a9('0x46')],null))[_0x79a9('0x24')](respondWithResult(_0x30d94d,null))['catch'](handleError(_0x30d94d,null));};exports['destroy']=function(_0xc76439,_0x47d4f0){return db['OpenchannelQueueReport'][_0x79a9('0x47')]({'where':{'id':_0xc76439[_0x79a9('0x48')]['id']}})['then'](handleEntityNotFound(_0x47d4f0,null))[_0x79a9('0x24')](removeEntity(_0x47d4f0,null))[_0x79a9('0x42')](handleError(_0x47d4f0,null));};exports[_0x79a9('0x49')]=function(_0x2b4bee,_0x14716c){return db[_0x79a9('0x2b')][_0x79a9('0x49')]()[_0x79a9('0x24')](respondWithResult(_0x14716c,null))['catch'](handleError(_0x14716c,null));};
\ No newline at end of file
index e1fa6c7..f043b13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x13c490,_0x4c898a){var _0x5ab484=function(_0x23c4bf){while(--_0x23c4bf){_0x13c490['push'](_0x13c490['shift']());}};_0x5ab484(++_0x4c898a);}(_0x7a54,0x106));var _0x47a5=function(_0x3b3c20,_0x2d52f9){_0x3b3c20=_0x3b3c20-0x0;var _0x58b7f3=_0x7a54[_0x3b3c20];return _0x58b7f3;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','uniqueid','lodash'];(function(_0x41459d,_0xfb1706){var _0x28707f=function(_0x1ab097){while(--_0x1ab097){_0x41459d['push'](_0x41459d['shift']());}};_0x28707f(++_0xfb1706);}(_0x326f,0xd1));var _0xf326=function(_0x4a82ee,_0x1291ff){_0x4a82ee=_0x4a82ee-0x0;var _0x1f9e29=_0x326f[_0x4a82ee];return _0x1f9e29;};'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 e912db2..25fd1e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531a=['catch','CreateOpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x5c7a85,_0x41dd19){var _0x35290f=function(_0x26215b){while(--_0x26215b){_0x5c7a85['push'](_0x5c7a85['shift']());}};_0x35290f(++_0x41dd19);}(_0x531a,0x100));var _0xa531=function(_0x2a9202,_0x5e68cb){_0x2a9202=_0x2a9202-0x0;var _0x316625=_0x531a[_0x2a9202];return _0x316625;};'use strict';var _=require(_0xa531('0x0'));var util=require(_0xa531('0x1'));var moment=require(_0xa531('0x2'));var BPromise=require(_0xa531('0x3'));var rs=require(_0xa531('0x4'));var fs=require('fs');var Redis=require(_0xa531('0x5'));var db=require(_0xa531('0x6'))['db'];var utils=require(_0xa531('0x7'));var logger=require(_0xa531('0x8'))(_0xa531('0x9'));var config=require('../../config/environment');var jayson=require(_0xa531('0xa'));var client=jayson['client'][_0xa531('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4446b9,_0x3fd172,_0x286dc7){return new BPromise(function(_0x3b68a7,_0x5bd2f9){return client[_0xa531('0xc')](_0x4446b9,_0x286dc7)[_0xa531('0xd')](function(_0x4d07e4){logger[_0xa531('0xe')](_0xa531('0xf'),_0x3fd172,_0xa531('0x10'));logger[_0xa531('0x11')](_0xa531('0x12'),_0x3fd172,'request\x20sent',JSON[_0xa531('0x13')](_0x4d07e4));if(_0x4d07e4['error']){if(_0x4d07e4[_0xa531('0x14')][_0xa531('0x15')]===0x1f4){logger[_0xa531('0x14')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3fd172,_0x4d07e4[_0xa531('0x14')][_0xa531('0x16')]);return _0x5bd2f9(_0x4d07e4['error'][_0xa531('0x16')]);}logger[_0xa531('0x14')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3fd172,_0x4d07e4[_0xa531('0x14')][_0xa531('0x16')]);return _0x3b68a7(_0x4d07e4[_0xa531('0x14')]['message']);}else{logger['info']('OpenchannelQueueReport,\x20%s,\x20%s',_0x3fd172,_0xa531('0x10'));_0x3b68a7(_0x4d07e4[_0xa531('0x17')][_0xa531('0x16')]);}})[_0xa531('0x18')](function(_0x324076){logger[_0xa531('0x14')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x3fd172,_0x324076);_0x5bd2f9(_0x324076);});});}exports[_0xa531('0x19')]=function(_0x5124a1){var _0x412b84=this;return new Promise(function(_0x146013,_0x4fb62e){return db['OpenchannelQueueReport'][_0xa531('0x1a')](_0x5124a1[_0xa531('0x1b')],{'raw':_0x5124a1[_0xa531('0x1c')]?_0x5124a1['options'][_0xa531('0x1d')]===undefined?!![]:![]:!![]})[_0xa531('0xd')](function(_0x4096f0){logger['info'](_0xa531('0x19'),_0x5124a1);logger[_0xa531('0x11')]('CreateOpenchannelQueueReport',_0x5124a1,JSON[_0xa531('0x13')](_0x4096f0));_0x146013(_0x4096f0);})[_0xa531('0x18')](function(_0x3a2016){logger[_0xa531('0x14')](_0xa531('0x19'),_0x3a2016[_0xa531('0x16')],_0x5124a1);_0x4fb62e(_0x412b84[_0xa531('0x14')](0x1f4,_0x3a2016[_0xa531('0x16')]));});});};exports[_0xa531('0x1e')]=function(_0x39f640){var _0x8e9ab3=this;return new Promise(function(_0x3ac4eb,_0x57f1b3){return db[_0xa531('0x1f')][_0xa531('0x20')](_0x39f640[_0xa531('0x1b')],{'raw':_0x39f640['options']?_0x39f640[_0xa531('0x1c')][_0xa531('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39f640['options']?_0x39f640['options'][_0xa531('0x21')]||null:null,'attributes':_0x39f640['options']?_0x39f640[_0xa531('0x1c')][_0xa531('0x22')]||null:null,'limit':_0x39f640['options']?_0x39f640[_0xa531('0x1c')]['limit']||null:null})[_0xa531('0xd')](function(_0x531b8c){logger['info']('UpdateOpenchannelQueueReport',_0x39f640);logger[_0xa531('0x11')](_0xa531('0x1e'),_0x39f640,JSON['stringify'](_0x531b8c));_0x3ac4eb(_0x531b8c);})['catch'](function(_0x380cec){logger['error'](_0xa531('0x1e'),_0x380cec[_0xa531('0x16')],_0x39f640);_0x57f1b3(_0x8e9ab3['error'](0x1f4,_0x380cec[_0xa531('0x16')]));});});};
\ No newline at end of file
+var _0xea28=['request\x20sent','stringify','error','code','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','debug','UpdateOpenchannelQueueReport','update','raw','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s'];(function(_0x5f2fea,_0x9fde07){var _0x198a0c=function(_0x2bb11a){while(--_0x2bb11a){_0x5f2fea['push'](_0x5f2fea['shift']());}};_0x198a0c(++_0x9fde07);}(_0xea28,0x13a));var _0x8ea2=function(_0x260c94,_0x21cb5b){_0x260c94=_0x260c94-0x0;var _0x10e828=_0xea28[_0x260c94];return _0x10e828;};'use strict';var _=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var moment=require(_0x8ea2('0x2'));var BPromise=require(_0x8ea2('0x3'));var rs=require(_0x8ea2('0x4'));var fs=require('fs');var Redis=require(_0x8ea2('0x5'));var db=require(_0x8ea2('0x6'))['db'];var utils=require(_0x8ea2('0x7'));var logger=require('../../config/logger')(_0x8ea2('0x8'));var config=require(_0x8ea2('0x9'));var jayson=require(_0x8ea2('0xa'));var client=jayson['client'][_0x8ea2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x435d78,_0xb7f278,_0x39b1fa){return new BPromise(function(_0x28b5b8,_0x929304){return client[_0x8ea2('0xc')](_0x435d78,_0x39b1fa)[_0x8ea2('0xd')](function(_0x3de4a1){logger[_0x8ea2('0xe')](_0x8ea2('0xf'),_0xb7f278,_0x8ea2('0x10'));logger['debug']('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0xb7f278,_0x8ea2('0x10'),JSON[_0x8ea2('0x11')](_0x3de4a1));if(_0x3de4a1[_0x8ea2('0x12')]){if(_0x3de4a1['error'][_0x8ea2('0x13')]===0x1f4){logger[_0x8ea2('0x12')](_0x8ea2('0xf'),_0xb7f278,_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);return _0x929304(_0x3de4a1['error'][_0x8ea2('0x14')]);}logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0xb7f278,_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);return _0x28b5b8(_0x3de4a1[_0x8ea2('0x12')][_0x8ea2('0x14')]);}else{logger[_0x8ea2('0xe')](_0x8ea2('0xf'),_0xb7f278,_0x8ea2('0x10'));_0x28b5b8(_0x3de4a1[_0x8ea2('0x15')][_0x8ea2('0x14')]);}})[_0x8ea2('0x16')](function(_0x2dfa7c){logger[_0x8ea2('0x12')](_0x8ea2('0xf'),_0xb7f278,_0x2dfa7c);_0x929304(_0x2dfa7c);});});}exports[_0x8ea2('0x17')]=function(_0x1b64cf){var _0x174ef2=this;return new Promise(function(_0x467045,_0x2a0329){return db[_0x8ea2('0x18')][_0x8ea2('0x19')](_0x1b64cf[_0x8ea2('0x1a')],{'raw':_0x1b64cf[_0x8ea2('0x1b')]?_0x1b64cf['options']['raw']===undefined?!![]:![]:!![]})[_0x8ea2('0xd')](function(_0x248c18){logger[_0x8ea2('0xe')]('CreateOpenchannelQueueReport',_0x1b64cf);logger[_0x8ea2('0x1c')](_0x8ea2('0x17'),_0x1b64cf,JSON['stringify'](_0x248c18));_0x467045(_0x248c18);})[_0x8ea2('0x16')](function(_0x283f00){logger[_0x8ea2('0x12')](_0x8ea2('0x17'),_0x283f00[_0x8ea2('0x14')],_0x1b64cf);_0x2a0329(_0x174ef2[_0x8ea2('0x12')](0x1f4,_0x283f00[_0x8ea2('0x14')]));});});};exports[_0x8ea2('0x1d')]=function(_0x18ec34){var _0x4d5030=this;return new Promise(function(_0x433bc5,_0x4f48bd){return db[_0x8ea2('0x18')][_0x8ea2('0x1e')](_0x18ec34[_0x8ea2('0x1a')],{'raw':_0x18ec34['options']?_0x18ec34['options'][_0x8ea2('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x18ec34['options']?_0x18ec34[_0x8ea2('0x1b')]['where']||null:null,'attributes':_0x18ec34[_0x8ea2('0x1b')]?_0x18ec34[_0x8ea2('0x1b')][_0x8ea2('0x20')]||null:null,'limit':_0x18ec34[_0x8ea2('0x1b')]?_0x18ec34['options']['limit']||null:null})[_0x8ea2('0xd')](function(_0x4da5b3){logger[_0x8ea2('0xe')](_0x8ea2('0x1d'),_0x18ec34);logger[_0x8ea2('0x1c')](_0x8ea2('0x1d'),_0x18ec34,JSON[_0x8ea2('0x11')](_0x4da5b3));_0x433bc5(_0x4da5b3);})[_0x8ea2('0x16')](function(_0x32e225){logger[_0x8ea2('0x12')](_0x8ea2('0x1d'),_0x32e225[_0x8ea2('0x14')],_0x18ec34);_0x4f48bd(_0x4d5030['error'](0x1f4,_0x32e225['message']));});});};
\ No newline at end of file
index 39c2209..a940434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4673=['/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','show','post','put'];(function(_0x3cc81b,_0x4627c9){var _0x2d9ab9=function(_0x4331bf){while(--_0x4331bf){_0x3cc81b['push'](_0x3cc81b['shift']());}};_0x2d9ab9(++_0x4627c9);}(_0x4673,0x169));var _0x3467=function(_0x13f802,_0xe95bda){_0x13f802=_0x13f802-0x0;var _0x118dfa=_0x4673[_0x13f802];return _0x118dfa;};'use strict';var multer=require(_0x3467('0x0'));var util=require(_0x3467('0x1'));var path=require(_0x3467('0x2'));var timeout=require(_0x3467('0x3'));var express=require('express');var router=express[_0x3467('0x4')]();var fs_extra=require(_0x3467('0x5'));var auth=require(_0x3467('0x6'));var interaction=require(_0x3467('0x7'));var config=require(_0x3467('0x8'));var controller=require(_0x3467('0x9'));router['get']('/',auth[_0x3467('0xa')](),controller[_0x3467('0xb')]);router[_0x3467('0xc')](_0x3467('0xd'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x3467('0xa')](),controller[_0x3467('0xe')]);router[_0x3467('0xf')]('/',auth[_0x3467('0xa')](),controller['create']);router[_0x3467('0x10')](_0x3467('0x11'),auth['isAuthenticated'](),controller[_0x3467('0x12')]);router[_0x3467('0x13')](_0x3467('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x3467('0x14')]=router;
\ No newline at end of file
+var _0x1da4=['../../components/auth/service','../../components/interaction/service','./openchannelTransferReport.controller','get','isAuthenticated','/describe','describe','post','create','put','/:id','update','delete','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x58533e,_0x5924e6){var _0x68a89d=function(_0x457399){while(--_0x457399){_0x58533e['push'](_0x58533e['shift']());}};_0x68a89d(++_0x5924e6);}(_0x1da4,0x19c));var _0x41da=function(_0x36595e,_0x286301){_0x36595e=_0x36595e-0x0;var _0x3d0f8e=_0x1da4[_0x36595e];return _0x3d0f8e;};'use strict';var multer=require(_0x41da('0x0'));var util=require(_0x41da('0x1'));var path=require(_0x41da('0x2'));var timeout=require(_0x41da('0x3'));var express=require('express');var router=express[_0x41da('0x4')]();var fs_extra=require(_0x41da('0x5'));var auth=require(_0x41da('0x6'));var interaction=require(_0x41da('0x7'));var config=require('../../config/environment');var controller=require(_0x41da('0x8'));router[_0x41da('0x9')]('/',auth[_0x41da('0xa')](),controller['index']);router[_0x41da('0x9')](_0x41da('0xb'),auth[_0x41da('0xa')](),controller[_0x41da('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x41da('0xd')]('/',auth['isAuthenticated'](),controller[_0x41da('0xe')]);router[_0x41da('0xf')](_0x41da('0x10'),auth['isAuthenticated'](),controller[_0x41da('0x11')]);router[_0x41da('0x12')](_0x41da('0x10'),auth[_0x41da('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index f7c1e85..5c21875 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x502de3,_0x1248be){var _0x5b73de=function(_0x590d00){while(--_0x590d00){_0x502de3['push'](_0x502de3['shift']());}};_0x5b73de(++_0x1248be);}(_0xf4eb,0xec));var _0xbf4e=function(_0x40f15e,_0x1750a6){_0x40f15e=_0x40f15e-0x0;var _0x3b2cc2=_0xf4eb[_0x40f15e];return _0x3b2cc2;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x5700c5,_0x3f8f18){var _0x771cca=function(_0x5543f8){while(--_0x5543f8){_0x5700c5['push'](_0x5700c5['shift']());}};_0x771cca(++_0x3f8f18);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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 fc967cf..2bc0080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc234=['apply','reject','save','update','destroy','then','error','name','index','map','OpenchannelTransferReport','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','catch','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','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','json','offset','limit','count','set','Content-Range'];(function(_0x54b60b,_0x6884b6){var _0x5c60c8=function(_0xad7a69){while(--_0xad7a69){_0x54b60b['push'](_0x54b60b['shift']());}};_0x5c60c8(++_0x6884b6);}(_0xc234,0x1dd));var _0x4c23=function(_0x458d14,_0x2d9a36){_0x458d14=_0x458d14-0x0;var _0x2b3e14=_0xc234[_0x458d14];return _0x2b3e14;};'use strict';var emlformat=require(_0x4c23('0x0'));var rimraf=require(_0x4c23('0x1'));var zipdir=require(_0x4c23('0x2'));var jsonpatch=require(_0x4c23('0x3'));var rp=require(_0x4c23('0x4'));var moment=require(_0x4c23('0x5'));var BPromise=require(_0x4c23('0x6'));var Mustache=require(_0x4c23('0x7'));var util=require('util');var path=require(_0x4c23('0x8'));var sox=require(_0x4c23('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c23('0xa'));var _=require(_0x4c23('0xb'));var squel=require(_0x4c23('0xc'));var crypto=require('crypto');var jsforce=require(_0x4c23('0xd'));var deskjs=require(_0x4c23('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4c23('0xf'));var Papa=require('papaparse');var Redis=require(_0x4c23('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x4c23('0x11'));var as=require(_0x4c23('0x12'));var hardwareService=require(_0x4c23('0x13'));var logger=require(_0x4c23('0x14'))(_0x4c23('0x15'));var utils=require(_0x4c23('0x16'));var config=require(_0x4c23('0x17'));var licenseUtil=require(_0x4c23('0x18'));var db=require(_0x4c23('0x19'))['db'];function respondWithStatusCode(_0x54680c,_0x37a4d4){_0x37a4d4=_0x37a4d4||0xcc;return function(_0xceaf7e){if(_0xceaf7e){return _0x54680c[_0x4c23('0x1a')](_0x37a4d4);}return _0x54680c[_0x4c23('0x1b')](_0x37a4d4)['end']();};}function respondWithResult(_0x438331,_0x1586fc){_0x1586fc=_0x1586fc||0xc8;return function(_0x47d9ed){if(_0x47d9ed){return _0x438331[_0x4c23('0x1b')](_0x1586fc)[_0x4c23('0x1c')](_0x47d9ed);}};}function respondWithFilteredResult(_0x22861c,_0x22433d){return function(_0x513f97){if(_0x513f97){var _0x1e1808=typeof _0x22433d[_0x4c23('0x1d')]==='undefined'&&typeof _0x22433d[_0x4c23('0x1e')]==='undefined';var _0x4b0a82=_0x513f97['count'];var _0x2b8744=_0x1e1808?0x0:_0x22433d['offset'];var _0x455efa=_0x1e1808?_0x513f97[_0x4c23('0x1f')]:_0x22433d['offset']+_0x22433d[_0x4c23('0x1e')];var _0x42d780;if(_0x455efa>=_0x4b0a82){_0x455efa=_0x4b0a82;_0x42d780=0xc8;}else{_0x42d780=0xce;}_0x22861c[_0x4c23('0x1b')](_0x42d780);return _0x22861c[_0x4c23('0x20')](_0x4c23('0x21'),_0x2b8744+'-'+_0x455efa+'/'+_0x4b0a82)[_0x4c23('0x1c')](_0x513f97);}return null;};}function patchUpdates(_0x4cd0f1){return function(_0x3effdd){try{jsonpatch[_0x4c23('0x22')](_0x3effdd,_0x4cd0f1,!![]);}catch(_0x2a5c23){return BPromise[_0x4c23('0x23')](_0x2a5c23);}return _0x3effdd[_0x4c23('0x24')]();};}function saveUpdates(_0x441260,_0x365c74){return function(_0x1e9955){if(_0x1e9955){return _0x1e9955[_0x4c23('0x25')](_0x441260)['then'](function(_0x3b59fa){return _0x3b59fa;});}return null;};}function removeEntity(_0x5ca84c,_0x440c64){return function(_0x48e68f){if(_0x48e68f){return _0x48e68f[_0x4c23('0x26')]()[_0x4c23('0x27')](function(){_0x5ca84c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xe3559a,_0x48d76c){return function(_0x3cd368){if(!_0x3cd368){_0xe3559a[_0x4c23('0x1a')](0x194);}return _0x3cd368;};}function handleError(_0x1b2171,_0xa837f7){_0xa837f7=_0xa837f7||0x1f4;return function(_0x43cfc7){logger[_0x4c23('0x28')](_0x43cfc7['stack']);if(_0x43cfc7[_0x4c23('0x29')]){delete _0x43cfc7[_0x4c23('0x29')];}_0x1b2171[_0x4c23('0x1b')](_0xa837f7)['send'](_0x43cfc7);};}exports[_0x4c23('0x2a')]=function(_0x2df2a6,_0x3e6771){var _0xa1942f={},_0x4409fb={},_0x544113={'count':0x0,'rows':[]};var _0x160b8f=_[_0x4c23('0x2b')](db[_0x4c23('0x2c')][_0x4c23('0x2d')],function(_0x6b0bc7){return{'name':_0x6b0bc7['fieldName'],'type':_0x6b0bc7[_0x4c23('0x2e')][_0x4c23('0x2f')]};});_0x4409fb['model']=_[_0x4c23('0x2b')](_0x160b8f,_0x4c23('0x29'));_0x4409fb[_0x4c23('0x30')]=_[_0x4c23('0x31')](_0x2df2a6['query']);_0x4409fb[_0x4c23('0x32')]=_[_0x4c23('0x33')](_0x4409fb[_0x4c23('0x34')],_0x4409fb[_0x4c23('0x30')]);_0xa1942f['attributes']=_[_0x4c23('0x33')](_0x4409fb['model'],qs[_0x4c23('0x35')](_0x2df2a6['query'][_0x4c23('0x35')]));_0xa1942f[_0x4c23('0x36')]=_0xa1942f[_0x4c23('0x36')]['length']?_0xa1942f[_0x4c23('0x36')]:_0x4409fb[_0x4c23('0x34')];if(!_0x2df2a6[_0x4c23('0x30')][_0x4c23('0x37')](_0x4c23('0x38'))){_0xa1942f[_0x4c23('0x1e')]=qs[_0x4c23('0x1e')](_0x2df2a6[_0x4c23('0x30')][_0x4c23('0x1e')]);_0xa1942f[_0x4c23('0x1d')]=qs[_0x4c23('0x1d')](_0x2df2a6[_0x4c23('0x30')]['offset']);}_0xa1942f[_0x4c23('0x39')]=qs['sort'](_0x2df2a6[_0x4c23('0x30')][_0x4c23('0x3a')]);_0xa1942f[_0x4c23('0x3b')]=qs['filters'](_[_0x4c23('0x3c')](_0x2df2a6[_0x4c23('0x30')],_0x4409fb['filters']),_0x160b8f);if(_0x2df2a6[_0x4c23('0x30')][_0x4c23('0x3d')]){_0xa1942f['where']=_['merge'](_0xa1942f['where'],{'$or':_['map'](_0x160b8f,function(_0x59bb9a){if(_0x59bb9a[_0x4c23('0x2e')]!=='VIRTUAL'){var _0x338e64={};_0x338e64[_0x59bb9a[_0x4c23('0x29')]]={'$like':'%'+_0x2df2a6[_0x4c23('0x30')][_0x4c23('0x3d')]+'%'};return _0x338e64;}})});}_0xa1942f=_[_0x4c23('0x3e')]({},_0xa1942f,_0x2df2a6[_0x4c23('0x3f')]);var _0xe51ec6={'where':_0xa1942f[_0x4c23('0x3b')]};return db[_0x4c23('0x2c')][_0x4c23('0x1f')](_0xe51ec6)[_0x4c23('0x27')](function(_0x1426af){_0x544113[_0x4c23('0x1f')]=_0x1426af;if(_0x2df2a6['query'][_0x4c23('0x40')]){_0xa1942f['include']=[{'all':!![]}];}return db[_0x4c23('0x2c')][_0x4c23('0x41')](_0xa1942f);})[_0x4c23('0x27')](function(_0x11cae9){_0x544113['rows']=_0x11cae9;return _0x544113;})['then'](respondWithFilteredResult(_0x3e6771,_0xa1942f))[_0x4c23('0x42')](handleError(_0x3e6771,null));};exports['show']=function(_0x477776,_0x3fde4c){var _0x5b9542={'raw':!![],'where':{'id':_0x477776[_0x4c23('0x43')]['id']}},_0x4fc342={};_0x4fc342['model']=_[_0x4c23('0x31')](db[_0x4c23('0x2c')][_0x4c23('0x2d')]);_0x4fc342[_0x4c23('0x30')]=_['keys'](_0x477776[_0x4c23('0x30')]);_0x4fc342[_0x4c23('0x32')]=_[_0x4c23('0x33')](_0x4fc342[_0x4c23('0x34')],_0x4fc342[_0x4c23('0x30')]);_0x5b9542[_0x4c23('0x36')]=_['intersection'](_0x4fc342[_0x4c23('0x34')],qs[_0x4c23('0x35')](_0x477776[_0x4c23('0x30')][_0x4c23('0x35')]));_0x5b9542[_0x4c23('0x36')]=_0x5b9542[_0x4c23('0x36')][_0x4c23('0x44')]?_0x5b9542[_0x4c23('0x36')]:_0x4fc342[_0x4c23('0x34')];if(_0x477776[_0x4c23('0x30')][_0x4c23('0x40')]){_0x5b9542['include']=[{'all':!![]}];}_0x5b9542=_[_0x4c23('0x3e')]({},_0x5b9542,_0x477776[_0x4c23('0x3f')]);return db['OpenchannelTransferReport'][_0x4c23('0x45')](_0x5b9542)[_0x4c23('0x27')](handleEntityNotFound(_0x3fde4c,null))['then'](respondWithResult(_0x3fde4c,null))[_0x4c23('0x42')](handleError(_0x3fde4c,null));};exports['create']=function(_0x18ccab,_0x1c8fe2){return db['OpenchannelTransferReport'][_0x4c23('0x46')](_0x18ccab[_0x4c23('0x47')],{})[_0x4c23('0x27')](respondWithResult(_0x1c8fe2,0xc9))[_0x4c23('0x42')](handleError(_0x1c8fe2,null));};exports[_0x4c23('0x25')]=function(_0x210ea9,_0x581671){if(_0x210ea9[_0x4c23('0x47')]['id']){delete _0x210ea9[_0x4c23('0x47')]['id'];}return db[_0x4c23('0x2c')][_0x4c23('0x45')]({'where':{'id':_0x210ea9['params']['id']}})[_0x4c23('0x27')](handleEntityNotFound(_0x581671,null))[_0x4c23('0x27')](saveUpdates(_0x210ea9[_0x4c23('0x47')],null))[_0x4c23('0x27')](respondWithResult(_0x581671,null))[_0x4c23('0x42')](handleError(_0x581671,null));};exports['destroy']=function(_0x5c34fe,_0x44363e){return db[_0x4c23('0x2c')]['find']({'where':{'id':_0x5c34fe[_0x4c23('0x43')]['id']}})['then'](handleEntityNotFound(_0x44363e,null))[_0x4c23('0x27')](removeEntity(_0x44363e,null))[_0x4c23('0x42')](handleError(_0x44363e,null));};exports['describe']=function(_0x5bcf8f,_0x40cc8c){return db[_0x4c23('0x2c')][_0x4c23('0x48')]()[_0x4c23('0x27')](respondWithResult(_0x40cc8c,null))['catch'](handleError(_0x40cc8c,null));};
\ No newline at end of file
+var _0xd35a=['../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','save','update','then','error','stack','name','send','map','OpenchannelTransferReport','rawAttributes','fieldName','type','key','keys','query','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','filters','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','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','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0xd35a,0x179));var _0xad35=function(_0x412c8f,_0x11ec94){_0x412c8f=_0x412c8f-0x0;var _0x27c005=_0xd35a[_0x412c8f];return _0x27c005;};'use strict';var emlformat=require(_0xad35('0x0'));var rimraf=require(_0xad35('0x1'));var zipdir=require(_0xad35('0x2'));var jsonpatch=require(_0xad35('0x3'));var rp=require('request-promise');var moment=require(_0xad35('0x4'));var BPromise=require(_0xad35('0x5'));var Mustache=require(_0xad35('0x6'));var util=require(_0xad35('0x7'));var path=require(_0xad35('0x8'));var sox=require(_0xad35('0x9'));var csv=require('to-csv');var ejs=require(_0xad35('0xa'));var fs=require('fs');var fs_extra=require(_0xad35('0xb'));var _=require(_0xad35('0xc'));var squel=require(_0xad35('0xd'));var crypto=require(_0xad35('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xad35('0xf'));var toCsv=require(_0xad35('0x10'));var querystring=require(_0xad35('0x11'));var Papa=require(_0xad35('0x12'));var Redis=require(_0xad35('0x13'));var authService=require(_0xad35('0x14'));var qs=require(_0xad35('0x15'));var as=require(_0xad35('0x16'));var hardwareService=require(_0xad35('0x17'));var logger=require(_0xad35('0x18'))('api');var utils=require(_0xad35('0x19'));var config=require(_0xad35('0x1a'));var licenseUtil=require(_0xad35('0x1b'));var db=require(_0xad35('0x1c'))['db'];function respondWithStatusCode(_0x314ff3,_0x3ad9c9){_0x3ad9c9=_0x3ad9c9||0xcc;return function(_0x3fa2ea){if(_0x3fa2ea){return _0x314ff3[_0xad35('0x1d')](_0x3ad9c9);}return _0x314ff3['status'](_0x3ad9c9)[_0xad35('0x1e')]();};}function respondWithResult(_0x4d74ac,_0x252d14){_0x252d14=_0x252d14||0xc8;return function(_0x43bfd2){if(_0x43bfd2){return _0x4d74ac['status'](_0x252d14)[_0xad35('0x1f')](_0x43bfd2);}};}function respondWithFilteredResult(_0x3b4117,_0x3ea529){return function(_0x51f5dc){if(_0x51f5dc){var _0x1fa570=typeof _0x3ea529[_0xad35('0x20')]===_0xad35('0x21')&&typeof _0x3ea529[_0xad35('0x22')]===_0xad35('0x21');var _0x150ef7=_0x51f5dc['count'];var _0x789ef9=_0x1fa570?0x0:_0x3ea529[_0xad35('0x20')];var _0x563479=_0x1fa570?_0x51f5dc[_0xad35('0x23')]:_0x3ea529[_0xad35('0x20')]+_0x3ea529['limit'];var _0x5c7e10;if(_0x563479>=_0x150ef7){_0x563479=_0x150ef7;_0x5c7e10=0xc8;}else{_0x5c7e10=0xce;}_0x3b4117[_0xad35('0x24')](_0x5c7e10);return _0x3b4117[_0xad35('0x25')](_0xad35('0x26'),_0x789ef9+'-'+_0x563479+'/'+_0x150ef7)[_0xad35('0x1f')](_0x51f5dc);}return null;};}function patchUpdates(_0x2666aa){return function(_0x545fc5){try{jsonpatch['apply'](_0x545fc5,_0x2666aa,!![]);}catch(_0x404449){return BPromise[_0xad35('0x27')](_0x404449);}return _0x545fc5[_0xad35('0x28')]();};}function saveUpdates(_0x5c2c4a,_0x2e785e){return function(_0x12e713){if(_0x12e713){return _0x12e713[_0xad35('0x29')](_0x5c2c4a)['then'](function(_0x30a78b){return _0x30a78b;});}return null;};}function removeEntity(_0x5312db,_0x218cb7){return function(_0x42e025){if(_0x42e025){return _0x42e025['destroy']()[_0xad35('0x2a')](function(){_0x5312db['status'](0xcc)[_0xad35('0x1e')]();});}};}function handleEntityNotFound(_0x11089a,_0x3bb03b){return function(_0x5030ca){if(!_0x5030ca){_0x11089a[_0xad35('0x1d')](0x194);}return _0x5030ca;};}function handleError(_0xd550c9,_0x53b1c9){_0x53b1c9=_0x53b1c9||0x1f4;return function(_0x14ce17){logger[_0xad35('0x2b')](_0x14ce17[_0xad35('0x2c')]);if(_0x14ce17[_0xad35('0x2d')]){delete _0x14ce17[_0xad35('0x2d')];}_0xd550c9['status'](_0x53b1c9)[_0xad35('0x2e')](_0x14ce17);};}exports['index']=function(_0x1fe638,_0x37ed9f){var _0x1c7776={},_0x543bda={},_0x28af4f={'count':0x0,'rows':[]};var _0x522406=_[_0xad35('0x2f')](db[_0xad35('0x30')][_0xad35('0x31')],function(_0x53bd24){return{'name':_0x53bd24[_0xad35('0x32')],'type':_0x53bd24[_0xad35('0x33')][_0xad35('0x34')]};});_0x543bda['model']=_[_0xad35('0x2f')](_0x522406,_0xad35('0x2d'));_0x543bda['query']=_[_0xad35('0x35')](_0x1fe638[_0xad35('0x36')]);_0x543bda['filters']=_[_0xad35('0x37')](_0x543bda['model'],_0x543bda['query']);_0x1c7776[_0xad35('0x38')]=_[_0xad35('0x37')](_0x543bda[_0xad35('0x39')],qs['fields'](_0x1fe638[_0xad35('0x36')][_0xad35('0x3a')]));_0x1c7776['attributes']=_0x1c7776[_0xad35('0x38')][_0xad35('0x3b')]?_0x1c7776[_0xad35('0x38')]:_0x543bda[_0xad35('0x39')];if(!_0x1fe638[_0xad35('0x36')][_0xad35('0x3c')]('nolimit')){_0x1c7776[_0xad35('0x22')]=qs[_0xad35('0x22')](_0x1fe638[_0xad35('0x36')][_0xad35('0x22')]);_0x1c7776[_0xad35('0x20')]=qs[_0xad35('0x20')](_0x1fe638[_0xad35('0x36')][_0xad35('0x20')]);}_0x1c7776[_0xad35('0x3d')]=qs[_0xad35('0x3e')](_0x1fe638[_0xad35('0x36')][_0xad35('0x3e')]);_0x1c7776[_0xad35('0x3f')]=qs[_0xad35('0x40')](_['pick'](_0x1fe638[_0xad35('0x36')],_0x543bda[_0xad35('0x40')]),_0x522406);if(_0x1fe638[_0xad35('0x36')]['filter']){_0x1c7776[_0xad35('0x3f')]=_[_0xad35('0x41')](_0x1c7776[_0xad35('0x3f')],{'$or':_[_0xad35('0x2f')](_0x522406,function(_0x95d89e){if(_0x95d89e[_0xad35('0x33')]!==_0xad35('0x42')){var _0x1a90f9={};_0x1a90f9[_0x95d89e[_0xad35('0x2d')]]={'$like':'%'+_0x1fe638[_0xad35('0x36')][_0xad35('0x43')]+'%'};return _0x1a90f9;}})});}_0x1c7776=_[_0xad35('0x41')]({},_0x1c7776,_0x1fe638['options']);var _0x4ebb79={'where':_0x1c7776['where']};return db['OpenchannelTransferReport']['count'](_0x4ebb79)['then'](function(_0x37a062){_0x28af4f['count']=_0x37a062;if(_0x1fe638[_0xad35('0x36')][_0xad35('0x44')]){_0x1c7776['include']=[{'all':!![]}];}return db[_0xad35('0x30')][_0xad35('0x45')](_0x1c7776);})[_0xad35('0x2a')](function(_0x1485c9){_0x28af4f[_0xad35('0x46')]=_0x1485c9;return _0x28af4f;})['then'](respondWithFilteredResult(_0x37ed9f,_0x1c7776))[_0xad35('0x47')](handleError(_0x37ed9f,null));};exports[_0xad35('0x48')]=function(_0x5ad37f,_0x25cff3){var _0x490967={'raw':!![],'where':{'id':_0x5ad37f[_0xad35('0x49')]['id']}},_0x5e3180={};_0x5e3180[_0xad35('0x39')]=_[_0xad35('0x35')](db['OpenchannelTransferReport'][_0xad35('0x31')]);_0x5e3180[_0xad35('0x36')]=_[_0xad35('0x35')](_0x5ad37f[_0xad35('0x36')]);_0x5e3180[_0xad35('0x40')]=_[_0xad35('0x37')](_0x5e3180['model'],_0x5e3180[_0xad35('0x36')]);_0x490967['attributes']=_['intersection'](_0x5e3180['model'],qs[_0xad35('0x3a')](_0x5ad37f[_0xad35('0x36')][_0xad35('0x3a')]));_0x490967[_0xad35('0x38')]=_0x490967[_0xad35('0x38')]['length']?_0x490967[_0xad35('0x38')]:_0x5e3180[_0xad35('0x39')];if(_0x5ad37f['query'][_0xad35('0x44')]){_0x490967[_0xad35('0x4a')]=[{'all':!![]}];}_0x490967=_[_0xad35('0x41')]({},_0x490967,_0x5ad37f[_0xad35('0x4b')]);return db[_0xad35('0x30')][_0xad35('0x4c')](_0x490967)[_0xad35('0x2a')](handleEntityNotFound(_0x25cff3,null))[_0xad35('0x2a')](respondWithResult(_0x25cff3,null))[_0xad35('0x47')](handleError(_0x25cff3,null));};exports[_0xad35('0x4d')]=function(_0x281b6a,_0x4b8413){return db[_0xad35('0x30')][_0xad35('0x4d')](_0x281b6a['body'],{})[_0xad35('0x2a')](respondWithResult(_0x4b8413,0xc9))[_0xad35('0x47')](handleError(_0x4b8413,null));};exports[_0xad35('0x29')]=function(_0x343640,_0x5702fb){if(_0x343640[_0xad35('0x4e')]['id']){delete _0x343640[_0xad35('0x4e')]['id'];}return db[_0xad35('0x30')][_0xad35('0x4c')]({'where':{'id':_0x343640['params']['id']}})[_0xad35('0x2a')](handleEntityNotFound(_0x5702fb,null))[_0xad35('0x2a')](saveUpdates(_0x343640[_0xad35('0x4e')],null))[_0xad35('0x2a')](respondWithResult(_0x5702fb,null))[_0xad35('0x47')](handleError(_0x5702fb,null));};exports[_0xad35('0x4f')]=function(_0x484cd4,_0x14af59){return db[_0xad35('0x30')][_0xad35('0x4c')]({'where':{'id':_0x484cd4['params']['id']}})[_0xad35('0x2a')](handleEntityNotFound(_0x14af59,null))[_0xad35('0x2a')](removeEntity(_0x14af59,null))[_0xad35('0x47')](handleError(_0x14af59,null));};exports[_0xad35('0x50')]=function(_0x336b50,_0x262a7d){return db[_0xad35('0x30')][_0xad35('0x50')]()[_0xad35('0x2a')](respondWithResult(_0x262a7d,null))['catch'](handleError(_0x262a7d,null));};
\ No newline at end of file
index 5101dcf..d501807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc19=['./openchannelTransferReport.attributes','exports','define','OpenchannelTransferReport','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x361e67,_0x4ccc00){var _0x173f00=function(_0x415fea){while(--_0x415fea){_0x361e67['push'](_0x361e67['shift']());}};_0x173f00(++_0x4ccc00);}(_0xbc19,0x1b2));var _0x9bc1=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xbc19[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x9bc1('0x0'));var util=require(_0x9bc1('0x1'));var logger=require('../../config/logger')(_0x9bc1('0x2'));var moment=require(_0x9bc1('0x3'));var BPromise=require(_0x9bc1('0x4'));var rp=require(_0x9bc1('0x5'));var fs=require('fs');var path=require(_0x9bc1('0x6'));var rimraf=require(_0x9bc1('0x7'));var config=require('../../config/environment');var attributes=require(_0x9bc1('0x8'));module[_0x9bc1('0x9')]=function(_0x4aa3ec,_0x5c6a3c){return _0x4aa3ec[_0x9bc1('0xa')](_0x9bc1('0xb'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0x9bc1('0xc'),'fields':[_0x9bc1('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9dcb=['../../config/environment','./openchannelTransferReport.attributes','define','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','moment','path','rimraf'];(function(_0x23483a,_0x551158){var _0x30691c=function(_0x18c1a2){while(--_0x18c1a2){_0x23483a['push'](_0x23483a['shift']());}};_0x30691c(++_0x551158);}(_0x9dcb,0x118));var _0xb9dc=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x9dcb[_0x397e5f];return _0x5302b8;};'use strict';var _=require(_0xb9dc('0x0'));var util=require(_0xb9dc('0x1'));var logger=require(_0xb9dc('0x2'))('api');var moment=require(_0xb9dc('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb9dc('0x4'));var rimraf=require(_0xb9dc('0x5'));var config=require(_0xb9dc('0x6'));var attributes=require(_0xb9dc('0x7'));module['exports']=function(_0x5dc58c,_0x33a087){return _0x5dc58c[_0xb9dc('0x8')]('OpenchannelTransferReport',attributes,{'tableName':_0xb9dc('0x9'),'paranoid':![],'indexes':[{'name':_0xb9dc('0xa'),'fields':[_0xb9dc('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 1645496..614028e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee8=['../../config/logger','rpc','../../config/environment','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x11f5ff,_0xa0ef18){var _0x46eefb=function(_0x51872a){while(--_0x51872a){_0x11f5ff['push'](_0x11f5ff['shift']());}};_0x46eefb(++_0xa0ef18);}(_0xcee8,0xb1));var _0x8cee=function(_0x4e1095,_0x11fc03){_0x4e1095=_0x4e1095-0x0;var _0x2814f6=_0xcee8[_0x4e1095];return _0x2814f6;};'use strict';var _=require(_0x8cee('0x0'));var util=require(_0x8cee('0x1'));var moment=require(_0x8cee('0x2'));var BPromise=require(_0x8cee('0x3'));var rs=require(_0x8cee('0x4'));var fs=require('fs');var Redis=require(_0x8cee('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8cee('0x6'));var logger=require(_0x8cee('0x7'))(_0x8cee('0x8'));var config=require(_0x8cee('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8cee('0xa')][_0x8cee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f57f1,_0x538c89,_0x341c63){return new BPromise(function(_0x49a070,_0x3d767a){return client[_0x8cee('0xc')](_0x4f57f1,_0x341c63)[_0x8cee('0xd')](function(_0x2fd414){logger['info'](_0x8cee('0xe'),_0x538c89,_0x8cee('0xf'));logger['debug'](_0x8cee('0x10'),_0x538c89,_0x8cee('0xf'),JSON['stringify'](_0x2fd414));if(_0x2fd414[_0x8cee('0x11')]){if(_0x2fd414['error'][_0x8cee('0x12')]===0x1f4){logger[_0x8cee('0x11')](_0x8cee('0xe'),_0x538c89,_0x2fd414[_0x8cee('0x11')]['message']);return _0x3d767a(_0x2fd414['error'][_0x8cee('0x13')]);}logger[_0x8cee('0x11')](_0x8cee('0xe'),_0x538c89,_0x2fd414[_0x8cee('0x11')][_0x8cee('0x13')]);return _0x49a070(_0x2fd414[_0x8cee('0x11')][_0x8cee('0x13')]);}else{logger[_0x8cee('0x14')](_0x8cee('0xe'),_0x538c89,_0x8cee('0xf'));_0x49a070(_0x2fd414[_0x8cee('0x15')][_0x8cee('0x13')]);}})[_0x8cee('0x16')](function(_0xc4cc22){logger[_0x8cee('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x538c89,_0xc4cc22);_0x3d767a(_0xc4cc22);});});}
\ No newline at end of file
+var _0x5785=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','OpenchannelTransferReport,\x20%s,\x20%s','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x3ed98d,_0x2f4af7){var _0x2b81e0=function(_0x4e24ad){while(--_0x4e24ad){_0x3ed98d['push'](_0x3ed98d['shift']());}};_0x2b81e0(++_0x2f4af7);}(_0x5785,0x119));var _0x5578=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0x5785[_0x1ae5ab];return _0x1ce001;};'use strict';var _=require(_0x5578('0x0'));var util=require(_0x5578('0x1'));var moment=require(_0x5578('0x2'));var BPromise=require(_0x5578('0x3'));var rs=require(_0x5578('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5578('0x5'))['db'];var utils=require(_0x5578('0x6'));var logger=require(_0x5578('0x7'))(_0x5578('0x8'));var config=require(_0x5578('0x9'));var jayson=require(_0x5578('0xa'));var client=jayson[_0x5578('0xb')][_0x5578('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x464ab2,_0x287860,_0x545581){return new BPromise(function(_0x520bbf,_0x3d37dc){return client[_0x5578('0xd')](_0x464ab2,_0x545581)['then'](function(_0x433ed0){logger['info'](_0x5578('0xe'),_0x287860,'request\x20sent');logger[_0x5578('0xf')](_0x5578('0x10'),_0x287860,_0x5578('0x11'),JSON['stringify'](_0x433ed0));if(_0x433ed0['error']){if(_0x433ed0[_0x5578('0x12')][_0x5578('0x13')]===0x1f4){logger[_0x5578('0x12')](_0x5578('0xe'),_0x287860,_0x433ed0[_0x5578('0x12')][_0x5578('0x14')]);return _0x3d37dc(_0x433ed0[_0x5578('0x12')][_0x5578('0x14')]);}logger[_0x5578('0x12')](_0x5578('0xe'),_0x287860,_0x433ed0['error'][_0x5578('0x14')]);return _0x520bbf(_0x433ed0[_0x5578('0x12')][_0x5578('0x14')]);}else{logger[_0x5578('0x15')](_0x5578('0xe'),_0x287860,_0x5578('0x11'));_0x520bbf(_0x433ed0[_0x5578('0x16')][_0x5578('0x14')]);}})[_0x5578('0x17')](function(_0xc9c5a4){logger['error'](_0x5578('0xe'),_0x287860,_0xc9c5a4);_0x3d37dc(_0xc9c5a4);});});}
\ No newline at end of file
index 0b562c7..32e611e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f07=['get','isAuthenticated','/:id','show','post','create','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./pause.controller'];(function(_0x2aa4c8,_0x1f65b4){var _0x29edb8=function(_0x77caef){while(--_0x77caef){_0x2aa4c8['push'](_0x2aa4c8['shift']());}};_0x29edb8(++_0x1f65b4);}(_0x9f07,0x18e));var _0x79f0=function(_0x5b48c3,_0x351748){_0x5b48c3=_0x5b48c3-0x0;var _0x3adc44=_0x9f07[_0x5b48c3];return _0x3adc44;};'use strict';var multer=require(_0x79f0('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x79f0('0x1'));var express=require(_0x79f0('0x2'));var router=express[_0x79f0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x79f0('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x79f0('0x5'));var controller=require(_0x79f0('0x6'));router[_0x79f0('0x7')]('/',auth[_0x79f0('0x8')](),controller['index']);router['get'](_0x79f0('0x9'),auth[_0x79f0('0x8')](),controller[_0x79f0('0xa')]);router[_0x79f0('0xb')]('/',auth[_0x79f0('0x8')](),controller[_0x79f0('0xc')]);router['put'](_0x79f0('0x9'),auth[_0x79f0('0x8')](),controller['update']);router['delete'](_0x79f0('0x9'),auth[_0x79f0('0x8')](),controller[_0x79f0('0xd')]);module[_0x79f0('0xe')]=router;
\ No newline at end of file
+var _0x9eb4=['exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./pause.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete'];(function(_0x100a0f,_0x35ca4a){var _0x4e0adf=function(_0x5e40c3){while(--_0x5e40c3){_0x100a0f['push'](_0x100a0f['shift']());}};_0x4e0adf(++_0x35ca4a);}(_0x9eb4,0x7f));var _0x49eb=function(_0x3c4062,_0x3767fc){_0x3c4062=_0x3c4062-0x0;var _0x3f5bf3=_0x9eb4[_0x3c4062];return _0x3f5bf3;};'use strict';var multer=require(_0x49eb('0x0'));var util=require(_0x49eb('0x1'));var path=require(_0x49eb('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x49eb('0x3')]();var fs_extra=require(_0x49eb('0x4'));var auth=require(_0x49eb('0x5'));var interaction=require(_0x49eb('0x6'));var config=require('../../config/environment');var controller=require(_0x49eb('0x7'));router[_0x49eb('0x8')]('/',auth[_0x49eb('0x9')](),controller[_0x49eb('0xa')]);router[_0x49eb('0x8')](_0x49eb('0xb'),auth[_0x49eb('0x9')](),controller[_0x49eb('0xc')]);router['post']('/',auth[_0x49eb('0x9')](),controller[_0x49eb('0xd')]);router[_0x49eb('0xe')](_0x49eb('0xb'),auth[_0x49eb('0x9')](),controller[_0x49eb('0xf')]);router[_0x49eb('0x10')](_0x49eb('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x49eb('0x11')]=router;
\ No newline at end of file
index 2b22765..b9efd3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x616a=['exports','STRING','name','sequelize'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x616a,0x137));var _0xa616=function(_0x4b5c45,_0x4eb16b){_0x4b5c45=_0x4b5c45-0x0;var _0x31a2c9=_0x616a[_0x4b5c45];return _0x31a2c9;};'use strict';var Sequelize=require(_0xa616('0x0'));module[_0xa616('0x1')]={'name':{'type':Sequelize[_0xa616('0x2')],'unique':_0xa616('0x3'),'allowNull':![]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1eb7=['sequelize','exports','name','STRING'];(function(_0x1681fa,_0x163ae1){var _0xcd8d94=function(_0x507121){while(--_0x507121){_0x1681fa['push'](_0x1681fa['shift']());}};_0xcd8d94(++_0x163ae1);}(_0x1eb7,0xc0));var _0x71eb=function(_0x10a4b6,_0xe3e8d0){_0x10a4b6=_0x10a4b6-0x0;var _0xf96d03=_0x1eb7[_0x10a4b6];return _0xf96d03;};'use strict';var Sequelize=require(_0x71eb('0x0'));module[_0x71eb('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x71eb('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x71eb('0x3')]}};
\ No newline at end of file
index 37fa0dd..f191f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1cf=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Pauses','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','ejs','fs-extra','lodash','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','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','sendStatus','stack','name','send','map','Pause','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body'];(function(_0x110af0,_0xb36ae9){var _0x3fd18e=function(_0x22ceb8){while(--_0x22ceb8){_0x110af0['push'](_0x110af0['shift']());}};_0x3fd18e(++_0xb36ae9);}(_0xe1cf,0x156));var _0xfe1c=function(_0x264744,_0x42f486){_0x264744=_0x264744-0x0;var _0x5b6d2a=_0xe1cf[_0x264744];return _0x5b6d2a;};'use strict';var emlformat=require(_0xfe1c('0x0'));var rimraf=require(_0xfe1c('0x1'));var zipdir=require(_0xfe1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfe1c('0x3'));var moment=require(_0xfe1c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfe1c('0x5'));var path=require(_0xfe1c('0x6'));var sox=require(_0xfe1c('0x7'));var csv=require('to-csv');var ejs=require(_0xfe1c('0x8'));var fs=require('fs');var fs_extra=require(_0xfe1c('0x9'));var _=require(_0xfe1c('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfe1c('0xb'));var deskjs=require(_0xfe1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0xfe1c('0xd'));var Papa=require('papaparse');var Redis=require(_0xfe1c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xfe1c('0xf'));var as=require(_0xfe1c('0x10'));var hardwareService=require(_0xfe1c('0x11'));var logger=require(_0xfe1c('0x12'))(_0xfe1c('0x13'));var utils=require(_0xfe1c('0x14'));var config=require(_0xfe1c('0x15'));var licenseUtil=require(_0xfe1c('0x16'));var db=require(_0xfe1c('0x17'))['db'];function respondWithStatusCode(_0x2a7cea,_0x4cd42f){_0x4cd42f=_0x4cd42f||0xcc;return function(_0x4e15ae){if(_0x4e15ae){return _0x2a7cea['sendStatus'](_0x4cd42f);}return _0x2a7cea[_0xfe1c('0x18')](_0x4cd42f)['end']();};}function respondWithResult(_0x14e02d,_0x46f75e){_0x46f75e=_0x46f75e||0xc8;return function(_0x87bef1){if(_0x87bef1){return _0x14e02d[_0xfe1c('0x18')](_0x46f75e)['json'](_0x87bef1);}};}function respondWithFilteredResult(_0x5a207a,_0x468879){return function(_0x42ed39){if(_0x42ed39){var _0x3d9f8b=typeof _0x468879[_0xfe1c('0x19')]===_0xfe1c('0x1a')&&typeof _0x468879[_0xfe1c('0x1b')]===_0xfe1c('0x1a');var _0x50dbad=_0x42ed39['count'];var _0x1befe9=_0x3d9f8b?0x0:_0x468879[_0xfe1c('0x19')];var _0x370051=_0x3d9f8b?_0x42ed39[_0xfe1c('0x1c')]:_0x468879[_0xfe1c('0x19')]+_0x468879[_0xfe1c('0x1b')];var _0x34e280;if(_0x370051>=_0x50dbad){_0x370051=_0x50dbad;_0x34e280=0xc8;}else{_0x34e280=0xce;}_0x5a207a[_0xfe1c('0x18')](_0x34e280);return _0x5a207a[_0xfe1c('0x1d')](_0xfe1c('0x1e'),_0x1befe9+'-'+_0x370051+'/'+_0x50dbad)[_0xfe1c('0x1f')](_0x42ed39);}return null;};}function patchUpdates(_0x885bd3){return function(_0x2e8e41){try{jsonpatch[_0xfe1c('0x20')](_0x2e8e41,_0x885bd3,!![]);}catch(_0x2daf76){return BPromise[_0xfe1c('0x21')](_0x2daf76);}return _0x2e8e41[_0xfe1c('0x22')]();};}function saveUpdates(_0x37130c,_0x588170){return function(_0x5cbcff){if(_0x5cbcff){return _0x5cbcff[_0xfe1c('0x23')](_0x37130c)['then'](function(_0x4a15b5){return _0x4a15b5;});}return null;};}function removeEntity(_0x2ea866,_0x3cb1d1){return function(_0x4c97fb){if(_0x4c97fb){return _0x4c97fb['destroy']()[_0xfe1c('0x24')](function(){var _0x47aca1=_0x4c97fb['get']({'plain':!![]});var _0x397ba2='Pauses';return db['UserProfileResource'][_0xfe1c('0x25')]({'where':{'type':_0x397ba2,'resourceId':_0x47aca1['id']}})[_0xfe1c('0x24')](function(){return _0x4c97fb;});})[_0xfe1c('0x24')](function(){_0x2ea866['status'](0xcc)[_0xfe1c('0x26')]();});}};}function handleEntityNotFound(_0x1c8d06,_0x573d55){return function(_0x619aca){if(!_0x619aca){_0x1c8d06[_0xfe1c('0x27')](0x194);}return _0x619aca;};}function handleError(_0x5b9058,_0x11d9bd){_0x11d9bd=_0x11d9bd||0x1f4;return function(_0x1b40e3){logger['error'](_0x1b40e3[_0xfe1c('0x28')]);if(_0x1b40e3[_0xfe1c('0x29')]){delete _0x1b40e3[_0xfe1c('0x29')];}_0x5b9058[_0xfe1c('0x18')](_0x11d9bd)[_0xfe1c('0x2a')](_0x1b40e3);};}exports['index']=function(_0x5ff5c0,_0x552c11){var _0x14afdc={},_0x1bdba2={},_0x4a3f47={'count':0x0,'rows':[]};var _0x443630=_[_0xfe1c('0x2b')](db[_0xfe1c('0x2c')][_0xfe1c('0x2d')],function(_0x41a939){return{'name':_0x41a939[_0xfe1c('0x2e')],'type':_0x41a939[_0xfe1c('0x2f')]['key']};});_0x1bdba2[_0xfe1c('0x30')]=_[_0xfe1c('0x2b')](_0x443630,_0xfe1c('0x29'));_0x1bdba2[_0xfe1c('0x31')]=_[_0xfe1c('0x32')](_0x5ff5c0[_0xfe1c('0x31')]);_0x1bdba2[_0xfe1c('0x33')]=_['intersection'](_0x1bdba2[_0xfe1c('0x30')],_0x1bdba2[_0xfe1c('0x31')]);_0x14afdc[_0xfe1c('0x34')]=_[_0xfe1c('0x35')](_0x1bdba2['model'],qs['fields'](_0x5ff5c0[_0xfe1c('0x31')]['fields']));_0x14afdc[_0xfe1c('0x34')]=_0x14afdc[_0xfe1c('0x34')]['length']?_0x14afdc[_0xfe1c('0x34')]:_0x1bdba2[_0xfe1c('0x30')];if(!_0x5ff5c0[_0xfe1c('0x31')][_0xfe1c('0x36')](_0xfe1c('0x37'))){_0x14afdc[_0xfe1c('0x1b')]=qs[_0xfe1c('0x1b')](_0x5ff5c0[_0xfe1c('0x31')][_0xfe1c('0x1b')]);_0x14afdc[_0xfe1c('0x19')]=qs[_0xfe1c('0x19')](_0x5ff5c0[_0xfe1c('0x31')][_0xfe1c('0x19')]);}_0x14afdc[_0xfe1c('0x38')]=qs[_0xfe1c('0x39')](_0x5ff5c0[_0xfe1c('0x31')][_0xfe1c('0x39')]);_0x14afdc['where']=qs[_0xfe1c('0x33')](_[_0xfe1c('0x3a')](_0x5ff5c0['query'],_0x1bdba2[_0xfe1c('0x33')]),_0x443630);if(_0x5ff5c0['query']['filter']){_0x14afdc[_0xfe1c('0x3b')]=_[_0xfe1c('0x3c')](_0x14afdc['where'],{'$or':_[_0xfe1c('0x2b')](_0x443630,function(_0x4141be){if(_0x4141be[_0xfe1c('0x2f')]!==_0xfe1c('0x3d')){var _0x4c6c1e={};_0x4c6c1e[_0x4141be['name']]={'$like':'%'+_0x5ff5c0['query'][_0xfe1c('0x3e')]+'%'};return _0x4c6c1e;}})});}_0x14afdc=_[_0xfe1c('0x3c')]({},_0x14afdc,_0x5ff5c0[_0xfe1c('0x3f')]);var _0x55fe9b={'where':_0x14afdc[_0xfe1c('0x3b')]};return db[_0xfe1c('0x2c')][_0xfe1c('0x1c')](_0x55fe9b)['then'](function(_0x84b88e){_0x4a3f47[_0xfe1c('0x1c')]=_0x84b88e;if(_0x5ff5c0[_0xfe1c('0x31')][_0xfe1c('0x40')]){_0x14afdc[_0xfe1c('0x41')]=[{'all':!![]}];}return db[_0xfe1c('0x2c')][_0xfe1c('0x42')](_0x14afdc);})[_0xfe1c('0x24')](function(_0x21c36f){_0x4a3f47[_0xfe1c('0x43')]=_0x21c36f;return _0x4a3f47;})[_0xfe1c('0x24')](respondWithFilteredResult(_0x552c11,_0x14afdc))[_0xfe1c('0x44')](handleError(_0x552c11,null));};exports[_0xfe1c('0x45')]=function(_0x476206,_0x30064a){var _0x1daa0b={'raw':!![],'where':{'id':_0x476206['params']['id']}},_0x5b9d26={};_0x5b9d26[_0xfe1c('0x30')]=_[_0xfe1c('0x32')](db[_0xfe1c('0x2c')]['rawAttributes']);_0x5b9d26[_0xfe1c('0x31')]=_[_0xfe1c('0x32')](_0x476206[_0xfe1c('0x31')]);_0x5b9d26['filters']=_[_0xfe1c('0x35')](_0x5b9d26['model'],_0x5b9d26['query']);_0x1daa0b[_0xfe1c('0x34')]=_[_0xfe1c('0x35')](_0x5b9d26[_0xfe1c('0x30')],qs['fields'](_0x476206[_0xfe1c('0x31')]['fields']));_0x1daa0b[_0xfe1c('0x34')]=_0x1daa0b[_0xfe1c('0x34')]['length']?_0x1daa0b['attributes']:_0x5b9d26[_0xfe1c('0x30')];if(_0x476206[_0xfe1c('0x31')][_0xfe1c('0x40')]){_0x1daa0b[_0xfe1c('0x41')]=[{'all':!![]}];}_0x1daa0b=_[_0xfe1c('0x3c')]({},_0x1daa0b,_0x476206[_0xfe1c('0x3f')]);return db[_0xfe1c('0x2c')][_0xfe1c('0x46')](_0x1daa0b)[_0xfe1c('0x24')](handleEntityNotFound(_0x30064a,null))['then'](respondWithResult(_0x30064a,null))[_0xfe1c('0x44')](handleError(_0x30064a,null));};exports['create']=function(_0x33a2c9,_0x4ab0ec){return db[_0xfe1c('0x2c')][_0xfe1c('0x47')](_0x33a2c9[_0xfe1c('0x48')],{})[_0xfe1c('0x24')](function(_0x46b172){var _0x6f3f20=_0x33a2c9['user'][_0xfe1c('0x49')]({'plain':!![]});if(!_0x6f3f20)throw new Error(_0xfe1c('0x4a'));if(_0x6f3f20['role']===_0xfe1c('0x4b')){var _0x315549=_0x46b172[_0xfe1c('0x49')]({'plain':!![]});var _0x460424=_0xfe1c('0x4c');return db[_0xfe1c('0x4d')][_0xfe1c('0x46')]({'where':{'name':_0x460424,'userProfileId':_0x6f3f20[_0xfe1c('0x4e')]},'raw':!![]})[_0xfe1c('0x24')](function(_0x4dc6bb){if(_0x4dc6bb&&_0x4dc6bb[_0xfe1c('0x4f')]===0x0){return db['UserProfileResource'][_0xfe1c('0x47')]({'name':_0x315549['name'],'resourceId':_0x315549['id'],'type':_0x4dc6bb[_0xfe1c('0x29')],'sectionId':_0x4dc6bb['id']},{})[_0xfe1c('0x24')](function(){return _0x46b172;});}else{return _0x46b172;}})['catch'](function(_0x1b4340){logger[_0xfe1c('0x50')](_0xfe1c('0x51'),_0x1b4340);throw _0x1b4340;});}return _0x46b172;})[_0xfe1c('0x24')](respondWithResult(_0x4ab0ec,0xc9))[_0xfe1c('0x44')](handleError(_0x4ab0ec,null));};exports['update']=function(_0x28e159,_0x54a206){if(_0x28e159['body']['id']){delete _0x28e159[_0xfe1c('0x48')]['id'];}return db[_0xfe1c('0x2c')][_0xfe1c('0x46')]({'where':{'id':_0x28e159[_0xfe1c('0x52')]['id']}})[_0xfe1c('0x24')](handleEntityNotFound(_0x54a206,null))[_0xfe1c('0x24')](saveUpdates(_0x28e159['body'],null))['then'](respondWithResult(_0x54a206,null))[_0xfe1c('0x44')](handleError(_0x54a206,null));};exports['destroy']=function(_0x221775,_0x494288){return db[_0xfe1c('0x2c')][_0xfe1c('0x46')]({'where':{'id':_0x221775[_0xfe1c('0x52')]['id']}})[_0xfe1c('0x24')](handleEntityNotFound(_0x494288,null))[_0xfe1c('0x24')](removeEntity(_0x494288,null))[_0xfe1c('0x44')](handleError(_0x494288,null));};
\ No newline at end of file
+var _0x0d58=['mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','destroy','Pauses','end','sendStatus','error','stack','name','send','index','Pause','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','map','type','filter','options','includeAll','include','findAll','rows','catch','show','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x55bbea,_0x4e6103){var _0x466446=function(_0x77371d){while(--_0x77371d){_0x55bbea['push'](_0x55bbea['shift']());}};_0x466446(++_0x4e6103);}(_0x0d58,0x194));var _0x80d5=function(_0x38987f,_0xc79720){_0x38987f=_0x38987f-0x0;var _0x4cb697=_0x0d58[_0x38987f];return _0x4cb697;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x80d5('0x0'));var zipdir=require(_0x80d5('0x1'));var jsonpatch=require(_0x80d5('0x2'));var rp=require(_0x80d5('0x3'));var moment=require(_0x80d5('0x4'));var BPromise=require(_0x80d5('0x5'));var Mustache=require(_0x80d5('0x6'));var util=require('util');var path=require(_0x80d5('0x7'));var sox=require(_0x80d5('0x8'));var csv=require(_0x80d5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x80d5('0xa'));var _=require(_0x80d5('0xb'));var squel=require(_0x80d5('0xc'));var crypto=require('crypto');var jsforce=require(_0x80d5('0xd'));var deskjs=require(_0x80d5('0xe'));var toCsv=require(_0x80d5('0x9'));var querystring=require(_0x80d5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x80d5('0x10'));var logger=require('../../config/logger')(_0x80d5('0x11'));var utils=require(_0x80d5('0x12'));var config=require(_0x80d5('0x13'));var licenseUtil=require(_0x80d5('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x281372,_0x12f614){_0x12f614=_0x12f614||0xcc;return function(_0x42b2ef){if(_0x42b2ef){return _0x281372['sendStatus'](_0x12f614);}return _0x281372['status'](_0x12f614)['end']();};}function respondWithResult(_0x411296,_0x2df72f){_0x2df72f=_0x2df72f||0xc8;return function(_0x2e4fdd){if(_0x2e4fdd){return _0x411296[_0x80d5('0x15')](_0x2df72f)[_0x80d5('0x16')](_0x2e4fdd);}};}function respondWithFilteredResult(_0x329101,_0x5f095c){return function(_0x5615c4){if(_0x5615c4){var _0x15facd=typeof _0x5f095c[_0x80d5('0x17')]===_0x80d5('0x18')&&typeof _0x5f095c['limit']===_0x80d5('0x18');var _0x4ba180=_0x5615c4[_0x80d5('0x19')];var _0x35d900=_0x15facd?0x0:_0x5f095c[_0x80d5('0x17')];var _0x34e8f6=_0x15facd?_0x5615c4['count']:_0x5f095c['offset']+_0x5f095c[_0x80d5('0x1a')];var _0x1814ac;if(_0x34e8f6>=_0x4ba180){_0x34e8f6=_0x4ba180;_0x1814ac=0xc8;}else{_0x1814ac=0xce;}_0x329101['status'](_0x1814ac);return _0x329101['set'](_0x80d5('0x1b'),_0x35d900+'-'+_0x34e8f6+'/'+_0x4ba180)[_0x80d5('0x16')](_0x5615c4);}return null;};}function patchUpdates(_0x251e3b){return function(_0x166302){try{jsonpatch[_0x80d5('0x1c')](_0x166302,_0x251e3b,!![]);}catch(_0x427c15){return BPromise[_0x80d5('0x1d')](_0x427c15);}return _0x166302[_0x80d5('0x1e')]();};}function saveUpdates(_0x530899,_0x39794a){return function(_0x3b3686){if(_0x3b3686){return _0x3b3686[_0x80d5('0x1f')](_0x530899)[_0x80d5('0x20')](function(_0x56f769){return _0x56f769;});}return null;};}function removeEntity(_0x16bb40,_0x50d358){return function(_0x58c1e4){if(_0x58c1e4){return _0x58c1e4[_0x80d5('0x21')]()[_0x80d5('0x20')](function(){var _0x1242d0=_0x58c1e4['get']({'plain':!![]});var _0x51e7f6=_0x80d5('0x22');return db['UserProfileResource'][_0x80d5('0x21')]({'where':{'type':_0x51e7f6,'resourceId':_0x1242d0['id']}})['then'](function(){return _0x58c1e4;});})[_0x80d5('0x20')](function(){_0x16bb40[_0x80d5('0x15')](0xcc)[_0x80d5('0x23')]();});}};}function handleEntityNotFound(_0x491d8f,_0x314d98){return function(_0xcf9306){if(!_0xcf9306){_0x491d8f[_0x80d5('0x24')](0x194);}return _0xcf9306;};}function handleError(_0x31d4dd,_0x883df8){_0x883df8=_0x883df8||0x1f4;return function(_0xd4bfbf){logger[_0x80d5('0x25')](_0xd4bfbf[_0x80d5('0x26')]);if(_0xd4bfbf[_0x80d5('0x27')]){delete _0xd4bfbf[_0x80d5('0x27')];}_0x31d4dd[_0x80d5('0x15')](_0x883df8)[_0x80d5('0x28')](_0xd4bfbf);};}exports[_0x80d5('0x29')]=function(_0x1d8e17,_0x12b55f){var _0x586aa2={},_0x14723b={},_0x4af12e={'count':0x0,'rows':[]};var _0x22bb9b=_['map'](db[_0x80d5('0x2a')][_0x80d5('0x2b')],function(_0x4e6c87){return{'name':_0x4e6c87[_0x80d5('0x2c')],'type':_0x4e6c87['type'][_0x80d5('0x2d')]};});_0x14723b[_0x80d5('0x2e')]=_['map'](_0x22bb9b,_0x80d5('0x27'));_0x14723b[_0x80d5('0x2f')]=_[_0x80d5('0x30')](_0x1d8e17[_0x80d5('0x2f')]);_0x14723b[_0x80d5('0x31')]=_[_0x80d5('0x32')](_0x14723b['model'],_0x14723b['query']);_0x586aa2[_0x80d5('0x33')]=_[_0x80d5('0x32')](_0x14723b[_0x80d5('0x2e')],qs[_0x80d5('0x34')](_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x34')]));_0x586aa2[_0x80d5('0x33')]=_0x586aa2[_0x80d5('0x33')][_0x80d5('0x35')]?_0x586aa2[_0x80d5('0x33')]:_0x14723b[_0x80d5('0x2e')];if(!_0x1d8e17['query'][_0x80d5('0x36')](_0x80d5('0x37'))){_0x586aa2[_0x80d5('0x1a')]=qs[_0x80d5('0x1a')](_0x1d8e17[_0x80d5('0x2f')]['limit']);_0x586aa2[_0x80d5('0x17')]=qs[_0x80d5('0x17')](_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x17')]);}_0x586aa2[_0x80d5('0x38')]=qs[_0x80d5('0x39')](_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x39')]);_0x586aa2[_0x80d5('0x3a')]=qs[_0x80d5('0x31')](_['pick'](_0x1d8e17[_0x80d5('0x2f')],_0x14723b[_0x80d5('0x31')]),_0x22bb9b);if(_0x1d8e17[_0x80d5('0x2f')]['filter']){_0x586aa2[_0x80d5('0x3a')]=_[_0x80d5('0x3b')](_0x586aa2[_0x80d5('0x3a')],{'$or':_[_0x80d5('0x3c')](_0x22bb9b,function(_0x4eea7){if(_0x4eea7[_0x80d5('0x3d')]!=='VIRTUAL'){var _0x24aed0={};_0x24aed0[_0x4eea7[_0x80d5('0x27')]]={'$like':'%'+_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x3e')]+'%'};return _0x24aed0;}})});}_0x586aa2=_[_0x80d5('0x3b')]({},_0x586aa2,_0x1d8e17[_0x80d5('0x3f')]);var _0x459fef={'where':_0x586aa2['where']};return db['Pause']['count'](_0x459fef)[_0x80d5('0x20')](function(_0x406119){_0x4af12e[_0x80d5('0x19')]=_0x406119;if(_0x1d8e17[_0x80d5('0x2f')][_0x80d5('0x40')]){_0x586aa2[_0x80d5('0x41')]=[{'all':!![]}];}return db['Pause'][_0x80d5('0x42')](_0x586aa2);})[_0x80d5('0x20')](function(_0x2b14df){_0x4af12e[_0x80d5('0x43')]=_0x2b14df;return _0x4af12e;})['then'](respondWithFilteredResult(_0x12b55f,_0x586aa2))[_0x80d5('0x44')](handleError(_0x12b55f,null));};exports[_0x80d5('0x45')]=function(_0x348cc8,_0x28b27d){var _0x59cf05={'raw':!![],'where':{'id':_0x348cc8['params']['id']}},_0x2f5347={};_0x2f5347['model']=_[_0x80d5('0x30')](db['Pause'][_0x80d5('0x2b')]);_0x2f5347[_0x80d5('0x2f')]=_[_0x80d5('0x30')](_0x348cc8[_0x80d5('0x2f')]);_0x2f5347['filters']=_[_0x80d5('0x32')](_0x2f5347['model'],_0x2f5347['query']);_0x59cf05[_0x80d5('0x33')]=_[_0x80d5('0x32')](_0x2f5347[_0x80d5('0x2e')],qs[_0x80d5('0x34')](_0x348cc8[_0x80d5('0x2f')][_0x80d5('0x34')]));_0x59cf05[_0x80d5('0x33')]=_0x59cf05[_0x80d5('0x33')][_0x80d5('0x35')]?_0x59cf05[_0x80d5('0x33')]:_0x2f5347[_0x80d5('0x2e')];if(_0x348cc8[_0x80d5('0x2f')][_0x80d5('0x40')]){_0x59cf05[_0x80d5('0x41')]=[{'all':!![]}];}_0x59cf05=_['merge']({},_0x59cf05,_0x348cc8[_0x80d5('0x3f')]);return db[_0x80d5('0x2a')]['find'](_0x59cf05)[_0x80d5('0x20')](handleEntityNotFound(_0x28b27d,null))[_0x80d5('0x20')](respondWithResult(_0x28b27d,null))[_0x80d5('0x44')](handleError(_0x28b27d,null));};exports[_0x80d5('0x46')]=function(_0x124b47,_0x2a2036){return db['Pause'][_0x80d5('0x46')](_0x124b47[_0x80d5('0x47')],{})[_0x80d5('0x20')](function(_0x13e2ba){var _0x2eda81=_0x124b47[_0x80d5('0x48')]['get']({'plain':!![]});if(!_0x2eda81)throw new Error(_0x80d5('0x49'));if(_0x2eda81['role']===_0x80d5('0x48')){var _0x1135f4=_0x13e2ba[_0x80d5('0x4a')]({'plain':!![]});var _0x430fa9='Pauses';return db[_0x80d5('0x4b')][_0x80d5('0x4c')]({'where':{'name':_0x430fa9,'userProfileId':_0x2eda81[_0x80d5('0x4d')]},'raw':!![]})[_0x80d5('0x20')](function(_0x3a7e13){if(_0x3a7e13&&_0x3a7e13[_0x80d5('0x4e')]===0x0){return db[_0x80d5('0x4f')]['create']({'name':_0x1135f4['name'],'resourceId':_0x1135f4['id'],'type':_0x3a7e13['name'],'sectionId':_0x3a7e13['id']},{})[_0x80d5('0x20')](function(){return _0x13e2ba;});}else{return _0x13e2ba;}})['catch'](function(_0xcd7e51){logger[_0x80d5('0x25')](_0x80d5('0x50'),_0xcd7e51);throw _0xcd7e51;});}return _0x13e2ba;})[_0x80d5('0x20')](respondWithResult(_0x2a2036,0xc9))[_0x80d5('0x44')](handleError(_0x2a2036,null));};exports[_0x80d5('0x1f')]=function(_0x588392,_0x13e1a5){if(_0x588392[_0x80d5('0x47')]['id']){delete _0x588392['body']['id'];}return db['Pause']['find']({'where':{'id':_0x588392[_0x80d5('0x51')]['id']}})[_0x80d5('0x20')](handleEntityNotFound(_0x13e1a5,null))[_0x80d5('0x20')](saveUpdates(_0x588392[_0x80d5('0x47')],null))['then'](respondWithResult(_0x13e1a5,null))[_0x80d5('0x44')](handleError(_0x13e1a5,null));};exports[_0x80d5('0x21')]=function(_0x4852c2,_0x3ebc63){return db[_0x80d5('0x2a')][_0x80d5('0x4c')]({'where':{'id':_0x4852c2['params']['id']}})[_0x80d5('0x20')](handleEntityNotFound(_0x3ebc63,null))[_0x80d5('0x20')](removeEntity(_0x3ebc63,null))[_0x80d5('0x44')](handleError(_0x3ebc63,null));};
\ No newline at end of file
index 256a5f3..1a1f9f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','Pause','tools_pauses','lodash','util'];(function(_0x5cf771,_0x59fae5){var _0x241883=function(_0x5f4ea3){while(--_0x5f4ea3){_0x5cf771['push'](_0x5cf771['shift']());}};_0x241883(++_0x59fae5);}(_0x5fab,0x177));var _0xb5fa=function(_0x1ad12c,_0x5bd618){_0x1ad12c=_0x1ad12c-0x0;var _0xb60e0f=_0x5fab[_0x1ad12c];return _0xb60e0f;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fc3=['lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./pause.attributes','exports','define','tools_pauses'];(function(_0x5229ab,_0x5b4487){var _0x2b6a5e=function(_0x2c8675){while(--_0x2c8675){_0x5229ab['push'](_0x5229ab['shift']());}};_0x2b6a5e(++_0x5b4487);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3d00db,_0x3692b3){_0x3d00db=_0x3d00db-0x0;var _0x41f115=_0x5fc3[_0x3d00db];return _0x41f115;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var logger=require('../../config/logger')(_0x35fc('0x2'));var moment=require(_0x35fc('0x3'));var BPromise=require(_0x35fc('0x4'));var rp=require(_0x35fc('0x5'));var fs=require('fs');var path=require(_0x35fc('0x6'));var rimraf=require('rimraf');var config=require(_0x35fc('0x7'));var attributes=require(_0x35fc('0x8'));module[_0x35fc('0x9')]=function(_0x5b85ad,_0x5754be){return _0x5b85ad[_0x35fc('0xa')]('Pause',attributes,{'tableName':_0x35fc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a766c3..1bb8d9c 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(_0xbcaaa2,_0x1d1b4e){var _0x53a6de=function(_0x4c5962){while(--_0x4c5962){_0xbcaaa2['push'](_0xbcaaa2['shift']());}};_0x53a6de(++_0x1d1b4e);}(_0xb10b,0x12a));var _0xbb10=function(_0x34951f,_0x277327){_0x34951f=_0x34951f-0x0;var _0x487db1=_0xb10b[_0x34951f];return _0x487db1;};'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 _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x3068c2,_0x2eb73e){var _0x47de50=function(_0x68eb2a){while(--_0x68eb2a){_0x3068c2['push'](_0x3068c2['shift']());}};_0x47de50(++_0x2eb73e);}(_0x7a54,0x106));var _0x47a5=function(_0x327fcf,_0xc46430){_0x327fcf=_0x327fcf-0x0;var _0x3a0b07=_0x7a54[_0x327fcf];return _0x3a0b07;};'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')]('Pause,\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['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 146b48b..324a63d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x984b=['Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','/webhook','webhookGet','/:id','show','get','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','format','%s-%s%s','extname','now','post','file','upload','put','update','delete','exports','connect-timeout','express'];(function(_0x54f152,_0x4e6fc2){var _0x8118fd=function(_0x2ded){while(--_0x2ded){_0x54f152['push'](_0x54f152['shift']());}};_0x8118fd(++_0x4e6fc2);}(_0x984b,0xee));var _0xb984=function(_0x21692c,_0x548274){_0x21692c=_0x21692c-0x0;var _0x370193=_0x984b[_0x21692c];return _0x370193;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xb984('0x0'));var express=require(_0xb984('0x1'));var router=express[_0xb984('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb984('0x3'));var config=require(_0xb984('0x4'));var controller=require('./plugin.controller');router['get']('/',auth[_0xb984('0x5')](),controller[_0xb984('0x6')]);router['get'](_0xb984('0x7'),controller[_0xb984('0x8')]);router['get'](_0xb984('0x9'),auth['isAuthenticated'](),controller[_0xb984('0xa')]);router[_0xb984('0xb')](_0xb984('0xc'),auth[_0xb984('0x5')](),controller[_0xb984('0xd')]);var upload=multer({'storage':multer[_0xb984('0xe')]({'destination':function(_0x11525c,_0xfca315,_0x16d46f){_0x16d46f(null,path[_0xb984('0xf')](config[_0xb984('0x10')],_0xb984('0x11')));},'filename':function(_0x5b4add,_0x1b922b,_0x4b9c75){_0x1b922b[_0xb984('0x12')]=_0x1b922b[_0xb984('0x12')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4b9c75(null,util[_0xb984('0x13')](_0xb984('0x14'),path['basename'](_0x1b922b[_0xb984('0x12')],path[_0xb984('0x15')](_0x1b922b['originalname'])),Date[_0xb984('0x16')](),path[_0xb984('0x15')](_0x1b922b['originalname'])));}})});router[_0xb984('0x17')]('/',upload['single'](_0xb984('0x18')),controller[_0xb984('0x19')]);router[_0xb984('0x17')](_0xb984('0x7'),controller['webhookPost']);router[_0xb984('0x1a')](_0xb984('0x9'),auth[_0xb984('0x5')](),controller[_0xb984('0x1b')]);router[_0xb984('0x1c')](_0xb984('0x9'),auth['isAuthenticated'](),controller[_0xb984('0x1c')]);module[_0xb984('0x1d')]=router;
\ No newline at end of file
+var _0x207c=['file','upload','post','webhookPost','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','index','get','/webhook','/:id','isAuthenticated','/:id/download','download','diskStorage','root','originalname','replace','format','%s-%s%s','extname','now','single'];(function(_0x4a8b3b,_0x1c77bd){var _0x128e8f=function(_0xb841bc){while(--_0xb841bc){_0x4a8b3b['push'](_0x4a8b3b['shift']());}};_0x128e8f(++_0x1c77bd);}(_0x207c,0x1e8));var _0xc207=function(_0x57fa0b,_0x5df1ce){_0x57fa0b=_0x57fa0b-0x0;var _0x18669f=_0x207c[_0x57fa0b];return _0x18669f;};'use strict';var multer=require('multer');var util=require(_0xc207('0x0'));var path=require(_0xc207('0x1'));var timeout=require(_0xc207('0x2'));var express=require(_0xc207('0x3'));var router=express[_0xc207('0x4')]();var fs_extra=require(_0xc207('0x5'));var auth=require(_0xc207('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc207('0x7'));var controller=require('./plugin.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xc207('0x8')]);router[_0xc207('0x9')](_0xc207('0xa'),controller['webhookGet']);router[_0xc207('0x9')](_0xc207('0xb'),auth[_0xc207('0xc')](),controller['show']);router[_0xc207('0x9')](_0xc207('0xd'),auth[_0xc207('0xc')](),controller[_0xc207('0xe')]);var upload=multer({'storage':multer[_0xc207('0xf')]({'destination':function(_0x347549,_0x487d95,_0x574425){_0x574425(null,path['join'](config[_0xc207('0x10')],'server/files/plugins'));},'filename':function(_0x2741f3,_0x2782ce,_0x59d401){_0x2782ce[_0xc207('0x11')]=_0x2782ce[_0xc207('0x11')][_0xc207('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59d401(null,util[_0xc207('0x13')](_0xc207('0x14'),path['basename'](_0x2782ce[_0xc207('0x11')],path[_0xc207('0x15')](_0x2782ce[_0xc207('0x11')])),Date[_0xc207('0x16')](),path['extname'](_0x2782ce['originalname'])));}})});router['post']('/',upload[_0xc207('0x17')](_0xc207('0x18')),controller[_0xc207('0x19')]);router[_0xc207('0x1a')]('/webhook',controller[_0xc207('0x1b')]);router[_0xc207('0x1c')](_0xc207('0xb'),auth['isAuthenticated'](),controller[_0xc207('0x1d')]);router['delete'](_0xc207('0xb'),auth[_0xc207('0xc')](),controller[_0xc207('0x1e')]);module[_0xc207('0x1f')]=router;
\ No newline at end of file
index 9408596..b390a3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60c5=['Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','adminOnly','agentOnly','never','always','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','html','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN'];(function(_0x13dbe5,_0x5a4d1d){var _0x52d693=function(_0x2d0ac3){while(--_0x2d0ac3){_0x13dbe5['push'](_0x13dbe5['shift']());}};_0x52d693(++_0x5a4d1d);}(_0x60c5,0x181));var _0x560c=function(_0x14b669,_0x5abfdd){_0x14b669=_0x14b669-0x0;var _0x402904=_0x60c5[_0x14b669];return _0x402904;};'use strict';var Sequelize=require('sequelize');module[_0x560c('0x0')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0x560c('0x1'),_0x560c('0x2'))},'description':{'type':Sequelize[_0x560c('0x3')]},'version':{'type':Sequelize[_0x560c('0x3')]},'path':{'type':Sequelize[_0x560c('0x4')],'comment':_0x560c('0x5')},'active':{'type':Sequelize[_0x560c('0x6')],'defaultValue':0x0,'comment':_0x560c('0x7')},'sidebar':{'type':Sequelize[_0x560c('0x8')](_0x560c('0x9'),_0x560c('0xa'),'always',_0x560c('0xb')),'defaultValue':_0x560c('0xc'),'comment':_0x560c('0xd')},'icon':{'type':Sequelize[_0x560c('0x4')]},'adminUrl':{'type':Sequelize[_0x560c('0x4')]},'agentUrl':{'type':Sequelize[_0x560c('0x4')]},'scriptName':{'type':Sequelize[_0x560c('0x4')]},'scriptPath':{'type':Sequelize[_0x560c('0x4')]}};
\ No newline at end of file
+var _0x2c2c=['TEXT','STRING','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','ENUM','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','html','script'];(function(_0xb713b7,_0x196220){var _0x3b081a=function(_0x31000c){while(--_0x31000c){_0xb713b7['push'](_0xb713b7['shift']());}};_0x3b081a(++_0x196220);}(_0x2c2c,0x168));var _0xc2c2=function(_0x4bdf38,_0x2ae6c7){_0x4bdf38=_0x4bdf38-0x0;var _0x2dd325=_0x2c2c[_0x4bdf38];return _0x2dd325;};'use strict';var Sequelize=require(_0xc2c2('0x0'));module[_0xc2c2('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize['ENUM'](_0xc2c2('0x2'),_0xc2c2('0x3'))},'description':{'type':Sequelize['TEXT']},'version':{'type':Sequelize[_0xc2c2('0x4')]},'path':{'type':Sequelize[_0xc2c2('0x5')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0xc2c2('0x6')],'defaultValue':0x0,'comment':_0xc2c2('0x7')},'sidebar':{'type':Sequelize[_0xc2c2('0x8')](_0xc2c2('0x9'),_0xc2c2('0xa'),_0xc2c2('0xb'),_0xc2c2('0xc')),'defaultValue':_0xc2c2('0xb'),'comment':_0xc2c2('0xd')},'icon':{'type':Sequelize[_0xc2c2('0x5')]},'adminUrl':{'type':Sequelize[_0xc2c2('0x5')]},'agentUrl':{'type':Sequelize[_0xc2c2('0x5')]},'scriptName':{'type':Sequelize[_0xc2c2('0x5')]},'scriptPath':{'type':Sequelize[_0xc2c2('0x5')]}};
\ No newline at end of file
index 8e76550..6a4a08c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76a4=['close','Plugin\x20not\x20found','unlinkSync','info','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','isDirectory','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','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','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','method','headers','endsWith','statusCode','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','content-length','content-type','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','extract-zip','archiver','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Plugins','UserProfileResource','sendStatus','stack','name','index','map','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','Plugin','includeAll','include','findAll','rows','catch','params','rawAttributes','length','download','find','root','server/files/plugins','format','%s.zip','zip','warning','code','ENOENT','error','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','join','dirname','basename','attachments/**/*'];(function(_0x3ee02f,_0x13e829){var _0x28854c=function(_0xb39b47){while(--_0xb39b47){_0x3ee02f['push'](_0x3ee02f['shift']());}};_0x28854c(++_0x13e829);}(_0x76a4,0xeb));var _0x476a=function(_0x3fc017,_0x288faf){_0x3fc017=_0x3fc017-0x0;var _0x542e8c=_0x76a4[_0x3fc017];return _0x542e8c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x476a('0x0'));var zipdir=require(_0x476a('0x1'));var jsonpatch=require(_0x476a('0x2'));var rp=require(_0x476a('0x3'));var moment=require('moment');var BPromise=require(_0x476a('0x4'));var Mustache=require(_0x476a('0x5'));var util=require(_0x476a('0x6'));var path=require(_0x476a('0x7'));var sox=require(_0x476a('0x8'));var csv=require(_0x476a('0x9'));var ejs=require(_0x476a('0xa'));var fs=require('fs');var fs_extra=require(_0x476a('0xb'));var _=require(_0x476a('0xc'));var squel=require(_0x476a('0xd'));var crypto=require('crypto');var jsforce=require(_0x476a('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x476a('0x9'));var querystring=require(_0x476a('0xf'));var Papa=require('papaparse');var extract=require(_0x476a('0x10'));var rimraf=require(_0x476a('0x0'));var archiver=require(_0x476a('0x11'));var Redis=require('ioredis');var authService=require(_0x476a('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x476a('0x13'));var hardwareService=require(_0x476a('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x476a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x476a('0x16'));var db=require('../../mysqldb')['db'];config[_0x476a('0x17')]=_[_0x476a('0x18')](config[_0x476a('0x17')],{'host':_0x476a('0x19'),'port':0x18eb});var socket=require(_0x476a('0x1a'))(new Redis(config[_0x476a('0x17')]));require(_0x476a('0x1b'))[_0x476a('0x1c')](socket);function respondWithStatusCode(_0x46a57d,_0xd6560){_0xd6560=_0xd6560||0xcc;return function(_0x6c6999){if(_0x6c6999){return _0x46a57d['sendStatus'](_0xd6560);}return _0x46a57d[_0x476a('0x1d')](_0xd6560)[_0x476a('0x1e')]();};}function respondWithResult(_0x3b7fba,_0x511114){_0x511114=_0x511114||0xc8;return function(_0x4b5aee){if(_0x4b5aee){return _0x3b7fba[_0x476a('0x1d')](_0x511114)[_0x476a('0x1f')](_0x4b5aee);}};}function respondWithFilteredResult(_0x454475,_0xe50d82){return function(_0x5a6a91){if(_0x5a6a91){var _0x29d87d=typeof _0xe50d82[_0x476a('0x20')]===_0x476a('0x21')&&typeof _0xe50d82[_0x476a('0x22')]===_0x476a('0x21');var _0x30da58=_0x5a6a91['count'];var _0x5de7f3=_0x29d87d?0x0:_0xe50d82['offset'];var _0x277818=_0x29d87d?_0x5a6a91[_0x476a('0x23')]:_0xe50d82[_0x476a('0x20')]+_0xe50d82[_0x476a('0x22')];var _0x3f0ed3;if(_0x277818>=_0x30da58){_0x277818=_0x30da58;_0x3f0ed3=0xc8;}else{_0x3f0ed3=0xce;}_0x454475[_0x476a('0x1d')](_0x3f0ed3);return _0x454475[_0x476a('0x24')](_0x476a('0x25'),_0x5de7f3+'-'+_0x277818+'/'+_0x30da58)['json'](_0x5a6a91);}return null;};}function patchUpdates(_0x122b8e){return function(_0xae3296){try{jsonpatch[_0x476a('0x26')](_0xae3296,_0x122b8e,!![]);}catch(_0x48029e){return BPromise[_0x476a('0x27')](_0x48029e);}return _0xae3296[_0x476a('0x28')]();};}function saveUpdates(_0x2a288d,_0x2786ed){return function(_0x174b96){if(_0x174b96){return _0x174b96[_0x476a('0x29')](_0x2a288d)['then'](function(_0x38921c){return _0x38921c;});}return null;};}function removeEntity(_0x3aa63f,_0x15f461){return function(_0x435fee){if(_0x435fee){return _0x435fee['destroy']()[_0x476a('0x2a')](function(){var _0x8ec758=_0x435fee[_0x476a('0x2b')]({'plain':!![]});var _0x39a305=_0x476a('0x2c');return db[_0x476a('0x2d')]['destroy']({'where':{'type':_0x39a305,'resourceId':_0x8ec758['id']}})[_0x476a('0x2a')](function(){return _0x435fee;});})[_0x476a('0x2a')](function(){_0x3aa63f[_0x476a('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29f394,_0x3a9446){return function(_0x9d9149){if(!_0x9d9149){_0x29f394[_0x476a('0x2e')](0x194);}return _0x9d9149;};}function handleError(_0x18a12a,_0x3654e1){_0x3654e1=_0x3654e1||0x1f4;return function(_0xbcf35){logger['error'](_0xbcf35[_0x476a('0x2f')]);if(_0xbcf35[_0x476a('0x30')]){delete _0xbcf35[_0x476a('0x30')];}_0x18a12a[_0x476a('0x1d')](_0x3654e1)['send'](_0xbcf35);};}exports[_0x476a('0x31')]=function(_0x4cd67c,_0x45744e){var _0x3f73e3={},_0x488193={},_0x4587ff={'count':0x0,'rows':[]};var _0x405872=_[_0x476a('0x32')](db['Plugin']['rawAttributes'],function(_0x511f65){return{'name':_0x511f65[_0x476a('0x33')],'type':_0x511f65[_0x476a('0x34')][_0x476a('0x35')]};});_0x488193[_0x476a('0x36')]=_[_0x476a('0x32')](_0x405872,'name');_0x488193['query']=_[_0x476a('0x37')](_0x4cd67c[_0x476a('0x38')]);_0x488193[_0x476a('0x39')]=_[_0x476a('0x3a')](_0x488193[_0x476a('0x36')],_0x488193[_0x476a('0x38')]);_0x3f73e3['attributes']=_[_0x476a('0x3a')](_0x488193[_0x476a('0x36')],qs['fields'](_0x4cd67c['query'][_0x476a('0x3b')]));_0x3f73e3['attributes']=_0x3f73e3[_0x476a('0x3c')]['length']?_0x3f73e3[_0x476a('0x3c')]:_0x488193['model'];if(!_0x4cd67c[_0x476a('0x38')]['hasOwnProperty'](_0x476a('0x3d'))){_0x3f73e3[_0x476a('0x22')]=qs[_0x476a('0x22')](_0x4cd67c[_0x476a('0x38')][_0x476a('0x22')]);_0x3f73e3[_0x476a('0x20')]=qs[_0x476a('0x20')](_0x4cd67c[_0x476a('0x38')][_0x476a('0x20')]);}_0x3f73e3[_0x476a('0x3e')]=qs[_0x476a('0x3f')](_0x4cd67c[_0x476a('0x38')][_0x476a('0x3f')]);_0x3f73e3[_0x476a('0x40')]=qs['filters'](_[_0x476a('0x41')](_0x4cd67c[_0x476a('0x38')],_0x488193['filters']),_0x405872);if(_0x4cd67c[_0x476a('0x38')]['filter']){_0x3f73e3[_0x476a('0x40')]=_[_0x476a('0x42')](_0x3f73e3[_0x476a('0x40')],{'$or':_[_0x476a('0x32')](_0x405872,function(_0x97ebeb){if(_0x97ebeb[_0x476a('0x34')]!==_0x476a('0x43')){var _0x39f2f4={};_0x39f2f4[_0x97ebeb['name']]={'$like':'%'+_0x4cd67c['query'][_0x476a('0x44')]+'%'};return _0x39f2f4;}})});}_0x3f73e3=_['merge']({},_0x3f73e3,_0x4cd67c[_0x476a('0x45')]);var _0x2725a2={'where':_0x3f73e3[_0x476a('0x40')]};return db[_0x476a('0x46')]['count'](_0x2725a2)[_0x476a('0x2a')](function(_0x5b3d62){_0x4587ff[_0x476a('0x23')]=_0x5b3d62;if(_0x4cd67c[_0x476a('0x38')][_0x476a('0x47')]){_0x3f73e3[_0x476a('0x48')]=[{'all':!![]}];}return db[_0x476a('0x46')][_0x476a('0x49')](_0x3f73e3);})[_0x476a('0x2a')](function(_0x1d2104){_0x4587ff[_0x476a('0x4a')]=_0x1d2104;return _0x4587ff;})['then'](respondWithFilteredResult(_0x45744e,_0x3f73e3))[_0x476a('0x4b')](handleError(_0x45744e,null));};exports['show']=function(_0x242276,_0x17c8dd){var _0x2ee9d2={'raw':!![],'where':{'id':_0x242276[_0x476a('0x4c')]['id']}},_0x4e01c8={};_0x4e01c8[_0x476a('0x36')]=_[_0x476a('0x37')](db[_0x476a('0x46')][_0x476a('0x4d')]);_0x4e01c8[_0x476a('0x38')]=_['keys'](_0x242276[_0x476a('0x38')]);_0x4e01c8[_0x476a('0x39')]=_[_0x476a('0x3a')](_0x4e01c8[_0x476a('0x36')],_0x4e01c8[_0x476a('0x38')]);_0x2ee9d2['attributes']=_[_0x476a('0x3a')](_0x4e01c8[_0x476a('0x36')],qs[_0x476a('0x3b')](_0x242276[_0x476a('0x38')]['fields']));_0x2ee9d2[_0x476a('0x3c')]=_0x2ee9d2[_0x476a('0x3c')][_0x476a('0x4e')]?_0x2ee9d2[_0x476a('0x3c')]:_0x4e01c8[_0x476a('0x36')];if(_0x242276[_0x476a('0x38')][_0x476a('0x47')]){_0x2ee9d2[_0x476a('0x48')]=[{'all':!![]}];}_0x2ee9d2=_[_0x476a('0x42')]({},_0x2ee9d2,_0x242276['options']);return db[_0x476a('0x46')]['find'](_0x2ee9d2)['then'](handleEntityNotFound(_0x17c8dd,null))['then'](respondWithResult(_0x17c8dd,null))[_0x476a('0x4b')](handleError(_0x17c8dd,null));};exports[_0x476a('0x4f')]=function(_0x1bf1d8,_0x2ad59a,_0x1df165){return db[_0x476a('0x46')][_0x476a('0x50')]({'where':{'id':_0x1bf1d8[_0x476a('0x4c')]['id']},'attributes':[_0x476a('0x30'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x2ad59a,null))[_0x476a('0x2a')](function(_0x14b1bd){if(_0x14b1bd){var _0x4d573a=path['join'](config[_0x476a('0x51')],_0x476a('0x52'),util[_0x476a('0x53')](_0x476a('0x54'),path['basename'](_0x14b1bd[_0x476a('0x7')])));var _0x12f9c1=fs['createWriteStream'](_0x4d573a);var _0x15dabf=archiver(_0x476a('0x55'),{'zlib':{'level':0x9}});_0x15dabf['on'](_0x476a('0x56'),function(_0x21a527){if(_0x21a527[_0x476a('0x57')]===_0x476a('0x58')){logger[_0x476a('0x59')](_0x21a527);}else{throw new db[(_0x476a('0x5a'))][(_0x476a('0x5b'))](_0x476a('0x5c'));}});_0x15dabf['on'](_0x476a('0x59'),function(_0x1fc988){throw new db['Sequelize']['Error'](_0x476a('0x5c'));});_0x15dabf['pipe'](_0x12f9c1);_0x15dabf[_0x476a('0x5d')](_0x476a('0x5e'),{'cwd':path[_0x476a('0x5f')](config[_0x476a('0x51')],_0x476a('0x52'),path[_0x476a('0x60')](_0x14b1bd[_0x476a('0x7')])),'ignore':[path['join'](path['basename'](_0x14b1bd['path']),'node_modules/**/*'),path[_0x476a('0x5f')](path[_0x476a('0x61')](_0x14b1bd[_0x476a('0x7')]),_0x476a('0x62'))],'nodir':!![]})['finalize']();_0x12f9c1['on'](_0x476a('0x63'),function(){if(!fs['existsSync'](_0x4d573a)){throw new db[(_0x476a('0x5a'))]['Error'](_0x476a('0x64'));}return _0x2ad59a[_0x476a('0x4f')](_0x4d573a,util[_0x476a('0x53')]('%s.zip',path[_0x476a('0x61')](_0x14b1bd[_0x476a('0x7')])),function(_0x2578f3){if(_0x2578f3){throw new db[(_0x476a('0x5a'))][(_0x476a('0x5b'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x476a('0x65')](_0x4d573a);logger[_0x476a('0x66')]('Download\x20completed');logger[_0x476a('0x66')]('Temporary\x20file\x20removed');});});}return null;})[_0x476a('0x4b')](handleError(_0x2ad59a,null));};exports['upload']=function(_0x13fc39,_0x354260,_0x5f0faa){var _0x247766=path[_0x476a('0x61')](_0x13fc39[_0x476a('0x67')][_0x476a('0x68')],path[_0x476a('0x69')](_0x13fc39[_0x476a('0x67')][_0x476a('0x68')]));var _0x198b03=path[_0x476a('0x5f')](config[_0x476a('0x51')],_0x476a('0x52'),_0x13fc39[_0x476a('0x67')]['filename']);var _0x723705=path[_0x476a('0x5f')](config[_0x476a('0x51')],_0x476a('0x52'),_0x247766);logger[_0x476a('0x66')](_0x476a('0x6a'),_0x198b03);logger[_0x476a('0x66')]('Plugin\x20upload\x20destination:\x20%s',_0x723705);try{fs[_0x476a('0x6b')](_0x198b03,parseInt(_0x476a('0x6c'),0x8));extract(_0x198b03,{'dir':_0x723705},function(_0x10937b){if(_0x10937b){logger[_0x476a('0x59')](_0x10937b);handleError(_0x10937b,!![]);};var _0x3175a9=fs[_0x476a('0x6d')](_0x723705);if(_0x3175a9[_0x476a('0x4e')]>0x1){removeReferences(_0x198b03,_0x723705);logger[_0x476a('0x59')](_0x476a('0x6e'));return _0x5f0faa(new Error(_0x476a('0x6e')));}var _0x1fde4b=fs['lstatSync'](path[_0x476a('0x5f')](_0x723705,_0x3175a9[0x0]));if(_0x1fde4b['isFile']()){removeReferences(_0x198b03,_0x723705);logger[_0x476a('0x59')](_0x476a('0x6e'));return _0x5f0faa(new Error(_0x476a('0x6e')));}if(_0x1fde4b[_0x476a('0x6f')]()){var _0x232c0b=fs[_0x476a('0x6d')](path['join'](_0x723705,_0x3175a9[0x0]));if(_0x232c0b['length']===0x0){removeReferences(_0x198b03,_0x723705);logger[_0x476a('0x59')]('Invalid\x20plugin\x20structure');return _0x5f0faa(new Error(_0x476a('0x6e')));}var _0x5a4e80=_0x232c0b['some'](function(_0x12680c){return _0x12680c===_0x476a('0x70');});if(!_0x5a4e80){return _0x5f0faa(new Error(_0x476a('0x71')));}var _0x5b336b=fs[_0x476a('0x72')](path[_0x476a('0x5f')](_0x723705,_0x3175a9[0x0],'manifest.json'));var _0x3321bf=JSON[_0x476a('0x73')](_0x5b336b);if(_0x476a('0x21')==typeof _0x3321bf[_0x476a('0x30')]){return _0x5f0faa(new Error(_0x476a('0x74')));}if(_0x476a('0x21')==typeof _0x3321bf[_0x476a('0x34')]){return _0x5f0faa(new Error(_0x476a('0x75')));}if('undefined'==typeof _0x3321bf[_0x476a('0x76')]){return _0x5f0faa(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if('undefined'==typeof _0x3321bf[_0x476a('0x77')]){return _0x5f0faa(new Error(_0x476a('0x78')));}if(_0x3321bf[_0x476a('0x34')]===_0x476a('0x79')){if('undefined'==typeof _0x3321bf[_0x476a('0x77')][_0x476a('0x7a')]){return _0x5f0faa(new Error('Invalid\x20manifest:\x20views\x20missing'));}if('undefined'==typeof _0x3321bf['parameters'][_0x476a('0x7a')][_0x476a('0x7b')]&&_0x476a('0x21')==typeof _0x3321bf['parameters'][_0x476a('0x7a')][_0x476a('0x7c')]){return _0x5f0faa(new Error(_0x476a('0x7d')));}}else if(_0x3321bf[_0x476a('0x34')]==='script'){if('undefined'==typeof _0x3321bf['parameters'][_0x476a('0x7e')]){return _0x5f0faa(new Error(_0x476a('0x7f')));}if(_0x476a('0x21')==typeof _0x3321bf[_0x476a('0x77')][_0x476a('0x80')]){return _0x5f0faa(new Error(_0x476a('0x81')));}}else{return _0x5f0faa(new Error(_0x476a('0x82')));}var _0xc9f2f1=_0x3321bf['name'];var _0x4865b9=_0x3321bf[_0x476a('0x83')];var _0x57a4e1=_0x3321bf[_0x476a('0x34')];var _0x4de128=_0x3321bf[_0x476a('0x84')]?_0x3321bf[_0x476a('0x84')]:_0x476a('0x85');var _0x20b476=_0x3321bf[_0x476a('0x86')]?_0x3321bf[_0x476a('0x86')]:_0x476a('0x87');var _0x26d45f='';var _0x21272c='';var _0x2b9329='';var _0x11cba6='';var _0x5042c0=_0x3321bf[_0x476a('0x76')];if(_0x57a4e1===_0x476a('0x79')){if(_0x476a('0x21')!=typeof _0x3321bf[_0x476a('0x77')][_0x476a('0x7a')][_0x476a('0x7b')]){var _0x454aa6=_0x3321bf['parameters'][_0x476a('0x7a')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x476a('0x88')](_0x454aa6)){_0x26d45f=path[_0x476a('0x5f')](_0x476a('0x89'),_0x247766,_0x3175a9[0x0],_0x454aa6);}else{_0x26d45f=_0x454aa6;}}else{logger[_0x476a('0x66')](_0x476a('0x8a'));}if(_0x476a('0x21')!=typeof _0x3321bf[_0x476a('0x77')][_0x476a('0x7a')][_0x476a('0x7c')]){var _0x32703c=_0x3321bf['parameters'][_0x476a('0x7a')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x476a('0x88')](_0x32703c)){_0x21272c=path[_0x476a('0x5f')](_0x476a('0x89'),_0x247766,_0x3175a9[0x0],_0x32703c);}else{_0x21272c=_0x32703c;}}else{logger[_0x476a('0x66')](_0x476a('0x8b'));}}else if(_0x57a4e1===_0x476a('0x8c')){_0x2b9329=_0x3321bf['parameters']['scriptName'];_0x11cba6=_0x3321bf['parameters'][_0x476a('0x80')];if('undefined'!=typeof _0x3321bf[_0x476a('0x77')][_0x476a('0x7a')]){if(_0x476a('0x21')!=typeof _0x3321bf['parameters'][_0x476a('0x7a')][_0x476a('0x7b')]){var _0x454aa6=_0x3321bf[_0x476a('0x77')][_0x476a('0x7a')][_0x476a('0x7b')];if(!/^(f|ht)tps?:\/\//i['test'](_0x454aa6)){_0x26d45f=path[_0x476a('0x5f')]('plugins',_0x247766,_0x3175a9[0x0],_0x454aa6);}else{_0x26d45f=_0x454aa6;}}if('undefined'!=typeof _0x3321bf[_0x476a('0x77')][_0x476a('0x7a')][_0x476a('0x7c')]){var _0x32703c=_0x3321bf['parameters'][_0x476a('0x7a')][_0x476a('0x7c')];if(!/^(f|ht)tps?:\/\//i['test'](_0x32703c)){_0x21272c=path['join'](_0x476a('0x89'),_0x247766,_0x3175a9[0x0],_0x32703c);}else{_0x21272c=_0x32703c;}}}}var _0x3e6380={'name':_0xc9f2f1,'description':_0x4865b9,'path':path['join'](_0x247766,_0x3175a9[0x0]),'type':_0x57a4e1,'sidebar':_0x4de128,'icon':_0x20b476,'adminUrl':_0x26d45f,'agentUrl':_0x21272c,'scriptName':_0x2b9329,'scriptPath':_0x11cba6,'version':_0x5042c0};removeReferences(_0x198b03,null);return db[_0x476a('0x46')][_0x476a('0x8d')](_0x3e6380)['then'](function(_0x54dce4){var _0x1d429e={'role':_0x13fc39[_0x476a('0x8e')][_0x476a('0x8f')],'userProfileId':_0x13fc39['body'][_0x476a('0x90')]};if(!_0x1d429e)throw new Error(_0x476a('0x91'));if(_0x1d429e['role']===_0x476a('0x92')){var _0x34d53f=_0x54dce4[_0x476a('0x2b')]({'plain':!![]});return db[_0x476a('0x93')]['find']({'where':{'name':_0x476a('0x2c'),'userProfileId':_0x1d429e[_0x476a('0x90')]},'raw':!![]})['then'](function(_0x3721ce){if(_0x3721ce&&_0x3721ce['autoAssociation']===0x0){return db[_0x476a('0x2d')][_0x476a('0x8d')]({'name':_0x34d53f[_0x476a('0x30')],'resourceId':_0x34d53f['id'],'type':_0x3721ce[_0x476a('0x30')],'sectionId':_0x3721ce['id']},{})[_0x476a('0x2a')](function(){return _0x54dce4;});}else{return _0x54dce4;}})[_0x476a('0x4b')](function(_0xfc94d6){logger[_0x476a('0x59')](_0x476a('0x94'),_0xfc94d6);throw _0xfc94d6;});}return _0x54dce4;})[_0x476a('0x2a')](respondWithResult(_0x354260,null))[_0x476a('0x4b')](handleError(_0x354260,null));}});}catch(_0x122722){_0x354260[_0x476a('0x1d')](0x1f4)[_0x476a('0x95')](_0x122722);}};function removeReferences(_0x4c15b3,_0x130deb){try{if(_0x4c15b3){fs[_0x476a('0x65')](_0x4c15b3);logger['info'](_0x476a('0x96'));}if(_0x130deb){rimraf(_0x130deb,function(){});logger['info'](_0x476a('0x97'));}}catch(_0x3d5f55){logger[_0x476a('0x59')](_0x3d5f55);}}exports['update']=function(_0x11bb2f,_0x33f05b,_0x481269){return db[_0x476a('0x46')][_0x476a('0x50')]({'where':{'id':_0x11bb2f[_0x476a('0x4c')]['id']}})[_0x476a('0x2a')](handleEntityNotFound(_0x33f05b,null))[_0x476a('0x2a')](saveUpdates(_0x11bb2f[_0x476a('0x8e')],null))[_0x476a('0x2a')](respondWithResult(_0x33f05b,null))[_0x476a('0x4b')](handleError(_0x33f05b,null));};exports[_0x476a('0x98')]=function(_0x33f0e6,_0x196283,_0x37ad06){return db[_0x476a('0x46')][_0x476a('0x50')]({'where':{'id':_0x33f0e6[_0x476a('0x4c')]['id']}})[_0x476a('0x2a')](function(_0x5853d3){if(_0x5853d3){return _0x5853d3['destroy']();}})[_0x476a('0x2a')](function(_0x43c0f6){rimraf(path[_0x476a('0x5f')](config[_0x476a('0x51')],_0x476a('0x52'),path['dirname'](_0x43c0f6[_0x476a('0x7')])),function(){});return _0x43c0f6;})[_0x476a('0x2a')](handleEntityNotFound(_0x196283,null))[_0x476a('0x2a')](respondWithStatusCode(_0x196283,null))[_0x476a('0x4b')](handleError(_0x196283,null));};exports[_0x476a('0x99')]=function(_0x167488,_0x3f5c90,_0x322dd7){return BPromise['resolve']()[_0x476a('0x2a')](function(){if(!_0x167488[_0x476a('0x38')]['path']){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x167488[_0x476a('0x38')]['port']){throw new Error(_0x476a('0x9a'));}var _0x5bd59f=_0x167488['query'][_0x476a('0x9b')]?_0x167488[_0x476a('0x38')][_0x476a('0x9b')]+':'+_0x167488[_0x476a('0x38')][_0x476a('0x9c')]:_0x476a('0x9d')+_0x167488['query']['port'];var _0x32486f=_0x167488['query'][_0x476a('0x1f')]?_0x167488['query']['json']:!![];var _0x4110ae=_0x167488[_0x476a('0x38')][_0x476a('0x9e')]?_0x167488[_0x476a('0x38')]['encoding']:null;var _0xd91b26={'method':_0x167488[_0x476a('0x9f')],'uri':util[_0x476a('0x53')]('%s%s',_0x5bd59f,_0x167488[_0x476a('0x38')][_0x476a('0x7')]),'json':_0x32486f,'resolveWithFullResponse':!![],'encoding':_0x4110ae,'qs':_0x167488[_0x476a('0x38')]};if(_0x167488[_0x476a('0xa0')]){_0xd91b26[_0x476a('0xa0')]=_0x167488['headers'];if(_0xd91b26[_0x476a('0xa0')]['content-length']){delete _0xd91b26[_0x476a('0xa0')]['content-length'];}}if(_0xd91b26[_0x476a('0xa0')]['content-type']){delete _0xd91b26[_0x476a('0xa0')]['content-type'];}return rp(_0xd91b26);})['then'](function(_0x30e9a6){if(_0x30e9a6){_0x3f5c90[_0x476a('0x24')](_0x30e9a6[_0x476a('0xa0')]);logger[_0x476a('0x66')](_0x30e9a6['body']);if(_[_0x476a('0xa1')](_0x167488[_0x476a('0x38')]['path'],'download')&&_0x30e9a6['statusCode']==0x1f4){return _0x3f5c90[_0x476a('0x2e')](_0x30e9a6[_0x476a('0xa2')]);}else{return _0x3f5c90[_0x476a('0x1d')](_0x30e9a6[_0x476a('0xa2')])[_0x476a('0x95')](_0x30e9a6[_0x476a('0x8e')]);}}else{return _0x3f5c90[_0x476a('0x2e')](0xc8);}})['catch'](handleError(_0x3f5c90,null));};exports['webhookPost']=function(_0x37d616,_0x5c3621,_0x2b8239){return BPromise[_0x476a('0xa3')]()[_0x476a('0x2a')](function(){if(!_0x37d616[_0x476a('0x38')][_0x476a('0x7')]){throw new Error(_0x476a('0xa4'));}if(!_0x37d616[_0x476a('0x38')]['port']){throw new Error(_0x476a('0x9a'));}var _0x430201=_0x37d616[_0x476a('0x38')][_0x476a('0x9b')]?_0x37d616[_0x476a('0x38')][_0x476a('0x9b')]+':'+_0x37d616['query'][_0x476a('0x9c')]:_0x476a('0x9d')+_0x37d616['query']['port'];var _0x5b4af4=_0x37d616[_0x476a('0x38')][_0x476a('0x1f')]?_0x37d616['query']['json']:!![];var _0x175c9a=_0x37d616[_0x476a('0x38')][_0x476a('0x9e')]?_0x37d616[_0x476a('0x38')][_0x476a('0x9e')]:null;var _0x254e51={'method':_0x37d616[_0x476a('0x9f')],'uri':util[_0x476a('0x53')]('%s%s',_0x430201,_0x37d616[_0x476a('0x38')][_0x476a('0x7')]),'json':_0x5b4af4,'resolveWithFullResponse':!![],'encoding':_0x175c9a,'body':_0x37d616[_0x476a('0x8e')]};if(_0x37d616[_0x476a('0xa0')]){_0x254e51[_0x476a('0xa0')]=_0x37d616[_0x476a('0xa0')];if(_0x254e51['headers'][_0x476a('0xa5')]){delete _0x254e51[_0x476a('0xa0')]['content-length'];}}if(_0x254e51[_0x476a('0xa0')]['content-type']){delete _0x254e51[_0x476a('0xa0')][_0x476a('0xa6')];}return rp(_0x254e51);})['then'](function(_0x5d6c58){if(_0x5d6c58){_0x5c3621[_0x476a('0x24')](_0x5d6c58[_0x476a('0xa0')]);logger['info'](_0x5d6c58['body']);return _0x5c3621[_0x476a('0x1d')](_0x5d6c58[_0x476a('0xa2')])[_0x476a('0x95')](_0x5d6c58['body']);}else{return _0x5c3621['sendStatus'](0xc8);}})[_0x476a('0x4b')](handleError(_0x5c3621,null));};
\ No newline at end of file
+var _0xb999=['defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','limit','count','set','apply','reject','save','update','then','get','Plugins','UserProfileResource','end','stack','name','send','map','Plugin','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','download','join','server/files/plugins','format','%s.zip','basename','zip','warning','code','ENOENT','error','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','Error','pipe','glob','**/*','root','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','undefined','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','parameters','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','Warning:\x20agent\x20view\x20not\x20specified','script','scriptName','scriptPath','body','role','userProfileId','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','params','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','\x27PORT\x27\x20parameter\x20not\x20specified','http://localhost:','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','redis'];(function(_0x533deb,_0x13d177){var _0x2efe05=function(_0x390f7e){while(--_0x390f7e){_0x533deb['push'](_0x533deb['shift']());}};_0x2efe05(++_0x13d177);}(_0xb999,0x91));var _0x9b99=function(_0x44e01f,_0x4eaf52){_0x44e01f=_0x44e01f-0x0;var _0x5ed5f0=_0xb999[_0x44e01f];return _0x5ed5f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9b99('0x0'));var zipdir=require(_0x9b99('0x1'));var jsonpatch=require(_0x9b99('0x2'));var rp=require(_0x9b99('0x3'));var moment=require(_0x9b99('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9b99('0x5'));var path=require(_0x9b99('0x6'));var sox=require(_0x9b99('0x7'));var csv=require(_0x9b99('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9b99('0x9'));var _=require(_0x9b99('0xa'));var squel=require(_0x9b99('0xb'));var crypto=require(_0x9b99('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9b99('0xd'));var toCsv=require(_0x9b99('0x8'));var querystring=require('querystring');var Papa=require(_0x9b99('0xe'));var extract=require(_0x9b99('0xf'));var rimraf=require(_0x9b99('0x0'));var archiver=require(_0x9b99('0x10'));var Redis=require(_0x9b99('0x11'));var authService=require(_0x9b99('0x12'));var qs=require(_0x9b99('0x13'));var as=require(_0x9b99('0x14'));var hardwareService=require(_0x9b99('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x9b99('0x16'));var config=require(_0x9b99('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b99('0x18'))['db'];config[_0x9b99('0x19')]=_[_0x9b99('0x1a')](config[_0x9b99('0x19')],{'host':_0x9b99('0x1b'),'port':0x18eb});var socket=require(_0x9b99('0x1c'))(new Redis(config[_0x9b99('0x19')]));require('./plugin.socket')[_0x9b99('0x1d')](socket);function respondWithStatusCode(_0x28713c,_0x3dd176){_0x3dd176=_0x3dd176||0xcc;return function(_0x40387f){if(_0x40387f){return _0x28713c[_0x9b99('0x1e')](_0x3dd176);}return _0x28713c[_0x9b99('0x1f')](_0x3dd176)['end']();};}function respondWithResult(_0x30c480,_0x5c953f){_0x5c953f=_0x5c953f||0xc8;return function(_0x43aedd){if(_0x43aedd){return _0x30c480['status'](_0x5c953f)[_0x9b99('0x20')](_0x43aedd);}};}function respondWithFilteredResult(_0x1990f4,_0xd1d151){return function(_0x43d37d){if(_0x43d37d){var _0x3e5383=typeof _0xd1d151[_0x9b99('0x21')]==='undefined'&&typeof _0xd1d151[_0x9b99('0x22')]==='undefined';var _0x293b85=_0x43d37d[_0x9b99('0x23')];var _0xf7dfde=_0x3e5383?0x0:_0xd1d151['offset'];var _0x11a470=_0x3e5383?_0x43d37d[_0x9b99('0x23')]:_0xd1d151[_0x9b99('0x21')]+_0xd1d151['limit'];var _0x397d26;if(_0x11a470>=_0x293b85){_0x11a470=_0x293b85;_0x397d26=0xc8;}else{_0x397d26=0xce;}_0x1990f4[_0x9b99('0x1f')](_0x397d26);return _0x1990f4[_0x9b99('0x24')]('Content-Range',_0xf7dfde+'-'+_0x11a470+'/'+_0x293b85)[_0x9b99('0x20')](_0x43d37d);}return null;};}function patchUpdates(_0x26d62c){return function(_0x1b400b){try{jsonpatch[_0x9b99('0x25')](_0x1b400b,_0x26d62c,!![]);}catch(_0x355fc6){return BPromise[_0x9b99('0x26')](_0x355fc6);}return _0x1b400b[_0x9b99('0x27')]();};}function saveUpdates(_0x4468ae,_0x1f1d54){return function(_0x28a001){if(_0x28a001){return _0x28a001[_0x9b99('0x28')](_0x4468ae)['then'](function(_0x3bb337){return _0x3bb337;});}return null;};}function removeEntity(_0x42f43f,_0x3b2157){return function(_0x555be5){if(_0x555be5){return _0x555be5['destroy']()[_0x9b99('0x29')](function(){var _0x4751b3=_0x555be5[_0x9b99('0x2a')]({'plain':!![]});var _0x52e387=_0x9b99('0x2b');return db[_0x9b99('0x2c')]['destroy']({'where':{'type':_0x52e387,'resourceId':_0x4751b3['id']}})[_0x9b99('0x29')](function(){return _0x555be5;});})['then'](function(){_0x42f43f[_0x9b99('0x1f')](0xcc)[_0x9b99('0x2d')]();});}};}function handleEntityNotFound(_0x2d2e91,_0xe0e6b5){return function(_0x23a12c){if(!_0x23a12c){_0x2d2e91[_0x9b99('0x1e')](0x194);}return _0x23a12c;};}function handleError(_0x469d0f,_0x5d3c1b){_0x5d3c1b=_0x5d3c1b||0x1f4;return function(_0x32d635){logger['error'](_0x32d635[_0x9b99('0x2e')]);if(_0x32d635[_0x9b99('0x2f')]){delete _0x32d635[_0x9b99('0x2f')];}_0x469d0f['status'](_0x5d3c1b)[_0x9b99('0x30')](_0x32d635);};}exports['index']=function(_0x470704,_0x13ec58){var _0x4b67e1={},_0x62673b={},_0x295d45={'count':0x0,'rows':[]};var _0x462b20=_[_0x9b99('0x31')](db[_0x9b99('0x32')][_0x9b99('0x33')],function(_0x521e04){return{'name':_0x521e04[_0x9b99('0x34')],'type':_0x521e04[_0x9b99('0x35')]['key']};});_0x62673b['model']=_[_0x9b99('0x31')](_0x462b20,'name');_0x62673b[_0x9b99('0x36')]=_[_0x9b99('0x37')](_0x470704[_0x9b99('0x36')]);_0x62673b[_0x9b99('0x38')]=_[_0x9b99('0x39')](_0x62673b[_0x9b99('0x3a')],_0x62673b['query']);_0x4b67e1['attributes']=_[_0x9b99('0x39')](_0x62673b[_0x9b99('0x3a')],qs[_0x9b99('0x3b')](_0x470704[_0x9b99('0x36')][_0x9b99('0x3b')]));_0x4b67e1[_0x9b99('0x3c')]=_0x4b67e1[_0x9b99('0x3c')][_0x9b99('0x3d')]?_0x4b67e1[_0x9b99('0x3c')]:_0x62673b[_0x9b99('0x3a')];if(!_0x470704[_0x9b99('0x36')][_0x9b99('0x3e')]('nolimit')){_0x4b67e1[_0x9b99('0x22')]=qs[_0x9b99('0x22')](_0x470704['query'][_0x9b99('0x22')]);_0x4b67e1[_0x9b99('0x21')]=qs['offset'](_0x470704[_0x9b99('0x36')][_0x9b99('0x21')]);}_0x4b67e1[_0x9b99('0x3f')]=qs[_0x9b99('0x40')](_0x470704[_0x9b99('0x36')]['sort']);_0x4b67e1['where']=qs[_0x9b99('0x38')](_[_0x9b99('0x41')](_0x470704['query'],_0x62673b[_0x9b99('0x38')]),_0x462b20);if(_0x470704['query'][_0x9b99('0x42')]){_0x4b67e1[_0x9b99('0x43')]=_[_0x9b99('0x44')](_0x4b67e1[_0x9b99('0x43')],{'$or':_[_0x9b99('0x31')](_0x462b20,function(_0x3bef9d){if(_0x3bef9d['type']!==_0x9b99('0x45')){var _0x37b9ba={};_0x37b9ba[_0x3bef9d[_0x9b99('0x2f')]]={'$like':'%'+_0x470704[_0x9b99('0x36')][_0x9b99('0x42')]+'%'};return _0x37b9ba;}})});}_0x4b67e1=_[_0x9b99('0x44')]({},_0x4b67e1,_0x470704[_0x9b99('0x46')]);var _0x355ee2={'where':_0x4b67e1[_0x9b99('0x43')]};return db['Plugin'][_0x9b99('0x23')](_0x355ee2)[_0x9b99('0x29')](function(_0x2562fa){_0x295d45['count']=_0x2562fa;if(_0x470704[_0x9b99('0x36')][_0x9b99('0x47')]){_0x4b67e1[_0x9b99('0x48')]=[{'all':!![]}];}return db[_0x9b99('0x32')][_0x9b99('0x49')](_0x4b67e1);})[_0x9b99('0x29')](function(_0x24ac3d){_0x295d45[_0x9b99('0x4a')]=_0x24ac3d;return _0x295d45;})[_0x9b99('0x29')](respondWithFilteredResult(_0x13ec58,_0x4b67e1))[_0x9b99('0x4b')](handleError(_0x13ec58,null));};exports[_0x9b99('0x4c')]=function(_0x13fee5,_0x2f8267){var _0x10f951={'raw':!![],'where':{'id':_0x13fee5['params']['id']}},_0xf7f5b3={};_0xf7f5b3[_0x9b99('0x3a')]=_[_0x9b99('0x37')](db[_0x9b99('0x32')][_0x9b99('0x33')]);_0xf7f5b3['query']=_['keys'](_0x13fee5[_0x9b99('0x36')]);_0xf7f5b3[_0x9b99('0x38')]=_['intersection'](_0xf7f5b3[_0x9b99('0x3a')],_0xf7f5b3['query']);_0x10f951['attributes']=_[_0x9b99('0x39')](_0xf7f5b3[_0x9b99('0x3a')],qs[_0x9b99('0x3b')](_0x13fee5['query'][_0x9b99('0x3b')]));_0x10f951[_0x9b99('0x3c')]=_0x10f951[_0x9b99('0x3c')]['length']?_0x10f951['attributes']:_0xf7f5b3['model'];if(_0x13fee5['query']['includeAll']){_0x10f951['include']=[{'all':!![]}];}_0x10f951=_[_0x9b99('0x44')]({},_0x10f951,_0x13fee5['options']);return db[_0x9b99('0x32')][_0x9b99('0x4d')](_0x10f951)['then'](handleEntityNotFound(_0x2f8267,null))[_0x9b99('0x29')](respondWithResult(_0x2f8267,null))[_0x9b99('0x4b')](handleError(_0x2f8267,null));};exports[_0x9b99('0x4e')]=function(_0x4b3528,_0x1e2f18,_0x26509c){return db[_0x9b99('0x32')][_0x9b99('0x4d')]({'where':{'id':_0x4b3528['params']['id']},'attributes':[_0x9b99('0x2f'),'path'],'raw':!![]})['then'](handleEntityNotFound(_0x1e2f18,null))['then'](function(_0x4a66aa){if(_0x4a66aa){var _0xdf8edb=path[_0x9b99('0x4f')](config['root'],_0x9b99('0x50'),util[_0x9b99('0x51')](_0x9b99('0x52'),path[_0x9b99('0x53')](_0x4a66aa['path'])));var _0x1388d2=fs['createWriteStream'](_0xdf8edb);var _0x47250a=archiver(_0x9b99('0x54'),{'zlib':{'level':0x9}});_0x47250a['on'](_0x9b99('0x55'),function(_0x5f3589){if(_0x5f3589[_0x9b99('0x56')]===_0x9b99('0x57')){logger[_0x9b99('0x58')](_0x5f3589);}else{throw new db[(_0x9b99('0x59'))]['Error'](_0x9b99('0x5a'));}});_0x47250a['on']('error',function(_0x432cd2){throw new db[(_0x9b99('0x59'))][(_0x9b99('0x5b'))](_0x9b99('0x5a'));});_0x47250a[_0x9b99('0x5c')](_0x1388d2);_0x47250a[_0x9b99('0x5d')](_0x9b99('0x5e'),{'cwd':path['join'](config[_0x9b99('0x5f')],_0x9b99('0x50'),path[_0x9b99('0x60')](_0x4a66aa['path'])),'ignore':[path[_0x9b99('0x4f')](path['basename'](_0x4a66aa[_0x9b99('0x6')]),_0x9b99('0x61')),path[_0x9b99('0x4f')](path[_0x9b99('0x53')](_0x4a66aa[_0x9b99('0x6')]),_0x9b99('0x62'))],'nodir':!![]})[_0x9b99('0x63')]();_0x1388d2['on'](_0x9b99('0x64'),function(){if(!fs[_0x9b99('0x65')](_0xdf8edb)){throw new db[(_0x9b99('0x59'))][(_0x9b99('0x5b'))](_0x9b99('0x66'));}return _0x1e2f18[_0x9b99('0x4e')](_0xdf8edb,util[_0x9b99('0x51')](_0x9b99('0x52'),path[_0x9b99('0x53')](_0x4a66aa[_0x9b99('0x6')])),function(_0x46bc97){if(_0x46bc97){throw new db[(_0x9b99('0x59'))][(_0x9b99('0x5b'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x9b99('0x67')](_0xdf8edb);logger[_0x9b99('0x68')](_0x9b99('0x69'));logger[_0x9b99('0x68')](_0x9b99('0x6a'));});});}return null;})['catch'](handleError(_0x1e2f18,null));};exports['upload']=function(_0x162228,_0x37183e,_0x561ea3){var _0x5a6891=path[_0x9b99('0x53')](_0x162228[_0x9b99('0x6b')][_0x9b99('0x6c')],path['extname'](_0x162228[_0x9b99('0x6b')][_0x9b99('0x6c')]));var _0x56ef5c=path[_0x9b99('0x4f')](config[_0x9b99('0x5f')],_0x9b99('0x50'),_0x162228[_0x9b99('0x6b')][_0x9b99('0x6c')]);var _0x520f98=path[_0x9b99('0x4f')](config[_0x9b99('0x5f')],'server/files/plugins',_0x5a6891);logger[_0x9b99('0x68')](_0x9b99('0x6d'),_0x56ef5c);logger[_0x9b99('0x68')](_0x9b99('0x6e'),_0x520f98);try{fs[_0x9b99('0x6f')](_0x56ef5c,parseInt('0777',0x8));extract(_0x56ef5c,{'dir':_0x520f98},function(_0x38d8ee){if(_0x38d8ee){logger[_0x9b99('0x58')](_0x38d8ee);handleError(_0x38d8ee,!![]);};var _0x31a740=fs[_0x9b99('0x70')](_0x520f98);if(_0x31a740[_0x9b99('0x3d')]>0x1){removeReferences(_0x56ef5c,_0x520f98);logger[_0x9b99('0x58')](_0x9b99('0x71'));return _0x561ea3(new Error(_0x9b99('0x71')));}var _0x353892=fs[_0x9b99('0x72')](path[_0x9b99('0x4f')](_0x520f98,_0x31a740[0x0]));if(_0x353892[_0x9b99('0x73')]()){removeReferences(_0x56ef5c,_0x520f98);logger['error'](_0x9b99('0x71'));return _0x561ea3(new Error(_0x9b99('0x71')));}if(_0x353892[_0x9b99('0x74')]()){var _0x4710e6=fs[_0x9b99('0x70')](path['join'](_0x520f98,_0x31a740[0x0]));if(_0x4710e6['length']===0x0){removeReferences(_0x56ef5c,_0x520f98);logger['error'](_0x9b99('0x71'));return _0x561ea3(new Error('Invalid\x20plugin\x20structure'));}var _0x30b717=_0x4710e6[_0x9b99('0x75')](function(_0x5d9170){return _0x5d9170===_0x9b99('0x76');});if(!_0x30b717){return _0x561ea3(new Error(_0x9b99('0x77')));}var _0x2ed323=fs[_0x9b99('0x78')](path[_0x9b99('0x4f')](_0x520f98,_0x31a740[0x0],_0x9b99('0x76')));var _0x1a5afb=JSON['parse'](_0x2ed323);if(_0x9b99('0x79')==typeof _0x1a5afb['name']){return _0x561ea3(new Error(_0x9b99('0x7a')));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x35')]){return _0x561ea3(new Error(_0x9b99('0x7b')));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7c')]){return _0x561ea3(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')]){return _0x561ea3(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x1a5afb[_0x9b99('0x35')]==='html'){if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')]){return _0x561ea3(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x7f')]&&_0x9b99('0x79')==typeof _0x1a5afb['parameters'][_0x9b99('0x7e')][_0x9b99('0x80')]){return _0x561ea3(new Error(_0x9b99('0x81')));}}else if(_0x1a5afb[_0x9b99('0x35')]==='script'){if(_0x9b99('0x79')==typeof _0x1a5afb[_0x9b99('0x7d')]['scriptName']){return _0x561ea3(new Error(_0x9b99('0x82')));}if(_0x9b99('0x79')==typeof _0x1a5afb['parameters']['scriptPath']){return _0x561ea3(new Error(_0x9b99('0x83')));}}else{return _0x561ea3(new Error(_0x9b99('0x84')));}var _0x35814c=_0x1a5afb['name'];var _0x36b55d=_0x1a5afb[_0x9b99('0x85')];var _0x56f232=_0x1a5afb[_0x9b99('0x35')];var _0x512eee=_0x1a5afb[_0x9b99('0x86')]?_0x1a5afb[_0x9b99('0x86')]:_0x9b99('0x87');var _0x3c9222=_0x1a5afb[_0x9b99('0x88')]?_0x1a5afb[_0x9b99('0x88')]:'icon-apps';var _0x513eea='';var _0x52e0a0='';var _0x2dde6d='';var _0x16e483='';var _0x3a6613=_0x1a5afb[_0x9b99('0x7c')];if(_0x56f232==='html'){if('undefined'!=typeof _0x1a5afb[_0x9b99('0x7d')]['views']['admin']){var _0x2895bb=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x9b99('0x89')](_0x2895bb)){_0x513eea=path[_0x9b99('0x4f')](_0x9b99('0x8a'),_0x5a6891,_0x31a740[0x0],_0x2895bb);}else{_0x513eea=_0x2895bb;}}else{logger[_0x9b99('0x68')](_0x9b99('0x8b'));}if(_0x9b99('0x79')!=typeof _0x1a5afb['parameters']['views'][_0x9b99('0x80')]){var _0x12c9b8=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x80')];if(!/^(f|ht)tps?:\/\//i[_0x9b99('0x89')](_0x12c9b8)){_0x52e0a0=path[_0x9b99('0x4f')]('plugins',_0x5a6891,_0x31a740[0x0],_0x12c9b8);}else{_0x52e0a0=_0x12c9b8;}}else{logger['info'](_0x9b99('0x8c'));}}else if(_0x56f232===_0x9b99('0x8d')){_0x2dde6d=_0x1a5afb['parameters'][_0x9b99('0x8e')];_0x16e483=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x8f')];if(_0x9b99('0x79')!=typeof _0x1a5afb[_0x9b99('0x7d')]['views']){if('undefined'!=typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x7f')]){var _0x2895bb=_0x1a5afb[_0x9b99('0x7d')]['views'][_0x9b99('0x7f')];if(!/^(f|ht)tps?:\/\//i[_0x9b99('0x89')](_0x2895bb)){_0x513eea=path[_0x9b99('0x4f')](_0x9b99('0x8a'),_0x5a6891,_0x31a740[0x0],_0x2895bb);}else{_0x513eea=_0x2895bb;}}if('undefined'!=typeof _0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')][_0x9b99('0x80')]){var _0x12c9b8=_0x1a5afb[_0x9b99('0x7d')][_0x9b99('0x7e')]['agent'];if(!/^(f|ht)tps?:\/\//i['test'](_0x12c9b8)){_0x52e0a0=path[_0x9b99('0x4f')](_0x9b99('0x8a'),_0x5a6891,_0x31a740[0x0],_0x12c9b8);}else{_0x52e0a0=_0x12c9b8;}}}}var _0x5d31e5={'name':_0x35814c,'description':_0x36b55d,'path':path[_0x9b99('0x4f')](_0x5a6891,_0x31a740[0x0]),'type':_0x56f232,'sidebar':_0x512eee,'icon':_0x3c9222,'adminUrl':_0x513eea,'agentUrl':_0x52e0a0,'scriptName':_0x2dde6d,'scriptPath':_0x16e483,'version':_0x3a6613};removeReferences(_0x56ef5c,null);return db[_0x9b99('0x32')]['create'](_0x5d31e5)[_0x9b99('0x29')](function(_0x26b190){var _0x3173df={'role':_0x162228[_0x9b99('0x90')][_0x9b99('0x91')],'userProfileId':_0x162228[_0x9b99('0x90')][_0x9b99('0x92')]};if(!_0x3173df)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3173df[_0x9b99('0x91')]==='user'){var _0x231dd0=_0x26b190[_0x9b99('0x2a')]({'plain':!![]});return db[_0x9b99('0x93')][_0x9b99('0x4d')]({'where':{'name':_0x9b99('0x2b'),'userProfileId':_0x3173df[_0x9b99('0x92')]},'raw':!![]})['then'](function(_0x3425c9){if(_0x3425c9&&_0x3425c9[_0x9b99('0x94')]===0x0){return db[_0x9b99('0x2c')][_0x9b99('0x95')]({'name':_0x231dd0[_0x9b99('0x2f')],'resourceId':_0x231dd0['id'],'type':_0x3425c9[_0x9b99('0x2f')],'sectionId':_0x3425c9['id']},{})[_0x9b99('0x29')](function(){return _0x26b190;});}else{return _0x26b190;}})[_0x9b99('0x4b')](function(_0x58e5c8){logger['error'](_0x9b99('0x96'),_0x58e5c8);throw _0x58e5c8;});}return _0x26b190;})[_0x9b99('0x29')](respondWithResult(_0x37183e,null))[_0x9b99('0x4b')](handleError(_0x37183e,null));}});}catch(_0x34e554){_0x37183e['status'](0x1f4)['send'](_0x34e554);}};function removeReferences(_0x25989c,_0x459990){try{if(_0x25989c){fs[_0x9b99('0x67')](_0x25989c);logger[_0x9b99('0x68')](_0x9b99('0x97'));}if(_0x459990){rimraf(_0x459990,function(){});logger['info'](_0x9b99('0x98'));}}catch(_0x37eae2){logger['error'](_0x37eae2);}}exports[_0x9b99('0x28')]=function(_0xb6b517,_0x471f25,_0x47be8a){return db[_0x9b99('0x32')]['find']({'where':{'id':_0xb6b517[_0x9b99('0x99')]['id']}})[_0x9b99('0x29')](handleEntityNotFound(_0x471f25,null))[_0x9b99('0x29')](saveUpdates(_0xb6b517[_0x9b99('0x90')],null))[_0x9b99('0x29')](respondWithResult(_0x471f25,null))[_0x9b99('0x4b')](handleError(_0x471f25,null));};exports[_0x9b99('0x9a')]=function(_0x4a213e,_0xcb67bd,_0x18a998){return db['Plugin'][_0x9b99('0x4d')]({'where':{'id':_0x4a213e['params']['id']}})[_0x9b99('0x29')](function(_0x2175bd){if(_0x2175bd){return _0x2175bd['destroy']();}})['then'](function(_0x11f41c){rimraf(path[_0x9b99('0x4f')](config[_0x9b99('0x5f')],_0x9b99('0x50'),path[_0x9b99('0x60')](_0x11f41c[_0x9b99('0x6')])),function(){});return _0x11f41c;})[_0x9b99('0x29')](handleEntityNotFound(_0xcb67bd,null))[_0x9b99('0x29')](respondWithStatusCode(_0xcb67bd,null))[_0x9b99('0x4b')](handleError(_0xcb67bd,null));};exports[_0x9b99('0x9b')]=function(_0x192ec4,_0x4ce4d7,_0x486237){return BPromise[_0x9b99('0x9c')]()[_0x9b99('0x29')](function(){if(!_0x192ec4[_0x9b99('0x36')][_0x9b99('0x6')]){throw new Error(_0x9b99('0x9d'));}if(!_0x192ec4[_0x9b99('0x36')][_0x9b99('0x9e')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x52f4b9=_0x192ec4['query'][_0x9b99('0x9f')]?_0x192ec4['query'][_0x9b99('0x9f')]+':'+_0x192ec4['query'][_0x9b99('0x9e')]:'http://localhost:'+_0x192ec4[_0x9b99('0x36')][_0x9b99('0x9e')];var _0x24f15c=_0x192ec4[_0x9b99('0x36')][_0x9b99('0x20')]?_0x192ec4[_0x9b99('0x36')]['json']:!![];var _0x14269e=_0x192ec4[_0x9b99('0x36')][_0x9b99('0xa0')]?_0x192ec4[_0x9b99('0x36')]['encoding']:null;var _0x544996={'method':_0x192ec4[_0x9b99('0xa1')],'uri':util['format'](_0x9b99('0xa2'),_0x52f4b9,_0x192ec4[_0x9b99('0x36')]['path']),'json':_0x24f15c,'resolveWithFullResponse':!![],'encoding':_0x14269e,'qs':_0x192ec4[_0x9b99('0x36')]};if(_0x192ec4['headers']){_0x544996[_0x9b99('0xa3')]=_0x192ec4[_0x9b99('0xa3')];if(_0x544996[_0x9b99('0xa3')]['content-length']){delete _0x544996[_0x9b99('0xa3')][_0x9b99('0xa4')];}}if(_0x544996[_0x9b99('0xa3')]['content-type']){delete _0x544996['headers'][_0x9b99('0xa5')];}return rp(_0x544996);})[_0x9b99('0x29')](function(_0x13c6e8){if(_0x13c6e8){_0x4ce4d7['set'](_0x13c6e8[_0x9b99('0xa3')]);logger[_0x9b99('0x68')](_0x13c6e8['body']);if(_[_0x9b99('0xa6')](_0x192ec4[_0x9b99('0x36')][_0x9b99('0x6')],_0x9b99('0x4e'))&&_0x13c6e8[_0x9b99('0xa7')]==0x1f4){return _0x4ce4d7[_0x9b99('0x1e')](_0x13c6e8[_0x9b99('0xa7')]);}else{return _0x4ce4d7[_0x9b99('0x1f')](_0x13c6e8[_0x9b99('0xa7')])['send'](_0x13c6e8[_0x9b99('0x90')]);}}else{return _0x4ce4d7[_0x9b99('0x1e')](0xc8);}})[_0x9b99('0x4b')](handleError(_0x4ce4d7,null));};exports[_0x9b99('0xa8')]=function(_0x4abdd1,_0x5dc5a6,_0x29749e){return BPromise[_0x9b99('0x9c')]()[_0x9b99('0x29')](function(){if(!_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x6')]){throw new Error(_0x9b99('0x9d'));}if(!_0x4abdd1['query']['port']){throw new Error(_0x9b99('0xa9'));}var _0x5c2ccb=_0x4abdd1['query'][_0x9b99('0x9f')]?_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x9f')]+':'+_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x9e')]:_0x9b99('0xaa')+_0x4abdd1[_0x9b99('0x36')]['port'];var _0xbf06fc=_0x4abdd1[_0x9b99('0x36')]['json']?_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x20')]:!![];var _0x2cb5dc=_0x4abdd1[_0x9b99('0x36')][_0x9b99('0xa0')]?_0x4abdd1['query'][_0x9b99('0xa0')]:null;var _0x36fbcc={'method':_0x4abdd1[_0x9b99('0xa1')],'uri':util[_0x9b99('0x51')](_0x9b99('0xa2'),_0x5c2ccb,_0x4abdd1[_0x9b99('0x36')][_0x9b99('0x6')]),'json':_0xbf06fc,'resolveWithFullResponse':!![],'encoding':_0x2cb5dc,'body':_0x4abdd1[_0x9b99('0x90')]};if(_0x4abdd1[_0x9b99('0xa3')]){_0x36fbcc[_0x9b99('0xa3')]=_0x4abdd1[_0x9b99('0xa3')];if(_0x36fbcc['headers'][_0x9b99('0xa4')]){delete _0x36fbcc['headers'][_0x9b99('0xa4')];}}if(_0x36fbcc['headers'][_0x9b99('0xa5')]){delete _0x36fbcc['headers'][_0x9b99('0xa5')];}return rp(_0x36fbcc);})[_0x9b99('0x29')](function(_0x4d679d){if(_0x4d679d){_0x5dc5a6[_0x9b99('0x24')](_0x4d679d[_0x9b99('0xa3')]);logger[_0x9b99('0x68')](_0x4d679d['body']);return _0x5dc5a6[_0x9b99('0x1f')](_0x4d679d[_0x9b99('0xa7')])['send'](_0x4d679d[_0x9b99('0x90')]);}else{return _0x5dc5a6[_0x9b99('0x1e')](0xc8);}})['catch'](handleError(_0x5dc5a6,null));};
\ No newline at end of file
index 8c183d5..476d575 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432b=['hook','exports','events','Plugin','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x432b,0x161));var _0xb432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x432b[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb432('0x0'));var Plugin=require('../../mysqldb')['db'][_0xb432('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0xb432('0x2')](0x0);var events={'afterCreate':_0xb432('0x3'),'afterUpdate':_0xb432('0x4'),'afterDestroy':'remove'};function emitEvent(_0x525deb){return function(_0x93e722,_0x4cefc4,_0x4541d3){PluginEvents['emit'](_0x525deb+':'+_0x93e722['id'],_0x93e722);PluginEvents[_0xb432('0x5')](_0x525deb,_0x93e722);_0x4541d3(null);};}for(var e in events){if(events[_0xb432('0x6')](e)){var event=events[e];Plugin[_0xb432('0x7')](e,emitEvent(event));}}module[_0xb432('0x8')]=PluginEvents;
\ No newline at end of file
+var _0xcddb=['update','emit','hook','exports','events','../../mysqldb','Plugin'];(function(_0x3f0101,_0x4b7241){var _0xe09fdc=function(_0x119dd4){while(--_0x119dd4){_0x3f0101['push'](_0x3f0101['shift']());}};_0xe09fdc(++_0x4b7241);}(_0xcddb,0x1c4));var _0xbcdd=function(_0xfd7abd,_0x31ca46){_0xfd7abd=_0xfd7abd-0x0;var _0x111fee=_0xcddb[_0xfd7abd];return _0x111fee;};'use strict';var EventEmitter=require(_0xbcdd('0x0'));var Plugin=require(_0xbcdd('0x1'))['db'][_0xbcdd('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xbcdd('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3239c1){return function(_0x38c955,_0x1119ba,_0x3fa08c){PluginEvents['emit'](_0x3239c1+':'+_0x38c955['id'],_0x38c955);PluginEvents[_0xbcdd('0x4')](_0x3239c1,_0x38c955);_0x3fa08c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin[_0xbcdd('0x5')](e,emitEvent(event));}}module[_0xbcdd('0x6')]=PluginEvents;
\ No newline at end of file
index 74ef707..0b5d50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf98=['path','rimraf','./plugin.attributes','exports','Plugin','plugins','api','moment','bluebird','request-promise'];(function(_0x281b5b,_0x3ddbfb){var _0x7d4d72=function(_0x25bcfa){while(--_0x25bcfa){_0x281b5b['push'](_0x281b5b['shift']());}};_0x7d4d72(++_0x3ddbfb);}(_0xbf98,0x132));var _0x8bf9=function(_0x545e86,_0x46a2ed){_0x545e86=_0x545e86-0x0;var _0xa98055=_0xbf98[_0x545e86];return _0xa98055;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x8bf9('0x0'));var moment=require(_0x8bf9('0x1'));var BPromise=require(_0x8bf9('0x2'));var rp=require(_0x8bf9('0x3'));var fs=require('fs');var path=require(_0x8bf9('0x4'));var rimraf=require(_0x8bf9('0x5'));var config=require('../../config/environment');var attributes=require(_0x8bf9('0x6'));module[_0x8bf9('0x7')]=function(_0x385f73,_0x4a901e){return _0x385f73['define'](_0x8bf9('0x8'),attributes,{'tableName':_0x8bf9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x793b=['plugins','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define'];(function(_0x1da525,_0x1f5e04){var _0x3ca8c5=function(_0x21aba8){while(--_0x21aba8){_0x1da525['push'](_0x1da525['shift']());}};_0x3ca8c5(++_0x1f5e04);}(_0x793b,0x1ae));var _0xb793=function(_0x449d51,_0x3e8c8f){_0x449d51=_0x449d51-0x0;var _0x4ee845=_0x793b[_0x449d51];return _0x4ee845;};'use strict';var _=require(_0xb793('0x0'));var util=require(_0xb793('0x1'));var logger=require(_0xb793('0x2'))('api');var moment=require(_0xb793('0x3'));var BPromise=require(_0xb793('0x4'));var rp=require(_0xb793('0x5'));var fs=require('fs');var path=require(_0xb793('0x6'));var rimraf=require(_0xb793('0x7'));var config=require(_0xb793('0x8'));var attributes=require(_0xb793('0x9'));module[_0xb793('0xa')]=function(_0x3db996,_0x59fdbd){return _0x3db996[_0xb793('0xb')]('Plugin',attributes,{'tableName':_0xb793('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e23bb64..dadc36b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62af=['raw','CreatePlugin','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','Plugin','create','body','options'];(function(_0x1f0024,_0x72cfd3){var _0x5a8eb5=function(_0x1b30cd){while(--_0x1b30cd){_0x1f0024['push'](_0x1f0024['shift']());}};_0x5a8eb5(++_0x72cfd3);}(_0x62af,0xb6));var _0xf62a=function(_0x3c165d,_0xcbcca0){_0x3c165d=_0x3c165d-0x0;var _0x2ed713=_0x62af[_0x3c165d];return _0x2ed713;};'use strict';var _=require('lodash');var util=require(_0xf62a('0x0'));var moment=require(_0xf62a('0x1'));var BPromise=require(_0xf62a('0x2'));var rs=require(_0xf62a('0x3'));var fs=require('fs');var Redis=require(_0xf62a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf62a('0x5'));var logger=require(_0xf62a('0x6'))(_0xf62a('0x7'));var config=require(_0xf62a('0x8'));var jayson=require(_0xf62a('0x9'));var client=jayson[_0xf62a('0xa')][_0xf62a('0xb')]({'port':0x232a});config[_0xf62a('0xc')]=_[_0xf62a('0xd')](config[_0xf62a('0xc')],{'host':_0xf62a('0xe'),'port':0x18eb});var socket=require(_0xf62a('0xf'))(new Redis(config[_0xf62a('0xc')]));require(_0xf62a('0x10'))[_0xf62a('0x11')](socket);function respondWithRpcPromise(_0xc898cd,_0x597b49,_0xc7bf79){return new BPromise(function(_0xda3e6b,_0x5017af){return client[_0xf62a('0x12')](_0xc898cd,_0xc7bf79)[_0xf62a('0x13')](function(_0x266ed8){logger[_0xf62a('0x14')](_0xf62a('0x15'),_0x597b49,_0xf62a('0x16'));logger[_0xf62a('0x17')]('Plugin,\x20%s,\x20%s,\x20%s',_0x597b49,_0xf62a('0x16'),JSON[_0xf62a('0x18')](_0x266ed8));if(_0x266ed8[_0xf62a('0x19')]){if(_0x266ed8[_0xf62a('0x19')][_0xf62a('0x1a')]===0x1f4){logger[_0xf62a('0x19')](_0xf62a('0x15'),_0x597b49,_0x266ed8[_0xf62a('0x19')][_0xf62a('0x1b')]);return _0x5017af(_0x266ed8[_0xf62a('0x19')][_0xf62a('0x1b')]);}logger[_0xf62a('0x19')]('Plugin,\x20%s,\x20%s',_0x597b49,_0x266ed8[_0xf62a('0x19')][_0xf62a('0x1b')]);return _0xda3e6b(_0x266ed8[_0xf62a('0x19')][_0xf62a('0x1b')]);}else{logger['info'](_0xf62a('0x15'),_0x597b49,_0xf62a('0x16'));_0xda3e6b(_0x266ed8[_0xf62a('0x1c')][_0xf62a('0x1b')]);}})[_0xf62a('0x1d')](function(_0x476831){logger[_0xf62a('0x19')](_0xf62a('0x15'),_0x597b49,_0x476831);_0x5017af(_0x476831);});});}exports['CreatePlugin']=function(_0x5a9292){var _0x3bd6d3=this;return new Promise(function(_0x30813b,_0x5a4998){return db[_0xf62a('0x1e')][_0xf62a('0x1f')](_0x5a9292[_0xf62a('0x20')],{'raw':_0x5a9292[_0xf62a('0x21')]?_0x5a9292[_0xf62a('0x21')][_0xf62a('0x22')]===undefined?!![]:![]:!![]})[_0xf62a('0x13')](function(_0x2f6680){logger[_0xf62a('0x14')](_0xf62a('0x23'),_0x5a9292);logger[_0xf62a('0x17')](_0xf62a('0x23'),_0x5a9292,JSON[_0xf62a('0x18')](_0x2f6680));_0x30813b(_0x2f6680);})[_0xf62a('0x1d')](function(_0x4a58d5){logger['error'](_0xf62a('0x23'),_0x4a58d5['message'],_0x5a9292);_0x5a4998(_0x3bd6d3[_0xf62a('0x19')](0x1f4,_0x4a58d5['message']));});});};
\ No newline at end of file
+var _0xedb4=['rpc','../../config/environment','client','http','defaults','redis','socket.io-emitter','register','request','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Plugin,\x20%s,\x20%s','result','catch','Plugin','create','body','options','raw','CreatePlugin','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x105f0a,_0x5ed5ef){var _0x22b94a=function(_0xc34a2c){while(--_0xc34a2c){_0x105f0a['push'](_0x105f0a['shift']());}};_0x22b94a(++_0x5ed5ef);}(_0xedb4,0x156));var _0x4edb=function(_0x5ec454,_0xfcd77e){_0x5ec454=_0x5ec454-0x0;var _0x5ebf50=_0xedb4[_0x5ec454];return _0x5ebf50;};'use strict';var _=require('lodash');var util=require(_0x4edb('0x0'));var moment=require(_0x4edb('0x1'));var BPromise=require(_0x4edb('0x2'));var rs=require(_0x4edb('0x3'));var fs=require('fs');var Redis=require(_0x4edb('0x4'));var db=require(_0x4edb('0x5'))['db'];var utils=require(_0x4edb('0x6'));var logger=require(_0x4edb('0x7'))(_0x4edb('0x8'));var config=require(_0x4edb('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4edb('0xa')][_0x4edb('0xb')]({'port':0x232a});config['redis']=_[_0x4edb('0xc')](config[_0x4edb('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x4edb('0xe'))(new Redis(config[_0x4edb('0xd')]));require('./plugin.socket')[_0x4edb('0xf')](socket);function respondWithRpcPromise(_0x7b717f,_0x86d377,_0x9938d6){return new BPromise(function(_0xf4fb7c,_0x265db3){return client[_0x4edb('0x10')](_0x7b717f,_0x9938d6)[_0x4edb('0x11')](function(_0x2186a5){logger[_0x4edb('0x12')]('Plugin,\x20%s,\x20%s',_0x86d377,_0x4edb('0x13'));logger[_0x4edb('0x14')](_0x4edb('0x15'),_0x86d377,'request\x20sent',JSON[_0x4edb('0x16')](_0x2186a5));if(_0x2186a5[_0x4edb('0x17')]){if(_0x2186a5['error'][_0x4edb('0x18')]===0x1f4){logger[_0x4edb('0x17')]('Plugin,\x20%s,\x20%s',_0x86d377,_0x2186a5[_0x4edb('0x17')][_0x4edb('0x19')]);return _0x265db3(_0x2186a5[_0x4edb('0x17')][_0x4edb('0x19')]);}logger[_0x4edb('0x17')]('Plugin,\x20%s,\x20%s',_0x86d377,_0x2186a5[_0x4edb('0x17')]['message']);return _0xf4fb7c(_0x2186a5[_0x4edb('0x17')]['message']);}else{logger[_0x4edb('0x12')](_0x4edb('0x1a'),_0x86d377,_0x4edb('0x13'));_0xf4fb7c(_0x2186a5[_0x4edb('0x1b')]['message']);}})[_0x4edb('0x1c')](function(_0xdf78af){logger['error'](_0x4edb('0x1a'),_0x86d377,_0xdf78af);_0x265db3(_0xdf78af);});});}exports['CreatePlugin']=function(_0x596edf){var _0x281bc6=this;return new Promise(function(_0x11d9a8,_0x2a0eec){return db[_0x4edb('0x1d')][_0x4edb('0x1e')](_0x596edf[_0x4edb('0x1f')],{'raw':_0x596edf[_0x4edb('0x20')]?_0x596edf[_0x4edb('0x20')][_0x4edb('0x21')]===undefined?!![]:![]:!![]})[_0x4edb('0x11')](function(_0x3deb23){logger[_0x4edb('0x12')]('CreatePlugin',_0x596edf);logger[_0x4edb('0x14')](_0x4edb('0x22'),_0x596edf,JSON[_0x4edb('0x16')](_0x3deb23));_0x11d9a8(_0x3deb23);})[_0x4edb('0x1c')](function(_0x4a9a84){logger[_0x4edb('0x17')](_0x4edb('0x22'),_0x4a9a84['message'],_0x596edf);_0x2a0eec(_0x281bc6[_0x4edb('0x17')](0x1f4,_0x4a9a84[_0x4edb('0x19')]));});});};
\ No newline at end of file
index 6dfa5ae..8488bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fb3=['register','length','./plugin.events','remove','update','removeListener'];(function(_0x596512,_0x222ea3){var _0x4a0255=function(_0x68a1fc){while(--_0x68a1fc){_0x596512['push'](_0x596512['shift']());}};_0x4a0255(++_0x222ea3);}(_0x7fb3,0x1c4));var _0x37fb=function(_0x1ca4cc,_0x402c23){_0x1ca4cc=_0x1ca4cc-0x0;var _0x108010=_0x7fb3[_0x1ca4cc];return _0x108010;};'use strict';var PluginEvents=require(_0x37fb('0x0'));var events=['save',_0x37fb('0x1'),_0x37fb('0x2')];function createListener(_0x3b5ff2,_0x2f1356){return function(_0x26b4a9){_0x2f1356['emit'](_0x3b5ff2,_0x26b4a9);};}function removeListener(_0x520a2f,_0x38cb12){return function(){PluginEvents[_0x37fb('0x3')](_0x520a2f,_0x38cb12);};}exports[_0x37fb('0x4')]=function(_0x3881c0){for(var _0x5e316d=0x0,_0x40e245=events[_0x37fb('0x5')];_0x5e316d<_0x40e245;_0x5e316d++){var _0x781482=events[_0x5e316d];var _0x983ee=createListener('plugin:'+_0x781482,_0x3881c0);PluginEvents['on'](_0x781482,_0x983ee);}};
\ No newline at end of file
+var _0xbe76=['plugin:','save','remove','update','emit','register'];(function(_0x125098,_0x5da101){var _0x42d4de=function(_0xff5db5){while(--_0xff5db5){_0x125098['push'](_0x125098['shift']());}};_0x42d4de(++_0x5da101);}(_0xbe76,0x127));var _0x6be7=function(_0x6adec3,_0x3d264a){_0x6adec3=_0x6adec3-0x0;var _0xf68ec2=_0xbe76[_0x6adec3];return _0xf68ec2;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x6be7('0x0'),_0x6be7('0x1'),_0x6be7('0x2')];function createListener(_0x21f452,_0x41a1a3){return function(_0x22ba80){_0x41a1a3[_0x6be7('0x3')](_0x21f452,_0x22ba80);};}function removeListener(_0xdbd213,_0x194ddb){return function(){PluginEvents['removeListener'](_0xdbd213,_0x194ddb);};}exports[_0x6be7('0x4')]=function(_0x1526b0){for(var _0x2b9351=0x0,_0x12a016=events['length'];_0x2b9351<_0x12a016;_0x2b9351++){var _0x2445ea=events[_0x2b9351];var _0xa5ef4b=createListener(_0x6be7('0x5')+_0x2445ea,_0x1526b0);PluginEvents['on'](_0x2445ea,_0xa5ef4b);}};
\ No newline at end of file
index f9c3951..79b9150 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(_0x60e2f9,_0x2b7b00){var _0x2739ee=function(_0x236f04){while(--_0x236f04){_0x60e2f9['push'](_0x60e2f9['shift']());}};_0x2739ee(++_0x2b7b00);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'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(_0x5bed47,_0x23af28){var _0x3d7ce8=function(_0x1e8f16){while(--_0x1e8f16){_0x5bed47['push'](_0x5bed47['shift']());}};_0x3d7ce8(++_0x23af28);}(_0xa9e0,0x123));var _0x0a9e=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xa9e0[_0x138f59];return _0x3d114d;};'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 07c6d66..f722e43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7c8=['start','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','dump','Unknown\x20id','../../config/pm2','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','status','json','error','name','send','npm\x20install','info','index','list','reject','express','motion2','length','then','catch','show','describe','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname'];(function(_0x32699a,_0x3dc359){var _0x3b4a7d=function(_0xc860ce){while(--_0xc860ce){_0x32699a['push'](_0x32699a['shift']());}};_0x3b4a7d(++_0x3dc359);}(_0xb7c8,0x119));var _0x8b7c=function(_0x539010,_0x16067b){_0x539010=_0x539010-0x0;var _0x330330=_0xb7c8[_0x539010];return _0x330330;};'use strict';var _=require('lodash');var pm2=require(_0x8b7c('0x0'));var logger=require(_0x8b7c('0x1'))(_0x8b7c('0x2'));var path=require(_0x8b7c('0x3'));var exec=require(_0x8b7c('0x4'))[_0x8b7c('0x5')];var BPromise=require(_0x8b7c('0x6'));function handleEntityNotFound(_0x50113e,_0x38672b){return function(_0x412f93){if(!_0x412f93){_0x50113e[_0x8b7c('0x7')](0x194);;}return _0x412f93;};}function respondWithResult(_0x440900,_0x107428){_0x107428=_0x107428||0xc8;return function(_0x12665c){if(_0x12665c){return _0x440900[_0x8b7c('0x8')](_0x107428)[_0x8b7c('0x9')](_0x12665c);}return null;};}function handleError(_0x6afb55,_0x30a924){_0x30a924=_0x30a924||0x1f4;return function(_0x187046){logger[_0x8b7c('0xa')](_0x187046['stack']);if(_0x187046[_0x8b7c('0xb')]){delete _0x187046['name'];}_0x6afb55[_0x8b7c('0x8')](_0x30a924)[_0x8b7c('0xc')](_0x187046);};}function execChildProcess(){return new BPromise(function(_0x5868ec,_0x189a25){exec(_0x8b7c('0xd'),function(_0x3594b1,_0x586826,_0x4adbe2){logger[_0x8b7c('0xe')](_0x586826);logger[_0x8b7c('0xe')](_0x4adbe2);if(_0x3594b1){logger[_0x8b7c('0xa')](_0x3594b1);return _0x189a25(_0x3594b1);}return _0x5868ec(_0x586826);});});}exports[_0x8b7c('0xf')]=function(_0x3e3e58,_0x247e3a){return pm2[_0x8b7c('0x10')]()['then'](function(_0x2b60a7){if(_0x2b60a7){var _0x19c63e=_[_0x8b7c('0x11')](_0x2b60a7,function(_0x52cfe7){return _0x52cfe7[_0x8b7c('0xb')]===_0x8b7c('0x12')||_0x52cfe7['name']===_0x8b7c('0x13');});return{'rows':_0x19c63e,'count':_0x19c63e[_0x8b7c('0x14')]};}return null;})[_0x8b7c('0x15')](respondWithResult(_0x247e3a,null))[_0x8b7c('0x16')](handleError(_0x247e3a,null));};exports[_0x8b7c('0x17')]=function(_0x4cc809,_0x402448){return pm2[_0x8b7c('0x18')](_0x4cc809[_0x8b7c('0x19')]['id'])[_0x8b7c('0x15')](respondWithResult(_0x402448,null))[_0x8b7c('0x15')](handleEntityNotFound(_0x402448,null))['catch'](handleError(_0x402448,null));};exports[_0x8b7c('0x1a')]=function(_0x2b0874,_0x450ab7){if(_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0xb')]&&_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0x1c')]){var _0xd0c3e6=path[_0x8b7c('0x1d')](__dirname,_0x8b7c('0x1e'),_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0x1c')]);var _0x53451d=process[_0x8b7c('0x1f')]();process[_0x8b7c('0x20')](path[_0x8b7c('0x21')](_0xd0c3e6));return execChildProcess()[_0x8b7c('0x15')](function(_0x9365e3){process[_0x8b7c('0x20')](_0x53451d);return pm2[_0x8b7c('0x22')]({'name':_0x2b0874[_0x8b7c('0x1b')][_0x8b7c('0xb')],'script':_0xd0c3e6});})[_0x8b7c('0x15')](function(_0x5e131c){pm2['dump']();return _0x5e131c[0x0];})[_0x8b7c('0x15')](respondWithResult(_0x450ab7,0xc9))['catch'](handleError(_0x450ab7,null));}else{return _0x450ab7[_0x8b7c('0x8')](0x1f4)[_0x8b7c('0xc')]({'message':_0x8b7c('0x23')});}};exports[_0x8b7c('0x24')]=function(_0x3e35b8,_0x3d2dfa){if(_0x3e35b8['body']['id']){delete _0x3e35b8[_0x8b7c('0x1b')]['id'];}var _0x31390d={'online':_0x8b7c('0x25'),'stopped':_0x8b7c('0x26')};if(_0x31390d[_0x8b7c('0x27')](_0x3e35b8[_0x8b7c('0x1b')][_0x8b7c('0x8')])){return pm2[_0x31390d[_0x3e35b8[_0x8b7c('0x1b')][_0x8b7c('0x8')]]](_0x3e35b8[_0x8b7c('0x19')]['id'])['then'](respondWithResult(_0x3d2dfa,0xc8))['catch'](handleError(_0x3d2dfa,null));}else{return _0x3d2dfa[_0x8b7c('0x8')](0x1f4)[_0x8b7c('0xc')]({'message':_0x8b7c('0x28')});}};exports[_0x8b7c('0x29')]=function(_0x3bfe78,_0x1f373f){if(_0x3bfe78[_0x8b7c('0x1b')]['id']){delete _0x3bfe78[_0x8b7c('0x1b')]['id'];}if(_0x3bfe78[_0x8b7c('0x19')]['id']){return pm2[_0x8b7c('0x2a')](_0x3bfe78['params']['id'])[_0x8b7c('0x15')](function(_0x5906bd){pm2[_0x8b7c('0x2b')]();return _0x5906bd[0x0];})[_0x8b7c('0x15')](respondWithResult(_0x1f373f,null))['catch'](handleError(_0x1f373f,null));}else{return _0x1f373f[_0x8b7c('0x8')](0x1f4)['send']({'message':_0x8b7c('0x2c')});}};
\ No newline at end of file
+var _0xc788=['body','script','join','../../files/plugins','chdir','dirname','start','dump','send','update','stop','hasOwnProperty','Unknown\x20status','params','delete','Unknown\x20id','lodash','../../config/pm2','../../config/logger','child_process','exec','bluebird','sendStatus','status','error','stack','name','info','index','list','then','reject','motion2','catch','show','describe'];(function(_0x4a09c6,_0x54ce5e){var _0x25d834=function(_0x272ccc){while(--_0x272ccc){_0x4a09c6['push'](_0x4a09c6['shift']());}};_0x25d834(++_0x54ce5e);}(_0xc788,0xc4));var _0x8c78=function(_0x21ccfc,_0x48834e){_0x21ccfc=_0x21ccfc-0x0;var _0x279454=_0xc788[_0x21ccfc];return _0x279454;};'use strict';var _=require(_0x8c78('0x0'));var pm2=require(_0x8c78('0x1'));var logger=require(_0x8c78('0x2'))('api');var path=require('path');var exec=require(_0x8c78('0x3'))[_0x8c78('0x4')];var BPromise=require(_0x8c78('0x5'));function handleEntityNotFound(_0x1d0670,_0x386f0a){return function(_0x5498f9){if(!_0x5498f9){_0x1d0670[_0x8c78('0x6')](0x194);;}return _0x5498f9;};}function respondWithResult(_0x4555da,_0x329152){_0x329152=_0x329152||0xc8;return function(_0x1ac27f){if(_0x1ac27f){return _0x4555da[_0x8c78('0x7')](_0x329152)['json'](_0x1ac27f);}return null;};}function handleError(_0x247188,_0x299d9d){_0x299d9d=_0x299d9d||0x1f4;return function(_0x9bc075){logger[_0x8c78('0x8')](_0x9bc075[_0x8c78('0x9')]);if(_0x9bc075[_0x8c78('0xa')]){delete _0x9bc075['name'];}_0x247188[_0x8c78('0x7')](_0x299d9d)['send'](_0x9bc075);};}function execChildProcess(){return new BPromise(function(_0x3d55f0,_0x45935a){exec('npm\x20install',function(_0x1a05a7,_0x95e78e,_0x5ee642){logger[_0x8c78('0xb')](_0x95e78e);logger['info'](_0x5ee642);if(_0x1a05a7){logger['error'](_0x1a05a7);return _0x45935a(_0x1a05a7);}return _0x3d55f0(_0x95e78e);});});}exports[_0x8c78('0xc')]=function(_0x1b1d0e,_0x26178c){return pm2[_0x8c78('0xd')]()[_0x8c78('0xe')](function(_0x3d1306){if(_0x3d1306){var _0xe5f8ae=_[_0x8c78('0xf')](_0x3d1306,function(_0x2f44af){return _0x2f44af[_0x8c78('0xa')]==='express'||_0x2f44af[_0x8c78('0xa')]===_0x8c78('0x10');});return{'rows':_0xe5f8ae,'count':_0xe5f8ae['length']};}return null;})[_0x8c78('0xe')](respondWithResult(_0x26178c,null))[_0x8c78('0x11')](handleError(_0x26178c,null));};exports[_0x8c78('0x12')]=function(_0x23824e,_0x2a982c){return pm2[_0x8c78('0x13')](_0x23824e['params']['id'])['then'](respondWithResult(_0x2a982c,null))[_0x8c78('0xe')](handleEntityNotFound(_0x2a982c,null))['catch'](handleError(_0x2a982c,null));};exports['create']=function(_0xece4f0,_0x56c191){if(_0xece4f0[_0x8c78('0x14')][_0x8c78('0xa')]&&_0xece4f0['body'][_0x8c78('0x15')]){var _0x5b111b=path[_0x8c78('0x16')](__dirname,_0x8c78('0x17'),_0xece4f0['body'][_0x8c78('0x15')]);var _0x188cc3=process['cwd']();process[_0x8c78('0x18')](path[_0x8c78('0x19')](_0x5b111b));return execChildProcess()[_0x8c78('0xe')](function(_0x9581c6){process[_0x8c78('0x18')](_0x188cc3);return pm2[_0x8c78('0x1a')]({'name':_0xece4f0[_0x8c78('0x14')][_0x8c78('0xa')],'script':_0x5b111b});})[_0x8c78('0xe')](function(_0x4a7d20){pm2[_0x8c78('0x1b')]();return _0x4a7d20[0x0];})[_0x8c78('0xe')](respondWithResult(_0x56c191,0xc9))[_0x8c78('0x11')](handleError(_0x56c191,null));}else{return _0x56c191['status'](0x1f4)[_0x8c78('0x1c')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x8c78('0x1d')]=function(_0x24f9a7,_0x8d9ff9){if(_0x24f9a7['body']['id']){delete _0x24f9a7[_0x8c78('0x14')]['id'];}var _0x2568d5={'online':'restart','stopped':_0x8c78('0x1e')};if(_0x2568d5[_0x8c78('0x1f')](_0x24f9a7[_0x8c78('0x14')][_0x8c78('0x7')])){return pm2[_0x2568d5[_0x24f9a7[_0x8c78('0x14')][_0x8c78('0x7')]]](_0x24f9a7['params']['id'])[_0x8c78('0xe')](respondWithResult(_0x8d9ff9,0xc8))['catch'](handleError(_0x8d9ff9,null));}else{return _0x8d9ff9[_0x8c78('0x7')](0x1f4)[_0x8c78('0x1c')]({'message':_0x8c78('0x20')});}};exports['destroy']=function(_0x1f1a0c,_0x3816d2){if(_0x1f1a0c['body']['id']){delete _0x1f1a0c[_0x8c78('0x14')]['id'];}if(_0x1f1a0c[_0x8c78('0x21')]['id']){return pm2[_0x8c78('0x22')](_0x1f1a0c['params']['id'])[_0x8c78('0xe')](function(_0x63307e){pm2[_0x8c78('0x1b')]();return _0x63307e[0x0];})['then'](respondWithResult(_0x3816d2,null))[_0x8c78('0x11')](handleError(_0x3816d2,null));}else{return _0x3816d2[_0x8c78('0x7')](0x1f4)['send']({'message':_0x8c78('0x23')});}};
\ No newline at end of file
index 367b858..c8aa9d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x202a=['Router','../../components/auth/service','./realtime.controller','/queues'];(function(_0x4017b0,_0x4347db){var _0x5ed4f7=function(_0x706c26){while(--_0x706c26){_0x4017b0['push'](_0x4017b0['shift']());}};_0x5ed4f7(++_0x4347db);}(_0x202a,0xc0));var _0xa202=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x202a[_0x321bb2];return _0x9c12ed;};'use strict';var express=require('express');var router=express[_0xa202('0x0')]();var auth=require(_0xa202('0x1'));var controller=require(_0xa202('0x2'));router['get'](_0xa202('0x3'),auth['isAuthenticated'](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
+var _0x2015=['/queues','isAuthenticated','getQueues','express','Router','../../components/auth/service','./realtime.controller','get'];(function(_0x2a6809,_0x44edde){var _0x11c371=function(_0x1a4888){while(--_0x1a4888){_0x2a6809['push'](_0x2a6809['shift']());}};_0x11c371(++_0x44edde);}(_0x2015,0x193));var _0x5201=function(_0x5ad257,_0x51e4a1){_0x5ad257=_0x5ad257-0x0;var _0x22afeb=_0x2015[_0x5ad257];return _0x22afeb;};'use strict';var express=require(_0x5201('0x0'));var router=express[_0x5201('0x1')]();var auth=require(_0x5201('0x2'));var controller=require(_0x5201('0x3'));router[_0x5201('0x4')](_0x5201('0x5'),auth[_0x5201('0x6')](),controller[_0x5201('0x7')]);module['exports']=router;
\ No newline at end of file
index bb8ef58..2437a5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['User','Pause','findAll','agent','all','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','http','client','undefined','limit','count','offset','status','set','json','error','stack','name','send','getQueues','mail','chat','sms','openchannel','fax','whatsapp','resolve','query','channel','includes','toLowerCase','startCase','Queue','map','rawAttributes','fieldName','type','getOptions','role','user','userProfileId','voice','outbound','QueueCampaigns','Queues','filter','UserProfile','findAndCountAll','then','request','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','waiting','talking','paused','push','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','loggedInDb','agents','find','rows','merge','pick','online','getMembers','length','UserId'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0xba34,0x119));var _0x4ba3=function(_0x5a9387,_0xd0b4a2){_0x5a9387=_0x5a9387-0x0;var _0x1abe60=_0xba34[_0x5a9387];return _0x1abe60;};'use strict';var util=require(_0x4ba3('0x0'));var _=require(_0x4ba3('0x1'));var jayson=require(_0x4ba3('0x2'));var qs=require(_0x4ba3('0x3'));var logger=require(_0x4ba3('0x4'))('api');var db=require('../../mysqldb')['db'];var client=jayson['client'][_0x4ba3('0x5')]({'port':0x232a});var routingClient=jayson[_0x4ba3('0x6')][_0x4ba3('0x5')]({'port':0x232c});function respondWithFilteredResult(_0x1011ec,_0x3590a1){return function(_0xb88621){if(_0xb88621){var _0xe5f99a=typeof _0x3590a1['offset']===_0x4ba3('0x7')&&typeof _0x3590a1[_0x4ba3('0x8')]===_0x4ba3('0x7');var _0x18e332=_0xb88621[_0x4ba3('0x9')];var _0xcf1ec3=_0xe5f99a?0x0:_0x3590a1[_0x4ba3('0xa')];var _0x3f653c=_0xe5f99a?_0xb88621[_0x4ba3('0x9')]:_0x3590a1[_0x4ba3('0xa')]+_0x3590a1[_0x4ba3('0x8')];var _0x51edab;if(_0x3f653c>=_0x18e332){_0x3f653c=_0x18e332;_0x51edab=0xc8;}else{_0x51edab=0xce;}_0x1011ec[_0x4ba3('0xb')](_0x51edab);return _0x1011ec[_0x4ba3('0xc')]('Content-Range',_0xcf1ec3+'-'+_0x3f653c+'/'+_0x18e332)[_0x4ba3('0xd')](_0xb88621);}return null;};}function handleError(_0x567709,_0x1073d4){_0x1073d4=_0x1073d4||0x1f4;return function(_0x52f55c){logger[_0x4ba3('0xe')](_0x52f55c[_0x4ba3('0xf')]);if(_0x52f55c[_0x4ba3('0x10')]){delete _0x52f55c[_0x4ba3('0x10')];}_0x567709[_0x4ba3('0xb')](_0x1073d4)[_0x4ba3('0x11')](_0x52f55c);};}exports[_0x4ba3('0x12')]=function(_0x12ac90,_0x1dec48){var _0x401366=[_0x4ba3('0x13'),_0x4ba3('0x14'),_0x4ba3('0x15'),_0x4ba3('0x16'),_0x4ba3('0x17'),_0x4ba3('0x18'),'voice'];var _0x382fd0={'count':0x0,'rows':[]},_0x788277={},_0x5ff7ce;Promise[_0x4ba3('0x19')]()['then'](function(){if(_0x12ac90[_0x4ba3('0x1a')][_0x4ba3('0x1b')]){if(!_[_0x4ba3('0x1c')](_0x401366,_0x12ac90[_0x4ba3('0x1a')][_0x4ba3('0x1b')][_0x4ba3('0x1d')]()))throw new Error('Invalid\x20channel');_0x5ff7ce=_0x12ac90['query'][_0x4ba3('0x1b')]['toLowerCase']();}var _0x18dff5=_[_0x4ba3('0x1e')](_0x5ff7ce)+_0x4ba3('0x1f');var _0xbc7023=_[_0x4ba3('0x20')](db[_0x18dff5][_0x4ba3('0x21')],function(_0x4a0823){return{'name':_0x4a0823[_0x4ba3('0x22')],'type':_0x4a0823[_0x4ba3('0x23')]['key']};});_0x788277=qs[_0x4ba3('0x24')](_0xbc7023,_0x12ac90);if(_0x12ac90['user'][_0x4ba3('0x25')]===_0x4ba3('0x26')){var _0x11a917={'params':{'id':_0x12ac90[_0x4ba3('0x26')][_0x4ba3('0x27')]},'query':{'section':_0x5ff7ce===_0x4ba3('0x28')&&_0x12ac90[_0x4ba3('0x1a')][_0x4ba3('0x23')]===_0x4ba3('0x29')?_0x4ba3('0x2a'):_['startCase'](_0x5ff7ce)+_0x4ba3('0x2b'),'type':_0x12ac90[_0x4ba3('0x1a')][_0x4ba3('0x23')],'nolimit':!![],'sort':'name','filter':_0x12ac90[_0x4ba3('0x1a')][_0x4ba3('0x2c')]}};return db[_0x4ba3('0x2d')]['getResources'](_0x11a917);}return db[_0x18dff5][_0x4ba3('0x2e')](_0x788277);})[_0x4ba3('0x2f')](function(_0x34ecb4){_0x382fd0[_0x4ba3('0x9')]=_0x34ecb4['count'];var _0x590108=_0x5ff7ce===_0x4ba3('0x28')?client:routingClient;return _0x590108[_0x4ba3('0x30')](_[_0x4ba3('0x1e')](_0x5ff7ce)+_0x4ba3('0x2b'),_0x12ac90)[_0x4ba3('0x2f')](function(_0x11f88f){if(_0x11f88f['error'])throw new Error(util[_0x4ba3('0x31')](_0x4ba3('0x32'),_0x5ff7ce));var _0x24d8fc=_0x11f88f[_0x4ba3('0x33')];var _0x2a6757=[_0x4ba3('0x34'),_0x4ba3('0x35'),_0x4ba3('0x36'),_0x4ba3('0x37'),_0x4ba3('0x38')];if(_0x5ff7ce==='voice'&&_0x12ac90['query']['type']===_0x4ba3('0x29')){_0x2a6757[_0x4ba3('0x39')](_0x4ba3('0x3a'),_0x4ba3('0x3b'),_0x4ba3('0x3c'),_0x4ba3('0x3d'),_0x4ba3('0x3e'),_0x4ba3('0x3f'),_0x4ba3('0x40'),_0x4ba3('0x41'),_0x4ba3('0x42'),_0x4ba3('0x43'),'erlangAbandonmentRate',_0x4ba3('0x44'),_0x4ba3('0x45'),_0x4ba3('0x46'),'dialPredictiveIntervalMinThreshold',_0x4ba3('0x47'),'predictiveIntervalTotalCalls',_0x4ba3('0x48'),_0x4ba3('0x49'),_0x4ba3('0x4a'),_0x4ba3('0x4b'),_0x4ba3('0x4c'));}var _0x3d977c=_0x34ecb4['rows'][_0x4ba3('0x20')](function(_0x3cf56c){var _0x2e77d4=_0x3cf56c['get']({'plain':!![]});_0x2e77d4[_0x4ba3('0x38')]=0x0;_0x2e77d4[_0x4ba3('0x4d')]=0x0;_0x2e77d4['loggedIn']=0x0;_0x2e77d4[_0x4ba3('0x35')]=0x0;_0x2e77d4['paused']=0x0;_0x2e77d4['waiting']=0x0;if(_0x5ff7ce===_0x4ba3('0x28')){_0x2e77d4[_0x4ba3('0x37')]=0x0;if(_0x12ac90[_0x4ba3('0x1a')][_0x4ba3('0x23')]===_0x4ba3('0x29')){_0x2e77d4['pTalking']=0x0;_0x2e77d4[_0x4ba3('0x3b')]=0x0;}}_0x2e77d4[_0x4ba3('0x4e')]=[];var _0x46d2ca=_[_0x4ba3('0x4f')](_0x24d8fc[_0x4ba3('0x50')],['id',_0x2e77d4['id']]);if(_0x46d2ca)_[_0x4ba3('0x51')](_0x2e77d4,_[_0x4ba3('0x52')](_0x46d2ca,_0x2a6757));if(_0x5ff7ce===_0x4ba3('0x28')){return _0x3cf56c['getAgents']({'attributes':['id',_0x4ba3('0x10'),_0x4ba3('0x53')],'joinTableAttributes':[],'raw':!![]})[_0x4ba3('0x2f')](function(_0x3338d9){return _0x3cf56c[_0x4ba3('0x54')]({'raw':!![]})[_0x4ba3('0x2f')](function(_0x748631){for(var _0xdcc2a2=0x0;_0xdcc2a2<_0x3338d9[_0x4ba3('0x55')];_0xdcc2a2++){var _0xa692c6=_[_0x4ba3('0x4f')](_0x748631,[_0x4ba3('0x56'),_0x3338d9[_0xdcc2a2]['id']]);var _0x1d031b={'id':_0x3338d9[_0xdcc2a2]['id'],'name':_0x3338d9[_0xdcc2a2][_0x4ba3('0x10')],'online':Boolean(_0x3338d9[_0xdcc2a2]['online']),'paused':_0xa692c6?Boolean(_0xa692c6['paused']):![]};if(_0x1d031b['online'])_0x2e77d4['loggedInDb']++;if(_0x1d031b['paused'])_0x2e77d4[_0x4ba3('0x38')]++;_0x2e77d4['agents'][_0x4ba3('0x39')](_0x1d031b);}return _0x2e77d4;});});}else{var _0x5567c7=_0x4ba3('0x57')+_[_0x4ba3('0x1e')](_0x5ff7ce)+_0x4ba3('0x1f');var _0x29090b=_0x5ff7ce+_0x4ba3('0x58');return db[_0x5567c7]['findAll']({'where':{[_[_0x4ba3('0x1e')](_0x5ff7ce)+'QueueId']:_0x3cf56c['id']},'raw':!![]})[_0x4ba3('0x2f')](function(_0x50f27a){return db[_0x4ba3('0x57')][_0x4ba3('0x59')]({'attributes':['id',_0x4ba3('0x10'),_0x4ba3('0x53'),_0x29090b],'where':{'id':_[_0x4ba3('0x20')](_0x50f27a,_0x4ba3('0x56')),'role':_0x4ba3('0x5a')},'raw':!![]});})['then'](function(_0xc3652a){for(var _0x13cc06=0x0;_0x13cc06<_0xc3652a[_0x4ba3('0x55')];_0x13cc06++){var _0x20dd6d={'id':_0xc3652a[_0x13cc06]['id'],'name':_0xc3652a[_0x13cc06][_0x4ba3('0x10')],'online':Boolean(_0xc3652a[_0x13cc06]['online']),'paused':Boolean(_0xc3652a[_0x13cc06][_0x29090b])};if(_0x20dd6d['online'])_0x2e77d4[_0x4ba3('0x4d')]++;if(_0x20dd6d[_0x4ba3('0x38')])_0x2e77d4[_0x4ba3('0x38')]++;_0x2e77d4['agents'][_0x4ba3('0x39')](_0x20dd6d);}return _0x2e77d4;});}});return Promise[_0x4ba3('0x5b')](_0x3d977c);});})[_0x4ba3('0x2f')](function(_0x58648d){_0x382fd0['rows']=_0x58648d;return _0x382fd0;})[_0x4ba3('0x2f')](respondWithFilteredResult(_0x1dec48,_0x788277))['catch'](handleError(_0x1dec48,null));};
\ No newline at end of file
+var _0x32f4=['findAll','QueueId','User','catch','util','lodash','jayson/promise','../../components/parsers/qs','api','../../mysqldb','http','client','offset','undefined','count','limit','status','Content-Range','json','stack','name','send','getQueues','chat','sms','openchannel','fax','voice','resolve','then','channel','query','toLowerCase','Invalid\x20channel','startCase','Queue','map','fieldName','key','user','role','userProfileId','type','QueueCampaigns','Queues','UserProfile','findAndCountAll','request','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','loggedIn','available','paused','outbound','push','pTalking','originated','message','dialActive','dialMethod','Trunk','erlangCalls','erlangCallToSecond','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','rows','get','loggedInDb','waiting','talking','agents','find','merge','pick','online','getMembers','length','UserId','Pause'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x32f4,0x154));var _0x432f=function(_0x466fed,_0x5193fb){_0x466fed=_0x466fed-0x0;var _0x5c42d9=_0x32f4[_0x466fed];return _0x5c42d9;};'use strict';var util=require(_0x432f('0x0'));var _=require(_0x432f('0x1'));var jayson=require(_0x432f('0x2'));var qs=require(_0x432f('0x3'));var logger=require('../../config/logger')(_0x432f('0x4'));var db=require(_0x432f('0x5'))['db'];var client=jayson['client'][_0x432f('0x6')]({'port':0x232a});var routingClient=jayson[_0x432f('0x7')][_0x432f('0x6')]({'port':0x232c});function respondWithFilteredResult(_0x355b02,_0x2f5f03){return function(_0x5d8cc0){if(_0x5d8cc0){var _0x5b5f08=typeof _0x2f5f03[_0x432f('0x8')]===_0x432f('0x9')&&typeof _0x2f5f03['limit']===_0x432f('0x9');var _0x5aaf1a=_0x5d8cc0[_0x432f('0xa')];var _0x340fe9=_0x5b5f08?0x0:_0x2f5f03[_0x432f('0x8')];var _0x13369a=_0x5b5f08?_0x5d8cc0[_0x432f('0xa')]:_0x2f5f03['offset']+_0x2f5f03[_0x432f('0xb')];var _0x5758d7;if(_0x13369a>=_0x5aaf1a){_0x13369a=_0x5aaf1a;_0x5758d7=0xc8;}else{_0x5758d7=0xce;}_0x355b02[_0x432f('0xc')](_0x5758d7);return _0x355b02['set'](_0x432f('0xd'),_0x340fe9+'-'+_0x13369a+'/'+_0x5aaf1a)[_0x432f('0xe')](_0x5d8cc0);}return null;};}function handleError(_0x53459c,_0x457389){_0x457389=_0x457389||0x1f4;return function(_0x29f7d2){logger['error'](_0x29f7d2[_0x432f('0xf')]);if(_0x29f7d2[_0x432f('0x10')]){delete _0x29f7d2['name'];}_0x53459c['status'](_0x457389)[_0x432f('0x11')](_0x29f7d2);};}exports[_0x432f('0x12')]=function(_0x34add6,_0x453725){var _0x419bfe=['mail',_0x432f('0x13'),_0x432f('0x14'),_0x432f('0x15'),_0x432f('0x16'),'whatsapp',_0x432f('0x17')];var _0x30f231={'count':0x0,'rows':[]},_0x42c2d2={},_0x243cf;Promise[_0x432f('0x18')]()[_0x432f('0x19')](function(){if(_0x34add6['query'][_0x432f('0x1a')]){if(!_['includes'](_0x419bfe,_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]()))throw new Error(_0x432f('0x1d'));_0x243cf=_0x34add6[_0x432f('0x1b')][_0x432f('0x1a')][_0x432f('0x1c')]();}var _0x1899e6=_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x40176d=_[_0x432f('0x20')](db[_0x1899e6]['rawAttributes'],function(_0x5940bd){return{'name':_0x5940bd[_0x432f('0x21')],'type':_0x5940bd['type'][_0x432f('0x22')]};});_0x42c2d2=qs['getOptions'](_0x40176d,_0x34add6);if(_0x34add6[_0x432f('0x23')][_0x432f('0x24')]===_0x432f('0x23')){var _0x89ea50={'params':{'id':_0x34add6[_0x432f('0x23')][_0x432f('0x25')]},'query':{'section':_0x243cf==='voice'&&_0x34add6[_0x432f('0x1b')][_0x432f('0x26')]==='outbound'?_0x432f('0x27'):_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x28'),'type':_0x34add6[_0x432f('0x1b')][_0x432f('0x26')],'nolimit':!![],'sort':_0x432f('0x10'),'filter':_0x34add6[_0x432f('0x1b')]['filter']}};return db[_0x432f('0x29')]['getResources'](_0x89ea50);}return db[_0x1899e6][_0x432f('0x2a')](_0x42c2d2);})['then'](function(_0x20404d){_0x30f231['count']=_0x20404d[_0x432f('0xa')];var _0x489ba6=_0x243cf===_0x432f('0x17')?client:routingClient;return _0x489ba6[_0x432f('0x2b')](_[_0x432f('0x1e')](_0x243cf)+'Queues',_0x34add6)[_0x432f('0x19')](function(_0x24406a){if(_0x24406a['error'])throw new Error(util['format'](_0x432f('0x2c'),_0x243cf));var _0x39dbcb=_0x24406a[_0x432f('0x2d')];var _0x3581c2=[_0x432f('0x2e'),_0x432f('0x2f'),'waiting','talking',_0x432f('0x30')];if(_0x243cf===_0x432f('0x17')&&_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x3581c2[_0x432f('0x32')](_0x432f('0x33'),_0x432f('0x34'),_0x432f('0x35'),_0x432f('0x36'),_0x432f('0x37'),_0x432f('0x38'),'startPredictive','startProgressive',_0x432f('0x39'),_0x432f('0x3a'),'erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval',_0x432f('0x3b'),_0x432f('0x3c'),'predictiveIntervalAvailable',_0x432f('0x3d'),_0x432f('0x3e'),_0x432f('0x3f'),'predictiveIntervalDroppedCallsCallersExit',_0x432f('0x40'),_0x432f('0x41'));}var _0x499e58=_0x20404d[_0x432f('0x42')][_0x432f('0x20')](function(_0x59e111){var _0x28da2e=_0x59e111[_0x432f('0x43')]({'plain':!![]});_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x44')]=0x0;_0x28da2e[_0x432f('0x2e')]=0x0;_0x28da2e[_0x432f('0x2f')]=0x0;_0x28da2e[_0x432f('0x30')]=0x0;_0x28da2e[_0x432f('0x45')]=0x0;if(_0x243cf===_0x432f('0x17')){_0x28da2e[_0x432f('0x46')]=0x0;if(_0x34add6[_0x432f('0x1b')]['type']===_0x432f('0x31')){_0x28da2e['pTalking']=0x0;_0x28da2e[_0x432f('0x34')]=0x0;}}_0x28da2e[_0x432f('0x47')]=[];var _0x4f38e5=_[_0x432f('0x48')](_0x39dbcb['rows'],['id',_0x28da2e['id']]);if(_0x4f38e5)_[_0x432f('0x49')](_0x28da2e,_[_0x432f('0x4a')](_0x4f38e5,_0x3581c2));if(_0x243cf==='voice'){return _0x59e111['getAgents']({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b')],'joinTableAttributes':[],'raw':!![]})[_0x432f('0x19')](function(_0x121687){return _0x59e111[_0x432f('0x4c')]({'raw':!![]})['then'](function(_0x5dade1){for(var _0x53516d=0x0;_0x53516d<_0x121687[_0x432f('0x4d')];_0x53516d++){var _0x2c1bd1=_['find'](_0x5dade1,[_0x432f('0x4e'),_0x121687[_0x53516d]['id']]);var _0x841572={'id':_0x121687[_0x53516d]['id'],'name':_0x121687[_0x53516d][_0x432f('0x10')],'online':Boolean(_0x121687[_0x53516d][_0x432f('0x4b')]),'paused':_0x2c1bd1?Boolean(_0x2c1bd1[_0x432f('0x30')]):![]};if(_0x841572[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x841572[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e['agents'][_0x432f('0x32')](_0x841572);}return _0x28da2e;});});}else{var _0xd8264f='User'+_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x1f');var _0x12b7a8=_0x243cf+_0x432f('0x4f');return db[_0xd8264f][_0x432f('0x50')]({'where':{[_[_0x432f('0x1e')](_0x243cf)+_0x432f('0x51')]:_0x59e111['id']},'raw':!![]})[_0x432f('0x19')](function(_0x42022d){return db[_0x432f('0x52')][_0x432f('0x50')]({'attributes':['id',_0x432f('0x10'),_0x432f('0x4b'),_0x12b7a8],'where':{'id':_[_0x432f('0x20')](_0x42022d,'UserId'),'role':'agent'},'raw':!![]});})[_0x432f('0x19')](function(_0x34dca6){for(var _0xcbdcc0=0x0;_0xcbdcc0<_0x34dca6[_0x432f('0x4d')];_0xcbdcc0++){var _0x12fd92={'id':_0x34dca6[_0xcbdcc0]['id'],'name':_0x34dca6[_0xcbdcc0]['name'],'online':Boolean(_0x34dca6[_0xcbdcc0][_0x432f('0x4b')]),'paused':Boolean(_0x34dca6[_0xcbdcc0][_0x12b7a8])};if(_0x12fd92[_0x432f('0x4b')])_0x28da2e[_0x432f('0x44')]++;if(_0x12fd92[_0x432f('0x30')])_0x28da2e[_0x432f('0x30')]++;_0x28da2e[_0x432f('0x47')][_0x432f('0x32')](_0x12fd92);}return _0x28da2e;});}});return Promise['all'](_0x499e58);});})[_0x432f('0x19')](function(_0x2dd9c2){_0x30f231[_0x432f('0x42')]=_0x2dd9c2;return _0x30f231;})['then'](respondWithFilteredResult(_0x453725,_0x42c2d2))[_0x432f('0x53')](handleError(_0x453725,null));};
\ No newline at end of file
index cb35140..6f96c8d 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(_0xdbce8,_0x550d11){var _0x4e8866=function(_0x570546){while(--_0x570546){_0xdbce8['push'](_0xdbce8['shift']());}};_0x4e8866(++_0x550d11);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'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(_0x2a7382,_0x5980a4){var _0x538c01=function(_0x3fa86e){while(--_0x3fa86e){_0x2a7382['push'](_0x2a7382['shift']());}};_0x538c01(++_0x5980a4);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x67f95e,_0x3ca797){_0x67f95e=_0x67f95e-0x0;var _0x538f5a=_0xcb91[_0x67f95e];return _0x538f5a;};'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 e34daf9..fc8fc77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf693=['DATE','exports','INTEGER','STRING'];(function(_0x12cb1c,_0x261434){var _0x5ec2be=function(_0x3358b1){while(--_0x3358b1){_0x12cb1c['push'](_0x12cb1c['shift']());}};_0x5ec2be(++_0x261434);}(_0xf693,0x181));var _0x3f69=function(_0x511e4a,_0x6caf66){_0x511e4a=_0x511e4a-0x0;var _0xb96807=_0xf693[_0x511e4a];return _0xb96807;};'use strict';var Sequelize=require('sequelize');module[_0x3f69('0x0')]={'state':{'type':Sequelize[_0x3f69('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x3f69('0x2')]},'scheduledat':{'type':Sequelize[_0x3f69('0x3')]},'uniqueid':{'type':Sequelize[_0x3f69('0x2')]},'starttime':{'type':Sequelize[_0x3f69('0x3')]},'responsetime':{'type':Sequelize[_0x3f69('0x3')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x3f69('0x2')]},'campaigntype':{'type':Sequelize[_0x3f69('0x2')]},'membername':{'type':Sequelize[_0x3f69('0x2')]}};
\ No newline at end of file
+var _0x9a14=['INTEGER','STRING','DATE'];(function(_0x382c73,_0x199cab){var _0x1dd0bf=function(_0x358747){while(--_0x358747){_0x382c73['push'](_0x382c73['shift']());}};_0x1dd0bf(++_0x199cab);}(_0x9a14,0xa8));var _0x49a1=function(_0x1beab5,_0x35e3da){_0x1beab5=_0x1beab5-0x0;var _0x4c008c=_0x9a14[_0x1beab5];return _0x4c008c;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize[_0x49a1('0x0')](0x2)},'statedesc':{'type':Sequelize[_0x49a1('0x1')]},'scheduledat':{'type':Sequelize[_0x49a1('0x2')]},'uniqueid':{'type':Sequelize[_0x49a1('0x1')]},'starttime':{'type':Sequelize[_0x49a1('0x2')]},'responsetime':{'type':Sequelize[_0x49a1('0x2')]},'ringtime':{'type':Sequelize[_0x49a1('0x0')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0x49a1('0x1')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d937987..8f4d309 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e64=['bluebird','request-promise','rimraf','../../config/environment','./reportAgentPreview.attributes','exports','define','report_agent_preview','lodash','util','moment'];(function(_0xc74069,_0x305dc2){var _0x414c1c=function(_0x48caca){while(--_0x48caca){_0xc74069['push'](_0xc74069['shift']());}};_0x414c1c(++_0x305dc2);}(_0x2e64,0x19f));var _0x42e6=function(_0x137da3,_0x455572){_0x137da3=_0x137da3-0x0;var _0x6c5200=_0x2e64[_0x137da3];return _0x6c5200;};'use strict';var _=require(_0x42e6('0x0'));var util=require(_0x42e6('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x42e6('0x2'));var BPromise=require(_0x42e6('0x3'));var rp=require(_0x42e6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x42e6('0x5'));var config=require(_0x42e6('0x6'));var attributes=require(_0x42e6('0x7'));module[_0x42e6('0x8')]=function(_0x428d3d,_0x29f87a){return _0x428d3d[_0x42e6('0x9')]('ReportAgentPreview',attributes,{'tableName':_0x42e6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcaa9=['bluebird','request-promise','path','rimraf','../../config/environment','./reportAgentPreview.attributes','define','report_agent_preview','lodash','util','../../config/logger','moment'];(function(_0x2788e5,_0x562bf4){var _0x7b12fd=function(_0x462a59){while(--_0x462a59){_0x2788e5['push'](_0x2788e5['shift']());}};_0x7b12fd(++_0x562bf4);}(_0xcaa9,0xb0));var _0x9caa=function(_0x3238ca,_0x37cbb5){_0x3238ca=_0x3238ca-0x0;var _0x59aa5d=_0xcaa9[_0x3238ca];return _0x59aa5d;};'use strict';var _=require(_0x9caa('0x0'));var util=require(_0x9caa('0x1'));var logger=require(_0x9caa('0x2'))('api');var moment=require(_0x9caa('0x3'));var BPromise=require(_0x9caa('0x4'));var rp=require(_0x9caa('0x5'));var fs=require('fs');var path=require(_0x9caa('0x6'));var rimraf=require(_0x9caa('0x7'));var config=require(_0x9caa('0x8'));var attributes=require(_0x9caa('0x9'));module['exports']=function(_0x19dcc0,_0x1ecd4c){return _0x19dcc0[_0x9caa('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x9caa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0100e7d..9994306 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee5e=['stringify','moment','randomstring','../../config/logger','jayson/promise','client','http','then','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','raw'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xee5e,0x181));var _0xeee5=function(_0x3a8afe,_0x111edb){_0x3a8afe=_0x3a8afe-0x0;var _0x346ed9=_0xee5e[_0x3a8afe];return _0x346ed9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xeee5('0x0'));var BPromise=require('bluebird');var rs=require(_0xeee5('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeee5('0x2'))('rpc');var config=require('../../config/environment');var jayson=require(_0xeee5('0x3'));var client=jayson[_0xeee5('0x4')][_0xeee5('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x2e57f6,_0xdaf7f9,_0xeec0e1){return new BPromise(function(_0xc141d6,_0x4411e5){return client['request'](_0x2e57f6,_0xeec0e1)[_0xeee5('0x6')](function(_0x25fbdd){logger[_0xeee5('0x7')](_0xeee5('0x8'),_0xdaf7f9,_0xeee5('0x9'));logger[_0xeee5('0xa')](_0xeee5('0xb'),_0xdaf7f9,'request\x20sent',JSON['stringify'](_0x25fbdd));if(_0x25fbdd[_0xeee5('0xc')]){if(_0x25fbdd[_0xeee5('0xc')][_0xeee5('0xd')]===0x1f4){logger[_0xeee5('0xc')](_0xeee5('0x8'),_0xdaf7f9,_0x25fbdd[_0xeee5('0xc')]['message']);return _0x4411e5(_0x25fbdd[_0xeee5('0xc')][_0xeee5('0xe')]);}logger[_0xeee5('0xc')](_0xeee5('0x8'),_0xdaf7f9,_0x25fbdd['error'][_0xeee5('0xe')]);return _0xc141d6(_0x25fbdd[_0xeee5('0xc')][_0xeee5('0xe')]);}else{logger[_0xeee5('0x7')](_0xeee5('0x8'),_0xdaf7f9,_0xeee5('0x9'));_0xc141d6(_0x25fbdd[_0xeee5('0xf')][_0xeee5('0xe')]);}})[_0xeee5('0x10')](function(_0x35956c){logger[_0xeee5('0xc')](_0xeee5('0x8'),_0xdaf7f9,_0x35956c);_0x4411e5(_0x35956c);});});}exports[_0xeee5('0x11')]=function(_0x14f933){var _0x3ec79a=this;return new Promise(function(_0x24c6a1,_0x3fbc3f){return db[_0xeee5('0x12')][_0xeee5('0x13')](_0x14f933[_0xeee5('0x14')],{'raw':_0x14f933[_0xeee5('0x15')]?_0x14f933['options'][_0xeee5('0x16')]===undefined?!![]:![]:!![]})[_0xeee5('0x6')](function(_0x3020e7){logger[_0xeee5('0x7')]('CreateReportAgentPreview',_0x14f933);logger[_0xeee5('0xa')](_0xeee5('0x11'),_0x14f933,JSON[_0xeee5('0x17')](_0x3020e7));_0x24c6a1(_0x3020e7);})['catch'](function(_0x5c01c4){logger[_0xeee5('0xc')](_0xeee5('0x11'),_0x5c01c4[_0xeee5('0xe')],_0x14f933);_0x3fbc3f(_0x3ec79a[_0xeee5('0xc')](0x1f4,_0x5c01c4[_0xeee5('0xe')]));});});};
\ No newline at end of file
+var _0xd438=['code','message','result','catch','CreateReportAgentPreview','ReportAgentPreview','create','body','options','then','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x331c72,_0x5a6428){var _0x2fe82b=function(_0x297095){while(--_0x297095){_0x331c72['push'](_0x331c72['shift']());}};_0x2fe82b(++_0x5a6428);}(_0xd438,0xf3));var _0x8d43=function(_0x209fcd,_0x1ecccc){_0x209fcd=_0x209fcd-0x0;var _0x501d5e=_0xd438[_0x209fcd];return _0x501d5e;};'use strict';var _=require(_0x8d43('0x0'));var util=require(_0x8d43('0x1'));var moment=require(_0x8d43('0x2'));var BPromise=require('bluebird');var rs=require(_0x8d43('0x3'));var fs=require('fs');var Redis=require(_0x8d43('0x4'));var db=require(_0x8d43('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x8d43('0x6'));var config=require(_0x8d43('0x7'));var jayson=require(_0x8d43('0x8'));var client=jayson[_0x8d43('0x9')][_0x8d43('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c42d1,_0x315bb2,_0x3422ba){return new BPromise(function(_0x471b3b,_0x5966a9){return client[_0x8d43('0xb')](_0x1c42d1,_0x3422ba)['then'](function(_0x295f1b){logger[_0x8d43('0xc')](_0x8d43('0xd'),_0x315bb2,_0x8d43('0xe'));logger['debug'](_0x8d43('0xf'),_0x315bb2,_0x8d43('0xe'),JSON[_0x8d43('0x10')](_0x295f1b));if(_0x295f1b[_0x8d43('0x11')]){if(_0x295f1b[_0x8d43('0x11')][_0x8d43('0x12')]===0x1f4){logger[_0x8d43('0x11')](_0x8d43('0xd'),_0x315bb2,_0x295f1b[_0x8d43('0x11')][_0x8d43('0x13')]);return _0x5966a9(_0x295f1b['error'][_0x8d43('0x13')]);}logger['error'](_0x8d43('0xd'),_0x315bb2,_0x295f1b[_0x8d43('0x11')][_0x8d43('0x13')]);return _0x471b3b(_0x295f1b[_0x8d43('0x11')][_0x8d43('0x13')]);}else{logger[_0x8d43('0xc')](_0x8d43('0xd'),_0x315bb2,'request\x20sent');_0x471b3b(_0x295f1b[_0x8d43('0x14')]['message']);}})[_0x8d43('0x15')](function(_0x555cd7){logger[_0x8d43('0x11')](_0x8d43('0xd'),_0x315bb2,_0x555cd7);_0x5966a9(_0x555cd7);});});}exports[_0x8d43('0x16')]=function(_0x40116f){var _0x3081f8=this;return new Promise(function(_0x2725a6,_0x442a86){return db[_0x8d43('0x17')][_0x8d43('0x18')](_0x40116f[_0x8d43('0x19')],{'raw':_0x40116f['options']?_0x40116f[_0x8d43('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x8d43('0x1b')](function(_0x450421){logger[_0x8d43('0xc')](_0x8d43('0x16'),_0x40116f);logger[_0x8d43('0x1c')]('CreateReportAgentPreview',_0x40116f,JSON[_0x8d43('0x10')](_0x450421));_0x2725a6(_0x450421);})[_0x8d43('0x15')](function(_0x3c5b36){logger[_0x8d43('0x11')](_0x8d43('0x16'),_0x3c5b36[_0x8d43('0x13')],_0x40116f);_0x442a86(_0x3081f8[_0x8d43('0x11')](0x1f4,_0x3c5b36[_0x8d43('0x13')]));});});};
\ No newline at end of file
index 66fe775..7e18966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa73=['faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','/fax/queues/:id','/openchannel/queues/:id/notify','/sms/queues/:id/notify','sms','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','agentNotify','multer','util','express','Router','../../components/auth/service','./rpc.controller','get','isAuthenticated','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','mailQueues','/openchannel/queues','/sms/queues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','put','/agents/:id/capacity','agentCapacity','/telephones','trunks','campaigns','/fax/accounts','faxAccounts','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions'];(function(_0x2fa6e3,_0x3e0b9){var _0x4303b6=function(_0x2d48ee){while(--_0x2d48ee){_0x2fa6e3['push'](_0x2fa6e3['shift']());}};_0x4303b6(++_0x3e0b9);}(_0xaa73,0xfe));var _0x3aa7=function(_0x4f1135,_0x21b33d){_0x4f1135=_0x4f1135-0x0;var _0x226edf=_0xaa73[_0x4f1135];return _0x226edf;};'use strict';var multer=require(_0x3aa7('0x0'));var util=require(_0x3aa7('0x1'));var path=require('path');var express=require(_0x3aa7('0x2'));var router=express[_0x3aa7('0x3')]();var auth=require(_0x3aa7('0x4'));var controller=require(_0x3aa7('0x5'));router[_0x3aa7('0x6')]('/voice/channels',auth[_0x3aa7('0x7')](),controller['voiceChannels']);router['get'](_0x3aa7('0x8'),auth['isAuthenticated'](),controller[_0x3aa7('0x9')]);router['get'](_0x3aa7('0xa'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0xb')]);router[_0x3aa7('0x6')](_0x3aa7('0xc'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0xd')]);router[_0x3aa7('0x6')](_0x3aa7('0xe'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0xf')]);router['get'](_0x3aa7('0x10'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x11')]);router[_0x3aa7('0x6')]('/mail/accounts',auth[_0x3aa7('0x7')](),controller['mailAccounts']);router[_0x3aa7('0x6')](_0x3aa7('0x12'),auth[_0x3aa7('0x7')](),controller['openchannelQueues']);router[_0x3aa7('0x6')](_0x3aa7('0x13'),auth['isAuthenticated'](),controller[_0x3aa7('0x14')]);router[_0x3aa7('0x6')](_0x3aa7('0x15'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x16')]);router[_0x3aa7('0x6')](_0x3aa7('0x17'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x18')]);router['get']('/voice/queues/preview/:id',auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x19')]);router['get'](_0x3aa7('0x1a'),auth['isAuthenticated'](),controller[_0x3aa7('0x1b')]);router[_0x3aa7('0x6')](_0x3aa7('0x1c'),auth[_0x3aa7('0x7')](),controller['voiceQueuesChannel']);router['get']('/voice/queues/channels/:uniqueid/hangup',auth['isAuthenticated'](),controller[_0x3aa7('0x1d')]);router[_0x3aa7('0x6')](_0x3aa7('0x1e'),auth[_0x3aa7('0x7')](),controller['voiceQueuesChannelRedirect']);router[_0x3aa7('0x6')](_0x3aa7('0x1f'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x20')]);router['put'](_0x3aa7('0x1f'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x21')]);router[_0x3aa7('0x6')](_0x3aa7('0x22'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x23')]);router[_0x3aa7('0x6')](_0x3aa7('0x24'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x25')]);router[_0x3aa7('0x6')](_0x3aa7('0x26'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x27')]);router[_0x3aa7('0x28')](_0x3aa7('0x29'),auth['isAuthenticated'](),controller[_0x3aa7('0x2a')]);router['get'](_0x3aa7('0x2b'),auth['isAuthenticated'](),controller['telephones']);router[_0x3aa7('0x6')]('/trunks',auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x2c')]);router[_0x3aa7('0x6')]('/campaigns',auth['isAuthenticated'](),controller[_0x3aa7('0x2d')]);router['get'](_0x3aa7('0x2e'),auth['isAuthenticated'](),controller[_0x3aa7('0x2f')]);router['get']('/chat/queues/waitinginteractions',auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x30')]);router[_0x3aa7('0x6')]('/mail/queues/waitinginteractions',auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x31')]);router[_0x3aa7('0x6')](_0x3aa7('0x32'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x33')]);router['get'](_0x3aa7('0x34'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x35')]);router[_0x3aa7('0x6')](_0x3aa7('0x36'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x37')]);router[_0x3aa7('0x6')](_0x3aa7('0x38'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x39')]);router[_0x3aa7('0x6')]('/fax/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x3aa7('0x3a')]);router[_0x3aa7('0x3b')](_0x3aa7('0x3c'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x3d')]('mail'));router[_0x3aa7('0x6')](_0x3aa7('0x3e'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x3f')]);router[_0x3aa7('0x3b')](_0x3aa7('0x40'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x3d')](_0x3aa7('0x41')));router[_0x3aa7('0x6')](_0x3aa7('0x42'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x43')]);router[_0x3aa7('0x3b')](_0x3aa7('0x44'),auth['isAuthenticated'](),controller[_0x3aa7('0x3d')]('fax'));router[_0x3aa7('0x6')](_0x3aa7('0x45'),auth['isAuthenticated'](),controller['showFaxQueues']);router[_0x3aa7('0x3b')](_0x3aa7('0x46'),auth['isAuthenticated'](),controller[_0x3aa7('0x3d')]('openchannel'));router[_0x3aa7('0x6')]('/openchannel/queues/:id',auth['isAuthenticated'](),controller['showOpenchannelQueues']);router[_0x3aa7('0x3b')](_0x3aa7('0x47'),auth[_0x3aa7('0x7')](),controller['queueNotify'](_0x3aa7('0x48')));router[_0x3aa7('0x3b')]('/whatsapp/queues/:id/notify',auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x3d')]('whatsapp'));router[_0x3aa7('0x6')](_0x3aa7('0x49'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x4a')]);router[_0x3aa7('0x6')](_0x3aa7('0x4b'),auth[_0x3aa7('0x7')](),controller[_0x3aa7('0x4c')]);router[_0x3aa7('0x3b')]('/agents/:id/notify',auth['isAuthenticated'](),controller[_0x3aa7('0x4d')]);module['exports']=router;
\ No newline at end of file
+var _0x7589=['mail','chat','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','openchannel','showOpenchannelQueues','/sms/queues/:id/notify','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','path','Router','../../components/auth/service','./rpc.controller','get','voiceChannels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/mail/queues','mailQueues','/mail/accounts','/sms/queues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify'];(function(_0x5a6061,_0x3bd9ec){var _0x4aa6c9=function(_0x5d5e0f){while(--_0x5d5e0f){_0x5a6061['push'](_0x5a6061['shift']());}};_0x4aa6c9(++_0x3bd9ec);}(_0x7589,0x14c));var _0x9758=function(_0x75f2c4,_0x4c3e0a){_0x75f2c4=_0x75f2c4-0x0;var _0x31093a=_0x7589[_0x75f2c4];return _0x31093a;};'use strict';var multer=require(_0x9758('0x0'));var util=require('util');var path=require(_0x9758('0x1'));var express=require('express');var router=express[_0x9758('0x2')]();var auth=require(_0x9758('0x3'));var controller=require(_0x9758('0x4'));router[_0x9758('0x5')]('/voice/channels',auth['isAuthenticated'](),controller[_0x9758('0x6')]);router[_0x9758('0x5')](_0x9758('0x7'),auth[_0x9758('0x8')](),controller[_0x9758('0x9')]);router[_0x9758('0x5')](_0x9758('0xa'),auth['isAuthenticated'](),controller[_0x9758('0xb')]);router[_0x9758('0x5')](_0x9758('0xc'),auth['isAuthenticated'](),controller[_0x9758('0xd')]);router[_0x9758('0x5')]('/chat/queues',auth[_0x9758('0x8')](),controller['chatQueues']);router[_0x9758('0x5')](_0x9758('0xe'),auth[_0x9758('0x8')](),controller[_0x9758('0xf')]);router[_0x9758('0x5')](_0x9758('0x10'),auth[_0x9758('0x8')](),controller['mailAccounts']);router[_0x9758('0x5')]('/openchannel/queues',auth[_0x9758('0x8')](),controller['openchannelQueues']);router[_0x9758('0x5')](_0x9758('0x11'),auth['isAuthenticated'](),controller['smsQueues']);router['get'](_0x9758('0x12'),auth['isAuthenticated'](),controller[_0x9758('0x13')]);router[_0x9758('0x5')](_0x9758('0x14'),auth[_0x9758('0x8')](),controller[_0x9758('0x15')]);router[_0x9758('0x5')]('/voice/queues/preview/:id',auth[_0x9758('0x8')](),controller[_0x9758('0x16')]);router[_0x9758('0x5')]('/voice/queues/channels',auth['isAuthenticated'](),controller[_0x9758('0x17')]);router['get'](_0x9758('0x18'),auth['isAuthenticated'](),controller[_0x9758('0x19')]);router[_0x9758('0x5')](_0x9758('0x1a'),auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get'](_0x9758('0x1b'),auth[_0x9758('0x8')](),controller[_0x9758('0x1c')]);router[_0x9758('0x5')]('/voice/queues/:id',auth[_0x9758('0x8')](),controller[_0x9758('0x1d')]);router[_0x9758('0x1e')](_0x9758('0x1f'),auth[_0x9758('0x8')](),controller[_0x9758('0x20')]);router[_0x9758('0x5')](_0x9758('0x21'),auth[_0x9758('0x8')](),controller['outbound']);router[_0x9758('0x5')](_0x9758('0x22'),auth[_0x9758('0x8')](),controller[_0x9758('0x23')]);router[_0x9758('0x5')](_0x9758('0x24'),auth[_0x9758('0x8')](),controller[_0x9758('0x25')]);router[_0x9758('0x1e')](_0x9758('0x26'),auth[_0x9758('0x8')](),controller[_0x9758('0x27')]);router[_0x9758('0x5')](_0x9758('0x28'),auth['isAuthenticated'](),controller['telephones']);router['get'](_0x9758('0x29'),auth['isAuthenticated'](),controller[_0x9758('0x2a')]);router[_0x9758('0x5')](_0x9758('0x2b'),auth[_0x9758('0x8')](),controller[_0x9758('0x2c')]);router[_0x9758('0x5')](_0x9758('0x2d'),auth[_0x9758('0x8')](),controller[_0x9758('0x2e')]);router['get'](_0x9758('0x2f'),auth[_0x9758('0x8')](),controller[_0x9758('0x30')]);router[_0x9758('0x5')](_0x9758('0x31'),auth[_0x9758('0x8')](),controller[_0x9758('0x32')]);router['get'](_0x9758('0x33'),auth[_0x9758('0x8')](),controller[_0x9758('0x34')]);router[_0x9758('0x5')](_0x9758('0x35'),auth['isAuthenticated'](),controller[_0x9758('0x36')]);router[_0x9758('0x5')](_0x9758('0x37'),auth[_0x9758('0x8')](),controller[_0x9758('0x38')]);router[_0x9758('0x5')](_0x9758('0x39'),auth['isAuthenticated'](),controller[_0x9758('0x3a')]);router[_0x9758('0x5')](_0x9758('0x3b'),auth[_0x9758('0x8')](),controller['faxQueuesWaitingInteractions']);router[_0x9758('0x3c')](_0x9758('0x3d'),auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x3f')));router[_0x9758('0x5')]('/mail/queues/:id',auth[_0x9758('0x8')](),controller['showMailQueues']);router[_0x9758('0x3c')]('/chat/queues/:id/notify',auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x40')));router[_0x9758('0x5')](_0x9758('0x41'),auth[_0x9758('0x8')](),controller[_0x9758('0x42')]);router['post'](_0x9758('0x43'),auth['isAuthenticated'](),controller[_0x9758('0x3e')]('fax'));router[_0x9758('0x5')]('/fax/queues/:id',auth[_0x9758('0x8')](),controller['showFaxQueues']);router['post']('/openchannel/queues/:id/notify',auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x44')));router[_0x9758('0x5')]('/openchannel/queues/:id',auth[_0x9758('0x8')](),controller[_0x9758('0x45')]);router[_0x9758('0x3c')](_0x9758('0x46'),auth['isAuthenticated'](),controller[_0x9758('0x3e')]('sms'));router[_0x9758('0x3c')](_0x9758('0x47'),auth[_0x9758('0x8')](),controller[_0x9758('0x3e')](_0x9758('0x48')));router[_0x9758('0x5')](_0x9758('0x49'),auth['isAuthenticated'](),controller[_0x9758('0x4a')]);router[_0x9758('0x5')](_0x9758('0x4b'),auth[_0x9758('0x8')](),controller[_0x9758('0x4c')]);router['post'](_0x9758('0x4d'),auth[_0x9758('0x8')](),controller[_0x9758('0x4e')]);module['exports']=router;
\ No newline at end of file
index 70cc559..2a095de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1f=['voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','then','voiceChannelStopMixMonitor','params','voiceQueues','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','outbound','OutboundChannels','agents','Agents','interaction','user','hasOwnProperty','MemberReport','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','interface','SIP/%s','agent','internal','AgentCapacity','telephones','Trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','queue','MessageId','From','QueueId','TransferReport','create','Start','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','capitalize','chat','User','update','InteractionId','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','request','error','code','message','catch','json','sendStatus','stack','name','status','isNil','rows','find','VoiceChannels','query'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xed1f,0x6a));var _0xfed1=function(_0x9dfc10,_0x19c2d5){_0x9dfc10=_0x9dfc10-0x0;var _0x4f938a=_0xed1f[_0x9dfc10];return _0x4f938a;};'use strict';var BPromise=require(_0xfed1('0x0'));var moment=require(_0xfed1('0x1'));var _=require(_0xfed1('0x2'));var util=require(_0xfed1('0x3'));var db=require(_0xfed1('0x4'))['db'];var logger=require(_0xfed1('0x5'))(_0xfed1('0x6'));var jayson=require(_0xfed1('0x7'));var amiClient=jayson[_0xfed1('0x8')][_0xfed1('0x9')]({'port':0x232a});var mailClient=jayson[_0xfed1('0x8')][_0xfed1('0x9')]({'port':0x232b});var routingClient=jayson[_0xfed1('0x8')][_0xfed1('0x9')]({'port':0x232c});function respondWithRpcPromise(_0x380e18,_0x612b38,_0x2a6082){return new BPromise(function(_0x2967ef,_0x568d48){var _0x42dd5c=_0x2a6082?_0x2a6082:amiClient;return _0x42dd5c[_0xfed1('0xa')](_0x380e18,_0x612b38)['then'](function(_0x1414be){if(_0x1414be[_0xfed1('0xb')]){if(_0x1414be['error'][_0xfed1('0xc')]===0x1f4){return _0x568d48(_0x1414be['error'][_0xfed1('0xd')]);}return _0x2967ef(_0x1414be[_0xfed1('0xb')]['message']);}else{_0x2967ef(_0x1414be['result']);}})[_0xfed1('0xe')](function(_0xe84ba6){_0x568d48(_0xe84ba6);});});}function respondWithResult(_0x569a6e,_0x17f4fe){_0x17f4fe=_0x17f4fe||0xc8;return function(_0x5a3469){if(_0x5a3469){return _0x569a6e['status'](_0x17f4fe)[_0xfed1('0xf')](_0x5a3469);}return _0x569a6e[_0xfed1('0x10')](0x194);};}function handleError(_0x532537,_0x2dde3a){_0x2dde3a=_0x2dde3a||0x1f4;return function(_0x5b9455){logger['error'](_0x5b9455[_0xfed1('0x11')]);if(_0x5b9455[_0xfed1('0x12')]){delete _0x5b9455[_0xfed1('0x12')];}_0x532537[_0xfed1('0x13')](_0x2dde3a)['send'](_0x5b9455);};}function findById(_0x1a00f6){return function(_0x4af928){if(!_[_0xfed1('0x14')](_0x1a00f6)&&!_[_0xfed1('0x14')](_0x4af928)&&!_['isNil'](_0x4af928[_0xfed1('0x15')])){return _[_0xfed1('0x16')](_0x4af928['rows'],function(_0x59509b){return _0x59509b['id']==_0x1a00f6;});}return null;};}exports['voiceChannels']=function(_0x1e5afb,_0x51f12a){return respondWithRpcPromise(_0xfed1('0x17'),_0x1e5afb[_0xfed1('0x18')])['then'](respondWithResult(_0x51f12a,null))[_0xfed1('0xe')](handleError(_0x51f12a,null));};exports[_0xfed1('0x19')]=function(_0x59ee9d,_0x3ce944){return respondWithRpcPromise(_0xfed1('0x1a'),_[_0xfed1('0x1b')](_0x59ee9d[_0xfed1('0x18')],_0x59ee9d['params']))[_0xfed1('0x1c')](respondWithResult(_0x3ce944,null))['catch'](handleError(_0x3ce944,null));};exports[_0xfed1('0x1d')]=function(_0x1317c8,_0x37c384){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_[_0xfed1('0x1b')](_0x1317c8['query'],_0x1317c8[_0xfed1('0x1e')]))[_0xfed1('0x1c')](respondWithResult(_0x37c384,null))[_0xfed1('0xe')](handleError(_0x37c384,null));};exports[_0xfed1('0x1f')]=function(_0x186ecc,_0x1199b7){return respondWithRpcPromise('VoiceQueues',_0x186ecc[_0xfed1('0x18')])[_0xfed1('0x1c')](respondWithResult(_0x1199b7,null))['catch'](handleError(_0x1199b7,null));};exports[_0xfed1('0x20')]=function(_0x2b9dd2,_0x1b871a){return respondWithRpcPromise(_0xfed1('0x21'),_0x2b9dd2[_0xfed1('0x18')])[_0xfed1('0x1c')](findById(_0x2b9dd2['params']['id']))[_0xfed1('0x1c')](respondWithResult(_0x1b871a,null))['catch'](handleError(_0x1b871a,null));};exports[_0xfed1('0x22')]=function(_0x4e5249,_0x53b0c9){return respondWithRpcPromise(_0xfed1('0x23'),_[_0xfed1('0x1b')](_0x4e5249[_0xfed1('0x24')],_0x4e5249['params']))[_0xfed1('0x1c')](respondWithResult(_0x53b0c9,null))[_0xfed1('0xe')](handleError(_0x53b0c9,null));};exports[_0xfed1('0x25')]=function(_0x383955,_0x12399f){return respondWithRpcPromise(_0xfed1('0x26'),_['merge'](_0x383955[_0xfed1('0x18')],_0x383955[_0xfed1('0x1e')]))['then'](respondWithResult(_0x12399f,null))['catch'](handleError(_0x12399f,null));};exports[_0xfed1('0x27')]=function(_0x2d10f5,_0x2def09){return respondWithRpcPromise(_0xfed1('0x28'),_0x2d10f5[_0xfed1('0x18')])['then'](respondWithResult(_0x2def09,null))[_0xfed1('0xe')](handleError(_0x2def09,null));};exports[_0xfed1('0x29')]=function(_0x10143b,_0x349de1){return respondWithRpcPromise(_0xfed1('0x2a'),_['merge'](_0x10143b[_0xfed1('0x18')],_0x10143b['params']))[_0xfed1('0x1c')](respondWithResult(_0x349de1,null))[_0xfed1('0xe')](handleError(_0x349de1,null));};exports[_0xfed1('0x2b')]=function(_0x321c1b,_0x1c0523){return respondWithRpcPromise(_0xfed1('0x2c'),_[_0xfed1('0x1b')](_0x321c1b[_0xfed1('0x18')],_0x321c1b['params']))[_0xfed1('0x1c')](respondWithResult(_0x1c0523,null))[_0xfed1('0xe')](handleError(_0x1c0523,null));};exports[_0xfed1('0x2d')]=function(_0x28adfc,_0x57da75){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0xfed1('0x1b')](_0x28adfc[_0xfed1('0x18')],_0x28adfc[_0xfed1('0x1e')]))[_0xfed1('0x1c')](respondWithResult(_0x57da75,null))[_0xfed1('0xe')](handleError(_0x57da75,null));};exports[_0xfed1('0x2e')]=function(_0x46a150,_0x2f183c){return respondWithRpcPromise('Outbound',_0x46a150['query'])[_0xfed1('0x1c')](respondWithResult(_0x2f183c,null))[_0xfed1('0xe')](handleError(_0x2f183c,null));};exports['outboundChannels']=function(_0x1dae7c,_0x15339c){return respondWithRpcPromise(_0xfed1('0x2f'),_0x1dae7c[_0xfed1('0x18')])[_0xfed1('0x1c')](respondWithResult(_0x15339c,null))[_0xfed1('0xe')](handleError(_0x15339c,null));};exports[_0xfed1('0x30')]=function(_0x4118d4,_0x3c27de){var _0x5f3e1f;return respondWithRpcPromise('Agents',_0x4118d4['query'])[_0xfed1('0x1c')](function(_0x340e3c){_0x5f3e1f=_0x340e3c;return respondWithRpcPromise(_0xfed1('0x31'),_0x4118d4['query'],routingClient);})[_0xfed1('0x1c')](function(_0x4a0b04){return _[_0xfed1('0x1b')]({},_0x4a0b04,_0x5f3e1f);})[_0xfed1('0x1c')](respondWithResult(_0x3c27de,null))[_0xfed1('0xe')](handleError(_0x3c27de,null));};exports['agentCapacity']=function(_0x20bdae,_0x6f1647){if(_0x20bdae[_0xfed1('0x24')]&&_0x20bdae['body'][_0xfed1('0x32')]&&_0x20bdae['user']&&_0x20bdae[_0xfed1('0x33')][_0xfed1('0x12')]){for(var _0x229fc7 in _0x20bdae[_0xfed1('0x24')][_0xfed1('0x32')]){if(_0x20bdae[_0xfed1('0x24')][_0xfed1('0x32')][_0xfed1('0x34')](_0x229fc7)){db[_0xfed1('0x35')]['findAll']({'where':{'channel':_0x229fc7,'membername':_0x20bdae[_0xfed1('0x33')][_0xfed1('0x12')],'type':_0xfed1('0x36'),'exitAt':null,'uniqueid':_0x20bdae['body']['interaction'][_0x229fc7]&&_0x20bdae[_0xfed1('0x24')][_0xfed1('0x32')][_0x229fc7][_0xfed1('0x37')]?{'$notIn':_0x20bdae[_0xfed1('0x24')][_0xfed1('0x32')][_0x229fc7]}:{'$ne':null}}})[_0xfed1('0x1c')](function(_0x2547ee){var _0x24bf7a=moment()[_0xfed1('0x38')](_0xfed1('0x39'));for(var _0x61f65b=0x0,_0x1db6dc=_0x2547ee['length'];_0x61f65b<_0x1db6dc;_0x61f65b+=0x1){_0x2547ee[_0x61f65b][_0xfed1('0x3a')]({'exitAt':_0x24bf7a});}});for(var _0xb61d09=0x0;_0xb61d09<_0x20bdae[_0xfed1('0x24')][_0xfed1('0x32')][_0x229fc7][_0xfed1('0x37')];_0xb61d09+=0x1){db[_0xfed1('0x35')]['findOrCreate']({'where':{'channel':_0x229fc7,'membername':_0x20bdae[_0xfed1('0x33')][_0xfed1('0x12')],'type':_0xfed1('0x36'),'uniqueid':_0x20bdae['body'][_0xfed1('0x32')][_0x229fc7][_0xb61d09],'exitAt':null},'defaults':{'channel':_0x229fc7,'membername':_0x20bdae[_0xfed1('0x33')][_0xfed1('0x12')],'interface':_[_0xfed1('0x14')](_0x20bdae['user'][_0xfed1('0x3b')])?util[_0xfed1('0x38')](_0xfed1('0x3c'),_0x20bdae[_0xfed1('0x33')][_0xfed1('0x12')]):_0x20bdae[_0xfed1('0x33')][_0xfed1('0x3b')],'type':_0xfed1('0x36'),'enterAt':moment()[_0xfed1('0x38')](_0xfed1('0x39')),'role':_0xfed1('0x3d'),'internal':_0x20bdae[_0xfed1('0x33')][_0xfed1('0x3e')],'uniqueid':_0x20bdae[_0xfed1('0x24')][_0xfed1('0x32')][_0x229fc7][_0xb61d09]}});}}}}return respondWithRpcPromise(_0xfed1('0x3f'),{'id':_0x20bdae[_0xfed1('0x1e')]['id'],'capacity':_0x20bdae[_0xfed1('0x24')]['capacity']},routingClient)['then'](respondWithResult(_0x6f1647,null))[_0xfed1('0xe')](handleError(_0x6f1647,null));};exports[_0xfed1('0x40')]=function(_0x5be0c3,_0x1358c1){return respondWithRpcPromise('Telephones',_0x5be0c3[_0xfed1('0x18')])[_0xfed1('0x1c')](respondWithResult(_0x1358c1,null))['catch'](handleError(_0x1358c1,null));};exports['trunks']=function(_0x49f696,_0x2376b3){return respondWithRpcPromise(_0xfed1('0x41'),_0x49f696[_0xfed1('0x18')])[_0xfed1('0x1c')](respondWithResult(_0x2376b3,null))[_0xfed1('0xe')](handleError(_0x2376b3,null));};exports[_0xfed1('0x42')]=function(_0x1a9f22,_0x144102){return respondWithRpcPromise(_0xfed1('0x43'),_0x1a9f22[_0xfed1('0x18')])['then'](respondWithResult(_0x144102,null))['catch'](handleError(_0x144102,null));};exports[_0xfed1('0x44')]=function(_0x2a2eaa,_0x3f4db7){return respondWithRpcPromise(_0xfed1('0x45'),_0x2a2eaa[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x3f4db7,null))[_0xfed1('0xe')](handleError(_0x3f4db7,null));};exports[_0xfed1('0x46')]=function(_0x117e25,_0x427fa6){return respondWithRpcPromise(_0xfed1('0x45'),_0x117e25[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](findById(_0x117e25[_0xfed1('0x1e')]['id']))[_0xfed1('0x1c')](respondWithResult(_0x427fa6,null))[_0xfed1('0xe')](handleError(_0x427fa6,null));};exports[_0xfed1('0x47')]=function(_0x54eb53,_0x5b167b){return respondWithRpcPromise(_0xfed1('0x48'),_0x54eb53[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x5b167b,null))[_0xfed1('0xe')](handleError(_0x5b167b,null));};exports[_0xfed1('0x49')]=function(_0x41a22a,_0x2ccdc3){return respondWithRpcPromise(_0xfed1('0x48'),_0x41a22a[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](findById(_0x41a22a[_0xfed1('0x1e')]['id']))[_0xfed1('0x1c')](respondWithResult(_0x2ccdc3,null))[_0xfed1('0xe')](handleError(_0x2ccdc3,null));};exports[_0xfed1('0x4a')]=function(_0x59ecc4,_0x30cf99){return respondWithRpcPromise('MailAccounts',_0x59ecc4['query'],mailClient)[_0xfed1('0x1c')](respondWithResult(_0x30cf99,null))['catch'](handleError(_0x30cf99,null));};exports[_0xfed1('0x4b')]=function(_0x5acc45,_0x390fc0){return respondWithRpcPromise(_0xfed1('0x4c'),_0x5acc45['query'],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x390fc0,null))[_0xfed1('0xe')](handleError(_0x390fc0,null));};exports['showOpenchannelQueues']=function(_0x29b51e,_0x41b407){return respondWithRpcPromise(_0xfed1('0x4c'),_0x29b51e[_0xfed1('0x18')],routingClient)['then'](findById(_0x29b51e[_0xfed1('0x1e')]['id']))[_0xfed1('0x1c')](respondWithResult(_0x41b407,null))[_0xfed1('0xe')](handleError(_0x41b407,null));};exports[_0xfed1('0x4d')]=function(_0x23347a,_0xf4e660){return respondWithRpcPromise(_0xfed1('0x4e'),_0x23347a[_0xfed1('0x18')],routingClient)['then'](respondWithResult(_0xf4e660,null))[_0xfed1('0xe')](handleError(_0xf4e660,null));};exports[_0xfed1('0x4f')]=function(_0x18e958,_0x4112c1){return respondWithRpcPromise(_0xfed1('0x4e'),_0x18e958[_0xfed1('0x18')],routingClient)['then'](findById(_0x18e958['params']['id']))['then'](respondWithResult(_0x4112c1,null))[_0xfed1('0xe')](handleError(_0x4112c1,null));};exports[_0xfed1('0x50')]=function(_0x3aea22,_0x2fb9b2){return respondWithRpcPromise('WhatsappQueues',_0x3aea22[_0xfed1('0x18')],routingClient)['then'](respondWithResult(_0x2fb9b2,null))[_0xfed1('0xe')](handleError(_0x2fb9b2,null));};exports[_0xfed1('0x51')]=function(_0x18af7d,_0x3beef3){return respondWithRpcPromise(_0xfed1('0x52'),_0x18af7d['query'],routingClient)[_0xfed1('0x1c')](findById(_0x18af7d[_0xfed1('0x1e')]['id']))[_0xfed1('0x1c')](respondWithResult(_0x3beef3,null))['catch'](handleError(_0x3beef3,null));};exports[_0xfed1('0x53')]=function(_0x103628,_0x28dbaa){return respondWithRpcPromise(_0xfed1('0x54'),_0x103628['query'],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x28dbaa,null))['catch'](handleError(_0x28dbaa,null));};exports[_0xfed1('0x55')]=function(_0x2d64d3,_0x4b685b){return respondWithRpcPromise('FaxQueues',_0x2d64d3[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](findById(_0x2d64d3[_0xfed1('0x1e')]['id']))[_0xfed1('0x1c')](respondWithResult(_0x4b685b,null))['catch'](handleError(_0x4b685b,null));};exports[_0xfed1('0x56')]=function(_0x440e40,_0x42bc11){return respondWithRpcPromise(_0xfed1('0x57'),_0x440e40[_0xfed1('0x18')])[_0xfed1('0x1c')](respondWithResult(_0x42bc11,null))['catch'](handleError(_0x42bc11,null));};exports[_0xfed1('0x58')]=function(_0x93411d,_0x5ceedd){return respondWithRpcPromise(_0xfed1('0x59'),_0x93411d[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x5ceedd,null))[_0xfed1('0xe')](handleError(_0x5ceedd,null));};exports[_0xfed1('0x5a')]=function(_0x26ecb9,_0x4fc7b5){return respondWithRpcPromise('MailQueuesWaitingInteractions',_0x26ecb9[_0xfed1('0x18')],routingClient)['then'](respondWithResult(_0x4fc7b5,null))[_0xfed1('0xe')](handleError(_0x4fc7b5,null));};exports[_0xfed1('0x5b')]=function(_0x5d8742,_0xdc237c){return respondWithRpcPromise(_0xfed1('0x5c'),_0x5d8742[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](respondWithResult(_0xdc237c,null))[_0xfed1('0xe')](handleError(_0xdc237c,null));};exports[_0xfed1('0x5d')]=function(_0x4104fe,_0x49213b){return respondWithRpcPromise(_0xfed1('0x5c'),_0x4104fe[_0xfed1('0x18')],routingClient)['then'](function(_0x544605){if(_0x4104fe[_0xfed1('0x18')]['type']!==undefined){var _0x1f4e2b=_(_0x544605[_0xfed1('0x15')])[_0xfed1('0x5e')]([_0x4104fe['query'][_0xfed1('0x5f')],_0x4104fe[_0xfed1('0x1e')]['id']])[_0xfed1('0x60')](_0xfed1('0x61'))[_0xfed1('0x62')]()['value']();return _0x544605[_0xfed1('0x15')][_0xfed1('0x5e')](function(_0x45348d){return _0x1f4e2b[_0xfed1('0x63')](_0x45348d[_0xfed1('0x61')])>-0x1;});}else{return _0x544605['rows'][_0xfed1('0x5e')](function(_0xe74336){return _0xe74336[_0xfed1('0x61')]===parseInt(_0x4104fe[_0xfed1('0x1e')]['id']);});}})[_0xfed1('0x1c')](respondWithResult(_0x49213b,null))[_0xfed1('0xe')](handleError(_0x49213b,null));};exports[_0xfed1('0x64')]=function(_0x4238bd,_0x390eb0){return respondWithRpcPromise(_0xfed1('0x65'),_0x4238bd['query'],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x390eb0,null))[_0xfed1('0xe')](handleError(_0x390eb0,null));};exports[_0xfed1('0x66')]=function(_0x383d34,_0x194f42){return respondWithRpcPromise('WhatsappQueuesWaitingInteractions',_0x383d34[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](respondWithResult(_0x194f42,null))[_0xfed1('0xe')](handleError(_0x194f42,null));};exports[_0xfed1('0x67')]=function(_0x221ed8,_0xb76860){return respondWithRpcPromise(_0xfed1('0x68'),_0x221ed8[_0xfed1('0x18')],routingClient)[_0xfed1('0x1c')](respondWithResult(_0xb76860,null))['catch'](handleError(_0xb76860,null));};exports['queueNotify']=function(_0xc3b72a){return function(_0x547d9c,_0x25cebc){var _0x3ab92e,_0x483b16;var _0x4b355d=_['capitalize'](_0xc3b72a);var _0x304cc0=_0xc3b72a==='chat'?_0xfed1('0x69'):'Account';return db[_0x4b355d+_0xfed1('0x6a')][_0xfed1('0x6b')]({'raw':!![],'where':{'id':_0x547d9c[_0xfed1('0x1e')]['id']}})[_0xfed1('0x1c')](function(_0x3c6ddd){if(_['isNil'](_0x3c6ddd)){throw new Error(_0x4b355d+_0xfed1('0x6c'));}_0x3ab92e=_0x3c6ddd;return db[_0x4b355d+_0xfed1('0x6d')]['findOne']({'where':{'id':_0x547d9c[_0xfed1('0x24')][_0xfed1('0x6e')]},'include':[{'model':db[_0x4b355d+'Interaction'],'as':_0xfed1('0x6f')},{'model':db[_0x4b355d+_0x304cc0],'as':_0xfed1('0x70')}]});})[_0xfed1('0x1c')](function(_0x5cf634){if(_[_0xfed1('0x14')](_0x5cf634)){throw new Error(_0x4b355d+_0xfed1('0x71'));}_0x483b16=_0x5cf634;return _0x5cf634['update']({'read':0x0,'readAt':null,'UserId':null});})[_0xfed1('0x1c')](function(){var _0xc81c8f={'uniqueid':_0xc3b72a+'.'+_0x483b16['id']+'.'+_0x483b16[_0xfed1('0x6f')]['id'],'FromUserId':_0x547d9c['user']['id'],'type':_0xfed1('0x72')};_0xc81c8f[_0x4b355d+_0xfed1('0x73')]=_0x483b16['id'];_0xc81c8f[_0x4b355d+'InteractionId']=_0x483b16['Interaction']['id'];_0xc81c8f[_0xfed1('0x74')+_0x4b355d+_0x304cc0+'Id']=_0x483b16[_0xfed1('0x70')]['id'];_0xc81c8f['To'+_0x4b355d+_0xfed1('0x75')]=_0x3ab92e['id'];return db[_0x4b355d+_0xfed1('0x76')][_0xfed1('0x77')](_0xc81c8f);})[_0xfed1('0x1c')](function(){return respondWithRpcPromise(_0xfed1('0x78'),{'channel':_0xc3b72a,'interaction':_0x483b16[_0xfed1('0x6f')],'message':_0x483b16,'account':_0x483b16[_0xfed1('0x70')],'applications':[{'id':0x0,'priority':0x1,'app':_0xfed1('0x72'),'appdata':_0x3ab92e[_0xfed1('0x12')]+','+(_0x483b16[_0xfed1('0x70')]['queueTransferTimeout']||0x12c),'interval':_0xfed1('0x79')}]},routingClient);})[_0xfed1('0x1c')](respondWithResult(_0x25cebc,null))['catch'](handleError(_0x25cebc,null));};};exports[_0xfed1('0x7a')]=function(_0x1f721d,_0x5f5d42){var _0x3d4aee,_0x408ee0;if(_[_0xfed1('0x14')](_0x1f721d[_0xfed1('0x24')]['channel'])){throw new Error(_0xfed1('0x7b'));}var _0x24ab18=_0x1f721d[_0xfed1('0x24')][_0xfed1('0x7c')];var _0x1ecef6=_[_0xfed1('0x7d')](_0x24ab18);var _0x2d0cbb=_0x24ab18===_0xfed1('0x7e')?'Website':_0xfed1('0x70');return db[_0xfed1('0x7f')][_0xfed1('0x6b')]({'raw':!![],'where':{'id':_0x1f721d['params']['id'],'role':_0xfed1('0x3d')}})[_0xfed1('0x1c')](function(_0x45a677){if(_['isNil'](_0x45a677)){throw new Error('Agent\x20not\x20found');}_0x3d4aee=_0x45a677;return db[_0x1ecef6+_0xfed1('0x6d')][_0xfed1('0x6b')]({'where':{'id':_0x1f721d[_0xfed1('0x24')][_0xfed1('0x6e')]},'include':[{'model':db[_0x1ecef6+_0xfed1('0x6f')],'as':_0xfed1('0x6f')},{'model':db[_0x1ecef6+_0x2d0cbb],'as':_0xfed1('0x70')}]});})[_0xfed1('0x1c')](function(_0x130eb2){if(_[_0xfed1('0x14')](_0x130eb2)){throw new Error(_0x1ecef6+_0xfed1('0x71'));}_0x408ee0=_0x130eb2;return _0x130eb2[_0xfed1('0x80')]({'read':0x0,'readAt':null,'UserId':null});})[_0xfed1('0x1c')](function(){var _0x18b086={'uniqueid':_0x24ab18+'.'+_0x408ee0['id']+'.'+_0x408ee0[_0xfed1('0x6f')]['id'],'FromUserId':_0x1f721d[_0xfed1('0x33')]['id'],'type':_0xfed1('0x72'),'ToUserId':_0x3d4aee['id']};_0x18b086[_0x1ecef6+_0xfed1('0x73')]=_0x408ee0['id'];_0x18b086[_0x1ecef6+_0xfed1('0x81')]=_0x408ee0[_0xfed1('0x6f')]['id'];_0x18b086['From'+_0x1ecef6+_0x2d0cbb+'Id']=_0x408ee0[_0xfed1('0x70')]['id'];return db[_0x1ecef6+_0xfed1('0x76')][_0xfed1('0x77')](_0x18b086);})['then'](function(){return respondWithRpcPromise(_0xfed1('0x78'),{'channel':_0x24ab18,'interaction':_0x408ee0[_0xfed1('0x6f')],'message':_0x408ee0,'account':_0x408ee0[_0xfed1('0x70')],'applications':[{'id':0x0,'priority':0x1,'app':_0xfed1('0x3d'),'appdata':_0x3d4aee[_0xfed1('0x12')]+','+(_0x408ee0[_0xfed1('0x70')][_0xfed1('0x82')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x5f5d42,null))[_0xfed1('0xe')](handleError(_0x5f5d42,null));};
\ No newline at end of file
+var _0xb138=['telephones','Telephones','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','value','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','chat','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','messageId','Interaction','update','queue','MessageId','InteractionId','From','QueueId','create','Start','queueTransferTimeout','*,*,*,*','Channel\x20field\x20is\x20mandatory','channel','capitalize','User','agent','Agent\x20not\x20found','Message','\x20Message\x20not\x20found','agentTransferTimeout','bluebird','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','error','code','message','result','catch','json','sendStatus','stack','name','status','isNil','rows','find','VoiceChannels','query','then','VoiceChannelMixMonitor','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','voiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','OutboundChannels','Agents','interaction','user','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','INTERACTION','SIP/%s','interface','internal','AgentCapacity','capacity'];(function(_0x1e7944,_0x5a1ee7){var _0x4be825=function(_0x14932d){while(--_0x14932d){_0x1e7944['push'](_0x1e7944['shift']());}};_0x4be825(++_0x5a1ee7);}(_0xb138,0x1dd));var _0x8b13=function(_0x22c2ef,_0x59ecd0){_0x22c2ef=_0x22c2ef-0x0;var _0x34d1fb=_0xb138[_0x22c2ef];return _0x34d1fb;};'use strict';var BPromise=require(_0x8b13('0x0'));var moment=require(_0x8b13('0x1'));var _=require(_0x8b13('0x2'));var util=require(_0x8b13('0x3'));var db=require(_0x8b13('0x4'))['db'];var logger=require(_0x8b13('0x5'))(_0x8b13('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0x8b13('0x7')][_0x8b13('0x8')]({'port':0x232a});var mailClient=jayson[_0x8b13('0x7')]['http']({'port':0x232b});var routingClient=jayson[_0x8b13('0x7')][_0x8b13('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x5d51b1,_0x3fdf4d,_0x33d1a7){return new BPromise(function(_0x22e157,_0x498832){var _0x8570b0=_0x33d1a7?_0x33d1a7:amiClient;return _0x8570b0[_0x8b13('0x9')](_0x5d51b1,_0x3fdf4d)['then'](function(_0x53ae50){if(_0x53ae50[_0x8b13('0xa')]){if(_0x53ae50[_0x8b13('0xa')][_0x8b13('0xb')]===0x1f4){return _0x498832(_0x53ae50[_0x8b13('0xa')][_0x8b13('0xc')]);}return _0x22e157(_0x53ae50['error'][_0x8b13('0xc')]);}else{_0x22e157(_0x53ae50[_0x8b13('0xd')]);}})[_0x8b13('0xe')](function(_0x3f79d5){_0x498832(_0x3f79d5);});});}function respondWithResult(_0xb227e0,_0x1893b1){_0x1893b1=_0x1893b1||0xc8;return function(_0x58f97e){if(_0x58f97e){return _0xb227e0['status'](_0x1893b1)[_0x8b13('0xf')](_0x58f97e);}return _0xb227e0[_0x8b13('0x10')](0x194);};}function handleError(_0x5f12b5,_0x51a935){_0x51a935=_0x51a935||0x1f4;return function(_0x479773){logger[_0x8b13('0xa')](_0x479773[_0x8b13('0x11')]);if(_0x479773[_0x8b13('0x12')]){delete _0x479773[_0x8b13('0x12')];}_0x5f12b5[_0x8b13('0x13')](_0x51a935)['send'](_0x479773);};}function findById(_0x1c6c99){return function(_0xea7881){if(!_[_0x8b13('0x14')](_0x1c6c99)&&!_[_0x8b13('0x14')](_0xea7881)&&!_[_0x8b13('0x14')](_0xea7881[_0x8b13('0x15')])){return _[_0x8b13('0x16')](_0xea7881[_0x8b13('0x15')],function(_0x4989d3){return _0x4989d3['id']==_0x1c6c99;});}return null;};}exports['voiceChannels']=function(_0xae4966,_0x335709){return respondWithRpcPromise(_0x8b13('0x17'),_0xae4966[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x335709,null))[_0x8b13('0xe')](handleError(_0x335709,null));};exports['voiceChannelMixMonitor']=function(_0x1e8a48,_0x3c4d4f){return respondWithRpcPromise(_0x8b13('0x1a'),_['merge'](_0x1e8a48['query'],_0x1e8a48[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x3c4d4f,null))['catch'](handleError(_0x3c4d4f,null));};exports[_0x8b13('0x1c')]=function(_0x2c3afb,_0x37ca5f){return respondWithRpcPromise(_0x8b13('0x1d'),_[_0x8b13('0x1e')](_0x2c3afb['query'],_0x2c3afb[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x37ca5f,null))['catch'](handleError(_0x37ca5f,null));};exports[_0x8b13('0x1f')]=function(_0x4fdd1c,_0x420772){return respondWithRpcPromise(_0x8b13('0x20'),_0x4fdd1c['query'])[_0x8b13('0x19')](respondWithResult(_0x420772,null))[_0x8b13('0xe')](handleError(_0x420772,null));};exports['showVoiceQueues']=function(_0x134c5e,_0x14a739){return respondWithRpcPromise(_0x8b13('0x20'),_0x134c5e[_0x8b13('0x18')])[_0x8b13('0x19')](findById(_0x134c5e['params']['id']))[_0x8b13('0x19')](respondWithResult(_0x14a739,null))[_0x8b13('0xe')](handleError(_0x14a739,null));};exports[_0x8b13('0x21')]=function(_0x1511bf,_0x114b01){return respondWithRpcPromise(_0x8b13('0x22'),_['merge'](_0x1511bf[_0x8b13('0x23')],_0x1511bf[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x114b01,null))[_0x8b13('0xe')](handleError(_0x114b01,null));};exports[_0x8b13('0x24')]=function(_0x29946e,_0x3304bd){return respondWithRpcPromise(_0x8b13('0x25'),_[_0x8b13('0x1e')](_0x29946e['query'],_0x29946e[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x3304bd,null))[_0x8b13('0xe')](handleError(_0x3304bd,null));};exports[_0x8b13('0x26')]=function(_0x51a334,_0x4f7d91){return respondWithRpcPromise(_0x8b13('0x27'),_0x51a334['query'])['then'](respondWithResult(_0x4f7d91,null))[_0x8b13('0xe')](handleError(_0x4f7d91,null));};exports['voiceQueuesChannel']=function(_0x2ec1ab,_0x408626){return respondWithRpcPromise(_0x8b13('0x28'),_[_0x8b13('0x1e')](_0x2ec1ab[_0x8b13('0x18')],_0x2ec1ab[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x408626,null))[_0x8b13('0xe')](handleError(_0x408626,null));};exports[_0x8b13('0x29')]=function(_0x1b313d,_0x4d45bc){return respondWithRpcPromise(_0x8b13('0x2a'),_[_0x8b13('0x1e')](_0x1b313d[_0x8b13('0x18')],_0x1b313d[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x4d45bc,null))[_0x8b13('0xe')](handleError(_0x4d45bc,null));};exports[_0x8b13('0x2b')]=function(_0x241687,_0x5c67b1){return respondWithRpcPromise(_0x8b13('0x2c'),_['merge'](_0x241687[_0x8b13('0x18')],_0x241687[_0x8b13('0x1b')]))[_0x8b13('0x19')](respondWithResult(_0x5c67b1,null))[_0x8b13('0xe')](handleError(_0x5c67b1,null));};exports[_0x8b13('0x2d')]=function(_0x327eb1,_0x4ec1a5){return respondWithRpcPromise('Outbound',_0x327eb1[_0x8b13('0x18')])['then'](respondWithResult(_0x4ec1a5,null))[_0x8b13('0xe')](handleError(_0x4ec1a5,null));};exports['outboundChannels']=function(_0x590a23,_0x3a8e06){return respondWithRpcPromise(_0x8b13('0x2e'),_0x590a23[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x3a8e06,null))['catch'](handleError(_0x3a8e06,null));};exports['agents']=function(_0x230a8c,_0x595d8d){var _0x6ba2f3;return respondWithRpcPromise(_0x8b13('0x2f'),_0x230a8c['query'])[_0x8b13('0x19')](function(_0x41d710){_0x6ba2f3=_0x41d710;return respondWithRpcPromise(_0x8b13('0x2f'),_0x230a8c[_0x8b13('0x18')],routingClient);})[_0x8b13('0x19')](function(_0x38ec75){return _[_0x8b13('0x1e')]({},_0x38ec75,_0x6ba2f3);})['then'](respondWithResult(_0x595d8d,null))['catch'](handleError(_0x595d8d,null));};exports['agentCapacity']=function(_0x3eb3c5,_0x16ec3){if(_0x3eb3c5[_0x8b13('0x23')]&&_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')]&&_0x3eb3c5[_0x8b13('0x31')]&&_0x3eb3c5['user'][_0x8b13('0x12')]){for(var _0x50e535 in _0x3eb3c5[_0x8b13('0x23')]['interaction']){if(_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x8b13('0x32')](_0x50e535)){db[_0x8b13('0x33')][_0x8b13('0x34')]({'where':{'channel':_0x50e535,'membername':_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x12')],'type':'INTERACTION','exitAt':null,'uniqueid':_0x3eb3c5['body']['interaction'][_0x50e535]&&_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x50e535][_0x8b13('0x35')]?{'$notIn':_0x3eb3c5[_0x8b13('0x23')]['interaction'][_0x50e535]}:{'$ne':null}}})['then'](function(_0x3f420d){var _0x54d19d=moment()[_0x8b13('0x36')](_0x8b13('0x37'));for(var _0x20c363=0x0,_0x28ae75=_0x3f420d[_0x8b13('0x35')];_0x20c363<_0x28ae75;_0x20c363+=0x1){_0x3f420d[_0x20c363]['updateAttributes']({'exitAt':_0x54d19d});}});for(var _0x2df766=0x0;_0x2df766<_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x50e535][_0x8b13('0x35')];_0x2df766+=0x1){db[_0x8b13('0x33')][_0x8b13('0x38')]({'where':{'channel':_0x50e535,'membername':_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x12')],'type':_0x8b13('0x39'),'uniqueid':_0x3eb3c5['body'][_0x8b13('0x30')][_0x50e535][_0x2df766],'exitAt':null},'defaults':{'channel':_0x50e535,'membername':_0x3eb3c5['user'][_0x8b13('0x12')],'interface':_[_0x8b13('0x14')](_0x3eb3c5[_0x8b13('0x31')]['interface'])?util[_0x8b13('0x36')](_0x8b13('0x3a'),_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x12')]):_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x3b')],'type':_0x8b13('0x39'),'enterAt':moment()['format'](_0x8b13('0x37')),'role':'agent','internal':_0x3eb3c5[_0x8b13('0x31')][_0x8b13('0x3c')],'uniqueid':_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x30')][_0x50e535][_0x2df766]}});}}}}return respondWithRpcPromise(_0x8b13('0x3d'),{'id':_0x3eb3c5[_0x8b13('0x1b')]['id'],'capacity':_0x3eb3c5[_0x8b13('0x23')][_0x8b13('0x3e')]},routingClient)[_0x8b13('0x19')](respondWithResult(_0x16ec3,null))[_0x8b13('0xe')](handleError(_0x16ec3,null));};exports[_0x8b13('0x3f')]=function(_0xddac8e,_0xd55f3b){return respondWithRpcPromise(_0x8b13('0x40'),_0xddac8e[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0xd55f3b,null))[_0x8b13('0xe')](handleError(_0xd55f3b,null));};exports['trunks']=function(_0x1699c6,_0x20e89c){return respondWithRpcPromise('Trunks',_0x1699c6[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x20e89c,null))[_0x8b13('0xe')](handleError(_0x20e89c,null));};exports[_0x8b13('0x41')]=function(_0x25cb45,_0x12549b){return respondWithRpcPromise(_0x8b13('0x42'),_0x25cb45[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x12549b,null))[_0x8b13('0xe')](handleError(_0x12549b,null));};exports[_0x8b13('0x43')]=function(_0x450b47,_0x137e8c){return respondWithRpcPromise(_0x8b13('0x44'),_0x450b47[_0x8b13('0x18')],routingClient)['then'](respondWithResult(_0x137e8c,null))[_0x8b13('0xe')](handleError(_0x137e8c,null));};exports[_0x8b13('0x45')]=function(_0x47a3fa,_0x11e8af){return respondWithRpcPromise(_0x8b13('0x44'),_0x47a3fa[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](findById(_0x47a3fa[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x11e8af,null))[_0x8b13('0xe')](handleError(_0x11e8af,null));};exports[_0x8b13('0x46')]=function(_0x46850a,_0x52e2a6){return respondWithRpcPromise(_0x8b13('0x47'),_0x46850a[_0x8b13('0x18')],routingClient)['then'](respondWithResult(_0x52e2a6,null))[_0x8b13('0xe')](handleError(_0x52e2a6,null));};exports[_0x8b13('0x48')]=function(_0x475c8d,_0xd29067){return respondWithRpcPromise('MailQueues',_0x475c8d[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](findById(_0x475c8d['params']['id']))[_0x8b13('0x19')](respondWithResult(_0xd29067,null))[_0x8b13('0xe')](handleError(_0xd29067,null));};exports[_0x8b13('0x49')]=function(_0x23a63c,_0x5d05cb){return respondWithRpcPromise(_0x8b13('0x4a'),_0x23a63c[_0x8b13('0x18')],mailClient)[_0x8b13('0x19')](respondWithResult(_0x5d05cb,null))[_0x8b13('0xe')](handleError(_0x5d05cb,null));};exports[_0x8b13('0x4b')]=function(_0x2fff4e,_0x571e89){return respondWithRpcPromise(_0x8b13('0x4c'),_0x2fff4e[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x571e89,null))['catch'](handleError(_0x571e89,null));};exports[_0x8b13('0x4d')]=function(_0x576c91,_0x122ea2){return respondWithRpcPromise(_0x8b13('0x4c'),_0x576c91['query'],routingClient)['then'](findById(_0x576c91['params']['id']))['then'](respondWithResult(_0x122ea2,null))['catch'](handleError(_0x122ea2,null));};exports[_0x8b13('0x4e')]=function(_0x1bc936,_0x574f98){return respondWithRpcPromise(_0x8b13('0x4f'),_0x1bc936['query'],routingClient)[_0x8b13('0x19')](respondWithResult(_0x574f98,null))[_0x8b13('0xe')](handleError(_0x574f98,null));};exports[_0x8b13('0x50')]=function(_0x22c4d4,_0x43f12a){return respondWithRpcPromise(_0x8b13('0x4f'),_0x22c4d4[_0x8b13('0x18')],routingClient)['then'](findById(_0x22c4d4[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x43f12a,null))[_0x8b13('0xe')](handleError(_0x43f12a,null));};exports[_0x8b13('0x51')]=function(_0x207a54,_0x11a4ba){return respondWithRpcPromise(_0x8b13('0x52'),_0x207a54[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x11a4ba,null))['catch'](handleError(_0x11a4ba,null));};exports[_0x8b13('0x53')]=function(_0x5d1174,_0x2b109c){return respondWithRpcPromise(_0x8b13('0x52'),_0x5d1174[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](findById(_0x5d1174[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x2b109c,null))['catch'](handleError(_0x2b109c,null));};exports[_0x8b13('0x54')]=function(_0x37a243,_0x5ccf4e){return respondWithRpcPromise(_0x8b13('0x55'),_0x37a243[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x5ccf4e,null))['catch'](handleError(_0x5ccf4e,null));};exports[_0x8b13('0x56')]=function(_0x215a8a,_0x15ce51){return respondWithRpcPromise(_0x8b13('0x55'),_0x215a8a['query'],routingClient)[_0x8b13('0x19')](findById(_0x215a8a[_0x8b13('0x1b')]['id']))['then'](respondWithResult(_0x15ce51,null))[_0x8b13('0xe')](handleError(_0x15ce51,null));};exports[_0x8b13('0x57')]=function(_0x69e237,_0x3734e7){return respondWithRpcPromise(_0x8b13('0x58'),_0x69e237[_0x8b13('0x18')])[_0x8b13('0x19')](respondWithResult(_0x3734e7,null))[_0x8b13('0xe')](handleError(_0x3734e7,null));};exports[_0x8b13('0x59')]=function(_0x2cace0,_0x2f2bc5){return respondWithRpcPromise(_0x8b13('0x5a'),_0x2cace0[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x2f2bc5,null))['catch'](handleError(_0x2f2bc5,null));};exports[_0x8b13('0x5b')]=function(_0x578469,_0x14dee4){return respondWithRpcPromise(_0x8b13('0x5c'),_0x578469[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x14dee4,null))['catch'](handleError(_0x14dee4,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x27ad64,_0x2236b5){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x27ad64[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x2236b5,null))[_0x8b13('0xe')](handleError(_0x2236b5,null));};exports[_0x8b13('0x5d')]=function(_0x7499cb,_0x12aa48){return respondWithRpcPromise(_0x8b13('0x5e'),_0x7499cb[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](function(_0x24211c){if(_0x7499cb['query'][_0x8b13('0x5f')]!==undefined){var _0x2e7477=_(_0x24211c['rows'])[_0x8b13('0x60')]([_0x7499cb[_0x8b13('0x18')]['type'],_0x7499cb[_0x8b13('0x1b')]['id']])[_0x8b13('0x61')](_0x8b13('0x62'))[_0x8b13('0x63')]()[_0x8b13('0x64')]();return _0x24211c[_0x8b13('0x15')][_0x8b13('0x60')](function(_0x1fde8b){return _0x2e7477['indexOf'](_0x1fde8b[_0x8b13('0x62')])>-0x1;});}else{return _0x24211c[_0x8b13('0x15')][_0x8b13('0x60')](function(_0x5e2b4c){return _0x5e2b4c[_0x8b13('0x62')]===parseInt(_0x7499cb['params']['id']);});}})[_0x8b13('0x19')](respondWithResult(_0x12aa48,null))[_0x8b13('0xe')](handleError(_0x12aa48,null));};exports[_0x8b13('0x65')]=function(_0x40fefa,_0xc74525){return respondWithRpcPromise(_0x8b13('0x66'),_0x40fefa[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0xc74525,null))[_0x8b13('0xe')](handleError(_0xc74525,null));};exports[_0x8b13('0x67')]=function(_0x595f45,_0x3dc732){return respondWithRpcPromise(_0x8b13('0x68'),_0x595f45[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x3dc732,null))[_0x8b13('0xe')](handleError(_0x3dc732,null));};exports[_0x8b13('0x69')]=function(_0x2c69f5,_0x9173d){return respondWithRpcPromise(_0x8b13('0x6a'),_0x2c69f5[_0x8b13('0x18')],routingClient)[_0x8b13('0x19')](respondWithResult(_0x9173d,null))[_0x8b13('0xe')](handleError(_0x9173d,null));};exports[_0x8b13('0x6b')]=function(_0x4bb71a){return function(_0x491bf8,_0x3870a9){var _0x512f30,_0x22e10a;var _0x38a1de=_['capitalize'](_0x4bb71a);var _0x5319a1=_0x4bb71a===_0x8b13('0x6c')?_0x8b13('0x6d'):_0x8b13('0x6e');return db[_0x38a1de+_0x8b13('0x6f')][_0x8b13('0x70')]({'raw':!![],'where':{'id':_0x491bf8['params']['id']}})[_0x8b13('0x19')](function(_0x5152d0){if(_[_0x8b13('0x14')](_0x5152d0)){throw new Error(_0x38a1de+_0x8b13('0x71'));}_0x512f30=_0x5152d0;return db[_0x38a1de+'Message'][_0x8b13('0x70')]({'where':{'id':_0x491bf8[_0x8b13('0x23')][_0x8b13('0x72')]},'include':[{'model':db[_0x38a1de+_0x8b13('0x73')],'as':_0x8b13('0x73')},{'model':db[_0x38a1de+_0x5319a1],'as':'Account'}]});})[_0x8b13('0x19')](function(_0x202c12){if(_[_0x8b13('0x14')](_0x202c12)){throw new Error(_0x38a1de+'\x20Message\x20not\x20found');}_0x22e10a=_0x202c12;return _0x202c12[_0x8b13('0x74')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x3bfb06={'uniqueid':_0x4bb71a+'.'+_0x22e10a['id']+'.'+_0x22e10a[_0x8b13('0x73')]['id'],'FromUserId':_0x491bf8[_0x8b13('0x31')]['id'],'type':_0x8b13('0x75')};_0x3bfb06[_0x38a1de+_0x8b13('0x76')]=_0x22e10a['id'];_0x3bfb06[_0x38a1de+_0x8b13('0x77')]=_0x22e10a[_0x8b13('0x73')]['id'];_0x3bfb06[_0x8b13('0x78')+_0x38a1de+_0x5319a1+'Id']=_0x22e10a[_0x8b13('0x6e')]['id'];_0x3bfb06['To'+_0x38a1de+_0x8b13('0x79')]=_0x512f30['id'];return db[_0x38a1de+'TransferReport'][_0x8b13('0x7a')](_0x3bfb06);})[_0x8b13('0x19')](function(){return respondWithRpcPromise(_0x8b13('0x7b'),{'channel':_0x4bb71a,'interaction':_0x22e10a[_0x8b13('0x73')],'message':_0x22e10a,'account':_0x22e10a[_0x8b13('0x6e')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x512f30[_0x8b13('0x12')]+','+(_0x22e10a[_0x8b13('0x6e')][_0x8b13('0x7c')]||0x12c),'interval':_0x8b13('0x7d')}]},routingClient);})[_0x8b13('0x19')](respondWithResult(_0x3870a9,null))[_0x8b13('0xe')](handleError(_0x3870a9,null));};};exports['agentNotify']=function(_0x24005e,_0xd2b08b){var _0x556a92,_0x1b3a1b;if(_['isNil'](_0x24005e[_0x8b13('0x23')]['channel'])){throw new Error(_0x8b13('0x7e'));}var _0x291a30=_0x24005e[_0x8b13('0x23')][_0x8b13('0x7f')];var _0x13a7ea=_[_0x8b13('0x80')](_0x291a30);var _0x165813=_0x291a30===_0x8b13('0x6c')?'Website':_0x8b13('0x6e');return db[_0x8b13('0x81')]['findOne']({'raw':!![],'where':{'id':_0x24005e[_0x8b13('0x1b')]['id'],'role':_0x8b13('0x82')}})['then'](function(_0xa97f27){if(_[_0x8b13('0x14')](_0xa97f27)){throw new Error(_0x8b13('0x83'));}_0x556a92=_0xa97f27;return db[_0x13a7ea+_0x8b13('0x84')][_0x8b13('0x70')]({'where':{'id':_0x24005e['body']['messageId']},'include':[{'model':db[_0x13a7ea+_0x8b13('0x73')],'as':_0x8b13('0x73')},{'model':db[_0x13a7ea+_0x165813],'as':_0x8b13('0x6e')}]});})[_0x8b13('0x19')](function(_0xcafeff){if(_[_0x8b13('0x14')](_0xcafeff)){throw new Error(_0x13a7ea+_0x8b13('0x85'));}_0x1b3a1b=_0xcafeff;return _0xcafeff[_0x8b13('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0x8b13('0x19')](function(){var _0xfac180={'uniqueid':_0x291a30+'.'+_0x1b3a1b['id']+'.'+_0x1b3a1b[_0x8b13('0x73')]['id'],'FromUserId':_0x24005e[_0x8b13('0x31')]['id'],'type':_0x8b13('0x75'),'ToUserId':_0x556a92['id']};_0xfac180[_0x13a7ea+_0x8b13('0x76')]=_0x1b3a1b['id'];_0xfac180[_0x13a7ea+_0x8b13('0x77')]=_0x1b3a1b[_0x8b13('0x73')]['id'];_0xfac180['From'+_0x13a7ea+_0x165813+'Id']=_0x1b3a1b[_0x8b13('0x6e')]['id'];return db[_0x13a7ea+'TransferReport'][_0x8b13('0x7a')](_0xfac180);})[_0x8b13('0x19')](function(){return respondWithRpcPromise(_0x8b13('0x7b'),{'channel':_0x291a30,'interaction':_0x1b3a1b[_0x8b13('0x73')],'message':_0x1b3a1b,'account':_0x1b3a1b[_0x8b13('0x6e')],'applications':[{'id':0x0,'priority':0x1,'app':_0x8b13('0x82'),'appdata':_0x556a92[_0x8b13('0x12')]+','+(_0x1b3a1b['Account'][_0x8b13('0x86')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x8b13('0x19')](respondWithResult(_0xd2b08b,null))[_0x8b13('0xe')](handleError(_0xd2b08b,null));};
\ No newline at end of file
index f564a2b..77a2535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x866b=['isAuthenticated','index','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','get'];(function(_0x989334,_0x4b2b99){var _0x42e15c=function(_0x24e747){while(--_0x24e747){_0x989334['push'](_0x989334['shift']());}};_0x42e15c(++_0x4b2b99);}(_0x866b,0x1c5));var _0xb866=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x866b[_0x2aea9e];return _0x430b92;};'use strict';var multer=require(_0xb866('0x0'));var util=require(_0xb866('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb866('0x2'));var router=express[_0xb866('0x3')]();var fs_extra=require(_0xb866('0x4'));var auth=require(_0xb866('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0xb866('0x6')]('/',auth[_0xb866('0x7')](),controller[_0xb866('0x8')]);router[_0xb866('0x6')](_0xb866('0x9'),auth[_0xb866('0x7')](),controller[_0xb866('0xa')]);router[_0xb866('0x6')](_0xb866('0xb'),auth[_0xb866('0x7')](),controller[_0xb866('0xc')]);router[_0xb866('0xd')]('/',auth[_0xb866('0x7')](),controller[_0xb866('0xe')]);router[_0xb866('0xf')](_0xb866('0x9'),auth[_0xb866('0x7')](),controller[_0xb866('0x10')]);router[_0xb866('0x11')](_0xb866('0x9'),auth[_0xb866('0x7')](),controller[_0xb866('0x12')]);module[_0xb866('0x13')]=router;
\ No newline at end of file
+var _0x789f=['fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/run','run','post','create','delete','destroy','exports','util'];(function(_0x5b3a22,_0xb9eb3d){var _0xd6e75c=function(_0x168195){while(--_0x168195){_0x5b3a22['push'](_0x5b3a22['shift']());}};_0xd6e75c(++_0xb9eb3d);}(_0x789f,0x194));var _0xf789=function(_0x2f3794,_0x3c3bec){_0x2f3794=_0x2f3794-0x0;var _0x1c9fbe=_0x789f[_0x2f3794];return _0x1c9fbe;};'use strict';var multer=require('multer');var util=require(_0xf789('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xf789('0x1'));var auth=require(_0xf789('0x2'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0xf789('0x3')]('/',auth[_0xf789('0x4')](),controller[_0xf789('0x5')]);router['get'](_0xf789('0x6'),auth[_0xf789('0x4')](),controller[_0xf789('0x7')]);router['get'](_0xf789('0x8'),auth[_0xf789('0x4')](),controller[_0xf789('0x9')]);router[_0xf789('0xa')]('/',auth[_0xf789('0x4')](),controller[_0xf789('0xb')]);router['put']('/:id',auth[_0xf789('0x4')](),controller['update']);router[_0xf789('0xc')]('/:id',auth['isAuthenticated'](),controller[_0xf789('0xd')]);module[_0xf789('0xe')]=router;
\ No newline at end of file
index 9b9bdc7..2cb3323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28b5=['0\x200\x20*\x20*\x20*','DATE','years','quarters','months','weeks','days','hours','minutes','ENUM','pdf','xlsx','csv','custom','BOOLEAN','TEXT','sequelize','exports','STRING'];(function(_0x1943d9,_0x245bb8){var _0x4b4f3f=function(_0x3bba90){while(--_0x3bba90){_0x1943d9['push'](_0x1943d9['shift']());}};_0x4b4f3f(++_0x245bb8);}(_0x28b5,0x1c5));var _0x528b=function(_0x4402b6,_0x2c8543){_0x4402b6=_0x4402b6-0x0;var _0x1c9a9b=_0x28b5[_0x4402b6];return _0x1c9a9b;};'use strict';var Sequelize=require(_0x528b('0x0'));module[_0x528b('0x1')]={'name':{'type':Sequelize[_0x528b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x528b('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x528b('0x2')],'allowNull':![],'defaultValue':_0x528b('0x3')},'startAt':{'type':Sequelize[_0x528b('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0x528b('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x528b('0x5'),_0x528b('0x6'),_0x528b('0x7'),_0x528b('0x8'),_0x528b('0x9'),_0x528b('0xa'),_0x528b('0xb')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x528b('0xc')]('csv',_0x528b('0xd'),_0x528b('0xe')),'allowNull':![],'defaultValue':_0x528b('0xf')},'type':{'type':Sequelize[_0x528b('0xc')](_0x528b('0x10'),'default'),'allowNull':![],'defaultValue':_0x528b('0x10')},'sendMail':{'type':Sequelize[_0x528b('0x11')],'defaultValue':![]},'email':{'type':Sequelize[_0x528b('0x2')]},'cc':{'type':Sequelize[_0x528b('0x12')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x68bb=['xlsx','custom','default','BOOLEAN','TEXT','sequelize','exports','STRING','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','days','hours','csv','pdf'];(function(_0x5d2803,_0xf375bd){var _0xdcad2c=function(_0x3c3a98){while(--_0x3c3a98){_0x5d2803['push'](_0x5d2803['shift']());}};_0xdcad2c(++_0xf375bd);}(_0x68bb,0x1e5));var _0xb68b=function(_0x35c667,_0x432833){_0x35c667=_0x35c667-0x0;var _0x52398f=_0x68bb[_0x35c667];return _0x52398f;};'use strict';var Sequelize=require(_0xb68b('0x0'));module[_0xb68b('0x1')]={'name':{'type':Sequelize[_0xb68b('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb68b('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xb68b('0x2')],'allowNull':![],'defaultValue':_0xb68b('0x3')},'startAt':{'type':Sequelize[_0xb68b('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xb68b('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xb68b('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xb68b('0x6')](_0xb68b('0x7'),_0xb68b('0x8'),_0xb68b('0x9'),_0xb68b('0xa'),_0xb68b('0xb'),_0xb68b('0xc'),'minutes'),'allowNull':![],'defaultValue':_0xb68b('0xb')},'output':{'type':Sequelize['ENUM'](_0xb68b('0xd'),_0xb68b('0xe'),_0xb68b('0xf')),'allowNull':![],'defaultValue':_0xb68b('0xd')},'type':{'type':Sequelize[_0xb68b('0x6')](_0xb68b('0x10'),_0xb68b('0x11')),'allowNull':![],'defaultValue':_0xb68b('0x10')},'sendMail':{'type':Sequelize[_0xb68b('0x12')],'defaultValue':![]},'email':{'type':Sequelize[_0xb68b('0x2')]},'cc':{'type':Sequelize[_0xb68b('0x13')]},'bcc':{'type':Sequelize[_0xb68b('0x13')]},'sendIfEmpty':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 5d864fa..b87b83f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c94=['rimraf','fast-json-patch','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','get','Scheduler','UserProfileResource','error','stack','send','index','map','Schedule','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format'];(function(_0x3e478c,_0x152670){var _0x29ef89=function(_0x3d0d77){while(--_0x3d0d77){_0x3e478c['push'](_0x3e478c['shift']());}};_0x29ef89(++_0x152670);}(_0x4c94,0xad));var _0x44c9=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x4c94[_0x4e9628];return _0x27bc8c;};'use strict';var emlformat=require(_0x44c9('0x0'));var rimraf=require(_0x44c9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x44c9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x44c9('0x3'));var Mustache=require(_0x44c9('0x4'));var util=require('util');var path=require('path');var sox=require(_0x44c9('0x5'));var csv=require(_0x44c9('0x6'));var ejs=require(_0x44c9('0x7'));var fs=require('fs');var fs_extra=require(_0x44c9('0x8'));var _=require(_0x44c9('0x9'));var squel=require(_0x44c9('0xa'));var crypto=require(_0x44c9('0xb'));var jsforce=require(_0x44c9('0xc'));var deskjs=require(_0x44c9('0xd'));var toCsv=require(_0x44c9('0x6'));var querystring=require(_0x44c9('0xe'));var Papa=require(_0x44c9('0xf'));var Redis=require(_0x44c9('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x44c9('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x44c9('0x12'))(_0x44c9('0x13'));var utils=require(_0x44c9('0x14'));var config=require(_0x44c9('0x15'));var licenseUtil=require(_0x44c9('0x16'));var db=require(_0x44c9('0x17'))['db'];function respondWithStatusCode(_0x1da252,_0x445ce7){_0x445ce7=_0x445ce7||0xcc;return function(_0x43bbf3){if(_0x43bbf3){return _0x1da252[_0x44c9('0x18')](_0x445ce7);}return _0x1da252[_0x44c9('0x19')](_0x445ce7)[_0x44c9('0x1a')]();};}function respondWithResult(_0x3328b4,_0x1e306c){_0x1e306c=_0x1e306c||0xc8;return function(_0x4df7fb){if(_0x4df7fb){return _0x3328b4[_0x44c9('0x19')](_0x1e306c)[_0x44c9('0x1b')](_0x4df7fb);}};}function respondWithFilteredResult(_0x5cf214,_0x10874a){return function(_0x5e2ede){if(_0x5e2ede){var _0x4d951e=typeof _0x10874a[_0x44c9('0x1c')]===_0x44c9('0x1d')&&typeof _0x10874a['limit']===_0x44c9('0x1d');var _0x4f350f=_0x5e2ede['count'];var _0xb6fe73=_0x4d951e?0x0:_0x10874a[_0x44c9('0x1c')];var _0x127bfa=_0x4d951e?_0x5e2ede[_0x44c9('0x1e')]:_0x10874a['offset']+_0x10874a[_0x44c9('0x1f')];var _0x4327de;if(_0x127bfa>=_0x4f350f){_0x127bfa=_0x4f350f;_0x4327de=0xc8;}else{_0x4327de=0xce;}_0x5cf214[_0x44c9('0x19')](_0x4327de);return _0x5cf214['set'](_0x44c9('0x20'),_0xb6fe73+'-'+_0x127bfa+'/'+_0x4f350f)[_0x44c9('0x1b')](_0x5e2ede);}return null;};}function patchUpdates(_0xd18c2a){return function(_0xafc6b8){try{jsonpatch['apply'](_0xafc6b8,_0xd18c2a,!![]);}catch(_0x443e77){return BPromise[_0x44c9('0x21')](_0x443e77);}return _0xafc6b8[_0x44c9('0x22')]();};}function saveUpdates(_0x2d3c06,_0x5c1c52){return function(_0x267c7a){if(_0x267c7a){return _0x267c7a[_0x44c9('0x23')](_0x2d3c06)[_0x44c9('0x24')](function(_0x3d2c64){return _0x3d2c64;});}return null;};}function removeEntity(_0x37344b,_0x3dd978){return function(_0x4c37c3){if(_0x4c37c3){return _0x4c37c3[_0x44c9('0x25')]()['then'](function(){var _0x19ae2a=_0x4c37c3[_0x44c9('0x26')]({'plain':!![]});var _0xb43466=_0x44c9('0x27');return db[_0x44c9('0x28')][_0x44c9('0x25')]({'where':{'type':_0xb43466,'resourceId':_0x19ae2a['id']}})['then'](function(){return _0x4c37c3;});})[_0x44c9('0x24')](function(){_0x37344b[_0x44c9('0x19')](0xcc)[_0x44c9('0x1a')]();});}};}function handleEntityNotFound(_0x504b27,_0x3724f4){return function(_0xd0edd1){if(!_0xd0edd1){_0x504b27['sendStatus'](0x194);}return _0xd0edd1;};}function handleError(_0x254713,_0x81be7f){_0x81be7f=_0x81be7f||0x1f4;return function(_0x5e52d2){logger[_0x44c9('0x29')](_0x5e52d2[_0x44c9('0x2a')]);if(_0x5e52d2['name']){delete _0x5e52d2['name'];}_0x254713[_0x44c9('0x19')](_0x81be7f)[_0x44c9('0x2b')](_0x5e52d2);};}exports[_0x44c9('0x2c')]=function(_0x583697,_0x1aa3be){var _0x30989d={},_0xeb88e8={},_0xa8dec1={'count':0x0,'rows':[]};var _0x2e4660=_[_0x44c9('0x2d')](db[_0x44c9('0x2e')][_0x44c9('0x2f')],function(_0x918728){return{'name':_0x918728[_0x44c9('0x30')],'type':_0x918728[_0x44c9('0x31')][_0x44c9('0x32')]};});_0xeb88e8[_0x44c9('0x33')]=_[_0x44c9('0x2d')](_0x2e4660,_0x44c9('0x34'));_0xeb88e8[_0x44c9('0x35')]=_[_0x44c9('0x36')](_0x583697[_0x44c9('0x35')]);_0xeb88e8['filters']=_[_0x44c9('0x37')](_0xeb88e8[_0x44c9('0x33')],_0xeb88e8[_0x44c9('0x35')]);_0x30989d[_0x44c9('0x38')]=_[_0x44c9('0x37')](_0xeb88e8['model'],qs[_0x44c9('0x39')](_0x583697['query'][_0x44c9('0x39')]));_0x30989d[_0x44c9('0x38')]=_0x30989d['attributes'][_0x44c9('0x3a')]?_0x30989d[_0x44c9('0x38')]:_0xeb88e8[_0x44c9('0x33')];if(!_0x583697['query'][_0x44c9('0x3b')](_0x44c9('0x3c'))){_0x30989d[_0x44c9('0x1f')]=qs[_0x44c9('0x1f')](_0x583697['query'][_0x44c9('0x1f')]);_0x30989d[_0x44c9('0x1c')]=qs[_0x44c9('0x1c')](_0x583697[_0x44c9('0x35')][_0x44c9('0x1c')]);}_0x30989d[_0x44c9('0x3d')]=qs[_0x44c9('0x3e')](_0x583697[_0x44c9('0x35')]['sort']);_0x30989d[_0x44c9('0x3f')]=qs['filters'](_[_0x44c9('0x40')](_0x583697[_0x44c9('0x35')],_0xeb88e8[_0x44c9('0x41')]),_0x2e4660);if(_0x583697[_0x44c9('0x35')][_0x44c9('0x42')]){_0x30989d['where']=_['merge'](_0x30989d['where'],{'$or':_[_0x44c9('0x2d')](_0x2e4660,function(_0x14748d){if(_0x14748d[_0x44c9('0x31')]!==_0x44c9('0x43')){var _0x2aae20={};_0x2aae20[_0x14748d[_0x44c9('0x34')]]={'$like':'%'+_0x583697[_0x44c9('0x35')][_0x44c9('0x42')]+'%'};return _0x2aae20;}})});}_0x30989d=_[_0x44c9('0x44')]({},_0x30989d,_0x583697['options']);var _0x7c5bbe={'where':_0x30989d[_0x44c9('0x3f')]};return db[_0x44c9('0x2e')][_0x44c9('0x1e')](_0x7c5bbe)[_0x44c9('0x24')](function(_0x5d9d0c){_0xa8dec1[_0x44c9('0x1e')]=_0x5d9d0c;if(_0x583697[_0x44c9('0x35')][_0x44c9('0x45')]){_0x30989d['include']=[{'all':!![]}];}return db[_0x44c9('0x2e')][_0x44c9('0x46')](_0x30989d);})[_0x44c9('0x24')](function(_0x4f37d){_0xa8dec1[_0x44c9('0x47')]=_0x4f37d;return _0xa8dec1;})[_0x44c9('0x24')](respondWithFilteredResult(_0x1aa3be,_0x30989d))[_0x44c9('0x48')](handleError(_0x1aa3be,null));};exports[_0x44c9('0x49')]=function(_0x41e31b,_0x450103){var _0x5a4d6d={'raw':![],'where':{'id':_0x41e31b[_0x44c9('0x4a')]['id']}},_0x2bfd8a={};_0x2bfd8a['model']=_[_0x44c9('0x36')](db[_0x44c9('0x2e')][_0x44c9('0x2f')]);_0x2bfd8a[_0x44c9('0x35')]=_['keys'](_0x41e31b[_0x44c9('0x35')]);_0x2bfd8a['filters']=_[_0x44c9('0x37')](_0x2bfd8a[_0x44c9('0x33')],_0x2bfd8a[_0x44c9('0x35')]);_0x5a4d6d['attributes']=_[_0x44c9('0x37')](_0x2bfd8a[_0x44c9('0x33')],qs[_0x44c9('0x39')](_0x41e31b[_0x44c9('0x35')][_0x44c9('0x39')]));_0x5a4d6d[_0x44c9('0x38')]=_0x5a4d6d[_0x44c9('0x38')][_0x44c9('0x3a')]?_0x5a4d6d[_0x44c9('0x38')]:_0x2bfd8a['model'];if(_0x41e31b[_0x44c9('0x35')][_0x44c9('0x45')]){_0x5a4d6d[_0x44c9('0x4b')]=[{'all':!![]}];}_0x5a4d6d=_[_0x44c9('0x44')]({},_0x5a4d6d,_0x41e31b[_0x44c9('0x4c')]);return db[_0x44c9('0x2e')][_0x44c9('0x4d')](_0x5a4d6d)[_0x44c9('0x24')](handleEntityNotFound(_0x450103,null))[_0x44c9('0x24')](respondWithResult(_0x450103,null))['catch'](handleError(_0x450103,null));};exports['create']=function(_0x128960,_0x167189){return db[_0x44c9('0x2e')][_0x44c9('0x4e')](_0x128960[_0x44c9('0x4f')],{})[_0x44c9('0x24')](function(_0x33f7e6){var _0x597029=_0x128960[_0x44c9('0x50')][_0x44c9('0x26')]({'plain':!![]});if(!_0x597029)throw new Error(_0x44c9('0x51'));if(_0x597029['role']===_0x44c9('0x50')){var _0x5556c3=_0x33f7e6[_0x44c9('0x26')]({'plain':!![]});var _0x3ab425=_0x44c9('0x27');return db['UserProfileSection'][_0x44c9('0x4d')]({'where':{'name':_0x3ab425,'userProfileId':_0x597029[_0x44c9('0x52')]},'raw':!![]})['then'](function(_0x3ef56f){if(_0x3ef56f&&_0x3ef56f[_0x44c9('0x53')]===0x0){return db[_0x44c9('0x28')][_0x44c9('0x4e')]({'name':_0x5556c3[_0x44c9('0x34')],'resourceId':_0x5556c3['id'],'type':_0x3ef56f[_0x44c9('0x34')],'sectionId':_0x3ef56f['id']},{})['then'](function(){return _0x33f7e6;});}else{return _0x33f7e6;}})['catch'](function(_0xb2848e){logger[_0x44c9('0x29')](_0x44c9('0x54'),_0xb2848e);throw _0xb2848e;});}return _0x33f7e6;})[_0x44c9('0x24')](respondWithResult(_0x167189,0xc9))[_0x44c9('0x48')](handleError(_0x167189,null));};exports[_0x44c9('0x23')]=function(_0x299a48,_0x97739c){if(_0x299a48[_0x44c9('0x4f')]['id']){delete _0x299a48[_0x44c9('0x4f')]['id'];}return db['Schedule'][_0x44c9('0x4d')]({'where':{'id':_0x299a48[_0x44c9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x97739c,null))[_0x44c9('0x24')](saveUpdates(_0x299a48[_0x44c9('0x4f')],null))[_0x44c9('0x24')](respondWithResult(_0x97739c,null))[_0x44c9('0x48')](handleError(_0x97739c,null));};exports['destroy']=function(_0x26842d,_0x329c25){return db[_0x44c9('0x2e')][_0x44c9('0x4d')]({'where':{'id':_0x26842d['params']['id']}})[_0x44c9('0x24')](handleEntityNotFound(_0x329c25,null))[_0x44c9('0x24')](removeEntity(_0x329c25,null))[_0x44c9('0x48')](handleError(_0x329c25,null));};exports[_0x44c9('0x55')]=function(_0x40b5ed,_0x17486f,_0x1a5526){var _0x3cf788=require(_0x44c9('0x56'));return db[_0x44c9('0x2e')]['find']({'where':{'id':_0x40b5ed['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x17486f,null))[_0x44c9('0x24')](function(){_0x3cf788[_0x44c9('0x55')](_0x40b5ed[_0x44c9('0x4a')]['id']);})['then'](respondWithStatusCode(_0x17486f,null))[_0x44c9('0x48')](handleError(_0x17486f,null));};
\ No newline at end of file
+var _0x804b=['options','includeAll','include','Schedule','findAll','rows','params','find','catch','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','set','Content-Range','json','reject','save','update','destroy','get','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL'];(function(_0x4b32b9,_0x4ed982){var _0x436326=function(_0x52c482){while(--_0x52c482){_0x4b32b9['push'](_0x4b32b9['shift']());}};_0x436326(++_0x4ed982);}(_0x804b,0x6a));var _0xb804=function(_0x49c8d8,_0x1b2d7c){_0x49c8d8=_0x49c8d8-0x0;var _0x3f9fe4=_0x804b[_0x49c8d8];return _0x3f9fe4;};'use strict';var emlformat=require(_0xb804('0x0'));var rimraf=require(_0xb804('0x1'));var zipdir=require(_0xb804('0x2'));var jsonpatch=require(_0xb804('0x3'));var rp=require(_0xb804('0x4'));var moment=require(_0xb804('0x5'));var BPromise=require(_0xb804('0x6'));var Mustache=require(_0xb804('0x7'));var util=require(_0xb804('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0xb804('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb804('0xa'));var squel=require('squel');var crypto=require(_0xb804('0xb'));var jsforce=require(_0xb804('0xc'));var deskjs=require(_0xb804('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb804('0xe'));var Papa=require(_0xb804('0xf'));var Redis=require(_0xb804('0x10'));var authService=require(_0xb804('0x11'));var qs=require(_0xb804('0x12'));var as=require(_0xb804('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb804('0x14'));var utils=require('../../config/utils');var config=require(_0xb804('0x15'));var licenseUtil=require(_0xb804('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x101e58,_0x19535a){_0x19535a=_0x19535a||0xcc;return function(_0x8fecb6){if(_0x8fecb6){return _0x101e58['sendStatus'](_0x19535a);}return _0x101e58[_0xb804('0x17')](_0x19535a)[_0xb804('0x18')]();};}function respondWithResult(_0x448fb3,_0x26cc74){_0x26cc74=_0x26cc74||0xc8;return function(_0x5768cd){if(_0x5768cd){return _0x448fb3[_0xb804('0x17')](_0x26cc74)['json'](_0x5768cd);}};}function respondWithFilteredResult(_0x31e526,_0xee46ea){return function(_0x491855){if(_0x491855){var _0x59844d=typeof _0xee46ea[_0xb804('0x19')]==='undefined'&&typeof _0xee46ea['limit']===_0xb804('0x1a');var _0x4db3ff=_0x491855['count'];var _0x16a7b7=_0x59844d?0x0:_0xee46ea['offset'];var _0x23537d=_0x59844d?_0x491855[_0xb804('0x1b')]:_0xee46ea[_0xb804('0x19')]+_0xee46ea['limit'];var _0x1fe592;if(_0x23537d>=_0x4db3ff){_0x23537d=_0x4db3ff;_0x1fe592=0xc8;}else{_0x1fe592=0xce;}_0x31e526['status'](_0x1fe592);return _0x31e526[_0xb804('0x1c')](_0xb804('0x1d'),_0x16a7b7+'-'+_0x23537d+'/'+_0x4db3ff)[_0xb804('0x1e')](_0x491855);}return null;};}function patchUpdates(_0x244bb0){return function(_0x14d771){try{jsonpatch['apply'](_0x14d771,_0x244bb0,!![]);}catch(_0x103a02){return BPromise[_0xb804('0x1f')](_0x103a02);}return _0x14d771[_0xb804('0x20')]();};}function saveUpdates(_0x519a4f,_0x17618b){return function(_0x388fc7){if(_0x388fc7){return _0x388fc7[_0xb804('0x21')](_0x519a4f)['then'](function(_0x1645da){return _0x1645da;});}return null;};}function removeEntity(_0x1ede83,_0x3de42b){return function(_0x276dea){if(_0x276dea){return _0x276dea[_0xb804('0x22')]()['then'](function(){var _0x380b92=_0x276dea[_0xb804('0x23')]({'plain':!![]});var _0x46f519='Scheduler';return db['UserProfileResource'][_0xb804('0x22')]({'where':{'type':_0x46f519,'resourceId':_0x380b92['id']}})[_0xb804('0x24')](function(){return _0x276dea;});})['then'](function(){_0x1ede83[_0xb804('0x17')](0xcc)[_0xb804('0x18')]();});}};}function handleEntityNotFound(_0x2dca97,_0x2e3080){return function(_0x443933){if(!_0x443933){_0x2dca97['sendStatus'](0x194);}return _0x443933;};}function handleError(_0x44a6e5,_0x1f0178){_0x1f0178=_0x1f0178||0x1f4;return function(_0x35cab6){logger[_0xb804('0x25')](_0x35cab6[_0xb804('0x26')]);if(_0x35cab6[_0xb804('0x27')]){delete _0x35cab6['name'];}_0x44a6e5[_0xb804('0x17')](_0x1f0178)[_0xb804('0x28')](_0x35cab6);};}exports[_0xb804('0x29')]=function(_0x1b4a4b,_0x3998a6){var _0x5c7296={},_0x18ab7b={},_0x3935cd={'count':0x0,'rows':[]};var _0x194672=_[_0xb804('0x2a')](db['Schedule'][_0xb804('0x2b')],function(_0x4ce7a9){return{'name':_0x4ce7a9[_0xb804('0x2c')],'type':_0x4ce7a9[_0xb804('0x2d')][_0xb804('0x2e')]};});_0x18ab7b[_0xb804('0x2f')]=_[_0xb804('0x2a')](_0x194672,'name');_0x18ab7b[_0xb804('0x30')]=_[_0xb804('0x31')](_0x1b4a4b[_0xb804('0x30')]);_0x18ab7b[_0xb804('0x32')]=_[_0xb804('0x33')](_0x18ab7b['model'],_0x18ab7b[_0xb804('0x30')]);_0x5c7296[_0xb804('0x34')]=_[_0xb804('0x33')](_0x18ab7b[_0xb804('0x2f')],qs[_0xb804('0x35')](_0x1b4a4b[_0xb804('0x30')][_0xb804('0x35')]));_0x5c7296['attributes']=_0x5c7296['attributes'][_0xb804('0x36')]?_0x5c7296['attributes']:_0x18ab7b[_0xb804('0x2f')];if(!_0x1b4a4b[_0xb804('0x30')][_0xb804('0x37')](_0xb804('0x38'))){_0x5c7296[_0xb804('0x39')]=qs[_0xb804('0x39')](_0x1b4a4b[_0xb804('0x30')][_0xb804('0x39')]);_0x5c7296[_0xb804('0x19')]=qs[_0xb804('0x19')](_0x1b4a4b[_0xb804('0x30')][_0xb804('0x19')]);}_0x5c7296[_0xb804('0x3a')]=qs['sort'](_0x1b4a4b['query'][_0xb804('0x3b')]);_0x5c7296[_0xb804('0x3c')]=qs[_0xb804('0x32')](_[_0xb804('0x3d')](_0x1b4a4b[_0xb804('0x30')],_0x18ab7b[_0xb804('0x32')]),_0x194672);if(_0x1b4a4b[_0xb804('0x30')]['filter']){_0x5c7296[_0xb804('0x3c')]=_[_0xb804('0x3e')](_0x5c7296['where'],{'$or':_[_0xb804('0x2a')](_0x194672,function(_0x1e9f21){if(_0x1e9f21['type']!==_0xb804('0x3f')){var _0x4d4220={};_0x4d4220[_0x1e9f21[_0xb804('0x27')]]={'$like':'%'+_0x1b4a4b['query']['filter']+'%'};return _0x4d4220;}})});}_0x5c7296=_[_0xb804('0x3e')]({},_0x5c7296,_0x1b4a4b[_0xb804('0x40')]);var _0x3cdb36={'where':_0x5c7296[_0xb804('0x3c')]};return db['Schedule'][_0xb804('0x1b')](_0x3cdb36)[_0xb804('0x24')](function(_0x36c9ad){_0x3935cd[_0xb804('0x1b')]=_0x36c9ad;if(_0x1b4a4b[_0xb804('0x30')][_0xb804('0x41')]){_0x5c7296[_0xb804('0x42')]=[{'all':!![]}];}return db[_0xb804('0x43')][_0xb804('0x44')](_0x5c7296);})[_0xb804('0x24')](function(_0x10a164){_0x3935cd[_0xb804('0x45')]=_0x10a164;return _0x3935cd;})['then'](respondWithFilteredResult(_0x3998a6,_0x5c7296))['catch'](handleError(_0x3998a6,null));};exports['show']=function(_0x366ff0,_0x3b9718){var _0x4cb446={'raw':![],'where':{'id':_0x366ff0[_0xb804('0x46')]['id']}},_0x13883e={};_0x13883e[_0xb804('0x2f')]=_[_0xb804('0x31')](db[_0xb804('0x43')][_0xb804('0x2b')]);_0x13883e[_0xb804('0x30')]=_[_0xb804('0x31')](_0x366ff0[_0xb804('0x30')]);_0x13883e['filters']=_[_0xb804('0x33')](_0x13883e[_0xb804('0x2f')],_0x13883e[_0xb804('0x30')]);_0x4cb446['attributes']=_['intersection'](_0x13883e[_0xb804('0x2f')],qs[_0xb804('0x35')](_0x366ff0[_0xb804('0x30')][_0xb804('0x35')]));_0x4cb446['attributes']=_0x4cb446[_0xb804('0x34')][_0xb804('0x36')]?_0x4cb446['attributes']:_0x13883e[_0xb804('0x2f')];if(_0x366ff0[_0xb804('0x30')]['includeAll']){_0x4cb446['include']=[{'all':!![]}];}_0x4cb446=_['merge']({},_0x4cb446,_0x366ff0['options']);return db['Schedule'][_0xb804('0x47')](_0x4cb446)[_0xb804('0x24')](handleEntityNotFound(_0x3b9718,null))['then'](respondWithResult(_0x3b9718,null))[_0xb804('0x48')](handleError(_0x3b9718,null));};exports['create']=function(_0x548090,_0x15aa05){return db[_0xb804('0x43')]['create'](_0x548090[_0xb804('0x49')],{})[_0xb804('0x24')](function(_0x58f665){var _0x3bf846=_0x548090['user'][_0xb804('0x23')]({'plain':!![]});if(!_0x3bf846)throw new Error(_0xb804('0x4a'));if(_0x3bf846[_0xb804('0x4b')]==='user'){var _0x41c701=_0x58f665[_0xb804('0x23')]({'plain':!![]});var _0x162ce0=_0xb804('0x4c');return db[_0xb804('0x4d')][_0xb804('0x47')]({'where':{'name':_0x162ce0,'userProfileId':_0x3bf846[_0xb804('0x4e')]},'raw':!![]})[_0xb804('0x24')](function(_0x300da2){if(_0x300da2&&_0x300da2[_0xb804('0x4f')]===0x0){return db[_0xb804('0x50')][_0xb804('0x51')]({'name':_0x41c701['name'],'resourceId':_0x41c701['id'],'type':_0x300da2[_0xb804('0x27')],'sectionId':_0x300da2['id']},{})[_0xb804('0x24')](function(){return _0x58f665;});}else{return _0x58f665;}})[_0xb804('0x48')](function(_0x42a945){logger[_0xb804('0x25')](_0xb804('0x52'),_0x42a945);throw _0x42a945;});}return _0x58f665;})[_0xb804('0x24')](respondWithResult(_0x15aa05,0xc9))[_0xb804('0x48')](handleError(_0x15aa05,null));};exports[_0xb804('0x21')]=function(_0x1f0fc8,_0x26d9e2){if(_0x1f0fc8[_0xb804('0x49')]['id']){delete _0x1f0fc8['body']['id'];}return db[_0xb804('0x43')][_0xb804('0x47')]({'where':{'id':_0x1f0fc8[_0xb804('0x46')]['id']}})[_0xb804('0x24')](handleEntityNotFound(_0x26d9e2,null))[_0xb804('0x24')](saveUpdates(_0x1f0fc8['body'],null))[_0xb804('0x24')](respondWithResult(_0x26d9e2,null))[_0xb804('0x48')](handleError(_0x26d9e2,null));};exports[_0xb804('0x22')]=function(_0x2e53e6,_0x42a34b){return db['Schedule'][_0xb804('0x47')]({'where':{'id':_0x2e53e6[_0xb804('0x46')]['id']}})[_0xb804('0x24')](handleEntityNotFound(_0x42a34b,null))[_0xb804('0x24')](removeEntity(_0x42a34b,null))[_0xb804('0x48')](handleError(_0x42a34b,null));};exports[_0xb804('0x53')]=function(_0x31df89,_0xee1063,_0x1a8a8a){var _0x49e5ad=require(_0xb804('0x54'));return db[_0xb804('0x43')]['find']({'where':{'id':_0x31df89['params']['id']},'raw':!![]})[_0xb804('0x24')](handleEntityNotFound(_0xee1063,null))[_0xb804('0x24')](function(){_0x49e5ad['run'](_0x31df89[_0xb804('0x46')]['id']);})['then'](respondWithStatusCode(_0xee1063,null))[_0xb804('0x48')](handleError(_0xee1063,null));};
\ No newline at end of file
index 1501e98..7472b03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9386=['request-promise','path','rimraf','../../config/environment','./schedule.attributes','define','tools_schedules','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x1708d2,_0x742cf4){var _0x5a6d52=function(_0x3a0c4b){while(--_0x3a0c4b){_0x1708d2['push'](_0x1708d2['shift']());}};_0x5a6d52(++_0x742cf4);}(_0x9386,0xe4));var _0x6938=function(_0x10f3fa,_0xcb3aa1){_0x10f3fa=_0x10f3fa-0x0;var _0x151dd4=_0x9386[_0x10f3fa];return _0x151dd4;};'use strict';var _=require(_0x6938('0x0'));var util=require(_0x6938('0x1'));var logger=require(_0x6938('0x2'))(_0x6938('0x3'));var moment=require(_0x6938('0x4'));var BPromise=require(_0x6938('0x5'));var rp=require(_0x6938('0x6'));var fs=require('fs');var path=require(_0x6938('0x7'));var rimraf=require(_0x6938('0x8'));var config=require(_0x6938('0x9'));var attributes=require(_0x6938('0xa'));module['exports']=function(_0x429fd7,_0x37ad8f){return _0x429fd7[_0x6938('0xb')]('Schedule',attributes,{'tableName':_0x6938('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1af=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./schedule.attributes','exports','define','lodash','util'];(function(_0x2ebc21,_0x531579){var _0x4e60a1=function(_0x46a0ae){while(--_0x46a0ae){_0x2ebc21['push'](_0x2ebc21['shift']());}};_0x4e60a1(++_0x531579);}(_0xc1af,0x9a));var _0xfc1a=function(_0x14942b,_0x4c3fa6){_0x14942b=_0x14942b-0x0;var _0x22bfc4=_0xc1af[_0x14942b];return _0x22bfc4;};'use strict';var _=require(_0xfc1a('0x0'));var util=require(_0xfc1a('0x1'));var logger=require(_0xfc1a('0x2'))(_0xfc1a('0x3'));var moment=require(_0xfc1a('0x4'));var BPromise=require(_0xfc1a('0x5'));var rp=require(_0xfc1a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfc1a('0x7'));var config=require(_0xfc1a('0x8'));var attributes=require(_0xfc1a('0x9'));module[_0xfc1a('0xa')]=function(_0x6e5572,_0x2ccc90){return _0x6e5572[_0xfc1a('0xb')]('Schedule',attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 30f6756..a62f57c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ed6=['client','http','request','then','info','Schedule,\x20%s,\x20%s','Schedule,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0x4fc9c1,_0x570e05){var _0x15d7a1=function(_0xa5af50){while(--_0xa5af50){_0x4fc9c1['push'](_0x4fc9c1['shift']());}};_0x15d7a1(++_0x570e05);}(_0x7ed6,0xa3));var _0x67ed=function(_0x3d0937,_0x5a5dc2){_0x3d0937=_0x3d0937-0x0;var _0x1c3529=_0x7ed6[_0x3d0937];return _0x1c3529;};'use strict';var _=require(_0x67ed('0x0'));var util=require(_0x67ed('0x1'));var moment=require('moment');var BPromise=require(_0x67ed('0x2'));var rs=require(_0x67ed('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x67ed('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x67ed('0x5'))(_0x67ed('0x6'));var config=require('../../config/environment');var jayson=require(_0x67ed('0x7'));var client=jayson[_0x67ed('0x8')][_0x67ed('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x130e93,_0x338fb5,_0x4dc4be){return new BPromise(function(_0x273545,_0x4e1ffe){return client[_0x67ed('0xa')](_0x130e93,_0x4dc4be)[_0x67ed('0xb')](function(_0x2bfd28){logger[_0x67ed('0xc')](_0x67ed('0xd'),_0x338fb5,'request\x20sent');logger['debug'](_0x67ed('0xe'),_0x338fb5,_0x67ed('0xf'),JSON['stringify'](_0x2bfd28));if(_0x2bfd28[_0x67ed('0x10')]){if(_0x2bfd28['error']['code']===0x1f4){logger[_0x67ed('0x10')](_0x67ed('0xd'),_0x338fb5,_0x2bfd28[_0x67ed('0x10')][_0x67ed('0x11')]);return _0x4e1ffe(_0x2bfd28['error'][_0x67ed('0x11')]);}logger[_0x67ed('0x10')](_0x67ed('0xd'),_0x338fb5,_0x2bfd28[_0x67ed('0x10')][_0x67ed('0x11')]);return _0x273545(_0x2bfd28['error'][_0x67ed('0x11')]);}else{logger[_0x67ed('0xc')](_0x67ed('0xd'),_0x338fb5,_0x67ed('0xf'));_0x273545(_0x2bfd28['result']['message']);}})[_0x67ed('0x12')](function(_0x5d5420){logger[_0x67ed('0x10')](_0x67ed('0xd'),_0x338fb5,_0x5d5420);_0x4e1ffe(_0x5d5420);});});}
\ No newline at end of file
+var _0x9c71=['code','Schedule,\x20%s,\x20%s','message','result','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x31c6fb,_0xedf4b4){var _0x1467cf=function(_0xc94315){while(--_0xc94315){_0x31c6fb['push'](_0x31c6fb['shift']());}};_0x1467cf(++_0xedf4b4);}(_0x9c71,0x1d0));var _0x19c7=function(_0x30086e,_0x1d7809){_0x30086e=_0x30086e-0x0;var _0x592e97=_0x9c71[_0x30086e];return _0x592e97;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x19c7('0x0'));var BPromise=require('bluebird');var rs=require(_0x19c7('0x1'));var fs=require('fs');var Redis=require(_0x19c7('0x2'));var db=require(_0x19c7('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x19c7('0x4'))(_0x19c7('0x5'));var config=require('../../config/environment');var jayson=require(_0x19c7('0x6'));var client=jayson[_0x19c7('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b23a4,_0x15d891,_0xed4f6d){return new BPromise(function(_0x178ad8,_0x4f624f){return client[_0x19c7('0x8')](_0x3b23a4,_0xed4f6d)[_0x19c7('0x9')](function(_0x423b0e){logger[_0x19c7('0xa')]('Schedule,\x20%s,\x20%s',_0x15d891,_0x19c7('0xb'));logger[_0x19c7('0xc')](_0x19c7('0xd'),_0x15d891,_0x19c7('0xb'),JSON[_0x19c7('0xe')](_0x423b0e));if(_0x423b0e[_0x19c7('0xf')]){if(_0x423b0e[_0x19c7('0xf')][_0x19c7('0x10')]===0x1f4){logger[_0x19c7('0xf')](_0x19c7('0x11'),_0x15d891,_0x423b0e[_0x19c7('0xf')][_0x19c7('0x12')]);return _0x4f624f(_0x423b0e[_0x19c7('0xf')]['message']);}logger[_0x19c7('0xf')](_0x19c7('0x11'),_0x15d891,_0x423b0e[_0x19c7('0xf')][_0x19c7('0x12')]);return _0x178ad8(_0x423b0e[_0x19c7('0xf')][_0x19c7('0x12')]);}else{logger['info'](_0x19c7('0x11'),_0x15d891,'request\x20sent');_0x178ad8(_0x423b0e[_0x19c7('0x13')][_0x19c7('0x12')]);}})['catch'](function(_0x4fccd2){logger[_0x19c7('0xf')](_0x19c7('0x11'),_0x15d891,_0x4fccd2);_0x4f624f(_0x4fccd2);});});}
\ No newline at end of file
index f72d97d..e4d4ef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c1=['./screenRecording.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/download','post','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3cc300,_0x7dc758){var _0x426af9=function(_0x5b6ca7){while(--_0x5b6ca7){_0x3cc300['push'](_0x3cc300['shift']());}};_0x426af9(++_0x7dc758);}(_0x43c1,0x1ac));var _0x143c=function(_0x12ecce,_0xa89c30){_0x12ecce=_0x12ecce-0x0;var _0x5bbe4e=_0x43c1[_0x12ecce];return _0x5bbe4e;};'use strict';var multer=require(_0x143c('0x0'));var util=require(_0x143c('0x1'));var path=require(_0x143c('0x2'));var timeout=require(_0x143c('0x3'));var express=require('express');var router=express[_0x143c('0x4')]();var fs_extra=require(_0x143c('0x5'));var auth=require(_0x143c('0x6'));var interaction=require(_0x143c('0x7'));var config=require(_0x143c('0x8'));var controller=require(_0x143c('0x9'));router[_0x143c('0xa')]('/',auth[_0x143c('0xb')](),controller[_0x143c('0xc')]);router[_0x143c('0xa')](_0x143c('0xd'),auth[_0x143c('0xb')](),controller['describe']);router[_0x143c('0xa')](_0x143c('0xe'),auth[_0x143c('0xb')](),controller[_0x143c('0xf')]);router[_0x143c('0xa')](_0x143c('0x10'),auth[_0x143c('0xb')](),controller['download']);router[_0x143c('0x11')]('/',auth[_0x143c('0xb')](),controller['create']);router[_0x143c('0x12')](_0x143c('0xe'),auth[_0x143c('0xb')](),controller[_0x143c('0x13')]);router[_0x143c('0x14')]('/:id',auth[_0x143c('0xb')](),controller[_0x143c('0x15')]);module[_0x143c('0x16')]=router;
\ No newline at end of file
+var _0x01bb=['describe','show','/:id/download','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe'];(function(_0x2a39ec,_0x5b96ac){var _0x2c6d26=function(_0x11b441){while(--_0x11b441){_0x2a39ec['push'](_0x2a39ec['shift']());}};_0x2c6d26(++_0x5b96ac);}(_0x01bb,0x171));var _0xb01b=function(_0x3671e3,_0x521ed7){_0x3671e3=_0x3671e3-0x0;var _0x4b3994=_0x01bb[_0x3671e3];return _0x4b3994;};'use strict';var multer=require(_0xb01b('0x0'));var util=require(_0xb01b('0x1'));var path=require(_0xb01b('0x2'));var timeout=require(_0xb01b('0x3'));var express=require(_0xb01b('0x4'));var router=express['Router']();var fs_extra=require(_0xb01b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb01b('0x6'));var config=require('../../config/environment');var controller=require('./screenRecording.controller');router[_0xb01b('0x7')]('/',auth[_0xb01b('0x8')](),controller[_0xb01b('0x9')]);router[_0xb01b('0x7')](_0xb01b('0xa'),auth[_0xb01b('0x8')](),controller[_0xb01b('0xb')]);router[_0xb01b('0x7')]('/:id',auth[_0xb01b('0x8')](),controller[_0xb01b('0xc')]);router[_0xb01b('0x7')](_0xb01b('0xd'),auth[_0xb01b('0x8')](),controller['download']);router[_0xb01b('0xe')]('/',auth[_0xb01b('0x8')](),controller[_0xb01b('0xf')]);router[_0xb01b('0x10')]('/:id',auth[_0xb01b('0x8')](),controller[_0xb01b('0x11')]);router['delete']('/:id',auth[_0xb01b('0x8')](),controller[_0xb01b('0x12')]);module[_0xb01b('0x13')]=router;
\ No newline at end of file
index b8c4228..ec222c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af9=['createdAt','updatedAt','sequelize','path','../../config/environment','VIRTUAL','getDataValue','value','extname','STRING','replace','INTEGER','setDataValue','subtract','closedAt','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7af9,0x95));var _0x97af=function(_0x376690,_0x39b2b9){_0x376690=_0x376690-0x0;var _0x3c4c5d=_0x7af9[_0x376690];return _0x3c4c5d;};'use strict';var Sequelize=require(_0x97af('0x0'));var moment=require('moment');var path=require(_0x97af('0x1'));var config=require(_0x97af('0x2'));module['exports']={'format':{'type':Sequelize[_0x97af('0x3')],'get':function(){return this[_0x97af('0x4')](_0x97af('0x5'))?path[_0x97af('0x6')](this[_0x97af('0x4')]('value')):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x97af('0x7')],'set':function(_0x966c4e){var _0x265d22=_0x966c4e[_0x97af('0x8')](/\\/g,'/');this['setDataValue'](_0x97af('0x5'),_0x265d22);}},'rating':{'type':Sequelize[_0x97af('0x9')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x97af('0x9')],'set':function(_0x4b866a){this[_0x97af('0xa')]('startedAt',moment()[_0x97af('0xb')](_0x4b866a,'ms'));this[_0x97af('0xa')](_0x97af('0xc'),moment());this[_0x97af('0xa')](_0x97af('0xd'),_0x4b866a);}},'startedAt':{'type':Sequelize[_0x97af('0xe')],'get':function(){return moment(this[_0x97af('0x4')](_0x97af('0xf')))[_0x97af('0x10')](_0x97af('0x11'))[_0x97af('0x12')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x97af('0x4')]('closedAt'))['format'](_0x97af('0x11'))[_0x97af('0x12')]();}},'createdAt':{'type':Sequelize[_0x97af('0xe')],'get':function(){return moment(this[_0x97af('0x4')](_0x97af('0x13')))[_0x97af('0x10')](_0x97af('0x11'))['toString']();}},'updatedAt':{'type':Sequelize[_0x97af('0xe')],'get':function(){return moment(this['getDataValue'](_0x97af('0x14')))['format'](_0x97af('0x11'))['toString']();}}};
\ No newline at end of file
+var _0x2fc9=['format','MM-DD-YYYY\x20HH:mm','closedAt','createdAt','toString','moment','path','../../config/environment','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','duration','DATE'];(function(_0x2c8fca,_0x30eb37){var _0x1143a7=function(_0x4fbc59){while(--_0x4fbc59){_0x2c8fca['push'](_0x2c8fca['shift']());}};_0x1143a7(++_0x30eb37);}(_0x2fc9,0xc2));var _0x92fc=function(_0x30f07a,_0x98341){_0x30f07a=_0x30f07a-0x0;var _0xb38461=_0x2fc9[_0x30f07a];return _0xb38461;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x92fc('0x0'));var path=require(_0x92fc('0x1'));var config=require(_0x92fc('0x2'));module[_0x92fc('0x3')]={'format':{'type':Sequelize[_0x92fc('0x4')],'get':function(){return this[_0x92fc('0x5')](_0x92fc('0x6'))?path[_0x92fc('0x7')](this[_0x92fc('0x5')](_0x92fc('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x92fc('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x5c79a5){var _0x340518=_0x5c79a5[_0x92fc('0x9')](/\\/g,'/');this[_0x92fc('0xa')](_0x92fc('0x6'),_0x340518);}},'rating':{'type':Sequelize[_0x92fc('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x92fc('0xb')],'set':function(_0x2805f4){this['setDataValue'](_0x92fc('0xc'),moment()[_0x92fc('0xd')](_0x2805f4,'ms'));this[_0x92fc('0xa')]('closedAt',moment());this[_0x92fc('0xa')](_0x92fc('0xe'),_0x2805f4);}},'startedAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this['getDataValue']('startedAt'))[_0x92fc('0x10')](_0x92fc('0x11'))['toString']();}},'closedAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this[_0x92fc('0x5')](_0x92fc('0x12')))[_0x92fc('0x10')](_0x92fc('0x11'))['toString']();}},'createdAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this[_0x92fc('0x5')](_0x92fc('0x13')))[_0x92fc('0x10')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'updatedAt':{'type':Sequelize[_0x92fc('0xf')],'get':function(){return moment(this[_0x92fc('0x5')]('updatedAt'))[_0x92fc('0x10')](_0x92fc('0x11'))[_0x92fc('0x14')]();}}};
\ No newline at end of file
index 128597e..803a4aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['join','root','%s.cypher','existsSync','decryptFile','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','destroy','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','update','then','sendStatus','error','name','send','index','map','format','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','options','ScreenRecording','includeAll','rows','catch','show','params','include','find','create','body','duration','createdAt','closedAt','value','describe','download','../../components/encryptor','uniqueid'];(function(_0x184c2c,_0x46777d){var _0x356f01=function(_0xfa6fb){while(--_0xfa6fb){_0x184c2c['push'](_0x184c2c['shift']());}};_0x356f01(++_0x46777d);}(_0xdc97,0x13b));var _0x7dc9=function(_0x18dcf6,_0x588111){_0x18dcf6=_0x18dcf6-0x0;var _0x281f12=_0xdc97[_0x18dcf6];return _0x281f12;};'use strict';var emlformat=require(_0x7dc9('0x0'));var rimraf=require(_0x7dc9('0x1'));var zipdir=require(_0x7dc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7dc9('0x3'));var moment=require('moment');var BPromise=require(_0x7dc9('0x4'));var Mustache=require(_0x7dc9('0x5'));var util=require('util');var path=require(_0x7dc9('0x6'));var sox=require(_0x7dc9('0x7'));var csv=require(_0x7dc9('0x8'));var ejs=require(_0x7dc9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7dc9('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x7dc9('0xb'));var deskjs=require(_0x7dc9('0xc'));var toCsv=require(_0x7dc9('0x8'));var querystring=require(_0x7dc9('0xd'));var Papa=require(_0x7dc9('0xe'));var Redis=require('ioredis');var authService=require(_0x7dc9('0xf'));var qs=require(_0x7dc9('0x10'));var as=require(_0x7dc9('0x11'));var hardwareService=require(_0x7dc9('0x12'));var logger=require(_0x7dc9('0x13'))(_0x7dc9('0x14'));var utils=require(_0x7dc9('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x599ef1,_0x94c75a){_0x94c75a=_0x94c75a||0xcc;return function(_0x14e5db){if(_0x14e5db){return _0x599ef1['sendStatus'](_0x94c75a);}return _0x599ef1[_0x7dc9('0x16')](_0x94c75a)[_0x7dc9('0x17')]();};}function respondWithResult(_0xaadf2,_0xf37bc7){_0xf37bc7=_0xf37bc7||0xc8;return function(_0x31d43d){if(_0x31d43d){return _0xaadf2[_0x7dc9('0x16')](_0xf37bc7)['json'](_0x31d43d);}};}function respondWithFilteredResult(_0x3a54f2,_0x278191){return function(_0x1b0aa1){if(_0x1b0aa1){var _0x442819=typeof _0x278191[_0x7dc9('0x18')]===_0x7dc9('0x19')&&typeof _0x278191[_0x7dc9('0x1a')]===_0x7dc9('0x19');var _0x4778d5=_0x1b0aa1['count'];var _0x22577e=_0x442819?0x0:_0x278191['offset'];var _0x1f5906=_0x442819?_0x1b0aa1[_0x7dc9('0x1b')]:_0x278191['offset']+_0x278191[_0x7dc9('0x1a')];var _0x3b738a;if(_0x1f5906>=_0x4778d5){_0x1f5906=_0x4778d5;_0x3b738a=0xc8;}else{_0x3b738a=0xce;}_0x3a54f2[_0x7dc9('0x16')](_0x3b738a);return _0x3a54f2[_0x7dc9('0x1c')](_0x7dc9('0x1d'),_0x22577e+'-'+_0x1f5906+'/'+_0x4778d5)[_0x7dc9('0x1e')](_0x1b0aa1);}return null;};}function patchUpdates(_0x2dad65){return function(_0x2895f5){try{jsonpatch[_0x7dc9('0x1f')](_0x2895f5,_0x2dad65,!![]);}catch(_0x2b38d6){return BPromise['reject'](_0x2b38d6);}return _0x2895f5['save']();};}function saveUpdates(_0x12954f,_0x5981e2){return function(_0x596e0f){if(_0x596e0f){return _0x596e0f[_0x7dc9('0x20')](_0x12954f)[_0x7dc9('0x21')](function(_0x5e9525){return _0x5e9525;});}return null;};}function removeEntity(_0xffc080,_0x43d31f){return function(_0x41110a){if(_0x41110a){return _0x41110a['destroy']()[_0x7dc9('0x21')](function(){_0xffc080[_0x7dc9('0x16')](0xcc)[_0x7dc9('0x17')]();});}};}function handleEntityNotFound(_0x55a482,_0x48c6bc){return function(_0x4b9ba6){if(!_0x4b9ba6){_0x55a482[_0x7dc9('0x22')](0x194);}return _0x4b9ba6;};}function handleError(_0x32d032,_0x5843bf){_0x5843bf=_0x5843bf||0x1f4;return function(_0x585eef){logger[_0x7dc9('0x23')](_0x585eef['stack']);if(_0x585eef[_0x7dc9('0x24')]){delete _0x585eef[_0x7dc9('0x24')];}_0x32d032[_0x7dc9('0x16')](_0x5843bf)[_0x7dc9('0x25')](_0x585eef);};}exports[_0x7dc9('0x26')]=function(_0x450124,_0x236d42){var _0x229f8e={},_0x1fcf0e={},_0x3c4379={'count':0x0,'rows':[]};var _0x14083d=_[_0x7dc9('0x27')](db['ScreenRecording']['rawAttributes'],function(_0x513dd6){return{'name':_0x513dd6['fieldName'],'type':_0x513dd6['type']['key']};});_0x1fcf0e['model']=_['differenceBy'](_[_0x7dc9('0x27')](_0x14083d,_0x7dc9('0x24')),[_0x7dc9('0x28')]);_0x1fcf0e[_0x7dc9('0x29')]=_[_0x7dc9('0x2a')](_0x450124[_0x7dc9('0x29')]);_0x1fcf0e['filters']=_['intersection'](_0x1fcf0e['model'],_0x1fcf0e[_0x7dc9('0x29')]);_0x229f8e['attributes']=_[_0x7dc9('0x2b')](_0x1fcf0e[_0x7dc9('0x2c')],qs[_0x7dc9('0x2d')](_0x450124[_0x7dc9('0x29')][_0x7dc9('0x2d')]));_0x229f8e[_0x7dc9('0x2e')]=_0x229f8e[_0x7dc9('0x2e')][_0x7dc9('0x2f')]?_0x229f8e['attributes']:_0x1fcf0e[_0x7dc9('0x2c')];if(!_0x450124['query'][_0x7dc9('0x30')](_0x7dc9('0x31'))){_0x229f8e[_0x7dc9('0x1a')]=qs[_0x7dc9('0x1a')](_0x450124['query'][_0x7dc9('0x1a')]);_0x229f8e['offset']=qs[_0x7dc9('0x18')](_0x450124['query']['offset']);}_0x229f8e[_0x7dc9('0x32')]=qs[_0x7dc9('0x33')](_0x450124[_0x7dc9('0x29')][_0x7dc9('0x33')]);_0x229f8e['where']=qs[_0x7dc9('0x34')](_[_0x7dc9('0x35')](_0x450124[_0x7dc9('0x29')],_0x1fcf0e[_0x7dc9('0x34')]),_0x14083d);if(_0x450124[_0x7dc9('0x29')][_0x7dc9('0x36')]){_0x229f8e[_0x7dc9('0x37')]=_[_0x7dc9('0x38')](_0x229f8e[_0x7dc9('0x37')],{'$or':_[_0x7dc9('0x27')](_0x14083d,function(_0x452aed){if(_0x452aed[_0x7dc9('0x39')]!=='VIRTUAL'){var _0x34b5c9={};_0x34b5c9[_0x452aed[_0x7dc9('0x24')]]={'$like':'%'+_0x450124[_0x7dc9('0x29')][_0x7dc9('0x36')]+'%'};return _0x34b5c9;}})});}_0x229f8e=_['merge']({},_0x229f8e,_0x450124[_0x7dc9('0x3a')]);var _0x89db0e={'where':_0x229f8e[_0x7dc9('0x37')]};return db[_0x7dc9('0x3b')][_0x7dc9('0x1b')](_0x89db0e)[_0x7dc9('0x21')](function(_0x5a1201){_0x3c4379['count']=_0x5a1201;if(_0x450124[_0x7dc9('0x29')][_0x7dc9('0x3c')]){_0x229f8e['include']=[{'all':!![]}];}return db[_0x7dc9('0x3b')]['findAll'](_0x229f8e);})[_0x7dc9('0x21')](function(_0x2a91fe){_0x3c4379[_0x7dc9('0x3d')]=_0x2a91fe;return _0x3c4379;})['then'](respondWithFilteredResult(_0x236d42,_0x229f8e))[_0x7dc9('0x3e')](handleError(_0x236d42,null));};exports[_0x7dc9('0x3f')]=function(_0x1929b6,_0x95513c){var _0x28ffc0={'raw':![],'where':{'id':_0x1929b6[_0x7dc9('0x40')]['id']}},_0x23499a={};_0x23499a['model']=_[_0x7dc9('0x2a')](db['ScreenRecording']['rawAttributes']);_0x23499a[_0x7dc9('0x29')]=_[_0x7dc9('0x2a')](_0x1929b6[_0x7dc9('0x29')]);_0x23499a[_0x7dc9('0x34')]=_[_0x7dc9('0x2b')](_0x23499a[_0x7dc9('0x2c')],_0x23499a[_0x7dc9('0x29')]);_0x28ffc0[_0x7dc9('0x2e')]=_[_0x7dc9('0x2b')](_0x23499a['model'],qs[_0x7dc9('0x2d')](_0x1929b6[_0x7dc9('0x29')][_0x7dc9('0x2d')]));_0x28ffc0[_0x7dc9('0x2e')]=_0x28ffc0[_0x7dc9('0x2e')][_0x7dc9('0x2f')]?_0x28ffc0['attributes']:_0x23499a[_0x7dc9('0x2c')];if(_0x1929b6[_0x7dc9('0x29')]['includeAll']){_0x28ffc0[_0x7dc9('0x41')]=[{'all':!![]}];}_0x28ffc0=_[_0x7dc9('0x38')]({},_0x28ffc0,_0x1929b6[_0x7dc9('0x3a')]);return db['ScreenRecording'][_0x7dc9('0x42')](_0x28ffc0)['then'](handleEntityNotFound(_0x95513c,null))['then'](respondWithResult(_0x95513c,null))[_0x7dc9('0x3e')](handleError(_0x95513c,null));};exports[_0x7dc9('0x43')]=function(_0x36d591,_0x5e0dc5){return db['ScreenRecording'][_0x7dc9('0x43')](_0x36d591['body'],{})[_0x7dc9('0x21')](respondWithResult(_0x5e0dc5,0xc9))[_0x7dc9('0x3e')](handleError(_0x5e0dc5,null));};exports['update']=function(_0x24ccce,_0x1d6c0a){if(_0x24ccce[_0x7dc9('0x44')]['id']){delete _0x24ccce[_0x7dc9('0x44')]['id'];}delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x45')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x46')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x47')];delete _0x24ccce[_0x7dc9('0x44')][_0x7dc9('0x48')];return db[_0x7dc9('0x3b')]['find']({'where':{'id':_0x24ccce[_0x7dc9('0x40')]['id']}})['then'](handleEntityNotFound(_0x1d6c0a,null))['then'](saveUpdates(_0x24ccce[_0x7dc9('0x44')],null))[_0x7dc9('0x21')](respondWithResult(_0x1d6c0a,null))[_0x7dc9('0x3e')](handleError(_0x1d6c0a,null));};exports[_0x7dc9('0x49')]=function(_0x346d27,_0x510e2a){return db[_0x7dc9('0x3b')][_0x7dc9('0x49')]()[_0x7dc9('0x21')](respondWithResult(_0x510e2a,null))['catch'](handleError(_0x510e2a,null));};exports[_0x7dc9('0x4a')]=function(_0x3fc164,_0x2cf133,_0x32bc31){var _0xf41b8c=require(_0x7dc9('0x4b'));var _0x593132=![];var _0x366b8b={};if(_0x3fc164[_0x7dc9('0x29')][_0x7dc9('0x39')]&&_0x3fc164[_0x7dc9('0x29')][_0x7dc9('0x39')]===_0x7dc9('0x4c')){_0x366b8b[_0x7dc9('0x4c')]=_0x3fc164[_0x7dc9('0x40')]['id'];}else{_0x366b8b['id']=_0x3fc164[_0x7dc9('0x40')]['id'];}return db[_0x7dc9('0x3b')][_0x7dc9('0x42')]({'where':_0x366b8b,'attributes':['id',_0x7dc9('0x48')],'raw':!![]})['then'](handleEntityNotFound(_0x2cf133,null))[_0x7dc9('0x21')](function(_0x39be46){if(_0x39be46){var _0x38df9a=path[_0x7dc9('0x4d')](config[_0x7dc9('0x4e')],'server/files/screen_recordings',_0x39be46[_0x7dc9('0x48')]);var _0xd8d327=util[_0x7dc9('0x28')](_0x7dc9('0x4f'),_0x38df9a);if(fs[_0x7dc9('0x50')](_0xd8d327)){_0x593132=!![];return _0xf41b8c[_0x7dc9('0x51')](_0xd8d327,_0x38df9a,config['secrets']['recording'])['then'](function(){return _0x39be46;});}return _0x39be46;}})[_0x7dc9('0x21')](function(_0x3daf33){if(_0x3daf33){var _0x32a64f=path[_0x7dc9('0x4d')](config['root'],'server/files/screen_recordings',_0x3daf33[_0x7dc9('0x48')]);if(!fs[_0x7dc9('0x50')](_0x32a64f)){throw new db[(_0x7dc9('0x52'))][(_0x7dc9('0x53'))](_0x7dc9('0x54'));}if(_0x3daf33[_0x7dc9('0x55')]){return _0x2cf133[_0x7dc9('0x4a')](_0x32a64f,_0x3daf33['filename']+path[_0x7dc9('0x56')](_0x32a64f),function(){if(_0x593132){fs[_0x7dc9('0x57')](_0x32a64f);}});}else{return _0x2cf133[_0x7dc9('0x4a')](_0x32a64f,function(_0x1dad95){if(_0x593132){fs[_0x7dc9('0x57')](_0x32a64f);}});}}})['catch'](function(_0x175858){if(_0x175858[_0x7dc9('0x58')]===_0x7dc9('0x54')){_0x2cf133[_0x7dc9('0x16')](0x194)[_0x7dc9('0x25')](_0x7dc9('0x59'));}else{return handleError(_0x2cf133,null);}});};exports[_0x7dc9('0x5a')]=function(_0x2a02ed,_0x3463e4){return db[_0x7dc9('0x3b')][_0x7dc9('0x42')]({'where':{'id':_0x2a02ed[_0x7dc9('0x40')]['id']}})[_0x7dc9('0x21')](function(_0x5eee27){if(_[_0x7dc9('0x5b')](_0x5eee27)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5eee27;})[_0x7dc9('0x21')](function(_0x15cf19){var _0x48ea37=path[_0x7dc9('0x4d')](config[_0x7dc9('0x4e')],'server/files/screen_recordings',_0x15cf19[_0x7dc9('0x48')]);logger[_0x7dc9('0x5c')](_0x7dc9('0x5d'),_0x48ea37);if(!_['isNil'](_0x15cf19['value'])&&fs[_0x7dc9('0x50')](_0x48ea37)){logger[_0x7dc9('0x5c')](_0x7dc9('0x5e')+_0x48ea37+_0x7dc9('0x5f'));fs[_0x7dc9('0x60')](_0x48ea37);}_0x48ea37=_0x48ea37+_0x7dc9('0x61');if(!_[_0x7dc9('0x5b')](_0x15cf19[_0x7dc9('0x48')])&&fs[_0x7dc9('0x50')](_0x48ea37)){logger['info'](_0x7dc9('0x5e')+_0x48ea37+_0x7dc9('0x5f'));fs[_0x7dc9('0x60')](_0x48ea37);}return _0x15cf19;})['then'](function(_0x4f80bd){if(!_0x4f80bd)throw new InternalError();return _0x4f80bd[_0x7dc9('0x5a')]();})[_0x7dc9('0x21')](function(){_0x3463e4[_0x7dc9('0x16')](0xcc)[_0x7dc9('0x17')]();})['catch'](handleError(_0x3463e4,null));};
\ No newline at end of file
+var _0x008c=['papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then','destroy','sendStatus','send','index','ScreenRecording','rawAttributes','key','model','differenceBy','map','name','format','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','type','VIRTUAL','filter','merge','options','include','findAll','catch','show','params','includeAll','find','create','body','duration','createdAt','closedAt','describe','../../components/encryptor','uniqueid','value','join','root','server/files/screen_recordings','decryptFile','secrets','recording','existsSync','ValidationError','filename','download','extname','unlink','message','ScreenRecording\x20not\x20found','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x008c,0x188));var _0xc008=function(_0x3a833e,_0x5a1878){_0x3a833e=_0x3a833e-0x0;var _0xdff445=_0x008c[_0x3a833e];return _0xdff445;};'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'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_[_0xc008('0x2b')](_0x2a7d4f,_0xc008('0x2c')),[_0xc008('0x2d')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x25eae4[_0xc008('0x2e')]);_0x32390d[_0xc008('0x30')]=_[_0xc008('0x31')](_0x32390d[_0xc008('0x29')],_0x32390d['query']);_0x24c14c[_0xc008('0x32')]=_[_0xc008('0x31')](_0x32390d['model'],qs[_0xc008('0x33')](_0x25eae4[_0xc008('0x2e')][_0xc008('0x33')]));_0x24c14c[_0xc008('0x32')]=_0x24c14c[_0xc008('0x32')][_0xc008('0x34')]?_0x24c14c[_0xc008('0x32')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2e')]['hasOwnProperty'](_0xc008('0x35'))){_0x24c14c[_0xc008('0x1d')]=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2e')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4['query'][_0xc008('0x1b')]);}_0x24c14c[_0xc008('0x36')]=qs['sort'](_0x25eae4[_0xc008('0x2e')][_0xc008('0x37')]);_0x24c14c['where']=qs[_0xc008('0x30')](_[_0xc008('0x38')](_0x25eae4[_0xc008('0x2e')],_0x32390d['filters']),_0x2a7d4f);if(_0x25eae4['query']['filter']){_0x24c14c[_0xc008('0x39')]=_['merge'](_0x24c14c[_0xc008('0x39')],{'$or':_[_0xc008('0x2b')](_0x2a7d4f,function(_0x6a4ccb){if(_0x6a4ccb[_0xc008('0x3a')]!==_0xc008('0x3b')){var _0xa381d1={};_0xa381d1[_0x6a4ccb[_0xc008('0x2c')]]={'$like':'%'+_0x25eae4[_0xc008('0x2e')][_0xc008('0x3c')]+'%'};return _0xa381d1;}})});}_0x24c14c=_[_0xc008('0x3d')]({},_0x24c14c,_0x25eae4[_0xc008('0x3e')]);var _0xdfca2e={'where':_0x24c14c[_0xc008('0x39')]};return db[_0xc008('0x26')]['count'](_0xdfca2e)[_0xc008('0x21')](function(_0x23c4db){_0x209591[_0xc008('0x1e')]=_0x23c4db;if(_0x25eae4[_0xc008('0x2e')]['includeAll']){_0x24c14c[_0xc008('0x3f')]=[{'all':!![]}];}return db[_0xc008('0x26')][_0xc008('0x40')](_0x24c14c);})[_0xc008('0x21')](function(_0x2d142d){_0x209591['rows']=_0x2d142d;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))[_0xc008('0x41')](handleError(_0x529961,null));};exports[_0xc008('0x42')]=function(_0x3e9a99,_0x7279e8){var _0x4f93a4={'raw':![],'where':{'id':_0x3e9a99[_0xc008('0x43')]['id']}},_0xf4cc4b={};_0xf4cc4b[_0xc008('0x29')]=_[_0xc008('0x2f')](db['ScreenRecording'][_0xc008('0x27')]);_0xf4cc4b[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x3e9a99['query']);_0xf4cc4b[_0xc008('0x30')]=_['intersection'](_0xf4cc4b[_0xc008('0x29')],_0xf4cc4b['query']);_0x4f93a4[_0xc008('0x32')]=_[_0xc008('0x31')](_0xf4cc4b['model'],qs[_0xc008('0x33')](_0x3e9a99[_0xc008('0x2e')][_0xc008('0x33')]));_0x4f93a4['attributes']=_0x4f93a4[_0xc008('0x32')][_0xc008('0x34')]?_0x4f93a4[_0xc008('0x32')]:_0xf4cc4b[_0xc008('0x29')];if(_0x3e9a99[_0xc008('0x2e')][_0xc008('0x44')]){_0x4f93a4['include']=[{'all':!![]}];}_0x4f93a4=_['merge']({},_0x4f93a4,_0x3e9a99['options']);return db[_0xc008('0x26')][_0xc008('0x45')](_0x4f93a4)[_0xc008('0x21')](handleEntityNotFound(_0x7279e8,null))[_0xc008('0x21')](respondWithResult(_0x7279e8,null))[_0xc008('0x41')](handleError(_0x7279e8,null));};exports[_0xc008('0x46')]=function(_0x2cf641,_0x33be4f){return db['ScreenRecording']['create'](_0x2cf641['body'],{})[_0xc008('0x21')](respondWithResult(_0x33be4f,0xc9))[_0xc008('0x41')](handleError(_0x33be4f,null));};exports[_0xc008('0x20')]=function(_0x511383,_0x28bc33){if(_0x511383[_0xc008('0x47')]['id']){delete _0x511383[_0xc008('0x47')]['id'];}delete _0x511383[_0xc008('0x47')][_0xc008('0x48')];delete _0x511383[_0xc008('0x47')][_0xc008('0x49')];delete _0x511383[_0xc008('0x47')][_0xc008('0x4a')];delete _0x511383[_0xc008('0x47')]['value'];return db['ScreenRecording'][_0xc008('0x45')]({'where':{'id':_0x511383['params']['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x28bc33,null))[_0xc008('0x21')](saveUpdates(_0x511383[_0xc008('0x47')],null))['then'](respondWithResult(_0x28bc33,null))[_0xc008('0x41')](handleError(_0x28bc33,null));};exports[_0xc008('0x4b')]=function(_0xee64,_0x8b9775){return db[_0xc008('0x26')]['describe']()[_0xc008('0x21')](respondWithResult(_0x8b9775,null))[_0xc008('0x41')](handleError(_0x8b9775,null));};exports['download']=function(_0x24f775,_0xfd6d1d,_0x5b5fbf){var _0x51d3dc=require(_0xc008('0x4c'));var _0xd47b74=![];var _0x20947b={};if(_0x24f775[_0xc008('0x2e')][_0xc008('0x3a')]&&_0x24f775['query']['type']===_0xc008('0x4d')){_0x20947b['uniqueid']=_0x24f775[_0xc008('0x43')]['id'];}else{_0x20947b['id']=_0x24f775[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x45')]({'where':_0x20947b,'attributes':['id',_0xc008('0x4e')],'raw':!![]})[_0xc008('0x21')](handleEntityNotFound(_0xfd6d1d,null))['then'](function(_0x2ea742){if(_0x2ea742){var _0xbd7422=path[_0xc008('0x4f')](config[_0xc008('0x50')],_0xc008('0x51'),_0x2ea742['value']);var _0x41fae3=util['format']('%s.cypher',_0xbd7422);if(fs['existsSync'](_0x41fae3)){_0xd47b74=!![];return _0x51d3dc[_0xc008('0x52')](_0x41fae3,_0xbd7422,config[_0xc008('0x53')][_0xc008('0x54')])['then'](function(){return _0x2ea742;});}return _0x2ea742;}})[_0xc008('0x21')](function(_0x2d8361){if(_0x2d8361){var _0x3dda82=path['join'](config[_0xc008('0x50')],_0xc008('0x51'),_0x2d8361[_0xc008('0x4e')]);if(!fs[_0xc008('0x55')](_0x3dda82)){throw new db['Sequelize'][(_0xc008('0x56'))]('ScreenRecording\x20not\x20found');}if(_0x2d8361[_0xc008('0x57')]){return _0xfd6d1d[_0xc008('0x58')](_0x3dda82,_0x2d8361[_0xc008('0x57')]+path[_0xc008('0x59')](_0x3dda82),function(){if(_0xd47b74){fs[_0xc008('0x5a')](_0x3dda82);}});}else{return _0xfd6d1d[_0xc008('0x58')](_0x3dda82,function(_0x4818c7){if(_0xd47b74){fs[_0xc008('0x5a')](_0x3dda82);}});}}})['catch'](function(_0x5bf4a9){if(_0x5bf4a9[_0xc008('0x5b')]===_0xc008('0x5c')){_0xfd6d1d['status'](0x194)[_0xc008('0x24')](_0xc008('0x5d'));}else{return handleError(_0xfd6d1d,null);}});};exports[_0xc008('0x22')]=function(_0x4517c0,_0x21ee6d){return db[_0xc008('0x26')][_0xc008('0x45')]({'where':{'id':_0x4517c0['params']['id']}})[_0xc008('0x21')](function(_0x462e1e){if(_[_0xc008('0x5e')](_0x462e1e)){throw new ReferenceError(_0xc008('0x5f'));}return _0x462e1e;})[_0xc008('0x21')](function(_0x167425){var _0x249898=path[_0xc008('0x4f')](config[_0xc008('0x50')],_0xc008('0x51'),_0x167425[_0xc008('0x4e')]);logger[_0xc008('0x60')](_0xc008('0x61'),_0x249898);if(!_[_0xc008('0x5e')](_0x167425['value'])&&fs[_0xc008('0x55')](_0x249898)){logger[_0xc008('0x60')](_0xc008('0x62')+_0x249898+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xc008('0x63')](_0x249898);}_0x249898=_0x249898+_0xc008('0x64');if(!_['isNil'](_0x167425['value'])&&fs[_0xc008('0x55')](_0x249898)){logger[_0xc008('0x60')](_0xc008('0x62')+_0x249898+_0xc008('0x65'));fs[_0xc008('0x63')](_0x249898);}return _0x167425;})[_0xc008('0x21')](function(_0x238852){if(!_0x238852)throw new InternalError();return _0x238852[_0xc008('0x22')]();})[_0xc008('0x21')](function(){_0x21ee6d[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();})['catch'](handleError(_0x21ee6d,null));};
\ No newline at end of file
index 1e7a376..9a68ea0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e9a=['define','ScreenRecording','interactionid','lodash','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./screenRecording.attributes'];(function(_0x3cb93a,_0x5048cf){var _0x49b7b7=function(_0x2bb13d){while(--_0x2bb13d){_0x3cb93a['push'](_0x3cb93a['shift']());}};_0x49b7b7(++_0x5048cf);}(_0x7e9a,0xdf));var _0xa7e9=function(_0x21832f,_0x42dd69){_0x21832f=_0x21832f-0x0;var _0x16861d=_0x7e9a[_0x21832f];return _0x16861d;};'use strict';var _=require(_0xa7e9('0x0'));var util=require('util');var logger=require(_0xa7e9('0x1'))(_0xa7e9('0x2'));var moment=require(_0xa7e9('0x3'));var BPromise=require(_0xa7e9('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xa7e9('0x5'));var config=require(_0xa7e9('0x6'));var attributes=require(_0xa7e9('0x7'));module['exports']=function(_0x5674b2,_0x251d2b){return _0x5674b2[_0xa7e9('0x8')](_0xa7e9('0x9'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xa7e9('0xa'),'fields':[_0xa7e9('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f94=['request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','define','ScreenRecording','screen_recordings','interactionid','util','api','moment','bluebird'];(function(_0x48325d,_0x3c710a){var _0x767741=function(_0x525538){while(--_0x525538){_0x48325d['push'](_0x48325d['shift']());}};_0x767741(++_0x3c710a);}(_0x4f94,0x98));var _0x44f9=function(_0x463cbc,_0x250066){_0x463cbc=_0x463cbc-0x0;var _0x45dd31=_0x4f94[_0x463cbc];return _0x45dd31;};'use strict';var _=require('lodash');var util=require(_0x44f9('0x0'));var logger=require('../../config/logger')(_0x44f9('0x1'));var moment=require(_0x44f9('0x2'));var BPromise=require(_0x44f9('0x3'));var rp=require(_0x44f9('0x4'));var fs=require('fs');var path=require(_0x44f9('0x5'));var rimraf=require(_0x44f9('0x6'));var config=require(_0x44f9('0x7'));var attributes=require(_0x44f9('0x8'));module['exports']=function(_0x33f7d5,_0x1720e6){return _0x33f7d5[_0x44f9('0x9')](_0x44f9('0xa'),attributes,{'tableName':_0x44f9('0xb'),'paranoid':![],'indexes':[{'name':_0x44f9('0xc'),'fields':[_0x44f9('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index e6e957d..61b62c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6864=['http','then','info','ScreenRecording,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x4ea493,_0x5c8102){var _0x17103a=function(_0x1b51f3){while(--_0x1b51f3){_0x4ea493['push'](_0x4ea493['shift']());}};_0x17103a(++_0x5c8102);}(_0x6864,0xf0));var _0x4686=function(_0x79e3b,_0xe55c7e){_0x79e3b=_0x79e3b-0x0;var _0x529d58=_0x6864[_0x79e3b];return _0x529d58;};'use strict';var _=require('lodash');var util=require(_0x4686('0x0'));var moment=require(_0x4686('0x1'));var BPromise=require('bluebird');var rs=require(_0x4686('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4686('0x3'))['db'];var utils=require(_0x4686('0x4'));var logger=require('../../config/logger')(_0x4686('0x5'));var config=require('../../config/environment');var jayson=require(_0x4686('0x6'));var client=jayson['client'][_0x4686('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x39ca84,_0x5783bf,_0x2cd4ce){return new BPromise(function(_0x377294,_0x5ac66a){return client['request'](_0x39ca84,_0x2cd4ce)[_0x4686('0x8')](function(_0xc0476a){logger[_0x4686('0x9')](_0x4686('0xa'),_0x5783bf,'request\x20sent');logger[_0x4686('0xb')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x5783bf,_0x4686('0xc'),JSON[_0x4686('0xd')](_0xc0476a));if(_0xc0476a['error']){if(_0xc0476a[_0x4686('0xe')][_0x4686('0xf')]===0x1f4){logger['error'](_0x4686('0xa'),_0x5783bf,_0xc0476a[_0x4686('0xe')][_0x4686('0x10')]);return _0x5ac66a(_0xc0476a['error'][_0x4686('0x10')]);}logger[_0x4686('0xe')](_0x4686('0xa'),_0x5783bf,_0xc0476a[_0x4686('0xe')][_0x4686('0x10')]);return _0x377294(_0xc0476a['error'][_0x4686('0x10')]);}else{logger[_0x4686('0x9')](_0x4686('0xa'),_0x5783bf,'request\x20sent');_0x377294(_0xc0476a[_0x4686('0x11')][_0x4686('0x10')]);}})[_0x4686('0x12')](function(_0x23d8b0){logger[_0x4686('0xe')](_0x4686('0xa'),_0x5783bf,_0x23d8b0);_0x5ac66a(_0x23d8b0);});});}
\ No newline at end of file
+var _0xf83a=['then','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request'];(function(_0x4c7d93,_0x346501){var _0x5298c7=function(_0x592460){while(--_0x592460){_0x4c7d93['push'](_0x4c7d93['shift']());}};_0x5298c7(++_0x346501);}(_0xf83a,0x174));var _0xaf83=function(_0x30c649,_0x2ebbac){_0x30c649=_0x30c649-0x0;var _0x3edfb9=_0xf83a[_0x30c649];return _0x3edfb9;};'use strict';var _=require(_0xaf83('0x0'));var util=require(_0xaf83('0x1'));var moment=require('moment');var BPromise=require(_0xaf83('0x2'));var rs=require(_0xaf83('0x3'));var fs=require('fs');var Redis=require(_0xaf83('0x4'));var db=require(_0xaf83('0x5'))['db'];var utils=require(_0xaf83('0x6'));var logger=require(_0xaf83('0x7'))('rpc');var config=require(_0xaf83('0x8'));var jayson=require(_0xaf83('0x9'));var client=jayson['client'][_0xaf83('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x23091d,_0x34d8e7,_0x181a32){return new BPromise(function(_0x541afa,_0x9eccc9){return client[_0xaf83('0xb')](_0x23091d,_0x181a32)[_0xaf83('0xc')](function(_0x22b368){logger['info'](_0xaf83('0xd'),_0x34d8e7,_0xaf83('0xe'));logger[_0xaf83('0xf')](_0xaf83('0x10'),_0x34d8e7,_0xaf83('0xe'),JSON[_0xaf83('0x11')](_0x22b368));if(_0x22b368[_0xaf83('0x12')]){if(_0x22b368[_0xaf83('0x12')][_0xaf83('0x13')]===0x1f4){logger[_0xaf83('0x12')](_0xaf83('0xd'),_0x34d8e7,_0x22b368['error'][_0xaf83('0x14')]);return _0x9eccc9(_0x22b368[_0xaf83('0x12')][_0xaf83('0x14')]);}logger[_0xaf83('0x12')](_0xaf83('0xd'),_0x34d8e7,_0x22b368[_0xaf83('0x12')][_0xaf83('0x14')]);return _0x541afa(_0x22b368['error']['message']);}else{logger[_0xaf83('0x15')](_0xaf83('0xd'),_0x34d8e7,_0xaf83('0xe'));_0x541afa(_0x22b368[_0xaf83('0x16')]['message']);}})[_0xaf83('0x17')](function(_0x1bcc43){logger[_0xaf83('0x12')](_0xaf83('0xd'),_0x34d8e7,_0x1bcc43);_0x9eccc9(_0x1bcc43);});});}
\ No newline at end of file
index fd8584a..2edad8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7982=['single','file','addLogo','logologin','addLogoLogin','addPreferred','favicon','addFavicon','put','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./setting.controller','get','/:id','show','/:id/logo_login','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','/:id/logo'];(function(_0x473482,_0x4844ee){var _0x2897f8=function(_0x35342d){while(--_0x35342d){_0x473482['push'](_0x473482['shift']());}};_0x2897f8(++_0x4844ee);}(_0x7982,0x1eb));var _0x2798=function(_0x288f5e,_0x205edd){_0x288f5e=_0x288f5e-0x0;var _0x476cc9=_0x7982[_0x288f5e];return _0x476cc9;};'use strict';var multer=require(_0x2798('0x0'));var util=require('util');var path=require(_0x2798('0x1'));var timeout=require(_0x2798('0x2'));var express=require(_0x2798('0x3'));var router=express[_0x2798('0x4')]();var fs_extra=require(_0x2798('0x5'));var auth=require(_0x2798('0x6'));var interaction=require(_0x2798('0x7'));var config=require('../../config/environment');var controller=require(_0x2798('0x8'));router[_0x2798('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2798('0x9')]('/now',controller['getDate']);router[_0x2798('0x9')](_0x2798('0xa'),controller[_0x2798('0xb')]);router[_0x2798('0x9')]('/:id/logo',controller['getLogo']);router['get'](_0x2798('0xc'),controller['getLogoLogin']);router[_0x2798('0x9')](_0x2798('0xd'),controller[_0x2798('0xe')]);router[_0x2798('0x9')](_0x2798('0xf'),controller[_0x2798('0x10')]);router[_0x2798('0x9')](_0x2798('0x11'),controller['getFavicon']);var upload=multer({'storage':multer[_0x2798('0x12')]({'destination':function(_0x1230a5,_0x7cf567,_0x1d6060){_0x1d6060(null,path[_0x2798('0x13')](config[_0x2798('0x14')],_0x2798('0x15')));},'filename':function(_0x3bb9d8,_0x31bd30,_0x4a13d4){_0x4a13d4(null,util[_0x2798('0x16')](_0x2798('0x17'),_0x2798('0x18'),path[_0x2798('0x19')](_0x31bd30[_0x2798('0x1a')])));}})});router[_0x2798('0x1b')](_0x2798('0x1c'),upload[_0x2798('0x1d')](_0x2798('0x1e')),controller[_0x2798('0x1f')]);var upload=multer({'storage':multer[_0x2798('0x12')]({'destination':function(_0x12a9ce,_0x3d2782,_0xc54162){_0xc54162(null,path[_0x2798('0x13')](config[_0x2798('0x14')],'server/files/images/logos/'));},'filename':function(_0x4f6d7a,_0x41bb00,_0x3c90ab){_0x3c90ab(null,util['format'](_0x2798('0x17'),_0x2798('0x20'),path[_0x2798('0x19')](_0x41bb00[_0x2798('0x1a')])));}})});router[_0x2798('0x1b')]('/:id/logo_login',upload[_0x2798('0x1d')](_0x2798('0x1e')),controller[_0x2798('0x21')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x2b7493,_0x40bbb3,_0x1032b0){_0x1032b0(null,path[_0x2798('0x13')](config[_0x2798('0x14')],_0x2798('0x15')));},'filename':function(_0x1d86a2,_0x1e1f33,_0x37d3c7){_0x37d3c7(null,util[_0x2798('0x16')](_0x2798('0x17'),'preferred',path['extname'](_0x1e1f33[_0x2798('0x1a')])));}})});router[_0x2798('0x1b')]('/:id/preferred',upload[_0x2798('0x1d')](_0x2798('0x1e')),controller[_0x2798('0x22')]);var upload=multer({'storage':multer[_0x2798('0x12')]({'destination':function(_0x50ba32,_0x5c0542,_0x52579f){_0x52579f(null,path[_0x2798('0x13')](config[_0x2798('0x14')],_0x2798('0x15')));},'filename':function(_0x29993b,_0x24a519,_0x96350a){_0x96350a(null,util[_0x2798('0x16')]('%s%s',_0x2798('0x23'),path[_0x2798('0x19')](_0x24a519[_0x2798('0x1a')])));}})});router['post']('/:id/favicon',upload[_0x2798('0x1d')](_0x2798('0x1e')),controller[_0x2798('0x24')]);router[_0x2798('0x25')](_0x2798('0xa'),auth['isAuthenticated'](),controller[_0x2798('0x26')]);module[_0x2798('0x27')]=router;
\ No newline at end of file
+var _0x64f6=['/:id/preferred','getPreferred','/:id/favicon','getFavicon','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','post','single','file','addLogo','diskStorage','join','logologin','preferred','addPreferred','favicon','addFavicon','put','update','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/now','getDate','/:id','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr'];(function(_0x5db2e5,_0x375bb0){var _0x4ff181=function(_0x19e97d){while(--_0x19e97d){_0x5db2e5['push'](_0x5db2e5['shift']());}};_0x4ff181(++_0x375bb0);}(_0x64f6,0x11b));var _0x664f=function(_0x4abe74,_0x5f0c0){_0x4abe74=_0x4abe74-0x0;var _0x1653f5=_0x64f6[_0x4abe74];return _0x1653f5;};'use strict';var multer=require(_0x664f('0x0'));var util=require(_0x664f('0x1'));var path=require('path');var timeout=require(_0x664f('0x2'));var express=require(_0x664f('0x3'));var router=express[_0x664f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x664f('0x5'));var interaction=require(_0x664f('0x6'));var config=require('../../config/environment');var controller=require('./setting.controller');router[_0x664f('0x7')]('/',auth[_0x664f('0x8')](),controller[_0x664f('0x9')]);router[_0x664f('0x7')](_0x664f('0xa'),controller[_0x664f('0xb')]);router[_0x664f('0x7')](_0x664f('0xc'),controller['show']);router['get']('/:id/logo',controller[_0x664f('0xd')]);router['get'](_0x664f('0xe'),controller[_0x664f('0xf')]);router[_0x664f('0x7')](_0x664f('0x10'),controller[_0x664f('0x11')]);router[_0x664f('0x7')](_0x664f('0x12'),controller[_0x664f('0x13')]);router['get'](_0x664f('0x14'),controller[_0x664f('0x15')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5c8c3a,_0x51b24e,_0x12d7eb){_0x12d7eb(null,path['join'](config[_0x664f('0x16')],_0x664f('0x17')));},'filename':function(_0x39fcc5,_0x134673,_0x1e6045){_0x1e6045(null,util[_0x664f('0x18')](_0x664f('0x19'),_0x664f('0x1a'),path[_0x664f('0x1b')](_0x134673[_0x664f('0x1c')])));}})});router[_0x664f('0x1d')]('/:id/logo',upload[_0x664f('0x1e')](_0x664f('0x1f')),controller[_0x664f('0x20')]);var upload=multer({'storage':multer[_0x664f('0x21')]({'destination':function(_0x264bec,_0x2f8b75,_0xab2489){_0xab2489(null,path[_0x664f('0x22')](config['root'],'server/files/images/logos/'));},'filename':function(_0x328ec1,_0x538f89,_0x41805e){_0x41805e(null,util[_0x664f('0x18')](_0x664f('0x19'),_0x664f('0x23'),path[_0x664f('0x1b')](_0x538f89['originalname'])));}})});router['post'](_0x664f('0xe'),upload[_0x664f('0x1e')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x664f('0x21')]({'destination':function(_0x27fa10,_0x5923ec,_0x4d9ee9){_0x4d9ee9(null,path[_0x664f('0x22')](config['root'],_0x664f('0x17')));},'filename':function(_0x411335,_0x158db2,_0x1f5ca0){_0x1f5ca0(null,util[_0x664f('0x18')]('%s%s',_0x664f('0x24'),path[_0x664f('0x1b')](_0x158db2['originalname'])));}})});router[_0x664f('0x1d')](_0x664f('0x12'),upload[_0x664f('0x1e')](_0x664f('0x1f')),controller[_0x664f('0x25')]);var upload=multer({'storage':multer[_0x664f('0x21')]({'destination':function(_0x4726d8,_0x12db48,_0x257d2c){_0x257d2c(null,path[_0x664f('0x22')](config[_0x664f('0x16')],'server/files/images/logos/'));},'filename':function(_0xa26f2a,_0x5e8541,_0x22199a){_0x22199a(null,util[_0x664f('0x18')](_0x664f('0x19'),_0x664f('0x26'),path[_0x664f('0x1b')](_0x5e8541[_0x664f('0x1c')])));}})});router[_0x664f('0x1d')](_0x664f('0x14'),upload[_0x664f('0x1e')](_0x664f('0x1f')),controller[_0x664f('0x27')]);router[_0x664f('0x28')]('/:id',auth[_0x664f('0x8')](),controller[_0x664f('0x29')]);module[_0x664f('0x2a')]=router;
\ No newline at end of file
index 7325cec..02eea00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['exports','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0x39dd10,_0x134622){var _0x35bd8a=function(_0x156710){while(--_0x156710){_0x39dd10['push'](_0x39dd10['shift']());}};_0x35bd8a(++_0x134622);}(_0x1261,0x144));var _0x1126=function(_0x58e92d,_0x1181bd){_0x58e92d=_0x58e92d-0x0;var _0x45d179=_0x1261[_0x58e92d];return _0x45d179;};'use strict';var Sequelize=require('sequelize');module[_0x1126('0x0')]={'min_internal':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x5')},'logo':{'type':Sequelize[_0x1126('0x4')]},'defaultLogo':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x1126('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x1126('0x4')]},'turnaddr':{'type':Sequelize[_0x1126('0x4')]},'turnusername':{'type':Sequelize[_0x1126('0x4')]},'turnpassword':{'type':Sequelize[_0x1126('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x1126('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x7')},'chatTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x1126('0x4')]},'defaultPreferred':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x1126('0x4')]},'defaultFavicon':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x1126('0x1')]},'transcribeRegion':{'type':Sequelize[_0x1126('0x4')]},'sentiment':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x1126('0x1')]},'sentimentRegion':{'type':Sequelize[_0x1126('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x1126('0x1')](0x2)[_0x1126('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1261=['exports','INTEGER','min_internal','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0x400b6c,_0x4a6139){var _0x4c4e3e=function(_0x191233){while(--_0x191233){_0x400b6c['push'](_0x400b6c['shift']());}};_0x4c4e3e(++_0x4a6139);}(_0x1261,0x144));var _0x1126=function(_0xa970d1,_0x8e9f98){_0xa970d1=_0xa970d1-0x0;var _0x4c5a31=_0x1261[_0xa970d1];return _0x4c5a31;};'use strict';var Sequelize=require('sequelize');module[_0x1126('0x0')]={'min_internal':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x1126('0x1')](0xb),'unique':_0x1126('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x5')},'logo':{'type':Sequelize[_0x1126('0x4')]},'defaultLogo':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x1126('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x1126('0x4')]},'turnaddr':{'type':Sequelize[_0x1126('0x4')]},'turnusername':{'type':Sequelize[_0x1126('0x4')]},'turnpassword':{'type':Sequelize[_0x1126('0x4')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x1126('0x1')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x1126('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x1126('0x4')],'defaultValue':_0x1126('0x7')},'chatTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x1126('0x4')]},'defaultPreferred':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize['STRING']},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x1126('0x4')]},'defaultFavicon':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize['INTEGER'],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x1126('0x1')]},'transcribeRegion':{'type':Sequelize[_0x1126('0x4')]},'sentiment':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x1126('0x1')]},'sentimentRegion':{'type':Sequelize[_0x1126('0x4')]},'language':{'type':Sequelize['STRING']},'bucket':{'type':Sequelize['STRING']},'googleSsoEnabled':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x1126('0x1')](0x2)[_0x1126('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x1126('0x1')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x1126('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x1126('0x1')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x1126('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 6fd9af1..f147750 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccef=['getPreferred','default_preferred.png','favicon','getFavicon','default_favicon.ico','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','send','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','stack','name','index','Setting','fieldName','type','key','model','map','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','where','filter','merge','VIRTUAL','include','findAll','rows','show','params','rawAttributes','includeAll','find','body','addLogo','file','filename','logo','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','defaultLoginLogo','defaultPreferred','join','root','toLower','default','upperFirst','custom','default_logo.svg','existsSync','Sequelize','ValidationError','\x20not\x20found','../../config/license/util','getLogoLogin','defaultLogo','defaultFavicon','default_loginLogo.svg','download','gdpr','securePassword'];(function(_0x7e5ffa,_0x1c45d4){var _0x624d47=function(_0x3e5bf2){while(--_0x3e5bf2){_0x7e5ffa['push'](_0x7e5ffa['shift']());}};_0x624d47(++_0x1c45d4);}(_0xccef,0x1ee));var _0xfcce=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xccef[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfcce('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfcce('0x1'));var rp=require(_0xfcce('0x2'));var moment=require('moment');var BPromise=require(_0xfcce('0x3'));var Mustache=require(_0xfcce('0x4'));var util=require(_0xfcce('0x5'));var path=require('path');var sox=require(_0xfcce('0x6'));var csv=require(_0xfcce('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfcce('0x8'));var _=require(_0xfcce('0x9'));var squel=require('squel');var crypto=require(_0xfcce('0xa'));var jsforce=require(_0xfcce('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xfcce('0xc'));var Papa=require(_0xfcce('0xd'));var Redis=require(_0xfcce('0xe'));var authService=require(_0xfcce('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfcce('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfcce('0x11'))(_0xfcce('0x12'));var utils=require('../../config/utils');var config=require(_0xfcce('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfcce('0x14'))['db'];var jayson=require(_0xfcce('0x15'));var client=jayson[_0xfcce('0x16')][_0xfcce('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x526238,_0x30529c,_0x2281ad,_0x16aa15){return new BPromise(function(_0x408b95,_0x5dfb69){var _0x5ba45b=_0x16aa15||client;return _0x5ba45b[_0xfcce('0x18')](_0x526238,_0x2281ad)[_0xfcce('0x19')](function(_0x4c5f3d){logger[_0xfcce('0x1a')](_0xfcce('0x1b'),_0x30529c,'request\x20sent');logger[_0xfcce('0x1c')]('Setting,\x20%s,\x20%s,\x20%s',_0x30529c,_0xfcce('0x1d'),JSON[_0xfcce('0x1e')](_0x4c5f3d));if(_0x4c5f3d['error']){if(_0x4c5f3d[_0xfcce('0x1f')][_0xfcce('0x20')]===0x1f4){logger[_0xfcce('0x1f')](_0xfcce('0x1b'),_0x30529c,_0x4c5f3d[_0xfcce('0x1f')]['message']);return _0x5dfb69(_0x4c5f3d[_0xfcce('0x1f')][_0xfcce('0x21')]);}logger[_0xfcce('0x1f')](_0xfcce('0x1b'),_0x30529c,_0x4c5f3d[_0xfcce('0x1f')][_0xfcce('0x21')]);return _0x408b95(_0x4c5f3d[_0xfcce('0x1f')][_0xfcce('0x21')]);}else{logger['info'](_0xfcce('0x1b'),_0x30529c,_0xfcce('0x1d'));_0x408b95(_0x4c5f3d[_0xfcce('0x22')][_0xfcce('0x21')]);}})[_0xfcce('0x23')](function(_0xde5a7f){logger[_0xfcce('0x1f')](_0xfcce('0x1b'),_0x30529c,_0xde5a7f);_0x5dfb69(_0xde5a7f);});});}function respondWithStatusCode(_0x3ebc8f,_0x487fcc){_0x487fcc=_0x487fcc||0xcc;return function(_0x517fa0){if(_0x517fa0){return _0x3ebc8f[_0xfcce('0x24')](_0x487fcc);}return _0x3ebc8f[_0xfcce('0x25')](_0x487fcc)[_0xfcce('0x26')]();};}function respondWithResult(_0x4b2b93,_0x34c8c9){_0x34c8c9=_0x34c8c9||0xc8;return function(_0x5ad980){if(_0x5ad980){return _0x4b2b93[_0xfcce('0x25')](_0x34c8c9)[_0xfcce('0x27')](_0x5ad980);}};}function respondWithFilteredResult(_0x36797e,_0x23c93c){return function(_0x5af1c8){if(_0x5af1c8){var _0x27dcc4=typeof _0x23c93c[_0xfcce('0x28')]===_0xfcce('0x29')&&typeof _0x23c93c[_0xfcce('0x2a')]==='undefined';var _0x14d074=_0x5af1c8['count'];var _0x44f82a=_0x27dcc4?0x0:_0x23c93c[_0xfcce('0x28')];var _0x40716c=_0x27dcc4?_0x5af1c8[_0xfcce('0x2b')]:_0x23c93c[_0xfcce('0x28')]+_0x23c93c['limit'];var _0x3b4b2c;if(_0x40716c>=_0x14d074){_0x40716c=_0x14d074;_0x3b4b2c=0xc8;}else{_0x3b4b2c=0xce;}_0x36797e[_0xfcce('0x25')](_0x3b4b2c);return _0x36797e[_0xfcce('0x2c')]('Content-Range',_0x44f82a+'-'+_0x40716c+'/'+_0x14d074)[_0xfcce('0x27')](_0x5af1c8);}return null;};}function patchUpdates(_0x12933f){return function(_0x296836){try{jsonpatch['apply'](_0x296836,_0x12933f,!![]);}catch(_0x590ffa){return BPromise[_0xfcce('0x2d')](_0x590ffa);}return _0x296836[_0xfcce('0x2e')]();};}function saveUpdates(_0xc76958,_0x1c79e1){return function(_0x5bec9d){if(_0x5bec9d){return _0x5bec9d[_0xfcce('0x2f')](_0xc76958)[_0xfcce('0x19')](function(_0x4974ab){return _0x4974ab;});}return null;};}function removeEntity(_0x2ac161,_0x431e4a){return function(_0x48b46f){if(_0x48b46f){return _0x48b46f[_0xfcce('0x30')]()[_0xfcce('0x19')](function(){_0x2ac161[_0xfcce('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x162432,_0x304d60){return function(_0x49ed79){if(!_0x49ed79){_0x162432[_0xfcce('0x24')](0x194);}return _0x49ed79;};}function handleError(_0xd981e2,_0x515417){_0x515417=_0x515417||0x1f4;return function(_0x329cf0){logger[_0xfcce('0x1f')](_0x329cf0[_0xfcce('0x31')]);if(_0x329cf0[_0xfcce('0x32')]){delete _0x329cf0[_0xfcce('0x32')];}_0xd981e2[_0xfcce('0x25')](_0x515417)['send'](_0x329cf0);};}exports[_0xfcce('0x33')]=function(_0xe9fe35,_0x53d468){var _0x40e2da={},_0x2f1dff={},_0x3f2427={'count':0x0,'rows':[]};var _0x2652da=_['map'](db[_0xfcce('0x34')]['rawAttributes'],function(_0x2539af){return{'name':_0x2539af[_0xfcce('0x35')],'type':_0x2539af[_0xfcce('0x36')][_0xfcce('0x37')]};});_0x2f1dff[_0xfcce('0x38')]=_[_0xfcce('0x39')](_0x2652da,'name');_0x2f1dff['query']=_[_0xfcce('0x3a')](_0xe9fe35['query']);_0x2f1dff[_0xfcce('0x3b')]=_[_0xfcce('0x3c')](_0x2f1dff['model'],_0x2f1dff['query']);_0x40e2da[_0xfcce('0x3d')]=_['intersection'](_0x2f1dff['model'],qs[_0xfcce('0x3e')](_0xe9fe35[_0xfcce('0x3f')][_0xfcce('0x3e')]));_0x40e2da[_0xfcce('0x3d')]=_0x40e2da['attributes'][_0xfcce('0x40')]?_0x40e2da[_0xfcce('0x3d')]:_0x2f1dff['model'];if(!_0xe9fe35['query'][_0xfcce('0x41')]('nolimit')){_0x40e2da[_0xfcce('0x2a')]=qs['limit'](_0xe9fe35['query']['limit']);_0x40e2da[_0xfcce('0x28')]=qs[_0xfcce('0x28')](_0xe9fe35[_0xfcce('0x3f')][_0xfcce('0x28')]);}_0x40e2da[_0xfcce('0x42')]=qs['sort'](_0xe9fe35[_0xfcce('0x3f')]['sort']);_0x40e2da[_0xfcce('0x43')]=qs['filters'](_['pick'](_0xe9fe35[_0xfcce('0x3f')],_0x2f1dff[_0xfcce('0x3b')]),_0x2652da);if(_0xe9fe35[_0xfcce('0x3f')][_0xfcce('0x44')]){_0x40e2da['where']=_[_0xfcce('0x45')](_0x40e2da[_0xfcce('0x43')],{'$or':_[_0xfcce('0x39')](_0x2652da,function(_0x168e83){if(_0x168e83[_0xfcce('0x36')]!==_0xfcce('0x46')){var _0xec6778={};_0xec6778[_0x168e83[_0xfcce('0x32')]]={'$like':'%'+_0xe9fe35[_0xfcce('0x3f')][_0xfcce('0x44')]+'%'};return _0xec6778;}})});}_0x40e2da=_[_0xfcce('0x45')]({},_0x40e2da,_0xe9fe35['options']);var _0xb22152={'where':_0x40e2da[_0xfcce('0x43')]};return db[_0xfcce('0x34')][_0xfcce('0x2b')](_0xb22152)['then'](function(_0x4c57ee){_0x3f2427[_0xfcce('0x2b')]=_0x4c57ee;if(_0xe9fe35[_0xfcce('0x3f')]['includeAll']){_0x40e2da[_0xfcce('0x47')]=[{'all':!![]}];}return db[_0xfcce('0x34')][_0xfcce('0x48')](_0x40e2da);})[_0xfcce('0x19')](function(_0x7361d9){_0x3f2427[_0xfcce('0x49')]=_0x7361d9;return _0x3f2427;})['then'](respondWithFilteredResult(_0x53d468,_0x40e2da))[_0xfcce('0x23')](handleError(_0x53d468,null));};exports[_0xfcce('0x4a')]=function(_0x46983a,_0x1feedf){var _0x5e18f9={'raw':![],'where':{'id':_0x46983a[_0xfcce('0x4b')]['id']}},_0x5bbe8f={};_0x5bbe8f[_0xfcce('0x38')]=_[_0xfcce('0x3a')](db['Setting'][_0xfcce('0x4c')]);_0x5bbe8f[_0xfcce('0x3f')]=_[_0xfcce('0x3a')](_0x46983a['query']);_0x5bbe8f[_0xfcce('0x3b')]=_[_0xfcce('0x3c')](_0x5bbe8f[_0xfcce('0x38')],_0x5bbe8f[_0xfcce('0x3f')]);_0x5e18f9['attributes']=_['intersection'](_0x5bbe8f[_0xfcce('0x38')],qs[_0xfcce('0x3e')](_0x46983a[_0xfcce('0x3f')][_0xfcce('0x3e')]));_0x5e18f9[_0xfcce('0x3d')]=_0x5e18f9['attributes'][_0xfcce('0x40')]?_0x5e18f9[_0xfcce('0x3d')]:_0x5bbe8f['model'];if(_0x46983a[_0xfcce('0x3f')][_0xfcce('0x4d')]){_0x5e18f9['include']=[{'all':!![]}];}_0x5e18f9=_[_0xfcce('0x45')]({},_0x5e18f9,_0x46983a['options']);return db[_0xfcce('0x34')][_0xfcce('0x4e')](_0x5e18f9)['then'](handleEntityNotFound(_0x1feedf,null))[_0xfcce('0x19')](respondWithResult(_0x1feedf,null))[_0xfcce('0x23')](handleError(_0x1feedf,null));};exports[_0xfcce('0x2f')]=function(_0x16aba7,_0x5a8c3e){if(_0x16aba7[_0xfcce('0x4f')]['id']){delete _0x16aba7[_0xfcce('0x4f')]['id'];}return db[_0xfcce('0x34')][_0xfcce('0x4e')]({'where':{'id':_0x16aba7['params']['id']}})[_0xfcce('0x19')](handleEntityNotFound(_0x5a8c3e,null))[_0xfcce('0x19')](saveUpdates(_0x16aba7[_0xfcce('0x4f')],null))[_0xfcce('0x19')](respondWithResult(_0x5a8c3e,null))['catch'](handleError(_0x5a8c3e,null));};exports[_0xfcce('0x50')]=function(_0x57975d,_0x30200e,_0x381ee5){if(_0x57975d[_0xfcce('0x51')]&&_0x57975d[_0xfcce('0x51')][_0xfcce('0x52')]){_0x57975d[_0xfcce('0x4f')][_0xfcce('0x53')]=_0x57975d['file']['filename'];}return db[_0xfcce('0x34')][_0xfcce('0x4e')]({'where':{'id':_0x57975d[_0xfcce('0x4b')]['id']}})[_0xfcce('0x19')](handleEntityNotFound(_0x30200e,null))['then'](saveUpdates(_0x57975d[_0xfcce('0x4f')],null))[_0xfcce('0x19')](respondWithResult(_0x30200e,null))['catch'](handleError(_0x30200e,null));};exports[_0xfcce('0x54')]=function(_0x216c1d,_0x4d06f1,_0x5ab2f0){if(_0x216c1d['file']&&_0x216c1d['file'][_0xfcce('0x52')]){_0x216c1d[_0xfcce('0x4f')][_0xfcce('0x55')]=_0x216c1d[_0xfcce('0x51')]['filename'];}return db['Setting'][_0xfcce('0x4e')]({'where':{'id':_0x216c1d[_0xfcce('0x4b')]['id']}})[_0xfcce('0x19')](handleEntityNotFound(_0x4d06f1,null))[_0xfcce('0x19')](saveUpdates(_0x216c1d[_0xfcce('0x4f')],null))[_0xfcce('0x19')](respondWithResult(_0x4d06f1,null))[_0xfcce('0x23')](handleError(_0x4d06f1,null));};var utilLicense=require('../../config/license/util');exports[_0xfcce('0x56')]=function(_0x5ccdd3,_0x3ad143,_0x284252){var _0x3cc8ee=_0xfcce('0x57');var _0x53349b={'custom':![]};return utilLicense[_0xfcce('0x58')]()[_0xfcce('0x19')](function(_0x4a5ce0){if(_0x4a5ce0){_0x53349b=_0x4a5ce0;}return db[_0xfcce('0x34')]['find']({'where':{'id':_0x5ccdd3[_0xfcce('0x4b')]['id']},'attributes':[_0xfcce('0x53'),_0xfcce('0x55'),_0xfcce('0x59'),'favicon','defaultLogo',_0xfcce('0x5a'),_0xfcce('0x5b'),'defaultFavicon'],'raw':!![]});})[_0xfcce('0x19')](handleEntityNotFound(_0x3ad143,null))[_0xfcce('0x19')](function(_0x1f8770){if(_0x1f8770){var _0x1383ec=_0x1f8770[_0xfcce('0x53')]&&fs['existsSync'](path[_0xfcce('0x5c')](config[_0xfcce('0x5d')],_0x3cc8ee,_['toLower'](_0x1f8770[_0xfcce('0x53')])))?path['join'](config[_0xfcce('0x5d')],_0x3cc8ee,_[_0xfcce('0x5e')](_0x1f8770[_0xfcce('0x53')])):path[_0xfcce('0x5c')](config[_0xfcce('0x5d')],_0x3cc8ee,_[_0xfcce('0x5e')]('default_logo.svg'));var _0x42597a=_0xfcce('0x5f')+_[_0xfcce('0x60')](_0xfcce('0x53'));if(_0x1f8770[_0x42597a]||!_0x53349b[_0xfcce('0x61')]){_0x1383ec=path['join'](config[_0xfcce('0x5d')],_0x3cc8ee,_['toLower'](_0xfcce('0x62')));}if(!fs[_0xfcce('0x63')](_0x1383ec)){throw new db[(_0xfcce('0x64'))][(_0xfcce('0x65'))](_[_0xfcce('0x60')](_0xfcce('0x53'))+_0xfcce('0x66'));}return _0x3ad143['download'](_0x1383ec);}})['catch'](handleError(_0x3ad143,null));};var utilLicense=require(_0xfcce('0x67'));exports[_0xfcce('0x68')]=function(_0x2bd79b,_0x4e1b40,_0xbf3d96){var _0x69308d=_0xfcce('0x57');var _0x537590={'custom':![]};return utilLicense[_0xfcce('0x58')]()['then'](function(_0x229dbd){if(_0x229dbd){_0x537590=_0x229dbd;}return db['Setting']['find']({'where':{'id':_0x2bd79b[_0xfcce('0x4b')]['id']},'attributes':[_0xfcce('0x53'),_0xfcce('0x55'),_0xfcce('0x59'),'favicon',_0xfcce('0x69'),_0xfcce('0x5a'),_0xfcce('0x5b'),_0xfcce('0x6a')],'raw':!![]});})[_0xfcce('0x19')](handleEntityNotFound(_0x4e1b40,null))[_0xfcce('0x19')](function(_0x8ba5bd){if(_0x8ba5bd){var _0x465ed1=_0x8ba5bd['loginLogo']&&fs[_0xfcce('0x63')](path[_0xfcce('0x5c')](config[_0xfcce('0x5d')],_0x69308d,_[_0xfcce('0x5e')](_0x8ba5bd[_0xfcce('0x55')])))?path[_0xfcce('0x5c')](config['root'],_0x69308d,_[_0xfcce('0x5e')](_0x8ba5bd[_0xfcce('0x55')])):path[_0xfcce('0x5c')](config['root'],_0x69308d,_[_0xfcce('0x5e')]('default_loginLogo.svg'));var _0x217bb9=_0xfcce('0x5f')+_[_0xfcce('0x60')](_0xfcce('0x55'));if(_0x8ba5bd[_0x217bb9]||!_0x537590[_0xfcce('0x61')]){_0x465ed1=path['join'](config[_0xfcce('0x5d')],_0x69308d,_[_0xfcce('0x5e')](_0xfcce('0x6b')));}if(!fs[_0xfcce('0x63')](_0x465ed1)){throw new db[(_0xfcce('0x64'))][(_0xfcce('0x65'))](_[_0xfcce('0x60')]('loginLogo')+_0xfcce('0x66'));}return _0x4e1b40[_0xfcce('0x6c')](_0x465ed1);}})[_0xfcce('0x23')](handleError(_0x4e1b40,null));};exports[_0xfcce('0x6d')]=function(_0x5f4d97,_0xa7ff35){return db[_0xfcce('0x34')]['find']({'where':{'id':_0x5f4d97[_0xfcce('0x4b')]['id']},'attributes':[_0xfcce('0x6e')]})[_0xfcce('0x19')](respondWithResult(_0xa7ff35,null))[_0xfcce('0x23')](handleError(_0xa7ff35,null));};exports['addPreferred']=function(_0x56d9bf,_0x498329,_0x12af85){if(_0x56d9bf[_0xfcce('0x51')]&&_0x56d9bf[_0xfcce('0x51')][_0xfcce('0x52')]){_0x56d9bf['body'][_0xfcce('0x59')]=_0x56d9bf[_0xfcce('0x51')][_0xfcce('0x52')];}return db[_0xfcce('0x34')][_0xfcce('0x4e')]({'where':{'id':_0x56d9bf[_0xfcce('0x4b')]['id']}})[_0xfcce('0x19')](handleEntityNotFound(_0x498329,null))[_0xfcce('0x19')](saveUpdates(_0x56d9bf['body'],null))['then'](respondWithResult(_0x498329,null))[_0xfcce('0x23')](handleError(_0x498329,null));};var utilLicense=require(_0xfcce('0x67'));exports[_0xfcce('0x6f')]=function(_0x50470c,_0xd8d8ad,_0x15b727){var _0x5eca0d=_0xfcce('0x57');var _0x38f155={'custom':![]};return utilLicense[_0xfcce('0x58')]()[_0xfcce('0x19')](function(_0x59ed80){if(_0x59ed80){_0x38f155=_0x59ed80;}return db[_0xfcce('0x34')]['find']({'where':{'id':_0x50470c['params']['id']},'attributes':['logo',_0xfcce('0x55'),_0xfcce('0x59'),'favicon','defaultLogo',_0xfcce('0x5a'),_0xfcce('0x5b'),_0xfcce('0x6a')],'raw':!![]});})[_0xfcce('0x19')](handleEntityNotFound(_0xd8d8ad,null))[_0xfcce('0x19')](function(_0x2d6d73){if(_0x2d6d73){var _0x1e8912=_0x2d6d73[_0xfcce('0x59')]&&fs[_0xfcce('0x63')](path[_0xfcce('0x5c')](config[_0xfcce('0x5d')],_0x5eca0d,_[_0xfcce('0x5e')](_0x2d6d73[_0xfcce('0x59')])))?path[_0xfcce('0x5c')](config['root'],_0x5eca0d,_[_0xfcce('0x5e')](_0x2d6d73[_0xfcce('0x59')])):path[_0xfcce('0x5c')](config[_0xfcce('0x5d')],_0x5eca0d,_[_0xfcce('0x5e')](_0xfcce('0x70')));var _0x217976='default'+_[_0xfcce('0x60')](_0xfcce('0x59'));if(_0x2d6d73[_0x217976]||!_0x38f155[_0xfcce('0x61')]||!_0x38f155[_0xfcce('0x59')]){_0x1e8912=path['join'](config[_0xfcce('0x5d')],_0x5eca0d,_[_0xfcce('0x5e')](_0xfcce('0x70')));}if(!fs[_0xfcce('0x63')](_0x1e8912)){throw new db[(_0xfcce('0x64'))][(_0xfcce('0x65'))](_[_0xfcce('0x60')](_0xfcce('0x59'))+_0xfcce('0x66'));}return _0xd8d8ad['download'](_0x1e8912);}})['catch'](handleError(_0xd8d8ad,null));};exports['addFavicon']=function(_0x21b4c9,_0x4b7b4b,_0x5c05f8){if(_0x21b4c9[_0xfcce('0x51')]&&_0x21b4c9['file'][_0xfcce('0x52')]){_0x21b4c9[_0xfcce('0x4f')][_0xfcce('0x71')]=_0x21b4c9[_0xfcce('0x51')][_0xfcce('0x52')];}return db['Setting'][_0xfcce('0x4e')]({'where':{'id':_0x21b4c9['params']['id']}})[_0xfcce('0x19')](handleEntityNotFound(_0x4b7b4b,null))[_0xfcce('0x19')](saveUpdates(_0x21b4c9['body'],null))['then'](respondWithResult(_0x4b7b4b,null))[_0xfcce('0x23')](handleError(_0x4b7b4b,null));};var utilLicense=require('../../config/license/util');exports[_0xfcce('0x72')]=function(_0x3e11fd,_0x574a8b,_0x38fb98){var _0x44e326=_0xfcce('0x57');var _0x6e13c9={'custom':![]};return utilLicense['getLicense']()[_0xfcce('0x19')](function(_0x9bfc50){if(_0x9bfc50){_0x6e13c9=_0x9bfc50;}return db['Setting'][_0xfcce('0x4e')]({'where':{'id':_0x3e11fd['params']['id']},'attributes':['logo','loginLogo',_0xfcce('0x59'),_0xfcce('0x71'),_0xfcce('0x69'),_0xfcce('0x5a'),_0xfcce('0x5b'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x574a8b,null))['then'](function(_0x484971){if(_0x484971){var _0x5c5751=_0x484971[_0xfcce('0x71')]&&fs[_0xfcce('0x63')](path[_0xfcce('0x5c')](config[_0xfcce('0x5d')],_0x44e326,_[_0xfcce('0x5e')](_0x484971['favicon'])))?path['join'](config[_0xfcce('0x5d')],_0x44e326,_[_0xfcce('0x5e')](_0x484971[_0xfcce('0x71')])):path['join'](config['root'],_0x44e326,_['toLower'](_0xfcce('0x73')));var _0x57372c=_0xfcce('0x5f')+_[_0xfcce('0x60')]('favicon');if(_0x484971[_0x57372c]||!_0x6e13c9['custom']){_0x5c5751=path['join'](config[_0xfcce('0x5d')],_0x44e326,_[_0xfcce('0x5e')](_0xfcce('0x73')));}if(!fs['existsSync'](_0x5c5751)){throw new db[(_0xfcce('0x64'))][(_0xfcce('0x65'))](_[_0xfcce('0x60')]('favicon')+_0xfcce('0x66'));}return _0x574a8b[_0xfcce('0x6c')](_0x5c5751);}})['catch'](handleError(_0x574a8b,null));};exports['getDate']=function(_0x81e549,_0xc0323){var _0x17efbd={'offset':moment()[_0xfcce('0x74')]()};_0x17efbd[_0xfcce('0x75')]=moment()[_0xfcce('0x74')](_0x17efbd[_0xfcce('0x28')])[_0xfcce('0x76')](_0xfcce('0x77'));return _0xc0323[_0xfcce('0x25')](0xc8)[_0xfcce('0x78')](_0x17efbd);};
\ No newline at end of file
+var _0xffaf=['http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','status','json','limit','undefined','offset','count','set','Content-Range','apply','reject','update','sendStatus','stack','name','send','index','map','Setting','type','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','includeAll','rows','catch','show','params','rawAttributes','intersection','include','body','find','addLogo','file','filename','addLogoLogin','getLogo','server/files/images/logos','getLicense','logo','loginLogo','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','toLower','root','default_logo.svg','default','upperFirst','custom','ValidationError','\x20not\x20found','download','default_loginLogo.svg','Sequelize','gdpr','addPreferred','getPreferred','default_preferred.png','getFavicon','default_favicon.ico','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','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','jayson/promise','client'];(function(_0x2742c0,_0x41a6d0){var _0x460090=function(_0x2fa674){while(--_0x2fa674){_0x2742c0['push'](_0x2742c0['shift']());}};_0x460090(++_0x41a6d0);}(_0xffaf,0x1c6));var _0xfffa=function(_0xa98302,_0x844f27){_0xa98302=_0xa98302-0x0;var _0x1ad8e3=_0xffaf[_0xa98302];return _0x1ad8e3;};'use strict';var emlformat=require(_0xfffa('0x0'));var rimraf=require(_0xfffa('0x1'));var zipdir=require(_0xfffa('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfffa('0x3'));var moment=require(_0xfffa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xfffa('0x5'));var util=require(_0xfffa('0x6'));var path=require(_0xfffa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xfffa('0x8'));var fs=require('fs');var fs_extra=require(_0xfffa('0x9'));var _=require(_0xfffa('0xa'));var squel=require(_0xfffa('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xfffa('0xc'));var toCsv=require('to-csv');var querystring=require(_0xfffa('0xd'));var Papa=require(_0xfffa('0xe'));var Redis=require('ioredis');var authService=require(_0xfffa('0xf'));var qs=require(_0xfffa('0x10'));var as=require(_0xfffa('0x11'));var hardwareService=require(_0xfffa('0x12'));var logger=require(_0xfffa('0x13'))(_0xfffa('0x14'));var utils=require('../../config/utils');var config=require(_0xfffa('0x15'));var licenseUtil=require(_0xfffa('0x16'));var db=require(_0xfffa('0x17'))['db'];var jayson=require(_0xfffa('0x18'));var client=jayson[_0xfffa('0x19')][_0xfffa('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x16a3a4,_0x5db43e,_0x5e2e9d,_0x2349fe){return new BPromise(function(_0x2b85d8,_0x550fcf){var _0x217391=_0x2349fe||client;return _0x217391[_0xfffa('0x1b')](_0x16a3a4,_0x5e2e9d)[_0xfffa('0x1c')](function(_0x504630){logger[_0xfffa('0x1d')](_0xfffa('0x1e'),_0x5db43e,_0xfffa('0x1f'));logger[_0xfffa('0x20')](_0xfffa('0x21'),_0x5db43e,'request\x20sent',JSON[_0xfffa('0x22')](_0x504630));if(_0x504630[_0xfffa('0x23')]){if(_0x504630['error'][_0xfffa('0x24')]===0x1f4){logger[_0xfffa('0x23')](_0xfffa('0x1e'),_0x5db43e,_0x504630[_0xfffa('0x23')][_0xfffa('0x25')]);return _0x550fcf(_0x504630[_0xfffa('0x23')][_0xfffa('0x25')]);}logger[_0xfffa('0x23')](_0xfffa('0x1e'),_0x5db43e,_0x504630[_0xfffa('0x23')]['message']);return _0x2b85d8(_0x504630[_0xfffa('0x23')][_0xfffa('0x25')]);}else{logger['info'](_0xfffa('0x1e'),_0x5db43e,'request\x20sent');_0x2b85d8(_0x504630[_0xfffa('0x26')][_0xfffa('0x25')]);}})['catch'](function(_0x2db762){logger[_0xfffa('0x23')]('Setting,\x20%s,\x20%s',_0x5db43e,_0x2db762);_0x550fcf(_0x2db762);});});}function respondWithStatusCode(_0x2b8099,_0xbb3f36){_0xbb3f36=_0xbb3f36||0xcc;return function(_0x18536c){if(_0x18536c){return _0x2b8099['sendStatus'](_0xbb3f36);}return _0x2b8099[_0xfffa('0x27')](_0xbb3f36)['end']();};}function respondWithResult(_0x16c3a0,_0x5dfd17){_0x5dfd17=_0x5dfd17||0xc8;return function(_0x3ede7a){if(_0x3ede7a){return _0x16c3a0[_0xfffa('0x27')](_0x5dfd17)[_0xfffa('0x28')](_0x3ede7a);}};}function respondWithFilteredResult(_0x4e99f7,_0x1230c0){return function(_0x3821b3){if(_0x3821b3){var _0x57ffaa=typeof _0x1230c0['offset']==='undefined'&&typeof _0x1230c0[_0xfffa('0x29')]===_0xfffa('0x2a');var _0x1809d8=_0x3821b3['count'];var _0x3c443e=_0x57ffaa?0x0:_0x1230c0[_0xfffa('0x2b')];var _0x3321db=_0x57ffaa?_0x3821b3[_0xfffa('0x2c')]:_0x1230c0[_0xfffa('0x2b')]+_0x1230c0[_0xfffa('0x29')];var _0x40319d;if(_0x3321db>=_0x1809d8){_0x3321db=_0x1809d8;_0x40319d=0xc8;}else{_0x40319d=0xce;}_0x4e99f7[_0xfffa('0x27')](_0x40319d);return _0x4e99f7[_0xfffa('0x2d')](_0xfffa('0x2e'),_0x3c443e+'-'+_0x3321db+'/'+_0x1809d8)['json'](_0x3821b3);}return null;};}function patchUpdates(_0x1255c2){return function(_0xdaef3a){try{jsonpatch[_0xfffa('0x2f')](_0xdaef3a,_0x1255c2,!![]);}catch(_0x115f50){return BPromise[_0xfffa('0x30')](_0x115f50);}return _0xdaef3a['save']();};}function saveUpdates(_0x3a56b3,_0x226f52){return function(_0x31ac25){if(_0x31ac25){return _0x31ac25[_0xfffa('0x31')](_0x3a56b3)['then'](function(_0xc68a0a){return _0xc68a0a;});}return null;};}function removeEntity(_0x1e8080,_0x20c659){return function(_0x5abaed){if(_0x5abaed){return _0x5abaed['destroy']()[_0xfffa('0x1c')](function(){_0x1e8080[_0xfffa('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a1ff9,_0x1de838){return function(_0x2f33d2){if(!_0x2f33d2){_0x3a1ff9[_0xfffa('0x32')](0x194);}return _0x2f33d2;};}function handleError(_0x19ebbc,_0x1a55de){_0x1a55de=_0x1a55de||0x1f4;return function(_0x3b2272){logger['error'](_0x3b2272[_0xfffa('0x33')]);if(_0x3b2272[_0xfffa('0x34')]){delete _0x3b2272[_0xfffa('0x34')];}_0x19ebbc['status'](_0x1a55de)[_0xfffa('0x35')](_0x3b2272);};}exports[_0xfffa('0x36')]=function(_0x2d696a,_0x198442){var _0x402078={},_0x194171={},_0x229ced={'count':0x0,'rows':[]};var _0x3f2797=_[_0xfffa('0x37')](db[_0xfffa('0x38')]['rawAttributes'],function(_0x4ce2d0){return{'name':_0x4ce2d0['fieldName'],'type':_0x4ce2d0[_0xfffa('0x39')]['key']};});_0x194171[_0xfffa('0x3a')]=_[_0xfffa('0x37')](_0x3f2797,_0xfffa('0x34'));_0x194171[_0xfffa('0x3b')]=_[_0xfffa('0x3c')](_0x2d696a[_0xfffa('0x3b')]);_0x194171[_0xfffa('0x3d')]=_['intersection'](_0x194171[_0xfffa('0x3a')],_0x194171['query']);_0x402078[_0xfffa('0x3e')]=_['intersection'](_0x194171[_0xfffa('0x3a')],qs['fields'](_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x3f')]));_0x402078[_0xfffa('0x3e')]=_0x402078['attributes'][_0xfffa('0x40')]?_0x402078[_0xfffa('0x3e')]:_0x194171[_0xfffa('0x3a')];if(!_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x41')]('nolimit')){_0x402078[_0xfffa('0x29')]=qs['limit'](_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x29')]);_0x402078['offset']=qs[_0xfffa('0x2b')](_0x2d696a[_0xfffa('0x3b')]['offset']);}_0x402078[_0xfffa('0x42')]=qs[_0xfffa('0x43')](_0x2d696a[_0xfffa('0x3b')]['sort']);_0x402078[_0xfffa('0x44')]=qs[_0xfffa('0x3d')](_[_0xfffa('0x45')](_0x2d696a['query'],_0x194171[_0xfffa('0x3d')]),_0x3f2797);if(_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x46')]){_0x402078[_0xfffa('0x44')]=_[_0xfffa('0x47')](_0x402078[_0xfffa('0x44')],{'$or':_[_0xfffa('0x37')](_0x3f2797,function(_0x26ced3){if(_0x26ced3[_0xfffa('0x39')]!=='VIRTUAL'){var _0x169d1a={};_0x169d1a[_0x26ced3[_0xfffa('0x34')]]={'$like':'%'+_0x2d696a[_0xfffa('0x3b')][_0xfffa('0x46')]+'%'};return _0x169d1a;}})});}_0x402078=_[_0xfffa('0x47')]({},_0x402078,_0x2d696a['options']);var _0x36741b={'where':_0x402078[_0xfffa('0x44')]};return db['Setting'][_0xfffa('0x2c')](_0x36741b)[_0xfffa('0x1c')](function(_0x1e7bbc){_0x229ced[_0xfffa('0x2c')]=_0x1e7bbc;if(_0x2d696a['query'][_0xfffa('0x48')]){_0x402078['include']=[{'all':!![]}];}return db[_0xfffa('0x38')]['findAll'](_0x402078);})[_0xfffa('0x1c')](function(_0x5d5083){_0x229ced[_0xfffa('0x49')]=_0x5d5083;return _0x229ced;})['then'](respondWithFilteredResult(_0x198442,_0x402078))[_0xfffa('0x4a')](handleError(_0x198442,null));};exports[_0xfffa('0x4b')]=function(_0x1306fc,_0xb55960){var _0x337889={'raw':![],'where':{'id':_0x1306fc[_0xfffa('0x4c')]['id']}},_0x318a20={};_0x318a20[_0xfffa('0x3a')]=_[_0xfffa('0x3c')](db['Setting'][_0xfffa('0x4d')]);_0x318a20[_0xfffa('0x3b')]=_['keys'](_0x1306fc['query']);_0x318a20[_0xfffa('0x3d')]=_[_0xfffa('0x4e')](_0x318a20[_0xfffa('0x3a')],_0x318a20[_0xfffa('0x3b')]);_0x337889[_0xfffa('0x3e')]=_[_0xfffa('0x4e')](_0x318a20['model'],qs[_0xfffa('0x3f')](_0x1306fc[_0xfffa('0x3b')][_0xfffa('0x3f')]));_0x337889['attributes']=_0x337889[_0xfffa('0x3e')][_0xfffa('0x40')]?_0x337889['attributes']:_0x318a20[_0xfffa('0x3a')];if(_0x1306fc['query'][_0xfffa('0x48')]){_0x337889[_0xfffa('0x4f')]=[{'all':!![]}];}_0x337889=_[_0xfffa('0x47')]({},_0x337889,_0x1306fc['options']);return db[_0xfffa('0x38')]['find'](_0x337889)[_0xfffa('0x1c')](handleEntityNotFound(_0xb55960,null))[_0xfffa('0x1c')](respondWithResult(_0xb55960,null))[_0xfffa('0x4a')](handleError(_0xb55960,null));};exports[_0xfffa('0x31')]=function(_0x4b9998,_0x2a5ef6){if(_0x4b9998[_0xfffa('0x50')]['id']){delete _0x4b9998[_0xfffa('0x50')]['id'];}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x4b9998[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x2a5ef6,null))['then'](saveUpdates(_0x4b9998['body'],null))[_0xfffa('0x1c')](respondWithResult(_0x2a5ef6,null))['catch'](handleError(_0x2a5ef6,null));};exports[_0xfffa('0x52')]=function(_0x311355,_0x456b8f,_0x51ba9c){if(_0x311355[_0xfffa('0x53')]&&_0x311355[_0xfffa('0x53')][_0xfffa('0x54')]){_0x311355['body']['logo']=_0x311355['file'][_0xfffa('0x54')];}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x311355[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x456b8f,null))[_0xfffa('0x1c')](saveUpdates(_0x311355[_0xfffa('0x50')],null))[_0xfffa('0x1c')](respondWithResult(_0x456b8f,null))[_0xfffa('0x4a')](handleError(_0x456b8f,null));};exports[_0xfffa('0x55')]=function(_0xf01742,_0x2da434,_0x5cdf54){if(_0xf01742[_0xfffa('0x53')]&&_0xf01742[_0xfffa('0x53')][_0xfffa('0x54')]){_0xf01742[_0xfffa('0x50')]['loginLogo']=_0xf01742['file'][_0xfffa('0x54')];}return db[_0xfffa('0x38')]['find']({'where':{'id':_0xf01742[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x2da434,null))['then'](saveUpdates(_0xf01742[_0xfffa('0x50')],null))['then'](respondWithResult(_0x2da434,null))[_0xfffa('0x4a')](handleError(_0x2da434,null));};var utilLicense=require(_0xfffa('0x16'));exports[_0xfffa('0x56')]=function(_0x46f0b9,_0x278fe9,_0x17b29d){var _0x17b876=_0xfffa('0x57');var _0x412f80={'custom':![]};return utilLicense[_0xfffa('0x58')]()['then'](function(_0x3b859f){if(_0x3b859f){_0x412f80=_0x3b859f;}return db['Setting'][_0xfffa('0x51')]({'where':{'id':_0x46f0b9[_0xfffa('0x4c')]['id']},'attributes':[_0xfffa('0x59'),_0xfffa('0x5a'),_0xfffa('0x5b'),_0xfffa('0x5c'),_0xfffa('0x5d'),_0xfffa('0x5e'),_0xfffa('0x5f'),_0xfffa('0x60')],'raw':!![]});})[_0xfffa('0x1c')](handleEntityNotFound(_0x278fe9,null))['then'](function(_0x4a59b5){if(_0x4a59b5){var _0x451993=_0x4a59b5[_0xfffa('0x59')]&&fs[_0xfffa('0x61')](path[_0xfffa('0x62')](config['root'],_0x17b876,_[_0xfffa('0x63')](_0x4a59b5['logo'])))?path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17b876,_[_0xfffa('0x63')](_0x4a59b5[_0xfffa('0x59')])):path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17b876,_['toLower'](_0xfffa('0x65')));var _0x5c33fa=_0xfffa('0x66')+_[_0xfffa('0x67')](_0xfffa('0x59'));if(_0x4a59b5[_0x5c33fa]||!_0x412f80[_0xfffa('0x68')]){_0x451993=path['join'](config[_0xfffa('0x64')],_0x17b876,_['toLower']('default_logo.svg'));}if(!fs['existsSync'](_0x451993)){throw new db['Sequelize'][(_0xfffa('0x69'))](_[_0xfffa('0x67')](_0xfffa('0x59'))+_0xfffa('0x6a'));}return _0x278fe9[_0xfffa('0x6b')](_0x451993);}})['catch'](handleError(_0x278fe9,null));};var utilLicense=require('../../config/license/util');exports['getLogoLogin']=function(_0xd5a318,_0x3c31b3,_0x344d0c){var _0x179ebc=_0xfffa('0x57');var _0x414b4a={'custom':![]};return utilLicense[_0xfffa('0x58')]()[_0xfffa('0x1c')](function(_0x4bec9a){if(_0x4bec9a){_0x414b4a=_0x4bec9a;}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0xd5a318['params']['id']},'attributes':['logo',_0xfffa('0x5a'),'preferred',_0xfffa('0x5c'),_0xfffa('0x5d'),'defaultLoginLogo',_0xfffa('0x5f'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x3c31b3,null))[_0xfffa('0x1c')](function(_0x1eba42){if(_0x1eba42){var _0x33d63d=_0x1eba42[_0xfffa('0x5a')]&&fs['existsSync'](path['join'](config['root'],_0x179ebc,_[_0xfffa('0x63')](_0x1eba42[_0xfffa('0x5a')])))?path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x179ebc,_['toLower'](_0x1eba42[_0xfffa('0x5a')])):path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x179ebc,_[_0xfffa('0x63')](_0xfffa('0x6c')));var _0x425919=_0xfffa('0x66')+_[_0xfffa('0x67')](_0xfffa('0x5a'));if(_0x1eba42[_0x425919]||!_0x414b4a[_0xfffa('0x68')]){_0x33d63d=path['join'](config[_0xfffa('0x64')],_0x179ebc,_[_0xfffa('0x63')](_0xfffa('0x6c')));}if(!fs[_0xfffa('0x61')](_0x33d63d)){throw new db[(_0xfffa('0x6d'))]['ValidationError'](_[_0xfffa('0x67')](_0xfffa('0x5a'))+_0xfffa('0x6a'));}return _0x3c31b3[_0xfffa('0x6b')](_0x33d63d);}})['catch'](handleError(_0x3c31b3,null));};exports[_0xfffa('0x6e')]=function(_0x327049,_0x4c2e12){return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x327049[_0xfffa('0x4c')]['id']},'attributes':['securePassword']})[_0xfffa('0x1c')](respondWithResult(_0x4c2e12,null))[_0xfffa('0x4a')](handleError(_0x4c2e12,null));};exports[_0xfffa('0x6f')]=function(_0x46ba5e,_0x3a360f,_0x2b122a){if(_0x46ba5e[_0xfffa('0x53')]&&_0x46ba5e[_0xfffa('0x53')]['filename']){_0x46ba5e['body']['preferred']=_0x46ba5e[_0xfffa('0x53')]['filename'];}return db['Setting'][_0xfffa('0x51')]({'where':{'id':_0x46ba5e['params']['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x3a360f,null))[_0xfffa('0x1c')](saveUpdates(_0x46ba5e[_0xfffa('0x50')],null))[_0xfffa('0x1c')](respondWithResult(_0x3a360f,null))[_0xfffa('0x4a')](handleError(_0x3a360f,null));};var utilLicense=require('../../config/license/util');exports[_0xfffa('0x70')]=function(_0x180264,_0x1288e0,_0x5d16f2){var _0x3253c0=_0xfffa('0x57');var _0x3af1a4={'custom':![]};return utilLicense[_0xfffa('0x58')]()[_0xfffa('0x1c')](function(_0x569473){if(_0x569473){_0x3af1a4=_0x569473;}return db[_0xfffa('0x38')]['find']({'where':{'id':_0x180264['params']['id']},'attributes':['logo',_0xfffa('0x5a'),'preferred',_0xfffa('0x5c'),_0xfffa('0x5d'),_0xfffa('0x5e'),_0xfffa('0x5f'),_0xfffa('0x60')],'raw':!![]});})[_0xfffa('0x1c')](handleEntityNotFound(_0x1288e0,null))[_0xfffa('0x1c')](function(_0x53104d){if(_0x53104d){var _0x4bcf57=_0x53104d[_0xfffa('0x5b')]&&fs[_0xfffa('0x61')](path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x3253c0,_[_0xfffa('0x63')](_0x53104d[_0xfffa('0x5b')])))?path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x3253c0,_[_0xfffa('0x63')](_0x53104d['preferred'])):path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x3253c0,_[_0xfffa('0x63')](_0xfffa('0x71')));var _0x5b29d8=_0xfffa('0x66')+_[_0xfffa('0x67')](_0xfffa('0x5b'));if(_0x53104d[_0x5b29d8]||!_0x3af1a4[_0xfffa('0x68')]||!_0x3af1a4[_0xfffa('0x5b')]){_0x4bcf57=path[_0xfffa('0x62')](config['root'],_0x3253c0,_[_0xfffa('0x63')](_0xfffa('0x71')));}if(!fs[_0xfffa('0x61')](_0x4bcf57)){throw new db['Sequelize'][(_0xfffa('0x69'))](_['upperFirst'](_0xfffa('0x5b'))+'\x20not\x20found');}return _0x1288e0[_0xfffa('0x6b')](_0x4bcf57);}})[_0xfffa('0x4a')](handleError(_0x1288e0,null));};exports['addFavicon']=function(_0x35e46c,_0x1e3f3f,_0x57e23a){if(_0x35e46c[_0xfffa('0x53')]&&_0x35e46c['file'][_0xfffa('0x54')]){_0x35e46c[_0xfffa('0x50')][_0xfffa('0x5c')]=_0x35e46c[_0xfffa('0x53')][_0xfffa('0x54')];}return db[_0xfffa('0x38')][_0xfffa('0x51')]({'where':{'id':_0x35e46c[_0xfffa('0x4c')]['id']}})[_0xfffa('0x1c')](handleEntityNotFound(_0x1e3f3f,null))[_0xfffa('0x1c')](saveUpdates(_0x35e46c[_0xfffa('0x50')],null))[_0xfffa('0x1c')](respondWithResult(_0x1e3f3f,null))[_0xfffa('0x4a')](handleError(_0x1e3f3f,null));};var utilLicense=require(_0xfffa('0x16'));exports[_0xfffa('0x72')]=function(_0x2b99ed,_0x2b6e3e,_0x52a545){var _0x17fee8=_0xfffa('0x57');var _0x33e443={'custom':![]};return utilLicense[_0xfffa('0x58')]()[_0xfffa('0x1c')](function(_0x2437a6){if(_0x2437a6){_0x33e443=_0x2437a6;}return db['Setting'][_0xfffa('0x51')]({'where':{'id':_0x2b99ed[_0xfffa('0x4c')]['id']},'attributes':[_0xfffa('0x59'),_0xfffa('0x5a'),_0xfffa('0x5b'),_0xfffa('0x5c'),'defaultLogo',_0xfffa('0x5e'),_0xfffa('0x5f'),'defaultFavicon'],'raw':!![]});})[_0xfffa('0x1c')](handleEntityNotFound(_0x2b6e3e,null))[_0xfffa('0x1c')](function(_0x20043d){if(_0x20043d){var _0x43c1af=_0x20043d['favicon']&&fs[_0xfffa('0x61')](path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17fee8,_[_0xfffa('0x63')](_0x20043d['favicon'])))?path['join'](config[_0xfffa('0x64')],_0x17fee8,_['toLower'](_0x20043d[_0xfffa('0x5c')])):path[_0xfffa('0x62')](config['root'],_0x17fee8,_['toLower']('default_favicon.ico'));var _0x3fc79c=_0xfffa('0x66')+_['upperFirst'](_0xfffa('0x5c'));if(_0x20043d[_0x3fc79c]||!_0x33e443[_0xfffa('0x68')]){_0x43c1af=path[_0xfffa('0x62')](config[_0xfffa('0x64')],_0x17fee8,_[_0xfffa('0x63')](_0xfffa('0x73')));}if(!fs[_0xfffa('0x61')](_0x43c1af)){throw new db[(_0xfffa('0x6d'))]['ValidationError'](_['upperFirst']('favicon')+'\x20not\x20found');}return _0x2b6e3e[_0xfffa('0x6b')](_0x43c1af);}})[_0xfffa('0x4a')](handleError(_0x2b6e3e,null));};exports['getDate']=function(_0x58b31e,_0x378c51){var _0x4591e0={'offset':moment()[_0xfffa('0x74')]()};_0x4591e0[_0xfffa('0x75')]=moment()[_0xfffa('0x74')](_0x4591e0[_0xfffa('0x2b')])[_0xfffa('0x76')](_0xfffa('0x77'));return _0x378c51[_0xfffa('0x27')](0xc8)[_0xfffa('0x35')](_0x4591e0);};
\ No newline at end of file
index 551ae43..1cacdbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x37d5ff,_0x5ee83b){var _0x146b37=function(_0x596170){while(--_0x596170){_0x37d5ff['push'](_0x37d5ff['shift']());}};_0x146b37(++_0x5ee83b);}(_0x3e74,0x175));var _0x43e7=function(_0x4c7288,_0x50ebc4){_0x4c7288=_0x4c7288-0x0;var _0x2db75e=_0x3e74[_0x4c7288];return _0x2db75e;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x34e8=['settings','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports','Setting'];(function(_0xd5374c,_0x262a01){var _0x39f2a0=function(_0x366c36){while(--_0x366c36){_0xd5374c['push'](_0xd5374c['shift']());}};_0x39f2a0(++_0x262a01);}(_0x34e8,0x12c));var _0x834e=function(_0x27193c,_0x3fd98c){_0x27193c=_0x27193c-0x0;var _0x1737aa=_0x34e8[_0x27193c];return _0x1737aa;};'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 6751f2f..a6fd5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1329=['message','Setting,\x20%s,\x20%s','result','catch','ShowSetting','Setting','find','options','raw','include','model','attributes','map','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x4e7654,_0x5ca510){var _0x3a837e=function(_0xdb231){while(--_0xdb231){_0x4e7654['push'](_0x4e7654['shift']());}};_0x3a837e(++_0x5ca510);}(_0x1329,0x18d));var _0x9132=function(_0x6e8f74,_0x339a6a){_0x6e8f74=_0x6e8f74-0x0;var _0x29b868=_0x1329[_0x6e8f74];return _0x29b868;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x9132('0x0'));var rs=require(_0x9132('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9132('0x2'))['db'];var utils=require(_0x9132('0x3'));var logger=require(_0x9132('0x4'))(_0x9132('0x5'));var config=require(_0x9132('0x6'));var jayson=require(_0x9132('0x7'));var client=jayson[_0x9132('0x8')][_0x9132('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x964b8e,_0x5cd814,_0xb0ac3f){return new BPromise(function(_0x50f7ca,_0x3ca795){return client[_0x9132('0xa')](_0x964b8e,_0xb0ac3f)[_0x9132('0xb')](function(_0x17fde5){logger[_0x9132('0xc')]('Setting,\x20%s,\x20%s',_0x5cd814,_0x9132('0xd'));logger[_0x9132('0xe')](_0x9132('0xf'),_0x5cd814,_0x9132('0xd'),JSON[_0x9132('0x10')](_0x17fde5));if(_0x17fde5['error']){if(_0x17fde5[_0x9132('0x11')][_0x9132('0x12')]===0x1f4){logger[_0x9132('0x11')]('Setting,\x20%s,\x20%s',_0x5cd814,_0x17fde5['error'][_0x9132('0x13')]);return _0x3ca795(_0x17fde5['error'][_0x9132('0x13')]);}logger['error']('Setting,\x20%s,\x20%s',_0x5cd814,_0x17fde5[_0x9132('0x11')][_0x9132('0x13')]);return _0x50f7ca(_0x17fde5['error'][_0x9132('0x13')]);}else{logger[_0x9132('0xc')](_0x9132('0x14'),_0x5cd814,_0x9132('0xd'));_0x50f7ca(_0x17fde5[_0x9132('0x15')][_0x9132('0x13')]);}})[_0x9132('0x16')](function(_0x3093f2){logger['error'](_0x9132('0x14'),_0x5cd814,_0x3093f2);_0x3ca795(_0x3093f2);});});}exports[_0x9132('0x17')]=function(_0x162770){var _0x1af995=this;return new Promise(function(_0x5b7fac,_0x2af8eb){return db[_0x9132('0x18')][_0x9132('0x19')]({'raw':_0x162770[_0x9132('0x1a')]?_0x162770[_0x9132('0x1a')][_0x9132('0x1b')]===undefined?!![]:![]:!![],'where':_0x162770[_0x9132('0x1a')]?_0x162770[_0x9132('0x1a')]['where']||null:null,'attributes':_0x162770[_0x9132('0x1a')]?_0x162770['options']['attributes']||null:null,'include':_0x162770[_0x9132('0x1a')]?_0x162770[_0x9132('0x1a')][_0x9132('0x1c')]?_['map'](_0x162770[_0x9132('0x1a')]['include'],function(_0x56ccd4){return{'model':db[_0x56ccd4[_0x9132('0x1d')]],'as':_0x56ccd4['as'],'attributes':_0x56ccd4['attributes'],'include':_0x56ccd4['include']?_['map'](_0x56ccd4[_0x9132('0x1c')],function(_0x123305){return{'model':db[_0x123305[_0x9132('0x1d')]],'as':_0x123305['as'],'attributes':_0x123305[_0x9132('0x1e')],'include':_0x123305[_0x9132('0x1c')]?_[_0x9132('0x1f')](_0x123305[_0x9132('0x1c')],function(_0x34e1eb){return{'model':db[_0x34e1eb['model']],'as':_0x34e1eb['as'],'attributes':_0x34e1eb[_0x9132('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x9132('0xb')](function(_0x2ac4ee){logger['info'](_0x9132('0x17'),_0x162770);logger['debug'](_0x9132('0x17'),_0x162770,JSON[_0x9132('0x10')](_0x2ac4ee));_0x5b7fac(_0x2ac4ee);})[_0x9132('0x16')](function(_0x3b00ac){logger[_0x9132('0x11')](_0x9132('0x17'),_0x3b00ac[_0x9132('0x13')],_0x162770);_0x2af8eb(_0x1af995[_0x9132('0x11')](0x1f4,_0x3b00ac[_0x9132('0x13')]));});});};
\ No newline at end of file
+var _0x7186=['where','attributes','include','model','map','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','Setting,\x20%s,\x20%s','message','result','catch','ShowSetting','Setting','options','raw'];(function(_0x1ade38,_0x2e63f1){var _0x2afb6c=function(_0x2bd84f){while(--_0x2bd84f){_0x1ade38['push'](_0x1ade38['shift']());}};_0x2afb6c(++_0x2e63f1);}(_0x7186,0x170));var _0x6718=function(_0x381d90,_0x5871de){_0x381d90=_0x381d90-0x0;var _0x7385ec=_0x7186[_0x381d90];return _0x7385ec;};'use strict';var _=require(_0x6718('0x0'));var util=require(_0x6718('0x1'));var moment=require(_0x6718('0x2'));var BPromise=require(_0x6718('0x3'));var rs=require(_0x6718('0x4'));var fs=require('fs');var Redis=require(_0x6718('0x5'));var db=require(_0x6718('0x6'))['db'];var utils=require(_0x6718('0x7'));var logger=require(_0x6718('0x8'))('rpc');var config=require(_0x6718('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6718('0xa')][_0x6718('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2816ed,_0x34b6a4,_0x221a2d){return new BPromise(function(_0xe66ff8,_0x331169){return client[_0x6718('0xc')](_0x2816ed,_0x221a2d)[_0x6718('0xd')](function(_0x269074){logger[_0x6718('0xe')]('Setting,\x20%s,\x20%s',_0x34b6a4,_0x6718('0xf'));logger[_0x6718('0x10')](_0x6718('0x11'),_0x34b6a4,_0x6718('0xf'),JSON[_0x6718('0x12')](_0x269074));if(_0x269074[_0x6718('0x13')]){if(_0x269074[_0x6718('0x13')]['code']===0x1f4){logger[_0x6718('0x13')](_0x6718('0x14'),_0x34b6a4,_0x269074[_0x6718('0x13')]['message']);return _0x331169(_0x269074[_0x6718('0x13')]['message']);}logger['error'](_0x6718('0x14'),_0x34b6a4,_0x269074[_0x6718('0x13')][_0x6718('0x15')]);return _0xe66ff8(_0x269074['error'][_0x6718('0x15')]);}else{logger[_0x6718('0xe')](_0x6718('0x14'),_0x34b6a4,'request\x20sent');_0xe66ff8(_0x269074[_0x6718('0x16')][_0x6718('0x15')]);}})[_0x6718('0x17')](function(_0xe12b5b){logger['error'](_0x6718('0x14'),_0x34b6a4,_0xe12b5b);_0x331169(_0xe12b5b);});});}exports[_0x6718('0x18')]=function(_0x2b5159){var _0x4ebc6f=this;return new Promise(function(_0x497050,_0x211ad5){return db[_0x6718('0x19')]['find']({'raw':_0x2b5159['options']?_0x2b5159[_0x6718('0x1a')][_0x6718('0x1b')]===undefined?!![]:![]:!![],'where':_0x2b5159[_0x6718('0x1a')]?_0x2b5159[_0x6718('0x1a')][_0x6718('0x1c')]||null:null,'attributes':_0x2b5159[_0x6718('0x1a')]?_0x2b5159['options'][_0x6718('0x1d')]||null:null,'include':_0x2b5159['options']?_0x2b5159[_0x6718('0x1a')]['include']?_['map'](_0x2b5159[_0x6718('0x1a')][_0x6718('0x1e')],function(_0x371ad2){return{'model':db[_0x371ad2[_0x6718('0x1f')]],'as':_0x371ad2['as'],'attributes':_0x371ad2[_0x6718('0x1d')],'include':_0x371ad2[_0x6718('0x1e')]?_[_0x6718('0x20')](_0x371ad2[_0x6718('0x1e')],function(_0x175998){return{'model':db[_0x175998[_0x6718('0x1f')]],'as':_0x175998['as'],'attributes':_0x175998[_0x6718('0x1d')],'include':_0x175998[_0x6718('0x1e')]?_[_0x6718('0x20')](_0x175998[_0x6718('0x1e')],function(_0x41bf3e){return{'model':db[_0x41bf3e[_0x6718('0x1f')]],'as':_0x41bf3e['as'],'attributes':_0x41bf3e[_0x6718('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6718('0xd')](function(_0x1ba091){logger[_0x6718('0xe')]('ShowSetting',_0x2b5159);logger[_0x6718('0x10')]('ShowSetting',_0x2b5159,JSON[_0x6718('0x12')](_0x1ba091));_0x497050(_0x1ba091);})['catch'](function(_0x4467b3){logger['error'](_0x6718('0x18'),_0x4467b3[_0x6718('0x15')],_0x2b5159);_0x211ad5(_0x4ebc6f[_0x6718('0x13')](0x1f4,_0x4467b3[_0x6718('0x15')]));});});};
\ No newline at end of file
index 68d4c03..38cf23e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/users','post','create','addAnswer','/:id/notify','notify','/:id/applications','/:id/send','/:id/status','status','addAgents','put','update','delete','destroy','removeDispositions','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1cb9,0x14e));var _0x91cb=function(_0x38dfa5,_0x5d87a0){_0x38dfa5=_0x38dfa5-0x0;var _0x4d7735=_0x1cb9[_0x38dfa5];return _0x4d7735;};'use strict';var multer=require(_0x91cb('0x0'));var util=require('util');var path=require(_0x91cb('0x1'));var timeout=require(_0x91cb('0x2'));var express=require(_0x91cb('0x3'));var router=express[_0x91cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91cb('0x5'));var interaction=require(_0x91cb('0x6'));var config=require('../../config/environment');var controller=require(_0x91cb('0x7'));router[_0x91cb('0x8')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0xa')]);router[_0x91cb('0x8')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0xc')]);router['get'](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0xe')]);router[_0x91cb('0x8')](_0x91cb('0xf'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x10')]);router[_0x91cb('0x8')](_0x91cb('0x11'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x8')]('/:id/applications',auth[_0x91cb('0x9')](),controller[_0x91cb('0x13')]);router['get'](_0x91cb('0x14'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x15')]);router[_0x91cb('0x8')]('/:id/status',controller['statusGet']);router[_0x91cb('0x8')](_0x91cb('0x16'),auth['isAuthenticated'](),controller['getAgents']);router[_0x91cb('0x17')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0x18')]);router['post'](_0x91cb('0xf'),auth[_0x91cb('0x9')](),controller['addDisposition']);router[_0x91cb('0x17')](_0x91cb('0x11'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x19')]);router['post'](_0x91cb('0x1a'),controller[_0x91cb('0x1b')]);router['post'](_0x91cb('0x1c'),auth['isAuthenticated'](),controller['addApplications']);router[_0x91cb('0x17')](_0x91cb('0x1d'),auth['isAuthenticated'](),controller['send']);router['post'](_0x91cb('0x1e'),controller[_0x91cb('0x1f')]);router[_0x91cb('0x17')](_0x91cb('0x16'),auth['isAuthenticated'](),controller[_0x91cb('0x20')]);router[_0x91cb('0x21')](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0x22')]);router[_0x91cb('0x23')](_0x91cb('0xd'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x24')]);router[_0x91cb('0x23')](_0x91cb('0xf'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x25')]);router['delete']('/:id/canned_answers',auth[_0x91cb('0x9')](),controller['removeAnswers']);router[_0x91cb('0x23')](_0x91cb('0x16'),auth[_0x91cb('0x9')](),controller['removeAgents']);module[_0x91cb('0x26')]=router;
\ No newline at end of file
+var _0x6aa7=['create','addDisposition','addAnswer','addApplications','/:id/send','send','status','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','/describe','/:id','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status','/:id/users','getAgents','post'];(function(_0xc447d8,_0x50476e){var _0x1b3168=function(_0x5cc8e0){while(--_0x5cc8e0){_0xc447d8['push'](_0xc447d8['shift']());}};_0x1b3168(++_0x50476e);}(_0x6aa7,0x178));var _0x76aa=function(_0x218ba6,_0x19ffc1){_0x218ba6=_0x218ba6-0x0;var _0x1cc057=_0x6aa7[_0x218ba6];return _0x1cc057;};'use strict';var multer=require(_0x76aa('0x0'));var util=require('util');var path=require(_0x76aa('0x1'));var timeout=require(_0x76aa('0x2'));var express=require(_0x76aa('0x3'));var router=express[_0x76aa('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x76aa('0x5'));var interaction=require(_0x76aa('0x6'));var config=require(_0x76aa('0x7'));var controller=require('./smsAccount.controller');router['get']('/',auth[_0x76aa('0x8')](),controller['index']);router[_0x76aa('0x9')](_0x76aa('0xa'),auth[_0x76aa('0x8')](),controller['describe']);router[_0x76aa('0x9')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller['show']);router[_0x76aa('0x9')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xd')]);router[_0x76aa('0x9')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0xf')]);router[_0x76aa('0x9')](_0x76aa('0x10'),auth['isAuthenticated'](),controller[_0x76aa('0x11')]);router['get'](_0x76aa('0x12'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x13')]);router[_0x76aa('0x9')](_0x76aa('0x14'),controller['statusGet']);router['get'](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x16')]);router[_0x76aa('0x17')]('/',auth['isAuthenticated'](),controller[_0x76aa('0x18')]);router['post'](_0x76aa('0xc'),auth['isAuthenticated'](),controller[_0x76aa('0x19')]);router[_0x76aa('0x17')](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1a')]);router[_0x76aa('0x17')]('/:id/notify',controller['notify']);router[_0x76aa('0x17')](_0x76aa('0x10'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1b')]);router[_0x76aa('0x17')](_0x76aa('0x1c'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x1d')]);router[_0x76aa('0x17')]('/:id/status',controller[_0x76aa('0x1e')]);router[_0x76aa('0x17')](_0x76aa('0x15'),auth['isAuthenticated'](),controller[_0x76aa('0x1f')]);router[_0x76aa('0x20')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x21')]);router[_0x76aa('0x22')](_0x76aa('0xb'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x23')]);router[_0x76aa('0x22')](_0x76aa('0xc'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x24')]);router['delete'](_0x76aa('0xe'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x25')]);router[_0x76aa('0x22')](_0x76aa('0x15'),auth[_0x76aa('0x8')](),controller[_0x76aa('0x26')]);module[_0x76aa('0x27')]=router;
\ No newline at end of file
index fe9aef9..de3033c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe36f=['twilio','connectel','clicksend','plivo','clickatell','bandwidth','csc','infobip','intelepeer','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','generate'];(function(_0x360641,_0x3cf8be){var _0x25056b=function(_0x1472ef){while(--_0x1472ef){_0x360641['push'](_0x360641['shift']());}};_0x25056b(++_0x3cf8be);}(_0xe36f,0x10e));var _0xfe36=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe36f[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xfe36('0x0'));var rs=require(_0xfe36('0x1'));module[_0xfe36('0x2')]={'name':{'type':Sequelize[_0xfe36('0x3')],'unique':_0xfe36('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xfe36('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xfe36('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xfe36('0x3')],'defaultValue':function(){return rs[_0xfe36('0x5')]();}},'phone':{'type':Sequelize[_0xfe36('0x3')]},'type':{'type':Sequelize['ENUM'](_0xfe36('0x6'),'skebby',_0xfe36('0x7'),_0xfe36('0x8'),_0xfe36('0x9'),_0xfe36('0xa'),_0xfe36('0xb'),_0xfe36('0xc'),_0xfe36('0xd'),_0xfe36('0xe'))},'accountSid':{'type':Sequelize[_0xfe36('0x3')]},'authId':{'type':Sequelize[_0xfe36('0x3')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xfe36('0x3')]},'apiKey':{'type':Sequelize[_0xfe36('0x3')]},'applicationId':{'type':Sequelize[_0xfe36('0x3')]},'accountId':{'type':Sequelize[_0xfe36('0x3')]},'senderString':{'type':Sequelize[_0xfe36('0x3')]},'deliveryReport':{'type':Sequelize[_0xfe36('0xf')],'defaultValue':![]},'description':{'type':Sequelize[_0xfe36('0x3')]},'notificationTemplate':{'type':Sequelize[_0xfe36('0x10')],'defaultValue':function(){return _0xfe36('0x11');}},'notificationSound':{'type':Sequelize[_0xfe36('0xf')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xfe36('0xf')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xfe36('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xfe36('0x12')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xfe36('0xf')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0xfe36('0x13')},'mandatoryDisposition':{'type':Sequelize[_0xfe36('0xf')],'defaultValue':![],'comment':_0xfe36('0x14'),'set':function(_0x141cc0){if(!_0x141cc0)this[_0xfe36('0x15')](_0xfe36('0x16'),null);this['setDataValue']('mandatoryDisposition',_0x141cc0);}}};
\ No newline at end of file
+var _0xb795=['clickatell','bandwidth','infobip','BOOLEAN','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','sequelize','randomstring','STRING','name','ENUM','skebby','plivo'];(function(_0x13fdb1,_0x1c6fba){var _0x55f710=function(_0x3b0f2b){while(--_0x3b0f2b){_0x13fdb1['push'](_0x13fdb1['shift']());}};_0x55f710(++_0x1c6fba);}(_0xb795,0x1b3));var _0x5b79=function(_0x581cad,_0x355b2e){_0x581cad=_0x581cad-0x0;var _0x1a9f4b=_0xb795[_0x581cad];return _0x1a9f4b;};'use strict';var Sequelize=require(_0x5b79('0x0'));var rs=require(_0x5b79('0x1'));module['exports']={'name':{'type':Sequelize[_0x5b79('0x2')],'unique':_0x5b79('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x5b79('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x5b79('0x2')],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0x5b79('0x2')]},'type':{'type':Sequelize[_0x5b79('0x4')]('twilio',_0x5b79('0x5'),'connectel','clicksend',_0x5b79('0x6'),_0x5b79('0x7'),_0x5b79('0x8'),'csc',_0x5b79('0x9'),'intelepeer')},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x5b79('0x2')]},'smsMethod':{'type':Sequelize[_0x5b79('0x4')]('SI','TI','GP')},'username':{'type':Sequelize[_0x5b79('0x2')]},'password':{'type':Sequelize[_0x5b79('0x2')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x5b79('0x2')]},'accountId':{'type':Sequelize[_0x5b79('0x2')]},'senderString':{'type':Sequelize['STRING']},'deliveryReport':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'description':{'type':Sequelize[_0x5b79('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x5b79('0xb');}},'notificationSound':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5b79('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5b79('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5b79('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x5b79('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5b79('0xc')],'comment':_0x5b79('0xd')},'mandatoryDisposition':{'type':Sequelize[_0x5b79('0xa')],'defaultValue':![],'comment':_0x5b79('0xe'),'set':function(_0x3fbe40){if(!_0x3fbe40)this[_0x5b79('0xf')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x5b79('0x10'),_0x3fbe40);}}};
\ No newline at end of file
index 1d43322..5e32ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3320=['api','../../config/utils','../../config/license/util','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','result','status','json','offset','undefined','limit','count','set','Content-Range','destroy','get','SmsAccounts','UserProfileResource','end','sendStatus','stack','name','send','Pause','mandatoryDispositionPause','map','SmsAccount','rawAttributes','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','type','VIRTUAL','merge','options','includeAll','findAll','catch','show','params','fields','include','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','getDispositions','findOne','Disposition','order','SmsAccountId','rows','removeDispositions','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','applications','orderBy','priority','asc','account','ValidationError','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ListId','mobile','twilio','from','From','Body','messageId','MessageSid','sender','connectel','Text','results','text','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','Sequelize','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','list','omit','Contacts','defaults','CmContact','contact','SmsInteraction','interaction','created','autoclose','close','SmsMessage','AttachmentId','UserId','User','agent','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>','sequelize','transaction','findAndCountAll','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','color','tag','to\x20is\x20mandatory','List','DESC','Messages','spread','dataValues','push','skebby','skebby_dispatch_id','statusInt','requestid','clicksend','message_id','infobip','redif','DELIVERED','inspect','error_code','groupName','DELIVERED_TO_GATEWAY','message-delivered','bandwidth','DELIVRD','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','state','message-id','addAgents','ids','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','to-csv','ejs','fs-extra','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x3cde36,_0x1fd3c9){var _0x5c99bf=function(_0x53e265){while(--_0x53e265){_0x3cde36['push'](_0x3cde36['shift']());}};_0x5c99bf(++_0x1fd3c9);}(_0x3320,0xc8));var _0x0332=function(_0x335f08,_0x1cc873){_0x335f08=_0x335f08-0x0;var _0x2b4f92=_0x3320[_0x335f08];return _0x2b4f92;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0332('0x0'));var zipdir=require(_0x0332('0x1'));var jsonpatch=require(_0x0332('0x2'));var rp=require(_0x0332('0x3'));var moment=require(_0x0332('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x0332('0x5'));var sox=require('sox');var csv=require(_0x0332('0x6'));var ejs=require(_0x0332('0x7'));var fs=require('fs');var fs_extra=require(_0x0332('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0332('0x9'));var deskjs=require(_0x0332('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0332('0xb'));var authService=require(_0x0332('0xc'));var qs=require(_0x0332('0xd'));var as=require(_0x0332('0xe'));var hardwareService=require(_0x0332('0xf'));var logger=require(_0x0332('0x10'))(_0x0332('0x11'));var utils=require(_0x0332('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x0332('0x13'));var db=require('../../mysqldb')['db'];config[_0x0332('0x14')]=_['defaults'](config[_0x0332('0x14')],{'host':_0x0332('0x15'),'port':0x18eb});var socket=require(_0x0332('0x16'))(new Redis(config[_0x0332('0x14')]));require(_0x0332('0x17'))[_0x0332('0x18')](socket);var jayson=require(_0x0332('0x19'));var client=jayson['client']['http']({'port':0x232c});function respondWithRpcPromise(_0x1c6759,_0x14cd26,_0x3820cd,_0x32ee77){return new BPromise(function(_0x315aaf,_0x528675){var _0x14e1b4=_0x32ee77||client;return _0x14e1b4[_0x0332('0x1a')](_0x1c6759,_0x3820cd)[_0x0332('0x1b')](function(_0x294c9f){logger['info'](_0x0332('0x1c'),_0x14cd26,_0x0332('0x1d'));logger[_0x0332('0x1e')](_0x0332('0x1f'),_0x14cd26,_0x0332('0x1d'),JSON['stringify'](_0x294c9f));if(_0x294c9f[_0x0332('0x20')]){if(_0x294c9f[_0x0332('0x20')][_0x0332('0x21')]===0x1f4){logger['error'](_0x0332('0x1c'),_0x14cd26,_0x294c9f[_0x0332('0x20')]['message']);return _0x528675(_0x294c9f[_0x0332('0x20')][_0x0332('0x22')]);}logger[_0x0332('0x20')](_0x0332('0x1c'),_0x14cd26,_0x294c9f[_0x0332('0x20')][_0x0332('0x22')]);return _0x315aaf(_0x294c9f[_0x0332('0x20')]['message']);}else{logger[_0x0332('0x23')](_0x0332('0x1c'),_0x14cd26,_0x0332('0x1d'));_0x315aaf(_0x294c9f[_0x0332('0x24')][_0x0332('0x22')]);}})['catch'](function(_0x2ede27){logger[_0x0332('0x20')](_0x0332('0x1c'),_0x14cd26,_0x2ede27);_0x528675(_0x2ede27);});});}function respondWithStatusCode(_0x3b56f2,_0x3ca910){_0x3ca910=_0x3ca910||0xcc;return function(_0x2ac98e){if(_0x2ac98e){return _0x3b56f2['sendStatus'](_0x3ca910);}return _0x3b56f2[_0x0332('0x25')](_0x3ca910)['end']();};}function respondWithResult(_0x17dd97,_0x8059a8){_0x8059a8=_0x8059a8||0xc8;return function(_0x262a9f){if(_0x262a9f){return _0x17dd97['status'](_0x8059a8)[_0x0332('0x26')](_0x262a9f);}};}function respondWithFilteredResult(_0x264430,_0x509099){return function(_0x1dd315){if(_0x1dd315){var _0x44ef17=typeof _0x509099[_0x0332('0x27')]===_0x0332('0x28')&&typeof _0x509099[_0x0332('0x29')]===_0x0332('0x28');var _0x16b181=_0x1dd315[_0x0332('0x2a')];var _0x15b8dc=_0x44ef17?0x0:_0x509099[_0x0332('0x27')];var _0x137577=_0x44ef17?_0x1dd315['count']:_0x509099[_0x0332('0x27')]+_0x509099[_0x0332('0x29')];var _0x3f4640;if(_0x137577>=_0x16b181){_0x137577=_0x16b181;_0x3f4640=0xc8;}else{_0x3f4640=0xce;}_0x264430[_0x0332('0x25')](_0x3f4640);return _0x264430[_0x0332('0x2b')](_0x0332('0x2c'),_0x15b8dc+'-'+_0x137577+'/'+_0x16b181)['json'](_0x1dd315);}return null;};}function patchUpdates(_0x38f4f0){return function(_0x33abd2){try{jsonpatch['apply'](_0x33abd2,_0x38f4f0,!![]);}catch(_0x225eb9){return BPromise['reject'](_0x225eb9);}return _0x33abd2['save']();};}function saveUpdates(_0x204795,_0x5972e0){return function(_0x120743){if(_0x120743){return _0x120743['update'](_0x204795)[_0x0332('0x1b')](function(_0x5cab39){return _0x5cab39;});}return null;};}function removeEntity(_0x292e15,_0x315874){return function(_0xb3e5f7){if(_0xb3e5f7){return _0xb3e5f7[_0x0332('0x2d')]()[_0x0332('0x1b')](function(){var _0x41b3f5=_0xb3e5f7[_0x0332('0x2e')]({'plain':!![]});var _0x561d91=_0x0332('0x2f');return db[_0x0332('0x30')][_0x0332('0x2d')]({'where':{'type':_0x561d91,'resourceId':_0x41b3f5['id']}})[_0x0332('0x1b')](function(){return _0xb3e5f7;});})['then'](function(){_0x292e15[_0x0332('0x25')](0xcc)[_0x0332('0x31')]();});}};}function handleEntityNotFound(_0x1140d4,_0x1b0cd7){return function(_0x27c5fb){if(!_0x27c5fb){_0x1140d4[_0x0332('0x32')](0x194);}return _0x27c5fb;};}function handleError(_0x25379e,_0x303e3d){_0x303e3d=_0x303e3d||0x1f4;return function(_0x12325d){logger[_0x0332('0x20')](_0x12325d[_0x0332('0x33')]);if(_0x12325d['name']){delete _0x12325d[_0x0332('0x34')];}_0x25379e[_0x0332('0x25')](_0x303e3d)[_0x0332('0x35')](_0x12325d);};}exports['index']=function(_0x73cf69,_0x48e07a){var _0x545c42={'include':[{'model':db[_0x0332('0x36')],'as':_0x0332('0x37')}]},_0x3fde1f={},_0x193096={'count':0x0,'rows':[]};var _0x39301e=_[_0x0332('0x38')](db[_0x0332('0x39')][_0x0332('0x3a')],function(_0x271849){return{'name':_0x271849['fieldName'],'type':_0x271849['type'][_0x0332('0x3b')]};});_0x3fde1f[_0x0332('0x3c')]=_[_0x0332('0x38')](_0x39301e,_0x0332('0x34'));_0x3fde1f[_0x0332('0x3d')]=_[_0x0332('0x3e')](_0x73cf69[_0x0332('0x3d')]);_0x3fde1f[_0x0332('0x3f')]=_[_0x0332('0x40')](_0x3fde1f[_0x0332('0x3c')],_0x3fde1f[_0x0332('0x3d')]);_0x545c42[_0x0332('0x41')]=_[_0x0332('0x40')](_0x3fde1f[_0x0332('0x3c')],qs['fields'](_0x73cf69['query']['fields']));_0x545c42[_0x0332('0x41')]=_0x545c42['attributes'][_0x0332('0x42')]?_0x545c42[_0x0332('0x41')]:_0x3fde1f['model'];if(!_0x73cf69[_0x0332('0x3d')][_0x0332('0x43')](_0x0332('0x44'))){_0x545c42[_0x0332('0x29')]=qs[_0x0332('0x29')](_0x73cf69[_0x0332('0x3d')][_0x0332('0x29')]);_0x545c42['offset']=qs['offset'](_0x73cf69[_0x0332('0x3d')][_0x0332('0x27')]);}_0x545c42['order']=qs['sort'](_0x73cf69[_0x0332('0x3d')][_0x0332('0x45')]);_0x545c42['where']=qs[_0x0332('0x3f')](_[_0x0332('0x46')](_0x73cf69[_0x0332('0x3d')],_0x3fde1f[_0x0332('0x3f')]),_0x39301e);if(_0x73cf69[_0x0332('0x3d')][_0x0332('0x47')]){_0x545c42['where']=_['merge'](_0x545c42[_0x0332('0x48')],{'$or':_[_0x0332('0x38')](_0x39301e,function(_0xe111da){if(_0xe111da[_0x0332('0x49')]!==_0x0332('0x4a')){var _0x24730b={};_0x24730b[_0xe111da[_0x0332('0x34')]]={'$like':'%'+_0x73cf69['query'][_0x0332('0x47')]+'%'};return _0x24730b;}})});}_0x545c42=_[_0x0332('0x4b')]({},_0x545c42,_0x73cf69[_0x0332('0x4c')]);var _0x374098={'where':_0x545c42[_0x0332('0x48')]};return db[_0x0332('0x39')]['count'](_0x374098)['then'](function(_0x556a6f){_0x193096['count']=_0x556a6f;if(_0x73cf69[_0x0332('0x3d')][_0x0332('0x4d')]){_0x545c42['include']=[{'all':!![]}];}return db[_0x0332('0x39')][_0x0332('0x4e')](_0x545c42);})['then'](function(_0x2d2e96){_0x193096['rows']=_0x2d2e96;return _0x193096;})[_0x0332('0x1b')](respondWithFilteredResult(_0x48e07a,_0x545c42))[_0x0332('0x4f')](handleError(_0x48e07a,null));};exports[_0x0332('0x50')]=function(_0x4ef987,_0x2f67ce){var _0x436c8f={'raw':![],'where':{'id':_0x4ef987[_0x0332('0x51')]['id']},'include':[{'model':db['Pause'],'as':_0x0332('0x37')}]},_0x16ac3d={};_0x16ac3d[_0x0332('0x3c')]=_[_0x0332('0x3e')](db[_0x0332('0x39')][_0x0332('0x3a')]);_0x16ac3d[_0x0332('0x3d')]=_[_0x0332('0x3e')](_0x4ef987[_0x0332('0x3d')]);_0x16ac3d[_0x0332('0x3f')]=_[_0x0332('0x40')](_0x16ac3d['model'],_0x16ac3d['query']);_0x436c8f[_0x0332('0x41')]=_['intersection'](_0x16ac3d[_0x0332('0x3c')],qs[_0x0332('0x52')](_0x4ef987[_0x0332('0x3d')][_0x0332('0x52')]));_0x436c8f[_0x0332('0x41')]=_0x436c8f['attributes'][_0x0332('0x42')]?_0x436c8f[_0x0332('0x41')]:_0x16ac3d[_0x0332('0x3c')];if(_0x4ef987[_0x0332('0x3d')][_0x0332('0x4d')]){_0x436c8f[_0x0332('0x53')]=[{'all':!![]}];}_0x436c8f=_[_0x0332('0x4b')]({},_0x436c8f,_0x4ef987[_0x0332('0x4c')]);return db[_0x0332('0x39')]['find'](_0x436c8f)[_0x0332('0x1b')](handleEntityNotFound(_0x2f67ce,null))[_0x0332('0x1b')](respondWithResult(_0x2f67ce,null))[_0x0332('0x4f')](handleError(_0x2f67ce,null));};exports[_0x0332('0x54')]=function(_0x1ae8a3,_0x26753d){return db[_0x0332('0x39')][_0x0332('0x54')](_0x1ae8a3[_0x0332('0x55')],{})['then'](function(_0x113f46){var _0x8fa72a=_0x1ae8a3['user'][_0x0332('0x2e')]({'plain':!![]});if(!_0x8fa72a)throw new Error(_0x0332('0x56'));if(_0x8fa72a[_0x0332('0x57')]===_0x0332('0x58')){var _0x479492=_0x113f46['get']({'plain':!![]});var _0x15fe4e=_0x0332('0x2f');return db['UserProfileSection'][_0x0332('0x59')]({'where':{'name':_0x15fe4e,'userProfileId':_0x8fa72a[_0x0332('0x5a')]},'raw':!![]})['then'](function(_0x2dffc4){if(_0x2dffc4&&_0x2dffc4[_0x0332('0x5b')]===0x0){return db[_0x0332('0x30')]['create']({'name':_0x479492[_0x0332('0x34')],'resourceId':_0x479492['id'],'type':_0x2dffc4['name'],'sectionId':_0x2dffc4['id']},{})['then'](function(){return _0x113f46;});}else{return _0x113f46;}})[_0x0332('0x4f')](function(_0x11c27c){logger[_0x0332('0x20')](_0x0332('0x5c'),_0x11c27c);throw _0x11c27c;});}return _0x113f46;})['then'](respondWithResult(_0x26753d,0xc9))[_0x0332('0x4f')](handleError(_0x26753d,null));};exports[_0x0332('0x5d')]=function(_0x3c8165,_0x2368ee){if(_0x3c8165[_0x0332('0x55')]['id']){delete _0x3c8165[_0x0332('0x55')]['id'];}return db[_0x0332('0x39')][_0x0332('0x59')]({'where':{'id':_0x3c8165[_0x0332('0x51')]['id']},'include':[{'model':db[_0x0332('0x36')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2368ee,null))[_0x0332('0x1b')](saveUpdates(_0x3c8165[_0x0332('0x55')],null))[_0x0332('0x1b')](respondWithResult(_0x2368ee,null))[_0x0332('0x4f')](handleError(_0x2368ee,null));};exports[_0x0332('0x2d')]=function(_0x18f4a1,_0x2b588f){return db[_0x0332('0x39')]['find']({'where':{'id':_0x18f4a1[_0x0332('0x51')]['id']}})['then'](handleEntityNotFound(_0x2b588f,null))['then'](removeEntity(_0x2b588f,null))[_0x0332('0x4f')](handleError(_0x2b588f,null));};exports[_0x0332('0x5e')]=function(_0x5e34f7,_0x3290ff){return db[_0x0332('0x39')][_0x0332('0x5e')]()[_0x0332('0x1b')](respondWithResult(_0x3290ff,null))[_0x0332('0x4f')](handleError(_0x3290ff,null));};exports[_0x0332('0x5f')]=function(_0x4ee255,_0x56d820,_0x2adefd){if(_0x4ee255[_0x0332('0x55')]['id']){delete _0x4ee255[_0x0332('0x55')]['id'];}return db['SmsAccount'][_0x0332('0x59')]({'where':{'id':_0x4ee255['params']['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x56d820,null))[_0x0332('0x1b')](function(_0x4ff431){if(_0x4ff431){_0x4ee255[_0x0332('0x55')]['SmsAccountId']=_0x4ff431['id'];return db['Disposition'][_0x0332('0x54')](_0x4ee255[_0x0332('0x55')]);}})[_0x0332('0x1b')](respondWithResult(_0x56d820,null))[_0x0332('0x4f')](handleError(_0x56d820,null));};exports[_0x0332('0x60')]=function(_0x575181,_0xfc12cb,_0x3085db){var _0x4d13f8={'raw':![],'where':{}};var _0x52bd4f={};var _0x8a9835={'count':0x0,'rows':[]};return db[_0x0332('0x39')][_0x0332('0x61')]({'where':{'id':_0x575181[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0xfc12cb,null))['then'](function(_0x34d89e){if(_0x34d89e){_0x52bd4f[_0x0332('0x3c')]=_['keys'](db[_0x0332('0x62')][_0x0332('0x3a')]);_0x52bd4f[_0x0332('0x3d')]=_[_0x0332('0x3e')](_0x575181['query']);_0x52bd4f[_0x0332('0x3f')]=_[_0x0332('0x40')](_0x52bd4f['model'],_0x52bd4f[_0x0332('0x3d')]);_0x4d13f8[_0x0332('0x41')]=_['intersection'](_0x52bd4f[_0x0332('0x3c')],qs[_0x0332('0x52')](_0x575181[_0x0332('0x3d')][_0x0332('0x52')]));_0x4d13f8['attributes']=_0x4d13f8[_0x0332('0x41')][_0x0332('0x42')]?_0x4d13f8[_0x0332('0x41')]:_0x52bd4f[_0x0332('0x3c')];if(!_0x575181[_0x0332('0x3d')][_0x0332('0x43')](_0x0332('0x44'))){_0x4d13f8[_0x0332('0x29')]=qs[_0x0332('0x29')](_0x575181[_0x0332('0x3d')][_0x0332('0x29')]);_0x4d13f8[_0x0332('0x27')]=qs[_0x0332('0x27')](_0x575181['query'][_0x0332('0x27')]);}_0x4d13f8[_0x0332('0x63')]=qs['sort'](_0x575181[_0x0332('0x3d')][_0x0332('0x45')]);_0x4d13f8[_0x0332('0x48')]=qs[_0x0332('0x3f')](_[_0x0332('0x46')](_0x575181[_0x0332('0x3d')],_0x52bd4f[_0x0332('0x3f')]));_0x4d13f8[_0x0332('0x48')][_0x0332('0x64')]=_0x34d89e['id'];if(_0x575181[_0x0332('0x3d')][_0x0332('0x47')]){_0x4d13f8[_0x0332('0x48')]=_[_0x0332('0x4b')](_0x4d13f8[_0x0332('0x48')],{'$or':_[_0x0332('0x38')](_0x4d13f8[_0x0332('0x41')],function(_0x1838c6){var _0x4cfa12={};_0x4cfa12[_0x1838c6]={'$like':'%'+_0x575181[_0x0332('0x3d')][_0x0332('0x47')]+'%'};return _0x4cfa12;})});}_0x4d13f8=_[_0x0332('0x4b')]({},_0x4d13f8,_0x575181['options']);return db[_0x0332('0x62')][_0x0332('0x2a')]({'where':_0x4d13f8[_0x0332('0x48')]})[_0x0332('0x1b')](function(_0x4b08bc){_0x8a9835[_0x0332('0x2a')]=_0x4b08bc;if(_0x575181[_0x0332('0x3d')][_0x0332('0x4d')]){_0x4d13f8[_0x0332('0x53')]=[{'all':!![]}];}return db['Disposition'][_0x0332('0x4e')](_0x4d13f8);})['then'](function(_0x556e79){_0x8a9835[_0x0332('0x65')]=_0x556e79;return _0x8a9835;});}})[_0x0332('0x1b')](respondWithFilteredResult(_0xfc12cb,_0x4d13f8))[_0x0332('0x4f')](handleError(_0xfc12cb,null));};exports[_0x0332('0x66')]=function(_0x2e54f8,_0x5864cd,_0x1033c6){return db[_0x0332('0x39')][_0x0332('0x59')]({'where':{'id':_0x2e54f8[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x5864cd,null))[_0x0332('0x1b')](function(_0x1246ed){if(_0x1246ed){return _0x1246ed[_0x0332('0x66')](_0x2e54f8[_0x0332('0x3d')]['ids']);}})[_0x0332('0x1b')](respondWithStatusCode(_0x5864cd,null))[_0x0332('0x4f')](handleError(_0x5864cd,null));};exports['addAnswer']=function(_0x3017e8,_0x43cdb5,_0x1824f9){if(_0x3017e8['body']['id']){delete _0x3017e8[_0x0332('0x55')]['id'];}return db[_0x0332('0x39')]['find']({'where':{'id':_0x3017e8[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x43cdb5,null))[_0x0332('0x1b')](function(_0x166743){if(_0x166743){_0x3017e8[_0x0332('0x55')][_0x0332('0x64')]=_0x166743['id'];return db[_0x0332('0x67')][_0x0332('0x54')](_0x3017e8['body']);}})[_0x0332('0x1b')](respondWithResult(_0x43cdb5,null))['catch'](handleError(_0x43cdb5,null));};exports['getAnswers']=function(_0x3a4949,_0x56b406,_0x2a80e9){var _0x3d845c={'raw':![],'where':{}};var _0x4eb24a={};var _0x2c1850={'count':0x0,'rows':[]};return db['SmsAccount'][_0x0332('0x61')]({'where':{'id':_0x3a4949[_0x0332('0x51')]['id']}})['then'](handleEntityNotFound(_0x56b406,null))[_0x0332('0x1b')](function(_0x544ff7){if(_0x544ff7){_0x4eb24a[_0x0332('0x3c')]=_['keys'](db[_0x0332('0x67')][_0x0332('0x3a')]);_0x4eb24a[_0x0332('0x3d')]=_[_0x0332('0x3e')](_0x3a4949['query']);_0x4eb24a['filters']=_[_0x0332('0x40')](_0x4eb24a[_0x0332('0x3c')],_0x4eb24a[_0x0332('0x3d')]);_0x3d845c[_0x0332('0x41')]=_['intersection'](_0x4eb24a['model'],qs[_0x0332('0x52')](_0x3a4949[_0x0332('0x3d')][_0x0332('0x52')]));_0x3d845c['attributes']=_0x3d845c[_0x0332('0x41')]['length']?_0x3d845c[_0x0332('0x41')]:_0x4eb24a[_0x0332('0x3c')];if(!_0x3a4949[_0x0332('0x3d')][_0x0332('0x43')](_0x0332('0x44'))){_0x3d845c[_0x0332('0x29')]=qs['limit'](_0x3a4949[_0x0332('0x3d')]['limit']);_0x3d845c[_0x0332('0x27')]=qs[_0x0332('0x27')](_0x3a4949[_0x0332('0x3d')][_0x0332('0x27')]);}_0x3d845c['order']=qs[_0x0332('0x45')](_0x3a4949[_0x0332('0x3d')][_0x0332('0x45')]);_0x3d845c[_0x0332('0x48')]=qs[_0x0332('0x3f')](_[_0x0332('0x46')](_0x3a4949['query'],_0x4eb24a['filters']));_0x3d845c[_0x0332('0x48')][_0x0332('0x64')]=_0x544ff7['id'];if(_0x3a4949[_0x0332('0x3d')][_0x0332('0x47')]){_0x3d845c[_0x0332('0x48')]=_[_0x0332('0x4b')](_0x3d845c['where'],{'$or':_['map'](_0x3d845c[_0x0332('0x41')],function(_0x70dcf2){var _0x3e6aa0={};_0x3e6aa0[_0x70dcf2]={'$like':'%'+_0x3a4949[_0x0332('0x3d')]['filter']+'%'};return _0x3e6aa0;})});}_0x3d845c=_[_0x0332('0x4b')]({},_0x3d845c,_0x3a4949['options']);return db[_0x0332('0x67')][_0x0332('0x2a')]({'where':_0x3d845c['where']})['then'](function(_0x471567){_0x2c1850[_0x0332('0x2a')]=_0x471567;if(_0x3a4949[_0x0332('0x3d')][_0x0332('0x4d')]){_0x3d845c[_0x0332('0x53')]=[{'all':!![]}];}return db[_0x0332('0x67')]['findAll'](_0x3d845c);})['then'](function(_0x2e8e46){_0x2c1850[_0x0332('0x65')]=_0x2e8e46;return _0x2c1850;});}})[_0x0332('0x1b')](respondWithFilteredResult(_0x56b406,_0x3d845c))[_0x0332('0x4f')](handleError(_0x56b406,null));};exports[_0x0332('0x68')]=function(_0xa1b12e,_0xd8badd,_0x260697){return db[_0x0332('0x39')]['find']({'where':{'id':_0xa1b12e['params']['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0xd8badd,null))[_0x0332('0x1b')](function(_0x55ce0f){if(_0x55ce0f){return _0x55ce0f[_0x0332('0x68')](_0xa1b12e[_0x0332('0x3d')]['ids']);}})[_0x0332('0x1b')](respondWithStatusCode(_0xd8badd,null))[_0x0332('0x4f')](handleError(_0xd8badd,null));};exports[_0x0332('0x69')]=function(_0xfa3fab,_0xe82801,_0x5f227d){var _0x2be3c7={'channel':_0x0332('0x6a')};var _0x24906c=[];var _0x303c7a=[];var _0x182f39={};return db[_0x0332('0x39')][_0x0332('0x59')]({'where':{'id':_0xfa3fab[_0x0332('0x51')]['id']},'include':[{'model':db[_0x0332('0x6b')],'as':_0x0332('0x6c')}]})[_0x0332('0x1b')](handleEntityNotFound(_0xe82801,null))[_0x0332('0x1b')](function(_0x3dce2b){_0x2be3c7['account']=_0x3dce2b;_0x2be3c7[_0x0332('0x6d')]=_[_0x0332('0x6e')](_0x3dce2b[_0x0332('0x6c')],[_0x0332('0x6f')],[_0x0332('0x70')]);if(_0x2be3c7[_0x0332('0x71')]['Applications']){delete _0x2be3c7[_0x0332('0x71')][_0x0332('0x6c')];}return db['CmContact'][_0x0332('0x5e')]();})[_0x0332('0x1b')](function(_0x5c1f64){if(!_0x5c1f64){throw new db['Sequelize'][(_0x0332('0x72'))](_0x0332('0x73'));}_0x24906c=_['difference'](_[_0x0332('0x3e')](_0x5c1f64),[_0x0332('0x74'),_0x0332('0x75')]);_0x303c7a=_[_0x0332('0x76')](_[_0x0332('0x3e')](_0x5c1f64),[_0x0332('0x74'),'updatedAt',_0x0332('0x77'),_0x0332('0x78')]);_0x2be3c7[_0x0332('0x55')]={'mapKey':_0x0332('0x79')};if(_0x2be3c7['account'][_0x0332('0x49')]){switch(_0x2be3c7['account']['type']){case _0x0332('0x7a'):_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]=_0xfa3fab['body'][_0x0332('0x7c')];_0x2be3c7[_0x0332('0x55')]['body']=_0xfa3fab['body'][_0x0332('0x7d')];_0x2be3c7['body'][_0x0332('0x7e')]=_0xfa3fab[_0x0332('0x55')][_0x0332('0x7f')];break;case'skebby':_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]='+'+_0xfa3fab[_0x0332('0x55')][_0x0332('0x80')];_0x2be3c7['body'][_0x0332('0x55')]=_0xfa3fab[_0x0332('0x55')]['text'];break;case _0x0332('0x81'):_0x2be3c7['body'][_0x0332('0x7b')]=_0xfa3fab['body'][_0x0332('0x7b')];_0x2be3c7['body']['body']=_0xfa3fab[_0x0332('0x55')][_0x0332('0x22')];break;case'clicksend':_0x2be3c7['body'][_0x0332('0x7b')]=_0xfa3fab[_0x0332('0x55')][_0x0332('0x7b')];_0x2be3c7[_0x0332('0x55')][_0x0332('0x55')]=_0xfa3fab[_0x0332('0x55')]['body'];_0x2be3c7[_0x0332('0x55')][_0x0332('0x7e')]=_0xfa3fab['body']['message_id'];break;case'plivo':_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]=_0xfa3fab[_0x0332('0x55')]['From'];_0x2be3c7['body'][_0x0332('0x55')]=_0xfa3fab[_0x0332('0x55')][_0x0332('0x82')];_0x2be3c7[_0x0332('0x55')][_0x0332('0x7e')]=_0xfa3fab['body']['MessageUUID'];break;case'infobip':_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]='+'+_0xfa3fab[_0x0332('0x55')][_0x0332('0x83')][0x0][_0x0332('0x7b')];_0x2be3c7[_0x0332('0x55')][_0x0332('0x55')]=_0xfa3fab[_0x0332('0x55')][_0x0332('0x83')][0x0][_0x0332('0x84')];_0x2be3c7['body'][_0x0332('0x7e')]=_0xfa3fab[_0x0332('0x55')][_0x0332('0x83')][0x0]['messageId'];break;case _0x0332('0x85'):_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]=_0xfa3fab[_0x0332('0x55')]['originatingAddress'];_0x2be3c7['body']['body']=_0xfa3fab['body'][_0x0332('0x86')][_0x0332('0x22')];break;case _0x0332('0x87'):_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]=_0xfa3fab['body'][_0x0332('0x88')];_0x2be3c7[_0x0332('0x55')]['body']=_0xfa3fab[_0x0332('0x55')][_0x0332('0x84')];_0x2be3c7['body'][_0x0332('0x7e')]=_0xfa3fab['body'][_0x0332('0x89')];break;case'bandwidth':_0x2be3c7['body'][_0x0332('0x7e')]=_0xfa3fab[_0x0332('0x55')][0x0][_0x0332('0x22')]['id'];_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')]=_0xfa3fab[_0x0332('0x55')][0x0][_0x0332('0x22')][_0x0332('0x7b')];_0x2be3c7[_0x0332('0x55')]['body']=_0xfa3fab['body'][0x0][_0x0332('0x22')][_0x0332('0x84')];break;case _0x0332('0x8a'):_0x2be3c7['body']['from']=_0xfa3fab['body'][_0x0332('0x7b')];_0x2be3c7[_0x0332('0x55')]['body']=_0xfa3fab[_0x0332('0x55')][_0x0332('0x22')];_0x2be3c7[_0x0332('0x55')]['messageId']=_0xfa3fab['body'][_0x0332('0x8b')];break;}}if(_0x2be3c7[_0x0332('0x55')]['id']){delete _0x2be3c7[_0x0332('0x55')]['id'];}if(_[_0x0332('0x8c')](_0x2be3c7[_0x0332('0x55')]['from'])){throw new db[(_0x0332('0x8d'))]['ValidationError'](_0x0332('0x8e'));}if(_[_0x0332('0x8c')](_0x2be3c7[_0x0332('0x55')][_0x0332('0x55')])||_0x2be3c7[_0x0332('0x55')]['body']===''){throw new db[(_0x0332('0x8d'))][(_0x0332('0x72'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x2be3c7[_0x0332('0x55')][_0x0332('0x8f')])){throw new db['Sequelize'][(_0x0332('0x72'))](_0x0332('0x90')+_0x303c7a);}if(!_[_0x0332('0x91')](_0x303c7a,_0x2be3c7['body'][_0x0332('0x8f')])){throw new db[(_0x0332('0x8d'))][(_0x0332('0x72'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x303c7a);}_0x182f39[_0x2be3c7[_0x0332('0x55')][_0x0332('0x8f')]]=_0x2be3c7[_0x0332('0x55')]['from'];return db[_0x0332('0x92')][_0x0332('0x59')]({'where':{'id':_0x2be3c7[_0x0332('0x71')][_0x0332('0x78')]},'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x182f39,'limit':0x1,'order':[[_0x0332('0x75'),'DESC']]}]});})[_0x0332('0x1b')](handleEntityNotFound(_0xe82801,null))[_0x0332('0x1b')](function(_0x9f40f8){if(_0x9f40f8){_0x2be3c7[_0x0332('0x93')]=_[_0x0332('0x94')](_0x9f40f8,[_0x0332('0x95')]);if(_0x9f40f8[_0x0332('0x95')][_0x0332('0x42')]){return _0x9f40f8['Contacts'][0x0];}var _0x1f5a6d=_[_0x0332('0x96')](_0x2be3c7['body'],{'firstName':_0x2be3c7['body'][_0x0332('0x7b')],'ListId':_0x9f40f8['id']});_0x1f5a6d[_0x2be3c7[_0x0332('0x55')][_0x0332('0x8f')]]=_0x2be3c7[_0x0332('0x55')]['from'];return db[_0x0332('0x97')]['create'](_0x1f5a6d,{'fields':_0x24906c,'raw':!![]});}})[_0x0332('0x1b')](handleEntityNotFound(_0xe82801,null))[_0x0332('0x1b')](function(_0x28b06b){if(_0x28b06b){_0x2be3c7[_0x0332('0x98')]=_0x28b06b;var _0xe066e6={'ContactId':_0x28b06b['id'],'phone':_0x2be3c7['body'][_0x0332('0x7b')],'SmsAccountId':_0xfa3fab[_0x0332('0x51')]['id']};var _0xd53290={'ContactId':_0x28b06b['id'],'SmsAccountId':_0xfa3fab['params']['id'],'closed':![]};return db[_0x0332('0x99')][_0x0332('0x59')]({'where':_0xd53290})['then'](function(_0x20bb41){if(_0x20bb41){return[_0x20bb41,![]];}return db['SmsInteraction'][_0x0332('0x54')](_0xe066e6)[_0x0332('0x1b')](function(_0x5c0ae7){return[_0x5c0ae7,!![]];});});}})['spread'](function(_0x5bfbb7,_0x259ab9){_0x2be3c7[_0x0332('0x9a')]=_0x5bfbb7[_0x0332('0x2e')]({'plain':!![]});_0x2be3c7['interaction'][_0x0332('0x9b')]=![];if(_0x259ab9){if(_0x2be3c7[_0x0332('0x71')][_0x0332('0x9c')]){_0x2be3c7[_0x0332('0x6d')]['push']({'id':0x0,'priority':_0x2be3c7[_0x0332('0x6d')][_0x0332('0x42')]+0x1,'app':_0x0332('0x9d'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x2be3c7['interaction'][_0x0332('0x9b')]=!![];}return db[_0x0332('0x9e')][_0x0332('0x54')]({'phone':_0x2be3c7[_0x0332('0x55')][_0x0332('0x7b')],'messageId':_0x2be3c7[_0x0332('0x55')][_0x0332('0x7e')],'body':_0x2be3c7['body'][_0x0332('0x55')],'SmsAccountId':_0xfa3fab[_0x0332('0x51')]['id'],'SmsInteractionId':_0x5bfbb7['id'],'direction':'in','ContactId':_0x5bfbb7['ContactId'],'AttachmentId':_0x2be3c7[_0x0332('0x55')][_0x0332('0x9f')]});})[_0x0332('0x1b')](function(_0x2bccca){_0x2be3c7[_0x0332('0x22')]=_0x2bccca;if(_0x2be3c7[_0x0332('0x9a')][_0x0332('0xa0')]){return db[_0x0332('0xa1')]['find']({'attributes':['id',_0x0332('0x34')],'where':{'id':_0x2be3c7[_0x0332('0x9a')][_0x0332('0xa0')]}})[_0x0332('0x1b')](function(_0x31f11f){if(_0x31f11f){_0x2be3c7[_0x0332('0x6d')]['unshift']({'id':0x0,'priority':0x0,'app':_0x0332('0xa2'),'appdata':_0x31f11f['name']+','+(_0x2be3c7[_0x0332('0x71')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start','startRouting',_0x2be3c7);});}return respondWithRpcPromise('Start',_0x0332('0xa3'),_0x2be3c7);})[_0x0332('0x1b')](function(_0x40e85e){if(_0x40e85e){var _0x1ca9de=0xc8;var _0x2dbb5d=_0x0332('0xa4');logger[_0x0332('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x2dbb5d,_0x1ca9de,_0x0332('0xa5'));logger[_0x0332('0x1e')](_0x0332('0xa6'),_0x2dbb5d,_0x1ca9de,_0x0332('0xa5'),JSON[_0x0332('0xa7')](_0x40e85e));if(_0x2be3c7[_0x0332('0x71')][_0x0332('0x49')]===_0x0332('0x7a')){return _0xe82801[_0x0332('0x25')](_0x1ca9de)[_0x0332('0x2b')]('Content-Type',_0x0332('0xa8'))[_0x0332('0x35')](_0x0332('0xa9'));}else{return _0xe82801['status'](_0x1ca9de)[_0x0332('0x26')](_0x40e85e);}}})[_0x0332('0x4f')](handleError(_0xe82801,null));};exports['addApplications']=function(_0x23554a,_0x4262a4,_0x4c82fb){return db['SmsAccount'][_0x0332('0x61')]({'where':{'id':_0x23554a[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x4262a4,null))[_0x0332('0x1b')](function(_0x1644c5){if(_0x1644c5){return db[_0x0332('0xaa')][_0x0332('0xab')](function(_0xdbb699){return db[_0x0332('0x6b')][_0x0332('0x2d')]({'where':{'SmsAccountId':_0x23554a['params']['id']},'transaction':_0xdbb699})[_0x0332('0x1b')](function(_0x2e5242){var _0x46a7f1=_[_0x0332('0x38')](_0x23554a[_0x0332('0x55')],function(_0x2a6d71){_0x2a6d71[_0x0332('0x64')]=_0x23554a[_0x0332('0x51')]['id'];return _0x2a6d71;});return db[_0x0332('0x6b')]['bulkCreate'](_0x46a7f1,{'transaction':_0xdbb699});});})[_0x0332('0x1b')](function(){return db[_0x0332('0x6b')][_0x0332('0xac')]({'where':{'SmsAccountId':_0x23554a['params']['id']},'order':_0x0332('0x6f')});});}})[_0x0332('0x1b')](respondWithResult(_0x4262a4,null))[_0x0332('0x4f')](handleError(_0x4262a4,null));};exports[_0x0332('0xad')]=function(_0x5d5794,_0x15ca16,_0x307750){var _0x179e17={};var _0x5d9858={};var _0xfb4db8;var _0x5ea91e;return db[_0x0332('0x39')][_0x0332('0x61')]({'where':{'id':_0x5d5794[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x15ca16,null))[_0x0332('0x1b')](function(_0x457d65){if(_0x457d65){_0xfb4db8=_0x457d65;_0x5d9858[_0x0332('0x3c')]=_[_0x0332('0x3e')](db[_0x0332('0x6b')]['rawAttributes']);_0x5d9858[_0x0332('0x3d')]=_[_0x0332('0x3e')](_0x5d5794[_0x0332('0x3d')]);_0x5d9858['filters']=_[_0x0332('0x40')](_0x5d9858[_0x0332('0x3c')],_0x5d9858[_0x0332('0x3d')]);_0x179e17[_0x0332('0x41')]=_[_0x0332('0x40')](_0x5d9858[_0x0332('0x3c')],qs[_0x0332('0x52')](_0x5d5794[_0x0332('0x3d')][_0x0332('0x52')]));_0x179e17[_0x0332('0x41')]=_0x179e17[_0x0332('0x41')][_0x0332('0x42')]?_0x179e17[_0x0332('0x41')]:_0x5d9858[_0x0332('0x3c')];_0x179e17['order']=qs['sort'](_0x5d5794[_0x0332('0x3d')][_0x0332('0x45')]);_0x179e17['where']=qs[_0x0332('0x3f')](_['pick'](_0x5d5794[_0x0332('0x3d')],_0x5d9858['filters']));if(_0x5d5794['query'][_0x0332('0x47')]){_0x179e17[_0x0332('0x48')]=_['merge'](_0x179e17['where'],{'$or':_['map'](_0x179e17[_0x0332('0x41')],function(_0x35feb9){var _0x13deb2={};_0x13deb2[_0x35feb9]={'$like':'%'+_0x5d5794[_0x0332('0x3d')][_0x0332('0x47')]+'%'};return _0x13deb2;})});}_0x179e17=_['merge']({},_0x179e17,_0x5d5794[_0x0332('0x4c')]);return _0xfb4db8[_0x0332('0xad')](_0x179e17);}})[_0x0332('0x1b')](function(_0x58cadd){if(_0x58cadd){_0x5ea91e=_0x58cadd['length'];if(!_0x5d5794[_0x0332('0x3d')][_0x0332('0x43')](_0x0332('0x44'))){_0x179e17[_0x0332('0x29')]=qs[_0x0332('0x29')](_0x5d5794[_0x0332('0x3d')][_0x0332('0x29')]);_0x179e17['offset']=qs[_0x0332('0x27')](_0x5d5794[_0x0332('0x3d')]['offset']);}return _0xfb4db8['getApplications'](_0x179e17);}})[_0x0332('0x1b')](function(_0x10e699){if(_0x10e699){return _0x10e699?{'count':_0x5ea91e,'rows':_0x10e699}:null;}})[_0x0332('0x1b')](respondWithResult(_0x15ca16,null))[_0x0332('0x4f')](handleError(_0x15ca16,null));};exports[_0x0332('0xae')]=function(_0x309632,_0x3ddf83,_0x87c468){var _0x6bc148={'raw':![],'where':{}};var _0x261ffe={};var _0x1cf095={'count':0x0,'rows':[]};return db[_0x0332('0x39')][_0x0332('0x61')]({'where':{'id':_0x309632[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x3ddf83,null))['then'](function(_0x4998b6){if(_0x4998b6){_0x261ffe[_0x0332('0x3c')]=_['keys'](db[_0x0332('0x99')][_0x0332('0x3a')]);_0x261ffe[_0x0332('0x3d')]=_[_0x0332('0x3e')](_0x309632[_0x0332('0x3d')]);_0x261ffe['filters']=_[_0x0332('0x40')](_0x261ffe[_0x0332('0x3c')],_0x261ffe[_0x0332('0x3d')]);_0x6bc148[_0x0332('0x41')]=_[_0x0332('0x40')](_0x261ffe[_0x0332('0x3c')],qs[_0x0332('0x52')](_0x309632[_0x0332('0x3d')]['fields']));_0x6bc148['attributes']=_0x6bc148['attributes'][_0x0332('0x42')]?_0x6bc148[_0x0332('0x41')]:_0x261ffe['model'];if(!_0x309632[_0x0332('0x3d')][_0x0332('0x43')](_0x0332('0x44'))){_0x6bc148['limit']=qs['limit'](_0x309632[_0x0332('0x3d')][_0x0332('0x29')]);_0x6bc148[_0x0332('0x27')]=qs[_0x0332('0x27')](_0x309632[_0x0332('0x3d')][_0x0332('0x27')]);}_0x6bc148[_0x0332('0x63')]=qs['sort'](_0x309632[_0x0332('0x3d')]['sort']);_0x6bc148[_0x0332('0x48')]=qs['filters'](_[_0x0332('0x46')](_0x309632[_0x0332('0x3d')],_0x261ffe[_0x0332('0x3f')]));_0x6bc148[_0x0332('0x48')][_0x0332('0x64')]=_0x4998b6['id'];if(_0x309632[_0x0332('0x3d')][_0x0332('0x47')]){_0x6bc148[_0x0332('0x48')]=_[_0x0332('0x4b')](_0x6bc148[_0x0332('0x48')],{'$or':_[_0x0332('0x38')](_0x6bc148[_0x0332('0x41')],function(_0x9b91c7){var _0x16dfa9={};_0x16dfa9[_0x9b91c7]={'$like':'%'+_0x309632[_0x0332('0x3d')][_0x0332('0x47')]+'%'};return _0x16dfa9;})});}_0x6bc148=_[_0x0332('0x4b')]({},_0x6bc148,_0x309632[_0x0332('0x4c')]);return db[_0x0332('0x99')][_0x0332('0x2a')]({'where':_0x6bc148[_0x0332('0x48')]})['then'](function(_0x3a8ad2){_0x1cf095[_0x0332('0x2a')]=_0x3a8ad2;if(_0x309632[_0x0332('0x3d')][_0x0332('0x4d')]){_0x6bc148['include']=[{'model':db[_0x0332('0x97')],'as':_0x0332('0xaf'),'required':![]},{'model':db[_0x0332('0xa1')],'as':_0x0332('0xb0'),'attributes':[_0x0332('0x34'),_0x0332('0xb1'),_0x0332('0xb2')],'required':![]},{'model':db[_0x0332('0xb3')],'as':'Tags','attributes':['id',_0x0332('0x34'),_0x0332('0xb4')],'where':_0x309632[_0x0332('0x3d')][_0x0332('0xb5')]?{'id':_0x309632[_0x0332('0x3d')][_0x0332('0xb5')]}:undefined,'required':_0x309632['query'][_0x0332('0xb5')]?!![]:![]}];}return db[_0x0332('0x99')]['findAll'](_0x6bc148);})[_0x0332('0x1b')](function(_0x2f3a52){_0x1cf095[_0x0332('0x65')]=_0x2f3a52;return _0x1cf095;});}})[_0x0332('0x1b')](respondWithFilteredResult(_0x3ddf83,_0x6bc148))[_0x0332('0x4f')](handleError(_0x3ddf83,null));};exports['send']=function(_0x59af66,_0x53cf33,_0x5b1350){var _0x3fb22e,_0x4be98a,_0x448fa3;if(_[_0x0332('0x8c')](_0x59af66[_0x0332('0x55')]['body'])||_0x59af66['body'][_0x0332('0x55')]===''){throw new db[(_0x0332('0x8d'))][(_0x0332('0x72'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x59af66[_0x0332('0x55')]['to'])){throw new db[(_0x0332('0x8d'))][(_0x0332('0x72'))](_0x0332('0xb6'));}_0x3fb22e=_0x59af66[_0x0332('0x55')]['to'];return db[_0x0332('0x39')]['find']({'where':{'id':_0x59af66[_0x0332('0x51')]['id']},'include':[{'model':db[_0x0332('0x92')],'as':_0x0332('0xb7'),'include':[{'model':db[_0x0332('0x97')],'as':'Contacts','where':{'mobile':_0x3fb22e},'limit':0x1,'order':[['updatedAt',_0x0332('0xb8')]]}]}]})['then'](handleEntityNotFound(_0x53cf33,null))[_0x0332('0x1b')](function(_0x1ade6e){if(_0x1ade6e&&_0x1ade6e[_0x0332('0xb7')]){_0x4be98a=_0x1ade6e[_0x0332('0x2e')]({'plain':!![]});if(_0x4be98a[_0x0332('0xb7')]&&_0x4be98a['List'][_0x0332('0x95')][_0x0332('0x42')]){return _0x4be98a[_0x0332('0xb7')][_0x0332('0x95')][0x0];}return db[_0x0332('0x97')]['create'](_['defaults'](_0x59af66[_0x0332('0x55')],{'firstName':_0x3fb22e,'mobile':_0x3fb22e,'phone':_0x3fb22e,'ListId':_0x4be98a['ListId']}));}})['then'](handleEntityNotFound(_0x53cf33,null))[_0x0332('0x1b')](function(_0x39fac9){if(_0x39fac9){_0x448fa3=_0x39fac9;return db['SmsInteraction'][_0x0332('0x59')]({'where':{'ContactId':_0x448fa3['id'],'closed':![],'SmsAccountId':_0x4be98a['id']}})[_0x0332('0x1b')](function(_0x1c6c40){if(_0x1c6c40){return[_0x1c6c40,![]];}return db[_0x0332('0x99')][_0x0332('0x54')]({'UserId':_0x59af66['user']['id'],'ContactId':_0x448fa3['id'],'SmsAccountId':_0x4be98a['id'],'phone':_0x3fb22e,'firstMsgDirection':'out','Messages':[_[_0x0332('0x4b')](_0x59af66[_0x0332('0x55')],{'read':![],'body':_0x59af66['body'][_0x0332('0x55')],'phone':_0x3fb22e,'SmsAccountId':_0x4be98a['id'],'UserId':_0x59af66[_0x0332('0x58')]['id'],'ContactId':_0x448fa3['id']})]},{'include':[{'model':db[_0x0332('0x9e')],'as':_0x0332('0xb9')}]})[_0x0332('0x1b')](function(_0x384b5a){return[_0x384b5a,!![]];});});}})[_0x0332('0xba')](function(_0xf3cfb3,_0x144066){if(_0x144066){return _0xf3cfb3;}return db[_0x0332('0x9e')][_0x0332('0x54')](_[_0x0332('0x4b')](_0x59af66[_0x0332('0x55')],{'read':![],'body':_0x59af66[_0x0332('0x55')][_0x0332('0x55')],'phone':_0x3fb22e,'SmsAccountId':_0x4be98a['id'],'SmsInteractionId':_0xf3cfb3['id'],'UserId':_0x59af66[_0x0332('0x58')]['id'],'ContactId':_0x448fa3['id']}))[_0x0332('0x1b')](function(_0x26c778){_0xf3cfb3[_0x0332('0xbb')][_0x0332('0xb9')]=[];_0xf3cfb3[_0x0332('0xbb')][_0x0332('0xb9')][_0x0332('0xbc')](_0x26c778[_0x0332('0xbb')]);return _0xf3cfb3;});})['then'](respondWithResult(_0x53cf33,null))[_0x0332('0x4f')](handleError(_0x53cf33,null));};exports[_0x0332('0x25')]=function(_0x187ea4,_0x200ac6,_0x3f245e){if(_0x187ea4[_0x0332('0x55')]['id']){delete _0x187ea4[_0x0332('0x55')]['id'];}var _0x13c0be,_0x184140,_0x4eeaca;return db[_0x0332('0x39')][_0x0332('0x59')]({'where':{'id':_0x187ea4[_0x0332('0x51')]['id']}})['then'](handleEntityNotFound(_0x200ac6,null))['then'](function(_0x346b22){if(_0x346b22){_0x4eeaca=_0x346b22;logger[_0x0332('0x1e')](_0x0332('0x1f'),_0x0332('0x25'),'received\x20delivery\x20report\x20from',_0x346b22['type'],util['inspect'](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));switch(_0x346b22['type']){case _0x0332('0xbd'):if(_0x187ea4['body'][_0x0332('0xbe')]&&_0x187ea4[_0x0332('0x55')][_0x0332('0x25')]){_0x184140=_0x187ea4['body']['status'];return db[_0x0332('0x9e')]['find']({'where':{'messageId':_0x187ea4['body']['skebby_dispatch_id']}});}break;case _0x0332('0x81'):if(_0x187ea4[_0x0332('0x55')]['requestid']&&_0x187ea4[_0x0332('0x55')][_0x0332('0xbf')]){_0x184140=_0x187ea4[_0x0332('0x55')][_0x0332('0xbf')];return db['SmsMessage'][_0x0332('0x59')]({'where':{'messageId':_0x187ea4[_0x0332('0x55')][_0x0332('0xc0')]}});}break;case _0x0332('0xc1'):if(_0x187ea4['body'][_0x0332('0xc2')]&&_0x187ea4[_0x0332('0x55')]['status_code']){_0x184140=_0x187ea4[_0x0332('0x55')]['status_code'];return db[_0x0332('0x9e')][_0x0332('0x59')]({'where':{'messageId':_0x187ea4[_0x0332('0x55')][_0x0332('0xc2')]}});}break;case _0x0332('0xc3'):var _0x13769e=_0x187ea4[_0x0332('0x55')][_0x0332('0x83')][0x0];if(_0x13769e[_0x0332('0x7e')]&&_0x13769e[_0x0332('0x25')]['groupName']==='DELIVERED'){_0x184140=_0x13769e[_0x0332('0x25')]['groupName'];return db[_0x0332('0x9e')][_0x0332('0x59')]({'where':{'messageId':_0x13769e['messageId']}});}break;case _0x0332('0x87'):if(_0x187ea4[_0x0332('0x55')][_0x0332('0x7e')]&&_0x187ea4['body'][_0x0332('0x25')]){_0x184140=_0x187ea4[_0x0332('0x55')][_0x0332('0x25')];return db['SmsMessage'][_0x0332('0x59')]({'where':{'messageId':_0x187ea4['body'][_0x0332('0x7e')]}});}break;case'bandwidth':if(_0x187ea4[_0x0332('0x55')][0x0][_0x0332('0x22')]['id']){_0x184140=_0x187ea4[_0x0332('0x55')][0x0][_0x0332('0x49')];return db[_0x0332('0x9e')]['find']({'where':{'messageId':_0x187ea4['body'][0x0][_0x0332('0x22')]['id']}});}break;case _0x0332('0x8a'):if(_0x187ea4['body']['redif']&&_0x187ea4[_0x0332('0x55')][_0x0332('0x25')]){_0x184140=_0x187ea4['body'][_0x0332('0x25')];return db[_0x0332('0x9e')]['find']({'where':{'messageId':_0x187ea4[_0x0332('0x55')][_0x0332('0xc4')]}});}break;}}})[_0x0332('0x1b')](handleEntityNotFound(_0x200ac6,null))[_0x0332('0x1b')](function(_0xbd1ce0){if(_0xbd1ce0){_0x13c0be=_0xbd1ce0;switch(_0x4eeaca[_0x0332('0x49')]){case _0x0332('0xbd'):if(_0x184140===_0x0332('0xc5')){return _0x13c0be[_0x0332('0x5d')]({'read':!![]});}else{logger[_0x0332('0x20')](_0x0332('0x1f'),_0x0332('0x25'),_0x0332('0xbd'),util['inspect'](_0x187ea4['body'],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x184140==='1'){return _0x13c0be[_0x0332('0x5d')]({'read':!![]});}else{logger['error'](_0x0332('0x1f'),_0x0332('0x25'),_0x0332('0xbd'),util[_0x0332('0xc6')](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));}break;case _0x0332('0xc1'):if(!_0x187ea4['body'][_0x0332('0xc7')]&&_0x184140>=0xc8&&_0x184140<=0xce){return _0x13c0be[_0x0332('0x5d')]({'read':!![]});}else{logger[_0x0332('0x20')](_0x0332('0x1f'),_0x0332('0x25'),_0x0332('0xc1'),util['inspect'](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));}break;case _0x0332('0xc3'):var _0x5bfaab=_0x187ea4[_0x0332('0x55')][_0x0332('0x83')][0x0];if(_0x5bfaab[_0x0332('0x25')][_0x0332('0xc8')]===_0x0332('0xc5')){return _0x13c0be[_0x0332('0x5d')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x0332('0x25'),_0x0332('0xc3'),util[_0x0332('0xc6')](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x184140==_0x0332('0xc9')||_0x184140=='RECEIVED_BY_RECIPIENT'){return _0x13c0be['update']({'read':!![]});}else{logger['error'](_0x0332('0x1f'),_0x0332('0x25'),'clickatell',util['inspect'](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x184140==_0x0332('0xca')){return _0x13c0be[_0x0332('0x5d')]({'read':!![]});}else{logger[_0x0332('0x20')](_0x0332('0x1f'),_0x0332('0x25'),_0x0332('0xcb'),util[_0x0332('0xc6')](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));}break;case _0x0332('0x8a'):if(_0x184140===_0x0332('0xcc')||_0x184140===_0x0332('0xcd')){return _0x13c0be[_0x0332('0x5d')]({'read':!![]});}else{logger['error'](_0x0332('0x1f'),_0x0332('0x25'),'intelepeer',util[_0x0332('0xc6')](_0x187ea4[_0x0332('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x13c0be;}})[_0x0332('0x1b')](respondWithResult(_0x200ac6,null))[_0x0332('0x4f')](handleError(_0x200ac6,null));};exports[_0x0332('0xce')]=function(_0x4ebf65,_0x2b6121,_0x5e51ff){var _0x39a50d,_0x1d7825,_0x21bb68;return db['SmsAccount']['find']({'where':{'id':_0x4ebf65[_0x0332('0x51')]['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x2b6121,null))[_0x0332('0x1b')](function(_0x4ea5b1){if(_0x4ea5b1){_0x21bb68=_0x4ea5b1;logger[_0x0332('0x1e')](_0x0332('0x1f'),_0x0332('0x25'),_0x0332('0xcf'),_0x4ea5b1[_0x0332('0x49')],util[_0x0332('0xc6')](_0x4ebf65[_0x0332('0x3d')],{'showHidden':![],'depth':null}));switch(_0x4ea5b1[_0x0332('0x49')]){case _0x0332('0x85'):if(_0x4ebf65[_0x0332('0x3d')]['message-id']&&_0x4ebf65['query'][_0x0332('0xd0')]){_0x1d7825=_0x4ebf65[_0x0332('0x3d')][_0x0332('0xd0')];return db[_0x0332('0x9e')][_0x0332('0x59')]({'where':{'messageId':_0x4ebf65[_0x0332('0x3d')][_0x0332('0xd1')]}});}break;}}})[_0x0332('0x1b')](handleEntityNotFound(_0x2b6121,null))[_0x0332('0x1b')](function(_0x2185f4){if(_0x2185f4){_0x39a50d=_0x2185f4;switch(_0x21bb68['type']){case _0x0332('0x85'):if(_0x1d7825==='2'||_0x1d7825==='6'){return _0x39a50d['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x0332('0x85'),util[_0x0332('0xc6')](_0x4ebf65[_0x0332('0x3d')],{'showHidden':![],'depth':null}));};break;}return _0x39a50d;}})[_0x0332('0x1b')](respondWithResult(_0x2b6121,null))[_0x0332('0x4f')](handleError(_0x2b6121,null));};exports[_0x0332('0xd2')]=function(_0x631c73,_0x4036be,_0x333a62){return db['SmsAccount']['find']({'where':{'id':_0x631c73['params']['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x4036be,null))[_0x0332('0x1b')](function(_0x252502){if(_0x252502){return _0x252502[_0x0332('0xd2')](_0x631c73[_0x0332('0x55')][_0x0332('0xd3')],_[_0x0332('0x94')](_0x631c73[_0x0332('0x55')],[_0x0332('0xd3'),'id'])||{})[_0x0332('0xba')](function(_0x3b04e3){for(var _0x4c1625=0x0;_0x4c1625<_0x631c73['body'][_0x0332('0xd3')]['length'];_0x4c1625+=0x1){socket[_0x0332('0xd4')]('userSmsAccount:save',{'UserId':Number(_0x631c73[_0x0332('0x55')][_0x0332('0xd3')][_0x4c1625]),'SmsAccountId':Number(_0x631c73[_0x0332('0x51')]['id'])});}return _0x3b04e3;});}})[_0x0332('0x1b')](respondWithResult(_0x4036be,null))[_0x0332('0x4f')](handleError(_0x4036be,null));};exports['removeAgents']=function(_0x439732,_0x5a58e4,_0x5a61c2){return db['SmsAccount'][_0x0332('0x59')]({'where':{'id':_0x439732['params']['id']}})[_0x0332('0x1b')](handleEntityNotFound(_0x5a58e4,null))[_0x0332('0x1b')](function(_0x50c299){if(_0x50c299){return _0x50c299[_0x0332('0xd5')](_0x439732['query']['ids'])['then'](function(){if(_[_0x0332('0xd6')](_0x439732[_0x0332('0x3d')]['ids'])){for(var _0x4eb3d8=0x0;_0x4eb3d8<_0x439732['query'][_0x0332('0xd3')][_0x0332('0x42')];_0x4eb3d8+=0x1){socket[_0x0332('0xd4')](_0x0332('0xd7'),{'UserId':Number(_0x439732[_0x0332('0x3d')]['ids'][_0x4eb3d8]),'SmsAccountId':Number(_0x439732['params']['id'])});}}else{socket[_0x0332('0xd4')](_0x0332('0xd7'),{'UserId':Number(_0x439732[_0x0332('0x3d')][_0x0332('0xd3')]),'SmsAccountId':Number(_0x439732[_0x0332('0x51')]['id'])});}});}})[_0x0332('0x1b')](respondWithStatusCode(_0x5a58e4,null))['catch'](handleError(_0x5a58e4,null));};exports[_0x0332('0xd8')]=function(_0x58cb86,_0x4f8b5e,_0x1fe9f0){var _0xa66d74={};var _0xd4950c={};var _0x423deb;var _0x3d85fa;return db['SmsAccount'][_0x0332('0x61')]({'where':{'id':_0x58cb86[_0x0332('0x51')]['id']}})['then'](handleEntityNotFound(_0x4f8b5e,null))[_0x0332('0x1b')](function(_0x5d7139){if(_0x5d7139){_0x423deb=_0x5d7139;_0xd4950c[_0x0332('0x3c')]=_[_0x0332('0x3e')](db['User'][_0x0332('0x3a')]);_0xd4950c['query']=_['keys'](_0x58cb86[_0x0332('0x3d')]);_0xd4950c['filters']=_[_0x0332('0x40')](_0xd4950c[_0x0332('0x3c')],_0xd4950c[_0x0332('0x3d')]);_0xa66d74['attributes']=_['intersection'](_0xd4950c[_0x0332('0x3c')],qs['fields'](_0x58cb86['query'][_0x0332('0x52')]));_0xa66d74[_0x0332('0x41')]=_0xa66d74[_0x0332('0x41')][_0x0332('0x42')]?_0xa66d74['attributes']:_0xd4950c['model'];_0xa66d74[_0x0332('0x63')]=qs['sort'](_0x58cb86[_0x0332('0x3d')][_0x0332('0x45')]);_0xa66d74['where']=qs[_0x0332('0x3f')](_[_0x0332('0x46')](_0x58cb86[_0x0332('0x3d')],_0xd4950c[_0x0332('0x3f')]));if(_0x58cb86[_0x0332('0x3d')][_0x0332('0x47')]){_0xa66d74[_0x0332('0x48')]=_[_0x0332('0x4b')](_0xa66d74['where'],{'$or':_[_0x0332('0x38')](_0xa66d74[_0x0332('0x41')],function(_0x25832b){var _0x2126ec={};_0x2126ec[_0x25832b]={'$like':'%'+_0x58cb86[_0x0332('0x3d')][_0x0332('0x47')]+'%'};return _0x2126ec;})});}_0xa66d74=_[_0x0332('0x4b')]({},_0xa66d74,_0x58cb86[_0x0332('0x4c')]);return _0x423deb['getAgents'](_0xa66d74);}})[_0x0332('0x1b')](function(_0x1e0398){if(_0x1e0398){_0x3d85fa=_0x1e0398['length'];if(!_0x58cb86[_0x0332('0x3d')][_0x0332('0x43')](_0x0332('0x44'))){_0xa66d74['limit']=qs['limit'](_0x58cb86[_0x0332('0x3d')][_0x0332('0x29')]);_0xa66d74[_0x0332('0x27')]=qs[_0x0332('0x27')](_0x58cb86[_0x0332('0x3d')][_0x0332('0x27')]);}return _0x423deb[_0x0332('0xd8')](_0xa66d74);}})['then'](function(_0x30b6b3){if(_0x30b6b3){return _0x30b6b3?{'count':_0x3d85fa,'rows':_0x30b6b3}:null;}})[_0x0332('0x1b')](respondWithResult(_0x4f8b5e,null))['catch'](handleError(_0x4f8b5e,null));};
\ No newline at end of file
+var _0x2ecd=['get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','mandatoryDispositionPause','describe','SmsAccountId','Disposition','findOne','nolimit','filter','options','removeDispositions','CannedAnswer','sort','removeAnswers','sms','SmsApplication','Applications','account','applications','orderBy','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','type','twilio','Body','messageId','MessageSid','skebby','from','sender','text','connectel','clicksend','plivo','From','Text','results','csc','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','refid','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','Sequelize','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','omit','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','ContactId','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','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','sequelize','transaction','bulkCreate','findAndCountAll','priority','getApplications','Owner','fullname','internal','Tag','Tags','color','tag','to\x20is\x20mandatory','List','defaults','out','SmsMessage','Messages','dataValues','inspect','skebby_dispatch_id','requestid','statusInt','message_id','status_code','infobip','groupName','DELIVERED','bandwidth','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','received\x20delivery\x20report\x20from','state','message-id','ids','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','SmsAccounts','UserProfileResource','stack','name','send','Pause','map','SmsAccount','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','pick','where','merge','includeAll','include','findAll','rows','show','params','keys','find','create','user'];(function(_0x4ddc67,_0x2c7f2d){var _0x3f5764=function(_0x10ac1c){while(--_0x10ac1c){_0x4ddc67['push'](_0x4ddc67['shift']());}};_0x3f5764(++_0x2c7f2d);}(_0x2ecd,0x176));var _0xd2ec=function(_0x51f173,_0x40e188){_0x51f173=_0x51f173-0x0;var _0xf9cb3b=_0x2ecd[_0x51f173];return _0xf9cb3b;};'use strict';var emlformat=require(_0xd2ec('0x0'));var rimraf=require(_0xd2ec('0x1'));var zipdir=require(_0xd2ec('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd2ec('0x3'));var moment=require(_0xd2ec('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd2ec('0x5'));var util=require(_0xd2ec('0x6'));var path=require(_0xd2ec('0x7'));var sox=require(_0xd2ec('0x8'));var csv=require('to-csv');var ejs=require(_0xd2ec('0x9'));var fs=require('fs');var fs_extra=require(_0xd2ec('0xa'));var _=require(_0xd2ec('0xb'));var squel=require(_0xd2ec('0xc'));var crypto=require(_0xd2ec('0xd'));var jsforce=require(_0xd2ec('0xe'));var deskjs=require(_0xd2ec('0xf'));var toCsv=require(_0xd2ec('0x10'));var querystring=require(_0xd2ec('0x11'));var Papa=require(_0xd2ec('0x12'));var Redis=require('ioredis');var authService=require(_0xd2ec('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xd2ec('0x14'));var hardwareService=require(_0xd2ec('0x15'));var logger=require(_0xd2ec('0x16'))(_0xd2ec('0x17'));var utils=require(_0xd2ec('0x18'));var config=require(_0xd2ec('0x19'));var licenseUtil=require(_0xd2ec('0x1a'));var db=require(_0xd2ec('0x1b'))['db'];config['redis']=_['defaults'](config[_0xd2ec('0x1c')],{'host':_0xd2ec('0x1d'),'port':0x18eb});var socket=require(_0xd2ec('0x1e'))(new Redis(config[_0xd2ec('0x1c')]));require(_0xd2ec('0x1f'))[_0xd2ec('0x20')](socket);var jayson=require(_0xd2ec('0x21'));var client=jayson[_0xd2ec('0x22')][_0xd2ec('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x337d40,_0x53937a,_0x3d653c,_0x28dd92){return new BPromise(function(_0x21c9d8,_0x57a1e1){var _0x1ac21c=_0x28dd92||client;return _0x1ac21c[_0xd2ec('0x24')](_0x337d40,_0x3d653c)[_0xd2ec('0x25')](function(_0x23c009){logger[_0xd2ec('0x26')](_0xd2ec('0x27'),_0x53937a,_0xd2ec('0x28'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x53937a,'request\x20sent',JSON[_0xd2ec('0x29')](_0x23c009));if(_0x23c009[_0xd2ec('0x2a')]){if(_0x23c009[_0xd2ec('0x2a')][_0xd2ec('0x2b')]===0x1f4){logger[_0xd2ec('0x2a')](_0xd2ec('0x27'),_0x53937a,_0x23c009[_0xd2ec('0x2a')]['message']);return _0x57a1e1(_0x23c009['error'][_0xd2ec('0x2c')]);}logger['error'](_0xd2ec('0x27'),_0x53937a,_0x23c009['error'][_0xd2ec('0x2c')]);return _0x21c9d8(_0x23c009[_0xd2ec('0x2a')][_0xd2ec('0x2c')]);}else{logger[_0xd2ec('0x26')]('SmsAccount,\x20%s,\x20%s',_0x53937a,_0xd2ec('0x28'));_0x21c9d8(_0x23c009[_0xd2ec('0x2d')][_0xd2ec('0x2c')]);}})[_0xd2ec('0x2e')](function(_0x3a5c83){logger[_0xd2ec('0x2a')]('SmsAccount,\x20%s,\x20%s',_0x53937a,_0x3a5c83);_0x57a1e1(_0x3a5c83);});});}function respondWithStatusCode(_0x11a6b1,_0x25698e){_0x25698e=_0x25698e||0xcc;return function(_0x427586){if(_0x427586){return _0x11a6b1[_0xd2ec('0x2f')](_0x25698e);}return _0x11a6b1[_0xd2ec('0x30')](_0x25698e)[_0xd2ec('0x31')]();};}function respondWithResult(_0x331155,_0x2642f1){_0x2642f1=_0x2642f1||0xc8;return function(_0xa606a3){if(_0xa606a3){return _0x331155[_0xd2ec('0x30')](_0x2642f1)[_0xd2ec('0x32')](_0xa606a3);}};}function respondWithFilteredResult(_0x276064,_0x53c696){return function(_0x470d79){if(_0x470d79){var _0x46eb96=typeof _0x53c696[_0xd2ec('0x33')]===_0xd2ec('0x34')&&typeof _0x53c696[_0xd2ec('0x35')]===_0xd2ec('0x34');var _0x3da033=_0x470d79[_0xd2ec('0x36')];var _0x15754e=_0x46eb96?0x0:_0x53c696[_0xd2ec('0x33')];var _0x2ec9e0=_0x46eb96?_0x470d79['count']:_0x53c696[_0xd2ec('0x33')]+_0x53c696['limit'];var _0x165be6;if(_0x2ec9e0>=_0x3da033){_0x2ec9e0=_0x3da033;_0x165be6=0xc8;}else{_0x165be6=0xce;}_0x276064[_0xd2ec('0x30')](_0x165be6);return _0x276064[_0xd2ec('0x37')](_0xd2ec('0x38'),_0x15754e+'-'+_0x2ec9e0+'/'+_0x3da033)[_0xd2ec('0x32')](_0x470d79);}return null;};}function patchUpdates(_0x5634f4){return function(_0x487e42){try{jsonpatch[_0xd2ec('0x39')](_0x487e42,_0x5634f4,!![]);}catch(_0x7d1398){return BPromise[_0xd2ec('0x3a')](_0x7d1398);}return _0x487e42[_0xd2ec('0x3b')]();};}function saveUpdates(_0x127ef5,_0x3c05e4){return function(_0x2e53b1){if(_0x2e53b1){return _0x2e53b1[_0xd2ec('0x3c')](_0x127ef5)[_0xd2ec('0x25')](function(_0x7a95b){return _0x7a95b;});}return null;};}function removeEntity(_0x4aee3e,_0x1ade65){return function(_0x3157c1){if(_0x3157c1){return _0x3157c1[_0xd2ec('0x3d')]()[_0xd2ec('0x25')](function(){var _0x328154=_0x3157c1['get']({'plain':!![]});var _0x5d59d4=_0xd2ec('0x3e');return db[_0xd2ec('0x3f')][_0xd2ec('0x3d')]({'where':{'type':_0x5d59d4,'resourceId':_0x328154['id']}})[_0xd2ec('0x25')](function(){return _0x3157c1;});})[_0xd2ec('0x25')](function(){_0x4aee3e['status'](0xcc)[_0xd2ec('0x31')]();});}};}function handleEntityNotFound(_0x5f986,_0x5777b9){return function(_0x24acb4){if(!_0x24acb4){_0x5f986[_0xd2ec('0x2f')](0x194);}return _0x24acb4;};}function handleError(_0x3c45a1,_0x226da8){_0x226da8=_0x226da8||0x1f4;return function(_0x3ac227){logger['error'](_0x3ac227[_0xd2ec('0x40')]);if(_0x3ac227['name']){delete _0x3ac227[_0xd2ec('0x41')];}_0x3c45a1[_0xd2ec('0x30')](_0x226da8)[_0xd2ec('0x42')](_0x3ac227);};}exports['index']=function(_0x3b566e,_0x206c48){var _0x173d66={'include':[{'model':db[_0xd2ec('0x43')],'as':'mandatoryDispositionPause'}]},_0x2ef1b5={},_0xdcbcac={'count':0x0,'rows':[]};var _0x49baa6=_[_0xd2ec('0x44')](db[_0xd2ec('0x45')][_0xd2ec('0x46')],function(_0x5ce65a){return{'name':_0x5ce65a['fieldName'],'type':_0x5ce65a['type'][_0xd2ec('0x47')]};});_0x2ef1b5[_0xd2ec('0x48')]=_[_0xd2ec('0x44')](_0x49baa6,'name');_0x2ef1b5[_0xd2ec('0x49')]=_['keys'](_0x3b566e[_0xd2ec('0x49')]);_0x2ef1b5[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x2ef1b5['model'],_0x2ef1b5[_0xd2ec('0x49')]);_0x173d66[_0xd2ec('0x4c')]=_['intersection'](_0x2ef1b5[_0xd2ec('0x48')],qs['fields'](_0x3b566e[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x173d66[_0xd2ec('0x4c')]=_0x173d66[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x173d66[_0xd2ec('0x4c')]:_0x2ef1b5[_0xd2ec('0x48')];if(!_0x3b566e[_0xd2ec('0x49')][_0xd2ec('0x4f')]('nolimit')){_0x173d66[_0xd2ec('0x35')]=qs[_0xd2ec('0x35')](_0x3b566e['query'][_0xd2ec('0x35')]);_0x173d66[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0x3b566e[_0xd2ec('0x49')][_0xd2ec('0x33')]);}_0x173d66[_0xd2ec('0x50')]=qs['sort'](_0x3b566e[_0xd2ec('0x49')]['sort']);_0x173d66['where']=qs['filters'](_[_0xd2ec('0x51')](_0x3b566e[_0xd2ec('0x49')],_0x2ef1b5[_0xd2ec('0x4a')]),_0x49baa6);if(_0x3b566e[_0xd2ec('0x49')]['filter']){_0x173d66[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x173d66[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x49baa6,function(_0xcf49e0){if(_0xcf49e0['type']!=='VIRTUAL'){var _0x4cbf25={};_0x4cbf25[_0xcf49e0[_0xd2ec('0x41')]]={'$like':'%'+_0x3b566e['query']['filter']+'%'};return _0x4cbf25;}})});}_0x173d66=_[_0xd2ec('0x53')]({},_0x173d66,_0x3b566e['options']);var _0x139506={'where':_0x173d66[_0xd2ec('0x52')]};return db[_0xd2ec('0x45')]['count'](_0x139506)[_0xd2ec('0x25')](function(_0x5f4a32){_0xdcbcac[_0xd2ec('0x36')]=_0x5f4a32;if(_0x3b566e['query'][_0xd2ec('0x54')]){_0x173d66[_0xd2ec('0x55')]=[{'all':!![]}];}return db[_0xd2ec('0x45')][_0xd2ec('0x56')](_0x173d66);})['then'](function(_0x16cadf){_0xdcbcac[_0xd2ec('0x57')]=_0x16cadf;return _0xdcbcac;})[_0xd2ec('0x25')](respondWithFilteredResult(_0x206c48,_0x173d66))[_0xd2ec('0x2e')](handleError(_0x206c48,null));};exports[_0xd2ec('0x58')]=function(_0x2eae37,_0x216b15){var _0xf0325f={'raw':![],'where':{'id':_0x2eae37[_0xd2ec('0x59')]['id']},'include':[{'model':db[_0xd2ec('0x43')],'as':'mandatoryDispositionPause'}]},_0x26415c={};_0x26415c[_0xd2ec('0x48')]=_[_0xd2ec('0x5a')](db['SmsAccount'][_0xd2ec('0x46')]);_0x26415c['query']=_[_0xd2ec('0x5a')](_0x2eae37[_0xd2ec('0x49')]);_0x26415c[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x26415c[_0xd2ec('0x48')],_0x26415c[_0xd2ec('0x49')]);_0xf0325f[_0xd2ec('0x4c')]=_['intersection'](_0x26415c[_0xd2ec('0x48')],qs['fields'](_0x2eae37[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0xf0325f[_0xd2ec('0x4c')]=_0xf0325f[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0xf0325f[_0xd2ec('0x4c')]:_0x26415c[_0xd2ec('0x48')];if(_0x2eae37[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0xf0325f[_0xd2ec('0x55')]=[{'all':!![]}];}_0xf0325f=_[_0xd2ec('0x53')]({},_0xf0325f,_0x2eae37['options']);return db[_0xd2ec('0x45')][_0xd2ec('0x5b')](_0xf0325f)[_0xd2ec('0x25')](handleEntityNotFound(_0x216b15,null))[_0xd2ec('0x25')](respondWithResult(_0x216b15,null))[_0xd2ec('0x2e')](handleError(_0x216b15,null));};exports[_0xd2ec('0x5c')]=function(_0x5df322,_0x4abf87){return db[_0xd2ec('0x45')][_0xd2ec('0x5c')](_0x5df322['body'],{})['then'](function(_0x1b1d85){var _0x4bf059=_0x5df322[_0xd2ec('0x5d')][_0xd2ec('0x5e')]({'plain':!![]});if(!_0x4bf059)throw new Error(_0xd2ec('0x5f'));if(_0x4bf059[_0xd2ec('0x60')]===_0xd2ec('0x5d')){var _0x100ea7=_0x1b1d85['get']({'plain':!![]});var _0x2bf001='SmsAccounts';return db['UserProfileSection'][_0xd2ec('0x5b')]({'where':{'name':_0x2bf001,'userProfileId':_0x4bf059[_0xd2ec('0x61')]},'raw':!![]})[_0xd2ec('0x25')](function(_0x111b05){if(_0x111b05&&_0x111b05[_0xd2ec('0x62')]===0x0){return db['UserProfileResource'][_0xd2ec('0x5c')]({'name':_0x100ea7[_0xd2ec('0x41')],'resourceId':_0x100ea7['id'],'type':_0x111b05[_0xd2ec('0x41')],'sectionId':_0x111b05['id']},{})['then'](function(){return _0x1b1d85;});}else{return _0x1b1d85;}})[_0xd2ec('0x2e')](function(_0x5c87b7){logger[_0xd2ec('0x2a')](_0xd2ec('0x63'),_0x5c87b7);throw _0x5c87b7;});}return _0x1b1d85;})['then'](respondWithResult(_0x4abf87,0xc9))[_0xd2ec('0x2e')](handleError(_0x4abf87,null));};exports[_0xd2ec('0x3c')]=function(_0x333507,_0x2140d1){if(_0x333507[_0xd2ec('0x64')]['id']){delete _0x333507[_0xd2ec('0x64')]['id'];}return db[_0xd2ec('0x45')]['find']({'where':{'id':_0x333507['params']['id']},'include':[{'model':db['Pause'],'as':_0xd2ec('0x65')}]})[_0xd2ec('0x25')](handleEntityNotFound(_0x2140d1,null))['then'](saveUpdates(_0x333507[_0xd2ec('0x64')],null))['then'](respondWithResult(_0x2140d1,null))[_0xd2ec('0x2e')](handleError(_0x2140d1,null));};exports[_0xd2ec('0x3d')]=function(_0x514300,_0x50f977){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x514300[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x50f977,null))[_0xd2ec('0x25')](removeEntity(_0x50f977,null))[_0xd2ec('0x2e')](handleError(_0x50f977,null));};exports[_0xd2ec('0x66')]=function(_0x3ac38e,_0x4ea762){return db[_0xd2ec('0x45')][_0xd2ec('0x66')]()[_0xd2ec('0x25')](respondWithResult(_0x4ea762,null))[_0xd2ec('0x2e')](handleError(_0x4ea762,null));};exports['addDisposition']=function(_0x3e4320,_0x283d4d,_0x1f708b){if(_0x3e4320['body']['id']){delete _0x3e4320[_0xd2ec('0x64')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x3e4320[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x283d4d,null))[_0xd2ec('0x25')](function(_0x185a8b){if(_0x185a8b){_0x3e4320[_0xd2ec('0x64')][_0xd2ec('0x67')]=_0x185a8b['id'];return db[_0xd2ec('0x68')][_0xd2ec('0x5c')](_0x3e4320['body']);}})[_0xd2ec('0x25')](respondWithResult(_0x283d4d,null))[_0xd2ec('0x2e')](handleError(_0x283d4d,null));};exports['getDispositions']=function(_0xecb61f,_0x3a7e87,_0x5d6900){var _0x224426={'raw':![],'where':{}};var _0x227a35={};var _0x103aed={'count':0x0,'rows':[]};return db['SmsAccount'][_0xd2ec('0x69')]({'where':{'id':_0xecb61f['params']['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x3a7e87,null))[_0xd2ec('0x25')](function(_0x198b8e){if(_0x198b8e){_0x227a35['model']=_['keys'](db['Disposition'][_0xd2ec('0x46')]);_0x227a35['query']=_[_0xd2ec('0x5a')](_0xecb61f[_0xd2ec('0x49')]);_0x227a35[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x227a35['model'],_0x227a35[_0xd2ec('0x49')]);_0x224426[_0xd2ec('0x4c')]=_[_0xd2ec('0x4b')](_0x227a35['model'],qs[_0xd2ec('0x4d')](_0xecb61f[_0xd2ec('0x49')]['fields']));_0x224426[_0xd2ec('0x4c')]=_0x224426[_0xd2ec('0x4c')]['length']?_0x224426[_0xd2ec('0x4c')]:_0x227a35[_0xd2ec('0x48')];if(!_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x224426[_0xd2ec('0x35')]=qs['limit'](_0xecb61f[_0xd2ec('0x49')]['limit']);_0x224426[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0xecb61f['query'][_0xd2ec('0x33')]);}_0x224426['order']=qs['sort'](_0xecb61f['query']['sort']);_0x224426['where']=qs['filters'](_[_0xd2ec('0x51')](_0xecb61f['query'],_0x227a35['filters']));_0x224426[_0xd2ec('0x52')][_0xd2ec('0x67')]=_0x198b8e['id'];if(_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x6b')]){_0x224426[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x224426[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x224426[_0xd2ec('0x4c')],function(_0x251798){var _0x4a2cb8={};_0x4a2cb8[_0x251798]={'$like':'%'+_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x6b')]+'%'};return _0x4a2cb8;})});}_0x224426=_[_0xd2ec('0x53')]({},_0x224426,_0xecb61f[_0xd2ec('0x6c')]);return db['Disposition'][_0xd2ec('0x36')]({'where':_0x224426['where']})['then'](function(_0x39554d){_0x103aed[_0xd2ec('0x36')]=_0x39554d;if(_0xecb61f[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0x224426['include']=[{'all':!![]}];}return db[_0xd2ec('0x68')]['findAll'](_0x224426);})['then'](function(_0x464cb2){_0x103aed[_0xd2ec('0x57')]=_0x464cb2;return _0x103aed;});}})[_0xd2ec('0x25')](respondWithFilteredResult(_0x3a7e87,_0x224426))['catch'](handleError(_0x3a7e87,null));};exports['removeDispositions']=function(_0x11a44d,_0x2df039,_0x1e6812){return db['SmsAccount']['find']({'where':{'id':_0x11a44d[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x2df039,null))[_0xd2ec('0x25')](function(_0x345efa){if(_0x345efa){return _0x345efa[_0xd2ec('0x6d')](_0x11a44d['query']['ids']);}})[_0xd2ec('0x25')](respondWithStatusCode(_0x2df039,null))['catch'](handleError(_0x2df039,null));};exports['addAnswer']=function(_0x33edbe,_0x627566,_0x32274c){if(_0x33edbe[_0xd2ec('0x64')]['id']){delete _0x33edbe[_0xd2ec('0x64')]['id'];}return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x33edbe['params']['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x627566,null))[_0xd2ec('0x25')](function(_0x5b12f1){if(_0x5b12f1){_0x33edbe[_0xd2ec('0x64')][_0xd2ec('0x67')]=_0x5b12f1['id'];return db[_0xd2ec('0x6e')]['create'](_0x33edbe[_0xd2ec('0x64')]);}})[_0xd2ec('0x25')](respondWithResult(_0x627566,null))[_0xd2ec('0x2e')](handleError(_0x627566,null));};exports['getAnswers']=function(_0x4fe7fc,_0x115bd0,_0x52b721){var _0x57c13c={'raw':![],'where':{}};var _0x457971={};var _0x57c3d6={'count':0x0,'rows':[]};return db[_0xd2ec('0x45')][_0xd2ec('0x69')]({'where':{'id':_0x4fe7fc[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x115bd0,null))[_0xd2ec('0x25')](function(_0x28cc10){if(_0x28cc10){_0x457971[_0xd2ec('0x48')]=_[_0xd2ec('0x5a')](db[_0xd2ec('0x6e')]['rawAttributes']);_0x457971[_0xd2ec('0x49')]=_['keys'](_0x4fe7fc[_0xd2ec('0x49')]);_0x457971[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x457971['model'],_0x457971[_0xd2ec('0x49')]);_0x57c13c['attributes']=_[_0xd2ec('0x4b')](_0x457971['model'],qs[_0xd2ec('0x4d')](_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x57c13c[_0xd2ec('0x4c')]=_0x57c13c[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x57c13c[_0xd2ec('0x4c')]:_0x457971['model'];if(!_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x57c13c['limit']=qs[_0xd2ec('0x35')](_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x35')]);_0x57c13c[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x33')]);}_0x57c13c[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x4fe7fc['query'][_0xd2ec('0x6f')]);_0x57c13c[_0xd2ec('0x52')]=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x4fe7fc[_0xd2ec('0x49')],_0x457971[_0xd2ec('0x4a')]));_0x57c13c['where'][_0xd2ec('0x67')]=_0x28cc10['id'];if(_0x4fe7fc[_0xd2ec('0x49')]['filter']){_0x57c13c[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x57c13c[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x57c13c[_0xd2ec('0x4c')],function(_0x2a34ab){var _0x174bfa={};_0x174bfa[_0x2a34ab]={'$like':'%'+_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x6b')]+'%'};return _0x174bfa;})});}_0x57c13c=_['merge']({},_0x57c13c,_0x4fe7fc['options']);return db['CannedAnswer'][_0xd2ec('0x36')]({'where':_0x57c13c[_0xd2ec('0x52')]})[_0xd2ec('0x25')](function(_0xb00235){_0x57c3d6[_0xd2ec('0x36')]=_0xb00235;if(_0x4fe7fc[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0x57c13c[_0xd2ec('0x55')]=[{'all':!![]}];}return db['CannedAnswer'][_0xd2ec('0x56')](_0x57c13c);})[_0xd2ec('0x25')](function(_0x28052e){_0x57c3d6['rows']=_0x28052e;return _0x57c3d6;});}})[_0xd2ec('0x25')](respondWithFilteredResult(_0x115bd0,_0x57c13c))[_0xd2ec('0x2e')](handleError(_0x115bd0,null));};exports['removeAnswers']=function(_0xa26aee,_0x3f8090,_0x4f0dbf){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0xa26aee[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x3f8090,null))[_0xd2ec('0x25')](function(_0x57c4c1){if(_0x57c4c1){return _0x57c4c1[_0xd2ec('0x70')](_0xa26aee[_0xd2ec('0x49')]['ids']);}})[_0xd2ec('0x25')](respondWithStatusCode(_0x3f8090,null))[_0xd2ec('0x2e')](handleError(_0x3f8090,null));};exports['notify']=function(_0x4f34aa,_0x4b5a95,_0x37c95d){var _0x38e927={'channel':_0xd2ec('0x71')};var _0x433101=[];var _0x7f09d9=[];var _0x4587e0={};return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x4f34aa[_0xd2ec('0x59')]['id']},'include':[{'model':db[_0xd2ec('0x72')],'as':_0xd2ec('0x73')}]})[_0xd2ec('0x25')](handleEntityNotFound(_0x4b5a95,null))[_0xd2ec('0x25')](function(_0x300b25){_0x38e927[_0xd2ec('0x74')]=_0x300b25;_0x38e927[_0xd2ec('0x75')]=_[_0xd2ec('0x76')](_0x300b25[_0xd2ec('0x73')],['priority'],['asc']);if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x73')]){delete _0x38e927[_0xd2ec('0x74')][_0xd2ec('0x73')];}return db[_0xd2ec('0x77')][_0xd2ec('0x66')]();})['then'](function(_0x277798){if(!_0x277798){throw new db['Sequelize'][(_0xd2ec('0x78'))](_0xd2ec('0x79'));}_0x433101=_[_0xd2ec('0x7a')](_[_0xd2ec('0x5a')](_0x277798),[_0xd2ec('0x7b'),_0xd2ec('0x7c')]);_0x7f09d9=_['difference'](_[_0xd2ec('0x5a')](_0x277798),[_0xd2ec('0x7b'),_0xd2ec('0x7c'),_0xd2ec('0x7d'),_0xd2ec('0x7e')]);_0x38e927[_0xd2ec('0x64')]={'mapKey':_0xd2ec('0x7f')};if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x80')]){switch(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x80')]){case _0xd2ec('0x81'):_0x38e927[_0xd2ec('0x64')]['from']=_0x4f34aa[_0xd2ec('0x64')]['From'];_0x38e927['body'][_0xd2ec('0x64')]=_0x4f34aa['body'][_0xd2ec('0x82')];_0x38e927['body'][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x84')];break;case _0xd2ec('0x85'):_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]='+'+_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x87')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x88')];break;case _0xd2ec('0x89'):_0x38e927['body'][_0xd2ec('0x86')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x2c')];break;case _0xd2ec('0x8a'):_0x38e927['body']['from']=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x64')];_0x38e927[_0xd2ec('0x64')]['messageId']=_0x4f34aa[_0xd2ec('0x64')]['message_id'];break;case _0xd2ec('0x8b'):_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]=_0x4f34aa['body'][_0xd2ec('0x8c')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa['body'][_0xd2ec('0x8d')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')]['MessageUUID'];break;case'infobip':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]='+'+_0x4f34aa[_0xd2ec('0x64')]['results'][0x0][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x8e')][0x0][_0xd2ec('0x88')];_0x38e927['body'][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x8e')][0x0]['messageId'];break;case _0xd2ec('0x8f'):_0x38e927[_0xd2ec('0x64')]['from']=_0x4f34aa['body']['originatingAddress'];_0x38e927['body']['body']=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x90')][_0xd2ec('0x2c')];break;case _0xd2ec('0x91'):_0x38e927[_0xd2ec('0x64')]['from']=_0x4f34aa['body'][_0xd2ec('0x92')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')]['text'];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x93')];break;case'bandwidth':_0x38e927['body'][_0xd2ec('0x83')]=_0x4f34aa['body'][0x0][_0xd2ec('0x2c')]['id'];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]=_0x4f34aa[_0xd2ec('0x64')][0x0]['message']['from'];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][0x0][_0xd2ec('0x2c')][_0xd2ec('0x88')];break;case _0xd2ec('0x94'):_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x86')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x2c')];_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')]=_0x4f34aa[_0xd2ec('0x64')][_0xd2ec('0x95')];break;}}if(_0x38e927[_0xd2ec('0x64')]['id']){delete _0x38e927['body']['id'];}if(_[_0xd2ec('0x96')](_0x38e927['body'][_0xd2ec('0x86')])){throw new db['Sequelize'][(_0xd2ec('0x78'))](_0xd2ec('0x97'));}if(_['isNil'](_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')])||_0x38e927['body'][_0xd2ec('0x64')]===''){throw new db['Sequelize'][(_0xd2ec('0x78'))](_0xd2ec('0x98'));}if(_[_0xd2ec('0x96')](_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')])){throw new db['Sequelize'][(_0xd2ec('0x78'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x7f09d9);}if(!_['includes'](_0x7f09d9,_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')])){throw new db[(_0xd2ec('0x9a'))]['ValidationError'](_0xd2ec('0x9b')+_0x7f09d9);}_0x4587e0[_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')]]=_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')];return db['CmList']['find']({'where':{'id':_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x7e')]},'include':[{'model':db['CmContact'],'as':_0xd2ec('0x9c'),'where':_0x4587e0,'limit':0x1,'order':[['updatedAt',_0xd2ec('0x9d')]]}]});})[_0xd2ec('0x25')](handleEntityNotFound(_0x4b5a95,null))[_0xd2ec('0x25')](function(_0x5a2298){if(_0x5a2298){_0x38e927[_0xd2ec('0x9e')]=_[_0xd2ec('0x9f')](_0x5a2298,[_0xd2ec('0x9c')]);if(_0x5a2298[_0xd2ec('0x9c')][_0xd2ec('0x4e')]){return _0x5a2298[_0xd2ec('0x9c')][0x0];}var _0xb08b15=_['defaults'](_0x38e927[_0xd2ec('0x64')],{'firstName':_0x38e927[_0xd2ec('0x64')]['from'],'ListId':_0x5a2298['id']});_0xb08b15[_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x99')]]=_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')];return db[_0xd2ec('0x77')]['create'](_0xb08b15,{'fields':_0x433101,'raw':!![]});}})[_0xd2ec('0x25')](handleEntityNotFound(_0x4b5a95,null))[_0xd2ec('0x25')](function(_0x4ec6d6){if(_0x4ec6d6){_0x38e927[_0xd2ec('0xa0')]=_0x4ec6d6;var _0x1ee2f6={'ContactId':_0x4ec6d6['id'],'phone':_0x38e927['body'][_0xd2ec('0x86')],'SmsAccountId':_0x4f34aa[_0xd2ec('0x59')]['id']};var _0x428d08={'ContactId':_0x4ec6d6['id'],'SmsAccountId':_0x4f34aa[_0xd2ec('0x59')]['id'],'closed':![]};return db[_0xd2ec('0xa1')][_0xd2ec('0x5b')]({'where':_0x428d08})[_0xd2ec('0x25')](function(_0x35b2b1){if(_0x35b2b1){return[_0x35b2b1,![]];}return db[_0xd2ec('0xa1')][_0xd2ec('0x5c')](_0x1ee2f6)[_0xd2ec('0x25')](function(_0x2d088f){return[_0x2d088f,!![]];});});}})[_0xd2ec('0xa2')](function(_0x3584fb,_0x14441f){_0x38e927[_0xd2ec('0xa3')]=_0x3584fb['get']({'plain':!![]});_0x38e927[_0xd2ec('0xa3')][_0xd2ec('0xa4')]=![];if(_0x14441f){if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0xa5')]){_0x38e927[_0xd2ec('0x75')][_0xd2ec('0xa6')]({'id':0x0,'priority':_0x38e927[_0xd2ec('0x75')][_0xd2ec('0x4e')]+0x1,'app':_0xd2ec('0xa7'),'appdata':_0xd2ec('0xa8'),'interval':_0xd2ec('0xa9')});}_0x38e927['interaction'][_0xd2ec('0xa4')]=!![];}return db['SmsMessage'][_0xd2ec('0x5c')]({'phone':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x86')],'messageId':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x83')],'body':_0x38e927[_0xd2ec('0x64')][_0xd2ec('0x64')],'SmsAccountId':_0x4f34aa[_0xd2ec('0x59')]['id'],'SmsInteractionId':_0x3584fb['id'],'direction':'in','ContactId':_0x3584fb[_0xd2ec('0xaa')],'AttachmentId':_0x38e927['body'][_0xd2ec('0xab')]});})[_0xd2ec('0x25')](function(_0x119111){_0x38e927[_0xd2ec('0x2c')]=_0x119111;if(_0x38e927[_0xd2ec('0xa3')][_0xd2ec('0xac')]){return db[_0xd2ec('0xad')][_0xd2ec('0x5b')]({'attributes':['id',_0xd2ec('0x41')],'where':{'id':_0x38e927[_0xd2ec('0xa3')]['UserId']}})['then'](function(_0x4eb418){if(_0x4eb418){_0x38e927[_0xd2ec('0x75')]['unshift']({'id':0x0,'priority':0x0,'app':_0xd2ec('0xae'),'appdata':_0x4eb418[_0xd2ec('0x41')]+','+(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0xaf')]||0xa),'interval':_0xd2ec('0xa9')});}return respondWithRpcPromise(_0xd2ec('0xb0'),_0xd2ec('0xb1'),_0x38e927);});}return respondWithRpcPromise('Start',_0xd2ec('0xb1'),_0x38e927);})[_0xd2ec('0x25')](function(_0x39c0a2){if(_0x39c0a2){var _0x1ac082=0xc8;var _0x13ed94=_0xd2ec('0xb2');logger[_0xd2ec('0x26')](_0xd2ec('0xb3'),_0x13ed94,_0x1ac082,_0xd2ec('0xb4'));logger[_0xd2ec('0xb5')](_0xd2ec('0xb6'),_0x13ed94,_0x1ac082,_0xd2ec('0xb4'),JSON[_0xd2ec('0x29')](_0x39c0a2));if(_0x38e927[_0xd2ec('0x74')][_0xd2ec('0x80')]===_0xd2ec('0x81')){return _0x4b5a95[_0xd2ec('0x30')](_0x1ac082)['set'](_0xd2ec('0xb7'),_0xd2ec('0xb8'))[_0xd2ec('0x42')](_0xd2ec('0xb9'));}else{return _0x4b5a95[_0xd2ec('0x30')](_0x1ac082)[_0xd2ec('0x32')](_0x39c0a2);}}})[_0xd2ec('0x2e')](handleError(_0x4b5a95,null));};exports[_0xd2ec('0xba')]=function(_0x60b3aa,_0x5a23d1,_0x115787){return db[_0xd2ec('0x45')]['findOne']({'where':{'id':_0x60b3aa[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x5a23d1,null))[_0xd2ec('0x25')](function(_0x1fcfe9){if(_0x1fcfe9){return db[_0xd2ec('0xbb')][_0xd2ec('0xbc')](function(_0x188c3a){return db[_0xd2ec('0x72')][_0xd2ec('0x3d')]({'where':{'SmsAccountId':_0x60b3aa['params']['id']},'transaction':_0x188c3a})['then'](function(_0x41e72e){var _0x57eba0=_[_0xd2ec('0x44')](_0x60b3aa[_0xd2ec('0x64')],function(_0x4f0b80){_0x4f0b80[_0xd2ec('0x67')]=_0x60b3aa[_0xd2ec('0x59')]['id'];return _0x4f0b80;});return db[_0xd2ec('0x72')][_0xd2ec('0xbd')](_0x57eba0,{'transaction':_0x188c3a});});})[_0xd2ec('0x25')](function(){return db[_0xd2ec('0x72')][_0xd2ec('0xbe')]({'where':{'SmsAccountId':_0x60b3aa[_0xd2ec('0x59')]['id']},'order':_0xd2ec('0xbf')});});}})[_0xd2ec('0x25')](respondWithResult(_0x5a23d1,null))[_0xd2ec('0x2e')](handleError(_0x5a23d1,null));};exports[_0xd2ec('0xc0')]=function(_0x166dc2,_0x66813d,_0x411da9){var _0x338025={};var _0x5a0b86={};var _0x504fdc;var _0x4fa72f;return db[_0xd2ec('0x45')]['findOne']({'where':{'id':_0x166dc2[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x66813d,null))[_0xd2ec('0x25')](function(_0x55e3c6){if(_0x55e3c6){_0x504fdc=_0x55e3c6;_0x5a0b86[_0xd2ec('0x48')]=_[_0xd2ec('0x5a')](db[_0xd2ec('0x72')][_0xd2ec('0x46')]);_0x5a0b86['query']=_[_0xd2ec('0x5a')](_0x166dc2[_0xd2ec('0x49')]);_0x5a0b86[_0xd2ec('0x4a')]=_['intersection'](_0x5a0b86[_0xd2ec('0x48')],_0x5a0b86[_0xd2ec('0x49')]);_0x338025[_0xd2ec('0x4c')]=_[_0xd2ec('0x4b')](_0x5a0b86[_0xd2ec('0x48')],qs[_0xd2ec('0x4d')](_0x166dc2['query'][_0xd2ec('0x4d')]));_0x338025[_0xd2ec('0x4c')]=_0x338025[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x338025['attributes']:_0x5a0b86['model'];_0x338025[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x166dc2[_0xd2ec('0x49')][_0xd2ec('0x6f')]);_0x338025[_0xd2ec('0x52')]=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x166dc2[_0xd2ec('0x49')],_0x5a0b86[_0xd2ec('0x4a')]));if(_0x166dc2[_0xd2ec('0x49')][_0xd2ec('0x6b')]){_0x338025[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x338025[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x338025['attributes'],function(_0x40198d){var _0x490d96={};_0x490d96[_0x40198d]={'$like':'%'+_0x166dc2[_0xd2ec('0x49')]['filter']+'%'};return _0x490d96;})});}_0x338025=_['merge']({},_0x338025,_0x166dc2[_0xd2ec('0x6c')]);return _0x504fdc[_0xd2ec('0xc0')](_0x338025);}})['then'](function(_0x151add){if(_0x151add){_0x4fa72f=_0x151add[_0xd2ec('0x4e')];if(!_0x166dc2['query'][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x338025[_0xd2ec('0x35')]=qs['limit'](_0x166dc2[_0xd2ec('0x49')][_0xd2ec('0x35')]);_0x338025['offset']=qs[_0xd2ec('0x33')](_0x166dc2['query'][_0xd2ec('0x33')]);}return _0x504fdc['getApplications'](_0x338025);}})['then'](function(_0x3a24e3){if(_0x3a24e3){return _0x3a24e3?{'count':_0x4fa72f,'rows':_0x3a24e3}:null;}})[_0xd2ec('0x25')](respondWithResult(_0x66813d,null))['catch'](handleError(_0x66813d,null));};exports['getInteractions']=function(_0x25010e,_0x362c38,_0x5c8021){var _0x13c545={'raw':![],'where':{}};var _0x589c21={};var _0x1afe09={'count':0x0,'rows':[]};return db[_0xd2ec('0x45')][_0xd2ec('0x69')]({'where':{'id':_0x25010e[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x362c38,null))[_0xd2ec('0x25')](function(_0x1a0e73){if(_0x1a0e73){_0x589c21['model']=_[_0xd2ec('0x5a')](db[_0xd2ec('0xa1')][_0xd2ec('0x46')]);_0x589c21['query']=_[_0xd2ec('0x5a')](_0x25010e[_0xd2ec('0x49')]);_0x589c21[_0xd2ec('0x4a')]=_[_0xd2ec('0x4b')](_0x589c21[_0xd2ec('0x48')],_0x589c21['query']);_0x13c545['attributes']=_[_0xd2ec('0x4b')](_0x589c21[_0xd2ec('0x48')],qs['fields'](_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x13c545[_0xd2ec('0x4c')]=_0x13c545[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x13c545[_0xd2ec('0x4c')]:_0x589c21[_0xd2ec('0x48')];if(!_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x4f')](_0xd2ec('0x6a'))){_0x13c545[_0xd2ec('0x35')]=qs[_0xd2ec('0x35')](_0x25010e[_0xd2ec('0x49')]['limit']);_0x13c545[_0xd2ec('0x33')]=qs[_0xd2ec('0x33')](_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x33')]);}_0x13c545[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x25010e['query'][_0xd2ec('0x6f')]);_0x13c545['where']=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x25010e['query'],_0x589c21['filters']));_0x13c545['where'][_0xd2ec('0x67')]=_0x1a0e73['id'];if(_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x6b')]){_0x13c545['where']=_[_0xd2ec('0x53')](_0x13c545[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x13c545[_0xd2ec('0x4c')],function(_0x1493cc){var _0x352c29={};_0x352c29[_0x1493cc]={'$like':'%'+_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x6b')]+'%'};return _0x352c29;})});}_0x13c545=_[_0xd2ec('0x53')]({},_0x13c545,_0x25010e[_0xd2ec('0x6c')]);return db[_0xd2ec('0xa1')][_0xd2ec('0x36')]({'where':_0x13c545[_0xd2ec('0x52')]})[_0xd2ec('0x25')](function(_0x5f0941){_0x1afe09[_0xd2ec('0x36')]=_0x5f0941;if(_0x25010e[_0xd2ec('0x49')][_0xd2ec('0x54')]){_0x13c545[_0xd2ec('0x55')]=[{'model':db[_0xd2ec('0x77')],'as':'Contact','required':![]},{'model':db[_0xd2ec('0xad')],'as':_0xd2ec('0xc1'),'attributes':[_0xd2ec('0x41'),_0xd2ec('0xc2'),_0xd2ec('0xc3')],'required':![]},{'model':db[_0xd2ec('0xc4')],'as':_0xd2ec('0xc5'),'attributes':['id',_0xd2ec('0x41'),_0xd2ec('0xc6')],'where':_0x25010e[_0xd2ec('0x49')][_0xd2ec('0xc7')]?{'id':_0x25010e[_0xd2ec('0x49')]['tag']}:undefined,'required':_0x25010e['query']['tag']?!![]:![]}];}return db[_0xd2ec('0xa1')][_0xd2ec('0x56')](_0x13c545);})[_0xd2ec('0x25')](function(_0x20f5db){_0x1afe09['rows']=_0x20f5db;return _0x1afe09;});}})[_0xd2ec('0x25')](respondWithFilteredResult(_0x362c38,_0x13c545))[_0xd2ec('0x2e')](handleError(_0x362c38,null));};exports['send']=function(_0x48edfb,_0xbbed16,_0x5f18eb){var _0x18d845,_0x170e74,_0xbe7286;if(_[_0xd2ec('0x96')](_0x48edfb[_0xd2ec('0x64')][_0xd2ec('0x64')])||_0x48edfb[_0xd2ec('0x64')]['body']===''){throw new db[(_0xd2ec('0x9a'))][(_0xd2ec('0x78'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_['isNil'](_0x48edfb[_0xd2ec('0x64')]['to'])){throw new db[(_0xd2ec('0x9a'))][(_0xd2ec('0x78'))](_0xd2ec('0xc8'));}_0x18d845=_0x48edfb['body']['to'];return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x48edfb[_0xd2ec('0x59')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xd2ec('0x77')],'as':_0xd2ec('0x9c'),'where':{'mobile':_0x18d845},'limit':0x1,'order':[[_0xd2ec('0x7c'),_0xd2ec('0x9d')]]}]}]})['then'](handleEntityNotFound(_0xbbed16,null))[_0xd2ec('0x25')](function(_0x4ccf30){if(_0x4ccf30&&_0x4ccf30[_0xd2ec('0xc9')]){_0x170e74=_0x4ccf30[_0xd2ec('0x5e')]({'plain':!![]});if(_0x170e74[_0xd2ec('0xc9')]&&_0x170e74[_0xd2ec('0xc9')][_0xd2ec('0x9c')]['length']){return _0x170e74['List'][_0xd2ec('0x9c')][0x0];}return db[_0xd2ec('0x77')][_0xd2ec('0x5c')](_[_0xd2ec('0xca')](_0x48edfb[_0xd2ec('0x64')],{'firstName':_0x18d845,'mobile':_0x18d845,'phone':_0x18d845,'ListId':_0x170e74['ListId']}));}})[_0xd2ec('0x25')](handleEntityNotFound(_0xbbed16,null))[_0xd2ec('0x25')](function(_0x281f58){if(_0x281f58){_0xbe7286=_0x281f58;return db[_0xd2ec('0xa1')][_0xd2ec('0x5b')]({'where':{'ContactId':_0xbe7286['id'],'closed':![],'SmsAccountId':_0x170e74['id']}})[_0xd2ec('0x25')](function(_0x525631){if(_0x525631){return[_0x525631,![]];}return db[_0xd2ec('0xa1')][_0xd2ec('0x5c')]({'UserId':_0x48edfb[_0xd2ec('0x5d')]['id'],'ContactId':_0xbe7286['id'],'SmsAccountId':_0x170e74['id'],'phone':_0x18d845,'firstMsgDirection':_0xd2ec('0xcb'),'Messages':[_['merge'](_0x48edfb[_0xd2ec('0x64')],{'read':![],'body':_0x48edfb[_0xd2ec('0x64')][_0xd2ec('0x64')],'phone':_0x18d845,'SmsAccountId':_0x170e74['id'],'UserId':_0x48edfb['user']['id'],'ContactId':_0xbe7286['id']})]},{'include':[{'model':db[_0xd2ec('0xcc')],'as':_0xd2ec('0xcd')}]})['then'](function(_0x2b014d){return[_0x2b014d,!![]];});});}})[_0xd2ec('0xa2')](function(_0x449aae,_0x5961db){if(_0x5961db){return _0x449aae;}return db[_0xd2ec('0xcc')][_0xd2ec('0x5c')](_['merge'](_0x48edfb['body'],{'read':![],'body':_0x48edfb[_0xd2ec('0x64')][_0xd2ec('0x64')],'phone':_0x18d845,'SmsAccountId':_0x170e74['id'],'SmsInteractionId':_0x449aae['id'],'UserId':_0x48edfb[_0xd2ec('0x5d')]['id'],'ContactId':_0xbe7286['id']}))[_0xd2ec('0x25')](function(_0x56bab8){_0x449aae[_0xd2ec('0xce')][_0xd2ec('0xcd')]=[];_0x449aae['dataValues'][_0xd2ec('0xcd')][_0xd2ec('0xa6')](_0x56bab8[_0xd2ec('0xce')]);return _0x449aae;});})['then'](respondWithResult(_0xbbed16,null))['catch'](handleError(_0xbbed16,null));};exports[_0xd2ec('0x30')]=function(_0x219eb0,_0x26a607,_0x13db68){if(_0x219eb0[_0xd2ec('0x64')]['id']){delete _0x219eb0[_0xd2ec('0x64')]['id'];}var _0x5f6a0d,_0x351add,_0x419afb;return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x219eb0[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x26a607,null))[_0xd2ec('0x25')](function(_0x170ba5){if(_0x170ba5){_0x419afb=_0x170ba5;logger[_0xd2ec('0xb5')](_0xd2ec('0xb3'),_0xd2ec('0x30'),'received\x20delivery\x20report\x20from',_0x170ba5['type'],util[_0xd2ec('0xcf')](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));switch(_0x170ba5[_0xd2ec('0x80')]){case _0xd2ec('0x85'):if(_0x219eb0['body'][_0xd2ec('0xd0')]&&_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')]){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd0')]}});}break;case'connectel':if(_0x219eb0['body'][_0xd2ec('0xd1')]&&_0x219eb0[_0xd2ec('0x64')]['statusInt']){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd2')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd1')]}});}break;case _0xd2ec('0x8a'):if(_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd3')]&&_0x219eb0['body']['status_code']){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd4')];return db['SmsMessage']['find']({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd3')]}});}break;case _0xd2ec('0xd5'):var _0x36e369=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x8e')][0x0];if(_0x36e369[_0xd2ec('0x83')]&&_0x36e369[_0xd2ec('0x30')][_0xd2ec('0xd6')]===_0xd2ec('0xd7')){_0x351add=_0x36e369[_0xd2ec('0x30')]['groupName'];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x36e369[_0xd2ec('0x83')]}});}break;case _0xd2ec('0x91'):if(_0x219eb0['body']['messageId']&&_0x219eb0['body'][_0xd2ec('0x30')]){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')];return db['SmsMessage'][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x83')]}});}break;case _0xd2ec('0xd8'):if(_0x219eb0['body'][0x0][_0xd2ec('0x2c')]['id']){_0x351add=_0x219eb0[_0xd2ec('0x64')][0x0][_0xd2ec('0x80')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0['body'][0x0][_0xd2ec('0x2c')]['id']}});}break;case _0xd2ec('0x94'):if(_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd9')]&&_0x219eb0[_0xd2ec('0x64')]['status']){_0x351add=_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0x30')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x219eb0[_0xd2ec('0x64')][_0xd2ec('0xd9')]}});}break;}}})[_0xd2ec('0x25')](handleEntityNotFound(_0x26a607,null))[_0xd2ec('0x25')](function(_0x3ee6d3){if(_0x3ee6d3){_0x5f6a0d=_0x3ee6d3;switch(_0x419afb[_0xd2ec('0x80')]){case _0xd2ec('0x85'):if(_0x351add==='DELIVERED'){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger['error'](_0xd2ec('0xb3'),_0xd2ec('0x30'),'skebby',util[_0xd2ec('0xcf')](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x89'):if(_0x351add==='1'){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),'status',_0xd2ec('0x85'),util[_0xd2ec('0xcf')](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x8a'):if(!_0x219eb0['body'][_0xd2ec('0xda')]&&_0x351add>=0xc8&&_0x351add<=0xce){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger['error'](_0xd2ec('0xb3'),_0xd2ec('0x30'),'clicksend',util[_0xd2ec('0xcf')](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0xd5'):var _0x38f894=_0x219eb0['body'][_0xd2ec('0x8e')][0x0];if(_0x38f894[_0xd2ec('0x30')][_0xd2ec('0xd6')]===_0xd2ec('0xd7')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd2ec('0xd5'),util['inspect'](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x91'):if(_0x351add==_0xd2ec('0xdb')||_0x351add==_0xd2ec('0xdc')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),_0xd2ec('0x30'),'clickatell',util[_0xd2ec('0xcf')](_0x219eb0['body'],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0xd8'):if(_0x351add==_0xd2ec('0xdd')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xd2ec('0xd8'),util['inspect'](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));}break;case _0xd2ec('0x94'):if(_0x351add===_0xd2ec('0xde')||_0x351add===_0xd2ec('0xdf')){return _0x5f6a0d[_0xd2ec('0x3c')]({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),_0xd2ec('0x30'),_0xd2ec('0x94'),util['inspect'](_0x219eb0[_0xd2ec('0x64')],{'showHidden':![],'depth':null}));}break;}return _0x5f6a0d;}})['then'](respondWithResult(_0x26a607,null))['catch'](handleError(_0x26a607,null));};exports[_0xd2ec('0xe0')]=function(_0x461370,_0x2adad7,_0x52d228){var _0xe26af8,_0x791d2a,_0x1bc8df;return db[_0xd2ec('0x45')]['find']({'where':{'id':_0x461370['params']['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x2adad7,null))[_0xd2ec('0x25')](function(_0x23c002){if(_0x23c002){_0x1bc8df=_0x23c002;logger['debug'](_0xd2ec('0xb3'),_0xd2ec('0x30'),_0xd2ec('0xe1'),_0x23c002[_0xd2ec('0x80')],util['inspect'](_0x461370['query'],{'showHidden':![],'depth':null}));switch(_0x23c002[_0xd2ec('0x80')]){case _0xd2ec('0x8f'):if(_0x461370[_0xd2ec('0x49')]['message-id']&&_0x461370[_0xd2ec('0x49')][_0xd2ec('0xe2')]){_0x791d2a=_0x461370[_0xd2ec('0x49')][_0xd2ec('0xe2')];return db[_0xd2ec('0xcc')][_0xd2ec('0x5b')]({'where':{'messageId':_0x461370[_0xd2ec('0x49')][_0xd2ec('0xe3')]}});}break;}}})[_0xd2ec('0x25')](handleEntityNotFound(_0x2adad7,null))['then'](function(_0x503e3a){if(_0x503e3a){_0xe26af8=_0x503e3a;switch(_0x1bc8df[_0xd2ec('0x80')]){case'csc':if(_0x791d2a==='2'||_0x791d2a==='6'){return _0xe26af8['update']({'read':!![]});}else{logger[_0xd2ec('0x2a')](_0xd2ec('0xb3'),_0xd2ec('0x30'),_0xd2ec('0x8f'),util['inspect'](_0x461370[_0xd2ec('0x49')],{'showHidden':![],'depth':null}));};break;}return _0xe26af8;}})[_0xd2ec('0x25')](respondWithResult(_0x2adad7,null))[_0xd2ec('0x2e')](handleError(_0x2adad7,null));};exports['addAgents']=function(_0x53ab5e,_0x39fd46,_0x5cd43d){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0x53ab5e[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x39fd46,null))[_0xd2ec('0x25')](function(_0x46dea4){if(_0x46dea4){return _0x46dea4['addAgents'](_0x53ab5e['body']['ids'],_['omit'](_0x53ab5e['body'],[_0xd2ec('0xe4'),'id'])||{})[_0xd2ec('0xa2')](function(_0x59573e){for(var _0x44c1ad=0x0;_0x44c1ad<_0x53ab5e[_0xd2ec('0x64')][_0xd2ec('0xe4')][_0xd2ec('0x4e')];_0x44c1ad+=0x1){socket[_0xd2ec('0xe5')]('userSmsAccount:save',{'UserId':Number(_0x53ab5e['body'][_0xd2ec('0xe4')][_0x44c1ad]),'SmsAccountId':Number(_0x53ab5e[_0xd2ec('0x59')]['id'])});}return _0x59573e;});}})[_0xd2ec('0x25')](respondWithResult(_0x39fd46,null))[_0xd2ec('0x2e')](handleError(_0x39fd46,null));};exports[_0xd2ec('0xe6')]=function(_0xa7631a,_0x5be869,_0x46ace2){return db[_0xd2ec('0x45')][_0xd2ec('0x5b')]({'where':{'id':_0xa7631a[_0xd2ec('0x59')]['id']}})['then'](handleEntityNotFound(_0x5be869,null))[_0xd2ec('0x25')](function(_0x4d079b){if(_0x4d079b){return _0x4d079b[_0xd2ec('0xe6')](_0xa7631a[_0xd2ec('0x49')][_0xd2ec('0xe4')])[_0xd2ec('0x25')](function(){if(_[_0xd2ec('0xe7')](_0xa7631a[_0xd2ec('0x49')][_0xd2ec('0xe4')])){for(var _0x5ac87c=0x0;_0x5ac87c<_0xa7631a[_0xd2ec('0x49')]['ids'][_0xd2ec('0x4e')];_0x5ac87c+=0x1){socket[_0xd2ec('0xe5')](_0xd2ec('0xe8'),{'UserId':Number(_0xa7631a[_0xd2ec('0x49')]['ids'][_0x5ac87c]),'SmsAccountId':Number(_0xa7631a[_0xd2ec('0x59')]['id'])});}}else{socket[_0xd2ec('0xe5')]('userSmsAccount:remove',{'UserId':Number(_0xa7631a[_0xd2ec('0x49')][_0xd2ec('0xe4')]),'SmsAccountId':Number(_0xa7631a[_0xd2ec('0x59')]['id'])});}});}})[_0xd2ec('0x25')](respondWithStatusCode(_0x5be869,null))[_0xd2ec('0x2e')](handleError(_0x5be869,null));};exports[_0xd2ec('0xe9')]=function(_0x450106,_0x41772e,_0x223d0d){var _0x4b7cb6={};var _0x4de7c8={};var _0x427635;var _0x377483;return db[_0xd2ec('0x45')][_0xd2ec('0x69')]({'where':{'id':_0x450106[_0xd2ec('0x59')]['id']}})[_0xd2ec('0x25')](handleEntityNotFound(_0x41772e,null))['then'](function(_0x3f2c1a){if(_0x3f2c1a){_0x427635=_0x3f2c1a;_0x4de7c8[_0xd2ec('0x48')]=_['keys'](db[_0xd2ec('0xad')]['rawAttributes']);_0x4de7c8['query']=_[_0xd2ec('0x5a')](_0x450106[_0xd2ec('0x49')]);_0x4de7c8[_0xd2ec('0x4a')]=_['intersection'](_0x4de7c8[_0xd2ec('0x48')],_0x4de7c8[_0xd2ec('0x49')]);_0x4b7cb6[_0xd2ec('0x4c')]=_[_0xd2ec('0x4b')](_0x4de7c8[_0xd2ec('0x48')],qs[_0xd2ec('0x4d')](_0x450106[_0xd2ec('0x49')][_0xd2ec('0x4d')]));_0x4b7cb6['attributes']=_0x4b7cb6[_0xd2ec('0x4c')][_0xd2ec('0x4e')]?_0x4b7cb6['attributes']:_0x4de7c8[_0xd2ec('0x48')];_0x4b7cb6[_0xd2ec('0x50')]=qs[_0xd2ec('0x6f')](_0x450106[_0xd2ec('0x49')]['sort']);_0x4b7cb6[_0xd2ec('0x52')]=qs[_0xd2ec('0x4a')](_[_0xd2ec('0x51')](_0x450106[_0xd2ec('0x49')],_0x4de7c8[_0xd2ec('0x4a')]));if(_0x450106[_0xd2ec('0x49')]['filter']){_0x4b7cb6[_0xd2ec('0x52')]=_[_0xd2ec('0x53')](_0x4b7cb6[_0xd2ec('0x52')],{'$or':_[_0xd2ec('0x44')](_0x4b7cb6[_0xd2ec('0x4c')],function(_0x47d6d2){var _0x383b21={};_0x383b21[_0x47d6d2]={'$like':'%'+_0x450106['query'][_0xd2ec('0x6b')]+'%'};return _0x383b21;})});}_0x4b7cb6=_['merge']({},_0x4b7cb6,_0x450106[_0xd2ec('0x6c')]);return _0x427635[_0xd2ec('0xe9')](_0x4b7cb6);}})[_0xd2ec('0x25')](function(_0xfff56d){if(_0xfff56d){_0x377483=_0xfff56d[_0xd2ec('0x4e')];if(!_0x450106[_0xd2ec('0x49')]['hasOwnProperty'](_0xd2ec('0x6a'))){_0x4b7cb6[_0xd2ec('0x35')]=qs[_0xd2ec('0x35')](_0x450106[_0xd2ec('0x49')][_0xd2ec('0x35')]);_0x4b7cb6[_0xd2ec('0x33')]=qs['offset'](_0x450106['query']['offset']);}return _0x427635['getAgents'](_0x4b7cb6);}})[_0xd2ec('0x25')](function(_0x30ec04){if(_0x30ec04){return _0x30ec04?{'count':_0x377483,'rows':_0x30ec04}:null;}})[_0xd2ec('0x25')](respondWithResult(_0x41772e,null))[_0xd2ec('0x2e')](handleError(_0x41772e,null));};
\ No newline at end of file
index 9d7a136..d60c041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6976=['hasOwnProperty','hook','../../mysqldb','SmsAccount','setMaxListeners','save','update','remove','emit'];(function(_0x1558ab,_0x39d1de){var _0x53b64a=function(_0x4771ed){while(--_0x4771ed){_0x1558ab['push'](_0x1558ab['shift']());}};_0x53b64a(++_0x39d1de);}(_0x6976,0xe3));var _0x6697=function(_0x4246b4,_0x4cee25){_0x4246b4=_0x4246b4-0x0;var _0x28f8a0=_0x6976[_0x4246b4];return _0x28f8a0;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0x6697('0x0'))['db'][_0x6697('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x6697('0x2')](0x0);var events={'afterCreate':_0x6697('0x3'),'afterUpdate':_0x6697('0x4'),'afterDestroy':_0x6697('0x5')};function emitEvent(_0xd157b7){return function(_0x42a216,_0x164de6,_0x21dc04){SmsAccountEvents['emit'](_0xd157b7+':'+_0x42a216['id'],_0x42a216);SmsAccountEvents[_0x6697('0x6')](_0xd157b7,_0x42a216);_0x21dc04(null);};}for(var e in events){if(events[_0x6697('0x7')](e)){var event=events[e];SmsAccount[_0x6697('0x8')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x251b=['exports','events','../../mysqldb','SmsAccount','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x51a73b,_0x43a16f){var _0x3582b0=function(_0x26bd2f){while(--_0x26bd2f){_0x51a73b['push'](_0x51a73b['shift']());}};_0x3582b0(++_0x43a16f);}(_0x251b,0x1b1));var _0xb251=function(_0x650e11,_0x284f86){_0x650e11=_0x650e11-0x0;var _0x1a9b47=_0x251b[_0x650e11];return _0x1a9b47;};'use strict';var EventEmitter=require(_0xb251('0x0'));var SmsAccount=require(_0xb251('0x1'))['db'][_0xb251('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xb251('0x3')](0x0);var events={'afterCreate':_0xb251('0x4'),'afterUpdate':'update','afterDestroy':_0xb251('0x5')};function emitEvent(_0x4c1fbb){return function(_0x14dde6,_0x44ceab,_0x53f631){SmsAccountEvents['emit'](_0x4c1fbb+':'+_0x14dde6['id'],_0x14dde6);SmsAccountEvents[_0xb251('0x6')](_0x4c1fbb,_0x14dde6);_0x53f631(null);};}for(var e in events){if(events[_0xb251('0x7')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module[_0xb251('0x8')]=SmsAccountEvents;
\ No newline at end of file
index c87742c..40cace4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdbc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SmsAccount','lodash','util','api'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xbdbc,0x1b5));var _0xcbdb=function(_0x327f1e,_0x203ecd){_0x327f1e=_0x327f1e-0x0;var _0x1753d0=_0xbdbc[_0x327f1e];return _0x1753d0;};'use strict';var _=require(_0xcbdb('0x0'));var util=require(_0xcbdb('0x1'));var logger=require('../../config/logger')(_0xcbdb('0x2'));var moment=require(_0xcbdb('0x3'));var BPromise=require(_0xcbdb('0x4'));var rp=require(_0xcbdb('0x5'));var fs=require('fs');var path=require(_0xcbdb('0x6'));var rimraf=require(_0xcbdb('0x7'));var config=require(_0xcbdb('0x8'));var attributes=require('./smsAccount.attributes');module[_0xcbdb('0x9')]=function(_0x139557,_0x23bd44){return _0x139557['define'](_0xcbdb('0xa'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1171=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','SmsAccount','lodash'];(function(_0x4d26f9,_0x505d76){var _0x31eed7=function(_0x1c084d){while(--_0x1c084d){_0x4d26f9['push'](_0x4d26f9['shift']());}};_0x31eed7(++_0x505d76);}(_0x1171,0x83));var _0x1117=function(_0x340da7,_0x13d6fc){_0x340da7=_0x340da7-0x0;var _0x43b466=_0x1171[_0x340da7];return _0x43b466;};'use strict';var _=require(_0x1117('0x0'));var util=require(_0x1117('0x1'));var logger=require(_0x1117('0x2'))(_0x1117('0x3'));var moment=require(_0x1117('0x4'));var BPromise=require(_0x1117('0x5'));var rp=require(_0x1117('0x6'));var fs=require('fs');var path=require(_0x1117('0x7'));var rimraf=require('rimraf');var config=require(_0x1117('0x8'));var attributes=require('./smsAccount.attributes');module[_0x1117('0x9')]=function(_0x579ec0,_0x380204){return _0x579ec0['define'](_0x1117('0xa'),attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7437feb..a93cd08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e7b=['map','debug','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis','socket.io-emitter','register','then','info','SmsAccount,\x20%s,\x20%s','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','ShowSmsAccount','SmsAccount','find','options','raw','attributes','include','model'];(function(_0x5f511f,_0x57a484){var _0x30aa77=function(_0x52bb2d){while(--_0x52bb2d){_0x5f511f['push'](_0x5f511f['shift']());}};_0x30aa77(++_0x57a484);}(_0x7e7b,0x1e3));var _0xb7e7=function(_0x53f485,_0x3f00e1){_0x53f485=_0x53f485-0x0;var _0x2efc6c=_0x7e7b[_0x53f485];return _0x2efc6c;};'use strict';var _=require('lodash');var util=require(_0xb7e7('0x0'));var moment=require(_0xb7e7('0x1'));var BPromise=require(_0xb7e7('0x2'));var rs=require(_0xb7e7('0x3'));var fs=require('fs');var Redis=require(_0xb7e7('0x4'));var db=require(_0xb7e7('0x5'))['db'];var utils=require(_0xb7e7('0x6'));var logger=require('../../config/logger')(_0xb7e7('0x7'));var config=require(_0xb7e7('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb7e7('0x9')]({'port':0x232a});config[_0xb7e7('0xa')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb7e7('0xb'))(new Redis(config[_0xb7e7('0xa')]));require('./smsAccount.socket')[_0xb7e7('0xc')](socket);function respondWithRpcPromise(_0x4418ae,_0xb8dc49,_0x51ab89){return new BPromise(function(_0x1e9154,_0x37eca0){return client['request'](_0x4418ae,_0x51ab89)[_0xb7e7('0xd')](function(_0x394bc2){logger[_0xb7e7('0xe')](_0xb7e7('0xf'),_0xb8dc49,'request\x20sent');logger['debug'](_0xb7e7('0x10'),_0xb8dc49,_0xb7e7('0x11'),JSON['stringify'](_0x394bc2));if(_0x394bc2[_0xb7e7('0x12')]){if(_0x394bc2['error'][_0xb7e7('0x13')]===0x1f4){logger[_0xb7e7('0x12')](_0xb7e7('0xf'),_0xb8dc49,_0x394bc2[_0xb7e7('0x12')][_0xb7e7('0x14')]);return _0x37eca0(_0x394bc2[_0xb7e7('0x12')]['message']);}logger[_0xb7e7('0x12')]('SmsAccount,\x20%s,\x20%s',_0xb8dc49,_0x394bc2[_0xb7e7('0x12')][_0xb7e7('0x14')]);return _0x1e9154(_0x394bc2[_0xb7e7('0x12')][_0xb7e7('0x14')]);}else{logger[_0xb7e7('0xe')](_0xb7e7('0xf'),_0xb8dc49,_0xb7e7('0x11'));_0x1e9154(_0x394bc2['result'][_0xb7e7('0x14')]);}})['catch'](function(_0x5d8e65){logger[_0xb7e7('0x12')](_0xb7e7('0xf'),_0xb8dc49,_0x5d8e65);_0x37eca0(_0x5d8e65);});});}exports[_0xb7e7('0x15')]=function(_0x2b0187){var _0x3203d0=this;return new Promise(function(_0x10fb5e,_0x555455){return db[_0xb7e7('0x16')][_0xb7e7('0x17')]({'raw':_0x2b0187[_0xb7e7('0x18')]?_0x2b0187[_0xb7e7('0x18')][_0xb7e7('0x19')]===undefined?!![]:![]:!![],'where':_0x2b0187[_0xb7e7('0x18')]?_0x2b0187[_0xb7e7('0x18')]['where']||null:null,'attributes':_0x2b0187[_0xb7e7('0x18')]?_0x2b0187[_0xb7e7('0x18')][_0xb7e7('0x1a')]||null:null,'include':_0x2b0187[_0xb7e7('0x18')]?_0x2b0187['options'][_0xb7e7('0x1b')]?_['map'](_0x2b0187[_0xb7e7('0x18')][_0xb7e7('0x1b')],function(_0x12c8af){return{'model':db[_0x12c8af[_0xb7e7('0x1c')]],'as':_0x12c8af['as'],'attributes':_0x12c8af[_0xb7e7('0x1a')],'include':_0x12c8af['include']?_[_0xb7e7('0x1d')](_0x12c8af[_0xb7e7('0x1b')],function(_0x5ef7c7){return{'model':db[_0x5ef7c7['model']],'as':_0x5ef7c7['as'],'attributes':_0x5ef7c7[_0xb7e7('0x1a')],'include':_0x5ef7c7[_0xb7e7('0x1b')]?_[_0xb7e7('0x1d')](_0x5ef7c7[_0xb7e7('0x1b')],function(_0x5d3540){return{'model':db[_0x5d3540[_0xb7e7('0x1c')]],'as':_0x5d3540['as'],'attributes':_0x5d3540[_0xb7e7('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b721c){logger['info'](_0xb7e7('0x15'),_0x2b0187);logger[_0xb7e7('0x1e')](_0xb7e7('0x15'),_0x2b0187,JSON['stringify'](_0x5b721c));_0x10fb5e(_0x5b721c);})[_0xb7e7('0x1f')](function(_0x53fefe){logger[_0xb7e7('0x12')](_0xb7e7('0x15'),_0x53fefe['message'],_0x2b0187);_0x555455(_0x3203d0[_0xb7e7('0x12')](0x1f4,_0x53fefe['message']));});});};
\ No newline at end of file
+var _0x03ec=['code','message','info','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','include','map','model','attributes','then','stringify','util','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./smsAccount.socket','register','request','SmsAccount,\x20%s,\x20%s','debug','request\x20sent','error'];(function(_0x4f7a5a,_0x6a0ad0){var _0x15b752=function(_0x601342){while(--_0x601342){_0x4f7a5a['push'](_0x4f7a5a['shift']());}};_0x15b752(++_0x6a0ad0);}(_0x03ec,0x16f));var _0xc03e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03ec[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xc03e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc03e('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc03e('0x2'));var logger=require(_0xc03e('0x3'))(_0xc03e('0x4'));var config=require(_0xc03e('0x5'));var jayson=require(_0xc03e('0x6'));var client=jayson[_0xc03e('0x7')]['http']({'port':0x232a});config[_0xc03e('0x8')]=_[_0xc03e('0x9')](config[_0xc03e('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xc03e('0xa'))(new Redis(config[_0xc03e('0x8')]));require(_0xc03e('0xb'))[_0xc03e('0xc')](socket);function respondWithRpcPromise(_0x2b0c75,_0x7e06ae,_0x2adeb5){return new BPromise(function(_0x5b2cdc,_0x76c09b){return client[_0xc03e('0xd')](_0x2b0c75,_0x2adeb5)['then'](function(_0x4b6154){logger['info'](_0xc03e('0xe'),_0x7e06ae,'request\x20sent');logger[_0xc03e('0xf')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x7e06ae,_0xc03e('0x10'),JSON['stringify'](_0x4b6154));if(_0x4b6154['error']){if(_0x4b6154[_0xc03e('0x11')][_0xc03e('0x12')]===0x1f4){logger[_0xc03e('0x11')](_0xc03e('0xe'),_0x7e06ae,_0x4b6154[_0xc03e('0x11')]['message']);return _0x76c09b(_0x4b6154[_0xc03e('0x11')][_0xc03e('0x13')]);}logger[_0xc03e('0x11')](_0xc03e('0xe'),_0x7e06ae,_0x4b6154[_0xc03e('0x11')]['message']);return _0x5b2cdc(_0x4b6154[_0xc03e('0x11')][_0xc03e('0x13')]);}else{logger[_0xc03e('0x14')](_0xc03e('0xe'),_0x7e06ae,'request\x20sent');_0x5b2cdc(_0x4b6154[_0xc03e('0x15')][_0xc03e('0x13')]);}})[_0xc03e('0x16')](function(_0x4d5f86){logger[_0xc03e('0x11')]('SmsAccount,\x20%s,\x20%s',_0x7e06ae,_0x4d5f86);_0x76c09b(_0x4d5f86);});});}exports[_0xc03e('0x17')]=function(_0x2f80af){var _0x3bbaa5=this;return new Promise(function(_0x2d5df6,_0x10e842){return db[_0xc03e('0x18')][_0xc03e('0x19')]({'raw':_0x2f80af[_0xc03e('0x1a')]?_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1b')]===undefined?!![]:![]:!![],'where':_0x2f80af['options']?_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1c')]||null:null,'attributes':_0x2f80af[_0xc03e('0x1a')]?_0x2f80af[_0xc03e('0x1a')]['attributes']||null:null,'include':_0x2f80af['options']?_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1d')]?_[_0xc03e('0x1e')](_0x2f80af[_0xc03e('0x1a')][_0xc03e('0x1d')],function(_0x584203){return{'model':db[_0x584203[_0xc03e('0x1f')]],'as':_0x584203['as'],'attributes':_0x584203[_0xc03e('0x20')],'include':_0x584203[_0xc03e('0x1d')]?_[_0xc03e('0x1e')](_0x584203[_0xc03e('0x1d')],function(_0xe7735a){return{'model':db[_0xe7735a[_0xc03e('0x1f')]],'as':_0xe7735a['as'],'attributes':_0xe7735a[_0xc03e('0x20')],'include':_0xe7735a[_0xc03e('0x1d')]?_[_0xc03e('0x1e')](_0xe7735a[_0xc03e('0x1d')],function(_0x50b74a){return{'model':db[_0x50b74a[_0xc03e('0x1f')]],'as':_0x50b74a['as'],'attributes':_0x50b74a['attributes']};}):[]};}):[]};}):[]:[]})[_0xc03e('0x21')](function(_0x3f9a83){logger[_0xc03e('0x14')](_0xc03e('0x17'),_0x2f80af);logger[_0xc03e('0xf')]('ShowSmsAccount',_0x2f80af,JSON[_0xc03e('0x22')](_0x3f9a83));_0x2d5df6(_0x3f9a83);})['catch'](function(_0xe2eff5){logger[_0xc03e('0x11')](_0xc03e('0x17'),_0xe2eff5[_0xc03e('0x13')],_0x2f80af);_0x10e842(_0x3bbaa5[_0xc03e('0x11')](0x1f4,_0xe2eff5['message']));});});};
\ No newline at end of file
index 6654984..be93f35 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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'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 1b53fb1..8d73fda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['path','connect-timeout','express','../../components/auth/service','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','exports','multer'];(function(_0x27ebe8,_0x21dd01){var _0x431778=function(_0xcf97c6){while(--_0xcf97c6){_0x27ebe8['push'](_0x27ebe8['shift']());}};_0x431778(++_0x21dd01);}(_0x3e74,0x175));var _0x43e7=function(_0x3f34b7,_0xd0b271){_0x3f34b7=_0x3f34b7-0x0;var _0x6e797=_0x3e74[_0x3f34b7];return _0x6e797;};'use strict';var multer=require(_0x43e7('0x0'));var util=require('util');var path=require(_0x43e7('0x1'));var timeout=require(_0x43e7('0x2'));var express=require(_0x43e7('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x43e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43e7('0x5'));var controller=require(_0x43e7('0x6'));router[_0x43e7('0x7')]('/',auth[_0x43e7('0x8')](),controller[_0x43e7('0x9')]);router['get'](_0x43e7('0xa'),auth[_0x43e7('0x8')](),controller[_0x43e7('0xb')]);router[_0x43e7('0xc')]('/',auth[_0x43e7('0x8')](),controller['create']);router[_0x43e7('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x43e7('0xe')]);router[_0x43e7('0xf')]('/:id',auth[_0x43e7('0x8')](),controller['destroy']);module[_0x43e7('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(_0x5b81d0,_0x1e6dcd){var _0x4e90fa=function(_0x121176){while(--_0x121176){_0x5b81d0['push'](_0x5b81d0['shift']());}};_0x4e90fa(++_0x1e6dcd);}(_0x008c,0x188));var _0xc008=function(_0x5bdf8e,_0x45d970){_0x5bdf8e=_0x5bdf8e-0x0;var _0x3e0750=_0x008c[_0x5bdf8e];return _0x3e0750;};'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 b297b10..b5a6ed1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ce=['STRING','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0xe96931,_0x2f59d7){var _0x332f08=function(_0x400f8c){while(--_0x400f8c){_0xe96931['push'](_0xe96931['shift']());}};_0x332f08(++_0x2f59d7);}(_0x50ce,0x1ef));var _0xe50c=function(_0x38ecda,_0x3b551e){_0x38ecda=_0x38ecda-0x0;var _0x3fa8f3=_0x50ce[_0x38ecda];return _0x3fa8f3;};'use strict';var Sequelize=require(_0xe50c('0x0'));module[_0xe50c('0x1')]={'priority':{'type':Sequelize[_0xe50c('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xe50c('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xe50c('0x4')]()},'description':{'type':Sequelize[_0xe50c('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xe50c('0x5')}};
\ No newline at end of file
+var _0x693a=['INTEGER','STRING','TEXT','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x693a,0x9e));var _0xa693=function(_0x1d2bc8,_0x2860bc){_0x1d2bc8=_0x1d2bc8-0x0;var _0x1857e1=_0x693a[_0x1d2bc8];return _0x1857e1;};'use strict';var Sequelize=require(_0xa693('0x0'));module[_0xa693('0x1')]={'priority':{'type':Sequelize[_0xa693('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xa693('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xa693('0x4')]()},'description':{'type':Sequelize[_0xa693('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 1b2aad1..0980762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e5a=['send','map','SmsApplication','rawAttributes','fieldName','query','keys','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','include','find','catch','create','body','params','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','../../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','apply','reject','save','update','then','stack','name'];(function(_0xdeb958,_0x38bb5e){var _0x489ddf=function(_0x2c236a){while(--_0x2c236a){_0xdeb958['push'](_0xdeb958['shift']());}};_0x489ddf(++_0x38bb5e);}(_0x4e5a,0xb8));var _0xa4e5=function(_0x1bfc7b,_0x360a77){_0x1bfc7b=_0x1bfc7b-0x0;var _0x3004cf=_0x4e5a[_0x1bfc7b];return _0x3004cf;};'use strict';var emlformat=require(_0xa4e5('0x0'));var rimraf=require(_0xa4e5('0x1'));var zipdir=require(_0xa4e5('0x2'));var jsonpatch=require(_0xa4e5('0x3'));var rp=require(_0xa4e5('0x4'));var moment=require(_0xa4e5('0x5'));var BPromise=require(_0xa4e5('0x6'));var Mustache=require(_0xa4e5('0x7'));var util=require(_0xa4e5('0x8'));var path=require(_0xa4e5('0x9'));var sox=require('sox');var csv=require(_0xa4e5('0xa'));var ejs=require(_0xa4e5('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa4e5('0xc'));var squel=require('squel');var crypto=require(_0xa4e5('0xd'));var jsforce=require(_0xa4e5('0xe'));var deskjs=require(_0xa4e5('0xf'));var toCsv=require(_0xa4e5('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa4e5('0x10'));var qs=require(_0xa4e5('0x11'));var as=require(_0xa4e5('0x12'));var hardwareService=require(_0xa4e5('0x13'));var logger=require(_0xa4e5('0x14'))(_0xa4e5('0x15'));var utils=require(_0xa4e5('0x16'));var config=require(_0xa4e5('0x17'));var licenseUtil=require(_0xa4e5('0x18'));var db=require(_0xa4e5('0x19'))['db'];function respondWithStatusCode(_0x354b56,_0x5e8123){_0x5e8123=_0x5e8123||0xcc;return function(_0x38ea51){if(_0x38ea51){return _0x354b56[_0xa4e5('0x1a')](_0x5e8123);}return _0x354b56['status'](_0x5e8123)[_0xa4e5('0x1b')]();};}function respondWithResult(_0x58b8d4,_0x3143f0){_0x3143f0=_0x3143f0||0xc8;return function(_0x3640da){if(_0x3640da){return _0x58b8d4[_0xa4e5('0x1c')](_0x3143f0)['json'](_0x3640da);}};}function respondWithFilteredResult(_0x1d3be4,_0x1d4b1b){return function(_0x4b0f49){if(_0x4b0f49){var _0xa3fdc3=typeof _0x1d4b1b[_0xa4e5('0x1d')]===_0xa4e5('0x1e')&&typeof _0x1d4b1b[_0xa4e5('0x1f')]===_0xa4e5('0x1e');var _0x569754=_0x4b0f49[_0xa4e5('0x20')];var _0x4a7bb5=_0xa3fdc3?0x0:_0x1d4b1b[_0xa4e5('0x1d')];var _0x5468cc=_0xa3fdc3?_0x4b0f49[_0xa4e5('0x20')]:_0x1d4b1b[_0xa4e5('0x1d')]+_0x1d4b1b[_0xa4e5('0x1f')];var _0x541113;if(_0x5468cc>=_0x569754){_0x5468cc=_0x569754;_0x541113=0xc8;}else{_0x541113=0xce;}_0x1d3be4[_0xa4e5('0x1c')](_0x541113);return _0x1d3be4[_0xa4e5('0x21')]('Content-Range',_0x4a7bb5+'-'+_0x5468cc+'/'+_0x569754)['json'](_0x4b0f49);}return null;};}function patchUpdates(_0xb9f7da){return function(_0x42afd4){try{jsonpatch[_0xa4e5('0x22')](_0x42afd4,_0xb9f7da,!![]);}catch(_0x343d59){return BPromise[_0xa4e5('0x23')](_0x343d59);}return _0x42afd4[_0xa4e5('0x24')]();};}function saveUpdates(_0x3ac38c,_0x33cadb){return function(_0x2b24e5){if(_0x2b24e5){return _0x2b24e5[_0xa4e5('0x25')](_0x3ac38c)[_0xa4e5('0x26')](function(_0x4a035e){return _0x4a035e;});}return null;};}function removeEntity(_0x3e735a,_0x55b8c1){return function(_0x1a1635){if(_0x1a1635){return _0x1a1635['destroy']()[_0xa4e5('0x26')](function(){_0x3e735a[_0xa4e5('0x1c')](0xcc)[_0xa4e5('0x1b')]();});}};}function handleEntityNotFound(_0x4d1188,_0x55a823){return function(_0x50418d){if(!_0x50418d){_0x4d1188['sendStatus'](0x194);}return _0x50418d;};}function handleError(_0x57aaf0,_0x189998){_0x189998=_0x189998||0x1f4;return function(_0x1c6424){logger['error'](_0x1c6424[_0xa4e5('0x27')]);if(_0x1c6424[_0xa4e5('0x28')]){delete _0x1c6424['name'];}_0x57aaf0[_0xa4e5('0x1c')](_0x189998)[_0xa4e5('0x29')](_0x1c6424);};}exports['index']=function(_0x358b58,_0x3cfa07){var _0x5ac87d={},_0x3d8a5b={},_0x1562b3={'count':0x0,'rows':[]};var _0x1c1fb1=_[_0xa4e5('0x2a')](db[_0xa4e5('0x2b')][_0xa4e5('0x2c')],function(_0x2efcb1){return{'name':_0x2efcb1[_0xa4e5('0x2d')],'type':_0x2efcb1['type']['key']};});_0x3d8a5b['model']=_[_0xa4e5('0x2a')](_0x1c1fb1,_0xa4e5('0x28'));_0x3d8a5b[_0xa4e5('0x2e')]=_[_0xa4e5('0x2f')](_0x358b58[_0xa4e5('0x2e')]);_0x3d8a5b['filters']=_[_0xa4e5('0x30')](_0x3d8a5b['model'],_0x3d8a5b['query']);_0x5ac87d[_0xa4e5('0x31')]=_[_0xa4e5('0x30')](_0x3d8a5b['model'],qs[_0xa4e5('0x32')](_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x32')]));_0x5ac87d['attributes']=_0x5ac87d[_0xa4e5('0x31')][_0xa4e5('0x33')]?_0x5ac87d['attributes']:_0x3d8a5b[_0xa4e5('0x34')];if(!_0x358b58['query'][_0xa4e5('0x35')](_0xa4e5('0x36'))){_0x5ac87d[_0xa4e5('0x1f')]=qs[_0xa4e5('0x1f')](_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x1f')]);_0x5ac87d[_0xa4e5('0x1d')]=qs[_0xa4e5('0x1d')](_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x1d')]);}_0x5ac87d[_0xa4e5('0x37')]=qs[_0xa4e5('0x38')](_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x38')]);_0x5ac87d[_0xa4e5('0x39')]=qs[_0xa4e5('0x3a')](_[_0xa4e5('0x3b')](_0x358b58[_0xa4e5('0x2e')],_0x3d8a5b['filters']),_0x1c1fb1);if(_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x3c')]){_0x5ac87d['where']=_['merge'](_0x5ac87d[_0xa4e5('0x39')],{'$or':_['map'](_0x1c1fb1,function(_0x4ebc24){if(_0x4ebc24[_0xa4e5('0x3d')]!==_0xa4e5('0x3e')){var _0x2605d0={};_0x2605d0[_0x4ebc24[_0xa4e5('0x28')]]={'$like':'%'+_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x3c')]+'%'};return _0x2605d0;}})});}_0x5ac87d=_[_0xa4e5('0x3f')]({},_0x5ac87d,_0x358b58[_0xa4e5('0x40')]);var _0x13b205={'where':_0x5ac87d['where']};return db[_0xa4e5('0x2b')][_0xa4e5('0x20')](_0x13b205)[_0xa4e5('0x26')](function(_0x1d2c23){_0x1562b3[_0xa4e5('0x20')]=_0x1d2c23;if(_0x358b58[_0xa4e5('0x2e')][_0xa4e5('0x41')]){_0x5ac87d['include']=[{'all':!![]}];}return db[_0xa4e5('0x2b')][_0xa4e5('0x42')](_0x5ac87d);})[_0xa4e5('0x26')](function(_0x23d5f6){_0x1562b3[_0xa4e5('0x43')]=_0x23d5f6;return _0x1562b3;})[_0xa4e5('0x26')](respondWithFilteredResult(_0x3cfa07,_0x5ac87d))['catch'](handleError(_0x3cfa07,null));};exports['show']=function(_0x8352e1,_0x1c1f4b){var _0x354eac={'raw':!![],'where':{'id':_0x8352e1['params']['id']}},_0x3f6e07={};_0x3f6e07[_0xa4e5('0x34')]=_['keys'](db['SmsApplication'][_0xa4e5('0x2c')]);_0x3f6e07[_0xa4e5('0x2e')]=_[_0xa4e5('0x2f')](_0x8352e1[_0xa4e5('0x2e')]);_0x3f6e07[_0xa4e5('0x3a')]=_[_0xa4e5('0x30')](_0x3f6e07['model'],_0x3f6e07[_0xa4e5('0x2e')]);_0x354eac[_0xa4e5('0x31')]=_[_0xa4e5('0x30')](_0x3f6e07[_0xa4e5('0x34')],qs['fields'](_0x8352e1[_0xa4e5('0x2e')][_0xa4e5('0x32')]));_0x354eac['attributes']=_0x354eac[_0xa4e5('0x31')][_0xa4e5('0x33')]?_0x354eac[_0xa4e5('0x31')]:_0x3f6e07[_0xa4e5('0x34')];if(_0x8352e1[_0xa4e5('0x2e')][_0xa4e5('0x41')]){_0x354eac[_0xa4e5('0x44')]=[{'all':!![]}];}_0x354eac=_['merge']({},_0x354eac,_0x8352e1[_0xa4e5('0x40')]);return db[_0xa4e5('0x2b')][_0xa4e5('0x45')](_0x354eac)[_0xa4e5('0x26')](handleEntityNotFound(_0x1c1f4b,null))['then'](respondWithResult(_0x1c1f4b,null))[_0xa4e5('0x46')](handleError(_0x1c1f4b,null));};exports[_0xa4e5('0x47')]=function(_0x423a28,_0x2aee08){return db[_0xa4e5('0x2b')][_0xa4e5('0x47')](_0x423a28[_0xa4e5('0x48')],{})[_0xa4e5('0x26')](respondWithResult(_0x2aee08,0xc9))[_0xa4e5('0x46')](handleError(_0x2aee08,null));};exports[_0xa4e5('0x25')]=function(_0x49c76a,_0x36e009){if(_0x49c76a[_0xa4e5('0x48')]['id']){delete _0x49c76a['body']['id'];}return db[_0xa4e5('0x2b')][_0xa4e5('0x45')]({'where':{'id':_0x49c76a[_0xa4e5('0x49')]['id']}})['then'](handleEntityNotFound(_0x36e009,null))[_0xa4e5('0x26')](saveUpdates(_0x49c76a[_0xa4e5('0x48')],null))[_0xa4e5('0x26')](respondWithResult(_0x36e009,null))[_0xa4e5('0x46')](handleError(_0x36e009,null));};exports[_0xa4e5('0x4a')]=function(_0x1dbe43,_0x5645d1){return db['SmsApplication']['find']({'where':{'id':_0x1dbe43[_0xa4e5('0x49')]['id']}})[_0xa4e5('0x26')](handleEntityNotFound(_0x5645d1,null))[_0xa4e5('0x26')](removeEntity(_0x5645d1,null))['catch'](handleError(_0x5645d1,null));};
\ No newline at end of file
+var _0xcaa4=['send','index','map','SmsApplication','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','rows','show','fields','length','include','find','body','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','reject','save','update','then','destroy','name'];(function(_0x6b0c5f,_0x556b4f){var _0x1335c6=function(_0x1de218){while(--_0x1de218){_0x6b0c5f['push'](_0x6b0c5f['shift']());}};_0x1335c6(++_0x556b4f);}(_0xcaa4,0x10b));var _0x4caa=function(_0x5ad0c8,_0xd4b88a){_0x5ad0c8=_0x5ad0c8-0x0;var _0xefff34=_0xcaa4[_0x5ad0c8];return _0xefff34;};'use strict';var emlformat=require(_0x4caa('0x0'));var rimraf=require(_0x4caa('0x1'));var zipdir=require(_0x4caa('0x2'));var jsonpatch=require(_0x4caa('0x3'));var rp=require('request-promise');var moment=require(_0x4caa('0x4'));var BPromise=require(_0x4caa('0x5'));var Mustache=require(_0x4caa('0x6'));var util=require(_0x4caa('0x7'));var path=require(_0x4caa('0x8'));var sox=require(_0x4caa('0x9'));var csv=require(_0x4caa('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4caa('0xb'));var _=require(_0x4caa('0xc'));var squel=require(_0x4caa('0xd'));var crypto=require(_0x4caa('0xe'));var jsforce=require(_0x4caa('0xf'));var deskjs=require(_0x4caa('0x10'));var toCsv=require(_0x4caa('0xa'));var querystring=require(_0x4caa('0x11'));var Papa=require('papaparse');var Redis=require(_0x4caa('0x12'));var authService=require(_0x4caa('0x13'));var qs=require(_0x4caa('0x14'));var as=require(_0x4caa('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4caa('0x16'))(_0x4caa('0x17'));var utils=require(_0x4caa('0x18'));var config=require(_0x4caa('0x19'));var licenseUtil=require(_0x4caa('0x1a'));var db=require(_0x4caa('0x1b'))['db'];function respondWithStatusCode(_0x3569c6,_0x1f96c0){_0x1f96c0=_0x1f96c0||0xcc;return function(_0x17f9c8){if(_0x17f9c8){return _0x3569c6[_0x4caa('0x1c')](_0x1f96c0);}return _0x3569c6['status'](_0x1f96c0)[_0x4caa('0x1d')]();};}function respondWithResult(_0x34d47d,_0x1204aa){_0x1204aa=_0x1204aa||0xc8;return function(_0x1db166){if(_0x1db166){return _0x34d47d['status'](_0x1204aa)['json'](_0x1db166);}};}function respondWithFilteredResult(_0x6e1755,_0x489a0d){return function(_0x4d0337){if(_0x4d0337){var _0x3ec571=typeof _0x489a0d[_0x4caa('0x1e')]===_0x4caa('0x1f')&&typeof _0x489a0d[_0x4caa('0x20')]===_0x4caa('0x1f');var _0x1cd2ef=_0x4d0337[_0x4caa('0x21')];var _0x3b6309=_0x3ec571?0x0:_0x489a0d[_0x4caa('0x1e')];var _0x24479f=_0x3ec571?_0x4d0337[_0x4caa('0x21')]:_0x489a0d['offset']+_0x489a0d[_0x4caa('0x20')];var _0x2c02e9;if(_0x24479f>=_0x1cd2ef){_0x24479f=_0x1cd2ef;_0x2c02e9=0xc8;}else{_0x2c02e9=0xce;}_0x6e1755[_0x4caa('0x22')](_0x2c02e9);return _0x6e1755[_0x4caa('0x23')](_0x4caa('0x24'),_0x3b6309+'-'+_0x24479f+'/'+_0x1cd2ef)[_0x4caa('0x25')](_0x4d0337);}return null;};}function patchUpdates(_0x37ad2d){return function(_0x2c9cc2){try{jsonpatch[_0x4caa('0x26')](_0x2c9cc2,_0x37ad2d,!![]);}catch(_0x1c2a10){return BPromise[_0x4caa('0x27')](_0x1c2a10);}return _0x2c9cc2[_0x4caa('0x28')]();};}function saveUpdates(_0x18cb7e,_0x3e3630){return function(_0x1217e3){if(_0x1217e3){return _0x1217e3[_0x4caa('0x29')](_0x18cb7e)[_0x4caa('0x2a')](function(_0x460471){return _0x460471;});}return null;};}function removeEntity(_0x5c0394,_0x4dc66d){return function(_0x14dfdd){if(_0x14dfdd){return _0x14dfdd[_0x4caa('0x2b')]()[_0x4caa('0x2a')](function(){_0x5c0394[_0x4caa('0x22')](0xcc)[_0x4caa('0x1d')]();});}};}function handleEntityNotFound(_0x1aff30,_0x6040d2){return function(_0x15de1e){if(!_0x15de1e){_0x1aff30[_0x4caa('0x1c')](0x194);}return _0x15de1e;};}function handleError(_0x4d9d70,_0x1dcde1){_0x1dcde1=_0x1dcde1||0x1f4;return function(_0x364286){logger['error'](_0x364286['stack']);if(_0x364286[_0x4caa('0x2c')]){delete _0x364286['name'];}_0x4d9d70[_0x4caa('0x22')](_0x1dcde1)[_0x4caa('0x2d')](_0x364286);};}exports[_0x4caa('0x2e')]=function(_0x5a6328,_0x48c066){var _0x306318={},_0x41e65a={},_0x4106ef={'count':0x0,'rows':[]};var _0x28303c=_[_0x4caa('0x2f')](db[_0x4caa('0x30')][_0x4caa('0x31')],function(_0x2a0139){return{'name':_0x2a0139[_0x4caa('0x32')],'type':_0x2a0139[_0x4caa('0x33')][_0x4caa('0x34')]};});_0x41e65a[_0x4caa('0x35')]=_[_0x4caa('0x2f')](_0x28303c,_0x4caa('0x2c'));_0x41e65a[_0x4caa('0x36')]=_[_0x4caa('0x37')](_0x5a6328[_0x4caa('0x36')]);_0x41e65a['filters']=_[_0x4caa('0x38')](_0x41e65a[_0x4caa('0x35')],_0x41e65a['query']);_0x306318[_0x4caa('0x39')]=_[_0x4caa('0x38')](_0x41e65a[_0x4caa('0x35')],qs['fields'](_0x5a6328[_0x4caa('0x36')]['fields']));_0x306318['attributes']=_0x306318[_0x4caa('0x39')]['length']?_0x306318[_0x4caa('0x39')]:_0x41e65a['model'];if(!_0x5a6328['query']['hasOwnProperty'](_0x4caa('0x3a'))){_0x306318[_0x4caa('0x20')]=qs[_0x4caa('0x20')](_0x5a6328['query'][_0x4caa('0x20')]);_0x306318['offset']=qs['offset'](_0x5a6328[_0x4caa('0x36')][_0x4caa('0x1e')]);}_0x306318[_0x4caa('0x3b')]=qs[_0x4caa('0x3c')](_0x5a6328[_0x4caa('0x36')]['sort']);_0x306318[_0x4caa('0x3d')]=qs[_0x4caa('0x3e')](_[_0x4caa('0x3f')](_0x5a6328[_0x4caa('0x36')],_0x41e65a[_0x4caa('0x3e')]),_0x28303c);if(_0x5a6328['query'][_0x4caa('0x40')]){_0x306318[_0x4caa('0x3d')]=_['merge'](_0x306318[_0x4caa('0x3d')],{'$or':_[_0x4caa('0x2f')](_0x28303c,function(_0x11c0dd){if(_0x11c0dd[_0x4caa('0x33')]!==_0x4caa('0x41')){var _0x43f975={};_0x43f975[_0x11c0dd[_0x4caa('0x2c')]]={'$like':'%'+_0x5a6328[_0x4caa('0x36')]['filter']+'%'};return _0x43f975;}})});}_0x306318=_[_0x4caa('0x42')]({},_0x306318,_0x5a6328[_0x4caa('0x43')]);var _0x2fb811={'where':_0x306318[_0x4caa('0x3d')]};return db[_0x4caa('0x30')]['count'](_0x2fb811)['then'](function(_0x5f0459){_0x4106ef[_0x4caa('0x21')]=_0x5f0459;if(_0x5a6328[_0x4caa('0x36')][_0x4caa('0x44')]){_0x306318['include']=[{'all':!![]}];}return db[_0x4caa('0x30')]['findAll'](_0x306318);})[_0x4caa('0x2a')](function(_0x29e920){_0x4106ef[_0x4caa('0x45')]=_0x29e920;return _0x4106ef;})[_0x4caa('0x2a')](respondWithFilteredResult(_0x48c066,_0x306318))['catch'](handleError(_0x48c066,null));};exports[_0x4caa('0x46')]=function(_0x7bfd05,_0x35e986){var _0x445c73={'raw':!![],'where':{'id':_0x7bfd05['params']['id']}},_0x2031be={};_0x2031be[_0x4caa('0x35')]=_['keys'](db[_0x4caa('0x30')][_0x4caa('0x31')]);_0x2031be[_0x4caa('0x36')]=_[_0x4caa('0x37')](_0x7bfd05['query']);_0x2031be[_0x4caa('0x3e')]=_[_0x4caa('0x38')](_0x2031be[_0x4caa('0x35')],_0x2031be['query']);_0x445c73[_0x4caa('0x39')]=_['intersection'](_0x2031be['model'],qs['fields'](_0x7bfd05[_0x4caa('0x36')][_0x4caa('0x47')]));_0x445c73[_0x4caa('0x39')]=_0x445c73[_0x4caa('0x39')][_0x4caa('0x48')]?_0x445c73[_0x4caa('0x39')]:_0x2031be[_0x4caa('0x35')];if(_0x7bfd05['query'][_0x4caa('0x44')]){_0x445c73[_0x4caa('0x49')]=[{'all':!![]}];}_0x445c73=_[_0x4caa('0x42')]({},_0x445c73,_0x7bfd05[_0x4caa('0x43')]);return db['SmsApplication'][_0x4caa('0x4a')](_0x445c73)[_0x4caa('0x2a')](handleEntityNotFound(_0x35e986,null))[_0x4caa('0x2a')](respondWithResult(_0x35e986,null))['catch'](handleError(_0x35e986,null));};exports['create']=function(_0x3ab737,_0xc2ef8c){return db[_0x4caa('0x30')]['create'](_0x3ab737[_0x4caa('0x4b')],{})[_0x4caa('0x2a')](respondWithResult(_0xc2ef8c,0xc9))['catch'](handleError(_0xc2ef8c,null));};exports['update']=function(_0x35c73e,_0x1f58a9){if(_0x35c73e['body']['id']){delete _0x35c73e[_0x4caa('0x4b')]['id'];}return db[_0x4caa('0x30')]['find']({'where':{'id':_0x35c73e[_0x4caa('0x4c')]['id']}})[_0x4caa('0x2a')](handleEntityNotFound(_0x1f58a9,null))['then'](saveUpdates(_0x35c73e['body'],null))[_0x4caa('0x2a')](respondWithResult(_0x1f58a9,null))[_0x4caa('0x4d')](handleError(_0x1f58a9,null));};exports[_0x4caa('0x2b')]=function(_0x49cb52,_0x5f2bee){return db['SmsApplication'][_0x4caa('0x4a')]({'where':{'id':_0x49cb52[_0x4caa('0x4c')]['id']}})[_0x4caa('0x2a')](handleEntityNotFound(_0x5f2bee,null))[_0x4caa('0x2a')](removeEntity(_0x5f2bee,null))[_0x4caa('0x4d')](handleError(_0x5f2bee,null));};
\ No newline at end of file
index 5c051ca..c6cef4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2873=['define','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x208505,_0x241a77){var _0x1a985f=function(_0x4a5110){while(--_0x4a5110){_0x208505['push'](_0x208505['shift']());}};_0x1a985f(++_0x241a77);}(_0x2873,0x1f2));var _0x3287=function(_0x5dec53,_0x19cb42){_0x5dec53=_0x5dec53-0x0;var _0x2df8a2=_0x2873[_0x5dec53];return _0x2df8a2;};'use strict';var _=require(_0x3287('0x0'));var util=require(_0x3287('0x1'));var logger=require(_0x3287('0x2'))(_0x3287('0x3'));var moment=require('moment');var BPromise=require(_0x3287('0x4'));var rp=require(_0x3287('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3287('0x6'));var config=require(_0x3287('0x7'));var attributes=require('./smsApplication.attributes');module[_0x3287('0x8')]=function(_0x795e58,_0x5b30c4){return _0x795e58[_0x3287('0x9')]('SmsApplication',attributes,{'tableName':_0x3287('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3287('0xb'),'collate':_0x3287('0xc')});};
\ No newline at end of file
+var _0x41ee=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsApplication.attributes','exports','SmsApplication','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x420c58,_0x2ef6c0){var _0x388792=function(_0x1f0150){while(--_0x1f0150){_0x420c58['push'](_0x420c58['shift']());}};_0x388792(++_0x2ef6c0);}(_0x41ee,0x117));var _0xe41e=function(_0x1a2bf9,_0x182105){_0x1a2bf9=_0x1a2bf9-0x0;var _0x3980b7=_0x41ee[_0x1a2bf9];return _0x3980b7;};'use strict';var _=require(_0xe41e('0x0'));var util=require(_0xe41e('0x1'));var logger=require(_0xe41e('0x2'))(_0xe41e('0x3'));var moment=require(_0xe41e('0x4'));var BPromise=require(_0xe41e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe41e('0x6'));var rimraf=require(_0xe41e('0x7'));var config=require(_0xe41e('0x8'));var attributes=require(_0xe41e('0x9'));module[_0xe41e('0xa')]=function(_0x4b7308,_0x1c215e){return _0x4b7308['define'](_0xe41e('0xb'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe41e('0xc'),'collate':_0xe41e('0xd')});};
\ No newline at end of file
index edee8fa..f881dc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d4=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','error','message','SmsApplication,\x20%s,\x20%s','result','catch','lodash','util','bluebird'];(function(_0x4710e,_0x1c425c){var _0x501072=function(_0x4870d7){while(--_0x4870d7){_0x4710e['push'](_0x4710e['shift']());}};_0x501072(++_0x1c425c);}(_0x94d4,0xa5));var _0x494d=function(_0x5ce3da,_0xa84af){_0x5ce3da=_0x5ce3da-0x0;var _0x5ec3a8=_0x94d4[_0x5ce3da];return _0x5ec3a8;};'use strict';var _=require(_0x494d('0x0'));var util=require(_0x494d('0x1'));var moment=require('moment');var BPromise=require(_0x494d('0x2'));var rs=require(_0x494d('0x3'));var fs=require('fs');var Redis=require(_0x494d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x494d('0x5'));var logger=require(_0x494d('0x6'))(_0x494d('0x7'));var config=require(_0x494d('0x8'));var jayson=require(_0x494d('0x9'));var client=jayson[_0x494d('0xa')][_0x494d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c53d7,_0x4f4576,_0x5269db){return new BPromise(function(_0x396280,_0x3f6b68){return client['request'](_0x4c53d7,_0x5269db)['then'](function(_0x456fe8){logger[_0x494d('0xc')]('SmsApplication,\x20%s,\x20%s',_0x4f4576,_0x494d('0xd'));logger[_0x494d('0xe')](_0x494d('0xf'),_0x4f4576,_0x494d('0xd'),JSON['stringify'](_0x456fe8));if(_0x456fe8[_0x494d('0x10')]){if(_0x456fe8[_0x494d('0x10')]['code']===0x1f4){logger['error']('SmsApplication,\x20%s,\x20%s',_0x4f4576,_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);return _0x3f6b68(_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);}logger[_0x494d('0x10')](_0x494d('0x12'),_0x4f4576,_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);return _0x396280(_0x456fe8[_0x494d('0x10')][_0x494d('0x11')]);}else{logger[_0x494d('0xc')]('SmsApplication,\x20%s,\x20%s',_0x4f4576,_0x494d('0xd'));_0x396280(_0x456fe8[_0x494d('0x13')][_0x494d('0x11')]);}})[_0x494d('0x14')](function(_0x120488){logger[_0x494d('0x10')](_0x494d('0x12'),_0x4f4576,_0x120488);_0x3f6b68(_0x120488);});});}
\ No newline at end of file
+var _0xe458=['error','code','message','SmsApplication,\x20%s,\x20%s','info','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x36b8e1,_0x4f93bd){var _0x2101ed=function(_0x51e49c){while(--_0x51e49c){_0x36b8e1['push'](_0x36b8e1['shift']());}};_0x2101ed(++_0x4f93bd);}(_0xe458,0x160));var _0x8e45=function(_0x1eafed,_0x3d29ba){_0x1eafed=_0x1eafed-0x0;var _0xd36676=_0xe458[_0x1eafed];return _0xd36676;};'use strict';var _=require(_0x8e45('0x0'));var util=require(_0x8e45('0x1'));var moment=require('moment');var BPromise=require(_0x8e45('0x2'));var rs=require(_0x8e45('0x3'));var fs=require('fs');var Redis=require(_0x8e45('0x4'));var db=require(_0x8e45('0x5'))['db'];var utils=require(_0x8e45('0x6'));var logger=require(_0x8e45('0x7'))(_0x8e45('0x8'));var config=require(_0x8e45('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8e45('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3a92a1,_0x3a646f,_0x37cde4){return new BPromise(function(_0x27433a,_0x1f60da){return client[_0x8e45('0xb')](_0x3a92a1,_0x37cde4)['then'](function(_0x59886a){logger['info']('SmsApplication,\x20%s,\x20%s',_0x3a646f,_0x8e45('0xc'));logger[_0x8e45('0xd')](_0x8e45('0xe'),_0x3a646f,'request\x20sent',JSON[_0x8e45('0xf')](_0x59886a));if(_0x59886a[_0x8e45('0x10')]){if(_0x59886a['error'][_0x8e45('0x11')]===0x1f4){logger[_0x8e45('0x10')]('SmsApplication,\x20%s,\x20%s',_0x3a646f,_0x59886a[_0x8e45('0x10')][_0x8e45('0x12')]);return _0x1f60da(_0x59886a['error'][_0x8e45('0x12')]);}logger[_0x8e45('0x10')](_0x8e45('0x13'),_0x3a646f,_0x59886a['error'][_0x8e45('0x12')]);return _0x27433a(_0x59886a[_0x8e45('0x10')][_0x8e45('0x12')]);}else{logger[_0x8e45('0x14')](_0x8e45('0x13'),_0x3a646f,_0x8e45('0xc'));_0x27433a(_0x59886a[_0x8e45('0x15')][_0x8e45('0x12')]);}})[_0x8e45('0x16')](function(_0x23071d){logger[_0x8e45('0x10')](_0x8e45('0x13'),_0x3a646f,_0x23071d);_0x1f60da(_0x23071d);});});}
\ No newline at end of file
index b9f33ee..126a66d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['/:id','/:id/messages','getMessages','/:id/download','create','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','describe'];(function(_0x18d582,_0x520ff6){var _0x168d25=function(_0x1706a7){while(--_0x1706a7){_0x18d582['push'](_0x18d582['shift']());}};_0x168d25(++_0x520ff6);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x48c2ae,_0x4cea90){_0x48c2ae=_0x48c2ae-0x0;var _0x8f7531=_0x4cf8[_0x48c2ae];return _0x8f7531;};'use strict';var multer=require(_0x84cf('0x0'));var util=require(_0x84cf('0x1'));var path=require(_0x84cf('0x2'));var timeout=require(_0x84cf('0x3'));var express=require(_0x84cf('0x4'));var router=express[_0x84cf('0x5')]();var fs_extra=require(_0x84cf('0x6'));var auth=require(_0x84cf('0x7'));var interaction=require(_0x84cf('0x8'));var config=require(_0x84cf('0x9'));var controller=require(_0x84cf('0xa'));router[_0x84cf('0xb')]('/',auth['isAuthenticated'](),controller['index']);router[_0x84cf('0xb')]('/describe',auth[_0x84cf('0xc')](),controller[_0x84cf('0xd')]);router['get'](_0x84cf('0xe'),auth[_0x84cf('0xc')](),controller['show']);router[_0x84cf('0xb')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x10')]);router['get'](_0x84cf('0x11'),auth[_0x84cf('0xc')](),controller['download']);router['post']('/',auth[_0x84cf('0xc')](),controller[_0x84cf('0x12')]);router[_0x84cf('0x13')](_0x84cf('0xf'),auth[_0x84cf('0xc')](),controller[_0x84cf('0x14')]);router[_0x84cf('0x13')](_0x84cf('0x15'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x18')),controller[_0x84cf('0x19')]);router[_0x84cf('0x1a')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1b')),controller['update']);router[_0x84cf('0x1c')](_0x84cf('0xe'),auth[_0x84cf('0xc')](),interaction[_0x84cf('0x16')](_0x84cf('0x17'),_0x84cf('0x1d')),controller[_0x84cf('0x1e')]);router['delete']('/:id/tags',auth[_0x84cf('0xc')](),controller[_0x84cf('0x1f')]);module[_0x84cf('0x20')]=router;
\ No newline at end of file
+var _0x4fc2=['removeTags','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./smsInteraction.controller','isAuthenticated','index','/describe','describe','get','/:id','/:id/messages','getMessages','/:id/download','download','create','addMessage','post','/:id/tags','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','delete','tracked','smsinteraction:destroy','destroy'];(function(_0x27e565,_0x335626){var _0x2a0f19=function(_0x347e20){while(--_0x347e20){_0x27e565['push'](_0x27e565['shift']());}};_0x2a0f19(++_0x335626);}(_0x4fc2,0x111));var _0x24fc=function(_0x23e4b4,_0x132419){_0x23e4b4=_0x23e4b4-0x0;var _0x3bc471=_0x4fc2[_0x23e4b4];return _0x3bc471;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')](_0x24fc('0xe'),auth[_0x24fc('0x9')](),controller['show']);router[_0x24fc('0xd')](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x10')]);router[_0x24fc('0xd')](_0x24fc('0x11'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x12')]);router['post']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0x13')]);router['post'](_0x24fc('0xf'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x14')]);router[_0x24fc('0x15')](_0x24fc('0x16'),auth[_0x24fc('0x9')](),interaction['tracked'](_0x24fc('0x17'),_0x24fc('0x18')),controller[_0x24fc('0x19')]);router[_0x24fc('0x1a')]('/:id',auth[_0x24fc('0x9')](),interaction['tracked'](_0x24fc('0x17'),_0x24fc('0x1b')),controller[_0x24fc('0x1c')]);router[_0x24fc('0x1d')](_0x24fc('0xe'),auth['isAuthenticated'](),interaction[_0x24fc('0x1e')](_0x24fc('0x17'),_0x24fc('0x1f')),controller[_0x24fc('0x20')]);router['delete'](_0x24fc('0x16'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x21')]);module['exports']=router;
\ No newline at end of file
index 0cb9c1e..76ed7c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf12=['ENUM','out','moment','BOOLEAN','DATE','STRING'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xcf12,0x140));var _0x2cf1=function(_0x43c78c,_0x2734e9){_0x43c78c=_0x43c78c-0x0;var _0xd334b1=_0xcf12[_0x43c78c];return _0xd334b1;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x2cf1('0x0'));module['exports']={'closed':{'type':Sequelize[_0x2cf1('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2cf1('0x2')]},'disposition':{'type':Sequelize[_0x2cf1('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x2cf1('0x3')]},'note':{'type':Sequelize[_0x2cf1('0x3')]},'phone':{'type':Sequelize[_0x2cf1('0x3')]},'read1stAt':{'type':Sequelize[_0x2cf1('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x2cf1('0x4')]('in',_0x2cf1('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2cf1('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x2cf1('0x4')]('in',_0x2cf1('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x4491=['out','BOOLEAN','sequelize','exports','DATE','STRING','ENUM'];(function(_0x547160,_0x537a78){var _0x3f7b71=function(_0x58be0c){while(--_0x58be0c){_0x547160['push'](_0x547160['shift']());}};_0x3f7b71(++_0x537a78);}(_0x4491,0x1bb));var _0x1449=function(_0x3295ae,_0x37e9d7){_0x3295ae=_0x3295ae-0x0;var _0x2e5547=_0x4491[_0x3295ae];return _0x2e5547;};'use strict';var Sequelize=require(_0x1449('0x0'));var moment=require('moment');module[_0x1449('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1449('0x2')]},'disposition':{'type':Sequelize[_0x1449('0x3')]},'secondDisposition':{'type':Sequelize[_0x1449('0x3')]},'thirdDisposition':{'type':Sequelize[_0x1449('0x3')]},'note':{'type':Sequelize[_0x1449('0x3')]},'phone':{'type':Sequelize[_0x1449('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x1449('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1449('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x1449('0x4')]('in',_0x1449('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1449('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 30906d9..45df3f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57df=['crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','sendStatus','error','name','send','Users','map','Tags','split','push','TagIds','catch','index','SmsInteraction','rawAttributes','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','u.id','ui.SmsInteractionId','from','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','sms_interaction_has_tags','it.SmsInteractionId\x20=\x20i.id','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','Contact','operator','$substring','find','ContactId','buildExpression','type','text','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','keys','compact','isEmpty','SmsAccountId','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','isArray','tag','filter','replace','i.phone\x20LIKE\x20?','getFullTextValue','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','i.SmsAccountId\x20IN\x20?','sequelize','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','show','params','includeAll','include','options','create','describe','addMessage','SmsMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','rows','spread','findAll','emit','join','root','server','files','attachments','CmContact','firstName','lastName','Messages','secret','SmsAccount','Account','Owner','fullname','get','mkdirSync','Sms','N.A.','closed','disposition','direction','out','System','transcript-','.pdf','createPdfFromHTML','log','err','eml-format','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x29eeec,_0x337c09){var _0x2cf46e=function(_0x491b79){while(--_0x491b79){_0x29eeec['push'](_0x29eeec['shift']());}};_0x2cf46e(++_0x337c09);}(_0x57df,0xd4));var _0xf57d=function(_0x6747af,_0x2f7a49){_0x6747af=_0x6747af-0x0;var _0x560abe=_0x57df[_0x6747af];return _0x560abe;};'use strict';var emlformat=require(_0xf57d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf57d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf57d('0x2'));var moment=require(_0xf57d('0x3'));var BPromise=require(_0xf57d('0x4'));var Mustache=require(_0xf57d('0x5'));var util=require('util');var path=require('path');var sox=require(_0xf57d('0x6'));var csv=require(_0xf57d('0x7'));var ejs=require(_0xf57d('0x8'));var fs=require('fs');var fs_extra=require(_0xf57d('0x9'));var _=require(_0xf57d('0xa'));var squel=require(_0xf57d('0xb'));var crypto=require(_0xf57d('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf57d('0xd'));var toCsv=require(_0xf57d('0x7'));var querystring=require(_0xf57d('0xe'));var Papa=require(_0xf57d('0xf'));var Redis=require('ioredis');var authService=require(_0xf57d('0x10'));var qs=require(_0xf57d('0x11'));var as=require(_0xf57d('0x12'));var pdf=require(_0xf57d('0x13'));var hardwareService=require(_0xf57d('0x14'));var logger=require('../../config/logger')(_0xf57d('0x15'));var utils=require(_0xf57d('0x16'));var config=require(_0xf57d('0x17'));var licenseUtil=require(_0xf57d('0x18'));var db=require(_0xf57d('0x19'))['db'];config[_0xf57d('0x1a')]=_[_0xf57d('0x1b')](config[_0xf57d('0x1a')],{'host':_0xf57d('0x1c'),'port':0x18eb});var socket=require(_0xf57d('0x1d'))(new Redis(config['redis']));require(_0xf57d('0x1e'))[_0xf57d('0x1f')](socket);function respondWithStatusCode(_0x2f0809,_0x45b9c5){_0x45b9c5=_0x45b9c5||0xcc;return function(_0x49666b){if(_0x49666b){return _0x2f0809['sendStatus'](_0x45b9c5);}return _0x2f0809[_0xf57d('0x20')](_0x45b9c5)[_0xf57d('0x21')]();};}function respondWithResult(_0x21e72f,_0x587b02){_0x587b02=_0x587b02||0xc8;return function(_0x51b6dc){if(_0x51b6dc){return _0x21e72f['status'](_0x587b02)[_0xf57d('0x22')](_0x51b6dc);}};}function respondWithFilteredResult(_0x3d6fda,_0x5971d3){return function(_0x46a907){if(_0x46a907){var _0x48b714=typeof _0x5971d3['offset']===_0xf57d('0x23')&&typeof _0x5971d3[_0xf57d('0x24')]===_0xf57d('0x23');var _0x58132a=_0x46a907[_0xf57d('0x25')];var _0x8210e9=_0x48b714?0x0:_0x5971d3[_0xf57d('0x26')];var _0xc48f1=_0x48b714?_0x46a907[_0xf57d('0x25')]:_0x5971d3['offset']+_0x5971d3[_0xf57d('0x24')];var _0x464740;if(_0xc48f1>=_0x58132a){_0xc48f1=_0x58132a;_0x464740=0xc8;}else{_0x464740=0xce;}_0x3d6fda['status'](_0x464740);return _0x3d6fda[_0xf57d('0x27')](_0xf57d('0x28'),_0x8210e9+'-'+_0xc48f1+'/'+_0x58132a)[_0xf57d('0x22')](_0x46a907);}return null;};}function patchUpdates(_0x396557){return function(_0x453926){try{jsonpatch[_0xf57d('0x29')](_0x453926,_0x396557,!![]);}catch(_0x3a3290){return BPromise['reject'](_0x3a3290);}return _0x453926[_0xf57d('0x2a')]();};}function saveUpdates(_0x256e1d,_0x5e2daf){return function(_0x27f536){if(_0x27f536){return _0x27f536[_0xf57d('0x2b')](_0x256e1d)['then'](function(_0xa5acbc){return _0xa5acbc;});}return null;};}function removeEntity(_0x42905e,_0xd99393){return function(_0x5b10b1){if(_0x5b10b1){return _0x5b10b1[_0xf57d('0x2c')]()[_0xf57d('0x2d')](function(){_0x42905e[_0xf57d('0x20')](0xcc)[_0xf57d('0x21')]();});}};}function handleEntityNotFound(_0x57a3b1,_0x1a1bac){return function(_0x57e723){if(!_0x57e723){_0x57a3b1[_0xf57d('0x2e')](0x194);}return _0x57e723;};}function handleError(_0x5e799e,_0x1817fb){_0x1817fb=_0x1817fb||0x1f4;return function(_0x57fa16){logger[_0xf57d('0x2f')](_0x57fa16['stack']);if(_0x57fa16[_0xf57d('0x30')]){delete _0x57fa16[_0xf57d('0x30')];}_0x5e799e[_0xf57d('0x20')](_0x1817fb)[_0xf57d('0x31')](_0x57fa16);};}function getInteractionUsers(_0xdd3ca7,_0x21ea01){return new BPromise(function(_0x8bd2d,_0x261e55){try{if(_0x21ea01[_0xdd3ca7['id']]){_0xdd3ca7[_0xf57d('0x32')]=_[_0xf57d('0x33')](_0x21ea01[_0xdd3ca7['id']],function(_0x1c4f0d){return{'id':_0x1c4f0d['id'],'fullname':_0x1c4f0d['fullname']};});}}catch(_0x541e6){_0x261e55(_0x541e6);}_0x8bd2d(_0xdd3ca7);});}function getInteractionTags(_0x9f293e,_0x5c7deb){return new BPromise(function(_0x39a53a,_0xc0209){try{if(_0x9f293e['TagIds']){_0x9f293e[_0xf57d('0x34')]=[];_0x9f293e['TagIds'][_0xf57d('0x35')](',')['forEach'](function(_0x1ccee5){_0x9f293e['Tags'][_0xf57d('0x36')](_0x5c7deb[_0x1ccee5]);});}delete _0x9f293e[_0xf57d('0x37')];}catch(_0x3418b6){_0xc0209(_0x3418b6);}_0x39a53a(_0x9f293e);});}function updateSmsInteraction(_0x5e867c,_0x532125,_0x18ea64){return new BPromise(function(_0x656a6f,_0x1f62ad){return getInteractionUsers(_0x5e867c,_0x18ea64)['then'](function(_0x285d4b){return getInteractionTags(_0x285d4b,_0x532125);})[_0xf57d('0x2d')](function(_0x3080b8){_0x656a6f(_0x3080b8);})[_0xf57d('0x38')](function(_0x3df9d2){_0x1f62ad(_0x3df9d2);});});}exports[_0xf57d('0x39')]=function(_0x36d932,_0x50cff3){var _0x3401c4={},_0x16b910={},_0x30efe0={'count':0x0,'rows':[]};var _0xb011c5=_[_0xf57d('0x33')](db[_0xf57d('0x3a')][_0xf57d('0x3b')],function(_0x404c03){return{'name':_0x404c03['fieldName'],'type':_0x404c03['type']['key']};});_0x16b910[_0xf57d('0x3c')]=_[_0xf57d('0x33')](_0xb011c5,'name');_0x16b910[_0xf57d('0x3d')]=_['keys'](_0x36d932[_0xf57d('0x3d')]);_0x16b910[_0xf57d('0x3e')]=_['intersection'](_0x16b910[_0xf57d('0x3c')],_0x16b910['query']);_0x3401c4[_0xf57d('0x3f')]=_[_0xf57d('0x40')](_0x16b910[_0xf57d('0x3c')],qs['fields'](_0x36d932[_0xf57d('0x3d')][_0xf57d('0x41')]));_0x3401c4[_0xf57d('0x3f')]=_0x3401c4[_0xf57d('0x3f')][_0xf57d('0x42')]?_0x3401c4[_0xf57d('0x3f')]:_0x16b910[_0xf57d('0x3c')];if(!_0x36d932[_0xf57d('0x3d')][_0xf57d('0x43')](_0xf57d('0x44'))){_0x3401c4[_0xf57d('0x24')]=qs[_0xf57d('0x24')](_0x36d932[_0xf57d('0x3d')][_0xf57d('0x24')]);_0x3401c4['offset']=qs[_0xf57d('0x26')](_0x36d932[_0xf57d('0x3d')]['offset']);}_0x3401c4[_0xf57d('0x45')]=qs['sort'](_0x36d932[_0xf57d('0x3d')][_0xf57d('0x46')]);_0x3401c4[_0xf57d('0x47')]=qs[_0xf57d('0x3e')](_[_0xf57d('0x48')](_0x36d932['query'],_0x16b910[_0xf57d('0x3e')]),_0xb011c5);var _0x53bb01=[];var _0x31dd4e=squel[_0xf57d('0x49')]()['field']('id')[_0xf57d('0x4a')](_0xf57d('0x30'))[_0xf57d('0x4a')]('color')['from']('tools_tags');var _0x10ee62=squel[_0xf57d('0x49')]()['field'](_0xf57d('0x4b'))[_0xf57d('0x4a')]('u.fullname')[_0xf57d('0x4a')](_0xf57d('0x4c'))[_0xf57d('0x4d')](_0xf57d('0x4e'),'ui')[_0xf57d('0x4f')](_0xf57d('0x50'),'u',_0xf57d('0x51'));var _0x498023=squel[_0xf57d('0x49')]()[_0xf57d('0x4d')](_0xf57d('0x52'),'i')['left_join']('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xf57d('0x4f')](_0xf57d('0x50'),'o',_0xf57d('0x53'))[_0xf57d('0x4f')](_0xf57d('0x54'),'a',_0xf57d('0x55'))[_0xf57d('0x4f')](_0xf57d('0x56'),'me','me.SmsInteractionId\x20=\x20i.id')[_0xf57d('0x4f')](_0xf57d('0x57'),'it',_0xf57d('0x58'))[_0xf57d('0x4f')](_0xf57d('0x59'),'t',_0xf57d('0x5a'));var _0x16e819=squel[_0xf57d('0x5b')]();var _0x23fc54=[];var _0x5bf6df=squel[_0xf57d('0x5b')]();var _0xf03168;if(_0x36d932[_0xf57d('0x3d')][_0xf57d('0x5c')]){_0xf03168=as[_0xf57d('0x5d')](_0x36d932[_0xf57d('0x3d')][_0xf57d('0x5c')]);var _0x216448=_0xf03168[_0xf57d('0x5e')];for(var _0x12137a=0x0;_0x12137a<_0xf03168[_0xf57d('0x5f')][_0xf57d('0x42')];_0x12137a++){var _0x1b5270=_0xf03168[_0xf57d('0x5f')][_0x12137a];var _0xe591c2='i';var _0x4a2384=_['find'](_0xb011c5,[_0xf57d('0x30'),_0x1b5270['field']]);if(!_0x4a2384){switch(_0x1b5270['field']){case _0xf57d('0x60'):if(_0x1b5270[_0xf57d('0x61')]==0x1){_0x498023[_0xf57d('0x62')]('`'+_0x1b5270['field']+_0xf57d('0x63'));}else{_0x498023['having']('`'+_0x1b5270[_0xf57d('0x4a')]+'`\x20>\x200');}break;case _0xf57d('0x64'):if(_0x1b5270[_0xf57d('0x65')]===_0xf57d('0x66')){if(_0x1b5270['value']['split']('\x20')[_0xf57d('0x42')]>0x1){_0x16e819[_0x216448]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x1b5270[_0xf57d('0x61')]),null);}else{var _0x5a7cd2='%'+_0x1b5270[_0xf57d('0x61')]+'%';_0x16e819[_0x216448]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x5a7cd2,_0x5a7cd2,_0x5a7cd2);}}else{_0x4a2384=_[_0xf57d('0x67')](_0xb011c5,[_0xf57d('0x30'),'ContactId']);_0x1b5270['field']=_0xf57d('0x68');_0x592041=as[_0xf57d('0x69')](_0xe591c2,_0x4a2384[_0xf57d('0x6a')],_0x1b5270);_0x16e819[_0x216448](_0x592041[_0xf57d('0x6b')],_0x592041[_0xf57d('0x61')][_0xf57d('0x6c')],_0x592041['value'][_0xf57d('0x21')]);}break;case _0xf57d('0x6d'):var _0x46871b=_0x1b5270[_0xf57d('0x61')][_0xf57d('0x35')](',')[_0xf57d('0x33')](function(_0x3e4392){return Number(_0x3e4392);});_0x46871b[_0xf57d('0x6e')](function(_0x2b5931){_0x5bf6df['or'](_0xf57d('0x6f'),'%,'+_0x2b5931+',%');});_0x23fc54=_[_0xf57d('0x70')](_0x23fc54,_0x46871b);break;case _0xf57d('0x71'):if(_0x1b5270[_0xf57d('0x65')]===_0xf57d('0x66')){_0x16e819[_0x216448](_0xf57d('0x72'),'%'+_0x1b5270[_0xf57d('0x61')]+'%',null);}else{_0x4a2384=_['find'](_0xb011c5,[_0xf57d('0x30'),_0xf57d('0x73')]);_0x1b5270[_0xf57d('0x4a')]='UserId';_0x592041=as['buildExpression'](_0xe591c2,_0x4a2384['type'],_0x1b5270);_0x16e819[_0x216448](_0x592041['text'],_0x592041[_0xf57d('0x61')][_0xf57d('0x6c')],_0x592041[_0xf57d('0x61')][_0xf57d('0x21')]);}break;case _0xf57d('0x74'):_0x592041=as[_0xf57d('0x69')]('me',null,_0x1b5270);_0x16e819[_0x216448](_0x592041[_0xf57d('0x6b')],_0x592041['value'][_0xf57d('0x6c')],_0x592041[_0xf57d('0x61')][_0xf57d('0x21')]);break;}}else{var _0x592041=as[_0xf57d('0x69')](_0xe591c2,_0x4a2384[_0xf57d('0x6a')],_0x1b5270);_0x16e819[_0x216448](_0x592041['text'],_0x592041['value']['start'],_0x592041[_0xf57d('0x61')][_0xf57d('0x21')]);}}}else{var _0x42ae30=_(_0x36d932[_0xf57d('0x3d')])[_0xf57d('0x75')]()[_0xf57d('0x33')](function(_0x2a6f9e){return _['some'](_0xb011c5,[_0xf57d('0x30'),_0x2a6f9e])?_0x2a6f9e:undefined;})[_0xf57d('0x76')]()[_0xf57d('0x61')]();if(!_[_0xf57d('0x77')](_0x42ae30)){_0x42ae30[_0xf57d('0x6e')](function(_0x412eaf){if(_0x412eaf===_0xf57d('0x78')){_0x498023[_0xf57d('0x47')]('i.SmsAccountId\x20IN\x20?',[][_0xf57d('0x79')](_0x36d932[_0xf57d('0x3d')][_0x412eaf]));}else if(_0x412eaf===_0xf57d('0x7a')){var _0xe1cac2=JSON[_0xf57d('0x7b')](_0x36d932[_0xf57d('0x3d')][_0x412eaf])[_0xf57d('0x7c')];var _0x1d5734=JSON[_0xf57d('0x7b')](_0x36d932[_0xf57d('0x3d')][_0x412eaf])['$lte'];_0x498023[_0xf57d('0x47')](_0xf57d('0x7d'),_0xe1cac2,_0x1d5734);}else{if(_0x36d932[_0xf57d('0x3d')][_0x412eaf]===_0xf57d('0x7e')){_0x498023[_0xf57d('0x47')]('i.'+_0x412eaf+_0xf57d('0x7f'));}else{_0x498023['where']('i.'+_0x412eaf+_0xf57d('0x80'),_0x36d932[_0xf57d('0x3d')][_0x412eaf]);}}});}if(_0x36d932[_0xf57d('0x3d')][_0xf57d('0x81')]){if(_0x36d932[_0xf57d('0x3d')][_0xf57d('0x81')]==0x1){_0x498023[_0xf57d('0x62')]('`unreadMessages`\x20=\x200');}else{_0x498023[_0xf57d('0x62')](_0xf57d('0x82'));}}if(_0x36d932[_0xf57d('0x3d')]['tag']){_0x23fc54=_[_0xf57d('0x83')](_0x36d932[_0xf57d('0x3d')][_0xf57d('0x84')])?_0x36d932['query']['tag']:new Array(_0x36d932['query']['tag']);_0x23fc54[_0xf57d('0x6e')](function(_0x45d217){_0x5bf6df['or'](_0xf57d('0x6f'),'%,'+_0x45d217+',%');});}if(_0x36d932[_0xf57d('0x3d')]['filter']){var _0x50f463=_0x36d932[_0xf57d('0x3d')][_0xf57d('0x85')][_0xf57d('0x86')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x50f463)){_0x16e819['or']('i.id\x20LIKE\x20?',_0x50f463+'%')['or'](_0xf57d('0x87'),_0x50f463+'%');}else{_0x16e819['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf57d('0x88')](_0x50f463))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x50f463+'%');}}}_0x498023[_0xf57d('0x47')](_0x16e819);_0x498023['group'](_0xf57d('0x89'));var _0x3166ec={'type':db['Sequelize'][_0xf57d('0x8a')][_0xf57d('0x8b')],'raw':!![]};var _0x409466=_0x498023[_0xf57d('0x8c')]();_0x409466[_0xf57d('0x4a')](_0xf57d('0x89'));_0x409466[_0xf57d('0x4a')](_0xf57d('0x8d'),_0xf57d('0x60'));if(_0x3401c4[_0xf57d('0x45')]){_0x3401c4[_0xf57d('0x45')][_0xf57d('0x6e')](function(_0xd2b0f9){var _0x37606b=_0xd2b0f9[0x0]===_0xf57d('0x8e')?_0xd2b0f9[0x0]:'i.'+_0xd2b0f9[0x0];_0x498023['order'](_0x37606b,_0xd2b0f9[0x1]===_0xf57d('0x8f')?![]:!![]);});}if(!_[_0xf57d('0x77')](_0x23fc54)){_0x498023[_0xf57d('0x62')](_0x5bf6df);_0x409466[_0xf57d('0x47')](_0xf57d('0x90'),_0x23fc54);}BPromise[_0xf57d('0x91')]()[_0xf57d('0x2d')](function(){if(!_0xf03168){if(_0x36d932[_0xf57d('0x3d')][_0xf57d('0x78')])return;_0x409466[_0xf57d('0x47')](_0xf57d('0x92'));_0x498023['where'](_0xf57d('0x92'));return;}if(_0x36d932['user'][_0xf57d('0x93')]!==_0xf57d('0x94'))return;return _0x36d932[_0xf57d('0x95')][_0xf57d('0x96')]({'attributes':['id'],'raw':!![]})[_0xf57d('0x2d')](function(_0x5f24bb){if(_[_0xf57d('0x77')](_0x5f24bb)){_0x409466['where'](_0xf57d('0x97'));_0x498023[_0xf57d('0x47')]('i.SmsAccountId\x20IS\x20NULL');}else{_0x409466[_0xf57d('0x47')](_0xf57d('0x98'),_[_0xf57d('0x33')](_0x5f24bb,'id'));_0x498023[_0xf57d('0x47')](_0xf57d('0x98'),_[_0xf57d('0x33')](_0x5f24bb,'id'));}});})[_0xf57d('0x2d')](function(){if(_0x36d932[_0xf57d('0x95')][_0xf57d('0x93')]==='agent'&&!_0xf03168&&!_0x36d932['query'][_0xf57d('0x78')])return[];return db['sequelize'][_0xf57d('0x3d')](_0x409466['toString'](),_0x3166ec);})['then'](function(_0x4c3e80){_0x30efe0[_0xf57d('0x25')]=_0x4c3e80[_0xf57d('0x42')];if(_0x30efe0[_0xf57d('0x25')]===0x0)return[];return db[_0xf57d('0x99')][_0xf57d('0x3d')](_0x31dd4e['toString'](),_0x3166ec)[_0xf57d('0x2d')](function(_0x40ab2e){_0x53bb01=_[_0xf57d('0x9a')](_0x40ab2e,'id');_0x3166ec=_[_0xf57d('0x9b')](_0x3166ec,{'model':db[_0xf57d('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x36d932[_0xf57d('0x3d')]['fields']){_0x3401c4[_0xf57d('0x3f')][_0xf57d('0x6e')](function(_0xf184de){_0x498023[_0xf57d('0x4a')]('i.'+_0xf184de);});}else{_0x498023[_0xf57d('0x4a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xf57d('0x60'));_0x498023[_0xf57d('0x4a')](_0xf57d('0x9c'),_0xf57d('0x9d'));_0x498023[_0xf57d('0x4a')](_0xf57d('0x9e'),'Account.mandatoryDisposition');_0x498023[_0xf57d('0x4a')](_0xf57d('0x9f'),_0xf57d('0x8e'));_0x498023[_0xf57d('0x4a')]('i.*');_0x498023['field']('c.firstName','Contact.firstName');_0x498023[_0xf57d('0x4a')](_0xf57d('0xa0'),_0xf57d('0xa1'));_0x498023['field'](_0xf57d('0xa2'),_0xf57d('0xa3'));_0x498023[_0xf57d('0x4a')]('c.phone',_0xf57d('0xa4'));_0x498023[_0xf57d('0x4a')](_0xf57d('0xa5'),_0xf57d('0xa6'));_0x498023[_0xf57d('0x4a')](_0xf57d('0xa7'),_0xf57d('0xa8'));_0x498023[_0xf57d('0x4a')](_0xf57d('0xa9'),_0xf57d('0xaa'));_0x498023[_0xf57d('0x4a')]('o.internal',_0xf57d('0xab'));_0x498023[_0xf57d('0x4a')](_0xf57d('0xac'),_0xf57d('0x37'));}if(_0x3401c4[_0xf57d('0x24')])_0x498023[_0xf57d('0x24')](_0x3401c4[_0xf57d('0x24')]);if(_0x3401c4['offset'])_0x498023[_0xf57d('0x26')](_0x3401c4['offset']);return db['sequelize'][_0xf57d('0x3d')](_0x498023[_0xf57d('0xad')](),_0x3166ec);})[_0xf57d('0x2d')](function(_0xf52e8a){if(_0xf52e8a['length']>0x0)_0x10ee62['where'](_0xf57d('0xae'),_[_0xf57d('0x33')](_0xf52e8a,'id'));return db[_0xf57d('0x99')][_0xf57d('0x3d')](_0x10ee62[_0xf57d('0xad')](),_0x3166ec)[_0xf57d('0x2d')](function(_0xef04d){var _0x16fe8f=_[_0xf57d('0xaf')](_0xef04d,_0xf57d('0xb0'));var _0x1bad1d=[];_0xf52e8a[_0xf57d('0x6e')](function(_0x3aa7b5){_0x1bad1d['push'](updateSmsInteraction(_0x3aa7b5,_0x53bb01,_0x16fe8f));});return BPromise['all'](_0x1bad1d);});});})['then'](function(_0x35c471){_0x30efe0['rows']=_0x35c471;return _0x30efe0;})[_0xf57d('0x2d')](respondWithFilteredResult(_0x50cff3,_0x3401c4))[_0xf57d('0x38')](handleError(_0x50cff3,null));};exports[_0xf57d('0xb1')]=function(_0x40e2ba,_0x34d6e5){var _0x2324fa={'raw':![],'where':{'id':_0x40e2ba[_0xf57d('0xb2')]['id']}},_0x2ab39a={};_0x2ab39a[_0xf57d('0x3c')]=_[_0xf57d('0x75')](db[_0xf57d('0x3a')][_0xf57d('0x3b')]);_0x2ab39a[_0xf57d('0x3d')]=_[_0xf57d('0x75')](_0x40e2ba[_0xf57d('0x3d')]);_0x2ab39a[_0xf57d('0x3e')]=_[_0xf57d('0x40')](_0x2ab39a[_0xf57d('0x3c')],_0x2ab39a['query']);_0x2324fa['attributes']=_[_0xf57d('0x40')](_0x2ab39a['model'],qs['fields'](_0x40e2ba[_0xf57d('0x3d')][_0xf57d('0x41')]));_0x2324fa[_0xf57d('0x3f')]=_0x2324fa['attributes']['length']?_0x2324fa[_0xf57d('0x3f')]:_0x2ab39a['model'];if(_0x40e2ba[_0xf57d('0x3d')][_0xf57d('0xb3')]){_0x2324fa[_0xf57d('0xb4')]=[{'all':!![]}];}_0x2324fa=_[_0xf57d('0x9b')]({},_0x2324fa,_0x40e2ba[_0xf57d('0xb5')]);return db[_0xf57d('0x3a')][_0xf57d('0x67')](_0x2324fa)[_0xf57d('0x2d')](handleEntityNotFound(_0x34d6e5,null))[_0xf57d('0x2d')](respondWithResult(_0x34d6e5,null))[_0xf57d('0x38')](handleError(_0x34d6e5,null));};exports[_0xf57d('0xb6')]=function(_0x4eb315,_0x77fe1a){return db[_0xf57d('0x3a')]['create'](_0x4eb315[_0xf57d('0x74')],{})['then'](respondWithResult(_0x77fe1a,0xc9))[_0xf57d('0x38')](handleError(_0x77fe1a,null));};exports[_0xf57d('0x2b')]=function(_0x4cd87c,_0x44f821){if(_0x4cd87c[_0xf57d('0x74')]['id']){delete _0x4cd87c[_0xf57d('0x74')]['id'];}return db[_0xf57d('0x3a')][_0xf57d('0x67')]({'where':{'id':_0x4cd87c[_0xf57d('0xb2')]['id']}})['then'](handleEntityNotFound(_0x44f821,null))['then'](saveUpdates(_0x4cd87c['body'],null))['then'](respondWithResult(_0x44f821,null))[_0xf57d('0x38')](handleError(_0x44f821,null));};exports[_0xf57d('0x2c')]=function(_0x5ae370,_0x3fe75d){return db[_0xf57d('0x3a')]['find']({'where':{'id':_0x5ae370[_0xf57d('0xb2')]['id']}})['then'](handleEntityNotFound(_0x3fe75d,null))[_0xf57d('0x2d')](removeEntity(_0x3fe75d,null))['catch'](handleError(_0x3fe75d,null));};exports[_0xf57d('0xb7')]=function(_0x523f88,_0x1af165){return db[_0xf57d('0x3a')][_0xf57d('0xb7')]()['then'](respondWithResult(_0x1af165,null))['catch'](handleError(_0x1af165,null));};exports[_0xf57d('0xb8')]=function(_0x117394,_0x147f61,_0x2c4723){return db[_0xf57d('0xb9')]['find']({'where':{'id':_0x117394[_0xf57d('0xb2')]['id']}})['then'](handleEntityNotFound(_0x147f61,null))['then'](function(_0x45ef1f){if(_0x45ef1f){return _0x45ef1f[_0xf57d('0xb8')](_0x117394[_0xf57d('0x74')][_0xf57d('0xba')],_[_0xf57d('0xbb')](_0x117394['body'],[_0xf57d('0xba'),'id'])||{});}})[_0xf57d('0x2d')](respondWithResult(_0x147f61,null))['catch'](handleError(_0x147f61,null));};exports[_0xf57d('0xbc')]=function(_0x9ad389,_0x5bc58b,_0x4346f8){var _0x3a2208={'raw':![],'where':{}};var _0x5a9da3={};var _0x2debff={'count':0x0,'rows':[]};return db[_0xf57d('0x3a')][_0xf57d('0xbd')]({'where':{'id':_0x9ad389[_0xf57d('0xb2')]['id']}})['then'](handleEntityNotFound(_0x5bc58b,null))[_0xf57d('0x2d')](function(_0x78f1e5){if(_0x78f1e5){_0x5a9da3[_0xf57d('0x3c')]=_[_0xf57d('0x75')](db[_0xf57d('0xb9')][_0xf57d('0x3b')]);_0x5a9da3[_0xf57d('0x3d')]=_[_0xf57d('0x75')](_0x9ad389[_0xf57d('0x3d')]);_0x5a9da3[_0xf57d('0x3e')]=_[_0xf57d('0x40')](_0x5a9da3[_0xf57d('0x3c')],_0x5a9da3[_0xf57d('0x3d')]);_0x3a2208[_0xf57d('0x3f')]=_['intersection'](_0x5a9da3[_0xf57d('0x3c')],qs[_0xf57d('0x41')](_0x9ad389[_0xf57d('0x3d')]['fields']));_0x3a2208['attributes']=_0x3a2208['attributes'][_0xf57d('0x42')]?_0x3a2208['attributes']:_0x5a9da3[_0xf57d('0x3c')];if(!_0x9ad389[_0xf57d('0x3d')][_0xf57d('0x43')](_0xf57d('0x44'))){_0x3a2208[_0xf57d('0x24')]=qs[_0xf57d('0x24')](_0x9ad389[_0xf57d('0x3d')][_0xf57d('0x24')]);_0x3a2208[_0xf57d('0x26')]=qs[_0xf57d('0x26')](_0x9ad389[_0xf57d('0x3d')][_0xf57d('0x26')]);}_0x3a2208[_0xf57d('0x45')]=qs['sort'](_0x9ad389['query']['sort']);_0x3a2208[_0xf57d('0x47')]=qs[_0xf57d('0x3e')](_[_0xf57d('0x48')](_0x9ad389[_0xf57d('0x3d')],_0x5a9da3[_0xf57d('0x3e')]));_0x3a2208[_0xf57d('0x47')][_0xf57d('0xb0')]=_0x78f1e5['id'];if(_0x9ad389[_0xf57d('0x3d')][_0xf57d('0x85')]){_0x3a2208[_0xf57d('0x47')]=_[_0xf57d('0x9b')](_0x3a2208['where'],{'$or':_[_0xf57d('0x33')](_0x3a2208[_0xf57d('0x3f')],function(_0x3c1885){var _0x1d84e0={};_0x1d84e0[_0x3c1885]={'$like':'%'+_0x9ad389[_0xf57d('0x3d')][_0xf57d('0x85')]+'%'};return _0x1d84e0;})});}if(_0x9ad389[_0xf57d('0x3d')][_0xf57d('0x7c')]){var _0x20bd0f=_0x9ad389['query'][_0xf57d('0x7c')][_0xf57d('0x35')](',');var _0x388668={};_0x388668[_0x20bd0f[0x0]]={'$gte':moment(_0x20bd0f[0x1])[_0xf57d('0xbe')](_0xf57d('0xbf'))};_0x3a2208['where']=_[_0xf57d('0x9b')](_0x3a2208[_0xf57d('0x47')],_0x388668);}_0x3a2208=_['merge']({},_0x3a2208,_0x9ad389[_0xf57d('0xb5')]);return db[_0xf57d('0xb9')][_0xf57d('0x25')]({'where':_0x3a2208[_0xf57d('0x47')]})[_0xf57d('0x2d')](function(_0x95f4f2){_0x2debff[_0xf57d('0x25')]=_0x95f4f2;if(_0x9ad389[_0xf57d('0x3d')]['includeAll']){_0x3a2208[_0xf57d('0xb4')]=[{'all':!![]}];}return db['SmsMessage']['findAll'](_0x3a2208);})['then'](function(_0x3fdc79){_0x2debff[_0xf57d('0xc0')]=_0x3fdc79;return _0x2debff;});}})[_0xf57d('0x2d')](respondWithFilteredResult(_0x5bc58b,_0x3a2208))[_0xf57d('0x38')](handleError(_0x5bc58b,null));};exports['addTags']=function(_0x4c45da,_0x3cb268,_0x4c86bf){return db[_0xf57d('0x3a')][_0xf57d('0x67')]({'where':{'id':_0x4c45da['params']['id']}})['then'](handleEntityNotFound(_0x3cb268,null))[_0xf57d('0x2d')](function(_0x566127){if(_0x566127){return _0x566127['setTags'](_0x4c45da[_0xf57d('0x74')][_0xf57d('0xba')],_[_0xf57d('0xbb')](_0x4c45da[_0xf57d('0x74')],['ids','id'])||{})[_0xf57d('0xc1')](function(){return db[_0xf57d('0x6d')][_0xf57d('0xc2')]({'attributes':['id','name','color'],'where':{'id':_0x4c45da[_0xf57d('0x74')]['ids']}});})['then'](function(_0x5a8943){socket[_0xf57d('0xc3')]('smsInteractionTags:save',{'id':Number(_0x4c45da[_0xf57d('0xb2')]['id']),'tags':_0x5a8943||[]});return{'id':Number(_0x4c45da[_0xf57d('0xb2')]['id']),'tags':_0x5a8943||[]};});}})['then'](respondWithResult(_0x3cb268,null))[_0xf57d('0x38')](handleError(_0x3cb268,null));};exports['removeTags']=function(_0x461d51,_0x140e7b,_0x4db299){return db[_0xf57d('0x3a')]['find']({'where':{'id':_0x461d51[_0xf57d('0xb2')]['id']}})[_0xf57d('0x2d')](handleEntityNotFound(_0x140e7b,null))[_0xf57d('0x2d')](function(_0x27a525){if(_0x27a525){return _0x27a525['removeTags'](_0x461d51[_0xf57d('0x3d')][_0xf57d('0xba')]);}})['then'](respondWithStatusCode(_0x140e7b,null))['catch'](handleError(_0x140e7b,null));};exports['download']=function(_0x1eb40d,_0x5af466){var _0x29f761=moment()['unix']()['toString']();var _0x45471b=path[_0xf57d('0xc4')](config[_0xf57d('0xc5')],_0xf57d('0xc6'),'files','tmp');var _0x360a5d=path[_0xf57d('0xc4')](config[_0xf57d('0xc5')],_0xf57d('0xc6'),_0xf57d('0xc7'),_0xf57d('0xc8'));var _0x33991c=path[_0xf57d('0xc4')](_0x45471b,_0x29f761);var _0xcac2db=util['format']('transcript-%d-%s.zip',_0x1eb40d[_0xf57d('0xb2')]['id'],_0x29f761);var _0x1b6ef7=path[_0xf57d('0xc4')](_0x45471b,_0xcac2db);var _0x371aeb=[];_0x371aeb[_0xf57d('0x36')]({'model':db[_0xf57d('0x71')],'as':_0xf57d('0x71'),'attributes':['id','fullname'],'raw':!![]});_0x371aeb[_0xf57d('0x36')]({'model':db[_0xf57d('0xc9')],'as':_0xf57d('0x64'),'attributes':['id',_0xf57d('0xca'),_0xf57d('0xcb')],'raw':!![]});var _0x46fa36=[{'model':db[_0xf57d('0xb9')],'as':_0xf57d('0xcc'),'attributes':['id','body',_0xf57d('0x7a'),'direction',_0xf57d('0xcd'),_0xf57d('0x81')],'include':_0x371aeb}];_0x46fa36[_0xf57d('0x36')]({'model':db[_0xf57d('0xce')],'as':_0xf57d('0xcf'),'attributes':['id','name']});_0x46fa36[_0xf57d('0x36')]({'model':db[_0xf57d('0x71')],'as':_0xf57d('0xd0'),'attributes':['id',_0xf57d('0xd1')]});return db['SmsInteraction'][_0xf57d('0x67')]({'where':{'id':_0x1eb40d[_0xf57d('0xb2')]['id']},'include':_0x46fa36})[_0xf57d('0x2d')](handleEntityNotFound(_0x5af466,null))['then'](function(_0x33eb7b){if(_0x33eb7b){var _0xb166e6=_0x33eb7b[_0xf57d('0xd2')]({'plain':!![]});fs[_0xf57d('0xd3')](_0x33991c);var _0x5d7109={'channel':_0xf57d('0xd4'),'account':_0xb166e6['Account'][_0xf57d('0x30')],'agent':_0xb166e6[_0xf57d('0xd0')]?_0xb166e6[_0xf57d('0xd0')][_0xf57d('0xd1')]:_0xf57d('0xd5'),'createdAt':moment(_0xb166e6['createdAt'])[_0xf57d('0xbe')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0xb166e6[_0xf57d('0xd6')]?moment(_0xb166e6['closedAt'])[_0xf57d('0xbe')](_0xf57d('0xbf'))[_0xf57d('0xad')]():'','disposition':_0xb166e6[_0xf57d('0xd7')],'messages':_(_0xb166e6['Messages'])[_0xf57d('0x85')]({'secret':![]})['map'](function(_0x5384e4){return{'date':moment(_0x5384e4['createdAt'])[_0xf57d('0xbe')](_0xf57d('0xbf'))[_0xf57d('0xad')](),'sender':_0x5384e4[_0xf57d('0xd8')]===_0xf57d('0xd9')?_0x5384e4[_0xf57d('0x71')]?_0x5384e4['User'][_0xf57d('0xd1')]:_0xf57d('0xda'):_0x5384e4['Contact'][_0xf57d('0xca')]+(_0x5384e4[_0xf57d('0x64')][_0xf57d('0xcb')]?'\x20'+_0x5384e4[_0xf57d('0x64')][_0xf57d('0xcb')]:''),'body':_0x5384e4[_0xf57d('0x74')],'direction':_0x5384e4['direction']===_0xf57d('0xd9')?'A':'C','secret':_0x5384e4[_0xf57d('0xcd')],'read':_0x5384e4['read']};})[_0xf57d('0x61')]()};return ejs['renderFile'](path[_0xf57d('0xc4')](config[_0xf57d('0xc5')],_0xf57d('0xc6'),'views','downloadInteraction.ejs'),{'interaction':_0x5d7109})[_0xf57d('0x2d')](function(_0x21cab2){var _0x4b032a=path[_0xf57d('0xc4')](_0x33991c,_0xf57d('0xdb')+_0xb166e6['id']+'-'+_0x29f761+_0xf57d('0xdc'));var _0x2a5b01={'path':_0x4b032a,'channel':_0xf57d('0xd4'),'interactionId':_0xb166e6['id']};return pdf[_0xf57d('0xdd')](_0x21cab2,_0x2a5b01);})['then'](function(){return new BPromise(function(_0x5e1298,_0x4c83a9){zipdir(_0x33991c,{'saveTo':_0x1b6ef7},function(_0x2de47f,_0x303085){if(_0x2de47f)return _0x4c83a9(_0x2de47f);return _0x5e1298(_0x303085);});})[_0xf57d('0x2d')](function(){return new BPromise(function(_0x2a18c5,_0x4bba0f){rimraf(_0x33991c,function(_0x7723c6){if(_0x7723c6)_0x4bba0f(_0x7723c6);return _0x2a18c5();});});})[_0xf57d('0x2d')](function(){return _0x5af466['download'](_0x1b6ef7,_0xcac2db,function(_0x410cfd){if(_0x410cfd){console[_0xf57d('0xde')](_0xf57d('0xdf'),_0x410cfd);}else{fs['unlinkSync'](_0x1b6ef7);}});});});}else{return _0x5af466['sendStatus'](0xc8);}})[_0xf57d('0x38')](handleError(_0x5af466,null));};
\ No newline at end of file
+var _0xadf3=['../../mysqldb','defaults','redis','socket.io-emitter','./smsInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','end','error','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','index','SmsInteraction','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','field','color','from','select','u.id','u.fullname','ui.SmsInteractionId','user_has_sms_interactions','left_join','users','u.id\x20=\x20ui.UserId','sms_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','sms_accounts','sms_messages','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','conditions','find','unreadMessages','value','having','`\x20=\x200','Contact','operator','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','text','start','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','SmsAccountId','where','i.SmsAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','isEmpty','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','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','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.SmsInteractionId\x20IN\x20?','push','all','show','includeAll','include','catch','create','addMessage','SmsMessage','params','omit','getMessages','format','options','findAll','addTags','setTags','ids','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','User','firstName','lastName','Messages','secret','Account','Owner','get','mkdirSync','Sms','N.A.','YYYY-MM-DD\x20HH:mm:ss','closed','direction','out','System','renderFile','views','downloadInteraction.ejs','.pdf','createPdfFromHTML','err','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util'];(function(_0x4706a6,_0x5a1c63){var _0x1bb705=function(_0x484ebb){while(--_0x484ebb){_0x4706a6['push'](_0x4706a6['shift']());}};_0x1bb705(++_0x5a1c63);}(_0xadf3,0xd0));var _0x3adf=function(_0x23dba8,_0x6b472b){_0x23dba8=_0x23dba8-0x0;var _0x5bbaf7=_0xadf3[_0x23dba8];return _0x5bbaf7;};'use strict';var emlformat=require(_0x3adf('0x0'));var rimraf=require(_0x3adf('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3adf('0x2'));var rp=require(_0x3adf('0x3'));var moment=require('moment');var BPromise=require(_0x3adf('0x4'));var Mustache=require(_0x3adf('0x5'));var util=require(_0x3adf('0x6'));var path=require(_0x3adf('0x7'));var sox=require(_0x3adf('0x8'));var csv=require(_0x3adf('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3adf('0xa'));var _=require(_0x3adf('0xb'));var squel=require(_0x3adf('0xc'));var crypto=require(_0x3adf('0xd'));var jsforce=require(_0x3adf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x3adf('0x9'));var querystring=require(_0x3adf('0xf'));var Papa=require(_0x3adf('0x10'));var Redis=require(_0x3adf('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3adf('0x12'));var as=require(_0x3adf('0x13'));var pdf=require('../../components/export/pdf');var hardwareService=require(_0x3adf('0x14'));var logger=require(_0x3adf('0x15'))(_0x3adf('0x16'));var utils=require(_0x3adf('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x3adf('0x18'));var db=require(_0x3adf('0x19'))['db'];config['redis']=_[_0x3adf('0x1a')](config[_0x3adf('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x3adf('0x1c'))(new Redis(config[_0x3adf('0x1b')]));require(_0x3adf('0x1d'))[_0x3adf('0x1e')](socket);function respondWithStatusCode(_0x3d2d34,_0x422080){_0x422080=_0x422080||0xcc;return function(_0x4e038a){if(_0x4e038a){return _0x3d2d34[_0x3adf('0x1f')](_0x422080);}return _0x3d2d34[_0x3adf('0x20')](_0x422080)['end']();};}function respondWithResult(_0x1aaef4,_0x127d28){_0x127d28=_0x127d28||0xc8;return function(_0x278b85){if(_0x278b85){return _0x1aaef4[_0x3adf('0x20')](_0x127d28)[_0x3adf('0x21')](_0x278b85);}};}function respondWithFilteredResult(_0x2e501c,_0x26d4a3){return function(_0x5bc0bf){if(_0x5bc0bf){var _0x23f95f=typeof _0x26d4a3[_0x3adf('0x22')]===_0x3adf('0x23')&&typeof _0x26d4a3[_0x3adf('0x24')]==='undefined';var _0x1be606=_0x5bc0bf[_0x3adf('0x25')];var _0x3e6d9b=_0x23f95f?0x0:_0x26d4a3['offset'];var _0x38c7de=_0x23f95f?_0x5bc0bf[_0x3adf('0x25')]:_0x26d4a3[_0x3adf('0x22')]+_0x26d4a3[_0x3adf('0x24')];var _0x4e2fd3;if(_0x38c7de>=_0x1be606){_0x38c7de=_0x1be606;_0x4e2fd3=0xc8;}else{_0x4e2fd3=0xce;}_0x2e501c[_0x3adf('0x20')](_0x4e2fd3);return _0x2e501c[_0x3adf('0x26')](_0x3adf('0x27'),_0x3e6d9b+'-'+_0x38c7de+'/'+_0x1be606)[_0x3adf('0x21')](_0x5bc0bf);}return null;};}function patchUpdates(_0x13c5f7){return function(_0x1090ce){try{jsonpatch['apply'](_0x1090ce,_0x13c5f7,!![]);}catch(_0x47dd37){return BPromise[_0x3adf('0x28')](_0x47dd37);}return _0x1090ce[_0x3adf('0x29')]();};}function saveUpdates(_0x504a56,_0x47a0ae){return function(_0xe3274a){if(_0xe3274a){return _0xe3274a[_0x3adf('0x2a')](_0x504a56)[_0x3adf('0x2b')](function(_0x4fedb6){return _0x4fedb6;});}return null;};}function removeEntity(_0x240e78,_0x4432a8){return function(_0x1e5bfe){if(_0x1e5bfe){return _0x1e5bfe[_0x3adf('0x2c')]()['then'](function(){_0x240e78['status'](0xcc)[_0x3adf('0x2d')]();});}};}function handleEntityNotFound(_0x5b9e4c,_0x3b3981){return function(_0x443b2f){if(!_0x443b2f){_0x5b9e4c['sendStatus'](0x194);}return _0x443b2f;};}function handleError(_0x34e43c,_0x4394fc){_0x4394fc=_0x4394fc||0x1f4;return function(_0x36c50e){logger[_0x3adf('0x2e')](_0x36c50e[_0x3adf('0x2f')]);if(_0x36c50e[_0x3adf('0x30')]){delete _0x36c50e[_0x3adf('0x30')];}_0x34e43c[_0x3adf('0x20')](_0x4394fc)['send'](_0x36c50e);};}function getInteractionUsers(_0x406f02,_0x57058f){return new BPromise(function(_0x550d05,_0xdf4457){try{if(_0x57058f[_0x406f02['id']]){_0x406f02[_0x3adf('0x31')]=_[_0x3adf('0x32')](_0x57058f[_0x406f02['id']],function(_0x22d7e9){return{'id':_0x22d7e9['id'],'fullname':_0x22d7e9[_0x3adf('0x33')]};});}}catch(_0xbd881e){_0xdf4457(_0xbd881e);}_0x550d05(_0x406f02);});}function getInteractionTags(_0x38fa51,_0xe66fb0){return new BPromise(function(_0x4d2d1a,_0xa48591){try{if(_0x38fa51[_0x3adf('0x34')]){_0x38fa51[_0x3adf('0x35')]=[];_0x38fa51[_0x3adf('0x34')][_0x3adf('0x36')](',')[_0x3adf('0x37')](function(_0x303623){_0x38fa51[_0x3adf('0x35')]['push'](_0xe66fb0[_0x303623]);});}delete _0x38fa51['TagIds'];}catch(_0xd9bdd8){_0xa48591(_0xd9bdd8);}_0x4d2d1a(_0x38fa51);});}function updateSmsInteraction(_0x3da383,_0x5fa049,_0x13d924){return new BPromise(function(_0x526e1d,_0x2b1d22){return getInteractionUsers(_0x3da383,_0x13d924)[_0x3adf('0x2b')](function(_0x29ab59){return getInteractionTags(_0x29ab59,_0x5fa049);})[_0x3adf('0x2b')](function(_0x148424){_0x526e1d(_0x148424);})['catch'](function(_0x1ed095){_0x2b1d22(_0x1ed095);});});}exports[_0x3adf('0x38')]=function(_0x15352f,_0x27e206){var _0x3795da={},_0x232372={},_0x47168a={'count':0x0,'rows':[]};var _0x369910=_[_0x3adf('0x32')](db[_0x3adf('0x39')]['rawAttributes'],function(_0x45f82b){return{'name':_0x45f82b[_0x3adf('0x3a')],'type':_0x45f82b[_0x3adf('0x3b')][_0x3adf('0x3c')]};});_0x232372['model']=_['map'](_0x369910,'name');_0x232372[_0x3adf('0x3d')]=_[_0x3adf('0x3e')](_0x15352f['query']);_0x232372[_0x3adf('0x3f')]=_[_0x3adf('0x40')](_0x232372[_0x3adf('0x41')],_0x232372['query']);_0x3795da[_0x3adf('0x42')]=_[_0x3adf('0x40')](_0x232372[_0x3adf('0x41')],qs[_0x3adf('0x43')](_0x15352f[_0x3adf('0x3d')][_0x3adf('0x43')]));_0x3795da['attributes']=_0x3795da[_0x3adf('0x42')][_0x3adf('0x44')]?_0x3795da[_0x3adf('0x42')]:_0x232372['model'];if(!_0x15352f[_0x3adf('0x3d')][_0x3adf('0x45')](_0x3adf('0x46'))){_0x3795da[_0x3adf('0x24')]=qs[_0x3adf('0x24')](_0x15352f['query']['limit']);_0x3795da[_0x3adf('0x22')]=qs[_0x3adf('0x22')](_0x15352f['query'][_0x3adf('0x22')]);}_0x3795da[_0x3adf('0x47')]=qs['sort'](_0x15352f[_0x3adf('0x3d')][_0x3adf('0x48')]);_0x3795da['where']=qs[_0x3adf('0x3f')](_[_0x3adf('0x49')](_0x15352f[_0x3adf('0x3d')],_0x232372['filters']),_0x369910);var _0xf3100a=[];var _0x3d13d7=squel['select']()['field']('id')[_0x3adf('0x4a')](_0x3adf('0x30'))['field'](_0x3adf('0x4b'))[_0x3adf('0x4c')]('tools_tags');var _0x415c46=squel[_0x3adf('0x4d')]()[_0x3adf('0x4a')](_0x3adf('0x4e'))[_0x3adf('0x4a')](_0x3adf('0x4f'))['field'](_0x3adf('0x50'))[_0x3adf('0x4c')](_0x3adf('0x51'),'ui')[_0x3adf('0x52')](_0x3adf('0x53'),'u',_0x3adf('0x54'));var _0x5067b7=squel['select']()[_0x3adf('0x4c')](_0x3adf('0x55'),'i')['left_join'](_0x3adf('0x56'),'c',_0x3adf('0x57'))[_0x3adf('0x52')](_0x3adf('0x53'),'o',_0x3adf('0x58'))[_0x3adf('0x52')](_0x3adf('0x59'),'a','a.id\x20=\x20i.SmsAccountId')['left_join'](_0x3adf('0x5a'),'me',_0x3adf('0x5b'))[_0x3adf('0x52')]('sms_interaction_has_tags','it',_0x3adf('0x5c'))[_0x3adf('0x52')](_0x3adf('0x5d'),'t','t.id\x20=\x20it.TagId');var _0x4a929f=squel[_0x3adf('0x5e')]();var _0x137f77=[];var _0x2573d5=squel[_0x3adf('0x5e')]();var _0x45d41d;if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x5f')]){_0x45d41d=as[_0x3adf('0x60')](_0x15352f[_0x3adf('0x3d')]['search']);var _0xe62150=_0x45d41d['sqlOperator'];for(var _0x35755f=0x0;_0x35755f<_0x45d41d[_0x3adf('0x61')]['length'];_0x35755f++){var _0x9d02b9=_0x45d41d['conditions'][_0x35755f];var _0xb5a31c='i';var _0x5bf2a4=_[_0x3adf('0x62')](_0x369910,[_0x3adf('0x30'),_0x9d02b9['field']]);if(!_0x5bf2a4){switch(_0x9d02b9[_0x3adf('0x4a')]){case _0x3adf('0x63'):if(_0x9d02b9[_0x3adf('0x64')]==0x1){_0x5067b7[_0x3adf('0x65')]('`'+_0x9d02b9[_0x3adf('0x4a')]+_0x3adf('0x66'));}else{_0x5067b7[_0x3adf('0x65')]('`'+_0x9d02b9[_0x3adf('0x4a')]+'`\x20>\x200');}break;case _0x3adf('0x67'):if(_0x9d02b9[_0x3adf('0x68')]==='$substring'){if(_0x9d02b9['value']['split']('\x20')[_0x3adf('0x44')]>0x1){_0x4a929f[_0xe62150](_0x3adf('0x69'),qs[_0x3adf('0x6a')](_0x9d02b9[_0x3adf('0x64')]),null);}else{var _0x13db6a='%'+_0x9d02b9['value']+'%';_0x4a929f[_0xe62150](_0x3adf('0x6b'),_0x13db6a,_0x13db6a,_0x13db6a);}}else{_0x5bf2a4=_[_0x3adf('0x62')](_0x369910,[_0x3adf('0x30'),_0x3adf('0x6c')]);_0x9d02b9[_0x3adf('0x4a')]='ContactId';_0x30b26e=as[_0x3adf('0x6d')](_0xb5a31c,_0x5bf2a4[_0x3adf('0x3b')],_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x6f')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x2d')]);}break;case'Tag':var _0x1dca64=_0x9d02b9[_0x3adf('0x64')]['split'](',')['map'](function(_0x53d392){return Number(_0x53d392);});_0x1dca64[_0x3adf('0x37')](function(_0xaaf329){_0x2573d5['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0xaaf329+',%');});_0x137f77=_['union'](_0x137f77,_0x1dca64);break;case'User':if(_0x9d02b9[_0x3adf('0x68')]===_0x3adf('0x70')){_0x4a929f[_0xe62150](_0x3adf('0x71'),'%'+_0x9d02b9[_0x3adf('0x64')]+'%',null);}else{_0x5bf2a4=_[_0x3adf('0x62')](_0x369910,[_0x3adf('0x30'),_0x3adf('0x72')]);_0x9d02b9[_0x3adf('0x4a')]=_0x3adf('0x72');_0x30b26e=as[_0x3adf('0x6d')](_0xb5a31c,_0x5bf2a4['type'],_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')]['start'],_0x30b26e['value'][_0x3adf('0x2d')]);}break;case _0x3adf('0x73'):_0x30b26e=as[_0x3adf('0x6d')]('me',null,_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x6f')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x2d')]);break;}}else{var _0x30b26e=as[_0x3adf('0x6d')](_0xb5a31c,_0x5bf2a4[_0x3adf('0x3b')],_0x9d02b9);_0x4a929f[_0xe62150](_0x30b26e[_0x3adf('0x6e')],_0x30b26e[_0x3adf('0x64')][_0x3adf('0x6f')],_0x30b26e['value']['end']);}}}else{var _0x1bc086=_(_0x15352f['query'])[_0x3adf('0x3e')]()[_0x3adf('0x32')](function(_0x3bfc16){return _[_0x3adf('0x74')](_0x369910,[_0x3adf('0x30'),_0x3bfc16])?_0x3bfc16:undefined;})['compact']()[_0x3adf('0x64')]();if(!_['isEmpty'](_0x1bc086)){_0x1bc086[_0x3adf('0x37')](function(_0x4fef6e){if(_0x4fef6e===_0x3adf('0x75')){_0x5067b7[_0x3adf('0x76')](_0x3adf('0x77'),[][_0x3adf('0x78')](_0x15352f[_0x3adf('0x3d')][_0x4fef6e]));}else if(_0x4fef6e===_0x3adf('0x79')){var _0x2ffd1c=JSON[_0x3adf('0x7a')](_0x15352f['query'][_0x4fef6e])[_0x3adf('0x7b')];var _0x5b069e=JSON['parse'](_0x15352f[_0x3adf('0x3d')][_0x4fef6e])[_0x3adf('0x7c')];_0x5067b7[_0x3adf('0x76')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x2ffd1c,_0x5b069e);}else{if(_0x15352f[_0x3adf('0x3d')][_0x4fef6e]===_0x3adf('0x7d')){_0x5067b7[_0x3adf('0x76')]('i.'+_0x4fef6e+_0x3adf('0x7e'));}else{_0x5067b7[_0x3adf('0x76')]('i.'+_0x4fef6e+_0x3adf('0x7f'),_0x15352f[_0x3adf('0x3d')][_0x4fef6e]);}}});}if(_0x15352f['query']['read']){if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x80')]==0x1){_0x5067b7[_0x3adf('0x65')](_0x3adf('0x81'));}else{_0x5067b7[_0x3adf('0x65')](_0x3adf('0x82'));}}if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x83')]){_0x137f77=_[_0x3adf('0x84')](_0x15352f[_0x3adf('0x3d')]['tag'])?_0x15352f[_0x3adf('0x3d')][_0x3adf('0x83')]:new Array(_0x15352f['query']['tag']);_0x137f77[_0x3adf('0x37')](function(_0x378b26){_0x2573d5['or'](_0x3adf('0x85'),'%,'+_0x378b26+',%');});}if(_0x15352f['query'][_0x3adf('0x86')]){var _0x3bb793=_0x15352f[_0x3adf('0x3d')][_0x3adf('0x86')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs['isNumeric'](_0x3bb793)){_0x4a929f['or'](_0x3adf('0x87'),_0x3bb793+'%')['or'](_0x3adf('0x88'),_0x3bb793+'%');}else{_0x4a929f['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x3adf('0x6a')](_0x3bb793))['or'](_0x3adf('0x89'),_0x3bb793+'%');}}}_0x5067b7['where'](_0x4a929f);_0x5067b7[_0x3adf('0x8a')](_0x3adf('0x8b'));var _0x2cae74={'type':db[_0x3adf('0x8c')][_0x3adf('0x8d')][_0x3adf('0x8e')],'raw':!![]};var _0x4d651a=_0x5067b7[_0x3adf('0x8f')]();_0x4d651a[_0x3adf('0x4a')](_0x3adf('0x8b'));_0x4d651a[_0x3adf('0x4a')](_0x3adf('0x90'),'unreadMessages');if(_0x3795da[_0x3adf('0x47')]){_0x3795da[_0x3adf('0x47')]['forEach'](function(_0x42aba0){var _0x478121=_0x42aba0[0x0]==='contactName'?_0x42aba0[0x0]:'i.'+_0x42aba0[0x0];_0x5067b7[_0x3adf('0x47')](_0x478121,_0x42aba0[0x1]==='DESC'?![]:!![]);});}if(!_[_0x3adf('0x91')](_0x137f77)){_0x5067b7[_0x3adf('0x65')](_0x2573d5);_0x4d651a[_0x3adf('0x76')](_0x3adf('0x92'),_0x137f77);}BPromise[_0x3adf('0x93')]()['then'](function(){if(!_0x45d41d){if(_0x15352f['query'][_0x3adf('0x75')])return;_0x4d651a[_0x3adf('0x76')](_0x3adf('0x94'));_0x5067b7['where'](_0x3adf('0x94'));return;}if(_0x15352f[_0x3adf('0x95')][_0x3adf('0x96')]!==_0x3adf('0x97'))return;return _0x15352f['user'][_0x3adf('0x98')]({'attributes':['id'],'raw':!![]})[_0x3adf('0x2b')](function(_0x2fa2e2){if(_[_0x3adf('0x91')](_0x2fa2e2)){_0x4d651a[_0x3adf('0x76')](_0x3adf('0x99'));_0x5067b7['where'](_0x3adf('0x99'));}else{_0x4d651a[_0x3adf('0x76')](_0x3adf('0x77'),_[_0x3adf('0x32')](_0x2fa2e2,'id'));_0x5067b7[_0x3adf('0x76')](_0x3adf('0x77'),_[_0x3adf('0x32')](_0x2fa2e2,'id'));}});})[_0x3adf('0x2b')](function(){if(_0x15352f[_0x3adf('0x95')][_0x3adf('0x96')]===_0x3adf('0x97')&&!_0x45d41d&&!_0x15352f['query']['SmsAccountId'])return[];return db['sequelize'][_0x3adf('0x3d')](_0x4d651a[_0x3adf('0x9a')](),_0x2cae74);})[_0x3adf('0x2b')](function(_0x1fa793){_0x47168a['count']=_0x1fa793[_0x3adf('0x44')];if(_0x47168a[_0x3adf('0x25')]===0x0)return[];return db[_0x3adf('0x9b')]['query'](_0x3d13d7[_0x3adf('0x9a')](),_0x2cae74)[_0x3adf('0x2b')](function(_0x19e50e){_0xf3100a=_[_0x3adf('0x9c')](_0x19e50e,'id');_0x2cae74=_[_0x3adf('0x9d')](_0x2cae74,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x15352f[_0x3adf('0x3d')][_0x3adf('0x43')]){_0x3795da[_0x3adf('0x42')][_0x3adf('0x37')](function(_0x124711){_0x5067b7['field']('i.'+_0x124711);});}else{_0x5067b7['field'](_0x3adf('0x90'),_0x3adf('0x63'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0x9e'),_0x3adf('0x9f'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa0'),_0x3adf('0xa1'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa2'),_0x3adf('0xa3'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa4'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa5'),_0x3adf('0xa6'));_0x5067b7['field'](_0x3adf('0xa7'),_0x3adf('0xa8'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xa9'),_0x3adf('0xaa'));_0x5067b7['field'](_0x3adf('0xab'),_0x3adf('0xac'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xad'),_0x3adf('0xae'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xaf'),_0x3adf('0xb0'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xb1'),_0x3adf('0xb2'));_0x5067b7['field'](_0x3adf('0xb3'),_0x3adf('0xb4'));_0x5067b7[_0x3adf('0x4a')](_0x3adf('0xb5'),_0x3adf('0x34'));}if(_0x3795da[_0x3adf('0x24')])_0x5067b7[_0x3adf('0x24')](_0x3795da[_0x3adf('0x24')]);if(_0x3795da[_0x3adf('0x22')])_0x5067b7[_0x3adf('0x22')](_0x3795da[_0x3adf('0x22')]);return db[_0x3adf('0x9b')][_0x3adf('0x3d')](_0x5067b7[_0x3adf('0x9a')](),_0x2cae74);})['then'](function(_0x53fcbb){if(_0x53fcbb['length']>0x0)_0x415c46[_0x3adf('0x76')](_0x3adf('0xb6'),_[_0x3adf('0x32')](_0x53fcbb,'id'));return db[_0x3adf('0x9b')][_0x3adf('0x3d')](_0x415c46[_0x3adf('0x9a')](),_0x2cae74)[_0x3adf('0x2b')](function(_0xb757ea){var _0x5b7648=_['groupBy'](_0xb757ea,'SmsInteractionId');var _0x1fe965=[];_0x53fcbb['forEach'](function(_0x41d5e5){_0x1fe965[_0x3adf('0xb7')](updateSmsInteraction(_0x41d5e5,_0xf3100a,_0x5b7648));});return BPromise[_0x3adf('0xb8')](_0x1fe965);});});})[_0x3adf('0x2b')](function(_0x549768){_0x47168a['rows']=_0x549768;return _0x47168a;})[_0x3adf('0x2b')](respondWithFilteredResult(_0x27e206,_0x3795da))['catch'](handleError(_0x27e206,null));};exports[_0x3adf('0xb9')]=function(_0x1dfdd7,_0x29501f){var _0x40d3c3={'raw':![],'where':{'id':_0x1dfdd7['params']['id']}},_0x2cdfea={};_0x2cdfea[_0x3adf('0x41')]=_['keys'](db['SmsInteraction']['rawAttributes']);_0x2cdfea['query']=_['keys'](_0x1dfdd7[_0x3adf('0x3d')]);_0x2cdfea[_0x3adf('0x3f')]=_[_0x3adf('0x40')](_0x2cdfea[_0x3adf('0x41')],_0x2cdfea[_0x3adf('0x3d')]);_0x40d3c3[_0x3adf('0x42')]=_['intersection'](_0x2cdfea['model'],qs[_0x3adf('0x43')](_0x1dfdd7[_0x3adf('0x3d')][_0x3adf('0x43')]));_0x40d3c3['attributes']=_0x40d3c3[_0x3adf('0x42')]['length']?_0x40d3c3['attributes']:_0x2cdfea[_0x3adf('0x41')];if(_0x1dfdd7[_0x3adf('0x3d')][_0x3adf('0xba')]){_0x40d3c3[_0x3adf('0xbb')]=[{'all':!![]}];}_0x40d3c3=_[_0x3adf('0x9d')]({},_0x40d3c3,_0x1dfdd7['options']);return db[_0x3adf('0x39')]['find'](_0x40d3c3)['then'](handleEntityNotFound(_0x29501f,null))[_0x3adf('0x2b')](respondWithResult(_0x29501f,null))[_0x3adf('0xbc')](handleError(_0x29501f,null));};exports['create']=function(_0x55407f,_0x5594c8){return db[_0x3adf('0x39')][_0x3adf('0xbd')](_0x55407f['body'],{})[_0x3adf('0x2b')](respondWithResult(_0x5594c8,0xc9))['catch'](handleError(_0x5594c8,null));};exports['update']=function(_0x2dbd9e,_0x4de67c){if(_0x2dbd9e['body']['id']){delete _0x2dbd9e[_0x3adf('0x73')]['id'];}return db[_0x3adf('0x39')][_0x3adf('0x62')]({'where':{'id':_0x2dbd9e['params']['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0x4de67c,null))[_0x3adf('0x2b')](saveUpdates(_0x2dbd9e[_0x3adf('0x73')],null))['then'](respondWithResult(_0x4de67c,null))[_0x3adf('0xbc')](handleError(_0x4de67c,null));};exports[_0x3adf('0x2c')]=function(_0x167809,_0x5d85a2){return db[_0x3adf('0x39')][_0x3adf('0x62')]({'where':{'id':_0x167809['params']['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0x5d85a2,null))[_0x3adf('0x2b')](removeEntity(_0x5d85a2,null))['catch'](handleError(_0x5d85a2,null));};exports['describe']=function(_0x24fae4,_0x3fbb74){return db['SmsInteraction']['describe']()[_0x3adf('0x2b')](respondWithResult(_0x3fbb74,null))[_0x3adf('0xbc')](handleError(_0x3fbb74,null));};exports[_0x3adf('0xbe')]=function(_0x5168fb,_0x1e96a9,_0x221124){return db[_0x3adf('0xbf')][_0x3adf('0x62')]({'where':{'id':_0x5168fb[_0x3adf('0xc0')]['id']}})['then'](handleEntityNotFound(_0x1e96a9,null))[_0x3adf('0x2b')](function(_0xdcb8a){if(_0xdcb8a){return _0xdcb8a[_0x3adf('0xbe')](_0x5168fb[_0x3adf('0x73')]['ids'],_[_0x3adf('0xc1')](_0x5168fb[_0x3adf('0x73')],['ids','id'])||{});}})[_0x3adf('0x2b')](respondWithResult(_0x1e96a9,null))[_0x3adf('0xbc')](handleError(_0x1e96a9,null));};exports[_0x3adf('0xc2')]=function(_0x11fdf4,_0x4ade40,_0x50fa4b){var _0x761225={'raw':![],'where':{}};var _0x139d67={};var _0x5a39d3={'count':0x0,'rows':[]};return db[_0x3adf('0x39')]['findOne']({'where':{'id':_0x11fdf4[_0x3adf('0xc0')]['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0x4ade40,null))[_0x3adf('0x2b')](function(_0x515a51){if(_0x515a51){_0x139d67[_0x3adf('0x41')]=_['keys'](db['SmsMessage']['rawAttributes']);_0x139d67[_0x3adf('0x3d')]=_[_0x3adf('0x3e')](_0x11fdf4[_0x3adf('0x3d')]);_0x139d67[_0x3adf('0x3f')]=_[_0x3adf('0x40')](_0x139d67[_0x3adf('0x41')],_0x139d67[_0x3adf('0x3d')]);_0x761225['attributes']=_['intersection'](_0x139d67[_0x3adf('0x41')],qs[_0x3adf('0x43')](_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x43')]));_0x761225['attributes']=_0x761225[_0x3adf('0x42')][_0x3adf('0x44')]?_0x761225[_0x3adf('0x42')]:_0x139d67[_0x3adf('0x41')];if(!_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x45')](_0x3adf('0x46'))){_0x761225[_0x3adf('0x24')]=qs[_0x3adf('0x24')](_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x24')]);_0x761225['offset']=qs[_0x3adf('0x22')](_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0x22')]);}_0x761225[_0x3adf('0x47')]=qs[_0x3adf('0x48')](_0x11fdf4['query'][_0x3adf('0x48')]);_0x761225[_0x3adf('0x76')]=qs[_0x3adf('0x3f')](_[_0x3adf('0x49')](_0x11fdf4[_0x3adf('0x3d')],_0x139d67[_0x3adf('0x3f')]));_0x761225['where']['SmsInteractionId']=_0x515a51['id'];if(_0x11fdf4['query'][_0x3adf('0x86')]){_0x761225[_0x3adf('0x76')]=_['merge'](_0x761225[_0x3adf('0x76')],{'$or':_[_0x3adf('0x32')](_0x761225[_0x3adf('0x42')],function(_0x3f7f47){var _0x502bbc={};_0x502bbc[_0x3f7f47]={'$like':'%'+_0x11fdf4['query']['filter']+'%'};return _0x502bbc;})});}if(_0x11fdf4[_0x3adf('0x3d')]['$gte']){var _0x5c29be=_0x11fdf4[_0x3adf('0x3d')]['$gte']['split'](',');var _0x1d38ba={};_0x1d38ba[_0x5c29be[0x0]]={'$gte':moment(_0x5c29be[0x1])[_0x3adf('0xc3')]('YYYY-MM-DD\x20HH:mm:ss')};_0x761225[_0x3adf('0x76')]=_[_0x3adf('0x9d')](_0x761225[_0x3adf('0x76')],_0x1d38ba);}_0x761225=_[_0x3adf('0x9d')]({},_0x761225,_0x11fdf4[_0x3adf('0xc4')]);return db[_0x3adf('0xbf')][_0x3adf('0x25')]({'where':_0x761225[_0x3adf('0x76')]})[_0x3adf('0x2b')](function(_0x5b02ea){_0x5a39d3[_0x3adf('0x25')]=_0x5b02ea;if(_0x11fdf4[_0x3adf('0x3d')][_0x3adf('0xba')]){_0x761225[_0x3adf('0xbb')]=[{'all':!![]}];}return db[_0x3adf('0xbf')][_0x3adf('0xc5')](_0x761225);})[_0x3adf('0x2b')](function(_0x3a5051){_0x5a39d3['rows']=_0x3a5051;return _0x5a39d3;});}})[_0x3adf('0x2b')](respondWithFilteredResult(_0x4ade40,_0x761225))[_0x3adf('0xbc')](handleError(_0x4ade40,null));};exports[_0x3adf('0xc6')]=function(_0x461876,_0xa3f2c7,_0x4fbc9f){return db[_0x3adf('0x39')][_0x3adf('0x62')]({'where':{'id':_0x461876[_0x3adf('0xc0')]['id']}})[_0x3adf('0x2b')](handleEntityNotFound(_0xa3f2c7,null))[_0x3adf('0x2b')](function(_0x2eafc4){if(_0x2eafc4){return _0x2eafc4[_0x3adf('0xc7')](_0x461876[_0x3adf('0x73')][_0x3adf('0xc8')],_['omit'](_0x461876['body'],['ids','id'])||{})['spread'](function(){return db['Tag'][_0x3adf('0xc5')]({'attributes':['id','name',_0x3adf('0x4b')],'where':{'id':_0x461876[_0x3adf('0x73')][_0x3adf('0xc8')]}});})['then'](function(_0x9fab83){socket['emit']('smsInteractionTags:save',{'id':Number(_0x461876[_0x3adf('0xc0')]['id']),'tags':_0x9fab83||[]});return{'id':Number(_0x461876[_0x3adf('0xc0')]['id']),'tags':_0x9fab83||[]};});}})['then'](respondWithResult(_0xa3f2c7,null))[_0x3adf('0xbc')](handleError(_0xa3f2c7,null));};exports[_0x3adf('0xc9')]=function(_0x8c3b9d,_0x5338e9,_0x316bc8){return db[_0x3adf('0x39')]['find']({'where':{'id':_0x8c3b9d[_0x3adf('0xc0')]['id']}})['then'](handleEntityNotFound(_0x5338e9,null))[_0x3adf('0x2b')](function(_0x1ed883){if(_0x1ed883){return _0x1ed883[_0x3adf('0xc9')](_0x8c3b9d[_0x3adf('0x3d')][_0x3adf('0xc8')]);}})[_0x3adf('0x2b')](respondWithStatusCode(_0x5338e9,null))[_0x3adf('0xbc')](handleError(_0x5338e9,null));};exports[_0x3adf('0xca')]=function(_0x468cb2,_0x339375){var _0x5c7302=moment()[_0x3adf('0xcb')]()['toString']();var _0x89a140=path[_0x3adf('0xcc')](config[_0x3adf('0xcd')],_0x3adf('0xce'),_0x3adf('0xcf'),_0x3adf('0xd0'));var _0x5de18a=path[_0x3adf('0xcc')](config[_0x3adf('0xcd')],'server',_0x3adf('0xcf'),_0x3adf('0xd1'));var _0x4169b7=path[_0x3adf('0xcc')](_0x89a140,_0x5c7302);var _0x53e7ad=util[_0x3adf('0xc3')](_0x3adf('0xd2'),_0x468cb2[_0x3adf('0xc0')]['id'],_0x5c7302);var _0x18ddbf=path[_0x3adf('0xcc')](_0x89a140,_0x53e7ad);var _0x5ded8f=[];_0x5ded8f[_0x3adf('0xb7')]({'model':db[_0x3adf('0xd3')],'as':_0x3adf('0xd3'),'attributes':['id','fullname'],'raw':!![]});_0x5ded8f[_0x3adf('0xb7')]({'model':db['CmContact'],'as':_0x3adf('0x67'),'attributes':['id',_0x3adf('0xd4'),_0x3adf('0xd5')],'raw':!![]});var _0x2b95c7=[{'model':db[_0x3adf('0xbf')],'as':_0x3adf('0xd6'),'attributes':['id',_0x3adf('0x73'),_0x3adf('0x79'),'direction',_0x3adf('0xd7'),'read'],'include':_0x5ded8f}];_0x2b95c7['push']({'model':db['SmsAccount'],'as':_0x3adf('0xd8'),'attributes':['id',_0x3adf('0x30')]});_0x2b95c7[_0x3adf('0xb7')]({'model':db[_0x3adf('0xd3')],'as':_0x3adf('0xd9'),'attributes':['id',_0x3adf('0x33')]});return db['SmsInteraction']['find']({'where':{'id':_0x468cb2[_0x3adf('0xc0')]['id']},'include':_0x2b95c7})[_0x3adf('0x2b')](handleEntityNotFound(_0x339375,null))[_0x3adf('0x2b')](function(_0x287dbc){if(_0x287dbc){var _0x438387=_0x287dbc[_0x3adf('0xda')]({'plain':!![]});fs[_0x3adf('0xdb')](_0x4169b7);var _0x228e7b={'channel':_0x3adf('0xdc'),'account':_0x438387[_0x3adf('0xd8')][_0x3adf('0x30')],'agent':_0x438387[_0x3adf('0xd9')]?_0x438387['Owner'][_0x3adf('0x33')]:_0x3adf('0xdd'),'createdAt':moment(_0x438387[_0x3adf('0x79')])[_0x3adf('0xc3')](_0x3adf('0xde'))[_0x3adf('0x9a')](),'closedAt':_0x438387[_0x3adf('0xdf')]?moment(_0x438387['closedAt'])[_0x3adf('0xc3')](_0x3adf('0xde'))[_0x3adf('0x9a')]():'','disposition':_0x438387['disposition'],'messages':_(_0x438387['Messages'])[_0x3adf('0x86')]({'secret':![]})[_0x3adf('0x32')](function(_0x1fafa3){return{'date':moment(_0x1fafa3[_0x3adf('0x79')])['format'](_0x3adf('0xde'))[_0x3adf('0x9a')](),'sender':_0x1fafa3[_0x3adf('0xe0')]===_0x3adf('0xe1')?_0x1fafa3['User']?_0x1fafa3['User'][_0x3adf('0x33')]:_0x3adf('0xe2'):_0x1fafa3['Contact'][_0x3adf('0xd4')]+(_0x1fafa3[_0x3adf('0x67')][_0x3adf('0xd5')]?'\x20'+_0x1fafa3[_0x3adf('0x67')][_0x3adf('0xd5')]:''),'body':_0x1fafa3['body'],'direction':_0x1fafa3['direction']===_0x3adf('0xe1')?'A':'C','secret':_0x1fafa3[_0x3adf('0xd7')],'read':_0x1fafa3['read']};})[_0x3adf('0x64')]()};return ejs[_0x3adf('0xe3')](path[_0x3adf('0xcc')](config[_0x3adf('0xcd')],_0x3adf('0xce'),_0x3adf('0xe4'),_0x3adf('0xe5')),{'interaction':_0x228e7b})[_0x3adf('0x2b')](function(_0x10699c){var _0x40f301=path[_0x3adf('0xcc')](_0x4169b7,'transcript-'+_0x438387['id']+'-'+_0x5c7302+_0x3adf('0xe6'));var _0x29f166={'path':_0x40f301,'channel':_0x3adf('0xdc'),'interactionId':_0x438387['id']};return pdf[_0x3adf('0xe7')](_0x10699c,_0x29f166);})['then'](function(){return new BPromise(function(_0x2a2163,_0xdeecb2){zipdir(_0x4169b7,{'saveTo':_0x18ddbf},function(_0x4995b8,_0x2e95d6){if(_0x4995b8)return _0xdeecb2(_0x4995b8);return _0x2a2163(_0x2e95d6);});})[_0x3adf('0x2b')](function(){return new BPromise(function(_0x266ece,_0x859d81){rimraf(_0x4169b7,function(_0x318ef8){if(_0x318ef8)_0x859d81(_0x318ef8);return _0x266ece();});});})[_0x3adf('0x2b')](function(){return _0x339375[_0x3adf('0xca')](_0x18ddbf,_0x53e7ad,function(_0x24942f){if(_0x24942f){console['log'](_0x3adf('0xe8'),_0x24942f);}else{fs['unlinkSync'](_0x18ddbf);}});});});}else{return _0x339375[_0x3adf('0x1f')](0xc8);}})[_0x3adf('0xbc')](handleError(_0x339375,null));};
\ No newline at end of file
index 69e384f..65dc98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab40=['remove','then','setDataValue','Users','unreadMessages','length','emit','catch','exports','events','../../mysqldb','setMaxListeners','save','update'];(function(_0x1c0a6d,_0x5f4acd){var _0x2fb447=function(_0xbda13c){while(--_0xbda13c){_0x1c0a6d['push'](_0x1c0a6d['shift']());}};_0x2fb447(++_0x5f4acd);}(_0xab40,0xcd));var _0x0ab4=function(_0x2c2b7e,_0x16d35c){_0x2c2b7e=_0x2c2b7e-0x0;var _0xb23fe7=_0xab40[_0x2c2b7e];return _0xb23fe7;};'use strict';var EventEmitter=require(_0x0ab4('0x0'));var SmsInteraction=require(_0x0ab4('0x1'))['db']['SmsInteraction'];var SmsMessage=require('../../mysqldb')['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x0ab4('0x2')](0x0);var events={'afterCreate':_0x0ab4('0x3'),'afterUpdate':_0x0ab4('0x4'),'afterDestroy':_0x0ab4('0x5')};function emitEvent(_0x14634a){return function(_0x57fac1,_0x5f01aa,_0x28b17a){_0x57fac1['getUsers']({'attributes':['id'],'raw':!![]})[_0x0ab4('0x6')](function(_0x46d16a){_0x57fac1[_0x0ab4('0x7')](_0x0ab4('0x8'),_0x46d16a['map'](function(_0x55263d){return{'id':_0x55263d['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x57fac1['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0ab4('0x6')](function(_0x30e726){_0x57fac1[_0x0ab4('0x7')](_0x0ab4('0x9'),_0x30e726[_0x0ab4('0xa')]);SmsInteractionEvents[_0x0ab4('0xb')](_0x14634a+':'+_0x57fac1['id'],_0x57fac1);SmsInteractionEvents[_0x0ab4('0xb')](_0x14634a,_0x57fac1);_0x28b17a(null);})[_0x0ab4('0xc')](_0x28b17a(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module[_0x0ab4('0xd')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xbbbc=['map','findAll','length','emit','hasOwnProperty','hook','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save','remove','then','setDataValue','Users'];(function(_0x2e6dbf,_0x57dd06){var _0x2680e5=function(_0x4018f4){while(--_0x4018f4){_0x2e6dbf['push'](_0x2e6dbf['shift']());}};_0x2680e5(++_0x57dd06);}(_0xbbbc,0xf6));var _0xcbbb=function(_0x34b207,_0x445c91){_0x34b207=_0x34b207-0x0;var _0x572ba6=_0xbbbc[_0x34b207];return _0x572ba6;};'use strict';var EventEmitter=require(_0xcbbb('0x0'));var SmsInteraction=require(_0xcbbb('0x1'))['db'][_0xcbbb('0x2')];var SmsMessage=require(_0xcbbb('0x1'))['db'][_0xcbbb('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xcbbb('0x4')](0x0);var events={'afterCreate':_0xcbbb('0x5'),'afterUpdate':'update','afterDestroy':_0xcbbb('0x6')};function emitEvent(_0x938376){return function(_0x45da04,_0x3ccbf6,_0x43ff05){_0x45da04['getUsers']({'attributes':['id'],'raw':!![]})[_0xcbbb('0x7')](function(_0x1796b4){_0x45da04[_0xcbbb('0x8')](_0xcbbb('0x9'),_0x1796b4[_0xcbbb('0xa')](function(_0x150355){return{'id':_0x150355['id']};}));return SmsMessage[_0xcbbb('0xb')]({'where':{'SmsInteractionId':_0x45da04['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x225156){_0x45da04['setDataValue']('unreadMessages',_0x225156[_0xcbbb('0xc')]);SmsInteractionEvents['emit'](_0x938376+':'+_0x45da04['id'],_0x45da04);SmsInteractionEvents[_0xcbbb('0xd')](_0x938376,_0x45da04);_0x43ff05(null);})['catch'](_0x43ff05(null));};}for(var e in events){if(events[_0xcbbb('0xe')](e)){var event=events[e];SmsInteraction[_0xcbbb('0xf')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index b02f3e3..721bfdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1da=['changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions'];(function(_0x33af0a,_0x32d6df){var _0x1504f1=function(_0x3a6ae2){while(--_0x3a6ae2){_0x33af0a['push'](_0x33af0a['shift']());}};_0x1504f1(++_0x32d6df);}(_0xf1da,0x1f4));var _0xaf1d=function(_0x3221f5,_0x22928f){_0x3221f5=_0x3221f5-0x0;var _0x242743=_0xf1da[_0x3221f5];return _0x242743;};'use strict';var _=require(_0xaf1d('0x0'));var util=require(_0xaf1d('0x1'));var logger=require(_0xaf1d('0x2'))('api');var moment=require(_0xaf1d('0x3'));var BPromise=require('bluebird');var rp=require(_0xaf1d('0x4'));var fs=require('fs');var path=require(_0xaf1d('0x5'));var rimraf=require('rimraf');var config=require(_0xaf1d('0x6'));var attributes=require(_0xaf1d('0x7'));module[_0xaf1d('0x8')]=function(_0x88bb03,_0x23eaaa){return _0x88bb03[_0xaf1d('0x9')](_0xaf1d('0xa'),attributes,{'tableName':_0xaf1d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x508315,_0xfced2,_0x15bf44){if(_0x508315[_0xaf1d('0xc')](_0xaf1d('0xd'))){_0x508315[_0xaf1d('0xe')]=moment()['format'](_0xaf1d('0xf'));}_0x15bf44(null,_0x508315);}}});};
\ No newline at end of file
+var _0x39e0=['lodash','../../config/logger','moment','bluebird','path','../../config/environment','./smsInteraction.attributes','exports','SmsInteraction','sms_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x549fc3,_0x2b1dfc){var _0x5d3ce2=function(_0x23c153){while(--_0x23c153){_0x549fc3['push'](_0x549fc3['shift']());}};_0x5d3ce2(++_0x2b1dfc);}(_0x39e0,0x1ef));var _0x039e=function(_0x5c7d6c,_0x52c75e){_0x5c7d6c=_0x5c7d6c-0x0;var _0x32e81f=_0x39e0[_0x5c7d6c];return _0x32e81f;};'use strict';var _=require(_0x039e('0x0'));var util=require('util');var logger=require(_0x039e('0x1'))('api');var moment=require(_0x039e('0x2'));var BPromise=require(_0x039e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x039e('0x4'));var rimraf=require('rimraf');var config=require(_0x039e('0x5'));var attributes=require(_0x039e('0x6'));module[_0x039e('0x7')]=function(_0x159c3d,_0x1564a5){return _0x159c3d['define'](_0x039e('0x8'),attributes,{'tableName':_0x039e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5e18e8,_0x315ce6,_0x195683){if(_0x5e18e8[_0x039e('0xa')](_0x039e('0xb'))){_0x5e18e8[_0x039e('0xc')]=moment()[_0x039e('0xd')](_0x039e('0xe'));}_0x195683(null,_0x5e18e8);}}});};
\ No newline at end of file
index 32c5d2f..52b2b6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b97=['spread','AddTags','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./smsInteraction.socket','request','then','info','SmsInteraction,\x20%s,\x20%s','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','SmsInteraction','update','options','raw','where','attributes','limit','UpdateSmsInteraction','AddTagsToSmsInteraction','find','body','ids'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x4b97,0x80));var _0x74b9=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x4b97[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x74b9('0x0'));var util=require(_0x74b9('0x1'));var moment=require(_0x74b9('0x2'));var BPromise=require(_0x74b9('0x3'));var rs=require(_0x74b9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x74b9('0x5'))['db'];var utils=require(_0x74b9('0x6'));var logger=require(_0x74b9('0x7'))(_0x74b9('0x8'));var config=require(_0x74b9('0x9'));var jayson=require(_0x74b9('0xa'));var client=jayson['client'][_0x74b9('0xb')]({'port':0x232a});config[_0x74b9('0xc')]=_[_0x74b9('0xd')](config['redis'],{'host':_0x74b9('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x74b9('0xc')]));require(_0x74b9('0xf'))['register'](socket);function respondWithRpcPromise(_0x4f9572,_0x2c5346,_0x4a8799){return new BPromise(function(_0x509e88,_0x2a964f){return client[_0x74b9('0x10')](_0x4f9572,_0x4a8799)[_0x74b9('0x11')](function(_0x6e52f2){logger[_0x74b9('0x12')](_0x74b9('0x13'),_0x2c5346,'request\x20sent');logger[_0x74b9('0x14')](_0x74b9('0x15'),_0x2c5346,_0x74b9('0x16'),JSON[_0x74b9('0x17')](_0x6e52f2));if(_0x6e52f2[_0x74b9('0x18')]){if(_0x6e52f2[_0x74b9('0x18')][_0x74b9('0x19')]===0x1f4){logger[_0x74b9('0x18')](_0x74b9('0x13'),_0x2c5346,_0x6e52f2[_0x74b9('0x18')][_0x74b9('0x1a')]);return _0x2a964f(_0x6e52f2[_0x74b9('0x18')][_0x74b9('0x1a')]);}logger['error'](_0x74b9('0x13'),_0x2c5346,_0x6e52f2[_0x74b9('0x18')][_0x74b9('0x1a')]);return _0x509e88(_0x6e52f2[_0x74b9('0x18')]['message']);}else{logger['info'](_0x74b9('0x13'),_0x2c5346,_0x74b9('0x16'));_0x509e88(_0x6e52f2['result'][_0x74b9('0x1a')]);}})[_0x74b9('0x1b')](function(_0x33fc4c){logger[_0x74b9('0x18')]('SmsInteraction,\x20%s,\x20%s',_0x2c5346,_0x33fc4c);_0x2a964f(_0x33fc4c);});});}exports['UpdateSmsInteraction']=function(_0x3b0ca0){var _0x179838=this;return new Promise(function(_0x1fe4a3,_0x5735e8){return db[_0x74b9('0x1c')][_0x74b9('0x1d')](_0x3b0ca0['body'],{'raw':_0x3b0ca0[_0x74b9('0x1e')]?_0x3b0ca0['options'][_0x74b9('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3b0ca0[_0x74b9('0x1e')]?_0x3b0ca0['options'][_0x74b9('0x20')]||null:null,'attributes':_0x3b0ca0['options']?_0x3b0ca0[_0x74b9('0x1e')][_0x74b9('0x21')]||null:null,'limit':_0x3b0ca0[_0x74b9('0x1e')]?_0x3b0ca0[_0x74b9('0x1e')][_0x74b9('0x22')]||null:null})[_0x74b9('0x11')](function(_0x26b695){logger[_0x74b9('0x12')](_0x74b9('0x23'),_0x3b0ca0);logger[_0x74b9('0x14')]('UpdateSmsInteraction',_0x3b0ca0,JSON[_0x74b9('0x17')](_0x26b695));_0x1fe4a3(_0x26b695);})[_0x74b9('0x1b')](function(_0x2196fa){logger['error'](_0x74b9('0x23'),_0x2196fa['message'],_0x3b0ca0);_0x5735e8(_0x179838[_0x74b9('0x18')](0x1f4,_0x2196fa[_0x74b9('0x1a')]));});});};exports[_0x74b9('0x24')]=function(_0x20f1a0){return new Promise(function(_0x130b7c,_0x2e626a){return db[_0x74b9('0x1c')][_0x74b9('0x25')]({'where':_0x20f1a0[_0x74b9('0x1e')]?_0x20f1a0['options'][_0x74b9('0x20')]||null:null})['then'](function(_0x367c70){if(_0x367c70){return _0x367c70['addTags'](_0x20f1a0[_0x74b9('0x26')][_0x74b9('0x27')],_['omit'](_0x20f1a0[_0x74b9('0x26')],[_0x74b9('0x27'),'id'])||{});}})[_0x74b9('0x28')](function(_0x44fb4e){logger[_0x74b9('0x12')](_0x74b9('0x29'),_0x20f1a0);logger['debug']('AddTags',_0x20f1a0,JSON[_0x74b9('0x17')](_0x44fb4e));_0x130b7c(_0x44fb4e);})[_0x74b9('0x1b')](function(_0xf7dd5a){logger[_0x74b9('0x18')](_0x74b9('0x29'),_0xf7dd5a[_0x74b9('0x1a')],_0x20f1a0);_0x2e626a(_this['error'](0x1f4,_0xf7dd5a[_0x74b9('0x1a')]));});});};
\ No newline at end of file
+var _0x723c=['SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','SmsInteraction,\x20%s,\x20%s','message','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','attributes','limit','AddTagsToSmsInteraction','find','ids','omit','spread','AddTags','debug','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','defaults','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','request','then','info','request\x20sent'];(function(_0x2a0fc4,_0x2eaf74){var _0x531d00=function(_0xa4388f){while(--_0xa4388f){_0x2a0fc4['push'](_0x2a0fc4['shift']());}};_0x531d00(++_0x2eaf74);}(_0x723c,0x106));var _0xc723=function(_0x3ce5e8,_0x101384){_0x3ce5e8=_0x3ce5e8-0x0;var _0x486bb1=_0x723c[_0x3ce5e8];return _0x486bb1;};'use strict';var _=require('lodash');var util=require(_0xc723('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc723('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc723('0x2'))['db'];var utils=require(_0xc723('0x3'));var logger=require(_0xc723('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc723('0x5'));var client=jayson[_0xc723('0x6')][_0xc723('0x7')]({'port':0x232a});config['redis']=_[_0xc723('0x8')](config['redis'],{'host':_0xc723('0x9'),'port':0x18eb});var socket=require(_0xc723('0xa'))(new Redis(config[_0xc723('0xb')]));require(_0xc723('0xc'))[_0xc723('0xd')](socket);function respondWithRpcPromise(_0x15eb6e,_0x563adc,_0x55ab51){return new BPromise(function(_0x17a972,_0xe9d62f){return client[_0xc723('0xe')](_0x15eb6e,_0x55ab51)[_0xc723('0xf')](function(_0x39d996){logger[_0xc723('0x10')]('SmsInteraction,\x20%s,\x20%s',_0x563adc,_0xc723('0x11'));logger['debug'](_0xc723('0x12'),_0x563adc,_0xc723('0x11'),JSON[_0xc723('0x13')](_0x39d996));if(_0x39d996[_0xc723('0x14')]){if(_0x39d996[_0xc723('0x14')]['code']===0x1f4){logger[_0xc723('0x14')](_0xc723('0x15'),_0x563adc,_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);return _0xe9d62f(_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);}logger[_0xc723('0x14')](_0xc723('0x15'),_0x563adc,_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);return _0x17a972(_0x39d996[_0xc723('0x14')][_0xc723('0x16')]);}else{logger[_0xc723('0x10')](_0xc723('0x15'),_0x563adc,_0xc723('0x11'));_0x17a972(_0x39d996['result'][_0xc723('0x16')]);}})[_0xc723('0x17')](function(_0x509e57){logger['error'](_0xc723('0x15'),_0x563adc,_0x509e57);_0xe9d62f(_0x509e57);});});}exports[_0xc723('0x18')]=function(_0x28f566){var _0x5eaf4b=this;return new Promise(function(_0x2dbd0c,_0x505a6a){return db[_0xc723('0x19')][_0xc723('0x1a')](_0x28f566[_0xc723('0x1b')],{'raw':_0x28f566[_0xc723('0x1c')]?_0x28f566[_0xc723('0x1c')][_0xc723('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28f566[_0xc723('0x1c')]?_0x28f566['options'][_0xc723('0x1e')]||null:null,'attributes':_0x28f566[_0xc723('0x1c')]?_0x28f566['options'][_0xc723('0x1f')]||null:null,'limit':_0x28f566[_0xc723('0x1c')]?_0x28f566['options'][_0xc723('0x20')]||null:null})[_0xc723('0xf')](function(_0x3ec13c){logger[_0xc723('0x10')](_0xc723('0x18'),_0x28f566);logger['debug'](_0xc723('0x18'),_0x28f566,JSON['stringify'](_0x3ec13c));_0x2dbd0c(_0x3ec13c);})[_0xc723('0x17')](function(_0x3a5f9a){logger['error']('UpdateSmsInteraction',_0x3a5f9a[_0xc723('0x16')],_0x28f566);_0x505a6a(_0x5eaf4b[_0xc723('0x14')](0x1f4,_0x3a5f9a[_0xc723('0x16')]));});});};exports[_0xc723('0x21')]=function(_0x382ec2){return new Promise(function(_0x2aba2b,_0x44eefd){return db[_0xc723('0x19')][_0xc723('0x22')]({'where':_0x382ec2[_0xc723('0x1c')]?_0x382ec2[_0xc723('0x1c')][_0xc723('0x1e')]||null:null})['then'](function(_0x4476d4){if(_0x4476d4){return _0x4476d4['addTags'](_0x382ec2[_0xc723('0x1b')][_0xc723('0x23')],_[_0xc723('0x24')](_0x382ec2[_0xc723('0x1b')],[_0xc723('0x23'),'id'])||{});}})[_0xc723('0x25')](function(_0x26fcf3){logger[_0xc723('0x10')](_0xc723('0x26'),_0x382ec2);logger[_0xc723('0x27')](_0xc723('0x26'),_0x382ec2,JSON[_0xc723('0x13')](_0x26fcf3));_0x2aba2b(_0x26fcf3);})[_0xc723('0x17')](function(_0x52b2d3){logger[_0xc723('0x14')](_0xc723('0x26'),_0x52b2d3['message'],_0x382ec2);_0x44eefd(_this['error'](0x1f4,_0x52b2d3[_0xc723('0x16')]));});});};
\ No newline at end of file
index 3291f86..bc72e4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfcf=['removeListener','register','smsInteraction:','./smsInteraction.events','remove','update','emit'];(function(_0x55abd9,_0x1148af){var _0x3e5669=function(_0x6f2105){while(--_0x6f2105){_0x55abd9['push'](_0x55abd9['shift']());}};_0x3e5669(++_0x1148af);}(_0xbfcf,0x1bc));var _0xfbfc=function(_0x15b380,_0x1a3c5f){_0x15b380=_0x15b380-0x0;var _0x232c5c=_0xbfcf[_0x15b380];return _0x232c5c;};'use strict';var SmsInteractionEvents=require(_0xfbfc('0x0'));var events=['save',_0xfbfc('0x1'),_0xfbfc('0x2')];function createListener(_0x35df44,_0x23203f){return function(_0x41c9d1){_0x23203f[_0xfbfc('0x3')](_0x35df44,_0x41c9d1);};}function removeListener(_0x20027c,_0x2d89ca){return function(){SmsInteractionEvents[_0xfbfc('0x4')](_0x20027c,_0x2d89ca);};}exports[_0xfbfc('0x5')]=function(_0x5ec7d2){for(var _0x477bf8=0x0,_0x2d0efd=events['length'];_0x477bf8<_0x2d0efd;_0x477bf8++){var _0x1b5e09=events[_0x477bf8];var _0xea1696=createListener(_0xfbfc('0x6')+_0x1b5e09,_0x5ec7d2);SmsInteractionEvents['on'](_0x1b5e09,_0xea1696);}};
\ No newline at end of file
+var _0x5f5c=['removeListener','smsInteraction:','./smsInteraction.events','save','remove','update','emit'];(function(_0xa0af9e,_0x17b96b){var _0x213b90=function(_0x5e84f6){while(--_0x5e84f6){_0xa0af9e['push'](_0xa0af9e['shift']());}};_0x213b90(++_0x17b96b);}(_0x5f5c,0x144));var _0xc5f5=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x5f5c[_0x14add3];return _0x4a174f;};'use strict';var SmsInteractionEvents=require(_0xc5f5('0x0'));var events=[_0xc5f5('0x1'),_0xc5f5('0x2'),_0xc5f5('0x3')];function createListener(_0x15c10f,_0x4833ae){return function(_0x1524ff){_0x4833ae[_0xc5f5('0x4')](_0x15c10f,_0x1524ff);};}function removeListener(_0x593133,_0x5514e2){return function(){SmsInteractionEvents[_0xc5f5('0x5')](_0x593133,_0x5514e2);};}exports['register']=function(_0x55ac0d){for(var _0x163c89=0x0,_0x2affdf=events['length'];_0x163c89<_0x2affdf;_0x163c89++){var _0x42f267=events[_0x163c89];var _0x37b610=createListener(_0xc5f5('0x6')+_0x42f267,_0x55ac0d);SmsInteractionEvents['on'](_0x42f267,_0x37b610);}};
\ No newline at end of file
index b43a348..349b6a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef3=['multer','path','express','Router','../../components/auth/service','../../components/interaction/service','./smsMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','tracked','sms','smsmessage:create','/:id/status','status','update','put','/:id/accept','accept','/:id/reject','delete','destroy','exports'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xfef3,0x118));var _0x3fef=function(_0x2db845,_0x38d794){_0x2db845=_0x2db845-0x0;var _0x247735=_0xfef3[_0x2db845];return _0x247735;};'use strict';var multer=require(_0x3fef('0x0'));var util=require('util');var path=require(_0x3fef('0x1'));var timeout=require('connect-timeout');var express=require(_0x3fef('0x2'));var router=express[_0x3fef('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3fef('0x4'));var interaction=require(_0x3fef('0x5'));var config=require('../../config/environment');var controller=require(_0x3fef('0x6'));router[_0x3fef('0x7')]('/',auth['isAuthenticated'](),controller[_0x3fef('0x8')]);router[_0x3fef('0x7')](_0x3fef('0x9'),auth[_0x3fef('0xa')](),controller[_0x3fef('0xb')]);router[_0x3fef('0x7')](_0x3fef('0xc'),auth[_0x3fef('0xa')](),controller[_0x3fef('0xd')]);router[_0x3fef('0xe')]('/',auth[_0x3fef('0xa')](),interaction[_0x3fef('0xf')](_0x3fef('0x10'),_0x3fef('0x11')),controller['create']);router[_0x3fef('0xe')](_0x3fef('0x12'),controller[_0x3fef('0x13')]);router['put'](_0x3fef('0xc'),auth['isAuthenticated'](),controller[_0x3fef('0x14')]);router[_0x3fef('0x15')](_0x3fef('0x16'),auth['isAuthenticated'](),controller[_0x3fef('0x17')]);router['put'](_0x3fef('0x18'),auth[_0x3fef('0xa')](),controller['reject']);router[_0x3fef('0x19')](_0x3fef('0xc'),auth[_0x3fef('0xa')](),controller[_0x3fef('0x1a')]);module[_0x3fef('0x1b')]=router;
\ No newline at end of file
+var _0xdaf2=['describe','/:id','show','post','smsmessage:create','create','/:id/status','status','update','accept','/:id/reject','reject','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./smsMessage.controller','get','index','/describe','isAuthenticated'];(function(_0x30330a,_0x1b089d){var _0x5db62c=function(_0x3d8966){while(--_0x3d8966){_0x30330a['push'](_0x30330a['shift']());}};_0x5db62c(++_0x1b089d);}(_0xdaf2,0x1cf));var _0x2daf=function(_0x533e4e,_0x4eba54){_0x533e4e=_0x533e4e-0x0;var _0x1f14bb=_0xdaf2[_0x533e4e];return _0x1f14bb;};'use strict';var multer=require('multer');var util=require(_0x2daf('0x0'));var path=require(_0x2daf('0x1'));var timeout=require('connect-timeout');var express=require(_0x2daf('0x2'));var router=express[_0x2daf('0x3')]();var fs_extra=require(_0x2daf('0x4'));var auth=require(_0x2daf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2daf('0x6'));var controller=require(_0x2daf('0x7'));router[_0x2daf('0x8')]('/',auth['isAuthenticated'](),controller[_0x2daf('0x9')]);router['get'](_0x2daf('0xa'),auth[_0x2daf('0xb')](),controller[_0x2daf('0xc')]);router[_0x2daf('0x8')](_0x2daf('0xd'),auth[_0x2daf('0xb')](),controller[_0x2daf('0xe')]);router[_0x2daf('0xf')]('/',auth[_0x2daf('0xb')](),interaction['tracked']('sms',_0x2daf('0x10')),controller[_0x2daf('0x11')]);router[_0x2daf('0xf')](_0x2daf('0x12'),controller[_0x2daf('0x13')]);router['put'](_0x2daf('0xd'),auth[_0x2daf('0xb')](),controller[_0x2daf('0x14')]);router['put']('/:id/accept',auth[_0x2daf('0xb')](),controller[_0x2daf('0x15')]);router['put'](_0x2daf('0x16'),auth['isAuthenticated'](),controller[_0x2daf('0x17')]);router['delete'](_0x2daf('0xd'),auth[_0x2daf('0xb')](),controller['destroy']);module[_0x2daf('0x18')]=router;
\ No newline at end of file
index 8c588cc..9d232eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e53=['exports','medium','ENUM','out','STRING','DATE','BOOLEAN','sequelize'];(function(_0x9c8e15,_0x3a7a93){var _0x5555cf=function(_0xb7ad8a){while(--_0xb7ad8a){_0x9c8e15['push'](_0x9c8e15['shift']());}};_0x5555cf(++_0x3a7a93);}(_0x5e53,0xa7));var _0x35e5=function(_0x52d9eb,_0x28cfd0){_0x52d9eb=_0x52d9eb-0x0;var _0x1dad70=_0x5e53[_0x52d9eb];return _0x1dad70;};'use strict';var Sequelize=require(_0x35e5('0x0'));module[_0x35e5('0x1')]={'body':{'type':Sequelize['TEXT'](_0x35e5('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x35e5('0x3')]('in',_0x35e5('0x4')),'defaultValue':_0x35e5('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x35e5('0x5')]},'readAt':{'type':Sequelize[_0x35e5('0x6')]},'secret':{'type':Sequelize[_0x35e5('0x7')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x35e5('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x54bb=['sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x1649fe,_0x5916da){var _0x473a67=function(_0x163cae){while(--_0x163cae){_0x1649fe['push'](_0x1649fe['shift']());}};_0x473a67(++_0x5916da);}(_0x54bb,0xa0));var _0xb54b=function(_0x4ad922,_0x1538f6){_0x4ad922=_0x4ad922-0x0;var _0x3c0eef=_0x54bb[_0x4ad922];return _0x3c0eef;};'use strict';var Sequelize=require(_0xb54b('0x0'));module[_0xb54b('0x1')]={'body':{'type':Sequelize[_0xb54b('0x2')](_0xb54b('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xb54b('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb54b('0x5')]('in',_0xb54b('0x6')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xb54b('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xb54b('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 1825b88..3fafeef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba88=['status','offset','undefined','limit','count','apply','reject','destroy','end','name','send','index','map','SmsMessage','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','rows','catch','show','params','rawAttributes','options','find','create','body','update','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteraction','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','internal','interface','SIP/%s','channel','EventManager','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','email','event','rejectmessage','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','sent','delivered','plivio','infobip','groupName','DELIVERED','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','register','jayson/promise','http','client','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','sendStatus'];(function(_0x49c68e,_0x1c1673){var _0x33032b=function(_0x42ac31){while(--_0x42ac31){_0x49c68e['push'](_0x49c68e['shift']());}};_0x33032b(++_0x1c1673);}(_0xba88,0x64));var _0x8ba8=function(_0x45f138,_0x4ee0e5){_0x45f138=_0x45f138-0x0;var _0xa58ffa=_0xba88[_0x45f138];return _0xa58ffa;};'use strict';var emlformat=require(_0x8ba8('0x0'));var rimraf=require(_0x8ba8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8ba8('0x2'));var moment=require(_0x8ba8('0x3'));var BPromise=require(_0x8ba8('0x4'));var Mustache=require(_0x8ba8('0x5'));var util=require('util');var path=require(_0x8ba8('0x6'));var sox=require('sox');var csv=require(_0x8ba8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8ba8('0x8'));var squel=require(_0x8ba8('0x9'));var crypto=require(_0x8ba8('0xa'));var jsforce=require(_0x8ba8('0xb'));var deskjs=require(_0x8ba8('0xc'));var toCsv=require('to-csv');var querystring=require(_0x8ba8('0xd'));var Papa=require(_0x8ba8('0xe'));var Redis=require(_0x8ba8('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8ba8('0x10'));var logger=require(_0x8ba8('0x11'))(_0x8ba8('0x12'));var utils=require(_0x8ba8('0x13'));var config=require(_0x8ba8('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8ba8('0x15'))['db'];config['redis']=_[_0x8ba8('0x16')](config['redis'],{'host':_0x8ba8('0x17'),'port':0x18eb});var socket=require(_0x8ba8('0x18'))(new Redis(config[_0x8ba8('0x19')]));require('./smsMessage.socket')[_0x8ba8('0x1a')](socket);var jayson=require(_0x8ba8('0x1b'));var client=jayson['client'][_0x8ba8('0x1c')]({'port':0x232c});var client9002=jayson[_0x8ba8('0x1d')][_0x8ba8('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x43d36c,_0x1c8689,_0x2f7b17,_0x1cd6c0){return new BPromise(function(_0x5b021f,_0x123f9d){var _0x23876e=_0x1cd6c0||client;return _0x23876e['request'](_0x43d36c,_0x2f7b17)[_0x8ba8('0x1e')](function(_0x5d256d){logger[_0x8ba8('0x1f')](_0x8ba8('0x20'),_0x1c8689,'request\x20sent');logger[_0x8ba8('0x21')](_0x8ba8('0x22'),_0x1c8689,_0x8ba8('0x23'),JSON[_0x8ba8('0x24')](_0x5d256d));if(_0x5d256d[_0x8ba8('0x25')]){if(_0x5d256d[_0x8ba8('0x25')]['code']===0x1f4){logger[_0x8ba8('0x25')](_0x8ba8('0x20'),_0x1c8689,_0x5d256d[_0x8ba8('0x25')][_0x8ba8('0x26')]);return _0x123f9d(_0x5d256d[_0x8ba8('0x25')][_0x8ba8('0x26')]);}logger[_0x8ba8('0x25')](_0x8ba8('0x20'),_0x1c8689,_0x5d256d['error']['message']);return _0x5b021f(_0x5d256d[_0x8ba8('0x25')][_0x8ba8('0x26')]);}else{logger['info'](_0x8ba8('0x20'),_0x1c8689,'request\x20sent');_0x5b021f(_0x5d256d['result']['message']);}})['catch'](function(_0x149af4){logger[_0x8ba8('0x25')](_0x8ba8('0x20'),_0x1c8689,_0x149af4);_0x123f9d(_0x149af4);});});}function respondWithStatusCode(_0x297ed2,_0x29cf86){_0x29cf86=_0x29cf86||0xcc;return function(_0x272cd7){if(_0x272cd7){return _0x297ed2[_0x8ba8('0x27')](_0x29cf86);}return _0x297ed2[_0x8ba8('0x28')](_0x29cf86)['end']();};}function respondWithResult(_0x1c0da8,_0x26709d){_0x26709d=_0x26709d||0xc8;return function(_0x45de65){if(_0x45de65){return _0x1c0da8['status'](_0x26709d)['json'](_0x45de65);}};}function respondWithFilteredResult(_0x380be0,_0x2adc0b){return function(_0x225030){if(_0x225030){var _0x3c449d=typeof _0x2adc0b[_0x8ba8('0x29')]===_0x8ba8('0x2a')&&typeof _0x2adc0b[_0x8ba8('0x2b')]===_0x8ba8('0x2a');var _0x12b002=_0x225030[_0x8ba8('0x2c')];var _0x293860=_0x3c449d?0x0:_0x2adc0b['offset'];var _0x16e11a=_0x3c449d?_0x225030[_0x8ba8('0x2c')]:_0x2adc0b[_0x8ba8('0x29')]+_0x2adc0b[_0x8ba8('0x2b')];var _0x2d208e;if(_0x16e11a>=_0x12b002){_0x16e11a=_0x12b002;_0x2d208e=0xc8;}else{_0x2d208e=0xce;}_0x380be0['status'](_0x2d208e);return _0x380be0['set']('Content-Range',_0x293860+'-'+_0x16e11a+'/'+_0x12b002)['json'](_0x225030);}return null;};}function patchUpdates(_0x329cd6){return function(_0x39c85b){try{jsonpatch[_0x8ba8('0x2d')](_0x39c85b,_0x329cd6,!![]);}catch(_0x56b963){return BPromise[_0x8ba8('0x2e')](_0x56b963);}return _0x39c85b['save']();};}function saveUpdates(_0x553eec,_0x35ee5c){return function(_0x2d9652){if(_0x2d9652){return _0x2d9652['update'](_0x553eec)[_0x8ba8('0x1e')](function(_0x4b388c){return _0x4b388c;});}return null;};}function removeEntity(_0x34b190,_0x56757c){return function(_0x491ea6){if(_0x491ea6){return _0x491ea6[_0x8ba8('0x2f')]()['then'](function(){_0x34b190['status'](0xcc)[_0x8ba8('0x30')]();});}};}function handleEntityNotFound(_0x58d25d,_0x10c878){return function(_0x5bc8f6){if(!_0x5bc8f6){_0x58d25d[_0x8ba8('0x27')](0x194);}return _0x5bc8f6;};}function handleError(_0x15437b,_0x242cc2){_0x242cc2=_0x242cc2||0x1f4;return function(_0x22772f){logger[_0x8ba8('0x25')](_0x22772f['stack']);if(_0x22772f[_0x8ba8('0x31')]){delete _0x22772f[_0x8ba8('0x31')];}_0x15437b[_0x8ba8('0x28')](_0x242cc2)[_0x8ba8('0x32')](_0x22772f);};}exports[_0x8ba8('0x33')]=function(_0x46c825,_0x1dad21){var _0x207f85={},_0x27f36e={},_0x5f087a={'count':0x0,'rows':[]};var _0x66e09c=_[_0x8ba8('0x34')](db[_0x8ba8('0x35')]['rawAttributes'],function(_0xe0c54a){return{'name':_0xe0c54a[_0x8ba8('0x36')],'type':_0xe0c54a['type'][_0x8ba8('0x37')]};});_0x27f36e['model']=_[_0x8ba8('0x34')](_0x66e09c,_0x8ba8('0x31'));_0x27f36e[_0x8ba8('0x38')]=_[_0x8ba8('0x39')](_0x46c825[_0x8ba8('0x38')]);_0x27f36e[_0x8ba8('0x3a')]=_[_0x8ba8('0x3b')](_0x27f36e[_0x8ba8('0x3c')],_0x27f36e[_0x8ba8('0x38')]);_0x207f85[_0x8ba8('0x3d')]=_['intersection'](_0x27f36e[_0x8ba8('0x3c')],qs[_0x8ba8('0x3e')](_0x46c825[_0x8ba8('0x38')]['fields']));_0x207f85[_0x8ba8('0x3d')]=_0x207f85[_0x8ba8('0x3d')][_0x8ba8('0x3f')]?_0x207f85['attributes']:_0x27f36e[_0x8ba8('0x3c')];if(!_0x46c825['query'][_0x8ba8('0x40')](_0x8ba8('0x41'))){_0x207f85['limit']=qs[_0x8ba8('0x2b')](_0x46c825[_0x8ba8('0x38')][_0x8ba8('0x2b')]);_0x207f85[_0x8ba8('0x29')]=qs[_0x8ba8('0x29')](_0x46c825[_0x8ba8('0x38')][_0x8ba8('0x29')]);}_0x207f85[_0x8ba8('0x42')]=qs['sort'](_0x46c825[_0x8ba8('0x38')][_0x8ba8('0x43')]);_0x207f85[_0x8ba8('0x44')]=qs[_0x8ba8('0x3a')](_[_0x8ba8('0x45')](_0x46c825['query'],_0x27f36e[_0x8ba8('0x3a')]),_0x66e09c);if(_0x46c825['query'][_0x8ba8('0x46')]){_0x207f85['where']=_[_0x8ba8('0x47')](_0x207f85[_0x8ba8('0x44')],{'$or':_[_0x8ba8('0x34')](_0x66e09c,function(_0xeffe65){if(_0xeffe65[_0x8ba8('0x48')]!==_0x8ba8('0x49')){var _0x6de0a9={};_0x6de0a9[_0xeffe65[_0x8ba8('0x31')]]={'$like':'%'+_0x46c825[_0x8ba8('0x38')][_0x8ba8('0x46')]+'%'};return _0x6de0a9;}})});}_0x207f85=_[_0x8ba8('0x47')]({},_0x207f85,_0x46c825['options']);var _0x270fed={'where':_0x207f85[_0x8ba8('0x44')]};return db['SmsMessage'][_0x8ba8('0x2c')](_0x270fed)[_0x8ba8('0x1e')](function(_0x2db463){_0x5f087a['count']=_0x2db463;if(_0x46c825[_0x8ba8('0x38')][_0x8ba8('0x4a')]){_0x207f85[_0x8ba8('0x4b')]=[{'all':!![]}];}return db[_0x8ba8('0x35')]['findAll'](_0x207f85);})[_0x8ba8('0x1e')](function(_0x38558a){_0x5f087a[_0x8ba8('0x4c')]=_0x38558a;return _0x5f087a;})[_0x8ba8('0x1e')](respondWithFilteredResult(_0x1dad21,_0x207f85))[_0x8ba8('0x4d')](handleError(_0x1dad21,null));};exports[_0x8ba8('0x4e')]=function(_0x50157a,_0x46ded5){var _0x19c12d={'raw':!![],'where':{'id':_0x50157a[_0x8ba8('0x4f')]['id']}},_0x5d9a56={};_0x5d9a56[_0x8ba8('0x3c')]=_[_0x8ba8('0x39')](db[_0x8ba8('0x35')][_0x8ba8('0x50')]);_0x5d9a56[_0x8ba8('0x38')]=_[_0x8ba8('0x39')](_0x50157a[_0x8ba8('0x38')]);_0x5d9a56['filters']=_['intersection'](_0x5d9a56['model'],_0x5d9a56[_0x8ba8('0x38')]);_0x19c12d[_0x8ba8('0x3d')]=_[_0x8ba8('0x3b')](_0x5d9a56[_0x8ba8('0x3c')],qs[_0x8ba8('0x3e')](_0x50157a[_0x8ba8('0x38')][_0x8ba8('0x3e')]));_0x19c12d[_0x8ba8('0x3d')]=_0x19c12d[_0x8ba8('0x3d')][_0x8ba8('0x3f')]?_0x19c12d[_0x8ba8('0x3d')]:_0x5d9a56[_0x8ba8('0x3c')];if(_0x50157a[_0x8ba8('0x38')]['includeAll']){_0x19c12d[_0x8ba8('0x4b')]=[{'all':!![]}];}_0x19c12d=_[_0x8ba8('0x47')]({},_0x19c12d,_0x50157a[_0x8ba8('0x51')]);return db['SmsMessage'][_0x8ba8('0x52')](_0x19c12d)['then'](handleEntityNotFound(_0x46ded5,null))['then'](respondWithResult(_0x46ded5,null))['catch'](handleError(_0x46ded5,null));};exports[_0x8ba8('0x53')]=function(_0x8d6497,_0x3caf20){return db[_0x8ba8('0x35')]['create'](_0x8d6497[_0x8ba8('0x54')],{})[_0x8ba8('0x1e')](respondWithResult(_0x3caf20,0xc9))[_0x8ba8('0x4d')](handleError(_0x3caf20,null));};exports[_0x8ba8('0x55')]=function(_0x42b850,_0x5b900c){if(_0x42b850[_0x8ba8('0x54')]['id']){delete _0x42b850['body']['id'];}return db['SmsMessage'][_0x8ba8('0x52')]({'where':{'id':_0x42b850['params']['id']}})[_0x8ba8('0x1e')](handleEntityNotFound(_0x5b900c,null))['then'](saveUpdates(_0x42b850[_0x8ba8('0x54')],null))[_0x8ba8('0x1e')](respondWithResult(_0x5b900c,null))[_0x8ba8('0x4d')](handleError(_0x5b900c,null));};exports[_0x8ba8('0x2f')]=function(_0x147339,_0x1975cf){return db[_0x8ba8('0x35')]['find']({'where':{'id':_0x147339[_0x8ba8('0x4f')]['id']}})[_0x8ba8('0x1e')](handleEntityNotFound(_0x1975cf,null))[_0x8ba8('0x1e')](removeEntity(_0x1975cf,null))[_0x8ba8('0x4d')](handleError(_0x1975cf,null));};exports[_0x8ba8('0x56')]=function(_0x5b4a52,_0x3a1160){return db['SmsMessage'][_0x8ba8('0x56')]()[_0x8ba8('0x1e')](respondWithResult(_0x3a1160,null))['catch'](handleError(_0x3a1160,null));};var interaction_log=require(_0x8ba8('0x11'))(_0x8ba8('0x57'));exports[_0x8ba8('0x58')]=function(_0x36dde3,_0x301bdf,_0x2da62d){var _0x586e1f={'agent':{},'channel':_0x8ba8('0x59')};if(_0x36dde3[_0x8ba8('0x54')]['id']){delete _0x36dde3[_0x8ba8('0x54')]['id'];}_0x36dde3[_0x8ba8('0x54')][_0x8ba8('0x5a')]=!![];_0x36dde3[_0x8ba8('0x54')][_0x8ba8('0x5b')]=moment()[_0x8ba8('0x5c')](_0x8ba8('0x5d'));_0x36dde3[_0x8ba8('0x54')][_0x8ba8('0x5e')]=_0x36dde3['body'][_0x8ba8('0x5e')]||_0x36dde3['user']['id'];_0x586e1f[_0x8ba8('0x5f')]['id']=_0x36dde3[_0x8ba8('0x54')][_0x8ba8('0x5e')];return db[_0x8ba8('0x35')]['find']({'where':{'id':_0x36dde3['params']['id'],'UserId':null}})[_0x8ba8('0x1e')](handleEntityNotFound(_0x301bdf,null))['then'](saveUpdates(_0x36dde3[_0x8ba8('0x54')],null))[_0x8ba8('0x1e')](function(_0x2931da){if(_0x2931da){_0x586e1f['message']=_0x2931da[_0x8ba8('0x60')]({'plain':!![]});return db[_0x8ba8('0x61')][_0x8ba8('0x52')]({'where':{'id':_0x2931da['SmsInteractionId']}});}return null;})[_0x8ba8('0x1e')](handleEntityNotFound(_0x301bdf,null))[_0x8ba8('0x1e')](function(_0x46b8f2){if(_0x46b8f2){return _0x46b8f2[_0x8ba8('0x55')]({'UserId':_0x36dde3[_0x8ba8('0x54')][_0x8ba8('0x5e')],'read1stAt':_['isNil'](_0x46b8f2[_0x8ba8('0x62')])?moment()[_0x8ba8('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x8ba8('0x1e')](function(_0x4a3e4d){if(_0x4a3e4d){_0x586e1f[_0x8ba8('0x63')]=_0x4a3e4d['get']({'plain':!![]});interaction_log[_0x8ba8('0x1f')](_0x8ba8('0x64'),_0x36dde3[_0x8ba8('0x65')]['id'],_0x36dde3[_0x8ba8('0x65')][_0x8ba8('0x31')],_0x36dde3['user'][_0x8ba8('0x66')],_0x586e1f[_0x8ba8('0x63')]['id'],_0x36dde3[_0x8ba8('0x54')]?JSON[_0x8ba8('0x24')](_0x36dde3[_0x8ba8('0x54')]):'null');return respondWithRpcPromise(_0x8ba8('0x67'),'acceptMessage',_0x586e1f);}return null;})[_0x8ba8('0x1e')](function(_0x2e7a63){var _0x3708=_0x8ba8('0x68')+_0x2e7a63[_0x8ba8('0x26')][_0x8ba8('0x69')];return db['sequelize'][_0x8ba8('0x38')](_0x3708,{'type':db[_0x8ba8('0x6a')][_0x8ba8('0x6b')][_0x8ba8('0x6c')],'raw':!![]})[_0x8ba8('0x1e')](function(_0x329e21){return _0x329e21;});})[_0x8ba8('0x1e')](function(_0x331b18){if(_0x331b18){_0x586e1f[_0x8ba8('0x26')][_0x8ba8('0x6d')]=_0x331b18[0x0];if(!_0x36dde3[_0x8ba8('0x54')][_0x8ba8('0x5e')])return;return db[_0x8ba8('0x6e')]['find']({'where':{'id':_0x36dde3[_0x8ba8('0x54')]['UserId'],'role':'agent'},'attributes':['id',_0x8ba8('0x31'),_0x8ba8('0x6f'),'email',_0x8ba8('0x70')],'raw':!![]});}return null;})[_0x8ba8('0x1e')](function(_0x1da7c){if(!_0x1da7c)return null;_0x586e1f[_0x8ba8('0x26')]['agent']=_0x1da7c;return _0x586e1f;})[_0x8ba8('0x1e')](function(_0x459e89){if(_0x459e89){if(_0x36dde3[_0x8ba8('0x54')]['manual']){_0x586e1f[_0x8ba8('0x26')][_0x8ba8('0x71')]=util[_0x8ba8('0x5c')](_0x8ba8('0x72'),_0x36dde3[_0x8ba8('0x65')][_0x8ba8('0x31')]);_0x586e1f['message'][_0x8ba8('0x73')]=_0x586e1f['channel'];_0x586e1f[_0x8ba8('0x26')]['event']='accept';return respondWithRpcPromise('EventManager',_0x8ba8('0x74'),{'event':'acceptmessage','message':_0x586e1f[_0x8ba8('0x26')]},client9002)[_0x8ba8('0x1e')](function(){return _0x586e1f;});}return _0x586e1f;}return null;})[_0x8ba8('0x1e')](respondWithResult(_0x301bdf,null))[_0x8ba8('0x4d')](handleError(_0x301bdf,null));};var interaction_log=require(_0x8ba8('0x11'))(_0x8ba8('0x57'));exports[_0x8ba8('0x2e')]=function(_0x255348,_0x1ce687,_0x3221fc){var _0x285d94={'agent':{},'channel':_0x8ba8('0x59')};if(_0x255348[_0x8ba8('0x54')]['id']){delete _0x255348['body']['id'];}_0x255348[_0x8ba8('0x54')]['UserId']=_0x255348[_0x8ba8('0x54')][_0x8ba8('0x5e')]||_0x255348[_0x8ba8('0x65')]['id'];_0x285d94[_0x8ba8('0x5f')]['id']=_0x255348[_0x8ba8('0x54')][_0x8ba8('0x5e')];return db[_0x8ba8('0x35')]['find']({'where':{'id':_0x255348[_0x8ba8('0x4f')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1ce687,null))['then'](function(_0x1471c1){if(_0x1471c1){_0x285d94[_0x8ba8('0x26')]=_0x1471c1[_0x8ba8('0x60')]({'plain':!![]});return db[_0x8ba8('0x61')][_0x8ba8('0x52')]({'where':{'id':_0x1471c1[_0x8ba8('0x75')]}});}return null;})['then'](handleEntityNotFound(_0x1ce687,null))[_0x8ba8('0x1e')](function(_0x582d97){if(_0x582d97){_0x285d94[_0x8ba8('0x63')]=_0x582d97[_0x8ba8('0x60')]({'plain':!![]});interaction_log[_0x8ba8('0x1f')](_0x8ba8('0x76'),_0x255348[_0x8ba8('0x65')]['id'],_0x255348[_0x8ba8('0x65')][_0x8ba8('0x31')],_0x255348['user'][_0x8ba8('0x66')],_0x285d94['interaction']['id'],_0x255348[_0x8ba8('0x54')]?JSON[_0x8ba8('0x24')](_0x255348[_0x8ba8('0x54')]):_0x8ba8('0x77'));return respondWithRpcPromise(_0x8ba8('0x78'),_0x8ba8('0x79'),_0x285d94);}return null;})[_0x8ba8('0x1e')](function(_0x3ae4b2){var _0x4ef409='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3ae4b2['message']['ContactId'];return db['sequelize']['query'](_0x4ef409,{'type':db['Sequelize'][_0x8ba8('0x6b')]['SELECT'],'raw':!![]})[_0x8ba8('0x1e')](function(_0x55f5cf){return _0x55f5cf;});})['then'](function(_0x280edc){if(_0x280edc){_0x285d94[_0x8ba8('0x26')][_0x8ba8('0x6d')]=_0x280edc[0x0];if(!_0x255348[_0x8ba8('0x54')][_0x8ba8('0x5e')])return;return db[_0x8ba8('0x6e')][_0x8ba8('0x52')]({'where':{'id':_0x255348[_0x8ba8('0x54')][_0x8ba8('0x5e')],'role':_0x8ba8('0x5f')},'attributes':['id',_0x8ba8('0x31'),_0x8ba8('0x6f'),_0x8ba8('0x7a'),_0x8ba8('0x70')],'raw':!![]});}return null;})[_0x8ba8('0x1e')](function(_0x1428e6){if(!_0x1428e6)return null;_0x285d94[_0x8ba8('0x26')][_0x8ba8('0x5f')]=_0x1428e6;return _0x285d94;})[_0x8ba8('0x1e')](function(_0x59bfd2){if(_0x59bfd2){_0x59bfd2[_0x8ba8('0x26')][_0x8ba8('0x71')]=util[_0x8ba8('0x5c')](_0x8ba8('0x72'),_0x255348[_0x8ba8('0x65')][_0x8ba8('0x31')]);_0x59bfd2['message'][_0x8ba8('0x73')]=_0x285d94[_0x8ba8('0x73')];_0x59bfd2[_0x8ba8('0x26')][_0x8ba8('0x7b')]=_0x8ba8('0x2e');respondWithRpcPromise(_0x8ba8('0x74'),_0x8ba8('0x74'),{'event':_0x8ba8('0x7c'),'message':_0x59bfd2[_0x8ba8('0x26')]},client9002);return _0x285d94;}return null;})[_0x8ba8('0x1e')](respondWithResult(_0x1ce687,null))[_0x8ba8('0x4d')](handleError(_0x1ce687,null));};exports[_0x8ba8('0x28')]=function(_0x1462a0,_0x10236f,_0x5505f){if(_0x1462a0[_0x8ba8('0x54')]['id']){delete _0x1462a0[_0x8ba8('0x54')]['id'];}var _0x5f31ec;return db['SmsMessage'][_0x8ba8('0x52')]({'where':{'id':_0x1462a0[_0x8ba8('0x4f')]['id']}})[_0x8ba8('0x1e')](handleEntityNotFound(_0x10236f,null))[_0x8ba8('0x1e')](function(_0x2cffeb){if(_0x2cffeb){_0x5f31ec=_0x2cffeb;return db['SmsAccount'][_0x8ba8('0x52')]({'where':{'id':_0x2cffeb[_0x8ba8('0x7d')]}});}})[_0x8ba8('0x1e')](handleEntityNotFound(_0x10236f,null))[_0x8ba8('0x1e')](function(_0x7b1798){if(_0x7b1798){logger[_0x8ba8('0x21')](_0x8ba8('0x22'),_0x8ba8('0x28'),_0x8ba8('0x7e'),_0x7b1798[_0x8ba8('0x48')],util[_0x8ba8('0x7f')](_0x1462a0[_0x8ba8('0x54')],{'showHidden':![],'depth':null}));switch(_0x7b1798[_0x8ba8('0x48')]){case _0x8ba8('0x80'):if(_0x1462a0[_0x8ba8('0x54')]['MessageSid']&&_0x1462a0[_0x8ba8('0x54')][_0x8ba8('0x81')]===_0x5f31ec['messageId']){return _0x5f31ec['update']({'read':!![]});}else{logger['error'](_0x8ba8('0x82'),'status','twilio',util[_0x8ba8('0x7f')](_0x1462a0[_0x8ba8('0x54')],{'showHidden':![],'depth':null}));}break;case _0x8ba8('0x83'):if(_0x1462a0[_0x8ba8('0x54')][_0x8ba8('0x84')]&&_0x1462a0['body'][_0x8ba8('0x84')]===_0x5f31ec[_0x8ba8('0x85')]&&_['indexOf']([_0x8ba8('0x86'),_0x8ba8('0x87')],_0x1462a0['body']['Status'])>=0x0){return _0x5f31ec[_0x8ba8('0x55')]({'read':!![]});}else{logger[_0x8ba8('0x25')](_0x8ba8('0x82'),_0x8ba8('0x28'),_0x8ba8('0x88'),util[_0x8ba8('0x7f')](_0x1462a0[_0x8ba8('0x54')],{'showHidden':![],'depth':null}));}break;case _0x8ba8('0x89'):var _0x57933a=_0x1462a0[_0x8ba8('0x54')]['results'][0x0];if(_0x57933a[_0x8ba8('0x28')][_0x8ba8('0x8a')]===_0x8ba8('0x8b')){return _0x5f31ec['update']({'read':!![]});}else{logger[_0x8ba8('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x8ba8('0x28'),'infobip',util[_0x8ba8('0x7f')](_0x1462a0['body'],{'showHidden':![],'depth':null}));}break;}return _0x5f31ec;}})['then'](respondWithResult(_0x10236f,null))['catch'](handleError(_0x10236f,null));};
\ No newline at end of file
+var _0x9536=['fieldName','model','query','keys','filters','intersection','attributes','fields','length','order','where','pick','filter','merge','type','VIRTUAL','SmsMessage','findAll','rows','show','includeAll','include','find','create','update','body','describe','sms-interactions','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','SmsInteractionId','isNil','read1stAt','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','email','internal','interface','SIP/%s','channel','event','EventManager','acceptmessage','params','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','motionChannel','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','MessageUUID','indexOf','delivered','infobip','results','groupName','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','save','destroy','stack','name','send','index','map','rawAttributes'];(function(_0x58c24a,_0x159665){var _0x50d1bc=function(_0x4ad730){while(--_0x4ad730){_0x58c24a['push'](_0x58c24a['shift']());}};_0x50d1bc(++_0x159665);}(_0x9536,0x179));var _0x6953=function(_0x4b4277,_0x22676f){_0x4b4277=_0x4b4277-0x0;var _0x1ff405=_0x9536[_0x4b4277];return _0x1ff405;};'use strict';var emlformat=require(_0x6953('0x0'));var rimraf=require(_0x6953('0x1'));var zipdir=require(_0x6953('0x2'));var jsonpatch=require(_0x6953('0x3'));var rp=require('request-promise');var moment=require(_0x6953('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6953('0x5'));var util=require(_0x6953('0x6'));var path=require(_0x6953('0x7'));var sox=require(_0x6953('0x8'));var csv=require(_0x6953('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6953('0xa'));var _=require(_0x6953('0xb'));var squel=require(_0x6953('0xc'));var crypto=require(_0x6953('0xd'));var jsforce=require(_0x6953('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6953('0x9'));var querystring=require(_0x6953('0xf'));var Papa=require(_0x6953('0x10'));var Redis=require('ioredis');var authService=require(_0x6953('0x11'));var qs=require(_0x6953('0x12'));var as=require(_0x6953('0x13'));var hardwareService=require(_0x6953('0x14'));var logger=require(_0x6953('0x15'))(_0x6953('0x16'));var utils=require(_0x6953('0x17'));var config=require(_0x6953('0x18'));var licenseUtil=require(_0x6953('0x19'));var db=require('../../mysqldb')['db'];config[_0x6953('0x1a')]=_['defaults'](config[_0x6953('0x1a')],{'host':_0x6953('0x1b'),'port':0x18eb});var socket=require(_0x6953('0x1c'))(new Redis(config[_0x6953('0x1a')]));require(_0x6953('0x1d'))[_0x6953('0x1e')](socket);var jayson=require(_0x6953('0x1f'));var client=jayson[_0x6953('0x20')][_0x6953('0x21')]({'port':0x232c});var client9002=jayson[_0x6953('0x20')][_0x6953('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x548473,_0x5f49db,_0x399b9b,_0x44e8a2){return new BPromise(function(_0x16b79b,_0x16251d){var _0x510d46=_0x44e8a2||client;return _0x510d46[_0x6953('0x22')](_0x548473,_0x399b9b)[_0x6953('0x23')](function(_0x4b43ae){logger[_0x6953('0x24')](_0x6953('0x25'),_0x5f49db,_0x6953('0x26'));logger[_0x6953('0x27')](_0x6953('0x28'),_0x5f49db,'request\x20sent',JSON[_0x6953('0x29')](_0x4b43ae));if(_0x4b43ae[_0x6953('0x2a')]){if(_0x4b43ae[_0x6953('0x2a')][_0x6953('0x2b')]===0x1f4){logger[_0x6953('0x2a')]('SmsMessage,\x20%s,\x20%s',_0x5f49db,_0x4b43ae[_0x6953('0x2a')][_0x6953('0x2c')]);return _0x16251d(_0x4b43ae['error'][_0x6953('0x2c')]);}logger[_0x6953('0x2a')](_0x6953('0x25'),_0x5f49db,_0x4b43ae[_0x6953('0x2a')]['message']);return _0x16b79b(_0x4b43ae[_0x6953('0x2a')][_0x6953('0x2c')]);}else{logger[_0x6953('0x24')]('SmsMessage,\x20%s,\x20%s',_0x5f49db,'request\x20sent');_0x16b79b(_0x4b43ae['result'][_0x6953('0x2c')]);}})[_0x6953('0x2d')](function(_0x550be4){logger[_0x6953('0x2a')]('SmsMessage,\x20%s,\x20%s',_0x5f49db,_0x550be4);_0x16251d(_0x550be4);});});}function respondWithStatusCode(_0x328f67,_0x2bf39b){_0x2bf39b=_0x2bf39b||0xcc;return function(_0xcdbce8){if(_0xcdbce8){return _0x328f67[_0x6953('0x2e')](_0x2bf39b);}return _0x328f67[_0x6953('0x2f')](_0x2bf39b)[_0x6953('0x30')]();};}function respondWithResult(_0x53d3dc,_0x3dd890){_0x3dd890=_0x3dd890||0xc8;return function(_0x3c1075){if(_0x3c1075){return _0x53d3dc['status'](_0x3dd890)[_0x6953('0x31')](_0x3c1075);}};}function respondWithFilteredResult(_0x4af39d,_0x173b3c){return function(_0x3b1175){if(_0x3b1175){var _0x426c7c=typeof _0x173b3c['offset']===_0x6953('0x32')&&typeof _0x173b3c[_0x6953('0x33')]===_0x6953('0x32');var _0x47ed2f=_0x3b1175[_0x6953('0x34')];var _0x132a71=_0x426c7c?0x0:_0x173b3c['offset'];var _0x4d856d=_0x426c7c?_0x3b1175[_0x6953('0x34')]:_0x173b3c[_0x6953('0x35')]+_0x173b3c[_0x6953('0x33')];var _0x2312e7;if(_0x4d856d>=_0x47ed2f){_0x4d856d=_0x47ed2f;_0x2312e7=0xc8;}else{_0x2312e7=0xce;}_0x4af39d[_0x6953('0x2f')](_0x2312e7);return _0x4af39d['set'](_0x6953('0x36'),_0x132a71+'-'+_0x4d856d+'/'+_0x47ed2f)['json'](_0x3b1175);}return null;};}function patchUpdates(_0x2d5e76){return function(_0x2e85c7){try{jsonpatch['apply'](_0x2e85c7,_0x2d5e76,!![]);}catch(_0x4a4d41){return BPromise[_0x6953('0x37')](_0x4a4d41);}return _0x2e85c7[_0x6953('0x38')]();};}function saveUpdates(_0x34d10b,_0x4ffa69){return function(_0x28cb92){if(_0x28cb92){return _0x28cb92['update'](_0x34d10b)['then'](function(_0x5eda70){return _0x5eda70;});}return null;};}function removeEntity(_0x5c4a8a,_0x1ef067){return function(_0x6c7862){if(_0x6c7862){return _0x6c7862[_0x6953('0x39')]()[_0x6953('0x23')](function(){_0x5c4a8a[_0x6953('0x2f')](0xcc)[_0x6953('0x30')]();});}};}function handleEntityNotFound(_0x4f6e06,_0x2b76a5){return function(_0x5a8197){if(!_0x5a8197){_0x4f6e06[_0x6953('0x2e')](0x194);}return _0x5a8197;};}function handleError(_0x5c9a4e,_0xc63da7){_0xc63da7=_0xc63da7||0x1f4;return function(_0x383e31){logger[_0x6953('0x2a')](_0x383e31[_0x6953('0x3a')]);if(_0x383e31['name']){delete _0x383e31[_0x6953('0x3b')];}_0x5c9a4e[_0x6953('0x2f')](_0xc63da7)[_0x6953('0x3c')](_0x383e31);};}exports[_0x6953('0x3d')]=function(_0x40b6ea,_0x475ea8){var _0x37b2b3={},_0x81428b={},_0xdf1944={'count':0x0,'rows':[]};var _0x44f206=_[_0x6953('0x3e')](db['SmsMessage'][_0x6953('0x3f')],function(_0x3c03ab){return{'name':_0x3c03ab[_0x6953('0x40')],'type':_0x3c03ab['type']['key']};});_0x81428b[_0x6953('0x41')]=_['map'](_0x44f206,'name');_0x81428b[_0x6953('0x42')]=_[_0x6953('0x43')](_0x40b6ea['query']);_0x81428b[_0x6953('0x44')]=_[_0x6953('0x45')](_0x81428b[_0x6953('0x41')],_0x81428b[_0x6953('0x42')]);_0x37b2b3[_0x6953('0x46')]=_[_0x6953('0x45')](_0x81428b['model'],qs[_0x6953('0x47')](_0x40b6ea[_0x6953('0x42')][_0x6953('0x47')]));_0x37b2b3[_0x6953('0x46')]=_0x37b2b3[_0x6953('0x46')][_0x6953('0x48')]?_0x37b2b3['attributes']:_0x81428b['model'];if(!_0x40b6ea[_0x6953('0x42')]['hasOwnProperty']('nolimit')){_0x37b2b3[_0x6953('0x33')]=qs[_0x6953('0x33')](_0x40b6ea[_0x6953('0x42')][_0x6953('0x33')]);_0x37b2b3[_0x6953('0x35')]=qs['offset'](_0x40b6ea['query'][_0x6953('0x35')]);}_0x37b2b3[_0x6953('0x49')]=qs['sort'](_0x40b6ea[_0x6953('0x42')]['sort']);_0x37b2b3[_0x6953('0x4a')]=qs[_0x6953('0x44')](_[_0x6953('0x4b')](_0x40b6ea[_0x6953('0x42')],_0x81428b['filters']),_0x44f206);if(_0x40b6ea[_0x6953('0x42')][_0x6953('0x4c')]){_0x37b2b3['where']=_[_0x6953('0x4d')](_0x37b2b3[_0x6953('0x4a')],{'$or':_[_0x6953('0x3e')](_0x44f206,function(_0x228139){if(_0x228139[_0x6953('0x4e')]!==_0x6953('0x4f')){var _0x13d1a6={};_0x13d1a6[_0x228139[_0x6953('0x3b')]]={'$like':'%'+_0x40b6ea[_0x6953('0x42')][_0x6953('0x4c')]+'%'};return _0x13d1a6;}})});}_0x37b2b3=_[_0x6953('0x4d')]({},_0x37b2b3,_0x40b6ea['options']);var _0x332223={'where':_0x37b2b3['where']};return db[_0x6953('0x50')][_0x6953('0x34')](_0x332223)[_0x6953('0x23')](function(_0x4c4954){_0xdf1944[_0x6953('0x34')]=_0x4c4954;if(_0x40b6ea[_0x6953('0x42')]['includeAll']){_0x37b2b3['include']=[{'all':!![]}];}return db[_0x6953('0x50')][_0x6953('0x51')](_0x37b2b3);})[_0x6953('0x23')](function(_0x36d75a){_0xdf1944[_0x6953('0x52')]=_0x36d75a;return _0xdf1944;})[_0x6953('0x23')](respondWithFilteredResult(_0x475ea8,_0x37b2b3))[_0x6953('0x2d')](handleError(_0x475ea8,null));};exports[_0x6953('0x53')]=function(_0x2baf90,_0x18e8ef){var _0x1de9f8={'raw':!![],'where':{'id':_0x2baf90['params']['id']}},_0x493a91={};_0x493a91[_0x6953('0x41')]=_[_0x6953('0x43')](db[_0x6953('0x50')][_0x6953('0x3f')]);_0x493a91[_0x6953('0x42')]=_[_0x6953('0x43')](_0x2baf90[_0x6953('0x42')]);_0x493a91[_0x6953('0x44')]=_[_0x6953('0x45')](_0x493a91['model'],_0x493a91['query']);_0x1de9f8['attributes']=_['intersection'](_0x493a91[_0x6953('0x41')],qs[_0x6953('0x47')](_0x2baf90[_0x6953('0x42')]['fields']));_0x1de9f8['attributes']=_0x1de9f8[_0x6953('0x46')][_0x6953('0x48')]?_0x1de9f8[_0x6953('0x46')]:_0x493a91['model'];if(_0x2baf90['query'][_0x6953('0x54')]){_0x1de9f8[_0x6953('0x55')]=[{'all':!![]}];}_0x1de9f8=_['merge']({},_0x1de9f8,_0x2baf90['options']);return db[_0x6953('0x50')][_0x6953('0x56')](_0x1de9f8)[_0x6953('0x23')](handleEntityNotFound(_0x18e8ef,null))[_0x6953('0x23')](respondWithResult(_0x18e8ef,null))[_0x6953('0x2d')](handleError(_0x18e8ef,null));};exports['create']=function(_0x76c0f4,_0x15ff2d){return db['SmsMessage'][_0x6953('0x57')](_0x76c0f4['body'],{})[_0x6953('0x23')](respondWithResult(_0x15ff2d,0xc9))[_0x6953('0x2d')](handleError(_0x15ff2d,null));};exports[_0x6953('0x58')]=function(_0xceaa28,_0x4f24bf){if(_0xceaa28[_0x6953('0x59')]['id']){delete _0xceaa28[_0x6953('0x59')]['id'];}return db[_0x6953('0x50')]['find']({'where':{'id':_0xceaa28['params']['id']}})[_0x6953('0x23')](handleEntityNotFound(_0x4f24bf,null))[_0x6953('0x23')](saveUpdates(_0xceaa28[_0x6953('0x59')],null))['then'](respondWithResult(_0x4f24bf,null))['catch'](handleError(_0x4f24bf,null));};exports[_0x6953('0x39')]=function(_0x2b90f7,_0x4c0f1c){return db[_0x6953('0x50')][_0x6953('0x56')]({'where':{'id':_0x2b90f7['params']['id']}})[_0x6953('0x23')](handleEntityNotFound(_0x4c0f1c,null))[_0x6953('0x23')](removeEntity(_0x4c0f1c,null))[_0x6953('0x2d')](handleError(_0x4c0f1c,null));};exports[_0x6953('0x5a')]=function(_0x1e4e2c,_0x5e4b89){return db[_0x6953('0x50')][_0x6953('0x5a')]()[_0x6953('0x23')](respondWithResult(_0x5e4b89,null))['catch'](handleError(_0x5e4b89,null));};var interaction_log=require('../../config/logger')(_0x6953('0x5b'));exports[_0x6953('0x5c')]=function(_0x33dbe4,_0x2bd209,_0x2659c3){var _0x4cd3a8={'agent':{},'channel':_0x6953('0x5d')};if(_0x33dbe4[_0x6953('0x59')]['id']){delete _0x33dbe4[_0x6953('0x59')]['id'];}_0x33dbe4[_0x6953('0x59')][_0x6953('0x5e')]=!![];_0x33dbe4[_0x6953('0x59')][_0x6953('0x5f')]=moment()[_0x6953('0x60')](_0x6953('0x61'));_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')]=_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')]||_0x33dbe4['user']['id'];_0x4cd3a8[_0x6953('0x63')]['id']=_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')];return db[_0x6953('0x50')][_0x6953('0x56')]({'where':{'id':_0x33dbe4['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2bd209,null))[_0x6953('0x23')](saveUpdates(_0x33dbe4['body'],null))[_0x6953('0x23')](function(_0x2b5de2){if(_0x2b5de2){_0x4cd3a8[_0x6953('0x2c')]=_0x2b5de2[_0x6953('0x64')]({'plain':!![]});return db['SmsInteraction'][_0x6953('0x56')]({'where':{'id':_0x2b5de2[_0x6953('0x65')]}});}return null;})[_0x6953('0x23')](handleEntityNotFound(_0x2bd209,null))[_0x6953('0x23')](function(_0x1c3190){if(_0x1c3190){return _0x1c3190[_0x6953('0x58')]({'UserId':_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')],'read1stAt':_[_0x6953('0x66')](_0x1c3190[_0x6953('0x67')])?moment()[_0x6953('0x60')](_0x6953('0x61')):undefined});}return null;})[_0x6953('0x23')](function(_0x425833){if(_0x425833){_0x4cd3a8[_0x6953('0x68')]=_0x425833['get']({'plain':!![]});interaction_log[_0x6953('0x24')](_0x6953('0x69'),_0x33dbe4[_0x6953('0x6a')]['id'],_0x33dbe4[_0x6953('0x6a')][_0x6953('0x3b')],_0x33dbe4[_0x6953('0x6a')][_0x6953('0x6b')],_0x4cd3a8['interaction']['id'],_0x33dbe4[_0x6953('0x59')]?JSON[_0x6953('0x29')](_0x33dbe4['body']):_0x6953('0x6c'));return respondWithRpcPromise(_0x6953('0x6d'),_0x6953('0x6e'),_0x4cd3a8);}return null;})['then'](function(_0x4cb8a4){var _0x1ea573=_0x6953('0x6f')+_0x4cb8a4[_0x6953('0x2c')][_0x6953('0x70')];return db[_0x6953('0x71')][_0x6953('0x42')](_0x1ea573,{'type':db[_0x6953('0x72')][_0x6953('0x73')][_0x6953('0x74')],'raw':!![]})['then'](function(_0x78eb85){return _0x78eb85;});})[_0x6953('0x23')](function(_0x1b641e){if(_0x1b641e){_0x4cd3a8[_0x6953('0x2c')]['contact']=_0x1b641e[0x0];if(!_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')])return;return db[_0x6953('0x75')]['find']({'where':{'id':_0x33dbe4[_0x6953('0x59')][_0x6953('0x62')],'role':_0x6953('0x63')},'attributes':['id',_0x6953('0x3b'),'fullname',_0x6953('0x76'),_0x6953('0x77')],'raw':!![]});}return null;})[_0x6953('0x23')](function(_0x2dcef9){if(!_0x2dcef9)return null;_0x4cd3a8['message']['agent']=_0x2dcef9;return _0x4cd3a8;})[_0x6953('0x23')](function(_0x2310b2){if(_0x2310b2){if(_0x33dbe4['body']['manual']){_0x4cd3a8[_0x6953('0x2c')][_0x6953('0x78')]=util[_0x6953('0x60')](_0x6953('0x79'),_0x33dbe4['user'][_0x6953('0x3b')]);_0x4cd3a8[_0x6953('0x2c')]['channel']=_0x4cd3a8[_0x6953('0x7a')];_0x4cd3a8[_0x6953('0x2c')]['motionChannel']=_0x4cd3a8['channel'];_0x4cd3a8['message'][_0x6953('0x7b')]=_0x6953('0x5c');return respondWithRpcPromise(_0x6953('0x7c'),_0x6953('0x7c'),{'event':_0x6953('0x7d'),'message':_0x4cd3a8[_0x6953('0x2c')]},client9002)[_0x6953('0x23')](function(){return _0x4cd3a8;});}return _0x4cd3a8;}return null;})[_0x6953('0x23')](respondWithResult(_0x2bd209,null))['catch'](handleError(_0x2bd209,null));};var interaction_log=require(_0x6953('0x15'))(_0x6953('0x5b'));exports[_0x6953('0x37')]=function(_0x35ad50,_0xee6759,_0x43ad3d){var _0x481102={'agent':{},'channel':_0x6953('0x5d')};if(_0x35ad50['body']['id']){delete _0x35ad50[_0x6953('0x59')]['id'];}_0x35ad50['body'][_0x6953('0x62')]=_0x35ad50[_0x6953('0x59')][_0x6953('0x62')]||_0x35ad50['user']['id'];_0x481102[_0x6953('0x63')]['id']=_0x35ad50[_0x6953('0x59')][_0x6953('0x62')];return db[_0x6953('0x50')][_0x6953('0x56')]({'where':{'id':_0x35ad50[_0x6953('0x7e')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xee6759,null))[_0x6953('0x23')](function(_0x15794b){if(_0x15794b){_0x481102[_0x6953('0x2c')]=_0x15794b[_0x6953('0x64')]({'plain':!![]});return db[_0x6953('0x7f')][_0x6953('0x56')]({'where':{'id':_0x15794b[_0x6953('0x65')]}});}return null;})[_0x6953('0x23')](handleEntityNotFound(_0xee6759,null))[_0x6953('0x23')](function(_0x216b92){if(_0x216b92){_0x481102[_0x6953('0x68')]=_0x216b92['get']({'plain':!![]});interaction_log[_0x6953('0x24')](_0x6953('0x80'),_0x35ad50[_0x6953('0x6a')]['id'],_0x35ad50[_0x6953('0x6a')][_0x6953('0x3b')],_0x35ad50[_0x6953('0x6a')][_0x6953('0x6b')],_0x481102[_0x6953('0x68')]['id'],_0x35ad50[_0x6953('0x59')]?JSON[_0x6953('0x29')](_0x35ad50[_0x6953('0x59')]):'null');return respondWithRpcPromise(_0x6953('0x81'),_0x6953('0x82'),_0x481102);}return null;})[_0x6953('0x23')](function(_0x5a74ab){var _0x51f1f5='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5a74ab['message'][_0x6953('0x70')];return db[_0x6953('0x71')][_0x6953('0x42')](_0x51f1f5,{'type':db[_0x6953('0x72')][_0x6953('0x73')][_0x6953('0x74')],'raw':!![]})[_0x6953('0x23')](function(_0x5e34b6){return _0x5e34b6;});})[_0x6953('0x23')](function(_0x3113c0){if(_0x3113c0){_0x481102[_0x6953('0x2c')]['contact']=_0x3113c0[0x0];if(!_0x35ad50[_0x6953('0x59')][_0x6953('0x62')])return;return db['User'][_0x6953('0x56')]({'where':{'id':_0x35ad50['body']['UserId'],'role':_0x6953('0x63')},'attributes':['id','name','fullname',_0x6953('0x76'),_0x6953('0x77')],'raw':!![]});}return null;})[_0x6953('0x23')](function(_0x512384){if(!_0x512384)return null;_0x481102[_0x6953('0x2c')][_0x6953('0x63')]=_0x512384;return _0x481102;})['then'](function(_0x30de2c){if(_0x30de2c){_0x30de2c[_0x6953('0x2c')][_0x6953('0x78')]=util[_0x6953('0x60')](_0x6953('0x79'),_0x35ad50[_0x6953('0x6a')][_0x6953('0x3b')]);_0x30de2c[_0x6953('0x2c')][_0x6953('0x7a')]=_0x481102['channel'];_0x30de2c[_0x6953('0x2c')][_0x6953('0x83')]=_0x481102['channel'];_0x30de2c[_0x6953('0x2c')][_0x6953('0x7b')]=_0x6953('0x37');respondWithRpcPromise(_0x6953('0x7c'),_0x6953('0x7c'),{'event':_0x6953('0x84'),'message':_0x30de2c[_0x6953('0x2c')]},client9002);return _0x481102;}return null;})['then'](respondWithResult(_0xee6759,null))[_0x6953('0x2d')](handleError(_0xee6759,null));};exports[_0x6953('0x2f')]=function(_0x1481a1,_0x12e2ec,_0x29e68e){if(_0x1481a1[_0x6953('0x59')]['id']){delete _0x1481a1[_0x6953('0x59')]['id'];}var _0x3444cb;return db[_0x6953('0x50')]['find']({'where':{'id':_0x1481a1[_0x6953('0x7e')]['id']}})['then'](handleEntityNotFound(_0x12e2ec,null))[_0x6953('0x23')](function(_0x4ab5bb){if(_0x4ab5bb){_0x3444cb=_0x4ab5bb;return db[_0x6953('0x85')][_0x6953('0x56')]({'where':{'id':_0x4ab5bb[_0x6953('0x86')]}});}})[_0x6953('0x23')](handleEntityNotFound(_0x12e2ec,null))[_0x6953('0x23')](function(_0x5d56db){if(_0x5d56db){logger[_0x6953('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x6953('0x2f'),_0x6953('0x87'),_0x5d56db[_0x6953('0x4e')],util[_0x6953('0x88')](_0x1481a1['body'],{'showHidden':![],'depth':null}));switch(_0x5d56db[_0x6953('0x4e')]){case _0x6953('0x89'):if(_0x1481a1[_0x6953('0x59')][_0x6953('0x8a')]&&_0x1481a1[_0x6953('0x59')][_0x6953('0x8a')]===_0x3444cb[_0x6953('0x8b')]){return _0x3444cb['update']({'read':!![]});}else{logger[_0x6953('0x2a')](_0x6953('0x8c'),_0x6953('0x2f'),_0x6953('0x89'),util[_0x6953('0x88')](_0x1481a1['body'],{'showHidden':![],'depth':null}));}break;case'plivo':if(_0x1481a1['body'][_0x6953('0x8d')]&&_0x1481a1[_0x6953('0x59')][_0x6953('0x8d')]===_0x3444cb['messageId']&&_[_0x6953('0x8e')](['sent',_0x6953('0x8f')],_0x1481a1[_0x6953('0x59')]['Status'])>=0x0){return _0x3444cb[_0x6953('0x58')]({'read':!![]});}else{logger['error'](_0x6953('0x8c'),'status','plivio',util[_0x6953('0x88')](_0x1481a1[_0x6953('0x59')],{'showHidden':![],'depth':null}));}break;case _0x6953('0x90'):var _0x14ad16=_0x1481a1[_0x6953('0x59')][_0x6953('0x91')][0x0];if(_0x14ad16[_0x6953('0x2f')][_0x6953('0x92')]==='DELIVERED'){return _0x3444cb['update']({'read':!![]});}else{logger['error'](_0x6953('0x8c'),_0x6953('0x2f'),_0x6953('0x90'),util[_0x6953('0x88')](_0x1481a1[_0x6953('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x3444cb;}})['then'](respondWithResult(_0x12e2ec,null))[_0x6953('0x2d')](handleError(_0x12e2ec,null));};
\ No newline at end of file
index f2ddba2..73a3d92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61cc=['setMaxListeners','save','update','emit','hook','events','../../mysqldb'];(function(_0x329437,_0x1de73a){var _0x3789d9=function(_0x37832e){while(--_0x37832e){_0x329437['push'](_0x329437['shift']());}};_0x3789d9(++_0x1de73a);}(_0x61cc,0xbb));var _0xc61c=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x61cc[_0x501510];return _0x1e6ee5;};'use strict';var EventEmitter=require(_0xc61c('0x0'));var SmsMessage=require(_0xc61c('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xc61c('0x2')](0x0);var events={'afterCreate':_0xc61c('0x3'),'afterUpdate':_0xc61c('0x4'),'afterDestroy':'remove'};function emitEvent(_0x443d9a){return function(_0x39c066,_0x27dd78,_0x35eaa5){SmsMessageEvents[_0xc61c('0x5')](_0x443d9a+':'+_0x39c066['id'],_0x39c066);SmsMessageEvents[_0xc61c('0x5')](_0x443d9a,_0x39c066);_0x35eaa5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0xc61c('0x6')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0x8a5d=['save','update','emit','hasOwnProperty','hook','events','../../mysqldb','SmsMessage','setMaxListeners'];(function(_0x3f303a,_0xd5ce35){var _0xda7e54=function(_0x1e8107){while(--_0x1e8107){_0x3f303a['push'](_0x3f303a['shift']());}};_0xda7e54(++_0xd5ce35);}(_0x8a5d,0x12e));var _0xd8a5=function(_0x146be0,_0x39a85e){_0x146be0=_0x146be0-0x0;var _0x1bcc25=_0x8a5d[_0x146be0];return _0x1bcc25;};'use strict';var EventEmitter=require(_0xd8a5('0x0'));var SmsMessage=require(_0xd8a5('0x1'))['db'][_0xd8a5('0x2')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xd8a5('0x3')](0x0);var events={'afterCreate':_0xd8a5('0x4'),'afterUpdate':_0xd8a5('0x5'),'afterDestroy':'remove'};function emitEvent(_0x372649){return function(_0x3a9a07,_0x452964,_0x475903){SmsMessageEvents['emit'](_0x372649+':'+_0x3a9a07['id'],_0x3a9a07);SmsMessageEvents[_0xd8a5('0x6')](_0x372649,_0x3a9a07);_0x475903(null);};}for(var e in events){if(events[_0xd8a5('0x7')](e)){var event=events[e];SmsMessage[_0xd8a5('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index 0ff73ad..72bd436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38c3=['https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','http_code','data','head','message_id','clickSend','plivo','authId','/status?token=','https://api.plivo.com/v1/Account/%s/Message/','base64','message_uuid','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','IBSSO\x20','infobip','crypto','login','text','timestamp','keys','sort','length','apiKey','createHash','md5','digest','hex','signature=','GET','/external/get/send.php?','id_sms','csc','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','Missing\x20parameters:\x20apiKey','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','Bearer\x20','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','get','toLowerCase','out','isNil','UserId','SmsInteraction','findOne','SmsInteractionId','then','update','createdAt','direction','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','messages','create','phone','remote','/api/sms/messages/','token','sid','catch','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','split','sms','internal_order_id','deliveryReport','read','inspect','Missing\x20parameters:\x20username,\x20password','connectel','senderString','POST','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s'];(function(_0x225a29,_0x12b4c3){var _0x371e1d=function(_0x376b93){while(--_0x376b93){_0x225a29['push'](_0x225a29['shift']());}};_0x371e1d(++_0x12b4c3);}(_0x38c3,0x13d));var _0x338c=function(_0x3a2225,_0xb6600){_0x3a2225=_0x3a2225-0x0;var _0x5c8040=_0x38c3[_0x3a2225];return _0x5c8040;};'use strict';var _=require(_0x338c('0x0'));var util=require(_0x338c('0x1'));var logger=require('../../config/logger')(_0x338c('0x2'));var moment=require(_0x338c('0x3'));var BPromise=require(_0x338c('0x4'));var rp=require(_0x338c('0x5'));var fs=require('fs');var path=require(_0x338c('0x6'));var rimraf=require(_0x338c('0x7'));var config=require('../../config/environment');var attributes=require(_0x338c('0x8'));module['exports']=function(_0x41c16d,_0x28eeb3){return _0x41c16d['define'](_0x338c('0x9'),attributes,{'tableName':_0x338c('0xa'),'paranoid':![],'indexes':[{'name':_0x338c('0xb'),'fields':['messageId']},{'name':_0x338c('0xc'),'fields':[_0x338c('0xd')],'type':_0x338c('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x367047,_0x372839,_0x2861b0){var _0x12cebe=_0x41c16d['models'];var _0x50ba99=_0x367047[_0x338c('0xf')]({'plain':!![]});if(_0x50ba99['direction'][_0x338c('0x10')]()==='in'||_0x50ba99['direction'][_0x338c('0x10')]()===_0x338c('0x11')&&!_0x50ba99['secret']&&!_[_0x338c('0x12')](_0x50ba99[_0x338c('0x13')])){_0x12cebe[_0x338c('0x14')][_0x338c('0x15')]({'where':{'id':_0x50ba99[_0x338c('0x16')]}})[_0x338c('0x17')](function(_0x11928e){if(_0x11928e){_0x11928e[_0x338c('0x18')]({'lastMsgAt':_0x50ba99[_0x338c('0x19')],'lastMsgDirection':_0x50ba99[_0x338c('0x1a')]['toLowerCase']()});}})['catch'](function(_0x26a6dd){console[_0x338c('0x1b')](_0x26a6dd);});}if(_0x50ba99[_0x338c('0x1a')]===_0x338c('0x11')&&!_0x50ba99['secret']){var _0x22a70b;_0x12cebe[_0x338c('0x1c')][_0x338c('0x1d')]({'where':{'id':_0x50ba99[_0x338c('0x1e')]},'raw':!![]})[_0x338c('0x17')](function(_0x3c988a){_0x22a70b=_0x3c988a;if(_0x22a70b&&_0x22a70b[_0x338c('0x1f')]){switch(_0x22a70b[_0x338c('0x1f')]){case _0x338c('0x20'):var _0x7221f9=require(_0x338c('0x20'));if(_0x22a70b[_0x338c('0x21')]&&_0x22a70b[_0x338c('0x22')]&&_0x22a70b['phone']){var _0x4efa92=new _0x7221f9(_0x22a70b[_0x338c('0x21')],_0x22a70b[_0x338c('0x22')]);_0x4efa92[_0x338c('0x23')][_0x338c('0x24')]({'body':_0x50ba99['body'],'to':_0x50ba99[_0x338c('0x25')],'from':_0x22a70b['phone'],'statusCallback':_0x22a70b[_0x338c('0x26')]+_0x338c('0x27')+_0x50ba99['id']+'/status?token='+_0x22a70b[_0x338c('0x28')]})[_0x338c('0x17')](function(_0x5bb7bf){if(_0x5bb7bf[_0x338c('0x29')]){return _0x367047[_0x338c('0x18')]({'messageId':_0x5bb7bf[_0x338c('0x29')]});}})[_0x338c('0x2a')](function(_0x26013d){logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x20'),util['inspect'](_0x26013d,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),'twilio',_0x338c('0x2d'));}break;case _0x338c('0x2e'):var _0x4f1d0a=_0x338c('0x2f');if(_0x22a70b[_0x338c('0x30')]&&_0x22a70b[_0x338c('0x31')]){var _0x37e72a={'recipient':[_0x50ba99[_0x338c('0x25')]],'message':_0x50ba99[_0x338c('0xd')],'message_type':_0x22a70b['smsMethod']};if(_0x22a70b['smsMethod']&&_0x22a70b[_0x338c('0x32')]!=='SI'){_0x37e72a[_0x338c('0x33')]=_0x22a70b[_0x338c('0x25')];}var _0xa581b3={'url':_0x4f1d0a+_0x338c('0x34')+_0x22a70b['username']+'&password='+_0x22a70b[_0x338c('0x31')],'method':'GET'};rp(_0xa581b3)[_0x338c('0x17')](function(_0xe32c1c){var _0x361c70=_0xe32c1c[_0x338c('0x35')](';');var _0x19d8c4={'user_key':_0x361c70[0x0],'session_key':_0x361c70[0x1]};_0xa581b3={'url':_0x4f1d0a+_0x338c('0x36'),'method':'POST','headers':{'user_key':_0x19d8c4['user_key'],'Session_key':_0x19d8c4['session_key']},'json':!![],'body':_0x37e72a};return rp(_0xa581b3);})[_0x338c('0x17')](function(_0x1c1dc5){if(_0x1c1dc5['total_sent']>=0x1){var _0x1656c6={'messageId':_0x1c1dc5[_0x338c('0x37')]};if(_0x22a70b[_0x338c('0x32')]!=='GP'||!_0x22a70b[_0x338c('0x38')]){_0x1656c6[_0x338c('0x39')]=!![];}return _0x367047[_0x338c('0x18')](_0x1656c6);}else{return logger['error'](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x2e'),util['inspect'](_0x1c1dc5,{'showHidden':![],'depth':null}));}})[_0x338c('0x2a')](function(_0x358d4d){return logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x2e'),util[_0x338c('0x3a')](_0x358d4d,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),_0x338c('0x2e'),_0x338c('0x3b'));}break;case _0x338c('0x3c'):if(_0x22a70b['authToken']){var _0x3930f0={'recipient':_0x50ba99[_0x338c('0x25')],'message':_0x50ba99[_0x338c('0xd')],'sender':_0x22a70b[_0x338c('0x3d')]||_0x22a70b['phone'],'authorization':_0x22a70b[_0x338c('0x22')]};var _0x372839={'method':_0x338c('0x3e'),'uri':_0x338c('0x3f'),'body':_0x3930f0,'json':!![]};rp(_0x372839)[_0x338c('0x17')](function(_0x38e891){var _0xba3b1b={'messageId':_0x38e891[_0x338c('0x40')]};if(!_0x22a70b[_0x338c('0x38')]){_0xba3b1b[_0x338c('0x39')]=!![];}return _0x367047[_0x338c('0x18')](_0xba3b1b);})[_0x338c('0x2a')](function(_0x1cdc14){logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x3c'),util[_0x338c('0x3a')](_0x1cdc14,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x3c'),_0x338c('0x41'));}break;case _0x338c('0x42'):if(_0x22a70b[_0x338c('0x30')]&&_0x22a70b[_0x338c('0x31')]){var _0x3930f0={'messages':[{'source':_0x338c('0x43'),'to':_0x50ba99['phone'],'body':_0x50ba99[_0x338c('0xd')],'from':_0x22a70b[_0x338c('0x3d')]||_0x22a70b[_0x338c('0x25')]}]};var _0x2ead0d=util[_0x338c('0x44')](_0x338c('0x45'),_0x22a70b[_0x338c('0x30')],_0x22a70b[_0x338c('0x31')]);var _0x372839={'method':_0x338c('0x3e'),'uri':_0x338c('0x46'),'body':_0x3930f0,'headers':{'Authorization':util[_0x338c('0x44')](_0x338c('0x47'),new Buffer(_0x2ead0d)[_0x338c('0x48')]('base64'))},'json':!![]};rp(_0x372839)[_0x338c('0x17')](function(_0x146608){if(_0x146608[_0x338c('0x49')]>=0xc8&&_0x146608['http_code']<=0xce){if(_0x146608[_0x338c('0x4a')]&&_0x146608[_0x338c('0x4a')]['queued_count']>0x0){var _0x7a5339=_[_0x338c('0x4b')](_0x146608[_0x338c('0x4a')][_0x338c('0x23')]);var _0x53c67f={'messageId':_0x7a5339[_0x338c('0x4c')]};if(!_0x22a70b[_0x338c('0x38')]){_0x53c67f['read']=!![];}return _0x367047[_0x338c('0x18')](_0x53c67f);}else{logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x4d'),util[_0x338c('0x3a')](_0x146608,{'showHidden':![],'depth':null}));}}else{logger[_0x338c('0x1b')](_0x338c('0x2b'),'afterCreate',_0x338c('0x4d'),util[_0x338c('0x3a')](_0x146608,{'showHidden':![],'depth':null}));}})[_0x338c('0x2a')](function(_0x3e8b39){logger['error'](_0x338c('0x2b'),_0x338c('0x2c'),'clickSend',util['inspect'](_0x3e8b39,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x4d'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x338c('0x4e'):if(_0x22a70b[_0x338c('0x4f')]&&_0x22a70b['authToken']){var _0x3930f0={'dst':_0x50ba99[_0x338c('0x25')],'text':_0x50ba99[_0x338c('0xd')],'src':_0x22a70b['senderString']||_0x22a70b[_0x338c('0x25')],'url':_0x22a70b[_0x338c('0x26')]+'/api/sms/messages/'+_0x50ba99['id']+_0x338c('0x50')+_0x22a70b['token']};var _0x2ead0d=util[_0x338c('0x44')](_0x338c('0x45'),_0x22a70b[_0x338c('0x4f')],_0x22a70b[_0x338c('0x22')]);var _0x372839={'method':_0x338c('0x3e'),'uri':util[_0x338c('0x44')](_0x338c('0x51'),_0x22a70b[_0x338c('0x4f')]),'body':_0x3930f0,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x2ead0d)[_0x338c('0x48')](_0x338c('0x52')))},'json':!![]};rp(_0x372839)[_0x338c('0x17')](function(_0x31630e){var _0x40459b={'messageId':_0x31630e[_0x338c('0x53')][0x0]};return _0x367047[_0x338c('0x18')](_0x40459b);})[_0x338c('0x2a')](function(_0x24b6c1){logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),'plivo',util[_0x338c('0x3a')](_0x24b6c1,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),_0x338c('0x4e'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x22a70b['username']&&_0x22a70b[_0x338c('0x31')]){if(_0x22a70b[_0x338c('0x54')]){var _0x1bbea2={'method':_0x338c('0x3e'),'uri':_0x22a70b[_0x338c('0x54')]+_0x338c('0x55'),'body':{'username':_0x22a70b['username'],'password':_0x22a70b['password']},'json':!![]};return rp(_0x1bbea2)[_0x338c('0x17')](function(_0x4b9d55){var _0x24c14d={'method':'POST','uri':_0x22a70b[_0x338c('0x54')]+_0x338c('0x56'),'body':{'messages':[{'from':_0x22a70b[_0x338c('0x25')],'destinations':[{'to':_0x50ba99[_0x338c('0x25')]}],'text':_0x50ba99[_0x338c('0xd')],'notifyUrl':_0x22a70b[_0x338c('0x26')]+_0x338c('0x27')+_0x50ba99['id']+_0x338c('0x50')+_0x22a70b[_0x338c('0x28')],'notifyContentType':_0x338c('0x57'),'callbackData':_0x22a70b[_0x338c('0x25')]+';'+_0x50ba99[_0x338c('0xd')]}]},'headers':{'Authorization':_0x338c('0x58')+_0x4b9d55['token']},'json':!![]};return rp(_0x24c14d)['then'](function(_0x2d127b){if(_0x2d127b[_0x338c('0x23')]){var _0x211768={'messageId':_0x2d127b[_0x338c('0x23')][0x0][_0x338c('0xb')]};if(!_0x22a70b[_0x338c('0x38')]){_0x211768[_0x338c('0x39')]=!![];}return _0x367047[_0x338c('0x18')](_0x211768);}else{return logger[_0x338c('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x338c('0x59'),util['inspect'](_0x2d127b,{'showHidden':![],'depth':null}));}});})[_0x338c('0x2a')](function(_0x31b057){return logger['error'](_0x338c('0x2b'),_0x338c('0x2c'),'infobip',util['inspect'](_0x31b057,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x59'),'Missing\x20parameters:\x20base_url');}}else{logger['error'](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x59'),_0x338c('0x3b'));}break;case'csc':var _0x182df7=require(_0x338c('0x5a'));if(_0x22a70b['apiKey']){var _0x5ce6b2={};_0x5ce6b2[_0x338c('0x5b')]=_0x22a70b[_0x338c('0x30')];_0x5ce6b2[_0x338c('0x25')]=_0x50ba99[_0x338c('0x25')];_0x5ce6b2[_0x338c('0x33')]=_0x22a70b[_0x338c('0x25')];_0x5ce6b2[_0x338c('0x5c')]=_0x50ba99[_0x338c('0xd')];_0x5ce6b2[_0x338c('0x5d')]=+new Date();var _0x375d87='';var _0x220500='';var _0x41f371=Object[_0x338c('0x5e')](_0x5ce6b2);_0x41f371[_0x338c('0x5f')]();for(var _0x4d0d05=0x0;_0x4d0d05<_0x41f371[_0x338c('0x60')];_0x4d0d05++){if(_0x375d87!=''){_0x375d87+='&';}_0x375d87+=_0x41f371[_0x4d0d05]+'='+encodeURIComponent(_0x5ce6b2[_0x41f371[_0x4d0d05]]);_0x220500+=_0x5ce6b2[_0x41f371[_0x4d0d05]];}_0x220500+=_0x22a70b[_0x338c('0x61')];_0x220500=_0x182df7[_0x338c('0x62')](_0x338c('0x63'))['update'](_0x220500)[_0x338c('0x64')](_0x338c('0x65'));if(_0x375d87!==''){_0x375d87+='&';}_0x375d87+=_0x338c('0x66')+_0x220500;var _0xa581b3={'method':_0x338c('0x67'),'uri':_0x22a70b[_0x338c('0x54')]+_0x338c('0x68')+_0x375d87,'json':!![]};return rp(_0xa581b3)[_0x338c('0x17')](function(_0xd3802e){var _0x17bb47=Object[_0x338c('0x5e')](_0xd3802e);if(_0xd3802e[_0x17bb47[0x0]][_0x338c('0x1b')]&&parseInt(_0xd3802e[_0x17bb47[0x0]][_0x338c('0x1b')])===0x0){var _0x4eb69d={'messageId':_0xd3802e[_0x17bb47[0x0]][_0x338c('0x69')]};if(!_0x22a70b[_0x338c('0x38')]){_0x4eb69d[_0x338c('0x39')]=!![];}return _0x367047['update'](_0x4eb69d);}else{return logger['error'](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x6a'),util[_0x338c('0x3a')](_0xd3802e['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x24cf9c){return logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),'csc',util[_0x338c('0x3a')](_0x24cf9c,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),_0x338c('0x6a'),'Missing\x20parameters:\x20apiKey');}break;case _0x338c('0x6b'):if(_0x22a70b[_0x338c('0x61')]){var _0x3eb1b1={'method':'POST','uri':_0x338c('0x6c'),'headers':{'Authorization':_0x22a70b[_0x338c('0x61')]},'body':{'content':_0x50ba99['body'],'to':[_0x50ba99[_0x338c('0x25')]],'from':_0x22a70b[_0x338c('0x25')],'binary':![],'clientMessageId':_0x338c('0x6d'),'charset':_0x338c('0x6e')},'json':!![]};rp(_0x3eb1b1)[_0x338c('0x17')](function(_0x19c583){if(!_0x19c583[_0x338c('0x1b')]){var _0x10f59d={'messageId':_0x19c583['messages'][0x0][_0x338c('0x6f')]};if(!_0x22a70b[_0x338c('0x38')]){_0x10f59d['read']=!![];}return _0x367047['update'](_0x10f59d);}else{return logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x6b'),util['inspect'](_0x19c583[_0x338c('0x1b')],{'showHidden':![],'depth':null}));}})[_0x338c('0x2a')](function(_0xa6e600){return logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),'clickatell',util[_0x338c('0x3a')](_0xa6e600,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),_0x338c('0x6b'),_0x338c('0x70'));}break;case _0x338c('0x71'):if(_0x22a70b[_0x338c('0x30')]&&_0x22a70b['password']){var _0x2ead0d=util[_0x338c('0x44')]('%s:%s',_0x22a70b[_0x338c('0x30')],_0x22a70b[_0x338c('0x31')]);var _0x372839={'method':'POST','uri':_0x338c('0x72')+_0x22a70b[_0x338c('0x73')]+_0x338c('0x74'),'body':{'to':[_0x50ba99['phone']],'text':_0x50ba99[_0x338c('0xd')],'from':_0x22a70b[_0x338c('0x25')],'applicationId':_0x22a70b[_0x338c('0x75')]},'headers':{'Authorization':util[_0x338c('0x44')](_0x338c('0x47'),new Buffer(_0x2ead0d)['toString'](_0x338c('0x52')))},'json':!![]};rp(_0x372839)['then'](function(_0x4e7593){if(_0x4e7593['id']){var _0x5b82e6={'messageId':_0x4e7593['id']};return _0x367047[_0x338c('0x18')](_0x5b82e6);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),_0x338c('0x71'),util['inspect'](_0x4e7593,{'showHidden':![],'depth':null}));}})[_0x338c('0x2a')](function(_0x4651bd){logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x71'),util[_0x338c('0x3a')](_0x4651bd,{'showHidden':![],'depth':null}));});}else{logger[_0x338c('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),'bandwidth',_0x338c('0x3b'));}break;case _0x338c('0x76'):if(_0x22a70b['apiKey']){var _0x3d7803={};var _0xa581b3={'method':_0x338c('0x3e'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x338c('0x77')+_0x22a70b[_0x338c('0x61')],'Content-Type':'application/json'},'body':{'from':_0x22a70b['phone'],'to':_0x50ba99[_0x338c('0x25')],'text':_0x50ba99['body']},'json':!![]};return rp(_0xa581b3)[_0x338c('0x17')](function(_0x8ce800){if(_0x8ce800[_0x338c('0x78')]==0xca){_0x3d7803[_0x338c('0x79')]=_0x8ce800;var _0x2f7dad={'method':'POST','uri':_0x338c('0x7a'),'headers':{'Authorization':_0x338c('0x77')+_0x22a70b[_0x338c('0x61')],'Content-Type':'application/json'},'body':{'refid':_0x3d7803[_0x338c('0x79')][_0x338c('0x7b')]},'json':!![]};return rp(_0x2f7dad)[_0x338c('0x17')](function(_0x568553){_0x3d7803[_0x338c('0x7c')]=_0x568553;var _0x2604c5={'messageId':_0x3d7803['message'][_0x338c('0x7b')],'read':!![]};return _0x367047[_0x338c('0x18')](_0x2604c5);});}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x338c('0x2c'),_0x338c('0x76'),util[_0x338c('0x3a')](_0x8ce800,{'showHidden':![],'depth':null}));}})[_0x338c('0x2a')](function(_0x2cb920){return logger[_0x338c('0x1b')](_0x338c('0x2b'),_0x338c('0x2c'),_0x338c('0x76'),util[_0x338c('0x3a')](_0x2cb920,{'showHidden':![],'depth':null}));});}else{return logger[_0x338c('0x1b')](_0x338c('0x2b'),'afterCreate',_0x338c('0x76'),_0x338c('0x7d'));}break;}}})[_0x338c('0x7e')](function(){_0x2861b0();});}else{_0x2861b0();}}},'charset':_0x338c('0x7f'),'collate':_0x338c('0x80')});};
\ No newline at end of file
+var _0xa101=['lodash','util','api','moment','request-promise','path','../../config/environment','./smsMessage.attributes','exports','define','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteraction','SmsInteractionId','createdAt','catch','error','SmsAccount','find','then','type','twilio','accountSid','authToken','phone','messages','create','remote','/status?token=','update','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','xCALLY\x20Motion','senderString','format','%s:%s','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','queued_count','head','message_id','clickSend','plivo','authId','/api/sms/messages/','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','IBSSO\x20','token','csc','crypto','timestamp','apiKey','md5','hex','signature=','/external/get/send.php?','keys','https://platform.clickatell.com/messages','uuid','UTF-8','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci'];(function(_0x29ef2b,_0x1f416d){var _0xe4700c=function(_0x215f9b){while(--_0x215f9b){_0x29ef2b['push'](_0x29ef2b['shift']());}};_0xe4700c(++_0x1f416d);}(_0xa101,0x15f));var _0x1a10=function(_0xf73c09,_0x4e424e){_0xf73c09=_0xf73c09-0x0;var _0xa8923c=_0xa101[_0xf73c09];return _0xa8923c;};'use strict';var _=require(_0x1a10('0x0'));var util=require(_0x1a10('0x1'));var logger=require('../../config/logger')(_0x1a10('0x2'));var moment=require(_0x1a10('0x3'));var BPromise=require('bluebird');var rp=require(_0x1a10('0x4'));var fs=require('fs');var path=require(_0x1a10('0x5'));var rimraf=require('rimraf');var config=require(_0x1a10('0x6'));var attributes=require(_0x1a10('0x7'));module[_0x1a10('0x8')]=function(_0x1a9d22,_0x2eb3c8){return _0x1a9d22[_0x1a10('0x9')]('SmsMessage',attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x1a10('0xa'),'fields':[_0x1a10('0xa')]},{'name':_0x1a10('0xb'),'fields':[_0x1a10('0xc')],'type':_0x1a10('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x36e16b,_0x6d687d,_0x501792){var _0xa8d743=_0x1a9d22[_0x1a10('0xe')];var _0x467d62=_0x36e16b['get']({'plain':!![]});if(_0x467d62[_0x1a10('0xf')][_0x1a10('0x10')]()==='in'||_0x467d62[_0x1a10('0xf')]['toLowerCase']()===_0x1a10('0x11')&&!_0x467d62[_0x1a10('0x12')]&&!_[_0x1a10('0x13')](_0x467d62[_0x1a10('0x14')])){_0xa8d743[_0x1a10('0x15')]['findOne']({'where':{'id':_0x467d62[_0x1a10('0x16')]}})['then'](function(_0x56d8d0){if(_0x56d8d0){_0x56d8d0['update']({'lastMsgAt':_0x467d62[_0x1a10('0x17')],'lastMsgDirection':_0x467d62[_0x1a10('0xf')][_0x1a10('0x10')]()});}})[_0x1a10('0x18')](function(_0x5c1b61){console[_0x1a10('0x19')](_0x5c1b61);});}if(_0x467d62[_0x1a10('0xf')]==='out'&&!_0x467d62[_0x1a10('0x12')]){var _0x3dd935;_0xa8d743[_0x1a10('0x1a')][_0x1a10('0x1b')]({'where':{'id':_0x467d62['SmsAccountId']},'raw':!![]})[_0x1a10('0x1c')](function(_0x1b394c){_0x3dd935=_0x1b394c;if(_0x3dd935&&_0x3dd935[_0x1a10('0x1d')]){switch(_0x3dd935[_0x1a10('0x1d')]){case _0x1a10('0x1e'):var _0xe0057f=require(_0x1a10('0x1e'));if(_0x3dd935[_0x1a10('0x1f')]&&_0x3dd935[_0x1a10('0x20')]&&_0x3dd935[_0x1a10('0x21')]){var _0x473ae3=new _0xe0057f(_0x3dd935[_0x1a10('0x1f')],_0x3dd935[_0x1a10('0x20')]);_0x473ae3[_0x1a10('0x22')][_0x1a10('0x23')]({'body':_0x467d62['body'],'to':_0x467d62[_0x1a10('0x21')],'from':_0x3dd935['phone'],'statusCallback':_0x3dd935[_0x1a10('0x24')]+'/api/sms/messages/'+_0x467d62['id']+_0x1a10('0x25')+_0x3dd935['token']})[_0x1a10('0x1c')](function(_0x74c06a){if(_0x74c06a['sid']){return _0x36e16b[_0x1a10('0x26')]({'messageId':_0x74c06a[_0x1a10('0x27')]});}})[_0x1a10('0x18')](function(_0x43cae0){logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x1e'),util[_0x1a10('0x2a')](_0x43cae0,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x1e'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'skebby':var _0x4c8fe6=_0x1a10('0x2b');if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){var _0x3a6c46={'recipient':[_0x467d62['phone']],'message':_0x467d62[_0x1a10('0xc')],'message_type':_0x3dd935[_0x1a10('0x2e')]};if(_0x3dd935['smsMethod']&&_0x3dd935[_0x1a10('0x2e')]!=='SI'){_0x3a6c46[_0x1a10('0x2f')]=_0x3dd935[_0x1a10('0x21')];}var _0x1d9fc8={'url':_0x4c8fe6+_0x1a10('0x30')+_0x3dd935[_0x1a10('0x2c')]+_0x1a10('0x31')+_0x3dd935[_0x1a10('0x2d')],'method':_0x1a10('0x32')};rp(_0x1d9fc8)['then'](function(_0x30eb67){var _0x50b2b1=_0x30eb67[_0x1a10('0x33')](';');var _0x3559c4={'user_key':_0x50b2b1[0x0],'session_key':_0x50b2b1[0x1]};_0x1d9fc8={'url':_0x4c8fe6+'sms','method':_0x1a10('0x34'),'headers':{'user_key':_0x3559c4[_0x1a10('0x35')],'Session_key':_0x3559c4[_0x1a10('0x36')]},'json':!![],'body':_0x3a6c46};return rp(_0x1d9fc8);})['then'](function(_0x4eeb1e){if(_0x4eeb1e[_0x1a10('0x37')]>=0x1){var _0x5f5f7={'messageId':_0x4eeb1e[_0x1a10('0x38')]};if(_0x3dd935[_0x1a10('0x2e')]!=='GP'||!_0x3dd935[_0x1a10('0x39')]){_0x5f5f7[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0x5f5f7);}else{return logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x3b'),util[_0x1a10('0x2a')](_0x4eeb1e,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x3b1ff2){return logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x3b'),util[_0x1a10('0x2a')](_0x3b1ff2,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x3b'),_0x1a10('0x3c'));}break;case'connectel':if(_0x3dd935[_0x1a10('0x20')]){var _0x14e2c2={'recipient':_0x467d62[_0x1a10('0x21')],'message':_0x467d62[_0x1a10('0xc')],'sender':_0x3dd935['senderString']||_0x3dd935[_0x1a10('0x21')],'authorization':_0x3dd935['authToken']};var _0x6d687d={'method':_0x1a10('0x34'),'uri':_0x1a10('0x3d'),'body':_0x14e2c2,'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x255195){var _0x1c23ee={'messageId':_0x255195[_0x1a10('0x3e')]};if(!_0x3dd935[_0x1a10('0x39')]){_0x1c23ee['read']=!![];}return _0x36e16b[_0x1a10('0x26')](_0x1c23ee);})[_0x1a10('0x18')](function(_0x120318){logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x3f'),util[_0x1a10('0x2a')](_0x120318,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1a10('0x3f'),'Missing\x20parameters:\x20authToken');}break;case'clicksend':if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){var _0x14e2c2={'messages':[{'source':_0x1a10('0x40'),'to':_0x467d62[_0x1a10('0x21')],'body':_0x467d62['body'],'from':_0x3dd935[_0x1a10('0x41')]||_0x3dd935[_0x1a10('0x21')]}]};var _0x138590=util[_0x1a10('0x42')](_0x1a10('0x43'),_0x3dd935[_0x1a10('0x2c')],_0x3dd935['password']);var _0x6d687d={'method':_0x1a10('0x34'),'uri':_0x1a10('0x44'),'body':_0x14e2c2,'headers':{'Authorization':util['format'](_0x1a10('0x45'),new Buffer(_0x138590)[_0x1a10('0x46')](_0x1a10('0x47')))},'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x55add6){if(_0x55add6[_0x1a10('0x48')]>=0xc8&&_0x55add6[_0x1a10('0x48')]<=0xce){if(_0x55add6['data']&&_0x55add6['data'][_0x1a10('0x49')]>0x0){var _0x1a03bf=_[_0x1a10('0x4a')](_0x55add6['data'][_0x1a10('0x22')]);var _0xb53055={'messageId':_0x1a03bf[_0x1a10('0x4b')]};if(!_0x3dd935[_0x1a10('0x39')]){_0xb53055[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0xb53055);}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4c'),util[_0x1a10('0x2a')](_0x55add6,{'showHidden':![],'depth':null}));}}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4c'),util[_0x1a10('0x2a')](_0x55add6,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x499654){logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),'clickSend',util[_0x1a10('0x2a')](_0x499654,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4c'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x1a10('0x4d'):if(_0x3dd935[_0x1a10('0x4e')]&&_0x3dd935['authToken']){var _0x14e2c2={'dst':_0x467d62[_0x1a10('0x21')],'text':_0x467d62[_0x1a10('0xc')],'src':_0x3dd935['senderString']||_0x3dd935[_0x1a10('0x21')],'url':_0x3dd935[_0x1a10('0x24')]+_0x1a10('0x4f')+_0x467d62['id']+'/status?token='+_0x3dd935['token']};var _0x138590=util[_0x1a10('0x42')](_0x1a10('0x43'),_0x3dd935[_0x1a10('0x4e')],_0x3dd935[_0x1a10('0x20')]);var _0x6d687d={'method':'POST','uri':util[_0x1a10('0x42')]('https://api.plivo.com/v1/Account/%s/Message/',_0x3dd935[_0x1a10('0x4e')]),'body':_0x14e2c2,'headers':{'Authorization':util[_0x1a10('0x42')](_0x1a10('0x45'),new Buffer(_0x138590)['toString'](_0x1a10('0x47')))},'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x22d399){var _0x471f25={'messageId':_0x22d399[_0x1a10('0x50')][0x0]};return _0x36e16b[_0x1a10('0x26')](_0x471f25);})[_0x1a10('0x18')](function(_0x95c8c){logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x4d'),util[_0x1a10('0x2a')](_0x95c8c,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x4d'),_0x1a10('0x51'));}break;case _0x1a10('0x52'):if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){if(_0x3dd935['baseUrl']){var _0x1bb9cf={'method':_0x1a10('0x34'),'uri':_0x3dd935[_0x1a10('0x53')]+_0x1a10('0x54'),'body':{'username':_0x3dd935[_0x1a10('0x2c')],'password':_0x3dd935[_0x1a10('0x2d')]},'json':!![]};return rp(_0x1bb9cf)[_0x1a10('0x1c')](function(_0x3ed75b){var _0x592654={'method':_0x1a10('0x34'),'uri':_0x3dd935[_0x1a10('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x3dd935['phone'],'destinations':[{'to':_0x467d62[_0x1a10('0x21')]}],'text':_0x467d62[_0x1a10('0xc')],'notifyUrl':_0x3dd935['remote']+'/api/sms/messages/'+_0x467d62['id']+_0x1a10('0x25')+_0x3dd935['token'],'notifyContentType':'application/json','callbackData':_0x3dd935[_0x1a10('0x21')]+';'+_0x467d62[_0x1a10('0xc')]}]},'headers':{'Authorization':_0x1a10('0x55')+_0x3ed75b[_0x1a10('0x56')]},'json':!![]};return rp(_0x592654)[_0x1a10('0x1c')](function(_0x454372){if(_0x454372['messages']){var _0x18dc56={'messageId':_0x454372['messages'][0x0][_0x1a10('0xa')]};if(!_0x3dd935[_0x1a10('0x39')]){_0x18dc56[_0x1a10('0x3a')]=!![];}return _0x36e16b['update'](_0x18dc56);}else{return logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x52'),util[_0x1a10('0x2a')](_0x454372,{'showHidden':![],'depth':null}));}});})[_0x1a10('0x18')](function(_0x16b243){return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x52'),util[_0x1a10('0x2a')](_0x16b243,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1a10('0x52'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),'afterCreate',_0x1a10('0x52'),_0x1a10('0x3c'));}break;case _0x1a10('0x57'):var _0x982903=require(_0x1a10('0x58'));if(_0x3dd935['apiKey']){var _0x2f4763={};_0x2f4763['login']=_0x3dd935[_0x1a10('0x2c')];_0x2f4763[_0x1a10('0x21')]=_0x467d62[_0x1a10('0x21')];_0x2f4763[_0x1a10('0x2f')]=_0x3dd935['phone'];_0x2f4763['text']=_0x467d62[_0x1a10('0xc')];_0x2f4763[_0x1a10('0x59')]=+new Date();var _0x40ede1='';var _0x2f130a='';var _0x9337dc=Object['keys'](_0x2f4763);_0x9337dc['sort']();for(var _0x5338e2=0x0;_0x5338e2<_0x9337dc['length'];_0x5338e2++){if(_0x40ede1!=''){_0x40ede1+='&';}_0x40ede1+=_0x9337dc[_0x5338e2]+'='+encodeURIComponent(_0x2f4763[_0x9337dc[_0x5338e2]]);_0x2f130a+=_0x2f4763[_0x9337dc[_0x5338e2]];}_0x2f130a+=_0x3dd935[_0x1a10('0x5a')];_0x2f130a=_0x982903['createHash'](_0x1a10('0x5b'))['update'](_0x2f130a)['digest'](_0x1a10('0x5c'));if(_0x40ede1!==''){_0x40ede1+='&';}_0x40ede1+=_0x1a10('0x5d')+_0x2f130a;var _0x1d9fc8={'method':_0x1a10('0x32'),'uri':_0x3dd935[_0x1a10('0x53')]+_0x1a10('0x5e')+_0x40ede1,'json':!![]};return rp(_0x1d9fc8)[_0x1a10('0x1c')](function(_0x2df7bf){var _0x5bc396=Object[_0x1a10('0x5f')](_0x2df7bf);if(_0x2df7bf[_0x5bc396[0x0]][_0x1a10('0x19')]&&parseInt(_0x2df7bf[_0x5bc396[0x0]][_0x1a10('0x19')])===0x0){var _0x48063f={'messageId':_0x2df7bf[_0x5bc396[0x0]]['id_sms']};if(!_0x3dd935['deliveryReport']){_0x48063f[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0x48063f);}else{return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),'csc',util['inspect'](_0x2df7bf[_0x1a10('0x19')],{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x26b450){return logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x57'),util['inspect'](_0x26b450,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x57'),'Missing\x20parameters:\x20apiKey');}break;case'clickatell':if(_0x3dd935[_0x1a10('0x5a')]){var _0x4fb2ce={'method':_0x1a10('0x34'),'uri':_0x1a10('0x60'),'headers':{'Authorization':_0x3dd935[_0x1a10('0x5a')]},'body':{'content':_0x467d62[_0x1a10('0xc')],'to':[_0x467d62['phone']],'from':_0x3dd935[_0x1a10('0x21')],'binary':![],'clientMessageId':_0x1a10('0x61'),'charset':_0x1a10('0x62')},'json':!![]};rp(_0x4fb2ce)['then'](function(_0x3f42b8){if(!_0x3f42b8[_0x1a10('0x19')]){var _0x3c3dcd={'messageId':_0x3f42b8[_0x1a10('0x22')][0x0]['apiMessageId']};if(!_0x3dd935['deliveryReport']){_0x3c3dcd[_0x1a10('0x3a')]=!![];}return _0x36e16b[_0x1a10('0x26')](_0x3c3dcd);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x63'),util[_0x1a10('0x2a')](_0x3f42b8['error'],{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x3fd727){return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x63'),util['inspect'](_0x3fd727,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),_0x1a10('0x63'),'Missing\x20parameters:\x20apiKey');}break;case _0x1a10('0x64'):if(_0x3dd935[_0x1a10('0x2c')]&&_0x3dd935[_0x1a10('0x2d')]){var _0x138590=util[_0x1a10('0x42')](_0x1a10('0x43'),_0x3dd935['username'],_0x3dd935[_0x1a10('0x2d')]);var _0x6d687d={'method':_0x1a10('0x34'),'uri':_0x1a10('0x65')+_0x3dd935[_0x1a10('0x66')]+'/messages','body':{'to':[_0x467d62['phone']],'text':_0x467d62[_0x1a10('0xc')],'from':_0x3dd935[_0x1a10('0x21')],'applicationId':_0x3dd935[_0x1a10('0x67')]},'headers':{'Authorization':util['format'](_0x1a10('0x45'),new Buffer(_0x138590)['toString']('base64'))},'json':!![]};rp(_0x6d687d)[_0x1a10('0x1c')](function(_0x56e021){if(_0x56e021['id']){var _0x174fcd={'messageId':_0x56e021['id']};return _0x36e16b['update'](_0x174fcd);}else{logger[_0x1a10('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1a10('0x29'),'bandwidth',util[_0x1a10('0x2a')](_0x56e021,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x34799c){logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x64'),util['inspect'](_0x34799c,{'showHidden':![],'depth':null}));});}else{logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),'bandwidth',_0x1a10('0x3c'));}break;case _0x1a10('0x68'):if(_0x3dd935[_0x1a10('0x5a')]){var _0x5eef7c={};var _0x1d9fc8={'method':'POST','uri':_0x1a10('0x69'),'headers':{'Authorization':_0x1a10('0x6a')+_0x3dd935[_0x1a10('0x5a')],'Content-Type':_0x1a10('0x6b')},'body':{'from':_0x3dd935['phone'],'to':_0x467d62[_0x1a10('0x21')],'text':_0x467d62[_0x1a10('0xc')]},'json':!![]};return rp(_0x1d9fc8)['then'](function(_0x3921f4){if(_0x3921f4[_0x1a10('0x6c')]==0xca){_0x5eef7c[_0x1a10('0x6d')]=_0x3921f4;var _0x396f66={'method':_0x1a10('0x34'),'uri':_0x1a10('0x6e'),'headers':{'Authorization':_0x1a10('0x6a')+_0x3dd935[_0x1a10('0x5a')],'Content-Type':_0x1a10('0x6b')},'body':{'refid':_0x5eef7c['message'][_0x1a10('0x6f')]},'json':!![]};return rp(_0x396f66)[_0x1a10('0x1c')](function(_0x367bc0){_0x5eef7c[_0x1a10('0x70')]=_0x367bc0;var _0x5e8dc3={'messageId':_0x5eef7c['message'][_0x1a10('0x6f')],'read':!![]};return _0x36e16b[_0x1a10('0x26')](_0x5e8dc3);});}else{return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x68'),util[_0x1a10('0x2a')](_0x3921f4,{'showHidden':![],'depth':null}));}})[_0x1a10('0x18')](function(_0x54aa0a){return logger['error'](_0x1a10('0x28'),_0x1a10('0x29'),'intelepeer',util['inspect'](_0x54aa0a,{'showHidden':![],'depth':null}));});}else{return logger[_0x1a10('0x19')](_0x1a10('0x28'),_0x1a10('0x29'),_0x1a10('0x68'),_0x1a10('0x71'));}break;}}})[_0x1a10('0x72')](function(){_0x501792();});}else{_0x501792();}}},'charset':_0x1a10('0x73'),'collate':_0x1a10('0x74')});};
\ No newline at end of file
index 004667e..6b325a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x670e=['CreateSmsMessage','SmsMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','./smsMessage.socket','request','then','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','catch'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x670e,0x69));var _0xe670=function(_0x2f5e26,_0x1250ce){_0x2f5e26=_0x2f5e26-0x0;var _0x2b046e=_0x670e[_0x2f5e26];return _0x2b046e;};'use strict';var _=require(_0xe670('0x0'));var util=require(_0xe670('0x1'));var moment=require(_0xe670('0x2'));var BPromise=require(_0xe670('0x3'));var rs=require(_0xe670('0x4'));var fs=require('fs');var Redis=require(_0xe670('0x5'));var db=require(_0xe670('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xe670('0x7'))(_0xe670('0x8'));var config=require('../../config/environment');var jayson=require(_0xe670('0x9'));var client=jayson[_0xe670('0xa')]['http']({'port':0x232a});config[_0xe670('0xb')]=_[_0xe670('0xc')](config[_0xe670('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xe670('0xd'))(new Redis(config[_0xe670('0xb')]));require(_0xe670('0xe'))['register'](socket);function respondWithRpcPromise(_0x4b0bc0,_0x352afd,_0xfa9e3c){return new BPromise(function(_0x1fc076,_0x370fda){return client[_0xe670('0xf')](_0x4b0bc0,_0xfa9e3c)[_0xe670('0x10')](function(_0x17e78b){logger[_0xe670('0x11')]('SmsMessage,\x20%s,\x20%s',_0x352afd,_0xe670('0x12'));logger[_0xe670('0x13')](_0xe670('0x14'),_0x352afd,'request\x20sent',JSON[_0xe670('0x15')](_0x17e78b));if(_0x17e78b[_0xe670('0x16')]){if(_0x17e78b[_0xe670('0x16')][_0xe670('0x17')]===0x1f4){logger[_0xe670('0x16')](_0xe670('0x18'),_0x352afd,_0x17e78b[_0xe670('0x16')][_0xe670('0x19')]);return _0x370fda(_0x17e78b[_0xe670('0x16')][_0xe670('0x19')]);}logger[_0xe670('0x16')](_0xe670('0x18'),_0x352afd,_0x17e78b[_0xe670('0x16')][_0xe670('0x19')]);return _0x1fc076(_0x17e78b[_0xe670('0x16')][_0xe670('0x19')]);}else{logger[_0xe670('0x11')](_0xe670('0x18'),_0x352afd,_0xe670('0x12'));_0x1fc076(_0x17e78b['result']['message']);}})[_0xe670('0x1a')](function(_0x583fd9){logger[_0xe670('0x16')](_0xe670('0x18'),_0x352afd,_0x583fd9);_0x370fda(_0x583fd9);});});}exports[_0xe670('0x1b')]=function(_0x9cb05a){var _0x101f75=this;return new Promise(function(_0x28034c,_0x370525){return db[_0xe670('0x1c')][_0xe670('0x1d')](_0x9cb05a[_0xe670('0x1e')],{'raw':_0x9cb05a[_0xe670('0x1f')]?_0x9cb05a[_0xe670('0x1f')][_0xe670('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x375669){logger[_0xe670('0x11')](_0xe670('0x1b'),_0x9cb05a);logger['debug'](_0xe670('0x1b'),_0x9cb05a,JSON['stringify'](_0x375669));_0x28034c(_0x375669);})[_0xe670('0x1a')](function(_0x47bd7b){logger[_0xe670('0x16')](_0xe670('0x1b'),_0x47bd7b[_0xe670('0x19')],_0x9cb05a);_0x370525(_0x101f75[_0xe670('0x16')](0x1f4,_0x47bd7b[_0xe670('0x19')]));});});};
\ No newline at end of file
+var _0x8118=['SmsMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateSmsMessage','SmsMessage','create','body','options','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','defaults','socket.io-emitter','redis','./smsMessage.socket','request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0xb1496a,_0x190543){var _0x301916=function(_0x4e17ab){while(--_0x4e17ab){_0xb1496a['push'](_0xb1496a['shift']());}};_0x301916(++_0x190543);}(_0x8118,0x10b));var _0x8811=function(_0x222c9f,_0x515cd0){_0x222c9f=_0x222c9f-0x0;var _0x3e74b5=_0x8118[_0x222c9f];return _0x3e74b5;};'use strict';var _=require(_0x8811('0x0'));var util=require(_0x8811('0x1'));var moment=require(_0x8811('0x2'));var BPromise=require(_0x8811('0x3'));var rs=require(_0x8811('0x4'));var fs=require('fs');var Redis=require(_0x8811('0x5'));var db=require(_0x8811('0x6'))['db'];var utils=require(_0x8811('0x7'));var logger=require('../../config/logger')(_0x8811('0x8'));var config=require(_0x8811('0x9'));var jayson=require(_0x8811('0xa'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x8811('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8811('0xc'))(new Redis(config[_0x8811('0xd')]));require(_0x8811('0xe'))['register'](socket);function respondWithRpcPromise(_0x5cd4f6,_0x58da41,_0x26f706){return new BPromise(function(_0x57c546,_0x238407){return client[_0x8811('0xf')](_0x5cd4f6,_0x26f706)[_0x8811('0x10')](function(_0xd98f8f){logger[_0x8811('0x11')](_0x8811('0x12'),_0x58da41,_0x8811('0x13'));logger[_0x8811('0x14')](_0x8811('0x15'),_0x58da41,_0x8811('0x13'),JSON['stringify'](_0xd98f8f));if(_0xd98f8f[_0x8811('0x16')]){if(_0xd98f8f[_0x8811('0x16')][_0x8811('0x17')]===0x1f4){logger['error'](_0x8811('0x12'),_0x58da41,_0xd98f8f['error']['message']);return _0x238407(_0xd98f8f[_0x8811('0x16')]['message']);}logger['error'](_0x8811('0x12'),_0x58da41,_0xd98f8f[_0x8811('0x16')][_0x8811('0x18')]);return _0x57c546(_0xd98f8f[_0x8811('0x16')]['message']);}else{logger[_0x8811('0x11')](_0x8811('0x12'),_0x58da41,'request\x20sent');_0x57c546(_0xd98f8f[_0x8811('0x19')][_0x8811('0x18')]);}})['catch'](function(_0x3fe45f){logger[_0x8811('0x16')](_0x8811('0x12'),_0x58da41,_0x3fe45f);_0x238407(_0x3fe45f);});});}exports[_0x8811('0x1a')]=function(_0x296620){var _0x5e8047=this;return new Promise(function(_0x593af5,_0x5c5769){return db[_0x8811('0x1b')][_0x8811('0x1c')](_0x296620[_0x8811('0x1d')],{'raw':_0x296620[_0x8811('0x1e')]?_0x296620[_0x8811('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0x8811('0x10')](function(_0x4a0bbc){logger[_0x8811('0x11')](_0x8811('0x1a'),_0x296620);logger[_0x8811('0x14')](_0x8811('0x1a'),_0x296620,JSON['stringify'](_0x4a0bbc));_0x593af5(_0x4a0bbc);})[_0x8811('0x1f')](function(_0x15dc91){logger[_0x8811('0x16')](_0x8811('0x1a'),_0x15dc91[_0x8811('0x18')],_0x296620);_0x5c5769(_0x5e8047[_0x8811('0x16')](0x1f4,_0x15dc91[_0x8811('0x18')]));});});};
\ No newline at end of file
index 3299ae8..b5b6139 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03fc=['emit','length','smsMessage:','./smsMessage.events','save','remove','update'];(function(_0x176329,_0x568c84){var _0x31997c=function(_0x3d64df){while(--_0x3d64df){_0x176329['push'](_0x176329['shift']());}};_0x31997c(++_0x568c84);}(_0x03fc,0x106));var _0xc03f=function(_0x226155,_0x11670e){_0x226155=_0x226155-0x0;var _0x3056c8=_0x03fc[_0x226155];return _0x3056c8;};'use strict';var SmsMessageEvents=require(_0xc03f('0x0'));var events=[_0xc03f('0x1'),_0xc03f('0x2'),_0xc03f('0x3')];function createListener(_0x3dbe5a,_0x3fb771){return function(_0x1f977f){_0x3fb771[_0xc03f('0x4')](_0x3dbe5a,_0x1f977f);};}function removeListener(_0x100356,_0x3511c0){return function(){SmsMessageEvents['removeListener'](_0x100356,_0x3511c0);};}exports['register']=function(_0x105bfc){for(var _0x1b0a6b=0x0,_0x401fdd=events[_0xc03f('0x5')];_0x1b0a6b<_0x401fdd;_0x1b0a6b++){var _0x5a6f67=events[_0x1b0a6b];var _0x47a6ee=createListener(_0xc03f('0x6')+_0x5a6f67,_0x105bfc);SmsMessageEvents['on'](_0x5a6f67,_0x47a6ee);}};
\ No newline at end of file
+var _0xf0e3=['smsMessage:','./smsMessage.events','save','remove','update','emit','register','length'];(function(_0x1fb740,_0x3e5483){var _0x65aa08=function(_0xf8c988){while(--_0xf8c988){_0x1fb740['push'](_0x1fb740['shift']());}};_0x65aa08(++_0x3e5483);}(_0xf0e3,0xe9));var _0x3f0e=function(_0x59cc87,_0x3d15ef){_0x59cc87=_0x59cc87-0x0;var _0x1adede=_0xf0e3[_0x59cc87];return _0x1adede;};'use strict';var SmsMessageEvents=require(_0x3f0e('0x0'));var events=[_0x3f0e('0x1'),_0x3f0e('0x2'),_0x3f0e('0x3')];function createListener(_0x4c2011,_0x5459d0){return function(_0x267ad5){_0x5459d0[_0x3f0e('0x4')](_0x4c2011,_0x267ad5);};}function removeListener(_0x5c9d21,_0x165cd2){return function(){SmsMessageEvents['removeListener'](_0x5c9d21,_0x165cd2);};}exports[_0x3f0e('0x5')]=function(_0x264a53){for(var _0x558f9d=0x0,_0x4b3787=events[_0x3f0e('0x6')];_0x558f9d<_0x4b3787;_0x558f9d++){var _0x5738ad=events[_0x558f9d];var _0x5975c5=createListener(_0x3f0e('0x7')+_0x5738ad,_0x264a53);SmsMessageEvents['on'](_0x5738ad,_0x5975c5);}};
\ No newline at end of file
index 296a97a..0120a50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e47=['./smsQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','/:id/users','post','addTeams','addAgents','update','delete','destroy','removeTeams','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2e223b,_0x3bc763){var _0x11b78c=function(_0x405be0){while(--_0x405be0){_0x2e223b['push'](_0x2e223b['shift']());}};_0x11b78c(++_0x3bc763);}(_0x4e47,0xec));var _0x74e4=function(_0xdb7c94,_0x4b3019){_0xdb7c94=_0xdb7c94-0x0;var _0xee35e1=_0x4e47[_0xdb7c94];return _0xee35e1;};'use strict';var multer=require('multer');var util=require(_0x74e4('0x0'));var path=require(_0x74e4('0x1'));var timeout=require('connect-timeout');var express=require(_0x74e4('0x2'));var router=express[_0x74e4('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x74e4('0x4'));var interaction=require(_0x74e4('0x5'));var config=require(_0x74e4('0x6'));var controller=require(_0x74e4('0x7'));router[_0x74e4('0x8')]('/',auth[_0x74e4('0x9')](),controller[_0x74e4('0xa')]);router[_0x74e4('0x8')](_0x74e4('0xb'),auth['isAuthenticated'](),controller[_0x74e4('0xc')]);router['get'](_0x74e4('0xd'),auth['isAuthenticated'](),controller[_0x74e4('0xe')]);router[_0x74e4('0x8')](_0x74e4('0xf'),auth['isAuthenticated'](),controller[_0x74e4('0x10')]);router[_0x74e4('0x8')](_0x74e4('0x11'),auth[_0x74e4('0x9')](),controller['getTeams']);router[_0x74e4('0x8')](_0x74e4('0x12'),auth[_0x74e4('0x9')](),controller['getAgents']);router[_0x74e4('0x13')]('/',auth[_0x74e4('0x9')](),controller['create']);router[_0x74e4('0x13')]('/:id/teams',auth[_0x74e4('0x9')](),controller[_0x74e4('0x14')]);router['post'](_0x74e4('0x12'),auth[_0x74e4('0x9')](),controller[_0x74e4('0x15')]);router['put']('/:id',auth[_0x74e4('0x9')](),controller[_0x74e4('0x16')]);router[_0x74e4('0x17')](_0x74e4('0xd'),auth[_0x74e4('0x9')](),controller[_0x74e4('0x18')]);router[_0x74e4('0x17')]('/:id/teams',auth[_0x74e4('0x9')](),controller[_0x74e4('0x19')]);router[_0x74e4('0x17')](_0x74e4('0x12'),auth[_0x74e4('0x9')](),controller['removeAgents']);module[_0x74e4('0x1a')]=router;
\ No newline at end of file
+var _0xb9d8=['update','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','isAuthenticated','index','describe','/:id','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','put'];(function(_0x4c99d0,_0x1febe1){var _0x5e541f=function(_0x6a83e5){while(--_0x6a83e5){_0x4c99d0['push'](_0x4c99d0['shift']());}};_0x5e541f(++_0x1febe1);}(_0xb9d8,0x119));var _0x8b9d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb9d8[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x8b9d('0x0'));var util=require('util');var path=require(_0x8b9d('0x1'));var timeout=require('connect-timeout');var express=require(_0x8b9d('0x2'));var router=express['Router']();var fs_extra=require(_0x8b9d('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x8b9d('0x4'));var config=require(_0x8b9d('0x5'));var controller=require(_0x8b9d('0x6'));router[_0x8b9d('0x7')]('/',auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x9')]);router[_0x8b9d('0x7')]('/describe',auth[_0x8b9d('0x8')](),controller[_0x8b9d('0xa')]);router['get'](_0x8b9d('0xb'),auth[_0x8b9d('0x8')](),controller['show']);router[_0x8b9d('0x7')]('/:id/members',auth[_0x8b9d('0x8')](),controller['getMembers']);router[_0x8b9d('0x7')]('/:id/teams',auth['isAuthenticated'](),controller[_0x8b9d('0xc')]);router[_0x8b9d('0x7')](_0x8b9d('0xd'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0xe')]);router[_0x8b9d('0xf')]('/',auth[_0x8b9d('0x8')](),controller['create']);router[_0x8b9d('0xf')](_0x8b9d('0x10'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x11')]);router[_0x8b9d('0xf')](_0x8b9d('0xd'),auth[_0x8b9d('0x8')](),controller['addAgents']);router[_0x8b9d('0x12')](_0x8b9d('0xb'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x13')]);router[_0x8b9d('0x14')](_0x8b9d('0xb'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x15')]);router['delete']('/:id/teams',auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x16')]);router[_0x8b9d('0x14')](_0x8b9d('0xd'),auth[_0x8b9d('0x8')](),controller[_0x8b9d('0x17')]);module[_0x8b9d('0x18')]=router;
\ No newline at end of file
index cd00f32..9aee87f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d6d=['INTEGER','ENUM','rrmemory','beepall','name','STRING'];(function(_0x2f8d56,_0x376c64){var _0x36081d=function(_0x86d523){while(--_0x86d523){_0x2f8d56['push'](_0x2f8d56['shift']());}};_0x36081d(++_0x376c64);}(_0x7d6d,0x100));var _0xd7d6=function(_0x3de842,_0x218b19){_0x3de842=_0x3de842-0x0;var _0x3e214c=_0x7d6d[_0x3de842];return _0x3e214c;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xd7d6('0x0'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd7d6('0x1')]},'timeout':{'type':Sequelize[_0xd7d6('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xd7d6('0x3')](_0xd7d6('0x4'),_0xd7d6('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x2ffc=['sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2ffc,0x1cb));var _0xc2ff=function(_0x4420da,_0x4c65fc){_0x4420da=_0x4420da-0x0;var _0x51f9c3=_0x2ffc[_0x4420da];return _0x51f9c3;};'use strict';var Sequelize=require(_0xc2ff('0x0'));module[_0xc2ff('0x1')]={'name':{'type':Sequelize[_0xc2ff('0x2')],'unique':_0xc2ff('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc2ff('0x2')]},'timeout':{'type':Sequelize[_0xc2ff('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc2ff('0x5')](_0xc2ff('0x6'),_0xc2ff('0x7'),_0xc2ff('0x8'))}};
\ No newline at end of file
index 7dd3f59..19ac5bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x609b=['describe','getMembers','findOne','UserSmsQueue','filters','order','findAndCountAll','UserId','updatedAt','createdAt','smsPause','getTeams','addTeams','ids','Team','User','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','Agents','clone','toString','QueryTypes','SELECT','every','TeamId','includes','all','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','sendStatus','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','then','get','SmsQueues','UserProfileResource','end','stack','name','SmsQueue','rawAttributes','fieldName','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy'];(function(_0x27fc15,_0x1ed084){var _0x1db3b5=function(_0x5132f1){while(--_0x5132f1){_0x27fc15['push'](_0x27fc15['shift']());}};_0x1db3b5(++_0x1ed084);}(_0x609b,0xba));var _0xb609=function(_0x173d0f,_0x13712d){_0x173d0f=_0x173d0f-0x0;var _0x2df04c=_0x609b[_0x173d0f];return _0x2df04c;};'use strict';var emlformat=require(_0xb609('0x0'));var rimraf=require(_0xb609('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb609('0x2'));var rp=require(_0xb609('0x3'));var moment=require(_0xb609('0x4'));var BPromise=require(_0xb609('0x5'));var Mustache=require('mustache');var util=require(_0xb609('0x6'));var path=require('path');var sox=require(_0xb609('0x7'));var csv=require('to-csv');var ejs=require(_0xb609('0x8'));var fs=require('fs');var fs_extra=require(_0xb609('0x9'));var _=require(_0xb609('0xa'));var squel=require(_0xb609('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb609('0xc'));var toCsv=require(_0xb609('0xd'));var querystring=require('querystring');var Papa=require(_0xb609('0xe'));var Redis=require(_0xb609('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb609('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb609('0x11'));var logger=require(_0xb609('0x12'))(_0xb609('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb609('0x14'));var db=require(_0xb609('0x15'))['db'];config['redis']=_[_0xb609('0x16')](config[_0xb609('0x17')],{'host':_0xb609('0x18'),'port':0x18eb});var socket=require(_0xb609('0x19'))(new Redis(config[_0xb609('0x17')]));require('./smsQueue.socket')['register'](socket);function respondWithStatusCode(_0x1f293c,_0x341c8c){_0x341c8c=_0x341c8c||0xcc;return function(_0x7f2669){if(_0x7f2669){return _0x1f293c[_0xb609('0x1a')](_0x341c8c);}return _0x1f293c['status'](_0x341c8c)['end']();};}function respondWithResult(_0x1a6803,_0x53fed2){_0x53fed2=_0x53fed2||0xc8;return function(_0x220bb2){if(_0x220bb2){return _0x1a6803[_0xb609('0x1b')](_0x53fed2)['json'](_0x220bb2);}};}function respondWithFilteredResult(_0x4bebf7,_0x56d95c){return function(_0x3ad0ff){if(_0x3ad0ff){var _0x12ce1c=typeof _0x56d95c[_0xb609('0x1c')]===_0xb609('0x1d')&&typeof _0x56d95c[_0xb609('0x1e')]===_0xb609('0x1d');var _0x30d1aa=_0x3ad0ff[_0xb609('0x1f')];var _0x4e1357=_0x12ce1c?0x0:_0x56d95c[_0xb609('0x1c')];var _0x34aa12=_0x12ce1c?_0x3ad0ff['count']:_0x56d95c['offset']+_0x56d95c[_0xb609('0x1e')];var _0x1c3d32;if(_0x34aa12>=_0x30d1aa){_0x34aa12=_0x30d1aa;_0x1c3d32=0xc8;}else{_0x1c3d32=0xce;}_0x4bebf7[_0xb609('0x1b')](_0x1c3d32);return _0x4bebf7['set'](_0xb609('0x20'),_0x4e1357+'-'+_0x34aa12+'/'+_0x30d1aa)[_0xb609('0x21')](_0x3ad0ff);}return null;};}function patchUpdates(_0x3f70d9){return function(_0x22eab1){try{jsonpatch[_0xb609('0x22')](_0x22eab1,_0x3f70d9,!![]);}catch(_0x3ce09f){return BPromise[_0xb609('0x23')](_0x3ce09f);}return _0x22eab1['save']();};}function saveUpdates(_0x156e5e,_0x21d6b5){return function(_0xbadde9){if(_0xbadde9){return _0xbadde9[_0xb609('0x24')](_0x156e5e)[_0xb609('0x25')](function(_0x3616b8){return _0x3616b8;});}return null;};}function removeEntity(_0x1eab17,_0x1acfd5){return function(_0x18257a){if(_0x18257a){return _0x18257a['destroy']()[_0xb609('0x25')](function(){var _0x2850be=_0x18257a[_0xb609('0x26')]({'plain':!![]});var _0x50f151=_0xb609('0x27');return db[_0xb609('0x28')]['destroy']({'where':{'type':_0x50f151,'resourceId':_0x2850be['id']}})[_0xb609('0x25')](function(){return _0x18257a;});})[_0xb609('0x25')](function(){_0x1eab17[_0xb609('0x1b')](0xcc)[_0xb609('0x29')]();});}};}function handleEntityNotFound(_0x2ff859,_0x2d6498){return function(_0x5167d9){if(!_0x5167d9){_0x2ff859[_0xb609('0x1a')](0x194);}return _0x5167d9;};}function handleError(_0x5db916,_0x276bf9){_0x276bf9=_0x276bf9||0x1f4;return function(_0xe733d4){logger['error'](_0xe733d4[_0xb609('0x2a')]);if(_0xe733d4['name']){delete _0xe733d4[_0xb609('0x2b')];}_0x5db916[_0xb609('0x1b')](_0x276bf9)['send'](_0xe733d4);};}exports['index']=function(_0x5aee0d,_0x38c1c5){var _0x29ac73={},_0x16435b={},_0x542263={'count':0x0,'rows':[]};var _0x2693c1=_['map'](db[_0xb609('0x2c')][_0xb609('0x2d')],function(_0x198364){return{'name':_0x198364[_0xb609('0x2e')],'type':_0x198364[_0xb609('0x2f')][_0xb609('0x30')]};});_0x16435b[_0xb609('0x31')]=_[_0xb609('0x32')](_0x2693c1,_0xb609('0x2b'));_0x16435b[_0xb609('0x33')]=_[_0xb609('0x34')](_0x5aee0d[_0xb609('0x33')]);_0x16435b['filters']=_['intersection'](_0x16435b['model'],_0x16435b[_0xb609('0x33')]);_0x29ac73[_0xb609('0x35')]=_[_0xb609('0x36')](_0x16435b[_0xb609('0x31')],qs[_0xb609('0x37')](_0x5aee0d[_0xb609('0x33')][_0xb609('0x37')]));_0x29ac73[_0xb609('0x35')]=_0x29ac73[_0xb609('0x35')][_0xb609('0x38')]?_0x29ac73[_0xb609('0x35')]:_0x16435b[_0xb609('0x31')];if(!_0x5aee0d[_0xb609('0x33')][_0xb609('0x39')](_0xb609('0x3a'))){_0x29ac73[_0xb609('0x1e')]=qs[_0xb609('0x1e')](_0x5aee0d[_0xb609('0x33')]['limit']);_0x29ac73[_0xb609('0x1c')]=qs[_0xb609('0x1c')](_0x5aee0d['query'][_0xb609('0x1c')]);}_0x29ac73['order']=qs['sort'](_0x5aee0d[_0xb609('0x33')][_0xb609('0x3b')]);_0x29ac73['where']=qs['filters'](_[_0xb609('0x3c')](_0x5aee0d[_0xb609('0x33')],_0x16435b['filters']),_0x2693c1);if(_0x5aee0d[_0xb609('0x33')][_0xb609('0x3d')]){_0x29ac73[_0xb609('0x3e')]=_['merge'](_0x29ac73['where'],{'$or':_['map'](_0x2693c1,function(_0x923b24){if(_0x923b24[_0xb609('0x2f')]!==_0xb609('0x3f')){var _0x4245cb={};_0x4245cb[_0x923b24['name']]={'$like':'%'+_0x5aee0d['query'][_0xb609('0x3d')]+'%'};return _0x4245cb;}})});}_0x29ac73=_[_0xb609('0x40')]({},_0x29ac73,_0x5aee0d[_0xb609('0x41')]);var _0x1c087b={'where':_0x29ac73['where']};return db[_0xb609('0x2c')][_0xb609('0x1f')](_0x1c087b)['then'](function(_0x3988d1){_0x542263[_0xb609('0x1f')]=_0x3988d1;if(_0x5aee0d[_0xb609('0x33')][_0xb609('0x42')]){_0x29ac73[_0xb609('0x43')]=[{'all':!![]}];}return db['SmsQueue'][_0xb609('0x44')](_0x29ac73);})[_0xb609('0x25')](function(_0x4b3fbe){_0x542263['rows']=_0x4b3fbe;return _0x542263;})[_0xb609('0x25')](respondWithFilteredResult(_0x38c1c5,_0x29ac73))[_0xb609('0x45')](handleError(_0x38c1c5,null));};exports[_0xb609('0x46')]=function(_0x1405ee,_0x134e02){var _0x1a9bc7={'raw':!![],'where':{'id':_0x1405ee[_0xb609('0x47')]['id']}},_0x56c02e={};_0x56c02e[_0xb609('0x31')]=_[_0xb609('0x34')](db[_0xb609('0x2c')][_0xb609('0x2d')]);_0x56c02e[_0xb609('0x33')]=_['keys'](_0x1405ee['query']);_0x56c02e['filters']=_['intersection'](_0x56c02e['model'],_0x56c02e[_0xb609('0x33')]);_0x1a9bc7[_0xb609('0x35')]=_[_0xb609('0x36')](_0x56c02e['model'],qs[_0xb609('0x37')](_0x1405ee[_0xb609('0x33')][_0xb609('0x37')]));_0x1a9bc7[_0xb609('0x35')]=_0x1a9bc7[_0xb609('0x35')][_0xb609('0x38')]?_0x1a9bc7[_0xb609('0x35')]:_0x56c02e[_0xb609('0x31')];if(_0x1405ee[_0xb609('0x33')][_0xb609('0x42')]){_0x1a9bc7[_0xb609('0x43')]=[{'all':!![]}];}_0x1a9bc7=_[_0xb609('0x40')]({},_0x1a9bc7,_0x1405ee[_0xb609('0x41')]);return db[_0xb609('0x2c')][_0xb609('0x48')](_0x1a9bc7)['then'](handleEntityNotFound(_0x134e02,null))[_0xb609('0x25')](respondWithResult(_0x134e02,null))[_0xb609('0x45')](handleError(_0x134e02,null));};exports['create']=function(_0x212f2e,_0x38b491){return db[_0xb609('0x2c')][_0xb609('0x49')](_0x212f2e[_0xb609('0x4a')],{})[_0xb609('0x25')](function(_0x396353){var _0x54e104=_0x212f2e[_0xb609('0x4b')][_0xb609('0x26')]({'plain':!![]});if(!_0x54e104)throw new Error(_0xb609('0x4c'));if(_0x54e104['role']===_0xb609('0x4b')){var _0x250bcc=_0x396353['get']({'plain':!![]});var _0x5d13f7=_0xb609('0x27');return db['UserProfileSection'][_0xb609('0x48')]({'where':{'name':_0x5d13f7,'userProfileId':_0x54e104[_0xb609('0x4d')]},'raw':!![]})['then'](function(_0x537b16){if(_0x537b16&&_0x537b16[_0xb609('0x4e')]===0x0){return db[_0xb609('0x28')][_0xb609('0x49')]({'name':_0x250bcc[_0xb609('0x2b')],'resourceId':_0x250bcc['id'],'type':_0x537b16[_0xb609('0x2b')],'sectionId':_0x537b16['id']},{})[_0xb609('0x25')](function(){return _0x396353;});}else{return _0x396353;}})[_0xb609('0x45')](function(_0x5173e2){logger[_0xb609('0x4f')](_0xb609('0x50'),_0x5173e2);throw _0x5173e2;});}return _0x396353;})[_0xb609('0x25')](respondWithResult(_0x38b491,0xc9))[_0xb609('0x45')](handleError(_0x38b491,null));};exports['update']=function(_0x3d45c2,_0xc12974){if(_0x3d45c2[_0xb609('0x4a')]['id']){delete _0x3d45c2[_0xb609('0x4a')]['id'];}return db[_0xb609('0x2c')][_0xb609('0x48')]({'where':{'id':_0x3d45c2[_0xb609('0x47')]['id']}})[_0xb609('0x25')](handleEntityNotFound(_0xc12974,null))[_0xb609('0x25')](saveUpdates(_0x3d45c2[_0xb609('0x4a')],null))['then'](respondWithResult(_0xc12974,null))[_0xb609('0x45')](handleError(_0xc12974,null));};exports[_0xb609('0x51')]=function(_0x598629,_0x3ba9d5){return db[_0xb609('0x2c')]['find']({'where':{'id':_0x598629['params']['id']}})[_0xb609('0x25')](handleEntityNotFound(_0x3ba9d5,null))['then'](removeEntity(_0x3ba9d5,null))[_0xb609('0x45')](handleError(_0x3ba9d5,null));};exports[_0xb609('0x52')]=function(_0x349a31,_0x283513){return db['SmsQueue'][_0xb609('0x52')]()[_0xb609('0x25')](respondWithResult(_0x283513,null))[_0xb609('0x45')](handleError(_0x283513,null));};exports[_0xb609('0x53')]=function(_0x17102d,_0x2fd745,_0x4d2869){var _0x9642b={'raw':!![],'where':{}},_0x38b2ed={},_0x36c881;return db['SmsQueue'][_0xb609('0x54')]({'where':{'id':_0x17102d['params']['id']}})[_0xb609('0x25')](handleEntityNotFound(_0x2fd745,null))[_0xb609('0x25')](function(_0x5219a4){if(_0x5219a4){_0x36c881=_0x5219a4[_0xb609('0x26')]({'plain':!![]});_0x38b2ed[_0xb609('0x31')]=_[_0xb609('0x34')](db[_0xb609('0x55')][_0xb609('0x2d')]);_0x38b2ed[_0xb609('0x33')]=_[_0xb609('0x34')](_0x17102d[_0xb609('0x33')]);_0x38b2ed[_0xb609('0x56')]=_['intersection'](_0x38b2ed['model'],_0x38b2ed[_0xb609('0x33')]);_0x9642b[_0xb609('0x35')]=_['intersection'](_0x38b2ed['model'],qs[_0xb609('0x37')](_0x17102d[_0xb609('0x33')][_0xb609('0x37')]));_0x9642b[_0xb609('0x35')]=_0x9642b[_0xb609('0x35')][_0xb609('0x38')]?_0x9642b[_0xb609('0x35')]:_0x38b2ed['model'];if(!_0x17102d[_0xb609('0x33')][_0xb609('0x39')](_0xb609('0x3a'))){_0x9642b[_0xb609('0x1e')]=qs[_0xb609('0x1e')](_0x17102d[_0xb609('0x33')][_0xb609('0x1e')]);_0x9642b[_0xb609('0x1c')]=qs[_0xb609('0x1c')](_0x17102d['query'][_0xb609('0x1c')]);}_0x9642b[_0xb609('0x57')]=qs[_0xb609('0x3b')](_0x17102d[_0xb609('0x33')][_0xb609('0x3b')]);_0x9642b[_0xb609('0x3e')]=qs['filters'](_[_0xb609('0x3c')](_0x17102d[_0xb609('0x33')],_0x38b2ed[_0xb609('0x56')]));_0x9642b['where']['SmsQueueId']=_0x5219a4['id'];if(_0x17102d[_0xb609('0x33')]['filter']){_0x9642b[_0xb609('0x3e')]=_[_0xb609('0x40')](_0x9642b[_0xb609('0x3e')],{'$or':_['map'](_0x9642b[_0xb609('0x35')],function(_0x4946ee){var _0x2aaec1={};_0x2aaec1[_0x4946ee]={'$like':'%'+_0x17102d[_0xb609('0x33')][_0xb609('0x3d')]+'%'};return _0x2aaec1;})});}_0x9642b=_[_0xb609('0x40')]({},_0x9642b,_0x17102d[_0xb609('0x41')]);return db[_0xb609('0x55')]['findAll'](_0x9642b);}})[_0xb609('0x25')](function(_0x59bc20){if(_0x59bc20){return db['User'][_0xb609('0x58')]({'where':{'id':_[_0xb609('0x32')](_0x59bc20,_0xb609('0x59')),'role':'agent'},'attributes':['id',_0xb609('0x2b'),'smsPause',_0xb609('0x5a'),_0xb609('0x5b')]});}})[_0xb609('0x25')](function(_0x352650){if(_0x352650){return{'count':_0x352650[_0xb609('0x1f')],'rows':_[_0xb609('0x32')](_0x352650['rows'],function(_0x2c1ef8){return{'membername':_0x2c1ef8[_0xb609('0x2b')],'UserId':_0x2c1ef8['id'],'queue_name':_0x36c881['name'],'SmsQueueId':_0x36c881['id'],'interface':util['format']('%s/%s','SIP',_0x2c1ef8[_0xb609('0x2b')]),'penalty':0x0,'paused':_0x2c1ef8[_0xb609('0x5c')],'createdAt':_0x2c1ef8[_0xb609('0x5b')],'updatedAt':_0x2c1ef8[_0xb609('0x5a')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb609('0x25')](respondWithFilteredResult(_0x2fd745,_0x9642b))[_0xb609('0x45')](handleError(_0x2fd745,null));};exports['getTeams']=function(_0x2bb7e6,_0x4adb97,_0x34e32d){var _0x54a09d={};var _0x273fce={};var _0x3b0e81;var _0x2cac2b;return db[_0xb609('0x2c')][_0xb609('0x54')]({'where':{'id':_0x2bb7e6[_0xb609('0x47')]['id']}})[_0xb609('0x25')](handleEntityNotFound(_0x4adb97,null))['then'](function(_0x5d0ec3){if(_0x5d0ec3){_0x3b0e81=_0x5d0ec3;_0x273fce['model']=_['keys'](db['Team'][_0xb609('0x2d')]);_0x273fce[_0xb609('0x33')]=_[_0xb609('0x34')](_0x2bb7e6[_0xb609('0x33')]);_0x273fce[_0xb609('0x56')]=_[_0xb609('0x36')](_0x273fce[_0xb609('0x31')],_0x273fce[_0xb609('0x33')]);_0x54a09d['attributes']=_[_0xb609('0x36')](_0x273fce[_0xb609('0x31')],qs[_0xb609('0x37')](_0x2bb7e6[_0xb609('0x33')]['fields']));_0x54a09d['attributes']=_0x54a09d['attributes']['length']?_0x54a09d['attributes']:_0x273fce[_0xb609('0x31')];_0x54a09d[_0xb609('0x57')]=qs[_0xb609('0x3b')](_0x2bb7e6[_0xb609('0x33')][_0xb609('0x3b')]);_0x54a09d[_0xb609('0x3e')]=qs[_0xb609('0x56')](_[_0xb609('0x3c')](_0x2bb7e6[_0xb609('0x33')],_0x273fce['filters']));if(_0x2bb7e6[_0xb609('0x33')][_0xb609('0x3d')]){_0x54a09d[_0xb609('0x3e')]=_['merge'](_0x54a09d[_0xb609('0x3e')],{'$or':_[_0xb609('0x32')](_0x54a09d['attributes'],function(_0xd8bb22){var _0x12190b={};_0x12190b[_0xd8bb22]={'$like':'%'+_0x2bb7e6[_0xb609('0x33')][_0xb609('0x3d')]+'%'};return _0x12190b;})});}_0x54a09d=_['merge']({},_0x54a09d,_0x2bb7e6[_0xb609('0x41')]);return _0x3b0e81[_0xb609('0x5d')](_0x54a09d);}})[_0xb609('0x25')](function(_0x2b069b){if(_0x2b069b){_0x2cac2b=_0x2b069b[_0xb609('0x38')];if(!_0x2bb7e6[_0xb609('0x33')][_0xb609('0x39')](_0xb609('0x3a'))){_0x54a09d['limit']=qs[_0xb609('0x1e')](_0x2bb7e6['query'][_0xb609('0x1e')]);_0x54a09d[_0xb609('0x1c')]=qs[_0xb609('0x1c')](_0x2bb7e6[_0xb609('0x33')]['offset']);}return _0x3b0e81[_0xb609('0x5d')](_0x54a09d);}})[_0xb609('0x25')](function(_0x59b81f){if(_0x59b81f){return _0x59b81f?{'count':_0x2cac2b,'rows':_0x59b81f}:null;}})[_0xb609('0x25')](respondWithResult(_0x4adb97,null))['catch'](handleError(_0x4adb97,null));};exports[_0xb609('0x5e')]=function(_0x58ef9f,_0x5e13c8,_0x45050e){var _0x21fc07=_0x58ef9f[_0xb609('0x4a')][_0xb609('0x5f')];return db[_0xb609('0x60')]['findAll']({'where':{'id':_0x21fc07},'attributes':['id'],'include':[{'model':db[_0xb609('0x61')],'as':'Agents','attributes':['id',_0xb609('0x2b'),'online',_0xb609('0x62'),_0xb609('0x63')],'raw':!![]}]})[_0xb609('0x25')](function(_0x10871c){if(_0x10871c){var _0x427412=_[_0xb609('0x64')](_0x10871c,function(_0x34d845){var _0x4d3213=_0x34d845[_0xb609('0x26')]({'plain':!![]});return _0x4d3213['Agents'];});return db[_0xb609('0x2c')]['find']({'where':{'id':_0x58ef9f[_0xb609('0x47')]['id']}})[_0xb609('0x25')](function(_0x5c3503){return db[_0xb609('0x65')][_0xb609('0x66')](function(_0x3fe176){return _0x5c3503[_0xb609('0x5e')](_0x21fc07,{'transaction':_0x3fe176})[_0xb609('0x25')](function(){return BPromise[_0xb609('0x67')](_0x427412,function(_0x37cad0){return db['UserSmsQueue'][_0xb609('0x68')]({'where':{'UserId':_0x37cad0['id'],'SmsQueueId':_0x58ef9f['params']['id']},'transaction':_0x3fe176});});})['then'](function(){_0x427412[_0xb609('0x69')](function(_0xf7d75c){socket[_0xb609('0x6a')](_0xb609('0x6b'),{'UserId':_0xf7d75c['id'],'SmsQueueId':_0x5c3503['id']});});});});});}})[_0xb609('0x25')](respondWithStatusCode(_0x5e13c8,null))[_0xb609('0x45')](handleError(_0x5e13c8,null));};exports[_0xb609('0x6c')]=function(_0x52fc19,_0x5be0f1,_0x4d842b){return db['Team']['findAll']({'where':{'id':_0x52fc19[_0xb609('0x33')]['ids']},'attributes':['id'],'include':[{'model':db[_0xb609('0x61')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xb609('0x25')](handleEntityNotFound(_0x5be0f1,null))[_0xb609('0x25')](function(_0x53f44a){var _0x2f79d1=_[_0xb609('0x32')](_0x53f44a,'id');var _0x50d436=[];var _0x5a39e3=[];var _0x641ed3=squel[_0xb609('0x6d')]();_0x641ed3[_0xb609('0x6e')](_0xb609('0x6f'))[_0xb609('0x70')](_0xb609('0x71'),'tq')[_0xb609('0x72')]('user_has_teams','ut',_0xb609('0x73'))[_0xb609('0x3e')](_0xb609('0x74'),_0x52fc19[_0xb609('0x47')]['id']);for(var _0x425702=0x0;_0x425702<_0x53f44a[_0xb609('0x38')];_0x425702+=0x1){let _0x460568=_0x53f44a[_0x425702];for(var _0x1f043f=0x0;_0x1f043f<_0x460568[_0xb609('0x75')][_0xb609('0x38')];_0x1f043f+=0x1){let _0x9dd2cd=_0x460568[_0xb609('0x75')][_0x1f043f];var _0x4e4219=_0x641ed3[_0xb609('0x76')]();_0x4e4219[_0xb609('0x3e')]('ut.UserId\x20=\x20?',_0x9dd2cd['id']);_0x5a39e3['push'](db[_0xb609('0x65')][_0xb609('0x33')](_0x4e4219[_0xb609('0x77')](),{'type':db[_0xb609('0x65')][_0xb609('0x78')][_0xb609('0x79')]})[_0xb609('0x25')](function(_0x2a6e68){if(_0x2a6e68['length']===0x1){return _0x9dd2cd['id'];}else{var _0x3dc09d=_[_0xb609('0x7a')](_[_0xb609('0x32')](_0x2a6e68,_0xb609('0x7b')),function(_0x1648f4){return _[_0xb609('0x7c')](_0x2f79d1,_0x1648f4);});if(_0x3dc09d){return _0x9dd2cd['id'];}}}));}}return BPromise[_0xb609('0x7d')](_0x5a39e3)[_0xb609('0x25')](function(_0x43001f){_0x50d436=_(_0x50d436)['union'](_0x43001f)['compact']()[_0xb609('0x7e')]();return db[_0xb609('0x2c')][_0xb609('0x48')]({'where':{'id':_0x52fc19[_0xb609('0x47')]['id']}})[_0xb609('0x25')](function(_0x5c066d){return db['sequelize'][_0xb609('0x66')](function(_0x140f8c){return _0x5c066d['removeTeams'](_0x52fc19[_0xb609('0x33')][_0xb609('0x5f')],{'transaction':_0x140f8c})[_0xb609('0x25')](function(){if(!_[_0xb609('0x7f')](_0x50d436)){return _0x5c066d[_0xb609('0x80')](_0x50d436,{'transaction':_0x140f8c});}})['then'](function(){_0x50d436['forEach'](function(_0x509a06){socket['emit'](_0xb609('0x81'),{'UserId':_0x509a06,'SmsQueueId':_0x5c066d['id']});});});});});});})['then'](respondWithStatusCode(_0x5be0f1,null))[_0xb609('0x45')](handleError(_0x5be0f1,null));};exports[_0xb609('0x82')]=function(_0x4299d0,_0x3fbb97,_0x259b49){return db[_0xb609('0x2c')]['find']({'where':{'id':_0x4299d0[_0xb609('0x47')]['id']}})[_0xb609('0x25')](handleEntityNotFound(_0x3fbb97,null))['then'](function(_0x58f2f3){if(_0x58f2f3){return _0x58f2f3[_0xb609('0x82')](_0x4299d0[_0xb609('0x4a')][_0xb609('0x5f')],_['omit'](_0x4299d0[_0xb609('0x4a')],[_0xb609('0x5f'),'id'])||{})[_0xb609('0x83')](function(_0x3de06d){for(var _0x3af5d1=0x0;_0x3af5d1<_0x4299d0[_0xb609('0x4a')][_0xb609('0x5f')][_0xb609('0x38')];_0x3af5d1+=0x1){socket[_0xb609('0x6a')](_0xb609('0x6b'),{'UserId':Number(_0x4299d0[_0xb609('0x4a')][_0xb609('0x5f')][_0x3af5d1]),'SmsQueueId':Number(_0x4299d0['params']['id'])});}return _0x3de06d;});}})['then'](respondWithResult(_0x3fbb97,null))[_0xb609('0x45')](handleError(_0x3fbb97,null));};exports[_0xb609('0x80')]=function(_0x526df7,_0x484fb0,_0x332182){return db[_0xb609('0x2c')]['find']({'where':{'id':_0x526df7['params']['id']}})['then'](handleEntityNotFound(_0x484fb0,null))[_0xb609('0x25')](function(_0x1534db){if(_0x1534db){return _0x1534db['removeAgents'](_0x526df7[_0xb609('0x33')][_0xb609('0x5f')])[_0xb609('0x25')](function(){if(_[_0xb609('0x84')](_0x526df7[_0xb609('0x33')][_0xb609('0x5f')])){for(var _0x1ee6eb=0x0;_0x1ee6eb<_0x526df7[_0xb609('0x33')]['ids'][_0xb609('0x38')];_0x1ee6eb+=0x1){socket[_0xb609('0x6a')](_0xb609('0x81'),{'UserId':Number(_0x526df7[_0xb609('0x33')][_0xb609('0x5f')][_0x1ee6eb]),'SmsQueueId':Number(_0x526df7[_0xb609('0x47')]['id'])});}}else{socket['emit'](_0xb609('0x81'),{'UserId':Number(_0x526df7['query'][_0xb609('0x5f')]),'SmsQueueId':Number(_0x526df7[_0xb609('0x47')]['id'])});}});}})[_0xb609('0x25')](respondWithStatusCode(_0x484fb0,null))[_0xb609('0x45')](handleError(_0x484fb0,null));};exports[_0xb609('0x85')]=function(_0x3a0670,_0x3c02db,_0x13cc8d){var _0x418d36={};var _0x2be4f5={};var _0x138a9b;var _0xe98471;return db[_0xb609('0x2c')]['findOne']({'where':{'id':_0x3a0670[_0xb609('0x47')]['id']}})[_0xb609('0x25')](handleEntityNotFound(_0x3c02db,null))[_0xb609('0x25')](function(_0x54b31f){if(_0x54b31f){_0x138a9b=_0x54b31f;_0x2be4f5['model']=_[_0xb609('0x34')](db[_0xb609('0x61')][_0xb609('0x2d')]);_0x2be4f5[_0xb609('0x33')]=_[_0xb609('0x34')](_0x3a0670[_0xb609('0x33')]);_0x2be4f5[_0xb609('0x56')]=_[_0xb609('0x36')](_0x2be4f5[_0xb609('0x31')],_0x2be4f5[_0xb609('0x33')]);_0x418d36[_0xb609('0x35')]=_['intersection'](_0x2be4f5[_0xb609('0x31')],qs['fields'](_0x3a0670[_0xb609('0x33')][_0xb609('0x37')]));_0x418d36[_0xb609('0x35')]=_0x418d36[_0xb609('0x35')][_0xb609('0x38')]?_0x418d36['attributes']:_0x2be4f5[_0xb609('0x31')];_0x418d36['order']=qs[_0xb609('0x3b')](_0x3a0670[_0xb609('0x33')][_0xb609('0x3b')]);_0x418d36[_0xb609('0x3e')]=qs[_0xb609('0x56')](_[_0xb609('0x3c')](_0x3a0670[_0xb609('0x33')],_0x2be4f5[_0xb609('0x56')]));if(_0x3a0670[_0xb609('0x33')]['filter']){_0x418d36['where']=_[_0xb609('0x40')](_0x418d36[_0xb609('0x3e')],{'$or':_[_0xb609('0x32')](_0x418d36[_0xb609('0x35')],function(_0xabe43f){var _0xdb62bd={};_0xdb62bd[_0xabe43f]={'$like':'%'+_0x3a0670[_0xb609('0x33')][_0xb609('0x3d')]+'%'};return _0xdb62bd;})});}_0x418d36=_['merge']({},_0x418d36,_0x3a0670['options']);return _0x138a9b[_0xb609('0x85')](_0x418d36);}})['then'](function(_0x2c4995){if(_0x2c4995){_0xe98471=_0x2c4995[_0xb609('0x38')];if(!_0x3a0670[_0xb609('0x33')][_0xb609('0x39')]('nolimit')){_0x418d36[_0xb609('0x1e')]=qs[_0xb609('0x1e')](_0x3a0670[_0xb609('0x33')]['limit']);_0x418d36[_0xb609('0x1c')]=qs[_0xb609('0x1c')](_0x3a0670[_0xb609('0x33')][_0xb609('0x1c')]);}return _0x138a9b[_0xb609('0x85')](_0x418d36);}})[_0xb609('0x25')](function(_0x157e75){if(_0x157e75){return _0x157e75?{'count':_0xe98471,'rows':_0x157e75}:null;}})['then'](respondWithResult(_0x3c02db,null))['catch'](handleError(_0x3c02db,null));};
\ No newline at end of file
+var _0xf12f=['../../config/logger','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','SmsQueues','UserProfileResource','error','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','findAll','rows','catch','show','params','keys','includeAll','include','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserSmsQueue','hasOwnProperty','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','SIP','getTeams','Team','Agents','online','transaction','addTeams','emit','ids','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','push','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','isEmpty','forEach','userSmsQueue:remove','addAgents','omit','spread','userSmsQueue:save','removeAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0xf12f,0x104));var _0xff12=function(_0x23e90a,_0x4d1d4b){_0x23e90a=_0x23e90a-0x0;var _0x196d48=_0xf12f[_0x23e90a];return _0x196d48;};'use strict';var emlformat=require(_0xff12('0x0'));var rimraf=require(_0xff12('0x1'));var zipdir=require(_0xff12('0x2'));var jsonpatch=require(_0xff12('0x3'));var rp=require('request-promise');var moment=require(_0xff12('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xff12('0x5'));var util=require(_0xff12('0x6'));var path=require(_0xff12('0x7'));var sox=require(_0xff12('0x8'));var csv=require(_0xff12('0x9'));var ejs=require(_0xff12('0xa'));var fs=require('fs');var fs_extra=require(_0xff12('0xb'));var _=require('lodash');var squel=require(_0xff12('0xc'));var crypto=require('crypto');var jsforce=require(_0xff12('0xd'));var deskjs=require(_0xff12('0xe'));var toCsv=require(_0xff12('0x9'));var querystring=require(_0xff12('0xf'));var Papa=require(_0xff12('0x10'));var Redis=require('ioredis');var authService=require(_0xff12('0x11'));var qs=require(_0xff12('0x12'));var as=require(_0xff12('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xff12('0x14'))('api');var utils=require(_0xff12('0x15'));var config=require(_0xff12('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xff12('0x17')]=_[_0xff12('0x18')](config[_0xff12('0x17')],{'host':_0xff12('0x19'),'port':0x18eb});var socket=require(_0xff12('0x1a'))(new Redis(config[_0xff12('0x17')]));require(_0xff12('0x1b'))[_0xff12('0x1c')](socket);function respondWithStatusCode(_0x59c9a1,_0x9ea49d){_0x9ea49d=_0x9ea49d||0xcc;return function(_0x391cba){if(_0x391cba){return _0x59c9a1['sendStatus'](_0x9ea49d);}return _0x59c9a1['status'](_0x9ea49d)[_0xff12('0x1d')]();};}function respondWithResult(_0xa0e4d0,_0x47a6c3){_0x47a6c3=_0x47a6c3||0xc8;return function(_0x3733b0){if(_0x3733b0){return _0xa0e4d0[_0xff12('0x1e')](_0x47a6c3)[_0xff12('0x1f')](_0x3733b0);}};}function respondWithFilteredResult(_0x240836,_0x1368c1){return function(_0x3b346f){if(_0x3b346f){var _0x282aa0=typeof _0x1368c1[_0xff12('0x20')]===_0xff12('0x21')&&typeof _0x1368c1[_0xff12('0x22')]===_0xff12('0x21');var _0x543c55=_0x3b346f[_0xff12('0x23')];var _0x4a5806=_0x282aa0?0x0:_0x1368c1[_0xff12('0x20')];var _0x459c93=_0x282aa0?_0x3b346f[_0xff12('0x23')]:_0x1368c1['offset']+_0x1368c1[_0xff12('0x22')];var _0xa285a8;if(_0x459c93>=_0x543c55){_0x459c93=_0x543c55;_0xa285a8=0xc8;}else{_0xa285a8=0xce;}_0x240836[_0xff12('0x1e')](_0xa285a8);return _0x240836['set'](_0xff12('0x24'),_0x4a5806+'-'+_0x459c93+'/'+_0x543c55)['json'](_0x3b346f);}return null;};}function patchUpdates(_0x29cc04){return function(_0x18cb9b){try{jsonpatch[_0xff12('0x25')](_0x18cb9b,_0x29cc04,!![]);}catch(_0x517a85){return BPromise[_0xff12('0x26')](_0x517a85);}return _0x18cb9b[_0xff12('0x27')]();};}function saveUpdates(_0xcbdd41,_0xabcfa){return function(_0x1fa950){if(_0x1fa950){return _0x1fa950[_0xff12('0x28')](_0xcbdd41)[_0xff12('0x29')](function(_0x55bdc3){return _0x55bdc3;});}return null;};}function removeEntity(_0x294f73,_0x3989e7){return function(_0x1d1d59){if(_0x1d1d59){return _0x1d1d59[_0xff12('0x2a')]()[_0xff12('0x29')](function(){var _0x11ce4e=_0x1d1d59[_0xff12('0x2b')]({'plain':!![]});var _0x168a97=_0xff12('0x2c');return db[_0xff12('0x2d')][_0xff12('0x2a')]({'where':{'type':_0x168a97,'resourceId':_0x11ce4e['id']}})['then'](function(){return _0x1d1d59;});})[_0xff12('0x29')](function(){_0x294f73[_0xff12('0x1e')](0xcc)[_0xff12('0x1d')]();});}};}function handleEntityNotFound(_0x3b7409,_0x572c36){return function(_0x502994){if(!_0x502994){_0x3b7409['sendStatus'](0x194);}return _0x502994;};}function handleError(_0x136f13,_0x234ad4){_0x234ad4=_0x234ad4||0x1f4;return function(_0x342a35){logger[_0xff12('0x2e')](_0x342a35['stack']);if(_0x342a35[_0xff12('0x2f')]){delete _0x342a35['name'];}_0x136f13[_0xff12('0x1e')](_0x234ad4)[_0xff12('0x30')](_0x342a35);};}exports[_0xff12('0x31')]=function(_0x2b593e,_0x1a7777){var _0x51d077={},_0x8d2ff0={},_0x16ae30={'count':0x0,'rows':[]};var _0x3d2424=_[_0xff12('0x32')](db[_0xff12('0x33')][_0xff12('0x34')],function(_0x3ede07){return{'name':_0x3ede07[_0xff12('0x35')],'type':_0x3ede07[_0xff12('0x36')]['key']};});_0x8d2ff0[_0xff12('0x37')]=_[_0xff12('0x32')](_0x3d2424,_0xff12('0x2f'));_0x8d2ff0[_0xff12('0x38')]=_['keys'](_0x2b593e[_0xff12('0x38')]);_0x8d2ff0['filters']=_['intersection'](_0x8d2ff0['model'],_0x8d2ff0[_0xff12('0x38')]);_0x51d077[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x8d2ff0[_0xff12('0x37')],qs[_0xff12('0x3b')](_0x2b593e[_0xff12('0x38')][_0xff12('0x3b')]));_0x51d077['attributes']=_0x51d077[_0xff12('0x39')][_0xff12('0x3c')]?_0x51d077['attributes']:_0x8d2ff0[_0xff12('0x37')];if(!_0x2b593e['query']['hasOwnProperty'](_0xff12('0x3d'))){_0x51d077[_0xff12('0x22')]=qs[_0xff12('0x22')](_0x2b593e[_0xff12('0x38')][_0xff12('0x22')]);_0x51d077[_0xff12('0x20')]=qs['offset'](_0x2b593e[_0xff12('0x38')][_0xff12('0x20')]);}_0x51d077[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x2b593e[_0xff12('0x38')][_0xff12('0x3f')]);_0x51d077[_0xff12('0x40')]=qs[_0xff12('0x41')](_[_0xff12('0x42')](_0x2b593e[_0xff12('0x38')],_0x8d2ff0[_0xff12('0x41')]),_0x3d2424);if(_0x2b593e['query'][_0xff12('0x43')]){_0x51d077[_0xff12('0x40')]=_[_0xff12('0x44')](_0x51d077['where'],{'$or':_[_0xff12('0x32')](_0x3d2424,function(_0x3c7769){if(_0x3c7769[_0xff12('0x36')]!==_0xff12('0x45')){var _0x42353d={};_0x42353d[_0x3c7769['name']]={'$like':'%'+_0x2b593e['query'][_0xff12('0x43')]+'%'};return _0x42353d;}})});}_0x51d077=_['merge']({},_0x51d077,_0x2b593e['options']);var _0x685e69={'where':_0x51d077[_0xff12('0x40')]};return db[_0xff12('0x33')][_0xff12('0x23')](_0x685e69)['then'](function(_0x1cea17){_0x16ae30['count']=_0x1cea17;if(_0x2b593e[_0xff12('0x38')]['includeAll']){_0x51d077['include']=[{'all':!![]}];}return db[_0xff12('0x33')][_0xff12('0x46')](_0x51d077);})[_0xff12('0x29')](function(_0x42df87){_0x16ae30[_0xff12('0x47')]=_0x42df87;return _0x16ae30;})[_0xff12('0x29')](respondWithFilteredResult(_0x1a7777,_0x51d077))[_0xff12('0x48')](handleError(_0x1a7777,null));};exports[_0xff12('0x49')]=function(_0x137b7f,_0x4059a3){var _0x1d6137={'raw':!![],'where':{'id':_0x137b7f[_0xff12('0x4a')]['id']}},_0x3dd948={};_0x3dd948['model']=_[_0xff12('0x4b')](db[_0xff12('0x33')][_0xff12('0x34')]);_0x3dd948[_0xff12('0x38')]=_[_0xff12('0x4b')](_0x137b7f[_0xff12('0x38')]);_0x3dd948[_0xff12('0x41')]=_[_0xff12('0x3a')](_0x3dd948[_0xff12('0x37')],_0x3dd948[_0xff12('0x38')]);_0x1d6137[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x3dd948['model'],qs[_0xff12('0x3b')](_0x137b7f[_0xff12('0x38')]['fields']));_0x1d6137[_0xff12('0x39')]=_0x1d6137[_0xff12('0x39')][_0xff12('0x3c')]?_0x1d6137[_0xff12('0x39')]:_0x3dd948['model'];if(_0x137b7f[_0xff12('0x38')][_0xff12('0x4c')]){_0x1d6137[_0xff12('0x4d')]=[{'all':!![]}];}_0x1d6137=_[_0xff12('0x44')]({},_0x1d6137,_0x137b7f[_0xff12('0x4e')]);return db[_0xff12('0x33')][_0xff12('0x4f')](_0x1d6137)[_0xff12('0x29')](handleEntityNotFound(_0x4059a3,null))['then'](respondWithResult(_0x4059a3,null))['catch'](handleError(_0x4059a3,null));};exports['create']=function(_0xe8f9f,_0x4245b6){return db['SmsQueue'][_0xff12('0x50')](_0xe8f9f['body'],{})[_0xff12('0x29')](function(_0x224a0a){var _0x2478b4=_0xe8f9f[_0xff12('0x51')][_0xff12('0x2b')]({'plain':!![]});if(!_0x2478b4)throw new Error(_0xff12('0x52'));if(_0x2478b4[_0xff12('0x53')]===_0xff12('0x51')){var _0x47b1c9=_0x224a0a['get']({'plain':!![]});var _0x333d43='SmsQueues';return db[_0xff12('0x54')][_0xff12('0x4f')]({'where':{'name':_0x333d43,'userProfileId':_0x2478b4['userProfileId']},'raw':!![]})[_0xff12('0x29')](function(_0x322156){if(_0x322156&&_0x322156[_0xff12('0x55')]===0x0){return db[_0xff12('0x2d')]['create']({'name':_0x47b1c9['name'],'resourceId':_0x47b1c9['id'],'type':_0x322156['name'],'sectionId':_0x322156['id']},{})[_0xff12('0x29')](function(){return _0x224a0a;});}else{return _0x224a0a;}})[_0xff12('0x48')](function(_0x120185){logger[_0xff12('0x2e')](_0xff12('0x56'),_0x120185);throw _0x120185;});}return _0x224a0a;})[_0xff12('0x29')](respondWithResult(_0x4245b6,0xc9))[_0xff12('0x48')](handleError(_0x4245b6,null));};exports[_0xff12('0x28')]=function(_0x23d38d,_0x95f4e0){if(_0x23d38d[_0xff12('0x57')]['id']){delete _0x23d38d[_0xff12('0x57')]['id'];}return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x23d38d[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x95f4e0,null))[_0xff12('0x29')](saveUpdates(_0x23d38d[_0xff12('0x57')],null))[_0xff12('0x29')](respondWithResult(_0x95f4e0,null))[_0xff12('0x48')](handleError(_0x95f4e0,null));};exports['destroy']=function(_0x4e41f5,_0x3a6777){return db[_0xff12('0x33')]['find']({'where':{'id':_0x4e41f5[_0xff12('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3a6777,null))[_0xff12('0x29')](removeEntity(_0x3a6777,null))[_0xff12('0x48')](handleError(_0x3a6777,null));};exports[_0xff12('0x58')]=function(_0x10b7c3,_0x39fb0e){return db[_0xff12('0x33')]['describe']()['then'](respondWithResult(_0x39fb0e,null))[_0xff12('0x48')](handleError(_0x39fb0e,null));};exports[_0xff12('0x59')]=function(_0x1b5f80,_0x495d54,_0x28e03d){var _0x576810={'raw':!![],'where':{}},_0x3d7c75={},_0x4074e0;return db[_0xff12('0x33')][_0xff12('0x5a')]({'where':{'id':_0x1b5f80[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x495d54,null))[_0xff12('0x29')](function(_0x1603d9){if(_0x1603d9){_0x4074e0=_0x1603d9['get']({'plain':!![]});_0x3d7c75['model']=_[_0xff12('0x4b')](db[_0xff12('0x5b')][_0xff12('0x34')]);_0x3d7c75['query']=_[_0xff12('0x4b')](_0x1b5f80[_0xff12('0x38')]);_0x3d7c75['filters']=_['intersection'](_0x3d7c75['model'],_0x3d7c75['query']);_0x576810[_0xff12('0x39')]=_['intersection'](_0x3d7c75[_0xff12('0x37')],qs['fields'](_0x1b5f80[_0xff12('0x38')]['fields']));_0x576810['attributes']=_0x576810['attributes'][_0xff12('0x3c')]?_0x576810['attributes']:_0x3d7c75[_0xff12('0x37')];if(!_0x1b5f80['query'][_0xff12('0x5c')]('nolimit')){_0x576810[_0xff12('0x22')]=qs['limit'](_0x1b5f80[_0xff12('0x38')][_0xff12('0x22')]);_0x576810[_0xff12('0x20')]=qs['offset'](_0x1b5f80[_0xff12('0x38')][_0xff12('0x20')]);}_0x576810[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x1b5f80['query'][_0xff12('0x3f')]);_0x576810['where']=qs[_0xff12('0x41')](_[_0xff12('0x42')](_0x1b5f80[_0xff12('0x38')],_0x3d7c75[_0xff12('0x41')]));_0x576810[_0xff12('0x40')][_0xff12('0x5d')]=_0x1603d9['id'];if(_0x1b5f80[_0xff12('0x38')][_0xff12('0x43')]){_0x576810[_0xff12('0x40')]=_['merge'](_0x576810[_0xff12('0x40')],{'$or':_[_0xff12('0x32')](_0x576810[_0xff12('0x39')],function(_0x67b05b){var _0x195720={};_0x195720[_0x67b05b]={'$like':'%'+_0x1b5f80[_0xff12('0x38')]['filter']+'%'};return _0x195720;})});}_0x576810=_['merge']({},_0x576810,_0x1b5f80[_0xff12('0x4e')]);return db[_0xff12('0x5b')]['findAll'](_0x576810);}})['then'](function(_0x564da3){if(_0x564da3){return db[_0xff12('0x5e')][_0xff12('0x5f')]({'where':{'id':_['map'](_0x564da3,_0xff12('0x60')),'role':_0xff12('0x61')},'attributes':['id','name',_0xff12('0x62'),_0xff12('0x63'),_0xff12('0x64')]});}})[_0xff12('0x29')](function(_0x4b4cd3){if(_0x4b4cd3){return{'count':_0x4b4cd3[_0xff12('0x23')],'rows':_[_0xff12('0x32')](_0x4b4cd3[_0xff12('0x47')],function(_0x5cf238){return{'membername':_0x5cf238['name'],'UserId':_0x5cf238['id'],'queue_name':_0x4074e0[_0xff12('0x2f')],'SmsQueueId':_0x4074e0['id'],'interface':util['format']('%s/%s',_0xff12('0x65'),_0x5cf238['name']),'penalty':0x0,'paused':_0x5cf238['smsPause'],'createdAt':_0x5cf238[_0xff12('0x64')],'updatedAt':_0x5cf238['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xff12('0x29')](respondWithFilteredResult(_0x495d54,_0x576810))[_0xff12('0x48')](handleError(_0x495d54,null));};exports[_0xff12('0x66')]=function(_0x56b9da,_0x2d745b,_0x3dab43){var _0x50300f={};var _0x1b25f3={};var _0x459cf1;var _0xd707ac;return db['SmsQueue'][_0xff12('0x5a')]({'where':{'id':_0x56b9da[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x2d745b,null))[_0xff12('0x29')](function(_0x23c477){if(_0x23c477){_0x459cf1=_0x23c477;_0x1b25f3[_0xff12('0x37')]=_[_0xff12('0x4b')](db[_0xff12('0x67')][_0xff12('0x34')]);_0x1b25f3[_0xff12('0x38')]=_[_0xff12('0x4b')](_0x56b9da[_0xff12('0x38')]);_0x1b25f3[_0xff12('0x41')]=_['intersection'](_0x1b25f3[_0xff12('0x37')],_0x1b25f3[_0xff12('0x38')]);_0x50300f[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x1b25f3['model'],qs['fields'](_0x56b9da[_0xff12('0x38')][_0xff12('0x3b')]));_0x50300f[_0xff12('0x39')]=_0x50300f[_0xff12('0x39')][_0xff12('0x3c')]?_0x50300f[_0xff12('0x39')]:_0x1b25f3[_0xff12('0x37')];_0x50300f[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x56b9da[_0xff12('0x38')][_0xff12('0x3f')]);_0x50300f['where']=qs[_0xff12('0x41')](_[_0xff12('0x42')](_0x56b9da[_0xff12('0x38')],_0x1b25f3[_0xff12('0x41')]));if(_0x56b9da[_0xff12('0x38')]['filter']){_0x50300f['where']=_[_0xff12('0x44')](_0x50300f['where'],{'$or':_[_0xff12('0x32')](_0x50300f[_0xff12('0x39')],function(_0x52c01e){var _0x4e70c6={};_0x4e70c6[_0x52c01e]={'$like':'%'+_0x56b9da[_0xff12('0x38')][_0xff12('0x43')]+'%'};return _0x4e70c6;})});}_0x50300f=_['merge']({},_0x50300f,_0x56b9da[_0xff12('0x4e')]);return _0x459cf1['getTeams'](_0x50300f);}})[_0xff12('0x29')](function(_0xc7709a){if(_0xc7709a){_0xd707ac=_0xc7709a['length'];if(!_0x56b9da['query'][_0xff12('0x5c')](_0xff12('0x3d'))){_0x50300f[_0xff12('0x22')]=qs[_0xff12('0x22')](_0x56b9da[_0xff12('0x38')][_0xff12('0x22')]);_0x50300f[_0xff12('0x20')]=qs[_0xff12('0x20')](_0x56b9da[_0xff12('0x38')][_0xff12('0x20')]);}return _0x459cf1[_0xff12('0x66')](_0x50300f);}})[_0xff12('0x29')](function(_0x217232){if(_0x217232){return _0x217232?{'count':_0xd707ac,'rows':_0x217232}:null;}})[_0xff12('0x29')](respondWithResult(_0x2d745b,null))[_0xff12('0x48')](handleError(_0x2d745b,null));};exports['addTeams']=function(_0x58eb61,_0xa027da,_0x4268ef){var _0x503ed0=_0x58eb61[_0xff12('0x57')]['ids'];return db[_0xff12('0x67')][_0xff12('0x46')]({'where':{'id':_0x503ed0},'attributes':['id'],'include':[{'model':db[_0xff12('0x5e')],'as':_0xff12('0x68'),'attributes':['id',_0xff12('0x2f'),_0xff12('0x69'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x1bae47){if(_0x1bae47){var _0x24f152=_['flatMap'](_0x1bae47,function(_0x526959){var _0x56401f=_0x526959['get']({'plain':!![]});return _0x56401f[_0xff12('0x68')];});return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x58eb61[_0xff12('0x4a')]['id']}})['then'](function(_0x573a1b){return db['sequelize'][_0xff12('0x6a')](function(_0x577bb6){return _0x573a1b[_0xff12('0x6b')](_0x503ed0,{'transaction':_0x577bb6})[_0xff12('0x29')](function(){return BPromise['each'](_0x24f152,function(_0x535ed8){return db[_0xff12('0x5b')]['findOrCreate']({'where':{'UserId':_0x535ed8['id'],'SmsQueueId':_0x58eb61[_0xff12('0x4a')]['id']},'transaction':_0x577bb6});});})[_0xff12('0x29')](function(){_0x24f152['forEach'](function(_0x2d4daa){socket[_0xff12('0x6c')]('userSmsQueue:save',{'UserId':_0x2d4daa['id'],'SmsQueueId':_0x573a1b['id']});});});});});}})[_0xff12('0x29')](respondWithStatusCode(_0xa027da,null))[_0xff12('0x48')](handleError(_0xa027da,null));};exports['removeTeams']=function(_0x515ef8,_0x282df8,_0x28bb51){return db[_0xff12('0x67')][_0xff12('0x46')]({'where':{'id':_0x515ef8['query'][_0xff12('0x6d')]},'attributes':['id'],'include':[{'model':db[_0xff12('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xff12('0x29')](handleEntityNotFound(_0x282df8,null))['then'](function(_0x3109b9){var _0x5cecba=_['map'](_0x3109b9,'id');var _0xc0a69f=[];var _0x5b99db=[];var _0x295328=squel[_0xff12('0x6e')]();_0x295328[_0xff12('0x6f')](_0xff12('0x70'))[_0xff12('0x71')]('team_has_sms_queues','tq')['join'](_0xff12('0x72'),'ut',_0xff12('0x73'))[_0xff12('0x40')]('SmsQueueId\x20=\x20?',_0x515ef8['params']['id']);for(var _0x58e224=0x0;_0x58e224<_0x3109b9[_0xff12('0x3c')];_0x58e224+=0x1){let _0x4870d7=_0x3109b9[_0x58e224];for(var _0x24459f=0x0;_0x24459f<_0x4870d7['Agents'][_0xff12('0x3c')];_0x24459f+=0x1){let _0x34c100=_0x4870d7[_0xff12('0x68')][_0x24459f];var _0xa68acc=_0x295328[_0xff12('0x74')]();_0xa68acc[_0xff12('0x40')]('ut.UserId\x20=\x20?',_0x34c100['id']);_0x5b99db[_0xff12('0x75')](db[_0xff12('0x76')][_0xff12('0x38')](_0xa68acc[_0xff12('0x77')](),{'type':db[_0xff12('0x76')][_0xff12('0x78')][_0xff12('0x79')]})[_0xff12('0x29')](function(_0x30ea44){if(_0x30ea44[_0xff12('0x3c')]===0x1){return _0x34c100['id'];}else{var _0x35a31d=_[_0xff12('0x7a')](_['map'](_0x30ea44,_0xff12('0x7b')),function(_0x492c15){return _[_0xff12('0x7c')](_0x5cecba,_0x492c15);});if(_0x35a31d){return _0x34c100['id'];}}}));}}return BPromise[_0xff12('0x7d')](_0x5b99db)[_0xff12('0x29')](function(_0x1d49d1){_0xc0a69f=_(_0xc0a69f)[_0xff12('0x7e')](_0x1d49d1)[_0xff12('0x7f')]()[_0xff12('0x80')]();return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x515ef8['params']['id']}})[_0xff12('0x29')](function(_0x376bc5){return db[_0xff12('0x76')][_0xff12('0x6a')](function(_0x360b0c){return _0x376bc5[_0xff12('0x81')](_0x515ef8['query'][_0xff12('0x6d')],{'transaction':_0x360b0c})[_0xff12('0x29')](function(){if(!_[_0xff12('0x82')](_0xc0a69f)){return _0x376bc5['removeAgents'](_0xc0a69f,{'transaction':_0x360b0c});}})[_0xff12('0x29')](function(){_0xc0a69f[_0xff12('0x83')](function(_0x397dc3){socket[_0xff12('0x6c')](_0xff12('0x84'),{'UserId':_0x397dc3,'SmsQueueId':_0x376bc5['id']});});});});});});})[_0xff12('0x29')](respondWithStatusCode(_0x282df8,null))['catch'](handleError(_0x282df8,null));};exports['addAgents']=function(_0x10806b,_0x5ec239,_0xa2280a){return db[_0xff12('0x33')]['find']({'where':{'id':_0x10806b['params']['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x5ec239,null))[_0xff12('0x29')](function(_0x13f2de){if(_0x13f2de){return _0x13f2de[_0xff12('0x85')](_0x10806b[_0xff12('0x57')]['ids'],_[_0xff12('0x86')](_0x10806b['body'],['ids','id'])||{})[_0xff12('0x87')](function(_0x5c5fe4){for(var _0x1f23e8=0x0;_0x1f23e8<_0x10806b[_0xff12('0x57')][_0xff12('0x6d')]['length'];_0x1f23e8+=0x1){socket['emit'](_0xff12('0x88'),{'UserId':Number(_0x10806b[_0xff12('0x57')][_0xff12('0x6d')][_0x1f23e8]),'SmsQueueId':Number(_0x10806b['params']['id'])});}return _0x5c5fe4;});}})['then'](respondWithResult(_0x5ec239,null))[_0xff12('0x48')](handleError(_0x5ec239,null));};exports[_0xff12('0x89')]=function(_0x55fae1,_0x343256,_0x15d40a){return db[_0xff12('0x33')][_0xff12('0x4f')]({'where':{'id':_0x55fae1[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x343256,null))[_0xff12('0x29')](function(_0x365b3c){if(_0x365b3c){return _0x365b3c[_0xff12('0x89')](_0x55fae1['query'][_0xff12('0x6d')])[_0xff12('0x29')](function(){if(_[_0xff12('0x8a')](_0x55fae1['query'][_0xff12('0x6d')])){for(var _0x51da6c=0x0;_0x51da6c<_0x55fae1[_0xff12('0x38')][_0xff12('0x6d')][_0xff12('0x3c')];_0x51da6c+=0x1){socket[_0xff12('0x6c')]('userSmsQueue:remove',{'UserId':Number(_0x55fae1[_0xff12('0x38')][_0xff12('0x6d')][_0x51da6c]),'SmsQueueId':Number(_0x55fae1[_0xff12('0x4a')]['id'])});}}else{socket[_0xff12('0x6c')](_0xff12('0x84'),{'UserId':Number(_0x55fae1[_0xff12('0x38')][_0xff12('0x6d')]),'SmsQueueId':Number(_0x55fae1[_0xff12('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x343256,null))[_0xff12('0x48')](handleError(_0x343256,null));};exports['getAgents']=function(_0x5198f2,_0x52da1a,_0x19cc1f){var _0x27e8f6={};var _0x4c50af={};var _0x4ae5e2;var _0x4c6f1d;return db[_0xff12('0x33')][_0xff12('0x5a')]({'where':{'id':_0x5198f2[_0xff12('0x4a')]['id']}})[_0xff12('0x29')](handleEntityNotFound(_0x52da1a,null))['then'](function(_0x41bc8e){if(_0x41bc8e){_0x4ae5e2=_0x41bc8e;_0x4c50af[_0xff12('0x37')]=_['keys'](db['User'][_0xff12('0x34')]);_0x4c50af[_0xff12('0x38')]=_['keys'](_0x5198f2[_0xff12('0x38')]);_0x4c50af['filters']=_[_0xff12('0x3a')](_0x4c50af[_0xff12('0x37')],_0x4c50af[_0xff12('0x38')]);_0x27e8f6[_0xff12('0x39')]=_[_0xff12('0x3a')](_0x4c50af[_0xff12('0x37')],qs[_0xff12('0x3b')](_0x5198f2[_0xff12('0x38')]['fields']));_0x27e8f6[_0xff12('0x39')]=_0x27e8f6[_0xff12('0x39')][_0xff12('0x3c')]?_0x27e8f6[_0xff12('0x39')]:_0x4c50af[_0xff12('0x37')];_0x27e8f6[_0xff12('0x3e')]=qs[_0xff12('0x3f')](_0x5198f2[_0xff12('0x38')][_0xff12('0x3f')]);_0x27e8f6[_0xff12('0x40')]=qs[_0xff12('0x41')](_['pick'](_0x5198f2[_0xff12('0x38')],_0x4c50af[_0xff12('0x41')]));if(_0x5198f2[_0xff12('0x38')][_0xff12('0x43')]){_0x27e8f6['where']=_['merge'](_0x27e8f6[_0xff12('0x40')],{'$or':_[_0xff12('0x32')](_0x27e8f6['attributes'],function(_0x563ec8){var _0xea0514={};_0xea0514[_0x563ec8]={'$like':'%'+_0x5198f2[_0xff12('0x38')][_0xff12('0x43')]+'%'};return _0xea0514;})});}_0x27e8f6=_[_0xff12('0x44')]({},_0x27e8f6,_0x5198f2[_0xff12('0x4e')]);return _0x4ae5e2['getAgents'](_0x27e8f6);}})[_0xff12('0x29')](function(_0x58a046){if(_0x58a046){_0x4c6f1d=_0x58a046[_0xff12('0x3c')];if(!_0x5198f2[_0xff12('0x38')]['hasOwnProperty'](_0xff12('0x3d'))){_0x27e8f6[_0xff12('0x22')]=qs[_0xff12('0x22')](_0x5198f2['query'][_0xff12('0x22')]);_0x27e8f6[_0xff12('0x20')]=qs[_0xff12('0x20')](_0x5198f2[_0xff12('0x38')][_0xff12('0x20')]);}return _0x4ae5e2[_0xff12('0x8b')](_0x27e8f6);}})[_0xff12('0x29')](function(_0x2709ae){if(_0x2709ae){return _0x2709ae?{'count':_0x4c6f1d,'rows':_0x2709ae}:null;}})[_0xff12('0x29')](respondWithResult(_0x52da1a,null))[_0xff12('0x48')](handleError(_0x52da1a,null));};
\ No newline at end of file
index 8585e57..409b694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa16e=['emit','hasOwnProperty','hook','exports','../../mysqldb','SmsQueue','setMaxListeners','save','remove'];(function(_0x109861,_0x1dec8a){var _0x1befb3=function(_0x357030){while(--_0x357030){_0x109861['push'](_0x109861['shift']());}};_0x1befb3(++_0x1dec8a);}(_0xa16e,0xd3));var _0xea16=function(_0x5acb1f,_0x420ecf){_0x5acb1f=_0x5acb1f-0x0;var _0x2f97de=_0xa16e[_0x5acb1f];return _0x2f97de;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0xea16('0x0'))['db'][_0xea16('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xea16('0x2')](0x0);var events={'afterCreate':_0xea16('0x3'),'afterUpdate':'update','afterDestroy':_0xea16('0x4')};function emitEvent(_0x57d04f){return function(_0x4ab6d8,_0x43b971,_0xc08331){SmsQueueEvents[_0xea16('0x5')](_0x57d04f+':'+_0x4ab6d8['id'],_0x4ab6d8);SmsQueueEvents['emit'](_0x57d04f,_0x4ab6d8);_0xc08331(null);};}for(var e in events){if(events[_0xea16('0x6')](e)){var event=events[e];SmsQueue[_0xea16('0x7')](e,emitEvent(event));}}module[_0xea16('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0xfac6=['exports','../../mysqldb','SmsQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xfac6,0x18d));var _0x6fac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfac6[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x6fac('0x0'))['db'][_0x6fac('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x6fac('0x2')](0x0);var events={'afterCreate':_0x6fac('0x3'),'afterUpdate':'update','afterDestroy':_0x6fac('0x4')};function emitEvent(_0x493606){return function(_0x53dbdc,_0x56b66c,_0x23bf9f){SmsQueueEvents['emit'](_0x493606+':'+_0x53dbdc['id'],_0x53dbdc);SmsQueueEvents[_0x6fac('0x5')](_0x493606,_0x53dbdc);_0x23bf9f(null);};}for(var e in events){if(events[_0x6fac('0x6')](e)){var event=events[e];SmsQueue[_0x6fac('0x7')](e,emitEvent(event));}}module[_0x6fac('0x8')]=SmsQueueEvents;
\ No newline at end of file
index c69b280..425e49b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa084=['bluebird','path','../../config/environment','define','SmsQueue','lodash','util','../../config/logger','api','moment'];(function(_0xfd8e00,_0x2e2928){var _0x315f8e=function(_0x51ee5c){while(--_0x51ee5c){_0xfd8e00['push'](_0xfd8e00['shift']());}};_0x315f8e(++_0x2e2928);}(_0xa084,0xe1));var _0x4a08=function(_0x31e8f1,_0xb5b06f){_0x31e8f1=_0x31e8f1-0x0;var _0x3f8b14=_0xa084[_0x31e8f1];return _0x3f8b14;};'use strict';var _=require(_0x4a08('0x0'));var util=require(_0x4a08('0x1'));var logger=require(_0x4a08('0x2'))(_0x4a08('0x3'));var moment=require(_0x4a08('0x4'));var BPromise=require(_0x4a08('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4a08('0x6'));var rimraf=require('rimraf');var config=require(_0x4a08('0x7'));var attributes=require('./smsQueue.attributes');module['exports']=function(_0x421f55,_0x537561){return _0x421f55[_0x4a08('0x8')](_0x4a08('0x9'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a7e=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsQueue.attributes','exports','define','sms_queues'];(function(_0x501336,_0x3dd3ea){var _0x458774=function(_0x1664bf){while(--_0x1664bf){_0x501336['push'](_0x501336['shift']());}};_0x458774(++_0x3dd3ea);}(_0x7a7e,0x1ad));var _0xe7a7=function(_0x12aa46,_0x3692db){_0x12aa46=_0x12aa46-0x0;var _0x4dc44c=_0x7a7e[_0x12aa46];return _0x4dc44c;};'use strict';var _=require(_0xe7a7('0x0'));var util=require('util');var logger=require(_0xe7a7('0x1'))(_0xe7a7('0x2'));var moment=require(_0xe7a7('0x3'));var BPromise=require(_0xe7a7('0x4'));var rp=require(_0xe7a7('0x5'));var fs=require('fs');var path=require(_0xe7a7('0x6'));var rimraf=require(_0xe7a7('0x7'));var config=require(_0xe7a7('0x8'));var attributes=require(_0xe7a7('0x9'));module[_0xe7a7('0xa')]=function(_0x24e1cf,_0x3227d5){return _0x24e1cf[_0xe7a7('0xb')]('SmsQueue',attributes,{'tableName':_0xe7a7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a616091..958c48d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75d6=['find','where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','./smsQueue.socket','register','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SmsQueue','findAll','options','raw','attributes','include','map','model','GetSmsQueue','catch','ShowSmsQueue'];(function(_0x496220,_0x2f748d){var _0x1fc9c0=function(_0x10e7c3){while(--_0x10e7c3){_0x496220['push'](_0x496220['shift']());}};_0x1fc9c0(++_0x2f748d);}(_0x75d6,0x9a));var _0x675d=function(_0x27c24e,_0x5db1c7){_0x27c24e=_0x27c24e-0x0;var _0x39004a=_0x75d6[_0x27c24e];return _0x39004a;};'use strict';var _=require(_0x675d('0x0'));var util=require(_0x675d('0x1'));var moment=require(_0x675d('0x2'));var BPromise=require('bluebird');var rs=require(_0x675d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x675d('0x4'))['db'];var utils=require(_0x675d('0x5'));var logger=require(_0x675d('0x6'))(_0x675d('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x675d('0x8')][_0x675d('0x9')]({'port':0x232a});config[_0x675d('0xa')]=_[_0x675d('0xb')](config[_0x675d('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x675d('0xa')]));require(_0x675d('0xc'))[_0x675d('0xd')](socket);function respondWithRpcPromise(_0x4315e1,_0x40d8fe,_0x45d56f){return new BPromise(function(_0x3bdeb7,_0x62bb3b){return client['request'](_0x4315e1,_0x45d56f)[_0x675d('0xe')](function(_0x36ef08){logger[_0x675d('0xf')](_0x675d('0x10'),_0x40d8fe,_0x675d('0x11'));logger[_0x675d('0x12')](_0x675d('0x13'),_0x40d8fe,_0x675d('0x11'),JSON[_0x675d('0x14')](_0x36ef08));if(_0x36ef08[_0x675d('0x15')]){if(_0x36ef08[_0x675d('0x15')][_0x675d('0x16')]===0x1f4){logger[_0x675d('0x15')](_0x675d('0x10'),_0x40d8fe,_0x36ef08[_0x675d('0x15')][_0x675d('0x17')]);return _0x62bb3b(_0x36ef08[_0x675d('0x15')][_0x675d('0x17')]);}logger[_0x675d('0x15')](_0x675d('0x10'),_0x40d8fe,_0x36ef08['error'][_0x675d('0x17')]);return _0x3bdeb7(_0x36ef08[_0x675d('0x15')][_0x675d('0x17')]);}else{logger['info'](_0x675d('0x10'),_0x40d8fe,_0x675d('0x11'));_0x3bdeb7(_0x36ef08[_0x675d('0x18')][_0x675d('0x17')]);}})['catch'](function(_0x50cdd2){logger['error'](_0x675d('0x10'),_0x40d8fe,_0x50cdd2);_0x62bb3b(_0x50cdd2);});});}exports['GetSmsQueue']=function(_0x4dc9e8){var _0x11a6e2=this;return new Promise(function(_0x41a192,_0x17ba2d){return db[_0x675d('0x19')][_0x675d('0x1a')]({'raw':_0x4dc9e8[_0x675d('0x1b')]?_0x4dc9e8['options'][_0x675d('0x1c')]===undefined?!![]:![]:!![],'where':_0x4dc9e8[_0x675d('0x1b')]?_0x4dc9e8[_0x675d('0x1b')]['where']||null:null,'attributes':_0x4dc9e8[_0x675d('0x1b')]?_0x4dc9e8[_0x675d('0x1b')][_0x675d('0x1d')]||null:null,'limit':_0x4dc9e8['options']?_0x4dc9e8[_0x675d('0x1b')]['limit']||null:null,'include':_0x4dc9e8[_0x675d('0x1b')]?_0x4dc9e8[_0x675d('0x1b')][_0x675d('0x1e')]?_['map'](_0x4dc9e8[_0x675d('0x1b')][_0x675d('0x1e')],function(_0x1f3311){return{'model':db[_0x1f3311['model']],'as':_0x1f3311['as'],'attributes':_0x1f3311['attributes'],'include':_0x1f3311['include']?_[_0x675d('0x1f')](_0x1f3311[_0x675d('0x1e')],function(_0x6f117a){return{'model':db[_0x6f117a[_0x675d('0x20')]],'as':_0x6f117a['as'],'attributes':_0x6f117a[_0x675d('0x1d')],'include':_0x6f117a['include']?_[_0x675d('0x1f')](_0x6f117a[_0x675d('0x1e')],function(_0x3f0074){return{'model':db[_0x3f0074['model']],'as':_0x3f0074['as'],'attributes':_0x3f0074[_0x675d('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x675d('0xe')](function(_0x1defa4){logger[_0x675d('0xf')](_0x675d('0x21'),_0x4dc9e8);logger[_0x675d('0x12')](_0x675d('0x21'),_0x4dc9e8,JSON[_0x675d('0x14')](_0x1defa4));_0x41a192(_0x1defa4);})[_0x675d('0x22')](function(_0x4238b7){logger[_0x675d('0x15')](_0x675d('0x21'),_0x4238b7['message'],_0x4dc9e8);_0x17ba2d(_0x11a6e2['error'](0x1f4,_0x4238b7[_0x675d('0x17')]));});});};exports[_0x675d('0x23')]=function(_0x476ecf){var _0x476052=this;return new Promise(function(_0x5aa464,_0x2b12a6){return db[_0x675d('0x19')][_0x675d('0x24')]({'raw':_0x476ecf[_0x675d('0x1b')]?_0x476ecf[_0x675d('0x1b')][_0x675d('0x1c')]===undefined?!![]:![]:!![],'where':_0x476ecf[_0x675d('0x1b')]?_0x476ecf[_0x675d('0x1b')][_0x675d('0x25')]||null:null,'attributes':_0x476ecf[_0x675d('0x1b')]?_0x476ecf[_0x675d('0x1b')][_0x675d('0x1d')]||null:null,'include':_0x476ecf['options']?_0x476ecf[_0x675d('0x1b')][_0x675d('0x1e')]?_[_0x675d('0x1f')](_0x476ecf['options'][_0x675d('0x1e')],function(_0x37a3fd){return{'model':db[_0x37a3fd[_0x675d('0x20')]],'as':_0x37a3fd['as'],'attributes':_0x37a3fd[_0x675d('0x1d')],'include':_0x37a3fd['include']?_[_0x675d('0x1f')](_0x37a3fd[_0x675d('0x1e')],function(_0x5cdced){return{'model':db[_0x5cdced[_0x675d('0x20')]],'as':_0x5cdced['as'],'attributes':_0x5cdced[_0x675d('0x1d')],'include':_0x5cdced[_0x675d('0x1e')]?_[_0x675d('0x1f')](_0x5cdced['include'],function(_0x56b47d){return{'model':db[_0x56b47d[_0x675d('0x20')]],'as':_0x56b47d['as'],'attributes':_0x56b47d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x130738){logger['info'](_0x675d('0x23'),_0x476ecf);logger[_0x675d('0x12')](_0x675d('0x23'),_0x476ecf,JSON[_0x675d('0x14')](_0x130738));_0x5aa464(_0x130738);})[_0x675d('0x22')](function(_0x2e7def){logger['error'](_0x675d('0x23'),_0x2e7def[_0x675d('0x17')],_0x476ecf);_0x2b12a6(_0x476052['error'](0x1f4,_0x2e7def[_0x675d('0x17')]));});});};
\ No newline at end of file
+var _0x6c73=['../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetSmsQueue','SmsQueue','findAll','options','attributes','limit','include','model','map','info','ShowSmsQueue','raw','where','util','moment','bluebird','randomstring','ioredis'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6c73,0x10c));var _0x36c7=function(_0x282e7a,_0x36d4ed){_0x282e7a=_0x282e7a-0x0;var _0x1395cc=_0x6c73[_0x282e7a];return _0x1395cc;};'use strict';var _=require('lodash');var util=require(_0x36c7('0x0'));var moment=require(_0x36c7('0x1'));var BPromise=require(_0x36c7('0x2'));var rs=require(_0x36c7('0x3'));var fs=require('fs');var Redis=require(_0x36c7('0x4'));var db=require(_0x36c7('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x36c7('0x6'));var config=require(_0x36c7('0x7'));var jayson=require(_0x36c7('0x8'));var client=jayson[_0x36c7('0x9')][_0x36c7('0xa')]({'port':0x232a});config[_0x36c7('0xb')]=_['defaults'](config[_0x36c7('0xb')],{'host':_0x36c7('0xc'),'port':0x18eb});var socket=require(_0x36c7('0xd'))(new Redis(config[_0x36c7('0xb')]));require('./smsQueue.socket')[_0x36c7('0xe')](socket);function respondWithRpcPromise(_0x11452f,_0x38171d,_0x4a9182){return new BPromise(function(_0xf5bc4,_0xdf55b2){return client[_0x36c7('0xf')](_0x11452f,_0x4a9182)[_0x36c7('0x10')](function(_0x570e4e){logger['info'](_0x36c7('0x11'),_0x38171d,_0x36c7('0x12'));logger[_0x36c7('0x13')](_0x36c7('0x14'),_0x38171d,_0x36c7('0x12'),JSON[_0x36c7('0x15')](_0x570e4e));if(_0x570e4e[_0x36c7('0x16')]){if(_0x570e4e[_0x36c7('0x16')]['code']===0x1f4){logger[_0x36c7('0x16')](_0x36c7('0x11'),_0x38171d,_0x570e4e[_0x36c7('0x16')][_0x36c7('0x17')]);return _0xdf55b2(_0x570e4e['error'][_0x36c7('0x17')]);}logger[_0x36c7('0x16')]('SmsQueue,\x20%s,\x20%s',_0x38171d,_0x570e4e[_0x36c7('0x16')][_0x36c7('0x17')]);return _0xf5bc4(_0x570e4e[_0x36c7('0x16')][_0x36c7('0x17')]);}else{logger['info']('SmsQueue,\x20%s,\x20%s',_0x38171d,'request\x20sent');_0xf5bc4(_0x570e4e[_0x36c7('0x18')][_0x36c7('0x17')]);}})[_0x36c7('0x19')](function(_0x488da8){logger[_0x36c7('0x16')]('SmsQueue,\x20%s,\x20%s',_0x38171d,_0x488da8);_0xdf55b2(_0x488da8);});});}exports[_0x36c7('0x1a')]=function(_0x543833){var _0x4f564c=this;return new Promise(function(_0x55eb97,_0x2602a5){return db[_0x36c7('0x1b')][_0x36c7('0x1c')]({'raw':_0x543833[_0x36c7('0x1d')]?_0x543833[_0x36c7('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x543833['options']?_0x543833[_0x36c7('0x1d')]['where']||null:null,'attributes':_0x543833[_0x36c7('0x1d')]?_0x543833[_0x36c7('0x1d')][_0x36c7('0x1e')]||null:null,'limit':_0x543833['options']?_0x543833[_0x36c7('0x1d')][_0x36c7('0x1f')]||null:null,'include':_0x543833['options']?_0x543833[_0x36c7('0x1d')][_0x36c7('0x20')]?_['map'](_0x543833['options'][_0x36c7('0x20')],function(_0x292b24){return{'model':db[_0x292b24[_0x36c7('0x21')]],'as':_0x292b24['as'],'attributes':_0x292b24[_0x36c7('0x1e')],'include':_0x292b24[_0x36c7('0x20')]?_['map'](_0x292b24[_0x36c7('0x20')],function(_0x38cf2f){return{'model':db[_0x38cf2f[_0x36c7('0x21')]],'as':_0x38cf2f['as'],'attributes':_0x38cf2f[_0x36c7('0x1e')],'include':_0x38cf2f[_0x36c7('0x20')]?_[_0x36c7('0x22')](_0x38cf2f[_0x36c7('0x20')],function(_0x107f67){return{'model':db[_0x107f67['model']],'as':_0x107f67['as'],'attributes':_0x107f67[_0x36c7('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x36c7('0x10')](function(_0x2f3833){logger[_0x36c7('0x23')](_0x36c7('0x1a'),_0x543833);logger['debug'](_0x36c7('0x1a'),_0x543833,JSON[_0x36c7('0x15')](_0x2f3833));_0x55eb97(_0x2f3833);})['catch'](function(_0x1d9c4d){logger[_0x36c7('0x16')](_0x36c7('0x1a'),_0x1d9c4d[_0x36c7('0x17')],_0x543833);_0x2602a5(_0x4f564c[_0x36c7('0x16')](0x1f4,_0x1d9c4d[_0x36c7('0x17')]));});});};exports[_0x36c7('0x24')]=function(_0x280dee){var _0x406b41=this;return new Promise(function(_0x59f5d4,_0x5bc55e){return db[_0x36c7('0x1b')]['find']({'raw':_0x280dee[_0x36c7('0x1d')]?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x25')]===undefined?!![]:![]:!![],'where':_0x280dee['options']?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x26')]||null:null,'attributes':_0x280dee['options']?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x1e')]||null:null,'include':_0x280dee[_0x36c7('0x1d')]?_0x280dee[_0x36c7('0x1d')][_0x36c7('0x20')]?_['map'](_0x280dee[_0x36c7('0x1d')]['include'],function(_0x414a30){return{'model':db[_0x414a30['model']],'as':_0x414a30['as'],'attributes':_0x414a30[_0x36c7('0x1e')],'include':_0x414a30[_0x36c7('0x20')]?_[_0x36c7('0x22')](_0x414a30[_0x36c7('0x20')],function(_0xc0a2a1){return{'model':db[_0xc0a2a1[_0x36c7('0x21')]],'as':_0xc0a2a1['as'],'attributes':_0xc0a2a1['attributes'],'include':_0xc0a2a1['include']?_['map'](_0xc0a2a1[_0x36c7('0x20')],function(_0x463dc7){return{'model':db[_0x463dc7[_0x36c7('0x21')]],'as':_0x463dc7['as'],'attributes':_0x463dc7[_0x36c7('0x1e')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x525a0f){logger[_0x36c7('0x23')]('ShowSmsQueue',_0x280dee);logger[_0x36c7('0x13')](_0x36c7('0x24'),_0x280dee,JSON[_0x36c7('0x15')](_0x525a0f));_0x59f5d4(_0x525a0f);})['catch'](function(_0x4f2059){logger['error'](_0x36c7('0x24'),_0x4f2059['message'],_0x280dee);_0x5bc55e(_0x406b41[_0x36c7('0x16')](0x1f4,_0x4f2059[_0x36c7('0x17')]));});});};
\ No newline at end of file
index 2ee7831..1359974 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ccf=['save','remove','update','emit','removeListener','register','length','smsQueue:','./smsQueue.events'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0x8ccf,0x104));var _0xf8cc=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x8ccf[_0x2dafbe];return _0x58a45a;};'use strict';var SmsQueueEvents=require(_0xf8cc('0x0'));var events=[_0xf8cc('0x1'),_0xf8cc('0x2'),_0xf8cc('0x3')];function createListener(_0x375dd1,_0x77e051){return function(_0x30465){_0x77e051[_0xf8cc('0x4')](_0x375dd1,_0x30465);};}function removeListener(_0x13622f,_0x221cf8){return function(){SmsQueueEvents[_0xf8cc('0x5')](_0x13622f,_0x221cf8);};}exports[_0xf8cc('0x6')]=function(_0x33e21a){for(var _0x3053fa=0x0,_0x313d46=events[_0xf8cc('0x7')];_0x3053fa<_0x313d46;_0x3053fa++){var _0x28c0f1=events[_0x3053fa];var _0x452db4=createListener(_0xf8cc('0x8')+_0x28c0f1,_0x33e21a);SmsQueueEvents['on'](_0x28c0f1,_0x452db4);}};
\ No newline at end of file
+var _0xd075=['removeListener','register','save','remove','update'];(function(_0x163040,_0x38a58c){var _0x364667=function(_0x3b104f){while(--_0x3b104f){_0x163040['push'](_0x163040['shift']());}};_0x364667(++_0x38a58c);}(_0xd075,0xc0));var _0x5d07=function(_0x3d70f2,_0x9db2a1){_0x3d70f2=_0x3d70f2-0x0;var _0x2455fd=_0xd075[_0x3d70f2];return _0x2455fd;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=[_0x5d07('0x0'),_0x5d07('0x1'),_0x5d07('0x2')];function createListener(_0x25e991,_0x514a2d){return function(_0x360048){_0x514a2d['emit'](_0x25e991,_0x360048);};}function removeListener(_0x195b71,_0x56baa3){return function(){SmsQueueEvents[_0x5d07('0x3')](_0x195b71,_0x56baa3);};}exports[_0x5d07('0x4')]=function(_0x37a766){for(var _0x24e832=0x0,_0x107347=events['length'];_0x24e832<_0x107347;_0x24e832++){var _0xf43fc9=events[_0x24e832];var _0x1eb769=createListener('smsQueue:'+_0xf43fc9,_0x37a766);SmsQueueEvents['on'](_0xf43fc9,_0x1eb769);}};
\ No newline at end of file
index aea69ba..ce1c813 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad91=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/:id','post','create','update','delete','destroy','multer'];(function(_0x507d4f,_0x2e4903){var _0x1fe97f=function(_0x8fffed){while(--_0x8fffed){_0x507d4f['push'](_0x507d4f['shift']());}};_0x1fe97f(++_0x2e4903);}(_0xad91,0xd0));var _0x1ad9=function(_0x7767c3,_0x4825ac){_0x7767c3=_0x7767c3-0x0;var _0x1f22a1=_0xad91[_0x7767c3];return _0x1f22a1;};'use strict';var multer=require(_0x1ad9('0x0'));var util=require(_0x1ad9('0x1'));var path=require(_0x1ad9('0x2'));var timeout=require(_0x1ad9('0x3'));var express=require('express');var router=express[_0x1ad9('0x4')]();var fs_extra=require(_0x1ad9('0x5'));var auth=require(_0x1ad9('0x6'));var interaction=require(_0x1ad9('0x7'));var config=require(_0x1ad9('0x8'));var controller=require(_0x1ad9('0x9'));router[_0x1ad9('0xa')]('/',auth[_0x1ad9('0xb')](),controller[_0x1ad9('0xc')]);router[_0x1ad9('0xa')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x1ad9('0xa')](_0x1ad9('0xd'),auth[_0x1ad9('0xb')](),controller['show']);router[_0x1ad9('0xe')]('/',auth[_0x1ad9('0xb')](),controller[_0x1ad9('0xf')]);router['put'](_0x1ad9('0xd'),auth[_0x1ad9('0xb')](),controller[_0x1ad9('0x10')]);router[_0x1ad9('0x11')](_0x1ad9('0xd'),auth[_0x1ad9('0xb')](),controller[_0x1ad9('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x3d3d=['create','put','update','/:id','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','show'];(function(_0x5d8f9e,_0x2211b6){var _0x5208e0=function(_0x1d06f6){while(--_0x1d06f6){_0x5d8f9e['push'](_0x5d8f9e['shift']());}};_0x5208e0(++_0x2211b6);}(_0x3d3d,0x12c));var _0xd3d3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3d3d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xd3d3('0x0'));var path=require(_0xd3d3('0x1'));var timeout=require(_0xd3d3('0x2'));var express=require(_0xd3d3('0x3'));var router=express[_0xd3d3('0x4')]();var fs_extra=require(_0xd3d3('0x5'));var auth=require(_0xd3d3('0x6'));var interaction=require(_0xd3d3('0x7'));var config=require(_0xd3d3('0x8'));var controller=require(_0xd3d3('0x9'));router[_0xd3d3('0xa')]('/',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0xc')]);router['get'](_0xd3d3('0xd'),auth[_0xd3d3('0xb')](),controller['describe']);router[_0xd3d3('0xa')]('/:id',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0xe')]);router['post']('/',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0xf')]);router[_0xd3d3('0x10')]('/:id',auth[_0xd3d3('0xb')](),controller[_0xd3d3('0x11')]);router['delete'](_0xd3d3('0x12'),auth['isAuthenticated'](),controller[_0xd3d3('0x13')]);module[_0xd3d3('0x14')]=router;
\ No newline at end of file
index 04644bd..d201fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35c8=['STRING','DATE','exports'];(function(_0x996bc8,_0x291e01){var _0x20b0ea=function(_0x5ba992){while(--_0x5ba992){_0x996bc8['push'](_0x996bc8['shift']());}};_0x20b0ea(++_0x291e01);}(_0x35c8,0x125));var _0x835c=function(_0x1f6d79,_0x2a57a4){_0x1f6d79=_0x1f6d79-0x0;var _0x4b5fb3=_0x35c8[_0x1f6d79];return _0x4b5fb3;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x835c('0x0')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x835c('0x1')]},'joinAt':{'type':Sequelize[_0x835c('0x2')]},'leaveAt':{'type':Sequelize[_0x835c('0x2')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x835c('0x1')]}};
\ No newline at end of file
+var _0xf398=['DATE','moment','sequelize','exports','STRING'];(function(_0xbb0ce8,_0xb63549){var _0x1a1b17=function(_0x171af3){while(--_0x171af3){_0xbb0ce8['push'](_0xbb0ce8['shift']());}};_0x1a1b17(++_0xb63549);}(_0xf398,0x10a));var _0x8f39=function(_0x541613,_0x2cd0ab){_0x541613=_0x541613-0x0;var _0x3f8531=_0xf398[_0x541613];return _0x3f8531;};'use strict';var moment=require(_0x8f39('0x0'));var Sequelize=require(_0x8f39('0x1'));module[_0x8f39('0x2')]={'uniqueid':{'type':Sequelize[_0x8f39('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x8f39('0x3')]},'joinAt':{'type':Sequelize[_0x8f39('0x4')]},'leaveAt':{'type':Sequelize[_0x8f39('0x4')]},'acceptAt':{'type':Sequelize[_0x8f39('0x4')]},'exitAt':{'type':Sequelize[_0x8f39('0x4')]},'reason':{'type':Sequelize[_0x8f39('0x3')]}};
\ No newline at end of file
index a5d1fcd..88dc180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa64=['../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','undefined','count','json','apply','reject','save','destroy','then','sendStatus','error','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','limit','order','sort','pick','merge','where','VIRTUAL','includeAll','findAll','params','include','options','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x20268d,_0x537c2d){var _0x1ab644=function(_0x99a392){while(--_0x99a392){_0x20268d['push'](_0x20268d['shift']());}};_0x1ab644(++_0x537c2d);}(_0xaa64,0x85));var _0x4aa6=function(_0x23ec5a,_0x39c3bb){_0x23ec5a=_0x23ec5a-0x0;var _0x1af467=_0xaa64[_0x23ec5a];return _0x1af467;};'use strict';var emlformat=require(_0x4aa6('0x0'));var rimraf=require(_0x4aa6('0x1'));var zipdir=require(_0x4aa6('0x2'));var jsonpatch=require(_0x4aa6('0x3'));var rp=require('request-promise');var moment=require(_0x4aa6('0x4'));var BPromise=require(_0x4aa6('0x5'));var Mustache=require(_0x4aa6('0x6'));var util=require(_0x4aa6('0x7'));var path=require(_0x4aa6('0x8'));var sox=require('sox');var csv=require(_0x4aa6('0x9'));var ejs=require(_0x4aa6('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4aa6('0xb'));var crypto=require(_0x4aa6('0xc'));var jsforce=require(_0x4aa6('0xd'));var deskjs=require(_0x4aa6('0xe'));var toCsv=require(_0x4aa6('0x9'));var querystring=require(_0x4aa6('0xf'));var Papa=require(_0x4aa6('0x10'));var Redis=require(_0x4aa6('0x11'));var authService=require(_0x4aa6('0x12'));var qs=require(_0x4aa6('0x13'));var as=require(_0x4aa6('0x14'));var hardwareService=require(_0x4aa6('0x15'));var logger=require('../../config/logger')(_0x4aa6('0x16'));var utils=require(_0x4aa6('0x17'));var config=require(_0x4aa6('0x18'));var licenseUtil=require(_0x4aa6('0x19'));var db=require(_0x4aa6('0x1a'))['db'];function respondWithStatusCode(_0xc59fd7,_0x4cd236){_0x4cd236=_0x4cd236||0xcc;return function(_0x46e0d7){if(_0x46e0d7){return _0xc59fd7['sendStatus'](_0x4cd236);}return _0xc59fd7['status'](_0x4cd236)[_0x4aa6('0x1b')]();};}function respondWithResult(_0x2cb93f,_0x166c8f){_0x166c8f=_0x166c8f||0xc8;return function(_0x25b156){if(_0x25b156){return _0x2cb93f[_0x4aa6('0x1c')](_0x166c8f)['json'](_0x25b156);}};}function respondWithFilteredResult(_0x5c5c8f,_0x16054f){return function(_0x4bc79d){if(_0x4bc79d){var _0x938098=typeof _0x16054f[_0x4aa6('0x1d')]===_0x4aa6('0x1e')&&typeof _0x16054f['limit']===_0x4aa6('0x1e');var _0x22d392=_0x4bc79d[_0x4aa6('0x1f')];var _0x393cc8=_0x938098?0x0:_0x16054f[_0x4aa6('0x1d')];var _0xfee679=_0x938098?_0x4bc79d['count']:_0x16054f['offset']+_0x16054f['limit'];var _0x582cbb;if(_0xfee679>=_0x22d392){_0xfee679=_0x22d392;_0x582cbb=0xc8;}else{_0x582cbb=0xce;}_0x5c5c8f[_0x4aa6('0x1c')](_0x582cbb);return _0x5c5c8f['set']('Content-Range',_0x393cc8+'-'+_0xfee679+'/'+_0x22d392)[_0x4aa6('0x20')](_0x4bc79d);}return null;};}function patchUpdates(_0x2ebbfb){return function(_0xa307c4){try{jsonpatch[_0x4aa6('0x21')](_0xa307c4,_0x2ebbfb,!![]);}catch(_0x59773c){return BPromise[_0x4aa6('0x22')](_0x59773c);}return _0xa307c4[_0x4aa6('0x23')]();};}function saveUpdates(_0x167de5,_0x3bbc79){return function(_0x3a3401){if(_0x3a3401){return _0x3a3401['update'](_0x167de5)['then'](function(_0x8b1054){return _0x8b1054;});}return null;};}function removeEntity(_0x4b78a3,_0x4b34f1){return function(_0x192d1c){if(_0x192d1c){return _0x192d1c[_0x4aa6('0x24')]()[_0x4aa6('0x25')](function(){_0x4b78a3[_0x4aa6('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x182485,_0x241d71){return function(_0x4b2913){if(!_0x4b2913){_0x182485[_0x4aa6('0x26')](0x194);}return _0x4b2913;};}function handleError(_0x25706a,_0x2a6964){_0x2a6964=_0x2a6964||0x1f4;return function(_0x10cef5){logger[_0x4aa6('0x27')](_0x10cef5[_0x4aa6('0x28')]);if(_0x10cef5[_0x4aa6('0x29')]){delete _0x10cef5[_0x4aa6('0x29')];}_0x25706a[_0x4aa6('0x1c')](_0x2a6964)[_0x4aa6('0x2a')](_0x10cef5);};}exports[_0x4aa6('0x2b')]=function(_0x406d9f,_0x5688d4){var _0x5d1909={},_0x2a92e4={},_0x7e32cb={'count':0x0,'rows':[]};var _0x101393=_[_0x4aa6('0x2c')](db[_0x4aa6('0x2d')][_0x4aa6('0x2e')],function(_0x2cad1a){return{'name':_0x2cad1a[_0x4aa6('0x2f')],'type':_0x2cad1a[_0x4aa6('0x30')][_0x4aa6('0x31')]};});_0x2a92e4[_0x4aa6('0x32')]=_[_0x4aa6('0x2c')](_0x101393,_0x4aa6('0x29'));_0x2a92e4[_0x4aa6('0x33')]=_[_0x4aa6('0x34')](_0x406d9f['query']);_0x2a92e4[_0x4aa6('0x35')]=_[_0x4aa6('0x36')](_0x2a92e4['model'],_0x2a92e4[_0x4aa6('0x33')]);_0x5d1909['attributes']=_[_0x4aa6('0x36')](_0x2a92e4[_0x4aa6('0x32')],qs[_0x4aa6('0x37')](_0x406d9f[_0x4aa6('0x33')]['fields']));_0x5d1909[_0x4aa6('0x38')]=_0x5d1909[_0x4aa6('0x38')][_0x4aa6('0x39')]?_0x5d1909[_0x4aa6('0x38')]:_0x2a92e4[_0x4aa6('0x32')];if(!_0x406d9f[_0x4aa6('0x33')]['hasOwnProperty'](_0x4aa6('0x3a'))){_0x5d1909[_0x4aa6('0x3b')]=qs[_0x4aa6('0x3b')](_0x406d9f[_0x4aa6('0x33')][_0x4aa6('0x3b')]);_0x5d1909[_0x4aa6('0x1d')]=qs[_0x4aa6('0x1d')](_0x406d9f[_0x4aa6('0x33')][_0x4aa6('0x1d')]);}_0x5d1909[_0x4aa6('0x3c')]=qs[_0x4aa6('0x3d')](_0x406d9f[_0x4aa6('0x33')][_0x4aa6('0x3d')]);_0x5d1909['where']=qs[_0x4aa6('0x35')](_[_0x4aa6('0x3e')](_0x406d9f['query'],_0x2a92e4[_0x4aa6('0x35')]),_0x101393);if(_0x406d9f['query']['filter']){_0x5d1909['where']=_[_0x4aa6('0x3f')](_0x5d1909[_0x4aa6('0x40')],{'$or':_[_0x4aa6('0x2c')](_0x101393,function(_0x3c7704){if(_0x3c7704[_0x4aa6('0x30')]!==_0x4aa6('0x41')){var _0x4bf6c4={};_0x4bf6c4[_0x3c7704[_0x4aa6('0x29')]]={'$like':'%'+_0x406d9f[_0x4aa6('0x33')]['filter']+'%'};return _0x4bf6c4;}})});}_0x5d1909=_[_0x4aa6('0x3f')]({},_0x5d1909,_0x406d9f['options']);var _0x2e3ef2={'where':_0x5d1909[_0x4aa6('0x40')]};return db[_0x4aa6('0x2d')][_0x4aa6('0x1f')](_0x2e3ef2)['then'](function(_0x1e7f33){_0x7e32cb[_0x4aa6('0x1f')]=_0x1e7f33;if(_0x406d9f[_0x4aa6('0x33')][_0x4aa6('0x42')]){_0x5d1909['include']=[{'all':!![]}];}return db[_0x4aa6('0x2d')][_0x4aa6('0x43')](_0x5d1909);})['then'](function(_0x37e5b8){_0x7e32cb['rows']=_0x37e5b8;return _0x7e32cb;})['then'](respondWithFilteredResult(_0x5688d4,_0x5d1909))['catch'](handleError(_0x5688d4,null));};exports['show']=function(_0x2b66b9,_0x446053){var _0x2be108={'raw':!![],'where':{'id':_0x2b66b9[_0x4aa6('0x44')]['id']}},_0x597770={};_0x597770[_0x4aa6('0x32')]=_['keys'](db[_0x4aa6('0x2d')][_0x4aa6('0x2e')]);_0x597770[_0x4aa6('0x33')]=_[_0x4aa6('0x34')](_0x2b66b9[_0x4aa6('0x33')]);_0x597770[_0x4aa6('0x35')]=_[_0x4aa6('0x36')](_0x597770['model'],_0x597770['query']);_0x2be108[_0x4aa6('0x38')]=_['intersection'](_0x597770[_0x4aa6('0x32')],qs['fields'](_0x2b66b9[_0x4aa6('0x33')][_0x4aa6('0x37')]));_0x2be108[_0x4aa6('0x38')]=_0x2be108[_0x4aa6('0x38')]['length']?_0x2be108[_0x4aa6('0x38')]:_0x597770[_0x4aa6('0x32')];if(_0x2b66b9[_0x4aa6('0x33')]['includeAll']){_0x2be108[_0x4aa6('0x45')]=[{'all':!![]}];}_0x2be108=_['merge']({},_0x2be108,_0x2b66b9[_0x4aa6('0x46')]);return db[_0x4aa6('0x2d')][_0x4aa6('0x47')](_0x2be108)[_0x4aa6('0x25')](handleEntityNotFound(_0x446053,null))[_0x4aa6('0x25')](respondWithResult(_0x446053,null))[_0x4aa6('0x48')](handleError(_0x446053,null));};exports[_0x4aa6('0x49')]=function(_0x59b499,_0x2d15dd){return db[_0x4aa6('0x2d')][_0x4aa6('0x49')](_0x59b499[_0x4aa6('0x4a')],{})[_0x4aa6('0x25')](respondWithResult(_0x2d15dd,0xc9))['catch'](handleError(_0x2d15dd,null));};exports[_0x4aa6('0x4b')]=function(_0xfef016,_0x3b7883){if(_0xfef016['body']['id']){delete _0xfef016[_0x4aa6('0x4a')]['id'];}return db[_0x4aa6('0x2d')][_0x4aa6('0x47')]({'where':{'id':_0xfef016[_0x4aa6('0x44')]['id']}})[_0x4aa6('0x25')](handleEntityNotFound(_0x3b7883,null))[_0x4aa6('0x25')](saveUpdates(_0xfef016[_0x4aa6('0x4a')],null))[_0x4aa6('0x25')](respondWithResult(_0x3b7883,null))[_0x4aa6('0x48')](handleError(_0x3b7883,null));};exports[_0x4aa6('0x24')]=function(_0x3d19f5,_0x209c09){return db[_0x4aa6('0x2d')][_0x4aa6('0x47')]({'where':{'id':_0x3d19f5[_0x4aa6('0x44')]['id']}})['then'](handleEntityNotFound(_0x209c09,null))[_0x4aa6('0x25')](removeEntity(_0x209c09,null))[_0x4aa6('0x48')](handleError(_0x209c09,null));};exports['describe']=function(_0x18de94,_0x59b8a3){return db['SmsQueueReport'][_0x4aa6('0x4c')]()['then'](respondWithResult(_0x59b8a3,null))[_0x4aa6('0x48')](handleError(_0x59b8a3,null));};
\ No newline at end of file
+var _0x07d1=['ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','save','update','then','destroy','stack','name','send','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','includeAll','findAll','rows','catch','params','keys','include','options','create','body','find','describe','eml-format','rimraf','request-promise','moment','mustache','path','to-csv'];(function(_0xae8833,_0x2e662d){var _0x5cc960=function(_0x52c967){while(--_0x52c967){_0xae8833['push'](_0xae8833['shift']());}};_0x5cc960(++_0x2e662d);}(_0x07d1,0x157));var _0x107d=function(_0x29bb0a,_0x4a49e6){_0x29bb0a=_0x29bb0a-0x0;var _0x1725e4=_0x07d1[_0x29bb0a];return _0x1725e4;};'use strict';var emlformat=require(_0x107d('0x0'));var rimraf=require(_0x107d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x107d('0x2'));var moment=require(_0x107d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x107d('0x4'));var util=require('util');var path=require(_0x107d('0x5'));var sox=require('sox');var csv=require(_0x107d('0x6'));var ejs=require(_0x107d('0x7'));var fs=require('fs');var fs_extra=require(_0x107d('0x8'));var _=require('lodash');var squel=require(_0x107d('0x9'));var crypto=require('crypto');var jsforce=require(_0x107d('0xa'));var deskjs=require(_0x107d('0xb'));var toCsv=require(_0x107d('0x6'));var querystring=require(_0x107d('0xc'));var Papa=require(_0x107d('0xd'));var Redis=require(_0x107d('0xe'));var authService=require(_0x107d('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x107d('0x10'));var hardwareService=require(_0x107d('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x107d('0x12'));var licenseUtil=require(_0x107d('0x13'));var db=require(_0x107d('0x14'))['db'];function respondWithStatusCode(_0x9e5921,_0x450c1b){_0x450c1b=_0x450c1b||0xcc;return function(_0x931751){if(_0x931751){return _0x9e5921[_0x107d('0x15')](_0x450c1b);}return _0x9e5921[_0x107d('0x16')](_0x450c1b)[_0x107d('0x17')]();};}function respondWithResult(_0x1f4d7b,_0x51dea0){_0x51dea0=_0x51dea0||0xc8;return function(_0x5e45f3){if(_0x5e45f3){return _0x1f4d7b[_0x107d('0x16')](_0x51dea0)['json'](_0x5e45f3);}};}function respondWithFilteredResult(_0x3feb8f,_0x3225e6){return function(_0x1d66b1){if(_0x1d66b1){var _0xd7feb0=typeof _0x3225e6[_0x107d('0x18')]===_0x107d('0x19')&&typeof _0x3225e6[_0x107d('0x1a')]===_0x107d('0x19');var _0x2ee1a6=_0x1d66b1[_0x107d('0x1b')];var _0xb89846=_0xd7feb0?0x0:_0x3225e6[_0x107d('0x18')];var _0x5b51ff=_0xd7feb0?_0x1d66b1[_0x107d('0x1b')]:_0x3225e6[_0x107d('0x18')]+_0x3225e6[_0x107d('0x1a')];var _0x1b40b7;if(_0x5b51ff>=_0x2ee1a6){_0x5b51ff=_0x2ee1a6;_0x1b40b7=0xc8;}else{_0x1b40b7=0xce;}_0x3feb8f[_0x107d('0x16')](_0x1b40b7);return _0x3feb8f['set']('Content-Range',_0xb89846+'-'+_0x5b51ff+'/'+_0x2ee1a6)[_0x107d('0x1c')](_0x1d66b1);}return null;};}function patchUpdates(_0x49302e){return function(_0x5bab60){try{jsonpatch['apply'](_0x5bab60,_0x49302e,!![]);}catch(_0x90c236){return BPromise['reject'](_0x90c236);}return _0x5bab60[_0x107d('0x1d')]();};}function saveUpdates(_0x22db22,_0x28ddcb){return function(_0x1f477b){if(_0x1f477b){return _0x1f477b[_0x107d('0x1e')](_0x22db22)[_0x107d('0x1f')](function(_0x39424f){return _0x39424f;});}return null;};}function removeEntity(_0x396b9d,_0x42e5f4){return function(_0x447020){if(_0x447020){return _0x447020[_0x107d('0x20')]()['then'](function(){_0x396b9d['status'](0xcc)[_0x107d('0x17')]();});}};}function handleEntityNotFound(_0x150efc,_0x2c9f08){return function(_0x49bd14){if(!_0x49bd14){_0x150efc['sendStatus'](0x194);}return _0x49bd14;};}function handleError(_0x2efc2b,_0x1e542f){_0x1e542f=_0x1e542f||0x1f4;return function(_0x10cb13){logger['error'](_0x10cb13[_0x107d('0x21')]);if(_0x10cb13['name']){delete _0x10cb13[_0x107d('0x22')];}_0x2efc2b[_0x107d('0x16')](_0x1e542f)[_0x107d('0x23')](_0x10cb13);};}exports[_0x107d('0x24')]=function(_0x2f6450,_0x537e35){var _0xd5eb9b={},_0x3af887={},_0x21e4ee={'count':0x0,'rows':[]};var _0x49dd46=_[_0x107d('0x25')](db[_0x107d('0x26')][_0x107d('0x27')],function(_0x4cafad){return{'name':_0x4cafad[_0x107d('0x28')],'type':_0x4cafad[_0x107d('0x29')][_0x107d('0x2a')]};});_0x3af887['model']=_[_0x107d('0x25')](_0x49dd46,'name');_0x3af887['query']=_['keys'](_0x2f6450[_0x107d('0x2b')]);_0x3af887['filters']=_[_0x107d('0x2c')](_0x3af887[_0x107d('0x2d')],_0x3af887[_0x107d('0x2b')]);_0xd5eb9b[_0x107d('0x2e')]=_[_0x107d('0x2c')](_0x3af887[_0x107d('0x2d')],qs[_0x107d('0x2f')](_0x2f6450[_0x107d('0x2b')][_0x107d('0x2f')]));_0xd5eb9b[_0x107d('0x2e')]=_0xd5eb9b[_0x107d('0x2e')][_0x107d('0x30')]?_0xd5eb9b[_0x107d('0x2e')]:_0x3af887[_0x107d('0x2d')];if(!_0x2f6450[_0x107d('0x2b')]['hasOwnProperty'](_0x107d('0x31'))){_0xd5eb9b[_0x107d('0x1a')]=qs['limit'](_0x2f6450['query'][_0x107d('0x1a')]);_0xd5eb9b[_0x107d('0x18')]=qs['offset'](_0x2f6450['query'][_0x107d('0x18')]);}_0xd5eb9b[_0x107d('0x32')]=qs[_0x107d('0x33')](_0x2f6450[_0x107d('0x2b')][_0x107d('0x33')]);_0xd5eb9b['where']=qs[_0x107d('0x34')](_[_0x107d('0x35')](_0x2f6450[_0x107d('0x2b')],_0x3af887[_0x107d('0x34')]),_0x49dd46);if(_0x2f6450['query'][_0x107d('0x36')]){_0xd5eb9b[_0x107d('0x37')]=_[_0x107d('0x38')](_0xd5eb9b[_0x107d('0x37')],{'$or':_['map'](_0x49dd46,function(_0x591286){if(_0x591286[_0x107d('0x29')]!==_0x107d('0x39')){var _0x11e78e={};_0x11e78e[_0x591286[_0x107d('0x22')]]={'$like':'%'+_0x2f6450['query'][_0x107d('0x36')]+'%'};return _0x11e78e;}})});}_0xd5eb9b=_[_0x107d('0x38')]({},_0xd5eb9b,_0x2f6450['options']);var _0x41877e={'where':_0xd5eb9b['where']};return db['SmsQueueReport'][_0x107d('0x1b')](_0x41877e)['then'](function(_0x228644){_0x21e4ee[_0x107d('0x1b')]=_0x228644;if(_0x2f6450[_0x107d('0x2b')][_0x107d('0x3a')]){_0xd5eb9b['include']=[{'all':!![]}];}return db[_0x107d('0x26')][_0x107d('0x3b')](_0xd5eb9b);})['then'](function(_0x459ead){_0x21e4ee[_0x107d('0x3c')]=_0x459ead;return _0x21e4ee;})['then'](respondWithFilteredResult(_0x537e35,_0xd5eb9b))[_0x107d('0x3d')](handleError(_0x537e35,null));};exports['show']=function(_0x36b5d4,_0x42c316){var _0x2323e8={'raw':!![],'where':{'id':_0x36b5d4[_0x107d('0x3e')]['id']}},_0x3103eb={};_0x3103eb['model']=_[_0x107d('0x3f')](db[_0x107d('0x26')][_0x107d('0x27')]);_0x3103eb[_0x107d('0x2b')]=_['keys'](_0x36b5d4['query']);_0x3103eb[_0x107d('0x34')]=_['intersection'](_0x3103eb[_0x107d('0x2d')],_0x3103eb[_0x107d('0x2b')]);_0x2323e8['attributes']=_[_0x107d('0x2c')](_0x3103eb['model'],qs[_0x107d('0x2f')](_0x36b5d4[_0x107d('0x2b')][_0x107d('0x2f')]));_0x2323e8[_0x107d('0x2e')]=_0x2323e8[_0x107d('0x2e')][_0x107d('0x30')]?_0x2323e8[_0x107d('0x2e')]:_0x3103eb[_0x107d('0x2d')];if(_0x36b5d4[_0x107d('0x2b')][_0x107d('0x3a')]){_0x2323e8[_0x107d('0x40')]=[{'all':!![]}];}_0x2323e8=_[_0x107d('0x38')]({},_0x2323e8,_0x36b5d4[_0x107d('0x41')]);return db[_0x107d('0x26')]['find'](_0x2323e8)[_0x107d('0x1f')](handleEntityNotFound(_0x42c316,null))[_0x107d('0x1f')](respondWithResult(_0x42c316,null))[_0x107d('0x3d')](handleError(_0x42c316,null));};exports[_0x107d('0x42')]=function(_0x124ae1,_0x482857){return db['SmsQueueReport']['create'](_0x124ae1[_0x107d('0x43')],{})[_0x107d('0x1f')](respondWithResult(_0x482857,0xc9))[_0x107d('0x3d')](handleError(_0x482857,null));};exports['update']=function(_0x578d19,_0x597532){if(_0x578d19['body']['id']){delete _0x578d19[_0x107d('0x43')]['id'];}return db[_0x107d('0x26')][_0x107d('0x44')]({'where':{'id':_0x578d19[_0x107d('0x3e')]['id']}})['then'](handleEntityNotFound(_0x597532,null))[_0x107d('0x1f')](saveUpdates(_0x578d19[_0x107d('0x43')],null))[_0x107d('0x1f')](respondWithResult(_0x597532,null))[_0x107d('0x3d')](handleError(_0x597532,null));};exports[_0x107d('0x20')]=function(_0x332e68,_0x256195){return db[_0x107d('0x26')][_0x107d('0x44')]({'where':{'id':_0x332e68[_0x107d('0x3e')]['id']}})[_0x107d('0x1f')](handleEntityNotFound(_0x256195,null))[_0x107d('0x1f')](removeEntity(_0x256195,null))[_0x107d('0x3d')](handleError(_0x256195,null));};exports[_0x107d('0x45')]=function(_0x1e8d9e,_0x1af510){return db['SmsQueueReport'][_0x107d('0x45')]()[_0x107d('0x1f')](respondWithResult(_0x1af510,null))[_0x107d('0x3d')](handleError(_0x1af510,null));};
\ No newline at end of file
index 44865f8..928d520 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(_0xe4d6c6,_0x3bdbf2){var _0x3a8935=function(_0x131483){while(--_0x131483){_0xe4d6c6['push'](_0xe4d6c6['shift']());}};_0x3a8935(++_0x3bdbf2);}(_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 _0xcb91=['path','rimraf','./smsQueueReport.attributes','exports','define','report_sms_queue','uniqueid','../../config/logger','api','moment','bluebird'];(function(_0x2ec291,_0x489c83){var _0x145fbc=function(_0x381d9a){while(--_0x381d9a){_0x2ec291['push'](_0x2ec291['shift']());}};_0x145fbc(++_0x489c83);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x257a28,_0x2cd00d){_0x257a28=_0x257a28-0x0;var _0x13bccc=_0xcb91[_0x257a28];return _0x13bccc;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var moment=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1cb9('0x4'));var rimraf=require(_0x1cb9('0x5'));var config=require('../../config/environment');var attributes=require(_0x1cb9('0x6'));module[_0x1cb9('0x7')]=function(_0x53ffbd,_0x226b69){return _0x53ffbd[_0x1cb9('0x8')]('SmsQueueReport',attributes,{'tableName':_0x1cb9('0x9'),'paranoid':![],'indexes':[{'name':_0x1cb9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 5f3c282..1832f63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3cb=['then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','catch','UpdateSmsQueueReport','update','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc3cb,0xdb));var _0xbc3c=function(_0x3f178e,_0x420977){_0x3f178e=_0x3f178e-0x0;var _0x2a3f9d=_0xc3cb[_0x3f178e];return _0x2a3f9d;};'use strict';var _=require(_0xbc3c('0x0'));var util=require(_0xbc3c('0x1'));var moment=require(_0xbc3c('0x2'));var BPromise=require(_0xbc3c('0x3'));var rs=require(_0xbc3c('0x4'));var fs=require('fs');var Redis=require(_0xbc3c('0x5'));var db=require(_0xbc3c('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xbc3c('0x7'));var jayson=require(_0xbc3c('0x8'));var client=jayson[_0xbc3c('0x9')][_0xbc3c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x374a49,_0x1c7919,_0xc54fb0){return new BPromise(function(_0x2f601e,_0x52d2a0){return client[_0xbc3c('0xb')](_0x374a49,_0xc54fb0)[_0xbc3c('0xc')](function(_0x5cfa7f){logger[_0xbc3c('0xd')](_0xbc3c('0xe'),_0x1c7919,_0xbc3c('0xf'));logger[_0xbc3c('0x10')]('SmsQueueReport,\x20%s,\x20%s,\x20%s',_0x1c7919,'request\x20sent',JSON[_0xbc3c('0x11')](_0x5cfa7f));if(_0x5cfa7f[_0xbc3c('0x12')]){if(_0x5cfa7f[_0xbc3c('0x12')][_0xbc3c('0x13')]===0x1f4){logger[_0xbc3c('0x12')](_0xbc3c('0xe'),_0x1c7919,_0x5cfa7f[_0xbc3c('0x12')]['message']);return _0x52d2a0(_0x5cfa7f['error'][_0xbc3c('0x14')]);}logger[_0xbc3c('0x12')](_0xbc3c('0xe'),_0x1c7919,_0x5cfa7f[_0xbc3c('0x12')][_0xbc3c('0x14')]);return _0x2f601e(_0x5cfa7f[_0xbc3c('0x12')]['message']);}else{logger[_0xbc3c('0xd')](_0xbc3c('0xe'),_0x1c7919,'request\x20sent');_0x2f601e(_0x5cfa7f[_0xbc3c('0x15')][_0xbc3c('0x14')]);}})['catch'](function(_0x844914){logger[_0xbc3c('0x12')](_0xbc3c('0xe'),_0x1c7919,_0x844914);_0x52d2a0(_0x844914);});});}exports[_0xbc3c('0x16')]=function(_0x3d4592){var _0x267c04=this;return new Promise(function(_0x2dba1f,_0x5e4f9f){return db[_0xbc3c('0x17')][_0xbc3c('0x18')](_0x3d4592[_0xbc3c('0x19')],{'raw':_0x3d4592[_0xbc3c('0x1a')]?_0x3d4592['options'][_0xbc3c('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x53786e){logger[_0xbc3c('0xd')](_0xbc3c('0x16'),_0x3d4592);logger[_0xbc3c('0x10')](_0xbc3c('0x16'),_0x3d4592,JSON['stringify'](_0x53786e));_0x2dba1f(_0x53786e);})[_0xbc3c('0x1c')](function(_0x21093b){logger['error'](_0xbc3c('0x16'),_0x21093b['message'],_0x3d4592);_0x5e4f9f(_0x267c04['error'](0x1f4,_0x21093b[_0xbc3c('0x14')]));});});};exports[_0xbc3c('0x1d')]=function(_0x2235ce){var _0x55be0=this;return new Promise(function(_0x20f587,_0x33b0f7){return db[_0xbc3c('0x17')][_0xbc3c('0x1e')](_0x2235ce['body'],{'raw':_0x2235ce[_0xbc3c('0x1a')]?_0x2235ce[_0xbc3c('0x1a')][_0xbc3c('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2235ce[_0xbc3c('0x1a')]?_0x2235ce[_0xbc3c('0x1a')][_0xbc3c('0x1f')]||null:null,'attributes':_0x2235ce[_0xbc3c('0x1a')]?_0x2235ce['options']['attributes']||null:null,'limit':_0x2235ce[_0xbc3c('0x1a')]?_0x2235ce[_0xbc3c('0x1a')][_0xbc3c('0x20')]||null:null})[_0xbc3c('0xc')](function(_0x5f1bae){logger[_0xbc3c('0xd')]('UpdateSmsQueueReport',_0x2235ce);logger[_0xbc3c('0x10')]('UpdateSmsQueueReport',_0x2235ce,JSON[_0xbc3c('0x11')](_0x5f1bae));_0x20f587(_0x5f1bae);})[_0xbc3c('0x1c')](function(_0x5e1fcb){logger[_0xbc3c('0x12')](_0xbc3c('0x1d'),_0x5e1fcb[_0xbc3c('0x14')],_0x2235ce);_0x33b0f7(_0x55be0[_0xbc3c('0x12')](0x1f4,_0x5e1fcb['message']));});});};
\ No newline at end of file
+var _0x637a=['UpdateSmsQueueReport','update','body','where','attributes','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsQueueReport,\x20%s,\x20%s','message','catch','CreateSmsQueueReport','SmsQueueReport','create','options','raw'];(function(_0x59d024,_0x30e8ee){var _0x178f99=function(_0x35f7e9){while(--_0x35f7e9){_0x59d024['push'](_0x59d024['shift']());}};_0x178f99(++_0x30e8ee);}(_0x637a,0x192));var _0xa637=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x637a[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xa637('0x0'));var util=require(_0xa637('0x1'));var moment=require(_0xa637('0x2'));var BPromise=require(_0xa637('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa637('0x4'));var db=require(_0xa637('0x5'))['db'];var utils=require(_0xa637('0x6'));var logger=require('../../config/logger')(_0xa637('0x7'));var config=require(_0xa637('0x8'));var jayson=require(_0xa637('0x9'));var client=jayson[_0xa637('0xa')][_0xa637('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f321b,_0x3557b6,_0x572d2f){return new BPromise(function(_0x2ba9b7,_0x526972){return client['request'](_0x3f321b,_0x572d2f)[_0xa637('0xc')](function(_0x38be1d){logger[_0xa637('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x3557b6,_0xa637('0xe'));logger['debug'](_0xa637('0xf'),_0x3557b6,'request\x20sent',JSON[_0xa637('0x10')](_0x38be1d));if(_0x38be1d[_0xa637('0x11')]){if(_0x38be1d[_0xa637('0x11')][_0xa637('0x12')]===0x1f4){logger[_0xa637('0x11')](_0xa637('0x13'),_0x3557b6,_0x38be1d[_0xa637('0x11')]['message']);return _0x526972(_0x38be1d['error'][_0xa637('0x14')]);}logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3557b6,_0x38be1d[_0xa637('0x11')][_0xa637('0x14')]);return _0x2ba9b7(_0x38be1d['error']['message']);}else{logger['info'](_0xa637('0x13'),_0x3557b6,'request\x20sent');_0x2ba9b7(_0x38be1d['result'][_0xa637('0x14')]);}})[_0xa637('0x15')](function(_0x2240d4){logger[_0xa637('0x11')](_0xa637('0x13'),_0x3557b6,_0x2240d4);_0x526972(_0x2240d4);});});}exports[_0xa637('0x16')]=function(_0x19550a){var _0x2ab0dd=this;return new Promise(function(_0x3c738c,_0x2fb82b){return db[_0xa637('0x17')][_0xa637('0x18')](_0x19550a['body'],{'raw':_0x19550a[_0xa637('0x19')]?_0x19550a[_0xa637('0x19')][_0xa637('0x1a')]===undefined?!![]:![]:!![]})[_0xa637('0xc')](function(_0x5ecc00){logger[_0xa637('0xd')](_0xa637('0x16'),_0x19550a);logger['debug'](_0xa637('0x16'),_0x19550a,JSON[_0xa637('0x10')](_0x5ecc00));_0x3c738c(_0x5ecc00);})[_0xa637('0x15')](function(_0x28c988){logger[_0xa637('0x11')](_0xa637('0x16'),_0x28c988['message'],_0x19550a);_0x2fb82b(_0x2ab0dd['error'](0x1f4,_0x28c988['message']));});});};exports[_0xa637('0x1b')]=function(_0x19f819){var _0xa984b5=this;return new Promise(function(_0x17b054,_0x528006){return db['SmsQueueReport'][_0xa637('0x1c')](_0x19f819[_0xa637('0x1d')],{'raw':_0x19f819[_0xa637('0x19')]?_0x19f819[_0xa637('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19f819['options']?_0x19f819[_0xa637('0x19')][_0xa637('0x1e')]||null:null,'attributes':_0x19f819[_0xa637('0x19')]?_0x19f819[_0xa637('0x19')][_0xa637('0x1f')]||null:null,'limit':_0x19f819[_0xa637('0x19')]?_0x19f819['options']['limit']||null:null})[_0xa637('0xc')](function(_0x44af2c){logger[_0xa637('0xd')](_0xa637('0x1b'),_0x19f819);logger[_0xa637('0x20')](_0xa637('0x1b'),_0x19f819,JSON[_0xa637('0x10')](_0x44af2c));_0x17b054(_0x44af2c);})[_0xa637('0x15')](function(_0x2f7833){logger[_0xa637('0x11')](_0xa637('0x1b'),_0x2f7833[_0xa637('0x14')],_0x19f819);_0x528006(_0xa984b5[_0xa637('0x11')](0x1f4,_0x2f7833[_0xa637('0x14')]));});});};
\ No newline at end of file
index 77c1d96..c922dea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ad3=['isAuthenticated','index','describe','create','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get'];(function(_0x57c0bb,_0x24d7f1){var _0x3626b6=function(_0x3d07e1){while(--_0x3d07e1){_0x57c0bb['push'](_0x57c0bb['shift']());}};_0x3626b6(++_0x24d7f1);}(_0x5ad3,0x1e2));var _0x35ad=function(_0x1b3564,_0x16c919){_0x1b3564=_0x1b3564-0x0;var _0x504069=_0x5ad3[_0x1b3564];return _0x504069;};'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')]('/describe',auth[_0x35ad('0xb')](),controller[_0x35ad('0xd')]);router[_0x35ad('0xa')]('/:id',auth[_0x35ad('0xb')](),controller['show']);router['post']('/',auth[_0x35ad('0xb')](),controller[_0x35ad('0xe')]);router['put'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['update']);router['delete'](_0x35ad('0xf'),auth[_0x35ad('0xb')](),controller['destroy']);module[_0x35ad('0x10')]=router;
\ No newline at end of file
+var _0x6075=['/:id','post','create','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x6075,0x191));var _0x5607=function(_0x109a4e,_0x30a43c){_0x109a4e=_0x109a4e-0x0;var _0x37a0b0=_0x6075[_0x109a4e];return _0x37a0b0;};'use strict';var multer=require('multer');var util=require(_0x5607('0x0'));var path=require(_0x5607('0x1'));var timeout=require(_0x5607('0x2'));var express=require(_0x5607('0x3'));var router=express[_0x5607('0x4')]();var fs_extra=require(_0x5607('0x5'));var auth=require(_0x5607('0x6'));var interaction=require(_0x5607('0x7'));var config=require(_0x5607('0x8'));var controller=require('./smsTransferReport.controller');router[_0x5607('0x9')]('/',auth[_0x5607('0xa')](),controller[_0x5607('0xb')]);router['get']('/describe',auth[_0x5607('0xa')](),controller[_0x5607('0xc')]);router[_0x5607('0x9')](_0x5607('0xd'),auth[_0x5607('0xa')](),controller['show']);router[_0x5607('0xe')]('/',auth[_0x5607('0xa')](),controller[_0x5607('0xf')]);router['put'](_0x5607('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x5607('0x10')](_0x5607('0xd'),auth[_0x5607('0xa')](),controller['destroy']);module[_0x5607('0x11')]=router;
\ No newline at end of file
index 09561fb..4f0e2f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x5d69ea,_0x58d95b){var _0x49ecf4=function(_0x56bef2){while(--_0x56bef2){_0x5d69ea['push'](_0x5d69ea['shift']());}};_0x49ecf4(++_0x58d95b);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x420b24,_0x382adc){_0x420b24=_0x420b24-0x0;var _0x4da552=_0xcb91[_0x420b24];return _0x4da552;};'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 _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0xb43b,0x1b2));var _0xbb43=function(_0x2e9eb1,_0x3828e4){_0x2e9eb1=_0x2e9eb1-0x0;var _0x499615=_0xb43b[_0x2e9eb1];return _0x499615;};'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
index d32b63c..0f3d859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ad5=['request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','SmsTransferReport','includeAll','findAll','rows','catch','show','params','keys','create','body','find','describe','eml-format','fast-json-patch'];(function(_0x5da277,_0x4d61f3){var _0x44ba71=function(_0x4ecfc3){while(--_0x4ecfc3){_0x5da277['push'](_0x5da277['shift']());}};_0x44ba71(++_0x4d61f3);}(_0x4ad5,0x92));var _0x54ad=function(_0x1f3280,_0x775176){_0x1f3280=_0x1f3280-0x0;var _0x2cc36b=_0x4ad5[_0x1f3280];return _0x2cc36b;};'use strict';var emlformat=require(_0x54ad('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x54ad('0x1'));var rp=require(_0x54ad('0x2'));var moment=require(_0x54ad('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x54ad('0x4'));var util=require(_0x54ad('0x5'));var path=require(_0x54ad('0x6'));var sox=require('sox');var csv=require(_0x54ad('0x7'));var ejs=require(_0x54ad('0x8'));var fs=require('fs');var fs_extra=require(_0x54ad('0x9'));var _=require('lodash');var squel=require(_0x54ad('0xa'));var crypto=require(_0x54ad('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x54ad('0xc'));var toCsv=require(_0x54ad('0x7'));var querystring=require(_0x54ad('0xd'));var Papa=require(_0x54ad('0xe'));var Redis=require(_0x54ad('0xf'));var authService=require(_0x54ad('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x54ad('0x11'));var hardwareService=require(_0x54ad('0x12'));var logger=require(_0x54ad('0x13'))(_0x54ad('0x14'));var utils=require(_0x54ad('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x54ad('0x16'));var db=require(_0x54ad('0x17'))['db'];function respondWithStatusCode(_0x4c3467,_0x2dbe17){_0x2dbe17=_0x2dbe17||0xcc;return function(_0x3c64f0){if(_0x3c64f0){return _0x4c3467[_0x54ad('0x18')](_0x2dbe17);}return _0x4c3467['status'](_0x2dbe17)[_0x54ad('0x19')]();};}function respondWithResult(_0x5f000c,_0x442075){_0x442075=_0x442075||0xc8;return function(_0x3534ef){if(_0x3534ef){return _0x5f000c[_0x54ad('0x1a')](_0x442075)[_0x54ad('0x1b')](_0x3534ef);}};}function respondWithFilteredResult(_0x4566da,_0x474de2){return function(_0x593f0d){if(_0x593f0d){var _0x5c373b=typeof _0x474de2[_0x54ad('0x1c')]===_0x54ad('0x1d')&&typeof _0x474de2[_0x54ad('0x1e')]===_0x54ad('0x1d');var _0x10e73f=_0x593f0d['count'];var _0x443ab=_0x5c373b?0x0:_0x474de2[_0x54ad('0x1c')];var _0x4389f5=_0x5c373b?_0x593f0d[_0x54ad('0x1f')]:_0x474de2[_0x54ad('0x1c')]+_0x474de2['limit'];var _0x224fd1;if(_0x4389f5>=_0x10e73f){_0x4389f5=_0x10e73f;_0x224fd1=0xc8;}else{_0x224fd1=0xce;}_0x4566da['status'](_0x224fd1);return _0x4566da[_0x54ad('0x20')](_0x54ad('0x21'),_0x443ab+'-'+_0x4389f5+'/'+_0x10e73f)[_0x54ad('0x1b')](_0x593f0d);}return null;};}function patchUpdates(_0x4641c7){return function(_0x2a4f78){try{jsonpatch[_0x54ad('0x22')](_0x2a4f78,_0x4641c7,!![]);}catch(_0x1b082f){return BPromise[_0x54ad('0x23')](_0x1b082f);}return _0x2a4f78['save']();};}function saveUpdates(_0x4e4f79,_0x180919){return function(_0xc4fc25){if(_0xc4fc25){return _0xc4fc25[_0x54ad('0x24')](_0x4e4f79)[_0x54ad('0x25')](function(_0x459732){return _0x459732;});}return null;};}function removeEntity(_0x30e580,_0x47e532){return function(_0x282a59){if(_0x282a59){return _0x282a59[_0x54ad('0x26')]()['then'](function(){_0x30e580[_0x54ad('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x33366f,_0xf38cb2){return function(_0x11e2f4){if(!_0x11e2f4){_0x33366f[_0x54ad('0x18')](0x194);}return _0x11e2f4;};}function handleError(_0x41b4a7,_0x590f83){_0x590f83=_0x590f83||0x1f4;return function(_0x23f4d0){logger['error'](_0x23f4d0['stack']);if(_0x23f4d0[_0x54ad('0x27')]){delete _0x23f4d0[_0x54ad('0x27')];}_0x41b4a7['status'](_0x590f83)[_0x54ad('0x28')](_0x23f4d0);};}exports[_0x54ad('0x29')]=function(_0x22f8c0,_0x54e667){var _0x1a61cd={},_0x4dc0a5={},_0xcffef4={'count':0x0,'rows':[]};var _0x82a360=_[_0x54ad('0x2a')](db['SmsTransferReport'][_0x54ad('0x2b')],function(_0x1dac3f){return{'name':_0x1dac3f['fieldName'],'type':_0x1dac3f[_0x54ad('0x2c')][_0x54ad('0x2d')]};});_0x4dc0a5[_0x54ad('0x2e')]=_[_0x54ad('0x2a')](_0x82a360,_0x54ad('0x27'));_0x4dc0a5[_0x54ad('0x2f')]=_['keys'](_0x22f8c0[_0x54ad('0x2f')]);_0x4dc0a5[_0x54ad('0x30')]=_[_0x54ad('0x31')](_0x4dc0a5[_0x54ad('0x2e')],_0x4dc0a5[_0x54ad('0x2f')]);_0x1a61cd['attributes']=_[_0x54ad('0x31')](_0x4dc0a5[_0x54ad('0x2e')],qs['fields'](_0x22f8c0[_0x54ad('0x2f')][_0x54ad('0x32')]));_0x1a61cd[_0x54ad('0x33')]=_0x1a61cd[_0x54ad('0x33')][_0x54ad('0x34')]?_0x1a61cd[_0x54ad('0x33')]:_0x4dc0a5[_0x54ad('0x2e')];if(!_0x22f8c0[_0x54ad('0x2f')][_0x54ad('0x35')](_0x54ad('0x36'))){_0x1a61cd[_0x54ad('0x1e')]=qs[_0x54ad('0x1e')](_0x22f8c0[_0x54ad('0x2f')][_0x54ad('0x1e')]);_0x1a61cd[_0x54ad('0x1c')]=qs[_0x54ad('0x1c')](_0x22f8c0[_0x54ad('0x2f')]['offset']);}_0x1a61cd[_0x54ad('0x37')]=qs[_0x54ad('0x38')](_0x22f8c0['query']['sort']);_0x1a61cd[_0x54ad('0x39')]=qs[_0x54ad('0x30')](_[_0x54ad('0x3a')](_0x22f8c0[_0x54ad('0x2f')],_0x4dc0a5[_0x54ad('0x30')]),_0x82a360);if(_0x22f8c0[_0x54ad('0x2f')]['filter']){_0x1a61cd[_0x54ad('0x39')]=_[_0x54ad('0x3b')](_0x1a61cd[_0x54ad('0x39')],{'$or':_['map'](_0x82a360,function(_0x8f1662){if(_0x8f1662['type']!==_0x54ad('0x3c')){var _0x5da276={};_0x5da276[_0x8f1662[_0x54ad('0x27')]]={'$like':'%'+_0x22f8c0['query'][_0x54ad('0x3d')]+'%'};return _0x5da276;}})});}_0x1a61cd=_[_0x54ad('0x3b')]({},_0x1a61cd,_0x22f8c0['options']);var _0x12811b={'where':_0x1a61cd[_0x54ad('0x39')]};return db[_0x54ad('0x3e')]['count'](_0x12811b)['then'](function(_0x3f707a){_0xcffef4[_0x54ad('0x1f')]=_0x3f707a;if(_0x22f8c0[_0x54ad('0x2f')][_0x54ad('0x3f')]){_0x1a61cd['include']=[{'all':!![]}];}return db[_0x54ad('0x3e')][_0x54ad('0x40')](_0x1a61cd);})[_0x54ad('0x25')](function(_0xbfbd1){_0xcffef4[_0x54ad('0x41')]=_0xbfbd1;return _0xcffef4;})[_0x54ad('0x25')](respondWithFilteredResult(_0x54e667,_0x1a61cd))[_0x54ad('0x42')](handleError(_0x54e667,null));};exports[_0x54ad('0x43')]=function(_0x2981cc,_0x5e0ac7){var _0x304d7f={'raw':!![],'where':{'id':_0x2981cc[_0x54ad('0x44')]['id']}},_0x37fc27={};_0x37fc27[_0x54ad('0x2e')]=_[_0x54ad('0x45')](db['SmsTransferReport']['rawAttributes']);_0x37fc27[_0x54ad('0x2f')]=_['keys'](_0x2981cc[_0x54ad('0x2f')]);_0x37fc27[_0x54ad('0x30')]=_[_0x54ad('0x31')](_0x37fc27[_0x54ad('0x2e')],_0x37fc27['query']);_0x304d7f[_0x54ad('0x33')]=_[_0x54ad('0x31')](_0x37fc27[_0x54ad('0x2e')],qs[_0x54ad('0x32')](_0x2981cc[_0x54ad('0x2f')][_0x54ad('0x32')]));_0x304d7f[_0x54ad('0x33')]=_0x304d7f[_0x54ad('0x33')][_0x54ad('0x34')]?_0x304d7f[_0x54ad('0x33')]:_0x37fc27['model'];if(_0x2981cc[_0x54ad('0x2f')][_0x54ad('0x3f')]){_0x304d7f['include']=[{'all':!![]}];}_0x304d7f=_[_0x54ad('0x3b')]({},_0x304d7f,_0x2981cc['options']);return db[_0x54ad('0x3e')]['find'](_0x304d7f)[_0x54ad('0x25')](handleEntityNotFound(_0x5e0ac7,null))[_0x54ad('0x25')](respondWithResult(_0x5e0ac7,null))[_0x54ad('0x42')](handleError(_0x5e0ac7,null));};exports[_0x54ad('0x46')]=function(_0x189502,_0x43a46b){return db[_0x54ad('0x3e')][_0x54ad('0x46')](_0x189502[_0x54ad('0x47')],{})[_0x54ad('0x25')](respondWithResult(_0x43a46b,0xc9))[_0x54ad('0x42')](handleError(_0x43a46b,null));};exports['update']=function(_0x1941c0,_0x54b123){if(_0x1941c0[_0x54ad('0x47')]['id']){delete _0x1941c0[_0x54ad('0x47')]['id'];}return db[_0x54ad('0x3e')]['find']({'where':{'id':_0x1941c0['params']['id']}})[_0x54ad('0x25')](handleEntityNotFound(_0x54b123,null))[_0x54ad('0x25')](saveUpdates(_0x1941c0['body'],null))[_0x54ad('0x25')](respondWithResult(_0x54b123,null))[_0x54ad('0x42')](handleError(_0x54b123,null));};exports[_0x54ad('0x26')]=function(_0x33727a,_0x4b8997){return db[_0x54ad('0x3e')][_0x54ad('0x48')]({'where':{'id':_0x33727a[_0x54ad('0x44')]['id']}})[_0x54ad('0x25')](handleEntityNotFound(_0x4b8997,null))[_0x54ad('0x25')](removeEntity(_0x4b8997,null))['catch'](handleError(_0x4b8997,null));};exports['describe']=function(_0x567bdb,_0xa414a5){return db[_0x54ad('0x3e')][_0x54ad('0x49')]()[_0x54ad('0x25')](respondWithResult(_0xa414a5,null))[_0x54ad('0x42')](handleError(_0xa414a5,null));};
\ No newline at end of file
+var _0xc36f=['sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','then','destroy','error','stack','name','index','SmsTransferReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','keys','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x23f95f,_0x58084b){var _0x4a5b23=function(_0xb280bc){while(--_0xb280bc){_0x23f95f['push'](_0x23f95f['shift']());}};_0x4a5b23(++_0x58084b);}(_0xc36f,0xba));var _0xfc36=function(_0x9f7aa8,_0xbdb165){_0x9f7aa8=_0x9f7aa8-0x0;var _0x3f590a=_0xc36f[_0x9f7aa8];return _0x3f590a;};'use strict';var emlformat=require(_0xfc36('0x0'));var rimraf=require(_0xfc36('0x1'));var zipdir=require(_0xfc36('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xfc36('0x3'));var Mustache=require('mustache');var util=require(_0xfc36('0x4'));var path=require(_0xfc36('0x5'));var sox=require(_0xfc36('0x6'));var csv=require(_0xfc36('0x7'));var ejs=require(_0xfc36('0x8'));var fs=require('fs');var fs_extra=require(_0xfc36('0x9'));var _=require(_0xfc36('0xa'));var squel=require('squel');var crypto=require(_0xfc36('0xb'));var jsforce=require(_0xfc36('0xc'));var deskjs=require(_0xfc36('0xd'));var toCsv=require(_0xfc36('0x7'));var querystring=require(_0xfc36('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xfc36('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfc36('0x10'));var logger=require('../../config/logger')(_0xfc36('0x11'));var utils=require('../../config/utils');var config=require(_0xfc36('0x12'));var licenseUtil=require(_0xfc36('0x13'));var db=require(_0xfc36('0x14'))['db'];function respondWithStatusCode(_0x43b891,_0x5ce660){_0x5ce660=_0x5ce660||0xcc;return function(_0x1dee6d){if(_0x1dee6d){return _0x43b891[_0xfc36('0x15')](_0x5ce660);}return _0x43b891[_0xfc36('0x16')](_0x5ce660)[_0xfc36('0x17')]();};}function respondWithResult(_0x54f761,_0x18d255){_0x18d255=_0x18d255||0xc8;return function(_0x170b35){if(_0x170b35){return _0x54f761[_0xfc36('0x16')](_0x18d255)[_0xfc36('0x18')](_0x170b35);}};}function respondWithFilteredResult(_0x347fd0,_0xd41981){return function(_0x4bd2d2){if(_0x4bd2d2){var _0x50a820=typeof _0xd41981['offset']===_0xfc36('0x19')&&typeof _0xd41981[_0xfc36('0x1a')]==='undefined';var _0x4d5ae0=_0x4bd2d2[_0xfc36('0x1b')];var _0x1e3ebc=_0x50a820?0x0:_0xd41981[_0xfc36('0x1c')];var _0x4d1d60=_0x50a820?_0x4bd2d2[_0xfc36('0x1b')]:_0xd41981[_0xfc36('0x1c')]+_0xd41981[_0xfc36('0x1a')];var _0x321444;if(_0x4d1d60>=_0x4d5ae0){_0x4d1d60=_0x4d5ae0;_0x321444=0xc8;}else{_0x321444=0xce;}_0x347fd0[_0xfc36('0x16')](_0x321444);return _0x347fd0[_0xfc36('0x1d')]('Content-Range',_0x1e3ebc+'-'+_0x4d1d60+'/'+_0x4d5ae0)['json'](_0x4bd2d2);}return null;};}function patchUpdates(_0x47d4a4){return function(_0x38e41c){try{jsonpatch['apply'](_0x38e41c,_0x47d4a4,!![]);}catch(_0x3518b6){return BPromise[_0xfc36('0x1e')](_0x3518b6);}return _0x38e41c[_0xfc36('0x1f')]();};}function saveUpdates(_0x45504b,_0x537083){return function(_0x29364b){if(_0x29364b){return _0x29364b['update'](_0x45504b)[_0xfc36('0x20')](function(_0x5ad9ef){return _0x5ad9ef;});}return null;};}function removeEntity(_0x2b612b,_0x591d74){return function(_0x1dad37){if(_0x1dad37){return _0x1dad37[_0xfc36('0x21')]()[_0xfc36('0x20')](function(){_0x2b612b[_0xfc36('0x16')](0xcc)[_0xfc36('0x17')]();});}};}function handleEntityNotFound(_0x3865d2,_0x1f382d){return function(_0x282898){if(!_0x282898){_0x3865d2[_0xfc36('0x15')](0x194);}return _0x282898;};}function handleError(_0x276f3c,_0x81cf7f){_0x81cf7f=_0x81cf7f||0x1f4;return function(_0x34ddcd){logger[_0xfc36('0x22')](_0x34ddcd[_0xfc36('0x23')]);if(_0x34ddcd[_0xfc36('0x24')]){delete _0x34ddcd[_0xfc36('0x24')];}_0x276f3c['status'](_0x81cf7f)['send'](_0x34ddcd);};}exports[_0xfc36('0x25')]=function(_0x3e8c0c,_0x30b70e){var _0x44891d={},_0x524b52={},_0x4c871c={'count':0x0,'rows':[]};var _0x224093=_['map'](db[_0xfc36('0x26')][_0xfc36('0x27')],function(_0x5b72ed){return{'name':_0x5b72ed['fieldName'],'type':_0x5b72ed[_0xfc36('0x28')][_0xfc36('0x29')]};});_0x524b52[_0xfc36('0x2a')]=_['map'](_0x224093,_0xfc36('0x24'));_0x524b52['query']=_['keys'](_0x3e8c0c[_0xfc36('0x2b')]);_0x524b52[_0xfc36('0x2c')]=_[_0xfc36('0x2d')](_0x524b52[_0xfc36('0x2a')],_0x524b52[_0xfc36('0x2b')]);_0x44891d['attributes']=_[_0xfc36('0x2d')](_0x524b52['model'],qs[_0xfc36('0x2e')](_0x3e8c0c[_0xfc36('0x2b')][_0xfc36('0x2e')]));_0x44891d['attributes']=_0x44891d[_0xfc36('0x2f')]['length']?_0x44891d['attributes']:_0x524b52[_0xfc36('0x2a')];if(!_0x3e8c0c[_0xfc36('0x2b')][_0xfc36('0x30')](_0xfc36('0x31'))){_0x44891d[_0xfc36('0x1a')]=qs[_0xfc36('0x1a')](_0x3e8c0c['query'][_0xfc36('0x1a')]);_0x44891d[_0xfc36('0x1c')]=qs['offset'](_0x3e8c0c['query'][_0xfc36('0x1c')]);}_0x44891d['order']=qs[_0xfc36('0x32')](_0x3e8c0c['query'][_0xfc36('0x32')]);_0x44891d['where']=qs[_0xfc36('0x2c')](_[_0xfc36('0x33')](_0x3e8c0c['query'],_0x524b52[_0xfc36('0x2c')]),_0x224093);if(_0x3e8c0c[_0xfc36('0x2b')][_0xfc36('0x34')]){_0x44891d[_0xfc36('0x35')]=_[_0xfc36('0x36')](_0x44891d[_0xfc36('0x35')],{'$or':_['map'](_0x224093,function(_0xa6aae2){if(_0xa6aae2['type']!==_0xfc36('0x37')){var _0x1e9a9b={};_0x1e9a9b[_0xa6aae2[_0xfc36('0x24')]]={'$like':'%'+_0x3e8c0c[_0xfc36('0x2b')]['filter']+'%'};return _0x1e9a9b;}})});}_0x44891d=_['merge']({},_0x44891d,_0x3e8c0c[_0xfc36('0x38')]);var _0x462081={'where':_0x44891d[_0xfc36('0x35')]};return db['SmsTransferReport'][_0xfc36('0x1b')](_0x462081)[_0xfc36('0x20')](function(_0x489586){_0x4c871c['count']=_0x489586;if(_0x3e8c0c['query'][_0xfc36('0x39')]){_0x44891d[_0xfc36('0x3a')]=[{'all':!![]}];}return db['SmsTransferReport'][_0xfc36('0x3b')](_0x44891d);})[_0xfc36('0x20')](function(_0x109271){_0x4c871c[_0xfc36('0x3c')]=_0x109271;return _0x4c871c;})['then'](respondWithFilteredResult(_0x30b70e,_0x44891d))['catch'](handleError(_0x30b70e,null));};exports['show']=function(_0x2822c7,_0x38095d){var _0x1a173d={'raw':!![],'where':{'id':_0x2822c7[_0xfc36('0x3d')]['id']}},_0x3191e3={};_0x3191e3[_0xfc36('0x2a')]=_['keys'](db[_0xfc36('0x26')][_0xfc36('0x27')]);_0x3191e3[_0xfc36('0x2b')]=_[_0xfc36('0x3e')](_0x2822c7[_0xfc36('0x2b')]);_0x3191e3[_0xfc36('0x2c')]=_['intersection'](_0x3191e3[_0xfc36('0x2a')],_0x3191e3[_0xfc36('0x2b')]);_0x1a173d[_0xfc36('0x2f')]=_[_0xfc36('0x2d')](_0x3191e3['model'],qs[_0xfc36('0x2e')](_0x2822c7[_0xfc36('0x2b')][_0xfc36('0x2e')]));_0x1a173d[_0xfc36('0x2f')]=_0x1a173d[_0xfc36('0x2f')]['length']?_0x1a173d[_0xfc36('0x2f')]:_0x3191e3[_0xfc36('0x2a')];if(_0x2822c7[_0xfc36('0x2b')][_0xfc36('0x39')]){_0x1a173d[_0xfc36('0x3a')]=[{'all':!![]}];}_0x1a173d=_[_0xfc36('0x36')]({},_0x1a173d,_0x2822c7[_0xfc36('0x38')]);return db['SmsTransferReport'][_0xfc36('0x3f')](_0x1a173d)[_0xfc36('0x20')](handleEntityNotFound(_0x38095d,null))[_0xfc36('0x20')](respondWithResult(_0x38095d,null))[_0xfc36('0x40')](handleError(_0x38095d,null));};exports[_0xfc36('0x41')]=function(_0x45546e,_0x38dcab){return db[_0xfc36('0x26')]['create'](_0x45546e[_0xfc36('0x42')],{})['then'](respondWithResult(_0x38dcab,0xc9))[_0xfc36('0x40')](handleError(_0x38dcab,null));};exports[_0xfc36('0x43')]=function(_0x34cb9f,_0x3e6cde){if(_0x34cb9f['body']['id']){delete _0x34cb9f[_0xfc36('0x42')]['id'];}return db[_0xfc36('0x26')]['find']({'where':{'id':_0x34cb9f[_0xfc36('0x3d')]['id']}})[_0xfc36('0x20')](handleEntityNotFound(_0x3e6cde,null))[_0xfc36('0x20')](saveUpdates(_0x34cb9f[_0xfc36('0x42')],null))[_0xfc36('0x20')](respondWithResult(_0x3e6cde,null))[_0xfc36('0x40')](handleError(_0x3e6cde,null));};exports[_0xfc36('0x21')]=function(_0x40938f,_0x244dcd){return db['SmsTransferReport']['find']({'where':{'id':_0x40938f[_0xfc36('0x3d')]['id']}})[_0xfc36('0x20')](handleEntityNotFound(_0x244dcd,null))[_0xfc36('0x20')](removeEntity(_0x244dcd,null))[_0xfc36('0x40')](handleError(_0x244dcd,null));};exports[_0xfc36('0x44')]=function(_0x56e489,_0x3f8d09){return db[_0xfc36('0x26')][_0xfc36('0x44')]()[_0xfc36('0x20')](respondWithResult(_0x3f8d09,null))['catch'](handleError(_0x3f8d09,null));};
\ No newline at end of file
index c888fd2..3faefc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2467=['lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define','SmsTransferReport','report_sms_transfer','uniqueid'];(function(_0x4db46b,_0xadcb1a){var _0x565be8=function(_0x5d2e50){while(--_0x5d2e50){_0x4db46b['push'](_0x4db46b['shift']());}};_0x565be8(++_0xadcb1a);}(_0x2467,0xfc));var _0x7246=function(_0x584422,_0x5b3fb0){_0x584422=_0x584422-0x0;var _0x2bed35=_0x2467[_0x584422];return _0x2bed35;};'use strict';var _=require(_0x7246('0x0'));var util=require('util');var logger=require(_0x7246('0x1'))('api');var moment=require(_0x7246('0x2'));var BPromise=require(_0x7246('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7246('0x4'));var rimraf=require(_0x7246('0x5'));var config=require(_0x7246('0x6'));var attributes=require('./smsTransferReport.attributes');module[_0x7246('0x7')]=function(_0x499f18,_0x4d70a2){return _0x499f18[_0x7246('0x8')](_0x7246('0x9'),attributes,{'tableName':_0x7246('0xa'),'paranoid':![],'indexes':[{'name':_0x7246('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xebc5=['bluebird','request-promise','path','../../config/environment','./smsTransferReport.attributes','exports','SmsTransferReport','report_sms_transfer','uniqueid','lodash','../../config/logger','api','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xebc5,0x11a));var _0x5ebc=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xebc5[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x5ebc('0x0'));var util=require('util');var logger=require(_0x5ebc('0x1'))(_0x5ebc('0x2'));var moment=require(_0x5ebc('0x3'));var BPromise=require(_0x5ebc('0x4'));var rp=require(_0x5ebc('0x5'));var fs=require('fs');var path=require(_0x5ebc('0x6'));var rimraf=require('rimraf');var config=require(_0x5ebc('0x7'));var attributes=require(_0x5ebc('0x8'));module[_0x5ebc('0x9')]=function(_0x83d0cf,_0x307e19){return _0x83d0cf['define'](_0x5ebc('0xa'),attributes,{'tableName':_0x5ebc('0xb'),'paranoid':![],'indexes':[{'name':_0x5ebc('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 0f990b9..ed785d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x55640c,_0x1678f1){var _0x5766a2=function(_0x49f6e1){while(--_0x49f6e1){_0x55640c['push'](_0x55640c['shift']());}};_0x5766a2(++_0x1678f1);}(_0xdc97,0x13b));var _0x7dc9=function(_0x514463,_0x234507){_0x514463=_0x514463-0x0;var _0x4640ef=_0xdc97[_0x514463];return _0x4640ef;};'use strict';var _=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var moment=require(_0x7dc9('0x2'));var BPromise=require('bluebird');var rs=require(_0x7dc9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7dc9('0x4'))['db'];var utils=require(_0x7dc9('0x5'));var logger=require('../../config/logger')(_0x7dc9('0x6'));var config=require(_0x7dc9('0x7'));var jayson=require(_0x7dc9('0x8'));var client=jayson[_0x7dc9('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2636ef,_0x4f91c7,_0x4b3229){return new BPromise(function(_0x2ff923,_0x23737d){return client[_0x7dc9('0xa')](_0x2636ef,_0x4b3229)[_0x7dc9('0xb')](function(_0x3dd07e){logger['info'](_0x7dc9('0xc'),_0x4f91c7,_0x7dc9('0xd'));logger[_0x7dc9('0xe')](_0x7dc9('0xf'),_0x4f91c7,_0x7dc9('0xd'),JSON[_0x7dc9('0x10')](_0x3dd07e));if(_0x3dd07e[_0x7dc9('0x11')]){if(_0x3dd07e['error']['code']===0x1f4){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0x4f91c7,_0x3dd07e[_0x7dc9('0x11')][_0x7dc9('0x12')]);return _0x23737d(_0x3dd07e['error'][_0x7dc9('0x12')]);}logger[_0x7dc9('0x11')](_0x7dc9('0xc'),_0x4f91c7,_0x3dd07e[_0x7dc9('0x11')][_0x7dc9('0x12')]);return _0x2ff923(_0x3dd07e[_0x7dc9('0x11')]['message']);}else{logger[_0x7dc9('0x13')](_0x7dc9('0xc'),_0x4f91c7,_0x7dc9('0xd'));_0x2ff923(_0x3dd07e[_0x7dc9('0x14')][_0x7dc9('0x12')]);}})[_0x7dc9('0x15')](function(_0x45698c){logger[_0x7dc9('0x11')](_0x7dc9('0xc'),_0x4f91c7,_0x45698c);_0x23737d(_0x45698c);});});}
\ No newline at end of file
+var _0xae1c=['message','info','result','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code','error'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xae1c,0xff));var _0xcae1=function(_0x1a81f2,_0x1a3524){_0x1a81f2=_0x1a81f2-0x0;var _0x5a86a9=_0xae1c[_0x1a81f2];return _0x5a86a9;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcae1('0x0'));var fs=require('fs');var Redis=require(_0xcae1('0x1'));var db=require(_0xcae1('0x2'))['db'];var utils=require(_0xcae1('0x3'));var logger=require(_0xcae1('0x4'))(_0xcae1('0x5'));var config=require(_0xcae1('0x6'));var jayson=require(_0xcae1('0x7'));var client=jayson[_0xcae1('0x8')][_0xcae1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c35c7,_0x38099e,_0x7a27b8){return new BPromise(function(_0x50d451,_0x4e419d){return client[_0xcae1('0xa')](_0x3c35c7,_0x7a27b8)[_0xcae1('0xb')](function(_0x3284aa){logger['info'](_0xcae1('0xc'),_0x38099e,_0xcae1('0xd'));logger[_0xcae1('0xe')]('SmsTransferReport,\x20%s,\x20%s,\x20%s',_0x38099e,_0xcae1('0xd'),JSON[_0xcae1('0xf')](_0x3284aa));if(_0x3284aa['error']){if(_0x3284aa['error'][_0xcae1('0x10')]===0x1f4){logger[_0xcae1('0x11')](_0xcae1('0xc'),_0x38099e,_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);return _0x4e419d(_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);}logger[_0xcae1('0x11')](_0xcae1('0xc'),_0x38099e,_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);return _0x50d451(_0x3284aa[_0xcae1('0x11')][_0xcae1('0x12')]);}else{logger[_0xcae1('0x13')](_0xcae1('0xc'),_0x38099e,'request\x20sent');_0x50d451(_0x3284aa[_0xcae1('0x14')][_0xcae1('0x12')]);}})['catch'](function(_0x4a7ef7){logger[_0xcae1('0x11')](_0xcae1('0xc'),_0x38099e,_0x4a7ef7);_0x4e419d(_0x4a7ef7);});});}
\ No newline at end of file
index 193a7fe..292b0bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd87a=['connect-timeout','Router','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','basename','extname','now','single','file','create','put','update','exports','multer','util','path'];(function(_0x2550ef,_0x56ef46){var _0x2ed0e4=function(_0x556147){while(--_0x556147){_0x2550ef['push'](_0x2550ef['shift']());}};_0x2ed0e4(++_0x56ef46);}(_0xd87a,0x98));var _0xad87=function(_0x28394f,_0x5ebdd2){_0x28394f=_0x28394f-0x0;var _0x2618d2=_0xd87a[_0x28394f];return _0x2618d2;};'use strict';var multer=require(_0xad87('0x0'));var util=require(_0xad87('0x1'));var path=require(_0xad87('0x2'));var timeout=require(_0xad87('0x3'));var express=require('express');var router=express[_0xad87('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xad87('0x5'));var config=require(_0xad87('0x6'));var controller=require(_0xad87('0x7'));router[_0xad87('0x8')]('/',auth[_0xad87('0x9')](),controller[_0xad87('0xa')]);router[_0xad87('0x8')](_0xad87('0xb'),auth[_0xad87('0x9')](),controller[_0xad87('0xc')]);router[_0xad87('0x8')](_0xad87('0xd'),auth[_0xad87('0x9')](),controller[_0xad87('0xe')]);var upload=multer({'storage':multer[_0xad87('0xf')]({'destination':function(_0x105d35,_0x1b8082,_0x149a8c){_0x149a8c(null,path[_0xad87('0x10')](config[_0xad87('0x11')],_0xad87('0x12')));},'filename':function(_0x56a4f6,_0x2bc88d,_0x2aec9d){_0x2bc88d[_0xad87('0x13')]=_0x2bc88d['originalname'][_0xad87('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x2aec9d(null,util[_0xad87('0x15')]('%s-%s%s',path[_0xad87('0x16')](_0x2bc88d['originalname'],path[_0xad87('0x17')](_0x2bc88d[_0xad87('0x13')])),Date[_0xad87('0x18')](),path[_0xad87('0x17')](_0x2bc88d[_0xad87('0x13')])));}})});router['post']('/',upload[_0xad87('0x19')](_0xad87('0x1a')),controller[_0xad87('0x1b')]);router[_0xad87('0x1c')](_0xad87('0xb'),auth[_0xad87('0x9')](),controller[_0xad87('0x1d')]);router['delete']('/:id',auth['isAuthenticated'](),controller['delete']);module[_0xad87('0x1e')]=router;
\ No newline at end of file
+var _0xf9a3=['file','create','put','update','delete','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s','extname','now','post','single'];(function(_0x2faf71,_0x5a332f){var _0x1661bd=function(_0xd2925){while(--_0xd2925){_0x2faf71['push'](_0x2faf71['shift']());}};_0x1661bd(++_0x5a332f);}(_0xf9a3,0x17a));var _0x3f9a=function(_0xa821a5,_0x100187){_0xa821a5=_0xa821a5-0x0;var _0x41c11b=_0xf9a3[_0xa821a5];return _0x41c11b;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3f9a('0x0'));var express=require(_0x3f9a('0x1'));var router=express[_0x3f9a('0x2')]();var fs_extra=require(_0x3f9a('0x3'));var auth=require(_0x3f9a('0x4'));var interaction=require(_0x3f9a('0x5'));var config=require('../../config/environment');var controller=require('./sound.controller');router['get']('/',auth[_0x3f9a('0x6')](),controller[_0x3f9a('0x7')]);router[_0x3f9a('0x8')](_0x3f9a('0x9'),auth[_0x3f9a('0x6')](),controller[_0x3f9a('0xa')]);router[_0x3f9a('0x8')](_0x3f9a('0xb'),auth[_0x3f9a('0x6')](),controller[_0x3f9a('0xc')]);var upload=multer({'storage':multer[_0x3f9a('0xd')]({'destination':function(_0x22084b,_0x2b24b3,_0x3fa0df){_0x3fa0df(null,path[_0x3f9a('0xe')](config[_0x3f9a('0xf')],_0x3f9a('0x10')));},'filename':function(_0x2893b3,_0x59daaf,_0x357e21){_0x59daaf[_0x3f9a('0x11')]=_0x59daaf[_0x3f9a('0x11')][_0x3f9a('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x357e21(null,util[_0x3f9a('0x13')](_0x3f9a('0x14'),path['basename'](_0x59daaf[_0x3f9a('0x11')],path[_0x3f9a('0x15')](_0x59daaf[_0x3f9a('0x11')])),Date[_0x3f9a('0x16')](),path[_0x3f9a('0x15')](_0x59daaf[_0x3f9a('0x11')])));}})});router[_0x3f9a('0x17')]('/',upload[_0x3f9a('0x18')](_0x3f9a('0x19')),controller[_0x3f9a('0x1a')]);router[_0x3f9a('0x1b')](_0x3f9a('0x9'),auth[_0x3f9a('0x6')](),controller[_0x3f9a('0x1c')]);router['delete']('/:id',auth[_0x3f9a('0x6')](),controller[_0x3f9a('0x1d')]);module[_0x3f9a('0x1e')]=router;
\ No newline at end of file
index 22e62f8..ae7585a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf8f=['sequelize','exports','STRING','FLOAT','INTEGER','BIGINT'];(function(_0x411dbe,_0x436cde){var _0x57efb0=function(_0xab6225){while(--_0xab6225){_0x411dbe['push'](_0x411dbe['shift']());}};_0x57efb0(++_0x436cde);}(_0xcf8f,0x102));var _0xfcf8=function(_0x440bd6,_0x6ee88d){_0x440bd6=_0x440bd6-0x0;var _0x9ca3d8=_0xcf8f[_0x440bd6];return _0x9ca3d8;};'use strict';var Sequelize=require(_0xfcf8('0x0'));module[_0xfcf8('0x1')]={'name':{'type':Sequelize[_0xfcf8('0x2')],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0xfcf8('0x2')],'defaultValue':''},'description':{'type':Sequelize[_0xfcf8('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0xfcf8('0x3')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0xfcf8('0x4')]},'original_bitRate':{'type':Sequelize[_0xfcf8('0x5')]},'original_sampleRate':{'type':Sequelize[_0xfcf8('0x4')]},'converted_format':{'type':Sequelize[_0xfcf8('0x2')]},'converted_duration':{'type':Sequelize[_0xfcf8('0x3')]},'converted_sampleCount':{'type':Sequelize[_0xfcf8('0x5')]},'converted_channelCount':{'type':Sequelize[_0xfcf8('0x4')]},'converted_bitRate':{'type':Sequelize[_0xfcf8('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x2165=['exports','STRING','name','FLOAT','INTEGER','BIGINT'];(function(_0x5920cb,_0x1ef8ce){var _0x1648c8=function(_0x11cbd1){while(--_0x11cbd1){_0x5920cb['push'](_0x5920cb['shift']());}};_0x1648c8(++_0x1ef8ce);}(_0x2165,0x78));var _0x5216=function(_0xb6da2d,_0x9dbbba){_0xb6da2d=_0xb6da2d-0x0;var _0x155572=_0x2165[_0xb6da2d];return _0x155572;};'use strict';var Sequelize=require('sequelize');module[_0x5216('0x0')]={'name':{'type':Sequelize[_0x5216('0x1')],'unique':_0x5216('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x5216('0x1')]},'display_name':{'type':Sequelize[_0x5216('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x5216('0x1')]},'original_format':{'type':Sequelize[_0x5216('0x1')]},'original_duration':{'type':Sequelize[_0x5216('0x3')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x5216('0x4')]},'original_bitRate':{'type':Sequelize[_0x5216('0x5')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x5216('0x1')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0x5216('0x5')]},'converted_channelCount':{'type':Sequelize[_0x5216('0x4')]},'converted_bitRate':{'type':Sequelize[_0x5216('0x5')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 03d116d..c64d785 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f23=['ValidationError','Sound\x20not\x20found','format','%s.%s','create','basename','originalname','extname','file','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','transcode','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','original_sampleRate','sampleRate','dest','converted_sampleCount','converted_sampleRate','0777','body','role','user','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','pick','description','delete','original_format','end','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','lodash','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','error','stack','name','send','index','map','Sound','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','where','merge','filter','options','includeAll','include','findAll','rows','catch','params','length','download','find','save_name','converted_format','join','root','server/files/sounds/converted'];(function(_0x2bd443,_0x3b60d8){var _0x45159a=function(_0x1ddbec){while(--_0x1ddbec){_0x2bd443['push'](_0x2bd443['shift']());}};_0x45159a(++_0x3b60d8);}(_0x8f23,0xac));var _0x38f2=function(_0x316330,_0x44f8b6){_0x316330=_0x316330-0x0;var _0x143e4f=_0x8f23[_0x316330];return _0x143e4f;};'use strict';var emlformat=require(_0x38f2('0x0'));var rimraf=require(_0x38f2('0x1'));var zipdir=require(_0x38f2('0x2'));var jsonpatch=require(_0x38f2('0x3'));var rp=require(_0x38f2('0x4'));var moment=require(_0x38f2('0x5'));var BPromise=require(_0x38f2('0x6'));var Mustache=require(_0x38f2('0x7'));var util=require('util');var path=require(_0x38f2('0x8'));var sox=require(_0x38f2('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38f2('0xa'));var squel=require(_0x38f2('0xb'));var crypto=require(_0x38f2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x38f2('0xd'));var toCsv=require(_0x38f2('0xe'));var querystring=require(_0x38f2('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x38f2('0x10'));var qs=require(_0x38f2('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x38f2('0x12'));var logger=require(_0x38f2('0x13'))(_0x38f2('0x14'));var utils=require(_0x38f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x38f2('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x48303c,_0x30c7d3){_0x30c7d3=_0x30c7d3||0xcc;return function(_0x4c9939){if(_0x4c9939){return _0x48303c[_0x38f2('0x17')](_0x30c7d3);}return _0x48303c['status'](_0x30c7d3)['end']();};}function respondWithResult(_0x5f17c1,_0x19ade4){_0x19ade4=_0x19ade4||0xc8;return function(_0x7b7792){if(_0x7b7792){return _0x5f17c1[_0x38f2('0x18')](_0x19ade4)[_0x38f2('0x19')](_0x7b7792);}};}function respondWithFilteredResult(_0x61e5dd,_0x579b76){return function(_0x4d12e9){if(_0x4d12e9){var _0x179ecf=typeof _0x579b76[_0x38f2('0x1a')]===_0x38f2('0x1b')&&typeof _0x579b76[_0x38f2('0x1c')]===_0x38f2('0x1b');var _0x37c30a=_0x4d12e9[_0x38f2('0x1d')];var _0x2ed9a4=_0x179ecf?0x0:_0x579b76[_0x38f2('0x1a')];var _0x103ef5=_0x179ecf?_0x4d12e9['count']:_0x579b76['offset']+_0x579b76[_0x38f2('0x1c')];var _0x5755b9;if(_0x103ef5>=_0x37c30a){_0x103ef5=_0x37c30a;_0x5755b9=0xc8;}else{_0x5755b9=0xce;}_0x61e5dd['status'](_0x5755b9);return _0x61e5dd[_0x38f2('0x1e')](_0x38f2('0x1f'),_0x2ed9a4+'-'+_0x103ef5+'/'+_0x37c30a)[_0x38f2('0x19')](_0x4d12e9);}return null;};}function patchUpdates(_0x1135da){return function(_0x14d456){try{jsonpatch[_0x38f2('0x20')](_0x14d456,_0x1135da,!![]);}catch(_0x153a53){return BPromise[_0x38f2('0x21')](_0x153a53);}return _0x14d456[_0x38f2('0x22')]();};}function saveUpdates(_0x503933,_0x512543){return function(_0x3d8d83){if(_0x3d8d83){return _0x3d8d83[_0x38f2('0x23')](_0x503933)[_0x38f2('0x24')](function(_0x260006){return _0x260006;});}return null;};}function removeEntity(_0x661dbb,_0x1d09d6){return function(_0x3315fe){if(_0x3315fe){return _0x3315fe[_0x38f2('0x25')]()[_0x38f2('0x24')](function(){var _0x435562=_0x3315fe['get']({'plain':!![]});var _0x4c7e2d='Sounds';return db[_0x38f2('0x26')][_0x38f2('0x25')]({'where':{'type':_0x4c7e2d,'resourceId':_0x435562['id']}})[_0x38f2('0x24')](function(){return _0x3315fe;});})[_0x38f2('0x24')](function(){_0x661dbb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x73e7aa,_0x6ea598){return function(_0x183a84){if(!_0x183a84){_0x73e7aa[_0x38f2('0x17')](0x194);}return _0x183a84;};}function handleError(_0x389106,_0x3d0d7e){_0x3d0d7e=_0x3d0d7e||0x1f4;return function(_0x2497d9){logger[_0x38f2('0x27')](_0x2497d9[_0x38f2('0x28')]);if(_0x2497d9[_0x38f2('0x29')]){delete _0x2497d9['name'];}_0x389106[_0x38f2('0x18')](_0x3d0d7e)[_0x38f2('0x2a')](_0x2497d9);};}exports[_0x38f2('0x2b')]=function(_0x2cb992,_0x28c45e){var _0xc28fb8={},_0x1abcd6={},_0x4707a6={'count':0x0,'rows':[]};var _0x80e6c7=_[_0x38f2('0x2c')](db[_0x38f2('0x2d')][_0x38f2('0x2e')],function(_0x2a2448){return{'name':_0x2a2448[_0x38f2('0x2f')],'type':_0x2a2448[_0x38f2('0x30')][_0x38f2('0x31')]};});_0x1abcd6[_0x38f2('0x32')]=_[_0x38f2('0x2c')](_0x80e6c7,_0x38f2('0x29'));_0x1abcd6[_0x38f2('0x33')]=_[_0x38f2('0x34')](_0x2cb992['query']);_0x1abcd6[_0x38f2('0x35')]=_[_0x38f2('0x36')](_0x1abcd6[_0x38f2('0x32')],_0x1abcd6[_0x38f2('0x33')]);_0xc28fb8[_0x38f2('0x37')]=_[_0x38f2('0x36')](_0x1abcd6['model'],qs[_0x38f2('0x38')](_0x2cb992[_0x38f2('0x33')][_0x38f2('0x38')]));_0xc28fb8['attributes']=_0xc28fb8['attributes']['length']?_0xc28fb8[_0x38f2('0x37')]:_0x1abcd6['model'];if(!_0x2cb992['query'][_0x38f2('0x39')](_0x38f2('0x3a'))){_0xc28fb8[_0x38f2('0x1c')]=qs['limit'](_0x2cb992[_0x38f2('0x33')][_0x38f2('0x1c')]);_0xc28fb8[_0x38f2('0x1a')]=qs[_0x38f2('0x1a')](_0x2cb992[_0x38f2('0x33')][_0x38f2('0x1a')]);}_0xc28fb8[_0x38f2('0x3b')]=qs['sort'](_0x2cb992[_0x38f2('0x33')]['sort']);_0xc28fb8[_0x38f2('0x3c')]=qs[_0x38f2('0x35')](_['pick'](_0x2cb992[_0x38f2('0x33')],_0x1abcd6[_0x38f2('0x35')]),_0x80e6c7);if(_0x2cb992['query']['filter']){_0xc28fb8[_0x38f2('0x3c')]=_[_0x38f2('0x3d')](_0xc28fb8[_0x38f2('0x3c')],{'$or':_['map'](_0x80e6c7,function(_0x3fda17){if(_0x3fda17[_0x38f2('0x30')]!=='VIRTUAL'){var _0x249af3={};_0x249af3[_0x3fda17[_0x38f2('0x29')]]={'$like':'%'+_0x2cb992[_0x38f2('0x33')][_0x38f2('0x3e')]+'%'};return _0x249af3;}})});}_0xc28fb8=_['merge']({},_0xc28fb8,_0x2cb992[_0x38f2('0x3f')]);var _0x55f3ce={'where':_0xc28fb8[_0x38f2('0x3c')]};return db[_0x38f2('0x2d')]['count'](_0x55f3ce)[_0x38f2('0x24')](function(_0x48ba0c){_0x4707a6[_0x38f2('0x1d')]=_0x48ba0c;if(_0x2cb992[_0x38f2('0x33')][_0x38f2('0x40')]){_0xc28fb8[_0x38f2('0x41')]=[{'all':!![]}];}return db['Sound'][_0x38f2('0x42')](_0xc28fb8);})[_0x38f2('0x24')](function(_0x1fd596){_0x4707a6[_0x38f2('0x43')]=_0x1fd596;return _0x4707a6;})['then'](respondWithFilteredResult(_0x28c45e,_0xc28fb8))[_0x38f2('0x44')](handleError(_0x28c45e,null));};exports['show']=function(_0x2cdd77,_0x3229df){var _0x3e6eaa={'raw':!![],'where':{'id':_0x2cdd77[_0x38f2('0x45')]['id']}},_0x99bb24={};_0x99bb24[_0x38f2('0x32')]=_[_0x38f2('0x34')](db['Sound'][_0x38f2('0x2e')]);_0x99bb24[_0x38f2('0x33')]=_[_0x38f2('0x34')](_0x2cdd77[_0x38f2('0x33')]);_0x99bb24[_0x38f2('0x35')]=_[_0x38f2('0x36')](_0x99bb24['model'],_0x99bb24[_0x38f2('0x33')]);_0x3e6eaa[_0x38f2('0x37')]=_[_0x38f2('0x36')](_0x99bb24['model'],qs['fields'](_0x2cdd77[_0x38f2('0x33')][_0x38f2('0x38')]));_0x3e6eaa[_0x38f2('0x37')]=_0x3e6eaa[_0x38f2('0x37')][_0x38f2('0x46')]?_0x3e6eaa['attributes']:_0x99bb24[_0x38f2('0x32')];if(_0x2cdd77[_0x38f2('0x33')]['includeAll']){_0x3e6eaa['include']=[{'all':!![]}];}_0x3e6eaa=_[_0x38f2('0x3d')]({},_0x3e6eaa,_0x2cdd77[_0x38f2('0x3f')]);return db[_0x38f2('0x2d')]['find'](_0x3e6eaa)['then'](handleEntityNotFound(_0x3229df,null))[_0x38f2('0x24')](respondWithResult(_0x3229df,null))[_0x38f2('0x44')](handleError(_0x3229df,null));};exports[_0x38f2('0x47')]=function(_0x14b41a,_0xe7eba2,_0x204480){return db[_0x38f2('0x2d')][_0x38f2('0x48')]({'where':{'id':_0x14b41a['params']['id']},'attributes':[_0x38f2('0x29'),_0x38f2('0x49'),_0x38f2('0x4a')],'raw':!![]})[_0x38f2('0x24')](handleEntityNotFound(_0xe7eba2,null))[_0x38f2('0x24')](function(_0x3ee894){if(_0x3ee894){if(!fs['existsSync'](path[_0x38f2('0x4b')](config[_0x38f2('0x4c')],_0x38f2('0x4d'),_0x3ee894[_0x38f2('0x49')]+'.'+_0x3ee894[_0x38f2('0x4a')]))){throw new db['Sequelize'][(_0x38f2('0x4e'))](_0x38f2('0x4f'));}return _0xe7eba2[_0x38f2('0x47')](path[_0x38f2('0x4b')](config[_0x38f2('0x4c')],_0x38f2('0x4d'),util[_0x38f2('0x50')](_0x38f2('0x51'),_0x3ee894['save_name'],_0x3ee894[_0x38f2('0x4a')])),util[_0x38f2('0x50')]('%s.%s',_0x3ee894[_0x38f2('0x29')],_0x3ee894[_0x38f2('0x4a')]));}return null;})[_0x38f2('0x44')](handleError(_0xe7eba2,null));};exports[_0x38f2('0x52')]=function(_0x3912d1,_0x4490ef,_0x2071bc){var _0x5496d2={'name':path[_0x38f2('0x53')](_0x3912d1['file'][_0x38f2('0x54')],path[_0x38f2('0x55')](_0x3912d1['file'][_0x38f2('0x54')])),'save_name':path['basename'](_0x3912d1[_0x38f2('0x56')][_0x38f2('0x57')],path[_0x38f2('0x55')](_0x3912d1[_0x38f2('0x56')]['filename'])),'original_format':path['extname'](_0x3912d1[_0x38f2('0x56')][_0x38f2('0x54')])[_0x38f2('0x58')](0x1),'converted_format':_0x38f2('0x59')};var _0x1227d7=path[_0x38f2('0x4b')](config[_0x38f2('0x4c')],_0x38f2('0x5a'),_0x3912d1[_0x38f2('0x56')][_0x38f2('0x57')]);var _0x107d7b=path[_0x38f2('0x4b')](config[_0x38f2('0x4c')],_0x38f2('0x4d'),util['format'](_0x38f2('0x51'),path['basename'](_0x3912d1[_0x38f2('0x56')][_0x38f2('0x57')],path[_0x38f2('0x55')](_0x3912d1[_0x38f2('0x56')][_0x38f2('0x57')])),_0x5496d2[_0x38f2('0x4a')]));logger[_0x38f2('0x5b')](_0x38f2('0x5c'),_0x1227d7);logger[_0x38f2('0x5b')](_0x38f2('0x5d'),_0x107d7b);try{fs[_0x38f2('0x5e')](_0x1227d7,parseInt('0777',0x8));var _0x2b4c3d=sox[_0x38f2('0x5f')](_0x1227d7,_0x107d7b,{'sampleRate':0x1f40,'format':_0x38f2('0x59'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x2b4c3d['on'](_0x38f2('0x27'),function(_0x4f96c3){fs[_0x38f2('0x60')](_0x1227d7);_0x4490ef[_0x38f2('0x18')](0x1f4)[_0x38f2('0x2a')](_0x4f96c3);});_0x2b4c3d['on'](_0x38f2('0x61'),function(_0x4a0cd8){_0x5496d2[_0x38f2('0x62')]=isNaN(_0x4a0cd8[_0x38f2('0x63')])?null:_0x4a0cd8[_0x38f2('0x63')]*0x3e8;_0x5496d2[_0x38f2('0x64')]=isNaN(_0x4a0cd8[_0x38f2('0x65')])?null:_0x4a0cd8[_0x38f2('0x65')];_0x5496d2[_0x38f2('0x66')]=isNaN(_0x4a0cd8[_0x38f2('0x67')])?null:_0x4a0cd8[_0x38f2('0x67')];_0x5496d2['original_bitRate']=isNaN(_0x4a0cd8[_0x38f2('0x68')])?null:_0x4a0cd8['bitRate'];_0x5496d2[_0x38f2('0x69')]=isNaN(_0x4a0cd8[_0x38f2('0x6a')])?null:_0x4a0cd8[_0x38f2('0x6a')];});_0x2b4c3d['on'](_0x38f2('0x6b'),function(_0x4454cf){_0x5496d2['converted_duration']=isNaN(_0x4454cf['duration'])?null:_0x4454cf['duration']*0x3e8;_0x5496d2[_0x38f2('0x6c')]=isNaN(_0x4454cf[_0x38f2('0x65')])?null:_0x4454cf['sampleCount'];_0x5496d2['converted_channelCount']=isNaN(_0x4454cf['channelCount'])?null:_0x4454cf[_0x38f2('0x67')];_0x5496d2['converted_bitRate']=isNaN(_0x4454cf[_0x38f2('0x68')])?null:_0x4454cf[_0x38f2('0x68')];_0x5496d2[_0x38f2('0x6d')]=isNaN(_0x4454cf[_0x38f2('0x6a')])?null:_0x4454cf[_0x38f2('0x6a')];});_0x2b4c3d['on']('end',function(){fs[_0x38f2('0x5e')](_0x107d7b,parseInt(_0x38f2('0x6e'),0x8));return db[_0x38f2('0x2d')][_0x38f2('0x52')](_0x5496d2)[_0x38f2('0x24')](function(_0x4fb3ee){var _0x4a86aa={'role':_0x3912d1[_0x38f2('0x6f')][_0x38f2('0x70')],'userProfileId':_0x3912d1[_0x38f2('0x6f')]['userProfileId']};if(!_0x4a86aa)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4a86aa[_0x38f2('0x70')]===_0x38f2('0x71')){var _0x3caad4=_0x4fb3ee[_0x38f2('0x72')]({'plain':!![]});return db[_0x38f2('0x73')]['find']({'where':{'name':'Sounds','userProfileId':_0x4a86aa[_0x38f2('0x74')]},'raw':!![]})['then'](function(_0x6a35f3){if(_0x6a35f3&&_0x6a35f3[_0x38f2('0x75')]===0x0){return db['UserProfileResource'][_0x38f2('0x52')]({'name':_0x3caad4[_0x38f2('0x29')],'resourceId':_0x3caad4['id'],'type':_0x6a35f3[_0x38f2('0x29')],'sectionId':_0x6a35f3['id']},{})[_0x38f2('0x24')](function(){return _0x4fb3ee;});}else{return _0x4fb3ee;}})[_0x38f2('0x44')](function(_0x4c2dd4){logger[_0x38f2('0x27')](_0x38f2('0x76'),_0x4c2dd4);throw _0x4c2dd4;});}return _0x4fb3ee;})['then'](respondWithResult(_0x4490ef,null))[_0x38f2('0x44')](handleError(_0x4490ef,null));});_0x2b4c3d[_0x38f2('0x77')]();}catch(_0x5b2bd5){_0x4490ef[_0x38f2('0x18')](0x1f4)['send'](_0x5b2bd5);}};exports['update']=function(_0x20371f,_0x214edb,_0x52723b){return db[_0x38f2('0x2d')][_0x38f2('0x48')]({'where':{'id':_0x20371f[_0x38f2('0x45')]['id']}})[_0x38f2('0x24')](handleEntityNotFound(_0x214edb,null))['then'](saveUpdates(_[_0x38f2('0x78')](_0x20371f[_0x38f2('0x6f')],[_0x38f2('0x29'),_0x38f2('0x79')]),null))[_0x38f2('0x24')](respondWithResult(_0x214edb,null))[_0x38f2('0x44')](handleError(_0x214edb,null));};exports[_0x38f2('0x7a')]=function(_0x41b20b,_0x393e9f,_0x28adc1){return db['Sound']['find']({'where':{'id':_0x41b20b['params']['id']}})['then'](function(_0x46d16){if(_0x46d16){return _0x46d16[_0x38f2('0x25')]();}})[_0x38f2('0x24')](function(_0x2eae5d){var _0x36d3cd=path[_0x38f2('0x4b')](config[_0x38f2('0x4c')],_0x38f2('0x5a'),util['format'](_0x38f2('0x51'),_0x2eae5d[_0x38f2('0x49')],_0x2eae5d[_0x38f2('0x7b')]));var _0x45668b=path[_0x38f2('0x4b')](config['root'],_0x38f2('0x4d'),util[_0x38f2('0x50')]('%s.%s',_0x2eae5d[_0x38f2('0x49')],_0x2eae5d[_0x38f2('0x4a')]));fs['unlinkSync'](_0x36d3cd);fs['unlinkSync'](_0x45668b);return _0x2eae5d;})[_0x38f2('0x24')](function(_0x53d80a){if(_0x53d80a){return _0x393e9f[_0x38f2('0x18')](0xcc)[_0x38f2('0x7c')]();}})[_0x38f2('0x24')](handleEntityNotFound(_0x393e9f,null))[_0x38f2('0x44')](handleError(_0x393e9f,null));};
\ No newline at end of file
+var _0xf65f=['converted_bitRate','converted_sampleRate','role','body','userProfileId','get','autoAssociation','create','start','update','description','original_format','eml-format','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','Sounds','sendStatus','error','stack','name','index','map','Sound','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','where','filter','merge','options','findAll','rows','catch','show','params','includeAll','find','save_name','converted_format','join','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','root','format','%s.%s','basename','file','originalname','extname','filename','substring','wav','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','unlinkSync','send','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','converted_duration','converted_sampleCount','converted_channelCount'];(function(_0xc17d60,_0x4d3616){var _0x462396=function(_0x23d12e){while(--_0x23d12e){_0xc17d60['push'](_0xc17d60['shift']());}};_0x462396(++_0x4d3616);}(_0xf65f,0x1f0));var _0xff65=function(_0x1c384f,_0x5c4bbe){_0x1c384f=_0x1c384f-0x0;var _0x4976f1=_0xf65f[_0x1c384f];return _0x4976f1;};'use strict';var emlformat=require(_0xff65('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff65('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xff65('0x2'));var moment=require(_0xff65('0x3'));var BPromise=require(_0xff65('0x4'));var Mustache=require(_0xff65('0x5'));var util=require('util');var path=require(_0xff65('0x6'));var sox=require(_0xff65('0x7'));var csv=require('to-csv');var ejs=require(_0xff65('0x8'));var fs=require('fs');var fs_extra=require(_0xff65('0x9'));var _=require('lodash');var squel=require(_0xff65('0xa'));var crypto=require(_0xff65('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xff65('0xc'));var querystring=require(_0xff65('0xd'));var Papa=require(_0xff65('0xe'));var Redis=require(_0xff65('0xf'));var authService=require(_0xff65('0x10'));var qs=require(_0xff65('0x11'));var as=require(_0xff65('0x12'));var hardwareService=require(_0xff65('0x13'));var logger=require(_0xff65('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xff65('0x15'));var licenseUtil=require(_0xff65('0x16'));var db=require(_0xff65('0x17'))['db'];function respondWithStatusCode(_0x57cac5,_0x2a181b){_0x2a181b=_0x2a181b||0xcc;return function(_0x4508f5){if(_0x4508f5){return _0x57cac5['sendStatus'](_0x2a181b);}return _0x57cac5['status'](_0x2a181b)[_0xff65('0x18')]();};}function respondWithResult(_0xea43cf,_0xf98c){_0xf98c=_0xf98c||0xc8;return function(_0x67f150){if(_0x67f150){return _0xea43cf[_0xff65('0x19')](_0xf98c)[_0xff65('0x1a')](_0x67f150);}};}function respondWithFilteredResult(_0x288a85,_0x19f2f4){return function(_0x28992b){if(_0x28992b){var _0x360d0a=typeof _0x19f2f4[_0xff65('0x1b')]===_0xff65('0x1c')&&typeof _0x19f2f4[_0xff65('0x1d')]===_0xff65('0x1c');var _0x1ece30=_0x28992b[_0xff65('0x1e')];var _0x139eba=_0x360d0a?0x0:_0x19f2f4[_0xff65('0x1b')];var _0x33a41e=_0x360d0a?_0x28992b[_0xff65('0x1e')]:_0x19f2f4[_0xff65('0x1b')]+_0x19f2f4[_0xff65('0x1d')];var _0x1debd5;if(_0x33a41e>=_0x1ece30){_0x33a41e=_0x1ece30;_0x1debd5=0xc8;}else{_0x1debd5=0xce;}_0x288a85[_0xff65('0x19')](_0x1debd5);return _0x288a85[_0xff65('0x1f')](_0xff65('0x20'),_0x139eba+'-'+_0x33a41e+'/'+_0x1ece30)[_0xff65('0x1a')](_0x28992b);}return null;};}function patchUpdates(_0x3c8e28){return function(_0x2d9972){try{jsonpatch[_0xff65('0x21')](_0x2d9972,_0x3c8e28,!![]);}catch(_0x188e0c){return BPromise[_0xff65('0x22')](_0x188e0c);}return _0x2d9972[_0xff65('0x23')]();};}function saveUpdates(_0x3156da,_0x67dcfb){return function(_0x11508b){if(_0x11508b){return _0x11508b['update'](_0x3156da)[_0xff65('0x24')](function(_0x7e779b){return _0x7e779b;});}return null;};}function removeEntity(_0x25f3b5,_0x5293d8){return function(_0x4308e4){if(_0x4308e4){return _0x4308e4[_0xff65('0x25')]()['then'](function(){var _0x439e08=_0x4308e4['get']({'plain':!![]});var _0xc826da=_0xff65('0x26');return db['UserProfileResource'][_0xff65('0x25')]({'where':{'type':_0xc826da,'resourceId':_0x439e08['id']}})['then'](function(){return _0x4308e4;});})[_0xff65('0x24')](function(){_0x25f3b5[_0xff65('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47bb8f,_0x55fb6a){return function(_0x7fd065){if(!_0x7fd065){_0x47bb8f[_0xff65('0x27')](0x194);}return _0x7fd065;};}function handleError(_0x3154d3,_0x5cd96d){_0x5cd96d=_0x5cd96d||0x1f4;return function(_0x39627a){logger[_0xff65('0x28')](_0x39627a[_0xff65('0x29')]);if(_0x39627a[_0xff65('0x2a')]){delete _0x39627a[_0xff65('0x2a')];}_0x3154d3['status'](_0x5cd96d)['send'](_0x39627a);};}exports[_0xff65('0x2b')]=function(_0x5a7eac,_0x41acd2){var _0x3778ef={},_0x51dd3d={},_0x4444b2={'count':0x0,'rows':[]};var _0x36cc76=_[_0xff65('0x2c')](db[_0xff65('0x2d')][_0xff65('0x2e')],function(_0x2fd576){return{'name':_0x2fd576['fieldName'],'type':_0x2fd576[_0xff65('0x2f')][_0xff65('0x30')]};});_0x51dd3d[_0xff65('0x31')]=_[_0xff65('0x2c')](_0x36cc76,'name');_0x51dd3d['query']=_[_0xff65('0x32')](_0x5a7eac[_0xff65('0x33')]);_0x51dd3d[_0xff65('0x34')]=_[_0xff65('0x35')](_0x51dd3d['model'],_0x51dd3d[_0xff65('0x33')]);_0x3778ef['attributes']=_[_0xff65('0x35')](_0x51dd3d[_0xff65('0x31')],qs[_0xff65('0x36')](_0x5a7eac[_0xff65('0x33')][_0xff65('0x36')]));_0x3778ef[_0xff65('0x37')]=_0x3778ef[_0xff65('0x37')][_0xff65('0x38')]?_0x3778ef[_0xff65('0x37')]:_0x51dd3d[_0xff65('0x31')];if(!_0x5a7eac[_0xff65('0x33')][_0xff65('0x39')]('nolimit')){_0x3778ef[_0xff65('0x1d')]=qs['limit'](_0x5a7eac['query']['limit']);_0x3778ef[_0xff65('0x1b')]=qs['offset'](_0x5a7eac[_0xff65('0x33')][_0xff65('0x1b')]);}_0x3778ef[_0xff65('0x3a')]=qs['sort'](_0x5a7eac['query']['sort']);_0x3778ef[_0xff65('0x3b')]=qs[_0xff65('0x34')](_['pick'](_0x5a7eac[_0xff65('0x33')],_0x51dd3d['filters']),_0x36cc76);if(_0x5a7eac[_0xff65('0x33')][_0xff65('0x3c')]){_0x3778ef['where']=_[_0xff65('0x3d')](_0x3778ef[_0xff65('0x3b')],{'$or':_['map'](_0x36cc76,function(_0x2c3493){if(_0x2c3493[_0xff65('0x2f')]!=='VIRTUAL'){var _0x8632c4={};_0x8632c4[_0x2c3493[_0xff65('0x2a')]]={'$like':'%'+_0x5a7eac[_0xff65('0x33')]['filter']+'%'};return _0x8632c4;}})});}_0x3778ef=_[_0xff65('0x3d')]({},_0x3778ef,_0x5a7eac[_0xff65('0x3e')]);var _0x43f7f2={'where':_0x3778ef[_0xff65('0x3b')]};return db[_0xff65('0x2d')][_0xff65('0x1e')](_0x43f7f2)['then'](function(_0x3517c3){_0x4444b2[_0xff65('0x1e')]=_0x3517c3;if(_0x5a7eac['query']['includeAll']){_0x3778ef['include']=[{'all':!![]}];}return db['Sound'][_0xff65('0x3f')](_0x3778ef);})[_0xff65('0x24')](function(_0x420aae){_0x4444b2[_0xff65('0x40')]=_0x420aae;return _0x4444b2;})[_0xff65('0x24')](respondWithFilteredResult(_0x41acd2,_0x3778ef))[_0xff65('0x41')](handleError(_0x41acd2,null));};exports[_0xff65('0x42')]=function(_0x36203e,_0x5c0c58){var _0x2c2270={'raw':!![],'where':{'id':_0x36203e[_0xff65('0x43')]['id']}},_0x4556b1={};_0x4556b1[_0xff65('0x31')]=_['keys'](db[_0xff65('0x2d')][_0xff65('0x2e')]);_0x4556b1[_0xff65('0x33')]=_[_0xff65('0x32')](_0x36203e[_0xff65('0x33')]);_0x4556b1[_0xff65('0x34')]=_['intersection'](_0x4556b1[_0xff65('0x31')],_0x4556b1['query']);_0x2c2270[_0xff65('0x37')]=_[_0xff65('0x35')](_0x4556b1[_0xff65('0x31')],qs['fields'](_0x36203e['query'][_0xff65('0x36')]));_0x2c2270[_0xff65('0x37')]=_0x2c2270['attributes']['length']?_0x2c2270[_0xff65('0x37')]:_0x4556b1[_0xff65('0x31')];if(_0x36203e[_0xff65('0x33')][_0xff65('0x44')]){_0x2c2270['include']=[{'all':!![]}];}_0x2c2270=_['merge']({},_0x2c2270,_0x36203e[_0xff65('0x3e')]);return db[_0xff65('0x2d')]['find'](_0x2c2270)[_0xff65('0x24')](handleEntityNotFound(_0x5c0c58,null))[_0xff65('0x24')](respondWithResult(_0x5c0c58,null))[_0xff65('0x41')](handleError(_0x5c0c58,null));};exports['download']=function(_0x4dba21,_0x5ac06c,_0x26202f){return db[_0xff65('0x2d')][_0xff65('0x45')]({'where':{'id':_0x4dba21[_0xff65('0x43')]['id']},'attributes':[_0xff65('0x2a'),_0xff65('0x46'),_0xff65('0x47')],'raw':!![]})[_0xff65('0x24')](handleEntityNotFound(_0x5ac06c,null))[_0xff65('0x24')](function(_0x7e32e){if(_0x7e32e){if(!fs['existsSync'](path[_0xff65('0x48')](config['root'],_0xff65('0x49'),_0x7e32e[_0xff65('0x46')]+'.'+_0x7e32e[_0xff65('0x47')]))){throw new db['Sequelize'][(_0xff65('0x4a'))](_0xff65('0x4b'));}return _0x5ac06c['download'](path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x49'),util[_0xff65('0x4d')](_0xff65('0x4e'),_0x7e32e[_0xff65('0x46')],_0x7e32e['converted_format'])),util[_0xff65('0x4d')](_0xff65('0x4e'),_0x7e32e[_0xff65('0x2a')],_0x7e32e[_0xff65('0x47')]));}return null;})[_0xff65('0x41')](handleError(_0x5ac06c,null));};exports['create']=function(_0x2058b3,_0x2f64f0,_0x4df7b8){var _0x5aee39={'name':path[_0xff65('0x4f')](_0x2058b3[_0xff65('0x50')][_0xff65('0x51')],path[_0xff65('0x52')](_0x2058b3[_0xff65('0x50')][_0xff65('0x51')])),'save_name':path['basename'](_0x2058b3['file'][_0xff65('0x53')],path[_0xff65('0x52')](_0x2058b3[_0xff65('0x50')]['filename'])),'original_format':path[_0xff65('0x52')](_0x2058b3[_0xff65('0x50')][_0xff65('0x51')])[_0xff65('0x54')](0x1),'converted_format':_0xff65('0x55')};var _0x331b2d=path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x56'),_0x2058b3['file'][_0xff65('0x53')]);var _0xebc745=path[_0xff65('0x48')](config['root'],'server/files/sounds/converted',util[_0xff65('0x4d')](_0xff65('0x4e'),path[_0xff65('0x4f')](_0x2058b3['file']['filename'],path['extname'](_0x2058b3[_0xff65('0x50')]['filename'])),_0x5aee39[_0xff65('0x47')]));logger[_0xff65('0x57')](_0xff65('0x58'),_0x331b2d);logger['info'](_0xff65('0x59'),_0xebc745);try{fs[_0xff65('0x5a')](_0x331b2d,parseInt(_0xff65('0x5b'),0x8));var _0x4307e1=sox[_0xff65('0x5c')](_0x331b2d,_0xebc745,{'sampleRate':0x1f40,'format':_0xff65('0x55'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4307e1['on'](_0xff65('0x28'),function(_0x339aed){fs[_0xff65('0x5d')](_0x331b2d);_0x2f64f0[_0xff65('0x19')](0x1f4)[_0xff65('0x5e')](_0x339aed);});_0x4307e1['on'](_0xff65('0x5f'),function(_0x48be2d){_0x5aee39[_0xff65('0x60')]=isNaN(_0x48be2d[_0xff65('0x61')])?null:_0x48be2d[_0xff65('0x61')]*0x3e8;_0x5aee39[_0xff65('0x62')]=isNaN(_0x48be2d[_0xff65('0x63')])?null:_0x48be2d[_0xff65('0x63')];_0x5aee39[_0xff65('0x64')]=isNaN(_0x48be2d[_0xff65('0x65')])?null:_0x48be2d['channelCount'];_0x5aee39[_0xff65('0x66')]=isNaN(_0x48be2d[_0xff65('0x67')])?null:_0x48be2d[_0xff65('0x67')];_0x5aee39[_0xff65('0x68')]=isNaN(_0x48be2d[_0xff65('0x69')])?null:_0x48be2d['sampleRate'];});_0x4307e1['on']('dest',function(_0x30228d){_0x5aee39[_0xff65('0x6a')]=isNaN(_0x30228d[_0xff65('0x61')])?null:_0x30228d[_0xff65('0x61')]*0x3e8;_0x5aee39[_0xff65('0x6b')]=isNaN(_0x30228d['sampleCount'])?null:_0x30228d[_0xff65('0x63')];_0x5aee39[_0xff65('0x6c')]=isNaN(_0x30228d[_0xff65('0x65')])?null:_0x30228d[_0xff65('0x65')];_0x5aee39[_0xff65('0x6d')]=isNaN(_0x30228d[_0xff65('0x67')])?null:_0x30228d[_0xff65('0x67')];_0x5aee39[_0xff65('0x6e')]=isNaN(_0x30228d[_0xff65('0x69')])?null:_0x30228d[_0xff65('0x69')];});_0x4307e1['on'](_0xff65('0x18'),function(){fs[_0xff65('0x5a')](_0xebc745,parseInt(_0xff65('0x5b'),0x8));return db['Sound']['create'](_0x5aee39)[_0xff65('0x24')](function(_0x8447fd){var _0x592d09={'role':_0x2058b3['body'][_0xff65('0x6f')],'userProfileId':_0x2058b3[_0xff65('0x70')][_0xff65('0x71')]};if(!_0x592d09)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x592d09['role']==='user'){var _0x41def5=_0x8447fd[_0xff65('0x72')]({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xff65('0x26'),'userProfileId':_0x592d09[_0xff65('0x71')]},'raw':!![]})[_0xff65('0x24')](function(_0x49ef2){if(_0x49ef2&&_0x49ef2[_0xff65('0x73')]===0x0){return db['UserProfileResource'][_0xff65('0x74')]({'name':_0x41def5[_0xff65('0x2a')],'resourceId':_0x41def5['id'],'type':_0x49ef2[_0xff65('0x2a')],'sectionId':_0x49ef2['id']},{})[_0xff65('0x24')](function(){return _0x8447fd;});}else{return _0x8447fd;}})[_0xff65('0x41')](function(_0x4837bb){logger[_0xff65('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4837bb);throw _0x4837bb;});}return _0x8447fd;})['then'](respondWithResult(_0x2f64f0,null))[_0xff65('0x41')](handleError(_0x2f64f0,null));});_0x4307e1[_0xff65('0x75')]();}catch(_0x411c34){_0x2f64f0[_0xff65('0x19')](0x1f4)[_0xff65('0x5e')](_0x411c34);}};exports[_0xff65('0x76')]=function(_0x1477b7,_0x3f9fbb,_0x2ec0a6){return db[_0xff65('0x2d')]['find']({'where':{'id':_0x1477b7[_0xff65('0x43')]['id']}})['then'](handleEntityNotFound(_0x3f9fbb,null))[_0xff65('0x24')](saveUpdates(_['pick'](_0x1477b7['body'],[_0xff65('0x2a'),_0xff65('0x77')]),null))[_0xff65('0x24')](respondWithResult(_0x3f9fbb,null))[_0xff65('0x41')](handleError(_0x3f9fbb,null));};exports['delete']=function(_0x4c225a,_0x485631,_0x343faf){return db['Sound']['find']({'where':{'id':_0x4c225a[_0xff65('0x43')]['id']}})[_0xff65('0x24')](function(_0x2cd24f){if(_0x2cd24f){return _0x2cd24f[_0xff65('0x25')]();}})['then'](function(_0x21c275){var _0x49a9c8=path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x56'),util['format'](_0xff65('0x4e'),_0x21c275[_0xff65('0x46')],_0x21c275[_0xff65('0x78')]));var _0x2feeef=path[_0xff65('0x48')](config[_0xff65('0x4c')],_0xff65('0x49'),util[_0xff65('0x4d')]('%s.%s',_0x21c275['save_name'],_0x21c275[_0xff65('0x47')]));fs[_0xff65('0x5d')](_0x49a9c8);fs[_0xff65('0x5d')](_0x2feeef);return _0x21c275;})[_0xff65('0x24')](function(_0x3dde93){if(_0x3dde93){return _0x485631['status'](0xcc)[_0xff65('0x18')]();}})[_0xff65('0x24')](handleEntityNotFound(_0x485631,null))[_0xff65('0x41')](handleError(_0x485631,null));};
\ No newline at end of file
index eb5603f..b5fb71c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x562d=['./sound.attributes','define','Sound','tools_sounds','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5eaaba,_0x33161c){var _0x59d4b7=function(_0x8c1a2d){while(--_0x8c1a2d){_0x5eaaba['push'](_0x5eaaba['shift']());}};_0x59d4b7(++_0x33161c);}(_0x562d,0x1e4));var _0xd562=function(_0x263b9f,_0x510f5a){_0x263b9f=_0x263b9f-0x0;var _0x4db4ab=_0x562d[_0x263b9f];return _0x4db4ab;};'use strict';var _=require(_0xd562('0x0'));var util=require(_0xd562('0x1'));var logger=require('../../config/logger')(_0xd562('0x2'));var moment=require('moment');var BPromise=require(_0xd562('0x3'));var rp=require(_0xd562('0x4'));var fs=require('fs');var path=require(_0xd562('0x5'));var rimraf=require(_0xd562('0x6'));var config=require(_0xd562('0x7'));var attributes=require(_0xd562('0x8'));module['exports']=function(_0x4fa1a4,_0x18e277){return _0x4fa1a4[_0xd562('0x9')](_0xd562('0xa'),attributes,{'tableName':_0xd562('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb78f=['../../config/environment','./sound.attributes','exports','define','tools_sounds','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x512ca5,_0x1c1932){var _0x37e058=function(_0x5edf07){while(--_0x5edf07){_0x512ca5['push'](_0x512ca5['shift']());}};_0x37e058(++_0x1c1932);}(_0xb78f,0x1e5));var _0xfb78=function(_0xdc0185,_0x11ad88){_0xdc0185=_0xdc0185-0x0;var _0x4f2567=_0xb78f[_0xdc0185];return _0x4f2567;};'use strict';var _=require(_0xfb78('0x0'));var util=require(_0xfb78('0x1'));var logger=require('../../config/logger')(_0xfb78('0x2'));var moment=require(_0xfb78('0x3'));var BPromise=require(_0xfb78('0x4'));var rp=require(_0xfb78('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfb78('0x6'));var config=require(_0xfb78('0x7'));var attributes=require(_0xfb78('0x8'));module[_0xfb78('0x9')]=function(_0x2385d1,_0x5865d3){return _0x2385d1[_0xfb78('0xa')]('Sound',attributes,{'tableName':_0xfb78('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ac30fb1..51af57b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0dd=['Sound,\x20%s,\x20%s,\x20%s','stringify','code','error','Sound,\x20%s,\x20%s','message','catch','ShowSound','find','options','raw','where','attributes','include','map','model','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent'];(function(_0x1ef720,_0x228c82){var _0x17add3=function(_0x551e0e){while(--_0x551e0e){_0x1ef720['push'](_0x1ef720['shift']());}};_0x17add3(++_0x228c82);}(_0xc0dd,0x1be));var _0xdc0d=function(_0x156eb3,_0x5026e3){_0x156eb3=_0x156eb3-0x0;var _0x4d5276=_0xc0dd[_0x156eb3];return _0x4d5276;};'use strict';var _=require(_0xdc0d('0x0'));var util=require('util');var moment=require(_0xdc0d('0x1'));var BPromise=require(_0xdc0d('0x2'));var rs=require(_0xdc0d('0x3'));var fs=require('fs');var Redis=require(_0xdc0d('0x4'));var db=require(_0xdc0d('0x5'))['db'];var utils=require(_0xdc0d('0x6'));var logger=require(_0xdc0d('0x7'))(_0xdc0d('0x8'));var config=require(_0xdc0d('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xdc0d('0xa')][_0xdc0d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43e945,_0x544751,_0x3d44c7){return new BPromise(function(_0x2f277d,_0xb34824){return client[_0xdc0d('0xc')](_0x43e945,_0x3d44c7)[_0xdc0d('0xd')](function(_0x441cc8){logger[_0xdc0d('0xe')]('Sound,\x20%s,\x20%s',_0x544751,_0xdc0d('0xf'));logger['debug'](_0xdc0d('0x10'),_0x544751,'request\x20sent',JSON[_0xdc0d('0x11')](_0x441cc8));if(_0x441cc8['error']){if(_0x441cc8['error'][_0xdc0d('0x12')]===0x1f4){logger[_0xdc0d('0x13')](_0xdc0d('0x14'),_0x544751,_0x441cc8[_0xdc0d('0x13')][_0xdc0d('0x15')]);return _0xb34824(_0x441cc8[_0xdc0d('0x13')]['message']);}logger['error'](_0xdc0d('0x14'),_0x544751,_0x441cc8[_0xdc0d('0x13')]['message']);return _0x2f277d(_0x441cc8[_0xdc0d('0x13')][_0xdc0d('0x15')]);}else{logger[_0xdc0d('0xe')](_0xdc0d('0x14'),_0x544751,_0xdc0d('0xf'));_0x2f277d(_0x441cc8['result']['message']);}})[_0xdc0d('0x16')](function(_0x461b7e){logger[_0xdc0d('0x13')]('Sound,\x20%s,\x20%s',_0x544751,_0x461b7e);_0xb34824(_0x461b7e);});});}exports[_0xdc0d('0x17')]=function(_0x54b405){var _0x25e0f3=this;return new Promise(function(_0x8913af,_0x504a57){return db['Sound'][_0xdc0d('0x18')]({'raw':_0x54b405[_0xdc0d('0x19')]?_0x54b405[_0xdc0d('0x19')][_0xdc0d('0x1a')]===undefined?!![]:![]:!![],'where':_0x54b405[_0xdc0d('0x19')]?_0x54b405[_0xdc0d('0x19')][_0xdc0d('0x1b')]||null:null,'attributes':_0x54b405['options']?_0x54b405[_0xdc0d('0x19')][_0xdc0d('0x1c')]||null:null,'include':_0x54b405[_0xdc0d('0x19')]?_0x54b405[_0xdc0d('0x19')][_0xdc0d('0x1d')]?_['map'](_0x54b405[_0xdc0d('0x19')][_0xdc0d('0x1d')],function(_0x5d1d20){return{'model':db[_0x5d1d20['model']],'as':_0x5d1d20['as'],'attributes':_0x5d1d20[_0xdc0d('0x1c')],'include':_0x5d1d20[_0xdc0d('0x1d')]?_[_0xdc0d('0x1e')](_0x5d1d20[_0xdc0d('0x1d')],function(_0x2267fd){return{'model':db[_0x2267fd[_0xdc0d('0x1f')]],'as':_0x2267fd['as'],'attributes':_0x2267fd[_0xdc0d('0x1c')],'include':_0x2267fd[_0xdc0d('0x1d')]?_[_0xdc0d('0x1e')](_0x2267fd[_0xdc0d('0x1d')],function(_0x2f2b5d){return{'model':db[_0x2f2b5d[_0xdc0d('0x1f')]],'as':_0x2f2b5d['as'],'attributes':_0x2f2b5d[_0xdc0d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xdc0d('0xd')](function(_0x510118){logger[_0xdc0d('0xe')]('ShowSound',_0x54b405);logger[_0xdc0d('0x20')](_0xdc0d('0x17'),_0x54b405,JSON[_0xdc0d('0x11')](_0x510118));_0x8913af(_0x510118);})['catch'](function(_0x3b0a5c){logger[_0xdc0d('0x13')]('ShowSound',_0x3b0a5c[_0xdc0d('0x15')],_0x54b405);_0x504a57(_0x25e0f3[_0xdc0d('0x13')](0x1f4,_0x3b0a5c[_0xdc0d('0x15')]));});});};
\ No newline at end of file
+var _0xbd78=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSound','find','options','where','attributes','include','model','map','lodash','util','moment','bluebird','randomstring'];(function(_0x5bfddb,_0x2ec99e){var _0x477d7f=function(_0x361a39){while(--_0x361a39){_0x5bfddb['push'](_0x5bfddb['shift']());}};_0x477d7f(++_0x2ec99e);}(_0xbd78,0x103));var _0x8bd7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xbd78[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x8bd7('0x0'));var util=require(_0x8bd7('0x1'));var moment=require(_0x8bd7('0x2'));var BPromise=require(_0x8bd7('0x3'));var rs=require(_0x8bd7('0x4'));var fs=require('fs');var Redis=require(_0x8bd7('0x5'));var db=require(_0x8bd7('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8bd7('0x7'))(_0x8bd7('0x8'));var config=require(_0x8bd7('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x8bd7('0xa')][_0x8bd7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27b0a0,_0x5b40bb,_0x3e49d9){return new BPromise(function(_0xee4628,_0x762b5d){return client[_0x8bd7('0xc')](_0x27b0a0,_0x3e49d9)[_0x8bd7('0xd')](function(_0x2ff102){logger[_0x8bd7('0xe')](_0x8bd7('0xf'),_0x5b40bb,_0x8bd7('0x10'));logger[_0x8bd7('0x11')](_0x8bd7('0x12'),_0x5b40bb,_0x8bd7('0x10'),JSON[_0x8bd7('0x13')](_0x2ff102));if(_0x2ff102[_0x8bd7('0x14')]){if(_0x2ff102['error'][_0x8bd7('0x15')]===0x1f4){logger[_0x8bd7('0x14')]('Sound,\x20%s,\x20%s',_0x5b40bb,_0x2ff102[_0x8bd7('0x14')]['message']);return _0x762b5d(_0x2ff102['error'][_0x8bd7('0x16')]);}logger[_0x8bd7('0x14')](_0x8bd7('0xf'),_0x5b40bb,_0x2ff102[_0x8bd7('0x14')][_0x8bd7('0x16')]);return _0xee4628(_0x2ff102[_0x8bd7('0x14')][_0x8bd7('0x16')]);}else{logger[_0x8bd7('0xe')]('Sound,\x20%s,\x20%s',_0x5b40bb,'request\x20sent');_0xee4628(_0x2ff102[_0x8bd7('0x17')][_0x8bd7('0x16')]);}})[_0x8bd7('0x18')](function(_0x273bd5){logger[_0x8bd7('0x14')]('Sound,\x20%s,\x20%s',_0x5b40bb,_0x273bd5);_0x762b5d(_0x273bd5);});});}exports[_0x8bd7('0x19')]=function(_0x5a2237){var _0x1a842e=this;return new Promise(function(_0x249798,_0x361561){return db['Sound'][_0x8bd7('0x1a')]({'raw':_0x5a2237['options']?_0x5a2237[_0x8bd7('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5a2237['options']?_0x5a2237[_0x8bd7('0x1b')][_0x8bd7('0x1c')]||null:null,'attributes':_0x5a2237['options']?_0x5a2237[_0x8bd7('0x1b')][_0x8bd7('0x1d')]||null:null,'include':_0x5a2237[_0x8bd7('0x1b')]?_0x5a2237['options'][_0x8bd7('0x1e')]?_['map'](_0x5a2237[_0x8bd7('0x1b')][_0x8bd7('0x1e')],function(_0xbbd287){return{'model':db[_0xbbd287[_0x8bd7('0x1f')]],'as':_0xbbd287['as'],'attributes':_0xbbd287[_0x8bd7('0x1d')],'include':_0xbbd287[_0x8bd7('0x1e')]?_[_0x8bd7('0x20')](_0xbbd287[_0x8bd7('0x1e')],function(_0x3b48f0){return{'model':db[_0x3b48f0['model']],'as':_0x3b48f0['as'],'attributes':_0x3b48f0[_0x8bd7('0x1d')],'include':_0x3b48f0[_0x8bd7('0x1e')]?_[_0x8bd7('0x20')](_0x3b48f0[_0x8bd7('0x1e')],function(_0x391a9f){return{'model':db[_0x391a9f[_0x8bd7('0x1f')]],'as':_0x391a9f['as'],'attributes':_0x391a9f[_0x8bd7('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x167803){logger[_0x8bd7('0xe')](_0x8bd7('0x19'),_0x5a2237);logger['debug'](_0x8bd7('0x19'),_0x5a2237,JSON[_0x8bd7('0x13')](_0x167803));_0x249798(_0x167803);})[_0x8bd7('0x18')](function(_0x44c543){logger['error'](_0x8bd7('0x19'),_0x44c543[_0x8bd7('0x16')],_0x5a2237);_0x361561(_0x1a842e[_0x8bd7('0x14')](0x1f4,_0x44c543['message']));});});};
\ No newline at end of file
index 86ba355..dec3e92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','util','path'];(function(_0x2ed5da,_0x2ba17f){var _0x17dc5c=function(_0x2b96c9){while(--_0x2b96c9){_0x2ed5da['push'](_0x2ed5da['shift']());}};_0x17dc5c(++_0x2ba17f);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'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['show']);router[_0x0baf('0xd')]('/',auth['isAuthenticated'](),controller[_0x0baf('0xe')]);router[_0x0baf('0xf')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x10')]);router[_0x0baf('0x11')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);module[_0x0baf('0x13')]=router;
\ No newline at end of file
+var _0x2032=['exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x37bef1,_0xecf330){var _0x342427=function(_0xa1884c){while(--_0xa1884c){_0x37bef1['push'](_0x37bef1['shift']());}};_0x342427(++_0xecf330);}(_0x2032,0xd9));var _0x2203=function(_0x1fad08,_0xb6678e){_0x1fad08=_0x1fad08-0x0;var _0x2d2a71=_0x2032[_0x1fad08];return _0x2d2a71;};'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('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2203('0xe')]('/:id',auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router[_0x2203('0x10')]('/:id',auth[_0x2203('0x9')](),controller['destroy']);module[_0x2203('0x11')]=router;
\ No newline at end of file
index 90906c3..2abf7d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d6=['ENUM','out','sequelize','exports','STRING','TEXT','medium'];(function(_0x524603,_0x1b500b){var _0x408512=function(_0x6793f8){while(--_0x6793f8){_0x524603['push'](_0x524603['shift']());}};_0x408512(++_0x1b500b);}(_0x94d6,0x13d));var _0x694d=function(_0x234c18,_0xb65b5b){_0x234c18=_0x234c18-0x0;var _0x58c0b8=_0x94d6[_0x234c18];return _0x58c0b8;};'use strict';var Sequelize=require(_0x694d('0x0'));module[_0x694d('0x1')]={'uniqueid':{'type':Sequelize[_0x694d('0x2')]},'body':{'type':Sequelize[_0x694d('0x3')](_0x694d('0x4')),'allowNull':![]},'direction':{'type':Sequelize[_0x694d('0x5')]('in',_0x694d('0x6')),'defaultValue':_0x694d('0x6'),'allowNull':![]},'providerName':{'type':Sequelize[_0x694d('0x2')]},'providerResponse':{'type':Sequelize[_0x694d('0x3')]}};
\ No newline at end of file
+var _0xb721=['exports','STRING','TEXT','medium','ENUM'];(function(_0x30ea11,_0x5df6d){var _0x3a390a=function(_0x23f385){while(--_0x23f385){_0x30ea11['push'](_0x30ea11['shift']());}};_0x3a390a(++_0x5df6d);}(_0xb721,0x82));var _0x1b72=function(_0x5f2098,_0x47308b){_0x5f2098=_0x5f2098-0x0;var _0x18af32=_0xb721[_0x5f2098];return _0x18af32;};'use strict';var Sequelize=require('sequelize');module[_0x1b72('0x0')]={'uniqueid':{'type':Sequelize[_0x1b72('0x1')]},'body':{'type':Sequelize[_0x1b72('0x2')](_0x1b72('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0x1b72('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize[_0x1b72('0x1')]},'providerResponse':{'type':Sequelize[_0x1b72('0x2')]}};
\ No newline at end of file
index 1135af4..197596c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c10=['nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','params','includeAll','find','create','body','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','map','SquareMessage','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length'];(function(_0x1cd096,_0x19f7d9){var _0x12d1a4=function(_0x16ea18){while(--_0x16ea18){_0x1cd096['push'](_0x1cd096['shift']());}};_0x12d1a4(++_0x19f7d9);}(_0x7c10,0x142));var _0x07c1=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x7c10[_0x4b055c];return _0x4b62bb;};'use strict';var emlformat=require(_0x07c1('0x0'));var rimraf=require(_0x07c1('0x1'));var zipdir=require(_0x07c1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x07c1('0x3'));var moment=require(_0x07c1('0x4'));var BPromise=require(_0x07c1('0x5'));var Mustache=require(_0x07c1('0x6'));var util=require('util');var path=require(_0x07c1('0x7'));var sox=require(_0x07c1('0x8'));var csv=require('to-csv');var ejs=require(_0x07c1('0x9'));var fs=require('fs');var fs_extra=require(_0x07c1('0xa'));var _=require(_0x07c1('0xb'));var squel=require(_0x07c1('0xc'));var crypto=require(_0x07c1('0xd'));var jsforce=require(_0x07c1('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x07c1('0xf'));var Papa=require('papaparse');var Redis=require(_0x07c1('0x10'));var authService=require(_0x07c1('0x11'));var qs=require(_0x07c1('0x12'));var as=require(_0x07c1('0x13'));var hardwareService=require(_0x07c1('0x14'));var logger=require(_0x07c1('0x15'))(_0x07c1('0x16'));var utils=require(_0x07c1('0x17'));var config=require(_0x07c1('0x18'));var licenseUtil=require(_0x07c1('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13f434,_0x5489e0){_0x5489e0=_0x5489e0||0xcc;return function(_0x1d0d32){if(_0x1d0d32){return _0x13f434[_0x07c1('0x1a')](_0x5489e0);}return _0x13f434[_0x07c1('0x1b')](_0x5489e0)[_0x07c1('0x1c')]();};}function respondWithResult(_0x320137,_0xbb5ee8){_0xbb5ee8=_0xbb5ee8||0xc8;return function(_0x217b1c){if(_0x217b1c){return _0x320137['status'](_0xbb5ee8)[_0x07c1('0x1d')](_0x217b1c);}};}function respondWithFilteredResult(_0x531966,_0x3d368c){return function(_0x10b3e5){if(_0x10b3e5){var _0x4715c8=typeof _0x3d368c[_0x07c1('0x1e')]===_0x07c1('0x1f')&&typeof _0x3d368c[_0x07c1('0x20')]===_0x07c1('0x1f');var _0x5b086b=_0x10b3e5[_0x07c1('0x21')];var _0x375112=_0x4715c8?0x0:_0x3d368c['offset'];var _0x4ec65f=_0x4715c8?_0x10b3e5[_0x07c1('0x21')]:_0x3d368c[_0x07c1('0x1e')]+_0x3d368c[_0x07c1('0x20')];var _0x4aa5fa;if(_0x4ec65f>=_0x5b086b){_0x4ec65f=_0x5b086b;_0x4aa5fa=0xc8;}else{_0x4aa5fa=0xce;}_0x531966['status'](_0x4aa5fa);return _0x531966[_0x07c1('0x22')](_0x07c1('0x23'),_0x375112+'-'+_0x4ec65f+'/'+_0x5b086b)[_0x07c1('0x1d')](_0x10b3e5);}return null;};}function patchUpdates(_0x3a0ec0){return function(_0x117f84){try{jsonpatch[_0x07c1('0x24')](_0x117f84,_0x3a0ec0,!![]);}catch(_0x18fc20){return BPromise[_0x07c1('0x25')](_0x18fc20);}return _0x117f84[_0x07c1('0x26')]();};}function saveUpdates(_0xe89ae8,_0x2d5ebb){return function(_0x3b298d){if(_0x3b298d){return _0x3b298d['update'](_0xe89ae8)[_0x07c1('0x27')](function(_0x1cf036){return _0x1cf036;});}return null;};}function removeEntity(_0x155f79,_0x59df37){return function(_0x37c8e6){if(_0x37c8e6){return _0x37c8e6[_0x07c1('0x28')]()[_0x07c1('0x27')](function(){_0x155f79[_0x07c1('0x1b')](0xcc)[_0x07c1('0x1c')]();});}};}function handleEntityNotFound(_0x128250,_0x2481c7){return function(_0x3f2451){if(!_0x3f2451){_0x128250[_0x07c1('0x1a')](0x194);}return _0x3f2451;};}function handleError(_0x2a6caf,_0x55334f){_0x55334f=_0x55334f||0x1f4;return function(_0x4bd70){logger[_0x07c1('0x29')](_0x4bd70['stack']);if(_0x4bd70[_0x07c1('0x2a')]){delete _0x4bd70[_0x07c1('0x2a')];}_0x2a6caf[_0x07c1('0x1b')](_0x55334f)[_0x07c1('0x2b')](_0x4bd70);};}exports[_0x07c1('0x2c')]=function(_0x12ac19,_0x392675){var _0x24596f={},_0x539af3={},_0x6ee00c={'count':0x0,'rows':[]};var _0x5e355f=_[_0x07c1('0x2d')](db[_0x07c1('0x2e')]['rawAttributes'],function(_0x268ff8){return{'name':_0x268ff8[_0x07c1('0x2f')],'type':_0x268ff8[_0x07c1('0x30')][_0x07c1('0x31')]};});_0x539af3[_0x07c1('0x32')]=_[_0x07c1('0x2d')](_0x5e355f,_0x07c1('0x2a'));_0x539af3[_0x07c1('0x33')]=_[_0x07c1('0x34')](_0x12ac19[_0x07c1('0x33')]);_0x539af3[_0x07c1('0x35')]=_[_0x07c1('0x36')](_0x539af3['model'],_0x539af3[_0x07c1('0x33')]);_0x24596f['attributes']=_[_0x07c1('0x36')](_0x539af3[_0x07c1('0x32')],qs[_0x07c1('0x37')](_0x12ac19[_0x07c1('0x33')]['fields']));_0x24596f['attributes']=_0x24596f[_0x07c1('0x38')][_0x07c1('0x39')]?_0x24596f[_0x07c1('0x38')]:_0x539af3[_0x07c1('0x32')];if(!_0x12ac19[_0x07c1('0x33')]['hasOwnProperty'](_0x07c1('0x3a'))){_0x24596f[_0x07c1('0x20')]=qs[_0x07c1('0x20')](_0x12ac19['query'][_0x07c1('0x20')]);_0x24596f[_0x07c1('0x1e')]=qs[_0x07c1('0x1e')](_0x12ac19[_0x07c1('0x33')][_0x07c1('0x1e')]);}_0x24596f[_0x07c1('0x3b')]=qs[_0x07c1('0x3c')](_0x12ac19['query']['sort']);_0x24596f[_0x07c1('0x3d')]=qs['filters'](_[_0x07c1('0x3e')](_0x12ac19['query'],_0x539af3[_0x07c1('0x35')]),_0x5e355f);if(_0x12ac19[_0x07c1('0x33')][_0x07c1('0x3f')]){_0x24596f[_0x07c1('0x3d')]=_[_0x07c1('0x40')](_0x24596f['where'],{'$or':_[_0x07c1('0x2d')](_0x5e355f,function(_0x3ec8aa){if(_0x3ec8aa[_0x07c1('0x30')]!=='VIRTUAL'){var _0x5c51d1={};_0x5c51d1[_0x3ec8aa[_0x07c1('0x2a')]]={'$like':'%'+_0x12ac19[_0x07c1('0x33')][_0x07c1('0x3f')]+'%'};return _0x5c51d1;}})});}_0x24596f=_[_0x07c1('0x40')]({},_0x24596f,_0x12ac19[_0x07c1('0x41')]);var _0x37922d={'where':_0x24596f[_0x07c1('0x3d')]};return db[_0x07c1('0x2e')][_0x07c1('0x21')](_0x37922d)[_0x07c1('0x27')](function(_0x3624f6){_0x6ee00c['count']=_0x3624f6;if(_0x12ac19[_0x07c1('0x33')]['includeAll']){_0x24596f[_0x07c1('0x42')]=[{'all':!![]}];}return db[_0x07c1('0x2e')][_0x07c1('0x43')](_0x24596f);})[_0x07c1('0x27')](function(_0x495cea){_0x6ee00c[_0x07c1('0x44')]=_0x495cea;return _0x6ee00c;})[_0x07c1('0x27')](respondWithFilteredResult(_0x392675,_0x24596f))[_0x07c1('0x45')](handleError(_0x392675,null));};exports['show']=function(_0x3df38d,_0x50deb4){var _0x1c7470={'raw':!![],'where':{'id':_0x3df38d[_0x07c1('0x46')]['id']}},_0x132b38={};_0x132b38[_0x07c1('0x32')]=_['keys'](db[_0x07c1('0x2e')]['rawAttributes']);_0x132b38[_0x07c1('0x33')]=_['keys'](_0x3df38d['query']);_0x132b38[_0x07c1('0x35')]=_[_0x07c1('0x36')](_0x132b38['model'],_0x132b38[_0x07c1('0x33')]);_0x1c7470[_0x07c1('0x38')]=_[_0x07c1('0x36')](_0x132b38['model'],qs[_0x07c1('0x37')](_0x3df38d[_0x07c1('0x33')][_0x07c1('0x37')]));_0x1c7470[_0x07c1('0x38')]=_0x1c7470[_0x07c1('0x38')]['length']?_0x1c7470[_0x07c1('0x38')]:_0x132b38['model'];if(_0x3df38d[_0x07c1('0x33')][_0x07c1('0x47')]){_0x1c7470[_0x07c1('0x42')]=[{'all':!![]}];}_0x1c7470=_[_0x07c1('0x40')]({},_0x1c7470,_0x3df38d[_0x07c1('0x41')]);return db[_0x07c1('0x2e')][_0x07c1('0x48')](_0x1c7470)[_0x07c1('0x27')](handleEntityNotFound(_0x50deb4,null))[_0x07c1('0x27')](respondWithResult(_0x50deb4,null))[_0x07c1('0x45')](handleError(_0x50deb4,null));};exports[_0x07c1('0x49')]=function(_0x1beab4,_0x29e342){return db[_0x07c1('0x2e')][_0x07c1('0x49')](_0x1beab4[_0x07c1('0x4a')],{})['then'](respondWithResult(_0x29e342,0xc9))['catch'](handleError(_0x29e342,null));};exports[_0x07c1('0x4b')]=function(_0x23a998,_0x5a761b){if(_0x23a998[_0x07c1('0x4a')]['id']){delete _0x23a998[_0x07c1('0x4a')]['id'];}return db[_0x07c1('0x2e')]['find']({'where':{'id':_0x23a998[_0x07c1('0x46')]['id']}})[_0x07c1('0x27')](handleEntityNotFound(_0x5a761b,null))[_0x07c1('0x27')](saveUpdates(_0x23a998[_0x07c1('0x4a')],null))[_0x07c1('0x27')](respondWithResult(_0x5a761b,null))[_0x07c1('0x45')](handleError(_0x5a761b,null));};exports[_0x07c1('0x28')]=function(_0x29adb6,_0x460281){return db[_0x07c1('0x2e')]['find']({'where':{'id':_0x29adb6[_0x07c1('0x46')]['id']}})[_0x07c1('0x27')](handleEntityNotFound(_0x460281,null))['then'](removeEntity(_0x460281,null))[_0x07c1('0x45')](handleError(_0x460281,null));};
\ No newline at end of file
+var _0x9b05=['findAll','rows','catch','show','find','create','body','update','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','reject','save','then','destroy','end','error','stack','name','send','index','SquareMessage','rawAttributes','fieldName','type','key','keys','query','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','map','VIRTUAL','filter','merge','options','include'];(function(_0x402731,_0x43c115){var _0x111736=function(_0x5a7044){while(--_0x5a7044){_0x402731['push'](_0x402731['shift']());}};_0x111736(++_0x43c115);}(_0x9b05,0x1cb));var _0x59b0=function(_0x2ac512,_0x18d0fc){_0x2ac512=_0x2ac512-0x0;var _0x41a20e=_0x9b05[_0x2ac512];return _0x41a20e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x59b0('0x0'));var zipdir=require(_0x59b0('0x1'));var jsonpatch=require(_0x59b0('0x2'));var rp=require(_0x59b0('0x3'));var moment=require(_0x59b0('0x4'));var BPromise=require(_0x59b0('0x5'));var Mustache=require(_0x59b0('0x6'));var util=require('util');var path=require('path');var sox=require(_0x59b0('0x7'));var csv=require(_0x59b0('0x8'));var ejs=require(_0x59b0('0x9'));var fs=require('fs');var fs_extra=require(_0x59b0('0xa'));var _=require('lodash');var squel=require(_0x59b0('0xb'));var crypto=require(_0x59b0('0xc'));var jsforce=require(_0x59b0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x59b0('0x8'));var querystring=require(_0x59b0('0xe'));var Papa=require(_0x59b0('0xf'));var Redis=require('ioredis');var authService=require(_0x59b0('0x10'));var qs=require(_0x59b0('0x11'));var as=require(_0x59b0('0x12'));var hardwareService=require(_0x59b0('0x13'));var logger=require('../../config/logger')(_0x59b0('0x14'));var utils=require(_0x59b0('0x15'));var config=require(_0x59b0('0x16'));var licenseUtil=require(_0x59b0('0x17'));var db=require(_0x59b0('0x18'))['db'];function respondWithStatusCode(_0x5bb966,_0x59c3cb){_0x59c3cb=_0x59c3cb||0xcc;return function(_0x1ddfba){if(_0x1ddfba){return _0x5bb966['sendStatus'](_0x59c3cb);}return _0x5bb966[_0x59b0('0x19')](_0x59c3cb)['end']();};}function respondWithResult(_0x43f01e,_0x15c599){_0x15c599=_0x15c599||0xc8;return function(_0x4e3b7c){if(_0x4e3b7c){return _0x43f01e[_0x59b0('0x19')](_0x15c599)[_0x59b0('0x1a')](_0x4e3b7c);}};}function respondWithFilteredResult(_0x4910ef,_0x32cc9c){return function(_0xb53e4e){if(_0xb53e4e){var _0x27cda3=typeof _0x32cc9c[_0x59b0('0x1b')]===_0x59b0('0x1c')&&typeof _0x32cc9c[_0x59b0('0x1d')]==='undefined';var _0x43ba72=_0xb53e4e[_0x59b0('0x1e')];var _0x59b60f=_0x27cda3?0x0:_0x32cc9c[_0x59b0('0x1b')];var _0x143908=_0x27cda3?_0xb53e4e[_0x59b0('0x1e')]:_0x32cc9c[_0x59b0('0x1b')]+_0x32cc9c['limit'];var _0x38829f;if(_0x143908>=_0x43ba72){_0x143908=_0x43ba72;_0x38829f=0xc8;}else{_0x38829f=0xce;}_0x4910ef['status'](_0x38829f);return _0x4910ef['set'](_0x59b0('0x1f'),_0x59b60f+'-'+_0x143908+'/'+_0x43ba72)[_0x59b0('0x1a')](_0xb53e4e);}return null;};}function patchUpdates(_0xeca5d4){return function(_0xd890ca){try{jsonpatch['apply'](_0xd890ca,_0xeca5d4,!![]);}catch(_0x4f12a7){return BPromise[_0x59b0('0x20')](_0x4f12a7);}return _0xd890ca[_0x59b0('0x21')]();};}function saveUpdates(_0x5d75ba,_0x5d5768){return function(_0x225383){if(_0x225383){return _0x225383['update'](_0x5d75ba)[_0x59b0('0x22')](function(_0x5a67c1){return _0x5a67c1;});}return null;};}function removeEntity(_0x451271,_0x356f89){return function(_0x1ec11d){if(_0x1ec11d){return _0x1ec11d[_0x59b0('0x23')]()[_0x59b0('0x22')](function(){_0x451271[_0x59b0('0x19')](0xcc)[_0x59b0('0x24')]();});}};}function handleEntityNotFound(_0xf1f068,_0x4a7159){return function(_0x1c7701){if(!_0x1c7701){_0xf1f068['sendStatus'](0x194);}return _0x1c7701;};}function handleError(_0x2c66c1,_0x3a315b){_0x3a315b=_0x3a315b||0x1f4;return function(_0x41da30){logger[_0x59b0('0x25')](_0x41da30[_0x59b0('0x26')]);if(_0x41da30[_0x59b0('0x27')]){delete _0x41da30[_0x59b0('0x27')];}_0x2c66c1[_0x59b0('0x19')](_0x3a315b)[_0x59b0('0x28')](_0x41da30);};}exports[_0x59b0('0x29')]=function(_0x242adf,_0x427bb7){var _0x19ad8f={},_0x355eb0={},_0x234743={'count':0x0,'rows':[]};var _0x4af3d5=_['map'](db[_0x59b0('0x2a')][_0x59b0('0x2b')],function(_0x3b30c3){return{'name':_0x3b30c3[_0x59b0('0x2c')],'type':_0x3b30c3[_0x59b0('0x2d')][_0x59b0('0x2e')]};});_0x355eb0['model']=_['map'](_0x4af3d5,'name');_0x355eb0['query']=_[_0x59b0('0x2f')](_0x242adf[_0x59b0('0x30')]);_0x355eb0['filters']=_[_0x59b0('0x31')](_0x355eb0['model'],_0x355eb0['query']);_0x19ad8f['attributes']=_[_0x59b0('0x31')](_0x355eb0[_0x59b0('0x32')],qs['fields'](_0x242adf[_0x59b0('0x30')][_0x59b0('0x33')]));_0x19ad8f[_0x59b0('0x34')]=_0x19ad8f[_0x59b0('0x34')][_0x59b0('0x35')]?_0x19ad8f[_0x59b0('0x34')]:_0x355eb0[_0x59b0('0x32')];if(!_0x242adf[_0x59b0('0x30')][_0x59b0('0x36')]('nolimit')){_0x19ad8f['limit']=qs[_0x59b0('0x1d')](_0x242adf['query'][_0x59b0('0x1d')]);_0x19ad8f['offset']=qs[_0x59b0('0x1b')](_0x242adf['query']['offset']);}_0x19ad8f[_0x59b0('0x37')]=qs['sort'](_0x242adf[_0x59b0('0x30')][_0x59b0('0x38')]);_0x19ad8f[_0x59b0('0x39')]=qs[_0x59b0('0x3a')](_[_0x59b0('0x3b')](_0x242adf['query'],_0x355eb0['filters']),_0x4af3d5);if(_0x242adf[_0x59b0('0x30')]['filter']){_0x19ad8f[_0x59b0('0x39')]=_['merge'](_0x19ad8f[_0x59b0('0x39')],{'$or':_[_0x59b0('0x3c')](_0x4af3d5,function(_0x556c25){if(_0x556c25[_0x59b0('0x2d')]!==_0x59b0('0x3d')){var _0x360eb6={};_0x360eb6[_0x556c25[_0x59b0('0x27')]]={'$like':'%'+_0x242adf[_0x59b0('0x30')][_0x59b0('0x3e')]+'%'};return _0x360eb6;}})});}_0x19ad8f=_[_0x59b0('0x3f')]({},_0x19ad8f,_0x242adf[_0x59b0('0x40')]);var _0x30274e={'where':_0x19ad8f['where']};return db[_0x59b0('0x2a')][_0x59b0('0x1e')](_0x30274e)['then'](function(_0x56ca8e){_0x234743[_0x59b0('0x1e')]=_0x56ca8e;if(_0x242adf[_0x59b0('0x30')]['includeAll']){_0x19ad8f[_0x59b0('0x41')]=[{'all':!![]}];}return db[_0x59b0('0x2a')][_0x59b0('0x42')](_0x19ad8f);})[_0x59b0('0x22')](function(_0x14e90c){_0x234743[_0x59b0('0x43')]=_0x14e90c;return _0x234743;})['then'](respondWithFilteredResult(_0x427bb7,_0x19ad8f))[_0x59b0('0x44')](handleError(_0x427bb7,null));};exports[_0x59b0('0x45')]=function(_0x4a37d3,_0x45b6a5){var _0x11cb18={'raw':!![],'where':{'id':_0x4a37d3['params']['id']}},_0x3a722f={};_0x3a722f['model']=_[_0x59b0('0x2f')](db[_0x59b0('0x2a')][_0x59b0('0x2b')]);_0x3a722f[_0x59b0('0x30')]=_[_0x59b0('0x2f')](_0x4a37d3['query']);_0x3a722f[_0x59b0('0x3a')]=_[_0x59b0('0x31')](_0x3a722f['model'],_0x3a722f[_0x59b0('0x30')]);_0x11cb18['attributes']=_[_0x59b0('0x31')](_0x3a722f[_0x59b0('0x32')],qs['fields'](_0x4a37d3[_0x59b0('0x30')]['fields']));_0x11cb18['attributes']=_0x11cb18['attributes']['length']?_0x11cb18['attributes']:_0x3a722f[_0x59b0('0x32')];if(_0x4a37d3['query']['includeAll']){_0x11cb18[_0x59b0('0x41')]=[{'all':!![]}];}_0x11cb18=_[_0x59b0('0x3f')]({},_0x11cb18,_0x4a37d3['options']);return db[_0x59b0('0x2a')][_0x59b0('0x46')](_0x11cb18)[_0x59b0('0x22')](handleEntityNotFound(_0x45b6a5,null))[_0x59b0('0x22')](respondWithResult(_0x45b6a5,null))[_0x59b0('0x44')](handleError(_0x45b6a5,null));};exports['create']=function(_0x5f2f4c,_0x3b674b){return db[_0x59b0('0x2a')][_0x59b0('0x47')](_0x5f2f4c[_0x59b0('0x48')],{})['then'](respondWithResult(_0x3b674b,0xc9))['catch'](handleError(_0x3b674b,null));};exports[_0x59b0('0x49')]=function(_0x247c1a,_0x2e2782){if(_0x247c1a[_0x59b0('0x48')]['id']){delete _0x247c1a[_0x59b0('0x48')]['id'];}return db[_0x59b0('0x2a')][_0x59b0('0x46')]({'where':{'id':_0x247c1a['params']['id']}})[_0x59b0('0x22')](handleEntityNotFound(_0x2e2782,null))[_0x59b0('0x22')](saveUpdates(_0x247c1a[_0x59b0('0x48')],null))[_0x59b0('0x22')](respondWithResult(_0x2e2782,null))['catch'](handleError(_0x2e2782,null));};exports[_0x59b0('0x23')]=function(_0x2817d8,_0x4ff840){return db[_0x59b0('0x2a')][_0x59b0('0x46')]({'where':{'id':_0x2817d8[_0x59b0('0x4a')]['id']}})[_0x59b0('0x22')](handleEntityNotFound(_0x4ff840,null))[_0x59b0('0x22')](removeEntity(_0x4ff840,null))['catch'](handleError(_0x4ff840,null));};
\ No newline at end of file
index 9b6843d..0d2b59d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfacc=['./squareMessage.attributes','exports','SquareMessage','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0xfacc,0x8a));var _0xcfac=function(_0x18e84d,_0x400654){_0x18e84d=_0x18e84d-0x0;var _0x154f7c=_0xfacc[_0x18e84d];return _0x154f7c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xcfac('0x0'))(_0xcfac('0x1'));var moment=require('moment');var BPromise=require(_0xcfac('0x2'));var rp=require(_0xcfac('0x3'));var fs=require('fs');var path=require(_0xcfac('0x4'));var rimraf=require(_0xcfac('0x5'));var config=require('../../config/environment');var attributes=require(_0xcfac('0x6'));module[_0xcfac('0x7')]=function(_0x21ff75,_0x5dd630){return _0x21ff75['define'](_0xcfac('0x8'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7bef=['api','moment','bluebird','path','rimraf','../../config/environment','exports','square_messages','lodash','util'];(function(_0x5eed0c,_0x362c21){var _0x39c1fc=function(_0x41540d){while(--_0x41540d){_0x5eed0c['push'](_0x5eed0c['shift']());}};_0x39c1fc(++_0x362c21);}(_0x7bef,0xe4));var _0xf7be=function(_0x2fb866,_0x59bc0c){_0x2fb866=_0x2fb866-0x0;var _0x5d310f=_0x7bef[_0x2fb866];return _0x5d310f;};'use strict';var _=require(_0xf7be('0x0'));var util=require(_0xf7be('0x1'));var logger=require('../../config/logger')(_0xf7be('0x2'));var moment=require(_0xf7be('0x3'));var BPromise=require(_0xf7be('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf7be('0x5'));var rimraf=require(_0xf7be('0x6'));var config=require(_0xf7be('0x7'));var attributes=require('./squareMessage.attributes');module[_0xf7be('0x8')]=function(_0x5d95d2,_0x33fbc6){return _0x5d95d2['define']('SquareMessage',attributes,{'tableName':_0xf7be('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c6f3cbc..7a10ea7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5630=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SquareMessage,\x20%s,\x20%s','debug','SquareMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5630,0x193));var _0x0563=function(_0x515244,_0x362842){_0x515244=_0x515244-0x0;var _0x9a9358=_0x5630[_0x515244];return _0x9a9358;};'use strict';var _=require(_0x0563('0x0'));var util=require(_0x0563('0x1'));var moment=require(_0x0563('0x2'));var BPromise=require(_0x0563('0x3'));var rs=require(_0x0563('0x4'));var fs=require('fs');var Redis=require(_0x0563('0x5'));var db=require(_0x0563('0x6'))['db'];var utils=require(_0x0563('0x7'));var logger=require(_0x0563('0x8'))(_0x0563('0x9'));var config=require(_0x0563('0xa'));var jayson=require(_0x0563('0xb'));var client=jayson[_0x0563('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2989bc,_0x42408d,_0x280818){return new BPromise(function(_0x597541,_0x55338e){return client[_0x0563('0xd')](_0x2989bc,_0x280818)[_0x0563('0xe')](function(_0x148ba0){logger[_0x0563('0xf')](_0x0563('0x10'),_0x42408d,'request\x20sent');logger[_0x0563('0x11')](_0x0563('0x12'),_0x42408d,_0x0563('0x13'),JSON[_0x0563('0x14')](_0x148ba0));if(_0x148ba0[_0x0563('0x15')]){if(_0x148ba0[_0x0563('0x15')]['code']===0x1f4){logger[_0x0563('0x15')](_0x0563('0x10'),_0x42408d,_0x148ba0[_0x0563('0x15')][_0x0563('0x16')]);return _0x55338e(_0x148ba0[_0x0563('0x15')][_0x0563('0x16')]);}logger[_0x0563('0x15')](_0x0563('0x10'),_0x42408d,_0x148ba0[_0x0563('0x15')][_0x0563('0x16')]);return _0x597541(_0x148ba0[_0x0563('0x15')][_0x0563('0x16')]);}else{logger[_0x0563('0xf')](_0x0563('0x10'),_0x42408d,_0x0563('0x13'));_0x597541(_0x148ba0[_0x0563('0x17')][_0x0563('0x16')]);}})[_0x0563('0x18')](function(_0x4a67a7){logger['error'](_0x0563('0x10'),_0x42408d,_0x4a67a7);_0x55338e(_0x4a67a7);});});}exports[_0x0563('0x19')]=function(_0xa98343){var _0x469fd1=this;return new Promise(function(_0xfb3357,_0x44365b){return db[_0x0563('0x1a')][_0x0563('0x1b')](_0xa98343[_0x0563('0x1c')],{'raw':_0xa98343['options']?_0xa98343[_0x0563('0x1d')][_0x0563('0x1e')]===undefined?!![]:![]:!![]})[_0x0563('0xe')](function(_0x311f53){logger[_0x0563('0xf')](_0x0563('0x19'),_0xa98343);logger[_0x0563('0x11')](_0x0563('0x19'),_0xa98343,JSON['stringify'](_0x311f53));_0xfb3357(_0x311f53);})[_0x0563('0x18')](function(_0x50f9ea){logger[_0x0563('0x15')]('CreateSquareMessage',_0x50f9ea[_0x0563('0x16')],_0xa98343);_0x44365b(_0x469fd1['error'](0x1f4,_0x50f9ea[_0x0563('0x16')]));});});};
\ No newline at end of file
+var _0xf000=['code','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x534a93,_0x547c6d){var _0x5d803d=function(_0x4e7c03){while(--_0x4e7c03){_0x534a93['push'](_0x534a93['shift']());}};_0x5d803d(++_0x547c6d);}(_0xf000,0xf2));var _0x0f00=function(_0x3e8270,_0x293590){_0x3e8270=_0x3e8270-0x0;var _0x1ccde9=_0xf000[_0x3e8270];return _0x1ccde9;};'use strict';var _=require(_0x0f00('0x0'));var util=require(_0x0f00('0x1'));var moment=require(_0x0f00('0x2'));var BPromise=require(_0x0f00('0x3'));var rs=require(_0x0f00('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0f00('0x5'))['db'];var utils=require(_0x0f00('0x6'));var logger=require(_0x0f00('0x7'))(_0x0f00('0x8'));var config=require(_0x0f00('0x9'));var jayson=require(_0x0f00('0xa'));var client=jayson[_0x0f00('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x56d8f2,_0x101f71,_0x43ed9d){return new BPromise(function(_0x42c52a,_0x15b8bb){return client['request'](_0x56d8f2,_0x43ed9d)['then'](function(_0x41e102){logger[_0x0f00('0xc')](_0x0f00('0xd'),_0x101f71,_0x0f00('0xe'));logger[_0x0f00('0xf')](_0x0f00('0x10'),_0x101f71,_0x0f00('0xe'),JSON[_0x0f00('0x11')](_0x41e102));if(_0x41e102[_0x0f00('0x12')]){if(_0x41e102[_0x0f00('0x12')][_0x0f00('0x13')]===0x1f4){logger[_0x0f00('0x12')](_0x0f00('0xd'),_0x101f71,_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);return _0x15b8bb(_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);}logger[_0x0f00('0x12')](_0x0f00('0xd'),_0x101f71,_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);return _0x42c52a(_0x41e102[_0x0f00('0x12')][_0x0f00('0x14')]);}else{logger[_0x0f00('0xc')]('SquareMessage,\x20%s,\x20%s',_0x101f71,_0x0f00('0xe'));_0x42c52a(_0x41e102[_0x0f00('0x15')][_0x0f00('0x14')]);}})[_0x0f00('0x16')](function(_0x214e16){logger['error'](_0x0f00('0xd'),_0x101f71,_0x214e16);_0x15b8bb(_0x214e16);});});}exports[_0x0f00('0x17')]=function(_0x39566e){var _0x1ef53b=this;return new Promise(function(_0x7a8cfc,_0x4c4e5a){return db[_0x0f00('0x18')][_0x0f00('0x19')](_0x39566e[_0x0f00('0x1a')],{'raw':_0x39566e[_0x0f00('0x1b')]?_0x39566e[_0x0f00('0x1b')][_0x0f00('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x464404){logger[_0x0f00('0xc')](_0x0f00('0x17'),_0x39566e);logger['debug'](_0x0f00('0x17'),_0x39566e,JSON['stringify'](_0x464404));_0x7a8cfc(_0x464404);})[_0x0f00('0x16')](function(_0x36f599){logger['error'](_0x0f00('0x17'),_0x36f599[_0x0f00('0x14')],_0x39566e);_0x4c4e5a(_0x1ef53b[_0x0f00('0x12')](0x1f4,_0x36f599[_0x0f00('0x14')]));});});};
\ No newline at end of file
index a65ceaf..574ff5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8356=['fs-extra','../../components/auth/service','../../components/interaction/service','index','get','/:id','isAuthenticated','show','/:id/test','test','post','create','update','destroy','multer','util','path','connect-timeout','Router'];(function(_0x281297,_0x4c8e7a){var _0x4f518a=function(_0x1887bd){while(--_0x1887bd){_0x281297['push'](_0x281297['shift']());}};_0x4f518a(++_0x4c8e7a);}(_0x8356,0xf2));var _0x6835=function(_0xa0d6e8,_0x41e320){_0xa0d6e8=_0xa0d6e8-0x0;var _0x4ba300=_0x8356[_0xa0d6e8];return _0x4ba300;};'use strict';var multer=require(_0x6835('0x0'));var util=require(_0x6835('0x1'));var path=require(_0x6835('0x2'));var timeout=require(_0x6835('0x3'));var express=require('express');var router=express[_0x6835('0x4')]();var fs_extra=require(_0x6835('0x5'));var auth=require(_0x6835('0x6'));var interaction=require(_0x6835('0x7'));var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x6835('0x8')]);router[_0x6835('0x9')](_0x6835('0xa'),auth[_0x6835('0xb')](),controller[_0x6835('0xc')]);router[_0x6835('0x9')](_0x6835('0xd'),auth[_0x6835('0xb')](),timeout('15s'),controller[_0x6835('0xe')]);router[_0x6835('0xf')]('/',auth[_0x6835('0xb')](),controller[_0x6835('0x10')]);router['put'](_0x6835('0xa'),auth[_0x6835('0xb')](),controller[_0x6835('0x11')]);router['delete'](_0x6835('0xa'),auth['isAuthenticated'](),controller[_0x6835('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x3c5f=['../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3c5f,0x10a));var _0xf3c5=function(_0x33e8a4,_0xa8f172){_0x33e8a4=_0x33e8a4-0x0;var _0x4bb9c9=_0x3c5f[_0x33e8a4];return _0x4bb9c9;};'use strict';var multer=require(_0xf3c5('0x0'));var util=require(_0xf3c5('0x1'));var path=require(_0xf3c5('0x2'));var timeout=require('connect-timeout');var express=require(_0xf3c5('0x3'));var router=express[_0xf3c5('0x4')]();var fs_extra=require(_0xf3c5('0x5'));var auth=require(_0xf3c5('0x6'));var interaction=require(_0xf3c5('0x7'));var config=require(_0xf3c5('0x8'));var controller=require(_0xf3c5('0x9'));router[_0xf3c5('0xa')]('/',auth['isAuthenticated'](),controller[_0xf3c5('0xb')]);router['get'](_0xf3c5('0xc'),auth[_0xf3c5('0xd')](),controller[_0xf3c5('0xe')]);router[_0xf3c5('0xa')]('/:id/test',auth[_0xf3c5('0xd')](),timeout('15s'),controller['test']);router[_0xf3c5('0xf')]('/',auth[_0xf3c5('0xd')](),controller[_0xf3c5('0x10')]);router[_0xf3c5('0x11')]('/:id',auth[_0xf3c5('0xd')](),controller[_0xf3c5('0x12')]);router[_0xf3c5('0x13')]('/:id',auth[_0xf3c5('0xd')](),controller['destroy']);module[_0xf3c5('0x14')]=router;
\ No newline at end of file
index 4b05bf1..954fec4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7107=['STRING','exports','name'];(function(_0x45ea51,_0x1d49d2){var _0x55a569=function(_0x2b539b){while(--_0x2b539b){_0x45ea51['push'](_0x45ea51['shift']());}};_0x55a569(++_0x1d49d2);}(_0x7107,0x157));var _0x7710=function(_0x239c7f,_0x342874){_0x239c7f=_0x239c7f-0x0;var _0x2339e9=_0x7107[_0x239c7f];return _0x2339e9;};'use strict';var Sequelize=require('sequelize');module[_0x7710('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x7710('0x1'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7710('0x2')]}};
\ No newline at end of file
+var _0x539d=['STRING','name','sequelize','exports'];(function(_0xb60bf9,_0x2854a2){var _0x126a91=function(_0x53cd5a){while(--_0x53cd5a){_0xb60bf9['push'](_0xb60bf9['shift']());}};_0x126a91(++_0x2854a2);}(_0x539d,0x136));var _0xd539=function(_0x3f670b,_0x10f414){_0x3f670b=_0x3f670b-0x0;var _0x1c0978=_0x539d[_0x3f670b];return _0x1c0978;};'use strict';var Sequelize=require(_0xd539('0x0'));module[_0xd539('0x1')]={'name':{'type':Sequelize[_0xd539('0x2')],'unique':_0xd539('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd539('0x2')]}};
\ No newline at end of file
index bcadfbb..45a2dbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d8=['findAll','rows','catch','show','params','intersection','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','update','test','odbc','openSync','dsn','closeSync','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','destroy','then','get','ODBC','end','error','stack','name','send','map','SquareOdbc','rawAttributes','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0x30d8,0x170));var _0x830d=function(_0x619df8,_0x3c9b3c){_0x619df8=_0x619df8-0x0;var _0x5e11b2=_0x30d8[_0x619df8];return _0x5e11b2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x830d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x830d('0x1'));var rp=require(_0x830d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x830d('0x3'));var util=require(_0x830d('0x4'));var path=require(_0x830d('0x5'));var sox=require(_0x830d('0x6'));var csv=require('to-csv');var ejs=require(_0x830d('0x7'));var fs=require('fs');var fs_extra=require(_0x830d('0x8'));var _=require(_0x830d('0x9'));var squel=require(_0x830d('0xa'));var crypto=require('crypto');var jsforce=require(_0x830d('0xb'));var deskjs=require(_0x830d('0xc'));var toCsv=require(_0x830d('0xd'));var querystring=require('querystring');var Papa=require(_0x830d('0xe'));var Redis=require(_0x830d('0xf'));var authService=require(_0x830d('0x10'));var qs=require(_0x830d('0x11'));var as=require(_0x830d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x830d('0x13'))(_0x830d('0x14'));var utils=require(_0x830d('0x15'));var config=require(_0x830d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x830d('0x17'))['db'];function respondWithStatusCode(_0xecc646,_0x4f8faa){_0x4f8faa=_0x4f8faa||0xcc;return function(_0x576517){if(_0x576517){return _0xecc646[_0x830d('0x18')](_0x4f8faa);}return _0xecc646[_0x830d('0x19')](_0x4f8faa)['end']();};}function respondWithResult(_0x13bedf,_0xc1b87d){_0xc1b87d=_0xc1b87d||0xc8;return function(_0x3e146b){if(_0x3e146b){return _0x13bedf[_0x830d('0x19')](_0xc1b87d)[_0x830d('0x1a')](_0x3e146b);}};}function respondWithFilteredResult(_0x45dc93,_0x2323e1){return function(_0x494bed){if(_0x494bed){var _0x429266=typeof _0x2323e1[_0x830d('0x1b')]===_0x830d('0x1c')&&typeof _0x2323e1[_0x830d('0x1d')]===_0x830d('0x1c');var _0xf3da76=_0x494bed[_0x830d('0x1e')];var _0x3ecf08=_0x429266?0x0:_0x2323e1[_0x830d('0x1b')];var _0x40ae0c=_0x429266?_0x494bed[_0x830d('0x1e')]:_0x2323e1['offset']+_0x2323e1[_0x830d('0x1d')];var _0x26af73;if(_0x40ae0c>=_0xf3da76){_0x40ae0c=_0xf3da76;_0x26af73=0xc8;}else{_0x26af73=0xce;}_0x45dc93['status'](_0x26af73);return _0x45dc93[_0x830d('0x1f')]('Content-Range',_0x3ecf08+'-'+_0x40ae0c+'/'+_0xf3da76)['json'](_0x494bed);}return null;};}function patchUpdates(_0x2aa87c){return function(_0x4309e7){try{jsonpatch['apply'](_0x4309e7,_0x2aa87c,!![]);}catch(_0x17c6f6){return BPromise[_0x830d('0x20')](_0x17c6f6);}return _0x4309e7[_0x830d('0x21')]();};}function saveUpdates(_0x3271b2,_0x2d08e5){return function(_0x53260e){if(_0x53260e){return _0x53260e['update'](_0x3271b2)['then'](function(_0x59a596){return _0x59a596;});}return null;};}function removeEntity(_0x5e2774,_0x492a7a){return function(_0x3c55fa){if(_0x3c55fa){return _0x3c55fa[_0x830d('0x22')]()[_0x830d('0x23')](function(){var _0x74c73a=_0x3c55fa[_0x830d('0x24')]({'plain':!![]});var _0x48bdc5=_0x830d('0x25');return db['UserProfileResource'][_0x830d('0x22')]({'where':{'type':_0x48bdc5,'resourceId':_0x74c73a['id']}})['then'](function(){return _0x3c55fa;});})['then'](function(){_0x5e2774[_0x830d('0x19')](0xcc)[_0x830d('0x26')]();});}};}function handleEntityNotFound(_0x1f54f0,_0x3d7e54){return function(_0x1bddfa){if(!_0x1bddfa){_0x1f54f0[_0x830d('0x18')](0x194);}return _0x1bddfa;};}function handleError(_0x86f443,_0x5da48c){_0x5da48c=_0x5da48c||0x1f4;return function(_0x164f57){logger[_0x830d('0x27')](_0x164f57[_0x830d('0x28')]);if(_0x164f57[_0x830d('0x29')]){delete _0x164f57['name'];}_0x86f443[_0x830d('0x19')](_0x5da48c)[_0x830d('0x2a')](_0x164f57);};}exports['index']=function(_0x2643ac,_0x7c67be){var _0xb637a5={},_0x50a7c8={},_0x203aaf={'count':0x0,'rows':[]};var _0x4b8b1a=_[_0x830d('0x2b')](db[_0x830d('0x2c')][_0x830d('0x2d')],function(_0x3a7cbc){return{'name':_0x3a7cbc['fieldName'],'type':_0x3a7cbc['type'][_0x830d('0x2e')]};});_0x50a7c8[_0x830d('0x2f')]=_[_0x830d('0x2b')](_0x4b8b1a,_0x830d('0x29'));_0x50a7c8[_0x830d('0x30')]=_[_0x830d('0x31')](_0x2643ac[_0x830d('0x30')]);_0x50a7c8[_0x830d('0x32')]=_['intersection'](_0x50a7c8[_0x830d('0x2f')],_0x50a7c8['query']);_0xb637a5[_0x830d('0x33')]=_['intersection'](_0x50a7c8[_0x830d('0x2f')],qs[_0x830d('0x34')](_0x2643ac[_0x830d('0x30')][_0x830d('0x34')]));_0xb637a5[_0x830d('0x33')]=_0xb637a5[_0x830d('0x33')][_0x830d('0x35')]?_0xb637a5[_0x830d('0x33')]:_0x50a7c8[_0x830d('0x2f')];if(!_0x2643ac[_0x830d('0x30')][_0x830d('0x36')](_0x830d('0x37'))){_0xb637a5[_0x830d('0x1d')]=qs[_0x830d('0x1d')](_0x2643ac['query']['limit']);_0xb637a5[_0x830d('0x1b')]=qs[_0x830d('0x1b')](_0x2643ac[_0x830d('0x30')][_0x830d('0x1b')]);}_0xb637a5[_0x830d('0x38')]=qs['sort'](_0x2643ac[_0x830d('0x30')][_0x830d('0x39')]);_0xb637a5[_0x830d('0x3a')]=qs[_0x830d('0x32')](_[_0x830d('0x3b')](_0x2643ac['query'],_0x50a7c8[_0x830d('0x32')]),_0x4b8b1a);if(_0x2643ac[_0x830d('0x30')]['filter']){_0xb637a5['where']=_[_0x830d('0x3c')](_0xb637a5[_0x830d('0x3a')],{'$or':_[_0x830d('0x2b')](_0x4b8b1a,function(_0x459a43){if(_0x459a43[_0x830d('0x3d')]!==_0x830d('0x3e')){var _0x49eb02={};_0x49eb02[_0x459a43['name']]={'$like':'%'+_0x2643ac[_0x830d('0x30')][_0x830d('0x3f')]+'%'};return _0x49eb02;}})});}_0xb637a5=_[_0x830d('0x3c')]({},_0xb637a5,_0x2643ac[_0x830d('0x40')]);var _0x19c627={'where':_0xb637a5['where']};return db['SquareOdbc']['count'](_0x19c627)['then'](function(_0x58789f){_0x203aaf['count']=_0x58789f;if(_0x2643ac[_0x830d('0x30')][_0x830d('0x41')]){_0xb637a5[_0x830d('0x42')]=[{'all':!![]}];}return db[_0x830d('0x2c')][_0x830d('0x43')](_0xb637a5);})[_0x830d('0x23')](function(_0x22be21){_0x203aaf[_0x830d('0x44')]=_0x22be21;return _0x203aaf;})[_0x830d('0x23')](respondWithFilteredResult(_0x7c67be,_0xb637a5))[_0x830d('0x45')](handleError(_0x7c67be,null));};exports[_0x830d('0x46')]=function(_0x322cd7,_0xcf357e){var _0x4b1bfc={'raw':!![],'where':{'id':_0x322cd7[_0x830d('0x47')]['id']}},_0x4b6cb4={};_0x4b6cb4[_0x830d('0x2f')]=_[_0x830d('0x31')](db[_0x830d('0x2c')]['rawAttributes']);_0x4b6cb4[_0x830d('0x30')]=_[_0x830d('0x31')](_0x322cd7[_0x830d('0x30')]);_0x4b6cb4[_0x830d('0x32')]=_[_0x830d('0x48')](_0x4b6cb4[_0x830d('0x2f')],_0x4b6cb4[_0x830d('0x30')]);_0x4b1bfc[_0x830d('0x33')]=_['intersection'](_0x4b6cb4['model'],qs[_0x830d('0x34')](_0x322cd7[_0x830d('0x30')][_0x830d('0x34')]));_0x4b1bfc[_0x830d('0x33')]=_0x4b1bfc['attributes'][_0x830d('0x35')]?_0x4b1bfc[_0x830d('0x33')]:_0x4b6cb4['model'];if(_0x322cd7['query'][_0x830d('0x41')]){_0x4b1bfc[_0x830d('0x42')]=[{'all':!![]}];}_0x4b1bfc=_[_0x830d('0x3c')]({},_0x4b1bfc,_0x322cd7[_0x830d('0x40')]);return db[_0x830d('0x2c')][_0x830d('0x49')](_0x4b1bfc)[_0x830d('0x23')](handleEntityNotFound(_0xcf357e,null))['then'](respondWithResult(_0xcf357e,null))[_0x830d('0x45')](handleError(_0xcf357e,null));};exports[_0x830d('0x4a')]=function(_0x58bbaa,_0x1ce6ec){return db[_0x830d('0x2c')][_0x830d('0x4a')](_0x58bbaa[_0x830d('0x4b')],{})[_0x830d('0x23')](function(_0x464d02){var _0x384ed8=_0x58bbaa['user'][_0x830d('0x24')]({'plain':!![]});if(!_0x384ed8)throw new Error(_0x830d('0x4c'));if(_0x384ed8[_0x830d('0x4d')]==='user'){var _0x2ba745=_0x464d02[_0x830d('0x24')]({'plain':!![]});var _0x305f72=_0x830d('0x25');return db['UserProfileSection'][_0x830d('0x49')]({'where':{'name':_0x305f72,'userProfileId':_0x384ed8[_0x830d('0x4e')]},'raw':!![]})[_0x830d('0x23')](function(_0x19c6fa){if(_0x19c6fa&&_0x19c6fa[_0x830d('0x4f')]===0x0){return db[_0x830d('0x50')][_0x830d('0x4a')]({'name':_0x2ba745[_0x830d('0x29')],'resourceId':_0x2ba745['id'],'type':_0x19c6fa[_0x830d('0x29')],'sectionId':_0x19c6fa['id']},{})['then'](function(){return _0x464d02;});}else{return _0x464d02;}})['catch'](function(_0x7bef04){logger[_0x830d('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x7bef04);throw _0x7bef04;});}return _0x464d02;})['then'](respondWithResult(_0x1ce6ec,0xc9))['catch'](handleError(_0x1ce6ec,null));};exports[_0x830d('0x51')]=function(_0x2dd174,_0x1a0f54){if(_0x2dd174[_0x830d('0x4b')]['id']){delete _0x2dd174[_0x830d('0x4b')]['id'];}return db['SquareOdbc'][_0x830d('0x49')]({'where':{'id':_0x2dd174[_0x830d('0x47')]['id']}})[_0x830d('0x23')](handleEntityNotFound(_0x1a0f54,null))[_0x830d('0x23')](saveUpdates(_0x2dd174[_0x830d('0x4b')],null))[_0x830d('0x23')](respondWithResult(_0x1a0f54,null))[_0x830d('0x45')](handleError(_0x1a0f54,null));};exports['destroy']=function(_0x64ea76,_0x198c7a){return db[_0x830d('0x2c')][_0x830d('0x49')]({'where':{'id':_0x64ea76[_0x830d('0x47')]['id']}})[_0x830d('0x23')](handleEntityNotFound(_0x198c7a,null))[_0x830d('0x23')](removeEntity(_0x198c7a,null))[_0x830d('0x45')](handleError(_0x198c7a,null));};exports[_0x830d('0x52')]=function(_0x29756d,_0x42137f,_0x3d73bb){var _0x657ca;return db['SquareOdbc'][_0x830d('0x49')]({'where':{'id':_0x29756d['params']['id']},'attributes':['id','dsn']})[_0x830d('0x23')](handleEntityNotFound(_0x42137f,null))[_0x830d('0x23')](function(_0x3b3895){if(_0x3b3895){var _0x53533f=require(_0x830d('0x53'))();_0x53533f[_0x830d('0x54')](_0x3b3895[_0x830d('0x55')]);_0x53533f[_0x830d('0x56')]();return _0x3b3895;}})['then'](respondWithResult(_0x42137f,null))[_0x830d('0x45')](handleError(_0x42137f,null));};
\ No newline at end of file
+var _0xf2bd=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ODBC','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','test','dsn','odbc','closeSync','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','stack','name','map','SquareOdbc','rawAttributes','fieldName','type','key','model','keys','query'];(function(_0x417545,_0x18d990){var _0x43a9ed=function(_0x702c0b){while(--_0x702c0b){_0x417545['push'](_0x417545['shift']());}};_0x43a9ed(++_0x18d990);}(_0xf2bd,0x1d0));var _0xdf2b=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xf2bd[_0x17d9e3];return _0x14192d;};'use strict';var emlformat=require(_0xdf2b('0x0'));var rimraf=require(_0xdf2b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdf2b('0x2'));var rp=require('request-promise');var moment=require(_0xdf2b('0x3'));var BPromise=require(_0xdf2b('0x4'));var Mustache=require(_0xdf2b('0x5'));var util=require(_0xdf2b('0x6'));var path=require(_0xdf2b('0x7'));var sox=require(_0xdf2b('0x8'));var csv=require(_0xdf2b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xdf2b('0xa'));var _=require('lodash');var squel=require(_0xdf2b('0xb'));var crypto=require(_0xdf2b('0xc'));var jsforce=require(_0xdf2b('0xd'));var deskjs=require(_0xdf2b('0xe'));var toCsv=require(_0xdf2b('0x9'));var querystring=require(_0xdf2b('0xf'));var Papa=require(_0xdf2b('0x10'));var Redis=require(_0xdf2b('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xdf2b('0x12'));var as=require(_0xdf2b('0x13'));var hardwareService=require(_0xdf2b('0x14'));var logger=require('../../config/logger')(_0xdf2b('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xdf2b('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x488f88,_0x155dcd){_0x155dcd=_0x155dcd||0xcc;return function(_0x57cfb6){if(_0x57cfb6){return _0x488f88[_0xdf2b('0x17')](_0x155dcd);}return _0x488f88[_0xdf2b('0x18')](_0x155dcd)[_0xdf2b('0x19')]();};}function respondWithResult(_0x2d50f0,_0x1af80e){_0x1af80e=_0x1af80e||0xc8;return function(_0x13c280){if(_0x13c280){return _0x2d50f0[_0xdf2b('0x18')](_0x1af80e)[_0xdf2b('0x1a')](_0x13c280);}};}function respondWithFilteredResult(_0x46cd4e,_0x4617d5){return function(_0x88ea4){if(_0x88ea4){var _0x2a23ca=typeof _0x4617d5[_0xdf2b('0x1b')]==='undefined'&&typeof _0x4617d5[_0xdf2b('0x1c')]===_0xdf2b('0x1d');var _0x14b800=_0x88ea4[_0xdf2b('0x1e')];var _0x31b8b7=_0x2a23ca?0x0:_0x4617d5[_0xdf2b('0x1b')];var _0x294ed5=_0x2a23ca?_0x88ea4[_0xdf2b('0x1e')]:_0x4617d5[_0xdf2b('0x1b')]+_0x4617d5['limit'];var _0x37fce1;if(_0x294ed5>=_0x14b800){_0x294ed5=_0x14b800;_0x37fce1=0xc8;}else{_0x37fce1=0xce;}_0x46cd4e[_0xdf2b('0x18')](_0x37fce1);return _0x46cd4e[_0xdf2b('0x1f')](_0xdf2b('0x20'),_0x31b8b7+'-'+_0x294ed5+'/'+_0x14b800)[_0xdf2b('0x1a')](_0x88ea4);}return null;};}function patchUpdates(_0x589f3f){return function(_0x135e10){try{jsonpatch[_0xdf2b('0x21')](_0x135e10,_0x589f3f,!![]);}catch(_0x384042){return BPromise[_0xdf2b('0x22')](_0x384042);}return _0x135e10[_0xdf2b('0x23')]();};}function saveUpdates(_0x3b5c3f,_0xe56ecf){return function(_0x5dc2d0){if(_0x5dc2d0){return _0x5dc2d0[_0xdf2b('0x24')](_0x3b5c3f)[_0xdf2b('0x25')](function(_0x40a383){return _0x40a383;});}return null;};}function removeEntity(_0x1db2da,_0xd1e7b8){return function(_0x134c2f){if(_0x134c2f){return _0x134c2f[_0xdf2b('0x26')]()[_0xdf2b('0x25')](function(){var _0x3ece4c=_0x134c2f[_0xdf2b('0x27')]({'plain':!![]});var _0x2db47a='ODBC';return db[_0xdf2b('0x28')][_0xdf2b('0x26')]({'where':{'type':_0x2db47a,'resourceId':_0x3ece4c['id']}})['then'](function(){return _0x134c2f;});})[_0xdf2b('0x25')](function(){_0x1db2da['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5ee67e,_0x1dc075){return function(_0x37ba65){if(!_0x37ba65){_0x5ee67e[_0xdf2b('0x17')](0x194);}return _0x37ba65;};}function handleError(_0x404643,_0x3ed5ff){_0x3ed5ff=_0x3ed5ff||0x1f4;return function(_0x606848){logger['error'](_0x606848[_0xdf2b('0x29')]);if(_0x606848[_0xdf2b('0x2a')]){delete _0x606848['name'];}_0x404643[_0xdf2b('0x18')](_0x3ed5ff)['send'](_0x606848);};}exports['index']=function(_0x525558,_0xd78f33){var _0x58c778={},_0x1b1184={},_0x2e6690={'count':0x0,'rows':[]};var _0x2c4138=_[_0xdf2b('0x2b')](db[_0xdf2b('0x2c')][_0xdf2b('0x2d')],function(_0x76958c){return{'name':_0x76958c[_0xdf2b('0x2e')],'type':_0x76958c[_0xdf2b('0x2f')][_0xdf2b('0x30')]};});_0x1b1184[_0xdf2b('0x31')]=_[_0xdf2b('0x2b')](_0x2c4138,_0xdf2b('0x2a'));_0x1b1184['query']=_[_0xdf2b('0x32')](_0x525558[_0xdf2b('0x33')]);_0x1b1184[_0xdf2b('0x34')]=_['intersection'](_0x1b1184[_0xdf2b('0x31')],_0x1b1184['query']);_0x58c778[_0xdf2b('0x35')]=_[_0xdf2b('0x36')](_0x1b1184['model'],qs[_0xdf2b('0x37')](_0x525558[_0xdf2b('0x33')][_0xdf2b('0x37')]));_0x58c778['attributes']=_0x58c778[_0xdf2b('0x35')]['length']?_0x58c778[_0xdf2b('0x35')]:_0x1b1184[_0xdf2b('0x31')];if(!_0x525558[_0xdf2b('0x33')][_0xdf2b('0x38')](_0xdf2b('0x39'))){_0x58c778[_0xdf2b('0x1c')]=qs[_0xdf2b('0x1c')](_0x525558[_0xdf2b('0x33')][_0xdf2b('0x1c')]);_0x58c778[_0xdf2b('0x1b')]=qs[_0xdf2b('0x1b')](_0x525558[_0xdf2b('0x33')]['offset']);}_0x58c778['order']=qs[_0xdf2b('0x3a')](_0x525558['query']['sort']);_0x58c778[_0xdf2b('0x3b')]=qs[_0xdf2b('0x34')](_[_0xdf2b('0x3c')](_0x525558['query'],_0x1b1184[_0xdf2b('0x34')]),_0x2c4138);if(_0x525558[_0xdf2b('0x33')][_0xdf2b('0x3d')]){_0x58c778[_0xdf2b('0x3b')]=_['merge'](_0x58c778[_0xdf2b('0x3b')],{'$or':_[_0xdf2b('0x2b')](_0x2c4138,function(_0x4d0100){if(_0x4d0100[_0xdf2b('0x2f')]!==_0xdf2b('0x3e')){var _0x4078c7={};_0x4078c7[_0x4d0100[_0xdf2b('0x2a')]]={'$like':'%'+_0x525558['query'][_0xdf2b('0x3d')]+'%'};return _0x4078c7;}})});}_0x58c778=_[_0xdf2b('0x3f')]({},_0x58c778,_0x525558[_0xdf2b('0x40')]);var _0x5988cc={'where':_0x58c778[_0xdf2b('0x3b')]};return db[_0xdf2b('0x2c')][_0xdf2b('0x1e')](_0x5988cc)[_0xdf2b('0x25')](function(_0x358ea4){_0x2e6690[_0xdf2b('0x1e')]=_0x358ea4;if(_0x525558[_0xdf2b('0x33')][_0xdf2b('0x41')]){_0x58c778[_0xdf2b('0x42')]=[{'all':!![]}];}return db['SquareOdbc'][_0xdf2b('0x43')](_0x58c778);})[_0xdf2b('0x25')](function(_0x1f7766){_0x2e6690[_0xdf2b('0x44')]=_0x1f7766;return _0x2e6690;})['then'](respondWithFilteredResult(_0xd78f33,_0x58c778))[_0xdf2b('0x45')](handleError(_0xd78f33,null));};exports['show']=function(_0x2ce1e6,_0x5eb912){var _0x3b6d91={'raw':!![],'where':{'id':_0x2ce1e6[_0xdf2b('0x46')]['id']}},_0x146ea1={};_0x146ea1['model']=_[_0xdf2b('0x32')](db[_0xdf2b('0x2c')][_0xdf2b('0x2d')]);_0x146ea1['query']=_['keys'](_0x2ce1e6[_0xdf2b('0x33')]);_0x146ea1[_0xdf2b('0x34')]=_['intersection'](_0x146ea1['model'],_0x146ea1[_0xdf2b('0x33')]);_0x3b6d91[_0xdf2b('0x35')]=_[_0xdf2b('0x36')](_0x146ea1[_0xdf2b('0x31')],qs[_0xdf2b('0x37')](_0x2ce1e6[_0xdf2b('0x33')]['fields']));_0x3b6d91[_0xdf2b('0x35')]=_0x3b6d91['attributes']['length']?_0x3b6d91['attributes']:_0x146ea1[_0xdf2b('0x31')];if(_0x2ce1e6[_0xdf2b('0x33')]['includeAll']){_0x3b6d91[_0xdf2b('0x42')]=[{'all':!![]}];}_0x3b6d91=_[_0xdf2b('0x3f')]({},_0x3b6d91,_0x2ce1e6['options']);return db[_0xdf2b('0x2c')]['find'](_0x3b6d91)['then'](handleEntityNotFound(_0x5eb912,null))[_0xdf2b('0x25')](respondWithResult(_0x5eb912,null))[_0xdf2b('0x45')](handleError(_0x5eb912,null));};exports[_0xdf2b('0x47')]=function(_0x42cf7f,_0x153c75){return db[_0xdf2b('0x2c')][_0xdf2b('0x47')](_0x42cf7f[_0xdf2b('0x48')],{})['then'](function(_0x14795f){var _0xe2aad6=_0x42cf7f[_0xdf2b('0x49')][_0xdf2b('0x27')]({'plain':!![]});if(!_0xe2aad6)throw new Error(_0xdf2b('0x4a'));if(_0xe2aad6[_0xdf2b('0x4b')]===_0xdf2b('0x49')){var _0x321b09=_0x14795f[_0xdf2b('0x27')]({'plain':!![]});var _0x693276=_0xdf2b('0x4c');return db['UserProfileSection'][_0xdf2b('0x4d')]({'where':{'name':_0x693276,'userProfileId':_0xe2aad6[_0xdf2b('0x4e')]},'raw':!![]})[_0xdf2b('0x25')](function(_0x2952fe){if(_0x2952fe&&_0x2952fe[_0xdf2b('0x4f')]===0x0){return db[_0xdf2b('0x28')][_0xdf2b('0x47')]({'name':_0x321b09['name'],'resourceId':_0x321b09['id'],'type':_0x2952fe[_0xdf2b('0x2a')],'sectionId':_0x2952fe['id']},{})[_0xdf2b('0x25')](function(){return _0x14795f;});}else{return _0x14795f;}})[_0xdf2b('0x45')](function(_0x36c201){logger[_0xdf2b('0x50')](_0xdf2b('0x51'),_0x36c201);throw _0x36c201;});}return _0x14795f;})[_0xdf2b('0x25')](respondWithResult(_0x153c75,0xc9))[_0xdf2b('0x45')](handleError(_0x153c75,null));};exports[_0xdf2b('0x24')]=function(_0x22654f,_0x3ba019){if(_0x22654f[_0xdf2b('0x48')]['id']){delete _0x22654f[_0xdf2b('0x48')]['id'];}return db[_0xdf2b('0x2c')][_0xdf2b('0x4d')]({'where':{'id':_0x22654f[_0xdf2b('0x46')]['id']}})['then'](handleEntityNotFound(_0x3ba019,null))[_0xdf2b('0x25')](saveUpdates(_0x22654f[_0xdf2b('0x48')],null))[_0xdf2b('0x25')](respondWithResult(_0x3ba019,null))[_0xdf2b('0x45')](handleError(_0x3ba019,null));};exports[_0xdf2b('0x26')]=function(_0x4944b5,_0x379da6){return db['SquareOdbc'][_0xdf2b('0x4d')]({'where':{'id':_0x4944b5['params']['id']}})['then'](handleEntityNotFound(_0x379da6,null))[_0xdf2b('0x25')](removeEntity(_0x379da6,null))['catch'](handleError(_0x379da6,null));};exports[_0xdf2b('0x52')]=function(_0x4c8217,_0x52ae6b,_0x8b4708){var _0x10df41;return db['SquareOdbc'][_0xdf2b('0x4d')]({'where':{'id':_0x4c8217[_0xdf2b('0x46')]['id']},'attributes':['id',_0xdf2b('0x53')]})[_0xdf2b('0x25')](handleEntityNotFound(_0x52ae6b,null))['then'](function(_0x1a3e45){if(_0x1a3e45){var _0xd056ae=require(_0xdf2b('0x54'))();_0xd056ae['openSync'](_0x1a3e45['dsn']);_0xd056ae[_0xdf2b('0x55')]();return _0x1a3e45;}})[_0xdf2b('0x25')](respondWithResult(_0x52ae6b,null))[_0xdf2b('0x45')](handleError(_0x52ae6b,null));};
\ No newline at end of file
index b62ab53..f49a703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3fd=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','SquareOdbc','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa3fd,0x1c2));var _0xda3f=function(_0x1b1f88,_0x3fe1cb){_0x1b1f88=_0x1b1f88-0x0;var _0x5045b9=_0xa3fd[_0x1b1f88];return _0x5045b9;};'use strict';var _=require('lodash');var util=require(_0xda3f('0x0'));var logger=require('../../config/logger')(_0xda3f('0x1'));var moment=require(_0xda3f('0x2'));var BPromise=require(_0xda3f('0x3'));var rp=require(_0xda3f('0x4'));var fs=require('fs');var path=require(_0xda3f('0x5'));var rimraf=require(_0xda3f('0x6'));var config=require(_0xda3f('0x7'));var attributes=require(_0xda3f('0x8'));module[_0xda3f('0x9')]=function(_0x1dcf8a,_0x24ddc8){return _0x1dcf8a['define'](_0xda3f('0xa'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaefb=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','define','SquareOdbc','lodash','util'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0xaefb,0xa7));var _0xbaef=function(_0x1da8f5,_0xc052c4){_0x1da8f5=_0x1da8f5-0x0;var _0x2973a4=_0xaefb[_0x1da8f5];return _0x2973a4;};'use strict';var _=require(_0xbaef('0x0'));var util=require(_0xbaef('0x1'));var logger=require(_0xbaef('0x2'))(_0xbaef('0x3'));var moment=require(_0xbaef('0x4'));var BPromise=require(_0xbaef('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbaef('0x6'));var rimraf=require(_0xbaef('0x7'));var config=require(_0xbaef('0x8'));var attributes=require(_0xbaef('0x9'));module[_0xbaef('0xa')]=function(_0x3bd52f,_0xabebe3){return _0x3bd52f[_0xbaef('0xb')](_0xbaef('0xc'),attributes,{'tableName':'square_odbc','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 13baaec..3eb1df6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbec4=['util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','SquareOdbc','find','options','raw','where','map','include','model','attributes','ShowSquareOdbc','lodash'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0xbec4,0x1c6));var _0x4bec=function(_0x346417,_0x3332e3){_0x346417=_0x346417-0x0;var _0x5dbe8a=_0xbec4[_0x346417];return _0x5dbe8a;};'use strict';var _=require(_0x4bec('0x0'));var util=require(_0x4bec('0x1'));var moment=require(_0x4bec('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4bec('0x3'));var db=require(_0x4bec('0x4'))['db'];var utils=require(_0x4bec('0x5'));var logger=require(_0x4bec('0x6'))(_0x4bec('0x7'));var config=require(_0x4bec('0x8'));var jayson=require(_0x4bec('0x9'));var client=jayson[_0x4bec('0xa')][_0x4bec('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x273f2c,_0x350e09,_0x2deb3c){return new BPromise(function(_0x2b5f8e,_0x21316e){return client[_0x4bec('0xc')](_0x273f2c,_0x2deb3c)[_0x4bec('0xd')](function(_0x637bf5){logger[_0x4bec('0xe')](_0x4bec('0xf'),_0x350e09,_0x4bec('0x10'));logger[_0x4bec('0x11')](_0x4bec('0x12'),_0x350e09,_0x4bec('0x10'),JSON[_0x4bec('0x13')](_0x637bf5));if(_0x637bf5['error']){if(_0x637bf5[_0x4bec('0x14')][_0x4bec('0x15')]===0x1f4){logger['error'](_0x4bec('0xf'),_0x350e09,_0x637bf5['error'][_0x4bec('0x16')]);return _0x21316e(_0x637bf5['error'][_0x4bec('0x16')]);}logger[_0x4bec('0x14')](_0x4bec('0xf'),_0x350e09,_0x637bf5[_0x4bec('0x14')][_0x4bec('0x16')]);return _0x2b5f8e(_0x637bf5[_0x4bec('0x14')]['message']);}else{logger[_0x4bec('0xe')](_0x4bec('0xf'),_0x350e09,'request\x20sent');_0x2b5f8e(_0x637bf5[_0x4bec('0x17')][_0x4bec('0x16')]);}})[_0x4bec('0x18')](function(_0x2972a7){logger['error'](_0x4bec('0xf'),_0x350e09,_0x2972a7);_0x21316e(_0x2972a7);});});}exports['ShowSquareOdbc']=function(_0x34cf41){var _0x3372f0=this;return new Promise(function(_0x4794eb,_0x35bff4){return db[_0x4bec('0x19')][_0x4bec('0x1a')]({'raw':_0x34cf41[_0x4bec('0x1b')]?_0x34cf41[_0x4bec('0x1b')][_0x4bec('0x1c')]===undefined?!![]:![]:!![],'where':_0x34cf41[_0x4bec('0x1b')]?_0x34cf41['options'][_0x4bec('0x1d')]||null:null,'attributes':_0x34cf41[_0x4bec('0x1b')]?_0x34cf41[_0x4bec('0x1b')]['attributes']||null:null,'include':_0x34cf41[_0x4bec('0x1b')]?_0x34cf41[_0x4bec('0x1b')]['include']?_[_0x4bec('0x1e')](_0x34cf41['options'][_0x4bec('0x1f')],function(_0x44e8be){return{'model':db[_0x44e8be[_0x4bec('0x20')]],'as':_0x44e8be['as'],'attributes':_0x44e8be['attributes'],'include':_0x44e8be[_0x4bec('0x1f')]?_[_0x4bec('0x1e')](_0x44e8be[_0x4bec('0x1f')],function(_0x331e91){return{'model':db[_0x331e91[_0x4bec('0x20')]],'as':_0x331e91['as'],'attributes':_0x331e91[_0x4bec('0x21')],'include':_0x331e91[_0x4bec('0x1f')]?_['map'](_0x331e91[_0x4bec('0x1f')],function(_0xc754c3){return{'model':db[_0xc754c3['model']],'as':_0xc754c3['as'],'attributes':_0xc754c3['attributes']};}):[]};}):[]};}):[]:[]})[_0x4bec('0xd')](function(_0x25e773){logger[_0x4bec('0xe')](_0x4bec('0x22'),_0x34cf41);logger[_0x4bec('0x11')](_0x4bec('0x22'),_0x34cf41,JSON[_0x4bec('0x13')](_0x25e773));_0x4794eb(_0x25e773);})[_0x4bec('0x18')](function(_0x5f5259){logger[_0x4bec('0x14')](_0x4bec('0x22'),_0x5f5259[_0x4bec('0x16')],_0x34cf41);_0x35bff4(_0x3372f0[_0x4bec('0x14')](0x1f4,_0x5f5259['message']));});});};
\ No newline at end of file
+var _0x2795=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareOdbc,\x20%s,\x20%s','message','catch','ShowSquareOdbc','options','raw','attributes','include','map','model','then','lodash'];(function(_0x4e44e1,_0x27ee41){var _0x566322=function(_0x543340){while(--_0x543340){_0x4e44e1['push'](_0x4e44e1['shift']());}};_0x566322(++_0x27ee41);}(_0x2795,0x9a));var _0x5279=function(_0x12a2c3,_0x396e65){_0x12a2c3=_0x12a2c3-0x0;var _0x1fd27d=_0x2795[_0x12a2c3];return _0x1fd27d;};'use strict';var _=require(_0x5279('0x0'));var util=require(_0x5279('0x1'));var moment=require('moment');var BPromise=require(_0x5279('0x2'));var rs=require(_0x5279('0x3'));var fs=require('fs');var Redis=require(_0x5279('0x4'));var db=require(_0x5279('0x5'))['db'];var utils=require(_0x5279('0x6'));var logger=require('../../config/logger')(_0x5279('0x7'));var config=require(_0x5279('0x8'));var jayson=require(_0x5279('0x9'));var client=jayson[_0x5279('0xa')][_0x5279('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x109a8d,_0x33baab,_0x1bca1f){return new BPromise(function(_0x5a4a09,_0x39868f){return client[_0x5279('0xc')](_0x109a8d,_0x1bca1f)['then'](function(_0xc44522){logger[_0x5279('0xd')]('SquareOdbc,\x20%s,\x20%s',_0x33baab,_0x5279('0xe'));logger[_0x5279('0xf')](_0x5279('0x10'),_0x33baab,_0x5279('0xe'),JSON[_0x5279('0x11')](_0xc44522));if(_0xc44522[_0x5279('0x12')]){if(_0xc44522['error'][_0x5279('0x13')]===0x1f4){logger[_0x5279('0x12')](_0x5279('0x14'),_0x33baab,_0xc44522['error'][_0x5279('0x15')]);return _0x39868f(_0xc44522[_0x5279('0x12')][_0x5279('0x15')]);}logger['error'](_0x5279('0x14'),_0x33baab,_0xc44522[_0x5279('0x12')][_0x5279('0x15')]);return _0x5a4a09(_0xc44522[_0x5279('0x12')][_0x5279('0x15')]);}else{logger['info'](_0x5279('0x14'),_0x33baab,'request\x20sent');_0x5a4a09(_0xc44522['result'][_0x5279('0x15')]);}})[_0x5279('0x16')](function(_0x2f6ab8){logger['error'](_0x5279('0x14'),_0x33baab,_0x2f6ab8);_0x39868f(_0x2f6ab8);});});}exports[_0x5279('0x17')]=function(_0x50d5dc){var _0x145134=this;return new Promise(function(_0x23320e,_0x4f7cbc){return db['SquareOdbc']['find']({'raw':_0x50d5dc['options']?_0x50d5dc[_0x5279('0x18')][_0x5279('0x19')]===undefined?!![]:![]:!![],'where':_0x50d5dc[_0x5279('0x18')]?_0x50d5dc[_0x5279('0x18')]['where']||null:null,'attributes':_0x50d5dc['options']?_0x50d5dc['options'][_0x5279('0x1a')]||null:null,'include':_0x50d5dc[_0x5279('0x18')]?_0x50d5dc[_0x5279('0x18')][_0x5279('0x1b')]?_[_0x5279('0x1c')](_0x50d5dc[_0x5279('0x18')][_0x5279('0x1b')],function(_0x5f445d){return{'model':db[_0x5f445d[_0x5279('0x1d')]],'as':_0x5f445d['as'],'attributes':_0x5f445d[_0x5279('0x1a')],'include':_0x5f445d[_0x5279('0x1b')]?_[_0x5279('0x1c')](_0x5f445d[_0x5279('0x1b')],function(_0x31d901){return{'model':db[_0x31d901[_0x5279('0x1d')]],'as':_0x31d901['as'],'attributes':_0x31d901[_0x5279('0x1a')],'include':_0x31d901['include']?_[_0x5279('0x1c')](_0x31d901[_0x5279('0x1b')],function(_0x245415){return{'model':db[_0x245415[_0x5279('0x1d')]],'as':_0x245415['as'],'attributes':_0x245415[_0x5279('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5279('0x1e')](function(_0x597776){logger['info'](_0x5279('0x17'),_0x50d5dc);logger[_0x5279('0xf')]('ShowSquareOdbc',_0x50d5dc,JSON[_0x5279('0x11')](_0x597776));_0x23320e(_0x597776);})[_0x5279('0x16')](function(_0x282218){logger[_0x5279('0x12')](_0x5279('0x17'),_0x282218['message'],_0x50d5dc);_0x4f7cbc(_0x145134[_0x5279('0x12')](0x1f4,_0x282218['message']));});});};
\ No newline at end of file
index 043b695..c71b4bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6124=['getUsers','post','create','addUsers','put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','show','/:id/users'];(function(_0x4ef724,_0x2eaa8f){var _0x16b426=function(_0x2c336b){while(--_0x2c336b){_0x4ef724['push'](_0x4ef724['shift']());}};_0x16b426(++_0x2eaa8f);}(_0x6124,0x140));var _0x4612=function(_0x1ef261,_0x4f58ee){_0x1ef261=_0x1ef261-0x0;var _0x4bd0bb=_0x6124[_0x1ef261];return _0x4bd0bb;};'use strict';var multer=require(_0x4612('0x0'));var util=require(_0x4612('0x1'));var path=require(_0x4612('0x2'));var timeout=require('connect-timeout');var express=require(_0x4612('0x3'));var router=express[_0x4612('0x4')]();var fs_extra=require(_0x4612('0x5'));var auth=require(_0x4612('0x6'));var interaction=require(_0x4612('0x7'));var config=require(_0x4612('0x8'));var controller=require(_0x4612('0x9'));router['get']('/',auth[_0x4612('0xa')](),controller[_0x4612('0xb')]);router[_0x4612('0xc')](_0x4612('0xd'),auth['isAuthenticated'](),controller[_0x4612('0xe')]);router[_0x4612('0xc')](_0x4612('0xf'),auth[_0x4612('0xa')](),controller[_0x4612('0x10')]);router[_0x4612('0x11')]('/',auth[_0x4612('0xa')](),controller[_0x4612('0x12')]);router[_0x4612('0x11')](_0x4612('0xf'),auth[_0x4612('0xa')](),controller[_0x4612('0x13')]);router[_0x4612('0x14')](_0x4612('0xd'),auth[_0x4612('0xa')](),controller[_0x4612('0x15')]);router[_0x4612('0x16')]('/:id',auth[_0x4612('0xa')](),controller[_0x4612('0x17')]);router[_0x4612('0x16')](_0x4612('0xf'),auth[_0x4612('0xa')](),controller['removeUsers']);module['exports']=router;
\ No newline at end of file
+var _0x91c5=['create','addUsers','put','update','delete','removeUsers','exports','util','express','../../config/environment','./squareProject.controller','isAuthenticated','index','/:id','show','get','/:id/users','getUsers','post'];(function(_0x226f94,_0x111cb2){var _0xb4249f=function(_0x3754f9){while(--_0x3754f9){_0x226f94['push'](_0x226f94['shift']());}};_0xb4249f(++_0x111cb2);}(_0x91c5,0x124));var _0x591c=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x91c5[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require('multer');var util=require(_0x591c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x591c('0x1'));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(_0x591c('0x2'));var controller=require(_0x591c('0x3'));router['get']('/',auth[_0x591c('0x4')](),controller[_0x591c('0x5')]);router['get'](_0x591c('0x6'),auth['isAuthenticated'](),controller[_0x591c('0x7')]);router[_0x591c('0x8')](_0x591c('0x9'),auth[_0x591c('0x4')](),controller[_0x591c('0xa')]);router[_0x591c('0xb')]('/',auth[_0x591c('0x4')](),controller[_0x591c('0xc')]);router[_0x591c('0xb')](_0x591c('0x9'),auth[_0x591c('0x4')](),controller[_0x591c('0xd')]);router[_0x591c('0xe')](_0x591c('0x6'),auth[_0x591c('0x4')](),controller[_0x591c('0xf')]);router['delete'](_0x591c('0x6'),auth[_0x591c('0x4')](),controller['destroy']);router[_0x591c('0x10')](_0x591c('0x9'),auth[_0x591c('0x4')](),controller[_0x591c('0x11')]);module[_0x591c('0x12')]=router;
\ No newline at end of file
index 9ad8688..4c4dd5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd07e=['STRING','name','BLOB','long','getDataValue','preproduction','utf8','production','toString','DATE','sequelize','exports'];(function(_0x2f490e,_0x9adb99){var _0x48d1f6=function(_0x1917db){while(--_0x1917db){_0x2f490e['push'](_0x2f490e['shift']());}};_0x48d1f6(++_0x9adb99);}(_0xd07e,0x8e));var _0xed07=function(_0x5a8585,_0x29fb9c){_0x5a8585=_0x5a8585-0x0;var _0x319e30=_0xd07e[_0x5a8585];return _0x319e30;};'use strict';var Sequelize=require(_0xed07('0x0'));module[_0xed07('0x1')]={'name':{'type':Sequelize[_0xed07('0x2')],'unique':_0xed07('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xed07('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0xed07('0x4')](_0xed07('0x5')),'get':function(){if(this[_0xed07('0x6')]('preproduction')){return this[_0xed07('0x6')](_0xed07('0x7'))['toString'](_0xed07('0x8'));}}},'production':{'type':Sequelize['BLOB'](_0xed07('0x5')),'get':function(){if(this[_0xed07('0x6')](_0xed07('0x9'))){return this[_0xed07('0x6')](_0xed07('0x9'))[_0xed07('0xa')](_0xed07('0x8'));}}},'savedAt':{'type':Sequelize[_0xed07('0xb')]},'publishedAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xc738=['name','TEXT','BLOB','getDataValue','preproduction','toString','utf8','long','production','DATE','sequelize','exports','STRING'];(function(_0x3e469e,_0x334923){var _0x33d855=function(_0x123ba9){while(--_0x123ba9){_0x3e469e['push'](_0x3e469e['shift']());}};_0x33d855(++_0x334923);}(_0xc738,0x135));var _0x8c73=function(_0x3f4cd0,_0x303070){_0x3f4cd0=_0x3f4cd0-0x0;var _0x3f9f01=_0xc738[_0x3f4cd0];return _0x3f9f01;};'use strict';var Sequelize=require(_0x8c73('0x0'));module[_0x8c73('0x1')]={'name':{'type':Sequelize[_0x8c73('0x2')],'unique':_0x8c73('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x8c73('0x2')]},'notes':{'type':Sequelize[_0x8c73('0x4')]},'preproduction':{'type':Sequelize[_0x8c73('0x5')]('long'),'get':function(){if(this[_0x8c73('0x6')]('preproduction')){return this[_0x8c73('0x6')](_0x8c73('0x7'))[_0x8c73('0x8')](_0x8c73('0x9'));}}},'production':{'type':Sequelize['BLOB'](_0x8c73('0xa')),'get':function(){if(this[_0x8c73('0x6')](_0x8c73('0xb'))){return this[_0x8c73('0x6')](_0x8c73('0xb'))[_0x8c73('0x8')]('utf8');}}},'savedAt':{'type':Sequelize[_0x8c73('0xc')]},'publishedAt':{'type':Sequelize[_0x8c73('0xc')]}};
\ No newline at end of file
index c1c8aca..cb79727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87c4=['autoAssociation','UserProfileResource','params','destroy','addUsers','omit','ids','removeUsers','isArray','emit','userSquareProject:remove','User','fields','getUsers','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','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','../../mysqldb','redis','defaults','./squareProject.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','get','error','name','send','index','map','SquareProject','rawAttributes','key','model','query','keys','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','VIRTUAL','options','includeAll','rows','catch','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','userProfileId'];(function(_0x280a73,_0x143850){var _0x49d68c=function(_0x1ca30d){while(--_0x1ca30d){_0x280a73['push'](_0x280a73['shift']());}};_0x49d68c(++_0x143850);}(_0x87c4,0x13d));var _0x487c=function(_0x31d400,_0x13fb14){_0x31d400=_0x31d400-0x0;var _0x58806e=_0x87c4[_0x31d400];return _0x58806e;};'use strict';var emlformat=require(_0x487c('0x0'));var rimraf=require(_0x487c('0x1'));var zipdir=require(_0x487c('0x2'));var jsonpatch=require(_0x487c('0x3'));var rp=require(_0x487c('0x4'));var moment=require(_0x487c('0x5'));var BPromise=require(_0x487c('0x6'));var Mustache=require(_0x487c('0x7'));var util=require(_0x487c('0x8'));var path=require(_0x487c('0x9'));var sox=require(_0x487c('0xa'));var csv=require(_0x487c('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x487c('0xc'));var _=require('lodash');var squel=require(_0x487c('0xd'));var crypto=require(_0x487c('0xe'));var jsforce=require(_0x487c('0xf'));var deskjs=require(_0x487c('0x10'));var toCsv=require(_0x487c('0xb'));var querystring=require(_0x487c('0x11'));var Papa=require(_0x487c('0x12'));var Redis=require(_0x487c('0x13'));var authService=require(_0x487c('0x14'));var qs=require(_0x487c('0x15'));var as=require(_0x487c('0x16'));var hardwareService=require(_0x487c('0x17'));var logger=require('../../config/logger')(_0x487c('0x18'));var utils=require(_0x487c('0x19'));var config=require(_0x487c('0x1a'));var licenseUtil=require(_0x487c('0x1b'));var db=require(_0x487c('0x1c'))['db'];config[_0x487c('0x1d')]=_[_0x487c('0x1e')](config[_0x487c('0x1d')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x487c('0x1d')]));require(_0x487c('0x1f'))[_0x487c('0x20')](socket);function respondWithStatusCode(_0x18d1fb,_0x8f178f){_0x8f178f=_0x8f178f||0xcc;return function(_0xd4f5e5){if(_0xd4f5e5){return _0x18d1fb[_0x487c('0x21')](_0x8f178f);}return _0x18d1fb[_0x487c('0x22')](_0x8f178f)[_0x487c('0x23')]();};}function respondWithResult(_0x12dcd5,_0x2a2c4f){_0x2a2c4f=_0x2a2c4f||0xc8;return function(_0x45657c){if(_0x45657c){return _0x12dcd5['status'](_0x2a2c4f)['json'](_0x45657c);}};}function respondWithFilteredResult(_0x90f154,_0x222a32){return function(_0x4a9c05){if(_0x4a9c05){var _0x1fb48a=typeof _0x222a32[_0x487c('0x24')]===_0x487c('0x25')&&typeof _0x222a32[_0x487c('0x26')]===_0x487c('0x25');var _0x47922f=_0x4a9c05[_0x487c('0x27')];var _0x542455=_0x1fb48a?0x0:_0x222a32[_0x487c('0x24')];var _0x591cc8=_0x1fb48a?_0x4a9c05[_0x487c('0x27')]:_0x222a32[_0x487c('0x24')]+_0x222a32[_0x487c('0x26')];var _0x2b1e6c;if(_0x591cc8>=_0x47922f){_0x591cc8=_0x47922f;_0x2b1e6c=0xc8;}else{_0x2b1e6c=0xce;}_0x90f154[_0x487c('0x22')](_0x2b1e6c);return _0x90f154[_0x487c('0x28')](_0x487c('0x29'),_0x542455+'-'+_0x591cc8+'/'+_0x47922f)[_0x487c('0x2a')](_0x4a9c05);}return null;};}function patchUpdates(_0x2e1a0c){return function(_0x350118){try{jsonpatch['apply'](_0x350118,_0x2e1a0c,!![]);}catch(_0xac2841){return BPromise[_0x487c('0x2b')](_0xac2841);}return _0x350118[_0x487c('0x2c')]();};}function saveUpdates(_0x196f13,_0x443c7a){return function(_0x8314d0){if(_0x8314d0){return _0x8314d0[_0x487c('0x2d')](_0x196f13)[_0x487c('0x2e')](function(_0x251c45){return _0x251c45;});}return null;};}function removeEntity(_0x4056c6,_0x5f0438){return function(_0x405544){if(_0x405544){return _0x405544['destroy']()[_0x487c('0x2e')](function(){var _0x4f89df=_0x405544[_0x487c('0x2f')]({'plain':!![]});var _0xacff27='SquareProjects';return db['UserProfileResource']['destroy']({'where':{'type':_0xacff27,'resourceId':_0x4f89df['id']}})[_0x487c('0x2e')](function(){return _0x405544;});})[_0x487c('0x2e')](function(){_0x4056c6['status'](0xcc)[_0x487c('0x23')]();});}};}function handleEntityNotFound(_0x367a76,_0x43d706){return function(_0x166da4){if(!_0x166da4){_0x367a76['sendStatus'](0x194);}return _0x166da4;};}function handleError(_0x145a4e,_0x47d84b){_0x47d84b=_0x47d84b||0x1f4;return function(_0x2693b0){logger[_0x487c('0x30')](_0x2693b0['stack']);if(_0x2693b0[_0x487c('0x31')]){delete _0x2693b0[_0x487c('0x31')];}_0x145a4e[_0x487c('0x22')](_0x47d84b)[_0x487c('0x32')](_0x2693b0);};}exports[_0x487c('0x33')]=function(_0x21e6eb,_0x202150){var _0x25d0e6={},_0x6f249a={},_0x486275={'count':0x0,'rows':[]};var _0x2dc6ff=_[_0x487c('0x34')](db[_0x487c('0x35')][_0x487c('0x36')],function(_0x1d1116){return{'name':_0x1d1116['fieldName'],'type':_0x1d1116['type'][_0x487c('0x37')]};});_0x6f249a[_0x487c('0x38')]=_['map'](_0x2dc6ff,_0x487c('0x31'));_0x6f249a[_0x487c('0x39')]=_[_0x487c('0x3a')](_0x21e6eb[_0x487c('0x39')]);_0x6f249a['filters']=_['intersection'](_0x6f249a[_0x487c('0x38')],_0x6f249a['query']);_0x25d0e6[_0x487c('0x3b')]=_[_0x487c('0x3c')](_0x6f249a[_0x487c('0x38')],qs['fields'](_0x21e6eb['query']['fields']));_0x25d0e6[_0x487c('0x3b')]=_0x25d0e6[_0x487c('0x3b')][_0x487c('0x3d')]?_0x25d0e6[_0x487c('0x3b')]:_0x6f249a['model'];if(!_0x21e6eb[_0x487c('0x39')][_0x487c('0x3e')](_0x487c('0x3f'))){_0x25d0e6[_0x487c('0x26')]=qs[_0x487c('0x26')](_0x21e6eb[_0x487c('0x39')]['limit']);_0x25d0e6[_0x487c('0x24')]=qs[_0x487c('0x24')](_0x21e6eb[_0x487c('0x39')][_0x487c('0x24')]);}_0x25d0e6[_0x487c('0x40')]=qs[_0x487c('0x41')](_0x21e6eb[_0x487c('0x39')][_0x487c('0x41')]);_0x25d0e6[_0x487c('0x42')]=qs[_0x487c('0x43')](_[_0x487c('0x44')](_0x21e6eb[_0x487c('0x39')],_0x6f249a[_0x487c('0x43')]),_0x2dc6ff);if(_0x21e6eb[_0x487c('0x39')][_0x487c('0x45')]){_0x25d0e6[_0x487c('0x42')]=_[_0x487c('0x46')](_0x25d0e6[_0x487c('0x42')],{'$or':_['map'](_0x2dc6ff,function(_0x5e327f){if(_0x5e327f[_0x487c('0x47')]!==_0x487c('0x48')){var _0x1dc328={};_0x1dc328[_0x5e327f[_0x487c('0x31')]]={'$like':'%'+_0x21e6eb['query'][_0x487c('0x45')]+'%'};return _0x1dc328;}})});}_0x25d0e6=_[_0x487c('0x46')]({},_0x25d0e6,_0x21e6eb[_0x487c('0x49')]);var _0x5cf7d2={'where':_0x25d0e6[_0x487c('0x42')]};return db[_0x487c('0x35')][_0x487c('0x27')](_0x5cf7d2)[_0x487c('0x2e')](function(_0x5b46a2){_0x486275[_0x487c('0x27')]=_0x5b46a2;if(_0x21e6eb[_0x487c('0x39')][_0x487c('0x4a')]){_0x25d0e6['include']=[{'all':!![]}];}return db['SquareProject']['findAll'](_0x25d0e6);})[_0x487c('0x2e')](function(_0x2882b1){_0x486275[_0x487c('0x4b')]=_0x2882b1;return _0x486275;})['then'](respondWithFilteredResult(_0x202150,_0x25d0e6))[_0x487c('0x4c')](handleError(_0x202150,null));};exports['show']=function(_0x3eb9e4,_0x390ef5){var _0xc19b75={'raw':![],'where':{'id':_0x3eb9e4['params']['id']}},_0x4b6ac1={};_0x4b6ac1[_0x487c('0x38')]=_[_0x487c('0x3a')](db['SquareProject'][_0x487c('0x36')]);_0x4b6ac1[_0x487c('0x39')]=_[_0x487c('0x3a')](_0x3eb9e4[_0x487c('0x39')]);_0x4b6ac1[_0x487c('0x43')]=_[_0x487c('0x3c')](_0x4b6ac1[_0x487c('0x38')],_0x4b6ac1[_0x487c('0x39')]);_0xc19b75[_0x487c('0x3b')]=_[_0x487c('0x3c')](_0x4b6ac1[_0x487c('0x38')],qs['fields'](_0x3eb9e4[_0x487c('0x39')]['fields']));_0xc19b75['attributes']=_0xc19b75[_0x487c('0x3b')][_0x487c('0x3d')]?_0xc19b75[_0x487c('0x3b')]:_0x4b6ac1[_0x487c('0x38')];if(_0x3eb9e4[_0x487c('0x39')]['includeAll']){_0xc19b75[_0x487c('0x4d')]=[{'all':!![]}];}_0xc19b75=_[_0x487c('0x46')]({},_0xc19b75,_0x3eb9e4['options']);return db['SquareProject'][_0x487c('0x4e')](_0xc19b75)[_0x487c('0x2e')](handleEntityNotFound(_0x390ef5,null))[_0x487c('0x2e')](respondWithResult(_0x390ef5,null))[_0x487c('0x4c')](handleError(_0x390ef5,null));};exports[_0x487c('0x4f')]=function(_0x5605e3,_0x178531){return db['SquareProject'][_0x487c('0x4f')](_0x5605e3[_0x487c('0x50')],{})[_0x487c('0x2e')](function(_0x59add3){var _0x82e2ae=_0x5605e3[_0x487c('0x51')][_0x487c('0x2f')]({'plain':!![]});if(!_0x82e2ae)throw new Error(_0x487c('0x52'));if(_0x82e2ae[_0x487c('0x53')]===_0x487c('0x51')){var _0x5b12eb=_0x59add3['get']({'plain':!![]});var _0x12c191=_0x487c('0x54');return db[_0x487c('0x55')]['find']({'where':{'name':_0x12c191,'userProfileId':_0x82e2ae[_0x487c('0x56')]},'raw':!![]})[_0x487c('0x2e')](function(_0x55c9c8){if(_0x55c9c8&&_0x55c9c8[_0x487c('0x57')]===0x0){return db[_0x487c('0x58')][_0x487c('0x4f')]({'name':_0x5b12eb[_0x487c('0x31')],'resourceId':_0x5b12eb['id'],'type':_0x55c9c8[_0x487c('0x31')],'sectionId':_0x55c9c8['id']},{})[_0x487c('0x2e')](function(){return _0x59add3;});}else{return _0x59add3;}})[_0x487c('0x4c')](function(_0x9a1e4a){logger[_0x487c('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x9a1e4a);throw _0x9a1e4a;});}return _0x59add3;})[_0x487c('0x2e')](respondWithResult(_0x178531,0xc9))[_0x487c('0x4c')](handleError(_0x178531,null));};exports[_0x487c('0x2d')]=function(_0x26f3f7,_0x226124){if(_0x26f3f7[_0x487c('0x50')]['id']){delete _0x26f3f7[_0x487c('0x50')]['id'];}return db[_0x487c('0x35')][_0x487c('0x4e')]({'where':{'id':_0x26f3f7[_0x487c('0x59')]['id']}})['then'](handleEntityNotFound(_0x226124,null))[_0x487c('0x2e')](saveUpdates(_0x26f3f7[_0x487c('0x50')],null))[_0x487c('0x2e')](respondWithResult(_0x226124,null))[_0x487c('0x4c')](handleError(_0x226124,null));};exports[_0x487c('0x5a')]=function(_0x3e6e7a,_0x29f3b2){return db[_0x487c('0x35')][_0x487c('0x4e')]({'where':{'id':_0x3e6e7a[_0x487c('0x59')]['id']}})[_0x487c('0x2e')](handleEntityNotFound(_0x29f3b2,null))['then'](removeEntity(_0x29f3b2,null))[_0x487c('0x4c')](handleError(_0x29f3b2,null));};exports['addUsers']=function(_0x27a905,_0xc851c9,_0x3baa59){return db[_0x487c('0x35')][_0x487c('0x4e')]({'where':{'id':_0x27a905[_0x487c('0x59')]['id']}})[_0x487c('0x2e')](handleEntityNotFound(_0xc851c9,null))['then'](function(_0x5834de){if(_0x5834de){return _0x5834de[_0x487c('0x5b')](_0x27a905[_0x487c('0x50')]['ids'],_[_0x487c('0x5c')](_0x27a905['body'],[_0x487c('0x5d'),'id'])||{});}})[_0x487c('0x2e')](respondWithResult(_0xc851c9,null))[_0x487c('0x4c')](handleError(_0xc851c9,null));};exports['removeUsers']=function(_0x4e26fc,_0x191ccb,_0x1b2d6f){return db[_0x487c('0x35')][_0x487c('0x4e')]({'where':{'id':_0x4e26fc['params']['id']}})[_0x487c('0x2e')](handleEntityNotFound(_0x191ccb,null))[_0x487c('0x2e')](function(_0x1bef1f){if(_0x1bef1f){return _0x1bef1f[_0x487c('0x5e')](_0x4e26fc[_0x487c('0x39')][_0x487c('0x5d')])[_0x487c('0x2e')](function(){if(_[_0x487c('0x5f')](_0x4e26fc[_0x487c('0x39')][_0x487c('0x5d')])){for(var _0x30546e=0x0;_0x30546e<_0x4e26fc['query']['ids'][_0x487c('0x3d')];_0x30546e+=0x1){socket[_0x487c('0x60')](_0x487c('0x61'),{'UserId':Number(_0x4e26fc[_0x487c('0x39')][_0x487c('0x5d')][_0x30546e]),'SquareProjectId':Number(_0x4e26fc[_0x487c('0x59')]['id'])});}}else{socket[_0x487c('0x60')](_0x487c('0x61'),{'UserId':Number(_0x4e26fc[_0x487c('0x39')][_0x487c('0x5d')]),'SquareProjectId':Number(_0x4e26fc[_0x487c('0x59')]['id'])});}});}})[_0x487c('0x2e')](respondWithStatusCode(_0x191ccb,null))[_0x487c('0x4c')](handleError(_0x191ccb,null));};exports['getUsers']=function(_0x47f746,_0x30ad00,_0x14626f){var _0x25150d={};var _0x441006={};var _0x53ddec;var _0x3f7783;return db[_0x487c('0x35')]['findOne']({'where':{'id':_0x47f746[_0x487c('0x59')]['id']}})[_0x487c('0x2e')](handleEntityNotFound(_0x30ad00,null))[_0x487c('0x2e')](function(_0x359e95){if(_0x359e95){_0x53ddec=_0x359e95;_0x441006[_0x487c('0x38')]=_[_0x487c('0x3a')](db[_0x487c('0x62')][_0x487c('0x36')]);_0x441006[_0x487c('0x39')]=_[_0x487c('0x3a')](_0x47f746['query']);_0x441006['filters']=_[_0x487c('0x3c')](_0x441006['model'],_0x441006[_0x487c('0x39')]);_0x25150d['attributes']=_[_0x487c('0x3c')](_0x441006[_0x487c('0x38')],qs[_0x487c('0x63')](_0x47f746[_0x487c('0x39')][_0x487c('0x63')]));_0x25150d[_0x487c('0x3b')]=_0x25150d[_0x487c('0x3b')][_0x487c('0x3d')]?_0x25150d[_0x487c('0x3b')]:_0x441006[_0x487c('0x38')];_0x25150d[_0x487c('0x40')]=qs['sort'](_0x47f746[_0x487c('0x39')]['sort']);_0x25150d[_0x487c('0x42')]=qs['filters'](_['pick'](_0x47f746['query'],_0x441006['filters']));if(_0x47f746[_0x487c('0x39')]['filter']){_0x25150d[_0x487c('0x42')]=_[_0x487c('0x46')](_0x25150d[_0x487c('0x42')],{'$or':_[_0x487c('0x34')](_0x25150d[_0x487c('0x3b')],function(_0x38294e){var _0x49e382={};_0x49e382[_0x38294e]={'$like':'%'+_0x47f746[_0x487c('0x39')][_0x487c('0x45')]+'%'};return _0x49e382;})});}_0x25150d=_[_0x487c('0x46')]({},_0x25150d,_0x47f746[_0x487c('0x49')]);return _0x53ddec[_0x487c('0x64')](_0x25150d);}})[_0x487c('0x2e')](function(_0x4d8854){if(_0x4d8854){_0x3f7783=_0x4d8854[_0x487c('0x3d')];if(!_0x47f746[_0x487c('0x39')]['hasOwnProperty'](_0x487c('0x3f'))){_0x25150d[_0x487c('0x26')]=qs[_0x487c('0x26')](_0x47f746['query'][_0x487c('0x26')]);_0x25150d['offset']=qs[_0x487c('0x24')](_0x47f746['query'][_0x487c('0x24')]);}return _0x53ddec['getUsers'](_0x25150d);}})[_0x487c('0x2e')](function(_0x5d50e2){if(_0x5d50e2){return _0x5d50e2?{'count':_0x3f7783,'rows':_0x5d50e2}:null;}})[_0x487c('0x2e')](respondWithResult(_0x30ad00,null))['catch'](handleError(_0x30ad00,null));};
\ No newline at end of file
+var _0xc4fb=['find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','addUsers','ids','omit','removeUsers','isArray','emit','userSquareProject:remove','getUsers','findOne','User','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','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/license/util','../../mysqldb','defaults','redis','localhost','register','sendStatus','status','offset','limit','count','Content-Range','json','apply','reject','save','update','then','get','SquareProjects','UserProfileResource','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch','show','keys','include'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xc4fb,0xd8));var _0xbc4f=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xc4fb[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0xbc4f('0x0'));var rimraf=require(_0xbc4f('0x1'));var zipdir=require(_0xbc4f('0x2'));var jsonpatch=require(_0xbc4f('0x3'));var rp=require(_0xbc4f('0x4'));var moment=require('moment');var BPromise=require(_0xbc4f('0x5'));var Mustache=require(_0xbc4f('0x6'));var util=require('util');var path=require(_0xbc4f('0x7'));var sox=require(_0xbc4f('0x8'));var csv=require(_0xbc4f('0x9'));var ejs=require(_0xbc4f('0xa'));var fs=require('fs');var fs_extra=require(_0xbc4f('0xb'));var _=require(_0xbc4f('0xc'));var squel=require(_0xbc4f('0xd'));var crypto=require(_0xbc4f('0xe'));var jsforce=require(_0xbc4f('0xf'));var deskjs=require(_0xbc4f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xbc4f('0x11'));var Papa=require(_0xbc4f('0x12'));var Redis=require(_0xbc4f('0x13'));var authService=require(_0xbc4f('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbc4f('0x15'));var logger=require(_0xbc4f('0x16'))(_0xbc4f('0x17'));var utils=require(_0xbc4f('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xbc4f('0x19'));var db=require(_0xbc4f('0x1a'))['db'];config['redis']=_[_0xbc4f('0x1b')](config[_0xbc4f('0x1c')],{'host':_0xbc4f('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbc4f('0x1c')]));require('./squareProject.socket')[_0xbc4f('0x1e')](socket);function respondWithStatusCode(_0x498491,_0x3868c7){_0x3868c7=_0x3868c7||0xcc;return function(_0x534c73){if(_0x534c73){return _0x498491[_0xbc4f('0x1f')](_0x3868c7);}return _0x498491[_0xbc4f('0x20')](_0x3868c7)['end']();};}function respondWithResult(_0x1429ed,_0x7e04a1){_0x7e04a1=_0x7e04a1||0xc8;return function(_0x1d7521){if(_0x1d7521){return _0x1429ed[_0xbc4f('0x20')](_0x7e04a1)['json'](_0x1d7521);}};}function respondWithFilteredResult(_0x2b42e6,_0x56cd75){return function(_0x300016){if(_0x300016){var _0xec28ed=typeof _0x56cd75[_0xbc4f('0x21')]==='undefined'&&typeof _0x56cd75[_0xbc4f('0x22')]==='undefined';var _0x5af1fc=_0x300016[_0xbc4f('0x23')];var _0x510b28=_0xec28ed?0x0:_0x56cd75[_0xbc4f('0x21')];var _0x8753fd=_0xec28ed?_0x300016[_0xbc4f('0x23')]:_0x56cd75[_0xbc4f('0x21')]+_0x56cd75[_0xbc4f('0x22')];var _0x531545;if(_0x8753fd>=_0x5af1fc){_0x8753fd=_0x5af1fc;_0x531545=0xc8;}else{_0x531545=0xce;}_0x2b42e6['status'](_0x531545);return _0x2b42e6['set'](_0xbc4f('0x24'),_0x510b28+'-'+_0x8753fd+'/'+_0x5af1fc)[_0xbc4f('0x25')](_0x300016);}return null;};}function patchUpdates(_0x528608){return function(_0x5e8db5){try{jsonpatch[_0xbc4f('0x26')](_0x5e8db5,_0x528608,!![]);}catch(_0x4bc987){return BPromise[_0xbc4f('0x27')](_0x4bc987);}return _0x5e8db5[_0xbc4f('0x28')]();};}function saveUpdates(_0xc8ba2,_0x4e53c7){return function(_0x28b2bc){if(_0x28b2bc){return _0x28b2bc[_0xbc4f('0x29')](_0xc8ba2)[_0xbc4f('0x2a')](function(_0x4be1cb){return _0x4be1cb;});}return null;};}function removeEntity(_0x42a25e,_0x5c6487){return function(_0x2c4787){if(_0x2c4787){return _0x2c4787['destroy']()['then'](function(){var _0x95a679=_0x2c4787[_0xbc4f('0x2b')]({'plain':!![]});var _0x49053c=_0xbc4f('0x2c');return db[_0xbc4f('0x2d')]['destroy']({'where':{'type':_0x49053c,'resourceId':_0x95a679['id']}})[_0xbc4f('0x2a')](function(){return _0x2c4787;});})[_0xbc4f('0x2a')](function(){_0x42a25e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e584e,_0x3ecbee){return function(_0x5eda4c){if(!_0x5eda4c){_0x2e584e[_0xbc4f('0x1f')](0x194);}return _0x5eda4c;};}function handleError(_0x2f6cc8,_0x2a421e){_0x2a421e=_0x2a421e||0x1f4;return function(_0x22ed01){logger[_0xbc4f('0x2e')](_0x22ed01[_0xbc4f('0x2f')]);if(_0x22ed01[_0xbc4f('0x30')]){delete _0x22ed01['name'];}_0x2f6cc8[_0xbc4f('0x20')](_0x2a421e)[_0xbc4f('0x31')](_0x22ed01);};}exports[_0xbc4f('0x32')]=function(_0x7ec6f,_0x2fbf31){var _0xe9f333={},_0x3c9ccf={},_0x5b1f6b={'count':0x0,'rows':[]};var _0x453ca9=_[_0xbc4f('0x33')](db[_0xbc4f('0x34')][_0xbc4f('0x35')],function(_0x2d8216){return{'name':_0x2d8216[_0xbc4f('0x36')],'type':_0x2d8216[_0xbc4f('0x37')]['key']};});_0x3c9ccf[_0xbc4f('0x38')]=_[_0xbc4f('0x33')](_0x453ca9,_0xbc4f('0x30'));_0x3c9ccf[_0xbc4f('0x39')]=_['keys'](_0x7ec6f['query']);_0x3c9ccf[_0xbc4f('0x3a')]=_['intersection'](_0x3c9ccf[_0xbc4f('0x38')],_0x3c9ccf[_0xbc4f('0x39')]);_0xe9f333['attributes']=_[_0xbc4f('0x3b')](_0x3c9ccf[_0xbc4f('0x38')],qs[_0xbc4f('0x3c')](_0x7ec6f['query'][_0xbc4f('0x3c')]));_0xe9f333[_0xbc4f('0x3d')]=_0xe9f333[_0xbc4f('0x3d')][_0xbc4f('0x3e')]?_0xe9f333['attributes']:_0x3c9ccf['model'];if(!_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x3f')](_0xbc4f('0x40'))){_0xe9f333[_0xbc4f('0x22')]=qs[_0xbc4f('0x22')](_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x22')]);_0xe9f333[_0xbc4f('0x21')]=qs[_0xbc4f('0x21')](_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x21')]);}_0xe9f333['order']=qs[_0xbc4f('0x41')](_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x41')]);_0xe9f333['where']=qs[_0xbc4f('0x3a')](_[_0xbc4f('0x42')](_0x7ec6f[_0xbc4f('0x39')],_0x3c9ccf[_0xbc4f('0x3a')]),_0x453ca9);if(_0x7ec6f['query'][_0xbc4f('0x43')]){_0xe9f333[_0xbc4f('0x44')]=_[_0xbc4f('0x45')](_0xe9f333['where'],{'$or':_[_0xbc4f('0x33')](_0x453ca9,function(_0x1b05e2){if(_0x1b05e2[_0xbc4f('0x37')]!==_0xbc4f('0x46')){var _0x1442de={};_0x1442de[_0x1b05e2['name']]={'$like':'%'+_0x7ec6f[_0xbc4f('0x39')][_0xbc4f('0x43')]+'%'};return _0x1442de;}})});}_0xe9f333=_['merge']({},_0xe9f333,_0x7ec6f[_0xbc4f('0x47')]);var _0x4901ac={'where':_0xe9f333['where']};return db[_0xbc4f('0x34')]['count'](_0x4901ac)[_0xbc4f('0x2a')](function(_0x1e3a4e){_0x5b1f6b[_0xbc4f('0x23')]=_0x1e3a4e;if(_0x7ec6f['query'][_0xbc4f('0x48')]){_0xe9f333['include']=[{'all':!![]}];}return db[_0xbc4f('0x34')][_0xbc4f('0x49')](_0xe9f333);})['then'](function(_0x5b3003){_0x5b1f6b['rows']=_0x5b3003;return _0x5b1f6b;})['then'](respondWithFilteredResult(_0x2fbf31,_0xe9f333))[_0xbc4f('0x4a')](handleError(_0x2fbf31,null));};exports[_0xbc4f('0x4b')]=function(_0x56d30e,_0x123ea1){var _0x3fcc72={'raw':![],'where':{'id':_0x56d30e['params']['id']}},_0x35fa6d={};_0x35fa6d['model']=_[_0xbc4f('0x4c')](db[_0xbc4f('0x34')][_0xbc4f('0x35')]);_0x35fa6d[_0xbc4f('0x39')]=_[_0xbc4f('0x4c')](_0x56d30e['query']);_0x35fa6d[_0xbc4f('0x3a')]=_[_0xbc4f('0x3b')](_0x35fa6d[_0xbc4f('0x38')],_0x35fa6d[_0xbc4f('0x39')]);_0x3fcc72['attributes']=_[_0xbc4f('0x3b')](_0x35fa6d[_0xbc4f('0x38')],qs['fields'](_0x56d30e[_0xbc4f('0x39')][_0xbc4f('0x3c')]));_0x3fcc72[_0xbc4f('0x3d')]=_0x3fcc72['attributes'][_0xbc4f('0x3e')]?_0x3fcc72['attributes']:_0x35fa6d[_0xbc4f('0x38')];if(_0x56d30e['query'][_0xbc4f('0x48')]){_0x3fcc72[_0xbc4f('0x4d')]=[{'all':!![]}];}_0x3fcc72=_[_0xbc4f('0x45')]({},_0x3fcc72,_0x56d30e[_0xbc4f('0x47')]);return db[_0xbc4f('0x34')][_0xbc4f('0x4e')](_0x3fcc72)['then'](handleEntityNotFound(_0x123ea1,null))[_0xbc4f('0x2a')](respondWithResult(_0x123ea1,null))[_0xbc4f('0x4a')](handleError(_0x123ea1,null));};exports['create']=function(_0x4039e5,_0x4627d0){return db[_0xbc4f('0x34')]['create'](_0x4039e5[_0xbc4f('0x4f')],{})['then'](function(_0x575a11){var _0x423217=_0x4039e5[_0xbc4f('0x50')][_0xbc4f('0x2b')]({'plain':!![]});if(!_0x423217)throw new Error(_0xbc4f('0x51'));if(_0x423217['role']===_0xbc4f('0x50')){var _0x4a619c=_0x575a11[_0xbc4f('0x2b')]({'plain':!![]});var _0xf91be2=_0xbc4f('0x2c');return db['UserProfileSection']['find']({'where':{'name':_0xf91be2,'userProfileId':_0x423217[_0xbc4f('0x52')]},'raw':!![]})[_0xbc4f('0x2a')](function(_0x54f984){if(_0x54f984&&_0x54f984[_0xbc4f('0x53')]===0x0){return db[_0xbc4f('0x2d')][_0xbc4f('0x54')]({'name':_0x4a619c[_0xbc4f('0x30')],'resourceId':_0x4a619c['id'],'type':_0x54f984['name'],'sectionId':_0x54f984['id']},{})['then'](function(){return _0x575a11;});}else{return _0x575a11;}})['catch'](function(_0x46c57c){logger['error'](_0xbc4f('0x55'),_0x46c57c);throw _0x46c57c;});}return _0x575a11;})['then'](respondWithResult(_0x4627d0,0xc9))[_0xbc4f('0x4a')](handleError(_0x4627d0,null));};exports['update']=function(_0x99948,_0x5a4c7e){if(_0x99948[_0xbc4f('0x4f')]['id']){delete _0x99948[_0xbc4f('0x4f')]['id'];}return db[_0xbc4f('0x34')]['find']({'where':{'id':_0x99948[_0xbc4f('0x56')]['id']}})['then'](handleEntityNotFound(_0x5a4c7e,null))['then'](saveUpdates(_0x99948[_0xbc4f('0x4f')],null))['then'](respondWithResult(_0x5a4c7e,null))[_0xbc4f('0x4a')](handleError(_0x5a4c7e,null));};exports[_0xbc4f('0x57')]=function(_0x41d401,_0x10cdbe){return db[_0xbc4f('0x34')][_0xbc4f('0x4e')]({'where':{'id':_0x41d401[_0xbc4f('0x56')]['id']}})[_0xbc4f('0x2a')](handleEntityNotFound(_0x10cdbe,null))[_0xbc4f('0x2a')](removeEntity(_0x10cdbe,null))[_0xbc4f('0x4a')](handleError(_0x10cdbe,null));};exports[_0xbc4f('0x58')]=function(_0x196bfa,_0x31c651,_0x5934b9){return db['SquareProject'][_0xbc4f('0x4e')]({'where':{'id':_0x196bfa[_0xbc4f('0x56')]['id']}})[_0xbc4f('0x2a')](handleEntityNotFound(_0x31c651,null))[_0xbc4f('0x2a')](function(_0x5a0c84){if(_0x5a0c84){return _0x5a0c84['addUsers'](_0x196bfa[_0xbc4f('0x4f')][_0xbc4f('0x59')],_[_0xbc4f('0x5a')](_0x196bfa[_0xbc4f('0x4f')],[_0xbc4f('0x59'),'id'])||{});}})[_0xbc4f('0x2a')](respondWithResult(_0x31c651,null))[_0xbc4f('0x4a')](handleError(_0x31c651,null));};exports[_0xbc4f('0x5b')]=function(_0x5302c7,_0x50de47,_0x2efd9b){return db[_0xbc4f('0x34')][_0xbc4f('0x4e')]({'where':{'id':_0x5302c7[_0xbc4f('0x56')]['id']}})['then'](handleEntityNotFound(_0x50de47,null))[_0xbc4f('0x2a')](function(_0x180fc5){if(_0x180fc5){return _0x180fc5[_0xbc4f('0x5b')](_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')])['then'](function(){if(_[_0xbc4f('0x5c')](_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')])){for(var _0x2e3909=0x0;_0x2e3909<_0x5302c7[_0xbc4f('0x39')]['ids'][_0xbc4f('0x3e')];_0x2e3909+=0x1){socket[_0xbc4f('0x5d')](_0xbc4f('0x5e'),{'UserId':Number(_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')][_0x2e3909]),'SquareProjectId':Number(_0x5302c7[_0xbc4f('0x56')]['id'])});}}else{socket[_0xbc4f('0x5d')]('userSquareProject:remove',{'UserId':Number(_0x5302c7[_0xbc4f('0x39')][_0xbc4f('0x59')]),'SquareProjectId':Number(_0x5302c7[_0xbc4f('0x56')]['id'])});}});}})[_0xbc4f('0x2a')](respondWithStatusCode(_0x50de47,null))[_0xbc4f('0x4a')](handleError(_0x50de47,null));};exports[_0xbc4f('0x5f')]=function(_0x2355dd,_0x2d152f,_0x150dc2){var _0x2141d2={};var _0x41747d={};var _0x5eba70;var _0x516e9d;return db[_0xbc4f('0x34')][_0xbc4f('0x60')]({'where':{'id':_0x2355dd[_0xbc4f('0x56')]['id']}})[_0xbc4f('0x2a')](handleEntityNotFound(_0x2d152f,null))[_0xbc4f('0x2a')](function(_0x160602){if(_0x160602){_0x5eba70=_0x160602;_0x41747d[_0xbc4f('0x38')]=_['keys'](db[_0xbc4f('0x61')]['rawAttributes']);_0x41747d[_0xbc4f('0x39')]=_[_0xbc4f('0x4c')](_0x2355dd[_0xbc4f('0x39')]);_0x41747d['filters']=_[_0xbc4f('0x3b')](_0x41747d[_0xbc4f('0x38')],_0x41747d[_0xbc4f('0x39')]);_0x2141d2[_0xbc4f('0x3d')]=_[_0xbc4f('0x3b')](_0x41747d[_0xbc4f('0x38')],qs[_0xbc4f('0x3c')](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x3c')]));_0x2141d2[_0xbc4f('0x3d')]=_0x2141d2[_0xbc4f('0x3d')]['length']?_0x2141d2[_0xbc4f('0x3d')]:_0x41747d[_0xbc4f('0x38')];_0x2141d2['order']=qs[_0xbc4f('0x41')](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x41')]);_0x2141d2[_0xbc4f('0x44')]=qs[_0xbc4f('0x3a')](_[_0xbc4f('0x42')](_0x2355dd[_0xbc4f('0x39')],_0x41747d[_0xbc4f('0x3a')]));if(_0x2355dd['query'][_0xbc4f('0x43')]){_0x2141d2[_0xbc4f('0x44')]=_[_0xbc4f('0x45')](_0x2141d2[_0xbc4f('0x44')],{'$or':_[_0xbc4f('0x33')](_0x2141d2['attributes'],function(_0x272ad7){var _0x4984db={};_0x4984db[_0x272ad7]={'$like':'%'+_0x2355dd[_0xbc4f('0x39')]['filter']+'%'};return _0x4984db;})});}_0x2141d2=_[_0xbc4f('0x45')]({},_0x2141d2,_0x2355dd[_0xbc4f('0x47')]);return _0x5eba70[_0xbc4f('0x5f')](_0x2141d2);}})[_0xbc4f('0x2a')](function(_0x59f852){if(_0x59f852){_0x516e9d=_0x59f852[_0xbc4f('0x3e')];if(!_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x3f')](_0xbc4f('0x40'))){_0x2141d2[_0xbc4f('0x22')]=qs['limit'](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x22')]);_0x2141d2[_0xbc4f('0x21')]=qs[_0xbc4f('0x21')](_0x2355dd[_0xbc4f('0x39')][_0xbc4f('0x21')]);}return _0x5eba70['getUsers'](_0x2141d2);}})[_0xbc4f('0x2a')](function(_0x153d24){if(_0x153d24){return _0x153d24?{'count':_0x516e9d,'rows':_0x153d24}:null;}})[_0xbc4f('0x2a')](respondWithResult(_0x2d152f,null))[_0xbc4f('0x4a')](handleError(_0x2d152f,null));};
\ No newline at end of file
index a7a81fa..3ea37fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fc4=['../../mysqldb','SquareProject','save','update','emit','hasOwnProperty','exports','events'];(function(_0x3295c0,_0x297363){var _0x344793=function(_0x4ebe47){while(--_0x4ebe47){_0x3295c0['push'](_0x3295c0['shift']());}};_0x344793(++_0x297363);}(_0x9fc4,0x117));var _0x49fc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9fc4[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x49fc('0x0'));var SquareProject=require(_0x49fc('0x1'))['db'][_0x49fc('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x49fc('0x3'),'afterUpdate':_0x49fc('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5496be){return function(_0x18c55b,_0x35df52,_0x51365d){SquareProjectEvents[_0x49fc('0x5')](_0x5496be+':'+_0x18c55b['id'],_0x18c55b);SquareProjectEvents[_0x49fc('0x5')](_0x5496be,_0x18c55b);_0x51365d(null);};}for(var e in events){if(events[_0x49fc('0x6')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0x49fc('0x7')]=SquareProjectEvents;
\ No newline at end of file
+var _0x42a4=['hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','save','remove','emit'];(function(_0x368ede,_0x1a4045){var _0x5031ac=function(_0x5c79ad){while(--_0x5c79ad){_0x368ede['push'](_0x368ede['shift']());}};_0x5031ac(++_0x1a4045);}(_0x42a4,0xb7));var _0x442a=function(_0x115d5b,_0x26aff2){_0x115d5b=_0x115d5b-0x0;var _0x6cfc50=_0x42a4[_0x115d5b];return _0x6cfc50;};'use strict';var EventEmitter=require(_0x442a('0x0'));var SquareProject=require(_0x442a('0x1'))['db'][_0x442a('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x442a('0x3'),'afterUpdate':'update','afterDestroy':_0x442a('0x4')};function emitEvent(_0x2ff6be){return function(_0x56d15a,_0x39c6cf,_0x45833a){SquareProjectEvents[_0x442a('0x5')](_0x2ff6be+':'+_0x56d15a['id'],_0x56d15a);SquareProjectEvents[_0x442a('0x5')](_0x2ff6be,_0x56d15a);_0x45833a(null);};}for(var e in events){if(events[_0x442a('0x6')](e)){var event=events[e];SquareProject[_0x442a('0x7')](e,emitEvent(event));}}module[_0x442a('0x8')]=SquareProjectEvents;
\ No newline at end of file
index 6322511..03614d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ec8=['production','publishedAt','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./squareProject.attributes','exports','SquareProject','changed','preproduction','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4adfa4,_0x121c5a){var _0x14cec1=function(_0x4fd975){while(--_0x4fd975){_0x4adfa4['push'](_0x4adfa4['shift']());}};_0x14cec1(++_0x121c5a);}(_0x5ec8,0x134));var _0x85ec=function(_0x18f152,_0x41585a){_0x18f152=_0x18f152-0x0;var _0xa10b34=_0x5ec8[_0x18f152];return _0xa10b34;};'use strict';var _=require(_0x85ec('0x0'));var util=require(_0x85ec('0x1'));var logger=require(_0x85ec('0x2'))('api');var moment=require('moment');var BPromise=require(_0x85ec('0x3'));var rp=require(_0x85ec('0x4'));var fs=require('fs');var path=require(_0x85ec('0x5'));var rimraf=require(_0x85ec('0x6'));var config=require(_0x85ec('0x7'));var attributes=require(_0x85ec('0x8'));module[_0x85ec('0x9')]=function(_0x559f93,_0x3b98a1){return _0x559f93['define'](_0x85ec('0xa'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x41a7b4,_0x1f8d0b,_0x62bd0a){if(_0x41a7b4[_0x85ec('0xb')](_0x85ec('0xc'))){_0x41a7b4['savedAt']=moment()[_0x85ec('0xd')](_0x85ec('0xe'));}if(_0x41a7b4[_0x85ec('0xb')](_0x85ec('0xf'))){_0x41a7b4[_0x85ec('0x10')]=moment()[_0x85ec('0xd')](_0x85ec('0xe'));}_0x62bd0a(null,_0x41a7b4);}}});};
\ No newline at end of file
+var _0xbefd=['moment','bluebird','request-promise','../../config/environment','exports','define','SquareProject','square_projects','format','YYYY-MM-DD\x20HH:mm:ss','production','../../config/logger','api'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xbefd,0x1c5));var _0xdbef=function(_0x500e8d,_0xaba680){_0x500e8d=_0x500e8d-0x0;var _0x3c29a2=_0xbefd[_0x500e8d];return _0x3c29a2;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xdbef('0x0'))(_0xdbef('0x1'));var moment=require(_0xdbef('0x2'));var BPromise=require(_0xdbef('0x3'));var rp=require(_0xdbef('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdbef('0x5'));var attributes=require('./squareProject.attributes');module[_0xdbef('0x6')]=function(_0x4bb772,_0x448b4c){return _0x4bb772[_0xdbef('0x7')](_0xdbef('0x8'),attributes,{'tableName':_0xdbef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x103d01,_0x571d41,_0x218301){if(_0x103d01['changed']('preproduction')){_0x103d01['savedAt']=moment()[_0xdbef('0xa')](_0xdbef('0xb'));}if(_0x103d01['changed'](_0xdbef('0xc'))){_0x103d01['publishedAt']=moment()['format'](_0xdbef('0xb'));}_0x218301(null,_0x103d01);}}});};
\ No newline at end of file
index 3a60b3b..3a15d2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54cb=['map','model','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','redis','socket.io-emitter','./squareProject.socket','register','request','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowSquareProject','find','options','raw','where','attributes','include'];(function(_0xc420cf,_0x11dd68){var _0xac9f8a=function(_0x36fd7d){while(--_0x36fd7d){_0xc420cf['push'](_0xc420cf['shift']());}};_0xac9f8a(++_0x11dd68);}(_0x54cb,0x106));var _0xb54c=function(_0xf3e31a,_0x3b9ea3){_0xf3e31a=_0xf3e31a-0x0;var _0x18333a=_0x54cb[_0xf3e31a];return _0x18333a;};'use strict';var _=require('lodash');var util=require(_0xb54c('0x0'));var moment=require(_0xb54c('0x1'));var BPromise=require(_0xb54c('0x2'));var rs=require(_0xb54c('0x3'));var fs=require('fs');var Redis=require(_0xb54c('0x4'));var db=require(_0xb54c('0x5'))['db'];var utils=require(_0xb54c('0x6'));var logger=require(_0xb54c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb54c('0x8'));var client=jayson[_0xb54c('0x9')][_0xb54c('0xa')]({'port':0x232a});config[_0xb54c('0xb')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xb54c('0xc'))(new Redis(config['redis']));require(_0xb54c('0xd'))[_0xb54c('0xe')](socket);function respondWithRpcPromise(_0x3e4a9f,_0xa4e00d,_0x289b90){return new BPromise(function(_0x41dde1,_0x4c593f){return client[_0xb54c('0xf')](_0x3e4a9f,_0x289b90)[_0xb54c('0x10')](function(_0x1447ec){logger[_0xb54c('0x11')](_0xb54c('0x12'),_0xa4e00d,_0xb54c('0x13'));logger[_0xb54c('0x14')](_0xb54c('0x15'),_0xa4e00d,_0xb54c('0x13'),JSON['stringify'](_0x1447ec));if(_0x1447ec['error']){if(_0x1447ec[_0xb54c('0x16')][_0xb54c('0x17')]===0x1f4){logger[_0xb54c('0x16')]('SquareProject,\x20%s,\x20%s',_0xa4e00d,_0x1447ec[_0xb54c('0x16')][_0xb54c('0x18')]);return _0x4c593f(_0x1447ec[_0xb54c('0x16')][_0xb54c('0x18')]);}logger['error'](_0xb54c('0x12'),_0xa4e00d,_0x1447ec[_0xb54c('0x16')][_0xb54c('0x18')]);return _0x41dde1(_0x1447ec[_0xb54c('0x16')][_0xb54c('0x18')]);}else{logger[_0xb54c('0x11')]('SquareProject,\x20%s,\x20%s',_0xa4e00d,'request\x20sent');_0x41dde1(_0x1447ec[_0xb54c('0x19')][_0xb54c('0x18')]);}})[_0xb54c('0x1a')](function(_0x33377a){logger[_0xb54c('0x16')](_0xb54c('0x12'),_0xa4e00d,_0x33377a);_0x4c593f(_0x33377a);});});}exports[_0xb54c('0x1b')]=function(_0x26d57d){var _0x4138cc=this;return new Promise(function(_0xfff9aa,_0x3a0deb){return db['SquareProject'][_0xb54c('0x1c')]({'raw':_0x26d57d[_0xb54c('0x1d')]?_0x26d57d[_0xb54c('0x1d')][_0xb54c('0x1e')]===undefined?!![]:![]:!![],'where':_0x26d57d[_0xb54c('0x1d')]?_0x26d57d['options'][_0xb54c('0x1f')]||null:null,'attributes':_0x26d57d['options']?_0x26d57d[_0xb54c('0x1d')][_0xb54c('0x20')]||null:null,'include':_0x26d57d['options']?_0x26d57d[_0xb54c('0x1d')][_0xb54c('0x21')]?_[_0xb54c('0x22')](_0x26d57d['options'][_0xb54c('0x21')],function(_0x596579){return{'model':db[_0x596579[_0xb54c('0x23')]],'as':_0x596579['as'],'attributes':_0x596579[_0xb54c('0x20')],'include':_0x596579[_0xb54c('0x21')]?_[_0xb54c('0x22')](_0x596579['include'],function(_0x2e8aa2){return{'model':db[_0x2e8aa2[_0xb54c('0x23')]],'as':_0x2e8aa2['as'],'attributes':_0x2e8aa2[_0xb54c('0x20')],'include':_0x2e8aa2['include']?_['map'](_0x2e8aa2[_0xb54c('0x21')],function(_0x1e4f48){return{'model':db[_0x1e4f48[_0xb54c('0x23')]],'as':_0x1e4f48['as'],'attributes':_0x1e4f48['attributes']};}):[]};}):[]};}):[]:[]})[_0xb54c('0x10')](function(_0x5f59aa){logger['info'](_0xb54c('0x1b'),_0x26d57d);logger[_0xb54c('0x14')](_0xb54c('0x1b'),_0x26d57d,JSON[_0xb54c('0x24')](_0x5f59aa));_0xfff9aa(_0x5f59aa);})[_0xb54c('0x1a')](function(_0x30f234){logger['error'](_0xb54c('0x1b'),_0x30f234[_0xb54c('0x18')],_0x26d57d);_0x3a0deb(_0x4138cc['error'](0x1f4,_0x30f234[_0xb54c('0x18')]));});});};
\ No newline at end of file
+var _0xe8c1=['rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./squareProject.socket','register','then','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','message','catch','SquareProject','find','options','raw','where','attributes','include','map','model','ShowSquareProject','stringify','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xe8c1,0x94));var _0x1e8c=function(_0x58db4e,_0x439d8d){_0x58db4e=_0x58db4e-0x0;var _0x40139a=_0xe8c1[_0x58db4e];return _0x40139a;};'use strict';var _=require(_0x1e8c('0x0'));var util=require(_0x1e8c('0x1'));var moment=require('moment');var BPromise=require(_0x1e8c('0x2'));var rs=require(_0x1e8c('0x3'));var fs=require('fs');var Redis=require(_0x1e8c('0x4'));var db=require(_0x1e8c('0x5'))['db'];var utils=require(_0x1e8c('0x6'));var logger=require(_0x1e8c('0x7'))(_0x1e8c('0x8'));var config=require(_0x1e8c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x1e8c('0xa')][_0x1e8c('0xb')]({'port':0x232a});config['redis']=_[_0x1e8c('0xc')](config['redis'],{'host':_0x1e8c('0xd'),'port':0x18eb});var socket=require(_0x1e8c('0xe'))(new Redis(config[_0x1e8c('0xf')]));require(_0x1e8c('0x10'))[_0x1e8c('0x11')](socket);function respondWithRpcPromise(_0x385208,_0x246e00,_0x2db1db){return new BPromise(function(_0x5dcf25,_0x402a79){return client['request'](_0x385208,_0x2db1db)[_0x1e8c('0x12')](function(_0x174e49){logger[_0x1e8c('0x13')](_0x1e8c('0x14'),_0x246e00,_0x1e8c('0x15'));logger[_0x1e8c('0x16')](_0x1e8c('0x17'),_0x246e00,_0x1e8c('0x15'),JSON['stringify'](_0x174e49));if(_0x174e49['error']){if(_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x19')]===0x1f4){logger['error'](_0x1e8c('0x14'),_0x246e00,_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x1a')]);return _0x402a79(_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x1a')]);}logger['error'](_0x1e8c('0x14'),_0x246e00,_0x174e49[_0x1e8c('0x18')]['message']);return _0x5dcf25(_0x174e49[_0x1e8c('0x18')][_0x1e8c('0x1a')]);}else{logger[_0x1e8c('0x13')]('SquareProject,\x20%s,\x20%s',_0x246e00,_0x1e8c('0x15'));_0x5dcf25(_0x174e49['result'][_0x1e8c('0x1a')]);}})[_0x1e8c('0x1b')](function(_0x4ba9b8){logger[_0x1e8c('0x18')](_0x1e8c('0x14'),_0x246e00,_0x4ba9b8);_0x402a79(_0x4ba9b8);});});}exports['ShowSquareProject']=function(_0x10187f){var _0x39c7a3=this;return new Promise(function(_0x4ac558,_0x4807c6){return db[_0x1e8c('0x1c')][_0x1e8c('0x1d')]({'raw':_0x10187f[_0x1e8c('0x1e')]?_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x1f')]===undefined?!![]:![]:!![],'where':_0x10187f[_0x1e8c('0x1e')]?_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x20')]||null:null,'attributes':_0x10187f[_0x1e8c('0x1e')]?_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x21')]||null:null,'include':_0x10187f[_0x1e8c('0x1e')]?_0x10187f['options'][_0x1e8c('0x22')]?_[_0x1e8c('0x23')](_0x10187f[_0x1e8c('0x1e')][_0x1e8c('0x22')],function(_0x5a9af8){return{'model':db[_0x5a9af8[_0x1e8c('0x24')]],'as':_0x5a9af8['as'],'attributes':_0x5a9af8[_0x1e8c('0x21')],'include':_0x5a9af8[_0x1e8c('0x22')]?_[_0x1e8c('0x23')](_0x5a9af8['include'],function(_0x4e05f5){return{'model':db[_0x4e05f5[_0x1e8c('0x24')]],'as':_0x4e05f5['as'],'attributes':_0x4e05f5['attributes'],'include':_0x4e05f5[_0x1e8c('0x22')]?_[_0x1e8c('0x23')](_0x4e05f5[_0x1e8c('0x22')],function(_0x411eae){return{'model':db[_0x411eae[_0x1e8c('0x24')]],'as':_0x411eae['as'],'attributes':_0x411eae[_0x1e8c('0x21')]};}):[]};}):[]};}):[]:[]})[_0x1e8c('0x12')](function(_0x4c87f0){logger['info'](_0x1e8c('0x25'),_0x10187f);logger[_0x1e8c('0x16')]('ShowSquareProject',_0x10187f,JSON[_0x1e8c('0x26')](_0x4c87f0));_0x4ac558(_0x4c87f0);})[_0x1e8c('0x1b')](function(_0x52a988){logger[_0x1e8c('0x18')](_0x1e8c('0x25'),_0x52a988[_0x1e8c('0x1a')],_0x10187f);_0x4807c6(_0x39c7a3[_0x1e8c('0x18')](0x1f4,_0x52a988[_0x1e8c('0x1a')]));});});};
\ No newline at end of file
index 74d0f7a..bf20792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa15=['removeListener','register','./squareProject.events','remove','update'];(function(_0x3e69ae,_0x366e8d){var _0x3d7f42=function(_0x5df093){while(--_0x5df093){_0x3e69ae['push'](_0x3e69ae['shift']());}};_0x3d7f42(++_0x366e8d);}(_0xfa15,0x1b0));var _0x5fa1=function(_0x2b2970,_0x2c72c1){_0x2b2970=_0x2b2970-0x0;var _0x981e4f=_0xfa15[_0x2b2970];return _0x981e4f;};'use strict';var SquareProjectEvents=require(_0x5fa1('0x0'));var events=['save',_0x5fa1('0x1'),_0x5fa1('0x2')];function createListener(_0x28fd7f,_0x39e62a){return function(_0x59b1d2){_0x39e62a['emit'](_0x28fd7f,_0x59b1d2);};}function removeListener(_0x410dc6,_0x2816f8){return function(){SquareProjectEvents[_0x5fa1('0x3')](_0x410dc6,_0x2816f8);};}exports[_0x5fa1('0x4')]=function(_0x1b1551){for(var _0x246173=0x0,_0x4da435=events['length'];_0x246173<_0x4da435;_0x246173++){var _0x4b6cae=events[_0x246173];var _0x2b752c=createListener('squareProject:'+_0x4b6cae,_0x1b1551);SquareProjectEvents['on'](_0x4b6cae,_0x2b752c);}};
\ No newline at end of file
+var _0x3387=['./squareProject.events','update','removeListener','register','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3387,0x1a9));var _0x7338=function(_0xd809fc,_0x5b2a23){_0xd809fc=_0xd809fc-0x0;var _0x16882f=_0x3387[_0xd809fc];return _0x16882f;};'use strict';var SquareProjectEvents=require(_0x7338('0x0'));var events=['save','remove',_0x7338('0x1')];function createListener(_0x35c2c3,_0x5426cc){return function(_0x16b73b){_0x5426cc['emit'](_0x35c2c3,_0x16b73b);};}function removeListener(_0x163d00,_0x16f29d){return function(){SquareProjectEvents[_0x7338('0x2')](_0x163d00,_0x16f29d);};}exports[_0x7338('0x3')]=function(_0x3afc81){for(var _0x8c7f0f=0x0,_0xd489f7=events[_0x7338('0x4')];_0x8c7f0f<_0xd489f7;_0x8c7f0f++){var _0x3dde77=events[_0x8c7f0f];var _0x1bf3c8=createListener('squareProject:'+_0x3dde77,_0x3afc81);SquareProjectEvents['on'](_0x3dde77,_0x1bf3c8);}};
\ No newline at end of file
index bf50b94..bc21925 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','get','show','download','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x268c3e,_0x4089c4){var _0x15fcf0=function(_0x3797d5){while(--_0x3797d5){_0x268c3e['push'](_0x268c3e['shift']());}};_0x15fcf0(++_0x4089c4);}(_0xabce,0x103));var _0xeabc=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xabce[_0x4e1d03];return _0x362d4b;};'use strict';var multer=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var path=require(_0xeabc('0x2'));var timeout=require(_0xeabc('0x3'));var express=require(_0xeabc('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeabc('0x5'));var interaction=require(_0xeabc('0x6'));var config=require(_0xeabc('0x7'));var controller=require('./squareRecording.controller');router['get']('/',auth[_0xeabc('0x8')](),controller['index']);router[_0xeabc('0x9')]('/:id',auth[_0xeabc('0x8')](),controller[_0xeabc('0xa')]);router[_0xeabc('0x9')]('/:id/download',auth[_0xeabc('0x8')](),controller[_0xeabc('0xb')]);router[_0xeabc('0xc')]('/',auth[_0xeabc('0x8')](),controller[_0xeabc('0xd')]);router[_0xeabc('0xe')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x10')]);router[_0xeabc('0x11')](_0xeabc('0xf'),auth[_0xeabc('0x8')](),controller[_0xeabc('0x12')]);module[_0xeabc('0x13')]=router;
\ No newline at end of file
+var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','/:id/download','download','create','put','delete'];(function(_0xef22ee,_0x134fab){var _0x13213c=function(_0x1394b4){while(--_0x1394b4){_0xef22ee['push'](_0xef22ee['shift']());}};_0x13213c(++_0x134fab);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0xc4aa[_0x1928c9];return _0x51b5fb;};'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['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
index 3034b23..5afc560 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9d=['VIRTUAL','savePath','lastIndexOf','sequelize','exports','STRING'];(function(_0x12fe5b,_0xe3dd66){var _0x6d518f=function(_0x376460){while(--_0x376460){_0x12fe5b['push'](_0x12fe5b['shift']());}};_0x6d518f(++_0xe3dd66);}(_0xac9d,0x14d));var _0xdac9=function(_0x1fb6e2,_0x3a22ce){_0x1fb6e2=_0x1fb6e2-0x0;var _0x354690=_0xac9d[_0x1fb6e2];return _0x354690;};'use strict';var Sequelize=require(_0xdac9('0x0'));module[_0xdac9('0x1')]={'uniqueid':{'type':Sequelize[_0xdac9('0x2')]},'callerid':{'type':Sequelize[_0xdac9('0x2')]},'calleridname':{'type':Sequelize[_0xdac9('0x2')]},'context':{'type':Sequelize[_0xdac9('0x2')]},'extension':{'type':Sequelize[_0xdac9('0x2')]},'priority':{'type':Sequelize[_0xdac9('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0xdac9('0x2')]},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0xdac9('0x2')]},'filename':{'type':Sequelize[_0xdac9('0x2')]},'savePath':{'type':Sequelize[_0xdac9('0x2')]},'format':{'type':Sequelize[_0xdac9('0x3')],'get':function(){var _0x1c78c5='';var _0x39f560=this['getDataValue'](_0xdac9('0x4'));if(_0x39f560){_0x1c78c5=_0x39f560['substring'](_0x39f560[_0xdac9('0x5')]('.'));}return _0x1c78c5;}}};
\ No newline at end of file
+var _0xa41a=['exports','STRING','getDataValue','substring','lastIndexOf','sequelize'];(function(_0x2e349b,_0x4e9072){var _0x5b4440=function(_0x476430){while(--_0x476430){_0x2e349b['push'](_0x2e349b['shift']());}};_0x5b4440(++_0x4e9072);}(_0xa41a,0x6b));var _0xaa41=function(_0x573d03,_0x17739b){_0x573d03=_0x573d03-0x0;var _0xdabf63=_0xa41a[_0x573d03];return _0xdabf63;};'use strict';var Sequelize=require(_0xaa41('0x0'));module[_0xaa41('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xaa41('0x2')]},'calleridname':{'type':Sequelize[_0xaa41('0x2')]},'context':{'type':Sequelize[_0xaa41('0x2')]},'extension':{'type':Sequelize[_0xaa41('0x2')]},'priority':{'type':Sequelize[_0xaa41('0x2')]},'accountcode':{'type':Sequelize[_0xaa41('0x2')]},'dnid':{'type':Sequelize[_0xaa41('0x2')]},'projectName':{'type':Sequelize[_0xaa41('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0xaa41('0x2')]},'savePath':{'type':Sequelize[_0xaa41('0x2')]},'format':{'type':Sequelize['VIRTUAL'],'get':function(){var _0x5b1fff='';var _0x179545=this[_0xaa41('0x3')]('savePath');if(_0x179545){_0x5b1fff=_0x179545[_0xaa41('0x4')](_0x179545[_0xaa41('0x5')]('.'));}return _0x5b1fff;}}};
\ No newline at end of file
index 873e663..6e4e73c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0db=['SquareRecording\x20not\x20found','destroy','isNil','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','apply','update','then','error','stack','name','send','index','map','SquareRecording','key','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','params','length','find','create','body','uniqueid','savePath','filename','format','decryptFile','secrets','recording','existsSync','Sequelize','ValidationError','download','unlink','message'];(function(_0x8b0e2c,_0x4d0807){var _0x74c7bf=function(_0x8d4d0a){while(--_0x8d4d0a){_0x8b0e2c['push'](_0x8b0e2c['shift']());}};_0x74c7bf(++_0x4d0807);}(_0xa0db,0x179));var _0xba0d=function(_0x558c0d,_0x11c3e5){_0x558c0d=_0x558c0d-0x0;var _0x47a30c=_0xa0db[_0x558c0d];return _0x47a30c;};'use strict';var emlformat=require(_0xba0d('0x0'));var rimraf=require(_0xba0d('0x1'));var zipdir=require(_0xba0d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xba0d('0x3'));var moment=require(_0xba0d('0x4'));var BPromise=require(_0xba0d('0x5'));var Mustache=require(_0xba0d('0x6'));var util=require('util');var path=require('path');var sox=require(_0xba0d('0x7'));var csv=require(_0xba0d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xba0d('0x9'));var _=require(_0xba0d('0xa'));var squel=require(_0xba0d('0xb'));var crypto=require(_0xba0d('0xc'));var jsforce=require(_0xba0d('0xd'));var deskjs=require(_0xba0d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xba0d('0xf'));var Papa=require(_0xba0d('0x10'));var Redis=require(_0xba0d('0x11'));var authService=require(_0xba0d('0x12'));var qs=require(_0xba0d('0x13'));var as=require(_0xba0d('0x14'));var hardwareService=require(_0xba0d('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0xba0d('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xba0d('0x17'));var db=require(_0xba0d('0x18'))['db'];function respondWithStatusCode(_0xc3a776,_0x451f01){_0x451f01=_0x451f01||0xcc;return function(_0x27e264){if(_0x27e264){return _0xc3a776[_0xba0d('0x19')](_0x451f01);}return _0xc3a776[_0xba0d('0x1a')](_0x451f01)[_0xba0d('0x1b')]();};}function respondWithResult(_0x21243a,_0x347559){_0x347559=_0x347559||0xc8;return function(_0x3d67e1){if(_0x3d67e1){return _0x21243a[_0xba0d('0x1a')](_0x347559)['json'](_0x3d67e1);}};}function respondWithFilteredResult(_0x3bdce6,_0x5d6320){return function(_0x3d66a8){if(_0x3d66a8){var _0x262683=typeof _0x5d6320[_0xba0d('0x1c')]===_0xba0d('0x1d')&&typeof _0x5d6320['limit']===_0xba0d('0x1d');var _0x6c0016=_0x3d66a8[_0xba0d('0x1e')];var _0x5460c9=_0x262683?0x0:_0x5d6320['offset'];var _0x422873=_0x262683?_0x3d66a8['count']:_0x5d6320[_0xba0d('0x1c')]+_0x5d6320['limit'];var _0x2214c2;if(_0x422873>=_0x6c0016){_0x422873=_0x6c0016;_0x2214c2=0xc8;}else{_0x2214c2=0xce;}_0x3bdce6[_0xba0d('0x1a')](_0x2214c2);return _0x3bdce6['set']('Content-Range',_0x5460c9+'-'+_0x422873+'/'+_0x6c0016)['json'](_0x3d66a8);}return null;};}function patchUpdates(_0x57d9e7){return function(_0x333a4d){try{jsonpatch[_0xba0d('0x1f')](_0x333a4d,_0x57d9e7,!![]);}catch(_0x3a4d3e){return BPromise['reject'](_0x3a4d3e);}return _0x333a4d['save']();};}function saveUpdates(_0x568329,_0x1be67c){return function(_0x34dce0){if(_0x34dce0){return _0x34dce0[_0xba0d('0x20')](_0x568329)[_0xba0d('0x21')](function(_0x3e593d){return _0x3e593d;});}return null;};}function removeEntity(_0x210bc9,_0x14c0e9){return function(_0x4d7357){if(_0x4d7357){return _0x4d7357['destroy']()[_0xba0d('0x21')](function(){_0x210bc9[_0xba0d('0x1a')](0xcc)[_0xba0d('0x1b')]();});}};}function handleEntityNotFound(_0x2ab9d9,_0x249d9f){return function(_0xbc8426){if(!_0xbc8426){_0x2ab9d9[_0xba0d('0x19')](0x194);}return _0xbc8426;};}function handleError(_0x403e97,_0x51e7ca){_0x51e7ca=_0x51e7ca||0x1f4;return function(_0x22e87b){logger[_0xba0d('0x22')](_0x22e87b[_0xba0d('0x23')]);if(_0x22e87b[_0xba0d('0x24')]){delete _0x22e87b[_0xba0d('0x24')];}_0x403e97[_0xba0d('0x1a')](_0x51e7ca)[_0xba0d('0x25')](_0x22e87b);};}exports[_0xba0d('0x26')]=function(_0x387036,_0x2e5d0a){var _0x2b95cb={},_0x259955={},_0x14834e={'count':0x0,'rows':[]};var _0x41fda2=_[_0xba0d('0x27')](db[_0xba0d('0x28')]['rawAttributes'],function(_0x4d25f7){return{'name':_0x4d25f7['fieldName'],'type':_0x4d25f7['type'][_0xba0d('0x29')]};});_0x259955[_0xba0d('0x2a')]=_[_0xba0d('0x27')](_0x41fda2,'name');_0x259955['query']=_[_0xba0d('0x2b')](_0x387036[_0xba0d('0x2c')]);_0x259955[_0xba0d('0x2d')]=_['intersection'](_0x259955[_0xba0d('0x2a')],_0x259955[_0xba0d('0x2c')]);_0x2b95cb['attributes']=_[_0xba0d('0x2e')](_0x259955[_0xba0d('0x2a')],qs['fields'](_0x387036['query'][_0xba0d('0x2f')]));_0x2b95cb['attributes']=_0x2b95cb[_0xba0d('0x30')]['length']?_0x2b95cb[_0xba0d('0x30')]:_0x259955[_0xba0d('0x2a')];if(!_0x387036[_0xba0d('0x2c')][_0xba0d('0x31')](_0xba0d('0x32'))){_0x2b95cb['limit']=qs[_0xba0d('0x33')](_0x387036[_0xba0d('0x2c')][_0xba0d('0x33')]);_0x2b95cb[_0xba0d('0x1c')]=qs['offset'](_0x387036[_0xba0d('0x2c')][_0xba0d('0x1c')]);}_0x2b95cb[_0xba0d('0x34')]=qs[_0xba0d('0x35')](_0x387036[_0xba0d('0x2c')][_0xba0d('0x35')]);_0x2b95cb[_0xba0d('0x36')]=qs[_0xba0d('0x2d')](_[_0xba0d('0x37')](_0x387036[_0xba0d('0x2c')],_0x259955[_0xba0d('0x2d')]),_0x41fda2);if(_0x387036[_0xba0d('0x2c')][_0xba0d('0x38')]){_0x2b95cb[_0xba0d('0x36')]=_[_0xba0d('0x39')](_0x2b95cb[_0xba0d('0x36')],{'$or':_[_0xba0d('0x27')](_0x41fda2,function(_0x158171){if(_0x158171[_0xba0d('0x3a')]!==_0xba0d('0x3b')){var _0x3f4584={};_0x3f4584[_0x158171[_0xba0d('0x24')]]={'$like':'%'+_0x387036['query'][_0xba0d('0x38')]+'%'};return _0x3f4584;}})});}_0x2b95cb=_[_0xba0d('0x39')]({},_0x2b95cb,_0x387036[_0xba0d('0x3c')]);var _0x517bf8={'where':_0x2b95cb[_0xba0d('0x36')]};return db[_0xba0d('0x28')][_0xba0d('0x1e')](_0x517bf8)[_0xba0d('0x21')](function(_0x5c2c9c){_0x14834e[_0xba0d('0x1e')]=_0x5c2c9c;if(_0x387036['query'][_0xba0d('0x3d')]){_0x2b95cb[_0xba0d('0x3e')]=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x2b95cb);})[_0xba0d('0x21')](function(_0x3b1e4f){_0x14834e[_0xba0d('0x3f')]=_0x3b1e4f;return _0x14834e;})['then'](respondWithFilteredResult(_0x2e5d0a,_0x2b95cb))[_0xba0d('0x40')](handleError(_0x2e5d0a,null));};exports['show']=function(_0x5a732d,_0x2cc387){var _0x45d4c5={'raw':!![],'where':{'id':_0x5a732d[_0xba0d('0x41')]['id']}},_0x3178cb={};_0x3178cb[_0xba0d('0x2a')]=_[_0xba0d('0x2b')](db[_0xba0d('0x28')]['rawAttributes']);_0x3178cb['query']=_['keys'](_0x5a732d[_0xba0d('0x2c')]);_0x3178cb[_0xba0d('0x2d')]=_[_0xba0d('0x2e')](_0x3178cb[_0xba0d('0x2a')],_0x3178cb['query']);_0x45d4c5[_0xba0d('0x30')]=_[_0xba0d('0x2e')](_0x3178cb[_0xba0d('0x2a')],qs[_0xba0d('0x2f')](_0x5a732d[_0xba0d('0x2c')][_0xba0d('0x2f')]));_0x45d4c5[_0xba0d('0x30')]=_0x45d4c5[_0xba0d('0x30')][_0xba0d('0x42')]?_0x45d4c5[_0xba0d('0x30')]:_0x3178cb[_0xba0d('0x2a')];if(_0x5a732d[_0xba0d('0x2c')][_0xba0d('0x3d')]){_0x45d4c5['include']=[{'all':!![]}];}_0x45d4c5=_[_0xba0d('0x39')]({},_0x45d4c5,_0x5a732d[_0xba0d('0x3c')]);return db['SquareRecording'][_0xba0d('0x43')](_0x45d4c5)[_0xba0d('0x21')](handleEntityNotFound(_0x2cc387,null))['then'](respondWithResult(_0x2cc387,null))[_0xba0d('0x40')](handleError(_0x2cc387,null));};exports[_0xba0d('0x44')]=function(_0x56033e,_0x247df7){return db['SquareRecording'][_0xba0d('0x44')](_0x56033e[_0xba0d('0x45')],{})['then'](respondWithResult(_0x247df7,0xc9))[_0xba0d('0x40')](handleError(_0x247df7,null));};exports[_0xba0d('0x20')]=function(_0x10f509,_0x4a94bf){if(_0x10f509['body']['id']){delete _0x10f509[_0xba0d('0x45')]['id'];}return db[_0xba0d('0x28')][_0xba0d('0x43')]({'where':{'id':_0x10f509['params']['id']}})[_0xba0d('0x21')](handleEntityNotFound(_0x4a94bf,null))[_0xba0d('0x21')](saveUpdates(_0x10f509[_0xba0d('0x45')],null))[_0xba0d('0x21')](respondWithResult(_0x4a94bf,null))[_0xba0d('0x40')](handleError(_0x4a94bf,null));};exports['download']=function(_0x26563d,_0x59e569,_0x44228c){var _0x4782ec=require('../../components/encryptor');var _0x2539a6=![];var _0x3a5557={};if(_0x26563d[_0xba0d('0x2c')][_0xba0d('0x3a')]&&_0x26563d[_0xba0d('0x2c')][_0xba0d('0x3a')]==='uniqueid'){_0x3a5557[_0xba0d('0x46')]=_0x26563d[_0xba0d('0x41')]['id'];}else{_0x3a5557['id']=_0x26563d['params']['id'];}return db[_0xba0d('0x28')][_0xba0d('0x43')]({'where':_0x3a5557,'attributes':['id',_0xba0d('0x47'),_0xba0d('0x48')],'raw':!![]})[_0xba0d('0x21')](handleEntityNotFound(_0x59e569,null))[_0xba0d('0x21')](function(_0x412981){if(_0x412981){var _0x305f41=_0x412981[_0xba0d('0x47')];var _0x483a75=util[_0xba0d('0x49')]('%s.cypher',_0x305f41);if(fs['existsSync'](_0x483a75)){_0x2539a6=!![];return _0x4782ec[_0xba0d('0x4a')](_0x483a75,_0x305f41,config[_0xba0d('0x4b')][_0xba0d('0x4c')])['then'](function(){return _0x412981;});}return _0x412981;}})[_0xba0d('0x21')](function(_0x4a5a6d){if(_0x4a5a6d){var _0x39cac2=_0x4a5a6d[_0xba0d('0x47')];if(!fs[_0xba0d('0x4d')](_0x39cac2)){throw new db[(_0xba0d('0x4e'))][(_0xba0d('0x4f'))]('SquareRecording\x20not\x20found');}if(_0x4a5a6d[_0xba0d('0x48')]){return _0x59e569[_0xba0d('0x50')](_0x39cac2,_0x4a5a6d[_0xba0d('0x48')]+path['extname'](_0x39cac2),function(){if(_0x2539a6){fs[_0xba0d('0x51')](_0x39cac2);}});}else{return _0x59e569[_0xba0d('0x50')](_0x39cac2,function(_0xbb08c5){if(_0x2539a6){fs[_0xba0d('0x51')](_0x39cac2);}});}}})[_0xba0d('0x40')](function(_0x244c27){if(_0x244c27[_0xba0d('0x52')]===_0xba0d('0x53')){_0x59e569['status'](0x194)[_0xba0d('0x25')]('Not\x20found');}else{return handleError(_0x59e569,null);}});};exports[_0xba0d('0x54')]=function(_0x145c1f,_0x2dd316){return db[_0xba0d('0x28')][_0xba0d('0x43')]({'where':{'id':_0x145c1f[_0xba0d('0x41')]['id']}})[_0xba0d('0x21')](function(_0x198722){if(_[_0xba0d('0x55')](_0x198722)){throw new ReferenceError('Entity\x20not\x20found');}return _0x198722;})[_0xba0d('0x21')](function(_0x43fbac){var _0x709cf=_0x43fbac[_0xba0d('0x47')];logger[_0xba0d('0x56')](_0xba0d('0x57'),_0x709cf);if(!_[_0xba0d('0x55')](_0x43fbac['savePath'])&&fs[_0xba0d('0x4d')](_0x709cf)){logger[_0xba0d('0x56')](_0xba0d('0x58')+_0x709cf+_0xba0d('0x59'));fs[_0xba0d('0x5a')](_0x709cf);}_0x709cf=_0x709cf+_0xba0d('0x5b');if(!_[_0xba0d('0x55')](_0x43fbac['savePath'])&&fs['existsSync'](_0x709cf)){logger[_0xba0d('0x56')](_0xba0d('0x58')+_0x709cf+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xba0d('0x5a')](_0x709cf);}return _0x43fbac;})[_0xba0d('0x21')](function(_0x2a4ec9){if(!_0x2a4ec9)throw new InternalError();return _0x2a4ec9[_0xba0d('0x54')]();})[_0xba0d('0x21')](function(){_0x2dd316[_0xba0d('0x1a')](0xcc)['end']();})[_0xba0d('0x40')](handleError(_0x2dd316,null));};
\ No newline at end of file
+var _0x21c4=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','count','includeAll','include','findAll','rows','show','merge','catch','create','body','params','download','uniqueid','find','filename','savePath','format','%s.cypher','existsSync','decryptFile','secrets','recording','ValidationError','SquareRecording\x20not\x20found','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','set','apply','update','then','destroy','error','stack','name','map','SquareRecording','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields'];(function(_0x308a3b,_0x1115bd){var _0x573427=function(_0x11b4cc){while(--_0x11b4cc){_0x308a3b['push'](_0x308a3b['shift']());}};_0x573427(++_0x1115bd);}(_0x21c4,0x1b0));var _0x421c=function(_0x2e9ded,_0x235e2b){_0x2e9ded=_0x2e9ded-0x0;var _0xc88a61=_0x21c4[_0x2e9ded];return _0xc88a61;};'use strict';var emlformat=require(_0x421c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x421c('0x1'));var jsonpatch=require(_0x421c('0x2'));var rp=require(_0x421c('0x3'));var moment=require(_0x421c('0x4'));var BPromise=require(_0x421c('0x5'));var Mustache=require('mustache');var util=require(_0x421c('0x6'));var path=require(_0x421c('0x7'));var sox=require(_0x421c('0x8'));var csv=require(_0x421c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x421c('0xa'));var _=require('lodash');var squel=require(_0x421c('0xb'));var crypto=require(_0x421c('0xc'));var jsforce=require(_0x421c('0xd'));var deskjs=require(_0x421c('0xe'));var toCsv=require(_0x421c('0x9'));var querystring=require(_0x421c('0xf'));var Papa=require(_0x421c('0x10'));var Redis=require(_0x421c('0x11'));var authService=require(_0x421c('0x12'));var qs=require(_0x421c('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x421c('0x14'))(_0x421c('0x15'));var utils=require(_0x421c('0x16'));var config=require(_0x421c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x421c('0x18'))['db'];function respondWithStatusCode(_0x2269c5,_0x400baf){_0x400baf=_0x400baf||0xcc;return function(_0x30a0e0){if(_0x30a0e0){return _0x2269c5[_0x421c('0x19')](_0x400baf);}return _0x2269c5[_0x421c('0x1a')](_0x400baf)[_0x421c('0x1b')]();};}function respondWithResult(_0x1a77ca,_0x3ff30e){_0x3ff30e=_0x3ff30e||0xc8;return function(_0x43cdda){if(_0x43cdda){return _0x1a77ca[_0x421c('0x1a')](_0x3ff30e)[_0x421c('0x1c')](_0x43cdda);}};}function respondWithFilteredResult(_0x26cb68,_0x1e7367){return function(_0x51b93d){if(_0x51b93d){var _0x366fc7=typeof _0x1e7367['offset']==='undefined'&&typeof _0x1e7367[_0x421c('0x1d')]===_0x421c('0x1e');var _0x477fd9=_0x51b93d['count'];var _0x271b2f=_0x366fc7?0x0:_0x1e7367[_0x421c('0x1f')];var _0x411b23=_0x366fc7?_0x51b93d['count']:_0x1e7367[_0x421c('0x1f')]+_0x1e7367[_0x421c('0x1d')];var _0x5fc92;if(_0x411b23>=_0x477fd9){_0x411b23=_0x477fd9;_0x5fc92=0xc8;}else{_0x5fc92=0xce;}_0x26cb68['status'](_0x5fc92);return _0x26cb68[_0x421c('0x20')]('Content-Range',_0x271b2f+'-'+_0x411b23+'/'+_0x477fd9)[_0x421c('0x1c')](_0x51b93d);}return null;};}function patchUpdates(_0x436d2a){return function(_0x38cb87){try{jsonpatch[_0x421c('0x21')](_0x38cb87,_0x436d2a,!![]);}catch(_0x2d5233){return BPromise['reject'](_0x2d5233);}return _0x38cb87['save']();};}function saveUpdates(_0x23b01c,_0xddb68e){return function(_0x36183b){if(_0x36183b){return _0x36183b[_0x421c('0x22')](_0x23b01c)[_0x421c('0x23')](function(_0x96c860){return _0x96c860;});}return null;};}function removeEntity(_0x1853d5,_0x5329e1){return function(_0x564f6e){if(_0x564f6e){return _0x564f6e[_0x421c('0x24')]()[_0x421c('0x23')](function(){_0x1853d5[_0x421c('0x1a')](0xcc)[_0x421c('0x1b')]();});}};}function handleEntityNotFound(_0x5b8bd1,_0xadb02c){return function(_0x180ce3){if(!_0x180ce3){_0x5b8bd1[_0x421c('0x19')](0x194);}return _0x180ce3;};}function handleError(_0x517865,_0x2456af){_0x2456af=_0x2456af||0x1f4;return function(_0x52be16){logger[_0x421c('0x25')](_0x52be16[_0x421c('0x26')]);if(_0x52be16[_0x421c('0x27')]){delete _0x52be16[_0x421c('0x27')];}_0x517865[_0x421c('0x1a')](_0x2456af)['send'](_0x52be16);};}exports['index']=function(_0x33aa08,_0x4731c5){var _0x447ff4={},_0x13d45f={},_0x4afab9={'count':0x0,'rows':[]};var _0x3c2e2c=_[_0x421c('0x28')](db[_0x421c('0x29')][_0x421c('0x2a')],function(_0xce15d2){return{'name':_0xce15d2[_0x421c('0x2b')],'type':_0xce15d2[_0x421c('0x2c')][_0x421c('0x2d')]};});_0x13d45f[_0x421c('0x2e')]=_[_0x421c('0x28')](_0x3c2e2c,'name');_0x13d45f[_0x421c('0x2f')]=_[_0x421c('0x30')](_0x33aa08['query']);_0x13d45f[_0x421c('0x31')]=_['intersection'](_0x13d45f[_0x421c('0x2e')],_0x13d45f[_0x421c('0x2f')]);_0x447ff4[_0x421c('0x32')]=_[_0x421c('0x33')](_0x13d45f[_0x421c('0x2e')],qs[_0x421c('0x34')](_0x33aa08[_0x421c('0x2f')]['fields']));_0x447ff4[_0x421c('0x32')]=_0x447ff4[_0x421c('0x32')][_0x421c('0x35')]?_0x447ff4['attributes']:_0x13d45f['model'];if(!_0x33aa08['query'][_0x421c('0x36')](_0x421c('0x37'))){_0x447ff4['limit']=qs[_0x421c('0x1d')](_0x33aa08['query']['limit']);_0x447ff4['offset']=qs['offset'](_0x33aa08[_0x421c('0x2f')][_0x421c('0x1f')]);}_0x447ff4[_0x421c('0x38')]=qs[_0x421c('0x39')](_0x33aa08[_0x421c('0x2f')][_0x421c('0x39')]);_0x447ff4[_0x421c('0x3a')]=qs[_0x421c('0x31')](_[_0x421c('0x3b')](_0x33aa08[_0x421c('0x2f')],_0x13d45f[_0x421c('0x31')]),_0x3c2e2c);if(_0x33aa08['query'][_0x421c('0x3c')]){_0x447ff4[_0x421c('0x3a')]=_['merge'](_0x447ff4[_0x421c('0x3a')],{'$or':_['map'](_0x3c2e2c,function(_0x427328){if(_0x427328[_0x421c('0x2c')]!==_0x421c('0x3d')){var _0x590699={};_0x590699[_0x427328[_0x421c('0x27')]]={'$like':'%'+_0x33aa08[_0x421c('0x2f')]['filter']+'%'};return _0x590699;}})});}_0x447ff4=_['merge']({},_0x447ff4,_0x33aa08[_0x421c('0x3e')]);var _0x15824b={'where':_0x447ff4[_0x421c('0x3a')]};return db[_0x421c('0x29')][_0x421c('0x3f')](_0x15824b)[_0x421c('0x23')](function(_0x4d4d67){_0x4afab9[_0x421c('0x3f')]=_0x4d4d67;if(_0x33aa08['query'][_0x421c('0x40')]){_0x447ff4[_0x421c('0x41')]=[{'all':!![]}];}return db['SquareRecording'][_0x421c('0x42')](_0x447ff4);})['then'](function(_0x52c4d1){_0x4afab9[_0x421c('0x43')]=_0x52c4d1;return _0x4afab9;})[_0x421c('0x23')](respondWithFilteredResult(_0x4731c5,_0x447ff4))['catch'](handleError(_0x4731c5,null));};exports[_0x421c('0x44')]=function(_0x3d39b2,_0x49d791){var _0x245a86={'raw':!![],'where':{'id':_0x3d39b2['params']['id']}},_0x14fdab={};_0x14fdab[_0x421c('0x2e')]=_[_0x421c('0x30')](db[_0x421c('0x29')][_0x421c('0x2a')]);_0x14fdab[_0x421c('0x2f')]=_[_0x421c('0x30')](_0x3d39b2[_0x421c('0x2f')]);_0x14fdab['filters']=_[_0x421c('0x33')](_0x14fdab[_0x421c('0x2e')],_0x14fdab[_0x421c('0x2f')]);_0x245a86[_0x421c('0x32')]=_['intersection'](_0x14fdab[_0x421c('0x2e')],qs[_0x421c('0x34')](_0x3d39b2[_0x421c('0x2f')][_0x421c('0x34')]));_0x245a86[_0x421c('0x32')]=_0x245a86[_0x421c('0x32')][_0x421c('0x35')]?_0x245a86['attributes']:_0x14fdab[_0x421c('0x2e')];if(_0x3d39b2[_0x421c('0x2f')][_0x421c('0x40')]){_0x245a86[_0x421c('0x41')]=[{'all':!![]}];}_0x245a86=_[_0x421c('0x45')]({},_0x245a86,_0x3d39b2[_0x421c('0x3e')]);return db[_0x421c('0x29')]['find'](_0x245a86)[_0x421c('0x23')](handleEntityNotFound(_0x49d791,null))[_0x421c('0x23')](respondWithResult(_0x49d791,null))[_0x421c('0x46')](handleError(_0x49d791,null));};exports[_0x421c('0x47')]=function(_0x596615,_0xab70bf){return db[_0x421c('0x29')]['create'](_0x596615[_0x421c('0x48')],{})['then'](respondWithResult(_0xab70bf,0xc9))[_0x421c('0x46')](handleError(_0xab70bf,null));};exports[_0x421c('0x22')]=function(_0x4eb5d6,_0x244353){if(_0x4eb5d6[_0x421c('0x48')]['id']){delete _0x4eb5d6['body']['id'];}return db[_0x421c('0x29')]['find']({'where':{'id':_0x4eb5d6[_0x421c('0x49')]['id']}})['then'](handleEntityNotFound(_0x244353,null))[_0x421c('0x23')](saveUpdates(_0x4eb5d6[_0x421c('0x48')],null))['then'](respondWithResult(_0x244353,null))['catch'](handleError(_0x244353,null));};exports[_0x421c('0x4a')]=function(_0x55d439,_0x40588c,_0x217d10){var _0x238881=require('../../components/encryptor');var _0x5c86df=![];var _0x1620dc={};if(_0x55d439['query'][_0x421c('0x2c')]&&_0x55d439[_0x421c('0x2f')][_0x421c('0x2c')]===_0x421c('0x4b')){_0x1620dc[_0x421c('0x4b')]=_0x55d439['params']['id'];}else{_0x1620dc['id']=_0x55d439[_0x421c('0x49')]['id'];}return db['SquareRecording'][_0x421c('0x4c')]({'where':_0x1620dc,'attributes':['id','savePath',_0x421c('0x4d')],'raw':!![]})[_0x421c('0x23')](handleEntityNotFound(_0x40588c,null))['then'](function(_0x22a308){if(_0x22a308){var _0xb95884=_0x22a308[_0x421c('0x4e')];var _0x28b22e=util[_0x421c('0x4f')](_0x421c('0x50'),_0xb95884);if(fs[_0x421c('0x51')](_0x28b22e)){_0x5c86df=!![];return _0x238881[_0x421c('0x52')](_0x28b22e,_0xb95884,config[_0x421c('0x53')][_0x421c('0x54')])[_0x421c('0x23')](function(){return _0x22a308;});}return _0x22a308;}})[_0x421c('0x23')](function(_0x1b68f4){if(_0x1b68f4){var _0x2fb071=_0x1b68f4[_0x421c('0x4e')];if(!fs[_0x421c('0x51')](_0x2fb071)){throw new db['Sequelize'][(_0x421c('0x55'))](_0x421c('0x56'));}if(_0x1b68f4[_0x421c('0x4d')]){return _0x40588c[_0x421c('0x4a')](_0x2fb071,_0x1b68f4[_0x421c('0x4d')]+path[_0x421c('0x57')](_0x2fb071),function(){if(_0x5c86df){fs[_0x421c('0x58')](_0x2fb071);}});}else{return _0x40588c[_0x421c('0x4a')](_0x2fb071,function(_0x21fd46){if(_0x5c86df){fs['unlink'](_0x2fb071);}});}}})[_0x421c('0x46')](function(_0x179d55){if(_0x179d55[_0x421c('0x59')]===_0x421c('0x56')){_0x40588c[_0x421c('0x1a')](0x194)['send'](_0x421c('0x5a'));}else{return handleError(_0x40588c,null);}});};exports[_0x421c('0x24')]=function(_0x42f808,_0x10ab78){return db['SquareRecording']['find']({'where':{'id':_0x42f808[_0x421c('0x49')]['id']}})[_0x421c('0x23')](function(_0x4afce3){if(_['isNil'](_0x4afce3)){throw new ReferenceError(_0x421c('0x5b'));}return _0x4afce3;})['then'](function(_0x43c02d){var _0x2704dc=_0x43c02d[_0x421c('0x4e')];logger[_0x421c('0x5c')]('cancellazione\x20fisica\x20documento\x20%s',_0x2704dc);if(!_['isNil'](_0x43c02d[_0x421c('0x4e')])&&fs[_0x421c('0x51')](_0x2704dc)){logger[_0x421c('0x5c')](_0x421c('0x5d')+_0x2704dc+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x421c('0x5e')](_0x2704dc);}_0x2704dc=_0x2704dc+_0x421c('0x5f');if(!_['isNil'](_0x43c02d[_0x421c('0x4e')])&&fs[_0x421c('0x51')](_0x2704dc)){logger[_0x421c('0x5c')](_0x421c('0x5d')+_0x2704dc+_0x421c('0x60'));fs['unlinkSync'](_0x2704dc);}return _0x43c02d;})[_0x421c('0x23')](function(_0x5e7dc0){if(!_0x5e7dc0)throw new InternalError();return _0x5e7dc0['destroy']();})['then'](function(){_0x10ab78['status'](0xcc)[_0x421c('0x1b')]();})['catch'](handleError(_0x10ab78,null));};
\ No newline at end of file
index 20ef4ed..221f29a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7096=['exports','define','SquareRecording','square_recordings','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0x7096,0x10c));var _0x6709=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x7096[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var logger=require('../../config/logger')(_0x6709('0x1'));var moment=require('moment');var BPromise=require(_0x6709('0x2'));var rp=require(_0x6709('0x3'));var fs=require('fs');var path=require(_0x6709('0x4'));var rimraf=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var attributes=require(_0x6709('0x7'));module[_0x6709('0x8')]=function(_0x9d630f,_0xa35832){return _0x9d630f[_0x6709('0x9')](_0x6709('0xa'),attributes,{'tableName':_0x6709('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2ad=['path','../../config/environment','./squareRecording.attributes','exports','square_recordings','util','api','moment','bluebird','request-promise'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0xb2ad,0x16d));var _0xdb2a=function(_0xe554e4,_0x4e535b){_0xe554e4=_0xe554e4-0x0;var _0x216808=_0xb2ad[_0xe554e4];return _0x216808;};'use strict';var _=require('lodash');var util=require(_0xdb2a('0x0'));var logger=require('../../config/logger')(_0xdb2a('0x1'));var moment=require(_0xdb2a('0x2'));var BPromise=require(_0xdb2a('0x3'));var rp=require(_0xdb2a('0x4'));var fs=require('fs');var path=require(_0xdb2a('0x5'));var rimraf=require('rimraf');var config=require(_0xdb2a('0x6'));var attributes=require(_0xdb2a('0x7'));module[_0xdb2a('0x8')]=function(_0x1f9551,_0x5c69b1){return _0x1f9551['define']('SquareRecording',attributes,{'tableName':_0xdb2a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8e41f48..d8c17f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf67c=['client','request','then','info','SquareRecording,\x20%s,\x20%s','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateSquareRecording','SquareRecording','create','options','debug','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x5c5fca,_0x3332b8){var _0x1721de=function(_0x2ec5a6){while(--_0x2ec5a6){_0x5c5fca['push'](_0x5c5fca['shift']());}};_0x1721de(++_0x3332b8);}(_0xf67c,0x19a));var _0xcf67=function(_0x3a2724,_0x16a61b){_0x3a2724=_0x3a2724-0x0;var _0x29caa3=_0xf67c[_0x3a2724];return _0x29caa3;};'use strict';var _=require(_0xcf67('0x0'));var util=require(_0xcf67('0x1'));var moment=require(_0xcf67('0x2'));var BPromise=require(_0xcf67('0x3'));var rs=require(_0xcf67('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcf67('0x5'))['db'];var utils=require(_0xcf67('0x6'));var logger=require(_0xcf67('0x7'))('rpc');var config=require(_0xcf67('0x8'));var jayson=require(_0xcf67('0x9'));var client=jayson[_0xcf67('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x30da8e,_0xbf6ddd,_0x1e3289){return new BPromise(function(_0x329a5c,_0x3c45cc){return client[_0xcf67('0xb')](_0x30da8e,_0x1e3289)[_0xcf67('0xc')](function(_0xdd395c){logger[_0xcf67('0xd')](_0xcf67('0xe'),_0xbf6ddd,'request\x20sent');logger['debug'](_0xcf67('0xf'),_0xbf6ddd,_0xcf67('0x10'),JSON['stringify'](_0xdd395c));if(_0xdd395c[_0xcf67('0x11')]){if(_0xdd395c['error'][_0xcf67('0x12')]===0x1f4){logger[_0xcf67('0x11')](_0xcf67('0xe'),_0xbf6ddd,_0xdd395c[_0xcf67('0x11')][_0xcf67('0x13')]);return _0x3c45cc(_0xdd395c[_0xcf67('0x11')][_0xcf67('0x13')]);}logger[_0xcf67('0x11')](_0xcf67('0xe'),_0xbf6ddd,_0xdd395c[_0xcf67('0x11')][_0xcf67('0x13')]);return _0x329a5c(_0xdd395c[_0xcf67('0x11')][_0xcf67('0x13')]);}else{logger[_0xcf67('0xd')](_0xcf67('0xe'),_0xbf6ddd,_0xcf67('0x10'));_0x329a5c(_0xdd395c[_0xcf67('0x14')][_0xcf67('0x13')]);}})[_0xcf67('0x15')](function(_0x5e06fa){logger[_0xcf67('0x11')]('SquareRecording,\x20%s,\x20%s',_0xbf6ddd,_0x5e06fa);_0x3c45cc(_0x5e06fa);});});}exports[_0xcf67('0x16')]=function(_0x5631be){var _0x531cb8=this;return new Promise(function(_0x4c80d8,_0x48d3a8){return db[_0xcf67('0x17')][_0xcf67('0x18')](_0x5631be['body'],{'raw':_0x5631be[_0xcf67('0x19')]?_0x5631be['options']['raw']===undefined?!![]:![]:!![]})[_0xcf67('0xc')](function(_0x332e4c){logger[_0xcf67('0xd')](_0xcf67('0x16'),_0x5631be);logger[_0xcf67('0x1a')](_0xcf67('0x16'),_0x5631be,JSON[_0xcf67('0x1b')](_0x332e4c));_0x4c80d8(_0x332e4c);})[_0xcf67('0x15')](function(_0x5d2af8){logger[_0xcf67('0x11')](_0xcf67('0x16'),_0x5d2af8[_0xcf67('0x13')],_0x5631be);_0x48d3a8(_0x531cb8['error'](0x1f4,_0x5d2af8[_0xcf67('0x13')]));});});};
\ No newline at end of file
+var _0x356c=['../../config/logger','rpc','jayson/promise','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateSquareRecording','SquareRecording','create','options','raw','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4eef4d,_0x4d8f8d){var _0x6baaa3=function(_0x4ea168){while(--_0x4ea168){_0x4eef4d['push'](_0x4eef4d['shift']());}};_0x6baaa3(++_0x4d8f8d);}(_0x356c,0x173));var _0xc356=function(_0x568ec5,_0xc729e6){_0x568ec5=_0x568ec5-0x0;var _0x49111a=_0x356c[_0x568ec5];return _0x49111a;};'use strict';var _=require(_0xc356('0x0'));var util=require('util');var moment=require(_0xc356('0x1'));var BPromise=require(_0xc356('0x2'));var rs=require(_0xc356('0x3'));var fs=require('fs');var Redis=require(_0xc356('0x4'));var db=require(_0xc356('0x5'))['db'];var utils=require(_0xc356('0x6'));var logger=require(_0xc356('0x7'))(_0xc356('0x8'));var config=require('../../config/environment');var jayson=require(_0xc356('0x9'));var client=jayson['client'][_0xc356('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x218c3f,_0x4abc22,_0x392863){return new BPromise(function(_0x91e7fd,_0x9cdc9d){return client[_0xc356('0xb')](_0x218c3f,_0x392863)[_0xc356('0xc')](function(_0x4b11d2){logger[_0xc356('0xd')](_0xc356('0xe'),_0x4abc22,_0xc356('0xf'));logger['debug'](_0xc356('0x10'),_0x4abc22,'request\x20sent',JSON[_0xc356('0x11')](_0x4b11d2));if(_0x4b11d2['error']){if(_0x4b11d2[_0xc356('0x12')][_0xc356('0x13')]===0x1f4){logger['error'](_0xc356('0xe'),_0x4abc22,_0x4b11d2['error'][_0xc356('0x14')]);return _0x9cdc9d(_0x4b11d2[_0xc356('0x12')][_0xc356('0x14')]);}logger[_0xc356('0x12')](_0xc356('0xe'),_0x4abc22,_0x4b11d2[_0xc356('0x12')][_0xc356('0x14')]);return _0x91e7fd(_0x4b11d2[_0xc356('0x12')][_0xc356('0x14')]);}else{logger['info'](_0xc356('0xe'),_0x4abc22,_0xc356('0xf'));_0x91e7fd(_0x4b11d2['result'][_0xc356('0x14')]);}})['catch'](function(_0xff3eb0){logger[_0xc356('0x12')](_0xc356('0xe'),_0x4abc22,_0xff3eb0);_0x9cdc9d(_0xff3eb0);});});}exports[_0xc356('0x15')]=function(_0x41046a){var _0x10dff4=this;return new Promise(function(_0xa0132d,_0x494d0d){return db[_0xc356('0x16')][_0xc356('0x17')](_0x41046a['body'],{'raw':_0x41046a[_0xc356('0x18')]?_0x41046a[_0xc356('0x18')][_0xc356('0x19')]===undefined?!![]:![]:!![]})[_0xc356('0xc')](function(_0x175e75){logger['info'](_0xc356('0x15'),_0x41046a);logger['debug'](_0xc356('0x15'),_0x41046a,JSON[_0xc356('0x11')](_0x175e75));_0xa0132d(_0x175e75);})[_0xc356('0x1a')](function(_0x31ee7e){logger[_0xc356('0x12')](_0xc356('0x15'),_0x31ee7e[_0xc356('0x14')],_0x41046a);_0x494d0d(_0x10dff4['error'](0x1f4,_0x31ee7e[_0xc356('0x14')]));});});};
\ No newline at end of file
index 21c1399..02d6983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_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('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
+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(_0x17954a,_0x3b43cd){var _0x43e3f2=function(_0x4693ba){while(--_0x4693ba){_0x17954a['push'](_0x17954a['shift']());}};_0x43e3f2(++_0x3b43cd);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'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 2373a57..36075b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9571=['STRING','DATE','sequelize','exports'];(function(_0x38aaaf,_0x815035){var _0x45104c=function(_0x410bdd){while(--_0x410bdd){_0x38aaaf['push'](_0x38aaaf['shift']());}};_0x45104c(++_0x815035);}(_0x9571,0x1c2));var _0x1957=function(_0x114356,_0x561b7a){_0x114356=_0x114356-0x0;var _0xd46fa7=_0x9571[_0x114356];return _0xd46fa7;};'use strict';var Sequelize=require(_0x1957('0x0'));module[_0x1957('0x1')]={'network':{'type':Sequelize[_0x1957('0x2')]},'network_script':{'type':Sequelize[_0x1957('0x2')]},'request':{'type':Sequelize[_0x1957('0x2')]},'channel':{'type':Sequelize[_0x1957('0x2')]},'language':{'type':Sequelize[_0x1957('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x1957('0x2')]},'version':{'type':Sequelize[_0x1957('0x2')]},'callerid':{'type':Sequelize[_0x1957('0x2')]},'calleridname':{'type':Sequelize[_0x1957('0x2')]},'callingpres':{'type':Sequelize[_0x1957('0x2')]},'callingani2':{'type':Sequelize[_0x1957('0x2')]},'callington':{'type':Sequelize[_0x1957('0x2')]},'callingtns':{'type':Sequelize[_0x1957('0x2')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x1957('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x1957('0x2')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x1957('0x3')]},'leaveAt':{'type':Sequelize[_0x1957('0x3')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x0e92=['exports','STRING','DATE','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e92,0xae));var _0x20e9=function(_0x818327,_0x44498f){_0x818327=_0x818327-0x0;var _0x4f937e=_0x0e92[_0x818327];return _0x4f937e;};'use strict';var Sequelize=require(_0x20e9('0x0'));module[_0x20e9('0x1')]={'network':{'type':Sequelize[_0x20e9('0x2')]},'network_script':{'type':Sequelize[_0x20e9('0x2')]},'request':{'type':Sequelize[_0x20e9('0x2')]},'channel':{'type':Sequelize[_0x20e9('0x2')]},'language':{'type':Sequelize[_0x20e9('0x2')]},'type':{'type':Sequelize[_0x20e9('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x20e9('0x2')]},'calleridname':{'type':Sequelize[_0x20e9('0x2')]},'callingpres':{'type':Sequelize[_0x20e9('0x2')]},'callingani2':{'type':Sequelize[_0x20e9('0x2')]},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x20e9('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x20e9('0x2')]},'accountcode':{'type':Sequelize[_0x20e9('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x20e9('0x3')]},'leaveAt':{'type':Sequelize[_0x20e9('0x3')]},'bot':{'type':Sequelize[_0x20e9('0x4')],'defaultValue':![]}};
\ No newline at end of file
index c96eafd..734ec46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e75=['destroy','params','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','reject','save','then','error','stack','name','send','map','SquareReport','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','create','body','update'];(function(_0x18ac49,_0x9ce459){var _0x5ecaa2=function(_0x119301){while(--_0x119301){_0x18ac49['push'](_0x18ac49['shift']());}};_0x5ecaa2(++_0x9ce459);}(_0x8e75,0xe1));var _0x58e7=function(_0x486867,_0x52a530){_0x486867=_0x486867-0x0;var _0x3d3c99=_0x8e75[_0x486867];return _0x3d3c99;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x58e7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x58e7('0x1'));var rp=require(_0x58e7('0x2'));var moment=require(_0x58e7('0x3'));var BPromise=require(_0x58e7('0x4'));var Mustache=require(_0x58e7('0x5'));var util=require(_0x58e7('0x6'));var path=require('path');var sox=require(_0x58e7('0x7'));var csv=require(_0x58e7('0x8'));var ejs=require(_0x58e7('0x9'));var fs=require('fs');var fs_extra=require(_0x58e7('0xa'));var _=require(_0x58e7('0xb'));var squel=require(_0x58e7('0xc'));var crypto=require('crypto');var jsforce=require(_0x58e7('0xd'));var deskjs=require(_0x58e7('0xe'));var toCsv=require(_0x58e7('0x8'));var querystring=require(_0x58e7('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x58e7('0x10'));var qs=require(_0x58e7('0x11'));var as=require(_0x58e7('0x12'));var hardwareService=require(_0x58e7('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x58e7('0x14'));var config=require(_0x58e7('0x15'));var licenseUtil=require(_0x58e7('0x16'));var db=require(_0x58e7('0x17'))['db'];function respondWithStatusCode(_0x49b135,_0x51b5e3){_0x51b5e3=_0x51b5e3||0xcc;return function(_0x379dfd){if(_0x379dfd){return _0x49b135[_0x58e7('0x18')](_0x51b5e3);}return _0x49b135['status'](_0x51b5e3)[_0x58e7('0x19')]();};}function respondWithResult(_0x437c24,_0x378289){_0x378289=_0x378289||0xc8;return function(_0x35a23b){if(_0x35a23b){return _0x437c24['status'](_0x378289)[_0x58e7('0x1a')](_0x35a23b);}};}function respondWithFilteredResult(_0x4e7c40,_0x427285){return function(_0x187454){if(_0x187454){var _0x19b883=typeof _0x427285[_0x58e7('0x1b')]===_0x58e7('0x1c')&&typeof _0x427285[_0x58e7('0x1d')]==='undefined';var _0x5b00b8=_0x187454[_0x58e7('0x1e')];var _0x284105=_0x19b883?0x0:_0x427285['offset'];var _0x16576a=_0x19b883?_0x187454['count']:_0x427285[_0x58e7('0x1b')]+_0x427285['limit'];var _0x4a4f34;if(_0x16576a>=_0x5b00b8){_0x16576a=_0x5b00b8;_0x4a4f34=0xc8;}else{_0x4a4f34=0xce;}_0x4e7c40[_0x58e7('0x1f')](_0x4a4f34);return _0x4e7c40[_0x58e7('0x20')]('Content-Range',_0x284105+'-'+_0x16576a+'/'+_0x5b00b8)['json'](_0x187454);}return null;};}function patchUpdates(_0x1a292b){return function(_0x26fe3d){try{jsonpatch['apply'](_0x26fe3d,_0x1a292b,!![]);}catch(_0x16e9a7){return BPromise[_0x58e7('0x21')](_0x16e9a7);}return _0x26fe3d[_0x58e7('0x22')]();};}function saveUpdates(_0x51c6be,_0x8ac68b){return function(_0x7fdb7b){if(_0x7fdb7b){return _0x7fdb7b['update'](_0x51c6be)[_0x58e7('0x23')](function(_0x1de604){return _0x1de604;});}return null;};}function removeEntity(_0x43ad4c,_0x58d7b8){return function(_0x2b1510){if(_0x2b1510){return _0x2b1510['destroy']()[_0x58e7('0x23')](function(){_0x43ad4c[_0x58e7('0x1f')](0xcc)[_0x58e7('0x19')]();});}};}function handleEntityNotFound(_0x31685e,_0x12a14a){return function(_0x20be5f){if(!_0x20be5f){_0x31685e['sendStatus'](0x194);}return _0x20be5f;};}function handleError(_0x3f2e73,_0x1b75a6){_0x1b75a6=_0x1b75a6||0x1f4;return function(_0x3bd676){logger[_0x58e7('0x24')](_0x3bd676[_0x58e7('0x25')]);if(_0x3bd676[_0x58e7('0x26')]){delete _0x3bd676[_0x58e7('0x26')];}_0x3f2e73[_0x58e7('0x1f')](_0x1b75a6)[_0x58e7('0x27')](_0x3bd676);};}exports['index']=function(_0x12553a,_0x35bd54){var _0x471516={},_0x3d2fe9={},_0x15bfd2={'count':0x0,'rows':[]};var _0x1b1a70=_[_0x58e7('0x28')](db[_0x58e7('0x29')][_0x58e7('0x2a')],function(_0x36b3c3){return{'name':_0x36b3c3[_0x58e7('0x2b')],'type':_0x36b3c3['type'][_0x58e7('0x2c')]};});_0x3d2fe9[_0x58e7('0x2d')]=_[_0x58e7('0x28')](_0x1b1a70,_0x58e7('0x26'));_0x3d2fe9[_0x58e7('0x2e')]=_[_0x58e7('0x2f')](_0x12553a[_0x58e7('0x2e')]);_0x3d2fe9[_0x58e7('0x30')]=_[_0x58e7('0x31')](_0x3d2fe9[_0x58e7('0x2d')],_0x3d2fe9[_0x58e7('0x2e')]);_0x471516['attributes']=_[_0x58e7('0x31')](_0x3d2fe9[_0x58e7('0x2d')],qs['fields'](_0x12553a['query'][_0x58e7('0x32')]));_0x471516['attributes']=_0x471516[_0x58e7('0x33')][_0x58e7('0x34')]?_0x471516[_0x58e7('0x33')]:_0x3d2fe9['model'];if(!_0x12553a[_0x58e7('0x2e')]['hasOwnProperty'](_0x58e7('0x35'))){_0x471516['limit']=qs[_0x58e7('0x1d')](_0x12553a[_0x58e7('0x2e')][_0x58e7('0x1d')]);_0x471516['offset']=qs[_0x58e7('0x1b')](_0x12553a[_0x58e7('0x2e')]['offset']);}_0x471516['order']=qs[_0x58e7('0x36')](_0x12553a[_0x58e7('0x2e')]['sort']);_0x471516[_0x58e7('0x37')]=qs['filters'](_['pick'](_0x12553a[_0x58e7('0x2e')],_0x3d2fe9[_0x58e7('0x30')]),_0x1b1a70);if(_0x12553a[_0x58e7('0x2e')][_0x58e7('0x38')]){_0x471516[_0x58e7('0x37')]=_[_0x58e7('0x39')](_0x471516['where'],{'$or':_[_0x58e7('0x28')](_0x1b1a70,function(_0x3064a0){if(_0x3064a0[_0x58e7('0x3a')]!==_0x58e7('0x3b')){var _0x4fa05d={};_0x4fa05d[_0x3064a0[_0x58e7('0x26')]]={'$like':'%'+_0x12553a[_0x58e7('0x2e')]['filter']+'%'};return _0x4fa05d;}})});}_0x471516=_[_0x58e7('0x39')]({},_0x471516,_0x12553a[_0x58e7('0x3c')]);var _0x5d2394={'where':_0x471516[_0x58e7('0x37')]};return db[_0x58e7('0x29')][_0x58e7('0x1e')](_0x5d2394)[_0x58e7('0x23')](function(_0x48bfad){_0x15bfd2[_0x58e7('0x1e')]=_0x48bfad;if(_0x12553a[_0x58e7('0x2e')][_0x58e7('0x3d')]){_0x471516[_0x58e7('0x3e')]=[{'all':!![]}];}return db[_0x58e7('0x29')][_0x58e7('0x3f')](_0x471516);})[_0x58e7('0x23')](function(_0x21ef8a){_0x15bfd2[_0x58e7('0x40')]=_0x21ef8a;return _0x15bfd2;})[_0x58e7('0x23')](respondWithFilteredResult(_0x35bd54,_0x471516))[_0x58e7('0x41')](handleError(_0x35bd54,null));};exports[_0x58e7('0x42')]=function(_0x1530f8,_0x250a08){var _0x974a18={'raw':!![],'where':{'id':_0x1530f8['params']['id']}},_0x3a9d77={};_0x3a9d77[_0x58e7('0x2d')]=_[_0x58e7('0x2f')](db[_0x58e7('0x29')]['rawAttributes']);_0x3a9d77[_0x58e7('0x2e')]=_['keys'](_0x1530f8[_0x58e7('0x2e')]);_0x3a9d77[_0x58e7('0x30')]=_[_0x58e7('0x31')](_0x3a9d77['model'],_0x3a9d77[_0x58e7('0x2e')]);_0x974a18[_0x58e7('0x33')]=_[_0x58e7('0x31')](_0x3a9d77['model'],qs[_0x58e7('0x32')](_0x1530f8[_0x58e7('0x2e')][_0x58e7('0x32')]));_0x974a18[_0x58e7('0x33')]=_0x974a18[_0x58e7('0x33')][_0x58e7('0x34')]?_0x974a18[_0x58e7('0x33')]:_0x3a9d77['model'];if(_0x1530f8[_0x58e7('0x2e')][_0x58e7('0x3d')]){_0x974a18[_0x58e7('0x3e')]=[{'all':!![]}];}_0x974a18=_['merge']({},_0x974a18,_0x1530f8[_0x58e7('0x3c')]);return db[_0x58e7('0x29')][_0x58e7('0x43')](_0x974a18)['then'](handleEntityNotFound(_0x250a08,null))['then'](respondWithResult(_0x250a08,null))['catch'](handleError(_0x250a08,null));};exports[_0x58e7('0x44')]=function(_0x1d2ee3,_0x30b736){return db['SquareReport'][_0x58e7('0x44')](_0x1d2ee3[_0x58e7('0x45')],{})['then'](respondWithResult(_0x30b736,0xc9))[_0x58e7('0x41')](handleError(_0x30b736,null));};exports[_0x58e7('0x46')]=function(_0x2306bf,_0x26ae65){if(_0x2306bf[_0x58e7('0x45')]['id']){delete _0x2306bf[_0x58e7('0x45')]['id'];}return db[_0x58e7('0x29')][_0x58e7('0x43')]({'where':{'id':_0x2306bf['params']['id']}})[_0x58e7('0x23')](handleEntityNotFound(_0x26ae65,null))[_0x58e7('0x23')](saveUpdates(_0x2306bf[_0x58e7('0x45')],null))['then'](respondWithResult(_0x26ae65,null))['catch'](handleError(_0x26ae65,null));};exports[_0x58e7('0x47')]=function(_0x54d0c2,_0x1e3c0a){return db[_0x58e7('0x29')]['find']({'where':{'id':_0x54d0c2[_0x58e7('0x48')]['id']}})[_0x58e7('0x23')](handleEntityNotFound(_0x1e3c0a,null))[_0x58e7('0x23')](removeEntity(_0x1e3c0a,null))[_0x58e7('0x41')](handleError(_0x1e3c0a,null));};exports['describe']=function(_0x4f8257,_0x15f4bf){return db[_0x58e7('0x29')][_0x58e7('0x49')]()[_0x58e7('0x23')](respondWithResult(_0x15f4bf,null))[_0x58e7('0x41')](handleError(_0x15f4bf,null));};
\ No newline at end of file
+var _0x9b94=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','name','send','index','SquareReport','rawAttributes','fieldName','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','type','VIRTUAL','filter','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x4fc80b,_0xfe1b3d){var _0x119dba=function(_0x16ed12){while(--_0x16ed12){_0x4fc80b['push'](_0x4fc80b['shift']());}};_0x119dba(++_0xfe1b3d);}(_0x9b94,0x15b));var _0x49b9=function(_0x524cd7,_0x26d3af){_0x524cd7=_0x524cd7-0x0;var _0x53b024=_0x9b94[_0x524cd7];return _0x53b024;};'use strict';var emlformat=require(_0x49b9('0x0'));var rimraf=require(_0x49b9('0x1'));var zipdir=require(_0x49b9('0x2'));var jsonpatch=require(_0x49b9('0x3'));var rp=require('request-promise');var moment=require(_0x49b9('0x4'));var BPromise=require(_0x49b9('0x5'));var Mustache=require(_0x49b9('0x6'));var util=require(_0x49b9('0x7'));var path=require(_0x49b9('0x8'));var sox=require(_0x49b9('0x9'));var csv=require(_0x49b9('0xa'));var ejs=require(_0x49b9('0xb'));var fs=require('fs');var fs_extra=require(_0x49b9('0xc'));var _=require('lodash');var squel=require(_0x49b9('0xd'));var crypto=require('crypto');var jsforce=require(_0x49b9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x49b9('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x49b9('0xf'));var authService=require(_0x49b9('0x10'));var qs=require(_0x49b9('0x11'));var as=require(_0x49b9('0x12'));var hardwareService=require(_0x49b9('0x13'));var logger=require(_0x49b9('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x49b9('0x15'));var licenseUtil=require(_0x49b9('0x16'));var db=require(_0x49b9('0x17'))['db'];function respondWithStatusCode(_0x375450,_0x5c28bf){_0x5c28bf=_0x5c28bf||0xcc;return function(_0xaf081b){if(_0xaf081b){return _0x375450[_0x49b9('0x18')](_0x5c28bf);}return _0x375450[_0x49b9('0x19')](_0x5c28bf)[_0x49b9('0x1a')]();};}function respondWithResult(_0x466caf,_0x464226){_0x464226=_0x464226||0xc8;return function(_0x5cee98){if(_0x5cee98){return _0x466caf[_0x49b9('0x19')](_0x464226)['json'](_0x5cee98);}};}function respondWithFilteredResult(_0x141d37,_0x34ae89){return function(_0x435dab){if(_0x435dab){var _0x3c0458=typeof _0x34ae89[_0x49b9('0x1b')]===_0x49b9('0x1c')&&typeof _0x34ae89[_0x49b9('0x1d')]===_0x49b9('0x1c');var _0x4e1c22=_0x435dab[_0x49b9('0x1e')];var _0x4fc22c=_0x3c0458?0x0:_0x34ae89[_0x49b9('0x1b')];var _0xe7dafc=_0x3c0458?_0x435dab[_0x49b9('0x1e')]:_0x34ae89[_0x49b9('0x1b')]+_0x34ae89[_0x49b9('0x1d')];var _0x44f4d3;if(_0xe7dafc>=_0x4e1c22){_0xe7dafc=_0x4e1c22;_0x44f4d3=0xc8;}else{_0x44f4d3=0xce;}_0x141d37[_0x49b9('0x19')](_0x44f4d3);return _0x141d37['set']('Content-Range',_0x4fc22c+'-'+_0xe7dafc+'/'+_0x4e1c22)['json'](_0x435dab);}return null;};}function patchUpdates(_0x59c6b6){return function(_0x41175b){try{jsonpatch[_0x49b9('0x1f')](_0x41175b,_0x59c6b6,!![]);}catch(_0xc2810a){return BPromise[_0x49b9('0x20')](_0xc2810a);}return _0x41175b[_0x49b9('0x21')]();};}function saveUpdates(_0x16bbcd,_0x354f73){return function(_0x225a2f){if(_0x225a2f){return _0x225a2f[_0x49b9('0x22')](_0x16bbcd)[_0x49b9('0x23')](function(_0x5c13e2){return _0x5c13e2;});}return null;};}function removeEntity(_0x36c3a2,_0x54549d){return function(_0x47b986){if(_0x47b986){return _0x47b986[_0x49b9('0x24')]()[_0x49b9('0x23')](function(){_0x36c3a2['status'](0xcc)[_0x49b9('0x1a')]();});}};}function handleEntityNotFound(_0x433ce7,_0x554b05){return function(_0x2ec6bf){if(!_0x2ec6bf){_0x433ce7['sendStatus'](0x194);}return _0x2ec6bf;};}function handleError(_0x541809,_0x2e5c88){_0x2e5c88=_0x2e5c88||0x1f4;return function(_0x1dc5be){logger[_0x49b9('0x25')](_0x1dc5be['stack']);if(_0x1dc5be[_0x49b9('0x26')]){delete _0x1dc5be[_0x49b9('0x26')];}_0x541809[_0x49b9('0x19')](_0x2e5c88)[_0x49b9('0x27')](_0x1dc5be);};}exports[_0x49b9('0x28')]=function(_0x411eb0,_0x14eb46){var _0x3dda8e={},_0x110ab0={},_0x7e4a1={'count':0x0,'rows':[]};var _0x5a206b=_['map'](db[_0x49b9('0x29')][_0x49b9('0x2a')],function(_0x5930e0){return{'name':_0x5930e0[_0x49b9('0x2b')],'type':_0x5930e0['type']['key']};});_0x110ab0[_0x49b9('0x2c')]=_[_0x49b9('0x2d')](_0x5a206b,'name');_0x110ab0['query']=_[_0x49b9('0x2e')](_0x411eb0[_0x49b9('0x2f')]);_0x110ab0[_0x49b9('0x30')]=_[_0x49b9('0x31')](_0x110ab0[_0x49b9('0x2c')],_0x110ab0['query']);_0x3dda8e['attributes']=_[_0x49b9('0x31')](_0x110ab0['model'],qs[_0x49b9('0x32')](_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x32')]));_0x3dda8e[_0x49b9('0x33')]=_0x3dda8e[_0x49b9('0x33')][_0x49b9('0x34')]?_0x3dda8e[_0x49b9('0x33')]:_0x110ab0[_0x49b9('0x2c')];if(!_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x35')](_0x49b9('0x36'))){_0x3dda8e[_0x49b9('0x1d')]=qs[_0x49b9('0x1d')](_0x411eb0['query'][_0x49b9('0x1d')]);_0x3dda8e[_0x49b9('0x1b')]=qs[_0x49b9('0x1b')](_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x1b')]);}_0x3dda8e['order']=qs['sort'](_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x37')]);_0x3dda8e['where']=qs['filters'](_['pick'](_0x411eb0['query'],_0x110ab0['filters']),_0x5a206b);if(_0x411eb0[_0x49b9('0x2f')]['filter']){_0x3dda8e[_0x49b9('0x38')]=_[_0x49b9('0x39')](_0x3dda8e['where'],{'$or':_[_0x49b9('0x2d')](_0x5a206b,function(_0x824a2f){if(_0x824a2f[_0x49b9('0x3a')]!==_0x49b9('0x3b')){var _0x760bfb={};_0x760bfb[_0x824a2f[_0x49b9('0x26')]]={'$like':'%'+_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x3c')]+'%'};return _0x760bfb;}})});}_0x3dda8e=_[_0x49b9('0x39')]({},_0x3dda8e,_0x411eb0[_0x49b9('0x3d')]);var _0x53682b={'where':_0x3dda8e[_0x49b9('0x38')]};return db['SquareReport']['count'](_0x53682b)[_0x49b9('0x23')](function(_0x5ab508){_0x7e4a1[_0x49b9('0x1e')]=_0x5ab508;if(_0x411eb0[_0x49b9('0x2f')][_0x49b9('0x3e')]){_0x3dda8e['include']=[{'all':!![]}];}return db[_0x49b9('0x29')][_0x49b9('0x3f')](_0x3dda8e);})[_0x49b9('0x23')](function(_0x1b569c){_0x7e4a1[_0x49b9('0x40')]=_0x1b569c;return _0x7e4a1;})['then'](respondWithFilteredResult(_0x14eb46,_0x3dda8e))['catch'](handleError(_0x14eb46,null));};exports[_0x49b9('0x41')]=function(_0xde8897,_0x2e00ad){var _0x2a319d={'raw':!![],'where':{'id':_0xde8897[_0x49b9('0x42')]['id']}},_0x22b3b5={};_0x22b3b5[_0x49b9('0x2c')]=_[_0x49b9('0x2e')](db[_0x49b9('0x29')][_0x49b9('0x2a')]);_0x22b3b5[_0x49b9('0x2f')]=_[_0x49b9('0x2e')](_0xde8897['query']);_0x22b3b5[_0x49b9('0x30')]=_[_0x49b9('0x31')](_0x22b3b5[_0x49b9('0x2c')],_0x22b3b5[_0x49b9('0x2f')]);_0x2a319d['attributes']=_['intersection'](_0x22b3b5[_0x49b9('0x2c')],qs[_0x49b9('0x32')](_0xde8897[_0x49b9('0x2f')]['fields']));_0x2a319d[_0x49b9('0x33')]=_0x2a319d[_0x49b9('0x33')][_0x49b9('0x34')]?_0x2a319d[_0x49b9('0x33')]:_0x22b3b5['model'];if(_0xde8897[_0x49b9('0x2f')][_0x49b9('0x3e')]){_0x2a319d[_0x49b9('0x43')]=[{'all':!![]}];}_0x2a319d=_[_0x49b9('0x39')]({},_0x2a319d,_0xde8897['options']);return db[_0x49b9('0x29')][_0x49b9('0x44')](_0x2a319d)['then'](handleEntityNotFound(_0x2e00ad,null))[_0x49b9('0x23')](respondWithResult(_0x2e00ad,null))[_0x49b9('0x45')](handleError(_0x2e00ad,null));};exports['create']=function(_0x396f4f,_0x2cde6c){return db[_0x49b9('0x29')][_0x49b9('0x46')](_0x396f4f[_0x49b9('0x47')],{})[_0x49b9('0x23')](respondWithResult(_0x2cde6c,0xc9))['catch'](handleError(_0x2cde6c,null));};exports['update']=function(_0x4281eb,_0xcebdf6){if(_0x4281eb[_0x49b9('0x47')]['id']){delete _0x4281eb['body']['id'];}return db[_0x49b9('0x29')]['find']({'where':{'id':_0x4281eb['params']['id']}})[_0x49b9('0x23')](handleEntityNotFound(_0xcebdf6,null))[_0x49b9('0x23')](saveUpdates(_0x4281eb[_0x49b9('0x47')],null))[_0x49b9('0x23')](respondWithResult(_0xcebdf6,null))[_0x49b9('0x45')](handleError(_0xcebdf6,null));};exports[_0x49b9('0x24')]=function(_0x12b2a7,_0x1b89d7){return db[_0x49b9('0x29')][_0x49b9('0x44')]({'where':{'id':_0x12b2a7[_0x49b9('0x42')]['id']}})[_0x49b9('0x23')](handleEntityNotFound(_0x1b89d7,null))[_0x49b9('0x23')](removeEntity(_0x1b89d7,null))[_0x49b9('0x45')](handleError(_0x1b89d7,null));};exports[_0x49b9('0x48')]=function(_0x40e720,_0x2834ea){return db[_0x49b9('0x29')][_0x49b9('0x48')]()[_0x49b9('0x23')](respondWithResult(_0x2834ea,null))[_0x49b9('0x45')](handleError(_0x2834ea,null));};
\ No newline at end of file
index ba8ecf5..1d89d41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea4c=['SquareReport','report_square','uid_pname','leaveAt','util','api','request-promise','../../config/environment','./squareReport.attributes','exports'];(function(_0x130d82,_0x25f49b){var _0x112070=function(_0x5795ee){while(--_0x5795ee){_0x130d82['push'](_0x130d82['shift']());}};_0x112070(++_0x25f49b);}(_0xea4c,0x1c6));var _0xcea4=function(_0x290946,_0x29a1f1){_0x290946=_0x290946-0x0;var _0x2c6568=_0xea4c[_0x290946];return _0x2c6568;};'use strict';var _=require('lodash');var util=require(_0xcea4('0x0'));var logger=require('../../config/logger')(_0xcea4('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xcea4('0x2'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcea4('0x3'));var attributes=require(_0xcea4('0x4'));module[_0xcea4('0x5')]=function(_0xbabd27,_0x18045a){return _0xbabd27['define'](_0xcea4('0x6'),attributes,{'tableName':_0xcea4('0x7'),'paranoid':![],'indexes':[{'name':_0xcea4('0x8'),'fields':['uniqueid','project_name']},{'name':_0xcea4('0x9'),'fields':[_0xcea4('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5d85=['api','moment','bluebird','request-promise','path','rimraf','./squareReport.attributes','exports','define','SquareReport','report_square','uid_pname','leaveAt','lodash','util','../../config/logger'];(function(_0x3711e2,_0x1468e1){var _0x18a556=function(_0x5e0923){while(--_0x5e0923){_0x3711e2['push'](_0x3711e2['shift']());}};_0x18a556(++_0x1468e1);}(_0x5d85,0x7d));var _0x55d8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5d85[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x55d8('0x0'));var util=require(_0x55d8('0x1'));var logger=require(_0x55d8('0x2'))(_0x55d8('0x3'));var moment=require(_0x55d8('0x4'));var BPromise=require(_0x55d8('0x5'));var rp=require(_0x55d8('0x6'));var fs=require('fs');var path=require(_0x55d8('0x7'));var rimraf=require(_0x55d8('0x8'));var config=require('../../config/environment');var attributes=require(_0x55d8('0x9'));module[_0x55d8('0xa')]=function(_0x527ae5,_0x3e6ee7){return _0x527ae5[_0x55d8('0xb')](_0x55d8('0xc'),attributes,{'tableName':_0x55d8('0xd'),'paranoid':![],'indexes':[{'name':_0x55d8('0xe'),'fields':['uniqueid','project_name']},{'name':_0x55d8('0xf'),'fields':[_0x55d8('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index ddaeb03..8045da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee62=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSquareReport','SquareReport','create','body','options','raw','stringify','UpdateSquareReport','update','where','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xee62,0x12c));var _0x2ee6=function(_0x1cf098,_0x18317a){_0x1cf098=_0x1cf098-0x0;var _0x25c460=_0xee62[_0x1cf098];return _0x25c460;};'use strict';var _=require(_0x2ee6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2ee6('0x1'));var rs=require(_0x2ee6('0x2'));var fs=require('fs');var Redis=require(_0x2ee6('0x3'));var db=require(_0x2ee6('0x4'))['db'];var utils=require(_0x2ee6('0x5'));var logger=require(_0x2ee6('0x6'))(_0x2ee6('0x7'));var config=require(_0x2ee6('0x8'));var jayson=require(_0x2ee6('0x9'));var client=jayson[_0x2ee6('0xa')][_0x2ee6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x20f59c,_0x5978a5,_0x12aede){return new BPromise(function(_0x835db9,_0x224e27){return client[_0x2ee6('0xc')](_0x20f59c,_0x12aede)[_0x2ee6('0xd')](function(_0x3cf1e9){logger[_0x2ee6('0xe')](_0x2ee6('0xf'),_0x5978a5,_0x2ee6('0x10'));logger['debug'](_0x2ee6('0x11'),_0x5978a5,_0x2ee6('0x10'),JSON['stringify'](_0x3cf1e9));if(_0x3cf1e9[_0x2ee6('0x12')]){if(_0x3cf1e9[_0x2ee6('0x12')][_0x2ee6('0x13')]===0x1f4){logger[_0x2ee6('0x12')](_0x2ee6('0xf'),_0x5978a5,_0x3cf1e9[_0x2ee6('0x12')][_0x2ee6('0x14')]);return _0x224e27(_0x3cf1e9['error'][_0x2ee6('0x14')]);}logger['error']('SquareReport,\x20%s,\x20%s',_0x5978a5,_0x3cf1e9[_0x2ee6('0x12')][_0x2ee6('0x14')]);return _0x835db9(_0x3cf1e9[_0x2ee6('0x12')][_0x2ee6('0x14')]);}else{logger[_0x2ee6('0xe')](_0x2ee6('0xf'),_0x5978a5,_0x2ee6('0x10'));_0x835db9(_0x3cf1e9[_0x2ee6('0x15')]['message']);}})[_0x2ee6('0x16')](function(_0x134885){logger['error'](_0x2ee6('0xf'),_0x5978a5,_0x134885);_0x224e27(_0x134885);});});}exports[_0x2ee6('0x17')]=function(_0x22a4ee){var _0x2d1ede=this;return new Promise(function(_0x3bdcdd,_0x585814){return db[_0x2ee6('0x18')][_0x2ee6('0x19')](_0x22a4ee[_0x2ee6('0x1a')],{'raw':_0x22a4ee[_0x2ee6('0x1b')]?_0x22a4ee['options'][_0x2ee6('0x1c')]===undefined?!![]:![]:!![]})[_0x2ee6('0xd')](function(_0xdd6464){logger[_0x2ee6('0xe')](_0x2ee6('0x17'),_0x22a4ee);logger['debug'](_0x2ee6('0x17'),_0x22a4ee,JSON[_0x2ee6('0x1d')](_0xdd6464));_0x3bdcdd(_0xdd6464);})[_0x2ee6('0x16')](function(_0x53b67c){logger[_0x2ee6('0x12')](_0x2ee6('0x17'),_0x53b67c[_0x2ee6('0x14')],_0x22a4ee);_0x585814(_0x2d1ede[_0x2ee6('0x12')](0x1f4,_0x53b67c[_0x2ee6('0x14')]));});});};exports[_0x2ee6('0x1e')]=function(_0xfb4592){var _0xe9b08d=this;return new Promise(function(_0x58ad31,_0x3d8004){return db[_0x2ee6('0x18')][_0x2ee6('0x1f')](_0xfb4592[_0x2ee6('0x1a')],{'raw':_0xfb4592[_0x2ee6('0x1b')]?_0xfb4592[_0x2ee6('0x1b')][_0x2ee6('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xfb4592[_0x2ee6('0x1b')]?_0xfb4592['options'][_0x2ee6('0x20')]||null:null,'attributes':_0xfb4592[_0x2ee6('0x1b')]?_0xfb4592[_0x2ee6('0x1b')][_0x2ee6('0x21')]||null:null,'limit':_0xfb4592[_0x2ee6('0x1b')]?_0xfb4592[_0x2ee6('0x1b')]['limit']||null:null})['then'](function(_0x43e23f){logger[_0x2ee6('0xe')]('UpdateSquareReport',_0xfb4592);logger['debug'](_0x2ee6('0x1e'),_0xfb4592,JSON[_0x2ee6('0x1d')](_0x43e23f));_0x58ad31(_0x43e23f);})[_0x2ee6('0x16')](function(_0x48ab){logger['error']('UpdateSquareReport',_0x48ab[_0x2ee6('0x14')],_0xfb4592);_0x3d8004(_0xe9b08d[_0x2ee6('0x12')](0x1f4,_0x48ab['message']));});});};
\ No newline at end of file
+var _0x57f6=['SquareReport,\x20%s,\x20%s','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateSquareReport','body','options','raw','then','debug','catch','UpdateSquareReport','SquareReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','info'];(function(_0x1c6b30,_0x34e35a){var _0x214eeb=function(_0x2c3b8f){while(--_0x2c3b8f){_0x1c6b30['push'](_0x1c6b30['shift']());}};_0x214eeb(++_0x34e35a);}(_0x57f6,0x94));var _0x657f=function(_0x4404ff,_0x13d7a9){_0x4404ff=_0x4404ff-0x0;var _0x5e7b19=_0x57f6[_0x4404ff];return _0x5e7b19;};'use strict';var _=require(_0x657f('0x0'));var util=require(_0x657f('0x1'));var moment=require(_0x657f('0x2'));var BPromise=require(_0x657f('0x3'));var rs=require(_0x657f('0x4'));var fs=require('fs');var Redis=require(_0x657f('0x5'));var db=require(_0x657f('0x6'))['db'];var utils=require(_0x657f('0x7'));var logger=require(_0x657f('0x8'))('rpc');var config=require(_0x657f('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x17f578,_0x3c8b68,_0x53e100){return new BPromise(function(_0x260ac4,_0x15fd8f){return client[_0x657f('0xa')](_0x17f578,_0x53e100)['then'](function(_0x5f2b3f){logger[_0x657f('0xb')](_0x657f('0xc'),_0x3c8b68,'request\x20sent');logger['debug'](_0x657f('0xd'),_0x3c8b68,_0x657f('0xe'),JSON[_0x657f('0xf')](_0x5f2b3f));if(_0x5f2b3f[_0x657f('0x10')]){if(_0x5f2b3f['error']['code']===0x1f4){logger['error']('SquareReport,\x20%s,\x20%s',_0x3c8b68,_0x5f2b3f[_0x657f('0x10')]['message']);return _0x15fd8f(_0x5f2b3f[_0x657f('0x10')]['message']);}logger[_0x657f('0x10')](_0x657f('0xc'),_0x3c8b68,_0x5f2b3f[_0x657f('0x10')][_0x657f('0x11')]);return _0x260ac4(_0x5f2b3f[_0x657f('0x10')]['message']);}else{logger['info'](_0x657f('0xc'),_0x3c8b68,'request\x20sent');_0x260ac4(_0x5f2b3f[_0x657f('0x12')]['message']);}})['catch'](function(_0x430e9a){logger[_0x657f('0x10')](_0x657f('0xc'),_0x3c8b68,_0x430e9a);_0x15fd8f(_0x430e9a);});});}exports[_0x657f('0x13')]=function(_0x41a2c1){var _0xf6a657=this;return new Promise(function(_0x27b5a6,_0x139ed9){return db['SquareReport']['create'](_0x41a2c1[_0x657f('0x14')],{'raw':_0x41a2c1[_0x657f('0x15')]?_0x41a2c1[_0x657f('0x15')][_0x657f('0x16')]===undefined?!![]:![]:!![]})[_0x657f('0x17')](function(_0x132867){logger['info']('CreateSquareReport',_0x41a2c1);logger[_0x657f('0x18')](_0x657f('0x13'),_0x41a2c1,JSON[_0x657f('0xf')](_0x132867));_0x27b5a6(_0x132867);})[_0x657f('0x19')](function(_0x3bbca6){logger[_0x657f('0x10')](_0x657f('0x13'),_0x3bbca6[_0x657f('0x11')],_0x41a2c1);_0x139ed9(_0xf6a657[_0x657f('0x10')](0x1f4,_0x3bbca6['message']));});});};exports[_0x657f('0x1a')]=function(_0x5c902e){var _0x30a2b0=this;return new Promise(function(_0x3620ea,_0x307395){return db[_0x657f('0x1b')][_0x657f('0x1c')](_0x5c902e[_0x657f('0x14')],{'raw':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x1d')]||null:null,'attributes':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x1e')]||null:null,'limit':_0x5c902e[_0x657f('0x15')]?_0x5c902e[_0x657f('0x15')][_0x657f('0x1f')]||null:null})[_0x657f('0x17')](function(_0x40009e){logger['info'](_0x657f('0x1a'),_0x5c902e);logger[_0x657f('0x18')]('UpdateSquareReport',_0x5c902e,JSON['stringify'](_0x40009e));_0x3620ea(_0x40009e);})[_0x657f('0x19')](function(_0x1ca743){logger[_0x657f('0x10')]('UpdateSquareReport',_0x1ca743[_0x657f('0x11')],_0x5c902e);_0x307395(_0x30a2b0[_0x657f('0x10')](0x1f4,_0x1ca743['message']));});});};
\ No newline at end of file
index 49d680c..e45b5b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d09=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','describe','/:id','post','put','update','delete','exports','multer','util','path','connect-timeout'];(function(_0x1fd5eb,_0x235203){var _0x102365=function(_0x54de1f){while(--_0x54de1f){_0x1fd5eb['push'](_0x1fd5eb['shift']());}};_0x102365(++_0x235203);}(_0x8d09,0xac));var _0x98d0=function(_0x2d50be,_0x4e2d7c){_0x2d50be=_0x2d50be-0x0;var _0x2d3545=_0x8d09[_0x2d50be];return _0x2d3545;};'use strict';var multer=require(_0x98d0('0x0'));var util=require(_0x98d0('0x1'));var path=require(_0x98d0('0x2'));var timeout=require(_0x98d0('0x3'));var express=require(_0x98d0('0x4'));var router=express[_0x98d0('0x5')]();var fs_extra=require(_0x98d0('0x6'));var auth=require(_0x98d0('0x7'));var interaction=require(_0x98d0('0x8'));var config=require(_0x98d0('0x9'));var controller=require(_0x98d0('0xa'));router[_0x98d0('0xb')]('/',auth[_0x98d0('0xc')](),controller[_0x98d0('0xd')]);router[_0x98d0('0xb')](_0x98d0('0xe'),auth[_0x98d0('0xc')](),controller[_0x98d0('0xf')]);router[_0x98d0('0xb')](_0x98d0('0x10'),auth[_0x98d0('0xc')](),controller['show']);router[_0x98d0('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x98d0('0x12')](_0x98d0('0x10'),auth[_0x98d0('0xc')](),controller[_0x98d0('0x13')]);router[_0x98d0('0x14')](_0x98d0('0x10'),auth[_0x98d0('0xc')](),controller['destroy']);module[_0x98d0('0x15')]=router;
\ No newline at end of file
+var _0x49f5=['path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','index','/describe','isAuthenticated','show','post','create','/:id','update','delete','destroy','util'];(function(_0x58cfae,_0x582d5e){var _0x288fd7=function(_0x4ee201){while(--_0x4ee201){_0x58cfae['push'](_0x58cfae['shift']());}};_0x288fd7(++_0x582d5e);}(_0x49f5,0x8f));var _0x549f=function(_0x1bc30e,_0x2e2ec6){_0x1bc30e=_0x1bc30e-0x0;var _0x4ad3cc=_0x49f5[_0x1bc30e];return _0x4ad3cc;};'use strict';var multer=require('multer');var util=require(_0x549f('0x0'));var path=require(_0x549f('0x1'));var timeout=require('connect-timeout');var express=require(_0x549f('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x549f('0x3'));var interaction=require(_0x549f('0x4'));var config=require(_0x549f('0x5'));var controller=require(_0x549f('0x6'));router[_0x549f('0x7')]('/',auth['isAuthenticated'](),controller[_0x549f('0x8')]);router[_0x549f('0x7')](_0x549f('0x9'),auth[_0x549f('0xa')](),controller['describe']);router[_0x549f('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x549f('0xb')]);router[_0x549f('0xc')]('/',auth['isAuthenticated'](),controller[_0x549f('0xd')]);router['put'](_0x549f('0xe'),auth['isAuthenticated'](),controller[_0x549f('0xf')]);router[_0x549f('0x10')]('/:id',auth[_0x549f('0xa')](),controller[_0x549f('0x11')]);module['exports']=router;
\ No newline at end of file
index cae3273..13ead50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fdc=['STRING','TEXT','exports'];(function(_0x2658b0,_0x254269){var _0x24c5df=function(_0x2f1de6){while(--_0x2f1de6){_0x2658b0['push'](_0x2658b0['shift']());}};_0x24c5df(++_0x254269);}(_0x9fdc,0xce));var _0xc9fd=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0x9fdc[_0xab9f3d];return _0x5283bf;};'use strict';var Sequelize=require('sequelize');module[_0xc9fd('0x0')]={'uniqueid':{'type':Sequelize['STRING']},'node':{'type':Sequelize[_0xc9fd('0x1')]},'application':{'type':Sequelize[_0xc9fd('0x1')]},'data':{'type':Sequelize[_0xc9fd('0x2')]},'project_name':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xc9fd('0x1')]}};
\ No newline at end of file
+var _0xfcda=['STRING','TEXT','sequelize','exports'];(function(_0x2894f1,_0x2ac412){var _0x21687e=function(_0x2c7309){while(--_0x2c7309){_0x2894f1['push'](_0x2894f1['shift']());}};_0x21687e(++_0x2ac412);}(_0xfcda,0xce));var _0xafcd=function(_0x31d3b4,_0x138abc){_0x31d3b4=_0x31d3b4-0x0;var _0x43b94b=_0xfcda[_0x31d3b4];return _0x43b94b;};'use strict';var Sequelize=require(_0xafcd('0x0'));module[_0xafcd('0x1')]={'uniqueid':{'type':Sequelize[_0xafcd('0x2')]},'node':{'type':Sequelize[_0xafcd('0x2')]},'application':{'type':Sequelize[_0xafcd('0x2')]},'data':{'type':Sequelize[_0xafcd('0x3')]},'project_name':{'type':Sequelize[_0xafcd('0x2')]},'callerid':{'type':Sequelize[_0xafcd('0x2')]}};
\ No newline at end of file
index a60ad3b..c284b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc181=['jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','apply','reject','save','then','error','stack','send','index','SquareDetailsReport','fieldName','type','key','model','name','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','lodash','squel'];(function(_0x3ce6db,_0x2af913){var _0x5c5164=function(_0x387c03){while(--_0x387c03){_0x3ce6db['push'](_0x3ce6db['shift']());}};_0x5c5164(++_0x2af913);}(_0xc181,0x1a4));var _0x1c18=function(_0x566bdf,_0x1f4861){_0x566bdf=_0x566bdf-0x0;var _0x331215=_0xc181[_0x566bdf];return _0x331215;};'use strict';var emlformat=require(_0x1c18('0x0'));var rimraf=require(_0x1c18('0x1'));var zipdir=require(_0x1c18('0x2'));var jsonpatch=require(_0x1c18('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1c18('0x4'));var util=require(_0x1c18('0x5'));var path=require(_0x1c18('0x6'));var sox=require(_0x1c18('0x7'));var csv=require(_0x1c18('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1c18('0x9'));var _=require(_0x1c18('0xa'));var squel=require(_0x1c18('0xb'));var crypto=require('crypto');var jsforce=require(_0x1c18('0xc'));var deskjs=require(_0x1c18('0xd'));var toCsv=require(_0x1c18('0x8'));var querystring=require('querystring');var Papa=require(_0x1c18('0xe'));var Redis=require(_0x1c18('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1c18('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1c18('0x11'))(_0x1c18('0x12'));var utils=require(_0x1c18('0x13'));var config=require(_0x1c18('0x14'));var licenseUtil=require(_0x1c18('0x15'));var db=require(_0x1c18('0x16'))['db'];function respondWithStatusCode(_0x28bbac,_0x5b7123){_0x5b7123=_0x5b7123||0xcc;return function(_0x1b1a30){if(_0x1b1a30){return _0x28bbac[_0x1c18('0x17')](_0x5b7123);}return _0x28bbac[_0x1c18('0x18')](_0x5b7123)['end']();};}function respondWithResult(_0x234e98,_0x34db5b){_0x34db5b=_0x34db5b||0xc8;return function(_0x282a32){if(_0x282a32){return _0x234e98[_0x1c18('0x18')](_0x34db5b)[_0x1c18('0x19')](_0x282a32);}};}function respondWithFilteredResult(_0x105c76,_0x218fec){return function(_0x4479d2){if(_0x4479d2){var _0xe04e5a=typeof _0x218fec['offset']===_0x1c18('0x1a')&&typeof _0x218fec['limit']===_0x1c18('0x1a');var _0x2f1986=_0x4479d2[_0x1c18('0x1b')];var _0x1a174a=_0xe04e5a?0x0:_0x218fec[_0x1c18('0x1c')];var _0x311897=_0xe04e5a?_0x4479d2[_0x1c18('0x1b')]:_0x218fec[_0x1c18('0x1c')]+_0x218fec[_0x1c18('0x1d')];var _0x1cca68;if(_0x311897>=_0x2f1986){_0x311897=_0x2f1986;_0x1cca68=0xc8;}else{_0x1cca68=0xce;}_0x105c76['status'](_0x1cca68);return _0x105c76[_0x1c18('0x1e')]('Content-Range',_0x1a174a+'-'+_0x311897+'/'+_0x2f1986)[_0x1c18('0x19')](_0x4479d2);}return null;};}function patchUpdates(_0x31e9d3){return function(_0x24fa15){try{jsonpatch[_0x1c18('0x1f')](_0x24fa15,_0x31e9d3,!![]);}catch(_0x4ca27a){return BPromise[_0x1c18('0x20')](_0x4ca27a);}return _0x24fa15[_0x1c18('0x21')]();};}function saveUpdates(_0x4800dc,_0x47c96d){return function(_0x4d30e2){if(_0x4d30e2){return _0x4d30e2['update'](_0x4800dc)[_0x1c18('0x22')](function(_0x15a450){return _0x15a450;});}return null;};}function removeEntity(_0x29573e,_0xaa170d){return function(_0x368f8f){if(_0x368f8f){return _0x368f8f['destroy']()[_0x1c18('0x22')](function(){_0x29573e[_0x1c18('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20c755,_0x5061b9){return function(_0x3e7612){if(!_0x3e7612){_0x20c755['sendStatus'](0x194);}return _0x3e7612;};}function handleError(_0x279bb0,_0x1e9ef9){_0x1e9ef9=_0x1e9ef9||0x1f4;return function(_0x69e26c){logger[_0x1c18('0x23')](_0x69e26c[_0x1c18('0x24')]);if(_0x69e26c['name']){delete _0x69e26c['name'];}_0x279bb0[_0x1c18('0x18')](_0x1e9ef9)[_0x1c18('0x25')](_0x69e26c);};}exports[_0x1c18('0x26')]=function(_0x159eb9,_0x32485c){var _0x43801a={},_0x5f50a3={},_0x2369a3={'count':0x0,'rows':[]};var _0x38dddf=_['map'](db[_0x1c18('0x27')]['rawAttributes'],function(_0x59e776){return{'name':_0x59e776[_0x1c18('0x28')],'type':_0x59e776[_0x1c18('0x29')][_0x1c18('0x2a')]};});_0x5f50a3[_0x1c18('0x2b')]=_['map'](_0x38dddf,_0x1c18('0x2c'));_0x5f50a3['query']=_[_0x1c18('0x2d')](_0x159eb9[_0x1c18('0x2e')]);_0x5f50a3[_0x1c18('0x2f')]=_[_0x1c18('0x30')](_0x5f50a3[_0x1c18('0x2b')],_0x5f50a3[_0x1c18('0x2e')]);_0x43801a[_0x1c18('0x31')]=_[_0x1c18('0x30')](_0x5f50a3[_0x1c18('0x2b')],qs[_0x1c18('0x32')](_0x159eb9[_0x1c18('0x2e')][_0x1c18('0x32')]));_0x43801a[_0x1c18('0x31')]=_0x43801a[_0x1c18('0x31')][_0x1c18('0x33')]?_0x43801a[_0x1c18('0x31')]:_0x5f50a3[_0x1c18('0x2b')];if(!_0x159eb9[_0x1c18('0x2e')][_0x1c18('0x34')]('nolimit')){_0x43801a[_0x1c18('0x1d')]=qs[_0x1c18('0x1d')](_0x159eb9[_0x1c18('0x2e')][_0x1c18('0x1d')]);_0x43801a['offset']=qs['offset'](_0x159eb9[_0x1c18('0x2e')][_0x1c18('0x1c')]);}_0x43801a[_0x1c18('0x35')]=qs[_0x1c18('0x36')](_0x159eb9[_0x1c18('0x2e')]['sort']);_0x43801a['where']=qs[_0x1c18('0x2f')](_['pick'](_0x159eb9['query'],_0x5f50a3[_0x1c18('0x2f')]),_0x38dddf);if(_0x159eb9[_0x1c18('0x2e')]['filter']){_0x43801a[_0x1c18('0x37')]=_[_0x1c18('0x38')](_0x43801a['where'],{'$or':_[_0x1c18('0x39')](_0x38dddf,function(_0x289f6e){if(_0x289f6e[_0x1c18('0x29')]!==_0x1c18('0x3a')){var _0xc1c459={};_0xc1c459[_0x289f6e['name']]={'$like':'%'+_0x159eb9[_0x1c18('0x2e')][_0x1c18('0x3b')]+'%'};return _0xc1c459;}})});}_0x43801a=_['merge']({},_0x43801a,_0x159eb9['options']);var _0x579263={'where':_0x43801a[_0x1c18('0x37')]};return db['SquareDetailsReport'][_0x1c18('0x1b')](_0x579263)[_0x1c18('0x22')](function(_0x51142f){_0x2369a3[_0x1c18('0x1b')]=_0x51142f;if(_0x159eb9[_0x1c18('0x2e')][_0x1c18('0x3c')]){_0x43801a[_0x1c18('0x3d')]=[{'all':!![]}];}return db[_0x1c18('0x27')][_0x1c18('0x3e')](_0x43801a);})[_0x1c18('0x22')](function(_0x4c9044){_0x2369a3[_0x1c18('0x3f')]=_0x4c9044;return _0x2369a3;})[_0x1c18('0x22')](respondWithFilteredResult(_0x32485c,_0x43801a))[_0x1c18('0x40')](handleError(_0x32485c,null));};exports[_0x1c18('0x41')]=function(_0x49d7e1,_0x1b66d1){var _0x2951b3={'raw':!![],'where':{'id':_0x49d7e1[_0x1c18('0x42')]['id']}},_0x424efc={};_0x424efc['model']=_[_0x1c18('0x2d')](db[_0x1c18('0x27')][_0x1c18('0x43')]);_0x424efc[_0x1c18('0x2e')]=_[_0x1c18('0x2d')](_0x49d7e1[_0x1c18('0x2e')]);_0x424efc[_0x1c18('0x2f')]=_[_0x1c18('0x30')](_0x424efc[_0x1c18('0x2b')],_0x424efc[_0x1c18('0x2e')]);_0x2951b3[_0x1c18('0x31')]=_[_0x1c18('0x30')](_0x424efc[_0x1c18('0x2b')],qs[_0x1c18('0x32')](_0x49d7e1[_0x1c18('0x2e')][_0x1c18('0x32')]));_0x2951b3['attributes']=_0x2951b3[_0x1c18('0x31')][_0x1c18('0x33')]?_0x2951b3[_0x1c18('0x31')]:_0x424efc['model'];if(_0x49d7e1[_0x1c18('0x2e')][_0x1c18('0x3c')]){_0x2951b3['include']=[{'all':!![]}];}_0x2951b3=_[_0x1c18('0x38')]({},_0x2951b3,_0x49d7e1['options']);return db['SquareDetailsReport'][_0x1c18('0x44')](_0x2951b3)['then'](handleEntityNotFound(_0x1b66d1,null))[_0x1c18('0x22')](respondWithResult(_0x1b66d1,null))[_0x1c18('0x40')](handleError(_0x1b66d1,null));};exports[_0x1c18('0x45')]=function(_0x31d2cf,_0xaada64){return db['SquareDetailsReport'][_0x1c18('0x45')](_0x31d2cf[_0x1c18('0x46')],{})[_0x1c18('0x22')](respondWithResult(_0xaada64,0xc9))[_0x1c18('0x40')](handleError(_0xaada64,null));};exports['update']=function(_0x13eed6,_0x14afcf){if(_0x13eed6['body']['id']){delete _0x13eed6[_0x1c18('0x46')]['id'];}return db['SquareDetailsReport'][_0x1c18('0x44')]({'where':{'id':_0x13eed6[_0x1c18('0x42')]['id']}})[_0x1c18('0x22')](handleEntityNotFound(_0x14afcf,null))[_0x1c18('0x22')](saveUpdates(_0x13eed6[_0x1c18('0x46')],null))[_0x1c18('0x22')](respondWithResult(_0x14afcf,null))[_0x1c18('0x40')](handleError(_0x14afcf,null));};exports['destroy']=function(_0x5e9c7b,_0x922d4f){return db['SquareDetailsReport']['find']({'where':{'id':_0x5e9c7b[_0x1c18('0x42')]['id']}})[_0x1c18('0x22')](handleEntityNotFound(_0x922d4f,null))[_0x1c18('0x22')](removeEntity(_0x922d4f,null))[_0x1c18('0x40')](handleError(_0x922d4f,null));};exports['describe']=function(_0x8fdb99,_0x3b9cb8){return db['SquareDetailsReport'][_0x1c18('0x47')]()[_0x1c18('0x22')](respondWithResult(_0x3b9cb8,null))[_0x1c18('0x40')](handleError(_0x3b9cb8,null));};
\ No newline at end of file
+var _0x243b=['options','include','findAll','rows','catch','params','includeAll','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','../../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','offset','limit','undefined','count','set','Content-Range','save','update','then','error','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','merge','filter'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0x243b,0x9c));var _0xb243=function(_0x2daa01,_0x30ac4b){_0x2daa01=_0x2daa01-0x0;var _0xf1780b=_0x243b[_0x2daa01];return _0xf1780b;};'use strict';var emlformat=require(_0xb243('0x0'));var rimraf=require(_0xb243('0x1'));var zipdir=require(_0xb243('0x2'));var jsonpatch=require(_0xb243('0x3'));var rp=require(_0xb243('0x4'));var moment=require(_0xb243('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb243('0x6'));var util=require('util');var path=require(_0xb243('0x7'));var sox=require(_0xb243('0x8'));var csv=require(_0xb243('0x9'));var ejs=require(_0xb243('0xa'));var fs=require('fs');var fs_extra=require(_0xb243('0xb'));var _=require(_0xb243('0xc'));var squel=require('squel');var crypto=require(_0xb243('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb243('0xe'));var toCsv=require('to-csv');var querystring=require(_0xb243('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb243('0x10'));var qs=require(_0xb243('0x11'));var as=require(_0xb243('0x12'));var hardwareService=require(_0xb243('0x13'));var logger=require(_0xb243('0x14'))(_0xb243('0x15'));var utils=require(_0xb243('0x16'));var config=require(_0xb243('0x17'));var licenseUtil=require(_0xb243('0x18'));var db=require(_0xb243('0x19'))['db'];function respondWithStatusCode(_0x55432f,_0xd31d31){_0xd31d31=_0xd31d31||0xcc;return function(_0xb1259a){if(_0xb1259a){return _0x55432f[_0xb243('0x1a')](_0xd31d31);}return _0x55432f[_0xb243('0x1b')](_0xd31d31)[_0xb243('0x1c')]();};}function respondWithResult(_0x1e48ed,_0x28d0fb){_0x28d0fb=_0x28d0fb||0xc8;return function(_0x45baf2){if(_0x45baf2){return _0x1e48ed['status'](_0x28d0fb)['json'](_0x45baf2);}};}function respondWithFilteredResult(_0x3813fe,_0x2d378a){return function(_0x3232e8){if(_0x3232e8){var _0x36c98e=typeof _0x2d378a[_0xb243('0x1d')]==='undefined'&&typeof _0x2d378a[_0xb243('0x1e')]===_0xb243('0x1f');var _0x293f96=_0x3232e8[_0xb243('0x20')];var _0x410aca=_0x36c98e?0x0:_0x2d378a[_0xb243('0x1d')];var _0x2e3efa=_0x36c98e?_0x3232e8[_0xb243('0x20')]:_0x2d378a[_0xb243('0x1d')]+_0x2d378a[_0xb243('0x1e')];var _0x391714;if(_0x2e3efa>=_0x293f96){_0x2e3efa=_0x293f96;_0x391714=0xc8;}else{_0x391714=0xce;}_0x3813fe[_0xb243('0x1b')](_0x391714);return _0x3813fe[_0xb243('0x21')](_0xb243('0x22'),_0x410aca+'-'+_0x2e3efa+'/'+_0x293f96)['json'](_0x3232e8);}return null;};}function patchUpdates(_0x480fee){return function(_0x263eeb){try{jsonpatch['apply'](_0x263eeb,_0x480fee,!![]);}catch(_0x6dc2e){return BPromise['reject'](_0x6dc2e);}return _0x263eeb[_0xb243('0x23')]();};}function saveUpdates(_0x58a617,_0x2a3787){return function(_0x25218a){if(_0x25218a){return _0x25218a[_0xb243('0x24')](_0x58a617)[_0xb243('0x25')](function(_0x2e4eda){return _0x2e4eda;});}return null;};}function removeEntity(_0x27294e,_0x380cd1){return function(_0x38fec6){if(_0x38fec6){return _0x38fec6['destroy']()[_0xb243('0x25')](function(){_0x27294e[_0xb243('0x1b')](0xcc)[_0xb243('0x1c')]();});}};}function handleEntityNotFound(_0x402de0,_0xcdf140){return function(_0x50a398){if(!_0x50a398){_0x402de0[_0xb243('0x1a')](0x194);}return _0x50a398;};}function handleError(_0x49bd2d,_0x5aad70){_0x5aad70=_0x5aad70||0x1f4;return function(_0x13caee){logger[_0xb243('0x26')](_0x13caee['stack']);if(_0x13caee[_0xb243('0x27')]){delete _0x13caee[_0xb243('0x27')];}_0x49bd2d['status'](_0x5aad70)[_0xb243('0x28')](_0x13caee);};}exports[_0xb243('0x29')]=function(_0x1f6ba1,_0x237bc6){var _0xa5e830={},_0x14ca7b={},_0x1bc9f6={'count':0x0,'rows':[]};var _0x7a32e6=_[_0xb243('0x2a')](db[_0xb243('0x2b')][_0xb243('0x2c')],function(_0x3efaa3){return{'name':_0x3efaa3[_0xb243('0x2d')],'type':_0x3efaa3[_0xb243('0x2e')][_0xb243('0x2f')]};});_0x14ca7b[_0xb243('0x30')]=_[_0xb243('0x2a')](_0x7a32e6,_0xb243('0x27'));_0x14ca7b[_0xb243('0x31')]=_[_0xb243('0x32')](_0x1f6ba1['query']);_0x14ca7b[_0xb243('0x33')]=_[_0xb243('0x34')](_0x14ca7b[_0xb243('0x30')],_0x14ca7b[_0xb243('0x31')]);_0xa5e830[_0xb243('0x35')]=_['intersection'](_0x14ca7b[_0xb243('0x30')],qs[_0xb243('0x36')](_0x1f6ba1['query']['fields']));_0xa5e830[_0xb243('0x35')]=_0xa5e830[_0xb243('0x35')][_0xb243('0x37')]?_0xa5e830['attributes']:_0x14ca7b[_0xb243('0x30')];if(!_0x1f6ba1[_0xb243('0x31')][_0xb243('0x38')](_0xb243('0x39'))){_0xa5e830[_0xb243('0x1e')]=qs[_0xb243('0x1e')](_0x1f6ba1[_0xb243('0x31')][_0xb243('0x1e')]);_0xa5e830['offset']=qs[_0xb243('0x1d')](_0x1f6ba1['query']['offset']);}_0xa5e830[_0xb243('0x3a')]=qs['sort'](_0x1f6ba1[_0xb243('0x31')]['sort']);_0xa5e830[_0xb243('0x3b')]=qs['filters'](_[_0xb243('0x3c')](_0x1f6ba1[_0xb243('0x31')],_0x14ca7b[_0xb243('0x33')]),_0x7a32e6);if(_0x1f6ba1[_0xb243('0x31')]['filter']){_0xa5e830[_0xb243('0x3b')]=_[_0xb243('0x3d')](_0xa5e830[_0xb243('0x3b')],{'$or':_['map'](_0x7a32e6,function(_0x5e9786){if(_0x5e9786[_0xb243('0x2e')]!=='VIRTUAL'){var _0x3f6e89={};_0x3f6e89[_0x5e9786[_0xb243('0x27')]]={'$like':'%'+_0x1f6ba1[_0xb243('0x31')][_0xb243('0x3e')]+'%'};return _0x3f6e89;}})});}_0xa5e830=_[_0xb243('0x3d')]({},_0xa5e830,_0x1f6ba1[_0xb243('0x3f')]);var _0x343080={'where':_0xa5e830[_0xb243('0x3b')]};return db['SquareDetailsReport'][_0xb243('0x20')](_0x343080)[_0xb243('0x25')](function(_0xc8ddda){_0x1bc9f6[_0xb243('0x20')]=_0xc8ddda;if(_0x1f6ba1[_0xb243('0x31')]['includeAll']){_0xa5e830[_0xb243('0x40')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0xb243('0x41')](_0xa5e830);})[_0xb243('0x25')](function(_0x277021){_0x1bc9f6[_0xb243('0x42')]=_0x277021;return _0x1bc9f6;})[_0xb243('0x25')](respondWithFilteredResult(_0x237bc6,_0xa5e830))[_0xb243('0x43')](handleError(_0x237bc6,null));};exports['show']=function(_0x4ab100,_0x51597a){var _0x46a225={'raw':!![],'where':{'id':_0x4ab100[_0xb243('0x44')]['id']}},_0x768de4={};_0x768de4[_0xb243('0x30')]=_[_0xb243('0x32')](db[_0xb243('0x2b')][_0xb243('0x2c')]);_0x768de4[_0xb243('0x31')]=_[_0xb243('0x32')](_0x4ab100['query']);_0x768de4[_0xb243('0x33')]=_['intersection'](_0x768de4[_0xb243('0x30')],_0x768de4[_0xb243('0x31')]);_0x46a225[_0xb243('0x35')]=_[_0xb243('0x34')](_0x768de4[_0xb243('0x30')],qs['fields'](_0x4ab100['query']['fields']));_0x46a225['attributes']=_0x46a225[_0xb243('0x35')][_0xb243('0x37')]?_0x46a225[_0xb243('0x35')]:_0x768de4[_0xb243('0x30')];if(_0x4ab100[_0xb243('0x31')][_0xb243('0x45')]){_0x46a225[_0xb243('0x40')]=[{'all':!![]}];}_0x46a225=_[_0xb243('0x3d')]({},_0x46a225,_0x4ab100[_0xb243('0x3f')]);return db[_0xb243('0x2b')][_0xb243('0x46')](_0x46a225)['then'](handleEntityNotFound(_0x51597a,null))[_0xb243('0x25')](respondWithResult(_0x51597a,null))[_0xb243('0x43')](handleError(_0x51597a,null));};exports['create']=function(_0x4a49ec,_0x224a44){return db[_0xb243('0x2b')]['create'](_0x4a49ec['body'],{})[_0xb243('0x25')](respondWithResult(_0x224a44,0xc9))['catch'](handleError(_0x224a44,null));};exports[_0xb243('0x24')]=function(_0x348b7b,_0x1ebe74){if(_0x348b7b[_0xb243('0x47')]['id']){delete _0x348b7b['body']['id'];}return db[_0xb243('0x2b')]['find']({'where':{'id':_0x348b7b['params']['id']}})[_0xb243('0x25')](handleEntityNotFound(_0x1ebe74,null))[_0xb243('0x25')](saveUpdates(_0x348b7b[_0xb243('0x47')],null))['then'](respondWithResult(_0x1ebe74,null))[_0xb243('0x43')](handleError(_0x1ebe74,null));};exports['destroy']=function(_0x58fd97,_0x459e45){return db['SquareDetailsReport'][_0xb243('0x46')]({'where':{'id':_0x58fd97[_0xb243('0x44')]['id']}})['then'](handleEntityNotFound(_0x459e45,null))[_0xb243('0x25')](removeEntity(_0x459e45,null))[_0xb243('0x43')](handleError(_0x459e45,null));};exports[_0xb243('0x48')]=function(_0x4b2b38,_0x1d80ad){return db[_0xb243('0x2b')][_0xb243('0x48')]()[_0xb243('0x25')](respondWithResult(_0x1d80ad,null))[_0xb243('0x43')](handleError(_0x1d80ad,null));};
\ No newline at end of file
index 8997e3f..afb9ae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec21=['SquareDetailsReport','report_square_details','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','exports'];(function(_0x19df6a,_0x55d5d9){var _0x8376d4=function(_0x7a3f59){while(--_0x7a3f59){_0x19df6a['push'](_0x19df6a['shift']());}};_0x8376d4(++_0x55d5d9);}(_0xec21,0x16d));var _0x1ec2=function(_0x46cf00,_0x457a43){_0x46cf00=_0x46cf00-0x0;var _0x3974dc=_0xec21[_0x46cf00];return _0x3974dc;};'use strict';var _=require(_0x1ec2('0x0'));var util=require(_0x1ec2('0x1'));var logger=require(_0x1ec2('0x2'))('api');var moment=require(_0x1ec2('0x3'));var BPromise=require(_0x1ec2('0x4'));var rp=require(_0x1ec2('0x5'));var fs=require('fs');var path=require(_0x1ec2('0x6'));var rimraf=require('rimraf');var config=require(_0x1ec2('0x7'));var attributes=require('./squareReportDetail.attributes');module[_0x1ec2('0x8')]=function(_0x56c3d5,_0x2aafd9){return _0x56c3d5['define'](_0x1ec2('0x9'),attributes,{'tableName':_0x1ec2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0889=['../../config/environment','exports','define','SquareDetailsReport','report_square_details','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x16ee05,_0x2a6691){var _0x11a306=function(_0x3eb660){while(--_0x3eb660){_0x16ee05['push'](_0x16ee05['shift']());}};_0x11a306(++_0x2a6691);}(_0x0889,0xb9));var _0x9088=function(_0x387e15,_0xddb1ff){_0x387e15=_0x387e15-0x0;var _0x413e13=_0x0889[_0x387e15];return _0x413e13;};'use strict';var _=require(_0x9088('0x0'));var util=require('util');var logger=require(_0x9088('0x1'))(_0x9088('0x2'));var moment=require(_0x9088('0x3'));var BPromise=require(_0x9088('0x4'));var rp=require(_0x9088('0x5'));var fs=require('fs');var path=require(_0x9088('0x6'));var rimraf=require('rimraf');var config=require(_0x9088('0x7'));var attributes=require('./squareReportDetail.attributes');module[_0x9088('0x8')]=function(_0x518647,_0x322e86){return _0x518647[_0x9088('0x9')](_0x9088('0xa'),attributes,{'tableName':_0x9088('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a425b4e..4862ca3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae60=['client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise'];(function(_0x71bb53,_0x5970da){var _0x46c0bd=function(_0x1716b0){while(--_0x1716b0){_0x71bb53['push'](_0x71bb53['shift']());}};_0x46c0bd(++_0x5970da);}(_0xae60,0x1c7));var _0x0ae6=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0xae60[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0x0ae6('0x0'));var util=require(_0x0ae6('0x1'));var moment=require(_0x0ae6('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ae6('0x3'));var fs=require('fs');var Redis=require(_0x0ae6('0x4'));var db=require(_0x0ae6('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0ae6('0x6'))(_0x0ae6('0x7'));var config=require('../../config/environment');var jayson=require(_0x0ae6('0x8'));var client=jayson[_0x0ae6('0x9')][_0x0ae6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x46fed4,_0xbb596c,_0x447a1d){return new BPromise(function(_0x120910,_0x1b5e80){return client['request'](_0x46fed4,_0x447a1d)[_0x0ae6('0xb')](function(_0x36a5e0){logger[_0x0ae6('0xc')](_0x0ae6('0xd'),_0xbb596c,'request\x20sent');logger[_0x0ae6('0xe')](_0x0ae6('0xf'),_0xbb596c,_0x0ae6('0x10'),JSON[_0x0ae6('0x11')](_0x36a5e0));if(_0x36a5e0[_0x0ae6('0x12')]){if(_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x13')]===0x1f4){logger[_0x0ae6('0x12')](_0x0ae6('0xd'),_0xbb596c,_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);return _0x1b5e80(_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);}logger[_0x0ae6('0x12')]('SquareDetailsReport,\x20%s,\x20%s',_0xbb596c,_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);return _0x120910(_0x36a5e0[_0x0ae6('0x12')][_0x0ae6('0x14')]);}else{logger[_0x0ae6('0xc')](_0x0ae6('0xd'),_0xbb596c,_0x0ae6('0x10'));_0x120910(_0x36a5e0[_0x0ae6('0x15')][_0x0ae6('0x14')]);}})[_0x0ae6('0x16')](function(_0x8a4c9a){logger[_0x0ae6('0x12')](_0x0ae6('0xd'),_0xbb596c,_0x8a4c9a);_0x1b5e80(_0x8a4c9a);});});}exports[_0x0ae6('0x17')]=function(_0xda4f01){var _0x3f5c41=this;return new Promise(function(_0x2fdf25,_0x1735ba){return db[_0x0ae6('0x18')][_0x0ae6('0x19')](_0xda4f01[_0x0ae6('0x1a')],{'raw':_0xda4f01[_0x0ae6('0x1b')]?_0xda4f01['options'][_0x0ae6('0x1c')]===undefined?!![]:![]:!![]})[_0x0ae6('0xb')](function(_0x140a3b){logger[_0x0ae6('0xc')](_0x0ae6('0x17'),_0xda4f01);logger[_0x0ae6('0xe')](_0x0ae6('0x17'),_0xda4f01,JSON[_0x0ae6('0x11')](_0x140a3b));_0x2fdf25(_0x140a3b);})['catch'](function(_0x39b22e){logger[_0x0ae6('0x12')](_0x0ae6('0x17'),_0x39b22e[_0x0ae6('0x14')],_0xda4f01);_0x1735ba(_0x3f5c41[_0x0ae6('0x12')](0x1f4,_0x39b22e['message']));});});};
\ No newline at end of file
+var _0x3266=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SquareDetailsReport,\x20%s,\x20%s','message','body','options','raw','catch','CreateSquareDetailsReport','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1e44e2,_0x1b58b2){var _0x2d1878=function(_0xf8aae3){while(--_0xf8aae3){_0x1e44e2['push'](_0x1e44e2['shift']());}};_0x2d1878(++_0x1b58b2);}(_0x3266,0x6a));var _0x6326=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0x3266[_0x273dc5];return _0x46dae7;};'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});function respondWithRpcPromise(_0x14208e,_0x5402e5,_0x161f4e){return new BPromise(function(_0x5730e7,_0x2af571){return client[_0x6326('0xc')](_0x14208e,_0x161f4e)[_0x6326('0xd')](function(_0x1aee60){logger[_0x6326('0xe')]('SquareDetailsReport,\x20%s,\x20%s',_0x5402e5,_0x6326('0xf'));logger[_0x6326('0x10')](_0x6326('0x11'),_0x5402e5,_0x6326('0xf'),JSON[_0x6326('0x12')](_0x1aee60));if(_0x1aee60[_0x6326('0x13')]){if(_0x1aee60[_0x6326('0x13')][_0x6326('0x14')]===0x1f4){logger[_0x6326('0x13')](_0x6326('0x15'),_0x5402e5,_0x1aee60['error']['message']);return _0x2af571(_0x1aee60[_0x6326('0x13')][_0x6326('0x16')]);}logger['error'](_0x6326('0x15'),_0x5402e5,_0x1aee60['error'][_0x6326('0x16')]);return _0x5730e7(_0x1aee60[_0x6326('0x13')][_0x6326('0x16')]);}else{logger[_0x6326('0xe')](_0x6326('0x15'),_0x5402e5,_0x6326('0xf'));_0x5730e7(_0x1aee60['result'][_0x6326('0x16')]);}})['catch'](function(_0x5945ee){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x5402e5,_0x5945ee);_0x2af571(_0x5945ee);});});}exports['CreateSquareDetailsReport']=function(_0x58e960){var _0xdf5ced=this;return new Promise(function(_0x1f4c11,_0x2be78e){return db['SquareDetailsReport']['create'](_0x58e960[_0x6326('0x17')],{'raw':_0x58e960[_0x6326('0x18')]?_0x58e960[_0x6326('0x18')][_0x6326('0x19')]===undefined?!![]:![]:!![]})[_0x6326('0xd')](function(_0x25957a){logger[_0x6326('0xe')]('CreateSquareDetailsReport',_0x58e960);logger[_0x6326('0x10')]('CreateSquareDetailsReport',_0x58e960,JSON[_0x6326('0x12')](_0x25957a));_0x1f4c11(_0x25957a);})[_0x6326('0x1a')](function(_0x2482ef){logger[_0x6326('0x13')](_0x6326('0x1b'),_0x2482ef[_0x6326('0x16')],_0x58e960);_0x2be78e(_0xdf5ced[_0x6326('0x13')](0x1f4,_0x2482ef[_0x6326('0x16')]));});});};
\ No newline at end of file
index b2e7bdf..2f7746c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa408=['get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router','../../components/auth/service','./system.controller'];(function(_0x451353,_0x19710b){var _0x102315=function(_0x51204c){while(--_0x51204c){_0x451353['push'](_0x451353['shift']());}};_0x102315(++_0x19710b);}(_0xa408,0x92));var _0x8a40=function(_0x104a84,_0x285970){_0x104a84=_0x104a84-0x0;var _0x4973ff=_0xa408[_0x104a84];return _0x4973ff;};'use strict';var express=require(_0x8a40('0x0'));var router=express[_0x8a40('0x1')]();var auth=require(_0x8a40('0x2'));var controller=require(_0x8a40('0x3'));router[_0x8a40('0x4')]('/',auth[_0x8a40('0x5')](),controller[_0x8a40('0x6')]);router['get'](_0x8a40('0x7'),auth['isAuthenticated'](),controller[_0x8a40('0x8')]);module[_0x8a40('0x9')]=router;
\ No newline at end of file
+var _0xc7f8=['Router','../../components/auth/service','get','isAuthenticated','index','/process/:pid/kill','killProcess'];(function(_0xbceb8d,_0x482279){var _0x121a58=function(_0x1e6c98){while(--_0x1e6c98){_0xbceb8d['push'](_0xbceb8d['shift']());}};_0x121a58(++_0x482279);}(_0xc7f8,0xfc));var _0x8c7f=function(_0x265910,_0x1815ee){_0x265910=_0x265910-0x0;var _0x2e2c72=_0xc7f8[_0x265910];return _0x2e2c72;};'use strict';var express=require('express');var router=express[_0x8c7f('0x0')]();var auth=require(_0x8c7f('0x1'));var controller=require('./system.controller');router[_0x8c7f('0x2')]('/',auth[_0x8c7f('0x3')](),controller[_0x8c7f('0x4')]);router[_0x8c7f('0x2')](_0x8c7f('0x5'),auth['isAuthenticated'](),controller[_0x8c7f('0x6')]);module['exports']=router;
\ No newline at end of file
index 3b3456b..3e549c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa986=['name','status','send','getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process','exec','util','bluebird','lodash','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect'];(function(_0x308157,_0x9a4eb2){var _0x37303e=function(_0x5ebe48){while(--_0x5ebe48){_0x308157['push'](_0x308157['shift']());}};_0x37303e(++_0x9a4eb2);}(_0xa986,0x1a8));var _0x6a98=function(_0x20a9e7,_0x1f2a2a){_0x20a9e7=_0x20a9e7-0x0;var _0x49e927=_0xa986[_0x20a9e7];return _0x49e927;};'use strict';var info=require(_0x6a98('0x0'));var exec=require(_0x6a98('0x1'))[_0x6a98('0x2')];var logger=require('../../config/logger')('api');var util=require(_0x6a98('0x3'));var BPromise=require(_0x6a98('0x4'));var _=require(_0x6a98('0x5'));function handleError(_0x5a6797,_0x13eecd,_0x30fac3){_0x13eecd=_0x13eecd||0x1f4;return function(_0x562c8c){logger['error'](_0x6a98('0x6'),_0x30fac3,_0x13eecd,util[_0x6a98('0x7')](_0x562c8c,{'showHidden':![],'depth':null}));delete _0x562c8c[_0x6a98('0x8')];_0x5a6797[_0x6a98('0x9')](_0x13eecd)[_0x6a98('0xa')](_0x562c8c);};}exports['index']=function(_0x43ccb9,_0x4c6726){return info[_0x6a98('0xb')]()[_0x6a98('0xc')](function(_0x4c5b82){return _0x4c6726[_0x6a98('0x9')](0xc8)[_0x6a98('0xd')](_0x4c5b82);})[_0x6a98('0xe')](function(_0x3b7b76){return _0x4c6726[_0x6a98('0x9')](0x1f4)[_0x6a98('0xd')](_0x3b7b76);});};exports[_0x6a98('0xf')]=function(_0x5c5e89,_0xffa22b){var _0x18bc4a=[_0x6a98('0x10')];return new BPromise(function(_0xe1bb01,_0x35d819){return exec(util[_0x6a98('0x11')](_0x6a98('0x12'),_0x5c5e89[_0x6a98('0x13')][_0x6a98('0x14')]),function(_0x45da07,_0x501b8b,_0x578f4a){if(_0x45da07){return _0x35d819(_0x45da07);}return _0xe1bb01(_0x501b8b);});})[_0x6a98('0xc')](function(_0x30da0d){var _0x1fd7d3=![];var _0x3dc4ee=_0x30da0d['split'](/\n/);for(var _0x418210=0x0,_0x39e45b=_0x18bc4a[_0x6a98('0x15')];_0x418210<_0x39e45b,_0x1fd7d3===![];_0x418210+=0x1){if(_0x30da0d[_0x6a98('0x16')](_0x18bc4a[_0x418210])>=0x0){_0x1fd7d3=!![];}}if(!_0x1fd7d3){throw new Error(util[_0x6a98('0x11')](_0x6a98('0x17'),_0x5c5e89[_0x6a98('0x13')][_0x6a98('0x14')]));}process[_0x6a98('0x18')](_0x5c5e89[_0x6a98('0x13')][_0x6a98('0x14')],_0x6a98('0x19'));return _0xffa22b[_0x6a98('0x9')](0xc8)[_0x6a98('0xd')]({'message':util['format'](_0x6a98('0x1a'),_0x5c5e89[_0x6a98('0x13')][_0x6a98('0x14')])});})[_0x6a98('0xe')](handleError(_0xffa22b,null,_0x6a98('0xf')));};
\ No newline at end of file
+var _0x15f4=['inspect','name','status','send','index','getAllData','then','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','systeminformation','child_process','../../config/logger','api','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s'];(function(_0x57e21d,_0x71a800){var _0x3a057e=function(_0x35b9d8){while(--_0x35b9d8){_0x57e21d['push'](_0x57e21d['shift']());}};_0x3a057e(++_0x71a800);}(_0x15f4,0x1aa));var _0x415f=function(_0x2de245,_0x4ddd2e){_0x2de245=_0x2de245-0x0;var _0x845d5d=_0x15f4[_0x2de245];return _0x845d5d;};'use strict';var info=require(_0x415f('0x0'));var exec=require(_0x415f('0x1'))['exec'];var logger=require(_0x415f('0x2'))(_0x415f('0x3'));var util=require(_0x415f('0x4'));var BPromise=require(_0x415f('0x5'));var _=require(_0x415f('0x6'));function handleError(_0x43bbd5,_0x4c3df5,_0x4065cc){_0x4c3df5=_0x4c3df5||0x1f4;return function(_0x4bb39d){logger[_0x415f('0x7')](_0x415f('0x8'),_0x4065cc,_0x4c3df5,util[_0x415f('0x9')](_0x4bb39d,{'showHidden':![],'depth':null}));delete _0x4bb39d[_0x415f('0xa')];_0x43bbd5[_0x415f('0xb')](_0x4c3df5)[_0x415f('0xc')](_0x4bb39d);};}exports[_0x415f('0xd')]=function(_0x1a1687,_0x2b0104){return info[_0x415f('0xe')]()[_0x415f('0xf')](function(_0x3e36c2){return _0x2b0104['status'](0xc8)[_0x415f('0x10')](_0x3e36c2);})['catch'](function(_0x3265c5){return _0x2b0104[_0x415f('0xb')](0x1f4)['json'](_0x3265c5);});};exports[_0x415f('0x11')]=function(_0x5b71a3,_0x2b473e){var _0x2e708c=[_0x415f('0x12')];return new BPromise(function(_0x1aad8a,_0x26a0bb){return exec(util[_0x415f('0x13')](_0x415f('0x14'),_0x5b71a3['params'][_0x415f('0x15')]),function(_0x348c94,_0x4dd5a3,_0x419839){if(_0x348c94){return _0x26a0bb(_0x348c94);}return _0x1aad8a(_0x4dd5a3);});})['then'](function(_0x504254){var _0x5c2b1a=![];var _0x3aa2c0=_0x504254['split'](/\n/);for(var _0x30699e=0x0,_0x54f1f8=_0x2e708c[_0x415f('0x16')];_0x30699e<_0x54f1f8,_0x5c2b1a===![];_0x30699e+=0x1){if(_0x504254[_0x415f('0x17')](_0x2e708c[_0x30699e])>=0x0){_0x5c2b1a=!![];}}if(!_0x5c2b1a){throw new Error(util['format'](_0x415f('0x18'),_0x5b71a3[_0x415f('0x19')]['pid']));}process[_0x415f('0x1a')](_0x5b71a3[_0x415f('0x19')]['pid'],'SIGINT');return _0x2b473e['status'](0xc8)[_0x415f('0x10')]({'message':util[_0x415f('0x13')](_0x415f('0x1b'),_0x5b71a3[_0x415f('0x19')]['pid'])});})[_0x415f('0x1c')](handleError(_0x2b473e,null,_0x415f('0x11')));};
\ No newline at end of file
index d138025..b7959b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb072=['update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','/:id','show','post','create','put'];(function(_0x2f71f6,_0x3a1f4d){var _0x2b23ea=function(_0x285980){while(--_0x285980){_0x2f71f6['push'](_0x2f71f6['shift']());}};_0x2b23ea(++_0x3a1f4d);}(_0xb072,0x1a7));var _0x2b07=function(_0x2d6346,_0x5a58b2){_0x2d6346=_0x2d6346-0x0;var _0x23aee5=_0xb072[_0x2d6346];return _0x23aee5;};'use strict';var multer=require(_0x2b07('0x0'));var util=require(_0x2b07('0x1'));var path=require('path');var timeout=require(_0x2b07('0x2'));var express=require(_0x2b07('0x3'));var router=express[_0x2b07('0x4')]();var fs_extra=require(_0x2b07('0x5'));var auth=require(_0x2b07('0x6'));var interaction=require(_0x2b07('0x7'));var config=require(_0x2b07('0x8'));var controller=require(_0x2b07('0x9'));router[_0x2b07('0xa')]('/',auth[_0x2b07('0xb')](),controller['index']);router[_0x2b07('0xa')](_0x2b07('0xc'),auth['isAuthenticated'](),controller[_0x2b07('0xd')]);router[_0x2b07('0xe')]('/',auth['isAuthenticated'](),controller[_0x2b07('0xf')]);router[_0x2b07('0x10')](_0x2b07('0xc'),auth[_0x2b07('0xb')](),controller[_0x2b07('0x11')]);router['delete']('/:id',auth[_0x2b07('0xb')](),controller[_0x2b07('0x12')]);module[_0x2b07('0x13')]=router;
\ No newline at end of file
+var _0x9025=['../../components/interaction/service','../../config/environment','./tag.controller','get','isAuthenticated','show','create','put','/:id','delete','destroy','exports','connect-timeout','express','Router','../../components/auth/service'];(function(_0x52cc18,_0x4a66b9){var _0x3244e9=function(_0x43590e){while(--_0x43590e){_0x52cc18['push'](_0x52cc18['shift']());}};_0x3244e9(++_0x4a66b9);}(_0x9025,0x17c));var _0x5902=function(_0x22802a,_0x36e544){_0x22802a=_0x22802a-0x0;var _0x25f90d=_0x9025[_0x22802a];return _0x25f90d;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x5902('0x0'));var express=require(_0x5902('0x1'));var router=express[_0x5902('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x5902('0x3'));var interaction=require(_0x5902('0x4'));var config=require(_0x5902('0x5'));var controller=require(_0x5902('0x6'));router[_0x5902('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth[_0x5902('0x8')](),controller[_0x5902('0x9')]);router['post']('/',auth[_0x5902('0x8')](),controller[_0x5902('0xa')]);router[_0x5902('0xb')](_0x5902('0xc'),auth[_0x5902('0x8')](),controller['update']);router[_0x5902('0xd')](_0x5902('0xc'),auth[_0x5902('0x8')](),controller[_0x5902('0xe')]);module[_0x5902('0xf')]=router;
\ No newline at end of file
index d86dc15..2cf423a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['name','STRING','sequelize'];(function(_0x3104e5,_0x534338){var _0x215936=function(_0x5a49c6){while(--_0x5a49c6){_0x3104e5['push'](_0x3104e5['shift']());}};_0x215936(++_0x534338);}(_0xf7b4,0x152));var _0x4f7b=function(_0x908ebc,_0x356592){_0x908ebc=_0x908ebc-0x0;var _0x30c9e6=_0xf7b4[_0x908ebc];return _0x30c9e6;};'use strict';var Sequelize=require(_0x4f7b('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x4f7b('0x1'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x4f7b('0x2')],'defaultValue':'#0091EA'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xab75=['exports','STRING','#0091EA','sequelize'];(function(_0x2af3ae,_0x405156){var _0x2e3c56=function(_0x4df9b5){while(--_0x4df9b5){_0x2af3ae['push'](_0x2af3ae['shift']());}};_0x2e3c56(++_0x405156);}(_0xab75,0x11f));var _0x5ab7=function(_0x231685,_0x1db8a1){_0x231685=_0x231685-0x0;var _0x14f842=_0xab75[_0x231685];return _0x14f842;};'use strict';var Sequelize=require(_0x5ab7('0x0'));module[_0x5ab7('0x1')]={'name':{'type':Sequelize[_0x5ab7('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x5ab7('0x3')},'description':{'type':Sequelize[_0x5ab7('0x2')]}};
\ No newline at end of file
index de31c9b..319ecc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9099=['includeAll','findAll','rows','catch','show','keys','length','include','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','autoAssociation','UserProfileResource','update','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','then','get','Tags','destroy','error','stack','name','index','map','Tag','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x25656f,_0x4cf8be){var _0x6e703f=function(_0x334697){while(--_0x334697){_0x25656f['push'](_0x25656f['shift']());}};_0x6e703f(++_0x4cf8be);}(_0x9099,0x1ac));var _0x9909=function(_0x29ce14,_0x334166){_0x29ce14=_0x29ce14-0x0;var _0x48f289=_0x9099[_0x29ce14];return _0x48f289;};'use strict';var emlformat=require(_0x9909('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9909('0x1'));var jsonpatch=require(_0x9909('0x2'));var rp=require(_0x9909('0x3'));var moment=require(_0x9909('0x4'));var BPromise=require(_0x9909('0x5'));var Mustache=require(_0x9909('0x6'));var util=require(_0x9909('0x7'));var path=require(_0x9909('0x8'));var sox=require(_0x9909('0x9'));var csv=require(_0x9909('0xa'));var ejs=require(_0x9909('0xb'));var fs=require('fs');var fs_extra=require(_0x9909('0xc'));var _=require(_0x9909('0xd'));var squel=require(_0x9909('0xe'));var crypto=require('crypto');var jsforce=require(_0x9909('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9909('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9909('0x11'));var as=require(_0x9909('0x12'));var hardwareService=require(_0x9909('0x13'));var logger=require('../../config/logger')(_0x9909('0x14'));var utils=require('../../config/utils');var config=require(_0x9909('0x15'));var licenseUtil=require(_0x9909('0x16'));var db=require(_0x9909('0x17'))['db'];function respondWithStatusCode(_0x3ba080,_0x1c69bb){_0x1c69bb=_0x1c69bb||0xcc;return function(_0x5cc11e){if(_0x5cc11e){return _0x3ba080[_0x9909('0x18')](_0x1c69bb);}return _0x3ba080[_0x9909('0x19')](_0x1c69bb)[_0x9909('0x1a')]();};}function respondWithResult(_0xef3295,_0x1c2668){_0x1c2668=_0x1c2668||0xc8;return function(_0x38c2e3){if(_0x38c2e3){return _0xef3295[_0x9909('0x19')](_0x1c2668)['json'](_0x38c2e3);}};}function respondWithFilteredResult(_0x33a8e3,_0x55e800){return function(_0x1f32cc){if(_0x1f32cc){var _0x5bd7e7=typeof _0x55e800[_0x9909('0x1b')]===_0x9909('0x1c')&&typeof _0x55e800[_0x9909('0x1d')]==='undefined';var _0x9a16a6=_0x1f32cc[_0x9909('0x1e')];var _0x180929=_0x5bd7e7?0x0:_0x55e800[_0x9909('0x1b')];var _0x1106e5=_0x5bd7e7?_0x1f32cc[_0x9909('0x1e')]:_0x55e800[_0x9909('0x1b')]+_0x55e800['limit'];var _0x1b038f;if(_0x1106e5>=_0x9a16a6){_0x1106e5=_0x9a16a6;_0x1b038f=0xc8;}else{_0x1b038f=0xce;}_0x33a8e3[_0x9909('0x19')](_0x1b038f);return _0x33a8e3['set'](_0x9909('0x1f'),_0x180929+'-'+_0x1106e5+'/'+_0x9a16a6)[_0x9909('0x20')](_0x1f32cc);}return null;};}function patchUpdates(_0x20c236){return function(_0x1553ae){try{jsonpatch[_0x9909('0x21')](_0x1553ae,_0x20c236,!![]);}catch(_0x222cd9){return BPromise[_0x9909('0x22')](_0x222cd9);}return _0x1553ae['save']();};}function saveUpdates(_0x112727,_0x319c31){return function(_0x4a626b){if(_0x4a626b){return _0x4a626b['update'](_0x112727)[_0x9909('0x23')](function(_0x176593){return _0x176593;});}return null;};}function removeEntity(_0xdd5088,_0x19e66b){return function(_0x2f15fa){if(_0x2f15fa){return _0x2f15fa['destroy']()['then'](function(){var _0x2d83a5=_0x2f15fa[_0x9909('0x24')]({'plain':!![]});var _0x614308=_0x9909('0x25');return db['UserProfileResource'][_0x9909('0x26')]({'where':{'type':_0x614308,'resourceId':_0x2d83a5['id']}})[_0x9909('0x23')](function(){return _0x2f15fa;});})[_0x9909('0x23')](function(){_0xdd5088[_0x9909('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x405c5e,_0x22ff12){return function(_0x19c7e8){if(!_0x19c7e8){_0x405c5e[_0x9909('0x18')](0x194);}return _0x19c7e8;};}function handleError(_0x5250d8,_0xb0b66f){_0xb0b66f=_0xb0b66f||0x1f4;return function(_0x175d52){logger[_0x9909('0x27')](_0x175d52[_0x9909('0x28')]);if(_0x175d52[_0x9909('0x29')]){delete _0x175d52[_0x9909('0x29')];}_0x5250d8[_0x9909('0x19')](_0xb0b66f)['send'](_0x175d52);};}exports[_0x9909('0x2a')]=function(_0x3a3f4f,_0x87ac8a){var _0x42f1e5={},_0x3e4e07={},_0x519066={'count':0x0,'rows':[]};var _0x4245eb=_[_0x9909('0x2b')](db[_0x9909('0x2c')][_0x9909('0x2d')],function(_0xc1bd06){return{'name':_0xc1bd06[_0x9909('0x2e')],'type':_0xc1bd06[_0x9909('0x2f')][_0x9909('0x30')]};});_0x3e4e07['model']=_['map'](_0x4245eb,_0x9909('0x29'));_0x3e4e07[_0x9909('0x31')]=_['keys'](_0x3a3f4f[_0x9909('0x31')]);_0x3e4e07[_0x9909('0x32')]=_[_0x9909('0x33')](_0x3e4e07[_0x9909('0x34')],_0x3e4e07[_0x9909('0x31')]);_0x42f1e5[_0x9909('0x35')]=_[_0x9909('0x33')](_0x3e4e07['model'],qs[_0x9909('0x36')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x36')]));_0x42f1e5[_0x9909('0x35')]=_0x42f1e5[_0x9909('0x35')]['length']?_0x42f1e5[_0x9909('0x35')]:_0x3e4e07[_0x9909('0x34')];if(!_0x3a3f4f['query'][_0x9909('0x37')](_0x9909('0x38'))){_0x42f1e5[_0x9909('0x1d')]=qs[_0x9909('0x1d')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x1d')]);_0x42f1e5['offset']=qs[_0x9909('0x1b')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x1b')]);}_0x42f1e5[_0x9909('0x39')]=qs[_0x9909('0x3a')](_0x3a3f4f[_0x9909('0x31')][_0x9909('0x3a')]);_0x42f1e5[_0x9909('0x3b')]=qs[_0x9909('0x32')](_[_0x9909('0x3c')](_0x3a3f4f[_0x9909('0x31')],_0x3e4e07[_0x9909('0x32')]),_0x4245eb);if(_0x3a3f4f[_0x9909('0x31')][_0x9909('0x3d')]){_0x42f1e5[_0x9909('0x3b')]=_[_0x9909('0x3e')](_0x42f1e5[_0x9909('0x3b')],{'$or':_[_0x9909('0x2b')](_0x4245eb,function(_0x1b5e2b){if(_0x1b5e2b[_0x9909('0x2f')]!==_0x9909('0x3f')){var _0x1b224d={};_0x1b224d[_0x1b5e2b[_0x9909('0x29')]]={'$like':'%'+_0x3a3f4f['query']['filter']+'%'};return _0x1b224d;}})});}_0x42f1e5=_[_0x9909('0x3e')]({},_0x42f1e5,_0x3a3f4f['options']);var _0x52724f={'where':_0x42f1e5[_0x9909('0x3b')]};return db[_0x9909('0x2c')][_0x9909('0x1e')](_0x52724f)[_0x9909('0x23')](function(_0x556fad){_0x519066[_0x9909('0x1e')]=_0x556fad;if(_0x3a3f4f[_0x9909('0x31')][_0x9909('0x40')]){_0x42f1e5['include']=[{'all':!![]}];}return db[_0x9909('0x2c')][_0x9909('0x41')](_0x42f1e5);})[_0x9909('0x23')](function(_0x4b0a4c){_0x519066[_0x9909('0x42')]=_0x4b0a4c;return _0x519066;})[_0x9909('0x23')](respondWithFilteredResult(_0x87ac8a,_0x42f1e5))[_0x9909('0x43')](handleError(_0x87ac8a,null));};exports[_0x9909('0x44')]=function(_0x1f57bd,_0x856057){var _0xef5aa6={'raw':!![],'where':{'id':_0x1f57bd['params']['id']}},_0x3b1844={};_0x3b1844[_0x9909('0x34')]=_[_0x9909('0x45')](db['Tag'][_0x9909('0x2d')]);_0x3b1844[_0x9909('0x31')]=_['keys'](_0x1f57bd['query']);_0x3b1844[_0x9909('0x32')]=_[_0x9909('0x33')](_0x3b1844[_0x9909('0x34')],_0x3b1844[_0x9909('0x31')]);_0xef5aa6[_0x9909('0x35')]=_[_0x9909('0x33')](_0x3b1844[_0x9909('0x34')],qs[_0x9909('0x36')](_0x1f57bd[_0x9909('0x31')][_0x9909('0x36')]));_0xef5aa6['attributes']=_0xef5aa6[_0x9909('0x35')][_0x9909('0x46')]?_0xef5aa6[_0x9909('0x35')]:_0x3b1844[_0x9909('0x34')];if(_0x1f57bd['query']['includeAll']){_0xef5aa6[_0x9909('0x47')]=[{'all':!![]}];}_0xef5aa6=_['merge']({},_0xef5aa6,_0x1f57bd[_0x9909('0x48')]);return db[_0x9909('0x2c')][_0x9909('0x49')](_0xef5aa6)['then'](handleEntityNotFound(_0x856057,null))[_0x9909('0x23')](respondWithResult(_0x856057,null))[_0x9909('0x43')](handleError(_0x856057,null));};exports[_0x9909('0x4a')]=function(_0x54152c,_0x271984){return db[_0x9909('0x2c')][_0x9909('0x4a')](_0x54152c[_0x9909('0x4b')],{})[_0x9909('0x23')](function(_0x137fb6){var _0x8fbd0c=_0x54152c['user'][_0x9909('0x24')]({'plain':!![]});if(!_0x8fbd0c)throw new Error(_0x9909('0x4c'));if(_0x8fbd0c['role']===_0x9909('0x4d')){var _0x240947=_0x137fb6[_0x9909('0x24')]({'plain':!![]});var _0x37697d=_0x9909('0x25');return db['UserProfileSection'][_0x9909('0x49')]({'where':{'name':_0x37697d,'userProfileId':_0x8fbd0c['userProfileId']},'raw':!![]})[_0x9909('0x23')](function(_0x159e08){if(_0x159e08&&_0x159e08[_0x9909('0x4e')]===0x0){return db[_0x9909('0x4f')][_0x9909('0x4a')]({'name':_0x240947[_0x9909('0x29')],'resourceId':_0x240947['id'],'type':_0x159e08[_0x9909('0x29')],'sectionId':_0x159e08['id']},{})[_0x9909('0x23')](function(){return _0x137fb6;});}else{return _0x137fb6;}})['catch'](function(_0x51b214){logger[_0x9909('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x51b214);throw _0x51b214;});}return _0x137fb6;})['then'](respondWithResult(_0x271984,0xc9))[_0x9909('0x43')](handleError(_0x271984,null));};exports[_0x9909('0x50')]=function(_0x49659a,_0x1144e0){if(_0x49659a[_0x9909('0x4b')]['id']){delete _0x49659a[_0x9909('0x4b')]['id'];}return db[_0x9909('0x2c')][_0x9909('0x49')]({'where':{'id':_0x49659a[_0x9909('0x51')]['id']}})['then'](handleEntityNotFound(_0x1144e0,null))[_0x9909('0x23')](saveUpdates(_0x49659a[_0x9909('0x4b')],null))['then'](respondWithResult(_0x1144e0,null))['catch'](handleError(_0x1144e0,null));};exports[_0x9909('0x26')]=function(_0x508b6a,_0x180cf5){return db[_0x9909('0x2c')][_0x9909('0x49')]({'where':{'id':_0x508b6a[_0x9909('0x51')]['id']}})['then'](handleEntityNotFound(_0x180cf5,null))['then'](removeEntity(_0x180cf5,null))['catch'](handleError(_0x180cf5,null));};
\ No newline at end of file
+var _0x0f9f=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','Tags','UserProfileResource','error','stack','name','send','index','map','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','Tag','include','rows','catch','show','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','update','params','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x398edb,_0x376876){var _0x521ef9=function(_0x1f138d){while(--_0x1f138d){_0x398edb['push'](_0x398edb['shift']());}};_0x521ef9(++_0x376876);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0xf8f75,_0x21f39c){_0xf8f75=_0xf8f75-0x0;var _0x3ee326=_0x0f9f[_0xf8f75];return _0x3ee326;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf0f9('0x0'));var zipdir=require(_0xf0f9('0x1'));var jsonpatch=require(_0xf0f9('0x2'));var rp=require('request-promise');var moment=require(_0xf0f9('0x3'));var BPromise=require(_0xf0f9('0x4'));var Mustache=require(_0xf0f9('0x5'));var util=require(_0xf0f9('0x6'));var path=require(_0xf0f9('0x7'));var sox=require(_0xf0f9('0x8'));var csv=require(_0xf0f9('0x9'));var ejs=require(_0xf0f9('0xa'));var fs=require('fs');var fs_extra=require(_0xf0f9('0xb'));var _=require(_0xf0f9('0xc'));var squel=require('squel');var crypto=require(_0xf0f9('0xd'));var jsforce=require(_0xf0f9('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf0f9('0x9'));var querystring=require(_0xf0f9('0xf'));var Papa=require(_0xf0f9('0x10'));var Redis=require('ioredis');var authService=require(_0xf0f9('0x11'));var qs=require(_0xf0f9('0x12'));var as=require(_0xf0f9('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf0f9('0x14'));var utils=require(_0xf0f9('0x15'));var config=require(_0xf0f9('0x16'));var licenseUtil=require(_0xf0f9('0x17'));var db=require(_0xf0f9('0x18'))['db'];function respondWithStatusCode(_0x32d17f,_0x2360eb){_0x2360eb=_0x2360eb||0xcc;return function(_0x4f27c2){if(_0x4f27c2){return _0x32d17f[_0xf0f9('0x19')](_0x2360eb);}return _0x32d17f[_0xf0f9('0x1a')](_0x2360eb)[_0xf0f9('0x1b')]();};}function respondWithResult(_0x200514,_0x524169){_0x524169=_0x524169||0xc8;return function(_0x51d78a){if(_0x51d78a){return _0x200514[_0xf0f9('0x1a')](_0x524169)[_0xf0f9('0x1c')](_0x51d78a);}};}function respondWithFilteredResult(_0xa7d48c,_0x2e2955){return function(_0x2b05e3){if(_0x2b05e3){var _0x2f5bec=typeof _0x2e2955[_0xf0f9('0x1d')]===_0xf0f9('0x1e')&&typeof _0x2e2955[_0xf0f9('0x1f')]===_0xf0f9('0x1e');var _0x4d3534=_0x2b05e3['count'];var _0x350a48=_0x2f5bec?0x0:_0x2e2955[_0xf0f9('0x1d')];var _0x4c4e17=_0x2f5bec?_0x2b05e3[_0xf0f9('0x20')]:_0x2e2955['offset']+_0x2e2955['limit'];var _0x42c157;if(_0x4c4e17>=_0x4d3534){_0x4c4e17=_0x4d3534;_0x42c157=0xc8;}else{_0x42c157=0xce;}_0xa7d48c[_0xf0f9('0x1a')](_0x42c157);return _0xa7d48c[_0xf0f9('0x21')](_0xf0f9('0x22'),_0x350a48+'-'+_0x4c4e17+'/'+_0x4d3534)[_0xf0f9('0x1c')](_0x2b05e3);}return null;};}function patchUpdates(_0x4ed9ff){return function(_0x5ccbc9){try{jsonpatch['apply'](_0x5ccbc9,_0x4ed9ff,!![]);}catch(_0x102336){return BPromise[_0xf0f9('0x23')](_0x102336);}return _0x5ccbc9[_0xf0f9('0x24')]();};}function saveUpdates(_0x5d87a9,_0x4a8726){return function(_0x209cd4){if(_0x209cd4){return _0x209cd4['update'](_0x5d87a9)[_0xf0f9('0x25')](function(_0x414f87){return _0x414f87;});}return null;};}function removeEntity(_0x173c79,_0x570c68){return function(_0x33dfca){if(_0x33dfca){return _0x33dfca[_0xf0f9('0x26')]()[_0xf0f9('0x25')](function(){var _0x49a2dd=_0x33dfca[_0xf0f9('0x27')]({'plain':!![]});var _0x33f070=_0xf0f9('0x28');return db[_0xf0f9('0x29')][_0xf0f9('0x26')]({'where':{'type':_0x33f070,'resourceId':_0x49a2dd['id']}})[_0xf0f9('0x25')](function(){return _0x33dfca;});})['then'](function(){_0x173c79[_0xf0f9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1288e0,_0x30e85c){return function(_0x519a46){if(!_0x519a46){_0x1288e0['sendStatus'](0x194);}return _0x519a46;};}function handleError(_0x119793,_0x50e7f6){_0x50e7f6=_0x50e7f6||0x1f4;return function(_0x2121b8){logger[_0xf0f9('0x2a')](_0x2121b8[_0xf0f9('0x2b')]);if(_0x2121b8[_0xf0f9('0x2c')]){delete _0x2121b8[_0xf0f9('0x2c')];}_0x119793[_0xf0f9('0x1a')](_0x50e7f6)[_0xf0f9('0x2d')](_0x2121b8);};}exports[_0xf0f9('0x2e')]=function(_0x37c093,_0x4e4e08){var _0x2e79f9={},_0x28da31={},_0x534083={'count':0x0,'rows':[]};var _0x48ef2a=_[_0xf0f9('0x2f')](db['Tag']['rawAttributes'],function(_0x14f3cb){return{'name':_0x14f3cb['fieldName'],'type':_0x14f3cb[_0xf0f9('0x30')][_0xf0f9('0x31')]};});_0x28da31['model']=_['map'](_0x48ef2a,_0xf0f9('0x2c'));_0x28da31[_0xf0f9('0x32')]=_[_0xf0f9('0x33')](_0x37c093[_0xf0f9('0x32')]);_0x28da31[_0xf0f9('0x34')]=_[_0xf0f9('0x35')](_0x28da31[_0xf0f9('0x36')],_0x28da31[_0xf0f9('0x32')]);_0x2e79f9[_0xf0f9('0x37')]=_[_0xf0f9('0x35')](_0x28da31[_0xf0f9('0x36')],qs[_0xf0f9('0x38')](_0x37c093[_0xf0f9('0x32')]['fields']));_0x2e79f9[_0xf0f9('0x37')]=_0x2e79f9['attributes'][_0xf0f9('0x39')]?_0x2e79f9[_0xf0f9('0x37')]:_0x28da31[_0xf0f9('0x36')];if(!_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3a')](_0xf0f9('0x3b'))){_0x2e79f9[_0xf0f9('0x1f')]=qs['limit'](_0x37c093['query'][_0xf0f9('0x1f')]);_0x2e79f9[_0xf0f9('0x1d')]=qs[_0xf0f9('0x1d')](_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x1d')]);}_0x2e79f9['order']=qs[_0xf0f9('0x3c')](_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3c')]);_0x2e79f9[_0xf0f9('0x3d')]=qs[_0xf0f9('0x34')](_['pick'](_0x37c093[_0xf0f9('0x32')],_0x28da31[_0xf0f9('0x34')]),_0x48ef2a);if(_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3e')]){_0x2e79f9[_0xf0f9('0x3d')]=_[_0xf0f9('0x3f')](_0x2e79f9['where'],{'$or':_[_0xf0f9('0x2f')](_0x48ef2a,function(_0x1b84ef){if(_0x1b84ef[_0xf0f9('0x30')]!=='VIRTUAL'){var _0x3b52e3={};_0x3b52e3[_0x1b84ef[_0xf0f9('0x2c')]]={'$like':'%'+_0x37c093[_0xf0f9('0x32')][_0xf0f9('0x3e')]+'%'};return _0x3b52e3;}})});}_0x2e79f9=_[_0xf0f9('0x3f')]({},_0x2e79f9,_0x37c093[_0xf0f9('0x40')]);var _0x1e1805={'where':_0x2e79f9[_0xf0f9('0x3d')]};return db[_0xf0f9('0x41')][_0xf0f9('0x20')](_0x1e1805)[_0xf0f9('0x25')](function(_0x149870){_0x534083[_0xf0f9('0x20')]=_0x149870;if(_0x37c093['query']['includeAll']){_0x2e79f9[_0xf0f9('0x42')]=[{'all':!![]}];}return db['Tag']['findAll'](_0x2e79f9);})['then'](function(_0x2cb95d){_0x534083[_0xf0f9('0x43')]=_0x2cb95d;return _0x534083;})[_0xf0f9('0x25')](respondWithFilteredResult(_0x4e4e08,_0x2e79f9))[_0xf0f9('0x44')](handleError(_0x4e4e08,null));};exports[_0xf0f9('0x45')]=function(_0xfef8ad,_0xc0c34c){var _0x2e1556={'raw':!![],'where':{'id':_0xfef8ad['params']['id']}},_0x1a3a6b={};_0x1a3a6b[_0xf0f9('0x36')]=_[_0xf0f9('0x33')](db[_0xf0f9('0x41')]['rawAttributes']);_0x1a3a6b[_0xf0f9('0x32')]=_[_0xf0f9('0x33')](_0xfef8ad[_0xf0f9('0x32')]);_0x1a3a6b['filters']=_[_0xf0f9('0x35')](_0x1a3a6b[_0xf0f9('0x36')],_0x1a3a6b['query']);_0x2e1556[_0xf0f9('0x37')]=_[_0xf0f9('0x35')](_0x1a3a6b[_0xf0f9('0x36')],qs[_0xf0f9('0x38')](_0xfef8ad['query'][_0xf0f9('0x38')]));_0x2e1556[_0xf0f9('0x37')]=_0x2e1556[_0xf0f9('0x37')][_0xf0f9('0x39')]?_0x2e1556[_0xf0f9('0x37')]:_0x1a3a6b[_0xf0f9('0x36')];if(_0xfef8ad['query'][_0xf0f9('0x46')]){_0x2e1556['include']=[{'all':!![]}];}_0x2e1556=_[_0xf0f9('0x3f')]({},_0x2e1556,_0xfef8ad[_0xf0f9('0x40')]);return db[_0xf0f9('0x41')][_0xf0f9('0x47')](_0x2e1556)[_0xf0f9('0x25')](handleEntityNotFound(_0xc0c34c,null))[_0xf0f9('0x25')](respondWithResult(_0xc0c34c,null))[_0xf0f9('0x44')](handleError(_0xc0c34c,null));};exports[_0xf0f9('0x48')]=function(_0x1f47fa,_0x13bb13){return db[_0xf0f9('0x41')][_0xf0f9('0x48')](_0x1f47fa[_0xf0f9('0x49')],{})[_0xf0f9('0x25')](function(_0x45a165){var _0x3cb91a=_0x1f47fa[_0xf0f9('0x4a')][_0xf0f9('0x27')]({'plain':!![]});if(!_0x3cb91a)throw new Error(_0xf0f9('0x4b'));if(_0x3cb91a[_0xf0f9('0x4c')]===_0xf0f9('0x4a')){var _0x40711c=_0x45a165[_0xf0f9('0x27')]({'plain':!![]});var _0x37a928='Tags';return db['UserProfileSection'][_0xf0f9('0x47')]({'where':{'name':_0x37a928,'userProfileId':_0x3cb91a['userProfileId']},'raw':!![]})[_0xf0f9('0x25')](function(_0x2c364c){if(_0x2c364c&&_0x2c364c[_0xf0f9('0x4d')]===0x0){return db['UserProfileResource'][_0xf0f9('0x48')]({'name':_0x40711c['name'],'resourceId':_0x40711c['id'],'type':_0x2c364c[_0xf0f9('0x2c')],'sectionId':_0x2c364c['id']},{})[_0xf0f9('0x25')](function(){return _0x45a165;});}else{return _0x45a165;}})[_0xf0f9('0x44')](function(_0xfe9072){logger[_0xf0f9('0x2a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfe9072);throw _0xfe9072;});}return _0x45a165;})[_0xf0f9('0x25')](respondWithResult(_0x13bb13,0xc9))['catch'](handleError(_0x13bb13,null));};exports[_0xf0f9('0x4e')]=function(_0x1b0186,_0xb3467e){if(_0x1b0186[_0xf0f9('0x49')]['id']){delete _0x1b0186[_0xf0f9('0x49')]['id'];}return db['Tag'][_0xf0f9('0x47')]({'where':{'id':_0x1b0186[_0xf0f9('0x4f')]['id']}})[_0xf0f9('0x25')](handleEntityNotFound(_0xb3467e,null))[_0xf0f9('0x25')](saveUpdates(_0x1b0186[_0xf0f9('0x49')],null))[_0xf0f9('0x25')](respondWithResult(_0xb3467e,null))[_0xf0f9('0x44')](handleError(_0xb3467e,null));};exports[_0xf0f9('0x26')]=function(_0x15f3b3,_0x406b45){return db[_0xf0f9('0x41')][_0xf0f9('0x47')]({'where':{'id':_0x15f3b3[_0xf0f9('0x4f')]['id']}})[_0xf0f9('0x25')](handleEntityNotFound(_0x406b45,null))['then'](removeEntity(_0x406b45,null))[_0xf0f9('0x44')](handleError(_0x406b45,null));};
\ No newline at end of file
index fd89aca..ba11ced 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5fc=['define','Tag','tools_tags','lodash','api','moment','bluebird','request-promise','rimraf','../../config/environment','./tag.attributes','exports'];(function(_0x3727d3,_0x48ee26){var _0x400020=function(_0x659fe3){while(--_0x659fe3){_0x3727d3['push'](_0x3727d3['shift']());}};_0x400020(++_0x48ee26);}(_0xb5fc,0x1e3));var _0xcb5f=function(_0x2cb7c8,_0x3ae9ed){_0x2cb7c8=_0x2cb7c8-0x0;var _0x554d91=_0xb5fc[_0x2cb7c8];return _0x554d91;};'use strict';var _=require(_0xcb5f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xcb5f('0x1'));var moment=require(_0xcb5f('0x2'));var BPromise=require(_0xcb5f('0x3'));var rp=require(_0xcb5f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcb5f('0x5'));var config=require(_0xcb5f('0x6'));var attributes=require(_0xcb5f('0x7'));module[_0xcb5f('0x8')]=function(_0x366cf3,_0xc97300){return _0x366cf3[_0xcb5f('0x9')](_0xcb5f('0xa'),attributes,{'tableName':_0xcb5f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa88d=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes','exports','define','Tag','tools_tags'];(function(_0x37e7a4,_0xb7a496){var _0x269b2a=function(_0x19ee3f){while(--_0x19ee3f){_0x37e7a4['push'](_0x37e7a4['shift']());}};_0x269b2a(++_0xb7a496);}(_0xa88d,0x12c));var _0xda88=function(_0x1b2d57,_0x2bfccd){_0x1b2d57=_0x1b2d57-0x0;var _0x492dab=_0xa88d[_0x1b2d57];return _0x492dab;};'use strict';var _=require(_0xda88('0x0'));var util=require(_0xda88('0x1'));var logger=require(_0xda88('0x2'))(_0xda88('0x3'));var moment=require(_0xda88('0x4'));var BPromise=require(_0xda88('0x5'));var rp=require(_0xda88('0x6'));var fs=require('fs');var path=require(_0xda88('0x7'));var rimraf=require(_0xda88('0x8'));var config=require(_0xda88('0x9'));var attributes=require(_0xda88('0xa'));module[_0xda88('0xb')]=function(_0x3afb3a,_0x370509){return _0x3afb3a[_0xda88('0xc')](_0xda88('0xd'),attributes,{'tableName':_0xda88('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0fa14d1..d030b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26c2=['message','info','result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','Tag,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xa48af,_0x4d3bb5){var _0x10b6dd=function(_0x22c97c){while(--_0x22c97c){_0xa48af['push'](_0xa48af['shift']());}};_0x10b6dd(++_0x4d3bb5);}(_0x26c2,0x130));var _0x226c=function(_0x2eaf78,_0x416362){_0x2eaf78=_0x2eaf78-0x0;var _0xc39f63=_0x26c2[_0x2eaf78];return _0xc39f63;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x226c('0x0'));var rs=require(_0x226c('0x1'));var fs=require('fs');var Redis=require(_0x226c('0x2'));var db=require(_0x226c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x226c('0x4'))(_0x226c('0x5'));var config=require('../../config/environment');var jayson=require(_0x226c('0x6'));var client=jayson[_0x226c('0x7')][_0x226c('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c4e5d,_0x4306c9,_0x59804e){return new BPromise(function(_0x34cbc3,_0x461773){return client[_0x226c('0x9')](_0x3c4e5d,_0x59804e)[_0x226c('0xa')](function(_0x127f10){logger['info'](_0x226c('0xb'),_0x4306c9,_0x226c('0xc'));logger['debug']('Tag,\x20%s,\x20%s,\x20%s',_0x4306c9,_0x226c('0xc'),JSON[_0x226c('0xd')](_0x127f10));if(_0x127f10[_0x226c('0xe')]){if(_0x127f10[_0x226c('0xe')][_0x226c('0xf')]===0x1f4){logger[_0x226c('0xe')](_0x226c('0xb'),_0x4306c9,_0x127f10['error']['message']);return _0x461773(_0x127f10[_0x226c('0xe')][_0x226c('0x10')]);}logger[_0x226c('0xe')](_0x226c('0xb'),_0x4306c9,_0x127f10['error']['message']);return _0x34cbc3(_0x127f10[_0x226c('0xe')][_0x226c('0x10')]);}else{logger[_0x226c('0x11')]('Tag,\x20%s,\x20%s',_0x4306c9,'request\x20sent');_0x34cbc3(_0x127f10[_0x226c('0x12')][_0x226c('0x10')]);}})[_0x226c('0x13')](function(_0x45a804){logger[_0x226c('0xe')]('Tag,\x20%s,\x20%s',_0x4306c9,_0x45a804);_0x461773(_0x45a804);});});}
\ No newline at end of file
+var _0x207c=['message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','http','request','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','error'];(function(_0x150bbe,_0x412085){var _0x3418d5=function(_0x1b1a65){while(--_0x1b1a65){_0x150bbe['push'](_0x150bbe['shift']());}};_0x3418d5(++_0x412085);}(_0x207c,0x1e8));var _0xc207=function(_0x1114dc,_0x50aed4){_0x1114dc=_0x1114dc-0x0;var _0x164894=_0x207c[_0x1114dc];return _0x164894;};'use strict';var _=require('lodash');var util=require(_0xc207('0x0'));var moment=require(_0xc207('0x1'));var BPromise=require(_0xc207('0x2'));var rs=require(_0xc207('0x3'));var fs=require('fs');var Redis=require(_0xc207('0x4'));var db=require(_0xc207('0x5'))['db'];var utils=require(_0xc207('0x6'));var logger=require('../../config/logger')(_0xc207('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xc207('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x314561,_0x3395e4,_0x59ff6f){return new BPromise(function(_0x25cb97,_0xad159b){return client[_0xc207('0x9')](_0x314561,_0x59ff6f)['then'](function(_0xffae6c){logger[_0xc207('0xa')](_0xc207('0xb'),_0x3395e4,_0xc207('0xc'));logger[_0xc207('0xd')](_0xc207('0xe'),_0x3395e4,'request\x20sent',JSON['stringify'](_0xffae6c));if(_0xffae6c['error']){if(_0xffae6c[_0xc207('0xf')]['code']===0x1f4){logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0xad159b(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}logger[_0xc207('0xf')](_0xc207('0xb'),_0x3395e4,_0xffae6c['error'][_0xc207('0x10')]);return _0x25cb97(_0xffae6c[_0xc207('0xf')][_0xc207('0x10')]);}else{logger[_0xc207('0xa')]('Tag,\x20%s,\x20%s',_0x3395e4,'request\x20sent');_0x25cb97(_0xffae6c['result'][_0xc207('0x10')]);}})[_0xc207('0x11')](function(_0x3d9c7b){logger[_0xc207('0xf')]('Tag,\x20%s,\x20%s',_0x3395e4,_0x3d9c7b);_0xad159b(_0x3d9c7b);});});}
\ No newline at end of file
index 81d91ce..13091b0 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_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('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(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0xa9e0[_0x376b45];return _0x2341b3;};'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 ceaab8a..b05bdb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['name','exports','STRING'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
+var _0x2032=['name','exports','STRING'];(function(_0x81f477,_0x2828c5){var _0x1d6fbf=function(_0x34eec3){while(--_0x34eec3){_0x81f477['push'](_0x81f477['shift']());}};_0x1d6fbf(++_0x2828c5);}(_0x2032,0xd9));var _0x2203=function(_0x56f52c,_0x154cbf){_0x56f52c=_0x56f52c-0x0;var _0x5aed80=_0x2032[_0x56f52c];return _0x5aed80;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'name':{'type':Sequelize[_0x2203('0x1')],'allowNull':![],'unique':_0x2203('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d2363d0..43aa794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c98=['Queue:remove','getAgents','hasOwnProperty','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','then','destroy','get','Teams','stack','name','send','map','Team','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','merge','where','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','UserProfileResource','error','getQueues','findOne','isValidChannel','Sequelize','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','channel','addQueues','add','Queues','ids','removeQueues','remove','Voice','Mail','Sms','Fax','Openchannel','penalty','QueueId','TeamVoiceQueue','User','findOrCreate','Queue:save','online','voicePause','UserVoiceQueueRt','upsert','isNil','format','interface','all','addAgents','spread','removeAgents','Chat','Whatsapp','parse','emit'];(function(_0x1fa760,_0x1bf063){var _0xd8eda1=function(_0x4a21d6){while(--_0x4a21d6){_0x1fa760['push'](_0x1fa760['shift']());}};_0xd8eda1(++_0x1bf063);}(_0x9c98,0x105));var _0x89c9=function(_0x2614a3,_0xdaef9f){_0x2614a3=_0x2614a3-0x0;var _0x431318=_0x9c98[_0x2614a3];return _0x431318;};'use strict';var emlformat=require(_0x89c9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x89c9('0x1'));var jsonpatch=require(_0x89c9('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x89c9('0x3'));var Mustache=require('mustache');var util=require(_0x89c9('0x4'));var path=require(_0x89c9('0x5'));var sox=require(_0x89c9('0x6'));var csv=require(_0x89c9('0x7'));var ejs=require(_0x89c9('0x8'));var fs=require('fs');var fs_extra=require(_0x89c9('0x9'));var _=require('lodash');var squel=require(_0x89c9('0xa'));var crypto=require(_0x89c9('0xb'));var jsforce=require(_0x89c9('0xc'));var deskjs=require(_0x89c9('0xd'));var toCsv=require(_0x89c9('0x7'));var querystring=require(_0x89c9('0xe'));var Papa=require(_0x89c9('0xf'));var Redis=require(_0x89c9('0x10'));var authService=require(_0x89c9('0x11'));var qs=require(_0x89c9('0x12'));var as=require(_0x89c9('0x13'));var hardwareService=require(_0x89c9('0x14'));var logger=require('../../config/logger')(_0x89c9('0x15'));var utils=require('../../config/utils');var config=require(_0x89c9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x89c9('0x17'))['db'];config['redis']=_['defaults'](config[_0x89c9('0x18')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x89c9('0x18')]));require(_0x89c9('0x19'))[_0x89c9('0x1a')](socket);function respondWithStatusCode(_0x5dec51,_0xaefca8){_0xaefca8=_0xaefca8||0xcc;return function(_0x4d431a){if(_0x4d431a){return _0x5dec51[_0x89c9('0x1b')](_0xaefca8);}return _0x5dec51[_0x89c9('0x1c')](_0xaefca8)[_0x89c9('0x1d')]();};}function respondWithResult(_0x3a1d71,_0x38f397){_0x38f397=_0x38f397||0xc8;return function(_0x57fe05){if(_0x57fe05){return _0x3a1d71[_0x89c9('0x1c')](_0x38f397)[_0x89c9('0x1e')](_0x57fe05);}};}function respondWithFilteredResult(_0x4628fa,_0x45fa29){return function(_0x4624b0){if(_0x4624b0){var _0x1c3aef=typeof _0x45fa29[_0x89c9('0x1f')]===_0x89c9('0x20')&&typeof _0x45fa29[_0x89c9('0x21')]===_0x89c9('0x20');var _0x4b1932=_0x4624b0[_0x89c9('0x22')];var _0x258bc3=_0x1c3aef?0x0:_0x45fa29['offset'];var _0xf1cb5=_0x1c3aef?_0x4624b0[_0x89c9('0x22')]:_0x45fa29[_0x89c9('0x1f')]+_0x45fa29[_0x89c9('0x21')];var _0x540a19;if(_0xf1cb5>=_0x4b1932){_0xf1cb5=_0x4b1932;_0x540a19=0xc8;}else{_0x540a19=0xce;}_0x4628fa[_0x89c9('0x1c')](_0x540a19);return _0x4628fa[_0x89c9('0x23')](_0x89c9('0x24'),_0x258bc3+'-'+_0xf1cb5+'/'+_0x4b1932)[_0x89c9('0x1e')](_0x4624b0);}return null;};}function patchUpdates(_0x273e85){return function(_0x2c7d53){try{jsonpatch[_0x89c9('0x25')](_0x2c7d53,_0x273e85,!![]);}catch(_0x49fafc){return BPromise['reject'](_0x49fafc);}return _0x2c7d53['save']();};}function saveUpdates(_0x4017c9,_0x199e24){return function(_0x281080){if(_0x281080){return _0x281080[_0x89c9('0x26')](_0x4017c9)[_0x89c9('0x27')](function(_0x3cba3d){return _0x3cba3d;});}return null;};}function removeEntity(_0x328a11,_0x2dac23){return function(_0x2e18fb){if(_0x2e18fb){return _0x2e18fb[_0x89c9('0x28')]()[_0x89c9('0x27')](function(){var _0x2adc17=_0x2e18fb[_0x89c9('0x29')]({'plain':!![]});var _0x327a28=_0x89c9('0x2a');return db['UserProfileResource'][_0x89c9('0x28')]({'where':{'type':_0x327a28,'resourceId':_0x2adc17['id']}})[_0x89c9('0x27')](function(){return _0x2e18fb;});})['then'](function(){_0x328a11['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xdc5c70,_0x147cd1){return function(_0x359110){if(!_0x359110){_0xdc5c70[_0x89c9('0x1b')](0x194);}return _0x359110;};}function handleError(_0x3ad57d,_0xc5ec98){_0xc5ec98=_0xc5ec98||0x1f4;return function(_0x35144d){logger['error'](_0x35144d[_0x89c9('0x2b')]);if(_0x35144d[_0x89c9('0x2c')]){delete _0x35144d[_0x89c9('0x2c')];}_0x3ad57d[_0x89c9('0x1c')](_0xc5ec98)[_0x89c9('0x2d')](_0x35144d);};}exports['index']=function(_0x32cfaa,_0x107ea3){var _0x2e2501={},_0xfff938={},_0x5a28a1={'count':0x0,'rows':[]};var _0x3648b8=_[_0x89c9('0x2e')](db[_0x89c9('0x2f')][_0x89c9('0x30')],function(_0x4481ec){return{'name':_0x4481ec[_0x89c9('0x31')],'type':_0x4481ec[_0x89c9('0x32')][_0x89c9('0x33')]};});_0xfff938[_0x89c9('0x34')]=_[_0x89c9('0x2e')](_0x3648b8,_0x89c9('0x2c'));_0xfff938[_0x89c9('0x35')]=_['keys'](_0x32cfaa[_0x89c9('0x35')]);_0xfff938['filters']=_[_0x89c9('0x36')](_0xfff938[_0x89c9('0x34')],_0xfff938[_0x89c9('0x35')]);_0x2e2501[_0x89c9('0x37')]=_['intersection'](_0xfff938[_0x89c9('0x34')],qs['fields'](_0x32cfaa[_0x89c9('0x35')][_0x89c9('0x38')]));_0x2e2501[_0x89c9('0x37')]=_0x2e2501[_0x89c9('0x37')][_0x89c9('0x39')]?_0x2e2501[_0x89c9('0x37')]:_0xfff938[_0x89c9('0x34')];if(!_0x32cfaa[_0x89c9('0x35')]['hasOwnProperty'](_0x89c9('0x3a'))){_0x2e2501['limit']=qs['limit'](_0x32cfaa[_0x89c9('0x35')][_0x89c9('0x21')]);_0x2e2501[_0x89c9('0x1f')]=qs[_0x89c9('0x1f')](_0x32cfaa['query'][_0x89c9('0x1f')]);}_0x2e2501[_0x89c9('0x3b')]=qs[_0x89c9('0x3c')](_0x32cfaa[_0x89c9('0x35')][_0x89c9('0x3c')]);_0x2e2501['where']=qs[_0x89c9('0x3d')](_[_0x89c9('0x3e')](_0x32cfaa[_0x89c9('0x35')],_0xfff938['filters']),_0x3648b8);if(_0x32cfaa['query'][_0x89c9('0x3f')]){_0x2e2501['where']=_[_0x89c9('0x40')](_0x2e2501[_0x89c9('0x41')],{'$or':_['map'](_0x3648b8,function(_0x10a40d){if(_0x10a40d[_0x89c9('0x32')]!=='VIRTUAL'){var _0x4e40dd={};_0x4e40dd[_0x10a40d[_0x89c9('0x2c')]]={'$like':'%'+_0x32cfaa[_0x89c9('0x35')][_0x89c9('0x3f')]+'%'};return _0x4e40dd;}})});}_0x2e2501=_[_0x89c9('0x40')]({},_0x2e2501,_0x32cfaa[_0x89c9('0x42')]);var _0xbc41ab={'where':_0x2e2501[_0x89c9('0x41')]};return db[_0x89c9('0x2f')][_0x89c9('0x22')](_0xbc41ab)['then'](function(_0x21b324){_0x5a28a1[_0x89c9('0x22')]=_0x21b324;if(_0x32cfaa['query'][_0x89c9('0x43')]){_0x2e2501[_0x89c9('0x44')]=[{'all':!![]}];}return db[_0x89c9('0x2f')][_0x89c9('0x45')](_0x2e2501);})['then'](function(_0x3f4bb6){_0x5a28a1['rows']=_0x3f4bb6;return _0x5a28a1;})[_0x89c9('0x27')](respondWithFilteredResult(_0x107ea3,_0x2e2501))[_0x89c9('0x46')](handleError(_0x107ea3,null));};exports[_0x89c9('0x47')]=function(_0x4d9062,_0x5d8217){var _0xec2882={'raw':![],'where':{'id':_0x4d9062[_0x89c9('0x48')]['id']}},_0x18e982={};_0x18e982['model']=_['keys'](db['Team'][_0x89c9('0x30')]);_0x18e982[_0x89c9('0x35')]=_[_0x89c9('0x49')](_0x4d9062[_0x89c9('0x35')]);_0x18e982[_0x89c9('0x3d')]=_['intersection'](_0x18e982[_0x89c9('0x34')],_0x18e982[_0x89c9('0x35')]);_0xec2882[_0x89c9('0x37')]=_['intersection'](_0x18e982[_0x89c9('0x34')],qs['fields'](_0x4d9062[_0x89c9('0x35')][_0x89c9('0x38')]));_0xec2882[_0x89c9('0x37')]=_0xec2882[_0x89c9('0x37')][_0x89c9('0x39')]?_0xec2882[_0x89c9('0x37')]:_0x18e982['model'];if(_0x4d9062[_0x89c9('0x35')][_0x89c9('0x43')]){_0xec2882[_0x89c9('0x44')]=[{'all':!![]}];}_0xec2882=_[_0x89c9('0x40')]({},_0xec2882,_0x4d9062[_0x89c9('0x42')]);return db['Team'][_0x89c9('0x4a')](_0xec2882)[_0x89c9('0x27')](handleEntityNotFound(_0x5d8217,null))[_0x89c9('0x27')](respondWithResult(_0x5d8217,null))['catch'](handleError(_0x5d8217,null));};exports[_0x89c9('0x4b')]=function(_0x3cb674,_0x239b55){return db[_0x89c9('0x2f')]['create'](_0x3cb674[_0x89c9('0x4c')],{})['then'](function(_0x254b23){var _0x18ecfc=_0x3cb674['user']['get']({'plain':!![]});if(!_0x18ecfc)throw new Error(_0x89c9('0x4d'));if(_0x18ecfc[_0x89c9('0x4e')]===_0x89c9('0x4f')){var _0x546740=_0x254b23[_0x89c9('0x29')]({'plain':!![]});var _0xf01d0e=_0x89c9('0x2a');return db['UserProfileSection'][_0x89c9('0x4a')]({'where':{'name':_0xf01d0e,'userProfileId':_0x18ecfc[_0x89c9('0x50')]},'raw':!![]})['then'](function(_0x2f3e3c){if(_0x2f3e3c&&_0x2f3e3c[_0x89c9('0x51')]===0x0){return db[_0x89c9('0x52')][_0x89c9('0x4b')]({'name':_0x546740[_0x89c9('0x2c')],'resourceId':_0x546740['id'],'type':_0x2f3e3c['name'],'sectionId':_0x2f3e3c['id']},{})[_0x89c9('0x27')](function(){return _0x254b23;});}else{return _0x254b23;}})[_0x89c9('0x46')](function(_0x1fdce5){logger[_0x89c9('0x53')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fdce5);throw _0x1fdce5;});}return _0x254b23;})[_0x89c9('0x27')](respondWithResult(_0x239b55,0xc9))['catch'](handleError(_0x239b55,null));};exports[_0x89c9('0x26')]=function(_0x41f87f,_0x4f8105){if(_0x41f87f[_0x89c9('0x4c')]['id']){delete _0x41f87f['body']['id'];}return db[_0x89c9('0x2f')][_0x89c9('0x4a')]({'where':{'id':_0x41f87f['params']['id']}})[_0x89c9('0x27')](handleEntityNotFound(_0x4f8105,null))['then'](saveUpdates(_0x41f87f[_0x89c9('0x4c')],null))[_0x89c9('0x27')](respondWithResult(_0x4f8105,null))[_0x89c9('0x46')](handleError(_0x4f8105,null));};exports[_0x89c9('0x28')]=function(_0x1de14e,_0x167284){return db[_0x89c9('0x2f')]['find']({'where':{'id':_0x1de14e[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](handleEntityNotFound(_0x167284,null))['then'](removeEntity(_0x167284,null))[_0x89c9('0x46')](handleError(_0x167284,null));};exports[_0x89c9('0x54')]=function(_0x595bb7,_0x805230,_0x6c8226){return db['Team'][_0x89c9('0x55')]({'where':{'id':_0x595bb7[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](handleEntityNotFound(_0x805230,null))[_0x89c9('0x27')](function(_0x597eb5){if(!_0x595bb7[_0x89c9('0x35')]['channel']||!utils[_0x89c9('0x56')](_0x595bb7[_0x89c9('0x35')]['channel'])){throw new db[(_0x89c9('0x57'))][(_0x89c9('0x58'))](_0x89c9('0x59'));}var _0x5706ca={};var _0xb02622={};_0xb02622[_0x89c9('0x34')]=_[_0x89c9('0x49')](db[_[_0x89c9('0x5a')](_0x595bb7[_0x89c9('0x35')]['channel'][_0x89c9('0x5b')]())+_0x89c9('0x5c')][_0x89c9('0x30')]);_0xb02622[_0x89c9('0x35')]=_[_0x89c9('0x49')](_0x595bb7[_0x89c9('0x35')]);_0xb02622['filters']=_[_0x89c9('0x36')](_0xb02622[_0x89c9('0x34')],_0xb02622[_0x89c9('0x35')]);_0x5706ca[_0x89c9('0x37')]=_[_0x89c9('0x36')](_0xb02622[_0x89c9('0x34')],qs[_0x89c9('0x38')](_0x595bb7[_0x89c9('0x35')][_0x89c9('0x38')]));_0x5706ca[_0x89c9('0x37')]=_0x5706ca['attributes'][_0x89c9('0x39')]?_0x5706ca[_0x89c9('0x37')]:_0xb02622['model'];_0x5706ca['limit']=qs[_0x89c9('0x21')](_0x595bb7[_0x89c9('0x35')][_0x89c9('0x21')]);_0x5706ca[_0x89c9('0x1f')]=qs[_0x89c9('0x1f')](_0x595bb7['query'][_0x89c9('0x1f')]);_0x5706ca[_0x89c9('0x3b')]=qs[_0x89c9('0x3c')](_0x595bb7[_0x89c9('0x35')][_0x89c9('0x3c')]);_0x5706ca[_0x89c9('0x41')]=qs[_0x89c9('0x3d')](_['pick'](_0x595bb7[_0x89c9('0x35')],_0xb02622[_0x89c9('0x3d')]));_0x5706ca=_[_0x89c9('0x40')]({},_0x5706ca,_0x595bb7[_0x89c9('0x42')]);return _0x597eb5['get'+_[_0x89c9('0x5a')](_0x595bb7[_0x89c9('0x35')][_0x89c9('0x5d')][_0x89c9('0x5b')]())+'Queues'](_0x5706ca);})[_0x89c9('0x27')](respondWithResult(_0x805230,null))[_0x89c9('0x46')](handleError(_0x805230,null));};exports[_0x89c9('0x5e')]=function(_0x1fad71,_0x42950,_0x53463b){return db['Team'][_0x89c9('0x55')]({'where':{'id':_0x1fad71[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](function(_0x1ad3d6){if(_0x1ad3d6){if(!_0x1fad71[_0x89c9('0x4c')]['channel']||!utils[_0x89c9('0x56')](_0x1fad71['body']['channel'])){throw new db[(_0x89c9('0x57'))][(_0x89c9('0x58'))](_0x89c9('0x59'));}return _0x1ad3d6[_0x89c9('0x5f')+_[_0x89c9('0x5a')](_0x1fad71[_0x89c9('0x4c')][_0x89c9('0x5d')][_0x89c9('0x5b')]())+_0x89c9('0x60')](_0x1fad71['body'][_0x89c9('0x61')]);}return null;})[_0x89c9('0x27')](handleEntityNotFound(_0x42950,null))[_0x89c9('0x27')](respondWithStatusCode(_0x42950,null))[_0x89c9('0x46')](handleError(_0x42950,null));};exports[_0x89c9('0x62')]=function(_0x6589,_0x9090a6,_0x4b4d6d){return db[_0x89c9('0x2f')][_0x89c9('0x55')]({'where':{'id':_0x6589[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](function(_0x387239){if(_0x387239){if(!_0x6589[_0x89c9('0x35')][_0x89c9('0x5d')]||!utils[_0x89c9('0x56')](_0x6589[_0x89c9('0x35')]['channel'])){throw new db[(_0x89c9('0x57'))][(_0x89c9('0x58'))](_0x89c9('0x59'));}return _0x387239[_0x89c9('0x63')+_[_0x89c9('0x5a')](_0x6589[_0x89c9('0x35')][_0x89c9('0x5d')][_0x89c9('0x5b')]())+_0x89c9('0x60')](_0x6589[_0x89c9('0x35')][_0x89c9('0x61')]);}return null;})['then'](handleEntityNotFound(_0x9090a6,null))[_0x89c9('0x27')](respondWithStatusCode(_0x9090a6,null))[_0x89c9('0x46')](handleError(_0x9090a6,null));};exports['addAgents']=function(_0x4bc10e,_0xe38c9d){return db[_0x89c9('0x2f')][_0x89c9('0x4a')]({'where':{'id':_0x4bc10e[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](handleEntityNotFound(_0xe38c9d,null))[_0x89c9('0x27')](function(_0xe46cc4){if(_0xe46cc4){var _0x4446ee=[_0x89c9('0x64'),'Chat',_0x89c9('0x65'),_0x89c9('0x66'),_0x89c9('0x67'),_0x89c9('0x68'),'Whatsapp'];return db['sequelize']['transaction'](function(_0x519e88){var _0xf16f5=_[_0x89c9('0x2e')](_0x4446ee,function(_0x335361){var _0x2df314={'attributes':['id',_0x89c9('0x2c')]};if(_0x335361===_0x89c9('0x64')){_0x2df314['through']={'attributes':[_0x89c9('0x69')]};}return _0xe46cc4[_0x89c9('0x29')+_0x335361+_0x89c9('0x60')](_0x2df314)[_0x89c9('0x27')](function(_0x44c473){var _0x5d707f=_[_0x89c9('0x2e')](_0x44c473,function(_0x54f62a){var _0x3e5781=_[_0x89c9('0x2e')](_0x4bc10e['body']['ids'],function(_0x29983a){var _0x4a02f4={'where':{'UserId':_0x29983a,[_0x335361+_0x89c9('0x6a')]:_0x54f62a['id']},'transaction':_0x519e88};if(_0x335361===_0x89c9('0x64')){_0x4a02f4['defaults']={'penalty':_0x54f62a[_0x89c9('0x6b')][_0x89c9('0x69')]};}return db[_0x89c9('0x6c')+_0x335361+'Queue'][_0x89c9('0x6d')](_0x4a02f4)[_0x89c9('0x27')](function(){socket['emit'](_0x89c9('0x4f')+_0x335361+_0x89c9('0x6e'),{'UserId':_0x29983a,[_0x335361+'QueueId']:_0x54f62a['id']});if(_0x335361!=='Voice')return;return db['User'][_0x89c9('0x45')]({'where':{'id':_0x4bc10e['body'][_0x89c9('0x61')],'online':0x1},'attributes':['id','name',_0x89c9('0x6f'),_0x89c9('0x70'),'interface'],'raw':!![]})[_0x89c9('0x27')](function(_0x19ed18){var _0xf0c47f=_[_0x89c9('0x2e')](_0x19ed18,function(_0x4b15ef){return db[_0x89c9('0x71')][_0x89c9('0x72')]({'membername':_0x4b15ef[_0x89c9('0x2c')],'UserId':_0x4b15ef['id'],'queue_name':_0x54f62a['name'],'VoiceQueueId':_0x54f62a['id'],'interface':_[_0x89c9('0x73')](_0x4b15ef['interface'])?util[_0x89c9('0x74')]('SIP/%s',_0x4b15ef[_0x89c9('0x2c')]):_0x4b15ef[_0x89c9('0x75')],'paused':_0x4b15ef[_0x89c9('0x70')]||![],'penalty':_0x54f62a[_0x89c9('0x6b')][_0x89c9('0x69')]},{'transaction':_0x519e88});});return Promise[_0x89c9('0x76')](_0xf0c47f);});});});return Promise[_0x89c9('0x76')](_0x3e5781);});return Promise[_0x89c9('0x76')](_0x5d707f);});});return Promise[_0x89c9('0x76')](_0xf16f5)['then'](function(){return _0xe46cc4[_0x89c9('0x77')](_0x4bc10e[_0x89c9('0x4c')][_0x89c9('0x61')],{'transaction':_0x519e88})[_0x89c9('0x78')](function(_0x150e18){return _0x150e18;});});});}})[_0x89c9('0x27')](respondWithResult(_0xe38c9d,null))[_0x89c9('0x46')](handleError(_0xe38c9d,null));};exports[_0x89c9('0x79')]=function(_0xdd7825,_0x558e52){return db['Team'][_0x89c9('0x4a')]({'where':{'id':_0xdd7825[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](handleEntityNotFound(_0x558e52,null))[_0x89c9('0x27')](function(_0x1d00e6){if(_0x1d00e6){var _0x2b711d=[_0x89c9('0x64'),_0x89c9('0x7a'),_0x89c9('0x65'),_0x89c9('0x66'),'Fax',_0x89c9('0x68'),_0x89c9('0x7b')];return db['sequelize']['transaction'](function(_0x5575fb){var _0x52a588=_[_0x89c9('0x2e')](_0x2b711d,function(_0x1f9544){var _0x49335a={'attributes':['id','name']};return _0x1d00e6[_0x89c9('0x29')+_0x1f9544+_0x89c9('0x60')](_0x49335a)[_0x89c9('0x27')](function(_0x5c1d69){var _0x5d5ab4=_[_0x89c9('0x2e')](_0x5c1d69,function(_0x14bb16){return _0x14bb16[_0x89c9('0x79')](_0xdd7825['query'][_0x89c9('0x61')],{'transaction':_0x5575fb})[_0x89c9('0x27')](function(){var _0x5ec69a=JSON[_0x89c9('0x7c')]('['+_0xdd7825['query']['ids']+']');var _0x4fd965=_[_0x89c9('0x2e')](_0x5ec69a,function(_0x4ab247){socket[_0x89c9('0x7d')](_0x89c9('0x4f')+_0x1f9544+_0x89c9('0x7e'),{'UserId':Number(_0x4ab247),[_0x1f9544+'QueueId']:_0x14bb16['id']});if(_0x1f9544!=='Voice')return;return db[_0x89c9('0x71')][_0x89c9('0x28')]({'where':{'VoiceQueueId':_0x14bb16['id'],'UserId':_0x4ab247},'transaction':_0x5575fb});});return Promise[_0x89c9('0x76')](_0x4fd965);});});return Promise[_0x89c9('0x76')](_0x5d5ab4);});});return Promise[_0x89c9('0x76')](_0x52a588)['then'](function(){return _0x1d00e6[_0x89c9('0x79')](_0xdd7825[_0x89c9('0x35')]['ids'],{'transaction':_0x5575fb});});});}})['then'](respondWithStatusCode(_0x558e52,null))[_0x89c9('0x46')](handleError(_0x558e52,null));};exports[_0x89c9('0x7f')]=function(_0x5b21ea,_0x18ee64,_0x4f6a25){var _0x1fe990={};var _0x208f30={};var _0x1145f4;var _0x369063;return db[_0x89c9('0x2f')]['findOne']({'where':{'id':_0x5b21ea[_0x89c9('0x48')]['id']}})[_0x89c9('0x27')](handleEntityNotFound(_0x18ee64,null))[_0x89c9('0x27')](function(_0x5d1495){if(_0x5d1495){_0x1145f4=_0x5d1495;_0x208f30[_0x89c9('0x34')]=_[_0x89c9('0x49')](db[_0x89c9('0x6c')][_0x89c9('0x30')]);_0x208f30[_0x89c9('0x35')]=_['keys'](_0x5b21ea[_0x89c9('0x35')]);_0x208f30[_0x89c9('0x3d')]=_[_0x89c9('0x36')](_0x208f30[_0x89c9('0x34')],_0x208f30[_0x89c9('0x35')]);_0x1fe990[_0x89c9('0x37')]=_[_0x89c9('0x36')](_0x208f30['model'],qs[_0x89c9('0x38')](_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x38')]));_0x1fe990[_0x89c9('0x37')]=_0x1fe990[_0x89c9('0x37')][_0x89c9('0x39')]?_0x1fe990[_0x89c9('0x37')]:_0x208f30[_0x89c9('0x34')];_0x1fe990[_0x89c9('0x3b')]=qs[_0x89c9('0x3c')](_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x3c')]);_0x1fe990[_0x89c9('0x41')]=qs[_0x89c9('0x3d')](_[_0x89c9('0x3e')](_0x5b21ea[_0x89c9('0x35')],_0x208f30[_0x89c9('0x3d')]));if(_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x3f')]){_0x1fe990['where']=_[_0x89c9('0x40')](_0x1fe990[_0x89c9('0x41')],{'$or':_[_0x89c9('0x2e')](_0x1fe990[_0x89c9('0x37')],function(_0x1d73c1){var _0x37ff07={};_0x37ff07[_0x1d73c1]={'$like':'%'+_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x3f')]+'%'};return _0x37ff07;})});}_0x1fe990=_[_0x89c9('0x40')]({},_0x1fe990,_0x5b21ea[_0x89c9('0x42')]);return _0x1145f4[_0x89c9('0x7f')](_0x1fe990);}})[_0x89c9('0x27')](function(_0x16b6b7){if(_0x16b6b7){_0x369063=_0x16b6b7['length'];if(!_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x80')]('nolimit')){_0x1fe990[_0x89c9('0x21')]=qs[_0x89c9('0x21')](_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x21')]);_0x1fe990[_0x89c9('0x1f')]=qs['offset'](_0x5b21ea[_0x89c9('0x35')][_0x89c9('0x1f')]);}return _0x1145f4[_0x89c9('0x7f')](_0x1fe990);}})[_0x89c9('0x27')](function(_0x1d4754){if(_0x1d4754){return _0x1d4754?{'count':_0x369063,'rows':_0x1d4754}:null;}})['then'](respondWithResult(_0x18ee64,null))[_0x89c9('0x46')](handleError(_0x18ee64,null));};
\ No newline at end of file
+var _0x0f19=['util','sox','to-csv','ejs','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./team.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','get','Teams','error','name','send','map','Team','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','user','role','UserProfileResource','update','findOne','channel','Sequelize','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','isValidChannel','ids','remove','addAgents','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','sequelize','transaction','through','QueueId','TeamVoiceQueue','penalty','User','findOrCreate','emit','online','interface','UserVoiceQueueRt','upsert','format','SIP/%s','voicePause','all','spread','removeAgents','parse','Queue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0xeb489e,_0x530a46){var _0x574b46=function(_0x160a57){while(--_0x160a57){_0xeb489e['push'](_0xeb489e['shift']());}};_0x574b46(++_0x530a46);}(_0x0f19,0xf3));var _0x90f1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0f19[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x90f1('0x0'));var rimraf=require(_0x90f1('0x1'));var zipdir=require(_0x90f1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x90f1('0x3'));var moment=require(_0x90f1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x90f1('0x5'));var path=require('path');var sox=require(_0x90f1('0x6'));var csv=require(_0x90f1('0x7'));var ejs=require(_0x90f1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x90f1('0x9'));var crypto=require('crypto');var jsforce=require(_0x90f1('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x90f1('0x7'));var querystring=require(_0x90f1('0xb'));var Papa=require('papaparse');var Redis=require(_0x90f1('0xc'));var authService=require(_0x90f1('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x90f1('0xe'));var hardwareService=require(_0x90f1('0xf'));var logger=require(_0x90f1('0x10'))(_0x90f1('0x11'));var utils=require(_0x90f1('0x12'));var config=require(_0x90f1('0x13'));var licenseUtil=require(_0x90f1('0x14'));var db=require(_0x90f1('0x15'))['db'];config[_0x90f1('0x16')]=_['defaults'](config[_0x90f1('0x16')],{'host':_0x90f1('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x90f1('0x18'))[_0x90f1('0x19')](socket);function respondWithStatusCode(_0x353881,_0x4ab1b9){_0x4ab1b9=_0x4ab1b9||0xcc;return function(_0x452fe5){if(_0x452fe5){return _0x353881[_0x90f1('0x1a')](_0x4ab1b9);}return _0x353881[_0x90f1('0x1b')](_0x4ab1b9)[_0x90f1('0x1c')]();};}function respondWithResult(_0x51e663,_0x24026a){_0x24026a=_0x24026a||0xc8;return function(_0x40e574){if(_0x40e574){return _0x51e663[_0x90f1('0x1b')](_0x24026a)[_0x90f1('0x1d')](_0x40e574);}};}function respondWithFilteredResult(_0x56686d,_0x25d0f4){return function(_0x2aad34){if(_0x2aad34){var _0xe7aa22=typeof _0x25d0f4[_0x90f1('0x1e')]===_0x90f1('0x1f')&&typeof _0x25d0f4[_0x90f1('0x20')]==='undefined';var _0x38630f=_0x2aad34[_0x90f1('0x21')];var _0x35731a=_0xe7aa22?0x0:_0x25d0f4['offset'];var _0x57ca62=_0xe7aa22?_0x2aad34[_0x90f1('0x21')]:_0x25d0f4[_0x90f1('0x1e')]+_0x25d0f4[_0x90f1('0x20')];var _0x3202d4;if(_0x57ca62>=_0x38630f){_0x57ca62=_0x38630f;_0x3202d4=0xc8;}else{_0x3202d4=0xce;}_0x56686d['status'](_0x3202d4);return _0x56686d['set'](_0x90f1('0x22'),_0x35731a+'-'+_0x57ca62+'/'+_0x38630f)['json'](_0x2aad34);}return null;};}function patchUpdates(_0x44a761){return function(_0x45e2a3){try{jsonpatch[_0x90f1('0x23')](_0x45e2a3,_0x44a761,!![]);}catch(_0x1486f3){return BPromise['reject'](_0x1486f3);}return _0x45e2a3[_0x90f1('0x24')]();};}function saveUpdates(_0x3bbb03,_0x41979b){return function(_0x378b38){if(_0x378b38){return _0x378b38['update'](_0x3bbb03)[_0x90f1('0x25')](function(_0x60cdf0){return _0x60cdf0;});}return null;};}function removeEntity(_0x50437e,_0x4af19a){return function(_0x3d9c85){if(_0x3d9c85){return _0x3d9c85[_0x90f1('0x26')]()[_0x90f1('0x25')](function(){var _0x575354=_0x3d9c85[_0x90f1('0x27')]({'plain':!![]});var _0x2d1ebb=_0x90f1('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x2d1ebb,'resourceId':_0x575354['id']}})['then'](function(){return _0x3d9c85;});})[_0x90f1('0x25')](function(){_0x50437e[_0x90f1('0x1b')](0xcc)[_0x90f1('0x1c')]();});}};}function handleEntityNotFound(_0x32d687,_0x45b3a7){return function(_0x22084a){if(!_0x22084a){_0x32d687[_0x90f1('0x1a')](0x194);}return _0x22084a;};}function handleError(_0x1af312,_0x4b3702){_0x4b3702=_0x4b3702||0x1f4;return function(_0x32658e){logger[_0x90f1('0x29')](_0x32658e['stack']);if(_0x32658e[_0x90f1('0x2a')]){delete _0x32658e[_0x90f1('0x2a')];}_0x1af312[_0x90f1('0x1b')](_0x4b3702)[_0x90f1('0x2b')](_0x32658e);};}exports['index']=function(_0x2087c3,_0x13a9c8){var _0xab4252={},_0x43b980={},_0x322732={'count':0x0,'rows':[]};var _0x1d1ff3=_[_0x90f1('0x2c')](db[_0x90f1('0x2d')][_0x90f1('0x2e')],function(_0x3bc49f){return{'name':_0x3bc49f['fieldName'],'type':_0x3bc49f[_0x90f1('0x2f')][_0x90f1('0x30')]};});_0x43b980['model']=_[_0x90f1('0x2c')](_0x1d1ff3,_0x90f1('0x2a'));_0x43b980[_0x90f1('0x31')]=_[_0x90f1('0x32')](_0x2087c3[_0x90f1('0x31')]);_0x43b980[_0x90f1('0x33')]=_[_0x90f1('0x34')](_0x43b980[_0x90f1('0x35')],_0x43b980[_0x90f1('0x31')]);_0xab4252[_0x90f1('0x36')]=_[_0x90f1('0x34')](_0x43b980[_0x90f1('0x35')],qs[_0x90f1('0x37')](_0x2087c3[_0x90f1('0x31')][_0x90f1('0x37')]));_0xab4252[_0x90f1('0x36')]=_0xab4252[_0x90f1('0x36')][_0x90f1('0x38')]?_0xab4252[_0x90f1('0x36')]:_0x43b980['model'];if(!_0x2087c3[_0x90f1('0x31')][_0x90f1('0x39')](_0x90f1('0x3a'))){_0xab4252[_0x90f1('0x20')]=qs['limit'](_0x2087c3[_0x90f1('0x31')][_0x90f1('0x20')]);_0xab4252[_0x90f1('0x1e')]=qs['offset'](_0x2087c3[_0x90f1('0x31')][_0x90f1('0x1e')]);}_0xab4252[_0x90f1('0x3b')]=qs[_0x90f1('0x3c')](_0x2087c3['query']['sort']);_0xab4252['where']=qs[_0x90f1('0x33')](_[_0x90f1('0x3d')](_0x2087c3[_0x90f1('0x31')],_0x43b980[_0x90f1('0x33')]),_0x1d1ff3);if(_0x2087c3[_0x90f1('0x31')]['filter']){_0xab4252[_0x90f1('0x3e')]=_[_0x90f1('0x3f')](_0xab4252['where'],{'$or':_[_0x90f1('0x2c')](_0x1d1ff3,function(_0x1b6cfa){if(_0x1b6cfa[_0x90f1('0x2f')]!==_0x90f1('0x40')){var _0x526ca5={};_0x526ca5[_0x1b6cfa['name']]={'$like':'%'+_0x2087c3[_0x90f1('0x31')][_0x90f1('0x41')]+'%'};return _0x526ca5;}})});}_0xab4252=_[_0x90f1('0x3f')]({},_0xab4252,_0x2087c3['options']);var _0x54b1d4={'where':_0xab4252['where']};return db[_0x90f1('0x2d')][_0x90f1('0x21')](_0x54b1d4)['then'](function(_0x2b9d46){_0x322732[_0x90f1('0x21')]=_0x2b9d46;if(_0x2087c3[_0x90f1('0x31')]['includeAll']){_0xab4252[_0x90f1('0x42')]=[{'all':!![]}];}return db[_0x90f1('0x2d')][_0x90f1('0x43')](_0xab4252);})[_0x90f1('0x25')](function(_0x2fc2e0){_0x322732[_0x90f1('0x44')]=_0x2fc2e0;return _0x322732;})['then'](respondWithFilteredResult(_0x13a9c8,_0xab4252))[_0x90f1('0x45')](handleError(_0x13a9c8,null));};exports[_0x90f1('0x46')]=function(_0x31dbed,_0x44ea72){var _0x4b37c1={'raw':![],'where':{'id':_0x31dbed[_0x90f1('0x47')]['id']}},_0x5835a7={};_0x5835a7[_0x90f1('0x35')]=_['keys'](db[_0x90f1('0x2d')][_0x90f1('0x2e')]);_0x5835a7[_0x90f1('0x31')]=_[_0x90f1('0x32')](_0x31dbed[_0x90f1('0x31')]);_0x5835a7[_0x90f1('0x33')]=_[_0x90f1('0x34')](_0x5835a7[_0x90f1('0x35')],_0x5835a7['query']);_0x4b37c1[_0x90f1('0x36')]=_[_0x90f1('0x34')](_0x5835a7['model'],qs[_0x90f1('0x37')](_0x31dbed[_0x90f1('0x31')][_0x90f1('0x37')]));_0x4b37c1['attributes']=_0x4b37c1[_0x90f1('0x36')][_0x90f1('0x38')]?_0x4b37c1[_0x90f1('0x36')]:_0x5835a7[_0x90f1('0x35')];if(_0x31dbed['query'][_0x90f1('0x48')]){_0x4b37c1[_0x90f1('0x42')]=[{'all':!![]}];}_0x4b37c1=_[_0x90f1('0x3f')]({},_0x4b37c1,_0x31dbed[_0x90f1('0x49')]);return db[_0x90f1('0x2d')][_0x90f1('0x4a')](_0x4b37c1)[_0x90f1('0x25')](handleEntityNotFound(_0x44ea72,null))['then'](respondWithResult(_0x44ea72,null))[_0x90f1('0x45')](handleError(_0x44ea72,null));};exports[_0x90f1('0x4b')]=function(_0x2af956,_0x5137aa){return db[_0x90f1('0x2d')]['create'](_0x2af956[_0x90f1('0x4c')],{})[_0x90f1('0x25')](function(_0x399bde){var _0x313beb=_0x2af956[_0x90f1('0x4d')]['get']({'plain':!![]});if(!_0x313beb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x313beb[_0x90f1('0x4e')]==='user'){var _0x332093=_0x399bde[_0x90f1('0x27')]({'plain':!![]});var _0x4d7769=_0x90f1('0x28');return db['UserProfileSection'][_0x90f1('0x4a')]({'where':{'name':_0x4d7769,'userProfileId':_0x313beb['userProfileId']},'raw':!![]})[_0x90f1('0x25')](function(_0x338940){if(_0x338940&&_0x338940['autoAssociation']===0x0){return db[_0x90f1('0x4f')][_0x90f1('0x4b')]({'name':_0x332093[_0x90f1('0x2a')],'resourceId':_0x332093['id'],'type':_0x338940[_0x90f1('0x2a')],'sectionId':_0x338940['id']},{})[_0x90f1('0x25')](function(){return _0x399bde;});}else{return _0x399bde;}})[_0x90f1('0x45')](function(_0x1fe7fd){logger[_0x90f1('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1fe7fd);throw _0x1fe7fd;});}return _0x399bde;})[_0x90f1('0x25')](respondWithResult(_0x5137aa,0xc9))['catch'](handleError(_0x5137aa,null));};exports[_0x90f1('0x50')]=function(_0x16dc8e,_0x210340){if(_0x16dc8e[_0x90f1('0x4c')]['id']){delete _0x16dc8e[_0x90f1('0x4c')]['id'];}return db[_0x90f1('0x2d')][_0x90f1('0x4a')]({'where':{'id':_0x16dc8e['params']['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x210340,null))[_0x90f1('0x25')](saveUpdates(_0x16dc8e[_0x90f1('0x4c')],null))[_0x90f1('0x25')](respondWithResult(_0x210340,null))[_0x90f1('0x45')](handleError(_0x210340,null));};exports[_0x90f1('0x26')]=function(_0x1873d4,_0x206305){return db[_0x90f1('0x2d')]['find']({'where':{'id':_0x1873d4[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x206305,null))[_0x90f1('0x25')](removeEntity(_0x206305,null))[_0x90f1('0x45')](handleError(_0x206305,null));};exports['getQueues']=function(_0xbb20ef,_0x424397,_0x5c86a9){return db[_0x90f1('0x2d')][_0x90f1('0x51')]({'where':{'id':_0xbb20ef[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x424397,null))[_0x90f1('0x25')](function(_0x164d96){if(!_0xbb20ef['query'][_0x90f1('0x52')]||!utils['isValidChannel'](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x52')])){throw new db[(_0x90f1('0x53'))][(_0x90f1('0x54'))](_0x90f1('0x55'));}var _0x4f951a={};var _0x41b029={};_0x41b029[_0x90f1('0x35')]=_[_0x90f1('0x32')](db[_[_0x90f1('0x56')](_0xbb20ef['query'][_0x90f1('0x52')][_0x90f1('0x57')]())+_0x90f1('0x58')][_0x90f1('0x2e')]);_0x41b029[_0x90f1('0x31')]=_[_0x90f1('0x32')](_0xbb20ef[_0x90f1('0x31')]);_0x41b029['filters']=_[_0x90f1('0x34')](_0x41b029[_0x90f1('0x35')],_0x41b029[_0x90f1('0x31')]);_0x4f951a[_0x90f1('0x36')]=_[_0x90f1('0x34')](_0x41b029['model'],qs[_0x90f1('0x37')](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x37')]));_0x4f951a[_0x90f1('0x36')]=_0x4f951a[_0x90f1('0x36')][_0x90f1('0x38')]?_0x4f951a[_0x90f1('0x36')]:_0x41b029[_0x90f1('0x35')];_0x4f951a['limit']=qs[_0x90f1('0x20')](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x20')]);_0x4f951a[_0x90f1('0x1e')]=qs['offset'](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x1e')]);_0x4f951a['order']=qs[_0x90f1('0x3c')](_0xbb20ef['query'][_0x90f1('0x3c')]);_0x4f951a[_0x90f1('0x3e')]=qs[_0x90f1('0x33')](_[_0x90f1('0x3d')](_0xbb20ef[_0x90f1('0x31')],_0x41b029['filters']));_0x4f951a=_[_0x90f1('0x3f')]({},_0x4f951a,_0xbb20ef[_0x90f1('0x49')]);return _0x164d96['get'+_[_0x90f1('0x56')](_0xbb20ef[_0x90f1('0x31')][_0x90f1('0x52')][_0x90f1('0x57')]())+_0x90f1('0x59')](_0x4f951a);})[_0x90f1('0x25')](respondWithResult(_0x424397,null))[_0x90f1('0x45')](handleError(_0x424397,null));};exports[_0x90f1('0x5a')]=function(_0x569e43,_0x2e7675,_0x242b32){return db['Team'][_0x90f1('0x51')]({'where':{'id':_0x569e43[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](function(_0x3b2e48){if(_0x3b2e48){if(!_0x569e43['body'][_0x90f1('0x52')]||!utils[_0x90f1('0x5b')](_0x569e43['body'][_0x90f1('0x52')])){throw new db[(_0x90f1('0x53'))]['ValidationError'](_0x90f1('0x55'));}return _0x3b2e48['add'+_[_0x90f1('0x56')](_0x569e43[_0x90f1('0x4c')][_0x90f1('0x52')][_0x90f1('0x57')]())+_0x90f1('0x59')](_0x569e43[_0x90f1('0x4c')][_0x90f1('0x5c')]);}return null;})[_0x90f1('0x25')](handleEntityNotFound(_0x2e7675,null))[_0x90f1('0x25')](respondWithStatusCode(_0x2e7675,null))[_0x90f1('0x45')](handleError(_0x2e7675,null));};exports['removeQueues']=function(_0x389532,_0x273f4b,_0xb27f71){return db['Team'][_0x90f1('0x51')]({'where':{'id':_0x389532[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](function(_0x261e2b){if(_0x261e2b){if(!_0x389532[_0x90f1('0x31')][_0x90f1('0x52')]||!utils[_0x90f1('0x5b')](_0x389532['query'][_0x90f1('0x52')])){throw new db[(_0x90f1('0x53'))]['ValidationError'](_0x90f1('0x55'));}return _0x261e2b[_0x90f1('0x5d')+_[_0x90f1('0x56')](_0x389532[_0x90f1('0x31')][_0x90f1('0x52')]['toLowerCase']())+_0x90f1('0x59')](_0x389532[_0x90f1('0x31')]['ids']);}return null;})[_0x90f1('0x25')](handleEntityNotFound(_0x273f4b,null))[_0x90f1('0x25')](respondWithStatusCode(_0x273f4b,null))[_0x90f1('0x45')](handleError(_0x273f4b,null));};exports[_0x90f1('0x5e')]=function(_0x171686,_0x34a413){return db['Team'][_0x90f1('0x4a')]({'where':{'id':_0x171686[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x34a413,null))[_0x90f1('0x25')](function(_0xd09172){if(_0xd09172){var _0x1c71c9=[_0x90f1('0x5f'),_0x90f1('0x60'),_0x90f1('0x61'),_0x90f1('0x62'),_0x90f1('0x63'),_0x90f1('0x64'),_0x90f1('0x65')];return db[_0x90f1('0x66')][_0x90f1('0x67')](function(_0x1b1368){var _0x2e8953=_['map'](_0x1c71c9,function(_0x12c2d4){var _0x4e06a6={'attributes':['id',_0x90f1('0x2a')]};if(_0x12c2d4==='Voice'){_0x4e06a6[_0x90f1('0x68')]={'attributes':['penalty']};}return _0xd09172[_0x90f1('0x27')+_0x12c2d4+_0x90f1('0x59')](_0x4e06a6)[_0x90f1('0x25')](function(_0x16081c){var _0x400377=_[_0x90f1('0x2c')](_0x16081c,function(_0x136eae){var _0x2d61c0=_['map'](_0x171686[_0x90f1('0x4c')]['ids'],function(_0x3b9319){var _0x413ae8={'where':{'UserId':_0x3b9319,[_0x12c2d4+_0x90f1('0x69')]:_0x136eae['id']},'transaction':_0x1b1368};if(_0x12c2d4===_0x90f1('0x5f')){_0x413ae8['defaults']={'penalty':_0x136eae[_0x90f1('0x6a')][_0x90f1('0x6b')]};}return db[_0x90f1('0x6c')+_0x12c2d4+_0x90f1('0x58')][_0x90f1('0x6d')](_0x413ae8)[_0x90f1('0x25')](function(){socket[_0x90f1('0x6e')]('user'+_0x12c2d4+'Queue:save',{'UserId':_0x3b9319,[_0x12c2d4+'QueueId']:_0x136eae['id']});if(_0x12c2d4!=='Voice')return;return db[_0x90f1('0x6c')][_0x90f1('0x43')]({'where':{'id':_0x171686[_0x90f1('0x4c')][_0x90f1('0x5c')],'online':0x1},'attributes':['id',_0x90f1('0x2a'),_0x90f1('0x6f'),'voicePause',_0x90f1('0x70')],'raw':!![]})[_0x90f1('0x25')](function(_0x1a7952){var _0x55fe28=_[_0x90f1('0x2c')](_0x1a7952,function(_0x244954){return db[_0x90f1('0x71')][_0x90f1('0x72')]({'membername':_0x244954[_0x90f1('0x2a')],'UserId':_0x244954['id'],'queue_name':_0x136eae['name'],'VoiceQueueId':_0x136eae['id'],'interface':_['isNil'](_0x244954[_0x90f1('0x70')])?util[_0x90f1('0x73')](_0x90f1('0x74'),_0x244954['name']):_0x244954[_0x90f1('0x70')],'paused':_0x244954[_0x90f1('0x75')]||![],'penalty':_0x136eae[_0x90f1('0x6a')]['penalty']},{'transaction':_0x1b1368});});return Promise[_0x90f1('0x76')](_0x55fe28);});});});return Promise['all'](_0x2d61c0);});return Promise[_0x90f1('0x76')](_0x400377);});});return Promise[_0x90f1('0x76')](_0x2e8953)[_0x90f1('0x25')](function(){return _0xd09172[_0x90f1('0x5e')](_0x171686[_0x90f1('0x4c')][_0x90f1('0x5c')],{'transaction':_0x1b1368})[_0x90f1('0x77')](function(_0x43351e){return _0x43351e;});});});}})[_0x90f1('0x25')](respondWithResult(_0x34a413,null))[_0x90f1('0x45')](handleError(_0x34a413,null));};exports[_0x90f1('0x78')]=function(_0x555d16,_0x278c36){return db[_0x90f1('0x2d')][_0x90f1('0x4a')]({'where':{'id':_0x555d16['params']['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0x278c36,null))['then'](function(_0x2fa10d){if(_0x2fa10d){var _0x379354=[_0x90f1('0x5f'),_0x90f1('0x60'),_0x90f1('0x61'),_0x90f1('0x62'),_0x90f1('0x63'),_0x90f1('0x64'),_0x90f1('0x65')];return db[_0x90f1('0x66')][_0x90f1('0x67')](function(_0x2072fb){var _0x4a9ff5=_[_0x90f1('0x2c')](_0x379354,function(_0xa49585){var _0x31a50d={'attributes':['id',_0x90f1('0x2a')]};return _0x2fa10d[_0x90f1('0x27')+_0xa49585+'Queues'](_0x31a50d)['then'](function(_0x267488){var _0x3c43b4=_[_0x90f1('0x2c')](_0x267488,function(_0x52bfd0){return _0x52bfd0['removeAgents'](_0x555d16[_0x90f1('0x31')]['ids'],{'transaction':_0x2072fb})['then'](function(){var _0x4bb927=JSON[_0x90f1('0x79')]('['+_0x555d16[_0x90f1('0x31')][_0x90f1('0x5c')]+']');var _0x2014dd=_[_0x90f1('0x2c')](_0x4bb927,function(_0x2a98df){socket['emit']('user'+_0xa49585+_0x90f1('0x7a'),{'UserId':Number(_0x2a98df),[_0xa49585+_0x90f1('0x69')]:_0x52bfd0['id']});if(_0xa49585!==_0x90f1('0x5f'))return;return db[_0x90f1('0x71')][_0x90f1('0x26')]({'where':{'VoiceQueueId':_0x52bfd0['id'],'UserId':_0x2a98df},'transaction':_0x2072fb});});return Promise[_0x90f1('0x76')](_0x2014dd);});});return Promise[_0x90f1('0x76')](_0x3c43b4);});});return Promise[_0x90f1('0x76')](_0x4a9ff5)['then'](function(){return _0x2fa10d[_0x90f1('0x78')](_0x555d16[_0x90f1('0x31')][_0x90f1('0x5c')],{'transaction':_0x2072fb});});});}})[_0x90f1('0x25')](respondWithStatusCode(_0x278c36,null))[_0x90f1('0x45')](handleError(_0x278c36,null));};exports['getAgents']=function(_0x3a4652,_0xcbbb68,_0x5eb8f4){var _0x259a27={};var _0x18521f={};var _0x5301da;var _0x2202ca;return db[_0x90f1('0x2d')]['findOne']({'where':{'id':_0x3a4652[_0x90f1('0x47')]['id']}})[_0x90f1('0x25')](handleEntityNotFound(_0xcbbb68,null))[_0x90f1('0x25')](function(_0x331fb4){if(_0x331fb4){_0x5301da=_0x331fb4;_0x18521f[_0x90f1('0x35')]=_[_0x90f1('0x32')](db[_0x90f1('0x6c')][_0x90f1('0x2e')]);_0x18521f['query']=_[_0x90f1('0x32')](_0x3a4652[_0x90f1('0x31')]);_0x18521f[_0x90f1('0x33')]=_[_0x90f1('0x34')](_0x18521f['model'],_0x18521f[_0x90f1('0x31')]);_0x259a27['attributes']=_[_0x90f1('0x34')](_0x18521f[_0x90f1('0x35')],qs[_0x90f1('0x37')](_0x3a4652[_0x90f1('0x31')][_0x90f1('0x37')]));_0x259a27[_0x90f1('0x36')]=_0x259a27['attributes'][_0x90f1('0x38')]?_0x259a27['attributes']:_0x18521f['model'];_0x259a27[_0x90f1('0x3b')]=qs['sort'](_0x3a4652[_0x90f1('0x31')][_0x90f1('0x3c')]);_0x259a27[_0x90f1('0x3e')]=qs[_0x90f1('0x33')](_[_0x90f1('0x3d')](_0x3a4652[_0x90f1('0x31')],_0x18521f[_0x90f1('0x33')]));if(_0x3a4652[_0x90f1('0x31')][_0x90f1('0x41')]){_0x259a27[_0x90f1('0x3e')]=_[_0x90f1('0x3f')](_0x259a27['where'],{'$or':_['map'](_0x259a27['attributes'],function(_0x51e479){var _0x4936ca={};_0x4936ca[_0x51e479]={'$like':'%'+_0x3a4652['query'][_0x90f1('0x41')]+'%'};return _0x4936ca;})});}_0x259a27=_[_0x90f1('0x3f')]({},_0x259a27,_0x3a4652[_0x90f1('0x49')]);return _0x5301da[_0x90f1('0x7b')](_0x259a27);}})[_0x90f1('0x25')](function(_0x575230){if(_0x575230){_0x2202ca=_0x575230[_0x90f1('0x38')];if(!_0x3a4652['query'][_0x90f1('0x39')](_0x90f1('0x3a'))){_0x259a27[_0x90f1('0x20')]=qs[_0x90f1('0x20')](_0x3a4652[_0x90f1('0x31')][_0x90f1('0x20')]);_0x259a27[_0x90f1('0x1e')]=qs[_0x90f1('0x1e')](_0x3a4652[_0x90f1('0x31')]['offset']);}return _0x5301da[_0x90f1('0x7b')](_0x259a27);}})['then'](function(_0x11f526){if(_0x11f526){return _0x11f526?{'count':_0x2202ca,'rows':_0x11f526}:null;}})[_0x90f1('0x25')](respondWithResult(_0xcbbb68,null))['catch'](handleError(_0xcbbb68,null));};
\ No newline at end of file
index b8454c9..3224205 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6fb=['setMaxListeners','remove','emit','hasOwnProperty','hook','events','Team'];(function(_0x58b7ab,_0x465d41){var _0x2e9eb0=function(_0x217c52){while(--_0x217c52){_0x58b7ab['push'](_0x58b7ab['shift']());}};_0x2e9eb0(++_0x465d41);}(_0xa6fb,0x132));var _0xba6f=function(_0x220aaf,_0x265c06){_0x220aaf=_0x220aaf-0x0;var _0x4eb06b=_0xa6fb[_0x220aaf];return _0x4eb06b;};'use strict';var EventEmitter=require(_0xba6f('0x0'));var Team=require('../../mysqldb')['db'][_0xba6f('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0xba6f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xba6f('0x3')};function emitEvent(_0x4ffc7a){return function(_0x47671c,_0x159d25,_0x3e5888){TeamEvents[_0xba6f('0x4')](_0x4ffc7a+':'+_0x47671c['id'],_0x47671c);TeamEvents[_0xba6f('0x4')](_0x4ffc7a,_0x47671c);_0x3e5888(null);};}for(var e in events){if(events[_0xba6f('0x5')](e)){var event=events[e];Team[_0xba6f('0x6')](e,emitEvent(event));}}module['exports']=TeamEvents;
\ No newline at end of file
+var _0x5da9=['hook','exports','update','emit','hasOwnProperty'];(function(_0x252530,_0x53ecb3){var _0x3ab304=function(_0x42ab56){while(--_0x42ab56){_0x252530['push'](_0x252530['shift']());}};_0x3ab304(++_0x53ecb3);}(_0x5da9,0x179));var _0x95da=function(_0x44039a,_0x2ac8a8){_0x44039a=_0x44039a-0x0;var _0x525de5=_0x5da9[_0x44039a];return _0x525de5;};'use strict';var EventEmitter=require('events');var Team=require('../../mysqldb')['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x95da('0x0'),'afterDestroy':'remove'};function emitEvent(_0x1d15dc){return function(_0x5d289c,_0x1cbc83,_0x39656c){TeamEvents[_0x95da('0x1')](_0x1d15dc+':'+_0x5d289c['id'],_0x5d289c);TeamEvents[_0x95da('0x1')](_0x1d15dc,_0x5d289c);_0x39656c(null);};}for(var e in events){if(events[_0x95da('0x2')](e)){var event=events[e];Team[_0x95da('0x3')](e,emitEvent(event));}}module[_0x95da('0x4')]=TeamEvents;
\ No newline at end of file
index 3020dfd..691df1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0e5=['bluebird','request-promise','path','rimraf','../../config/environment','./team.attributes','exports','define','Team','lodash','moment'];(function(_0x14477e,_0x44d4da){var _0x5d4a05=function(_0x5e0fa3){while(--_0x5e0fa3){_0x14477e['push'](_0x14477e['shift']());}};_0x5d4a05(++_0x44d4da);}(_0xf0e5,0x1d7));var _0x5f0e=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0xf0e5[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0x5f0e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x5f0e('0x1'));var BPromise=require(_0x5f0e('0x2'));var rp=require(_0x5f0e('0x3'));var fs=require('fs');var path=require(_0x5f0e('0x4'));var rimraf=require(_0x5f0e('0x5'));var config=require(_0x5f0e('0x6'));var attributes=require(_0x5f0e('0x7'));module[_0x5f0e('0x8')]=function(_0x1b9298,_0x449259){return _0x1b9298[_0x5f0e('0x9')](_0x5f0e('0xa'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0988=['moment','bluebird','request-promise','path','rimraf','./team.attributes','exports','define','teams','lodash','util','../../config/logger'];(function(_0x3f92c1,_0x55b382){var _0x395857=function(_0x314e51){while(--_0x314e51){_0x3f92c1['push'](_0x3f92c1['shift']());}};_0x395857(++_0x55b382);}(_0x0988,0x105));var _0x8098=function(_0x1075a2,_0xb2f371){_0x1075a2=_0x1075a2-0x0;var _0x43f5f9=_0x0988[_0x1075a2];return _0x43f5f9;};'use strict';var _=require(_0x8098('0x0'));var util=require(_0x8098('0x1'));var logger=require(_0x8098('0x2'))('api');var moment=require(_0x8098('0x3'));var BPromise=require(_0x8098('0x4'));var rp=require(_0x8098('0x5'));var fs=require('fs');var path=require(_0x8098('0x6'));var rimraf=require(_0x8098('0x7'));var config=require('../../config/environment');var attributes=require(_0x8098('0x8'));module[_0x8098('0x9')]=function(_0x10cf6b,_0x4c9980){return _0x10cf6b[_0x8098('0xa')]('Team',attributes,{'tableName':_0x8098('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 10bec19..941a15d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4a6=['../../config/environment','jayson/promise','redis','defaults','./team.socket','register','then','info','request\x20sent','debug','stringify','code','error','Team,\x20%s,\x20%s','message','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x273ace,_0x3b28bc){var _0x5a5548=function(_0x2d2aaf){while(--_0x2d2aaf){_0x273ace['push'](_0x273ace['shift']());}};_0x5a5548(++_0x3b28bc);}(_0xa4a6,0xdf));var _0x6a4a=function(_0x497533,_0x5413d2){_0x497533=_0x497533-0x0;var _0x3f74a3=_0xa4a6[_0x497533];return _0x3f74a3;};'use strict';var _=require(_0x6a4a('0x0'));var util=require('util');var moment=require(_0x6a4a('0x1'));var BPromise=require(_0x6a4a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6a4a('0x3'));var db=require(_0x6a4a('0x4'))['db'];var utils=require(_0x6a4a('0x5'));var logger=require(_0x6a4a('0x6'))('rpc');var config=require(_0x6a4a('0x7'));var jayson=require(_0x6a4a('0x8'));var client=jayson['client']['http']({'port':0x232a});config[_0x6a4a('0x9')]=_[_0x6a4a('0xa')](config[_0x6a4a('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6a4a('0x9')]));require(_0x6a4a('0xb'))[_0x6a4a('0xc')](socket);function respondWithRpcPromise(_0x41ddb1,_0x15821e,_0x235d4d){return new BPromise(function(_0x34748a,_0x1a8a78){return client['request'](_0x41ddb1,_0x235d4d)[_0x6a4a('0xd')](function(_0x1aaee7){logger[_0x6a4a('0xe')]('Team,\x20%s,\x20%s',_0x15821e,_0x6a4a('0xf'));logger[_0x6a4a('0x10')]('Team,\x20%s,\x20%s,\x20%s',_0x15821e,_0x6a4a('0xf'),JSON[_0x6a4a('0x11')](_0x1aaee7));if(_0x1aaee7['error']){if(_0x1aaee7['error'][_0x6a4a('0x12')]===0x1f4){logger[_0x6a4a('0x13')](_0x6a4a('0x14'),_0x15821e,_0x1aaee7[_0x6a4a('0x13')][_0x6a4a('0x15')]);return _0x1a8a78(_0x1aaee7[_0x6a4a('0x13')][_0x6a4a('0x15')]);}logger['error'](_0x6a4a('0x14'),_0x15821e,_0x1aaee7[_0x6a4a('0x13')][_0x6a4a('0x15')]);return _0x34748a(_0x1aaee7[_0x6a4a('0x13')][_0x6a4a('0x15')]);}else{logger[_0x6a4a('0xe')](_0x6a4a('0x14'),_0x15821e,_0x6a4a('0xf'));_0x34748a(_0x1aaee7['result'][_0x6a4a('0x15')]);}})[_0x6a4a('0x16')](function(_0x42ed5c){logger['error'](_0x6a4a('0x14'),_0x15821e,_0x42ed5c);_0x1a8a78(_0x42ed5c);});});}
\ No newline at end of file
+var _0xeac6=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./team.socket','register','request','info','Team,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Team,\x20%s,\x20%s','message','catch','lodash','util','moment'];(function(_0x53e02c,_0x42de14){var _0x3d2e7a=function(_0x195c90){while(--_0x195c90){_0x53e02c['push'](_0x53e02c['shift']());}};_0x3d2e7a(++_0x42de14);}(_0xeac6,0x1eb));var _0x6eac=function(_0x41d2c6,_0x4c1a0c){_0x41d2c6=_0x41d2c6-0x0;var _0x1ec2ca=_0xeac6[_0x41d2c6];return _0x1ec2ca;};'use strict';var _=require(_0x6eac('0x0'));var util=require(_0x6eac('0x1'));var moment=require(_0x6eac('0x2'));var BPromise=require(_0x6eac('0x3'));var rs=require(_0x6eac('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6eac('0x5'))['db'];var utils=require(_0x6eac('0x6'));var logger=require(_0x6eac('0x7'))(_0x6eac('0x8'));var config=require(_0x6eac('0x9'));var jayson=require(_0x6eac('0xa'));var client=jayson['client'][_0x6eac('0xb')]({'port':0x232a});config[_0x6eac('0xc')]=_['defaults'](config[_0x6eac('0xc')],{'host':_0x6eac('0xd'),'port':0x18eb});var socket=require(_0x6eac('0xe'))(new Redis(config['redis']));require(_0x6eac('0xf'))[_0x6eac('0x10')](socket);function respondWithRpcPromise(_0x390cde,_0x1d9253,_0x2ac2b7){return new BPromise(function(_0x25063b,_0x2d4130){return client[_0x6eac('0x11')](_0x390cde,_0x2ac2b7)['then'](function(_0x507897){logger[_0x6eac('0x12')]('Team,\x20%s,\x20%s',_0x1d9253,'request\x20sent');logger['debug'](_0x6eac('0x13'),_0x1d9253,_0x6eac('0x14'),JSON['stringify'](_0x507897));if(_0x507897[_0x6eac('0x15')]){if(_0x507897[_0x6eac('0x15')][_0x6eac('0x16')]===0x1f4){logger['error'](_0x6eac('0x17'),_0x1d9253,_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);return _0x2d4130(_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);}logger[_0x6eac('0x15')](_0x6eac('0x17'),_0x1d9253,_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);return _0x25063b(_0x507897[_0x6eac('0x15')][_0x6eac('0x18')]);}else{logger['info'](_0x6eac('0x17'),_0x1d9253,_0x6eac('0x14'));_0x25063b(_0x507897['result'][_0x6eac('0x18')]);}})[_0x6eac('0x19')](function(_0x4e83c6){logger[_0x6eac('0x15')](_0x6eac('0x17'),_0x1d9253,_0x4e83c6);_0x2d4130(_0x4e83c6);});});}
\ No newline at end of file
index a560b22..a529f8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd523=['update','emit','removeListener','register','length','team:','./team.events','save','remove'];(function(_0xb6efc6,_0x2fe0f8){var _0x575bcb=function(_0x4f7651){while(--_0x4f7651){_0xb6efc6['push'](_0xb6efc6['shift']());}};_0x575bcb(++_0x2fe0f8);}(_0xd523,0x153));var _0x3d52=function(_0x1e59a1,_0x78ed1){_0x1e59a1=_0x1e59a1-0x0;var _0x215179=_0xd523[_0x1e59a1];return _0x215179;};'use strict';var TeamEvents=require(_0x3d52('0x0'));var events=[_0x3d52('0x1'),_0x3d52('0x2'),_0x3d52('0x3')];function createListener(_0x492b9d,_0x20ccf9){return function(_0x1b5ea1){_0x20ccf9[_0x3d52('0x4')](_0x492b9d,_0x1b5ea1);};}function removeListener(_0x5103d8,_0x24d3af){return function(){TeamEvents[_0x3d52('0x5')](_0x5103d8,_0x24d3af);};}exports[_0x3d52('0x6')]=function(_0x46a0e9){for(var _0x580f82=0x0,_0x4fcc92=events[_0x3d52('0x7')];_0x580f82<_0x4fcc92;_0x580f82++){var _0x2f3ebc=events[_0x580f82];var _0x232bd4=createListener(_0x3d52('0x8')+_0x2f3ebc,_0x46a0e9);TeamEvents['on'](_0x2f3ebc,_0x232bd4);}};
\ No newline at end of file
+var _0x336a=['length','team:','./team.events','save','remove','removeListener','register'];(function(_0xafc22b,_0x57607e){var _0x3f9288=function(_0x277571){while(--_0x277571){_0xafc22b['push'](_0xafc22b['shift']());}};_0x3f9288(++_0x57607e);}(_0x336a,0xa3));var _0xa336=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x336a[_0xc4001c];return _0x49f7bc;};'use strict';var TeamEvents=require(_0xa336('0x0'));var events=[_0xa336('0x1'),_0xa336('0x2'),'update'];function createListener(_0xa78c58,_0x1233c4){return function(_0x1925bf){_0x1233c4['emit'](_0xa78c58,_0x1925bf);};}function removeListener(_0x1df5c2,_0x1c8b7d){return function(){TeamEvents[_0xa336('0x3')](_0x1df5c2,_0x1c8b7d);};}exports[_0xa336('0x4')]=function(_0x1cbfe3){for(var _0x4b9322=0x0,_0xbec93d=events[_0xa336('0x5')];_0x4b9322<_0xbec93d;_0x4b9322++){var _0x1b25de=events[_0x4b9322];var _0x527ad8=createListener(_0xa336('0x6')+_0x1b25de,_0x1cbfe3);TeamEvents['on'](_0x1b25de,_0x527ad8);}};
\ No newline at end of file
index c6f51d5..e4d81fd 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(_0x5b8499,_0x131622){var _0x50aa33=function(_0x1f97fd){while(--_0x1f97fd){_0x5b8499['push'](_0x5b8499['shift']());}};_0x50aa33(++_0x131622);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5b93b2,_0x577b90){var _0x26d9a5=function(_0x111569){while(--_0x111569){_0x5b93b2['push'](_0x5b93b2['shift']());}};_0x26d9a5(++_0x577b90);}(_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 220cdfb..e61207c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc809=['exports','INTEGER','sequelize'];(function(_0x64a8af,_0x316bc7){var _0x3f0226=function(_0x1f85aa){while(--_0x1f85aa){_0x64a8af['push'](_0x64a8af['shift']());}};_0x3f0226(++_0x316bc7);}(_0xc809,0x1b8));var _0x9c80=function(_0x542f11,_0x3ab68e){_0x542f11=_0x542f11-0x0;var _0x802ea6=_0xc809[_0x542f11];return _0x802ea6;};'use strict';var Sequelize=require(_0x9c80('0x0'));module[_0x9c80('0x1')]={'penalty':{'type':Sequelize[_0x9c80('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4c57=['INTEGER','exports'];(function(_0xd7f240,_0x39585f){var _0x6d6606=function(_0x9f4552){while(--_0x9f4552){_0xd7f240['push'](_0xd7f240['shift']());}};_0x6d6606(++_0x39585f);}(_0x4c57,0x1ad));var _0x74c5=function(_0x426714,_0x198a8a){_0x426714=_0x426714-0x0;var _0x4d116c=_0x4c57[_0x426714];return _0x4d116c;};'use strict';var Sequelize=require('sequelize');module[_0x74c5('0x0')]={'penalty':{'type':Sequelize[_0x74c5('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 28784f9..e42957d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ea=['../../config/environment','./teamVoiceQueue.attributes','exports','define','team_has_voice_queues','lodash','util','../../config/logger','moment','request-promise','rimraf'];(function(_0x2f6c9d,_0x4d0a83){var _0x3c8686=function(_0x1a6ead){while(--_0x1a6ead){_0x2f6c9d['push'](_0x2f6c9d['shift']());}};_0x3c8686(++_0x4d0a83);}(_0xb3ea,0x10d));var _0xab3e=function(_0x2b7dc4,_0x1258fb){_0x2b7dc4=_0x2b7dc4-0x0;var _0x4f75ac=_0xb3ea[_0x2b7dc4];return _0x4f75ac;};'use strict';var _=require(_0xab3e('0x0'));var util=require(_0xab3e('0x1'));var logger=require(_0xab3e('0x2'))('api');var moment=require(_0xab3e('0x3'));var BPromise=require('bluebird');var rp=require(_0xab3e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xab3e('0x5'));var config=require(_0xab3e('0x6'));var attributes=require(_0xab3e('0x7'));module[_0xab3e('0x8')]=function(_0x135941,_0x570744){return _0x135941[_0xab3e('0x9')]('TeamVoiceQueue',attributes,{'tableName':_0xab3e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xca8d=['bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','util','../../config/logger','api','moment'];(function(_0x433078,_0x4a204f){var _0x10bfe7=function(_0x8b222d){while(--_0x8b222d){_0x433078['push'](_0x433078['shift']());}};_0x10bfe7(++_0x4a204f);}(_0xca8d,0x172));var _0xdca8=function(_0x49a975,_0x1d28d6){_0x49a975=_0x49a975-0x0;var _0x410d19=_0xca8d[_0x49a975];return _0x410d19;};'use strict';var _=require(_0xdca8('0x0'));var util=require(_0xdca8('0x1'));var logger=require(_0xdca8('0x2'))(_0xdca8('0x3'));var moment=require(_0xdca8('0x4'));var BPromise=require(_0xdca8('0x5'));var rp=require(_0xdca8('0x6'));var fs=require('fs');var path=require(_0xdca8('0x7'));var rimraf=require(_0xdca8('0x8'));var config=require(_0xdca8('0x9'));var attributes=require(_0xdca8('0xa'));module[_0xdca8('0xb')]=function(_0x4d6383,_0x3366d5){return _0x4d6383[_0xdca8('0xc')](_0xdca8('0xd'),attributes,{'tableName':_0xdca8('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aa608ae..d648322 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc0=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','info','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','TeamVoiceQueue,\x20%s,\x20%s','message','result','lodash','util','moment'];(function(_0x4eaf8d,_0x2fdd21){var _0x23dbeb=function(_0x67883c){while(--_0x67883c){_0x4eaf8d['push'](_0x4eaf8d['shift']());}};_0x23dbeb(++_0x2fdd21);}(_0x3dc0,0xad));var _0x03dc=function(_0x30d5dc,_0x5995f3){_0x30d5dc=_0x30d5dc-0x0;var _0x461804=_0x3dc0[_0x30d5dc];return _0x461804;};'use strict';var _=require(_0x03dc('0x0'));var util=require(_0x03dc('0x1'));var moment=require(_0x03dc('0x2'));var BPromise=require(_0x03dc('0x3'));var rs=require(_0x03dc('0x4'));var fs=require('fs');var Redis=require(_0x03dc('0x5'));var db=require(_0x03dc('0x6'))['db'];var utils=require(_0x03dc('0x7'));var logger=require(_0x03dc('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x03dc('0x9'));var client=jayson[_0x03dc('0xa')][_0x03dc('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5dccc2,_0x41a76a,_0x468705){return new BPromise(function(_0x5c92c2,_0x24ea01){return client['request'](_0x5dccc2,_0x468705)['then'](function(_0x50633d){logger[_0x03dc('0xc')]('TeamVoiceQueue,\x20%s,\x20%s',_0x41a76a,'request\x20sent');logger[_0x03dc('0xd')](_0x03dc('0xe'),_0x41a76a,_0x03dc('0xf'),JSON[_0x03dc('0x10')](_0x50633d));if(_0x50633d[_0x03dc('0x11')]){if(_0x50633d[_0x03dc('0x11')][_0x03dc('0x12')]===0x1f4){logger[_0x03dc('0x11')](_0x03dc('0x13'),_0x41a76a,_0x50633d[_0x03dc('0x11')][_0x03dc('0x14')]);return _0x24ea01(_0x50633d[_0x03dc('0x11')][_0x03dc('0x14')]);}logger[_0x03dc('0x11')]('TeamVoiceQueue,\x20%s,\x20%s',_0x41a76a,_0x50633d[_0x03dc('0x11')][_0x03dc('0x14')]);return _0x5c92c2(_0x50633d['error'][_0x03dc('0x14')]);}else{logger[_0x03dc('0xc')](_0x03dc('0x13'),_0x41a76a,_0x03dc('0xf'));_0x5c92c2(_0x50633d[_0x03dc('0x15')][_0x03dc('0x14')]);}})['catch'](function(_0x2e22d6){logger[_0x03dc('0x11')](_0x03dc('0x13'),_0x41a76a,_0x2e22d6);_0x24ea01(_0x2e22d6);});});}
\ No newline at end of file
+var _0x98fc=['http','request','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0x98fc,0x156));var _0xc98f=function(_0x5e9876,_0x16052d){_0x5e9876=_0x5e9876-0x0;var _0x576c48=_0x98fc[_0x5e9876];return _0x576c48;};'use strict';var _=require(_0xc98f('0x0'));var util=require(_0xc98f('0x1'));var moment=require(_0xc98f('0x2'));var BPromise=require(_0xc98f('0x3'));var rs=require(_0xc98f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc98f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc98f('0x6'))('rpc');var config=require(_0xc98f('0x7'));var jayson=require(_0xc98f('0x8'));var client=jayson[_0xc98f('0x9')][_0xc98f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3237e1,_0x1a8812,_0x28f276){return new BPromise(function(_0x191b3f,_0x12bdba){return client[_0xc98f('0xb')](_0x3237e1,_0x28f276)['then'](function(_0xb21d1a){logger['info'](_0xc98f('0xc'),_0x1a8812,_0xc98f('0xd'));logger[_0xc98f('0xe')](_0xc98f('0xf'),_0x1a8812,_0xc98f('0xd'),JSON['stringify'](_0xb21d1a));if(_0xb21d1a['error']){if(_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x11')]===0x1f4){logger[_0xc98f('0x10')](_0xc98f('0xc'),_0x1a8812,_0xb21d1a[_0xc98f('0x10')]['message']);return _0x12bdba(_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x12')]);}logger['error'](_0xc98f('0xc'),_0x1a8812,_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x12')]);return _0x191b3f(_0xb21d1a[_0xc98f('0x10')][_0xc98f('0x12')]);}else{logger[_0xc98f('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1a8812,_0xc98f('0xd'));_0x191b3f(_0xb21d1a[_0xc98f('0x14')]['message']);}})[_0xc98f('0x15')](function(_0x5ef39c){logger[_0xc98f('0x10')](_0xc98f('0xc'),_0x1a8812,_0x5ef39c);_0x12bdba(_0x5ef39c);});});}
\ No newline at end of file
index 5612574..0a4f567 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5232=['destroy','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./template.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x32d690,_0x2af1ca){var _0x426281=function(_0x4801f7){while(--_0x4801f7){_0x32d690['push'](_0x32d690['shift']());}};_0x426281(++_0x2af1ca);}(_0x5232,0x1c9));var _0x2523=function(_0x4ca333,_0x1218a3){_0x4ca333=_0x4ca333-0x0;var _0x13b2e1=_0x5232[_0x4ca333];return _0x13b2e1;};'use strict';var multer=require(_0x2523('0x0'));var util=require(_0x2523('0x1'));var path=require(_0x2523('0x2'));var timeout=require(_0x2523('0x3'));var express=require(_0x2523('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2523('0x5'));var interaction=require(_0x2523('0x6'));var config=require('../../config/environment');var controller=require(_0x2523('0x7'));router[_0x2523('0x8')]('/',auth[_0x2523('0x9')](),controller[_0x2523('0xa')]);router[_0x2523('0x8')](_0x2523('0xb'),auth[_0x2523('0x9')](),controller[_0x2523('0xc')]);router[_0x2523('0xd')]('/',auth[_0x2523('0x9')](),controller[_0x2523('0xe')]);router[_0x2523('0xf')]('/:id',auth[_0x2523('0x9')](),controller[_0x2523('0x10')]);router[_0x2523('0x11')](_0x2523('0xb'),auth[_0x2523('0x9')](),controller[_0x2523('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xfd58=['util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer'];(function(_0x413092,_0x585793){var _0x47a8f1=function(_0x1f0598){while(--_0x1f0598){_0x413092['push'](_0x413092['shift']());}};_0x47a8f1(++_0x585793);}(_0xfd58,0xb3));var _0x8fd5=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xfd58[_0x2641f9];return _0x585741;};'use strict';var multer=require(_0x8fd5('0x0'));var util=require(_0x8fd5('0x1'));var path=require('path');var timeout=require(_0x8fd5('0x2'));var express=require(_0x8fd5('0x3'));var router=express['Router']();var fs_extra=require(_0x8fd5('0x4'));var auth=require(_0x8fd5('0x5'));var interaction=require(_0x8fd5('0x6'));var config=require(_0x8fd5('0x7'));var controller=require('./template.controller');router[_0x8fd5('0x8')]('/',auth[_0x8fd5('0x9')](),controller[_0x8fd5('0xa')]);router['get'](_0x8fd5('0xb'),auth[_0x8fd5('0x9')](),controller[_0x8fd5('0xc')]);router[_0x8fd5('0xd')]('/',auth[_0x8fd5('0x9')](),controller['create']);router[_0x8fd5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x8fd5('0xf')]);router[_0x8fd5('0x10')]('/:id',auth[_0x8fd5('0x9')](),controller[_0x8fd5('0x11')]);module['exports']=router;
\ No newline at end of file
index cc6f065..70548f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ab=['STRING','TEXT','exports'];(function(_0x547e64,_0x4437f1){var _0x31ac81=function(_0x49f0e7){while(--_0x49f0e7){_0x547e64['push'](_0x547e64['shift']());}};_0x31ac81(++_0x4437f1);}(_0x82ab,0xbf));var _0xb82a=function(_0x4a9fb7,_0x4cbfd7){_0x4a9fb7=_0x4a9fb7-0x0;var _0x40b90e=_0x82ab[_0x4a9fb7];return _0x40b90e;};'use strict';var Sequelize=require('sequelize');module[_0xb82a('0x0')]={'name':{'type':Sequelize[_0xb82a('0x1')]},'description':{'type':Sequelize[_0xb82a('0x1')]},'html':{'type':Sequelize[_0xb82a('0x2')]}};
\ No newline at end of file
+var _0xc824=['exports','STRING','TEXT'];(function(_0x3e5cf9,_0x439ffd){var _0x5e85c8=function(_0x411d5a){while(--_0x411d5a){_0x3e5cf9['push'](_0x3e5cf9['shift']());}};_0x5e85c8(++_0x439ffd);}(_0xc824,0x72));var _0x4c82=function(_0x3e0427,_0x18589c){_0x3e0427=_0x3e0427-0x0;var _0x595d4e=_0xc824[_0x3e0427];return _0x595d4e;};'use strict';var Sequelize=require('sequelize');module[_0x4c82('0x0')]={'name':{'type':Sequelize[_0x4c82('0x1')]},'description':{'type':Sequelize[_0x4c82('0x1')]},'html':{'type':Sequelize[_0x4c82('0x2')]}};
\ No newline at end of file
index 4196f0b..363bb54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed06=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','update','destroy','then','get','Templates','UserProfileResource','sendStatus','stack','name','index','rawAttributes','fieldName','model','map','keys','query','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','Template','findAll','catch','show','params','find'];(function(_0xdab805,_0x1278e7){var _0xcdd397=function(_0x304163){while(--_0x304163){_0xdab805['push'](_0xdab805['shift']());}};_0xcdd397(++_0x1278e7);}(_0xed06,0x1e9));var _0x6ed0=function(_0x5a5f1d,_0x3359d8){_0x5a5f1d=_0x5a5f1d-0x0;var _0x597cf4=_0xed06[_0x5a5f1d];return _0x597cf4;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6ed0('0x0'));var zipdir=require(_0x6ed0('0x1'));var jsonpatch=require(_0x6ed0('0x2'));var rp=require('request-promise');var moment=require(_0x6ed0('0x3'));var BPromise=require(_0x6ed0('0x4'));var Mustache=require(_0x6ed0('0x5'));var util=require('util');var path=require(_0x6ed0('0x6'));var sox=require(_0x6ed0('0x7'));var csv=require(_0x6ed0('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6ed0('0x9'));var _=require('lodash');var squel=require(_0x6ed0('0xa'));var crypto=require(_0x6ed0('0xb'));var jsforce=require(_0x6ed0('0xc'));var deskjs=require(_0x6ed0('0xd'));var toCsv=require(_0x6ed0('0x8'));var querystring=require('querystring');var Papa=require(_0x6ed0('0xe'));var Redis=require('ioredis');var authService=require(_0x6ed0('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x6ed0('0x10'));var hardwareService=require(_0x6ed0('0x11'));var logger=require(_0x6ed0('0x12'))(_0x6ed0('0x13'));var utils=require(_0x6ed0('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x6ed0('0x15'));var db=require(_0x6ed0('0x16'))['db'];function respondWithStatusCode(_0x3748bb,_0x3ccc72){_0x3ccc72=_0x3ccc72||0xcc;return function(_0x1ca064){if(_0x1ca064){return _0x3748bb['sendStatus'](_0x3ccc72);}return _0x3748bb[_0x6ed0('0x17')](_0x3ccc72)[_0x6ed0('0x18')]();};}function respondWithResult(_0x1ccb12,_0x3af520){_0x3af520=_0x3af520||0xc8;return function(_0x5c6cad){if(_0x5c6cad){return _0x1ccb12['status'](_0x3af520)['json'](_0x5c6cad);}};}function respondWithFilteredResult(_0x14faf3,_0x25b949){return function(_0x4993d5){if(_0x4993d5){var _0x3943f0=typeof _0x25b949[_0x6ed0('0x19')]==='undefined'&&typeof _0x25b949[_0x6ed0('0x1a')]===_0x6ed0('0x1b');var _0x510894=_0x4993d5[_0x6ed0('0x1c')];var _0x5c8edb=_0x3943f0?0x0:_0x25b949['offset'];var _0x5a4226=_0x3943f0?_0x4993d5[_0x6ed0('0x1c')]:_0x25b949[_0x6ed0('0x19')]+_0x25b949['limit'];var _0x3ddbc5;if(_0x5a4226>=_0x510894){_0x5a4226=_0x510894;_0x3ddbc5=0xc8;}else{_0x3ddbc5=0xce;}_0x14faf3[_0x6ed0('0x17')](_0x3ddbc5);return _0x14faf3[_0x6ed0('0x1d')](_0x6ed0('0x1e'),_0x5c8edb+'-'+_0x5a4226+'/'+_0x510894)[_0x6ed0('0x1f')](_0x4993d5);}return null;};}function patchUpdates(_0x59aa53){return function(_0x35cbfe){try{jsonpatch['apply'](_0x35cbfe,_0x59aa53,!![]);}catch(_0x5961d1){return BPromise[_0x6ed0('0x20')](_0x5961d1);}return _0x35cbfe[_0x6ed0('0x21')]();};}function saveUpdates(_0x4759c2,_0x1bce24){return function(_0x52e7ef){if(_0x52e7ef){return _0x52e7ef[_0x6ed0('0x22')](_0x4759c2)['then'](function(_0xeaa3de){return _0xeaa3de;});}return null;};}function removeEntity(_0x3ea475,_0x3a3272){return function(_0x46e20a){if(_0x46e20a){return _0x46e20a[_0x6ed0('0x23')]()[_0x6ed0('0x24')](function(){var _0x1404aa=_0x46e20a[_0x6ed0('0x25')]({'plain':!![]});var _0xec0758=_0x6ed0('0x26');return db[_0x6ed0('0x27')][_0x6ed0('0x23')]({'where':{'type':_0xec0758,'resourceId':_0x1404aa['id']}})[_0x6ed0('0x24')](function(){return _0x46e20a;});})[_0x6ed0('0x24')](function(){_0x3ea475[_0x6ed0('0x17')](0xcc)[_0x6ed0('0x18')]();});}};}function handleEntityNotFound(_0x21e6ad,_0x1d611e){return function(_0x5308c5){if(!_0x5308c5){_0x21e6ad[_0x6ed0('0x28')](0x194);}return _0x5308c5;};}function handleError(_0x391277,_0x1c246e){_0x1c246e=_0x1c246e||0x1f4;return function(_0x1bebc8){logger['error'](_0x1bebc8[_0x6ed0('0x29')]);if(_0x1bebc8[_0x6ed0('0x2a')]){delete _0x1bebc8[_0x6ed0('0x2a')];}_0x391277[_0x6ed0('0x17')](_0x1c246e)['send'](_0x1bebc8);};}exports[_0x6ed0('0x2b')]=function(_0x2867c6,_0x474e3e){var _0x359027={},_0x270dfe={},_0x56b613={'count':0x0,'rows':[]};var _0x1a567b=_['map'](db['Template'][_0x6ed0('0x2c')],function(_0x4438cb){return{'name':_0x4438cb[_0x6ed0('0x2d')],'type':_0x4438cb['type']['key']};});_0x270dfe[_0x6ed0('0x2e')]=_[_0x6ed0('0x2f')](_0x1a567b,_0x6ed0('0x2a'));_0x270dfe['query']=_[_0x6ed0('0x30')](_0x2867c6[_0x6ed0('0x31')]);_0x270dfe[_0x6ed0('0x32')]=_[_0x6ed0('0x33')](_0x270dfe['model'],_0x270dfe[_0x6ed0('0x31')]);_0x359027[_0x6ed0('0x34')]=_['intersection'](_0x270dfe[_0x6ed0('0x2e')],qs[_0x6ed0('0x35')](_0x2867c6[_0x6ed0('0x31')][_0x6ed0('0x35')]));_0x359027['attributes']=_0x359027[_0x6ed0('0x34')][_0x6ed0('0x36')]?_0x359027[_0x6ed0('0x34')]:_0x270dfe[_0x6ed0('0x2e')];if(!_0x2867c6['query']['hasOwnProperty'](_0x6ed0('0x37'))){_0x359027[_0x6ed0('0x1a')]=qs[_0x6ed0('0x1a')](_0x2867c6['query']['limit']);_0x359027[_0x6ed0('0x19')]=qs[_0x6ed0('0x19')](_0x2867c6[_0x6ed0('0x31')]['offset']);}_0x359027['order']=qs[_0x6ed0('0x38')](_0x2867c6[_0x6ed0('0x31')][_0x6ed0('0x38')]);_0x359027[_0x6ed0('0x39')]=qs[_0x6ed0('0x32')](_[_0x6ed0('0x3a')](_0x2867c6[_0x6ed0('0x31')],_0x270dfe[_0x6ed0('0x32')]),_0x1a567b);if(_0x2867c6[_0x6ed0('0x31')][_0x6ed0('0x3b')]){_0x359027[_0x6ed0('0x39')]=_[_0x6ed0('0x3c')](_0x359027[_0x6ed0('0x39')],{'$or':_[_0x6ed0('0x2f')](_0x1a567b,function(_0x16b671){if(_0x16b671['type']!==_0x6ed0('0x3d')){var _0x255692={};_0x255692[_0x16b671[_0x6ed0('0x2a')]]={'$like':'%'+_0x2867c6[_0x6ed0('0x31')][_0x6ed0('0x3b')]+'%'};return _0x255692;}})});}_0x359027=_['merge']({},_0x359027,_0x2867c6[_0x6ed0('0x3e')]);var _0x5b9306={'where':_0x359027['where']};return db['Template'][_0x6ed0('0x1c')](_0x5b9306)[_0x6ed0('0x24')](function(_0xaf6392){_0x56b613['count']=_0xaf6392;if(_0x2867c6[_0x6ed0('0x31')][_0x6ed0('0x3f')]){_0x359027[_0x6ed0('0x40')]=[{'all':!![]}];}return db[_0x6ed0('0x41')][_0x6ed0('0x42')](_0x359027);})[_0x6ed0('0x24')](function(_0x400477){_0x56b613['rows']=_0x400477;return _0x56b613;})['then'](respondWithFilteredResult(_0x474e3e,_0x359027))[_0x6ed0('0x43')](handleError(_0x474e3e,null));};exports[_0x6ed0('0x44')]=function(_0x20fb4c,_0x5569c8){var _0x2ab18c={'raw':!![],'where':{'id':_0x20fb4c[_0x6ed0('0x45')]['id']}},_0x5c073c={};_0x5c073c[_0x6ed0('0x2e')]=_[_0x6ed0('0x30')](db[_0x6ed0('0x41')][_0x6ed0('0x2c')]);_0x5c073c[_0x6ed0('0x31')]=_[_0x6ed0('0x30')](_0x20fb4c[_0x6ed0('0x31')]);_0x5c073c['filters']=_[_0x6ed0('0x33')](_0x5c073c['model'],_0x5c073c[_0x6ed0('0x31')]);_0x2ab18c[_0x6ed0('0x34')]=_[_0x6ed0('0x33')](_0x5c073c['model'],qs[_0x6ed0('0x35')](_0x20fb4c[_0x6ed0('0x31')][_0x6ed0('0x35')]));_0x2ab18c['attributes']=_0x2ab18c['attributes'][_0x6ed0('0x36')]?_0x2ab18c[_0x6ed0('0x34')]:_0x5c073c[_0x6ed0('0x2e')];if(_0x20fb4c[_0x6ed0('0x31')][_0x6ed0('0x3f')]){_0x2ab18c[_0x6ed0('0x40')]=[{'all':!![]}];}_0x2ab18c=_[_0x6ed0('0x3c')]({},_0x2ab18c,_0x20fb4c[_0x6ed0('0x3e')]);return db[_0x6ed0('0x41')][_0x6ed0('0x46')](_0x2ab18c)['then'](handleEntityNotFound(_0x5569c8,null))['then'](respondWithResult(_0x5569c8,null))[_0x6ed0('0x43')](handleError(_0x5569c8,null));};exports[_0x6ed0('0x47')]=function(_0x4eaeb5,_0x3883d4){return db[_0x6ed0('0x41')][_0x6ed0('0x47')](_0x4eaeb5[_0x6ed0('0x48')],{})[_0x6ed0('0x24')](function(_0x31a981){var _0x5829c6=_0x4eaeb5[_0x6ed0('0x49')][_0x6ed0('0x25')]({'plain':!![]});if(!_0x5829c6)throw new Error(_0x6ed0('0x4a'));if(_0x5829c6[_0x6ed0('0x4b')]===_0x6ed0('0x49')){var _0x25be0f=_0x31a981[_0x6ed0('0x25')]({'plain':!![]});var _0x4bfeeb=_0x6ed0('0x26');return db[_0x6ed0('0x4c')][_0x6ed0('0x46')]({'where':{'name':_0x4bfeeb,'userProfileId':_0x5829c6['userProfileId']},'raw':!![]})[_0x6ed0('0x24')](function(_0xb7eec7){if(_0xb7eec7&&_0xb7eec7[_0x6ed0('0x4d')]===0x0){return db[_0x6ed0('0x27')][_0x6ed0('0x47')]({'name':_0x25be0f[_0x6ed0('0x2a')],'resourceId':_0x25be0f['id'],'type':_0xb7eec7[_0x6ed0('0x2a')],'sectionId':_0xb7eec7['id']},{})['then'](function(){return _0x31a981;});}else{return _0x31a981;}})[_0x6ed0('0x43')](function(_0x7867ec){logger[_0x6ed0('0x4e')](_0x6ed0('0x4f'),_0x7867ec);throw _0x7867ec;});}return _0x31a981;})[_0x6ed0('0x24')](respondWithResult(_0x3883d4,0xc9))[_0x6ed0('0x43')](handleError(_0x3883d4,null));};exports[_0x6ed0('0x22')]=function(_0x2c1482,_0x185779){if(_0x2c1482['body']['id']){delete _0x2c1482[_0x6ed0('0x48')]['id'];}return db[_0x6ed0('0x41')][_0x6ed0('0x46')]({'where':{'id':_0x2c1482[_0x6ed0('0x45')]['id']}})['then'](handleEntityNotFound(_0x185779,null))[_0x6ed0('0x24')](saveUpdates(_0x2c1482[_0x6ed0('0x48')],null))[_0x6ed0('0x24')](respondWithResult(_0x185779,null))[_0x6ed0('0x43')](handleError(_0x185779,null));};exports['destroy']=function(_0x1c81a5,_0x22d2a0){return db[_0x6ed0('0x41')][_0x6ed0('0x46')]({'where':{'id':_0x1c81a5['params']['id']}})[_0x6ed0('0x24')](handleEntityNotFound(_0x22d2a0,null))[_0x6ed0('0x24')](removeEntity(_0x22d2a0,null))['catch'](handleError(_0x22d2a0,null));};
\ No newline at end of file
+var _0xc121=['../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','Templates','sendStatus','error','stack','name','send','index','map','Template','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','filters','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x4a5e27,_0xca22a3){var _0x16bc34=function(_0x29f47f){while(--_0x29f47f){_0x4a5e27['push'](_0x4a5e27['shift']());}};_0x16bc34(++_0xca22a3);}(_0xc121,0x1dd));var _0x1c12=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0xc121[_0x2b9b7f];return _0x4ed19a;};'use strict';var emlformat=require(_0x1c12('0x0'));var rimraf=require(_0x1c12('0x1'));var zipdir=require(_0x1c12('0x2'));var jsonpatch=require(_0x1c12('0x3'));var rp=require(_0x1c12('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1c12('0x5'));var util=require(_0x1c12('0x6'));var path=require('path');var sox=require(_0x1c12('0x7'));var csv=require(_0x1c12('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1c12('0x9'));var squel=require(_0x1c12('0xa'));var crypto=require(_0x1c12('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1c12('0xc'));var toCsv=require(_0x1c12('0x8'));var querystring=require(_0x1c12('0xd'));var Papa=require(_0x1c12('0xe'));var Redis=require('ioredis');var authService=require(_0x1c12('0xf'));var qs=require(_0x1c12('0x10'));var as=require(_0x1c12('0x11'));var hardwareService=require(_0x1c12('0x12'));var logger=require('../../config/logger')(_0x1c12('0x13'));var utils=require(_0x1c12('0x14'));var config=require(_0x1c12('0x15'));var licenseUtil=require(_0x1c12('0x16'));var db=require(_0x1c12('0x17'))['db'];function respondWithStatusCode(_0x210ebf,_0x5b882c){_0x5b882c=_0x5b882c||0xcc;return function(_0x22b178){if(_0x22b178){return _0x210ebf['sendStatus'](_0x5b882c);}return _0x210ebf[_0x1c12('0x18')](_0x5b882c)[_0x1c12('0x19')]();};}function respondWithResult(_0x2cff7e,_0x4dbf83){_0x4dbf83=_0x4dbf83||0xc8;return function(_0x3539bc){if(_0x3539bc){return _0x2cff7e[_0x1c12('0x18')](_0x4dbf83)[_0x1c12('0x1a')](_0x3539bc);}};}function respondWithFilteredResult(_0x183d5e,_0x86120a){return function(_0x19bc66){if(_0x19bc66){var _0x21e7ce=typeof _0x86120a[_0x1c12('0x1b')]===_0x1c12('0x1c')&&typeof _0x86120a[_0x1c12('0x1d')]===_0x1c12('0x1c');var _0x22d46a=_0x19bc66[_0x1c12('0x1e')];var _0x350372=_0x21e7ce?0x0:_0x86120a[_0x1c12('0x1b')];var _0x4d7634=_0x21e7ce?_0x19bc66['count']:_0x86120a[_0x1c12('0x1b')]+_0x86120a[_0x1c12('0x1d')];var _0x27afca;if(_0x4d7634>=_0x22d46a){_0x4d7634=_0x22d46a;_0x27afca=0xc8;}else{_0x27afca=0xce;}_0x183d5e['status'](_0x27afca);return _0x183d5e[_0x1c12('0x1f')](_0x1c12('0x20'),_0x350372+'-'+_0x4d7634+'/'+_0x22d46a)[_0x1c12('0x1a')](_0x19bc66);}return null;};}function patchUpdates(_0x28597f){return function(_0x423a90){try{jsonpatch[_0x1c12('0x21')](_0x423a90,_0x28597f,!![]);}catch(_0x2ab634){return BPromise[_0x1c12('0x22')](_0x2ab634);}return _0x423a90[_0x1c12('0x23')]();};}function saveUpdates(_0x2f7e6b,_0x286540){return function(_0x7f0f1b){if(_0x7f0f1b){return _0x7f0f1b['update'](_0x2f7e6b)[_0x1c12('0x24')](function(_0x2c0852){return _0x2c0852;});}return null;};}function removeEntity(_0x4b836b,_0x6e182d){return function(_0x32a2b7){if(_0x32a2b7){return _0x32a2b7[_0x1c12('0x25')]()[_0x1c12('0x24')](function(){var _0x257ff6=_0x32a2b7['get']({'plain':!![]});var _0x4ae876=_0x1c12('0x26');return db['UserProfileResource'][_0x1c12('0x25')]({'where':{'type':_0x4ae876,'resourceId':_0x257ff6['id']}})['then'](function(){return _0x32a2b7;});})[_0x1c12('0x24')](function(){_0x4b836b[_0x1c12('0x18')](0xcc)[_0x1c12('0x19')]();});}};}function handleEntityNotFound(_0x37ed28,_0xffbfc9){return function(_0x339975){if(!_0x339975){_0x37ed28[_0x1c12('0x27')](0x194);}return _0x339975;};}function handleError(_0x4d3431,_0x2a59ed){_0x2a59ed=_0x2a59ed||0x1f4;return function(_0x2a3f60){logger[_0x1c12('0x28')](_0x2a3f60[_0x1c12('0x29')]);if(_0x2a3f60['name']){delete _0x2a3f60[_0x1c12('0x2a')];}_0x4d3431[_0x1c12('0x18')](_0x2a59ed)[_0x1c12('0x2b')](_0x2a3f60);};}exports[_0x1c12('0x2c')]=function(_0x1651b1,_0x4e438c){var _0x5c5d72={},_0x1a0d6e={},_0x3fac32={'count':0x0,'rows':[]};var _0x45713a=_[_0x1c12('0x2d')](db[_0x1c12('0x2e')][_0x1c12('0x2f')],function(_0x6d4e49){return{'name':_0x6d4e49[_0x1c12('0x30')],'type':_0x6d4e49[_0x1c12('0x31')][_0x1c12('0x32')]};});_0x1a0d6e[_0x1c12('0x33')]=_[_0x1c12('0x2d')](_0x45713a,'name');_0x1a0d6e[_0x1c12('0x34')]=_[_0x1c12('0x35')](_0x1651b1[_0x1c12('0x34')]);_0x1a0d6e['filters']=_[_0x1c12('0x36')](_0x1a0d6e['model'],_0x1a0d6e[_0x1c12('0x34')]);_0x5c5d72[_0x1c12('0x37')]=_[_0x1c12('0x36')](_0x1a0d6e[_0x1c12('0x33')],qs[_0x1c12('0x38')](_0x1651b1[_0x1c12('0x34')][_0x1c12('0x38')]));_0x5c5d72[_0x1c12('0x37')]=_0x5c5d72['attributes'][_0x1c12('0x39')]?_0x5c5d72[_0x1c12('0x37')]:_0x1a0d6e['model'];if(!_0x1651b1[_0x1c12('0x34')][_0x1c12('0x3a')]('nolimit')){_0x5c5d72['limit']=qs[_0x1c12('0x1d')](_0x1651b1[_0x1c12('0x34')]['limit']);_0x5c5d72[_0x1c12('0x1b')]=qs[_0x1c12('0x1b')](_0x1651b1[_0x1c12('0x34')][_0x1c12('0x1b')]);}_0x5c5d72['order']=qs['sort'](_0x1651b1['query'][_0x1c12('0x3b')]);_0x5c5d72[_0x1c12('0x3c')]=qs['filters'](_['pick'](_0x1651b1[_0x1c12('0x34')],_0x1a0d6e['filters']),_0x45713a);if(_0x1651b1[_0x1c12('0x34')][_0x1c12('0x3d')]){_0x5c5d72[_0x1c12('0x3c')]=_[_0x1c12('0x3e')](_0x5c5d72[_0x1c12('0x3c')],{'$or':_[_0x1c12('0x2d')](_0x45713a,function(_0x369f41){if(_0x369f41[_0x1c12('0x31')]!==_0x1c12('0x3f')){var _0x90e9de={};_0x90e9de[_0x369f41['name']]={'$like':'%'+_0x1651b1[_0x1c12('0x34')][_0x1c12('0x3d')]+'%'};return _0x90e9de;}})});}_0x5c5d72=_['merge']({},_0x5c5d72,_0x1651b1[_0x1c12('0x40')]);var _0x4d8237={'where':_0x5c5d72['where']};return db[_0x1c12('0x2e')][_0x1c12('0x1e')](_0x4d8237)[_0x1c12('0x24')](function(_0x59ae3a){_0x3fac32[_0x1c12('0x1e')]=_0x59ae3a;if(_0x1651b1[_0x1c12('0x34')][_0x1c12('0x41')]){_0x5c5d72['include']=[{'all':!![]}];}return db['Template']['findAll'](_0x5c5d72);})[_0x1c12('0x24')](function(_0x3a1356){_0x3fac32[_0x1c12('0x42')]=_0x3a1356;return _0x3fac32;})[_0x1c12('0x24')](respondWithFilteredResult(_0x4e438c,_0x5c5d72))[_0x1c12('0x43')](handleError(_0x4e438c,null));};exports[_0x1c12('0x44')]=function(_0x30eb79,_0x1274bf){var _0x2c7ef9={'raw':!![],'where':{'id':_0x30eb79['params']['id']}},_0x2ce055={};_0x2ce055[_0x1c12('0x33')]=_[_0x1c12('0x35')](db['Template'][_0x1c12('0x2f')]);_0x2ce055['query']=_[_0x1c12('0x35')](_0x30eb79['query']);_0x2ce055[_0x1c12('0x45')]=_[_0x1c12('0x36')](_0x2ce055[_0x1c12('0x33')],_0x2ce055['query']);_0x2c7ef9[_0x1c12('0x37')]=_[_0x1c12('0x36')](_0x2ce055[_0x1c12('0x33')],qs[_0x1c12('0x38')](_0x30eb79[_0x1c12('0x34')][_0x1c12('0x38')]));_0x2c7ef9['attributes']=_0x2c7ef9['attributes'][_0x1c12('0x39')]?_0x2c7ef9[_0x1c12('0x37')]:_0x2ce055[_0x1c12('0x33')];if(_0x30eb79[_0x1c12('0x34')]['includeAll']){_0x2c7ef9[_0x1c12('0x46')]=[{'all':!![]}];}_0x2c7ef9=_['merge']({},_0x2c7ef9,_0x30eb79[_0x1c12('0x40')]);return db['Template'][_0x1c12('0x47')](_0x2c7ef9)['then'](handleEntityNotFound(_0x1274bf,null))[_0x1c12('0x24')](respondWithResult(_0x1274bf,null))[_0x1c12('0x43')](handleError(_0x1274bf,null));};exports[_0x1c12('0x48')]=function(_0x14e27f,_0x50d60a){return db[_0x1c12('0x2e')][_0x1c12('0x48')](_0x14e27f[_0x1c12('0x49')],{})[_0x1c12('0x24')](function(_0x2a7d48){var _0x4ef587=_0x14e27f[_0x1c12('0x4a')][_0x1c12('0x4b')]({'plain':!![]});if(!_0x4ef587)throw new Error(_0x1c12('0x4c'));if(_0x4ef587[_0x1c12('0x4d')]===_0x1c12('0x4a')){var _0x412b68=_0x2a7d48[_0x1c12('0x4b')]({'plain':!![]});var _0x4191d7=_0x1c12('0x26');return db['UserProfileSection'][_0x1c12('0x47')]({'where':{'name':_0x4191d7,'userProfileId':_0x4ef587[_0x1c12('0x4e')]},'raw':!![]})[_0x1c12('0x24')](function(_0xd2836){if(_0xd2836&&_0xd2836[_0x1c12('0x4f')]===0x0){return db[_0x1c12('0x50')][_0x1c12('0x48')]({'name':_0x412b68['name'],'resourceId':_0x412b68['id'],'type':_0xd2836[_0x1c12('0x2a')],'sectionId':_0xd2836['id']},{})[_0x1c12('0x24')](function(){return _0x2a7d48;});}else{return _0x2a7d48;}})[_0x1c12('0x43')](function(_0x494c43){logger[_0x1c12('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x494c43);throw _0x494c43;});}return _0x2a7d48;})[_0x1c12('0x24')](respondWithResult(_0x50d60a,0xc9))['catch'](handleError(_0x50d60a,null));};exports[_0x1c12('0x51')]=function(_0xe77df1,_0x3b0b68){if(_0xe77df1[_0x1c12('0x49')]['id']){delete _0xe77df1[_0x1c12('0x49')]['id'];}return db[_0x1c12('0x2e')]['find']({'where':{'id':_0xe77df1[_0x1c12('0x52')]['id']}})[_0x1c12('0x24')](handleEntityNotFound(_0x3b0b68,null))['then'](saveUpdates(_0xe77df1[_0x1c12('0x49')],null))[_0x1c12('0x24')](respondWithResult(_0x3b0b68,null))[_0x1c12('0x43')](handleError(_0x3b0b68,null));};exports[_0x1c12('0x25')]=function(_0x22a063,_0x2d3b77){return db['Template'][_0x1c12('0x47')]({'where':{'id':_0x22a063[_0x1c12('0x52')]['id']}})[_0x1c12('0x24')](handleEntityNotFound(_0x2d3b77,null))[_0x1c12('0x24')](removeEntity(_0x2d3b77,null))['catch'](handleError(_0x2d3b77,null));};
\ No newline at end of file
index c63d123..ea00b75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf445=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define','util'];(function(_0x47655f,_0x24ca1d){var _0x26099=function(_0x3b807b){while(--_0x3b807b){_0x47655f['push'](_0x47655f['shift']());}};_0x26099(++_0x24ca1d);}(_0xf445,0xfc));var _0x5f44=function(_0x3d8eb2,_0x5e58a3){_0x3d8eb2=_0x3d8eb2-0x0;var _0x1bb6bb=_0xf445[_0x3d8eb2];return _0x1bb6bb;};'use strict';var _=require('lodash');var util=require(_0x5f44('0x0'));var logger=require(_0x5f44('0x1'))('api');var moment=require(_0x5f44('0x2'));var BPromise=require(_0x5f44('0x3'));var rp=require(_0x5f44('0x4'));var fs=require('fs');var path=require(_0x5f44('0x5'));var rimraf=require(_0x5f44('0x6'));var config=require(_0x5f44('0x7'));var attributes=require(_0x5f44('0x8'));module[_0x5f44('0x9')]=function(_0x1a92d4,_0x32d890){return _0x1a92d4[_0x5f44('0xa')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2dd3=['api','moment','bluebird','request-promise','path','rimraf','./template.attributes','exports','define','tools_templates','lodash','util','../../config/logger'];(function(_0xfd5f37,_0x24a79c){var _0x11bd01=function(_0x4ae9bd){while(--_0x4ae9bd){_0xfd5f37['push'](_0xfd5f37['shift']());}};_0x11bd01(++_0x24a79c);}(_0x2dd3,0x101));var _0x32dd=function(_0x11f414,_0x4a1448){_0x11f414=_0x11f414-0x0;var _0x47c71a=_0x2dd3[_0x11f414];return _0x47c71a;};'use strict';var _=require(_0x32dd('0x0'));var util=require(_0x32dd('0x1'));var logger=require(_0x32dd('0x2'))(_0x32dd('0x3'));var moment=require(_0x32dd('0x4'));var BPromise=require(_0x32dd('0x5'));var rp=require(_0x32dd('0x6'));var fs=require('fs');var path=require(_0x32dd('0x7'));var rimraf=require(_0x32dd('0x8'));var config=require('../../config/environment');var attributes=require(_0x32dd('0x9'));module[_0x32dd('0xa')]=function(_0x557976,_0x1c3a3e){return _0x557976[_0x32dd('0xb')]('Template',attributes,{'tableName':_0x32dd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e3bb335..15c71d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6ea=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','then','info','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','Template,\x20%s,\x20%s','message','result','Template','findAll','options','raw','where','attributes','include','map','model','GetTemplate','lodash','moment'];(function(_0x594c89,_0x4d82e0){var _0x2744c0=function(_0x1271bd){while(--_0x1271bd){_0x594c89['push'](_0x594c89['shift']());}};_0x2744c0(++_0x4d82e0);}(_0xa6ea,0x1ce));var _0xaa6e=function(_0x8fbf0,_0x4571a5){_0x8fbf0=_0x8fbf0-0x0;var _0x5eb479=_0xa6ea[_0x8fbf0];return _0x5eb479;};'use strict';var _=require(_0xaa6e('0x0'));var util=require('util');var moment=require(_0xaa6e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaa6e('0x2'));var db=require(_0xaa6e('0x3'))['db'];var utils=require(_0xaa6e('0x4'));var logger=require('../../config/logger')(_0xaa6e('0x5'));var config=require(_0xaa6e('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xaa6e('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2222d8,_0x153401,_0x4e6d54){return new BPromise(function(_0x1bd065,_0x4674f3){return client['request'](_0x2222d8,_0x4e6d54)[_0xaa6e('0x8')](function(_0xdee30b){logger[_0xaa6e('0x9')]('Template,\x20%s,\x20%s',_0x153401,'request\x20sent');logger[_0xaa6e('0xa')](_0xaa6e('0xb'),_0x153401,_0xaa6e('0xc'),JSON[_0xaa6e('0xd')](_0xdee30b));if(_0xdee30b[_0xaa6e('0xe')]){if(_0xdee30b[_0xaa6e('0xe')][_0xaa6e('0xf')]===0x1f4){logger[_0xaa6e('0xe')](_0xaa6e('0x10'),_0x153401,_0xdee30b[_0xaa6e('0xe')][_0xaa6e('0x11')]);return _0x4674f3(_0xdee30b[_0xaa6e('0xe')][_0xaa6e('0x11')]);}logger['error'](_0xaa6e('0x10'),_0x153401,_0xdee30b['error'][_0xaa6e('0x11')]);return _0x1bd065(_0xdee30b['error'][_0xaa6e('0x11')]);}else{logger[_0xaa6e('0x9')](_0xaa6e('0x10'),_0x153401,_0xaa6e('0xc'));_0x1bd065(_0xdee30b[_0xaa6e('0x12')][_0xaa6e('0x11')]);}})['catch'](function(_0x4fd6c4){logger[_0xaa6e('0xe')]('Template,\x20%s,\x20%s',_0x153401,_0x4fd6c4);_0x4674f3(_0x4fd6c4);});});}exports['GetTemplate']=function(_0x561682){var _0x52836e=this;return new Promise(function(_0x50b0a0,_0x2cf366){return db[_0xaa6e('0x13')][_0xaa6e('0x14')]({'raw':_0x561682['options']?_0x561682[_0xaa6e('0x15')][_0xaa6e('0x16')]===undefined?!![]:![]:!![],'where':_0x561682[_0xaa6e('0x15')]?_0x561682[_0xaa6e('0x15')][_0xaa6e('0x17')]||null:null,'attributes':_0x561682['options']?_0x561682['options'][_0xaa6e('0x18')]||null:null,'limit':_0x561682['options']?_0x561682[_0xaa6e('0x15')]['limit']||null:null,'include':_0x561682[_0xaa6e('0x15')]?_0x561682[_0xaa6e('0x15')][_0xaa6e('0x19')]?_[_0xaa6e('0x1a')](_0x561682[_0xaa6e('0x15')][_0xaa6e('0x19')],function(_0x47031f){return{'model':db[_0x47031f[_0xaa6e('0x1b')]],'as':_0x47031f['as'],'attributes':_0x47031f[_0xaa6e('0x18')],'include':_0x47031f[_0xaa6e('0x19')]?_[_0xaa6e('0x1a')](_0x47031f['include'],function(_0x54dc66){return{'model':db[_0x54dc66[_0xaa6e('0x1b')]],'as':_0x54dc66['as'],'attributes':_0x54dc66[_0xaa6e('0x18')],'include':_0x54dc66[_0xaa6e('0x19')]?_[_0xaa6e('0x1a')](_0x54dc66[_0xaa6e('0x19')],function(_0x28f52b){return{'model':db[_0x28f52b[_0xaa6e('0x1b')]],'as':_0x28f52b['as'],'attributes':_0x28f52b[_0xaa6e('0x18')]};}):[]};}):[]};}):[]:[]})[_0xaa6e('0x8')](function(_0x1008f8){logger[_0xaa6e('0x9')](_0xaa6e('0x1c'),_0x561682);logger[_0xaa6e('0xa')](_0xaa6e('0x1c'),_0x561682,JSON[_0xaa6e('0xd')](_0x1008f8));_0x50b0a0(_0x1008f8);})['catch'](function(_0x1ff05a){logger[_0xaa6e('0xe')]('GetTemplate',_0x1ff05a[_0xaa6e('0x11')],_0x561682);_0x2cf366(_0x52836e['error'](0x1f4,_0x1ff05a['message']));});});};
\ No newline at end of file
+var _0x6cdb=['stringify','error','Template,\x20%s,\x20%s','message','info','catch','Template','findAll','raw','options','where','attributes','limit','include','map','model','GetTemplate','lodash','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s'];(function(_0x3857ab,_0x406ec2){var _0x4d3309=function(_0x168ea4){while(--_0x168ea4){_0x3857ab['push'](_0x3857ab['shift']());}};_0x4d3309(++_0x406ec2);}(_0x6cdb,0x71));var _0xb6cd=function(_0x3460c5,_0x303dc7){_0x3460c5=_0x3460c5-0x0;var _0x1652ff=_0x6cdb[_0x3460c5];return _0x1652ff;};'use strict';var _=require(_0xb6cd('0x0'));var util=require('util');var moment=require(_0xb6cd('0x1'));var BPromise=require(_0xb6cd('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb6cd('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb6cd('0x4'));var logger=require('../../config/logger')(_0xb6cd('0x5'));var config=require(_0xb6cd('0x6'));var jayson=require(_0xb6cd('0x7'));var client=jayson[_0xb6cd('0x8')][_0xb6cd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b1624,_0x3e936c,_0x3cd4ea){return new BPromise(function(_0x13d4f2,_0xe1eb3b){return client[_0xb6cd('0xa')](_0x4b1624,_0x3cd4ea)[_0xb6cd('0xb')](function(_0x151e8b){logger['info']('Template,\x20%s,\x20%s',_0x3e936c,_0xb6cd('0xc'));logger[_0xb6cd('0xd')](_0xb6cd('0xe'),_0x3e936c,_0xb6cd('0xc'),JSON[_0xb6cd('0xf')](_0x151e8b));if(_0x151e8b[_0xb6cd('0x10')]){if(_0x151e8b[_0xb6cd('0x10')]['code']===0x1f4){logger['error'](_0xb6cd('0x11'),_0x3e936c,_0x151e8b[_0xb6cd('0x10')]['message']);return _0xe1eb3b(_0x151e8b[_0xb6cd('0x10')]['message']);}logger[_0xb6cd('0x10')](_0xb6cd('0x11'),_0x3e936c,_0x151e8b[_0xb6cd('0x10')][_0xb6cd('0x12')]);return _0x13d4f2(_0x151e8b[_0xb6cd('0x10')]['message']);}else{logger[_0xb6cd('0x13')](_0xb6cd('0x11'),_0x3e936c,_0xb6cd('0xc'));_0x13d4f2(_0x151e8b['result'][_0xb6cd('0x12')]);}})[_0xb6cd('0x14')](function(_0x12fa47){logger[_0xb6cd('0x10')]('Template,\x20%s,\x20%s',_0x3e936c,_0x12fa47);_0xe1eb3b(_0x12fa47);});});}exports['GetTemplate']=function(_0x489181){var _0x36ef01=this;return new Promise(function(_0x641306,_0x135063){return db[_0xb6cd('0x15')][_0xb6cd('0x16')]({'raw':_0x489181['options']?_0x489181['options'][_0xb6cd('0x17')]===undefined?!![]:![]:!![],'where':_0x489181[_0xb6cd('0x18')]?_0x489181[_0xb6cd('0x18')][_0xb6cd('0x19')]||null:null,'attributes':_0x489181[_0xb6cd('0x18')]?_0x489181[_0xb6cd('0x18')][_0xb6cd('0x1a')]||null:null,'limit':_0x489181[_0xb6cd('0x18')]?_0x489181[_0xb6cd('0x18')][_0xb6cd('0x1b')]||null:null,'include':_0x489181['options']?_0x489181['options'][_0xb6cd('0x1c')]?_[_0xb6cd('0x1d')](_0x489181[_0xb6cd('0x18')][_0xb6cd('0x1c')],function(_0x5b0485){return{'model':db[_0x5b0485[_0xb6cd('0x1e')]],'as':_0x5b0485['as'],'attributes':_0x5b0485['attributes'],'include':_0x5b0485[_0xb6cd('0x1c')]?_[_0xb6cd('0x1d')](_0x5b0485['include'],function(_0x584a30){return{'model':db[_0x584a30[_0xb6cd('0x1e')]],'as':_0x584a30['as'],'attributes':_0x584a30[_0xb6cd('0x1a')],'include':_0x584a30[_0xb6cd('0x1c')]?_[_0xb6cd('0x1d')](_0x584a30[_0xb6cd('0x1c')],function(_0x703e6e){return{'model':db[_0x703e6e[_0xb6cd('0x1e')]],'as':_0x703e6e['as'],'attributes':_0x703e6e[_0xb6cd('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x352e64){logger[_0xb6cd('0x13')](_0xb6cd('0x1f'),_0x489181);logger[_0xb6cd('0xd')](_0xb6cd('0x1f'),_0x489181,JSON['stringify'](_0x352e64));_0x641306(_0x352e64);})[_0xb6cd('0x14')](function(_0x2eede8){logger['error']('GetTemplate',_0x2eede8[_0xb6cd('0x12')],_0x489181);_0x135063(_0x36ef01[_0xb6cd('0x10')](0x1f4,_0x2eede8[_0xb6cd('0x12')]));});});};
\ No newline at end of file
index e7e0686..45d6173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f3c=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getActions','post','create','addAllCondition','/:id/actions','addAction','delete','multer'];(function(_0x2b168d,_0x435335){var _0x506a2b=function(_0x1d1b8e){while(--_0x1d1b8e){_0x2b168d['push'](_0x2b168d['shift']());}};_0x506a2b(++_0x435335);}(_0x4f3c,0x15d));var _0xc4f3=function(_0x515e9f,_0xff9586){_0x515e9f=_0x515e9f-0x0;var _0x19cbf0=_0x4f3c[_0x515e9f];return _0x19cbf0;};'use strict';var multer=require(_0xc4f3('0x0'));var util=require(_0xc4f3('0x1'));var path=require(_0xc4f3('0x2'));var timeout=require(_0xc4f3('0x3'));var express=require(_0xc4f3('0x4'));var router=express[_0xc4f3('0x5')]();var fs_extra=require(_0xc4f3('0x6'));var auth=require(_0xc4f3('0x7'));var interaction=require(_0xc4f3('0x8'));var config=require(_0xc4f3('0x9'));var controller=require('./trigger.controller');router['get']('/',auth[_0xc4f3('0xa')](),controller[_0xc4f3('0xb')]);router[_0xc4f3('0xc')](_0xc4f3('0xd'),auth[_0xc4f3('0xa')](),controller[_0xc4f3('0xe')]);router[_0xc4f3('0xc')](_0xc4f3('0xf'),auth[_0xc4f3('0xa')](),controller[_0xc4f3('0x10')]);router['get'](_0xc4f3('0x11'),auth['isAuthenticated'](),controller['getAnyConditions']);router[_0xc4f3('0xc')]('/:id/actions',auth[_0xc4f3('0xa')](),controller[_0xc4f3('0x12')]);router[_0xc4f3('0x13')]('/',auth['isAuthenticated'](),controller[_0xc4f3('0x14')]);router['post']('/:id/all_conditions',auth['isAuthenticated'](),controller[_0xc4f3('0x15')]);router[_0xc4f3('0x13')](_0xc4f3('0x11'),auth[_0xc4f3('0xa')](),controller['addAnyCondition']);router[_0xc4f3('0x13')](_0xc4f3('0x16'),auth[_0xc4f3('0xa')](),controller[_0xc4f3('0x17')]);router['put'](_0xc4f3('0xd'),auth[_0xc4f3('0xa')](),controller['update']);router[_0xc4f3('0x18')](_0xc4f3('0xd'),auth[_0xc4f3('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xd9b9=['get','isAuthenticated','index','/:id/all_conditions','getAllConditions','/:id/any_conditions','/:id/actions','getActions','post','addAction','put','/:id','delete','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./trigger.controller'];(function(_0xa5ab0e,_0x533e33){var _0x194023=function(_0x5af5fc){while(--_0x5af5fc){_0xa5ab0e['push'](_0xa5ab0e['shift']());}};_0x194023(++_0x533e33);}(_0xd9b9,0x111));var _0x9d9b=function(_0x32eaf5,_0x26277a){_0x32eaf5=_0x32eaf5-0x0;var _0x558ec2=_0xd9b9[_0x32eaf5];return _0x558ec2;};'use strict';var multer=require('multer');var util=require(_0x9d9b('0x0'));var path=require(_0x9d9b('0x1'));var timeout=require(_0x9d9b('0x2'));var express=require('express');var router=express[_0x9d9b('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9d9b('0x4'));var config=require(_0x9d9b('0x5'));var controller=require(_0x9d9b('0x6'));router[_0x9d9b('0x7')]('/',auth[_0x9d9b('0x8')](),controller[_0x9d9b('0x9')]);router[_0x9d9b('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x9d9b('0x7')](_0x9d9b('0xa'),auth[_0x9d9b('0x8')](),controller[_0x9d9b('0xb')]);router[_0x9d9b('0x7')](_0x9d9b('0xc'),auth[_0x9d9b('0x8')](),controller['getAnyConditions']);router[_0x9d9b('0x7')](_0x9d9b('0xd'),auth[_0x9d9b('0x8')](),controller[_0x9d9b('0xe')]);router['post']('/',auth[_0x9d9b('0x8')](),controller['create']);router['post']('/:id/all_conditions',auth[_0x9d9b('0x8')](),controller['addAllCondition']);router[_0x9d9b('0xf')](_0x9d9b('0xc'),auth[_0x9d9b('0x8')](),controller['addAnyCondition']);router[_0x9d9b('0xf')](_0x9d9b('0xd'),auth[_0x9d9b('0x8')](),controller[_0x9d9b('0x10')]);router[_0x9d9b('0x11')](_0x9d9b('0x12'),auth[_0x9d9b('0x8')](),controller['update']);router[_0x9d9b('0x13')](_0x9d9b('0x12'),auth[_0x9d9b('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index c7ffd72..5fa99e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0cd=['BOOLEAN','exports','STRING'];(function(_0x2f6adb,_0x25b36c){var _0x362a0e=function(_0x2efb88){while(--_0x2efb88){_0x2f6adb['push'](_0x2f6adb['shift']());}};_0x362a0e(++_0x25b36c);}(_0xc0cd,0x97));var _0xdc0c=function(_0x2e411d,_0x4821b6){_0x2e411d=_0x2e411d-0x0;var _0x5e8eb7=_0xc0cd[_0x2e411d];return _0x5e8eb7;};'use strict';var Sequelize=require('sequelize');module[_0xdc0c('0x0')]={'name':{'type':Sequelize[_0xdc0c('0x1')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xdc0c('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x6216=['exports','STRING','BOOLEAN'];(function(_0x47291e,_0x4e7b50){var _0x1b7a85=function(_0x1c2565){while(--_0x1c2565){_0x47291e['push'](_0x47291e['shift']());}};_0x1b7a85(++_0x4e7b50);}(_0x6216,0x11d));var _0x6621=function(_0x14d08c,_0x5b7091){_0x14d08c=_0x14d08c-0x0;var _0x5f5bd9=_0x6216[_0x14d08c];return _0x5f5bd9;};'use strict';var Sequelize=require('sequelize');module[_0x6621('0x0')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x6621('0x1')]},'description':{'type':Sequelize[_0x6621('0x1')]},'status':{'type':Sequelize[_0x6621('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 2019f38..16ee345 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf06a=['role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','addAllCondition','Condition','addAnyCondition','TriggerAnyId','getAllConditions','findOne','sort','pick','getAnyConditions','addAction','TriggerId','Action','getActions','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','limit','undefined','count','json','reject','save','update','then','destroy','get','Triggers','UserProfileResource','end','error','stack','name','send','rawAttributes','fieldName','type','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','where','filter','merge','options','Trigger','includeAll','include','findAll','catch','show','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x45d3f0,_0x4be53f){var _0x314b79=function(_0x563d32){while(--_0x563d32){_0x45d3f0['push'](_0x45d3f0['shift']());}};_0x314b79(++_0x4be53f);}(_0xf06a,0xc5));var _0xaf06=function(_0x223b0c,_0x371c5a){_0x223b0c=_0x223b0c-0x0;var _0x4ce5ed=_0xf06a[_0x223b0c];return _0x4ce5ed;};'use strict';var emlformat=require(_0xaf06('0x0'));var rimraf=require(_0xaf06('0x1'));var zipdir=require(_0xaf06('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaf06('0x3'));var moment=require('moment');var BPromise=require(_0xaf06('0x4'));var Mustache=require(_0xaf06('0x5'));var util=require(_0xaf06('0x6'));var path=require(_0xaf06('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaf06('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaf06('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaf06('0xa'));var toCsv=require(_0xaf06('0xb'));var querystring=require(_0xaf06('0xc'));var Papa=require(_0xaf06('0xd'));var Redis=require(_0xaf06('0xe'));var authService=require(_0xaf06('0xf'));var qs=require(_0xaf06('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xaf06('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xaf06('0x12'));var licenseUtil=require(_0xaf06('0x13'));var db=require(_0xaf06('0x14'))['db'];function respondWithStatusCode(_0x4f3c99,_0x309910){_0x309910=_0x309910||0xcc;return function(_0x17212d){if(_0x17212d){return _0x4f3c99[_0xaf06('0x15')](_0x309910);}return _0x4f3c99[_0xaf06('0x16')](_0x309910)['end']();};}function respondWithResult(_0x458e6a,_0x2a8942){_0x2a8942=_0x2a8942||0xc8;return function(_0x1741bd){if(_0x1741bd){return _0x458e6a[_0xaf06('0x16')](_0x2a8942)['json'](_0x1741bd);}};}function respondWithFilteredResult(_0x6125d5,_0x400c3d){return function(_0x1ce503){if(_0x1ce503){var _0x2ef9a1=typeof _0x400c3d[_0xaf06('0x17')]==='undefined'&&typeof _0x400c3d[_0xaf06('0x18')]===_0xaf06('0x19');var _0x3fd8a5=_0x1ce503[_0xaf06('0x1a')];var _0x489935=_0x2ef9a1?0x0:_0x400c3d[_0xaf06('0x17')];var _0x21dc26=_0x2ef9a1?_0x1ce503[_0xaf06('0x1a')]:_0x400c3d[_0xaf06('0x17')]+_0x400c3d[_0xaf06('0x18')];var _0xcb62ea;if(_0x21dc26>=_0x3fd8a5){_0x21dc26=_0x3fd8a5;_0xcb62ea=0xc8;}else{_0xcb62ea=0xce;}_0x6125d5[_0xaf06('0x16')](_0xcb62ea);return _0x6125d5['set']('Content-Range',_0x489935+'-'+_0x21dc26+'/'+_0x3fd8a5)[_0xaf06('0x1b')](_0x1ce503);}return null;};}function patchUpdates(_0x155b9c){return function(_0x325cdf){try{jsonpatch['apply'](_0x325cdf,_0x155b9c,!![]);}catch(_0x3341b1){return BPromise[_0xaf06('0x1c')](_0x3341b1);}return _0x325cdf[_0xaf06('0x1d')]();};}function saveUpdates(_0x4a4954,_0x37171f){return function(_0x4ce9a9){if(_0x4ce9a9){return _0x4ce9a9[_0xaf06('0x1e')](_0x4a4954)[_0xaf06('0x1f')](function(_0x497a5d){return _0x497a5d;});}return null;};}function removeEntity(_0x4a2a08,_0x1cf783){return function(_0x41c024){if(_0x41c024){return _0x41c024[_0xaf06('0x20')]()[_0xaf06('0x1f')](function(){var _0x19bff8=_0x41c024[_0xaf06('0x21')]({'plain':!![]});var _0xcd941f=_0xaf06('0x22');return db[_0xaf06('0x23')][_0xaf06('0x20')]({'where':{'type':_0xcd941f,'resourceId':_0x19bff8['id']}})[_0xaf06('0x1f')](function(){return _0x41c024;});})['then'](function(){_0x4a2a08['status'](0xcc)[_0xaf06('0x24')]();});}};}function handleEntityNotFound(_0x1616d0,_0x5a7f49){return function(_0x121269){if(!_0x121269){_0x1616d0['sendStatus'](0x194);}return _0x121269;};}function handleError(_0x2701f7,_0x1590b5){_0x1590b5=_0x1590b5||0x1f4;return function(_0x38e6c5){logger[_0xaf06('0x25')](_0x38e6c5[_0xaf06('0x26')]);if(_0x38e6c5[_0xaf06('0x27')]){delete _0x38e6c5['name'];}_0x2701f7['status'](_0x1590b5)[_0xaf06('0x28')](_0x38e6c5);};}exports['index']=function(_0x3aa14d,_0x1aacde){var _0x4202c7={},_0x4fa311={},_0x36a648={'count':0x0,'rows':[]};var _0x31716f=_['map'](db['Trigger'][_0xaf06('0x29')],function(_0x346412){return{'name':_0x346412[_0xaf06('0x2a')],'type':_0x346412[_0xaf06('0x2b')]['key']};});_0x4fa311['model']=_[_0xaf06('0x2c')](_0x31716f,_0xaf06('0x27'));_0x4fa311['query']=_[_0xaf06('0x2d')](_0x3aa14d[_0xaf06('0x2e')]);_0x4fa311[_0xaf06('0x2f')]=_[_0xaf06('0x30')](_0x4fa311[_0xaf06('0x31')],_0x4fa311[_0xaf06('0x2e')]);_0x4202c7[_0xaf06('0x32')]=_[_0xaf06('0x30')](_0x4fa311[_0xaf06('0x31')],qs[_0xaf06('0x33')](_0x3aa14d[_0xaf06('0x2e')][_0xaf06('0x33')]));_0x4202c7['attributes']=_0x4202c7[_0xaf06('0x32')][_0xaf06('0x34')]?_0x4202c7['attributes']:_0x4fa311[_0xaf06('0x31')];if(!_0x3aa14d[_0xaf06('0x2e')][_0xaf06('0x35')](_0xaf06('0x36'))){_0x4202c7['limit']=qs['limit'](_0x3aa14d[_0xaf06('0x2e')][_0xaf06('0x18')]);_0x4202c7[_0xaf06('0x17')]=qs['offset'](_0x3aa14d[_0xaf06('0x2e')]['offset']);}_0x4202c7[_0xaf06('0x37')]=qs['sort'](_0x3aa14d['query']['sort']);_0x4202c7[_0xaf06('0x38')]=qs[_0xaf06('0x2f')](_['pick'](_0x3aa14d[_0xaf06('0x2e')],_0x4fa311[_0xaf06('0x2f')]),_0x31716f);if(_0x3aa14d[_0xaf06('0x2e')][_0xaf06('0x39')]){_0x4202c7['where']=_[_0xaf06('0x3a')](_0x4202c7[_0xaf06('0x38')],{'$or':_[_0xaf06('0x2c')](_0x31716f,function(_0x324b87){if(_0x324b87[_0xaf06('0x2b')]!=='VIRTUAL'){var _0x35b310={};_0x35b310[_0x324b87[_0xaf06('0x27')]]={'$like':'%'+_0x3aa14d[_0xaf06('0x2e')]['filter']+'%'};return _0x35b310;}})});}_0x4202c7=_[_0xaf06('0x3a')]({},_0x4202c7,_0x3aa14d[_0xaf06('0x3b')]);var _0x5a5e3c={'where':_0x4202c7[_0xaf06('0x38')]};return db[_0xaf06('0x3c')]['count'](_0x5a5e3c)['then'](function(_0xdbc5b1){_0x36a648[_0xaf06('0x1a')]=_0xdbc5b1;if(_0x3aa14d['query'][_0xaf06('0x3d')]){_0x4202c7[_0xaf06('0x3e')]=[{'all':!![]}];}return db['Trigger'][_0xaf06('0x3f')](_0x4202c7);})[_0xaf06('0x1f')](function(_0x4dacdc){_0x36a648['rows']=_0x4dacdc;return _0x36a648;})[_0xaf06('0x1f')](respondWithFilteredResult(_0x1aacde,_0x4202c7))[_0xaf06('0x40')](handleError(_0x1aacde,null));};exports[_0xaf06('0x41')]=function(_0x1a3bc7,_0x56c051){var _0x239d31={'raw':![],'where':{'id':_0x1a3bc7['params']['id']}},_0x288ed4={};_0x288ed4[_0xaf06('0x31')]=_[_0xaf06('0x2d')](db[_0xaf06('0x3c')][_0xaf06('0x29')]);_0x288ed4[_0xaf06('0x2e')]=_[_0xaf06('0x2d')](_0x1a3bc7[_0xaf06('0x2e')]);_0x288ed4[_0xaf06('0x2f')]=_[_0xaf06('0x30')](_0x288ed4['model'],_0x288ed4[_0xaf06('0x2e')]);_0x239d31[_0xaf06('0x32')]=_['intersection'](_0x288ed4[_0xaf06('0x31')],qs['fields'](_0x1a3bc7[_0xaf06('0x2e')][_0xaf06('0x33')]));_0x239d31[_0xaf06('0x32')]=_0x239d31['attributes'][_0xaf06('0x34')]?_0x239d31[_0xaf06('0x32')]:_0x288ed4[_0xaf06('0x31')];if(_0x1a3bc7[_0xaf06('0x2e')][_0xaf06('0x3d')]){_0x239d31[_0xaf06('0x3e')]=[{'all':!![]}];}_0x239d31=_[_0xaf06('0x3a')]({},_0x239d31,_0x1a3bc7[_0xaf06('0x3b')]);return db[_0xaf06('0x3c')][_0xaf06('0x42')](_0x239d31)['then'](handleEntityNotFound(_0x56c051,null))[_0xaf06('0x1f')](respondWithResult(_0x56c051,null))[_0xaf06('0x40')](handleError(_0x56c051,null));};exports[_0xaf06('0x43')]=function(_0x362cf1,_0x205098){return db[_0xaf06('0x3c')][_0xaf06('0x43')](_0x362cf1['body'],{})[_0xaf06('0x1f')](function(_0x50eb81){var _0x2c8171=_0x362cf1[_0xaf06('0x44')]['get']({'plain':!![]});if(!_0x2c8171)throw new Error(_0xaf06('0x45'));if(_0x2c8171[_0xaf06('0x46')]===_0xaf06('0x44')){var _0x1be712=_0x50eb81[_0xaf06('0x21')]({'plain':!![]});var _0x682187=_0xaf06('0x22');return db['UserProfileSection']['find']({'where':{'name':_0x682187,'userProfileId':_0x2c8171[_0xaf06('0x47')]},'raw':!![]})[_0xaf06('0x1f')](function(_0x39dcb5){if(_0x39dcb5&&_0x39dcb5[_0xaf06('0x48')]===0x0){return db[_0xaf06('0x23')][_0xaf06('0x43')]({'name':_0x1be712[_0xaf06('0x27')],'resourceId':_0x1be712['id'],'type':_0x39dcb5[_0xaf06('0x27')],'sectionId':_0x39dcb5['id']},{})[_0xaf06('0x1f')](function(){return _0x50eb81;});}else{return _0x50eb81;}})[_0xaf06('0x40')](function(_0x2e45b2){logger['error'](_0xaf06('0x49'),_0x2e45b2);throw _0x2e45b2;});}return _0x50eb81;})[_0xaf06('0x1f')](respondWithResult(_0x205098,0xc9))[_0xaf06('0x40')](handleError(_0x205098,null));};exports[_0xaf06('0x1e')]=function(_0x5efdc0,_0x387b18){if(_0x5efdc0['body']['id']){delete _0x5efdc0[_0xaf06('0x4a')]['id'];}return db[_0xaf06('0x3c')]['find']({'where':{'id':_0x5efdc0[_0xaf06('0x4b')]['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x387b18,null))[_0xaf06('0x1f')](saveUpdates(_0x5efdc0['body'],null))[_0xaf06('0x1f')](respondWithResult(_0x387b18,null))[_0xaf06('0x40')](handleError(_0x387b18,null));};exports['destroy']=function(_0x247698,_0x3953cd){return db[_0xaf06('0x3c')]['find']({'where':{'id':_0x247698[_0xaf06('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3953cd,null))['then'](removeEntity(_0x3953cd,null))[_0xaf06('0x40')](handleError(_0x3953cd,null));};exports[_0xaf06('0x4c')]=function(_0x461ae4,_0x2a4bb3,_0x488654){if(_0x461ae4[_0xaf06('0x4a')]['id']){delete _0x461ae4[_0xaf06('0x4a')]['id'];}return db['Trigger'][_0xaf06('0x42')]({'where':{'id':_0x461ae4[_0xaf06('0x4b')]['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x2a4bb3,null))[_0xaf06('0x1f')](function(_0x5719b4){if(_0x5719b4){_0x461ae4[_0xaf06('0x4a')]['TriggerAllId']=_0x5719b4['id'];return db[_0xaf06('0x4d')][_0xaf06('0x43')](_0x461ae4[_0xaf06('0x4a')]);}})[_0xaf06('0x1f')](respondWithResult(_0x2a4bb3,null))['catch'](handleError(_0x2a4bb3,null));};exports[_0xaf06('0x4e')]=function(_0x56f0f1,_0x45814b,_0x58cb35){if(_0x56f0f1[_0xaf06('0x4a')]['id']){delete _0x56f0f1[_0xaf06('0x4a')]['id'];}return db[_0xaf06('0x3c')]['find']({'where':{'id':_0x56f0f1[_0xaf06('0x4b')]['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x45814b,null))[_0xaf06('0x1f')](function(_0x47bf87){if(_0x47bf87){_0x56f0f1[_0xaf06('0x4a')][_0xaf06('0x4f')]=_0x47bf87['id'];return db[_0xaf06('0x4d')][_0xaf06('0x43')](_0x56f0f1['body']);}})['then'](respondWithResult(_0x45814b,null))[_0xaf06('0x40')](handleError(_0x45814b,null));};exports[_0xaf06('0x50')]=function(_0x26a21f,_0x11fe67,_0x21a5fd){var _0x50684c={};var _0x3f4e01={};var _0x19620c;var _0x3713e9;return db[_0xaf06('0x3c')][_0xaf06('0x51')]({'where':{'id':_0x26a21f[_0xaf06('0x4b')]['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x11fe67,null))[_0xaf06('0x1f')](function(_0x388ab0){if(_0x388ab0){_0x19620c=_0x388ab0;_0x3f4e01[_0xaf06('0x31')]=_[_0xaf06('0x2d')](db['Condition']['rawAttributes']);_0x3f4e01['query']=_[_0xaf06('0x2d')](_0x26a21f['query']);_0x3f4e01['filters']=_[_0xaf06('0x30')](_0x3f4e01[_0xaf06('0x31')],_0x3f4e01[_0xaf06('0x2e')]);_0x50684c[_0xaf06('0x32')]=_[_0xaf06('0x30')](_0x3f4e01['model'],qs['fields'](_0x26a21f[_0xaf06('0x2e')][_0xaf06('0x33')]));_0x50684c['attributes']=_0x50684c[_0xaf06('0x32')][_0xaf06('0x34')]?_0x50684c[_0xaf06('0x32')]:_0x3f4e01[_0xaf06('0x31')];_0x50684c['order']=qs[_0xaf06('0x52')](_0x26a21f['query'][_0xaf06('0x52')]);_0x50684c[_0xaf06('0x38')]=qs[_0xaf06('0x2f')](_[_0xaf06('0x53')](_0x26a21f['query'],_0x3f4e01[_0xaf06('0x2f')]));if(_0x26a21f[_0xaf06('0x2e')]['filter']){_0x50684c[_0xaf06('0x38')]=_[_0xaf06('0x3a')](_0x50684c['where'],{'$or':_[_0xaf06('0x2c')](_0x50684c['attributes'],function(_0x389acf){var _0x2331fa={};_0x2331fa[_0x389acf]={'$like':'%'+_0x26a21f[_0xaf06('0x2e')][_0xaf06('0x39')]+'%'};return _0x2331fa;})});}_0x50684c=_[_0xaf06('0x3a')]({},_0x50684c,_0x26a21f[_0xaf06('0x3b')]);return _0x19620c[_0xaf06('0x50')](_0x50684c);}})[_0xaf06('0x1f')](function(_0x599082){if(_0x599082){_0x3713e9=_0x599082[_0xaf06('0x34')];if(!_0x26a21f[_0xaf06('0x2e')][_0xaf06('0x35')](_0xaf06('0x36'))){_0x50684c['limit']=qs[_0xaf06('0x18')](_0x26a21f[_0xaf06('0x2e')][_0xaf06('0x18')]);_0x50684c[_0xaf06('0x17')]=qs['offset'](_0x26a21f['query'][_0xaf06('0x17')]);}return _0x19620c[_0xaf06('0x50')](_0x50684c);}})[_0xaf06('0x1f')](function(_0x4c2c6d){if(_0x4c2c6d){return _0x4c2c6d?{'count':_0x3713e9,'rows':_0x4c2c6d}:null;}})['then'](respondWithResult(_0x11fe67,null))[_0xaf06('0x40')](handleError(_0x11fe67,null));};exports[_0xaf06('0x54')]=function(_0x5d41bb,_0x16966c,_0x4c9675){var _0x288630={};var _0x4a8117={};var _0x137bb0;var _0x523f11;return db['Trigger'][_0xaf06('0x51')]({'where':{'id':_0x5d41bb[_0xaf06('0x4b')]['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x16966c,null))[_0xaf06('0x1f')](function(_0x968ee6){if(_0x968ee6){_0x137bb0=_0x968ee6;_0x4a8117[_0xaf06('0x31')]=_['keys'](db['Condition']['rawAttributes']);_0x4a8117[_0xaf06('0x2e')]=_['keys'](_0x5d41bb[_0xaf06('0x2e')]);_0x4a8117[_0xaf06('0x2f')]=_['intersection'](_0x4a8117[_0xaf06('0x31')],_0x4a8117[_0xaf06('0x2e')]);_0x288630[_0xaf06('0x32')]=_['intersection'](_0x4a8117[_0xaf06('0x31')],qs[_0xaf06('0x33')](_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x33')]));_0x288630[_0xaf06('0x32')]=_0x288630[_0xaf06('0x32')][_0xaf06('0x34')]?_0x288630[_0xaf06('0x32')]:_0x4a8117[_0xaf06('0x31')];_0x288630['order']=qs[_0xaf06('0x52')](_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x52')]);_0x288630['where']=qs[_0xaf06('0x2f')](_['pick'](_0x5d41bb[_0xaf06('0x2e')],_0x4a8117[_0xaf06('0x2f')]));if(_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x39')]){_0x288630[_0xaf06('0x38')]=_[_0xaf06('0x3a')](_0x288630[_0xaf06('0x38')],{'$or':_['map'](_0x288630[_0xaf06('0x32')],function(_0x5daf69){var _0x52b87d={};_0x52b87d[_0x5daf69]={'$like':'%'+_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x39')]+'%'};return _0x52b87d;})});}_0x288630=_[_0xaf06('0x3a')]({},_0x288630,_0x5d41bb[_0xaf06('0x3b')]);return _0x137bb0['getAnyConditions'](_0x288630);}})['then'](function(_0x426dd6){if(_0x426dd6){_0x523f11=_0x426dd6['length'];if(!_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x35')](_0xaf06('0x36'))){_0x288630[_0xaf06('0x18')]=qs['limit'](_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x18')]);_0x288630['offset']=qs['offset'](_0x5d41bb[_0xaf06('0x2e')][_0xaf06('0x17')]);}return _0x137bb0['getAnyConditions'](_0x288630);}})[_0xaf06('0x1f')](function(_0x3c15eb){if(_0x3c15eb){return _0x3c15eb?{'count':_0x523f11,'rows':_0x3c15eb}:null;}})[_0xaf06('0x1f')](respondWithResult(_0x16966c,null))[_0xaf06('0x40')](handleError(_0x16966c,null));};exports[_0xaf06('0x55')]=function(_0x558743,_0x4737f3,_0x15c560){if(_0x558743[_0xaf06('0x4a')]['id']){delete _0x558743[_0xaf06('0x4a')]['id'];}return db[_0xaf06('0x3c')][_0xaf06('0x42')]({'where':{'id':_0x558743['params']['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x4737f3,null))[_0xaf06('0x1f')](function(_0x3182c0){if(_0x3182c0){_0x558743['body'][_0xaf06('0x56')]=_0x3182c0['id'];return db[_0xaf06('0x57')][_0xaf06('0x43')](_0x558743['body']);}})[_0xaf06('0x1f')](respondWithResult(_0x4737f3,null))[_0xaf06('0x40')](handleError(_0x4737f3,null));};exports[_0xaf06('0x58')]=function(_0xd3fdcc,_0x5e50d3,_0x464e5a){var _0x11f5d5={};var _0x3325b0={};var _0x16c4b9;var _0x39cd2a;return db[_0xaf06('0x3c')][_0xaf06('0x51')]({'where':{'id':_0xd3fdcc[_0xaf06('0x4b')]['id']}})[_0xaf06('0x1f')](handleEntityNotFound(_0x5e50d3,null))['then'](function(_0xf814bc){if(_0xf814bc){_0x16c4b9=_0xf814bc;_0x3325b0['model']=_[_0xaf06('0x2d')](db[_0xaf06('0x57')][_0xaf06('0x29')]);_0x3325b0[_0xaf06('0x2e')]=_[_0xaf06('0x2d')](_0xd3fdcc[_0xaf06('0x2e')]);_0x3325b0[_0xaf06('0x2f')]=_['intersection'](_0x3325b0[_0xaf06('0x31')],_0x3325b0[_0xaf06('0x2e')]);_0x11f5d5[_0xaf06('0x32')]=_['intersection'](_0x3325b0['model'],qs[_0xaf06('0x33')](_0xd3fdcc[_0xaf06('0x2e')][_0xaf06('0x33')]));_0x11f5d5[_0xaf06('0x32')]=_0x11f5d5[_0xaf06('0x32')][_0xaf06('0x34')]?_0x11f5d5[_0xaf06('0x32')]:_0x3325b0[_0xaf06('0x31')];_0x11f5d5['order']=qs[_0xaf06('0x52')](_0xd3fdcc['query'][_0xaf06('0x52')]);_0x11f5d5['where']=qs[_0xaf06('0x2f')](_[_0xaf06('0x53')](_0xd3fdcc['query'],_0x3325b0[_0xaf06('0x2f')]));if(_0xd3fdcc[_0xaf06('0x2e')][_0xaf06('0x39')]){_0x11f5d5[_0xaf06('0x38')]=_['merge'](_0x11f5d5[_0xaf06('0x38')],{'$or':_['map'](_0x11f5d5[_0xaf06('0x32')],function(_0xdb7100){var _0x56b0ee={};_0x56b0ee[_0xdb7100]={'$like':'%'+_0xd3fdcc[_0xaf06('0x2e')][_0xaf06('0x39')]+'%'};return _0x56b0ee;})});}_0x11f5d5=_[_0xaf06('0x3a')]({},_0x11f5d5,_0xd3fdcc[_0xaf06('0x3b')]);return _0x16c4b9[_0xaf06('0x58')](_0x11f5d5);}})[_0xaf06('0x1f')](function(_0x5f4658){if(_0x5f4658){_0x39cd2a=_0x5f4658[_0xaf06('0x34')];if(!_0xd3fdcc[_0xaf06('0x2e')][_0xaf06('0x35')](_0xaf06('0x36'))){_0x11f5d5['limit']=qs[_0xaf06('0x18')](_0xd3fdcc[_0xaf06('0x2e')]['limit']);_0x11f5d5[_0xaf06('0x17')]=qs['offset'](_0xd3fdcc['query'][_0xaf06('0x17')]);}return _0x16c4b9[_0xaf06('0x58')](_0x11f5d5);}})[_0xaf06('0x1f')](function(_0x2499e2){if(_0x2499e2){return _0x2499e2?{'count':_0x39cd2a,'rows':_0x2499e2}:null;}})[_0xaf06('0x1f')](respondWithResult(_0x5e50d3,null))[_0xaf06('0x40')](handleError(_0x5e50d3,null));};
\ No newline at end of file
+var _0x3ce3=['UserProfileSection','find','userProfileId','addAllCondition','TriggerAllId','Condition','getAllConditions','findOne','getAnyConditions','addAction','TriggerId','getActions','Action','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','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','end','status','offset','undefined','limit','set','json','apply','save','update','then','get','Triggers','UserProfileResource','destroy','error','stack','name','send','map','Trigger','rawAttributes','type','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','count','includeAll','include','catch','params','keys','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user'];(function(_0x59db1d,_0x416dca){var _0x56d8fb=function(_0x1d88f9){while(--_0x1d88f9){_0x59db1d['push'](_0x59db1d['shift']());}};_0x56d8fb(++_0x416dca);}(_0x3ce3,0x121));var _0x33ce=function(_0x33b09c,_0x1cc2a6){_0x33b09c=_0x33b09c-0x0;var _0x508ac6=_0x3ce3[_0x33b09c];return _0x508ac6;};'use strict';var emlformat=require(_0x33ce('0x0'));var rimraf=require(_0x33ce('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x33ce('0x2'));var moment=require(_0x33ce('0x3'));var BPromise=require(_0x33ce('0x4'));var Mustache=require(_0x33ce('0x5'));var util=require(_0x33ce('0x6'));var path=require(_0x33ce('0x7'));var sox=require(_0x33ce('0x8'));var csv=require(_0x33ce('0x9'));var ejs=require(_0x33ce('0xa'));var fs=require('fs');var fs_extra=require(_0x33ce('0xb'));var _=require(_0x33ce('0xc'));var squel=require(_0x33ce('0xd'));var crypto=require(_0x33ce('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x33ce('0xf'));var toCsv=require(_0x33ce('0x9'));var querystring=require(_0x33ce('0x10'));var Papa=require(_0x33ce('0x11'));var Redis=require(_0x33ce('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x33ce('0x13'));var as=require(_0x33ce('0x14'));var hardwareService=require(_0x33ce('0x15'));var logger=require(_0x33ce('0x16'))('api');var utils=require(_0x33ce('0x17'));var config=require(_0x33ce('0x18'));var licenseUtil=require(_0x33ce('0x19'));var db=require(_0x33ce('0x1a'))['db'];function respondWithStatusCode(_0x3b2e5a,_0xbdbd32){_0xbdbd32=_0xbdbd32||0xcc;return function(_0x5956a1){if(_0x5956a1){return _0x3b2e5a[_0x33ce('0x1b')](_0xbdbd32);}return _0x3b2e5a['status'](_0xbdbd32)[_0x33ce('0x1c')]();};}function respondWithResult(_0xd285d0,_0x25af71){_0x25af71=_0x25af71||0xc8;return function(_0x3f43af){if(_0x3f43af){return _0xd285d0[_0x33ce('0x1d')](_0x25af71)['json'](_0x3f43af);}};}function respondWithFilteredResult(_0x138506,_0x45ee70){return function(_0x15cb60){if(_0x15cb60){var _0x61cba1=typeof _0x45ee70[_0x33ce('0x1e')]===_0x33ce('0x1f')&&typeof _0x45ee70[_0x33ce('0x20')]===_0x33ce('0x1f');var _0x32a1ae=_0x15cb60['count'];var _0x930bf3=_0x61cba1?0x0:_0x45ee70[_0x33ce('0x1e')];var _0x3b5f5b=_0x61cba1?_0x15cb60['count']:_0x45ee70['offset']+_0x45ee70[_0x33ce('0x20')];var _0x23b5f5;if(_0x3b5f5b>=_0x32a1ae){_0x3b5f5b=_0x32a1ae;_0x23b5f5=0xc8;}else{_0x23b5f5=0xce;}_0x138506['status'](_0x23b5f5);return _0x138506[_0x33ce('0x21')]('Content-Range',_0x930bf3+'-'+_0x3b5f5b+'/'+_0x32a1ae)[_0x33ce('0x22')](_0x15cb60);}return null;};}function patchUpdates(_0x612edf){return function(_0x43781a){try{jsonpatch[_0x33ce('0x23')](_0x43781a,_0x612edf,!![]);}catch(_0x2e3260){return BPromise['reject'](_0x2e3260);}return _0x43781a[_0x33ce('0x24')]();};}function saveUpdates(_0x58d9c6,_0x5a8f9e){return function(_0x2c6890){if(_0x2c6890){return _0x2c6890[_0x33ce('0x25')](_0x58d9c6)[_0x33ce('0x26')](function(_0x2e2867){return _0x2e2867;});}return null;};}function removeEntity(_0x39f728,_0x35a249){return function(_0x24d819){if(_0x24d819){return _0x24d819['destroy']()[_0x33ce('0x26')](function(){var _0x2084e3=_0x24d819[_0x33ce('0x27')]({'plain':!![]});var _0x11821f=_0x33ce('0x28');return db[_0x33ce('0x29')][_0x33ce('0x2a')]({'where':{'type':_0x11821f,'resourceId':_0x2084e3['id']}})[_0x33ce('0x26')](function(){return _0x24d819;});})['then'](function(){_0x39f728[_0x33ce('0x1d')](0xcc)[_0x33ce('0x1c')]();});}};}function handleEntityNotFound(_0x390abe,_0x1505c1){return function(_0x56a50b){if(!_0x56a50b){_0x390abe[_0x33ce('0x1b')](0x194);}return _0x56a50b;};}function handleError(_0x136af5,_0x17e8e1){_0x17e8e1=_0x17e8e1||0x1f4;return function(_0x8abb64){logger[_0x33ce('0x2b')](_0x8abb64[_0x33ce('0x2c')]);if(_0x8abb64[_0x33ce('0x2d')]){delete _0x8abb64[_0x33ce('0x2d')];}_0x136af5[_0x33ce('0x1d')](_0x17e8e1)[_0x33ce('0x2e')](_0x8abb64);};}exports['index']=function(_0x42fd27,_0x5781d7){var _0x5148ad={},_0x2f3f64={},_0x47daaa={'count':0x0,'rows':[]};var _0x2cfd78=_[_0x33ce('0x2f')](db[_0x33ce('0x30')][_0x33ce('0x31')],function(_0x599e8d){return{'name':_0x599e8d['fieldName'],'type':_0x599e8d[_0x33ce('0x32')][_0x33ce('0x33')]};});_0x2f3f64[_0x33ce('0x34')]=_[_0x33ce('0x2f')](_0x2cfd78,_0x33ce('0x2d'));_0x2f3f64['query']=_['keys'](_0x42fd27[_0x33ce('0x35')]);_0x2f3f64['filters']=_[_0x33ce('0x36')](_0x2f3f64[_0x33ce('0x34')],_0x2f3f64[_0x33ce('0x35')]);_0x5148ad['attributes']=_[_0x33ce('0x36')](_0x2f3f64['model'],qs[_0x33ce('0x37')](_0x42fd27[_0x33ce('0x35')]['fields']));_0x5148ad[_0x33ce('0x38')]=_0x5148ad['attributes'][_0x33ce('0x39')]?_0x5148ad['attributes']:_0x2f3f64[_0x33ce('0x34')];if(!_0x42fd27[_0x33ce('0x35')][_0x33ce('0x3a')](_0x33ce('0x3b'))){_0x5148ad[_0x33ce('0x20')]=qs[_0x33ce('0x20')](_0x42fd27['query']['limit']);_0x5148ad[_0x33ce('0x1e')]=qs['offset'](_0x42fd27['query'][_0x33ce('0x1e')]);}_0x5148ad[_0x33ce('0x3c')]=qs[_0x33ce('0x3d')](_0x42fd27[_0x33ce('0x35')][_0x33ce('0x3d')]);_0x5148ad[_0x33ce('0x3e')]=qs['filters'](_[_0x33ce('0x3f')](_0x42fd27[_0x33ce('0x35')],_0x2f3f64[_0x33ce('0x40')]),_0x2cfd78);if(_0x42fd27[_0x33ce('0x35')][_0x33ce('0x41')]){_0x5148ad[_0x33ce('0x3e')]=_[_0x33ce('0x42')](_0x5148ad[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x2cfd78,function(_0x1af1dc){if(_0x1af1dc[_0x33ce('0x32')]!==_0x33ce('0x43')){var _0x27891b={};_0x27891b[_0x1af1dc[_0x33ce('0x2d')]]={'$like':'%'+_0x42fd27[_0x33ce('0x35')][_0x33ce('0x41')]+'%'};return _0x27891b;}})});}_0x5148ad=_[_0x33ce('0x42')]({},_0x5148ad,_0x42fd27[_0x33ce('0x44')]);var _0x4cbcd4={'where':_0x5148ad[_0x33ce('0x3e')]};return db[_0x33ce('0x30')]['count'](_0x4cbcd4)[_0x33ce('0x26')](function(_0x4493b3){_0x47daaa[_0x33ce('0x45')]=_0x4493b3;if(_0x42fd27[_0x33ce('0x35')][_0x33ce('0x46')]){_0x5148ad[_0x33ce('0x47')]=[{'all':!![]}];}return db['Trigger']['findAll'](_0x5148ad);})[_0x33ce('0x26')](function(_0x269d35){_0x47daaa['rows']=_0x269d35;return _0x47daaa;})[_0x33ce('0x26')](respondWithFilteredResult(_0x5781d7,_0x5148ad))[_0x33ce('0x48')](handleError(_0x5781d7,null));};exports['show']=function(_0x41dc84,_0x2a2b6d){var _0x56fbbf={'raw':![],'where':{'id':_0x41dc84[_0x33ce('0x49')]['id']}},_0x5b50a8={};_0x5b50a8[_0x33ce('0x34')]=_[_0x33ce('0x4a')](db['Trigger'][_0x33ce('0x31')]);_0x5b50a8['query']=_[_0x33ce('0x4a')](_0x41dc84[_0x33ce('0x35')]);_0x5b50a8['filters']=_[_0x33ce('0x36')](_0x5b50a8['model'],_0x5b50a8[_0x33ce('0x35')]);_0x56fbbf[_0x33ce('0x38')]=_[_0x33ce('0x36')](_0x5b50a8['model'],qs['fields'](_0x41dc84[_0x33ce('0x35')][_0x33ce('0x37')]));_0x56fbbf['attributes']=_0x56fbbf[_0x33ce('0x38')][_0x33ce('0x39')]?_0x56fbbf[_0x33ce('0x38')]:_0x5b50a8[_0x33ce('0x34')];if(_0x41dc84[_0x33ce('0x35')][_0x33ce('0x46')]){_0x56fbbf[_0x33ce('0x47')]=[{'all':!![]}];}_0x56fbbf=_[_0x33ce('0x42')]({},_0x56fbbf,_0x41dc84[_0x33ce('0x44')]);return db[_0x33ce('0x30')]['find'](_0x56fbbf)[_0x33ce('0x26')](handleEntityNotFound(_0x2a2b6d,null))[_0x33ce('0x26')](respondWithResult(_0x2a2b6d,null))[_0x33ce('0x48')](handleError(_0x2a2b6d,null));};exports[_0x33ce('0x4b')]=function(_0xc5eca6,_0xb4321){return db[_0x33ce('0x30')]['create'](_0xc5eca6[_0x33ce('0x4c')],{})[_0x33ce('0x26')](function(_0x30b541){var _0x1ce5ba=_0xc5eca6['user'][_0x33ce('0x27')]({'plain':!![]});if(!_0x1ce5ba)throw new Error(_0x33ce('0x4d'));if(_0x1ce5ba['role']===_0x33ce('0x4e')){var _0x5be98b=_0x30b541[_0x33ce('0x27')]({'plain':!![]});var _0x5c74bb='Triggers';return db[_0x33ce('0x4f')][_0x33ce('0x50')]({'where':{'name':_0x5c74bb,'userProfileId':_0x1ce5ba[_0x33ce('0x51')]},'raw':!![]})[_0x33ce('0x26')](function(_0x2892f7){if(_0x2892f7&&_0x2892f7['autoAssociation']===0x0){return db[_0x33ce('0x29')][_0x33ce('0x4b')]({'name':_0x5be98b[_0x33ce('0x2d')],'resourceId':_0x5be98b['id'],'type':_0x2892f7[_0x33ce('0x2d')],'sectionId':_0x2892f7['id']},{})[_0x33ce('0x26')](function(){return _0x30b541;});}else{return _0x30b541;}})['catch'](function(_0xfd3fdd){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfd3fdd);throw _0xfd3fdd;});}return _0x30b541;})[_0x33ce('0x26')](respondWithResult(_0xb4321,0xc9))['catch'](handleError(_0xb4321,null));};exports[_0x33ce('0x25')]=function(_0x1b6560,_0x207b2f){if(_0x1b6560['body']['id']){delete _0x1b6560[_0x33ce('0x4c')]['id'];}return db['Trigger'][_0x33ce('0x50')]({'where':{'id':_0x1b6560['params']['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x207b2f,null))[_0x33ce('0x26')](saveUpdates(_0x1b6560['body'],null))[_0x33ce('0x26')](respondWithResult(_0x207b2f,null))[_0x33ce('0x48')](handleError(_0x207b2f,null));};exports[_0x33ce('0x2a')]=function(_0x43f737,_0x43a05b){return db[_0x33ce('0x30')][_0x33ce('0x50')]({'where':{'id':_0x43f737['params']['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x43a05b,null))[_0x33ce('0x26')](removeEntity(_0x43a05b,null))[_0x33ce('0x48')](handleError(_0x43a05b,null));};exports[_0x33ce('0x52')]=function(_0x50955a,_0x5e4207,_0x54568c){if(_0x50955a[_0x33ce('0x4c')]['id']){delete _0x50955a['body']['id'];}return db[_0x33ce('0x30')][_0x33ce('0x50')]({'where':{'id':_0x50955a[_0x33ce('0x49')]['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x5e4207,null))[_0x33ce('0x26')](function(_0x22747f){if(_0x22747f){_0x50955a[_0x33ce('0x4c')][_0x33ce('0x53')]=_0x22747f['id'];return db[_0x33ce('0x54')][_0x33ce('0x4b')](_0x50955a[_0x33ce('0x4c')]);}})[_0x33ce('0x26')](respondWithResult(_0x5e4207,null))[_0x33ce('0x48')](handleError(_0x5e4207,null));};exports['addAnyCondition']=function(_0x2420cb,_0x5c9959,_0x4b0275){if(_0x2420cb['body']['id']){delete _0x2420cb['body']['id'];}return db['Trigger'][_0x33ce('0x50')]({'where':{'id':_0x2420cb[_0x33ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x5c9959,null))[_0x33ce('0x26')](function(_0x21e455){if(_0x21e455){_0x2420cb[_0x33ce('0x4c')]['TriggerAnyId']=_0x21e455['id'];return db[_0x33ce('0x54')]['create'](_0x2420cb[_0x33ce('0x4c')]);}})['then'](respondWithResult(_0x5c9959,null))[_0x33ce('0x48')](handleError(_0x5c9959,null));};exports[_0x33ce('0x55')]=function(_0x343fa7,_0x4d8a2a,_0x2c2013){var _0x55b5bd={};var _0x46b0c7={};var _0x1b2c6f;var _0x2010c3;return db[_0x33ce('0x30')][_0x33ce('0x56')]({'where':{'id':_0x343fa7[_0x33ce('0x49')]['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x4d8a2a,null))[_0x33ce('0x26')](function(_0x236e7b){if(_0x236e7b){_0x1b2c6f=_0x236e7b;_0x46b0c7[_0x33ce('0x34')]=_[_0x33ce('0x4a')](db[_0x33ce('0x54')][_0x33ce('0x31')]);_0x46b0c7[_0x33ce('0x35')]=_[_0x33ce('0x4a')](_0x343fa7[_0x33ce('0x35')]);_0x46b0c7[_0x33ce('0x40')]=_['intersection'](_0x46b0c7['model'],_0x46b0c7[_0x33ce('0x35')]);_0x55b5bd[_0x33ce('0x38')]=_[_0x33ce('0x36')](_0x46b0c7['model'],qs[_0x33ce('0x37')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x37')]));_0x55b5bd[_0x33ce('0x38')]=_0x55b5bd['attributes'][_0x33ce('0x39')]?_0x55b5bd[_0x33ce('0x38')]:_0x46b0c7[_0x33ce('0x34')];_0x55b5bd[_0x33ce('0x3c')]=qs[_0x33ce('0x3d')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x3d')]);_0x55b5bd[_0x33ce('0x3e')]=qs[_0x33ce('0x40')](_['pick'](_0x343fa7[_0x33ce('0x35')],_0x46b0c7[_0x33ce('0x40')]));if(_0x343fa7[_0x33ce('0x35')][_0x33ce('0x41')]){_0x55b5bd['where']=_[_0x33ce('0x42')](_0x55b5bd[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x55b5bd['attributes'],function(_0x26ed29){var _0x27f224={};_0x27f224[_0x26ed29]={'$like':'%'+_0x343fa7['query'][_0x33ce('0x41')]+'%'};return _0x27f224;})});}_0x55b5bd=_[_0x33ce('0x42')]({},_0x55b5bd,_0x343fa7['options']);return _0x1b2c6f[_0x33ce('0x55')](_0x55b5bd);}})['then'](function(_0x69039a){if(_0x69039a){_0x2010c3=_0x69039a['length'];if(!_0x343fa7[_0x33ce('0x35')][_0x33ce('0x3a')](_0x33ce('0x3b'))){_0x55b5bd[_0x33ce('0x20')]=qs[_0x33ce('0x20')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x20')]);_0x55b5bd[_0x33ce('0x1e')]=qs[_0x33ce('0x1e')](_0x343fa7[_0x33ce('0x35')][_0x33ce('0x1e')]);}return _0x1b2c6f[_0x33ce('0x55')](_0x55b5bd);}})[_0x33ce('0x26')](function(_0x354575){if(_0x354575){return _0x354575?{'count':_0x2010c3,'rows':_0x354575}:null;}})[_0x33ce('0x26')](respondWithResult(_0x4d8a2a,null))[_0x33ce('0x48')](handleError(_0x4d8a2a,null));};exports[_0x33ce('0x57')]=function(_0x15a033,_0x4ae2d7,_0x335121){var _0x57af75={};var _0x156114={};var _0xf313ed;var _0x123aad;return db['Trigger'][_0x33ce('0x56')]({'where':{'id':_0x15a033[_0x33ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ae2d7,null))[_0x33ce('0x26')](function(_0x4ee5d3){if(_0x4ee5d3){_0xf313ed=_0x4ee5d3;_0x156114['model']=_['keys'](db['Condition'][_0x33ce('0x31')]);_0x156114[_0x33ce('0x35')]=_[_0x33ce('0x4a')](_0x15a033['query']);_0x156114[_0x33ce('0x40')]=_[_0x33ce('0x36')](_0x156114['model'],_0x156114[_0x33ce('0x35')]);_0x57af75['attributes']=_[_0x33ce('0x36')](_0x156114[_0x33ce('0x34')],qs[_0x33ce('0x37')](_0x15a033[_0x33ce('0x35')][_0x33ce('0x37')]));_0x57af75['attributes']=_0x57af75[_0x33ce('0x38')][_0x33ce('0x39')]?_0x57af75[_0x33ce('0x38')]:_0x156114[_0x33ce('0x34')];_0x57af75[_0x33ce('0x3c')]=qs[_0x33ce('0x3d')](_0x15a033['query']['sort']);_0x57af75['where']=qs[_0x33ce('0x40')](_['pick'](_0x15a033['query'],_0x156114[_0x33ce('0x40')]));if(_0x15a033['query'][_0x33ce('0x41')]){_0x57af75[_0x33ce('0x3e')]=_['merge'](_0x57af75[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x57af75[_0x33ce('0x38')],function(_0x1200c9){var _0x287958={};_0x287958[_0x1200c9]={'$like':'%'+_0x15a033[_0x33ce('0x35')]['filter']+'%'};return _0x287958;})});}_0x57af75=_[_0x33ce('0x42')]({},_0x57af75,_0x15a033[_0x33ce('0x44')]);return _0xf313ed['getAnyConditions'](_0x57af75);}})[_0x33ce('0x26')](function(_0x54068e){if(_0x54068e){_0x123aad=_0x54068e[_0x33ce('0x39')];if(!_0x15a033[_0x33ce('0x35')][_0x33ce('0x3a')]('nolimit')){_0x57af75[_0x33ce('0x20')]=qs[_0x33ce('0x20')](_0x15a033[_0x33ce('0x35')][_0x33ce('0x20')]);_0x57af75[_0x33ce('0x1e')]=qs['offset'](_0x15a033[_0x33ce('0x35')][_0x33ce('0x1e')]);}return _0xf313ed['getAnyConditions'](_0x57af75);}})['then'](function(_0x1c5159){if(_0x1c5159){return _0x1c5159?{'count':_0x123aad,'rows':_0x1c5159}:null;}})[_0x33ce('0x26')](respondWithResult(_0x4ae2d7,null))[_0x33ce('0x48')](handleError(_0x4ae2d7,null));};exports[_0x33ce('0x58')]=function(_0x1c8d9b,_0x55bbda,_0x61906f){if(_0x1c8d9b['body']['id']){delete _0x1c8d9b[_0x33ce('0x4c')]['id'];}return db[_0x33ce('0x30')][_0x33ce('0x50')]({'where':{'id':_0x1c8d9b[_0x33ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x55bbda,null))[_0x33ce('0x26')](function(_0x29bef0){if(_0x29bef0){_0x1c8d9b[_0x33ce('0x4c')][_0x33ce('0x59')]=_0x29bef0['id'];return db['Action'][_0x33ce('0x4b')](_0x1c8d9b['body']);}})[_0x33ce('0x26')](respondWithResult(_0x55bbda,null))[_0x33ce('0x48')](handleError(_0x55bbda,null));};exports[_0x33ce('0x5a')]=function(_0x579af4,_0x13b037,_0x36ea16){var _0x5225fe={};var _0x3e6fd8={};var _0x11a586;var _0x5146df;return db[_0x33ce('0x30')][_0x33ce('0x56')]({'where':{'id':_0x579af4[_0x33ce('0x49')]['id']}})[_0x33ce('0x26')](handleEntityNotFound(_0x13b037,null))[_0x33ce('0x26')](function(_0x42eb88){if(_0x42eb88){_0x11a586=_0x42eb88;_0x3e6fd8[_0x33ce('0x34')]=_[_0x33ce('0x4a')](db[_0x33ce('0x5b')][_0x33ce('0x31')]);_0x3e6fd8[_0x33ce('0x35')]=_[_0x33ce('0x4a')](_0x579af4[_0x33ce('0x35')]);_0x3e6fd8[_0x33ce('0x40')]=_[_0x33ce('0x36')](_0x3e6fd8[_0x33ce('0x34')],_0x3e6fd8[_0x33ce('0x35')]);_0x5225fe[_0x33ce('0x38')]=_[_0x33ce('0x36')](_0x3e6fd8[_0x33ce('0x34')],qs[_0x33ce('0x37')](_0x579af4['query'][_0x33ce('0x37')]));_0x5225fe[_0x33ce('0x38')]=_0x5225fe[_0x33ce('0x38')]['length']?_0x5225fe[_0x33ce('0x38')]:_0x3e6fd8[_0x33ce('0x34')];_0x5225fe[_0x33ce('0x3c')]=qs['sort'](_0x579af4[_0x33ce('0x35')][_0x33ce('0x3d')]);_0x5225fe[_0x33ce('0x3e')]=qs['filters'](_[_0x33ce('0x3f')](_0x579af4[_0x33ce('0x35')],_0x3e6fd8['filters']));if(_0x579af4['query'][_0x33ce('0x41')]){_0x5225fe['where']=_[_0x33ce('0x42')](_0x5225fe[_0x33ce('0x3e')],{'$or':_[_0x33ce('0x2f')](_0x5225fe['attributes'],function(_0x5bfe24){var _0x5e24f7={};_0x5e24f7[_0x5bfe24]={'$like':'%'+_0x579af4[_0x33ce('0x35')][_0x33ce('0x41')]+'%'};return _0x5e24f7;})});}_0x5225fe=_['merge']({},_0x5225fe,_0x579af4[_0x33ce('0x44')]);return _0x11a586[_0x33ce('0x5a')](_0x5225fe);}})[_0x33ce('0x26')](function(_0x1a42e0){if(_0x1a42e0){_0x5146df=_0x1a42e0[_0x33ce('0x39')];if(!_0x579af4[_0x33ce('0x35')][_0x33ce('0x3a')](_0x33ce('0x3b'))){_0x5225fe['limit']=qs['limit'](_0x579af4[_0x33ce('0x35')][_0x33ce('0x20')]);_0x5225fe[_0x33ce('0x1e')]=qs[_0x33ce('0x1e')](_0x579af4[_0x33ce('0x35')]['offset']);}return _0x11a586[_0x33ce('0x5a')](_0x5225fe);}})[_0x33ce('0x26')](function(_0x45f5a4){if(_0x45f5a4){return _0x45f5a4?{'count':_0x5146df,'rows':_0x45f5a4}:null;}})[_0x33ce('0x26')](respondWithResult(_0x13b037,null))[_0x33ce('0x48')](handleError(_0x13b037,null));};
\ No newline at end of file
index 30bd40d..d2de003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeedf=['exports','define','tools_triggers','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xeedf,0x12c));var _0xfeed=function(_0x90dc96,_0x1fb9fd){_0x90dc96=_0x90dc96-0x0;var _0x1892cd=_0xeedf[_0x90dc96];return _0x1892cd;};'use strict';var _=require(_0xfeed('0x0'));var util=require(_0xfeed('0x1'));var logger=require(_0xfeed('0x2'))('api');var moment=require(_0xfeed('0x3'));var BPromise=require('bluebird');var rp=require(_0xfeed('0x4'));var fs=require('fs');var path=require(_0xfeed('0x5'));var rimraf=require(_0xfeed('0x6'));var config=require(_0xfeed('0x7'));var attributes=require('./trigger.attributes');module[_0xfeed('0x8')]=function(_0x2c211d,_0x5df4fe){return _0x2c211d[_0xfeed('0x9')]('Trigger',attributes,{'tableName':_0xfeed('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1c4=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./trigger.attributes','exports','tools_triggers','lodash'];(function(_0x127823,_0x10a7f9){var _0x46af88=function(_0xcc3283){while(--_0xcc3283){_0x127823['push'](_0x127823['shift']());}};_0x46af88(++_0x10a7f9);}(_0xc1c4,0x1c7));var _0x4c1c=function(_0x3a5ac9,_0xd6b08b){_0x3a5ac9=_0x3a5ac9-0x0;var _0x428e4a=_0xc1c4[_0x3a5ac9];return _0x428e4a;};'use strict';var _=require(_0x4c1c('0x0'));var util=require(_0x4c1c('0x1'));var logger=require(_0x4c1c('0x2'))(_0x4c1c('0x3'));var moment=require(_0x4c1c('0x4'));var BPromise=require(_0x4c1c('0x5'));var rp=require(_0x4c1c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4c1c('0x7'));var config=require(_0x4c1c('0x8'));var attributes=require(_0x4c1c('0x9'));module[_0x4c1c('0xa')]=function(_0x5ad905,_0xaa5184){return _0x5ad905['define']('Trigger',attributes,{'tableName':_0x4c1c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f9b32a..e8aef8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1c0=['client','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','GetTrigger','Trigger','options','raw','where','attributes','include','model','map','ShowTrigger','find','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xa22539,_0x4683ca){var _0x12d52f=function(_0x165b7d){while(--_0x165b7d){_0xa22539['push'](_0xa22539['shift']());}};_0x12d52f(++_0x4683ca);}(_0xe1c0,0x120));var _0x0e1c=function(_0x42feea,_0x33ecfa){_0x42feea=_0x42feea-0x0;var _0x479b86=_0xe1c0[_0x42feea];return _0x479b86;};'use strict';var _=require(_0x0e1c('0x0'));var util=require(_0x0e1c('0x1'));var moment=require(_0x0e1c('0x2'));var BPromise=require(_0x0e1c('0x3'));var rs=require(_0x0e1c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0e1c('0x5'))(_0x0e1c('0x6'));var config=require(_0x0e1c('0x7'));var jayson=require(_0x0e1c('0x8'));var client=jayson[_0x0e1c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bdd62,_0x321532,_0x2573a6){return new BPromise(function(_0x15f506,_0x3b0168){return client[_0x0e1c('0xa')](_0x5bdd62,_0x2573a6)[_0x0e1c('0xb')](function(_0x48d837){logger['info'](_0x0e1c('0xc'),_0x321532,_0x0e1c('0xd'));logger[_0x0e1c('0xe')]('Trigger,\x20%s,\x20%s,\x20%s',_0x321532,'request\x20sent',JSON[_0x0e1c('0xf')](_0x48d837));if(_0x48d837[_0x0e1c('0x10')]){if(_0x48d837[_0x0e1c('0x10')][_0x0e1c('0x11')]===0x1f4){logger[_0x0e1c('0x10')](_0x0e1c('0xc'),_0x321532,_0x48d837[_0x0e1c('0x10')][_0x0e1c('0x12')]);return _0x3b0168(_0x48d837[_0x0e1c('0x10')][_0x0e1c('0x12')]);}logger['error'](_0x0e1c('0xc'),_0x321532,_0x48d837[_0x0e1c('0x10')]['message']);return _0x15f506(_0x48d837[_0x0e1c('0x10')][_0x0e1c('0x12')]);}else{logger[_0x0e1c('0x13')](_0x0e1c('0xc'),_0x321532,_0x0e1c('0xd'));_0x15f506(_0x48d837[_0x0e1c('0x14')][_0x0e1c('0x12')]);}})[_0x0e1c('0x15')](function(_0x275214){logger['error'](_0x0e1c('0xc'),_0x321532,_0x275214);_0x3b0168(_0x275214);});});}exports[_0x0e1c('0x16')]=function(_0x3213d8){var _0x15485e=this;return new Promise(function(_0xd8b252,_0x5aecf9){return db[_0x0e1c('0x17')]['findAll']({'raw':_0x3213d8[_0x0e1c('0x18')]?_0x3213d8['options'][_0x0e1c('0x19')]===undefined?!![]:![]:!![],'where':_0x3213d8['options']?_0x3213d8[_0x0e1c('0x18')][_0x0e1c('0x1a')]||null:null,'attributes':_0x3213d8[_0x0e1c('0x18')]?_0x3213d8[_0x0e1c('0x18')][_0x0e1c('0x1b')]||null:null,'limit':_0x3213d8[_0x0e1c('0x18')]?_0x3213d8[_0x0e1c('0x18')]['limit']||null:null,'include':_0x3213d8[_0x0e1c('0x18')]?_0x3213d8[_0x0e1c('0x18')][_0x0e1c('0x1c')]?_['map'](_0x3213d8['options'][_0x0e1c('0x1c')],function(_0x2393bb){return{'model':db[_0x2393bb['model']],'as':_0x2393bb['as'],'attributes':_0x2393bb[_0x0e1c('0x1b')],'include':_0x2393bb[_0x0e1c('0x1c')]?_['map'](_0x2393bb['include'],function(_0x27c8f4){return{'model':db[_0x27c8f4[_0x0e1c('0x1d')]],'as':_0x27c8f4['as'],'attributes':_0x27c8f4['attributes'],'include':_0x27c8f4[_0x0e1c('0x1c')]?_[_0x0e1c('0x1e')](_0x27c8f4['include'],function(_0x231706){return{'model':db[_0x231706['model']],'as':_0x231706['as'],'attributes':_0x231706[_0x0e1c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0e1c('0xb')](function(_0x4c57c6){logger[_0x0e1c('0x13')](_0x0e1c('0x16'),_0x3213d8);logger[_0x0e1c('0xe')](_0x0e1c('0x16'),_0x3213d8,JSON[_0x0e1c('0xf')](_0x4c57c6));_0xd8b252(_0x4c57c6);})[_0x0e1c('0x15')](function(_0xf659aa){logger[_0x0e1c('0x10')](_0x0e1c('0x16'),_0xf659aa[_0x0e1c('0x12')],_0x3213d8);_0x5aecf9(_0x15485e[_0x0e1c('0x10')](0x1f4,_0xf659aa[_0x0e1c('0x12')]));});});};exports[_0x0e1c('0x1f')]=function(_0x54f5bc){var _0x45f3ff=this;return new Promise(function(_0x34af33,_0x5e6135){return db['Trigger'][_0x0e1c('0x20')]({'raw':_0x54f5bc['options']?_0x54f5bc[_0x0e1c('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x54f5bc[_0x0e1c('0x18')]?_0x54f5bc[_0x0e1c('0x18')][_0x0e1c('0x1a')]||null:null,'attributes':_0x54f5bc['options']?_0x54f5bc[_0x0e1c('0x18')][_0x0e1c('0x1b')]||null:null,'include':_0x54f5bc[_0x0e1c('0x18')]?_0x54f5bc[_0x0e1c('0x18')][_0x0e1c('0x1c')]?_[_0x0e1c('0x1e')](_0x54f5bc[_0x0e1c('0x18')][_0x0e1c('0x1c')],function(_0x474bd4){return{'model':db[_0x474bd4[_0x0e1c('0x1d')]],'as':_0x474bd4['as'],'attributes':_0x474bd4['attributes'],'include':_0x474bd4[_0x0e1c('0x1c')]?_[_0x0e1c('0x1e')](_0x474bd4['include'],function(_0x3a209b){return{'model':db[_0x3a209b['model']],'as':_0x3a209b['as'],'attributes':_0x3a209b[_0x0e1c('0x1b')],'include':_0x3a209b['include']?_['map'](_0x3a209b[_0x0e1c('0x1c')],function(_0x426bf2){return{'model':db[_0x426bf2['model']],'as':_0x426bf2['as'],'attributes':_0x426bf2[_0x0e1c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x0e1c('0xb')](function(_0x51fa69){logger[_0x0e1c('0x13')](_0x0e1c('0x1f'),_0x54f5bc);logger['debug'](_0x0e1c('0x1f'),_0x54f5bc,JSON[_0x0e1c('0xf')](_0x51fa69));_0x34af33(_0x51fa69);})['catch'](function(_0x24cbb6){logger[_0x0e1c('0x10')](_0x0e1c('0x1f'),_0x24cbb6[_0x0e1c('0x12')],_0x54f5bc);_0x5e6135(_0x45f3ff['error'](0x1f4,_0x24cbb6[_0x0e1c('0x12')]));});});};
\ No newline at end of file
+var _0x08bc=['result','catch','GetTrigger','Trigger','findAll','options','raw','where','attributes','limit','include','model','map','then','ShowTrigger','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trigger,\x20%s,\x20%s'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x08bc,0x112));var _0xc08b=function(_0xbc2974,_0xec3342){_0xbc2974=_0xbc2974-0x0;var _0x3a5b4f=_0x08bc[_0xbc2974];return _0x3a5b4f;};'use strict';var _=require(_0xc08b('0x0'));var util=require(_0xc08b('0x1'));var moment=require(_0xc08b('0x2'));var BPromise=require(_0xc08b('0x3'));var rs=require(_0xc08b('0x4'));var fs=require('fs');var Redis=require(_0xc08b('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc08b('0x6'));var logger=require(_0xc08b('0x7'))(_0xc08b('0x8'));var config=require(_0xc08b('0x9'));var jayson=require(_0xc08b('0xa'));var client=jayson[_0xc08b('0xb')][_0xc08b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3ab2b4,_0x29912c,_0x520fc0){return new BPromise(function(_0x5d1dc7,_0x444629){return client['request'](_0x3ab2b4,_0x520fc0)['then'](function(_0x400015){logger[_0xc08b('0xd')]('Trigger,\x20%s,\x20%s',_0x29912c,_0xc08b('0xe'));logger[_0xc08b('0xf')](_0xc08b('0x10'),_0x29912c,_0xc08b('0xe'),JSON[_0xc08b('0x11')](_0x400015));if(_0x400015['error']){if(_0x400015[_0xc08b('0x12')][_0xc08b('0x13')]===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x29912c,_0x400015['error'][_0xc08b('0x14')]);return _0x444629(_0x400015[_0xc08b('0x12')][_0xc08b('0x14')]);}logger[_0xc08b('0x12')](_0xc08b('0x15'),_0x29912c,_0x400015[_0xc08b('0x12')][_0xc08b('0x14')]);return _0x5d1dc7(_0x400015[_0xc08b('0x12')][_0xc08b('0x14')]);}else{logger['info']('Trigger,\x20%s,\x20%s',_0x29912c,_0xc08b('0xe'));_0x5d1dc7(_0x400015[_0xc08b('0x16')][_0xc08b('0x14')]);}})[_0xc08b('0x17')](function(_0x339641){logger[_0xc08b('0x12')](_0xc08b('0x15'),_0x29912c,_0x339641);_0x444629(_0x339641);});});}exports[_0xc08b('0x18')]=function(_0x5f4bee){var _0x124b3f=this;return new Promise(function(_0x454292,_0x3152e2){return db[_0xc08b('0x19')][_0xc08b('0x1a')]({'raw':_0x5f4bee['options']?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1c')]===undefined?!![]:![]:!![],'where':_0x5f4bee[_0xc08b('0x1b')]?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1d')]||null:null,'attributes':_0x5f4bee[_0xc08b('0x1b')]?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1e')]||null:null,'limit':_0x5f4bee['options']?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x1f')]||null:null,'include':_0x5f4bee[_0xc08b('0x1b')]?_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x20')]?_['map'](_0x5f4bee[_0xc08b('0x1b')][_0xc08b('0x20')],function(_0x38c222){return{'model':db[_0x38c222[_0xc08b('0x21')]],'as':_0x38c222['as'],'attributes':_0x38c222[_0xc08b('0x1e')],'include':_0x38c222['include']?_[_0xc08b('0x22')](_0x38c222['include'],function(_0x642a1b){return{'model':db[_0x642a1b['model']],'as':_0x642a1b['as'],'attributes':_0x642a1b[_0xc08b('0x1e')],'include':_0x642a1b['include']?_[_0xc08b('0x22')](_0x642a1b[_0xc08b('0x20')],function(_0x1293a0){return{'model':db[_0x1293a0['model']],'as':_0x1293a0['as'],'attributes':_0x1293a0[_0xc08b('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc08b('0x23')](function(_0x5986d1){logger['info']('GetTrigger',_0x5f4bee);logger['debug']('GetTrigger',_0x5f4bee,JSON['stringify'](_0x5986d1));_0x454292(_0x5986d1);})[_0xc08b('0x17')](function(_0x45d621){logger[_0xc08b('0x12')]('GetTrigger',_0x45d621[_0xc08b('0x14')],_0x5f4bee);_0x3152e2(_0x124b3f[_0xc08b('0x12')](0x1f4,_0x45d621['message']));});});};exports['ShowTrigger']=function(_0x4f7b67){var _0x436971=this;return new Promise(function(_0x542601,_0x199ee1){return db['Trigger']['find']({'raw':_0x4f7b67[_0xc08b('0x1b')]?_0x4f7b67[_0xc08b('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4f7b67[_0xc08b('0x1b')]?_0x4f7b67[_0xc08b('0x1b')]['where']||null:null,'attributes':_0x4f7b67[_0xc08b('0x1b')]?_0x4f7b67[_0xc08b('0x1b')][_0xc08b('0x1e')]||null:null,'include':_0x4f7b67['options']?_0x4f7b67[_0xc08b('0x1b')][_0xc08b('0x20')]?_[_0xc08b('0x22')](_0x4f7b67[_0xc08b('0x1b')]['include'],function(_0x12c11f){return{'model':db[_0x12c11f[_0xc08b('0x21')]],'as':_0x12c11f['as'],'attributes':_0x12c11f[_0xc08b('0x1e')],'include':_0x12c11f[_0xc08b('0x20')]?_[_0xc08b('0x22')](_0x12c11f[_0xc08b('0x20')],function(_0x2769ac){return{'model':db[_0x2769ac['model']],'as':_0x2769ac['as'],'attributes':_0x2769ac[_0xc08b('0x1e')],'include':_0x2769ac[_0xc08b('0x20')]?_['map'](_0x2769ac['include'],function(_0x4d1387){return{'model':db[_0x4d1387['model']],'as':_0x4d1387['as'],'attributes':_0x4d1387['attributes']};}):[]};}):[]};}):[]:[]})[_0xc08b('0x23')](function(_0x2e3895){logger[_0xc08b('0xd')]('ShowTrigger',_0x4f7b67);logger[_0xc08b('0xf')](_0xc08b('0x24'),_0x4f7b67,JSON[_0xc08b('0x11')](_0x2e3895));_0x542601(_0x2e3895);})[_0xc08b('0x17')](function(_0x5acde4){logger[_0xc08b('0x12')](_0xc08b('0x24'),_0x5acde4[_0xc08b('0x14')],_0x4f7b67);_0x199ee1(_0x436971[_0xc08b('0x12')](0x1f4,_0x5acde4['message']));});});};
\ No newline at end of file
index 2365132..60305c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x575b=['fs-extra','../../components/interaction/service','isAuthenticated','get','/:id','show','post','/:id/clone','put','update','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x3f0ed7,_0x1f439f){var _0x34578f=function(_0x498fe4){while(--_0x498fe4){_0x3f0ed7['push'](_0x3f0ed7['shift']());}};_0x34578f(++_0x1f439f);}(_0x575b,0x10b));var _0xb575=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x575b[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xb575('0x0'));var util=require(_0xb575('0x1'));var path=require('path');var timeout=require(_0xb575('0x2'));var express=require(_0xb575('0x3'));var router=express[_0xb575('0x4')]();var fs_extra=require(_0xb575('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb575('0x6'));var config=require('../../config/environment');var controller=require('./trunk.controller');router['get']('/',auth[_0xb575('0x7')](),controller['index']);router[_0xb575('0x8')](_0xb575('0x9'),auth[_0xb575('0x7')](),controller[_0xb575('0xa')]);router[_0xb575('0xb')](_0xb575('0xc'),auth[_0xb575('0x7')](),controller['clone']);router['post']('/',auth[_0xb575('0x7')](),controller['create']);router[_0xb575('0xd')]('/:id',auth[_0xb575('0x7')](),controller[_0xb575('0xe')]);router['delete'](_0xb575('0x9'),auth['isAuthenticated'](),controller[_0xb575('0xf')]);module[_0xb575('0x10')]=router;
\ No newline at end of file
+var _0x14ea=['show','post','clone','put','/:id','update','delete','multer','util','path','Router','fs-extra','../../components/auth/service','./trunk.controller','get','isAuthenticated','index'];(function(_0x14aa8f,_0x564334){var _0x22d6a0=function(_0x4ef6f6){while(--_0x4ef6f6){_0x14aa8f['push'](_0x14aa8f['shift']());}};_0x22d6a0(++_0x564334);}(_0x14ea,0x16c));var _0xa14e=function(_0x2a51e9,_0x418cf2){_0x2a51e9=_0x2a51e9-0x0;var _0x19601d=_0x14ea[_0x2a51e9];return _0x19601d;};'use strict';var multer=require(_0xa14e('0x0'));var util=require(_0xa14e('0x1'));var path=require(_0xa14e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa14e('0x3')]();var fs_extra=require(_0xa14e('0x4'));var auth=require(_0xa14e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa14e('0x6'));router[_0xa14e('0x7')]('/',auth[_0xa14e('0x8')](),controller[_0xa14e('0x9')]);router[_0xa14e('0x7')]('/:id',auth[_0xa14e('0x8')](),controller[_0xa14e('0xa')]);router[_0xa14e('0xb')]('/:id/clone',auth[_0xa14e('0x8')](),controller[_0xa14e('0xc')]);router[_0xa14e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa14e('0xd')](_0xa14e('0xe'),auth['isAuthenticated'](),controller[_0xa14e('0xf')]);router[_0xa14e('0x10')]('/:id',auth[_0xa14e('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 0eb10e9..6cb31c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x224d=['never','\x22\x22\x20<>','INTEGER','always','accept','refuse','originate','uac','uas','pai','fingerprint','active','passive','dynamic','update,nonat','BOOLEAN','sequelize','exports','STRING','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','getDataValue','split','rfc2833','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','setDataValue','nat','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'];(function(_0x43d4b6,_0xad7ddc){var _0x2ed67c=function(_0x378410){while(--_0x378410){_0x43d4b6['push'](_0x43d4b6['shift']());}};_0x2ed67c(++_0xad7ddc);}(_0x224d,0x114));var _0xd224=function(_0x348d8d,_0x25a6dd){_0x348d8d=_0x348d8d-0x0;var _0x2a7d1f=_0x224d[_0x348d8d];return _0x2a7d1f;};'use strict';var Sequelize=require(_0xd224('0x0'));module[_0xd224('0x1')]={'name':{'type':Sequelize[_0xd224('0x2')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x4'),_0xd224('0x5'),_0xd224('0x6')),'allowNull':![],'defaultValue':_0xd224('0x4')},'context':{'type':Sequelize[_0xd224('0x2')],'allowNull':![],'defaultValue':_0xd224('0x7')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0xd224('0x8'),_0xd224('0x9'),_0xd224('0xa'),_0xd224('0xb'),_0xd224('0xc'),_0xd224('0xd'),_0xd224('0xe'))},'deny':{'type':Sequelize[_0xd224('0x2')]},'permit':{'type':Sequelize[_0xd224('0x2')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0xd224('0x2')]},'remotesecret':{'type':Sequelize[_0xd224('0x2')]},'transport':{'type':Sequelize[_0xd224('0x2')],'defaultValue':_0xd224('0xf'),'set':function(_0xe9ae83){this['setDataValue'](_0xd224('0x10'),_0xe9ae83?_0xe9ae83['join'](','):null);},'get':function(){return this[_0xd224('0x11')](_0xd224('0x10'))?this['getDataValue'](_0xd224('0x10'))[_0xd224('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0xd224('0x13'),'info','shortinfo',_0xd224('0x14'),_0xd224('0x15')),'defaultValue':_0xd224('0x13')},'directmedia':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no',_0xd224('0x17'),_0xd224('0x18'),_0xd224('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xd224('0x2')]},'directmediadeny':{'type':Sequelize[_0xd224('0x2')]},'nat':{'type':Sequelize[_0xd224('0x2')],'defaultValue':_0xd224('0x1a'),'set':function(_0x1a2edd){this[_0xd224('0x1b')](_0xd224('0x1c'),_0x1a2edd?_0x1a2edd[_0xd224('0x1d')](','):null);},'get':function(){return this[_0xd224('0x11')](_0xd224('0x1c'))?this['getDataValue'](_0xd224('0x1c'))['split'](','):null;},'comment':_0xd224('0x1e')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xd224('0x2')]},'pickupgroup':{'type':Sequelize[_0xd224('0x2')]},'namedpickupgroup':{'type':Sequelize[_0xd224('0x2')]},'language':{'type':Sequelize[_0xd224('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xd224('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':'all'},'allow':{'type':Sequelize[_0xd224('0x2')],'allowNull':![],'defaultValue':_0xd224('0x1f'),'set':function(_0x37c951){this[_0xd224('0x1b')](_0xd224('0x20'),_0x37c951?_0x37c951[_0xd224('0x1d')](';'):_0xd224('0x1f'));},'get':function(){return this['getDataValue']('allow')?this[_0xd224('0x11')](_0xd224('0x20'))[_0xd224('0x12')](';'):null;},'comment':_0xd224('0x21')},'autoframing':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no')},'insecure':{'type':Sequelize[_0xd224('0x2')],'defaultValue':'port,invite','set':function(_0x37c38a){this[_0xd224('0x1b')](_0xd224('0x22'),_0x37c38a?_0x37c38a['join'](','):null);},'get':function(){return this[_0xd224('0x11')](_0xd224('0x22'))?this['getDataValue'](_0xd224('0x22'))[_0xd224('0x12')](','):null;},'comment':_0xd224('0x23')},'trustrpid':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xd224('0x3')]('yes','no',_0xd224('0x24'))},'promiscredir':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0xd224('0x2')]},'callerid':{'type':Sequelize[_0xd224('0x2')],'defaultValue':_0xd224('0x25')},'amaflags':{'type':Sequelize[_0xd224('0x2')]},'callcounter':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no'),'defaultValue':_0xd224('0x16')},'busylevel':{'type':Sequelize[_0xd224('0x26')](0xb)},'allowoverlap':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no')},'allowsubscribe':{'type':Sequelize[_0xd224('0x3')]('yes','no')},'allowtransfer':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0xd224('0x3')]('yes','no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize[_0xd224('0x2')]},'videosupport':{'type':Sequelize['ENUM']('yes','no',_0xd224('0x27')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xd224('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no')},'mailbox':{'type':Sequelize[_0xd224('0x2')]},'session_timers':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x28'),_0xd224('0x29'),_0xd224('0x2a'))},'session_expires':{'type':Sequelize[_0xd224('0x26')](0xb)},'session_minse':{'type':Sequelize[_0xd224('0x26')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xd224('0x2b'),_0xd224('0x2c')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xd224('0x2')]},'regexten':{'type':Sequelize[_0xd224('0x2')]},'fromdomain':{'type':Sequelize[_0xd224('0x2')]},'fromuser':{'type':Sequelize[_0xd224('0x2')]},'port':{'type':Sequelize[_0xd224('0x26')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize['INTEGER'](0xb)},'defaultip':{'type':Sequelize['STRING']},'defaultuser':{'type':Sequelize[_0xd224('0x2')]},'rtptimeout':{'type':Sequelize[_0xd224('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xd224('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no',_0xd224('0x2d')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xd224('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize[_0xd224('0x26')](0xb)},'timerb':{'type':Sequelize[_0xd224('0x26')](0xb)},'qualifyfreq':{'type':Sequelize[_0xd224('0x26')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xd224('0x2')]},'contactacl':{'type':Sequelize[_0xd224('0x2')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no')},'force_avp':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no')},'icesupport':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no')},'dtlsenable':{'type':Sequelize['ENUM']('yes','no')},'dtlsverify':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no',_0xd224('0x2e'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xd224('0x26')](0xb)},'dtlscertfile':{'type':Sequelize[_0xd224('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xd224('0x2')]},'dtlscipher':{'type':Sequelize[_0xd224('0x2')]},'dtlscafile':{'type':Sequelize[_0xd224('0x2')]},'dtlscapath':{'type':Sequelize[_0xd224('0x2')]},'dtlssetup':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x2f'),_0xd224('0x30'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xd224('0x2')]},'usereqphone':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xd224('0x2')]},'recordofffeature':{'type':Sequelize['STRING']},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xd224('0x3')](_0xd224('0x16'),'no')},'subscribemwi':{'type':Sequelize['ENUM']('yes','no')},'vmexten':{'type':Sequelize[_0xd224('0x2')]},'mohinterpret':{'type':Sequelize[_0xd224('0x2')]},'mohsuggest':{'type':Sequelize['STRING']},'parkinglot':{'type':Sequelize[_0xd224('0x2')]},'description':{'type':Sequelize[_0xd224('0x2')]},'host':{'type':Sequelize[_0xd224('0x2')],'defaultValue':_0xd224('0x31')},'canreinvite':{'type':Sequelize['ENUM'](_0xd224('0x16'),'no',_0xd224('0x17'),_0xd224('0x18'),_0xd224('0x32')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize['STRING']},'active':{'type':Sequelize[_0xd224('0x33')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xd224('0x2')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xb233=['never','\x22\x22\x20<>','INTEGER','accept','originate','uac','uas','certificate','active','dynamic','update,nonat','BOOLEAN','exports','STRING','name','ENUM','user','from-voip-provider','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','setDataValue','nat','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','insecure'];(function(_0x365c78,_0x23ab28){var _0x40d398=function(_0x4998ac){while(--_0x4998ac){_0x365c78['push'](_0x365c78['shift']());}};_0x40d398(++_0x23ab28);}(_0xb233,0x1f0));var _0x3b23=function(_0x576ab9,_0x2e6eef){_0x576ab9=_0x576ab9-0x0;var _0x4fcf15=_0xb233[_0x576ab9];return _0x4fcf15;};'use strict';var Sequelize=require('sequelize');module[_0x3b23('0x0')]={'name':{'type':Sequelize[_0x3b23('0x1')],'allowNull':![],'unique':_0x3b23('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x3b23('0x3')]('friend',_0x3b23('0x4'),'peer'),'allowNull':![],'defaultValue':'friend'},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x3b23('0x5')},'callingpres':{'type':Sequelize['ENUM'](_0x3b23('0x6'),_0x3b23('0x7'),_0x3b23('0x8'),'ALLOWED',_0x3b23('0x9'),_0x3b23('0xa'),_0x3b23('0xb'),'PROHIB')},'deny':{'type':Sequelize[_0x3b23('0x1')]},'permit':{'type':Sequelize[_0x3b23('0x1')]},'secret':{'type':Sequelize[_0x3b23('0x1')]},'md5secret':{'type':Sequelize[_0x3b23('0x1')]},'remotesecret':{'type':Sequelize[_0x3b23('0x1')]},'transport':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'udp','set':function(_0x5f5298){this['setDataValue'](_0x3b23('0xc'),_0x5f5298?_0x5f5298[_0x3b23('0xd')](','):null);},'get':function(){return this[_0x3b23('0xe')](_0x3b23('0xc'))?this[_0x3b23('0xe')]('transport')[_0x3b23('0xf')](','):null;},'comment':_0x3b23('0x10')},'dtmfmode':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x11'),'info',_0x3b23('0x12'),_0x3b23('0x13'),_0x3b23('0x14')),'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no',_0x3b23('0x16'),_0x3b23('0x17'),_0x3b23('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x3b23('0x1')]},'nat':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':_0x3b23('0x19'),'set':function(_0x513813){this[_0x3b23('0x1a')](_0x3b23('0x1b'),_0x513813?_0x513813[_0x3b23('0xd')](','):null);},'get':function(){return this[_0x3b23('0xe')](_0x3b23('0x1b'))?this[_0x3b23('0xe')](_0x3b23('0x1b'))[_0x3b23('0xf')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x3b23('0x1')]},'namedcallgroup':{'type':Sequelize[_0x3b23('0x1')]},'pickupgroup':{'type':Sequelize[_0x3b23('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x3b23('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'all'},'allow':{'type':Sequelize[_0x3b23('0x1')],'allowNull':![],'defaultValue':_0x3b23('0x1c'),'set':function(_0x4fd0d3){this[_0x3b23('0x1a')](_0x3b23('0x1d'),_0x4fd0d3?_0x4fd0d3[_0x3b23('0xd')](';'):_0x3b23('0x1c'));},'get':function(){return this[_0x3b23('0xe')](_0x3b23('0x1d'))?this[_0x3b23('0xe')]('allow')['split'](';'):null;},'comment':_0x3b23('0x1e')},'autoframing':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'insecure':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':'port,invite','set':function(_0x56b258){this[_0x3b23('0x1a')](_0x3b23('0x1f'),_0x56b258?_0x56b258['join'](','):null);},'get':function(){return this[_0x3b23('0xe')]('insecure')?this[_0x3b23('0xe')](_0x3b23('0x1f'))[_0x3b23('0xf')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no',_0x3b23('0x20'))},'promiscredir':{'type':Sequelize['ENUM']('yes','no')},'useclientcode':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'accountcode':{'type':Sequelize['INTEGER'](0xb)},'setvar':{'type':Sequelize[_0x3b23('0x1')]},'callerid':{'type':Sequelize[_0x3b23('0x1')],'defaultValue':_0x3b23('0x21')},'amaflags':{'type':Sequelize[_0x3b23('0x1')]},'callcounter':{'type':Sequelize[_0x3b23('0x3')]('yes','no'),'defaultValue':_0x3b23('0x15')},'busylevel':{'type':Sequelize[_0x3b23('0x22')](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0x3b23('0x15'),'no')},'allowsubscribe':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'allowtransfer':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0x3b23('0x15'),'no')},'subscribecontext':{'type':Sequelize[_0x3b23('0x1')]},'template':{'type':Sequelize[_0x3b23('0x1')]},'videosupport':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x3b23('0x22')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'mailbox':{'type':Sequelize[_0x3b23('0x1')]},'session_timers':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x23'),'refuse',_0x3b23('0x24'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x3b23('0x22')](0xb)},'session_refresher':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x25'),_0x3b23('0x26')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x3b23('0x1')]},'regexten':{'type':Sequelize[_0x3b23('0x1')]},'fromdomain':{'type':Sequelize[_0x3b23('0x1')]},'fromuser':{'type':Sequelize[_0x3b23('0x1')]},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x3b23('0x22')](0xb)},'defaultip':{'type':Sequelize[_0x3b23('0x1')]},'defaultuser':{'type':Sequelize[_0x3b23('0x1')]},'rtptimeout':{'type':Sequelize[_0x3b23('0x22')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x3b23('0x22')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize['ENUM']('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x3b23('0x1')]},'callbackextension':{'type':Sequelize[_0x3b23('0x1')]},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0x3b23('0x22')](0xb)},'qualifyfreq':{'type':Sequelize[_0x3b23('0x22')](0xb)},'contactpermit':{'type':Sequelize[_0x3b23('0x1')]},'contactdeny':{'type':Sequelize[_0x3b23('0x1')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0x3b23('0x1')]},'maxforwards':{'type':Sequelize[_0x3b23('0x22')](0xb)},'encryption':{'type':Sequelize[_0x3b23('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'force_avp':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'icesupport':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'dtlsenable':{'type':Sequelize[_0x3b23('0x3')]('yes','no')},'dtlsverify':{'type':Sequelize[_0x3b23('0x3')]('yes','no','fingerprint',_0x3b23('0x27'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0x3b23('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0x3b23('0x1')]},'dtlscipher':{'type':Sequelize[_0x3b23('0x1')]},'dtlscafile':{'type':Sequelize[_0x3b23('0x1')]},'dtlscapath':{'type':Sequelize[_0x3b23('0x1')]},'dtlssetup':{'type':Sequelize['ENUM'](_0x3b23('0x28'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x3b23('0x1')]},'usereqphone':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x3b23('0x1')]},'call_limit':{'type':Sequelize[_0x3b23('0x22')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no')},'subscribemwi':{'type':Sequelize[_0x3b23('0x3')]('yes','no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0x3b23('0x1')]},'mohsuggest':{'type':Sequelize[_0x3b23('0x1')]},'parkinglot':{'type':Sequelize[_0x3b23('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize['STRING'],'defaultValue':_0x3b23('0x29')},'canreinvite':{'type':Sequelize[_0x3b23('0x3')](_0x3b23('0x15'),'no',_0x3b23('0x16'),'update',_0x3b23('0x2a')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x3b23('0x1')]},'active':{'type':Sequelize[_0x3b23('0x2b')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 5dcdf70..0110e47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['../../mysqldb','jayson/promise','client','request','Trunk,\x20%s,\x20%s','debug','request\x20sent','error','code','message','info','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Trunks','UserProfileResource','stack','name','map','fieldName','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','Trunk','include','show','params','keys','rawAttributes','includeAll','clone','find','createdAt','updatedAt','body','omit','create','user','role','UserProfileSection','userProfileId','autoAssociation','findAll','readFileSync','root','server/files/templates/trunk.ejs','join','server/files/templates/registry.ejs','utf8','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment'];(function(_0x35efb8,_0x1299ee){var _0x283e2d=function(_0x1cd674){while(--_0x1cd674){_0x35efb8['push'](_0x35efb8['shift']());}};_0x283e2d(++_0x1299ee);}(_0x98a8,0x12c));var _0x898a=function(_0x7c3bb,_0x8d5c18){_0x7c3bb=_0x7c3bb-0x0;var _0x4749e7=_0x98a8[_0x7c3bb];return _0x4749e7;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];var jayson=require(_0x898a('0x19'));var client=jayson[_0x898a('0x1a')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5bfded,_0x5b5c9c,_0x373d53,_0x1f5be4){return new BPromise(function(_0xb24335,_0x116fbe){var _0x1873e9=_0x1f5be4||client;return _0x1873e9[_0x898a('0x1b')](_0x5bfded,_0x373d53)['then'](function(_0x47033c){logger['info'](_0x898a('0x1c'),_0x5b5c9c,'request\x20sent');logger[_0x898a('0x1d')]('Trunk,\x20%s,\x20%s,\x20%s',_0x5b5c9c,_0x898a('0x1e'),JSON['stringify'](_0x47033c));if(_0x47033c[_0x898a('0x1f')]){if(_0x47033c[_0x898a('0x1f')][_0x898a('0x20')]===0x1f4){logger['error'](_0x898a('0x1c'),_0x5b5c9c,_0x47033c['error']['message']);return _0x116fbe(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x5b5c9c,_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);return _0xb24335(_0x47033c[_0x898a('0x1f')][_0x898a('0x21')]);}else{logger[_0x898a('0x22')](_0x898a('0x1c'),_0x5b5c9c,_0x898a('0x1e'));_0xb24335(_0x47033c['result'][_0x898a('0x21')]);}})[_0x898a('0x23')](function(_0x11cae2){logger[_0x898a('0x1f')](_0x898a('0x1c'),_0x5b5c9c,_0x11cae2);_0x116fbe(_0x11cae2);});});}function respondWithStatusCode(_0x310bfa,_0x4e254d){_0x4e254d=_0x4e254d||0xcc;return function(_0x274cdf){if(_0x274cdf){return _0x310bfa[_0x898a('0x24')](_0x4e254d);}return _0x310bfa[_0x898a('0x25')](_0x4e254d)[_0x898a('0x26')]();};}function respondWithResult(_0x3901ab,_0x1426e3){_0x1426e3=_0x1426e3||0xc8;return function(_0x5b7719){if(_0x5b7719){return _0x3901ab[_0x898a('0x25')](_0x1426e3)['json'](_0x5b7719);}};}function respondWithFilteredResult(_0x513c6b,_0x53ddb2){return function(_0x3678be){if(_0x3678be){var _0x1f4d86=typeof _0x53ddb2[_0x898a('0x27')]===_0x898a('0x28')&&typeof _0x53ddb2[_0x898a('0x29')]===_0x898a('0x28');var _0x398e98=_0x3678be[_0x898a('0x2a')];var _0xd31922=_0x1f4d86?0x0:_0x53ddb2['offset'];var _0x4b3e68=_0x1f4d86?_0x3678be['count']:_0x53ddb2[_0x898a('0x27')]+_0x53ddb2[_0x898a('0x29')];var _0x3b7704;if(_0x4b3e68>=_0x398e98){_0x4b3e68=_0x398e98;_0x3b7704=0xc8;}else{_0x3b7704=0xce;}_0x513c6b[_0x898a('0x25')](_0x3b7704);return _0x513c6b[_0x898a('0x2b')](_0x898a('0x2c'),_0xd31922+'-'+_0x4b3e68+'/'+_0x398e98)[_0x898a('0x2d')](_0x3678be);}return null;};}function patchUpdates(_0xf74645){return function(_0x18773a){try{jsonpatch[_0x898a('0x2e')](_0x18773a,_0xf74645,!![]);}catch(_0x44c5d2){return BPromise[_0x898a('0x2f')](_0x44c5d2);}return _0x18773a['save']();};}function saveUpdates(_0x7a1eb5,_0x17a5f3){return function(_0x26eead){if(_0x26eead){return _0x26eead[_0x898a('0x30')](_0x7a1eb5)[_0x898a('0x31')](function(_0x47af5b){return _0x47af5b;});}return null;};}function removeEntity(_0x48cefb,_0x20a3fe){return function(_0x1e2fd4){if(_0x1e2fd4){return _0x1e2fd4[_0x898a('0x32')]()['then'](function(){var _0x105477=_0x1e2fd4[_0x898a('0x33')]({'plain':!![]});var _0x5eafc7=_0x898a('0x34');return db[_0x898a('0x35')][_0x898a('0x32')]({'where':{'type':_0x5eafc7,'resourceId':_0x105477['id']}})[_0x898a('0x31')](function(){return _0x1e2fd4;});})[_0x898a('0x31')](function(){_0x48cefb['status'](0xcc)[_0x898a('0x26')]();});}};}function handleEntityNotFound(_0x5baf5b,_0x573eb3){return function(_0x14e2dc){if(!_0x14e2dc){_0x5baf5b['sendStatus'](0x194);}return _0x14e2dc;};}function handleError(_0x3c9588,_0x4b3aac){_0x4b3aac=_0x4b3aac||0x1f4;return function(_0x37cb11){logger['error'](_0x37cb11[_0x898a('0x36')]);if(_0x37cb11[_0x898a('0x37')]){delete _0x37cb11[_0x898a('0x37')];}_0x3c9588['status'](_0x4b3aac)['send'](_0x37cb11);};}exports['index']=function(_0x1575d2,_0x429c32){var _0x5a228f={},_0xdd019d={},_0x3d3463={'count':0x0,'rows':[]};var _0xe84f7e=_[_0x898a('0x38')](db['Trunk']['rawAttributes'],function(_0x3aed01){return{'name':_0x3aed01[_0x898a('0x39')],'type':_0x3aed01['type']['key']};});_0xdd019d[_0x898a('0x3a')]=_[_0x898a('0x38')](_0xe84f7e,_0x898a('0x37'));_0xdd019d[_0x898a('0x3b')]=_['keys'](_0x1575d2[_0x898a('0x3b')]);_0xdd019d[_0x898a('0x3c')]=_['intersection'](_0xdd019d['model'],_0xdd019d['query']);_0x5a228f[_0x898a('0x3d')]=_[_0x898a('0x3e')](_0xdd019d[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x3f')]));_0x5a228f[_0x898a('0x3d')]=_0x5a228f[_0x898a('0x3d')][_0x898a('0x40')]?_0x5a228f[_0x898a('0x3d')]:_0xdd019d[_0x898a('0x3a')];if(!_0x1575d2[_0x898a('0x3b')][_0x898a('0x41')](_0x898a('0x42'))){_0x5a228f[_0x898a('0x29')]=qs['limit'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x29')]);_0x5a228f[_0x898a('0x27')]=qs['offset'](_0x1575d2[_0x898a('0x3b')][_0x898a('0x27')]);}_0x5a228f[_0x898a('0x43')]=qs[_0x898a('0x44')](_0x1575d2[_0x898a('0x3b')][_0x898a('0x44')]);_0x5a228f[_0x898a('0x45')]=qs[_0x898a('0x3c')](_['pick'](_0x1575d2[_0x898a('0x3b')],_0xdd019d[_0x898a('0x3c')]),_0xe84f7e);if(_0x1575d2[_0x898a('0x3b')][_0x898a('0x46')]){_0x5a228f['where']=_[_0x898a('0x47')](_0x5a228f[_0x898a('0x45')],{'$or':_['map'](_0xe84f7e,function(_0x241677){if(_0x241677['type']!==_0x898a('0x48')){var _0x5137c4={};_0x5137c4[_0x241677['name']]={'$like':'%'+_0x1575d2[_0x898a('0x3b')]['filter']+'%'};return _0x5137c4;}})});}_0x5a228f=_[_0x898a('0x47')]({},_0x5a228f,_0x1575d2[_0x898a('0x49')]);var _0x4d6ac0={'where':_0x5a228f[_0x898a('0x45')]};return db[_0x898a('0x4a')]['count'](_0x4d6ac0)[_0x898a('0x31')](function(_0x199437){_0x3d3463[_0x898a('0x2a')]=_0x199437;if(_0x1575d2[_0x898a('0x3b')]['includeAll']){_0x5a228f[_0x898a('0x4b')]=[{'all':!![]}];}return db[_0x898a('0x4a')]['findAll'](_0x5a228f);})[_0x898a('0x31')](function(_0x1d8c16){_0x3d3463['rows']=_0x1d8c16;return _0x3d3463;})[_0x898a('0x31')](respondWithFilteredResult(_0x429c32,_0x5a228f))['catch'](handleError(_0x429c32,null));};exports[_0x898a('0x4c')]=function(_0x41f291,_0x32ccb9){var _0x50f9e3={'raw':![],'where':{'id':_0x41f291[_0x898a('0x4d')]['id']}},_0x2f6cb3={};_0x2f6cb3[_0x898a('0x3a')]=_[_0x898a('0x4e')](db['Trunk'][_0x898a('0x4f')]);_0x2f6cb3['query']=_[_0x898a('0x4e')](_0x41f291[_0x898a('0x3b')]);_0x2f6cb3[_0x898a('0x3c')]=_['intersection'](_0x2f6cb3[_0x898a('0x3a')],_0x2f6cb3[_0x898a('0x3b')]);_0x50f9e3[_0x898a('0x3d')]=_['intersection'](_0x2f6cb3['model'],qs[_0x898a('0x3f')](_0x41f291[_0x898a('0x3b')][_0x898a('0x3f')]));_0x50f9e3[_0x898a('0x3d')]=_0x50f9e3[_0x898a('0x3d')][_0x898a('0x40')]?_0x50f9e3[_0x898a('0x3d')]:_0x2f6cb3[_0x898a('0x3a')];if(_0x41f291[_0x898a('0x3b')][_0x898a('0x50')]){_0x50f9e3[_0x898a('0x4b')]=[{'all':!![]}];}_0x50f9e3=_['merge']({},_0x50f9e3,_0x41f291[_0x898a('0x49')]);return db[_0x898a('0x4a')]['find'](_0x50f9e3)[_0x898a('0x31')](handleEntityNotFound(_0x32ccb9,null))['then'](respondWithResult(_0x32ccb9,null))['catch'](handleError(_0x32ccb9,null));};exports[_0x898a('0x51')]=function(_0x124f9b,_0x209529){var _0x5bfd61={'where':{'id':_0x124f9b[_0x898a('0x4d')]['id']}},_0x556fd8={};_0x556fd8[_0x898a('0x3a')]=_['keys'](db[_0x898a('0x4a')][_0x898a('0x4f')]);_0x5bfd61['attributes']=_[_0x898a('0x3e')](_0x556fd8[_0x898a('0x3a')],qs[_0x898a('0x3f')](_0x124f9b['query'][_0x898a('0x3f')]));_0x5bfd61[_0x898a('0x3d')]=_0x5bfd61[_0x898a('0x3d')][_0x898a('0x40')]?_0x5bfd61[_0x898a('0x3d')]:_0x556fd8[_0x898a('0x3a')];if(_0x124f9b['query'][_0x898a('0x50')]){_0x5bfd61['include']=[{'all':!![]}];}_0x5bfd61=_[_0x898a('0x47')]({},_0x5bfd61,_0x124f9b[_0x898a('0x49')]);return db[_0x898a('0x4a')][_0x898a('0x52')](_0x5bfd61)[_0x898a('0x31')](handleEntityNotFound(_0x209529,null))[_0x898a('0x31')](function(_0x2486a5){if(_0x2486a5){var _0x75ff57=_0x2486a5[_0x898a('0x33')]({'plain':!![]});_0x75ff57=qs['omit'](_0x75ff57,['id',_0x898a('0x53'),_0x898a('0x54')]);_0x124f9b[_0x898a('0x55')]=_[_0x898a('0x56')](_0x124f9b[_0x898a('0x55')],['id',_0x898a('0x53'),_0x898a('0x54')]);return db[_0x898a('0x4a')][_0x898a('0x57')](_[_0x898a('0x47')](_0x75ff57,_0x124f9b[_0x898a('0x55')]),{'include':_0x124f9b[_0x898a('0x3b')][_0x898a('0x50')]?[{'all':!![]}]:undefined})[_0x898a('0x31')](function(_0x22f9ba){var _0x5f42ae=_0x124f9b[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x5f42ae)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5f42ae[_0x898a('0x59')]===_0x898a('0x58')){var _0x5f0944=_0x22f9ba[_0x898a('0x33')]({'plain':!![]});var _0x1daecd=_0x898a('0x34');return db[_0x898a('0x5a')]['find']({'where':{'name':_0x1daecd,'userProfileId':_0x5f42ae[_0x898a('0x5b')]},'raw':!![]})[_0x898a('0x31')](function(_0x137935){if(_0x137935&&_0x137935[_0x898a('0x5c')]===0x0){return db['UserProfileResource'][_0x898a('0x57')]({'name':_0x5f0944[_0x898a('0x37')],'resourceId':_0x5f0944['id'],'type':_0x137935['name'],'sectionId':_0x137935['id']},{})[_0x898a('0x31')](function(){return _0x22f9ba;});}else{return _0x22f9ba;}})[_0x898a('0x23')](function(_0x5b7019){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b7019);throw _0x5b7019;});}return _0x22f9ba;});}})[_0x898a('0x31')](respondWithResult(_0x209529,0xc9))['catch'](handleError(_0x209529,null));};exports['create']=function(_0x5ed35e,_0xfdd6d8,_0x473f5c){var _0x3909c5;return db[_0x898a('0x4a')]['create'](_0x5ed35e['body'],{'raw':!![]})[_0x898a('0x31')](function(_0x232be0){_0x3909c5=_0x232be0;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x41cf94){var _0x30051d=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x42fda8=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),_0x898a('0x63'));var _0x3bcc3d=ejs[_0x898a('0x64')](_0x30051d,{'trunks':_0x41cf94||[]});fs[_0x898a('0x65')](_0x898a('0x66'),_0x3bcc3d);if(_0x3909c5[_0x898a('0x67')]){var _0x307849=ejs[_0x898a('0x64')](_0x42fda8,{'trunks':_0x41cf94||[]});fs['writeFileSync'](_0x898a('0x68'),_0x307849);}})['then'](function(){return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x57'),{'module':_0x898a('0x6a')});})['then'](function(){var _0x31102d=_0x5ed35e[_0x898a('0x58')][_0x898a('0x33')]({'plain':!![]});if(!_0x31102d)throw new Error(_0x898a('0x6b'));if(_0x31102d[_0x898a('0x59')]==='user'){var _0x4b9487=_0x3909c5[_0x898a('0x33')]({'plain':!![]});return db[_0x898a('0x5a')][_0x898a('0x52')]({'where':{'name':_0x898a('0x34'),'userProfileId':_0x31102d['userProfileId']},'raw':!![]})[_0x898a('0x31')](function(_0x3d3451){if(_0x3d3451&&_0x3d3451[_0x898a('0x5c')]===0x0){return db[_0x898a('0x35')][_0x898a('0x57')]({'name':_0x4b9487[_0x898a('0x37')],'resourceId':_0x4b9487['id'],'type':_0x3d3451[_0x898a('0x37')],'sectionId':_0x3d3451['id']},{})[_0x898a('0x31')](function(){return _0x3909c5;});}else{return _0x3909c5;}})['catch'](function(_0x32a207){logger[_0x898a('0x1f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32a207);throw _0x32a207;});}return _0x3909c5;})[_0x898a('0x31')](respondWithResult(_0xfdd6d8,0xc9))['catch'](handleError(_0xfdd6d8,null));};exports[_0x898a('0x30')]=function(_0x4b2575,_0x2471d8,_0x387f2c){var _0x3b07dc;return db[_0x898a('0x4a')][_0x898a('0x52')]({'where':{'id':_0x4b2575[_0x898a('0x4d')]['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x2471d8,null))[_0x898a('0x31')](saveUpdates(_0x4b2575[_0x898a('0x55')],null))['then'](function(_0x3fe54b){if(_0x3fe54b){_0x3b07dc=_0x3fe54b;return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});}})[_0x898a('0x31')](function(_0x290972){if(_0x290972){var _0x1d594b=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x4fad03=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config['root'],'server/files/templates/registry.ejs'),_0x898a('0x63'));var _0x4a79a4=ejs[_0x898a('0x64')](_0x1d594b,{'trunks':_0x290972||[]});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x4a79a4);var _0x3f6815=ejs[_0x898a('0x64')](_0x4fad03,{'trunks':_0x290972||[]});fs[_0x898a('0x65')](_0x898a('0x68'),_0x3f6815);return respondWithRpcPromise(_0x898a('0x69'),_0x898a('0x30'),{'module':_0x898a('0x6a')});}return null;})['then'](function(_0x3237e8){if(_0x3237e8){return _0x3b07dc;}})[_0x898a('0x31')](respondWithResult(_0x2471d8,null))[_0x898a('0x23')](handleError(_0x2471d8,null));};exports['destroy']=function(_0x27560f,_0x61247c,_0x5c6247){var _0x39e917;return db['Trunk']['find']({'where':{'id':_0x27560f['params']['id']}})[_0x898a('0x31')](handleEntityNotFound(_0x61247c,null))[_0x898a('0x31')](removeEntity(_0x61247c,null))[_0x898a('0x31')](function(){return db[_0x898a('0x4a')][_0x898a('0x5d')]({'raw':!![]});})[_0x898a('0x31')](function(_0x12e54b){var _0x50dd52=fs[_0x898a('0x5e')](path['join'](config[_0x898a('0x5f')],_0x898a('0x60')),'utf8');var _0x24670c=fs[_0x898a('0x5e')](path[_0x898a('0x61')](config[_0x898a('0x5f')],_0x898a('0x62')),'utf8');var _0x5847cb=ejs['render'](_0x50dd52,{'trunks':_0x12e54b});var _0x3b8fb5=ejs[_0x898a('0x64')](_0x24670c,{'trunks':_0x12e54b});fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_trunks.conf',_0x5847cb);fs[_0x898a('0x65')]('/etc/asterisk/sip_xcally_registers.conf',_0x3b8fb5);return respondWithRpcPromise('Reload',_0x898a('0x32'),{'module':_0x898a('0x6a')});})[_0x898a('0x23')](handleError(_0x61247c,null));};
\ No newline at end of file
+var _0x4b84=['omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','create','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','role','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Trunk,\x20%s,\x20%s','request\x20sent','result','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','Trunks','UserProfileResource','stack','name','send','index','Trunk','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','length','find','includeAll','get'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4b84,0x1cc));var _0x44b8=function(_0xbbfe59,_0x46067f){_0xbbfe59=_0xbbfe59-0x0;var _0x28a2a4=_0x4b84[_0xbbfe59];return _0x28a2a4;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];var jayson=require(_0x44b8('0x14'));var client=jayson['client'][_0x44b8('0x15')]({'port':0x232a});function respondWithRpcPromise(_0x490bc6,_0x833ea3,_0x18d642,_0x4df670){return new BPromise(function(_0x63e8f6,_0x4be54c){var _0x54fa95=_0x4df670||client;return _0x54fa95[_0x44b8('0x16')](_0x490bc6,_0x18d642)[_0x44b8('0x17')](function(_0x1722da){logger[_0x44b8('0x18')]('Trunk,\x20%s,\x20%s',_0x833ea3,'request\x20sent');logger['debug'](_0x44b8('0x19'),_0x833ea3,'request\x20sent',JSON[_0x44b8('0x1a')](_0x1722da));if(_0x1722da[_0x44b8('0x1b')]){if(_0x1722da['error'][_0x44b8('0x1c')]===0x1f4){logger[_0x44b8('0x1b')]('Trunk,\x20%s,\x20%s',_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x4be54c(_0x1722da['error'][_0x44b8('0x1d')]);}logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);return _0x63e8f6(_0x1722da[_0x44b8('0x1b')][_0x44b8('0x1d')]);}else{logger[_0x44b8('0x18')](_0x44b8('0x1e'),_0x833ea3,_0x44b8('0x1f'));_0x63e8f6(_0x1722da[_0x44b8('0x20')][_0x44b8('0x1d')]);}})['catch'](function(_0x56549a){logger[_0x44b8('0x1b')](_0x44b8('0x1e'),_0x833ea3,_0x56549a);_0x4be54c(_0x56549a);});});}function respondWithStatusCode(_0x1418db,_0x305a5c){_0x305a5c=_0x305a5c||0xcc;return function(_0x51a34a){if(_0x51a34a){return _0x1418db[_0x44b8('0x21')](_0x305a5c);}return _0x1418db['status'](_0x305a5c)[_0x44b8('0x22')]();};}function respondWithResult(_0x228c81,_0x25a0c1){_0x25a0c1=_0x25a0c1||0xc8;return function(_0x47689e){if(_0x47689e){return _0x228c81[_0x44b8('0x23')](_0x25a0c1)['json'](_0x47689e);}};}function respondWithFilteredResult(_0x474f01,_0x502acf){return function(_0x41d673){if(_0x41d673){var _0x350482=typeof _0x502acf['offset']===_0x44b8('0x24')&&typeof _0x502acf[_0x44b8('0x25')]===_0x44b8('0x24');var _0x59c1bf=_0x41d673[_0x44b8('0x26')];var _0x242342=_0x350482?0x0:_0x502acf['offset'];var _0x2e0174=_0x350482?_0x41d673['count']:_0x502acf[_0x44b8('0x27')]+_0x502acf['limit'];var _0x559f0b;if(_0x2e0174>=_0x59c1bf){_0x2e0174=_0x59c1bf;_0x559f0b=0xc8;}else{_0x559f0b=0xce;}_0x474f01['status'](_0x559f0b);return _0x474f01[_0x44b8('0x28')](_0x44b8('0x29'),_0x242342+'-'+_0x2e0174+'/'+_0x59c1bf)[_0x44b8('0x2a')](_0x41d673);}return null;};}function patchUpdates(_0x1bd1be){return function(_0x38cd17){try{jsonpatch[_0x44b8('0x2b')](_0x38cd17,_0x1bd1be,!![]);}catch(_0x2cf205){return BPromise[_0x44b8('0x2c')](_0x2cf205);}return _0x38cd17[_0x44b8('0x2d')]();};}function saveUpdates(_0x28f918,_0x5e1129){return function(_0x417d81){if(_0x417d81){return _0x417d81[_0x44b8('0x2e')](_0x28f918)['then'](function(_0x261ff2){return _0x261ff2;});}return null;};}function removeEntity(_0x538db7,_0x212983){return function(_0x1652cb){if(_0x1652cb){return _0x1652cb[_0x44b8('0x2f')]()[_0x44b8('0x17')](function(){var _0x1b63a7=_0x1652cb['get']({'plain':!![]});var _0x16b706=_0x44b8('0x30');return db[_0x44b8('0x31')][_0x44b8('0x2f')]({'where':{'type':_0x16b706,'resourceId':_0x1b63a7['id']}})[_0x44b8('0x17')](function(){return _0x1652cb;});})['then'](function(){_0x538db7[_0x44b8('0x23')](0xcc)[_0x44b8('0x22')]();});}};}function handleEntityNotFound(_0x1a30fc,_0x3e93af){return function(_0x140a79){if(!_0x140a79){_0x1a30fc[_0x44b8('0x21')](0x194);}return _0x140a79;};}function handleError(_0x2e8b88,_0x14a9d7){_0x14a9d7=_0x14a9d7||0x1f4;return function(_0x28c10d){logger[_0x44b8('0x1b')](_0x28c10d[_0x44b8('0x32')]);if(_0x28c10d[_0x44b8('0x33')]){delete _0x28c10d[_0x44b8('0x33')];}_0x2e8b88[_0x44b8('0x23')](_0x14a9d7)[_0x44b8('0x34')](_0x28c10d);};}exports[_0x44b8('0x35')]=function(_0x323c50,_0xeff999){var _0x28faa9={},_0x3984f8={},_0x2c02d6={'count':0x0,'rows':[]};var _0x282345=_['map'](db[_0x44b8('0x36')][_0x44b8('0x37')],function(_0x4fcfa0){return{'name':_0x4fcfa0[_0x44b8('0x38')],'type':_0x4fcfa0[_0x44b8('0x39')][_0x44b8('0x3a')]};});_0x3984f8[_0x44b8('0x3b')]=_['map'](_0x282345,_0x44b8('0x33'));_0x3984f8[_0x44b8('0x3c')]=_[_0x44b8('0x3d')](_0x323c50[_0x44b8('0x3c')]);_0x3984f8[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],_0x3984f8[_0x44b8('0x3c')]);_0x28faa9[_0x44b8('0x40')]=_[_0x44b8('0x3f')](_0x3984f8[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x28faa9[_0x44b8('0x40')]=_0x28faa9[_0x44b8('0x40')]['length']?_0x28faa9[_0x44b8('0x40')]:_0x3984f8[_0x44b8('0x3b')];if(!_0x323c50[_0x44b8('0x3c')]['hasOwnProperty'](_0x44b8('0x42'))){_0x28faa9[_0x44b8('0x25')]=qs[_0x44b8('0x25')](_0x323c50['query'][_0x44b8('0x25')]);_0x28faa9[_0x44b8('0x27')]=qs[_0x44b8('0x27')](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x27')]);}_0x28faa9['order']=qs['sort'](_0x323c50[_0x44b8('0x3c')][_0x44b8('0x43')]);_0x28faa9[_0x44b8('0x44')]=qs[_0x44b8('0x3e')](_[_0x44b8('0x45')](_0x323c50[_0x44b8('0x3c')],_0x3984f8[_0x44b8('0x3e')]),_0x282345);if(_0x323c50[_0x44b8('0x3c')][_0x44b8('0x46')]){_0x28faa9[_0x44b8('0x44')]=_[_0x44b8('0x47')](_0x28faa9[_0x44b8('0x44')],{'$or':_[_0x44b8('0x48')](_0x282345,function(_0x1236c7){if(_0x1236c7[_0x44b8('0x39')]!==_0x44b8('0x49')){var _0xce06dc={};_0xce06dc[_0x1236c7[_0x44b8('0x33')]]={'$like':'%'+_0x323c50[_0x44b8('0x3c')]['filter']+'%'};return _0xce06dc;}})});}_0x28faa9=_['merge']({},_0x28faa9,_0x323c50[_0x44b8('0x4a')]);var _0x1df74b={'where':_0x28faa9[_0x44b8('0x44')]};return db[_0x44b8('0x36')][_0x44b8('0x26')](_0x1df74b)[_0x44b8('0x17')](function(_0x411ed6){_0x2c02d6['count']=_0x411ed6;if(_0x323c50[_0x44b8('0x3c')]['includeAll']){_0x28faa9[_0x44b8('0x4b')]=[{'all':!![]}];}return db[_0x44b8('0x36')][_0x44b8('0x4c')](_0x28faa9);})[_0x44b8('0x17')](function(_0x103d57){_0x2c02d6[_0x44b8('0x4d')]=_0x103d57;return _0x2c02d6;})['then'](respondWithFilteredResult(_0xeff999,_0x28faa9))[_0x44b8('0x4e')](handleError(_0xeff999,null));};exports[_0x44b8('0x4f')]=function(_0x10602c,_0x25d266){var _0x4ccc77={'raw':![],'where':{'id':_0x10602c[_0x44b8('0x50')]['id']}},_0x4e4ed1={};_0x4e4ed1[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')][_0x44b8('0x37')]);_0x4e4ed1['query']=_[_0x44b8('0x3d')](_0x10602c[_0x44b8('0x3c')]);_0x4e4ed1[_0x44b8('0x3e')]=_[_0x44b8('0x3f')](_0x4e4ed1[_0x44b8('0x3b')],_0x4e4ed1['query']);_0x4ccc77['attributes']=_[_0x44b8('0x3f')](_0x4e4ed1['model'],qs[_0x44b8('0x41')](_0x10602c['query'][_0x44b8('0x41')]));_0x4ccc77[_0x44b8('0x40')]=_0x4ccc77[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4ccc77[_0x44b8('0x40')]:_0x4e4ed1[_0x44b8('0x3b')];if(_0x10602c[_0x44b8('0x3c')]['includeAll']){_0x4ccc77[_0x44b8('0x4b')]=[{'all':!![]}];}_0x4ccc77=_[_0x44b8('0x47')]({},_0x4ccc77,_0x10602c[_0x44b8('0x4a')]);return db['Trunk'][_0x44b8('0x52')](_0x4ccc77)[_0x44b8('0x17')](handleEntityNotFound(_0x25d266,null))[_0x44b8('0x17')](respondWithResult(_0x25d266,null))[_0x44b8('0x4e')](handleError(_0x25d266,null));};exports['clone']=function(_0x399d6b,_0x308f7b){var _0x4a6e55={'where':{'id':_0x399d6b[_0x44b8('0x50')]['id']}},_0x3de425={};_0x3de425[_0x44b8('0x3b')]=_[_0x44b8('0x3d')](db[_0x44b8('0x36')]['rawAttributes']);_0x4a6e55['attributes']=_[_0x44b8('0x3f')](_0x3de425[_0x44b8('0x3b')],qs[_0x44b8('0x41')](_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x41')]));_0x4a6e55[_0x44b8('0x40')]=_0x4a6e55[_0x44b8('0x40')][_0x44b8('0x51')]?_0x4a6e55[_0x44b8('0x40')]:_0x3de425[_0x44b8('0x3b')];if(_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]){_0x4a6e55['include']=[{'all':!![]}];}_0x4a6e55=_[_0x44b8('0x47')]({},_0x4a6e55,_0x399d6b[_0x44b8('0x4a')]);return db[_0x44b8('0x36')][_0x44b8('0x52')](_0x4a6e55)[_0x44b8('0x17')](handleEntityNotFound(_0x308f7b,null))[_0x44b8('0x17')](function(_0x426a6a){if(_0x426a6a){var _0x172ff3=_0x426a6a[_0x44b8('0x54')]({'plain':!![]});_0x172ff3=qs[_0x44b8('0x55')](_0x172ff3,['id',_0x44b8('0x56'),_0x44b8('0x57')]);_0x399d6b[_0x44b8('0x58')]=_[_0x44b8('0x55')](_0x399d6b[_0x44b8('0x58')],['id',_0x44b8('0x56'),_0x44b8('0x57')]);return db[_0x44b8('0x36')]['create'](_[_0x44b8('0x47')](_0x172ff3,_0x399d6b[_0x44b8('0x58')]),{'include':_0x399d6b[_0x44b8('0x3c')][_0x44b8('0x53')]?[{'all':!![]}]:undefined})[_0x44b8('0x17')](function(_0x29ed5d){var _0x2ecf65=_0x399d6b['user'][_0x44b8('0x54')]({'plain':!![]});if(!_0x2ecf65)throw new Error(_0x44b8('0x59'));if(_0x2ecf65['role']===_0x44b8('0x5a')){var _0x3354bd=_0x29ed5d['get']({'plain':!![]});var _0x37e42e=_0x44b8('0x30');return db[_0x44b8('0x5b')]['find']({'where':{'name':_0x37e42e,'userProfileId':_0x2ecf65[_0x44b8('0x5c')]},'raw':!![]})['then'](function(_0x36cdd8){if(_0x36cdd8&&_0x36cdd8['autoAssociation']===0x0){return db[_0x44b8('0x31')][_0x44b8('0x5d')]({'name':_0x3354bd[_0x44b8('0x33')],'resourceId':_0x3354bd['id'],'type':_0x36cdd8[_0x44b8('0x33')],'sectionId':_0x36cdd8['id']},{})[_0x44b8('0x17')](function(){return _0x29ed5d;});}else{return _0x29ed5d;}})[_0x44b8('0x4e')](function(_0x4c7edd){logger[_0x44b8('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7edd);throw _0x4c7edd;});}return _0x29ed5d;});}})[_0x44b8('0x17')](respondWithResult(_0x308f7b,0xc9))[_0x44b8('0x4e')](handleError(_0x308f7b,null));};exports['create']=function(_0x3f9438,_0x1ee26b,_0x1cf31f){var _0x30d60f;return db[_0x44b8('0x36')][_0x44b8('0x5d')](_0x3f9438[_0x44b8('0x58')],{'raw':!![]})[_0x44b8('0x17')](function(_0x3f9102){_0x30d60f=_0x3f9102;return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0x52381a){var _0xd20d0=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],_0x44b8('0x60')),_0x44b8('0x61'));var _0x5bff09=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],_0x44b8('0x63')),_0x44b8('0x61'));var _0x59060b=ejs[_0x44b8('0x64')](_0xd20d0,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x59060b);if(_0x30d60f[_0x44b8('0x67')]){var _0x2e02d7=ejs[_0x44b8('0x64')](_0x5bff09,{'trunks':_0x52381a||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x2e02d7);}})['then'](function(){return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x5d'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x17')](function(){var _0x5b26e8=_0x3f9438['user']['get']({'plain':!![]});if(!_0x5b26e8)throw new Error(_0x44b8('0x59'));if(_0x5b26e8[_0x44b8('0x6b')]===_0x44b8('0x5a')){var _0x46e20f=_0x30d60f[_0x44b8('0x54')]({'plain':!![]});return db['UserProfileSection'][_0x44b8('0x52')]({'where':{'name':'Trunks','userProfileId':_0x5b26e8[_0x44b8('0x5c')]},'raw':!![]})[_0x44b8('0x17')](function(_0xea2c3e){if(_0xea2c3e&&_0xea2c3e['autoAssociation']===0x0){return db['UserProfileResource'][_0x44b8('0x5d')]({'name':_0x46e20f[_0x44b8('0x33')],'resourceId':_0x46e20f['id'],'type':_0xea2c3e[_0x44b8('0x33')],'sectionId':_0xea2c3e['id']},{})['then'](function(){return _0x30d60f;});}else{return _0x30d60f;}})[_0x44b8('0x4e')](function(_0x36f217){logger[_0x44b8('0x1b')](_0x44b8('0x6c'),_0x36f217);throw _0x36f217;});}return _0x30d60f;})[_0x44b8('0x17')](respondWithResult(_0x1ee26b,0xc9))['catch'](handleError(_0x1ee26b,null));};exports[_0x44b8('0x2e')]=function(_0x1888f8,_0xbbdab9,_0x2a8ccc){var _0x220f1b;return db['Trunk'][_0x44b8('0x52')]({'where':{'id':_0x1888f8[_0x44b8('0x50')]['id']}})[_0x44b8('0x17')](handleEntityNotFound(_0xbbdab9,null))[_0x44b8('0x17')](saveUpdates(_0x1888f8[_0x44b8('0x58')],null))[_0x44b8('0x17')](function(_0x1c7ef2){if(_0x1c7ef2){_0x220f1b=_0x1c7ef2;return db['Trunk'][_0x44b8('0x4c')]({'raw':!![]});}})[_0x44b8('0x17')](function(_0x4c3fea){if(_0x4c3fea){var _0x3bb7d8=fs[_0x44b8('0x5e')](path['join'](config[_0x44b8('0x62')],'server/files/templates/trunk.ejs'),'utf8');var _0x31d3b6=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/registry.ejs'),'utf8');var _0x36334a=ejs[_0x44b8('0x64')](_0x3bb7d8,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x36334a);var _0x1a5621=ejs[_0x44b8('0x64')](_0x31d3b6,{'trunks':_0x4c3fea||[]});fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x1a5621);return respondWithRpcPromise('Reload',_0x44b8('0x2e'),{'module':'chan_sip.so'});}return null;})['then'](function(_0x55f4e4){if(_0x55f4e4){return _0x220f1b;}})[_0x44b8('0x17')](respondWithResult(_0xbbdab9,null))['catch'](handleError(_0xbbdab9,null));};exports[_0x44b8('0x2f')]=function(_0x1e37fd,_0x268e1e,_0x306793){var _0x3a9780;return db[_0x44b8('0x36')][_0x44b8('0x52')]({'where':{'id':_0x1e37fd[_0x44b8('0x50')]['id']}})['then'](handleEntityNotFound(_0x268e1e,null))[_0x44b8('0x17')](removeEntity(_0x268e1e,null))[_0x44b8('0x17')](function(){return db[_0x44b8('0x36')][_0x44b8('0x4c')]({'raw':!![]});})[_0x44b8('0x17')](function(_0xee44b3){var _0x10034d=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config['root'],'server/files/templates/trunk.ejs'),_0x44b8('0x61'));var _0x553aa9=fs[_0x44b8('0x5e')](path[_0x44b8('0x5f')](config[_0x44b8('0x62')],'server/files/templates/registry.ejs'),'utf8');var _0x4b22e7=ejs[_0x44b8('0x64')](_0x10034d,{'trunks':_0xee44b3});var _0x4860af=ejs[_0x44b8('0x64')](_0x553aa9,{'trunks':_0xee44b3});fs[_0x44b8('0x65')](_0x44b8('0x66'),_0x4b22e7);fs[_0x44b8('0x65')](_0x44b8('0x68'),_0x4860af);return respondWithRpcPromise(_0x44b8('0x69'),_0x44b8('0x2f'),{'module':_0x44b8('0x6a')});})[_0x44b8('0x4e')](handleError(_0x268e1e,null));};
\ No newline at end of file
index 19f2f45..b43680c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6abc=['util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','Trunk','lodash'];(function(_0x9adf1b,_0x3ac695){var _0x960269=function(_0x368ca6){while(--_0x368ca6){_0x9adf1b['push'](_0x9adf1b['shift']());}};_0x960269(++_0x3ac695);}(_0x6abc,0x1bb));var _0xc6ab=function(_0x1f2d97,_0x81abcf){_0x1f2d97=_0x1f2d97-0x0;var _0x2569a6=_0x6abc[_0x1f2d97];return _0x2569a6;};'use strict';var _=require(_0xc6ab('0x0'));var util=require(_0xc6ab('0x1'));var logger=require(_0xc6ab('0x2'))(_0xc6ab('0x3'));var moment=require(_0xc6ab('0x4'));var BPromise=require(_0xc6ab('0x5'));var rp=require(_0xc6ab('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc6ab('0x7'));var config=require(_0xc6ab('0x8'));var attributes=require('./trunk.attributes');module[_0xc6ab('0x9')]=function(_0x305a0c,_0x11e44e){return _0x305a0c[_0xc6ab('0xa')](_0xc6ab('0xb'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xabb0=['request-promise','rimraf','../../config/environment','./trunk.attributes','exports','define','Trunk','util','api','bluebird'];(function(_0x1c52f0,_0x15582a){var _0x2f70b3=function(_0x2da9c9){while(--_0x2da9c9){_0x1c52f0['push'](_0x1c52f0['shift']());}};_0x2f70b3(++_0x15582a);}(_0xabb0,0x147));var _0x0abb=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xabb0[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var util=require(_0x0abb('0x0'));var logger=require('../../config/logger')(_0x0abb('0x1'));var moment=require('moment');var BPromise=require(_0x0abb('0x2'));var rp=require(_0x0abb('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0abb('0x4'));var config=require(_0x0abb('0x5'));var attributes=require(_0x0abb('0x6'));module[_0x0abb('0x7')]=function(_0x1e0eee,_0x8c002c){return _0x1e0eee[_0x0abb('0x8')](_0x0abb('0x9'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 64fc4b0..cd4d74b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ed0=['result','catch','GetTrunk','Trunk','findAll','options','raw','where','attributes','limit','include','map','model','find','ShowTrunk','debug','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x4ed0,0x79));var _0x04ed=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x4ed0[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x04ed('0x0'));var util=require('util');var moment=require(_0x04ed('0x1'));var BPromise=require('bluebird');var rs=require(_0x04ed('0x2'));var fs=require('fs');var Redis=require(_0x04ed('0x3'));var db=require(_0x04ed('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x04ed('0x5'))(_0x04ed('0x6'));var config=require('../../config/environment');var jayson=require(_0x04ed('0x7'));var client=jayson[_0x04ed('0x8')][_0x04ed('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x461e2d,_0xb69c27,_0x31e19e){return new BPromise(function(_0x2c1b25,_0x389eb6){return client[_0x04ed('0xa')](_0x461e2d,_0x31e19e)[_0x04ed('0xb')](function(_0x17560f){logger[_0x04ed('0xc')](_0x04ed('0xd'),_0xb69c27,_0x04ed('0xe'));logger['debug'](_0x04ed('0xf'),_0xb69c27,_0x04ed('0xe'),JSON[_0x04ed('0x10')](_0x17560f));if(_0x17560f[_0x04ed('0x11')]){if(_0x17560f['error']['code']===0x1f4){logger[_0x04ed('0x11')](_0x04ed('0xd'),_0xb69c27,_0x17560f['error'][_0x04ed('0x12')]);return _0x389eb6(_0x17560f[_0x04ed('0x11')][_0x04ed('0x12')]);}logger['error'](_0x04ed('0xd'),_0xb69c27,_0x17560f[_0x04ed('0x11')]['message']);return _0x2c1b25(_0x17560f[_0x04ed('0x11')]['message']);}else{logger[_0x04ed('0xc')](_0x04ed('0xd'),_0xb69c27,_0x04ed('0xe'));_0x2c1b25(_0x17560f[_0x04ed('0x13')][_0x04ed('0x12')]);}})[_0x04ed('0x14')](function(_0x5277f9){logger['error'](_0x04ed('0xd'),_0xb69c27,_0x5277f9);_0x389eb6(_0x5277f9);});});}exports[_0x04ed('0x15')]=function(_0x1b3c94){var _0x588edb=this;return new Promise(function(_0x555195,_0x132017){return db[_0x04ed('0x16')][_0x04ed('0x17')]({'raw':_0x1b3c94[_0x04ed('0x18')]?_0x1b3c94['options'][_0x04ed('0x19')]===undefined?!![]:![]:!![],'where':_0x1b3c94['options']?_0x1b3c94[_0x04ed('0x18')][_0x04ed('0x1a')]||null:null,'attributes':_0x1b3c94[_0x04ed('0x18')]?_0x1b3c94[_0x04ed('0x18')][_0x04ed('0x1b')]||null:null,'limit':_0x1b3c94['options']?_0x1b3c94[_0x04ed('0x18')][_0x04ed('0x1c')]||null:null,'include':_0x1b3c94[_0x04ed('0x18')]?_0x1b3c94[_0x04ed('0x18')][_0x04ed('0x1d')]?_[_0x04ed('0x1e')](_0x1b3c94[_0x04ed('0x18')][_0x04ed('0x1d')],function(_0x3d642f){return{'model':db[_0x3d642f[_0x04ed('0x1f')]],'as':_0x3d642f['as'],'attributes':_0x3d642f[_0x04ed('0x1b')],'include':_0x3d642f[_0x04ed('0x1d')]?_[_0x04ed('0x1e')](_0x3d642f[_0x04ed('0x1d')],function(_0x464a1b){return{'model':db[_0x464a1b[_0x04ed('0x1f')]],'as':_0x464a1b['as'],'attributes':_0x464a1b[_0x04ed('0x1b')],'include':_0x464a1b['include']?_['map'](_0x464a1b['include'],function(_0x34191d){return{'model':db[_0x34191d[_0x04ed('0x1f')]],'as':_0x34191d['as'],'attributes':_0x34191d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x55767c){logger[_0x04ed('0xc')](_0x04ed('0x15'),_0x1b3c94);logger['debug'](_0x04ed('0x15'),_0x1b3c94,JSON[_0x04ed('0x10')](_0x55767c));_0x555195(_0x55767c);})[_0x04ed('0x14')](function(_0x3dc6e5){logger['error'](_0x04ed('0x15'),_0x3dc6e5[_0x04ed('0x12')],_0x1b3c94);_0x132017(_0x588edb['error'](0x1f4,_0x3dc6e5[_0x04ed('0x12')]));});});};exports['ShowTrunk']=function(_0x3d2b69){var _0x2c8f59=this;return new Promise(function(_0x5c6776,_0xd2086){return db[_0x04ed('0x16')][_0x04ed('0x20')]({'raw':_0x3d2b69[_0x04ed('0x18')]?_0x3d2b69['options'][_0x04ed('0x19')]===undefined?!![]:![]:!![],'where':_0x3d2b69[_0x04ed('0x18')]?_0x3d2b69[_0x04ed('0x18')][_0x04ed('0x1a')]||null:null,'attributes':_0x3d2b69[_0x04ed('0x18')]?_0x3d2b69['options'][_0x04ed('0x1b')]||null:null,'include':_0x3d2b69[_0x04ed('0x18')]?_0x3d2b69[_0x04ed('0x18')][_0x04ed('0x1d')]?_[_0x04ed('0x1e')](_0x3d2b69[_0x04ed('0x18')][_0x04ed('0x1d')],function(_0x2dff87){return{'model':db[_0x2dff87[_0x04ed('0x1f')]],'as':_0x2dff87['as'],'attributes':_0x2dff87['attributes'],'include':_0x2dff87['include']?_[_0x04ed('0x1e')](_0x2dff87[_0x04ed('0x1d')],function(_0x270927){return{'model':db[_0x270927[_0x04ed('0x1f')]],'as':_0x270927['as'],'attributes':_0x270927['attributes'],'include':_0x270927[_0x04ed('0x1d')]?_[_0x04ed('0x1e')](_0x270927[_0x04ed('0x1d')],function(_0x4258c8){return{'model':db[_0x4258c8['model']],'as':_0x4258c8['as'],'attributes':_0x4258c8['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x516007){logger[_0x04ed('0xc')](_0x04ed('0x21'),_0x3d2b69);logger[_0x04ed('0x22')](_0x04ed('0x21'),_0x3d2b69,JSON['stringify'](_0x516007));_0x5c6776(_0x516007);})[_0x04ed('0x14')](function(_0x4f4375){logger[_0x04ed('0x11')](_0x04ed('0x21'),_0x4f4375[_0x04ed('0x12')],_0x3d2b69);_0xd2086(_0x2c8f59[_0x04ed('0x11')](0x1f4,_0x4f4375[_0x04ed('0x12')]));});});};
\ No newline at end of file
+var _0x5c49=['client','http','then','info','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','Trunk,\x20%s,\x20%s','message','request\x20sent','GetTrunk','Trunk','findAll','options','attributes','include','model','map','debug','find','raw','where','ShowTrunk','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xa01eea,_0x12e531){var _0x47c05e=function(_0x22a818){while(--_0x22a818){_0xa01eea['push'](_0xa01eea['shift']());}};_0x47c05e(++_0x12e531);}(_0x5c49,0xa4));var _0x95c4=function(_0x511bd1,_0x223e5b){_0x511bd1=_0x511bd1-0x0;var _0x4c48ec=_0x5c49[_0x511bd1];return _0x4c48ec;};'use strict';var _=require(_0x95c4('0x0'));var util=require('util');var moment=require(_0x95c4('0x1'));var BPromise=require(_0x95c4('0x2'));var rs=require(_0x95c4('0x3'));var fs=require('fs');var Redis=require(_0x95c4('0x4'));var db=require(_0x95c4('0x5'))['db'];var utils=require(_0x95c4('0x6'));var logger=require(_0x95c4('0x7'))(_0x95c4('0x8'));var config=require(_0x95c4('0x9'));var jayson=require(_0x95c4('0xa'));var client=jayson[_0x95c4('0xb')][_0x95c4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xd2b644,_0x392a3d,_0x13fd2b){return new BPromise(function(_0x49ad02,_0xe56413){return client['request'](_0xd2b644,_0x13fd2b)[_0x95c4('0xd')](function(_0x340af6){logger[_0x95c4('0xe')]('Trunk,\x20%s,\x20%s',_0x392a3d,'request\x20sent');logger['debug'](_0x95c4('0xf'),_0x392a3d,'request\x20sent',JSON[_0x95c4('0x10')](_0x340af6));if(_0x340af6[_0x95c4('0x11')]){if(_0x340af6[_0x95c4('0x11')]['code']===0x1f4){logger[_0x95c4('0x11')](_0x95c4('0x12'),_0x392a3d,_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);return _0xe56413(_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);}logger[_0x95c4('0x11')](_0x95c4('0x12'),_0x392a3d,_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);return _0x49ad02(_0x340af6[_0x95c4('0x11')][_0x95c4('0x13')]);}else{logger[_0x95c4('0xe')](_0x95c4('0x12'),_0x392a3d,_0x95c4('0x14'));_0x49ad02(_0x340af6['result'][_0x95c4('0x13')]);}})['catch'](function(_0xe9e736){logger[_0x95c4('0x11')](_0x95c4('0x12'),_0x392a3d,_0xe9e736);_0xe56413(_0xe9e736);});});}exports[_0x95c4('0x15')]=function(_0x52aae1){var _0x39db31=this;return new Promise(function(_0x206ffd,_0x328685){return db[_0x95c4('0x16')][_0x95c4('0x17')]({'raw':_0x52aae1['options']?_0x52aae1[_0x95c4('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x52aae1[_0x95c4('0x18')]?_0x52aae1[_0x95c4('0x18')]['where']||null:null,'attributes':_0x52aae1[_0x95c4('0x18')]?_0x52aae1['options'][_0x95c4('0x19')]||null:null,'limit':_0x52aae1[_0x95c4('0x18')]?_0x52aae1['options']['limit']||null:null,'include':_0x52aae1[_0x95c4('0x18')]?_0x52aae1[_0x95c4('0x18')]['include']?_['map'](_0x52aae1['options'][_0x95c4('0x1a')],function(_0x45edcb){return{'model':db[_0x45edcb[_0x95c4('0x1b')]],'as':_0x45edcb['as'],'attributes':_0x45edcb[_0x95c4('0x19')],'include':_0x45edcb[_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0x45edcb[_0x95c4('0x1a')],function(_0xf4138c){return{'model':db[_0xf4138c[_0x95c4('0x1b')]],'as':_0xf4138c['as'],'attributes':_0xf4138c['attributes'],'include':_0xf4138c[_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0xf4138c[_0x95c4('0x1a')],function(_0xd4fba5){return{'model':db[_0xd4fba5[_0x95c4('0x1b')]],'as':_0xd4fba5['as'],'attributes':_0xd4fba5[_0x95c4('0x19')]};}):[]};}):[]};}):[]:[]})[_0x95c4('0xd')](function(_0x4fd126){logger['info']('GetTrunk',_0x52aae1);logger[_0x95c4('0x1d')]('GetTrunk',_0x52aae1,JSON[_0x95c4('0x10')](_0x4fd126));_0x206ffd(_0x4fd126);})['catch'](function(_0x333647){logger[_0x95c4('0x11')]('GetTrunk',_0x333647[_0x95c4('0x13')],_0x52aae1);_0x328685(_0x39db31['error'](0x1f4,_0x333647[_0x95c4('0x13')]));});});};exports['ShowTrunk']=function(_0x15e294){var _0x5117b9=this;return new Promise(function(_0x3b221b,_0x587d56){return db[_0x95c4('0x16')][_0x95c4('0x1e')]({'raw':_0x15e294[_0x95c4('0x18')]?_0x15e294[_0x95c4('0x18')][_0x95c4('0x1f')]===undefined?!![]:![]:!![],'where':_0x15e294['options']?_0x15e294[_0x95c4('0x18')][_0x95c4('0x20')]||null:null,'attributes':_0x15e294['options']?_0x15e294[_0x95c4('0x18')]['attributes']||null:null,'include':_0x15e294[_0x95c4('0x18')]?_0x15e294[_0x95c4('0x18')][_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0x15e294['options'][_0x95c4('0x1a')],function(_0x182788){return{'model':db[_0x182788[_0x95c4('0x1b')]],'as':_0x182788['as'],'attributes':_0x182788['attributes'],'include':_0x182788[_0x95c4('0x1a')]?_['map'](_0x182788[_0x95c4('0x1a')],function(_0x181b61){return{'model':db[_0x181b61[_0x95c4('0x1b')]],'as':_0x181b61['as'],'attributes':_0x181b61[_0x95c4('0x19')],'include':_0x181b61[_0x95c4('0x1a')]?_[_0x95c4('0x1c')](_0x181b61[_0x95c4('0x1a')],function(_0x42abf8){return{'model':db[_0x42abf8['model']],'as':_0x42abf8['as'],'attributes':_0x42abf8[_0x95c4('0x19')]};}):[]};}):[]};}):[]:[]})[_0x95c4('0xd')](function(_0x161f20){logger['info']('ShowTrunk',_0x15e294);logger[_0x95c4('0x1d')](_0x95c4('0x21'),_0x15e294,JSON[_0x95c4('0x10')](_0x161f20));_0x3b221b(_0x161f20);})[_0x95c4('0x22')](function(_0x279848){logger[_0x95c4('0x11')](_0x95c4('0x21'),_0x279848[_0x95c4('0x13')],_0x15e294);_0x587d56(_0x5117b9['error'](0x1f4,_0x279848[_0x95c4('0x13')]));});});};
\ No newline at end of file
index a30d79a..7cbafc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0140=['Router','fs-extra','./user.controller','isAuthenticated','index','get','/describe','describe','/whoami','whoami','getPresence','/:id','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','/:id/queues_rt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','getAgents','/:id/prefixes','getVoicePrefixes','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','getSquareProjects','getScheduledCalls','/:id/api_key','getApiKey','addContacts','post','create','bulkCreate','diskStorage','join','root','server/files/images/','format','%s-%s','now','originalname','single','file','/:id/login','logout','/:id/pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','/:id/mail_accounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','put','update','/:id/password','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','/:id/mail_interactions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','/:id/fax_accounts','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeWhatsappAccounts','/:id/square_projects','removeSquareProjects','removeApiKey','multer','util','connect-timeout'];(function(_0x40e553,_0x251be6){var _0x418796=function(_0x42c4ae){while(--_0x42c4ae){_0x40e553['push'](_0x40e553['shift']());}};_0x418796(++_0x251be6);}(_0x0140,0x75));var _0x0014=function(_0x487496,_0x249683){_0x487496=_0x487496-0x0;var _0x539dc8=_0x0140[_0x487496];return _0x539dc8;};'use strict';var multer=require(_0x0014('0x0'));var util=require(_0x0014('0x1'));var path=require('path');var timeout=require(_0x0014('0x2'));var express=require('express');var router=express[_0x0014('0x3')]();var fs_extra=require(_0x0014('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x0014('0x5'));router['get']('/',auth[_0x0014('0x6')](),controller[_0x0014('0x7')]);router[_0x0014('0x8')](_0x0014('0x9'),auth['isAuthenticated'](),controller[_0x0014('0xa')]);router[_0x0014('0x8')](_0x0014('0xb'),auth[_0x0014('0x6')](),controller[_0x0014('0xc')]);router[_0x0014('0x8')]('/presence',auth[_0x0014('0x6')](),controller[_0x0014('0xd')]);router[_0x0014('0x8')](_0x0014('0xe'),auth[_0x0014('0x6')](),controller[_0x0014('0xf')]);router['get'](_0x0014('0x10'),controller[_0x0014('0x11')]);router['get'](_0x0014('0x12'),auth[_0x0014('0x6')](),controller[_0x0014('0x13')]);router[_0x0014('0x8')](_0x0014('0x14'),auth[_0x0014('0x6')](),controller[_0x0014('0x15')]);router[_0x0014('0x8')](_0x0014('0x16'),auth[_0x0014('0x6')](),controller[_0x0014('0x17')]);router[_0x0014('0x8')](_0x0014('0x18'),auth[_0x0014('0x6')](),controller['getVoiceQueuesRt']);router['get'](_0x0014('0x19'),auth[_0x0014('0x6')](),controller[_0x0014('0x1a')]);router[_0x0014('0x8')](_0x0014('0x1b'),auth[_0x0014('0x6')](),controller[_0x0014('0x1c')]);router[_0x0014('0x8')](_0x0014('0x1d'),auth[_0x0014('0x6')](),controller['getScreenRecordings']);router[_0x0014('0x8')](_0x0014('0x1e'),auth[_0x0014('0x6')](),controller[_0x0014('0x1f')]);router['get'](_0x0014('0x20'),auth['isAuthenticated'](),controller[_0x0014('0x21')]);router[_0x0014('0x8')](_0x0014('0x22'),auth[_0x0014('0x6')](),controller[_0x0014('0x23')]);router[_0x0014('0x8')](_0x0014('0x24'),auth[_0x0014('0x6')](),controller[_0x0014('0x25')]);router['get'](_0x0014('0x26'),auth[_0x0014('0x6')](),controller[_0x0014('0x27')]);router['get'](_0x0014('0x28'),auth[_0x0014('0x6')](),controller['getWhatsappInteractions']);router[_0x0014('0x8')](_0x0014('0x29'),auth['isAuthenticated'](),controller[_0x0014('0x2a')]);router[_0x0014('0x8')]('/:id/lists',auth[_0x0014('0x6')](),controller['getLists']);router[_0x0014('0x8')]('/:id/agents',auth[_0x0014('0x6')](),controller[_0x0014('0x2b')]);router[_0x0014('0x8')](_0x0014('0x2c'),auth[_0x0014('0x6')](),controller[_0x0014('0x2d')]);router[_0x0014('0x8')]('/:id/fax_accounts',auth[_0x0014('0x6')](),controller[_0x0014('0x2e')]);router[_0x0014('0x8')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0x0014('0x2f')]);router[_0x0014('0x8')](_0x0014('0x30'),auth[_0x0014('0x6')](),controller[_0x0014('0x31')]);router[_0x0014('0x8')](_0x0014('0x32'),auth[_0x0014('0x6')](),controller['getSmsAccounts']);router[_0x0014('0x8')](_0x0014('0x33'),auth[_0x0014('0x6')](),controller[_0x0014('0x34')]);router['get'](_0x0014('0x35'),auth[_0x0014('0x6')](),controller[_0x0014('0x36')]);router['get']('/:id/square_projects',auth['isAuthenticated'](),controller[_0x0014('0x37')]);router[_0x0014('0x8')]('/:id/scheduled_calls',auth[_0x0014('0x6')](),controller[_0x0014('0x38')]);router[_0x0014('0x8')](_0x0014('0x39'),auth[_0x0014('0x6')](),controller[_0x0014('0x3a')]);router['post'](_0x0014('0x14'),auth[_0x0014('0x6')](),controller[_0x0014('0x3b')]);router[_0x0014('0x3c')]('/',auth[_0x0014('0x6')](),controller[_0x0014('0x3d')]);router[_0x0014('0x3c')]('/create_many',auth['isAuthenticated'](),controller[_0x0014('0x3e')]);router[_0x0014('0x3c')](_0x0014('0x16'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0x0014('0x3f')]({'destination':function(_0x1e9b65,_0x114ae6,_0x211735){_0x211735(null,path[_0x0014('0x40')](config[_0x0014('0x41')],_0x0014('0x42')));},'filename':function(_0x2b0b21,_0x2f61f0,_0x30ba4c){_0x30ba4c(null,util[_0x0014('0x43')](_0x0014('0x44'),Date[_0x0014('0x45')](),_0x2f61f0[_0x0014('0x46')]));}})});router[_0x0014('0x3c')](_0x0014('0x10'),upload[_0x0014('0x47')](_0x0014('0x48')),controller['addAvatar']);router[_0x0014('0x3c')](_0x0014('0x49'),auth['isAuthenticated'](),controller['login']);router[_0x0014('0x3c')]('/:id/logout',auth[_0x0014('0x6')](),controller[_0x0014('0x4a')]);router[_0x0014('0x3c')](_0x0014('0x4b'),auth[_0x0014('0x6')](),controller['pause']);router[_0x0014('0x3c')](_0x0014('0x4c'),auth[_0x0014('0x6')](),controller[_0x0014('0x4d')]);router[_0x0014('0x3c')]('/:id/teams',auth[_0x0014('0x6')](),controller[_0x0014('0x4e')]);router[_0x0014('0x3c')](_0x0014('0x4f'),auth[_0x0014('0x6')](),controller[_0x0014('0x50')]);router[_0x0014('0x3c')]('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0x0014('0x51')]);router['post'](_0x0014('0x52'),auth[_0x0014('0x6')](),controller[_0x0014('0x53')]);router[_0x0014('0x3c')](_0x0014('0x54'),auth['isAuthenticated'](),controller[_0x0014('0x55')]);router[_0x0014('0x3c')](_0x0014('0x56'),auth[_0x0014('0x6')](),controller[_0x0014('0x57')]);router[_0x0014('0x3c')](_0x0014('0x58'),auth[_0x0014('0x6')](),controller[_0x0014('0x59')]);router[_0x0014('0x3c')]('/:id/fax_accounts',auth[_0x0014('0x6')](),controller[_0x0014('0x5a')]);router[_0x0014('0x3c')](_0x0014('0x5b'),auth[_0x0014('0x6')](),controller['addMailAccounts']);router[_0x0014('0x3c')](_0x0014('0x30'),auth['isAuthenticated'](),controller[_0x0014('0x5c')]);router[_0x0014('0x3c')](_0x0014('0x32'),auth[_0x0014('0x6')](),controller[_0x0014('0x5d')]);router[_0x0014('0x3c')](_0x0014('0x33'),auth[_0x0014('0x6')](),controller[_0x0014('0x5e')]);router['post']('/:id/whatsapp_accounts',auth[_0x0014('0x6')](),controller[_0x0014('0x5f')]);router[_0x0014('0x3c')]('/:id/square_projects',auth[_0x0014('0x6')](),controller['addSquareProjects']);router['post'](_0x0014('0x39'),auth[_0x0014('0x6')](),controller['createApiKey']);router[_0x0014('0x60')](_0x0014('0xe'),auth['isAuthenticated'](),controller[_0x0014('0x61')]);router[_0x0014('0x60')](_0x0014('0x62'),auth[_0x0014('0x6')](),controller[_0x0014('0x63')]);router[_0x0014('0x64')]('/:id/queues',auth[_0x0014('0x6')](),controller[_0x0014('0x65')]);router[_0x0014('0x64')]('/:id/teams',auth[_0x0014('0x6')](),controller[_0x0014('0x66')]);router[_0x0014('0x64')](_0x0014('0xe'),auth[_0x0014('0x6')](),controller[_0x0014('0x67')]);router[_0x0014('0x64')](_0x0014('0x4f'),auth['isAuthenticated'](),controller[_0x0014('0x68')]);router['delete'](_0x0014('0x69'),auth[_0x0014('0x6')](),controller[_0x0014('0x6a')]);router[_0x0014('0x64')](_0x0014('0x52'),auth[_0x0014('0x6')](),controller[_0x0014('0x6b')]);router['delete'](_0x0014('0x54'),auth[_0x0014('0x6')](),controller[_0x0014('0x6c')]);router['delete'](_0x0014('0x56'),auth[_0x0014('0x6')](),controller[_0x0014('0x6d')]);router[_0x0014('0x64')](_0x0014('0x58'),auth[_0x0014('0x6')](),controller[_0x0014('0x6e')]);router[_0x0014('0x64')](_0x0014('0x6f'),auth[_0x0014('0x6')](),controller[_0x0014('0x70')]);router['delete'](_0x0014('0x5b'),auth['isAuthenticated'](),controller[_0x0014('0x71')]);router[_0x0014('0x64')](_0x0014('0x30'),auth[_0x0014('0x6')](),controller[_0x0014('0x72')]);router[_0x0014('0x64')](_0x0014('0x32'),auth[_0x0014('0x6')](),controller[_0x0014('0x73')]);router[_0x0014('0x64')](_0x0014('0x33'),auth[_0x0014('0x6')](),controller['removeChatWebsites']);router[_0x0014('0x64')](_0x0014('0x35'),auth['isAuthenticated'](),controller[_0x0014('0x74')]);router['delete'](_0x0014('0x75'),auth[_0x0014('0x6')](),controller[_0x0014('0x76')]);router['delete'](_0x0014('0x39'),auth['isAuthenticated'](),controller[_0x0014('0x77')]);module['exports']=router;
\ No newline at end of file
+var _0x9a3f=['server/files/images/','format','now','single','file','addAvatar','login','logout','/:id/pause','unpause','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','addSmsAccounts','/:id/chat_websites','/:id/whatsapp_accounts','addWhatsappAccounts','/:id/square_projects','addSquareProjects','/:id/api_key','update','put','/:id/password','delete','removeQueues','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','exports','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','/whoami','whoami','getPresence','/:id','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues_rt','getVoiceQueuesRt','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','getLists','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','getChatWebsites','getWhatsappAccounts','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','getApiKey','post','addContacts','/create_many','bulkCreate','/:id/queues','addQueues','join'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x9a3f,0x183));var _0xf9a3=function(_0x427640,_0xf715d3){_0x427640=_0x427640-0x0;var _0x4f11ac=_0x9a3f[_0x427640];return _0x4f11ac;};'use strict';var multer=require(_0xf9a3('0x0'));var util=require(_0xf9a3('0x1'));var path=require(_0xf9a3('0x2'));var timeout=require(_0xf9a3('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xf9a3('0x4'));var interaction=require(_0xf9a3('0x5'));var config=require(_0xf9a3('0x6'));var controller=require(_0xf9a3('0x7'));router[_0xf9a3('0x8')]('/',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0xa')]);router[_0xf9a3('0x8')](_0xf9a3('0xb'),auth[_0xf9a3('0x9')](),controller['describe']);router[_0xf9a3('0x8')](_0xf9a3('0xc'),auth['isAuthenticated'](),controller[_0xf9a3('0xd')]);router[_0xf9a3('0x8')]('/presence',auth['isAuthenticated'](),controller[_0xf9a3('0xe')]);router['get'](_0xf9a3('0xf'),auth['isAuthenticated'](),controller['show']);router['get'](_0xf9a3('0x10'),controller[_0xf9a3('0x11')]);router['get'](_0xf9a3('0x12'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x13')]);router[_0xf9a3('0x8')](_0xf9a3('0x14'),auth['isAuthenticated'](),controller[_0xf9a3('0x15')]);router['get']('/:id/queues',auth[_0xf9a3('0x9')](),controller['getQueues']);router[_0xf9a3('0x8')](_0xf9a3('0x16'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x17')]);router[_0xf9a3('0x8')]('/:id/groups',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x18')]);router['get'](_0xf9a3('0x19'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x1a')]);router[_0xf9a3('0x8')](_0xf9a3('0x1b'),auth['isAuthenticated'](),controller[_0xf9a3('0x1c')]);router['get'](_0xf9a3('0x1d'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x1e')]);router[_0xf9a3('0x8')](_0xf9a3('0x1f'),auth['isAuthenticated'](),controller[_0xf9a3('0x20')]);router[_0xf9a3('0x8')](_0xf9a3('0x21'),auth[_0xf9a3('0x9')](),controller['getMailInteractions']);router[_0xf9a3('0x8')](_0xf9a3('0x22'),auth['isAuthenticated'](),controller[_0xf9a3('0x23')]);router[_0xf9a3('0x8')](_0xf9a3('0x24'),auth[_0xf9a3('0x9')](),controller['getFaxInteractions']);router[_0xf9a3('0x8')](_0xf9a3('0x25'),auth['isAuthenticated'](),controller[_0xf9a3('0x26')]);router[_0xf9a3('0x8')](_0xf9a3('0x27'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x28')]);router[_0xf9a3('0x8')](_0xf9a3('0x29'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x2a')]);router['get']('/:id/agents',auth['isAuthenticated'](),controller[_0xf9a3('0x2b')]);router[_0xf9a3('0x8')](_0xf9a3('0x2c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x2d')]);router[_0xf9a3('0x8')](_0xf9a3('0x2e'),auth['isAuthenticated'](),controller[_0xf9a3('0x2f')]);router['get'](_0xf9a3('0x30'),auth['isAuthenticated'](),controller['getMailAccounts']);router[_0xf9a3('0x8')](_0xf9a3('0x31'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x32')]);router['get']('/:id/sms_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x33')]);router[_0xf9a3('0x8')]('/:id/chat_websites',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x34')]);router[_0xf9a3('0x8')]('/:id/whatsapp_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x35')]);router[_0xf9a3('0x8')]('/:id/square_projects',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x36')]);router[_0xf9a3('0x8')](_0xf9a3('0x37'),auth['isAuthenticated'](),controller[_0xf9a3('0x38')]);router[_0xf9a3('0x8')]('/:id/api_key',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x39')]);router[_0xf9a3('0x3a')](_0xf9a3('0x14'),auth['isAuthenticated'](),controller[_0xf9a3('0x3b')]);router[_0xf9a3('0x3a')]('/',auth[_0xf9a3('0x9')](),controller['create']);router[_0xf9a3('0x3a')](_0xf9a3('0x3c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x3d')]);router[_0xf9a3('0x3a')](_0xf9a3('0x3e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x3f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xf80807,_0x5c3131,_0x3d433b){_0x3d433b(null,path[_0xf9a3('0x40')](config['root'],_0xf9a3('0x41')));},'filename':function(_0x3df411,_0x33955c,_0x25670a){_0x25670a(null,util[_0xf9a3('0x42')]('%s-%s',Date[_0xf9a3('0x43')](),_0x33955c['originalname']));}})});router[_0xf9a3('0x3a')]('/:id/avatar',upload[_0xf9a3('0x44')](_0xf9a3('0x45')),controller[_0xf9a3('0x46')]);router['post']('/:id/login',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x47')]);router[_0xf9a3('0x3a')]('/:id/logout',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x48')]);router[_0xf9a3('0x3a')](_0xf9a3('0x49'),auth[_0xf9a3('0x9')](),controller['pause']);router[_0xf9a3('0x3a')]('/:id/unpause',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x4a')]);router[_0xf9a3('0x3a')](_0xf9a3('0x27'),auth[_0xf9a3('0x9')](),controller['addTeams']);router[_0xf9a3('0x3a')](_0xf9a3('0x4b'),auth['isAuthenticated'](),controller['addChatInteractions']);router['post'](_0xf9a3('0x4c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x4d')]);router[_0xf9a3('0x3a')](_0xf9a3('0x4e'),auth[_0xf9a3('0x9')](),controller['addFaxInteractions']);router[_0xf9a3('0x3a')](_0xf9a3('0x4f'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x50')]);router[_0xf9a3('0x3a')](_0xf9a3('0x51'),auth[_0xf9a3('0x9')](),controller['addOpenchannelInteractions']);router[_0xf9a3('0x3a')](_0xf9a3('0x52'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x53')]);router[_0xf9a3('0x3a')](_0xf9a3('0x2e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x54')]);router[_0xf9a3('0x3a')]('/:id/mail_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x55')]);router['post'](_0xf9a3('0x31'),auth['isAuthenticated'](),controller[_0xf9a3('0x56')]);router['post'](_0xf9a3('0x57'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x58')]);router[_0xf9a3('0x3a')](_0xf9a3('0x59'),auth[_0xf9a3('0x9')](),controller['addChatWebsites']);router[_0xf9a3('0x3a')](_0xf9a3('0x5a'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x5b')]);router[_0xf9a3('0x3a')](_0xf9a3('0x5c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x5d')]);router[_0xf9a3('0x3a')](_0xf9a3('0x5e'),auth['isAuthenticated'](),controller['createApiKey']);router['put']('/:id',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x5f')]);router[_0xf9a3('0x60')](_0xf9a3('0x61'),auth[_0xf9a3('0x9')](),controller['changePassword']);router[_0xf9a3('0x62')](_0xf9a3('0x3e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x63')]);router[_0xf9a3('0x62')](_0xf9a3('0x27'),auth[_0xf9a3('0x9')](),controller['removeTeams']);router[_0xf9a3('0x62')](_0xf9a3('0xf'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x64')]);router[_0xf9a3('0x62')](_0xf9a3('0x4b'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x65')]);router[_0xf9a3('0x62')](_0xf9a3('0x4c'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x66')]);router[_0xf9a3('0x62')](_0xf9a3('0x4e'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x67')]);router[_0xf9a3('0x62')](_0xf9a3('0x4f'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x68')]);router['delete'](_0xf9a3('0x51'),auth['isAuthenticated'](),controller[_0xf9a3('0x69')]);router[_0xf9a3('0x62')](_0xf9a3('0x52'),auth['isAuthenticated'](),controller['removeWhatsappInteractions']);router['delete']('/:id/fax_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6a')]);router['delete']('/:id/mail_accounts',auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6b')]);router[_0xf9a3('0x62')](_0xf9a3('0x31'),auth['isAuthenticated'](),controller[_0xf9a3('0x6c')]);router[_0xf9a3('0x62')](_0xf9a3('0x57'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6d')]);router[_0xf9a3('0x62')]('/:id/chat_websites',auth['isAuthenticated'](),controller[_0xf9a3('0x6e')]);router['delete'](_0xf9a3('0x5a'),auth[_0xf9a3('0x9')](),controller[_0xf9a3('0x6f')]);router[_0xf9a3('0x62')](_0xf9a3('0x5c'),auth['isAuthenticated'](),controller['removeSquareProjects']);router['delete']('/:id/api_key',auth[_0xf9a3('0x9')](),controller['removeApiKey']);module[_0xf9a3('0x70')]=router;
\ No newline at end of file
index 12ba22d..94c9e60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36bb=['nonat','outgoing','force_rport,comedia','nat','split','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\x22gsm\x22]','insecure','never','\x22\x22\x20<>','always','refuse','originate','uas','fingerprint','certificate','active','actpass','update','update,nonat','DATE','showWebBar','get','transport','wss','avpf','dtlsenable','dtlsverify','dtlscertfile','dtlsprivatekey','rtcp_mux','dtlssetup','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','TEXT','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blocked','blockedAt','UNSIGNED','sequelize','moment','util','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','dynamic','friend','peer','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','inband','auto','yes'];(function(_0x5ba298,_0x349fe8){var _0x49478b=function(_0x49249d){while(--_0x49249d){_0x5ba298['push'](_0x5ba298['shift']());}};_0x49478b(++_0x349fe8);}(_0x36bb,0xe6));var _0xb36b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36bb[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb36b('0x0'));var moment=require(_0xb36b('0x1'));var util=require(_0xb36b('0x2'));var _=require('lodash');module[_0xb36b('0x3')]={'name':{'type':Sequelize[_0xb36b('0x4')],'allowNull':![],'unique':_0xb36b('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x4003b8){this[_0xb36b('0x6')](_0xb36b('0x5'),_0x4003b8);this[_0xb36b('0x6')](_0xb36b('0x7'),_0x4003b8);},'comment':_0xb36b('0x8')},'fullname':{'type':Sequelize[_0xb36b('0x4')],'allowNull':![],'set':function(_0x181f45){this[_0xb36b('0x6')](_0xb36b('0x9'),_0x181f45);this[_0xb36b('0x6')](_0xb36b('0xa'),util[_0xb36b('0xb')](_0xb36b('0xc'),_0x181f45,this[_0xb36b('0xd')](_0xb36b('0xe'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xb36b('0x4')],'allowNull':![],'unique':_0xb36b('0xf'),'validate':{'isEmail':!![]},'set':function(_0x2bd78b){if(_0x2bd78b){this['setDataValue'](_0xb36b('0xf'),_0x2bd78b[_0xb36b('0x10')]());}}},'role':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x12'),_0xb36b('0x13'),_0xb36b('0x14'),_0xb36b('0x15')),'allowNull':![]},'password':{'type':Sequelize[_0xb36b('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0xb36b('0x4')],'defaultValue':_0xb36b('0x16')},'internal':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':![],'unique':'internal','set':function(_0x1aef0b){this['setDataValue']('internal',_0x1aef0b);this[_0xb36b('0x6')](_0xb36b('0x18'),_0x1aef0b);this[_0xb36b('0x6')](_0xb36b('0xa'),util[_0xb36b('0xb')](_0xb36b('0xc'),this['getDataValue'](_0xb36b('0x9')),_0x1aef0b));}},'salt':{'type':Sequelize[_0xb36b('0x4')]},'phone':{'type':Sequelize[_0xb36b('0x4')]},'mobile':{'type':Sequelize[_0xb36b('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0xb36b('0x4')]},'userpic':{'type':Sequelize[_0xb36b('0x4')]},'city':{'type':Sequelize[_0xb36b('0x4')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0xb36b('0x1a')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0xb36b('0x17')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0xb36b('0x17')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![],'defaultValue':_0xb36b('0x1b')},'ipaddr':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0xb36b('0x17')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM'](_0xb36b('0x1c'),_0xb36b('0x13'),_0xb36b('0x1d')),'allowNull':!![],'defaultValue':_0xb36b('0x1c')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0xb36b('0x11')]('ALLOWED_NOT_SCREENED',_0xb36b('0x1e'),_0xb36b('0x1f'),'ALLOWED',_0xb36b('0x20'),_0xb36b('0x21'),_0xb36b('0x22'),_0xb36b('0x23')),'allowNull':!![]},'deny':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![],'defaultValue':_0xb36b('0x24'),'set':function(_0x474165){this['setDataValue']('transport',_0x474165?_0x474165[_0xb36b('0x25')](','):null);},'get':function(){return this[_0xb36b('0xd')]('transport')?this[_0xb36b('0xd')]('transport')['split'](','):null;},'comment':_0xb36b('0x26')},'dtmfmode':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x27'),'info','shortinfo',_0xb36b('0x28'),_0xb36b('0x29')),'allowNull':!![],'defaultValue':_0xb36b('0x27')},'directmedia':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no',_0xb36b('0x2b'),'update',_0xb36b('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'nat':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![],'defaultValue':_0xb36b('0x2d'),'set':function(_0x2ac11f){this[_0xb36b('0x6')]('nat',_0x2ac11f?_0x2ac11f[_0xb36b('0x25')](','):null);},'get':function(){return this[_0xb36b('0xd')](_0xb36b('0x2e'))?this['getDataValue'](_0xb36b('0x2e'))[_0xb36b('0x2f')](','):null;},'comment':_0xb36b('0x30')},'callgroup':{'type':Sequelize[_0xb36b('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xb36b('0x4')]},'language':{'type':Sequelize[_0xb36b('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xb36b('0x4')]},'disallow':{'type':Sequelize[_0xb36b('0x4')],'allowNull':![],'defaultValue':_0xb36b('0x31')},'allow':{'type':Sequelize[_0xb36b('0x4')],'allowNull':![],'defaultValue':_0xb36b('0x32'),'set':function(_0x5911cc){this['setDataValue']('allow',_0x5911cc?_0x5911cc[_0xb36b('0x25')](';'):_0xb36b('0x32'));},'get':function(){return this[_0xb36b('0xd')]('allow')?this[_0xb36b('0xd')](_0xb36b('0x33'))[_0xb36b('0x2f')](';'):null;},'comment':_0xb36b('0x34')},'autoframing':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![],'set':function(_0x4667a3){this[_0xb36b('0x6')](_0xb36b('0x35'),_0x4667a3?_0x4667a3['join'](','):null);},'get':function(){return this[_0xb36b('0xd')]('insecure')?this['getDataValue'](_0xb36b('0x35'))[_0xb36b('0x2f')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no',_0xb36b('0x36')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0xb36b('0x11')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0xb36b('0x37')},'amaflags':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':_0xb36b('0x2a')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM'](_0xb36b('0x2a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0xb36b('0x2a'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no',_0xb36b('0x38')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0xb36b('0x11')]('accept',_0xb36b('0x39'),_0xb36b('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM']('uac','uas'),'allowNull':!![],'defaultValue':_0xb36b('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':_0xb36b('0x2a')},'keepalive':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize['STRING'],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0xb36b('0x11')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no',_0xb36b('0x3c'),_0xb36b('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x3e'),'passive',_0xb36b('0x3f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0xb36b('0x17')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0xb36b('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no','nonat',_0xb36b('0x40'),_0xb36b('0x41')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0xb36b('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0xb36b('0x42')]},'passwordResetAt':{'type':Sequelize[_0xb36b('0x42')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0,'set':function(_0x4eda64){this['setDataValue'](_0xb36b('0x43'),_0x4eda64);var _0x26a6ee=this[_0xb36b('0x44')]({'plain':!![]});switch(_0x4eda64){case 0x0:case 0x1:var _0x4b6b21=_0x26a6ee[_0xb36b('0x45')]?_['isArray'](_0x26a6ee['transport'])?_0x26a6ee['transport'][_0xb36b('0x25')]():_0x26a6ee[_0xb36b('0x45')]:_0xb36b('0x24');if(_0x4b6b21===_0xb36b('0x46')){_0x4b6b21=_0xb36b('0x24');}this[_0xb36b('0x6')](_0xb36b('0x45'),_0x4b6b21);this[_0xb36b('0x6')]('encryption','no');this['setDataValue'](_0xb36b('0x47'),null);this['setDataValue']('force_avp',null);this[_0xb36b('0x6')]('icesupport',null);this[_0xb36b('0x6')](_0xb36b('0x48'),null);this[_0xb36b('0x6')](_0xb36b('0x49'),null);this[_0xb36b('0x6')]('dtlssetup',null);this[_0xb36b('0x6')](_0xb36b('0x4a'),null);this[_0xb36b('0x6')](_0xb36b('0x4b'),null);this[_0xb36b('0x6')](_0xb36b('0x4c'),'no');break;case 0x2:this['setDataValue'](_0xb36b('0x45'),'wss');this[_0xb36b('0x6')]('encryption',_0xb36b('0x2a'));this[_0xb36b('0x6')](_0xb36b('0x47'),_0xb36b('0x2a'));this[_0xb36b('0x6')]('force_avp',_0xb36b('0x2a'));this[_0xb36b('0x6')]('icesupport',_0xb36b('0x2a'));this['setDataValue'](_0xb36b('0x48'),_0xb36b('0x2a'));this[_0xb36b('0x6')](_0xb36b('0x49'),'no');this[_0xb36b('0x6')](_0xb36b('0x4d'),_0xb36b('0x3f'));this[_0xb36b('0x6')]('dtlscertfile',_0x26a6ee[_0xb36b('0x4a')]||_0xb36b('0x4e'));this['setDataValue']('dtlsprivatekey',_0x26a6ee[_0xb36b('0x4b')]||_0xb36b('0x4f'));this[_0xb36b('0x6')](_0xb36b('0x4c'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0xb36b('0x50')],'set':function(_0x45c81b){this['setDataValue'](_0xb36b('0x51'),_0x45c81b?_0x45c81b[_0xb36b('0x25')](','):[]);},'get':function(){return this[_0xb36b('0xd')](_0xb36b('0x51'))?_[_0xb36b('0x52')](this['getDataValue'](_0xb36b('0x51'))[_0xb36b('0x2f')](','),function(_0x3fa0de){return parseInt(_0x3fa0de,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0xb36b('0x4')]},'phoneBarUnconditional':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0xb36b('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0xb36b('0x11')](_0xb36b('0x2a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0xb36b('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xb36b('0xd')]('phoneBarEnableScreenRecordingByAgent')?this[_0xb36b('0xd')](_0xb36b('0x53')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0xb36b('0x4')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![],'set':function(_0x1b9801){if(typeof _0x1b9801===_0xb36b('0x54')){var _0x21a08e=_0x1b9801==='1'?!![]:_0x1b9801==='0'?![]:_0x1b9801===_0xb36b('0x55')?!![]:_0x1b9801===_0xb36b('0x56')?![]:![];this[_0xb36b('0x6')]('screenrecording',_0x21a08e);}else{this['setDataValue'](_0xb36b('0x57'),_0x1b9801);}}},'blocked':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![],'set':function(_0x378a54){this[_0xb36b('0x6')](_0xb36b('0x58'),_0x378a54);if(_0x378a54===!![]){this[_0xb36b('0x6')]('blockedAt',moment());this[_0xb36b('0x6')]('loginAttempts',0x0);}else{this[_0xb36b('0x6')](_0xb36b('0x59'),null);}}},'blockedAt':{'type':Sequelize[_0xb36b('0x42')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0xb36b('0x17')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0xb36b('0x17')](0x5)[_0xb36b('0x5a')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xb36b('0x19')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2f74=['originate','uac','uas','fingerprint','certificate','passive','actpass','update,nonat','TEXT','showWebBar','wss','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','loginAttempts','blockedAt','sequelize','util','lodash','exports','STRING','name','setDataValue','fullname','callerid','format','\x22%s\x22\x20<%s>','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','getDataValue','BOOLEAN','DATE','INTEGER','dynamic','peer','friend','from-sip','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','join','transport','split','rfc2833','info','shortinfo','inband','auto','nonat','update','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','yes','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','\x22\x22\x20<>','always','accept','refuse'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0x2f74,0x7b));var _0x42f7=function(_0x4941c6,_0x3ca9f8){_0x4941c6=_0x4941c6-0x0;var _0x4d3654=_0x2f74[_0x4941c6];return _0x4d3654;};'use strict';var Sequelize=require(_0x42f7('0x0'));var moment=require('moment');var util=require(_0x42f7('0x1'));var _=require(_0x42f7('0x2'));module[_0x42f7('0x3')]={'name':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'unique':_0x42f7('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3fcf64){this[_0x42f7('0x6')](_0x42f7('0x5'),_0x3fcf64);this['setDataValue']('defaultuser',_0x3fcf64);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'set':function(_0x1cb6e0){this[_0x42f7('0x6')](_0x42f7('0x7'),_0x1cb6e0);this[_0x42f7('0x6')](_0x42f7('0x8'),util[_0x42f7('0x9')](_0x42f7('0xa'),_0x1cb6e0,this['getDataValue'](_0x42f7('0xb'))));}},'alias':{'type':Sequelize[_0x42f7('0x4')]},'email':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'unique':_0x42f7('0xc'),'validate':{'isEmail':!![]},'set':function(_0x1f56d2){if(_0x1f56d2){this[_0x42f7('0x6')]('email',_0x1f56d2[_0x42f7('0xd')]());}}},'role':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0xf'),_0x42f7('0x10'),_0x42f7('0x11'),_0x42f7('0x12')),'allowNull':![]},'password':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x42f7('0x4')],'defaultValue':'local'},'internal':{'type':Sequelize['INTEGER'](0xb),'allowNull':![],'unique':_0x42f7('0xb'),'set':function(_0xc274ff){this[_0x42f7('0x6')](_0x42f7('0xb'),_0xc274ff);this[_0x42f7('0x6')]('accountcode',_0xc274ff);this[_0x42f7('0x6')]('callerid',util[_0x42f7('0x9')](_0x42f7('0xa'),this[_0x42f7('0x13')](_0x42f7('0x7')),_0xc274ff));}},'salt':{'type':Sequelize[_0x42f7('0x4')]},'phone':{'type':Sequelize[_0x42f7('0x4')]},'mobile':{'type':Sequelize[_0x42f7('0x4')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize[_0x42f7('0x4')]},'userpic':{'type':Sequelize[_0x42f7('0x4')]},'city':{'type':Sequelize[_0x42f7('0x4')]},'country':{'type':Sequelize[_0x42f7('0x4')]},'online':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x42f7('0x15')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x42f7('0x15')]},'chatCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x42f7('0x16')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x42f7('0x16')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'host':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![],'defaultValue':_0x42f7('0x17')},'ipaddr':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'port':{'type':Sequelize[_0x42f7('0x16')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend',_0x42f7('0x10'),_0x42f7('0x18')),'allowNull':!![],'defaultValue':_0x42f7('0x19')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x42f7('0x1a')},'callingpres':{'type':Sequelize[_0x42f7('0xe')]('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0x42f7('0x1b'),_0x42f7('0x1c'),_0x42f7('0x1d'),_0x42f7('0x1e'),_0x42f7('0x1f'),_0x42f7('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'permit':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'secret':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![],'defaultValue':_0x42f7('0x21'),'set':function(_0xd26ccf){this[_0x42f7('0x6')]('transport',_0xd26ccf?_0xd26ccf[_0x42f7('0x22')](','):null);},'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x23'))?this[_0x42f7('0x13')]('transport')[_0x42f7('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x25'),_0x42f7('0x26'),_0x42f7('0x27'),_0x42f7('0x28'),_0x42f7('0x29')),'allowNull':!![],'defaultValue':_0x42f7('0x25')},'directmedia':{'type':Sequelize['ENUM']('yes','no',_0x42f7('0x2a'),_0x42f7('0x2b'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'force_rport,comedia','set':function(_0x48b79e){this[_0x42f7('0x6')]('nat',_0x48b79e?_0x48b79e[_0x42f7('0x22')](','):null);},'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x2c'))?this[_0x42f7('0x13')](_0x42f7('0x2c'))['split'](','):null;},'comment':_0x42f7('0x2d')},'callgroup':{'type':Sequelize[_0x42f7('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0x42f7('0x4')]},'language':{'type':Sequelize[_0x42f7('0x4')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x42f7('0x4')]},'disallow':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'defaultValue':_0x42f7('0x2e')},'allow':{'type':Sequelize[_0x42f7('0x4')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x3037f8){this['setDataValue'](_0x42f7('0x2f'),_0x3037f8?_0x3037f8[_0x42f7('0x22')](';'):_0x42f7('0x30'));},'get':function(){return this['getDataValue'](_0x42f7('0x2f'))?this['getDataValue'](_0x42f7('0x2f'))[_0x42f7('0x24')](';'):null;},'comment':_0x42f7('0x31')},'autoframing':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![],'set':function(_0x5f2365){this[_0x42f7('0x6')]('insecure',_0x5f2365?_0x5f2365[_0x42f7('0x22')](','):null);},'get':function(){return this['getDataValue'](_0x42f7('0x33'))?this[_0x42f7('0x13')]('insecure')[_0x42f7('0x24')](','):null;},'comment':_0x42f7('0x34')},'trustrpid':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x42f7('0x35')},'amaflags':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':_0x42f7('0x32')},'busylevel':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'template':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no',_0x42f7('0x36')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x37'),_0x42f7('0x38'),_0x42f7('0x39')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize['ENUM'](_0x42f7('0x3a'),_0x42f7('0x3b')),'allowNull':!![],'defaultValue':_0x42f7('0x3b')},'t38pt_usertpsource':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING'],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x42f7('0x16')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no',_0x42f7('0x3c'),_0x42f7('0x3d')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize['ENUM']('active',_0x42f7('0x3e'),_0x42f7('0x3f')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING'],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x42f7('0xe')]('yes','no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x42f7('0xe')](_0x42f7('0x32'),'no',_0x42f7('0x2a'),_0x42f7('0x2b'),_0x42f7('0x40')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x42f7('0x4')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x42f7('0x15')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x42f7('0x41')]},'showWebBar':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0,'set':function(_0x98a670){this[_0x42f7('0x6')](_0x42f7('0x42'),_0x98a670);var _0x3affa4=this['get']({'plain':!![]});switch(_0x98a670){case 0x0:case 0x1:var _0x419be3=_0x3affa4[_0x42f7('0x23')]?_['isArray'](_0x3affa4[_0x42f7('0x23')])?_0x3affa4[_0x42f7('0x23')][_0x42f7('0x22')]():_0x3affa4[_0x42f7('0x23')]:'udp';if(_0x419be3===_0x42f7('0x43')){_0x419be3='udp';}this[_0x42f7('0x6')](_0x42f7('0x23'),_0x419be3);this['setDataValue'](_0x42f7('0x44'),'no');this[_0x42f7('0x6')](_0x42f7('0x45'),null);this[_0x42f7('0x6')](_0x42f7('0x46'),null);this[_0x42f7('0x6')](_0x42f7('0x47'),null);this['setDataValue'](_0x42f7('0x48'),null);this[_0x42f7('0x6')](_0x42f7('0x49'),null);this['setDataValue'](_0x42f7('0x4a'),null);this['setDataValue'](_0x42f7('0x4b'),null);this['setDataValue']('dtlsprivatekey',null);this['setDataValue'](_0x42f7('0x4c'),'no');break;case 0x2:this['setDataValue'](_0x42f7('0x23'),_0x42f7('0x43'));this['setDataValue']('encryption',_0x42f7('0x32'));this['setDataValue'](_0x42f7('0x45'),'yes');this[_0x42f7('0x6')]('force_avp',_0x42f7('0x32'));this[_0x42f7('0x6')](_0x42f7('0x47'),_0x42f7('0x32'));this[_0x42f7('0x6')](_0x42f7('0x48'),_0x42f7('0x32'));this['setDataValue'](_0x42f7('0x49'),'no');this[_0x42f7('0x6')](_0x42f7('0x4a'),_0x42f7('0x3f'));this['setDataValue'](_0x42f7('0x4b'),_0x3affa4[_0x42f7('0x4b')]||_0x42f7('0x4d'));this['setDataValue'](_0x42f7('0x4e'),_0x3affa4[_0x42f7('0x4e')]||_0x42f7('0x4f'));this['setDataValue'](_0x42f7('0x4c'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x42f7('0x41')],'set':function(_0x390f27){this[_0x42f7('0x6')](_0x42f7('0x50'),_0x390f27?_0x390f27[_0x42f7('0x22')](','):[]);},'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x50'))?_[_0x42f7('0x51')](this[_0x42f7('0x13')]('permissions')['split'](','),function(_0x42259e){return parseInt(_0x42259e,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x42f7('0x4')]},'phoneBarNoReplyNumber':{'type':Sequelize['STRING']},'phoneBarBusyNumber':{'type':Sequelize[_0x42f7('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize['STRING'],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x42f7('0x32'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x42f7('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x42f7('0x52')],'get':function(){return this[_0x42f7('0x13')](_0x42f7('0x53'))?this['getDataValue'](_0x42f7('0x53')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x42f7('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![],'set':function(_0x28643d){if(typeof _0x28643d===_0x42f7('0x54')){var _0x53d029=_0x28643d==='1'?!![]:_0x28643d==='0'?![]:_0x28643d===_0x42f7('0x55')?!![]:_0x28643d===_0x42f7('0x56')?![]:![];this[_0x42f7('0x6')](_0x42f7('0x57'),_0x53d029);}else{this[_0x42f7('0x6')](_0x42f7('0x57'),_0x28643d);}}},'blocked':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![],'set':function(_0x3e3b1e){this[_0x42f7('0x6')]('blocked',_0x3e3b1e);if(_0x3e3b1e===!![]){this[_0x42f7('0x6')]('blockedAt',moment());this[_0x42f7('0x6')](_0x42f7('0x58'),0x0);}else{this[_0x42f7('0x6')](_0x42f7('0x59'),null);}}},'blockedAt':{'type':Sequelize[_0x42f7('0x15')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x42f7('0x16')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x42f7('0x16')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x42f7('0x14')],'defaultValue':!![]}};
\ No newline at end of file
index ad484ad..7b45899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7894=['Users','user','Agents','agent','telephone','filter','ignore','map','value','includes','find','name','UserProfileResource','end','send','index','User','rawAttributes','fieldName','type','key','password','getOptions','where','query','includeAll','include','attributes','push','rows','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','whatsapp','all','show','params','model','keys','salt','filters','intersection','fields','merge','options','body','describe','addContacts','ids','omit','internal','Setting','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','SELECT','length','isNil','from','voicemail','mailbox','VoiceMail','fullname','permissions','101','102','103','113','110','104','106','107','108','109','100','111','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','checkUserLimits','settingsEnabled','UserProfileSection','Telephones','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','findAll','userProfileId','compact','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','toLowerCase','Queues','spread','capitalize','voice','VoiceQueue','format','penalty','UserVoiceQueueRt','upsert','removeQueues','Unknown\x20channel','remove','isArray','emit','Queue:remove','QueueId','destroy','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','FaxOpenTabs','FAX','createdAt','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','WHATSAPP','getContacts','CmContact','order','sort','hasOwnProperty','CmList','Tag','color','tag','nolimit','getQueues','Queue','pick','getVoiceQueuesRt','ChatGroup','getGroups','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','OpenchannelInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','mobile','LOCAL/%s@from-sip/n','intrf','SIP/%s','user:%s','user:forcelogout','headers','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','concat','isMiddleware','resolve','logout','pause','QueuePause','updateAttributes','getChannels','DEFAULT\x20PAUSE','unpause','chatPause','openchannelPause','smsPause','whatsapppause','pauseType','%s%s','manual','Team','getTeams','addTeams','Voice','getChatQueues','setDataValue','Chat','getSmsQueues','Sms','Whatsapp','getFaxQueues','Fax','flatten','transaction','getDataValue','Queue:save','removeTeams','getMailQueues','getWhatsappQueues','getOpenchannelQueues','Openchannel','removeAgent','getLists','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','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','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','MailAccount','addMailAccounts','removeMailAccounts','OpenchannelAccount','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','CmHopper','$and','$or','$gt','$gte','$lt','$ne','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','firstName','lastName','Contact','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','apiKeyNonce','API\x20key\x20not\x20available','whoami','getPresence','teams','queues','isEmpty','inbound','getAgents','lower','col','asc','desc','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','offline','idle','unavailable','ringing','voiceStatus','busy','slice','select','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','moment','bluebird','util','path','lodash','squel','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','socket.io-emitter','register','defaults','redis','localhost','http','then','info','User,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','update','get','role','admin'];(function(_0x50063c,_0x5149c7){var _0x30782c=function(_0x47a166){while(--_0x47a166){_0x50063c['push'](_0x50063c['shift']());}};_0x30782c(++_0x5149c7);}(_0x7894,0x170));var _0x4789=function(_0xd4c668,_0x1d960a){_0xd4c668=_0xd4c668-0x0;var _0x79af58=_0x7894[_0xd4c668];return _0x79af58;};'use strict';var moment=require(_0x4789('0x0'));var BPromise=require(_0x4789('0x1'));var util=require(_0x4789('0x2'));var path=require(_0x4789('0x3'));var fs=require('fs');var _=require(_0x4789('0x4'));var squel=require(_0x4789('0x5'));var jayson=require('jayson/promise');var Redis=require(_0x4789('0x6'));var authService=require(_0x4789('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x4789('0x8'))(_0x4789('0x9'));var utils=require(_0x4789('0xa'));var config=require(_0x4789('0xb'));var licenseUtil=require(_0x4789('0xc'));var db=require(_0x4789('0xd'))['db'];var socket=require(_0x4789('0xe'))(new Redis(config['redis']));require('./user.socket')[_0x4789('0xf')](socket);config['redis']=_[_0x4789('0x10')](config[_0x4789('0x11')],{'host':_0x4789('0x12'),'port':0x18eb});var client=jayson['client'][_0x4789('0x13')]({'port':0x232a});var values;function respondWithRpcPromise(_0x515d68,_0x231db9,_0x335f0f,_0x31dda1){return new BPromise(function(_0x4c30bd,_0x4db727){var _0x216c80=_0x31dda1||client;return _0x216c80['request'](_0x515d68,_0x335f0f)[_0x4789('0x14')](function(_0x58743a){logger[_0x4789('0x15')](_0x4789('0x16'),_0x231db9,'request\x20sent');logger[_0x4789('0x17')]('User,\x20%s,\x20%s,\x20%s',_0x231db9,_0x4789('0x18'),JSON[_0x4789('0x19')](_0x58743a));if(_0x58743a[_0x4789('0x1a')]){if(_0x58743a['error'][_0x4789('0x1b')]===0x1f4){logger[_0x4789('0x1a')]('User,\x20%s,\x20%s',_0x231db9,_0x58743a[_0x4789('0x1a')]['message']);return _0x4db727(_0x58743a[_0x4789('0x1a')][_0x4789('0x1c')]);}logger['error'](_0x4789('0x16'),_0x231db9,_0x58743a['error'][_0x4789('0x1c')]);return _0x4c30bd(_0x58743a['error'][_0x4789('0x1c')]);}else{logger[_0x4789('0x15')]('User,\x20%s,\x20%s',_0x231db9,_0x4789('0x18'));_0x4c30bd(_0x58743a[_0x4789('0x1d')][_0x4789('0x1c')]);}})[_0x4789('0x1e')](function(_0x2a9471){logger[_0x4789('0x1a')](_0x4789('0x16'),_0x231db9,_0x2a9471);_0x4db727(_0x2a9471);});});}function respondWithStatusCode(_0x10155a,_0x117a1c){_0x117a1c=_0x117a1c||0xcc;return function(_0xcb64f9){if(_0xcb64f9){return _0x10155a[_0x4789('0x1f')](_0x117a1c);}return _0x10155a[_0x4789('0x20')](_0x117a1c)['end']();};}function respondWithResult(_0x230c8b,_0x7d003b){_0x7d003b=_0x7d003b||0xc8;return function(_0x5c1166){if(_0x5c1166){return _0x230c8b[_0x4789('0x20')](_0x7d003b)[_0x4789('0x21')](_0x5c1166);}};}function respondWithFilteredResult(_0x520eed,_0xff56dd){return function(_0x1ca6ca){if(_0x1ca6ca){var _0x54d9c1=typeof _0xff56dd[_0x4789('0x22')]==='undefined'&&typeof _0xff56dd[_0x4789('0x23')]===_0x4789('0x24');var _0x307b90=_0x1ca6ca[_0x4789('0x25')];var _0x435016=_0x54d9c1?0x0:_0xff56dd[_0x4789('0x22')];var _0x182958=_0x54d9c1?_0x1ca6ca[_0x4789('0x25')]:_0xff56dd[_0x4789('0x22')]+_0xff56dd[_0x4789('0x23')];var _0x29a4bb;if(_0x182958>=_0x307b90){_0x182958=_0x307b90;_0x29a4bb=0xc8;}else{_0x29a4bb=0xce;}_0x520eed[_0x4789('0x20')](_0x29a4bb);return _0x520eed[_0x4789('0x26')](_0x4789('0x27'),_0x435016+'-'+_0x182958+'/'+_0x307b90)[_0x4789('0x21')](_0x1ca6ca);}return null;};}function saveUpdates(_0x3095a1){return function(_0xa0f67e){if(_0xa0f67e){return _0xa0f67e[_0x4789('0x28')](_0x3095a1)['then'](function(_0x59de58){return _0x59de58;});}return null;};}function removeEntity(_0x3d414e){return function(_0x5c6385){if(_0x5c6385){return _0x5c6385['destroy']()['then'](function(){var _0xab907b=_0x5c6385[_0x4789('0x29')]({'plain':!![]});if(_0xab907b[_0x4789('0x2a')]===_0x4789('0x2b'))return;var _0x17e699=[{'name':_0x4789('0x2c'),'value':_0x4789('0x2d'),'ignore':!![]},{'name':_0x4789('0x2e'),'value':_0x4789('0x2f'),'ignore':![]},{'name':'Telephones','value':_0x4789('0x30'),'ignore':![]}];var _0x7ba45a=_(_0x17e699)[_0x4789('0x31')](_0x4789('0x32'))[_0x4789('0x33')](_0x4789('0x34'))[_0x4789('0x34')]();if(_[_0x4789('0x35')](_0x7ba45a,_0xab907b[_0x4789('0x2a')])){return;}var _0x409af2=_[_0x4789('0x36')](_0x17e699,[_0x4789('0x34'),_0xab907b[_0x4789('0x2a')]])[_0x4789('0x37')];return db[_0x4789('0x38')]['destroy']({'where':{'type':_0x409af2,'resourceId':_0xab907b['id']}})[_0x4789('0x14')](function(){return _0x5c6385;});})[_0x4789('0x14')](function(){_0x3d414e[_0x4789('0x20')](0xcc)[_0x4789('0x39')]();});}};}function handleEntityNotFound(_0x45785a){return function(_0xbb8ab2){if(!_0xbb8ab2){_0x45785a[_0x4789('0x1f')](0x194);}return _0xbb8ab2;};}function handleError(_0x5486c6,_0x39e379){_0x39e379=_0x39e379||0x1f4;return function(_0xc697bb){logger['error'](_0xc697bb['stack']);if(_0xc697bb[_0x4789('0x37')]){delete _0xc697bb[_0x4789('0x37')];}_0x5486c6[_0x4789('0x20')](_0x39e379)[_0x4789('0x3a')](_0xc697bb);};}exports[_0x4789('0x3b')]=function(_0x164940,_0x765afd){var _0x54dbeb={},_0x5c2314={'count':0x0,'rows':[]};var _0x5e669b=_(db[_0x4789('0x3c')][_0x4789('0x3d')])[_0x4789('0x33')](function(_0x41f062){return{'name':_0x41f062[_0x4789('0x3e')],'type':_0x41f062[_0x4789('0x3f')][_0x4789('0x40')]};})['filter'](function(_0xcf3216){return!_[_0x4789('0x35')]([_0x4789('0x41'),'salt'],_0xcf3216[_0x4789('0x37')]);})[_0x4789('0x34')]();_0x54dbeb=qs[_0x4789('0x42')](_0x5e669b,_0x164940);var _0x35cb7e={'where':_0x54dbeb[_0x4789('0x43')]};return db['User'][_0x4789('0x25')](_0x35cb7e)['then'](function(_0xaeb49e){_0x5c2314[_0x4789('0x25')]=_0xaeb49e;if(_0x164940[_0x4789('0x44')][_0x4789('0x45')]){_0x54dbeb[_0x4789('0x46')]=[{'all':!![]}];}if(!_['includes'](_0x54dbeb[_0x4789('0x47')],'id')){_0x54dbeb['attributes'][_0x4789('0x48')]('id');}return db[_0x4789('0x3c')]['findAll'](_0x54dbeb);})[_0x4789('0x14')](function(_0x4c30e8){_0x5c2314[_0x4789('0x49')]=_0x4c30e8;if(_0x164940[_0x4789('0x44')][_0x4789('0x4a')]===_0x4789('0x4b')){var _0x4f6c3b=[];for(var _0x955032=0x0;_0x955032<_0x5c2314[_0x4789('0x49')]['length'];_0x955032++){_0x4f6c3b[_0x4789('0x48')](get_open_tabs(_0x4789('0x4c'),_0x5c2314[_0x4789('0x49')][_0x955032]['dataValues']));_0x4f6c3b['push'](get_open_tabs(_0x4789('0x4d'),_0x5c2314['rows'][_0x955032][_0x4789('0x4e')]));_0x4f6c3b['push'](get_open_tabs(_0x4789('0x4f'),_0x5c2314[_0x4789('0x49')][_0x955032][_0x4789('0x4e')]));_0x4f6c3b[_0x4789('0x48')](get_open_tabs(_0x4789('0x50'),_0x5c2314[_0x4789('0x49')][_0x955032][_0x4789('0x4e')]));_0x4f6c3b['push'](get_open_tabs(_0x4789('0x51'),_0x5c2314[_0x4789('0x49')][_0x955032][_0x4789('0x4e')]));_0x4f6c3b[_0x4789('0x48')](get_open_tabs(_0x4789('0x52'),_0x5c2314[_0x4789('0x49')][_0x955032][_0x4789('0x4e')]));}return BPromise[_0x4789('0x53')](_0x4f6c3b)[_0x4789('0x14')](function(_0xcf3dd5){return _0x5c2314;});}else{return _0x5c2314;}})['then'](respondWithFilteredResult(_0x765afd,_0x54dbeb))[_0x4789('0x1e')](handleError(_0x765afd,null));};exports[_0x4789('0x54')]=function(_0x5a7812,_0x605a12){var _0x46d1ad={'raw':![],'where':{'id':_0x5a7812[_0x4789('0x55')]['id']}},_0x237987={};_0x237987[_0x4789('0x56')]=_['differenceBy'](_[_0x4789('0x57')](db[_0x4789('0x3c')][_0x4789('0x3d')]),[_0x4789('0x41'),_0x4789('0x58')]);_0x237987[_0x4789('0x44')]=_[_0x4789('0x57')](_0x5a7812[_0x4789('0x44')]);_0x237987[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x237987[_0x4789('0x56')],_0x237987['query']);_0x46d1ad[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x237987[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x5a7812[_0x4789('0x44')]['fields']));_0x46d1ad[_0x4789('0x47')]=_0x46d1ad['attributes']['length']?_0x46d1ad[_0x4789('0x47')]:_0x237987[_0x4789('0x56')];if(_0x5a7812[_0x4789('0x44')][_0x4789('0x45')]){_0x46d1ad[_0x4789('0x46')]=[{'all':!![]}];}_0x46d1ad=_[_0x4789('0x5c')]({},_0x46d1ad,_0x5a7812[_0x4789('0x5d')]);if(!_[_0x4789('0x35')](_0x46d1ad['attributes'],'id')){_0x46d1ad[_0x4789('0x47')]['push']('id');}return db['User'][_0x4789('0x36')](_0x46d1ad)['then'](handleEntityNotFound(_0x605a12,null))[_0x4789('0x14')](function(_0x3dac68){var _0x3039b0=[];values=_0x3dac68;if(_0x5a7812['query'][_0x4789('0x4a')]==='true'){_0x3039b0[_0x4789('0x48')](get_open_tabs('chat',_0x3dac68[_0x4789('0x4e')]));_0x3039b0[_0x4789('0x48')](get_open_tabs(_0x4789('0x4d'),_0x3dac68[_0x4789('0x4e')]));_0x3039b0[_0x4789('0x48')](get_open_tabs(_0x4789('0x51'),_0x3dac68[_0x4789('0x4e')]));_0x3039b0[_0x4789('0x48')](get_open_tabs(_0x4789('0x52'),_0x3dac68['dataValues']));_0x3039b0[_0x4789('0x48')](get_open_tabs('fax',_0x3dac68[_0x4789('0x4e')]));_0x3039b0[_0x4789('0x48')](get_open_tabs('mail',_0x3dac68[_0x4789('0x4e')]));return BPromise[_0x4789('0x53')](_0x3039b0);}else{return values;}})[_0x4789('0x14')](function(_0x3b0e6c){return values;})[_0x4789('0x14')](respondWithResult(_0x605a12,null))[_0x4789('0x1e')](handleError(_0x605a12,null));};exports[_0x4789('0x28')]=function(_0x10cf2b,_0x2e7126){if(_0x10cf2b[_0x4789('0x5e')]['id']){delete _0x10cf2b[_0x4789('0x5e')]['id'];}delete _0x10cf2b[_0x4789('0x5e')]['role'];return db['User'][_0x4789('0x36')]({'where':{'id':_0x10cf2b['params']['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x2e7126,null))[_0x4789('0x14')](saveUpdates(_0x10cf2b[_0x4789('0x5e')],null))[_0x4789('0x14')](respondWithResult(_0x2e7126,null))[_0x4789('0x1e')](handleError(_0x2e7126,null));};exports[_0x4789('0x5f')]=function(_0x1c231e,_0x451bcd){return db['User'][_0x4789('0x5f')]()[_0x4789('0x14')](respondWithResult(_0x451bcd,null))['catch'](handleError(_0x451bcd,null));};exports[_0x4789('0x60')]=function(_0x2ab2e7,_0x39f4b1){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x2ab2e7[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x39f4b1,null))['then'](function(_0x2df571){if(_0x2df571){return _0x2df571[_0x4789('0x60')](_0x2ab2e7[_0x4789('0x5e')][_0x4789('0x61')],_[_0x4789('0x62')](_0x2ab2e7[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x39f4b1,null))[_0x4789('0x1e')](handleError(_0x39f4b1,null));};function validateUser(_0x85e7d4){return new BPromise(function(_0x492146,_0x436b54){if(_0x85e7d4[_0x4789('0x63')])return _0x492146(_0x85e7d4);return db[_0x4789('0x64')]['findById'](0x1)[_0x4789('0x14')](function(_0x170b2e){if(_0x170b2e['securePassword'])authService['validatePasswordPattern'](_0x85e7d4['password']);db[_0x4789('0x3c')]['max'](_0x4789('0x63'))[_0x4789('0x14')](function(_0x9a6529){if(_['isNil'](_0x9a6529)){_0x85e7d4[_0x4789('0x63')]=_0x170b2e[_0x4789('0x65')]||0x1;return;}if(_['isNil'](_0x170b2e['min_internal'])||_0x170b2e[_0x4789('0x65')]===_0x9a6529){_0x85e7d4[_0x4789('0x63')]=_0x9a6529+0x1;return;}if(_0x170b2e['min_internal']>_0x9a6529){_0x85e7d4[_0x4789('0x63')]=_0x170b2e['min_internal'];return;}return db[_0x4789('0x66')][_0x4789('0x44')](_0x4789('0x67'),{'type':db[_0x4789('0x66')]['QueryTypes'][_0x4789('0x68')]})[_0x4789('0x14')](function(_0x327003){if(_0x327003&&_0x327003[_0x4789('0x69')]){for(var _0x538855=0x0,_0xe970e1=_0x327003[_0x4789('0x69')];_0x538855<_0xe970e1&&_[_0x4789('0x6a')](_0x85e7d4[_0x4789('0x63')]);_0x538855++){if(_0x170b2e[_0x4789('0x65')]<=_0x327003[_0x538855][_0x4789('0x6b')]){_0x85e7d4[_0x4789('0x63')]=_0x327003[_0x538855][_0x4789('0x6b')];}else if(_0x170b2e[_0x4789('0x65')]>_0x327003[_0x538855][_0x4789('0x6b')]&&_0x170b2e[_0x4789('0x65')]<=_0x327003[_0x538855]['to']){_0x85e7d4['internal']=_0x170b2e['min_internal'];}}}if(_['isNil'](_0x85e7d4['internal'])){_0x85e7d4[_0x4789('0x63')]=_0x9a6529+0x1;}return _0x492146(_0x85e7d4);});});})['catch'](function(_0xf6e010){_0x436b54(_0xf6e010);});});}function updateUser(_0x3920f6){return new BPromise(function(_0x33a766,_0x3f350f){try{if(_0x3920f6[_0x4789('0x6c')]){_0x3920f6[_0x4789('0x6d')]=_0x3920f6['internal'];_0x3920f6[_0x4789('0x6e')]={'mailbox':_0x3920f6[_0x4789('0x63')],'password':_0x3920f6[_0x4789('0x41')],'fullname':_0x3920f6[_0x4789('0x6f')],'email':_0x3920f6['email']};}if(_0x3920f6['role']==='agent'){if(!_0x3920f6[_0x4789('0x70')])_0x3920f6[_0x4789('0x70')]=[_0x4789('0x71'),_0x4789('0x72'),_0x4789('0x73'),_0x4789('0x74'),_0x4789('0x75'),_0x4789('0x76'),'105',_0x4789('0x77'),_0x4789('0x78'),_0x4789('0x79'),_0x4789('0x7a'),_0x4789('0x7b'),_0x4789('0x7c'),_0x4789('0x7d'),_0x4789('0x7e')];}_0x33a766(_0x3920f6);}catch(_0x1871eb){_0x3f350f(_0x1871eb);}});}exports[_0x4789('0x7f')]=function(_0x2785d3,_0x12faef){if(_0x2785d3[_0x4789('0x2d')]['role']===_0x4789('0x2f'))throw new Error(_0x4789('0x80'));if(_0x2785d3[_0x4789('0x5e')][_0x4789('0x2a')]===_0x4789('0x2d')&&_0x2785d3[_0x4789('0x2d')][_0x4789('0x2a')]!==_0x4789('0x2b')){throw new Error(_0x4789('0x81'));}if(_0x2785d3[_0x4789('0x5e')][_0x4789('0x2a')]==='admin'&&_0x2785d3[_0x4789('0x2d')][_0x4789('0x2a')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x4789('0x82')]([_0x2785d3[_0x4789('0x5e')]])[_0x4789('0x14')](function(){return validateUser(_0x2785d3[_0x4789('0x5e')]);})[_0x4789('0x14')](function(_0x590938){return updateUser(_0x590938)[_0x4789('0x14')](function(_0x122127){if(_0x122127[_0x4789('0x2a')]===_0x4789('0x2b')){_0x122127[_0x4789('0x83')]=_0x2785d3[_0x4789('0x2d')]['settingsEnabled'];delete _0x122127['userProfileId'];}return _0x122127;});})[_0x4789('0x14')](function(_0x433a65){return db[_0x4789('0x3c')][_0x4789('0x7f')](_0x433a65,{'include':[{'model':db[_0x4789('0x6e')],'as':'VoiceMail'}]});})[_0x4789('0x14')](function(_0xbae08e){if(_0x2785d3[_0x4789('0x5e')][_0x4789('0x2a')]===_0x4789('0x2d'))return _0xbae08e;if(_0x2785d3['user'][_0x4789('0x2a')]!==_0x4789('0x2d'))return _0xbae08e;return db[_0x4789('0x84')][_0x4789('0x36')]({'where':{'name':_0xbae08e[_0x4789('0x2a')]===_0x4789('0x2f')?_0x4789('0x2e'):_0x4789('0x85'),'userProfileId':_0x2785d3[_0x4789('0x2d')]['userProfileId']},'raw':!![]})[_0x4789('0x14')](function(_0x1d4a0c){if(!_0x1d4a0c||_0x1d4a0c['autoAssociation']!=0x0)return _0xbae08e;return db[_0x4789('0x38')][_0x4789('0x7f')]({'name':_0xbae08e[_0x4789('0x37')],'resourceId':_0xbae08e['id'],'type':_0x1d4a0c[_0x4789('0x37')],'sectionId':_0x1d4a0c['id']},{})[_0x4789('0x14')](function(){return _0xbae08e;});})['catch'](function(_0x2c6faf){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2c6faf);throw _0x2c6faf;});})['then'](respondWithResult(_0x12faef,0xc9))[_0x4789('0x1e')](handleError(_0x12faef,null));};exports[_0x4789('0x86')]=function(_0x165995,_0x2449e1){var _0x1bcf2e=_0x165995[_0x4789('0x5e')];var _0x4494c7=[];if(_0x165995[_0x4789('0x2d')][_0x4789('0x2a')]===_0x4789('0x2f'))throw new Error(_0x4789('0x80'));if(_[_0x4789('0x87')](_0x1bcf2e,[_0x4789('0x2a'),_0x4789('0x2d')])&&_0x165995[_0x4789('0x2d')]['role']!==_0x4789('0x2b')){throw new Error(_0x4789('0x81'));}if(_[_0x4789('0x87')](_0x1bcf2e,[_0x4789('0x2a'),_0x4789('0x2b')])&&_0x165995[_0x4789('0x2d')][_0x4789('0x2a')]!==_0x4789('0x2b')){throw new Error(_0x4789('0x88'));}return licenseUtil[_0x4789('0x82')](_0x1bcf2e)[_0x4789('0x14')](function(){return validateUser(_0x1bcf2e[0x0]);})[_0x4789('0x14')](function(){for(var _0x35687b=0x1;_0x35687b<_0x1bcf2e[_0x4789('0x69')];_0x35687b++){var _0xf39a73=_0x1bcf2e[_0x35687b-0x1][_0x4789('0x63')];if(!_0x1bcf2e[_0x35687b][_0x4789('0x63')])_0x1bcf2e[_0x35687b][_0x4789('0x63')]=_0xf39a73+0x1;_0x4494c7[_0x4789('0x48')](validateUser(_0x1bcf2e[_0x35687b]));}return BPromise[_0x4789('0x53')](_0x4494c7);})[_0x4789('0x14')](function(){_0x4494c7=[];for(var _0x3061f3=0x0;_0x3061f3<_0x1bcf2e[_0x4789('0x69')];_0x3061f3++){_0x4494c7[_0x4789('0x48')](updateUser(_0x1bcf2e[_0x3061f3]));}return BPromise[_0x4789('0x53')](_0x4494c7);})['then'](function(){return BPromise[_0x4789('0x89')](_0x1bcf2e,function(_0x12e47d){return db['User'][_0x4789('0x7f')](_0x12e47d,{'include':[{'model':db['VoiceMail'],'as':_0x4789('0x6e')}]})[_0x4789('0x14')](function(_0x2bd683){_0x12e47d['id']=_0x2bd683['id'];return _0x12e47d;});});})['then'](function(_0x55c86d){if(_0x165995[_0x4789('0x5e')][_0x4789('0x2a')]===_0x4789('0x2d'))return _0x55c86d;if(_0x165995['user'][_0x4789('0x2a')]!==_0x4789('0x2d'))return _0x55c86d;var _0x272ff9=_['some'](_0x55c86d,function(_0x16149b){return _0x16149b[_0x4789('0x2a')]===_0x4789('0x2f')||_0x16149b[_0x4789('0x2a')]===_0x4789('0x30');});if(!_0x272ff9)return _0x55c86d;return db[_0x4789('0x84')][_0x4789('0x8a')]({'where':{'name':{'$or':[_0x4789('0x2e'),'Telephones']},'userProfileId':_0x165995[_0x4789('0x2d')][_0x4789('0x8b')]},'raw':!![]})[_0x4789('0x14')](function(_0x2441f1){if(_['isEmpty'](_0x2441f1)||!_[_0x4789('0x87')](_0x2441f1,['autoAssociation',0x0]))return _0x55c86d;_0x4494c7=[];var _0x4d7f7f=_(_0x2441f1)[_0x4789('0x33')](function(_0x427789){if(_0x427789['autoAssociation']===0x1)return;return _0x427789[_0x4789('0x37')]===_0x4789('0x2e')?'agent':_0x4789('0x30');})[_0x4789('0x8c')]()['value']();for(var _0x338ceb=0x0;_0x338ceb<_0x55c86d[_0x4789('0x69')];_0x338ceb++){if(!_[_0x4789('0x35')](_0x4d7f7f,_0x55c86d[_0x338ceb][_0x4789('0x2a')]))return;var _0xff015e=_0x55c86d[_0x338ceb][_0x4789('0x2a')]===_0x4789('0x2f')?'Agents':'Telephones';_0x4494c7['push'](db['UserProfileResource'][_0x4789('0x7f')]({'name':_0x55c86d[_0x338ceb]['name'],'resourceId':_0x55c86d[_0x338ceb]['id'],'type':_0xff015e,'sectionId':_['find'](_0x2441f1,[_0x4789('0x37'),_0xff015e])['id']},{}));}return BPromise[_0x4789('0x53')](_0x4494c7);});})[_0x4789('0x14')](respondWithResult(_0x2449e1,0xc9))[_0x4789('0x1e')](handleError(_0x2449e1,null));};exports['changePassword']=function(_0x1eae09,_0x13a10a){if(_0x1eae09[_0x4789('0x5e')]['id']){delete _0x1eae09[_0x4789('0x5e')]['id'];}return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x1eae09['params']['id']}})[_0x4789('0x14')](function(_0x19c172){if(!_0x19c172)return null;if(_0x19c172['id']===_0x1eae09[_0x4789('0x2d')]['id']){if(!_0x1eae09[_0x4789('0x5e')][_0x4789('0x8d')]||!_0x1eae09[_0x4789('0x5e')][_0x4789('0x8e')]){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))](_0x4789('0x91'));}if(!_0x19c172[_0x4789('0x92')](_0x1eae09['body'][_0x4789('0x8d')])){throw new db[(_0x4789('0x8f'))]['ValidationError'](_0x4789('0x93'));}if(_0x1eae09[_0x4789('0x5e')][_0x4789('0x8d')]===_0x1eae09['body'][_0x4789('0x8e')]){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))](_0x4789('0x94'));}}else if(_0x1eae09[_0x4789('0x2d')][_0x4789('0x2a')]===_0x4789('0x2b')){if(!_0x1eae09[_0x4789('0x5e')][_0x4789('0x8e')]){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))](_0x4789('0x95'));}}else if(_0x1eae09[_0x4789('0x2d')][_0x4789('0x2a')]===_0x4789('0x2d')){if(!_0x1eae09[_0x4789('0x5e')][_0x4789('0x8e')]){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))](_0x4789('0x95'));}if(_0x19c172['role']!==_0x4789('0x2f')){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))]('Unauthorized');}}else{throw new db[(_0x4789('0x8f'))]['ValidationError'](_0x4789('0x80'));}return _0x19c172;})[_0x4789('0x14')](handleEntityNotFound(_0x13a10a,null))[_0x4789('0x14')](function(_0x2c1aaa){return db['Setting'][_0x4789('0x96')]({'attributes':['id',_0x4789('0x97'),_0x4789('0x98'),_0x4789('0x99')]})['then'](function(_0x1fd512){if(_0x1fd512['securePassword'])authService['validatePasswordPattern'](_0x1eae09['body'][_0x4789('0x8e')]);if(!_0x1fd512[_0x4789('0x98')]||!_0x2c1aaa[_0x4789('0x9a')])return _0x2c1aaa;authService[_0x4789('0x9b')](_0x1eae09[_0x4789('0x5e')][_0x4789('0x8e')],_0x2c1aaa[_0x4789('0x9a')],_0x1fd512[_0x4789('0x99')]);return _0x2c1aaa;})['then'](saveUpdates({'password':_0x1eae09[_0x4789('0x5e')][_0x4789('0x8e')],'passwordResetAt':_0x1eae09[_0x4789('0x2d')]['id']==_0x1eae09[_0x4789('0x55')]['id']?moment():null,'previousPasswords':authService[_0x4789('0x9c')](_0x1eae09[_0x4789('0x5e')][_0x4789('0x8e')],_0x2c1aaa['previousPasswords'])},null));})['then'](respondWithResult(_0x13a10a,null))[_0x4789('0x1e')](handleError(_0x13a10a,null));};exports['addQueues']=function(_0x14d05e,_0x299d78){var _0x2cefcd=_0x14d05e[_0x4789('0x5e')][_0x4789('0x9d')];return db[_0x4789('0x3c')]['find']({'where':{'id':_0x14d05e[_0x4789('0x55')]['id']},'attributes':['id',_0x4789('0x37'),'role',_0x4789('0x9e'),_0x4789('0x9f'),_0x4789('0xa0'),_0x4789('0xa1')]})['then'](handleEntityNotFound(_0x299d78,null))[_0x4789('0x14')](function(_0x5cda88){if(_0x5cda88){if(!utils[_0x4789('0xa2')](_0x2cefcd)){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))]('Unknown\x20channel');}return _0x5cda88['add'+_['capitalize'](_0x2cefcd[_0x4789('0xa3')]())+_0x4789('0xa4')](_0x14d05e['body']['ids'],{'penalty':_0x14d05e['body']['penalty']||0x0})[_0x4789('0xa5')](function(_0x510152){for(var _0x31b39b=0x0;_0x31b39b<_0x14d05e[_0x4789('0x5e')][_0x4789('0x61')]['length'];_0x31b39b+=0x1){var _0x18bcee={'UserId':Number(_0x14d05e[_0x4789('0x55')]['id'])};_0x18bcee[_['capitalize'](_0x2cefcd['toLowerCase']())+'QueueId']=Number(_0x14d05e[_0x4789('0x5e')][_0x4789('0x61')][_0x31b39b]);socket['emit'](_0x4789('0x2d')+_[_0x4789('0xa6')](_0x2cefcd[_0x4789('0xa3')]())+'Queue:save',_0x18bcee);}return _0x510152;})[_0x4789('0x14')](function(){if(_0x2cefcd===_0x4789('0xa7')){return db[_0x4789('0xa8')][_0x4789('0x8a')]({'where':{'id':_0x14d05e[_0x4789('0x5e')]['ids']||[]},'raw':!![],'attributes':['id','name']});}})['then'](function(_0x33fc9e){var _0x33c48c=_0x5cda88['get']({'plain':!![]});var _0x467f99=[];if(_0x2cefcd===_0x4789('0xa7')&&_0x33c48c[_0x4789('0x2a')]===_0x4789('0x2f')&&_0x33c48c[_0x4789('0x9e')]){for(var _0x2d968d=0x0;_0x2d968d<_0x33fc9e[_0x4789('0x69')];_0x2d968d+=0x1){_0x467f99['push']({'membername':_0x33c48c[_0x4789('0x37')],'UserId':_0x33c48c['id'],'queue_name':_0x33fc9e[_0x2d968d][_0x4789('0x37')],'VoiceQueueId':_0x33fc9e[_0x2d968d]['id'],'interface':_['isNil'](_0x33c48c['interface'])?util[_0x4789('0xa9')]('SIP/%s',_0x33c48c[_0x4789('0x37')]):_0x33c48c['interface'],'paused':_0x33c48c[_0x4789('0xa0')]||![],'penalty':_0x14d05e[_0x4789('0x5e')][_0x4789('0xaa')]||0x0});}return BPromise[_0x4789('0x89')](_0x467f99,function(_0x61e449){return db[_0x4789('0xab')][_0x4789('0xac')](_0x61e449);});}return _0x5cda88;});}})[_0x4789('0x14')](respondWithStatusCode(_0x299d78,null))[_0x4789('0x1e')](handleError(_0x299d78,null));};exports[_0x4789('0xad')]=function(_0x516a6c,_0x534411){var _0x1a2b17;return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x516a6c[_0x4789('0x55')]['id']},'attributes':['id',_0x4789('0x37'),_0x4789('0x2a')]})[_0x4789('0x14')](handleEntityNotFound(_0x534411,null))['then'](function(_0x1222f4){if(_0x1222f4){_0x1a2b17=_0x1222f4;if(!_0x516a6c[_0x4789('0x44')][_0x4789('0x9d')]||!utils['isValidChannel'](_0x516a6c[_0x4789('0x44')][_0x4789('0x9d')])){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))](_0x4789('0xae'));}return _0x1222f4[_0x4789('0xaf')+_[_0x4789('0xa6')](_0x516a6c[_0x4789('0x44')][_0x4789('0x9d')]['toLowerCase']())+_0x4789('0xa4')](_0x516a6c[_0x4789('0x44')][_0x4789('0x61')]);}})[_0x4789('0x14')](function(_0xefba38){if(_[_0x4789('0xb0')](_0x516a6c[_0x4789('0x44')]['ids'])){for(var _0xb5ad31=0x0;_0xb5ad31<_0x516a6c['query'][_0x4789('0x61')]['length'];_0xb5ad31+=0x1){var _0x77ca9c={'UserId':Number(_0x516a6c[_0x4789('0x55')]['id'])};_0x77ca9c[_[_0x4789('0xa6')](_0x516a6c[_0x4789('0x44')]['channel'][_0x4789('0xa3')]())+'QueueId']=Number(_0x516a6c[_0x4789('0x44')][_0x4789('0x61')][_0xb5ad31]);socket[_0x4789('0xb1')]('user'+_[_0x4789('0xa6')](_0x516a6c[_0x4789('0x44')][_0x4789('0x9d')][_0x4789('0xa3')]())+_0x4789('0xb2'),_0x77ca9c);}}else{var _0x77ca9c={'UserId':Number(_0x516a6c[_0x4789('0x55')]['id'])};_0x77ca9c[_[_0x4789('0xa6')](_0x516a6c['query'][_0x4789('0x9d')][_0x4789('0xa3')]())+_0x4789('0xb3')]=Number(_0x516a6c[_0x4789('0x44')][_0x4789('0x61')]);socket['emit']('user'+_[_0x4789('0xa6')](_0x516a6c[_0x4789('0x44')][_0x4789('0x9d')][_0x4789('0xa3')]())+_0x4789('0xb2'),_0x77ca9c);}return _0xefba38;})[_0x4789('0x14')](function(){if(_0x516a6c['query']['channel']==='voice'){return db['UserVoiceQueueRt'][_0x4789('0xb4')]({'where':{'UserId':_0x516a6c[_0x4789('0x55')]['id'],'VoiceQueueId':_0x516a6c[_0x4789('0x44')][_0x4789('0x61')]},'individualHooks':!![]})[_0x4789('0x14')](function(){return _0x1a2b17;});}return _0x1a2b17;})[_0x4789('0x14')](respondWithStatusCode(_0x534411,null))['catch'](handleError(_0x534411,null));};exports[_0x4789('0xb5')]=function(_0xb1f223,_0x21c193){_0xb1f223[_0x4789('0x5e')][_0x4789('0xb6')]=_0xb1f223[_0x4789('0xb7')][_0x4789('0xb8')];return db['User'][_0x4789('0x36')]({'where':{'id':_0xb1f223[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x21c193,null))['then'](saveUpdates(_0xb1f223[_0x4789('0x5e')],null))[_0x4789('0x14')](respondWithResult(_0x21c193,null))[_0x4789('0x1e')](handleError(_0x21c193,null));};exports[_0x4789('0xb9')]=function(_0x13a3ef,_0x2be8be){var _0x4b8127=path[_0x4789('0xba')](config[_0x4789('0xbb')],_0x4789('0xbc'));return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x13a3ef[_0x4789('0x55')]['id']},'attributes':['id','userpic'],'raw':!![]})['then'](handleEntityNotFound(_0x2be8be,null))[_0x4789('0x14')](function(_0x323e18){if(_0x323e18){if(_[_0x4789('0x6a')](_0x323e18[_0x4789('0xb6')])){return _0x2be8be[_0x4789('0xbd')](_0x4b8127);}else{if(!fs[_0x4789('0xbe')](path['join'](config['root'],_0x4789('0xbf'),_0x323e18['userpic']))){return _0x2be8be[_0x4789('0xbd')](_0x4b8127);}return _0x2be8be[_0x4789('0xbd')](path[_0x4789('0xba')](config[_0x4789('0xbb')],_0x4789('0xbf'),_0x323e18['userpic']));}}})[_0x4789('0x1e')](handleError(_0x2be8be,null));};exports[_0x4789('0xc0')]=function(_0x32544c,_0x34f6dd){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x32544c['params']['id']},'attributes':['id']})[_0x4789('0x14')](handleEntityNotFound(_0x34f6dd,null))[_0x4789('0x14')](function(_0x46f042){var _0x3c47f8=[];values=_0x46f042[_0x4789('0x4e')];_0x3c47f8[_0x4789('0x48')](get_open_tabs('chat',_0x46f042[_0x4789('0x4e')]));_0x3c47f8[_0x4789('0x48')](get_open_tabs('sms',_0x46f042[_0x4789('0x4e')]));_0x3c47f8[_0x4789('0x48')](get_open_tabs(_0x4789('0x51'),_0x46f042[_0x4789('0x4e')]));_0x3c47f8[_0x4789('0x48')](get_open_tabs(_0x4789('0x52'),_0x46f042[_0x4789('0x4e')]));_0x3c47f8[_0x4789('0x48')](get_open_tabs(_0x4789('0x4f'),_0x46f042['dataValues']));_0x3c47f8['push'](get_open_tabs('mail',_0x46f042[_0x4789('0x4e')]));return BPromise['all'](_0x3c47f8);})[_0x4789('0x14')](function(_0x15518f){var _0x3781f6=[];if(_0x15518f){for(var _0x1ce1f2=0x0;_0x1ce1f2<values[_0x4789('0xc1')][_0x4789('0x69')];_0x1ce1f2++){var _0x11a357=values[_0x4789('0xc1')][_0x1ce1f2];_0x3781f6[_0x4789('0x48')]({'channel':_0x4789('0xc2'),'id':_0x11a357['id'],'createdAt':_0x11a357['createdAt']});}for(var _0x1ce1f2=0x0;_0x1ce1f2<values[_0x4789('0xc3')]['length'];_0x1ce1f2++){var _0x11a357=values[_0x4789('0xc3')][_0x1ce1f2];_0x3781f6[_0x4789('0x48')]({'channel':_0x4789('0xc4'),'id':_0x11a357['id'],'createdAt':_0x11a357[_0x4789('0xc5')]});}for(var _0x1ce1f2=0x0;_0x1ce1f2<values[_0x4789('0xc6')][_0x4789('0x69')];_0x1ce1f2++){var _0x11a357=values[_0x4789('0xc6')][_0x1ce1f2];_0x3781f6[_0x4789('0x48')]({'channel':_0x4789('0xc7'),'id':_0x11a357['id'],'createdAt':_0x11a357[_0x4789('0xc5')]});}for(var _0x1ce1f2=0x0;_0x1ce1f2<values[_0x4789('0xc8')]['length'];_0x1ce1f2++){var _0x11a357=values[_0x4789('0xc8')][_0x1ce1f2];_0x3781f6[_0x4789('0x48')]({'channel':_0x4789('0xc9'),'id':_0x11a357['id'],'createdAt':_0x11a357[_0x4789('0xc5')]});}for(var _0x1ce1f2=0x0;_0x1ce1f2<values[_0x4789('0xca')][_0x4789('0x69')];_0x1ce1f2++){var _0x11a357=values['SmsOpenTabs'][_0x1ce1f2];_0x3781f6[_0x4789('0x48')]({'channel':'SMS','id':_0x11a357['id'],'createdAt':_0x11a357[_0x4789('0xc5')]});}for(var _0x1ce1f2=0x0;_0x1ce1f2<values[_0x4789('0xcb')]['length'];_0x1ce1f2++){var _0x11a357=values[_0x4789('0xcb')][_0x1ce1f2];_0x3781f6[_0x4789('0x48')]({'channel':_0x4789('0xcc'),'id':_0x11a357['id'],'createdAt':_0x11a357[_0x4789('0xc5')]});}var _0x3a5f40={'count':_0x3781f6[_0x4789('0x69')],'rows':_0x3781f6};return _0x3a5f40;}else return null;})[_0x4789('0x14')](respondWithResult(_0x34f6dd,null))['catch'](handleError(_0x34f6dd,null));};exports[_0x4789('0xcd')]=function(_0x52691c,_0x2b83cb){var _0x2447bb={};var _0x54a1f3={};var _0x118bb7;var _0x4bce8c;return db['User'][_0x4789('0x96')]({'where':{'id':_0x52691c[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x2b83cb,null))['then'](function(_0x2b9ef2){if(_0x2b9ef2){_0x118bb7=_0x2b9ef2;_0x54a1f3[_0x4789('0x56')]=_['keys'](db[_0x4789('0xce')]['rawAttributes']);_0x54a1f3['query']=_[_0x4789('0x57')](_0x52691c[_0x4789('0x44')]);_0x54a1f3[_0x4789('0x59')]=_['intersection'](_0x54a1f3[_0x4789('0x56')],_0x54a1f3[_0x4789('0x44')]);_0x2447bb[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x54a1f3[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x52691c['query'][_0x4789('0x5b')]));_0x2447bb[_0x4789('0x47')]=_0x2447bb['attributes']['length']?_0x2447bb['attributes']:_0x54a1f3[_0x4789('0x56')];_0x2447bb[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x52691c[_0x4789('0x44')][_0x4789('0xd0')]);_0x2447bb['where']=qs[_0x4789('0x59')](_['pick'](_0x52691c[_0x4789('0x44')],_0x54a1f3[_0x4789('0x59')]));if(_0x52691c[_0x4789('0x44')]['filter']){_0x2447bb[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x2447bb[_0x4789('0x43')],{'$or':_['map'](_0x2447bb[_0x4789('0x47')],function(_0x59794a){var _0x242ddb={};_0x242ddb[_0x59794a]={'$like':'%'+_0x52691c[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x242ddb;})});}_0x2447bb=_[_0x4789('0x5c')]({},_0x2447bb,_0x52691c[_0x4789('0x5d')]);return _0x118bb7[_0x4789('0xcd')](_0x2447bb);}})[_0x4789('0x14')](function(_0x2ae0d9){if(_0x2ae0d9){_0x4bce8c=_0x2ae0d9[_0x4789('0x69')];if(_0x52691c[_0x4789('0x44')][_0x4789('0xd1')]('includeAll')){_0x2447bb[_0x4789('0x46')]=[{'model':db[_0x4789('0xd2')],'as':'List','required':![]},{'model':db[_0x4789('0xd3')],'as':'Tags','attributes':['id',_0x4789('0x37'),_0x4789('0xd4')],'where':_0x52691c[_0x4789('0x44')]['tag']?{'id':_0x52691c[_0x4789('0x44')][_0x4789('0xd5')]}:undefined,'required':_0x52691c[_0x4789('0x44')][_0x4789('0xd5')]?!![]:![]}];}if(!_0x52691c[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x2447bb[_0x4789('0x23')]=qs['limit'](_0x52691c[_0x4789('0x44')][_0x4789('0x23')]);_0x2447bb['offset']=qs[_0x4789('0x22')](_0x52691c[_0x4789('0x44')][_0x4789('0x22')]);}return _0x118bb7['getContacts'](_0x2447bb);}})[_0x4789('0x14')](function(_0x435d59){if(_0x435d59){return _0x435d59?{'count':_0x4bce8c,'rows':_0x435d59}:null;}})[_0x4789('0x14')](respondWithResult(_0x2b83cb,null))[_0x4789('0x1e')](handleError(_0x2b83cb,null));};exports[_0x4789('0xd7')]=function(_0x2b39ae,_0x14ebc3){var _0x274b3d;var _0x8d0c95;var _0x447163={};var _0x46ae7d;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x2b39ae[_0x4789('0x55')]['id']},'attributes':['id',_0x4789('0x37'),'role']})[_0x4789('0x14')](handleEntityNotFound(_0x14ebc3,null))[_0x4789('0x14')](function(_0x44ed98){if(!utils[_0x4789('0xa2')](_0x2b39ae['query']['channel'])){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))]('Unknown\x20channel');}_0x274b3d=_0x44ed98;var _0x4f6abc={};_0x4f6abc[_0x4789('0x56')]=_[_0x4789('0x57')](db[_['capitalize'](_0x2b39ae[_0x4789('0x44')][_0x4789('0x9d')])+_0x4789('0xd8')][_0x4789('0x3d')]);_0x4f6abc[_0x4789('0x44')]=_[_0x4789('0x57')](_0x2b39ae[_0x4789('0x44')]);_0x4f6abc[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x4f6abc[_0x4789('0x56')],_0x4f6abc['query']);_0x447163['attributes']=_[_0x4789('0x5a')](_0x4f6abc['model'],qs['fields'](_0x2b39ae[_0x4789('0x44')][_0x4789('0x5b')]));_0x447163[_0x4789('0x47')]=_0x447163[_0x4789('0x47')][_0x4789('0x69')]?_0x447163[_0x4789('0x47')]:_0x4f6abc['model'];_0x447163['order']=qs[_0x4789('0xd0')](_0x2b39ae[_0x4789('0x44')]['sort']);_0x447163['where']=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x2b39ae[_0x4789('0x44')],_0x4f6abc[_0x4789('0x59')]));if(_0x2b39ae[_0x4789('0x44')]['filter']){_0x447163[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x447163[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x447163[_0x4789('0x47')],function(_0x1fd522){var _0x51de7f={};_0x51de7f[_0x1fd522]={'$like':'%'+_0x2b39ae[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x51de7f;})});}_0x447163=_[_0x4789('0x5c')]({},_0x447163,_0x2b39ae[_0x4789('0x5d')]);switch(_0x274b3d[_0x4789('0x2a')]){case'admin':return db[_['capitalize'](_0x2b39ae[_0x4789('0x44')][_0x4789('0x9d')])+_0x4789('0xd8')][_0x4789('0x8a')](_0x447163);case _0x4789('0x2d'):case _0x4789('0x2f'):return _0x274b3d[_0x4789('0x29')+_[_0x4789('0xa6')](_0x2b39ae[_0x4789('0x44')]['channel'])+_0x4789('0xa4')](_0x447163);default:throw new db['Sequelize'][(_0x4789('0x90'))]('Unknown\x20role');}})[_0x4789('0x14')](function(_0x29e412){_0x46ae7d=_0x29e412[_0x4789('0x69')];if(!_0x2b39ae['query'][_0x4789('0xd1')](_0x4789('0xd6'))){_0x447163['limit']=qs[_0x4789('0x23')](_0x2b39ae['query']['limit']);_0x447163['offset']=qs[_0x4789('0x22')](_0x2b39ae['query'][_0x4789('0x22')]);}switch(_0x274b3d['role']){case _0x4789('0x2b'):return db[_['capitalize'](_0x2b39ae[_0x4789('0x44')][_0x4789('0x9d')])+'Queue']['findAll'](_0x447163);case _0x4789('0x2d'):case _0x4789('0x2f'):return _0x274b3d[_0x4789('0x29')+_[_0x4789('0xa6')](_0x2b39ae['query'][_0x4789('0x9d')])+'Queues'](_0x447163);}})['then'](function(_0x2572bd){return{'count':_0x46ae7d,'rows':_0x2572bd};})[_0x4789('0x14')](respondWithResult(_0x14ebc3,null))[_0x4789('0x1e')](handleError(_0x14ebc3,null));};exports['getVoiceQueuesRt']=function(_0x20b06d,_0x123615){var _0x5241ef={};var _0x3a0e85={};var _0xd40d6;var _0xd077e7;return db[_0x4789('0x3c')]['findOne']({'where':{'id':_0x20b06d[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x123615,null))['then'](function(_0x178d76){if(_0x178d76){_0xd40d6=_0x178d76;_0x3a0e85['model']=_[_0x4789('0x57')](db[_0x4789('0xab')]['rawAttributes']);_0x3a0e85['query']=_[_0x4789('0x57')](_0x20b06d[_0x4789('0x44')]);_0x3a0e85[_0x4789('0x59')]=_['intersection'](_0x3a0e85[_0x4789('0x56')],_0x3a0e85[_0x4789('0x44')]);_0x5241ef[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x3a0e85[_0x4789('0x56')],qs['fields'](_0x20b06d[_0x4789('0x44')][_0x4789('0x5b')]));_0x5241ef[_0x4789('0x47')]=_0x5241ef[_0x4789('0x47')][_0x4789('0x69')]?_0x5241ef['attributes']:_0x3a0e85[_0x4789('0x56')];_0x5241ef[_0x4789('0xcf')]=qs['sort'](_0x20b06d[_0x4789('0x44')][_0x4789('0xd0')]);_0x5241ef[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x20b06d[_0x4789('0x44')],_0x3a0e85[_0x4789('0x59')]));if(_0x20b06d[_0x4789('0x44')]['filter']){_0x5241ef[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x5241ef[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x5241ef[_0x4789('0x47')],function(_0x13571e){var _0x179bb1={};_0x179bb1[_0x13571e]={'$like':'%'+_0x20b06d[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x179bb1;})});}_0x5241ef=_['merge']({},_0x5241ef,_0x20b06d[_0x4789('0x5d')]);return _0xd40d6[_0x4789('0xda')](_0x5241ef);}})[_0x4789('0x14')](function(_0x5cc8a0){if(_0x5cc8a0){_0xd077e7=_0x5cc8a0[_0x4789('0x69')];if(!_0x20b06d[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x5241ef[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x20b06d[_0x4789('0x44')][_0x4789('0x23')]);_0x5241ef[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x20b06d[_0x4789('0x44')][_0x4789('0x22')]);}return _0xd40d6['getVoiceQueuesRt'](_0x5241ef);}})['then'](function(_0x4b632a){if(_0x4b632a){return _0x4b632a?{'count':_0xd077e7,'rows':_0x4b632a}:null;}})[_0x4789('0x14')](respondWithResult(_0x123615,null))[_0x4789('0x1e')](handleError(_0x123615,null));};exports['getGroups']=function(_0x447196,_0x4801b7){var _0x5ee945={};var _0x5e18d0={};var _0x2b930a;var _0x46e4d6;return db['User'][_0x4789('0x96')]({'where':{'id':_0x447196[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x4801b7,null))['then'](function(_0x2037ac){if(_0x2037ac){_0x2b930a=_0x2037ac;_0x5e18d0[_0x4789('0x56')]=_['keys'](db[_0x4789('0xdb')][_0x4789('0x3d')]);_0x5e18d0[_0x4789('0x44')]=_['keys'](_0x447196['query']);_0x5e18d0['filters']=_[_0x4789('0x5a')](_0x5e18d0[_0x4789('0x56')],_0x5e18d0[_0x4789('0x44')]);_0x5ee945[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x5e18d0[_0x4789('0x56')],qs['fields'](_0x447196['query'][_0x4789('0x5b')]));_0x5ee945[_0x4789('0x47')]=_0x5ee945['attributes'][_0x4789('0x69')]?_0x5ee945[_0x4789('0x47')]:_0x5e18d0[_0x4789('0x56')];_0x5ee945[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x447196[_0x4789('0x44')][_0x4789('0xd0')]);_0x5ee945[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x447196[_0x4789('0x44')],_0x5e18d0[_0x4789('0x59')]));if(_0x447196[_0x4789('0x44')]['filter']){_0x5ee945[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x5ee945[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x5ee945[_0x4789('0x47')],function(_0x5529f9){var _0x1e76e5={};_0x1e76e5[_0x5529f9]={'$like':'%'+_0x447196['query'][_0x4789('0x31')]+'%'};return _0x1e76e5;})});}_0x5ee945=_[_0x4789('0x5c')]({},_0x5ee945,_0x447196['options']);return _0x2b930a[_0x4789('0xdc')](_0x5ee945);}})[_0x4789('0x14')](function(_0x489d1b){if(_0x489d1b){_0x46e4d6=_0x489d1b[_0x4789('0x69')];if(!_0x447196[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x5ee945[_0x4789('0x23')]=qs['limit'](_0x447196[_0x4789('0x44')]['limit']);_0x5ee945[_0x4789('0x22')]=qs['offset'](_0x447196[_0x4789('0x44')][_0x4789('0x22')]);}return _0x2b930a[_0x4789('0xdc')](_0x5ee945);}})['then'](function(_0x1e0427){if(_0x1e0427){return _0x1e0427?{'count':_0x46e4d6,'rows':_0x1e0427}:null;}})[_0x4789('0x14')](respondWithResult(_0x4801b7,null))[_0x4789('0x1e')](handleError(_0x4801b7,null));};exports[_0x4789('0xdd')]=function(_0x58c14e,_0x3e3457){var _0x5c62cb={'raw':!![],'where':{}};var _0x2054d2={};var _0x5b43d9={'count':0x0,'rows':[]};return db[_0x4789('0x3c')]['findOne']({'where':{'id':_0x58c14e[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x3e3457,null))['then'](function(_0x51c2dd){if(_0x51c2dd){_0x2054d2[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0xde')][_0x4789('0x3d')]);_0x2054d2[_0x4789('0x44')]=_['keys'](_0x58c14e[_0x4789('0x44')]);_0x2054d2[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x2054d2[_0x4789('0x56')],_0x2054d2[_0x4789('0x44')]);_0x5c62cb['attributes']=_[_0x4789('0x5a')](_0x2054d2[_0x4789('0x56')],qs['fields'](_0x58c14e[_0x4789('0x44')][_0x4789('0x5b')]));_0x5c62cb['attributes']=_0x5c62cb['attributes'][_0x4789('0x69')]?_0x5c62cb['attributes']:_0x2054d2[_0x4789('0x56')];if(!_0x58c14e['query'][_0x4789('0xd1')](_0x4789('0xd6'))){_0x5c62cb[_0x4789('0x23')]=qs['limit'](_0x58c14e['query'][_0x4789('0x23')]);_0x5c62cb['offset']=qs['offset'](_0x58c14e[_0x4789('0x44')][_0x4789('0x22')]);}_0x5c62cb[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x58c14e['query']['sort']);_0x5c62cb[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x58c14e[_0x4789('0x44')],_0x2054d2[_0x4789('0x59')]));_0x5c62cb['where'][_0x4789('0xdf')]=_0x51c2dd['id'];if(_0x58c14e[_0x4789('0x44')][_0x4789('0x31')]){_0x5c62cb['where']=_[_0x4789('0x5c')](_0x5c62cb[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x5c62cb[_0x4789('0x47')],function(_0x11bb05){var _0x1c9f4e={};_0x1c9f4e[_0x11bb05]={'$like':'%'+_0x58c14e[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x1c9f4e;})});}_0x5c62cb=_[_0x4789('0x5c')]({},_0x5c62cb,_0x58c14e['options']);return db[_0x4789('0xde')][_0x4789('0x25')]({'where':_0x5c62cb[_0x4789('0x43')]})[_0x4789('0x14')](function(_0x122be7){_0x5b43d9[_0x4789('0x25')]=_0x122be7;if(_0x58c14e['query'][_0x4789('0x45')]){_0x5c62cb[_0x4789('0x46')]=[{'all':!![]}];}return db['VoiceRecording'][_0x4789('0x8a')](_0x5c62cb);})[_0x4789('0x14')](function(_0x2c7924){_0x5b43d9[_0x4789('0x49')]=_0x2c7924;return _0x5b43d9;});}})[_0x4789('0x14')](respondWithFilteredResult(_0x3e3457,_0x5c62cb))[_0x4789('0x1e')](handleError(_0x3e3457,null));};exports[_0x4789('0xe0')]=function(_0x1b64bf,_0x59c76d){var _0x4761da={'raw':!![],'where':{}};var _0x1c6bea={};var _0x1461b1={'count':0x0,'rows':[]};return db[_0x4789('0x3c')]['findOne']({'where':{'id':_0x1b64bf[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x59c76d,null))[_0x4789('0x14')](function(_0x1a4281){if(_0x1a4281){_0x1c6bea[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0xe1')][_0x4789('0x3d')]);_0x1c6bea[_0x4789('0x44')]=_[_0x4789('0x57')](_0x1b64bf[_0x4789('0x44')]);_0x1c6bea[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x1c6bea['model'],_0x1c6bea[_0x4789('0x44')]);_0x4761da[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x1c6bea[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x1b64bf[_0x4789('0x44')][_0x4789('0x5b')]));_0x4761da['attributes']=_0x4761da[_0x4789('0x47')][_0x4789('0x69')]?_0x4761da[_0x4789('0x47')]:_0x1c6bea[_0x4789('0x56')];if(!_0x1b64bf[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x4761da[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x1b64bf[_0x4789('0x44')][_0x4789('0x23')]);_0x4761da[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x1b64bf['query'][_0x4789('0x22')]);}_0x4761da[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x1b64bf['query']['sort']);_0x4761da['where']=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x1b64bf[_0x4789('0x44')],_0x1c6bea[_0x4789('0x59')]));_0x4761da[_0x4789('0x43')][_0x4789('0xdf')]=_0x1a4281['id'];if(_0x1b64bf[_0x4789('0x44')]['filter']){_0x4761da['where']=_[_0x4789('0x5c')](_0x4761da['where'],{'$or':_['map'](_0x4761da[_0x4789('0x47')],function(_0x4d897c){var _0x10a440={};_0x10a440[_0x4d897c]={'$like':'%'+_0x1b64bf['query'][_0x4789('0x31')]+'%'};return _0x10a440;})});}_0x4761da=_[_0x4789('0x5c')]({},_0x4761da,_0x1b64bf[_0x4789('0x5d')]);return db[_0x4789('0xe1')]['count']({'where':_0x4761da['where']})['then'](function(_0x311ef5){_0x1461b1[_0x4789('0x25')]=_0x311ef5;if(_0x1b64bf['query'][_0x4789('0x45')]){_0x4761da[_0x4789('0x46')]=[{'all':!![]}];}return db['ScreenRecording'][_0x4789('0x8a')](_0x4761da);})[_0x4789('0x14')](function(_0x280af2){_0x1461b1['rows']=_0x280af2;return _0x1461b1;});}})[_0x4789('0x14')](respondWithFilteredResult(_0x59c76d,_0x4761da))['catch'](handleError(_0x59c76d,null));};exports[_0x4789('0xe2')]=function(_0x43870c,_0x49ab09){var _0x29f4c7={};var _0x1e305c={};var _0x3a5f5b;var _0xc4fcdb;return db['User'][_0x4789('0x96')]({'where':{'id':_0x43870c[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x49ab09,null))[_0x4789('0x14')](function(_0x14740b){if(_0x14740b){_0x3a5f5b=_0x14740b;_0x1e305c[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0xe3')][_0x4789('0x3d')]);_0x1e305c['query']=_['keys'](_0x43870c[_0x4789('0x44')]);_0x1e305c[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x1e305c[_0x4789('0x56')],_0x1e305c[_0x4789('0x44')]);_0x29f4c7[_0x4789('0x47')]=_['intersection'](_0x1e305c['model'],qs[_0x4789('0x5b')](_0x43870c[_0x4789('0x44')][_0x4789('0x5b')]));_0x29f4c7[_0x4789('0x47')]=_0x29f4c7[_0x4789('0x47')]['length']?_0x29f4c7[_0x4789('0x47')]:_0x1e305c[_0x4789('0x56')];_0x29f4c7['order']=qs[_0x4789('0xd0')](_0x43870c[_0x4789('0x44')][_0x4789('0xd0')]);_0x29f4c7[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x43870c[_0x4789('0x44')],_0x1e305c[_0x4789('0x59')]));if(_0x43870c[_0x4789('0x44')][_0x4789('0x31')]){_0x29f4c7[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x29f4c7['where'],{'$or':_[_0x4789('0x33')](_0x29f4c7['attributes'],function(_0x198b0e){var _0x256435={};_0x256435[_0x198b0e]={'$like':'%'+_0x43870c[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x256435;})});}_0x29f4c7=_[_0x4789('0x5c')]({},_0x29f4c7,_0x43870c[_0x4789('0x5d')]);return _0x3a5f5b[_0x4789('0xe2')](_0x29f4c7);}})[_0x4789('0x14')](function(_0x3bc565){if(_0x3bc565){_0xc4fcdb=_0x3bc565[_0x4789('0x69')];if(!_0x43870c['query'][_0x4789('0xd1')](_0x4789('0xd6'))){_0x29f4c7[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x43870c[_0x4789('0x44')]['limit']);_0x29f4c7[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x43870c[_0x4789('0x44')][_0x4789('0x22')]);}return _0x3a5f5b[_0x4789('0xe2')](_0x29f4c7);}})[_0x4789('0x14')](function(_0x9b374d){if(_0x9b374d){return _0x9b374d?{'count':_0xc4fcdb,'rows':_0x9b374d}:null;}})[_0x4789('0x14')](respondWithResult(_0x49ab09,null))[_0x4789('0x1e')](handleError(_0x49ab09,null));};exports['getOpenchannelInteractions']=function(_0x5e2a96,_0x5e9771){var _0x124b9b={};var _0x3ed513={};var _0x4c5662;var _0x2fbb33;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x5e2a96[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x5e9771,null))[_0x4789('0x14')](function(_0x1e1f6d){if(_0x1e1f6d){_0x4c5662=_0x1e1f6d;_0x3ed513['model']=_[_0x4789('0x57')](db[_0x4789('0xe4')][_0x4789('0x3d')]);_0x3ed513[_0x4789('0x44')]=_[_0x4789('0x57')](_0x5e2a96[_0x4789('0x44')]);_0x3ed513[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x3ed513[_0x4789('0x56')],_0x3ed513['query']);_0x124b9b[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x3ed513[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x5e2a96['query'][_0x4789('0x5b')]));_0x124b9b[_0x4789('0x47')]=_0x124b9b[_0x4789('0x47')][_0x4789('0x69')]?_0x124b9b['attributes']:_0x3ed513['model'];_0x124b9b[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x5e2a96[_0x4789('0x44')][_0x4789('0xd0')]);_0x124b9b[_0x4789('0x43')]=qs['filters'](_['pick'](_0x5e2a96['query'],_0x3ed513[_0x4789('0x59')]));if(_0x5e2a96[_0x4789('0x44')][_0x4789('0x31')]){_0x124b9b[_0x4789('0x43')]=_['merge'](_0x124b9b['where'],{'$or':_[_0x4789('0x33')](_0x124b9b[_0x4789('0x47')],function(_0x29dce3){var _0x330cc7={};_0x330cc7[_0x29dce3]={'$like':'%'+_0x5e2a96[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x330cc7;})});}_0x124b9b=_['merge']({},_0x124b9b,_0x5e2a96[_0x4789('0x5d')]);return _0x4c5662['getOpenchannelInteractions'](_0x124b9b);}})[_0x4789('0x14')](function(_0x2b365b){if(_0x2b365b){_0x2fbb33=_0x2b365b[_0x4789('0x69')];if(!_0x5e2a96[_0x4789('0x44')]['hasOwnProperty'](_0x4789('0xd6'))){_0x124b9b[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x5e2a96[_0x4789('0x44')]['limit']);_0x124b9b[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x5e2a96['query'][_0x4789('0x22')]);}return _0x4c5662[_0x4789('0xe5')](_0x124b9b);}})[_0x4789('0x14')](function(_0x4370a4){if(_0x4370a4){return _0x4370a4?{'count':_0x2fbb33,'rows':_0x4370a4}:null;}})[_0x4789('0x14')](respondWithResult(_0x5e9771,null))[_0x4789('0x1e')](handleError(_0x5e9771,null));};exports[_0x4789('0xe6')]=function(_0x546d57,_0x453814){var _0x1578ba={'raw':!![],'where':{}};var _0x1fbe29={};var _0x4659c7={'count':0x0,'rows':[]};return db['User'][_0x4789('0x96')]({'where':{'id':_0x546d57[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x453814,null))[_0x4789('0x14')](function(_0x1433a2){if(_0x1433a2){_0x1fbe29[_0x4789('0x56')]=_['keys'](db[_0x4789('0xe7')][_0x4789('0x3d')]);_0x1fbe29[_0x4789('0x44')]=_[_0x4789('0x57')](_0x546d57[_0x4789('0x44')]);_0x1fbe29[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x1fbe29[_0x4789('0x56')],_0x1fbe29[_0x4789('0x44')]);_0x1578ba[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x1fbe29[_0x4789('0x56')],qs['fields'](_0x546d57[_0x4789('0x44')][_0x4789('0x5b')]));_0x1578ba['attributes']=_0x1578ba[_0x4789('0x47')][_0x4789('0x69')]?_0x1578ba['attributes']:_0x1fbe29[_0x4789('0x56')];if(!_0x546d57[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x1578ba[_0x4789('0x23')]=qs['limit'](_0x546d57[_0x4789('0x44')]['limit']);_0x1578ba[_0x4789('0x22')]=qs['offset'](_0x546d57[_0x4789('0x44')][_0x4789('0x22')]);}_0x1578ba['order']=qs[_0x4789('0xd0')](_0x546d57['query'][_0x4789('0xd0')]);_0x1578ba[_0x4789('0x43')]=qs[_0x4789('0x59')](_['pick'](_0x546d57[_0x4789('0x44')],_0x1fbe29[_0x4789('0x59')]));_0x1578ba[_0x4789('0x43')]['UserId']=_0x1433a2['id'];if(_0x546d57[_0x4789('0x44')][_0x4789('0x31')]){_0x1578ba[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x1578ba[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x1578ba[_0x4789('0x47')],function(_0x56bd2b){var _0x335a91={};_0x335a91[_0x56bd2b]={'$like':'%'+_0x546d57[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x335a91;})});}_0x1578ba=_[_0x4789('0x5c')]({},_0x1578ba,_0x546d57[_0x4789('0x5d')]);return db[_0x4789('0xe7')][_0x4789('0x25')]({'where':_0x1578ba[_0x4789('0x43')]})['then'](function(_0x43e9f3){_0x4659c7[_0x4789('0x25')]=_0x43e9f3;if(_0x546d57[_0x4789('0x44')]['includeAll']){_0x1578ba[_0x4789('0x46')]=[{'all':!![]}];}return db[_0x4789('0xe7')][_0x4789('0x8a')](_0x1578ba);})[_0x4789('0x14')](function(_0x352eba){_0x4659c7[_0x4789('0x49')]=_0x352eba;return _0x4659c7;});}})[_0x4789('0x14')](respondWithFilteredResult(_0x453814,_0x1578ba))['catch'](handleError(_0x453814,null));};exports[_0x4789('0xe8')]=function(_0x1b3916,_0x5a78b0){var _0x67927e={};var _0x229443={};var _0x2456b3;var _0x20f244;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x1b3916[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x5a78b0,null))[_0x4789('0x14')](function(_0x3977aa){if(_0x3977aa){_0x2456b3=_0x3977aa;_0x229443[_0x4789('0x56')]=_['keys'](db[_0x4789('0xe9')]['rawAttributes']);_0x229443['query']=_[_0x4789('0x57')](_0x1b3916['query']);_0x229443[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x229443['model'],_0x229443[_0x4789('0x44')]);_0x67927e[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x229443[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x1b3916['query'][_0x4789('0x5b')]));_0x67927e[_0x4789('0x47')]=_0x67927e[_0x4789('0x47')]['length']?_0x67927e[_0x4789('0x47')]:_0x229443[_0x4789('0x56')];_0x67927e[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x1b3916[_0x4789('0x44')][_0x4789('0xd0')]);_0x67927e[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x1b3916[_0x4789('0x44')],_0x229443[_0x4789('0x59')]));if(_0x1b3916[_0x4789('0x44')][_0x4789('0x31')]){_0x67927e['where']=_[_0x4789('0x5c')](_0x67927e[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x67927e[_0x4789('0x47')],function(_0x2143a9){var _0x4ef607={};_0x4ef607[_0x2143a9]={'$like':'%'+_0x1b3916[_0x4789('0x44')]['filter']+'%'};return _0x4ef607;})});}_0x67927e=_[_0x4789('0x5c')]({},_0x67927e,_0x1b3916[_0x4789('0x5d')]);return _0x2456b3[_0x4789('0xe8')](_0x67927e);}})['then'](function(_0x38d642){if(_0x38d642){_0x20f244=_0x38d642[_0x4789('0x69')];if(!_0x1b3916[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x67927e[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x1b3916['query'][_0x4789('0x23')]);_0x67927e[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x1b3916['query'][_0x4789('0x22')]);}return _0x2456b3['getSmsInteractions'](_0x67927e);}})[_0x4789('0x14')](function(_0x186098){if(_0x186098){return _0x186098?{'count':_0x20f244,'rows':_0x186098}:null;}})['then'](respondWithResult(_0x5a78b0,null))[_0x4789('0x1e')](handleError(_0x5a78b0,null));};exports[_0x4789('0xea')]=function(_0x391ec4,_0x50075c){var _0x5db7ff={};var _0x42eae4={};var _0x2b9375;var _0x560d15;return db['User'][_0x4789('0x96')]({'where':{'id':_0x391ec4[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x50075c,null))[_0x4789('0x14')](function(_0xd7699f){if(_0xd7699f){_0x2b9375=_0xd7699f;_0x42eae4[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0xeb')][_0x4789('0x3d')]);_0x42eae4['query']=_[_0x4789('0x57')](_0x391ec4[_0x4789('0x44')]);_0x42eae4['filters']=_['intersection'](_0x42eae4[_0x4789('0x56')],_0x42eae4[_0x4789('0x44')]);_0x5db7ff[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x42eae4[_0x4789('0x56')],qs['fields'](_0x391ec4['query'][_0x4789('0x5b')]));_0x5db7ff[_0x4789('0x47')]=_0x5db7ff[_0x4789('0x47')][_0x4789('0x69')]?_0x5db7ff[_0x4789('0x47')]:_0x42eae4['model'];_0x5db7ff['order']=qs[_0x4789('0xd0')](_0x391ec4['query'][_0x4789('0xd0')]);_0x5db7ff[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x391ec4[_0x4789('0x44')],_0x42eae4['filters']));if(_0x391ec4[_0x4789('0x44')][_0x4789('0x31')]){_0x5db7ff[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x5db7ff[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x5db7ff['attributes'],function(_0x44b9df){var _0x5231ae={};_0x5231ae[_0x44b9df]={'$like':'%'+_0x391ec4[_0x4789('0x44')]['filter']+'%'};return _0x5231ae;})});}_0x5db7ff=_[_0x4789('0x5c')]({},_0x5db7ff,_0x391ec4[_0x4789('0x5d')]);return _0x2b9375[_0x4789('0xea')](_0x5db7ff);}})[_0x4789('0x14')](function(_0x5b28a1){if(_0x5b28a1){_0x560d15=_0x5b28a1[_0x4789('0x69')];if(!_0x391ec4['query'][_0x4789('0xd1')]('nolimit')){_0x5db7ff[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x391ec4[_0x4789('0x44')][_0x4789('0x23')]);_0x5db7ff[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x391ec4[_0x4789('0x44')][_0x4789('0x22')]);}return _0x2b9375['getFaxInteractions'](_0x5db7ff);}})['then'](function(_0x459eb5){if(_0x459eb5){return _0x459eb5?{'count':_0x560d15,'rows':_0x459eb5}:null;}})[_0x4789('0x14')](respondWithResult(_0x50075c,null))[_0x4789('0x1e')](handleError(_0x50075c,null));};exports[_0x4789('0xec')]=function(_0x5ac0b3,_0xbcfd3c){var _0x28f246={};var _0x2fc1be={};var _0x1b9f74;var _0x25a10e;return db['User'][_0x4789('0x96')]({'where':{'id':_0x5ac0b3[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0xbcfd3c,null))['then'](function(_0x42e85a){if(_0x42e85a){_0x1b9f74=_0x42e85a;_0x2fc1be[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0xed')][_0x4789('0x3d')]);_0x2fc1be['query']=_['keys'](_0x5ac0b3[_0x4789('0x44')]);_0x2fc1be['filters']=_['intersection'](_0x2fc1be[_0x4789('0x56')],_0x2fc1be[_0x4789('0x44')]);_0x28f246['attributes']=_[_0x4789('0x5a')](_0x2fc1be[_0x4789('0x56')],qs['fields'](_0x5ac0b3['query'][_0x4789('0x5b')]));_0x28f246[_0x4789('0x47')]=_0x28f246[_0x4789('0x47')][_0x4789('0x69')]?_0x28f246['attributes']:_0x2fc1be[_0x4789('0x56')];_0x28f246[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x5ac0b3['query']['sort']);_0x28f246[_0x4789('0x43')]=qs[_0x4789('0x59')](_['pick'](_0x5ac0b3[_0x4789('0x44')],_0x2fc1be['filters']));if(_0x5ac0b3[_0x4789('0x44')][_0x4789('0x31')]){_0x28f246['where']=_[_0x4789('0x5c')](_0x28f246[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x28f246[_0x4789('0x47')],function(_0x354738){var _0x52778e={};_0x52778e[_0x354738]={'$like':'%'+_0x5ac0b3[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x52778e;})});}_0x28f246=_[_0x4789('0x5c')]({},_0x28f246,_0x5ac0b3[_0x4789('0x5d')]);return _0x1b9f74['getWhatsappInteractions'](_0x28f246);}})[_0x4789('0x14')](function(_0x2647be){if(_0x2647be){_0x25a10e=_0x2647be[_0x4789('0x69')];if(!_0x5ac0b3[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x28f246[_0x4789('0x23')]=qs['limit'](_0x5ac0b3[_0x4789('0x44')]['limit']);_0x28f246[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x5ac0b3['query'][_0x4789('0x22')]);}return _0x1b9f74['getWhatsappInteractions'](_0x28f246);}})['then'](function(_0x18937a){if(_0x18937a){return _0x18937a?{'count':_0x25a10e,'rows':_0x18937a}:null;}})[_0x4789('0x14')](respondWithResult(_0xbcfd3c,null))['catch'](handleError(_0xbcfd3c,null));};exports['login']=function(_0x599634,_0x3b8ea5,_0x1d3b39){var _0x10e962;var _0x46bf45;var _0x36332e;var _0x1f5a0e=!_[_0x4789('0x6a')](_0x599634['params']['id'])?_0x599634[_0x4789('0x55')]['id']:!_['isNil'](_0x599634[_0x4789('0x2d')]['id'])?_0x599634[_0x4789('0x2d')]['id']:null;return db['User']['find']({'where':{'id':_0x1f5a0e,'role':{'$or':['admin',_0x4789('0x2d'),_0x4789('0x2f')]}},'attributes':['id','name',_0x4789('0xee'),_0x4789('0xef'),_0x4789('0x2a'),_0x4789('0x63'),_0x4789('0x9f')]})['then'](function(_0x45de9e){if(_0x45de9e){if(_0x45de9e[_0x4789('0x2a')]===_0x4789('0x2f')){_0x10e962=_0x45de9e;if(_0x599634[_0x4789('0x5e')][_0x4789('0xa1')]){_0x36332e=util['format'](_0x4789('0xf0'),_0x10e962[_0x599634['body'][_0x4789('0xa1')]]);}else if(_0x599634[_0x4789('0x5e')][_0x4789('0xf1')]){_0x36332e=util[_0x4789('0xa9')](_0x4789('0xf2'),_0x599634[_0x4789('0x5e')][_0x4789('0xf1')]);}else{_0x36332e=util[_0x4789('0xa9')](_0x4789('0xf2'),_0x10e962[_0x4789('0x37')]);}socket['to'](util['format'](_0x4789('0xf3'),_0x10e962[_0x4789('0x37')]))[_0x4789('0xb1')](_0x4789('0xf4'),{'user':{'id':_0x10e962['id'],'name':_0x10e962['name']},'ip':_0x599634[_0x4789('0xf5')]['x-forwarded-for']||_0x599634[_0x4789('0xf6')][_0x4789('0xf7')]||_0x599634[_0x4789('0xf8')][_0x4789('0xf7')]||_0x599634[_0x4789('0xf6')][_0x4789('0xf8')]['remoteAddress']});return db[_0x4789('0xab')]['destroy']({'where':{'membername':_0x10e962[_0x4789('0x37')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x4789('0x90'))](_0x4789('0xf9'));}})[_0x4789('0x14')](function(){if(_0x10e962){return _0x10e962[_0x4789('0xfa')]({'raw':!![]});}})[_0x4789('0x14')](function(_0x5377c0){if(_0x10e962){var _0x5686a1=[];if(_0x5377c0){_0x46bf45=_0x5377c0;if(_0x46bf45[_0x4789('0x69')]){for(var _0x566a1b=0x0;_0x566a1b<_0x46bf45[_0x4789('0x69')];_0x566a1b++){_0x5686a1[_0x4789('0x48')]({'membername':_0x10e962[_0x4789('0x37')],'UserId':_0x10e962['id'],'queue_name':_0x46bf45[_0x566a1b][_0x4789('0x37')],'VoiceQueueId':_0x46bf45[_0x566a1b]['id'],'interface':_0x36332e,'paused':_0x10e962[_0x4789('0x9f')]||![],'penalty':_0x46bf45[_0x566a1b][_0x4789('0xfb')]||0x0});}return BPromise['each'](_0x5686a1,function(_0x1d1878){return db['UserVoiceQueueRt'][_0x4789('0xac')](_0x1d1878);});}}}})[_0x4789('0x14')](function(){if(_0x10e962){return db[_0x4789('0xfc')]['findAll']({'where':{'membername':_0x10e962[_0x4789('0x37')],'exitAt':null}});}})[_0x4789('0x14')](function(_0x272d9e){if(_0x10e962){var _0x41cc7c=[];_0x272d9e[_0x4789('0xfd')](function(_0x22b0ce){_0x41cc7c[_0x4789('0x48')](_0x22b0ce[_0x4789('0x28')]({'exitAt':moment()['format'](_0x4789('0xfe'))}));});return BPromise['all'](_0x41cc7c);}})[_0x4789('0x14')](function(){if(_0x10e962){var _0x218e68=[];var _0x4f2779=[];var _0x153138=utils['getChannels']();var _0x365333={'membername':_0x10e962[_0x4789('0x37')],'interface':_0x36332e,'enterAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x10e962[_0x4789('0x2a')],'internal':_0x10e962[_0x4789('0x63')]};_0x153138[_0x4789('0xfd')](function(_0x4907fa){_0x218e68[_0x4789('0x48')](_['merge']({'channel':_0x4907fa,'type':_0x4789('0xff'),'data1':_0x599634[_0x4789('0x5e')][_0x4789('0x100')],'data2':_0x36332e},_0x365333));if(_0x10e962[_0x4789('0x9f')]){_0x4f2779[_0x4789('0x48')](_[_0x4789('0x5c')]({'channel':_0x4907fa,'type':_0x4789('0x101'),'data1':_0x4789('0x102')},_0x365333));}});return db[_0x4789('0xfc')][_0x4789('0x86')](_0x218e68[_0x4789('0x103')](_0x4f2779),{'individualHooks':!![]});}})[_0x4789('0x14')](function(){if(_0x10e962){return _0x10e962[_0x4789('0x28')]({'online':!![],'lastLoginAt':moment()['format'](_0x4789('0xfe')),'voicePause':_0x10e962[_0x4789('0x9f')]||![],'mailPause':_0x10e962[_0x4789('0x9f')]||![],'chatPause':_0x10e962[_0x4789('0x9f')]||![],'faxPause':_0x10e962[_0x4789('0x9f')]||![],'smsPause':_0x10e962['loginInPause']||![],'openchannelPause':_0x10e962['loginInPause']||![],'whatsappPause':_0x10e962[_0x4789('0x9f')]||![],'pauseType':_0x10e962[_0x4789('0x9f')]?'LOGININPAUSE':null,'interface':_0x36332e,'lastPauseAt':moment()[_0x4789('0xa9')](_0x4789('0xfe'))});}})[_0x4789('0x14')](function(_0x28dca6){if(_0x599634[_0x4789('0x104')]){return _0x1d3b39();}else{return BPromise[_0x4789('0x105')](_0x28dca6)[_0x4789('0x14')](respondWithResult(_0x3b8ea5,null));}})[_0x4789('0x1e')](handleError(_0x3b8ea5,null));};exports[_0x4789('0x106')]=function(_0x2462d8,_0x34911b){var _0x207e8b;return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x2462d8['params']['id'],'role':_0x4789('0x2f')},'attributes':['id','name',_0x4789('0x2a')]})[_0x4789('0x14')](handleEntityNotFound(_0x34911b,null))['then'](function(_0x4725bc){if(_0x4725bc){_0x207e8b=_0x4725bc;return db[_0x4789('0xab')][_0x4789('0xb4')]({'where':{'membername':_0x207e8b['name']},'individualHooks':!![]});}})[_0x4789('0x14')](function(){return db[_0x4789('0xfc')][_0x4789('0x8a')]({'where':{'membername':_0x207e8b[_0x4789('0x37')],'exitAt':null}});})[_0x4789('0x14')](function(_0x25a14f){var _0x1e6e32=[];_0x25a14f[_0x4789('0xfd')](function(_0x3d0b5c){_0x1e6e32[_0x4789('0x48')](_0x3d0b5c[_0x4789('0x28')]({'exitAt':moment()['format'](_0x4789('0xfe'))}));});return BPromise['all'](_0x1e6e32);})[_0x4789('0x14')](function(){return _0x207e8b[_0x4789('0x28')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x34911b,null))[_0x4789('0x1e')](handleError(_0x34911b,null));};exports[_0x4789('0x107')]=function(_0x5096c2,_0xebe710){var _0x1b90f9;return db[_0x4789('0xab')]['update']({'paused':0x1},{'where':{'UserId':_0x5096c2[_0x4789('0x55')]['id']},'individualHooks':!![]})['then'](function(){return db[_0x4789('0x3c')]['find']({'where':{'id':_0x5096c2[_0x4789('0x55')]['id'],'role':_0x4789('0x2f')},'attributes':['id',_0x4789('0x37'),_0x4789('0x2a'),'internal','interface']});})[_0x4789('0x14')](handleEntityNotFound(_0xebe710,null))[_0x4789('0x14')](function(_0x190182){if(_0x190182){_0x1b90f9=_0x190182;return respondWithRpcPromise(_0x4789('0x108'),'pause',{'id':_0x1b90f9['id'],'name':_0x1b90f9[_0x4789('0x37')],'pause':!![]});}})[_0x4789('0x14')](function(){if(_0x1b90f9){return db[_0x4789('0xfc')][_0x4789('0x8a')]({'where':{'membername':_0x1b90f9[_0x4789('0x37')],'type':_0x4789('0x101'),'exitAt':null}});}})[_0x4789('0x14')](function(_0x1558a9){if(_0x1558a9[_0x4789('0x69')]){var _0x1bb041=moment()['format'](_0x4789('0xfe'));for(var _0x5653d8=0x0,_0x806464=_0x1558a9[_0x4789('0x69')];_0x5653d8<_0x806464;_0x5653d8++){_0x1558a9[_0x5653d8][_0x4789('0x109')]({'exitAt':_0x1bb041});}}})[_0x4789('0x14')](function(){var _0x38b7bb=[];var _0x570cd2=utils[_0x4789('0x10a')]();_0x570cd2['forEach'](function(_0x35661f){_0x38b7bb[_0x4789('0x48')]({'channel':_0x35661f,'membername':_0x1b90f9['name'],'interface':_[_0x4789('0x6a')](_0x1b90f9[_0x4789('0xa1')])?util['format']('SIP/%s',_0x1b90f9[_0x4789('0x37')]):_0x1b90f9['interface'],'type':'PAUSE','enterAt':moment()[_0x4789('0xa9')](_0x4789('0xfe')),'data1':_0x5096c2[_0x4789('0x5e')][_0x4789('0x3f')]||_0x4789('0x10b'),'role':_0x1b90f9['role'],'internal':_0x1b90f9[_0x4789('0x63')]});});return db[_0x4789('0xfc')]['bulkCreate'](_0x38b7bb,{'individualHooks':!![]});})[_0x4789('0x14')](function(){return _0x1b90f9[_0x4789('0x28')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x5096c2[_0x4789('0x5e')]['type']||_0x4789('0x10b'),'lastPauseAt':moment()['format'](_0x4789('0xfe'))});})[_0x4789('0x14')](respondWithResult(_0xebe710,null))['catch'](handleError(_0xebe710,null));};exports[_0x4789('0x10c')]=function(_0x3de730,_0x200b09){var _0x52feaa;return db[_0x4789('0x3c')]['find']({'where':{'id':_0x3de730[_0x4789('0x55')]['id']},'attributes':['id','name',_0x4789('0x2a'),_0x4789('0xa0'),'mailPause',_0x4789('0x10d'),'faxPause',_0x4789('0x10e'),_0x4789('0x10f'),_0x4789('0x110'),_0x4789('0x111'),'lastPauseAt']})[_0x4789('0x14')](handleEntityNotFound(_0x200b09,null))['then'](function(_0x3d8c75){if(_0x3d8c75){_0x52feaa=_0x3d8c75;if(_0x3de730['body']['channel']&&!utils[_0x4789('0xa2')](_0x3de730['body'][_0x4789('0x9d')])){throw new db[(_0x4789('0x8f'))][(_0x4789('0x90'))](_0x4789('0xae'));}switch(_0x3de730[_0x4789('0x5e')]['channel']){case _0x4789('0xa7'):return respondWithRpcPromise(_0x4789('0x108'),_0x4789('0x10c'),{'id':_0x52feaa['id'],'name':_0x52feaa[_0x4789('0x37')],'pause':![]})[_0x4789('0x14')](function(){return db[_0x4789('0xab')]['update']({'paused':0x0},{'where':{'UserId':_0x52feaa['id']},'individualHooks':!![]});})[_0x4789('0x14')](function(){return db[_0x4789('0xfc')][_0x4789('0x36')]({'where':{'channel':_0x3de730[_0x4789('0x5e')]['channel'],'membername':_0x52feaa[_0x4789('0x37')],'type':'PAUSE','exitAt':null}});})['then'](function(_0x49eceb){if(_0x49eceb){return _0x49eceb[_0x4789('0x28')]({'exitAt':moment()[_0x4789('0xa9')](_0x4789('0xfe')),'data2':'manual'},{'individualHooks':!![]});}return null;})['then'](function(){return _0x52feaa[_0x4789('0x28')]({'voicePause':![]});});case _0x4789('0x50'):case'chat':case'fax':case'sms':case _0x4789('0x52'):case _0x4789('0x51'):return db[_0x4789('0xfc')][_0x4789('0x36')]({'where':{'channel':_0x3de730[_0x4789('0x5e')][_0x4789('0x9d')],'membername':_0x52feaa[_0x4789('0x37')],'type':_0x4789('0x101'),'exitAt':null}})[_0x4789('0x14')](function(_0x32d7ae){if(_0x32d7ae){return _0x32d7ae[_0x4789('0x28')]({'exitAt':moment()[_0x4789('0xa9')](_0x4789('0xfe')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0x4789('0x14')](function(){var _0x497ab5={};_[_0x4789('0x26')](_0x497ab5,util['format'](_0x4789('0x112'),_0x3de730[_0x4789('0x5e')][_0x4789('0x9d')],'Pause'),![]);return _0x52feaa['update'](_0x497ab5);});default:return respondWithRpcPromise('QueuePause',_0x4789('0x10c'),{'id':_0x52feaa['id'],'name':_0x52feaa[_0x4789('0x37')],'pause':![]})[_0x4789('0x14')](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x52feaa['id']}});})['then'](function(){return db[_0x4789('0xfc')][_0x4789('0x8a')]({'where':{'membername':_0x52feaa[_0x4789('0x37')],'type':_0x4789('0x101'),'exitAt':null}});})[_0x4789('0x14')](function(_0x201a19){var _0x525c7=[];_0x201a19['forEach'](function(_0x5f4d43){_0x525c7[_0x4789('0x48')](_0x5f4d43[_0x4789('0x28')]({'exitAt':moment()[_0x4789('0xa9')](_0x4789('0xfe')),'data2':_0x4789('0x113')}));});return BPromise[_0x4789('0x53')](_0x525c7);})['then'](function(){return _0x52feaa[_0x4789('0x28')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x4789('0x14')](respondWithResult(_0x200b09,null))[_0x4789('0x1e')](handleError(_0x200b09,null));};exports['getTeams']=function(_0x812d9d,_0x4a55ca){var _0x2f47a4={};var _0x402edb={};var _0x2dbad7;var _0x43f73a;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x812d9d[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x4a55ca,null))['then'](function(_0x4b66fb){if(_0x4b66fb){_0x2dbad7=_0x4b66fb;_0x402edb[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0x114')][_0x4789('0x3d')]);_0x402edb[_0x4789('0x44')]=_[_0x4789('0x57')](_0x812d9d[_0x4789('0x44')]);_0x402edb['filters']=_[_0x4789('0x5a')](_0x402edb['model'],_0x402edb[_0x4789('0x44')]);_0x2f47a4[_0x4789('0x47')]=_['intersection'](_0x402edb[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x812d9d[_0x4789('0x44')][_0x4789('0x5b')]));_0x2f47a4[_0x4789('0x47')]=_0x2f47a4['attributes'][_0x4789('0x69')]?_0x2f47a4[_0x4789('0x47')]:_0x402edb[_0x4789('0x56')];_0x2f47a4[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x812d9d[_0x4789('0x44')][_0x4789('0xd0')]);_0x2f47a4[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x812d9d['query'],_0x402edb[_0x4789('0x59')]));if(_0x812d9d['query']['filter']){_0x2f47a4[_0x4789('0x43')]=_['merge'](_0x2f47a4[_0x4789('0x43')],{'$or':_['map'](_0x2f47a4[_0x4789('0x47')],function(_0x61b3e6){var _0x2b0521={};_0x2b0521[_0x61b3e6]={'$like':'%'+_0x812d9d[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x2b0521;})});}_0x2f47a4=_['merge']({},_0x2f47a4,_0x812d9d[_0x4789('0x5d')]);return _0x2dbad7[_0x4789('0x115')](_0x2f47a4);}})[_0x4789('0x14')](function(_0x52df28){if(_0x52df28){_0x43f73a=_0x52df28[_0x4789('0x69')];if(!_0x812d9d[_0x4789('0x44')]['hasOwnProperty'](_0x4789('0xd6'))){_0x2f47a4[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x812d9d['query'][_0x4789('0x23')]);_0x2f47a4[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x812d9d[_0x4789('0x44')]['offset']);}return _0x2dbad7['getTeams'](_0x2f47a4);}})['then'](function(_0x1ca2a5){if(_0x1ca2a5){return _0x1ca2a5?{'count':_0x43f73a,'rows':_0x1ca2a5}:null;}})['then'](respondWithResult(_0x4a55ca,null))[_0x4789('0x1e')](handleError(_0x4a55ca,null));};exports['addTeams']=function(_0x39611e,_0x573328){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x39611e[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x573328,null))[_0x4789('0x14')](function(_0x405851){if(_0x405851){var _0x49b2b0=_0x405851[_0x4789('0x29')]({'plain':!![]});return _0x405851[_0x4789('0x116')](_0x39611e[_0x4789('0x5e')]['ids'],_[_0x4789('0x62')](_0x39611e[_0x4789('0x5e')],['ids','id'])||{})[_0x4789('0x14')](function(){for(var _0x5ca924=0x0;_0x5ca924<_0x39611e['body'][_0x4789('0x61')][_0x4789('0x69')];_0x5ca924++){var _0x4a1a81=[];db[_0x4789('0x114')]['findOne']({'where':{'id':_0x39611e[_0x4789('0x5e')][_0x4789('0x61')][_0x5ca924]}})['then'](function(_0x50322c){_0x4a1a81[_0x4789('0x48')](_0x50322c[_0x4789('0xfa')]()[_0x4789('0x14')](function(_0x183703){for(var _0x568e6d=0x0;_0x568e6d<_0x183703[_0x4789('0x69')];_0x568e6d++){_0x183703[_0x568e6d]['setDataValue'](_0x4789('0x9d'),_0x4789('0x117'));}return _0x183703;}));_0x4a1a81[_0x4789('0x48')](_0x50322c[_0x4789('0x118')]()['then'](function(_0x5ec7a5){for(var _0x79c028=0x0;_0x79c028<_0x5ec7a5[_0x4789('0x69')];_0x79c028++){_0x5ec7a5[_0x79c028][_0x4789('0x119')](_0x4789('0x9d'),_0x4789('0x11a'));}return _0x5ec7a5;}));_0x4a1a81[_0x4789('0x48')](_0x50322c['getMailQueues']()[_0x4789('0x14')](function(_0x2eed16){for(var _0x2c00c7=0x0;_0x2c00c7<_0x2eed16['length'];_0x2c00c7++){_0x2eed16[_0x2c00c7]['setDataValue'](_0x4789('0x9d'),'Mail');}return _0x2eed16;}));_0x4a1a81[_0x4789('0x48')](_0x50322c[_0x4789('0x11b')]()[_0x4789('0x14')](function(_0x580254){for(var _0x15d315=0x0;_0x15d315<_0x580254[_0x4789('0x69')];_0x15d315++){_0x580254[_0x15d315]['setDataValue'](_0x4789('0x9d'),_0x4789('0x11c'));}return _0x580254;}));_0x4a1a81[_0x4789('0x48')](_0x50322c['getWhatsappQueues']()[_0x4789('0x14')](function(_0x193164){for(var _0x4407bc=0x0;_0x4407bc<_0x193164[_0x4789('0x69')];_0x4407bc++){_0x193164[_0x4407bc][_0x4789('0x119')](_0x4789('0x9d'),_0x4789('0x11d'));}return _0x193164;}));_0x4a1a81[_0x4789('0x48')](_0x50322c[_0x4789('0x11e')]()[_0x4789('0x14')](function(_0xea740e){for(var _0x20a87e=0x0;_0x20a87e<_0xea740e[_0x4789('0x69')];_0x20a87e++){_0xea740e[_0x20a87e][_0x4789('0x119')](_0x4789('0x9d'),_0x4789('0x11f'));}return _0xea740e;}));_0x4a1a81[_0x4789('0x48')](_0x50322c['getOpenchannelQueues']()[_0x4789('0x14')](function(_0xcddb51){for(var _0x46fcf0=0x0;_0x46fcf0<_0xcddb51['length'];_0x46fcf0++){_0xcddb51[_0x46fcf0][_0x4789('0x119')]('channel','Openchannel');}return _0xcddb51;}));return BPromise['all'](_0x4a1a81);})[_0x4789('0x14')](function(_0x5e5afa){var _0x7b2090=_[_0x4789('0x120')](_0x5e5afa);_0x4a1a81=[];return db[_0x4789('0x66')][_0x4789('0x121')](function(_0x195999){for(var _0x9ff634=0x0;_0x9ff634<_0x7b2090['length'];_0x9ff634++){_0x4a1a81['push'](_0x7b2090[_0x9ff634]['addAgent'](_0x49b2b0['id']),{'transaction':_0x195999});}return BPromise[_0x4789('0x53')](_0x4a1a81)['then'](function(){if(_0x49b2b0[_0x4789('0x9e')]){return BPromise[_0x4789('0x89')](_['filter'](_0x7b2090,function(_0x38beb9){return _0x38beb9[_0x4789('0x122')](_0x4789('0x9d'))===_0x4789('0x117');}),function(_0x5999ca){return db[_0x4789('0xab')][_0x4789('0xac')]({'membername':_0x49b2b0['name'],'UserId':_0x49b2b0['id'],'queue_name':_0x5999ca[_0x4789('0x37')],'VoiceQueueId':_0x5999ca['id'],'interface':_[_0x4789('0x6a')](_0x49b2b0['interface'])?util[_0x4789('0xa9')](_0x4789('0xf2'),_0x49b2b0[_0x4789('0x37')]):_0x49b2b0[_0x4789('0xa1')],'paused':_0x49b2b0[_0x4789('0xa0')]||![],'penalty':_0x49b2b0[_0x4789('0xaa')]},{'transaction':_0x195999});});}else{return;}})[_0x4789('0x14')](function(){for(var _0x34ed78=0x0;_0x34ed78<_0x7b2090['length'];_0x34ed78++){var _0x5ac8d2=_0x7b2090[_0x34ed78][_0x4789('0x122')](_0x4789('0x9d'));var _0x4a3e74=_0x5ac8d2+_0x4789('0xb3');socket[_0x4789('0xb1')](_0x4789('0x2d')+_0x5ac8d2+_0x4789('0x123'),{'UserId':_0x49b2b0['id'],['queueField']:_0x7b2090[_0x34ed78]['id']});}});});});}});}})['then'](respondWithStatusCode(_0x573328,null))[_0x4789('0x1e')](handleError(_0x573328,null));};exports[_0x4789('0x124')]=function(_0x1332b2,_0x161b52){return db['User'][_0x4789('0x96')]({'where':{'id':_0x1332b2[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x161b52,null))[_0x4789('0x14')](function(_0x10f9f8){if(_0x10f9f8){var _0x4b8788=_0x10f9f8[_0x4789('0x29')]({'plain':!![]});var _0x5dcf77=_0x1332b2['query'][_0x4789('0x61')];return _0x10f9f8[_0x4789('0x124')](_0x5dcf77)[_0x4789('0x14')](function(){for(var _0x1375da=0x0;_0x1375da<_0x5dcf77[_0x4789('0x69')];_0x1375da++){var _0x4d954e=[];db[_0x4789('0x114')][_0x4789('0x96')]({'where':{'id':_0x5dcf77[_0x1375da]}})['then'](function(_0x2f466e){_0x4d954e[_0x4789('0x48')](_0x2f466e[_0x4789('0xfa')]()[_0x4789('0x14')](function(_0x4df47b){for(var _0x2c200c=0x0;_0x2c200c<_0x4df47b[_0x4789('0x69')];_0x2c200c++){_0x4df47b[_0x2c200c][_0x4789('0x119')](_0x4789('0x9d'),_0x4789('0x117'));}return _0x4df47b;}));_0x4d954e['push'](_0x2f466e[_0x4789('0x118')]()[_0x4789('0x14')](function(_0x4fa257){for(var _0x2b2168=0x0;_0x2b2168<_0x4fa257[_0x4789('0x69')];_0x2b2168++){_0x4fa257[_0x2b2168]['setDataValue'](_0x4789('0x9d'),'Chat');}return _0x4fa257;}));_0x4d954e[_0x4789('0x48')](_0x2f466e[_0x4789('0x125')]()[_0x4789('0x14')](function(_0x59b53e){for(var _0x429d31=0x0;_0x429d31<_0x59b53e[_0x4789('0x69')];_0x429d31++){_0x59b53e[_0x429d31][_0x4789('0x119')](_0x4789('0x9d'),'Mail');}return _0x59b53e;}));_0x4d954e[_0x4789('0x48')](_0x2f466e[_0x4789('0x11b')]()['then'](function(_0x1bfab9){for(var _0x21d437=0x0;_0x21d437<_0x1bfab9[_0x4789('0x69')];_0x21d437++){_0x1bfab9[_0x21d437]['setDataValue'](_0x4789('0x9d'),_0x4789('0x11c'));}return _0x1bfab9;}));_0x4d954e['push'](_0x2f466e[_0x4789('0x126')]()['then'](function(_0xcd9087){for(var _0x34f122=0x0;_0x34f122<_0xcd9087[_0x4789('0x69')];_0x34f122++){_0xcd9087[_0x34f122]['setDataValue'](_0x4789('0x9d'),_0x4789('0x11d'));}return _0xcd9087;}));_0x4d954e[_0x4789('0x48')](_0x2f466e[_0x4789('0x11e')]()[_0x4789('0x14')](function(_0x485be8){for(var _0x5ba570=0x0;_0x5ba570<_0x485be8['length'];_0x5ba570++){_0x485be8[_0x5ba570]['setDataValue'](_0x4789('0x9d'),_0x4789('0x11f'));}return _0x485be8;}));_0x4d954e['push'](_0x2f466e[_0x4789('0x127')]()[_0x4789('0x14')](function(_0x666dd9){for(var _0x32af93=0x0;_0x32af93<_0x666dd9[_0x4789('0x69')];_0x32af93++){_0x666dd9[_0x32af93][_0x4789('0x119')](_0x4789('0x9d'),_0x4789('0x128'));}return _0x666dd9;}));return BPromise['all'](_0x4d954e);})[_0x4789('0x14')](function(_0x2e1dbb){var _0x66de19=_['flatten'](_0x2e1dbb);_0x4d954e=[];return db[_0x4789('0x66')][_0x4789('0x121')](function(_0x24e572){for(var _0x52d7cb=0x0;_0x52d7cb<_0x66de19['length'];_0x52d7cb++){_0x4d954e['push'](_0x66de19[_0x52d7cb][_0x4789('0x129')](_0x4b8788['id']),{'transaction':_0x24e572});}return BPromise[_0x4789('0x53')](_0x4d954e)[_0x4789('0x14')](function(){if(_0x4b8788[_0x4789('0x9e')]){return BPromise['each'](_[_0x4789('0x31')](_0x66de19,function(_0xee4cf5){return _0xee4cf5[_0x4789('0x122')]('channel')===_0x4789('0x117');}),function(_0x1d5d12){return db[_0x4789('0xab')][_0x4789('0xb4')]({'where':{'VoiceQueueId':_0x1d5d12['id'],'UserId':_0x4b8788['id']},'transaction':_0x24e572});});}else{return;}})[_0x4789('0x14')](function(){for(var _0x3cb8c7=0x0;_0x3cb8c7<_0x66de19['length'];_0x3cb8c7++){var _0x447b48=_0x66de19[_0x3cb8c7]['getDataValue'](_0x4789('0x9d'));var _0x39de45=_0x447b48+_0x4789('0xb3');socket['emit'](_0x4789('0x2d')+_0x447b48+_0x4789('0xb2'),{'UserId':_0x4b8788['id'],['queueField']:_0x66de19[_0x3cb8c7]['id']});}});});});}});}})[_0x4789('0x14')](respondWithStatusCode(_0x161b52,null))['catch'](handleError(_0x161b52,null));};exports[_0x4789('0x12a')]=function(_0x5cd78b,_0x3d704c){var _0x5b305b={};var _0x2df8b9={};var _0xe4eea6;var _0x316e60;return db['User'][_0x4789('0x96')]({'where':{'id':_0x5cd78b[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x3d704c,null))[_0x4789('0x14')](function(_0x25bab7){if(_0x25bab7){_0xe4eea6=_0x25bab7;_0x2df8b9[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0xd2')][_0x4789('0x3d')]);_0x2df8b9[_0x4789('0x44')]=_['keys'](_0x5cd78b[_0x4789('0x44')]);_0x2df8b9[_0x4789('0x59')]=_['intersection'](_0x2df8b9[_0x4789('0x56')],_0x2df8b9[_0x4789('0x44')]);_0x5b305b[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x2df8b9[_0x4789('0x56')],qs['fields'](_0x5cd78b['query'][_0x4789('0x5b')]));_0x5b305b[_0x4789('0x47')]=_0x5b305b[_0x4789('0x47')]['length']?_0x5b305b[_0x4789('0x47')]:_0x2df8b9[_0x4789('0x56')];_0x5b305b[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x5cd78b['query'][_0x4789('0xd0')]);_0x5b305b[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x5cd78b[_0x4789('0x44')],_0x2df8b9['filters']));if(_0x5cd78b[_0x4789('0x44')][_0x4789('0x31')]){_0x5b305b['where']=_['merge'](_0x5b305b[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x5b305b[_0x4789('0x47')],function(_0x4d5216){var _0x53ff21={};_0x53ff21[_0x4d5216]={'$like':'%'+_0x5cd78b[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x53ff21;})});}_0x5b305b=_[_0x4789('0x5c')]({},_0x5b305b,_0x5cd78b[_0x4789('0x5d')]);return _0xe4eea6['getLists'](_0x5b305b);}})['then'](function(_0x53a027){if(_0x53a027){_0x316e60=_0x53a027[_0x4789('0x69')];if(!_0x5cd78b[_0x4789('0x44')][_0x4789('0xd1')]('nolimit')){_0x5b305b[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x5cd78b[_0x4789('0x44')]['limit']);_0x5b305b['offset']=qs['offset'](_0x5cd78b[_0x4789('0x44')]['offset']);}return _0xe4eea6[_0x4789('0x12a')](_0x5b305b);}})[_0x4789('0x14')](function(_0x67e1b3){if(_0x67e1b3){return _0x67e1b3?{'count':_0x316e60,'rows':_0x67e1b3}:null;}})[_0x4789('0x14')](respondWithResult(_0x3d704c,null))[_0x4789('0x1e')](handleError(_0x3d704c,null));};exports['getAgents']=function(_0x1c72d5,_0x580886){var _0x137e30={};var _0x5500bf={};var _0x59099b;var _0x2838d7;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x1c72d5[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x580886,null))['then'](function(_0x4cf6fe){if(_0x4cf6fe){_0x59099b=_0x4cf6fe;_0x5500bf['model']=_[_0x4789('0x57')](db[_0x4789('0x3c')][_0x4789('0x3d')]);_0x5500bf[_0x4789('0x44')]=_[_0x4789('0x57')](_0x1c72d5[_0x4789('0x44')]);_0x5500bf['filters']=_['intersection'](_0x5500bf['model'],_0x5500bf[_0x4789('0x44')]);_0x137e30[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x5500bf['model'],qs[_0x4789('0x5b')](_0x1c72d5[_0x4789('0x44')][_0x4789('0x5b')]));_0x137e30[_0x4789('0x47')]=_0x137e30[_0x4789('0x47')][_0x4789('0x69')]?_0x137e30['attributes']:_0x5500bf[_0x4789('0x56')];_0x137e30[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x1c72d5[_0x4789('0x44')][_0x4789('0xd0')]);_0x137e30[_0x4789('0x43')]=qs['filters'](_[_0x4789('0xd9')](_0x1c72d5[_0x4789('0x44')],_0x5500bf[_0x4789('0x59')]));if(_0x1c72d5['query'][_0x4789('0x31')]){_0x137e30[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x137e30[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x137e30[_0x4789('0x47')],function(_0x520fe0){var _0x5c7bd8={};_0x5c7bd8[_0x520fe0]={'$like':'%'+_0x1c72d5[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x5c7bd8;})});}_0x137e30[_0x4789('0x56')]=db[_0x4789('0x3c')];_0x137e30['as']=_0x4789('0x2e');_0x137e30=_[_0x4789('0x5c')]({},_0x137e30,_0x1c72d5[_0x4789('0x5d')]);return _0x59099b['getVoiceQueues']({'include':[_0x137e30]});}})[_0x4789('0x14')](function(_0x5d194e){if(_0x5d194e){var _0x50ae00={},_0x969ffc=[],_0xf40bff=0x0;for(var _0x59b508=0x0;_0x59b508<_0x5d194e[_0x4789('0x69')];_0x59b508+=0x1){for(var _0x32fedd=0x0,_0x3f9d8f;_0x32fedd<_0x5d194e[_0x59b508][_0x4789('0x2e')][_0x4789('0x69')];_0x32fedd+=0x1){_0x3f9d8f=_0x5d194e[_0x59b508][_0x4789('0x2e')][_0x32fedd]['get']({'plain':!![]});_0x50ae00[_0x3f9d8f['id']]=_0x3f9d8f;}}_0x50ae00=_[_0x4789('0x12b')](_0x50ae00);for(var _0x677f3a=qs[_0x4789('0x22')](_0x1c72d5['query'][_0x4789('0x22')]);_0x677f3a<_0x50ae00[_0x4789('0x69')]&&_0x969ffc['length']<qs['limit'](_0x1c72d5[_0x4789('0x44')][_0x4789('0x23')]);_0x677f3a+=0x1){if(_0x50ae00[_0x677f3a]){_0x969ffc[_0x4789('0x48')](_0x50ae00[_0x677f3a]);}}return{'count':_0x50ae00[_0x4789('0x69')],'rows':_0x969ffc};}})['then'](respondWithResult(_0x580886,null))[_0x4789('0x1e')](handleError(_0x580886,null));};exports[_0x4789('0xb4')]=function(_0x1537bf,_0x327720){if(_0x1537bf[_0x4789('0x2d')]['id']==_0x1537bf[_0x4789('0x55')]['id']){return _0x327720[_0x4789('0x20')](0x1f4)[_0x4789('0x3a')]({'message':_0x4789('0x12c')});}return db['User'][_0x4789('0x36')]({'where':{'id':_0x1537bf[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x327720,null))[_0x4789('0x14')](removeEntity(_0x327720,null))[_0x4789('0x1e')](handleError(_0x327720,null));};exports[_0x4789('0x12d')]=function(_0x5ba4e3,_0x49acc3){return db[_0x4789('0x3c')]['find']({'where':{'id':_0x5ba4e3[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x49acc3,null))[_0x4789('0x14')](function(_0x5b8a82){if(_0x5b8a82){return _0x5b8a82['addChatInteractions'](_0x5ba4e3[_0x4789('0x5e')][_0x4789('0x61')],_[_0x4789('0x62')](_0x5ba4e3[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{})[_0x4789('0xa5')](function(){for(var _0x3c5205=0x0;_0x3c5205<_0x5ba4e3[_0x4789('0x5e')][_0x4789('0x61')][_0x4789('0x69')];_0x3c5205+=0x1){socket[_0x4789('0xb1')]('user_has_chat_interactions:save',{'ChatInteractionId':Number(_0x5ba4e3[_0x4789('0x5e')][_0x4789('0x61')][_0x3c5205]),'UserId':Number(_0x5ba4e3[_0x4789('0x55')]['id'])});}return _0x5ba4e3[_0x4789('0x5e')][_0x4789('0x61')];});}})[_0x4789('0x14')](respondWithResult(_0x49acc3,null))[_0x4789('0x1e')](handleError(_0x49acc3,null));};exports['removeChatInteractions']=function(_0x597c52,_0x2e5986){return db['User'][_0x4789('0x36')]({'where':{'id':_0x597c52['params']['id']}})['then'](handleEntityNotFound(_0x2e5986,null))[_0x4789('0x14')](function(_0x32cfe5){if(_0x32cfe5){return _0x32cfe5[_0x4789('0x12e')](_0x597c52[_0x4789('0x44')][_0x4789('0x61')])[_0x4789('0x14')](function(){if(_[_0x4789('0xb0')](_0x597c52[_0x4789('0x44')][_0x4789('0x61')])){for(var _0x111e2d=0x0;_0x111e2d<_0x597c52[_0x4789('0x44')][_0x4789('0x61')][_0x4789('0x69')];_0x111e2d+=0x1){socket[_0x4789('0xb1')](_0x4789('0x12f'),{'ChatInteractionId':Number(_0x597c52[_0x4789('0x44')][_0x4789('0x61')][_0x111e2d]),'UserId':Number(_0x597c52[_0x4789('0x55')]['id'])});}}else{socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x597c52[_0x4789('0x44')]['ids']),'UserId':Number(_0x597c52[_0x4789('0x55')]['id'])});}});}})[_0x4789('0x14')](respondWithStatusCode(_0x2e5986,null))['catch'](handleError(_0x2e5986,null));};exports['addMailInteractions']=function(_0x1f4fc3,_0x206eb4){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x1f4fc3[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x206eb4,null))[_0x4789('0x14')](function(_0xd83436){if(_0xd83436){return _0xd83436[_0x4789('0x130')](_0x1f4fc3[_0x4789('0x5e')][_0x4789('0x61')],_[_0x4789('0x62')](_0x1f4fc3['body'],[_0x4789('0x61'),'id'])||{})[_0x4789('0xa5')](function(){for(var _0x4795b6=0x0;_0x4795b6<_0x1f4fc3['body'][_0x4789('0x61')][_0x4789('0x69')];_0x4795b6+=0x1){socket[_0x4789('0xb1')](_0x4789('0x131'),{'MailInteractionId':Number(_0x1f4fc3[_0x4789('0x5e')][_0x4789('0x61')][_0x4795b6]),'UserId':Number(_0x1f4fc3['params']['id'])});}return _0x1f4fc3[_0x4789('0x5e')][_0x4789('0x61')];});}})[_0x4789('0x14')](respondWithResult(_0x206eb4,null))[_0x4789('0x1e')](handleError(_0x206eb4,null));};exports['removeMailInteractions']=function(_0x5abd41,_0x3f48e5){return db['User'][_0x4789('0x36')]({'where':{'id':_0x5abd41[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x3f48e5,null))['then'](function(_0x34331e){if(_0x34331e){return _0x34331e[_0x4789('0x132')](_0x5abd41[_0x4789('0x44')]['ids'])[_0x4789('0x14')](function(){if(_[_0x4789('0xb0')](_0x5abd41[_0x4789('0x44')][_0x4789('0x61')])){for(var _0x5d41e9=0x0;_0x5d41e9<_0x5abd41['query'][_0x4789('0x61')]['length'];_0x5d41e9+=0x1){socket[_0x4789('0xb1')](_0x4789('0x133'),{'MailInteractionId':Number(_0x5abd41[_0x4789('0x44')][_0x4789('0x61')][_0x5d41e9]),'UserId':Number(_0x5abd41[_0x4789('0x55')]['id'])});}}else{socket[_0x4789('0xb1')](_0x4789('0x133'),{'MailInteractionId':Number(_0x5abd41[_0x4789('0x44')][_0x4789('0x61')]),'UserId':Number(_0x5abd41[_0x4789('0x55')]['id'])});}});}})[_0x4789('0x14')](respondWithStatusCode(_0x3f48e5,null))[_0x4789('0x1e')](handleError(_0x3f48e5,null));};exports['addFaxInteractions']=function(_0x34198a,_0x4a6b78){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x34198a[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x4a6b78,null))[_0x4789('0x14')](function(_0x48679d){if(_0x48679d){return _0x48679d[_0x4789('0x134')](_0x34198a[_0x4789('0x5e')]['ids'],_['omit'](_0x34198a[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{})['spread'](function(){for(var _0x49b3bb=0x0;_0x49b3bb<_0x34198a[_0x4789('0x5e')][_0x4789('0x61')][_0x4789('0x69')];_0x49b3bb+=0x1){socket['emit'](_0x4789('0x135'),{'FaxInteractionId':Number(_0x34198a[_0x4789('0x5e')][_0x4789('0x61')][_0x49b3bb]),'UserId':Number(_0x34198a[_0x4789('0x55')]['id'])});}return _0x34198a[_0x4789('0x5e')][_0x4789('0x61')];});}})[_0x4789('0x14')](respondWithResult(_0x4a6b78,null))['catch'](handleError(_0x4a6b78,null));};exports[_0x4789('0x136')]=function(_0x53db1a,_0x5ae0ae){return db['User']['find']({'where':{'id':_0x53db1a['params']['id']}})['then'](handleEntityNotFound(_0x5ae0ae,null))[_0x4789('0x14')](function(_0x2ea883){if(_0x2ea883){return _0x2ea883[_0x4789('0x136')](_0x53db1a['query']['ids'])['then'](function(){if(_['isArray'](_0x53db1a['query']['ids'])){for(var _0x41ff48=0x0;_0x41ff48<_0x53db1a[_0x4789('0x44')][_0x4789('0x61')]['length'];_0x41ff48+=0x1){socket['emit'](_0x4789('0x137'),{'FaxInteractionId':Number(_0x53db1a['query']['ids'][_0x41ff48]),'UserId':Number(_0x53db1a[_0x4789('0x55')]['id'])});}}else{socket[_0x4789('0xb1')](_0x4789('0x137'),{'FaxInteractionId':Number(_0x53db1a[_0x4789('0x44')][_0x4789('0x61')]),'UserId':Number(_0x53db1a[_0x4789('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x5ae0ae,null))[_0x4789('0x1e')](handleError(_0x5ae0ae,null));};exports[_0x4789('0x138')]=function(_0x37aead,_0x472af7){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x37aead[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x472af7,null))['then'](function(_0x4ef305){if(_0x4ef305){return _0x4ef305[_0x4789('0x138')](_0x37aead[_0x4789('0x5e')]['ids'],_[_0x4789('0x62')](_0x37aead[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{})[_0x4789('0xa5')](function(){for(var _0x1640a1=0x0;_0x1640a1<_0x37aead[_0x4789('0x5e')][_0x4789('0x61')]['length'];_0x1640a1+=0x1){socket[_0x4789('0xb1')](_0x4789('0x139'),{'SmsInteractionId':Number(_0x37aead[_0x4789('0x5e')][_0x4789('0x61')][_0x1640a1]),'UserId':Number(_0x37aead[_0x4789('0x55')]['id'])});}return _0x37aead[_0x4789('0x5e')][_0x4789('0x61')];});}})[_0x4789('0x14')](respondWithResult(_0x472af7,null))[_0x4789('0x1e')](handleError(_0x472af7,null));};exports[_0x4789('0x13a')]=function(_0x552ae5,_0x4b56c1){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x552ae5['params']['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x4b56c1,null))[_0x4789('0x14')](function(_0x2ead37){if(_0x2ead37){return _0x2ead37[_0x4789('0x13a')](_0x552ae5[_0x4789('0x44')][_0x4789('0x61')])[_0x4789('0x14')](function(){if(_[_0x4789('0xb0')](_0x552ae5[_0x4789('0x44')][_0x4789('0x61')])){for(var _0x418099=0x0;_0x418099<_0x552ae5[_0x4789('0x44')]['ids'][_0x4789('0x69')];_0x418099+=0x1){socket[_0x4789('0xb1')](_0x4789('0x13b'),{'SmsInteractionId':Number(_0x552ae5['query'][_0x4789('0x61')][_0x418099]),'UserId':Number(_0x552ae5['params']['id'])});}}else{socket['emit']('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x552ae5['query'][_0x4789('0x61')]),'UserId':Number(_0x552ae5[_0x4789('0x55')]['id'])});}});}})['then'](respondWithStatusCode(_0x4b56c1,null))[_0x4789('0x1e')](handleError(_0x4b56c1,null));};exports[_0x4789('0x13c')]=function(_0x10813b,_0x8a8706){return db[_0x4789('0x3c')]['find']({'where':{'id':_0x10813b[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x8a8706,null))[_0x4789('0x14')](function(_0x31bade){if(_0x31bade){return _0x31bade[_0x4789('0x13c')](_0x10813b[_0x4789('0x5e')][_0x4789('0x61')],_[_0x4789('0x62')](_0x10813b[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{})[_0x4789('0xa5')](function(){for(var _0x505321=0x0;_0x505321<_0x10813b['body'][_0x4789('0x61')][_0x4789('0x69')];_0x505321+=0x1){socket[_0x4789('0xb1')](_0x4789('0x13d'),{'OpenchannelInteractionId':Number(_0x10813b['body']['ids'][_0x505321]),'UserId':Number(_0x10813b[_0x4789('0x55')]['id'])});}return _0x10813b[_0x4789('0x5e')][_0x4789('0x61')];});}})[_0x4789('0x14')](respondWithResult(_0x8a8706,null))[_0x4789('0x1e')](handleError(_0x8a8706,null));};exports[_0x4789('0x13e')]=function(_0xc8b874,_0x5756b5){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0xc8b874[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x5756b5,null))['then'](function(_0x3893a0){if(_0x3893a0){return _0x3893a0[_0x4789('0x13e')](_0xc8b874['query'][_0x4789('0x61')])['then'](function(){if(_[_0x4789('0xb0')](_0xc8b874['query']['ids'])){for(var _0x4c7fc4=0x0;_0x4c7fc4<_0xc8b874[_0x4789('0x44')][_0x4789('0x61')][_0x4789('0x69')];_0x4c7fc4+=0x1){socket[_0x4789('0xb1')](_0x4789('0x13f'),{'OpenchannelInteractionId':Number(_0xc8b874[_0x4789('0x44')][_0x4789('0x61')][_0x4c7fc4]),'UserId':Number(_0xc8b874[_0x4789('0x55')]['id'])});}}else{socket[_0x4789('0xb1')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xc8b874[_0x4789('0x44')][_0x4789('0x61')]),'UserId':Number(_0xc8b874[_0x4789('0x55')]['id'])});}});}})[_0x4789('0x14')](respondWithStatusCode(_0x5756b5,null))[_0x4789('0x1e')](handleError(_0x5756b5,null));};exports[_0x4789('0x140')]=function(_0x5b6c49,_0xc85733){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x5b6c49[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0xc85733,null))[_0x4789('0x14')](function(_0x42a60c){if(_0x42a60c){return _0x42a60c[_0x4789('0x140')](_0x5b6c49[_0x4789('0x5e')]['ids'],_['omit'](_0x5b6c49[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{})[_0x4789('0xa5')](function(){for(var _0x3f18cc=0x0;_0x3f18cc<_0x5b6c49[_0x4789('0x5e')][_0x4789('0x61')][_0x4789('0x69')];_0x3f18cc+=0x1){socket[_0x4789('0xb1')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x5b6c49[_0x4789('0x5e')][_0x4789('0x61')][_0x3f18cc]),'UserId':Number(_0x5b6c49[_0x4789('0x55')]['id'])});}return _0x5b6c49[_0x4789('0x5e')][_0x4789('0x61')];});}})['then'](respondWithResult(_0xc85733,null))[_0x4789('0x1e')](handleError(_0xc85733,null));};exports['removeWhatsappInteractions']=function(_0x57b15c,_0x3ffd52){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x57b15c[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x3ffd52,null))['then'](function(_0x70fb5f){if(_0x70fb5f){return _0x70fb5f[_0x4789('0x141')](_0x57b15c['query']['ids']);}})[_0x4789('0x14')](respondWithStatusCode(_0x3ffd52,null))[_0x4789('0x1e')](handleError(_0x3ffd52,null));};exports[_0x4789('0x142')]=function(_0x38c00d,_0xac8faf){var _0xe911a5={};var _0x503467={};var _0xc5496;var _0x421f46;return db['User'][_0x4789('0x96')]({'where':{'id':_0x38c00d[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0xac8faf,null))['then'](function(_0x4c4dca){if(_0x4c4dca){_0xc5496=_0x4c4dca;_0x503467[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0x143')]['rawAttributes']);_0x503467[_0x4789('0x44')]=_['keys'](_0x38c00d[_0x4789('0x44')]);_0x503467[_0x4789('0x59')]=_['intersection'](_0x503467[_0x4789('0x56')],_0x503467['query']);_0xe911a5[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x503467[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x38c00d[_0x4789('0x44')][_0x4789('0x5b')]));_0xe911a5[_0x4789('0x47')]=_0xe911a5['attributes']['length']?_0xe911a5[_0x4789('0x47')]:_0x503467[_0x4789('0x56')];_0xe911a5['order']=qs['sort'](_0x38c00d[_0x4789('0x44')][_0x4789('0xd0')]);_0xe911a5[_0x4789('0x43')]=qs['filters'](_['pick'](_0x38c00d[_0x4789('0x44')],_0x503467[_0x4789('0x59')]));if(_0x38c00d[_0x4789('0x44')][_0x4789('0x31')]){_0xe911a5[_0x4789('0x43')]=_[_0x4789('0x5c')](_0xe911a5[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0xe911a5[_0x4789('0x47')],function(_0x30f878){var _0xafe3b7={};_0xafe3b7[_0x30f878]={'$like':'%'+_0x38c00d[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0xafe3b7;})});}_0xe911a5=_[_0x4789('0x5c')]({},_0xe911a5,_0x38c00d['options']);return _0xc5496[_0x4789('0x142')](_0xe911a5);}})['then'](function(_0x19d619){if(_0x19d619){_0x421f46=_0x19d619[_0x4789('0x69')];if(!_0x38c00d[_0x4789('0x44')]['hasOwnProperty'](_0x4789('0xd6'))){_0xe911a5['limit']=qs['limit'](_0x38c00d[_0x4789('0x44')][_0x4789('0x23')]);_0xe911a5['offset']=qs['offset'](_0x38c00d[_0x4789('0x44')][_0x4789('0x22')]);}return _0xc5496[_0x4789('0x142')](_0xe911a5);}})[_0x4789('0x14')](function(_0x53acea){if(_0x53acea){return _0x53acea?{'count':_0x421f46,'rows':_0x53acea}:null;}})[_0x4789('0x14')](respondWithResult(_0xac8faf,null))[_0x4789('0x1e')](handleError(_0xac8faf,null));};exports[_0x4789('0x144')]=function(_0xffaf19,_0xecf7e9){var _0x3c4922={};var _0x3a799e={};var _0x141438;var _0xafd3c2;return db[_0x4789('0x3c')]['findOne']({'where':{'id':_0xffaf19[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0xecf7e9,null))[_0x4789('0x14')](function(_0x445253){if(_0x445253){_0x141438=_0x445253;_0x3a799e[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0x145')]['rawAttributes']);_0x3a799e[_0x4789('0x44')]=_[_0x4789('0x57')](_0xffaf19['query']);_0x3a799e['filters']=_[_0x4789('0x5a')](_0x3a799e['model'],_0x3a799e['query']);_0x3c4922['attributes']=_[_0x4789('0x5a')](_0x3a799e[_0x4789('0x56')],qs[_0x4789('0x5b')](_0xffaf19[_0x4789('0x44')][_0x4789('0x5b')]));_0x3c4922[_0x4789('0x47')]=_0x3c4922[_0x4789('0x47')][_0x4789('0x69')]?_0x3c4922[_0x4789('0x47')]:_0x3a799e[_0x4789('0x56')];_0x3c4922['order']=qs[_0x4789('0xd0')](_0xffaf19[_0x4789('0x44')][_0x4789('0xd0')]);_0x3c4922['where']=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0xffaf19[_0x4789('0x44')],_0x3a799e['filters']));if(_0xffaf19[_0x4789('0x44')][_0x4789('0x31')]){_0x3c4922[_0x4789('0x43')]=_['merge'](_0x3c4922[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x3c4922[_0x4789('0x47')],function(_0x2005f8){var _0x266788={};_0x266788[_0x2005f8]={'$like':'%'+_0xffaf19[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x266788;})});}_0x3c4922=_[_0x4789('0x5c')]({},_0x3c4922,_0xffaf19['options']);return _0x141438[_0x4789('0x144')](_0x3c4922);}})[_0x4789('0x14')](function(_0x41d4fc){if(_0x41d4fc){_0xafd3c2=_0x41d4fc[_0x4789('0x69')];if(!_0xffaf19[_0x4789('0x44')]['hasOwnProperty'](_0x4789('0xd6'))){_0x3c4922['limit']=qs['limit'](_0xffaf19[_0x4789('0x44')][_0x4789('0x23')]);_0x3c4922[_0x4789('0x22')]=qs[_0x4789('0x22')](_0xffaf19['query'][_0x4789('0x22')]);}return _0x141438[_0x4789('0x144')](_0x3c4922);}})[_0x4789('0x14')](function(_0x2bd2ea){if(_0x2bd2ea){return _0x2bd2ea?{'count':_0xafd3c2,'rows':_0x2bd2ea}:null;}})['then'](respondWithResult(_0xecf7e9,null))[_0x4789('0x1e')](handleError(_0xecf7e9,null));};exports[_0x4789('0x146')]=function(_0x263a72,_0x5375ba){return db['User'][_0x4789('0x36')]({'where':{'id':_0x263a72[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x5375ba,null))['then'](function(_0x4ab512){if(_0x4ab512){return _0x4ab512[_0x4789('0x146')](_0x263a72[_0x4789('0x5e')]['ids'],_[_0x4789('0x62')](_0x263a72[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x5375ba,null))[_0x4789('0x1e')](handleError(_0x5375ba,null));};exports['removeFaxAccounts']=function(_0x277f3f,_0xf71621){return db['User'][_0x4789('0x36')]({'where':{'id':_0x277f3f['params']['id']}})[_0x4789('0x14')](handleEntityNotFound(_0xf71621,null))[_0x4789('0x14')](function(_0x294702){if(_0x294702){return _0x294702['removeFaxAccounts'](_0x277f3f[_0x4789('0x44')]['ids']);}})[_0x4789('0x14')](respondWithStatusCode(_0xf71621,null))[_0x4789('0x1e')](handleError(_0xf71621,null));};exports['getMailAccounts']=function(_0x3d3404,_0x45be4a){var _0x58d0f4={};var _0x101949={};var _0x4c3527;var _0x4a9668;return db['User']['findOne']({'where':{'id':_0x3d3404[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x45be4a,null))[_0x4789('0x14')](function(_0xf8ca05){if(_0xf8ca05){_0x4c3527=_0xf8ca05;_0x101949['model']=_[_0x4789('0x57')](db[_0x4789('0x147')][_0x4789('0x3d')]);_0x101949['query']=_[_0x4789('0x57')](_0x3d3404['query']);_0x101949['filters']=_[_0x4789('0x5a')](_0x101949[_0x4789('0x56')],_0x101949[_0x4789('0x44')]);_0x58d0f4[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x101949[_0x4789('0x56')],qs['fields'](_0x3d3404[_0x4789('0x44')][_0x4789('0x5b')]));_0x58d0f4['attributes']=_0x58d0f4['attributes']['length']?_0x58d0f4['attributes']:_0x101949[_0x4789('0x56')];_0x58d0f4[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x3d3404[_0x4789('0x44')][_0x4789('0xd0')]);_0x58d0f4[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x3d3404['query'],_0x101949[_0x4789('0x59')]));if(_0x3d3404[_0x4789('0x44')][_0x4789('0x31')]){_0x58d0f4[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x58d0f4['where'],{'$or':_['map'](_0x58d0f4['attributes'],function(_0x31170f){var _0x255756={};_0x255756[_0x31170f]={'$like':'%'+_0x3d3404['query'][_0x4789('0x31')]+'%'};return _0x255756;})});}_0x58d0f4=_[_0x4789('0x5c')]({},_0x58d0f4,_0x3d3404[_0x4789('0x5d')]);return _0x4c3527['getMailAccounts'](_0x58d0f4);}})[_0x4789('0x14')](function(_0x3b0849){if(_0x3b0849){_0x4a9668=_0x3b0849[_0x4789('0x69')];if(!_0x3d3404['query'][_0x4789('0xd1')](_0x4789('0xd6'))){_0x58d0f4[_0x4789('0x23')]=qs['limit'](_0x3d3404[_0x4789('0x44')][_0x4789('0x23')]);_0x58d0f4[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x3d3404[_0x4789('0x44')][_0x4789('0x22')]);}return _0x4c3527['getMailAccounts'](_0x58d0f4);}})[_0x4789('0x14')](function(_0x4f98ea){if(_0x4f98ea){return _0x4f98ea?{'count':_0x4a9668,'rows':_0x4f98ea}:null;}})[_0x4789('0x14')](respondWithResult(_0x45be4a,null))['catch'](handleError(_0x45be4a,null));};exports[_0x4789('0x148')]=function(_0x6e016,_0x83e176){return db['User'][_0x4789('0x36')]({'where':{'id':_0x6e016[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x83e176,null))['then'](function(_0x7ade8b){if(_0x7ade8b){return _0x7ade8b[_0x4789('0x148')](_0x6e016[_0x4789('0x5e')]['ids'],_['omit'](_0x6e016[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x83e176,null))[_0x4789('0x1e')](handleError(_0x83e176,null));};exports[_0x4789('0x149')]=function(_0x8b16bc,_0x3ca1a9){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x8b16bc[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x3ca1a9,null))['then'](function(_0x32a75a){if(_0x32a75a){return _0x32a75a[_0x4789('0x149')](_0x8b16bc[_0x4789('0x44')][_0x4789('0x61')]);}})[_0x4789('0x14')](respondWithStatusCode(_0x3ca1a9,null))['catch'](handleError(_0x3ca1a9,null));};exports['getOpenchannelAccounts']=function(_0x1e68da,_0x20a967){var _0x344995={};var _0x6f6820={};var _0x35429e;var _0x2245c1;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x1e68da[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x20a967,null))[_0x4789('0x14')](function(_0x2997c1){if(_0x2997c1){_0x35429e=_0x2997c1;_0x6f6820[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0x14a')][_0x4789('0x3d')]);_0x6f6820['query']=_['keys'](_0x1e68da['query']);_0x6f6820[_0x4789('0x59')]=_['intersection'](_0x6f6820[_0x4789('0x56')],_0x6f6820[_0x4789('0x44')]);_0x344995['attributes']=_[_0x4789('0x5a')](_0x6f6820[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x1e68da[_0x4789('0x44')][_0x4789('0x5b')]));_0x344995['attributes']=_0x344995[_0x4789('0x47')]['length']?_0x344995['attributes']:_0x6f6820[_0x4789('0x56')];_0x344995['order']=qs[_0x4789('0xd0')](_0x1e68da[_0x4789('0x44')]['sort']);_0x344995[_0x4789('0x43')]=qs[_0x4789('0x59')](_['pick'](_0x1e68da[_0x4789('0x44')],_0x6f6820[_0x4789('0x59')]));if(_0x1e68da['query']['filter']){_0x344995[_0x4789('0x43')]=_['merge'](_0x344995['where'],{'$or':_[_0x4789('0x33')](_0x344995['attributes'],function(_0x2f9b84){var _0x49dc32={};_0x49dc32[_0x2f9b84]={'$like':'%'+_0x1e68da[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x49dc32;})});}_0x344995=_['merge']({},_0x344995,_0x1e68da['options']);return _0x35429e[_0x4789('0x14b')](_0x344995);}})['then'](function(_0xd229b3){if(_0xd229b3){_0x2245c1=_0xd229b3[_0x4789('0x69')];if(!_0x1e68da[_0x4789('0x44')]['hasOwnProperty']('nolimit')){_0x344995['limit']=qs[_0x4789('0x23')](_0x1e68da['query'][_0x4789('0x23')]);_0x344995[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x1e68da[_0x4789('0x44')]['offset']);}return _0x35429e['getOpenchannelAccounts'](_0x344995);}})['then'](function(_0x14d7de){if(_0x14d7de){return _0x14d7de?{'count':_0x2245c1,'rows':_0x14d7de}:null;}})[_0x4789('0x14')](respondWithResult(_0x20a967,null))[_0x4789('0x1e')](handleError(_0x20a967,null));};exports[_0x4789('0x14c')]=function(_0x292fe7,_0x14914a){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x292fe7[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x14914a,null))['then'](function(_0xed72dd){if(_0xed72dd){return _0xed72dd['addOpenchannelAccounts'](_0x292fe7[_0x4789('0x5e')][_0x4789('0x61')],_[_0x4789('0x62')](_0x292fe7[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x14914a,null))[_0x4789('0x1e')](handleError(_0x14914a,null));};exports[_0x4789('0x14d')]=function(_0x28743e,_0x182346){return db['User'][_0x4789('0x36')]({'where':{'id':_0x28743e[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x182346,null))['then'](function(_0x10e7c2){if(_0x10e7c2){return _0x10e7c2[_0x4789('0x14d')](_0x28743e['query']['ids']);}})['then'](respondWithStatusCode(_0x182346,null))[_0x4789('0x1e')](handleError(_0x182346,null));};exports[_0x4789('0x14e')]=function(_0x2a5345,_0x30a0c1){var _0x21021c={};var _0x58cac6={};var _0x2814e5;var _0x4c9a97;return db[_0x4789('0x3c')]['findOne']({'where':{'id':_0x2a5345[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x30a0c1,null))[_0x4789('0x14')](function(_0x3ea1e0){if(_0x3ea1e0){_0x2814e5=_0x3ea1e0;_0x58cac6['model']=_[_0x4789('0x57')](db[_0x4789('0x14f')][_0x4789('0x3d')]);_0x58cac6[_0x4789('0x44')]=_['keys'](_0x2a5345['query']);_0x58cac6[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x58cac6['model'],_0x58cac6[_0x4789('0x44')]);_0x21021c['attributes']=_['intersection'](_0x58cac6['model'],qs['fields'](_0x2a5345[_0x4789('0x44')][_0x4789('0x5b')]));_0x21021c['attributes']=_0x21021c['attributes'][_0x4789('0x69')]?_0x21021c['attributes']:_0x58cac6[_0x4789('0x56')];_0x21021c[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x2a5345['query'][_0x4789('0xd0')]);_0x21021c[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x2a5345[_0x4789('0x44')],_0x58cac6[_0x4789('0x59')]));if(_0x2a5345[_0x4789('0x44')][_0x4789('0x31')]){_0x21021c[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x21021c[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x21021c[_0x4789('0x47')],function(_0x4aee8b){var _0x532ee1={};_0x532ee1[_0x4aee8b]={'$like':'%'+_0x2a5345[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x532ee1;})});}_0x21021c=_[_0x4789('0x5c')]({},_0x21021c,_0x2a5345[_0x4789('0x5d')]);return _0x2814e5[_0x4789('0x14e')](_0x21021c);}})[_0x4789('0x14')](function(_0x510316){if(_0x510316){_0x4c9a97=_0x510316[_0x4789('0x69')];if(!_0x2a5345[_0x4789('0x44')]['hasOwnProperty'](_0x4789('0xd6'))){_0x21021c[_0x4789('0x23')]=qs['limit'](_0x2a5345[_0x4789('0x44')]['limit']);_0x21021c[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x2a5345[_0x4789('0x44')][_0x4789('0x22')]);}return _0x2814e5[_0x4789('0x14e')](_0x21021c);}})[_0x4789('0x14')](function(_0x1db55e){if(_0x1db55e){return _0x1db55e?{'count':_0x4c9a97,'rows':_0x1db55e}:null;}})['then'](respondWithResult(_0x30a0c1,null))[_0x4789('0x1e')](handleError(_0x30a0c1,null));};exports[_0x4789('0x150')]=function(_0x2f6add,_0x3a78de){return db['User']['find']({'where':{'id':_0x2f6add[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x3a78de,null))[_0x4789('0x14')](function(_0x2ac44e){if(_0x2ac44e){return _0x2ac44e[_0x4789('0x150')](_0x2f6add[_0x4789('0x5e')]['ids'],_['omit'](_0x2f6add[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x3a78de,null))['catch'](handleError(_0x3a78de,null));};exports['removeSmsAccounts']=function(_0x5ccef1,_0x207d1d){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x5ccef1[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x207d1d,null))['then'](function(_0x3b9491){if(_0x3b9491){return _0x3b9491['removeSmsAccounts'](_0x5ccef1[_0x4789('0x44')][_0x4789('0x61')]);}})[_0x4789('0x14')](respondWithStatusCode(_0x207d1d,null))[_0x4789('0x1e')](handleError(_0x207d1d,null));};exports[_0x4789('0x151')]=function(_0x36bfd5,_0x4da4da){var _0x306d00={};var _0x350d32={};var _0x440707;var _0x54f34c;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x36bfd5[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x4da4da,null))[_0x4789('0x14')](function(_0x69e038){if(_0x69e038){_0x440707=_0x69e038;_0x350d32[_0x4789('0x56')]=_['keys'](db[_0x4789('0x152')][_0x4789('0x3d')]);_0x350d32['query']=_['keys'](_0x36bfd5[_0x4789('0x44')]);_0x350d32[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x350d32[_0x4789('0x56')],_0x350d32[_0x4789('0x44')]);_0x306d00[_0x4789('0x47')]=_['intersection'](_0x350d32['model'],qs['fields'](_0x36bfd5['query'][_0x4789('0x5b')]));_0x306d00[_0x4789('0x47')]=_0x306d00[_0x4789('0x47')][_0x4789('0x69')]?_0x306d00['attributes']:_0x350d32[_0x4789('0x56')];_0x306d00['order']=qs[_0x4789('0xd0')](_0x36bfd5[_0x4789('0x44')][_0x4789('0xd0')]);_0x306d00[_0x4789('0x43')]=qs[_0x4789('0x59')](_['pick'](_0x36bfd5[_0x4789('0x44')],_0x350d32[_0x4789('0x59')]));if(_0x36bfd5[_0x4789('0x44')][_0x4789('0x31')]){_0x306d00[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x306d00['where'],{'$or':_[_0x4789('0x33')](_0x306d00[_0x4789('0x47')],function(_0x16b222){var _0x228fe4={};_0x228fe4[_0x16b222]={'$like':'%'+_0x36bfd5[_0x4789('0x44')]['filter']+'%'};return _0x228fe4;})});}_0x306d00=_[_0x4789('0x5c')]({},_0x306d00,_0x36bfd5[_0x4789('0x5d')]);return _0x440707[_0x4789('0x151')](_0x306d00);}})[_0x4789('0x14')](function(_0xb9d4a7){if(_0xb9d4a7){_0x54f34c=_0xb9d4a7[_0x4789('0x69')];if(!_0x36bfd5[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x306d00[_0x4789('0x23')]=qs[_0x4789('0x23')](_0x36bfd5[_0x4789('0x44')]['limit']);_0x306d00['offset']=qs[_0x4789('0x22')](_0x36bfd5[_0x4789('0x44')][_0x4789('0x22')]);}return _0x440707['getChatWebsites'](_0x306d00);}})[_0x4789('0x14')](function(_0x2e08a5){if(_0x2e08a5){return _0x2e08a5?{'count':_0x54f34c,'rows':_0x2e08a5}:null;}})['then'](respondWithResult(_0x4da4da,null))[_0x4789('0x1e')](handleError(_0x4da4da,null));};exports['addChatWebsites']=function(_0x59c095,_0x5ce3ce){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x59c095[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x5ce3ce,null))[_0x4789('0x14')](function(_0x3adf47){if(_0x3adf47){return _0x3adf47[_0x4789('0x153')](_0x59c095[_0x4789('0x5e')][_0x4789('0x61')],_['omit'](_0x59c095[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x5ce3ce,null))[_0x4789('0x1e')](handleError(_0x5ce3ce,null));};exports[_0x4789('0x154')]=function(_0x6d52a1,_0x50fd80){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x6d52a1[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x50fd80,null))[_0x4789('0x14')](function(_0x4dbf89){if(_0x4dbf89){return _0x4dbf89[_0x4789('0x154')](_0x6d52a1[_0x4789('0x44')][_0x4789('0x61')]);}})[_0x4789('0x14')](respondWithStatusCode(_0x50fd80,null))[_0x4789('0x1e')](handleError(_0x50fd80,null));};exports['getWhatsappAccounts']=function(_0x2bfb5e,_0x538c25){var _0x105dbf={};var _0xda361={};var _0x308e7b;var _0x1629e0;return db[_0x4789('0x3c')]['findOne']({'where':{'id':_0x2bfb5e['params']['id']}})['then'](handleEntityNotFound(_0x538c25,null))[_0x4789('0x14')](function(_0x2ceaa6){if(_0x2ceaa6){_0x308e7b=_0x2ceaa6;_0xda361['model']=_[_0x4789('0x57')](db[_0x4789('0x155')]['rawAttributes']);_0xda361[_0x4789('0x44')]=_[_0x4789('0x57')](_0x2bfb5e[_0x4789('0x44')]);_0xda361['filters']=_[_0x4789('0x5a')](_0xda361['model'],_0xda361[_0x4789('0x44')]);_0x105dbf['attributes']=_[_0x4789('0x5a')](_0xda361['model'],qs['fields'](_0x2bfb5e[_0x4789('0x44')]['fields']));_0x105dbf[_0x4789('0x47')]=_0x105dbf[_0x4789('0x47')][_0x4789('0x69')]?_0x105dbf['attributes']:_0xda361[_0x4789('0x56')];_0x105dbf[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x2bfb5e[_0x4789('0x44')][_0x4789('0xd0')]);_0x105dbf[_0x4789('0x43')]=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x2bfb5e[_0x4789('0x44')],_0xda361[_0x4789('0x59')]));if(_0x2bfb5e[_0x4789('0x44')]['filter']){_0x105dbf[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x105dbf[_0x4789('0x43')],{'$or':_[_0x4789('0x33')](_0x105dbf[_0x4789('0x47')],function(_0x2e9821){var _0x36ed77={};_0x36ed77[_0x2e9821]={'$like':'%'+_0x2bfb5e[_0x4789('0x44')][_0x4789('0x31')]+'%'};return _0x36ed77;})});}_0x105dbf=_[_0x4789('0x5c')]({},_0x105dbf,_0x2bfb5e[_0x4789('0x5d')]);return _0x308e7b[_0x4789('0x156')](_0x105dbf);}})['then'](function(_0x593030){if(_0x593030){_0x1629e0=_0x593030[_0x4789('0x69')];if(!_0x2bfb5e['query']['hasOwnProperty'](_0x4789('0xd6'))){_0x105dbf['limit']=qs[_0x4789('0x23')](_0x2bfb5e[_0x4789('0x44')][_0x4789('0x23')]);_0x105dbf[_0x4789('0x22')]=qs['offset'](_0x2bfb5e[_0x4789('0x44')][_0x4789('0x22')]);}return _0x308e7b[_0x4789('0x156')](_0x105dbf);}})[_0x4789('0x14')](function(_0x82a593){if(_0x82a593){return _0x82a593?{'count':_0x1629e0,'rows':_0x82a593}:null;}})[_0x4789('0x14')](respondWithResult(_0x538c25,null))[_0x4789('0x1e')](handleError(_0x538c25,null));};exports['addWhatsappAccounts']=function(_0x47a9ac,_0x24581c){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x47a9ac['params']['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x24581c,null))[_0x4789('0x14')](function(_0x6c62b9){if(_0x6c62b9){return _0x6c62b9[_0x4789('0x157')](_0x47a9ac['body'][_0x4789('0x61')],_['omit'](_0x47a9ac['body'],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x24581c,null))[_0x4789('0x1e')](handleError(_0x24581c,null));};exports[_0x4789('0x158')]=function(_0x424541,_0x5602a3){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x424541[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x5602a3,null))[_0x4789('0x14')](function(_0x5987be){if(_0x5987be){return _0x5987be[_0x4789('0x158')](_0x424541[_0x4789('0x44')]['ids']);}})['then'](respondWithStatusCode(_0x5602a3,null))[_0x4789('0x1e')](handleError(_0x5602a3,null));};exports[_0x4789('0x159')]=function(_0x2554a6,_0x590e54){var _0x16850d={};var _0x5907ba={};var _0x194228;var _0x3bc514;return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x2554a6['params']['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x590e54,null))['then'](function(_0x43b89c){if(_0x43b89c){_0x194228=_0x43b89c;_0x5907ba[_0x4789('0x56')]=_[_0x4789('0x57')](db[_0x4789('0x15a')][_0x4789('0x3d')]);_0x5907ba[_0x4789('0x44')]=_['keys'](_0x2554a6[_0x4789('0x44')]);_0x5907ba[_0x4789('0x59')]=_[_0x4789('0x5a')](_0x5907ba[_0x4789('0x56')],_0x5907ba[_0x4789('0x44')]);_0x16850d[_0x4789('0x47')]=_[_0x4789('0x5a')](_0x5907ba['model'],qs[_0x4789('0x5b')](_0x2554a6[_0x4789('0x44')]['fields']));_0x16850d[_0x4789('0x47')]=_0x16850d[_0x4789('0x47')]['length']?_0x16850d['attributes']:_0x5907ba[_0x4789('0x56')];_0x16850d[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x2554a6['query'][_0x4789('0xd0')]);_0x16850d['where']=qs['filters'](_['pick'](_0x2554a6[_0x4789('0x44')],_0x5907ba['filters']));if(_0x2554a6[_0x4789('0x44')][_0x4789('0x31')]){_0x16850d[_0x4789('0x43')]=_['merge'](_0x16850d['where'],{'$or':_[_0x4789('0x33')](_0x16850d[_0x4789('0x47')],function(_0x1c0eda){var _0x5186d2={};_0x5186d2[_0x1c0eda]={'$like':'%'+_0x2554a6[_0x4789('0x44')]['filter']+'%'};return _0x5186d2;})});}_0x16850d=_[_0x4789('0x5c')]({},_0x16850d,_0x2554a6[_0x4789('0x5d')]);return _0x194228[_0x4789('0x159')](_0x16850d);}})[_0x4789('0x14')](function(_0x42ac10){if(_0x42ac10){_0x3bc514=_0x42ac10['length'];if(!_0x2554a6['query'][_0x4789('0xd1')](_0x4789('0xd6'))){_0x16850d[_0x4789('0x23')]=qs['limit'](_0x2554a6[_0x4789('0x44')][_0x4789('0x23')]);_0x16850d[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x2554a6[_0x4789('0x44')][_0x4789('0x22')]);}return _0x194228[_0x4789('0x159')](_0x16850d);}})[_0x4789('0x14')](function(_0x1a362c){if(_0x1a362c){return _0x1a362c?{'count':_0x3bc514,'rows':_0x1a362c}:null;}})['then'](respondWithResult(_0x590e54,null))[_0x4789('0x1e')](handleError(_0x590e54,null));};exports[_0x4789('0x15b')]=function(_0x3c9224,_0x1e8da0){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x3c9224[_0x4789('0x55')]['id']}})['then'](handleEntityNotFound(_0x1e8da0,null))[_0x4789('0x14')](function(_0x214197){if(_0x214197){return _0x214197[_0x4789('0x15b')](_0x3c9224[_0x4789('0x5e')][_0x4789('0x61')],_[_0x4789('0x62')](_0x3c9224[_0x4789('0x5e')],[_0x4789('0x61'),'id'])||{});}})[_0x4789('0x14')](respondWithResult(_0x1e8da0,null))[_0x4789('0x1e')](handleError(_0x1e8da0,null));};exports[_0x4789('0x15c')]=function(_0x614363,_0x193955){return db[_0x4789('0x3c')]['find']({'where':{'id':_0x614363[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x193955,null))[_0x4789('0x14')](function(_0x26594c){if(_0x26594c){return _0x26594c[_0x4789('0x15c')](_0x614363[_0x4789('0x44')][_0x4789('0x61')]);}})[_0x4789('0x14')](respondWithStatusCode(_0x193955,null))['catch'](handleError(_0x193955,null));};exports['getScheduledCalls']=function(_0x3cfb5e,_0x128dc4){var _0x41e0ee={},_0x33a03c={},_0x4c2c9f={'count':0x0,'rows':[]};var _0x3248ae=db[_0x4789('0x15d')][_0x4789('0x3d')];_0x33a03c[_0x4789('0x56')]=_['keys'](_0x3248ae);_0x33a03c['query']=_[_0x4789('0x57')](_0x3cfb5e[_0x4789('0x44')]);_0x33a03c['filters']=_[_0x4789('0x5a')](_0x33a03c[_0x4789('0x56')],_0x33a03c[_0x4789('0x44')]);_0x33a03c[_0x4789('0x59')]=_[_0x4789('0x103')](_0x33a03c[_0x4789('0x59')],[_0x4789('0x15e'),_0x4789('0x15f'),_0x4789('0x160'),_0x4789('0x161'),_0x4789('0x162'),'$lte',_0x4789('0x163'),'$eq',_0x4789('0x164'),_0x4789('0x165'),_0x4789('0x166'),_0x4789('0x167'),_0x4789('0x168'),_0x4789('0x169'),_0x4789('0x16a'),_0x4789('0x16b'),_0x4789('0x16c'),_0x4789('0x169'),_0x4789('0x16d'),_0x4789('0x16e'),_0x4789('0x16f'),_0x4789('0x170')]);_0x41e0ee['attributes']=_[_0x4789('0x5a')](_0x33a03c[_0x4789('0x56')],qs[_0x4789('0x5b')](_0x3cfb5e['query'][_0x4789('0x5b')]));_0x41e0ee[_0x4789('0x47')]=_0x41e0ee['attributes'][_0x4789('0x69')]?_0x41e0ee[_0x4789('0x47')]:_0x33a03c[_0x4789('0x56')];if(!_0x3cfb5e[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x41e0ee['limit']=qs[_0x4789('0x23')](_0x3cfb5e[_0x4789('0x44')][_0x4789('0x23')]);_0x41e0ee[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x3cfb5e[_0x4789('0x44')][_0x4789('0x22')]);}_0x41e0ee[_0x4789('0xcf')]=qs[_0x4789('0xd0')](_0x3cfb5e[_0x4789('0x44')][_0x4789('0xd0')]);_0x41e0ee['where']=qs[_0x4789('0x59')](_[_0x4789('0xd9')](_0x3cfb5e[_0x4789('0x44')],_0x33a03c[_0x4789('0x59')]));if(_0x3cfb5e[_0x4789('0x44')][_0x4789('0x31')]){_0x41e0ee[_0x4789('0x43')]=_[_0x4789('0x5c')](_0x41e0ee[_0x4789('0x43')],{'$or':_['map'](_0x41e0ee[_0x4789('0x47')],function(_0x2f0e44){var _0x496c8f={};_0x496c8f[_0x2f0e44]={'$like':'%'+_0x3cfb5e[_0x4789('0x44')]['filter']+'%'};return _0x496c8f;})});}_0x41e0ee[_0x4789('0x43')]={'$and':[_0x41e0ee[_0x4789('0x43')],{'$or':[{'UserId':_0x3cfb5e[_0x4789('0x55')]['id']},{'OwnerId':_0x3cfb5e[_0x4789('0x55')]['id']}]}]};_0x41e0ee=_['merge']({},_0x41e0ee,_0x3cfb5e['options']);var _0x54daba={'where':_0x41e0ee['where']};return db[_0x4789('0x15d')]['count'](_0x54daba)['then'](function(_0x45e7c2){_0x4c2c9f[_0x4789('0x25')]=_0x45e7c2;if(_0x3cfb5e[_0x4789('0x44')]['includeAll']){_0x41e0ee[_0x4789('0x46')]=[{'attributes':['id',_0x4789('0x171'),_0x4789('0x172'),_0x4789('0xee')],'model':db[_0x4789('0xce')],'as':_0x4789('0x173')},{'attributes':['id',_0x4789('0x37'),'dialActive'],'model':db[_0x4789('0xa8')],'as':_0x4789('0xd8')}];}return db[_0x4789('0x15d')][_0x4789('0x8a')](_0x41e0ee);})[_0x4789('0x14')](function(_0x3b4a23){_0x4c2c9f['rows']=_0x3b4a23;return _0x4c2c9f;})['then'](respondWithFilteredResult(_0x128dc4,_0x41e0ee))[_0x4789('0x1e')](handleError(_0x128dc4,null));};exports['getApiKey']=function(_0x263004,_0x27221a){if(!_['isNil'](_0x263004['user']['id'])&&(_0x263004[_0x4789('0x2d')][_0x4789('0x2a')]=='admin'||_0x263004[_0x4789('0x2d')][_0x4789('0x2a')]==_0x4789('0x2d'))){return db[_0x4789('0x3c')][_0x4789('0x96')]({'where':{'id':_0x263004['params']['id']},'raw':!![]})[_0x4789('0x14')](function(_0xae13e4){return authService['retrieveApiKey'](_0xae13e4);})[_0x4789('0x14')](function(_0x474398){if(_0x474398){return _0x27221a[_0x4789('0x20')](0xc8)[_0x4789('0x21')]({'api_key':_0x474398[_0x4789('0x174')]});}else{return _0x27221a[_0x4789('0x20')](0xcc)[_0x4789('0x21')]({'message':_0x4789('0x175')});}})[_0x4789('0x1e')](handleError(_0x27221a,0x193));}else{return _0x27221a[_0x4789('0x20')](0x191)['json']({'message':_0x4789('0x176')});}};exports[_0x4789('0x177')]=function(_0x47d263,_0x2e041d){if(!_[_0x4789('0x6a')](_0x47d263['user']['id'])&&(_0x47d263[_0x4789('0x2d')]['role']==_0x4789('0x2b')||_0x47d263['user']['role']=='user')){return db[_0x4789('0x3c')][_0x4789('0x36')]({'where':{'id':_0x47d263[_0x4789('0x55')]['id']}})['then'](function(_0x105d2b){return authService[_0x4789('0x178')](_0x105d2b);})[_0x4789('0x14')](function(_0x1f1353){return db[_0x4789('0x3c')][_0x4789('0x28')]({'apiKeyIat':_0x1f1353[_0x4789('0x179')],'apiKeyNonce':_0x1f1353[_0x4789('0x17a')]},{'where':{'id':_0x47d263[_0x4789('0x55')]['id']}})[_0x4789('0x14')](function(){return _0x2e041d[_0x4789('0x20')](0xc8)[_0x4789('0x21')]({'api_key':_0x1f1353[_0x4789('0x174')]});});})[_0x4789('0x1e')](handleError(_0x2e041d,0x193));}else{return _0x2e041d[_0x4789('0x20')](0x191)[_0x4789('0x21')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['removeApiKey']=function(_0x2b8074,_0x3f7f70){if(!_[_0x4789('0x6a')](_0x2b8074['user']['id'])&&(_0x2b8074['user'][_0x4789('0x2a')]==_0x4789('0x2b')||_0x2b8074['user'][_0x4789('0x2a')]==_0x4789('0x2d'))){return db[_0x4789('0x3c')]['find']({'where':{'id':_0x2b8074[_0x4789('0x55')]['id']}})[_0x4789('0x14')](handleEntityNotFound(_0x3f7f70,null))[_0x4789('0x14')](function(_0xb14b73){if(_0xb14b73&&_0xb14b73[_0x4789('0x17b')]&&_0xb14b73['apiKeyIat'])return _0xb14b73;else throw{'message':_0x4789('0x17c')};})[_0x4789('0x14')](function(_0x32bedb){return db['User'][_0x4789('0x28')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x2b8074[_0x4789('0x55')]['id']}});})[_0x4789('0x14')](respondWithStatusCode(_0x3f7f70,0xc8))['catch'](handleError(_0x3f7f70,0x193));}else{return _0x3f7f70[_0x4789('0x20')](0x191)[_0x4789('0x21')]({'message':_0x4789('0x176')});}};exports[_0x4789('0x17d')]=function(_0x3cd13c,_0x18d0d4){var _0x1a1e71=_0x3cd13c[_0x4789('0x2d')][_0x4789('0x29')]({'plain':!![]});if(!_0x1a1e71){return _0x18d0d4[_0x4789('0x20')](0x191)['send']('Unable\x20to\x20retrieve\x20the\x20current\x20user');}else{return _0x18d0d4[_0x4789('0x20')](0xc8)[_0x4789('0x21')](_0x1a1e71);}};exports[_0x4789('0x17e')]=function(_0x569818,_0x208c08){var _0x3c5665={'offset':0x0},_0x16f0f8={'count':0x0,'rows':[]};Promise['resolve']()[_0x4789('0x14')](function(){if(!_0x569818[_0x4789('0x44')][_0x4789('0x31')]&&!_0x569818[_0x4789('0x44')][_0x4789('0x17f')]&&!_0x569818['query'][_0x4789('0x180')])return[];return Promise[_0x4789('0x105')]()['then'](function(){var _0x3da2cf=[];if(!_[_0x4789('0x181')](_0x569818['query'][_0x4789('0x17f')])){_0x3da2cf[_0x4789('0x48')](db[_0x4789('0x114')][_0x4789('0x8a')]({'attributes':['id',_0x4789('0x37')],'where':{'id':_0x569818[_0x4789('0x44')]['teams']}}));}if(!_[_0x4789('0x181')](_0x569818[_0x4789('0x44')][_0x4789('0x180')])){_0x3da2cf[_0x4789('0x48')](db[_0x4789('0xa8')][_0x4789('0x8a')]({'attributes':['id',_0x4789('0x37')],'type':_0x4789('0x182'),'where':{'id':_0x569818['query'][_0x4789('0x180')]}}));}return Promise['all'](_0x3da2cf);})['then'](function(_0x46da31){var _0x3ae8a3=_[_0x4789('0x120')](_0x46da31)[_0x4789('0x33')](function(_0xfb896){return _0xfb896[_0x4789('0x183')]({'attributes':['id',_0x4789('0x37'),_0x4789('0x63'),_0x4789('0x9e')],'raw':!![]});});return Promise['all'](_0x3ae8a3);})[_0x4789('0x14')](function(_0x49c07d){var _0x4d3559=_[_0x4789('0x120')](_0x49c07d);if(!_0x569818[_0x4789('0x44')]['filter'])return _0x4d3559;if(_[_0x4789('0x181')](_0x4d3559)){return db['User'][_0x4789('0x8a')]({'attributes':['id',_0x4789('0x37'),'internal',_0x4789('0x9e')],'where':{'role':_0x4789('0x2f'),'$or':[db['sequelize']['where'](db[_0x4789('0x66')]['fn'](_0x4789('0x184'),db[_0x4789('0x66')][_0x4789('0x185')](_0x4789('0x37'))),{'$like':'%'+_0x569818[_0x4789('0x44')][_0x4789('0x31')][_0x4789('0xa3')]()+'%'}),{'internal':{'$like':'%'+_0x569818[_0x4789('0x44')][_0x4789('0x31')]+'%'}}]},'raw':!![]});}else{return _(_0x4d3559)[_0x4789('0x120')]()[_0x4789('0x31')](function(_0x2f9c7a){return _0x2f9c7a[_0x4789('0x37')][_0x4789('0xa3')]()[_0x4789('0x35')](_0x569818[_0x4789('0x44')][_0x4789('0x31')][_0x4789('0xa3')]())||_0x2f9c7a[_0x4789('0x63')]['toString']()['includes'](_0x569818[_0x4789('0x44')][_0x4789('0x31')]);})[_0x4789('0x34')]();}})[_0x4789('0x14')](function(_0x39c7ae){var _0x267e90='name';var _0x32c159=_0x4789('0x186');if(_0x569818[_0x4789('0x44')][_0x4789('0xd0')]){var _0x32c159=_0x569818[_0x4789('0x44')][_0x4789('0xd0')][0x0]==='-'?_0x4789('0x187'):_0x4789('0x186');var _0x267e90=_0x32c159===_0x4789('0x186')?_0x569818[_0x4789('0x44')][_0x4789('0xd0')]:_0x569818[_0x4789('0x44')][_0x4789('0xd0')]['substring'](0x1);}return _(_0x39c7ae)['uniqBy']('id')[_0x4789('0x188')]([function(_0x3fa164){return _0x267e90===_0x4789('0x37')?_0x3fa164[_0x267e90][_0x4789('0xa3')]():_0x3fa164[_0x267e90];}],[_0x32c159])['map'](function(_0x4187c0){return _[_0x4789('0xd9')](_0x4187c0,['id',_0x4789('0x37'),_0x4789('0x63'),_0x4789('0x9e')]);})[_0x4789('0x34')]();})[_0x4789('0x14')](function(_0x32c68c){return client[_0x4789('0x189')](_0x4789('0x2e'),_0x569818)[_0x4789('0x14')](function(_0x47cffe){if(_0x47cffe[_0x4789('0x1a')])throw new Error(_0x4789('0x18a'));var _0xac971d=_0x47cffe['result'];var _0xe43491=jayson['client'][_0x4789('0x13')]({'port':0x232c});return _0xe43491[_0x4789('0x189')](_0x4789('0x2e'),_0x569818)[_0x4789('0x14')](function(_0x24bc7a){if(_0x24bc7a[_0x4789('0x1a')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x54e8c9=_0x24bc7a[_0x4789('0x1d')];return _[_0x4789('0x5c')]({},_0x54e8c9,_0xac971d);});})[_0x4789('0x14')](function(_0xdee032){return _[_0x4789('0x33')](_0x32c68c,function(_0x3b9398){var _0x9366=_[_0x4789('0x36')](_0xdee032['rows'],['id',_0x3b9398['id']]);if(!_0x9366||!_0x3b9398[_0x4789('0x9e')]){_0x3b9398[_0x4789('0x20')]=_0x4789('0x18b');}else if(_0x9366['voicePause']){_0x3b9398[_0x4789('0x20')]=_0x4789('0x107');}else{_0x3b9398['status']=_[_0x4789('0x35')]([_0x4789('0x18c'),'unknown',_0x4789('0x18d'),_0x4789('0x18e'),null,undefined],_0x9366[_0x4789('0x18f')])?_0x4789('0x9e'):_0x4789('0x190');}return _0x3b9398;});});});})[_0x4789('0x14')](function(_0x5526eb){if(!_0x569818[_0x4789('0x44')][_0x4789('0xd1')](_0x4789('0xd6'))){_0x3c5665['limit']=qs[_0x4789('0x23')](_0x569818[_0x4789('0x44')]['limit']||0xa);_0x3c5665[_0x4789('0x22')]=qs[_0x4789('0x22')](_0x569818[_0x4789('0x44')][_0x4789('0x22')]);}_0x16f0f8[_0x4789('0x25')]=_0x5526eb[_0x4789('0x69')];_0x16f0f8[_0x4789('0x49')]=_0x3c5665['limit']?_0x5526eb[_0x4789('0x191')](_0x3c5665[_0x4789('0x22')],_0x3c5665['offset']+_0x3c5665[_0x4789('0x23')]):_0x5526eb;return _0x16f0f8;})[_0x4789('0x14')](respondWithFilteredResult(_0x208c08,_0x3c5665))['catch'](handleError(_0x208c08,null));};function get_open_tabs(_0x51ba23,_0x2b2117){var _0x12d40c=_0x51ba23['charAt'](0x0)['toUpperCase']()+_0x51ba23['slice'](0x1);var _0x4f030f={'type':db[_0x4789('0x8f')]['QueryTypes'][_0x4789('0x68')],'raw':!![]};return new BPromise(function(_0x1e98d8,_0x45fee4){var _0x1d574d=squel[_0x4789('0x192')]()[_0x4789('0x193')](_0x4789('0x194')+_0x12d40c+_0x4789('0x195'),'id')[_0x4789('0x193')](_0x4789('0x196'))[_0x4789('0x6b')](_0x4789('0x197')+_0x51ba23+_0x4789('0x198'),'ui')[_0x4789('0x43')](_0x4789('0x199'),_0x2b2117['id']);return db[_0x4789('0x66')]['query'](_0x1d574d[_0x4789('0x19a')](),_0x4f030f)[_0x4789('0x14')](function(_0x417b2d){_0x2b2117[_0x12d40c+_0x4789('0x19b')]=_0x417b2d;_0x1e98d8(_0x417b2d);})[_0x4789('0x1e')](function(_0x315b2b){_0x45fee4(_0x315b2b);});});};
\ No newline at end of file
+var _0xb7e7=['UserProfileSection','autoAssociation','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','findAll','isEmpty','map','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','updatePasswordsHistory','addQueues','channel','voicePause','interface','isValidChannel','Unknown\x20channel','capitalize','Queues','penalty','toLowerCase','QueueId','emit','Queue:save','voice','online','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','Queue:remove','addAvatar','userpic','file','filename','getAvatar','join','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','chat','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','WhatsappOpenTabs','getContacts','CmContact','order','sort','pick','hasOwnProperty','CmList','List','tag','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','loginInPause','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','MemberReport','bulkCreate','concat','LOGININPAUSE','isMiddleware','resolve','logout','pause','updateAttributes','DEFAULT\x20PAUSE','unpause','mailPause','faxPause','openchannelPause','whatsapppause','pauseType','lastPauseAt','QueuePause','manual','set','%s%s','Pause','getTeams','Team','addTeams','getVoiceQueues','setDataValue','Voice','getChatQueues','Chat','getMailQueues','getSmsQueues','Sms','getWhatsappQueues','Whatsapp','getFaxQueues','getOpenchannelQueues','Openchannel','flatten','transaction','getDataValue','removeTeams','Mail','Fax','removeAgent','getLists','getAgents','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','isArray','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','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$or','$gt','$gte','$lt','$lte','$eq','$not','$between','$notBetween','$in','$notLike','$iLike','$like','$overlap','$contained','$any','CmHopper','firstName','lastName','dialActive','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getPresence','queues','teams','inbound','lower','col','toString','asc','uniqBy','client','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','SELECT','select','InteractionId','field','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','moment','util','lodash','jayson/promise','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','./user.socket','register','defaults','localhost','http','request','info','request\x20sent','stringify','error','code','message','User,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','update','then','get','role','admin','Users','Agents','agent','Telephones','telephone','filter','ignore','value','includes','find','name','UserProfileResource','destroy','stack','send','index','User','rawAttributes','fieldName','type','key','password','where','query','includeAll','include','attributes','true','rows','length','push','dataValues','sms','mail','all','show','params','differenceBy','keys','filters','intersection','model','fields','merge','options','openTabs','openchannel','whatsapp','fax','body','describe','addContacts','omit','ids','internal','Setting','findById','max','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','isNil','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','103','105','106','107','109','100','111','115','create','user','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','checkUserLimits','settingsEnabled','userProfileId'];(function(_0x43cb7b,_0x1745d8){var _0x166525=function(_0xc33c15){while(--_0xc33c15){_0x43cb7b['push'](_0x43cb7b['shift']());}};_0x166525(++_0x1745d8);}(_0xb7e7,0x121));var _0x7b7e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xb7e7[_0x9df060];return _0x338dfe;};'use strict';var moment=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var util=require(_0x7b7e('0x1'));var path=require('path');var fs=require('fs');var _=require(_0x7b7e('0x2'));var squel=require('squel');var jayson=require(_0x7b7e('0x3'));var Redis=require('ioredis');var authService=require(_0x7b7e('0x4'));var qs=require(_0x7b7e('0x5'));var logger=require(_0x7b7e('0x6'))('api');var utils=require('../../config/utils');var config=require(_0x7b7e('0x7'));var licenseUtil=require(_0x7b7e('0x8'));var db=require(_0x7b7e('0x9'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x7b7e('0xa')]));require(_0x7b7e('0xb'))[_0x7b7e('0xc')](socket);config[_0x7b7e('0xa')]=_[_0x7b7e('0xd')](config[_0x7b7e('0xa')],{'host':_0x7b7e('0xe'),'port':0x18eb});var client=jayson['client'][_0x7b7e('0xf')]({'port':0x232a});var values;function respondWithRpcPromise(_0x1eef0a,_0x10a666,_0x29b622,_0xd581fb){return new BPromise(function(_0x18a1de,_0x36d2a3){var _0x55620b=_0xd581fb||client;return _0x55620b[_0x7b7e('0x10')](_0x1eef0a,_0x29b622)['then'](function(_0x267446){logger[_0x7b7e('0x11')]('User,\x20%s,\x20%s',_0x10a666,_0x7b7e('0x12'));logger['debug']('User,\x20%s,\x20%s,\x20%s',_0x10a666,_0x7b7e('0x12'),JSON[_0x7b7e('0x13')](_0x267446));if(_0x267446[_0x7b7e('0x14')]){if(_0x267446[_0x7b7e('0x14')][_0x7b7e('0x15')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x10a666,_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);return _0x36d2a3(_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);}logger[_0x7b7e('0x14')](_0x7b7e('0x17'),_0x10a666,_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);return _0x18a1de(_0x267446[_0x7b7e('0x14')][_0x7b7e('0x16')]);}else{logger[_0x7b7e('0x11')](_0x7b7e('0x17'),_0x10a666,_0x7b7e('0x12'));_0x18a1de(_0x267446[_0x7b7e('0x18')][_0x7b7e('0x16')]);}})[_0x7b7e('0x19')](function(_0x3a7b8b){logger['error'](_0x7b7e('0x17'),_0x10a666,_0x3a7b8b);_0x36d2a3(_0x3a7b8b);});});}function respondWithStatusCode(_0x43db4f,_0x24718c){_0x24718c=_0x24718c||0xcc;return function(_0x4c0647){if(_0x4c0647){return _0x43db4f[_0x7b7e('0x1a')](_0x24718c);}return _0x43db4f[_0x7b7e('0x1b')](_0x24718c)[_0x7b7e('0x1c')]();};}function respondWithResult(_0x200156,_0x2b7211){_0x2b7211=_0x2b7211||0xc8;return function(_0x303d8c){if(_0x303d8c){return _0x200156[_0x7b7e('0x1b')](_0x2b7211)[_0x7b7e('0x1d')](_0x303d8c);}};}function respondWithFilteredResult(_0x53bbb3,_0x5d6215){return function(_0x4a836a){if(_0x4a836a){var _0x26ee14=typeof _0x5d6215[_0x7b7e('0x1e')]===_0x7b7e('0x1f')&&typeof _0x5d6215['limit']==='undefined';var _0x5dadbb=_0x4a836a[_0x7b7e('0x20')];var _0x3c8192=_0x26ee14?0x0:_0x5d6215[_0x7b7e('0x1e')];var _0x7aa71=_0x26ee14?_0x4a836a[_0x7b7e('0x20')]:_0x5d6215['offset']+_0x5d6215[_0x7b7e('0x21')];var _0x21a15;if(_0x7aa71>=_0x5dadbb){_0x7aa71=_0x5dadbb;_0x21a15=0xc8;}else{_0x21a15=0xce;}_0x53bbb3['status'](_0x21a15);return _0x53bbb3['set']('Content-Range',_0x3c8192+'-'+_0x7aa71+'/'+_0x5dadbb)[_0x7b7e('0x1d')](_0x4a836a);}return null;};}function saveUpdates(_0x423832){return function(_0x503625){if(_0x503625){return _0x503625[_0x7b7e('0x22')](_0x423832)['then'](function(_0x1b4341){return _0x1b4341;});}return null;};}function removeEntity(_0xb9b6bf){return function(_0x27b525){if(_0x27b525){return _0x27b525['destroy']()[_0x7b7e('0x23')](function(){var _0xe31336=_0x27b525[_0x7b7e('0x24')]({'plain':!![]});if(_0xe31336[_0x7b7e('0x25')]===_0x7b7e('0x26'))return;var _0x5732ee=[{'name':_0x7b7e('0x27'),'value':'user','ignore':!![]},{'name':_0x7b7e('0x28'),'value':_0x7b7e('0x29'),'ignore':![]},{'name':_0x7b7e('0x2a'),'value':_0x7b7e('0x2b'),'ignore':![]}];var _0x378faa=_(_0x5732ee)[_0x7b7e('0x2c')](_0x7b7e('0x2d'))['map']('value')[_0x7b7e('0x2e')]();if(_[_0x7b7e('0x2f')](_0x378faa,_0xe31336['role'])){return;}var _0x3a3bc7=_[_0x7b7e('0x30')](_0x5732ee,[_0x7b7e('0x2e'),_0xe31336['role']])[_0x7b7e('0x31')];return db[_0x7b7e('0x32')][_0x7b7e('0x33')]({'where':{'type':_0x3a3bc7,'resourceId':_0xe31336['id']}})[_0x7b7e('0x23')](function(){return _0x27b525;});})[_0x7b7e('0x23')](function(){_0xb9b6bf[_0x7b7e('0x1b')](0xcc)[_0x7b7e('0x1c')]();});}};}function handleEntityNotFound(_0x202f04){return function(_0x44497c){if(!_0x44497c){_0x202f04[_0x7b7e('0x1a')](0x194);}return _0x44497c;};}function handleError(_0xd5a64d,_0x2d0620){_0x2d0620=_0x2d0620||0x1f4;return function(_0x442366){logger[_0x7b7e('0x14')](_0x442366[_0x7b7e('0x34')]);if(_0x442366[_0x7b7e('0x31')]){delete _0x442366['name'];}_0xd5a64d[_0x7b7e('0x1b')](_0x2d0620)[_0x7b7e('0x35')](_0x442366);};}exports[_0x7b7e('0x36')]=function(_0x242609,_0x36abfc){var _0x909c65={},_0x7f15={'count':0x0,'rows':[]};var _0x1e6280=_(db[_0x7b7e('0x37')][_0x7b7e('0x38')])['map'](function(_0x3d6571){return{'name':_0x3d6571[_0x7b7e('0x39')],'type':_0x3d6571[_0x7b7e('0x3a')][_0x7b7e('0x3b')]};})['filter'](function(_0x280748){return!_[_0x7b7e('0x2f')]([_0x7b7e('0x3c'),'salt'],_0x280748['name']);})[_0x7b7e('0x2e')]();_0x909c65=qs['getOptions'](_0x1e6280,_0x242609);var _0x35382c={'where':_0x909c65[_0x7b7e('0x3d')]};return db['User'][_0x7b7e('0x20')](_0x35382c)[_0x7b7e('0x23')](function(_0x2a6f4d){_0x7f15[_0x7b7e('0x20')]=_0x2a6f4d;if(_0x242609[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x909c65[_0x7b7e('0x40')]=[{'all':!![]}];}if(!_[_0x7b7e('0x2f')](_0x909c65[_0x7b7e('0x41')],'id')){_0x909c65['attributes']['push']('id');}return db[_0x7b7e('0x37')]['findAll'](_0x909c65);})[_0x7b7e('0x23')](function(_0x5e8b5d){_0x7f15['rows']=_0x5e8b5d;if(_0x242609[_0x7b7e('0x3e')]['openTabs']===_0x7b7e('0x42')){var _0x52051c=[];for(var _0xa8521d=0x0;_0xa8521d<_0x7f15[_0x7b7e('0x43')][_0x7b7e('0x44')];_0xa8521d++){_0x52051c[_0x7b7e('0x45')](get_open_tabs('chat',_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x47'),_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c['push'](get_open_tabs('fax',_0x7f15['rows'][_0xa8521d][_0x7b7e('0x46')]));_0x52051c[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x48'),_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c[_0x7b7e('0x45')](get_open_tabs('openchannel',_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));_0x52051c['push'](get_open_tabs('whatsapp',_0x7f15[_0x7b7e('0x43')][_0xa8521d][_0x7b7e('0x46')]));}return BPromise[_0x7b7e('0x49')](_0x52051c)[_0x7b7e('0x23')](function(_0x38b4d0){return _0x7f15;});}else{return _0x7f15;}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x36abfc,_0x909c65))['catch'](handleError(_0x36abfc,null));};exports[_0x7b7e('0x4a')]=function(_0x4cc7db,_0x402793){var _0x1dad4c={'raw':![],'where':{'id':_0x4cc7db[_0x7b7e('0x4b')]['id']}},_0x2ea2b2={};_0x2ea2b2['model']=_[_0x7b7e('0x4c')](_[_0x7b7e('0x4d')](db[_0x7b7e('0x37')][_0x7b7e('0x38')]),[_0x7b7e('0x3c'),'salt']);_0x2ea2b2[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x4cc7db[_0x7b7e('0x3e')]);_0x2ea2b2[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x2ea2b2['model'],_0x2ea2b2[_0x7b7e('0x3e')]);_0x1dad4c[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2ea2b2[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x4cc7db[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x1dad4c['attributes']=_0x1dad4c[_0x7b7e('0x41')]['length']?_0x1dad4c[_0x7b7e('0x41')]:_0x2ea2b2[_0x7b7e('0x50')];if(_0x4cc7db['query'][_0x7b7e('0x3f')]){_0x1dad4c[_0x7b7e('0x40')]=[{'all':!![]}];}_0x1dad4c=_[_0x7b7e('0x52')]({},_0x1dad4c,_0x4cc7db[_0x7b7e('0x53')]);if(!_[_0x7b7e('0x2f')](_0x1dad4c[_0x7b7e('0x41')],'id')){_0x1dad4c[_0x7b7e('0x41')]['push']('id');}return db[_0x7b7e('0x37')][_0x7b7e('0x30')](_0x1dad4c)[_0x7b7e('0x23')](handleEntityNotFound(_0x402793,null))[_0x7b7e('0x23')](function(_0x5b9ab5){var _0x527403=[];values=_0x5b9ab5;if(_0x4cc7db['query'][_0x7b7e('0x54')]===_0x7b7e('0x42')){_0x527403[_0x7b7e('0x45')](get_open_tabs('chat',_0x5b9ab5['dataValues']));_0x527403[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x47'),_0x5b9ab5['dataValues']));_0x527403[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x55'),_0x5b9ab5[_0x7b7e('0x46')]));_0x527403['push'](get_open_tabs(_0x7b7e('0x56'),_0x5b9ab5[_0x7b7e('0x46')]));_0x527403['push'](get_open_tabs(_0x7b7e('0x57'),_0x5b9ab5[_0x7b7e('0x46')]));_0x527403[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x48'),_0x5b9ab5[_0x7b7e('0x46')]));return BPromise[_0x7b7e('0x49')](_0x527403);}else{return values;}})[_0x7b7e('0x23')](function(_0x2d1908){return values;})[_0x7b7e('0x23')](respondWithResult(_0x402793,null))['catch'](handleError(_0x402793,null));};exports[_0x7b7e('0x22')]=function(_0x20108a,_0x516e75){if(_0x20108a[_0x7b7e('0x58')]['id']){delete _0x20108a[_0x7b7e('0x58')]['id'];}delete _0x20108a[_0x7b7e('0x58')]['role'];return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x20108a[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x516e75,null))['then'](saveUpdates(_0x20108a[_0x7b7e('0x58')],null))[_0x7b7e('0x23')](respondWithResult(_0x516e75,null))['catch'](handleError(_0x516e75,null));};exports[_0x7b7e('0x59')]=function(_0x369103,_0x1d43af){return db[_0x7b7e('0x37')]['describe']()[_0x7b7e('0x23')](respondWithResult(_0x1d43af,null))[_0x7b7e('0x19')](handleError(_0x1d43af,null));};exports[_0x7b7e('0x5a')]=function(_0x7f705c,_0x2dc7ad){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x7f705c[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2dc7ad,null))[_0x7b7e('0x23')](function(_0x5b9010){if(_0x5b9010){return _0x5b9010[_0x7b7e('0x5a')](_0x7f705c['body']['ids'],_[_0x7b7e('0x5b')](_0x7f705c[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x2dc7ad,null))['catch'](handleError(_0x2dc7ad,null));};function validateUser(_0x275998){return new BPromise(function(_0x45e714,_0x3f2825){if(_0x275998[_0x7b7e('0x5d')])return _0x45e714(_0x275998);return db[_0x7b7e('0x5e')][_0x7b7e('0x5f')](0x1)['then'](function(_0x1ebd58){if(_0x1ebd58['securePassword'])authService['validatePasswordPattern'](_0x275998[_0x7b7e('0x3c')]);db['User'][_0x7b7e('0x60')]('internal')[_0x7b7e('0x23')](function(_0x148dde){if(_['isNil'](_0x148dde)){_0x275998[_0x7b7e('0x5d')]=_0x1ebd58[_0x7b7e('0x61')]||0x1;return;}if(_['isNil'](_0x1ebd58[_0x7b7e('0x61')])||_0x1ebd58[_0x7b7e('0x61')]===_0x148dde){_0x275998[_0x7b7e('0x5d')]=_0x148dde+0x1;return;}if(_0x1ebd58[_0x7b7e('0x61')]>_0x148dde){_0x275998[_0x7b7e('0x5d')]=_0x1ebd58[_0x7b7e('0x61')];return;}return db[_0x7b7e('0x62')][_0x7b7e('0x3e')](_0x7b7e('0x63'),{'type':db[_0x7b7e('0x62')]['QueryTypes']['SELECT']})[_0x7b7e('0x23')](function(_0x46ac1f){if(_0x46ac1f&&_0x46ac1f[_0x7b7e('0x44')]){for(var _0x348c77=0x0,_0xea39fa=_0x46ac1f[_0x7b7e('0x44')];_0x348c77<_0xea39fa&&_[_0x7b7e('0x64')](_0x275998['internal']);_0x348c77++){if(_0x1ebd58[_0x7b7e('0x61')]<=_0x46ac1f[_0x348c77][_0x7b7e('0x65')]){_0x275998['internal']=_0x46ac1f[_0x348c77][_0x7b7e('0x65')];}else if(_0x1ebd58[_0x7b7e('0x61')]>_0x46ac1f[_0x348c77][_0x7b7e('0x65')]&&_0x1ebd58[_0x7b7e('0x61')]<=_0x46ac1f[_0x348c77]['to']){_0x275998[_0x7b7e('0x5d')]=_0x1ebd58[_0x7b7e('0x61')];}}}if(_[_0x7b7e('0x64')](_0x275998[_0x7b7e('0x5d')])){_0x275998[_0x7b7e('0x5d')]=_0x148dde+0x1;}return _0x45e714(_0x275998);});});})[_0x7b7e('0x19')](function(_0x81617c){_0x3f2825(_0x81617c);});});}function updateUser(_0x4dd6f5){return new BPromise(function(_0xf25350,_0x131ad5){try{if(_0x4dd6f5[_0x7b7e('0x66')]){_0x4dd6f5[_0x7b7e('0x67')]=_0x4dd6f5[_0x7b7e('0x5d')];_0x4dd6f5[_0x7b7e('0x68')]={'mailbox':_0x4dd6f5[_0x7b7e('0x5d')],'password':_0x4dd6f5['password'],'fullname':_0x4dd6f5[_0x7b7e('0x69')],'email':_0x4dd6f5[_0x7b7e('0x6a')]};}if(_0x4dd6f5[_0x7b7e('0x25')]==='agent'){if(!_0x4dd6f5[_0x7b7e('0x6b')])_0x4dd6f5[_0x7b7e('0x6b')]=[_0x7b7e('0x6c'),_0x7b7e('0x6d'),_0x7b7e('0x6e'),'113','110','104',_0x7b7e('0x6f'),_0x7b7e('0x70'),_0x7b7e('0x71'),'108',_0x7b7e('0x72'),_0x7b7e('0x73'),_0x7b7e('0x74'),'114',_0x7b7e('0x75')];}_0xf25350(_0x4dd6f5);}catch(_0x2b27ef){_0x131ad5(_0x2b27ef);}});}exports[_0x7b7e('0x76')]=function(_0x34a06c,_0x538c5f){if(_0x34a06c[_0x7b7e('0x77')][_0x7b7e('0x25')]===_0x7b7e('0x29'))throw new Error(_0x7b7e('0x78'));if(_0x34a06c['body']['role']===_0x7b7e('0x77')&&_0x34a06c['user'][_0x7b7e('0x25')]!==_0x7b7e('0x26')){throw new Error(_0x7b7e('0x79'));}if(_0x34a06c[_0x7b7e('0x58')]['role']===_0x7b7e('0x26')&&_0x34a06c[_0x7b7e('0x77')][_0x7b7e('0x25')]!==_0x7b7e('0x26')){throw new Error(_0x7b7e('0x7a'));}return licenseUtil[_0x7b7e('0x7b')]([_0x34a06c[_0x7b7e('0x58')]])[_0x7b7e('0x23')](function(){return validateUser(_0x34a06c[_0x7b7e('0x58')]);})[_0x7b7e('0x23')](function(_0x13f8e3){return updateUser(_0x13f8e3)[_0x7b7e('0x23')](function(_0xbdc4b9){if(_0xbdc4b9[_0x7b7e('0x25')]===_0x7b7e('0x26')){_0xbdc4b9[_0x7b7e('0x7c')]=_0x34a06c['user'][_0x7b7e('0x7c')];delete _0xbdc4b9[_0x7b7e('0x7d')];}return _0xbdc4b9;});})[_0x7b7e('0x23')](function(_0xa03d7a){return db[_0x7b7e('0x37')][_0x7b7e('0x76')](_0xa03d7a,{'include':[{'model':db[_0x7b7e('0x68')],'as':'VoiceMail'}]});})[_0x7b7e('0x23')](function(_0x3880be){if(_0x34a06c[_0x7b7e('0x58')][_0x7b7e('0x25')]===_0x7b7e('0x77'))return _0x3880be;if(_0x34a06c['user']['role']!==_0x7b7e('0x77'))return _0x3880be;return db[_0x7b7e('0x7e')][_0x7b7e('0x30')]({'where':{'name':_0x3880be[_0x7b7e('0x25')]===_0x7b7e('0x29')?_0x7b7e('0x28'):_0x7b7e('0x2a'),'userProfileId':_0x34a06c[_0x7b7e('0x77')][_0x7b7e('0x7d')]},'raw':!![]})[_0x7b7e('0x23')](function(_0x4ce589){if(!_0x4ce589||_0x4ce589[_0x7b7e('0x7f')]!=0x0)return _0x3880be;return db[_0x7b7e('0x32')][_0x7b7e('0x76')]({'name':_0x3880be[_0x7b7e('0x31')],'resourceId':_0x3880be['id'],'type':_0x4ce589[_0x7b7e('0x31')],'sectionId':_0x4ce589['id']},{})[_0x7b7e('0x23')](function(){return _0x3880be;});})[_0x7b7e('0x19')](function(_0x4fa49d){logger[_0x7b7e('0x14')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4fa49d);throw _0x4fa49d;});})[_0x7b7e('0x23')](respondWithResult(_0x538c5f,0xc9))[_0x7b7e('0x19')](handleError(_0x538c5f,null));};exports['bulkCreate']=function(_0x61424f,_0x38fd40){var _0x28e81c=_0x61424f[_0x7b7e('0x58')];var _0x3faf4c=[];if(_0x61424f['user'][_0x7b7e('0x25')]==='agent')throw new Error('Unauthorized');if(_[_0x7b7e('0x80')](_0x28e81c,[_0x7b7e('0x25'),_0x7b7e('0x77')])&&_0x61424f[_0x7b7e('0x77')]['role']!==_0x7b7e('0x26')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0x7b7e('0x80')](_0x28e81c,[_0x7b7e('0x25'),_0x7b7e('0x26')])&&_0x61424f[_0x7b7e('0x77')][_0x7b7e('0x25')]!==_0x7b7e('0x26')){throw new Error(_0x7b7e('0x81'));}return licenseUtil['checkUserLimits'](_0x28e81c)[_0x7b7e('0x23')](function(){return validateUser(_0x28e81c[0x0]);})[_0x7b7e('0x23')](function(){for(var _0x4acf8b=0x1;_0x4acf8b<_0x28e81c[_0x7b7e('0x44')];_0x4acf8b++){var _0x43c42e=_0x28e81c[_0x4acf8b-0x1][_0x7b7e('0x5d')];if(!_0x28e81c[_0x4acf8b][_0x7b7e('0x5d')])_0x28e81c[_0x4acf8b][_0x7b7e('0x5d')]=_0x43c42e+0x1;_0x3faf4c[_0x7b7e('0x45')](validateUser(_0x28e81c[_0x4acf8b]));}return BPromise[_0x7b7e('0x49')](_0x3faf4c);})[_0x7b7e('0x23')](function(){_0x3faf4c=[];for(var _0x41e2b5=0x0;_0x41e2b5<_0x28e81c[_0x7b7e('0x44')];_0x41e2b5++){_0x3faf4c[_0x7b7e('0x45')](updateUser(_0x28e81c[_0x41e2b5]));}return BPromise[_0x7b7e('0x49')](_0x3faf4c);})[_0x7b7e('0x23')](function(){return BPromise[_0x7b7e('0x82')](_0x28e81c,function(_0x12d0cb){return db[_0x7b7e('0x37')][_0x7b7e('0x76')](_0x12d0cb,{'include':[{'model':db[_0x7b7e('0x68')],'as':_0x7b7e('0x68')}]})[_0x7b7e('0x23')](function(_0x3628b2){_0x12d0cb['id']=_0x3628b2['id'];return _0x12d0cb;});});})[_0x7b7e('0x23')](function(_0x4a3ff7){if(_0x61424f[_0x7b7e('0x58')][_0x7b7e('0x25')]==='user')return _0x4a3ff7;if(_0x61424f[_0x7b7e('0x77')]['role']!=='user')return _0x4a3ff7;var _0x1871d2=_['some'](_0x4a3ff7,function(_0x4d91c6){return _0x4d91c6[_0x7b7e('0x25')]===_0x7b7e('0x29')||_0x4d91c6[_0x7b7e('0x25')]==='telephone';});if(!_0x1871d2)return _0x4a3ff7;return db[_0x7b7e('0x7e')][_0x7b7e('0x83')]({'where':{'name':{'$or':[_0x7b7e('0x28'),_0x7b7e('0x2a')]},'userProfileId':_0x61424f[_0x7b7e('0x77')][_0x7b7e('0x7d')]},'raw':!![]})[_0x7b7e('0x23')](function(_0xf71a04){if(_[_0x7b7e('0x84')](_0xf71a04)||!_['some'](_0xf71a04,[_0x7b7e('0x7f'),0x0]))return _0x4a3ff7;_0x3faf4c=[];var _0x1f79b9=_(_0xf71a04)[_0x7b7e('0x85')](function(_0x4f0042){if(_0x4f0042[_0x7b7e('0x7f')]===0x1)return;return _0x4f0042[_0x7b7e('0x31')]==='Agents'?_0x7b7e('0x29'):'telephone';})['compact']()[_0x7b7e('0x2e')]();for(var _0xf01f1a=0x0;_0xf01f1a<_0x4a3ff7['length'];_0xf01f1a++){if(!_[_0x7b7e('0x2f')](_0x1f79b9,_0x4a3ff7[_0xf01f1a]['role']))return;var _0x4c7158=_0x4a3ff7[_0xf01f1a][_0x7b7e('0x25')]===_0x7b7e('0x29')?_0x7b7e('0x28'):_0x7b7e('0x2a');_0x3faf4c[_0x7b7e('0x45')](db[_0x7b7e('0x32')][_0x7b7e('0x76')]({'name':_0x4a3ff7[_0xf01f1a][_0x7b7e('0x31')],'resourceId':_0x4a3ff7[_0xf01f1a]['id'],'type':_0x4c7158,'sectionId':_['find'](_0xf71a04,[_0x7b7e('0x31'),_0x4c7158])['id']},{}));}return BPromise[_0x7b7e('0x49')](_0x3faf4c);});})[_0x7b7e('0x23')](respondWithResult(_0x38fd40,0xc9))[_0x7b7e('0x19')](handleError(_0x38fd40,null));};exports[_0x7b7e('0x86')]=function(_0x13c910,_0xf16368){if(_0x13c910[_0x7b7e('0x58')]['id']){delete _0x13c910[_0x7b7e('0x58')]['id'];}return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x13c910[_0x7b7e('0x4b')]['id']}})['then'](function(_0x493128){if(!_0x493128)return null;if(_0x493128['id']===_0x13c910[_0x7b7e('0x77')]['id']){if(!_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x87')]||!_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x8b'));}if(!_0x493128[_0x7b7e('0x8c')](_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x87')])){throw new db[(_0x7b7e('0x89'))]['ValidationError'](_0x7b7e('0x8d'));}if(_0x13c910['body'][_0x7b7e('0x87')]===_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]){throw new db['Sequelize']['ValidationError']('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x13c910[_0x7b7e('0x77')][_0x7b7e('0x25')]===_0x7b7e('0x26')){if(!_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x8e'));}}else if(_0x13c910[_0x7b7e('0x77')][_0x7b7e('0x25')]===_0x7b7e('0x77')){if(!_0x13c910['body'][_0x7b7e('0x88')]){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x8e'));}if(_0x493128['role']!==_0x7b7e('0x29')){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x78'));}}else{throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x78'));}return _0x493128;})[_0x7b7e('0x23')](handleEntityNotFound(_0xf16368,null))[_0x7b7e('0x23')](function(_0x34491e){return db[_0x7b7e('0x5e')][_0x7b7e('0x8f')]({'attributes':['id',_0x7b7e('0x90'),_0x7b7e('0x91'),_0x7b7e('0x92')]})[_0x7b7e('0x23')](function(_0x33243c){if(_0x33243c[_0x7b7e('0x90')])authService[_0x7b7e('0x93')](_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')]);if(!_0x33243c[_0x7b7e('0x91')]||!_0x34491e[_0x7b7e('0x94')])return _0x34491e;authService[_0x7b7e('0x95')](_0x13c910[_0x7b7e('0x58')][_0x7b7e('0x88')],_0x34491e[_0x7b7e('0x94')],_0x33243c[_0x7b7e('0x92')]);return _0x34491e;})['then'](saveUpdates({'password':_0x13c910[_0x7b7e('0x58')]['newPassword'],'passwordResetAt':_0x13c910['user']['id']==_0x13c910['params']['id']?moment():null,'previousPasswords':authService[_0x7b7e('0x96')](_0x13c910[_0x7b7e('0x58')]['newPassword'],_0x34491e['previousPasswords'])},null));})[_0x7b7e('0x23')](respondWithResult(_0xf16368,null))[_0x7b7e('0x19')](handleError(_0xf16368,null));};exports[_0x7b7e('0x97')]=function(_0x5b0abe,_0xf128f8){var _0x587012=_0x5b0abe['body'][_0x7b7e('0x98')];return db['User']['find']({'where':{'id':_0x5b0abe[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25'),'online','loginInPause',_0x7b7e('0x99'),_0x7b7e('0x9a')]})[_0x7b7e('0x23')](handleEntityNotFound(_0xf128f8,null))[_0x7b7e('0x23')](function(_0x14310d){if(_0x14310d){if(!utils[_0x7b7e('0x9b')](_0x587012)){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}return _0x14310d['add'+_[_0x7b7e('0x9d')](_0x587012['toLowerCase']())+_0x7b7e('0x9e')](_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x5c')],{'penalty':_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x9f')]||0x0})['spread'](function(_0x33b313){for(var _0x216de1=0x0;_0x216de1<_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x5c')]['length'];_0x216de1+=0x1){var _0x137ba6={'UserId':Number(_0x5b0abe[_0x7b7e('0x4b')]['id'])};_0x137ba6[_['capitalize'](_0x587012[_0x7b7e('0xa0')]())+_0x7b7e('0xa1')]=Number(_0x5b0abe[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x216de1]);socket[_0x7b7e('0xa2')](_0x7b7e('0x77')+_[_0x7b7e('0x9d')](_0x587012[_0x7b7e('0xa0')]())+_0x7b7e('0xa3'),_0x137ba6);}return _0x33b313;})[_0x7b7e('0x23')](function(){if(_0x587012===_0x7b7e('0xa4')){return db['VoiceQueue'][_0x7b7e('0x83')]({'where':{'id':_0x5b0abe[_0x7b7e('0x58')]['ids']||[]},'raw':!![],'attributes':['id',_0x7b7e('0x31')]});}})['then'](function(_0x373d35){var _0x772419=_0x14310d[_0x7b7e('0x24')]({'plain':!![]});var _0x4feae0=[];if(_0x587012===_0x7b7e('0xa4')&&_0x772419[_0x7b7e('0x25')]===_0x7b7e('0x29')&&_0x772419[_0x7b7e('0xa5')]){for(var _0xeeaf19=0x0;_0xeeaf19<_0x373d35[_0x7b7e('0x44')];_0xeeaf19+=0x1){_0x4feae0[_0x7b7e('0x45')]({'membername':_0x772419[_0x7b7e('0x31')],'UserId':_0x772419['id'],'queue_name':_0x373d35[_0xeeaf19][_0x7b7e('0x31')],'VoiceQueueId':_0x373d35[_0xeeaf19]['id'],'interface':_[_0x7b7e('0x64')](_0x772419['interface'])?util[_0x7b7e('0xa6')](_0x7b7e('0xa7'),_0x772419[_0x7b7e('0x31')]):_0x772419['interface'],'paused':_0x772419['voicePause']||![],'penalty':_0x5b0abe[_0x7b7e('0x58')]['penalty']||0x0});}return BPromise['each'](_0x4feae0,function(_0x26aef0){return db[_0x7b7e('0xa8')][_0x7b7e('0xa9')](_0x26aef0);});}return _0x14310d;});}})['then'](respondWithStatusCode(_0xf128f8,null))[_0x7b7e('0x19')](handleError(_0xf128f8,null));};exports[_0x7b7e('0xaa')]=function(_0x26d962,_0x43f6f3){var _0x3da40c;return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x26d962[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25')]})[_0x7b7e('0x23')](handleEntityNotFound(_0x43f6f3,null))[_0x7b7e('0x23')](function(_0x50dd97){if(_0x50dd97){_0x3da40c=_0x50dd97;if(!_0x26d962['query'][_0x7b7e('0x98')]||!utils['isValidChannel'](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')])){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}return _0x50dd97[_0x7b7e('0xab')+_[_0x7b7e('0x9d')](_0x26d962['query']['channel'][_0x7b7e('0xa0')]())+_0x7b7e('0x9e')](_0x26d962['query'][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](function(_0x4f6c25){if(_['isArray'](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0x1ac6ea=0x0;_0x1ac6ea<_0x26d962['query'][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x1ac6ea+=0x1){var _0x4c500b={'UserId':Number(_0x26d962[_0x7b7e('0x4b')]['id'])};_0x4c500b[_[_0x7b7e('0x9d')](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xa1')]=Number(_0x26d962[_0x7b7e('0x3e')]['ids'][_0x1ac6ea]);socket['emit']('user'+_[_0x7b7e('0x9d')](_0x26d962['query'][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xac'),_0x4c500b);}}else{var _0x4c500b={'UserId':Number(_0x26d962[_0x7b7e('0x4b')]['id'])};_0x4c500b[_[_0x7b7e('0x9d')](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xa1')]=Number(_0x26d962[_0x7b7e('0x3e')]['ids']);socket['emit']('user'+_[_0x7b7e('0x9d')](_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')][_0x7b7e('0xa0')]())+_0x7b7e('0xac'),_0x4c500b);}return _0x4f6c25;})[_0x7b7e('0x23')](function(){if(_0x26d962[_0x7b7e('0x3e')][_0x7b7e('0x98')]===_0x7b7e('0xa4')){return db['UserVoiceQueueRt'][_0x7b7e('0x33')]({'where':{'UserId':_0x26d962[_0x7b7e('0x4b')]['id'],'VoiceQueueId':_0x26d962[_0x7b7e('0x3e')]['ids']},'individualHooks':!![]})[_0x7b7e('0x23')](function(){return _0x3da40c;});}return _0x3da40c;})['then'](respondWithStatusCode(_0x43f6f3,null))[_0x7b7e('0x19')](handleError(_0x43f6f3,null));};exports[_0x7b7e('0xad')]=function(_0x421ddc,_0x1e1a85){_0x421ddc['body'][_0x7b7e('0xae')]=_0x421ddc[_0x7b7e('0xaf')][_0x7b7e('0xb0')];return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x421ddc['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1e1a85,null))[_0x7b7e('0x23')](saveUpdates(_0x421ddc[_0x7b7e('0x58')],null))[_0x7b7e('0x23')](respondWithResult(_0x1e1a85,null))[_0x7b7e('0x19')](handleError(_0x1e1a85,null));};exports[_0x7b7e('0xb1')]=function(_0x2502c0,_0x1bb089){var _0x576d82=path[_0x7b7e('0xb2')](config[_0x7b7e('0xb3')],_0x7b7e('0xb4'));return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x2502c0['params']['id']},'attributes':['id',_0x7b7e('0xae')],'raw':!![]})[_0x7b7e('0x23')](handleEntityNotFound(_0x1bb089,null))[_0x7b7e('0x23')](function(_0x3b972e){if(_0x3b972e){if(_[_0x7b7e('0x64')](_0x3b972e[_0x7b7e('0xae')])){return _0x1bb089[_0x7b7e('0xb5')](_0x576d82);}else{if(!fs[_0x7b7e('0xb6')](path[_0x7b7e('0xb2')](config[_0x7b7e('0xb3')],'server/files/images/',_0x3b972e[_0x7b7e('0xae')]))){return _0x1bb089['download'](_0x576d82);}return _0x1bb089[_0x7b7e('0xb5')](path[_0x7b7e('0xb2')](config[_0x7b7e('0xb3')],_0x7b7e('0xb7'),_0x3b972e[_0x7b7e('0xae')]));}}})[_0x7b7e('0x19')](handleError(_0x1bb089,null));};exports[_0x7b7e('0xb8')]=function(_0x38a9ae,_0x363882){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x38a9ae[_0x7b7e('0x4b')]['id']},'attributes':['id']})[_0x7b7e('0x23')](handleEntityNotFound(_0x363882,null))['then'](function(_0x5d04e0){var _0x1072f8=[];values=_0x5d04e0['dataValues'];_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0xb9'),_0x5d04e0[_0x7b7e('0x46')]));_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x47'),_0x5d04e0['dataValues']));_0x1072f8[_0x7b7e('0x45')](get_open_tabs('openchannel',_0x5d04e0['dataValues']));_0x1072f8['push'](get_open_tabs(_0x7b7e('0x56'),_0x5d04e0[_0x7b7e('0x46')]));_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x57'),_0x5d04e0[_0x7b7e('0x46')]));_0x1072f8[_0x7b7e('0x45')](get_open_tabs(_0x7b7e('0x48'),_0x5d04e0['dataValues']));return BPromise[_0x7b7e('0x49')](_0x1072f8);})[_0x7b7e('0x23')](function(_0x19cbe0){var _0x176b1a=[];if(_0x19cbe0){for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xba')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xba')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':_0x7b7e('0xbb'),'id':_0x4d6dba['id'],'createdAt':_0x4d6dba[_0x7b7e('0xbc')]});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xbd')]['length'];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xbd')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':_0x7b7e('0xbe'),'id':_0x4d6dba['id'],'createdAt':_0x4d6dba['createdAt']});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xbf')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xbf')][_0x355931];_0x176b1a['push']({'channel':'OPENCHANNEL','id':_0x4d6dba['id'],'createdAt':_0x4d6dba['createdAt']});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xc0')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xc0')][_0x355931];_0x176b1a['push']({'channel':_0x7b7e('0xc1'),'id':_0x4d6dba['id'],'createdAt':_0x4d6dba['createdAt']});}for(var _0x355931=0x0;_0x355931<values['SmsOpenTabs']['length'];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xc2')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':'SMS','id':_0x4d6dba['id'],'createdAt':_0x4d6dba[_0x7b7e('0xbc')]});}for(var _0x355931=0x0;_0x355931<values[_0x7b7e('0xc3')][_0x7b7e('0x44')];_0x355931++){var _0x4d6dba=values[_0x7b7e('0xc3')][_0x355931];_0x176b1a[_0x7b7e('0x45')]({'channel':'WHATSAPP','id':_0x4d6dba['id'],'createdAt':_0x4d6dba[_0x7b7e('0xbc')]});}var _0x168dd7={'count':_0x176b1a[_0x7b7e('0x44')],'rows':_0x176b1a};return _0x168dd7;}else return null;})[_0x7b7e('0x23')](respondWithResult(_0x363882,null))['catch'](handleError(_0x363882,null));};exports[_0x7b7e('0xc4')]=function(_0x280c94,_0x4de56d){var _0x1104d8={};var _0x1e6d66={};var _0x122180;var _0x3f4a9e;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x280c94['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4de56d,null))['then'](function(_0x42957f){if(_0x42957f){_0x122180=_0x42957f;_0x1e6d66['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0xc5')]['rawAttributes']);_0x1e6d66['query']=_['keys'](_0x280c94[_0x7b7e('0x3e')]);_0x1e6d66[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x1e6d66[_0x7b7e('0x50')],_0x1e6d66[_0x7b7e('0x3e')]);_0x1104d8[_0x7b7e('0x41')]=_['intersection'](_0x1e6d66[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x280c94[_0x7b7e('0x3e')]['fields']));_0x1104d8[_0x7b7e('0x41')]=_0x1104d8[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1104d8[_0x7b7e('0x41')]:_0x1e6d66[_0x7b7e('0x50')];_0x1104d8[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x1104d8[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x280c94['query'],_0x1e6d66[_0x7b7e('0x4e')]));if(_0x280c94['query'][_0x7b7e('0x2c')]){_0x1104d8['where']=_[_0x7b7e('0x52')](_0x1104d8[_0x7b7e('0x3d')],{'$or':_['map'](_0x1104d8[_0x7b7e('0x41')],function(_0x5c0433){var _0x1af4ca={};_0x1af4ca[_0x5c0433]={'$like':'%'+_0x280c94['query'][_0x7b7e('0x2c')]+'%'};return _0x1af4ca;})});}_0x1104d8=_['merge']({},_0x1104d8,_0x280c94[_0x7b7e('0x53')]);return _0x122180[_0x7b7e('0xc4')](_0x1104d8);}})[_0x7b7e('0x23')](function(_0x3046eb){if(_0x3046eb){_0x3f4a9e=_0x3046eb[_0x7b7e('0x44')];if(_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0x3f'))){_0x1104d8[_0x7b7e('0x40')]=[{'model':db[_0x7b7e('0xca')],'as':_0x7b7e('0xcb'),'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id','name','color'],'where':_0x280c94['query'][_0x7b7e('0xcc')]?{'id':_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xcc')]}:undefined,'required':_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0xcc')]?!![]:![]}];}if(!_0x280c94['query']['hasOwnProperty'](_0x7b7e('0xcd'))){_0x1104d8['limit']=qs[_0x7b7e('0x21')](_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x1104d8[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x280c94[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x122180[_0x7b7e('0xc4')](_0x1104d8);}})['then'](function(_0x332a9d){if(_0x332a9d){return _0x332a9d?{'count':_0x3f4a9e,'rows':_0x332a9d}:null;}})['then'](respondWithResult(_0x4de56d,null))['catch'](handleError(_0x4de56d,null));};exports[_0x7b7e('0xce')]=function(_0x732bb,_0x2cea15){var _0x2ea40b;var _0x41f334;var _0x1e82ea={};var _0x291ddb;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x732bb[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25')]})[_0x7b7e('0x23')](handleEntityNotFound(_0x2cea15,null))['then'](function(_0x107c4e){if(!utils[_0x7b7e('0x9b')](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x98')])){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}_0x2ea40b=_0x107c4e;var _0x220312={};_0x220312[_0x7b7e('0x50')]=_['keys'](db[_[_0x7b7e('0x9d')](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x98')])+_0x7b7e('0xcf')][_0x7b7e('0x38')]);_0x220312['query']=_[_0x7b7e('0x4d')](_0x732bb[_0x7b7e('0x3e')]);_0x220312[_0x7b7e('0x4e')]=_['intersection'](_0x220312[_0x7b7e('0x50')],_0x220312[_0x7b7e('0x3e')]);_0x1e82ea['attributes']=_['intersection'](_0x220312[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x732bb['query'][_0x7b7e('0x51')]));_0x1e82ea[_0x7b7e('0x41')]=_0x1e82ea[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1e82ea[_0x7b7e('0x41')]:_0x220312['model'];_0x1e82ea['order']=qs[_0x7b7e('0xc7')](_0x732bb['query'][_0x7b7e('0xc7')]);_0x1e82ea['where']=qs[_0x7b7e('0x4e')](_['pick'](_0x732bb[_0x7b7e('0x3e')],_0x220312['filters']));if(_0x732bb['query'][_0x7b7e('0x2c')]){_0x1e82ea['where']=_['merge'](_0x1e82ea[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x1e82ea['attributes'],function(_0xb239a2){var _0x21943d={};_0x21943d[_0xb239a2]={'$like':'%'+_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x21943d;})});}_0x1e82ea=_[_0x7b7e('0x52')]({},_0x1e82ea,_0x732bb[_0x7b7e('0x53')]);switch(_0x2ea40b[_0x7b7e('0x25')]){case _0x7b7e('0x26'):return db[_['capitalize'](_0x732bb['query'][_0x7b7e('0x98')])+_0x7b7e('0xcf')][_0x7b7e('0x83')](_0x1e82ea);case _0x7b7e('0x77'):case _0x7b7e('0x29'):return _0x2ea40b[_0x7b7e('0x24')+_['capitalize'](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x98')])+'Queues'](_0x1e82ea);default:throw new db['Sequelize'][(_0x7b7e('0x8a'))]('Unknown\x20role');}})[_0x7b7e('0x23')](function(_0x23f186){_0x291ddb=_0x23f186[_0x7b7e('0x44')];if(!_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x1e82ea[_0x7b7e('0x21')]=qs['limit'](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x1e82ea[_0x7b7e('0x1e')]=qs['offset'](_0x732bb[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}switch(_0x2ea40b['role']){case _0x7b7e('0x26'):return db[_[_0x7b7e('0x9d')](_0x732bb['query'][_0x7b7e('0x98')])+_0x7b7e('0xcf')][_0x7b7e('0x83')](_0x1e82ea);case _0x7b7e('0x77'):case'agent':return _0x2ea40b[_0x7b7e('0x24')+_['capitalize'](_0x732bb[_0x7b7e('0x3e')]['channel'])+_0x7b7e('0x9e')](_0x1e82ea);}})['then'](function(_0x6aaf32){return{'count':_0x291ddb,'rows':_0x6aaf32};})[_0x7b7e('0x23')](respondWithResult(_0x2cea15,null))[_0x7b7e('0x19')](handleError(_0x2cea15,null));};exports[_0x7b7e('0xd0')]=function(_0x135284,_0x4f07db){var _0x421a33={};var _0x2e8c14={};var _0x41a635;var _0x556a7f;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x135284[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4f07db,null))[_0x7b7e('0x23')](function(_0x52330a){if(_0x52330a){_0x41a635=_0x52330a;_0x2e8c14[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xa8')]['rawAttributes']);_0x2e8c14[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x135284[_0x7b7e('0x3e')]);_0x2e8c14['filters']=_[_0x7b7e('0x4f')](_0x2e8c14[_0x7b7e('0x50')],_0x2e8c14[_0x7b7e('0x3e')]);_0x421a33[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2e8c14['model'],qs[_0x7b7e('0x51')](_0x135284[_0x7b7e('0x3e')]['fields']));_0x421a33['attributes']=_0x421a33[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x421a33[_0x7b7e('0x41')]:_0x2e8c14[_0x7b7e('0x50')];_0x421a33[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x135284[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x421a33[_0x7b7e('0x3d')]=qs['filters'](_[_0x7b7e('0xc8')](_0x135284['query'],_0x2e8c14[_0x7b7e('0x4e')]));if(_0x135284['query'][_0x7b7e('0x2c')]){_0x421a33['where']=_[_0x7b7e('0x52')](_0x421a33['where'],{'$or':_[_0x7b7e('0x85')](_0x421a33[_0x7b7e('0x41')],function(_0x5b3682){var _0x3c4ebc={};_0x3c4ebc[_0x5b3682]={'$like':'%'+_0x135284[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x3c4ebc;})});}_0x421a33=_[_0x7b7e('0x52')]({},_0x421a33,_0x135284['options']);return _0x41a635[_0x7b7e('0xd0')](_0x421a33);}})[_0x7b7e('0x23')](function(_0x1b1ac0){if(_0x1b1ac0){_0x556a7f=_0x1b1ac0['length'];if(!_0x135284['query']['hasOwnProperty'](_0x7b7e('0xcd'))){_0x421a33['limit']=qs[_0x7b7e('0x21')](_0x135284[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x421a33[_0x7b7e('0x1e')]=qs['offset'](_0x135284['query'][_0x7b7e('0x1e')]);}return _0x41a635['getVoiceQueuesRt'](_0x421a33);}})[_0x7b7e('0x23')](function(_0x5e6f62){if(_0x5e6f62){return _0x5e6f62?{'count':_0x556a7f,'rows':_0x5e6f62}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x4f07db,null))[_0x7b7e('0x19')](handleError(_0x4f07db,null));};exports[_0x7b7e('0xd1')]=function(_0x4a9e46,_0xa58cd8){var _0x2826fa={};var _0x3982ac={};var _0x5d0a9e;var _0x263c43;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x4a9e46['params']['id']}})['then'](handleEntityNotFound(_0xa58cd8,null))[_0x7b7e('0x23')](function(_0x3d76ad){if(_0x3d76ad){_0x5d0a9e=_0x3d76ad;_0x3982ac[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xd2')]['rawAttributes']);_0x3982ac[_0x7b7e('0x3e')]=_['keys'](_0x4a9e46[_0x7b7e('0x3e')]);_0x3982ac[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x3982ac[_0x7b7e('0x50')],_0x3982ac[_0x7b7e('0x3e')]);_0x2826fa[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x3982ac[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x4a9e46[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x2826fa[_0x7b7e('0x41')]=_0x2826fa[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x2826fa[_0x7b7e('0x41')]:_0x3982ac[_0x7b7e('0x50')];_0x2826fa[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x4a9e46[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x2826fa['where']=qs[_0x7b7e('0x4e')](_['pick'](_0x4a9e46[_0x7b7e('0x3e')],_0x3982ac[_0x7b7e('0x4e')]));if(_0x4a9e46[_0x7b7e('0x3e')]['filter']){_0x2826fa[_0x7b7e('0x3d')]=_['merge'](_0x2826fa[_0x7b7e('0x3d')],{'$or':_['map'](_0x2826fa[_0x7b7e('0x41')],function(_0x534724){var _0x543fb0={};_0x543fb0[_0x534724]={'$like':'%'+_0x4a9e46[_0x7b7e('0x3e')]['filter']+'%'};return _0x543fb0;})});}_0x2826fa=_[_0x7b7e('0x52')]({},_0x2826fa,_0x4a9e46[_0x7b7e('0x53')]);return _0x5d0a9e[_0x7b7e('0xd1')](_0x2826fa);}})['then'](function(_0x4426b3){if(_0x4426b3){_0x263c43=_0x4426b3[_0x7b7e('0x44')];if(!_0x4a9e46[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2826fa[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x4a9e46[_0x7b7e('0x3e')]['limit']);_0x2826fa[_0x7b7e('0x1e')]=qs['offset'](_0x4a9e46[_0x7b7e('0x3e')]['offset']);}return _0x5d0a9e['getGroups'](_0x2826fa);}})['then'](function(_0x376ebb){if(_0x376ebb){return _0x376ebb?{'count':_0x263c43,'rows':_0x376ebb}:null;}})[_0x7b7e('0x23')](respondWithResult(_0xa58cd8,null))[_0x7b7e('0x19')](handleError(_0xa58cd8,null));};exports[_0x7b7e('0xd3')]=function(_0x260a15,_0x57b285){var _0x4d69d2={'raw':!![],'where':{}};var _0x1ff4b2={};var _0x37dfba={'count':0x0,'rows':[]};return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x260a15[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x57b285,null))[_0x7b7e('0x23')](function(_0x51cc3a){if(_0x51cc3a){_0x1ff4b2['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0xd4')]['rawAttributes']);_0x1ff4b2[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x260a15[_0x7b7e('0x3e')]);_0x1ff4b2[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x1ff4b2[_0x7b7e('0x50')],_0x1ff4b2['query']);_0x4d69d2[_0x7b7e('0x41')]=_['intersection'](_0x1ff4b2[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x260a15[_0x7b7e('0x3e')]['fields']));_0x4d69d2[_0x7b7e('0x41')]=_0x4d69d2[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x4d69d2[_0x7b7e('0x41')]:_0x1ff4b2['model'];if(!_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x4d69d2[_0x7b7e('0x21')]=qs['limit'](_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x4d69d2[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x260a15['query'][_0x7b7e('0x1e')]);}_0x4d69d2['order']=qs[_0x7b7e('0xc7')](_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x4d69d2['where']=qs['filters'](_[_0x7b7e('0xc8')](_0x260a15[_0x7b7e('0x3e')],_0x1ff4b2[_0x7b7e('0x4e')]));_0x4d69d2[_0x7b7e('0x3d')][_0x7b7e('0xd5')]=_0x51cc3a['id'];if(_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x4d69d2[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x4d69d2[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x4d69d2[_0x7b7e('0x41')],function(_0x36f6dc){var _0x2a3fa0={};_0x2a3fa0[_0x36f6dc]={'$like':'%'+_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x2a3fa0;})});}_0x4d69d2=_['merge']({},_0x4d69d2,_0x260a15[_0x7b7e('0x53')]);return db['VoiceRecording'][_0x7b7e('0x20')]({'where':_0x4d69d2[_0x7b7e('0x3d')]})[_0x7b7e('0x23')](function(_0x3fb144){_0x37dfba['count']=_0x3fb144;if(_0x260a15[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x4d69d2[_0x7b7e('0x40')]=[{'all':!![]}];}return db[_0x7b7e('0xd4')][_0x7b7e('0x83')](_0x4d69d2);})[_0x7b7e('0x23')](function(_0xde37f4){_0x37dfba[_0x7b7e('0x43')]=_0xde37f4;return _0x37dfba;});}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x57b285,_0x4d69d2))[_0x7b7e('0x19')](handleError(_0x57b285,null));};exports[_0x7b7e('0xd6')]=function(_0x2a3380,_0x2c73ae){var _0x31b636={'raw':!![],'where':{}};var _0x4e7498={};var _0x127df0={'count':0x0,'rows':[]};return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x2a3380['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2c73ae,null))[_0x7b7e('0x23')](function(_0x507943){if(_0x507943){_0x4e7498[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xd7')][_0x7b7e('0x38')]);_0x4e7498[_0x7b7e('0x3e')]=_['keys'](_0x2a3380[_0x7b7e('0x3e')]);_0x4e7498[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x4e7498[_0x7b7e('0x50')],_0x4e7498[_0x7b7e('0x3e')]);_0x31b636[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x4e7498[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x31b636[_0x7b7e('0x41')]=_0x31b636[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x31b636[_0x7b7e('0x41')]:_0x4e7498[_0x7b7e('0x50')];if(!_0x2a3380[_0x7b7e('0x3e')]['hasOwnProperty'](_0x7b7e('0xcd'))){_0x31b636[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x31b636[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}_0x31b636[_0x7b7e('0xc6')]=qs['sort'](_0x2a3380['query']['sort']);_0x31b636['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x2a3380[_0x7b7e('0x3e')],_0x4e7498[_0x7b7e('0x4e')]));_0x31b636[_0x7b7e('0x3d')]['UserId']=_0x507943['id'];if(_0x2a3380[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x31b636['where']=_[_0x7b7e('0x52')](_0x31b636['where'],{'$or':_[_0x7b7e('0x85')](_0x31b636[_0x7b7e('0x41')],function(_0x2d0fa7){var _0x4ea291={};_0x4ea291[_0x2d0fa7]={'$like':'%'+_0x2a3380[_0x7b7e('0x3e')]['filter']+'%'};return _0x4ea291;})});}_0x31b636=_[_0x7b7e('0x52')]({},_0x31b636,_0x2a3380[_0x7b7e('0x53')]);return db[_0x7b7e('0xd7')][_0x7b7e('0x20')]({'where':_0x31b636[_0x7b7e('0x3d')]})[_0x7b7e('0x23')](function(_0x36755d){_0x127df0['count']=_0x36755d;if(_0x2a3380[_0x7b7e('0x3e')]['includeAll']){_0x31b636[_0x7b7e('0x40')]=[{'all':!![]}];}return db[_0x7b7e('0xd7')][_0x7b7e('0x83')](_0x31b636);})[_0x7b7e('0x23')](function(_0x1e6b0f){_0x127df0['rows']=_0x1e6b0f;return _0x127df0;});}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x2c73ae,_0x31b636))[_0x7b7e('0x19')](handleError(_0x2c73ae,null));};exports[_0x7b7e('0xd8')]=function(_0x56db3e,_0x50cdf9){var _0x2d3600={};var _0x4bd8bb={};var _0x31f455;var _0x1330a9;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x56db3e[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x50cdf9,null))[_0x7b7e('0x23')](function(_0x141363){if(_0x141363){_0x31f455=_0x141363;_0x4bd8bb[_0x7b7e('0x50')]=_['keys'](db['ChatInteraction'][_0x7b7e('0x38')]);_0x4bd8bb[_0x7b7e('0x3e')]=_['keys'](_0x56db3e[_0x7b7e('0x3e')]);_0x4bd8bb[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x4bd8bb[_0x7b7e('0x50')],_0x4bd8bb[_0x7b7e('0x3e')]);_0x2d3600['attributes']=_[_0x7b7e('0x4f')](_0x4bd8bb[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x2d3600[_0x7b7e('0x41')]=_0x2d3600[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x2d3600[_0x7b7e('0x41')]:_0x4bd8bb['model'];_0x2d3600[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x56db3e[_0x7b7e('0x3e')]['sort']);_0x2d3600[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x56db3e[_0x7b7e('0x3e')],_0x4bd8bb[_0x7b7e('0x4e')]));if(_0x56db3e[_0x7b7e('0x3e')]['filter']){_0x2d3600[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x2d3600['where'],{'$or':_[_0x7b7e('0x85')](_0x2d3600[_0x7b7e('0x41')],function(_0x3ffaaf){var _0x158c93={};_0x158c93[_0x3ffaaf]={'$like':'%'+_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x158c93;})});}_0x2d3600=_[_0x7b7e('0x52')]({},_0x2d3600,_0x56db3e[_0x7b7e('0x53')]);return _0x31f455['getChatInteractions'](_0x2d3600);}})['then'](function(_0x50fdf6){if(_0x50fdf6){_0x1330a9=_0x50fdf6[_0x7b7e('0x44')];if(!_0x56db3e['query'][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2d3600[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x2d3600['offset']=qs[_0x7b7e('0x1e')](_0x56db3e[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x31f455[_0x7b7e('0xd8')](_0x2d3600);}})[_0x7b7e('0x23')](function(_0xc29f56){if(_0xc29f56){return _0xc29f56?{'count':_0x1330a9,'rows':_0xc29f56}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x50cdf9,null))[_0x7b7e('0x19')](handleError(_0x50cdf9,null));};exports[_0x7b7e('0xd9')]=function(_0x5936fd,_0x578f77){var _0x43690f={};var _0x4f5d50={};var _0x4b2816;var _0x444bf4;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x5936fd[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x578f77,null))[_0x7b7e('0x23')](function(_0x4ee720){if(_0x4ee720){_0x4b2816=_0x4ee720;_0x4f5d50[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xda')][_0x7b7e('0x38')]);_0x4f5d50[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x5936fd['query']);_0x4f5d50['filters']=_[_0x7b7e('0x4f')](_0x4f5d50[_0x7b7e('0x50')],_0x4f5d50[_0x7b7e('0x3e')]);_0x43690f[_0x7b7e('0x41')]=_['intersection'](_0x4f5d50['model'],qs[_0x7b7e('0x51')](_0x5936fd['query']['fields']));_0x43690f['attributes']=_0x43690f[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x43690f['attributes']:_0x4f5d50[_0x7b7e('0x50')];_0x43690f[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x43690f[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x5936fd[_0x7b7e('0x3e')],_0x4f5d50['filters']));if(_0x5936fd['query'][_0x7b7e('0x2c')]){_0x43690f['where']=_[_0x7b7e('0x52')](_0x43690f[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x43690f['attributes'],function(_0x1a549f){var _0x4166ea={};_0x4166ea[_0x1a549f]={'$like':'%'+_0x5936fd['query'][_0x7b7e('0x2c')]+'%'};return _0x4166ea;})});}_0x43690f=_[_0x7b7e('0x52')]({},_0x43690f,_0x5936fd['options']);return _0x4b2816['getOpenchannelInteractions'](_0x43690f);}})['then'](function(_0x3b83ca){if(_0x3b83ca){_0x444bf4=_0x3b83ca[_0x7b7e('0x44')];if(!_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x43690f['limit']=qs[_0x7b7e('0x21')](_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x43690f[_0x7b7e('0x1e')]=qs['offset'](_0x5936fd[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x4b2816[_0x7b7e('0xd9')](_0x43690f);}})[_0x7b7e('0x23')](function(_0x157cf6){if(_0x157cf6){return _0x157cf6?{'count':_0x444bf4,'rows':_0x157cf6}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x578f77,null))[_0x7b7e('0x19')](handleError(_0x578f77,null));};exports[_0x7b7e('0xdb')]=function(_0x20ae46,_0x3b0796){var _0x9ae7ec={'raw':!![],'where':{}};var _0x34be7d={};var _0x23bcd9={'count':0x0,'rows':[]};return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x20ae46[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3b0796,null))[_0x7b7e('0x23')](function(_0x3e7c54){if(_0x3e7c54){_0x34be7d[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db['MailInteraction'][_0x7b7e('0x38')]);_0x34be7d[_0x7b7e('0x3e')]=_['keys'](_0x20ae46[_0x7b7e('0x3e')]);_0x34be7d[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x34be7d[_0x7b7e('0x50')],_0x34be7d[_0x7b7e('0x3e')]);_0x9ae7ec[_0x7b7e('0x41')]=_['intersection'](_0x34be7d[_0x7b7e('0x50')],qs['fields'](_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x9ae7ec['attributes']=_0x9ae7ec['attributes'][_0x7b7e('0x44')]?_0x9ae7ec['attributes']:_0x34be7d['model'];if(!_0x20ae46['query'][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x9ae7ec[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x9ae7ec[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}_0x9ae7ec[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x20ae46[_0x7b7e('0x3e')]['sort']);_0x9ae7ec[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x20ae46[_0x7b7e('0x3e')],_0x34be7d[_0x7b7e('0x4e')]));_0x9ae7ec[_0x7b7e('0x3d')][_0x7b7e('0xd5')]=_0x3e7c54['id'];if(_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x9ae7ec[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x9ae7ec[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x9ae7ec['attributes'],function(_0x5510d1){var _0x141704={};_0x141704[_0x5510d1]={'$like':'%'+_0x20ae46['query'][_0x7b7e('0x2c')]+'%'};return _0x141704;})});}_0x9ae7ec=_[_0x7b7e('0x52')]({},_0x9ae7ec,_0x20ae46['options']);return db[_0x7b7e('0xdc')][_0x7b7e('0x20')]({'where':_0x9ae7ec[_0x7b7e('0x3d')]})[_0x7b7e('0x23')](function(_0x29c984){_0x23bcd9[_0x7b7e('0x20')]=_0x29c984;if(_0x20ae46[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x9ae7ec[_0x7b7e('0x40')]=[{'all':!![]}];}return db[_0x7b7e('0xdc')]['findAll'](_0x9ae7ec);})[_0x7b7e('0x23')](function(_0x467acb){_0x23bcd9[_0x7b7e('0x43')]=_0x467acb;return _0x23bcd9;});}})[_0x7b7e('0x23')](respondWithFilteredResult(_0x3b0796,_0x9ae7ec))[_0x7b7e('0x19')](handleError(_0x3b0796,null));};exports[_0x7b7e('0xdd')]=function(_0x3dff40,_0x6f3faf){var _0x3e0cc6={};var _0x1bb023={};var _0x28f668;var _0x58b728;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x3dff40['params']['id']}})['then'](handleEntityNotFound(_0x6f3faf,null))[_0x7b7e('0x23')](function(_0x360a24){if(_0x360a24){_0x28f668=_0x360a24;_0x1bb023[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0xde')][_0x7b7e('0x38')]);_0x1bb023['query']=_[_0x7b7e('0x4d')](_0x3dff40[_0x7b7e('0x3e')]);_0x1bb023[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x1bb023[_0x7b7e('0x50')],_0x1bb023['query']);_0x3e0cc6[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x1bb023[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x3dff40['query'][_0x7b7e('0x51')]));_0x3e0cc6['attributes']=_0x3e0cc6[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x3e0cc6[_0x7b7e('0x41')]:_0x1bb023[_0x7b7e('0x50')];_0x3e0cc6[_0x7b7e('0xc6')]=qs['sort'](_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x3e0cc6['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x3dff40[_0x7b7e('0x3e')],_0x1bb023['filters']));if(_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x3e0cc6['where']=_[_0x7b7e('0x52')](_0x3e0cc6[_0x7b7e('0x3d')],{'$or':_['map'](_0x3e0cc6[_0x7b7e('0x41')],function(_0x424521){var _0x54c09a={};_0x54c09a[_0x424521]={'$like':'%'+_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x54c09a;})});}_0x3e0cc6=_[_0x7b7e('0x52')]({},_0x3e0cc6,_0x3dff40[_0x7b7e('0x53')]);return _0x28f668[_0x7b7e('0xdd')](_0x3e0cc6);}})[_0x7b7e('0x23')](function(_0x142493){if(_0x142493){_0x58b728=_0x142493[_0x7b7e('0x44')];if(!_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x3e0cc6['limit']=qs[_0x7b7e('0x21')](_0x3dff40['query'][_0x7b7e('0x21')]);_0x3e0cc6[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x3dff40[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x28f668[_0x7b7e('0xdd')](_0x3e0cc6);}})['then'](function(_0x3294f0){if(_0x3294f0){return _0x3294f0?{'count':_0x58b728,'rows':_0x3294f0}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x6f3faf,null))[_0x7b7e('0x19')](handleError(_0x6f3faf,null));};exports[_0x7b7e('0xdf')]=function(_0x9544f5,_0x5a6c4f){var _0x1ade36={};var _0x4d4262={};var _0x332b96;var _0x5e1aa8;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x9544f5[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a6c4f,null))[_0x7b7e('0x23')](function(_0x2d2eeb){if(_0x2d2eeb){_0x332b96=_0x2d2eeb;_0x4d4262[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xe0')][_0x7b7e('0x38')]);_0x4d4262[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x9544f5['query']);_0x4d4262[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x4d4262[_0x7b7e('0x50')],_0x4d4262[_0x7b7e('0x3e')]);_0x1ade36[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x4d4262['model'],qs['fields'](_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x1ade36['attributes']=_0x1ade36[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1ade36['attributes']:_0x4d4262[_0x7b7e('0x50')];_0x1ade36[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x9544f5['query'][_0x7b7e('0xc7')]);_0x1ade36[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x9544f5[_0x7b7e('0x3e')],_0x4d4262['filters']));if(_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x1ade36[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x1ade36[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x1ade36[_0x7b7e('0x41')],function(_0x453b36){var _0x562c28={};_0x562c28[_0x453b36]={'$like':'%'+_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x562c28;})});}_0x1ade36=_[_0x7b7e('0x52')]({},_0x1ade36,_0x9544f5[_0x7b7e('0x53')]);return _0x332b96[_0x7b7e('0xdf')](_0x1ade36);}})[_0x7b7e('0x23')](function(_0x106b2c){if(_0x106b2c){_0x5e1aa8=_0x106b2c[_0x7b7e('0x44')];if(!_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x1ade36['limit']=qs[_0x7b7e('0x21')](_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x1ade36[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x9544f5[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x332b96[_0x7b7e('0xdf')](_0x1ade36);}})[_0x7b7e('0x23')](function(_0x29d23d){if(_0x29d23d){return _0x29d23d?{'count':_0x5e1aa8,'rows':_0x29d23d}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x5a6c4f,null))[_0x7b7e('0x19')](handleError(_0x5a6c4f,null));};exports[_0x7b7e('0xe1')]=function(_0x513661,_0x101c03){var _0x3c2903={};var _0x2fef59={};var _0x130ab5;var _0x529e0e;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x513661['params']['id']}})['then'](handleEntityNotFound(_0x101c03,null))[_0x7b7e('0x23')](function(_0x51aefb){if(_0x51aefb){_0x130ab5=_0x51aefb;_0x2fef59['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0xe2')][_0x7b7e('0x38')]);_0x2fef59[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x513661['query']);_0x2fef59[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x2fef59[_0x7b7e('0x50')],_0x2fef59[_0x7b7e('0x3e')]);_0x3c2903[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2fef59['model'],qs[_0x7b7e('0x51')](_0x513661[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x3c2903[_0x7b7e('0x41')]=_0x3c2903[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x3c2903[_0x7b7e('0x41')]:_0x2fef59[_0x7b7e('0x50')];_0x3c2903[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x513661[_0x7b7e('0x3e')]['sort']);_0x3c2903['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x513661['query'],_0x2fef59['filters']));if(_0x513661[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x3c2903[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x3c2903[_0x7b7e('0x3d')],{'$or':_['map'](_0x3c2903['attributes'],function(_0x50ead7){var _0x2649d1={};_0x2649d1[_0x50ead7]={'$like':'%'+_0x513661[_0x7b7e('0x3e')]['filter']+'%'};return _0x2649d1;})});}_0x3c2903=_[_0x7b7e('0x52')]({},_0x3c2903,_0x513661['options']);return _0x130ab5['getWhatsappInteractions'](_0x3c2903);}})[_0x7b7e('0x23')](function(_0x5cd9c2){if(_0x5cd9c2){_0x529e0e=_0x5cd9c2['length'];if(!_0x513661[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x3c2903['limit']=qs[_0x7b7e('0x21')](_0x513661['query']['limit']);_0x3c2903[_0x7b7e('0x1e')]=qs['offset'](_0x513661[_0x7b7e('0x3e')]['offset']);}return _0x130ab5[_0x7b7e('0xe1')](_0x3c2903);}})[_0x7b7e('0x23')](function(_0x2f138f){if(_0x2f138f){return _0x2f138f?{'count':_0x529e0e,'rows':_0x2f138f}:null;}})['then'](respondWithResult(_0x101c03,null))[_0x7b7e('0x19')](handleError(_0x101c03,null));};exports[_0x7b7e('0xe3')]=function(_0x513b0d,_0x26507a,_0x3fb58a){var _0x888145;var _0x5d3369;var _0x2b4c67;var _0x54c2e0=!_['isNil'](_0x513b0d['params']['id'])?_0x513b0d[_0x7b7e('0x4b')]['id']:!_[_0x7b7e('0x64')](_0x513b0d[_0x7b7e('0x77')]['id'])?_0x513b0d[_0x7b7e('0x77')]['id']:null;return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x54c2e0,'role':{'$or':[_0x7b7e('0x26'),_0x7b7e('0x77'),_0x7b7e('0x29')]}},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0xe4'),_0x7b7e('0xe5'),'role',_0x7b7e('0x5d'),_0x7b7e('0xe6')]})[_0x7b7e('0x23')](function(_0x49b59e){if(_0x49b59e){if(_0x49b59e['role']===_0x7b7e('0x29')){_0x888145=_0x49b59e;if(_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0x9a')]){_0x2b4c67=util[_0x7b7e('0xa6')](_0x7b7e('0xe7'),_0x888145[_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0x9a')]]);}else if(_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0xe8')]){_0x2b4c67=util[_0x7b7e('0xa6')]('SIP/%s',_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0xe8')]);}else{_0x2b4c67=util[_0x7b7e('0xa6')]('SIP/%s',_0x888145[_0x7b7e('0x31')]);}socket['to'](util['format'](_0x7b7e('0xe9'),_0x888145['name']))[_0x7b7e('0xa2')](_0x7b7e('0xea'),{'user':{'id':_0x888145['id'],'name':_0x888145['name']},'ip':_0x513b0d[_0x7b7e('0xeb')][_0x7b7e('0xec')]||_0x513b0d[_0x7b7e('0xed')][_0x7b7e('0xee')]||_0x513b0d['socket'][_0x7b7e('0xee')]||_0x513b0d[_0x7b7e('0xed')][_0x7b7e('0xef')]['remoteAddress']});return db[_0x7b7e('0xa8')][_0x7b7e('0x33')]({'where':{'membername':_0x888145['name']},'individualHooks':!![]});}}else{throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0xf0'));}})[_0x7b7e('0x23')](function(){if(_0x888145){return _0x888145['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x20020e){if(_0x888145){var _0x3eddef=[];if(_0x20020e){_0x5d3369=_0x20020e;if(_0x5d3369[_0x7b7e('0x44')]){for(var _0x51d7dc=0x0;_0x51d7dc<_0x5d3369[_0x7b7e('0x44')];_0x51d7dc++){_0x3eddef[_0x7b7e('0x45')]({'membername':_0x888145[_0x7b7e('0x31')],'UserId':_0x888145['id'],'queue_name':_0x5d3369[_0x51d7dc]['name'],'VoiceQueueId':_0x5d3369[_0x51d7dc]['id'],'interface':_0x2b4c67,'paused':_0x888145['loginInPause']||![],'penalty':_0x5d3369[_0x51d7dc][_0x7b7e('0xf1')]||0x0});}return BPromise[_0x7b7e('0x82')](_0x3eddef,function(_0x5667b5){return db['UserVoiceQueueRt']['upsert'](_0x5667b5);});}}}})['then'](function(){if(_0x888145){return db['MemberReport'][_0x7b7e('0x83')]({'where':{'membername':_0x888145[_0x7b7e('0x31')],'exitAt':null}});}})[_0x7b7e('0x23')](function(_0x315916){if(_0x888145){var _0x15d46b=[];_0x315916[_0x7b7e('0xf2')](function(_0x423440){_0x15d46b[_0x7b7e('0x45')](_0x423440[_0x7b7e('0x22')]({'exitAt':moment()['format'](_0x7b7e('0xf3'))}));});return BPromise[_0x7b7e('0x49')](_0x15d46b);}})[_0x7b7e('0x23')](function(){if(_0x888145){var _0x18c95c=[];var _0x26d869=[];var _0x1e6d0d=utils[_0x7b7e('0xf4')]();var _0x44beb2={'membername':_0x888145[_0x7b7e('0x31')],'interface':_0x2b4c67,'enterAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3')),'role':_0x888145['role'],'internal':_0x888145[_0x7b7e('0x5d')]};_0x1e6d0d[_0x7b7e('0xf2')](function(_0x32875c){_0x18c95c[_0x7b7e('0x45')](_[_0x7b7e('0x52')]({'channel':_0x32875c,'type':_0x7b7e('0xf5'),'data1':_0x513b0d[_0x7b7e('0x58')][_0x7b7e('0xf6')],'data2':_0x2b4c67},_0x44beb2));if(_0x888145['loginInPause']){_0x26d869[_0x7b7e('0x45')](_[_0x7b7e('0x52')]({'channel':_0x32875c,'type':_0x7b7e('0xf7'),'data1':'LOGININPAUSE'},_0x44beb2));}});return db[_0x7b7e('0xf8')][_0x7b7e('0xf9')](_0x18c95c[_0x7b7e('0xfa')](_0x26d869),{'individualHooks':!![]});}})[_0x7b7e('0x23')](function(){if(_0x888145){return _0x888145[_0x7b7e('0x22')]({'online':!![],'lastLoginAt':moment()[_0x7b7e('0xa6')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x888145['loginInPause']||![],'mailPause':_0x888145[_0x7b7e('0xe6')]||![],'chatPause':_0x888145[_0x7b7e('0xe6')]||![],'faxPause':_0x888145[_0x7b7e('0xe6')]||![],'smsPause':_0x888145[_0x7b7e('0xe6')]||![],'openchannelPause':_0x888145[_0x7b7e('0xe6')]||![],'whatsappPause':_0x888145[_0x7b7e('0xe6')]||![],'pauseType':_0x888145[_0x7b7e('0xe6')]?_0x7b7e('0xfb'):null,'interface':_0x2b4c67,'lastPauseAt':moment()['format'](_0x7b7e('0xf3'))});}})[_0x7b7e('0x23')](function(_0x5cebd6){if(_0x513b0d[_0x7b7e('0xfc')]){return _0x3fb58a();}else{return BPromise[_0x7b7e('0xfd')](_0x5cebd6)[_0x7b7e('0x23')](respondWithResult(_0x26507a,null));}})[_0x7b7e('0x19')](handleError(_0x26507a,null));};exports[_0x7b7e('0xfe')]=function(_0x192030,_0xc933dd){var _0x5b00cf;return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x192030[_0x7b7e('0x4b')]['id'],'role':'agent'},'attributes':['id','name',_0x7b7e('0x25')]})['then'](handleEntityNotFound(_0xc933dd,null))[_0x7b7e('0x23')](function(_0x365c4d){if(_0x365c4d){_0x5b00cf=_0x365c4d;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x5b00cf[_0x7b7e('0x31')]},'individualHooks':!![]});}})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0xf8')]['findAll']({'where':{'membername':_0x5b00cf['name'],'exitAt':null}});})[_0x7b7e('0x23')](function(_0xf3020a){var _0x1998e1=[];_0xf3020a['forEach'](function(_0x491dcd){_0x1998e1[_0x7b7e('0x45')](_0x491dcd['update']({'exitAt':moment()[_0x7b7e('0xa6')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0x7b7e('0x49')](_0x1998e1);})[_0x7b7e('0x23')](function(){return _0x5b00cf[_0x7b7e('0x22')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x7b7e('0x23')](respondWithResult(_0xc933dd,null))[_0x7b7e('0x19')](handleError(_0xc933dd,null));};exports[_0x7b7e('0xff')]=function(_0x27dc38,_0x464534){var _0x26cb3c;return db[_0x7b7e('0xa8')][_0x7b7e('0x22')]({'paused':0x1},{'where':{'UserId':_0x27dc38[_0x7b7e('0x4b')]['id']},'individualHooks':!![]})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x27dc38[_0x7b7e('0x4b')]['id'],'role':'agent'},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25'),_0x7b7e('0x5d'),_0x7b7e('0x9a')]});})[_0x7b7e('0x23')](handleEntityNotFound(_0x464534,null))[_0x7b7e('0x23')](function(_0x8a3c47){if(_0x8a3c47){_0x26cb3c=_0x8a3c47;return respondWithRpcPromise('QueuePause',_0x7b7e('0xff'),{'id':_0x26cb3c['id'],'name':_0x26cb3c[_0x7b7e('0x31')],'pause':!![]});}})[_0x7b7e('0x23')](function(){if(_0x26cb3c){return db[_0x7b7e('0xf8')][_0x7b7e('0x83')]({'where':{'membername':_0x26cb3c[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}});}})['then'](function(_0x401131){if(_0x401131[_0x7b7e('0x44')]){var _0x5da81a=moment()[_0x7b7e('0xa6')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x5c30b7=0x0,_0x4c01cf=_0x401131['length'];_0x5c30b7<_0x4c01cf;_0x5c30b7++){_0x401131[_0x5c30b7][_0x7b7e('0x100')]({'exitAt':_0x5da81a});}}})[_0x7b7e('0x23')](function(){var _0x2cc589=[];var _0x3f00d1=utils[_0x7b7e('0xf4')]();_0x3f00d1[_0x7b7e('0xf2')](function(_0x2c94f7){_0x2cc589['push']({'channel':_0x2c94f7,'membername':_0x26cb3c[_0x7b7e('0x31')],'interface':_[_0x7b7e('0x64')](_0x26cb3c[_0x7b7e('0x9a')])?util[_0x7b7e('0xa6')](_0x7b7e('0xa7'),_0x26cb3c[_0x7b7e('0x31')]):_0x26cb3c[_0x7b7e('0x9a')],'type':_0x7b7e('0xf7'),'enterAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3')),'data1':_0x27dc38['body'][_0x7b7e('0x3a')]||_0x7b7e('0x101'),'role':_0x26cb3c[_0x7b7e('0x25')],'internal':_0x26cb3c[_0x7b7e('0x5d')]});});return db[_0x7b7e('0xf8')][_0x7b7e('0xf9')](_0x2cc589,{'individualHooks':!![]});})[_0x7b7e('0x23')](function(){return _0x26cb3c[_0x7b7e('0x22')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x27dc38[_0x7b7e('0x58')][_0x7b7e('0x3a')]||_0x7b7e('0x101'),'lastPauseAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3'))});})[_0x7b7e('0x23')](respondWithResult(_0x464534,null))[_0x7b7e('0x19')](handleError(_0x464534,null));};exports[_0x7b7e('0x102')]=function(_0x2c4fe7,_0x1be623){var _0x4c1cf2;return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x2c4fe7[_0x7b7e('0x4b')]['id']},'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x25'),'voicePause',_0x7b7e('0x103'),'chatPause',_0x7b7e('0x104'),_0x7b7e('0x105'),'smsPause',_0x7b7e('0x106'),_0x7b7e('0x107'),_0x7b7e('0x108')]})[_0x7b7e('0x23')](handleEntityNotFound(_0x1be623,null))[_0x7b7e('0x23')](function(_0x31b94d){if(_0x31b94d){_0x4c1cf2=_0x31b94d;if(_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')]&&!utils[_0x7b7e('0x9b')](_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')])){throw new db[(_0x7b7e('0x89'))][(_0x7b7e('0x8a'))](_0x7b7e('0x9c'));}switch(_0x2c4fe7[_0x7b7e('0x58')]['channel']){case _0x7b7e('0xa4'):return respondWithRpcPromise(_0x7b7e('0x109'),_0x7b7e('0x102'),{'id':_0x4c1cf2['id'],'name':_0x4c1cf2[_0x7b7e('0x31')],'pause':![]})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0xa8')][_0x7b7e('0x22')]({'paused':0x0},{'where':{'UserId':_0x4c1cf2['id']},'individualHooks':!![]});})[_0x7b7e('0x23')](function(){return db[_0x7b7e('0xf8')][_0x7b7e('0x30')]({'where':{'channel':_0x2c4fe7[_0x7b7e('0x58')]['channel'],'membername':_0x4c1cf2[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}});})[_0x7b7e('0x23')](function(_0x27cf58){if(_0x27cf58){return _0x27cf58[_0x7b7e('0x22')]({'exitAt':moment()[_0x7b7e('0xa6')](_0x7b7e('0xf3')),'data2':_0x7b7e('0x10a')},{'individualHooks':!![]});}return null;})[_0x7b7e('0x23')](function(){return _0x4c1cf2['update']({'voicePause':![]});});case _0x7b7e('0x48'):case _0x7b7e('0xb9'):case'fax':case _0x7b7e('0x47'):case'whatsapp':case _0x7b7e('0x55'):return db['MemberReport'][_0x7b7e('0x30')]({'where':{'channel':_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')],'membername':_0x4c1cf2[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}})[_0x7b7e('0x23')](function(_0x595ff9){if(_0x595ff9){return _0x595ff9[_0x7b7e('0x22')]({'exitAt':moment()['format'](_0x7b7e('0xf3')),'data2':_0x7b7e('0x10a')},{'individualHooks':!![]});}return null;})[_0x7b7e('0x23')](function(){var _0x1ae805={};_[_0x7b7e('0x10b')](_0x1ae805,util[_0x7b7e('0xa6')](_0x7b7e('0x10c'),_0x2c4fe7[_0x7b7e('0x58')][_0x7b7e('0x98')],_0x7b7e('0x10d')),![]);return _0x4c1cf2[_0x7b7e('0x22')](_0x1ae805);});default:return respondWithRpcPromise(_0x7b7e('0x109'),_0x7b7e('0x102'),{'id':_0x4c1cf2['id'],'name':_0x4c1cf2['name'],'pause':![]})['then'](function(){return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x4c1cf2['id']}});})[_0x7b7e('0x23')](function(){return db['MemberReport'][_0x7b7e('0x83')]({'where':{'membername':_0x4c1cf2[_0x7b7e('0x31')],'type':_0x7b7e('0xf7'),'exitAt':null}});})[_0x7b7e('0x23')](function(_0x2308e4){var _0x23e69b=[];_0x2308e4[_0x7b7e('0xf2')](function(_0x542b44){_0x23e69b[_0x7b7e('0x45')](_0x542b44['update']({'exitAt':moment()['format'](_0x7b7e('0xf3')),'data2':_0x7b7e('0x10a')}));});return BPromise[_0x7b7e('0x49')](_0x23e69b);})[_0x7b7e('0x23')](function(){return _0x4c1cf2['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0x7b7e('0x23')](respondWithResult(_0x1be623,null))[_0x7b7e('0x19')](handleError(_0x1be623,null));};exports[_0x7b7e('0x10e')]=function(_0x3c6e39,_0x3f12c5){var _0xc514b6={};var _0x3cbb0c={};var _0x45c53b;var _0x4a0e1b;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x3c6e39[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3f12c5,null))[_0x7b7e('0x23')](function(_0x4e7c80){if(_0x4e7c80){_0x45c53b=_0x4e7c80;_0x3cbb0c[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x10f')][_0x7b7e('0x38')]);_0x3cbb0c['query']=_[_0x7b7e('0x4d')](_0x3c6e39[_0x7b7e('0x3e')]);_0x3cbb0c[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x3cbb0c[_0x7b7e('0x50')],_0x3cbb0c[_0x7b7e('0x3e')]);_0xc514b6[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x3cbb0c[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x3c6e39[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0xc514b6[_0x7b7e('0x41')]=_0xc514b6['attributes'][_0x7b7e('0x44')]?_0xc514b6[_0x7b7e('0x41')]:_0x3cbb0c[_0x7b7e('0x50')];_0xc514b6[_0x7b7e('0xc6')]=qs['sort'](_0x3c6e39[_0x7b7e('0x3e')]['sort']);_0xc514b6[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x3c6e39[_0x7b7e('0x3e')],_0x3cbb0c[_0x7b7e('0x4e')]));if(_0x3c6e39['query'][_0x7b7e('0x2c')]){_0xc514b6[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0xc514b6[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0xc514b6[_0x7b7e('0x41')],function(_0x209c89){var _0x45838d={};_0x45838d[_0x209c89]={'$like':'%'+_0x3c6e39['query'][_0x7b7e('0x2c')]+'%'};return _0x45838d;})});}_0xc514b6=_[_0x7b7e('0x52')]({},_0xc514b6,_0x3c6e39[_0x7b7e('0x53')]);return _0x45c53b['getTeams'](_0xc514b6);}})[_0x7b7e('0x23')](function(_0x188eff){if(_0x188eff){_0x4a0e1b=_0x188eff[_0x7b7e('0x44')];if(!_0x3c6e39[_0x7b7e('0x3e')]['hasOwnProperty']('nolimit')){_0xc514b6[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x3c6e39[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0xc514b6['offset']=qs['offset'](_0x3c6e39['query']['offset']);}return _0x45c53b[_0x7b7e('0x10e')](_0xc514b6);}})[_0x7b7e('0x23')](function(_0x577610){if(_0x577610){return _0x577610?{'count':_0x4a0e1b,'rows':_0x577610}:null;}})['then'](respondWithResult(_0x3f12c5,null))[_0x7b7e('0x19')](handleError(_0x3f12c5,null));};exports[_0x7b7e('0x110')]=function(_0x3ddc51,_0x1b2692){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x3ddc51[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1b2692,null))[_0x7b7e('0x23')](function(_0x1e8ee2){if(_0x1e8ee2){var _0x4bce63=_0x1e8ee2[_0x7b7e('0x24')]({'plain':!![]});return _0x1e8ee2[_0x7b7e('0x110')](_0x3ddc51[_0x7b7e('0x58')][_0x7b7e('0x5c')],_['omit'](_0x3ddc51[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x23')](function(){for(var _0x14a6ac=0x0;_0x14a6ac<_0x3ddc51[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x14a6ac++){var _0xd6293e=[];db[_0x7b7e('0x10f')][_0x7b7e('0x8f')]({'where':{'id':_0x3ddc51[_0x7b7e('0x58')]['ids'][_0x14a6ac]}})['then'](function(_0x5e70db){_0xd6293e['push'](_0x5e70db[_0x7b7e('0x111')]()[_0x7b7e('0x23')](function(_0x4720c7){for(var _0x453115=0x0;_0x453115<_0x4720c7[_0x7b7e('0x44')];_0x453115++){_0x4720c7[_0x453115][_0x7b7e('0x112')](_0x7b7e('0x98'),_0x7b7e('0x113'));}return _0x4720c7;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x114')]()[_0x7b7e('0x23')](function(_0x11e956){for(var _0x5dc51f=0x0;_0x5dc51f<_0x11e956[_0x7b7e('0x44')];_0x5dc51f++){_0x11e956[_0x5dc51f][_0x7b7e('0x112')](_0x7b7e('0x98'),_0x7b7e('0x115'));}return _0x11e956;}));_0xd6293e['push'](_0x5e70db[_0x7b7e('0x116')]()['then'](function(_0x2ffbc9){for(var _0x411788=0x0;_0x411788<_0x2ffbc9[_0x7b7e('0x44')];_0x411788++){_0x2ffbc9[_0x411788][_0x7b7e('0x112')](_0x7b7e('0x98'),'Mail');}return _0x2ffbc9;}));_0xd6293e['push'](_0x5e70db[_0x7b7e('0x117')]()[_0x7b7e('0x23')](function(_0x40dd98){for(var _0x4ef312=0x0;_0x4ef312<_0x40dd98['length'];_0x4ef312++){_0x40dd98[_0x4ef312]['setDataValue'](_0x7b7e('0x98'),_0x7b7e('0x118'));}return _0x40dd98;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x119')]()[_0x7b7e('0x23')](function(_0x36edd8){for(var _0x5d84d0=0x0;_0x5d84d0<_0x36edd8[_0x7b7e('0x44')];_0x5d84d0++){_0x36edd8[_0x5d84d0][_0x7b7e('0x112')](_0x7b7e('0x98'),_0x7b7e('0x11a'));}return _0x36edd8;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x11b')]()[_0x7b7e('0x23')](function(_0x3ac2cb){for(var _0x120420=0x0;_0x120420<_0x3ac2cb[_0x7b7e('0x44')];_0x120420++){_0x3ac2cb[_0x120420]['setDataValue']('channel','Fax');}return _0x3ac2cb;}));_0xd6293e[_0x7b7e('0x45')](_0x5e70db[_0x7b7e('0x11c')]()['then'](function(_0x46cc70){for(var _0x1468f8=0x0;_0x1468f8<_0x46cc70[_0x7b7e('0x44')];_0x1468f8++){_0x46cc70[_0x1468f8]['setDataValue'](_0x7b7e('0x98'),_0x7b7e('0x11d'));}return _0x46cc70;}));return BPromise['all'](_0xd6293e);})[_0x7b7e('0x23')](function(_0x578f69){var _0x188a8f=_[_0x7b7e('0x11e')](_0x578f69);_0xd6293e=[];return db[_0x7b7e('0x62')][_0x7b7e('0x11f')](function(_0x1dfc06){for(var _0x45aab7=0x0;_0x45aab7<_0x188a8f[_0x7b7e('0x44')];_0x45aab7++){_0xd6293e[_0x7b7e('0x45')](_0x188a8f[_0x45aab7]['addAgent'](_0x4bce63['id']),{'transaction':_0x1dfc06});}return BPromise['all'](_0xd6293e)[_0x7b7e('0x23')](function(){if(_0x4bce63['online']){return BPromise[_0x7b7e('0x82')](_[_0x7b7e('0x2c')](_0x188a8f,function(_0x4bba0f){return _0x4bba0f[_0x7b7e('0x120')](_0x7b7e('0x98'))===_0x7b7e('0x113');}),function(_0x5507b6){return db[_0x7b7e('0xa8')][_0x7b7e('0xa9')]({'membername':_0x4bce63[_0x7b7e('0x31')],'UserId':_0x4bce63['id'],'queue_name':_0x5507b6['name'],'VoiceQueueId':_0x5507b6['id'],'interface':_[_0x7b7e('0x64')](_0x4bce63[_0x7b7e('0x9a')])?util['format'](_0x7b7e('0xa7'),_0x4bce63[_0x7b7e('0x31')]):_0x4bce63[_0x7b7e('0x9a')],'paused':_0x4bce63[_0x7b7e('0x99')]||![],'penalty':_0x4bce63[_0x7b7e('0x9f')]},{'transaction':_0x1dfc06});});}else{return;}})[_0x7b7e('0x23')](function(){for(var _0x57c364=0x0;_0x57c364<_0x188a8f[_0x7b7e('0x44')];_0x57c364++){var _0xd091d7=_0x188a8f[_0x57c364][_0x7b7e('0x120')](_0x7b7e('0x98'));var _0x19d96a=_0xd091d7+_0x7b7e('0xa1');socket['emit']('user'+_0xd091d7+'Queue:save',{'UserId':_0x4bce63['id'],['queueField']:_0x188a8f[_0x57c364]['id']});}});});});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x1b2692,null))['catch'](handleError(_0x1b2692,null));};exports[_0x7b7e('0x121')]=function(_0x4b3433,_0x341e15){return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x4b3433[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x341e15,null))['then'](function(_0x12b1ae){if(_0x12b1ae){var _0x577378=_0x12b1ae[_0x7b7e('0x24')]({'plain':!![]});var _0x4fcf86=_0x4b3433[_0x7b7e('0x3e')][_0x7b7e('0x5c')];return _0x12b1ae['removeTeams'](_0x4fcf86)[_0x7b7e('0x23')](function(){for(var _0x3a6637=0x0;_0x3a6637<_0x4fcf86[_0x7b7e('0x44')];_0x3a6637++){var _0x54f391=[];db['Team']['findOne']({'where':{'id':_0x4fcf86[_0x3a6637]}})[_0x7b7e('0x23')](function(_0x388a8b){_0x54f391[_0x7b7e('0x45')](_0x388a8b['getVoiceQueues']()['then'](function(_0x1c06b7){for(var _0x5c435f=0x0;_0x5c435f<_0x1c06b7[_0x7b7e('0x44')];_0x5c435f++){_0x1c06b7[_0x5c435f][_0x7b7e('0x112')]('channel',_0x7b7e('0x113'));}return _0x1c06b7;}));_0x54f391['push'](_0x388a8b[_0x7b7e('0x114')]()['then'](function(_0x571140){for(var _0x5b1d99=0x0;_0x5b1d99<_0x571140[_0x7b7e('0x44')];_0x5b1d99++){_0x571140[_0x5b1d99]['setDataValue'](_0x7b7e('0x98'),'Chat');}return _0x571140;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x116')]()[_0x7b7e('0x23')](function(_0x2bcc1a){for(var _0x4ba63f=0x0;_0x4ba63f<_0x2bcc1a[_0x7b7e('0x44')];_0x4ba63f++){_0x2bcc1a[_0x4ba63f]['setDataValue']('channel',_0x7b7e('0x122'));}return _0x2bcc1a;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x117')]()[_0x7b7e('0x23')](function(_0xd7a5b2){for(var _0x29b42b=0x0;_0x29b42b<_0xd7a5b2['length'];_0x29b42b++){_0xd7a5b2[_0x29b42b][_0x7b7e('0x112')]('channel','Sms');}return _0xd7a5b2;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x119')]()[_0x7b7e('0x23')](function(_0x34db6d){for(var _0x29f6ee=0x0;_0x29f6ee<_0x34db6d['length'];_0x29f6ee++){_0x34db6d[_0x29f6ee][_0x7b7e('0x112')]('channel',_0x7b7e('0x11a'));}return _0x34db6d;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x11b')]()[_0x7b7e('0x23')](function(_0x58f7f2){for(var _0x4422ce=0x0;_0x4422ce<_0x58f7f2[_0x7b7e('0x44')];_0x4422ce++){_0x58f7f2[_0x4422ce]['setDataValue'](_0x7b7e('0x98'),_0x7b7e('0x123'));}return _0x58f7f2;}));_0x54f391[_0x7b7e('0x45')](_0x388a8b[_0x7b7e('0x11c')]()[_0x7b7e('0x23')](function(_0x467e68){for(var _0x313c2c=0x0;_0x313c2c<_0x467e68[_0x7b7e('0x44')];_0x313c2c++){_0x467e68[_0x313c2c]['setDataValue'](_0x7b7e('0x98'),'Openchannel');}return _0x467e68;}));return BPromise[_0x7b7e('0x49')](_0x54f391);})[_0x7b7e('0x23')](function(_0x1b39ac){var _0x254ffc=_[_0x7b7e('0x11e')](_0x1b39ac);_0x54f391=[];return db[_0x7b7e('0x62')]['transaction'](function(_0x434023){for(var _0x56554c=0x0;_0x56554c<_0x254ffc[_0x7b7e('0x44')];_0x56554c++){_0x54f391['push'](_0x254ffc[_0x56554c][_0x7b7e('0x124')](_0x577378['id']),{'transaction':_0x434023});}return BPromise[_0x7b7e('0x49')](_0x54f391)['then'](function(){if(_0x577378[_0x7b7e('0xa5')]){return BPromise[_0x7b7e('0x82')](_['filter'](_0x254ffc,function(_0x2e2d1b){return _0x2e2d1b[_0x7b7e('0x120')](_0x7b7e('0x98'))===_0x7b7e('0x113');}),function(_0x2391f9){return db[_0x7b7e('0xa8')][_0x7b7e('0x33')]({'where':{'VoiceQueueId':_0x2391f9['id'],'UserId':_0x577378['id']},'transaction':_0x434023});});}else{return;}})[_0x7b7e('0x23')](function(){for(var _0x50897d=0x0;_0x50897d<_0x254ffc[_0x7b7e('0x44')];_0x50897d++){var _0x2cd5d4=_0x254ffc[_0x50897d][_0x7b7e('0x120')]('channel');var _0x57515b=_0x2cd5d4+'QueueId';socket[_0x7b7e('0xa2')](_0x7b7e('0x77')+_0x2cd5d4+_0x7b7e('0xac'),{'UserId':_0x577378['id'],['queueField']:_0x254ffc[_0x50897d]['id']});}});});});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x341e15,null))['catch'](handleError(_0x341e15,null));};exports[_0x7b7e('0x125')]=function(_0x22f1a9,_0x276d24){var _0x287889={};var _0x130485={};var _0x9bcc19;var _0x37163d;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x22f1a9[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x276d24,null))['then'](function(_0x4dab8e){if(_0x4dab8e){_0x9bcc19=_0x4dab8e;_0x130485[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0xca')][_0x7b7e('0x38')]);_0x130485[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x22f1a9[_0x7b7e('0x3e')]);_0x130485[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x130485[_0x7b7e('0x50')],_0x130485[_0x7b7e('0x3e')]);_0x287889[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x130485[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x287889[_0x7b7e('0x41')]=_0x287889[_0x7b7e('0x41')]['length']?_0x287889[_0x7b7e('0x41')]:_0x130485[_0x7b7e('0x50')];_0x287889[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x22f1a9['query']['sort']);_0x287889[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x22f1a9['query'],_0x130485[_0x7b7e('0x4e')]));if(_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x287889['where']=_[_0x7b7e('0x52')](_0x287889[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x287889['attributes'],function(_0x22856f){var _0x2087ac={};_0x2087ac[_0x22856f]={'$like':'%'+_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x2087ac;})});}_0x287889=_[_0x7b7e('0x52')]({},_0x287889,_0x22f1a9[_0x7b7e('0x53')]);return _0x9bcc19[_0x7b7e('0x125')](_0x287889);}})['then'](function(_0x354a8d){if(_0x354a8d){_0x37163d=_0x354a8d[_0x7b7e('0x44')];if(!_0x22f1a9[_0x7b7e('0x3e')]['hasOwnProperty']('nolimit')){_0x287889[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x22f1a9['query'][_0x7b7e('0x21')]);_0x287889['offset']=qs[_0x7b7e('0x1e')](_0x22f1a9[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x9bcc19['getLists'](_0x287889);}})[_0x7b7e('0x23')](function(_0x2c2734){if(_0x2c2734){return _0x2c2734?{'count':_0x37163d,'rows':_0x2c2734}:null;}})['then'](respondWithResult(_0x276d24,null))[_0x7b7e('0x19')](handleError(_0x276d24,null));};exports[_0x7b7e('0x126')]=function(_0x3c06f6,_0x79e8cc){var _0x1668b5={};var _0x4af735={};var _0x43d70b;var _0x1a941b;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x3c06f6[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x79e8cc,null))[_0x7b7e('0x23')](function(_0x33dd41){if(_0x33dd41){_0x43d70b=_0x33dd41;_0x4af735[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x37')][_0x7b7e('0x38')]);_0x4af735[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x3c06f6['query']);_0x4af735[_0x7b7e('0x4e')]=_['intersection'](_0x4af735[_0x7b7e('0x50')],_0x4af735['query']);_0x1668b5[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x4af735[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x3c06f6['query']['fields']));_0x1668b5['attributes']=_0x1668b5[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x1668b5[_0x7b7e('0x41')]:_0x4af735[_0x7b7e('0x50')];_0x1668b5[_0x7b7e('0xc6')]=qs['sort'](_0x3c06f6[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x1668b5[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x3c06f6[_0x7b7e('0x3e')],_0x4af735[_0x7b7e('0x4e')]));if(_0x3c06f6[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x1668b5['where']=_['merge'](_0x1668b5[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x1668b5['attributes'],function(_0xd18706){var _0x4a3e4c={};_0x4a3e4c[_0xd18706]={'$like':'%'+_0x3c06f6[_0x7b7e('0x3e')]['filter']+'%'};return _0x4a3e4c;})});}_0x1668b5['model']=db[_0x7b7e('0x37')];_0x1668b5['as']=_0x7b7e('0x28');_0x1668b5=_[_0x7b7e('0x52')]({},_0x1668b5,_0x3c06f6[_0x7b7e('0x53')]);return _0x43d70b[_0x7b7e('0x111')]({'include':[_0x1668b5]});}})[_0x7b7e('0x23')](function(_0x10738c){if(_0x10738c){var _0x4472c0={},_0x35c490=[],_0x5bb57e=0x0;for(var _0x29c266=0x0;_0x29c266<_0x10738c['length'];_0x29c266+=0x1){for(var _0xf923ff=0x0,_0x179e64;_0xf923ff<_0x10738c[_0x29c266][_0x7b7e('0x28')][_0x7b7e('0x44')];_0xf923ff+=0x1){_0x179e64=_0x10738c[_0x29c266][_0x7b7e('0x28')][_0xf923ff][_0x7b7e('0x24')]({'plain':!![]});_0x4472c0[_0x179e64['id']]=_0x179e64;}}_0x4472c0=_[_0x7b7e('0x127')](_0x4472c0);for(var _0x4a3b6c=qs[_0x7b7e('0x1e')](_0x3c06f6['query'][_0x7b7e('0x1e')]);_0x4a3b6c<_0x4472c0[_0x7b7e('0x44')]&&_0x35c490[_0x7b7e('0x44')]<qs[_0x7b7e('0x21')](_0x3c06f6[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x4a3b6c+=0x1){if(_0x4472c0[_0x4a3b6c]){_0x35c490['push'](_0x4472c0[_0x4a3b6c]);}}return{'count':_0x4472c0[_0x7b7e('0x44')],'rows':_0x35c490};}})[_0x7b7e('0x23')](respondWithResult(_0x79e8cc,null))['catch'](handleError(_0x79e8cc,null));};exports[_0x7b7e('0x33')]=function(_0x4ff545,_0x265070){if(_0x4ff545['user']['id']==_0x4ff545[_0x7b7e('0x4b')]['id']){return _0x265070[_0x7b7e('0x1b')](0x1f4)[_0x7b7e('0x35')]({'message':_0x7b7e('0x128')});}return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x4ff545[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x265070,null))[_0x7b7e('0x23')](removeEntity(_0x265070,null))[_0x7b7e('0x19')](handleError(_0x265070,null));};exports[_0x7b7e('0x129')]=function(_0x5646c4,_0x3ab706){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x5646c4[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3ab706,null))[_0x7b7e('0x23')](function(_0x489e00){if(_0x489e00){return _0x489e00[_0x7b7e('0x129')](_0x5646c4[_0x7b7e('0x58')][_0x7b7e('0x5c')],_['omit'](_0x5646c4[_0x7b7e('0x58')],['ids','id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x67a678=0x0;_0x67a678<_0x5646c4[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x67a678+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x12b'),{'ChatInteractionId':Number(_0x5646c4[_0x7b7e('0x58')]['ids'][_0x67a678]),'UserId':Number(_0x5646c4[_0x7b7e('0x4b')]['id'])});}return _0x5646c4['body'][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x3ab706,null))[_0x7b7e('0x19')](handleError(_0x3ab706,null));};exports[_0x7b7e('0x12c')]=function(_0x54c9c9,_0x146ca1){return db['User']['find']({'where':{'id':_0x54c9c9[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x146ca1,null))[_0x7b7e('0x23')](function(_0xf37cd9){if(_0xf37cd9){return _0xf37cd9['removeChatInteractions'](_0x54c9c9[_0x7b7e('0x3e')]['ids'])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x54c9c9[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0x333502=0x0;_0x333502<_0x54c9c9[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x333502+=0x1){socket[_0x7b7e('0xa2')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x54c9c9['query'][_0x7b7e('0x5c')][_0x333502]),'UserId':Number(_0x54c9c9[_0x7b7e('0x4b')]['id'])});}}else{socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x54c9c9[_0x7b7e('0x3e')][_0x7b7e('0x5c')]),'UserId':Number(_0x54c9c9[_0x7b7e('0x4b')]['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x146ca1,null))['catch'](handleError(_0x146ca1,null));};exports[_0x7b7e('0x12e')]=function(_0x2a7374,_0x17b000){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x2a7374[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x17b000,null))[_0x7b7e('0x23')](function(_0x143bcc){if(_0x143bcc){return _0x143bcc['addMailInteractions'](_0x2a7374['body']['ids'],_['omit'](_0x2a7374[_0x7b7e('0x58')],['ids','id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x2a694c=0x0;_0x2a694c<_0x2a7374[_0x7b7e('0x58')][_0x7b7e('0x5c')]['length'];_0x2a694c+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x12f'),{'MailInteractionId':Number(_0x2a7374[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x2a694c]),'UserId':Number(_0x2a7374[_0x7b7e('0x4b')]['id'])});}return _0x2a7374['body'][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x17b000,null))['catch'](handleError(_0x17b000,null));};exports[_0x7b7e('0x130')]=function(_0x1e6e5c,_0x515713){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x1e6e5c['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x515713,null))[_0x7b7e('0x23')](function(_0x2ae70d){if(_0x2ae70d){return _0x2ae70d[_0x7b7e('0x130')](_0x1e6e5c['query'][_0x7b7e('0x5c')])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x1e6e5c['query'][_0x7b7e('0x5c')])){for(var _0x43f833=0x0;_0x43f833<_0x1e6e5c['query']['ids'][_0x7b7e('0x44')];_0x43f833+=0x1){socket[_0x7b7e('0xa2')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1e6e5c[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0x43f833]),'UserId':Number(_0x1e6e5c['params']['id'])});}}else{socket[_0x7b7e('0xa2')](_0x7b7e('0x131'),{'MailInteractionId':Number(_0x1e6e5c['query']['ids']),'UserId':Number(_0x1e6e5c[_0x7b7e('0x4b')]['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x515713,null))[_0x7b7e('0x19')](handleError(_0x515713,null));};exports[_0x7b7e('0x132')]=function(_0x560aac,_0x36c549){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x560aac[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x36c549,null))[_0x7b7e('0x23')](function(_0xa8352a){if(_0xa8352a){return _0xa8352a[_0x7b7e('0x132')](_0x560aac[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x560aac[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x2e6771=0x0;_0x2e6771<_0x560aac['body']['ids'][_0x7b7e('0x44')];_0x2e6771+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x133'),{'FaxInteractionId':Number(_0x560aac[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x2e6771]),'UserId':Number(_0x560aac[_0x7b7e('0x4b')]['id'])});}return _0x560aac[_0x7b7e('0x58')][_0x7b7e('0x5c')];});}})['then'](respondWithResult(_0x36c549,null))['catch'](handleError(_0x36c549,null));};exports[_0x7b7e('0x134')]=function(_0x38cf27,_0x4b3f30){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x38cf27[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4b3f30,null))[_0x7b7e('0x23')](function(_0x5f19d1){if(_0x5f19d1){return _0x5f19d1['removeFaxInteractions'](_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0xd567b6=0x0;_0xd567b6<_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0xd567b6+=0x1){socket['emit'](_0x7b7e('0x135'),{'FaxInteractionId':Number(_0x38cf27[_0x7b7e('0x3e')][_0x7b7e('0x5c')][_0xd567b6]),'UserId':Number(_0x38cf27[_0x7b7e('0x4b')]['id'])});}}else{socket[_0x7b7e('0xa2')](_0x7b7e('0x135'),{'FaxInteractionId':Number(_0x38cf27['query'][_0x7b7e('0x5c')]),'UserId':Number(_0x38cf27['params']['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x4b3f30,null))[_0x7b7e('0x19')](handleError(_0x4b3f30,null));};exports[_0x7b7e('0x136')]=function(_0x4628db,_0x597f30){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x4628db['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x597f30,null))['then'](function(_0x1ef594){if(_0x1ef594){return _0x1ef594[_0x7b7e('0x136')](_0x4628db[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x4628db[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x318cb2=0x0;_0x318cb2<_0x4628db[_0x7b7e('0x58')]['ids']['length'];_0x318cb2+=0x1){socket['emit'](_0x7b7e('0x137'),{'SmsInteractionId':Number(_0x4628db['body'][_0x7b7e('0x5c')][_0x318cb2]),'UserId':Number(_0x4628db[_0x7b7e('0x4b')]['id'])});}return _0x4628db['body'][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x597f30,null))[_0x7b7e('0x19')](handleError(_0x597f30,null));};exports[_0x7b7e('0x138')]=function(_0x30f439,_0x4a6447){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x30f439[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4a6447,null))[_0x7b7e('0x23')](function(_0x7a40e0){if(_0x7a40e0){return _0x7a40e0[_0x7b7e('0x138')](_0x30f439[_0x7b7e('0x3e')][_0x7b7e('0x5c')])[_0x7b7e('0x23')](function(){if(_[_0x7b7e('0x12d')](_0x30f439['query'][_0x7b7e('0x5c')])){for(var _0x217e8c=0x0;_0x217e8c<_0x30f439[_0x7b7e('0x3e')][_0x7b7e('0x5c')]['length'];_0x217e8c+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x139'),{'SmsInteractionId':Number(_0x30f439[_0x7b7e('0x3e')]['ids'][_0x217e8c]),'UserId':Number(_0x30f439['params']['id'])});}}else{socket[_0x7b7e('0xa2')](_0x7b7e('0x139'),{'SmsInteractionId':Number(_0x30f439['query'][_0x7b7e('0x5c')]),'UserId':Number(_0x30f439[_0x7b7e('0x4b')]['id'])});}});}})['then'](respondWithStatusCode(_0x4a6447,null))[_0x7b7e('0x19')](handleError(_0x4a6447,null));};exports['addOpenchannelInteractions']=function(_0x1a8e51,_0x3b5567){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x1a8e51[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3b5567,null))[_0x7b7e('0x23')](function(_0x3bb5d5){if(_0x3bb5d5){return _0x3bb5d5[_0x7b7e('0x13a')](_0x1a8e51[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x1a8e51['body'],['ids','id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x437598=0x0;_0x437598<_0x1a8e51[_0x7b7e('0x58')]['ids'][_0x7b7e('0x44')];_0x437598+=0x1){socket[_0x7b7e('0xa2')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x1a8e51[_0x7b7e('0x58')][_0x7b7e('0x5c')][_0x437598]),'UserId':Number(_0x1a8e51[_0x7b7e('0x4b')]['id'])});}return _0x1a8e51[_0x7b7e('0x58')][_0x7b7e('0x5c')];});}})[_0x7b7e('0x23')](respondWithResult(_0x3b5567,null))['catch'](handleError(_0x3b5567,null));};exports[_0x7b7e('0x13b')]=function(_0x440ba0,_0x596647){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x440ba0[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x596647,null))[_0x7b7e('0x23')](function(_0x46d5ab){if(_0x46d5ab){return _0x46d5ab[_0x7b7e('0x13b')](_0x440ba0[_0x7b7e('0x3e')][_0x7b7e('0x5c')])['then'](function(){if(_[_0x7b7e('0x12d')](_0x440ba0[_0x7b7e('0x3e')][_0x7b7e('0x5c')])){for(var _0x2b375e=0x0;_0x2b375e<_0x440ba0[_0x7b7e('0x3e')]['ids'][_0x7b7e('0x44')];_0x2b375e+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x13c'),{'OpenchannelInteractionId':Number(_0x440ba0['query'][_0x7b7e('0x5c')][_0x2b375e]),'UserId':Number(_0x440ba0[_0x7b7e('0x4b')]['id'])});}}else{socket[_0x7b7e('0xa2')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x440ba0[_0x7b7e('0x3e')][_0x7b7e('0x5c')]),'UserId':Number(_0x440ba0[_0x7b7e('0x4b')]['id'])});}});}})[_0x7b7e('0x23')](respondWithStatusCode(_0x596647,null))['catch'](handleError(_0x596647,null));};exports[_0x7b7e('0x13d')]=function(_0x5ee32c,_0x27bb62){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x5ee32c[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x27bb62,null))[_0x7b7e('0x23')](function(_0x2e89c7){if(_0x2e89c7){return _0x2e89c7[_0x7b7e('0x13d')](_0x5ee32c['body'][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x5ee32c[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{})[_0x7b7e('0x12a')](function(){for(var _0x3b5cfd=0x0;_0x3b5cfd<_0x5ee32c['body'][_0x7b7e('0x5c')][_0x7b7e('0x44')];_0x3b5cfd+=0x1){socket[_0x7b7e('0xa2')](_0x7b7e('0x13e'),{'WhatsappInteractionId':Number(_0x5ee32c['body'][_0x7b7e('0x5c')][_0x3b5cfd]),'UserId':Number(_0x5ee32c[_0x7b7e('0x4b')]['id'])});}return _0x5ee32c['body']['ids'];});}})[_0x7b7e('0x23')](respondWithResult(_0x27bb62,null))['catch'](handleError(_0x27bb62,null));};exports['removeWhatsappInteractions']=function(_0x384aff,_0x2bedcd){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x384aff[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2bedcd,null))[_0x7b7e('0x23')](function(_0x4a6150){if(_0x4a6150){return _0x4a6150['removeWhatsappInteractions'](_0x384aff[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x2bedcd,null))['catch'](handleError(_0x2bedcd,null));};exports[_0x7b7e('0x13f')]=function(_0x252e2c,_0x395654){var _0x136e45={};var _0xadf92c={};var _0x3d688d;var _0x2cd715;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x252e2c['params']['id']}})['then'](handleEntityNotFound(_0x395654,null))[_0x7b7e('0x23')](function(_0x30ebf3){if(_0x30ebf3){_0x3d688d=_0x30ebf3;_0xadf92c[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x140')][_0x7b7e('0x38')]);_0xadf92c[_0x7b7e('0x3e')]=_['keys'](_0x252e2c[_0x7b7e('0x3e')]);_0xadf92c[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0xadf92c['model'],_0xadf92c['query']);_0x136e45['attributes']=_[_0x7b7e('0x4f')](_0xadf92c['model'],qs[_0x7b7e('0x51')](_0x252e2c[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x136e45[_0x7b7e('0x41')]=_0x136e45[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x136e45[_0x7b7e('0x41')]:_0xadf92c[_0x7b7e('0x50')];_0x136e45['order']=qs[_0x7b7e('0xc7')](_0x252e2c[_0x7b7e('0x3e')]['sort']);_0x136e45[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x252e2c['query'],_0xadf92c[_0x7b7e('0x4e')]));if(_0x252e2c[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x136e45[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x136e45['where'],{'$or':_[_0x7b7e('0x85')](_0x136e45[_0x7b7e('0x41')],function(_0x2160c8){var _0x11d083={};_0x11d083[_0x2160c8]={'$like':'%'+_0x252e2c['query'][_0x7b7e('0x2c')]+'%'};return _0x11d083;})});}_0x136e45=_[_0x7b7e('0x52')]({},_0x136e45,_0x252e2c[_0x7b7e('0x53')]);return _0x3d688d[_0x7b7e('0x13f')](_0x136e45);}})[_0x7b7e('0x23')](function(_0x4501b4){if(_0x4501b4){_0x2cd715=_0x4501b4['length'];if(!_0x252e2c['query']['hasOwnProperty'](_0x7b7e('0xcd'))){_0x136e45['limit']=qs[_0x7b7e('0x21')](_0x252e2c[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x136e45['offset']=qs[_0x7b7e('0x1e')](_0x252e2c[_0x7b7e('0x3e')]['offset']);}return _0x3d688d[_0x7b7e('0x13f')](_0x136e45);}})[_0x7b7e('0x23')](function(_0x40ed63){if(_0x40ed63){return _0x40ed63?{'count':_0x2cd715,'rows':_0x40ed63}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x395654,null))[_0x7b7e('0x19')](handleError(_0x395654,null));};exports[_0x7b7e('0x141')]=function(_0x9824c4,_0x271be2){var _0x20e357={};var _0x2345f1={};var _0x45a2ca;var _0x53ec4c;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x9824c4[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x271be2,null))[_0x7b7e('0x23')](function(_0x281716){if(_0x281716){_0x45a2ca=_0x281716;_0x2345f1[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x142')][_0x7b7e('0x38')]);_0x2345f1[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x9824c4[_0x7b7e('0x3e')]);_0x2345f1['filters']=_[_0x7b7e('0x4f')](_0x2345f1[_0x7b7e('0x50')],_0x2345f1[_0x7b7e('0x3e')]);_0x20e357[_0x7b7e('0x41')]=_['intersection'](_0x2345f1['model'],qs[_0x7b7e('0x51')](_0x9824c4[_0x7b7e('0x3e')]['fields']));_0x20e357[_0x7b7e('0x41')]=_0x20e357[_0x7b7e('0x41')]['length']?_0x20e357[_0x7b7e('0x41')]:_0x2345f1[_0x7b7e('0x50')];_0x20e357[_0x7b7e('0xc6')]=qs['sort'](_0x9824c4['query'][_0x7b7e('0xc7')]);_0x20e357[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x9824c4[_0x7b7e('0x3e')],_0x2345f1[_0x7b7e('0x4e')]));if(_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x20e357[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x20e357['where'],{'$or':_[_0x7b7e('0x85')](_0x20e357[_0x7b7e('0x41')],function(_0x11b24b){var _0x177884={};_0x177884[_0x11b24b]={'$like':'%'+_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x177884;})});}_0x20e357=_[_0x7b7e('0x52')]({},_0x20e357,_0x9824c4[_0x7b7e('0x53')]);return _0x45a2ca['getFaxAccounts'](_0x20e357);}})[_0x7b7e('0x23')](function(_0x144bde){if(_0x144bde){_0x53ec4c=_0x144bde['length'];if(!_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x20e357[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x9824c4[_0x7b7e('0x3e')]['limit']);_0x20e357[_0x7b7e('0x1e')]=qs['offset'](_0x9824c4[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x45a2ca[_0x7b7e('0x141')](_0x20e357);}})[_0x7b7e('0x23')](function(_0x33af87){if(_0x33af87){return _0x33af87?{'count':_0x53ec4c,'rows':_0x33af87}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x271be2,null))[_0x7b7e('0x19')](handleError(_0x271be2,null));};exports['addFaxAccounts']=function(_0x30ca66,_0x57676e){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x30ca66[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x57676e,null))[_0x7b7e('0x23')](function(_0x5587a0){if(_0x5587a0){return _0x5587a0[_0x7b7e('0x143')](_0x30ca66[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x30ca66['body'],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x57676e,null))[_0x7b7e('0x19')](handleError(_0x57676e,null));};exports[_0x7b7e('0x144')]=function(_0x475302,_0x2aba92){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x475302[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2aba92,null))[_0x7b7e('0x23')](function(_0x411d2f){if(_0x411d2f){return _0x411d2f['removeFaxAccounts'](_0x475302[_0x7b7e('0x3e')]['ids']);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x2aba92,null))[_0x7b7e('0x19')](handleError(_0x2aba92,null));};exports[_0x7b7e('0x145')]=function(_0x522ac5,_0x27f850){var _0x4cef91={};var _0x55a0c2={};var _0x47059c;var _0x5de998;return db[_0x7b7e('0x37')]['findOne']({'where':{'id':_0x522ac5[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x27f850,null))[_0x7b7e('0x23')](function(_0x3fe160){if(_0x3fe160){_0x47059c=_0x3fe160;_0x55a0c2[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x146')][_0x7b7e('0x38')]);_0x55a0c2['query']=_[_0x7b7e('0x4d')](_0x522ac5['query']);_0x55a0c2[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x55a0c2['model'],_0x55a0c2['query']);_0x4cef91[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x55a0c2[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x4cef91[_0x7b7e('0x41')]=_0x4cef91[_0x7b7e('0x41')]['length']?_0x4cef91[_0x7b7e('0x41')]:_0x55a0c2[_0x7b7e('0x50')];_0x4cef91[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x522ac5['query'][_0x7b7e('0xc7')]);_0x4cef91[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x522ac5['query'],_0x55a0c2['filters']));if(_0x522ac5['query'][_0x7b7e('0x2c')]){_0x4cef91[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x4cef91[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x4cef91['attributes'],function(_0x4a39fd){var _0x547761={};_0x547761[_0x4a39fd]={'$like':'%'+_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x547761;})});}_0x4cef91=_[_0x7b7e('0x52')]({},_0x4cef91,_0x522ac5['options']);return _0x47059c[_0x7b7e('0x145')](_0x4cef91);}})['then'](function(_0x457808){if(_0x457808){_0x5de998=_0x457808['length'];if(!_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x4cef91['limit']=qs[_0x7b7e('0x21')](_0x522ac5['query'][_0x7b7e('0x21')]);_0x4cef91[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x522ac5[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x47059c[_0x7b7e('0x145')](_0x4cef91);}})['then'](function(_0x2ee799){if(_0x2ee799){return _0x2ee799?{'count':_0x5de998,'rows':_0x2ee799}:null;}})['then'](respondWithResult(_0x27f850,null))['catch'](handleError(_0x27f850,null));};exports[_0x7b7e('0x147')]=function(_0x53b2f,_0x4f03f4){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x53b2f[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4f03f4,null))['then'](function(_0x240eeb){if(_0x240eeb){return _0x240eeb[_0x7b7e('0x147')](_0x53b2f[_0x7b7e('0x58')][_0x7b7e('0x5c')],_['omit'](_0x53b2f[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x4f03f4,null))[_0x7b7e('0x19')](handleError(_0x4f03f4,null));};exports[_0x7b7e('0x148')]=function(_0x281f28,_0xc0ab37){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x281f28[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0xc0ab37,null))[_0x7b7e('0x23')](function(_0x4de23a){if(_0x4de23a){return _0x4de23a['removeMailAccounts'](_0x281f28[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0xc0ab37,null))[_0x7b7e('0x19')](handleError(_0xc0ab37,null));};exports[_0x7b7e('0x149')]=function(_0x531e56,_0x11b6f2){var _0x4992cd={};var _0x9729d={};var _0x555079;var _0x57c48b;return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x531e56[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x11b6f2,null))[_0x7b7e('0x23')](function(_0x2f71bb){if(_0x2f71bb){_0x555079=_0x2f71bb;_0x9729d[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x14a')][_0x7b7e('0x38')]);_0x9729d['query']=_['keys'](_0x531e56['query']);_0x9729d[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x9729d[_0x7b7e('0x50')],_0x9729d[_0x7b7e('0x3e')]);_0x4992cd['attributes']=_[_0x7b7e('0x4f')](_0x9729d[_0x7b7e('0x50')],qs['fields'](_0x531e56['query'][_0x7b7e('0x51')]));_0x4992cd[_0x7b7e('0x41')]=_0x4992cd[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x4992cd[_0x7b7e('0x41')]:_0x9729d['model'];_0x4992cd[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x531e56[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x4992cd[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x531e56['query'],_0x9729d[_0x7b7e('0x4e')]));if(_0x531e56[_0x7b7e('0x3e')]['filter']){_0x4992cd[_0x7b7e('0x3d')]=_['merge'](_0x4992cd['where'],{'$or':_[_0x7b7e('0x85')](_0x4992cd[_0x7b7e('0x41')],function(_0x40af54){var _0x51887d={};_0x51887d[_0x40af54]={'$like':'%'+_0x531e56['query'][_0x7b7e('0x2c')]+'%'};return _0x51887d;})});}_0x4992cd=_['merge']({},_0x4992cd,_0x531e56[_0x7b7e('0x53')]);return _0x555079[_0x7b7e('0x149')](_0x4992cd);}})[_0x7b7e('0x23')](function(_0x5b1722){if(_0x5b1722){_0x57c48b=_0x5b1722[_0x7b7e('0x44')];if(!_0x531e56[_0x7b7e('0x3e')]['hasOwnProperty'](_0x7b7e('0xcd'))){_0x4992cd[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x531e56[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x4992cd[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x531e56['query'][_0x7b7e('0x1e')]);}return _0x555079['getOpenchannelAccounts'](_0x4992cd);}})[_0x7b7e('0x23')](function(_0x6d93ba){if(_0x6d93ba){return _0x6d93ba?{'count':_0x57c48b,'rows':_0x6d93ba}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x11b6f2,null))[_0x7b7e('0x19')](handleError(_0x11b6f2,null));};exports[_0x7b7e('0x14b')]=function(_0x1562b3,_0x1975c1){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x1562b3['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1975c1,null))[_0x7b7e('0x23')](function(_0x26c396){if(_0x26c396){return _0x26c396[_0x7b7e('0x14b')](_0x1562b3[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x1562b3[_0x7b7e('0x58')],['ids','id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x1975c1,null))[_0x7b7e('0x19')](handleError(_0x1975c1,null));};exports[_0x7b7e('0x14c')]=function(_0x326f75,_0x1bffe9){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x326f75['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1bffe9,null))[_0x7b7e('0x23')](function(_0x29f31a){if(_0x29f31a){return _0x29f31a['removeOpenchannelAccounts'](_0x326f75['query'][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x1bffe9,null))[_0x7b7e('0x19')](handleError(_0x1bffe9,null));};exports[_0x7b7e('0x14d')]=function(_0x18c063,_0x4ab1e8){var _0x435464={};var _0x2eb989={};var _0x375b3f;var _0x3b383d;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x18c063['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x4ab1e8,null))[_0x7b7e('0x23')](function(_0x4475be){if(_0x4475be){_0x375b3f=_0x4475be;_0x2eb989[_0x7b7e('0x50')]=_['keys'](db[_0x7b7e('0x14e')][_0x7b7e('0x38')]);_0x2eb989[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x18c063[_0x7b7e('0x3e')]);_0x2eb989[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x2eb989[_0x7b7e('0x50')],_0x2eb989[_0x7b7e('0x3e')]);_0x435464[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x2eb989[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x435464[_0x7b7e('0x41')]=_0x435464[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x435464[_0x7b7e('0x41')]:_0x2eb989['model'];_0x435464[_0x7b7e('0xc6')]=qs['sort'](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x435464[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0x18c063[_0x7b7e('0x3e')],_0x2eb989[_0x7b7e('0x4e')]));if(_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x435464['where']=_[_0x7b7e('0x52')](_0x435464[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x435464['attributes'],function(_0x1dec85){var _0x4db986={};_0x4db986[_0x1dec85]={'$like':'%'+_0x18c063['query']['filter']+'%'};return _0x4db986;})});}_0x435464=_['merge']({},_0x435464,_0x18c063[_0x7b7e('0x53')]);return _0x375b3f['getSmsAccounts'](_0x435464);}})[_0x7b7e('0x23')](function(_0x194d65){if(_0x194d65){_0x3b383d=_0x194d65['length'];if(!_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x435464[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x435464[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x18c063[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x375b3f[_0x7b7e('0x14d')](_0x435464);}})[_0x7b7e('0x23')](function(_0x2231a5){if(_0x2231a5){return _0x2231a5?{'count':_0x3b383d,'rows':_0x2231a5}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x4ab1e8,null))[_0x7b7e('0x19')](handleError(_0x4ab1e8,null));};exports[_0x7b7e('0x14f')]=function(_0x483837,_0x2743be){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x483837[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2743be,null))['then'](function(_0x58d1c0){if(_0x58d1c0){return _0x58d1c0[_0x7b7e('0x14f')](_0x483837[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x483837[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x2743be,null))[_0x7b7e('0x19')](handleError(_0x2743be,null));};exports[_0x7b7e('0x150')]=function(_0x290244,_0x17d2ac){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x290244[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x17d2ac,null))['then'](function(_0x3251b6){if(_0x3251b6){return _0x3251b6['removeSmsAccounts'](_0x290244[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x17d2ac,null))[_0x7b7e('0x19')](handleError(_0x17d2ac,null));};exports['getChatWebsites']=function(_0x4681c3,_0x2c5fe7){var _0x2ed1ef={};var _0x21ba54={};var _0x4c10fb;var _0x409899;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x4681c3['params']['id']}})['then'](handleEntityNotFound(_0x2c5fe7,null))[_0x7b7e('0x23')](function(_0x40dbab){if(_0x40dbab){_0x4c10fb=_0x40dbab;_0x21ba54['model']=_['keys'](db[_0x7b7e('0x151')][_0x7b7e('0x38')]);_0x21ba54[_0x7b7e('0x3e')]=_['keys'](_0x4681c3['query']);_0x21ba54[_0x7b7e('0x4e')]=_['intersection'](_0x21ba54['model'],_0x21ba54['query']);_0x2ed1ef['attributes']=_[_0x7b7e('0x4f')](_0x21ba54['model'],qs[_0x7b7e('0x51')](_0x4681c3['query']['fields']));_0x2ed1ef[_0x7b7e('0x41')]=_0x2ed1ef['attributes']['length']?_0x2ed1ef[_0x7b7e('0x41')]:_0x21ba54['model'];_0x2ed1ef[_0x7b7e('0xc6')]=qs['sort'](_0x4681c3[_0x7b7e('0x3e')]['sort']);_0x2ed1ef[_0x7b7e('0x3d')]=qs['filters'](_['pick'](_0x4681c3['query'],_0x21ba54['filters']));if(_0x4681c3[_0x7b7e('0x3e')]['filter']){_0x2ed1ef['where']=_['merge'](_0x2ed1ef[_0x7b7e('0x3d')],{'$or':_['map'](_0x2ed1ef[_0x7b7e('0x41')],function(_0x9ebd06){var _0x4b140b={};_0x4b140b[_0x9ebd06]={'$like':'%'+_0x4681c3[_0x7b7e('0x3e')]['filter']+'%'};return _0x4b140b;})});}_0x2ed1ef=_['merge']({},_0x2ed1ef,_0x4681c3[_0x7b7e('0x53')]);return _0x4c10fb['getChatWebsites'](_0x2ed1ef);}})['then'](function(_0x474d0f){if(_0x474d0f){_0x409899=_0x474d0f[_0x7b7e('0x44')];if(!_0x4681c3[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2ed1ef[_0x7b7e('0x21')]=qs['limit'](_0x4681c3['query'][_0x7b7e('0x21')]);_0x2ed1ef[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x4681c3['query']['offset']);}return _0x4c10fb[_0x7b7e('0x152')](_0x2ed1ef);}})[_0x7b7e('0x23')](function(_0x29df37){if(_0x29df37){return _0x29df37?{'count':_0x409899,'rows':_0x29df37}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x2c5fe7,null))['catch'](handleError(_0x2c5fe7,null));};exports[_0x7b7e('0x153')]=function(_0x505162,_0x22e9ad){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x505162[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x22e9ad,null))['then'](function(_0x266b0b){if(_0x266b0b){return _0x266b0b[_0x7b7e('0x153')](_0x505162[_0x7b7e('0x58')]['ids'],_['omit'](_0x505162[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x22e9ad,null))[_0x7b7e('0x19')](handleError(_0x22e9ad,null));};exports[_0x7b7e('0x154')]=function(_0x165001,_0x314394){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x165001[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x314394,null))[_0x7b7e('0x23')](function(_0x1cc8c5){if(_0x1cc8c5){return _0x1cc8c5['removeChatWebsites'](_0x165001['query'][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x314394,null))[_0x7b7e('0x19')](handleError(_0x314394,null));};exports['getWhatsappAccounts']=function(_0x1f794b,_0x2ed69b){var _0x2bef99={};var _0xff5047={};var _0xc3117c;var _0x3d4943;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x1f794b[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x2ed69b,null))['then'](function(_0x2f2c8c){if(_0x2f2c8c){_0xc3117c=_0x2f2c8c;_0xff5047['model']=_[_0x7b7e('0x4d')](db[_0x7b7e('0x155')][_0x7b7e('0x38')]);_0xff5047[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0x1f794b[_0x7b7e('0x3e')]);_0xff5047[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0xff5047['model'],_0xff5047[_0x7b7e('0x3e')]);_0x2bef99[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0xff5047[_0x7b7e('0x50')],qs['fields'](_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x2bef99[_0x7b7e('0x41')]=_0x2bef99[_0x7b7e('0x41')]['length']?_0x2bef99[_0x7b7e('0x41')]:_0xff5047['model'];_0x2bef99[_0x7b7e('0xc6')]=qs[_0x7b7e('0xc7')](_0x1f794b[_0x7b7e('0x3e')]['sort']);_0x2bef99[_0x7b7e('0x3d')]=qs['filters'](_['pick'](_0x1f794b[_0x7b7e('0x3e')],_0xff5047[_0x7b7e('0x4e')]));if(_0x1f794b['query'][_0x7b7e('0x2c')]){_0x2bef99['where']=_['merge'](_0x2bef99[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x2bef99[_0x7b7e('0x41')],function(_0x2fbfac){var _0xc4e55a={};_0xc4e55a[_0x2fbfac]={'$like':'%'+_0x1f794b['query'][_0x7b7e('0x2c')]+'%'};return _0xc4e55a;})});}_0x2bef99=_[_0x7b7e('0x52')]({},_0x2bef99,_0x1f794b[_0x7b7e('0x53')]);return _0xc3117c[_0x7b7e('0x156')](_0x2bef99);}})[_0x7b7e('0x23')](function(_0x2d6a8c){if(_0x2d6a8c){_0x3d4943=_0x2d6a8c[_0x7b7e('0x44')];if(!_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x2bef99[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x2bef99[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x1f794b[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0xc3117c['getWhatsappAccounts'](_0x2bef99);}})[_0x7b7e('0x23')](function(_0xb40ff1){if(_0xb40ff1){return _0xb40ff1?{'count':_0x3d4943,'rows':_0xb40ff1}:null;}})[_0x7b7e('0x23')](respondWithResult(_0x2ed69b,null))[_0x7b7e('0x19')](handleError(_0x2ed69b,null));};exports[_0x7b7e('0x157')]=function(_0x59cc92,_0x3c8d6d){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x59cc92[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x3c8d6d,null))['then'](function(_0x4f1a00){if(_0x4f1a00){return _0x4f1a00[_0x7b7e('0x157')](_0x59cc92[_0x7b7e('0x58')][_0x7b7e('0x5c')],_[_0x7b7e('0x5b')](_0x59cc92[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x3c8d6d,null))[_0x7b7e('0x19')](handleError(_0x3c8d6d,null));};exports[_0x7b7e('0x158')]=function(_0x4858ef,_0x5131fe){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x4858ef[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x5131fe,null))[_0x7b7e('0x23')](function(_0x3d8f2d){if(_0x3d8f2d){return _0x3d8f2d[_0x7b7e('0x158')](_0x4858ef[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x5131fe,null))[_0x7b7e('0x19')](handleError(_0x5131fe,null));};exports[_0x7b7e('0x159')]=function(_0x585b5d,_0x1d50c4){var _0x26821e={};var _0x405ff0={};var _0x50f6f6;var _0x23f8a5;return db[_0x7b7e('0x37')][_0x7b7e('0x8f')]({'where':{'id':_0x585b5d['params']['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x1d50c4,null))['then'](function(_0x1ca8f9){if(_0x1ca8f9){_0x50f6f6=_0x1ca8f9;_0x405ff0[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](db[_0x7b7e('0x15a')][_0x7b7e('0x38')]);_0x405ff0['query']=_[_0x7b7e('0x4d')](_0x585b5d[_0x7b7e('0x3e')]);_0x405ff0[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x405ff0['model'],_0x405ff0[_0x7b7e('0x3e')]);_0x26821e[_0x7b7e('0x41')]=_['intersection'](_0x405ff0[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x26821e[_0x7b7e('0x41')]=_0x26821e['attributes'][_0x7b7e('0x44')]?_0x26821e[_0x7b7e('0x41')]:_0x405ff0['model'];_0x26821e[_0x7b7e('0xc6')]=qs['sort'](_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x26821e[_0x7b7e('0x3d')]=qs[_0x7b7e('0x4e')](_['pick'](_0x585b5d[_0x7b7e('0x3e')],_0x405ff0[_0x7b7e('0x4e')]));if(_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x26821e['where']=_[_0x7b7e('0x52')](_0x26821e[_0x7b7e('0x3d')],{'$or':_[_0x7b7e('0x85')](_0x26821e[_0x7b7e('0x41')],function(_0x229169){var _0x540daf={};_0x540daf[_0x229169]={'$like':'%'+_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x540daf;})});}_0x26821e=_['merge']({},_0x26821e,_0x585b5d['options']);return _0x50f6f6[_0x7b7e('0x159')](_0x26821e);}})[_0x7b7e('0x23')](function(_0x2876cd){if(_0x2876cd){_0x23f8a5=_0x2876cd['length'];if(!_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x26821e[_0x7b7e('0x21')]=qs['limit'](_0x585b5d[_0x7b7e('0x3e')]['limit']);_0x26821e[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x585b5d[_0x7b7e('0x3e')][_0x7b7e('0x1e')]);}return _0x50f6f6[_0x7b7e('0x159')](_0x26821e);}})[_0x7b7e('0x23')](function(_0x3a8ba9){if(_0x3a8ba9){return _0x3a8ba9?{'count':_0x23f8a5,'rows':_0x3a8ba9}:null;}})['then'](respondWithResult(_0x1d50c4,null))[_0x7b7e('0x19')](handleError(_0x1d50c4,null));};exports[_0x7b7e('0x15b')]=function(_0x553483,_0x3895c2){return db[_0x7b7e('0x37')][_0x7b7e('0x30')]({'where':{'id':_0x553483[_0x7b7e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x3895c2,null))[_0x7b7e('0x23')](function(_0x451110){if(_0x451110){return _0x451110[_0x7b7e('0x15b')](_0x553483['body'][_0x7b7e('0x5c')],_['omit'](_0x553483[_0x7b7e('0x58')],[_0x7b7e('0x5c'),'id'])||{});}})[_0x7b7e('0x23')](respondWithResult(_0x3895c2,null))['catch'](handleError(_0x3895c2,null));};exports[_0x7b7e('0x15c')]=function(_0x2c8447,_0x36d9a7){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x2c8447['params']['id']}})['then'](handleEntityNotFound(_0x36d9a7,null))[_0x7b7e('0x23')](function(_0x498ec8){if(_0x498ec8){return _0x498ec8['removeSquareProjects'](_0x2c8447[_0x7b7e('0x3e')][_0x7b7e('0x5c')]);}})[_0x7b7e('0x23')](respondWithStatusCode(_0x36d9a7,null))[_0x7b7e('0x19')](handleError(_0x36d9a7,null));};exports[_0x7b7e('0x15d')]=function(_0xc2f516,_0x37a14a){var _0x12da41={},_0x161e6f={},_0x212d82={'count':0x0,'rows':[]};var _0x5b4533=db['CmHopper'][_0x7b7e('0x38')];_0x161e6f[_0x7b7e('0x50')]=_[_0x7b7e('0x4d')](_0x5b4533);_0x161e6f[_0x7b7e('0x3e')]=_[_0x7b7e('0x4d')](_0xc2f516[_0x7b7e('0x3e')]);_0x161e6f[_0x7b7e('0x4e')]=_[_0x7b7e('0x4f')](_0x161e6f['model'],_0x161e6f['query']);_0x161e6f[_0x7b7e('0x4e')]=_['concat'](_0x161e6f['filters'],[_0x7b7e('0x15e'),_0x7b7e('0x15f'),_0x7b7e('0x160'),_0x7b7e('0x161'),_0x7b7e('0x162'),_0x7b7e('0x163'),'$ne',_0x7b7e('0x164'),_0x7b7e('0x165'),_0x7b7e('0x166'),_0x7b7e('0x167'),_0x7b7e('0x168'),'$notIn','$like',_0x7b7e('0x169'),_0x7b7e('0x16a'),'$notILike',_0x7b7e('0x16b'),_0x7b7e('0x16c'),'$contains',_0x7b7e('0x16d'),_0x7b7e('0x16e')]);_0x12da41[_0x7b7e('0x41')]=_[_0x7b7e('0x4f')](_0x161e6f[_0x7b7e('0x50')],qs[_0x7b7e('0x51')](_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x51')]));_0x12da41[_0x7b7e('0x41')]=_0x12da41[_0x7b7e('0x41')][_0x7b7e('0x44')]?_0x12da41[_0x7b7e('0x41')]:_0x161e6f[_0x7b7e('0x50')];if(!_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0xc9')]('nolimit')){_0x12da41[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x21')]);_0x12da41[_0x7b7e('0x1e')]=qs['offset'](_0xc2f516['query'][_0x7b7e('0x1e')]);}_0x12da41[_0x7b7e('0xc6')]=qs['sort'](_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0xc7')]);_0x12da41['where']=qs[_0x7b7e('0x4e')](_[_0x7b7e('0xc8')](_0xc2f516['query'],_0x161e6f[_0x7b7e('0x4e')]));if(_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x2c')]){_0x12da41[_0x7b7e('0x3d')]=_[_0x7b7e('0x52')](_0x12da41['where'],{'$or':_[_0x7b7e('0x85')](_0x12da41[_0x7b7e('0x41')],function(_0x4fdd19){var _0x906184={};_0x906184[_0x4fdd19]={'$like':'%'+_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'};return _0x906184;})});}_0x12da41[_0x7b7e('0x3d')]={'$and':[_0x12da41[_0x7b7e('0x3d')],{'$or':[{'UserId':_0xc2f516['params']['id']},{'OwnerId':_0xc2f516[_0x7b7e('0x4b')]['id']}]}]};_0x12da41=_[_0x7b7e('0x52')]({},_0x12da41,_0xc2f516['options']);var _0xcd1a75={'where':_0x12da41[_0x7b7e('0x3d')]};return db[_0x7b7e('0x16f')]['count'](_0xcd1a75)[_0x7b7e('0x23')](function(_0x47b83f){_0x212d82[_0x7b7e('0x20')]=_0x47b83f;if(_0xc2f516[_0x7b7e('0x3e')][_0x7b7e('0x3f')]){_0x12da41[_0x7b7e('0x40')]=[{'attributes':['id',_0x7b7e('0x170'),_0x7b7e('0x171'),_0x7b7e('0xe4')],'model':db[_0x7b7e('0xc5')],'as':'Contact'},{'attributes':['id',_0x7b7e('0x31'),_0x7b7e('0x172')],'model':db['VoiceQueue'],'as':_0x7b7e('0xcf')}];}return db[_0x7b7e('0x16f')]['findAll'](_0x12da41);})[_0x7b7e('0x23')](function(_0x33963b){_0x212d82[_0x7b7e('0x43')]=_0x33963b;return _0x212d82;})[_0x7b7e('0x23')](respondWithFilteredResult(_0x37a14a,_0x12da41))[_0x7b7e('0x19')](handleError(_0x37a14a,null));};exports[_0x7b7e('0x173')]=function(_0x3b817b,_0x3ea1c9){if(!_[_0x7b7e('0x64')](_0x3b817b[_0x7b7e('0x77')]['id'])&&(_0x3b817b[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x26')||_0x3b817b[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x77'))){return db['User'][_0x7b7e('0x8f')]({'where':{'id':_0x3b817b['params']['id']},'raw':!![]})['then'](function(_0x102c4d){return authService[_0x7b7e('0x174')](_0x102c4d);})[_0x7b7e('0x23')](function(_0x23df67){if(_0x23df67){return _0x3ea1c9[_0x7b7e('0x1b')](0xc8)[_0x7b7e('0x1d')]({'api_key':_0x23df67[_0x7b7e('0x175')]});}else{return _0x3ea1c9['status'](0xcc)['json']({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0x7b7e('0x19')](handleError(_0x3ea1c9,0x193));}else{return _0x3ea1c9[_0x7b7e('0x1b')](0x191)[_0x7b7e('0x1d')]({'message':_0x7b7e('0x176')});}};exports[_0x7b7e('0x177')]=function(_0x19cdf0,_0x3fc41e){if(!_[_0x7b7e('0x64')](_0x19cdf0[_0x7b7e('0x77')]['id'])&&(_0x19cdf0[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x26')||_0x19cdf0[_0x7b7e('0x77')][_0x7b7e('0x25')]=='user')){return db[_0x7b7e('0x37')]['find']({'where':{'id':_0x19cdf0[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](function(_0x1bbf12){return authService[_0x7b7e('0x178')](_0x1bbf12);})['then'](function(_0x5ae9c7){return db[_0x7b7e('0x37')][_0x7b7e('0x22')]({'apiKeyIat':_0x5ae9c7[_0x7b7e('0x179')],'apiKeyNonce':_0x5ae9c7[_0x7b7e('0x17a')]},{'where':{'id':_0x19cdf0[_0x7b7e('0x4b')]['id']}})['then'](function(){return _0x3fc41e['status'](0xc8)[_0x7b7e('0x1d')]({'api_key':_0x5ae9c7[_0x7b7e('0x175')]});});})[_0x7b7e('0x19')](handleError(_0x3fc41e,0x193));}else{return _0x3fc41e[_0x7b7e('0x1b')](0x191)[_0x7b7e('0x1d')]({'message':_0x7b7e('0x176')});}};exports[_0x7b7e('0x17b')]=function(_0x563a4c,_0x2fe793){if(!_[_0x7b7e('0x64')](_0x563a4c['user']['id'])&&(_0x563a4c[_0x7b7e('0x77')][_0x7b7e('0x25')]==_0x7b7e('0x26')||_0x563a4c[_0x7b7e('0x77')][_0x7b7e('0x25')]=='user')){return db['User'][_0x7b7e('0x30')]({'where':{'id':_0x563a4c[_0x7b7e('0x4b')]['id']}})[_0x7b7e('0x23')](handleEntityNotFound(_0x2fe793,null))[_0x7b7e('0x23')](function(_0x39422a){if(_0x39422a&&_0x39422a[_0x7b7e('0x17c')]&&_0x39422a[_0x7b7e('0x17d')])return _0x39422a;else throw{'message':_0x7b7e('0x17e')};})[_0x7b7e('0x23')](function(_0x2b33d3){return db[_0x7b7e('0x37')][_0x7b7e('0x22')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x563a4c[_0x7b7e('0x4b')]['id']}});})[_0x7b7e('0x23')](respondWithStatusCode(_0x2fe793,0xc8))[_0x7b7e('0x19')](handleError(_0x2fe793,0x193));}else{return _0x2fe793[_0x7b7e('0x1b')](0x191)[_0x7b7e('0x1d')]({'message':_0x7b7e('0x176')});}};exports[_0x7b7e('0x17f')]=function(_0x489d33,_0x348461){var _0x47e3ef=_0x489d33[_0x7b7e('0x77')][_0x7b7e('0x24')]({'plain':!![]});if(!_0x47e3ef){return _0x348461['status'](0x191)['send'](_0x7b7e('0x180'));}else{return _0x348461[_0x7b7e('0x1b')](0xc8)[_0x7b7e('0x1d')](_0x47e3ef);}};exports[_0x7b7e('0x181')]=function(_0x5d8cd2,_0x2a7ceb){var _0x15fb6b={'offset':0x0},_0x4a18d2={'count':0x0,'rows':[]};Promise[_0x7b7e('0xfd')]()[_0x7b7e('0x23')](function(){if(!_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')]&&!_0x5d8cd2[_0x7b7e('0x3e')]['teams']&&!_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x182')])return[];return Promise[_0x7b7e('0xfd')]()[_0x7b7e('0x23')](function(){var _0x4f74b7=[];if(!_['isEmpty'](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x183')])){_0x4f74b7['push'](db[_0x7b7e('0x10f')][_0x7b7e('0x83')]({'attributes':['id',_0x7b7e('0x31')],'where':{'id':_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x183')]}}));}if(!_[_0x7b7e('0x84')](_0x5d8cd2[_0x7b7e('0x3e')]['queues'])){_0x4f74b7[_0x7b7e('0x45')](db['VoiceQueue'][_0x7b7e('0x83')]({'attributes':['id','name'],'type':_0x7b7e('0x184'),'where':{'id':_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x182')]}}));}return Promise['all'](_0x4f74b7);})['then'](function(_0x58d9cc){var _0x2c2fb6=_[_0x7b7e('0x11e')](_0x58d9cc)[_0x7b7e('0x85')](function(_0x4f6440){return _0x4f6440['getAgents']({'attributes':['id',_0x7b7e('0x31'),'internal',_0x7b7e('0xa5')],'raw':!![]});});return Promise[_0x7b7e('0x49')](_0x2c2fb6);})[_0x7b7e('0x23')](function(_0xac5844){var _0x3540a2=_[_0x7b7e('0x11e')](_0xac5844);if(!_0x5d8cd2[_0x7b7e('0x3e')]['filter'])return _0x3540a2;if(_[_0x7b7e('0x84')](_0x3540a2)){return db[_0x7b7e('0x37')][_0x7b7e('0x83')]({'attributes':['id','name','internal',_0x7b7e('0xa5')],'where':{'role':_0x7b7e('0x29'),'$or':[db[_0x7b7e('0x62')][_0x7b7e('0x3d')](db[_0x7b7e('0x62')]['fn'](_0x7b7e('0x185'),db['sequelize'][_0x7b7e('0x186')](_0x7b7e('0x31'))),{'$like':'%'+_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')][_0x7b7e('0xa0')]()+'%'}),{'internal':{'$like':'%'+_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')]+'%'}}]},'raw':!![]});}else{return _(_0x3540a2)[_0x7b7e('0x11e')]()[_0x7b7e('0x2c')](function(_0xeaf867){return _0xeaf867[_0x7b7e('0x31')][_0x7b7e('0xa0')]()[_0x7b7e('0x2f')](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')][_0x7b7e('0xa0')]())||_0xeaf867['internal'][_0x7b7e('0x187')]()[_0x7b7e('0x2f')](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x2c')]);})[_0x7b7e('0x2e')]();}})[_0x7b7e('0x23')](function(_0x58b256){var _0x1bd9aa=_0x7b7e('0x31');var _0x5eb12b=_0x7b7e('0x188');if(_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0xc7')]){var _0x5eb12b=_0x5d8cd2['query'][_0x7b7e('0xc7')][0x0]==='-'?'desc':'asc';var _0x1bd9aa=_0x5eb12b===_0x7b7e('0x188')?_0x5d8cd2[_0x7b7e('0x3e')]['sort']:_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0xc7')]['substring'](0x1);}return _(_0x58b256)[_0x7b7e('0x189')]('id')['orderBy']([function(_0x912fe7){return _0x1bd9aa===_0x7b7e('0x31')?_0x912fe7[_0x1bd9aa]['toLowerCase']():_0x912fe7[_0x1bd9aa];}],[_0x5eb12b])[_0x7b7e('0x85')](function(_0x3db040){return _[_0x7b7e('0xc8')](_0x3db040,['id',_0x7b7e('0x31'),_0x7b7e('0x5d'),_0x7b7e('0xa5')]);})[_0x7b7e('0x2e')]();})[_0x7b7e('0x23')](function(_0x4d45bf){return client[_0x7b7e('0x10')](_0x7b7e('0x28'),_0x5d8cd2)[_0x7b7e('0x23')](function(_0x471a33){if(_0x471a33[_0x7b7e('0x14')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x574f9e=_0x471a33[_0x7b7e('0x18')];var _0x2435e5=jayson[_0x7b7e('0x18a')][_0x7b7e('0xf')]({'port':0x232c});return _0x2435e5[_0x7b7e('0x10')](_0x7b7e('0x28'),_0x5d8cd2)[_0x7b7e('0x23')](function(_0x57ffe0){if(_0x57ffe0[_0x7b7e('0x14')])throw new Error(_0x7b7e('0x18b'));var _0x37d2c0=_0x57ffe0['result'];return _[_0x7b7e('0x52')]({},_0x37d2c0,_0x574f9e);});})[_0x7b7e('0x23')](function(_0x272f69){return _['map'](_0x4d45bf,function(_0x376207){var _0x21c608=_[_0x7b7e('0x30')](_0x272f69[_0x7b7e('0x43')],['id',_0x376207['id']]);if(!_0x21c608||!_0x376207['online']){_0x376207['status']=_0x7b7e('0x18c');}else if(_0x21c608[_0x7b7e('0x99')]){_0x376207[_0x7b7e('0x1b')]=_0x7b7e('0xff');}else{_0x376207[_0x7b7e('0x1b')]=_[_0x7b7e('0x2f')]([_0x7b7e('0x18d'),_0x7b7e('0x18e'),_0x7b7e('0x18f'),_0x7b7e('0x190'),null,undefined],_0x21c608[_0x7b7e('0x191')])?_0x7b7e('0xa5'):_0x7b7e('0x192');}return _0x376207;});});});})['then'](function(_0x3ad462){if(!_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0xc9')](_0x7b7e('0xcd'))){_0x15fb6b[_0x7b7e('0x21')]=qs[_0x7b7e('0x21')](_0x5d8cd2[_0x7b7e('0x3e')][_0x7b7e('0x21')]||0xa);_0x15fb6b[_0x7b7e('0x1e')]=qs[_0x7b7e('0x1e')](_0x5d8cd2[_0x7b7e('0x3e')]['offset']);}_0x4a18d2['count']=_0x3ad462['length'];_0x4a18d2[_0x7b7e('0x43')]=_0x15fb6b[_0x7b7e('0x21')]?_0x3ad462[_0x7b7e('0x193')](_0x15fb6b[_0x7b7e('0x1e')],_0x15fb6b[_0x7b7e('0x1e')]+_0x15fb6b[_0x7b7e('0x21')]):_0x3ad462;return _0x4a18d2;})['then'](respondWithFilteredResult(_0x2a7ceb,_0x15fb6b))[_0x7b7e('0x19')](handleError(_0x2a7ceb,null));};function get_open_tabs(_0x2d7551,_0x4c8dc8){var _0x77bc2f=_0x2d7551[_0x7b7e('0x194')](0x0)[_0x7b7e('0x195')]()+_0x2d7551[_0x7b7e('0x193')](0x1);var _0x30086d={'type':db[_0x7b7e('0x89')]['QueryTypes'][_0x7b7e('0x196')],'raw':!![]};return new BPromise(function(_0x7eddd8,_0x31436e){var _0x200bc7=squel[_0x7b7e('0x197')]()['field']('ui.'+_0x77bc2f+_0x7b7e('0x198'),'id')[_0x7b7e('0x199')](_0x7b7e('0x19a'))['from'](_0x7b7e('0x19b')+_0x2d7551+_0x7b7e('0x19c'),'ui')['where'](_0x7b7e('0x19d'),_0x4c8dc8['id']);return db[_0x7b7e('0x62')][_0x7b7e('0x3e')](_0x200bc7['toString'](),_0x30086d)[_0x7b7e('0x23')](function(_0x8f48ec){_0x4c8dc8[_0x77bc2f+_0x7b7e('0x19e')]=_0x8f48ec;_0x7eddd8(_0x8f48ec);})[_0x7b7e('0x19')](function(_0x1a3243){_0x31436e(_0x1a3243);});});};
\ No newline at end of file
index 181da9c..e93be3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48e9=['hook','events','../../mysqldb','User','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x48e9,0xa1));var _0x948e=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x48e9[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require(_0x948e('0x0'));var User=require(_0x948e('0x1'))['db'][_0x948e('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x948e('0x3')](0x0);var events={'afterCreate':_0x948e('0x4'),'afterUpdate':_0x948e('0x5'),'afterDestroy':_0x948e('0x6')};function emitEvent(_0x3f4c50){return function(_0x59a66d,_0x361150,_0x19496e){UserEvents[_0x948e('0x7')](_0x3f4c50+':'+_0x59a66d['id'],_0x59a66d);UserEvents[_0x948e('0x7')](_0x3f4c50,_0x59a66d);_0x19496e(null);};}for(var e in events){if(events[_0x948e('0x8')](e)){var event=events[e];User[_0x948e('0x9')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
+var _0x51a6=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','User','setMaxListeners','save','update','remove'];(function(_0x5b72ff,_0x58164d){var _0x58ad81=function(_0x5cad75){while(--_0x5cad75){_0x5b72ff['push'](_0x5b72ff['shift']());}};_0x58ad81(++_0x58164d);}(_0x51a6,0x9e));var _0x651a=function(_0xbc2d9e,_0x40ef4f){_0xbc2d9e=_0xbc2d9e-0x0;var _0x2e315c=_0x51a6[_0xbc2d9e];return _0x2e315c;};'use strict';var EventEmitter=require(_0x651a('0x0'));var User=require(_0x651a('0x1'))['db'][_0x651a('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x651a('0x3')](0x0);var events={'afterCreate':_0x651a('0x4'),'afterUpdate':_0x651a('0x5'),'afterDestroy':_0x651a('0x6')};function emitEvent(_0x20761f){return function(_0x3e318f,_0xd799de,_0x534396){UserEvents[_0x651a('0x7')](_0x20761f+':'+_0x3e318f['id'],_0x3e318f);UserEvents[_0x651a('0x7')](_0x20761f,_0x3e318f);_0x534396(null);};}for(var e in events){if(events[_0x651a('0x8')](e)){var event=events[e];User[_0x651a('0x9')](e,emitEvent(event));}}module[_0x651a('0xa')]=UserEvents;
\ No newline at end of file
index ae48fd9..9544fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0030=['updatePassword','concat','VoiceExtension','bulkCreate','chanspy','changed','destroy','password','encryptPassword','function','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','indexOf','provider','Invalid\x20password','md5secret',':asterisk:','crypto','util','md5','lodash','./user.attributes','google','length','context','from-sip','system','format','prefix','merge','Set','CDR(type)=%s','record','push','${UNIQUEID}.%s,a','recordingFormat','auth','ChanSpy','SIP/%s,%s','join','StopMixMonitor','WAV','gsm','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','VoiceChanSpy','then','internal','name','catch','models','User','users','utf8','userProfileId','find','privacyEnabled','resolve','UserProfile','updateMd5Password'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x0030,0x178));var _0x0003=function(_0xe4dec9,_0x20611c){_0xe4dec9=_0xe4dec9-0x0;var _0x4dcb3a=_0x0030[_0xe4dec9];return _0x4dcb3a;};'use strict';var BPromise=require('bluebird');var crypto=require(_0x0003('0x0'));var util=require(_0x0003('0x1'));var md5=require(_0x0003('0x2'));var _=require(_0x0003('0x3'));var attributes=require(_0x0003('0x4'));var authTypes=[_0x0003('0x5')];var validatePresenceOf=function(_0x4db647){return _0x4db647&&_0x4db647[_0x0003('0x6')];};var getChanSpyApplications=function(_0x2d11b5,_0x54e8d8,_0x189b16){var _0x39818f={'context':_0x2d11b5[_0x0003('0x7')]||_0x0003('0x8'),'type':_0x0003('0x9'),'isApp':![],'UserId':_0x2d11b5['id']};var _0x3874c2=[];for(var _0x274901=0x0,_0xc43aec=0x1;_0x274901<_0x189b16['length'];_0x274901++,_0xc43aec=0x1){var _0x254f28={'exten':util[_0x0003('0xa')]('%s%s',_0x189b16[_0x274901][_0x0003('0xb')],_0x54e8d8),'ChanSpyId':_0x189b16[_0x274901]['id']};_0x3874c2['push'](_[_0x0003('0xc')]({'app':_0x0003('0xd'),'appdata':util[_0x0003('0xa')](_0x0003('0xe'),'chanspy'),'priority':_0xc43aec++},_0x39818f,_0x254f28));if(_0x189b16[_0x274901][_0x0003('0xf')]){_0x3874c2[_0x0003('0x10')](_[_0x0003('0xc')]({'app':'MixMonitor','appdata':util['format'](_0x0003('0x11'),_0x189b16[_0x274901][_0x0003('0x12')]),'priority':_0xc43aec++},_0x39818f,_0x254f28));}if(_0x189b16[_0x274901][_0x0003('0x13')]){_0x3874c2[_0x0003('0x10')](_['merge']({'app':'Authenticate','appdata':_0x189b16[_0x274901]['password'],'priority':_0xc43aec++},_0x39818f,_0x254f28));}_0x3874c2['push'](_[_0x0003('0xc')]({'app':_0x0003('0x14'),'appdata':util[_0x0003('0xa')](_0x0003('0x15'),_0x2d11b5['name'],_0x189b16[_0x274901]['options']?_0x189b16[_0x274901]['options'][_0x0003('0x16')](''):''),'priority':_0xc43aec++},_0x39818f,_0x254f28));if(_0x189b16[_0x274901][_0x0003('0xf')]){_0x3874c2[_0x0003('0x10')](_[_0x0003('0xc')]({'app':_0x0003('0x17'),'priority':_0xc43aec++},_0x39818f,_0x254f28));}}return _0x3874c2;};var getUserApplications=function(_0x31a034,_0x3f1eab){var _0x340754=['wav',_0x0003('0x18'),_0x0003('0x19')];var _0x7e1588={'context':_0x31a034[_0x0003('0x7')]||_0x0003('0x8'),'exten':_0x3f1eab,'type':'system','isApp':![],'UserId':_0x31a034['id']};var _0x18dac9=[{'app':_0x0003('0xd'),'appdata':_0x0003('0x1a')}];if(_0x31a034[_0x0003('0x1b')]&&_[_0x0003('0x1c')](_0x340754,_0x31a034['extensionMonitor'])){_0x18dac9[_0x0003('0x10')]({'app':_0x0003('0xd'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x18dac9[_0x0003('0x10')]({'app':_0x0003('0xd'),'appdata':util['format'](_0x0003('0x1d'),_0x31a034['extensionMonitor'])});_0x18dac9[_0x0003('0x10')]({'app':_0x0003('0x1e'),'appdata':util[_0x0003('0xa')](_0x0003('0x1f'),_0x31a034['name'])});}else{_0x18dac9[_0x0003('0x10')]({'app':_0x0003('0x1e'),'appdata':util[_0x0003('0xa')](_0x0003('0x20'),_0x31a034['name'])});}_0x18dac9[_0x0003('0x10')]({'app':_0x0003('0x21')});for(var _0x1634bb=0x0;_0x1634bb<_0x18dac9[_0x0003('0x6')];_0x1634bb++){_0x18dac9[_0x1634bb][_0x0003('0x22')]=_0x1634bb+0x1;_0x18dac9[_0x1634bb]=_['defaults'](_0x18dac9[_0x1634bb],_0x7e1588);}return _0x18dac9;};var getChanSpyPromise=function(_0x398206,_0x3b664d){return new BPromise(function(_0x5be90b,_0x1d9d0a){return _0x398206[_0x0003('0x23')]['findAll']()[_0x0003('0x24')](function(_0x4c78b9){if(_0x4c78b9){var _0x762508=getChanSpyApplications(_0x3b664d,_0x3b664d['internal'],_0x4c78b9);if(_0x3b664d[_0x0003('0x25')]!=_0x3b664d[_0x0003('0x26')]){_0x762508=_0x762508['concat'](getChanSpyApplications(_0x3b664d,_0x3b664d[_0x0003('0x26')],_0x4c78b9));}return _0x5be90b(_0x762508);}return _0x5be90b([]);})[_0x0003('0x27')](function(_0x24d8d8){_0x1d9d0a(_0x24d8d8);});});};module['exports']=function(_0xa01177,_0x5536c2){var _0x1f3879=_0xa01177[_0x0003('0x28')];return _0xa01177['define'](_0x0003('0x29'),attributes,{'tableName':_0x0003('0x2a'),'charset':_0x0003('0x2b'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x175818,_0xfe4b76,_0x3e8815){var _0x2106c3=typeof _0x175818[_0x0003('0x2c')]==='undefined'?BPromise['resolve'](null):_0x1f3879['UserProfile'][_0x0003('0x2d')]({'where':{'id':_0x175818[_0x0003('0x2c')]}});_0x2106c3[_0x0003('0x24')](function(_0x1a9ea1){if(_0x1a9ea1){_0x175818['privacyEnabled']=_0x1a9ea1[_0x0003('0x2e')];}})[_0x0003('0x24')](function(){_0x175818['updateMd5Password']();_0x175818['updatePassword'](_0x3e8815);})['catch'](function(_0x154176){_0x3e8815(_0x154176);});},'beforeUpdate':function(_0x39f4e0,_0x40a8d8,_0x1a2f0d){Promise[_0x0003('0x2f')]()[_0x0003('0x24')](function(){if(_0x39f4e0['changed'](_0x0003('0x2c'))===![])return;return _0x1f3879[_0x0003('0x30')][_0x0003('0x2d')]({'where':{'id':_0x39f4e0[_0x0003('0x2c')]}})[_0x0003('0x24')](function(_0x2e2dd0){if(_0x2e2dd0)_0x39f4e0[_0x0003('0x2e')]=_0x2e2dd0['privacyEnabled'];return;});})[_0x0003('0x24')](function(){if(_0x39f4e0['changed']('password')){_0x39f4e0[_0x0003('0x31')]();return _0x39f4e0[_0x0003('0x32')](_0x1a2f0d);}_0x1a2f0d();})[_0x0003('0x27')](function(_0x29c1ff){_0x1a2f0d(_0x29c1ff);});},'afterCreate':function(_0x4125c3,_0x3863fa,_0x8a6892){var _0x5da1c0=getUserApplications(_0x4125c3,_0x4125c3['internal']);if(_0x4125c3[_0x0003('0x25')]!=_0x4125c3[_0x0003('0x26')]){_0x5da1c0=_0x5da1c0[_0x0003('0x33')](getUserApplications(_0x4125c3,_0x4125c3[_0x0003('0x26')]));}return _0x1f3879['VoiceExtension']['bulkCreate'](_0x5da1c0)[_0x0003('0x24')](function(){if(_0x4125c3['chanspy']){return getChanSpyPromise(_0x1f3879,_0x4125c3);}})[_0x0003('0x24')](function(_0x349a49){if(_0x349a49&&_0x349a49[_0x0003('0x6')]){return _0x1f3879[_0x0003('0x34')][_0x0003('0x35')](_0x349a49);}})[_0x0003('0x24')](function(){_0x8a6892();})[_0x0003('0x27')](function(_0x6ed568){_0x8a6892(_0x6ed568);});},'afterUpdate':function(_0x25a187,_0x5f467b,_0x380a35){return BPromise[_0x0003('0x2f')]()['then'](function(){if(_0x25a187['changed'](_0x0003('0x36'))||_0x25a187[_0x0003('0x37')](_0x0003('0x7'))){return _0x1f3879[_0x0003('0x34')][_0x0003('0x38')]({'where':{'UserId':_0x25a187['id'],'type':_0x0003('0x9'),'ChanSpyId':{'$ne':null}}})[_0x0003('0x24')](function(){if(_0x25a187[_0x0003('0x36')]){return getChanSpyPromise(_0x1f3879,_0x25a187)[_0x0003('0x24')](function(_0x4193c6){if(_0x4193c6&&_0x4193c6[_0x0003('0x6')]){return _0x1f3879[_0x0003('0x34')][_0x0003('0x35')](_0x4193c6);}});}});}})[_0x0003('0x24')](function(){if(_0x25a187[_0x0003('0x37')]('extensionMonitor')||_0x25a187[_0x0003('0x37')]('context')){return _0x1f3879[_0x0003('0x34')][_0x0003('0x38')]({'where':{'UserId':_0x25a187['id'],'type':_0x0003('0x9'),'ChanSpyId':null}})[_0x0003('0x24')](function(){var _0x4e1e27=getUserApplications(_0x25a187,_0x25a187[_0x0003('0x25')]);if(_0x25a187[_0x0003('0x25')]!=_0x25a187[_0x0003('0x26')]){_0x4e1e27=_0x4e1e27['concat'](getUserApplications(_0x25a187,_0x25a187['name']));}return _0x1f3879[_0x0003('0x34')][_0x0003('0x35')](_0x4e1e27);});}})[_0x0003('0x24')](function(){_0x380a35();})[_0x0003('0x27')](function(_0x13462d){_0x380a35(_0x13462d);});},'afterDestroy':function(_0x10484d,_0x11b44c){return _0x1f3879[_0x0003('0x34')]['destroy']({'where':{'UserId':_0x10484d['id'],'type':_0x0003('0x9')}});}},'instanceMethods':{'authenticate':function(_0x522db6,_0x1c29d7){if(!_0x1c29d7){return this[_0x0003('0x39')]===this[_0x0003('0x3a')](_0x522db6);}var _0x43cdb3=this;this[_0x0003('0x3a')](_0x522db6,function(_0x163203,_0xd8368){if(_0x163203){_0x1c29d7(_0x163203);}if(_0x43cdb3[_0x0003('0x39')]===_0xd8368){_0x1c29d7(null,!![]);}else{_0x1c29d7(null,![]);}});},'makeSalt':function(_0x55c4e2,_0x585106){var _0x33fdf9=0x10;if(typeof arguments[0x0]==='function'){_0x585106=arguments[0x0];_0x55c4e2=_0x33fdf9;}else if(typeof arguments[0x1]===_0x0003('0x3b')){_0x585106=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x55c4e2){_0x55c4e2=_0x33fdf9;}return crypto[_0x0003('0x3c')](_0x55c4e2,function(_0x594bf4,_0x37d27a){if(_0x594bf4){_0x585106(_0x594bf4);}return _0x585106(null,_0x37d27a[_0x0003('0x3d')](_0x0003('0x3e')));});},'encryptPassword':function(_0x4ffae1,_0x3ffb18){if(!_0x4ffae1||!this['salt']){return _0x3ffb18?_0x3ffb18(null):null;}var _0xe825fa=0x2710;var _0x3803c5=0x40;var _0x43f04d=new Buffer(this[_0x0003('0x3f')],_0x0003('0x3e'));if(!_0x3ffb18){return crypto[_0x0003('0x40')](_0x4ffae1,_0x43f04d,_0xe825fa,_0x3803c5,_0x0003('0x41'))[_0x0003('0x3d')](_0x0003('0x3e'));}return crypto['pbkdf2'](_0x4ffae1,_0x43f04d,_0xe825fa,_0x3803c5,'sha1',function(_0x4e6c29,_0x213e58){if(_0x4e6c29){_0x3ffb18(_0x4e6c29);}return _0x3ffb18(null,_0x213e58[_0x0003('0x3d')]('base64'));});},'updatePassword':function(_0x33937a){if(!this[_0x0003('0x39')]){return _0x33937a(null);}if(!validatePresenceOf(this[_0x0003('0x39')])&&authTypes[_0x0003('0x42')](this[_0x0003('0x43')])===-0x1){_0x33937a(new Error(_0x0003('0x44')));}var _0x27697e=this;this['makeSalt'](function(_0x2cdef4,_0x27e9a1){if(_0x2cdef4){return _0x33937a(_0x2cdef4);}_0x27697e[_0x0003('0x3f')]=_0x27e9a1;_0x27697e[_0x0003('0x3a')](_0x27697e[_0x0003('0x39')],function(_0x588714,_0x2e1c26){if(_0x588714){_0x33937a(_0x588714);}_0x27697e[_0x0003('0x39')]=_0x2e1c26;_0x33937a(null);});});},'updateMd5Password':function(){this[_0x0003('0x45')]=md5(this['name']+_0x0003('0x46')+this[_0x0003('0x39')]);return this[_0x0003('0x45')];}}});};
\ No newline at end of file
+var _0x231a=['SIP/%s,%s','name','options','join','wav','WAV','gsm','extensionMonitor','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxX','priority','defaults','VoiceChanSpy','findAll','then','internal','concat','catch','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','find','privacyEnabled','updateMd5Password','updatePassword','changed','UserProfile','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','makeSalt','md5secret',':asterisk:','crypto','md5','lodash','./user.attributes','google','length','context','from-sip','system','%s%s','prefix','push','merge','Set','format','CDR(type)=%s','chanspy','record','auth','Authenticate','password'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x231a,0xc6));var _0xa231=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x231a[_0x321bb2];return _0x9c12ed;};'use strict';var BPromise=require('bluebird');var crypto=require(_0xa231('0x0'));var util=require('util');var md5=require(_0xa231('0x1'));var _=require(_0xa231('0x2'));var attributes=require(_0xa231('0x3'));var authTypes=[_0xa231('0x4')];var validatePresenceOf=function(_0x3e4866){return _0x3e4866&&_0x3e4866[_0xa231('0x5')];};var getChanSpyApplications=function(_0x4e66a7,_0x5a920b,_0x15b3fd){var _0x1fe3b7={'context':_0x4e66a7[_0xa231('0x6')]||_0xa231('0x7'),'type':_0xa231('0x8'),'isApp':![],'UserId':_0x4e66a7['id']};var _0x24eb7a=[];for(var _0x4ba7f2=0x0,_0x111040=0x1;_0x4ba7f2<_0x15b3fd['length'];_0x4ba7f2++,_0x111040=0x1){var _0xf5767b={'exten':util['format'](_0xa231('0x9'),_0x15b3fd[_0x4ba7f2][_0xa231('0xa')],_0x5a920b),'ChanSpyId':_0x15b3fd[_0x4ba7f2]['id']};_0x24eb7a[_0xa231('0xb')](_[_0xa231('0xc')]({'app':_0xa231('0xd'),'appdata':util[_0xa231('0xe')](_0xa231('0xf'),_0xa231('0x10')),'priority':_0x111040++},_0x1fe3b7,_0xf5767b));if(_0x15b3fd[_0x4ba7f2][_0xa231('0x11')]){_0x24eb7a[_0xa231('0xb')](_[_0xa231('0xc')]({'app':'MixMonitor','appdata':util[_0xa231('0xe')]('${UNIQUEID}.%s,a',_0x15b3fd[_0x4ba7f2]['recordingFormat']),'priority':_0x111040++},_0x1fe3b7,_0xf5767b));}if(_0x15b3fd[_0x4ba7f2][_0xa231('0x12')]){_0x24eb7a['push'](_['merge']({'app':_0xa231('0x13'),'appdata':_0x15b3fd[_0x4ba7f2][_0xa231('0x14')],'priority':_0x111040++},_0x1fe3b7,_0xf5767b));}_0x24eb7a[_0xa231('0xb')](_[_0xa231('0xc')]({'app':'ChanSpy','appdata':util[_0xa231('0xe')](_0xa231('0x15'),_0x4e66a7[_0xa231('0x16')],_0x15b3fd[_0x4ba7f2][_0xa231('0x17')]?_0x15b3fd[_0x4ba7f2][_0xa231('0x17')][_0xa231('0x18')](''):''),'priority':_0x111040++},_0x1fe3b7,_0xf5767b));if(_0x15b3fd[_0x4ba7f2][_0xa231('0x11')]){_0x24eb7a[_0xa231('0xb')](_['merge']({'app':'StopMixMonitor','priority':_0x111040++},_0x1fe3b7,_0xf5767b));}}return _0x24eb7a;};var getUserApplications=function(_0x3f9e1f,_0x26bb45){var _0x288196=[_0xa231('0x19'),_0xa231('0x1a'),_0xa231('0x1b')];var _0x395431={'context':_0x3f9e1f['context']||'from-sip','exten':_0x26bb45,'type':_0xa231('0x8'),'isApp':![],'UserId':_0x3f9e1f['id']};var _0x4d9128=[{'app':_0xa231('0xd'),'appdata':'CDR(type)=internal'}];if(_0x3f9e1f[_0xa231('0x1c')]&&_['includes'](_0x288196,_0x3f9e1f[_0xa231('0x1c')])){_0x4d9128[_0xa231('0xb')]({'app':_0xa231('0xd'),'appdata':_0xa231('0x1d')});_0x4d9128[_0xa231('0xb')]({'app':_0xa231('0xd'),'appdata':util['format'](_0xa231('0x1e'),_0x3f9e1f['extensionMonitor'])});_0x4d9128[_0xa231('0xb')]({'app':'Dial','appdata':util[_0xa231('0xe')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x3f9e1f['name'])});}else{_0x4d9128[_0xa231('0xb')]({'app':'Dial','appdata':util[_0xa231('0xe')](_0xa231('0x1f'),_0x3f9e1f['name'])});}_0x4d9128[_0xa231('0xb')]({'app':'Hangup'});for(var _0x5f05f4=0x0;_0x5f05f4<_0x4d9128[_0xa231('0x5')];_0x5f05f4++){_0x4d9128[_0x5f05f4][_0xa231('0x20')]=_0x5f05f4+0x1;_0x4d9128[_0x5f05f4]=_[_0xa231('0x21')](_0x4d9128[_0x5f05f4],_0x395431);}return _0x4d9128;};var getChanSpyPromise=function(_0x365886,_0x538c70){return new BPromise(function(_0x172030,_0x3658f6){return _0x365886[_0xa231('0x22')][_0xa231('0x23')]()[_0xa231('0x24')](function(_0x15e12a){if(_0x15e12a){var _0x32368c=getChanSpyApplications(_0x538c70,_0x538c70[_0xa231('0x25')],_0x15e12a);if(_0x538c70[_0xa231('0x25')]!=_0x538c70[_0xa231('0x16')]){_0x32368c=_0x32368c[_0xa231('0x26')](getChanSpyApplications(_0x538c70,_0x538c70[_0xa231('0x16')],_0x15e12a));}return _0x172030(_0x32368c);}return _0x172030([]);})[_0xa231('0x27')](function(_0x57c3ce){_0x3658f6(_0x57c3ce);});});};module[_0xa231('0x28')]=function(_0x5d65ec,_0x131b03){var _0x37912c=_0x5d65ec[_0xa231('0x29')];return _0x5d65ec[_0xa231('0x2a')](_0xa231('0x2b'),attributes,{'tableName':_0xa231('0x2c'),'charset':_0xa231('0x2d'),'collate':_0xa231('0x2e'),'hooks':{'beforeCreate':function(_0x391659,_0x2c1bd6,_0x4f88d8){var _0x2d33ed=typeof _0x391659[_0xa231('0x2f')]===_0xa231('0x30')?BPromise[_0xa231('0x31')](null):_0x37912c['UserProfile'][_0xa231('0x32')]({'where':{'id':_0x391659['userProfileId']}});_0x2d33ed['then'](function(_0xd944ab){if(_0xd944ab){_0x391659[_0xa231('0x33')]=_0xd944ab[_0xa231('0x33')];}})['then'](function(){_0x391659[_0xa231('0x34')]();_0x391659[_0xa231('0x35')](_0x4f88d8);})[_0xa231('0x27')](function(_0x402d1d){_0x4f88d8(_0x402d1d);});},'beforeUpdate':function(_0x1c3283,_0x1b0b83,_0x28f6c7){Promise[_0xa231('0x31')]()[_0xa231('0x24')](function(){if(_0x1c3283[_0xa231('0x36')]('userProfileId')===![])return;return _0x37912c[_0xa231('0x37')][_0xa231('0x32')]({'where':{'id':_0x1c3283[_0xa231('0x2f')]}})[_0xa231('0x24')](function(_0x2a0702){if(_0x2a0702)_0x1c3283['privacyEnabled']=_0x2a0702['privacyEnabled'];return;});})[_0xa231('0x24')](function(){if(_0x1c3283['changed']('password')){_0x1c3283[_0xa231('0x34')]();return _0x1c3283['updatePassword'](_0x28f6c7);}_0x28f6c7();})[_0xa231('0x27')](function(_0x4c621a){_0x28f6c7(_0x4c621a);});},'afterCreate':function(_0x20e80a,_0x1615c8,_0x206c99){var _0x418ab9=getUserApplications(_0x20e80a,_0x20e80a['internal']);if(_0x20e80a[_0xa231('0x25')]!=_0x20e80a[_0xa231('0x16')]){_0x418ab9=_0x418ab9[_0xa231('0x26')](getUserApplications(_0x20e80a,_0x20e80a[_0xa231('0x16')]));}return _0x37912c[_0xa231('0x38')][_0xa231('0x39')](_0x418ab9)[_0xa231('0x24')](function(){if(_0x20e80a[_0xa231('0x10')]){return getChanSpyPromise(_0x37912c,_0x20e80a);}})[_0xa231('0x24')](function(_0xee72be){if(_0xee72be&&_0xee72be[_0xa231('0x5')]){return _0x37912c[_0xa231('0x38')]['bulkCreate'](_0xee72be);}})['then'](function(){_0x206c99();})['catch'](function(_0xb2f485){_0x206c99(_0xb2f485);});},'afterUpdate':function(_0x13de70,_0x3ec13c,_0x5424cb){return BPromise[_0xa231('0x31')]()[_0xa231('0x24')](function(){if(_0x13de70[_0xa231('0x36')](_0xa231('0x10'))||_0x13de70[_0xa231('0x36')](_0xa231('0x6'))){return _0x37912c[_0xa231('0x38')][_0xa231('0x3a')]({'where':{'UserId':_0x13de70['id'],'type':_0xa231('0x8'),'ChanSpyId':{'$ne':null}}})[_0xa231('0x24')](function(){if(_0x13de70[_0xa231('0x10')]){return getChanSpyPromise(_0x37912c,_0x13de70)[_0xa231('0x24')](function(_0x1d9353){if(_0x1d9353&&_0x1d9353[_0xa231('0x5')]){return _0x37912c[_0xa231('0x38')][_0xa231('0x39')](_0x1d9353);}});}});}})[_0xa231('0x24')](function(){if(_0x13de70[_0xa231('0x36')]('extensionMonitor')||_0x13de70['changed'](_0xa231('0x6'))){return _0x37912c['VoiceExtension'][_0xa231('0x3a')]({'where':{'UserId':_0x13de70['id'],'type':_0xa231('0x8'),'ChanSpyId':null}})[_0xa231('0x24')](function(){var _0x5c48c1=getUserApplications(_0x13de70,_0x13de70[_0xa231('0x25')]);if(_0x13de70['internal']!=_0x13de70[_0xa231('0x16')]){_0x5c48c1=_0x5c48c1[_0xa231('0x26')](getUserApplications(_0x13de70,_0x13de70[_0xa231('0x16')]));}return _0x37912c[_0xa231('0x38')][_0xa231('0x39')](_0x5c48c1);});}})[_0xa231('0x24')](function(){_0x5424cb();})['catch'](function(_0x3affeb){_0x5424cb(_0x3affeb);});},'afterDestroy':function(_0x15f7cc,_0x57f7b5){return _0x37912c['VoiceExtension'][_0xa231('0x3a')]({'where':{'UserId':_0x15f7cc['id'],'type':_0xa231('0x8')}});}},'instanceMethods':{'authenticate':function(_0x1d7966,_0x12a9af){if(!_0x12a9af){return this[_0xa231('0x14')]===this[_0xa231('0x3b')](_0x1d7966);}var _0x6f505d=this;this[_0xa231('0x3b')](_0x1d7966,function(_0x2631e9,_0x16ef37){if(_0x2631e9){_0x12a9af(_0x2631e9);}if(_0x6f505d[_0xa231('0x14')]===_0x16ef37){_0x12a9af(null,!![]);}else{_0x12a9af(null,![]);}});},'makeSalt':function(_0x220beb,_0x4cf973){var _0x1800e1=0x10;if(typeof arguments[0x0]===_0xa231('0x3c')){_0x4cf973=arguments[0x0];_0x220beb=_0x1800e1;}else if(typeof arguments[0x1]==='function'){_0x4cf973=arguments[0x1];}else{throw new Error(_0xa231('0x3d'));}if(!_0x220beb){_0x220beb=_0x1800e1;}return crypto[_0xa231('0x3e')](_0x220beb,function(_0x11cfdd,_0x2b4ad9){if(_0x11cfdd){_0x4cf973(_0x11cfdd);}return _0x4cf973(null,_0x2b4ad9[_0xa231('0x3f')](_0xa231('0x40')));});},'encryptPassword':function(_0x31fe0d,_0x3a50b7){if(!_0x31fe0d||!this[_0xa231('0x41')]){return _0x3a50b7?_0x3a50b7(null):null;}var _0x10afa3=0x2710;var _0x1bbaa3=0x40;var _0x14a5ef=new Buffer(this[_0xa231('0x41')],'base64');if(!_0x3a50b7){return crypto[_0xa231('0x42')](_0x31fe0d,_0x14a5ef,_0x10afa3,_0x1bbaa3,_0xa231('0x43'))[_0xa231('0x3f')](_0xa231('0x40'));}return crypto[_0xa231('0x44')](_0x31fe0d,_0x14a5ef,_0x10afa3,_0x1bbaa3,'sha1',function(_0x216723,_0x3223da){if(_0x216723){_0x3a50b7(_0x216723);}return _0x3a50b7(null,_0x3223da['toString'](_0xa231('0x40')));});},'updatePassword':function(_0x46882d){if(!this[_0xa231('0x14')]){return _0x46882d(null);}if(!validatePresenceOf(this[_0xa231('0x14')])&&authTypes[_0xa231('0x45')](this['provider'])===-0x1){_0x46882d(new Error('Invalid\x20password'));}var _0x27eceb=this;this[_0xa231('0x46')](function(_0x38e0bb,_0x2d09f6){if(_0x38e0bb){return _0x46882d(_0x38e0bb);}_0x27eceb[_0xa231('0x41')]=_0x2d09f6;_0x27eceb[_0xa231('0x3b')](_0x27eceb[_0xa231('0x14')],function(_0x2b74e4,_0x28b650){if(_0x2b74e4){_0x46882d(_0x2b74e4);}_0x27eceb[_0xa231('0x14')]=_0x28b650;_0x46882d(null);});});},'updateMd5Password':function(){this[_0xa231('0x47')]=md5(this['name']+_0xa231('0x48')+this[_0xa231('0x14')]);return this[_0xa231('0x47')];}}});};
\ No newline at end of file
index efdfef9..4c4cbd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd69b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./user.socket','register','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetUser','findAll','options','raw','where','include','model','attributes','map','ShowUser','User','find','PauseUser','name','role','internal','update','MemberReport','PAUSE','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','forEach','push','isNil','interface','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','format','UnpauseUser','channel','isValidChannel','Unknown\x20channel','voice','UserVoiceQueueRt','system','mail','chat','fax','sms','openchannel','whatsapp','set','%s%s','Pause','all','findOne','LoginUser','mobile','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','getChannels','merge','LOGIN','callysquare','LOGININPAUSE','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x379d12,_0x2f59d6){var _0x87e673=function(_0x4d7388){while(--_0x4d7388){_0x379d12['push'](_0x379d12['shift']());}};_0x87e673(++_0x2f59d6);}(_0xd69b,0x116));var _0xbd69=function(_0x1a9204,_0x1c9e00){_0x1a9204=_0x1a9204-0x0;var _0x17ca68=_0xd69b[_0x1a9204];return _0x17ca68;};'use strict';var _=require(_0xbd69('0x0'));var util=require(_0xbd69('0x1'));var moment=require(_0xbd69('0x2'));var BPromise=require(_0xbd69('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbd69('0x4'));var db=require(_0xbd69('0x5'))['db'];var utils=require(_0xbd69('0x6'));var logger=require(_0xbd69('0x7'))(_0xbd69('0x8'));var config=require(_0xbd69('0x9'));var jayson=require(_0xbd69('0xa'));var client=jayson[_0xbd69('0xb')][_0xbd69('0xc')]({'port':0x232a});config[_0xbd69('0xd')]=_[_0xbd69('0xe')](config[_0xbd69('0xd')],{'host':_0xbd69('0xf'),'port':0x18eb});var socket=require(_0xbd69('0x10'))(new Redis(config['redis']));require(_0xbd69('0x11'))[_0xbd69('0x12')](socket);function respondWithRpcPromise(_0x2affde,_0x110e1e,_0x72c825){return new BPromise(function(_0x3f2535,_0x1fbd0a){return client['request'](_0x2affde,_0x72c825)[_0xbd69('0x13')](function(_0x122638){logger[_0xbd69('0x14')](_0xbd69('0x15'),_0x110e1e,_0xbd69('0x16'));logger[_0xbd69('0x17')](_0xbd69('0x18'),_0x110e1e,_0xbd69('0x16'),JSON[_0xbd69('0x19')](_0x122638));if(_0x122638[_0xbd69('0x1a')]){if(_0x122638[_0xbd69('0x1a')]['code']===0x1f4){logger[_0xbd69('0x1a')](_0xbd69('0x15'),_0x110e1e,_0x122638[_0xbd69('0x1a')][_0xbd69('0x1b')]);return _0x1fbd0a(_0x122638[_0xbd69('0x1a')][_0xbd69('0x1b')]);}logger['error']('User,\x20%s,\x20%s',_0x110e1e,_0x122638[_0xbd69('0x1a')][_0xbd69('0x1b')]);return _0x3f2535(_0x122638['error'][_0xbd69('0x1b')]);}else{logger[_0xbd69('0x14')](_0xbd69('0x15'),_0x110e1e,_0xbd69('0x16'));_0x3f2535(_0x122638[_0xbd69('0x1c')][_0xbd69('0x1b')]);}})[_0xbd69('0x1d')](function(_0x1527f5){logger[_0xbd69('0x1a')](_0xbd69('0x15'),_0x110e1e,_0x1527f5);_0x1fbd0a(_0x1527f5);});});}exports[_0xbd69('0x1e')]=function(_0x2e32ea){var _0x55141e=this;return new Promise(function(_0x40bea3,_0x5d91b0){return db['User'][_0xbd69('0x1f')]({'raw':_0x2e32ea[_0xbd69('0x20')]?_0x2e32ea['options'][_0xbd69('0x21')]===undefined?!![]:![]:!![],'where':_0x2e32ea['options']?_0x2e32ea[_0xbd69('0x20')][_0xbd69('0x22')]||null:null,'attributes':_0x2e32ea['options']?_0x2e32ea['options']['attributes']||null:null,'limit':_0x2e32ea['options']?_0x2e32ea[_0xbd69('0x20')]['limit']||null:null,'include':_0x2e32ea['options']?_0x2e32ea['options'][_0xbd69('0x23')]?_['map'](_0x2e32ea[_0xbd69('0x20')]['include'],function(_0x2691f1){return{'model':db[_0x2691f1[_0xbd69('0x24')]],'as':_0x2691f1['as'],'attributes':_0x2691f1[_0xbd69('0x25')],'include':_0x2691f1[_0xbd69('0x23')]?_[_0xbd69('0x26')](_0x2691f1[_0xbd69('0x23')],function(_0x4415b7){return{'model':db[_0x4415b7[_0xbd69('0x24')]],'as':_0x4415b7['as'],'attributes':_0x4415b7[_0xbd69('0x25')],'include':_0x4415b7[_0xbd69('0x23')]?_[_0xbd69('0x26')](_0x4415b7[_0xbd69('0x23')],function(_0x3d5181){return{'model':db[_0x3d5181[_0xbd69('0x24')]],'as':_0x3d5181['as'],'attributes':_0x3d5181['attributes']};}):[]};}):[]};}):[]:[]})[_0xbd69('0x13')](function(_0x52250f){logger[_0xbd69('0x14')](_0xbd69('0x1e'),_0x2e32ea);logger['debug'](_0xbd69('0x1e'),_0x2e32ea,JSON['stringify'](_0x52250f));_0x40bea3(_0x52250f);})[_0xbd69('0x1d')](function(_0x436a5f){logger[_0xbd69('0x1a')](_0xbd69('0x1e'),_0x436a5f[_0xbd69('0x1b')],_0x2e32ea);_0x5d91b0(_0x55141e[_0xbd69('0x1a')](0x1f4,_0x436a5f[_0xbd69('0x1b')]));});});};exports[_0xbd69('0x27')]=function(_0x59e2d2){var _0x3008e0=this;return new Promise(function(_0x32ca30,_0x1a5639){return db[_0xbd69('0x28')][_0xbd69('0x29')]({'raw':_0x59e2d2['options']?_0x59e2d2['options'][_0xbd69('0x21')]===undefined?!![]:![]:!![],'where':_0x59e2d2[_0xbd69('0x20')]?_0x59e2d2[_0xbd69('0x20')]['where']||null:null,'attributes':_0x59e2d2[_0xbd69('0x20')]?_0x59e2d2['options'][_0xbd69('0x25')]||null:null,'include':_0x59e2d2[_0xbd69('0x20')]?_0x59e2d2[_0xbd69('0x20')][_0xbd69('0x23')]?_[_0xbd69('0x26')](_0x59e2d2[_0xbd69('0x20')]['include'],function(_0x291325){return{'model':db[_0x291325[_0xbd69('0x24')]],'as':_0x291325['as'],'attributes':_0x291325[_0xbd69('0x25')],'include':_0x291325[_0xbd69('0x23')]?_[_0xbd69('0x26')](_0x291325[_0xbd69('0x23')],function(_0x4decfe){return{'model':db[_0x4decfe[_0xbd69('0x24')]],'as':_0x4decfe['as'],'attributes':_0x4decfe['attributes'],'include':_0x4decfe[_0xbd69('0x23')]?_[_0xbd69('0x26')](_0x4decfe[_0xbd69('0x23')],function(_0x5006e5){return{'model':db[_0x5006e5[_0xbd69('0x24')]],'as':_0x5006e5['as'],'attributes':_0x5006e5[_0xbd69('0x25')]};}):[]};}):[]};}):[]:[]})[_0xbd69('0x13')](function(_0x33f796){logger[_0xbd69('0x14')](_0xbd69('0x27'),_0x59e2d2);logger[_0xbd69('0x17')](_0xbd69('0x27'),_0x59e2d2,JSON[_0xbd69('0x19')](_0x33f796));_0x32ca30(_0x33f796);})['catch'](function(_0x308861){logger[_0xbd69('0x1a')](_0xbd69('0x27'),_0x308861[_0xbd69('0x1b')],_0x59e2d2);_0x1a5639(_0x3008e0[_0xbd69('0x1a')](0x1f4,_0x308861[_0xbd69('0x1b')]));});});};exports[_0xbd69('0x2a')]=function(_0x184b66){var _0x5248bf=this;return new Promise(function(_0x29e49f,_0x1cfe70){var _0x35b1e8;return db[_0xbd69('0x28')][_0xbd69('0x29')]({'where':_0x184b66[_0xbd69('0x20')][_0xbd69('0x22')]||{},'attributes':['id',_0xbd69('0x2b'),_0xbd69('0x2c'),_0xbd69('0x2d'),'interface']})[_0xbd69('0x13')](function(_0x346659){if(_0x346659){_0x35b1e8=_0x346659;return db['UserVoiceQueueRt'][_0xbd69('0x2e')]({'paused':0x1},{'where':{'UserId':_0x35b1e8['id']},'individualHooks':!![]});}})[_0xbd69('0x13')](function(){if(_0x35b1e8){return db[_0xbd69('0x2f')][_0xbd69('0x1f')]({'where':{'membername':_0x35b1e8[_0xbd69('0x2b')],'type':_0xbd69('0x30'),'exitAt':null}});}})['then'](function(_0x33f0ed){if(_0x35b1e8){if(_0x33f0ed&&_0x33f0ed[_0xbd69('0x31')]){var _0x2c9b05=moment()['format'](_0xbd69('0x32'));for(var _0x33cf77=0x0,_0x1b6c36=_0x33f0ed[_0xbd69('0x31')];_0x33cf77<_0x1b6c36;_0x33cf77++){_0x33f0ed[_0x33cf77][_0xbd69('0x33')]({'exitAt':_0x2c9b05});}}}})[_0xbd69('0x13')](function(){if(_0x35b1e8){var _0x4962f0=[];var _0x18419a=utils['getChannels']();_0x18419a[_0xbd69('0x34')](function(_0x301a9c){_0x4962f0[_0xbd69('0x35')]({'channel':_0x301a9c,'membername':_0x35b1e8[_0xbd69('0x2b')],'interface':_[_0xbd69('0x36')](_0x35b1e8[_0xbd69('0x37')])?util['format'](_0xbd69('0x38'),_0x35b1e8[_0xbd69('0x2b')]):_0x35b1e8['interface'],'type':'PAUSE','enterAt':moment()['format'](_0xbd69('0x32')),'data1':_0x184b66[_0xbd69('0x39')][_0xbd69('0x3a')]||_0xbd69('0x3b'),'role':_0x35b1e8[_0xbd69('0x2c')],'internal':_0x35b1e8[_0xbd69('0x2d')],'uniqueid':_0x184b66[_0xbd69('0x39')][_0xbd69('0x3c')]||null});});return db[_0xbd69('0x2f')]['bulkCreate'](_0x4962f0,{'individualHooks':!![]});}})[_0xbd69('0x13')](function(){if(_0x35b1e8){return _0x35b1e8['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x184b66[_0xbd69('0x39')][_0xbd69('0x3a')]||_0xbd69('0x3b'),'lastPauseAt':moment()[_0xbd69('0x3d')](_0xbd69('0x32'))});}})[_0xbd69('0x13')](function(_0x22a350){_0x29e49f(_0x22a350);})[_0xbd69('0x1d')](function(_0x2c6fd4){_0x1cfe70(_0x5248bf[_0xbd69('0x1a')](0x1f4,_0x2c6fd4[_0xbd69('0x1b')]));});});};exports[_0xbd69('0x3e')]=function(_0x29c099){var _0x21aa6d=this;return new Promise(function(_0x3dc2d2,_0x334b81){var _0x7a39a0;return db[_0xbd69('0x28')]['findOne']({'where':_0x29c099[_0xbd69('0x20')][_0xbd69('0x22')]||{},'attributes':['id','name']})[_0xbd69('0x13')](function(_0x2c72b){if(_0x2c72b){_0x7a39a0=_0x2c72b;if(_0x29c099[_0xbd69('0x39')][_0xbd69('0x3f')]&&!utils[_0xbd69('0x40')](_0x29c099[_0xbd69('0x39')][_0xbd69('0x3f')])){throw new Error(_0xbd69('0x41'));}switch(_0x29c099['body']['channel']){case _0xbd69('0x42'):return db[_0xbd69('0x43')][_0xbd69('0x2e')]({'paused':0x0},{'where':{'UserId':_0x7a39a0['id']}})[_0xbd69('0x13')](function(){return db['MemberReport']['find']({'where':{'channel':_0x29c099[_0xbd69('0x39')]['channel'],'membername':_0x7a39a0[_0xbd69('0x2b')],'type':_0xbd69('0x30'),'exitAt':null}});})[_0xbd69('0x13')](function(_0x3df026){if(_0x3df026){return _0x3df026[_0xbd69('0x2e')]({'exitAt':moment()[_0xbd69('0x3d')](_0xbd69('0x32')),'data2':_0xbd69('0x44')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x7a39a0[_0xbd69('0x2e')]({'voicePause':![]});});case _0xbd69('0x45'):case _0xbd69('0x46'):case _0xbd69('0x47'):case _0xbd69('0x48'):case _0xbd69('0x49'):case _0xbd69('0x4a'):return db[_0xbd69('0x2f')][_0xbd69('0x29')]({'where':{'channel':_0x29c099['body'][_0xbd69('0x3f')],'membername':_0x7a39a0[_0xbd69('0x2b')],'type':'PAUSE','exitAt':null}})['then'](function(_0x42b5dd){return _0x42b5dd['update']({'exitAt':moment()[_0xbd69('0x3d')](_0xbd69('0x32')),'data2':_0xbd69('0x44')},{'individualHooks':!![]});})[_0xbd69('0x13')](function(){var _0x5931e6={};_[_0xbd69('0x4b')](_0x5931e6,util[_0xbd69('0x3d')](_0xbd69('0x4c'),_0x29c099[_0xbd69('0x39')][_0xbd69('0x3f')],_0xbd69('0x4d')),![]);return _0x7a39a0['update'](_0x5931e6);});default:return db[_0xbd69('0x43')][_0xbd69('0x2e')]({'paused':0x0},{'where':{'UserId':_0x7a39a0['id']}})[_0xbd69('0x13')](function(){return db[_0xbd69('0x2f')]['findAll']({'where':{'membername':_0x7a39a0[_0xbd69('0x2b')],'type':_0xbd69('0x30'),'exitAt':null}});})['then'](function(_0x1fda24){var _0x1f4550=[];_0x1fda24[_0xbd69('0x34')](function(_0x2e4ad8){_0x1f4550[_0xbd69('0x35')](_0x2e4ad8[_0xbd69('0x2e')]({'exitAt':moment()['format'](_0xbd69('0x32')),'data2':_0xbd69('0x44')}));});return BPromise[_0xbd69('0x4e')](_0x1f4550);})[_0xbd69('0x13')](function(){return _0x7a39a0[_0xbd69('0x2e')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0xbd69('0x13')](function(_0x183f7b){_0x3dc2d2(_0x183f7b);})['catch'](function(_0x1bafaa){_0x334b81(_0x21aa6d[_0xbd69('0x1a')](0x1f4,_0x1bafaa['message']));});});};exports['LogoutUser']=function(_0x1a046a){var _0x4585ee=this;return new Promise(function(_0x6faff0,_0x36c6c0){var _0x4739cd;return db['User'][_0xbd69('0x4f')]({'where':_0x1a046a[_0xbd69('0x20')]['where']||{},'attributes':['id',_0xbd69('0x2b')]})[_0xbd69('0x13')](function(_0xf9c86b){if(_0xf9c86b){_0x4739cd=_0xf9c86b;return db[_0xbd69('0x43')]['destroy']({'where':{'membername':_0x4739cd[_0xbd69('0x2b')]},'individualHooks':!![]});}})[_0xbd69('0x13')](function(){if(_0x4739cd){return db['MemberReport'][_0xbd69('0x1f')]({'where':{'membername':_0x4739cd[_0xbd69('0x2b')],'exitAt':null}});}})[_0xbd69('0x13')](function(_0x11ab9e){if(_0x4739cd){if(_0x11ab9e&&_0x11ab9e[_0xbd69('0x31')]){var _0x1878f9=[];_0x11ab9e[_0xbd69('0x34')](function(_0x51a107){_0x1878f9[_0xbd69('0x35')](_0x51a107[_0xbd69('0x2e')]({'exitAt':moment()[_0xbd69('0x3d')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xbd69('0x4e')](_0x1878f9);}}})[_0xbd69('0x13')](function(){if(_0x4739cd){return _0x4739cd[_0xbd69('0x2e')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xbd69('0x13')](function(_0x53b8f9){_0x6faff0(_0x53b8f9);})[_0xbd69('0x1d')](function(_0x1ecaff){_0x36c6c0(_0x4585ee[_0xbd69('0x1a')](0x1f4,_0x1ecaff[_0xbd69('0x1b')]));});});};exports[_0xbd69('0x50')]=function(_0x734a09){var _0x1755f0=this;return new Promise(function(_0x256651,_0x5145ad){var _0x51c5c9;var _0x3a8d40;var _0x417ab4;var _0x45e3ab;return db[_0xbd69('0x28')]['findOne']({'where':_0x734a09[_0xbd69('0x20')][_0xbd69('0x22')]||{},'attributes':['id','name',_0xbd69('0x2c'),_0xbd69('0x51'),'phone',_0xbd69('0x2d'),_0xbd69('0x52'),_0xbd69('0x37')]})['then'](function(_0x3acad9){if(_0x3acad9){_0x51c5c9=_0x3acad9;_0x45e3ab=_0x734a09[_0xbd69('0x39')][_0xbd69('0x37')]?_0x734a09[_0xbd69('0x39')]['interface']:util['format']('SIP/%s',_0x51c5c9[_0xbd69('0x2b')]);return db['User'][_0xbd69('0x53')]({'where':{'role':_0xbd69('0x54'),'online':!![],'id':{'$ne':_0x51c5c9['id']}}});}})[_0xbd69('0x13')](function(_0x460702){if(_0x460702){_0x417ab4=_0x460702;return require(_0xbd69('0x55'))['getLicense']();}})[_0xbd69('0x13')](function(_0x18799b){if(_0x18799b&&_0x18799b[_0xbd69('0x56')]&&_0x417ab4>=_0x18799b['agents']){throw new Error(_0xbd69('0x57'));}})[_0xbd69('0x13')](function(){if(_0x51c5c9){return db[_0xbd69('0x43')]['destroy']({'where':{'membername':_0x51c5c9[_0xbd69('0x2b')]},'individualHooks':!![]});}})[_0xbd69('0x13')](function(){if(_0x51c5c9){return _0x51c5c9[_0xbd69('0x58')]({'raw':!![]});}})[_0xbd69('0x13')](function(_0x26ba33){if(_0x51c5c9){if(_0x26ba33){var _0x1576d7=[];_0x3a8d40=_0x26ba33;if(_0x3a8d40[_0xbd69('0x31')]){for(var _0x35fa38=0x0;_0x35fa38<_0x3a8d40[_0xbd69('0x31')];_0x35fa38++){_0x1576d7[_0xbd69('0x35')](db[_0xbd69('0x43')]['upsert']({'membername':_0x51c5c9[_0xbd69('0x2b')],'UserId':_0x51c5c9['id'],'queue_name':_0x3a8d40[_0x35fa38][_0xbd69('0x2b')],'VoiceQueueId':_0x3a8d40[_0x35fa38]['id'],'interface':_0x45e3ab,'paused':_0x51c5c9[_0xbd69('0x52')]||![],'penalty':_0x3a8d40[_0x35fa38]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0xbd69('0x4e')](_0x1576d7);}}}})[_0xbd69('0x13')](function(){if(_0x51c5c9){return db[_0xbd69('0x2f')][_0xbd69('0x1f')]({'where':{'membername':_0x51c5c9['name'],'exitAt':null}});}})[_0xbd69('0x13')](function(_0x7fda9b){if(_0x51c5c9){if(_0x7fda9b&&_0x7fda9b[_0xbd69('0x31')]){var _0x572541=[];_0x7fda9b['forEach'](function(_0x1f96b1){_0x572541['push'](_0x1f96b1[_0xbd69('0x2e')]({'exitAt':moment()[_0xbd69('0x3d')](_0xbd69('0x32'))}));});return BPromise['all'](_0x572541);}}})['then'](function(_0x1a6d6a){if(_0x51c5c9){var _0x3bd5c1=[];var _0x36415e=[];var _0x49e7a9=utils[_0xbd69('0x59')]();var _0x363391={'membername':_0x51c5c9[_0xbd69('0x2b')],'interface':_0x45e3ab,'enterAt':moment()[_0xbd69('0x3d')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x51c5c9[_0xbd69('0x2c')],'internal':_0x51c5c9[_0xbd69('0x2d')]};_0x49e7a9[_0xbd69('0x34')](function(_0x4d7a8d){_0x3bd5c1[_0xbd69('0x35')](_[_0xbd69('0x5a')]({'channel':_0x4d7a8d,'type':_0xbd69('0x5b'),'data1':_0xbd69('0x5c'),'data2':_0x45e3ab},_0x363391));if(_0x51c5c9['loginInPause']){_0x36415e[_0xbd69('0x35')](_[_0xbd69('0x5a')]({'channel':_0x4d7a8d,'type':'PAUSE','data1':_0xbd69('0x5d')},_0x363391));}});return db[_0xbd69('0x2f')]['bulkCreate'](_0x3bd5c1[_0xbd69('0x5e')](_0x36415e),{'individualHooks':!![]});}})['then'](function(){if(_0x51c5c9){return _0x51c5c9[_0xbd69('0x2e')]({'online':!![],'lastLoginAt':moment()[_0xbd69('0x3d')](_0xbd69('0x32')),'voicePause':_0x51c5c9[_0xbd69('0x52')]||![],'mailPause':_0x51c5c9[_0xbd69('0x52')]||![],'chatPause':_0x51c5c9[_0xbd69('0x52')]||![],'faxPause':_0x51c5c9['loginInPause']||![],'smsPause':_0x51c5c9[_0xbd69('0x52')]||![],'openchannelPause':_0x51c5c9[_0xbd69('0x52')]||![],'pauseType':_0x51c5c9[_0xbd69('0x52')]?'LOGININPAUSE':null,'lastPauseAt':moment()[_0xbd69('0x3d')](_0xbd69('0x32')),'interface':_0x45e3ab});}})[_0xbd69('0x13')](function(_0x131024){_0x256651(_0x131024);})[_0xbd69('0x1d')](function(_0x5d514b){_0x5145ad(_0x1755f0['error'](0x1f4,_0x5d514b[_0xbd69('0x1b')]));});});};
\ No newline at end of file
+var _0xbc99=['Unknown\x20channel','voice','UserVoiceQueueRt','system','chat','sms','openchannel','%s%s','Pause','push','all','LogoutUser','destroy','LoginUser','mobile','phone','loginInPause','count','agent','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','LOGIN','merge','LOGININPAUSE','bulkCreate','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./user.socket','request','then','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','GetUser','User','findAll','options','raw','where','limit','include','map','model','attributes','catch','ShowUser','find','PauseUser','name','internal','interface','update','MemberReport','PAUSE','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','getChannels','forEach','SIP/%s','body','type','role','DEFAULT\x20PAUSE','findOne','channel'];(function(_0x2aec52,_0x59d962){var _0x3b8835=function(_0x3e2604){while(--_0x3e2604){_0x2aec52['push'](_0x2aec52['shift']());}};_0x3b8835(++_0x59d962);}(_0xbc99,0x188));var _0x9bc9=function(_0x32d1b6,_0x2a26fc){_0x32d1b6=_0x32d1b6-0x0;var _0x397ac6=_0xbc99[_0x32d1b6];return _0x397ac6;};'use strict';var _=require(_0x9bc9('0x0'));var util=require(_0x9bc9('0x1'));var moment=require(_0x9bc9('0x2'));var BPromise=require(_0x9bc9('0x3'));var rs=require(_0x9bc9('0x4'));var fs=require('fs');var Redis=require(_0x9bc9('0x5'));var db=require(_0x9bc9('0x6'))['db'];var utils=require(_0x9bc9('0x7'));var logger=require(_0x9bc9('0x8'))(_0x9bc9('0x9'));var config=require(_0x9bc9('0xa'));var jayson=require(_0x9bc9('0xb'));var client=jayson[_0x9bc9('0xc')][_0x9bc9('0xd')]({'port':0x232a});config[_0x9bc9('0xe')]=_[_0x9bc9('0xf')](config[_0x9bc9('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0x9bc9('0x10'))(new Redis(config['redis']));require(_0x9bc9('0x11'))['register'](socket);function respondWithRpcPromise(_0x5a1b20,_0x3afc9e,_0x337a82){return new BPromise(function(_0x4bf30e,_0x2de3ff){return client[_0x9bc9('0x12')](_0x5a1b20,_0x337a82)[_0x9bc9('0x13')](function(_0x1f6135){logger['info'](_0x9bc9('0x14'),_0x3afc9e,_0x9bc9('0x15'));logger[_0x9bc9('0x16')](_0x9bc9('0x17'),_0x3afc9e,_0x9bc9('0x15'),JSON[_0x9bc9('0x18')](_0x1f6135));if(_0x1f6135['error']){if(_0x1f6135['error'][_0x9bc9('0x19')]===0x1f4){logger[_0x9bc9('0x1a')](_0x9bc9('0x14'),_0x3afc9e,_0x1f6135[_0x9bc9('0x1a')]['message']);return _0x2de3ff(_0x1f6135['error'][_0x9bc9('0x1b')]);}logger[_0x9bc9('0x1a')](_0x9bc9('0x14'),_0x3afc9e,_0x1f6135[_0x9bc9('0x1a')]['message']);return _0x4bf30e(_0x1f6135['error']['message']);}else{logger[_0x9bc9('0x1c')](_0x9bc9('0x14'),_0x3afc9e,_0x9bc9('0x15'));_0x4bf30e(_0x1f6135['result'][_0x9bc9('0x1b')]);}})['catch'](function(_0xc07482){logger[_0x9bc9('0x1a')](_0x9bc9('0x14'),_0x3afc9e,_0xc07482);_0x2de3ff(_0xc07482);});});}exports[_0x9bc9('0x1d')]=function(_0x565fd7){var _0x42ea27=this;return new Promise(function(_0x3ac712,_0x21799f){return db[_0x9bc9('0x1e')][_0x9bc9('0x1f')]({'raw':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7['options'][_0x9bc9('0x21')]===undefined?!![]:![]:!![],'where':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x22')]||null:null,'attributes':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7['options']['attributes']||null:null,'limit':_0x565fd7['options']?_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x23')]||null:null,'include':_0x565fd7[_0x9bc9('0x20')]?_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x24')]?_[_0x9bc9('0x25')](_0x565fd7[_0x9bc9('0x20')][_0x9bc9('0x24')],function(_0x46b920){return{'model':db[_0x46b920[_0x9bc9('0x26')]],'as':_0x46b920['as'],'attributes':_0x46b920[_0x9bc9('0x27')],'include':_0x46b920['include']?_[_0x9bc9('0x25')](_0x46b920[_0x9bc9('0x24')],function(_0x55d317){return{'model':db[_0x55d317[_0x9bc9('0x26')]],'as':_0x55d317['as'],'attributes':_0x55d317[_0x9bc9('0x27')],'include':_0x55d317[_0x9bc9('0x24')]?_['map'](_0x55d317[_0x9bc9('0x24')],function(_0x2aaac8){return{'model':db[_0x2aaac8[_0x9bc9('0x26')]],'as':_0x2aaac8['as'],'attributes':_0x2aaac8[_0x9bc9('0x27')]};}):[]};}):[]};}):[]:[]})[_0x9bc9('0x13')](function(_0x9f0a77){logger[_0x9bc9('0x1c')](_0x9bc9('0x1d'),_0x565fd7);logger['debug'](_0x9bc9('0x1d'),_0x565fd7,JSON['stringify'](_0x9f0a77));_0x3ac712(_0x9f0a77);})[_0x9bc9('0x28')](function(_0x1beddd){logger[_0x9bc9('0x1a')](_0x9bc9('0x1d'),_0x1beddd[_0x9bc9('0x1b')],_0x565fd7);_0x21799f(_0x42ea27['error'](0x1f4,_0x1beddd['message']));});});};exports[_0x9bc9('0x29')]=function(_0x239147){var _0x2e8114=this;return new Promise(function(_0x353646,_0x20289f){return db[_0x9bc9('0x1e')][_0x9bc9('0x2a')]({'raw':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')][_0x9bc9('0x21')]===undefined?!![]:![]:!![],'where':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')][_0x9bc9('0x22')]||null:null,'attributes':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')][_0x9bc9('0x27')]||null:null,'include':_0x239147[_0x9bc9('0x20')]?_0x239147[_0x9bc9('0x20')]['include']?_[_0x9bc9('0x25')](_0x239147['options'][_0x9bc9('0x24')],function(_0x2cd4dc){return{'model':db[_0x2cd4dc['model']],'as':_0x2cd4dc['as'],'attributes':_0x2cd4dc[_0x9bc9('0x27')],'include':_0x2cd4dc[_0x9bc9('0x24')]?_[_0x9bc9('0x25')](_0x2cd4dc[_0x9bc9('0x24')],function(_0xfcd2f){return{'model':db[_0xfcd2f[_0x9bc9('0x26')]],'as':_0xfcd2f['as'],'attributes':_0xfcd2f[_0x9bc9('0x27')],'include':_0xfcd2f[_0x9bc9('0x24')]?_['map'](_0xfcd2f[_0x9bc9('0x24')],function(_0x4b86a3){return{'model':db[_0x4b86a3[_0x9bc9('0x26')]],'as':_0x4b86a3['as'],'attributes':_0x4b86a3[_0x9bc9('0x27')]};}):[]};}):[]};}):[]:[]})[_0x9bc9('0x13')](function(_0x9b70c9){logger[_0x9bc9('0x1c')]('ShowUser',_0x239147);logger[_0x9bc9('0x16')](_0x9bc9('0x29'),_0x239147,JSON[_0x9bc9('0x18')](_0x9b70c9));_0x353646(_0x9b70c9);})['catch'](function(_0x24ffcf){logger[_0x9bc9('0x1a')]('ShowUser',_0x24ffcf[_0x9bc9('0x1b')],_0x239147);_0x20289f(_0x2e8114[_0x9bc9('0x1a')](0x1f4,_0x24ffcf[_0x9bc9('0x1b')]));});});};exports[_0x9bc9('0x2b')]=function(_0x2d8bea){var _0x4de139=this;return new Promise(function(_0x2b74ae,_0x29b232){var _0x36d48c;return db[_0x9bc9('0x1e')][_0x9bc9('0x2a')]({'where':_0x2d8bea[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id',_0x9bc9('0x2c'),'role',_0x9bc9('0x2d'),_0x9bc9('0x2e')]})['then'](function(_0x2fc795){if(_0x2fc795){_0x36d48c=_0x2fc795;return db['UserVoiceQueueRt'][_0x9bc9('0x2f')]({'paused':0x1},{'where':{'UserId':_0x36d48c['id']},'individualHooks':!![]});}})['then'](function(){if(_0x36d48c){return db[_0x9bc9('0x30')][_0x9bc9('0x1f')]({'where':{'membername':_0x36d48c['name'],'type':_0x9bc9('0x31'),'exitAt':null}});}})[_0x9bc9('0x13')](function(_0x3656bf){if(_0x36d48c){if(_0x3656bf&&_0x3656bf[_0x9bc9('0x32')]){var _0x24137f=moment()[_0x9bc9('0x33')](_0x9bc9('0x34'));for(var _0x505ecc=0x0,_0x146e8b=_0x3656bf[_0x9bc9('0x32')];_0x505ecc<_0x146e8b;_0x505ecc++){_0x3656bf[_0x505ecc][_0x9bc9('0x35')]({'exitAt':_0x24137f});}}}})['then'](function(){if(_0x36d48c){var _0x36b5b1=[];var _0x52d91f=utils[_0x9bc9('0x36')]();_0x52d91f[_0x9bc9('0x37')](function(_0x169513){_0x36b5b1['push']({'channel':_0x169513,'membername':_0x36d48c[_0x9bc9('0x2c')],'interface':_['isNil'](_0x36d48c[_0x9bc9('0x2e')])?util['format'](_0x9bc9('0x38'),_0x36d48c[_0x9bc9('0x2c')]):_0x36d48c[_0x9bc9('0x2e')],'type':_0x9bc9('0x31'),'enterAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'data1':_0x2d8bea[_0x9bc9('0x39')][_0x9bc9('0x3a')]||'DEFAULT\x20PAUSE','role':_0x36d48c[_0x9bc9('0x3b')],'internal':_0x36d48c[_0x9bc9('0x2d')],'uniqueid':_0x2d8bea[_0x9bc9('0x39')]['uniqueid']||null});});return db[_0x9bc9('0x30')]['bulkCreate'](_0x36b5b1,{'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x36d48c){return _0x36d48c[_0x9bc9('0x2f')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2d8bea['body']['type']||_0x9bc9('0x3c'),'lastPauseAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34'))});}})[_0x9bc9('0x13')](function(_0x2f0a98){_0x2b74ae(_0x2f0a98);})[_0x9bc9('0x28')](function(_0x45deff){_0x29b232(_0x4de139['error'](0x1f4,_0x45deff[_0x9bc9('0x1b')]));});});};exports['UnpauseUser']=function(_0x4c217f){var _0x24ba3a=this;return new Promise(function(_0x3c9a5c,_0x527f8d){var _0x3d5f78;return db[_0x9bc9('0x1e')][_0x9bc9('0x3d')]({'where':_0x4c217f[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id','name']})['then'](function(_0x40e0a1){if(_0x40e0a1){_0x3d5f78=_0x40e0a1;if(_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')]&&!utils['isValidChannel'](_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')])){throw new Error(_0x9bc9('0x3f'));}switch(_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')]){case _0x9bc9('0x40'):return db[_0x9bc9('0x41')][_0x9bc9('0x2f')]({'paused':0x0},{'where':{'UserId':_0x3d5f78['id']}})[_0x9bc9('0x13')](function(){return db['MemberReport'][_0x9bc9('0x2a')]({'where':{'channel':_0x4c217f[_0x9bc9('0x39')]['channel'],'membername':_0x3d5f78['name'],'type':_0x9bc9('0x31'),'exitAt':null}});})['then'](function(_0x4e0383){if(_0x4e0383){return _0x4e0383[_0x9bc9('0x2f')]({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'data2':_0x9bc9('0x42')},{'individualHooks':!![]});}return null;})[_0x9bc9('0x13')](function(){return _0x3d5f78[_0x9bc9('0x2f')]({'voicePause':![]});});case'mail':case _0x9bc9('0x43'):case'fax':case _0x9bc9('0x44'):case _0x9bc9('0x45'):case'whatsapp':return db[_0x9bc9('0x30')][_0x9bc9('0x2a')]({'where':{'channel':_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')],'membername':_0x3d5f78['name'],'type':_0x9bc9('0x31'),'exitAt':null}})['then'](function(_0x5f125d){return _0x5f125d[_0x9bc9('0x2f')]({'exitAt':moment()['format'](_0x9bc9('0x34')),'data2':_0x9bc9('0x42')},{'individualHooks':!![]});})[_0x9bc9('0x13')](function(){var _0x1570b0={};_['set'](_0x1570b0,util[_0x9bc9('0x33')](_0x9bc9('0x46'),_0x4c217f[_0x9bc9('0x39')][_0x9bc9('0x3e')],_0x9bc9('0x47')),![]);return _0x3d5f78['update'](_0x1570b0);});default:return db[_0x9bc9('0x41')]['update']({'paused':0x0},{'where':{'UserId':_0x3d5f78['id']}})[_0x9bc9('0x13')](function(){return db[_0x9bc9('0x30')][_0x9bc9('0x1f')]({'where':{'membername':_0x3d5f78[_0x9bc9('0x2c')],'type':_0x9bc9('0x31'),'exitAt':null}});})['then'](function(_0x28b092){var _0x31fd2a=[];_0x28b092['forEach'](function(_0xa4bc2a){_0x31fd2a[_0x9bc9('0x48')](_0xa4bc2a[_0x9bc9('0x2f')]({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'data2':_0x9bc9('0x42')}));});return BPromise[_0x9bc9('0x49')](_0x31fd2a);})['then'](function(){return _0x3d5f78[_0x9bc9('0x2f')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x9bc9('0x13')](function(_0x1fb0b7){_0x3c9a5c(_0x1fb0b7);})[_0x9bc9('0x28')](function(_0x5af6de){_0x527f8d(_0x24ba3a[_0x9bc9('0x1a')](0x1f4,_0x5af6de['message']));});});};exports[_0x9bc9('0x4a')]=function(_0x37e9f2){var _0x24287c=this;return new Promise(function(_0x35152c,_0x5ea89d){var _0x1a862a;return db['User']['findOne']({'where':_0x37e9f2[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id',_0x9bc9('0x2c')]})[_0x9bc9('0x13')](function(_0x526a0b){if(_0x526a0b){_0x1a862a=_0x526a0b;return db['UserVoiceQueueRt'][_0x9bc9('0x4b')]({'where':{'membername':_0x1a862a[_0x9bc9('0x2c')]},'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x1a862a){return db[_0x9bc9('0x30')][_0x9bc9('0x1f')]({'where':{'membername':_0x1a862a['name'],'exitAt':null}});}})[_0x9bc9('0x13')](function(_0x20a115){if(_0x1a862a){if(_0x20a115&&_0x20a115[_0x9bc9('0x32')]){var _0x5eea52=[];_0x20a115[_0x9bc9('0x37')](function(_0x21af7a){_0x5eea52[_0x9bc9('0x48')](_0x21af7a[_0x9bc9('0x2f')]({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34'))}));});return BPromise['all'](_0x5eea52);}}})[_0x9bc9('0x13')](function(){if(_0x1a862a){return _0x1a862a['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x9bc9('0x13')](function(_0x3ccf73){_0x35152c(_0x3ccf73);})['catch'](function(_0x2c48db){_0x5ea89d(_0x24287c['error'](0x1f4,_0x2c48db['message']));});});};exports[_0x9bc9('0x4c')]=function(_0x2ecd68){var _0x134ee9=this;return new Promise(function(_0x31626c,_0x2f37fc){var _0x3db8b3;var _0x264e6e;var _0x35e7f3;var _0x17bab9;return db[_0x9bc9('0x1e')][_0x9bc9('0x3d')]({'where':_0x2ecd68[_0x9bc9('0x20')][_0x9bc9('0x22')]||{},'attributes':['id',_0x9bc9('0x2c'),_0x9bc9('0x3b'),_0x9bc9('0x4d'),_0x9bc9('0x4e'),_0x9bc9('0x2d'),_0x9bc9('0x4f'),_0x9bc9('0x2e')]})[_0x9bc9('0x13')](function(_0xdc7944){if(_0xdc7944){_0x3db8b3=_0xdc7944;_0x17bab9=_0x2ecd68[_0x9bc9('0x39')][_0x9bc9('0x2e')]?_0x2ecd68[_0x9bc9('0x39')][_0x9bc9('0x2e')]:util[_0x9bc9('0x33')](_0x9bc9('0x38'),_0x3db8b3[_0x9bc9('0x2c')]);return db[_0x9bc9('0x1e')][_0x9bc9('0x50')]({'where':{'role':_0x9bc9('0x51'),'online':!![],'id':{'$ne':_0x3db8b3['id']}}});}})[_0x9bc9('0x13')](function(_0x254029){if(_0x254029){_0x35e7f3=_0x254029;return require('../../config/license/util')['getLicense']();}})[_0x9bc9('0x13')](function(_0x648241){if(_0x648241&&_0x648241[_0x9bc9('0x52')]&&_0x35e7f3>=_0x648241[_0x9bc9('0x52')]){throw new Error(_0x9bc9('0x53'));}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x3db8b3[_0x9bc9('0x2c')]},'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return _0x3db8b3[_0x9bc9('0x54')]({'raw':!![]});}})[_0x9bc9('0x13')](function(_0x1e105a){if(_0x3db8b3){if(_0x1e105a){var _0x51a32e=[];_0x264e6e=_0x1e105a;if(_0x264e6e['length']){for(var _0x30039b=0x0;_0x30039b<_0x264e6e[_0x9bc9('0x32')];_0x30039b++){_0x51a32e[_0x9bc9('0x48')](db[_0x9bc9('0x41')][_0x9bc9('0x55')]({'membername':_0x3db8b3['name'],'UserId':_0x3db8b3['id'],'queue_name':_0x264e6e[_0x30039b][_0x9bc9('0x2c')],'VoiceQueueId':_0x264e6e[_0x30039b]['id'],'interface':_0x17bab9,'paused':_0x3db8b3[_0x9bc9('0x4f')]||![],'penalty':_0x264e6e[_0x30039b][_0x9bc9('0x56')]||0x0}));}return BPromise['all'](_0x51a32e);}}}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return db[_0x9bc9('0x30')]['findAll']({'where':{'membername':_0x3db8b3[_0x9bc9('0x2c')],'exitAt':null}});}})[_0x9bc9('0x13')](function(_0x131764){if(_0x3db8b3){if(_0x131764&&_0x131764[_0x9bc9('0x32')]){var _0x119c72=[];_0x131764['forEach'](function(_0xa0d404){_0x119c72['push'](_0xa0d404['update']({'exitAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34'))}));});return BPromise[_0x9bc9('0x49')](_0x119c72);}}})['then'](function(_0x38489d){if(_0x3db8b3){var _0x339490=[];var _0xb52a99=[];var _0xcae228=utils[_0x9bc9('0x36')]();var _0x2075dd={'membername':_0x3db8b3[_0x9bc9('0x2c')],'interface':_0x17bab9,'enterAt':moment()[_0x9bc9('0x33')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x3db8b3[_0x9bc9('0x3b')],'internal':_0x3db8b3['internal']};_0xcae228['forEach'](function(_0x51f34b){_0x339490[_0x9bc9('0x48')](_['merge']({'channel':_0x51f34b,'type':_0x9bc9('0x57'),'data1':'callysquare','data2':_0x17bab9},_0x2075dd));if(_0x3db8b3[_0x9bc9('0x4f')]){_0xb52a99[_0x9bc9('0x48')](_[_0x9bc9('0x58')]({'channel':_0x51f34b,'type':_0x9bc9('0x31'),'data1':_0x9bc9('0x59')},_0x2075dd));}});return db[_0x9bc9('0x30')][_0x9bc9('0x5a')](_0x339490['concat'](_0xb52a99),{'individualHooks':!![]});}})[_0x9bc9('0x13')](function(){if(_0x3db8b3){return _0x3db8b3['update']({'online':!![],'lastLoginAt':moment()[_0x9bc9('0x33')](_0x9bc9('0x34')),'voicePause':_0x3db8b3[_0x9bc9('0x4f')]||![],'mailPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'chatPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'faxPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'smsPause':_0x3db8b3['loginInPause']||![],'openchannelPause':_0x3db8b3[_0x9bc9('0x4f')]||![],'pauseType':_0x3db8b3[_0x9bc9('0x4f')]?_0x9bc9('0x59'):null,'lastPauseAt':moment()['format'](_0x9bc9('0x34')),'interface':_0x17bab9});}})[_0x9bc9('0x13')](function(_0x31666f){_0x31626c(_0x31666f);})['catch'](function(_0x24fe40){_0x2f37fc(_0x134ee9[_0x9bc9('0x1a')](0x1f4,_0x24fe40['message']));});});};
\ No newline at end of file
index f2b8d82..9f5e820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ec7=['remove','update','emit','removeListener','register','user:'];(function(_0x3ac1eb,_0x469d68){var _0x155aca=function(_0x2cfb94){while(--_0x2cfb94){_0x3ac1eb['push'](_0x3ac1eb['shift']());}};_0x155aca(++_0x469d68);}(_0x4ec7,0x1b6));var _0x74ec=function(_0x3fbce4,_0x51f0b9){_0x3fbce4=_0x3fbce4-0x0;var _0x2712d2=_0x4ec7[_0x3fbce4];return _0x2712d2;};'use strict';var UserEvents=require('./user.events');var events=['save',_0x74ec('0x0'),_0x74ec('0x1')];function createListener(_0x2cdfd3,_0x28c200){return function(_0x1751e9){_0x28c200[_0x74ec('0x2')](_0x2cdfd3,_0x1751e9);};}function removeListener(_0x3a9137,_0x212957){return function(){UserEvents[_0x74ec('0x3')](_0x3a9137,_0x212957);};}exports[_0x74ec('0x4')]=function(_0x5bbf4b){for(var _0x58be9a=0x0,_0x18300a=events['length'];_0x58be9a<_0x18300a;_0x58be9a++){var _0x471033=events[_0x58be9a];var _0xff0d58=createListener(_0x74ec('0x5')+_0x471033,_0x5bbf4b);UserEvents['on'](_0x471033,_0xff0d58);}};
\ No newline at end of file
+var _0xfdf9=['./user.events','save','remove','update','emit','removeListener','register','length'];(function(_0x5c77d4,_0x721743){var _0x2f14ae=function(_0x1e66d8){while(--_0x1e66d8){_0x5c77d4['push'](_0x5c77d4['shift']());}};_0x2f14ae(++_0x721743);}(_0xfdf9,0xb8));var _0x9fdf=function(_0x3f7dfc,_0x8f0dad){_0x3f7dfc=_0x3f7dfc-0x0;var _0x499d09=_0xfdf9[_0x3f7dfc];return _0x499d09;};'use strict';var UserEvents=require(_0x9fdf('0x0'));var events=[_0x9fdf('0x1'),_0x9fdf('0x2'),_0x9fdf('0x3')];function createListener(_0x3783db,_0x41b5ad){return function(_0x57cb75){_0x41b5ad[_0x9fdf('0x4')](_0x3783db,_0x57cb75);};}function removeListener(_0x968e7e,_0x22b4a9){return function(){UserEvents[_0x9fdf('0x5')](_0x968e7e,_0x22b4a9);};}exports[_0x9fdf('0x6')]=function(_0x3e6fce){for(var _0x127b58=0x0,_0x1715aa=events[_0x9fdf('0x7')];_0x127b58<_0x1715aa;_0x127b58++){var _0x9826e=events[_0x127b58];var _0x373acc=createListener('user:'+_0x9826e,_0x3e6fce);UserEvents['on'](_0x9826e,_0x373acc);}};
\ No newline at end of file
index 8d301c1..a7e60fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x19a83e,_0x48cceb){var _0x50a33d=function(_0x506849){while(--_0x506849){_0x19a83e['push'](_0x19a83e['shift']());}};_0x50a33d(++_0x48cceb);}(_0x70e0,0x17b));var _0x070e=function(_0xa77dfa,_0x2ac77a){_0xa77dfa=_0xa77dfa-0x0;var _0x2fdd22=_0x70e0[_0xa77dfa];return _0x2fdd22;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x29b3fa,_0x2b011b){var _0x110bef=function(_0x10f6da){while(--_0x10f6da){_0x29b3fa['push'](_0x29b3fa['shift']());}};_0x110bef(++_0x2b011b);}(_0xedd9,0xfc));var _0x9edd=function(_0x21dc5d,_0x19dbb2){_0x21dc5d=_0x21dc5d-0x0;var _0xfd6648=_0xedd9[_0x21dc5d];return _0xfd6648;};'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 9006424..0269570 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb984=['exports','INTEGER'];(function(_0x4cf7a9,_0x5a9282){var _0x4e5a78=function(_0x69d45e){while(--_0x69d45e){_0x4cf7a9['push'](_0x4cf7a9['shift']());}};_0x4e5a78(++_0x5a9282);}(_0xb984,0x196));var _0x4b98=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0xb984[_0xefd519];return _0x4bb882;};'use strict';var Sequelize=require('sequelize');module[_0x4b98('0x0')]={'penalty':{'type':Sequelize[_0x4b98('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index a429f6c..d861078 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd1=['UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./userChatQueue.attributes','exports','define'];(function(_0x4c722d,_0x23ac93){var _0x1e0481=function(_0x26d477){while(--_0x26d477){_0x4c722d['push'](_0x4c722d['shift']());}};_0x1e0481(++_0x23ac93);}(_0x8fd1,0x13a));var _0x18fd=function(_0x374ada,_0x27b3a5){_0x374ada=_0x374ada-0x0;var _0x449ed8=_0x8fd1[_0x374ada];return _0x449ed8;};'use strict';var _=require(_0x18fd('0x0'));var util=require('util');var logger=require(_0x18fd('0x1'))(_0x18fd('0x2'));var moment=require('moment');var BPromise=require(_0x18fd('0x3'));var rp=require(_0x18fd('0x4'));var fs=require('fs');var path=require(_0x18fd('0x5'));var rimraf=require(_0x18fd('0x6'));var config=require('../../config/environment');var attributes=require(_0x18fd('0x7'));module[_0x18fd('0x8')]=function(_0x4403d3,_0x247fa5){return _0x4403d3[_0x18fd('0x9')](_0x18fd('0xa'),attributes,{'tableName':_0x18fd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6bd6=['path','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2ecaf8,_0x5711b7){var _0x237841=function(_0x3d1326){while(--_0x3d1326){_0x2ecaf8['push'](_0x2ecaf8['shift']());}};_0x237841(++_0x5711b7);}(_0x6bd6,0xf6));var _0x66bd=function(_0x39acf8,_0x158e5a){_0x39acf8=_0x39acf8-0x0;var _0x378ac3=_0x6bd6[_0x39acf8];return _0x378ac3;};'use strict';var _=require(_0x66bd('0x0'));var util=require('util');var logger=require(_0x66bd('0x1'))(_0x66bd('0x2'));var moment=require(_0x66bd('0x3'));var BPromise=require(_0x66bd('0x4'));var rp=require(_0x66bd('0x5'));var fs=require('fs');var path=require(_0x66bd('0x6'));var rimraf=require('rimraf');var config=require(_0x66bd('0x7'));var attributes=require(_0x66bd('0x8'));module[_0x66bd('0x9')]=function(_0x133e41,_0x2e4e6e){return _0x133e41['define'](_0x66bd('0xa'),attributes,{'tableName':_0x66bd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0d21085..f8a83bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c38=['message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0x0c38,0xf3));var _0x80c3=function(_0x479b43,_0x5b35c0){_0x479b43=_0x479b43-0x0;var _0x31a3ad=_0x0c38[_0x479b43];return _0x31a3ad;};'use strict';var _=require(_0x80c3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x80c3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x80c3('0x2'));var db=require(_0x80c3('0x3'))['db'];var utils=require(_0x80c3('0x4'));var logger=require(_0x80c3('0x5'))(_0x80c3('0x6'));var config=require(_0x80c3('0x7'));var jayson=require(_0x80c3('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2d3eb5,_0x23a413,_0x2ff35e){return new BPromise(function(_0xfb7d2c,_0x2c949e){return client['request'](_0x2d3eb5,_0x2ff35e)[_0x80c3('0x9')](function(_0x20f482){logger[_0x80c3('0xa')](_0x80c3('0xb'),_0x23a413,_0x80c3('0xc'));logger['debug'](_0x80c3('0xd'),_0x23a413,_0x80c3('0xc'),JSON[_0x80c3('0xe')](_0x20f482));if(_0x20f482[_0x80c3('0xf')]){if(_0x20f482['error'][_0x80c3('0x10')]===0x1f4){logger['error'](_0x80c3('0xb'),_0x23a413,_0x20f482[_0x80c3('0xf')]['message']);return _0x2c949e(_0x20f482[_0x80c3('0xf')]['message']);}logger['error'](_0x80c3('0xb'),_0x23a413,_0x20f482[_0x80c3('0xf')]['message']);return _0xfb7d2c(_0x20f482[_0x80c3('0xf')][_0x80c3('0x11')]);}else{logger[_0x80c3('0xa')](_0x80c3('0xb'),_0x23a413,_0x80c3('0xc'));_0xfb7d2c(_0x20f482[_0x80c3('0x12')][_0x80c3('0x11')]);}})[_0x80c3('0x13')](function(_0x20e1a7){logger[_0x80c3('0xf')](_0x80c3('0xb'),_0x23a413,_0x20e1a7);_0x2c949e(_0x20e1a7);});});}
\ No newline at end of file
+var _0x18e9=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserChatQueue,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x1e7b16,_0x4607a1){var _0x37fadc=function(_0x1fc9ce){while(--_0x1fc9ce){_0x1e7b16['push'](_0x1e7b16['shift']());}};_0x37fadc(++_0x4607a1);}(_0x18e9,0x9b));var _0x918e=function(_0x580971,_0x10984d){_0x580971=_0x580971-0x0;var _0x16d873=_0x18e9[_0x580971];return _0x16d873;};'use strict';var _=require(_0x918e('0x0'));var util=require(_0x918e('0x1'));var moment=require(_0x918e('0x2'));var BPromise=require(_0x918e('0x3'));var rs=require(_0x918e('0x4'));var fs=require('fs');var Redis=require(_0x918e('0x5'));var db=require(_0x918e('0x6'))['db'];var utils=require(_0x918e('0x7'));var logger=require(_0x918e('0x8'))('rpc');var config=require(_0x918e('0x9'));var jayson=require(_0x918e('0xa'));var client=jayson[_0x918e('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c1ac7,_0x41b98e,_0x36b9fa){return new BPromise(function(_0x53d5a6,_0x3b031b){return client['request'](_0x5c1ac7,_0x36b9fa)[_0x918e('0xc')](function(_0xf9eee5){logger[_0x918e('0xd')]('UserChatQueue,\x20%s,\x20%s',_0x41b98e,_0x918e('0xe'));logger[_0x918e('0xf')](_0x918e('0x10'),_0x41b98e,_0x918e('0xe'),JSON[_0x918e('0x11')](_0xf9eee5));if(_0xf9eee5[_0x918e('0x12')]){if(_0xf9eee5[_0x918e('0x12')][_0x918e('0x13')]===0x1f4){logger['error']('UserChatQueue,\x20%s,\x20%s',_0x41b98e,_0xf9eee5['error']['message']);return _0x3b031b(_0xf9eee5[_0x918e('0x12')][_0x918e('0x14')]);}logger[_0x918e('0x12')](_0x918e('0x15'),_0x41b98e,_0xf9eee5['error'][_0x918e('0x14')]);return _0x53d5a6(_0xf9eee5[_0x918e('0x12')]['message']);}else{logger[_0x918e('0xd')](_0x918e('0x15'),_0x41b98e,'request\x20sent');_0x53d5a6(_0xf9eee5[_0x918e('0x16')][_0x918e('0x14')]);}})['catch'](function(_0x3522b6){logger[_0x918e('0x12')](_0x918e('0x15'),_0x41b98e,_0x3522b6);_0x3b031b(_0x3522b6);});});}
\ No newline at end of file
index 4204e04..3643e6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x12390d,_0x310733){var _0x1e7b3f=function(_0x31b0ed){while(--_0x31b0ed){_0x12390d['push'](_0x12390d['shift']());}};_0x1e7b3f(++_0x310733);}(_0x70e0,0x17b));var _0x070e=function(_0x399dc9,_0x38b950){_0x399dc9=_0x399dc9-0x0;var _0x23b136=_0x70e0[_0x399dc9];return _0x23b136;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5e4e11,_0x4efd08){var _0x1630df=function(_0x11e398){while(--_0x11e398){_0x5e4e11['push'](_0x5e4e11['shift']());}};_0x1630df(++_0x4efd08);}(_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 83cf77a..0e16e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3311=['INTEGER','STRING','sequelize','exports'];(function(_0x5f57e7,_0x152d2d){var _0x298bcf=function(_0x344096){while(--_0x344096){_0x5f57e7['push'](_0x5f57e7['shift']());}};_0x298bcf(++_0x152d2d);}(_0x3311,0x162));var _0x1331=function(_0x1e5763,_0x160133){_0x1e5763=_0x1e5763-0x0;var _0x779271=_0x3311[_0x1e5763];return _0x779271;};'use strict';var Sequelize=require(_0x1331('0x0'));module[_0x1331('0x1')]={'penalty':{'type':Sequelize[_0x1331('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1331('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x1331('0x3')]}};
\ No newline at end of file
+var _0xc043=['STRING','sequelize','exports','INTEGER'];(function(_0x55983c,_0x27489b){var _0x13287a=function(_0x53f614){while(--_0x53f614){_0x55983c['push'](_0x55983c['shift']());}};_0x13287a(++_0x27489b);}(_0xc043,0x149));var _0x3c04=function(_0x2e1cea,_0x487894){_0x2e1cea=_0x2e1cea-0x0;var _0x32861f=_0xc043[_0x2e1cea];return _0x32861f;};'use strict';var Sequelize=require(_0x3c04('0x0'));module[_0x3c04('0x1')]={'penalty':{'type':Sequelize[_0x3c04('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x3c04('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x3c04('0x3')]}};
\ No newline at end of file
index 254be2d..da3fd9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80d2=['rimraf','exports','UserFaxQueue','user_has_fax_queues','lodash','util','api','bluebird','request-promise','path'];(function(_0x5bd7b6,_0x448e11){var _0x8a7ae1=function(_0x2170d5){while(--_0x2170d5){_0x5bd7b6['push'](_0x5bd7b6['shift']());}};_0x8a7ae1(++_0x448e11);}(_0x80d2,0x158));var _0x280d=function(_0x1f4e80,_0x1bd195){_0x1f4e80=_0x1f4e80-0x0;var _0x9a9c86=_0x80d2[_0x1f4e80];return _0x9a9c86;};'use strict';var _=require(_0x280d('0x0'));var util=require(_0x280d('0x1'));var logger=require('../../config/logger')(_0x280d('0x2'));var moment=require('moment');var BPromise=require(_0x280d('0x3'));var rp=require(_0x280d('0x4'));var fs=require('fs');var path=require(_0x280d('0x5'));var rimraf=require(_0x280d('0x6'));var config=require('../../config/environment');var attributes=require('./userFaxQueue.attributes');module[_0x280d('0x7')]=function(_0x3ef6c5,_0x3f18a){return _0x3ef6c5['define'](_0x280d('0x8'),attributes,{'tableName':_0x280d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xea7c=['request-promise','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','UserFaxQueue','user_has_fax_queues','lodash','util','api','bluebird'];(function(_0x20def8,_0x44c7be){var _0x2a67b2=function(_0x1676e9){while(--_0x1676e9){_0x20def8['push'](_0x20def8['shift']());}};_0x2a67b2(++_0x44c7be);}(_0xea7c,0xbc));var _0xcea7=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0xea7c[_0x59ee6f];return _0x4c0979;};'use strict';var _=require(_0xcea7('0x0'));var util=require(_0xcea7('0x1'));var logger=require('../../config/logger')(_0xcea7('0x2'));var moment=require('moment');var BPromise=require(_0xcea7('0x3'));var rp=require(_0xcea7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xcea7('0x5'));var config=require(_0xcea7('0x6'));var attributes=require(_0xcea7('0x7'));module[_0xcea7('0x8')]=function(_0x23e826,_0x529529){return _0x23e826[_0xcea7('0x9')](_0xcea7('0xa'),attributes,{'tableName':_0xcea7('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 86c4bd4..b071513 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce8b=['request\x20sent','stringify','error','code','message','info','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s'];(function(_0xbb7389,_0x12b29d){var _0x12537b=function(_0x42a1f9){while(--_0x42a1f9){_0xbb7389['push'](_0xbb7389['shift']());}};_0x12537b(++_0x12b29d);}(_0xce8b,0x157));var _0xbce8=function(_0x515283,_0x813dea){_0x515283=_0x515283-0x0;var _0x38f836=_0xce8b[_0x515283];return _0x38f836;};'use strict';var _=require('lodash');var util=require(_0xbce8('0x0'));var moment=require(_0xbce8('0x1'));var BPromise=require(_0xbce8('0x2'));var rs=require(_0xbce8('0x3'));var fs=require('fs');var Redis=require(_0xbce8('0x4'));var db=require(_0xbce8('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xbce8('0x6'))(_0xbce8('0x7'));var config=require(_0xbce8('0x8'));var jayson=require(_0xbce8('0x9'));var client=jayson[_0xbce8('0xa')][_0xbce8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x7a6889,_0x368993,_0x945665){return new BPromise(function(_0x140af2,_0x2642b0){return client[_0xbce8('0xc')](_0x7a6889,_0x945665)[_0xbce8('0xd')](function(_0x19865e){logger['info'](_0xbce8('0xe'),_0x368993,'request\x20sent');logger[_0xbce8('0xf')](_0xbce8('0x10'),_0x368993,_0xbce8('0x11'),JSON[_0xbce8('0x12')](_0x19865e));if(_0x19865e[_0xbce8('0x13')]){if(_0x19865e[_0xbce8('0x13')][_0xbce8('0x14')]===0x1f4){logger['error'](_0xbce8('0xe'),_0x368993,_0x19865e[_0xbce8('0x13')][_0xbce8('0x15')]);return _0x2642b0(_0x19865e[_0xbce8('0x13')][_0xbce8('0x15')]);}logger[_0xbce8('0x13')](_0xbce8('0xe'),_0x368993,_0x19865e[_0xbce8('0x13')][_0xbce8('0x15')]);return _0x140af2(_0x19865e[_0xbce8('0x13')][_0xbce8('0x15')]);}else{logger[_0xbce8('0x16')](_0xbce8('0xe'),_0x368993,_0xbce8('0x11'));_0x140af2(_0x19865e[_0xbce8('0x17')][_0xbce8('0x15')]);}})['catch'](function(_0x3fc461){logger[_0xbce8('0x13')](_0xbce8('0xe'),_0x368993,_0x3fc461);_0x2642b0(_0x3fc461);});});}
\ No newline at end of file
+var _0x768e=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x52b016,_0x33ec6e){var _0x13e797=function(_0x40f31b){while(--_0x40f31b){_0x52b016['push'](_0x52b016['shift']());}};_0x13e797(++_0x33ec6e);}(_0x768e,0xb1));var _0xe768=function(_0x28fd72,_0x3da8f3){_0x28fd72=_0x28fd72-0x0;var _0x4a0a70=_0x768e[_0x28fd72];return _0x4a0a70;};'use strict';var _=require(_0xe768('0x0'));var util=require(_0xe768('0x1'));var moment=require(_0xe768('0x2'));var BPromise=require(_0xe768('0x3'));var rs=require(_0xe768('0x4'));var fs=require('fs');var Redis=require(_0xe768('0x5'));var db=require(_0xe768('0x6'))['db'];var utils=require(_0xe768('0x7'));var logger=require(_0xe768('0x8'))(_0xe768('0x9'));var config=require(_0xe768('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xe768('0xb')][_0xe768('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xb03f64,_0x15f19d,_0x21265f){return new BPromise(function(_0x377779,_0x25b988){return client[_0xe768('0xd')](_0xb03f64,_0x21265f)[_0xe768('0xe')](function(_0x8ce5a2){logger[_0xe768('0xf')](_0xe768('0x10'),_0x15f19d,_0xe768('0x11'));logger['debug'](_0xe768('0x12'),_0x15f19d,_0xe768('0x11'),JSON[_0xe768('0x13')](_0x8ce5a2));if(_0x8ce5a2[_0xe768('0x14')]){if(_0x8ce5a2['error'][_0xe768('0x15')]===0x1f4){logger[_0xe768('0x14')](_0xe768('0x10'),_0x15f19d,_0x8ce5a2[_0xe768('0x14')][_0xe768('0x16')]);return _0x25b988(_0x8ce5a2['error']['message']);}logger[_0xe768('0x14')](_0xe768('0x10'),_0x15f19d,_0x8ce5a2[_0xe768('0x14')][_0xe768('0x16')]);return _0x377779(_0x8ce5a2[_0xe768('0x14')][_0xe768('0x16')]);}else{logger[_0xe768('0xf')]('UserFaxQueue,\x20%s,\x20%s',_0x15f19d,_0xe768('0x11'));_0x377779(_0x8ce5a2[_0xe768('0x17')]['message']);}})[_0xe768('0x18')](function(_0x5348ed){logger[_0xe768('0x14')]('UserFaxQueue,\x20%s,\x20%s',_0x15f19d,_0x5348ed);_0x25b988(_0x5348ed);});});}
\ No newline at end of file
index 08415ce..a02ec9d 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(_0x5f5079,_0xa7acce){var _0x232086=function(_0x5ed517){while(--_0x5ed517){_0x5f5079['push'](_0x5f5079['shift']());}};_0x232086(++_0xa7acce);}(_0xe706,0xa3));var _0x6e70=function(_0xfa2f68,_0x23836e){_0xfa2f68=_0xfa2f68-0x0;var _0x252d9a=_0xe706[_0xfa2f68];return _0x252d9a;};'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 _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0xe052be,_0x393642){var _0x11ba22=function(_0x151a94){while(--_0x151a94){_0xe052be['push'](_0xe052be['shift']());}};_0x11ba22(++_0x393642);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index e1c9157..48bcbda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x542d=['INTEGER','exports'];(function(_0x2d093a,_0x7a6ed0){var _0x3a7db6=function(_0x5c5bcb){while(--_0x5c5bcb){_0x2d093a['push'](_0x2d093a['shift']());}};_0x3a7db6(++_0x7a6ed0);}(_0x542d,0x12f));var _0xd542=function(_0x5f54eb,_0x3ecebe){_0x5f54eb=_0x5f54eb-0x0;var _0x4a40b4=_0x542d[_0x5f54eb];return _0x4a40b4;};'use strict';var Sequelize=require('sequelize');module[_0xd542('0x0')]={'penalty':{'type':Sequelize[_0xd542('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd148=['INTEGER','exports'];(function(_0x52bdb8,_0x5d511f){var _0x2b8a04=function(_0x730be5){while(--_0x730be5){_0x52bdb8['push'](_0x52bdb8['shift']());}};_0x2b8a04(++_0x5d511f);}(_0xd148,0x8d));var _0x8d14=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd148[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x8d14('0x0')]={'penalty':{'type':Sequelize[_0x8d14('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index af0cee1..494d75f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6aa=['UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./userMailQueue.attributes','define'];(function(_0x138585,_0x45b088){var _0x58894f=function(_0x338021){while(--_0x338021){_0x138585['push'](_0x138585['shift']());}};_0x58894f(++_0x45b088);}(_0xe6aa,0x1d6));var _0xae6a=function(_0x53d8b5,_0x43fd53){_0x53d8b5=_0x53d8b5-0x0;var _0x5c8ec2=_0xe6aa[_0x53d8b5];return _0x5c8ec2;};'use strict';var _=require(_0xae6a('0x0'));var util=require(_0xae6a('0x1'));var logger=require(_0xae6a('0x2'))('api');var moment=require(_0xae6a('0x3'));var BPromise=require(_0xae6a('0x4'));var rp=require(_0xae6a('0x5'));var fs=require('fs');var path=require(_0xae6a('0x6'));var rimraf=require(_0xae6a('0x7'));var config=require(_0xae6a('0x8'));var attributes=require(_0xae6a('0x9'));module['exports']=function(_0x43af53,_0x1aac60){return _0x43af53[_0xae6a('0xa')](_0xae6a('0xb'),attributes,{'tableName':_0xae6a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x57bb=['api','moment','bluebird','request-promise','path','../../config/environment','./userMailQueue.attributes','exports','user_has_mail_queues','util','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x57bb,0x169));var _0xb57b=function(_0x166579,_0x30fea6){_0x166579=_0x166579-0x0;var _0x248858=_0x57bb[_0x166579];return _0x248858;};'use strict';var _=require('lodash');var util=require(_0xb57b('0x0'));var logger=require(_0xb57b('0x1'))(_0xb57b('0x2'));var moment=require(_0xb57b('0x3'));var BPromise=require(_0xb57b('0x4'));var rp=require(_0xb57b('0x5'));var fs=require('fs');var path=require(_0xb57b('0x6'));var rimraf=require('rimraf');var config=require(_0xb57b('0x7'));var attributes=require(_0xb57b('0x8'));module[_0xb57b('0x9')]=function(_0x20b1cf,_0x3d7a1b){return _0x20b1cf['define']('UserMailQueue',attributes,{'tableName':_0xb57b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb363dc..d12daba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['rpc','../../config/environment','jayson/promise','client','http','request','then','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','ioredis','../../mysqldb','../../config/logger'];(function(_0x13815a,_0x50e9a5){var _0x57546b=function(_0x426b37){while(--_0x426b37){_0x13815a['push'](_0x13815a['shift']());}};_0x57546b(++_0x50e9a5);}(_0x55ca,0x126));var _0xa55c=function(_0x3f6bab,_0x47fdb0){_0x3f6bab=_0x3f6bab-0x0;var _0x26d34b=_0x55ca[_0x3f6bab];return _0x26d34b;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa55c('0x2'));var db=require(_0xa55c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xa55c('0x4'))(_0xa55c('0x5'));var config=require(_0xa55c('0x6'));var jayson=require(_0xa55c('0x7'));var client=jayson[_0xa55c('0x8')][_0xa55c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x36b623,_0x4d0624,_0x2121fd){return new BPromise(function(_0x2537f0,_0x57e069){return client[_0xa55c('0xa')](_0x36b623,_0x2121fd)[_0xa55c('0xb')](function(_0x52a3bc){logger['info'](_0xa55c('0xc'),_0x4d0624,_0xa55c('0xd'));logger[_0xa55c('0xe')](_0xa55c('0xf'),_0x4d0624,_0xa55c('0xd'),JSON[_0xa55c('0x10')](_0x52a3bc));if(_0x52a3bc[_0xa55c('0x11')]){if(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x12')]===0x1f4){logger[_0xa55c('0x11')]('UserMailQueue,\x20%s,\x20%s',_0x4d0624,_0x52a3bc['error'][_0xa55c('0x13')]);return _0x57e069(_0x52a3bc['error']['message']);}logger['error'](_0xa55c('0xc'),_0x4d0624,_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);return _0x2537f0(_0x52a3bc[_0xa55c('0x11')][_0xa55c('0x13')]);}else{logger[_0xa55c('0x14')]('UserMailQueue,\x20%s,\x20%s',_0x4d0624,_0xa55c('0xd'));_0x2537f0(_0x52a3bc[_0xa55c('0x15')][_0xa55c('0x13')]);}})[_0xa55c('0x16')](function(_0x1c4cfd){logger[_0xa55c('0x11')](_0xa55c('0xc'),_0x4d0624,_0x1c4cfd);_0x57e069(_0x1c4cfd);});});}
\ No newline at end of file
+var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','UserMailQueue,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x3dca0b,_0x39a4e6){var _0x3171e8=function(_0x1357b6){while(--_0x1357b6){_0x3dca0b['push'](_0x3dca0b['shift']());}};_0x3171e8(++_0x39a4e6);}(_0x5fc3,0xa8));var _0x35fc=function(_0x119b3e,_0x588d50){_0x119b3e=_0x119b3e-0x0;var _0x1169ae=_0x5fc3[_0x119b3e];return _0x1169ae;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('UserMailQueue,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('UserMailQueue,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
index 690980f..1682b22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f97=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','isAuthenticated','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x4c7f15,_0x36f85e){var _0xaa7d33=function(_0x215bfe){while(--_0x215bfe){_0x4c7f15['push'](_0x4c7f15['shift']());}};_0xaa7d33(++_0x36f85e);}(_0x8f97,0x159));var _0x78f9=function(_0x4b075e,_0x57874c){_0x4b075e=_0x4b075e-0x0;var _0x31385c=_0x8f97[_0x4b075e];return _0x31385c;};'use strict';var multer=require(_0x78f9('0x0'));var util=require(_0x78f9('0x1'));var path=require(_0x78f9('0x2'));var timeout=require(_0x78f9('0x3'));var express=require(_0x78f9('0x4'));var router=express[_0x78f9('0x5')]();var fs_extra=require(_0x78f9('0x6'));var auth=require(_0x78f9('0x7'));var interaction=require(_0x78f9('0x8'));var config=require(_0x78f9('0x9'));var controller=require(_0x78f9('0xa'));router['post']('/',auth[_0x78f9('0xb')](),controller['sendUserNotification']);module[_0x78f9('0xc')]=router;
\ No newline at end of file
+var _0x47aa=['../../components/interaction/service','../../config/environment','./userNotification.controller','isAuthenticated','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x6ad637,_0xda3a21){var _0x1d08f1=function(_0x3f390c){while(--_0x3f390c){_0x6ad637['push'](_0x6ad637['shift']());}};_0x1d08f1(++_0xda3a21);}(_0x47aa,0x19e));var _0xa47a=function(_0x210e0e,_0x1df475){_0x210e0e=_0x210e0e-0x0;var _0x3351d7=_0x47aa[_0x210e0e];return _0x3351d7;};'use strict';var multer=require(_0xa47a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa47a('0x1'));var express=require(_0xa47a('0x2'));var router=express[_0xa47a('0x3')]();var fs_extra=require(_0xa47a('0x4'));var auth=require(_0xa47a('0x5'));var interaction=require(_0xa47a('0x6'));var config=require(_0xa47a('0x7'));var controller=require(_0xa47a('0x8'));router['post']('/',auth[_0xa47a('0x9')](),controller['sendUserNotification']);module['exports']=router;
\ No newline at end of file
index c4a2a5a..df08672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b3c=['STRING','sequelize','exports','TEXT'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x8b3c,0x105));var _0xc8b3=function(_0x439d59,_0x11ccdf){_0x439d59=_0x439d59-0x0;var _0x3670c7=_0x8b3c[_0x439d59];return _0x3670c7;};'use strict';var Sequelize=require(_0xc8b3('0x0'));module[_0xc8b3('0x1')]={'body':{'type':Sequelize[_0xc8b3('0x2')]},'senderName':{'type':Sequelize[_0xc8b3('0x3')]},'recipientsId':{'type':Sequelize[_0xc8b3('0x2')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
+var _0xc164=['BOOLEAN','exports','TEXT','STRING'];(function(_0x48c100,_0x566f57){var _0x34dc16=function(_0x3133a7){while(--_0x3133a7){_0x48c100['push'](_0x48c100['shift']());}};_0x34dc16(++_0x566f57);}(_0xc164,0x79));var _0x4c16=function(_0x4f726e,_0x5a4952){_0x4f726e=_0x4f726e-0x0;var _0x4f0ea8=_0xc164[_0x4f726e];return _0x4f0ea8;};'use strict';var Sequelize=require('sequelize');module[_0x4c16('0x0')]={'body':{'type':Sequelize[_0x4c16('0x1')]},'senderName':{'type':Sequelize[_0x4c16('0x2')]},'recipientsId':{'type':Sequelize[_0x4c16('0x1')]},'recipientsDescription':{'type':Sequelize[_0x4c16('0x2')]},'beep':{'type':Sequelize[_0x4c16('0x3')]}};
\ No newline at end of file
index 46309b7..1978947 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0344=['json','offset','undefined','count','limit','set','Content-Range','reject','save','then','sendStatus','error','stack','name','send','sendUserNotification','body','hasOwnProperty','TemplateId','Sequelize','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','mailqueue','smsqueue','voicequeue','whatsappqueue','team','user','toLowerCase','fullname','isEmpty','beep','SenderId','recipientsId','sortBy','sequelize','transaction','UserNotification','senderName','recipient','emit','userNotification:send','catch','text','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','render','forEach','startCase','model','union','includes','queue','replace','Queue','ids','all','getAgents','map','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./userNotification.socket','register','status'];(function(_0x32cba4,_0x1f6074){var _0x191477=function(_0x1adc1b){while(--_0x1adc1b){_0x32cba4['push'](_0x32cba4['shift']());}};_0x191477(++_0x1f6074);}(_0x0344,0x15b));var _0x4034=function(_0x50d5c0,_0x579e8c){_0x50d5c0=_0x50d5c0-0x0;var _0x5519fb=_0x0344[_0x50d5c0];return _0x5519fb;};'use strict';var emlformat=require(_0x4034('0x0'));var rimraf=require(_0x4034('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4034('0x2'));var Mustache=require(_0x4034('0x3'));var util=require(_0x4034('0x4'));var path=require(_0x4034('0x5'));var sox=require(_0x4034('0x6'));var csv=require(_0x4034('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4034('0x8'));var _=require('lodash');var squel=require(_0x4034('0x9'));var crypto=require('crypto');var jsforce=require(_0x4034('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x4034('0xb'));var Papa=require(_0x4034('0xc'));var Redis=require(_0x4034('0xd'));var authService=require(_0x4034('0xe'));var qs=require(_0x4034('0xf'));var as=require(_0x4034('0x10'));var hardwareService=require(_0x4034('0x11'));var logger=require(_0x4034('0x12'))(_0x4034('0x13'));var utils=require(_0x4034('0x14'));var config=require(_0x4034('0x15'));var licenseUtil=require(_0x4034('0x16'));var db=require(_0x4034('0x17'))['db'];config[_0x4034('0x18')]=_['defaults'](config[_0x4034('0x18')],{'host':_0x4034('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4034('0x18')]));require(_0x4034('0x1a'))[_0x4034('0x1b')](socket);function respondWithStatusCode(_0x4b6cf6,_0x1d5cd5){_0x1d5cd5=_0x1d5cd5||0xcc;return function(_0x56316a){if(_0x56316a){return _0x4b6cf6['sendStatus'](_0x1d5cd5);}return _0x4b6cf6[_0x4034('0x1c')](_0x1d5cd5)['end']();};}function respondWithResult(_0x4a20a2,_0x151ce1){_0x151ce1=_0x151ce1||0xc8;return function(_0x190dc4){if(_0x190dc4){return _0x4a20a2[_0x4034('0x1c')](_0x151ce1)[_0x4034('0x1d')](_0x190dc4);}};}function respondWithFilteredResult(_0x3eed98,_0x5972fa){return function(_0x1613e5){if(_0x1613e5){var _0x1518f1=typeof _0x5972fa[_0x4034('0x1e')]===_0x4034('0x1f')&&typeof _0x5972fa['limit']===_0x4034('0x1f');var _0x310102=_0x1613e5['count'];var _0x47e25f=_0x1518f1?0x0:_0x5972fa['offset'];var _0x5a6287=_0x1518f1?_0x1613e5[_0x4034('0x20')]:_0x5972fa['offset']+_0x5972fa[_0x4034('0x21')];var _0x43162d;if(_0x5a6287>=_0x310102){_0x5a6287=_0x310102;_0x43162d=0xc8;}else{_0x43162d=0xce;}_0x3eed98[_0x4034('0x1c')](_0x43162d);return _0x3eed98[_0x4034('0x22')](_0x4034('0x23'),_0x47e25f+'-'+_0x5a6287+'/'+_0x310102)['json'](_0x1613e5);}return null;};}function patchUpdates(_0x2963e1){return function(_0x42e24d){try{jsonpatch['apply'](_0x42e24d,_0x2963e1,!![]);}catch(_0x2714fc){return BPromise[_0x4034('0x24')](_0x2714fc);}return _0x42e24d[_0x4034('0x25')]();};}function saveUpdates(_0x38cdd3,_0x4f34f7){return function(_0x108def){if(_0x108def){return _0x108def['update'](_0x38cdd3)[_0x4034('0x26')](function(_0x43f64c){return _0x43f64c;});}return null;};}function removeEntity(_0x301e03,_0x591f3f){return function(_0x1ba2f6){if(_0x1ba2f6){return _0x1ba2f6['destroy']()[_0x4034('0x26')](function(){_0x301e03['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x23f0aa,_0x280539){return function(_0x368fea){if(!_0x368fea){_0x23f0aa[_0x4034('0x27')](0x194);}return _0x368fea;};}function handleError(_0x1c0de8,_0x487c7b){_0x487c7b=_0x487c7b||0x1f4;return function(_0x5ac28d){logger[_0x4034('0x28')](_0x5ac28d[_0x4034('0x29')]);if(_0x5ac28d[_0x4034('0x2a')]){delete _0x5ac28d[_0x4034('0x2a')];}_0x1c0de8[_0x4034('0x1c')](_0x487c7b)[_0x4034('0x2b')](_0x5ac28d);};}exports[_0x4034('0x2c')]=function(_0x4037fb,_0x2a8fbb,_0x584db7){if(!_0x4037fb[_0x4034('0x2d')][_0x4034('0x2e')]('text')&&!_0x4037fb['body']['hasOwnProperty'](_0x4034('0x2f'))){throw new db[(_0x4034('0x30'))]['ValidationError'](_0x4034('0x31'));}else{if(_0x4037fb[_0x4034('0x2d')][_0x4034('0x2e')](_0x4034('0x2f'))&&!_0x4037fb['body'][_0x4034('0x2e')](_0x4034('0x32'))){throw new db['Sequelize'][(_0x4034('0x33'))](_0x4034('0x34'));}if(!_0x4037fb[_0x4034('0x2d')][_0x4034('0x2e')](_0x4034('0x35'))){throw new db[(_0x4034('0x30'))]['ValidationError'](_0x4034('0x36'));}else{try{var _0x587527=JSON[_0x4034('0x37')](_0x4037fb[_0x4034('0x2d')][_0x4034('0x35')]);}catch(_0x2dc469){logger[_0x4034('0x28')](_0x2dc469);throw new db['Sequelize'][(_0x4034('0x33'))](_0x4034('0x38'));}var _0x1546ff=['chatqueue','faxqueue',_0x4034('0x39'),'openchannelqueue',_0x4034('0x3a'),_0x4034('0x3b'),_0x4034('0x3c'),_0x4034('0x3d'),_0x4034('0x3e')];if(_['some'](_0x587527,function(_0x18b8da){return!_['includes'](_0x1546ff,_0x18b8da['model'][_0x4034('0x3f')]());})){throw new db[(_0x4034('0x30'))]['ValidationError']('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x124aac={};_0x124aac['senderName']=_0x4037fb['body'][_0x4034('0x2e')]('senderName')?_0x4037fb[_0x4034('0x2d')]['senderName']:_0x4037fb[_0x4034('0x3e')][_0x4034('0x40')];_0x124aac['recipientsDescription']=_[_0x4034('0x41')](_0x4037fb[_0x4034('0x2d')]['recipientsDescription'])?null:_0x4037fb[_0x4034('0x2d')]['recipientsDescription'];_0x124aac[_0x4034('0x42')]=_0x4037fb[_0x4034('0x2d')][_0x4034('0x42')]||![];_0x124aac[_0x4034('0x43')]=_0x4037fb[_0x4034('0x3e')]['id'];return getContent(_0x4037fb[_0x4034('0x2d')])['then'](function(_0x4c2a58){_0x124aac[_0x4034('0x2d')]=_0x4c2a58;return getRecipients(_0x587527);})['then'](function(_0xcf7cab){_0x124aac[_0x4034('0x44')]=_[_0x4034('0x45')](_0xcf7cab)['join'](',');return db[_0x4034('0x46')][_0x4034('0x47')](function(_0x482a14){return db[_0x4034('0x48')]['create'](_0x124aac,{'raw':!![],'transaction':_0x482a14})[_0x4034('0x26')](function(_0x1df32c){var _0x25e3d4={'sender':_0x124aac[_0x4034('0x49')],'description':_0x124aac['recipientsDescription'],'content':_0x124aac[_0x4034('0x2d')],'beep':_0x124aac[_0x4034('0x42')]};_0xcf7cab['forEach'](function(_0x336875){_0x25e3d4[_0x4034('0x4a')]=_0x336875;socket[_0x4034('0x4b')](_0x4034('0x4c'),_0x25e3d4);});return _0x1df32c;});});})[_0x4034('0x26')](respondWithResult(_0x2a8fbb,0xc9))[_0x4034('0x4d')](handleError(_0x2a8fbb,null));};function getContent(_0x515c8b){return new BPromise(function(_0x127c2c,_0x47479e){if(_0x515c8b[_0x4034('0x4e')]){_0x127c2c(_0x515c8b[_0x4034('0x4e')]);return;}return db['Template'][_0x4034('0x4f')]({'attributes':['html'],'where':{'id':_0x515c8b['TemplateId']},'raw':!![]})[_0x4034('0x26')](function(_0x446bd3){if(!_0x446bd3)throw new db['Sequelize'][(_0x4034('0x33'))](_0x4034('0x50'));var _0x1c41f=Mustache[_0x4034('0x51')](_0x446bd3['html'],_0x515c8b[_0x4034('0x32')]);_0x127c2c(_0x1c41f);})[_0x4034('0x4d')](function(_0x2aba02){_0x47479e(_0x2aba02);});});}function getRecipients(_0x161b12){return new BPromise(function(_0x26c948,_0x4f440b){var _0x3208cc=[];var _0x579538=[];_0x161b12[_0x4034('0x52')](function(_0x6631bb){var _0x5e8236=_[_0x4034('0x53')](_0x6631bb[_0x4034('0x54')][_0x4034('0x3f')]());if(_0x5e8236==='User'){_0x3208cc=_[_0x4034('0x55')](_0x3208cc,_0x6631bb['ids']);}else{if(_[_0x4034('0x56')](_0x5e8236,_0x4034('0x57')))_0x5e8236=_0x5e8236[_0x4034('0x58')](_0x4034('0x57'),_0x4034('0x59'));_0x6631bb[_0x4034('0x5a')][_0x4034('0x52')](function(_0x55e385){_0x579538['push'](getAgents(_0x5e8236,_0x55e385));});}});return BPromise[_0x4034('0x5b')](_0x579538)[_0x4034('0x26')](function(_0x11d5dd){_0x3208cc=_[_0x4034('0x55')](_0x3208cc,_['flatten'](_0x11d5dd));_0x26c948(_0x3208cc);})[_0x4034('0x4d')](function(_0x4dd965){_0x4f440b(_0x4dd965);});});}function getAgents(_0x3afbd4,_0xd23abf){return new BPromise(function(_0x5896cb,_0xe56676){return db[_0x3afbd4][_0x4034('0x4f')]({'where':{'id':_0xd23abf}})['then'](function(_0xa0399c){return _0xa0399c[_0x4034('0x5c')]({'attributes':['id'],'raw':!![]})['then'](function(_0x133f0f){var _0x1c4c42=_[_0x4034('0x5d')](_0x133f0f,'id');_0x5896cb(_0x1c4c42);});})['catch'](function(_0x426e38){_0xe56676(_0x426e38);});});}
\ No newline at end of file
+var _0x67c8=['team','user','some','includes','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','transaction','create','forEach','recipient','emit','userNotification:send','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','User','union','ids','queue','replace','Queue','push','all','getAgents','map','eml-format','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./userNotification.socket','sendStatus','status','end','json','offset','limit','count','Content-Range','reject','save','then','destroy','error','name','send','sendUserNotification','body','hasOwnProperty','text','TemplateId','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','Missing\x20\x27view\x27\x20parameter','recipients','Sequelize','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue'];(function(_0x2f58e9,_0x564036){var _0x1cb03b=function(_0x43b54a){while(--_0x43b54a){_0x2f58e9['push'](_0x2f58e9['shift']());}};_0x1cb03b(++_0x564036);}(_0x67c8,0x159));var _0x867c=function(_0x3ecf9c,_0x112cc8){_0x3ecf9c=_0x3ecf9c-0x0;var _0x4d65c9=_0x67c8[_0x3ecf9c];return _0x4d65c9;};'use strict';var emlformat=require(_0x867c('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x867c('0x1'));var rp=require(_0x867c('0x2'));var moment=require(_0x867c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x867c('0x4'));var util=require('util');var path=require(_0x867c('0x5'));var sox=require(_0x867c('0x6'));var csv=require(_0x867c('0x7'));var ejs=require(_0x867c('0x8'));var fs=require('fs');var fs_extra=require(_0x867c('0x9'));var _=require(_0x867c('0xa'));var squel=require(_0x867c('0xb'));var crypto=require(_0x867c('0xc'));var jsforce=require(_0x867c('0xd'));var deskjs=require(_0x867c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x867c('0xf'));var Papa=require('papaparse');var Redis=require(_0x867c('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x867c('0x11'));var hardwareService=require(_0x867c('0x12'));var logger=require('../../config/logger')(_0x867c('0x13'));var utils=require(_0x867c('0x14'));var config=require(_0x867c('0x15'));var licenseUtil=require(_0x867c('0x16'));var db=require(_0x867c('0x17'))['db'];config['redis']=_['defaults'](config[_0x867c('0x18')],{'host':_0x867c('0x19'),'port':0x18eb});var socket=require(_0x867c('0x1a'))(new Redis(config[_0x867c('0x18')]));require(_0x867c('0x1b'))['register'](socket);function respondWithStatusCode(_0x2ebeb8,_0x4ebb78){_0x4ebb78=_0x4ebb78||0xcc;return function(_0x53b29e){if(_0x53b29e){return _0x2ebeb8[_0x867c('0x1c')](_0x4ebb78);}return _0x2ebeb8[_0x867c('0x1d')](_0x4ebb78)[_0x867c('0x1e')]();};}function respondWithResult(_0x3e7389,_0x4abceb){_0x4abceb=_0x4abceb||0xc8;return function(_0x4b31e8){if(_0x4b31e8){return _0x3e7389[_0x867c('0x1d')](_0x4abceb)[_0x867c('0x1f')](_0x4b31e8);}};}function respondWithFilteredResult(_0x539dc4,_0x41a5ac){return function(_0x1b65e9){if(_0x1b65e9){var _0x1aa08f=typeof _0x41a5ac[_0x867c('0x20')]==='undefined'&&typeof _0x41a5ac[_0x867c('0x21')]==='undefined';var _0x28e2b3=_0x1b65e9['count'];var _0x264257=_0x1aa08f?0x0:_0x41a5ac[_0x867c('0x20')];var _0x1e93d2=_0x1aa08f?_0x1b65e9[_0x867c('0x22')]:_0x41a5ac['offset']+_0x41a5ac[_0x867c('0x21')];var _0x283bff;if(_0x1e93d2>=_0x28e2b3){_0x1e93d2=_0x28e2b3;_0x283bff=0xc8;}else{_0x283bff=0xce;}_0x539dc4[_0x867c('0x1d')](_0x283bff);return _0x539dc4['set'](_0x867c('0x23'),_0x264257+'-'+_0x1e93d2+'/'+_0x28e2b3)[_0x867c('0x1f')](_0x1b65e9);}return null;};}function patchUpdates(_0x120553){return function(_0x59852d){try{jsonpatch['apply'](_0x59852d,_0x120553,!![]);}catch(_0x39a5e0){return BPromise[_0x867c('0x24')](_0x39a5e0);}return _0x59852d[_0x867c('0x25')]();};}function saveUpdates(_0x75d6ee,_0x2445ff){return function(_0x4771cf){if(_0x4771cf){return _0x4771cf['update'](_0x75d6ee)[_0x867c('0x26')](function(_0x3a6ae3){return _0x3a6ae3;});}return null;};}function removeEntity(_0x3d8890,_0x593589){return function(_0x472fac){if(_0x472fac){return _0x472fac[_0x867c('0x27')]()[_0x867c('0x26')](function(){_0x3d8890['status'](0xcc)[_0x867c('0x1e')]();});}};}function handleEntityNotFound(_0xa87a83,_0x5d6270){return function(_0xeecdd0){if(!_0xeecdd0){_0xa87a83['sendStatus'](0x194);}return _0xeecdd0;};}function handleError(_0x442885,_0x3e24a9){_0x3e24a9=_0x3e24a9||0x1f4;return function(_0x59e781){logger[_0x867c('0x28')](_0x59e781['stack']);if(_0x59e781[_0x867c('0x29')]){delete _0x59e781[_0x867c('0x29')];}_0x442885[_0x867c('0x1d')](_0x3e24a9)[_0x867c('0x2a')](_0x59e781);};}exports[_0x867c('0x2b')]=function(_0x3a82a4,_0x5bb12e,_0x1408b6){if(!_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')](_0x867c('0x2e'))&&!_0x3a82a4['body'][_0x867c('0x2d')](_0x867c('0x2f'))){throw new db['Sequelize'][(_0x867c('0x30'))](_0x867c('0x31'));}else{if(_0x3a82a4[_0x867c('0x2c')]['hasOwnProperty'](_0x867c('0x2f'))&&!_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')](_0x867c('0x32'))){throw new db['Sequelize'][(_0x867c('0x30'))](_0x867c('0x33'));}if(!_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')](_0x867c('0x34'))){throw new db[(_0x867c('0x35'))]['ValidationError'](_0x867c('0x36'));}else{try{var _0x22a7a0=JSON[_0x867c('0x37')](_0x3a82a4[_0x867c('0x2c')][_0x867c('0x34')]);}catch(_0x582f83){logger['error'](_0x582f83);throw new db[(_0x867c('0x35'))][(_0x867c('0x30'))](_0x867c('0x38'));}var _0x44e7ba=[_0x867c('0x39'),_0x867c('0x3a'),_0x867c('0x3b'),_0x867c('0x3c'),_0x867c('0x3d'),_0x867c('0x3e'),'whatsappqueue',_0x867c('0x3f'),_0x867c('0x40')];if(_[_0x867c('0x41')](_0x22a7a0,function(_0x5886ec){return!_[_0x867c('0x42')](_0x44e7ba,_0x5886ec[_0x867c('0x43')][_0x867c('0x44')]());})){throw new db[(_0x867c('0x35'))][(_0x867c('0x30'))](_0x867c('0x45'));}}}var _0x5346f0={};_0x5346f0[_0x867c('0x46')]=_0x3a82a4[_0x867c('0x2c')][_0x867c('0x2d')]('senderName')?_0x3a82a4[_0x867c('0x2c')][_0x867c('0x46')]:_0x3a82a4[_0x867c('0x40')][_0x867c('0x47')];_0x5346f0[_0x867c('0x48')]=_[_0x867c('0x49')](_0x3a82a4[_0x867c('0x2c')][_0x867c('0x48')])?null:_0x3a82a4['body']['recipientsDescription'];_0x5346f0[_0x867c('0x4a')]=_0x3a82a4[_0x867c('0x2c')][_0x867c('0x4a')]||![];_0x5346f0[_0x867c('0x4b')]=_0x3a82a4[_0x867c('0x40')]['id'];return getContent(_0x3a82a4[_0x867c('0x2c')])[_0x867c('0x26')](function(_0x3abd3e){_0x5346f0[_0x867c('0x2c')]=_0x3abd3e;return getRecipients(_0x22a7a0);})[_0x867c('0x26')](function(_0xfa20f6){_0x5346f0[_0x867c('0x4c')]=_[_0x867c('0x4d')](_0xfa20f6)[_0x867c('0x4e')](',');return db['sequelize'][_0x867c('0x4f')](function(_0x38139f){return db['UserNotification'][_0x867c('0x50')](_0x5346f0,{'raw':!![],'transaction':_0x38139f})['then'](function(_0x4ad1a0){var _0x236a2b={'sender':_0x5346f0['senderName'],'description':_0x5346f0[_0x867c('0x48')],'content':_0x5346f0[_0x867c('0x2c')],'beep':_0x5346f0[_0x867c('0x4a')]};_0xfa20f6[_0x867c('0x51')](function(_0x7a976){_0x236a2b[_0x867c('0x52')]=_0x7a976;socket[_0x867c('0x53')](_0x867c('0x54'),_0x236a2b);});return _0x4ad1a0;});});})['then'](respondWithResult(_0x5bb12e,0xc9))['catch'](handleError(_0x5bb12e,null));};function getContent(_0x5eebe7){return new BPromise(function(_0x36a5e1,_0x9fad21){if(_0x5eebe7[_0x867c('0x2e')]){_0x36a5e1(_0x5eebe7[_0x867c('0x2e')]);return;}return db[_0x867c('0x55')][_0x867c('0x56')]({'attributes':[_0x867c('0x57')],'where':{'id':_0x5eebe7[_0x867c('0x2f')]},'raw':!![]})['then'](function(_0x1e7349){if(!_0x1e7349)throw new db[(_0x867c('0x35'))][(_0x867c('0x30'))](_0x867c('0x58'));var _0x3308f4=Mustache[_0x867c('0x59')](_0x1e7349[_0x867c('0x57')],_0x5eebe7[_0x867c('0x32')]);_0x36a5e1(_0x3308f4);})[_0x867c('0x5a')](function(_0xea1ef8){_0x9fad21(_0xea1ef8);});});}function getRecipients(_0x1c152a){return new BPromise(function(_0x42bfe7,_0x4c17ab){var _0xad2712=[];var _0x2cc753=[];_0x1c152a['forEach'](function(_0x38c56f){var _0x552e52=_[_0x867c('0x5b')](_0x38c56f[_0x867c('0x43')][_0x867c('0x44')]());if(_0x552e52===_0x867c('0x5c')){_0xad2712=_[_0x867c('0x5d')](_0xad2712,_0x38c56f[_0x867c('0x5e')]);}else{if(_[_0x867c('0x42')](_0x552e52,_0x867c('0x5f')))_0x552e52=_0x552e52[_0x867c('0x60')]('queue',_0x867c('0x61'));_0x38c56f[_0x867c('0x5e')][_0x867c('0x51')](function(_0x102e31){_0x2cc753[_0x867c('0x62')](getAgents(_0x552e52,_0x102e31));});}});return BPromise[_0x867c('0x63')](_0x2cc753)['then'](function(_0x16f29f){_0xad2712=_[_0x867c('0x5d')](_0xad2712,_['flatten'](_0x16f29f));_0x42bfe7(_0xad2712);})[_0x867c('0x5a')](function(_0x123dc0){_0x4c17ab(_0x123dc0);});});}function getAgents(_0x3f3726,_0x3dc33d){return new BPromise(function(_0x2646db,_0x362ac3){return db[_0x3f3726][_0x867c('0x56')]({'where':{'id':_0x3dc33d}})['then'](function(_0x292d94){return _0x292d94[_0x867c('0x64')]({'attributes':['id'],'raw':!![]})['then'](function(_0xb5d2c4){var _0x1cefb5=_[_0x867c('0x65')](_0xb5d2c4,'id');_0x2646db(_0x1cefb5);});})['catch'](function(_0x1b4933){_0x362ac3(_0x1b4933);});});}
\ No newline at end of file
index 99e5bc8..826467b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ed=['hasOwnProperty','hook','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit'];(function(_0x459b74,_0x5773bd){var _0x46cb16=function(_0x97867f){while(--_0x97867f){_0x459b74['push'](_0x459b74['shift']());}};_0x46cb16(++_0x5773bd);}(_0xb6ed,0x1d8));var _0xdb6e=function(_0x292835,_0x26cd15){_0x292835=_0x292835-0x0;var _0x376628=_0xb6ed[_0x292835];return _0x376628;};'use strict';var EventEmitter=require(_0xdb6e('0x0'));var UserNotification=require(_0xdb6e('0x1'))['db'][_0xdb6e('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xdb6e('0x3')](0x0);var events={'afterCreate':_0xdb6e('0x4'),'afterUpdate':_0xdb6e('0x5'),'afterDestroy':_0xdb6e('0x6')};function emitEvent(_0x331416){return function(_0x10cc04,_0x53f200,_0x4df390){UserNotificationEvents[_0xdb6e('0x7')](_0x331416+':'+_0x10cc04['id'],_0x10cc04);UserNotificationEvents[_0xdb6e('0x7')](_0x331416,_0x10cc04);_0x4df390(null);};}for(var e in events){if(events[_0xdb6e('0x8')](e)){var event=events[e];UserNotification[_0xdb6e('0x9')](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
+var _0xaee8=['exports','events','../../mysqldb','UserNotification','setMaxListeners','update','remove','emit','hasOwnProperty'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0xaee8,0x184));var _0x8aee=function(_0x295157,_0x4c5a00){_0x295157=_0x295157-0x0;var _0xf7a089=_0xaee8[_0x295157];return _0xf7a089;};'use strict';var EventEmitter=require(_0x8aee('0x0'));var UserNotification=require(_0x8aee('0x1'))['db'][_0x8aee('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0x8aee('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8aee('0x4'),'afterDestroy':_0x8aee('0x5')};function emitEvent(_0x432af2){return function(_0xef956d,_0x111a22,_0x256283){UserNotificationEvents['emit'](_0x432af2+':'+_0xef956d['id'],_0xef956d);UserNotificationEvents[_0x8aee('0x6')](_0x432af2,_0xef956d);_0x256283(null);};}for(var e in events){if(events[_0x8aee('0x7')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0x8aee('0x8')]=UserNotificationEvents;
\ No newline at end of file
index ec3e54d..ff565c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f0=['exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','./userNotification.attributes'];(function(_0x5e1e25,_0xdc1421){var _0x548e5f=function(_0x576360){while(--_0x576360){_0x5e1e25['push'](_0x5e1e25['shift']());}};_0x548e5f(++_0xdc1421);}(_0x19f0,0xa0));var _0x019f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x19f0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x019f('0x0'));var util=require(_0x019f('0x1'));var logger=require(_0x019f('0x2'))(_0x019f('0x3'));var moment=require(_0x019f('0x4'));var BPromise=require('bluebird');var rp=require(_0x019f('0x5'));var fs=require('fs');var path=require(_0x019f('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x019f('0x7'));module[_0x019f('0x8')]=function(_0x1c5420,_0x1b47be){return _0x1c5420[_0x019f('0x9')](_0x019f('0xa'),attributes,{'tableName':_0x019f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x019f('0xc'),'collate':_0x019f('0xd')});};
\ No newline at end of file
+var _0xff31=['define','UserNotification','userNotifications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./userNotification.attributes','exports'];(function(_0x52cc9b,_0x3f238d){var _0x117700=function(_0x10af5a){while(--_0x10af5a){_0x52cc9b['push'](_0x52cc9b['shift']());}};_0x117700(++_0x3f238d);}(_0xff31,0x1b1));var _0x1ff3=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xff31[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1ff3('0x0'));var util=require('util');var logger=require(_0x1ff3('0x1'))(_0x1ff3('0x2'));var moment=require(_0x1ff3('0x3'));var BPromise=require(_0x1ff3('0x4'));var rp=require(_0x1ff3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1ff3('0x6'));var attributes=require(_0x1ff3('0x7'));module[_0x1ff3('0x8')]=function(_0x224510,_0x11149e){return _0x224510[_0x1ff3('0x9')](_0x1ff3('0xa'),attributes,{'tableName':_0x1ff3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1ff3('0xc')});};
\ No newline at end of file
index 46b7f12..87c27ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x031a=['defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','info','debug','UserNotification,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','UserNotification,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis'];(function(_0x36915e,_0xbf511e){var _0x23988f=function(_0x2ea13f){while(--_0x2ea13f){_0x36915e['push'](_0x36915e['shift']());}};_0x23988f(++_0xbf511e);}(_0x031a,0x17d));var _0xa031=function(_0x50bbee,_0x4e2e44){_0x50bbee=_0x50bbee-0x0;var _0xa5a82f=_0x031a[_0x50bbee];return _0xa5a82f;};'use strict';var _=require(_0xa031('0x0'));var util=require('util');var moment=require(_0xa031('0x1'));var BPromise=require(_0xa031('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa031('0x3'));var db=require(_0xa031('0x4'))['db'];var utils=require(_0xa031('0x5'));var logger=require(_0xa031('0x6'))(_0xa031('0x7'));var config=require('../../config/environment');var jayson=require(_0xa031('0x8'));var client=jayson[_0xa031('0x9')]['http']({'port':0x232a});config[_0xa031('0xa')]=_[_0xa031('0xb')](config['redis'],{'host':_0xa031('0xc'),'port':0x18eb});var socket=require(_0xa031('0xd'))(new Redis(config['redis']));require(_0xa031('0xe'))[_0xa031('0xf')](socket);function respondWithRpcPromise(_0x52a79a,_0x1d056,_0x3fb1d6){return new BPromise(function(_0x4e1157,_0x5a1231){return client[_0xa031('0x10')](_0x52a79a,_0x3fb1d6)['then'](function(_0xb34254){logger[_0xa031('0x11')]('UserNotification,\x20%s,\x20%s',_0x1d056,'request\x20sent');logger[_0xa031('0x12')](_0xa031('0x13'),_0x1d056,_0xa031('0x14'),JSON[_0xa031('0x15')](_0xb34254));if(_0xb34254['error']){if(_0xb34254['error'][_0xa031('0x16')]===0x1f4){logger[_0xa031('0x17')]('UserNotification,\x20%s,\x20%s',_0x1d056,_0xb34254[_0xa031('0x17')][_0xa031('0x18')]);return _0x5a1231(_0xb34254['error'][_0xa031('0x18')]);}logger[_0xa031('0x17')]('UserNotification,\x20%s,\x20%s',_0x1d056,_0xb34254[_0xa031('0x17')][_0xa031('0x18')]);return _0x4e1157(_0xb34254[_0xa031('0x17')]['message']);}else{logger[_0xa031('0x11')](_0xa031('0x19'),_0x1d056,_0xa031('0x14'));_0x4e1157(_0xb34254[_0xa031('0x1a')][_0xa031('0x18')]);}})[_0xa031('0x1b')](function(_0x112f84){logger[_0xa031('0x17')](_0xa031('0x19'),_0x1d056,_0x112f84);_0x5a1231(_0x112f84);});});}
\ No newline at end of file
+var _0xee45=['request\x20sent','stringify','error','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','info','UserNotification,\x20%s,\x20%s','debug','UserNotification,\x20%s,\x20%s,\x20%s'];(function(_0x5802a9,_0x2a1320){var _0xa6132c=function(_0xe09e0){while(--_0xe09e0){_0x5802a9['push'](_0x5802a9['shift']());}};_0xa6132c(++_0x2a1320);}(_0xee45,0xe6));var _0x5ee4=function(_0x3ac1e2,_0x3d3057){_0x3ac1e2=_0x3ac1e2-0x0;var _0x4bbbc2=_0xee45[_0x3ac1e2];return _0x4bbbc2;};'use strict';var _=require('lodash');var util=require(_0x5ee4('0x0'));var moment=require(_0x5ee4('0x1'));var BPromise=require(_0x5ee4('0x2'));var rs=require(_0x5ee4('0x3'));var fs=require('fs');var Redis=require(_0x5ee4('0x4'));var db=require(_0x5ee4('0x5'))['db'];var utils=require(_0x5ee4('0x6'));var logger=require(_0x5ee4('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5ee4('0x8')][_0x5ee4('0x9')]({'port':0x232a});config[_0x5ee4('0xa')]=_[_0x5ee4('0xb')](config['redis'],{'host':_0x5ee4('0xc'),'port':0x18eb});var socket=require(_0x5ee4('0xd'))(new Redis(config['redis']));require(_0x5ee4('0xe'))[_0x5ee4('0xf')](socket);function respondWithRpcPromise(_0x8e8bf9,_0x3ecc37,_0x4a0733){return new BPromise(function(_0x436cd4,_0xd47e4c){return client['request'](_0x8e8bf9,_0x4a0733)['then'](function(_0x4bbfb6){logger[_0x5ee4('0x10')](_0x5ee4('0x11'),_0x3ecc37,'request\x20sent');logger[_0x5ee4('0x12')](_0x5ee4('0x13'),_0x3ecc37,_0x5ee4('0x14'),JSON[_0x5ee4('0x15')](_0x4bbfb6));if(_0x4bbfb6['error']){if(_0x4bbfb6['error']['code']===0x1f4){logger[_0x5ee4('0x16')]('UserNotification,\x20%s,\x20%s',_0x3ecc37,_0x4bbfb6[_0x5ee4('0x16')][_0x5ee4('0x17')]);return _0xd47e4c(_0x4bbfb6[_0x5ee4('0x16')][_0x5ee4('0x17')]);}logger[_0x5ee4('0x16')](_0x5ee4('0x11'),_0x3ecc37,_0x4bbfb6['error']['message']);return _0x436cd4(_0x4bbfb6[_0x5ee4('0x16')]['message']);}else{logger[_0x5ee4('0x10')](_0x5ee4('0x11'),_0x3ecc37,_0x5ee4('0x14'));_0x436cd4(_0x4bbfb6[_0x5ee4('0x18')][_0x5ee4('0x17')]);}})['catch'](function(_0x148ffd){logger[_0x5ee4('0x16')](_0x5ee4('0x11'),_0x3ecc37,_0x148ffd);_0xd47e4c(_0x148ffd);});});}
\ No newline at end of file
index b561d69..9341fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f2d=['removeListener','register','length','userNotification:','./userNotification.events','save','update','emit'];(function(_0x33da1e,_0x5e3280){var _0x17edb2=function(_0x13cd72){while(--_0x13cd72){_0x33da1e['push'](_0x33da1e['shift']());}};_0x17edb2(++_0x5e3280);}(_0x0f2d,0xb4));var _0xd0f2=function(_0x4f0c2b,_0x533898){_0x4f0c2b=_0x4f0c2b-0x0;var _0x48a7c7=_0x0f2d[_0x4f0c2b];return _0x48a7c7;};'use strict';var UserNotificationEvents=require(_0xd0f2('0x0'));var events=[_0xd0f2('0x1'),'remove',_0xd0f2('0x2')];function createListener(_0x431f3d,_0x4f60a1){return function(_0x1b8ca0){_0x4f60a1[_0xd0f2('0x3')](_0x431f3d,_0x1b8ca0);};}function removeListener(_0xf07c00,_0x2011eb){return function(){UserNotificationEvents[_0xd0f2('0x4')](_0xf07c00,_0x2011eb);};}exports[_0xd0f2('0x5')]=function(_0x32781e){for(var _0x4aaee5=0x0,_0x506308=events[_0xd0f2('0x6')];_0x4aaee5<_0x506308;_0x4aaee5++){var _0x3abdb6=events[_0x4aaee5];var _0x56f5bd=createListener(_0xd0f2('0x7')+_0x3abdb6,_0x32781e);UserNotificationEvents['on'](_0x3abdb6,_0x56f5bd);}};
\ No newline at end of file
+var _0x739f=['removeListener','length','save','remove','update'];(function(_0x3401cc,_0x1eb419){var _0x535d6b=function(_0x36792e){while(--_0x36792e){_0x3401cc['push'](_0x3401cc['shift']());}};_0x535d6b(++_0x1eb419);}(_0x739f,0x1ba));var _0xf739=function(_0x551749,_0x595bab){_0x551749=_0x551749-0x0;var _0x5ba2a0=_0x739f[_0x551749];return _0x5ba2a0;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0xf739('0x0'),_0xf739('0x1'),_0xf739('0x2')];function createListener(_0x3f8535,_0x494dff){return function(_0x1088bc){_0x494dff['emit'](_0x3f8535,_0x1088bc);};}function removeListener(_0x120ce1,_0x59ccb5){return function(){UserNotificationEvents[_0xf739('0x3')](_0x120ce1,_0x59ccb5);};}exports['register']=function(_0x1f783b){for(var _0x4d8130=0x0,_0x366639=events[_0xf739('0x4')];_0x4d8130<_0x366639;_0x4d8130++){var _0x5c6049=events[_0x4d8130];var _0x1342e8=createListener('userNotification:'+_0x5c6049,_0x1f783b);UserNotificationEvents['on'](_0x5c6049,_0x1342e8);}};
\ No newline at end of file
index f76e471..aa7bf77 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(_0x36962c,_0x110cd3){var _0x1fc013=function(_0x5c632e){while(--_0x5c632e){_0x36962c['push'](_0x36962c['shift']());}};_0x1fc013(++_0x110cd3);}(_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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x400dcd,_0x451135){var _0x1e6e98=function(_0x5b3f64){while(--_0x5b3f64){_0x400dcd['push'](_0x400dcd['shift']());}};_0x1e6e98(++_0x451135);}(_0x70e0,0x17b));var _0x070e=function(_0x5ea95d,_0x159813){_0x5ea95d=_0x5ea95d-0x0;var _0x104e32=_0x70e0[_0x5ea95d];return _0x104e32;};'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 2cf8c27..4d3795b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5dfe=['sequelize','exports','INTEGER'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x5dfe,0x1a4));var _0xe5df=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5dfe[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xe5df('0x0'));module[_0xe5df('0x1')]={'penalty':{'type':Sequelize[_0xe5df('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x5eff=['INTEGER'];(function(_0x1630e0,_0x5d7ca4){var _0x236652=function(_0x5c4bbd){while(--_0x5c4bbd){_0x1630e0['push'](_0x1630e0['shift']());}};_0x236652(++_0x5d7ca4);}(_0x5eff,0x156));var _0xf5ef=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x5eff[_0x1e4360];return _0x31e6b4;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0xf5ef('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index b8e0bba..7a17e51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9638=['rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','UserOpenchannelQueue','lodash','util','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9638,0x186));var _0x8963=function(_0x1d5ba8,_0x412a52){_0x1d5ba8=_0x1d5ba8-0x0;var _0x1022a2=_0x9638[_0x1d5ba8];return _0x1022a2;};'use strict';var _=require(_0x8963('0x0'));var util=require(_0x8963('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8963('0x2'));var BPromise=require(_0x8963('0x3'));var rp=require(_0x8963('0x4'));var fs=require('fs');var path=require(_0x8963('0x5'));var rimraf=require(_0x8963('0x6'));var config=require(_0x8963('0x7'));var attributes=require(_0x8963('0x8'));module[_0x8963('0x9')]=function(_0x3d1646,_0x4616cb){return _0x3d1646['define'](_0x8963('0xa'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x66dc=['define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./userOpenchannelQueue.attributes','exports'];(function(_0x422980,_0x248c1a){var _0x29487a=function(_0x1b9bae){while(--_0x1b9bae){_0x422980['push'](_0x422980['shift']());}};_0x29487a(++_0x248c1a);}(_0x66dc,0xc7));var _0xc66d=function(_0xe55101,_0x4585be){_0xe55101=_0xe55101-0x0;var _0x488e1d=_0x66dc[_0xe55101];return _0x488e1d;};'use strict';var _=require(_0xc66d('0x0'));var util=require(_0xc66d('0x1'));var logger=require(_0xc66d('0x2'))(_0xc66d('0x3'));var moment=require(_0xc66d('0x4'));var BPromise=require(_0xc66d('0x5'));var rp=require(_0xc66d('0x6'));var fs=require('fs');var path=require(_0xc66d('0x7'));var rimraf=require('rimraf');var config=require(_0xc66d('0x8'));var attributes=require(_0xc66d('0x9'));module[_0xc66d('0xa')]=function(_0x13e341,_0x4c2d78){return _0x13e341[_0xc66d('0xb')](_0xc66d('0xc'),attributes,{'tableName':_0xc66d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15988a9..b96394d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5755=['error','code','message','UserOpenchannelQueue,\x20%s,\x20%s','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x207783,_0x411198){var _0x4dd174=function(_0x24951e){while(--_0x24951e){_0x207783['push'](_0x207783['shift']());}};_0x4dd174(++_0x411198);}(_0x5755,0x131));var _0x5575=function(_0xe679de,_0x56d513){_0xe679de=_0xe679de-0x0;var _0x1ba35f=_0x5755[_0xe679de];return _0x1ba35f;};'use strict';var _=require(_0x5575('0x0'));var util=require(_0x5575('0x1'));var moment=require(_0x5575('0x2'));var BPromise=require('bluebird');var rs=require(_0x5575('0x3'));var fs=require('fs');var Redis=require(_0x5575('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x5575('0x5'));var logger=require(_0x5575('0x6'))(_0x5575('0x7'));var config=require(_0x5575('0x8'));var jayson=require(_0x5575('0x9'));var client=jayson['client'][_0x5575('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x566153,_0xc78fba,_0x20fd65){return new BPromise(function(_0x313598,_0xbf0c7a){return client['request'](_0x566153,_0x20fd65)[_0x5575('0xb')](function(_0x4ed0b1){logger[_0x5575('0xc')]('UserOpenchannelQueue,\x20%s,\x20%s',_0xc78fba,_0x5575('0xd'));logger[_0x5575('0xe')](_0x5575('0xf'),_0xc78fba,_0x5575('0xd'),JSON[_0x5575('0x10')](_0x4ed0b1));if(_0x4ed0b1[_0x5575('0x11')]){if(_0x4ed0b1[_0x5575('0x11')][_0x5575('0x12')]===0x1f4){logger[_0x5575('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0xc78fba,_0x4ed0b1[_0x5575('0x11')][_0x5575('0x13')]);return _0xbf0c7a(_0x4ed0b1[_0x5575('0x11')][_0x5575('0x13')]);}logger[_0x5575('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0xc78fba,_0x4ed0b1[_0x5575('0x11')]['message']);return _0x313598(_0x4ed0b1[_0x5575('0x11')][_0x5575('0x13')]);}else{logger[_0x5575('0xc')](_0x5575('0x14'),_0xc78fba,'request\x20sent');_0x313598(_0x4ed0b1[_0x5575('0x15')][_0x5575('0x13')]);}})[_0x5575('0x16')](function(_0xf8ac48){logger[_0x5575('0x11')](_0x5575('0x14'),_0xc78fba,_0xf8ac48);_0xbf0c7a(_0xf8ac48);});});}
\ No newline at end of file
+var _0x9f06=['jayson/promise','client','then','info','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x1903aa,_0x343458){var _0x51fe28=function(_0x52dea8){while(--_0x52dea8){_0x1903aa['push'](_0x1903aa['shift']());}};_0x51fe28(++_0x343458);}(_0x9f06,0x1f0));var _0x69f0=function(_0x8737a5,_0x19ad2a){_0x8737a5=_0x8737a5-0x0;var _0x5463ed=_0x9f06[_0x8737a5];return _0x5463ed;};'use strict';var _=require(_0x69f0('0x0'));var util=require('util');var moment=require(_0x69f0('0x1'));var BPromise=require(_0x69f0('0x2'));var rs=require(_0x69f0('0x3'));var fs=require('fs');var Redis=require(_0x69f0('0x4'));var db=require(_0x69f0('0x5'))['db'];var utils=require(_0x69f0('0x6'));var logger=require(_0x69f0('0x7'))(_0x69f0('0x8'));var config=require(_0x69f0('0x9'));var jayson=require(_0x69f0('0xa'));var client=jayson[_0x69f0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ed54d,_0x2d2a11,_0x382615){return new BPromise(function(_0x44dad2,_0x1281a2){return client['request'](_0x2ed54d,_0x382615)[_0x69f0('0xc')](function(_0x20fd66){logger[_0x69f0('0xd')](_0x69f0('0xe'),_0x2d2a11,'request\x20sent');logger[_0x69f0('0xf')](_0x69f0('0x10'),_0x2d2a11,'request\x20sent',JSON[_0x69f0('0x11')](_0x20fd66));if(_0x20fd66['error']){if(_0x20fd66[_0x69f0('0x12')][_0x69f0('0x13')]===0x1f4){logger[_0x69f0('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2d2a11,_0x20fd66[_0x69f0('0x12')][_0x69f0('0x14')]);return _0x1281a2(_0x20fd66['error'][_0x69f0('0x14')]);}logger[_0x69f0('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2d2a11,_0x20fd66[_0x69f0('0x12')][_0x69f0('0x14')]);return _0x44dad2(_0x20fd66[_0x69f0('0x12')]['message']);}else{logger[_0x69f0('0xd')](_0x69f0('0xe'),_0x2d2a11,'request\x20sent');_0x44dad2(_0x20fd66[_0x69f0('0x15')][_0x69f0('0x14')]);}})[_0x69f0('0x16')](function(_0x129ae6){logger[_0x69f0('0x12')](_0x69f0('0xe'),_0x2d2a11,_0x129ae6);_0x1281a2(_0x129ae6);});});}
\ No newline at end of file
index 87649f8..227fa79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc895=['clone','addSections','/:id/resources','put','update','delete','removeSections','removeResources','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/sections','getSections','getResources','post','create','/:id/clone'];(function(_0x19de6b,_0x4b8505){var _0x1d35e7=function(_0x115a90){while(--_0x115a90){_0x19de6b['push'](_0x19de6b['shift']());}};_0x1d35e7(++_0x4b8505);}(_0xc895,0x165));var _0x5c89=function(_0x2a9e6f,_0x216211){_0x2a9e6f=_0x2a9e6f-0x0;var _0x1159d1=_0xc895[_0x2a9e6f];return _0x1159d1;};'use strict';var multer=require('multer');var util=require(_0x5c89('0x0'));var path=require(_0x5c89('0x1'));var timeout=require(_0x5c89('0x2'));var express=require('express');var router=express[_0x5c89('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5c89('0x4'));var interaction=require(_0x5c89('0x5'));var config=require(_0x5c89('0x6'));var controller=require(_0x5c89('0x7'));router[_0x5c89('0x8')]('/',auth[_0x5c89('0x9')](),controller['index']);router['get'](_0x5c89('0xa'),auth[_0x5c89('0x9')](),controller[_0x5c89('0xb')]);router['get'](_0x5c89('0xc'),auth[_0x5c89('0x9')](),controller[_0x5c89('0xd')]);router[_0x5c89('0x8')](_0x5c89('0xe'),auth[_0x5c89('0x9')](),controller[_0x5c89('0xf')]);router[_0x5c89('0x8')]('/:id/resources',auth[_0x5c89('0x9')](),controller[_0x5c89('0x10')]);router[_0x5c89('0x11')]('/',auth[_0x5c89('0x9')](),controller[_0x5c89('0x12')]);router[_0x5c89('0x11')](_0x5c89('0x13'),auth[_0x5c89('0x9')](),controller[_0x5c89('0x14')]);router[_0x5c89('0x11')](_0x5c89('0xe'),auth[_0x5c89('0x9')](),controller[_0x5c89('0x15')]);router['post'](_0x5c89('0x16'),auth['isAuthenticated'](),controller['addResources']);router[_0x5c89('0x17')](_0x5c89('0xc'),auth[_0x5c89('0x9')](),controller[_0x5c89('0x18')]);router['delete'](_0x5c89('0xc'),auth[_0x5c89('0x9')](),controller['destroy']);router[_0x5c89('0x19')](_0x5c89('0xe'),auth[_0x5c89('0x9')](),controller[_0x5c89('0x1a')]);router[_0x5c89('0x19')]('/:id/resources',auth[_0x5c89('0x9')](),controller[_0x5c89('0x1b')]);module[_0x5c89('0x1c')]=router;
\ No newline at end of file
+var _0x21bb=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','/describe','isAuthenticated','describe','/:id','show','post','create','clone','/:id/sections','addSections','/:id/resources','addResources','put','update','delete','removeSections','removeResources','exports','util','path','express'];(function(_0xf7635a,_0x271f6a){var _0x28cb82=function(_0x1dafce){while(--_0x1dafce){_0xf7635a['push'](_0xf7635a['shift']());}};_0x28cb82(++_0x271f6a);}(_0x21bb,0x131));var _0xb21b=function(_0x25d1af,_0x178fd2){_0x25d1af=_0x25d1af-0x0;var _0x4d6a47=_0x21bb[_0x25d1af];return _0x4d6a47;};'use strict';var multer=require('multer');var util=require(_0xb21b('0x0'));var path=require(_0xb21b('0x1'));var timeout=require('connect-timeout');var express=require(_0xb21b('0x2'));var router=express[_0xb21b('0x3')]();var fs_extra=require(_0xb21b('0x4'));var auth=require(_0xb21b('0x5'));var interaction=require(_0xb21b('0x6'));var config=require(_0xb21b('0x7'));var controller=require(_0xb21b('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xb21b('0x9')](_0xb21b('0xa'),auth[_0xb21b('0xb')](),controller[_0xb21b('0xc')]);router[_0xb21b('0x9')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller[_0xb21b('0xe')]);router[_0xb21b('0x9')]('/:id/sections',auth['isAuthenticated'](),controller['getSections']);router[_0xb21b('0x9')]('/:id/resources',auth[_0xb21b('0xb')](),controller['getResources']);router[_0xb21b('0xf')]('/',auth[_0xb21b('0xb')](),controller[_0xb21b('0x10')]);router[_0xb21b('0xf')]('/:id/clone',auth[_0xb21b('0xb')](),controller[_0xb21b('0x11')]);router[_0xb21b('0xf')](_0xb21b('0x12'),auth['isAuthenticated'](),controller[_0xb21b('0x13')]);router[_0xb21b('0xf')](_0xb21b('0x14'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x15')]);router[_0xb21b('0x16')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x17')]);router[_0xb21b('0x18')](_0xb21b('0xd'),auth[_0xb21b('0xb')](),controller['destroy']);router[_0xb21b('0x18')](_0xb21b('0x12'),auth[_0xb21b('0xb')](),controller[_0xb21b('0x19')]);router['delete']('/:id/resources',auth[_0xb21b('0xb')](),controller[_0xb21b('0x1a')]);module[_0xb21b('0x1b')]=router;
\ No newline at end of file
index de4395f..99fbf92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68ae=['BOOLEAN','sequelize','exports','STRING','name','join','crudPermissions'];(function(_0x47a397,_0x267dc6){var _0x36d592=function(_0x273645){while(--_0x273645){_0x47a397['push'](_0x47a397['shift']());}};_0x36d592(++_0x267dc6);}(_0x68ae,0xe1));var _0xe68a=function(_0x1b8381,_0x49a3d9){_0x1b8381=_0x1b8381-0x0;var _0x4f4b03=_0x68ae[_0x1b8381];return _0x4f4b03;};'use strict';var Sequelize=require(_0xe68a('0x0'));module[_0xe68a('0x1')]={'name':{'type':Sequelize[_0xe68a('0x2')],'allowNull':![],'unique':_0xe68a('0x3')},'crudPermissions':{'type':Sequelize[_0xe68a('0x2')],'set':function(_0x17e299){this['setDataValue']('crudPermissions',_0x17e299?_0x17e299[_0xe68a('0x4')](''):[]);},'get':function(){return this['getDataValue'](_0xe68a('0x5'))?this['getDataValue']('crudPermissions')['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xe68a('0x6')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xe68a('0x6')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xe68a('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xe68a('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xe68a('0x6')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0xe68a('0x6')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2854=['STRING','BOOLEAN','exports','name','setDataValue','crudPermissions','join','getDataValue','split'];(function(_0x49eb34,_0x1ae5f8){var _0x2220af=function(_0xd5fab6){while(--_0xd5fab6){_0x49eb34['push'](_0x49eb34['shift']());}};_0x2220af(++_0x1ae5f8);}(_0x2854,0xec));var _0x4285=function(_0x319927,_0x11d8a0){_0x319927=_0x319927-0x0;var _0xb431a5=_0x2854[_0x319927];return _0xb431a5;};'use strict';var Sequelize=require('sequelize');module[_0x4285('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4285('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x251be2){this[_0x4285('0x2')](_0x4285('0x3'),_0x251be2?_0x251be2[_0x4285('0x4')](''):[]);},'get':function(){return this[_0x4285('0x5')](_0x4285('0x3'))?this['getDataValue'](_0x4285('0x3'))[_0x4285('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x4285('0x7')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x4285('0x8')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x4285('0x8')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 0cf89c0..bacde91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80cd=['ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','UserProfile','rawAttributes','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','create','body','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','each','autoAssociation','UserProfileResource','userProfileId','Resources','UserProfileSection','update','find','describe','get','removeSections','ids','getSections','enabled','sectionId','subsections','includes','push','findOne','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','section','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv'];(function(_0x9e7b3e,_0x757f6f){var _0x2d6b9c=function(_0x62e1fe){while(--_0x62e1fe){_0x9e7b3e['push'](_0x9e7b3e['shift']());}};_0x2d6b9c(++_0x757f6f);}(_0x80cd,0x146));var _0xd80c=function(_0x21090b,_0x39dd3b){_0x21090b=_0x21090b-0x0;var _0x3c68d7=_0x80cd[_0x21090b];return _0x3c68d7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd80c('0x0'));var zipdir=require(_0xd80c('0x1'));var jsonpatch=require(_0xd80c('0x2'));var rp=require(_0xd80c('0x3'));var moment=require(_0xd80c('0x4'));var BPromise=require(_0xd80c('0x5'));var Mustache=require(_0xd80c('0x6'));var util=require(_0xd80c('0x7'));var path=require('path');var sox=require(_0xd80c('0x8'));var csv=require(_0xd80c('0x9'));var ejs=require(_0xd80c('0xa'));var fs=require('fs');var fs_extra=require(_0xd80c('0xb'));var _=require('lodash');var squel=require(_0xd80c('0xc'));var crypto=require(_0xd80c('0xd'));var jsforce=require(_0xd80c('0xe'));var deskjs=require(_0xd80c('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd80c('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd80c('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xd80c('0x12'));var hardwareService=require(_0xd80c('0x13'));var logger=require(_0xd80c('0x14'))(_0xd80c('0x15'));var utils=require(_0xd80c('0x16'));var config=require(_0xd80c('0x17'));var licenseUtil=require(_0xd80c('0x18'));var db=require('../../mysqldb')['db'];config[_0xd80c('0x19')]=_[_0xd80c('0x1a')](config[_0xd80c('0x19')],{'host':_0xd80c('0x1b'),'port':0x18eb});var socket=require(_0xd80c('0x1c'))(new Redis(config[_0xd80c('0x19')]));require(_0xd80c('0x1d'))[_0xd80c('0x1e')](socket);function respondWithStatusCode(_0x67c0d1,_0x56e014){_0x56e014=_0x56e014||0xcc;return function(_0x36925d){if(_0x36925d){return _0x67c0d1[_0xd80c('0x1f')](_0x56e014);}return _0x67c0d1[_0xd80c('0x20')](_0x56e014)[_0xd80c('0x21')]();};}function respondWithResult(_0x34419c,_0x52c6e0){_0x52c6e0=_0x52c6e0||0xc8;return function(_0x387877){if(_0x387877){return _0x34419c[_0xd80c('0x20')](_0x52c6e0)[_0xd80c('0x22')](_0x387877);}};}function respondWithFilteredResult(_0x233677,_0xbeab7c){return function(_0x41aac6){if(_0x41aac6){var _0x3b6a9c=typeof _0xbeab7c[_0xd80c('0x23')]==='undefined'&&typeof _0xbeab7c[_0xd80c('0x24')]===_0xd80c('0x25');var _0x229710=_0x41aac6[_0xd80c('0x26')];var _0x52b7f1=_0x3b6a9c?0x0:_0xbeab7c[_0xd80c('0x23')];var _0x3bb25c=_0x3b6a9c?_0x41aac6[_0xd80c('0x26')]:_0xbeab7c['offset']+_0xbeab7c[_0xd80c('0x24')];var _0x1b29a6;if(_0x3bb25c>=_0x229710){_0x3bb25c=_0x229710;_0x1b29a6=0xc8;}else{_0x1b29a6=0xce;}_0x233677['status'](_0x1b29a6);return _0x233677[_0xd80c('0x27')]('Content-Range',_0x52b7f1+'-'+_0x3bb25c+'/'+_0x229710)['json'](_0x41aac6);}return null;};}function patchUpdates(_0x5d73b4){return function(_0x4ab7c6){try{jsonpatch[_0xd80c('0x28')](_0x4ab7c6,_0x5d73b4,!![]);}catch(_0x205124){return BPromise[_0xd80c('0x29')](_0x205124);}return _0x4ab7c6[_0xd80c('0x2a')]();};}function saveUpdates(_0x48c1b1,_0x5a2530){return function(_0x330411){if(_0x330411){return _0x330411['update'](_0x48c1b1)[_0xd80c('0x2b')](function(_0x38de68){return _0x38de68;});}return null;};}function removeEntity(_0xaed56f,_0x3f0d7e){return function(_0x5673b9){if(_0x5673b9){return _0x5673b9[_0xd80c('0x2c')]()[_0xd80c('0x2b')](function(){_0xaed56f[_0xd80c('0x20')](0xcc)[_0xd80c('0x21')]();});}};}function handleEntityNotFound(_0x180e16,_0x2a2114){return function(_0x16a844){if(!_0x16a844){_0x180e16[_0xd80c('0x1f')](0x194);}return _0x16a844;};}function handleError(_0x13d4c5,_0x34d56c){_0x34d56c=_0x34d56c||0x1f4;return function(_0x2829a3){logger[_0xd80c('0x2d')](_0x2829a3[_0xd80c('0x2e')]);if(_0x2829a3[_0xd80c('0x2f')]){delete _0x2829a3[_0xd80c('0x2f')];}_0x13d4c5['status'](_0x34d56c)[_0xd80c('0x30')](_0x2829a3);};}exports[_0xd80c('0x31')]=function(_0x32184d,_0x240267){var _0x47638e={},_0x40823e={},_0xcefbfc={'count':0x0,'rows':[]};var _0x519ee6=_[_0xd80c('0x32')](db[_0xd80c('0x33')][_0xd80c('0x34')],function(_0x3bb003){return{'name':_0x3bb003['fieldName'],'type':_0x3bb003[_0xd80c('0x35')]['key']};});_0x40823e[_0xd80c('0x36')]=_[_0xd80c('0x32')](_0x519ee6,'name');_0x40823e[_0xd80c('0x37')]=_['keys'](_0x32184d[_0xd80c('0x37')]);_0x40823e[_0xd80c('0x38')]=_['intersection'](_0x40823e[_0xd80c('0x36')],_0x40823e[_0xd80c('0x37')]);_0x47638e[_0xd80c('0x39')]=_[_0xd80c('0x3a')](_0x40823e[_0xd80c('0x36')],qs[_0xd80c('0x3b')](_0x32184d[_0xd80c('0x37')][_0xd80c('0x3b')]));_0x47638e['attributes']=_0x47638e[_0xd80c('0x39')][_0xd80c('0x3c')]?_0x47638e[_0xd80c('0x39')]:_0x40823e['model'];if(!_0x32184d[_0xd80c('0x37')][_0xd80c('0x3d')](_0xd80c('0x3e'))){_0x47638e['limit']=qs['limit'](_0x32184d[_0xd80c('0x37')][_0xd80c('0x24')]);_0x47638e[_0xd80c('0x23')]=qs[_0xd80c('0x23')](_0x32184d['query'][_0xd80c('0x23')]);}_0x47638e[_0xd80c('0x3f')]=qs['sort'](_0x32184d['query']['sort']);_0x47638e[_0xd80c('0x40')]=qs[_0xd80c('0x38')](_[_0xd80c('0x41')](_0x32184d[_0xd80c('0x37')],_0x40823e[_0xd80c('0x38')]),_0x519ee6);if(_0x32184d[_0xd80c('0x37')][_0xd80c('0x42')]){_0x47638e[_0xd80c('0x40')]=_[_0xd80c('0x43')](_0x47638e['where'],{'$or':_['map'](_0x519ee6,function(_0x9336a6){if(_0x9336a6['type']!==_0xd80c('0x44')){var _0x2dd4e7={};_0x2dd4e7[_0x9336a6[_0xd80c('0x2f')]]={'$like':'%'+_0x32184d[_0xd80c('0x37')][_0xd80c('0x42')]+'%'};return _0x2dd4e7;}})});}_0x47638e=_[_0xd80c('0x43')]({},_0x47638e,_0x32184d[_0xd80c('0x45')]);var _0x55a0e2={'where':_0x47638e[_0xd80c('0x40')]};return db[_0xd80c('0x33')][_0xd80c('0x26')](_0x55a0e2)[_0xd80c('0x2b')](function(_0x1a2637){_0xcefbfc[_0xd80c('0x26')]=_0x1a2637;if(_0x32184d[_0xd80c('0x37')][_0xd80c('0x46')]){_0x47638e[_0xd80c('0x47')]=[{'all':!![]}];}return db[_0xd80c('0x33')][_0xd80c('0x48')](_0x47638e);})['then'](function(_0x55a494){_0xcefbfc[_0xd80c('0x49')]=_0x55a494;return _0xcefbfc;})['then'](respondWithFilteredResult(_0x240267,_0x47638e))[_0xd80c('0x4a')](handleError(_0x240267,null));};exports['show']=function(_0x2bdc0d,_0x672c7b){var _0x27a12f={'raw':![],'where':{'id':_0x2bdc0d[_0xd80c('0x4b')]['id']}},_0x412304={};_0x412304[_0xd80c('0x36')]=_[_0xd80c('0x4c')](db[_0xd80c('0x33')]['rawAttributes']);_0x412304['query']=_[_0xd80c('0x4c')](_0x2bdc0d[_0xd80c('0x37')]);_0x412304['filters']=_['intersection'](_0x412304[_0xd80c('0x36')],_0x412304['query']);_0x27a12f['attributes']=_[_0xd80c('0x3a')](_0x412304['model'],qs['fields'](_0x2bdc0d[_0xd80c('0x37')]['fields']));_0x27a12f[_0xd80c('0x39')]=_0x27a12f['attributes'][_0xd80c('0x3c')]?_0x27a12f[_0xd80c('0x39')]:_0x412304['model'];if(_0x2bdc0d[_0xd80c('0x37')][_0xd80c('0x46')]){_0x27a12f['include']=[{'all':!![]}];}_0x27a12f=_['merge']({},_0x27a12f,_0x2bdc0d[_0xd80c('0x45')]);return db[_0xd80c('0x33')]['find'](_0x27a12f)[_0xd80c('0x2b')](handleEntityNotFound(_0x672c7b,null))['then'](respondWithResult(_0x672c7b,null))[_0xd80c('0x4a')](handleError(_0x672c7b,null));};exports['create']=function(_0xde4804,_0xdd2aa2){return db[_0xd80c('0x33')][_0xd80c('0x4d')](_0xde4804[_0xd80c('0x4e')],{})[_0xd80c('0x2b')](respondWithResult(_0xdd2aa2,0xc9))[_0xd80c('0x4a')](handleError(_0xdd2aa2,null));};exports['clone']=function(_0x78379,_0x2cfd19){var _0x36f81={'where':{'id':_0x78379[_0xd80c('0x4b')]['id']}},_0x5ad76e={};_0x5ad76e[_0xd80c('0x36')]=_[_0xd80c('0x4c')](db[_0xd80c('0x33')][_0xd80c('0x34')]);_0x36f81['attributes']=_['intersection'](_0x5ad76e[_0xd80c('0x36')],qs[_0xd80c('0x3b')](_0x78379[_0xd80c('0x37')][_0xd80c('0x3b')]));_0x36f81[_0xd80c('0x39')]=_0x36f81[_0xd80c('0x39')][_0xd80c('0x3c')]?_0x36f81[_0xd80c('0x39')]:_0x5ad76e[_0xd80c('0x36')];if(_0x78379[_0xd80c('0x37')]['includeAll']){_0x36f81['include']=[{'all':!![]}];}_0x36f81=_[_0xd80c('0x43')]({},_0x36f81,_0x78379[_0xd80c('0x45')]);return db[_0xd80c('0x33')]['find'](_0x36f81)[_0xd80c('0x2b')](handleEntityNotFound(_0x2cfd19,null))['then'](function(_0x146263){if(_0x146263){var _0x2e70da=_0x146263['get']({'plain':!![]});_0x2e70da=qs[_0xd80c('0x4f')](_0x2e70da,['id','createdAt',_0xd80c('0x50'),_0xd80c('0x51')]);_0x78379[_0xd80c('0x4e')]=_[_0xd80c('0x4f')](_0x78379[_0xd80c('0x4e')],['id',_0xd80c('0x52'),_0xd80c('0x50')]);return db[_0xd80c('0x53')][_0xd80c('0x54')](function(_0x56d5f8){return db['UserProfile']['create'](_[_0xd80c('0x43')](_0x2e70da,_0x78379[_0xd80c('0x4e')]),{'include':_0x78379['query'][_0xd80c('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x56d5f8})[_0xd80c('0x2b')](function(_0x33963f){var _0x7d41dd=_0x33963f['get']({'plain':!![]});return db['UserProfileSection'][_0xd80c('0x48')]({'where':{'userProfileId':_0x78379['params']['id']},'raw':!![]})[_0xd80c('0x2b')](function(_0x23602a){if(_0x23602a){return BPromise[_0xd80c('0x55')](_0x23602a,function(_0x5a55c4){return new BPromise(function(_0x14854c,_0x1c4563){if(_0x5a55c4['autoAssociation']===null||_0x5a55c4[_0xd80c('0x56')]===0x1)_0x14854c(null);return db[_0xd80c('0x57')]['findAll']({'where':{'sectionId':_0x5a55c4['id']},'raw':!![]})[_0xd80c('0x2b')](function(_0x2cb1fe){var _0xc3c1e=_[_0xd80c('0x32')](_0x2cb1fe,function(_0x29b470){return qs['omit'](_0x29b470,['id',_0xd80c('0x52'),_0xd80c('0x50'),'sectionId']);});_0x14854c(_0xc3c1e);})['catch'](function(_0xdc551a){_0x1c4563(_0xdc551a);});})[_0xd80c('0x2b')](function(_0x5b26bf){var _0x5896ff=qs[_0xd80c('0x4f')](_0x5a55c4,['id',_0xd80c('0x52'),_0xd80c('0x50')]);_0x5896ff[_0xd80c('0x58')]=_0x7d41dd['id'];if(_0x5b26bf)_0x5896ff[_0xd80c('0x59')]=_0x5b26bf;return _0x5896ff;})[_0xd80c('0x2b')](function(_0x35d3e4){return db[_0xd80c('0x5a')][_0xd80c('0x4d')](_0x35d3e4,{'include':[{'model':db[_0xd80c('0x57')],'as':'Resources'}],'raw':!![],'transaction':_0x56d5f8});});})[_0xd80c('0x2b')](function(){return _0x7d41dd;});}});});});}})[_0xd80c('0x2b')](respondWithResult(_0x2cfd19,0xc9))[_0xd80c('0x4a')](handleError(_0x2cfd19,null));};exports[_0xd80c('0x5b')]=function(_0x3b2196,_0x1ca453){if(_0x3b2196[_0xd80c('0x4e')]['id']){delete _0x3b2196[_0xd80c('0x4e')]['id'];}return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x3b2196[_0xd80c('0x4b')]['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0x1ca453,null))[_0xd80c('0x2b')](saveUpdates(_0x3b2196[_0xd80c('0x4e')],null))[_0xd80c('0x2b')](respondWithResult(_0x1ca453,null))[_0xd80c('0x4a')](handleError(_0x1ca453,null));};exports[_0xd80c('0x2c')]=function(_0x38a03a,_0x32ffc0){return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x38a03a['params']['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0x32ffc0,null))[_0xd80c('0x2b')](removeEntity(_0x32ffc0,null))[_0xd80c('0x4a')](handleError(_0x32ffc0,null));};exports[_0xd80c('0x5d')]=function(_0x46cc45,_0x198647){return db[_0xd80c('0x33')][_0xd80c('0x5d')]()[_0xd80c('0x2b')](respondWithResult(_0x198647,null))[_0xd80c('0x4a')](handleError(_0x198647,null));};exports['addSections']=function(_0x70f0ff,_0x1ec1e1){var _0x1868b2=_0x70f0ff[_0xd80c('0x4e')];return db['UserProfile']['find']({'where':{'id':_0x70f0ff[_0xd80c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1ec1e1,null))['then'](function(_0x58e655){if(_0x58e655){return db[_0xd80c('0x53')][_0xd80c('0x54')](function(_0x2a3946){return db[_0xd80c('0x5a')]['destroy']({'where':{'userProfileId':_0x70f0ff['params']['id'],'sectionId':_[_0xd80c('0x32')](_0x1868b2,function(_0x4d68d4){return _0x4d68d4['sectionId'];})},'transaction':_0x2a3946})[_0xd80c('0x2b')](function(){var _0x2045d0=_[_0xd80c('0x32')](_0x1868b2,function(_0x49dd2a){_0x49dd2a['userProfileId']=_0x70f0ff[_0xd80c('0x4b')]['id'];return _0x49dd2a;});var _0x4fac2c=[];return BPromise['each'](_0x2045d0,function(_0x109701){return db[_0xd80c('0x5a')][_0xd80c('0x4d')](_0x109701,{'include':[{'model':db[_0xd80c('0x57')],'as':'Resources'}],'raw':!![],'transaction':_0x2a3946})[_0xd80c('0x2b')](function(_0x3389b){_0x4fac2c['push'](_0x3389b[_0xd80c('0x5e')]({'plain':!![]}));});})['then'](function(){return _0x4fac2c;});});});}})[_0xd80c('0x2b')](function(_0x141d03){return _0x141d03;})['then'](respondWithResult(_0x1ec1e1,null))[_0xd80c('0x4a')](handleError(_0x1ec1e1,null));};exports[_0xd80c('0x5f')]=function(_0x53e310,_0x2b54ec){var _0x2d841a;return db['UserProfile'][_0xd80c('0x5c')]({'where':{'id':_0x53e310[_0xd80c('0x4b')]['id']},'attributes':['id',_0xd80c('0x2f')]})[_0xd80c('0x2b')](handleEntityNotFound(_0x2b54ec,null))[_0xd80c('0x2b')](function(_0x144727){if(_0x144727){_0x2d841a=_0x144727;return db[_0xd80c('0x5a')][_0xd80c('0x2c')]({'where':{'userProfileId':_0x53e310[_0xd80c('0x4b')]['id'],'sectionId':_0x53e310['query'][_0xd80c('0x60')]}});}})['then'](function(){return _0x2d841a;})[_0xd80c('0x2b')](respondWithStatusCode(_0x2b54ec,null))['catch'](handleError(_0x2b54ec,null));};exports[_0xd80c('0x61')]=function(_0x20c16b,_0x40cf9f){var _0x3f417e=[];var _0x39114f=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x20c16b[_0xd80c('0x4b')]['id']},'raw':!![]})['then'](function(_0x4e4557){_0x3f417e=_['filter'](_0x4e4557,function(_0x456a9e){return _0x456a9e[_0xd80c('0x62')]===0x1||_['includes']([0x3eb,0x709],_0x456a9e[_0xd80c('0x63')]);});if(!_['isEmpty'](_0x3f417e)){return _['map'](_0x3f417e,function(_0x5bf101){return _0x5bf101[_0xd80c('0x63')];});}else{return;}})[_0xd80c('0x2b')](function(_0x1adc37){if(_0x1adc37)_0x39114f=_0x1adc37;if(_['includes'](_0x39114f,0x64)){var _0x582910=_[_0xd80c('0x5c')](_0x3f417e,{'sectionId':0x64});return hasDefaultDashboard(_0x582910)[_0xd80c('0x2b')](function(_0x33c1dd){return _[_0xd80c('0x32')](_0x3f417e,function(_0x36be94){if(_0x36be94[_0xd80c('0x63')]===0x64){_0x36be94[_0xd80c('0x64')]=_0x33c1dd;}return _0x36be94;});});}else{return;}})[_0xd80c('0x2b')](function(_0xf78c6c){if(_0xf78c6c)_0x3f417e=_0xf78c6c;if(_[_0xd80c('0x65')](_0x39114f,0x3eb)){var _0x194ac1=_['find'](_0x3f417e,{'sectionId':0x3eb});return getCustomDashboards(_0x194ac1)[_0xd80c('0x2b')](function(_0x586aae){return _[_0xd80c('0x32')](_0x3f417e,function(_0x5382d3){if(_0x194ac1[_0xd80c('0x62')]){if(_0x5382d3[_0xd80c('0x63')]===0x3eb){_0x5382d3[_0xd80c('0x64')]=_0x586aae;}}else{if(_0x5382d3[_0xd80c('0x63')]===0x64){_0x5382d3['subsections']=_0x586aae;}}return _0x5382d3;});});}else{return;}})['then'](function(_0x1d2a6f){if(_0x1d2a6f)_0x3f417e=_0x1d2a6f;if(_[_0xd80c('0x65')](_0x39114f,0x709)){var _0xcdfa30=_[_0xd80c('0x5c')](_0x3f417e,{'sectionId':0x709});return getPlugins(_0xcdfa30)[_0xd80c('0x2b')](function(_0x11f8d7){if(_0xcdfa30['enabled']){return _[_0xd80c('0x32')](_0x3f417e,function(_0xbead6f){if(_0xbead6f[_0xd80c('0x63')]===0x709){_0xbead6f[_0xd80c('0x64')]=_0x11f8d7;}return _0xbead6f;});}else{var _0x416e1d={'sectionId':0x76c,'enabled':0x1,'subsections':_0x11f8d7};var _0x41125f=_[_0xd80c('0x32')](_0x3f417e);_0x41125f[_0xd80c('0x66')](_0x416e1d);return _0x41125f;}});}else{return;}})[_0xd80c('0x2b')](function(_0x4c3c6e){if(_0x4c3c6e)_0x3f417e=_0x4c3c6e;return _['filter'](_0x3f417e,[_0xd80c('0x62'),0x1]);})['then'](respondWithResult(_0x40cf9f,null))[_0xd80c('0x4a')](handleError(_0x40cf9f,null));};function hasDefaultDashboard(_0x1df70c){var _0xa3968c=[0x65];return new BPromise(function(_0x4061fc,_0x31dd54){try{if(_0x1df70c['autoAssociation']){_0x4061fc(_0xa3968c);}else{return db[_0xd80c('0x57')][_0xd80c('0x67')]({'where':{'sectionId':_0x1df70c['id']},'raw':!![]})['then'](function(_0x455986){_0x455986?_0x4061fc(_0xa3968c):_0x4061fc();});}}catch(_0x7c8fcc){_0x31dd54(_0x7c8fcc);}});}function getCustomDashboards(_0x2c7abd){var _0x2cf7b7=[];return new BPromise(function(_0x5a028b,_0x3f6060){try{if(_0x2c7abd[_0xd80c('0x56')]){return db['Dashboard']['findAll']({'raw':!![]})[_0xd80c('0x2b')](function(_0x3fad20){_0x3fad20[_0xd80c('0x68')](function(_0x47f59a){_0x2cf7b7[_0xd80c('0x66')](_0x47f59a['id']+0x1869f);});_0x5a028b(_0x2cf7b7);});}else{return db[_0xd80c('0x57')]['findAll']({'where':{'sectionId':_0x2c7abd['id']},'raw':!![]})['then'](function(_0x1d68e5){_0x1d68e5['forEach'](function(_0x3c05f6){_0x2cf7b7[_0xd80c('0x66')](_0x3c05f6[_0xd80c('0x69')]+0x1869f);});_0x5a028b(_0x2cf7b7);});}}catch(_0x19ed57){_0x3f6060(_0x19ed57);}});}function getPlugins(_0x2bf719){var _0x3844c1=[];return new BPromise(function(_0x4981c4,_0x110c47){try{if(_0x2bf719[_0xd80c('0x56')]){return db[_0xd80c('0x6a')][_0xd80c('0x48')]({'raw':!![]})[_0xd80c('0x2b')](function(_0x4b5e70){_0x4b5e70[_0xd80c('0x68')](function(_0x4784ce){_0x3844c1[_0xd80c('0x66')](_0x4784ce['id']+0x15b38);});_0x4981c4(_0x3844c1);});}else{return db[_0xd80c('0x57')][_0xd80c('0x48')]({'where':{'sectionId':_0x2bf719['id']},'raw':!![]})['then'](function(_0x23b074){_0x23b074['forEach'](function(_0xf84ec6){_0x3844c1[_0xd80c('0x66')](_0xf84ec6[_0xd80c('0x69')]+0x15b38);});_0x4981c4(_0x3844c1);});}}catch(_0x1bbee6){_0x110c47(_0x1bbee6);}});}exports[_0xd80c('0x6b')]=function(_0x519596,_0xb0f7bc){return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x519596['params']['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0xb0f7bc,null))[_0xd80c('0x2b')](function(_0x5e533b){if(_0x5e533b){return db[_0xd80c('0x53')][_0xd80c('0x54')](function(_0x35e32e){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x519596['params']['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x47f034){if(_0x47f034){return db[_0xd80c('0x5a')]['destroy']({'where':{'userProfileId':_0x519596[_0xd80c('0x4b')]['id'],'id':_[_0xd80c('0x32')](_0x47f034,function(_0x1e09e1){return _0x1e09e1['id'];})},'transaction':_0x35e32e});}})[_0xd80c('0x2b')](function(_0x3da976){var _0x3ad35f=_[_0xd80c('0x32')](_0x519596[_0xd80c('0x4e')],function(_0x4af215){_0x4af215[_0xd80c('0x58')]=_0x519596[_0xd80c('0x4b')]['id'];return _0x4af215;});return db[_0xd80c('0x5a')][_0xd80c('0x6c')](_0x3ad35f,{'raw':!![],'transaction':_0x35e32e});})[_0xd80c('0x2b')](function(_0x54bb84){var _0xebab09=_['filter'](_[_0xd80c('0x32')](_0x54bb84,function(_0x45dd2d){return _0x45dd2d[_0xd80c('0x5e')]({'plain':!![]});}),{'includeAll':![]});if(_0xebab09){return db[_0xd80c('0x5a')]['findAll']({'where':{'userProfileId':_0x519596[_0xd80c('0x4b')]['id'],'sectionId':_[_0xd80c('0x32')](_0xebab09,function(_0x3590eb){return _0x3590eb[_0xd80c('0x63')];})},'attributes':['id',_0xd80c('0x63')],'raw':!![]})['then'](function(_0x48e0e3){var _0x4586f0=_['map'](_0x519596[_0xd80c('0x4e')],function(_0x1bec27){_0x1bec27[_0xd80c('0x58')]=_0x519596[_0xd80c('0x4b')]['id'];return _0x1bec27;});return db[_0xd80c('0x57')][_0xd80c('0x6c')](_0x4586f0,{'raw':!![],'transaction':_0x35e32e});});}})['catch'](handleError(_0xb0f7bc,null));});}})[_0xd80c('0x2b')](function(_0x4907b8){var _0x171e7a=_['map'](_0x4907b8,function(_0x3df1c8){return _0x3df1c8['get']({'plain':!![]});});})[_0xd80c('0x2b')](respondWithResult(_0xb0f7bc,null))['catch'](handleError(_0xb0f7bc,null));};exports['removeResources']=function(_0x1662fa,_0x59cfa8,_0x567bf7){return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x1662fa[_0xd80c('0x4b')]['id']}})[_0xd80c('0x2b')](handleEntityNotFound(_0x59cfa8,null))[_0xd80c('0x2b')](function(_0x5ceafe){if(_0x5ceafe){return _0x5ceafe[_0xd80c('0x6d')](_0x1662fa[_0xd80c('0x37')][_0xd80c('0x60')]);}})[_0xd80c('0x2b')](respondWithStatusCode(_0x59cfa8,null))[_0xd80c('0x4a')](handleError(_0x59cfa8,null));};exports[_0xd80c('0x6e')]=function(_0x1ac46e,_0x313a8a){var _0xb45237={};if(!_0x1ac46e['query'][_0xd80c('0x6f')])throw new Error('Missing\x20section\x20parameter');if(!_0x1ac46e['query'][_0xd80c('0x3d')](_0xd80c('0x3e'))){_0xb45237['limit']=qs['limit'](_0x1ac46e[_0xd80c('0x37')][_0xd80c('0x24')]);_0xb45237[_0xd80c('0x23')]=qs[_0xd80c('0x23')](_0x1ac46e[_0xd80c('0x37')][_0xd80c('0x23')]);}return db[_0xd80c('0x33')][_0xd80c('0x5c')]({'where':{'id':_0x1ac46e['params']['id']}})[_0xd80c('0x2b')](function(_0x4b3deb){if(!_0x4b3deb)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x1ac46e[_0xd80c('0x4b')]['id']);return db['UserProfile'][_0xd80c('0x6e')](_0x1ac46e);})[_0xd80c('0x2b')](respondWithFilteredResult(_0x313a8a,_0xb45237))[_0xd80c('0x4a')](handleError(_0x313a8a,null));};
\ No newline at end of file
+var _0x6db4=['findAll','rows','catch','show','params','find','create','body','clone','omit','updatedAt','createdAt','sequelize','transaction','get','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','UserProfileSection','push','removeSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','resourceId','Plugin','forEach','addResources','bulkCreate','removeResources','ids','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','end','json','offset','undefined','limit','count','status','apply','reject','save','then','destroy','error','stack','name','index','map','UserProfile','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','filters','merge','filter','options','includeAll','include'];(function(_0x3a3792,_0x135916){var _0x4124c8=function(_0x1ee781){while(--_0x1ee781){_0x3a3792['push'](_0x3a3792['shift']());}};_0x4124c8(++_0x135916);}(_0x6db4,0x111));var _0x46db=function(_0xff4dd1,_0x54d6e6){_0xff4dd1=_0xff4dd1-0x0;var _0x4afdac=_0x6db4[_0xff4dd1];return _0x4afdac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46db('0x0'));var zipdir=require(_0x46db('0x1'));var jsonpatch=require(_0x46db('0x2'));var rp=require(_0x46db('0x3'));var moment=require(_0x46db('0x4'));var BPromise=require(_0x46db('0x5'));var Mustache=require('mustache');var util=require(_0x46db('0x6'));var path=require(_0x46db('0x7'));var sox=require(_0x46db('0x8'));var csv=require(_0x46db('0x9'));var ejs=require(_0x46db('0xa'));var fs=require('fs');var fs_extra=require(_0x46db('0xb'));var _=require(_0x46db('0xc'));var squel=require('squel');var crypto=require(_0x46db('0xd'));var jsforce=require(_0x46db('0xe'));var deskjs=require(_0x46db('0xf'));var toCsv=require(_0x46db('0x9'));var querystring=require(_0x46db('0x10'));var Papa=require(_0x46db('0x11'));var Redis=require(_0x46db('0x12'));var authService=require(_0x46db('0x13'));var qs=require(_0x46db('0x14'));var as=require(_0x46db('0x15'));var hardwareService=require(_0x46db('0x16'));var logger=require(_0x46db('0x17'))('api');var utils=require(_0x46db('0x18'));var config=require(_0x46db('0x19'));var licenseUtil=require(_0x46db('0x1a'));var db=require(_0x46db('0x1b'))['db'];config[_0x46db('0x1c')]=_[_0x46db('0x1d')](config[_0x46db('0x1c')],{'host':_0x46db('0x1e'),'port':0x18eb});var socket=require(_0x46db('0x1f'))(new Redis(config['redis']));require('./userProfile.socket')['register'](socket);function respondWithStatusCode(_0x417caf,_0xed8db9){_0xed8db9=_0xed8db9||0xcc;return function(_0x5c982c){if(_0x5c982c){return _0x417caf[_0x46db('0x20')](_0xed8db9);}return _0x417caf['status'](_0xed8db9)[_0x46db('0x21')]();};}function respondWithResult(_0x5dccf9,_0x12976b){_0x12976b=_0x12976b||0xc8;return function(_0x41a0bc){if(_0x41a0bc){return _0x5dccf9['status'](_0x12976b)[_0x46db('0x22')](_0x41a0bc);}};}function respondWithFilteredResult(_0x1e6b13,_0x422c86){return function(_0x32c5ef){if(_0x32c5ef){var _0x1e24e6=typeof _0x422c86[_0x46db('0x23')]===_0x46db('0x24')&&typeof _0x422c86[_0x46db('0x25')]==='undefined';var _0x27cfcf=_0x32c5ef[_0x46db('0x26')];var _0x1e0beb=_0x1e24e6?0x0:_0x422c86['offset'];var _0x521b93=_0x1e24e6?_0x32c5ef['count']:_0x422c86['offset']+_0x422c86[_0x46db('0x25')];var _0x270f8d;if(_0x521b93>=_0x27cfcf){_0x521b93=_0x27cfcf;_0x270f8d=0xc8;}else{_0x270f8d=0xce;}_0x1e6b13[_0x46db('0x27')](_0x270f8d);return _0x1e6b13['set']('Content-Range',_0x1e0beb+'-'+_0x521b93+'/'+_0x27cfcf)[_0x46db('0x22')](_0x32c5ef);}return null;};}function patchUpdates(_0x3601e4){return function(_0x1156c4){try{jsonpatch[_0x46db('0x28')](_0x1156c4,_0x3601e4,!![]);}catch(_0x443651){return BPromise[_0x46db('0x29')](_0x443651);}return _0x1156c4[_0x46db('0x2a')]();};}function saveUpdates(_0x3a50dd,_0x4708df){return function(_0x7bcdf5){if(_0x7bcdf5){return _0x7bcdf5['update'](_0x3a50dd)[_0x46db('0x2b')](function(_0x149e66){return _0x149e66;});}return null;};}function removeEntity(_0x1e7acc,_0x408b9f){return function(_0x448aff){if(_0x448aff){return _0x448aff[_0x46db('0x2c')]()['then'](function(){_0x1e7acc[_0x46db('0x27')](0xcc)[_0x46db('0x21')]();});}};}function handleEntityNotFound(_0x1a3855,_0x4e9bf5){return function(_0x131d75){if(!_0x131d75){_0x1a3855[_0x46db('0x20')](0x194);}return _0x131d75;};}function handleError(_0x346b0c,_0xb9f5e3){_0xb9f5e3=_0xb9f5e3||0x1f4;return function(_0x367195){logger[_0x46db('0x2d')](_0x367195[_0x46db('0x2e')]);if(_0x367195[_0x46db('0x2f')]){delete _0x367195[_0x46db('0x2f')];}_0x346b0c[_0x46db('0x27')](_0xb9f5e3)['send'](_0x367195);};}exports[_0x46db('0x30')]=function(_0x1d5f86,_0x531ef2){var _0xd92990={},_0xd836d4={},_0x2fd094={'count':0x0,'rows':[]};var _0x401cea=_[_0x46db('0x31')](db[_0x46db('0x32')][_0x46db('0x33')],function(_0x45604c){return{'name':_0x45604c[_0x46db('0x34')],'type':_0x45604c[_0x46db('0x35')][_0x46db('0x36')]};});_0xd836d4[_0x46db('0x37')]=_['map'](_0x401cea,'name');_0xd836d4[_0x46db('0x38')]=_[_0x46db('0x39')](_0x1d5f86[_0x46db('0x38')]);_0xd836d4['filters']=_[_0x46db('0x3a')](_0xd836d4[_0x46db('0x37')],_0xd836d4['query']);_0xd92990[_0x46db('0x3b')]=_[_0x46db('0x3a')](_0xd836d4[_0x46db('0x37')],qs[_0x46db('0x3c')](_0x1d5f86[_0x46db('0x38')]['fields']));_0xd92990['attributes']=_0xd92990[_0x46db('0x3b')][_0x46db('0x3d')]?_0xd92990[_0x46db('0x3b')]:_0xd836d4[_0x46db('0x37')];if(!_0x1d5f86[_0x46db('0x38')]['hasOwnProperty'](_0x46db('0x3e'))){_0xd92990[_0x46db('0x25')]=qs[_0x46db('0x25')](_0x1d5f86['query']['limit']);_0xd92990[_0x46db('0x23')]=qs[_0x46db('0x23')](_0x1d5f86[_0x46db('0x38')][_0x46db('0x23')]);}_0xd92990[_0x46db('0x3f')]=qs[_0x46db('0x40')](_0x1d5f86['query']['sort']);_0xd92990[_0x46db('0x41')]=qs[_0x46db('0x42')](_['pick'](_0x1d5f86[_0x46db('0x38')],_0xd836d4['filters']),_0x401cea);if(_0x1d5f86[_0x46db('0x38')]['filter']){_0xd92990[_0x46db('0x41')]=_[_0x46db('0x43')](_0xd92990[_0x46db('0x41')],{'$or':_[_0x46db('0x31')](_0x401cea,function(_0x4a6894){if(_0x4a6894['type']!=='VIRTUAL'){var _0x208ff5={};_0x208ff5[_0x4a6894[_0x46db('0x2f')]]={'$like':'%'+_0x1d5f86[_0x46db('0x38')][_0x46db('0x44')]+'%'};return _0x208ff5;}})});}_0xd92990=_['merge']({},_0xd92990,_0x1d5f86[_0x46db('0x45')]);var _0x265050={'where':_0xd92990[_0x46db('0x41')]};return db[_0x46db('0x32')][_0x46db('0x26')](_0x265050)[_0x46db('0x2b')](function(_0x3f31e1){_0x2fd094[_0x46db('0x26')]=_0x3f31e1;if(_0x1d5f86[_0x46db('0x38')][_0x46db('0x46')]){_0xd92990[_0x46db('0x47')]=[{'all':!![]}];}return db[_0x46db('0x32')][_0x46db('0x48')](_0xd92990);})[_0x46db('0x2b')](function(_0x1e9cde){_0x2fd094[_0x46db('0x49')]=_0x1e9cde;return _0x2fd094;})['then'](respondWithFilteredResult(_0x531ef2,_0xd92990))[_0x46db('0x4a')](handleError(_0x531ef2,null));};exports[_0x46db('0x4b')]=function(_0x1042b0,_0x3d479f){var _0x28141d={'raw':![],'where':{'id':_0x1042b0[_0x46db('0x4c')]['id']}},_0x53d253={};_0x53d253[_0x46db('0x37')]=_[_0x46db('0x39')](db[_0x46db('0x32')][_0x46db('0x33')]);_0x53d253[_0x46db('0x38')]=_[_0x46db('0x39')](_0x1042b0[_0x46db('0x38')]);_0x53d253['filters']=_['intersection'](_0x53d253[_0x46db('0x37')],_0x53d253[_0x46db('0x38')]);_0x28141d[_0x46db('0x3b')]=_[_0x46db('0x3a')](_0x53d253['model'],qs[_0x46db('0x3c')](_0x1042b0[_0x46db('0x38')][_0x46db('0x3c')]));_0x28141d[_0x46db('0x3b')]=_0x28141d[_0x46db('0x3b')][_0x46db('0x3d')]?_0x28141d[_0x46db('0x3b')]:_0x53d253[_0x46db('0x37')];if(_0x1042b0[_0x46db('0x38')][_0x46db('0x46')]){_0x28141d['include']=[{'all':!![]}];}_0x28141d=_[_0x46db('0x43')]({},_0x28141d,_0x1042b0['options']);return db[_0x46db('0x32')][_0x46db('0x4d')](_0x28141d)[_0x46db('0x2b')](handleEntityNotFound(_0x3d479f,null))[_0x46db('0x2b')](respondWithResult(_0x3d479f,null))[_0x46db('0x4a')](handleError(_0x3d479f,null));};exports['create']=function(_0xa4dd63,_0xd469f){return db['UserProfile'][_0x46db('0x4e')](_0xa4dd63[_0x46db('0x4f')],{})['then'](respondWithResult(_0xd469f,0xc9))[_0x46db('0x4a')](handleError(_0xd469f,null));};exports[_0x46db('0x50')]=function(_0x4c4892,_0x55ba77){var _0x573e48={'where':{'id':_0x4c4892[_0x46db('0x4c')]['id']}},_0x5a1469={};_0x5a1469['model']=_[_0x46db('0x39')](db[_0x46db('0x32')][_0x46db('0x33')]);_0x573e48['attributes']=_[_0x46db('0x3a')](_0x5a1469[_0x46db('0x37')],qs[_0x46db('0x3c')](_0x4c4892[_0x46db('0x38')]['fields']));_0x573e48[_0x46db('0x3b')]=_0x573e48[_0x46db('0x3b')]['length']?_0x573e48['attributes']:_0x5a1469['model'];if(_0x4c4892[_0x46db('0x38')]['includeAll']){_0x573e48[_0x46db('0x47')]=[{'all':!![]}];}_0x573e48=_[_0x46db('0x43')]({},_0x573e48,_0x4c4892[_0x46db('0x45')]);return db['UserProfile'][_0x46db('0x4d')](_0x573e48)[_0x46db('0x2b')](handleEntityNotFound(_0x55ba77,null))[_0x46db('0x2b')](function(_0x2d75bf){if(_0x2d75bf){var _0x178de5=_0x2d75bf['get']({'plain':!![]});_0x178de5=qs[_0x46db('0x51')](_0x178de5,['id','createdAt',_0x46db('0x52'),'crudPermissions']);_0x4c4892[_0x46db('0x4f')]=_[_0x46db('0x51')](_0x4c4892[_0x46db('0x4f')],['id',_0x46db('0x53'),'updatedAt']);return db[_0x46db('0x54')][_0x46db('0x55')](function(_0x31df60){return db['UserProfile']['create'](_[_0x46db('0x43')](_0x178de5,_0x4c4892[_0x46db('0x4f')]),{'include':_0x4c4892['query']['includeAll']?[{'all':!![]}]:undefined,'transaction':_0x31df60})[_0x46db('0x2b')](function(_0x982ccf){var _0x2614a0=_0x982ccf[_0x46db('0x56')]({'plain':!![]});return db['UserProfileSection'][_0x46db('0x48')]({'where':{'userProfileId':_0x4c4892[_0x46db('0x4c')]['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x55fc21){if(_0x55fc21){return BPromise[_0x46db('0x57')](_0x55fc21,function(_0x4d1e1a){return new BPromise(function(_0x5082c0,_0x25289a){if(_0x4d1e1a[_0x46db('0x58')]===null||_0x4d1e1a[_0x46db('0x58')]===0x1)_0x5082c0(null);return db[_0x46db('0x59')][_0x46db('0x48')]({'where':{'sectionId':_0x4d1e1a['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x3ceaed){var _0x92438c=_[_0x46db('0x31')](_0x3ceaed,function(_0x5c5826){return qs['omit'](_0x5c5826,['id','createdAt','updatedAt',_0x46db('0x5a')]);});_0x5082c0(_0x92438c);})[_0x46db('0x4a')](function(_0x37fd3e){_0x25289a(_0x37fd3e);});})[_0x46db('0x2b')](function(_0x4acc5a){var _0xa8d88a=qs[_0x46db('0x51')](_0x4d1e1a,['id','createdAt',_0x46db('0x52')]);_0xa8d88a[_0x46db('0x5b')]=_0x2614a0['id'];if(_0x4acc5a)_0xa8d88a[_0x46db('0x5c')]=_0x4acc5a;return _0xa8d88a;})[_0x46db('0x2b')](function(_0x9bc317){return db['UserProfileSection']['create'](_0x9bc317,{'include':[{'model':db[_0x46db('0x59')],'as':_0x46db('0x5c')}],'raw':!![],'transaction':_0x31df60});});})[_0x46db('0x2b')](function(){return _0x2614a0;});}});});});}})[_0x46db('0x2b')](respondWithResult(_0x55ba77,0xc9))[_0x46db('0x4a')](handleError(_0x55ba77,null));};exports['update']=function(_0x36b38e,_0x162e50){if(_0x36b38e[_0x46db('0x4f')]['id']){delete _0x36b38e[_0x46db('0x4f')]['id'];}return db['UserProfile'][_0x46db('0x4d')]({'where':{'id':_0x36b38e[_0x46db('0x4c')]['id']}})[_0x46db('0x2b')](handleEntityNotFound(_0x162e50,null))[_0x46db('0x2b')](saveUpdates(_0x36b38e[_0x46db('0x4f')],null))['then'](respondWithResult(_0x162e50,null))[_0x46db('0x4a')](handleError(_0x162e50,null));};exports[_0x46db('0x2c')]=function(_0x447b85,_0x20f914){return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x447b85[_0x46db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x20f914,null))[_0x46db('0x2b')](removeEntity(_0x20f914,null))[_0x46db('0x4a')](handleError(_0x20f914,null));};exports[_0x46db('0x5d')]=function(_0x3ffa8d,_0x5afd09){return db['UserProfile']['describe']()['then'](respondWithResult(_0x5afd09,null))[_0x46db('0x4a')](handleError(_0x5afd09,null));};exports[_0x46db('0x5e')]=function(_0x2bba34,_0x25a69c){var _0x3d7fad=_0x2bba34[_0x46db('0x4f')];return db['UserProfile'][_0x46db('0x4d')]({'where':{'id':_0x2bba34[_0x46db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x25a69c,null))[_0x46db('0x2b')](function(_0x4b1089){if(_0x4b1089){return db[_0x46db('0x54')]['transaction'](function(_0x337d9a){return db[_0x46db('0x5f')][_0x46db('0x2c')]({'where':{'userProfileId':_0x2bba34[_0x46db('0x4c')]['id'],'sectionId':_['map'](_0x3d7fad,function(_0x2ae3a4){return _0x2ae3a4[_0x46db('0x5a')];})},'transaction':_0x337d9a})['then'](function(){var _0x2758b9=_['map'](_0x3d7fad,function(_0xe35119){_0xe35119['userProfileId']=_0x2bba34[_0x46db('0x4c')]['id'];return _0xe35119;});var _0xaed8a5=[];return BPromise[_0x46db('0x57')](_0x2758b9,function(_0x3b9a16){return db[_0x46db('0x5f')][_0x46db('0x4e')](_0x3b9a16,{'include':[{'model':db[_0x46db('0x59')],'as':_0x46db('0x5c')}],'raw':!![],'transaction':_0x337d9a})[_0x46db('0x2b')](function(_0x1d539a){_0xaed8a5[_0x46db('0x60')](_0x1d539a[_0x46db('0x56')]({'plain':!![]}));});})['then'](function(){return _0xaed8a5;});});});}})[_0x46db('0x2b')](function(_0x480f62){return _0x480f62;})[_0x46db('0x2b')](respondWithResult(_0x25a69c,null))['catch'](handleError(_0x25a69c,null));};exports[_0x46db('0x61')]=function(_0x40b6f0,_0x94c211){var _0xef9f7b;return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x40b6f0[_0x46db('0x4c')]['id']},'attributes':['id',_0x46db('0x2f')]})[_0x46db('0x2b')](handleEntityNotFound(_0x94c211,null))[_0x46db('0x2b')](function(_0x270bdb){if(_0x270bdb){_0xef9f7b=_0x270bdb;return db[_0x46db('0x5f')][_0x46db('0x2c')]({'where':{'userProfileId':_0x40b6f0[_0x46db('0x4c')]['id'],'sectionId':_0x40b6f0[_0x46db('0x38')]['ids']}});}})['then'](function(){return _0xef9f7b;})[_0x46db('0x2b')](respondWithStatusCode(_0x94c211,null))[_0x46db('0x4a')](handleError(_0x94c211,null));};exports['getSections']=function(_0x415f7e,_0x4b3cfa){var _0x30c54a=[];var _0x31572c=[];return db[_0x46db('0x5f')]['findAll']({'where':{'userProfileId':_0x415f7e['params']['id']},'raw':!![]})[_0x46db('0x2b')](function(_0xb9a7df){_0x30c54a=_[_0x46db('0x44')](_0xb9a7df,function(_0x1903be){return _0x1903be[_0x46db('0x62')]===0x1||_[_0x46db('0x63')]([0x3eb,0x709],_0x1903be[_0x46db('0x5a')]);});if(!_[_0x46db('0x64')](_0x30c54a)){return _[_0x46db('0x31')](_0x30c54a,function(_0x249744){return _0x249744[_0x46db('0x5a')];});}else{return;}})['then'](function(_0xbe99ac){if(_0xbe99ac)_0x31572c=_0xbe99ac;if(_['includes'](_0x31572c,0x64)){var _0x34ac25=_[_0x46db('0x4d')](_0x30c54a,{'sectionId':0x64});return hasDefaultDashboard(_0x34ac25)[_0x46db('0x2b')](function(_0x46a4fa){return _[_0x46db('0x31')](_0x30c54a,function(_0x4c976a){if(_0x4c976a[_0x46db('0x5a')]===0x64){_0x4c976a[_0x46db('0x65')]=_0x46a4fa;}return _0x4c976a;});});}else{return;}})[_0x46db('0x2b')](function(_0x223539){if(_0x223539)_0x30c54a=_0x223539;if(_[_0x46db('0x63')](_0x31572c,0x3eb)){var _0x97f613=_[_0x46db('0x4d')](_0x30c54a,{'sectionId':0x3eb});return getCustomDashboards(_0x97f613)[_0x46db('0x2b')](function(_0x5ef702){return _[_0x46db('0x31')](_0x30c54a,function(_0x1c3bfd){if(_0x97f613[_0x46db('0x62')]){if(_0x1c3bfd[_0x46db('0x5a')]===0x3eb){_0x1c3bfd[_0x46db('0x65')]=_0x5ef702;}}else{if(_0x1c3bfd['sectionId']===0x64){_0x1c3bfd[_0x46db('0x65')]=_0x5ef702;}}return _0x1c3bfd;});});}else{return;}})[_0x46db('0x2b')](function(_0x3835b8){if(_0x3835b8)_0x30c54a=_0x3835b8;if(_[_0x46db('0x63')](_0x31572c,0x709)){var _0x407ddf=_['find'](_0x30c54a,{'sectionId':0x709});return getPlugins(_0x407ddf)['then'](function(_0x3e8ad6){if(_0x407ddf[_0x46db('0x62')]){return _[_0x46db('0x31')](_0x30c54a,function(_0x5ca70e){if(_0x5ca70e[_0x46db('0x5a')]===0x709){_0x5ca70e[_0x46db('0x65')]=_0x3e8ad6;}return _0x5ca70e;});}else{var _0x4b3e85={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3e8ad6};var _0xdeb43f=_['map'](_0x30c54a);_0xdeb43f[_0x46db('0x60')](_0x4b3e85);return _0xdeb43f;}});}else{return;}})[_0x46db('0x2b')](function(_0x39d6d7){if(_0x39d6d7)_0x30c54a=_0x39d6d7;return _[_0x46db('0x44')](_0x30c54a,['enabled',0x1]);})[_0x46db('0x2b')](respondWithResult(_0x4b3cfa,null))[_0x46db('0x4a')](handleError(_0x4b3cfa,null));};function hasDefaultDashboard(_0x4ab88a){var _0x19e94b=[0x65];return new BPromise(function(_0x1c3b2e,_0x273bf4){try{if(_0x4ab88a['autoAssociation']){_0x1c3b2e(_0x19e94b);}else{return db[_0x46db('0x59')][_0x46db('0x66')]({'where':{'sectionId':_0x4ab88a['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x25ca0a){_0x25ca0a?_0x1c3b2e(_0x19e94b):_0x1c3b2e();});}}catch(_0x1eb672){_0x273bf4(_0x1eb672);}});}function getCustomDashboards(_0x222e99){var _0x560968=[];return new BPromise(function(_0x1a1ad9,_0x2f734d){try{if(_0x222e99[_0x46db('0x58')]){return db[_0x46db('0x67')][_0x46db('0x48')]({'raw':!![]})[_0x46db('0x2b')](function(_0x33ad58){_0x33ad58['forEach'](function(_0x3a242a){_0x560968[_0x46db('0x60')](_0x3a242a['id']+0x1869f);});_0x1a1ad9(_0x560968);});}else{return db[_0x46db('0x59')][_0x46db('0x48')]({'where':{'sectionId':_0x222e99['id']},'raw':!![]})['then'](function(_0x226d31){_0x226d31['forEach'](function(_0x544b6a){_0x560968[_0x46db('0x60')](_0x544b6a[_0x46db('0x68')]+0x1869f);});_0x1a1ad9(_0x560968);});}}catch(_0x46ae11){_0x2f734d(_0x46ae11);}});}function getPlugins(_0x54012f){var _0x5dcce9=[];return new BPromise(function(_0x53a51b,_0x1be762){try{if(_0x54012f[_0x46db('0x58')]){return db[_0x46db('0x69')][_0x46db('0x48')]({'raw':!![]})[_0x46db('0x2b')](function(_0xedae84){_0xedae84[_0x46db('0x6a')](function(_0x30a9ac){_0x5dcce9[_0x46db('0x60')](_0x30a9ac['id']+0x15b38);});_0x53a51b(_0x5dcce9);});}else{return db[_0x46db('0x59')]['findAll']({'where':{'sectionId':_0x54012f['id']},'raw':!![]})[_0x46db('0x2b')](function(_0x28c171){_0x28c171[_0x46db('0x6a')](function(_0x5ea0e7){_0x5dcce9[_0x46db('0x60')](_0x5ea0e7[_0x46db('0x68')]+0x15b38);});_0x53a51b(_0x5dcce9);});}}catch(_0x39bcb6){_0x1be762(_0x39bcb6);}});}exports[_0x46db('0x6b')]=function(_0x48c577,_0x2b3675){return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x48c577['params']['id']}})['then'](handleEntityNotFound(_0x2b3675,null))[_0x46db('0x2b')](function(_0x193e4a){if(_0x193e4a){return db[_0x46db('0x54')][_0x46db('0x55')](function(_0x302272){return db[_0x46db('0x5f')][_0x46db('0x48')]({'where':{'userProfileId':_0x48c577[_0x46db('0x4c')]['id']},'attributes':['id'],'raw':!![]})[_0x46db('0x2b')](function(_0x3dc85c){if(_0x3dc85c){return db[_0x46db('0x5f')][_0x46db('0x2c')]({'where':{'userProfileId':_0x48c577[_0x46db('0x4c')]['id'],'id':_['map'](_0x3dc85c,function(_0x239350){return _0x239350['id'];})},'transaction':_0x302272});}})[_0x46db('0x2b')](function(_0x1cb5ae){var _0x3819f0=_['map'](_0x48c577[_0x46db('0x4f')],function(_0x1bf5ee){_0x1bf5ee[_0x46db('0x5b')]=_0x48c577[_0x46db('0x4c')]['id'];return _0x1bf5ee;});return db[_0x46db('0x5f')][_0x46db('0x6c')](_0x3819f0,{'raw':!![],'transaction':_0x302272});})['then'](function(_0x101a37){var _0x4ff40d=_[_0x46db('0x44')](_['map'](_0x101a37,function(_0x4650b6){return _0x4650b6['get']({'plain':!![]});}),{'includeAll':![]});if(_0x4ff40d){return db[_0x46db('0x5f')][_0x46db('0x48')]({'where':{'userProfileId':_0x48c577[_0x46db('0x4c')]['id'],'sectionId':_[_0x46db('0x31')](_0x4ff40d,function(_0x2a8a6f){return _0x2a8a6f[_0x46db('0x5a')];})},'attributes':['id',_0x46db('0x5a')],'raw':!![]})[_0x46db('0x2b')](function(_0x456cb3){var _0x24da5c=_[_0x46db('0x31')](_0x48c577[_0x46db('0x4f')],function(_0x1933b9){_0x1933b9[_0x46db('0x5b')]=_0x48c577[_0x46db('0x4c')]['id'];return _0x1933b9;});return db[_0x46db('0x59')][_0x46db('0x6c')](_0x24da5c,{'raw':!![],'transaction':_0x302272});});}})[_0x46db('0x4a')](handleError(_0x2b3675,null));});}})[_0x46db('0x2b')](function(_0x2626b8){var _0x3c39b0=_[_0x46db('0x31')](_0x2626b8,function(_0x12c196){return _0x12c196[_0x46db('0x56')]({'plain':!![]});});})[_0x46db('0x2b')](respondWithResult(_0x2b3675,null))['catch'](handleError(_0x2b3675,null));};exports[_0x46db('0x6d')]=function(_0x15a414,_0x256a1a,_0x4368b4){return db['UserProfile'][_0x46db('0x4d')]({'where':{'id':_0x15a414[_0x46db('0x4c')]['id']}})['then'](handleEntityNotFound(_0x256a1a,null))['then'](function(_0x504f71){if(_0x504f71){return _0x504f71[_0x46db('0x6d')](_0x15a414[_0x46db('0x38')][_0x46db('0x6e')]);}})['then'](respondWithStatusCode(_0x256a1a,null))[_0x46db('0x4a')](handleError(_0x256a1a,null));};exports[_0x46db('0x6f')]=function(_0x1c22b9,_0x85a066){var _0x6d428b={};if(!_0x1c22b9[_0x46db('0x38')][_0x46db('0x70')])throw new Error(_0x46db('0x71'));if(!_0x1c22b9[_0x46db('0x38')][_0x46db('0x72')](_0x46db('0x3e'))){_0x6d428b['limit']=qs[_0x46db('0x25')](_0x1c22b9['query']['limit']);_0x6d428b[_0x46db('0x23')]=qs[_0x46db('0x23')](_0x1c22b9['query'][_0x46db('0x23')]);}return db[_0x46db('0x32')][_0x46db('0x4d')]({'where':{'id':_0x1c22b9[_0x46db('0x4c')]['id']}})[_0x46db('0x2b')](function(_0x446128){if(!_0x446128)throw new Error('No\x20User\x20Profile\x20found\x20for\x20id\x20'+_0x1c22b9[_0x46db('0x4c')]['id']);return db[_0x46db('0x32')][_0x46db('0x6f')](_0x1c22b9);})[_0x46db('0x2b')](respondWithFilteredResult(_0x85a066,_0x6d428b))[_0x46db('0x4a')](handleError(_0x85a066,null));};
\ No newline at end of file
index 615eecf..2c0a32b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd26f=['emit','hook','exports','events','../../mysqldb','save','update','remove'];(function(_0x4702ee,_0xaf6a45){var _0x62ca7d=function(_0x5b3af7){while(--_0x5b3af7){_0x4702ee['push'](_0x4702ee['shift']());}};_0x62ca7d(++_0xaf6a45);}(_0xd26f,0x113));var _0xfd26=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xd26f[_0x1caf6a];return _0x1bf493;};'use strict';var EventEmitter=require(_0xfd26('0x0'));var UserProfile=require(_0xfd26('0x1'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfd26('0x2'),'afterUpdate':_0xfd26('0x3'),'afterDestroy':_0xfd26('0x4')};function emitEvent(_0x3e3583){return function(_0x30e7fc,_0x29c235,_0x3983a2){UserProfileEvents[_0xfd26('0x5')](_0x3e3583+':'+_0x30e7fc['id'],_0x30e7fc);UserProfileEvents[_0xfd26('0x5')](_0x3e3583,_0x30e7fc);_0x3983a2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0xfd26('0x6')](e,emitEvent(event));}}module[_0xfd26('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0xf963=['emit','hook','exports','events','setMaxListeners','save'];(function(_0x4c3b62,_0x49ba96){var _0x48a666=function(_0x3661db){while(--_0x3661db){_0x4c3b62['push'](_0x4c3b62['shift']());}};_0x48a666(++_0x49ba96);}(_0xf963,0x11d));var _0x3f96=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xf963[_0x1d1779];return _0x2377e9;};'use strict';var EventEmitter=require(_0x3f96('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x3f96('0x1')](0x0);var events={'afterCreate':_0x3f96('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1f30a1){return function(_0x1e7cb9,_0x3a6815,_0x1a91ab){UserProfileEvents['emit'](_0x1f30a1+':'+_0x1e7cb9['id'],_0x1e7cb9);UserProfileEvents[_0x3f96('0x3')](_0x1f30a1,_0x1e7cb9);_0x1a91ab(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile[_0x3f96('0x4')](e,emitEvent(event));}}module[_0x3f96('0x5')]=UserProfileEvents;
\ No newline at end of file
index 5122c54..fe0436e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9536=['options','includeAll','include','reportType','custom','count','rows','Tags','color','tag','ThroughTags','openTabs','true','chat','dataValues','fax','openchannel','lodash','./userProfile.attributes','../../components/parsers/qs','squel','models','filter','field','findAll','then','map','catch','value','model','associatedResources','name','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','childModel','SquareProject','squarerecordings','SquareRecording','parentSections','SquareProjects','projects','contacts','CmContact','Lists','lists','CmList','CmCompany','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','FaxQueue','FaxAccount','inboundroutes','internalroutes','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','whatsappqueues','whatsappaccounts','WhatsappAccount','teams','Team','queuecampaigns','users','agents','telephones','Users','user','zendeskaccounts','salesforceaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','pauses','Pause','Schedule','sounds','Tag','Template','triggers','Trigger','trunks','Trunk','variables','Variable','Plugin','extractedreports','Reports','reportId','AnalyticMetric','charAt','toUpperCase','Sequelize','SELECT','select','ui.','InteractionId','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','toString','OpenTabs','define','UserProfile','user_profiles','query','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','rawAttributes','keys','filters','attributes','intersection','fields','nolimit','limit','offset','order','pick','key','VIRTUAL','foreignKey','forEach','merge'];(function(_0x274e2c,_0x29eba9){var _0x788e50=function(_0x62924c){while(--_0x62924c){_0x274e2c['push'](_0x274e2c['shift']());}};_0x788e50(++_0x29eba9);}(_0x9536,0x179));var _0x6953=function(_0x592d48,_0x23f1ba){_0x592d48=_0x592d48-0x0;var _0x5d789e=_0x9536[_0x592d48];return _0x5d789e;};'use strict';var _=require(_0x6953('0x0'));var attributes=require(_0x6953('0x1'));var qs=require(_0x6953('0x2'));var squel=require(_0x6953('0x3'));module['exports']=function(_0xc3e4dd){var _0x53b172=_0xc3e4dd[_0x6953('0x4')];function _0x3c32c7(_0x1dee7c,_0x3ba964){return new Promise(function(_0x2f3cc3,_0x494ac2){if(!_0x3ba964)return _0x2f3cc3(null);var _0x2b273e=_0x3ba964[_0x6953('0x5')]?{[_0x3ba964[_0x6953('0x5')][_0x6953('0x6')]]:_0x3ba964[_0x6953('0x5')]['value']}:undefined;return _0x53b172[_0x1dee7c][_0x6953('0x7')]({'where':_0x2b273e,'raw':!![]})[_0x6953('0x8')](function(_0x449acb){_0x3ba964['associatedResources']=_[_0x6953('0x9')](_0x449acb,'id');_0x2f3cc3(_0x3ba964);})[_0x6953('0xa')](function(_0x300c48){_0x494ac2(_0x300c48);});});}function _0xb13f2c(_0x448c89,_0x1f3062){return new Promise(function(_0x246534,_0x2144c5){var _0xdd0b40=_0x448c89['filter']?{[_0x448c89[_0x6953('0x5')]['field']]:_0x448c89[_0x6953('0x5')][_0x6953('0xb')]}:undefined;return _0x53b172[_0x448c89[_0x6953('0xc')]][_0x6953('0x7')]({'where':_0xdd0b40,'raw':!![]})[_0x6953('0x8')](function(_0x244713){_0x1f3062[_0x6953('0xd')]=_[_0x6953('0x9')](_0x244713,function(_0x28433e){return _0x28433e[_0x6953('0xe')];});_0x246534(_0x1f3062);})[_0x6953('0xa')](function(_0x548473){_0x2144c5(_0x548473);});});}function _0x5f49db(_0x399b9b,_0x44e8a2,_0x16b79b){if(!_0x44e8a2)return Promise[_0x6953('0xf')](null);return new Promise(function(_0x510d46,_0x1b6dcb){return _0x53b172[_0x6953('0x10')]['findAll']({'where':{'sectionId':_0x44e8a2['id']},'raw':!![]})[_0x6953('0x8')](function(_0x3207dd){if(_0x399b9b[_0x6953('0x6')]&&_0x399b9b[_0x6953('0x6')]!=='id'){_0x44e8a2[_0x6953('0xd')]=_['map'](_0x3207dd,function(_0x3a93e1){return _0x3a93e1[_0x399b9b[_0x6953('0x6')]];});}else{if(_0x16b79b===_0x6953('0x11')){_0x44e8a2[_0x6953('0xd')]=_[_0x6953('0x9')](_0x3207dd,function(_0x5e33ec){return{'id':_0x5e33ec[_0x6953('0x12')],'type':_0x5e33ec[_0x6953('0x13')]};});}else{_0x44e8a2['associatedResources']=_[_0x6953('0x9')](_0x3207dd,function(_0x40c9d1){return _0x40c9d1[_0x6953('0x12')];});}}_0x510d46(_0x44e8a2);})[_0x6953('0xa')](function(_0x53640a){_0x1b6dcb(_0x53640a);});});}function _0x37f339(_0x231cb2,_0x2a7f6a){var _0x508ea7={'parentSections':[]};switch(_0x231cb2['toLowerCase']()){case'squareprojects':_0x508ea7[_0x6953('0x14')]=_0x6953('0x15');break;case'odbc':_0x508ea7[_0x6953('0x14')]='SquareOdbc';break;case _0x6953('0x16'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x17');_0x508ea7[_0x6953('0x18')]=[{'name':_0x6953('0x19'),'field':_0x6953('0xe'),'foreignKey':'projectName'}];break;case _0x6953('0x1a'):_0x508ea7[_0x6953('0x14')]='JscriptyProject';break;case _0x6953('0x1b'):_0x508ea7['childModel']=_0x6953('0x1c');_0x508ea7[_0x6953('0x18')]=[{'name':_0x6953('0x1d'),'field':'id','foreignKey':'ListId'}];break;case _0x6953('0x1e'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x1f');break;case'companies':_0x508ea7[_0x6953('0x14')]=_0x6953('0x20');break;case'globalcustomfields':_0x508ea7['childModel']=_0x6953('0x21');break;case _0x6953('0x22'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x23');break;case _0x6953('0x24'):_0x508ea7['childModel']=_0x6953('0x25');break;case'faxqueues':_0x508ea7[_0x6953('0x14')]=_0x6953('0x26');break;case'faxaccounts':_0x508ea7['childModel']=_0x6953('0x27');break;case _0x6953('0x28'):case _0x6953('0x29'):case'outboundroutes':_0x508ea7[_0x6953('0x14')]='VoiceExtension';break;case'contexts':_0x508ea7['childModel']='VoiceContext';break;case _0x6953('0x2a'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x2b');break;case _0x6953('0x2c'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x2d');_0x508ea7['parentSections']=[{'name':_0x6953('0x2e'),'field':'name','foreignKey':_0x6953('0x2f'),'model':'User','filter':{'field':_0x6953('0x30'),'value':[_0x6953('0x31')]}},{'name':_0x6953('0x32'),'field':_0x6953('0xe'),'foreignKey':'membername','model':_0x6953('0x33'),'filter':{'field':_0x6953('0x30'),'value':[_0x6953('0x34')]}},{'name':_0x6953('0x35'),'field':_0x6953('0xe'),'foreignKey':_0x6953('0x36'),'model':_0x6953('0x37'),'filter':{'field':_0x6953('0x13'),'value':[_0x6953('0x38')]}},{'name':_0x6953('0x39'),'field':_0x6953('0xe'),'foreignKey':'queue','model':_0x6953('0x37'),'filter':{'field':_0x6953('0x13'),'value':[_0x6953('0x3a')]}}];break;case'musiconholds':_0x508ea7['childModel']=_0x6953('0x3b');break;case'chanspies':_0x508ea7['childModel']=_0x6953('0x3c');break;case _0x6953('0x3d'):_0x508ea7['childModel']=_0x6953('0x3e');break;case _0x6953('0x3f'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x40');break;case _0x6953('0x41'):_0x508ea7[_0x6953('0x14')]='MailQueue';break;case _0x6953('0x42'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x43');break;case _0x6953('0x44'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x45');break;case'openchannelqueues':_0x508ea7['childModel']=_0x6953('0x46');break;case'openchannelaccounts':_0x508ea7['childModel']=_0x6953('0x47');break;case _0x6953('0x48'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x49');break;case _0x6953('0x4a'):_0x508ea7['childModel']='SmsAccount';break;case _0x6953('0x4b'):_0x508ea7[_0x6953('0x14')]='WhatsappQueue';break;case _0x6953('0x4c'):_0x508ea7['childModel']=_0x6953('0x4d');break;case _0x6953('0x4e'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x4f');break;case'voicequeues':case _0x6953('0x50'):_0x508ea7[_0x6953('0x14')]='VoiceQueue';if(_0x2a7f6a){_0x508ea7[_0x6953('0x18')]=[{'name':_0x6953('0x35')},{'name':_0x6953('0x39')}];}break;case _0x6953('0x51'):case _0x6953('0x52'):case _0x6953('0x53'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x33');if(_0x2a7f6a){_0x508ea7[_0x6953('0x18')]=[{'name':_0x6953('0x54'),'filter':{'field':_0x6953('0x30'),'value':['admin',_0x6953('0x55')]},'ignore':!![]},{'name':'Agents'},{'name':_0x6953('0x32')}];}break;case _0x6953('0x56'):_0x508ea7[_0x6953('0x14')]='ZendeskAccount';break;case _0x6953('0x57'):_0x508ea7[_0x6953('0x14')]='SalesforceAccount';break;case'freshdeskaccounts':_0x508ea7[_0x6953('0x14')]=_0x6953('0x58');break;case _0x6953('0x59'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x5a');break;case _0x6953('0x5b'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x5c');break;case _0x6953('0x5d'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x5e');break;case'vtigeraccounts':_0x508ea7['childModel']=_0x6953('0x33');break;case _0x6953('0x5f'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x60');break;case _0x6953('0x61'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x62');break;case _0x6953('0x63'):_0x508ea7[_0x6953('0x14')]='Dashboard';break;case'intervals':_0x508ea7['childModel']='Interval';break;case _0x6953('0x64'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x65');break;case'scheduler':_0x508ea7['childModel']=_0x6953('0x66');break;case _0x6953('0x67'):_0x508ea7[_0x6953('0x14')]='Sound';break;case'tags':_0x508ea7[_0x6953('0x14')]=_0x6953('0x68');break;case'templates':_0x508ea7['childModel']=_0x6953('0x69');break;case _0x6953('0x6a'):_0x508ea7[_0x6953('0x14')]=_0x6953('0x6b');break;case _0x6953('0x6c'):_0x508ea7['childModel']=_0x6953('0x6d');break;case _0x6953('0x6e'):_0x508ea7['childModel']=_0x6953('0x6f');break;case'plugins':_0x508ea7[_0x6953('0x14')]=_0x6953('0x70');break;case _0x6953('0x71'):_0x508ea7[_0x6953('0x14')]='AnalyticExtractedReport';_0x508ea7[_0x6953('0x18')]=[{'name':_0x6953('0x72'),'field':'id','foreignKey':_0x6953('0x73')}];break;case'metrics':_0x508ea7['childModel']=_0x6953('0x74');break;}return _0x508ea7;}function _0x224ce6(_0x2d0abd,_0x482f3b){var _0x4c6180=_0x2d0abd[_0x6953('0x75')](0x0)[_0x6953('0x76')]()+_0x2d0abd['slice'](0x1);var _0x4f3df2={'type':_0x53b172[_0x6953('0x77')]['QueryTypes'][_0x6953('0x78')],'raw':!![]};return new Promise(function(_0x1e824a,_0x109b5e){var _0x4443e2=squel[_0x6953('0x79')]()['field'](_0x6953('0x7a')+_0x4c6180+_0x6953('0x7b'),'id')[_0x6953('0x6')]('ui.createdAt')['from'](_0x6953('0x7c')+_0x2d0abd+_0x6953('0x7d'),'ui')[_0x6953('0x7e')](_0x6953('0x7f'),_0x482f3b['id']);return _0x53b172[_0x6953('0x80')]['query'](_0x4443e2[_0x6953('0x81')](),_0x4f3df2)[_0x6953('0x8')](function(_0xe93bf2){_0x482f3b[_0x4c6180+_0x6953('0x82')]=_0xe93bf2;_0x1e824a(_0xe93bf2);})[_0x6953('0xa')](function(_0x1d3520){_0x109b5e(_0x1d3520);});});}return _0xc3e4dd[_0x6953('0x83')](_0x6953('0x84'),attributes,{'tableName':_0x6953('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0xcbbba5){var _0xb26c63={'raw':![],'where':{}};var _0x390ba0={};var _0x25ac55={'count':0x0,'rows':[]};var _0x583e1f=_0xcbbba5[_0x6953('0x86')][_0x6953('0x87')];var _0x3f5ab9=_0xcbbba5[_0x6953('0x86')][_0x6953('0x88')]||![];var _0x523a4a=_0x37f339(_0x583e1f,_0x3f5ab9);if(!_0x523a4a['childModel'])throw new Error(_0x6953('0x89')+_0x583e1f+'\x27');var _0x54822e=[{'name':_0x583e1f}];if(!_[_0x6953('0x8a')](_0x523a4a[_0x6953('0x18')]))_0x54822e=_0x523a4a[_0x6953('0x18')];var _0x235739=[];for(var _0x4c8e6c=0x0;_0x4c8e6c<_0x54822e[_0x6953('0x8b')];_0x4c8e6c++){_0x235739[_0x6953('0x8c')](_0x53b172[_0x6953('0x8d')][_0x6953('0x8e')]({'where':{'userProfileId':_0xcbbba5[_0x6953('0x8f')]['id'],'name':_0x54822e[_0x4c8e6c][_0x6953('0xe')]},'raw':!![]}));}return Promise[_0x6953('0x90')](_0x235739)[_0x6953('0x8')](function(_0x3582b6){var _0x155c63=_[_0x6953('0x5')](_0x3582b6,function(_0xce3eef){return _0xce3eef?_0xce3eef:undefined;});var _0x2e97ac=_[_0x6953('0x5')](_0x54822e,[_0x6953('0x91'),!![]]);var _0x5c5942=_[_0x6953('0x8a')](_0x155c63)&&_[_0x6953('0x8a')](_0x2e97ac)?null:_[_0x6953('0x92')](_0x2e97ac,_0x155c63);if(!_0x5c5942)return null;var _0x2d4b48=[];for(var _0x3f0c9e=0x0;_0x3f0c9e<_0x5c5942[_0x6953('0x8b')];_0x3f0c9e++){var _0x3e19f1=_['find'](_0x54822e,function(_0x3bb873){return _0x5c5942[_0x3f0c9e]?_0x3bb873[_0x6953('0xe')]===_0x5c5942[_0x3f0c9e]['name']:null;});if(_0x3e19f1){if(_0x5c5942[_0x3f0c9e][_0x6953('0x91')]){_0x2d4b48[_0x6953('0x8c')](_0x3c32c7(_0x523a4a[_0x6953('0x14')],_0x5c5942[_0x3f0c9e]));}else{if(!_0x5c5942[_0x3f0c9e]['autoAssociation']){_0x2d4b48['push'](_0x5f49db(_0x3e19f1,_0x5c5942[_0x3f0c9e],_0x523a4a[_0x6953('0x14')]));}else{if(_0x3e19f1[_0x6953('0xc')]){_0x2d4b48[_0x6953('0x8c')](_0xb13f2c(_0x3e19f1,_0x5c5942[_0x3f0c9e]));}}}}}return Promise[_0x6953('0x90')](_0x2d4b48);})[_0x6953('0x8')](function(_0x43a39f){var _0x3cf1c0=_0x43a39f;var _0x1515a9=null;if(_0x3cf1c0){_0x1515a9=_0x3cf1c0[_0x6953('0x8b')]===0x1?_0x3cf1c0[0x0]:null;}if(!_0x1515a9&&!_0x3cf1c0)return _0x25ac55;var _0x51bf39=_0x53b172[_0x523a4a[_0x6953('0x14')]][_0x6953('0x93')];_0x390ba0[_0x6953('0xc')]=_[_0x6953('0x94')](_0x51bf39);_0x390ba0['query']=_[_0x6953('0x94')](_0xcbbba5[_0x6953('0x86')]);_0x390ba0[_0x6953('0x95')]=_['intersection'](_0x390ba0[_0x6953('0xc')],_0x390ba0[_0x6953('0x86')]);_0xb26c63[_0x6953('0x96')]=_[_0x6953('0x97')](_0x390ba0['model'],qs[_0x6953('0x98')](_0xcbbba5[_0x6953('0x86')][_0x6953('0x98')]));_0xb26c63[_0x6953('0x96')]=_0xb26c63['attributes']['length']?_0xb26c63[_0x6953('0x96')]:_0x390ba0[_0x6953('0xc')];if(!_0xcbbba5['query']['hasOwnProperty'](_0x6953('0x99'))){_0xb26c63[_0x6953('0x9a')]=qs[_0x6953('0x9a')](_0xcbbba5[_0x6953('0x86')]['limit']);_0xb26c63[_0x6953('0x9b')]=qs[_0x6953('0x9b')](_0xcbbba5['query'][_0x6953('0x9b')]);}_0xb26c63[_0x6953('0x9c')]=qs['sort'](_0xcbbba5['query']['sort']);_0xb26c63[_0x6953('0x7e')]=qs[_0x6953('0x95')](_[_0x6953('0x9d')](_0xcbbba5[_0x6953('0x86')],_0x390ba0[_0x6953('0x95')]));if(_0xcbbba5[_0x6953('0x86')][_0x6953('0x5')]){_0xb26c63[_0x6953('0x7e')]=_['merge'](_0xb26c63[_0x6953('0x7e')],{'$or':_[_0x6953('0x9')](_0x51bf39,function(_0x131ea7){if(_0x131ea7[_0x6953('0x13')][_0x6953('0x9e')]!==_0x6953('0x9f')){var _0x481102={};_0x481102[_0x131ea7[_0x6953('0x6')]]={'$like':'%'+_0xcbbba5['query'][_0x6953('0x5')]+'%'};return _0x481102;}})});}var _0x52e762=[];var _0x1691dc=null;var _0x9de87a={};if(_0x1515a9){_0x1691dc=_[_0x6953('0x8e')](_0x54822e,['name',_0x1515a9[_0x6953('0xe')]]);if(_0x1691dc[_0x6953('0x6')]){_0x9de87a={};if(_0x523a4a[_0x6953('0x14')]===_0x6953('0x11')){_0x9de87a[_0x1691dc[_0x6953('0xa0')]]=_[_0x6953('0x9')](_0x1515a9['associatedResources'],'id');}else{_0x9de87a[_0x1691dc[_0x6953('0xa0')]]=_0x1515a9[_0x6953('0xd')];}_0x52e762[_0x6953('0x8c')](_0x9de87a);}else{_0xb26c63[_0x6953('0x7e')]['id']=_0x1515a9[_0x6953('0xd')];}}else{for(var _0x32c681=0x0;_0x32c681<_0x3cf1c0[_0x6953('0x8b')];_0x32c681++){_0x1691dc=_[_0x6953('0x8e')](_0x54822e,[_0x6953('0xe'),_0x3cf1c0[_0x32c681][_0x6953('0xe')]]);if(_0x1691dc[_0x6953('0x6')]){_0x9de87a={};_0x9de87a[_0x1691dc['foreignKey']]=_0x3cf1c0[_0x32c681][_0x6953('0xd')];_0x52e762[_0x6953('0x8c')](_0x9de87a);}else{if(!_0xb26c63[_0x6953('0x7e')]['id'])_0xb26c63[_0x6953('0x7e')]['id']=[];_0x3cf1c0[_0x32c681][_0x6953('0xd')][_0x6953('0xa1')](function(_0x16f3db){_0xb26c63[_0x6953('0x7e')]['id'][_0x6953('0x8c')](_0x16f3db);});}}}if(!_[_0x6953('0x8a')](_0x52e762)){_0xb26c63[_0x6953('0x7e')]=_['merge'](_0xb26c63[_0x6953('0x7e')],{'$and':{'$or':_0x52e762}});}_0xb26c63=_[_0x6953('0xa2')]({},_0xb26c63,_0xcbbba5[_0x6953('0xa3')]);if(_0x1515a9&&!_0x1515a9['autoAssociation']&&_0x523a4a[_0x6953('0x14')]==='AnalyticExtractedReport'){if(_0xcbbba5['query'][_0x6953('0xa4')]){_0xb26c63[_0x6953('0xa5')]=[{'all':!![]}];}return _0x53b172[_0x523a4a[_0x6953('0x14')]][_0x6953('0x7')](_0xb26c63)[_0x6953('0x8')](function(_0x2928c3){var _0x228544=[];_0x2928c3['forEach'](function(_0x150720){var _0x3113c0;switch(_0x150720[_0x6953('0xa6')]){case'default':_0x3113c0=_[_0x6953('0x8e')](_0x1515a9[_0x6953('0xd')],function(_0x4e48ef){return _0x4e48ef['id']===_0x150720[_0x6953('0x73')]&&_0x4e48ef['type']==='DefaultReports';});break;case _0x6953('0xa7'):_0x3113c0=_['find'](_0x1515a9['associatedResources'],function(_0x3c3dd4){return _0x3c3dd4['id']===_0x150720[_0x6953('0x73')]&&_0x3c3dd4[_0x6953('0x13')]==='CustomReports';});break;}if(_0x3113c0)_0x228544[_0x6953('0x8c')](_0x150720);});_0x25ac55[_0x6953('0xa8')]=_0x228544['length'];_0x25ac55[_0x6953('0xa9')]=_0x228544;return _0x25ac55;});}else{return _0x53b172[_0x523a4a[_0x6953('0x14')]][_0x6953('0xa8')]({'where':_0xb26c63[_0x6953('0x7e')]})[_0x6953('0x8')](function(_0x31d847){_0x25ac55[_0x6953('0xa8')]=_0x31d847;if(_0xcbbba5[_0x6953('0x86')][_0x6953('0xa4')]){if(_0x523a4a['childModel']===_0x6953('0x1c')){_0xb26c63[_0x6953('0xa5')]=[{'model':_0x53b172['Tag'],'as':_0x6953('0xaa'),'attributes':['id',_0x6953('0xe'),_0x6953('0xab')],'required':_0xcbbba5[_0x6953('0x86')][_0x6953('0xac')]?!![]:![]},{'model':_0x53b172[_0x6953('0x68')],'as':_0x6953('0xad'),'attributes':['id','name',_0x6953('0xab')],'through':_0xcbbba5[_0x6953('0x86')][_0x6953('0xac')]?{'attributes':[],'where':{'TagId':_0xcbbba5[_0x6953('0x86')][_0x6953('0xac')]||undefined}}:{},'required':_0xcbbba5[_0x6953('0x86')][_0x6953('0xac')]?!![]:![]}];}else{_0xb26c63[_0x6953('0xa5')]=[{'all':!![]}];}}return _0x53b172[_0x523a4a[_0x6953('0x14')]]['findAll'](_0xb26c63);})[_0x6953('0x8')](function(_0x5661d2){_0x25ac55[_0x6953('0xa9')]=_0x5661d2;if(_0x583e1f==='Agents'&&_0xcbbba5[_0x6953('0x86')][_0x6953('0xae')]===_0x6953('0xaf')){var _0x46bcec=[];for(var _0x2dae06=0x0;_0x2dae06<_0x25ac55['rows'][_0x6953('0x8b')];_0x2dae06++){_0x46bcec['push'](_0x224ce6(_0x6953('0xb0'),_0x25ac55[_0x6953('0xa9')][_0x2dae06][_0x6953('0xb1')]));_0x46bcec[_0x6953('0x8c')](_0x224ce6('sms',_0x25ac55[_0x6953('0xa9')][_0x2dae06][_0x6953('0xb1')]));_0x46bcec[_0x6953('0x8c')](_0x224ce6(_0x6953('0xb2'),_0x25ac55[_0x6953('0xa9')][_0x2dae06][_0x6953('0xb1')]));_0x46bcec[_0x6953('0x8c')](_0x224ce6('mail',_0x25ac55[_0x6953('0xa9')][_0x2dae06][_0x6953('0xb1')]));_0x46bcec[_0x6953('0x8c')](_0x224ce6(_0x6953('0xb3'),_0x25ac55[_0x6953('0xa9')][_0x2dae06]['dataValues']));_0x46bcec['push'](_0x224ce6('whatsapp',_0x25ac55[_0x6953('0xa9')][_0x2dae06][_0x6953('0xb1')]));}return Promise[_0x6953('0x90')](_0x46bcec)['then'](function(){return _0x25ac55;});}return _0x25ac55;});}});}}});};
\ No newline at end of file
+var _0x0a6b=['fields','hasOwnProperty','limit','offset','sort','where','key','VIRTUAL','foreignKey','forEach','merge','options','AnalyticExtractedReport','includeAll','reportType','reportId','DefaultReports','CustomReports','count','Tag','Tags','color','ThroughTags','tag','include','rows','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','lodash','exports','models','filter','field','associatedResources','map','catch','value','model','findAll','name','resolve','UserProfileResource','then','resourceId','type','toLowerCase','squareprojects','SquareProject','odbc','childModel','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','CmContact','Lists','lists','CmList','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','ChatWebsite','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','VoiceContext','VoiceMail','VoiceRecording','Agents','membername','User','agent','VoiceQueues','queue','VoiceQueue','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','mailaccounts','MailAccount','mailsubstatuses','openchannelqueues','OpenchannelQueue','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','Team','queuecampaigns','users','agents','telephones','Users','role','user','Telephones','zendeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','scheduler','Schedule','tags','templates','triggers','Trigger','Trunk','Variable','plugins','Plugin','metrics','charAt','toUpperCase','Sequelize','QueryTypes','SELECT','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','section','Invalid\x20section\x20\x27','isEmpty','length','push','UserProfileSection','find','params','all','ignore','union','autoAssociation','keys','filters'];(function(_0x343a87,_0x287af9){var _0x432c43=function(_0x45cb62){while(--_0x45cb62){_0x343a87['push'](_0x343a87['shift']());}};_0x432c43(++_0x287af9);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x27787d,_0x3c832a){_0x27787d=_0x27787d-0x0;var _0x2ec19c=_0x0a6b[_0x27787d];return _0x2ec19c;};'use strict';var _=require(_0xb0a6('0x0'));var attributes=require('./userProfile.attributes');var qs=require('../../components/parsers/qs');var squel=require('squel');module[_0xb0a6('0x1')]=function(_0x50d3d5){var _0x2245d7=_0x50d3d5[_0xb0a6('0x2')];function _0x1d3b78(_0x544a64,_0x102ecd){return new Promise(function(_0x4cc3ae,_0xbbdf89){if(!_0x102ecd)return _0x4cc3ae(null);var _0x415e9e=_0x102ecd['filter']?{[_0x102ecd[_0xb0a6('0x3')][_0xb0a6('0x4')]]:_0x102ecd[_0xb0a6('0x3')]['value']}:undefined;return _0x2245d7[_0x544a64]['findAll']({'where':_0x415e9e,'raw':!![]})['then'](function(_0x2ded05){_0x102ecd[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x2ded05,'id');_0x4cc3ae(_0x102ecd);})[_0xb0a6('0x7')](function(_0x5252ed){_0xbbdf89(_0x5252ed);});});}function _0x35c956(_0x19b144,_0x5d1bf0){return new Promise(function(_0x23eade,_0x24e4fd){var _0x304167=_0x19b144[_0xb0a6('0x3')]?{[_0x19b144[_0xb0a6('0x3')][_0xb0a6('0x4')]]:_0x19b144[_0xb0a6('0x3')][_0xb0a6('0x8')]}:undefined;return _0x2245d7[_0x19b144[_0xb0a6('0x9')]][_0xb0a6('0xa')]({'where':_0x304167,'raw':!![]})['then'](function(_0x2b801a){_0x5d1bf0['associatedResources']=_[_0xb0a6('0x6')](_0x2b801a,function(_0x5351ed){return _0x5351ed[_0xb0a6('0xb')];});_0x23eade(_0x5d1bf0);})['catch'](function(_0x1d837f){_0x24e4fd(_0x1d837f);});});}function _0x382c2f(_0x93243e,_0x5673ad,_0x56b594){if(!_0x5673ad)return Promise[_0xb0a6('0xc')](null);return new Promise(function(_0x295b53,_0x59bc9c){return _0x2245d7[_0xb0a6('0xd')][_0xb0a6('0xa')]({'where':{'sectionId':_0x5673ad['id']},'raw':!![]})[_0xb0a6('0xe')](function(_0x567dd5){if(_0x93243e[_0xb0a6('0x4')]&&_0x93243e[_0xb0a6('0x4')]!=='id'){_0x5673ad[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x567dd5,function(_0x4406d0){return _0x4406d0[_0x93243e[_0xb0a6('0x4')]];});}else{if(_0x56b594==='AnalyticExtractedReport'){_0x5673ad[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x567dd5,function(_0x2d0fca){return{'id':_0x2d0fca[_0xb0a6('0xf')],'type':_0x2d0fca[_0xb0a6('0x10')]};});}else{_0x5673ad[_0xb0a6('0x5')]=_[_0xb0a6('0x6')](_0x567dd5,function(_0x16e053){return _0x16e053['resourceId'];});}}_0x295b53(_0x5673ad);})[_0xb0a6('0x7')](function(_0x5c6e66){_0x59bc9c(_0x5c6e66);});});}function _0x1322ec(_0x2f1e97,_0x4997df){var _0x4aa68d={'parentSections':[]};switch(_0x2f1e97[_0xb0a6('0x11')]()){case _0xb0a6('0x12'):_0x4aa68d['childModel']=_0xb0a6('0x13');break;case _0xb0a6('0x14'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x16');break;case'squarerecordings':_0x4aa68d['childModel']=_0xb0a6('0x17');_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x19'),'field':'name','foreignKey':_0xb0a6('0x1a')}];break;case _0xb0a6('0x1b'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x1c');break;case _0xb0a6('0x1d'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x1e');_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x1f'),'field':'id','foreignKey':'ListId'}];break;case _0xb0a6('0x20'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x21');break;case'companies':_0x4aa68d[_0xb0a6('0x15')]='CmCompany';break;case _0xb0a6('0x22'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x23');break;case _0xb0a6('0x24'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x25');break;case _0xb0a6('0x26'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x27');break;case _0xb0a6('0x28'):_0x4aa68d['childModel']='FaxQueue';break;case _0xb0a6('0x29'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x2a');break;case _0xb0a6('0x2b'):case _0xb0a6('0x2c'):case _0xb0a6('0x2d'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x2e');break;case'contexts':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x2f');break;case'voicemails':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x30');break;case'voicerecordings':_0x4aa68d['childModel']=_0xb0a6('0x31');_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x32'),'field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x33'),'model':_0xb0a6('0x34'),'filter':{'field':'role','value':[_0xb0a6('0x35')]}},{'name':'Telephones','field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x33'),'model':'User','filter':{'field':'role','value':['telephone']}},{'name':_0xb0a6('0x36'),'field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x37'),'model':_0xb0a6('0x38'),'filter':{'field':_0xb0a6('0x10'),'value':['inbound']}},{'name':_0xb0a6('0x39'),'field':_0xb0a6('0xb'),'foreignKey':_0xb0a6('0x37'),'model':_0xb0a6('0x38'),'filter':{'field':'type','value':[_0xb0a6('0x3a')]}}];break;case _0xb0a6('0x3b'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x3c');break;case _0xb0a6('0x3d'):_0x4aa68d['childModel']='VoiceChanSpy';break;case _0xb0a6('0x3e'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x3f');break;case _0xb0a6('0x40'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x41');break;case _0xb0a6('0x42'):_0x4aa68d[_0xb0a6('0x15')]='MailQueue';break;case _0xb0a6('0x43'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x44');break;case _0xb0a6('0x45'):_0x4aa68d[_0xb0a6('0x15')]='MailSubstatus';break;case _0xb0a6('0x46'):_0x4aa68d['childModel']=_0xb0a6('0x47');break;case'openchannelaccounts':_0x4aa68d[_0xb0a6('0x15')]='OpenchannelAccount';break;case _0xb0a6('0x48'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x49');break;case _0xb0a6('0x4a'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x4b');break;case _0xb0a6('0x4c'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x4d');break;case _0xb0a6('0x4e'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x4f');break;case'teams':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x50');break;case'voicequeues':case _0xb0a6('0x51'):_0x4aa68d['childModel']=_0xb0a6('0x38');if(_0x4997df){_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x36')},{'name':'QueueCampaigns'}];}break;case _0xb0a6('0x52'):case _0xb0a6('0x53'):case _0xb0a6('0x54'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x34');if(_0x4997df){_0x4aa68d[_0xb0a6('0x18')]=[{'name':_0xb0a6('0x55'),'filter':{'field':_0xb0a6('0x56'),'value':['admin',_0xb0a6('0x57')]},'ignore':!![]},{'name':_0xb0a6('0x32')},{'name':_0xb0a6('0x58')}];}break;case _0xb0a6('0x59'):_0x4aa68d['childModel']='ZendeskAccount';break;case'salesforceaccounts':_0x4aa68d['childModel']='SalesforceAccount';break;case'freshdeskaccounts':_0x4aa68d['childModel']=_0xb0a6('0x5a');break;case _0xb0a6('0x5b'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x5c');break;case _0xb0a6('0x5d'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x5e');break;case _0xb0a6('0x5f'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x60');break;case _0xb0a6('0x61'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x34');break;case _0xb0a6('0x62'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x63');break;case'dispositions':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x64');break;case _0xb0a6('0x65'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x66');break;case _0xb0a6('0x67'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x68');break;case _0xb0a6('0x69'):_0x4aa68d['childModel']='Pause';break;case _0xb0a6('0x6a'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x6b');break;case'sounds':_0x4aa68d[_0xb0a6('0x15')]='Sound';break;case _0xb0a6('0x6c'):_0x4aa68d[_0xb0a6('0x15')]='Tag';break;case _0xb0a6('0x6d'):_0x4aa68d[_0xb0a6('0x15')]='Template';break;case _0xb0a6('0x6e'):_0x4aa68d['childModel']=_0xb0a6('0x6f');break;case'trunks':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x70');break;case'variables':_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x71');break;case _0xb0a6('0x72'):_0x4aa68d[_0xb0a6('0x15')]=_0xb0a6('0x73');break;case'extractedreports':_0x4aa68d[_0xb0a6('0x15')]='AnalyticExtractedReport';_0x4aa68d[_0xb0a6('0x18')]=[{'name':'Reports','field':'id','foreignKey':'reportId'}];break;case _0xb0a6('0x74'):_0x4aa68d[_0xb0a6('0x15')]='AnalyticMetric';break;}return _0x4aa68d;}function _0x1deac4(_0x59c08a,_0x2fe48f){var _0x3a8d71=_0x59c08a[_0xb0a6('0x75')](0x0)[_0xb0a6('0x76')]()+_0x59c08a['slice'](0x1);var _0x384d9f={'type':_0x2245d7[_0xb0a6('0x77')][_0xb0a6('0x78')][_0xb0a6('0x79')],'raw':!![]};return new Promise(function(_0x21da0d,_0x4123e8){var _0x51b614=squel['select']()[_0xb0a6('0x4')]('ui.'+_0x3a8d71+_0xb0a6('0x7a'),'id')[_0xb0a6('0x4')](_0xb0a6('0x7b'))['from'](_0xb0a6('0x7c')+_0x59c08a+_0xb0a6('0x7d'),'ui')['where'](_0xb0a6('0x7e'),_0x2fe48f['id']);return _0x2245d7[_0xb0a6('0x7f')][_0xb0a6('0x80')](_0x51b614[_0xb0a6('0x81')](),_0x384d9f)[_0xb0a6('0xe')](function(_0x578c7a){_0x2fe48f[_0x3a8d71+_0xb0a6('0x82')]=_0x578c7a;_0x21da0d(_0x578c7a);})[_0xb0a6('0x7')](function(_0x4dbb6e){_0x4123e8(_0x4dbb6e);});});}return _0x50d3d5[_0xb0a6('0x83')](_0xb0a6('0x84'),attributes,{'tableName':_0xb0a6('0x85'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x1e8c10){var _0x173a44={'raw':![],'where':{}};var _0x3739b1={};var _0x1415e5={'count':0x0,'rows':[]};var _0x2b9800=_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x86')];var _0x32abed=_0x1e8c10[_0xb0a6('0x80')]['mergeResources']||![];var _0x281f99=_0x1322ec(_0x2b9800,_0x32abed);if(!_0x281f99['childModel'])throw new Error(_0xb0a6('0x87')+_0x2b9800+'\x27');var _0x1178d9=[{'name':_0x2b9800}];if(!_[_0xb0a6('0x88')](_0x281f99[_0xb0a6('0x18')]))_0x1178d9=_0x281f99['parentSections'];var _0x22521a=[];for(var _0x1363e9=0x0;_0x1363e9<_0x1178d9[_0xb0a6('0x89')];_0x1363e9++){_0x22521a[_0xb0a6('0x8a')](_0x2245d7[_0xb0a6('0x8b')][_0xb0a6('0x8c')]({'where':{'userProfileId':_0x1e8c10[_0xb0a6('0x8d')]['id'],'name':_0x1178d9[_0x1363e9][_0xb0a6('0xb')]},'raw':!![]}));}return Promise[_0xb0a6('0x8e')](_0x22521a)[_0xb0a6('0xe')](function(_0x100b4f){var _0x2f0139=_[_0xb0a6('0x3')](_0x100b4f,function(_0x2f1b5a){return _0x2f1b5a?_0x2f1b5a:undefined;});var _0x3e3060=_[_0xb0a6('0x3')](_0x1178d9,[_0xb0a6('0x8f'),!![]]);var _0x3ce4c1=_['isEmpty'](_0x2f0139)&&_[_0xb0a6('0x88')](_0x3e3060)?null:_[_0xb0a6('0x90')](_0x3e3060,_0x2f0139);if(!_0x3ce4c1)return null;var _0x2b5ec8=[];for(var _0x35e3fb=0x0;_0x35e3fb<_0x3ce4c1[_0xb0a6('0x89')];_0x35e3fb++){var _0x37a77d=_['find'](_0x1178d9,function(_0x49a7fa){return _0x3ce4c1[_0x35e3fb]?_0x49a7fa[_0xb0a6('0xb')]===_0x3ce4c1[_0x35e3fb][_0xb0a6('0xb')]:null;});if(_0x37a77d){if(_0x3ce4c1[_0x35e3fb][_0xb0a6('0x8f')]){_0x2b5ec8[_0xb0a6('0x8a')](_0x1d3b78(_0x281f99['childModel'],_0x3ce4c1[_0x35e3fb]));}else{if(!_0x3ce4c1[_0x35e3fb][_0xb0a6('0x91')]){_0x2b5ec8[_0xb0a6('0x8a')](_0x382c2f(_0x37a77d,_0x3ce4c1[_0x35e3fb],_0x281f99[_0xb0a6('0x15')]));}else{if(_0x37a77d[_0xb0a6('0x9')]){_0x2b5ec8[_0xb0a6('0x8a')](_0x35c956(_0x37a77d,_0x3ce4c1[_0x35e3fb]));}}}}}return Promise[_0xb0a6('0x8e')](_0x2b5ec8);})[_0xb0a6('0xe')](function(_0x5a1887){var _0xea7f55=_0x5a1887;var _0xb21bfb=null;if(_0xea7f55){_0xb21bfb=_0xea7f55['length']===0x1?_0xea7f55[0x0]:null;}if(!_0xb21bfb&&!_0xea7f55)return _0x1415e5;var _0x48a60f=_0x2245d7[_0x281f99[_0xb0a6('0x15')]]['rawAttributes'];_0x3739b1[_0xb0a6('0x9')]=_[_0xb0a6('0x92')](_0x48a60f);_0x3739b1[_0xb0a6('0x80')]=_[_0xb0a6('0x92')](_0x1e8c10['query']);_0x3739b1[_0xb0a6('0x93')]=_['intersection'](_0x3739b1[_0xb0a6('0x9')],_0x3739b1[_0xb0a6('0x80')]);_0x173a44['attributes']=_['intersection'](_0x3739b1[_0xb0a6('0x9')],qs[_0xb0a6('0x94')](_0x1e8c10[_0xb0a6('0x80')]['fields']));_0x173a44['attributes']=_0x173a44['attributes'][_0xb0a6('0x89')]?_0x173a44['attributes']:_0x3739b1[_0xb0a6('0x9')];if(!_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x95')]('nolimit')){_0x173a44[_0xb0a6('0x96')]=qs[_0xb0a6('0x96')](_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x96')]);_0x173a44[_0xb0a6('0x97')]=qs[_0xb0a6('0x97')](_0x1e8c10[_0xb0a6('0x80')]['offset']);}_0x173a44['order']=qs[_0xb0a6('0x98')](_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x98')]);_0x173a44[_0xb0a6('0x99')]=qs['filters'](_['pick'](_0x1e8c10[_0xb0a6('0x80')],_0x3739b1[_0xb0a6('0x93')]));if(_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0x3')]){_0x173a44[_0xb0a6('0x99')]=_['merge'](_0x173a44[_0xb0a6('0x99')],{'$or':_[_0xb0a6('0x6')](_0x48a60f,function(_0x53f05d){if(_0x53f05d[_0xb0a6('0x10')][_0xb0a6('0x9a')]!==_0xb0a6('0x9b')){var _0x42634d={};_0x42634d[_0x53f05d[_0xb0a6('0x4')]]={'$like':'%'+_0x1e8c10[_0xb0a6('0x80')]['filter']+'%'};return _0x42634d;}})});}var _0x34a4de=[];var _0x10ad85=null;var _0x285767={};if(_0xb21bfb){_0x10ad85=_[_0xb0a6('0x8c')](_0x1178d9,[_0xb0a6('0xb'),_0xb21bfb['name']]);if(_0x10ad85['field']){_0x285767={};if(_0x281f99[_0xb0a6('0x15')]==='AnalyticExtractedReport'){_0x285767[_0x10ad85[_0xb0a6('0x9c')]]=_['map'](_0xb21bfb[_0xb0a6('0x5')],'id');}else{_0x285767[_0x10ad85['foreignKey']]=_0xb21bfb[_0xb0a6('0x5')];}_0x34a4de[_0xb0a6('0x8a')](_0x285767);}else{_0x173a44[_0xb0a6('0x99')]['id']=_0xb21bfb[_0xb0a6('0x5')];}}else{for(var _0x3e1c43=0x0;_0x3e1c43<_0xea7f55[_0xb0a6('0x89')];_0x3e1c43++){_0x10ad85=_[_0xb0a6('0x8c')](_0x1178d9,[_0xb0a6('0xb'),_0xea7f55[_0x3e1c43][_0xb0a6('0xb')]]);if(_0x10ad85[_0xb0a6('0x4')]){_0x285767={};_0x285767[_0x10ad85['foreignKey']]=_0xea7f55[_0x3e1c43]['associatedResources'];_0x34a4de['push'](_0x285767);}else{if(!_0x173a44[_0xb0a6('0x99')]['id'])_0x173a44[_0xb0a6('0x99')]['id']=[];_0xea7f55[_0x3e1c43][_0xb0a6('0x5')][_0xb0a6('0x9d')](function(_0x51b473){_0x173a44[_0xb0a6('0x99')]['id'][_0xb0a6('0x8a')](_0x51b473);});}}}if(!_[_0xb0a6('0x88')](_0x34a4de)){_0x173a44[_0xb0a6('0x99')]=_[_0xb0a6('0x9e')](_0x173a44['where'],{'$and':{'$or':_0x34a4de}});}_0x173a44=_['merge']({},_0x173a44,_0x1e8c10[_0xb0a6('0x9f')]);if(_0xb21bfb&&!_0xb21bfb[_0xb0a6('0x91')]&&_0x281f99[_0xb0a6('0x15')]===_0xb0a6('0xa0')){if(_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xa1')]){_0x173a44['include']=[{'all':!![]}];}return _0x2245d7[_0x281f99['childModel']]['findAll'](_0x173a44)[_0xb0a6('0xe')](function(_0x40cd4d){var _0x39149a=[];_0x40cd4d[_0xb0a6('0x9d')](function(_0xd3d3df){var _0x167303;switch(_0xd3d3df[_0xb0a6('0xa2')]){case'default':_0x167303=_[_0xb0a6('0x8c')](_0xb21bfb[_0xb0a6('0x5')],function(_0x1c3a58){return _0x1c3a58['id']===_0xd3d3df[_0xb0a6('0xa3')]&&_0x1c3a58[_0xb0a6('0x10')]===_0xb0a6('0xa4');});break;case'custom':_0x167303=_[_0xb0a6('0x8c')](_0xb21bfb[_0xb0a6('0x5')],function(_0x20ec12){return _0x20ec12['id']===_0xd3d3df[_0xb0a6('0xa3')]&&_0x20ec12[_0xb0a6('0x10')]===_0xb0a6('0xa5');});break;}if(_0x167303)_0x39149a[_0xb0a6('0x8a')](_0xd3d3df);});_0x1415e5['count']=_0x39149a[_0xb0a6('0x89')];_0x1415e5['rows']=_0x39149a;return _0x1415e5;});}else{return _0x2245d7[_0x281f99[_0xb0a6('0x15')]]['count']({'where':_0x173a44[_0xb0a6('0x99')]})[_0xb0a6('0xe')](function(_0x24f82a){_0x1415e5[_0xb0a6('0xa6')]=_0x24f82a;if(_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xa1')]){if(_0x281f99[_0xb0a6('0x15')]===_0xb0a6('0x1e')){_0x173a44['include']=[{'model':_0x2245d7[_0xb0a6('0xa7')],'as':_0xb0a6('0xa8'),'attributes':['id','name',_0xb0a6('0xa9')],'required':_0x1e8c10[_0xb0a6('0x80')]['tag']?!![]:![]},{'model':_0x2245d7['Tag'],'as':_0xb0a6('0xaa'),'attributes':['id','name',_0xb0a6('0xa9')],'through':_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xab')]?{'attributes':[],'where':{'TagId':_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xab')]||undefined}}:{},'required':_0x1e8c10[_0xb0a6('0x80')]['tag']?!![]:![]}];}else{_0x173a44[_0xb0a6('0xac')]=[{'all':!![]}];}}return _0x2245d7[_0x281f99[_0xb0a6('0x15')]]['findAll'](_0x173a44);})['then'](function(_0xc729cd){_0x1415e5[_0xb0a6('0xad')]=_0xc729cd;if(_0x2b9800===_0xb0a6('0x32')&&_0x1e8c10[_0xb0a6('0x80')][_0xb0a6('0xae')]===_0xb0a6('0xaf')){var _0x47d4f7=[];for(var _0x1ae3d8=0x0;_0x1ae3d8<_0x1415e5['rows'][_0xb0a6('0x89')];_0x1ae3d8++){_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb0'),_0x1415e5['rows'][_0x1ae3d8]['dataValues']));_0x47d4f7['push'](_0x1deac4(_0xb0a6('0xb1'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb3'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb4'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4(_0xb0a6('0xb5'),_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8]['dataValues']));_0x47d4f7[_0xb0a6('0x8a')](_0x1deac4('whatsapp',_0x1415e5[_0xb0a6('0xad')][_0x1ae3d8][_0xb0a6('0xb2')]));}return Promise['all'](_0x47d4f7)[_0xb0a6('0xe')](function(){return _0x1415e5;});}return _0x1415e5;});}});}}});};
\ No newline at end of file
index 510b029..b09aaec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6869=['jayson/promise','http','redis','defaults','socket.io-emitter','./userProfile.socket','register','request','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x265110,_0x2cbf81){var _0x1e4501=function(_0x383606){while(--_0x383606){_0x265110['push'](_0x265110['shift']());}};_0x1e4501(++_0x2cbf81);}(_0x6869,0xe2));var _0x9686=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x6869[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x9686('0x0'));var util=require(_0x9686('0x1'));var moment=require(_0x9686('0x2'));var BPromise=require('bluebird');var rs=require(_0x9686('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9686('0x4'));var logger=require(_0x9686('0x5'))(_0x9686('0x6'));var config=require(_0x9686('0x7'));var jayson=require(_0x9686('0x8'));var client=jayson['client'][_0x9686('0x9')]({'port':0x232a});config[_0x9686('0xa')]=_[_0x9686('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x9686('0xc'))(new Redis(config[_0x9686('0xa')]));require(_0x9686('0xd'))[_0x9686('0xe')](socket);function respondWithRpcPromise(_0x4db745,_0x464155,_0x2a62e8){return new BPromise(function(_0x155de1,_0x2088aa){return client[_0x9686('0xf')](_0x4db745,_0x2a62e8)['then'](function(_0x58d9b6){logger['info'](_0x9686('0x10'),_0x464155,_0x9686('0x11'));logger[_0x9686('0x12')](_0x9686('0x13'),_0x464155,_0x9686('0x11'),JSON[_0x9686('0x14')](_0x58d9b6));if(_0x58d9b6['error']){if(_0x58d9b6[_0x9686('0x15')][_0x9686('0x16')]===0x1f4){logger['error'](_0x9686('0x10'),_0x464155,_0x58d9b6[_0x9686('0x15')][_0x9686('0x17')]);return _0x2088aa(_0x58d9b6[_0x9686('0x15')][_0x9686('0x17')]);}logger[_0x9686('0x15')]('UserProfile,\x20%s,\x20%s',_0x464155,_0x58d9b6[_0x9686('0x15')][_0x9686('0x17')]);return _0x155de1(_0x58d9b6[_0x9686('0x15')][_0x9686('0x17')]);}else{logger[_0x9686('0x18')](_0x9686('0x10'),_0x464155,_0x9686('0x11'));_0x155de1(_0x58d9b6[_0x9686('0x19')][_0x9686('0x17')]);}})['catch'](function(_0x31b688){logger[_0x9686('0x15')](_0x9686('0x10'),_0x464155,_0x31b688);_0x2088aa(_0x31b688);});});}
\ No newline at end of file
+var _0x5581=['request\x20sent','debug','stringify','error','code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','defaults','redis','localhost','socket.io-emitter','register','request','then','info','UserProfile,\x20%s,\x20%s'];(function(_0x39db87,_0x4d3e84){var _0x2940b7=function(_0x3ba52a){while(--_0x3ba52a){_0x39db87['push'](_0x39db87['shift']());}};_0x2940b7(++_0x4d3e84);}(_0x5581,0x115));var _0x1558=function(_0x44bcb0,_0x235aa9){_0x44bcb0=_0x44bcb0-0x0;var _0xfaf881=_0x5581[_0x44bcb0];return _0xfaf881;};'use strict';var _=require(_0x1558('0x0'));var util=require('util');var moment=require(_0x1558('0x1'));var BPromise=require(_0x1558('0x2'));var rs=require(_0x1558('0x3'));var fs=require('fs');var Redis=require(_0x1558('0x4'));var db=require(_0x1558('0x5'))['db'];var utils=require(_0x1558('0x6'));var logger=require('../../config/logger')(_0x1558('0x7'));var config=require(_0x1558('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1558('0x9')][_0x1558('0xa')]({'port':0x232a});config['redis']=_[_0x1558('0xb')](config[_0x1558('0xc')],{'host':_0x1558('0xd'),'port':0x18eb});var socket=require(_0x1558('0xe'))(new Redis(config[_0x1558('0xc')]));require('./userProfile.socket')[_0x1558('0xf')](socket);function respondWithRpcPromise(_0xe26278,_0x5f43a1,_0x296193){return new BPromise(function(_0x30f42b,_0x4e97c8){return client[_0x1558('0x10')](_0xe26278,_0x296193)[_0x1558('0x11')](function(_0x2bb578){logger[_0x1558('0x12')](_0x1558('0x13'),_0x5f43a1,_0x1558('0x14'));logger[_0x1558('0x15')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x5f43a1,_0x1558('0x14'),JSON[_0x1558('0x16')](_0x2bb578));if(_0x2bb578[_0x1558('0x17')]){if(_0x2bb578[_0x1558('0x17')][_0x1558('0x18')]===0x1f4){logger[_0x1558('0x17')](_0x1558('0x13'),_0x5f43a1,_0x2bb578[_0x1558('0x17')][_0x1558('0x19')]);return _0x4e97c8(_0x2bb578['error'][_0x1558('0x19')]);}logger[_0x1558('0x17')](_0x1558('0x13'),_0x5f43a1,_0x2bb578['error'][_0x1558('0x19')]);return _0x30f42b(_0x2bb578[_0x1558('0x17')][_0x1558('0x19')]);}else{logger[_0x1558('0x12')](_0x1558('0x13'),_0x5f43a1,'request\x20sent');_0x30f42b(_0x2bb578['result'][_0x1558('0x19')]);}})[_0x1558('0x1a')](function(_0xaa0a82){logger[_0x1558('0x17')](_0x1558('0x13'),_0x5f43a1,_0xaa0a82);_0x4e97c8(_0xaa0a82);});});}
\ No newline at end of file
index 2b35035..aa39471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x658c=['update','emit','length','userProfile:','./userProfile.events','save'];(function(_0x11fdaf,_0x1f519c){var _0x1bc53a=function(_0x3180cc){while(--_0x3180cc){_0x11fdaf['push'](_0x11fdaf['shift']());}};_0x1bc53a(++_0x1f519c);}(_0x658c,0x18a));var _0xc658=function(_0x2097fc,_0x50a0bf){_0x2097fc=_0x2097fc-0x0;var _0x2fcdf4=_0x658c[_0x2097fc];return _0x2fcdf4;};'use strict';var UserProfileEvents=require(_0xc658('0x0'));var events=[_0xc658('0x1'),'remove',_0xc658('0x2')];function createListener(_0x5f58d5,_0x5d07fd){return function(_0x4a2730){_0x5d07fd[_0xc658('0x3')](_0x5f58d5,_0x4a2730);};}function removeListener(_0x1036bd,_0x22788b){return function(){UserProfileEvents['removeListener'](_0x1036bd,_0x22788b);};}exports['register']=function(_0x244623){for(var _0x1c96a6=0x0,_0x264bab=events[_0xc658('0x4')];_0x1c96a6<_0x264bab;_0x1c96a6++){var _0x3108fa=events[_0x1c96a6];var _0x303e4a=createListener(_0xc658('0x5')+_0x3108fa,_0x244623);UserProfileEvents['on'](_0x3108fa,_0x303e4a);}};
\ No newline at end of file
+var _0x458e=['length','save','remove','update','removeListener'];(function(_0x6cbe6d,_0x37bba3){var _0x25e1c9=function(_0x2f8868){while(--_0x2f8868){_0x6cbe6d['push'](_0x6cbe6d['shift']());}};_0x25e1c9(++_0x37bba3);}(_0x458e,0xfb));var _0xe458=function(_0x814e66,_0x4142c8){_0x814e66=_0x814e66-0x0;var _0x474eb8=_0x458e[_0x814e66];return _0x474eb8;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0xe458('0x0'),_0xe458('0x1'),_0xe458('0x2')];function createListener(_0x5405ad,_0x11bd62){return function(_0xfb150f){_0x11bd62['emit'](_0x5405ad,_0xfb150f);};}function removeListener(_0x4a271e,_0x6951f4){return function(){UserProfileEvents[_0xe458('0x3')](_0x4a271e,_0x6951f4);};}exports['register']=function(_0x221035){for(var _0x58578c=0x0,_0x161902=events[_0xe458('0x4')];_0x58578c<_0x161902;_0x58578c++){var _0x38d6fa=events[_0x58578c];var _0x168a46=createListener('userProfile:'+_0x38d6fa,_0x221035);UserProfileEvents['on'](_0x38d6fa,_0x168a46);}};
\ No newline at end of file
index 3b95e60..f12e793 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1088=['../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','create','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x19bb1f,_0x4b45ec){var _0x4a41b8=function(_0x71a138){while(--_0x71a138){_0x19bb1f['push'](_0x19bb1f['shift']());}};_0x4a41b8(++_0x4b45ec);}(_0x1088,0x160));var _0x8108=function(_0x37b136,_0x46b3e8){_0x37b136=_0x37b136-0x0;var _0x4a7a95=_0x1088[_0x37b136];return _0x4a7a95;};'use strict';var multer=require(_0x8108('0x0'));var util=require(_0x8108('0x1'));var path=require(_0x8108('0x2'));var timeout=require(_0x8108('0x3'));var express=require(_0x8108('0x4'));var router=express[_0x8108('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8108('0x6'));var interaction=require(_0x8108('0x7'));var config=require(_0x8108('0x8'));var controller=require('./userProfileResource.controller');router[_0x8108('0x9')]('/',auth[_0x8108('0xa')](),controller[_0x8108('0xb')]);router[_0x8108('0x9')](_0x8108('0xc'),auth[_0x8108('0xa')](),controller[_0x8108('0xd')]);router['get'](_0x8108('0xe'),auth[_0x8108('0xa')](),controller[_0x8108('0xf')]);router['post']('/',auth[_0x8108('0xa')](),controller[_0x8108('0x10')]);router['put'](_0x8108('0xe'),auth[_0x8108('0xa')](),controller['update']);router[_0x8108('0x11')](_0x8108('0xe'),auth['isAuthenticated'](),controller[_0x8108('0x12')]);module[_0x8108('0x13')]=router;
\ No newline at end of file
+var _0xcd70=['update','delete','destroy','multer','util','express','Router','../../components/auth/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x2a5099,_0x329e92){var _0x2802f1=function(_0x53f99b){while(--_0x53f99b){_0x2a5099['push'](_0x2a5099['shift']());}};_0x2802f1(++_0x329e92);}(_0xcd70,0xdf));var _0x0cd7=function(_0x4fd60f,_0x4475ec){_0x4fd60f=_0x4fd60f-0x0;var _0x310d18=_0xcd70[_0x4fd60f];return _0x310d18;};'use strict';var multer=require(_0x0cd7('0x0'));var util=require(_0x0cd7('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0cd7('0x2'));var router=express[_0x0cd7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0cd7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0cd7('0x5'));var controller=require(_0x0cd7('0x6'));router[_0x0cd7('0x7')]('/',auth[_0x0cd7('0x8')](),controller[_0x0cd7('0x9')]);router['get'](_0x0cd7('0xa'),auth[_0x0cd7('0x8')](),controller[_0x0cd7('0xb')]);router['get'](_0x0cd7('0xc'),auth[_0x0cd7('0x8')](),controller[_0x0cd7('0xd')]);router[_0x0cd7('0xe')]('/',auth[_0x0cd7('0x8')](),controller[_0x0cd7('0xf')]);router[_0x0cd7('0x10')](_0x0cd7('0xc'),auth['isAuthenticated'](),controller[_0x0cd7('0x11')]);router[_0x0cd7('0x12')]('/:id',auth[_0x0cd7('0x8')](),controller[_0x0cd7('0x13')]);module['exports']=router;
\ No newline at end of file
index f3fab42..c428ef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30bf=['INTEGER','STRING','sequelize','exports'];(function(_0x3f8149,_0x389d82){var _0x231099=function(_0xd35f51){while(--_0xd35f51){_0x3f8149['push'](_0x3f8149['shift']());}};_0x231099(++_0x389d82);}(_0x30bf,0xde));var _0xf30b=function(_0x17054b,_0x57366f){_0x17054b=_0x17054b-0x0;var _0x207ca6=_0x30bf[_0x17054b];return _0x207ca6;};'use strict';var Sequelize=require(_0xf30b('0x0'));module[_0xf30b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf30b('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xf30b('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0x89e7=['exports','STRING','INTEGER','sequelize'];(function(_0xc277c7,_0x2b03a9){var _0x13863f=function(_0x16c83f){while(--_0x16c83f){_0xc277c7['push'](_0xc277c7['shift']());}};_0x13863f(++_0x2b03a9);}(_0x89e7,0x13b));var _0x789e=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x89e7[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require(_0x789e('0x0'));module[_0x789e('0x1')]={'name':{'type':Sequelize[_0x789e('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x789e('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x789e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 6b3c5af..84106a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['include','rows','catch','show','params','keys','rawAttributes','includeAll','find','create','body','describe','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','UserProfileResource','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x0598,0x92));var _0x8059=function(_0x14bbae,_0x58e0a9){_0x14bbae=_0x14bbae-0x0;var _0x12877d=_0x0598[_0x14bbae];return _0x12877d;};'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['UserProfileResource']['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['UserProfileResource'][_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));};exports[_0x8059('0x42')]=function(_0x429cf0,_0x5d5f16){return db[_0x8059('0x24')]['describe']()[_0x8059('0x1d')](respondWithResult(_0x5d5f16,null))[_0x8059('0x39')](handleError(_0x5d5f16,null));};
\ No newline at end of file
+var _0xc6ac=['filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','includeAll','include','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','UserProfileResource','rawAttributes','fieldName','type','key','map','query','keys'];(function(_0x229128,_0x273558){var _0x1875b9=function(_0x275e35){while(--_0x275e35){_0x229128['push'](_0x229128['shift']());}};_0x1875b9(++_0x273558);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x588a58,_0x3dd4e0){_0x588a58=_0x588a58-0x0;var _0x4b7ab2=_0xc6ac[_0x588a58];return _0x4b7ab2;};'use strict';var emlformat=require(_0xcc6a('0x0'));var rimraf=require(_0xcc6a('0x1'));var zipdir=require(_0xcc6a('0x2'));var jsonpatch=require(_0xcc6a('0x3'));var rp=require(_0xcc6a('0x4'));var moment=require(_0xcc6a('0x5'));var BPromise=require(_0xcc6a('0x6'));var Mustache=require(_0xcc6a('0x7'));var util=require(_0xcc6a('0x8'));var path=require(_0xcc6a('0x9'));var sox=require(_0xcc6a('0xa'));var csv=require(_0xcc6a('0xb'));var ejs=require(_0xcc6a('0xc'));var fs=require('fs');var fs_extra=require(_0xcc6a('0xd'));var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xb'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59ce6d,_0xf0f6d5){_0xf0f6d5=_0xf0f6d5||0xcc;return function(_0x211444){if(_0x211444){return _0x59ce6d[_0xcc6a('0x1b')](_0xf0f6d5);}return _0x59ce6d['status'](_0xf0f6d5)['end']();};}function respondWithResult(_0x369dc1,_0xcb9e2e){_0xcb9e2e=_0xcb9e2e||0xc8;return function(_0x43710d){if(_0x43710d){return _0x369dc1[_0xcc6a('0x1c')](_0xcb9e2e)[_0xcc6a('0x1d')](_0x43710d);}};}function respondWithFilteredResult(_0x337ec5,_0x4133fa){return function(_0x403b18){if(_0x403b18){var _0x56ffb0=typeof _0x4133fa['offset']==='undefined'&&typeof _0x4133fa[_0xcc6a('0x1e')]===_0xcc6a('0x1f');var _0x307f2a=_0x403b18[_0xcc6a('0x20')];var _0x33079c=_0x56ffb0?0x0:_0x4133fa[_0xcc6a('0x21')];var _0x2d9585=_0x56ffb0?_0x403b18[_0xcc6a('0x20')]:_0x4133fa[_0xcc6a('0x21')]+_0x4133fa[_0xcc6a('0x1e')];var _0x1d20a3;if(_0x2d9585>=_0x307f2a){_0x2d9585=_0x307f2a;_0x1d20a3=0xc8;}else{_0x1d20a3=0xce;}_0x337ec5['status'](_0x1d20a3);return _0x337ec5[_0xcc6a('0x22')](_0xcc6a('0x23'),_0x33079c+'-'+_0x2d9585+'/'+_0x307f2a)[_0xcc6a('0x1d')](_0x403b18);}return null;};}function patchUpdates(_0x368a6e){return function(_0x1495d8){try{jsonpatch[_0xcc6a('0x24')](_0x1495d8,_0x368a6e,!![]);}catch(_0x36c80f){return BPromise[_0xcc6a('0x25')](_0x36c80f);}return _0x1495d8[_0xcc6a('0x26')]();};}function saveUpdates(_0x19d32c,_0x329d17){return function(_0x845088){if(_0x845088){return _0x845088['update'](_0x19d32c)[_0xcc6a('0x27')](function(_0x3a081e){return _0x3a081e;});}return null;};}function removeEntity(_0x38f812,_0x581aae){return function(_0x10016a){if(_0x10016a){return _0x10016a[_0xcc6a('0x28')]()[_0xcc6a('0x27')](function(){_0x38f812[_0xcc6a('0x1c')](0xcc)[_0xcc6a('0x29')]();});}};}function handleEntityNotFound(_0x5fc697,_0x50abc1){return function(_0x26def8){if(!_0x26def8){_0x5fc697[_0xcc6a('0x1b')](0x194);}return _0x26def8;};}function handleError(_0x3514f3,_0x5f27e5){_0x5f27e5=_0x5f27e5||0x1f4;return function(_0x3afb3a){logger[_0xcc6a('0x2a')](_0x3afb3a['stack']);if(_0x3afb3a[_0xcc6a('0x2b')]){delete _0x3afb3a[_0xcc6a('0x2b')];}_0x3514f3[_0xcc6a('0x1c')](_0x5f27e5)[_0xcc6a('0x2c')](_0x3afb3a);};}exports['index']=function(_0x194aab,_0x3cf14c){var _0x2c6d88={},_0x4f176b={},_0x2590a2={'count':0x0,'rows':[]};var _0x5308d4=_['map'](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')],function(_0x3aa315){return{'name':_0x3aa315[_0xcc6a('0x2f')],'type':_0x3aa315[_0xcc6a('0x30')][_0xcc6a('0x31')]};});_0x4f176b['model']=_[_0xcc6a('0x32')](_0x5308d4,_0xcc6a('0x2b'));_0x4f176b[_0xcc6a('0x33')]=_[_0xcc6a('0x34')](_0x194aab[_0xcc6a('0x33')]);_0x4f176b[_0xcc6a('0x35')]=_[_0xcc6a('0x36')](_0x4f176b[_0xcc6a('0x37')],_0x4f176b['query']);_0x2c6d88[_0xcc6a('0x38')]=_[_0xcc6a('0x36')](_0x4f176b[_0xcc6a('0x37')],qs[_0xcc6a('0x39')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x39')]));_0x2c6d88[_0xcc6a('0x38')]=_0x2c6d88['attributes'][_0xcc6a('0x3a')]?_0x2c6d88['attributes']:_0x4f176b['model'];if(!_0x194aab['query'][_0xcc6a('0x3b')](_0xcc6a('0x3c'))){_0x2c6d88[_0xcc6a('0x1e')]=qs[_0xcc6a('0x1e')](_0x194aab[_0xcc6a('0x33')]['limit']);_0x2c6d88['offset']=qs[_0xcc6a('0x21')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x21')]);}_0x2c6d88['order']=qs[_0xcc6a('0x3d')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x3d')]);_0x2c6d88[_0xcc6a('0x3e')]=qs[_0xcc6a('0x35')](_[_0xcc6a('0x3f')](_0x194aab[_0xcc6a('0x33')],_0x4f176b[_0xcc6a('0x35')]),_0x5308d4);if(_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x40')]){_0x2c6d88[_0xcc6a('0x3e')]=_[_0xcc6a('0x41')](_0x2c6d88[_0xcc6a('0x3e')],{'$or':_[_0xcc6a('0x32')](_0x5308d4,function(_0x262a1e){if(_0x262a1e[_0xcc6a('0x30')]!==_0xcc6a('0x42')){var _0x386cbc={};_0x386cbc[_0x262a1e['name']]={'$like':'%'+_0x194aab['query'][_0xcc6a('0x40')]+'%'};return _0x386cbc;}})});}_0x2c6d88=_[_0xcc6a('0x41')]({},_0x2c6d88,_0x194aab[_0xcc6a('0x43')]);var _0x1fd8e1={'where':_0x2c6d88[_0xcc6a('0x3e')]};return db[_0xcc6a('0x2d')][_0xcc6a('0x20')](_0x1fd8e1)[_0xcc6a('0x27')](function(_0x49b65c){_0x2590a2['count']=_0x49b65c;if(_0x194aab[_0xcc6a('0x33')]['includeAll']){_0x2c6d88['include']=[{'all':!![]}];}return db['UserProfileResource'][_0xcc6a('0x44')](_0x2c6d88);})[_0xcc6a('0x27')](function(_0xb42897){_0x2590a2[_0xcc6a('0x45')]=_0xb42897;return _0x2590a2;})[_0xcc6a('0x27')](respondWithFilteredResult(_0x3cf14c,_0x2c6d88))['catch'](handleError(_0x3cf14c,null));};exports[_0xcc6a('0x46')]=function(_0xfbb079,_0x17e5a0){var _0x2f966f={'raw':![],'where':{'id':_0xfbb079[_0xcc6a('0x47')]['id']}},_0x14ca90={};_0x14ca90['model']=_[_0xcc6a('0x34')](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')]);_0x14ca90[_0xcc6a('0x33')]=_['keys'](_0xfbb079[_0xcc6a('0x33')]);_0x14ca90['filters']=_[_0xcc6a('0x36')](_0x14ca90[_0xcc6a('0x37')],_0x14ca90[_0xcc6a('0x33')]);_0x2f966f['attributes']=_[_0xcc6a('0x36')](_0x14ca90[_0xcc6a('0x37')],qs[_0xcc6a('0x39')](_0xfbb079['query']['fields']));_0x2f966f[_0xcc6a('0x38')]=_0x2f966f[_0xcc6a('0x38')][_0xcc6a('0x3a')]?_0x2f966f[_0xcc6a('0x38')]:_0x14ca90[_0xcc6a('0x37')];if(_0xfbb079['query'][_0xcc6a('0x48')]){_0x2f966f[_0xcc6a('0x49')]=[{'all':!![]}];}_0x2f966f=_['merge']({},_0x2f966f,_0xfbb079[_0xcc6a('0x43')]);return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')](_0x2f966f)[_0xcc6a('0x27')](handleEntityNotFound(_0x17e5a0,null))[_0xcc6a('0x27')](respondWithResult(_0x17e5a0,null))[_0xcc6a('0x4b')](handleError(_0x17e5a0,null));};exports['create']=function(_0x4e1a0b,_0x47c999){return db[_0xcc6a('0x2d')][_0xcc6a('0x4c')](_0x4e1a0b[_0xcc6a('0x4d')],{})[_0xcc6a('0x27')](respondWithResult(_0x47c999,0xc9))['catch'](handleError(_0x47c999,null));};exports[_0xcc6a('0x4e')]=function(_0x5e7bab,_0x3aa7dd){if(_0x5e7bab[_0xcc6a('0x4d')]['id']){delete _0x5e7bab[_0xcc6a('0x4d')]['id'];}return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'id':_0x5e7bab[_0xcc6a('0x47')]['id']}})['then'](handleEntityNotFound(_0x3aa7dd,null))[_0xcc6a('0x27')](saveUpdates(_0x5e7bab[_0xcc6a('0x4d')],null))[_0xcc6a('0x27')](respondWithResult(_0x3aa7dd,null))[_0xcc6a('0x4b')](handleError(_0x3aa7dd,null));};exports[_0xcc6a('0x28')]=function(_0x362bf6,_0x431684){return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'id':_0x362bf6[_0xcc6a('0x47')]['id']}})['then'](handleEntityNotFound(_0x431684,null))[_0xcc6a('0x27')](removeEntity(_0x431684,null))[_0xcc6a('0x4b')](handleError(_0x431684,null));};exports[_0xcc6a('0x4f')]=function(_0x34531d,_0x14f5e5){return db[_0xcc6a('0x2d')]['describe']()['then'](respondWithResult(_0x14f5e5,null))[_0xcc6a('0x4b')](handleError(_0x14f5e5,null));};
\ No newline at end of file
index 1c01caa..b523000 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93f7=['exports','define','user_profile_has_resources','compositeIndex','resourceId','sectionId','lodash','moment','bluebird','request-promise','path','../../config/environment','./userProfileResource.attributes'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x93f7,0x158));var _0x793f=function(_0x430204,_0x9d70ed){_0x430204=_0x430204-0x0;var _0x3819c7=_0x93f7[_0x430204];return _0x3819c7;};'use strict';var _=require(_0x793f('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x793f('0x1'));var BPromise=require(_0x793f('0x2'));var rp=require(_0x793f('0x3'));var fs=require('fs');var path=require(_0x793f('0x4'));var rimraf=require('rimraf');var config=require(_0x793f('0x5'));var attributes=require(_0x793f('0x6'));module[_0x793f('0x7')]=function(_0x48bfb8,_0x5555fc){return _0x48bfb8[_0x793f('0x8')]('UserProfileResource',attributes,{'tableName':_0x793f('0x9'),'paranoid':![],'indexes':[{'name':_0x793f('0xa'),'fields':[_0x793f('0xb'),_0x793f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x382e=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','resourceId','sectionId','lodash','util','../../config/logger','api'];(function(_0x47118d,_0x4708d9){var _0x283665=function(_0x4981ec){while(--_0x4981ec){_0x47118d['push'](_0x47118d['shift']());}};_0x283665(++_0x4708d9);}(_0x382e,0x1b6));var _0xe382=function(_0x4d6d42,_0x3256e6){_0x4d6d42=_0x4d6d42-0x0;var _0x2d70d0=_0x382e[_0x4d6d42];return _0x2d70d0;};'use strict';var _=require(_0xe382('0x0'));var util=require(_0xe382('0x1'));var logger=require(_0xe382('0x2'))(_0xe382('0x3'));var moment=require(_0xe382('0x4'));var BPromise=require(_0xe382('0x5'));var rp=require(_0xe382('0x6'));var fs=require('fs');var path=require(_0xe382('0x7'));var rimraf=require(_0xe382('0x8'));var config=require(_0xe382('0x9'));var attributes=require(_0xe382('0xa'));module[_0xe382('0xb')]=function(_0x1a0d55,_0xc808dd){return _0x1a0d55[_0xe382('0xc')](_0xe382('0xd'),attributes,{'tableName':_0xe382('0xe'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0xe382('0xf'),_0xe382('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 8a131d2..bc645ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f2a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x2bc46d,_0x450778){var _0x29b4ce=function(_0x45ee10){while(--_0x45ee10){_0x2bc46d['push'](_0x2bc46d['shift']());}};_0x29b4ce(++_0x450778);}(_0x6f2a,0x189));var _0xa6f2=function(_0x43d33d,_0x354519){_0x43d33d=_0x43d33d-0x0;var _0x4296c3=_0x6f2a[_0x43d33d];return _0x4296c3;};'use strict';var _=require(_0xa6f2('0x0'));var util=require('util');var moment=require(_0xa6f2('0x1'));var BPromise=require(_0xa6f2('0x2'));var rs=require(_0xa6f2('0x3'));var fs=require('fs');var Redis=require(_0xa6f2('0x4'));var db=require(_0xa6f2('0x5'))['db'];var utils=require(_0xa6f2('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xa6f2('0x7'));var jayson=require(_0xa6f2('0x8'));var client=jayson[_0xa6f2('0x9')][_0xa6f2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dc568,_0x3e785f,_0x27fc13){return new BPromise(function(_0x400149,_0x24340c){return client[_0xa6f2('0xb')](_0x2dc568,_0x27fc13)[_0xa6f2('0xc')](function(_0x23a9fe){logger[_0xa6f2('0xd')](_0xa6f2('0xe'),_0x3e785f,_0xa6f2('0xf'));logger['debug'](_0xa6f2('0x10'),_0x3e785f,_0xa6f2('0xf'),JSON['stringify'](_0x23a9fe));if(_0x23a9fe[_0xa6f2('0x11')]){if(_0x23a9fe[_0xa6f2('0x11')][_0xa6f2('0x12')]===0x1f4){logger[_0xa6f2('0x11')](_0xa6f2('0xe'),_0x3e785f,_0x23a9fe[_0xa6f2('0x11')][_0xa6f2('0x13')]);return _0x24340c(_0x23a9fe[_0xa6f2('0x11')]['message']);}logger['error']('UserProfileResource,\x20%s,\x20%s',_0x3e785f,_0x23a9fe['error'][_0xa6f2('0x13')]);return _0x400149(_0x23a9fe[_0xa6f2('0x11')][_0xa6f2('0x13')]);}else{logger[_0xa6f2('0xd')]('UserProfileResource,\x20%s,\x20%s',_0x3e785f,'request\x20sent');_0x400149(_0x23a9fe[_0xa6f2('0x14')][_0xa6f2('0x13')]);}})[_0xa6f2('0x15')](function(_0x5de7a9){logger['error'](_0xa6f2('0xe'),_0x3e785f,_0x5de7a9);_0x24340c(_0x5de7a9);});});}
\ No newline at end of file
+var _0xa0cd=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x531e36,_0x5964fa){var _0x463750=function(_0x2bcf57){while(--_0x2bcf57){_0x531e36['push'](_0x531e36['shift']());}};_0x463750(++_0x5964fa);}(_0xa0cd,0x123));var _0xda0c=function(_0x2081aa,_0x31d653){_0x2081aa=_0x2081aa-0x0;var _0x36485d=_0xa0cd[_0x2081aa];return _0x36485d;};'use strict';var _=require(_0xda0c('0x0'));var util=require(_0xda0c('0x1'));var moment=require(_0xda0c('0x2'));var BPromise=require(_0xda0c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xda0c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xda0c('0x5'));var logger=require(_0xda0c('0x6'))(_0xda0c('0x7'));var config=require(_0xda0c('0x8'));var jayson=require(_0xda0c('0x9'));var client=jayson[_0xda0c('0xa')][_0xda0c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3ce2f1,_0x1b1fb9,_0x1b84f6){return new BPromise(function(_0x40b7fa,_0x58802b){return client[_0xda0c('0xc')](_0x3ce2f1,_0x1b84f6)[_0xda0c('0xd')](function(_0x6cdc05){logger[_0xda0c('0xe')](_0xda0c('0xf'),_0x1b1fb9,_0xda0c('0x10'));logger[_0xda0c('0x11')](_0xda0c('0x12'),_0x1b1fb9,_0xda0c('0x10'),JSON['stringify'](_0x6cdc05));if(_0x6cdc05[_0xda0c('0x13')]){if(_0x6cdc05[_0xda0c('0x13')][_0xda0c('0x14')]===0x1f4){logger['error'](_0xda0c('0xf'),_0x1b1fb9,_0x6cdc05[_0xda0c('0x13')][_0xda0c('0x15')]);return _0x58802b(_0x6cdc05['error'][_0xda0c('0x15')]);}logger[_0xda0c('0x13')](_0xda0c('0xf'),_0x1b1fb9,_0x6cdc05[_0xda0c('0x13')]['message']);return _0x40b7fa(_0x6cdc05[_0xda0c('0x13')]['message']);}else{logger[_0xda0c('0xe')](_0xda0c('0xf'),_0x1b1fb9,_0xda0c('0x10'));_0x40b7fa(_0x6cdc05[_0xda0c('0x16')][_0xda0c('0x15')]);}})[_0xda0c('0x17')](function(_0x4afced){logger['error'](_0xda0c('0xf'),_0x1b1fb9,_0x4afced);_0x58802b(_0x4afced);});});}
\ No newline at end of file
index 3a3cbe8..c197ccb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69c3=['post','create','put','update','delete','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','describe','get','/:id','show'];(function(_0x3d206d,_0x5ca6dd){var _0x33ea93=function(_0x33d6d3){while(--_0x33d6d3){_0x3d206d['push'](_0x3d206d['shift']());}};_0x33ea93(++_0x5ca6dd);}(_0x69c3,0x10a));var _0x369c=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x69c3[_0x42bdad];return _0x122626;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x369c('0x0'));var timeout=require(_0x369c('0x1'));var express=require(_0x369c('0x2'));var router=express[_0x369c('0x3')]();var fs_extra=require(_0x369c('0x4'));var auth=require(_0x369c('0x5'));var interaction=require(_0x369c('0x6'));var config=require(_0x369c('0x7'));var controller=require('./userProfileSection.controller');router['get']('/',auth[_0x369c('0x8')](),controller[_0x369c('0x9')]);router['get']('/describe',auth[_0x369c('0x8')](),controller[_0x369c('0xa')]);router[_0x369c('0xb')](_0x369c('0xc'),auth[_0x369c('0x8')](),controller[_0x369c('0xd')]);router[_0x369c('0xe')]('/',auth[_0x369c('0x8')](),controller[_0x369c('0xf')]);router[_0x369c('0x10')](_0x369c('0xc'),auth[_0x369c('0x8')](),controller[_0x369c('0x11')]);router[_0x369c('0x12')](_0x369c('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x369c('0x13')]=router;
\ No newline at end of file
+var _0x8777=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','index','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','multer','util','connect-timeout'];(function(_0x2cab49,_0x5502e2){var _0x3e50ac=function(_0x486860){while(--_0x486860){_0x2cab49['push'](_0x2cab49['shift']());}};_0x3e50ac(++_0x5502e2);}(_0x8777,0xb1));var _0x7877=function(_0x507fec,_0x5f3b11){_0x507fec=_0x507fec-0x0;var _0x593392=_0x8777[_0x507fec];return _0x593392;};'use strict';var multer=require(_0x7877('0x0'));var util=require(_0x7877('0x1'));var path=require('path');var timeout=require(_0x7877('0x2'));var express=require(_0x7877('0x3'));var router=express[_0x7877('0x4')]();var fs_extra=require(_0x7877('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x7877('0x6'));var config=require(_0x7877('0x7'));var controller=require(_0x7877('0x8'));router[_0x7877('0x9')]('/',auth['isAuthenticated'](),controller[_0x7877('0xa')]);router[_0x7877('0x9')]('/describe',auth[_0x7877('0xb')](),controller[_0x7877('0xc')]);router[_0x7877('0x9')](_0x7877('0xd'),auth[_0x7877('0xb')](),controller[_0x7877('0xe')]);router[_0x7877('0xf')]('/',auth[_0x7877('0xb')](),controller[_0x7877('0x10')]);router[_0x7877('0x11')](_0x7877('0xd'),auth[_0x7877('0xb')](),controller[_0x7877('0x12')]);router['delete']('/:id',auth[_0x7877('0xb')](),controller[_0x7877('0x13')]);module['exports']=router;
\ No newline at end of file
index 0182db8..c7c0f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb574=['BOOLEAN','setDataValue','crudPermissions','sequelize','exports','STRING','INTEGER'];(function(_0x43a759,_0x14b371){var _0x514ac9=function(_0x4f96e4){while(--_0x4f96e4){_0x43a759['push'](_0x43a759['shift']());}};_0x514ac9(++_0x14b371);}(_0xb574,0x106));var _0x4b57=function(_0x259636,_0xb3d31){_0x259636=_0x259636-0x0;var _0x5ab829=_0xb574[_0x259636];return _0x5ab829;};'use strict';var Sequelize=require(_0x4b57('0x0'));module[_0x4b57('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x4b57('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4b57('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4b57('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4b57('0x2')],'set':function(_0x168524){this[_0x4b57('0x5')](_0x4b57('0x6'),_0x168524?_0x168524['join'](''):[]);},'get':function(){return this['getDataValue'](_0x4b57('0x6'))?this['getDataValue']('crudPermissions')['split'](''):[];}}};
\ No newline at end of file
+var _0xe605=['BOOLEAN','setDataValue','crudPermissions','join','getDataValue','split','sequelize','exports','STRING','INTEGER'];(function(_0x5b8437,_0x38eb58){var _0x4a0cf3=function(_0x3e74e2){while(--_0x3e74e2){_0x5b8437['push'](_0x5b8437['shift']());}};_0x4a0cf3(++_0x38eb58);}(_0xe605,0x92));var _0x5e60=function(_0x524c50,_0x2f987a){_0x524c50=_0x524c50-0x0;var _0x48fa8e=_0xe605[_0x524c50];return _0x48fa8e;};'use strict';var Sequelize=require(_0x5e60('0x0'));module[_0x5e60('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x5e60('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x5e60('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x5e60('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x5e60('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x5e60('0x2')],'set':function(_0xfe1f64){this[_0x5e60('0x5')](_0x5e60('0x6'),_0xfe1f64?_0xfe1f64[_0x5e60('0x7')](''):[]);},'get':function(){return this[_0x5e60('0x8')](_0x5e60('0x6'))?this[_0x5e60('0x8')]('crudPermissions')[_0x5e60('0x9')](''):[];}}};
\ No newline at end of file
index ac70727..7b79ab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bd4=['catch','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','index','map','fieldName','type','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','order','where','filters','pick','merge','VIRTUAL','options','UserProfileSection','includeAll','include','rows','show','params','find'];(function(_0x5189de,_0x561558){var _0xe73585=function(_0x404fdf){while(--_0x404fdf){_0x5189de['push'](_0x5189de['shift']());}};_0xe73585(++_0x561558);}(_0x6bd4,0xeb));var _0x46bd=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x6bd4[_0x68c979];return _0x4f0001;};'use strict';var emlformat=require(_0x46bd('0x0'));var rimraf=require(_0x46bd('0x1'));var zipdir=require(_0x46bd('0x2'));var jsonpatch=require(_0x46bd('0x3'));var rp=require(_0x46bd('0x4'));var moment=require(_0x46bd('0x5'));var BPromise=require(_0x46bd('0x6'));var Mustache=require('mustache');var util=require(_0x46bd('0x7'));var path=require(_0x46bd('0x8'));var sox=require(_0x46bd('0x9'));var csv=require(_0x46bd('0xa'));var ejs=require(_0x46bd('0xb'));var fs=require('fs');var fs_extra=require(_0x46bd('0xc'));var _=require(_0x46bd('0xd'));var squel=require(_0x46bd('0xe'));var crypto=require(_0x46bd('0xf'));var jsforce=require(_0x46bd('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x46bd('0xa'));var querystring=require(_0x46bd('0x11'));var Papa=require(_0x46bd('0x12'));var Redis=require(_0x46bd('0x13'));var authService=require(_0x46bd('0x14'));var qs=require(_0x46bd('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x46bd('0x16'));var logger=require(_0x46bd('0x17'))('api');var utils=require(_0x46bd('0x18'));var config=require(_0x46bd('0x19'));var licenseUtil=require(_0x46bd('0x1a'));var db=require(_0x46bd('0x1b'))['db'];function respondWithStatusCode(_0x5a9b67,_0x5a964a){_0x5a964a=_0x5a964a||0xcc;return function(_0x89f84a){if(_0x89f84a){return _0x5a9b67[_0x46bd('0x1c')](_0x5a964a);}return _0x5a9b67[_0x46bd('0x1d')](_0x5a964a)[_0x46bd('0x1e')]();};}function respondWithResult(_0x558dc2,_0x1551a4){_0x1551a4=_0x1551a4||0xc8;return function(_0x2ce300){if(_0x2ce300){return _0x558dc2[_0x46bd('0x1d')](_0x1551a4)[_0x46bd('0x1f')](_0x2ce300);}};}function respondWithFilteredResult(_0x4cf65a,_0x15d7cb){return function(_0x2e4916){if(_0x2e4916){var _0x2e708a=typeof _0x15d7cb[_0x46bd('0x20')]===_0x46bd('0x21')&&typeof _0x15d7cb[_0x46bd('0x22')]==='undefined';var _0x20116b=_0x2e4916[_0x46bd('0x23')];var _0x35ef9f=_0x2e708a?0x0:_0x15d7cb[_0x46bd('0x20')];var _0x13f0bf=_0x2e708a?_0x2e4916[_0x46bd('0x23')]:_0x15d7cb[_0x46bd('0x20')]+_0x15d7cb[_0x46bd('0x22')];var _0x324f94;if(_0x13f0bf>=_0x20116b){_0x13f0bf=_0x20116b;_0x324f94=0xc8;}else{_0x324f94=0xce;}_0x4cf65a[_0x46bd('0x1d')](_0x324f94);return _0x4cf65a[_0x46bd('0x24')](_0x46bd('0x25'),_0x35ef9f+'-'+_0x13f0bf+'/'+_0x20116b)['json'](_0x2e4916);}return null;};}function patchUpdates(_0x264bc3){return function(_0x415a83){try{jsonpatch[_0x46bd('0x26')](_0x415a83,_0x264bc3,!![]);}catch(_0x156378){return BPromise[_0x46bd('0x27')](_0x156378);}return _0x415a83[_0x46bd('0x28')]();};}function saveUpdates(_0x1ff434,_0x2d7dda){return function(_0x272195){if(_0x272195){return _0x272195['update'](_0x1ff434)[_0x46bd('0x29')](function(_0x298b70){return _0x298b70;});}return null;};}function removeEntity(_0x216fbd,_0x253708){return function(_0x7f3e22){if(_0x7f3e22){return _0x7f3e22[_0x46bd('0x2a')]()['then'](function(){_0x216fbd['status'](0xcc)[_0x46bd('0x1e')]();});}};}function handleEntityNotFound(_0x3c7e72,_0x407e47){return function(_0x434341){if(!_0x434341){_0x3c7e72['sendStatus'](0x194);}return _0x434341;};}function handleError(_0x1e9355,_0x9d01ec){_0x9d01ec=_0x9d01ec||0x1f4;return function(_0x2073c7){logger[_0x46bd('0x2b')](_0x2073c7[_0x46bd('0x2c')]);if(_0x2073c7[_0x46bd('0x2d')]){delete _0x2073c7[_0x46bd('0x2d')];}_0x1e9355[_0x46bd('0x1d')](_0x9d01ec)['send'](_0x2073c7);};}exports[_0x46bd('0x2e')]=function(_0x3960fc,_0x13d895){var _0x122c89={},_0x18752d={},_0x3f4f64={'count':0x0,'rows':[]};var _0x38ffa7=_[_0x46bd('0x2f')](db['UserProfileSection']['rawAttributes'],function(_0xe7aef9){return{'name':_0xe7aef9[_0x46bd('0x30')],'type':_0xe7aef9[_0x46bd('0x31')][_0x46bd('0x32')]};});_0x18752d['model']=_[_0x46bd('0x2f')](_0x38ffa7,_0x46bd('0x2d'));_0x18752d['query']=_[_0x46bd('0x33')](_0x3960fc[_0x46bd('0x34')]);_0x18752d['filters']=_[_0x46bd('0x35')](_0x18752d[_0x46bd('0x36')],_0x18752d[_0x46bd('0x34')]);_0x122c89[_0x46bd('0x37')]=_[_0x46bd('0x35')](_0x18752d[_0x46bd('0x36')],qs[_0x46bd('0x38')](_0x3960fc[_0x46bd('0x34')][_0x46bd('0x38')]));_0x122c89[_0x46bd('0x37')]=_0x122c89[_0x46bd('0x37')][_0x46bd('0x39')]?_0x122c89[_0x46bd('0x37')]:_0x18752d[_0x46bd('0x36')];if(!_0x3960fc['query'][_0x46bd('0x3a')]('nolimit')){_0x122c89[_0x46bd('0x22')]=qs[_0x46bd('0x22')](_0x3960fc[_0x46bd('0x34')][_0x46bd('0x22')]);_0x122c89[_0x46bd('0x20')]=qs['offset'](_0x3960fc[_0x46bd('0x34')]['offset']);}_0x122c89[_0x46bd('0x3b')]=qs['sort'](_0x3960fc[_0x46bd('0x34')]['sort']);_0x122c89[_0x46bd('0x3c')]=qs[_0x46bd('0x3d')](_[_0x46bd('0x3e')](_0x3960fc[_0x46bd('0x34')],_0x18752d[_0x46bd('0x3d')]),_0x38ffa7);if(_0x3960fc[_0x46bd('0x34')]['filter']){_0x122c89[_0x46bd('0x3c')]=_[_0x46bd('0x3f')](_0x122c89[_0x46bd('0x3c')],{'$or':_[_0x46bd('0x2f')](_0x38ffa7,function(_0x549ef5){if(_0x549ef5[_0x46bd('0x31')]!==_0x46bd('0x40')){var _0x4bc7a7={};_0x4bc7a7[_0x549ef5[_0x46bd('0x2d')]]={'$like':'%'+_0x3960fc['query']['filter']+'%'};return _0x4bc7a7;}})});}_0x122c89=_[_0x46bd('0x3f')]({},_0x122c89,_0x3960fc[_0x46bd('0x41')]);var _0x40d7dc={'where':_0x122c89[_0x46bd('0x3c')]};return db[_0x46bd('0x42')][_0x46bd('0x23')](_0x40d7dc)[_0x46bd('0x29')](function(_0x53d046){_0x3f4f64[_0x46bd('0x23')]=_0x53d046;if(_0x3960fc[_0x46bd('0x34')][_0x46bd('0x43')]){_0x122c89[_0x46bd('0x44')]=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x122c89);})[_0x46bd('0x29')](function(_0x295d2d){_0x3f4f64[_0x46bd('0x45')]=_0x295d2d;return _0x3f4f64;})['then'](respondWithFilteredResult(_0x13d895,_0x122c89))['catch'](handleError(_0x13d895,null));};exports[_0x46bd('0x46')]=function(_0x4b0a35,_0x37142f){var _0x181af4={'raw':![],'where':{'id':_0x4b0a35[_0x46bd('0x47')]['id']}},_0x127b53={};_0x127b53[_0x46bd('0x36')]=_[_0x46bd('0x33')](db[_0x46bd('0x42')]['rawAttributes']);_0x127b53[_0x46bd('0x34')]=_[_0x46bd('0x33')](_0x4b0a35['query']);_0x127b53[_0x46bd('0x3d')]=_[_0x46bd('0x35')](_0x127b53['model'],_0x127b53[_0x46bd('0x34')]);_0x181af4[_0x46bd('0x37')]=_[_0x46bd('0x35')](_0x127b53[_0x46bd('0x36')],qs['fields'](_0x4b0a35[_0x46bd('0x34')][_0x46bd('0x38')]));_0x181af4[_0x46bd('0x37')]=_0x181af4[_0x46bd('0x37')][_0x46bd('0x39')]?_0x181af4['attributes']:_0x127b53[_0x46bd('0x36')];if(_0x4b0a35[_0x46bd('0x34')][_0x46bd('0x43')]){_0x181af4[_0x46bd('0x44')]=[{'all':!![]}];}_0x181af4=_[_0x46bd('0x3f')]({},_0x181af4,_0x4b0a35['options']);return db[_0x46bd('0x42')][_0x46bd('0x48')](_0x181af4)[_0x46bd('0x29')](handleEntityNotFound(_0x37142f,null))[_0x46bd('0x29')](respondWithResult(_0x37142f,null))[_0x46bd('0x49')](handleError(_0x37142f,null));};exports[_0x46bd('0x4a')]=function(_0x1e86bc,_0x576e85){return db[_0x46bd('0x42')]['create'](_0x1e86bc[_0x46bd('0x4b')],{})[_0x46bd('0x29')](respondWithResult(_0x576e85,0xc9))[_0x46bd('0x49')](handleError(_0x576e85,null));};exports['update']=function(_0xba5897,_0x53ec89){if(_0xba5897['body']['id']){delete _0xba5897['body']['id'];}return db[_0x46bd('0x42')][_0x46bd('0x48')]({'where':{'id':_0xba5897['params']['id']}})[_0x46bd('0x29')](handleEntityNotFound(_0x53ec89,null))[_0x46bd('0x29')](saveUpdates(_0xba5897[_0x46bd('0x4b')],null))['then'](respondWithResult(_0x53ec89,null))['catch'](handleError(_0x53ec89,null));};exports[_0x46bd('0x2a')]=function(_0x49d3dd,_0x25971a){return db[_0x46bd('0x42')][_0x46bd('0x48')]({'where':{'id':_0x49d3dd[_0x46bd('0x47')]['id']}})[_0x46bd('0x29')](handleEntityNotFound(_0x25971a,null))[_0x46bd('0x29')](removeEntity(_0x25971a,null))[_0x46bd('0x49')](handleError(_0x25971a,null));};exports[_0x46bd('0x4c')]=function(_0xe4dc89,_0x3badd2){return db[_0x46bd('0x42')][_0x46bd('0x4c')]()[_0x46bd('0x29')](respondWithResult(_0x3badd2,null))[_0x46bd('0x49')](handleError(_0x3badd2,null));};
\ No newline at end of file
+var _0xa3af=['undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','UserProfileSection','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','where','filter','VIRTUAL','merge','includeAll','include','findAll','catch','params','keys','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0xa3af,0x100));var _0xfa3a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xa3af[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require(_0xfa3a('0x0'));var rimraf=require(_0xfa3a('0x1'));var zipdir=require(_0xfa3a('0x2'));var jsonpatch=require(_0xfa3a('0x3'));var rp=require(_0xfa3a('0x4'));var moment=require(_0xfa3a('0x5'));var BPromise=require(_0xfa3a('0x6'));var Mustache=require('mustache');var util=require(_0xfa3a('0x7'));var path=require('path');var sox=require(_0xfa3a('0x8'));var csv=require(_0xfa3a('0x9'));var ejs=require(_0xfa3a('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xfa3a('0xb'));var crypto=require('crypto');var jsforce=require(_0xfa3a('0xc'));var deskjs=require(_0xfa3a('0xd'));var toCsv=require(_0xfa3a('0x9'));var querystring=require(_0xfa3a('0xe'));var Papa=require(_0xfa3a('0xf'));var Redis=require(_0xfa3a('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfa3a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfa3a('0x12'));var logger=require('../../config/logger')(_0xfa3a('0x13'));var utils=require('../../config/utils');var config=require(_0xfa3a('0x14'));var licenseUtil=require(_0xfa3a('0x15'));var db=require(_0xfa3a('0x16'))['db'];function respondWithStatusCode(_0x3aea3a,_0x4d2ca9){_0x4d2ca9=_0x4d2ca9||0xcc;return function(_0x43eb7b){if(_0x43eb7b){return _0x3aea3a[_0xfa3a('0x17')](_0x4d2ca9);}return _0x3aea3a[_0xfa3a('0x18')](_0x4d2ca9)[_0xfa3a('0x19')]();};}function respondWithResult(_0x347709,_0x223727){_0x223727=_0x223727||0xc8;return function(_0x1b0edb){if(_0x1b0edb){return _0x347709[_0xfa3a('0x18')](_0x223727)[_0xfa3a('0x1a')](_0x1b0edb);}};}function respondWithFilteredResult(_0x305d11,_0x5d69e0){return function(_0x463eef){if(_0x463eef){var _0x53874b=typeof _0x5d69e0[_0xfa3a('0x1b')]===_0xfa3a('0x1c')&&typeof _0x5d69e0[_0xfa3a('0x1d')]==='undefined';var _0x5b2370=_0x463eef[_0xfa3a('0x1e')];var _0x204d32=_0x53874b?0x0:_0x5d69e0[_0xfa3a('0x1b')];var _0x1e1599=_0x53874b?_0x463eef[_0xfa3a('0x1e')]:_0x5d69e0['offset']+_0x5d69e0[_0xfa3a('0x1d')];var _0x177dc2;if(_0x1e1599>=_0x5b2370){_0x1e1599=_0x5b2370;_0x177dc2=0xc8;}else{_0x177dc2=0xce;}_0x305d11[_0xfa3a('0x18')](_0x177dc2);return _0x305d11[_0xfa3a('0x1f')]('Content-Range',_0x204d32+'-'+_0x1e1599+'/'+_0x5b2370)[_0xfa3a('0x1a')](_0x463eef);}return null;};}function patchUpdates(_0x581d61){return function(_0x12d94e){try{jsonpatch[_0xfa3a('0x20')](_0x12d94e,_0x581d61,!![]);}catch(_0x153345){return BPromise[_0xfa3a('0x21')](_0x153345);}return _0x12d94e[_0xfa3a('0x22')]();};}function saveUpdates(_0x5b0ba1,_0x560db6){return function(_0x44a702){if(_0x44a702){return _0x44a702[_0xfa3a('0x23')](_0x5b0ba1)[_0xfa3a('0x24')](function(_0x475d95){return _0x475d95;});}return null;};}function removeEntity(_0x52a4d3,_0xe249ed){return function(_0x5cca09){if(_0x5cca09){return _0x5cca09[_0xfa3a('0x25')]()['then'](function(){_0x52a4d3[_0xfa3a('0x18')](0xcc)[_0xfa3a('0x19')]();});}};}function handleEntityNotFound(_0x7ddd52,_0x12eb6c){return function(_0x2f0ad4){if(!_0x2f0ad4){_0x7ddd52[_0xfa3a('0x17')](0x194);}return _0x2f0ad4;};}function handleError(_0x2207bd,_0x4957ae){_0x4957ae=_0x4957ae||0x1f4;return function(_0x372409){logger[_0xfa3a('0x26')](_0x372409['stack']);if(_0x372409[_0xfa3a('0x27')]){delete _0x372409[_0xfa3a('0x27')];}_0x2207bd[_0xfa3a('0x18')](_0x4957ae)[_0xfa3a('0x28')](_0x372409);};}exports[_0xfa3a('0x29')]=function(_0x4bebab,_0x30d973){var _0x43f3b6={},_0x392dad={},_0x1026b1={'count':0x0,'rows':[]};var _0x49da6c=_[_0xfa3a('0x2a')](db[_0xfa3a('0x2b')][_0xfa3a('0x2c')],function(_0x3ef0ad){return{'name':_0x3ef0ad['fieldName'],'type':_0x3ef0ad[_0xfa3a('0x2d')][_0xfa3a('0x2e')]};});_0x392dad[_0xfa3a('0x2f')]=_[_0xfa3a('0x2a')](_0x49da6c,'name');_0x392dad['query']=_['keys'](_0x4bebab[_0xfa3a('0x30')]);_0x392dad[_0xfa3a('0x31')]=_[_0xfa3a('0x32')](_0x392dad[_0xfa3a('0x2f')],_0x392dad[_0xfa3a('0x30')]);_0x43f3b6[_0xfa3a('0x33')]=_[_0xfa3a('0x32')](_0x392dad[_0xfa3a('0x2f')],qs[_0xfa3a('0x34')](_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x34')]));_0x43f3b6[_0xfa3a('0x33')]=_0x43f3b6[_0xfa3a('0x33')][_0xfa3a('0x35')]?_0x43f3b6[_0xfa3a('0x33')]:_0x392dad[_0xfa3a('0x2f')];if(!_0x4bebab['query'][_0xfa3a('0x36')]('nolimit')){_0x43f3b6[_0xfa3a('0x1d')]=qs[_0xfa3a('0x1d')](_0x4bebab[_0xfa3a('0x30')]['limit']);_0x43f3b6[_0xfa3a('0x1b')]=qs[_0xfa3a('0x1b')](_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x1b')]);}_0x43f3b6[_0xfa3a('0x37')]=qs['sort'](_0x4bebab['query']['sort']);_0x43f3b6[_0xfa3a('0x38')]=qs[_0xfa3a('0x31')](_['pick'](_0x4bebab['query'],_0x392dad[_0xfa3a('0x31')]),_0x49da6c);if(_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x39')]){_0x43f3b6['where']=_['merge'](_0x43f3b6[_0xfa3a('0x38')],{'$or':_[_0xfa3a('0x2a')](_0x49da6c,function(_0x78a9b0){if(_0x78a9b0[_0xfa3a('0x2d')]!==_0xfa3a('0x3a')){var _0x1b4332={};_0x1b4332[_0x78a9b0[_0xfa3a('0x27')]]={'$like':'%'+_0x4bebab[_0xfa3a('0x30')][_0xfa3a('0x39')]+'%'};return _0x1b4332;}})});}_0x43f3b6=_[_0xfa3a('0x3b')]({},_0x43f3b6,_0x4bebab['options']);var _0x5d0f31={'where':_0x43f3b6[_0xfa3a('0x38')]};return db[_0xfa3a('0x2b')][_0xfa3a('0x1e')](_0x5d0f31)[_0xfa3a('0x24')](function(_0xa92387){_0x1026b1['count']=_0xa92387;if(_0x4bebab['query'][_0xfa3a('0x3c')]){_0x43f3b6[_0xfa3a('0x3d')]=[{'all':!![]}];}return db[_0xfa3a('0x2b')][_0xfa3a('0x3e')](_0x43f3b6);})[_0xfa3a('0x24')](function(_0xc17ab5){_0x1026b1['rows']=_0xc17ab5;return _0x1026b1;})[_0xfa3a('0x24')](respondWithFilteredResult(_0x30d973,_0x43f3b6))[_0xfa3a('0x3f')](handleError(_0x30d973,null));};exports['show']=function(_0x307e5c,_0x1b1d25){var _0xe8ea41={'raw':![],'where':{'id':_0x307e5c[_0xfa3a('0x40')]['id']}},_0x357690={};_0x357690[_0xfa3a('0x2f')]=_[_0xfa3a('0x41')](db[_0xfa3a('0x2b')][_0xfa3a('0x2c')]);_0x357690[_0xfa3a('0x30')]=_[_0xfa3a('0x41')](_0x307e5c[_0xfa3a('0x30')]);_0x357690[_0xfa3a('0x31')]=_[_0xfa3a('0x32')](_0x357690[_0xfa3a('0x2f')],_0x357690[_0xfa3a('0x30')]);_0xe8ea41[_0xfa3a('0x33')]=_[_0xfa3a('0x32')](_0x357690[_0xfa3a('0x2f')],qs[_0xfa3a('0x34')](_0x307e5c[_0xfa3a('0x30')][_0xfa3a('0x34')]));_0xe8ea41[_0xfa3a('0x33')]=_0xe8ea41[_0xfa3a('0x33')][_0xfa3a('0x35')]?_0xe8ea41[_0xfa3a('0x33')]:_0x357690[_0xfa3a('0x2f')];if(_0x307e5c[_0xfa3a('0x30')][_0xfa3a('0x3c')]){_0xe8ea41['include']=[{'all':!![]}];}_0xe8ea41=_[_0xfa3a('0x3b')]({},_0xe8ea41,_0x307e5c[_0xfa3a('0x42')]);return db[_0xfa3a('0x2b')][_0xfa3a('0x43')](_0xe8ea41)[_0xfa3a('0x24')](handleEntityNotFound(_0x1b1d25,null))[_0xfa3a('0x24')](respondWithResult(_0x1b1d25,null))[_0xfa3a('0x3f')](handleError(_0x1b1d25,null));};exports[_0xfa3a('0x44')]=function(_0x3729ec,_0x52ce27){return db['UserProfileSection'][_0xfa3a('0x44')](_0x3729ec[_0xfa3a('0x45')],{})['then'](respondWithResult(_0x52ce27,0xc9))[_0xfa3a('0x3f')](handleError(_0x52ce27,null));};exports[_0xfa3a('0x23')]=function(_0x4bf1ee,_0x3dbeca){if(_0x4bf1ee[_0xfa3a('0x45')]['id']){delete _0x4bf1ee['body']['id'];}return db['UserProfileSection'][_0xfa3a('0x43')]({'where':{'id':_0x4bf1ee['params']['id']}})[_0xfa3a('0x24')](handleEntityNotFound(_0x3dbeca,null))[_0xfa3a('0x24')](saveUpdates(_0x4bf1ee[_0xfa3a('0x45')],null))[_0xfa3a('0x24')](respondWithResult(_0x3dbeca,null))['catch'](handleError(_0x3dbeca,null));};exports[_0xfa3a('0x25')]=function(_0x1609e0,_0x52fd3f){return db['UserProfileSection'][_0xfa3a('0x43')]({'where':{'id':_0x1609e0[_0xfa3a('0x40')]['id']}})['then'](handleEntityNotFound(_0x52fd3f,null))[_0xfa3a('0x24')](removeEntity(_0x52fd3f,null))['catch'](handleError(_0x52fd3f,null));};exports[_0xfa3a('0x46')]=function(_0xf7202c,_0x47ba11){return db[_0xfa3a('0x2b')]['describe']()[_0xfa3a('0x24')](respondWithResult(_0x47ba11,null))[_0xfa3a('0x3f')](handleError(_0x47ba11,null));};
\ No newline at end of file
index 73efe10..041ee01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9c9=['../../config/logger','bluebird','request-promise','path','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xd9c9,0x103));var _0x9d9c=function(_0x453ef9,_0x2f5a9a){_0x453ef9=_0x453ef9-0x0;var _0x2f40a3=_0xd9c9[_0x453ef9];return _0x2f40a3;};'use strict';var _=require(_0x9d9c('0x0'));var util=require('util');var logger=require(_0x9d9c('0x1'))('api');var moment=require('moment');var BPromise=require(_0x9d9c('0x2'));var rp=require(_0x9d9c('0x3'));var fs=require('fs');var path=require(_0x9d9c('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userProfileSection.attributes');module['exports']=function(_0x2dfa09,_0x121f37){return _0x2dfa09['define'](_0x9d9c('0x5'),attributes,{'tableName':_0x9d9c('0x6'),'paranoid':![],'indexes':[{'name':_0x9d9c('0x7'),'fields':[_0x9d9c('0x8'),_0x9d9c('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf57e=['api','moment','request-promise','path','exports','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger'];(function(_0x41df0f,_0x40b19c){var _0x533667=function(_0x213395){while(--_0x213395){_0x41df0f['push'](_0x41df0f['shift']());}};_0x533667(++_0x40b19c);}(_0xf57e,0x1e9));var _0xef57=function(_0xce5c89,_0x2dc142){_0xce5c89=_0xce5c89-0x0;var _0x508b89=_0xf57e[_0xce5c89];return _0x508b89;};'use strict';var _=require(_0xef57('0x0'));var util=require(_0xef57('0x1'));var logger=require(_0xef57('0x2'))(_0xef57('0x3'));var moment=require(_0xef57('0x4'));var BPromise=require('bluebird');var rp=require(_0xef57('0x5'));var fs=require('fs');var path=require(_0xef57('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userProfileSection.attributes');module[_0xef57('0x7')]=function(_0x3da419,_0x5ee7e5){return _0x3da419['define']('UserProfileSection',attributes,{'tableName':_0xef57('0x8'),'paranoid':![],'indexes':[{'name':_0xef57('0x9'),'fields':[_0xef57('0xa'),_0xef57('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 9c3314d..d71a2cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef4d=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x3a1156,_0x29daab){var _0x1b70cf=function(_0x4ce216){while(--_0x4ce216){_0x3a1156['push'](_0x3a1156['shift']());}};_0x1b70cf(++_0x29daab);}(_0xef4d,0xad));var _0xdef4=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0xef4d[_0x34843e];return _0x598f7f;};'use strict';var _=require(_0xdef4('0x0'));var util=require(_0xdef4('0x1'));var moment=require('moment');var BPromise=require(_0xdef4('0x2'));var rs=require(_0xdef4('0x3'));var fs=require('fs');var Redis=require(_0xdef4('0x4'));var db=require(_0xdef4('0x5'))['db'];var utils=require(_0xdef4('0x6'));var logger=require('../../config/logger')(_0xdef4('0x7'));var config=require('../../config/environment');var jayson=require(_0xdef4('0x8'));var client=jayson[_0xdef4('0x9')][_0xdef4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c4ebf,_0x1fdb4a,_0x5d7f82){return new BPromise(function(_0x2f1cdb,_0x52e1ed){return client['request'](_0x3c4ebf,_0x5d7f82)[_0xdef4('0xb')](function(_0x176094){logger[_0xdef4('0xc')](_0xdef4('0xd'),_0x1fdb4a,_0xdef4('0xe'));logger[_0xdef4('0xf')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x1fdb4a,'request\x20sent',JSON[_0xdef4('0x10')](_0x176094));if(_0x176094[_0xdef4('0x11')]){if(_0x176094[_0xdef4('0x11')][_0xdef4('0x12')]===0x1f4){logger['error'](_0xdef4('0xd'),_0x1fdb4a,_0x176094[_0xdef4('0x11')][_0xdef4('0x13')]);return _0x52e1ed(_0x176094['error']['message']);}logger[_0xdef4('0x11')](_0xdef4('0xd'),_0x1fdb4a,_0x176094[_0xdef4('0x11')][_0xdef4('0x13')]);return _0x2f1cdb(_0x176094[_0xdef4('0x11')][_0xdef4('0x13')]);}else{logger['info'](_0xdef4('0xd'),_0x1fdb4a,_0xdef4('0xe'));_0x2f1cdb(_0x176094[_0xdef4('0x14')][_0xdef4('0x13')]);}})[_0xdef4('0x15')](function(_0x540b95){logger[_0xdef4('0x11')](_0xdef4('0xd'),_0x1fdb4a,_0x540b95);_0x52e1ed(_0x540b95);});});}
\ No newline at end of file
+var _0x35ad=['debug','UserProfileSection,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','UserProfileSection,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','http','request','then','info'];(function(_0x1c0991,_0x4f22d2){var _0x5034de=function(_0x520f49){while(--_0x520f49){_0x1c0991['push'](_0x1c0991['shift']());}};_0x5034de(++_0x4f22d2);}(_0x35ad,0xc7));var _0xd35a=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0x35ad[_0x243b59];return _0x3e1676;};'use strict';var _=require(_0xd35a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd35a('0x1'));var rs=require(_0xd35a('0x2'));var fs=require('fs');var Redis=require(_0xd35a('0x3'));var db=require(_0xd35a('0x4'))['db'];var utils=require(_0xd35a('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xd35a('0x6'));var client=jayson['client'][_0xd35a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2e32d8,_0x5cc2c8,_0x527e78){return new BPromise(function(_0x1b3d3a,_0x17ae1c){return client[_0xd35a('0x8')](_0x2e32d8,_0x527e78)[_0xd35a('0x9')](function(_0x52789d){logger[_0xd35a('0xa')]('UserProfileSection,\x20%s,\x20%s',_0x5cc2c8,'request\x20sent');logger[_0xd35a('0xb')](_0xd35a('0xc'),_0x5cc2c8,_0xd35a('0xd'),JSON[_0xd35a('0xe')](_0x52789d));if(_0x52789d[_0xd35a('0xf')]){if(_0x52789d[_0xd35a('0xf')][_0xd35a('0x10')]===0x1f4){logger[_0xd35a('0xf')](_0xd35a('0x11'),_0x5cc2c8,_0x52789d[_0xd35a('0xf')][_0xd35a('0x12')]);return _0x17ae1c(_0x52789d['error'][_0xd35a('0x12')]);}logger['error'](_0xd35a('0x11'),_0x5cc2c8,_0x52789d[_0xd35a('0xf')][_0xd35a('0x12')]);return _0x1b3d3a(_0x52789d[_0xd35a('0xf')][_0xd35a('0x12')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x5cc2c8,'request\x20sent');_0x1b3d3a(_0x52789d[_0xd35a('0x13')]['message']);}})[_0xd35a('0x14')](function(_0x190023){logger[_0xd35a('0xf')]('UserProfileSection,\x20%s,\x20%s',_0x5cc2c8,_0x190023);_0x17ae1c(_0x190023);});});}
\ No newline at end of file
index 40df6da..71d52ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x95eba8,_0x128c50){var _0x54f606=function(_0x75bbce){while(--_0x75bbce){_0x95eba8['push'](_0x95eba8['shift']());}};_0x54f606(++_0x128c50);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x447a9f,_0x48619b){var _0x1286fc=function(_0x3ae69c){while(--_0x3ae69c){_0x447a9f['push'](_0x447a9f['shift']());}};_0x1286fc(++_0x48619b);}(_0x9c44,0x178));var _0x49c4=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x9c44[_0x334841];return _0x5beb4b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index a890b64..4c4d2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfada=['sequelize','exports'];(function(_0x15b34d,_0x54b59e){var _0x2fe9df=function(_0x5f0c83){while(--_0x5f0c83){_0x15b34d['push'](_0x15b34d['shift']());}};_0x2fe9df(++_0x54b59e);}(_0xfada,0x1d2));var _0xafad=function(_0x3bbdcb,_0xd6828c){_0x3bbdcb=_0x3bbdcb-0x0;var _0x505039=_0xfada[_0x3bbdcb];return _0x505039;};'use strict';var Sequelize=require(_0xafad('0x0'));module[_0xafad('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdccf=['exports','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdccf,0x118));var _0xfdcc=function(_0x30c0c8,_0x3d7c2){_0x30c0c8=_0x30c0c8-0x0;var _0x334b49=_0xdccf[_0x30c0c8];return _0x334b49;};'use strict';var Sequelize=require('sequelize');module[_0xfdcc('0x0')]={'penalty':{'type':Sequelize[_0xfdcc('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index f20196b..9ea4b60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4b6=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserSmsQueue','user_has_sms_queues','util','../../config/logger','api','moment'];(function(_0x51aafc,_0x203fb4){var _0x33979e=function(_0x42d95c){while(--_0x42d95c){_0x51aafc['push'](_0x51aafc['shift']());}};_0x33979e(++_0x203fb4);}(_0xb4b6,0x7e));var _0x6b4b=function(_0x356dd3,_0x4c7976){_0x356dd3=_0x356dd3-0x0;var _0xaf9f3e=_0xb4b6[_0x356dd3];return _0xaf9f3e;};'use strict';var _=require('lodash');var util=require(_0x6b4b('0x0'));var logger=require(_0x6b4b('0x1'))(_0x6b4b('0x2'));var moment=require(_0x6b4b('0x3'));var BPromise=require(_0x6b4b('0x4'));var rp=require(_0x6b4b('0x5'));var fs=require('fs');var path=require(_0x6b4b('0x6'));var rimraf=require(_0x6b4b('0x7'));var config=require(_0x6b4b('0x8'));var attributes=require('./userSmsQueue.attributes');module[_0x6b4b('0x9')]=function(_0x49e81c,_0x3915de){return _0x49e81c[_0x6b4b('0xa')](_0x6b4b('0xb'),attributes,{'tableName':_0x6b4b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fdc=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','lodash','util','../../config/logger','api'];(function(_0x5a5221,_0x581f4a){var _0x3560cb=function(_0x1041db){while(--_0x1041db){_0x5a5221['push'](_0x5a5221['shift']());}};_0x3560cb(++_0x581f4a);}(_0x5fdc,0x127));var _0xc5fd=function(_0x4d57c9,_0x9ed9d9){_0x4d57c9=_0x4d57c9-0x0;var _0x3d13c5=_0x5fdc[_0x4d57c9];return _0x3d13c5;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var logger=require(_0xc5fd('0x2'))(_0xc5fd('0x3'));var moment=require(_0xc5fd('0x4'));var BPromise=require(_0xc5fd('0x5'));var rp=require(_0xc5fd('0x6'));var fs=require('fs');var path=require(_0xc5fd('0x7'));var rimraf=require(_0xc5fd('0x8'));var config=require(_0xc5fd('0x9'));var attributes=require(_0xc5fd('0xa'));module[_0xc5fd('0xb')]=function(_0x44722b,_0x216902){return _0x44722b[_0xc5fd('0xc')]('UserSmsQueue',attributes,{'tableName':'user_has_sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 478be50..41a742f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e03=['../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UserSmsQueue,\x20%s,\x20%s','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4e03,0x1f4));var _0x34e0=function(_0x4bba0c,_0x47d9f7){_0x4bba0c=_0x4bba0c-0x0;var _0x3e047d=_0x4e03[_0x4bba0c];return _0x3e047d;};'use strict';var _=require(_0x34e0('0x0'));var util=require(_0x34e0('0x1'));var moment=require(_0x34e0('0x2'));var BPromise=require(_0x34e0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34e0('0x4'));var db=require(_0x34e0('0x5'))['db'];var utils=require(_0x34e0('0x6'));var logger=require(_0x34e0('0x7'))(_0x34e0('0x8'));var config=require('../../config/environment');var jayson=require(_0x34e0('0x9'));var client=jayson['client'][_0x34e0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42a461,_0x1ca3c3,_0x4e24df){return new BPromise(function(_0x17ee4a,_0x42027d){return client['request'](_0x42a461,_0x4e24df)[_0x34e0('0xb')](function(_0x578500){logger[_0x34e0('0xc')]('UserSmsQueue,\x20%s,\x20%s',_0x1ca3c3,_0x34e0('0xd'));logger[_0x34e0('0xe')](_0x34e0('0xf'),_0x1ca3c3,'request\x20sent',JSON[_0x34e0('0x10')](_0x578500));if(_0x578500['error']){if(_0x578500[_0x34e0('0x11')][_0x34e0('0x12')]===0x1f4){logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x1ca3c3,_0x578500[_0x34e0('0x11')][_0x34e0('0x13')]);return _0x42027d(_0x578500['error'][_0x34e0('0x13')]);}logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x1ca3c3,_0x578500[_0x34e0('0x11')][_0x34e0('0x13')]);return _0x17ee4a(_0x578500[_0x34e0('0x11')]['message']);}else{logger[_0x34e0('0xc')]('UserSmsQueue,\x20%s,\x20%s',_0x1ca3c3,_0x34e0('0xd'));_0x17ee4a(_0x578500[_0x34e0('0x14')][_0x34e0('0x13')]);}})[_0x34e0('0x15')](function(_0x403eb0){logger[_0x34e0('0x11')](_0x34e0('0x16'),_0x1ca3c3,_0x403eb0);_0x42027d(_0x403eb0);});});}
\ No newline at end of file
+var _0xecee=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xecee,0x6e));var _0xeece=function(_0x1fad6c,_0xa51b69){_0x1fad6c=_0x1fad6c-0x0;var _0x5d3a6b=_0xecee[_0x1fad6c];return _0x5d3a6b;};'use strict';var _=require(_0xeece('0x0'));var util=require(_0xeece('0x1'));var moment=require(_0xeece('0x2'));var BPromise=require(_0xeece('0x3'));var rs=require(_0xeece('0x4'));var fs=require('fs');var Redis=require(_0xeece('0x5'));var db=require(_0xeece('0x6'))['db'];var utils=require(_0xeece('0x7'));var logger=require(_0xeece('0x8'))(_0xeece('0x9'));var config=require(_0xeece('0xa'));var jayson=require(_0xeece('0xb'));var client=jayson[_0xeece('0xc')][_0xeece('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x8feeca,_0xe62840,_0x330571){return new BPromise(function(_0x63351,_0x391057){return client[_0xeece('0xe')](_0x8feeca,_0x330571)[_0xeece('0xf')](function(_0x1d785d){logger['info'](_0xeece('0x10'),_0xe62840,_0xeece('0x11'));logger[_0xeece('0x12')](_0xeece('0x13'),_0xe62840,_0xeece('0x11'),JSON[_0xeece('0x14')](_0x1d785d));if(_0x1d785d[_0xeece('0x15')]){if(_0x1d785d[_0xeece('0x15')][_0xeece('0x16')]===0x1f4){logger['error'](_0xeece('0x10'),_0xe62840,_0x1d785d[_0xeece('0x15')][_0xeece('0x17')]);return _0x391057(_0x1d785d[_0xeece('0x15')][_0xeece('0x17')]);}logger['error'](_0xeece('0x10'),_0xe62840,_0x1d785d[_0xeece('0x15')][_0xeece('0x17')]);return _0x63351(_0x1d785d['error'][_0xeece('0x17')]);}else{logger[_0xeece('0x18')](_0xeece('0x10'),_0xe62840,_0xeece('0x11'));_0x63351(_0x1d785d[_0xeece('0x19')]['message']);}})[_0xeece('0x1a')](function(_0x4a1ec0){logger[_0xeece('0x15')](_0xeece('0x10'),_0xe62840,_0x4a1ec0);_0x391057(_0x4a1ec0);});});}
\ No newline at end of file
index 64ee283..c5a5bae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x1dd7a7,_0x5f12a1){var _0x3f5842=function(_0x50371d){while(--_0x50371d){_0x1dd7a7['push'](_0x1dd7a7['shift']());}};_0x3f5842(++_0x5f12a1);}(_0x70e0,0x17b));var _0x070e=function(_0x32a799,_0x6ceba3){_0x32a799=_0x32a799-0x0;var _0x5b0062=_0x70e0[_0x32a799];return _0x5b0062;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x31624d,_0x5d502b){var _0x5cb843=function(_0x5bb9d4){while(--_0x5bb9d4){_0x31624d['push'](_0x31624d['shift']());}};_0x5cb843(++_0x5d502b);}(_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
index ef54359..b2bc30e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a5=['INTEGER','sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x99a5,0x7b));var _0x599a=function(_0x178964,_0x1223c7){_0x178964=_0x178964-0x0;var _0x1294a5=_0x99a5[_0x178964];return _0x1294a5;};'use strict';var Sequelize=require(_0x599a('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x599a('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x795e=['sequelize','exports','INTEGER'];(function(_0x5e8917,_0x3a1df5){var _0x20374a=function(_0x5931a6){while(--_0x5931a6){_0x5e8917['push'](_0x5e8917['shift']());}};_0x20374a(++_0x3a1df5);}(_0x795e,0x9c));var _0xe795=function(_0x1dc2ea,_0x1feb45){_0x1dc2ea=_0x1dc2ea-0x0;var _0x2130e9=_0x795e[_0x1dc2ea];return _0x2130e9;};'use strict';var Sequelize=require(_0xe795('0x0'));module[_0xe795('0x1')]={'penalty':{'type':Sequelize[_0xe795('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index cbaf813..443bbe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce6=['util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','UserVoiceQueue','user_has_voice_queues','lodash'];(function(_0x17823f,_0xffd807){var _0x51fc21=function(_0x5e4921){while(--_0x5e4921){_0x17823f['push'](_0x17823f['shift']());}};_0x51fc21(++_0xffd807);}(_0x4ce6,0x14f));var _0x64ce=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0x4ce6[_0x200aa5];return _0x458200;};'use strict';var _=require(_0x64ce('0x0'));var util=require(_0x64ce('0x1'));var logger=require(_0x64ce('0x2'))(_0x64ce('0x3'));var moment=require(_0x64ce('0x4'));var BPromise=require(_0x64ce('0x5'));var rp=require(_0x64ce('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x64ce('0x7'));var attributes=require('./userVoiceQueue.attributes');module[_0x64ce('0x8')]=function(_0x3510a9,_0x3bb02a){return _0x3510a9[_0x64ce('0x9')](_0x64ce('0xa'),attributes,{'tableName':_0x64ce('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0af4=['UserVoiceQueue','user_has_voice_queues','lodash','../../config/logger','api','moment','bluebird','path','rimraf','./userVoiceQueue.attributes','exports'];(function(_0xd58ee8,_0x2ecdc0){var _0x13c09f=function(_0x160507){while(--_0x160507){_0xd58ee8['push'](_0xd58ee8['shift']());}};_0x13c09f(++_0x2ecdc0);}(_0x0af4,0x1a4));var _0x40af=function(_0xd6c8b9,_0x16db15){_0xd6c8b9=_0xd6c8b9-0x0;var _0x4da67f=_0x0af4[_0xd6c8b9];return _0x4da67f;};'use strict';var _=require(_0x40af('0x0'));var util=require('util');var logger=require(_0x40af('0x1'))(_0x40af('0x2'));var moment=require(_0x40af('0x3'));var BPromise=require(_0x40af('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x40af('0x5'));var rimraf=require(_0x40af('0x6'));var config=require('../../config/environment');var attributes=require(_0x40af('0x7'));module[_0x40af('0x8')]=function(_0x5d98a1,_0x23686a){return _0x5d98a1['define'](_0x40af('0x9'),attributes,{'tableName':_0x40af('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60a168b..b063eec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bf4=['util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6bf4,0x1b8));var _0x46bf=function(_0xb7969b,_0x5705c3){_0xb7969b=_0xb7969b-0x0;var _0x148990=_0x6bf4[_0xb7969b];return _0x148990;};'use strict';var _=require(_0x46bf('0x0'));var util=require(_0x46bf('0x1'));var moment=require(_0x46bf('0x2'));var BPromise=require('bluebird');var rs=require(_0x46bf('0x3'));var fs=require('fs');var Redis=require(_0x46bf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x46bf('0x5'));var logger=require(_0x46bf('0x6'))(_0x46bf('0x7'));var config=require(_0x46bf('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x46bf('0x9')][_0x46bf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5623c5,_0x27bf07,_0x4d1c43){return new BPromise(function(_0x47450b,_0x29d8e0){return client[_0x46bf('0xb')](_0x5623c5,_0x4d1c43)['then'](function(_0x58eedc){logger[_0x46bf('0xc')](_0x46bf('0xd'),_0x27bf07,_0x46bf('0xe'));logger[_0x46bf('0xf')]('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x27bf07,_0x46bf('0xe'),JSON['stringify'](_0x58eedc));if(_0x58eedc[_0x46bf('0x10')]){if(_0x58eedc[_0x46bf('0x10')][_0x46bf('0x11')]===0x1f4){logger[_0x46bf('0x10')](_0x46bf('0xd'),_0x27bf07,_0x58eedc['error'][_0x46bf('0x12')]);return _0x29d8e0(_0x58eedc[_0x46bf('0x10')][_0x46bf('0x12')]);}logger['error'](_0x46bf('0xd'),_0x27bf07,_0x58eedc[_0x46bf('0x10')][_0x46bf('0x12')]);return _0x47450b(_0x58eedc[_0x46bf('0x10')][_0x46bf('0x12')]);}else{logger['info'](_0x46bf('0xd'),_0x27bf07,_0x46bf('0xe'));_0x47450b(_0x58eedc[_0x46bf('0x13')][_0x46bf('0x12')]);}})[_0x46bf('0x14')](function(_0xaaf2fb){logger[_0x46bf('0x10')](_0x46bf('0xd'),_0x27bf07,_0xaaf2fb);_0x29d8e0(_0xaaf2fb);});});}
\ No newline at end of file
+var _0xec8d=['error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','UserVoiceQueue,\x20%s,\x20%s','request\x20sent'];(function(_0x3fb0bd,_0x3ac0e7){var _0x1f34f4=function(_0x47a7d5){while(--_0x47a7d5){_0x3fb0bd['push'](_0x3fb0bd['shift']());}};_0x1f34f4(++_0x3ac0e7);}(_0xec8d,0x12c));var _0xdec8=function(_0x145b3c,_0x31ea4a){_0x145b3c=_0x145b3c-0x0;var _0x1b6e36=_0xec8d[_0x145b3c];return _0x1b6e36;};'use strict';var _=require(_0xdec8('0x0'));var util=require('util');var moment=require(_0xdec8('0x1'));var BPromise=require(_0xdec8('0x2'));var rs=require(_0xdec8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdec8('0x4'))['db'];var utils=require(_0xdec8('0x5'));var logger=require(_0xdec8('0x6'))('rpc');var config=require(_0xdec8('0x7'));var jayson=require(_0xdec8('0x8'));var client=jayson[_0xdec8('0x9')][_0xdec8('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1b9fde,_0x5adbb1,_0x2942ea){return new BPromise(function(_0x2ca4c2,_0x40f44d){return client[_0xdec8('0xb')](_0x1b9fde,_0x2942ea)[_0xdec8('0xc')](function(_0x56e1bc){logger['info'](_0xdec8('0xd'),_0x5adbb1,'request\x20sent');logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x5adbb1,_0xdec8('0xe'),JSON['stringify'](_0x56e1bc));if(_0x56e1bc[_0xdec8('0xf')]){if(_0x56e1bc['error'][_0xdec8('0x10')]===0x1f4){logger['error']('UserVoiceQueue,\x20%s,\x20%s',_0x5adbb1,_0x56e1bc[_0xdec8('0xf')][_0xdec8('0x11')]);return _0x40f44d(_0x56e1bc['error'][_0xdec8('0x11')]);}logger['error'](_0xdec8('0xd'),_0x5adbb1,_0x56e1bc['error']['message']);return _0x2ca4c2(_0x56e1bc[_0xdec8('0xf')]['message']);}else{logger[_0xdec8('0x12')](_0xdec8('0xd'),_0x5adbb1,_0xdec8('0xe'));_0x2ca4c2(_0x56e1bc[_0xdec8('0x13')][_0xdec8('0x11')]);}})[_0xdec8('0x14')](function(_0x2cb426){logger[_0xdec8('0xf')](_0xdec8('0xd'),_0x5adbb1,_0x2cb426);_0x40f44d(_0x2cb426);});});}
\ No newline at end of file
index 1c27694..0f18038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x176d14,_0x3984ea){var _0x89522c=function(_0x3aba48){while(--_0x3aba48){_0x176d14['push'](_0x176d14['shift']());}};_0x89522c(++_0x3984ea);}(_0x9c44,0x178));var _0x49c4=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x9c44[_0x565c49];return _0x20ca34;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x534380,_0x4c3a1d){var _0x18f1c0=function(_0x1cdc97){while(--_0x1cdc97){_0x534380['push'](_0x534380['shift']());}};_0x18f1c0(++_0x4c3a1d);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index b8aef5b..cafddd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc7c=['STRING','queue_interface','sequelize','INTEGER','Required\x20by\x20Asterisk'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdc7c,0xf2));var _0xcdc7=function(_0x5879a3,_0x5dc089){_0x5879a3=_0x5879a3-0x0;var _0x4af102=_0xdc7c[_0x5879a3];return _0x4af102;};'use strict';var Sequelize=require(_0xcdc7('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xcdc7('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xcdc7('0x2')},'membername':{'type':Sequelize[_0xcdc7('0x3')],'allowNull':![],'comment':_0xcdc7('0x2')},'UserId':{'type':Sequelize[_0xcdc7('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xcdc7('0x3')],'allowNull':![],'unique':'queue_interface','comment':_0xcdc7('0x2')},'VoiceQueueId':{'type':Sequelize[_0xcdc7('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xcdc7('0x3')],'allowNull':![],'unique':_0xcdc7('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xcdc7('0x2')},'paused':{'type':Sequelize[_0xcdc7('0x1')](0xb),'defaultValue':0x0,'comment':_0xcdc7('0x2')}};
\ No newline at end of file
+var _0x325c=['exports','INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface','sequelize'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x325c,0x1b5));var _0xc325=function(_0x1361ce,_0x5a20b5){_0x1361ce=_0x1361ce-0x0;var _0x3f26b1=_0x325c[_0x1361ce];return _0x3f26b1;};'use strict';var Sequelize=require(_0xc325('0x0'));module[_0xc325('0x1')]={'uniqueid':{'type':Sequelize[_0xc325('0x2')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xc325('0x3')},'membername':{'type':Sequelize[_0xc325('0x4')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xc325('0x2')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xc325('0x4')],'allowNull':![],'unique':_0xc325('0x5'),'comment':_0xc325('0x3')},'VoiceQueueId':{'type':Sequelize[_0xc325('0x2')],'allowNull':![]},'interface':{'type':Sequelize[_0xc325('0x4')],'allowNull':![],'unique':_0xc325('0x5'),'comment':_0xc325('0x3')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0xc325('0x3')},'paused':{'type':Sequelize[_0xc325('0x2')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index c55b812..3f68fce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79e1=['../../mysqldb','UserVoiceQueueRt','emit','hook','exports','events'];(function(_0x2ff238,_0x1811d2){var _0x204a56=function(_0x5bf2e1){while(--_0x5bf2e1){_0x2ff238['push'](_0x2ff238['shift']());}};_0x204a56(++_0x1811d2);}(_0x79e1,0x125));var _0x179e=function(_0x133277,_0xb1d6b2){_0x133277=_0x133277-0x0;var _0x5b4a22=_0x79e1[_0x133277];return _0x5b4a22;};'use strict';var EventEmitter=require(_0x179e('0x0'));var UserVoiceQueueRt=require(_0x179e('0x1'))['db'][_0x179e('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x14c82c){return function(_0x17bd52,_0x24c829,_0x343331){UserVoiceQueueRtEvents[_0x179e('0x3')](_0x14c82c+':'+_0x17bd52['id'],_0x17bd52);UserVoiceQueueRtEvents[_0x179e('0x3')](_0x14c82c,_0x17bd52);_0x343331(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt[_0x179e('0x4')](e,emitEvent(event));}}module[_0x179e('0x5')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0xaaf6=['emit','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove'];(function(_0x516d17,_0x33afaf){var _0x841c1d=function(_0xdcac6c){while(--_0xdcac6c){_0x516d17['push'](_0x516d17['shift']());}};_0x841c1d(++_0x33afaf);}(_0xaaf6,0x161));var _0x6aaf=function(_0x41a6e6,_0x12eda5){_0x41a6e6=_0x41a6e6-0x0;var _0x48057b=_0xaaf6[_0x41a6e6];return _0x48057b;};'use strict';var EventEmitter=require(_0x6aaf('0x0'));var UserVoiceQueueRt=require(_0x6aaf('0x1'))['db'][_0x6aaf('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x6aaf('0x3')](0x0);var events={'afterCreate':_0x6aaf('0x4'),'afterUpdate':_0x6aaf('0x5'),'afterDestroy':_0x6aaf('0x6')};function emitEvent(_0x2c9a3a){return function(_0x2540a0,_0x551f04,_0x5916e9){UserVoiceQueueRtEvents[_0x6aaf('0x7')](_0x2c9a3a+':'+_0x2540a0['id'],_0x2540a0);UserVoiceQueueRtEvents[_0x6aaf('0x7')](_0x2c9a3a,_0x2540a0);_0x5916e9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module[_0x6aaf('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 2009016..5e825b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937b=['bluebird','request-promise','path','rimraf','../../config/environment','exports','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger'];(function(_0x5c6994,_0x19ad9a){var _0x1d5c84=function(_0x4a385a){while(--_0x4a385a){_0x5c6994['push'](_0x5c6994['shift']());}};_0x1d5c84(++_0x19ad9a);}(_0x937b,0x19f));var _0xb937=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x937b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb937('0x0'));var util=require(_0xb937('0x1'));var logger=require(_0xb937('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb937('0x3'));var rp=require(_0xb937('0x4'));var fs=require('fs');var path=require(_0xb937('0x5'));var rimraf=require(_0xb937('0x6'));var config=require(_0xb937('0x7'));var attributes=require('./userVoiceQueueRt.attributes');module[_0xb937('0x8')]=function(_0x191e53,_0x459936){return _0x191e53['define'](_0xb937('0x9'),attributes,{'tableName':_0xb937('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d4a=['bluebird','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment'];(function(_0x1eaf9a,_0x4a10c3){var _0x1fbedb=function(_0x261b11){while(--_0x261b11){_0x1eaf9a['push'](_0x1eaf9a['shift']());}};_0x1fbedb(++_0x4a10c3);}(_0x3d4a,0xb1));var _0xa3d4=function(_0x12df39,_0x2542b5){_0x12df39=_0x12df39-0x0;var _0x2fbe3a=_0x3d4a[_0x12df39];return _0x2fbe3a;};'use strict';var _=require(_0xa3d4('0x0'));var util=require(_0xa3d4('0x1'));var logger=require(_0xa3d4('0x2'))(_0xa3d4('0x3'));var moment=require(_0xa3d4('0x4'));var BPromise=require(_0xa3d4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa3d4('0x6'));var rimraf=require(_0xa3d4('0x7'));var config=require(_0xa3d4('0x8'));var attributes=require(_0xa3d4('0x9'));module[_0xa3d4('0xa')]=function(_0x37080b,_0x5f035f){return _0x37080b[_0xa3d4('0xb')](_0xa3d4('0xc'),attributes,{'tableName':_0xa3d4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 05ba52a..1c932ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11fd=['socket.io-emitter','redis','./userVoiceQueueRt.socket','register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','jayson/promise','client','http','localhost'];(function(_0x3f24ed,_0x3190e1){var _0x355dcf=function(_0xb03bd9){while(--_0xb03bd9){_0x3f24ed['push'](_0x3f24ed['shift']());}};_0x355dcf(++_0x3190e1);}(_0x11fd,0x1e0));var _0xd11f=function(_0x3b0837,_0x2bc5c1){_0x3b0837=_0x3b0837-0x0;var _0x237cd2=_0x11fd[_0x3b0837];return _0x237cd2;};'use strict';var _=require(_0xd11f('0x0'));var util=require(_0xd11f('0x1'));var moment=require('moment');var BPromise=require(_0xd11f('0x2'));var rs=require(_0xd11f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd11f('0x4'))['db'];var utils=require(_0xd11f('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xd11f('0x6'));var client=jayson[_0xd11f('0x7')][_0xd11f('0x8')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xd11f('0x9'),'port':0x18eb});var socket=require(_0xd11f('0xa'))(new Redis(config[_0xd11f('0xb')]));require(_0xd11f('0xc'))[_0xd11f('0xd')](socket);function respondWithRpcPromise(_0x48baa3,_0x3a6ccc,_0x454fef){return new BPromise(function(_0x4d4e2b,_0x4e9d9b){return client[_0xd11f('0xe')](_0x48baa3,_0x454fef)[_0xd11f('0xf')](function(_0x5f3b04){logger[_0xd11f('0x10')](_0xd11f('0x11'),_0x3a6ccc,_0xd11f('0x12'));logger[_0xd11f('0x13')](_0xd11f('0x14'),_0x3a6ccc,'request\x20sent',JSON[_0xd11f('0x15')](_0x5f3b04));if(_0x5f3b04['error']){if(_0x5f3b04[_0xd11f('0x16')][_0xd11f('0x17')]===0x1f4){logger[_0xd11f('0x16')](_0xd11f('0x11'),_0x3a6ccc,_0x5f3b04['error']['message']);return _0x4e9d9b(_0x5f3b04[_0xd11f('0x16')]['message']);}logger[_0xd11f('0x16')](_0xd11f('0x11'),_0x3a6ccc,_0x5f3b04[_0xd11f('0x16')][_0xd11f('0x18')]);return _0x4d4e2b(_0x5f3b04['error'][_0xd11f('0x18')]);}else{logger[_0xd11f('0x10')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3a6ccc,_0xd11f('0x12'));_0x4d4e2b(_0x5f3b04[_0xd11f('0x19')]['message']);}})[_0xd11f('0x1a')](function(_0x4c1624){logger[_0xd11f('0x16')](_0xd11f('0x11'),_0x3a6ccc,_0x4c1624);_0x4e9d9b(_0x4c1624);});});}exports[_0xd11f('0x1b')]=function(_0x4b41a6){var _0x540119=this;return new Promise(function(_0x4725b3,_0x170e2e){return db[_0xd11f('0x1c')][_0xd11f('0x1d')]({'raw':_0x4b41a6[_0xd11f('0x1e')]?_0x4b41a6['options'][_0xd11f('0x1f')]===undefined?!![]:![]:!![],'where':_0x4b41a6[_0xd11f('0x1e')]?_0x4b41a6['options'][_0xd11f('0x20')]||null:null,'attributes':[[db[_0xd11f('0x21')]['fn'](_0xd11f('0x22'),db[_0xd11f('0x21')]['fn']('IF',db[_0xd11f('0x21')]['literal']('`paused`\x20=\x201,\x201,\x20null'))),'outboundQueuePauses']]})[_0xd11f('0xf')](function(_0x2b3a3f){logger[_0xd11f('0x10')](_0xd11f('0x1b'),_0x4b41a6);logger['debug'](_0xd11f('0x1b'),_0x4b41a6,JSON['stringify'](_0x2b3a3f));_0x4725b3(_0x2b3a3f);})[_0xd11f('0x1a')](function(_0x4f4d33){logger['error'](_0xd11f('0x1b'),_0x4f4d33[_0xd11f('0x18')],_0x4b41a6);_0x170e2e(_0x540119[_0xd11f('0x16')](0x1f4,_0x4f4d33[_0xd11f('0x18')]));});});};
\ No newline at end of file
+var _0xbcd5=['stringify','error','code','message','UserVoiceQueueRt,\x20%s,\x20%s','catch','UserVoiceQueueRt','options','raw','where','COUNT','sequelize','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','GetVoiceQueueRtPauses','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','redis','localhost','./userVoiceQueueRt.socket','register','request','then','info','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s'];(function(_0x448f8,_0x2aa1d7){var _0xa73126=function(_0x1fcafa){while(--_0x1fcafa){_0x448f8['push'](_0x448f8['shift']());}};_0xa73126(++_0x2aa1d7);}(_0xbcd5,0xbf));var _0x5bcd=function(_0x3e32a8,_0x255953){_0x3e32a8=_0x3e32a8-0x0;var _0x2997b0=_0xbcd5[_0x3e32a8];return _0x2997b0;};'use strict';var _=require('lodash');var util=require(_0x5bcd('0x0'));var moment=require('moment');var BPromise=require(_0x5bcd('0x1'));var rs=require(_0x5bcd('0x2'));var fs=require('fs');var Redis=require(_0x5bcd('0x3'));var db=require(_0x5bcd('0x4'))['db'];var utils=require(_0x5bcd('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x5bcd('0x6'));var client=jayson[_0x5bcd('0x7')][_0x5bcd('0x8')]({'port':0x232a});config[_0x5bcd('0x9')]=_['defaults'](config[_0x5bcd('0x9')],{'host':_0x5bcd('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5bcd('0x9')]));require(_0x5bcd('0xb'))[_0x5bcd('0xc')](socket);function respondWithRpcPromise(_0x21f9c1,_0x3407b3,_0x2c8cfa){return new BPromise(function(_0x6d7e72,_0xf7aea3){return client[_0x5bcd('0xd')](_0x21f9c1,_0x2c8cfa)[_0x5bcd('0xe')](function(_0x9704aa){logger[_0x5bcd('0xf')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3407b3,_0x5bcd('0x10'));logger[_0x5bcd('0x11')](_0x5bcd('0x12'),_0x3407b3,_0x5bcd('0x10'),JSON[_0x5bcd('0x13')](_0x9704aa));if(_0x9704aa[_0x5bcd('0x14')]){if(_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x15')]===0x1f4){logger[_0x5bcd('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3407b3,_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);return _0xf7aea3(_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);}logger[_0x5bcd('0x14')](_0x5bcd('0x17'),_0x3407b3,_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);return _0x6d7e72(_0x9704aa[_0x5bcd('0x14')][_0x5bcd('0x16')]);}else{logger['info'](_0x5bcd('0x17'),_0x3407b3,'request\x20sent');_0x6d7e72(_0x9704aa['result'][_0x5bcd('0x16')]);}})[_0x5bcd('0x18')](function(_0x239cfc){logger[_0x5bcd('0x14')](_0x5bcd('0x17'),_0x3407b3,_0x239cfc);_0xf7aea3(_0x239cfc);});});}exports['GetVoiceQueueRtPauses']=function(_0x1eaa25){var _0x45583b=this;return new Promise(function(_0x2fcedf,_0xb7bec2){return db[_0x5bcd('0x19')]['findAll']({'raw':_0x1eaa25[_0x5bcd('0x1a')]?_0x1eaa25[_0x5bcd('0x1a')][_0x5bcd('0x1b')]===undefined?!![]:![]:!![],'where':_0x1eaa25[_0x5bcd('0x1a')]?_0x1eaa25[_0x5bcd('0x1a')][_0x5bcd('0x1c')]||null:null,'attributes':[[db['sequelize']['fn'](_0x5bcd('0x1d'),db[_0x5bcd('0x1e')]['fn']('IF',db[_0x5bcd('0x1e')][_0x5bcd('0x1f')](_0x5bcd('0x20')))),_0x5bcd('0x21')]]})[_0x5bcd('0xe')](function(_0x2af04e){logger[_0x5bcd('0xf')](_0x5bcd('0x22'),_0x1eaa25);logger[_0x5bcd('0x11')](_0x5bcd('0x22'),_0x1eaa25,JSON[_0x5bcd('0x13')](_0x2af04e));_0x2fcedf(_0x2af04e);})[_0x5bcd('0x18')](function(_0x447272){logger['error'](_0x5bcd('0x22'),_0x447272[_0x5bcd('0x16')],_0x1eaa25);_0xb7bec2(_0x45583b[_0x5bcd('0x14')](0x1f4,_0x447272['message']));});});};
\ No newline at end of file
index 4ecf8d5..45d01fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe767=['update','register','length','userVoiceQueueRt:','save','remove'];(function(_0x919e05,_0x22be32){var _0x6edfb1=function(_0x4dfc74){while(--_0x4dfc74){_0x919e05['push'](_0x919e05['shift']());}};_0x6edfb1(++_0x22be32);}(_0xe767,0x11e));var _0x7e76=function(_0x3af602,_0x9aa4e9){_0x3af602=_0x3af602-0x0;var _0x3594ff=_0xe767[_0x3af602];return _0x3594ff;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x7e76('0x0'),_0x7e76('0x1'),_0x7e76('0x2')];function createListener(_0x431b0e,_0xcb0d17){return function(_0x1418d2){_0xcb0d17['emit'](_0x431b0e,_0x1418d2);};}function removeListener(_0x4fa707,_0x473b73){return function(){UserVoiceQueueRtEvents['removeListener'](_0x4fa707,_0x473b73);};}exports[_0x7e76('0x3')]=function(_0x5d179a){for(var _0x333c38=0x0,_0x2a703b=events[_0x7e76('0x4')];_0x333c38<_0x2a703b;_0x333c38++){var _0x3aaa07=events[_0x333c38];var _0x46ddea=createListener(_0x7e76('0x5')+_0x3aaa07,_0x5d179a);UserVoiceQueueRtEvents['on'](_0x3aaa07,_0x46ddea);}};
\ No newline at end of file
+var _0x86f4=['length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','register'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0x86f4,0x18a));var _0x486f=function(_0x3f4732,_0x136984){_0x3f4732=_0x3f4732-0x0;var _0x137ff7=_0x86f4[_0x3f4732];return _0x137ff7;};'use strict';var UserVoiceQueueRtEvents=require(_0x486f('0x0'));var events=[_0x486f('0x1'),_0x486f('0x2'),_0x486f('0x3')];function createListener(_0x3e0b4f,_0x10339c){return function(_0x45067a){_0x10339c['emit'](_0x3e0b4f,_0x45067a);};}function removeListener(_0xf8d50f,_0x1539b1){return function(){UserVoiceQueueRtEvents['removeListener'](_0xf8d50f,_0x1539b1);};}exports[_0x486f('0x4')]=function(_0x1adb27){for(var _0x39f767=0x0,_0x207201=events[_0x486f('0x5')];_0x39f767<_0x207201;_0x39f767++){var _0x3a0791=events[_0x39f767];var _0x5bfabc=createListener(_0x486f('0x6')+_0x3a0791,_0x1adb27);UserVoiceQueueRtEvents['on'](_0x3a0791,_0x5bfabc);}};
\ No newline at end of file
index 5d8a425..2a61c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x52a23f,_0x467b97){var _0x14c953=function(_0x53eba4){while(--_0x53eba4){_0x52a23f['push'](_0x52a23f['shift']());}};_0x14c953(++_0x467b97);}(_0x9c44,0x178));var _0x49c4=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x9c44[_0x17b6e3];return _0x3906f3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x5c1504,_0x5b3e76){var _0x3b6ed7=function(_0x9f2fe8){while(--_0x9f2fe8){_0x5c1504['push'](_0x5c1504['shift']());}};_0x3b6ed7(++_0x5b3e76);}(_0xe706,0xa3));var _0x6e70=function(_0x5c8811,_0x4f77d5){_0x5c8811=_0x5c8811-0x0;var _0x2c0941=_0xe706[_0x5c8811];return _0x2c0941;};'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 637b260..2f27452 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['sequelize','INTEGER'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0x1cb9,0x14e));var _0x91cb=function(_0x1811a3,_0x836843){_0x1811a3=_0x1811a3-0x0;var _0x41a39d=_0x1cb9[_0x1811a3];return _0x41a39d;};'use strict';var Sequelize=require(_0x91cb('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x91cb('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8c02=['exports','INTEGER','sequelize'];(function(_0x33fe59,_0x448a3e){var _0x5d5fe4=function(_0x189c02){while(--_0x189c02){_0x33fe59['push'](_0x33fe59['shift']());}};_0x5d5fe4(++_0x448a3e);}(_0x8c02,0x10d));var _0x28c0=function(_0x118cf8,_0xcb1b62){_0x118cf8=_0x118cf8-0x0;var _0x33c591=_0x8c02[_0x118cf8];return _0x33c591;};'use strict';var Sequelize=require(_0x28c0('0x0'));module[_0x28c0('0x1')]={'penalty':{'type':Sequelize[_0x28c0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 4d3936d..e086320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd514=['../../config/logger','api','bluebird','request-promise','path','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash'];(function(_0x5002d0,_0x4e641b){var _0x3a5152=function(_0x16ce5f){while(--_0x16ce5f){_0x5002d0['push'](_0x5002d0['shift']());}};_0x3a5152(++_0x4e641b);}(_0xd514,0x155));var _0x4d51=function(_0x974d20,_0x4e3eb9){_0x974d20=_0x974d20-0x0;var _0x577c8d=_0xd514[_0x974d20];return _0x577c8d;};'use strict';var _=require(_0x4d51('0x0'));var util=require('util');var logger=require(_0x4d51('0x1'))(_0x4d51('0x2'));var moment=require('moment');var BPromise=require(_0x4d51('0x3'));var rp=require(_0x4d51('0x4'));var fs=require('fs');var path=require(_0x4d51('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./userWhatsappQueue.attributes');module['exports']=function(_0x517cd6,_0x3ef704){return _0x517cd6[_0x4d51('0x6')](_0x4d51('0x7'),attributes,{'tableName':_0x4d51('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4d35=['bluebird','request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','util','../../config/logger','api','moment'];(function(_0x13d718,_0x5ccfa4){var _0x39f08a=function(_0x35a53a){while(--_0x35a53a){_0x13d718['push'](_0x13d718['shift']());}};_0x39f08a(++_0x5ccfa4);}(_0x4d35,0x130));var _0x54d3=function(_0x53f810,_0x55c41d){_0x53f810=_0x53f810-0x0;var _0x5d9db9=_0x4d35[_0x53f810];return _0x5d9db9;};'use strict';var _=require('lodash');var util=require(_0x54d3('0x0'));var logger=require(_0x54d3('0x1'))(_0x54d3('0x2'));var moment=require(_0x54d3('0x3'));var BPromise=require(_0x54d3('0x4'));var rp=require(_0x54d3('0x5'));var fs=require('fs');var path=require(_0x54d3('0x6'));var rimraf=require(_0x54d3('0x7'));var config=require(_0x54d3('0x8'));var attributes=require(_0x54d3('0x9'));module[_0x54d3('0xa')]=function(_0x516c2e,_0x93893b){return _0x516c2e[_0x54d3('0xb')](_0x54d3('0xc'),attributes,{'tableName':_0x54d3('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b7ec3a..f501ffc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe82d=['request','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client'];(function(_0x5137c9,_0x3d193f){var _0x548778=function(_0x286cab){while(--_0x286cab){_0x5137c9['push'](_0x5137c9['shift']());}};_0x548778(++_0x3d193f);}(_0xe82d,0x83));var _0xde82=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xe82d[_0xbb091];return _0x467a04;};'use strict';var _=require(_0xde82('0x0'));var util=require('util');var moment=require(_0xde82('0x1'));var BPromise=require(_0xde82('0x2'));var rs=require(_0xde82('0x3'));var fs=require('fs');var Redis=require(_0xde82('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xde82('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0xde82('0x6'));var jayson=require(_0xde82('0x7'));var client=jayson[_0xde82('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5c183f,_0x2fa611,_0x255b1c){return new BPromise(function(_0x3232be,_0x31f268){return client[_0xde82('0x9')](_0x5c183f,_0x255b1c)[_0xde82('0xa')](function(_0x48d935){logger[_0xde82('0xb')](_0xde82('0xc'),_0x2fa611,'request\x20sent');logger[_0xde82('0xd')](_0xde82('0xe'),_0x2fa611,_0xde82('0xf'),JSON[_0xde82('0x10')](_0x48d935));if(_0x48d935[_0xde82('0x11')]){if(_0x48d935[_0xde82('0x11')]['code']===0x1f4){logger[_0xde82('0x11')](_0xde82('0xc'),_0x2fa611,_0x48d935[_0xde82('0x11')]['message']);return _0x31f268(_0x48d935[_0xde82('0x11')][_0xde82('0x12')]);}logger[_0xde82('0x11')](_0xde82('0xc'),_0x2fa611,_0x48d935['error'][_0xde82('0x12')]);return _0x3232be(_0x48d935[_0xde82('0x11')][_0xde82('0x12')]);}else{logger[_0xde82('0xb')](_0xde82('0xc'),_0x2fa611,_0xde82('0xf'));_0x3232be(_0x48d935[_0xde82('0x13')][_0xde82('0x12')]);}})['catch'](function(_0x50a830){logger[_0xde82('0x11')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2fa611,_0x50a830);_0x31f268(_0x50a830);});});}
\ No newline at end of file
+var _0x47e7=['../../config/environment','jayson/promise','client','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x1625f0,_0x1eae0c){var _0x3b2490=function(_0x36e46a){while(--_0x36e46a){_0x1625f0['push'](_0x1625f0['shift']());}};_0x3b2490(++_0x1eae0c);}(_0x47e7,0x1c6));var _0x747e=function(_0x11803c,_0x1dac4f){_0x11803c=_0x11803c-0x0;var _0x5bffda=_0x47e7[_0x11803c];return _0x5bffda;};'use strict';var _=require(_0x747e('0x0'));var util=require(_0x747e('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x747e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x747e('0x3'))['db'];var utils=require(_0x747e('0x4'));var logger=require('../../config/logger')(_0x747e('0x5'));var config=require(_0x747e('0x6'));var jayson=require(_0x747e('0x7'));var client=jayson[_0x747e('0x8')][_0x747e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3eee5d,_0x1a580d,_0x1f4d0a){return new BPromise(function(_0x1120aa,_0x17e1ae){return client[_0x747e('0xa')](_0x3eee5d,_0x1f4d0a)[_0x747e('0xb')](function(_0x19174b){logger[_0x747e('0xc')](_0x747e('0xd'),_0x1a580d,'request\x20sent');logger[_0x747e('0xe')](_0x747e('0xf'),_0x1a580d,_0x747e('0x10'),JSON[_0x747e('0x11')](_0x19174b));if(_0x19174b[_0x747e('0x12')]){if(_0x19174b['error'][_0x747e('0x13')]===0x1f4){logger[_0x747e('0x12')](_0x747e('0xd'),_0x1a580d,_0x19174b[_0x747e('0x12')][_0x747e('0x14')]);return _0x17e1ae(_0x19174b[_0x747e('0x12')]['message']);}logger[_0x747e('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1a580d,_0x19174b[_0x747e('0x12')]['message']);return _0x1120aa(_0x19174b['error'][_0x747e('0x14')]);}else{logger['info'](_0x747e('0xd'),_0x1a580d,'request\x20sent');_0x1120aa(_0x19174b[_0x747e('0x15')][_0x747e('0x14')]);}})[_0x747e('0x16')](function(_0x14bfb7){logger[_0x747e('0x12')](_0x747e('0xd'),_0x1a580d,_0x14bfb7);_0x17e1ae(_0x14bfb7);});});}
\ No newline at end of file
index 009c111..17a5e45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee8=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','isAuthenticated','index','post','create','put','update','/:id','exports','multer','util','path'];(function(_0x3d1c35,_0xf08701){var _0x536736=function(_0x505698){while(--_0x505698){_0x3d1c35['push'](_0x3d1c35['shift']());}};_0x536736(++_0xf08701);}(_0xcee8,0xb1));var _0x8cee=function(_0x470ed8,_0x4c1180){_0x470ed8=_0x470ed8-0x0;var _0x56fc75=_0xcee8[_0x470ed8];return _0x56fc75;};'use strict';var multer=require(_0x8cee('0x0'));var util=require(_0x8cee('0x1'));var path=require(_0x8cee('0x2'));var timeout=require(_0x8cee('0x3'));var express=require(_0x8cee('0x4'));var router=express[_0x8cee('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8cee('0x6'));var interaction=require(_0x8cee('0x7'));var config=require(_0x8cee('0x8'));var controller=require(_0x8cee('0x9'));router['get']('/',auth[_0x8cee('0xa')](),controller[_0x8cee('0xb')]);router['get']('/:id',auth[_0x8cee('0xa')](),controller['show']);router[_0x8cee('0xc')]('/',auth[_0x8cee('0xa')](),controller[_0x8cee('0xd')]);router[_0x8cee('0xe')]('/:id',auth[_0x8cee('0xa')](),controller[_0x8cee('0xf')]);router['delete'](_0x8cee('0x10'),auth[_0x8cee('0xa')](),controller['destroy']);module[_0x8cee('0x11')]=router;
\ No newline at end of file
+var _0x1d25=['post','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./variable.controller','get','isAuthenticated','index'];(function(_0x51e17c,_0x63b8ab){var _0x558828=function(_0x93f9a1){while(--_0x93f9a1){_0x51e17c['push'](_0x51e17c['shift']());}};_0x558828(++_0x63b8ab);}(_0x1d25,0xba));var _0x51d2=function(_0x4382bc,_0x231a2d){_0x4382bc=_0x4382bc-0x0;var _0x13c82a=_0x1d25[_0x4382bc];return _0x13c82a;};'use strict';var multer=require(_0x51d2('0x0'));var util=require(_0x51d2('0x1'));var path=require(_0x51d2('0x2'));var timeout=require(_0x51d2('0x3'));var express=require(_0x51d2('0x4'));var router=express['Router']();var fs_extra=require(_0x51d2('0x5'));var auth=require(_0x51d2('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x51d2('0x7'));var controller=require(_0x51d2('0x8'));router[_0x51d2('0x9')]('/',auth[_0x51d2('0xa')](),controller[_0x51d2('0xb')]);router[_0x51d2('0x9')]('/:id',auth[_0x51d2('0xa')](),controller['show']);router[_0x51d2('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x51d2('0xd')](_0x51d2('0xe'),auth[_0x51d2('0xa')](),controller[_0x51d2('0xf')]);router['delete'](_0x51d2('0xe'),auth[_0x51d2('0xa')](),controller[_0x51d2('0x10')]);module[_0x51d2('0x11')]=router;
\ No newline at end of file
index 759eb94..46de43b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['STRING','name','sequelize','exports'];(function(_0x2684ea,_0x3509b8){var _0x333f76=function(_0x548fec){while(--_0x548fec){_0x2684ea['push'](_0x2684ea['shift']());}};_0x333f76(++_0x3509b8);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x5e662a,_0x5bde44){_0x5e662a=_0x5e662a-0x0;var _0x1383a5=_0xd6d6[_0x5e662a];return _0x1383a5;};'use strict';var Sequelize=require(_0x6d6d('0x0'));module[_0x6d6d('0x1')]={'name':{'type':Sequelize[_0x6d6d('0x2')],'unique':_0x6d6d('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x5a05=['name','exports','STRING'];(function(_0x54b8f3,_0x19b8c5){var _0x3fc5da=function(_0x9d48f6){while(--_0x9d48f6){_0x54b8f3['push'](_0x54b8f3['shift']());}};_0x3fc5da(++_0x19b8c5);}(_0x5a05,0x17b));var _0x55a0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5a05[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require('sequelize');module[_0x55a0('0x0')]={'name':{'type':Sequelize[_0x55a0('0x1')],'unique':_0x55a0('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d7d2154..893f515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4bc=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','undefined','limit','count','set','apply','reject','save','update','destroy','get','Variables','then','sendStatus','error','name','index','map','Variable','rawAttributes','type','model','query','keys','intersection','attributes','length','offset','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','catch','show','params','fields','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring'];(function(_0x2fee45,_0x1a4784){var _0x2e56cf=function(_0x3e0485){while(--_0x3e0485){_0x2fee45['push'](_0x2fee45['shift']());}};_0x2e56cf(++_0x1a4784);}(_0xe4bc,0x8d));var _0xce4b=function(_0x8ed621,_0x42efda){_0x8ed621=_0x8ed621-0x0;var _0x80cfb9=_0xe4bc[_0x8ed621];return _0x80cfb9;};'use strict';var emlformat=require(_0xce4b('0x0'));var rimraf=require(_0xce4b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xce4b('0x2'));var rp=require(_0xce4b('0x3'));var moment=require('moment');var BPromise=require(_0xce4b('0x4'));var Mustache=require(_0xce4b('0x5'));var util=require('util');var path=require(_0xce4b('0x6'));var sox=require(_0xce4b('0x7'));var csv=require(_0xce4b('0x8'));var ejs=require(_0xce4b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xce4b('0xa'));var squel=require(_0xce4b('0xb'));var crypto=require('crypto');var jsforce=require(_0xce4b('0xc'));var deskjs=require(_0xce4b('0xd'));var toCsv=require(_0xce4b('0x8'));var querystring=require(_0xce4b('0xe'));var Papa=require(_0xce4b('0xf'));var Redis=require(_0xce4b('0x10'));var authService=require(_0xce4b('0x11'));var qs=require(_0xce4b('0x12'));var as=require(_0xce4b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xce4b('0x14'));var utils=require(_0xce4b('0x15'));var config=require(_0xce4b('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xce4b('0x17'))['db'];function respondWithStatusCode(_0x18f883,_0x2efbbe){_0x2efbbe=_0x2efbbe||0xcc;return function(_0x23203e){if(_0x23203e){return _0x18f883['sendStatus'](_0x2efbbe);}return _0x18f883[_0xce4b('0x18')](_0x2efbbe)[_0xce4b('0x19')]();};}function respondWithResult(_0x4ef526,_0x1e434f){_0x1e434f=_0x1e434f||0xc8;return function(_0x3d6070){if(_0x3d6070){return _0x4ef526[_0xce4b('0x18')](_0x1e434f)[_0xce4b('0x1a')](_0x3d6070);}};}function respondWithFilteredResult(_0x3b6b88,_0x32de77){return function(_0x188731){if(_0x188731){var _0x4bb808=typeof _0x32de77['offset']===_0xce4b('0x1b')&&typeof _0x32de77[_0xce4b('0x1c')]==='undefined';var _0x434c74=_0x188731[_0xce4b('0x1d')];var _0x575c12=_0x4bb808?0x0:_0x32de77['offset'];var _0x40dac1=_0x4bb808?_0x188731[_0xce4b('0x1d')]:_0x32de77['offset']+_0x32de77[_0xce4b('0x1c')];var _0x28bb73;if(_0x40dac1>=_0x434c74){_0x40dac1=_0x434c74;_0x28bb73=0xc8;}else{_0x28bb73=0xce;}_0x3b6b88[_0xce4b('0x18')](_0x28bb73);return _0x3b6b88[_0xce4b('0x1e')]('Content-Range',_0x575c12+'-'+_0x40dac1+'/'+_0x434c74)['json'](_0x188731);}return null;};}function patchUpdates(_0x42691d){return function(_0x21c5f8){try{jsonpatch[_0xce4b('0x1f')](_0x21c5f8,_0x42691d,!![]);}catch(_0x1eaa53){return BPromise[_0xce4b('0x20')](_0x1eaa53);}return _0x21c5f8[_0xce4b('0x21')]();};}function saveUpdates(_0x4b737a,_0x553d9a){return function(_0x1d2cd6){if(_0x1d2cd6){return _0x1d2cd6[_0xce4b('0x22')](_0x4b737a)['then'](function(_0x19b592){return _0x19b592;});}return null;};}function removeEntity(_0x27df73,_0xbb1e86){return function(_0x70703b){if(_0x70703b){return _0x70703b[_0xce4b('0x23')]()['then'](function(){var _0x45b5e1=_0x70703b[_0xce4b('0x24')]({'plain':!![]});var _0x3e60ca=_0xce4b('0x25');return db['UserProfileResource'][_0xce4b('0x23')]({'where':{'type':_0x3e60ca,'resourceId':_0x45b5e1['id']}})['then'](function(){return _0x70703b;});})[_0xce4b('0x26')](function(){_0x27df73['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x217fd9,_0x5ef097){return function(_0x1a74e1){if(!_0x1a74e1){_0x217fd9[_0xce4b('0x27')](0x194);}return _0x1a74e1;};}function handleError(_0x5f5ddf,_0x312766){_0x312766=_0x312766||0x1f4;return function(_0x1fbadf){logger[_0xce4b('0x28')](_0x1fbadf['stack']);if(_0x1fbadf[_0xce4b('0x29')]){delete _0x1fbadf['name'];}_0x5f5ddf[_0xce4b('0x18')](_0x312766)['send'](_0x1fbadf);};}exports[_0xce4b('0x2a')]=function(_0x1342ed,_0x459fce){var _0xf9c4a={},_0x251d4b={},_0x5149a6={'count':0x0,'rows':[]};var _0x4b5c48=_[_0xce4b('0x2b')](db[_0xce4b('0x2c')][_0xce4b('0x2d')],function(_0x52f0fb){return{'name':_0x52f0fb['fieldName'],'type':_0x52f0fb[_0xce4b('0x2e')]['key']};});_0x251d4b[_0xce4b('0x2f')]=_[_0xce4b('0x2b')](_0x4b5c48,_0xce4b('0x29'));_0x251d4b[_0xce4b('0x30')]=_[_0xce4b('0x31')](_0x1342ed['query']);_0x251d4b['filters']=_[_0xce4b('0x32')](_0x251d4b[_0xce4b('0x2f')],_0x251d4b[_0xce4b('0x30')]);_0xf9c4a[_0xce4b('0x33')]=_['intersection'](_0x251d4b['model'],qs['fields'](_0x1342ed[_0xce4b('0x30')]['fields']));_0xf9c4a[_0xce4b('0x33')]=_0xf9c4a[_0xce4b('0x33')][_0xce4b('0x34')]?_0xf9c4a[_0xce4b('0x33')]:_0x251d4b['model'];if(!_0x1342ed[_0xce4b('0x30')]['hasOwnProperty']('nolimit')){_0xf9c4a[_0xce4b('0x1c')]=qs[_0xce4b('0x1c')](_0x1342ed[_0xce4b('0x30')][_0xce4b('0x1c')]);_0xf9c4a[_0xce4b('0x35')]=qs[_0xce4b('0x35')](_0x1342ed[_0xce4b('0x30')]['offset']);}_0xf9c4a[_0xce4b('0x36')]=qs[_0xce4b('0x37')](_0x1342ed[_0xce4b('0x30')][_0xce4b('0x37')]);_0xf9c4a[_0xce4b('0x38')]=qs[_0xce4b('0x39')](_[_0xce4b('0x3a')](_0x1342ed[_0xce4b('0x30')],_0x251d4b[_0xce4b('0x39')]),_0x4b5c48);if(_0x1342ed[_0xce4b('0x30')][_0xce4b('0x3b')]){_0xf9c4a[_0xce4b('0x38')]=_[_0xce4b('0x3c')](_0xf9c4a[_0xce4b('0x38')],{'$or':_['map'](_0x4b5c48,function(_0x3be400){if(_0x3be400[_0xce4b('0x2e')]!==_0xce4b('0x3d')){var _0x49311a={};_0x49311a[_0x3be400[_0xce4b('0x29')]]={'$like':'%'+_0x1342ed['query'][_0xce4b('0x3b')]+'%'};return _0x49311a;}})});}_0xf9c4a=_[_0xce4b('0x3c')]({},_0xf9c4a,_0x1342ed[_0xce4b('0x3e')]);var _0x5efeeb={'where':_0xf9c4a['where']};return db[_0xce4b('0x2c')][_0xce4b('0x1d')](_0x5efeeb)['then'](function(_0x38533c){_0x5149a6[_0xce4b('0x1d')]=_0x38533c;if(_0x1342ed[_0xce4b('0x30')][_0xce4b('0x3f')]){_0xf9c4a['include']=[{'all':!![]}];}return db[_0xce4b('0x2c')]['findAll'](_0xf9c4a);})['then'](function(_0x1877e7){_0x5149a6['rows']=_0x1877e7;return _0x5149a6;})[_0xce4b('0x26')](respondWithFilteredResult(_0x459fce,_0xf9c4a))[_0xce4b('0x40')](handleError(_0x459fce,null));};exports[_0xce4b('0x41')]=function(_0x3f48c3,_0x42928e){var _0x3c0c01={'raw':!![],'where':{'id':_0x3f48c3[_0xce4b('0x42')]['id']}},_0x2723f={};_0x2723f[_0xce4b('0x2f')]=_[_0xce4b('0x31')](db[_0xce4b('0x2c')]['rawAttributes']);_0x2723f[_0xce4b('0x30')]=_[_0xce4b('0x31')](_0x3f48c3[_0xce4b('0x30')]);_0x2723f[_0xce4b('0x39')]=_[_0xce4b('0x32')](_0x2723f['model'],_0x2723f[_0xce4b('0x30')]);_0x3c0c01[_0xce4b('0x33')]=_[_0xce4b('0x32')](_0x2723f[_0xce4b('0x2f')],qs[_0xce4b('0x43')](_0x3f48c3['query']['fields']));_0x3c0c01[_0xce4b('0x33')]=_0x3c0c01[_0xce4b('0x33')][_0xce4b('0x34')]?_0x3c0c01[_0xce4b('0x33')]:_0x2723f[_0xce4b('0x2f')];if(_0x3f48c3[_0xce4b('0x30')][_0xce4b('0x3f')]){_0x3c0c01['include']=[{'all':!![]}];}_0x3c0c01=_['merge']({},_0x3c0c01,_0x3f48c3[_0xce4b('0x3e')]);return db[_0xce4b('0x2c')]['find'](_0x3c0c01)[_0xce4b('0x26')](handleEntityNotFound(_0x42928e,null))['then'](respondWithResult(_0x42928e,null))[_0xce4b('0x40')](handleError(_0x42928e,null));};exports['create']=function(_0x250a18,_0x3b4f5a){return db[_0xce4b('0x2c')][_0xce4b('0x44')](_0x250a18[_0xce4b('0x45')],{})[_0xce4b('0x26')](function(_0xbc4a2){var _0x58cd9e=_0x250a18[_0xce4b('0x46')][_0xce4b('0x24')]({'plain':!![]});if(!_0x58cd9e)throw new Error(_0xce4b('0x47'));if(_0x58cd9e[_0xce4b('0x48')]==='user'){var _0x18e648=_0xbc4a2[_0xce4b('0x24')]({'plain':!![]});var _0xdd900f=_0xce4b('0x25');return db[_0xce4b('0x49')][_0xce4b('0x4a')]({'where':{'name':_0xdd900f,'userProfileId':_0x58cd9e[_0xce4b('0x4b')]},'raw':!![]})[_0xce4b('0x26')](function(_0x57eb58){if(_0x57eb58&&_0x57eb58['autoAssociation']===0x0){return db[_0xce4b('0x4c')]['create']({'name':_0x18e648[_0xce4b('0x29')],'resourceId':_0x18e648['id'],'type':_0x57eb58['name'],'sectionId':_0x57eb58['id']},{})[_0xce4b('0x26')](function(){return _0xbc4a2;});}else{return _0xbc4a2;}})[_0xce4b('0x40')](function(_0x9ea16e){logger[_0xce4b('0x28')](_0xce4b('0x4d'),_0x9ea16e);throw _0x9ea16e;});}return _0xbc4a2;})[_0xce4b('0x26')](respondWithResult(_0x3b4f5a,0xc9))['catch'](handleError(_0x3b4f5a,null));};exports[_0xce4b('0x22')]=function(_0x549710,_0x10e0f1){if(_0x549710[_0xce4b('0x45')]['id']){delete _0x549710[_0xce4b('0x45')]['id'];}return db[_0xce4b('0x2c')]['find']({'where':{'id':_0x549710[_0xce4b('0x42')]['id']}})['then'](handleEntityNotFound(_0x10e0f1,null))[_0xce4b('0x26')](saveUpdates(_0x549710['body'],null))[_0xce4b('0x26')](respondWithResult(_0x10e0f1,null))[_0xce4b('0x40')](handleError(_0x10e0f1,null));};exports[_0xce4b('0x23')]=function(_0xaec71f,_0x26ea74){return db['Variable'][_0xce4b('0x4a')]({'where':{'id':_0xaec71f[_0xce4b('0x42')]['id']}})['then'](handleEntityNotFound(_0x26ea74,null))[_0xce4b('0x26')](removeEntity(_0x26ea74,null))[_0xce4b('0x40')](handleError(_0x26ea74,null));};
\ No newline at end of file
+var _0x707e=['squel','crypto','jsforce','to-csv','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','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','name','send','index','fieldName','type','key','map','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','Variable','includeAll','findAll','rows','params','rawAttributes','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x707e,0x9d));var _0xe707=function(_0xef8146,_0x459c34){_0xef8146=_0xef8146-0x0;var _0x5a6cb0=_0x707e[_0xef8146];return _0x5a6cb0;};'use strict';var emlformat=require(_0xe707('0x0'));var rimraf=require(_0xe707('0x1'));var zipdir=require(_0xe707('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe707('0x3'));var moment=require('moment');var BPromise=require(_0xe707('0x4'));var Mustache=require(_0xe707('0x5'));var util=require(_0xe707('0x6'));var path=require(_0xe707('0x7'));var sox=require(_0xe707('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xe707('0x9'));var crypto=require(_0xe707('0xa'));var jsforce=require(_0xe707('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe707('0xc'));var querystring=require('querystring');var Papa=require(_0xe707('0xd'));var Redis=require(_0xe707('0xe'));var authService=require(_0xe707('0xf'));var qs=require(_0xe707('0x10'));var as=require(_0xe707('0x11'));var hardwareService=require(_0xe707('0x12'));var logger=require(_0xe707('0x13'))(_0xe707('0x14'));var utils=require(_0xe707('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xe707('0x16'));var db=require(_0xe707('0x17'))['db'];function respondWithStatusCode(_0x1baed8,_0x2a9837){_0x2a9837=_0x2a9837||0xcc;return function(_0x2c5c04){if(_0x2c5c04){return _0x1baed8[_0xe707('0x18')](_0x2a9837);}return _0x1baed8[_0xe707('0x19')](_0x2a9837)[_0xe707('0x1a')]();};}function respondWithResult(_0xbb50f0,_0x532487){_0x532487=_0x532487||0xc8;return function(_0x1bec08){if(_0x1bec08){return _0xbb50f0['status'](_0x532487)[_0xe707('0x1b')](_0x1bec08);}};}function respondWithFilteredResult(_0x5ae104,_0x34a6e1){return function(_0x4d9896){if(_0x4d9896){var _0x35d0ed=typeof _0x34a6e1[_0xe707('0x1c')]==='undefined'&&typeof _0x34a6e1[_0xe707('0x1d')]==='undefined';var _0x251f13=_0x4d9896[_0xe707('0x1e')];var _0x16b3aa=_0x35d0ed?0x0:_0x34a6e1['offset'];var _0x15e104=_0x35d0ed?_0x4d9896[_0xe707('0x1e')]:_0x34a6e1['offset']+_0x34a6e1[_0xe707('0x1d')];var _0x4a2bcd;if(_0x15e104>=_0x251f13){_0x15e104=_0x251f13;_0x4a2bcd=0xc8;}else{_0x4a2bcd=0xce;}_0x5ae104['status'](_0x4a2bcd);return _0x5ae104[_0xe707('0x1f')](_0xe707('0x20'),_0x16b3aa+'-'+_0x15e104+'/'+_0x251f13)[_0xe707('0x1b')](_0x4d9896);}return null;};}function patchUpdates(_0xe4cd07){return function(_0x3aacd3){try{jsonpatch[_0xe707('0x21')](_0x3aacd3,_0xe4cd07,!![]);}catch(_0x124071){return BPromise[_0xe707('0x22')](_0x124071);}return _0x3aacd3[_0xe707('0x23')]();};}function saveUpdates(_0x53a95e,_0x4ce20f){return function(_0x72188){if(_0x72188){return _0x72188[_0xe707('0x24')](_0x53a95e)[_0xe707('0x25')](function(_0x92f7af){return _0x92f7af;});}return null;};}function removeEntity(_0x1d8523,_0xc17c53){return function(_0x50f985){if(_0x50f985){return _0x50f985[_0xe707('0x26')]()[_0xe707('0x25')](function(){var _0x251520=_0x50f985[_0xe707('0x27')]({'plain':!![]});var _0x1cb59c='Variables';return db[_0xe707('0x28')][_0xe707('0x26')]({'where':{'type':_0x1cb59c,'resourceId':_0x251520['id']}})[_0xe707('0x25')](function(){return _0x50f985;});})[_0xe707('0x25')](function(){_0x1d8523[_0xe707('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e62c2,_0x19691b){return function(_0x84e5f8){if(!_0x84e5f8){_0x1e62c2[_0xe707('0x18')](0x194);}return _0x84e5f8;};}function handleError(_0x44bc7c,_0x29e98e){_0x29e98e=_0x29e98e||0x1f4;return function(_0x3e72e7){logger['error'](_0x3e72e7['stack']);if(_0x3e72e7[_0xe707('0x29')]){delete _0x3e72e7[_0xe707('0x29')];}_0x44bc7c[_0xe707('0x19')](_0x29e98e)[_0xe707('0x2a')](_0x3e72e7);};}exports[_0xe707('0x2b')]=function(_0x53bece,_0x56f515){var _0x348413={},_0x2290ec={},_0xc0eea3={'count':0x0,'rows':[]};var _0x5f2d50=_['map'](db['Variable']['rawAttributes'],function(_0x1e715b){return{'name':_0x1e715b[_0xe707('0x2c')],'type':_0x1e715b[_0xe707('0x2d')][_0xe707('0x2e')]};});_0x2290ec['model']=_[_0xe707('0x2f')](_0x5f2d50,_0xe707('0x29'));_0x2290ec[_0xe707('0x30')]=_[_0xe707('0x31')](_0x53bece[_0xe707('0x30')]);_0x2290ec['filters']=_[_0xe707('0x32')](_0x2290ec[_0xe707('0x33')],_0x2290ec[_0xe707('0x30')]);_0x348413[_0xe707('0x34')]=_[_0xe707('0x32')](_0x2290ec[_0xe707('0x33')],qs['fields'](_0x53bece[_0xe707('0x30')][_0xe707('0x35')]));_0x348413[_0xe707('0x34')]=_0x348413[_0xe707('0x34')][_0xe707('0x36')]?_0x348413[_0xe707('0x34')]:_0x2290ec['model'];if(!_0x53bece[_0xe707('0x30')][_0xe707('0x37')]('nolimit')){_0x348413[_0xe707('0x1d')]=qs[_0xe707('0x1d')](_0x53bece[_0xe707('0x30')][_0xe707('0x1d')]);_0x348413['offset']=qs[_0xe707('0x1c')](_0x53bece['query'][_0xe707('0x1c')]);}_0x348413[_0xe707('0x38')]=qs[_0xe707('0x39')](_0x53bece[_0xe707('0x30')][_0xe707('0x39')]);_0x348413[_0xe707('0x3a')]=qs[_0xe707('0x3b')](_[_0xe707('0x3c')](_0x53bece[_0xe707('0x30')],_0x2290ec['filters']),_0x5f2d50);if(_0x53bece[_0xe707('0x30')][_0xe707('0x3d')]){_0x348413[_0xe707('0x3a')]=_[_0xe707('0x3e')](_0x348413[_0xe707('0x3a')],{'$or':_[_0xe707('0x2f')](_0x5f2d50,function(_0x14ef7b){if(_0x14ef7b[_0xe707('0x2d')]!==_0xe707('0x3f')){var _0x140dde={};_0x140dde[_0x14ef7b[_0xe707('0x29')]]={'$like':'%'+_0x53bece[_0xe707('0x30')]['filter']+'%'};return _0x140dde;}})});}_0x348413=_[_0xe707('0x3e')]({},_0x348413,_0x53bece[_0xe707('0x40')]);var _0x2f3197={'where':_0x348413[_0xe707('0x3a')]};return db[_0xe707('0x41')][_0xe707('0x1e')](_0x2f3197)[_0xe707('0x25')](function(_0x3b732f){_0xc0eea3['count']=_0x3b732f;if(_0x53bece[_0xe707('0x30')][_0xe707('0x42')]){_0x348413['include']=[{'all':!![]}];}return db['Variable'][_0xe707('0x43')](_0x348413);})[_0xe707('0x25')](function(_0x330127){_0xc0eea3[_0xe707('0x44')]=_0x330127;return _0xc0eea3;})[_0xe707('0x25')](respondWithFilteredResult(_0x56f515,_0x348413))['catch'](handleError(_0x56f515,null));};exports['show']=function(_0x18a301,_0x8eeca4){var _0x4fd4a3={'raw':!![],'where':{'id':_0x18a301[_0xe707('0x45')]['id']}},_0x2ee5b0={};_0x2ee5b0[_0xe707('0x33')]=_[_0xe707('0x31')](db['Variable'][_0xe707('0x46')]);_0x2ee5b0[_0xe707('0x30')]=_[_0xe707('0x31')](_0x18a301[_0xe707('0x30')]);_0x2ee5b0[_0xe707('0x3b')]=_['intersection'](_0x2ee5b0[_0xe707('0x33')],_0x2ee5b0[_0xe707('0x30')]);_0x4fd4a3['attributes']=_[_0xe707('0x32')](_0x2ee5b0[_0xe707('0x33')],qs[_0xe707('0x35')](_0x18a301[_0xe707('0x30')][_0xe707('0x35')]));_0x4fd4a3['attributes']=_0x4fd4a3[_0xe707('0x34')][_0xe707('0x36')]?_0x4fd4a3[_0xe707('0x34')]:_0x2ee5b0[_0xe707('0x33')];if(_0x18a301[_0xe707('0x30')][_0xe707('0x42')]){_0x4fd4a3['include']=[{'all':!![]}];}_0x4fd4a3=_['merge']({},_0x4fd4a3,_0x18a301['options']);return db[_0xe707('0x41')][_0xe707('0x47')](_0x4fd4a3)[_0xe707('0x25')](handleEntityNotFound(_0x8eeca4,null))[_0xe707('0x25')](respondWithResult(_0x8eeca4,null))[_0xe707('0x48')](handleError(_0x8eeca4,null));};exports['create']=function(_0xa0a39c,_0xd3b340){return db['Variable'][_0xe707('0x49')](_0xa0a39c['body'],{})[_0xe707('0x25')](function(_0x399313){var _0x306122=_0xa0a39c['user']['get']({'plain':!![]});if(!_0x306122)throw new Error(_0xe707('0x4a'));if(_0x306122[_0xe707('0x4b')]===_0xe707('0x4c')){var _0x1d3395=_0x399313[_0xe707('0x27')]({'plain':!![]});var _0x14efa7='Variables';return db[_0xe707('0x4d')][_0xe707('0x47')]({'where':{'name':_0x14efa7,'userProfileId':_0x306122[_0xe707('0x4e')]},'raw':!![]})[_0xe707('0x25')](function(_0x5a5dd8){if(_0x5a5dd8&&_0x5a5dd8[_0xe707('0x4f')]===0x0){return db[_0xe707('0x28')][_0xe707('0x49')]({'name':_0x1d3395[_0xe707('0x29')],'resourceId':_0x1d3395['id'],'type':_0x5a5dd8[_0xe707('0x29')],'sectionId':_0x5a5dd8['id']},{})[_0xe707('0x25')](function(){return _0x399313;});}else{return _0x399313;}})[_0xe707('0x48')](function(_0x41a091){logger[_0xe707('0x50')](_0xe707('0x51'),_0x41a091);throw _0x41a091;});}return _0x399313;})[_0xe707('0x25')](respondWithResult(_0xd3b340,0xc9))['catch'](handleError(_0xd3b340,null));};exports[_0xe707('0x24')]=function(_0x190132,_0x49335b){if(_0x190132['body']['id']){delete _0x190132[_0xe707('0x52')]['id'];}return db[_0xe707('0x41')]['find']({'where':{'id':_0x190132[_0xe707('0x45')]['id']}})['then'](handleEntityNotFound(_0x49335b,null))[_0xe707('0x25')](saveUpdates(_0x190132['body'],null))['then'](respondWithResult(_0x49335b,null))[_0xe707('0x48')](handleError(_0x49335b,null));};exports[_0xe707('0x26')]=function(_0x4f87ad,_0x44f48a){return db['Variable']['find']({'where':{'id':_0x4f87ad[_0xe707('0x45')]['id']}})[_0xe707('0x25')](handleEntityNotFound(_0x44f48a,null))['then'](removeEntity(_0x44f48a,null))[_0xe707('0x48')](handleError(_0x44f48a,null));};
\ No newline at end of file
index 9656f89..f963d79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d49=['exports','define','Variable','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./variable.attributes'];(function(_0x1196bd,_0xba4aea){var _0x26014f=function(_0x542a3d){while(--_0x542a3d){_0x1196bd['push'](_0x1196bd['shift']());}};_0x26014f(++_0xba4aea);}(_0x7d49,0x1c5));var _0x97d4=function(_0xe618a9,_0x3eddc5){_0xe618a9=_0xe618a9-0x0;var _0x20aae0=_0x7d49[_0xe618a9];return _0x20aae0;};'use strict';var _=require(_0x97d4('0x0'));var util=require('util');var logger=require(_0x97d4('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x97d4('0x2'));var fs=require('fs');var path=require(_0x97d4('0x3'));var rimraf=require(_0x97d4('0x4'));var config=require(_0x97d4('0x5'));var attributes=require(_0x97d4('0x6'));module[_0x97d4('0x7')]=function(_0x20af5f,_0x271d79){return _0x20af5f[_0x97d4('0x8')](_0x97d4('0x9'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x871f=['rimraf','../../config/environment','Variable','tools_variables','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x871f,0x14e));var _0xf871=function(_0x33027a,_0x3a97be){_0x33027a=_0x33027a-0x0;var _0x2f05a8=_0x871f[_0x33027a];return _0x2f05a8;};'use strict';var _=require(_0xf871('0x0'));var util=require(_0xf871('0x1'));var logger=require(_0xf871('0x2'))(_0xf871('0x3'));var moment=require('moment');var BPromise=require(_0xf871('0x4'));var rp=require(_0xf871('0x5'));var fs=require('fs');var path=require(_0xf871('0x6'));var rimraf=require(_0xf871('0x7'));var config=require(_0xf871('0x8'));var attributes=require('./variable.attributes');module['exports']=function(_0x46a9ae,_0x595914){return _0x46a9ae['define'](_0xf871('0x9'),attributes,{'tableName':_0xf871('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bfdf9cb..d414988 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(_0x5257d6,_0x5be71e){var _0x41a696=function(_0x36d7b1){while(--_0x36d7b1){_0x5257d6['push'](_0x5257d6['shift']());}};_0x41a696(++_0x5be71e);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'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 _0xabce=['moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowVariable','Variable','find','options','attributes','map','include','model','catch','lodash','util'];(function(_0x113c73,_0x2752b1){var _0x34bc0a=function(_0x3535cc){while(--_0x3535cc){_0x113c73['push'](_0x113c73['shift']());}};_0x34bc0a(++_0x2752b1);}(_0xabce,0x103));var _0xeabc=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xabce[_0xea8947];return _0x2455e9;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Variable,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}exports[_0xeabc('0x14')]=function(_0x58a3c0){var _0x16f08b=this;return new Promise(function(_0x31dd53,_0x31f52a){return db[_0xeabc('0x15')][_0xeabc('0x16')]({'raw':_0x58a3c0['options']?_0x58a3c0[_0xeabc('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['where']||null:null,'attributes':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x18')]||null:null,'include':_0x58a3c0[_0xeabc('0x17')]?_0x58a3c0[_0xeabc('0x17')]['include']?_[_0xeabc('0x19')](_0x58a3c0[_0xeabc('0x17')][_0xeabc('0x1a')],function(_0x5bdd57){return{'model':db[_0x5bdd57[_0xeabc('0x1b')]],'as':_0x5bdd57['as'],'attributes':_0x5bdd57[_0xeabc('0x18')],'include':_0x5bdd57[_0xeabc('0x1a')]?_[_0xeabc('0x19')](_0x5bdd57['include'],function(_0x109e1d){return{'model':db[_0x109e1d['model']],'as':_0x109e1d['as'],'attributes':_0x109e1d[_0xeabc('0x18')],'include':_0x109e1d['include']?_[_0xeabc('0x19')](_0x109e1d[_0xeabc('0x1a')],function(_0x269621){return{'model':db[_0x269621[_0xeabc('0x1b')]],'as':_0x269621['as'],'attributes':_0x269621[_0xeabc('0x18')]};}):[]};}):[]};}):[]:[]})[_0xeabc('0x9')](function(_0x131722){logger['info']('ShowVariable',_0x58a3c0);logger[_0xeabc('0xd')]('ShowVariable',_0x58a3c0,JSON[_0xeabc('0xf')](_0x131722));_0x31dd53(_0x131722);})[_0xeabc('0x1c')](function(_0x48fb52){logger[_0xeabc('0x10')](_0xeabc('0x14'),_0x48fb52[_0xeabc('0x12')],_0x58a3c0);_0x31f52a(_0x16f08b[_0xeabc('0x10')](0x1f4,_0x48fb52[_0xeabc('0x12')]));});});};
\ No newline at end of file
index 8b4b724..50e59ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x295f=['/restart','restart','/migrations','exports','express','Router','../../components/auth/service','index','/fetch','isAuthenticated','canUpdate','fetch','get','/reset','/pull','pull'];(function(_0x2c3aed,_0xa4011f){var _0x473dc4=function(_0x2a4ffc){while(--_0x2a4ffc){_0x2c3aed['push'](_0x2c3aed['shift']());}};_0x473dc4(++_0xa4011f);}(_0x295f,0x174));var _0xf295=function(_0x1d53cf,_0x4dc725){_0x1d53cf=_0x1d53cf-0x0;var _0x581409=_0x295f[_0x1d53cf];return _0x581409;};'use strict';var express=require(_0xf295('0x0'));var router=express[_0xf295('0x1')]();var auth=require(_0xf295('0x2'));var controller=require('./version.controller');router['get']('/',controller[_0xf295('0x3')]);router['get'](_0xf295('0x4'),auth[_0xf295('0x5')](),auth[_0xf295('0x6')](),controller[_0xf295('0x7')]);router[_0xf295('0x8')](_0xf295('0x9'),auth['isAuthenticated'](),auth['canUpdate'](),controller['reset']);router[_0xf295('0x8')](_0xf295('0xa'),auth[_0xf295('0x5')](),auth['canUpdate'](),controller[_0xf295('0xb')]);router[_0xf295('0x8')](_0xf295('0xc'),auth[_0xf295('0x5')](),controller[_0xf295('0xd')]);router['get'](_0xf295('0xe'),controller['migrations']);module[_0xf295('0xf')]=router;
\ No newline at end of file
+var _0x6f9c=['get','isAuthenticated','canUpdate','fetch','/reset','reset','pull','/restart','/migrations','migrations','exports','express','Router','../../components/auth/service','./version.controller','index'];(function(_0x87f17c,_0x581f4a){var _0x418ddd=function(_0x415720){while(--_0x415720){_0x87f17c['push'](_0x87f17c['shift']());}};_0x418ddd(++_0x581f4a);}(_0x6f9c,0x16b));var _0xc6f9=function(_0x142b39,_0x53cdcf){_0x142b39=_0x142b39-0x0;var _0x172ee7=_0x6f9c[_0x142b39];return _0x172ee7;};'use strict';var express=require(_0xc6f9('0x0'));var router=express[_0xc6f9('0x1')]();var auth=require(_0xc6f9('0x2'));var controller=require(_0xc6f9('0x3'));router['get']('/',controller[_0xc6f9('0x4')]);router[_0xc6f9('0x5')]('/fetch',auth[_0xc6f9('0x6')](),auth[_0xc6f9('0x7')](),controller[_0xc6f9('0x8')]);router[_0xc6f9('0x5')](_0xc6f9('0x9'),auth[_0xc6f9('0x6')](),auth[_0xc6f9('0x7')](),controller[_0xc6f9('0xa')]);router[_0xc6f9('0x5')]('/pull',auth[_0xc6f9('0x6')](),auth[_0xc6f9('0x7')](),controller[_0xc6f9('0xb')]);router['get'](_0xc6f9('0xc'),auth[_0xc6f9('0x6')](),controller['restart']);router[_0xc6f9('0x5')](_0xc6f9('0xd'),controller[_0xc6f9('0xe')]);module[_0xc6f9('0xf')]=router;
\ No newline at end of file
index 3965c9c..018cf2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99be=['latest','fetch','tags','2.0.0','status','json','master','error','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','npm\x20install\x20--production','info','restart','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','join','server','length','.js','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','path','lodash','pkginfo','version','compare-versions','child_process','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','root','index','exports'];(function(_0x7395c7,_0x2f973f){var _0x30d3d9=function(_0x69894){while(--_0x69894){_0x7395c7['push'](_0x7395c7['shift']());}};_0x30d3d9(++_0x2f973f);}(_0x99be,0xe7));var _0xe99b=function(_0x522ca0,_0x5a8631){_0x522ca0=_0x522ca0-0x0;var _0x26beb8=_0x99be[_0x522ca0];return _0x26beb8;};'use strict';var Umzug=require('umzug');var path=require(_0xe99b('0x0'));var fs=require('fs');var _=require(_0xe99b('0x1'));var pkginfo=require(_0xe99b('0x2'))(module,_0xe99b('0x3'));var compareVersions=require(_0xe99b('0x4'));var exec=require(_0xe99b('0x5'))['exec'];var db=require(_0xe99b('0x6'))['db'];var config=require(_0xe99b('0x7'));var pm2=require(_0xe99b('0x8'));var logger=require(_0xe99b('0x9'))(_0xe99b('0xa'));var git=require('simple-git')(config[_0xe99b('0xb')]);exports[_0xe99b('0xc')]=function(_0x21dfff,_0x4ca50e){var _0x3b1242={'current':module[_0xe99b('0xd')][_0xe99b('0x3')],'phonebar':0x2};if(_0x21dfff['query']&&_0x21dfff['query'][_0xe99b('0xe')]){return git[_0xe99b('0xf')]()[_0xe99b('0x10')](function(_0x44c168,_0x15fcef){_0x3b1242[_0xe99b('0xe')]=(_0x44c168?module[_0xe99b('0xd')][_0xe99b('0x3')]:_0x15fcef[_0xe99b('0xe')])||_0xe99b('0x11');return _0x4ca50e[_0xe99b('0x12')](0xc8)[_0xe99b('0x13')](_0x3b1242);});}else{return _0x4ca50e[_0xe99b('0x12')](0xc8)[_0xe99b('0x13')](_0x3b1242);}};exports[_0xe99b('0xf')]=function(_0x3b7348,_0x168993){return git[_0xe99b('0xf')](['origin',_0xe99b('0x14')],function(_0x520e36){if(_0x520e36){logger[_0xe99b('0x15')](_0x520e36);return _0x168993[_0xe99b('0x12')](0x1f4)[_0xe99b('0x13')](_0x520e36);}logger['info'](_0xe99b('0x16'));return _0x168993[_0xe99b('0x12')](0xc8)[_0xe99b('0x13')]({'output':'git\x20fetch\x20origin\x20master'});});};exports['reset']=function(_0x4eb0f6,_0x2a4d21){return git[_0xe99b('0x17')]([_0xe99b('0x18'),_0xe99b('0x19')],function(_0x22d0bf){if(_0x22d0bf){logger[_0xe99b('0x15')](_0x22d0bf);return _0x2a4d21[_0xe99b('0x12')](0x1f4)['json'](_0x22d0bf);}logger['info'](_0xe99b('0x1a'));return _0x2a4d21['status'](0xc8)[_0xe99b('0x13')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x57b2ba,_0x3ccf1a){exec(_0xe99b('0x1b'),function(_0x5526e1,_0x9c4903,_0x409f35){logger[_0xe99b('0x1c')](_0x9c4903);logger[_0xe99b('0x1c')](_0x409f35);if(_0x5526e1){logger[_0xe99b('0x15')](_0x5526e1);return _0x3ccf1a[_0xe99b('0x12')](0x1f4)['json'](_0x5526e1);}return _0x3ccf1a[_0xe99b('0x12')](0xc8)[_0xe99b('0x13')]({'output':_0x9c4903});});};exports[_0xe99b('0x1d')]=function(_0x582ec3,_0x5bf590){return pm2[_0xe99b('0x1d')]('motion2')[_0xe99b('0x1e')](function(_0x2f1c8d){logger[_0xe99b('0x1c')](_0xe99b('0x1f'),_0x2f1c8d);return _0x5bf590['status'](0xc8)['json']({'output':_0xe99b('0x20')});})['catch'](function(_0x2f924f){logger['error'](_0x2f924f);return _0x5bf590[_0xe99b('0x12')](0x1f4)['json'](_0x2f924f);});};exports[_0xe99b('0x21')]=function(_0x23a5f0,_0xe7901b){var _0x50545c=fs['readdirSync'](path[_0xe99b('0x22')](config[_0xe99b('0xb')],_0xe99b('0x23'),'migrations'));var _0x208e52=[];for(var _0x573c61=0x0;_0x573c61<_0x50545c[_0xe99b('0x24')];_0x573c61++){var _0x17bd4d=_0x50545c[_0x573c61]['replace'](_0xe99b('0x25'),'');if(compareVersions(module[_0xe99b('0xd')]['version'],_0x17bd4d)===-0x1){_0x208e52['push'](_0x17bd4d);}}if(_0x208e52[_0xe99b('0x24')]){var _0x4a91c6=_0x208e52[_0xe99b('0x26')](compareVersions);var _0x4ce1f5=new Umzug({'storage':_0xe99b('0x27'),'storageOptions':{'model':db[_0xe99b('0x28')],'modelName':'Migration','columnName':_0xe99b('0x3')},'migrations':{'params':[db['sequelize'][_0xe99b('0x29')](),db['sequelize'][_0xe99b('0x2a')],function(){throw new Error(_0xe99b('0x2b'));}],'path':path[_0xe99b('0x22')](config[_0xe99b('0xb')],_0xe99b('0x23'),_0xe99b('0x21')),'pattern':/\.js$/}});_0x4ce1f5['up']({'migrations':_[_0xe99b('0x2c')](_0x4a91c6,function(_0x373635){return _0x373635+_0xe99b('0x25');})})[_0xe99b('0x1e')](function(){return _0xe7901b[_0xe99b('0x12')](0xc8)['json']({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports']['version']+_0xe99b('0x2d')+_[_0xe99b('0x2e')](_0x4a91c6),'migrations':_[_0xe99b('0x22')](_0x4a91c6)});})['catch'](function(_0x5d6565){if(_0x5d6565 instanceof db[_0xe99b('0x27')][_0xe99b('0x2f')]){return _0xe7901b['status'](0xc8)[_0xe99b('0x13')]({'output':_0xe99b('0x30')});}else{return _0xe7901b[_0xe99b('0x12')](0x1f4)[_0xe99b('0x13')](_0x5d6565);}});}else{return _0xe7901b[_0xe99b('0x12')](0xc8)[_0xe99b('0x13')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
+var _0xf167=['../../config/logger','update','simple-git','root','index','exports','query','latest','tags','2.0.0','status','json','fetch','master','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','FETCH_HEAD','error','git\x20reset\x20--hard\x20FETCH_HEAD','motion2','then','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','Migration','sequelize','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','../../mysqldb','../../config/environment','../../config/pm2'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf167,0x1b9));var _0x7f16=function(_0x1399d6,_0x2c1661){_0x1399d6=_0x1399d6-0x0;var _0x4a9db4=_0xf167[_0x1399d6];return _0x4a9db4;};'use strict';var Umzug=require(_0x7f16('0x0'));var path=require(_0x7f16('0x1'));var fs=require('fs');var _=require(_0x7f16('0x2'));var pkginfo=require(_0x7f16('0x3'))(module,_0x7f16('0x4'));var compareVersions=require(_0x7f16('0x5'));var exec=require('child_process')['exec'];var db=require(_0x7f16('0x6'))['db'];var config=require(_0x7f16('0x7'));var pm2=require(_0x7f16('0x8'));var logger=require(_0x7f16('0x9'))(_0x7f16('0xa'));var git=require(_0x7f16('0xb'))(config[_0x7f16('0xc')]);exports[_0x7f16('0xd')]=function(_0x2a0435,_0x4f9138){var _0x1bd65c={'current':module[_0x7f16('0xe')][_0x7f16('0x4')],'phonebar':0x2};if(_0x2a0435[_0x7f16('0xf')]&&_0x2a0435[_0x7f16('0xf')][_0x7f16('0x10')]){return git['fetch']()[_0x7f16('0x11')](function(_0x3f2fce,_0x26684f){_0x1bd65c['latest']=(_0x3f2fce?module['exports'][_0x7f16('0x4')]:_0x26684f[_0x7f16('0x10')])||_0x7f16('0x12');return _0x4f9138['status'](0xc8)['json'](_0x1bd65c);});}else{return _0x4f9138[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')](_0x1bd65c);}};exports[_0x7f16('0x15')]=function(_0x4e7e81,_0x11b06d){return git[_0x7f16('0x15')](['origin',_0x7f16('0x16')],function(_0x110f05){if(_0x110f05){logger['error'](_0x110f05);return _0x11b06d[_0x7f16('0x13')](0x1f4)['json'](_0x110f05);}logger[_0x7f16('0x17')](_0x7f16('0x18'));return _0x11b06d[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')]({'output':_0x7f16('0x19')});});};exports['reset']=function(_0x244500,_0x4ff90e){return git[_0x7f16('0x1a')](['--hard',_0x7f16('0x1b')],function(_0x1e1414){if(_0x1e1414){logger[_0x7f16('0x1c')](_0x1e1414);return _0x4ff90e[_0x7f16('0x13')](0x1f4)[_0x7f16('0x14')](_0x1e1414);}logger['info'](_0x7f16('0x1d'));return _0x4ff90e[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')]({'output':'git\x20reset\x20--hard'});});};exports['pull']=function(_0x1d8209,_0x21a74c){exec('npm\x20install\x20--production',function(_0x182f0e,_0x478590,_0x10c840){logger[_0x7f16('0x17')](_0x478590);logger[_0x7f16('0x17')](_0x10c840);if(_0x182f0e){logger[_0x7f16('0x1c')](_0x182f0e);return _0x21a74c['status'](0x1f4)[_0x7f16('0x14')](_0x182f0e);}return _0x21a74c[_0x7f16('0x13')](0xc8)[_0x7f16('0x14')]({'output':_0x478590});});};exports['restart']=function(_0x2bfa3d,_0x4ac733){return pm2['restart'](_0x7f16('0x1e'))[_0x7f16('0x1f')](function(_0x311f90){logger[_0x7f16('0x17')]('pm2\x20restart\x20motion\x20%s',_0x311f90);return _0x4ac733['status'](0xc8)['json']({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0x7f16('0x20')](function(_0x208e06){logger[_0x7f16('0x1c')](_0x208e06);return _0x4ac733[_0x7f16('0x13')](0x1f4)['json'](_0x208e06);});};exports[_0x7f16('0x21')]=function(_0x2d8534,_0x5d32a8){var _0x1638ec=fs[_0x7f16('0x22')](path[_0x7f16('0x23')](config[_0x7f16('0xc')],_0x7f16('0x24'),_0x7f16('0x21')));var _0x522190=[];for(var _0x3fd15f=0x0;_0x3fd15f<_0x1638ec[_0x7f16('0x25')];_0x3fd15f++){var _0x53e632=_0x1638ec[_0x3fd15f][_0x7f16('0x26')](_0x7f16('0x27'),'');if(compareVersions(module[_0x7f16('0xe')]['version'],_0x53e632)===-0x1){_0x522190[_0x7f16('0x28')](_0x53e632);}}if(_0x522190[_0x7f16('0x25')]){var _0x1f732e=_0x522190[_0x7f16('0x29')](compareVersions);var _0x331e5c=new Umzug({'storage':'sequelize','storageOptions':{'model':db[_0x7f16('0x2a')],'modelName':_0x7f16('0x2a'),'columnName':_0x7f16('0x4')},'migrations':{'params':[db['sequelize']['getQueryInterface'](),db[_0x7f16('0x2b')][_0x7f16('0x2c')],function(){throw new Error(_0x7f16('0x2d'));}],'path':path[_0x7f16('0x23')](config[_0x7f16('0xc')],_0x7f16('0x24'),_0x7f16('0x21')),'pattern':/\.js$/}});_0x331e5c['up']({'migrations':_['map'](_0x1f732e,function(_0x57d7fc){return _0x57d7fc+_0x7f16('0x27');})})[_0x7f16('0x1f')](function(){return _0x5d32a8['status'](0xc8)[_0x7f16('0x14')]({'output':_0x7f16('0x2e')+module['exports'][_0x7f16('0x4')]+_0x7f16('0x2f')+_['last'](_0x1f732e),'migrations':_[_0x7f16('0x23')](_0x1f732e)});})[_0x7f16('0x20')](function(_0x2e2b53){if(_0x2e2b53 instanceof db[_0x7f16('0x2b')][_0x7f16('0x30')]){return _0x5d32a8[_0x7f16('0x13')](0xc8)['json']({'output':_0x7f16('0x31')});}else{return _0x5d32a8[_0x7f16('0x13')](0x1f4)['json'](_0x2e2b53);}});}else{return _0x5d32a8['status'](0xc8)[_0x7f16('0x14')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index 63f1752..985dc42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb636=['get','/describe','describe','/:id','post','create','put','exports','multer','util','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index'];(function(_0x1f03b9,_0x505409){var _0x54d5cf=function(_0x873d51){while(--_0x873d51){_0x1f03b9['push'](_0x1f03b9['shift']());}};_0x54d5cf(++_0x505409);}(_0xb636,0x198));var _0x6b63=function(_0x493fe6,_0x527078){_0x493fe6=_0x493fe6-0x0;var _0x92a94e=_0xb636[_0x493fe6];return _0x92a94e;};'use strict';var multer=require(_0x6b63('0x0'));var util=require(_0x6b63('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6b63('0x2'));var router=express['Router']();var fs_extra=require(_0x6b63('0x3'));var auth=require(_0x6b63('0x4'));var interaction=require(_0x6b63('0x5'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router['get']('/',auth[_0x6b63('0x6')](),controller[_0x6b63('0x7')]);router[_0x6b63('0x8')](_0x6b63('0x9'),auth[_0x6b63('0x6')](),controller[_0x6b63('0xa')]);router['get'](_0x6b63('0xb'),auth[_0x6b63('0x6')](),controller['show']);router[_0x6b63('0xc')]('/',auth[_0x6b63('0x6')](),controller[_0x6b63('0xd')]);router[_0x6b63('0xe')](_0x6b63('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x6b63('0xb'),auth[_0x6b63('0x6')](),controller['destroy']);module[_0x6b63('0xf')]=router;
\ No newline at end of file
+var _0x9c80=['path','connect-timeout','express','Router','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy'];(function(_0x1be365,_0x4e7c0e){var _0x56b61a=function(_0x1feab2){while(--_0x1feab2){_0x1be365['push'](_0x1be365['shift']());}};_0x56b61a(++_0x4e7c0e);}(_0x9c80,0xff));var _0x09c8=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x9c80[_0x4d8ed9];return _0x1e2140;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x09c8('0x0'));var timeout=require(_0x09c8('0x1'));var express=require(_0x09c8('0x2'));var router=express[_0x09c8('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x09c8('0x4'));var config=require('../../config/environment');var controller=require('./voiceAgentReport.controller');router[_0x09c8('0x5')]('/',auth[_0x09c8('0x6')](),controller[_0x09c8('0x7')]);router['get'](_0x09c8('0x8'),auth['isAuthenticated'](),controller[_0x09c8('0x9')]);router['get'](_0x09c8('0xa'),auth[_0x09c8('0x6')](),controller[_0x09c8('0xb')]);router[_0x09c8('0xc')]('/',auth['isAuthenticated'](),controller[_0x09c8('0xd')]);router[_0x09c8('0xe')](_0x09c8('0xa'),auth[_0x09c8('0x6')](),controller['update']);router[_0x09c8('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x09c8('0x10')]);module['exports']=router;
\ No newline at end of file
index 134fcd9..3aff475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7fa=['sequelize','STRING','DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x57690f,_0x1cf9e4){var _0x2216c7=function(_0x2cf60c){while(--_0x2cf60c){_0x57690f['push'](_0x57690f['shift']());}};_0x2216c7(++_0x1cf9e4);}(_0xa7fa,0xfc));var _0xaa7f=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa7fa[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0xaa7f('0x0'));module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xaa7f('0x1')]},'calleridnum':{'type':Sequelize[_0xaa7f('0x1')]},'calleridname':{'type':Sequelize[_0xaa7f('0x1')]},'queue':{'type':Sequelize[_0xaa7f('0x1')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xaa7f('0x1')]},'agentcalledAt':{'type':Sequelize[_0xaa7f('0x2')]},'agentconnectAt':{'type':Sequelize[_0xaa7f('0x2')]},'agentcompleteAt':{'type':Sequelize[_0xaa7f('0x2')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0xaa7f('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xaa7f('0x3')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0xaa7f('0x4')]},'agentacw':{'type':Sequelize[_0xaa7f('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xaa7f('0x4')]},'reason':{'type':Sequelize[_0xaa7f('0x1')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xaa7f('0x1')]},'channelstate':{'type':Sequelize[_0xaa7f('0x4')]},'channelstatedesc':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xaa7f('0x1')]},'connectedlinename':{'type':Sequelize[_0xaa7f('0x1')]},'language':{'type':Sequelize[_0xaa7f('0x1')]},'accountcode':{'type':Sequelize[_0xaa7f('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xaa7f('0x1')]},'destchannel':{'type':Sequelize[_0xaa7f('0x1')]},'destchannelstate':{'type':Sequelize[_0xaa7f('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xaa7f('0x1')]},'destcalleridnum':{'type':Sequelize[_0xaa7f('0x1')]},'destcalleridname':{'type':Sequelize[_0xaa7f('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xaa7f('0x1')]},'destconnectedlinename':{'type':Sequelize[_0xaa7f('0x1')]},'destlanguage':{'type':Sequelize[_0xaa7f('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0xaa7f('0x1')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xaa7f('0x1')]},'destuniqueid':{'type':Sequelize[_0xaa7f('0x1')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xaa7f('0x1')]},'answeredelsewheremembername':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0xaa7f('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xaa7f('0x1')],'comment':_0xaa7f('0x5')},'transferexten':{'type':Sequelize[_0xaa7f('0x1')]},'transferuniqueid':{'type':Sequelize[_0xaa7f('0x1')]},'agententerreason':{'type':Sequelize[_0xaa7f('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x1c52=['STRING','DATE','BOOLEAN','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports'];(function(_0x3a78a0,_0x44985f){var _0x48e917=function(_0x1e428c){while(--_0x1e428c){_0x3a78a0['push'](_0x3a78a0['shift']());}};_0x48e917(++_0x44985f);}(_0x1c52,0x7c));var _0x21c5=function(_0x27925c,_0x3c9876){_0x27925c=_0x27925c-0x0;var _0x2c0434=_0x1c52[_0x27925c];return _0x2c0434;};'use strict';var Sequelize=require(_0x21c5('0x0'));module[_0x21c5('0x1')]={'type':{'type':Sequelize[_0x21c5('0x2')]},'uniqueid':{'type':Sequelize[_0x21c5('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x21c5('0x2')]},'membername':{'type':Sequelize[_0x21c5('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x21c5('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x21c5('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0x21c5('0x3')]},'agentdumpAt':{'type':Sequelize[_0x21c5('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'talktime':{'type':Sequelize[_0x21c5('0x5')]},'agentacw':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x21c5('0x5')]},'reason':{'type':Sequelize[_0x21c5('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x21c5('0x2')]},'channelstate':{'type':Sequelize[_0x21c5('0x5')]},'channelstatedesc':{'type':Sequelize[_0x21c5('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x21c5('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x21c5('0x2')]},'context':{'type':Sequelize[_0x21c5('0x2')]},'exten':{'type':Sequelize[_0x21c5('0x2')]},'priority':{'type':Sequelize[_0x21c5('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x21c5('0x5')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x21c5('0x2')]},'destcalleridname':{'type':Sequelize[_0x21c5('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x21c5('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x21c5('0x2')]},'destexten':{'type':Sequelize[_0x21c5('0x2')]},'destpriority':{'type':Sequelize[_0x21c5('0x2')]},'destuniqueid':{'type':Sequelize[_0x21c5('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x21c5('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x21c5('0x2')]},'transfer':{'type':Sequelize[_0x21c5('0x4')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x21c5('0x6')},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x21c5('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index ffada08..0fe0a16 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(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0xa9e0,0x123));var _0x0a9e=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xa9e0[_0x411add];return _0x238242;};'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(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c2a69,_0x4c8b41){_0x3c2a69=_0x3c2a69-0x0;var _0x596bc8=_0xa9e0[_0x3c2a69];return _0x596bc8;};'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 f98df68..bd8d8fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a5a=['moment','bluebird','path','rimraf','../../config/environment','VoiceAgentReport','report_agent','uniqueid','destuniqueid','util','../../config/logger','api'];(function(_0x5a8d65,_0x280985){var _0x33fbe5=function(_0x21d0f2){while(--_0x21d0f2){_0x5a8d65['push'](_0x5a8d65['shift']());}};_0x33fbe5(++_0x280985);}(_0x5a5a,0x1d1));var _0xa5a5=function(_0x2bc6a2,_0x44e6ea){_0x2bc6a2=_0x2bc6a2-0x0;var _0x50f1ce=_0x5a5a[_0x2bc6a2];return _0x50f1ce;};'use strict';var _=require('lodash');var util=require(_0xa5a5('0x0'));var logger=require(_0xa5a5('0x1'))(_0xa5a5('0x2'));var moment=require(_0xa5a5('0x3'));var BPromise=require(_0xa5a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa5a5('0x5'));var rimraf=require(_0xa5a5('0x6'));var config=require(_0xa5a5('0x7'));var attributes=require('./voiceAgentReport.attributes');module['exports']=function(_0x43943d,_0x1fe96d){return _0x43943d['define'](_0xa5a5('0x8'),attributes,{'tableName':_0xa5a5('0x9'),'paranoid':![],'indexes':[{'fields':[_0xa5a5('0xa'),_0xa5a5('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd13e=['lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid'];(function(_0xd22d95,_0xc59f8f){var _0x15d7a3=function(_0x3db95c){while(--_0x3db95c){_0xd22d95['push'](_0xd22d95['shift']());}};_0x15d7a3(++_0xc59f8f);}(_0xd13e,0x193));var _0xed13=function(_0x49038d,_0x581222){_0x49038d=_0x49038d-0x0;var _0x590c6c=_0xd13e[_0x49038d];return _0x590c6c;};'use strict';var _=require(_0xed13('0x0'));var util=require(_0xed13('0x1'));var logger=require(_0xed13('0x2'))(_0xed13('0x3'));var moment=require('moment');var BPromise=require(_0xed13('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xed13('0x5'));var rimraf=require('rimraf');var config=require(_0xed13('0x6'));var attributes=require(_0xed13('0x7'));module['exports']=function(_0x50de44,_0x5142bd){return _0x50de44[_0xed13('0x8')](_0xed13('0x9'),attributes,{'tableName':_0xed13('0xa'),'paranoid':![],'indexes':[{'fields':[_0xed13('0xb'),_0xed13('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 55bdba6..419d346 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3925=['body','options','raw','stringify','catch','UpdateVoiceAgentReport','VoiceAgentReport','update','where','limit','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','jayson/promise','client','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','CreateVoiceAgentReport','create'];(function(_0x36f87a,_0x27c613){var _0x2fe7ab=function(_0x44eb65){while(--_0x44eb65){_0x36f87a['push'](_0x36f87a['shift']());}};_0x2fe7ab(++_0x27c613);}(_0x3925,0x190));var _0x5392=function(_0x4bf457,_0x14dcf4){_0x4bf457=_0x4bf457-0x0;var _0x232be2=_0x3925[_0x4bf457];return _0x232be2;};'use strict';var _=require(_0x5392('0x0'));var util=require(_0x5392('0x1'));var moment=require('moment');var BPromise=require(_0x5392('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5392('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5392('0x4'));var logger=require(_0x5392('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x5392('0x6'));var client=jayson[_0x5392('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3dd984,_0x291def,_0x519f9c){return new BPromise(function(_0x2aae85,_0xb8542e){return client['request'](_0x3dd984,_0x519f9c)[_0x5392('0x8')](function(_0x1a1690){logger['info'](_0x5392('0x9'),_0x291def,_0x5392('0xa'));logger[_0x5392('0xb')](_0x5392('0xc'),_0x291def,_0x5392('0xa'),JSON['stringify'](_0x1a1690));if(_0x1a1690['error']){if(_0x1a1690[_0x5392('0xd')][_0x5392('0xe')]===0x1f4){logger[_0x5392('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x291def,_0x1a1690[_0x5392('0xd')][_0x5392('0xf')]);return _0xb8542e(_0x1a1690[_0x5392('0xd')][_0x5392('0xf')]);}logger['error'](_0x5392('0x9'),_0x291def,_0x1a1690[_0x5392('0xd')]['message']);return _0x2aae85(_0x1a1690[_0x5392('0xd')][_0x5392('0xf')]);}else{logger[_0x5392('0x10')](_0x5392('0x9'),_0x291def,'request\x20sent');_0x2aae85(_0x1a1690[_0x5392('0x11')]['message']);}})['catch'](function(_0x4cf3ab){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x291def,_0x4cf3ab);_0xb8542e(_0x4cf3ab);});});}exports[_0x5392('0x12')]=function(_0x2cf7b5){var _0x2574af=this;return new Promise(function(_0x5f3ca5,_0x4f2f1e){return db['VoiceAgentReport'][_0x5392('0x13')](_0x2cf7b5[_0x5392('0x14')],{'raw':_0x2cf7b5['options']?_0x2cf7b5[_0x5392('0x15')][_0x5392('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x4a0b9a){logger['info']('CreateVoiceAgentReport',_0x2cf7b5);logger[_0x5392('0xb')](_0x5392('0x12'),_0x2cf7b5,JSON[_0x5392('0x17')](_0x4a0b9a));_0x5f3ca5(_0x4a0b9a);})[_0x5392('0x18')](function(_0x5f4a3a){logger[_0x5392('0xd')]('CreateVoiceAgentReport',_0x5f4a3a['message'],_0x2cf7b5);_0x4f2f1e(_0x2574af[_0x5392('0xd')](0x1f4,_0x5f4a3a['message']));});});};exports[_0x5392('0x19')]=function(_0xcd404e){var _0x27d3f7=this;return new Promise(function(_0x2c3518,_0x194ac5){return db[_0x5392('0x1a')][_0x5392('0x1b')](_0xcd404e['body'],{'raw':_0xcd404e['options']?_0xcd404e[_0x5392('0x15')][_0x5392('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcd404e[_0x5392('0x15')]?_0xcd404e[_0x5392('0x15')][_0x5392('0x1c')]||null:null,'attributes':_0xcd404e[_0x5392('0x15')]?_0xcd404e[_0x5392('0x15')]['attributes']||null:null,'limit':_0xcd404e[_0x5392('0x15')]?_0xcd404e[_0x5392('0x15')][_0x5392('0x1d')]||null:null})[_0x5392('0x8')](function(_0xa16ec1){logger[_0x5392('0x10')]('UpdateVoiceAgentReport',_0xcd404e);logger[_0x5392('0xb')](_0x5392('0x19'),_0xcd404e,JSON[_0x5392('0x17')](_0xa16ec1));_0x2c3518(_0xa16ec1);})[_0x5392('0x18')](function(_0x10032f){logger[_0x5392('0xd')](_0x5392('0x19'),_0x10032f[_0x5392('0xf')],_0xcd404e);_0x194ac5(_0x27d3f7['error'](0x1f4,_0x10032f['message']));});});};
\ No newline at end of file
+var _0x2571=['stringify','error','message','info','catch','CreateVoiceAgentReport','VoiceAgentReport','create','options','raw','update','body','where','attributes','limit','UpdateVoiceAgentReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s'];(function(_0xda501a,_0x159d6a){var _0x44be3a=function(_0x5c1c5f){while(--_0x5c1c5f){_0xda501a['push'](_0xda501a['shift']());}};_0x44be3a(++_0x159d6a);}(_0x2571,0x1a8));var _0x1257=function(_0x3a2118,_0x31fc3c){_0x3a2118=_0x3a2118-0x0;var _0x1d181d=_0x2571[_0x3a2118];return _0x1d181d;};'use strict';var _=require('lodash');var util=require(_0x1257('0x0'));var moment=require(_0x1257('0x1'));var BPromise=require(_0x1257('0x2'));var rs=require(_0x1257('0x3'));var fs=require('fs');var Redis=require(_0x1257('0x4'));var db=require(_0x1257('0x5'))['db'];var utils=require(_0x1257('0x6'));var logger=require(_0x1257('0x7'))('rpc');var config=require(_0x1257('0x8'));var jayson=require(_0x1257('0x9'));var client=jayson[_0x1257('0xa')][_0x1257('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5345db,_0x5b4717,_0x4cf5ac){return new BPromise(function(_0x1b73a7,_0x1e58d7){return client[_0x1257('0xc')](_0x5345db,_0x4cf5ac)[_0x1257('0xd')](function(_0x898de5){logger['info'](_0x1257('0xe'),_0x5b4717,_0x1257('0xf'));logger[_0x1257('0x10')](_0x1257('0x11'),_0x5b4717,_0x1257('0xf'),JSON[_0x1257('0x12')](_0x898de5));if(_0x898de5[_0x1257('0x13')]){if(_0x898de5[_0x1257('0x13')]['code']===0x1f4){logger[_0x1257('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x5b4717,_0x898de5[_0x1257('0x13')][_0x1257('0x14')]);return _0x1e58d7(_0x898de5['error'][_0x1257('0x14')]);}logger[_0x1257('0x13')](_0x1257('0xe'),_0x5b4717,_0x898de5[_0x1257('0x13')][_0x1257('0x14')]);return _0x1b73a7(_0x898de5['error']['message']);}else{logger[_0x1257('0x15')](_0x1257('0xe'),_0x5b4717,_0x1257('0xf'));_0x1b73a7(_0x898de5['result']['message']);}})[_0x1257('0x16')](function(_0x17360a){logger[_0x1257('0x13')](_0x1257('0xe'),_0x5b4717,_0x17360a);_0x1e58d7(_0x17360a);});});}exports[_0x1257('0x17')]=function(_0x1a9be6){var _0x52e9d4=this;return new Promise(function(_0x14e2d3,_0x1826f4){return db[_0x1257('0x18')][_0x1257('0x19')](_0x1a9be6['body'],{'raw':_0x1a9be6['options']?_0x1a9be6[_0x1257('0x1a')][_0x1257('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x485848){logger['info'](_0x1257('0x17'),_0x1a9be6);logger[_0x1257('0x10')]('CreateVoiceAgentReport',_0x1a9be6,JSON[_0x1257('0x12')](_0x485848));_0x14e2d3(_0x485848);})[_0x1257('0x16')](function(_0x21bc43){logger[_0x1257('0x13')](_0x1257('0x17'),_0x21bc43[_0x1257('0x14')],_0x1a9be6);_0x1826f4(_0x52e9d4[_0x1257('0x13')](0x1f4,_0x21bc43[_0x1257('0x14')]));});});};exports['UpdateVoiceAgentReport']=function(_0x43475f){var _0x5a4d92=this;return new Promise(function(_0x226185,_0x40b295){return db[_0x1257('0x18')][_0x1257('0x1c')](_0x43475f[_0x1257('0x1d')],{'raw':_0x43475f[_0x1257('0x1a')]?_0x43475f['options'][_0x1257('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x43475f[_0x1257('0x1a')]?_0x43475f[_0x1257('0x1a')][_0x1257('0x1e')]||null:null,'attributes':_0x43475f[_0x1257('0x1a')]?_0x43475f['options'][_0x1257('0x1f')]||null:null,'limit':_0x43475f['options']?_0x43475f['options'][_0x1257('0x20')]||null:null})['then'](function(_0x30ae8e){logger['info']('UpdateVoiceAgentReport',_0x43475f);logger[_0x1257('0x10')](_0x1257('0x21'),_0x43475f,JSON[_0x1257('0x12')](_0x30ae8e));_0x226185(_0x30ae8e);})[_0x1257('0x16')](function(_0x12932f){logger[_0x1257('0x13')]('UpdateVoiceAgentReport',_0x12932f[_0x1257('0x14')],_0x43475f);_0x40b295(_0x5a4d92['error'](0x1f4,_0x12932f[_0x1257('0x14')]));});});};
\ No newline at end of file
index 033b9ed..23f68e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa630=['describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','express','fs-extra','../../components/interaction/service','../../config/environment','./voiceCallReport.controller','get','isAuthenticated','/describe'];(function(_0xbc5f6a,_0x530d8f){var _0x14af64=function(_0x2d55ed){while(--_0x2d55ed){_0xbc5f6a['push'](_0xbc5f6a['shift']());}};_0x14af64(++_0x530d8f);}(_0xa630,0xbe));var _0x0a63=function(_0x3a784d,_0x12aa89){_0x3a784d=_0x3a784d-0x0;var _0x5721d2=_0xa630[_0x3a784d];return _0x5721d2;};'use strict';var multer=require(_0x0a63('0x0'));var util=require(_0x0a63('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0a63('0x2'));var router=express['Router']();var fs_extra=require(_0x0a63('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x0a63('0x4'));var config=require(_0x0a63('0x5'));var controller=require(_0x0a63('0x6'));router[_0x0a63('0x7')]('/',auth[_0x0a63('0x8')](),controller['index']);router[_0x0a63('0x7')](_0x0a63('0x9'),auth[_0x0a63('0x8')](),controller[_0x0a63('0xa')]);router[_0x0a63('0x7')](_0x0a63('0xb'),auth['isAuthenticated'](),controller[_0x0a63('0xc')]);router[_0x0a63('0xd')]('/',auth[_0x0a63('0x8')](),controller[_0x0a63('0xe')]);router[_0x0a63('0xf')](_0x0a63('0xb'),auth[_0x0a63('0x8')](),controller[_0x0a63('0x10')]);router[_0x0a63('0x11')](_0x0a63('0xb'),auth['isAuthenticated'](),controller[_0x0a63('0x12')]);module[_0x0a63('0x13')]=router;
\ No newline at end of file
+var _0x0faf=['./voiceCallReport.controller','isAuthenticated','index','get','/describe','/:id','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4a3c1a,_0x3c5a20){var _0x579f73=function(_0x431f9c){while(--_0x431f9c){_0x4a3c1a['push'](_0x4a3c1a['shift']());}};_0x579f73(++_0x3c5a20);}(_0x0faf,0x132));var _0xf0fa=function(_0x59c683,_0x209444){_0x59c683=_0x59c683-0x0;var _0x47251b=_0x0faf[_0x59c683];return _0x47251b;};'use strict';var multer=require(_0xf0fa('0x0'));var util=require('util');var path=require(_0xf0fa('0x1'));var timeout=require(_0xf0fa('0x2'));var express=require(_0xf0fa('0x3'));var router=express[_0xf0fa('0x4')]();var fs_extra=require(_0xf0fa('0x5'));var auth=require(_0xf0fa('0x6'));var interaction=require(_0xf0fa('0x7'));var config=require(_0xf0fa('0x8'));var controller=require(_0xf0fa('0x9'));router['get']('/',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0xb')]);router[_0xf0fa('0xc')](_0xf0fa('0xd'),auth[_0xf0fa('0xa')](),controller['describe']);router[_0xf0fa('0xc')](_0xf0fa('0xe'),auth['isAuthenticated'](),controller['show']);router[_0xf0fa('0xf')]('/',auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x10')]);router[_0xf0fa('0x11')](_0xf0fa('0xe'),auth[_0xf0fa('0xa')](),controller[_0xf0fa('0x12')]);router[_0xf0fa('0x13')]('/:id',auth[_0xf0fa('0xa')](),controller['destroy']);module[_0xf0fa('0x14')]=router;
\ No newline at end of file
index cb3a9e6..afb084f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8281=['inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','STRING','ENUM','internal','outbound'];(function(_0x101595,_0x1748af){var _0x1198ae=function(_0x443d08){while(--_0x443d08){_0x101595['push'](_0x101595['shift']());}};_0x1198ae(++_0x1748af);}(_0x8281,0x182));var _0x1828=function(_0x114af9,_0x31df82){_0x114af9=_0x114af9-0x0;var _0x249bc0=_0x8281[_0x114af9];return _0x249bc0;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x1828('0x0')]},'type':{'type':Sequelize[_0x1828('0x1')]('inbound',_0x1828('0x2'),_0x1828('0x3'),_0x1828('0x4'),_0x1828('0x5'),_0x1828('0x6'))},'tag':{'type':Sequelize[_0x1828('0x0')]},'accountcode':{'type':Sequelize[_0x1828('0x0')]},'source':{'type':Sequelize[_0x1828('0x0')]},'destination':{'type':Sequelize[_0x1828('0x0')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x1828('0x0')]},'channel':{'type':Sequelize[_0x1828('0x0')]},'destinationchannel':{'type':Sequelize[_0x1828('0x0')]},'lastapplication':{'type':Sequelize[_0x1828('0x0')]},'lastdata':{'type':Sequelize[_0x1828('0x7')]},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x1828('0x8')]},'answertime':{'type':Sequelize[_0x1828('0x8')]},'endtime':{'type':Sequelize[_0x1828('0x8')]},'duration':{'type':Sequelize[_0x1828('0x9')]},'billableseconds':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x1828('0x9')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1828('0x0')]},'amaflags':{'type':Sequelize[_0x1828('0x0')]},'userfield':{'type':Sequelize[_0x1828('0x0')]},'userDisposition':{'type':Sequelize[_0x1828('0x0')]},'userSecondDisposition':{'type':Sequelize[_0x1828('0x0')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1828('0x0')]},'prefix':{'type':Sequelize[_0x1828('0x0')]},'routeid':{'type':Sequelize[_0x1828('0x9')]},'sipcallid':{'type':Sequelize[_0x1828('0x0')]}};
\ No newline at end of file
+var _0x0135=['inbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM'];(function(_0xca5e9e,_0x3841aa){var _0x3769de=function(_0x52b726){while(--_0x52b726){_0xca5e9e['push'](_0xca5e9e['shift']());}};_0x3769de(++_0x3841aa);}(_0x0135,0x188));var _0x5013=function(_0x3092de,_0x3e5a5a){_0x3092de=_0x3092de-0x0;var _0x47e79f=_0x0135[_0x3092de];return _0x47e79f;};'use strict';var Sequelize=require(_0x5013('0x0'));module[_0x5013('0x1')]={'uniqueid':{'type':Sequelize[_0x5013('0x2')]},'type':{'type':Sequelize[_0x5013('0x3')]('inbound','internal','outbound',_0x5013('0x4'),'outbound-fax',_0x5013('0x5'))},'tag':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x5013('0x2')]},'source':{'type':Sequelize[_0x5013('0x2')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5013('0x2')]},'destinationchannel':{'type':Sequelize[_0x5013('0x2')]},'lastapplication':{'type':Sequelize[_0x5013('0x2')]},'lastdata':{'type':Sequelize[_0x5013('0x6')]},'starttime':{'type':Sequelize[_0x5013('0x7')]},'systemanswertime':{'type':Sequelize[_0x5013('0x7')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize['DATE']},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x5013('0x8')]},'mohtime':{'type':Sequelize[_0x5013('0x8')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x5013('0x2')]},'amaflags':{'type':Sequelize[_0x5013('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0x5013('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x5013('0x2')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x5013('0x2')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize[_0x5013('0x8')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2b4c95a..e4f47bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x3b19ea,_0x518b6b){var _0x40ece9=function(_0x3a3386){while(--_0x3a3386){_0x3b19ea['push'](_0x3b19ea['shift']());}};_0x40ece9(++_0x518b6b);}(_0x5f2f,0x73));var _0xf5f2=function(_0x5f0bf6,_0x277825){_0x5f0bf6=_0x5f0bf6-0x0;var _0x213dcf=_0x5f2f[_0x5f0bf6];return _0x213dcf;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
+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(_0x51b661,_0x566ef8){var _0x5d1971=function(_0x5cc6b8){while(--_0x5cc6b8){_0x51b661['push'](_0x51b661['shift']());}};_0x5d1971(++_0x566ef8);}(_0xadb5,0xad));var _0x5adb=function(_0x2dfd28,_0x33396f){_0x2dfd28=_0x2dfd28-0x0;var _0x43dfce=_0xadb5[_0x2dfd28];return _0x43dfce;};'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
index 9b50b7b..468b25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc220=['../../config/logger','api','moment','path','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport','uniqueid','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc220,0xfa));var _0x0c22=function(_0x277a55,_0x3ba560){_0x277a55=_0x277a55-0x0;var _0x301186=_0xc220[_0x277a55];return _0x301186;};'use strict';var _=require(_0x0c22('0x0'));var util=require(_0x0c22('0x1'));var logger=require(_0x0c22('0x2'))(_0x0c22('0x3'));var moment=require(_0x0c22('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0c22('0x5'));var rimraf=require('rimraf');var config=require(_0x0c22('0x6'));var attributes=require(_0x0c22('0x7'));module[_0x0c22('0x8')]=function(_0x3588da,_0x484c1b){return _0x3588da[_0x0c22('0x9')](_0x0c22('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x0c22('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x78cd=['report_call','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes','define'];(function(_0x98d7f2,_0x110b43){var _0x542cfe=function(_0x17e172){while(--_0x17e172){_0x98d7f2['push'](_0x98d7f2['shift']());}};_0x542cfe(++_0x110b43);}(_0x78cd,0x114));var _0xd78c=function(_0x23c5a8,_0x231dcd){_0x23c5a8=_0x23c5a8-0x0;var _0x3ba1b0=_0x78cd[_0x23c5a8];return _0x3ba1b0;};'use strict';var _=require('lodash');var util=require(_0xd78c('0x0'));var logger=require('../../config/logger')(_0xd78c('0x1'));var moment=require(_0xd78c('0x2'));var BPromise=require(_0xd78c('0x3'));var rp=require(_0xd78c('0x4'));var fs=require('fs');var path=require(_0xd78c('0x5'));var rimraf=require(_0xd78c('0x6'));var config=require(_0xd78c('0x7'));var attributes=require(_0xd78c('0x8'));module['exports']=function(_0x2866d3,_0x1d1ee2){return _0x2866d3[_0xd78c('0x9')]('VoiceCallReport',attributes,{'tableName':_0xd78c('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 38442b7..2053dd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6446=['UpdateVoiceCallReport','update','where','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceCallReport,\x20%s,\x20%s','message','result','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','limit','include','model','map','attributes','CreateVoiceCallReport','create','body'];(function(_0x2417eb,_0x3fc6b1){var _0xfb449c=function(_0x20b4e0){while(--_0x20b4e0){_0x2417eb['push'](_0x2417eb['shift']());}};_0xfb449c(++_0x3fc6b1);}(_0x6446,0x1a5));var _0x6644=function(_0x5e7692,_0x1caa40){_0x5e7692=_0x5e7692-0x0;var _0x120367=_0x6446[_0x5e7692];return _0x120367;};'use strict';var _=require(_0x6644('0x0'));var util=require(_0x6644('0x1'));var moment=require('moment');var BPromise=require(_0x6644('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6644('0x3'));var db=require(_0x6644('0x4'))['db'];var utils=require(_0x6644('0x5'));var logger=require(_0x6644('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6644('0x7'));var client=jayson[_0x6644('0x8')][_0x6644('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x505f89,_0x4b460d,_0x5c5071){return new BPromise(function(_0x7d9b8f,_0x34d669){return client[_0x6644('0xa')](_0x505f89,_0x5c5071)[_0x6644('0xb')](function(_0x2a54a1){logger[_0x6644('0xc')]('VoiceCallReport,\x20%s,\x20%s',_0x4b460d,_0x6644('0xd'));logger[_0x6644('0xe')](_0x6644('0xf'),_0x4b460d,_0x6644('0xd'),JSON[_0x6644('0x10')](_0x2a54a1));if(_0x2a54a1[_0x6644('0x11')]){if(_0x2a54a1[_0x6644('0x11')]['code']===0x1f4){logger[_0x6644('0x11')](_0x6644('0x12'),_0x4b460d,_0x2a54a1[_0x6644('0x11')]['message']);return _0x34d669(_0x2a54a1[_0x6644('0x11')]['message']);}logger[_0x6644('0x11')](_0x6644('0x12'),_0x4b460d,_0x2a54a1['error'][_0x6644('0x13')]);return _0x7d9b8f(_0x2a54a1[_0x6644('0x11')][_0x6644('0x13')]);}else{logger[_0x6644('0xc')](_0x6644('0x12'),_0x4b460d,_0x6644('0xd'));_0x7d9b8f(_0x2a54a1[_0x6644('0x14')]['message']);}})[_0x6644('0x15')](function(_0x5da33e){logger[_0x6644('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x4b460d,_0x5da33e);_0x34d669(_0x5da33e);});});}exports[_0x6644('0x16')]=function(_0x3f32e4){var _0x28ef6c=this;return new Promise(function(_0x511406,_0x477c8d){return db[_0x6644('0x17')][_0x6644('0x18')]({'raw':_0x3f32e4[_0x6644('0x19')]?_0x3f32e4[_0x6644('0x19')][_0x6644('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f32e4[_0x6644('0x19')]?_0x3f32e4[_0x6644('0x19')]['where']||null:null,'attributes':_0x3f32e4[_0x6644('0x19')]?_0x3f32e4[_0x6644('0x19')]['attributes']||null:null,'limit':_0x3f32e4[_0x6644('0x19')]?_0x3f32e4[_0x6644('0x19')][_0x6644('0x1b')]||null:null,'include':_0x3f32e4[_0x6644('0x19')]?_0x3f32e4[_0x6644('0x19')][_0x6644('0x1c')]?_['map'](_0x3f32e4[_0x6644('0x19')][_0x6644('0x1c')],function(_0x26dd3f){return{'model':db[_0x26dd3f[_0x6644('0x1d')]],'as':_0x26dd3f['as'],'attributes':_0x26dd3f['attributes'],'include':_0x26dd3f[_0x6644('0x1c')]?_[_0x6644('0x1e')](_0x26dd3f[_0x6644('0x1c')],function(_0x4b5d06){return{'model':db[_0x4b5d06['model']],'as':_0x4b5d06['as'],'attributes':_0x4b5d06[_0x6644('0x1f')],'include':_0x4b5d06[_0x6644('0x1c')]?_[_0x6644('0x1e')](_0x4b5d06[_0x6644('0x1c')],function(_0x1df84e){return{'model':db[_0x1df84e['model']],'as':_0x1df84e['as'],'attributes':_0x1df84e[_0x6644('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6644('0xb')](function(_0x321404){logger[_0x6644('0xc')](_0x6644('0x16'),_0x3f32e4);logger[_0x6644('0xe')](_0x6644('0x16'),_0x3f32e4,JSON[_0x6644('0x10')](_0x321404));_0x511406(_0x321404);})[_0x6644('0x15')](function(_0x521764){logger[_0x6644('0x11')](_0x6644('0x16'),_0x521764[_0x6644('0x13')],_0x3f32e4);_0x477c8d(_0x28ef6c[_0x6644('0x11')](0x1f4,_0x521764[_0x6644('0x13')]));});});};exports[_0x6644('0x20')]=function(_0x1b2458){var _0x39c932=this;return new Promise(function(_0x651995,_0x2539a2){return db[_0x6644('0x17')][_0x6644('0x21')](_0x1b2458[_0x6644('0x22')],{'raw':_0x1b2458[_0x6644('0x19')]?_0x1b2458[_0x6644('0x19')][_0x6644('0x1a')]===undefined?!![]:![]:!![]})[_0x6644('0xb')](function(_0x387b12){logger[_0x6644('0xc')](_0x6644('0x20'),_0x1b2458);logger[_0x6644('0xe')](_0x6644('0x20'),_0x1b2458,JSON[_0x6644('0x10')](_0x387b12));_0x651995(_0x387b12);})['catch'](function(_0x1247d8){logger[_0x6644('0x11')](_0x6644('0x20'),_0x1247d8[_0x6644('0x13')],_0x1b2458);_0x2539a2(_0x39c932['error'](0x1f4,_0x1247d8[_0x6644('0x13')]));});});};exports[_0x6644('0x23')]=function(_0x3d3f3a){var _0x19f90d=this;return new Promise(function(_0x21b49c,_0x102fdf){return db[_0x6644('0x17')][_0x6644('0x24')](_0x3d3f3a[_0x6644('0x22')],{'raw':_0x3d3f3a[_0x6644('0x19')]?_0x3d3f3a[_0x6644('0x19')][_0x6644('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3d3f3a['options']?_0x3d3f3a[_0x6644('0x19')][_0x6644('0x25')]||null:null,'attributes':_0x3d3f3a[_0x6644('0x19')]?_0x3d3f3a[_0x6644('0x19')][_0x6644('0x1f')]||null:null,'limit':_0x3d3f3a[_0x6644('0x19')]?_0x3d3f3a[_0x6644('0x19')][_0x6644('0x1b')]||null:null})[_0x6644('0xb')](function(_0x4e06bc){logger['info'](_0x6644('0x23'),_0x3d3f3a);logger[_0x6644('0xe')]('UpdateVoiceCallReport',_0x3d3f3a,JSON[_0x6644('0x10')](_0x4e06bc));_0x21b49c(_0x4e06bc);})[_0x6644('0x15')](function(_0x2383b2){logger[_0x6644('0x11')](_0x6644('0x23'),_0x2383b2['message'],_0x3d3f3a);_0x102fdf(_0x19f90d[_0x6644('0x11')](0x1f4,_0x2383b2[_0x6644('0x13')]));});});};
\ No newline at end of file
+var _0xdd8f=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetVoiceCallReport','options','raw','where','attributes','include','map','model','CreateVoiceCallReport','VoiceCallReport','create','body','update','limit','UpdateVoiceCallReport','stringify','lodash','moment','bluebird','randomstring','ioredis'];(function(_0x1a0cda,_0x508c72){var _0x3a4efa=function(_0x1c3a54){while(--_0x1c3a54){_0x1a0cda['push'](_0x1a0cda['shift']());}};_0x3a4efa(++_0x508c72);}(_0xdd8f,0x1a8));var _0xfdd8=function(_0xd02d51,_0x17305f){_0xd02d51=_0xd02d51-0x0;var _0x3946d2=_0xdd8f[_0xd02d51];return _0x3946d2;};'use strict';var _=require(_0xfdd8('0x0'));var util=require('util');var moment=require(_0xfdd8('0x1'));var BPromise=require(_0xfdd8('0x2'));var rs=require(_0xfdd8('0x3'));var fs=require('fs');var Redis=require(_0xfdd8('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfdd8('0x5'));var logger=require(_0xfdd8('0x6'))(_0xfdd8('0x7'));var config=require(_0xfdd8('0x8'));var jayson=require(_0xfdd8('0x9'));var client=jayson[_0xfdd8('0xa')][_0xfdd8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12d1c9,_0x237283,_0x24b84f){return new BPromise(function(_0x2af910,_0x547f44){return client['request'](_0x12d1c9,_0x24b84f)[_0xfdd8('0xc')](function(_0x3d0f9e){logger[_0xfdd8('0xd')](_0xfdd8('0xe'),_0x237283,_0xfdd8('0xf'));logger[_0xfdd8('0x10')](_0xfdd8('0x11'),_0x237283,_0xfdd8('0xf'),JSON['stringify'](_0x3d0f9e));if(_0x3d0f9e[_0xfdd8('0x12')]){if(_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x13')]===0x1f4){logger[_0xfdd8('0x12')](_0xfdd8('0xe'),_0x237283,_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x14')]);return _0x547f44(_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x14')]);}logger[_0xfdd8('0x12')](_0xfdd8('0xe'),_0x237283,_0x3d0f9e['error']['message']);return _0x2af910(_0x3d0f9e[_0xfdd8('0x12')][_0xfdd8('0x14')]);}else{logger[_0xfdd8('0xd')]('VoiceCallReport,\x20%s,\x20%s',_0x237283,_0xfdd8('0xf'));_0x2af910(_0x3d0f9e[_0xfdd8('0x15')][_0xfdd8('0x14')]);}})[_0xfdd8('0x16')](function(_0x125538){logger[_0xfdd8('0x12')](_0xfdd8('0xe'),_0x237283,_0x125538);_0x547f44(_0x125538);});});}exports[_0xfdd8('0x17')]=function(_0x3fc361){var _0x123145=this;return new Promise(function(_0x3a1d79,_0xa5e86b){return db['VoiceCallReport']['findAll']({'raw':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x19')]===undefined?!![]:![]:!![],'where':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361['options'][_0xfdd8('0x1a')]||null:null,'attributes':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x1b')]||null:null,'limit':_0x3fc361['options']?_0x3fc361[_0xfdd8('0x18')]['limit']||null:null,'include':_0x3fc361[_0xfdd8('0x18')]?_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x1c')]?_[_0xfdd8('0x1d')](_0x3fc361[_0xfdd8('0x18')][_0xfdd8('0x1c')],function(_0x47d00c){return{'model':db[_0x47d00c[_0xfdd8('0x1e')]],'as':_0x47d00c['as'],'attributes':_0x47d00c['attributes'],'include':_0x47d00c[_0xfdd8('0x1c')]?_[_0xfdd8('0x1d')](_0x47d00c['include'],function(_0x391199){return{'model':db[_0x391199['model']],'as':_0x391199['as'],'attributes':_0x391199[_0xfdd8('0x1b')],'include':_0x391199[_0xfdd8('0x1c')]?_[_0xfdd8('0x1d')](_0x391199[_0xfdd8('0x1c')],function(_0x325425){return{'model':db[_0x325425['model']],'as':_0x325425['as'],'attributes':_0x325425[_0xfdd8('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xfdd8('0xc')](function(_0xed21c6){logger[_0xfdd8('0xd')](_0xfdd8('0x17'),_0x3fc361);logger['debug'](_0xfdd8('0x17'),_0x3fc361,JSON['stringify'](_0xed21c6));_0x3a1d79(_0xed21c6);})[_0xfdd8('0x16')](function(_0xe68544){logger['error']('GetVoiceCallReport',_0xe68544[_0xfdd8('0x14')],_0x3fc361);_0xa5e86b(_0x123145[_0xfdd8('0x12')](0x1f4,_0xe68544[_0xfdd8('0x14')]));});});};exports[_0xfdd8('0x1f')]=function(_0x171af7){var _0x5684a6=this;return new Promise(function(_0x37fc8e,_0x5a72e2){return db[_0xfdd8('0x20')][_0xfdd8('0x21')](_0x171af7[_0xfdd8('0x22')],{'raw':_0x171af7[_0xfdd8('0x18')]?_0x171af7[_0xfdd8('0x18')][_0xfdd8('0x19')]===undefined?!![]:![]:!![]})[_0xfdd8('0xc')](function(_0x5045c2){logger[_0xfdd8('0xd')](_0xfdd8('0x1f'),_0x171af7);logger[_0xfdd8('0x10')](_0xfdd8('0x1f'),_0x171af7,JSON['stringify'](_0x5045c2));_0x37fc8e(_0x5045c2);})[_0xfdd8('0x16')](function(_0x2104a0){logger['error'](_0xfdd8('0x1f'),_0x2104a0['message'],_0x171af7);_0x5a72e2(_0x5684a6[_0xfdd8('0x12')](0x1f4,_0x2104a0[_0xfdd8('0x14')]));});});};exports['UpdateVoiceCallReport']=function(_0x11baee){var _0xbacbe7=this;return new Promise(function(_0x1ba253,_0x28cfc4){return db['VoiceCallReport'][_0xfdd8('0x23')](_0x11baee['body'],{'raw':_0x11baee['options']?_0x11baee[_0xfdd8('0x18')][_0xfdd8('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x11baee[_0xfdd8('0x18')]?_0x11baee[_0xfdd8('0x18')]['where']||null:null,'attributes':_0x11baee['options']?_0x11baee[_0xfdd8('0x18')][_0xfdd8('0x1b')]||null:null,'limit':_0x11baee['options']?_0x11baee[_0xfdd8('0x18')][_0xfdd8('0x24')]||null:null})[_0xfdd8('0xc')](function(_0x486e83){logger['info'](_0xfdd8('0x25'),_0x11baee);logger['debug']('UpdateVoiceCallReport',_0x11baee,JSON[_0xfdd8('0x26')](_0x486e83));_0x1ba253(_0x486e83);})[_0xfdd8('0x16')](function(_0x3a60cb){logger[_0xfdd8('0x12')](_0xfdd8('0x25'),_0x3a60cb[_0xfdd8('0x14')],_0x11baee);_0x28cfc4(_0xbacbe7[_0xfdd8('0x12')](0x1f4,_0x3a60cb[_0xfdd8('0x14')]));});});};
\ No newline at end of file
index bf21541..3d046ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x492b=['multer','path','express','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','/:id','show','post','create','update','destroy'];(function(_0x2ec7f2,_0xe24da3){var _0x29de00=function(_0x383338){while(--_0x383338){_0x2ec7f2['push'](_0x2ec7f2['shift']());}};_0x29de00(++_0xe24da3);}(_0x492b,0x1ea));var _0xb492=function(_0x116967,_0x302d8c){_0x116967=_0x116967-0x0;var _0x349f96=_0x492b[_0x116967];return _0x349f96;};'use strict';var multer=require(_0xb492('0x0'));var util=require('util');var path=require(_0xb492('0x1'));var timeout=require('connect-timeout');var express=require(_0xb492('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb492('0x3'));var config=require(_0xb492('0x4'));var controller=require(_0xb492('0x5'));router[_0xb492('0x6')]('/',auth[_0xb492('0x7')](),controller['index']);router['get'](_0xb492('0x8'),auth[_0xb492('0x7')](),controller[_0xb492('0x9')]);router[_0xb492('0xa')]('/',auth[_0xb492('0x7')](),controller[_0xb492('0xb')]);router['put'](_0xb492('0x8'),auth[_0xb492('0x7')](),controller[_0xb492('0xc')]);router['delete'](_0xb492('0x8'),auth[_0xb492('0x7')](),controller[_0xb492('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xf791=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','delete'];(function(_0x46fffa,_0x33761a){var _0x4f035e=function(_0x2a6159){while(--_0x2a6159){_0x46fffa['push'](_0x46fffa['shift']());}};_0x4f035e(++_0x33761a);}(_0xf791,0xf0));var _0x1f79=function(_0x22889a,_0x4b75f7){_0x22889a=_0x22889a-0x0;var _0x763d34=_0xf791[_0x22889a];return _0x763d34;};'use strict';var multer=require('multer');var util=require(_0x1f79('0x0'));var path=require(_0x1f79('0x1'));var timeout=require(_0x1f79('0x2'));var express=require('express');var router=express[_0x1f79('0x3')]();var fs_extra=require(_0x1f79('0x4'));var auth=require(_0x1f79('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1f79('0x6'));var controller=require('./voiceChanSpy.controller');router[_0x1f79('0x7')]('/',auth[_0x1f79('0x8')](),controller[_0x1f79('0x9')]);router[_0x1f79('0x7')](_0x1f79('0xa'),auth[_0x1f79('0x8')](),controller[_0x1f79('0xb')]);router[_0x1f79('0xc')]('/',auth['isAuthenticated'](),controller[_0x1f79('0xd')]);router[_0x1f79('0xe')](_0x1f79('0xa'),auth[_0x1f79('0x8')](),controller['update']);router[_0x1f79('0xf')](_0x1f79('0xa'),auth[_0x1f79('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2b6f733..2e487ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5990=['join','getDataValue','BOOLEAN','sequelize','exports','STRING','name','setDataValue','options'];(function(_0x2a9b9b,_0x14c245){var _0x5139a8=function(_0x2c72a3){while(--_0x2c72a3){_0x2a9b9b['push'](_0x2a9b9b['shift']());}};_0x5139a8(++_0x14c245);}(_0x5990,0x66));var _0x0599=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5990[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x0599('0x0'));module[_0x0599('0x1')]={'name':{'type':Sequelize[_0x0599('0x2')]},'prefix':{'type':Sequelize[_0x0599('0x2')],'unique':_0x0599('0x3'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x41b7c1){this[_0x0599('0x4')](_0x0599('0x5'),_0x41b7c1?_0x41b7c1[_0x0599('0x6')](''):[]);},'get':function(){return this[_0x0599('0x7')](_0x0599('0x5'))?this[_0x0599('0x7')](_0x0599('0x5'))['split'](''):[];}},'auth':{'type':Sequelize[_0x0599('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x0599('0x2')]},'record':{'type':Sequelize[_0x0599('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x0599('0x2')]},'description':{'type':Sequelize[_0x0599('0x2')]}};
\ No newline at end of file
+var _0xa89e=['options','getDataValue','split','BOOLEAN','sequelize','exports','STRING','join'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0xa89e,0x8c));var _0xea89=function(_0x188395,_0x8b7305){_0x188395=_0x188395-0x0;var _0x4cd1b4=_0xa89e[_0x188395];return _0x4cd1b4;};'use strict';var Sequelize=require(_0xea89('0x0'));module[_0xea89('0x1')]={'name':{'type':Sequelize[_0xea89('0x2')]},'prefix':{'type':Sequelize[_0xea89('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x31c220){this['setDataValue']('options',_0x31c220?_0x31c220[_0xea89('0x3')](''):[]);},'get':function(){return this['getDataValue'](_0xea89('0x4'))?this[_0xea89('0x5')](_0xea89('0x4'))[_0xea89('0x6')](''):[];}},'auth':{'type':Sequelize[_0xea89('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xea89('0x2')]},'record':{'type':Sequelize[_0xea89('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xea89('0x2')]}};
\ No newline at end of file
index 29a7f80..60ded87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc9d=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ChanSpies','UserProfileSection','userProfileId','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','save','update','destroy','then','get','UserProfileResource','stack','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','name','options','include','VoiceChanSpy','findAll','rows','params','fields','includeAll','find'];(function(_0x272b4c,_0x40f5d0){var _0x2bfe47=function(_0x421572){while(--_0x421572){_0x272b4c['push'](_0x272b4c['shift']());}};_0x2bfe47(++_0x40f5d0);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x3513fc,_0x46f835){_0x3513fc=_0x3513fc-0x0;var _0x4168f7=_0xbc9d[_0x3513fc];return _0x4168f7;};'use strict';var emlformat=require(_0xdbc9('0x0'));var rimraf=require(_0xdbc9('0x1'));var zipdir=require(_0xdbc9('0x2'));var jsonpatch=require(_0xdbc9('0x3'));var rp=require(_0xdbc9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xdbc9('0x5'));var path=require(_0xdbc9('0x6'));var sox=require(_0xdbc9('0x7'));var csv=require(_0xdbc9('0x8'));var ejs=require(_0xdbc9('0x9'));var fs=require('fs');var fs_extra=require(_0xdbc9('0xa'));var _=require(_0xdbc9('0xb'));var squel=require('squel');var crypto=require(_0xdbc9('0xc'));var jsforce=require(_0xdbc9('0xd'));var deskjs=require(_0xdbc9('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdbc9('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xdbc9('0x10'));var qs=require(_0xdbc9('0x11'));var as=require(_0xdbc9('0x12'));var hardwareService=require(_0xdbc9('0x13'));var logger=require('../../config/logger')(_0xdbc9('0x14'));var utils=require(_0xdbc9('0x15'));var config=require(_0xdbc9('0x16'));var licenseUtil=require(_0xdbc9('0x17'));var db=require(_0xdbc9('0x18'))['db'];function respondWithStatusCode(_0x103d54,_0x48bc83){_0x48bc83=_0x48bc83||0xcc;return function(_0x567e71){if(_0x567e71){return _0x103d54[_0xdbc9('0x19')](_0x48bc83);}return _0x103d54[_0xdbc9('0x1a')](_0x48bc83)[_0xdbc9('0x1b')]();};}function respondWithResult(_0x436e50,_0x53495d){_0x53495d=_0x53495d||0xc8;return function(_0x4a9dcb){if(_0x4a9dcb){return _0x436e50[_0xdbc9('0x1a')](_0x53495d)[_0xdbc9('0x1c')](_0x4a9dcb);}};}function respondWithFilteredResult(_0x3a8a7b,_0x4c7b4f){return function(_0x1b4616){if(_0x1b4616){var _0x1abee8=typeof _0x4c7b4f['offset']===_0xdbc9('0x1d')&&typeof _0x4c7b4f[_0xdbc9('0x1e')]===_0xdbc9('0x1d');var _0x14e655=_0x1b4616[_0xdbc9('0x1f')];var _0x33f1bd=_0x1abee8?0x0:_0x4c7b4f[_0xdbc9('0x20')];var _0xc2ddd2=_0x1abee8?_0x1b4616[_0xdbc9('0x1f')]:_0x4c7b4f[_0xdbc9('0x20')]+_0x4c7b4f['limit'];var _0x1ca5fd;if(_0xc2ddd2>=_0x14e655){_0xc2ddd2=_0x14e655;_0x1ca5fd=0xc8;}else{_0x1ca5fd=0xce;}_0x3a8a7b['status'](_0x1ca5fd);return _0x3a8a7b[_0xdbc9('0x21')](_0xdbc9('0x22'),_0x33f1bd+'-'+_0xc2ddd2+'/'+_0x14e655)['json'](_0x1b4616);}return null;};}function patchUpdates(_0x4408e9){return function(_0x5367dc){try{jsonpatch['apply'](_0x5367dc,_0x4408e9,!![]);}catch(_0x4ab00d){return BPromise['reject'](_0x4ab00d);}return _0x5367dc[_0xdbc9('0x23')]();};}function saveUpdates(_0x2011a2,_0x570ad9){return function(_0x16dcf7){if(_0x16dcf7){return _0x16dcf7[_0xdbc9('0x24')](_0x2011a2)['then'](function(_0x1bc073){return _0x1bc073;});}return null;};}function removeEntity(_0x6b788,_0x1b1c0d){return function(_0x119230){if(_0x119230){return _0x119230[_0xdbc9('0x25')]()[_0xdbc9('0x26')](function(){var _0x32822f=_0x119230[_0xdbc9('0x27')]({'plain':!![]});var _0x3c8c1d='ChanSpies';return db[_0xdbc9('0x28')][_0xdbc9('0x25')]({'where':{'type':_0x3c8c1d,'resourceId':_0x32822f['id']}})[_0xdbc9('0x26')](function(){return _0x119230;});})[_0xdbc9('0x26')](function(){_0x6b788[_0xdbc9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xf121e9,_0x2ee00a){return function(_0x5300bd){if(!_0x5300bd){_0xf121e9['sendStatus'](0x194);}return _0x5300bd;};}function handleError(_0x45aebe,_0x278db2){_0x278db2=_0x278db2||0x1f4;return function(_0x473430){logger['error'](_0x473430[_0xdbc9('0x29')]);if(_0x473430['name']){delete _0x473430['name'];}_0x45aebe[_0xdbc9('0x1a')](_0x278db2)['send'](_0x473430);};}exports['index']=function(_0x417b17,_0x20eb4f){var _0x1cb557={},_0x4db824={},_0x35eaf8={'count':0x0,'rows':[]};var _0x22f8aa=_['map'](db['VoiceChanSpy'][_0xdbc9('0x2a')],function(_0x245496){return{'name':_0x245496[_0xdbc9('0x2b')],'type':_0x245496[_0xdbc9('0x2c')][_0xdbc9('0x2d')]};});_0x4db824[_0xdbc9('0x2e')]=_[_0xdbc9('0x2f')](_0x22f8aa,'name');_0x4db824[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x417b17[_0xdbc9('0x30')]);_0x4db824[_0xdbc9('0x32')]=_[_0xdbc9('0x33')](_0x4db824[_0xdbc9('0x2e')],_0x4db824['query']);_0x1cb557[_0xdbc9('0x34')]=_['intersection'](_0x4db824['model'],qs['fields'](_0x417b17['query']['fields']));_0x1cb557[_0xdbc9('0x34')]=_0x1cb557[_0xdbc9('0x34')][_0xdbc9('0x35')]?_0x1cb557['attributes']:_0x4db824[_0xdbc9('0x2e')];if(!_0x417b17[_0xdbc9('0x30')][_0xdbc9('0x36')](_0xdbc9('0x37'))){_0x1cb557[_0xdbc9('0x1e')]=qs[_0xdbc9('0x1e')](_0x417b17['query'][_0xdbc9('0x1e')]);_0x1cb557[_0xdbc9('0x20')]=qs[_0xdbc9('0x20')](_0x417b17['query'][_0xdbc9('0x20')]);}_0x1cb557[_0xdbc9('0x38')]=qs[_0xdbc9('0x39')](_0x417b17[_0xdbc9('0x30')]['sort']);_0x1cb557['where']=qs[_0xdbc9('0x32')](_[_0xdbc9('0x3a')](_0x417b17[_0xdbc9('0x30')],_0x4db824[_0xdbc9('0x32')]),_0x22f8aa);if(_0x417b17['query'][_0xdbc9('0x3b')]){_0x1cb557[_0xdbc9('0x3c')]=_[_0xdbc9('0x3d')](_0x1cb557['where'],{'$or':_[_0xdbc9('0x2f')](_0x22f8aa,function(_0x38a2a7){if(_0x38a2a7[_0xdbc9('0x2c')]!=='VIRTUAL'){var _0xa11bc8={};_0xa11bc8[_0x38a2a7[_0xdbc9('0x3e')]]={'$like':'%'+_0x417b17['query']['filter']+'%'};return _0xa11bc8;}})});}_0x1cb557=_[_0xdbc9('0x3d')]({},_0x1cb557,_0x417b17[_0xdbc9('0x3f')]);var _0x387b57={'where':_0x1cb557[_0xdbc9('0x3c')]};return db['VoiceChanSpy'][_0xdbc9('0x1f')](_0x387b57)[_0xdbc9('0x26')](function(_0x577725){_0x35eaf8[_0xdbc9('0x1f')]=_0x577725;if(_0x417b17[_0xdbc9('0x30')]['includeAll']){_0x1cb557[_0xdbc9('0x40')]=[{'all':!![]}];}return db[_0xdbc9('0x41')][_0xdbc9('0x42')](_0x1cb557);})[_0xdbc9('0x26')](function(_0x3ed4de){_0x35eaf8[_0xdbc9('0x43')]=_0x3ed4de;return _0x35eaf8;})[_0xdbc9('0x26')](respondWithFilteredResult(_0x20eb4f,_0x1cb557))['catch'](handleError(_0x20eb4f,null));};exports['show']=function(_0x768856,_0x3b8437){var _0xc77676={'raw':![],'where':{'id':_0x768856[_0xdbc9('0x44')]['id']}},_0x41f56a={};_0x41f56a[_0xdbc9('0x2e')]=_[_0xdbc9('0x31')](db[_0xdbc9('0x41')][_0xdbc9('0x2a')]);_0x41f56a[_0xdbc9('0x30')]=_[_0xdbc9('0x31')](_0x768856['query']);_0x41f56a['filters']=_[_0xdbc9('0x33')](_0x41f56a[_0xdbc9('0x2e')],_0x41f56a[_0xdbc9('0x30')]);_0xc77676[_0xdbc9('0x34')]=_[_0xdbc9('0x33')](_0x41f56a[_0xdbc9('0x2e')],qs[_0xdbc9('0x45')](_0x768856[_0xdbc9('0x30')]['fields']));_0xc77676['attributes']=_0xc77676[_0xdbc9('0x34')][_0xdbc9('0x35')]?_0xc77676[_0xdbc9('0x34')]:_0x41f56a[_0xdbc9('0x2e')];if(_0x768856[_0xdbc9('0x30')][_0xdbc9('0x46')]){_0xc77676[_0xdbc9('0x40')]=[{'all':!![]}];}_0xc77676=_[_0xdbc9('0x3d')]({},_0xc77676,_0x768856[_0xdbc9('0x3f')]);return db['VoiceChanSpy'][_0xdbc9('0x47')](_0xc77676)[_0xdbc9('0x26')](handleEntityNotFound(_0x3b8437,null))['then'](respondWithResult(_0x3b8437,null))['catch'](handleError(_0x3b8437,null));};exports[_0xdbc9('0x48')]=function(_0xc3db3c,_0x133a13){return db['VoiceChanSpy'][_0xdbc9('0x48')](_0xc3db3c[_0xdbc9('0x49')],{})[_0xdbc9('0x26')](function(_0x274607){var _0x5aee83=_0xc3db3c[_0xdbc9('0x4a')][_0xdbc9('0x27')]({'plain':!![]});if(!_0x5aee83)throw new Error(_0xdbc9('0x4b'));if(_0x5aee83[_0xdbc9('0x4c')]==='user'){var _0x3e89f5=_0x274607[_0xdbc9('0x27')]({'plain':!![]});var _0x3f49b7=_0xdbc9('0x4d');return db[_0xdbc9('0x4e')][_0xdbc9('0x47')]({'where':{'name':_0x3f49b7,'userProfileId':_0x5aee83[_0xdbc9('0x4f')]},'raw':!![]})[_0xdbc9('0x26')](function(_0x4b34dd){if(_0x4b34dd&&_0x4b34dd[_0xdbc9('0x50')]===0x0){return db['UserProfileResource'][_0xdbc9('0x48')]({'name':_0x3e89f5[_0xdbc9('0x3e')],'resourceId':_0x3e89f5['id'],'type':_0x4b34dd['name'],'sectionId':_0x4b34dd['id']},{})['then'](function(){return _0x274607;});}else{return _0x274607;}})[_0xdbc9('0x51')](function(_0x4b55df){logger[_0xdbc9('0x52')](_0xdbc9('0x53'),_0x4b55df);throw _0x4b55df;});}return _0x274607;})[_0xdbc9('0x26')](respondWithResult(_0x133a13,0xc9))['catch'](handleError(_0x133a13,null));};exports[_0xdbc9('0x24')]=function(_0x1c52e6,_0x3d8b01){if(_0x1c52e6[_0xdbc9('0x49')]['id']){delete _0x1c52e6[_0xdbc9('0x49')]['id'];}return db[_0xdbc9('0x41')][_0xdbc9('0x47')]({'where':{'id':_0x1c52e6[_0xdbc9('0x44')]['id']}})['then'](handleEntityNotFound(_0x3d8b01,null))['then'](saveUpdates(_0x1c52e6['body'],null))[_0xdbc9('0x26')](respondWithResult(_0x3d8b01,null))[_0xdbc9('0x51')](handleError(_0x3d8b01,null));};exports[_0xdbc9('0x25')]=function(_0x55d8ba,_0x519ac9){return db[_0xdbc9('0x41')][_0xdbc9('0x47')]({'where':{'id':_0x55d8ba['params']['id']}})['then'](handleEntityNotFound(_0x519ac9,null))[_0xdbc9('0x26')](removeEntity(_0x519ac9,null))[_0xdbc9('0x51')](handleError(_0x519ac9,null));};
\ No newline at end of file
+var _0x1948=['merge','options','includeAll','include','findAll','catch','show','fields','find','create','body','user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','apply','save','update','then','destroy','get','ChanSpies','UserProfileResource','end','error','VoiceChanSpy','rawAttributes','fieldName','type','model','name','keys','query','filters','attributes','intersection','length','nolimit','order','sort','where','map','filter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1948,0x145));var _0x8194=function(_0x1f603a,_0x3a1b0f){_0x1f603a=_0x1f603a-0x0;var _0x5e44a7=_0x1948[_0x1f603a];return _0x5e44a7;};'use strict';var emlformat=require(_0x8194('0x0'));var rimraf=require(_0x8194('0x1'));var zipdir=require(_0x8194('0x2'));var jsonpatch=require(_0x8194('0x3'));var rp=require(_0x8194('0x4'));var moment=require('moment');var BPromise=require(_0x8194('0x5'));var Mustache=require(_0x8194('0x6'));var util=require(_0x8194('0x7'));var path=require(_0x8194('0x8'));var sox=require(_0x8194('0x9'));var csv=require(_0x8194('0xa'));var ejs=require(_0x8194('0xb'));var fs=require('fs');var fs_extra=require(_0x8194('0xc'));var _=require('lodash');var squel=require(_0x8194('0xd'));var crypto=require(_0x8194('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x8194('0xf'));var toCsv=require(_0x8194('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8194('0x10'));var authService=require(_0x8194('0x11'));var qs=require(_0x8194('0x12'));var as=require(_0x8194('0x13'));var hardwareService=require(_0x8194('0x14'));var logger=require('../../config/logger')(_0x8194('0x15'));var utils=require(_0x8194('0x16'));var config=require(_0x8194('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x8194('0x18'))['db'];function respondWithStatusCode(_0x3d7aea,_0x1aa698){_0x1aa698=_0x1aa698||0xcc;return function(_0xeba106){if(_0xeba106){return _0x3d7aea[_0x8194('0x19')](_0x1aa698);}return _0x3d7aea[_0x8194('0x1a')](_0x1aa698)['end']();};}function respondWithResult(_0x1ae7ec,_0x215b95){_0x215b95=_0x215b95||0xc8;return function(_0xfd031c){if(_0xfd031c){return _0x1ae7ec[_0x8194('0x1a')](_0x215b95)[_0x8194('0x1b')](_0xfd031c);}};}function respondWithFilteredResult(_0x27adfc,_0x112d44){return function(_0x13e166){if(_0x13e166){var _0x19c23e=typeof _0x112d44['offset']===_0x8194('0x1c')&&typeof _0x112d44[_0x8194('0x1d')]==='undefined';var _0x41a11e=_0x13e166['count'];var _0x55e4c2=_0x19c23e?0x0:_0x112d44['offset'];var _0x37b048=_0x19c23e?_0x13e166[_0x8194('0x1e')]:_0x112d44[_0x8194('0x1f')]+_0x112d44[_0x8194('0x1d')];var _0x956c6a;if(_0x37b048>=_0x41a11e){_0x37b048=_0x41a11e;_0x956c6a=0xc8;}else{_0x956c6a=0xce;}_0x27adfc[_0x8194('0x1a')](_0x956c6a);return _0x27adfc['set']('Content-Range',_0x55e4c2+'-'+_0x37b048+'/'+_0x41a11e)[_0x8194('0x1b')](_0x13e166);}return null;};}function patchUpdates(_0x588cac){return function(_0x43d763){try{jsonpatch[_0x8194('0x20')](_0x43d763,_0x588cac,!![]);}catch(_0x9421f5){return BPromise['reject'](_0x9421f5);}return _0x43d763[_0x8194('0x21')]();};}function saveUpdates(_0x11ce0c,_0x41641d){return function(_0x28df4f){if(_0x28df4f){return _0x28df4f[_0x8194('0x22')](_0x11ce0c)[_0x8194('0x23')](function(_0x2c5061){return _0x2c5061;});}return null;};}function removeEntity(_0xe593e9,_0x269a22){return function(_0x263093){if(_0x263093){return _0x263093[_0x8194('0x24')]()[_0x8194('0x23')](function(){var _0x5040e6=_0x263093[_0x8194('0x25')]({'plain':!![]});var _0x1216b1=_0x8194('0x26');return db[_0x8194('0x27')]['destroy']({'where':{'type':_0x1216b1,'resourceId':_0x5040e6['id']}})[_0x8194('0x23')](function(){return _0x263093;});})[_0x8194('0x23')](function(){_0xe593e9[_0x8194('0x1a')](0xcc)[_0x8194('0x28')]();});}};}function handleEntityNotFound(_0x3e8cb3,_0x513efd){return function(_0x487ce9){if(!_0x487ce9){_0x3e8cb3[_0x8194('0x19')](0x194);}return _0x487ce9;};}function handleError(_0xfaa613,_0x43c02e){_0x43c02e=_0x43c02e||0x1f4;return function(_0x996c97){logger[_0x8194('0x29')](_0x996c97['stack']);if(_0x996c97['name']){delete _0x996c97['name'];}_0xfaa613[_0x8194('0x1a')](_0x43c02e)['send'](_0x996c97);};}exports['index']=function(_0xb8910b,_0x4178f4){var _0x4ee84e={},_0x1ef19a={},_0x58f209={'count':0x0,'rows':[]};var _0x424b83=_['map'](db[_0x8194('0x2a')][_0x8194('0x2b')],function(_0x126795){return{'name':_0x126795[_0x8194('0x2c')],'type':_0x126795[_0x8194('0x2d')]['key']};});_0x1ef19a[_0x8194('0x2e')]=_['map'](_0x424b83,_0x8194('0x2f'));_0x1ef19a['query']=_[_0x8194('0x30')](_0xb8910b[_0x8194('0x31')]);_0x1ef19a[_0x8194('0x32')]=_['intersection'](_0x1ef19a['model'],_0x1ef19a[_0x8194('0x31')]);_0x4ee84e[_0x8194('0x33')]=_[_0x8194('0x34')](_0x1ef19a[_0x8194('0x2e')],qs['fields'](_0xb8910b['query']['fields']));_0x4ee84e[_0x8194('0x33')]=_0x4ee84e[_0x8194('0x33')][_0x8194('0x35')]?_0x4ee84e[_0x8194('0x33')]:_0x1ef19a[_0x8194('0x2e')];if(!_0xb8910b[_0x8194('0x31')]['hasOwnProperty'](_0x8194('0x36'))){_0x4ee84e[_0x8194('0x1d')]=qs[_0x8194('0x1d')](_0xb8910b[_0x8194('0x31')][_0x8194('0x1d')]);_0x4ee84e[_0x8194('0x1f')]=qs[_0x8194('0x1f')](_0xb8910b[_0x8194('0x31')][_0x8194('0x1f')]);}_0x4ee84e[_0x8194('0x37')]=qs[_0x8194('0x38')](_0xb8910b[_0x8194('0x31')]['sort']);_0x4ee84e[_0x8194('0x39')]=qs['filters'](_['pick'](_0xb8910b[_0x8194('0x31')],_0x1ef19a[_0x8194('0x32')]),_0x424b83);if(_0xb8910b['query']['filter']){_0x4ee84e['where']=_['merge'](_0x4ee84e['where'],{'$or':_[_0x8194('0x3a')](_0x424b83,function(_0x34001b){if(_0x34001b[_0x8194('0x2d')]!=='VIRTUAL'){var _0x4961e6={};_0x4961e6[_0x34001b['name']]={'$like':'%'+_0xb8910b[_0x8194('0x31')][_0x8194('0x3b')]+'%'};return _0x4961e6;}})});}_0x4ee84e=_[_0x8194('0x3c')]({},_0x4ee84e,_0xb8910b[_0x8194('0x3d')]);var _0x4aa53a={'where':_0x4ee84e[_0x8194('0x39')]};return db[_0x8194('0x2a')][_0x8194('0x1e')](_0x4aa53a)[_0x8194('0x23')](function(_0x371327){_0x58f209['count']=_0x371327;if(_0xb8910b[_0x8194('0x31')][_0x8194('0x3e')]){_0x4ee84e[_0x8194('0x3f')]=[{'all':!![]}];}return db[_0x8194('0x2a')][_0x8194('0x40')](_0x4ee84e);})[_0x8194('0x23')](function(_0x36789b){_0x58f209['rows']=_0x36789b;return _0x58f209;})[_0x8194('0x23')](respondWithFilteredResult(_0x4178f4,_0x4ee84e))[_0x8194('0x41')](handleError(_0x4178f4,null));};exports[_0x8194('0x42')]=function(_0x13ec07,_0x56ade6){var _0x58c83c={'raw':![],'where':{'id':_0x13ec07['params']['id']}},_0x1fac16={};_0x1fac16[_0x8194('0x2e')]=_['keys'](db[_0x8194('0x2a')]['rawAttributes']);_0x1fac16[_0x8194('0x31')]=_[_0x8194('0x30')](_0x13ec07[_0x8194('0x31')]);_0x1fac16[_0x8194('0x32')]=_['intersection'](_0x1fac16[_0x8194('0x2e')],_0x1fac16[_0x8194('0x31')]);_0x58c83c[_0x8194('0x33')]=_['intersection'](_0x1fac16[_0x8194('0x2e')],qs[_0x8194('0x43')](_0x13ec07[_0x8194('0x31')][_0x8194('0x43')]));_0x58c83c[_0x8194('0x33')]=_0x58c83c['attributes'][_0x8194('0x35')]?_0x58c83c['attributes']:_0x1fac16[_0x8194('0x2e')];if(_0x13ec07[_0x8194('0x31')][_0x8194('0x3e')]){_0x58c83c[_0x8194('0x3f')]=[{'all':!![]}];}_0x58c83c=_[_0x8194('0x3c')]({},_0x58c83c,_0x13ec07[_0x8194('0x3d')]);return db[_0x8194('0x2a')][_0x8194('0x44')](_0x58c83c)[_0x8194('0x23')](handleEntityNotFound(_0x56ade6,null))[_0x8194('0x23')](respondWithResult(_0x56ade6,null))[_0x8194('0x41')](handleError(_0x56ade6,null));};exports[_0x8194('0x45')]=function(_0x398579,_0x349e27){return db[_0x8194('0x2a')][_0x8194('0x45')](_0x398579[_0x8194('0x46')],{})[_0x8194('0x23')](function(_0x5190d1){var _0x38195c=_0x398579[_0x8194('0x47')]['get']({'plain':!![]});if(!_0x38195c)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38195c[_0x8194('0x48')]===_0x8194('0x47')){var _0x2ac683=_0x5190d1[_0x8194('0x25')]({'plain':!![]});var _0x3f85af=_0x8194('0x26');return db[_0x8194('0x49')][_0x8194('0x44')]({'where':{'name':_0x3f85af,'userProfileId':_0x38195c[_0x8194('0x4a')]},'raw':!![]})[_0x8194('0x23')](function(_0x5aa280){if(_0x5aa280&&_0x5aa280['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2ac683[_0x8194('0x2f')],'resourceId':_0x2ac683['id'],'type':_0x5aa280[_0x8194('0x2f')],'sectionId':_0x5aa280['id']},{})[_0x8194('0x23')](function(){return _0x5190d1;});}else{return _0x5190d1;}})[_0x8194('0x41')](function(_0x381091){logger[_0x8194('0x29')](_0x8194('0x4b'),_0x381091);throw _0x381091;});}return _0x5190d1;})[_0x8194('0x23')](respondWithResult(_0x349e27,0xc9))[_0x8194('0x41')](handleError(_0x349e27,null));};exports['update']=function(_0x5ec3dd,_0x259536){if(_0x5ec3dd[_0x8194('0x46')]['id']){delete _0x5ec3dd[_0x8194('0x46')]['id'];}return db[_0x8194('0x2a')][_0x8194('0x44')]({'where':{'id':_0x5ec3dd[_0x8194('0x4c')]['id']}})['then'](handleEntityNotFound(_0x259536,null))[_0x8194('0x23')](saveUpdates(_0x5ec3dd[_0x8194('0x46')],null))[_0x8194('0x23')](respondWithResult(_0x259536,null))[_0x8194('0x41')](handleError(_0x259536,null));};exports[_0x8194('0x24')]=function(_0x46f1e1,_0x196fb2){return db[_0x8194('0x2a')]['find']({'where':{'id':_0x46f1e1[_0x8194('0x4c')]['id']}})[_0x8194('0x23')](handleEntityNotFound(_0x196fb2,null))[_0x8194('0x23')](removeEntity(_0x196fb2,null))[_0x8194('0x41')](handleError(_0x196fb2,null));};
\ No newline at end of file
index a38feaf..fd603f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf65=['internal','agent','then','exports','models','define','VoiceChanSpy','length','VoiceExtension','catch','destroy','bulkCreate','lodash','bluebird','context','from-sip','prefix','system','merge','Set','format','CDR(type)=%s','record','push','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','concat','User','findAll'];(function(_0x5d1817,_0x4847cc){var _0x14cf81=function(_0x4c0fb7){while(--_0x4c0fb7){_0x5d1817['push'](_0x5d1817['shift']());}};_0x14cf81(++_0x4847cc);}(_0xaf65,0x188));var _0x5af6=function(_0x3aa864,_0x4e96c7){_0x3aa864=_0x3aa864-0x0;var _0x452f4c=_0xaf65[_0x3aa864];return _0x452f4c;};'use strict';var _=require(_0x5af6('0x0'));var util=require('util');var BPromise=require(_0x5af6('0x1'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x33ad30,_0x1ce177,_0x55bcc8){var _0x171fcf=0x1;var _0x419c6b=[];var _0x40c024={'context':_0x1ce177[_0x5af6('0x2')]||_0x5af6('0x3'),'exten':util['format']('%s%s',_0x33ad30[_0x5af6('0x4')],_0x55bcc8),'type':_0x5af6('0x5'),'isApp':![],'ChanSpyId':_0x33ad30['id'],'UserId':_0x1ce177['id']};_0x419c6b['push'](_[_0x5af6('0x6')]({'app':_0x5af6('0x7'),'appdata':util[_0x5af6('0x8')](_0x5af6('0x9'),'chanspy'),'priority':_0x171fcf++},_0x40c024));if(_0x33ad30[_0x5af6('0xa')]){_0x419c6b[_0x5af6('0xb')](_[_0x5af6('0x6')]({'app':_0x5af6('0xc'),'appdata':util['format'](_0x5af6('0xd'),_0x33ad30[_0x5af6('0xe')]),'priority':_0x171fcf++},_0x40c024));}if(_0x33ad30[_0x5af6('0xf')]){_0x419c6b[_0x5af6('0xb')](_['merge']({'app':_0x5af6('0x10'),'appdata':_0x33ad30['password'],'priority':_0x171fcf++},_0x40c024));}_0x419c6b[_0x5af6('0xb')](_[_0x5af6('0x6')]({'app':_0x5af6('0x11'),'appdata':util[_0x5af6('0x8')](_0x5af6('0x12'),_0x1ce177[_0x5af6('0x13')],_0x33ad30[_0x5af6('0x14')]?_0x33ad30[_0x5af6('0x14')][_0x5af6('0x15')](''):''),'priority':_0x171fcf++},_0x40c024));if(_0x33ad30[_0x5af6('0xa')]){_0x419c6b['push'](_[_0x5af6('0x6')]({'app':_0x5af6('0x16'),'priority':_0x171fcf++},_0x40c024));}return _0x419c6b;};var getChanSpyApplications=function(_0x3a9df6,_0x5d9783){var _0x22d8ae=[];for(var _0x1c3847=0x0,_0x4184a3=0x1;_0x1c3847<_0x5d9783['length'];_0x1c3847++,_0x4184a3=0x1){_0x22d8ae=_0x22d8ae[_0x5af6('0x17')](getUserApplications(_0x3a9df6,_0x5d9783[_0x1c3847],_0x5d9783[_0x1c3847]['internal']));if(_0x5d9783[_0x1c3847]['internal']!=_0x5d9783[_0x1c3847][_0x5af6('0x13')]){_0x22d8ae=_0x22d8ae[_0x5af6('0x17')](getUserApplications(_0x3a9df6,_0x5d9783[_0x1c3847],_0x5d9783[_0x1c3847][_0x5af6('0x13')]));}}return _0x22d8ae;};var getChanSpyPromise=function(_0x457907,_0x1e2faf){return new BPromise(function(_0x4e3df2,_0x11bc7e){return _0x457907[_0x5af6('0x18')][_0x5af6('0x19')]({'attributes':['id','name',_0x5af6('0x1a')],'where':{'role':_0x5af6('0x1b'),'chanspy':!![]},'raw':!![]})[_0x5af6('0x1c')](function(_0x37b27f){if(_0x37b27f){return _0x4e3df2(getChanSpyApplications(_0x1e2faf,_0x37b27f));}return _0x4e3df2([]);})['catch'](function(_0x24c2e4){_0x11bc7e(_0x24c2e4);});});};module[_0x5af6('0x1d')]=function(_0x24045f,_0x4935b8){var _0x13d181=_0x24045f[_0x5af6('0x1e')];return _0x24045f[_0x5af6('0x1f')](_0x5af6('0x20'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x30c84c,_0x2e1cb6,_0x32043d){return getChanSpyPromise(_0x13d181,_0x30c84c)[_0x5af6('0x1c')](function(_0x560718){if(_0x560718&&_0x560718[_0x5af6('0x21')]){return _0x13d181[_0x5af6('0x22')]['bulkCreate'](_0x560718);}})['then'](function(){_0x32043d();})[_0x5af6('0x23')](function(_0x393b5c){_0x32043d(_0x393b5c);});},'afterUpdate':function(_0xbdbd93,_0x52051a,_0x22e6f6){return _0x13d181[_0x5af6('0x22')][_0x5af6('0x24')]({'where':{'ChanSpyId':_0xbdbd93['id']}})['then'](function(){return getChanSpyPromise(_0x13d181,_0xbdbd93);})[_0x5af6('0x1c')](function(_0x171a6a){if(_0x171a6a&&_0x171a6a[_0x5af6('0x21')]){return _0x13d181['VoiceExtension'][_0x5af6('0x25')](_0x171a6a);}})[_0x5af6('0x1c')](function(){_0x22e6f6();})[_0x5af6('0x23')](function(_0x5bb72a){_0x22e6f6(_0x5bb72a);});},'afterDestroy':function(_0x54abb8,_0x523d93,_0x41714c){return _0x13d181[_0x5af6('0x22')]['destroy']({'where':{'ChanSpyId':_0x54abb8['id']}})[_0x5af6('0x1c')](function(){_0x41714c();})[_0x5af6('0x23')](function(_0x3ae1fa){_0x41714c(_0x3ae1fa);});}}});};
\ No newline at end of file
+var _0xdd5a=['length','concat','findAll','agent','then','models','define','VoiceChanSpy','voice_chanspy','VoiceExtension','bulkCreate','catch','destroy','lodash','bluebird','./voiceChanSpy.attributes','context','from-sip','%s%s','prefix','push','merge','format','CDR(type)=%s','chanspy','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','record','StopMixMonitor'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xdd5a,0x17f));var _0xadd5=function(_0x148075,_0xcacfb8){_0x148075=_0x148075-0x0;var _0x3a2ded=_0xdd5a[_0x148075];return _0x3a2ded;};'use strict';var _=require(_0xadd5('0x0'));var util=require('util');var BPromise=require(_0xadd5('0x1'));var attributes=require(_0xadd5('0x2'));var getUserApplications=function(_0x29f8fa,_0xe8cd55,_0x1bb1d2){var _0x4ede9e=0x1;var _0x20b897=[];var _0x5a2741={'context':_0xe8cd55[_0xadd5('0x3')]||_0xadd5('0x4'),'exten':util['format'](_0xadd5('0x5'),_0x29f8fa[_0xadd5('0x6')],_0x1bb1d2),'type':'system','isApp':![],'ChanSpyId':_0x29f8fa['id'],'UserId':_0xe8cd55['id']};_0x20b897[_0xadd5('0x7')](_[_0xadd5('0x8')]({'app':'Set','appdata':util[_0xadd5('0x9')](_0xadd5('0xa'),_0xadd5('0xb')),'priority':_0x4ede9e++},_0x5a2741));if(_0x29f8fa['record']){_0x20b897['push'](_[_0xadd5('0x8')]({'app':'MixMonitor','appdata':util[_0xadd5('0x9')](_0xadd5('0xc'),_0x29f8fa[_0xadd5('0xd')]),'priority':_0x4ede9e++},_0x5a2741));}if(_0x29f8fa[_0xadd5('0xe')]){_0x20b897['push'](_[_0xadd5('0x8')]({'app':_0xadd5('0xf'),'appdata':_0x29f8fa[_0xadd5('0x10')],'priority':_0x4ede9e++},_0x5a2741));}_0x20b897[_0xadd5('0x7')](_[_0xadd5('0x8')]({'app':_0xadd5('0x11'),'appdata':util[_0xadd5('0x9')](_0xadd5('0x12'),_0xe8cd55[_0xadd5('0x13')],_0x29f8fa[_0xadd5('0x14')]?_0x29f8fa[_0xadd5('0x14')][_0xadd5('0x15')](''):''),'priority':_0x4ede9e++},_0x5a2741));if(_0x29f8fa[_0xadd5('0x16')]){_0x20b897['push'](_[_0xadd5('0x8')]({'app':_0xadd5('0x17'),'priority':_0x4ede9e++},_0x5a2741));}return _0x20b897;};var getChanSpyApplications=function(_0x3a2f5c,_0x519bbd){var _0x225f05=[];for(var _0x7101e5=0x0,_0x4806c8=0x1;_0x7101e5<_0x519bbd[_0xadd5('0x18')];_0x7101e5++,_0x4806c8=0x1){_0x225f05=_0x225f05[_0xadd5('0x19')](getUserApplications(_0x3a2f5c,_0x519bbd[_0x7101e5],_0x519bbd[_0x7101e5]['internal']));if(_0x519bbd[_0x7101e5]['internal']!=_0x519bbd[_0x7101e5][_0xadd5('0x13')]){_0x225f05=_0x225f05[_0xadd5('0x19')](getUserApplications(_0x3a2f5c,_0x519bbd[_0x7101e5],_0x519bbd[_0x7101e5][_0xadd5('0x13')]));}}return _0x225f05;};var getChanSpyPromise=function(_0x2ab87b,_0x57deb3){return new BPromise(function(_0x2fdacd,_0x30d1a5){return _0x2ab87b['User'][_0xadd5('0x1a')]({'attributes':['id',_0xadd5('0x13'),'internal'],'where':{'role':_0xadd5('0x1b'),'chanspy':!![]},'raw':!![]})[_0xadd5('0x1c')](function(_0x53ec64){if(_0x53ec64){return _0x2fdacd(getChanSpyApplications(_0x57deb3,_0x53ec64));}return _0x2fdacd([]);})['catch'](function(_0x5752fb){_0x30d1a5(_0x5752fb);});});};module['exports']=function(_0x2fb77f,_0x286fc4){var _0x320626=_0x2fb77f[_0xadd5('0x1d')];return _0x2fb77f[_0xadd5('0x1e')](_0xadd5('0x1f'),attributes,{'tableName':_0xadd5('0x20'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xc13207,_0x1e6a05,_0xd448f7){return getChanSpyPromise(_0x320626,_0xc13207)[_0xadd5('0x1c')](function(_0x5f38cc){if(_0x5f38cc&&_0x5f38cc[_0xadd5('0x18')]){return _0x320626[_0xadd5('0x21')][_0xadd5('0x22')](_0x5f38cc);}})[_0xadd5('0x1c')](function(){_0xd448f7();})[_0xadd5('0x23')](function(_0x20fc23){_0xd448f7(_0x20fc23);});},'afterUpdate':function(_0x19e214,_0x199278,_0x1ac68f){return _0x320626[_0xadd5('0x21')][_0xadd5('0x24')]({'where':{'ChanSpyId':_0x19e214['id']}})[_0xadd5('0x1c')](function(){return getChanSpyPromise(_0x320626,_0x19e214);})[_0xadd5('0x1c')](function(_0x574e39){if(_0x574e39&&_0x574e39[_0xadd5('0x18')]){return _0x320626[_0xadd5('0x21')][_0xadd5('0x22')](_0x574e39);}})[_0xadd5('0x1c')](function(){_0x1ac68f();})[_0xadd5('0x23')](function(_0x3f9fc3){_0x1ac68f(_0x3f9fc3);});},'afterDestroy':function(_0x59004d,_0x2fbcb3,_0x3f0a28){return _0x320626['VoiceExtension']['destroy']({'where':{'ChanSpyId':_0x59004d['id']}})[_0xadd5('0x1c')](function(){_0x3f0a28();})[_0xadd5('0x23')](function(_0x2bf418){_0x3f0a28(_0x2bf418);});}}});};
\ No newline at end of file
index f022db0..6ff80de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['result','catch','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','then','info','VoiceChanSpy,\x20%s,\x20%s','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent'];(function(_0x2e6dee,_0x1a61b0){var _0x47706=function(_0x365546){while(--_0x365546){_0x2e6dee['push'](_0x2e6dee['shift']());}};_0x47706(++_0x1a61b0);}(_0xa74f,0x9a));var _0xfa74=function(_0x2eb3db,_0x4a32c0){_0x2eb3db=_0x2eb3db-0x0;var _0x358f33=_0xa74f[_0x2eb3db];return _0x358f33;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfa74('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfa74('0x1'));var db=require(_0xfa74('0x2'))['db'];var utils=require(_0xfa74('0x3'));var logger=require(_0xfa74('0x4'))('rpc');var config=require(_0xfa74('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfa74('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x9ddbd2,_0x3ac32e,_0x2d9fa9){return new BPromise(function(_0x287921,_0x344e04){return client['request'](_0x9ddbd2,_0x2d9fa9)[_0xfa74('0x7')](function(_0x37d4d8){logger[_0xfa74('0x8')](_0xfa74('0x9'),_0x3ac32e,'request\x20sent');logger[_0xfa74('0xa')](_0xfa74('0xb'),_0x3ac32e,'request\x20sent',JSON[_0xfa74('0xc')](_0x37d4d8));if(_0x37d4d8[_0xfa74('0xd')]){if(_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xe')]===0x1f4){logger['error'](_0xfa74('0x9'),_0x3ac32e,_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xf')]);return _0x344e04(_0x37d4d8[_0xfa74('0xd')]['message']);}logger[_0xfa74('0xd')](_0xfa74('0x9'),_0x3ac32e,_0x37d4d8[_0xfa74('0xd')][_0xfa74('0xf')]);return _0x287921(_0x37d4d8[_0xfa74('0xd')]['message']);}else{logger[_0xfa74('0x8')](_0xfa74('0x9'),_0x3ac32e,_0xfa74('0x10'));_0x287921(_0x37d4d8[_0xfa74('0x11')][_0xfa74('0xf')]);}})[_0xfa74('0x12')](function(_0x3b9e32){logger['error'](_0xfa74('0x9'),_0x3ac32e,_0x3b9e32);_0x344e04(_0x3b9e32);});});}
\ No newline at end of file
+var _0xdace=['request\x20sent','debug','stringify','error','code','VoiceChanSpy,\x20%s,\x20%s','message','info','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then'];(function(_0x57add2,_0x4f2b7d){var _0x4e3670=function(_0x3311b){while(--_0x3311b){_0x57add2['push'](_0x57add2['shift']());}};_0x4e3670(++_0x4f2b7d);}(_0xdace,0xc5));var _0xedac=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xdace[_0x1e3c16];return _0x47a0c9;};'use strict';var _=require(_0xedac('0x0'));var util=require('util');var moment=require(_0xedac('0x1'));var BPromise=require(_0xedac('0x2'));var rs=require(_0xedac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xedac('0x4'))['db'];var utils=require(_0xedac('0x5'));var logger=require(_0xedac('0x6'))(_0xedac('0x7'));var config=require('../../config/environment');var jayson=require(_0xedac('0x8'));var client=jayson[_0xedac('0x9')][_0xedac('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5ecbd3,_0x4081c6,_0x21440e){return new BPromise(function(_0x162eea,_0x53fa43){return client[_0xedac('0xb')](_0x5ecbd3,_0x21440e)[_0xedac('0xc')](function(_0xc98887){logger['info']('VoiceChanSpy,\x20%s,\x20%s',_0x4081c6,_0xedac('0xd'));logger[_0xedac('0xe')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x4081c6,'request\x20sent',JSON[_0xedac('0xf')](_0xc98887));if(_0xc98887[_0xedac('0x10')]){if(_0xc98887['error'][_0xedac('0x11')]===0x1f4){logger['error'](_0xedac('0x12'),_0x4081c6,_0xc98887[_0xedac('0x10')][_0xedac('0x13')]);return _0x53fa43(_0xc98887[_0xedac('0x10')][_0xedac('0x13')]);}logger[_0xedac('0x10')](_0xedac('0x12'),_0x4081c6,_0xc98887[_0xedac('0x10')]['message']);return _0x162eea(_0xc98887[_0xedac('0x10')][_0xedac('0x13')]);}else{logger[_0xedac('0x14')](_0xedac('0x12'),_0x4081c6,_0xedac('0xd'));_0x162eea(_0xc98887['result'][_0xedac('0x13')]);}})['catch'](function(_0xddc7b8){logger[_0xedac('0x10')](_0xedac('0x12'),_0x4081c6,_0xddc7b8);_0x53fa43(_0xddc7b8);});});}
\ No newline at end of file
index d6632b8..cb96eed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49fb=['exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./voiceContext.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy'];(function(_0x193fd7,_0x11aad5){var _0x1b9cd2=function(_0x3a26d6){while(--_0x3a26d6){_0x193fd7['push'](_0x193fd7['shift']());}};_0x1b9cd2(++_0x11aad5);}(_0x49fb,0x17d));var _0xb49f=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x49fb[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0xb49f('0x0'));var util=require(_0xb49f('0x1'));var path=require(_0xb49f('0x2'));var timeout=require(_0xb49f('0x3'));var express=require(_0xb49f('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb49f('0x5'));var interaction=require(_0xb49f('0x6'));var config=require('../../config/environment');var controller=require(_0xb49f('0x7'));router[_0xb49f('0x8')]('/',auth[_0xb49f('0x9')](),controller[_0xb49f('0xa')]);router[_0xb49f('0x8')](_0xb49f('0xb'),auth[_0xb49f('0x9')](),controller[_0xb49f('0xc')]);router[_0xb49f('0xd')]('/',auth[_0xb49f('0x9')](),controller[_0xb49f('0xe')]);router[_0xb49f('0xf')](_0xb49f('0xb'),auth[_0xb49f('0x9')](),controller[_0xb49f('0x10')]);router[_0xb49f('0x11')](_0xb49f('0xb'),auth[_0xb49f('0x9')](),controller[_0xb49f('0x12')]);module[_0xb49f('0x13')]=router;
\ No newline at end of file
+var _0xcbe1=['delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','index','get','/:id','show','post','create','put','update'];(function(_0x84e8ef,_0x3efe12){var _0x3a93b3=function(_0x165aa4){while(--_0x165aa4){_0x84e8ef['push'](_0x84e8ef['shift']());}};_0x3a93b3(++_0x3efe12);}(_0xcbe1,0x16b));var _0x1cbe=function(_0x31ec29,_0x58915c){_0x31ec29=_0x31ec29-0x0;var _0x3275fc=_0xcbe1[_0x31ec29];return _0x3275fc;};'use strict';var multer=require(_0x1cbe('0x0'));var util=require(_0x1cbe('0x1'));var path=require(_0x1cbe('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x1cbe('0x3')]();var fs_extra=require(_0x1cbe('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1cbe('0x5'));var config=require(_0x1cbe('0x6'));var controller=require(_0x1cbe('0x7'));router['get']('/',auth[_0x1cbe('0x8')](),controller[_0x1cbe('0x9')]);router[_0x1cbe('0xa')](_0x1cbe('0xb'),auth[_0x1cbe('0x8')](),controller[_0x1cbe('0xc')]);router[_0x1cbe('0xd')]('/',auth[_0x1cbe('0x8')](),controller[_0x1cbe('0xe')]);router[_0x1cbe('0xf')](_0x1cbe('0xb'),auth[_0x1cbe('0x8')](),controller[_0x1cbe('0x10')]);router[_0x1cbe('0x11')](_0x1cbe('0xb'),auth[_0x1cbe('0x8')](),controller[_0x1cbe('0x12')]);module[_0x1cbe('0x13')]=router;
\ No newline at end of file
index d836f3e..c7e5c70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97ab=['BOOLEAN','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x97ab,0x99));var _0xb97a=function(_0x3d2f1e,_0x2ec05b){_0x3d2f1e=_0x3d2f1e-0x0;var _0xf07f62=_0x97ab[_0x3d2f1e];return _0xf07f62;};'use strict';var Sequelize=require(_0xb97a('0x0'));module[_0xb97a('0x1')]={'name':{'type':Sequelize[_0xb97a('0x2')],'unique':'name'},'description':{'type':Sequelize[_0xb97a('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xb97a('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xd5e1=['name','BOOLEAN','sequelize','STRING'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0xd5e1,0x7e));var _0x1d5e=function(_0x35ca9d,_0x9047fc){_0x35ca9d=_0x35ca9d-0x0;var _0x5741bd=_0xd5e1[_0x35ca9d];return _0x5741bd;};'use strict';var Sequelize=require(_0x1d5e('0x0'));module['exports']={'name':{'type':Sequelize[_0x1d5e('0x1')],'unique':_0x1d5e('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x1d5e('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index f62f946..da6a6c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dea=['client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','save','update','destroy','get','Contexts','stack','name','index','map','rawAttributes','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','where','filter','merge','options','VoiceContext','includeAll','findAll','rows','show','params','include','find','create','body','join','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','root','writeFileSync','readFileSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise'];(function(_0x20008a,_0x362490){var _0x5d0f1c=function(_0x122ecf){while(--_0x122ecf){_0x20008a['push'](_0x20008a['shift']());}};_0x5d0f1c(++_0x362490);}(_0x9dea,0x1d5));var _0xa9de=function(_0x50caf3,_0x177887){_0x50caf3=_0x50caf3-0x0;var _0x43fa75=_0x9dea[_0x50caf3];return _0x43fa75;};'use strict';var emlformat=require(_0xa9de('0x0'));var rimraf=require(_0xa9de('0x1'));var zipdir=require(_0xa9de('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa9de('0x3'));var BPromise=require(_0xa9de('0x4'));var Mustache=require(_0xa9de('0x5'));var util=require(_0xa9de('0x6'));var path=require(_0xa9de('0x7'));var sox=require(_0xa9de('0x8'));var csv=require(_0xa9de('0x9'));var ejs=require(_0xa9de('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa9de('0xb'));var squel=require('squel');var crypto=require(_0xa9de('0xc'));var jsforce=require(_0xa9de('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa9de('0x9'));var querystring=require(_0xa9de('0xe'));var Papa=require(_0xa9de('0xf'));var Redis=require('ioredis');var authService=require(_0xa9de('0x10'));var qs=require(_0xa9de('0x11'));var as=require(_0xa9de('0x12'));var hardwareService=require(_0xa9de('0x13'));var logger=require(_0xa9de('0x14'))(_0xa9de('0x15'));var utils=require(_0xa9de('0x16'));var config=require(_0xa9de('0x17'));var licenseUtil=require(_0xa9de('0x18'));var db=require('../../mysqldb')['db'];var jayson=require(_0xa9de('0x19'));var client=jayson[_0xa9de('0x1a')][_0xa9de('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x2d594e,_0x58a8a0,_0x1b86dc,_0x25db42){return new BPromise(function(_0x4f1c22,_0x4cee61){var _0xb294bb=_0x25db42||client;return _0xb294bb['request'](_0x2d594e,_0x1b86dc)[_0xa9de('0x1c')](function(_0xcddfac){logger[_0xa9de('0x1d')](_0xa9de('0x1e'),_0x58a8a0,_0xa9de('0x1f'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x58a8a0,'request\x20sent',JSON[_0xa9de('0x20')](_0xcddfac));if(_0xcddfac[_0xa9de('0x21')]){if(_0xcddfac[_0xa9de('0x21')][_0xa9de('0x22')]===0x1f4){logger[_0xa9de('0x21')](_0xa9de('0x1e'),_0x58a8a0,_0xcddfac['error'][_0xa9de('0x23')]);return _0x4cee61(_0xcddfac[_0xa9de('0x21')]['message']);}logger[_0xa9de('0x21')](_0xa9de('0x1e'),_0x58a8a0,_0xcddfac[_0xa9de('0x21')][_0xa9de('0x23')]);return _0x4f1c22(_0xcddfac['error'][_0xa9de('0x23')]);}else{logger[_0xa9de('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x58a8a0,_0xa9de('0x1f'));_0x4f1c22(_0xcddfac['result'][_0xa9de('0x23')]);}})[_0xa9de('0x24')](function(_0x4ed9cf){logger[_0xa9de('0x21')]('VoiceContext,\x20%s,\x20%s',_0x58a8a0,_0x4ed9cf);_0x4cee61(_0x4ed9cf);});});}function respondWithStatusCode(_0x31f41b,_0x409b07){_0x409b07=_0x409b07||0xcc;return function(_0x40b3fd){if(_0x40b3fd){return _0x31f41b[_0xa9de('0x25')](_0x409b07);}return _0x31f41b[_0xa9de('0x26')](_0x409b07)[_0xa9de('0x27')]();};}function respondWithResult(_0x1e6d17,_0x3278b6){_0x3278b6=_0x3278b6||0xc8;return function(_0x96844b){if(_0x96844b){return _0x1e6d17[_0xa9de('0x26')](_0x3278b6)[_0xa9de('0x28')](_0x96844b);}};}function respondWithFilteredResult(_0x410cd5,_0x30ed0e){return function(_0x310dfd){if(_0x310dfd){var _0x45ad52=typeof _0x30ed0e[_0xa9de('0x29')]===_0xa9de('0x2a')&&typeof _0x30ed0e[_0xa9de('0x2b')]===_0xa9de('0x2a');var _0x580839=_0x310dfd[_0xa9de('0x2c')];var _0x2c17c1=_0x45ad52?0x0:_0x30ed0e[_0xa9de('0x29')];var _0x1ead15=_0x45ad52?_0x310dfd['count']:_0x30ed0e['offset']+_0x30ed0e[_0xa9de('0x2b')];var _0x19a090;if(_0x1ead15>=_0x580839){_0x1ead15=_0x580839;_0x19a090=0xc8;}else{_0x19a090=0xce;}_0x410cd5[_0xa9de('0x26')](_0x19a090);return _0x410cd5[_0xa9de('0x2d')]('Content-Range',_0x2c17c1+'-'+_0x1ead15+'/'+_0x580839)['json'](_0x310dfd);}return null;};}function patchUpdates(_0x3a343){return function(_0x5772b4){try{jsonpatch['apply'](_0x5772b4,_0x3a343,!![]);}catch(_0x717392){return BPromise['reject'](_0x717392);}return _0x5772b4[_0xa9de('0x2e')]();};}function saveUpdates(_0x192751,_0x20a91b){return function(_0xb729af){if(_0xb729af){return _0xb729af[_0xa9de('0x2f')](_0x192751)[_0xa9de('0x1c')](function(_0x55e482){return _0x55e482;});}return null;};}function removeEntity(_0x401935,_0x5b51f3){return function(_0x36df2a){if(_0x36df2a){return _0x36df2a[_0xa9de('0x30')]()[_0xa9de('0x1c')](function(){var _0x1b2b84=_0x36df2a[_0xa9de('0x31')]({'plain':!![]});var _0x35fc50=_0xa9de('0x32');return db['UserProfileResource'][_0xa9de('0x30')]({'where':{'type':_0x35fc50,'resourceId':_0x1b2b84['id']}})['then'](function(){return _0x36df2a;});})[_0xa9de('0x1c')](function(){_0x401935[_0xa9de('0x26')](0xcc)[_0xa9de('0x27')]();});}};}function handleEntityNotFound(_0x52c186,_0x33e7f3){return function(_0x28161c){if(!_0x28161c){_0x52c186[_0xa9de('0x25')](0x194);}return _0x28161c;};}function handleError(_0x45622b,_0x12c386){_0x12c386=_0x12c386||0x1f4;return function(_0x5c77d1){logger[_0xa9de('0x21')](_0x5c77d1[_0xa9de('0x33')]);if(_0x5c77d1[_0xa9de('0x34')]){delete _0x5c77d1[_0xa9de('0x34')];}_0x45622b[_0xa9de('0x26')](_0x12c386)['send'](_0x5c77d1);};}exports[_0xa9de('0x35')]=function(_0x554bf5,_0x147a29){var _0x2f8a58={},_0x224a21={},_0xc306b8={'count':0x0,'rows':[]};var _0x3e2cd3=_[_0xa9de('0x36')](db['VoiceContext'][_0xa9de('0x37')],function(_0x2840ed){return{'name':_0x2840ed['fieldName'],'type':_0x2840ed[_0xa9de('0x38')][_0xa9de('0x39')]};});_0x224a21['model']=_[_0xa9de('0x36')](_0x3e2cd3,'name');_0x224a21[_0xa9de('0x3a')]=_[_0xa9de('0x3b')](_0x554bf5[_0xa9de('0x3a')]);_0x224a21[_0xa9de('0x3c')]=_[_0xa9de('0x3d')](_0x224a21['model'],_0x224a21[_0xa9de('0x3a')]);_0x2f8a58['attributes']=_[_0xa9de('0x3d')](_0x224a21[_0xa9de('0x3e')],qs[_0xa9de('0x3f')](_0x554bf5[_0xa9de('0x3a')][_0xa9de('0x3f')]));_0x2f8a58[_0xa9de('0x40')]=_0x2f8a58[_0xa9de('0x40')][_0xa9de('0x41')]?_0x2f8a58[_0xa9de('0x40')]:_0x224a21[_0xa9de('0x3e')];if(!_0x554bf5['query'][_0xa9de('0x42')](_0xa9de('0x43'))){_0x2f8a58[_0xa9de('0x2b')]=qs[_0xa9de('0x2b')](_0x554bf5[_0xa9de('0x3a')][_0xa9de('0x2b')]);_0x2f8a58['offset']=qs[_0xa9de('0x29')](_0x554bf5['query']['offset']);}_0x2f8a58[_0xa9de('0x44')]=qs['sort'](_0x554bf5[_0xa9de('0x3a')]['sort']);_0x2f8a58[_0xa9de('0x45')]=qs[_0xa9de('0x3c')](_['pick'](_0x554bf5[_0xa9de('0x3a')],_0x224a21[_0xa9de('0x3c')]),_0x3e2cd3);if(_0x554bf5[_0xa9de('0x3a')][_0xa9de('0x46')]){_0x2f8a58['where']=_[_0xa9de('0x47')](_0x2f8a58[_0xa9de('0x45')],{'$or':_[_0xa9de('0x36')](_0x3e2cd3,function(_0x235f68){if(_0x235f68['type']!=='VIRTUAL'){var _0x45f831={};_0x45f831[_0x235f68[_0xa9de('0x34')]]={'$like':'%'+_0x554bf5[_0xa9de('0x3a')][_0xa9de('0x46')]+'%'};return _0x45f831;}})});}_0x2f8a58=_[_0xa9de('0x47')]({},_0x2f8a58,_0x554bf5[_0xa9de('0x48')]);var _0x535ffe={'where':_0x2f8a58[_0xa9de('0x45')]};return db[_0xa9de('0x49')][_0xa9de('0x2c')](_0x535ffe)['then'](function(_0xd949fc){_0xc306b8[_0xa9de('0x2c')]=_0xd949fc;if(_0x554bf5[_0xa9de('0x3a')][_0xa9de('0x4a')]){_0x2f8a58['include']=[{'all':!![]}];}return db[_0xa9de('0x49')][_0xa9de('0x4b')](_0x2f8a58);})[_0xa9de('0x1c')](function(_0x277479){_0xc306b8[_0xa9de('0x4c')]=_0x277479;return _0xc306b8;})['then'](respondWithFilteredResult(_0x147a29,_0x2f8a58))[_0xa9de('0x24')](handleError(_0x147a29,null));};exports[_0xa9de('0x4d')]=function(_0x44f290,_0x1f2bc5){var _0x23097d={'raw':![],'where':{'id':_0x44f290[_0xa9de('0x4e')]['id']}},_0x1cae4c={};_0x1cae4c[_0xa9de('0x3e')]=_[_0xa9de('0x3b')](db[_0xa9de('0x49')][_0xa9de('0x37')]);_0x1cae4c[_0xa9de('0x3a')]=_[_0xa9de('0x3b')](_0x44f290[_0xa9de('0x3a')]);_0x1cae4c[_0xa9de('0x3c')]=_[_0xa9de('0x3d')](_0x1cae4c[_0xa9de('0x3e')],_0x1cae4c['query']);_0x23097d['attributes']=_[_0xa9de('0x3d')](_0x1cae4c[_0xa9de('0x3e')],qs['fields'](_0x44f290[_0xa9de('0x3a')][_0xa9de('0x3f')]));_0x23097d[_0xa9de('0x40')]=_0x23097d['attributes'][_0xa9de('0x41')]?_0x23097d[_0xa9de('0x40')]:_0x1cae4c[_0xa9de('0x3e')];if(_0x44f290[_0xa9de('0x3a')][_0xa9de('0x4a')]){_0x23097d[_0xa9de('0x4f')]=[{'all':!![]}];}_0x23097d=_[_0xa9de('0x47')]({},_0x23097d,_0x44f290[_0xa9de('0x48')]);return db[_0xa9de('0x49')][_0xa9de('0x50')](_0x23097d)[_0xa9de('0x1c')](handleEntityNotFound(_0x1f2bc5,null))[_0xa9de('0x1c')](respondWithResult(_0x1f2bc5,null))['catch'](handleError(_0x1f2bc5,null));};exports[_0xa9de('0x51')]=function(_0x3fcd37,_0x156e5a,_0x543ed4){var _0x57ecfb;return db[_0xa9de('0x49')][_0xa9de('0x51')](_0x3fcd37[_0xa9de('0x52')],{'raw':!![]})[_0xa9de('0x1c')](function(_0x4202a2){_0x57ecfb=_0x4202a2;return db['VoiceContext']['findAll']({'raw':!![]});})[_0xa9de('0x1c')](function(_0x28fd66){var _0x15d1f7=fs['readFileSync'](path[_0xa9de('0x53')](config['root'],_0xa9de('0x54')),_0xa9de('0x55'));var _0x2d5854=ejs[_0xa9de('0x56')](_0x15d1f7,{'contexts':_0x28fd66||[]});fs['writeFileSync'](_0xa9de('0x57'),_0x2d5854);})[_0xa9de('0x1c')](function(){return respondWithRpcPromise(_0xa9de('0x58'),'create',{'module':_0xa9de('0x59')});})[_0xa9de('0x1c')](function(){var _0x105b70=_0x3fcd37['user']['get']({'plain':!![]});if(!_0x105b70)throw new Error(_0xa9de('0x5a'));if(_0x105b70['role']===_0xa9de('0x5b')){var _0xc20819=_0x57ecfb[_0xa9de('0x31')]({'plain':!![]});return db['UserProfileSection'][_0xa9de('0x50')]({'where':{'name':_0xa9de('0x32'),'userProfileId':_0x105b70[_0xa9de('0x5c')]},'raw':!![]})['then'](function(_0x5aeb36){if(_0x5aeb36&&_0x5aeb36[_0xa9de('0x5d')]===0x0){return db[_0xa9de('0x5e')][_0xa9de('0x51')]({'name':_0xc20819[_0xa9de('0x34')],'resourceId':_0xc20819['id'],'type':_0x5aeb36[_0xa9de('0x34')],'sectionId':_0x5aeb36['id']},{})[_0xa9de('0x1c')](function(){return _0x57ecfb;});}else{return _0x57ecfb;}})[_0xa9de('0x24')](function(_0x3f96dc){logger[_0xa9de('0x21')](_0xa9de('0x5f'),_0x3f96dc);throw _0x3f96dc;});}return _0x57ecfb;})[_0xa9de('0x1c')](respondWithResult(_0x156e5a,0xc9))[_0xa9de('0x24')](handleError(_0x156e5a,null));};exports['update']=function(_0x1128fa,_0x19977d,_0xb29e44){var _0x1a510d;return db[_0xa9de('0x49')][_0xa9de('0x50')]({'where':{'id':_0x1128fa['params']['id']}})[_0xa9de('0x1c')](handleEntityNotFound(_0x19977d,null))[_0xa9de('0x1c')](saveUpdates(_0x1128fa['body'],null))[_0xa9de('0x1c')](function(_0x13f1c9){if(_0x13f1c9){_0x1a510d=_0x13f1c9;return db[_0xa9de('0x49')][_0xa9de('0x4b')]({'raw':!![]});}})[_0xa9de('0x1c')](function(_0x563c6e){var _0x37adeb=fs['readFileSync'](path[_0xa9de('0x53')](config[_0xa9de('0x60')],'server/files/templates/context.ejs'),_0xa9de('0x55'));var _0x5ee50a=ejs[_0xa9de('0x56')](_0x37adeb,{'contexts':_0x563c6e||[]});fs[_0xa9de('0x61')](_0xa9de('0x57'),_0x5ee50a);})[_0xa9de('0x1c')](function(){return respondWithRpcPromise('Reload',_0xa9de('0x2f'),{'module':'chan_sip.so'});})[_0xa9de('0x1c')](function(){return _0x1a510d;})[_0xa9de('0x1c')](respondWithResult(_0x19977d,null))[_0xa9de('0x24')](handleError(_0x19977d,null));};exports[_0xa9de('0x30')]=function(_0x33062f,_0x492df7,_0xda9087){var _0x19aa41;return db['VoiceContext'][_0xa9de('0x50')]({'where':{'id':_0x33062f[_0xa9de('0x4e')]['id']}})[_0xa9de('0x1c')](handleEntityNotFound(_0x492df7,null))[_0xa9de('0x1c')](removeEntity(_0x492df7,null))[_0xa9de('0x1c')](function(){return db['VoiceContext'][_0xa9de('0x4b')]({'raw':!![]});})[_0xa9de('0x1c')](function(_0x1ea379){var _0xc36e=fs[_0xa9de('0x62')](path[_0xa9de('0x53')](config[_0xa9de('0x60')],'server/files/templates/context.ejs'),_0xa9de('0x55'));var _0x27e007=ejs[_0xa9de('0x56')](_0xc36e,{'contexts':_0x1ea379});fs[_0xa9de('0x61')](_0xa9de('0x57'),_0x27e007);return respondWithRpcPromise(_0xa9de('0x58'),'destroy',{'module':'chan_sip.so'});})[_0xa9de('0x24')](handleError(_0x492df7,null));};
\ No newline at end of file
+var _0x3704=['sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','status','stack','name','send','VoiceContext','type','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','includeAll','include','findAll','rows','show','params','create','body','readFileSync','root','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','render','chan_sip.so','join','server/files/templates/context.ejs','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3704,0x18a));var _0x4370=function(_0x438a32,_0x393e3b){_0x438a32=_0x438a32-0x0;var _0x4fa356=_0x3704[_0x438a32];return _0x4fa356;};'use strict';var emlformat=require(_0x4370('0x0'));var rimraf=require(_0x4370('0x1'));var zipdir=require(_0x4370('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4370('0x3'));var moment=require('moment');var BPromise=require(_0x4370('0x4'));var Mustache=require(_0x4370('0x5'));var util=require('util');var path=require('path');var sox=require(_0x4370('0x6'));var csv=require(_0x4370('0x7'));var ejs=require(_0x4370('0x8'));var fs=require('fs');var fs_extra=require(_0x4370('0x9'));var _=require(_0x4370('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4370('0xb'));var deskjs=require(_0x4370('0xc'));var toCsv=require(_0x4370('0x7'));var querystring=require('querystring');var Papa=require(_0x4370('0xd'));var Redis=require(_0x4370('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x4370('0xf'));var as=require(_0x4370('0x10'));var hardwareService=require(_0x4370('0x11'));var logger=require(_0x4370('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x4370('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x4370('0x14'))['db'];var jayson=require(_0x4370('0x15'));var client=jayson[_0x4370('0x16')][_0x4370('0x17')]({'port':0x232a});function respondWithRpcPromise(_0x1b0af7,_0x6561e1,_0x38fa2c,_0x3f3bab){return new BPromise(function(_0x4f66a4,_0x7cf10){var _0x3f9eae=_0x3f3bab||client;return _0x3f9eae[_0x4370('0x18')](_0x1b0af7,_0x38fa2c)[_0x4370('0x19')](function(_0x24422b){logger[_0x4370('0x1a')](_0x4370('0x1b'),_0x6561e1,_0x4370('0x1c'));logger[_0x4370('0x1d')](_0x4370('0x1e'),_0x6561e1,_0x4370('0x1c'),JSON[_0x4370('0x1f')](_0x24422b));if(_0x24422b[_0x4370('0x20')]){if(_0x24422b[_0x4370('0x20')]['code']===0x1f4){logger['error'](_0x4370('0x1b'),_0x6561e1,_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);return _0x7cf10(_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);}logger[_0x4370('0x20')]('VoiceContext,\x20%s,\x20%s',_0x6561e1,_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);return _0x4f66a4(_0x24422b[_0x4370('0x20')][_0x4370('0x21')]);}else{logger[_0x4370('0x1a')]('VoiceContext,\x20%s,\x20%s',_0x6561e1,'request\x20sent');_0x4f66a4(_0x24422b[_0x4370('0x22')][_0x4370('0x21')]);}})[_0x4370('0x23')](function(_0xbd4107){logger[_0x4370('0x20')](_0x4370('0x1b'),_0x6561e1,_0xbd4107);_0x7cf10(_0xbd4107);});});}function respondWithStatusCode(_0x3fd3d5,_0x5a5e28){_0x5a5e28=_0x5a5e28||0xcc;return function(_0x59653d){if(_0x59653d){return _0x3fd3d5[_0x4370('0x24')](_0x5a5e28);}return _0x3fd3d5['status'](_0x5a5e28)[_0x4370('0x25')]();};}function respondWithResult(_0x2bd7e8,_0x1ecaeb){_0x1ecaeb=_0x1ecaeb||0xc8;return function(_0x31ab86){if(_0x31ab86){return _0x2bd7e8['status'](_0x1ecaeb)[_0x4370('0x26')](_0x31ab86);}};}function respondWithFilteredResult(_0xdc7a9a,_0x384d0f){return function(_0x18b872){if(_0x18b872){var _0x3179f3=typeof _0x384d0f[_0x4370('0x27')]===_0x4370('0x28')&&typeof _0x384d0f[_0x4370('0x29')]==='undefined';var _0x3cf859=_0x18b872[_0x4370('0x2a')];var _0x44bb2e=_0x3179f3?0x0:_0x384d0f[_0x4370('0x27')];var _0x3425fb=_0x3179f3?_0x18b872[_0x4370('0x2a')]:_0x384d0f[_0x4370('0x27')]+_0x384d0f[_0x4370('0x29')];var _0x346247;if(_0x3425fb>=_0x3cf859){_0x3425fb=_0x3cf859;_0x346247=0xc8;}else{_0x346247=0xce;}_0xdc7a9a['status'](_0x346247);return _0xdc7a9a['set'](_0x4370('0x2b'),_0x44bb2e+'-'+_0x3425fb+'/'+_0x3cf859)[_0x4370('0x26')](_0x18b872);}return null;};}function patchUpdates(_0xb7ec7e){return function(_0xee92b3){try{jsonpatch[_0x4370('0x2c')](_0xee92b3,_0xb7ec7e,!![]);}catch(_0xf6fdbb){return BPromise[_0x4370('0x2d')](_0xf6fdbb);}return _0xee92b3[_0x4370('0x2e')]();};}function saveUpdates(_0x40ece3,_0x3f1529){return function(_0x5c19ce){if(_0x5c19ce){return _0x5c19ce[_0x4370('0x2f')](_0x40ece3)['then'](function(_0x522c02){return _0x522c02;});}return null;};}function removeEntity(_0x4be63b,_0x142305){return function(_0x38cdfd){if(_0x38cdfd){return _0x38cdfd[_0x4370('0x30')]()[_0x4370('0x19')](function(){var _0x462c8d=_0x38cdfd[_0x4370('0x31')]({'plain':!![]});var _0x5bdf73=_0x4370('0x32');return db[_0x4370('0x33')]['destroy']({'where':{'type':_0x5bdf73,'resourceId':_0x462c8d['id']}})['then'](function(){return _0x38cdfd;});})[_0x4370('0x19')](function(){_0x4be63b[_0x4370('0x34')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2e58a6,_0x70bbe0){return function(_0xcafc){if(!_0xcafc){_0x2e58a6[_0x4370('0x24')](0x194);}return _0xcafc;};}function handleError(_0x2c33fc,_0x504e33){_0x504e33=_0x504e33||0x1f4;return function(_0x104886){logger[_0x4370('0x20')](_0x104886[_0x4370('0x35')]);if(_0x104886[_0x4370('0x36')]){delete _0x104886[_0x4370('0x36')];}_0x2c33fc[_0x4370('0x34')](_0x504e33)[_0x4370('0x37')](_0x104886);};}exports['index']=function(_0x2e7f7a,_0x42c556){var _0x5c8d92={},_0xdf791e={},_0x5becd4={'count':0x0,'rows':[]};var _0x1e320d=_['map'](db[_0x4370('0x38')]['rawAttributes'],function(_0x37c8c7){return{'name':_0x37c8c7['fieldName'],'type':_0x37c8c7[_0x4370('0x39')]['key']};});_0xdf791e['model']=_['map'](_0x1e320d,_0x4370('0x36'));_0xdf791e['query']=_[_0x4370('0x3a')](_0x2e7f7a[_0x4370('0x3b')]);_0xdf791e[_0x4370('0x3c')]=_[_0x4370('0x3d')](_0xdf791e[_0x4370('0x3e')],_0xdf791e[_0x4370('0x3b')]);_0x5c8d92['attributes']=_[_0x4370('0x3d')](_0xdf791e['model'],qs[_0x4370('0x3f')](_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x3f')]));_0x5c8d92[_0x4370('0x40')]=_0x5c8d92[_0x4370('0x40')][_0x4370('0x41')]?_0x5c8d92[_0x4370('0x40')]:_0xdf791e[_0x4370('0x3e')];if(!_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x42')](_0x4370('0x43'))){_0x5c8d92[_0x4370('0x29')]=qs[_0x4370('0x29')](_0x2e7f7a['query'][_0x4370('0x29')]);_0x5c8d92[_0x4370('0x27')]=qs[_0x4370('0x27')](_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x27')]);}_0x5c8d92[_0x4370('0x44')]=qs[_0x4370('0x45')](_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x45')]);_0x5c8d92[_0x4370('0x46')]=qs['filters'](_[_0x4370('0x47')](_0x2e7f7a[_0x4370('0x3b')],_0xdf791e[_0x4370('0x3c')]),_0x1e320d);if(_0x2e7f7a[_0x4370('0x3b')]['filter']){_0x5c8d92['where']=_[_0x4370('0x48')](_0x5c8d92[_0x4370('0x46')],{'$or':_[_0x4370('0x49')](_0x1e320d,function(_0x5a7407){if(_0x5a7407[_0x4370('0x39')]!=='VIRTUAL'){var _0x47474a={};_0x47474a[_0x5a7407[_0x4370('0x36')]]={'$like':'%'+_0x2e7f7a['query'][_0x4370('0x4a')]+'%'};return _0x47474a;}})});}_0x5c8d92=_['merge']({},_0x5c8d92,_0x2e7f7a[_0x4370('0x4b')]);var _0x3e814b={'where':_0x5c8d92[_0x4370('0x46')]};return db['VoiceContext']['count'](_0x3e814b)[_0x4370('0x19')](function(_0x847c1e){_0x5becd4['count']=_0x847c1e;if(_0x2e7f7a[_0x4370('0x3b')][_0x4370('0x4c')]){_0x5c8d92[_0x4370('0x4d')]=[{'all':!![]}];}return db[_0x4370('0x38')][_0x4370('0x4e')](_0x5c8d92);})[_0x4370('0x19')](function(_0x1c6c42){_0x5becd4[_0x4370('0x4f')]=_0x1c6c42;return _0x5becd4;})[_0x4370('0x19')](respondWithFilteredResult(_0x42c556,_0x5c8d92))[_0x4370('0x23')](handleError(_0x42c556,null));};exports[_0x4370('0x50')]=function(_0x5ca3ce,_0x1adc52){var _0x77b664={'raw':![],'where':{'id':_0x5ca3ce[_0x4370('0x51')]['id']}},_0x14fcde={};_0x14fcde[_0x4370('0x3e')]=_[_0x4370('0x3a')](db['VoiceContext']['rawAttributes']);_0x14fcde[_0x4370('0x3b')]=_[_0x4370('0x3a')](_0x5ca3ce[_0x4370('0x3b')]);_0x14fcde[_0x4370('0x3c')]=_[_0x4370('0x3d')](_0x14fcde[_0x4370('0x3e')],_0x14fcde[_0x4370('0x3b')]);_0x77b664[_0x4370('0x40')]=_[_0x4370('0x3d')](_0x14fcde[_0x4370('0x3e')],qs['fields'](_0x5ca3ce[_0x4370('0x3b')][_0x4370('0x3f')]));_0x77b664[_0x4370('0x40')]=_0x77b664[_0x4370('0x40')][_0x4370('0x41')]?_0x77b664[_0x4370('0x40')]:_0x14fcde[_0x4370('0x3e')];if(_0x5ca3ce[_0x4370('0x3b')][_0x4370('0x4c')]){_0x77b664[_0x4370('0x4d')]=[{'all':!![]}];}_0x77b664=_[_0x4370('0x48')]({},_0x77b664,_0x5ca3ce[_0x4370('0x4b')]);return db['VoiceContext']['find'](_0x77b664)[_0x4370('0x19')](handleEntityNotFound(_0x1adc52,null))['then'](respondWithResult(_0x1adc52,null))[_0x4370('0x23')](handleError(_0x1adc52,null));};exports[_0x4370('0x52')]=function(_0x590f1d,_0x5e47ca,_0xbb229){var _0x193e0b;return db['VoiceContext'][_0x4370('0x52')](_0x590f1d[_0x4370('0x53')],{'raw':!![]})[_0x4370('0x19')](function(_0x51ed56){_0x193e0b=_0x51ed56;return db['VoiceContext'][_0x4370('0x4e')]({'raw':!![]});})[_0x4370('0x19')](function(_0x52791a){var _0x3d6231=fs[_0x4370('0x54')](path['join'](config[_0x4370('0x55')],'server/files/templates/context.ejs'),_0x4370('0x56'));var _0x579b23=ejs['render'](_0x3d6231,{'contexts':_0x52791a||[]});fs[_0x4370('0x57')](_0x4370('0x58'),_0x579b23);})[_0x4370('0x19')](function(){return respondWithRpcPromise(_0x4370('0x59'),'create',{'module':'chan_sip.so'});})['then'](function(){var _0x2af3a6=_0x590f1d['user'][_0x4370('0x31')]({'plain':!![]});if(!_0x2af3a6)throw new Error(_0x4370('0x5a'));if(_0x2af3a6['role']===_0x4370('0x5b')){var _0x18b335=_0x193e0b['get']({'plain':!![]});return db['UserProfileSection'][_0x4370('0x5c')]({'where':{'name':_0x4370('0x32'),'userProfileId':_0x2af3a6[_0x4370('0x5d')]},'raw':!![]})[_0x4370('0x19')](function(_0xa1d422){if(_0xa1d422&&_0xa1d422[_0x4370('0x5e')]===0x0){return db['UserProfileResource'][_0x4370('0x52')]({'name':_0x18b335[_0x4370('0x36')],'resourceId':_0x18b335['id'],'type':_0xa1d422[_0x4370('0x36')],'sectionId':_0xa1d422['id']},{})[_0x4370('0x19')](function(){return _0x193e0b;});}else{return _0x193e0b;}})[_0x4370('0x23')](function(_0x1414d2){logger[_0x4370('0x20')](_0x4370('0x5f'),_0x1414d2);throw _0x1414d2;});}return _0x193e0b;})[_0x4370('0x19')](respondWithResult(_0x5e47ca,0xc9))['catch'](handleError(_0x5e47ca,null));};exports[_0x4370('0x2f')]=function(_0x224180,_0x491790,_0x19201b){var _0x3782d6;return db[_0x4370('0x38')]['find']({'where':{'id':_0x224180['params']['id']}})[_0x4370('0x19')](handleEntityNotFound(_0x491790,null))['then'](saveUpdates(_0x224180[_0x4370('0x53')],null))[_0x4370('0x19')](function(_0x229e3f){if(_0x229e3f){_0x3782d6=_0x229e3f;return db[_0x4370('0x38')][_0x4370('0x4e')]({'raw':!![]});}})['then'](function(_0xfed58b){var _0x561d48=fs[_0x4370('0x54')](path['join'](config[_0x4370('0x55')],'server/files/templates/context.ejs'),_0x4370('0x56'));var _0x33bda6=ejs[_0x4370('0x60')](_0x561d48,{'contexts':_0xfed58b||[]});fs['writeFileSync'](_0x4370('0x58'),_0x33bda6);})['then'](function(){return respondWithRpcPromise(_0x4370('0x59'),_0x4370('0x2f'),{'module':_0x4370('0x61')});})[_0x4370('0x19')](function(){return _0x3782d6;})[_0x4370('0x19')](respondWithResult(_0x491790,null))[_0x4370('0x23')](handleError(_0x491790,null));};exports[_0x4370('0x30')]=function(_0x2a8ded,_0x5a9b3c,_0x26ba27){var _0x550c17;return db[_0x4370('0x38')][_0x4370('0x5c')]({'where':{'id':_0x2a8ded[_0x4370('0x51')]['id']}})['then'](handleEntityNotFound(_0x5a9b3c,null))[_0x4370('0x19')](removeEntity(_0x5a9b3c,null))[_0x4370('0x19')](function(){return db[_0x4370('0x38')][_0x4370('0x4e')]({'raw':!![]});})['then'](function(_0x170691){var _0x4054b4=fs[_0x4370('0x54')](path[_0x4370('0x62')](config[_0x4370('0x55')],_0x4370('0x63')),_0x4370('0x56'));var _0x51703=ejs[_0x4370('0x60')](_0x4054b4,{'contexts':_0x170691});fs['writeFileSync'](_0x4370('0x58'),_0x51703);return respondWithRpcPromise(_0x4370('0x59'),_0x4370('0x30'),{'module':'chan_sip.so'});})['catch'](handleError(_0x5a9b3c,null));};
\ No newline at end of file
index cdd088d..0200ed0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2100=['../../config/environment','exports','define','voice_contexts','api','moment','rimraf'];(function(_0x44330c,_0x22f9b5){var _0x5b3cd9=function(_0x3fa058){while(--_0x3fa058){_0x44330c['push'](_0x44330c['shift']());}};_0x5b3cd9(++_0x22f9b5);}(_0x2100,0x15b));var _0x0210=function(_0x48d6a3,_0x37c848){_0x48d6a3=_0x48d6a3-0x0;var _0x38bfa0=_0x2100[_0x48d6a3];return _0x38bfa0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x0210('0x0'));var moment=require(_0x0210('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x0210('0x2'));var config=require(_0x0210('0x3'));var attributes=require('./voiceContext.attributes');module[_0x0210('0x4')]=function(_0x378158,_0x148df6){return _0x378158[_0x0210('0x5')]('VoiceContext',attributes,{'tableName':_0x0210('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4028=['api','moment','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','VoiceContext','voice_contexts','util','../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4028,0x15a));var _0x8402=function(_0x368719,_0x5a8f7e){_0x368719=_0x368719-0x0;var _0x524864=_0x4028[_0x368719];return _0x524864;};'use strict';var _=require('lodash');var util=require(_0x8402('0x0'));var logger=require(_0x8402('0x1'))(_0x8402('0x2'));var moment=require(_0x8402('0x3'));var BPromise=require('bluebird');var rp=require(_0x8402('0x4'));var fs=require('fs');var path=require(_0x8402('0x5'));var rimraf=require(_0x8402('0x6'));var config=require(_0x8402('0x7'));var attributes=require(_0x8402('0x8'));module[_0x8402('0x9')]=function(_0x2bc6ad,_0x47ca61){return _0x2bc6ad['define'](_0x8402('0xa'),attributes,{'tableName':_0x8402('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 47ad1a0..b39be1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb114=['rpc','../../config/environment','client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x37382e,_0x43baef){var _0x1caf12=function(_0x3b9ff8){while(--_0x3b9ff8){_0x37382e['push'](_0x37382e['shift']());}};_0x1caf12(++_0x43baef);}(_0xb114,0x11f));var _0x4b11=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xb114[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x4b11('0x0'));var util=require('util');var moment=require(_0x4b11('0x1'));var BPromise=require(_0x4b11('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4b11('0x3'));var db=require(_0x4b11('0x4'))['db'];var utils=require(_0x4b11('0x5'));var logger=require(_0x4b11('0x6'))(_0x4b11('0x7'));var config=require(_0x4b11('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4b11('0x9')][_0x4b11('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41fac6,_0x91f371,_0x132ad2){return new BPromise(function(_0x283039,_0x25ff0a){return client['request'](_0x41fac6,_0x132ad2)[_0x4b11('0xb')](function(_0x4cde8d){logger[_0x4b11('0xc')](_0x4b11('0xd'),_0x91f371,_0x4b11('0xe'));logger[_0x4b11('0xf')](_0x4b11('0x10'),_0x91f371,_0x4b11('0xe'),JSON['stringify'](_0x4cde8d));if(_0x4cde8d[_0x4b11('0x11')]){if(_0x4cde8d[_0x4b11('0x11')][_0x4b11('0x12')]===0x1f4){logger[_0x4b11('0x11')]('VoiceContext,\x20%s,\x20%s',_0x91f371,_0x4cde8d['error'][_0x4b11('0x13')]);return _0x25ff0a(_0x4cde8d[_0x4b11('0x11')][_0x4b11('0x13')]);}logger[_0x4b11('0x11')](_0x4b11('0xd'),_0x91f371,_0x4cde8d[_0x4b11('0x11')][_0x4b11('0x13')]);return _0x283039(_0x4cde8d[_0x4b11('0x11')]['message']);}else{logger['info'](_0x4b11('0xd'),_0x91f371,_0x4b11('0xe'));_0x283039(_0x4cde8d[_0x4b11('0x14')]['message']);}})['catch'](function(_0x4dd039){logger[_0x4b11('0x11')](_0x4b11('0xd'),_0x91f371,_0x4dd039);_0x25ff0a(_0x4dd039);});});}
\ No newline at end of file
+var _0x29a6=['VoiceContext,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2a04b4,_0x39ccf7){var _0xc1ad77=function(_0xbdc202){while(--_0xbdc202){_0x2a04b4['push'](_0x2a04b4['shift']());}};_0xc1ad77(++_0x39ccf7);}(_0x29a6,0xd9));var _0x629a=function(_0x467d33,_0x5997f9){_0x467d33=_0x467d33-0x0;var _0x153273=_0x29a6[_0x467d33];return _0x153273;};'use strict';var _=require(_0x629a('0x0'));var util=require('util');var moment=require(_0x629a('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x629a('0x2'));var db=require(_0x629a('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x629a('0x4'));var jayson=require(_0x629a('0x5'));var client=jayson[_0x629a('0x6')][_0x629a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xa5a8b1,_0x5ad892,_0x36ef14){return new BPromise(function(_0x19fbb7,_0x5aa0bb){return client[_0x629a('0x8')](_0xa5a8b1,_0x36ef14)[_0x629a('0x9')](function(_0x2e52fc){logger[_0x629a('0xa')](_0x629a('0xb'),_0x5ad892,_0x629a('0xc'));logger[_0x629a('0xd')](_0x629a('0xe'),_0x5ad892,_0x629a('0xc'),JSON[_0x629a('0xf')](_0x2e52fc));if(_0x2e52fc['error']){if(_0x2e52fc['error'][_0x629a('0x10')]===0x1f4){logger[_0x629a('0x11')](_0x629a('0xb'),_0x5ad892,_0x2e52fc[_0x629a('0x11')]['message']);return _0x5aa0bb(_0x2e52fc[_0x629a('0x11')][_0x629a('0x12')]);}logger[_0x629a('0x11')](_0x629a('0xb'),_0x5ad892,_0x2e52fc[_0x629a('0x11')][_0x629a('0x12')]);return _0x19fbb7(_0x2e52fc[_0x629a('0x11')][_0x629a('0x12')]);}else{logger['info'](_0x629a('0xb'),_0x5ad892,_0x629a('0xc'));_0x19fbb7(_0x2e52fc[_0x629a('0x13')][_0x629a('0x12')]);}})[_0x629a('0x14')](function(_0x2d905f){logger[_0x629a('0x11')](_0x629a('0xb'),_0x5ad892,_0x2d905f);_0x5aa0bb(_0x2d905f);});});}
\ No newline at end of file
index 60e53b3..c98977e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf0a=['create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','./voiceDialReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0xdf0a,0x1a9));var _0xadf0=function(_0x172511,_0x23bf9f){_0x172511=_0x172511-0x0;var _0x12466b=_0xdf0a[_0x172511];return _0x12466b;};'use strict';var multer=require(_0xadf0('0x0'));var util=require(_0xadf0('0x1'));var path=require(_0xadf0('0x2'));var timeout=require(_0xadf0('0x3'));var express=require(_0xadf0('0x4'));var router=express['Router']();var fs_extra=require(_0xadf0('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xadf0('0x6'));var controller=require(_0xadf0('0x7'));router['get']('/',auth[_0xadf0('0x8')](),controller[_0xadf0('0x9')]);router[_0xadf0('0xa')](_0xadf0('0xb'),auth[_0xadf0('0x8')](),controller[_0xadf0('0xc')]);router[_0xadf0('0xa')](_0xadf0('0xd'),auth['isAuthenticated'](),controller[_0xadf0('0xe')]);router[_0xadf0('0xf')]('/',auth[_0xadf0('0x8')](),controller[_0xadf0('0x10')]);router['put'](_0xadf0('0xd'),auth[_0xadf0('0x8')](),controller[_0xadf0('0x11')]);router[_0xadf0('0x12')](_0xadf0('0xd'),auth['isAuthenticated'](),controller[_0xadf0('0x13')]);module[_0xadf0('0x14')]=router;
\ No newline at end of file
+var _0x62cc=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','/describe','describe','show','post','put','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x62cc,0xb1));var _0xc62c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x62cc[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xc62c('0x0'));var util=require(_0xc62c('0x1'));var path=require(_0xc62c('0x2'));var timeout=require(_0xc62c('0x3'));var express=require(_0xc62c('0x4'));var router=express[_0xc62c('0x5')]();var fs_extra=require(_0xc62c('0x6'));var auth=require(_0xc62c('0x7'));var interaction=require(_0xc62c('0x8'));var config=require(_0xc62c('0x9'));var controller=require(_0xc62c('0xa'));router[_0xc62c('0xb')]('/',auth[_0xc62c('0xc')](),controller['index']);router['get'](_0xc62c('0xd'),auth[_0xc62c('0xc')](),controller[_0xc62c('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xc62c('0xf')]);router[_0xc62c('0x10')]('/',auth[_0xc62c('0xc')](),controller['create']);router[_0xc62c('0x11')]('/:id',auth[_0xc62c('0xc')](),controller[_0xc62c('0x12')]);router[_0xc62c('0x13')](_0xc62c('0x14'),auth[_0xc62c('0xc')](),controller[_0xc62c('0x15')]);module[_0xc62c('0x16')]=router;
\ No newline at end of file
index 4275d80..48fc28b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x1dfa80,_0x20841b){var _0x5043d2=function(_0x5d8239){while(--_0x5d8239){_0x1dfa80['push'](_0x1dfa80['shift']());}};_0x5043d2(++_0x20841b);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x3abe6a,_0xdd7b1a){_0x3abe6a=_0x3abe6a-0x0;var _0x2fc39e=_0xf3cd[_0x3abe6a];return _0x2fc39e;};'use strict';var Sequelize=require(_0xdf3c('0x0'));module[_0xdf3c('0x1')]={'privilege':{'type':Sequelize[_0xdf3c('0x2')]},'channel':{'type':Sequelize[_0xdf3c('0x2')]},'channelstate':{'type':Sequelize[_0xdf3c('0x3')]},'channelstatedesc':{'type':Sequelize[_0xdf3c('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xdf3c('0x2')]},'connectedlinenum':{'type':Sequelize[_0xdf3c('0x2')]},'connectedlinename':{'type':Sequelize[_0xdf3c('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xdf3c('0x2')]},'context':{'type':Sequelize[_0xdf3c('0x2')]},'exten':{'type':Sequelize[_0xdf3c('0x2')]},'priority':{'type':Sequelize[_0xdf3c('0x3')]},'uniqueid':{'type':Sequelize[_0xdf3c('0x2')]},'linkedid':{'type':Sequelize[_0xdf3c('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xdf3c('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xdf3c('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xdf3c('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xdf3c('0x2')]},'destaccountcode':{'type':Sequelize[_0xdf3c('0x2')]},'destcontext':{'type':Sequelize[_0xdf3c('0x2')]},'destexten':{'type':Sequelize[_0xdf3c('0x2')]},'destpriority':{'type':Sequelize[_0xdf3c('0x3')]},'destuniqueid':{'type':Sequelize[_0xdf3c('0x2')]},'destlinkedid':{'type':Sequelize[_0xdf3c('0x2')]},'dialstring':{'type':Sequelize[_0xdf3c('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xdf3c('0x4')]},'answertime':{'type':Sequelize[_0xdf3c('0x4')]},'endtime':{'type':Sequelize[_0xdf3c('0x4')]},'lastevent':{'type':Sequelize[_0xdf3c('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xdf3c('0x3')]},'duration':{'type':Sequelize[_0xdf3c('0x3')]},'holdtime':{'type':Sequelize[_0xdf3c('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9bde=['exports','STRING','INTEGER','DATE','called,connect,complete'];(function(_0x208952,_0x3fb45c){var _0x419479=function(_0xa1f3a7){while(--_0xa1f3a7){_0x208952['push'](_0x208952['shift']());}};_0x419479(++_0x3fb45c);}(_0x9bde,0xe1));var _0xe9bd=function(_0x4cadd6,_0x32b3d2){_0x4cadd6=_0x4cadd6-0x0;var _0x18239c=_0x9bde[_0x4cadd6];return _0x18239c;};'use strict';var Sequelize=require('sequelize');module[_0xe9bd('0x0')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xe9bd('0x1')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xe9bd('0x1')]},'calleridnum':{'type':Sequelize[_0xe9bd('0x1')]},'calleridname':{'type':Sequelize[_0xe9bd('0x1')]},'connectedlinenum':{'type':Sequelize[_0xe9bd('0x1')]},'connectedlinename':{'type':Sequelize[_0xe9bd('0x1')]},'language':{'type':Sequelize[_0xe9bd('0x1')]},'accountcode':{'type':Sequelize[_0xe9bd('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xe9bd('0x1')]},'priority':{'type':Sequelize[_0xe9bd('0x2')]},'uniqueid':{'type':Sequelize[_0xe9bd('0x1')]},'linkedid':{'type':Sequelize[_0xe9bd('0x1')]},'destchannel':{'type':Sequelize[_0xe9bd('0x1')]},'destchannelstate':{'type':Sequelize[_0xe9bd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xe9bd('0x1')]},'destcalleridnum':{'type':Sequelize[_0xe9bd('0x1')]},'destcalleridname':{'type':Sequelize[_0xe9bd('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xe9bd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xe9bd('0x1')]},'destcontext':{'type':Sequelize[_0xe9bd('0x1')]},'destexten':{'type':Sequelize[_0xe9bd('0x1')]},'destpriority':{'type':Sequelize['INTEGER']},'destuniqueid':{'type':Sequelize[_0xe9bd('0x1')]},'destlinkedid':{'type':Sequelize[_0xe9bd('0x1')]},'dialstring':{'type':Sequelize[_0xe9bd('0x1')]},'dialstatus':{'type':Sequelize[_0xe9bd('0x1')]},'starttime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe9bd('0x3')]},'endtime':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0xe9bd('0x1')],'comment':_0xe9bd('0x4')},'routeId':{'type':Sequelize[_0xe9bd('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0xe9bd('0x2')]}};
\ No newline at end of file
index 9670472..1ce656f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc0=['where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','include','options','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','count','limit','set','json','apply','reject','save','then','destroy','sendStatus','error','name','send','map','VoiceDialReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort'];(function(_0x183f5a,_0x5174b0){var _0x228f16=function(_0x542b76){while(--_0x542b76){_0x183f5a['push'](_0x183f5a['shift']());}};_0x228f16(++_0x5174b0);}(_0xbcc0,0x192));var _0x0bcc=function(_0x3f22f1,_0x102ad9){_0x3f22f1=_0x3f22f1-0x0;var _0x1b57fc=_0xbcc0[_0x3f22f1];return _0x1b57fc;};'use strict';var emlformat=require(_0x0bcc('0x0'));var rimraf=require(_0x0bcc('0x1'));var zipdir=require(_0x0bcc('0x2'));var jsonpatch=require(_0x0bcc('0x3'));var rp=require(_0x0bcc('0x4'));var moment=require(_0x0bcc('0x5'));var BPromise=require(_0x0bcc('0x6'));var Mustache=require(_0x0bcc('0x7'));var util=require(_0x0bcc('0x8'));var path=require('path');var sox=require(_0x0bcc('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0bcc('0xa'));var _=require(_0x0bcc('0xb'));var squel=require(_0x0bcc('0xc'));var crypto=require('crypto');var jsforce=require(_0x0bcc('0xd'));var deskjs=require(_0x0bcc('0xe'));var toCsv=require(_0x0bcc('0xf'));var querystring=require(_0x0bcc('0x10'));var Papa=require(_0x0bcc('0x11'));var Redis=require('ioredis');var authService=require(_0x0bcc('0x12'));var qs=require(_0x0bcc('0x13'));var as=require(_0x0bcc('0x14'));var hardwareService=require(_0x0bcc('0x15'));var logger=require(_0x0bcc('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x0bcc('0x17'));var licenseUtil=require(_0x0bcc('0x18'));var db=require(_0x0bcc('0x19'))['db'];function respondWithStatusCode(_0x1c9123,_0xb519c6){_0xb519c6=_0xb519c6||0xcc;return function(_0xfc802f){if(_0xfc802f){return _0x1c9123['sendStatus'](_0xb519c6);}return _0x1c9123[_0x0bcc('0x1a')](_0xb519c6)[_0x0bcc('0x1b')]();};}function respondWithResult(_0x29aff9,_0x1ff3c2){_0x1ff3c2=_0x1ff3c2||0xc8;return function(_0x1cc059){if(_0x1cc059){return _0x29aff9[_0x0bcc('0x1a')](_0x1ff3c2)['json'](_0x1cc059);}};}function respondWithFilteredResult(_0x239d04,_0x2f59cf){return function(_0x4a578b){if(_0x4a578b){var _0x521b51=typeof _0x2f59cf[_0x0bcc('0x1c')]===_0x0bcc('0x1d')&&typeof _0x2f59cf['limit']===_0x0bcc('0x1d');var _0x3df98=_0x4a578b['count'];var _0x35c3c4=_0x521b51?0x0:_0x2f59cf['offset'];var _0x14827c=_0x521b51?_0x4a578b[_0x0bcc('0x1e')]:_0x2f59cf[_0x0bcc('0x1c')]+_0x2f59cf[_0x0bcc('0x1f')];var _0x395e5c;if(_0x14827c>=_0x3df98){_0x14827c=_0x3df98;_0x395e5c=0xc8;}else{_0x395e5c=0xce;}_0x239d04['status'](_0x395e5c);return _0x239d04[_0x0bcc('0x20')]('Content-Range',_0x35c3c4+'-'+_0x14827c+'/'+_0x3df98)[_0x0bcc('0x21')](_0x4a578b);}return null;};}function patchUpdates(_0x5669f9){return function(_0x54fa42){try{jsonpatch[_0x0bcc('0x22')](_0x54fa42,_0x5669f9,!![]);}catch(_0x3c2dd3){return BPromise[_0x0bcc('0x23')](_0x3c2dd3);}return _0x54fa42[_0x0bcc('0x24')]();};}function saveUpdates(_0x12c8f9,_0x337d44){return function(_0x420198){if(_0x420198){return _0x420198['update'](_0x12c8f9)[_0x0bcc('0x25')](function(_0x2a390d){return _0x2a390d;});}return null;};}function removeEntity(_0xde8480,_0x47b288){return function(_0x5ae73b){if(_0x5ae73b){return _0x5ae73b[_0x0bcc('0x26')]()[_0x0bcc('0x25')](function(){_0xde8480[_0x0bcc('0x1a')](0xcc)[_0x0bcc('0x1b')]();});}};}function handleEntityNotFound(_0x1b19e4,_0xf53a59){return function(_0x2b5f8b){if(!_0x2b5f8b){_0x1b19e4[_0x0bcc('0x27')](0x194);}return _0x2b5f8b;};}function handleError(_0x252d40,_0x36db5b){_0x36db5b=_0x36db5b||0x1f4;return function(_0x183dc8){logger[_0x0bcc('0x28')](_0x183dc8['stack']);if(_0x183dc8['name']){delete _0x183dc8[_0x0bcc('0x29')];}_0x252d40['status'](_0x36db5b)[_0x0bcc('0x2a')](_0x183dc8);};}exports['index']=function(_0x2793bb,_0x15acc8){var _0xca5d1d={},_0x1be0c6={},_0xb98f18={'count':0x0,'rows':[]};var _0xacdf05=_[_0x0bcc('0x2b')](db[_0x0bcc('0x2c')][_0x0bcc('0x2d')],function(_0x553445){return{'name':_0x553445[_0x0bcc('0x2e')],'type':_0x553445[_0x0bcc('0x2f')][_0x0bcc('0x30')]};});_0x1be0c6[_0x0bcc('0x31')]=_[_0x0bcc('0x2b')](_0xacdf05,_0x0bcc('0x29'));_0x1be0c6[_0x0bcc('0x32')]=_[_0x0bcc('0x33')](_0x2793bb[_0x0bcc('0x32')]);_0x1be0c6[_0x0bcc('0x34')]=_[_0x0bcc('0x35')](_0x1be0c6[_0x0bcc('0x31')],_0x1be0c6['query']);_0xca5d1d[_0x0bcc('0x36')]=_[_0x0bcc('0x35')](_0x1be0c6['model'],qs[_0x0bcc('0x37')](_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x37')]));_0xca5d1d['attributes']=_0xca5d1d[_0x0bcc('0x36')][_0x0bcc('0x38')]?_0xca5d1d[_0x0bcc('0x36')]:_0x1be0c6[_0x0bcc('0x31')];if(!_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x39')]('nolimit')){_0xca5d1d[_0x0bcc('0x1f')]=qs[_0x0bcc('0x1f')](_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x1f')]);_0xca5d1d[_0x0bcc('0x1c')]=qs[_0x0bcc('0x1c')](_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x1c')]);}_0xca5d1d[_0x0bcc('0x3a')]=qs['sort'](_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x3b')]);_0xca5d1d[_0x0bcc('0x3c')]=qs['filters'](_[_0x0bcc('0x3d')](_0x2793bb[_0x0bcc('0x32')],_0x1be0c6[_0x0bcc('0x34')]),_0xacdf05);if(_0x2793bb['query'][_0x0bcc('0x3e')]){_0xca5d1d[_0x0bcc('0x3c')]=_[_0x0bcc('0x3f')](_0xca5d1d[_0x0bcc('0x3c')],{'$or':_[_0x0bcc('0x2b')](_0xacdf05,function(_0xb1dfc4){if(_0xb1dfc4['type']!==_0x0bcc('0x40')){var _0x49d774={};_0x49d774[_0xb1dfc4[_0x0bcc('0x29')]]={'$like':'%'+_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x3e')]+'%'};return _0x49d774;}})});}_0xca5d1d=_[_0x0bcc('0x3f')]({},_0xca5d1d,_0x2793bb['options']);var _0x40cfb2={'where':_0xca5d1d[_0x0bcc('0x3c')]};return db[_0x0bcc('0x2c')]['count'](_0x40cfb2)['then'](function(_0x478345){_0xb98f18[_0x0bcc('0x1e')]=_0x478345;if(_0x2793bb[_0x0bcc('0x32')][_0x0bcc('0x41')]){_0xca5d1d['include']=[{'all':!![]}];}return db[_0x0bcc('0x2c')][_0x0bcc('0x42')](_0xca5d1d);})[_0x0bcc('0x25')](function(_0x462e27){_0xb98f18[_0x0bcc('0x43')]=_0x462e27;return _0xb98f18;})[_0x0bcc('0x25')](respondWithFilteredResult(_0x15acc8,_0xca5d1d))['catch'](handleError(_0x15acc8,null));};exports[_0x0bcc('0x44')]=function(_0x38a8dc,_0x1a3e98){var _0x2f047d={'raw':!![],'where':{'id':_0x38a8dc['params']['id']}},_0x41b543={};_0x41b543[_0x0bcc('0x31')]=_[_0x0bcc('0x33')](db['VoiceDialReport'][_0x0bcc('0x2d')]);_0x41b543[_0x0bcc('0x32')]=_['keys'](_0x38a8dc[_0x0bcc('0x32')]);_0x41b543[_0x0bcc('0x34')]=_[_0x0bcc('0x35')](_0x41b543[_0x0bcc('0x31')],_0x41b543[_0x0bcc('0x32')]);_0x2f047d[_0x0bcc('0x36')]=_['intersection'](_0x41b543['model'],qs[_0x0bcc('0x37')](_0x38a8dc[_0x0bcc('0x32')][_0x0bcc('0x37')]));_0x2f047d[_0x0bcc('0x36')]=_0x2f047d[_0x0bcc('0x36')]['length']?_0x2f047d[_0x0bcc('0x36')]:_0x41b543[_0x0bcc('0x31')];if(_0x38a8dc[_0x0bcc('0x32')][_0x0bcc('0x41')]){_0x2f047d[_0x0bcc('0x45')]=[{'all':!![]}];}_0x2f047d=_['merge']({},_0x2f047d,_0x38a8dc[_0x0bcc('0x46')]);return db[_0x0bcc('0x2c')][_0x0bcc('0x47')](_0x2f047d)[_0x0bcc('0x25')](handleEntityNotFound(_0x1a3e98,null))['then'](respondWithResult(_0x1a3e98,null))[_0x0bcc('0x48')](handleError(_0x1a3e98,null));};exports[_0x0bcc('0x49')]=function(_0xa1feb3,_0x3b4914){return db[_0x0bcc('0x2c')]['create'](_0xa1feb3[_0x0bcc('0x4a')],{})[_0x0bcc('0x25')](respondWithResult(_0x3b4914,0xc9))[_0x0bcc('0x48')](handleError(_0x3b4914,null));};exports['update']=function(_0x43d712,_0x2effbd){if(_0x43d712[_0x0bcc('0x4a')]['id']){delete _0x43d712[_0x0bcc('0x4a')]['id'];}return db['VoiceDialReport']['find']({'where':{'id':_0x43d712[_0x0bcc('0x4b')]['id']}})[_0x0bcc('0x25')](handleEntityNotFound(_0x2effbd,null))[_0x0bcc('0x25')](saveUpdates(_0x43d712[_0x0bcc('0x4a')],null))[_0x0bcc('0x25')](respondWithResult(_0x2effbd,null))[_0x0bcc('0x48')](handleError(_0x2effbd,null));};exports[_0x0bcc('0x26')]=function(_0xb12af4,_0x54eb4f){return db['VoiceDialReport'][_0x0bcc('0x47')]({'where':{'id':_0xb12af4[_0x0bcc('0x4b')]['id']}})['then'](handleEntityNotFound(_0x54eb4f,null))[_0x0bcc('0x25')](removeEntity(_0x54eb4f,null))[_0x0bcc('0x48')](handleError(_0x54eb4f,null));};exports[_0x0bcc('0x4c')]=function(_0x11166d,_0x53b5c2){return db[_0x0bcc('0x2c')][_0x0bcc('0x4c')]()[_0x0bcc('0x25')](respondWithResult(_0x53b5c2,null))[_0x0bcc('0x48')](handleError(_0x53b5c2,null));};
\ No newline at end of file
+var _0xaefe=['rows','catch','show','params','rawAttributes','fields','length','find','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','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','undefined','limit','count','offset','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','fieldName','key','model','map','query','keys','filters','intersection','attributes','nolimit','sort','where','merge','type','filter','options','VoiceDialReport','includeAll','include','findAll'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xaefe,0x13a));var _0xeaef=function(_0x11a220,_0x4e470a){_0x11a220=_0x11a220-0x0;var _0x20d8fe=_0xaefe[_0x11a220];return _0x20d8fe;};'use strict';var emlformat=require(_0xeaef('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xeaef('0x1'));var jsonpatch=require(_0xeaef('0x2'));var rp=require(_0xeaef('0x3'));var moment=require(_0xeaef('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xeaef('0x5'));var util=require(_0xeaef('0x6'));var path=require(_0xeaef('0x7'));var sox=require(_0xeaef('0x8'));var csv=require('to-csv');var ejs=require(_0xeaef('0x9'));var fs=require('fs');var fs_extra=require(_0xeaef('0xa'));var _=require(_0xeaef('0xb'));var squel=require(_0xeaef('0xc'));var crypto=require(_0xeaef('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xeaef('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xeaef('0xf'));var Redis=require(_0xeaef('0x10'));var authService=require(_0xeaef('0x11'));var qs=require(_0xeaef('0x12'));var as=require(_0xeaef('0x13'));var hardwareService=require(_0xeaef('0x14'));var logger=require('../../config/logger')(_0xeaef('0x15'));var utils=require(_0xeaef('0x16'));var config=require(_0xeaef('0x17'));var licenseUtil=require(_0xeaef('0x18'));var db=require(_0xeaef('0x19'))['db'];function respondWithStatusCode(_0x328773,_0x4ec8c0){_0x4ec8c0=_0x4ec8c0||0xcc;return function(_0x40b85c){if(_0x40b85c){return _0x328773[_0xeaef('0x1a')](_0x4ec8c0);}return _0x328773[_0xeaef('0x1b')](_0x4ec8c0)[_0xeaef('0x1c')]();};}function respondWithResult(_0x41f8a8,_0xd6b88e){_0xd6b88e=_0xd6b88e||0xc8;return function(_0x3f6744){if(_0x3f6744){return _0x41f8a8[_0xeaef('0x1b')](_0xd6b88e)[_0xeaef('0x1d')](_0x3f6744);}};}function respondWithFilteredResult(_0x3bdf69,_0x1adf86){return function(_0x10d760){if(_0x10d760){var _0x53682d=typeof _0x1adf86['offset']===_0xeaef('0x1e')&&typeof _0x1adf86[_0xeaef('0x1f')]==='undefined';var _0x1ceb49=_0x10d760[_0xeaef('0x20')];var _0x25ab13=_0x53682d?0x0:_0x1adf86[_0xeaef('0x21')];var _0x5c1d95=_0x53682d?_0x10d760[_0xeaef('0x20')]:_0x1adf86[_0xeaef('0x21')]+_0x1adf86['limit'];var _0x3c08fc;if(_0x5c1d95>=_0x1ceb49){_0x5c1d95=_0x1ceb49;_0x3c08fc=0xc8;}else{_0x3c08fc=0xce;}_0x3bdf69[_0xeaef('0x1b')](_0x3c08fc);return _0x3bdf69[_0xeaef('0x22')](_0xeaef('0x23'),_0x25ab13+'-'+_0x5c1d95+'/'+_0x1ceb49)[_0xeaef('0x1d')](_0x10d760);}return null;};}function patchUpdates(_0x42bd62){return function(_0x48875b){try{jsonpatch[_0xeaef('0x24')](_0x48875b,_0x42bd62,!![]);}catch(_0x16c2ae){return BPromise[_0xeaef('0x25')](_0x16c2ae);}return _0x48875b['save']();};}function saveUpdates(_0x4cee1f,_0x1ddcc4){return function(_0xc84afb){if(_0xc84afb){return _0xc84afb[_0xeaef('0x26')](_0x4cee1f)['then'](function(_0x243399){return _0x243399;});}return null;};}function removeEntity(_0x3500d4,_0x48d424){return function(_0x529dfc){if(_0x529dfc){return _0x529dfc[_0xeaef('0x27')]()[_0xeaef('0x28')](function(){_0x3500d4[_0xeaef('0x1b')](0xcc)[_0xeaef('0x1c')]();});}};}function handleEntityNotFound(_0x36973b,_0x49dd29){return function(_0x3ce5b1){if(!_0x3ce5b1){_0x36973b['sendStatus'](0x194);}return _0x3ce5b1;};}function handleError(_0x248ad6,_0x5f4dc0){_0x5f4dc0=_0x5f4dc0||0x1f4;return function(_0x4e6b61){logger[_0xeaef('0x29')](_0x4e6b61[_0xeaef('0x2a')]);if(_0x4e6b61[_0xeaef('0x2b')]){delete _0x4e6b61[_0xeaef('0x2b')];}_0x248ad6[_0xeaef('0x1b')](_0x5f4dc0)[_0xeaef('0x2c')](_0x4e6b61);};}exports[_0xeaef('0x2d')]=function(_0x1c594e,_0x330433){var _0x238a94={},_0x318ba5={},_0x2f8df5={'count':0x0,'rows':[]};var _0x2be691=_['map'](db['VoiceDialReport']['rawAttributes'],function(_0x5617d9){return{'name':_0x5617d9[_0xeaef('0x2e')],'type':_0x5617d9['type'][_0xeaef('0x2f')]};});_0x318ba5[_0xeaef('0x30')]=_[_0xeaef('0x31')](_0x2be691,'name');_0x318ba5[_0xeaef('0x32')]=_[_0xeaef('0x33')](_0x1c594e[_0xeaef('0x32')]);_0x318ba5[_0xeaef('0x34')]=_[_0xeaef('0x35')](_0x318ba5[_0xeaef('0x30')],_0x318ba5['query']);_0x238a94[_0xeaef('0x36')]=_[_0xeaef('0x35')](_0x318ba5['model'],qs['fields'](_0x1c594e[_0xeaef('0x32')]['fields']));_0x238a94[_0xeaef('0x36')]=_0x238a94[_0xeaef('0x36')]['length']?_0x238a94[_0xeaef('0x36')]:_0x318ba5[_0xeaef('0x30')];if(!_0x1c594e[_0xeaef('0x32')]['hasOwnProperty'](_0xeaef('0x37'))){_0x238a94[_0xeaef('0x1f')]=qs[_0xeaef('0x1f')](_0x1c594e[_0xeaef('0x32')]['limit']);_0x238a94['offset']=qs['offset'](_0x1c594e[_0xeaef('0x32')][_0xeaef('0x21')]);}_0x238a94['order']=qs['sort'](_0x1c594e[_0xeaef('0x32')][_0xeaef('0x38')]);_0x238a94['where']=qs[_0xeaef('0x34')](_['pick'](_0x1c594e[_0xeaef('0x32')],_0x318ba5['filters']),_0x2be691);if(_0x1c594e[_0xeaef('0x32')]['filter']){_0x238a94[_0xeaef('0x39')]=_[_0xeaef('0x3a')](_0x238a94[_0xeaef('0x39')],{'$or':_[_0xeaef('0x31')](_0x2be691,function(_0x50259a){if(_0x50259a[_0xeaef('0x3b')]!=='VIRTUAL'){var _0x4b90a5={};_0x4b90a5[_0x50259a[_0xeaef('0x2b')]]={'$like':'%'+_0x1c594e[_0xeaef('0x32')][_0xeaef('0x3c')]+'%'};return _0x4b90a5;}})});}_0x238a94=_['merge']({},_0x238a94,_0x1c594e[_0xeaef('0x3d')]);var _0x4ee389={'where':_0x238a94[_0xeaef('0x39')]};return db[_0xeaef('0x3e')]['count'](_0x4ee389)[_0xeaef('0x28')](function(_0x206b78){_0x2f8df5[_0xeaef('0x20')]=_0x206b78;if(_0x1c594e['query'][_0xeaef('0x3f')]){_0x238a94[_0xeaef('0x40')]=[{'all':!![]}];}return db[_0xeaef('0x3e')][_0xeaef('0x41')](_0x238a94);})[_0xeaef('0x28')](function(_0x595308){_0x2f8df5[_0xeaef('0x42')]=_0x595308;return _0x2f8df5;})[_0xeaef('0x28')](respondWithFilteredResult(_0x330433,_0x238a94))[_0xeaef('0x43')](handleError(_0x330433,null));};exports[_0xeaef('0x44')]=function(_0x45de15,_0x22dbec){var _0x12e274={'raw':!![],'where':{'id':_0x45de15[_0xeaef('0x45')]['id']}},_0x4c8798={};_0x4c8798[_0xeaef('0x30')]=_['keys'](db[_0xeaef('0x3e')][_0xeaef('0x46')]);_0x4c8798[_0xeaef('0x32')]=_[_0xeaef('0x33')](_0x45de15[_0xeaef('0x32')]);_0x4c8798[_0xeaef('0x34')]=_['intersection'](_0x4c8798[_0xeaef('0x30')],_0x4c8798[_0xeaef('0x32')]);_0x12e274[_0xeaef('0x36')]=_[_0xeaef('0x35')](_0x4c8798['model'],qs[_0xeaef('0x47')](_0x45de15[_0xeaef('0x32')][_0xeaef('0x47')]));_0x12e274[_0xeaef('0x36')]=_0x12e274[_0xeaef('0x36')][_0xeaef('0x48')]?_0x12e274['attributes']:_0x4c8798['model'];if(_0x45de15[_0xeaef('0x32')][_0xeaef('0x3f')]){_0x12e274[_0xeaef('0x40')]=[{'all':!![]}];}_0x12e274=_[_0xeaef('0x3a')]({},_0x12e274,_0x45de15['options']);return db[_0xeaef('0x3e')][_0xeaef('0x49')](_0x12e274)[_0xeaef('0x28')](handleEntityNotFound(_0x22dbec,null))['then'](respondWithResult(_0x22dbec,null))['catch'](handleError(_0x22dbec,null));};exports['create']=function(_0x825f65,_0x4a4a90){return db[_0xeaef('0x3e')]['create'](_0x825f65['body'],{})[_0xeaef('0x28')](respondWithResult(_0x4a4a90,0xc9))['catch'](handleError(_0x4a4a90,null));};exports[_0xeaef('0x26')]=function(_0x49c93e,_0x564934){if(_0x49c93e[_0xeaef('0x4a')]['id']){delete _0x49c93e['body']['id'];}return db['VoiceDialReport'][_0xeaef('0x49')]({'where':{'id':_0x49c93e[_0xeaef('0x45')]['id']}})['then'](handleEntityNotFound(_0x564934,null))[_0xeaef('0x28')](saveUpdates(_0x49c93e[_0xeaef('0x4a')],null))[_0xeaef('0x28')](respondWithResult(_0x564934,null))[_0xeaef('0x43')](handleError(_0x564934,null));};exports['destroy']=function(_0x4d66f4,_0xcf70d0){return db[_0xeaef('0x3e')][_0xeaef('0x49')]({'where':{'id':_0x4d66f4['params']['id']}})[_0xeaef('0x28')](handleEntityNotFound(_0xcf70d0,null))[_0xeaef('0x28')](removeEntity(_0xcf70d0,null))[_0xeaef('0x43')](handleError(_0xcf70d0,null));};exports['describe']=function(_0x188c97,_0x1510f9){return db[_0xeaef('0x3e')][_0xeaef('0x4b')]()[_0xeaef('0x28')](respondWithResult(_0x1510f9,null))[_0xeaef('0x43')](handleError(_0x1510f9,null));};
\ No newline at end of file
index 2301210..cd9291c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd50e=['VoiceDialReport','report_dial','uniqueid','util','moment','request-promise','path','rimraf','./voiceDialReport.attributes','define'];(function(_0x2bc3f4,_0x470b26){var _0x14ac53=function(_0x5121bd){while(--_0x5121bd){_0x2bc3f4['push'](_0x2bc3f4['shift']());}};_0x14ac53(++_0x470b26);}(_0xd50e,0x12f));var _0xed50=function(_0x17f857,_0x592dd1){_0x17f857=_0x17f857-0x0;var _0x1b2af3=_0xd50e[_0x17f857];return _0x1b2af3;};'use strict';var _=require('lodash');var util=require(_0xed50('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xed50('0x1'));var BPromise=require('bluebird');var rp=require(_0xed50('0x2'));var fs=require('fs');var path=require(_0xed50('0x3'));var rimraf=require(_0xed50('0x4'));var config=require('../../config/environment');var attributes=require(_0xed50('0x5'));module['exports']=function(_0x3166f4,_0x5a8f85){return _0x3166f4[_0xed50('0x6')](_0xed50('0x7'),attributes,{'tableName':_0xed50('0x8'),'paranoid':![],'indexes':[{'fields':[_0xed50('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe8cf=['report_dial','uniqueid','lodash','util','bluebird','request-promise','./voiceDialReport.attributes','exports','VoiceDialReport'];(function(_0x37bcb2,_0x519f43){var _0x37ad42=function(_0x43a729){while(--_0x43a729){_0x37bcb2['push'](_0x37bcb2['shift']());}};_0x37ad42(++_0x519f43);}(_0xe8cf,0xb6));var _0xfe8c=function(_0x543719,_0xea44b8){_0x543719=_0x543719-0x0;var _0x38bb38=_0xe8cf[_0x543719];return _0x38bb38;};'use strict';var _=require(_0xfe8c('0x0'));var util=require(_0xfe8c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xfe8c('0x2'));var rp=require(_0xfe8c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xfe8c('0x4'));module[_0xfe8c('0x5')]=function(_0x11ce91,_0x399f8){return _0x11ce91['define'](_0xfe8c('0x6'),attributes,{'tableName':_0xfe8c('0x7'),'paranoid':![],'indexes':[{'fields':[_0xfe8c('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 5262e27..bb79004 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30c6=['where','attributes','limit','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error','code','VoiceDialReport,\x20%s,\x20%s','message','result','catch','VoiceDialReport','create','options','raw','CreateVoiceDialReport','stringify','UpdateVoiceDialReport','update','body'];(function(_0x286731,_0x116916){var _0x50f5a5=function(_0x18ef71){while(--_0x18ef71){_0x286731['push'](_0x286731['shift']());}};_0x50f5a5(++_0x116916);}(_0x30c6,0xf8));var _0x630c=function(_0x2e42ff,_0x12211a){_0x2e42ff=_0x2e42ff-0x0;var _0x1598b2=_0x30c6[_0x2e42ff];return _0x1598b2;};'use strict';var _=require(_0x630c('0x0'));var util=require(_0x630c('0x1'));var moment=require(_0x630c('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x630c('0x3'));var db=require(_0x630c('0x4'))['db'];var utils=require(_0x630c('0x5'));var logger=require(_0x630c('0x6'))(_0x630c('0x7'));var config=require(_0x630c('0x8'));var jayson=require(_0x630c('0x9'));var client=jayson[_0x630c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58516f,_0x515654,_0x244145){return new BPromise(function(_0x91c46c,_0x4ee48d){return client[_0x630c('0xb')](_0x58516f,_0x244145)[_0x630c('0xc')](function(_0x17b252){logger[_0x630c('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x515654,_0x630c('0xe'));logger[_0x630c('0xf')](_0x630c('0x10'),_0x515654,_0x630c('0xe'),JSON['stringify'](_0x17b252));if(_0x17b252[_0x630c('0x11')]){if(_0x17b252[_0x630c('0x11')][_0x630c('0x12')]===0x1f4){logger[_0x630c('0x11')](_0x630c('0x13'),_0x515654,_0x17b252[_0x630c('0x11')]['message']);return _0x4ee48d(_0x17b252[_0x630c('0x11')][_0x630c('0x14')]);}logger[_0x630c('0x11')](_0x630c('0x13'),_0x515654,_0x17b252[_0x630c('0x11')][_0x630c('0x14')]);return _0x91c46c(_0x17b252[_0x630c('0x11')]['message']);}else{logger[_0x630c('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x515654,'request\x20sent');_0x91c46c(_0x17b252[_0x630c('0x15')][_0x630c('0x14')]);}})[_0x630c('0x16')](function(_0x4f9e2b){logger[_0x630c('0x11')](_0x630c('0x13'),_0x515654,_0x4f9e2b);_0x4ee48d(_0x4f9e2b);});});}exports['CreateVoiceDialReport']=function(_0x182c1b){var _0x2fc0b2=this;return new Promise(function(_0x453cfb,_0x283217){return db[_0x630c('0x17')][_0x630c('0x18')](_0x182c1b['body'],{'raw':_0x182c1b[_0x630c('0x19')]?_0x182c1b[_0x630c('0x19')][_0x630c('0x1a')]===undefined?!![]:![]:!![]})[_0x630c('0xc')](function(_0x300b33){logger['info'](_0x630c('0x1b'),_0x182c1b);logger[_0x630c('0xf')]('CreateVoiceDialReport',_0x182c1b,JSON[_0x630c('0x1c')](_0x300b33));_0x453cfb(_0x300b33);})['catch'](function(_0x477a41){logger[_0x630c('0x11')]('CreateVoiceDialReport',_0x477a41[_0x630c('0x14')],_0x182c1b);_0x283217(_0x2fc0b2[_0x630c('0x11')](0x1f4,_0x477a41[_0x630c('0x14')]));});});};exports[_0x630c('0x1d')]=function(_0x4db646){var _0x5901d0=this;return new Promise(function(_0x1f00dd,_0x407422){return db[_0x630c('0x17')][_0x630c('0x1e')](_0x4db646[_0x630c('0x1f')],{'raw':_0x4db646[_0x630c('0x19')]?_0x4db646[_0x630c('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4db646['options']?_0x4db646[_0x630c('0x19')][_0x630c('0x20')]||null:null,'attributes':_0x4db646[_0x630c('0x19')]?_0x4db646[_0x630c('0x19')][_0x630c('0x21')]||null:null,'limit':_0x4db646[_0x630c('0x19')]?_0x4db646['options'][_0x630c('0x22')]||null:null})[_0x630c('0xc')](function(_0x4363bd){logger[_0x630c('0xd')](_0x630c('0x1d'),_0x4db646);logger[_0x630c('0xf')](_0x630c('0x1d'),_0x4db646,JSON[_0x630c('0x1c')](_0x4363bd));_0x1f00dd(_0x4363bd);})[_0x630c('0x16')](function(_0x1ac1a5){logger[_0x630c('0x11')]('UpdateVoiceDialReport',_0x1ac1a5[_0x630c('0x14')],_0x4db646);_0x407422(_0x5901d0['error'](0x1f4,_0x1ac1a5[_0x630c('0x14')]));});});};
\ No newline at end of file
+var _0xfc0f=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','body','options','raw','CreateVoiceDialReport','catch','UpdateVoiceDialReport','where','attributes','limit','lodash','util','moment'];(function(_0x528b6a,_0x25994c){var _0x3968bd=function(_0x21d08f){while(--_0x21d08f){_0x528b6a['push'](_0x528b6a['shift']());}};_0x3968bd(++_0x25994c);}(_0xfc0f,0x17d));var _0xffc0=function(_0x4a3d5b,_0x2d4c74){_0x4a3d5b=_0x4a3d5b-0x0;var _0x5ed5a5=_0xfc0f[_0x4a3d5b];return _0x5ed5a5;};'use strict';var _=require(_0xffc0('0x0'));var util=require(_0xffc0('0x1'));var moment=require(_0xffc0('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xffc0('0x3'));var db=require(_0xffc0('0x4'))['db'];var utils=require(_0xffc0('0x5'));var logger=require(_0xffc0('0x6'))(_0xffc0('0x7'));var config=require('../../config/environment');var jayson=require(_0xffc0('0x8'));var client=jayson[_0xffc0('0x9')][_0xffc0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25e589,_0x1d0f4f,_0x2daa34){return new BPromise(function(_0x2fa8f9,_0x49e4df){return client[_0xffc0('0xb')](_0x25e589,_0x2daa34)[_0xffc0('0xc')](function(_0x885b2f){logger[_0xffc0('0xd')](_0xffc0('0xe'),_0x1d0f4f,_0xffc0('0xf'));logger[_0xffc0('0x10')](_0xffc0('0x11'),_0x1d0f4f,_0xffc0('0xf'),JSON[_0xffc0('0x12')](_0x885b2f));if(_0x885b2f[_0xffc0('0x13')]){if(_0x885b2f[_0xffc0('0x13')][_0xffc0('0x14')]===0x1f4){logger[_0xffc0('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x1d0f4f,_0x885b2f[_0xffc0('0x13')][_0xffc0('0x15')]);return _0x49e4df(_0x885b2f[_0xffc0('0x13')][_0xffc0('0x15')]);}logger[_0xffc0('0x13')](_0xffc0('0xe'),_0x1d0f4f,_0x885b2f['error'][_0xffc0('0x15')]);return _0x2fa8f9(_0x885b2f[_0xffc0('0x13')][_0xffc0('0x15')]);}else{logger['info'](_0xffc0('0xe'),_0x1d0f4f,_0xffc0('0xf'));_0x2fa8f9(_0x885b2f[_0xffc0('0x16')][_0xffc0('0x15')]);}})['catch'](function(_0x412f7e){logger[_0xffc0('0x13')]('VoiceDialReport,\x20%s,\x20%s',_0x1d0f4f,_0x412f7e);_0x49e4df(_0x412f7e);});});}exports['CreateVoiceDialReport']=function(_0x7cd2e6){var _0x1a750f=this;return new Promise(function(_0x260a7d,_0x181d7f){return db['VoiceDialReport']['create'](_0x7cd2e6[_0xffc0('0x17')],{'raw':_0x7cd2e6[_0xffc0('0x18')]?_0x7cd2e6['options'][_0xffc0('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x389dd6){logger[_0xffc0('0xd')](_0xffc0('0x1a'),_0x7cd2e6);logger['debug'](_0xffc0('0x1a'),_0x7cd2e6,JSON['stringify'](_0x389dd6));_0x260a7d(_0x389dd6);})[_0xffc0('0x1b')](function(_0xee5da4){logger[_0xffc0('0x13')](_0xffc0('0x1a'),_0xee5da4['message'],_0x7cd2e6);_0x181d7f(_0x1a750f[_0xffc0('0x13')](0x1f4,_0xee5da4[_0xffc0('0x15')]));});});};exports[_0xffc0('0x1c')]=function(_0x556dfc){var _0x4877c6=this;return new Promise(function(_0x599c82,_0x332785){return db['VoiceDialReport']['update'](_0x556dfc[_0xffc0('0x17')],{'raw':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x1d')]||null:null,'attributes':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x1e')]||null:null,'limit':_0x556dfc[_0xffc0('0x18')]?_0x556dfc[_0xffc0('0x18')][_0xffc0('0x1f')]||null:null})[_0xffc0('0xc')](function(_0x186ec4){logger[_0xffc0('0xd')](_0xffc0('0x1c'),_0x556dfc);logger['debug']('UpdateVoiceDialReport',_0x556dfc,JSON[_0xffc0('0x12')](_0x186ec4));_0x599c82(_0x186ec4);})['catch'](function(_0x46eaec){logger[_0xffc0('0x13')](_0xffc0('0x1c'),_0x46eaec['message'],_0x556dfc);_0x332785(_0x4877c6[_0xffc0('0x13')](0x1f4,_0x46eaec[_0xffc0('0x15')]));});});};
\ No newline at end of file
index 0b5964e..34d231d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb4e=['create','/:id/applications','delete','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','post'];(function(_0x3a7634,_0x2db384){var _0x23bbe9=function(_0x226734){while(--_0x226734){_0x3a7634['push'](_0x3a7634['shift']());}};_0x23bbe9(++_0x2db384);}(_0xeb4e,0x184));var _0xeeb4=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xeb4e[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require('multer');var util=require(_0xeeb4('0x0'));var path=require('path');var timeout=require(_0xeeb4('0x1'));var express=require(_0xeeb4('0x2'));var router=express[_0xeeb4('0x3')]();var fs_extra=require(_0xeeb4('0x4'));var auth=require(_0xeeb4('0x5'));var interaction=require(_0xeeb4('0x6'));var config=require('../../config/environment');var controller=require('./voiceExtension.controller');router['get']('/',auth[_0xeeb4('0x7')](),controller[_0xeeb4('0x8')]);router[_0xeeb4('0x9')](_0xeeb4('0xa'),auth[_0xeeb4('0x7')](),controller['show']);router[_0xeeb4('0xb')]('/',auth['isAuthenticated'](),controller[_0xeeb4('0xc')]);router[_0xeeb4('0xb')](_0xeeb4('0xd'),auth[_0xeeb4('0x7')](),controller['addApplications']);router['put'](_0xeeb4('0xa'),auth[_0xeeb4('0x7')](),controller['update']);router[_0xeeb4('0xe')]('/:id',auth[_0xeeb4('0x7')](),controller['destroy']);module[_0xeeb4('0xf')]=router;
\ No newline at end of file
+var _0x3f6b=['/:id/applications','addApplications','put','/:id','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','isAuthenticated','index','show','post','create'];(function(_0x162a78,_0x1c0fa9){var _0x4e22ae=function(_0x4e7b11){while(--_0x4e7b11){_0x162a78['push'](_0x162a78['shift']());}};_0x4e22ae(++_0x1c0fa9);}(_0x3f6b,0x1ab));var _0xb3f6=function(_0x3bc3fd,_0x4dd9b4){_0x3bc3fd=_0x3bc3fd-0x0;var _0x2bc389=_0x3f6b[_0x3bc3fd];return _0x2bc389;};'use strict';var multer=require('multer');var util=require(_0xb3f6('0x0'));var path=require(_0xb3f6('0x1'));var timeout=require(_0xb3f6('0x2'));var express=require('express');var router=express[_0xb3f6('0x3')]();var fs_extra=require(_0xb3f6('0x4'));var auth=require(_0xb3f6('0x5'));var interaction=require(_0xb3f6('0x6'));var config=require(_0xb3f6('0x7'));var controller=require(_0xb3f6('0x8'));router['get']('/',auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xa')]);router['get']('/:id',auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xb')]);router[_0xb3f6('0xc')]('/',auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xd')]);router[_0xb3f6('0xc')](_0xb3f6('0xe'),auth[_0xb3f6('0x9')](),controller[_0xb3f6('0xf')]);router[_0xb3f6('0x10')](_0xb3f6('0x11'),auth[_0xb3f6('0x9')](),controller[_0xb3f6('0x12')]);router['delete'](_0xb3f6('0x11'),auth['isAuthenticated'](),controller[_0xb3f6('0x13')]);module[_0xb3f6('0x14')]=router;
\ No newline at end of file
index 6991086..98c00a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbaf=['inbound-fax','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','sequelize','STRING','compositeIndex','NoOp','outbound','internal'];(function(_0x23a8aa,_0x43f152){var _0x11728f=function(_0x3c887a){while(--_0x3c887a){_0x23a8aa['push'](_0x23a8aa['shift']());}};_0x11728f(++_0x43f152);}(_0xcbaf,0x1bc));var _0xfcba=function(_0x45ca21,_0x47bfce){_0x45ca21=_0x45ca21-0x0;var _0x1154d2=_0xcbaf[_0x45ca21];return _0x1154d2;};'use strict';var Sequelize=require(_0xfcba('0x0'));module['exports']={'context':{'type':Sequelize[_0xfcba('0x1')],'allowNull':![],'unique':_0xfcba('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xfcba('0x1')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0xfcba('0x2')},'tag':{'type':Sequelize[_0xfcba('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xfcba('0x1')],'allowNull':![],'defaultValue':_0xfcba('0x3')},'appdata':{'type':Sequelize[_0xfcba('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize['ENUM']('inbound',_0xfcba('0x4'),_0xfcba('0x5'),_0xfcba('0x6'),_0xfcba('0x7'),_0xfcba('0x8'),_0xfcba('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0xfcba('0x1')]},'interval':{'type':Sequelize[_0xfcba('0x1')],'allowNull':![],'defaultValue':_0xfcba('0xa')},'IntervalId':{'type':Sequelize[_0xfcba('0xb')]},'isApp':{'type':Sequelize[_0xfcba('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xfcba('0x1')],'defaultValue':null},'callerID':{'type':Sequelize['STRING'],'allowNull':!![]},'record':{'type':Sequelize[_0xfcba('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':_0xfcba('0xd')},'answer':{'type':Sequelize[_0xfcba('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0xfcba('0xe')],'get':function(_0x23a0c7){return this['getDataValue']('exten');}},'alias':{'type':Sequelize[_0xfcba('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x08d0=['outbound-fax','any','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports','compositeIndex','STRING','NoOp','ENUM','outbound'];(function(_0x410fa4,_0x594c00){var _0x4bd045=function(_0x201560){while(--_0x201560){_0x410fa4['push'](_0x410fa4['shift']());}};_0x4bd045(++_0x594c00);}(_0x08d0,0x13b));var _0x008d=function(_0x127824,_0x3b9518){_0x127824=_0x127824-0x0;var _0x6619ff=_0x08d0[_0x127824];return _0x6619ff;};'use strict';var Sequelize=require(_0x008d('0x0'));module[_0x008d('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x008d('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x008d('0x3')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x008d('0x3')],'allowNull':![],'defaultValue':'1','unique':_0x008d('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x008d('0x3')],'allowNull':![],'defaultValue':_0x008d('0x4')},'appdata':{'type':Sequelize[_0x008d('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x008d('0x5')]('inbound',_0x008d('0x6'),'internal','inbound-fax',_0x008d('0x7'),'system',_0x008d('0x8')),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x008d('0x9')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x008d('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0x008d('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0x008d('0xa')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x008d('0x9')]},'recordingFormat':{'type':Sequelize[_0x008d('0x3')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x008d('0xa')],'defaultValue':!![]},'name':{'type':Sequelize[_0x008d('0xb')],'get':function(_0x57c675){return this[_0x008d('0xc')](_0x008d('0xd'));}},'alias':{'type':Sequelize[_0x008d('0x3')],'allowNull':!![]}};
\ No newline at end of file
index 62c4636..7069c0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdacd=['squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','./voiceExtension.socket','register','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','filter','ignore','type','find','value','name','UserProfileResource','error','stack','send','index','map','VoiceExtension','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','pick','where','merge','options','include','rows','catch','includeAll','destroy','params','startsWith','body','exten','concat','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','internal','UserProfileSection','userProfileId','autoAssociation','context','description','recordingFormat','mandatoryDisposition','alias','addApplications','findOne','sequelize','transaction','VoiceExtensionId','isApp','rewriteDial','toLowerCase','true','createRouting','findAndCountAll','cast(priority\x20as\x20unsigned)','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs'];(function(_0x33a08a,_0x94441e){var _0x4a8afd=function(_0x4db6f6){while(--_0x4db6f6){_0x33a08a['push'](_0x33a08a['shift']());}};_0x4a8afd(++_0x94441e);}(_0xdacd,0x143));var _0xddac=function(_0x9f8949,_0x3c99f5){_0x9f8949=_0x9f8949-0x0;var _0x5d7a86=_0xdacd[_0x9f8949];return _0x5d7a86;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xddac('0x0'));var jsonpatch=require(_0xddac('0x1'));var rp=require(_0xddac('0x2'));var moment=require(_0xddac('0x3'));var BPromise=require(_0xddac('0x4'));var Mustache=require(_0xddac('0x5'));var util=require(_0xddac('0x6'));var path=require(_0xddac('0x7'));var sox=require(_0xddac('0x8'));var csv=require('to-csv');var ejs=require(_0xddac('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xddac('0xa'));var crypto=require('crypto');var jsforce=require(_0xddac('0xb'));var deskjs=require(_0xddac('0xc'));var toCsv=require(_0xddac('0xd'));var querystring=require(_0xddac('0xe'));var Papa=require(_0xddac('0xf'));var Redis=require(_0xddac('0x10'));var authService=require(_0xddac('0x11'));var qs=require(_0xddac('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xddac('0x13'));var logger=require(_0xddac('0x14'))(_0xddac('0x15'));var utils=require(_0xddac('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xddac('0x17'));var db=require(_0xddac('0x18'))['db'];config['redis']=_['defaults'](config[_0xddac('0x19')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xddac('0x19')]));require(_0xddac('0x1a'))[_0xddac('0x1b')](socket);function respondWithStatusCode(_0x9a3c1d,_0x4d6b2b){_0x4d6b2b=_0x4d6b2b||0xcc;return function(_0x4fe5d6){if(_0x4fe5d6){return _0x9a3c1d[_0xddac('0x1c')](_0x4d6b2b);}return _0x9a3c1d['status'](_0x4d6b2b)[_0xddac('0x1d')]();};}function respondWithResult(_0x4be5e7,_0x45f787){_0x45f787=_0x45f787||0xc8;return function(_0x56313f){if(_0x56313f){return _0x4be5e7[_0xddac('0x1e')](_0x45f787)['json'](_0x56313f);}};}function respondWithFilteredResult(_0x223022,_0x1e0c2e){return function(_0x24fcda){if(_0x24fcda){var _0xa0e04=typeof _0x1e0c2e[_0xddac('0x1f')]===_0xddac('0x20')&&typeof _0x1e0c2e[_0xddac('0x21')]===_0xddac('0x20');var _0x5608e3=_0x24fcda[_0xddac('0x22')];var _0x53c8bd=_0xa0e04?0x0:_0x1e0c2e[_0xddac('0x1f')];var _0x512072=_0xa0e04?_0x24fcda[_0xddac('0x22')]:_0x1e0c2e[_0xddac('0x1f')]+_0x1e0c2e[_0xddac('0x21')];var _0x25f0a5;if(_0x512072>=_0x5608e3){_0x512072=_0x5608e3;_0x25f0a5=0xc8;}else{_0x25f0a5=0xce;}_0x223022[_0xddac('0x1e')](_0x25f0a5);return _0x223022[_0xddac('0x23')](_0xddac('0x24'),_0x53c8bd+'-'+_0x512072+'/'+_0x5608e3)[_0xddac('0x25')](_0x24fcda);}return null;};}function patchUpdates(_0x5ab427){return function(_0x191ca0){try{jsonpatch[_0xddac('0x26')](_0x191ca0,_0x5ab427,!![]);}catch(_0x190f68){return BPromise[_0xddac('0x27')](_0x190f68);}return _0x191ca0['save']();};}function saveUpdates(_0x1f7c24,_0x36d2b5){return function(_0x18e918){if(_0x18e918){return _0x18e918[_0xddac('0x28')](_0x1f7c24)[_0xddac('0x29')](function(_0x228e6c){return _0x228e6c;});}return null;};}function removeEntity(_0x112d99,_0x341647){return function(_0x1d8572){if(_0x1d8572){return _0x1d8572['destroy']()[_0xddac('0x29')](function(){var _0x54d8b3=_0x1d8572[_0xddac('0x2a')]({'plain':!![]});var _0x1f1e3e=[{'name':_0xddac('0x2b'),'value':_0xddac('0x2c'),'ignore':![]},{'name':_0xddac('0x2d'),'value':_0xddac('0x2e'),'ignore':![]},{'name':_0xddac('0x2f'),'value':'internal','ignore':![]}];var _0x52351b=_(_0x1f1e3e)[_0xddac('0x30')](_0xddac('0x31'))['map']('value')['value']();if(_['includes'](_0x52351b,_0x54d8b3[_0xddac('0x32')])){return;}var _0x278a2e=_[_0xddac('0x33')](_0x1f1e3e,[_0xddac('0x34'),_0x54d8b3['type']])[_0xddac('0x35')];return db[_0xddac('0x36')]['destroy']({'where':{'type':_0x278a2e,'resourceId':_0x54d8b3['id']}})[_0xddac('0x29')](function(){return _0x1d8572;});})[_0xddac('0x29')](function(){_0x112d99[_0xddac('0x1e')](0xcc)[_0xddac('0x1d')]();});}};}function handleEntityNotFound(_0x5c379f,_0xf0e69b){return function(_0x2b2848){if(!_0x2b2848){_0x5c379f[_0xddac('0x1c')](0x194);}return _0x2b2848;};}function handleError(_0x2bafde,_0x1fc15d){_0x1fc15d=_0x1fc15d||0x1f4;return function(_0x27e064){logger[_0xddac('0x37')](_0x27e064[_0xddac('0x38')]);if(_0x27e064[_0xddac('0x35')]){delete _0x27e064[_0xddac('0x35')];}_0x2bafde[_0xddac('0x1e')](_0x1fc15d)[_0xddac('0x39')](_0x27e064);};}exports[_0xddac('0x3a')]=function(_0x22856d,_0x11921a){var _0x5b9f89={},_0x10278c={},_0x29de68={'count':0x0,'rows':[]};var _0x905c83=_[_0xddac('0x3b')](db[_0xddac('0x3c')]['rawAttributes'],function(_0x5554da){return{'name':_0x5554da[_0xddac('0x3d')],'type':_0x5554da['type'][_0xddac('0x3e')]};});_0x10278c[_0xddac('0x3f')]=_[_0xddac('0x3b')](_0x905c83,_0xddac('0x35'));_0x10278c[_0xddac('0x40')]=_[_0xddac('0x41')](_0x22856d['query']);_0x10278c[_0xddac('0x42')]=_[_0xddac('0x43')](_0x10278c[_0xddac('0x3f')],_0x10278c[_0xddac('0x40')]);_0x5b9f89[_0xddac('0x44')]=_[_0xddac('0x43')](_0x10278c['model'],qs['fields'](_0x22856d['query'][_0xddac('0x45')]));_0x5b9f89[_0xddac('0x44')]=_0x5b9f89[_0xddac('0x44')][_0xddac('0x46')]?_0x5b9f89['attributes']:_0x10278c[_0xddac('0x3f')];if(!_0x22856d[_0xddac('0x40')][_0xddac('0x47')](_0xddac('0x48'))){_0x5b9f89[_0xddac('0x21')]=qs[_0xddac('0x21')](_0x22856d[_0xddac('0x40')][_0xddac('0x21')]);_0x5b9f89[_0xddac('0x1f')]=qs[_0xddac('0x1f')](_0x22856d['query'][_0xddac('0x1f')]);}_0x5b9f89['order']=qs['sort'](_0x22856d[_0xddac('0x40')]['sort']);_0x5b9f89['where']=qs[_0xddac('0x42')](_[_0xddac('0x49')](_0x22856d[_0xddac('0x40')],_0x10278c[_0xddac('0x42')]),_0x905c83);if(_0x22856d[_0xddac('0x40')][_0xddac('0x30')]){_0x5b9f89[_0xddac('0x4a')]=_['merge'](_0x5b9f89[_0xddac('0x4a')],{'$or':_[_0xddac('0x3b')](_0x905c83,function(_0x4ef6b2){if(_0x4ef6b2['type']!=='VIRTUAL'){var _0x48c1c8={};_0x48c1c8[_0x4ef6b2[_0xddac('0x35')]]={'$like':'%'+_0x22856d['query'][_0xddac('0x30')]+'%'};return _0x48c1c8;}})});}_0x5b9f89=_[_0xddac('0x4b')]({},_0x5b9f89,_0x22856d[_0xddac('0x4c')]);var _0x25457a={'where':_0x5b9f89['where']};return db[_0xddac('0x3c')][_0xddac('0x22')](_0x25457a)[_0xddac('0x29')](function(_0x3b4f16){_0x29de68[_0xddac('0x22')]=_0x3b4f16;if(_0x22856d[_0xddac('0x40')]['includeAll']){_0x5b9f89[_0xddac('0x4d')]=[{'all':!![]}];}return db[_0xddac('0x3c')]['findAll'](_0x5b9f89);})[_0xddac('0x29')](function(_0x4531d0){_0x29de68[_0xddac('0x4e')]=_0x4531d0;return _0x29de68;})['then'](respondWithFilteredResult(_0x11921a,_0x5b9f89))[_0xddac('0x4f')](handleError(_0x11921a,null));};exports['show']=function(_0x3a16ae,_0xddbd8a){var _0x1c7af7={'raw':![],'where':{'id':_0x3a16ae['params']['id']}},_0x252526={};_0x252526[_0xddac('0x3f')]=_[_0xddac('0x41')](db['VoiceExtension']['rawAttributes']);_0x252526[_0xddac('0x40')]=_['keys'](_0x3a16ae['query']);_0x252526['filters']=_['intersection'](_0x252526[_0xddac('0x3f')],_0x252526[_0xddac('0x40')]);_0x1c7af7[_0xddac('0x44')]=_[_0xddac('0x43')](_0x252526[_0xddac('0x3f')],qs[_0xddac('0x45')](_0x3a16ae['query']['fields']));_0x1c7af7['attributes']=_0x1c7af7[_0xddac('0x44')]['length']?_0x1c7af7[_0xddac('0x44')]:_0x252526['model'];if(_0x3a16ae['query'][_0xddac('0x50')]){_0x1c7af7[_0xddac('0x4d')]=[{'all':!![]}];}_0x1c7af7=_['merge']({},_0x1c7af7,_0x3a16ae[_0xddac('0x4c')]);return db[_0xddac('0x3c')][_0xddac('0x33')](_0x1c7af7)['then'](handleEntityNotFound(_0xddbd8a,null))[_0xddac('0x29')](respondWithResult(_0xddbd8a,null))['catch'](handleError(_0xddbd8a,null));};exports[_0xddac('0x51')]=function(_0xd97b25,_0x20b45c){return db['VoiceExtension']['find']({'where':{'id':_0xd97b25[_0xddac('0x52')]['id']}})[_0xddac('0x29')](handleEntityNotFound(_0x20b45c,null))[_0xddac('0x29')](removeEntity(_0x20b45c,null))[_0xddac('0x4f')](handleError(_0x20b45c,null));};exports['create']=function(_0x102619,_0x50dd93){if(_0x102619['body'][_0xddac('0x32')]==='outbound'&&!_[_0xddac('0x53')](_0x102619[_0xddac('0x54')][_0xddac('0x55')],'_')){_0x102619[_0xddac('0x54')][_0xddac('0x55')]='_'[_0xddac('0x56')](_0x102619[_0xddac('0x54')]['exten']);}return db[_0xddac('0x3c')][_0xddac('0x57')](_0x102619[_0xddac('0x54')],{'raw':![]})[_0xddac('0x29')](function(_0x159109){var _0x328845=_0x102619[_0xddac('0x58')][_0xddac('0x2a')]({'plain':!![]});if(!_0x328845)throw new Error(_0xddac('0x59'));if(_0x328845['role']===_0xddac('0x58')){var _0x5e1c63=_0x159109[_0xddac('0x2a')]({'plain':!![]});var _0x1766e5=[{'name':_0xddac('0x2b'),'value':_0xddac('0x2c')},{'name':'OutboundRoutes','value':_0xddac('0x2e')},{'name':_0xddac('0x2f'),'value':_0xddac('0x5a')}];var _0x7b4a0e=_[_0xddac('0x33')](_0x1766e5,['value',_0x5e1c63[_0xddac('0x32')]])['name'];return db[_0xddac('0x5b')]['find']({'where':{'name':_0x7b4a0e,'userProfileId':_0x328845[_0xddac('0x5c')]},'raw':!![]})['then'](function(_0x3aa6c6){if(_0x3aa6c6&&_0x3aa6c6[_0xddac('0x5d')]===0x0){return db[_0xddac('0x36')][_0xddac('0x57')]({'name':_0x5e1c63['name'],'resourceId':_0x5e1c63['id'],'type':_0x3aa6c6[_0xddac('0x35')],'sectionId':_0x3aa6c6['id']},{})[_0xddac('0x29')](function(){return _0x159109;});}else{return _0x159109;}})[_0xddac('0x4f')](function(_0xa26ee){logger[_0xddac('0x37')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa26ee);throw _0xa26ee;});}return _0x159109;})['then'](respondWithResult(_0x50dd93,0xc9))[_0xddac('0x4f')](handleError(_0x50dd93,null));};exports[_0xddac('0x28')]=function(_0x154b56,_0x35628d){if(_0x154b56[_0xddac('0x54')]['id']){delete _0x154b56[_0xddac('0x54')]['id'];}return db[_0xddac('0x3c')][_0xddac('0x33')]({'where':{'id':_0x154b56['params']['id']}})[_0xddac('0x29')](handleEntityNotFound(_0x35628d,null))['then'](function(_0x55c6eb){if(_0x55c6eb){return db[_0xddac('0x3c')][_0xddac('0x28')](_[_0xddac('0x49')](_0x154b56[_0xddac('0x54')],['exten',_0xddac('0x5e'),_0xddac('0x5f'),_0xddac('0x60'),'cutdigits',_0xddac('0x61'),_0xddac('0x62')]),{'where':{'context':_0x55c6eb[_0xddac('0x5e')],'exten':_0x55c6eb[_0xddac('0x55')]},'individualHooks':!![]})[_0xddac('0x29')](function(_0xebc13){return _0xebc13;});}return null;})[_0xddac('0x29')](respondWithStatusCode(_0x35628d,null))[_0xddac('0x4f')](handleError(_0x35628d,null));};exports[_0xddac('0x63')]=function(_0x1f42d3,_0x11db18){return db[_0xddac('0x3c')][_0xddac('0x64')]({'where':{'id':_0x1f42d3[_0xddac('0x52')]['id']}})[_0xddac('0x29')](function(_0x26b747){if(_0x26b747){return db[_0xddac('0x65')][_0xddac('0x66')](function(_0x3a8018){return db['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':_0x1f42d3[_0xddac('0x52')]['id']},'transaction':_0x3a8018})[_0xddac('0x29')](function(){var _0x272fb8=_[_0xddac('0x3b')](_0x1f42d3[_0xddac('0x54')],function(_0x40b92e){_0x40b92e[_0xddac('0x67')]=_0x1f42d3[_0xddac('0x52')]['id'];_0x40b92e[_0xddac('0x68')]=!![];return _0x40b92e;});var _0x22de7e=_0x1f42d3[_0xddac('0x40')][_0xddac('0x69')]&&_0x1f42d3[_0xddac('0x40')][_0xddac('0x69')][_0xddac('0x6a')]()===_0xddac('0x6b')?!![]:![];return _0x26b747[_0xddac('0x6c')](_0x272fb8,_0x22de7e);})[_0xddac('0x29')](function(_0x2eb0c8){return db[_0xddac('0x3c')]['bulkCreate'](_0x2eb0c8,{'transaction':_0x3a8018});});})[_0xddac('0x29')](function(){return db[_0xddac('0x3c')][_0xddac('0x6d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1f42d3['params']['id']},'order':_0xddac('0x6e')});});}})[_0xddac('0x29')](respondWithResult(_0x11db18,null))[_0xddac('0x4f')](handleError(_0x11db18,null));};
\ No newline at end of file
+var _0x003d=['pick','where','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','VoiceExtension','find','catch','destroy','create','body','outbound','startsWith','exten','concat','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','internal','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','description','recordingFormat','mandatoryDisposition','addApplications','findOne','sequelize','VoiceExtensionId','isApp','rewriteDial','toLowerCase','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','sendStatus','end','status','json','offset','undefined','limit','count','set','reject','save','update','then','get','InboundRoutes','inbound','OutboundRoutes','InternalRoutes','filter','ignore','map','value','name','error','send','index','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters'];(function(_0x14ce11,_0x371307){var _0x593902=function(_0x2649cb){while(--_0x2649cb){_0x14ce11['push'](_0x14ce11['shift']());}};_0x593902(++_0x371307);}(_0x003d,0x1e6));var _0xd003=function(_0x45f379,_0x316872){_0x45f379=_0x45f379-0x0;var _0x397483=_0x003d[_0x45f379];return _0x397483;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xd003('0x0'));var jsonpatch=require(_0xd003('0x1'));var rp=require(_0xd003('0x2'));var moment=require(_0xd003('0x3'));var BPromise=require(_0xd003('0x4'));var Mustache=require(_0xd003('0x5'));var util=require(_0xd003('0x6'));var path=require(_0xd003('0x7'));var sox=require(_0xd003('0x8'));var csv=require(_0xd003('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xd003('0xa'));var crypto=require(_0xd003('0xb'));var jsforce=require(_0xd003('0xc'));var deskjs=require(_0xd003('0xd'));var toCsv=require(_0xd003('0x9'));var querystring=require(_0xd003('0xe'));var Papa=require(_0xd003('0xf'));var Redis=require(_0xd003('0x10'));var authService=require(_0xd003('0x11'));var qs=require(_0xd003('0x12'));var as=require(_0xd003('0x13'));var hardwareService=require(_0xd003('0x14'));var logger=require('../../config/logger')(_0xd003('0x15'));var utils=require('../../config/utils');var config=require(_0xd003('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xd003('0x17'))['db'];config[_0xd003('0x18')]=_[_0xd003('0x19')](config[_0xd003('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xd003('0x1a'))(new Redis(config[_0xd003('0x18')]));require(_0xd003('0x1b'))['register'](socket);function respondWithStatusCode(_0x395332,_0xb65abc){_0xb65abc=_0xb65abc||0xcc;return function(_0x1f8989){if(_0x1f8989){return _0x395332[_0xd003('0x1c')](_0xb65abc);}return _0x395332['status'](_0xb65abc)[_0xd003('0x1d')]();};}function respondWithResult(_0x3edec1,_0x4bdf41){_0x4bdf41=_0x4bdf41||0xc8;return function(_0xf5a746){if(_0xf5a746){return _0x3edec1[_0xd003('0x1e')](_0x4bdf41)[_0xd003('0x1f')](_0xf5a746);}};}function respondWithFilteredResult(_0x270c26,_0x1be39f){return function(_0x402845){if(_0x402845){var _0x1302d5=typeof _0x1be39f[_0xd003('0x20')]===_0xd003('0x21')&&typeof _0x1be39f[_0xd003('0x22')]===_0xd003('0x21');var _0x45acb8=_0x402845[_0xd003('0x23')];var _0x2101a1=_0x1302d5?0x0:_0x1be39f['offset'];var _0x5df8f1=_0x1302d5?_0x402845[_0xd003('0x23')]:_0x1be39f['offset']+_0x1be39f[_0xd003('0x22')];var _0x179081;if(_0x5df8f1>=_0x45acb8){_0x5df8f1=_0x45acb8;_0x179081=0xc8;}else{_0x179081=0xce;}_0x270c26[_0xd003('0x1e')](_0x179081);return _0x270c26[_0xd003('0x24')]('Content-Range',_0x2101a1+'-'+_0x5df8f1+'/'+_0x45acb8)['json'](_0x402845);}return null;};}function patchUpdates(_0x3e9589){return function(_0x1e20aa){try{jsonpatch['apply'](_0x1e20aa,_0x3e9589,!![]);}catch(_0x1ba93f){return BPromise[_0xd003('0x25')](_0x1ba93f);}return _0x1e20aa[_0xd003('0x26')]();};}function saveUpdates(_0x265e17,_0x102cfc){return function(_0x55787e){if(_0x55787e){return _0x55787e[_0xd003('0x27')](_0x265e17)[_0xd003('0x28')](function(_0x184cdb){return _0x184cdb;});}return null;};}function removeEntity(_0x5022bf,_0x46bc11){return function(_0x450ba3){if(_0x450ba3){return _0x450ba3['destroy']()[_0xd003('0x28')](function(){var _0x4d2f90=_0x450ba3[_0xd003('0x29')]({'plain':!![]});var _0x5d53fd=[{'name':_0xd003('0x2a'),'value':_0xd003('0x2b'),'ignore':![]},{'name':_0xd003('0x2c'),'value':'outbound','ignore':![]},{'name':_0xd003('0x2d'),'value':'internal','ignore':![]}];var _0x483a71=_(_0x5d53fd)[_0xd003('0x2e')](_0xd003('0x2f'))[_0xd003('0x30')](_0xd003('0x31'))['value']();if(_['includes'](_0x483a71,_0x4d2f90['type'])){return;}var _0x1a11a1=_['find'](_0x5d53fd,[_0xd003('0x31'),_0x4d2f90['type']])[_0xd003('0x32')];return db['UserProfileResource']['destroy']({'where':{'type':_0x1a11a1,'resourceId':_0x4d2f90['id']}})[_0xd003('0x28')](function(){return _0x450ba3;});})[_0xd003('0x28')](function(){_0x5022bf[_0xd003('0x1e')](0xcc)[_0xd003('0x1d')]();});}};}function handleEntityNotFound(_0x332e9d,_0x101eea){return function(_0x2690dd){if(!_0x2690dd){_0x332e9d['sendStatus'](0x194);}return _0x2690dd;};}function handleError(_0x3c557f,_0x35599a){_0x35599a=_0x35599a||0x1f4;return function(_0x376b0c){logger[_0xd003('0x33')](_0x376b0c['stack']);if(_0x376b0c['name']){delete _0x376b0c['name'];}_0x3c557f['status'](_0x35599a)[_0xd003('0x34')](_0x376b0c);};}exports[_0xd003('0x35')]=function(_0x4a541d,_0x20368c){var _0x192126={},_0x3bae6a={},_0x59e1a7={'count':0x0,'rows':[]};var _0x51070b=_['map'](db['VoiceExtension'][_0xd003('0x36')],function(_0x2d7be7){return{'name':_0x2d7be7[_0xd003('0x37')],'type':_0x2d7be7[_0xd003('0x38')]['key']};});_0x3bae6a['model']=_[_0xd003('0x30')](_0x51070b,_0xd003('0x32'));_0x3bae6a[_0xd003('0x39')]=_[_0xd003('0x3a')](_0x4a541d[_0xd003('0x39')]);_0x3bae6a['filters']=_[_0xd003('0x3b')](_0x3bae6a[_0xd003('0x3c')],_0x3bae6a[_0xd003('0x39')]);_0x192126[_0xd003('0x3d')]=_['intersection'](_0x3bae6a[_0xd003('0x3c')],qs[_0xd003('0x3e')](_0x4a541d['query'][_0xd003('0x3e')]));_0x192126[_0xd003('0x3d')]=_0x192126[_0xd003('0x3d')][_0xd003('0x3f')]?_0x192126['attributes']:_0x3bae6a[_0xd003('0x3c')];if(!_0x4a541d[_0xd003('0x39')][_0xd003('0x40')](_0xd003('0x41'))){_0x192126[_0xd003('0x22')]=qs[_0xd003('0x22')](_0x4a541d[_0xd003('0x39')]['limit']);_0x192126[_0xd003('0x20')]=qs['offset'](_0x4a541d[_0xd003('0x39')]['offset']);}_0x192126[_0xd003('0x42')]=qs[_0xd003('0x43')](_0x4a541d[_0xd003('0x39')][_0xd003('0x43')]);_0x192126['where']=qs[_0xd003('0x44')](_[_0xd003('0x45')](_0x4a541d[_0xd003('0x39')],_0x3bae6a[_0xd003('0x44')]),_0x51070b);if(_0x4a541d['query'][_0xd003('0x2e')]){_0x192126[_0xd003('0x46')]=_['merge'](_0x192126[_0xd003('0x46')],{'$or':_[_0xd003('0x30')](_0x51070b,function(_0x32c143){if(_0x32c143[_0xd003('0x38')]!==_0xd003('0x47')){var _0x385965={};_0x385965[_0x32c143['name']]={'$like':'%'+_0x4a541d[_0xd003('0x39')]['filter']+'%'};return _0x385965;}})});}_0x192126=_[_0xd003('0x48')]({},_0x192126,_0x4a541d[_0xd003('0x49')]);var _0x184dc8={'where':_0x192126['where']};return db['VoiceExtension']['count'](_0x184dc8)[_0xd003('0x28')](function(_0x65d3b0){_0x59e1a7[_0xd003('0x23')]=_0x65d3b0;if(_0x4a541d[_0xd003('0x39')][_0xd003('0x4a')]){_0x192126['include']=[{'all':!![]}];}return db['VoiceExtension'][_0xd003('0x4b')](_0x192126);})[_0xd003('0x28')](function(_0x3b3175){_0x59e1a7[_0xd003('0x4c')]=_0x3b3175;return _0x59e1a7;})[_0xd003('0x28')](respondWithFilteredResult(_0x20368c,_0x192126))['catch'](handleError(_0x20368c,null));};exports[_0xd003('0x4d')]=function(_0x1fed4a,_0x178f31){var _0x3ca980={'raw':![],'where':{'id':_0x1fed4a[_0xd003('0x4e')]['id']}},_0x334065={};_0x334065['model']=_[_0xd003('0x3a')](db[_0xd003('0x4f')][_0xd003('0x36')]);_0x334065['query']=_['keys'](_0x1fed4a[_0xd003('0x39')]);_0x334065[_0xd003('0x44')]=_[_0xd003('0x3b')](_0x334065[_0xd003('0x3c')],_0x334065[_0xd003('0x39')]);_0x3ca980[_0xd003('0x3d')]=_[_0xd003('0x3b')](_0x334065[_0xd003('0x3c')],qs[_0xd003('0x3e')](_0x1fed4a['query'][_0xd003('0x3e')]));_0x3ca980[_0xd003('0x3d')]=_0x3ca980[_0xd003('0x3d')][_0xd003('0x3f')]?_0x3ca980[_0xd003('0x3d')]:_0x334065['model'];if(_0x1fed4a[_0xd003('0x39')]['includeAll']){_0x3ca980['include']=[{'all':!![]}];}_0x3ca980=_['merge']({},_0x3ca980,_0x1fed4a[_0xd003('0x49')]);return db['VoiceExtension'][_0xd003('0x50')](_0x3ca980)[_0xd003('0x28')](handleEntityNotFound(_0x178f31,null))[_0xd003('0x28')](respondWithResult(_0x178f31,null))[_0xd003('0x51')](handleError(_0x178f31,null));};exports[_0xd003('0x52')]=function(_0xfa0475,_0xa953d2){return db['VoiceExtension'][_0xd003('0x50')]({'where':{'id':_0xfa0475[_0xd003('0x4e')]['id']}})[_0xd003('0x28')](handleEntityNotFound(_0xa953d2,null))[_0xd003('0x28')](removeEntity(_0xa953d2,null))[_0xd003('0x51')](handleError(_0xa953d2,null));};exports[_0xd003('0x53')]=function(_0x32ab66,_0x48e142){if(_0x32ab66[_0xd003('0x54')][_0xd003('0x38')]===_0xd003('0x55')&&!_[_0xd003('0x56')](_0x32ab66[_0xd003('0x54')][_0xd003('0x57')],'_')){_0x32ab66['body'][_0xd003('0x57')]='_'[_0xd003('0x58')](_0x32ab66['body'][_0xd003('0x57')]);}return db[_0xd003('0x4f')][_0xd003('0x53')](_0x32ab66[_0xd003('0x54')],{'raw':![]})[_0xd003('0x28')](function(_0xee69f7){var _0xb79924=_0x32ab66['user'][_0xd003('0x29')]({'plain':!![]});if(!_0xb79924)throw new Error(_0xd003('0x59'));if(_0xb79924['role']===_0xd003('0x5a')){var _0x1ca0b0=_0xee69f7['get']({'plain':!![]});var _0xc7a665=[{'name':'InboundRoutes','value':_0xd003('0x2b')},{'name':_0xd003('0x2c'),'value':_0xd003('0x55')},{'name':_0xd003('0x2d'),'value':_0xd003('0x5b')}];var _0x18f264=_[_0xd003('0x50')](_0xc7a665,[_0xd003('0x31'),_0x1ca0b0['type']])[_0xd003('0x32')];return db[_0xd003('0x5c')][_0xd003('0x50')]({'where':{'name':_0x18f264,'userProfileId':_0xb79924['userProfileId']},'raw':!![]})[_0xd003('0x28')](function(_0x313ffb){if(_0x313ffb&&_0x313ffb[_0xd003('0x5d')]===0x0){return db[_0xd003('0x5e')]['create']({'name':_0x1ca0b0[_0xd003('0x32')],'resourceId':_0x1ca0b0['id'],'type':_0x313ffb[_0xd003('0x32')],'sectionId':_0x313ffb['id']},{})['then'](function(){return _0xee69f7;});}else{return _0xee69f7;}})[_0xd003('0x51')](function(_0xdb8a0d){logger[_0xd003('0x33')](_0xd003('0x5f'),_0xdb8a0d);throw _0xdb8a0d;});}return _0xee69f7;})['then'](respondWithResult(_0x48e142,0xc9))[_0xd003('0x51')](handleError(_0x48e142,null));};exports[_0xd003('0x27')]=function(_0x32d8b0,_0x57ca99){if(_0x32d8b0[_0xd003('0x54')]['id']){delete _0x32d8b0[_0xd003('0x54')]['id'];}return db[_0xd003('0x4f')][_0xd003('0x50')]({'where':{'id':_0x32d8b0[_0xd003('0x4e')]['id']}})[_0xd003('0x28')](handleEntityNotFound(_0x57ca99,null))[_0xd003('0x28')](function(_0x144d58){if(_0x144d58){return db[_0xd003('0x4f')][_0xd003('0x27')](_[_0xd003('0x45')](_0x32d8b0[_0xd003('0x54')],[_0xd003('0x57'),_0xd003('0x60'),_0xd003('0x61'),_0xd003('0x62'),'cutdigits',_0xd003('0x63'),'alias']),{'where':{'context':_0x144d58[_0xd003('0x60')],'exten':_0x144d58[_0xd003('0x57')]},'individualHooks':!![]})[_0xd003('0x28')](function(_0x165c89){return _0x165c89;});}return null;})[_0xd003('0x28')](respondWithStatusCode(_0x57ca99,null))[_0xd003('0x51')](handleError(_0x57ca99,null));};exports[_0xd003('0x64')]=function(_0x22b909,_0x121950){return db['VoiceExtension'][_0xd003('0x65')]({'where':{'id':_0x22b909[_0xd003('0x4e')]['id']}})['then'](function(_0x32e987){if(_0x32e987){return db[_0xd003('0x66')]['transaction'](function(_0x441668){return db['VoiceExtension'][_0xd003('0x52')]({'where':{'VoiceExtensionId':_0x22b909['params']['id']},'transaction':_0x441668})[_0xd003('0x28')](function(){var _0x437b33=_[_0xd003('0x30')](_0x22b909['body'],function(_0x1a17b2){_0x1a17b2[_0xd003('0x67')]=_0x22b909[_0xd003('0x4e')]['id'];_0x1a17b2[_0xd003('0x68')]=!![];return _0x1a17b2;});var _0x140ffa=_0x22b909[_0xd003('0x39')][_0xd003('0x69')]&&_0x22b909[_0xd003('0x39')][_0xd003('0x69')][_0xd003('0x6a')]()==='true'?!![]:![];return _0x32e987[_0xd003('0x6b')](_0x437b33,_0x140ffa);})['then'](function(_0x510b19){return db[_0xd003('0x4f')][_0xd003('0x6c')](_0x510b19,{'transaction':_0x441668});});})[_0xd003('0x28')](function(){return db[_0xd003('0x4f')][_0xd003('0x6d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x22b909['params']['id']},'order':_0xd003('0x6e')});});}})[_0xd003('0x28')](respondWithResult(_0x121950,null))[_0xd003('0x51')](handleError(_0x121950,null));};
\ No newline at end of file
index 7058252..9424df3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a73=['remove','emit','hasOwnProperty','hook','events','VoiceExtension','setMaxListeners','update'];(function(_0xfb0cfd,_0x500179){var _0x2fd8aa=function(_0xccb501){while(--_0xccb501){_0xfb0cfd['push'](_0xfb0cfd['shift']());}};_0x2fd8aa(++_0x500179);}(_0x8a73,0x11c));var _0x38a7=function(_0x4e2e6e,_0xafe3d3){_0x4e2e6e=_0x4e2e6e-0x0;var _0xac69b9=_0x8a73[_0x4e2e6e];return _0xac69b9;};'use strict';var EventEmitter=require(_0x38a7('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0x38a7('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x38a7('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x38a7('0x3'),'afterDestroy':_0x38a7('0x4')};function emitEvent(_0x2d74f0){return function(_0x24f537,_0x13330c,_0x4dd9c9){VoiceExtensionEvents[_0x38a7('0x5')](_0x2d74f0+':'+_0x24f537['id'],_0x24f537);VoiceExtensionEvents[_0x38a7('0x5')](_0x2d74f0,_0x24f537);_0x4dd9c9(null);};}for(var e in events){if(events[_0x38a7('0x6')](e)){var event=events[e];VoiceExtension[_0x38a7('0x7')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0x3e2f=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceExtension','save'];(function(_0x2bcd6f,_0x5ee0db){var _0x53b8bf=function(_0x364fcb){while(--_0x364fcb){_0x2bcd6f['push'](_0x2bcd6f['shift']());}};_0x53b8bf(++_0x5ee0db);}(_0x3e2f,0x1ac));var _0xf3e2=function(_0x2f37e0,_0x393ef9){_0x2f37e0=_0x2f37e0-0x0;var _0x43ccce=_0x3e2f[_0x2f37e0];return _0x43ccce;};'use strict';var EventEmitter=require(_0xf3e2('0x0'));var VoiceExtension=require(_0xf3e2('0x1'))['db'][_0xf3e2('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf3e2('0x3'),'afterUpdate':_0xf3e2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x290d47){return function(_0x34e500,_0x19b8d1,_0x731576){VoiceExtensionEvents[_0xf3e2('0x5')](_0x290d47+':'+_0x34e500['id'],_0x34e500);VoiceExtensionEvents['emit'](_0x290d47,_0x34e500);_0x731576(null);};}for(var e in events){if(events[_0xf3e2('0x6')](e)){var event=events[e];VoiceExtension[_0xf3e2('0x7')](e,emitEvent(event));}}module[_0xf3e2('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
index fe3f956..497f63c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x247e=['map','filter','toLowerCase','hasOwnProperty','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','answer','queue','playback','includes','app','appType','custom','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','appdata','priority','last','define','VoiceExtension','voice_extensions','Hangup','util','lodash','./voiceExtension.attributes','exports','models','CDR(type)=','type','alias','Set','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','cutdigits','${EXTEN:','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-ANSWER=0','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','options','length','trunk','param','phone','split','prefix','${EXTEN}','SIP','U(xcally-mixmonitor-context)','replace','join','Interval','findAll','interval','IntervalId','then','*,*,*,*','intervals'];(function(_0x2dc04b,_0x276482){var _0x2a9064=function(_0x3d5c7d){while(--_0x3d5c7d){_0x2dc04b['push'](_0x2dc04b['shift']());}};_0x2a9064(++_0x276482);}(_0x247e,0x1a0));var _0xe247=function(_0x4059c4,_0x1e8014){_0x4059c4=_0x4059c4-0x0;var _0x53fd8a=_0x247e[_0x4059c4];return _0x53fd8a;};'use strict';var util=require(_0xe247('0x0'));var _=require(_0xe247('0x1'));var attributes=require(_0xe247('0x2'));module[_0xe247('0x3')]=function(_0x44ae62){var _0xda6870=_0x44ae62[_0xe247('0x4')];function _0x436d73(_0x5624bd){var _0x52cb75=0x2;var _0x2674d0=[{'type':_0x5624bd['type'],'app':'Set','appdata':_0xe247('0x5')+_0x5624bd[_0xe247('0x6')],'context':_0x5624bd['context'],'exten':_0x5624bd['exten'],'priority':_0x52cb75++,'VoiceExtensionId':_0x5624bd['id']},{'type':_0x5624bd[_0xe247('0x6')],'app':_0x5624bd[_0xe247('0x7')]?_0xe247('0x8'):_0xe247('0x9'),'appdata':_0x5624bd[_0xe247('0x7')]?_0xe247('0xa')+_0x5624bd[_0xe247('0x7')]:_0xe247('0xb'),'context':_0x5624bd[_0xe247('0xc')],'exten':_0x5624bd[_0xe247('0xd')],'priority':_0x52cb75++,'VoiceExtensionId':_0x5624bd['id']}];if(_0x5624bd[_0xe247('0x6')]===_0xe247('0xe')){_0x2674d0[_0xe247('0xf')]({'type':_0xe247('0xe'),'app':_0xe247('0x8'),'appdata':_0xe247('0x10')+_0x5624bd['id'],'context':_0x5624bd[_0xe247('0xc')],'exten':_0x5624bd[_0xe247('0xd')],'priority':_0x52cb75++,'VoiceExtensionId':_0x5624bd['id']});}_0x2674d0['push']({'type':_0x5624bd['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5624bd[_0xe247('0xc')],'exten':_0x5624bd[_0xe247('0xd')],'priority':_0x52cb75++,'VoiceExtensionId':_0x5624bd['id']},{'type':_0x5624bd[_0xe247('0x6')],'app':_0xe247('0x8'),'appdata':_0xe247('0x11'),'context':_0x5624bd[_0xe247('0xc')],'exten':_0x5624bd[_0xe247('0xd')],'priority':_0x52cb75++,'VoiceExtensionId':_0x5624bd['id']},{'type':_0x5624bd['type'],'app':_0xe247('0x8'),'appdata':_0xe247('0x12'),'context':_0x5624bd['context'],'exten':_0x5624bd[_0xe247('0xd')],'priority':_0x52cb75++,'VoiceExtensionId':_0x5624bd['id']});return _0x2674d0;}function _0x1bcacc(_0x402ec3){var _0x482cf7=0x2;var _0x4a5ad5=[{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0xe247('0x14'),'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3['exten'],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0x402ec3[_0xe247('0x7')]?_0xe247('0x8'):_0xe247('0x9'),'appdata':_0x402ec3[_0xe247('0x7')]?_0xe247('0xa')+_0x402ec3['alias']:'No\x20alias\x20set','context':_0x402ec3['context'],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':'CDR(destination)='+(_0x402ec3[_0xe247('0x15')]?_0xe247('0x16')+_0x402ec3[_0xe247('0x15')]+'}':'${EXTEN}'),'context':_0x402ec3['context'],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0xe247('0x10')+_0x402ec3['id'],'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3['exten'],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x17'),'appdata':_0xe247('0x18')+(_0x482cf7+0x2)+'):Goto('+(_0x482cf7+0x1)+')','context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0x402ec3[_0xe247('0x15')]?_0xe247('0x19')+_0x402ec3[_0xe247('0x15')]+'}':_0xe247('0x1a'),'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0xe247('0x1b'),'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0xe247('0x11'),'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':'Set','appdata':_0xe247('0x12'),'context':_0x402ec3['context'],'exten':_0x402ec3['exten'],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0xe247('0x1c')+_0x402ec3['id'],'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']}];if(_0x402ec3['hasOwnProperty'](_0xe247('0x1d'))&&_0x402ec3[_0xe247('0x1d')]!==_0xe247('0x1e')){_0x4a5ad5[_0xe247('0xf')]({'type':'outbound','app':_0xe247('0x8'),'appdata':_0xe247('0x1f'),'context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']},{'type':_0xe247('0x13'),'app':_0xe247('0x8'),'appdata':_0xe247('0x20')+_0x402ec3[_0xe247('0x1d')]||'wav','context':_0x402ec3[_0xe247('0xc')],'exten':_0x402ec3[_0xe247('0xd')],'priority':_0x482cf7++,'VoiceExtensionId':_0x402ec3['id']});}return _0x4a5ad5;}function _0x12e634(_0x347f02){var _0x41e7d4=[{'name':'trunk','param':0x0},{'name':'timeout','param':0x1},{'name':_0xe247('0x21'),'param':0x2},{'name':'url','param':0x3}];var _0x16e4c1={};var _0x48973d=_0x347f02['split'](',');var _0x4217f4=[];for(var _0x1fd767=0x0;_0x1fd767<_0x41e7d4[_0xe247('0x22')];_0x1fd767++){switch(_0x41e7d4[_0x1fd767]['name']){case'trunk':_0x16e4c1[_0xe247('0x23')]=_0x48973d[_0x41e7d4[_0x1fd767][_0xe247('0x24')]]['split']('/')[0x1];_0x16e4c1[_0xe247('0x25')]=_0x48973d[_0x41e7d4[_0x1fd767][_0xe247('0x24')]][_0xe247('0x26')]('/')[0x2];_0x16e4c1[_0xe247('0x27')]=_0x16e4c1[_0xe247('0x25')]?_0x16e4c1[_0xe247('0x25')][_0xe247('0x26')]('$')[0x0]:undefined;_0x16e4c1[_0xe247('0x25')]=route[_0xe247('0x15')]?(_0x16e4c1[_0xe247('0x27')]||'')+_0xe247('0x16')+route[_0xe247('0x15')]+'}':(_0x16e4c1[_0xe247('0x27')]||'')+_0xe247('0x28');_0x4217f4[_0x41e7d4[_0x1fd767]['param']]=[_0xe247('0x29'),_0x16e4c1[_0xe247('0x23')],_0x16e4c1[_0xe247('0x25')]]['join']('/');break;case _0xe247('0x21'):_0x16e4c1[_0xe247('0x21')]=_0x48973d[_0x41e7d4[_0x1fd767][_0xe247('0x24')]];if(route[_0xe247('0x1d')]!==_0xe247('0x1e')){if(_0x16e4c1[_0xe247('0x21')]['indexOf'](_0xe247('0x2a'))<0x0){_0x16e4c1['options']+='U(xcally-mixmonitor-context)';}}else{_0x16e4c1[_0xe247('0x21')]=_0x16e4c1[_0xe247('0x21')][_0xe247('0x2b')](_0xe247('0x2a'),'');}_0x4217f4[_0x41e7d4[_0x1fd767][_0xe247('0x24')]]=_0x16e4c1['options'];break;default:_0x4217f4[_0x41e7d4[_0x1fd767][_0xe247('0x24')]]=_0x48973d[_0x41e7d4[_0x1fd767][_0xe247('0x24')]];}}return _0x4217f4[_0xe247('0x2c')](',');}function _0x4959a7(_0x50d80b,_0x56df56,_0x41160f,_0x38cfbc){return new Promise(function(_0x329181,_0x335ced){var _0x4efa38=[];if(_['isEmpty'](_0x56df56))return _0x329181(_0x4efa38);_0xda6870[_0xe247('0x2d')][_0xe247('0x2e')]({'attributes':['id',_0xe247('0x2f'),_0xe247('0x30')],'raw':!![]})[_0xe247('0x31')](function(_0x11756a){for(var _0x5022b2=0x0,_0x227f38=0x0;_0x5022b2<_0x56df56[_0xe247('0x22')];_0x5022b2++,_0x227f38=0x0){var _0x37f14e=_0x56df56[_0x5022b2];var _0x4f7ca0=[];var _0x4081ff=[];if(_0x37f14e[_0xe247('0x2f')]!==_0xe247('0x32')){_0x37f14e[_0xe247('0x33')]=[_0x37f14e['interval']];}else{_0x37f14e[_0xe247('0x33')]=_0x37f14e[_0xe247('0x30')]?_[_0xe247('0x34')](_[_0xe247('0x35')](_0x11756a,{'IntervalId':_0x37f14e[_0xe247('0x30')]}),_0xe247('0x2f')):[];}_0x37f14e[_0xe247('0xc')]=_0x50d80b[_0xe247('0xc')];_0x37f14e[_0xe247('0xd')]=_0x50d80b[_0xe247('0xd')];if(_0x37f14e[_0xe247('0x6')])_0x37f14e[_0xe247('0x6')]=_0x37f14e[_0xe247('0x6')][_0xe247('0x36')]();if(_0x50d80b[_0xe247('0x6')]===_0xe247('0x13')){if(_0x37f14e[_0xe247('0x37')]('tag')&&_0x37f14e[_0xe247('0x38')]&&_0x37f14e[_0xe247('0x38')]!=='--'){_0x4f7ca0['push']({'type':_0x37f14e[_0xe247('0x6')][_0xe247('0x36')](),'app':'Set','appdata':_0xe247('0x39')+_0x37f14e['tag'],'context':_0x50d80b[_0xe247('0xc')],'exten':_0x50d80b['exten'],'priority':_0x37f14e[_0xe247('0x33')][_0xe247('0x22')]+_0x41160f+_0x227f38++,'VoiceExtensionId':_0x50d80b['id']});}_0x4f7ca0['push']({'type':_0x37f14e[_0xe247('0x6')][_0xe247('0x36')](),'app':'ExecIf','appdata':_0xe247('0x3a')+(_0x37f14e[_0xe247('0x3b')]?'Set(CALLERID(all)='+_0x37f14e[_0xe247('0x3b')]+')':'NoOp(No\x20number\x20available)'),'context':_0x50d80b[_0xe247('0xc')],'exten':_0x50d80b['exten'],'priority':_0x37f14e[_0xe247('0x33')]['length']+_0x41160f+_0x227f38++,'VoiceExtensionId':_0x50d80b['id']});}else{if(_0x37f14e[_0xe247('0x37')](_0xe247('0x3c'))){if([_0xe247('0x3d'),_0xe247('0x3e')][_0xe247('0x3f')](_0x37f14e[_0xe247('0x40')][_0xe247('0x36')]())&&_0x37f14e[_0xe247('0x41')]!==_0xe247('0x42')){if(_0x37f14e['answer']){_0x4f7ca0[_0xe247('0xf')]({'type':_0x37f14e[_0xe247('0x6')][_0xe247('0x36')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x50d80b[_0xe247('0xc')],'exten':_0x50d80b[_0xe247('0xd')],'priority':_0x37f14e[_0xe247('0x33')]['length']+_0x41160f+_0x227f38++,'VoiceExtensionId':_0x50d80b['id']});_0x4f7ca0[_0xe247('0xf')]({'type':_0x37f14e[_0xe247('0x6')][_0xe247('0x36')](),'app':_0xe247('0x8'),'appdata':_0xe247('0x43'),'context':_0x50d80b['context'],'exten':_0x50d80b[_0xe247('0xd')],'priority':_0x37f14e[_0xe247('0x33')][_0xe247('0x22')]+_0x41160f+_0x227f38++,'VoiceExtensionId':_0x50d80b['id']});}else{_0x4f7ca0['push']({'type':_0x37f14e[_0xe247('0x6')][_0xe247('0x36')](),'app':_0xe247('0x17'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x50d80b['context'],'exten':_0x50d80b[_0xe247('0xd')],'priority':_0x37f14e['intervals'][_0xe247('0x22')]+_0x41160f+_0x227f38++,'VoiceExtensionId':_0x50d80b['id']});_0x4f7ca0[_0xe247('0xf')]({'type':_0x37f14e['type'][_0xe247('0x36')](),'app':_0xe247('0x8'),'appdata':_0xe247('0x44'),'context':_0x50d80b[_0xe247('0xc')],'exten':_0x50d80b[_0xe247('0xd')],'priority':_0x37f14e['intervals'][_0xe247('0x22')]+_0x41160f+_0x227f38++,'VoiceExtensionId':_0x50d80b['id']});}}}}for(var _0x5079c6=0x0;_0x5079c6<_0x37f14e[_0xe247('0x33')][_0xe247('0x22')];_0x5079c6++){var _0x47ec7d=_0x41160f+_0x37f14e['intervals'][_0xe247('0x22')];var _0x2958fb=_0x5079c6===_0x37f14e[_0xe247('0x33')][_0xe247('0x22')]-0x1?_0x41160f+_0x4f7ca0[_0xe247('0x22')]+_0x4081ff[_0xe247('0x22')]+0x2:_0x41160f+_0x5079c6+0x1;_0x4f7ca0['splice'](_0x5079c6,0x0,{'type':_0x50d80b['type'],'app':_0xe247('0x45'),'appdata':_0x37f14e[_0xe247('0x33')][_0x5079c6]+'?'+_0x50d80b['context']+_0xe247('0x46')+_0x47ec7d+':'+_0x50d80b[_0xe247('0xc')]+',${EXTEN},'+_0x2958fb,'exten':_0x50d80b['exten'],'context':_0x50d80b['context'],'priority':_0x41160f+_0x5079c6,'VoiceExtensionId':_0x50d80b['id']});}if(_0x38cfbc&&_0x37f14e[_0xe247('0x41')]==='outboundDial')_0x37f14e[_0xe247('0x47')]=_0x12e634(_0x37f14e[_0xe247('0x47')]);_0x37f14e[_0xe247('0x48')]=_0x4f7ca0[_0xe247('0x22')]?_[_0xe247('0x49')](_0x4f7ca0)['priority']+0x1:_0x41160f;_0x4efa38=_['concat'](_0x4efa38,_0x4f7ca0,[_0x37f14e],_0x4081ff);_0x41160f=_['last'](_0x4efa38)[_0xe247('0x48')]+0x1;}return _0x329181(_0x4efa38);})['catch'](function(_0x57c201){_0x335ced(_0x57c201);});});}return _0x44ae62[_0xe247('0x4a')](_0xe247('0x4b'),attributes,{'tableName':_0xe247('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x5f433e,_0x5a34ed){var _0x2be154=this;var _0x1c46ec=_0x2be154[_0xe247('0x6')]===_0xe247('0x13')?_0x1bcacc(_0x2be154):_0x436d73(_0x2be154);return _0x4959a7(_0x2be154,_0x5f433e,_[_0xe247('0x49')](_0x1c46ec)[_0xe247('0x48')]+0x1,_0x5a34ed)[_0xe247('0x31')](function(_0x34d497){var _0x4f9fa0=_['concat'](_0x1c46ec,_0x34d497);_0x4f9fa0[_0xe247('0xf')]({'type':_0x2be154[_0xe247('0x6')],'app':_0xe247('0x4d'),'exten':_0x2be154[_0xe247('0xd')],'context':_0x2be154['context'],'priority':_[_0xe247('0x49')](_0x4f9fa0)[_0xe247('0x48')]+0x1,'VoiceExtensionId':_0x2be154['id']});return _0x4f9fa0;});}}});};
\ No newline at end of file
+var _0x9cb6=['voice_extensions','Hangup','util','lodash','exports','models','type','Set','CDR(type)=','alias','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','exten','inbound','push','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','outbound','CDR(destination)=','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','options','split','name','param','phone','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','findAll','interval','IntervalId','then','length','*,*,*,*','intervals','map','filter','toLowerCase','CDR(tag)=','tag','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','queue','playback','app','appType','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','outboundDial','appdata','priority','last','concat','catch','VoiceExtension'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x9cb6,0xf2));var _0x69cb=function(_0x443ed1,_0x1bf953){_0x443ed1=_0x443ed1-0x0;var _0x586a50=_0x9cb6[_0x443ed1];return _0x586a50;};'use strict';var util=require(_0x69cb('0x0'));var _=require(_0x69cb('0x1'));var attributes=require('./voiceExtension.attributes');module[_0x69cb('0x2')]=function(_0x50ab03){var _0x39472f=_0x50ab03[_0x69cb('0x3')];function _0x336c91(_0x266ed3){var _0x2ce0e9=0x2;var _0x5f722c=[{'type':_0x266ed3[_0x69cb('0x4')],'app':_0x69cb('0x5'),'appdata':_0x69cb('0x6')+_0x266ed3[_0x69cb('0x4')],'context':_0x266ed3['context'],'exten':_0x266ed3['exten'],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']},{'type':_0x266ed3[_0x69cb('0x4')],'app':_0x266ed3[_0x69cb('0x7')]?_0x69cb('0x5'):_0x69cb('0x8'),'appdata':_0x266ed3['alias']?_0x69cb('0x9')+_0x266ed3[_0x69cb('0x7')]:_0x69cb('0xa'),'context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']}];if(_0x266ed3[_0x69cb('0x4')]===_0x69cb('0xd')){_0x5f722c[_0x69cb('0xe')]({'type':_0x69cb('0xd'),'app':'Set','appdata':_0x69cb('0xf')+_0x266ed3['id'],'context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']});}_0x5f722c[_0x69cb('0xe')]({'type':_0x266ed3[_0x69cb('0x4')],'app':_0x69cb('0x5'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']},{'type':_0x266ed3[_0x69cb('0x4')],'app':_0x69cb('0x5'),'appdata':_0x69cb('0x10'),'context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']},{'type':_0x266ed3['type'],'app':_0x69cb('0x5'),'appdata':'MONITOR_OPTIONS=ab','context':_0x266ed3[_0x69cb('0xb')],'exten':_0x266ed3[_0x69cb('0xc')],'priority':_0x2ce0e9++,'VoiceExtensionId':_0x266ed3['id']});return _0x5f722c;}function _0x184db9(_0x3d396a){var _0x1dff22=0x2;var _0x27d4e5=[{'type':'outbound','app':_0x69cb('0x5'),'appdata':'CDR(type)=outbound','context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x3d396a[_0x69cb('0x7')]?'Set':_0x69cb('0x8'),'appdata':_0x3d396a[_0x69cb('0x7')]?_0x69cb('0x9')+_0x3d396a[_0x69cb('0x7')]:_0x69cb('0xa'),'context':_0x3d396a['context'],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x12')+(_0x3d396a[_0x69cb('0x13')]?'${EXTEN:'+_0x3d396a[_0x69cb('0x13')]+'}':_0x69cb('0x14')),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a['exten'],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0xf')+_0x3d396a['id'],'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':'ExecIf','appdata':_0x69cb('0x15')+(_0x1dff22+0x2)+_0x69cb('0x16')+(_0x1dff22+0x1)+')','context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x3d396a[_0x69cb('0x13')]?_0x69cb('0x17')+_0x3d396a['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x3d396a['context'],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x18'),'context':_0x3d396a['context'],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x10'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':'Set','appdata':_0x69cb('0x19'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':'outbound','app':'Set','appdata':_0x69cb('0x1a')+_0x3d396a['id'],'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a['exten'],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']}];if(_0x3d396a[_0x69cb('0x1b')](_0x69cb('0x1c'))&&_0x3d396a['recordingFormat']!==_0x69cb('0x1d')){_0x27d4e5['push']({'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x1e'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a['exten'],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']},{'type':_0x69cb('0x11'),'app':_0x69cb('0x5'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3d396a[_0x69cb('0x1c')]||_0x69cb('0x1f'),'context':_0x3d396a[_0x69cb('0xb')],'exten':_0x3d396a[_0x69cb('0xc')],'priority':_0x1dff22++,'VoiceExtensionId':_0x3d396a['id']});}return _0x27d4e5;}function _0x21f181(_0x33e37a){var _0x542deb=[{'name':_0x69cb('0x20'),'param':0x0},{'name':'timeout','param':0x1},{'name':_0x69cb('0x21'),'param':0x2},{'name':'url','param':0x3}];var _0x1006fb={};var _0xb237ae=_0x33e37a[_0x69cb('0x22')](',');var _0x4cea50=[];for(var _0x454e6b=0x0;_0x454e6b<_0x542deb['length'];_0x454e6b++){switch(_0x542deb[_0x454e6b][_0x69cb('0x23')]){case'trunk':_0x1006fb[_0x69cb('0x20')]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]][_0x69cb('0x22')]('/')[0x1];_0x1006fb[_0x69cb('0x25')]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]][_0x69cb('0x22')]('/')[0x2];_0x1006fb[_0x69cb('0x26')]=_0x1006fb[_0x69cb('0x25')]?_0x1006fb[_0x69cb('0x25')][_0x69cb('0x22')]('$')[0x0]:undefined;_0x1006fb[_0x69cb('0x25')]=route['cutdigits']?(_0x1006fb['prefix']||'')+'${EXTEN:'+route[_0x69cb('0x13')]+'}':(_0x1006fb[_0x69cb('0x26')]||'')+_0x69cb('0x14');_0x4cea50[_0x542deb[_0x454e6b][_0x69cb('0x24')]]=[_0x69cb('0x27'),_0x1006fb[_0x69cb('0x20')],_0x1006fb[_0x69cb('0x25')]][_0x69cb('0x28')]('/');break;case _0x69cb('0x21'):_0x1006fb[_0x69cb('0x21')]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]];if(route[_0x69cb('0x1c')]!=='none'){if(_0x1006fb[_0x69cb('0x21')][_0x69cb('0x29')](_0x69cb('0x2a'))<0x0){_0x1006fb['options']+=_0x69cb('0x2a');}}else{_0x1006fb[_0x69cb('0x21')]=_0x1006fb[_0x69cb('0x21')][_0x69cb('0x2b')](_0x69cb('0x2a'),'');}_0x4cea50[_0x542deb[_0x454e6b][_0x69cb('0x24')]]=_0x1006fb[_0x69cb('0x21')];break;default:_0x4cea50[_0x542deb[_0x454e6b][_0x69cb('0x24')]]=_0xb237ae[_0x542deb[_0x454e6b][_0x69cb('0x24')]];}}return _0x4cea50[_0x69cb('0x28')](',');}function _0x177ddf(_0x216e0f,_0x424045,_0xc4aa5b,_0x5884f3){return new Promise(function(_0xbb7608,_0x4f62bd){var _0x38b868=[];if(_[_0x69cb('0x2c')](_0x424045))return _0xbb7608(_0x38b868);_0x39472f['Interval'][_0x69cb('0x2d')]({'attributes':['id',_0x69cb('0x2e'),_0x69cb('0x2f')],'raw':!![]})[_0x69cb('0x30')](function(_0x28e43a){for(var _0x154b1a=0x0,_0x3bac30=0x0;_0x154b1a<_0x424045[_0x69cb('0x31')];_0x154b1a++,_0x3bac30=0x0){var _0x50718e=_0x424045[_0x154b1a];var _0xdc1bfa=[];var _0x4330ec=[];if(_0x50718e[_0x69cb('0x2e')]!==_0x69cb('0x32')){_0x50718e['intervals']=[_0x50718e[_0x69cb('0x2e')]];}else{_0x50718e[_0x69cb('0x33')]=_0x50718e['IntervalId']?_[_0x69cb('0x34')](_[_0x69cb('0x35')](_0x28e43a,{'IntervalId':_0x50718e[_0x69cb('0x2f')]}),_0x69cb('0x2e')):[];}_0x50718e['context']=_0x216e0f[_0x69cb('0xb')];_0x50718e['exten']=_0x216e0f[_0x69cb('0xc')];if(_0x50718e[_0x69cb('0x4')])_0x50718e[_0x69cb('0x4')]=_0x50718e['type'][_0x69cb('0x36')]();if(_0x216e0f[_0x69cb('0x4')]===_0x69cb('0x11')){if(_0x50718e[_0x69cb('0x1b')]('tag')&&_0x50718e['tag']&&_0x50718e['tag']!=='--'){_0xdc1bfa['push']({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x37')+_0x50718e[_0x69cb('0x38')],'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f['exten'],'priority':_0x50718e[_0x69cb('0x33')]['length']+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')]['toLowerCase'](),'app':_0x69cb('0x39'),'appdata':_0x69cb('0x3a')+(_0x50718e[_0x69cb('0x3b')]?_0x69cb('0x3c')+_0x50718e[_0x69cb('0x3b')]+')':_0x69cb('0x3d')),'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')]['length']+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}else{if(_0x50718e[_0x69cb('0x1b')]('answer')){if([_0x69cb('0x3e'),_0x69cb('0x3f')]['includes'](_0x50718e[_0x69cb('0x40')][_0x69cb('0x36')]())&&_0x50718e[_0x69cb('0x41')]!=='custom'){if(_0x50718e[_0x69cb('0x42')]){_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':_0x69cb('0x39'),'appdata':_0x69cb('0x43'),'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':_0x69cb('0x5'),'appdata':_0x69cb('0x44'),'context':_0x216e0f['context'],'exten':_0x216e0f['exten'],'priority':_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}else{_0xdc1bfa['push']({'type':_0x50718e[_0x69cb('0x4')][_0x69cb('0x36')](),'app':'ExecIf','appdata':_0x69cb('0x45'),'context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});_0xdc1bfa[_0x69cb('0xe')]({'type':_0x50718e[_0x69cb('0x4')]['toLowerCase'](),'app':_0x69cb('0x5'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x216e0f[_0x69cb('0xb')],'exten':_0x216e0f[_0x69cb('0xc')],'priority':_0x50718e[_0x69cb('0x33')]['length']+_0xc4aa5b+_0x3bac30++,'VoiceExtensionId':_0x216e0f['id']});}}}}for(var _0x1e3c89=0x0;_0x1e3c89<_0x50718e[_0x69cb('0x33')]['length'];_0x1e3c89++){var _0xe25d1e=_0xc4aa5b+_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')];var _0x154beb=_0x1e3c89===_0x50718e[_0x69cb('0x33')][_0x69cb('0x31')]-0x1?_0xc4aa5b+_0xdc1bfa[_0x69cb('0x31')]+_0x4330ec[_0x69cb('0x31')]+0x2:_0xc4aa5b+_0x1e3c89+0x1;_0xdc1bfa[_0x69cb('0x46')](_0x1e3c89,0x0,{'type':_0x216e0f['type'],'app':'GotoIfTime','appdata':_0x50718e['intervals'][_0x1e3c89]+'?'+_0x216e0f[_0x69cb('0xb')]+',${EXTEN},'+_0xe25d1e+':'+_0x216e0f[_0x69cb('0xb')]+',${EXTEN},'+_0x154beb,'exten':_0x216e0f[_0x69cb('0xc')],'context':_0x216e0f[_0x69cb('0xb')],'priority':_0xc4aa5b+_0x1e3c89,'VoiceExtensionId':_0x216e0f['id']});}if(_0x5884f3&&_0x50718e[_0x69cb('0x41')]===_0x69cb('0x47'))_0x50718e['appdata']=_0x21f181(_0x50718e[_0x69cb('0x48')]);_0x50718e[_0x69cb('0x49')]=_0xdc1bfa[_0x69cb('0x31')]?_[_0x69cb('0x4a')](_0xdc1bfa)[_0x69cb('0x49')]+0x1:_0xc4aa5b;_0x38b868=_[_0x69cb('0x4b')](_0x38b868,_0xdc1bfa,[_0x50718e],_0x4330ec);_0xc4aa5b=_['last'](_0x38b868)[_0x69cb('0x49')]+0x1;}return _0xbb7608(_0x38b868);})[_0x69cb('0x4c')](function(_0x372d80){_0x4f62bd(_0x372d80);});});}return _0x50ab03['define'](_0x69cb('0x4d'),attributes,{'tableName':_0x69cb('0x4e'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x2f7bbe,_0x5ada30){var _0x4ddca9=this;var _0x3ebd2d=_0x4ddca9[_0x69cb('0x4')]===_0x69cb('0x11')?_0x184db9(_0x4ddca9):_0x336c91(_0x4ddca9);return _0x177ddf(_0x4ddca9,_0x2f7bbe,_[_0x69cb('0x4a')](_0x3ebd2d)[_0x69cb('0x49')]+0x1,_0x5ada30)[_0x69cb('0x30')](function(_0x5bbfab){var _0x5a349e=_[_0x69cb('0x4b')](_0x3ebd2d,_0x5bbfab);_0x5a349e[_0x69cb('0xe')]({'type':_0x4ddca9['type'],'app':_0x69cb('0x4f'),'exten':_0x4ddca9[_0x69cb('0xc')],'context':_0x4ddca9[_0x69cb('0xb')],'priority':_[_0x69cb('0x4a')](_0x5a349e)[_0x69cb('0x49')]+0x1,'VoiceExtensionId':_0x4ddca9['id']});return _0x5a349e;});}}});};
\ No newline at end of file
index 5d0d904..5c96b7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2159=['message','request\x20sent','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','attributes','limit','include','map','model','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./voiceExtension.socket','request','then','info','VoiceExtension,\x20%s,\x20%s','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xad5bb5,_0x356f53){var _0x394484=function(_0x22b644){while(--_0x22b644){_0xad5bb5['push'](_0xad5bb5['shift']());}};_0x394484(++_0x356f53);}(_0x2159,0x17f));var _0x9215=function(_0x12d013,_0x286e4c){_0x12d013=_0x12d013-0x0;var _0x54220c=_0x2159[_0x12d013];return _0x54220c;};'use strict';var _=require(_0x9215('0x0'));var util=require(_0x9215('0x1'));var moment=require(_0x9215('0x2'));var BPromise=require(_0x9215('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9215('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9215('0x5'));var logger=require(_0x9215('0x6'))(_0x9215('0x7'));var config=require(_0x9215('0x8'));var jayson=require(_0x9215('0x9'));var client=jayson[_0x9215('0xa')][_0x9215('0xb')]({'port':0x232a});config[_0x9215('0xc')]=_['defaults'](config[_0x9215('0xc')],{'host':_0x9215('0xd'),'port':0x18eb});var socket=require(_0x9215('0xe'))(new Redis(config[_0x9215('0xc')]));require(_0x9215('0xf'))['register'](socket);function respondWithRpcPromise(_0x33b7ed,_0x33be6a,_0x9d11c1){return new BPromise(function(_0xf2a925,_0x57ba44){return client[_0x9215('0x10')](_0x33b7ed,_0x9d11c1)[_0x9215('0x11')](function(_0x4960ba){logger[_0x9215('0x12')](_0x9215('0x13'),_0x33be6a,'request\x20sent');logger[_0x9215('0x14')](_0x9215('0x15'),_0x33be6a,'request\x20sent',JSON[_0x9215('0x16')](_0x4960ba));if(_0x4960ba['error']){if(_0x4960ba[_0x9215('0x17')]['code']===0x1f4){logger[_0x9215('0x17')](_0x9215('0x13'),_0x33be6a,_0x4960ba[_0x9215('0x17')][_0x9215('0x18')]);return _0x57ba44(_0x4960ba['error'][_0x9215('0x18')]);}logger[_0x9215('0x17')]('VoiceExtension,\x20%s,\x20%s',_0x33be6a,_0x4960ba[_0x9215('0x17')][_0x9215('0x18')]);return _0xf2a925(_0x4960ba[_0x9215('0x17')][_0x9215('0x18')]);}else{logger[_0x9215('0x12')](_0x9215('0x13'),_0x33be6a,_0x9215('0x19'));_0xf2a925(_0x4960ba['result'][_0x9215('0x18')]);}})[_0x9215('0x1a')](function(_0x32b658){logger[_0x9215('0x17')](_0x9215('0x13'),_0x33be6a,_0x32b658);_0x57ba44(_0x32b658);});});}exports[_0x9215('0x1b')]=function(_0x315320){var _0x52dc87=this;return new Promise(function(_0x5b8aac,_0x5bc65b){return db[_0x9215('0x1c')][_0x9215('0x1d')]({'raw':_0x315320['options']?_0x315320[_0x9215('0x1e')][_0x9215('0x1f')]===undefined?!![]:![]:!![],'where':_0x315320[_0x9215('0x1e')]?_0x315320[_0x9215('0x1e')]['where']||null:null,'attributes':_0x315320[_0x9215('0x1e')]?_0x315320[_0x9215('0x1e')][_0x9215('0x20')]||null:null,'limit':_0x315320[_0x9215('0x1e')]?_0x315320[_0x9215('0x1e')][_0x9215('0x21')]||null:null,'include':_0x315320[_0x9215('0x1e')]?_0x315320[_0x9215('0x1e')][_0x9215('0x22')]?_[_0x9215('0x23')](_0x315320[_0x9215('0x1e')]['include'],function(_0x34092e){return{'model':db[_0x34092e[_0x9215('0x24')]],'as':_0x34092e['as'],'attributes':_0x34092e[_0x9215('0x20')],'include':_0x34092e['include']?_[_0x9215('0x23')](_0x34092e[_0x9215('0x22')],function(_0x4159a3){return{'model':db[_0x4159a3[_0x9215('0x24')]],'as':_0x4159a3['as'],'attributes':_0x4159a3[_0x9215('0x20')],'include':_0x4159a3[_0x9215('0x22')]?_['map'](_0x4159a3[_0x9215('0x22')],function(_0x83774f){return{'model':db[_0x83774f[_0x9215('0x24')]],'as':_0x83774f['as'],'attributes':_0x83774f[_0x9215('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c38eb){logger['info'](_0x9215('0x1b'),_0x315320);logger['debug'](_0x9215('0x1b'),_0x315320,JSON['stringify'](_0x1c38eb));_0x5b8aac(_0x1c38eb);})[_0x9215('0x1a')](function(_0x4ff78a){logger['error'](_0x9215('0x1b'),_0x4ff78a[_0x9215('0x18')],_0x315320);_0x5bc65b(_0x52dc87['error'](0x1f4,_0x4ff78a['message']));});});};
\ No newline at end of file
+var _0x6cfd=['limit','include','map','model','debug','stringify','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','defaults','localhost','socket.io-emitter','redis','./voiceExtension.socket','register','request','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','code','error','message','GetVoiceExtension','VoiceExtension','options','where','attributes'];(function(_0x5d1a63,_0x58f786){var _0x468218=function(_0x25a9eb){while(--_0x25a9eb){_0x5d1a63['push'](_0x5d1a63['shift']());}};_0x468218(++_0x58f786);}(_0x6cfd,0x1b7));var _0xd6cf=function(_0x117f4c,_0x36a9b1){_0x117f4c=_0x117f4c-0x0;var _0x2b24e9=_0x6cfd[_0x117f4c];return _0x2b24e9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd6cf('0x0'));var BPromise=require(_0xd6cf('0x1'));var rs=require(_0xd6cf('0x2'));var fs=require('fs');var Redis=require(_0xd6cf('0x3'));var db=require(_0xd6cf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd6cf('0x5'))(_0xd6cf('0x6'));var config=require(_0xd6cf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd6cf('0x8')][_0xd6cf('0x9')]({'port':0x232a});config['redis']=_[_0xd6cf('0xa')](config['redis'],{'host':_0xd6cf('0xb'),'port':0x18eb});var socket=require(_0xd6cf('0xc'))(new Redis(config[_0xd6cf('0xd')]));require(_0xd6cf('0xe'))[_0xd6cf('0xf')](socket);function respondWithRpcPromise(_0xd5929f,_0xa0ee7d,_0x2f638a){return new BPromise(function(_0x2c99e8,_0x53528f){return client[_0xd6cf('0x10')](_0xd5929f,_0x2f638a)['then'](function(_0x3456b6){logger[_0xd6cf('0x11')](_0xd6cf('0x12'),_0xa0ee7d,_0xd6cf('0x13'));logger['debug'](_0xd6cf('0x14'),_0xa0ee7d,_0xd6cf('0x13'),JSON['stringify'](_0x3456b6));if(_0x3456b6['error']){if(_0x3456b6['error'][_0xd6cf('0x15')]===0x1f4){logger['error']('VoiceExtension,\x20%s,\x20%s',_0xa0ee7d,_0x3456b6[_0xd6cf('0x16')][_0xd6cf('0x17')]);return _0x53528f(_0x3456b6[_0xd6cf('0x16')][_0xd6cf('0x17')]);}logger[_0xd6cf('0x16')](_0xd6cf('0x12'),_0xa0ee7d,_0x3456b6[_0xd6cf('0x16')][_0xd6cf('0x17')]);return _0x2c99e8(_0x3456b6[_0xd6cf('0x16')]['message']);}else{logger['info'](_0xd6cf('0x12'),_0xa0ee7d,_0xd6cf('0x13'));_0x2c99e8(_0x3456b6['result'][_0xd6cf('0x17')]);}})['catch'](function(_0x9066ab){logger[_0xd6cf('0x16')](_0xd6cf('0x12'),_0xa0ee7d,_0x9066ab);_0x53528f(_0x9066ab);});});}exports[_0xd6cf('0x18')]=function(_0x4be8fc){var _0xf5675b=this;return new Promise(function(_0x4f6612,_0x309d36){return db[_0xd6cf('0x19')]['findAll']({'raw':_0x4be8fc[_0xd6cf('0x1a')]?_0x4be8fc[_0xd6cf('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x4be8fc['options']?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1b')]||null:null,'attributes':_0x4be8fc[_0xd6cf('0x1a')]?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1c')]||null:null,'limit':_0x4be8fc['options']?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1d')]||null:null,'include':_0x4be8fc[_0xd6cf('0x1a')]?_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1e')]?_[_0xd6cf('0x1f')](_0x4be8fc[_0xd6cf('0x1a')][_0xd6cf('0x1e')],function(_0x5088c8){return{'model':db[_0x5088c8[_0xd6cf('0x20')]],'as':_0x5088c8['as'],'attributes':_0x5088c8[_0xd6cf('0x1c')],'include':_0x5088c8['include']?_['map'](_0x5088c8['include'],function(_0x784f92){return{'model':db[_0x784f92[_0xd6cf('0x20')]],'as':_0x784f92['as'],'attributes':_0x784f92[_0xd6cf('0x1c')],'include':_0x784f92['include']?_['map'](_0x784f92[_0xd6cf('0x1e')],function(_0x3483b7){return{'model':db[_0x3483b7['model']],'as':_0x3483b7['as'],'attributes':_0x3483b7[_0xd6cf('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33b8a8){logger[_0xd6cf('0x11')]('GetVoiceExtension',_0x4be8fc);logger[_0xd6cf('0x21')](_0xd6cf('0x18'),_0x4be8fc,JSON[_0xd6cf('0x22')](_0x33b8a8));_0x4f6612(_0x33b8a8);})[_0xd6cf('0x23')](function(_0x3d0ad8){logger['error'](_0xd6cf('0x18'),_0x3d0ad8[_0xd6cf('0x17')],_0x4be8fc);_0x309d36(_0xf5675b['error'](0x1f4,_0x3d0ad8['message']));});});};
\ No newline at end of file
index 8765eed..e33f337 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x5194c2,_0x4a29f2){var _0x1d2cc5=function(_0x25ba2d){while(--_0x25ba2d){_0x5194c2['push'](_0x5194c2['shift']());}};_0x1d2cc5(++_0x4a29f2);}(_0xabce,0x103));var _0xeabc=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xabce[_0x2160a9];return _0xa88cf7;};'use strict';var VoiceExtensionEvents=require(_0xeabc('0x0'));var events=[_0xeabc('0x1'),_0xeabc('0x2'),_0xeabc('0x3')];function createListener(_0x49dbcc,_0x5bd1a4){return function(_0x5ebc95){_0x5bd1a4[_0xeabc('0x4')](_0x49dbcc,_0x5ebc95);};}function removeListener(_0x1d9f37,_0x1a88a7){return function(){VoiceExtensionEvents['removeListener'](_0x1d9f37,_0x1a88a7);};}exports['register']=function(_0x1b07a8){for(var _0x52a4d7=0x0,_0x229ba4=events['length'];_0x52a4d7<_0x229ba4;_0x52a4d7++){var _0x3bdc29=events[_0x52a4d7];var _0x9417af=createListener(_0xeabc('0x5')+_0x3bdc29,_0x1b07a8);VoiceExtensionEvents['on'](_0x3bdc29,_0x9417af);}};
\ No newline at end of file
+var _0xc4aa=['remove','update','removeListener','register','length','./voiceExtension.events','save'];(function(_0x35eb3b,_0x52ddbd){var _0x4da7a3=function(_0x3a8db3){while(--_0x3a8db3){_0x35eb3b['push'](_0x35eb3b['shift']());}};_0x4da7a3(++_0x52ddbd);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc4aa[_0x1caf6a];return _0x1bf493;};'use strict';var VoiceExtensionEvents=require(_0xac4a('0x0'));var events=[_0xac4a('0x1'),_0xac4a('0x2'),_0xac4a('0x3')];function createListener(_0x275161,_0x22469d){return function(_0x58634e){_0x22469d['emit'](_0x275161,_0x58634e);};}function removeListener(_0x47d4f6,_0x2f48ed){return function(){VoiceExtensionEvents[_0xac4a('0x4')](_0x47d4f6,_0x2f48ed);};}exports[_0xac4a('0x5')]=function(_0x215f39){for(var _0x96be2b=0x0,_0x15cd34=events[_0xac4a('0x6')];_0x96be2b<_0x15cd34;_0x96be2b++){var _0x10525b=events[_0x96be2b];var _0x5c6179=createListener('voiceExtension:'+_0x10525b,_0x215f39);VoiceExtensionEvents['on'](_0x10525b,_0x5c6179);}};
\ No newline at end of file
index 81574a5..f630807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['show','/:id/messages','create','put','/:id','update','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','isAuthenticated','index'];(function(_0x35e489,_0x245a54){var _0x368472=function(_0x58a3d3){while(--_0x58a3d3){_0x35e489['push'](_0x35e489['shift']());}};_0x368472(++_0x245a54);}(_0xeda8,0x104));var _0x8eda=function(_0x37d9cb,_0x4bccfd){_0x37d9cb=_0x37d9cb-0x0;var _0x2b866c=_0xeda8[_0x37d9cb];return _0x2b866c;};'use strict';var multer=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var path=require('path');var timeout=require(_0x8eda('0x2'));var express=require(_0x8eda('0x3'));var router=express[_0x8eda('0x4')]();var fs_extra=require(_0x8eda('0x5'));var auth=require(_0x8eda('0x6'));var interaction=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var controller=require(_0x8eda('0x9'));router[_0x8eda('0xa')]('/',auth[_0x8eda('0xb')](),controller[_0x8eda('0xc')]);router[_0x8eda('0xa')]('/:id',auth[_0x8eda('0xb')](),controller[_0x8eda('0xd')]);router[_0x8eda('0xa')](_0x8eda('0xe'),auth['isAuthenticated'](),controller['getMessages']);router['post']('/',auth['isAuthenticated'](),controller[_0x8eda('0xf')]);router[_0x8eda('0x10')](_0x8eda('0x11'),auth['isAuthenticated'](),controller[_0x8eda('0x12')]);router['delete'](_0x8eda('0x11'),auth[_0x8eda('0xb')](),controller[_0x8eda('0x13')]);module[_0x8eda('0x14')]=router;
\ No newline at end of file
+var _0x5d58=['getMessages','post','update','delete','/:id','destroy','exports','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/messages'];(function(_0x5d50d7,_0x339501){var _0x4acb68=function(_0x6bd7a8){while(--_0x6bd7a8){_0x5d50d7['push'](_0x5d50d7['shift']());}};_0x4acb68(++_0x339501);}(_0x5d58,0x187));var _0x85d5=function(_0x5325d5,_0x17ceb0){_0x5325d5=_0x5325d5-0x0;var _0x363572=_0x5d58[_0x5325d5];return _0x363572;};'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('./voiceMail.controller');router[_0x85d5('0x4')]('/',auth[_0x85d5('0x5')](),controller[_0x85d5('0x6')]);router[_0x85d5('0x4')]('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0x7')]);router['get'](_0x85d5('0x8'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')]('/',auth[_0x85d5('0x5')](),controller['create']);router['put']('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0xb')]);router[_0x85d5('0xc')](_0x85d5('0xd'),auth[_0x85d5('0x5')](),controller[_0x85d5('0xe')]);module[_0x85d5('0xf')]=router;
\ No newline at end of file
index a22de58..4312368 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b12=['ENUM','yes','TIMESTAMP','INTEGER','VIRTUAL','fullname','\x20-\x20','mailbox','exports','STRING','contest_mailbox','email','string','trim','central'];(function(_0x5ecfdd,_0x24bd5c){var _0x3a7281=function(_0xf7588e){while(--_0xf7588e){_0x5ecfdd['push'](_0x5ecfdd['shift']());}};_0x3a7281(++_0x24bd5c);}(_0x2b12,0xe9));var _0x22b1=function(_0xf75c37,_0x2fa1c7){_0xf75c37=_0xf75c37-0x0;var _0x568a1f=_0x2b12[_0xf75c37];return _0x568a1f;};'use strict';var Sequelize=require('sequelize');module[_0x22b1('0x0')]={'customer_id':{'type':Sequelize[_0x22b1('0x1')]},'context':{'type':Sequelize[_0x22b1('0x1')],'defaultValue':'from-voicemail','unique':_0x22b1('0x2')},'mailbox':{'type':Sequelize[_0x22b1('0x1')],'defaultValue':'','allowNull':![],'unique':_0x22b1('0x2')},'password':{'type':Sequelize[_0x22b1('0x1')]},'fullname':{'type':Sequelize[_0x22b1('0x1')]},'email':{'type':Sequelize[_0x22b1('0x1')],'validate':{'isEmail':!![]},'set':function(_0x93e65b){this['setDataValue'](_0x22b1('0x3'),typeof _0x93e65b===_0x22b1('0x4')&&_0x93e65b[_0x22b1('0x5')]()?_0x93e65b['trim']():null);}},'pager':{'type':Sequelize[_0x22b1('0x1')]},'tz':{'type':Sequelize[_0x22b1('0x1')],'defaultValue':_0x22b1('0x6')},'attach':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':_0x22b1('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0x22b1('0x1')]},'callback':{'type':Sequelize['STRING']},'review':{'type':Sequelize['ENUM'](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM'](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x22b1('0x7')](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM'](_0x22b1('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0x22b1('0x8'),'no'),'defaultValue':_0x22b1('0x8'),'allowNull':![]},'stamp':{'type':_0x22b1('0x9')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x22b1('0x1')]},'maxsecs':{'type':Sequelize[_0x22b1('0xa')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x22b1('0xb')],'get':function(){return this['getDataValue'](_0x22b1('0xc'))+_0x22b1('0xd')+this['getDataValue'](_0x22b1('0xe'));}}};
\ No newline at end of file
+var _0xb94b=['ENUM','TINYINT(4)','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','setDataValue','string','trim','central','yes'];(function(_0x8c6c55,_0x1584d3){var _0x5480e8=function(_0x55792a){while(--_0x55792a){_0x8c6c55['push'](_0x8c6c55['shift']());}};_0x5480e8(++_0x1584d3);}(_0xb94b,0x118));var _0xbb94=function(_0x399aef,_0x5406eb){_0x399aef=_0x399aef-0x0;var _0x48c639=_0xb94b[_0x399aef];return _0x48c639;};'use strict';var Sequelize=require(_0xbb94('0x0'));module[_0xbb94('0x1')]={'customer_id':{'type':Sequelize[_0xbb94('0x2')]},'context':{'type':Sequelize[_0xbb94('0x2')],'defaultValue':_0xbb94('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0xbb94('0x2')]},'email':{'type':Sequelize[_0xbb94('0x2')],'validate':{'isEmail':!![]},'set':function(_0x4a8a62){this[_0xbb94('0x4')]('email',typeof _0x4a8a62===_0xbb94('0x5')&&_0x4a8a62['trim']()?_0x4a8a62[_0xbb94('0x6')]():null);}},'pager':{'type':Sequelize['STRING']},'tz':{'type':Sequelize['STRING'],'defaultValue':_0xbb94('0x7')},'attach':{'type':Sequelize['ENUM'](_0xbb94('0x8'),'no'),'defaultValue':_0xbb94('0x8'),'allowNull':![]},'saycid':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':_0xbb94('0x8'),'allowNull':![]},'dialout':{'type':Sequelize[_0xbb94('0x2')]},'callback':{'type':Sequelize[_0xbb94('0x2')]},'review':{'type':Sequelize[_0xbb94('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xbb94('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0xbb94('0x9')](_0xbb94('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM'](_0xbb94('0x8'),'no'),'defaultValue':_0xbb94('0x8'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xbb94('0x2')]},'emailbody':{'type':Sequelize[_0xbb94('0x2')]},'maxsecs':{'type':Sequelize[_0xbb94('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xbb94('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xbb94('0xc')],'get':function(){return this[_0xbb94('0xd')](_0xbb94('0xe'))+_0xbb94('0xf')+this['getDataValue'](_0xbb94('0x10'));}}};
\ No newline at end of file
index ef708a6..4e7c84f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97c1=['error','stack','name','VoiceMail','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','findAll','rows','catch','show','params','keys','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','getMessages','pick','mailbox','VoiceMailMessage','findAndCountAll','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','Voicemails','sendStatus'];(function(_0x3fd428,_0xe4fbe8){var _0x112ad4=function(_0x5bc689){while(--_0x5bc689){_0x3fd428['push'](_0x3fd428['shift']());}};_0x112ad4(++_0xe4fbe8);}(_0x97c1,0xdf));var _0x197c=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x97c1[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require(_0x197c('0x0'));var rimraf=require(_0x197c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x197c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x197c('0x3'));var Mustache=require(_0x197c('0x4'));var util=require(_0x197c('0x5'));var path=require(_0x197c('0x6'));var sox=require(_0x197c('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x197c('0x8'));var _=require(_0x197c('0x9'));var squel=require(_0x197c('0xa'));var crypto=require(_0x197c('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x197c('0xc'));var querystring=require('querystring');var Papa=require(_0x197c('0xd'));var Redis=require(_0x197c('0xe'));var authService=require(_0x197c('0xf'));var qs=require(_0x197c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x197c('0x11'));var logger=require(_0x197c('0x12'))(_0x197c('0x13'));var utils=require(_0x197c('0x14'));var config=require(_0x197c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x197c('0x16'))['db'];function respondWithStatusCode(_0x668f8,_0x27e46f){_0x27e46f=_0x27e46f||0xcc;return function(_0x1adcfa){if(_0x1adcfa){return _0x668f8['sendStatus'](_0x27e46f);}return _0x668f8[_0x197c('0x17')](_0x27e46f)[_0x197c('0x18')]();};}function respondWithResult(_0x5a7e1c,_0xf735ce){_0xf735ce=_0xf735ce||0xc8;return function(_0x188ff2){if(_0x188ff2){return _0x5a7e1c[_0x197c('0x17')](_0xf735ce)['json'](_0x188ff2);}};}function respondWithFilteredResult(_0x5194c3,_0x422dfa){return function(_0x2bc612){if(_0x2bc612){var _0x2083d4=typeof _0x422dfa[_0x197c('0x19')]===_0x197c('0x1a')&&typeof _0x422dfa[_0x197c('0x1b')]===_0x197c('0x1a');var _0x75beba=_0x2bc612['count'];var _0x372311=_0x2083d4?0x0:_0x422dfa['offset'];var _0x50ac52=_0x2083d4?_0x2bc612[_0x197c('0x1c')]:_0x422dfa[_0x197c('0x19')]+_0x422dfa[_0x197c('0x1b')];var _0x2ce10d;if(_0x50ac52>=_0x75beba){_0x50ac52=_0x75beba;_0x2ce10d=0xc8;}else{_0x2ce10d=0xce;}_0x5194c3['status'](_0x2ce10d);return _0x5194c3[_0x197c('0x1d')](_0x197c('0x1e'),_0x372311+'-'+_0x50ac52+'/'+_0x75beba)[_0x197c('0x1f')](_0x2bc612);}return null;};}function patchUpdates(_0x5c278a){return function(_0x1adb43){try{jsonpatch[_0x197c('0x20')](_0x1adb43,_0x5c278a,!![]);}catch(_0x3b5c4c){return BPromise[_0x197c('0x21')](_0x3b5c4c);}return _0x1adb43[_0x197c('0x22')]();};}function saveUpdates(_0x3c2151,_0x362bbf){return function(_0x2092a0){if(_0x2092a0){return _0x2092a0[_0x197c('0x23')](_0x3c2151)[_0x197c('0x24')](function(_0x29b266){return _0x29b266;});}return null;};}function removeEntity(_0x177bc9,_0x174942){return function(_0x2a1310){if(_0x2a1310){return _0x2a1310[_0x197c('0x25')]()[_0x197c('0x24')](function(){var _0x5f4a02=_0x2a1310[_0x197c('0x26')]({'plain':!![]});var _0x2911dd=_0x197c('0x27');return db['UserProfileResource'][_0x197c('0x25')]({'where':{'type':_0x2911dd,'resourceId':_0x5f4a02['id']}})[_0x197c('0x24')](function(){return _0x2a1310;});})['then'](function(){_0x177bc9['status'](0xcc)[_0x197c('0x18')]();});}};}function handleEntityNotFound(_0x48f759,_0xfbca7a){return function(_0x14b0aa){if(!_0x14b0aa){_0x48f759[_0x197c('0x28')](0x194);}return _0x14b0aa;};}function handleError(_0x16e026,_0x2f031c){_0x2f031c=_0x2f031c||0x1f4;return function(_0x3cdcd8){logger[_0x197c('0x29')](_0x3cdcd8[_0x197c('0x2a')]);if(_0x3cdcd8[_0x197c('0x2b')]){delete _0x3cdcd8['name'];}_0x16e026['status'](_0x2f031c)['send'](_0x3cdcd8);};}exports['index']=function(_0x5f7425,_0x4c9256){var _0x252cde={},_0x35dbf3={},_0x58bc60={'count':0x0,'rows':[]};var _0x422ac6=_['map'](db[_0x197c('0x2c')][_0x197c('0x2d')],function(_0x2ace33){return{'name':_0x2ace33[_0x197c('0x2e')],'type':_0x2ace33[_0x197c('0x2f')][_0x197c('0x30')]};});_0x35dbf3[_0x197c('0x31')]=_[_0x197c('0x32')](_0x422ac6,_0x197c('0x2b'));_0x35dbf3['query']=_['keys'](_0x5f7425[_0x197c('0x33')]);_0x35dbf3[_0x197c('0x34')]=_[_0x197c('0x35')](_0x35dbf3[_0x197c('0x31')],_0x35dbf3[_0x197c('0x33')]);_0x252cde[_0x197c('0x36')]=_[_0x197c('0x35')](_0x35dbf3['model'],qs['fields'](_0x5f7425[_0x197c('0x33')][_0x197c('0x37')]));_0x252cde['attributes']=_0x252cde['attributes'][_0x197c('0x38')]?_0x252cde[_0x197c('0x36')]:_0x35dbf3[_0x197c('0x31')];if(!_0x5f7425[_0x197c('0x33')][_0x197c('0x39')](_0x197c('0x3a'))){_0x252cde[_0x197c('0x1b')]=qs[_0x197c('0x1b')](_0x5f7425[_0x197c('0x33')]['limit']);_0x252cde[_0x197c('0x19')]=qs[_0x197c('0x19')](_0x5f7425[_0x197c('0x33')][_0x197c('0x19')]);}_0x252cde[_0x197c('0x3b')]=qs[_0x197c('0x3c')](_0x5f7425['query'][_0x197c('0x3c')]);_0x252cde[_0x197c('0x3d')]=qs[_0x197c('0x34')](_['pick'](_0x5f7425[_0x197c('0x33')],_0x35dbf3[_0x197c('0x34')]),_0x422ac6);if(_0x5f7425[_0x197c('0x33')][_0x197c('0x3e')]){_0x252cde[_0x197c('0x3d')]=_[_0x197c('0x3f')](_0x252cde[_0x197c('0x3d')],{'$or':_[_0x197c('0x32')](_0x422ac6,function(_0x323a14){if(_0x323a14[_0x197c('0x2f')]!=='VIRTUAL'){var _0x2705f5={};_0x2705f5[_0x323a14[_0x197c('0x2b')]]={'$like':'%'+_0x5f7425['query']['filter']+'%'};return _0x2705f5;}})});}_0x252cde=_[_0x197c('0x3f')]({},_0x252cde,_0x5f7425[_0x197c('0x40')]);var _0x3517a6={'where':_0x252cde[_0x197c('0x3d')]};return db[_0x197c('0x2c')]['count'](_0x3517a6)[_0x197c('0x24')](function(_0x3efae){_0x58bc60[_0x197c('0x1c')]=_0x3efae;if(_0x5f7425[_0x197c('0x33')][_0x197c('0x41')]){_0x252cde['include']=[{'all':!![]}];}return db[_0x197c('0x2c')][_0x197c('0x42')](_0x252cde);})[_0x197c('0x24')](function(_0x197b27){_0x58bc60[_0x197c('0x43')]=_0x197b27;return _0x58bc60;})['then'](respondWithFilteredResult(_0x4c9256,_0x252cde))[_0x197c('0x44')](handleError(_0x4c9256,null));};exports[_0x197c('0x45')]=function(_0x3b7fc1,_0x35f36d){var _0x3e6d6e={'raw':!![],'where':{'id':_0x3b7fc1[_0x197c('0x46')]['id']}},_0x41eb51={};_0x41eb51[_0x197c('0x31')]=_[_0x197c('0x47')](db[_0x197c('0x2c')][_0x197c('0x2d')]);_0x41eb51['query']=_['keys'](_0x3b7fc1['query']);_0x41eb51['filters']=_[_0x197c('0x35')](_0x41eb51[_0x197c('0x31')],_0x41eb51['query']);_0x3e6d6e[_0x197c('0x36')]=_[_0x197c('0x35')](_0x41eb51['model'],qs[_0x197c('0x37')](_0x3b7fc1[_0x197c('0x33')]['fields']));_0x3e6d6e[_0x197c('0x36')]=_0x3e6d6e[_0x197c('0x36')]['length']?_0x3e6d6e[_0x197c('0x36')]:_0x41eb51[_0x197c('0x31')];if(_0x3b7fc1[_0x197c('0x33')]['includeAll']){_0x3e6d6e[_0x197c('0x48')]=[{'all':!![]}];}_0x3e6d6e=_[_0x197c('0x3f')]({},_0x3e6d6e,_0x3b7fc1[_0x197c('0x40')]);return db[_0x197c('0x2c')]['find'](_0x3e6d6e)[_0x197c('0x24')](handleEntityNotFound(_0x35f36d,null))[_0x197c('0x24')](respondWithResult(_0x35f36d,null))[_0x197c('0x44')](handleError(_0x35f36d,null));};exports['create']=function(_0x5994bf,_0x3a5089){return db[_0x197c('0x2c')][_0x197c('0x49')](_0x5994bf[_0x197c('0x4a')],{})[_0x197c('0x24')](function(_0x28fac4){var _0x4c82d5=_0x5994bf[_0x197c('0x4b')]['get']({'plain':!![]});if(!_0x4c82d5)throw new Error(_0x197c('0x4c'));if(_0x4c82d5[_0x197c('0x4d')]===_0x197c('0x4b')){var _0x9e8c6a=_0x28fac4[_0x197c('0x26')]({'plain':!![]});var _0x2ab21f=_0x197c('0x27');return db[_0x197c('0x4e')]['find']({'where':{'name':_0x2ab21f,'userProfileId':_0x4c82d5[_0x197c('0x4f')]},'raw':!![]})[_0x197c('0x24')](function(_0x43e9b7){if(_0x43e9b7&&_0x43e9b7['autoAssociation']===0x0){return db[_0x197c('0x50')]['create']({'name':_0x9e8c6a[_0x197c('0x2b')],'resourceId':_0x9e8c6a['id'],'type':_0x43e9b7[_0x197c('0x2b')],'sectionId':_0x43e9b7['id']},{})[_0x197c('0x24')](function(){return _0x28fac4;});}else{return _0x28fac4;}})[_0x197c('0x44')](function(_0x1d7cdd){logger[_0x197c('0x29')](_0x197c('0x51'),_0x1d7cdd);throw _0x1d7cdd;});}return _0x28fac4;})[_0x197c('0x24')](respondWithResult(_0x3a5089,0xc9))['catch'](handleError(_0x3a5089,null));};exports[_0x197c('0x23')]=function(_0x3a9261,_0x275294){if(_0x3a9261['body']['id']){delete _0x3a9261[_0x197c('0x4a')]['id'];}return db[_0x197c('0x2c')][_0x197c('0x52')]({'where':{'id':_0x3a9261[_0x197c('0x46')]['id']}})[_0x197c('0x24')](handleEntityNotFound(_0x275294,null))['then'](saveUpdates(_0x3a9261['body'],null))[_0x197c('0x24')](respondWithResult(_0x275294,null))[_0x197c('0x44')](handleError(_0x275294,null));};exports[_0x197c('0x25')]=function(_0x42a13f,_0x15e50f){return db['VoiceMail']['find']({'where':{'id':_0x42a13f[_0x197c('0x46')]['id']}})[_0x197c('0x24')](handleEntityNotFound(_0x15e50f,null))['then'](removeEntity(_0x15e50f,null))[_0x197c('0x44')](handleError(_0x15e50f,null));};exports[_0x197c('0x53')]=function(_0x1a607c,_0x40867c,_0xc10419){return db[_0x197c('0x2c')]['findOne']({'where':{'id':_0x1a607c[_0x197c('0x46')]['id']}})[_0x197c('0x24')](handleEntityNotFound(_0x40867c,null))['then'](function(_0x480cab){var _0x1b71cf;var _0x5a70dd={},_0xfc9461={};_0xfc9461[_0x197c('0x31')]=_[_0x197c('0x47')](db['VoiceMailMessage'][_0x197c('0x2d')]);_0xfc9461[_0x197c('0x33')]=_['keys'](_0x1a607c[_0x197c('0x33')]);_0xfc9461[_0x197c('0x34')]=_[_0x197c('0x35')](_0xfc9461['model'],_0xfc9461[_0x197c('0x33')]);_0x5a70dd[_0x197c('0x36')]=_['intersection'](_0xfc9461['model'],qs[_0x197c('0x37')](_0x1a607c[_0x197c('0x33')][_0x197c('0x37')]));_0x5a70dd['attributes']=_0x5a70dd[_0x197c('0x36')][_0x197c('0x38')]?_0x5a70dd[_0x197c('0x36')]:_0xfc9461['model'];if(!_0x1a607c[_0x197c('0x33')][_0x197c('0x39')](_0x197c('0x3a'))){_0x5a70dd[_0x197c('0x1b')]=qs[_0x197c('0x1b')](_0x1a607c[_0x197c('0x33')][_0x197c('0x1b')]);_0x5a70dd[_0x197c('0x19')]=qs[_0x197c('0x19')](_0x1a607c[_0x197c('0x33')]['offset']);}_0x5a70dd[_0x197c('0x3b')]=qs['sort'](_0x1a607c['query']['sort']);_0x5a70dd['where']=qs[_0x197c('0x34')](_[_0x197c('0x54')](_0x1a607c[_0x197c('0x33')],_0xfc9461[_0x197c('0x34')]));if(_0x1a607c['query'][_0x197c('0x3e')]){_0x5a70dd['where']=_[_0x197c('0x3f')](_0x5a70dd['where'],{'$or':_[_0x197c('0x32')](_0x5a70dd['attributes'],function(_0x12d31a){var _0x1f6c6f={};_0x1f6c6f[_0x12d31a]={'$like':'%'+_0x1a607c[_0x197c('0x33')][_0x197c('0x3e')]+'%'};return _0x1f6c6f;})});}_0x5a70dd['where']=_[_0x197c('0x3f')](_0x5a70dd[_0x197c('0x3d')],{'mailboxuser':_0x480cab[_0x197c('0x55')]});_0x5a70dd=_['merge']({},_0x5a70dd,_0x1a607c[_0x197c('0x40')]);return db[_0x197c('0x56')][_0x197c('0x57')](_0x5a70dd)[_0x197c('0x24')](respondWithFilteredResult(_0x40867c,_0x5a70dd));})[_0x197c('0x44')](handleError(_0x40867c,null));};
\ No newline at end of file
+var _0xf4eb=['fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','Voicemails','UserProfileResource','error','stack','name','send','index','map','VoiceMail','fieldName','key','model','keys','filters','intersection','attributes','fields','query','length','order','sort','pick','where','merge','type','VIRTUAL','filter','options','include','rows','catch','show','rawAttributes','find','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','getMessages','VoiceMailMessage','hasOwnProperty','nolimit','mailbox','eml-format','moment','util','path','sox','to-csv','ejs'];(function(_0x54b749,_0x45913f){var _0x5a1b77=function(_0x462b04){while(--_0x462b04){_0x54b749['push'](_0x54b749['shift']());}};_0x5a1b77(++_0x45913f);}(_0xf4eb,0xec));var _0xbf4e=function(_0x2258d2,_0x416dff){_0x2258d2=_0x2258d2-0x0;var _0x3b409f=_0xf4eb[_0x2258d2];return _0x3b409f;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x17fd01,_0x5a3035){_0x5a3035=_0x5a3035||0xcc;return function(_0x56d185){if(_0x56d185){return _0x17fd01[_0xbf4e('0x13')](_0x5a3035);}return _0x17fd01[_0xbf4e('0x14')](_0x5a3035)[_0xbf4e('0x15')]();};}function respondWithResult(_0x302841,_0x3b74bd){_0x3b74bd=_0x3b74bd||0xc8;return function(_0x61bd54){if(_0x61bd54){return _0x302841['status'](_0x3b74bd)['json'](_0x61bd54);}};}function respondWithFilteredResult(_0x180432,_0x1735ae){return function(_0x28fc6b){if(_0x28fc6b){var _0x542909=typeof _0x1735ae[_0xbf4e('0x16')]===_0xbf4e('0x17')&&typeof _0x1735ae[_0xbf4e('0x18')]===_0xbf4e('0x17');var _0x5a631e=_0x28fc6b[_0xbf4e('0x19')];var _0x577c27=_0x542909?0x0:_0x1735ae['offset'];var _0x566ec3=_0x542909?_0x28fc6b['count']:_0x1735ae[_0xbf4e('0x16')]+_0x1735ae[_0xbf4e('0x18')];var _0x1fc800;if(_0x566ec3>=_0x5a631e){_0x566ec3=_0x5a631e;_0x1fc800=0xc8;}else{_0x1fc800=0xce;}_0x180432['status'](_0x1fc800);return _0x180432['set'](_0xbf4e('0x1a'),_0x577c27+'-'+_0x566ec3+'/'+_0x5a631e)[_0xbf4e('0x1b')](_0x28fc6b);}return null;};}function patchUpdates(_0x3be138){return function(_0x3a875b){try{jsonpatch[_0xbf4e('0x1c')](_0x3a875b,_0x3be138,!![]);}catch(_0x1e2a68){return BPromise[_0xbf4e('0x1d')](_0x1e2a68);}return _0x3a875b[_0xbf4e('0x1e')]();};}function saveUpdates(_0xd09e12,_0x376832){return function(_0x30539b){if(_0x30539b){return _0x30539b['update'](_0xd09e12)[_0xbf4e('0x1f')](function(_0x2e7673){return _0x2e7673;});}return null;};}function removeEntity(_0x51648c,_0x31e3f5){return function(_0x30994d){if(_0x30994d){return _0x30994d[_0xbf4e('0x20')]()[_0xbf4e('0x1f')](function(){var _0x3a5d72=_0x30994d['get']({'plain':!![]});var _0x90635e=_0xbf4e('0x21');return db[_0xbf4e('0x22')]['destroy']({'where':{'type':_0x90635e,'resourceId':_0x3a5d72['id']}})[_0xbf4e('0x1f')](function(){return _0x30994d;});})['then'](function(){_0x51648c['status'](0xcc)[_0xbf4e('0x15')]();});}};}function handleEntityNotFound(_0x5a0a9b,_0x38c923){return function(_0x315df3){if(!_0x315df3){_0x5a0a9b[_0xbf4e('0x13')](0x194);}return _0x315df3;};}function handleError(_0x41f918,_0x5c912f){_0x5c912f=_0x5c912f||0x1f4;return function(_0x2d4686){logger[_0xbf4e('0x23')](_0x2d4686[_0xbf4e('0x24')]);if(_0x2d4686['name']){delete _0x2d4686[_0xbf4e('0x25')];}_0x41f918['status'](_0x5c912f)[_0xbf4e('0x26')](_0x2d4686);};}exports[_0xbf4e('0x27')]=function(_0xb8b58e,_0x498dbd){var _0x1d12e2={},_0x362716={},_0x2f3cf8={'count':0x0,'rows':[]};var _0xc7ca87=_[_0xbf4e('0x28')](db[_0xbf4e('0x29')]['rawAttributes'],function(_0x35c82d){return{'name':_0x35c82d[_0xbf4e('0x2a')],'type':_0x35c82d['type'][_0xbf4e('0x2b')]};});_0x362716[_0xbf4e('0x2c')]=_['map'](_0xc7ca87,_0xbf4e('0x25'));_0x362716['query']=_[_0xbf4e('0x2d')](_0xb8b58e['query']);_0x362716[_0xbf4e('0x2e')]=_[_0xbf4e('0x2f')](_0x362716[_0xbf4e('0x2c')],_0x362716['query']);_0x1d12e2[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x362716[_0xbf4e('0x2c')],qs[_0xbf4e('0x31')](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x1d12e2['attributes']=_0x1d12e2[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x1d12e2[_0xbf4e('0x30')]:_0x362716[_0xbf4e('0x2c')];if(!_0xb8b58e[_0xbf4e('0x32')]['hasOwnProperty']('nolimit')){_0x1d12e2['limit']=qs['limit'](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x18')]);_0x1d12e2[_0xbf4e('0x16')]=qs[_0xbf4e('0x16')](_0xb8b58e[_0xbf4e('0x32')][_0xbf4e('0x16')]);}_0x1d12e2[_0xbf4e('0x34')]=qs[_0xbf4e('0x35')](_0xb8b58e[_0xbf4e('0x32')]['sort']);_0x1d12e2['where']=qs[_0xbf4e('0x2e')](_[_0xbf4e('0x36')](_0xb8b58e[_0xbf4e('0x32')],_0x362716['filters']),_0xc7ca87);if(_0xb8b58e[_0xbf4e('0x32')]['filter']){_0x1d12e2[_0xbf4e('0x37')]=_[_0xbf4e('0x38')](_0x1d12e2[_0xbf4e('0x37')],{'$or':_[_0xbf4e('0x28')](_0xc7ca87,function(_0x5ce339){if(_0x5ce339[_0xbf4e('0x39')]!==_0xbf4e('0x3a')){var _0x3aa308={};_0x3aa308[_0x5ce339[_0xbf4e('0x25')]]={'$like':'%'+_0xb8b58e['query'][_0xbf4e('0x3b')]+'%'};return _0x3aa308;}})});}_0x1d12e2=_[_0xbf4e('0x38')]({},_0x1d12e2,_0xb8b58e[_0xbf4e('0x3c')]);var _0x29fe9d={'where':_0x1d12e2[_0xbf4e('0x37')]};return db[_0xbf4e('0x29')][_0xbf4e('0x19')](_0x29fe9d)['then'](function(_0x176166){_0x2f3cf8[_0xbf4e('0x19')]=_0x176166;if(_0xb8b58e['query']['includeAll']){_0x1d12e2[_0xbf4e('0x3d')]=[{'all':!![]}];}return db[_0xbf4e('0x29')]['findAll'](_0x1d12e2);})['then'](function(_0x2b1bf4){_0x2f3cf8[_0xbf4e('0x3e')]=_0x2b1bf4;return _0x2f3cf8;})[_0xbf4e('0x1f')](respondWithFilteredResult(_0x498dbd,_0x1d12e2))[_0xbf4e('0x3f')](handleError(_0x498dbd,null));};exports[_0xbf4e('0x40')]=function(_0x3ad0a4,_0x5a03c6){var _0x3ecc15={'raw':!![],'where':{'id':_0x3ad0a4['params']['id']}},_0x7bd91={};_0x7bd91['model']=_['keys'](db['VoiceMail'][_0xbf4e('0x41')]);_0x7bd91['query']=_[_0xbf4e('0x2d')](_0x3ad0a4[_0xbf4e('0x32')]);_0x7bd91['filters']=_['intersection'](_0x7bd91[_0xbf4e('0x2c')],_0x7bd91[_0xbf4e('0x32')]);_0x3ecc15[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x7bd91[_0xbf4e('0x2c')],qs['fields'](_0x3ad0a4[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x3ecc15[_0xbf4e('0x30')]=_0x3ecc15[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x3ecc15[_0xbf4e('0x30')]:_0x7bd91[_0xbf4e('0x2c')];if(_0x3ad0a4[_0xbf4e('0x32')]['includeAll']){_0x3ecc15[_0xbf4e('0x3d')]=[{'all':!![]}];}_0x3ecc15=_[_0xbf4e('0x38')]({},_0x3ecc15,_0x3ad0a4[_0xbf4e('0x3c')]);return db[_0xbf4e('0x29')][_0xbf4e('0x42')](_0x3ecc15)[_0xbf4e('0x1f')](handleEntityNotFound(_0x5a03c6,null))[_0xbf4e('0x1f')](respondWithResult(_0x5a03c6,null))[_0xbf4e('0x3f')](handleError(_0x5a03c6,null));};exports[_0xbf4e('0x43')]=function(_0x3447ab,_0x2fdba9){return db[_0xbf4e('0x29')][_0xbf4e('0x43')](_0x3447ab[_0xbf4e('0x44')],{})[_0xbf4e('0x1f')](function(_0x2892ce){var _0x10bc23=_0x3447ab['user'][_0xbf4e('0x45')]({'plain':!![]});if(!_0x10bc23)throw new Error(_0xbf4e('0x46'));if(_0x10bc23[_0xbf4e('0x47')]==='user'){var _0x33ab9a=_0x2892ce['get']({'plain':!![]});var _0x4a050e=_0xbf4e('0x21');return db[_0xbf4e('0x48')]['find']({'where':{'name':_0x4a050e,'userProfileId':_0x10bc23[_0xbf4e('0x49')]},'raw':!![]})[_0xbf4e('0x1f')](function(_0x31d779){if(_0x31d779&&_0x31d779[_0xbf4e('0x4a')]===0x0){return db[_0xbf4e('0x22')][_0xbf4e('0x43')]({'name':_0x33ab9a[_0xbf4e('0x25')],'resourceId':_0x33ab9a['id'],'type':_0x31d779[_0xbf4e('0x25')],'sectionId':_0x31d779['id']},{})[_0xbf4e('0x1f')](function(){return _0x2892ce;});}else{return _0x2892ce;}})[_0xbf4e('0x3f')](function(_0x271ad2){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x271ad2);throw _0x271ad2;});}return _0x2892ce;})[_0xbf4e('0x1f')](respondWithResult(_0x2fdba9,0xc9))[_0xbf4e('0x3f')](handleError(_0x2fdba9,null));};exports[_0xbf4e('0x4b')]=function(_0x586f5d,_0x339ce6){if(_0x586f5d[_0xbf4e('0x44')]['id']){delete _0x586f5d['body']['id'];}return db['VoiceMail'][_0xbf4e('0x42')]({'where':{'id':_0x586f5d['params']['id']}})['then'](handleEntityNotFound(_0x339ce6,null))[_0xbf4e('0x1f')](saveUpdates(_0x586f5d[_0xbf4e('0x44')],null))[_0xbf4e('0x1f')](respondWithResult(_0x339ce6,null))[_0xbf4e('0x3f')](handleError(_0x339ce6,null));};exports[_0xbf4e('0x20')]=function(_0x5ec2d9,_0x242a75){return db['VoiceMail'][_0xbf4e('0x42')]({'where':{'id':_0x5ec2d9['params']['id']}})[_0xbf4e('0x1f')](handleEntityNotFound(_0x242a75,null))['then'](removeEntity(_0x242a75,null))[_0xbf4e('0x3f')](handleError(_0x242a75,null));};exports[_0xbf4e('0x4c')]=function(_0x3e60e7,_0x16592f,_0xfd54c){return db['VoiceMail']['findOne']({'where':{'id':_0x3e60e7['params']['id']}})['then'](handleEntityNotFound(_0x16592f,null))[_0xbf4e('0x1f')](function(_0x453411){var _0x5cfc26;var _0x200096={},_0x23c335={};_0x23c335[_0xbf4e('0x2c')]=_[_0xbf4e('0x2d')](db[_0xbf4e('0x4d')][_0xbf4e('0x41')]);_0x23c335[_0xbf4e('0x32')]=_['keys'](_0x3e60e7[_0xbf4e('0x32')]);_0x23c335[_0xbf4e('0x2e')]=_[_0xbf4e('0x2f')](_0x23c335['model'],_0x23c335['query']);_0x200096[_0xbf4e('0x30')]=_[_0xbf4e('0x2f')](_0x23c335[_0xbf4e('0x2c')],qs['fields'](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x31')]));_0x200096[_0xbf4e('0x30')]=_0x200096[_0xbf4e('0x30')][_0xbf4e('0x33')]?_0x200096[_0xbf4e('0x30')]:_0x23c335[_0xbf4e('0x2c')];if(!_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x4e')](_0xbf4e('0x4f'))){_0x200096[_0xbf4e('0x18')]=qs[_0xbf4e('0x18')](_0x3e60e7['query'][_0xbf4e('0x18')]);_0x200096['offset']=qs[_0xbf4e('0x16')](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x16')]);}_0x200096[_0xbf4e('0x34')]=qs[_0xbf4e('0x35')](_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x35')]);_0x200096[_0xbf4e('0x37')]=qs['filters'](_[_0xbf4e('0x36')](_0x3e60e7[_0xbf4e('0x32')],_0x23c335[_0xbf4e('0x2e')]));if(_0x3e60e7[_0xbf4e('0x32')][_0xbf4e('0x3b')]){_0x200096['where']=_[_0xbf4e('0x38')](_0x200096[_0xbf4e('0x37')],{'$or':_[_0xbf4e('0x28')](_0x200096[_0xbf4e('0x30')],function(_0x12f19f){var _0x2c606b={};_0x2c606b[_0x12f19f]={'$like':'%'+_0x3e60e7['query'][_0xbf4e('0x3b')]+'%'};return _0x2c606b;})});}_0x200096['where']=_[_0xbf4e('0x38')](_0x200096[_0xbf4e('0x37')],{'mailboxuser':_0x453411[_0xbf4e('0x50')]});_0x200096=_[_0xbf4e('0x38')]({},_0x200096,_0x3e60e7['options']);return db[_0xbf4e('0x4d')]['findAndCountAll'](_0x200096)['then'](respondWithFilteredResult(_0x16592f,_0x200096));})[_0xbf4e('0x3f')](handleError(_0x16592f,null));};
\ No newline at end of file
index 54b796a..667adb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87fd=['VoiceMail','voice_voicemail','mailbox','context','util','../../config/logger','api','bluebird','request-promise','rimraf','./voiceMail.attributes','exports'];(function(_0x3a0c4f,_0x5dd1a3){var _0x247049=function(_0x144695){while(--_0x144695){_0x3a0c4f['push'](_0x3a0c4f['shift']());}};_0x247049(++_0x5dd1a3);}(_0x87fd,0x1a8));var _0xd87f=function(_0x259d08,_0x475b1d){_0x259d08=_0x259d08-0x0;var _0x2ddc04=_0x87fd[_0x259d08];return _0x2ddc04;};'use strict';var _=require('lodash');var util=require(_0xd87f('0x0'));var logger=require(_0xd87f('0x1'))(_0xd87f('0x2'));var moment=require('moment');var BPromise=require(_0xd87f('0x3'));var rp=require(_0xd87f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd87f('0x5'));var config=require('../../config/environment');var attributes=require(_0xd87f('0x6'));module[_0xd87f('0x7')]=function(_0x55b8a2,_0x3e564f){return _0x55b8a2['define'](_0xd87f('0x8'),attributes,{'tableName':_0xd87f('0x9'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xd87f('0xa'),_0xd87f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x27eb=['./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox','context','util','../../config/logger','api','moment','request-promise','path','../../config/environment'];(function(_0x47878f,_0x48d3bf){var _0x4b05b8=function(_0x3d6597){while(--_0x3d6597){_0x47878f['push'](_0x47878f['shift']());}};_0x4b05b8(++_0x48d3bf);}(_0x27eb,0x11f));var _0xb27e=function(_0x3b0581,_0x1ce734){_0x3b0581=_0x3b0581-0x0;var _0x208440=_0x27eb[_0x3b0581];return _0x208440;};'use strict';var _=require('lodash');var util=require(_0xb27e('0x0'));var logger=require(_0xb27e('0x1'))(_0xb27e('0x2'));var moment=require(_0xb27e('0x3'));var BPromise=require('bluebird');var rp=require(_0xb27e('0x4'));var fs=require('fs');var path=require(_0xb27e('0x5'));var rimraf=require('rimraf');var config=require(_0xb27e('0x6'));var attributes=require(_0xb27e('0x7'));module[_0xb27e('0x8')]=function(_0x456552,_0x384bda){return _0x456552[_0xb27e('0x9')](_0xb27e('0xa'),attributes,{'tableName':_0xb27e('0xb'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xb27e('0xc'),_0xb27e('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 0a99ac6..c067e70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ff=['request\x20sent','debug','stringify','code','error','VoiceMail,\x20%s,\x20%s','message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x5e0575,_0x34c467){var _0x2168b8=function(_0x4f2bd4){while(--_0x4f2bd4){_0x5e0575['push'](_0x5e0575['shift']());}};_0x2168b8(++_0x34c467);}(_0x25ff,0xdb));var _0xf25f=function(_0x439da9,_0x38ce05){_0x439da9=_0x439da9-0x0;var _0x235d48=_0x25ff[_0x439da9];return _0x235d48;};'use strict';var _=require(_0xf25f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf25f('0x1'));var rs=require(_0xf25f('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf25f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf25f('0x4'))(_0xf25f('0x5'));var config=require(_0xf25f('0x6'));var jayson=require(_0xf25f('0x7'));var client=jayson[_0xf25f('0x8')][_0xf25f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5c387,_0xdda4e1,_0x354e00){return new BPromise(function(_0x46d8a4,_0x43718f){return client['request'](_0x5c387,_0x354e00)[_0xf25f('0xa')](function(_0x19cff5){logger[_0xf25f('0xb')]('VoiceMail,\x20%s,\x20%s',_0xdda4e1,_0xf25f('0xc'));logger[_0xf25f('0xd')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0xdda4e1,_0xf25f('0xc'),JSON[_0xf25f('0xe')](_0x19cff5));if(_0x19cff5['error']){if(_0x19cff5['error'][_0xf25f('0xf')]===0x1f4){logger[_0xf25f('0x10')](_0xf25f('0x11'),_0xdda4e1,_0x19cff5[_0xf25f('0x10')][_0xf25f('0x12')]);return _0x43718f(_0x19cff5[_0xf25f('0x10')][_0xf25f('0x12')]);}logger['error'](_0xf25f('0x11'),_0xdda4e1,_0x19cff5[_0xf25f('0x10')]['message']);return _0x46d8a4(_0x19cff5[_0xf25f('0x10')][_0xf25f('0x12')]);}else{logger[_0xf25f('0xb')]('VoiceMail,\x20%s,\x20%s',_0xdda4e1,_0xf25f('0xc'));_0x46d8a4(_0x19cff5[_0xf25f('0x13')]['message']);}})[_0xf25f('0x14')](function(_0xaf0b1b){logger[_0xf25f('0x10')](_0xf25f('0x11'),_0xdda4e1,_0xaf0b1b);_0x43718f(_0xaf0b1b);});});}
\ No newline at end of file
+var _0x5e2a=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0x5e2a,0x1aa));var _0xa5e2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5e2a[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xa5e2('0x0'));var util=require(_0xa5e2('0x1'));var moment=require(_0xa5e2('0x2'));var BPromise=require(_0xa5e2('0x3'));var rs=require(_0xa5e2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa5e2('0x5'))['db'];var utils=require(_0xa5e2('0x6'));var logger=require(_0xa5e2('0x7'))(_0xa5e2('0x8'));var config=require('../../config/environment');var jayson=require(_0xa5e2('0x9'));var client=jayson[_0xa5e2('0xa')][_0xa5e2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b001a,_0x2ab534,_0x32f717){return new BPromise(function(_0x17be71,_0x299281){return client[_0xa5e2('0xc')](_0x5b001a,_0x32f717)[_0xa5e2('0xd')](function(_0x408259){logger['info'](_0xa5e2('0xe'),_0x2ab534,_0xa5e2('0xf'));logger[_0xa5e2('0x10')](_0xa5e2('0x11'),_0x2ab534,_0xa5e2('0xf'),JSON['stringify'](_0x408259));if(_0x408259['error']){if(_0x408259[_0xa5e2('0x12')][_0xa5e2('0x13')]===0x1f4){logger['error'](_0xa5e2('0xe'),_0x2ab534,_0x408259[_0xa5e2('0x12')][_0xa5e2('0x14')]);return _0x299281(_0x408259[_0xa5e2('0x12')][_0xa5e2('0x14')]);}logger[_0xa5e2('0x12')]('VoiceMail,\x20%s,\x20%s',_0x2ab534,_0x408259['error'][_0xa5e2('0x14')]);return _0x17be71(_0x408259['error']['message']);}else{logger[_0xa5e2('0x15')](_0xa5e2('0xe'),_0x2ab534,_0xa5e2('0xf'));_0x17be71(_0x408259[_0xa5e2('0x16')][_0xa5e2('0x14')]);}})[_0xa5e2('0x17')](function(_0x58b3a9){logger[_0xa5e2('0x12')](_0xa5e2('0xe'),_0x2ab534,_0x58b3a9);_0x299281(_0x58b3a9);});});}
\ No newline at end of file
index 2a1e19a..f45a45c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3304=['/:id','show','download','create','put','update','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x3304,0x128));var _0x4330=function(_0x222ea2,_0x5a715f){_0x222ea2=_0x222ea2-0x0;var _0xc6a3c6=_0x3304[_0x222ea2];return _0xc6a3c6;};'use strict';var multer=require('multer');var util=require(_0x4330('0x0'));var path=require(_0x4330('0x1'));var timeout=require(_0x4330('0x2'));var express=require(_0x4330('0x3'));var router=express['Router']();var fs_extra=require(_0x4330('0x4'));var auth=require(_0x4330('0x5'));var interaction=require(_0x4330('0x6'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router[_0x4330('0x7')]('/',auth[_0x4330('0x8')](),controller[_0x4330('0x9')]);router['get'](_0x4330('0xa'),auth['isAuthenticated'](),controller[_0x4330('0xb')]);router['get']('/:id/download',auth[_0x4330('0x8')](),controller[_0x4330('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0x4330('0xd')]);router[_0x4330('0xe')](_0x4330('0xa'),auth[_0x4330('0x8')](),controller[_0x4330('0xf')]);router['delete'](_0x4330('0xa'),auth[_0x4330('0x8')](),controller[_0x4330('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xb102=['download','post','create','update','delete','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','/:id','/:id/download'];(function(_0x743ad2,_0x4f7bbc){var _0xbbea03=function(_0x140047){while(--_0x140047){_0x743ad2['push'](_0x743ad2['shift']());}};_0xbbea03(++_0x4f7bbc);}(_0xb102,0x1d0));var _0x2b10=function(_0x182e54,_0x239de3){_0x182e54=_0x182e54-0x0;var _0x314e33=_0xb102[_0x182e54];return _0x314e33;};'use strict';var multer=require('multer');var util=require(_0x2b10('0x0'));var path=require('path');var timeout=require(_0x2b10('0x1'));var express=require(_0x2b10('0x2'));var router=express[_0x2b10('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x2b10('0x4'));var interaction=require(_0x2b10('0x5'));var config=require(_0x2b10('0x6'));var controller=require(_0x2b10('0x7'));router[_0x2b10('0x8')]('/',auth[_0x2b10('0x9')](),controller['index']);router[_0x2b10('0x8')](_0x2b10('0xa'),auth[_0x2b10('0x9')](),controller['show']);router[_0x2b10('0x8')](_0x2b10('0xb'),auth[_0x2b10('0x9')](),controller[_0x2b10('0xc')]);router[_0x2b10('0xd')]('/',auth[_0x2b10('0x9')](),controller[_0x2b10('0xe')]);router['put']('/:id',auth[_0x2b10('0x9')](),controller[_0x2b10('0xf')]);router[_0x2b10('0x10')](_0x2b10('0xa'),auth[_0x2b10('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 2f32a3c..b9a639e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7dd=['TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','STRING','BLOB','long'];(function(_0x4c081a,_0x364482){var _0x173615=function(_0x6d5f98){while(--_0x6d5f98){_0x4c081a['push'](_0x4c081a['shift']());}};_0x173615(++_0x364482);}(_0xe7dd,0x1bb));var _0xde7d=function(_0x2ed7eb,_0x4f3eab){_0x2ed7eb=_0x2ed7eb-0x0;var _0x56d195=_0xe7dd[_0x2ed7eb];return _0x56d195;};'use strict';var Sequelize=require(_0xde7d('0x0'));module[_0xde7d('0x1')]={'name':{'type':Sequelize[_0xde7d('0x2')],'get':function(_0x2d2d2f){return this[_0xde7d('0x3')]('id');}},'msgnum':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xde7d('0x5')](_0xde7d('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xde7d('0x4')],'defaultValue':''},'stamp':{'type':_0xde7d('0x7'),'defaultValue':Sequelize[_0xde7d('0x8')](_0xde7d('0x9'))}};
\ No newline at end of file
+var _0x4b79=['STRING','BLOB','TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER'];(function(_0x353abb,_0x194c80){var _0x43c9c5=function(_0x456b74){while(--_0x456b74){_0x353abb['push'](_0x353abb['shift']());}};_0x43c9c5(++_0x194c80);}(_0x4b79,0xc3));var _0x94b7=function(_0x2afd05,_0x588166){_0x2afd05=_0x2afd05-0x0;var _0x33d66a=_0x4b79[_0x2afd05];return _0x33d66a;};'use strict';var Sequelize=require(_0x94b7('0x0'));module[_0x94b7('0x1')]={'name':{'type':Sequelize[_0x94b7('0x2')],'get':function(_0x2ab173){return this[_0x94b7('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x94b7('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize['STRING'],'defaultValue':''},'callerid':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'recording':{'type':Sequelize[_0x94b7('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x94b7('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize['STRING'],'defaultValue':''},'stamp':{'type':_0x94b7('0x7'),'defaultValue':Sequelize[_0x94b7('0x8')](_0x94b7('0x9'))}};
\ No newline at end of file
index 2b1607e..89fddd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac26=['jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceMailMessage','fieldName','type','key','model','differenceBy','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','params','rawAttributes','length','find','create','body','download','recording','msg_id','VoiceMailMessage\x20not\x20found','audio/wav','attachment','.wav\x22','eml-format','rimraf','request-promise','moment','mustache','path','to-csv','ejs','fs-extra','lodash','crypto'];(function(_0x56c777,_0x4dfb40){var _0x5db70e=function(_0x562718){while(--_0x562718){_0x56c777['push'](_0x56c777['shift']());}};_0x5db70e(++_0x4dfb40);}(_0xac26,0x18a));var _0x6ac2=function(_0x254bfb,_0x266c28){_0x254bfb=_0x254bfb-0x0;var _0x1f28c1=_0xac26[_0x254bfb];return _0x1f28c1;};'use strict';var emlformat=require(_0x6ac2('0x0'));var rimraf=require(_0x6ac2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6ac2('0x2'));var moment=require(_0x6ac2('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6ac2('0x4'));var util=require('util');var path=require(_0x6ac2('0x5'));var sox=require('sox');var csv=require(_0x6ac2('0x6'));var ejs=require(_0x6ac2('0x7'));var fs=require('fs');var fs_extra=require(_0x6ac2('0x8'));var _=require(_0x6ac2('0x9'));var squel=require('squel');var crypto=require(_0x6ac2('0xa'));var jsforce=require(_0x6ac2('0xb'));var deskjs=require(_0x6ac2('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6ac2('0xd'));var Redis=require('ioredis');var authService=require(_0x6ac2('0xe'));var qs=require(_0x6ac2('0xf'));var as=require(_0x6ac2('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x6ac2('0x11'));var utils=require(_0x6ac2('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x6ac2('0x13'));var db=require(_0x6ac2('0x14'))['db'];function respondWithStatusCode(_0x23b4b2,_0x9d1550){_0x9d1550=_0x9d1550||0xcc;return function(_0xaceb0){if(_0xaceb0){return _0x23b4b2[_0x6ac2('0x15')](_0x9d1550);}return _0x23b4b2[_0x6ac2('0x16')](_0x9d1550)[_0x6ac2('0x17')]();};}function respondWithResult(_0x48ede1,_0x1c9de1){_0x1c9de1=_0x1c9de1||0xc8;return function(_0x1f0eb9){if(_0x1f0eb9){return _0x48ede1[_0x6ac2('0x16')](_0x1c9de1)[_0x6ac2('0x18')](_0x1f0eb9);}};}function respondWithFilteredResult(_0x357f11,_0x28a50f){return function(_0x2267c3){if(_0x2267c3){var _0x8af0dc=typeof _0x28a50f['offset']===_0x6ac2('0x19')&&typeof _0x28a50f[_0x6ac2('0x1a')]===_0x6ac2('0x19');var _0x252cc9=_0x2267c3[_0x6ac2('0x1b')];var _0xe3566b=_0x8af0dc?0x0:_0x28a50f[_0x6ac2('0x1c')];var _0x346ce2=_0x8af0dc?_0x2267c3[_0x6ac2('0x1b')]:_0x28a50f[_0x6ac2('0x1c')]+_0x28a50f[_0x6ac2('0x1a')];var _0x45df2f;if(_0x346ce2>=_0x252cc9){_0x346ce2=_0x252cc9;_0x45df2f=0xc8;}else{_0x45df2f=0xce;}_0x357f11[_0x6ac2('0x16')](_0x45df2f);return _0x357f11[_0x6ac2('0x1d')]('Content-Range',_0xe3566b+'-'+_0x346ce2+'/'+_0x252cc9)[_0x6ac2('0x18')](_0x2267c3);}return null;};}function patchUpdates(_0x7cc0f8){return function(_0x53fe32){try{jsonpatch[_0x6ac2('0x1e')](_0x53fe32,_0x7cc0f8,!![]);}catch(_0x4e2a3e){return BPromise[_0x6ac2('0x1f')](_0x4e2a3e);}return _0x53fe32[_0x6ac2('0x20')]();};}function saveUpdates(_0xc5ca91,_0x478e5f){return function(_0x7440bd){if(_0x7440bd){return _0x7440bd[_0x6ac2('0x21')](_0xc5ca91)[_0x6ac2('0x22')](function(_0x54b085){return _0x54b085;});}return null;};}function removeEntity(_0x44ee6d,_0x5b1fce){return function(_0x222a66){if(_0x222a66){return _0x222a66[_0x6ac2('0x23')]()['then'](function(){_0x44ee6d[_0x6ac2('0x16')](0xcc)[_0x6ac2('0x17')]();});}};}function handleEntityNotFound(_0x527a06,_0x2099e2){return function(_0x49ed22){if(!_0x49ed22){_0x527a06['sendStatus'](0x194);}return _0x49ed22;};}function handleError(_0x1aa735,_0x5cad76){_0x5cad76=_0x5cad76||0x1f4;return function(_0x1e97cc){logger[_0x6ac2('0x24')](_0x1e97cc[_0x6ac2('0x25')]);if(_0x1e97cc[_0x6ac2('0x26')]){delete _0x1e97cc['name'];}_0x1aa735[_0x6ac2('0x16')](_0x5cad76)[_0x6ac2('0x27')](_0x1e97cc);};}exports[_0x6ac2('0x28')]=function(_0x547fa0,_0x69a13b){var _0x4e07f7={},_0x49691b={},_0x54a3b3={'count':0x0,'rows':[]};var _0x36df8b=_[_0x6ac2('0x29')](db[_0x6ac2('0x2a')]['rawAttributes'],function(_0xf8edb5){return{'name':_0xf8edb5[_0x6ac2('0x2b')],'type':_0xf8edb5[_0x6ac2('0x2c')][_0x6ac2('0x2d')]};});_0x49691b[_0x6ac2('0x2e')]=_[_0x6ac2('0x2f')](_['map'](_0x36df8b,_0x6ac2('0x26')),['name']);_0x49691b['query']=_[_0x6ac2('0x30')](_0x547fa0['query']);_0x49691b[_0x6ac2('0x31')]=_[_0x6ac2('0x32')](_0x49691b[_0x6ac2('0x2e')],_0x49691b[_0x6ac2('0x33')]);_0x4e07f7[_0x6ac2('0x34')]=_[_0x6ac2('0x32')](_0x49691b[_0x6ac2('0x2e')],qs[_0x6ac2('0x35')](_0x547fa0[_0x6ac2('0x33')]['fields']));_0x4e07f7['attributes']=_0x4e07f7[_0x6ac2('0x34')]['length']?_0x4e07f7[_0x6ac2('0x34')]:_0x49691b[_0x6ac2('0x2e')];if(!_0x547fa0[_0x6ac2('0x33')][_0x6ac2('0x36')](_0x6ac2('0x37'))){_0x4e07f7[_0x6ac2('0x1a')]=qs[_0x6ac2('0x1a')](_0x547fa0['query'][_0x6ac2('0x1a')]);_0x4e07f7[_0x6ac2('0x1c')]=qs[_0x6ac2('0x1c')](_0x547fa0[_0x6ac2('0x33')]['offset']);}_0x4e07f7[_0x6ac2('0x38')]=qs['sort'](_0x547fa0[_0x6ac2('0x33')][_0x6ac2('0x39')]);_0x4e07f7['where']=qs[_0x6ac2('0x31')](_[_0x6ac2('0x3a')](_0x547fa0[_0x6ac2('0x33')],_0x49691b[_0x6ac2('0x31')]),_0x36df8b);if(_0x547fa0[_0x6ac2('0x33')]['filter']){_0x4e07f7[_0x6ac2('0x3b')]=_[_0x6ac2('0x3c')](_0x4e07f7[_0x6ac2('0x3b')],{'$or':_['map'](_0x36df8b,function(_0x5ebdf8){if(_0x5ebdf8[_0x6ac2('0x2c')]!==_0x6ac2('0x3d')){var _0x4ea8f0={};_0x4ea8f0[_0x5ebdf8[_0x6ac2('0x26')]]={'$like':'%'+_0x547fa0[_0x6ac2('0x33')][_0x6ac2('0x3e')]+'%'};return _0x4ea8f0;}})});}_0x4e07f7=_[_0x6ac2('0x3c')]({},_0x4e07f7,_0x547fa0[_0x6ac2('0x3f')]);var _0x269694={'where':_0x4e07f7[_0x6ac2('0x3b')]};return db[_0x6ac2('0x2a')]['count'](_0x269694)[_0x6ac2('0x22')](function(_0x529608){_0x54a3b3['count']=_0x529608;if(_0x547fa0[_0x6ac2('0x33')][_0x6ac2('0x40')]){_0x4e07f7[_0x6ac2('0x41')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x4e07f7);})[_0x6ac2('0x22')](function(_0x43fd57){_0x54a3b3[_0x6ac2('0x42')]=_0x43fd57;return _0x54a3b3;})[_0x6ac2('0x22')](respondWithFilteredResult(_0x69a13b,_0x4e07f7))[_0x6ac2('0x43')](handleError(_0x69a13b,null));};exports['show']=function(_0x182d57,_0xae4c10){var _0x257794={'raw':!![],'where':{'id':_0x182d57[_0x6ac2('0x44')]['id']}},_0x1b8f56={};_0x1b8f56['model']=_['keys'](db[_0x6ac2('0x2a')][_0x6ac2('0x45')]);_0x1b8f56[_0x6ac2('0x33')]=_['keys'](_0x182d57['query']);_0x1b8f56[_0x6ac2('0x31')]=_[_0x6ac2('0x32')](_0x1b8f56[_0x6ac2('0x2e')],_0x1b8f56[_0x6ac2('0x33')]);_0x257794['attributes']=_[_0x6ac2('0x32')](_0x1b8f56['model'],qs[_0x6ac2('0x35')](_0x182d57[_0x6ac2('0x33')]['fields']));_0x257794['attributes']=_0x257794[_0x6ac2('0x34')][_0x6ac2('0x46')]?_0x257794[_0x6ac2('0x34')]:_0x1b8f56[_0x6ac2('0x2e')];if(_0x182d57[_0x6ac2('0x33')][_0x6ac2('0x40')]){_0x257794[_0x6ac2('0x41')]=[{'all':!![]}];}_0x257794=_[_0x6ac2('0x3c')]({},_0x257794,_0x182d57[_0x6ac2('0x3f')]);return db[_0x6ac2('0x2a')][_0x6ac2('0x47')](_0x257794)[_0x6ac2('0x22')](handleEntityNotFound(_0xae4c10,null))[_0x6ac2('0x22')](respondWithResult(_0xae4c10,null))[_0x6ac2('0x43')](handleError(_0xae4c10,null));};exports[_0x6ac2('0x48')]=function(_0x164a0e,_0xb93807){return db[_0x6ac2('0x2a')]['create'](_0x164a0e[_0x6ac2('0x49')],{})[_0x6ac2('0x22')](respondWithResult(_0xb93807,0xc9))[_0x6ac2('0x43')](handleError(_0xb93807,null));};exports[_0x6ac2('0x21')]=function(_0x48cc17,_0xfa32e5){if(_0x48cc17[_0x6ac2('0x49')]['id']){delete _0x48cc17[_0x6ac2('0x49')]['id'];}return db['VoiceMailMessage'][_0x6ac2('0x47')]({'where':{'id':_0x48cc17[_0x6ac2('0x44')]['id']}})[_0x6ac2('0x22')](handleEntityNotFound(_0xfa32e5,null))[_0x6ac2('0x22')](saveUpdates(_0x48cc17[_0x6ac2('0x49')],null))[_0x6ac2('0x22')](respondWithResult(_0xfa32e5,null))[_0x6ac2('0x43')](handleError(_0xfa32e5,null));};exports[_0x6ac2('0x23')]=function(_0x5e4812,_0x3cca12){return db[_0x6ac2('0x2a')][_0x6ac2('0x47')]({'where':{'id':_0x5e4812[_0x6ac2('0x44')]['id']}})[_0x6ac2('0x22')](handleEntityNotFound(_0x3cca12,null))['then'](removeEntity(_0x3cca12,null))[_0x6ac2('0x43')](handleError(_0x3cca12,null));};exports[_0x6ac2('0x4a')]=function(_0x16f2b9,_0x51ef15,_0x32b0f3){return db[_0x6ac2('0x2a')][_0x6ac2('0x47')]({'where':{'id':_0x16f2b9['params']['id']},'attributes':['id',_0x6ac2('0x4b'),_0x6ac2('0x4c')]})[_0x6ac2('0x22')](handleEntityNotFound(_0x51ef15,null))[_0x6ac2('0x22')](function(_0x11f21f){if(_0x11f21f){if(!_0x11f21f[_0x6ac2('0x4b')]){throw new db['Sequelize']['ValidationError'](_0x6ac2('0x4d'));}var _0x347d07={'Content-Type':_0x6ac2('0x4e'),'Content-Disposition':_0x6ac2('0x4f')};if(_0x11f21f[_0x6ac2('0x4c')]){_0x347d07['Content-Disposition']='attachment;\x20filename=\x22'+_0x11f21f[_0x6ac2('0x4c')]+_0x6ac2('0x50');}_0x51ef15[_0x6ac2('0x1d')](_0x347d07);return _0x51ef15[_0x6ac2('0x27')](new Buffer(_0x11f21f[_0x6ac2('0x4b')]));}})['catch'](handleError(_0x51ef15,null));};
\ No newline at end of file
+var _0x4f17=['type','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','keys','options','create','body','find','download','recording','msg_id','Sequelize','VoiceMailMessage\x20not\x20found','audio/wav','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','status','json','offset','undefined','limit','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','VoiceMailMessage','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x52c581,_0x504d3b){var _0x16ca58=function(_0x58631e){while(--_0x58631e){_0x52c581['push'](_0x52c581['shift']());}};_0x16ca58(++_0x504d3b);}(_0x4f17,0x6d));var _0x74f1=function(_0x545a3a,_0x3123aa){_0x545a3a=_0x545a3a-0x0;var _0x5a5493=_0x4f17[_0x545a3a];return _0x5a5493;};'use strict';var emlformat=require(_0x74f1('0x0'));var rimraf=require(_0x74f1('0x1'));var zipdir=require(_0x74f1('0x2'));var jsonpatch=require(_0x74f1('0x3'));var rp=require(_0x74f1('0x4'));var moment=require('moment');var BPromise=require(_0x74f1('0x5'));var Mustache=require(_0x74f1('0x6'));var util=require(_0x74f1('0x7'));var path=require('path');var sox=require(_0x74f1('0x8'));var csv=require(_0x74f1('0x9'));var ejs=require(_0x74f1('0xa'));var fs=require('fs');var fs_extra=require(_0x74f1('0xb'));var _=require('lodash');var squel=require(_0x74f1('0xc'));var crypto=require(_0x74f1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x74f1('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x74f1('0xf'));var Redis=require(_0x74f1('0x10'));var authService=require(_0x74f1('0x11'));var qs=require(_0x74f1('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x74f1('0x13'));var logger=require(_0x74f1('0x14'))(_0x74f1('0x15'));var utils=require(_0x74f1('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x141d97,_0x9ec7eb){_0x9ec7eb=_0x9ec7eb||0xcc;return function(_0x268209){if(_0x268209){return _0x141d97['sendStatus'](_0x9ec7eb);}return _0x141d97[_0x74f1('0x17')](_0x9ec7eb)['end']();};}function respondWithResult(_0x427f94,_0x1980ae){_0x1980ae=_0x1980ae||0xc8;return function(_0x40ad40){if(_0x40ad40){return _0x427f94[_0x74f1('0x17')](_0x1980ae)[_0x74f1('0x18')](_0x40ad40);}};}function respondWithFilteredResult(_0x2cd541,_0x2629f9){return function(_0xdb255c){if(_0xdb255c){var _0x268b36=typeof _0x2629f9[_0x74f1('0x19')]===_0x74f1('0x1a')&&typeof _0x2629f9[_0x74f1('0x1b')]===_0x74f1('0x1a');var _0x222949=_0xdb255c['count'];var _0x36079c=_0x268b36?0x0:_0x2629f9[_0x74f1('0x19')];var _0x4f0169=_0x268b36?_0xdb255c['count']:_0x2629f9[_0x74f1('0x19')]+_0x2629f9[_0x74f1('0x1b')];var _0x5111d0;if(_0x4f0169>=_0x222949){_0x4f0169=_0x222949;_0x5111d0=0xc8;}else{_0x5111d0=0xce;}_0x2cd541[_0x74f1('0x17')](_0x5111d0);return _0x2cd541['set']('Content-Range',_0x36079c+'-'+_0x4f0169+'/'+_0x222949)['json'](_0xdb255c);}return null;};}function patchUpdates(_0x41afae){return function(_0x1ebf58){try{jsonpatch[_0x74f1('0x1c')](_0x1ebf58,_0x41afae,!![]);}catch(_0x530fc4){return BPromise[_0x74f1('0x1d')](_0x530fc4);}return _0x1ebf58[_0x74f1('0x1e')]();};}function saveUpdates(_0x3a1532,_0x57aa1f){return function(_0x184221){if(_0x184221){return _0x184221[_0x74f1('0x1f')](_0x3a1532)['then'](function(_0x2490cb){return _0x2490cb;});}return null;};}function removeEntity(_0x2e2310,_0x4ce2ee){return function(_0x1d476a){if(_0x1d476a){return _0x1d476a[_0x74f1('0x20')]()[_0x74f1('0x21')](function(){_0x2e2310[_0x74f1('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49203f,_0x42cbc7){return function(_0x5dee2b){if(!_0x5dee2b){_0x49203f[_0x74f1('0x22')](0x194);}return _0x5dee2b;};}function handleError(_0x259c61,_0x588380){_0x588380=_0x588380||0x1f4;return function(_0x2f686d){logger[_0x74f1('0x23')](_0x2f686d[_0x74f1('0x24')]);if(_0x2f686d[_0x74f1('0x25')]){delete _0x2f686d[_0x74f1('0x25')];}_0x259c61[_0x74f1('0x17')](_0x588380)[_0x74f1('0x26')](_0x2f686d);};}exports[_0x74f1('0x27')]=function(_0x18ab23,_0x792546){var _0x431c15={},_0x3b0065={},_0xf0a8ce={'count':0x0,'rows':[]};var _0x2574fd=_[_0x74f1('0x28')](db[_0x74f1('0x29')]['rawAttributes'],function(_0x18ca4e){return{'name':_0x18ca4e[_0x74f1('0x2a')],'type':_0x18ca4e['type'][_0x74f1('0x2b')]};});_0x3b0065[_0x74f1('0x2c')]=_['differenceBy'](_['map'](_0x2574fd,_0x74f1('0x25')),[_0x74f1('0x25')]);_0x3b0065[_0x74f1('0x2d')]=_['keys'](_0x18ab23[_0x74f1('0x2d')]);_0x3b0065[_0x74f1('0x2e')]=_[_0x74f1('0x2f')](_0x3b0065['model'],_0x3b0065['query']);_0x431c15['attributes']=_[_0x74f1('0x2f')](_0x3b0065[_0x74f1('0x2c')],qs[_0x74f1('0x30')](_0x18ab23[_0x74f1('0x2d')][_0x74f1('0x30')]));_0x431c15['attributes']=_0x431c15[_0x74f1('0x31')][_0x74f1('0x32')]?_0x431c15[_0x74f1('0x31')]:_0x3b0065[_0x74f1('0x2c')];if(!_0x18ab23['query'][_0x74f1('0x33')](_0x74f1('0x34'))){_0x431c15[_0x74f1('0x1b')]=qs[_0x74f1('0x1b')](_0x18ab23[_0x74f1('0x2d')][_0x74f1('0x1b')]);_0x431c15[_0x74f1('0x19')]=qs['offset'](_0x18ab23['query'][_0x74f1('0x19')]);}_0x431c15[_0x74f1('0x35')]=qs[_0x74f1('0x36')](_0x18ab23[_0x74f1('0x2d')]['sort']);_0x431c15[_0x74f1('0x37')]=qs[_0x74f1('0x2e')](_[_0x74f1('0x38')](_0x18ab23[_0x74f1('0x2d')],_0x3b0065['filters']),_0x2574fd);if(_0x18ab23[_0x74f1('0x2d')][_0x74f1('0x39')]){_0x431c15[_0x74f1('0x37')]=_[_0x74f1('0x3a')](_0x431c15['where'],{'$or':_['map'](_0x2574fd,function(_0x539dff){if(_0x539dff[_0x74f1('0x3b')]!==_0x74f1('0x3c')){var _0x1d5035={};_0x1d5035[_0x539dff[_0x74f1('0x25')]]={'$like':'%'+_0x18ab23[_0x74f1('0x2d')]['filter']+'%'};return _0x1d5035;}})});}_0x431c15=_['merge']({},_0x431c15,_0x18ab23['options']);var _0x46dcab={'where':_0x431c15[_0x74f1('0x37')]};return db['VoiceMailMessage'][_0x74f1('0x3d')](_0x46dcab)['then'](function(_0xd65bd6){_0xf0a8ce[_0x74f1('0x3d')]=_0xd65bd6;if(_0x18ab23['query'][_0x74f1('0x3e')]){_0x431c15[_0x74f1('0x3f')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0x74f1('0x40')](_0x431c15);})[_0x74f1('0x21')](function(_0x47086e){_0xf0a8ce[_0x74f1('0x41')]=_0x47086e;return _0xf0a8ce;})[_0x74f1('0x21')](respondWithFilteredResult(_0x792546,_0x431c15))[_0x74f1('0x42')](handleError(_0x792546,null));};exports[_0x74f1('0x43')]=function(_0x148658,_0x38896f){var _0x5598f8={'raw':!![],'where':{'id':_0x148658[_0x74f1('0x44')]['id']}},_0xac5f7f={};_0xac5f7f[_0x74f1('0x2c')]=_[_0x74f1('0x45')](db[_0x74f1('0x29')]['rawAttributes']);_0xac5f7f[_0x74f1('0x2d')]=_[_0x74f1('0x45')](_0x148658[_0x74f1('0x2d')]);_0xac5f7f['filters']=_[_0x74f1('0x2f')](_0xac5f7f[_0x74f1('0x2c')],_0xac5f7f['query']);_0x5598f8[_0x74f1('0x31')]=_[_0x74f1('0x2f')](_0xac5f7f['model'],qs[_0x74f1('0x30')](_0x148658['query'][_0x74f1('0x30')]));_0x5598f8[_0x74f1('0x31')]=_0x5598f8[_0x74f1('0x31')][_0x74f1('0x32')]?_0x5598f8['attributes']:_0xac5f7f['model'];if(_0x148658[_0x74f1('0x2d')][_0x74f1('0x3e')]){_0x5598f8[_0x74f1('0x3f')]=[{'all':!![]}];}_0x5598f8=_[_0x74f1('0x3a')]({},_0x5598f8,_0x148658[_0x74f1('0x46')]);return db[_0x74f1('0x29')]['find'](_0x5598f8)[_0x74f1('0x21')](handleEntityNotFound(_0x38896f,null))[_0x74f1('0x21')](respondWithResult(_0x38896f,null))[_0x74f1('0x42')](handleError(_0x38896f,null));};exports['create']=function(_0x4c4c7d,_0x2548c8){return db[_0x74f1('0x29')][_0x74f1('0x47')](_0x4c4c7d[_0x74f1('0x48')],{})['then'](respondWithResult(_0x2548c8,0xc9))[_0x74f1('0x42')](handleError(_0x2548c8,null));};exports[_0x74f1('0x1f')]=function(_0xf43d17,_0x38117f){if(_0xf43d17[_0x74f1('0x48')]['id']){delete _0xf43d17[_0x74f1('0x48')]['id'];}return db[_0x74f1('0x29')][_0x74f1('0x49')]({'where':{'id':_0xf43d17['params']['id']}})[_0x74f1('0x21')](handleEntityNotFound(_0x38117f,null))[_0x74f1('0x21')](saveUpdates(_0xf43d17[_0x74f1('0x48')],null))['then'](respondWithResult(_0x38117f,null))[_0x74f1('0x42')](handleError(_0x38117f,null));};exports[_0x74f1('0x20')]=function(_0x68c020,_0x212956){return db[_0x74f1('0x29')][_0x74f1('0x49')]({'where':{'id':_0x68c020[_0x74f1('0x44')]['id']}})['then'](handleEntityNotFound(_0x212956,null))[_0x74f1('0x21')](removeEntity(_0x212956,null))[_0x74f1('0x42')](handleError(_0x212956,null));};exports[_0x74f1('0x4a')]=function(_0x5b7b90,_0x2234cc,_0x255ce5){return db['VoiceMailMessage'][_0x74f1('0x49')]({'where':{'id':_0x5b7b90[_0x74f1('0x44')]['id']},'attributes':['id',_0x74f1('0x4b'),_0x74f1('0x4c')]})['then'](handleEntityNotFound(_0x2234cc,null))[_0x74f1('0x21')](function(_0x4000f0){if(_0x4000f0){if(!_0x4000f0['recording']){throw new db[(_0x74f1('0x4d'))]['ValidationError'](_0x74f1('0x4e'));}var _0x158cef={'Content-Type':_0x74f1('0x4f'),'Content-Disposition':'attachment'};if(_0x4000f0[_0x74f1('0x4c')]){_0x158cef[_0x74f1('0x50')]=_0x74f1('0x51')+_0x4000f0['msg_id']+_0x74f1('0x52');}_0x2234cc[_0x74f1('0x53')](_0x158cef);return _0x2234cc[_0x74f1('0x26')](new Buffer(_0x4000f0['recording']));}})[_0x74f1('0x42')](handleError(_0x2234cc,null));};
\ No newline at end of file
index fc07cc0..7b0d549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcada=['request-promise','path','rimraf','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xcada,0x1da));var _0xacad=function(_0x37ac94,_0x3dd629){_0x37ac94=_0x37ac94-0x0;var _0x2f1557=_0xcada[_0x37ac94];return _0x2f1557;};'use strict';var _=require(_0xacad('0x0'));var util=require(_0xacad('0x1'));var logger=require(_0xacad('0x2'))(_0xacad('0x3'));var moment=require(_0xacad('0x4'));var BPromise=require(_0xacad('0x5'));var rp=require(_0xacad('0x6'));var fs=require('fs');var path=require(_0xacad('0x7'));var rimraf=require(_0xacad('0x8'));var config=require(_0xacad('0x9'));var attributes=require(_0xacad('0xa'));module[_0xacad('0xb')]=function(_0xe78cd0,_0x39d848){return _0xe78cd0[_0xacad('0xc')](_0xacad('0xd'),attributes,{'tableName':_0xacad('0xe'),'paranoid':![],'indexes':[{'name':_0xacad('0xf'),'fields':[_0xacad('0xf')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x6d58=['dir','lodash','../../config/logger','api','moment','request-promise','path','../../config/environment','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages'];(function(_0x1d5576,_0x4b39b0){var _0x4f7fa9=function(_0x28716e){while(--_0x28716e){_0x1d5576['push'](_0x1d5576['shift']());}};_0x4f7fa9(++_0x4b39b0);}(_0x6d58,0xeb));var _0x86d5=function(_0x225803,_0xa3d7b8){_0x225803=_0x225803-0x0;var _0x36619c=_0x6d58[_0x225803];return _0x36619c;};'use strict';var _=require(_0x86d5('0x0'));var util=require('util');var logger=require(_0x86d5('0x1'))(_0x86d5('0x2'));var moment=require(_0x86d5('0x3'));var BPromise=require('bluebird');var rp=require(_0x86d5('0x4'));var fs=require('fs');var path=require(_0x86d5('0x5'));var rimraf=require('rimraf');var config=require(_0x86d5('0x6'));var attributes=require(_0x86d5('0x7'));module[_0x86d5('0x8')]=function(_0x13996d,_0x1b32b7){return _0x13996d[_0x86d5('0x9')](_0x86d5('0xa'),attributes,{'tableName':_0x86d5('0xb'),'paranoid':![],'indexes':[{'name':_0x86d5('0xc'),'fields':[_0x86d5('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index bc0b014..4c8cb79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bd2=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x1fd99c,_0x40edb2){var _0xa0af73=function(_0x309c94){while(--_0x309c94){_0x1fd99c['push'](_0x1fd99c['shift']());}};_0xa0af73(++_0x40edb2);}(_0x1bd2,0xb3));var _0x21bd=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x1bd2[_0xa148b7];return _0x51efd3;};'use strict';var _=require('lodash');var util=require(_0x21bd('0x0'));var moment=require(_0x21bd('0x1'));var BPromise=require(_0x21bd('0x2'));var rs=require(_0x21bd('0x3'));var fs=require('fs');var Redis=require(_0x21bd('0x4'));var db=require(_0x21bd('0x5'))['db'];var utils=require(_0x21bd('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x21bd('0x7'));var jayson=require(_0x21bd('0x8'));var client=jayson['client'][_0x21bd('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x44f437,_0x29a054,_0x15ec41){return new BPromise(function(_0x485250,_0xb01539){return client[_0x21bd('0xa')](_0x44f437,_0x15ec41)[_0x21bd('0xb')](function(_0x4a9fa2){logger[_0x21bd('0xc')](_0x21bd('0xd'),_0x29a054,_0x21bd('0xe'));logger['debug'](_0x21bd('0xf'),_0x29a054,_0x21bd('0xe'),JSON[_0x21bd('0x10')](_0x4a9fa2));if(_0x4a9fa2[_0x21bd('0x11')]){if(_0x4a9fa2[_0x21bd('0x11')][_0x21bd('0x12')]===0x1f4){logger['error']('VoiceMailMessage,\x20%s,\x20%s',_0x29a054,_0x4a9fa2[_0x21bd('0x11')]['message']);return _0xb01539(_0x4a9fa2[_0x21bd('0x11')]['message']);}logger[_0x21bd('0x11')]('VoiceMailMessage,\x20%s,\x20%s',_0x29a054,_0x4a9fa2[_0x21bd('0x11')][_0x21bd('0x13')]);return _0x485250(_0x4a9fa2['error'][_0x21bd('0x13')]);}else{logger[_0x21bd('0xc')](_0x21bd('0xd'),_0x29a054,_0x21bd('0xe'));_0x485250(_0x4a9fa2[_0x21bd('0x14')][_0x21bd('0x13')]);}})[_0x21bd('0x15')](function(_0x6138ea){logger['error'](_0x21bd('0xd'),_0x29a054,_0x6138ea);_0xb01539(_0x6138ea);});});}
\ No newline at end of file
+var _0xd0ed=['code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x110274,_0x330176){var _0x565276=function(_0x11a6b8){while(--_0x11a6b8){_0x110274['push'](_0x110274['shift']());}};_0x565276(++_0x330176);}(_0xd0ed,0x1e7));var _0xdd0e=function(_0x5123b8,_0x29dfdc){_0x5123b8=_0x5123b8-0x0;var _0x3da0d5=_0xd0ed[_0x5123b8];return _0x3da0d5;};'use strict';var _=require(_0xdd0e('0x0'));var util=require(_0xdd0e('0x1'));var moment=require(_0xdd0e('0x2'));var BPromise=require(_0xdd0e('0x3'));var rs=require(_0xdd0e('0x4'));var fs=require('fs');var Redis=require(_0xdd0e('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xdd0e('0x6'))(_0xdd0e('0x7'));var config=require(_0xdd0e('0x8'));var jayson=require(_0xdd0e('0x9'));var client=jayson[_0xdd0e('0xa')][_0xdd0e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x6f4a30,_0x1bcf03,_0x229ea4){return new BPromise(function(_0x503b61,_0x40f4c5){return client[_0xdd0e('0xc')](_0x6f4a30,_0x229ea4)['then'](function(_0x359858){logger[_0xdd0e('0xd')](_0xdd0e('0xe'),_0x1bcf03,_0xdd0e('0xf'));logger[_0xdd0e('0x10')]('VoiceMailMessage,\x20%s,\x20%s,\x20%s',_0x1bcf03,_0xdd0e('0xf'),JSON[_0xdd0e('0x11')](_0x359858));if(_0x359858[_0xdd0e('0x12')]){if(_0x359858[_0xdd0e('0x12')][_0xdd0e('0x13')]===0x1f4){logger[_0xdd0e('0x12')](_0xdd0e('0xe'),_0x1bcf03,_0x359858[_0xdd0e('0x12')]['message']);return _0x40f4c5(_0x359858[_0xdd0e('0x12')][_0xdd0e('0x14')]);}logger[_0xdd0e('0x12')](_0xdd0e('0xe'),_0x1bcf03,_0x359858[_0xdd0e('0x12')][_0xdd0e('0x14')]);return _0x503b61(_0x359858[_0xdd0e('0x12')][_0xdd0e('0x14')]);}else{logger[_0xdd0e('0xd')](_0xdd0e('0xe'),_0x1bcf03,'request\x20sent');_0x503b61(_0x359858[_0xdd0e('0x15')]['message']);}})['catch'](function(_0x1a6477){logger[_0xdd0e('0x12')](_0xdd0e('0xe'),_0x1bcf03,_0x1a6477);_0x40f4c5(_0x1a6477);});});}
\ No newline at end of file
index da4c3da..d98c8bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb853=['../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id/sounds','post','create','addSound','put','update','/:id','destroy','delete','/:id/sounds/:id2','removeSound','multer','util','path','connect-timeout','express','Router'];(function(_0x1b349a,_0x22222c){var _0x5d1f7c=function(_0x368d7c){while(--_0x368d7c){_0x1b349a['push'](_0x1b349a['shift']());}};_0x5d1f7c(++_0x22222c);}(_0xb853,0x8d));var _0x3b85=function(_0x2727f7,_0x224e26){_0x2727f7=_0x2727f7-0x0;var _0x58c95e=_0xb853[_0x2727f7];return _0x58c95e;};'use strict';var multer=require(_0x3b85('0x0'));var util=require(_0x3b85('0x1'));var path=require(_0x3b85('0x2'));var timeout=require(_0x3b85('0x3'));var express=require(_0x3b85('0x4'));var router=express[_0x3b85('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3b85('0x6'));var config=require(_0x3b85('0x7'));var controller=require('./voiceMusicOnHold.controller');router[_0x3b85('0x8')]('/',auth[_0x3b85('0x9')](),controller['index']);router['get']('/:id',auth[_0x3b85('0x9')](),controller['show']);router['get'](_0x3b85('0xa'),auth['isAuthenticated'](),controller['getSounds']);router[_0x3b85('0xb')]('/',auth[_0x3b85('0x9')](),controller[_0x3b85('0xc')]);router[_0x3b85('0xb')](_0x3b85('0xa'),auth[_0x3b85('0x9')](),controller[_0x3b85('0xd')]);router[_0x3b85('0xe')]('/:id',auth[_0x3b85('0x9')](),controller[_0x3b85('0xf')]);router['delete'](_0x3b85('0x10'),auth[_0x3b85('0x9')](),controller[_0x3b85('0x11')]);router[_0x3b85('0x12')](_0x3b85('0x13'),auth[_0x3b85('0x9')](),controller[_0x3b85('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x5618=['post','create','addSound','put','update','delete','destroy','/:id/sounds/:id2','removeSound','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','/:id/sounds','getSounds'];(function(_0x195c21,_0x332612){var _0x3576a8=function(_0xa4bde2){while(--_0xa4bde2){_0x195c21['push'](_0x195c21['shift']());}};_0x3576a8(++_0x332612);}(_0x5618,0x6a));var _0x8561=function(_0x4267ab,_0x4e32e3){_0x4267ab=_0x4267ab-0x0;var _0x5f45c7=_0x5618[_0x4267ab];return _0x5f45c7;};'use strict';var multer=require('multer');var util=require(_0x8561('0x0'));var path=require(_0x8561('0x1'));var timeout=require(_0x8561('0x2'));var express=require(_0x8561('0x3'));var router=express['Router']();var fs_extra=require(_0x8561('0x4'));var auth=require(_0x8561('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8561('0x6'));var controller=require(_0x8561('0x7'));router[_0x8561('0x8')]('/',auth[_0x8561('0x9')](),controller[_0x8561('0xa')]);router[_0x8561('0x8')](_0x8561('0xb'),auth[_0x8561('0x9')](),controller['show']);router[_0x8561('0x8')](_0x8561('0xc'),auth[_0x8561('0x9')](),controller[_0x8561('0xd')]);router[_0x8561('0xe')]('/',auth[_0x8561('0x9')](),controller[_0x8561('0xf')]);router['post']('/:id/sounds',auth[_0x8561('0x9')](),controller[_0x8561('0x10')]);router[_0x8561('0x11')](_0x8561('0xb'),auth[_0x8561('0x9')](),controller[_0x8561('0x12')]);router[_0x8561('0x13')]('/:id',auth[_0x8561('0x9')](),controller[_0x8561('0x14')]);router['delete'](_0x8561('0x15'),auth[_0x8561('0x9')](),controller[_0x8561('0x16')]);module[_0x8561('0x17')]=router;
\ No newline at end of file
index 649d09a..4055d2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f25=['sequelize','exports','name','ENUM','files','mp3nb','quietmp3nb','quietmp3','STRING','BOOLEAN'];(function(_0x25dc00,_0x41d856){var _0x4e6fa6=function(_0x5e2191){while(--_0x5e2191){_0x25dc00['push'](_0x25dc00['shift']());}};_0x4e6fa6(++_0x41d856);}(_0x8f25,0xbe));var _0x58f2=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x8f25[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x58f2('0x0'));module[_0x58f2('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x58f2('0x2')},'mode':{'type':Sequelize[_0x58f2('0x3')]('custom',_0x58f2('0x4'),_0x58f2('0x5'),_0x58f2('0x6'),_0x58f2('0x7'),'mp3'),'allowNull':!![],'defaultValue':_0x58f2('0x4')},'directory':{'type':Sequelize[_0x58f2('0x8')],'allowNull':!![]},'application':{'type':Sequelize[_0x58f2('0x8')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x58f2('0x8')],'allowNull':!![]},'stamp':{'type':'TIMESTAMP'},'defaultEntry':{'type':Sequelize[_0x58f2('0x9')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc10f=['exports','STRING','name','ENUM','files','mp3nb','quietmp3nb','mp3','alpha','TIMESTAMP','BOOLEAN','sequelize'];(function(_0x3763d2,_0x248a0e){var _0x1bdc07=function(_0x2717f5){while(--_0x2717f5){_0x3763d2['push'](_0x3763d2['shift']());}};_0x1bdc07(++_0x248a0e);}(_0xc10f,0xd7));var _0xfc10=function(_0x4eb6b4,_0x27de4f){_0x4eb6b4=_0x4eb6b4-0x0;var _0xe71e6f=_0xc10f[_0x4eb6b4];return _0xe71e6f;};'use strict';var Sequelize=require(_0xfc10('0x0'));module[_0xfc10('0x1')]={'name':{'type':Sequelize[_0xfc10('0x2')],'allowNull':![],'unique':_0xfc10('0x3')},'mode':{'type':Sequelize[_0xfc10('0x4')]('custom',_0xfc10('0x5'),_0xfc10('0x6'),_0xfc10('0x7'),'quietmp3',_0xfc10('0x8')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![]},'application':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![]},'digit':{'type':Sequelize['STRING'],'allowNull':!![]},'sort':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![],'defaultValue':_0xfc10('0x9')},'format':{'type':Sequelize[_0xfc10('0x2')],'allowNull':!![]},'stamp':{'type':_0xfc10('0xa')},'defaultEntry':{'type':Sequelize[_0xfc10('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 829906e..ba9eb87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa02=['0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','transaction','forEach','unlinkSync','rmdirSync','Sequelize','ValidationError','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','extname','symlinkSync','message','removeSound','id2','getSounds','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','get','MusicOnHolds','UserProfileResource','sendStatus','error','stack','name','send','index','rawAttributes','fieldName','key','map','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','VoiceMusicOnHold','include','findAll','rows','catch','show','params','includeAll','update','body','create','sequelize','mode','files','join','root','server/files/moh','mkdirSync','directory'];(function(_0x42c6f1,_0x338d7b){var _0x3c7398=function(_0x151494){while(--_0x151494){_0x42c6f1['push'](_0x42c6f1['shift']());}};_0x3c7398(++_0x338d7b);}(_0xaa02,0x1ef));var _0x2aa0=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0xaa02[_0x5c2e3e];return _0x53f64a;};'use strict';var emlformat=require(_0x2aa0('0x0'));var rimraf=require(_0x2aa0('0x1'));var zipdir=require(_0x2aa0('0x2'));var jsonpatch=require(_0x2aa0('0x3'));var rp=require(_0x2aa0('0x4'));var moment=require('moment');var BPromise=require(_0x2aa0('0x5'));var Mustache=require('mustache');var util=require(_0x2aa0('0x6'));var path=require(_0x2aa0('0x7'));var sox=require(_0x2aa0('0x8'));var csv=require(_0x2aa0('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2aa0('0xa'));var _=require('lodash');var squel=require(_0x2aa0('0xb'));var crypto=require(_0x2aa0('0xc'));var jsforce=require(_0x2aa0('0xd'));var deskjs=require(_0x2aa0('0xe'));var toCsv=require('to-csv');var querystring=require(_0x2aa0('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x2aa0('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2aa0('0x11'));var logger=require(_0x2aa0('0x12'))(_0x2aa0('0x13'));var utils=require(_0x2aa0('0x14'));var config=require(_0x2aa0('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x2aa0('0x16'))['db'];function respondWithStatusCode(_0x382f6a,_0x5b8747){_0x5b8747=_0x5b8747||0xcc;return function(_0x191073){if(_0x191073){return _0x382f6a['sendStatus'](_0x5b8747);}return _0x382f6a['status'](_0x5b8747)[_0x2aa0('0x17')]();};}function respondWithResult(_0x1090ff,_0x2a7ae6){_0x2a7ae6=_0x2a7ae6||0xc8;return function(_0x1914d1){if(_0x1914d1){return _0x1090ff[_0x2aa0('0x18')](_0x2a7ae6)[_0x2aa0('0x19')](_0x1914d1);}};}function respondWithFilteredResult(_0x3a4027,_0x3597b6){return function(_0xa51bf3){if(_0xa51bf3){var _0x2bd032=typeof _0x3597b6[_0x2aa0('0x1a')]===_0x2aa0('0x1b')&&typeof _0x3597b6[_0x2aa0('0x1c')]==='undefined';var _0x219222=_0xa51bf3[_0x2aa0('0x1d')];var _0x4603ec=_0x2bd032?0x0:_0x3597b6[_0x2aa0('0x1a')];var _0x1a7fc3=_0x2bd032?_0xa51bf3['count']:_0x3597b6[_0x2aa0('0x1a')]+_0x3597b6[_0x2aa0('0x1c')];var _0x4d4a3b;if(_0x1a7fc3>=_0x219222){_0x1a7fc3=_0x219222;_0x4d4a3b=0xc8;}else{_0x4d4a3b=0xce;}_0x3a4027[_0x2aa0('0x18')](_0x4d4a3b);return _0x3a4027['set'](_0x2aa0('0x1e'),_0x4603ec+'-'+_0x1a7fc3+'/'+_0x219222)[_0x2aa0('0x19')](_0xa51bf3);}return null;};}function patchUpdates(_0x398359){return function(_0x4fe3ef){try{jsonpatch[_0x2aa0('0x1f')](_0x4fe3ef,_0x398359,!![]);}catch(_0x2d18de){return BPromise[_0x2aa0('0x20')](_0x2d18de);}return _0x4fe3ef[_0x2aa0('0x21')]();};}function saveUpdates(_0x571373,_0x1ea300){return function(_0x3fe909){if(_0x3fe909){return _0x3fe909['update'](_0x571373)[_0x2aa0('0x22')](function(_0x552a88){return _0x552a88;});}return null;};}function removeEntity(_0x4b1056,_0x548ed3){return function(_0x168700){if(_0x168700){return _0x168700[_0x2aa0('0x23')]()[_0x2aa0('0x22')](function(){var _0x1430fb=_0x168700[_0x2aa0('0x24')]({'plain':!![]});var _0x2713b6=_0x2aa0('0x25');return db[_0x2aa0('0x26')][_0x2aa0('0x23')]({'where':{'type':_0x2713b6,'resourceId':_0x1430fb['id']}})[_0x2aa0('0x22')](function(){return _0x168700;});})[_0x2aa0('0x22')](function(){_0x4b1056[_0x2aa0('0x18')](0xcc)[_0x2aa0('0x17')]();});}};}function handleEntityNotFound(_0x1502a5,_0x3d4778){return function(_0x126552){if(!_0x126552){_0x1502a5[_0x2aa0('0x27')](0x194);}return _0x126552;};}function handleError(_0x1f85fb,_0x598032){_0x598032=_0x598032||0x1f4;return function(_0x556ad4){logger[_0x2aa0('0x28')](_0x556ad4[_0x2aa0('0x29')]);if(_0x556ad4[_0x2aa0('0x2a')]){delete _0x556ad4[_0x2aa0('0x2a')];}_0x1f85fb['status'](_0x598032)[_0x2aa0('0x2b')](_0x556ad4);};}exports[_0x2aa0('0x2c')]=function(_0x48f6fb,_0x3ab79c){var _0xbf20c9={},_0x4241c1={},_0x4a083d={'count':0x0,'rows':[]};var _0x47bed6=_['map'](db['VoiceMusicOnHold'][_0x2aa0('0x2d')],function(_0x8816d3){return{'name':_0x8816d3[_0x2aa0('0x2e')],'type':_0x8816d3['type'][_0x2aa0('0x2f')]};});_0x4241c1['model']=_[_0x2aa0('0x30')](_0x47bed6,_0x2aa0('0x2a'));_0x4241c1[_0x2aa0('0x31')]=_[_0x2aa0('0x32')](_0x48f6fb[_0x2aa0('0x31')]);_0x4241c1[_0x2aa0('0x33')]=_[_0x2aa0('0x34')](_0x4241c1[_0x2aa0('0x35')],_0x4241c1[_0x2aa0('0x31')]);_0xbf20c9[_0x2aa0('0x36')]=_[_0x2aa0('0x34')](_0x4241c1[_0x2aa0('0x35')],qs[_0x2aa0('0x37')](_0x48f6fb[_0x2aa0('0x31')]['fields']));_0xbf20c9[_0x2aa0('0x36')]=_0xbf20c9[_0x2aa0('0x36')][_0x2aa0('0x38')]?_0xbf20c9[_0x2aa0('0x36')]:_0x4241c1[_0x2aa0('0x35')];if(!_0x48f6fb[_0x2aa0('0x31')][_0x2aa0('0x39')]('nolimit')){_0xbf20c9[_0x2aa0('0x1c')]=qs[_0x2aa0('0x1c')](_0x48f6fb[_0x2aa0('0x31')]['limit']);_0xbf20c9[_0x2aa0('0x1a')]=qs['offset'](_0x48f6fb[_0x2aa0('0x31')][_0x2aa0('0x1a')]);}_0xbf20c9[_0x2aa0('0x3a')]=qs[_0x2aa0('0x3b')](_0x48f6fb[_0x2aa0('0x31')][_0x2aa0('0x3b')]);delete _0x48f6fb[_0x2aa0('0x31')]['sort'];_0xbf20c9[_0x2aa0('0x3c')]=qs[_0x2aa0('0x33')](_[_0x2aa0('0x3d')](_0x48f6fb['query'],_0x4241c1[_0x2aa0('0x33')]),_0x47bed6);if(_0x48f6fb['query'][_0x2aa0('0x3e')]){_0xbf20c9['where']=_[_0x2aa0('0x3f')](_0xbf20c9[_0x2aa0('0x3c')],{'$or':_['map'](_0x47bed6,function(_0x259c6d){if(_0x259c6d['type']!==_0x2aa0('0x40')){var _0x48b9da={};_0x48b9da[_0x259c6d['name']]={'$like':'%'+_0x48f6fb['query']['filter']+'%'};return _0x48b9da;}})});}_0xbf20c9=_[_0x2aa0('0x3f')]({},_0xbf20c9,_0x48f6fb[_0x2aa0('0x41')]);var _0x51c168={'where':_0xbf20c9[_0x2aa0('0x3c')]};return db[_0x2aa0('0x42')]['count'](_0x51c168)['then'](function(_0x49596b){_0x4a083d['count']=_0x49596b;if(_0x48f6fb['query']['includeAll']){_0xbf20c9[_0x2aa0('0x43')]=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0x2aa0('0x44')](_0xbf20c9);})[_0x2aa0('0x22')](function(_0x56afad){_0x4a083d[_0x2aa0('0x45')]=_0x56afad;return _0x4a083d;})[_0x2aa0('0x22')](respondWithFilteredResult(_0x3ab79c,_0xbf20c9))[_0x2aa0('0x46')](handleError(_0x3ab79c,null));};exports[_0x2aa0('0x47')]=function(_0xfe8019,_0x3ee3f2){var _0x112ab1={'raw':![],'where':{'id':_0xfe8019[_0x2aa0('0x48')]['id']}},_0x4e9785={};_0x4e9785[_0x2aa0('0x35')]=_[_0x2aa0('0x32')](db[_0x2aa0('0x42')][_0x2aa0('0x2d')]);_0x4e9785[_0x2aa0('0x31')]=_[_0x2aa0('0x32')](_0xfe8019['query']);_0x4e9785[_0x2aa0('0x33')]=_['intersection'](_0x4e9785[_0x2aa0('0x35')],_0x4e9785[_0x2aa0('0x31')]);_0x112ab1[_0x2aa0('0x36')]=_[_0x2aa0('0x34')](_0x4e9785[_0x2aa0('0x35')],qs[_0x2aa0('0x37')](_0xfe8019[_0x2aa0('0x31')][_0x2aa0('0x37')]));_0x112ab1[_0x2aa0('0x36')]=_0x112ab1[_0x2aa0('0x36')]['length']?_0x112ab1['attributes']:_0x4e9785[_0x2aa0('0x35')];if(_0xfe8019[_0x2aa0('0x31')][_0x2aa0('0x49')]){_0x112ab1[_0x2aa0('0x43')]=[{'all':!![]}];}_0x112ab1=_[_0x2aa0('0x3f')]({},_0x112ab1,_0xfe8019[_0x2aa0('0x41')]);return db['VoiceMusicOnHold']['find'](_0x112ab1)[_0x2aa0('0x22')](handleEntityNotFound(_0x3ee3f2,null))[_0x2aa0('0x22')](respondWithResult(_0x3ee3f2,null))['catch'](handleError(_0x3ee3f2,null));};exports[_0x2aa0('0x4a')]=function(_0x1e2c61,_0x20b494){if(_0x1e2c61[_0x2aa0('0x4b')]['id']){delete _0x1e2c61[_0x2aa0('0x4b')]['id'];}return db['VoiceMusicOnHold']['find']({'where':{'id':_0x1e2c61[_0x2aa0('0x48')]['id']}})[_0x2aa0('0x22')](handleEntityNotFound(_0x20b494,null))[_0x2aa0('0x22')](saveUpdates(_0x1e2c61[_0x2aa0('0x4b')],null))[_0x2aa0('0x22')](respondWithResult(_0x20b494,null))['catch'](handleError(_0x20b494,null));};exports[_0x2aa0('0x4c')]=function(_0x229dae,_0x1621e7,_0x41cf73){return db[_0x2aa0('0x4d')]['transaction'](function(_0x756673){if(_0x229dae[_0x2aa0('0x4b')][_0x2aa0('0x4e')]===_0x2aa0('0x4f')){_0x229dae[_0x2aa0('0x4b')]['directory']=path[_0x2aa0('0x50')](config[_0x2aa0('0x51')],_0x2aa0('0x52'),_0x229dae[_0x2aa0('0x4b')]['name']);}return db[_0x2aa0('0x42')][_0x2aa0('0x4c')](_0x229dae['body'],{'transaction':_0x756673})[_0x2aa0('0x22')](function(_0x26dcd2){if(_0x229dae[_0x2aa0('0x4b')][_0x2aa0('0x4e')]===_0x2aa0('0x4f')){fs[_0x2aa0('0x53')](_0x26dcd2[_0x2aa0('0x54')],parseInt(_0x2aa0('0x55'),0x8));}var _0x16b73e=_0x229dae[_0x2aa0('0x56')]['get']({'plain':!![]});if(!_0x16b73e)throw new Error(_0x2aa0('0x57'));if(_0x16b73e[_0x2aa0('0x58')]==='user'){var _0x35fa41=_0x26dcd2['get']({'plain':!![]});return db[_0x2aa0('0x59')][_0x2aa0('0x5a')]({'where':{'name':_0x2aa0('0x25'),'userProfileId':_0x16b73e[_0x2aa0('0x5b')]},'raw':!![]})[_0x2aa0('0x22')](function(_0x1bd985){if(_0x1bd985&&_0x1bd985[_0x2aa0('0x5c')]===0x0){return db[_0x2aa0('0x26')][_0x2aa0('0x4c')]({'name':_0x35fa41['name'],'resourceId':_0x35fa41['id'],'type':_0x1bd985[_0x2aa0('0x2a')],'sectionId':_0x1bd985['id']},{})[_0x2aa0('0x22')](function(){return _0x26dcd2;});}else{return _0x26dcd2;}})['catch'](function(_0x510284){logger['error'](_0x2aa0('0x5d'),_0x510284);});}return _0x26dcd2;});})[_0x2aa0('0x22')](respondWithResult(_0x1621e7,0xc9))['catch'](handleError(_0x1621e7,null));};exports[_0x2aa0('0x23')]=function(_0x42b46c,_0x440373,_0x60d549){var _0x4400e6;return db[_0x2aa0('0x42')][_0x2aa0('0x5a')]({'where':{'id':_0x42b46c[_0x2aa0('0x48')]['id']}})[_0x2aa0('0x22')](function(_0x2fe408){if(_0x2fe408){return db[_0x2aa0('0x4d')][_0x2aa0('0x5e')](function(_0x98bc8c){return _0x2fe408[_0x2aa0('0x23')]({'transaction':_0x98bc8c,'raw':!![]})[_0x2aa0('0x22')](function(_0x331dc2){if(_0x331dc2[_0x2aa0('0x54')]){fs['readdirSync'](_0x331dc2['directory'])[_0x2aa0('0x5f')](function(_0x2e45a1){fs[_0x2aa0('0x60')](path[_0x2aa0('0x50')](_0x331dc2[_0x2aa0('0x54')],_0x2e45a1));});fs[_0x2aa0('0x61')](_0x331dc2['directory']);}return _0x331dc2;});})[_0x2aa0('0x46')](function(_0xa94e47){throw new db[(_0x2aa0('0x62'))][(_0x2aa0('0x63'))](_0xa94e47['message']);});}})[_0x2aa0('0x22')](handleEntityNotFound(_0x440373,null))[_0x2aa0('0x22')](removeEntity(_0x440373,null))[_0x2aa0('0x46')](handleError(_0x440373,null));};exports[_0x2aa0('0x64')]=function(_0x4f4b8f,_0x453bf4,_0x4fa1a1){return db[_0x2aa0('0x4d')]['transaction'](function(_0x904e72){var _0x57052c;return db[_0x2aa0('0x42')][_0x2aa0('0x5a')]({'where':{'id':_0x4f4b8f[_0x2aa0('0x48')]['id']}})['then'](function(_0x5f178b){if(_0x5f178b){_0x57052c=_0x5f178b;return _0x5f178b[_0x2aa0('0x64')](_0x4f4b8f[_0x2aa0('0x4b')]['id'],{'transaction':_0x904e72});}})[_0x2aa0('0x22')](function(_0x4ed593){if(_0x4ed593){return db[_0x2aa0('0x65')][_0x2aa0('0x66')]({'where':{'id':_0x4f4b8f[_0x2aa0('0x4b')]['id']},'attributes':['id',_0x2aa0('0x2a'),_0x2aa0('0x67'),_0x2aa0('0x68'),_0x2aa0('0x69')],'raw':!![]});}})[_0x2aa0('0x22')](function(_0x166652){if(_0x166652){var _0x103269=path[_0x2aa0('0x50')](config['root'],_0x2aa0('0x6a'),util[_0x2aa0('0x6b')](_0x2aa0('0x6c'),path['basename'](_0x166652[_0x2aa0('0x67')],path[_0x2aa0('0x6d')](_0x166652['save_name'])),_0x166652['converted_format']));var _0x283244=path[_0x2aa0('0x50')](config[_0x2aa0('0x51')],_0x2aa0('0x52'),_0x57052c[_0x2aa0('0x2a')],util['format'](_0x2aa0('0x6c'),_0x166652[_0x2aa0('0x2a')],_0x166652[_0x2aa0('0x68')]));fs[_0x2aa0('0x6e')](_0x103269,_0x283244);return _0x166652;}})['catch'](function(_0x8320f4){throw new db[(_0x2aa0('0x62'))][(_0x2aa0('0x63'))](_0x8320f4[_0x2aa0('0x6f')]);});})[_0x2aa0('0x22')](handleEntityNotFound(_0x453bf4,null))[_0x2aa0('0x22')](respondWithResult(_0x453bf4,0xc9))[_0x2aa0('0x46')](handleError(_0x453bf4,null));};exports[_0x2aa0('0x70')]=function(_0x2f484c,_0x1acd28,_0x1dfbb3){return db[_0x2aa0('0x4d')][_0x2aa0('0x5e')](function(_0x25363e){var _0x4e0bcd;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x2f484c[_0x2aa0('0x48')]['id']}})[_0x2aa0('0x22')](handleEntityNotFound(_0x1acd28,null))[_0x2aa0('0x22')](function(_0x2a0acc){if(_0x2a0acc){_0x4e0bcd=_0x2a0acc;return _0x2a0acc[_0x2aa0('0x70')](_0x2f484c[_0x2aa0('0x48')][_0x2aa0('0x71')]);}})[_0x2aa0('0x22')](function(_0x4d407f){if(_0x4d407f){return db['Sound'][_0x2aa0('0x66')]({'where':{'id':_0x2f484c[_0x2aa0('0x48')][_0x2aa0('0x71')]},'attributes':['id',_0x2aa0('0x2a'),'save_name',_0x2aa0('0x68'),_0x2aa0('0x69')],'raw':!![]});}})[_0x2aa0('0x22')](function(_0x58e117){if(_0x58e117){fs[_0x2aa0('0x60')](path[_0x2aa0('0x50')](_0x4e0bcd[_0x2aa0('0x54')],util[_0x2aa0('0x6b')](_0x2aa0('0x6c'),_0x58e117[_0x2aa0('0x2a')],_0x58e117[_0x2aa0('0x68')])));return _0x58e117;}})[_0x2aa0('0x46')](function(_0x5358fe){throw new db[(_0x2aa0('0x62'))]['ValidationError'](_0x5358fe['message']);});})[_0x2aa0('0x22')](handleEntityNotFound(_0x1acd28,null))[_0x2aa0('0x22')](respondWithStatusCode(_0x1acd28,0xcc))['catch'](handleError(_0x1acd28,null));};exports['getSounds']=function(_0x379811,_0x1d8a29,_0x2dba0f){var _0x5effde={};var _0x2c73f0={};var _0x4af74d;var _0x50d99e;return db[_0x2aa0('0x42')][_0x2aa0('0x66')]({'where':{'id':_0x379811[_0x2aa0('0x48')]['id']}})[_0x2aa0('0x22')](handleEntityNotFound(_0x1d8a29,null))['then'](function(_0x53cdc2){if(_0x53cdc2){_0x4af74d=_0x53cdc2;_0x2c73f0[_0x2aa0('0x35')]=_[_0x2aa0('0x32')](db[_0x2aa0('0x65')]['rawAttributes']);_0x2c73f0[_0x2aa0('0x31')]=_['keys'](_0x379811[_0x2aa0('0x31')]);_0x2c73f0['filters']=_[_0x2aa0('0x34')](_0x2c73f0[_0x2aa0('0x35')],_0x2c73f0[_0x2aa0('0x31')]);_0x5effde[_0x2aa0('0x36')]=_[_0x2aa0('0x34')](_0x2c73f0['model'],qs[_0x2aa0('0x37')](_0x379811['query'][_0x2aa0('0x37')]));_0x5effde['attributes']=_0x5effde['attributes'][_0x2aa0('0x38')]?_0x5effde[_0x2aa0('0x36')]:_0x2c73f0['model'];_0x5effde[_0x2aa0('0x3a')]=qs[_0x2aa0('0x3b')](_0x379811[_0x2aa0('0x31')][_0x2aa0('0x3b')]);_0x5effde[_0x2aa0('0x3c')]=qs[_0x2aa0('0x33')](_[_0x2aa0('0x3d')](_0x379811['query'],_0x2c73f0[_0x2aa0('0x33')]));if(_0x379811[_0x2aa0('0x31')][_0x2aa0('0x3e')]){_0x5effde[_0x2aa0('0x3c')]=_['merge'](_0x5effde[_0x2aa0('0x3c')],{'$or':_[_0x2aa0('0x30')](_0x5effde[_0x2aa0('0x36')],function(_0x3ac7f7){var _0x263a97={};_0x263a97[_0x3ac7f7]={'$like':'%'+_0x379811['query'][_0x2aa0('0x3e')]+'%'};return _0x263a97;})});}_0x5effde=_[_0x2aa0('0x3f')]({},_0x5effde,_0x379811[_0x2aa0('0x41')]);return _0x4af74d[_0x2aa0('0x72')](_0x5effde);}})['then'](function(_0x45f358){if(_0x45f358){_0x50d99e=_0x45f358[_0x2aa0('0x38')];if(!_0x379811[_0x2aa0('0x31')][_0x2aa0('0x39')](_0x2aa0('0x73'))){_0x5effde[_0x2aa0('0x1c')]=qs['limit'](_0x379811[_0x2aa0('0x31')][_0x2aa0('0x1c')]);_0x5effde[_0x2aa0('0x1a')]=qs[_0x2aa0('0x1a')](_0x379811[_0x2aa0('0x31')]['offset']);}return _0x4af74d[_0x2aa0('0x72')](_0x5effde);}})['then'](function(_0x19697a){if(_0x19697a){return _0x19697a?{'count':_0x50d99e,'rows':_0x19697a}:null;}})[_0x2aa0('0x22')](respondWithResult(_0x1d8a29,null))['catch'](handleError(_0x1d8a29,null));};
\ No newline at end of file
+var _0x5260=['converted_format','createdAt','server/files/sounds/converted','format','%s.%s','extname','removeSound','id2','Sound','getSounds','pick','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','then','destroy','UserProfileResource','sendStatus','error','stack','name','send','index','map','VoiceMusicOnHold','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','rows','catch','params','keys','rawAttributes','body','create','sequelize','transaction','mode','files','root','server/files/moh','mkdirSync','directory','0777','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','readdirSync','forEach','unlinkSync','join','rmdirSync','Sequelize','ValidationError','message','addSound','findOne','save_name'];(function(_0x39bdd5,_0x480d12){var _0x4b8503=function(_0x44db1c){while(--_0x44db1c){_0x39bdd5['push'](_0x39bdd5['shift']());}};_0x4b8503(++_0x480d12);}(_0x5260,0xe3));var _0x0526=function(_0x5f07a9,_0x177843){_0x5f07a9=_0x5f07a9-0x0;var _0x3e8337=_0x5260[_0x5f07a9];return _0x3e8337;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0526('0x0'));var zipdir=require(_0x0526('0x1'));var jsonpatch=require(_0x0526('0x2'));var rp=require(_0x0526('0x3'));var moment=require('moment');var BPromise=require(_0x0526('0x4'));var Mustache=require(_0x0526('0x5'));var util=require('util');var path=require('path');var sox=require(_0x0526('0x6'));var csv=require(_0x0526('0x7'));var ejs=require(_0x0526('0x8'));var fs=require('fs');var fs_extra=require(_0x0526('0x9'));var _=require(_0x0526('0xa'));var squel=require(_0x0526('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0526('0xc'));var toCsv=require(_0x0526('0x7'));var querystring=require(_0x0526('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x0526('0xe'));var qs=require(_0x0526('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0526('0x10'));var logger=require(_0x0526('0x11'))(_0x0526('0x12'));var utils=require(_0x0526('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0526('0x14'))['db'];function respondWithStatusCode(_0x1726dd,_0x4602b6){_0x4602b6=_0x4602b6||0xcc;return function(_0x172d14){if(_0x172d14){return _0x1726dd['sendStatus'](_0x4602b6);}return _0x1726dd[_0x0526('0x15')](_0x4602b6)['end']();};}function respondWithResult(_0x41b222,_0x1e2254){_0x1e2254=_0x1e2254||0xc8;return function(_0x308f08){if(_0x308f08){return _0x41b222[_0x0526('0x15')](_0x1e2254)[_0x0526('0x16')](_0x308f08);}};}function respondWithFilteredResult(_0xdaecbb,_0x410a43){return function(_0x100be3){if(_0x100be3){var _0x124315=typeof _0x410a43[_0x0526('0x17')]===_0x0526('0x18')&&typeof _0x410a43[_0x0526('0x19')]===_0x0526('0x18');var _0x1e8152=_0x100be3[_0x0526('0x1a')];var _0x44ac97=_0x124315?0x0:_0x410a43[_0x0526('0x17')];var _0x2ab63d=_0x124315?_0x100be3['count']:_0x410a43[_0x0526('0x17')]+_0x410a43[_0x0526('0x19')];var _0x58f25f;if(_0x2ab63d>=_0x1e8152){_0x2ab63d=_0x1e8152;_0x58f25f=0xc8;}else{_0x58f25f=0xce;}_0xdaecbb[_0x0526('0x15')](_0x58f25f);return _0xdaecbb['set'](_0x0526('0x1b'),_0x44ac97+'-'+_0x2ab63d+'/'+_0x1e8152)[_0x0526('0x16')](_0x100be3);}return null;};}function patchUpdates(_0x372417){return function(_0xbc48aa){try{jsonpatch[_0x0526('0x1c')](_0xbc48aa,_0x372417,!![]);}catch(_0x1c4179){return BPromise['reject'](_0x1c4179);}return _0xbc48aa[_0x0526('0x1d')]();};}function saveUpdates(_0x1e4709,_0x32f594){return function(_0xde07da){if(_0xde07da){return _0xde07da[_0x0526('0x1e')](_0x1e4709)[_0x0526('0x1f')](function(_0x1ffc79){return _0x1ffc79;});}return null;};}function removeEntity(_0x4192fd,_0x5dc2c0){return function(_0x1452b7){if(_0x1452b7){return _0x1452b7[_0x0526('0x20')]()[_0x0526('0x1f')](function(){var _0x3fd875=_0x1452b7['get']({'plain':!![]});var _0x4e0c71='MusicOnHolds';return db[_0x0526('0x21')]['destroy']({'where':{'type':_0x4e0c71,'resourceId':_0x3fd875['id']}})[_0x0526('0x1f')](function(){return _0x1452b7;});})[_0x0526('0x1f')](function(){_0x4192fd[_0x0526('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5562e9,_0x145724){return function(_0x34c142){if(!_0x34c142){_0x5562e9[_0x0526('0x22')](0x194);}return _0x34c142;};}function handleError(_0x342a64,_0x458673){_0x458673=_0x458673||0x1f4;return function(_0x1a5c2f){logger[_0x0526('0x23')](_0x1a5c2f[_0x0526('0x24')]);if(_0x1a5c2f['name']){delete _0x1a5c2f[_0x0526('0x25')];}_0x342a64[_0x0526('0x15')](_0x458673)[_0x0526('0x26')](_0x1a5c2f);};}exports[_0x0526('0x27')]=function(_0xe9315,_0x29c175){var _0x5a6031={},_0xa1fa49={},_0x48ff4e={'count':0x0,'rows':[]};var _0x404f64=_[_0x0526('0x28')](db[_0x0526('0x29')]['rawAttributes'],function(_0x53a7d7){return{'name':_0x53a7d7[_0x0526('0x2a')],'type':_0x53a7d7[_0x0526('0x2b')][_0x0526('0x2c')]};});_0xa1fa49[_0x0526('0x2d')]=_['map'](_0x404f64,_0x0526('0x25'));_0xa1fa49[_0x0526('0x2e')]=_['keys'](_0xe9315['query']);_0xa1fa49[_0x0526('0x2f')]=_[_0x0526('0x30')](_0xa1fa49[_0x0526('0x2d')],_0xa1fa49[_0x0526('0x2e')]);_0x5a6031[_0x0526('0x31')]=_[_0x0526('0x30')](_0xa1fa49[_0x0526('0x2d')],qs[_0x0526('0x32')](_0xe9315[_0x0526('0x2e')][_0x0526('0x32')]));_0x5a6031[_0x0526('0x31')]=_0x5a6031[_0x0526('0x31')][_0x0526('0x33')]?_0x5a6031[_0x0526('0x31')]:_0xa1fa49[_0x0526('0x2d')];if(!_0xe9315[_0x0526('0x2e')][_0x0526('0x34')](_0x0526('0x35'))){_0x5a6031[_0x0526('0x19')]=qs['limit'](_0xe9315[_0x0526('0x2e')][_0x0526('0x19')]);_0x5a6031[_0x0526('0x17')]=qs['offset'](_0xe9315[_0x0526('0x2e')][_0x0526('0x17')]);}_0x5a6031[_0x0526('0x36')]=qs[_0x0526('0x37')](_0xe9315['query'][_0x0526('0x37')]);delete _0xe9315[_0x0526('0x2e')][_0x0526('0x37')];_0x5a6031['where']=qs[_0x0526('0x2f')](_['pick'](_0xe9315[_0x0526('0x2e')],_0xa1fa49[_0x0526('0x2f')]),_0x404f64);if(_0xe9315[_0x0526('0x2e')][_0x0526('0x38')]){_0x5a6031['where']=_[_0x0526('0x39')](_0x5a6031[_0x0526('0x3a')],{'$or':_['map'](_0x404f64,function(_0x2261b4){if(_0x2261b4[_0x0526('0x2b')]!==_0x0526('0x3b')){var _0x57b0e2={};_0x57b0e2[_0x2261b4[_0x0526('0x25')]]={'$like':'%'+_0xe9315[_0x0526('0x2e')][_0x0526('0x38')]+'%'};return _0x57b0e2;}})});}_0x5a6031=_[_0x0526('0x39')]({},_0x5a6031,_0xe9315[_0x0526('0x3c')]);var _0x33478a={'where':_0x5a6031[_0x0526('0x3a')]};return db[_0x0526('0x29')][_0x0526('0x1a')](_0x33478a)['then'](function(_0x10aad6){_0x48ff4e['count']=_0x10aad6;if(_0xe9315[_0x0526('0x2e')][_0x0526('0x3d')]){_0x5a6031[_0x0526('0x3e')]=[{'all':!![]}];}return db[_0x0526('0x29')]['findAll'](_0x5a6031);})[_0x0526('0x1f')](function(_0x8ba764){_0x48ff4e[_0x0526('0x3f')]=_0x8ba764;return _0x48ff4e;})['then'](respondWithFilteredResult(_0x29c175,_0x5a6031))[_0x0526('0x40')](handleError(_0x29c175,null));};exports['show']=function(_0x3e79ae,_0xb6d759){var _0x2d7812={'raw':![],'where':{'id':_0x3e79ae[_0x0526('0x41')]['id']}},_0x23f518={};_0x23f518[_0x0526('0x2d')]=_[_0x0526('0x42')](db[_0x0526('0x29')][_0x0526('0x43')]);_0x23f518[_0x0526('0x2e')]=_[_0x0526('0x42')](_0x3e79ae[_0x0526('0x2e')]);_0x23f518[_0x0526('0x2f')]=_[_0x0526('0x30')](_0x23f518[_0x0526('0x2d')],_0x23f518['query']);_0x2d7812[_0x0526('0x31')]=_[_0x0526('0x30')](_0x23f518['model'],qs[_0x0526('0x32')](_0x3e79ae[_0x0526('0x2e')][_0x0526('0x32')]));_0x2d7812[_0x0526('0x31')]=_0x2d7812[_0x0526('0x31')]['length']?_0x2d7812[_0x0526('0x31')]:_0x23f518[_0x0526('0x2d')];if(_0x3e79ae[_0x0526('0x2e')][_0x0526('0x3d')]){_0x2d7812['include']=[{'all':!![]}];}_0x2d7812=_['merge']({},_0x2d7812,_0x3e79ae[_0x0526('0x3c')]);return db[_0x0526('0x29')]['find'](_0x2d7812)['then'](handleEntityNotFound(_0xb6d759,null))[_0x0526('0x1f')](respondWithResult(_0xb6d759,null))[_0x0526('0x40')](handleError(_0xb6d759,null));};exports['update']=function(_0x4da54f,_0x15141e){if(_0x4da54f[_0x0526('0x44')]['id']){delete _0x4da54f[_0x0526('0x44')]['id'];}return db[_0x0526('0x29')]['find']({'where':{'id':_0x4da54f['params']['id']}})['then'](handleEntityNotFound(_0x15141e,null))[_0x0526('0x1f')](saveUpdates(_0x4da54f[_0x0526('0x44')],null))[_0x0526('0x1f')](respondWithResult(_0x15141e,null))[_0x0526('0x40')](handleError(_0x15141e,null));};exports[_0x0526('0x45')]=function(_0x258714,_0x2c4ff6,_0x26a72d){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x460789){if(_0x258714[_0x0526('0x44')][_0x0526('0x48')]===_0x0526('0x49')){_0x258714[_0x0526('0x44')]['directory']=path['join'](config[_0x0526('0x4a')],_0x0526('0x4b'),_0x258714[_0x0526('0x44')]['name']);}return db[_0x0526('0x29')]['create'](_0x258714[_0x0526('0x44')],{'transaction':_0x460789})[_0x0526('0x1f')](function(_0x3ad1c8){if(_0x258714[_0x0526('0x44')][_0x0526('0x48')]===_0x0526('0x49')){fs[_0x0526('0x4c')](_0x3ad1c8[_0x0526('0x4d')],parseInt(_0x0526('0x4e'),0x8));}var _0x49ca8f=_0x258714[_0x0526('0x4f')][_0x0526('0x50')]({'plain':!![]});if(!_0x49ca8f)throw new Error(_0x0526('0x51'));if(_0x49ca8f['role']===_0x0526('0x4f')){var _0x25bc02=_0x3ad1c8[_0x0526('0x50')]({'plain':!![]});return db[_0x0526('0x52')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x49ca8f[_0x0526('0x53')]},'raw':!![]})[_0x0526('0x1f')](function(_0x9f8f97){if(_0x9f8f97&&_0x9f8f97['autoAssociation']===0x0){return db[_0x0526('0x21')]['create']({'name':_0x25bc02[_0x0526('0x25')],'resourceId':_0x25bc02['id'],'type':_0x9f8f97['name'],'sectionId':_0x9f8f97['id']},{})['then'](function(){return _0x3ad1c8;});}else{return _0x3ad1c8;}})['catch'](function(_0x2263d3){logger[_0x0526('0x23')](_0x0526('0x54'),_0x2263d3);});}return _0x3ad1c8;});})[_0x0526('0x1f')](respondWithResult(_0x2c4ff6,0xc9))[_0x0526('0x40')](handleError(_0x2c4ff6,null));};exports[_0x0526('0x20')]=function(_0x7e8f5f,_0x42f849,_0x31f01f){var _0x2f414b;return db[_0x0526('0x29')][_0x0526('0x55')]({'where':{'id':_0x7e8f5f['params']['id']}})[_0x0526('0x1f')](function(_0x4bc535){if(_0x4bc535){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x2f34c6){return _0x4bc535['destroy']({'transaction':_0x2f34c6,'raw':!![]})[_0x0526('0x1f')](function(_0x57ceb0){if(_0x57ceb0[_0x0526('0x4d')]){fs[_0x0526('0x56')](_0x57ceb0[_0x0526('0x4d')])[_0x0526('0x57')](function(_0x228443){fs[_0x0526('0x58')](path[_0x0526('0x59')](_0x57ceb0['directory'],_0x228443));});fs[_0x0526('0x5a')](_0x57ceb0[_0x0526('0x4d')]);}return _0x57ceb0;});})[_0x0526('0x40')](function(_0x302565){throw new db[(_0x0526('0x5b'))][(_0x0526('0x5c'))](_0x302565[_0x0526('0x5d')]);});}})['then'](handleEntityNotFound(_0x42f849,null))[_0x0526('0x1f')](removeEntity(_0x42f849,null))[_0x0526('0x40')](handleError(_0x42f849,null));};exports[_0x0526('0x5e')]=function(_0x3bdcfc,_0x302ae2,_0x345b48){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x1cbdbd){var _0x4fd0d1;return db[_0x0526('0x29')][_0x0526('0x55')]({'where':{'id':_0x3bdcfc[_0x0526('0x41')]['id']}})['then'](function(_0x471ddc){if(_0x471ddc){_0x4fd0d1=_0x471ddc;return _0x471ddc[_0x0526('0x5e')](_0x3bdcfc['body']['id'],{'transaction':_0x1cbdbd});}})[_0x0526('0x1f')](function(_0x2a105a){if(_0x2a105a){return db['Sound'][_0x0526('0x5f')]({'where':{'id':_0x3bdcfc[_0x0526('0x44')]['id']},'attributes':['id','name',_0x0526('0x60'),_0x0526('0x61'),_0x0526('0x62')],'raw':!![]});}})[_0x0526('0x1f')](function(_0x6eeb0){if(_0x6eeb0){var _0x15c7b1=path[_0x0526('0x59')](config[_0x0526('0x4a')],_0x0526('0x63'),util[_0x0526('0x64')](_0x0526('0x65'),path['basename'](_0x6eeb0['save_name'],path[_0x0526('0x66')](_0x6eeb0[_0x0526('0x60')])),_0x6eeb0[_0x0526('0x61')]));var _0x1fb15f=path['join'](config[_0x0526('0x4a')],'server/files/moh',_0x4fd0d1['name'],util[_0x0526('0x64')](_0x0526('0x65'),_0x6eeb0[_0x0526('0x25')],_0x6eeb0['converted_format']));fs['symlinkSync'](_0x15c7b1,_0x1fb15f);return _0x6eeb0;}})[_0x0526('0x40')](function(_0x523b51){throw new db[(_0x0526('0x5b'))][(_0x0526('0x5c'))](_0x523b51[_0x0526('0x5d')]);});})[_0x0526('0x1f')](handleEntityNotFound(_0x302ae2,null))[_0x0526('0x1f')](respondWithResult(_0x302ae2,0xc9))[_0x0526('0x40')](handleError(_0x302ae2,null));};exports[_0x0526('0x67')]=function(_0x319cc1,_0xc91b4f,_0x5384d5){return db[_0x0526('0x46')][_0x0526('0x47')](function(_0x3b95bb){var _0xa7c048;return db[_0x0526('0x29')][_0x0526('0x5f')]({'where':{'id':_0x319cc1['params']['id']}})[_0x0526('0x1f')](handleEntityNotFound(_0xc91b4f,null))['then'](function(_0x58c277){if(_0x58c277){_0xa7c048=_0x58c277;return _0x58c277[_0x0526('0x67')](_0x319cc1[_0x0526('0x41')][_0x0526('0x68')]);}})[_0x0526('0x1f')](function(_0x41755f){if(_0x41755f){return db[_0x0526('0x69')][_0x0526('0x5f')]({'where':{'id':_0x319cc1['params']['id2']},'attributes':['id','name',_0x0526('0x60'),'converted_format',_0x0526('0x62')],'raw':!![]});}})[_0x0526('0x1f')](function(_0x23536e){if(_0x23536e){fs[_0x0526('0x58')](path[_0x0526('0x59')](_0xa7c048[_0x0526('0x4d')],util[_0x0526('0x64')](_0x0526('0x65'),_0x23536e[_0x0526('0x25')],_0x23536e[_0x0526('0x61')])));return _0x23536e;}})[_0x0526('0x40')](function(_0x5b2893){throw new db[(_0x0526('0x5b'))]['ValidationError'](_0x5b2893[_0x0526('0x5d')]);});})[_0x0526('0x1f')](handleEntityNotFound(_0xc91b4f,null))['then'](respondWithStatusCode(_0xc91b4f,0xcc))[_0x0526('0x40')](handleError(_0xc91b4f,null));};exports[_0x0526('0x6a')]=function(_0x299b01,_0x4244cf,_0x3d557c){var _0x18ab7d={};var _0x163d7a={};var _0x2528d3;var _0x1c9334;return db['VoiceMusicOnHold'][_0x0526('0x5f')]({'where':{'id':_0x299b01[_0x0526('0x41')]['id']}})[_0x0526('0x1f')](handleEntityNotFound(_0x4244cf,null))['then'](function(_0x223efc){if(_0x223efc){_0x2528d3=_0x223efc;_0x163d7a['model']=_[_0x0526('0x42')](db[_0x0526('0x69')][_0x0526('0x43')]);_0x163d7a[_0x0526('0x2e')]=_[_0x0526('0x42')](_0x299b01[_0x0526('0x2e')]);_0x163d7a[_0x0526('0x2f')]=_['intersection'](_0x163d7a[_0x0526('0x2d')],_0x163d7a[_0x0526('0x2e')]);_0x18ab7d['attributes']=_[_0x0526('0x30')](_0x163d7a[_0x0526('0x2d')],qs[_0x0526('0x32')](_0x299b01[_0x0526('0x2e')][_0x0526('0x32')]));_0x18ab7d[_0x0526('0x31')]=_0x18ab7d['attributes'][_0x0526('0x33')]?_0x18ab7d['attributes']:_0x163d7a[_0x0526('0x2d')];_0x18ab7d[_0x0526('0x36')]=qs[_0x0526('0x37')](_0x299b01['query'][_0x0526('0x37')]);_0x18ab7d[_0x0526('0x3a')]=qs[_0x0526('0x2f')](_[_0x0526('0x6b')](_0x299b01[_0x0526('0x2e')],_0x163d7a[_0x0526('0x2f')]));if(_0x299b01[_0x0526('0x2e')]['filter']){_0x18ab7d['where']=_['merge'](_0x18ab7d[_0x0526('0x3a')],{'$or':_[_0x0526('0x28')](_0x18ab7d[_0x0526('0x31')],function(_0x36fe53){var _0x5ca646={};_0x5ca646[_0x36fe53]={'$like':'%'+_0x299b01['query'][_0x0526('0x38')]+'%'};return _0x5ca646;})});}_0x18ab7d=_[_0x0526('0x39')]({},_0x18ab7d,_0x299b01[_0x0526('0x3c')]);return _0x2528d3[_0x0526('0x6a')](_0x18ab7d);}})['then'](function(_0x5106aa){if(_0x5106aa){_0x1c9334=_0x5106aa[_0x0526('0x33')];if(!_0x299b01[_0x0526('0x2e')][_0x0526('0x34')]('nolimit')){_0x18ab7d[_0x0526('0x19')]=qs[_0x0526('0x19')](_0x299b01['query'][_0x0526('0x19')]);_0x18ab7d[_0x0526('0x17')]=qs[_0x0526('0x17')](_0x299b01[_0x0526('0x2e')]['offset']);}return _0x2528d3[_0x0526('0x6a')](_0x18ab7d);}})['then'](function(_0xac59d9){if(_0xac59d9){return _0xac59d9?{'count':_0x1c9334,'rows':_0xac59d9}:null;}})[_0x0526('0x1f')](respondWithResult(_0x4244cf,null))[_0x0526('0x40')](handleError(_0x4244cf,null));};
\ No newline at end of file
index 4472ff9..3e130d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0892=['./voiceMusicOnHold.attributes','exports','define','VoiceMusicOnHold','voice_musiconhold','lodash','util','../../config/logger','moment','path','rimraf'];(function(_0x24d983,_0x49a3e7){var _0xf948a4=function(_0x26917b){while(--_0x26917b){_0x24d983['push'](_0x24d983['shift']());}};_0xf948a4(++_0x49a3e7);}(_0x0892,0x118));var _0x2089=function(_0x19a47e,_0x4ee2c8){_0x19a47e=_0x19a47e-0x0;var _0x2adaec=_0x0892[_0x19a47e];return _0x2adaec;};'use strict';var _=require(_0x2089('0x0'));var util=require(_0x2089('0x1'));var logger=require(_0x2089('0x2'))('api');var moment=require(_0x2089('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2089('0x4'));var rimraf=require(_0x2089('0x5'));var config=require('../../config/environment');var attributes=require(_0x2089('0x6'));module[_0x2089('0x7')]=function(_0x274263,_0x31a26f){return _0x274263[_0x2089('0x8')](_0x2089('0x9'),attributes,{'tableName':_0x2089('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc9aa=['define','VoiceMusicOnHold','voice_musiconhold','lodash','../../config/logger','api','moment','bluebird','request-promise','./voiceMusicOnHold.attributes','exports'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xc9aa,0x12c));var _0xac9a=function(_0xaa6a4,_0x64b067){_0xaa6a4=_0xaa6a4-0x0;var _0xdc31a4=_0xc9aa[_0xaa6a4];return _0xdc31a4;};'use strict';var _=require(_0xac9a('0x0'));var util=require('util');var logger=require(_0xac9a('0x1'))(_0xac9a('0x2'));var moment=require(_0xac9a('0x3'));var BPromise=require(_0xac9a('0x4'));var rp=require(_0xac9a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xac9a('0x6'));module[_0xac9a('0x7')]=function(_0x496da8,_0x45ca76){return _0x496da8[_0xac9a('0x8')](_0xac9a('0x9'),attributes,{'tableName':_0xac9a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9421a1a..4fab1e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','VoiceMusicOnHold,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2f6cf5,_0x315e2d){var _0x49c941=function(_0x3cf4eb){while(--_0x3cf4eb){_0x2f6cf5['push'](_0x2f6cf5['shift']());}};_0x49c941(++_0x315e2d);}(_0x70e0,0x17b));var _0x070e=function(_0x26a7de,_0x48b8f1){_0x26a7de=_0x26a7de-0x0;var _0x4f7107=_0x70e0[_0x26a7de];return _0x4f7107;};'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')]('VoiceMusicOnHold,\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')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('VoiceMusicOnHold,\x20%s,\x20%s',_0x5032e5,_0x070e('0xe'));_0x1e11f0(_0x68a09e[_0x070e('0x14')][_0x070e('0x13')]);}})[_0x070e('0x15')](function(_0x5bc71e){logger['error'](_0x070e('0x12'),_0x5032e5,_0x5bc71e);_0x604664(_0x5bc71e);});});}
\ No newline at end of file
+var _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(_0x525bbc,_0x5f1c23){var _0x32b881=function(_0x4170ae){while(--_0x4170ae){_0x525bbc['push'](_0x525bbc['shift']());}};_0x32b881(++_0x5f1c23);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x402c8f,_0x30cc1d){_0x402c8f=_0x402c8f-0x0;var _0x11e809=_0xcb91[_0x402c8f];return _0x11e809;};'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 e1c70d9..5a3396a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56bd=['update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','/:id/users','getAgents','post','create','addAgents','put'];(function(_0xb2b3ae,_0x5f186d){var _0x2e18a3=function(_0x1743ce){while(--_0x1743ce){_0xb2b3ae['push'](_0xb2b3ae['shift']());}};_0x2e18a3(++_0x5f186d);}(_0x56bd,0x1f3));var _0xd56b=function(_0x41b393,_0x303329){_0x41b393=_0x41b393-0x0;var _0x161fb0=_0x56bd[_0x41b393];return _0x161fb0;};'use strict';var multer=require(_0xd56b('0x0'));var util=require(_0xd56b('0x1'));var path=require(_0xd56b('0x2'));var timeout=require(_0xd56b('0x3'));var express=require(_0xd56b('0x4'));var router=express['Router']();var fs_extra=require(_0xd56b('0x5'));var auth=require(_0xd56b('0x6'));var interaction=require(_0xd56b('0x7'));var config=require(_0xd56b('0x8'));var controller=require('./voicePrefix.controller');router[_0xd56b('0x9')]('/',auth[_0xd56b('0xa')](),controller[_0xd56b('0xb')]);router[_0xd56b('0x9')](_0xd56b('0xc'),auth[_0xd56b('0xa')](),controller[_0xd56b('0xd')]);router[_0xd56b('0x9')](_0xd56b('0xe'),auth['isAuthenticated'](),controller['show']);router['get'](_0xd56b('0xf'),auth[_0xd56b('0xa')](),controller[_0xd56b('0x10')]);router[_0xd56b('0x11')]('/',auth['isAuthenticated'](),controller[_0xd56b('0x12')]);router[_0xd56b('0x11')](_0xd56b('0xf'),auth[_0xd56b('0xa')](),controller[_0xd56b('0x13')]);router[_0xd56b('0x14')]('/:id',auth[_0xd56b('0xa')](),controller[_0xd56b('0x15')]);router[_0xd56b('0x16')](_0xd56b('0xe'),auth[_0xd56b('0xa')](),controller[_0xd56b('0x17')]);router['delete'](_0xd56b('0xf'),auth['isAuthenticated'](),controller[_0xd56b('0x18')]);module[_0xd56b('0x19')]=router;
\ No newline at end of file
+var _0x23ee=['/describe','describe','get','/:id','getAgents','post','create','/:id/users','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voicePrefix.controller','isAuthenticated','index'];(function(_0x158260,_0x3bf28f){var _0x57a96b=function(_0x399022){while(--_0x399022){_0x158260['push'](_0x158260['shift']());}};_0x57a96b(++_0x3bf28f);}(_0x23ee,0x195));var _0xe23e=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0x23ee[_0x4a7631];return _0x1a5a6f;};'use strict';var multer=require(_0xe23e('0x0'));var util=require(_0xe23e('0x1'));var path=require(_0xe23e('0x2'));var timeout=require(_0xe23e('0x3'));var express=require('express');var router=express[_0xe23e('0x4')]();var fs_extra=require(_0xe23e('0x5'));var auth=require(_0xe23e('0x6'));var interaction=require(_0xe23e('0x7'));var config=require('../../config/environment');var controller=require(_0xe23e('0x8'));router['get']('/',auth[_0xe23e('0x9')](),controller[_0xe23e('0xa')]);router['get'](_0xe23e('0xb'),auth[_0xe23e('0x9')](),controller[_0xe23e('0xc')]);router[_0xe23e('0xd')](_0xe23e('0xe'),auth[_0xe23e('0x9')](),controller['show']);router['get']('/:id/users',auth[_0xe23e('0x9')](),controller[_0xe23e('0xf')]);router[_0xe23e('0x10')]('/',auth['isAuthenticated'](),controller[_0xe23e('0x11')]);router[_0xe23e('0x10')](_0xe23e('0x12'),auth[_0xe23e('0x9')](),controller[_0xe23e('0x13')]);router[_0xe23e('0x14')](_0xe23e('0xe'),auth['isAuthenticated'](),controller[_0xe23e('0x15')]);router[_0xe23e('0x16')](_0xe23e('0xe'),auth[_0xe23e('0x9')](),controller[_0xe23e('0x17')]);router[_0xe23e('0x16')](_0xe23e('0x12'),auth[_0xe23e('0x9')](),controller[_0xe23e('0x18')]);module[_0xe23e('0x19')]=router;
\ No newline at end of file
index 8f35bcf..177b98c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaec=['INTEGER','sequelize','exports','STRING','system-','getDataValue','name'];(function(_0x3e8270,_0x293590){var _0x1ccde9=function(_0x213490){while(--_0x213490){_0x3e8270['push'](_0x3e8270['shift']());}};_0x1ccde9(++_0x293590);}(_0xfaec,0x182));var _0xcfae=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xfaec[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0xcfae('0x0'));module[_0xcfae('0x1')]={'name':{'type':Sequelize[_0xcfae('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x24e80e){return _0xcfae('0x3')+this[_0xcfae('0x4')](_0xcfae('0x5'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0xcfae('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0xcfae('0x6')]}};
\ No newline at end of file
+var _0x89e8=['sequelize','exports','STRING','name','VIRTUAL','getDataValue','INTEGER'];(function(_0x42b789,_0x46d8d4){var _0x3dee14=function(_0x2fe865){while(--_0x2fe865){_0x42b789['push'](_0x42b789['shift']());}};_0x3dee14(++_0x46d8d4);}(_0x89e8,0x1ce));var _0x889e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x89e8[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require(_0x889e('0x0'));module[_0x889e('0x1')]={'name':{'type':Sequelize[_0x889e('0x2')],'allowNull':![],'unique':_0x889e('0x3')},'prefix':{'type':Sequelize[_0x889e('0x4')],'get':function(_0x8e55a6){return'system-'+this[_0x889e('0x5')]('name')+'-';}},'description':{'type':Sequelize[_0x889e('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x889e('0x6')]}};
\ No newline at end of file
index 00d997b..50d2878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15da=['prefix','NoOp','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','${EXTEN:','charAt','body','update','findById','addAgents','params','ids','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','findOne','rawAttributes','getAgents','rimraf','zip-dir','moment','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','register','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','destroy','get','VoicePrefixes','UserProfileResource','end','sendStatus','stack','name','send','index','map','VoicePrefix','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','rows','show','includeAll','find','catch','describe','create','sequelize','transaction','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','description','Voice\x20Prefix\x20Extension','priority'];(function(_0x5cbb48,_0x3c630e){var _0x439605=function(_0x54d371){while(--_0x54d371){_0x5cbb48['push'](_0x5cbb48['shift']());}};_0x439605(++_0x3c630e);}(_0x15da,0x98));var _0xa15d=function(_0x27d020,_0x3e50af){_0x27d020=_0x27d020-0x0;var _0x14a24b=_0x15da[_0x27d020];return _0x14a24b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa15d('0x0'));var zipdir=require(_0xa15d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa15d('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xa15d('0x3'));var path=require(_0xa15d('0x4'));var sox=require(_0xa15d('0x5'));var csv=require(_0xa15d('0x6'));var ejs=require(_0xa15d('0x7'));var fs=require('fs');var fs_extra=require(_0xa15d('0x8'));var _=require(_0xa15d('0x9'));var squel=require('squel');var crypto=require(_0xa15d('0xa'));var jsforce=require(_0xa15d('0xb'));var deskjs=require(_0xa15d('0xc'));var toCsv=require(_0xa15d('0x6'));var querystring=require(_0xa15d('0xd'));var Papa=require(_0xa15d('0xe'));var Redis=require(_0xa15d('0xf'));var authService=require(_0xa15d('0x10'));var qs=require(_0xa15d('0x11'));var as=require(_0xa15d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa15d('0x13'))(_0xa15d('0x14'));var utils=require(_0xa15d('0x15'));var config=require(_0xa15d('0x16'));var licenseUtil=require(_0xa15d('0x17'));var db=require(_0xa15d('0x18'))['db'];config['redis']=_['defaults'](config[_0xa15d('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xa15d('0x1a'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0xa15d('0x1b')](socket);function respondWithStatusCode(_0xce4d51,_0x4a7856){_0x4a7856=_0x4a7856||0xcc;return function(_0x19578c){if(_0x19578c){return _0xce4d51['sendStatus'](_0x4a7856);}return _0xce4d51['status'](_0x4a7856)['end']();};}function respondWithResult(_0x2b4845,_0x4a0bea){_0x4a0bea=_0x4a0bea||0xc8;return function(_0x1e32ac){if(_0x1e32ac){return _0x2b4845[_0xa15d('0x1c')](_0x4a0bea)[_0xa15d('0x1d')](_0x1e32ac);}};}function respondWithFilteredResult(_0x45ebb0,_0x28a640){return function(_0xb353cb){if(_0xb353cb){var _0x2f1353=typeof _0x28a640[_0xa15d('0x1e')]===_0xa15d('0x1f')&&typeof _0x28a640['limit']===_0xa15d('0x1f');var _0x3753e3=_0xb353cb[_0xa15d('0x20')];var _0x5c9e6a=_0x2f1353?0x0:_0x28a640[_0xa15d('0x1e')];var _0x246152=_0x2f1353?_0xb353cb['count']:_0x28a640[_0xa15d('0x1e')]+_0x28a640[_0xa15d('0x21')];var _0x4dd7ca;if(_0x246152>=_0x3753e3){_0x246152=_0x3753e3;_0x4dd7ca=0xc8;}else{_0x4dd7ca=0xce;}_0x45ebb0[_0xa15d('0x1c')](_0x4dd7ca);return _0x45ebb0['set'](_0xa15d('0x22'),_0x5c9e6a+'-'+_0x246152+'/'+_0x3753e3)[_0xa15d('0x1d')](_0xb353cb);}return null;};}function patchUpdates(_0x2340f0){return function(_0x5c1827){try{jsonpatch[_0xa15d('0x23')](_0x5c1827,_0x2340f0,!![]);}catch(_0x5a386a){return BPromise[_0xa15d('0x24')](_0x5a386a);}return _0x5c1827[_0xa15d('0x25')]();};}function saveUpdates(_0x14ce9d,_0x1bf324){return function(_0x1132fb){if(_0x1132fb){return _0x1132fb['update'](_0x14ce9d)[_0xa15d('0x26')](function(_0x553025){return _0x553025;});}return null;};}function removeEntity(_0x33c9d4,_0x3ca0cf){return function(_0x2cfe62){if(_0x2cfe62){return _0x2cfe62[_0xa15d('0x27')]()[_0xa15d('0x26')](function(){var _0x589f83=_0x2cfe62[_0xa15d('0x28')]({'plain':!![]});var _0x42bed3=_0xa15d('0x29');return db[_0xa15d('0x2a')][_0xa15d('0x27')]({'where':{'type':_0x42bed3,'resourceId':_0x589f83['id']}})['then'](function(){return _0x2cfe62;});})[_0xa15d('0x26')](function(){_0x33c9d4[_0xa15d('0x1c')](0xcc)[_0xa15d('0x2b')]();});}};}function handleEntityNotFound(_0x3a60ae,_0x150b08){return function(_0x541d0e){if(!_0x541d0e){_0x3a60ae[_0xa15d('0x2c')](0x194);}return _0x541d0e;};}function handleError(_0x90829e,_0x2f8e2d){_0x2f8e2d=_0x2f8e2d||0x1f4;return function(_0x3d54bd){logger['error'](_0x3d54bd[_0xa15d('0x2d')]);if(_0x3d54bd[_0xa15d('0x2e')]){delete _0x3d54bd[_0xa15d('0x2e')];}_0x90829e['status'](_0x2f8e2d)[_0xa15d('0x2f')](_0x3d54bd);};}exports[_0xa15d('0x30')]=function(_0x5ba3a3,_0x37857f){var _0x115f19={},_0x36852e={},_0x4019b5={'count':0x0,'rows':[]};var _0x7d4dac=_[_0xa15d('0x31')](db[_0xa15d('0x32')]['rawAttributes'],function(_0x19e580){return{'name':_0x19e580[_0xa15d('0x33')],'type':_0x19e580['type'][_0xa15d('0x34')]};});_0x36852e[_0xa15d('0x35')]=_[_0xa15d('0x31')](_0x7d4dac,_0xa15d('0x2e'));_0x36852e[_0xa15d('0x36')]=_[_0xa15d('0x37')](_0x5ba3a3[_0xa15d('0x36')]);_0x36852e[_0xa15d('0x38')]=_[_0xa15d('0x39')](_0x36852e['model'],_0x36852e[_0xa15d('0x36')]);_0x115f19[_0xa15d('0x3a')]=_['intersection'](_0x36852e[_0xa15d('0x35')],qs[_0xa15d('0x3b')](_0x5ba3a3[_0xa15d('0x36')]['fields']));_0x115f19[_0xa15d('0x3a')]=_0x115f19[_0xa15d('0x3a')][_0xa15d('0x3c')]?_0x115f19['attributes']:_0x36852e[_0xa15d('0x35')];if(!_0x5ba3a3[_0xa15d('0x36')][_0xa15d('0x3d')](_0xa15d('0x3e'))){_0x115f19[_0xa15d('0x21')]=qs[_0xa15d('0x21')](_0x5ba3a3[_0xa15d('0x36')][_0xa15d('0x21')]);_0x115f19[_0xa15d('0x1e')]=qs[_0xa15d('0x1e')](_0x5ba3a3[_0xa15d('0x36')][_0xa15d('0x1e')]);}_0x115f19[_0xa15d('0x3f')]=qs[_0xa15d('0x40')](_0x5ba3a3['query'][_0xa15d('0x40')]);_0x115f19[_0xa15d('0x41')]=qs[_0xa15d('0x38')](_[_0xa15d('0x42')](_0x5ba3a3[_0xa15d('0x36')],_0x36852e[_0xa15d('0x38')]),_0x7d4dac);if(_0x5ba3a3['query'][_0xa15d('0x43')]){_0x115f19[_0xa15d('0x41')]=_[_0xa15d('0x44')](_0x115f19[_0xa15d('0x41')],{'$or':_['map'](_0x7d4dac,function(_0xd96a96){if(_0xd96a96[_0xa15d('0x45')]!==_0xa15d('0x46')){var _0x5b91dd={};_0x5b91dd[_0xd96a96[_0xa15d('0x2e')]]={'$like':'%'+_0x5ba3a3[_0xa15d('0x36')][_0xa15d('0x43')]+'%'};return _0x5b91dd;}})});}_0x115f19=_[_0xa15d('0x44')]({},_0x115f19,_0x5ba3a3[_0xa15d('0x47')]);var _0x1d971e={'where':_0x115f19[_0xa15d('0x41')]};return db[_0xa15d('0x32')][_0xa15d('0x20')](_0x1d971e)[_0xa15d('0x26')](function(_0x22fcf0){_0x4019b5['count']=_0x22fcf0;if(_0x5ba3a3['query']['includeAll']){_0x115f19[_0xa15d('0x48')]=[{'all':!![]}];}return db[_0xa15d('0x32')]['findAll'](_0x115f19);})[_0xa15d('0x26')](function(_0x59b1b4){_0x4019b5[_0xa15d('0x49')]=_0x59b1b4;return _0x4019b5;})['then'](respondWithFilteredResult(_0x37857f,_0x115f19))['catch'](handleError(_0x37857f,null));};exports[_0xa15d('0x4a')]=function(_0x41597f,_0x17676f){var _0x568aab={'raw':![],'where':{'id':_0x41597f['params']['id']}},_0x11c9b5={};_0x11c9b5[_0xa15d('0x35')]=_[_0xa15d('0x37')](db[_0xa15d('0x32')]['rawAttributes']);_0x11c9b5[_0xa15d('0x36')]=_[_0xa15d('0x37')](_0x41597f[_0xa15d('0x36')]);_0x11c9b5[_0xa15d('0x38')]=_['intersection'](_0x11c9b5['model'],_0x11c9b5['query']);_0x568aab[_0xa15d('0x3a')]=_[_0xa15d('0x39')](_0x11c9b5[_0xa15d('0x35')],qs[_0xa15d('0x3b')](_0x41597f[_0xa15d('0x36')]['fields']));_0x568aab[_0xa15d('0x3a')]=_0x568aab[_0xa15d('0x3a')][_0xa15d('0x3c')]?_0x568aab[_0xa15d('0x3a')]:_0x11c9b5['model'];if(_0x41597f[_0xa15d('0x36')][_0xa15d('0x4b')]){_0x568aab[_0xa15d('0x48')]=[{'all':!![]}];}_0x568aab=_['merge']({},_0x568aab,_0x41597f['options']);return db['VoicePrefix'][_0xa15d('0x4c')](_0x568aab)['then'](handleEntityNotFound(_0x17676f,null))[_0xa15d('0x26')](respondWithResult(_0x17676f,null))[_0xa15d('0x4d')](handleError(_0x17676f,null));};exports['destroy']=function(_0x34813f,_0x430ed5){return db[_0xa15d('0x32')][_0xa15d('0x4c')]({'where':{'id':_0x34813f['params']['id']}})[_0xa15d('0x26')](handleEntityNotFound(_0x430ed5,null))['then'](removeEntity(_0x430ed5,null))[_0xa15d('0x4d')](handleError(_0x430ed5,null));};exports[_0xa15d('0x4e')]=function(_0x38c274,_0x3e97db){return db['VoicePrefix'][_0xa15d('0x4e')]()['then'](respondWithResult(_0x3e97db,null))['catch'](handleError(_0x3e97db,null));};exports[_0xa15d('0x4f')]=function(_0x312527,_0x288b26){var _0x2a4ce7;return db[_0xa15d('0x50')][_0xa15d('0x51')](function(_0x17b809){return db[_0xa15d('0x32')][_0xa15d('0x4f')](_0x312527['body'],{'transaction':_0x17b809})[_0xa15d('0x26')](function(_0x59397c){_0x2a4ce7=_0x59397c[_0xa15d('0x28')]({'plain':!![]});return db[_0xa15d('0x52')][_0xa15d('0x4c')]({'where':{'id':_0x2a4ce7[_0xa15d('0x53')]},'raw':!![]})['then'](function(_0x378904){return createVoicePrefixExtensions(_0x2a4ce7,_0x378904,_0x17b809);});});})['then'](function(){var _0x50dcea=_0x312527[_0xa15d('0x54')][_0xa15d('0x28')]({'plain':!![]});if(!_0x50dcea)throw new Error(_0xa15d('0x55'));if(_0x50dcea['role']===_0xa15d('0x54')){var _0x58f1fb=_0x2a4ce7;return db[_0xa15d('0x56')][_0xa15d('0x4c')]({'where':{'name':_0xa15d('0x29'),'userProfileId':_0x50dcea['userProfileId']},'raw':!![]})['then'](function(_0x570500){if(_0x570500&&_0x570500[_0xa15d('0x57')]===0x0){return db['UserProfileResource'][_0xa15d('0x4f')]({'name':_0x58f1fb[_0xa15d('0x2e')],'resourceId':_0x58f1fb['id'],'type':_0x570500[_0xa15d('0x2e')],'sectionId':_0x570500['id']},{})[_0xa15d('0x26')](function(){return _0x2a4ce7;});}else{return _0x2a4ce7;}})[_0xa15d('0x4d')](function(_0x3094cc){logger[_0xa15d('0x58')](_0xa15d('0x59'),_0x3094cc);throw _0x3094cc;});}return _0x2a4ce7;})[_0xa15d('0x26')](respondWithResult(_0x288b26,null))[_0xa15d('0x4d')](handleError(_0x288b26,null));};function Extension(_0x57e250,_0x101a6c,_0xeaf7a5,_0x34e2d4){this['context']=_0xa15d('0x5a');this[_0xa15d('0x5b')]=_0x57e250;this[_0xa15d('0x5c')]=_0xeaf7a5;this['type']='system';this[_0xa15d('0x5d')]=_0xa15d('0x5e');this[_0xa15d('0x5f')]=_0x101a6c;this['appdata']=_0x34e2d4;}function createVoicePrefixExtensions(_0x46e45c,_0x41f14e,_0x4e27eb){return new BPromise(function(_0x45db09,_0xf54fc){var _0xbe32e0=new Extension(formatPrefixName(_0x46e45c[_0xa15d('0x60')]),0x1,_0xa15d('0x61'),_0xa15d('0x62'));_0xbe32e0[_0xa15d('0x63')]=_0x46e45c['id'];return db[_0xa15d('0x52')][_0xa15d('0x4f')](_0xbe32e0,{'transaction':_0x4e27eb})[_0xa15d('0x26')](function(_0x236bdc){var _0x5f2054=_0x236bdc[_0xa15d('0x28')]({'plain':!![]});var _0x32eab5=_['map'](addVoicePrefixExtensions(_0x46e45c,_0x41f14e),function(_0x2777f9){_0x2777f9[_0xa15d('0x53')]=_0x5f2054['id'];_0x2777f9['VoicePrefixId']=_0x46e45c['id'];return _0x2777f9;});return db[_0xa15d('0x52')][_0xa15d('0x64')](_0x32eab5,{'transaction':_0x4e27eb})[_0xa15d('0x26')](function(_0x10d3bd){if(!_0x10d3bd){return _0xf54fc(_0xa15d('0x65'));}else{return _0x45db09(_0x10d3bd);}})[_0xa15d('0x4d')](function(_0x33d7f0){return _0xf54fc(_0x33d7f0);});});;});};function addVoicePrefixExtensions(_0x2d6595,_0x4c05e5){var _0x51fa88=[];var _0x36d005=formatPrefixName(_0x2d6595['prefix']);_0x51fa88[_0xa15d('0x66')](new Extension(_0x36d005,0x2,_0xa15d('0x67'),_0xa15d('0x68')+_0x2d6595[_0xa15d('0x2e')]));if(_0x2d6595[_0xa15d('0x69')]){_0x51fa88[_0xa15d('0x66')](new Extension(_0x36d005,0x3,'Set',_0xa15d('0x6a')+_0x2d6595[_0xa15d('0x69')]));}else{_0x51fa88['push'](new Extension(_0x36d005,0x3,_0xa15d('0x61'),'No\x20callerid\x20available'));}_0x51fa88['push'](new Extension(_0x36d005,0x4,_0xa15d('0x6b'),_0x4c05e5['context']+','+_0xa15d('0x6c')+(0x8+_0x2d6595['name'][_0xa15d('0x3c')])+'}'+','+0x1));return _0x51fa88;}function formatPrefixName(_0xa3f91d){var _0x5eacb8='_';for(var _0x5885b7=0x0;_0x5885b7<_0xa3f91d[_0xa15d('0x3c')];_0x5885b7++){if(_0xa3f91d[_0xa15d('0x6d')](_0x5885b7)=='-'){_0x5eacb8+=_0xa3f91d[_0xa15d('0x6d')](_0x5885b7);}else{_0x5eacb8+='['+_0xa3f91d['charAt'](_0x5885b7)+']';}}_0x5eacb8+='.';return _0x5eacb8;}exports['update']=function(_0x4f319e,_0x506372,_0x2f6c1b){var _0x21ef3f=_0x4f319e[_0xa15d('0x6e')];_0x21ef3f[_0xa15d('0x60')]='system-'+_0x21ef3f[_0xa15d('0x2e')]+'-';return db[_0xa15d('0x50')][_0xa15d('0x51')](function(_0x35a2e4){return db[_0xa15d('0x32')][_0xa15d('0x6f')](_0x21ef3f,{'where':{'id':_0x21ef3f['id']},'transaction':_0x35a2e4})[_0xa15d('0x26')](function(){return db[_0xa15d('0x52')]['destroy']({'where':{'VoicePrefixId':_0x21ef3f['id']},'transaction':_0x35a2e4})[_0xa15d('0x26')](function(){return db[_0xa15d('0x52')]['find']({'where':{'id':_0x21ef3f[_0xa15d('0x53')]},'raw':!![]})[_0xa15d('0x26')](function(_0x542d58){return createVoicePrefixExtensions(_0x21ef3f,_0x542d58,_0x35a2e4);});});});})[_0xa15d('0x26')](function(){return db[_0xa15d('0x32')][_0xa15d('0x70')](_0x21ef3f['id']);})[_0xa15d('0x26')](respondWithResult(_0x506372,null))['catch'](handleError(_0x506372,null));};exports[_0xa15d('0x71')]=function(_0x424884,_0x1ac849,_0x1966ac){return db['VoicePrefix'][_0xa15d('0x4c')]({'where':{'id':_0x424884[_0xa15d('0x72')]['id']}})['then'](handleEntityNotFound(_0x1ac849,null))[_0xa15d('0x26')](function(_0x405a7a){if(_0x405a7a){return _0x405a7a['addAgents'](_0x424884[_0xa15d('0x6e')][_0xa15d('0x73')],_['omit'](_0x424884[_0xa15d('0x6e')],[_0xa15d('0x73'),'id'])||{})[_0xa15d('0x74')](function(_0x130eb2){for(var _0x4eef34=0x0;_0x4eef34<_0x424884[_0xa15d('0x6e')][_0xa15d('0x73')][_0xa15d('0x3c')];_0x4eef34+=0x1){socket[_0xa15d('0x75')](_0xa15d('0x76'),{'UserId':Number(_0x424884[_0xa15d('0x6e')][_0xa15d('0x73')][_0x4eef34]),'VoicePrefixId':Number(_0x424884[_0xa15d('0x72')]['id'])});}return _0x130eb2;});}})[_0xa15d('0x26')](respondWithResult(_0x1ac849,null))[_0xa15d('0x4d')](handleError(_0x1ac849,null));};exports['removeAgents']=function(_0xde4b25,_0x1e25ee,_0x1638c4){return db[_0xa15d('0x32')][_0xa15d('0x4c')]({'where':{'id':_0xde4b25[_0xa15d('0x72')]['id']}})[_0xa15d('0x26')](handleEntityNotFound(_0x1e25ee,null))['then'](function(_0x6c62ac){if(_0x6c62ac){return _0x6c62ac[_0xa15d('0x77')](_0xde4b25[_0xa15d('0x36')]['ids'])[_0xa15d('0x26')](function(){if(_['isArray'](_0xde4b25[_0xa15d('0x36')][_0xa15d('0x73')])){for(var _0x4ea3ce=0x0;_0x4ea3ce<_0xde4b25[_0xa15d('0x36')][_0xa15d('0x73')][_0xa15d('0x3c')];_0x4ea3ce+=0x1){socket[_0xa15d('0x75')](_0xa15d('0x78'),{'UserId':Number(_0xde4b25['query'][_0xa15d('0x73')][_0x4ea3ce]),'VoicePrefixId':Number(_0xde4b25[_0xa15d('0x72')]['id'])});}}else{socket[_0xa15d('0x75')](_0xa15d('0x78'),{'UserId':Number(_0xde4b25[_0xa15d('0x36')][_0xa15d('0x73')]),'VoicePrefixId':Number(_0xde4b25[_0xa15d('0x72')]['id'])});}});}})[_0xa15d('0x26')](respondWithStatusCode(_0x1e25ee,null))[_0xa15d('0x4d')](handleError(_0x1e25ee,null));};exports['getAgents']=function(_0x4a1da2,_0x2e3330,_0x4bfd71){var _0x12ba73={};var _0x2c46af={};var _0x16f4d6;var _0x34003d;return db['VoicePrefix'][_0xa15d('0x79')]({'where':{'id':_0x4a1da2['params']['id']}})[_0xa15d('0x26')](handleEntityNotFound(_0x2e3330,null))[_0xa15d('0x26')](function(_0x28a510){if(_0x28a510){_0x16f4d6=_0x28a510;_0x2c46af[_0xa15d('0x35')]=_['keys'](db['User'][_0xa15d('0x7a')]);_0x2c46af['query']=_[_0xa15d('0x37')](_0x4a1da2[_0xa15d('0x36')]);_0x2c46af[_0xa15d('0x38')]=_[_0xa15d('0x39')](_0x2c46af[_0xa15d('0x35')],_0x2c46af[_0xa15d('0x36')]);_0x12ba73[_0xa15d('0x3a')]=_[_0xa15d('0x39')](_0x2c46af['model'],qs['fields'](_0x4a1da2['query']['fields']));_0x12ba73[_0xa15d('0x3a')]=_0x12ba73['attributes'][_0xa15d('0x3c')]?_0x12ba73['attributes']:_0x2c46af['model'];_0x12ba73[_0xa15d('0x3f')]=qs['sort'](_0x4a1da2['query'][_0xa15d('0x40')]);_0x12ba73[_0xa15d('0x41')]=qs['filters'](_[_0xa15d('0x42')](_0x4a1da2[_0xa15d('0x36')],_0x2c46af[_0xa15d('0x38')]));if(_0x4a1da2['query'][_0xa15d('0x43')]){_0x12ba73['where']=_[_0xa15d('0x44')](_0x12ba73[_0xa15d('0x41')],{'$or':_['map'](_0x12ba73[_0xa15d('0x3a')],function(_0x30f339){var _0x39f0e7={};_0x39f0e7[_0x30f339]={'$like':'%'+_0x4a1da2[_0xa15d('0x36')][_0xa15d('0x43')]+'%'};return _0x39f0e7;})});}_0x12ba73=_[_0xa15d('0x44')]({},_0x12ba73,_0x4a1da2[_0xa15d('0x47')]);return _0x16f4d6[_0xa15d('0x7b')](_0x12ba73);}})[_0xa15d('0x26')](function(_0x48fd22){if(_0x48fd22){_0x34003d=_0x48fd22[_0xa15d('0x3c')];if(!_0x4a1da2[_0xa15d('0x36')]['hasOwnProperty'](_0xa15d('0x3e'))){_0x12ba73[_0xa15d('0x21')]=qs[_0xa15d('0x21')](_0x4a1da2[_0xa15d('0x36')][_0xa15d('0x21')]);_0x12ba73[_0xa15d('0x1e')]=qs['offset'](_0x4a1da2[_0xa15d('0x36')][_0xa15d('0x1e')]);}return _0x16f4d6[_0xa15d('0x7b')](_0x12ba73);}})[_0xa15d('0x26')](function(_0x325ecd){if(_0x325ecd){return _0x325ecd?{'count':_0x34003d,'rows':_0x325ecd}:null;}})[_0xa15d('0x26')](respondWithResult(_0x2e3330,null))[_0xa15d('0x4d')](handleError(_0x2e3330,null));};
\ No newline at end of file
+var _0x5074=['mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','localhost','./voicePrefix.socket','register','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','get','VoicePrefixes','UserProfileResource','end','sendStatus','error','stack','name','send','index','map','VoicePrefix','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','intersection','options','find','params','describe','create','body','VoiceExtension','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','system','description','priority','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtensionId','push','Set','CDR(prefix)=','callerIdAll','PREFIX-CALLERIDALL=','goto','charAt','system-','sequelize','transaction','addAgents','ids','omit','spread','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','findOne','User','getAgents','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x5074,0x1e7));var _0x4507=function(_0x4d21ff,_0x19d202){_0x4d21ff=_0x4d21ff-0x0;var _0x22b554=_0x5074[_0x4d21ff];return _0x22b554;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4507('0x0'));var zipdir=require(_0x4507('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4507('0x2'));var moment=require(_0x4507('0x3'));var BPromise=require(_0x4507('0x4'));var Mustache=require(_0x4507('0x5'));var util=require(_0x4507('0x6'));var path=require(_0x4507('0x7'));var sox=require(_0x4507('0x8'));var csv=require(_0x4507('0x9'));var ejs=require(_0x4507('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4507('0xb'));var squel=require('squel');var crypto=require(_0x4507('0xc'));var jsforce=require(_0x4507('0xd'));var deskjs=require(_0x4507('0xe'));var toCsv=require(_0x4507('0x9'));var querystring=require('querystring');var Papa=require(_0x4507('0xf'));var Redis=require(_0x4507('0x10'));var authService=require(_0x4507('0x11'));var qs=require(_0x4507('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4507('0x13'));var logger=require(_0x4507('0x14'))(_0x4507('0x15'));var utils=require('../../config/utils');var config=require(_0x4507('0x16'));var licenseUtil=require(_0x4507('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x4507('0x18')](config['redis'],{'host':_0x4507('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4507('0x1a'))[_0x4507('0x1b')](socket);function respondWithStatusCode(_0x278fe5,_0x321e22){_0x321e22=_0x321e22||0xcc;return function(_0x5dc597){if(_0x5dc597){return _0x278fe5['sendStatus'](_0x321e22);}return _0x278fe5[_0x4507('0x1c')](_0x321e22)['end']();};}function respondWithResult(_0x3d95b1,_0x1fae22){_0x1fae22=_0x1fae22||0xc8;return function(_0x54dcbc){if(_0x54dcbc){return _0x3d95b1[_0x4507('0x1c')](_0x1fae22)['json'](_0x54dcbc);}};}function respondWithFilteredResult(_0x2f189c,_0x39cc32){return function(_0x2535a0){if(_0x2535a0){var _0x562eb5=typeof _0x39cc32[_0x4507('0x1d')]===_0x4507('0x1e')&&typeof _0x39cc32[_0x4507('0x1f')]===_0x4507('0x1e');var _0x16261c=_0x2535a0[_0x4507('0x20')];var _0x14de57=_0x562eb5?0x0:_0x39cc32[_0x4507('0x1d')];var _0x5b6d97=_0x562eb5?_0x2535a0['count']:_0x39cc32[_0x4507('0x1d')]+_0x39cc32[_0x4507('0x1f')];var _0x185e00;if(_0x5b6d97>=_0x16261c){_0x5b6d97=_0x16261c;_0x185e00=0xc8;}else{_0x185e00=0xce;}_0x2f189c[_0x4507('0x1c')](_0x185e00);return _0x2f189c[_0x4507('0x21')](_0x4507('0x22'),_0x14de57+'-'+_0x5b6d97+'/'+_0x16261c)[_0x4507('0x23')](_0x2535a0);}return null;};}function patchUpdates(_0x178765){return function(_0x38441f){try{jsonpatch[_0x4507('0x24')](_0x38441f,_0x178765,!![]);}catch(_0x17a74b){return BPromise[_0x4507('0x25')](_0x17a74b);}return _0x38441f[_0x4507('0x26')]();};}function saveUpdates(_0x5f3d8b,_0x37df0b){return function(_0x12b177){if(_0x12b177){return _0x12b177[_0x4507('0x27')](_0x5f3d8b)[_0x4507('0x28')](function(_0x208dc8){return _0x208dc8;});}return null;};}function removeEntity(_0x27bf2f,_0x5ee73d){return function(_0x2439ba){if(_0x2439ba){return _0x2439ba[_0x4507('0x29')]()['then'](function(){var _0x54fd64=_0x2439ba[_0x4507('0x2a')]({'plain':!![]});var _0x252ce8=_0x4507('0x2b');return db[_0x4507('0x2c')]['destroy']({'where':{'type':_0x252ce8,'resourceId':_0x54fd64['id']}})[_0x4507('0x28')](function(){return _0x2439ba;});})['then'](function(){_0x27bf2f[_0x4507('0x1c')](0xcc)[_0x4507('0x2d')]();});}};}function handleEntityNotFound(_0x44651b,_0x335fd0){return function(_0x5df3f1){if(!_0x5df3f1){_0x44651b[_0x4507('0x2e')](0x194);}return _0x5df3f1;};}function handleError(_0x49d908,_0x229bc0){_0x229bc0=_0x229bc0||0x1f4;return function(_0x8f91f3){logger[_0x4507('0x2f')](_0x8f91f3[_0x4507('0x30')]);if(_0x8f91f3[_0x4507('0x31')]){delete _0x8f91f3[_0x4507('0x31')];}_0x49d908['status'](_0x229bc0)[_0x4507('0x32')](_0x8f91f3);};}exports[_0x4507('0x33')]=function(_0x52b331,_0x5d4b58){var _0x15a679={},_0x4b1414={},_0x6e346c={'count':0x0,'rows':[]};var _0xd50764=_[_0x4507('0x34')](db[_0x4507('0x35')][_0x4507('0x36')],function(_0x4b4e60){return{'name':_0x4b4e60[_0x4507('0x37')],'type':_0x4b4e60[_0x4507('0x38')][_0x4507('0x39')]};});_0x4b1414['model']=_[_0x4507('0x34')](_0xd50764,'name');_0x4b1414[_0x4507('0x3a')]=_[_0x4507('0x3b')](_0x52b331[_0x4507('0x3a')]);_0x4b1414[_0x4507('0x3c')]=_['intersection'](_0x4b1414[_0x4507('0x3d')],_0x4b1414[_0x4507('0x3a')]);_0x15a679[_0x4507('0x3e')]=_['intersection'](_0x4b1414[_0x4507('0x3d')],qs[_0x4507('0x3f')](_0x52b331[_0x4507('0x3a')][_0x4507('0x3f')]));_0x15a679[_0x4507('0x3e')]=_0x15a679[_0x4507('0x3e')][_0x4507('0x40')]?_0x15a679[_0x4507('0x3e')]:_0x4b1414[_0x4507('0x3d')];if(!_0x52b331[_0x4507('0x3a')][_0x4507('0x41')](_0x4507('0x42'))){_0x15a679[_0x4507('0x1f')]=qs[_0x4507('0x1f')](_0x52b331[_0x4507('0x3a')][_0x4507('0x1f')]);_0x15a679['offset']=qs[_0x4507('0x1d')](_0x52b331[_0x4507('0x3a')][_0x4507('0x1d')]);}_0x15a679[_0x4507('0x43')]=qs[_0x4507('0x44')](_0x52b331[_0x4507('0x3a')]['sort']);_0x15a679[_0x4507('0x45')]=qs[_0x4507('0x3c')](_[_0x4507('0x46')](_0x52b331[_0x4507('0x3a')],_0x4b1414[_0x4507('0x3c')]),_0xd50764);if(_0x52b331[_0x4507('0x3a')][_0x4507('0x47')]){_0x15a679[_0x4507('0x45')]=_[_0x4507('0x48')](_0x15a679[_0x4507('0x45')],{'$or':_[_0x4507('0x34')](_0xd50764,function(_0x38c513){if(_0x38c513[_0x4507('0x38')]!==_0x4507('0x49')){var _0x34c830={};_0x34c830[_0x38c513[_0x4507('0x31')]]={'$like':'%'+_0x52b331[_0x4507('0x3a')][_0x4507('0x47')]+'%'};return _0x34c830;}})});}_0x15a679=_[_0x4507('0x48')]({},_0x15a679,_0x52b331['options']);var _0x42e477={'where':_0x15a679['where']};return db[_0x4507('0x35')]['count'](_0x42e477)[_0x4507('0x28')](function(_0x1a0c1f){_0x6e346c['count']=_0x1a0c1f;if(_0x52b331[_0x4507('0x3a')][_0x4507('0x4a')]){_0x15a679[_0x4507('0x4b')]=[{'all':!![]}];}return db[_0x4507('0x35')][_0x4507('0x4c')](_0x15a679);})[_0x4507('0x28')](function(_0x45041b){_0x6e346c['rows']=_0x45041b;return _0x6e346c;})[_0x4507('0x28')](respondWithFilteredResult(_0x5d4b58,_0x15a679))[_0x4507('0x4d')](handleError(_0x5d4b58,null));};exports['show']=function(_0x5d3512,_0x13e9f5){var _0xde9cd8={'raw':![],'where':{'id':_0x5d3512['params']['id']}},_0x2f6738={};_0x2f6738[_0x4507('0x3d')]=_['keys'](db[_0x4507('0x35')]['rawAttributes']);_0x2f6738['query']=_[_0x4507('0x3b')](_0x5d3512[_0x4507('0x3a')]);_0x2f6738[_0x4507('0x3c')]=_[_0x4507('0x4e')](_0x2f6738[_0x4507('0x3d')],_0x2f6738[_0x4507('0x3a')]);_0xde9cd8['attributes']=_[_0x4507('0x4e')](_0x2f6738['model'],qs[_0x4507('0x3f')](_0x5d3512['query'][_0x4507('0x3f')]));_0xde9cd8[_0x4507('0x3e')]=_0xde9cd8[_0x4507('0x3e')][_0x4507('0x40')]?_0xde9cd8[_0x4507('0x3e')]:_0x2f6738[_0x4507('0x3d')];if(_0x5d3512[_0x4507('0x3a')][_0x4507('0x4a')]){_0xde9cd8[_0x4507('0x4b')]=[{'all':!![]}];}_0xde9cd8=_[_0x4507('0x48')]({},_0xde9cd8,_0x5d3512[_0x4507('0x4f')]);return db[_0x4507('0x35')][_0x4507('0x50')](_0xde9cd8)[_0x4507('0x28')](handleEntityNotFound(_0x13e9f5,null))[_0x4507('0x28')](respondWithResult(_0x13e9f5,null))[_0x4507('0x4d')](handleError(_0x13e9f5,null));};exports[_0x4507('0x29')]=function(_0x5c2131,_0x26ec02){return db[_0x4507('0x35')][_0x4507('0x50')]({'where':{'id':_0x5c2131[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0x26ec02,null))[_0x4507('0x28')](removeEntity(_0x26ec02,null))['catch'](handleError(_0x26ec02,null));};exports['describe']=function(_0x21211e,_0x3e11a4){return db['VoicePrefix'][_0x4507('0x52')]()[_0x4507('0x28')](respondWithResult(_0x3e11a4,null))[_0x4507('0x4d')](handleError(_0x3e11a4,null));};exports[_0x4507('0x53')]=function(_0x5136a9,_0xd82d8d){var _0x5d4354;return db['sequelize']['transaction'](function(_0x495ed5){return db[_0x4507('0x35')][_0x4507('0x53')](_0x5136a9[_0x4507('0x54')],{'transaction':_0x495ed5})[_0x4507('0x28')](function(_0x165683){_0x5d4354=_0x165683[_0x4507('0x2a')]({'plain':!![]});return db[_0x4507('0x55')][_0x4507('0x50')]({'where':{'id':_0x5d4354['VoiceExtensionId']},'raw':!![]})[_0x4507('0x28')](function(_0x5c219a){return createVoicePrefixExtensions(_0x5d4354,_0x5c219a,_0x495ed5);});});})[_0x4507('0x28')](function(){var _0x36081a=_0x5136a9['user']['get']({'plain':!![]});if(!_0x36081a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36081a[_0x4507('0x56')]===_0x4507('0x57')){var _0x2dc9e7=_0x5d4354;return db[_0x4507('0x58')][_0x4507('0x50')]({'where':{'name':'VoicePrefixes','userProfileId':_0x36081a[_0x4507('0x59')]},'raw':!![]})[_0x4507('0x28')](function(_0x2af2d8){if(_0x2af2d8&&_0x2af2d8['autoAssociation']===0x0){return db['UserProfileResource'][_0x4507('0x53')]({'name':_0x2dc9e7['name'],'resourceId':_0x2dc9e7['id'],'type':_0x2af2d8[_0x4507('0x31')],'sectionId':_0x2af2d8['id']},{})[_0x4507('0x28')](function(){return _0x5d4354;});}else{return _0x5d4354;}})[_0x4507('0x4d')](function(_0x4f96b7){logger[_0x4507('0x2f')](_0x4507('0x5a'),_0x4f96b7);throw _0x4f96b7;});}return _0x5d4354;})['then'](respondWithResult(_0xd82d8d,null))['catch'](handleError(_0xd82d8d,null));};function Extension(_0x22f818,_0x10dc47,_0x6e3e23,_0x4dfedd){this['context']=_0x4507('0x5b');this[_0x4507('0x5c')]=_0x22f818;this[_0x4507('0x5d')]=_0x6e3e23;this[_0x4507('0x38')]=_0x4507('0x5e');this[_0x4507('0x5f')]='Voice\x20Prefix\x20Extension';this[_0x4507('0x60')]=_0x10dc47;this['appdata']=_0x4dfedd;}function createVoicePrefixExtensions(_0xac0e54,_0x1dd12f,_0x12c104){return new BPromise(function(_0xec17f1,_0x4b512e){var _0x575f7c=new Extension(formatPrefixName(_0xac0e54[_0x4507('0x61')]),0x1,_0x4507('0x62'),_0x4507('0x63'));_0x575f7c[_0x4507('0x64')]=_0xac0e54['id'];return db['VoiceExtension'][_0x4507('0x53')](_0x575f7c,{'transaction':_0x12c104})[_0x4507('0x28')](function(_0x4b562d){var _0x1338ce=_0x4b562d[_0x4507('0x2a')]({'plain':!![]});var _0xd83447=_[_0x4507('0x34')](addVoicePrefixExtensions(_0xac0e54,_0x1dd12f),function(_0x4f84a7){_0x4f84a7[_0x4507('0x65')]=_0x1338ce['id'];_0x4f84a7[_0x4507('0x64')]=_0xac0e54['id'];return _0x4f84a7;});return db[_0x4507('0x55')]['bulkCreate'](_0xd83447,{'transaction':_0x12c104})['then'](function(_0x2889aa){if(!_0x2889aa){return _0x4b512e('Extensions\x20creation\x20failed');}else{return _0xec17f1(_0x2889aa);}})[_0x4507('0x4d')](function(_0xbc273a){return _0x4b512e(_0xbc273a);});});;});};function addVoicePrefixExtensions(_0x69dbeb,_0x2d1dfd){var _0x30229d=[];var _0x334dce=formatPrefixName(_0x69dbeb['prefix']);_0x30229d[_0x4507('0x66')](new Extension(_0x334dce,0x2,_0x4507('0x67'),_0x4507('0x68')+_0x69dbeb[_0x4507('0x31')]));if(_0x69dbeb[_0x4507('0x69')]){_0x30229d[_0x4507('0x66')](new Extension(_0x334dce,0x3,_0x4507('0x67'),_0x4507('0x6a')+_0x69dbeb[_0x4507('0x69')]));}else{_0x30229d['push'](new Extension(_0x334dce,0x3,'NoOp','No\x20callerid\x20available'));}_0x30229d[_0x4507('0x66')](new Extension(_0x334dce,0x4,_0x4507('0x6b'),_0x2d1dfd['context']+','+'${EXTEN:'+(0x8+_0x69dbeb[_0x4507('0x31')]['length'])+'}'+','+0x1));return _0x30229d;}function formatPrefixName(_0x5eb699){var _0x151924='_';for(var _0x37e235=0x0;_0x37e235<_0x5eb699[_0x4507('0x40')];_0x37e235++){if(_0x5eb699[_0x4507('0x6c')](_0x37e235)=='-'){_0x151924+=_0x5eb699['charAt'](_0x37e235);}else{_0x151924+='['+_0x5eb699[_0x4507('0x6c')](_0x37e235)+']';}}_0x151924+='.';return _0x151924;}exports[_0x4507('0x27')]=function(_0x43a355,_0x5a42a3,_0x528208){var _0x47b51a=_0x43a355[_0x4507('0x54')];_0x47b51a[_0x4507('0x61')]=_0x4507('0x6d')+_0x47b51a[_0x4507('0x31')]+'-';return db[_0x4507('0x6e')][_0x4507('0x6f')](function(_0x505c60){return db[_0x4507('0x35')][_0x4507('0x27')](_0x47b51a,{'where':{'id':_0x47b51a['id']},'transaction':_0x505c60})[_0x4507('0x28')](function(){return db[_0x4507('0x55')][_0x4507('0x29')]({'where':{'VoicePrefixId':_0x47b51a['id']},'transaction':_0x505c60})[_0x4507('0x28')](function(){return db[_0x4507('0x55')][_0x4507('0x50')]({'where':{'id':_0x47b51a[_0x4507('0x65')]},'raw':!![]})[_0x4507('0x28')](function(_0x1b5511){return createVoicePrefixExtensions(_0x47b51a,_0x1b5511,_0x505c60);});});});})[_0x4507('0x28')](function(){return db[_0x4507('0x35')]['findById'](_0x47b51a['id']);})[_0x4507('0x28')](respondWithResult(_0x5a42a3,null))[_0x4507('0x4d')](handleError(_0x5a42a3,null));};exports[_0x4507('0x70')]=function(_0x32c640,_0x1962a1,_0x4606ba){return db[_0x4507('0x35')][_0x4507('0x50')]({'where':{'id':_0x32c640[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0x1962a1,null))[_0x4507('0x28')](function(_0x36d0dc){if(_0x36d0dc){return _0x36d0dc[_0x4507('0x70')](_0x32c640['body'][_0x4507('0x71')],_[_0x4507('0x72')](_0x32c640['body'],[_0x4507('0x71'),'id'])||{})[_0x4507('0x73')](function(_0x153cef){for(var _0x756424=0x0;_0x756424<_0x32c640[_0x4507('0x54')]['ids'][_0x4507('0x40')];_0x756424+=0x1){socket[_0x4507('0x74')](_0x4507('0x75'),{'UserId':Number(_0x32c640[_0x4507('0x54')][_0x4507('0x71')][_0x756424]),'VoicePrefixId':Number(_0x32c640[_0x4507('0x51')]['id'])});}return _0x153cef;});}})[_0x4507('0x28')](respondWithResult(_0x1962a1,null))['catch'](handleError(_0x1962a1,null));};exports['removeAgents']=function(_0x25385a,_0xe3e800,_0x345a7b){return db[_0x4507('0x35')][_0x4507('0x50')]({'where':{'id':_0x25385a[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0xe3e800,null))['then'](function(_0x3dd2cb){if(_0x3dd2cb){return _0x3dd2cb[_0x4507('0x76')](_0x25385a[_0x4507('0x3a')][_0x4507('0x71')])[_0x4507('0x28')](function(){if(_['isArray'](_0x25385a['query'][_0x4507('0x71')])){for(var _0xadaac9=0x0;_0xadaac9<_0x25385a[_0x4507('0x3a')][_0x4507('0x71')][_0x4507('0x40')];_0xadaac9+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x25385a['query'][_0x4507('0x71')][_0xadaac9]),'VoicePrefixId':Number(_0x25385a[_0x4507('0x51')]['id'])});}}else{socket[_0x4507('0x74')](_0x4507('0x77'),{'UserId':Number(_0x25385a['query'][_0x4507('0x71')]),'VoicePrefixId':Number(_0x25385a[_0x4507('0x51')]['id'])});}});}})[_0x4507('0x28')](respondWithStatusCode(_0xe3e800,null))[_0x4507('0x4d')](handleError(_0xe3e800,null));};exports['getAgents']=function(_0x492444,_0x3331b1,_0x1eb80f){var _0x2a0287={};var _0x188ef7={};var _0x2a3155;var _0x5eaa09;return db['VoicePrefix'][_0x4507('0x78')]({'where':{'id':_0x492444[_0x4507('0x51')]['id']}})[_0x4507('0x28')](handleEntityNotFound(_0x3331b1,null))[_0x4507('0x28')](function(_0x2e7658){if(_0x2e7658){_0x2a3155=_0x2e7658;_0x188ef7[_0x4507('0x3d')]=_['keys'](db[_0x4507('0x79')]['rawAttributes']);_0x188ef7['query']=_[_0x4507('0x3b')](_0x492444[_0x4507('0x3a')]);_0x188ef7['filters']=_[_0x4507('0x4e')](_0x188ef7[_0x4507('0x3d')],_0x188ef7[_0x4507('0x3a')]);_0x2a0287['attributes']=_[_0x4507('0x4e')](_0x188ef7['model'],qs[_0x4507('0x3f')](_0x492444[_0x4507('0x3a')][_0x4507('0x3f')]));_0x2a0287[_0x4507('0x3e')]=_0x2a0287['attributes'][_0x4507('0x40')]?_0x2a0287[_0x4507('0x3e')]:_0x188ef7[_0x4507('0x3d')];_0x2a0287[_0x4507('0x43')]=qs['sort'](_0x492444['query'][_0x4507('0x44')]);_0x2a0287[_0x4507('0x45')]=qs['filters'](_[_0x4507('0x46')](_0x492444['query'],_0x188ef7[_0x4507('0x3c')]));if(_0x492444[_0x4507('0x3a')][_0x4507('0x47')]){_0x2a0287['where']=_[_0x4507('0x48')](_0x2a0287[_0x4507('0x45')],{'$or':_[_0x4507('0x34')](_0x2a0287[_0x4507('0x3e')],function(_0x7f96b){var _0x211b4d={};_0x211b4d[_0x7f96b]={'$like':'%'+_0x492444[_0x4507('0x3a')][_0x4507('0x47')]+'%'};return _0x211b4d;})});}_0x2a0287=_[_0x4507('0x48')]({},_0x2a0287,_0x492444['options']);return _0x2a3155['getAgents'](_0x2a0287);}})[_0x4507('0x28')](function(_0x580a41){if(_0x580a41){_0x5eaa09=_0x580a41[_0x4507('0x40')];if(!_0x492444[_0x4507('0x3a')]['hasOwnProperty']('nolimit')){_0x2a0287[_0x4507('0x1f')]=qs[_0x4507('0x1f')](_0x492444[_0x4507('0x3a')][_0x4507('0x1f')]);_0x2a0287[_0x4507('0x1d')]=qs[_0x4507('0x1d')](_0x492444[_0x4507('0x3a')]['offset']);}return _0x2a3155[_0x4507('0x7a')](_0x2a0287);}})['then'](function(_0x55eaf2){if(_0x55eaf2){return _0x55eaf2?{'count':_0x5eaa09,'rows':_0x55eaf2}:null;}})[_0x4507('0x28')](respondWithResult(_0x3331b1,null))['catch'](handleError(_0x3331b1,null));};
\ No newline at end of file
index 0155209..b9f05d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc76=['remove','emit','hasOwnProperty','events','../../mysqldb','VoicePrefix','save'];(function(_0x3cb7e8,_0xb8f77){var _0x72798f=function(_0x114662){while(--_0x114662){_0x3cb7e8['push'](_0x3cb7e8['shift']());}};_0x72798f(++_0xb8f77);}(_0xdc76,0x106));var _0x6dc7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xdc76[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require(_0x6dc7('0x0'));var VoicePrefix=require(_0x6dc7('0x1'))['db'][_0x6dc7('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6dc7('0x3'),'afterUpdate':'update','afterDestroy':_0x6dc7('0x4')};function emitEvent(_0x31c72d){return function(_0x503788,_0x14830a,_0x50984d){VoicePrefixEvents['emit'](_0x31c72d+':'+_0x503788['id'],_0x503788);VoicePrefixEvents[_0x6dc7('0x5')](_0x31c72d,_0x503788);_0x50984d(null);};}for(var e in events){if(events[_0x6dc7('0x6')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xb13c=['emit','hasOwnProperty','hook','exports','events','VoicePrefix','remove'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xb13c,0x177));var _0xcb13=function(_0x381379,_0x3f3b86){_0x381379=_0x381379-0x0;var _0x3e1063=_0xb13c[_0x381379];return _0x3e1063;};'use strict';var EventEmitter=require(_0xcb13('0x0'));var VoicePrefix=require('../../mysqldb')['db'][_0xcb13('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xcb13('0x2')};function emitEvent(_0x388738){return function(_0x22de13,_0x9cec9e,_0x399ffd){VoicePrefixEvents[_0xcb13('0x3')](_0x388738+':'+_0x22de13['id'],_0x22de13);VoicePrefixEvents[_0xcb13('0x3')](_0x388738,_0x22de13);_0x399ffd(null);};}for(var e in events){if(events[_0xcb13('0x4')](e)){var event=events[e];VoicePrefix[_0xcb13('0x5')](e,emitEvent(event));}}module[_0xcb13('0x6')]=VoicePrefixEvents;
\ No newline at end of file
index 06b3757..7cd3fd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x085b=['define','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','api','request-promise','path','../../config/environment','./voicePrefix.attributes','exports'];(function(_0x2fbb2b,_0x2de99d){var _0x56a823=function(_0xe5e446){while(--_0xe5e446){_0x2fbb2b['push'](_0x2fbb2b['shift']());}};_0x56a823(++_0x2de99d);}(_0x085b,0x1a7));var _0xb085=function(_0x24940d,_0x334b24){_0x24940d=_0x24940d-0x0;var _0x1d5ea2=_0x085b[_0x24940d];return _0x1d5ea2;};'use strict';var _=require(_0xb085('0x0'));var util=require(_0xb085('0x1'));var logger=require(_0xb085('0x2'))(_0xb085('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb085('0x4'));var fs=require('fs');var path=require(_0xb085('0x5'));var rimraf=require('rimraf');var config=require(_0xb085('0x6'));var attributes=require(_0xb085('0x7'));module[_0xb085('0x8')]=function(_0xed619b,_0x53a61a){return _0xed619b[_0xb085('0x9')](_0xb085('0xa'),attributes,{'tableName':_0xb085('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7207=['exports','VoicePrefix','voice_prefixes','lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./voicePrefix.attributes'];(function(_0x464e74,_0x583c17){var _0x439c03=function(_0x5069b7){while(--_0x5069b7){_0x464e74['push'](_0x464e74['shift']());}};_0x439c03(++_0x583c17);}(_0x7207,0x1cb));var _0x7720=function(_0x385ad0,_0x6a5e24){_0x385ad0=_0x385ad0-0x0;var _0x2285d4=_0x7207[_0x385ad0];return _0x2285d4;};'use strict';var _=require(_0x7720('0x0'));var util=require(_0x7720('0x1'));var logger=require(_0x7720('0x2'))('api');var moment=require(_0x7720('0x3'));var BPromise=require('bluebird');var rp=require(_0x7720('0x4'));var fs=require('fs');var path=require(_0x7720('0x5'));var rimraf=require(_0x7720('0x6'));var config=require(_0x7720('0x7'));var attributes=require(_0x7720('0x8'));module[_0x7720('0x9')]=function(_0x918cac,_0x19e113){return _0x918cac['define'](_0x7720('0xa'),attributes,{'tableName':_0x7720('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 936d67e..823984e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79bf=['../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','request','then','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x79bf,0x1df));var _0xf79b=function(_0xe3bbea,_0x3ae4d3){_0xe3bbea=_0xe3bbea-0x0;var _0x18713d=_0x79bf[_0xe3bbea];return _0x18713d;};'use strict';var _=require('lodash');var util=require(_0xf79b('0x0'));var moment=require('moment');var BPromise=require(_0xf79b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf79b('0x2'));var db=require(_0xf79b('0x3'))['db'];var utils=require(_0xf79b('0x4'));var logger=require(_0xf79b('0x5'))(_0xf79b('0x6'));var config=require(_0xf79b('0x7'));var jayson=require(_0xf79b('0x8'));var client=jayson['client'][_0xf79b('0x9')]({'port':0x232a});config[_0xf79b('0xa')]=_[_0xf79b('0xb')](config['redis'],{'host':_0xf79b('0xc'),'port':0x18eb});var socket=require(_0xf79b('0xd'))(new Redis(config[_0xf79b('0xa')]));require(_0xf79b('0xe'))['register'](socket);function respondWithRpcPromise(_0x5c3518,_0x183424,_0x1eeddd){return new BPromise(function(_0x285865,_0x1c65cc){return client[_0xf79b('0xf')](_0x5c3518,_0x1eeddd)[_0xf79b('0x10')](function(_0x39945f){logger['info'](_0xf79b('0x11'),_0x183424,_0xf79b('0x12'));logger[_0xf79b('0x13')](_0xf79b('0x14'),_0x183424,_0xf79b('0x12'),JSON[_0xf79b('0x15')](_0x39945f));if(_0x39945f[_0xf79b('0x16')]){if(_0x39945f[_0xf79b('0x16')][_0xf79b('0x17')]===0x1f4){logger[_0xf79b('0x16')](_0xf79b('0x11'),_0x183424,_0x39945f[_0xf79b('0x16')]['message']);return _0x1c65cc(_0x39945f['error'][_0xf79b('0x18')]);}logger['error'](_0xf79b('0x11'),_0x183424,_0x39945f['error'][_0xf79b('0x18')]);return _0x285865(_0x39945f['error']['message']);}else{logger[_0xf79b('0x19')]('VoicePrefix,\x20%s,\x20%s',_0x183424,_0xf79b('0x12'));_0x285865(_0x39945f[_0xf79b('0x1a')][_0xf79b('0x18')]);}})['catch'](function(_0xf13a4){logger['error'](_0xf79b('0x11'),_0x183424,_0xf13a4);_0x1c65cc(_0xf13a4);});});}
\ No newline at end of file
+var _0x110e=['info','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','VoicePrefix,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','request','then'];(function(_0x13e3f7,_0x58f341){var _0x267c4d=function(_0x19d612){while(--_0x19d612){_0x13e3f7['push'](_0x13e3f7['shift']());}};_0x267c4d(++_0x58f341);}(_0x110e,0x68));var _0xe110=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x110e[_0x1203f];return _0x365f0a;};'use strict';var _=require(_0xe110('0x0'));var util=require(_0xe110('0x1'));var moment=require('moment');var BPromise=require(_0xe110('0x2'));var rs=require(_0xe110('0x3'));var fs=require('fs');var Redis=require(_0xe110('0x4'));var db=require(_0xe110('0x5'))['db'];var utils=require(_0xe110('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe110('0x7')]['http']({'port':0x232a});config[_0xe110('0x8')]=_[_0xe110('0x9')](config[_0xe110('0x8')],{'host':_0xe110('0xa'),'port':0x18eb});var socket=require(_0xe110('0xb'))(new Redis(config[_0xe110('0x8')]));require(_0xe110('0xc'))[_0xe110('0xd')](socket);function respondWithRpcPromise(_0x3985c9,_0x47a535,_0x2df21e){return new BPromise(function(_0x435722,_0x5ebe72){return client[_0xe110('0xe')](_0x3985c9,_0x2df21e)[_0xe110('0xf')](function(_0x326a5a){logger[_0xe110('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x47a535,'request\x20sent');logger['debug'](_0xe110('0x11'),_0x47a535,_0xe110('0x12'),JSON['stringify'](_0x326a5a));if(_0x326a5a['error']){if(_0x326a5a['error'][_0xe110('0x13')]===0x1f4){logger[_0xe110('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x47a535,_0x326a5a['error'][_0xe110('0x15')]);return _0x5ebe72(_0x326a5a['error'][_0xe110('0x15')]);}logger[_0xe110('0x14')](_0xe110('0x16'),_0x47a535,_0x326a5a[_0xe110('0x14')]['message']);return _0x435722(_0x326a5a[_0xe110('0x14')][_0xe110('0x15')]);}else{logger['info']('VoicePrefix,\x20%s,\x20%s',_0x47a535,_0xe110('0x12'));_0x435722(_0x326a5a['result'][_0xe110('0x15')]);}})[_0xe110('0x17')](function(_0x47fff8){logger[_0xe110('0x14')](_0xe110('0x16'),_0x47a535,_0x47fff8);_0x5ebe72(_0x47fff8);});});}
\ No newline at end of file
index 9e5ca67..f579803 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc8b=['emit','removeListener','register','save','update'];(function(_0x2770b7,_0x1f8d0d){var _0x3cc528=function(_0x5be37d){while(--_0x5be37d){_0x2770b7['push'](_0x2770b7['shift']());}};_0x3cc528(++_0x1f8d0d);}(_0xbc8b,0x16b));var _0xbbc8=function(_0x5550b3,_0x2d0ee0){_0x5550b3=_0x5550b3-0x0;var _0x4b8fc4=_0xbc8b[_0x5550b3];return _0x4b8fc4;};'use strict';var VoicePrefixEvents=require('./voicePrefix.events');var events=[_0xbbc8('0x0'),'remove',_0xbbc8('0x1')];function createListener(_0x258371,_0x472e52){return function(_0x1bb600){_0x472e52[_0xbbc8('0x2')](_0x258371,_0x1bb600);};}function removeListener(_0x8abfdb,_0x49218a){return function(){VoicePrefixEvents[_0xbbc8('0x3')](_0x8abfdb,_0x49218a);};}exports[_0xbbc8('0x4')]=function(_0x15cdc6){for(var _0x21f15a=0x0,_0x18c3d7=events['length'];_0x21f15a<_0x18c3d7;_0x21f15a++){var _0x396aa2=events[_0x21f15a];var _0x313a01=createListener('voicePrefix:'+_0x396aa2,_0x15cdc6);VoicePrefixEvents['on'](_0x396aa2,_0x313a01);}};
\ No newline at end of file
+var _0x3ef0=['length','voicePrefix:','./voicePrefix.events','remove','emit','register'];(function(_0x3250f7,_0x1c2afc){var _0xdb6ac4=function(_0x5a23f8){while(--_0x5a23f8){_0x3250f7['push'](_0x3250f7['shift']());}};_0xdb6ac4(++_0x1c2afc);}(_0x3ef0,0x19a));var _0x03ef=function(_0x553af0,_0x38a9ce){_0x553af0=_0x553af0-0x0;var _0x4f4098=_0x3ef0[_0x553af0];return _0x4f4098;};'use strict';var VoicePrefixEvents=require(_0x03ef('0x0'));var events=['save',_0x03ef('0x1'),'update'];function createListener(_0x3ee9a3,_0x5367d2){return function(_0x2aa000){_0x5367d2[_0x03ef('0x2')](_0x3ee9a3,_0x2aa000);};}function removeListener(_0x321d93,_0x5298e7){return function(){VoicePrefixEvents['removeListener'](_0x321d93,_0x5298e7);};}exports[_0x03ef('0x3')]=function(_0xadf812){for(var _0x1ea0f9=0x0,_0x47e561=events[_0x03ef('0x4')];_0x1ea0f9<_0x47e561;_0x1ea0f9++){var _0x3c06ee=events[_0x1ea0f9];var _0x2d54e7=createListener(_0x03ef('0x5')+_0x3c06ee,_0xadf812);VoicePrefixEvents['on'](_0x3c06ee,_0x2d54e7);}};
\ No newline at end of file
index 93c3fc1..75e6427 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e72=['isAuthenticated','/:id','show','getHopperHistories','/:id/hopper_finals','/:id/hopper_black','getHopperBlacks','/:id/teams','getTeams','/:id/users','/:id/members','getMembers','/:id/lists','getLists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x132d12,_0x2c9799){var _0x1c3163=function(_0x7d9136){while(--_0x7d9136){_0x132d12['push'](_0x132d12['shift']());}};_0x1c3163(++_0x2c9799);}(_0x8e72,0x1e1));var _0x28e7=function(_0x18284b,_0x53c508){_0x18284b=_0x18284b-0x0;var _0x3caa79=_0x8e72[_0x18284b];return _0x3caa79;};'use strict';var multer=require(_0x28e7('0x0'));var util=require(_0x28e7('0x1'));var path=require(_0x28e7('0x2'));var timeout=require(_0x28e7('0x3'));var express=require(_0x28e7('0x4'));var router=express[_0x28e7('0x5')]();var fs_extra=require(_0x28e7('0x6'));var auth=require(_0x28e7('0x7'));var interaction=require(_0x28e7('0x8'));var config=require(_0x28e7('0x9'));var controller=require('./voiceQueue.controller');router[_0x28e7('0xa')]('/',auth[_0x28e7('0xb')](),controller['index']);router[_0x28e7('0xa')](_0x28e7('0xc'),auth[_0x28e7('0xb')](),controller[_0x28e7('0xd')]);router[_0x28e7('0xa')]('/:id/hoppers',auth[_0x28e7('0xb')](),controller['getHoppers']);router[_0x28e7('0xa')]('/:id/hopper_histories',auth[_0x28e7('0xb')](),controller[_0x28e7('0xe')]);router[_0x28e7('0xa')](_0x28e7('0xf'),auth[_0x28e7('0xb')](),controller['getHopperFinals']);router[_0x28e7('0xa')](_0x28e7('0x10'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x11')]);router[_0x28e7('0xa')](_0x28e7('0x12'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x13')]);router[_0x28e7('0xa')](_0x28e7('0x14'),auth[_0x28e7('0xb')](),controller['getAgents']);router[_0x28e7('0xa')](_0x28e7('0x15'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x16')]);router['get'](_0x28e7('0x17'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x18')]);router[_0x28e7('0xa')]('/:id/blacklists',auth[_0x28e7('0xb')](),controller[_0x28e7('0x19')]);router[_0x28e7('0x1a')]('/',auth[_0x28e7('0xb')](),controller[_0x28e7('0x1b')]);router['post'](_0x28e7('0x1c'),auth[_0x28e7('0xb')](),controller['clone']);router[_0x28e7('0x1a')](_0x28e7('0x12'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x1d')]);router[_0x28e7('0x1a')](_0x28e7('0x14'),auth['isAuthenticated'](),controller[_0x28e7('0x1e')]);router['post']('/:id/lists',auth[_0x28e7('0xb')](),controller[_0x28e7('0x1f')]);router[_0x28e7('0x1a')](_0x28e7('0x20'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x21')]);router['put'](_0x28e7('0xc'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x22')]);router[_0x28e7('0x23')]('/:id',auth[_0x28e7('0xb')](),controller[_0x28e7('0x24')]);router[_0x28e7('0x23')](_0x28e7('0x12'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x25')]);router[_0x28e7('0x23')](_0x28e7('0x14'),auth[_0x28e7('0xb')](),controller[_0x28e7('0x26')]);router['delete']('/:id/lists',auth[_0x28e7('0xb')](),controller[_0x28e7('0x27')]);router[_0x28e7('0x23')]('/:id/blacklists',auth[_0x28e7('0xb')](),controller['removeBlackLists']);module[_0x28e7('0x28')]=router;
\ No newline at end of file
+var _0x319b=['getHoppers','/:id/hopper_finals','getHopperFinals','/:id/teams','getTeams','/:id/users','/:id/members','getMembers','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addTeams','addLists','put','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceQueue.controller','isAuthenticated','index','get','/:id','show','/:id/hoppers'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x319b,0x116));var _0xb319=function(_0x396f01,_0x2bf2ed){_0x396f01=_0x396f01-0x0;var _0x1f48ce=_0x319b[_0x396f01];return _0x1f48ce;};'use strict';var multer=require(_0xb319('0x0'));var util=require(_0xb319('0x1'));var path=require(_0xb319('0x2'));var timeout=require(_0xb319('0x3'));var express=require(_0xb319('0x4'));var router=express[_0xb319('0x5')]();var fs_extra=require(_0xb319('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xb319('0x7'));var config=require(_0xb319('0x8'));var controller=require(_0xb319('0x9'));router['get']('/',auth[_0xb319('0xa')](),controller[_0xb319('0xb')]);router[_0xb319('0xc')](_0xb319('0xd'),auth[_0xb319('0xa')](),controller[_0xb319('0xe')]);router[_0xb319('0xc')](_0xb319('0xf'),auth[_0xb319('0xa')](),controller[_0xb319('0x10')]);router[_0xb319('0xc')]('/:id/hopper_histories',auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xb319('0xc')](_0xb319('0x11'),auth[_0xb319('0xa')](),controller[_0xb319('0x12')]);router[_0xb319('0xc')]('/:id/hopper_black',auth[_0xb319('0xa')](),controller['getHopperBlacks']);router[_0xb319('0xc')](_0xb319('0x13'),auth[_0xb319('0xa')](),controller[_0xb319('0x14')]);router[_0xb319('0xc')](_0xb319('0x15'),auth['isAuthenticated'](),controller['getAgents']);router[_0xb319('0xc')](_0xb319('0x16'),auth[_0xb319('0xa')](),controller[_0xb319('0x17')]);router[_0xb319('0xc')](_0xb319('0x18'),auth[_0xb319('0xa')](),controller[_0xb319('0x19')]);router[_0xb319('0xc')](_0xb319('0x1a'),auth[_0xb319('0xa')](),controller[_0xb319('0x1b')]);router[_0xb319('0x1c')]('/',auth['isAuthenticated'](),controller[_0xb319('0x1d')]);router[_0xb319('0x1c')](_0xb319('0x1e'),auth['isAuthenticated'](),controller[_0xb319('0x1f')]);router['post'](_0xb319('0x13'),auth[_0xb319('0xa')](),controller[_0xb319('0x20')]);router['post'](_0xb319('0x15'),auth[_0xb319('0xa')](),controller['addAgents']);router['post'](_0xb319('0x18'),auth['isAuthenticated'](),controller[_0xb319('0x21')]);router[_0xb319('0x1c')](_0xb319('0x1a'),auth[_0xb319('0xa')](),controller['addBlackLists']);router[_0xb319('0x22')](_0xb319('0xd'),auth[_0xb319('0xa')](),controller[_0xb319('0x23')]);router['delete'](_0xb319('0xd'),auth[_0xb319('0xa')](),controller['destroy']);router[_0xb319('0x24')]('/:id/teams',auth[_0xb319('0xa')](),controller[_0xb319('0x25')]);router[_0xb319('0x24')]('/:id/users',auth[_0xb319('0xa')](),controller[_0xb319('0x26')]);router[_0xb319('0x24')](_0xb319('0x18'),auth[_0xb319('0xa')](),controller[_0xb319('0x27')]);router['delete'](_0xb319('0x1a'),auth['isAuthenticated'](),controller[_0xb319('0x28')]);module[_0xb319('0x29')]=router;
\ No newline at end of file
index 1a84ac3..0c329a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea0=['dialMethod','progressive','predictive','INTEGER','yes','once','TEXT','periodic_announce','join','joinempty','split','leavewhenempty','acw','wrapuptime','BOOLEAN','preview','power','booked','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).','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','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>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#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)','always','never','onlyIfOpen','Active/Disactive\x20AMD','#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)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','outbound','inbound','default','ringall','fewestcalls','random','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue'];(function(_0x55e565,_0x371bf7){var _0x21b288=function(_0x3fabcf){while(--_0x3fabcf){_0x55e565['push'](_0x55e565['shift']());}};_0x21b288(++_0x371bf7);}(_0xeea0,0x91));var _0x0eea=function(_0x3b0c43,_0x1bb7e2){_0x3b0c43=_0x3b0c43-0x0;var _0x38ef84=_0xeea0[_0x3b0c43];return _0x38ef84;};'use strict';var Sequelize=require(_0x0eea('0x0'));module[_0x0eea('0x1')]={'name':{'type':Sequelize[_0x0eea('0x2')],'allowNull':![],'unique':_0x0eea('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x0eea('0x4')]('inbound',_0x0eea('0x5')),'allowNull':![],'defaultValue':_0x0eea('0x6')},'musiconhold':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':_0x0eea('0x7')},'announce':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x0eea('0x4')]('rr',_0x0eea('0x8'),'leastrecent',_0x0eea('0x9'),_0x0eea('0xa'),_0x0eea('0xb'),_0x0eea('0xc'),_0x0eea('0xd'),'rrordered'),'allowNull':![],'defaultValue':_0x0eea('0x8'),'set':function(_0x14fad3){this[_0x0eea('0xe')](_0x0eea('0xf'),_0x14fad3?_0x14fad3:'rrmemory');},'get':function(){var _0x4fd6b1=this[_0x0eea('0x10')]('type');var _0x5ab324=this[_0x0eea('0x10')](_0x0eea('0x11'));var _0x48bf32=this[_0x0eea('0x10')]('strategy');if(_0x4fd6b1===_0x0eea('0x6')){return _0x48bf32;}if(_0x5ab324==='booked'&&_0x48bf32===_0x0eea('0xb')||_0x5ab324==='booked'&&_0x48bf32==='roundrobin'){return _0x48bf32;}if(_0x5ab324===_0x0eea('0x12')||_0x5ab324===_0x0eea('0x13')||_0x5ab324==='power'){return _0x48bf32;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x0eea('0x14')](0xb)},'timeout':{'type':Sequelize[_0x0eea('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x0eea('0x14')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x0eea('0x2')]},'weight':{'type':Sequelize[_0x0eea('0x14')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x0eea('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x0eea('0x15'),'no'),'defaultValue':_0x0eea('0x15')},'autopause':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x0eea('0x14')](0xb)},'autopausebusy':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x0eea('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x0eea('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x0eea('0x4')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x0eea('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x0eea('0x14')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x0eea('0x4')]('yes','no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no',_0x0eea('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0x0eea('0x15'),'no')},'announce_position_limit':{'type':Sequelize[_0x0eea('0x14')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x0eea('0x4')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x0eea('0x2')]},'queue_youarenext':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x0eea('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x0eea('0x2')]},'queue_quantity1':{'type':Sequelize[_0x0eea('0x2')]},'queue_quantity2':{'type':Sequelize[_0x0eea('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x0eea('0x2')]},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize[_0x0eea('0x17')],'set':function(_0x3b694f){this[_0x0eea('0xe')](_0x0eea('0x18'),_0x3b694f?_0x3b694f[_0x0eea('0x19')](','):[]);},'get':function(){return this[_0x0eea('0x10')](_0x0eea('0x18'))?this[_0x0eea('0x10')]('periodic_announce')['split'](','):[];}},'joinempty':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':_0x0eea('0x15'),'set':function(_0x3e3c12){this[_0x0eea('0xe')](_0x0eea('0x1a'),_0x3e3c12?_0x3e3c12['join'](','):undefined);},'get':function(){return this['getDataValue']('joinempty')?this[_0x0eea('0x10')]('joinempty')[_0x0eea('0x1b')](','):undefined;}},'leavewhenempty':{'type':Sequelize['STRING'],'defaultValue':'no','set':function(_0x5c7d32){this[_0x0eea('0xe')](_0x0eea('0x1c'),_0x5c7d32?_0x5c7d32[_0x0eea('0x19')](','):undefined);},'get':function(){return this[_0x0eea('0x10')]('leavewhenempty')?this[_0x0eea('0x10')](_0x0eea('0x1c'))[_0x0eea('0x1b')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x0eea('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0xc7d3ed){this[_0x0eea('0xe')](_0x0eea('0x1d'),_0xc7d3ed);if(_0xc7d3ed){if(this[_0x0eea('0x10')](_0x0eea('0x1e'))<0x2){this['setDataValue'](_0x0eea('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x0eea('0x1f')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM'](_0x0eea('0x20'),_0x0eea('0x12'),_0x0eea('0x21'),_0x0eea('0x13'),_0x0eea('0x22')),'defaultValue':_0x0eea('0x12'),'comment':_0x0eea('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x0eea('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0eea('0x25')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x0eea('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x0eea('0x26')},'dialPowerLevel':{'type':Sequelize[_0x0eea('0x27')](0x2)['UNSIGNED'],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0x0eea('0x28')},'dialPredictiveOptimization':{'type':Sequelize[_0x0eea('0x4')]('agentBusyFactor',_0x0eea('0x29')),'defaultValue':'dropRate','comment':_0x0eea('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize['FLOAT'](0x2)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x0eea('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x0eea('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize[_0x0eea('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x0eea('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x0eea('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':_0x0eea('0x2d'),'comment':_0x0eea('0x2e')},'dialQueueTimeout':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x2f')},'dialQueueProject':{'type':Sequelize[_0x0eea('0x2')],'comment':_0x0eea('0x30')},'dialCongestionMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x0eea('0x14')](0x5)[_0x0eea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x32')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0eea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x0eea('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x0eea('0x14')](0x5)[_0x0eea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x0eea('0x36')},'dialTimezone':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialPrefix':{'type':Sequelize[_0x0eea('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x37'),_0x0eea('0x38'),_0x0eea('0x39')),'defaultValue':_0x0eea('0x37')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x0eea('0x3a')},'dialAMDInitialSilence':{'type':Sequelize[_0x0eea('0x14')](0x9)[_0x0eea('0x24')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x0eea('0x3b')},'dialAMDGreeting':{'type':Sequelize[_0x0eea('0x14')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x0eea('0x3c')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x0eea('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x0eea('0x14')](0x9)[_0x0eea('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x0eea('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0x0eea('0x14')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x0eea('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x0eea('0x14')](0x9)[_0x0eea('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x0eea('0x40')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x0eea('0x14')](0x9)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0x0eea('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x0eea('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x0eea('0x14')](0x9)[_0x0eea('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0x0eea('0x14')](0x5)[_0x0eea('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':'#RecallMe\x20Timeout\x20(min:1)'},'dialRecallInQueue':{'type':Sequelize[_0x0eea('0x1f')],'defaultValue':0x0,'comment':_0x0eea('0x42')},'dialOrderByScheduledAt':{'type':Sequelize[_0x0eea('0x4')](_0x0eea('0x43'),'ASC'),'defaultValue':_0x0eea('0x43')},'dialQueueProject2':{'type':Sequelize[_0x0eea('0x2')],'comment':_0x0eea('0x30')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x0eea('0x1f')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x0eea('0x1f')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x44')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x0eea('0x14')](0x5)[_0x0eea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x45')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x46')},'dialDropRetryFrequency':{'type':Sequelize[_0x0eea('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x0eea('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x4a')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x4b')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x0eea('0x14')](0x3)[_0x0eea('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x0eea('0x4c')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x0eea('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x0eea('0x4d')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0eea('0x14')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x0eea('0x1f')],'defaultValue':![],'comment':_0x0eea('0x4e'),'set':function(_0x2f86){if(!_0x2f86)this[_0x0eea('0xe')](_0x0eea('0x4f'),null);this[_0x0eea('0xe')](_0x0eea('0x50'),_0x2f86);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x0eea('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x0eea('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
+var _0x5577=['Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','#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','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#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)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','inbound','outbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','roundrobin','predictive','power','INTEGER','ENUM','yes','all','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','progressive','Dial\x20Method.','UNSIGNED'];(function(_0x34750b,_0x34aae5){var _0x244258=function(_0x503bf2){while(--_0x503bf2){_0x34750b['push'](_0x34750b['shift']());}};_0x244258(++_0x34aae5);}(_0x5577,0x1b4));var _0x7557=function(_0x2910f9,_0x5a565d){_0x2910f9=_0x2910f9-0x0;var _0x5a0d46=_0x5577[_0x2910f9];return _0x5a0d46;};'use strict';var Sequelize=require(_0x7557('0x0'));module['exports']={'name':{'type':Sequelize[_0x7557('0x1')],'allowNull':![],'unique':_0x7557('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x7557('0x3'),_0x7557('0x4')),'allowNull':![],'defaultValue':_0x7557('0x3')},'musiconhold':{'type':Sequelize[_0x7557('0x1')],'defaultValue':_0x7557('0x5')},'announce':{'type':Sequelize[_0x7557('0x1')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x7557('0x6'),_0x7557('0x7'),_0x7557('0x8'),_0x7557('0x9'),_0x7557('0xa'),_0x7557('0xb'),_0x7557('0xc'),_0x7557('0xd')),'allowNull':![],'defaultValue':_0x7557('0x6'),'set':function(_0x24b592){this[_0x7557('0xe')](_0x7557('0xf'),_0x24b592?_0x24b592:_0x7557('0xa'));},'get':function(){var _0x2906c0=this[_0x7557('0x10')]('type');var _0x4d92d9=this[_0x7557('0x10')](_0x7557('0x11'));var _0x40efbd=this[_0x7557('0x10')](_0x7557('0xf'));if(_0x2906c0===_0x7557('0x3')){return _0x40efbd;}if(_0x4d92d9===_0x7557('0x12')&&_0x40efbd===_0x7557('0xa')||_0x4d92d9===_0x7557('0x12')&&_0x40efbd===_0x7557('0x13')){return _0x40efbd;}if(_0x4d92d9==='progressive'||_0x4d92d9===_0x7557('0x14')||_0x4d92d9===_0x7557('0x15')){return _0x40efbd;}return null;}},'servicelevel':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'context':{'type':Sequelize['STRING'],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x7557('0x16')](0xb)},'timeout':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x7557('0x1')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x7557('0x17')]('yes','no'),'defaultValue':'yes'},'autopause':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no',_0x7557('0x19')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x7557('0x16')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no'),'defaultValue':_0x7557('0x18')},'announce_holdtime':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x18'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x7557('0x1')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0x7557('0x18'),'no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize[_0x7557('0x17')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x7557('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x7557('0x1')]},'queue_youarenext':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x7557('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x7557('0x1')]},'queue_quantity1':{'type':Sequelize[_0x7557('0x1')]},'queue_quantity2':{'type':Sequelize[_0x7557('0x1')]},'queue_periodic_announce':{'type':Sequelize[_0x7557('0x1')]},'queue_less_than':{'type':Sequelize[_0x7557('0x1')]},'periodic_announce':{'type':Sequelize[_0x7557('0x1a')],'set':function(_0x52fffa){this[_0x7557('0xe')](_0x7557('0x1b'),_0x52fffa?_0x52fffa[_0x7557('0x1c')](','):[]);},'get':function(){return this[_0x7557('0x10')]('periodic_announce')?this[_0x7557('0x10')](_0x7557('0x1b'))[_0x7557('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x7557('0x1')],'defaultValue':_0x7557('0x18'),'set':function(_0x2f3fd3){this[_0x7557('0xe')](_0x7557('0x1e'),_0x2f3fd3?_0x2f3fd3[_0x7557('0x1c')](','):undefined);},'get':function(){return this[_0x7557('0x10')](_0x7557('0x1e'))?this[_0x7557('0x10')](_0x7557('0x1e'))[_0x7557('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x7557('0x1')],'defaultValue':'no','set':function(_0x2f903e){this[_0x7557('0xe')](_0x7557('0x1f'),_0x2f903e?_0x2f903e[_0x7557('0x1c')](','):undefined);},'get':function(){return this[_0x7557('0x10')](_0x7557('0x1f'))?this[_0x7557('0x10')]('leavewhenempty')[_0x7557('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x7557('0x17')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x7557('0x1')]},'description':{'type':Sequelize[_0x7557('0x1')]},'acw':{'type':Sequelize[_0x7557('0x20')],'defaultValue':0x0,'set':function(_0x52b29f){this[_0x7557('0xe')](_0x7557('0x21'),_0x52b29f);if(_0x52b29f){if(this[_0x7557('0x10')](_0x7557('0x22'))<0x2){this[_0x7557('0xe')](_0x7557('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x7557('0x16')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x7557('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM']('preview','progressive','power','predictive',_0x7557('0x12')),'defaultValue':_0x7557('0x23'),'comment':_0x7557('0x24')},'dialLimitChannel':{'type':Sequelize[_0x7557('0x16')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0x7557('0x16')](0x4)[_0x7557('0x25')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x7557('0x26')},'dialPowerLevel':{'type':Sequelize[_0x7557('0x27')](0x2)[_0x7557('0x25')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x28'),_0x7557('0x29')),'defaultValue':_0x7557('0x29'),'comment':_0x7557('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x7557('0x27')](0x2)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':'Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)'},'dialPredictiveInterval':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x7557('0x2b')},'dialOriginateCallerIdName':{'type':Sequelize[_0x7557('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x2c')},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x7557('0x2d'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x2e')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0x7557('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x31')},'dialBusyRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x32')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x7557('0x33')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x34')},'dialGlobalMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x7557('0x35')},'dialTimezone':{'type':Sequelize[_0x7557('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x7557('0x1')],'defaultValue':_0x7557('0x36')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x7557('0x17')](_0x7557('0x37'),_0x7557('0x38'),'onlyIfOpen'),'defaultValue':_0x7557('0x37')},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x7557('0x39')},'dialAMDGreeting':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x7557('0x3a')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7557('0x3b')},'dialAMDMinWordLength':{'type':Sequelize[_0x7557('0x16')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x7557('0x3c')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x7557('0x16')](0x9)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x7557('0x3d')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x7557('0x3e')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x7557('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7557('0x3f')},'dialRecallMeTimeout':{'type':Sequelize[_0x7557('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x7557('0x40')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x7557('0x41')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x7557('0x42'),_0x7557('0x43')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0x7557('0x1')],'comment':_0x7557('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x7557('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x7557('0x20')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7557('0x44')},'dialCutDigit':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x7557('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x48')},'dialMachineMaxRetry':{'type':Sequelize[_0x7557('0x16')](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x49')},'dialMachineRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7557('0x25')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7557('0x4a')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x7557('0x16')](0x5)[_0x7557('0x25')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7557('0x4b')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x7557('0x16')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x7557('0x20')],'defaultValue':![],'comment':_0x7557('0x4c'),'set':function(_0x1c1a44){if(!_0x1c1a44)this[_0x7557('0xe')](_0x7557('0x4d'),null);this[_0x7557('0xe')](_0x7557('0x4e'),_0x1c1a44);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x7557('0x16')](0x3)['UNSIGNED'],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x7557('0x25')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}}};
\ No newline at end of file
index a95c75f..4630444 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7806=['count','limit','set','Content-Range','apply','reject','save','update','destroy','VoiceQueues','inbound','QueueCampaigns','outbound','filter','ignore','map','includes','find','value','type','name','UserProfileResource','then','error','send','index','VoiceQueue','fieldName','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','include','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','findOne','CmHopper','VoiceQueueId','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','flatMap','forEach','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','interface','userVoiceQueue:save','ids','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','all','union','removeTeams','isEmpty','removeAgents','emit','userVoiceQueue:remove','addAgents','spread','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','NOW()','cm_contacts','deletedAt\x20IS\x20NULL','CmListId','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','into','ListId\x20=\x20?','COALESCE(phone,\x27\x27)','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','status','end','json','offset','undefined'];(function(_0x5e6d82,_0x4fcc5a){var _0x4f0c47=function(_0x3e551e){while(--_0x3e551e){_0x5e6d82['push'](_0x5e6d82['shift']());}};_0x4f0c47(++_0x4fcc5a);}(_0x7806,0x15a));var _0x6780=function(_0x44b2b8,_0x4d0b48){_0x44b2b8=_0x44b2b8-0x0;var _0x52efb5=_0x7806[_0x44b2b8];return _0x52efb5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6780('0x0'));var zipdir=require(_0x6780('0x1'));var jsonpatch=require(_0x6780('0x2'));var rp=require(_0x6780('0x3'));var moment=require(_0x6780('0x4'));var BPromise=require(_0x6780('0x5'));var Mustache=require(_0x6780('0x6'));var util=require(_0x6780('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x6780('0x8'));var ejs=require(_0x6780('0x9'));var fs=require('fs');var fs_extra=require(_0x6780('0xa'));var _=require(_0x6780('0xb'));var squel=require(_0x6780('0xc'));var crypto=require(_0x6780('0xd'));var jsforce=require(_0x6780('0xe'));var deskjs=require(_0x6780('0xf'));var toCsv=require(_0x6780('0x8'));var querystring=require(_0x6780('0x10'));var Papa=require('papaparse');var Redis=require(_0x6780('0x11'));var authService=require(_0x6780('0x12'));var qs=require(_0x6780('0x13'));var as=require(_0x6780('0x14'));var hardwareService=require(_0x6780('0x15'));var logger=require('../../config/logger')(_0x6780('0x16'));var utils=require(_0x6780('0x17'));var config=require(_0x6780('0x18'));var licenseUtil=require(_0x6780('0x19'));var db=require(_0x6780('0x1a'))['db'];config[_0x6780('0x1b')]=_[_0x6780('0x1c')](config['redis'],{'host':_0x6780('0x1d'),'port':0x18eb});var socket=require(_0x6780('0x1e'))(new Redis(config[_0x6780('0x1b')]));require(_0x6780('0x1f'))[_0x6780('0x20')](socket);function respondWithStatusCode(_0x276e17,_0x35ca7c){_0x35ca7c=_0x35ca7c||0xcc;return function(_0x5aa4ac){if(_0x5aa4ac){return _0x276e17['sendStatus'](_0x35ca7c);}return _0x276e17[_0x6780('0x21')](_0x35ca7c)[_0x6780('0x22')]();};}function respondWithResult(_0x1b3039,_0x412b9f){_0x412b9f=_0x412b9f||0xc8;return function(_0x3a8b8b){if(_0x3a8b8b){return _0x1b3039[_0x6780('0x21')](_0x412b9f)[_0x6780('0x23')](_0x3a8b8b);}};}function respondWithFilteredResult(_0x51904c,_0x4f1b80){return function(_0x494df1){if(_0x494df1){var _0x3a7f0a=typeof _0x4f1b80[_0x6780('0x24')]==='undefined'&&typeof _0x4f1b80['limit']===_0x6780('0x25');var _0x5e140a=_0x494df1[_0x6780('0x26')];var _0x47a16c=_0x3a7f0a?0x0:_0x4f1b80[_0x6780('0x24')];var _0x271fbd=_0x3a7f0a?_0x494df1['count']:_0x4f1b80[_0x6780('0x24')]+_0x4f1b80[_0x6780('0x27')];var _0x34de4c;if(_0x271fbd>=_0x5e140a){_0x271fbd=_0x5e140a;_0x34de4c=0xc8;}else{_0x34de4c=0xce;}_0x51904c[_0x6780('0x21')](_0x34de4c);return _0x51904c[_0x6780('0x28')](_0x6780('0x29'),_0x47a16c+'-'+_0x271fbd+'/'+_0x5e140a)[_0x6780('0x23')](_0x494df1);}return null;};}function patchUpdates(_0x98c6fd){return function(_0x453c69){try{jsonpatch[_0x6780('0x2a')](_0x453c69,_0x98c6fd,!![]);}catch(_0x2fa871){return BPromise[_0x6780('0x2b')](_0x2fa871);}return _0x453c69[_0x6780('0x2c')]();};}function saveUpdates(_0x236978,_0x4d8009){return function(_0x4d5507){if(_0x4d5507){return _0x4d5507[_0x6780('0x2d')](_0x236978)['then'](function(_0x48fef7){return _0x48fef7;});}return null;};}function removeEntity(_0x5a7854,_0x125234){return function(_0x1bb094){if(_0x1bb094){return _0x1bb094[_0x6780('0x2e')]()['then'](function(){var _0x212d92=_0x1bb094['get']({'plain':!![]});var _0x298a26=[{'name':_0x6780('0x2f'),'value':_0x6780('0x30'),'ignore':![]},{'name':_0x6780('0x31'),'value':_0x6780('0x32'),'ignore':![]}];var _0x2102c1=_(_0x298a26)[_0x6780('0x33')](_0x6780('0x34'))[_0x6780('0x35')]('value')['value']();if(_[_0x6780('0x36')](_0x2102c1,_0x212d92['type'])){return;}var _0x48983b=_[_0x6780('0x37')](_0x298a26,[_0x6780('0x38'),_0x212d92[_0x6780('0x39')]])[_0x6780('0x3a')];return db[_0x6780('0x3b')][_0x6780('0x2e')]({'where':{'type':_0x48983b,'resourceId':_0x212d92['id']}})[_0x6780('0x3c')](function(){return _0x1bb094;});})[_0x6780('0x3c')](function(){_0x5a7854[_0x6780('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x46697a,_0x1a18f9){return function(_0x4c3bf){if(!_0x4c3bf){_0x46697a['sendStatus'](0x194);}return _0x4c3bf;};}function handleError(_0x1b151a,_0x59fcbd){_0x59fcbd=_0x59fcbd||0x1f4;return function(_0x1acc44){logger[_0x6780('0x3d')](_0x1acc44['stack']);if(_0x1acc44['name']){delete _0x1acc44[_0x6780('0x3a')];}_0x1b151a[_0x6780('0x21')](_0x59fcbd)[_0x6780('0x3e')](_0x1acc44);};}exports[_0x6780('0x3f')]=function(_0x31ca87,_0x3f6f32){var _0x4d3e13={},_0xa25176={},_0x28c9f1={'count':0x0,'rows':[]};var _0x537031=_[_0x6780('0x35')](db[_0x6780('0x40')]['rawAttributes'],function(_0x2a1f7c){return{'name':_0x2a1f7c[_0x6780('0x41')],'type':_0x2a1f7c[_0x6780('0x39')]['key']};});_0xa25176[_0x6780('0x42')]=_[_0x6780('0x35')](_0x537031,_0x6780('0x3a'));_0xa25176[_0x6780('0x43')]=_[_0x6780('0x44')](_0x31ca87['query']);_0xa25176[_0x6780('0x45')]=_[_0x6780('0x46')](_0xa25176['model'],_0xa25176[_0x6780('0x43')]);_0x4d3e13['attributes']=_[_0x6780('0x46')](_0xa25176[_0x6780('0x42')],qs[_0x6780('0x47')](_0x31ca87['query']['fields']));_0x4d3e13[_0x6780('0x48')]=_0x4d3e13[_0x6780('0x48')][_0x6780('0x49')]?_0x4d3e13[_0x6780('0x48')]:_0xa25176[_0x6780('0x42')];if(!_0x31ca87[_0x6780('0x43')][_0x6780('0x4a')](_0x6780('0x4b'))){_0x4d3e13[_0x6780('0x27')]=qs[_0x6780('0x27')](_0x31ca87[_0x6780('0x43')][_0x6780('0x27')]);_0x4d3e13[_0x6780('0x24')]=qs['offset'](_0x31ca87[_0x6780('0x43')][_0x6780('0x24')]);}_0x4d3e13[_0x6780('0x4c')]=qs[_0x6780('0x4d')](_0x31ca87[_0x6780('0x43')]['sort']);_0x4d3e13[_0x6780('0x4e')]=qs[_0x6780('0x45')](_[_0x6780('0x4f')](_0x31ca87[_0x6780('0x43')],_0xa25176[_0x6780('0x45')]),_0x537031);if(_0x31ca87['query']['filter']){_0x4d3e13[_0x6780('0x4e')]=_['merge'](_0x4d3e13['where'],{'$or':_[_0x6780('0x35')](_0x537031,function(_0x364368){if(_0x364368[_0x6780('0x39')]!==_0x6780('0x50')){var _0x59ed5a={};_0x59ed5a[_0x364368[_0x6780('0x3a')]]={'$like':'%'+_0x31ca87[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0x59ed5a;}})});}_0x4d3e13=_[_0x6780('0x51')]({},_0x4d3e13,_0x31ca87[_0x6780('0x52')]);var _0x3215ce={'where':_0x4d3e13[_0x6780('0x4e')]};return db[_0x6780('0x40')][_0x6780('0x26')](_0x3215ce)[_0x6780('0x3c')](function(_0x275505){_0x28c9f1[_0x6780('0x26')]=_0x275505;if(_0x31ca87[_0x6780('0x43')][_0x6780('0x53')]){_0x4d3e13['include']=[{'all':!![]}];}return db[_0x6780('0x40')][_0x6780('0x54')](_0x4d3e13);})[_0x6780('0x3c')](function(_0x30d175){_0x28c9f1[_0x6780('0x55')]=_0x30d175;return _0x28c9f1;})[_0x6780('0x3c')](respondWithFilteredResult(_0x3f6f32,_0x4d3e13))[_0x6780('0x56')](handleError(_0x3f6f32,null));};exports['show']=function(_0x3db7ce,_0x387c62){var _0x4d7e0e={'raw':![],'where':{'id':_0x3db7ce[_0x6780('0x57')]['id']}},_0x6d1567={};_0x6d1567['model']=_[_0x6780('0x44')](db['VoiceQueue'][_0x6780('0x58')]);_0x6d1567[_0x6780('0x43')]=_[_0x6780('0x44')](_0x3db7ce[_0x6780('0x43')]);_0x6d1567[_0x6780('0x45')]=_[_0x6780('0x46')](_0x6d1567[_0x6780('0x42')],_0x6d1567['query']);_0x4d7e0e[_0x6780('0x48')]=_[_0x6780('0x46')](_0x6d1567[_0x6780('0x42')],qs[_0x6780('0x47')](_0x3db7ce[_0x6780('0x43')][_0x6780('0x47')]));_0x4d7e0e['attributes']=_0x4d7e0e[_0x6780('0x48')][_0x6780('0x49')]?_0x4d7e0e[_0x6780('0x48')]:_0x6d1567['model'];if(_0x3db7ce[_0x6780('0x43')][_0x6780('0x53')]){_0x4d7e0e[_0x6780('0x59')]=[{'all':!![]}];}_0x4d7e0e=_[_0x6780('0x51')]({},_0x4d7e0e,_0x3db7ce[_0x6780('0x52')]);return db[_0x6780('0x40')][_0x6780('0x37')](_0x4d7e0e)[_0x6780('0x3c')](handleEntityNotFound(_0x387c62,null))['then'](respondWithResult(_0x387c62,null))[_0x6780('0x56')](handleError(_0x387c62,null));};exports[_0x6780('0x5a')]=function(_0x7ce888,_0x1fecdf){return db[_0x6780('0x40')]['create'](_0x7ce888['body'],{})[_0x6780('0x3c')](function(_0x497e1e){var _0x196802=_0x7ce888[_0x6780('0x5b')][_0x6780('0x5c')]({'plain':!![]});if(!_0x196802)throw new Error(_0x6780('0x5d'));if(_0x196802[_0x6780('0x5e')]===_0x6780('0x5b')){var _0x31c1b9=_0x497e1e[_0x6780('0x5c')]({'plain':!![]});var _0x3f69eb=[{'name':_0x6780('0x2f'),'value':_0x6780('0x30')},{'name':_0x6780('0x31'),'value':_0x6780('0x32')}];var _0x4655be=_[_0x6780('0x37')](_0x3f69eb,[_0x6780('0x38'),_0x31c1b9[_0x6780('0x39')]])[_0x6780('0x3a')];return db[_0x6780('0x5f')][_0x6780('0x37')]({'where':{'name':_0x4655be,'userProfileId':_0x196802[_0x6780('0x60')]},'raw':!![]})[_0x6780('0x3c')](function(_0x18cbd4){if(_0x18cbd4&&_0x18cbd4[_0x6780('0x61')]===0x0){return db[_0x6780('0x3b')][_0x6780('0x5a')]({'name':_0x31c1b9[_0x6780('0x3a')],'resourceId':_0x31c1b9['id'],'type':_0x18cbd4[_0x6780('0x3a')],'sectionId':_0x18cbd4['id']},{})['then'](function(){return _0x497e1e;});}else{return _0x497e1e;}})[_0x6780('0x56')](function(_0x57d215){logger[_0x6780('0x3d')](_0x6780('0x62'),_0x57d215);throw _0x57d215;});}return _0x497e1e;})['then'](respondWithResult(_0x1fecdf,0xc9))[_0x6780('0x56')](handleError(_0x1fecdf,null));};exports[_0x6780('0x63')]=function(_0x4da28b,_0x510068){var _0x1938aa={'where':{'id':_0x4da28b['params']['id']}},_0x31294e={};_0x31294e[_0x6780('0x42')]=_[_0x6780('0x44')](db['VoiceQueue']['rawAttributes']);_0x1938aa[_0x6780('0x48')]=_[_0x6780('0x46')](_0x31294e[_0x6780('0x42')],qs[_0x6780('0x47')](_0x4da28b[_0x6780('0x43')]['fields']));_0x1938aa['attributes']=_0x1938aa['attributes'][_0x6780('0x49')]?_0x1938aa[_0x6780('0x48')]:_0x31294e[_0x6780('0x42')];if(_0x4da28b[_0x6780('0x43')][_0x6780('0x53')]){_0x1938aa[_0x6780('0x59')]=[{'all':!![]}];}_0x1938aa=_['merge']({},_0x1938aa,_0x4da28b['options']);return db[_0x6780('0x40')][_0x6780('0x37')](_0x1938aa)[_0x6780('0x3c')](handleEntityNotFound(_0x510068,null))[_0x6780('0x3c')](function(_0x534585){if(_0x534585){var _0xf4abf7=_0x534585[_0x6780('0x5c')]({'plain':!![]});_0xf4abf7=qs[_0x6780('0x64')](_0xf4abf7,['id',_0x6780('0x65'),_0x6780('0x66')]);_0x4da28b['body']=_['omit'](_0x4da28b[_0x6780('0x67')],['id',_0x6780('0x65'),_0x6780('0x66')]);return db[_0x6780('0x40')][_0x6780('0x5a')](_[_0x6780('0x51')](_0xf4abf7,_0x4da28b[_0x6780('0x67')]),{'include':_0x4da28b['query'][_0x6780('0x53')]?[{'all':!![]}]:undefined})[_0x6780('0x3c')](function(_0x2fa5c8){var _0x5190dc=_0x4da28b[_0x6780('0x5b')][_0x6780('0x5c')]({'plain':!![]});if(!_0x5190dc)throw new Error(_0x6780('0x5d'));if(_0x5190dc[_0x6780('0x5e')]==='user'){var _0x4b0c98=_0x2fa5c8['get']({'plain':!![]});var _0x3b840b=[{'name':_0x6780('0x2f'),'value':_0x6780('0x30')},{'name':_0x6780('0x31'),'value':_0x6780('0x32')}];var _0x220d0a=_['find'](_0x3b840b,[_0x6780('0x38'),_0x4b0c98[_0x6780('0x39')]])[_0x6780('0x3a')];return db['UserProfileSection'][_0x6780('0x37')]({'where':{'name':_0x220d0a,'userProfileId':_0x5190dc[_0x6780('0x60')]},'raw':!![]})[_0x6780('0x3c')](function(_0x210165){if(_0x210165&&_0x210165[_0x6780('0x61')]===0x0){return db['UserProfileResource'][_0x6780('0x5a')]({'name':_0x4b0c98['name'],'resourceId':_0x4b0c98['id'],'type':_0x210165[_0x6780('0x3a')],'sectionId':_0x210165['id']},{})[_0x6780('0x3c')](function(){return _0x2fa5c8;});}else{return _0x2fa5c8;}})[_0x6780('0x56')](function(_0x964d6d){logger[_0x6780('0x3d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x964d6d);throw _0x964d6d;});}return _0x2fa5c8;});}})[_0x6780('0x3c')](respondWithResult(_0x510068,0xc9))[_0x6780('0x56')](handleError(_0x510068,null));};exports[_0x6780('0x2d')]=function(_0x5751be,_0x5b323a){if(_0x5751be[_0x6780('0x67')]['id']){delete _0x5751be[_0x6780('0x67')]['id'];}return db[_0x6780('0x40')][_0x6780('0x37')]({'where':{'id':_0x5751be['params']['id']}})['then'](handleEntityNotFound(_0x5b323a,null))[_0x6780('0x3c')](saveUpdates(_0x5751be[_0x6780('0x67')],null))[_0x6780('0x3c')](respondWithResult(_0x5b323a,null))[_0x6780('0x56')](handleError(_0x5b323a,null));};exports[_0x6780('0x2e')]=function(_0x36e943,_0x541d7f){return db[_0x6780('0x40')]['find']({'where':{'id':_0x36e943[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x541d7f,null))['then'](removeEntity(_0x541d7f,null))['catch'](handleError(_0x541d7f,null));};exports['getHoppers']=function(_0x17aa9e,_0x291f85,_0xaebb48){var _0xb32720={'raw':![],'where':{}};var _0x39f81e={};var _0x279ddd={'count':0x0,'rows':[]};return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x17aa9e[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x291f85,null))[_0x6780('0x3c')](function(_0x5e25bb){if(_0x5e25bb){_0x39f81e[_0x6780('0x42')]=_['keys'](db[_0x6780('0x69')][_0x6780('0x58')]);_0x39f81e['query']=_['keys'](_0x17aa9e[_0x6780('0x43')]);_0x39f81e[_0x6780('0x45')]=_['intersection'](_0x39f81e[_0x6780('0x42')],_0x39f81e[_0x6780('0x43')]);_0xb32720[_0x6780('0x48')]=_[_0x6780('0x46')](_0x39f81e[_0x6780('0x42')],qs[_0x6780('0x47')](_0x17aa9e[_0x6780('0x43')][_0x6780('0x47')]));_0xb32720[_0x6780('0x48')]=_0xb32720['attributes'][_0x6780('0x49')]?_0xb32720[_0x6780('0x48')]:_0x39f81e[_0x6780('0x42')];if(!_0x17aa9e['query'][_0x6780('0x4a')](_0x6780('0x4b'))){_0xb32720[_0x6780('0x27')]=qs[_0x6780('0x27')](_0x17aa9e[_0x6780('0x43')][_0x6780('0x27')]);_0xb32720['offset']=qs[_0x6780('0x24')](_0x17aa9e[_0x6780('0x43')]['offset']);}_0xb32720[_0x6780('0x4c')]=qs[_0x6780('0x4d')](_0x17aa9e[_0x6780('0x43')][_0x6780('0x4d')]);_0xb32720[_0x6780('0x4e')]=qs[_0x6780('0x45')](_[_0x6780('0x4f')](_0x17aa9e[_0x6780('0x43')],_0x39f81e['filters']));_0xb32720[_0x6780('0x4e')][_0x6780('0x6a')]=_0x5e25bb['id'];if(_0x17aa9e[_0x6780('0x43')][_0x6780('0x33')]){_0xb32720[_0x6780('0x4e')]=_['merge'](_0xb32720[_0x6780('0x4e')],{'$or':_[_0x6780('0x35')](_0xb32720[_0x6780('0x48')],function(_0x3050b6){var _0xab97f4={};_0xab97f4[_0x3050b6]={'$like':'%'+_0x17aa9e[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0xab97f4;})});}_0xb32720=_['merge']({},_0xb32720,_0x17aa9e[_0x6780('0x52')]);return db['CmHopper'][_0x6780('0x26')]({'where':_0xb32720[_0x6780('0x4e')]})[_0x6780('0x3c')](function(_0x230b73){_0x279ddd[_0x6780('0x26')]=_0x230b73;if(_0x17aa9e[_0x6780('0x43')][_0x6780('0x53')]){_0xb32720[_0x6780('0x59')]=[{'all':!![]}];}return db[_0x6780('0x69')][_0x6780('0x54')](_0xb32720);})[_0x6780('0x3c')](function(_0x3d84f9){_0x279ddd['rows']=_0x3d84f9;return _0x279ddd;});}})[_0x6780('0x3c')](respondWithFilteredResult(_0x291f85,_0xb32720))[_0x6780('0x56')](handleError(_0x291f85,null));};exports['getHopperHistories']=function(_0x57af04,_0x53760f,_0x1670d4){var _0x2f1a9e={'raw':!![],'where':{}};var _0x21829e={};var _0x1dcdd1={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x57af04[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x53760f,null))[_0x6780('0x3c')](function(_0xacf44){if(_0xacf44){_0x21829e['model']=_['keys'](db[_0x6780('0x6b')]['rawAttributes']);_0x21829e[_0x6780('0x43')]=_[_0x6780('0x44')](_0x57af04[_0x6780('0x43')]);_0x21829e[_0x6780('0x45')]=_[_0x6780('0x46')](_0x21829e[_0x6780('0x42')],_0x21829e[_0x6780('0x43')]);_0x2f1a9e['attributes']=_[_0x6780('0x46')](_0x21829e['model'],qs[_0x6780('0x47')](_0x57af04[_0x6780('0x43')][_0x6780('0x47')]));_0x2f1a9e['attributes']=_0x2f1a9e[_0x6780('0x48')][_0x6780('0x49')]?_0x2f1a9e[_0x6780('0x48')]:_0x21829e[_0x6780('0x42')];if(!_0x57af04[_0x6780('0x43')][_0x6780('0x4a')](_0x6780('0x4b'))){_0x2f1a9e[_0x6780('0x27')]=qs[_0x6780('0x27')](_0x57af04[_0x6780('0x43')][_0x6780('0x27')]);_0x2f1a9e[_0x6780('0x24')]=qs[_0x6780('0x24')](_0x57af04[_0x6780('0x43')][_0x6780('0x24')]);}_0x2f1a9e[_0x6780('0x4c')]=qs[_0x6780('0x4d')](_0x57af04[_0x6780('0x43')][_0x6780('0x4d')]);_0x2f1a9e[_0x6780('0x4e')]=qs[_0x6780('0x45')](_[_0x6780('0x4f')](_0x57af04[_0x6780('0x43')],_0x21829e[_0x6780('0x45')]));_0x2f1a9e[_0x6780('0x4e')][_0x6780('0x6a')]=_0xacf44['id'];if(_0x57af04[_0x6780('0x43')][_0x6780('0x33')]){_0x2f1a9e['where']=_[_0x6780('0x51')](_0x2f1a9e['where'],{'$or':_[_0x6780('0x35')](_0x2f1a9e[_0x6780('0x48')],function(_0x22095e){var _0x1b992e={};_0x1b992e[_0x22095e]={'$like':'%'+_0x57af04[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0x1b992e;})});}_0x2f1a9e=_[_0x6780('0x51')]({},_0x2f1a9e,_0x57af04[_0x6780('0x52')]);return db['CmHopperHistory'][_0x6780('0x26')]({'where':_0x2f1a9e[_0x6780('0x4e')]})[_0x6780('0x3c')](function(_0x5c3acb){_0x1dcdd1['count']=_0x5c3acb;if(_0x57af04[_0x6780('0x43')][_0x6780('0x53')]){_0x2f1a9e['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x6780('0x54')](_0x2f1a9e);})[_0x6780('0x3c')](function(_0x3586cb){_0x1dcdd1[_0x6780('0x55')]=_0x3586cb;return _0x1dcdd1;});}})[_0x6780('0x3c')](respondWithFilteredResult(_0x53760f,_0x2f1a9e))[_0x6780('0x56')](handleError(_0x53760f,null));};exports[_0x6780('0x6c')]=function(_0x485317,_0x1b55ef,_0x2c3027){var _0xf6be99={'raw':!![],'where':{}};var _0x12c7c6={};var _0x1e8327={'count':0x0,'rows':[]};return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x485317[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x1b55ef,null))['then'](function(_0x1f4068){if(_0x1f4068){_0x12c7c6['model']=_[_0x6780('0x44')](db[_0x6780('0x6d')][_0x6780('0x58')]);_0x12c7c6[_0x6780('0x43')]=_[_0x6780('0x44')](_0x485317[_0x6780('0x43')]);_0x12c7c6[_0x6780('0x45')]=_['intersection'](_0x12c7c6[_0x6780('0x42')],_0x12c7c6['query']);_0xf6be99['attributes']=_[_0x6780('0x46')](_0x12c7c6[_0x6780('0x42')],qs[_0x6780('0x47')](_0x485317[_0x6780('0x43')][_0x6780('0x47')]));_0xf6be99[_0x6780('0x48')]=_0xf6be99[_0x6780('0x48')]['length']?_0xf6be99[_0x6780('0x48')]:_0x12c7c6[_0x6780('0x42')];if(!_0x485317[_0x6780('0x43')][_0x6780('0x4a')](_0x6780('0x4b'))){_0xf6be99[_0x6780('0x27')]=qs[_0x6780('0x27')](_0x485317[_0x6780('0x43')][_0x6780('0x27')]);_0xf6be99[_0x6780('0x24')]=qs[_0x6780('0x24')](_0x485317[_0x6780('0x43')][_0x6780('0x24')]);}_0xf6be99[_0x6780('0x4c')]=qs['sort'](_0x485317[_0x6780('0x43')][_0x6780('0x4d')]);_0xf6be99[_0x6780('0x4e')]=qs[_0x6780('0x45')](_['pick'](_0x485317[_0x6780('0x43')],_0x12c7c6['filters']));_0xf6be99[_0x6780('0x4e')][_0x6780('0x6a')]=_0x1f4068['id'];if(_0x485317[_0x6780('0x43')]['filter']){_0xf6be99['where']=_[_0x6780('0x51')](_0xf6be99[_0x6780('0x4e')],{'$or':_[_0x6780('0x35')](_0xf6be99[_0x6780('0x48')],function(_0x33d254){var _0x4d6a9f={};_0x4d6a9f[_0x33d254]={'$like':'%'+_0x485317[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0x4d6a9f;})});}_0xf6be99=_[_0x6780('0x51')]({},_0xf6be99,_0x485317[_0x6780('0x52')]);return db[_0x6780('0x6d')][_0x6780('0x26')]({'where':_0xf6be99[_0x6780('0x4e')]})[_0x6780('0x3c')](function(_0x53b89d){_0x1e8327[_0x6780('0x26')]=_0x53b89d;if(_0x485317[_0x6780('0x43')][_0x6780('0x53')]){_0xf6be99[_0x6780('0x59')]=[{'all':!![]}];}return db['CmHopperFinal'][_0x6780('0x54')](_0xf6be99);})[_0x6780('0x3c')](function(_0x2d4001){_0x1e8327[_0x6780('0x55')]=_0x2d4001;return _0x1e8327;});}})['then'](respondWithFilteredResult(_0x1b55ef,_0xf6be99))['catch'](handleError(_0x1b55ef,null));};exports[_0x6780('0x6e')]=function(_0x422b74,_0xb94855,_0x3a55f4){var _0xfbdd8a={'raw':!![],'where':{}};var _0x5db542={};var _0x559eb9={'count':0x0,'rows':[]};return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x422b74['params']['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0xb94855,null))['then'](function(_0x20be1b){if(_0x20be1b){_0x5db542['model']=_[_0x6780('0x44')](db[_0x6780('0x6f')][_0x6780('0x58')]);_0x5db542['query']=_[_0x6780('0x44')](_0x422b74['query']);_0x5db542[_0x6780('0x45')]=_['intersection'](_0x5db542[_0x6780('0x42')],_0x5db542[_0x6780('0x43')]);_0xfbdd8a['attributes']=_[_0x6780('0x46')](_0x5db542['model'],qs[_0x6780('0x47')](_0x422b74[_0x6780('0x43')][_0x6780('0x47')]));_0xfbdd8a['attributes']=_0xfbdd8a[_0x6780('0x48')]['length']?_0xfbdd8a['attributes']:_0x5db542[_0x6780('0x42')];if(!_0x422b74['query'][_0x6780('0x4a')](_0x6780('0x4b'))){_0xfbdd8a['limit']=qs[_0x6780('0x27')](_0x422b74[_0x6780('0x43')]['limit']);_0xfbdd8a[_0x6780('0x24')]=qs['offset'](_0x422b74[_0x6780('0x43')][_0x6780('0x24')]);}_0xfbdd8a['order']=qs[_0x6780('0x4d')](_0x422b74[_0x6780('0x43')][_0x6780('0x4d')]);_0xfbdd8a[_0x6780('0x4e')]=qs[_0x6780('0x45')](_[_0x6780('0x4f')](_0x422b74[_0x6780('0x43')],_0x5db542[_0x6780('0x45')]));_0xfbdd8a[_0x6780('0x4e')]['VoiceQueueId']=_0x20be1b['id'];if(_0x422b74['query'][_0x6780('0x33')]){_0xfbdd8a[_0x6780('0x4e')]=_[_0x6780('0x51')](_0xfbdd8a['where'],{'$or':_[_0x6780('0x35')](_0xfbdd8a[_0x6780('0x48')],function(_0x4d580e){var _0x2593ad={};_0x2593ad[_0x4d580e]={'$like':'%'+_0x422b74['query']['filter']+'%'};return _0x2593ad;})});}_0xfbdd8a=_[_0x6780('0x51')]({},_0xfbdd8a,_0x422b74[_0x6780('0x52')]);return db['CmHopperBlack'][_0x6780('0x26')]({'where':_0xfbdd8a['where']})[_0x6780('0x3c')](function(_0x2a5b35){_0x559eb9[_0x6780('0x26')]=_0x2a5b35;if(_0x422b74[_0x6780('0x43')][_0x6780('0x53')]){_0xfbdd8a[_0x6780('0x59')]=[{'all':!![]}];}return db[_0x6780('0x6f')]['findAll'](_0xfbdd8a);})[_0x6780('0x3c')](function(_0x278286){_0x559eb9[_0x6780('0x55')]=_0x278286;return _0x559eb9;});}})[_0x6780('0x3c')](respondWithFilteredResult(_0xb94855,_0xfbdd8a))[_0x6780('0x56')](handleError(_0xb94855,null));};exports[_0x6780('0x70')]=function(_0x2fe612,_0x4e7a8a,_0x1e8f2a){var _0x284b82={};var _0x364ffc={};var _0x369467;var _0x1a049a;return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x2fe612[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x4e7a8a,null))[_0x6780('0x3c')](function(_0x42bc58){if(_0x42bc58){_0x369467=_0x42bc58;_0x364ffc['model']=_[_0x6780('0x44')](db[_0x6780('0x71')]['rawAttributes']);_0x364ffc[_0x6780('0x43')]=_[_0x6780('0x44')](_0x2fe612['query']);_0x364ffc['filters']=_[_0x6780('0x46')](_0x364ffc[_0x6780('0x42')],_0x364ffc['query']);_0x284b82['attributes']=_['intersection'](_0x364ffc[_0x6780('0x42')],qs['fields'](_0x2fe612[_0x6780('0x43')][_0x6780('0x47')]));_0x284b82[_0x6780('0x48')]=_0x284b82[_0x6780('0x48')][_0x6780('0x49')]?_0x284b82[_0x6780('0x48')]:_0x364ffc[_0x6780('0x42')];_0x284b82[_0x6780('0x4c')]=qs[_0x6780('0x4d')](_0x2fe612[_0x6780('0x43')][_0x6780('0x4d')]);_0x284b82[_0x6780('0x4e')]=qs['filters'](_[_0x6780('0x4f')](_0x2fe612[_0x6780('0x43')],_0x364ffc[_0x6780('0x45')]));if(_0x2fe612[_0x6780('0x43')][_0x6780('0x33')]){_0x284b82[_0x6780('0x4e')]=_['merge'](_0x284b82['where'],{'$or':_['map'](_0x284b82[_0x6780('0x48')],function(_0x17db43){var _0x42055d={};_0x42055d[_0x17db43]={'$like':'%'+_0x2fe612[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0x42055d;})});}_0x284b82=_['merge']({},_0x284b82,_0x2fe612[_0x6780('0x52')]);return _0x369467['getTeams'](_0x284b82);}})[_0x6780('0x3c')](function(_0x16051b){if(_0x16051b){_0x1a049a=_0x16051b['length'];if(!_0x2fe612[_0x6780('0x43')]['hasOwnProperty']('nolimit')){_0x284b82[_0x6780('0x27')]=qs[_0x6780('0x27')](_0x2fe612[_0x6780('0x43')][_0x6780('0x27')]);_0x284b82[_0x6780('0x24')]=qs['offset'](_0x2fe612[_0x6780('0x43')]['offset']);}return _0x369467[_0x6780('0x70')](_0x284b82);}})[_0x6780('0x3c')](function(_0x52115d){if(_0x52115d){return _0x52115d?{'count':_0x1a049a,'rows':_0x52115d}:null;}})[_0x6780('0x3c')](respondWithResult(_0x4e7a8a,null))[_0x6780('0x56')](handleError(_0x4e7a8a,null));};exports[_0x6780('0x72')]=function(_0x24af80,_0x132a3f,_0x32b73c){var _0x5f3f54=_0x24af80[_0x6780('0x67')][_0x6780('0x73')];var _0x36271f=_[_0x6780('0x35')](_0x5f3f54,'id');return db[_0x6780('0x71')][_0x6780('0x54')]({'where':{'id':_0x36271f},'attributes':['id'],'include':[{'model':db[_0x6780('0x74')],'as':_0x6780('0x75'),'attributes':['id',_0x6780('0x3a'),_0x6780('0x76'),_0x6780('0x77'),'interface'],'raw':!![]}]})[_0x6780('0x3c')](function(_0x36ab3b){if(_0x36ab3b){var _0x55cf4a=_[_0x6780('0x78')](_0x36ab3b,function(_0x4ce4a6){var _0x42b2ef=_0x4ce4a6['get']({'plain':!![]});_0x42b2ef[_0x6780('0x75')][_0x6780('0x79')](function(_0x39bd56){_0x39bd56[_0x6780('0x7a')]=_[_0x6780('0x37')](_0x5f3f54,{'id':_0x42b2ef['id']})[_0x6780('0x7a')];});return _0x42b2ef[_0x6780('0x75')];});return db[_0x6780('0x40')][_0x6780('0x37')]({'where':{'id':_0x24af80[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](function(_0x4dc60c){return db[_0x6780('0x7b')][_0x6780('0x7c')](function(_0x1cd95a){return _0x4dc60c['addTeams'](_0x36271f,{'transaction':_0x1cd95a})[_0x6780('0x3c')](function(){return BPromise[_0x6780('0x7d')](_0x5f3f54,function(_0x5a2ddc){return db[_0x6780('0x7e')][_0x6780('0x7f')]({'TeamId':_0x5a2ddc['id'],'VoiceQueueId':_0x24af80[_0x6780('0x57')]['id'],'penalty':_0x5a2ddc['penalty']},{'transaction':_0x1cd95a});});})[_0x6780('0x3c')](function(){return BPromise[_0x6780('0x7d')](_0x55cf4a,function(_0x199796){return db[_0x6780('0x80')][_0x6780('0x81')]({'where':{'UserId':_0x199796['id'],'VoiceQueueId':_0x24af80[_0x6780('0x57')]['id']},'defaults':{'penalty':_0x199796[_0x6780('0x7a')]},'transaction':_0x1cd95a});});})[_0x6780('0x3c')](function(){return BPromise[_0x6780('0x7d')](_[_0x6780('0x33')](_0x55cf4a,{'online':!![]}),function(_0x177517){return db[_0x6780('0x82')][_0x6780('0x7f')]({'membername':_0x177517['name'],'UserId':_0x177517['id'],'queue_name':_0x4dc60c[_0x6780('0x3a')],'VoiceQueueId':_0x4dc60c['id'],'interface':_[_0x6780('0x83')](_0x177517['interface'])?util[_0x6780('0x84')](_0x6780('0x85'),_0x177517['name']):_0x177517[_0x6780('0x86')],'paused':_0x177517[_0x6780('0x77')]||![],'penalty':_0x177517[_0x6780('0x7a')]},{'transaction':_0x1cd95a});});})['then'](function(){_0x55cf4a[_0x6780('0x79')](function(_0x54b4d6){socket['emit'](_0x6780('0x87'),{'UserId':_0x54b4d6['id'],'VoiceQueueId':_0x4dc60c['id']});});});});});}})[_0x6780('0x3c')](respondWithStatusCode(_0x132a3f,null))[_0x6780('0x56')](handleError(_0x132a3f,null));};exports['removeTeams']=function(_0x1871a7,_0x3caa28,_0x97c53b){return db['Team'][_0x6780('0x54')]({'where':{'id':_0x1871a7[_0x6780('0x43')][_0x6780('0x88')]},'attributes':['id'],'include':[{'model':db[_0x6780('0x74')],'as':_0x6780('0x75'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3caa28,null))[_0x6780('0x3c')](function(_0x12bb1d){var _0x9e5f30=_[_0x6780('0x35')](_0x12bb1d,'id');var _0x12219a=[];var _0x2e4542=[];var _0x413d06=squel[_0x6780('0x89')]();_0x413d06[_0x6780('0x8a')](_0x6780('0x8b'))[_0x6780('0x8c')](_0x6780('0x8d'),'tq')[_0x6780('0x8e')](_0x6780('0x8f'),'ut',_0x6780('0x90'))['where'](_0x6780('0x91'),_0x1871a7['params']['id']);for(var _0x528ed5=0x0;_0x528ed5<_0x12bb1d[_0x6780('0x49')];_0x528ed5+=0x1){let _0x3e409f=_0x12bb1d[_0x528ed5];for(var _0x40c97d=0x0;_0x40c97d<_0x3e409f[_0x6780('0x75')]['length'];_0x40c97d+=0x1){let _0x252633=_0x3e409f[_0x6780('0x75')][_0x40c97d];var _0x58fe7d=_0x413d06[_0x6780('0x63')]();_0x58fe7d['where'](_0x6780('0x92'),_0x252633['id']);_0x2e4542[_0x6780('0x93')](db[_0x6780('0x7b')][_0x6780('0x43')](_0x58fe7d[_0x6780('0x94')](),{'type':db[_0x6780('0x7b')]['QueryTypes'][_0x6780('0x95')]})['then'](function(_0x5cafbb){if(_0x5cafbb['length']===0x1){return _0x252633['id'];}else{var _0x242f70=_[_0x6780('0x96')](_[_0x6780('0x35')](_0x5cafbb,_0x6780('0x97')),function(_0x344b82){return _[_0x6780('0x36')](_0x9e5f30,_0x344b82);});if(_0x242f70){return _0x252633['id'];}}}));}}return BPromise[_0x6780('0x98')](_0x2e4542)[_0x6780('0x3c')](function(_0x32ce2a){_0x12219a=_(_0x12219a)[_0x6780('0x99')](_0x32ce2a)['compact']()['value']();return db[_0x6780('0x40')]['find']({'where':{'id':_0x1871a7[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](function(_0x237c55){return db[_0x6780('0x7b')][_0x6780('0x7c')](function(_0x35ab2b){return _0x237c55[_0x6780('0x9a')](_0x1871a7['query']['ids'],{'transaction':_0x35ab2b})[_0x6780('0x3c')](function(){if(!_[_0x6780('0x9b')](_0x12219a)){return _0x237c55[_0x6780('0x9c')](_0x12219a,{'transaction':_0x35ab2b})[_0x6780('0x3c')](function(){return db[_0x6780('0x82')][_0x6780('0x2e')]({'where':{'VoiceQueueId':_0x1871a7[_0x6780('0x57')]['id'],'UserId':_0x12219a},'transaction':_0x35ab2b});});}})[_0x6780('0x3c')](function(){_0x12219a[_0x6780('0x79')](function(_0x286d34){socket[_0x6780('0x9d')](_0x6780('0x9e'),{'UserId':_0x286d34,'VoiceQueueId':_0x237c55['id']});});});});});});})['then'](respondWithStatusCode(_0x3caa28,null))['catch'](handleError(_0x3caa28,null));};exports[_0x6780('0x9f')]=function(_0x7d8634,_0x4d50b9,_0x2d98ad){var _0x130100,_0x40cf07;return db[_0x6780('0x40')][_0x6780('0x37')]({'where':{'id':_0x7d8634[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x4d50b9,null))[_0x6780('0x3c')](function(_0x371a7e){if(_0x371a7e){_0x40cf07=_0x371a7e;return _0x371a7e['addAgents'](_0x7d8634[_0x6780('0x67')]['ids'],_[_0x6780('0x64')](_0x7d8634[_0x6780('0x67')],[_0x6780('0x88'),'id'])||{})[_0x6780('0xa0')](function(_0x2b130e){for(var _0x53c3aa=0x0;_0x53c3aa<_0x7d8634[_0x6780('0x67')][_0x6780('0x88')]['length'];_0x53c3aa+=0x1){socket[_0x6780('0x9d')](_0x6780('0x87'),{'UserId':Number(_0x7d8634['body']['ids'][_0x53c3aa]),'VoiceQueueId':Number(_0x7d8634['params']['id'])});}return _0x2b130e;});}})[_0x6780('0x3c')](function(_0xe33edb){_0x130100=_0xe33edb||[];if(_0x40cf07){return db[_0x6780('0x74')][_0x6780('0x54')]({'where':{'id':_0x7d8634[_0x6780('0x67')][_0x6780('0x88')]},'attributes':['id',_0x6780('0x3a'),_0x6780('0x76'),_0x6780('0x77'),_0x6780('0x86')],'raw':!![]});}})[_0x6780('0x3c')](function(_0x3f9542){if(!_[_0x6780('0x9b')](_0x3f9542)){var _0x2a03bc=[];for(var _0xaaa693=0x0;_0xaaa693<_0x3f9542[_0x6780('0x49')];_0xaaa693++){if(_0x3f9542[_0xaaa693][_0x6780('0x76')]){_0x2a03bc[_0x6780('0x93')](db['UserVoiceQueueRt'][_0x6780('0x7f')]({'membername':_0x3f9542[_0xaaa693][_0x6780('0x3a')],'UserId':_0x3f9542[_0xaaa693]['id'],'queue_name':_0x40cf07['name'],'VoiceQueueId':_0x40cf07['id'],'interface':_[_0x6780('0x83')](_0x3f9542[_0xaaa693][_0x6780('0x86')])?util[_0x6780('0x84')](_0x6780('0x85'),_0x3f9542[_0xaaa693]['name']):_0x3f9542[_0xaaa693]['interface'],'paused':_0x3f9542[_0xaaa693][_0x6780('0x77')]||![],'penalty':_0x7d8634[_0x6780('0x67')]['penalty']||0x0}));}}return BPromise['all'](_0x2a03bc);}})['then'](function(){return _0x130100;})[_0x6780('0x3c')](respondWithResult(_0x4d50b9,null))[_0x6780('0x56')](handleError(_0x4d50b9,null));};exports[_0x6780('0x9c')]=function(_0x4807b9,_0x136f5f,_0x57172f){return db[_0x6780('0x40')]['find']({'where':{'id':_0x4807b9[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x136f5f,null))[_0x6780('0x3c')](function(_0x20047d){if(_0x20047d){return _0x20047d[_0x6780('0x9c')](_0x4807b9[_0x6780('0x43')][_0x6780('0x88')])['then'](function(){if(_[_0x6780('0xa1')](_0x4807b9[_0x6780('0x43')][_0x6780('0x88')])){for(var _0x3aed9f=0x0;_0x3aed9f<_0x4807b9[_0x6780('0x43')][_0x6780('0x88')]['length'];_0x3aed9f+=0x1){socket['emit'](_0x6780('0x9e'),{'UserId':Number(_0x4807b9[_0x6780('0x43')][_0x6780('0x88')][_0x3aed9f]),'VoiceQueueId':Number(_0x4807b9['params']['id'])});}}else{socket[_0x6780('0x9d')]('userVoiceQueue:remove',{'UserId':Number(_0x4807b9[_0x6780('0x43')][_0x6780('0x88')]),'VoiceQueueId':Number(_0x4807b9[_0x6780('0x57')]['id'])});}});}})[_0x6780('0x3c')](function(_0x33eccb){return db['UserVoiceQueueRt'][_0x6780('0x2e')]({'where':{'VoiceQueueId':_0x4807b9['params']['id'],'UserId':_0x4807b9[_0x6780('0x43')][_0x6780('0x88')]}})[_0x6780('0x3c')](function(){return _0x33eccb;});})[_0x6780('0x3c')](respondWithStatusCode(_0x136f5f,null))['catch'](handleError(_0x136f5f,null));};exports['getAgents']=function(_0x40c519,_0x17d3e3,_0x354ed9){var _0x5e9a93={};var _0x1372fa={};var _0x215831;var _0x280664;return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x40c519['params']['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x17d3e3,null))[_0x6780('0x3c')](function(_0x43dfab){if(_0x43dfab){_0x215831=_0x43dfab;_0x1372fa['model']=_[_0x6780('0x44')](db[_0x6780('0x74')]['rawAttributes']);_0x1372fa[_0x6780('0x43')]=_[_0x6780('0x44')](_0x40c519[_0x6780('0x43')]);_0x1372fa['filters']=_[_0x6780('0x46')](_0x1372fa['model'],_0x1372fa[_0x6780('0x43')]);_0x5e9a93[_0x6780('0x48')]=_['intersection'](_0x1372fa[_0x6780('0x42')],qs[_0x6780('0x47')](_0x40c519[_0x6780('0x43')]['fields']));_0x5e9a93[_0x6780('0x48')]=_0x5e9a93[_0x6780('0x48')][_0x6780('0x49')]?_0x5e9a93['attributes']:_0x1372fa[_0x6780('0x42')];_0x5e9a93['order']=qs[_0x6780('0x4d')](_0x40c519[_0x6780('0x43')]['sort']);_0x5e9a93['where']=qs[_0x6780('0x45')](_['pick'](_0x40c519[_0x6780('0x43')],_0x1372fa['filters']));if(_0x40c519[_0x6780('0x43')]['filter']){_0x5e9a93[_0x6780('0x4e')]=_[_0x6780('0x51')](_0x5e9a93[_0x6780('0x4e')],{'$or':_[_0x6780('0x35')](_0x5e9a93[_0x6780('0x48')],function(_0x164763){var _0x332343={};_0x332343[_0x164763]={'$like':'%'+_0x40c519[_0x6780('0x43')]['filter']+'%'};return _0x332343;})});}_0x5e9a93=_['merge']({},_0x5e9a93,_0x40c519[_0x6780('0x52')]);return _0x215831[_0x6780('0xa2')](_0x5e9a93);}})[_0x6780('0x3c')](function(_0x3d554f){if(_0x3d554f){_0x280664=_0x3d554f[_0x6780('0x49')];if(!_0x40c519[_0x6780('0x43')]['hasOwnProperty'](_0x6780('0x4b'))){_0x5e9a93[_0x6780('0x27')]=qs[_0x6780('0x27')](_0x40c519[_0x6780('0x43')][_0x6780('0x27')]);_0x5e9a93['offset']=qs[_0x6780('0x24')](_0x40c519[_0x6780('0x43')][_0x6780('0x24')]);}return _0x215831[_0x6780('0xa2')](_0x5e9a93);}})[_0x6780('0x3c')](function(_0x5ed8a0){if(_0x5ed8a0){return _0x5ed8a0?{'count':_0x280664,'rows':_0x5ed8a0}:null;}})[_0x6780('0x3c')](respondWithResult(_0x17d3e3,null))[_0x6780('0x56')](handleError(_0x17d3e3,null));};exports[_0x6780('0xa3')]=function(_0x105f76,_0x5006bd,_0x50f2cd){var _0x363359={};var _0x20ff43={};var _0x33228d;var _0x43a737;return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x105f76[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x5006bd,null))['then'](function(_0x445f62){if(_0x445f62){_0x33228d=_0x445f62;_0x20ff43[_0x6780('0x42')]=_[_0x6780('0x44')](db['UserVoiceQueueRt'][_0x6780('0x58')]);_0x20ff43[_0x6780('0x43')]=_['keys'](_0x105f76[_0x6780('0x43')]);_0x20ff43[_0x6780('0x45')]=_[_0x6780('0x46')](_0x20ff43[_0x6780('0x42')],_0x20ff43['query']);_0x363359[_0x6780('0x48')]=_[_0x6780('0x46')](_0x20ff43[_0x6780('0x42')],qs[_0x6780('0x47')](_0x105f76['query']['fields']));_0x363359['attributes']=_0x363359['attributes'][_0x6780('0x49')]?_0x363359['attributes']:_0x20ff43[_0x6780('0x42')];_0x363359[_0x6780('0x4c')]=qs['sort'](_0x105f76[_0x6780('0x43')]['sort']);_0x363359['where']=qs[_0x6780('0x45')](_[_0x6780('0x4f')](_0x105f76[_0x6780('0x43')],_0x20ff43[_0x6780('0x45')]));if(_0x105f76[_0x6780('0x43')][_0x6780('0x33')]){_0x363359['where']=_['merge'](_0x363359[_0x6780('0x4e')],{'$or':_['map'](_0x363359[_0x6780('0x48')],function(_0x170fe7){var _0x5a7eab={};_0x5a7eab[_0x170fe7]={'$like':'%'+_0x105f76[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0x5a7eab;})});}_0x363359=_[_0x6780('0x51')]({},_0x363359,_0x105f76[_0x6780('0x52')]);return _0x33228d[_0x6780('0xa3')](_0x363359);}})[_0x6780('0x3c')](function(_0x35864e){if(_0x35864e){_0x43a737=_0x35864e[_0x6780('0x49')];if(!_0x105f76[_0x6780('0x43')][_0x6780('0x4a')](_0x6780('0x4b'))){_0x363359[_0x6780('0x27')]=qs['limit'](_0x105f76[_0x6780('0x43')]['limit']);_0x363359[_0x6780('0x24')]=qs['offset'](_0x105f76[_0x6780('0x43')][_0x6780('0x24')]);}return _0x33228d[_0x6780('0xa3')](_0x363359);}})[_0x6780('0x3c')](function(_0x27e683){return _0x27e683?{'count':_0x43a737,'rows':_0x27e683}:null;})[_0x6780('0x3c')](respondWithResult(_0x5006bd,null))[_0x6780('0x56')](handleError(_0x5006bd,null));};exports[_0x6780('0xa4')]=function(_0x29d456,_0x551f90,_0x188957){var _0x1b92fa={};var _0x43a39f={};var _0x53d643;var _0x2d306f;return db[_0x6780('0x40')]['findOne']({'where':{'id':_0x29d456[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x551f90,null))[_0x6780('0x3c')](function(_0x927712){if(_0x927712){_0x53d643=_0x927712;_0x43a39f[_0x6780('0x42')]=_[_0x6780('0x44')](db[_0x6780('0xa5')][_0x6780('0x58')]);_0x43a39f[_0x6780('0x43')]=_[_0x6780('0x44')](_0x29d456[_0x6780('0x43')]);_0x43a39f[_0x6780('0x45')]=_[_0x6780('0x46')](_0x43a39f[_0x6780('0x42')],_0x43a39f[_0x6780('0x43')]);_0x1b92fa['attributes']=_[_0x6780('0x46')](_0x43a39f['model'],qs[_0x6780('0x47')](_0x29d456[_0x6780('0x43')][_0x6780('0x47')]));_0x1b92fa[_0x6780('0x48')]=_0x1b92fa[_0x6780('0x48')][_0x6780('0x49')]?_0x1b92fa[_0x6780('0x48')]:_0x43a39f['model'];_0x1b92fa[_0x6780('0x4c')]=qs[_0x6780('0x4d')](_0x29d456[_0x6780('0x43')][_0x6780('0x4d')]);_0x1b92fa[_0x6780('0x4e')]=qs['filters'](_[_0x6780('0x4f')](_0x29d456['query'],_0x43a39f[_0x6780('0x45')]));if(_0x29d456[_0x6780('0x43')][_0x6780('0x33')]){_0x1b92fa[_0x6780('0x4e')]=_[_0x6780('0x51')](_0x1b92fa[_0x6780('0x4e')],{'$or':_[_0x6780('0x35')](_0x1b92fa[_0x6780('0x48')],function(_0x30b06a){var _0x2b58f6={};_0x2b58f6[_0x30b06a]={'$like':'%'+_0x29d456[_0x6780('0x43')][_0x6780('0x33')]+'%'};return _0x2b58f6;})});}_0x1b92fa=_[_0x6780('0x51')]({},_0x1b92fa,_0x29d456[_0x6780('0x52')]);return _0x53d643[_0x6780('0xa4')](_0x1b92fa);}})['then'](function(_0x13a82e){if(_0x13a82e){_0x2d306f=_0x13a82e[_0x6780('0x49')];if(!_0x29d456[_0x6780('0x43')][_0x6780('0x4a')]('nolimit')){_0x1b92fa['limit']=qs[_0x6780('0x27')](_0x29d456[_0x6780('0x43')]['limit']);_0x1b92fa[_0x6780('0x24')]=qs[_0x6780('0x24')](_0x29d456[_0x6780('0x43')][_0x6780('0x24')]);}return _0x53d643[_0x6780('0xa4')](_0x1b92fa);}})[_0x6780('0x3c')](function(_0x623816){if(_0x623816){return _0x623816?{'count':_0x2d306f,'rows':_0x623816}:null;}})[_0x6780('0x3c')](respondWithResult(_0x551f90,null))[_0x6780('0x56')](handleError(_0x551f90,null));};exports[_0x6780('0xa6')]=function(_0x12ae0d,_0x49b182,_0x3b0c69){var _0x8ece28,_0x425561;return db[_0x6780('0x40')][_0x6780('0x37')]({'where':{'id':_0x12ae0d[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x49b182,null))[_0x6780('0x3c')](function(_0x1b7773){if(_0x1b7773){_0x425561=_0x1b7773;return _0x1b7773['addLists'](_0x12ae0d[_0x6780('0x67')][_0x6780('0x88')],_[_0x6780('0x64')](_0x12ae0d['body'],[_0x6780('0x88'),'id'])||{});}return null;})[_0x6780('0xa0')](function(_0xac353){var _0x4f3cb2;_0x8ece28=_0xac353||[];var _0x33a7df=[];if(_0xac353){for(var _0xcd2f83=0x0;_0xcd2f83<_0xac353[_0x6780('0x49')];_0xcd2f83+=0x1){var _0x22c22e=_0xac353[_0xcd2f83]['get']({'plain':!![]});_0x425561[_0x6780('0xa7')]=_0x12ae0d['body'][_0x6780('0xa7')]?_0x12ae0d[_0x6780('0x67')]['dialCheckDuplicateType']:_0x425561[_0x6780('0xa7')];switch(_0x425561[_0x6780('0xa7')]){case'always':_0x4f3cb2=squel[_0x6780('0xa8')]()['into'](_0x6780('0xa9'))[_0x6780('0xaa')]([_0x6780('0xab'),_0x6780('0xac'),_0x6780('0xad'),_0x6780('0xae'),_0x6780('0x6a'),_0x6780('0x65'),_0x6780('0x66')],squel[_0x6780('0x89')]()[_0x6780('0x8a')](_0x6780('0xab'),_0x6780('0xab'))['field'](_0x6780('0xaf'),_0x6780('0xac'))['field']('id',_0x6780('0xad'))['field'](_0x22c22e['CmListId'][_0x6780('0x94')](),_0x6780('0xae'))[_0x6780('0x8a')](_0x12ae0d[_0x6780('0x57')]['id'][_0x6780('0x94')](),_0x6780('0x6a'))['field'](_0x6780('0xaf'),_0x6780('0x65'))[_0x6780('0x8a')](_0x6780('0xaf'),'updatedAt')[_0x6780('0x8c')](_0x6780('0xb0'))[_0x6780('0x4e')](_0x6780('0xb1'))[_0x6780('0x4e')]('ListId\x20=\x20?',_0x22c22e[_0x6780('0xb2')][_0x6780('0x94')]())[_0x6780('0x4e')](_0x6780('0xb3'))[_0x6780('0x4e')]('phone\x20NOT\x20IN\x20(?)',squel[_0x6780('0x89')]()[_0x6780('0x8a')](_0x6780('0xb4'))[_0x6780('0x8c')](_0x6780('0xb5'))[_0x6780('0x4e')](_0x6780('0x91'),_0x12ae0d[_0x6780('0x57')]['id']['toString']()))[_0x6780('0x4e')](_0x6780('0xb6'),squel[_0x6780('0x89')]()[_0x6780('0x8a')]('COALESCE(phone,\x27\x27)')[_0x6780('0x8c')]('cm_hopper')[_0x6780('0x4e')]('VoiceQueueId\x20=\x20?',_0x12ae0d['params']['id'][_0x6780('0x94')]())))[_0x6780('0x94')]();break;case _0x6780('0xb7'):_0x4f3cb2=squel[_0x6780('0xa8')]()[_0x6780('0xb8')](_0x6780('0xa9'))[_0x6780('0xaa')]([_0x6780('0xab'),_0x6780('0xac'),_0x6780('0xad'),_0x6780('0xae'),_0x6780('0x6a'),_0x6780('0x65'),_0x6780('0x66')],squel[_0x6780('0x89')]()[_0x6780('0x8a')]('phone',_0x6780('0xab'))[_0x6780('0x8a')](_0x6780('0xaf'),'scheduledAt')['field']('id',_0x6780('0xad'))[_0x6780('0x8a')](_0x22c22e[_0x6780('0xb2')]['toString'](),_0x6780('0xae'))[_0x6780('0x8a')](_0x12ae0d[_0x6780('0x57')]['id']['toString'](),_0x6780('0x6a'))[_0x6780('0x8a')](_0x6780('0xaf'),'createdAt')['field'](_0x6780('0xaf'),_0x6780('0x66'))[_0x6780('0x8c')](_0x6780('0xb0'))[_0x6780('0x4e')](_0x6780('0xb1'))[_0x6780('0x4e')](_0x6780('0xb9'),_0x22c22e[_0x6780('0xb2')][_0x6780('0x94')]())['where'](_0x6780('0xb3'))[_0x6780('0x4e')]('phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x6780('0x8a')](_0x6780('0xba'))['from'](_0x6780('0xa9'))[_0x6780('0x4e')](_0x6780('0x91'),_0x12ae0d['params']['id'][_0x6780('0x94')]())))[_0x6780('0x94')]();break;default:_0x4f3cb2=squel['insert']()[_0x6780('0xb8')](_0x6780('0xa9'))[_0x6780('0xaa')]([_0x6780('0xab'),_0x6780('0xac'),_0x6780('0xad'),_0x6780('0xae'),_0x6780('0x6a'),'createdAt','updatedAt'],squel[_0x6780('0x89')]()[_0x6780('0x8a')]('phone',_0x6780('0xab'))[_0x6780('0x8a')]('NOW()',_0x6780('0xac'))[_0x6780('0x8a')]('id',_0x6780('0xad'))[_0x6780('0x8a')](_0x22c22e['CmListId'][_0x6780('0x94')](),_0x6780('0xae'))[_0x6780('0x8a')](_0x12ae0d[_0x6780('0x57')]['id'][_0x6780('0x94')](),_0x6780('0x6a'))[_0x6780('0x8a')](_0x6780('0xaf'),'createdAt')[_0x6780('0x8a')](_0x6780('0xaf'),_0x6780('0x66'))[_0x6780('0x8c')]('cm_contacts')[_0x6780('0x4e')](_0x6780('0xb1'))[_0x6780('0x4e')](_0x6780('0xb9'),_0x22c22e[_0x6780('0xb2')][_0x6780('0x94')]())[_0x6780('0x4e')](_0x6780('0xb3')))[_0x6780('0x94')]();}_0x33a7df[_0x6780('0x93')](db['sequelize']['query'](_0x4f3cb2));}return BPromise['all'](_0x33a7df);}})[_0x6780('0x3c')](function(){return _0x8ece28;})['then'](respondWithResult(_0x49b182,null))['catch'](handleError(_0x49b182,null));};exports[_0x6780('0xbb')]=function(_0x1ba2a3,_0x2f1def,_0x3a4d68){return db['VoiceQueue']['find']({'where':{'id':_0x1ba2a3[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x2f1def,null))[_0x6780('0x3c')](function(_0x285de3){if(_0x285de3){return _0x285de3[_0x6780('0xbb')](_0x1ba2a3[_0x6780('0x43')][_0x6780('0x88')]);}})[_0x6780('0x3c')](function(_0x5db364){if(_0x5db364){return db[_0x6780('0x69')][_0x6780('0x2e')]({'where':{'ListId':_0x1ba2a3[_0x6780('0x43')][_0x6780('0x88')],'VoiceQueueId':_0x1ba2a3[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](function(){return _0x5db364;});}})[_0x6780('0x3c')](respondWithStatusCode(_0x2f1def,null))[_0x6780('0x56')](handleError(_0x2f1def,null));};exports[_0x6780('0xbc')]=function(_0x247832,_0x130695,_0x116e3e){var _0xaa2e0b={};var _0x15d79f={};var _0x358c31;var _0x4d73fb;return db[_0x6780('0x40')][_0x6780('0x68')]({'where':{'id':_0x247832[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x130695,null))['then'](function(_0x576461){if(_0x576461){_0x358c31=_0x576461;_0x15d79f[_0x6780('0x42')]=_[_0x6780('0x44')](db['CmList'][_0x6780('0x58')]);_0x15d79f[_0x6780('0x43')]=_[_0x6780('0x44')](_0x247832[_0x6780('0x43')]);_0x15d79f[_0x6780('0x45')]=_['intersection'](_0x15d79f[_0x6780('0x42')],_0x15d79f['query']);_0xaa2e0b[_0x6780('0x48')]=_['intersection'](_0x15d79f[_0x6780('0x42')],qs[_0x6780('0x47')](_0x247832[_0x6780('0x43')][_0x6780('0x47')]));_0xaa2e0b[_0x6780('0x48')]=_0xaa2e0b['attributes'][_0x6780('0x49')]?_0xaa2e0b[_0x6780('0x48')]:_0x15d79f[_0x6780('0x42')];_0xaa2e0b[_0x6780('0x4c')]=qs[_0x6780('0x4d')](_0x247832[_0x6780('0x43')][_0x6780('0x4d')]);_0xaa2e0b[_0x6780('0x4e')]=qs[_0x6780('0x45')](_[_0x6780('0x4f')](_0x247832['query'],_0x15d79f[_0x6780('0x45')]));if(_0x247832['query']['filter']){_0xaa2e0b[_0x6780('0x4e')]=_[_0x6780('0x51')](_0xaa2e0b[_0x6780('0x4e')],{'$or':_[_0x6780('0x35')](_0xaa2e0b[_0x6780('0x48')],function(_0x26e35b){var _0x4b3a51={};_0x4b3a51[_0x26e35b]={'$like':'%'+_0x247832[_0x6780('0x43')]['filter']+'%'};return _0x4b3a51;})});}_0xaa2e0b=_['merge']({},_0xaa2e0b,_0x247832[_0x6780('0x52')]);return _0x358c31[_0x6780('0xbc')](_0xaa2e0b);}})[_0x6780('0x3c')](function(_0x1d97e0){if(_0x1d97e0){_0x4d73fb=_0x1d97e0['length'];if(!_0x247832[_0x6780('0x43')][_0x6780('0x4a')](_0x6780('0x4b'))){_0xaa2e0b['limit']=qs[_0x6780('0x27')](_0x247832[_0x6780('0x43')][_0x6780('0x27')]);_0xaa2e0b[_0x6780('0x24')]=qs['offset'](_0x247832['query'][_0x6780('0x24')]);}return _0x358c31[_0x6780('0xbc')](_0xaa2e0b);}})[_0x6780('0x3c')](function(_0x36837a){if(_0x36837a){return _0x36837a?{'count':_0x4d73fb,'rows':_0x36837a}:null;}})[_0x6780('0x3c')](respondWithResult(_0x130695,null))[_0x6780('0x56')](handleError(_0x130695,null));};exports['addBlackLists']=function(_0x32b8d9,_0x1751d5,_0x3fe7f7){var _0x410ddf,_0x1ce2d2;return db[_0x6780('0x40')][_0x6780('0x37')]({'where':{'id':_0x32b8d9[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x1751d5,null))[_0x6780('0x3c')](function(_0x330867){if(_0x330867){_0x1ce2d2=_0x330867;return _0x330867[_0x6780('0xbd')](_0x32b8d9[_0x6780('0x67')]['ids'],_[_0x6780('0x64')](_0x32b8d9['body'],[_0x6780('0x88'),'id'])||{});}return null;})[_0x6780('0xa0')](function(_0x496392){var _0x402482;_0x410ddf=_0x496392||[];var _0x4079c1=[];if(_0x496392){for(var _0x1b8c26=0x0;_0x1b8c26<_0x496392[_0x6780('0x49')];_0x1b8c26+=0x1){var _0xe3986a=_0x496392[_0x1b8c26][_0x6780('0x5c')]({'plain':!![]});_0x402482=squel[_0x6780('0xa8')]()['into'](_0x6780('0xbe'))['fromQuery']([_0x6780('0xab'),_0x6780('0xad'),_0x6780('0xae'),'VoiceQueueId','createdAt',_0x6780('0x66')],squel['select']()[_0x6780('0x8a')](_0x6780('0xab'),_0x6780('0xab'))[_0x6780('0x8a')]('id',_0x6780('0xad'))[_0x6780('0x8a')](_0xe3986a[_0x6780('0xb2')][_0x6780('0x94')](),_0x6780('0xae'))['field'](_0x32b8d9['params']['id'][_0x6780('0x94')](),_0x6780('0x6a'))[_0x6780('0x8a')](_0x6780('0xaf'),_0x6780('0x65'))[_0x6780('0x8a')]('NOW()',_0x6780('0x66'))[_0x6780('0x8c')](_0x6780('0xb0'))[_0x6780('0x4e')](_0x6780('0xb1'))['where'](_0x6780('0xb9'),_0xe3986a['CmListId'][_0x6780('0x94')]())[_0x6780('0x4e')](_0x6780('0xb3')))[_0x6780('0x94')]();_0x4079c1[_0x6780('0x93')](db[_0x6780('0x7b')][_0x6780('0x43')](_0x402482));}return BPromise[_0x6780('0x98')](_0x4079c1);}})[_0x6780('0x3c')](function(){return _0x410ddf;})[_0x6780('0x3c')](respondWithResult(_0x1751d5,null))[_0x6780('0x56')](handleError(_0x1751d5,null));};exports[_0x6780('0xbf')]=function(_0x4e229b,_0x582de9,_0x47af9d){return db[_0x6780('0x40')]['find']({'where':{'id':_0x4e229b[_0x6780('0x57')]['id']}})[_0x6780('0x3c')](handleEntityNotFound(_0x582de9,null))['then'](function(_0x5ec3eb){if(_0x5ec3eb){return _0x5ec3eb[_0x6780('0xbf')](_0x4e229b['query']['ids']);}})[_0x6780('0x3c')](function(_0xa71058){if(_0xa71058){return db[_0x6780('0x6f')][_0x6780('0x2e')]({'where':{'ListId':_0x4e229b[_0x6780('0x43')][_0x6780('0x88')],'VoiceQueueId':_0x4e229b['params']['id']}})[_0x6780('0x3c')](function(){return _0xa71058;});}})[_0x6780('0x3c')](respondWithStatusCode(_0x582de9,null))[_0x6780('0x56')](handleError(_0x582de9,null));};
\ No newline at end of file
+var _0x99cb=['teams','Agents','online','interface','flatMap','penalty','transaction','each','TeamVoiceQueue','upsert','UserVoiceQueue','isNil','format','SIP/%s','forEach','emit','removeTeams','ids','User','select','field','tq.TeamId','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','userVoiceQueue:save','isEmpty','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','insert','into','fromQuery','scheduledAt','ListId','phone','ContactId','CmListId','toString','NOW()','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','deletedAt\x20IS\x20NULL','removeLists','getBlackLists','addBlackLists','removeBlackLists','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','defaults','localhost','socket.io-emitter','./voiceQueue.socket','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','VoiceQueues','QueueCampaigns','outbound','filter','ignore','value','type','find','name','UserProfileResource','destroy','end','error','stack','send','index','map','VoiceQueue','rawAttributes','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','merge','includeAll','findAll','rows','show','params','include','options','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','inbound','getHoppers','findOne','order','VoiceQueueId','CmHopper','getHopperHistories','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x99cb,0x101));var _0xb99c=function(_0x42dcd8,_0x3ff789){_0x42dcd8=_0x42dcd8-0x0;var _0x1b7285=_0x99cb[_0x42dcd8];return _0x1b7285;};'use strict';var emlformat=require(_0xb99c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb99c('0x1'));var jsonpatch=require(_0xb99c('0x2'));var rp=require(_0xb99c('0x3'));var moment=require('moment');var BPromise=require(_0xb99c('0x4'));var Mustache=require(_0xb99c('0x5'));var util=require(_0xb99c('0x6'));var path=require(_0xb99c('0x7'));var sox=require('sox');var csv=require(_0xb99c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb99c('0x9'));var _=require(_0xb99c('0xa'));var squel=require(_0xb99c('0xb'));var crypto=require(_0xb99c('0xc'));var jsforce=require(_0xb99c('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb99c('0xe'));var Papa=require(_0xb99c('0xf'));var Redis=require(_0xb99c('0x10'));var authService=require(_0xb99c('0x11'));var qs=require(_0xb99c('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xb99c('0x13'))(_0xb99c('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb99c('0x15'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xb99c('0x16')](config['redis'],{'host':_0xb99c('0x17'),'port':0x18eb});var socket=require(_0xb99c('0x18'))(new Redis(config['redis']));require(_0xb99c('0x19'))['register'](socket);function respondWithStatusCode(_0x1f52f6,_0x4d75c6){_0x4d75c6=_0x4d75c6||0xcc;return function(_0x5ae908){if(_0x5ae908){return _0x1f52f6[_0xb99c('0x1a')](_0x4d75c6);}return _0x1f52f6[_0xb99c('0x1b')](_0x4d75c6)['end']();};}function respondWithResult(_0xd81234,_0x5e0d76){_0x5e0d76=_0x5e0d76||0xc8;return function(_0x434198){if(_0x434198){return _0xd81234[_0xb99c('0x1b')](_0x5e0d76)[_0xb99c('0x1c')](_0x434198);}};}function respondWithFilteredResult(_0x17f616,_0x5f3555){return function(_0x5715e5){if(_0x5715e5){var _0x30cbf9=typeof _0x5f3555[_0xb99c('0x1d')]==='undefined'&&typeof _0x5f3555[_0xb99c('0x1e')]===_0xb99c('0x1f');var _0x548ab2=_0x5715e5[_0xb99c('0x20')];var _0x5c99a2=_0x30cbf9?0x0:_0x5f3555['offset'];var _0x3077b2=_0x30cbf9?_0x5715e5['count']:_0x5f3555[_0xb99c('0x1d')]+_0x5f3555['limit'];var _0x4a999f;if(_0x3077b2>=_0x548ab2){_0x3077b2=_0x548ab2;_0x4a999f=0xc8;}else{_0x4a999f=0xce;}_0x17f616[_0xb99c('0x1b')](_0x4a999f);return _0x17f616[_0xb99c('0x21')](_0xb99c('0x22'),_0x5c99a2+'-'+_0x3077b2+'/'+_0x548ab2)[_0xb99c('0x1c')](_0x5715e5);}return null;};}function patchUpdates(_0x2a6c11){return function(_0x3116e7){try{jsonpatch[_0xb99c('0x23')](_0x3116e7,_0x2a6c11,!![]);}catch(_0x103922){return BPromise[_0xb99c('0x24')](_0x103922);}return _0x3116e7[_0xb99c('0x25')]();};}function saveUpdates(_0x44faf3,_0x58235b){return function(_0x2b1048){if(_0x2b1048){return _0x2b1048[_0xb99c('0x26')](_0x44faf3)[_0xb99c('0x27')](function(_0x4cb644){return _0x4cb644;});}return null;};}function removeEntity(_0x2d1721,_0x445c49){return function(_0x2942a6){if(_0x2942a6){return _0x2942a6['destroy']()['then'](function(){var _0x17e70b=_0x2942a6['get']({'plain':!![]});var _0x3bf18a=[{'name':_0xb99c('0x28'),'value':'inbound','ignore':![]},{'name':_0xb99c('0x29'),'value':_0xb99c('0x2a'),'ignore':![]}];var _0x4439bf=_(_0x3bf18a)[_0xb99c('0x2b')](_0xb99c('0x2c'))['map']('value')[_0xb99c('0x2d')]();if(_['includes'](_0x4439bf,_0x17e70b[_0xb99c('0x2e')])){return;}var _0x1a24ea=_[_0xb99c('0x2f')](_0x3bf18a,['value',_0x17e70b['type']])[_0xb99c('0x30')];return db[_0xb99c('0x31')][_0xb99c('0x32')]({'where':{'type':_0x1a24ea,'resourceId':_0x17e70b['id']}})[_0xb99c('0x27')](function(){return _0x2942a6;});})[_0xb99c('0x27')](function(){_0x2d1721[_0xb99c('0x1b')](0xcc)[_0xb99c('0x33')]();});}};}function handleEntityNotFound(_0x576f4a,_0xddbbd4){return function(_0x54581b){if(!_0x54581b){_0x576f4a[_0xb99c('0x1a')](0x194);}return _0x54581b;};}function handleError(_0x4e0d18,_0x1d9e6d){_0x1d9e6d=_0x1d9e6d||0x1f4;return function(_0x1fd61d){logger[_0xb99c('0x34')](_0x1fd61d[_0xb99c('0x35')]);if(_0x1fd61d[_0xb99c('0x30')]){delete _0x1fd61d[_0xb99c('0x30')];}_0x4e0d18['status'](_0x1d9e6d)[_0xb99c('0x36')](_0x1fd61d);};}exports[_0xb99c('0x37')]=function(_0x2bf31d,_0x587c59){var _0x3ac4f1={},_0x3c3468={},_0x430937={'count':0x0,'rows':[]};var _0xfec574=_[_0xb99c('0x38')](db[_0xb99c('0x39')][_0xb99c('0x3a')],function(_0xc931e1){return{'name':_0xc931e1['fieldName'],'type':_0xc931e1['type'][_0xb99c('0x3b')]};});_0x3c3468['model']=_[_0xb99c('0x38')](_0xfec574,_0xb99c('0x30'));_0x3c3468['query']=_[_0xb99c('0x3c')](_0x2bf31d[_0xb99c('0x3d')]);_0x3c3468['filters']=_[_0xb99c('0x3e')](_0x3c3468[_0xb99c('0x3f')],_0x3c3468['query']);_0x3ac4f1[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x3c3468[_0xb99c('0x3f')],qs['fields'](_0x2bf31d['query'][_0xb99c('0x41')]));_0x3ac4f1['attributes']=_0x3ac4f1[_0xb99c('0x40')][_0xb99c('0x42')]?_0x3ac4f1[_0xb99c('0x40')]:_0x3c3468['model'];if(!_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x3ac4f1['limit']=qs[_0xb99c('0x1e')](_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x3ac4f1[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x2bf31d['query'][_0xb99c('0x1d')]);}_0x3ac4f1['order']=qs[_0xb99c('0x45')](_0x2bf31d[_0xb99c('0x3d')]['sort']);_0x3ac4f1[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x2bf31d[_0xb99c('0x3d')],_0x3c3468[_0xb99c('0x47')]),_0xfec574);if(_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x3ac4f1['where']=_[_0xb99c('0x49')](_0x3ac4f1[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0xfec574,function(_0x57bc1c){if(_0x57bc1c[_0xb99c('0x2e')]!=='VIRTUAL'){var _0x508d94={};_0x508d94[_0x57bc1c[_0xb99c('0x30')]]={'$like':'%'+_0x2bf31d[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x508d94;}})});}_0x3ac4f1=_[_0xb99c('0x49')]({},_0x3ac4f1,_0x2bf31d['options']);var _0x37696a={'where':_0x3ac4f1[_0xb99c('0x46')]};return db[_0xb99c('0x39')][_0xb99c('0x20')](_0x37696a)[_0xb99c('0x27')](function(_0x450098){_0x430937['count']=_0x450098;if(_0x2bf31d['query'][_0xb99c('0x4a')]){_0x3ac4f1['include']=[{'all':!![]}];}return db['VoiceQueue'][_0xb99c('0x4b')](_0x3ac4f1);})['then'](function(_0x5820b7){_0x430937[_0xb99c('0x4c')]=_0x5820b7;return _0x430937;})[_0xb99c('0x27')](respondWithFilteredResult(_0x587c59,_0x3ac4f1))['catch'](handleError(_0x587c59,null));};exports[_0xb99c('0x4d')]=function(_0x259979,_0x40ffeb){var _0x104f69={'raw':![],'where':{'id':_0x259979[_0xb99c('0x4e')]['id']}},_0x25652d={};_0x25652d['model']=_[_0xb99c('0x3c')](db[_0xb99c('0x39')][_0xb99c('0x3a')]);_0x25652d[_0xb99c('0x3d')]=_[_0xb99c('0x3c')](_0x259979[_0xb99c('0x3d')]);_0x25652d[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x25652d['model'],_0x25652d[_0xb99c('0x3d')]);_0x104f69[_0xb99c('0x40')]=_['intersection'](_0x25652d[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x259979[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x104f69[_0xb99c('0x40')]=_0x104f69['attributes'][_0xb99c('0x42')]?_0x104f69['attributes']:_0x25652d[_0xb99c('0x3f')];if(_0x259979['query'][_0xb99c('0x4a')]){_0x104f69[_0xb99c('0x4f')]=[{'all':!![]}];}_0x104f69=_[_0xb99c('0x49')]({},_0x104f69,_0x259979[_0xb99c('0x50')]);return db[_0xb99c('0x39')][_0xb99c('0x2f')](_0x104f69)[_0xb99c('0x27')](handleEntityNotFound(_0x40ffeb,null))['then'](respondWithResult(_0x40ffeb,null))[_0xb99c('0x51')](handleError(_0x40ffeb,null));};exports[_0xb99c('0x52')]=function(_0x29777d,_0x1ff7b7){return db['VoiceQueue'][_0xb99c('0x52')](_0x29777d[_0xb99c('0x53')],{})['then'](function(_0x30a26a){var _0x1d9a97=_0x29777d[_0xb99c('0x54')][_0xb99c('0x55')]({'plain':!![]});if(!_0x1d9a97)throw new Error(_0xb99c('0x56'));if(_0x1d9a97[_0xb99c('0x57')]===_0xb99c('0x54')){var _0x1d124b=_0x30a26a[_0xb99c('0x55')]({'plain':!![]});var _0x7ac940=[{'name':'VoiceQueues','value':'inbound'},{'name':_0xb99c('0x29'),'value':_0xb99c('0x2a')}];var _0xe8b099=_['find'](_0x7ac940,['value',_0x1d124b['type']])['name'];return db[_0xb99c('0x58')][_0xb99c('0x2f')]({'where':{'name':_0xe8b099,'userProfileId':_0x1d9a97[_0xb99c('0x59')]},'raw':!![]})[_0xb99c('0x27')](function(_0x2f4183){if(_0x2f4183&&_0x2f4183[_0xb99c('0x5a')]===0x0){return db[_0xb99c('0x31')]['create']({'name':_0x1d124b[_0xb99c('0x30')],'resourceId':_0x1d124b['id'],'type':_0x2f4183[_0xb99c('0x30')],'sectionId':_0x2f4183['id']},{})[_0xb99c('0x27')](function(){return _0x30a26a;});}else{return _0x30a26a;}})[_0xb99c('0x51')](function(_0x46e7e5){logger[_0xb99c('0x34')](_0xb99c('0x5b'),_0x46e7e5);throw _0x46e7e5;});}return _0x30a26a;})[_0xb99c('0x27')](respondWithResult(_0x1ff7b7,0xc9))[_0xb99c('0x51')](handleError(_0x1ff7b7,null));};exports[_0xb99c('0x5c')]=function(_0x1bd25c,_0x24426d){var _0x25c88d={'where':{'id':_0x1bd25c[_0xb99c('0x4e')]['id']}},_0x4ace63={};_0x4ace63[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x39')][_0xb99c('0x3a')]);_0x25c88d[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x4ace63[_0xb99c('0x3f')],qs['fields'](_0x1bd25c[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x25c88d[_0xb99c('0x40')]=_0x25c88d[_0xb99c('0x40')][_0xb99c('0x42')]?_0x25c88d[_0xb99c('0x40')]:_0x4ace63[_0xb99c('0x3f')];if(_0x1bd25c[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x25c88d[_0xb99c('0x4f')]=[{'all':!![]}];}_0x25c88d=_[_0xb99c('0x49')]({},_0x25c88d,_0x1bd25c[_0xb99c('0x50')]);return db[_0xb99c('0x39')]['find'](_0x25c88d)[_0xb99c('0x27')](handleEntityNotFound(_0x24426d,null))[_0xb99c('0x27')](function(_0x4f8ba1){if(_0x4f8ba1){var _0x1cedc0=_0x4f8ba1[_0xb99c('0x55')]({'plain':!![]});_0x1cedc0=qs[_0xb99c('0x5d')](_0x1cedc0,['id',_0xb99c('0x5e'),_0xb99c('0x5f')]);_0x1bd25c['body']=_[_0xb99c('0x5d')](_0x1bd25c[_0xb99c('0x53')],['id','createdAt','updatedAt']);return db[_0xb99c('0x39')][_0xb99c('0x52')](_['merge'](_0x1cedc0,_0x1bd25c[_0xb99c('0x53')]),{'include':_0x1bd25c[_0xb99c('0x3d')]['includeAll']?[{'all':!![]}]:undefined})[_0xb99c('0x27')](function(_0x3edcdb){var _0x5be650=_0x1bd25c[_0xb99c('0x54')][_0xb99c('0x55')]({'plain':!![]});if(!_0x5be650)throw new Error(_0xb99c('0x56'));if(_0x5be650[_0xb99c('0x57')]===_0xb99c('0x54')){var _0x43cd11=_0x3edcdb[_0xb99c('0x55')]({'plain':!![]});var _0x4db725=[{'name':_0xb99c('0x28'),'value':_0xb99c('0x60')},{'name':'QueueCampaigns','value':_0xb99c('0x2a')}];var _0xa1849e=_[_0xb99c('0x2f')](_0x4db725,[_0xb99c('0x2d'),_0x43cd11[_0xb99c('0x2e')]])['name'];return db['UserProfileSection'][_0xb99c('0x2f')]({'where':{'name':_0xa1849e,'userProfileId':_0x5be650[_0xb99c('0x59')]},'raw':!![]})['then'](function(_0xa7cda6){if(_0xa7cda6&&_0xa7cda6['autoAssociation']===0x0){return db[_0xb99c('0x31')][_0xb99c('0x52')]({'name':_0x43cd11['name'],'resourceId':_0x43cd11['id'],'type':_0xa7cda6[_0xb99c('0x30')],'sectionId':_0xa7cda6['id']},{})['then'](function(){return _0x3edcdb;});}else{return _0x3edcdb;}})['catch'](function(_0x1eacd7){logger['error'](_0xb99c('0x5b'),_0x1eacd7);throw _0x1eacd7;});}return _0x3edcdb;});}})[_0xb99c('0x27')](respondWithResult(_0x24426d,0xc9))[_0xb99c('0x51')](handleError(_0x24426d,null));};exports[_0xb99c('0x26')]=function(_0x29f586,_0x3e20d6){if(_0x29f586[_0xb99c('0x53')]['id']){delete _0x29f586[_0xb99c('0x53')]['id'];}return db[_0xb99c('0x39')]['find']({'where':{'id':_0x29f586[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x3e20d6,null))[_0xb99c('0x27')](saveUpdates(_0x29f586['body'],null))['then'](respondWithResult(_0x3e20d6,null))['catch'](handleError(_0x3e20d6,null));};exports[_0xb99c('0x32')]=function(_0x4a1888,_0x17c3ac){return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x4a1888[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x17c3ac,null))['then'](removeEntity(_0x17c3ac,null))[_0xb99c('0x51')](handleError(_0x17c3ac,null));};exports[_0xb99c('0x61')]=function(_0x5e721d,_0x2a520e,_0x267dc4){var _0x59cedd={'raw':![],'where':{}};var _0x37b643={};var _0x3d32ba={'count':0x0,'rows':[]};return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x5e721d[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x2a520e,null))[_0xb99c('0x27')](function(_0x2f871e){if(_0x2f871e){_0x37b643[_0xb99c('0x3f')]=_['keys'](db['CmHopper'][_0xb99c('0x3a')]);_0x37b643['query']=_['keys'](_0x5e721d['query']);_0x37b643[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x37b643[_0xb99c('0x3f')],_0x37b643[_0xb99c('0x3d')]);_0x59cedd[_0xb99c('0x40')]=_['intersection'](_0x37b643[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x5e721d['query'][_0xb99c('0x41')]));_0x59cedd[_0xb99c('0x40')]=_0x59cedd[_0xb99c('0x40')][_0xb99c('0x42')]?_0x59cedd[_0xb99c('0x40')]:_0x37b643[_0xb99c('0x3f')];if(!_0x5e721d[_0xb99c('0x3d')]['hasOwnProperty']('nolimit')){_0x59cedd[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x59cedd[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x1d')]);}_0x59cedd[_0xb99c('0x63')]=qs['sort'](_0x5e721d['query'][_0xb99c('0x45')]);_0x59cedd['where']=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x5e721d[_0xb99c('0x3d')],_0x37b643[_0xb99c('0x47')]));_0x59cedd[_0xb99c('0x46')][_0xb99c('0x64')]=_0x2f871e['id'];if(_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x59cedd['where']=_['merge'](_0x59cedd[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x59cedd[_0xb99c('0x40')],function(_0x17d595){var _0x32a006={};_0x32a006[_0x17d595]={'$like':'%'+_0x5e721d[_0xb99c('0x3d')]['filter']+'%'};return _0x32a006;})});}_0x59cedd=_[_0xb99c('0x49')]({},_0x59cedd,_0x5e721d[_0xb99c('0x50')]);return db[_0xb99c('0x65')]['count']({'where':_0x59cedd[_0xb99c('0x46')]})[_0xb99c('0x27')](function(_0x586485){_0x3d32ba[_0xb99c('0x20')]=_0x586485;if(_0x5e721d[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x59cedd['include']=[{'all':!![]}];}return db[_0xb99c('0x65')][_0xb99c('0x4b')](_0x59cedd);})[_0xb99c('0x27')](function(_0x1ec15a){_0x3d32ba['rows']=_0x1ec15a;return _0x3d32ba;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x2a520e,_0x59cedd))[_0xb99c('0x51')](handleError(_0x2a520e,null));};exports[_0xb99c('0x66')]=function(_0x4a70ba,_0x59916d,_0x4f1be9){var _0x2aa99e={'raw':!![],'where':{}};var _0x48a351={};var _0x5df589={'count':0x0,'rows':[]};return db[_0xb99c('0x39')]['findOne']({'where':{'id':_0x4a70ba[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x59916d,null))[_0xb99c('0x27')](function(_0x2eea6f){if(_0x2eea6f){_0x48a351[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db['CmHopperHistory'][_0xb99c('0x3a')]);_0x48a351['query']=_[_0xb99c('0x3c')](_0x4a70ba[_0xb99c('0x3d')]);_0x48a351[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x48a351[_0xb99c('0x3f')],_0x48a351[_0xb99c('0x3d')]);_0x2aa99e[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x48a351[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x4a70ba['query'][_0xb99c('0x41')]));_0x2aa99e[_0xb99c('0x40')]=_0x2aa99e['attributes'][_0xb99c('0x42')]?_0x2aa99e[_0xb99c('0x40')]:_0x48a351[_0xb99c('0x3f')];if(!_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x2aa99e[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x2aa99e[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x4a70ba['query'][_0xb99c('0x1d')]);}_0x2aa99e['order']=qs[_0xb99c('0x45')](_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x2aa99e[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x4a70ba['query'],_0x48a351[_0xb99c('0x47')]));_0x2aa99e[_0xb99c('0x46')][_0xb99c('0x64')]=_0x2eea6f['id'];if(_0x4a70ba[_0xb99c('0x3d')]['filter']){_0x2aa99e[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x2aa99e[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x2aa99e[_0xb99c('0x40')],function(_0x3a9344){var _0x2f8673={};_0x2f8673[_0x3a9344]={'$like':'%'+_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x2f8673;})});}_0x2aa99e=_[_0xb99c('0x49')]({},_0x2aa99e,_0x4a70ba[_0xb99c('0x50')]);return db['CmHopperHistory'][_0xb99c('0x20')]({'where':_0x2aa99e['where']})[_0xb99c('0x27')](function(_0x4b9495){_0x5df589[_0xb99c('0x20')]=_0x4b9495;if(_0x4a70ba[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x2aa99e[_0xb99c('0x4f')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xb99c('0x4b')](_0x2aa99e);})[_0xb99c('0x27')](function(_0x599920){_0x5df589[_0xb99c('0x4c')]=_0x599920;return _0x5df589;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x59916d,_0x2aa99e))[_0xb99c('0x51')](handleError(_0x59916d,null));};exports['getHopperFinals']=function(_0x467944,_0x4c9ca2,_0x13f86e){var _0x2f76b6={'raw':!![],'where':{}};var _0x29acf5={};var _0x55db78={'count':0x0,'rows':[]};return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x467944[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x4c9ca2,null))[_0xb99c('0x27')](function(_0x3d5576){if(_0x3d5576){_0x29acf5[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x67')][_0xb99c('0x3a')]);_0x29acf5['query']=_[_0xb99c('0x3c')](_0x467944[_0xb99c('0x3d')]);_0x29acf5[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x29acf5[_0xb99c('0x3f')],_0x29acf5[_0xb99c('0x3d')]);_0x2f76b6[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x29acf5[_0xb99c('0x3f')],qs['fields'](_0x467944[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x2f76b6['attributes']=_0x2f76b6[_0xb99c('0x40')][_0xb99c('0x42')]?_0x2f76b6[_0xb99c('0x40')]:_0x29acf5[_0xb99c('0x3f')];if(!_0x467944[_0xb99c('0x3d')]['hasOwnProperty']('nolimit')){_0x2f76b6['limit']=qs[_0xb99c('0x1e')](_0x467944[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x2f76b6[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x467944[_0xb99c('0x3d')][_0xb99c('0x1d')]);}_0x2f76b6[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x467944[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x2f76b6[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x467944['query'],_0x29acf5[_0xb99c('0x47')]));_0x2f76b6[_0xb99c('0x46')]['VoiceQueueId']=_0x3d5576['id'];if(_0x467944[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x2f76b6['where']=_[_0xb99c('0x49')](_0x2f76b6[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x2f76b6['attributes'],function(_0x22da99){var _0x3660aa={};_0x3660aa[_0x22da99]={'$like':'%'+_0x467944[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x3660aa;})});}_0x2f76b6=_[_0xb99c('0x49')]({},_0x2f76b6,_0x467944[_0xb99c('0x50')]);return db[_0xb99c('0x67')][_0xb99c('0x20')]({'where':_0x2f76b6[_0xb99c('0x46')]})[_0xb99c('0x27')](function(_0x1a9ab2){_0x55db78[_0xb99c('0x20')]=_0x1a9ab2;if(_0x467944[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x2f76b6['include']=[{'all':!![]}];}return db[_0xb99c('0x67')][_0xb99c('0x4b')](_0x2f76b6);})['then'](function(_0x3d7f63){_0x55db78['rows']=_0x3d7f63;return _0x55db78;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x4c9ca2,_0x2f76b6))[_0xb99c('0x51')](handleError(_0x4c9ca2,null));};exports[_0xb99c('0x68')]=function(_0xe2c801,_0x230f69,_0x5ac887){var _0x2b333f={'raw':!![],'where':{}};var _0x4c3c97={};var _0x70ee39={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xb99c('0x62')]({'where':{'id':_0xe2c801[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x230f69,null))[_0xb99c('0x27')](function(_0x239a27){if(_0x239a27){_0x4c3c97[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x69')][_0xb99c('0x3a')]);_0x4c3c97[_0xb99c('0x3d')]=_['keys'](_0xe2c801[_0xb99c('0x3d')]);_0x4c3c97[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x4c3c97['model'],_0x4c3c97['query']);_0x2b333f['attributes']=_[_0xb99c('0x3e')](_0x4c3c97[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x2b333f[_0xb99c('0x40')]=_0x2b333f['attributes'][_0xb99c('0x42')]?_0x2b333f[_0xb99c('0x40')]:_0x4c3c97[_0xb99c('0x3f')];if(!_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x2b333f['limit']=qs[_0xb99c('0x1e')](_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x2b333f[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x1d')]);}_0x2b333f['order']=qs[_0xb99c('0x45')](_0xe2c801['query']['sort']);_0x2b333f['where']=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0xe2c801[_0xb99c('0x3d')],_0x4c3c97[_0xb99c('0x47')]));_0x2b333f[_0xb99c('0x46')][_0xb99c('0x64')]=_0x239a27['id'];if(_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x2b333f['where']=_[_0xb99c('0x49')](_0x2b333f[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x2b333f['attributes'],function(_0x5c9dab){var _0x2feadb={};_0x2feadb[_0x5c9dab]={'$like':'%'+_0xe2c801['query'][_0xb99c('0x2b')]+'%'};return _0x2feadb;})});}_0x2b333f=_[_0xb99c('0x49')]({},_0x2b333f,_0xe2c801[_0xb99c('0x50')]);return db[_0xb99c('0x69')]['count']({'where':_0x2b333f[_0xb99c('0x46')]})[_0xb99c('0x27')](function(_0x2bb545){_0x70ee39[_0xb99c('0x20')]=_0x2bb545;if(_0xe2c801[_0xb99c('0x3d')][_0xb99c('0x4a')]){_0x2b333f['include']=[{'all':!![]}];}return db[_0xb99c('0x69')][_0xb99c('0x4b')](_0x2b333f);})[_0xb99c('0x27')](function(_0x58d0bc){_0x70ee39[_0xb99c('0x4c')]=_0x58d0bc;return _0x70ee39;});}})[_0xb99c('0x27')](respondWithFilteredResult(_0x230f69,_0x2b333f))[_0xb99c('0x51')](handleError(_0x230f69,null));};exports[_0xb99c('0x6a')]=function(_0x3ac844,_0x32ca0a,_0x19bfcd){var _0x248dbc={};var _0x143e4c={};var _0x250cff;var _0x56e295;return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x3ac844[_0xb99c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x32ca0a,null))['then'](function(_0x358e7b){if(_0x358e7b){_0x250cff=_0x358e7b;_0x143e4c[_0xb99c('0x3f')]=_['keys'](db[_0xb99c('0x6b')][_0xb99c('0x3a')]);_0x143e4c[_0xb99c('0x3d')]=_['keys'](_0x3ac844[_0xb99c('0x3d')]);_0x143e4c[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x143e4c[_0xb99c('0x3f')],_0x143e4c[_0xb99c('0x3d')]);_0x248dbc[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x143e4c[_0xb99c('0x3f')],qs['fields'](_0x3ac844['query'][_0xb99c('0x41')]));_0x248dbc[_0xb99c('0x40')]=_0x248dbc[_0xb99c('0x40')][_0xb99c('0x42')]?_0x248dbc['attributes']:_0x143e4c['model'];_0x248dbc[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x3ac844['query'][_0xb99c('0x45')]);_0x248dbc['where']=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x3ac844[_0xb99c('0x3d')],_0x143e4c[_0xb99c('0x47')]));if(_0x3ac844[_0xb99c('0x3d')]['filter']){_0x248dbc[_0xb99c('0x46')]=_['merge'](_0x248dbc[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x248dbc[_0xb99c('0x40')],function(_0x1c8c0a){var _0x8f3732={};_0x8f3732[_0x1c8c0a]={'$like':'%'+_0x3ac844[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x8f3732;})});}_0x248dbc=_[_0xb99c('0x49')]({},_0x248dbc,_0x3ac844[_0xb99c('0x50')]);return _0x250cff[_0xb99c('0x6a')](_0x248dbc);}})['then'](function(_0x3f49d2){if(_0x3f49d2){_0x56e295=_0x3f49d2['length'];if(!_0x3ac844['query'][_0xb99c('0x43')](_0xb99c('0x44'))){_0x248dbc[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x3ac844[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x248dbc[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x3ac844[_0xb99c('0x3d')][_0xb99c('0x1d')]);}return _0x250cff['getTeams'](_0x248dbc);}})[_0xb99c('0x27')](function(_0x2370c2){if(_0x2370c2){return _0x2370c2?{'count':_0x56e295,'rows':_0x2370c2}:null;}})['then'](respondWithResult(_0x32ca0a,null))['catch'](handleError(_0x32ca0a,null));};exports[_0xb99c('0x6c')]=function(_0x2d3300,_0x485578,_0x303478){var _0x31a2a4=_0x2d3300['body'][_0xb99c('0x6d')];var _0xef4143=_['map'](_0x31a2a4,'id');return db[_0xb99c('0x6b')][_0xb99c('0x4b')]({'where':{'id':_0xef4143},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb99c('0x6e'),'attributes':['id',_0xb99c('0x30'),_0xb99c('0x6f'),'voicePause',_0xb99c('0x70')],'raw':!![]}]})[_0xb99c('0x27')](function(_0x2108ab){if(_0x2108ab){var _0x3088e9=_[_0xb99c('0x71')](_0x2108ab,function(_0x56472d){var _0x441b72=_0x56472d[_0xb99c('0x55')]({'plain':!![]});_0x441b72[_0xb99c('0x6e')]['forEach'](function(_0x2aabc6){_0x2aabc6['penalty']=_['find'](_0x31a2a4,{'id':_0x441b72['id']})[_0xb99c('0x72')];});return _0x441b72['Agents'];});return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x2d3300[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(_0x33edaa){return db['sequelize'][_0xb99c('0x73')](function(_0x583128){return _0x33edaa[_0xb99c('0x6c')](_0xef4143,{'transaction':_0x583128})[_0xb99c('0x27')](function(){return BPromise[_0xb99c('0x74')](_0x31a2a4,function(_0x135bd1){return db[_0xb99c('0x75')][_0xb99c('0x76')]({'TeamId':_0x135bd1['id'],'VoiceQueueId':_0x2d3300[_0xb99c('0x4e')]['id'],'penalty':_0x135bd1[_0xb99c('0x72')]},{'transaction':_0x583128});});})['then'](function(){return BPromise['each'](_0x3088e9,function(_0x25f5ef){return db[_0xb99c('0x77')]['findOrCreate']({'where':{'UserId':_0x25f5ef['id'],'VoiceQueueId':_0x2d3300[_0xb99c('0x4e')]['id']},'defaults':{'penalty':_0x25f5ef[_0xb99c('0x72')]},'transaction':_0x583128});});})[_0xb99c('0x27')](function(){return BPromise[_0xb99c('0x74')](_['filter'](_0x3088e9,{'online':!![]}),function(_0x20e5aa){return db['UserVoiceQueueRt'][_0xb99c('0x76')]({'membername':_0x20e5aa[_0xb99c('0x30')],'UserId':_0x20e5aa['id'],'queue_name':_0x33edaa[_0xb99c('0x30')],'VoiceQueueId':_0x33edaa['id'],'interface':_[_0xb99c('0x78')](_0x20e5aa[_0xb99c('0x70')])?util[_0xb99c('0x79')](_0xb99c('0x7a'),_0x20e5aa[_0xb99c('0x30')]):_0x20e5aa[_0xb99c('0x70')],'paused':_0x20e5aa['voicePause']||![],'penalty':_0x20e5aa[_0xb99c('0x72')]},{'transaction':_0x583128});});})['then'](function(){_0x3088e9[_0xb99c('0x7b')](function(_0x2ee168){socket[_0xb99c('0x7c')]('userVoiceQueue:save',{'UserId':_0x2ee168['id'],'VoiceQueueId':_0x33edaa['id']});});});});});}})[_0xb99c('0x27')](respondWithStatusCode(_0x485578,null))[_0xb99c('0x51')](handleError(_0x485578,null));};exports[_0xb99c('0x7d')]=function(_0x2ead2b,_0x1c1d4f,_0x3e353d){return db[_0xb99c('0x6b')][_0xb99c('0x4b')]({'where':{'id':_0x2ead2b[_0xb99c('0x3d')][_0xb99c('0x7e')]},'attributes':['id'],'include':[{'model':db[_0xb99c('0x7f')],'as':_0xb99c('0x6e'),'attributes':['id'],'raw':!![]}]})[_0xb99c('0x27')](handleEntityNotFound(_0x1c1d4f,null))[_0xb99c('0x27')](function(_0x2940ee){var _0x3362ba=_[_0xb99c('0x38')](_0x2940ee,'id');var _0x541fd4=[];var _0x10b0bd=[];var _0x3d8495=squel[_0xb99c('0x80')]();_0x3d8495[_0xb99c('0x81')](_0xb99c('0x82'))[_0xb99c('0x83')](_0xb99c('0x84'),'tq')[_0xb99c('0x85')](_0xb99c('0x86'),'ut',_0xb99c('0x87'))[_0xb99c('0x46')](_0xb99c('0x88'),_0x2ead2b[_0xb99c('0x4e')]['id']);for(var _0x398462=0x0;_0x398462<_0x2940ee[_0xb99c('0x42')];_0x398462+=0x1){let _0xdfeae=_0x2940ee[_0x398462];for(var _0x3b7fbf=0x0;_0x3b7fbf<_0xdfeae[_0xb99c('0x6e')]['length'];_0x3b7fbf+=0x1){let _0x55c88a=_0xdfeae[_0xb99c('0x6e')][_0x3b7fbf];var _0xe6d584=_0x3d8495[_0xb99c('0x5c')]();_0xe6d584['where']('ut.UserId\x20=\x20?',_0x55c88a['id']);_0x10b0bd[_0xb99c('0x89')](db[_0xb99c('0x8a')][_0xb99c('0x3d')](_0xe6d584['toString'](),{'type':db[_0xb99c('0x8a')][_0xb99c('0x8b')][_0xb99c('0x8c')]})['then'](function(_0x1ba273){if(_0x1ba273[_0xb99c('0x42')]===0x1){return _0x55c88a['id'];}else{var _0x320106=_[_0xb99c('0x8d')](_[_0xb99c('0x38')](_0x1ba273,_0xb99c('0x8e')),function(_0x393680){return _[_0xb99c('0x8f')](_0x3362ba,_0x393680);});if(_0x320106){return _0x55c88a['id'];}}}));}}return BPromise[_0xb99c('0x90')](_0x10b0bd)['then'](function(_0x49d413){_0x541fd4=_(_0x541fd4)[_0xb99c('0x91')](_0x49d413)[_0xb99c('0x92')]()[_0xb99c('0x2d')]();return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x2ead2b[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(_0x521456){return db[_0xb99c('0x8a')][_0xb99c('0x73')](function(_0x3a786c){return _0x521456[_0xb99c('0x7d')](_0x2ead2b[_0xb99c('0x3d')]['ids'],{'transaction':_0x3a786c})[_0xb99c('0x27')](function(){if(!_['isEmpty'](_0x541fd4)){return _0x521456[_0xb99c('0x93')](_0x541fd4,{'transaction':_0x3a786c})[_0xb99c('0x27')](function(){return db[_0xb99c('0x94')][_0xb99c('0x32')]({'where':{'VoiceQueueId':_0x2ead2b['params']['id'],'UserId':_0x541fd4},'transaction':_0x3a786c});});}})['then'](function(){_0x541fd4[_0xb99c('0x7b')](function(_0x2ad6cb){socket[_0xb99c('0x7c')](_0xb99c('0x95'),{'UserId':_0x2ad6cb,'VoiceQueueId':_0x521456['id']});});});});});});})[_0xb99c('0x27')](respondWithStatusCode(_0x1c1d4f,null))[_0xb99c('0x51')](handleError(_0x1c1d4f,null));};exports[_0xb99c('0x96')]=function(_0x1b4026,_0x2117ac,_0x3645d1){var _0x35295e,_0x14227b;return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x1b4026[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x2117ac,null))[_0xb99c('0x27')](function(_0xfa19c8){if(_0xfa19c8){_0x14227b=_0xfa19c8;return _0xfa19c8[_0xb99c('0x96')](_0x1b4026['body'][_0xb99c('0x7e')],_['omit'](_0x1b4026[_0xb99c('0x53')],[_0xb99c('0x7e'),'id'])||{})['spread'](function(_0x14d6fd){for(var _0xe0c66e=0x0;_0xe0c66e<_0x1b4026[_0xb99c('0x53')]['ids'][_0xb99c('0x42')];_0xe0c66e+=0x1){socket[_0xb99c('0x7c')](_0xb99c('0x97'),{'UserId':Number(_0x1b4026['body'][_0xb99c('0x7e')][_0xe0c66e]),'VoiceQueueId':Number(_0x1b4026['params']['id'])});}return _0x14d6fd;});}})[_0xb99c('0x27')](function(_0x3c986c){_0x35295e=_0x3c986c||[];if(_0x14227b){return db[_0xb99c('0x7f')]['findAll']({'where':{'id':_0x1b4026[_0xb99c('0x53')][_0xb99c('0x7e')]},'attributes':['id',_0xb99c('0x30'),_0xb99c('0x6f'),'voicePause',_0xb99c('0x70')],'raw':!![]});}})[_0xb99c('0x27')](function(_0x2d3be6){if(!_[_0xb99c('0x98')](_0x2d3be6)){var _0x58f585=[];for(var _0x2c2738=0x0;_0x2c2738<_0x2d3be6[_0xb99c('0x42')];_0x2c2738++){if(_0x2d3be6[_0x2c2738]['online']){_0x58f585['push'](db[_0xb99c('0x94')]['upsert']({'membername':_0x2d3be6[_0x2c2738][_0xb99c('0x30')],'UserId':_0x2d3be6[_0x2c2738]['id'],'queue_name':_0x14227b['name'],'VoiceQueueId':_0x14227b['id'],'interface':_[_0xb99c('0x78')](_0x2d3be6[_0x2c2738]['interface'])?util[_0xb99c('0x79')](_0xb99c('0x7a'),_0x2d3be6[_0x2c2738][_0xb99c('0x30')]):_0x2d3be6[_0x2c2738][_0xb99c('0x70')],'paused':_0x2d3be6[_0x2c2738]['voicePause']||![],'penalty':_0x1b4026[_0xb99c('0x53')]['penalty']||0x0}));}}return BPromise['all'](_0x58f585);}})['then'](function(){return _0x35295e;})[_0xb99c('0x27')](respondWithResult(_0x2117ac,null))['catch'](handleError(_0x2117ac,null));};exports[_0xb99c('0x93')]=function(_0x5e2110,_0x335223,_0x1d104a){return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x5e2110[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x335223,null))[_0xb99c('0x27')](function(_0x237aa0){if(_0x237aa0){return _0x237aa0[_0xb99c('0x93')](_0x5e2110[_0xb99c('0x3d')]['ids'])[_0xb99c('0x27')](function(){if(_['isArray'](_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')])){for(var _0x472cc4=0x0;_0x472cc4<_0x5e2110[_0xb99c('0x3d')]['ids'][_0xb99c('0x42')];_0x472cc4+=0x1){socket[_0xb99c('0x7c')](_0xb99c('0x95'),{'UserId':Number(_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')][_0x472cc4]),'VoiceQueueId':Number(_0x5e2110[_0xb99c('0x4e')]['id'])});}}else{socket[_0xb99c('0x7c')](_0xb99c('0x95'),{'UserId':Number(_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')]),'VoiceQueueId':Number(_0x5e2110[_0xb99c('0x4e')]['id'])});}});}})[_0xb99c('0x27')](function(_0x4cc0f3){return db[_0xb99c('0x94')][_0xb99c('0x32')]({'where':{'VoiceQueueId':_0x5e2110['params']['id'],'UserId':_0x5e2110[_0xb99c('0x3d')][_0xb99c('0x7e')]}})['then'](function(){return _0x4cc0f3;});})[_0xb99c('0x27')](respondWithStatusCode(_0x335223,null))[_0xb99c('0x51')](handleError(_0x335223,null));};exports['getAgents']=function(_0x202582,_0x253bcf,_0x1d34ce){var _0x168a80={};var _0x23b14d={};var _0x179d07;var _0x309602;return db[_0xb99c('0x39')][_0xb99c('0x62')]({'where':{'id':_0x202582['params']['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x253bcf,null))['then'](function(_0xfc90d2){if(_0xfc90d2){_0x179d07=_0xfc90d2;_0x23b14d[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x7f')]['rawAttributes']);_0x23b14d[_0xb99c('0x3d')]=_['keys'](_0x202582['query']);_0x23b14d['filters']=_[_0xb99c('0x3e')](_0x23b14d[_0xb99c('0x3f')],_0x23b14d[_0xb99c('0x3d')]);_0x168a80[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x23b14d[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x202582[_0xb99c('0x3d')]['fields']));_0x168a80['attributes']=_0x168a80['attributes']['length']?_0x168a80[_0xb99c('0x40')]:_0x23b14d['model'];_0x168a80[_0xb99c('0x63')]=qs['sort'](_0x202582[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x168a80[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x202582[_0xb99c('0x3d')],_0x23b14d[_0xb99c('0x47')]));if(_0x202582[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x168a80[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x168a80[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x168a80[_0xb99c('0x40')],function(_0x2fecfd){var _0x13f50a={};_0x13f50a[_0x2fecfd]={'$like':'%'+_0x202582[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x13f50a;})});}_0x168a80=_['merge']({},_0x168a80,_0x202582['options']);return _0x179d07[_0xb99c('0x99')](_0x168a80);}})[_0xb99c('0x27')](function(_0xd60dd4){if(_0xd60dd4){_0x309602=_0xd60dd4[_0xb99c('0x42')];if(!_0x202582[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x168a80['limit']=qs[_0xb99c('0x1e')](_0x202582[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x168a80[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x202582[_0xb99c('0x3d')]['offset']);}return _0x179d07[_0xb99c('0x99')](_0x168a80);}})[_0xb99c('0x27')](function(_0x28fbce){if(_0x28fbce){return _0x28fbce?{'count':_0x309602,'rows':_0x28fbce}:null;}})[_0xb99c('0x27')](respondWithResult(_0x253bcf,null))[_0xb99c('0x51')](handleError(_0x253bcf,null));};exports[_0xb99c('0x9a')]=function(_0x1d129a,_0x1aa820,_0x27c2f2){var _0x120913={};var _0x13af1b={};var _0x508cfa;var _0x5cce6c;return db[_0xb99c('0x39')]['findOne']({'where':{'id':_0x1d129a[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x1aa820,null))[_0xb99c('0x27')](function(_0x55b114){if(_0x55b114){_0x508cfa=_0x55b114;_0x13af1b[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x94')][_0xb99c('0x3a')]);_0x13af1b[_0xb99c('0x3d')]=_[_0xb99c('0x3c')](_0x1d129a[_0xb99c('0x3d')]);_0x13af1b[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x13af1b['model'],_0x13af1b[_0xb99c('0x3d')]);_0x120913['attributes']=_[_0xb99c('0x3e')](_0x13af1b[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x120913[_0xb99c('0x40')]=_0x120913[_0xb99c('0x40')]['length']?_0x120913['attributes']:_0x13af1b['model'];_0x120913['order']=qs[_0xb99c('0x45')](_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x120913[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x1d129a[_0xb99c('0x3d')],_0x13af1b[_0xb99c('0x47')]));if(_0x1d129a['query'][_0xb99c('0x2b')]){_0x120913[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x120913[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x120913[_0xb99c('0x40')],function(_0x4b6da7){var _0x4932fd={};_0x4932fd[_0x4b6da7]={'$like':'%'+_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x4932fd;})});}_0x120913=_['merge']({},_0x120913,_0x1d129a[_0xb99c('0x50')]);return _0x508cfa[_0xb99c('0x9a')](_0x120913);}})['then'](function(_0x595331){if(_0x595331){_0x5cce6c=_0x595331[_0xb99c('0x42')];if(!_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x43')]('nolimit')){_0x120913['limit']=qs[_0xb99c('0x1e')](_0x1d129a[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x120913[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x1d129a[_0xb99c('0x3d')]['offset']);}return _0x508cfa[_0xb99c('0x9a')](_0x120913);}})[_0xb99c('0x27')](function(_0x48c74f){return _0x48c74f?{'count':_0x5cce6c,'rows':_0x48c74f}:null;})[_0xb99c('0x27')](respondWithResult(_0x1aa820,null))[_0xb99c('0x51')](handleError(_0x1aa820,null));};exports[_0xb99c('0x9b')]=function(_0x328c63,_0x27280d,_0x10ec78){var _0x433046={};var _0x40dfc7={};var _0x2a0362;var _0x37430c;return db['VoiceQueue']['findOne']({'where':{'id':_0x328c63[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x27280d,null))['then'](function(_0x496743){if(_0x496743){_0x2a0362=_0x496743;_0x40dfc7[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x9c')][_0xb99c('0x3a')]);_0x40dfc7[_0xb99c('0x3d')]=_['keys'](_0x328c63[_0xb99c('0x3d')]);_0x40dfc7[_0xb99c('0x47')]=_[_0xb99c('0x3e')](_0x40dfc7[_0xb99c('0x3f')],_0x40dfc7[_0xb99c('0x3d')]);_0x433046[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x40dfc7[_0xb99c('0x3f')],qs['fields'](_0x328c63[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x433046['attributes']=_0x433046[_0xb99c('0x40')][_0xb99c('0x42')]?_0x433046[_0xb99c('0x40')]:_0x40dfc7[_0xb99c('0x3f')];_0x433046[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x328c63[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x433046[_0xb99c('0x46')]=qs[_0xb99c('0x47')](_[_0xb99c('0x48')](_0x328c63[_0xb99c('0x3d')],_0x40dfc7['filters']));if(_0x328c63[_0xb99c('0x3d')]['filter']){_0x433046[_0xb99c('0x46')]=_[_0xb99c('0x49')](_0x433046['where'],{'$or':_[_0xb99c('0x38')](_0x433046[_0xb99c('0x40')],function(_0x130a92){var _0x4c11cb={};_0x4c11cb[_0x130a92]={'$like':'%'+_0x328c63[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x4c11cb;})});}_0x433046=_['merge']({},_0x433046,_0x328c63[_0xb99c('0x50')]);return _0x2a0362['getLists'](_0x433046);}})[_0xb99c('0x27')](function(_0x1a5381){if(_0x1a5381){_0x37430c=_0x1a5381[_0xb99c('0x42')];if(!_0x328c63[_0xb99c('0x3d')][_0xb99c('0x43')](_0xb99c('0x44'))){_0x433046[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x328c63[_0xb99c('0x3d')]['limit']);_0x433046['offset']=qs[_0xb99c('0x1d')](_0x328c63[_0xb99c('0x3d')][_0xb99c('0x1d')]);}return _0x2a0362[_0xb99c('0x9b')](_0x433046);}})[_0xb99c('0x27')](function(_0x28810a){if(_0x28810a){return _0x28810a?{'count':_0x37430c,'rows':_0x28810a}:null;}})['then'](respondWithResult(_0x27280d,null))[_0xb99c('0x51')](handleError(_0x27280d,null));};exports[_0xb99c('0x9d')]=function(_0xa9b905,_0xf22189,_0x4ae7a6){var _0x161571,_0x4f6ef7;return db['VoiceQueue'][_0xb99c('0x2f')]({'where':{'id':_0xa9b905[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0xf22189,null))[_0xb99c('0x27')](function(_0x5be86d){if(_0x5be86d){_0x4f6ef7=_0x5be86d;return _0x5be86d[_0xb99c('0x9d')](_0xa9b905[_0xb99c('0x53')][_0xb99c('0x7e')],_[_0xb99c('0x5d')](_0xa9b905['body'],[_0xb99c('0x7e'),'id'])||{});}return null;})['spread'](function(_0x4918ea){var _0x27a538;_0x161571=_0x4918ea||[];var _0x11b799=[];if(_0x4918ea){for(var _0x1fea27=0x0;_0x1fea27<_0x4918ea[_0xb99c('0x42')];_0x1fea27+=0x1){var _0x5982d1=_0x4918ea[_0x1fea27][_0xb99c('0x55')]({'plain':!![]});_0x4f6ef7[_0xb99c('0x9e')]=_0xa9b905['body']['dialCheckDuplicateType']?_0xa9b905[_0xb99c('0x53')]['dialCheckDuplicateType']:_0x4f6ef7['dialCheckDuplicateType'];switch(_0x4f6ef7[_0xb99c('0x9e')]){case'always':_0x27a538=squel[_0xb99c('0x9f')]()[_0xb99c('0xa0')]('cm_hopper')[_0xb99c('0xa1')](['phone',_0xb99c('0xa2'),'ContactId',_0xb99c('0xa3'),_0xb99c('0x64'),_0xb99c('0x5e'),_0xb99c('0x5f')],squel[_0xb99c('0x80')]()[_0xb99c('0x81')]('phone',_0xb99c('0xa4'))[_0xb99c('0x81')]('NOW()',_0xb99c('0xa2'))[_0xb99c('0x81')]('id',_0xb99c('0xa5'))[_0xb99c('0x81')](_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')](),_0xb99c('0xa3'))['field'](_0xa9b905[_0xb99c('0x4e')]['id']['toString'](),_0xb99c('0x64'))[_0xb99c('0x81')]('NOW()',_0xb99c('0x5e'))['field'](_0xb99c('0xa8'),'updatedAt')[_0xb99c('0x83')](_0xb99c('0xa9'))[_0xb99c('0x46')]('deletedAt\x20IS\x20NULL')[_0xb99c('0x46')](_0xb99c('0xaa'),_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')]())[_0xb99c('0x46')](_0xb99c('0xab'))[_0xb99c('0x46')](_0xb99c('0xac'),squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xad'))[_0xb99c('0x83')](_0xb99c('0xae'))['where']('VoiceQueueId\x20=\x20?',_0xa9b905[_0xb99c('0x4e')]['id']['toString']()))[_0xb99c('0x46')](_0xb99c('0xac'),squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xaf'))[_0xb99c('0x83')](_0xb99c('0xb0'))[_0xb99c('0x46')](_0xb99c('0x88'),_0xa9b905[_0xb99c('0x4e')]['id'][_0xb99c('0xa7')]())))[_0xb99c('0xa7')]();break;case _0xb99c('0xb1'):_0x27a538=squel[_0xb99c('0x9f')]()[_0xb99c('0xa0')](_0xb99c('0xb0'))[_0xb99c('0xa1')]([_0xb99c('0xa4'),_0xb99c('0xa2'),_0xb99c('0xa5'),_0xb99c('0xa3'),'VoiceQueueId',_0xb99c('0x5e'),_0xb99c('0x5f')],squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xa4'),_0xb99c('0xa4'))[_0xb99c('0x81')](_0xb99c('0xa8'),'scheduledAt')[_0xb99c('0x81')]('id',_0xb99c('0xa5'))[_0xb99c('0x81')](_0x5982d1['CmListId']['toString'](),'ListId')[_0xb99c('0x81')](_0xa9b905['params']['id'][_0xb99c('0xa7')](),_0xb99c('0x64'))[_0xb99c('0x81')](_0xb99c('0xa8'),_0xb99c('0x5e'))[_0xb99c('0x81')](_0xb99c('0xa8'),'updatedAt')['from'](_0xb99c('0xa9'))['where'](_0xb99c('0xb2'))[_0xb99c('0x46')](_0xb99c('0xaa'),_0x5982d1['CmListId'][_0xb99c('0xa7')]())['where'](_0xb99c('0xab'))['where'](_0xb99c('0xac'),squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xaf'))[_0xb99c('0x83')](_0xb99c('0xb0'))[_0xb99c('0x46')](_0xb99c('0x88'),_0xa9b905['params']['id'][_0xb99c('0xa7')]())))[_0xb99c('0xa7')]();break;default:_0x27a538=squel[_0xb99c('0x9f')]()[_0xb99c('0xa0')](_0xb99c('0xb0'))[_0xb99c('0xa1')]([_0xb99c('0xa4'),_0xb99c('0xa2'),_0xb99c('0xa5'),_0xb99c('0xa3'),_0xb99c('0x64'),'createdAt',_0xb99c('0x5f')],squel['select']()[_0xb99c('0x81')](_0xb99c('0xa4'),_0xb99c('0xa4'))[_0xb99c('0x81')](_0xb99c('0xa8'),_0xb99c('0xa2'))[_0xb99c('0x81')]('id',_0xb99c('0xa5'))['field'](_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')](),_0xb99c('0xa3'))[_0xb99c('0x81')](_0xa9b905[_0xb99c('0x4e')]['id'][_0xb99c('0xa7')](),_0xb99c('0x64'))[_0xb99c('0x81')]('NOW()',_0xb99c('0x5e'))[_0xb99c('0x81')](_0xb99c('0xa8'),'updatedAt')[_0xb99c('0x83')](_0xb99c('0xa9'))[_0xb99c('0x46')]('deletedAt\x20IS\x20NULL')[_0xb99c('0x46')](_0xb99c('0xaa'),_0x5982d1[_0xb99c('0xa6')][_0xb99c('0xa7')]())[_0xb99c('0x46')](_0xb99c('0xab')))[_0xb99c('0xa7')]();}_0x11b799[_0xb99c('0x89')](db[_0xb99c('0x8a')]['query'](_0x27a538));}return BPromise[_0xb99c('0x90')](_0x11b799);}})['then'](function(){return _0x161571;})[_0xb99c('0x27')](respondWithResult(_0xf22189,null))[_0xb99c('0x51')](handleError(_0xf22189,null));};exports[_0xb99c('0xb3')]=function(_0x1a339b,_0x53e4d9,_0x13ade4){return db[_0xb99c('0x39')]['find']({'where':{'id':_0x1a339b['params']['id']}})['then'](handleEntityNotFound(_0x53e4d9,null))[_0xb99c('0x27')](function(_0xe4a443){if(_0xe4a443){return _0xe4a443[_0xb99c('0xb3')](_0x1a339b[_0xb99c('0x3d')][_0xb99c('0x7e')]);}})['then'](function(_0x57f5a4){if(_0x57f5a4){return db[_0xb99c('0x65')]['destroy']({'where':{'ListId':_0x1a339b[_0xb99c('0x3d')]['ids'],'VoiceQueueId':_0x1a339b[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(){return _0x57f5a4;});}})[_0xb99c('0x27')](respondWithStatusCode(_0x53e4d9,null))[_0xb99c('0x51')](handleError(_0x53e4d9,null));};exports[_0xb99c('0xb4')]=function(_0x2c7266,_0xa194a2,_0x5da446){var _0x4e95c3={};var _0x3a0849={};var _0x4e1cc5;var _0x3adfa5;return db['VoiceQueue']['findOne']({'where':{'id':_0x2c7266[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0xa194a2,null))['then'](function(_0x582c24){if(_0x582c24){_0x4e1cc5=_0x582c24;_0x3a0849[_0xb99c('0x3f')]=_[_0xb99c('0x3c')](db[_0xb99c('0x9c')]['rawAttributes']);_0x3a0849[_0xb99c('0x3d')]=_[_0xb99c('0x3c')](_0x2c7266[_0xb99c('0x3d')]);_0x3a0849['filters']=_['intersection'](_0x3a0849[_0xb99c('0x3f')],_0x3a0849[_0xb99c('0x3d')]);_0x4e95c3[_0xb99c('0x40')]=_[_0xb99c('0x3e')](_0x3a0849[_0xb99c('0x3f')],qs[_0xb99c('0x41')](_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x41')]));_0x4e95c3[_0xb99c('0x40')]=_0x4e95c3[_0xb99c('0x40')]['length']?_0x4e95c3[_0xb99c('0x40')]:_0x3a0849[_0xb99c('0x3f')];_0x4e95c3[_0xb99c('0x63')]=qs[_0xb99c('0x45')](_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x45')]);_0x4e95c3['where']=qs[_0xb99c('0x47')](_['pick'](_0x2c7266[_0xb99c('0x3d')],_0x3a0849[_0xb99c('0x47')]));if(_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x2b')]){_0x4e95c3['where']=_[_0xb99c('0x49')](_0x4e95c3[_0xb99c('0x46')],{'$or':_[_0xb99c('0x38')](_0x4e95c3[_0xb99c('0x40')],function(_0x24a3a2){var _0x1c48b7={};_0x1c48b7[_0x24a3a2]={'$like':'%'+_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x2b')]+'%'};return _0x1c48b7;})});}_0x4e95c3=_[_0xb99c('0x49')]({},_0x4e95c3,_0x2c7266['options']);return _0x4e1cc5[_0xb99c('0xb4')](_0x4e95c3);}})[_0xb99c('0x27')](function(_0x1ce336){if(_0x1ce336){_0x3adfa5=_0x1ce336[_0xb99c('0x42')];if(!_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x43')]('nolimit')){_0x4e95c3[_0xb99c('0x1e')]=qs[_0xb99c('0x1e')](_0x2c7266[_0xb99c('0x3d')][_0xb99c('0x1e')]);_0x4e95c3[_0xb99c('0x1d')]=qs[_0xb99c('0x1d')](_0x2c7266[_0xb99c('0x3d')]['offset']);}return _0x4e1cc5[_0xb99c('0xb4')](_0x4e95c3);}})['then'](function(_0x2e6434){if(_0x2e6434){return _0x2e6434?{'count':_0x3adfa5,'rows':_0x2e6434}:null;}})['then'](respondWithResult(_0xa194a2,null))[_0xb99c('0x51')](handleError(_0xa194a2,null));};exports[_0xb99c('0xb5')]=function(_0x5b9842,_0x3d6d51,_0x44f5f4){var _0x50dc6e,_0xf352fe;return db['VoiceQueue'][_0xb99c('0x2f')]({'where':{'id':_0x5b9842[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x3d6d51,null))[_0xb99c('0x27')](function(_0x123623){if(_0x123623){_0xf352fe=_0x123623;return _0x123623[_0xb99c('0xb5')](_0x5b9842[_0xb99c('0x53')][_0xb99c('0x7e')],_[_0xb99c('0x5d')](_0x5b9842[_0xb99c('0x53')],['ids','id'])||{});}return null;})['spread'](function(_0x32fedd){var _0x1d901e;_0x50dc6e=_0x32fedd||[];var _0x2bbe21=[];if(_0x32fedd){for(var _0x2ea5b6=0x0;_0x2ea5b6<_0x32fedd['length'];_0x2ea5b6+=0x1){var _0xcca24c=_0x32fedd[_0x2ea5b6][_0xb99c('0x55')]({'plain':!![]});_0x1d901e=squel[_0xb99c('0x9f')]()['into']('cm_hopper_black')[_0xb99c('0xa1')]([_0xb99c('0xa4'),_0xb99c('0xa5'),_0xb99c('0xa3'),'VoiceQueueId',_0xb99c('0x5e'),_0xb99c('0x5f')],squel[_0xb99c('0x80')]()[_0xb99c('0x81')](_0xb99c('0xa4'),_0xb99c('0xa4'))[_0xb99c('0x81')]('id',_0xb99c('0xa5'))[_0xb99c('0x81')](_0xcca24c[_0xb99c('0xa6')]['toString'](),_0xb99c('0xa3'))[_0xb99c('0x81')](_0x5b9842[_0xb99c('0x4e')]['id']['toString'](),_0xb99c('0x64'))[_0xb99c('0x81')](_0xb99c('0xa8'),_0xb99c('0x5e'))[_0xb99c('0x81')](_0xb99c('0xa8'),'updatedAt')[_0xb99c('0x83')]('cm_contacts')[_0xb99c('0x46')](_0xb99c('0xb2'))['where'](_0xb99c('0xaa'),_0xcca24c[_0xb99c('0xa6')][_0xb99c('0xa7')]())[_0xb99c('0x46')](_0xb99c('0xab')))['toString']();_0x2bbe21[_0xb99c('0x89')](db[_0xb99c('0x8a')][_0xb99c('0x3d')](_0x1d901e));}return BPromise[_0xb99c('0x90')](_0x2bbe21);}})[_0xb99c('0x27')](function(){return _0x50dc6e;})[_0xb99c('0x27')](respondWithResult(_0x3d6d51,null))[_0xb99c('0x51')](handleError(_0x3d6d51,null));};exports[_0xb99c('0xb6')]=function(_0x98c525,_0x5ca0b7,_0x3c46cb){return db[_0xb99c('0x39')][_0xb99c('0x2f')]({'where':{'id':_0x98c525['params']['id']}})[_0xb99c('0x27')](handleEntityNotFound(_0x5ca0b7,null))[_0xb99c('0x27')](function(_0x1df32c){if(_0x1df32c){return _0x1df32c[_0xb99c('0xb6')](_0x98c525[_0xb99c('0x3d')]['ids']);}})[_0xb99c('0x27')](function(_0x2867e3){if(_0x2867e3){return db[_0xb99c('0x69')][_0xb99c('0x32')]({'where':{'ListId':_0x98c525[_0xb99c('0x3d')][_0xb99c('0x7e')],'VoiceQueueId':_0x98c525[_0xb99c('0x4e')]['id']}})[_0xb99c('0x27')](function(){return _0x2867e3;});}})[_0xb99c('0x27')](respondWithStatusCode(_0x5ca0b7,null))['catch'](handleError(_0x5ca0b7,null));};
\ No newline at end of file
index 2e693b5..330ac3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcea7=['events','../../mysqldb','emit','hasOwnProperty','hook','exports'];(function(_0x179b54,_0x2ea9e4){var _0x39dddd=function(_0x219b63){while(--_0x219b63){_0x179b54['push'](_0x179b54['shift']());}};_0x39dddd(++_0x2ea9e4);}(_0xcea7,0x17a));var _0x7cea=function(_0x3edd48,_0x1be168){_0x3edd48=_0x3edd48-0x0;var _0x1ae654=_0xcea7[_0x3edd48];return _0x1ae654;};'use strict';var EventEmitter=require(_0x7cea('0x0'));var VoiceQueue=require(_0x7cea('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x30346b){return function(_0x53956c,_0x4ab88c,_0xda96f0){VoiceQueueEvents[_0x7cea('0x2')](_0x30346b+':'+_0x53956c['id'],_0x53956c);VoiceQueueEvents[_0x7cea('0x2')](_0x30346b,_0x53956c);_0xda96f0(null);};}for(var e in events){if(events[_0x7cea('0x3')](e)){var event=events[e];VoiceQueue[_0x7cea('0x4')](e,emitEvent(event));}}module[_0x7cea('0x5')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x0c63=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','save','update','remove','emit'];(function(_0x974c0,_0x5440b9){var _0xd78750=function(_0x4c5222){while(--_0x4c5222){_0x974c0['push'](_0x974c0['shift']());}};_0xd78750(++_0x5440b9);}(_0x0c63,0x14d));var _0x30c6=function(_0x2792a6,_0xa68904){_0x2792a6=_0x2792a6-0x0;var _0x2797a4=_0x0c63[_0x2792a6];return _0x2797a4;};'use strict';var EventEmitter=require(_0x30c6('0x0'));var VoiceQueue=require(_0x30c6('0x1'))['db'][_0x30c6('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x30c6('0x3'),'afterUpdate':_0x30c6('0x4'),'afterDestroy':_0x30c6('0x5')};function emitEvent(_0x193f7f){return function(_0x80d238,_0x53185f,_0x192ce5){VoiceQueueEvents[_0x30c6('0x6')](_0x193f7f+':'+_0x80d238['id'],_0x80d238);VoiceQueueEvents[_0x30c6('0x6')](_0x193f7f,_0x80d238);_0x192ce5(null);};}for(var e in events){if(events[_0x30c6('0x7')](e)){var event=events[e];VoiceQueue[_0x30c6('0x8')](e,emitEvent(event));}}module[_0x30c6('0x9')]=VoiceQueueEvents;
\ No newline at end of file
index 022f260..afe7c64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['define','voice_queues','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./voiceQueue.attributes','exports'];(function(_0x508926,_0xa05b4f){var _0x49ab00=function(_0x360b74){while(--_0x360b74){_0x508926['push'](_0x508926['shift']());}};_0x49ab00(++_0xa05b4f);}(_0x008c,0x188));var _0xc008=function(_0x5f23d9,_0x431d9a){_0x5f23d9=_0x5f23d9-0x0;var _0x68fb9e=_0x008c[_0x5f23d9];return _0x68fb9e;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('VoiceQueue',attributes,{'tableName':_0xc008('0xc'),'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(_0x5b441a,_0x787827){var _0xa119cc=function(_0x520ebb){while(--_0x520ebb){_0x5b441a['push'](_0x5b441a['shift']());}};_0xa119cc(++_0x787827);}(_0x34e8,0x12c));var _0x834e=function(_0x25f411,_0x516c77){_0x25f411=_0x25f411-0x0;var _0x2aeb36=_0x34e8[_0x25f411];return _0x2aeb36;};'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 8f76fa9..bca68c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x895f=['findAll','options','raw','where','attributes','limit','include','map','ShowVoiceQueue','model','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','register','then','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceQueue','VoiceQueue'];(function(_0x644363,_0x5f2400){var _0x3cb021=function(_0x407676){while(--_0x407676){_0x644363['push'](_0x644363['shift']());}};_0x3cb021(++_0x5f2400);}(_0x895f,0x13a));var _0xf895=function(_0x24ed15,_0x3d3618){_0x24ed15=_0x24ed15-0x0;var _0x1adb57=_0x895f[_0x24ed15];return _0x1adb57;};'use strict';var _=require(_0xf895('0x0'));var util=require(_0xf895('0x1'));var moment=require(_0xf895('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf895('0x3'))['db'];var utils=require(_0xf895('0x4'));var logger=require(_0xf895('0x5'))(_0xf895('0x6'));var config=require(_0xf895('0x7'));var jayson=require(_0xf895('0x8'));var client=jayson[_0xf895('0x9')][_0xf895('0xa')]({'port':0x232a});config[_0xf895('0xb')]=_['defaults'](config[_0xf895('0xb')],{'host':_0xf895('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf895('0xb')]));require('./voiceQueue.socket')[_0xf895('0xd')](socket);function respondWithRpcPromise(_0x4f38eb,_0x1b4bef,_0x4fbe3a){return new BPromise(function(_0x2b5cd9,_0x4b700e){return client['request'](_0x4f38eb,_0x4fbe3a)[_0xf895('0xe')](function(_0x56dff0){logger['info'](_0xf895('0xf'),_0x1b4bef,_0xf895('0x10'));logger[_0xf895('0x11')](_0xf895('0x12'),_0x1b4bef,_0xf895('0x10'),JSON[_0xf895('0x13')](_0x56dff0));if(_0x56dff0['error']){if(_0x56dff0[_0xf895('0x14')][_0xf895('0x15')]===0x1f4){logger[_0xf895('0x14')](_0xf895('0xf'),_0x1b4bef,_0x56dff0[_0xf895('0x14')][_0xf895('0x16')]);return _0x4b700e(_0x56dff0[_0xf895('0x14')][_0xf895('0x16')]);}logger[_0xf895('0x14')](_0xf895('0xf'),_0x1b4bef,_0x56dff0['error'][_0xf895('0x16')]);return _0x2b5cd9(_0x56dff0[_0xf895('0x14')]['message']);}else{logger[_0xf895('0x17')](_0xf895('0xf'),_0x1b4bef,'request\x20sent');_0x2b5cd9(_0x56dff0[_0xf895('0x18')][_0xf895('0x16')]);}})[_0xf895('0x19')](function(_0x1cff91){logger[_0xf895('0x14')](_0xf895('0xf'),_0x1b4bef,_0x1cff91);_0x4b700e(_0x1cff91);});});}exports[_0xf895('0x1a')]=function(_0x500f39){var _0x34ee40=this;return new Promise(function(_0x425f4f,_0x402877){return db[_0xf895('0x1b')][_0xf895('0x1c')]({'raw':_0x500f39[_0xf895('0x1d')]?_0x500f39[_0xf895('0x1d')][_0xf895('0x1e')]===undefined?!![]:![]:!![],'where':_0x500f39[_0xf895('0x1d')]?_0x500f39[_0xf895('0x1d')][_0xf895('0x1f')]||null:null,'attributes':_0x500f39[_0xf895('0x1d')]?_0x500f39[_0xf895('0x1d')][_0xf895('0x20')]||null:null,'limit':_0x500f39[_0xf895('0x1d')]?_0x500f39[_0xf895('0x1d')][_0xf895('0x21')]||null:null,'include':_0x500f39[_0xf895('0x1d')]?_0x500f39['options'][_0xf895('0x22')]?_[_0xf895('0x23')](_0x500f39['options'][_0xf895('0x22')],function(_0x499400){return{'model':db[_0x499400['model']],'as':_0x499400['as'],'attributes':_0x499400['attributes'],'include':_0x499400['include']?_['map'](_0x499400[_0xf895('0x22')],function(_0x538e7f){return{'model':db[_0x538e7f['model']],'as':_0x538e7f['as'],'attributes':_0x538e7f[_0xf895('0x20')],'include':_0x538e7f[_0xf895('0x22')]?_[_0xf895('0x23')](_0x538e7f[_0xf895('0x22')],function(_0x2f56d8){return{'model':db[_0x2f56d8['model']],'as':_0x2f56d8['as'],'attributes':_0x2f56d8[_0xf895('0x20')]};}):[]};}):[]};}):[]:[]})[_0xf895('0xe')](function(_0x25b810){logger[_0xf895('0x17')](_0xf895('0x1a'),_0x500f39);logger[_0xf895('0x11')](_0xf895('0x1a'),_0x500f39,JSON[_0xf895('0x13')](_0x25b810));_0x425f4f(_0x25b810);})[_0xf895('0x19')](function(_0x39b1f0){logger[_0xf895('0x14')](_0xf895('0x1a'),_0x39b1f0[_0xf895('0x16')],_0x500f39);_0x402877(_0x34ee40[_0xf895('0x14')](0x1f4,_0x39b1f0[_0xf895('0x16')]));});});};exports[_0xf895('0x24')]=function(_0x557035){var _0x530a4b=this;return new Promise(function(_0x4ebe0f,_0x4aca28){return db[_0xf895('0x1b')]['find']({'raw':_0x557035['options']?_0x557035['options'][_0xf895('0x1e')]===undefined?!![]:![]:!![],'where':_0x557035[_0xf895('0x1d')]?_0x557035[_0xf895('0x1d')][_0xf895('0x1f')]||null:null,'attributes':_0x557035[_0xf895('0x1d')]?_0x557035[_0xf895('0x1d')][_0xf895('0x20')]||null:null,'include':_0x557035[_0xf895('0x1d')]?_0x557035[_0xf895('0x1d')]['include']?_[_0xf895('0x23')](_0x557035[_0xf895('0x1d')][_0xf895('0x22')],function(_0x27d016){return{'model':db[_0x27d016[_0xf895('0x25')]],'as':_0x27d016['as'],'attributes':_0x27d016['attributes'],'include':_0x27d016[_0xf895('0x22')]?_[_0xf895('0x23')](_0x27d016[_0xf895('0x22')],function(_0x2c9693){return{'model':db[_0x2c9693['model']],'as':_0x2c9693['as'],'attributes':_0x2c9693['attributes'],'include':_0x2c9693[_0xf895('0x22')]?_[_0xf895('0x23')](_0x2c9693[_0xf895('0x22')],function(_0x2a1c02){return{'model':db[_0x2a1c02['model']],'as':_0x2a1c02['as'],'attributes':_0x2a1c02[_0xf895('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2c7e5c){logger[_0xf895('0x17')](_0xf895('0x24'),_0x557035);logger[_0xf895('0x11')](_0xf895('0x24'),_0x557035,JSON[_0xf895('0x13')](_0x2c7e5c));_0x4ebe0f(_0x2c7e5c);})['catch'](function(_0x1e758c){logger['error'](_0xf895('0x24'),_0x1e758c['message'],_0x557035);_0x4aca28(_0x530a4b[_0xf895('0x14')](0x1f4,_0x1e758c['message']));});});};
\ No newline at end of file
+var _0xde4f=['error','code','VoiceQueue,\x20%s,\x20%s','message','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','limit','include','map','model','attributes','ShowVoiceQueue','find','where','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','request','then','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x56fe98,_0x43dc16){var _0x212f4f=function(_0xc3427d){while(--_0xc3427d){_0x56fe98['push'](_0x56fe98['shift']());}};_0x212f4f(++_0x43dc16);}(_0xde4f,0x1a3));var _0xfde4=function(_0x115342,_0x40f412){_0x115342=_0x115342-0x0;var _0x3194c8=_0xde4f[_0x115342];return _0x3194c8;};'use strict';var _=require(_0xfde4('0x0'));var util=require(_0xfde4('0x1'));var moment=require(_0xfde4('0x2'));var BPromise=require(_0xfde4('0x3'));var rs=require(_0xfde4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xfde4('0x5'));var logger=require(_0xfde4('0x6'))(_0xfde4('0x7'));var config=require(_0xfde4('0x8'));var jayson=require(_0xfde4('0x9'));var client=jayson[_0xfde4('0xa')][_0xfde4('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xfde4('0xc')],{'host':_0xfde4('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfde4('0xc')]));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x3df2aa,_0x527052,_0x926be7){return new BPromise(function(_0x7ab82b,_0x3444ee){return client[_0xfde4('0xe')](_0x3df2aa,_0x926be7)[_0xfde4('0xf')](function(_0x3c6db1){logger[_0xfde4('0x10')]('VoiceQueue,\x20%s,\x20%s',_0x527052,_0xfde4('0x11'));logger[_0xfde4('0x12')](_0xfde4('0x13'),_0x527052,_0xfde4('0x11'),JSON[_0xfde4('0x14')](_0x3c6db1));if(_0x3c6db1[_0xfde4('0x15')]){if(_0x3c6db1[_0xfde4('0x15')][_0xfde4('0x16')]===0x1f4){logger[_0xfde4('0x15')](_0xfde4('0x17'),_0x527052,_0x3c6db1['error'][_0xfde4('0x18')]);return _0x3444ee(_0x3c6db1['error'][_0xfde4('0x18')]);}logger['error'](_0xfde4('0x17'),_0x527052,_0x3c6db1[_0xfde4('0x15')][_0xfde4('0x18')]);return _0x7ab82b(_0x3c6db1[_0xfde4('0x15')][_0xfde4('0x18')]);}else{logger[_0xfde4('0x10')](_0xfde4('0x17'),_0x527052,_0xfde4('0x11'));_0x7ab82b(_0x3c6db1[_0xfde4('0x19')][_0xfde4('0x18')]);}})[_0xfde4('0x1a')](function(_0x338e31){logger[_0xfde4('0x15')](_0xfde4('0x17'),_0x527052,_0x338e31);_0x3444ee(_0x338e31);});});}exports[_0xfde4('0x1b')]=function(_0x2c5d96){var _0x557915=this;return new Promise(function(_0x42f3e0,_0x10e054){return db[_0xfde4('0x1c')][_0xfde4('0x1d')]({'raw':_0x2c5d96['options']?_0x2c5d96[_0xfde4('0x1e')][_0xfde4('0x1f')]===undefined?!![]:![]:!![],'where':_0x2c5d96['options']?_0x2c5d96[_0xfde4('0x1e')]['where']||null:null,'attributes':_0x2c5d96[_0xfde4('0x1e')]?_0x2c5d96[_0xfde4('0x1e')]['attributes']||null:null,'limit':_0x2c5d96[_0xfde4('0x1e')]?_0x2c5d96[_0xfde4('0x1e')][_0xfde4('0x20')]||null:null,'include':_0x2c5d96[_0xfde4('0x1e')]?_0x2c5d96['options'][_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x2c5d96['options'][_0xfde4('0x21')],function(_0x43ea8c){return{'model':db[_0x43ea8c[_0xfde4('0x23')]],'as':_0x43ea8c['as'],'attributes':_0x43ea8c[_0xfde4('0x24')],'include':_0x43ea8c[_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x43ea8c['include'],function(_0x2fdfc7){return{'model':db[_0x2fdfc7[_0xfde4('0x23')]],'as':_0x2fdfc7['as'],'attributes':_0x2fdfc7[_0xfde4('0x24')],'include':_0x2fdfc7[_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x2fdfc7['include'],function(_0x103ae1){return{'model':db[_0x103ae1[_0xfde4('0x23')]],'as':_0x103ae1['as'],'attributes':_0x103ae1[_0xfde4('0x24')]};}):[]};}):[]};}):[]:[]})[_0xfde4('0xf')](function(_0x3bb9e6){logger[_0xfde4('0x10')](_0xfde4('0x1b'),_0x2c5d96);logger[_0xfde4('0x12')](_0xfde4('0x1b'),_0x2c5d96,JSON[_0xfde4('0x14')](_0x3bb9e6));_0x42f3e0(_0x3bb9e6);})['catch'](function(_0x1e3843){logger['error'](_0xfde4('0x1b'),_0x1e3843['message'],_0x2c5d96);_0x10e054(_0x557915['error'](0x1f4,_0x1e3843[_0xfde4('0x18')]));});});};exports[_0xfde4('0x25')]=function(_0x1f0706){var _0x317f9d=this;return new Promise(function(_0x16fcab,_0x16c939){return db[_0xfde4('0x1c')][_0xfde4('0x26')]({'raw':_0x1f0706[_0xfde4('0x1e')]?_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x1f')]===undefined?!![]:![]:!![],'where':_0x1f0706['options']?_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x27')]||null:null,'attributes':_0x1f0706['options']?_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x24')]||null:null,'include':_0x1f0706[_0xfde4('0x1e')]?_0x1f0706['options'][_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x1f0706[_0xfde4('0x1e')][_0xfde4('0x21')],function(_0x39085b){return{'model':db[_0x39085b['model']],'as':_0x39085b['as'],'attributes':_0x39085b[_0xfde4('0x24')],'include':_0x39085b[_0xfde4('0x21')]?_['map'](_0x39085b[_0xfde4('0x21')],function(_0x38c354){return{'model':db[_0x38c354[_0xfde4('0x23')]],'as':_0x38c354['as'],'attributes':_0x38c354[_0xfde4('0x24')],'include':_0x38c354[_0xfde4('0x21')]?_[_0xfde4('0x22')](_0x38c354['include'],function(_0x16777c){return{'model':db[_0x16777c[_0xfde4('0x23')]],'as':_0x16777c['as'],'attributes':_0x16777c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b88c5){logger[_0xfde4('0x10')]('ShowVoiceQueue',_0x1f0706);logger[_0xfde4('0x12')](_0xfde4('0x25'),_0x1f0706,JSON[_0xfde4('0x14')](_0x4b88c5));_0x16fcab(_0x4b88c5);})[_0xfde4('0x1a')](function(_0x22a465){logger[_0xfde4('0x15')](_0xfde4('0x25'),_0x22a465['message'],_0x1f0706);_0x16c939(_0x317f9d[_0xfde4('0x15')](0x1f4,_0x22a465[_0xfde4('0x18')]));});});};
\ No newline at end of file
index 4813019..425e167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31eb=['save','remove','update','emit','register','length','voiceQueue:','./voiceQueue.events'];(function(_0x119cd8,_0x556b73){var _0x7072a3=function(_0x5908d1){while(--_0x5908d1){_0x119cd8['push'](_0x119cd8['shift']());}};_0x7072a3(++_0x556b73);}(_0x31eb,0x187));var _0xb31e=function(_0x9e02f2,_0x33d750){_0x9e02f2=_0x9e02f2-0x0;var _0x4fb4fd=_0x31eb[_0x9e02f2];return _0x4fb4fd;};'use strict';var VoiceQueueEvents=require(_0xb31e('0x0'));var events=[_0xb31e('0x1'),_0xb31e('0x2'),_0xb31e('0x3')];function createListener(_0x5187e3,_0x53efaa){return function(_0x501e46){_0x53efaa[_0xb31e('0x4')](_0x5187e3,_0x501e46);};}function removeListener(_0x17ee71,_0x5ccb05){return function(){VoiceQueueEvents['removeListener'](_0x17ee71,_0x5ccb05);};}exports[_0xb31e('0x5')]=function(_0xe1b3b6){for(var _0x1cb7d4=0x0,_0xb82ad1=events[_0xb31e('0x6')];_0x1cb7d4<_0xb82ad1;_0x1cb7d4++){var _0x479aba=events[_0x1cb7d4];var _0x2c2137=createListener(_0xb31e('0x7')+_0x479aba,_0xe1b3b6);VoiceQueueEvents['on'](_0x479aba,_0x2c2137);}};
\ No newline at end of file
+var _0x23ee=['remove','update','removeListener','voiceQueue:','./voiceQueue.events','save'];(function(_0x5173e7,_0xa9baa2){var _0x99370f=function(_0x452492){while(--_0x452492){_0x5173e7['push'](_0x5173e7['shift']());}};_0x99370f(++_0xa9baa2);}(_0x23ee,0x76));var _0xe23e=function(_0x3db122,_0x5e6bee){_0x3db122=_0x3db122-0x0;var _0x325b67=_0x23ee[_0x3db122];return _0x325b67;};'use strict';var VoiceQueueEvents=require(_0xe23e('0x0'));var events=[_0xe23e('0x1'),_0xe23e('0x2'),_0xe23e('0x3')];function createListener(_0x29af9d,_0x3ab471){return function(_0x565d13){_0x3ab471['emit'](_0x29af9d,_0x565d13);};}function removeListener(_0x28280a,_0x19c4f9){return function(){VoiceQueueEvents[_0xe23e('0x4')](_0x28280a,_0x19c4f9);};}exports['register']=function(_0x8a58e6){for(var _0x1779f7=0x0,_0x4435f7=events['length'];_0x1779f7<_0x4435f7;_0x1779f7++){var _0x1a878f=events[_0x1779f7];var _0x5a4ab8=createListener(_0xe23e('0x5')+_0x1a878f,_0x8a58e6);VoiceQueueEvents['on'](_0x1a878f,_0x5a4ab8);}};
\ No newline at end of file
index bce6cde..4d544cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c59=['../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','get','isAuthenticated','index','describe','getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','../../components/auth/service'];(function(_0x5ec21d,_0x5d0772){var _0x43bde8=function(_0x1bfc7c){while(--_0x1bfc7c){_0x5ec21d['push'](_0x5ec21d['shift']());}};_0x43bde8(++_0x5d0772);}(_0x7c59,0xe2));var _0x97c5=function(_0x1a2763,_0x1c1854){_0x1a2763=_0x1a2763-0x0;var _0x2d819b=_0x7c59[_0x1a2763];return _0x2d819b;};'use strict';var multer=require(_0x97c5('0x0'));var util=require(_0x97c5('0x1'));var path=require(_0x97c5('0x2'));var timeout=require(_0x97c5('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x97c5('0x4'));var interaction=require(_0x97c5('0x5'));var config=require(_0x97c5('0x6'));var controller=require(_0x97c5('0x7'));router[_0x97c5('0x8')]('/',auth[_0x97c5('0x9')](),controller[_0x97c5('0xa')]);router[_0x97c5('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x97c5('0xb')]);router[_0x97c5('0x8')]('/index',auth[_0x97c5('0x9')](),controller[_0x97c5('0xc')]);router['get'](_0x97c5('0xd'),auth[_0x97c5('0x9')](),controller[_0x97c5('0xe')]);router[_0x97c5('0xf')]('/',auth[_0x97c5('0x9')](),controller[_0x97c5('0x10')]);router[_0x97c5('0x11')](_0x97c5('0xd'),auth[_0x97c5('0x9')](),controller[_0x97c5('0x12')]);router[_0x97c5('0x13')](_0x97c5('0xd'),auth[_0x97c5('0x9')](),controller[_0x97c5('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x83a5=['./voiceQueueReport.controller','get','/describe','isAuthenticated','describe','/index','getVoiceQueuesReport','/:id','show','post','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x224b1f,_0x54b99d){var _0x2c176a=function(_0x53b81e){while(--_0x53b81e){_0x224b1f['push'](_0x224b1f['shift']());}};_0x2c176a(++_0x54b99d);}(_0x83a5,0xcb));var _0x583a=function(_0x3ce6ba,_0x477f34){_0x3ce6ba=_0x3ce6ba-0x0;var _0x5331bf=_0x83a5[_0x3ce6ba];return _0x5331bf;};'use strict';var multer=require(_0x583a('0x0'));var util=require(_0x583a('0x1'));var path=require(_0x583a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x583a('0x3')]();var fs_extra=require(_0x583a('0x4'));var auth=require(_0x583a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x583a('0x6'));var controller=require(_0x583a('0x7'));router[_0x583a('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x583a('0x9'),auth[_0x583a('0xa')](),controller[_0x583a('0xb')]);router[_0x583a('0x8')](_0x583a('0xc'),auth[_0x583a('0xa')](),controller[_0x583a('0xd')]);router[_0x583a('0x8')](_0x583a('0xe'),auth['isAuthenticated'](),controller[_0x583a('0xf')]);router[_0x583a('0x10')]('/',auth[_0x583a('0xa')](),controller['create']);router['put'](_0x583a('0xe'),auth[_0x583a('0xa')](),controller[_0x583a('0x11')]);router[_0x583a('0x12')](_0x583a('0xe'),auth[_0x583a('0xa')](),controller[_0x583a('0x13')]);module[_0x583a('0x14')]=router;
\ No newline at end of file
index 2c51202..4c4d623 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x653a=['COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','STRING','DATE','getDataValue','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','seconds','setDataValue','holdtime','INTEGER','BOOLEAN'];(function(_0x42b9ca,_0x53d8d1){var _0x184996=function(_0x1bd934){while(--_0x1bd934){_0x42b9ca['push'](_0x42b9ca['shift']());}};_0x184996(++_0x53d8d1);}(_0x653a,0x9c));var _0xa653=function(_0x27b0c4,_0xaf6d02){_0x27b0c4=_0x27b0c4-0x0;var _0xcb87b2=_0x653a[_0x27b0c4];return _0xcb87b2;};'use strict';var Sequelize=require(_0xa653('0x0'));var moment=require(_0xa653('0x1'));module['exports']={'type':{'type':Sequelize[_0xa653('0x2')]},'uniqueid':{'type':Sequelize[_0xa653('0x2')]},'calleridnum':{'type':Sequelize[_0xa653('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xa653('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xa653('0x3')],'set':function(_0x4f225c){var _0x4c7a55=moment(_0x4f225c);var _0x1104b0=moment(this[_0xa653('0x4')](_0xa653('0x5')))['format'](_0xa653('0x6'));var _0x4a47d2=_0x4c7a55['diff'](_0x1104b0,_0xa653('0x7'));this[_0xa653('0x8')]('queuecallerleaveAt',_0x4f225c);this['setDataValue'](_0xa653('0x9'),_0x4a47d2||null);}},'position':{'type':Sequelize[_0xa653('0xa')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xa653('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize['DATE']},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xa653('0x3')]},'queuecallerexit':{'type':Sequelize[_0xa653('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xa653('0x3')]},'queuecallerexitreason':{'type':Sequelize[_0xa653('0x2')],'comment':_0xa653('0xc')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0xa653('0x2')]},'connectedlinenum':{'type':Sequelize[_0xa653('0x2')]},'connectedlinename':{'type':Sequelize[_0xa653('0x2')]},'accountcode':{'type':Sequelize[_0xa653('0x2')]},'context':{'type':Sequelize[_0xa653('0x2')]},'exten':{'type':Sequelize[_0xa653('0x2')]},'priority':{'type':Sequelize[_0xa653('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xa653('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xa653('0x2')]},'transfer':{'type':Sequelize[_0xa653('0xb')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xa653('0x2')],'comment':_0xa653('0xd')},'transferexten':{'type':Sequelize[_0xa653('0x2')]},'transferuniqueid':{'type':Sequelize[_0xa653('0x2')]},'disposition':{'type':Sequelize[_0xa653('0x2')]},'secondDisposition':{'type':Sequelize[_0xa653('0x2')]},'thirdDisposition':{'type':Sequelize[_0xa653('0x2')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x997d=['sequelize','moment','exports','STRING','DATE','getDataValue','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED'];(function(_0x525175,_0x427502){var _0x3a8e1c=function(_0x1392ca){while(--_0x1392ca){_0x525175['push'](_0x525175['shift']());}};_0x3a8e1c(++_0x427502);}(_0x997d,0x10a));var _0xd997=function(_0x57dc85,_0x3a6d51){_0x57dc85=_0x57dc85-0x0;var _0x563a2e=_0x997d[_0x57dc85];return _0x563a2e;};'use strict';var Sequelize=require(_0xd997('0x0'));var moment=require(_0xd997('0x1'));module[_0xd997('0x2')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xd997('0x3')]},'calleridnum':{'type':Sequelize[_0xd997('0x3')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xd997('0x3')]},'queuecallerjoinAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0xd997('0x4')],'set':function(_0x104b3b){var _0x2d4196=moment(_0x104b3b);var _0x3403c0=moment(this[_0xd997('0x5')]('queuecallerjoinAt'))['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x7a7681=_0x2d4196[_0xd997('0x6')](_0x3403c0,_0xd997('0x7'));this[_0xd997('0x8')]('queuecallerleaveAt',_0x104b3b);this['setDataValue'](_0xd997('0x9'),_0x7a7681||null);}},'position':{'type':Sequelize[_0xd997('0xa')]},'count':{'type':Sequelize[_0xd997('0xa')]},'queuecallerabandon':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallercomplete':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallerexit':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xd997('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xd997('0x3')],'comment':_0xd997('0xc')},'originalposition':{'type':Sequelize[_0xd997('0xa')]},'channel':{'type':Sequelize[_0xd997('0x3')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd997('0x3')]},'context':{'type':Sequelize[_0xd997('0x3')]},'exten':{'type':Sequelize[_0xd997('0x3')]},'priority':{'type':Sequelize[_0xd997('0x3')]},'holdtime':{'type':Sequelize[_0xd997('0xa')]},'mohtime':{'type':Sequelize[_0xd997('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xd997('0x3')]},'transfer':{'type':Sequelize[_0xd997('0xb')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xd997('0x3')],'comment':_0xd997('0xd')},'transferexten':{'type':Sequelize[_0xd997('0x3')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xd997('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xd997('0x3')]},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 358c61d..f8faed2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88e2=['stack','name','index','VoiceQueueReport','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','attributes','model','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','options','find','create','body','destroy','describe','nolimit','getVoiceQueuesReport','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','localhost','socket.io-emitter','redis','./voiceQueueReport.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','end'];(function(_0x40538a,_0x52f38c){var _0x596778=function(_0x4885fa){while(--_0x4885fa){_0x40538a['push'](_0x40538a['shift']());}};_0x596778(++_0x52f38c);}(_0x88e2,0x15a));var _0x288e=function(_0x752df7,_0x43ff4d){_0x752df7=_0x752df7-0x0;var _0x306f64=_0x88e2[_0x752df7];return _0x306f64;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x288e('0x0'));var jsonpatch=require(_0x288e('0x1'));var rp=require('request-promise');var moment=require(_0x288e('0x2'));var BPromise=require(_0x288e('0x3'));var Mustache=require(_0x288e('0x4'));var util=require('util');var path=require(_0x288e('0x5'));var sox=require(_0x288e('0x6'));var csv=require(_0x288e('0x7'));var ejs=require(_0x288e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x288e('0x9'));var squel=require(_0x288e('0xa'));var crypto=require(_0x288e('0xb'));var jsforce=require(_0x288e('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x288e('0xd'));var Papa=require(_0x288e('0xe'));var Redis=require(_0x288e('0xf'));var authService=require(_0x288e('0x10'));var qs=require(_0x288e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x288e('0x12'));var logger=require('../../config/logger')(_0x288e('0x13'));var utils=require('../../config/utils');var config=require(_0x288e('0x14'));var licenseUtil=require(_0x288e('0x15'));var db=require(_0x288e('0x16'))['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x288e('0x17'),'port':0x18eb});var socket=require(_0x288e('0x18'))(new Redis(config[_0x288e('0x19')]));require(_0x288e('0x1a'))['register'](socket);function respondWithStatusCode(_0x2d8960,_0x1a1647){_0x1a1647=_0x1a1647||0xcc;return function(_0x57d493){if(_0x57d493){return _0x2d8960[_0x288e('0x1b')](_0x1a1647);}return _0x2d8960[_0x288e('0x1c')](_0x1a1647)['end']();};}function respondWithResult(_0x1a9dc1,_0x46ff9b){_0x46ff9b=_0x46ff9b||0xc8;return function(_0x3170e5){if(_0x3170e5){return _0x1a9dc1[_0x288e('0x1c')](_0x46ff9b)[_0x288e('0x1d')](_0x3170e5);}};}function respondWithFilteredResult(_0x3f422b,_0xcb4102){return function(_0x4cc37c){if(_0x4cc37c){var _0x63b6fc=typeof _0xcb4102[_0x288e('0x1e')]===_0x288e('0x1f')&&typeof _0xcb4102[_0x288e('0x20')]===_0x288e('0x1f');var _0x95d470=_0x4cc37c[_0x288e('0x21')];var _0x1a9195=_0x63b6fc?0x0:_0xcb4102['offset'];var _0x50694c=_0x63b6fc?_0x4cc37c[_0x288e('0x21')]:_0xcb4102[_0x288e('0x1e')]+_0xcb4102[_0x288e('0x20')];var _0x48afa1;if(_0x50694c>=_0x95d470){_0x50694c=_0x95d470;_0x48afa1=0xc8;}else{_0x48afa1=0xce;}_0x3f422b[_0x288e('0x1c')](_0x48afa1);return _0x3f422b[_0x288e('0x22')](_0x288e('0x23'),_0x1a9195+'-'+_0x50694c+'/'+_0x95d470)[_0x288e('0x1d')](_0x4cc37c);}return null;};}function patchUpdates(_0x1b0088){return function(_0x3f1af7){try{jsonpatch['apply'](_0x3f1af7,_0x1b0088,!![]);}catch(_0x5e33dd){return BPromise['reject'](_0x5e33dd);}return _0x3f1af7['save']();};}function saveUpdates(_0x20cd8f,_0x34f708){return function(_0x5154c0){if(_0x5154c0){return _0x5154c0[_0x288e('0x24')](_0x20cd8f)['then'](function(_0x366125){return _0x366125;});}return null;};}function removeEntity(_0x58af2e,_0x3671c9){return function(_0x5b1575){if(_0x5b1575){return _0x5b1575['destroy']()[_0x288e('0x25')](function(){_0x58af2e[_0x288e('0x1c')](0xcc)[_0x288e('0x26')]();});}};}function handleEntityNotFound(_0x19e69b,_0x316868){return function(_0x507471){if(!_0x507471){_0x19e69b[_0x288e('0x1b')](0x194);}return _0x507471;};}function handleError(_0x4a12cf,_0x230cf9){_0x230cf9=_0x230cf9||0x1f4;return function(_0x415e06){logger['error'](_0x415e06[_0x288e('0x27')]);if(_0x415e06[_0x288e('0x28')]){delete _0x415e06[_0x288e('0x28')];}_0x4a12cf[_0x288e('0x1c')](_0x230cf9)['send'](_0x415e06);};}exports[_0x288e('0x29')]=function(_0x43b196,_0x4bc9f9){var _0x9b8c03={},_0x4996bf={},_0x9f0bd0={'count':0x0,'rows':[]};var _0x26125a=_['map'](db[_0x288e('0x2a')][_0x288e('0x2b')],function(_0x228c8c){return{'name':_0x228c8c[_0x288e('0x2c')],'type':_0x228c8c[_0x288e('0x2d')][_0x288e('0x2e')]};});_0x4996bf['model']=_[_0x288e('0x2f')](_0x26125a,_0x288e('0x28'));_0x4996bf[_0x288e('0x30')]=_[_0x288e('0x31')](_0x43b196[_0x288e('0x30')]);_0x4996bf[_0x288e('0x32')]=_[_0x288e('0x33')](_0x4996bf['model'],_0x4996bf[_0x288e('0x30')]);_0x9b8c03[_0x288e('0x34')]=_['intersection'](_0x4996bf[_0x288e('0x35')],qs[_0x288e('0x36')](_0x43b196[_0x288e('0x30')][_0x288e('0x36')]));_0x9b8c03[_0x288e('0x34')]=_0x9b8c03[_0x288e('0x34')][_0x288e('0x37')]?_0x9b8c03[_0x288e('0x34')]:_0x4996bf[_0x288e('0x35')];if(!_0x43b196[_0x288e('0x30')]['hasOwnProperty']('nolimit')){_0x9b8c03['limit']=qs[_0x288e('0x20')](_0x43b196['query'][_0x288e('0x20')]);_0x9b8c03[_0x288e('0x1e')]=qs[_0x288e('0x1e')](_0x43b196[_0x288e('0x30')][_0x288e('0x1e')]);}_0x9b8c03[_0x288e('0x38')]=qs['sort'](_0x43b196[_0x288e('0x30')][_0x288e('0x39')]);_0x9b8c03[_0x288e('0x3a')]=qs[_0x288e('0x32')](_[_0x288e('0x3b')](_0x43b196['query'],_0x4996bf[_0x288e('0x32')]),_0x26125a);if(_0x43b196[_0x288e('0x30')][_0x288e('0x3c')]){_0x9b8c03[_0x288e('0x3a')]=_[_0x288e('0x3d')](_0x9b8c03[_0x288e('0x3a')],{'$or':_[_0x288e('0x2f')](_0x26125a,function(_0x155440){if(_0x155440[_0x288e('0x2d')]!==_0x288e('0x3e')){var _0x485d7b={};_0x485d7b[_0x155440[_0x288e('0x28')]]={'$like':'%'+_0x43b196[_0x288e('0x30')]['filter']+'%'};return _0x485d7b;}})});}_0x9b8c03=_['merge']({},_0x9b8c03,_0x43b196['options']);var _0x959e42={'where':_0x9b8c03['where']};return db[_0x288e('0x2a')][_0x288e('0x21')](_0x959e42)[_0x288e('0x25')](function(_0x44b8e7){_0x9f0bd0['count']=_0x44b8e7;if(_0x43b196['query'][_0x288e('0x3f')]){_0x9b8c03[_0x288e('0x40')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x288e('0x41')](_0x9b8c03);})[_0x288e('0x25')](function(_0x24a4a8){_0x9f0bd0[_0x288e('0x42')]=_0x24a4a8;return _0x9f0bd0;})[_0x288e('0x25')](respondWithFilteredResult(_0x4bc9f9,_0x9b8c03))[_0x288e('0x43')](handleError(_0x4bc9f9,null));};exports['show']=function(_0x2e7670,_0x50afab){var _0xb56164={'raw':![],'where':{'id':_0x2e7670[_0x288e('0x44')]['id']}},_0x3b82dc={};_0x3b82dc[_0x288e('0x35')]=_['keys'](db[_0x288e('0x2a')]['rawAttributes']);_0x3b82dc[_0x288e('0x30')]=_[_0x288e('0x31')](_0x2e7670[_0x288e('0x30')]);_0x3b82dc[_0x288e('0x32')]=_[_0x288e('0x33')](_0x3b82dc[_0x288e('0x35')],_0x3b82dc[_0x288e('0x30')]);_0xb56164[_0x288e('0x34')]=_[_0x288e('0x33')](_0x3b82dc['model'],qs[_0x288e('0x36')](_0x2e7670[_0x288e('0x30')]['fields']));_0xb56164[_0x288e('0x34')]=_0xb56164['attributes'][_0x288e('0x37')]?_0xb56164[_0x288e('0x34')]:_0x3b82dc[_0x288e('0x35')];if(_0x2e7670[_0x288e('0x30')][_0x288e('0x3f')]){_0xb56164['include']=[{'all':!![]}];}_0xb56164=_[_0x288e('0x3d')]({},_0xb56164,_0x2e7670[_0x288e('0x45')]);return db[_0x288e('0x2a')][_0x288e('0x46')](_0xb56164)['then'](handleEntityNotFound(_0x50afab,null))[_0x288e('0x25')](respondWithResult(_0x50afab,null))[_0x288e('0x43')](handleError(_0x50afab,null));};exports[_0x288e('0x47')]=function(_0x13aaa3,_0x347dd3){return db[_0x288e('0x2a')]['create'](_0x13aaa3['body'],{})[_0x288e('0x25')](respondWithResult(_0x347dd3,0xc9))[_0x288e('0x43')](handleError(_0x347dd3,null));};exports[_0x288e('0x24')]=function(_0x3806f1,_0x4eee22){if(_0x3806f1['body']['id']){delete _0x3806f1[_0x288e('0x48')]['id'];}return db[_0x288e('0x2a')]['find']({'where':{'id':_0x3806f1[_0x288e('0x44')]['id']}})[_0x288e('0x25')](handleEntityNotFound(_0x4eee22,null))[_0x288e('0x25')](saveUpdates(_0x3806f1[_0x288e('0x48')],null))[_0x288e('0x25')](respondWithResult(_0x4eee22,null))[_0x288e('0x43')](handleError(_0x4eee22,null));};exports[_0x288e('0x49')]=function(_0x5051f7,_0x30f75b){return db[_0x288e('0x2a')][_0x288e('0x46')]({'where':{'id':_0x5051f7[_0x288e('0x44')]['id']}})[_0x288e('0x25')](handleEntityNotFound(_0x30f75b,null))[_0x288e('0x25')](removeEntity(_0x30f75b,null))['catch'](handleError(_0x30f75b,null));};exports[_0x288e('0x4a')]=function(_0x516b83,_0xb82f3c){return db[_0x288e('0x2a')][_0x288e('0x4a')]()[_0x288e('0x25')](respondWithResult(_0xb82f3c,null))[_0x288e('0x43')](handleError(_0xb82f3c,null));};exports['getVoiceQueuesReport']=function(_0x3e5e01,_0x49592e){var _0x1aa25f={},_0x571ae0={},_0x23494a={'count':0x0,'rows':[]};_0x571ae0[_0x288e('0x35')]=_['keys'](db['VoiceQueueReport'][_0x288e('0x2b')]);_0x571ae0[_0x288e('0x30')]=_[_0x288e('0x31')](_0x3e5e01[_0x288e('0x30')]);_0x571ae0[_0x288e('0x32')]=_['intersection'](_0x571ae0[_0x288e('0x35')],_0x571ae0[_0x288e('0x30')]);_0x1aa25f['attributes']=_['intersection'](_0x571ae0['model'],qs[_0x288e('0x36')](_0x3e5e01[_0x288e('0x30')][_0x288e('0x36')]));_0x1aa25f[_0x288e('0x34')]=_0x1aa25f[_0x288e('0x34')][_0x288e('0x37')]?_0x1aa25f[_0x288e('0x34')]:_0x571ae0[_0x288e('0x35')];if(!_0x3e5e01[_0x288e('0x30')]['hasOwnProperty'](_0x288e('0x4b'))){_0x1aa25f[_0x288e('0x20')]=qs[_0x288e('0x20')](_0x3e5e01[_0x288e('0x30')][_0x288e('0x20')]);_0x1aa25f[_0x288e('0x1e')]=qs[_0x288e('0x1e')](_0x3e5e01[_0x288e('0x30')][_0x288e('0x1e')]);}_0x1aa25f[_0x288e('0x38')]=qs[_0x288e('0x39')](_0x3e5e01[_0x288e('0x30')][_0x288e('0x39')]);_0x1aa25f[_0x288e('0x3a')]=qs[_0x288e('0x32')](_[_0x288e('0x3b')](_0x3e5e01[_0x288e('0x30')],_0x571ae0[_0x288e('0x32')]));if(_0x3e5e01[_0x288e('0x30')][_0x288e('0x3c')]){_0x1aa25f[_0x288e('0x3a')]=_[_0x288e('0x3d')](_0x1aa25f[_0x288e('0x3a')],{'$or':_['map'](_0x1aa25f['attributes'],function(_0x3f61f4){var _0x51f59a={};_0x51f59a[_0x3f61f4]={'$like':'%'+_0x3e5e01[_0x288e('0x30')][_0x288e('0x3c')]+'%'};return _0x51f59a;})});}_0x1aa25f=_['merge']({},_0x1aa25f,_0x3e5e01[_0x288e('0x45')]);var _0x5193ac={'where':_0x1aa25f[_0x288e('0x3a')]};return db[_0x288e('0x2a')][_0x288e('0x21')](_0x5193ac)[_0x288e('0x25')](function(_0x7308f9){_0x23494a[_0x288e('0x21')]=_0x7308f9;if(_0x3e5e01[_0x288e('0x30')][_0x288e('0x3f')]){_0x1aa25f['include']=[{'all':!![]}];}return db[_0x288e('0x2a')][_0x288e('0x41')](_0x1aa25f);})[_0x288e('0x25')](function(_0x17baeb){_0x23494a['rows']=_0x17baeb;return _0x23494a;})[_0x288e('0x25')](respondWithFilteredResult(_0x49592e,_0x1aa25f,_0x288e('0x4c')))[_0x288e('0x43')](handleError(_0x49592e,null,_0x288e('0x4c')));};
\ No newline at end of file
+var _0x448b=['getVoiceQueuesReport','options','findAll','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','redis','socket.io-emitter','register','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','then','sendStatus','error','name','index','map','VoiceQueueReport','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','include','rows','show','params','keys','find','catch','body','describe'];(function(_0x1b5a20,_0x1295c0){var _0x3394e2=function(_0x2e41c5){while(--_0x2e41c5){_0x1b5a20['push'](_0x1b5a20['shift']());}};_0x3394e2(++_0x1295c0);}(_0x448b,0x198));var _0xb448=function(_0x4e7303,_0x32ae4b){_0x4e7303=_0x4e7303-0x0;var _0x499890=_0x448b[_0x4e7303];return _0x499890;};'use strict';var emlformat=require(_0xb448('0x0'));var rimraf=require(_0xb448('0x1'));var zipdir=require(_0xb448('0x2'));var jsonpatch=require(_0xb448('0x3'));var rp=require('request-promise');var moment=require(_0xb448('0x4'));var BPromise=require(_0xb448('0x5'));var Mustache=require(_0xb448('0x6'));var util=require('util');var path=require(_0xb448('0x7'));var sox=require(_0xb448('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb448('0x9'));var _=require(_0xb448('0xa'));var squel=require(_0xb448('0xb'));var crypto=require(_0xb448('0xc'));var jsforce=require(_0xb448('0xd'));var deskjs=require(_0xb448('0xe'));var toCsv=require(_0xb448('0xf'));var querystring=require(_0xb448('0x10'));var Papa=require(_0xb448('0x11'));var Redis=require(_0xb448('0x12'));var authService=require(_0xb448('0x13'));var qs=require(_0xb448('0x14'));var as=require(_0xb448('0x15'));var hardwareService=require(_0xb448('0x16'));var logger=require(_0xb448('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xb448('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb448('0x19'))['db'];config[_0xb448('0x1a')]=_['defaults'](config[_0xb448('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0xb448('0x1b'))(new Redis(config[_0xb448('0x1a')]));require('./voiceQueueReport.socket')[_0xb448('0x1c')](socket);function respondWithStatusCode(_0xdf81ad,_0x3b0034){_0x3b0034=_0x3b0034||0xcc;return function(_0x1403ed){if(_0x1403ed){return _0xdf81ad['sendStatus'](_0x3b0034);}return _0xdf81ad[_0xb448('0x1d')](_0x3b0034)[_0xb448('0x1e')]();};}function respondWithResult(_0x5b94ce,_0x7b81dc){_0x7b81dc=_0x7b81dc||0xc8;return function(_0x32453e){if(_0x32453e){return _0x5b94ce[_0xb448('0x1d')](_0x7b81dc)['json'](_0x32453e);}};}function respondWithFilteredResult(_0x59de1a,_0x4fe26c){return function(_0x40d89a){if(_0x40d89a){var _0x3acccd=typeof _0x4fe26c[_0xb448('0x1f')]==='undefined'&&typeof _0x4fe26c[_0xb448('0x20')]===_0xb448('0x21');var _0x36045b=_0x40d89a[_0xb448('0x22')];var _0x2cd4f7=_0x3acccd?0x0:_0x4fe26c[_0xb448('0x1f')];var _0x1bfd6d=_0x3acccd?_0x40d89a[_0xb448('0x22')]:_0x4fe26c[_0xb448('0x1f')]+_0x4fe26c[_0xb448('0x20')];var _0x1b3491;if(_0x1bfd6d>=_0x36045b){_0x1bfd6d=_0x36045b;_0x1b3491=0xc8;}else{_0x1b3491=0xce;}_0x59de1a[_0xb448('0x1d')](_0x1b3491);return _0x59de1a[_0xb448('0x23')](_0xb448('0x24'),_0x2cd4f7+'-'+_0x1bfd6d+'/'+_0x36045b)[_0xb448('0x25')](_0x40d89a);}return null;};}function patchUpdates(_0x3f8058){return function(_0x473b40){try{jsonpatch[_0xb448('0x26')](_0x473b40,_0x3f8058,!![]);}catch(_0xe5dbcf){return BPromise[_0xb448('0x27')](_0xe5dbcf);}return _0x473b40[_0xb448('0x28')]();};}function saveUpdates(_0x23ff90,_0xc995e3){return function(_0x1f7111){if(_0x1f7111){return _0x1f7111[_0xb448('0x29')](_0x23ff90)['then'](function(_0x2bcbcb){return _0x2bcbcb;});}return null;};}function removeEntity(_0x7eae09,_0x15f013){return function(_0x117ca3){if(_0x117ca3){return _0x117ca3[_0xb448('0x2a')]()[_0xb448('0x2b')](function(){_0x7eae09['status'](0xcc)[_0xb448('0x1e')]();});}};}function handleEntityNotFound(_0x3b56cf,_0x141f5f){return function(_0x1444e3){if(!_0x1444e3){_0x3b56cf[_0xb448('0x2c')](0x194);}return _0x1444e3;};}function handleError(_0x53fe7d,_0x3858cb){_0x3858cb=_0x3858cb||0x1f4;return function(_0x3563b8){logger[_0xb448('0x2d')](_0x3563b8['stack']);if(_0x3563b8[_0xb448('0x2e')]){delete _0x3563b8[_0xb448('0x2e')];}_0x53fe7d['status'](_0x3858cb)['send'](_0x3563b8);};}exports[_0xb448('0x2f')]=function(_0x1a972e,_0x2ca833){var _0x2616ba={},_0x156e48={},_0x2dcd73={'count':0x0,'rows':[]};var _0x3a2ae3=_[_0xb448('0x30')](db[_0xb448('0x31')][_0xb448('0x32')],function(_0x4f7b26){return{'name':_0x4f7b26['fieldName'],'type':_0x4f7b26[_0xb448('0x33')][_0xb448('0x34')]};});_0x156e48[_0xb448('0x35')]=_[_0xb448('0x30')](_0x3a2ae3,_0xb448('0x2e'));_0x156e48[_0xb448('0x36')]=_['keys'](_0x1a972e['query']);_0x156e48[_0xb448('0x37')]=_[_0xb448('0x38')](_0x156e48['model'],_0x156e48[_0xb448('0x36')]);_0x2616ba['attributes']=_['intersection'](_0x156e48[_0xb448('0x35')],qs['fields'](_0x1a972e[_0xb448('0x36')][_0xb448('0x39')]));_0x2616ba[_0xb448('0x3a')]=_0x2616ba[_0xb448('0x3a')][_0xb448('0x3b')]?_0x2616ba[_0xb448('0x3a')]:_0x156e48[_0xb448('0x35')];if(!_0x1a972e[_0xb448('0x36')][_0xb448('0x3c')](_0xb448('0x3d'))){_0x2616ba[_0xb448('0x20')]=qs[_0xb448('0x20')](_0x1a972e[_0xb448('0x36')]['limit']);_0x2616ba[_0xb448('0x1f')]=qs[_0xb448('0x1f')](_0x1a972e[_0xb448('0x36')]['offset']);}_0x2616ba[_0xb448('0x3e')]=qs[_0xb448('0x3f')](_0x1a972e['query'][_0xb448('0x3f')]);_0x2616ba[_0xb448('0x40')]=qs['filters'](_[_0xb448('0x41')](_0x1a972e[_0xb448('0x36')],_0x156e48['filters']),_0x3a2ae3);if(_0x1a972e[_0xb448('0x36')][_0xb448('0x42')]){_0x2616ba['where']=_['merge'](_0x2616ba['where'],{'$or':_['map'](_0x3a2ae3,function(_0x475668){if(_0x475668[_0xb448('0x33')]!=='VIRTUAL'){var _0x15df50={};_0x15df50[_0x475668[_0xb448('0x2e')]]={'$like':'%'+_0x1a972e['query'][_0xb448('0x42')]+'%'};return _0x15df50;}})});}_0x2616ba=_[_0xb448('0x43')]({},_0x2616ba,_0x1a972e['options']);var _0xd901ee={'where':_0x2616ba[_0xb448('0x40')]};return db[_0xb448('0x31')][_0xb448('0x22')](_0xd901ee)[_0xb448('0x2b')](function(_0x14bd2f){_0x2dcd73[_0xb448('0x22')]=_0x14bd2f;if(_0x1a972e['query'][_0xb448('0x44')]){_0x2616ba[_0xb448('0x45')]=[{'all':!![]}];}return db[_0xb448('0x31')]['findAll'](_0x2616ba);})['then'](function(_0x3e0719){_0x2dcd73[_0xb448('0x46')]=_0x3e0719;return _0x2dcd73;})[_0xb448('0x2b')](respondWithFilteredResult(_0x2ca833,_0x2616ba))['catch'](handleError(_0x2ca833,null));};exports[_0xb448('0x47')]=function(_0x67d3ab,_0x20b6b7){var _0x3778cc={'raw':![],'where':{'id':_0x67d3ab[_0xb448('0x48')]['id']}},_0x12e841={};_0x12e841[_0xb448('0x35')]=_[_0xb448('0x49')](db[_0xb448('0x31')][_0xb448('0x32')]);_0x12e841[_0xb448('0x36')]=_['keys'](_0x67d3ab[_0xb448('0x36')]);_0x12e841[_0xb448('0x37')]=_[_0xb448('0x38')](_0x12e841[_0xb448('0x35')],_0x12e841[_0xb448('0x36')]);_0x3778cc[_0xb448('0x3a')]=_[_0xb448('0x38')](_0x12e841[_0xb448('0x35')],qs['fields'](_0x67d3ab[_0xb448('0x36')]['fields']));_0x3778cc[_0xb448('0x3a')]=_0x3778cc[_0xb448('0x3a')]['length']?_0x3778cc[_0xb448('0x3a')]:_0x12e841[_0xb448('0x35')];if(_0x67d3ab[_0xb448('0x36')][_0xb448('0x44')]){_0x3778cc['include']=[{'all':!![]}];}_0x3778cc=_[_0xb448('0x43')]({},_0x3778cc,_0x67d3ab['options']);return db[_0xb448('0x31')][_0xb448('0x4a')](_0x3778cc)[_0xb448('0x2b')](handleEntityNotFound(_0x20b6b7,null))[_0xb448('0x2b')](respondWithResult(_0x20b6b7,null))[_0xb448('0x4b')](handleError(_0x20b6b7,null));};exports['create']=function(_0x3af178,_0x4b96b2){return db['VoiceQueueReport']['create'](_0x3af178['body'],{})['then'](respondWithResult(_0x4b96b2,0xc9))[_0xb448('0x4b')](handleError(_0x4b96b2,null));};exports[_0xb448('0x29')]=function(_0x41c7d6,_0x5c621e){if(_0x41c7d6[_0xb448('0x4c')]['id']){delete _0x41c7d6['body']['id'];}return db[_0xb448('0x31')][_0xb448('0x4a')]({'where':{'id':_0x41c7d6[_0xb448('0x48')]['id']}})[_0xb448('0x2b')](handleEntityNotFound(_0x5c621e,null))[_0xb448('0x2b')](saveUpdates(_0x41c7d6[_0xb448('0x4c')],null))[_0xb448('0x2b')](respondWithResult(_0x5c621e,null))['catch'](handleError(_0x5c621e,null));};exports[_0xb448('0x2a')]=function(_0x266979,_0x524221){return db['VoiceQueueReport'][_0xb448('0x4a')]({'where':{'id':_0x266979['params']['id']}})[_0xb448('0x2b')](handleEntityNotFound(_0x524221,null))[_0xb448('0x2b')](removeEntity(_0x524221,null))[_0xb448('0x4b')](handleError(_0x524221,null));};exports[_0xb448('0x4d')]=function(_0x33a29c,_0x297011){return db[_0xb448('0x31')][_0xb448('0x4d')]()[_0xb448('0x2b')](respondWithResult(_0x297011,null))[_0xb448('0x4b')](handleError(_0x297011,null));};exports[_0xb448('0x4e')]=function(_0x8fd6bd,_0x1efba3){var _0x294251={},_0x565754={},_0x2d0d9f={'count':0x0,'rows':[]};_0x565754[_0xb448('0x35')]=_[_0xb448('0x49')](db[_0xb448('0x31')][_0xb448('0x32')]);_0x565754[_0xb448('0x36')]=_[_0xb448('0x49')](_0x8fd6bd[_0xb448('0x36')]);_0x565754[_0xb448('0x37')]=_[_0xb448('0x38')](_0x565754[_0xb448('0x35')],_0x565754[_0xb448('0x36')]);_0x294251[_0xb448('0x3a')]=_[_0xb448('0x38')](_0x565754[_0xb448('0x35')],qs[_0xb448('0x39')](_0x8fd6bd[_0xb448('0x36')][_0xb448('0x39')]));_0x294251[_0xb448('0x3a')]=_0x294251[_0xb448('0x3a')][_0xb448('0x3b')]?_0x294251[_0xb448('0x3a')]:_0x565754[_0xb448('0x35')];if(!_0x8fd6bd[_0xb448('0x36')][_0xb448('0x3c')](_0xb448('0x3d'))){_0x294251['limit']=qs[_0xb448('0x20')](_0x8fd6bd['query']['limit']);_0x294251[_0xb448('0x1f')]=qs[_0xb448('0x1f')](_0x8fd6bd['query']['offset']);}_0x294251['order']=qs['sort'](_0x8fd6bd[_0xb448('0x36')]['sort']);_0x294251['where']=qs[_0xb448('0x37')](_[_0xb448('0x41')](_0x8fd6bd[_0xb448('0x36')],_0x565754[_0xb448('0x37')]));if(_0x8fd6bd[_0xb448('0x36')][_0xb448('0x42')]){_0x294251[_0xb448('0x40')]=_[_0xb448('0x43')](_0x294251[_0xb448('0x40')],{'$or':_['map'](_0x294251[_0xb448('0x3a')],function(_0x42cb09){var _0x5d1e18={};_0x5d1e18[_0x42cb09]={'$like':'%'+_0x8fd6bd['query'][_0xb448('0x42')]+'%'};return _0x5d1e18;})});}_0x294251=_[_0xb448('0x43')]({},_0x294251,_0x8fd6bd[_0xb448('0x4f')]);var _0x3952fb={'where':_0x294251['where']};return db[_0xb448('0x31')][_0xb448('0x22')](_0x3952fb)['then'](function(_0x35ec95){_0x2d0d9f[_0xb448('0x22')]=_0x35ec95;if(_0x8fd6bd[_0xb448('0x36')]['includeAll']){_0x294251['include']=[{'all':!![]}];}return db['VoiceQueueReport'][_0xb448('0x50')](_0x294251);})['then'](function(_0x33089c){_0x2d0d9f['rows']=_0x33089c;return _0x2d0d9f;})[_0xb448('0x2b')](respondWithFilteredResult(_0x1efba3,_0x294251,'getVoiceQueuesReport'))[_0xb448('0x4b')](handleError(_0x1efba3,null,_0xb448('0x4e')));};
\ No newline at end of file
index f401331..2b7ccb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x239b=['save','update','remove','emit','hook','exports','events','VoiceQueueReport','setMaxListeners'];(function(_0x46966d,_0x2f91c9){var _0x54d794=function(_0x8142ca){while(--_0x8142ca){_0x46966d['push'](_0x46966d['shift']());}};_0x54d794(++_0x2f91c9);}(_0x239b,0xd5));var _0xb239=function(_0xe2a619,_0x1894fc){_0xe2a619=_0xe2a619-0x0;var _0x2649b3=_0x239b[_0xe2a619];return _0x2649b3;};'use strict';var EventEmitter=require(_0xb239('0x0'));var VoiceQueueReport=require('../../mysqldb')['db'][_0xb239('0x1')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xb239('0x2')](0x0);var events={'afterCreate':_0xb239('0x3'),'afterUpdate':_0xb239('0x4'),'afterDestroy':_0xb239('0x5')};function emitEvent(_0x1b4915){return function(_0x77da61,_0x433c61,_0x55205a){VoiceQueueReportEvents['emit'](_0x1b4915+':'+_0x77da61['id'],_0x77da61);VoiceQueueReportEvents[_0xb239('0x6')](_0x1b4915,_0x77da61);_0x55205a(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport[_0xb239('0x7')](e,emitEvent(event));}}module[_0xb239('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x785b=['exports','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x2715cf,_0x517bb2){var _0x1bdcb8=function(_0x5dec7b){while(--_0x5dec7b){_0x2715cf['push'](_0x2715cf['shift']());}};_0x1bdcb8(++_0x517bb2);}(_0x785b,0xef));var _0xb785=function(_0x1b777f,_0x5d8b0e){_0x1b777f=_0x1b777f-0x0;var _0x480877=_0x785b[_0x1b777f];return _0x480877;};'use strict';var EventEmitter=require('events');var VoiceQueueReport=require(_0xb785('0x0'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xb785('0x1')](0x0);var events={'afterCreate':_0xb785('0x2'),'afterUpdate':_0xb785('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2f533e){return function(_0x147c54,_0x3216d7,_0xa5e457){VoiceQueueReportEvents[_0xb785('0x4')](_0x2f533e+':'+_0x147c54['id'],_0x147c54);VoiceQueueReportEvents[_0xb785('0x4')](_0x2f533e,_0x147c54);_0xa5e457(null);};}for(var e in events){if(events[_0xb785('0x5')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0xb785('0x6')]=VoiceQueueReportEvents;
\ No newline at end of file
index b536ae1..0e4329f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7c3=['lodash','api','moment','bluebird','path','rimraf','../../config/environment','./voiceQueueReport.attributes','VoiceQueueReport','report_queue','uniqueid','calleridnum'];(function(_0x26b9cb,_0x12bc4c){var _0x3f44e6=function(_0x1a5a4e){while(--_0x1a5a4e){_0x26b9cb['push'](_0x26b9cb['shift']());}};_0x3f44e6(++_0x12bc4c);}(_0xc7c3,0x1bc));var _0x3c7c=function(_0x317b5b,_0x4c18e0){_0x317b5b=_0x317b5b-0x0;var _0x5b8948=_0xc7c3[_0x317b5b];return _0x5b8948;};'use strict';var _=require(_0x3c7c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3c7c('0x1'));var moment=require(_0x3c7c('0x2'));var BPromise=require(_0x3c7c('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3c7c('0x4'));var rimraf=require(_0x3c7c('0x5'));var config=require(_0x3c7c('0x6'));var attributes=require(_0x3c7c('0x7'));module['exports']=function(_0x1f6cd9,_0x4b7a44){return _0x1f6cd9['define'](_0x3c7c('0x8'),attributes,{'tableName':_0x3c7c('0x9'),'paranoid':![],'indexes':[{'fields':[_0x3c7c('0xa')]},{'fields':[_0x3c7c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x567b=['rimraf','../../config/environment','exports','define','VoiceQueueReport','report_queue','uniqueid','calleridnum','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x567b,0x133));var _0xb567=function(_0x129edc,_0x23cb02){_0x129edc=_0x129edc-0x0;var _0x4ee104=_0x567b[_0x129edc];return _0x4ee104;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xb567('0x0'))(_0xb567('0x1'));var moment=require(_0xb567('0x2'));var BPromise=require(_0xb567('0x3'));var rp=require(_0xb567('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb567('0x5'));var config=require(_0xb567('0x6'));var attributes=require('./voiceQueueReport.attributes');module[_0xb567('0x7')]=function(_0x2c6220,_0x196883){return _0x2c6220[_0xb567('0x8')](_0xb567('0x9'),attributes,{'tableName':_0xb567('0xa'),'paranoid':![],'indexes':[{'fields':[_0xb567('0xb')]},{'fields':[_0xb567('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index d9be8cd..fc5ac8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6dc5=['stringify','error','message','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','map','model','then','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','update','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','defaults','localhost','redis','register','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x3a8172,_0x361c91){var _0x1aa63a=function(_0x367358){while(--_0x367358){_0x3a8172['push'](_0x3a8172['shift']());}};_0x1aa63a(++_0x361c91);}(_0x6dc5,0x174));var _0x56dc=function(_0x3c9797,_0x3eeead){_0x3c9797=_0x3c9797-0x0;var _0x21657c=_0x6dc5[_0x3c9797];return _0x21657c;};'use strict';var _=require(_0x56dc('0x0'));var util=require('util');var moment=require(_0x56dc('0x1'));var BPromise=require(_0x56dc('0x2'));var rs=require(_0x56dc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x56dc('0x4'))['db'];var utils=require(_0x56dc('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x56dc('0x6'));var jayson=require(_0x56dc('0x7'));var client=jayson[_0x56dc('0x8')]['http']({'port':0x232a});config['redis']=_[_0x56dc('0x9')](config['redis'],{'host':_0x56dc('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x56dc('0xb')]));require('./voiceQueueReport.socket')[_0x56dc('0xc')](socket);function respondWithRpcPromise(_0x2d3356,_0xaae7d6,_0xca293e){return new BPromise(function(_0x3d3a53,_0x10e245){return client['request'](_0x2d3356,_0xca293e)['then'](function(_0x4bba9a){logger[_0x56dc('0xd')](_0x56dc('0xe'),_0xaae7d6,_0x56dc('0xf'));logger[_0x56dc('0x10')](_0x56dc('0x11'),_0xaae7d6,_0x56dc('0xf'),JSON[_0x56dc('0x12')](_0x4bba9a));if(_0x4bba9a[_0x56dc('0x13')]){if(_0x4bba9a[_0x56dc('0x13')]['code']===0x1f4){logger[_0x56dc('0x13')](_0x56dc('0xe'),_0xaae7d6,_0x4bba9a[_0x56dc('0x13')][_0x56dc('0x14')]);return _0x10e245(_0x4bba9a[_0x56dc('0x13')][_0x56dc('0x14')]);}logger[_0x56dc('0x13')](_0x56dc('0xe'),_0xaae7d6,_0x4bba9a[_0x56dc('0x13')][_0x56dc('0x14')]);return _0x3d3a53(_0x4bba9a[_0x56dc('0x13')][_0x56dc('0x14')]);}else{logger[_0x56dc('0xd')](_0x56dc('0xe'),_0xaae7d6,_0x56dc('0xf'));_0x3d3a53(_0x4bba9a['result'][_0x56dc('0x14')]);}})[_0x56dc('0x15')](function(_0x3f7717){logger[_0x56dc('0x13')](_0x56dc('0xe'),_0xaae7d6,_0x3f7717);_0x10e245(_0x3f7717);});});}exports[_0x56dc('0x16')]=function(_0xbd377c){var _0x159a14=this;return new Promise(function(_0x1cdbd3,_0x6d98a0){return db[_0x56dc('0x17')][_0x56dc('0x18')]({'raw':_0xbd377c[_0x56dc('0x19')]?_0xbd377c[_0x56dc('0x19')][_0x56dc('0x1a')]===undefined?!![]:![]:!![],'where':_0xbd377c[_0x56dc('0x19')]?_0xbd377c[_0x56dc('0x19')][_0x56dc('0x1b')]||null:null,'attributes':_0xbd377c['options']?_0xbd377c[_0x56dc('0x19')][_0x56dc('0x1c')]||null:null,'limit':_0xbd377c[_0x56dc('0x19')]?_0xbd377c[_0x56dc('0x19')][_0x56dc('0x1d')]||null:null,'include':_0xbd377c['options']?_0xbd377c[_0x56dc('0x19')][_0x56dc('0x1e')]?_[_0x56dc('0x1f')](_0xbd377c['options'][_0x56dc('0x1e')],function(_0x1f8721){return{'model':db[_0x1f8721['model']],'as':_0x1f8721['as'],'attributes':_0x1f8721[_0x56dc('0x1c')],'include':_0x1f8721['include']?_[_0x56dc('0x1f')](_0x1f8721['include'],function(_0xa5f09e){return{'model':db[_0xa5f09e[_0x56dc('0x20')]],'as':_0xa5f09e['as'],'attributes':_0xa5f09e[_0x56dc('0x1c')],'include':_0xa5f09e['include']?_[_0x56dc('0x1f')](_0xa5f09e[_0x56dc('0x1e')],function(_0x1f4b8a){return{'model':db[_0x1f4b8a[_0x56dc('0x20')]],'as':_0x1f4b8a['as'],'attributes':_0x1f4b8a[_0x56dc('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x56dc('0x21')](function(_0x2fc120){logger[_0x56dc('0xd')](_0x56dc('0x16'),_0xbd377c);logger['debug'](_0x56dc('0x16'),_0xbd377c,JSON[_0x56dc('0x12')](_0x2fc120));_0x1cdbd3(_0x2fc120);})[_0x56dc('0x15')](function(_0x1a6596){logger[_0x56dc('0x13')](_0x56dc('0x16'),_0x1a6596[_0x56dc('0x14')],_0xbd377c);_0x6d98a0(_0x159a14[_0x56dc('0x13')](0x1f4,_0x1a6596[_0x56dc('0x14')]));});});};exports[_0x56dc('0x22')]=function(_0x2da357){var _0x243fef=this;return new Promise(function(_0x5b03b3,_0x1d099f){return db[_0x56dc('0x17')][_0x56dc('0x23')](_0x2da357[_0x56dc('0x24')],{'raw':_0x2da357[_0x56dc('0x19')]?_0x2da357[_0x56dc('0x19')][_0x56dc('0x1a')]===undefined?!![]:![]:!![]})[_0x56dc('0x21')](function(_0x528317){logger['info'](_0x56dc('0x22'),_0x2da357);logger['debug'](_0x56dc('0x22'),_0x2da357,JSON[_0x56dc('0x12')](_0x528317));_0x5b03b3(_0x528317);})[_0x56dc('0x15')](function(_0x3642cb){logger[_0x56dc('0x13')]('CreateVoiceQueueReport',_0x3642cb[_0x56dc('0x14')],_0x2da357);_0x1d099f(_0x243fef[_0x56dc('0x13')](0x1f4,_0x3642cb[_0x56dc('0x14')]));});});};exports[_0x56dc('0x25')]=function(_0x478fae){var _0x35bafd=this;return new Promise(function(_0x2109ef,_0x90f524){return db['VoiceQueueReport'][_0x56dc('0x26')](_0x478fae[_0x56dc('0x24')],{'raw':_0x478fae[_0x56dc('0x19')]?_0x478fae[_0x56dc('0x19')][_0x56dc('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x478fae[_0x56dc('0x19')]?_0x478fae[_0x56dc('0x19')][_0x56dc('0x1b')]||null:null,'attributes':_0x478fae[_0x56dc('0x19')]?_0x478fae['options']['attributes']||null:null,'limit':_0x478fae['options']?_0x478fae[_0x56dc('0x19')]['limit']||null:null})[_0x56dc('0x21')](function(_0x22c29b){logger['info'](_0x56dc('0x25'),_0x478fae);logger['debug'](_0x56dc('0x25'),_0x478fae,JSON[_0x56dc('0x12')](_0x22c29b));_0x2109ef(_0x22c29b);})[_0x56dc('0x15')](function(_0x3af31f){logger[_0x56dc('0x13')](_0x56dc('0x25'),_0x3af31f[_0x56dc('0x14')],_0x478fae);_0x90f524(_0x35bafd[_0x56dc('0x13')](0x1f4,_0x3af31f[_0x56dc('0x14')]));});});};
\ No newline at end of file
+var _0x59d6=['GetVoiceQueueReport','create','body','CreateVoiceQueueReport','UpdateVoiceQueueReport','update','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','info','VoiceQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','VoiceQueueReport','findAll','options','raw','where','attributes','limit','include','model','map'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0x59d6,0xae));var _0x659d=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x59d6[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0x659d('0x0'));var moment=require(_0x659d('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x659d('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x659d('0x3'));var logger=require(_0x659d('0x4'))(_0x659d('0x5'));var config=require(_0x659d('0x6'));var jayson=require(_0x659d('0x7'));var client=jayson['client'][_0x659d('0x8')]({'port':0x232a});config[_0x659d('0x9')]=_[_0x659d('0xa')](config[_0x659d('0x9')],{'host':_0x659d('0xb'),'port':0x18eb});var socket=require(_0x659d('0xc'))(new Redis(config[_0x659d('0x9')]));require(_0x659d('0xd'))['register'](socket);function respondWithRpcPromise(_0x123564,_0x4b790f,_0x1beb63){return new BPromise(function(_0x3210a3,_0x1ca639){return client[_0x659d('0xe')](_0x123564,_0x1beb63)[_0x659d('0xf')](function(_0x7af60e){logger[_0x659d('0x10')](_0x659d('0x11'),_0x4b790f,'request\x20sent');logger[_0x659d('0x12')]('VoiceQueueReport,\x20%s,\x20%s,\x20%s',_0x4b790f,'request\x20sent',JSON[_0x659d('0x13')](_0x7af60e));if(_0x7af60e[_0x659d('0x14')]){if(_0x7af60e[_0x659d('0x14')][_0x659d('0x15')]===0x1f4){logger[_0x659d('0x14')](_0x659d('0x11'),_0x4b790f,_0x7af60e[_0x659d('0x14')][_0x659d('0x16')]);return _0x1ca639(_0x7af60e['error'][_0x659d('0x16')]);}logger[_0x659d('0x14')](_0x659d('0x11'),_0x4b790f,_0x7af60e[_0x659d('0x14')][_0x659d('0x16')]);return _0x3210a3(_0x7af60e[_0x659d('0x14')][_0x659d('0x16')]);}else{logger['info']('VoiceQueueReport,\x20%s,\x20%s',_0x4b790f,_0x659d('0x17'));_0x3210a3(_0x7af60e[_0x659d('0x18')][_0x659d('0x16')]);}})[_0x659d('0x19')](function(_0x9ed17a){logger['error'](_0x659d('0x11'),_0x4b790f,_0x9ed17a);_0x1ca639(_0x9ed17a);});});}exports['GetVoiceQueueReport']=function(_0x289959){var _0x445fc1=this;return new Promise(function(_0x3ed1f9,_0x257b35){return db[_0x659d('0x1a')][_0x659d('0x1b')]({'raw':_0x289959['options']?_0x289959[_0x659d('0x1c')][_0x659d('0x1d')]===undefined?!![]:![]:!![],'where':_0x289959[_0x659d('0x1c')]?_0x289959[_0x659d('0x1c')][_0x659d('0x1e')]||null:null,'attributes':_0x289959[_0x659d('0x1c')]?_0x289959[_0x659d('0x1c')][_0x659d('0x1f')]||null:null,'limit':_0x289959[_0x659d('0x1c')]?_0x289959[_0x659d('0x1c')][_0x659d('0x20')]||null:null,'include':_0x289959[_0x659d('0x1c')]?_0x289959['options'][_0x659d('0x21')]?_['map'](_0x289959['options'][_0x659d('0x21')],function(_0x501d7f){return{'model':db[_0x501d7f[_0x659d('0x22')]],'as':_0x501d7f['as'],'attributes':_0x501d7f[_0x659d('0x1f')],'include':_0x501d7f[_0x659d('0x21')]?_[_0x659d('0x23')](_0x501d7f[_0x659d('0x21')],function(_0x281564){return{'model':db[_0x281564[_0x659d('0x22')]],'as':_0x281564['as'],'attributes':_0x281564[_0x659d('0x1f')],'include':_0x281564[_0x659d('0x21')]?_[_0x659d('0x23')](_0x281564[_0x659d('0x21')],function(_0x4fc993){return{'model':db[_0x4fc993[_0x659d('0x22')]],'as':_0x4fc993['as'],'attributes':_0x4fc993[_0x659d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x659d('0xf')](function(_0x1dfee7){logger['info'](_0x659d('0x24'),_0x289959);logger[_0x659d('0x12')]('GetVoiceQueueReport',_0x289959,JSON['stringify'](_0x1dfee7));_0x3ed1f9(_0x1dfee7);})['catch'](function(_0x54b46d){logger[_0x659d('0x14')]('GetVoiceQueueReport',_0x54b46d[_0x659d('0x16')],_0x289959);_0x257b35(_0x445fc1['error'](0x1f4,_0x54b46d[_0x659d('0x16')]));});});};exports['CreateVoiceQueueReport']=function(_0x513d34){var _0x4ff6fb=this;return new Promise(function(_0x2529fb,_0x2aa8bc){return db[_0x659d('0x1a')][_0x659d('0x25')](_0x513d34[_0x659d('0x26')],{'raw':_0x513d34[_0x659d('0x1c')]?_0x513d34[_0x659d('0x1c')][_0x659d('0x1d')]===undefined?!![]:![]:!![]})[_0x659d('0xf')](function(_0xaab9fa){logger['info'](_0x659d('0x27'),_0x513d34);logger['debug'](_0x659d('0x27'),_0x513d34,JSON[_0x659d('0x13')](_0xaab9fa));_0x2529fb(_0xaab9fa);})[_0x659d('0x19')](function(_0x5f0b16){logger[_0x659d('0x14')](_0x659d('0x27'),_0x5f0b16['message'],_0x513d34);_0x2aa8bc(_0x4ff6fb[_0x659d('0x14')](0x1f4,_0x5f0b16[_0x659d('0x16')]));});});};exports[_0x659d('0x28')]=function(_0x2339d5){var _0x77bbdc=this;return new Promise(function(_0x5e4eb2,_0x59f331){return db[_0x659d('0x1a')][_0x659d('0x29')](_0x2339d5[_0x659d('0x26')],{'raw':_0x2339d5['options']?_0x2339d5[_0x659d('0x1c')][_0x659d('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2339d5['options']?_0x2339d5[_0x659d('0x1c')][_0x659d('0x1e')]||null:null,'attributes':_0x2339d5[_0x659d('0x1c')]?_0x2339d5['options']['attributes']||null:null,'limit':_0x2339d5['options']?_0x2339d5[_0x659d('0x1c')][_0x659d('0x20')]||null:null})[_0x659d('0xf')](function(_0x17de11){logger[_0x659d('0x10')]('UpdateVoiceQueueReport',_0x2339d5);logger['debug']('UpdateVoiceQueueReport',_0x2339d5,JSON[_0x659d('0x13')](_0x17de11));_0x5e4eb2(_0x17de11);})[_0x659d('0x19')](function(_0x5d4964){logger[_0x659d('0x14')](_0x659d('0x28'),_0x5d4964['message'],_0x2339d5);_0x59f331(_0x77bbdc[_0x659d('0x14')](0x1f4,_0x5d4964[_0x659d('0x16')]));});});};
\ No newline at end of file
index 123d79d..1671f6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x394e=['register','length','voiceQueueReport:','./voiceQueueReport.events','save','update','removeListener'];(function(_0x3318ca,_0x1effaf){var _0x38c595=function(_0x252c58){while(--_0x252c58){_0x3318ca['push'](_0x3318ca['shift']());}};_0x38c595(++_0x1effaf);}(_0x394e,0x88));var _0xe394=function(_0x1e6346,_0x57ccbd){_0x1e6346=_0x1e6346-0x0;var _0x770c06=_0x394e[_0x1e6346];return _0x770c06;};'use strict';var VoiceQueueReportEvents=require(_0xe394('0x0'));var events=[_0xe394('0x1'),'remove',_0xe394('0x2')];function createListener(_0x192a4e,_0x373028){return function(_0x1a96cc){_0x373028['emit'](_0x192a4e,_0x1a96cc);};}function removeListener(_0x4269f4,_0x35c5de){return function(){VoiceQueueReportEvents[_0xe394('0x3')](_0x4269f4,_0x35c5de);};}exports[_0xe394('0x4')]=function(_0x2a4db6){for(var _0x272c30=0x0,_0x337bff=events[_0xe394('0x5')];_0x272c30<_0x337bff;_0x272c30++){var _0xad826e=events[_0x272c30];var _0x267d68=createListener(_0xe394('0x6')+_0xad826e,_0x2a4db6);VoiceQueueReportEvents['on'](_0xad826e,_0x267d68);}};
\ No newline at end of file
+var _0xbfe8=['save','update','emit','removeListener','register','length','voiceQueueReport:'];(function(_0x2199f1,_0x10c734){var _0x43436b=function(_0x524bf8){while(--_0x524bf8){_0x2199f1['push'](_0x2199f1['shift']());}};_0x43436b(++_0x10c734);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x28e95a,_0x1eb044){_0x28e95a=_0x28e95a-0x0;var _0x533803=_0xbfe8[_0x28e95a];return _0x533803;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x8bfe('0x0'),'remove',_0x8bfe('0x1')];function createListener(_0x39d664,_0x56fddf){return function(_0x4e3c63){_0x56fddf[_0x8bfe('0x2')](_0x39d664,_0x4e3c63);};}function removeListener(_0x31df14,_0x57eb53){return function(){VoiceQueueReportEvents[_0x8bfe('0x3')](_0x31df14,_0x57eb53);};}exports[_0x8bfe('0x4')]=function(_0x314a9a){for(var _0x4933c9=0x0,_0x29bb94=events[_0x8bfe('0x5')];_0x4933c9<_0x29bb94;_0x4933c9++){var _0x3e3075=events[_0x4933c9];var _0x4602fc=createListener(_0x8bfe('0x6')+_0x3e3075,_0x314a9a);VoiceQueueReportEvents['on'](_0x3e3075,_0x4602fc);}};
\ No newline at end of file
index 18c9284..0ed8702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcabc=['put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','/:id','post'];(function(_0x1eda14,_0x440527){var _0x7de8b4=function(_0x38e1dd){while(--_0x38e1dd){_0x1eda14['push'](_0x1eda14['shift']());}};_0x7de8b4(++_0x440527);}(_0xcabc,0x16a));var _0xccab=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xcabc[_0x199572];return _0x13cfa3;};'use strict';var multer=require('multer');var util=require(_0xccab('0x0'));var path=require(_0xccab('0x1'));var timeout=require(_0xccab('0x2'));var express=require(_0xccab('0x3'));var router=express[_0xccab('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xccab('0x5'));var interaction=require(_0xccab('0x6'));var config=require('../../config/environment');var controller=require(_0xccab('0x7'));router[_0xccab('0x8')]('/',auth[_0xccab('0x9')](),controller['index']);router[_0xccab('0x8')](_0xccab('0xa'),auth[_0xccab('0x9')](),controller['show']);router[_0xccab('0xb')]('/',auth[_0xccab('0x9')](),controller['create']);router[_0xccab('0xc')](_0xccab('0xa'),auth[_0xccab('0x9')](),controller[_0xccab('0xd')]);router[_0xccab('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xccab('0xf')]);module[_0xccab('0x10')]=router;
\ No newline at end of file
+var _0x2aec=['destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','./voiceQueuesLog.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x2aec,0x1dd));var _0xc2ae=function(_0x473df0,_0x2efc8d){_0x473df0=_0x473df0-0x0;var _0x9e3a4f=_0x2aec[_0x473df0];return _0x9e3a4f;};'use strict';var multer=require(_0xc2ae('0x0'));var util=require('util');var path=require(_0xc2ae('0x1'));var timeout=require('connect-timeout');var express=require(_0xc2ae('0x2'));var router=express[_0xc2ae('0x3')]();var fs_extra=require(_0xc2ae('0x4'));var auth=require(_0xc2ae('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc2ae('0x6'));router[_0xc2ae('0x7')]('/',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0x9')]);router[_0xc2ae('0x7')]('/:id',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0xa')]);router[_0xc2ae('0xb')]('/',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0xc')]);router[_0xc2ae('0xd')](_0xc2ae('0xe'),auth[_0xc2ae('0x8')](),controller[_0xc2ae('0xf')]);router[_0xc2ae('0x10')]('/:id',auth[_0xc2ae('0x8')](),controller[_0xc2ae('0x11')]);module[_0xc2ae('0x12')]=router;
\ No newline at end of file
index d327bff..7f604a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e5b=['STRING','DATE','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment','exports'];(function(_0x4896ce,_0x4b6495){var _0x6c218=function(_0x163220){while(--_0x163220){_0x4896ce['push'](_0x4896ce['shift']());}};_0x6c218(++_0x4b6495);}(_0x7e5b,0x9f));var _0xb7e5=function(_0x340162,_0x2a95b3){_0x340162=_0x340162-0x0;var _0x36cdde=_0x7e5b[_0x340162];return _0x36cdde;};'use strict';var Sequelize=require(_0xb7e5('0x0'));var moment=require(_0xb7e5('0x1'));module[_0xb7e5('0x2')]={'time':{'type':Sequelize[_0xb7e5('0x3')]},'callid':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0xb7e5('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0xb7e5('0x4')],'allowNull':![],'defaultValue':moment()['format'](_0xb7e5('0x5'))}};
\ No newline at end of file
+var _0xa2e7=['moment','exports','STRING','format','YYYY-MM-DD\x20HH:mm:ss','sequelize'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa2e7,0x95));var _0x7a2e=function(_0x540eb8,_0x4c9bb4){_0x540eb8=_0x540eb8-0x0;var _0x587e07=_0xa2e7[_0x540eb8];return _0x587e07;};'use strict';var Sequelize=require(_0x7a2e('0x0'));var moment=require(_0x7a2e('0x1'));module[_0x7a2e('0x2')]={'time':{'type':Sequelize[_0x7a2e('0x3')]},'callid':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x7a2e('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':moment()[_0x7a2e('0x4')](_0x7a2e('0x5'))}};
\ No newline at end of file
index f72f2a6..46f1fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2962=['name','map','VoiceQueuesLog','rawAttributes','fieldName','model','filters','intersection','attributes','fields','query','length','nolimit','order','sort','where','pick','merge','type','filter','include','findAll','rows','catch','keys','includeAll','options','find','create','params','body','destroy','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','then','stack'];(function(_0x142e16,_0x7942a5){var _0x24472c=function(_0x5cc1cf){while(--_0x5cc1cf){_0x142e16['push'](_0x142e16['shift']());}};_0x24472c(++_0x7942a5);}(_0x2962,0x130));var _0x2296=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2962[_0x2641f9];return _0x585741;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2296('0x0'));var zipdir=require(_0x2296('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x2296('0x2'));var BPromise=require(_0x2296('0x3'));var Mustache=require(_0x2296('0x4'));var util=require(_0x2296('0x5'));var path=require(_0x2296('0x6'));var sox=require(_0x2296('0x7'));var csv=require(_0x2296('0x8'));var ejs=require(_0x2296('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2296('0xa'));var squel=require(_0x2296('0xb'));var crypto=require(_0x2296('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x2296('0xd'));var toCsv=require(_0x2296('0x8'));var querystring=require(_0x2296('0xe'));var Papa=require('papaparse');var Redis=require(_0x2296('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2296('0x10'));var as=require(_0x2296('0x11'));var hardwareService=require(_0x2296('0x12'));var logger=require(_0x2296('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2296('0x14'));var db=require(_0x2296('0x15'))['db'];function respondWithStatusCode(_0x261829,_0x3ded66){_0x3ded66=_0x3ded66||0xcc;return function(_0x5dd2a5){if(_0x5dd2a5){return _0x261829[_0x2296('0x16')](_0x3ded66);}return _0x261829[_0x2296('0x17')](_0x3ded66)[_0x2296('0x18')]();};}function respondWithResult(_0x44cebd,_0x38fb24){_0x38fb24=_0x38fb24||0xc8;return function(_0x25914f){if(_0x25914f){return _0x44cebd[_0x2296('0x17')](_0x38fb24)[_0x2296('0x19')](_0x25914f);}};}function respondWithFilteredResult(_0x41b110,_0x3c7002){return function(_0x27e8ba){if(_0x27e8ba){var _0x3d3ee1=typeof _0x3c7002[_0x2296('0x1a')]===_0x2296('0x1b')&&typeof _0x3c7002[_0x2296('0x1c')]===_0x2296('0x1b');var _0x5c59c6=_0x27e8ba[_0x2296('0x1d')];var _0x522eed=_0x3d3ee1?0x0:_0x3c7002[_0x2296('0x1a')];var _0x30c86f=_0x3d3ee1?_0x27e8ba[_0x2296('0x1d')]:_0x3c7002[_0x2296('0x1a')]+_0x3c7002[_0x2296('0x1c')];var _0x377f16;if(_0x30c86f>=_0x5c59c6){_0x30c86f=_0x5c59c6;_0x377f16=0xc8;}else{_0x377f16=0xce;}_0x41b110['status'](_0x377f16);return _0x41b110[_0x2296('0x1e')](_0x2296('0x1f'),_0x522eed+'-'+_0x30c86f+'/'+_0x5c59c6)[_0x2296('0x19')](_0x27e8ba);}return null;};}function patchUpdates(_0x1e5b52){return function(_0x57abc5){try{jsonpatch['apply'](_0x57abc5,_0x1e5b52,!![]);}catch(_0x2e242b){return BPromise['reject'](_0x2e242b);}return _0x57abc5[_0x2296('0x20')]();};}function saveUpdates(_0x3061be,_0x1be085){return function(_0x1b7331){if(_0x1b7331){return _0x1b7331[_0x2296('0x21')](_0x3061be)['then'](function(_0x1821ab){return _0x1821ab;});}return null;};}function removeEntity(_0x203033,_0x1e4225){return function(_0x25e52a){if(_0x25e52a){return _0x25e52a['destroy']()[_0x2296('0x22')](function(){_0x203033[_0x2296('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4dac4c,_0x195fd8){return function(_0x5b709b){if(!_0x5b709b){_0x4dac4c[_0x2296('0x16')](0x194);}return _0x5b709b;};}function handleError(_0x5b01df,_0x3f02bb){_0x3f02bb=_0x3f02bb||0x1f4;return function(_0x4d15e6){logger['error'](_0x4d15e6[_0x2296('0x23')]);if(_0x4d15e6['name']){delete _0x4d15e6[_0x2296('0x24')];}_0x5b01df[_0x2296('0x17')](_0x3f02bb)['send'](_0x4d15e6);};}exports['index']=function(_0x4d0a42,_0x54a3cd){var _0x3a6c94={},_0x5466c9={},_0x58acdb={'count':0x0,'rows':[]};var _0xe82b68=_[_0x2296('0x25')](db[_0x2296('0x26')][_0x2296('0x27')],function(_0x387dda){return{'name':_0x387dda[_0x2296('0x28')],'type':_0x387dda['type']['key']};});_0x5466c9[_0x2296('0x29')]=_[_0x2296('0x25')](_0xe82b68,'name');_0x5466c9['query']=_['keys'](_0x4d0a42['query']);_0x5466c9[_0x2296('0x2a')]=_[_0x2296('0x2b')](_0x5466c9[_0x2296('0x29')],_0x5466c9['query']);_0x3a6c94[_0x2296('0x2c')]=_[_0x2296('0x2b')](_0x5466c9[_0x2296('0x29')],qs[_0x2296('0x2d')](_0x4d0a42[_0x2296('0x2e')][_0x2296('0x2d')]));_0x3a6c94[_0x2296('0x2c')]=_0x3a6c94[_0x2296('0x2c')][_0x2296('0x2f')]?_0x3a6c94[_0x2296('0x2c')]:_0x5466c9['model'];if(!_0x4d0a42[_0x2296('0x2e')]['hasOwnProperty'](_0x2296('0x30'))){_0x3a6c94[_0x2296('0x1c')]=qs[_0x2296('0x1c')](_0x4d0a42['query'][_0x2296('0x1c')]);_0x3a6c94['offset']=qs[_0x2296('0x1a')](_0x4d0a42[_0x2296('0x2e')][_0x2296('0x1a')]);}_0x3a6c94[_0x2296('0x31')]=qs[_0x2296('0x32')](_0x4d0a42[_0x2296('0x2e')]['sort']);_0x3a6c94[_0x2296('0x33')]=qs[_0x2296('0x2a')](_[_0x2296('0x34')](_0x4d0a42[_0x2296('0x2e')],_0x5466c9[_0x2296('0x2a')]),_0xe82b68);if(_0x4d0a42[_0x2296('0x2e')]['filter']){_0x3a6c94[_0x2296('0x33')]=_[_0x2296('0x35')](_0x3a6c94['where'],{'$or':_[_0x2296('0x25')](_0xe82b68,function(_0x5876fd){if(_0x5876fd[_0x2296('0x36')]!=='VIRTUAL'){var _0x3ee6bc={};_0x3ee6bc[_0x5876fd[_0x2296('0x24')]]={'$like':'%'+_0x4d0a42['query'][_0x2296('0x37')]+'%'};return _0x3ee6bc;}})});}_0x3a6c94=_[_0x2296('0x35')]({},_0x3a6c94,_0x4d0a42['options']);var _0x1d9014={'where':_0x3a6c94[_0x2296('0x33')]};return db[_0x2296('0x26')][_0x2296('0x1d')](_0x1d9014)[_0x2296('0x22')](function(_0x244cba){_0x58acdb[_0x2296('0x1d')]=_0x244cba;if(_0x4d0a42['query']['includeAll']){_0x3a6c94[_0x2296('0x38')]=[{'all':!![]}];}return db[_0x2296('0x26')][_0x2296('0x39')](_0x3a6c94);})[_0x2296('0x22')](function(_0x1eb8a5){_0x58acdb[_0x2296('0x3a')]=_0x1eb8a5;return _0x58acdb;})['then'](respondWithFilteredResult(_0x54a3cd,_0x3a6c94))[_0x2296('0x3b')](handleError(_0x54a3cd,null));};exports['show']=function(_0x2e23a9,_0x3a29af){var _0x4ce017={'raw':!![],'where':{'id':_0x2e23a9['params']['id']}},_0x1a9c1f={};_0x1a9c1f[_0x2296('0x29')]=_['keys'](db[_0x2296('0x26')][_0x2296('0x27')]);_0x1a9c1f[_0x2296('0x2e')]=_[_0x2296('0x3c')](_0x2e23a9[_0x2296('0x2e')]);_0x1a9c1f[_0x2296('0x2a')]=_['intersection'](_0x1a9c1f[_0x2296('0x29')],_0x1a9c1f[_0x2296('0x2e')]);_0x4ce017[_0x2296('0x2c')]=_[_0x2296('0x2b')](_0x1a9c1f[_0x2296('0x29')],qs['fields'](_0x2e23a9[_0x2296('0x2e')][_0x2296('0x2d')]));_0x4ce017[_0x2296('0x2c')]=_0x4ce017[_0x2296('0x2c')][_0x2296('0x2f')]?_0x4ce017['attributes']:_0x1a9c1f[_0x2296('0x29')];if(_0x2e23a9[_0x2296('0x2e')][_0x2296('0x3d')]){_0x4ce017[_0x2296('0x38')]=[{'all':!![]}];}_0x4ce017=_[_0x2296('0x35')]({},_0x4ce017,_0x2e23a9[_0x2296('0x3e')]);return db[_0x2296('0x26')][_0x2296('0x3f')](_0x4ce017)[_0x2296('0x22')](handleEntityNotFound(_0x3a29af,null))[_0x2296('0x22')](respondWithResult(_0x3a29af,null))[_0x2296('0x3b')](handleError(_0x3a29af,null));};exports[_0x2296('0x40')]=function(_0x17cc34,_0x1841c9){return db[_0x2296('0x26')]['create'](_0x17cc34['body'],{})[_0x2296('0x22')](respondWithResult(_0x1841c9,0xc9))[_0x2296('0x3b')](handleError(_0x1841c9,null));};exports[_0x2296('0x21')]=function(_0x5f2c6f,_0x3372c0){if(_0x5f2c6f['body']['id']){delete _0x5f2c6f['body']['id'];}return db[_0x2296('0x26')]['find']({'where':{'id':_0x5f2c6f[_0x2296('0x41')]['id']}})[_0x2296('0x22')](handleEntityNotFound(_0x3372c0,null))[_0x2296('0x22')](saveUpdates(_0x5f2c6f[_0x2296('0x42')],null))['then'](respondWithResult(_0x3372c0,null))[_0x2296('0x3b')](handleError(_0x3372c0,null));};exports[_0x2296('0x43')]=function(_0x22c5ff,_0x28c3ec){return db[_0x2296('0x26')][_0x2296('0x3f')]({'where':{'id':_0x22c5ff[_0x2296('0x41')]['id']}})[_0x2296('0x22')](handleEntityNotFound(_0x28c3ec,null))[_0x2296('0x22')](removeEntity(_0x28c3ec,null))[_0x2296('0x3b')](handleError(_0x28c3ec,null));};
\ No newline at end of file
+var _0x5b69=['VoiceQueuesLog','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch','show','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','stack','name','send','index'];(function(_0x22ac0e,_0x20aa35){var _0x4b9b0c=function(_0x350037){while(--_0x350037){_0x22ac0e['push'](_0x22ac0e['shift']());}};_0x4b9b0c(++_0x20aa35);}(_0x5b69,0x6a));var _0x95b6=function(_0xaecc27,_0x3b15ab){_0xaecc27=_0xaecc27-0x0;var _0x2203ec=_0x5b69[_0xaecc27];return _0x2203ec;};'use strict';var emlformat=require(_0x95b6('0x0'));var rimraf=require(_0x95b6('0x1'));var zipdir=require(_0x95b6('0x2'));var jsonpatch=require(_0x95b6('0x3'));var rp=require(_0x95b6('0x4'));var moment=require(_0x95b6('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x95b6('0x6'));var path=require('path');var sox=require(_0x95b6('0x7'));var csv=require(_0x95b6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x95b6('0x9'));var squel=require(_0x95b6('0xa'));var crypto=require(_0x95b6('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x95b6('0xc'));var toCsv=require(_0x95b6('0x8'));var querystring=require(_0x95b6('0xd'));var Papa=require(_0x95b6('0xe'));var Redis=require('ioredis');var authService=require(_0x95b6('0xf'));var qs=require(_0x95b6('0x10'));var as=require(_0x95b6('0x11'));var hardwareService=require(_0x95b6('0x12'));var logger=require(_0x95b6('0x13'))(_0x95b6('0x14'));var utils=require(_0x95b6('0x15'));var config=require(_0x95b6('0x16'));var licenseUtil=require(_0x95b6('0x17'));var db=require(_0x95b6('0x18'))['db'];function respondWithStatusCode(_0xfd0808,_0x320a10){_0x320a10=_0x320a10||0xcc;return function(_0xf3bc21){if(_0xf3bc21){return _0xfd0808[_0x95b6('0x19')](_0x320a10);}return _0xfd0808[_0x95b6('0x1a')](_0x320a10)[_0x95b6('0x1b')]();};}function respondWithResult(_0x35c37b,_0x2cf0c9){_0x2cf0c9=_0x2cf0c9||0xc8;return function(_0x433190){if(_0x433190){return _0x35c37b[_0x95b6('0x1a')](_0x2cf0c9)['json'](_0x433190);}};}function respondWithFilteredResult(_0xef931,_0x9d068){return function(_0x500ff5){if(_0x500ff5){var _0x72537=typeof _0x9d068[_0x95b6('0x1c')]===_0x95b6('0x1d')&&typeof _0x9d068[_0x95b6('0x1e')]==='undefined';var _0xaf928a=_0x500ff5[_0x95b6('0x1f')];var _0x560c21=_0x72537?0x0:_0x9d068[_0x95b6('0x1c')];var _0x2e4dc7=_0x72537?_0x500ff5[_0x95b6('0x1f')]:_0x9d068['offset']+_0x9d068[_0x95b6('0x1e')];var _0x3c8239;if(_0x2e4dc7>=_0xaf928a){_0x2e4dc7=_0xaf928a;_0x3c8239=0xc8;}else{_0x3c8239=0xce;}_0xef931['status'](_0x3c8239);return _0xef931[_0x95b6('0x20')]('Content-Range',_0x560c21+'-'+_0x2e4dc7+'/'+_0xaf928a)[_0x95b6('0x21')](_0x500ff5);}return null;};}function patchUpdates(_0x3543bd){return function(_0x2a1489){try{jsonpatch[_0x95b6('0x22')](_0x2a1489,_0x3543bd,!![]);}catch(_0x3ed04e){return BPromise[_0x95b6('0x23')](_0x3ed04e);}return _0x2a1489[_0x95b6('0x24')]();};}function saveUpdates(_0x2ed586,_0x472790){return function(_0x4413c6){if(_0x4413c6){return _0x4413c6[_0x95b6('0x25')](_0x2ed586)[_0x95b6('0x26')](function(_0x1e8df4){return _0x1e8df4;});}return null;};}function removeEntity(_0x901991,_0x4a0d43){return function(_0x93905f){if(_0x93905f){return _0x93905f[_0x95b6('0x27')]()[_0x95b6('0x26')](function(){_0x901991[_0x95b6('0x1a')](0xcc)[_0x95b6('0x1b')]();});}};}function handleEntityNotFound(_0x50b54e,_0x2b399f){return function(_0x1b3bf0){if(!_0x1b3bf0){_0x50b54e[_0x95b6('0x19')](0x194);}return _0x1b3bf0;};}function handleError(_0x347a87,_0x59fbed){_0x59fbed=_0x59fbed||0x1f4;return function(_0x15afc5){logger['error'](_0x15afc5[_0x95b6('0x28')]);if(_0x15afc5[_0x95b6('0x29')]){delete _0x15afc5[_0x95b6('0x29')];}_0x347a87[_0x95b6('0x1a')](_0x59fbed)[_0x95b6('0x2a')](_0x15afc5);};}exports[_0x95b6('0x2b')]=function(_0x1788a5,_0xf6484e){var _0x46474d={},_0x2b3bcf={},_0x261903={'count':0x0,'rows':[]};var _0x2a27b5=_['map'](db[_0x95b6('0x2c')][_0x95b6('0x2d')],function(_0x52e60e){return{'name':_0x52e60e[_0x95b6('0x2e')],'type':_0x52e60e[_0x95b6('0x2f')]['key']};});_0x2b3bcf[_0x95b6('0x30')]=_[_0x95b6('0x31')](_0x2a27b5,_0x95b6('0x29'));_0x2b3bcf[_0x95b6('0x32')]=_[_0x95b6('0x33')](_0x1788a5[_0x95b6('0x32')]);_0x2b3bcf[_0x95b6('0x34')]=_[_0x95b6('0x35')](_0x2b3bcf[_0x95b6('0x30')],_0x2b3bcf['query']);_0x46474d[_0x95b6('0x36')]=_[_0x95b6('0x35')](_0x2b3bcf['model'],qs['fields'](_0x1788a5['query'][_0x95b6('0x37')]));_0x46474d[_0x95b6('0x36')]=_0x46474d[_0x95b6('0x36')][_0x95b6('0x38')]?_0x46474d[_0x95b6('0x36')]:_0x2b3bcf[_0x95b6('0x30')];if(!_0x1788a5[_0x95b6('0x32')]['hasOwnProperty'](_0x95b6('0x39'))){_0x46474d[_0x95b6('0x1e')]=qs[_0x95b6('0x1e')](_0x1788a5[_0x95b6('0x32')][_0x95b6('0x1e')]);_0x46474d['offset']=qs[_0x95b6('0x1c')](_0x1788a5[_0x95b6('0x32')][_0x95b6('0x1c')]);}_0x46474d[_0x95b6('0x3a')]=qs['sort'](_0x1788a5[_0x95b6('0x32')][_0x95b6('0x3b')]);_0x46474d['where']=qs['filters'](_[_0x95b6('0x3c')](_0x1788a5[_0x95b6('0x32')],_0x2b3bcf[_0x95b6('0x34')]),_0x2a27b5);if(_0x1788a5[_0x95b6('0x32')][_0x95b6('0x3d')]){_0x46474d[_0x95b6('0x3e')]=_[_0x95b6('0x3f')](_0x46474d[_0x95b6('0x3e')],{'$or':_['map'](_0x2a27b5,function(_0x41ccdb){if(_0x41ccdb['type']!==_0x95b6('0x40')){var _0x486031={};_0x486031[_0x41ccdb[_0x95b6('0x29')]]={'$like':'%'+_0x1788a5[_0x95b6('0x32')][_0x95b6('0x3d')]+'%'};return _0x486031;}})});}_0x46474d=_[_0x95b6('0x3f')]({},_0x46474d,_0x1788a5[_0x95b6('0x41')]);var _0x1e2eef={'where':_0x46474d[_0x95b6('0x3e')]};return db[_0x95b6('0x2c')][_0x95b6('0x1f')](_0x1e2eef)[_0x95b6('0x26')](function(_0x33ffa8){_0x261903[_0x95b6('0x1f')]=_0x33ffa8;if(_0x1788a5[_0x95b6('0x32')][_0x95b6('0x42')]){_0x46474d['include']=[{'all':!![]}];}return db[_0x95b6('0x2c')][_0x95b6('0x43')](_0x46474d);})['then'](function(_0xc2804){_0x261903['rows']=_0xc2804;return _0x261903;})[_0x95b6('0x26')](respondWithFilteredResult(_0xf6484e,_0x46474d))[_0x95b6('0x44')](handleError(_0xf6484e,null));};exports[_0x95b6('0x45')]=function(_0x5ef270,_0x3a73e2){var _0x32023a={'raw':!![],'where':{'id':_0x5ef270[_0x95b6('0x46')]['id']}},_0x4ccbb3={};_0x4ccbb3[_0x95b6('0x30')]=_['keys'](db['VoiceQueuesLog'][_0x95b6('0x2d')]);_0x4ccbb3['query']=_[_0x95b6('0x33')](_0x5ef270[_0x95b6('0x32')]);_0x4ccbb3[_0x95b6('0x34')]=_[_0x95b6('0x35')](_0x4ccbb3[_0x95b6('0x30')],_0x4ccbb3[_0x95b6('0x32')]);_0x32023a['attributes']=_['intersection'](_0x4ccbb3[_0x95b6('0x30')],qs[_0x95b6('0x37')](_0x5ef270['query'][_0x95b6('0x37')]));_0x32023a['attributes']=_0x32023a['attributes']['length']?_0x32023a['attributes']:_0x4ccbb3[_0x95b6('0x30')];if(_0x5ef270['query'][_0x95b6('0x42')]){_0x32023a[_0x95b6('0x47')]=[{'all':!![]}];}_0x32023a=_['merge']({},_0x32023a,_0x5ef270['options']);return db[_0x95b6('0x2c')][_0x95b6('0x48')](_0x32023a)[_0x95b6('0x26')](handleEntityNotFound(_0x3a73e2,null))[_0x95b6('0x26')](respondWithResult(_0x3a73e2,null))[_0x95b6('0x44')](handleError(_0x3a73e2,null));};exports[_0x95b6('0x49')]=function(_0x598d91,_0x15647e){return db[_0x95b6('0x2c')][_0x95b6('0x49')](_0x598d91[_0x95b6('0x4a')],{})[_0x95b6('0x26')](respondWithResult(_0x15647e,0xc9))[_0x95b6('0x44')](handleError(_0x15647e,null));};exports[_0x95b6('0x25')]=function(_0x3af425,_0xa71b64){if(_0x3af425[_0x95b6('0x4a')]['id']){delete _0x3af425['body']['id'];}return db[_0x95b6('0x2c')][_0x95b6('0x48')]({'where':{'id':_0x3af425[_0x95b6('0x46')]['id']}})[_0x95b6('0x26')](handleEntityNotFound(_0xa71b64,null))[_0x95b6('0x26')](saveUpdates(_0x3af425[_0x95b6('0x4a')],null))[_0x95b6('0x26')](respondWithResult(_0xa71b64,null))[_0x95b6('0x44')](handleError(_0xa71b64,null));};exports['destroy']=function(_0x1368b9,_0x526ffa){return db[_0x95b6('0x2c')][_0x95b6('0x48')]({'where':{'id':_0x1368b9['params']['id']}})['then'](handleEntityNotFound(_0x526ffa,null))[_0x95b6('0x26')](removeEntity(_0x526ffa,null))[_0x95b6('0x44')](handleError(_0x526ffa,null));};
\ No newline at end of file
index ff9509a..3b58485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda6=['./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x7c7534,_0x475dee){var _0x222826=function(_0x5db6a9){while(--_0x5db6a9){_0x7c7534['push'](_0x7c7534['shift']());}};_0x222826(++_0x475dee);}(_0xeda6,0xa3));var _0x6eda=function(_0x12e430,_0x277786){_0x12e430=_0x12e430-0x0;var _0x5c1211=_0xeda6[_0x12e430];return _0x5c1211;};'use strict';var _=require(_0x6eda('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x6eda('0x1'));var BPromise=require(_0x6eda('0x2'));var rp=require(_0x6eda('0x3'));var fs=require('fs');var path=require(_0x6eda('0x4'));var rimraf=require('rimraf');var config=require(_0x6eda('0x5'));var attributes=require(_0x6eda('0x6'));module[_0x6eda('0x7')]=function(_0x6b83f1,_0x29d9aa){return _0x6b83f1['define'](_0x6eda('0x8'),attributes,{'tableName':_0x6eda('0x9'),'paranoid':![],'indexes':[{'name':_0x6eda('0xa'),'fields':[_0x6eda('0xb'),_0x6eda('0xc')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xd20e=['request-promise','rimraf','../../config/environment','exports','VoiceQueuesLog','event','dtm','lodash','util','../../config/logger','api','bluebird'];(function(_0x46bd29,_0x475c78){var _0x215991=function(_0x2aa138){while(--_0x2aa138){_0x46bd29['push'](_0x46bd29['shift']());}};_0x215991(++_0x475c78);}(_0xd20e,0xbb));var _0xed20=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0xd20e[_0x5f09c5];return _0x426ad9;};'use strict';var _=require(_0xed20('0x0'));var util=require(_0xed20('0x1'));var logger=require(_0xed20('0x2'))(_0xed20('0x3'));var moment=require('moment');var BPromise=require(_0xed20('0x4'));var rp=require(_0xed20('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xed20('0x6'));var config=require(_0xed20('0x7'));var attributes=require('./voiceQueuesLog.attributes');module[_0xed20('0x8')]=function(_0x1eda4e,_0x408ac3){return _0x1eda4e['define'](_0xed20('0x9'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0xed20('0xa'),_0xed20('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index f2ab462..d206dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e68=['result','catch','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x1fb1c1,_0x4ebe69){var _0x1622df=function(_0x52b793){while(--_0x52b793){_0x1fb1c1['push'](_0x1fb1c1['shift']());}};_0x1622df(++_0x4ebe69);}(_0x9e68,0x16b));var _0x89e6=function(_0x25b38e,_0x42919e){_0x25b38e=_0x25b38e-0x0;var _0x5d2899=_0x9e68[_0x25b38e];return _0x5d2899;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x89e6('0x0'));var rs=require(_0x89e6('0x1'));var fs=require('fs');var Redis=require(_0x89e6('0x2'));var db=require(_0x89e6('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x89e6('0x4'))('rpc');var config=require(_0x89e6('0x5'));var jayson=require(_0x89e6('0x6'));var client=jayson[_0x89e6('0x7')][_0x89e6('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3785f6,_0x2a2d4e,_0x36b2f4){return new BPromise(function(_0x516150,_0x21518b){return client['request'](_0x3785f6,_0x36b2f4)[_0x89e6('0x9')](function(_0x41f404){logger[_0x89e6('0xa')](_0x89e6('0xb'),_0x2a2d4e,_0x89e6('0xc'));logger[_0x89e6('0xd')](_0x89e6('0xe'),_0x2a2d4e,_0x89e6('0xc'),JSON['stringify'](_0x41f404));if(_0x41f404[_0x89e6('0xf')]){if(_0x41f404['error']['code']===0x1f4){logger[_0x89e6('0xf')](_0x89e6('0xb'),_0x2a2d4e,_0x41f404[_0x89e6('0xf')]['message']);return _0x21518b(_0x41f404[_0x89e6('0xf')][_0x89e6('0x10')]);}logger[_0x89e6('0xf')](_0x89e6('0xb'),_0x2a2d4e,_0x41f404['error'][_0x89e6('0x10')]);return _0x516150(_0x41f404[_0x89e6('0xf')][_0x89e6('0x10')]);}else{logger[_0x89e6('0xa')](_0x89e6('0xb'),_0x2a2d4e,_0x89e6('0xc'));_0x516150(_0x41f404[_0x89e6('0x11')]['message']);}})[_0x89e6('0x12')](function(_0x32d8e2){logger[_0x89e6('0xf')](_0x89e6('0xb'),_0x2a2d4e,_0x32d8e2);_0x21518b(_0x32d8e2);});});}
\ No newline at end of file
+var _0xa786=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2763f2,_0x416af8){var _0x3ef471=function(_0x288aa2){while(--_0x288aa2){_0x2763f2['push'](_0x2763f2['shift']());}};_0x3ef471(++_0x416af8);}(_0xa786,0x1f1));var _0x6a78=function(_0x57cb5d,_0x2f8ed0){_0x57cb5d=_0x57cb5d-0x0;var _0x2f0d83=_0xa786[_0x57cb5d];return _0x2f0d83;};'use strict';var _=require(_0x6a78('0x0'));var util=require(_0x6a78('0x1'));var moment=require(_0x6a78('0x2'));var BPromise=require(_0x6a78('0x3'));var rs=require(_0x6a78('0x4'));var fs=require('fs');var Redis=require(_0x6a78('0x5'));var db=require(_0x6a78('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a78('0x7'))(_0x6a78('0x8'));var config=require(_0x6a78('0x9'));var jayson=require(_0x6a78('0xa'));var client=jayson['client'][_0x6a78('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x34deae,_0x3df8b4,_0x55482c){return new BPromise(function(_0x58d2bc,_0x489b26){return client[_0x6a78('0xc')](_0x34deae,_0x55482c)['then'](function(_0x5e3e6b){logger[_0x6a78('0xd')](_0x6a78('0xe'),_0x3df8b4,_0x6a78('0xf'));logger[_0x6a78('0x10')](_0x6a78('0x11'),_0x3df8b4,'request\x20sent',JSON['stringify'](_0x5e3e6b));if(_0x5e3e6b[_0x6a78('0x12')]){if(_0x5e3e6b[_0x6a78('0x12')]['code']===0x1f4){logger[_0x6a78('0x12')](_0x6a78('0xe'),_0x3df8b4,_0x5e3e6b[_0x6a78('0x12')][_0x6a78('0x13')]);return _0x489b26(_0x5e3e6b[_0x6a78('0x12')]['message']);}logger[_0x6a78('0x12')](_0x6a78('0xe'),_0x3df8b4,_0x5e3e6b['error'][_0x6a78('0x13')]);return _0x58d2bc(_0x5e3e6b[_0x6a78('0x12')][_0x6a78('0x13')]);}else{logger[_0x6a78('0xd')](_0x6a78('0xe'),_0x3df8b4,_0x6a78('0xf'));_0x58d2bc(_0x5e3e6b[_0x6a78('0x14')][_0x6a78('0x13')]);}})['catch'](function(_0x3f9482){logger[_0x6a78('0x12')](_0x6a78('0xe'),_0x3df8b4,_0x3f9482);_0x489b26(_0x3f9482);});});}
\ No newline at end of file
index f1826a0..cc050d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff62=['post','create','/:id/transcribe','runTranscribe','update','delete','destroy','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceRecording.controller','isAuthenticated','get','/describe','/:id','show','download','/:id/downloads','downloads','downloadTranscribe'];(function(_0x25248b,_0x3c8491){var _0x509939=function(_0x457a27){while(--_0x457a27){_0x25248b['push'](_0x25248b['shift']());}};_0x509939(++_0x3c8491);}(_0xff62,0x1ea));var _0x2ff6=function(_0x1701ca,_0x265057){_0x1701ca=_0x1701ca-0x0;var _0x3f07a9=_0xff62[_0x1701ca];return _0x3f07a9;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2ff6('0x0'));var express=require(_0x2ff6('0x1'));var router=express[_0x2ff6('0x2')]();var fs_extra=require(_0x2ff6('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x2ff6('0x4'));var config=require(_0x2ff6('0x5'));var controller=require(_0x2ff6('0x6'));router['get']('/',auth[_0x2ff6('0x7')](),controller['index']);router[_0x2ff6('0x8')](_0x2ff6('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x2ff6('0x8')](_0x2ff6('0xa'),auth[_0x2ff6('0x7')](),controller[_0x2ff6('0xb')]);router[_0x2ff6('0x8')]('/:id/download',auth[_0x2ff6('0x7')](),controller[_0x2ff6('0xc')]);router[_0x2ff6('0x8')](_0x2ff6('0xd'),controller[_0x2ff6('0xe')]);router['get']('/:id/transcribe',auth[_0x2ff6('0x7')](),controller[_0x2ff6('0xf')]);router[_0x2ff6('0x10')]('/',auth[_0x2ff6('0x7')](),controller[_0x2ff6('0x11')]);router[_0x2ff6('0x10')](_0x2ff6('0x12'),auth[_0x2ff6('0x7')](),controller[_0x2ff6('0x13')]);router['put'](_0x2ff6('0xa'),auth[_0x2ff6('0x7')](),controller[_0x2ff6('0x14')]);router[_0x2ff6('0x15')](_0x2ff6('0xa'),auth['isAuthenticated'](),controller[_0x2ff6('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0xca80=['runTranscribe','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./voiceRecording.controller','get','isAuthenticated','/describe','describe','/:id','show','download','downloads','downloadTranscribe','post','create','/:id/transcribe'];(function(_0x1f4719,_0x183aaf){var _0x15aae9=function(_0x60e584){while(--_0x60e584){_0x1f4719['push'](_0x1f4719['shift']());}};_0x15aae9(++_0x183aaf);}(_0xca80,0xf4));var _0x0ca8=function(_0x4de6cd,_0xcaf8e8){_0x4de6cd=_0x4de6cd-0x0;var _0x5df267=_0xca80[_0x4de6cd];return _0x5df267;};'use strict';var multer=require('multer');var util=require(_0x0ca8('0x0'));var path=require(_0x0ca8('0x1'));var timeout=require(_0x0ca8('0x2'));var express=require(_0x0ca8('0x3'));var router=express[_0x0ca8('0x4')]();var fs_extra=require(_0x0ca8('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0ca8('0x6'));var controller=require(_0x0ca8('0x7'));router[_0x0ca8('0x8')]('/',auth[_0x0ca8('0x9')](),controller['index']);router[_0x0ca8('0x8')](_0x0ca8('0xa'),auth[_0x0ca8('0x9')](),controller[_0x0ca8('0xb')]);router[_0x0ca8('0x8')](_0x0ca8('0xc'),auth['isAuthenticated'](),controller[_0x0ca8('0xd')]);router[_0x0ca8('0x8')]('/:id/download',auth[_0x0ca8('0x9')](),controller[_0x0ca8('0xe')]);router[_0x0ca8('0x8')]('/:id/downloads',controller[_0x0ca8('0xf')]);router[_0x0ca8('0x8')]('/:id/transcribe',auth[_0x0ca8('0x9')](),controller[_0x0ca8('0x10')]);router[_0x0ca8('0x11')]('/',auth[_0x0ca8('0x9')](),controller[_0x0ca8('0x12')]);router[_0x0ca8('0x11')](_0x0ca8('0x13'),auth['isAuthenticated'](),controller[_0x0ca8('0x14')]);router[_0x0ca8('0x15')](_0x0ca8('0xc'),auth[_0x0ca8('0x9')](),controller['update']);router[_0x0ca8('0x16')](_0x0ca8('0xc'),auth[_0x0ca8('0x9')](),controller['destroy']);module[_0x0ca8('0x17')]=router;
\ No newline at end of file
index 07b0ee3..22075b9 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(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0xa9e0[_0x1b828b];return _0x98da1a;};'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(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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 e6e078c..c3a8f7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ae3=['query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','catch','describe','download','uniqueid','value','%s.cypher','existsSync','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','downloads','sequelize','MD5','col','token','$and','decryptFile','destroy','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','listBuckets','createBucket','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','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','TranscriptionJobName','transcribeName','TranscriptionJob','transcribeStatus','TranscriptionJobStatus','../../components/encryptor','findOne','Voice\x20Recording\x20not\x20found','transcribe','transcribeRegion','language','runSentiment','sentimentAccountId','CloudProvider','Cloud\x20Provider\x20not\x20available','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','aws-sdk','uuid/v4','../../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','limit','count','offset','set','Content-Range','reject','save','update','then','stack','name','send','index','map','VoiceRecording','rawAttributes','key','model','differenceBy','format'];(function(_0x4d9a83,_0x8f1d0b){var _0x167e7f=function(_0x437d31){while(--_0x437d31){_0x4d9a83['push'](_0x4d9a83['shift']());}};_0x167e7f(++_0x8f1d0b);}(_0x7ae3,0x192));var _0x37ae=function(_0x4475b7,_0x515752){_0x4475b7=_0x4475b7-0x0;var _0x4d6120=_0x7ae3[_0x4475b7];return _0x4d6120;};'use strict';var emlformat=require(_0x37ae('0x0'));var rimraf=require(_0x37ae('0x1'));var zipdir=require(_0x37ae('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x37ae('0x3'));var moment=require(_0x37ae('0x4'));var BPromise=require(_0x37ae('0x5'));var Mustache=require(_0x37ae('0x6'));var util=require('util');var path=require(_0x37ae('0x7'));var sox=require(_0x37ae('0x8'));var csv=require('to-csv');var ejs=require(_0x37ae('0x9'));var fs=require('fs');var fs_extra=require(_0x37ae('0xa'));var _=require(_0x37ae('0xb'));var squel=require(_0x37ae('0xc'));var crypto=require(_0x37ae('0xd'));var jsforce=require(_0x37ae('0xe'));var deskjs=require(_0x37ae('0xf'));var toCsv=require(_0x37ae('0x10'));var querystring=require(_0x37ae('0x11'));var Papa=require(_0x37ae('0x12'));var AWS=require(_0x37ae('0x13'));var uuidv4=require(_0x37ae('0x14'));var Redis=require('ioredis');var authService=require(_0x37ae('0x15'));var qs=require(_0x37ae('0x16'));var as=require(_0x37ae('0x17'));var hardwareService=require(_0x37ae('0x18'));var logger=require(_0x37ae('0x19'))(_0x37ae('0x1a'));var utils=require(_0x37ae('0x1b'));var config=require('../../config/environment');var licenseUtil=require(_0x37ae('0x1c'));var db=require(_0x37ae('0x1d'))['db'];function respondWithStatusCode(_0x241dcc,_0x5d6785){_0x5d6785=_0x5d6785||0xcc;return function(_0x5644a7){if(_0x5644a7){return _0x241dcc[_0x37ae('0x1e')](_0x5d6785);}return _0x241dcc[_0x37ae('0x1f')](_0x5d6785)[_0x37ae('0x20')]();};}function respondWithResult(_0x742d8a,_0x302e70){_0x302e70=_0x302e70||0xc8;return function(_0x1760ea){if(_0x1760ea){return _0x742d8a['status'](_0x302e70)[_0x37ae('0x21')](_0x1760ea);}};}function respondWithFilteredResult(_0x5ab0fa,_0x17e46d){return function(_0x416f36){if(_0x416f36){var _0x59d127=typeof _0x17e46d['offset']==='undefined'&&typeof _0x17e46d[_0x37ae('0x22')]==='undefined';var _0x5a79b3=_0x416f36[_0x37ae('0x23')];var _0x4d9ccf=_0x59d127?0x0:_0x17e46d[_0x37ae('0x24')];var _0x44a33b=_0x59d127?_0x416f36[_0x37ae('0x23')]:_0x17e46d['offset']+_0x17e46d[_0x37ae('0x22')];var _0x1002f9;if(_0x44a33b>=_0x5a79b3){_0x44a33b=_0x5a79b3;_0x1002f9=0xc8;}else{_0x1002f9=0xce;}_0x5ab0fa[_0x37ae('0x1f')](_0x1002f9);return _0x5ab0fa[_0x37ae('0x25')](_0x37ae('0x26'),_0x4d9ccf+'-'+_0x44a33b+'/'+_0x5a79b3)[_0x37ae('0x21')](_0x416f36);}return null;};}function patchUpdates(_0x348a5a){return function(_0x3bc243){try{jsonpatch['apply'](_0x3bc243,_0x348a5a,!![]);}catch(_0x5c3bc2){return BPromise[_0x37ae('0x27')](_0x5c3bc2);}return _0x3bc243[_0x37ae('0x28')]();};}function saveUpdates(_0x4f6c2f,_0x32412b){return function(_0x230e73){if(_0x230e73){return _0x230e73[_0x37ae('0x29')](_0x4f6c2f)[_0x37ae('0x2a')](function(_0x981679){return _0x981679;});}return null;};}function removeEntity(_0xf78610,_0x447201){return function(_0x378574){if(_0x378574){return _0x378574['destroy']()[_0x37ae('0x2a')](function(){_0xf78610['status'](0xcc)[_0x37ae('0x20')]();});}};}function handleEntityNotFound(_0x1e7dd6,_0x1f02a7){return function(_0xd79815){if(!_0xd79815){_0x1e7dd6[_0x37ae('0x1e')](0x194);}return _0xd79815;};}function handleError(_0x55842f,_0x52468d){_0x52468d=_0x52468d||0x1f4;return function(_0x58b0e3){logger['error'](_0x58b0e3[_0x37ae('0x2b')]);if(_0x58b0e3['name']){delete _0x58b0e3[_0x37ae('0x2c')];}_0x55842f['status'](_0x52468d)[_0x37ae('0x2d')](_0x58b0e3);};}exports[_0x37ae('0x2e')]=function(_0x1ba180,_0x3ac2c7){var _0x16a4fd={},_0xe01427={},_0x22ccd0={'count':0x0,'rows':[]};var _0x12e9b7=_[_0x37ae('0x2f')](db[_0x37ae('0x30')][_0x37ae('0x31')],function(_0x553b61){return{'name':_0x553b61['fieldName'],'type':_0x553b61['type'][_0x37ae('0x32')]};});_0xe01427[_0x37ae('0x33')]=_[_0x37ae('0x34')](_['map'](_0x12e9b7,_0x37ae('0x2c')),[_0x37ae('0x35')]);_0xe01427[_0x37ae('0x36')]=_['keys'](_0x1ba180[_0x37ae('0x36')]);_0xe01427[_0x37ae('0x37')]=_['intersection'](_0xe01427['model'],_0xe01427['query']);_0x16a4fd[_0x37ae('0x38')]=_['intersection'](_0xe01427[_0x37ae('0x33')],qs[_0x37ae('0x39')](_0x1ba180['query']['fields']));_0x16a4fd['attributes']=_0x16a4fd['attributes'][_0x37ae('0x3a')]?_0x16a4fd[_0x37ae('0x38')]:_0xe01427[_0x37ae('0x33')];if(!_0x1ba180['query'][_0x37ae('0x3b')]('nolimit')){_0x16a4fd[_0x37ae('0x22')]=qs[_0x37ae('0x22')](_0x1ba180[_0x37ae('0x36')][_0x37ae('0x22')]);_0x16a4fd[_0x37ae('0x24')]=qs[_0x37ae('0x24')](_0x1ba180[_0x37ae('0x36')][_0x37ae('0x24')]);}_0x16a4fd[_0x37ae('0x3c')]=qs[_0x37ae('0x3d')](_0x1ba180['query'][_0x37ae('0x3d')]);_0x16a4fd[_0x37ae('0x3e')]=qs[_0x37ae('0x37')](_['pick'](_0x1ba180[_0x37ae('0x36')],_0xe01427[_0x37ae('0x37')]),_0x12e9b7);if(_0x1ba180[_0x37ae('0x36')]['filter']){_0x16a4fd[_0x37ae('0x3e')]=_[_0x37ae('0x3f')](_0x16a4fd['where'],{'$or':_[_0x37ae('0x2f')](_0x12e9b7,function(_0x2f1e27){if(_0x2f1e27[_0x37ae('0x40')]!==_0x37ae('0x41')){var _0x1676eb={};_0x1676eb[_0x2f1e27[_0x37ae('0x2c')]]={'$like':'%'+_0x1ba180['query'][_0x37ae('0x42')]+'%'};return _0x1676eb;}})});}_0x16a4fd=_[_0x37ae('0x3f')]({},_0x16a4fd,_0x1ba180[_0x37ae('0x43')]);var _0x4758d8={'where':_0x16a4fd[_0x37ae('0x3e')]};return db[_0x37ae('0x30')][_0x37ae('0x23')](_0x4758d8)[_0x37ae('0x2a')](function(_0x56d8d6){_0x22ccd0[_0x37ae('0x23')]=_0x56d8d6;if(_0x1ba180[_0x37ae('0x36')][_0x37ae('0x44')]){_0x16a4fd[_0x37ae('0x45')]=[{'all':!![]}];}return db[_0x37ae('0x30')][_0x37ae('0x46')](_0x16a4fd);})[_0x37ae('0x2a')](function(_0x307f4a){_0x22ccd0[_0x37ae('0x47')]=_0x307f4a;return _0x22ccd0;})[_0x37ae('0x2a')](respondWithFilteredResult(_0x3ac2c7,_0x16a4fd))['catch'](handleError(_0x3ac2c7,null));};exports[_0x37ae('0x48')]=function(_0x52ed38,_0x261527){var _0x5f4a16={'raw':![],'where':{'id':_0x52ed38[_0x37ae('0x49')]['id']}},_0x463cd9={};_0x463cd9[_0x37ae('0x33')]=_[_0x37ae('0x4a')](db[_0x37ae('0x30')][_0x37ae('0x31')]);_0x463cd9['query']=_['keys'](_0x52ed38[_0x37ae('0x36')]);_0x463cd9[_0x37ae('0x37')]=_['intersection'](_0x463cd9[_0x37ae('0x33')],_0x463cd9['query']);_0x5f4a16[_0x37ae('0x38')]=_['intersection'](_0x463cd9[_0x37ae('0x33')],qs['fields'](_0x52ed38['query']['fields']));_0x5f4a16[_0x37ae('0x38')]=_0x5f4a16[_0x37ae('0x38')]['length']?_0x5f4a16[_0x37ae('0x38')]:_0x463cd9[_0x37ae('0x33')];if(_0x52ed38[_0x37ae('0x36')][_0x37ae('0x44')]){_0x5f4a16[_0x37ae('0x45')]=[{'all':!![]}];}_0x5f4a16=_[_0x37ae('0x3f')]({},_0x5f4a16,_0x52ed38['options']);return db[_0x37ae('0x30')][_0x37ae('0x4b')](_0x5f4a16)[_0x37ae('0x2a')](handleEntityNotFound(_0x261527,null))[_0x37ae('0x2a')](respondWithResult(_0x261527,null))['catch'](handleError(_0x261527,null));};exports[_0x37ae('0x4c')]=function(_0x3c7571,_0x4ca8c9){return db['VoiceRecording']['create'](_0x3c7571[_0x37ae('0x4d')],{})['then'](respondWithResult(_0x4ca8c9,0xc9))[_0x37ae('0x4e')](handleError(_0x4ca8c9,null));};exports[_0x37ae('0x29')]=function(_0x3f1c1f,_0x5f0e38){if(_0x3f1c1f[_0x37ae('0x4d')]['id']){delete _0x3f1c1f[_0x37ae('0x4d')]['id'];}return db[_0x37ae('0x30')][_0x37ae('0x4b')]({'where':{'id':_0x3f1c1f[_0x37ae('0x49')]['id']}})['then'](handleEntityNotFound(_0x5f0e38,null))[_0x37ae('0x2a')](saveUpdates(_0x3f1c1f[_0x37ae('0x4d')],null))[_0x37ae('0x2a')](respondWithResult(_0x5f0e38,null))[_0x37ae('0x4e')](handleError(_0x5f0e38,null));};exports['describe']=function(_0x4b78a8,_0x161986){return db[_0x37ae('0x30')][_0x37ae('0x4f')]()[_0x37ae('0x2a')](respondWithResult(_0x161986,null))['catch'](handleError(_0x161986,null));};exports[_0x37ae('0x50')]=function(_0x304cca,_0x28d572,_0x145514){var _0x1f1fa4=require('../../components/encryptor');var _0x34c4b0=![];var _0x11d1b0={};if(_0x304cca[_0x37ae('0x36')][_0x37ae('0x40')]&&_0x304cca[_0x37ae('0x36')][_0x37ae('0x40')]===_0x37ae('0x51')){_0x11d1b0['uniqueid']=_0x304cca[_0x37ae('0x49')]['id'];}else{_0x11d1b0['id']=_0x304cca[_0x37ae('0x49')]['id'];}return db[_0x37ae('0x30')][_0x37ae('0x4b')]({'where':_0x11d1b0,'attributes':['id',_0x37ae('0x52')],'raw':!![]})[_0x37ae('0x2a')](handleEntityNotFound(_0x28d572,null))[_0x37ae('0x2a')](function(_0x3f559e){if(_0x3f559e){var _0x3920b4=_0x3f559e['value'];var _0x231f0b=util[_0x37ae('0x35')](_0x37ae('0x53'),_0x3920b4);if(fs[_0x37ae('0x54')](_0x231f0b)){_0x34c4b0=!![];return _0x1f1fa4['decryptFile'](_0x231f0b,_0x3920b4,config[_0x37ae('0x55')][_0x37ae('0x56')])['then'](function(){return _0x3f559e;});}return _0x3f559e;}})['then'](function(_0x24809c){if(_0x24809c){var _0x4719ed=_0x24809c[_0x37ae('0x52')];if(!fs[_0x37ae('0x54')](_0x4719ed)){throw new db[(_0x37ae('0x57'))][(_0x37ae('0x58'))](_0x37ae('0x59'));}if(_0x24809c[_0x37ae('0x5a')]){return _0x28d572['download'](_0x4719ed,_0x24809c['filename']+path[_0x37ae('0x5b')](_0x4719ed),function(){if(_0x34c4b0){fs[_0x37ae('0x5c')](_0x4719ed);}});}else{return _0x28d572[_0x37ae('0x50')](_0x4719ed,function(_0x2cd066){if(_0x34c4b0){fs[_0x37ae('0x5c')](_0x4719ed);}});}}})[_0x37ae('0x4e')](function(_0x38d3e9){if(_0x38d3e9[_0x37ae('0x5d')]===_0x37ae('0x59')){_0x28d572[_0x37ae('0x1f')](0x194)['send']('Not\x20found');}else{return handleError(_0x28d572,null);}});};exports[_0x37ae('0x5e')]=function(_0x359096,_0xa89108,_0x1a9fa4){var _0x54575d=require('../../components/encryptor');var _0x5b9c28=![];var _0x6a7921={'$and':[db[_0x37ae('0x5f')]['where'](db[_0x37ae('0x5f')]['fn'](_0x37ae('0x60'),db[_0x37ae('0x5f')][_0x37ae('0x61')]('uniqueid')),_0x359096[_0x37ae('0x36')][_0x37ae('0x62')])]};if(_0x359096[_0x37ae('0x36')][_0x37ae('0x40')]&&_0x359096[_0x37ae('0x36')]['type']==='uniqueid'){_0x6a7921['$and']['push']({'uniqueid':_0x359096[_0x37ae('0x49')]['id']});}else{_0x6a7921[_0x37ae('0x63')]['push']({'id':_0x359096[_0x37ae('0x49')]['id']});}return db['VoiceRecording'][_0x37ae('0x4b')]({'where':_0x6a7921,'attributes':['id',_0x37ae('0x52')],'raw':!![]})[_0x37ae('0x2a')](handleEntityNotFound(_0xa89108,null))[_0x37ae('0x2a')](function(_0x10ffbe){if(_0x10ffbe){var _0x5c2e7a=util[_0x37ae('0x35')]('%s.cypher',_0x10ffbe['value']);if(fs[_0x37ae('0x54')](_0x5c2e7a)){_0x5b9c28=!![];return _0x54575d[_0x37ae('0x64')](_0x5c2e7a,_0x10ffbe[_0x37ae('0x52')],config[_0x37ae('0x55')]['recording'])['then'](function(){return _0x10ffbe;});}return _0x10ffbe;}})[_0x37ae('0x2a')](function(_0x155d36){if(_0x155d36){if(!fs[_0x37ae('0x54')](_0x155d36[_0x37ae('0x52')])){throw new db[(_0x37ae('0x57'))][(_0x37ae('0x58'))]('VoiceRecording\x20not\x20found');}if(_0x155d36['filename']){return _0xa89108[_0x37ae('0x50')](_0x155d36[_0x37ae('0x52')],_0x155d36[_0x37ae('0x5a')]+path['extname'](_0x155d36['value']),function(){if(_0x5b9c28){fs['unlink'](_0x155d36[_0x37ae('0x52')]);}});}else{return _0xa89108[_0x37ae('0x50')](_0x155d36[_0x37ae('0x52')],function(_0x39f9cc){if(_0x5b9c28){fs['unlink'](_0x155d36[_0x37ae('0x52')]);}});}}})[_0x37ae('0x4e')](handleError(_0xa89108,null));};exports[_0x37ae('0x65')]=function(_0x210f63,_0x4725f0){return db[_0x37ae('0x30')][_0x37ae('0x4b')]({'where':{'id':_0x210f63[_0x37ae('0x49')]['id']}})[_0x37ae('0x2a')](function(_0xb54f1e){if(_[_0x37ae('0x66')](_0xb54f1e)){throw new ReferenceError(_0x37ae('0x67'));}return _0xb54f1e;})['then'](function(_0x81877a){var _0x3c224=_0x81877a[_0x37ae('0x52')];logger[_0x37ae('0x68')](_0x37ae('0x69'),_0x3c224);if(!_[_0x37ae('0x66')](_0x81877a[_0x37ae('0x52')])&&fs[_0x37ae('0x54')](_0x3c224)){logger[_0x37ae('0x68')]('File:\x20\x22'+_0x3c224+_0x37ae('0x6a'));fs[_0x37ae('0x6b')](_0x3c224);}_0x3c224=_0x3c224+_0x37ae('0x6c');if(!_[_0x37ae('0x66')](_0x81877a[_0x37ae('0x52')])&&fs[_0x37ae('0x54')](_0x3c224)){logger[_0x37ae('0x68')](_0x37ae('0x6d')+_0x3c224+_0x37ae('0x6a'));fs[_0x37ae('0x6b')](_0x3c224);}return _0x81877a;})[_0x37ae('0x2a')](function(_0x1ff52f){if(!_0x1ff52f)throw new InternalError();return _0x1ff52f['destroy']();})[_0x37ae('0x2a')](function(){_0x4725f0[_0x37ae('0x1f')](0xcc)[_0x37ae('0x20')]();})[_0x37ae('0x4e')](handleError(_0x4725f0,null));};function getBucketslist(_0x393ac4,_0xa95d7,_0xa021e0){return new Promise(function(_0x37aa92,_0x2b2757){var _0x13455f=new AWS['S3']({'accessKeyId':_0xa95d7,'secretAccessKey':_0x393ac4,'region':_0xa021e0});_0x13455f[_0x37ae('0x6e')]({},function(_0x5d4418,_0xe3453d){if(_0x5d4418){return _0x2b2757(_0x5d4418);}else{return _0x37aa92(_0xe3453d);}});});}function createBucket(_0x50c54b,_0x271832,_0x579ba5,_0x3ccd17){return new Promise(function(_0x329460,_0x4becd1){var _0xd1a203=new AWS['S3']({'accessKeyId':_0x271832,'secretAccessKey':_0x50c54b,'region':_0x579ba5});_0xd1a203[_0x37ae('0x6f')]({'Bucket':_0x3ccd17},function(_0x3b4b25,_0x4c47e5){if(_0x3b4b25){return _0x4becd1(_0x3b4b25);}else{return _0x329460(_0x4c47e5);}});});}function uploadFile(_0xaf2ac7,_0x360d75,_0x1e7e08,_0x7bec7f,_0x1d7a29,_0x552e19){return new Promise(function(_0x3fe9ec,_0x4d164a){var _0x366059=new AWS['S3']({'accessKeyId':_0x360d75,'secretAccessKey':_0xaf2ac7,'region':_0x1e7e08});_0x366059['upload']({'Bucket':_0x7bec7f,'Key':_0x1d7a29,'Body':_0x552e19},function(_0x5a65ca,_0x2eb84b){if(_0x5a65ca){return _0x4d164a(_0x5a65ca);}else{return _0x3fe9ec(_0x2eb84b);}});});}function startTranscribe(_0x54d285,_0x32ad27,_0x38de68,_0x5e9d79,_0x25cb99,_0x48116b){return new Promise(function(_0x1a0328,_0x5197eb){var _0x50505d=new AWS['TranscribeService']({'accessKeyId':_0x32ad27,'secretAccessKey':_0x54d285,'region':_0x38de68});_0x50505d[_0x37ae('0x70')]({'TranscriptionJobName':_0x5e9d79,'LanguageCode':_0x25cb99,'Media':{'MediaFileUri':_0x48116b}},function(_0x3897e2,_0x1085c4){if(_0x3897e2){return _0x5197eb(_0x3897e2);}else{return _0x1a0328(_0x1085c4);}});});}function transcribe(_0x12c42c,_0x3a2df7,_0x30a8d,_0x5cade3,_0xf96981,_0xf248e3,_0xca325a){return new Promise(function(_0x27fa23,_0x2d55f0){var _0xbf3de9={};logger['info'](util['format'](_0x37ae('0x71'),_0x12c42c,_0xf96981));return uploadFile(_0x3a2df7,_0x30a8d,_0x5cade3,_0xf96981,path[_0x37ae('0x72')](_0xf248e3),fs[_0x37ae('0x73')](_0xf248e3))[_0x37ae('0x2a')](function(_0xc93f60){logger[_0x37ae('0x68')](util[_0x37ae('0x35')](_0x37ae('0x74'),_0x12c42c,_0xf96981,_0xc93f60[_0x37ae('0x75')]));_0xbf3de9[_0x37ae('0x76')]=_0xc93f60[_0x37ae('0x77')];_0xbf3de9[_0x37ae('0x78')]=_0xc93f60[_0x37ae('0x75')];logger['info'](util[_0x37ae('0x35')](_0x37ae('0x79'),_0x12c42c));return startTranscribe(_0x3a2df7,_0x30a8d,_0x5cade3,uuidv4(),_0xca325a,_0xc93f60[_0x37ae('0x75')]);})[_0x37ae('0x2a')](function(_0x1706c9){logger['info'](util[_0x37ae('0x35')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x12c42c,_0x1706c9['TranscriptionJob'][_0x37ae('0x7a')]));_0xbf3de9[_0x37ae('0x7b')]=_0x1706c9[_0x37ae('0x7c')][_0x37ae('0x7a')];_0xbf3de9[_0x37ae('0x7d')]=_0x1706c9[_0x37ae('0x7c')][_0x37ae('0x7e')];return _0x27fa23(_0xbf3de9);})[_0x37ae('0x4e')](function(_0xfd7b2a){return _0x2d55f0(_0xfd7b2a);});});}exports['runTranscribe']=function(_0x4a4f81,_0x5d2316,_0x3ccc20){var _0x48e4b7;var _0x516798;var _0x35e17f;var _0x199357=require(_0x37ae('0x7f'));return db['VoiceRecording'][_0x37ae('0x80')]({'where':{'id':_0x4a4f81[_0x37ae('0x49')]['id']}})[_0x37ae('0x2a')](function(_0x504958){if(_0x504958){var _0xaac32b=util['format'](_0x37ae('0x53'),_0x504958[_0x37ae('0x52')]);if(fs[_0x37ae('0x54')](_0xaac32b)){cypher=!![];return _0x199357[_0x37ae('0x64')](_0xaac32b,_0x504958[_0x37ae('0x52')],config[_0x37ae('0x55')][_0x37ae('0x56')])[_0x37ae('0x2a')](function(){return _0x504958;});}return _0x504958;}})['then'](function(_0x562923){if(!_0x562923){throw new db['Sequelize'][(_0x37ae('0x58'))](_0x37ae('0x81'));}_0x516798=_0x562923;return db['Setting']['findOne']({'where':{'id':0x1}});})[_0x37ae('0x2a')](handleEntityNotFound(_0x5d2316,null))['then'](function(_0x259257){if(_0x259257){_0x48e4b7=_0x259257;if(!_0x48e4b7[_0x37ae('0x82')]||!_0x48e4b7['transcribeAccountId']||!_0x48e4b7[_0x37ae('0x83')]||!_0x48e4b7[_0x37ae('0x84')]||!_0x48e4b7['bucket']){throw new db['Sequelize']['ValidationError']('Transcribe\x20not\x20configured');}if(_0x4a4f81[_0x37ae('0x4d')][_0x37ae('0x85')]&&(!_0x48e4b7['sentiment']||!_0x48e4b7[_0x37ae('0x86')]||!_0x48e4b7['sentimentRegion']||!_0x48e4b7[_0x37ae('0x84')]||!_0x48e4b7[_0x37ae('0x76')])){throw new db['Sequelize'][(_0x37ae('0x58'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x37ae('0x87')]['findOne']({'where':{'id':_0x48e4b7['transcribeAccountId']}});}})[_0x37ae('0x2a')](function(_0x1bccf7){if(!_0x1bccf7){throw new db['Sequelize'][(_0x37ae('0x58'))](_0x37ae('0x88'));}if(!_0x1bccf7[_0x37ae('0x89')]||!_0x1bccf7[_0x37ae('0x8a')]){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x35e17f=_0x1bccf7;return getBucketslist(_0x35e17f[_0x37ae('0x89')],_0x35e17f['data2'],_0x48e4b7['transcribeRegion']);})['then'](function(_0x604643){if(_0x604643&&_0x604643[_0x37ae('0x8b')]){var _0xb35828=_['find'](_0x604643[_0x37ae('0x8b')],function(_0x2135a5){return _0x2135a5[_0x37ae('0x8c')]===_0x48e4b7[_0x37ae('0x76')];});if(!_0xb35828){logger['info'](util[_0x37ae('0x35')](_0x37ae('0x8d'),_0x4a4f81['params']['id'],_0x48e4b7[_0x37ae('0x76')]));return createBucket(_0x35e17f[_0x37ae('0x89')],_0x35e17f[_0x37ae('0x8a')],_0x48e4b7['transcribeRegion'],_0x48e4b7[_0x37ae('0x76')]);}logger[_0x37ae('0x68')](util[_0x37ae('0x35')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x4a4f81[_0x37ae('0x49')]['id'],_0x48e4b7['bucket']));return;}})[_0x37ae('0x2a')](function(_0x1fc68c){if(_0x516798['transcribeStatus']===_0x37ae('0x8e')){return transcribe(_0x4a4f81[_0x37ae('0x49')]['id'],_0x35e17f[_0x37ae('0x89')],_0x35e17f['data2'],_0x48e4b7[_0x37ae('0x83')],_0x48e4b7['bucket'],_0x516798[_0x37ae('0x52')],_0x48e4b7[_0x37ae('0x84')]);}else{logger[_0x37ae('0x68')](util[_0x37ae('0x35')](_0x37ae('0x8f'),_0x4a4f81[_0x37ae('0x49')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})['then'](function(_0x3c34f7){if(_0x3c34f7){_0x3c34f7[_0x37ae('0x90')]=_0x4a4f81[_0x37ae('0x4d')][_0x37ae('0x85')];return _0x516798['updateAttributes'](_0x3c34f7);}})[_0x37ae('0x2a')](respondWithResult(_0x5d2316,null))['catch'](handleError(_0x5d2316,null));};function writeFile(_0x295d5b,_0x30fa35){return new Promise(function(_0x932c9f,_0x5105b3){fs[_0x37ae('0x91')](_0x30fa35,_0x295d5b,function(_0x47aa7c,_0x22999b){if(_0x47aa7c){return _0x5105b3(_0x47aa7c);}else{return _0x932c9f(_0x22999b);}});});}exports[_0x37ae('0x92')]=function(_0x5bbb29,_0x2a600e,_0x5a45bc){return db[_0x37ae('0x30')][_0x37ae('0x80')]({'where':{'id':_0x5bbb29[_0x37ae('0x49')]['id']}})[_0x37ae('0x2a')](handleEntityNotFound(_0x2a600e))[_0x37ae('0x2a')](function(_0x38e3f3){if(_0x38e3f3&&_0x38e3f3[_0x37ae('0x93')]){var _0x392af9=_0x38e3f3[_0x37ae('0x93')];var _0x1af174=config[_0x37ae('0x94')]+_0x37ae('0x95')+_0x38e3f3['id']+_0x37ae('0x96');if(fs['existsSync'](_0x1af174)){return _0x1af174;}return writeFile(_0x392af9,_0x1af174)[_0x37ae('0x2a')](function(){return _0x1af174;});}else{throw new db[(_0x37ae('0x57'))]['ValidationError'](_0x37ae('0x97'));}})[_0x37ae('0x2a')](function(_0x2e5e3b){return _0x2a600e[_0x37ae('0x50')](_0x2e5e3b);})[_0x37ae('0x4e')](handleError(_0x2a600e));};
\ No newline at end of file
+var _0x82f3=['uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','name','send','index','map','VoiceRecording','rawAttributes','fieldName','differenceBy','format','query','keys','filters','model','attributes','intersection','length','order','sort','where','pick','filter','merge','includeAll','findAll','catch','show','fields','include','options','find','create','body','describe','download','../../components/encryptor','type','params','value','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','filename','unlink','message','VoiceRecording\x20not\x20found','Not\x20found','downloads','sequelize','MD5','col','uniqueid','token','$and','push','extname','isNil','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','basename','readFileSync','bucket','Bucket','location','Location','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJobName','transcribeName','TranscriptionJob','transcribeStatus','runTranscribe','findOne','secrets','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','transcribeAccountId','Cloud\x20Provider\x20not\x20available','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','IN_PROGRESS','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','aws-sdk'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x82f3,0x1b9));var _0x382f=function(_0x19ce02,_0x92a2a9){_0x19ce02=_0x19ce02-0x0;var _0x122aeb=_0x82f3[_0x19ce02];return _0x122aeb;};'use strict';var emlformat=require(_0x382f('0x0'));var rimraf=require(_0x382f('0x1'));var zipdir=require(_0x382f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x382f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x382f('0x4'));var util=require(_0x382f('0x5'));var path=require(_0x382f('0x6'));var sox=require(_0x382f('0x7'));var csv=require(_0x382f('0x8'));var ejs=require(_0x382f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x382f('0xa'));var squel=require('squel');var crypto=require(_0x382f('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x382f('0xc'));var toCsv=require(_0x382f('0x8'));var querystring=require(_0x382f('0xd'));var Papa=require('papaparse');var AWS=require(_0x382f('0xe'));var uuidv4=require(_0x382f('0xf'));var Redis=require(_0x382f('0x10'));var authService=require(_0x382f('0x11'));var qs=require(_0x382f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x382f('0x13'));var logger=require(_0x382f('0x14'))(_0x382f('0x15'));var utils=require(_0x382f('0x16'));var config=require(_0x382f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x382f('0x18'))['db'];function respondWithStatusCode(_0x2467fc,_0x42442a){_0x42442a=_0x42442a||0xcc;return function(_0x5f1300){if(_0x5f1300){return _0x2467fc['sendStatus'](_0x42442a);}return _0x2467fc[_0x382f('0x19')](_0x42442a)[_0x382f('0x1a')]();};}function respondWithResult(_0x1b9c8f,_0x33655e){_0x33655e=_0x33655e||0xc8;return function(_0x467a9e){if(_0x467a9e){return _0x1b9c8f[_0x382f('0x19')](_0x33655e)['json'](_0x467a9e);}};}function respondWithFilteredResult(_0x2b239c,_0x4d6b11){return function(_0x596810){if(_0x596810){var _0x5d6d1d=typeof _0x4d6b11[_0x382f('0x1b')]==='undefined'&&typeof _0x4d6b11['limit']==='undefined';var _0x13a9db=_0x596810['count'];var _0x5a66b5=_0x5d6d1d?0x0:_0x4d6b11['offset'];var _0x2dd318=_0x5d6d1d?_0x596810[_0x382f('0x1c')]:_0x4d6b11[_0x382f('0x1b')]+_0x4d6b11[_0x382f('0x1d')];var _0x27e632;if(_0x2dd318>=_0x13a9db){_0x2dd318=_0x13a9db;_0x27e632=0xc8;}else{_0x27e632=0xce;}_0x2b239c[_0x382f('0x19')](_0x27e632);return _0x2b239c[_0x382f('0x1e')](_0x382f('0x1f'),_0x5a66b5+'-'+_0x2dd318+'/'+_0x13a9db)[_0x382f('0x20')](_0x596810);}return null;};}function patchUpdates(_0x433160){return function(_0x4d8274){try{jsonpatch[_0x382f('0x21')](_0x4d8274,_0x433160,!![]);}catch(_0x42cbb0){return BPromise[_0x382f('0x22')](_0x42cbb0);}return _0x4d8274[_0x382f('0x23')]();};}function saveUpdates(_0x27ceb2,_0x2065d1){return function(_0x5aee63){if(_0x5aee63){return _0x5aee63[_0x382f('0x24')](_0x27ceb2)[_0x382f('0x25')](function(_0x4277a2){return _0x4277a2;});}return null;};}function removeEntity(_0x121ee3,_0xdce62d){return function(_0x331fc1){if(_0x331fc1){return _0x331fc1[_0x382f('0x26')]()[_0x382f('0x25')](function(){_0x121ee3['status'](0xcc)[_0x382f('0x1a')]();});}};}function handleEntityNotFound(_0x221dfd,_0x4fc36f){return function(_0x832485){if(!_0x832485){_0x221dfd[_0x382f('0x27')](0x194);}return _0x832485;};}function handleError(_0x13bfb5,_0x46f966){_0x46f966=_0x46f966||0x1f4;return function(_0x1425c6){logger['error'](_0x1425c6['stack']);if(_0x1425c6[_0x382f('0x28')]){delete _0x1425c6[_0x382f('0x28')];}_0x13bfb5[_0x382f('0x19')](_0x46f966)[_0x382f('0x29')](_0x1425c6);};}exports[_0x382f('0x2a')]=function(_0xc69559,_0x42bbee){var _0x149801={},_0x1da038={},_0x171171={'count':0x0,'rows':[]};var _0x52355b=_[_0x382f('0x2b')](db[_0x382f('0x2c')][_0x382f('0x2d')],function(_0x25c0de){return{'name':_0x25c0de[_0x382f('0x2e')],'type':_0x25c0de['type']['key']};});_0x1da038['model']=_[_0x382f('0x2f')](_[_0x382f('0x2b')](_0x52355b,_0x382f('0x28')),[_0x382f('0x30')]);_0x1da038[_0x382f('0x31')]=_[_0x382f('0x32')](_0xc69559[_0x382f('0x31')]);_0x1da038[_0x382f('0x33')]=_['intersection'](_0x1da038[_0x382f('0x34')],_0x1da038['query']);_0x149801[_0x382f('0x35')]=_[_0x382f('0x36')](_0x1da038['model'],qs['fields'](_0xc69559[_0x382f('0x31')]['fields']));_0x149801[_0x382f('0x35')]=_0x149801[_0x382f('0x35')][_0x382f('0x37')]?_0x149801[_0x382f('0x35')]:_0x1da038[_0x382f('0x34')];if(!_0xc69559[_0x382f('0x31')]['hasOwnProperty']('nolimit')){_0x149801[_0x382f('0x1d')]=qs[_0x382f('0x1d')](_0xc69559[_0x382f('0x31')][_0x382f('0x1d')]);_0x149801[_0x382f('0x1b')]=qs[_0x382f('0x1b')](_0xc69559[_0x382f('0x31')][_0x382f('0x1b')]);}_0x149801[_0x382f('0x38')]=qs[_0x382f('0x39')](_0xc69559['query'][_0x382f('0x39')]);_0x149801[_0x382f('0x3a')]=qs[_0x382f('0x33')](_[_0x382f('0x3b')](_0xc69559[_0x382f('0x31')],_0x1da038['filters']),_0x52355b);if(_0xc69559[_0x382f('0x31')][_0x382f('0x3c')]){_0x149801[_0x382f('0x3a')]=_[_0x382f('0x3d')](_0x149801[_0x382f('0x3a')],{'$or':_[_0x382f('0x2b')](_0x52355b,function(_0x2ec2c2){if(_0x2ec2c2['type']!=='VIRTUAL'){var _0x40ff8e={};_0x40ff8e[_0x2ec2c2[_0x382f('0x28')]]={'$like':'%'+_0xc69559[_0x382f('0x31')][_0x382f('0x3c')]+'%'};return _0x40ff8e;}})});}_0x149801=_[_0x382f('0x3d')]({},_0x149801,_0xc69559['options']);var _0x3aa41c={'where':_0x149801[_0x382f('0x3a')]};return db['VoiceRecording']['count'](_0x3aa41c)['then'](function(_0x13e0bd){_0x171171[_0x382f('0x1c')]=_0x13e0bd;if(_0xc69559['query'][_0x382f('0x3e')]){_0x149801['include']=[{'all':!![]}];}return db[_0x382f('0x2c')][_0x382f('0x3f')](_0x149801);})[_0x382f('0x25')](function(_0x975ecf){_0x171171['rows']=_0x975ecf;return _0x171171;})[_0x382f('0x25')](respondWithFilteredResult(_0x42bbee,_0x149801))[_0x382f('0x40')](handleError(_0x42bbee,null));};exports[_0x382f('0x41')]=function(_0x38d05e,_0x27c561){var _0xb34ecc={'raw':![],'where':{'id':_0x38d05e['params']['id']}},_0x4d3554={};_0x4d3554[_0x382f('0x34')]=_[_0x382f('0x32')](db[_0x382f('0x2c')][_0x382f('0x2d')]);_0x4d3554[_0x382f('0x31')]=_[_0x382f('0x32')](_0x38d05e[_0x382f('0x31')]);_0x4d3554[_0x382f('0x33')]=_[_0x382f('0x36')](_0x4d3554[_0x382f('0x34')],_0x4d3554['query']);_0xb34ecc[_0x382f('0x35')]=_[_0x382f('0x36')](_0x4d3554[_0x382f('0x34')],qs[_0x382f('0x42')](_0x38d05e[_0x382f('0x31')][_0x382f('0x42')]));_0xb34ecc['attributes']=_0xb34ecc[_0x382f('0x35')][_0x382f('0x37')]?_0xb34ecc[_0x382f('0x35')]:_0x4d3554[_0x382f('0x34')];if(_0x38d05e[_0x382f('0x31')][_0x382f('0x3e')]){_0xb34ecc[_0x382f('0x43')]=[{'all':!![]}];}_0xb34ecc=_[_0x382f('0x3d')]({},_0xb34ecc,_0x38d05e[_0x382f('0x44')]);return db[_0x382f('0x2c')][_0x382f('0x45')](_0xb34ecc)[_0x382f('0x25')](handleEntityNotFound(_0x27c561,null))['then'](respondWithResult(_0x27c561,null))[_0x382f('0x40')](handleError(_0x27c561,null));};exports[_0x382f('0x46')]=function(_0x14481b,_0x4f7710){return db['VoiceRecording'][_0x382f('0x46')](_0x14481b[_0x382f('0x47')],{})['then'](respondWithResult(_0x4f7710,0xc9))[_0x382f('0x40')](handleError(_0x4f7710,null));};exports[_0x382f('0x24')]=function(_0x1b9f35,_0x569a39){if(_0x1b9f35[_0x382f('0x47')]['id']){delete _0x1b9f35[_0x382f('0x47')]['id'];}return db['VoiceRecording'][_0x382f('0x45')]({'where':{'id':_0x1b9f35['params']['id']}})[_0x382f('0x25')](handleEntityNotFound(_0x569a39,null))['then'](saveUpdates(_0x1b9f35[_0x382f('0x47')],null))[_0x382f('0x25')](respondWithResult(_0x569a39,null))['catch'](handleError(_0x569a39,null));};exports[_0x382f('0x48')]=function(_0x2403e1,_0x24e743){return db[_0x382f('0x2c')]['describe']()[_0x382f('0x25')](respondWithResult(_0x24e743,null))['catch'](handleError(_0x24e743,null));};exports[_0x382f('0x49')]=function(_0x2e8e57,_0xed3dbc,_0xfa3f04){var _0x262629=require(_0x382f('0x4a'));var _0x27e6a3=![];var _0x49aa21={};if(_0x2e8e57['query'][_0x382f('0x4b')]&&_0x2e8e57[_0x382f('0x31')]['type']==='uniqueid'){_0x49aa21['uniqueid']=_0x2e8e57['params']['id'];}else{_0x49aa21['id']=_0x2e8e57[_0x382f('0x4c')]['id'];}return db[_0x382f('0x2c')][_0x382f('0x45')]({'where':_0x49aa21,'attributes':['id','value'],'raw':!![]})[_0x382f('0x25')](handleEntityNotFound(_0xed3dbc,null))[_0x382f('0x25')](function(_0x4a1155){if(_0x4a1155){var _0x3e920a=_0x4a1155[_0x382f('0x4d')];var _0x4c9816=util[_0x382f('0x30')](_0x382f('0x4e'),_0x3e920a);if(fs[_0x382f('0x4f')](_0x4c9816)){_0x27e6a3=!![];return _0x262629[_0x382f('0x50')](_0x4c9816,_0x3e920a,config['secrets'][_0x382f('0x51')])[_0x382f('0x25')](function(){return _0x4a1155;});}return _0x4a1155;}})[_0x382f('0x25')](function(_0x2cc3f0){if(_0x2cc3f0){var _0x46f1f1=_0x2cc3f0['value'];if(!fs[_0x382f('0x4f')](_0x46f1f1)){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))]('VoiceRecording\x20not\x20found');}if(_0x2cc3f0['filename']){return _0xed3dbc[_0x382f('0x49')](_0x46f1f1,_0x2cc3f0[_0x382f('0x54')]+path['extname'](_0x46f1f1),function(){if(_0x27e6a3){fs[_0x382f('0x55')](_0x46f1f1);}});}else{return _0xed3dbc['download'](_0x46f1f1,function(_0x2e92d6){if(_0x27e6a3){fs[_0x382f('0x55')](_0x46f1f1);}});}}})[_0x382f('0x40')](function(_0x2a0313){if(_0x2a0313[_0x382f('0x56')]===_0x382f('0x57')){_0xed3dbc['status'](0x194)[_0x382f('0x29')](_0x382f('0x58'));}else{return handleError(_0xed3dbc,null);}});};exports[_0x382f('0x59')]=function(_0x275ac6,_0x4102ea,_0x407ede){var _0x595cfe=require(_0x382f('0x4a'));var _0x21e555=![];var _0x467c06={'$and':[db[_0x382f('0x5a')][_0x382f('0x3a')](db[_0x382f('0x5a')]['fn'](_0x382f('0x5b'),db['sequelize'][_0x382f('0x5c')](_0x382f('0x5d'))),_0x275ac6[_0x382f('0x31')][_0x382f('0x5e')])]};if(_0x275ac6[_0x382f('0x31')][_0x382f('0x4b')]&&_0x275ac6[_0x382f('0x31')][_0x382f('0x4b')]===_0x382f('0x5d')){_0x467c06[_0x382f('0x5f')][_0x382f('0x60')]({'uniqueid':_0x275ac6[_0x382f('0x4c')]['id']});}else{_0x467c06['$and']['push']({'id':_0x275ac6[_0x382f('0x4c')]['id']});}return db['VoiceRecording'][_0x382f('0x45')]({'where':_0x467c06,'attributes':['id',_0x382f('0x4d')],'raw':!![]})[_0x382f('0x25')](handleEntityNotFound(_0x4102ea,null))['then'](function(_0xc93bea){if(_0xc93bea){var _0x17a53e=util[_0x382f('0x30')]('%s.cypher',_0xc93bea[_0x382f('0x4d')]);if(fs[_0x382f('0x4f')](_0x17a53e)){_0x21e555=!![];return _0x595cfe[_0x382f('0x50')](_0x17a53e,_0xc93bea[_0x382f('0x4d')],config['secrets']['recording'])[_0x382f('0x25')](function(){return _0xc93bea;});}return _0xc93bea;}})[_0x382f('0x25')](function(_0x3e0410){if(_0x3e0410){if(!fs['existsSync'](_0x3e0410['value'])){throw new db['Sequelize']['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x3e0410[_0x382f('0x54')]){return _0x4102ea['download'](_0x3e0410[_0x382f('0x4d')],_0x3e0410[_0x382f('0x54')]+path[_0x382f('0x61')](_0x3e0410['value']),function(){if(_0x21e555){fs['unlink'](_0x3e0410[_0x382f('0x4d')]);}});}else{return _0x4102ea[_0x382f('0x49')](_0x3e0410[_0x382f('0x4d')],function(_0x50ce3a){if(_0x21e555){fs[_0x382f('0x55')](_0x3e0410[_0x382f('0x4d')]);}});}}})[_0x382f('0x40')](handleError(_0x4102ea,null));};exports[_0x382f('0x26')]=function(_0x1c760c,_0x18c3c6){return db[_0x382f('0x2c')][_0x382f('0x45')]({'where':{'id':_0x1c760c[_0x382f('0x4c')]['id']}})[_0x382f('0x25')](function(_0x4f5968){if(_[_0x382f('0x62')](_0x4f5968)){throw new ReferenceError('Entity\x20not\x20found');}return _0x4f5968;})[_0x382f('0x25')](function(_0x538138){var _0x36352c=_0x538138['value'];logger[_0x382f('0x63')]('cancellazione\x20fisica\x20documento\x20%s',_0x36352c);if(!_['isNil'](_0x538138[_0x382f('0x4d')])&&fs[_0x382f('0x4f')](_0x36352c)){logger[_0x382f('0x63')](_0x382f('0x64')+_0x36352c+_0x382f('0x65'));fs[_0x382f('0x66')](_0x36352c);}_0x36352c=_0x36352c+_0x382f('0x67');if(!_[_0x382f('0x62')](_0x538138[_0x382f('0x4d')])&&fs['existsSync'](_0x36352c)){logger[_0x382f('0x63')](_0x382f('0x64')+_0x36352c+_0x382f('0x65'));fs[_0x382f('0x66')](_0x36352c);}return _0x538138;})[_0x382f('0x25')](function(_0x5eb86d){if(!_0x5eb86d)throw new InternalError();return _0x5eb86d[_0x382f('0x26')]();})[_0x382f('0x25')](function(){_0x18c3c6[_0x382f('0x19')](0xcc)['end']();})[_0x382f('0x40')](handleError(_0x18c3c6,null));};function getBucketslist(_0x2c17b7,_0x1a3ed0,_0x2bc4ac){return new Promise(function(_0x24f688,_0x2979e9){var _0x378706=new AWS['S3']({'accessKeyId':_0x1a3ed0,'secretAccessKey':_0x2c17b7,'region':_0x2bc4ac});_0x378706[_0x382f('0x68')]({},function(_0x1c5509,_0x32253f){if(_0x1c5509){return _0x2979e9(_0x1c5509);}else{return _0x24f688(_0x32253f);}});});}function createBucket(_0x2f0054,_0x452c2e,_0x20b166,_0x38e4ce){return new Promise(function(_0x39fd46,_0x506507){var _0x12c7ff=new AWS['S3']({'accessKeyId':_0x452c2e,'secretAccessKey':_0x2f0054,'region':_0x20b166});_0x12c7ff[_0x382f('0x69')]({'Bucket':_0x38e4ce},function(_0x3cc7f0,_0x24f5dc){if(_0x3cc7f0){return _0x506507(_0x3cc7f0);}else{return _0x39fd46(_0x24f5dc);}});});}function uploadFile(_0x3c74fc,_0x24fefa,_0x1072bc,_0x5d6c1a,_0x2ae782,_0xbfdc30){return new Promise(function(_0x220e6d,_0x2273cc){var _0x113eb8=new AWS['S3']({'accessKeyId':_0x24fefa,'secretAccessKey':_0x3c74fc,'region':_0x1072bc});_0x113eb8[_0x382f('0x6a')]({'Bucket':_0x5d6c1a,'Key':_0x2ae782,'Body':_0xbfdc30},function(_0x231be3,_0x184379){if(_0x231be3){return _0x2273cc(_0x231be3);}else{return _0x220e6d(_0x184379);}});});}function startTranscribe(_0x535248,_0x53af52,_0x5d883c,_0x1ed36a,_0x4e112a,_0x4041d8){return new Promise(function(_0x273592,_0x1f2d25){var _0xe60140=new AWS[(_0x382f('0x6b'))]({'accessKeyId':_0x53af52,'secretAccessKey':_0x535248,'region':_0x5d883c});_0xe60140[_0x382f('0x6c')]({'TranscriptionJobName':_0x1ed36a,'LanguageCode':_0x4e112a,'Media':{'MediaFileUri':_0x4041d8}},function(_0x222c22,_0x178ac1){if(_0x222c22){return _0x1f2d25(_0x222c22);}else{return _0x273592(_0x178ac1);}});});}function transcribe(_0x5435ed,_0x2b612d,_0x42ab75,_0x1ff631,_0x5d10ec,_0x13ac1e,_0x3d41d1){return new Promise(function(_0x129c55,_0x382639){var _0x21a56f={};logger[_0x382f('0x63')](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x5435ed,_0x5d10ec));return uploadFile(_0x2b612d,_0x42ab75,_0x1ff631,_0x5d10ec,path[_0x382f('0x6d')](_0x13ac1e),fs[_0x382f('0x6e')](_0x13ac1e))[_0x382f('0x25')](function(_0x3268fc){logger[_0x382f('0x63')](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)',_0x5435ed,_0x5d10ec,_0x3268fc['Location']));_0x21a56f[_0x382f('0x6f')]=_0x3268fc[_0x382f('0x70')];_0x21a56f[_0x382f('0x71')]=_0x3268fc[_0x382f('0x72')];logger['info'](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request',_0x5435ed));return startTranscribe(_0x2b612d,_0x42ab75,_0x1ff631,uuidv4(),_0x3d41d1,_0x3268fc[_0x382f('0x72')]);})[_0x382f('0x25')](function(_0x2cc27c){logger[_0x382f('0x63')](util[_0x382f('0x30')](_0x382f('0x73'),_0x5435ed,_0x2cc27c['TranscriptionJob'][_0x382f('0x74')]));_0x21a56f[_0x382f('0x75')]=_0x2cc27c[_0x382f('0x76')]['TranscriptionJobName'];_0x21a56f[_0x382f('0x77')]=_0x2cc27c['TranscriptionJob']['TranscriptionJobStatus'];return _0x129c55(_0x21a56f);})[_0x382f('0x40')](function(_0x588d3f){return _0x382639(_0x588d3f);});});}exports[_0x382f('0x78')]=function(_0x3b89cb,_0x58a1dd,_0x12b7fd){var _0x387dc9;var _0x244f05;var _0x353b52;var _0x3d62d8=require('../../components/encryptor');return db[_0x382f('0x2c')][_0x382f('0x79')]({'where':{'id':_0x3b89cb[_0x382f('0x4c')]['id']}})[_0x382f('0x25')](function(_0x24d1c1){if(_0x24d1c1){var _0xe97ba1=util[_0x382f('0x30')]('%s.cypher',_0x24d1c1[_0x382f('0x4d')]);if(fs[_0x382f('0x4f')](_0xe97ba1)){cypher=!![];return _0x3d62d8[_0x382f('0x50')](_0xe97ba1,_0x24d1c1[_0x382f('0x4d')],config[_0x382f('0x7a')]['recording'])[_0x382f('0x25')](function(){return _0x24d1c1;});}return _0x24d1c1;}})[_0x382f('0x25')](function(_0x51a1de){if(!_0x51a1de){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x7b'));}_0x244f05=_0x51a1de;return db[_0x382f('0x7c')][_0x382f('0x79')]({'where':{'id':0x1}});})[_0x382f('0x25')](handleEntityNotFound(_0x58a1dd,null))['then'](function(_0x5f3733){if(_0x5f3733){_0x387dc9=_0x5f3733;if(!_0x387dc9[_0x382f('0x7d')]||!_0x387dc9['transcribeAccountId']||!_0x387dc9[_0x382f('0x7e')]||!_0x387dc9[_0x382f('0x7f')]||!_0x387dc9[_0x382f('0x6f')]){throw new db['Sequelize'][(_0x382f('0x53'))](_0x382f('0x80'));}if(_0x3b89cb[_0x382f('0x47')][_0x382f('0x81')]&&(!_0x387dc9[_0x382f('0x82')]||!_0x387dc9[_0x382f('0x83')]||!_0x387dc9[_0x382f('0x84')]||!_0x387dc9[_0x382f('0x7f')]||!_0x387dc9[_0x382f('0x6f')])){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x85'));}return db[_0x382f('0x86')][_0x382f('0x79')]({'where':{'id':_0x387dc9[_0x382f('0x87')]}});}})['then'](function(_0x2015c3){if(!_0x2015c3){throw new db['Sequelize'][(_0x382f('0x53'))](_0x382f('0x88'));}if(!_0x2015c3[_0x382f('0x89')]||!_0x2015c3[_0x382f('0x8a')]){throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x8b'));}_0x353b52=_0x2015c3;return getBucketslist(_0x353b52[_0x382f('0x89')],_0x353b52[_0x382f('0x8a')],_0x387dc9[_0x382f('0x7e')]);})['then'](function(_0x1d21fe){if(_0x1d21fe&&_0x1d21fe[_0x382f('0x8c')]){var _0x3ac94c=_[_0x382f('0x45')](_0x1d21fe[_0x382f('0x8c')],function(_0x31e89c){return _0x31e89c['Name']===_0x387dc9[_0x382f('0x6f')];});if(!_0x3ac94c){logger[_0x382f('0x63')](util[_0x382f('0x30')](_0x382f('0x8d'),_0x3b89cb[_0x382f('0x4c')]['id'],_0x387dc9[_0x382f('0x6f')]));return createBucket(_0x353b52[_0x382f('0x89')],_0x353b52[_0x382f('0x8a')],_0x387dc9[_0x382f('0x7e')],_0x387dc9[_0x382f('0x6f')]);}logger['info'](util[_0x382f('0x30')](_0x382f('0x8e'),_0x3b89cb[_0x382f('0x4c')]['id'],_0x387dc9['bucket']));return;}})['then'](function(_0x1360cf){if(_0x244f05[_0x382f('0x77')]===_0x382f('0x8f')){return transcribe(_0x3b89cb[_0x382f('0x4c')]['id'],_0x353b52['data1'],_0x353b52[_0x382f('0x8a')],_0x387dc9[_0x382f('0x7e')],_0x387dc9[_0x382f('0x6f')],_0x244f05[_0x382f('0x4d')],_0x387dc9[_0x382f('0x7f')]);}else{logger['info'](util[_0x382f('0x30')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x3b89cb[_0x382f('0x4c')]['id']));return{'transcribeStatus':_0x382f('0x90')};}})[_0x382f('0x25')](function(_0x409a73){if(_0x409a73){_0x409a73['tempSentiment']=_0x3b89cb[_0x382f('0x47')][_0x382f('0x81')];return _0x244f05[_0x382f('0x91')](_0x409a73);}})[_0x382f('0x25')](respondWithResult(_0x58a1dd,null))[_0x382f('0x40')](handleError(_0x58a1dd,null));};function writeFile(_0x2c3c5c,_0x44cce4){return new Promise(function(_0x4a717d,_0x3f6dbd){fs[_0x382f('0x92')](_0x44cce4,_0x2c3c5c,function(_0x1ba5c1,_0x209b99){if(_0x1ba5c1){return _0x3f6dbd(_0x1ba5c1);}else{return _0x4a717d(_0x209b99);}});});}exports[_0x382f('0x93')]=function(_0x3cc99d,_0x51c030,_0x540efe){return db[_0x382f('0x2c')][_0x382f('0x79')]({'where':{'id':_0x3cc99d[_0x382f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x51c030))[_0x382f('0x25')](function(_0x261581){if(_0x261581&&_0x261581['fileText']){var _0x59ecb7=_0x261581[_0x382f('0x94')];var _0xba4619=config[_0x382f('0x95')]+_0x382f('0x96')+_0x261581['id']+'.txt';if(fs[_0x382f('0x4f')](_0xba4619)){return _0xba4619;}return writeFile(_0x59ecb7,_0xba4619)['then'](function(){return _0xba4619;});}else{throw new db[(_0x382f('0x52'))][(_0x382f('0x53'))](_0x382f('0x97'));}})[_0x382f('0x25')](function(_0x447440){return _0x51c030[_0x382f('0x49')](_0x447440);})['catch'](handleError(_0x51c030));};
\ No newline at end of file
index 5c13584..0bb70f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa533=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceRecording.attributes','exports','define','uniqueid','lodash'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa533,0x1c6));var _0x3a53=function(_0x4013da,_0xeaf6dc){_0x4013da=_0x4013da-0x0;var _0x434e19=_0xa533[_0x4013da];return _0x434e19;};'use strict';var _=require(_0x3a53('0x0'));var util=require(_0x3a53('0x1'));var logger=require(_0x3a53('0x2'))(_0x3a53('0x3'));var moment=require(_0x3a53('0x4'));var BPromise=require(_0x3a53('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3a53('0x6'));var rimraf=require(_0x3a53('0x7'));var config=require(_0x3a53('0x8'));var attributes=require(_0x3a53('0x9'));module[_0x3a53('0xa')]=function(_0x5f6f8f,_0x3eb254){return _0x5f6f8f[_0x3a53('0xb')]('VoiceRecording',attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0x3a53('0xc'),'fields':[_0x3a53('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc20=['uniqueid','lodash','api','bluebird','request-promise','path','rimraf','./voiceRecording.attributes','exports','define','VoiceRecording','voice_recordings'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xfc20,0x12d));var _0x0fc2=function(_0x57aae5,_0x4b0939){_0x57aae5=_0x57aae5-0x0;var _0x33225e=_0xfc20[_0x57aae5];return _0x33225e;};'use strict';var _=require(_0x0fc2('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x0fc2('0x1'));var moment=require('moment');var BPromise=require(_0x0fc2('0x2'));var rp=require(_0x0fc2('0x3'));var fs=require('fs');var path=require(_0x0fc2('0x4'));var rimraf=require(_0x0fc2('0x5'));var config=require('../../config/environment');var attributes=require(_0x0fc2('0x6'));module[_0x0fc2('0x7')]=function(_0x5f326d,_0x8c459a){return _0x5f326d[_0x0fc2('0x8')](_0x0fc2('0x9'),attributes,{'tableName':_0x0fc2('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0fc2('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 526579a..0ee62a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['CreateVoiceRecording','Setting','findOne','callRecordingEncryption','create','existsSync','value','format','%s.cypher','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','VoiceRecording,\x20%s,\x20%s','info','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','limit','catch'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x5fdc,0x127));var _0xc5fd=function(_0x2552d4,_0x1b0e8b){_0x2552d4=_0x2552d4-0x0;var _0x58dcc0=_0x5fdc[_0x2552d4];return _0x58dcc0;};'use strict';var _=require(_0xc5fd('0x0'));var util=require(_0xc5fd('0x1'));var moment=require(_0xc5fd('0x2'));var BPromise=require(_0xc5fd('0x3'));var rs=require(_0xc5fd('0x4'));var fs=require('fs');var Redis=require(_0xc5fd('0x5'));var db=require(_0xc5fd('0x6'))['db'];var utils=require(_0xc5fd('0x7'));var logger=require(_0xc5fd('0x8'))(_0xc5fd('0x9'));var config=require(_0xc5fd('0xa'));var jayson=require(_0xc5fd('0xb'));var client=jayson[_0xc5fd('0xc')][_0xc5fd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x15ffe7,_0x5a2eb4,_0x5d86e5){return new BPromise(function(_0x493389,_0x224801){return client[_0xc5fd('0xe')](_0x15ffe7,_0x5d86e5)[_0xc5fd('0xf')](function(_0x45c91f){logger['info']('VoiceRecording,\x20%s,\x20%s',_0x5a2eb4,_0xc5fd('0x10'));logger[_0xc5fd('0x11')](_0xc5fd('0x12'),_0x5a2eb4,_0xc5fd('0x10'),JSON[_0xc5fd('0x13')](_0x45c91f));if(_0x45c91f[_0xc5fd('0x14')]){if(_0x45c91f['error'][_0xc5fd('0x15')]===0x1f4){logger['error']('VoiceRecording,\x20%s,\x20%s',_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x224801(_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);}logger[_0xc5fd('0x14')](_0xc5fd('0x17'),_0x5a2eb4,_0x45c91f[_0xc5fd('0x14')][_0xc5fd('0x16')]);return _0x493389(_0x45c91f['error'][_0xc5fd('0x16')]);}else{logger[_0xc5fd('0x18')](_0xc5fd('0x17'),_0x5a2eb4,_0xc5fd('0x10'));_0x493389(_0x45c91f['result']['message']);}})['catch'](function(_0x5529b3){logger['error'](_0xc5fd('0x17'),_0x5a2eb4,_0x5529b3);_0x224801(_0x5529b3);});});}exports[_0xc5fd('0x19')]=function(_0x27f611){var _0xd0a9f1=this;return new Promise(function(_0x2ee392,_0x3f981f){return db[_0xc5fd('0x1a')]['update'](_0x27f611[_0xc5fd('0x1b')],{'raw':_0x27f611[_0xc5fd('0x1c')]?_0x27f611[_0xc5fd('0x1c')][_0xc5fd('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x27f611[_0xc5fd('0x1c')]?_0x27f611['options'][_0xc5fd('0x1e')]||null:null,'attributes':_0x27f611[_0xc5fd('0x1c')]?_0x27f611[_0xc5fd('0x1c')][_0xc5fd('0x1f')]||null:null,'limit':_0x27f611['options']?_0x27f611['options'][_0xc5fd('0x20')]||null:null})[_0xc5fd('0xf')](function(_0x3d7211){logger[_0xc5fd('0x18')](_0xc5fd('0x19'),_0x27f611);logger[_0xc5fd('0x11')]('UpdateVoiceRecording',_0x27f611,JSON[_0xc5fd('0x13')](_0x3d7211));_0x2ee392(_0x3d7211);})[_0xc5fd('0x21')](function(_0x1a5174){logger[_0xc5fd('0x14')](_0xc5fd('0x19'),_0x1a5174[_0xc5fd('0x16')],_0x27f611);_0x3f981f(_0xd0a9f1[_0xc5fd('0x14')](0x1f4,_0x1a5174['message']));});});};exports[_0xc5fd('0x22')]=function(_0x48cd1d){var _0x2ee700=this;return new Promise(function(_0x231368,_0x44681d){var _0x2bee22=require('../../components/encryptor');var _0x176313;return db[_0xc5fd('0x23')][_0xc5fd('0x24')]({'attributes':['id',_0xc5fd('0x25')],'where':{'id':0x1},'raw':!![]})[_0xc5fd('0xf')](function(_0x209975){_0x176313=_0x209975;return db['VoiceRecording'][_0xc5fd('0x26')](_0x48cd1d['body']);})['then'](function(_0x12a962){if(_0x176313[_0xc5fd('0x25')]&&fs[_0xc5fd('0x27')](_0x12a962[_0xc5fd('0x28')])){var _0x7693c4=util[_0xc5fd('0x29')](_0xc5fd('0x2a'),_0x12a962[_0xc5fd('0x28')]);return _0x2bee22['encryptFile'](_0x12a962[_0xc5fd('0x28')],_0x7693c4,config[_0xc5fd('0x2b')][_0xc5fd('0x2c')])[_0xc5fd('0xf')](function(){fs[_0xc5fd('0x2d')](_0x12a962[_0xc5fd('0x28')]);logger[_0xc5fd('0x18')](_0xc5fd('0x2e'));return _0x12a962;});}return _0x12a962;})[_0xc5fd('0xf')](function(_0x466aa1){logger[_0xc5fd('0x18')](_0xc5fd('0x22'),_0x48cd1d);logger['debug'](_0xc5fd('0x22'),_0x48cd1d,JSON[_0xc5fd('0x13')](_0x466aa1));_0x231368(_0x466aa1);})[_0xc5fd('0x21')](function(_0x1fa329){logger[_0xc5fd('0x14')](_0xc5fd('0x22'),_0x1fa329[_0xc5fd('0x16')],_0x48cd1d);_0x44681d(_0x2ee700[_0xc5fd('0x14')](0x1f4,_0x1fa329[_0xc5fd('0x16')]));});});};
\ No newline at end of file
+var _0xcf2f=['request','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','UpdateVoiceRecording','VoiceRecording','update','options','where','attributes','limit','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','existsSync','value','format','%s.cypher','encryptFile','recording','then','unlink','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x46c3fd,_0x5df411){var _0x15c233=function(_0x50a24a){while(--_0x50a24a){_0x46c3fd['push'](_0x46c3fd['shift']());}};_0x15c233(++_0x5df411);}(_0xcf2f,0xa7));var _0xfcf2=function(_0xb82875,_0xa454ab){_0xb82875=_0xb82875-0x0;var _0x3431ff=_0xcf2f[_0xb82875];return _0x3431ff;};'use strict';var _=require(_0xfcf2('0x0'));var util=require(_0xfcf2('0x1'));var moment=require(_0xfcf2('0x2'));var BPromise=require(_0xfcf2('0x3'));var rs=require(_0xfcf2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcf2('0x5'))['db'];var utils=require(_0xfcf2('0x6'));var logger=require(_0xfcf2('0x7'))(_0xfcf2('0x8'));var config=require(_0xfcf2('0x9'));var jayson=require(_0xfcf2('0xa'));var client=jayson[_0xfcf2('0xb')][_0xfcf2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x41d4bd,_0x157f48,_0x16b6b2){return new BPromise(function(_0x34f444,_0xb4c510){return client[_0xfcf2('0xd')](_0x41d4bd,_0x16b6b2)['then'](function(_0x575f33){logger['info'](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));logger['debug'](_0xfcf2('0x10'),_0x157f48,_0xfcf2('0xf'),JSON[_0xfcf2('0x11')](_0x575f33));if(_0x575f33[_0xfcf2('0x12')]){if(_0x575f33['error']['code']===0x1f4){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x575f33[_0xfcf2('0x12')][_0xfcf2('0x13')]);return _0xb4c510(_0x575f33['error'][_0xfcf2('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x157f48,_0x575f33['error'][_0xfcf2('0x13')]);return _0x34f444(_0x575f33['error'][_0xfcf2('0x13')]);}else{logger[_0xfcf2('0x14')](_0xfcf2('0xe'),_0x157f48,_0xfcf2('0xf'));_0x34f444(_0x575f33[_0xfcf2('0x15')][_0xfcf2('0x13')]);}})[_0xfcf2('0x16')](function(_0x4d64ce){logger[_0xfcf2('0x12')](_0xfcf2('0xe'),_0x157f48,_0x4d64ce);_0xb4c510(_0x4d64ce);});});}exports[_0xfcf2('0x17')]=function(_0x581d78){var _0xd87472=this;return new Promise(function(_0x1b3c89,_0x33eaa7){return db[_0xfcf2('0x18')][_0xfcf2('0x19')](_0x581d78['body'],{'raw':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1b')]||null:null,'attributes':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1c')]||null:null,'limit':_0x581d78[_0xfcf2('0x1a')]?_0x581d78[_0xfcf2('0x1a')][_0xfcf2('0x1d')]||null:null})['then'](function(_0x3790ed){logger[_0xfcf2('0x14')](_0xfcf2('0x17'),_0x581d78);logger['debug'](_0xfcf2('0x17'),_0x581d78,JSON[_0xfcf2('0x11')](_0x3790ed));_0x1b3c89(_0x3790ed);})['catch'](function(_0x3c3774){logger[_0xfcf2('0x12')]('UpdateVoiceRecording',_0x3c3774[_0xfcf2('0x13')],_0x581d78);_0x33eaa7(_0xd87472[_0xfcf2('0x12')](0x1f4,_0x3c3774[_0xfcf2('0x13')]));});});};exports[_0xfcf2('0x1e')]=function(_0x5bb384){var _0x1deca3=this;return new Promise(function(_0x448222,_0x2a9d64){var _0x3779ee=require(_0xfcf2('0x1f'));var _0x2b1d60;return db[_0xfcf2('0x20')][_0xfcf2('0x21')]({'attributes':['id',_0xfcf2('0x22')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x4c2935){_0x2b1d60=_0x4c2935;return db[_0xfcf2('0x18')][_0xfcf2('0x23')](_0x5bb384[_0xfcf2('0x24')]);})['then'](function(_0x560898){if(_0x2b1d60['callRecordingEncryption']&&fs[_0xfcf2('0x25')](_0x560898[_0xfcf2('0x26')])){var _0x40c1ae=util[_0xfcf2('0x27')](_0xfcf2('0x28'),_0x560898[_0xfcf2('0x26')]);return _0x3779ee[_0xfcf2('0x29')](_0x560898['value'],_0x40c1ae,config['secrets'][_0xfcf2('0x2a')])[_0xfcf2('0x2b')](function(){fs[_0xfcf2('0x2c')](_0x560898[_0xfcf2('0x26')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x560898;});}return _0x560898;})[_0xfcf2('0x2b')](function(_0x5310e6){logger[_0xfcf2('0x14')](_0xfcf2('0x1e'),_0x5bb384);logger['debug'](_0xfcf2('0x1e'),_0x5bb384,JSON[_0xfcf2('0x11')](_0x5310e6));_0x448222(_0x5310e6);})[_0xfcf2('0x16')](function(_0x4046c6){logger[_0xfcf2('0x12')](_0xfcf2('0x1e'),_0x4046c6[_0xfcf2('0x13')],_0x5bb384);_0x2a9d64(_0x1deca3['error'](0x1f4,_0x4046c6[_0xfcf2('0x13')]));});});};
\ No newline at end of file
index 2434b30..498706d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa072=['update','delete','destroy','exports','multer','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','show','post','create','put','/:id'];(function(_0x14f2dc,_0x53b045){var _0x2510e4=function(_0x19a140){while(--_0x19a140){_0x14f2dc['push'](_0x14f2dc['shift']());}};_0x2510e4(++_0x53b045);}(_0xa072,0x10e));var _0x2a07=function(_0x25e2bc,_0x27d1ef){_0x25e2bc=_0x25e2bc-0x0;var _0x5152d3=_0xa072[_0x25e2bc];return _0x5152d3;};'use strict';var multer=require(_0x2a07('0x0'));var util=require('util');var path=require(_0x2a07('0x1'));var timeout=require(_0x2a07('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2a07('0x3'));var interaction=require(_0x2a07('0x4'));var config=require('../../config/environment');var controller=require(_0x2a07('0x5'));router[_0x2a07('0x6')]('/',auth[_0x2a07('0x7')](),controller[_0x2a07('0x8')]);router['get'](_0x2a07('0x9'),auth[_0x2a07('0x7')](),controller['describe']);router['get']('/:id',auth[_0x2a07('0x7')](),controller[_0x2a07('0xa')]);router[_0x2a07('0xb')]('/',auth['isAuthenticated'](),controller[_0x2a07('0xc')]);router[_0x2a07('0xd')](_0x2a07('0xe'),auth[_0x2a07('0x7')](),controller[_0x2a07('0xf')]);router[_0x2a07('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x2a07('0x11')]);module[_0x2a07('0x12')]=router;
\ No newline at end of file
+var _0xcdf5=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceTransferReport.controller','get','isAuthenticated','index','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x3d12b6,_0x25827f){var _0x2225c9=function(_0x3b5add){while(--_0x3b5add){_0x3d12b6['push'](_0x3d12b6['shift']());}};_0x2225c9(++_0x25827f);}(_0xcdf5,0xc5));var _0x5cdf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xcdf5[_0x432682];return _0x463d05;};'use strict';var multer=require(_0x5cdf('0x0'));var util=require(_0x5cdf('0x1'));var path=require(_0x5cdf('0x2'));var timeout=require('connect-timeout');var express=require(_0x5cdf('0x3'));var router=express[_0x5cdf('0x4')]();var fs_extra=require(_0x5cdf('0x5'));var auth=require(_0x5cdf('0x6'));var interaction=require(_0x5cdf('0x7'));var config=require('../../config/environment');var controller=require(_0x5cdf('0x8'));router[_0x5cdf('0x9')]('/',auth[_0x5cdf('0xa')](),controller[_0x5cdf('0xb')]);router[_0x5cdf('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x5cdf('0xc')]);router['get']('/:id',auth[_0x5cdf('0xa')](),controller[_0x5cdf('0xd')]);router[_0x5cdf('0xe')]('/',auth[_0x5cdf('0xa')](),controller[_0x5cdf('0xf')]);router[_0x5cdf('0x10')](_0x5cdf('0x11'),auth['isAuthenticated'](),controller[_0x5cdf('0x12')]);router[_0x5cdf('0x13')](_0x5cdf('0x11'),auth[_0x5cdf('0xa')](),controller[_0x5cdf('0x14')]);module[_0x5cdf('0x15')]=router;
\ No newline at end of file
index ddd7bb5..8d8cfb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['ENUM','Yes','sequelize','moment','blind','attended','STRING'];(function(_0x7285e3,_0x2402a7){var _0x523d9d=function(_0x318384){while(--_0x318384){_0x7285e3['push'](_0x7285e3['shift']());}};_0x523d9d(++_0x2402a7);}(_0x705f,0x1b4));var _0xf705=function(_0x3f0752,_0x49c7ce){_0x3f0752=_0x3f0752-0x0;var _0x3d2d59=_0x705f[_0x3f0752];return _0x3d2d59;};'use strict';var Sequelize=require(_0xf705('0x0'));var moment=require(_0xf705('0x1'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xf705('0x2'),_0xf705('0x3'))},'result':{'type':Sequelize[_0xf705('0x4')]},'transfererchannel':{'type':Sequelize[_0xf705('0x4')]},'transferercalleridnum':{'type':Sequelize[_0xf705('0x4')]},'transferercalleridname':{'type':Sequelize[_0xf705('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0xf705('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0xf705('0x4')]},'transfereraccountcode':{'type':Sequelize[_0xf705('0x4')]},'transferercontext':{'type':Sequelize[_0xf705('0x4')]},'transfererexten':{'type':Sequelize[_0xf705('0x4')]},'transfererlinkedid':{'type':Sequelize[_0xf705('0x4')]},'transfereechannel':{'type':Sequelize[_0xf705('0x4')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xf705('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0xf705('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0xf705('0x4')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0xf705('0x4')]},'transfereelinkedid':{'type':Sequelize[_0xf705('0x4')]},'isexternal':{'type':Sequelize[_0xf705('0x5')](_0xf705('0x6'),'No')},'context':{'type':Sequelize[_0xf705('0x4')]},'extension':{'type':Sequelize[_0xf705('0x4')]}};
\ No newline at end of file
+var _0x1c84=['attended','STRING','Yes','sequelize','exports','ENUM','blind'];(function(_0x83af7f,_0x49c6fd){var _0x32d85c=function(_0xf0e8bc){while(--_0xf0e8bc){_0x83af7f['push'](_0x83af7f['shift']());}};_0x32d85c(++_0x49c6fd);}(_0x1c84,0xf1));var _0x41c8=function(_0x21481c,_0x1b51ba){_0x21481c=_0x21481c-0x0;var _0x5dd77a=_0x1c84[_0x21481c];return _0x5dd77a;};'use strict';var Sequelize=require(_0x41c8('0x0'));var moment=require('moment');module[_0x41c8('0x1')]={'type':{'type':Sequelize[_0x41c8('0x2')](_0x41c8('0x3'),_0x41c8('0x4'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x41c8('0x5')]},'transferercalleridnum':{'type':Sequelize[_0x41c8('0x5')]},'transferercalleridname':{'type':Sequelize[_0x41c8('0x5')]},'transfererconnectedlinenum':{'type':Sequelize['STRING']},'transfererconnectedlinename':{'type':Sequelize[_0x41c8('0x5')]},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x41c8('0x5')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x41c8('0x5')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x41c8('0x5')]},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize[_0x41c8('0x5')]},'transfereeconnectedlinename':{'type':Sequelize['STRING']},'transfereeaccountcode':{'type':Sequelize[_0x41c8('0x5')]},'transfereecontext':{'type':Sequelize[_0x41c8('0x5')]},'transfereeexten':{'type':Sequelize[_0x41c8('0x5')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize['ENUM'](_0x41c8('0x6'),'No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x41c8('0x5')]}};
\ No newline at end of file
index f3e015f..da00c90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbce=['create','body','describe','eml-format','rimraf','request-promise','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','map','VoiceTransferReport','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','catch','show','params','options','find'];(function(_0x115d5b,_0x26aff2){var _0x6cfc50=function(_0x39a786){while(--_0x39a786){_0x115d5b['push'](_0x115d5b['shift']());}};_0x6cfc50(++_0x26aff2);}(_0xbbce,0xdb));var _0xebbc=function(_0x212901,_0x1b223c){_0x212901=_0x212901-0x0;var _0x134286=_0xbbce[_0x212901];return _0x134286;};'use strict';var emlformat=require(_0xebbc('0x0'));var rimraf=require(_0xebbc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xebbc('0x2'));var moment=require('moment');var BPromise=require(_0xebbc('0x3'));var Mustache=require(_0xebbc('0x4'));var util=require(_0xebbc('0x5'));var path=require(_0xebbc('0x6'));var sox=require(_0xebbc('0x7'));var csv=require('to-csv');var ejs=require(_0xebbc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xebbc('0x9'));var squel=require('squel');var crypto=require(_0xebbc('0xa'));var jsforce=require(_0xebbc('0xb'));var deskjs=require(_0xebbc('0xc'));var toCsv=require(_0xebbc('0xd'));var querystring=require(_0xebbc('0xe'));var Papa=require('papaparse');var Redis=require(_0xebbc('0xf'));var authService=require(_0xebbc('0x10'));var qs=require(_0xebbc('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xebbc('0x12'));var logger=require(_0xebbc('0x13'))(_0xebbc('0x14'));var utils=require(_0xebbc('0x15'));var config=require(_0xebbc('0x16'));var licenseUtil=require(_0xebbc('0x17'));var db=require(_0xebbc('0x18'))['db'];function respondWithStatusCode(_0x548b66,_0xf67f0c){_0xf67f0c=_0xf67f0c||0xcc;return function(_0xeca774){if(_0xeca774){return _0x548b66[_0xebbc('0x19')](_0xf67f0c);}return _0x548b66[_0xebbc('0x1a')](_0xf67f0c)[_0xebbc('0x1b')]();};}function respondWithResult(_0x80f280,_0x2f72e9){_0x2f72e9=_0x2f72e9||0xc8;return function(_0x5b655b){if(_0x5b655b){return _0x80f280[_0xebbc('0x1a')](_0x2f72e9)['json'](_0x5b655b);}};}function respondWithFilteredResult(_0x588d8e,_0x471c5d){return function(_0x44152f){if(_0x44152f){var _0x58821c=typeof _0x471c5d[_0xebbc('0x1c')]==='undefined'&&typeof _0x471c5d[_0xebbc('0x1d')]===_0xebbc('0x1e');var _0x4f4d77=_0x44152f[_0xebbc('0x1f')];var _0x5672fa=_0x58821c?0x0:_0x471c5d[_0xebbc('0x1c')];var _0x1ee439=_0x58821c?_0x44152f[_0xebbc('0x1f')]:_0x471c5d[_0xebbc('0x1c')]+_0x471c5d[_0xebbc('0x1d')];var _0x2bff0e;if(_0x1ee439>=_0x4f4d77){_0x1ee439=_0x4f4d77;_0x2bff0e=0xc8;}else{_0x2bff0e=0xce;}_0x588d8e[_0xebbc('0x1a')](_0x2bff0e);return _0x588d8e['set'](_0xebbc('0x20'),_0x5672fa+'-'+_0x1ee439+'/'+_0x4f4d77)[_0xebbc('0x21')](_0x44152f);}return null;};}function patchUpdates(_0x3fd4b6){return function(_0x5f9581){try{jsonpatch[_0xebbc('0x22')](_0x5f9581,_0x3fd4b6,!![]);}catch(_0x2e91af){return BPromise[_0xebbc('0x23')](_0x2e91af);}return _0x5f9581[_0xebbc('0x24')]();};}function saveUpdates(_0x3690de,_0x4f6556){return function(_0x130002){if(_0x130002){return _0x130002[_0xebbc('0x25')](_0x3690de)[_0xebbc('0x26')](function(_0x582bba){return _0x582bba;});}return null;};}function removeEntity(_0x36d635,_0xed9190){return function(_0x2c018c){if(_0x2c018c){return _0x2c018c[_0xebbc('0x27')]()[_0xebbc('0x26')](function(){_0x36d635[_0xebbc('0x1a')](0xcc)[_0xebbc('0x1b')]();});}};}function handleEntityNotFound(_0x55d7cf,_0x4c5451){return function(_0x380a4f){if(!_0x380a4f){_0x55d7cf['sendStatus'](0x194);}return _0x380a4f;};}function handleError(_0x25e783,_0x116c97){_0x116c97=_0x116c97||0x1f4;return function(_0x153e60){logger['error'](_0x153e60[_0xebbc('0x28')]);if(_0x153e60[_0xebbc('0x29')]){delete _0x153e60[_0xebbc('0x29')];}_0x25e783[_0xebbc('0x1a')](_0x116c97)[_0xebbc('0x2a')](_0x153e60);};}exports['index']=function(_0x2671af,_0x1f16f9){var _0x2e2c66={},_0x4bd4cb={},_0x4687b3={'count':0x0,'rows':[]};var _0x5f5457=_[_0xebbc('0x2b')](db[_0xebbc('0x2c')][_0xebbc('0x2d')],function(_0x4183ef){return{'name':_0x4183ef['fieldName'],'type':_0x4183ef[_0xebbc('0x2e')]['key']};});_0x4bd4cb['model']=_[_0xebbc('0x2b')](_0x5f5457,'name');_0x4bd4cb[_0xebbc('0x2f')]=_[_0xebbc('0x30')](_0x2671af[_0xebbc('0x2f')]);_0x4bd4cb[_0xebbc('0x31')]=_[_0xebbc('0x32')](_0x4bd4cb[_0xebbc('0x33')],_0x4bd4cb['query']);_0x2e2c66[_0xebbc('0x34')]=_[_0xebbc('0x32')](_0x4bd4cb[_0xebbc('0x33')],qs[_0xebbc('0x35')](_0x2671af['query'][_0xebbc('0x35')]));_0x2e2c66['attributes']=_0x2e2c66['attributes'][_0xebbc('0x36')]?_0x2e2c66[_0xebbc('0x34')]:_0x4bd4cb[_0xebbc('0x33')];if(!_0x2671af[_0xebbc('0x2f')]['hasOwnProperty']('nolimit')){_0x2e2c66[_0xebbc('0x1d')]=qs['limit'](_0x2671af[_0xebbc('0x2f')][_0xebbc('0x1d')]);_0x2e2c66['offset']=qs[_0xebbc('0x1c')](_0x2671af[_0xebbc('0x2f')][_0xebbc('0x1c')]);}_0x2e2c66['order']=qs[_0xebbc('0x37')](_0x2671af[_0xebbc('0x2f')]['sort']);_0x2e2c66[_0xebbc('0x38')]=qs[_0xebbc('0x31')](_[_0xebbc('0x39')](_0x2671af[_0xebbc('0x2f')],_0x4bd4cb[_0xebbc('0x31')]),_0x5f5457);if(_0x2671af[_0xebbc('0x2f')][_0xebbc('0x3a')]){_0x2e2c66[_0xebbc('0x38')]=_['merge'](_0x2e2c66[_0xebbc('0x38')],{'$or':_['map'](_0x5f5457,function(_0x3272d4){if(_0x3272d4[_0xebbc('0x2e')]!==_0xebbc('0x3b')){var _0x4405c1={};_0x4405c1[_0x3272d4[_0xebbc('0x29')]]={'$like':'%'+_0x2671af[_0xebbc('0x2f')][_0xebbc('0x3a')]+'%'};return _0x4405c1;}})});}_0x2e2c66=_[_0xebbc('0x3c')]({},_0x2e2c66,_0x2671af['options']);var _0x1c374d={'where':_0x2e2c66[_0xebbc('0x38')]};return db[_0xebbc('0x2c')][_0xebbc('0x1f')](_0x1c374d)['then'](function(_0xdaac4b){_0x4687b3[_0xebbc('0x1f')]=_0xdaac4b;if(_0x2671af['query'][_0xebbc('0x3d')]){_0x2e2c66[_0xebbc('0x3e')]=[{'all':!![]}];}return db[_0xebbc('0x2c')][_0xebbc('0x3f')](_0x2e2c66);})['then'](function(_0x19ec4a){_0x4687b3['rows']=_0x19ec4a;return _0x4687b3;})[_0xebbc('0x26')](respondWithFilteredResult(_0x1f16f9,_0x2e2c66))[_0xebbc('0x40')](handleError(_0x1f16f9,null));};exports[_0xebbc('0x41')]=function(_0xc7d82c,_0x3a24c4){var _0x49249b={'raw':!![],'where':{'id':_0xc7d82c[_0xebbc('0x42')]['id']}},_0x269661={};_0x269661['model']=_[_0xebbc('0x30')](db['VoiceTransferReport'][_0xebbc('0x2d')]);_0x269661[_0xebbc('0x2f')]=_['keys'](_0xc7d82c['query']);_0x269661[_0xebbc('0x31')]=_[_0xebbc('0x32')](_0x269661[_0xebbc('0x33')],_0x269661[_0xebbc('0x2f')]);_0x49249b[_0xebbc('0x34')]=_[_0xebbc('0x32')](_0x269661[_0xebbc('0x33')],qs[_0xebbc('0x35')](_0xc7d82c[_0xebbc('0x2f')][_0xebbc('0x35')]));_0x49249b[_0xebbc('0x34')]=_0x49249b['attributes'][_0xebbc('0x36')]?_0x49249b['attributes']:_0x269661[_0xebbc('0x33')];if(_0xc7d82c[_0xebbc('0x2f')]['includeAll']){_0x49249b[_0xebbc('0x3e')]=[{'all':!![]}];}_0x49249b=_[_0xebbc('0x3c')]({},_0x49249b,_0xc7d82c[_0xebbc('0x43')]);return db[_0xebbc('0x2c')][_0xebbc('0x44')](_0x49249b)[_0xebbc('0x26')](handleEntityNotFound(_0x3a24c4,null))[_0xebbc('0x26')](respondWithResult(_0x3a24c4,null))[_0xebbc('0x40')](handleError(_0x3a24c4,null));};exports[_0xebbc('0x45')]=function(_0x11ccd6,_0x5dcef4){return db[_0xebbc('0x2c')]['create'](_0x11ccd6[_0xebbc('0x46')],{})[_0xebbc('0x26')](respondWithResult(_0x5dcef4,0xc9))[_0xebbc('0x40')](handleError(_0x5dcef4,null));};exports[_0xebbc('0x25')]=function(_0x28738b,_0x4a5147){if(_0x28738b['body']['id']){delete _0x28738b['body']['id'];}return db[_0xebbc('0x2c')]['find']({'where':{'id':_0x28738b['params']['id']}})[_0xebbc('0x26')](handleEntityNotFound(_0x4a5147,null))[_0xebbc('0x26')](saveUpdates(_0x28738b[_0xebbc('0x46')],null))[_0xebbc('0x26')](respondWithResult(_0x4a5147,null))['catch'](handleError(_0x4a5147,null));};exports[_0xebbc('0x27')]=function(_0x1950e3,_0x2c11d2){return db[_0xebbc('0x2c')][_0xebbc('0x44')]({'where':{'id':_0x1950e3[_0xebbc('0x42')]['id']}})[_0xebbc('0x26')](handleEntityNotFound(_0x2c11d2,null))[_0xebbc('0x26')](removeEntity(_0x2c11d2,null))[_0xebbc('0x40')](handleError(_0x2c11d2,null));};exports['describe']=function(_0x289da2,_0x497107){return db[_0xebbc('0x2c')][_0xebbc('0x47')]()['then'](respondWithResult(_0x497107,null))[_0xebbc('0x40')](handleError(_0x497107,null));};
\ No newline at end of file
+var _0x56b9=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','apply','reject','save','then','name','send','map','VoiceTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','includeAll','include','rows','catch','params','create','body','update','find','destroy','describe','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x2f42b9,_0x424040){var _0x56c3c7=function(_0x3e2a1f){while(--_0x3e2a1f){_0x2f42b9['push'](_0x2f42b9['shift']());}};_0x56c3c7(++_0x424040);}(_0x56b9,0x102));var _0x956b=function(_0x3d0afb,_0x31c391){_0x3d0afb=_0x3d0afb-0x0;var _0x375e8f=_0x56b9[_0x3d0afb];return _0x375e8f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x956b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x956b('0x1'));var moment=require('moment');var BPromise=require(_0x956b('0x2'));var Mustache=require(_0x956b('0x3'));var util=require(_0x956b('0x4'));var path=require(_0x956b('0x5'));var sox=require(_0x956b('0x6'));var csv=require(_0x956b('0x7'));var ejs=require(_0x956b('0x8'));var fs=require('fs');var fs_extra=require(_0x956b('0x9'));var _=require(_0x956b('0xa'));var squel=require(_0x956b('0xb'));var crypto=require(_0x956b('0xc'));var jsforce=require(_0x956b('0xd'));var deskjs=require(_0x956b('0xe'));var toCsv=require(_0x956b('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x956b('0xf'));var authService=require(_0x956b('0x10'));var qs=require(_0x956b('0x11'));var as=require(_0x956b('0x12'));var hardwareService=require(_0x956b('0x13'));var logger=require(_0x956b('0x14'))(_0x956b('0x15'));var utils=require(_0x956b('0x16'));var config=require(_0x956b('0x17'));var licenseUtil=require(_0x956b('0x18'));var db=require(_0x956b('0x19'))['db'];function respondWithStatusCode(_0x218907,_0x11a163){_0x11a163=_0x11a163||0xcc;return function(_0x1ea78e){if(_0x1ea78e){return _0x218907[_0x956b('0x1a')](_0x11a163);}return _0x218907[_0x956b('0x1b')](_0x11a163)[_0x956b('0x1c')]();};}function respondWithResult(_0x4fb90a,_0x12631b){_0x12631b=_0x12631b||0xc8;return function(_0x41f518){if(_0x41f518){return _0x4fb90a[_0x956b('0x1b')](_0x12631b)[_0x956b('0x1d')](_0x41f518);}};}function respondWithFilteredResult(_0x4e1848,_0xdfca84){return function(_0x415aef){if(_0x415aef){var _0x388b99=typeof _0xdfca84[_0x956b('0x1e')]==='undefined'&&typeof _0xdfca84[_0x956b('0x1f')]==='undefined';var _0x251f77=_0x415aef[_0x956b('0x20')];var _0x3d2829=_0x388b99?0x0:_0xdfca84[_0x956b('0x1e')];var _0x3fd42d=_0x388b99?_0x415aef[_0x956b('0x20')]:_0xdfca84[_0x956b('0x1e')]+_0xdfca84['limit'];var _0x1ee854;if(_0x3fd42d>=_0x251f77){_0x3fd42d=_0x251f77;_0x1ee854=0xc8;}else{_0x1ee854=0xce;}_0x4e1848[_0x956b('0x1b')](_0x1ee854);return _0x4e1848['set']('Content-Range',_0x3d2829+'-'+_0x3fd42d+'/'+_0x251f77)[_0x956b('0x1d')](_0x415aef);}return null;};}function patchUpdates(_0x397b0b){return function(_0xc37adc){try{jsonpatch[_0x956b('0x21')](_0xc37adc,_0x397b0b,!![]);}catch(_0x5ca3bc){return BPromise[_0x956b('0x22')](_0x5ca3bc);}return _0xc37adc[_0x956b('0x23')]();};}function saveUpdates(_0x393e23,_0x426bf8){return function(_0x3267bf){if(_0x3267bf){return _0x3267bf['update'](_0x393e23)['then'](function(_0x7e1b98){return _0x7e1b98;});}return null;};}function removeEntity(_0x505988,_0xbaef09){return function(_0xe4a6d){if(_0xe4a6d){return _0xe4a6d['destroy']()[_0x956b('0x24')](function(){_0x505988[_0x956b('0x1b')](0xcc)[_0x956b('0x1c')]();});}};}function handleEntityNotFound(_0x55261a,_0x4ae8e6){return function(_0x8e314a){if(!_0x8e314a){_0x55261a['sendStatus'](0x194);}return _0x8e314a;};}function handleError(_0x5a542c,_0x2f147b){_0x2f147b=_0x2f147b||0x1f4;return function(_0xdb0aa6){logger['error'](_0xdb0aa6['stack']);if(_0xdb0aa6[_0x956b('0x25')]){delete _0xdb0aa6['name'];}_0x5a542c[_0x956b('0x1b')](_0x2f147b)[_0x956b('0x26')](_0xdb0aa6);};}exports['index']=function(_0x18f34b,_0x513e2b){var _0x21b49d={},_0x3b87aa={},_0xb19d26={'count':0x0,'rows':[]};var _0x51b206=_[_0x956b('0x27')](db[_0x956b('0x28')][_0x956b('0x29')],function(_0x50794a){return{'name':_0x50794a[_0x956b('0x2a')],'type':_0x50794a[_0x956b('0x2b')][_0x956b('0x2c')]};});_0x3b87aa[_0x956b('0x2d')]=_[_0x956b('0x27')](_0x51b206,_0x956b('0x25'));_0x3b87aa[_0x956b('0x2e')]=_[_0x956b('0x2f')](_0x18f34b[_0x956b('0x2e')]);_0x3b87aa[_0x956b('0x30')]=_[_0x956b('0x31')](_0x3b87aa['model'],_0x3b87aa[_0x956b('0x2e')]);_0x21b49d['attributes']=_[_0x956b('0x31')](_0x3b87aa[_0x956b('0x2d')],qs['fields'](_0x18f34b['query']['fields']));_0x21b49d[_0x956b('0x32')]=_0x21b49d[_0x956b('0x32')][_0x956b('0x33')]?_0x21b49d['attributes']:_0x3b87aa[_0x956b('0x2d')];if(!_0x18f34b[_0x956b('0x2e')][_0x956b('0x34')](_0x956b('0x35'))){_0x21b49d[_0x956b('0x1f')]=qs['limit'](_0x18f34b[_0x956b('0x2e')][_0x956b('0x1f')]);_0x21b49d[_0x956b('0x1e')]=qs[_0x956b('0x1e')](_0x18f34b['query'][_0x956b('0x1e')]);}_0x21b49d[_0x956b('0x36')]=qs[_0x956b('0x37')](_0x18f34b[_0x956b('0x2e')]['sort']);_0x21b49d[_0x956b('0x38')]=qs[_0x956b('0x30')](_['pick'](_0x18f34b[_0x956b('0x2e')],_0x3b87aa[_0x956b('0x30')]),_0x51b206);if(_0x18f34b[_0x956b('0x2e')]['filter']){_0x21b49d[_0x956b('0x38')]=_[_0x956b('0x39')](_0x21b49d[_0x956b('0x38')],{'$or':_[_0x956b('0x27')](_0x51b206,function(_0x2d0646){if(_0x2d0646[_0x956b('0x2b')]!=='VIRTUAL'){var _0x5c1d75={};_0x5c1d75[_0x2d0646[_0x956b('0x25')]]={'$like':'%'+_0x18f34b[_0x956b('0x2e')]['filter']+'%'};return _0x5c1d75;}})});}_0x21b49d=_['merge']({},_0x21b49d,_0x18f34b['options']);var _0x3d7119={'where':_0x21b49d[_0x956b('0x38')]};return db[_0x956b('0x28')]['count'](_0x3d7119)['then'](function(_0x1e1511){_0xb19d26[_0x956b('0x20')]=_0x1e1511;if(_0x18f34b[_0x956b('0x2e')][_0x956b('0x3a')]){_0x21b49d[_0x956b('0x3b')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x21b49d);})[_0x956b('0x24')](function(_0x369c55){_0xb19d26[_0x956b('0x3c')]=_0x369c55;return _0xb19d26;})[_0x956b('0x24')](respondWithFilteredResult(_0x513e2b,_0x21b49d))[_0x956b('0x3d')](handleError(_0x513e2b,null));};exports['show']=function(_0x2d48d5,_0x198639){var _0x8ed031={'raw':!![],'where':{'id':_0x2d48d5[_0x956b('0x3e')]['id']}},_0x2d79a1={};_0x2d79a1['model']=_[_0x956b('0x2f')](db[_0x956b('0x28')][_0x956b('0x29')]);_0x2d79a1[_0x956b('0x2e')]=_['keys'](_0x2d48d5['query']);_0x2d79a1['filters']=_[_0x956b('0x31')](_0x2d79a1[_0x956b('0x2d')],_0x2d79a1[_0x956b('0x2e')]);_0x8ed031['attributes']=_['intersection'](_0x2d79a1[_0x956b('0x2d')],qs['fields'](_0x2d48d5['query']['fields']));_0x8ed031['attributes']=_0x8ed031[_0x956b('0x32')][_0x956b('0x33')]?_0x8ed031['attributes']:_0x2d79a1['model'];if(_0x2d48d5['query'][_0x956b('0x3a')]){_0x8ed031[_0x956b('0x3b')]=[{'all':!![]}];}_0x8ed031=_[_0x956b('0x39')]({},_0x8ed031,_0x2d48d5['options']);return db[_0x956b('0x28')]['find'](_0x8ed031)[_0x956b('0x24')](handleEntityNotFound(_0x198639,null))[_0x956b('0x24')](respondWithResult(_0x198639,null))[_0x956b('0x3d')](handleError(_0x198639,null));};exports[_0x956b('0x3f')]=function(_0x5959f6,_0x52d60a){return db['VoiceTransferReport'][_0x956b('0x3f')](_0x5959f6[_0x956b('0x40')],{})[_0x956b('0x24')](respondWithResult(_0x52d60a,0xc9))[_0x956b('0x3d')](handleError(_0x52d60a,null));};exports[_0x956b('0x41')]=function(_0x522229,_0x1018ae){if(_0x522229[_0x956b('0x40')]['id']){delete _0x522229['body']['id'];}return db[_0x956b('0x28')][_0x956b('0x42')]({'where':{'id':_0x522229['params']['id']}})['then'](handleEntityNotFound(_0x1018ae,null))['then'](saveUpdates(_0x522229[_0x956b('0x40')],null))[_0x956b('0x24')](respondWithResult(_0x1018ae,null))['catch'](handleError(_0x1018ae,null));};exports[_0x956b('0x43')]=function(_0x27d1f2,_0x43af55){return db[_0x956b('0x28')][_0x956b('0x42')]({'where':{'id':_0x27d1f2['params']['id']}})[_0x956b('0x24')](handleEntityNotFound(_0x43af55,null))['then'](removeEntity(_0x43af55,null))[_0x956b('0x3d')](handleError(_0x43af55,null));};exports[_0x956b('0x44')]=function(_0x2776bb,_0x6c3bbb){return db[_0x956b('0x28')][_0x956b('0x44')]()[_0x956b('0x24')](respondWithResult(_0x6c3bbb,null))[_0x956b('0x3d')](handleError(_0x6c3bbb,null));};
\ No newline at end of file
index f100e47..5e89180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe881=['report_call_transfer','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport'];(function(_0x5cf485,_0x5d8d37){var _0x38626b=function(_0x49f28c){while(--_0x49f28c){_0x5cf485['push'](_0x5cf485['shift']());}};_0x38626b(++_0x5d8d37);}(_0xe881,0x85));var _0x1e88=function(_0x304bd5,_0xea943d){_0x304bd5=_0x304bd5-0x0;var _0x2bcd87=_0xe881[_0x304bd5];return _0x2bcd87;};'use strict';var _=require(_0x1e88('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1e88('0x1'));var moment=require(_0x1e88('0x2'));var BPromise=require(_0x1e88('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1e88('0x4'));var rimraf=require(_0x1e88('0x5'));var config=require(_0x1e88('0x6'));var attributes=require(_0x1e88('0x7'));module[_0x1e88('0x8')]=function(_0x2a98ae,_0x49189d){return _0x2a98ae[_0x1e88('0x9')](_0x1e88('0xa'),attributes,{'tableName':_0x1e88('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae66=['path','rimraf','../../config/environment','exports','define','VoiceTransferReport','lodash','../../config/logger','api'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xae66,0x9f));var _0x6ae6=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xae66[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x6ae6('0x0'));var util=require('util');var logger=require(_0x6ae6('0x1'))(_0x6ae6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6ae6('0x3'));var rimraf=require(_0x6ae6('0x4'));var config=require(_0x6ae6('0x5'));var attributes=require('./voiceTransferReport.attributes');module[_0x6ae6('0x6')]=function(_0x3ebfd5,_0x42ee6f){return _0x3ebfd5[_0x6ae6('0x7')](_0x6ae6('0x8'),attributes,{'tableName':'report_call_transfer','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0dbeee2..d8263c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44b1=['rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VoiceTransferReport','create','body','options','CreateVoiceTransferReport','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x44b1,0x1ac));var _0x144b=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x44b1[_0x47b58b];return _0x46bebe;};'use strict';var _=require(_0x144b('0x0'));var util=require('util');var moment=require(_0x144b('0x1'));var BPromise=require(_0x144b('0x2'));var rs=require(_0x144b('0x3'));var fs=require('fs');var Redis=require(_0x144b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x144b('0x5'));var logger=require(_0x144b('0x6'))(_0x144b('0x7'));var config=require(_0x144b('0x8'));var jayson=require(_0x144b('0x9'));var client=jayson['client'][_0x144b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2129cc,_0x1ac849,_0x581fec){return new BPromise(function(_0x5b9b70,_0x34e187){return client[_0x144b('0xb')](_0x2129cc,_0x581fec)[_0x144b('0xc')](function(_0x29daa5){logger[_0x144b('0xd')](_0x144b('0xe'),_0x1ac849,_0x144b('0xf'));logger[_0x144b('0x10')](_0x144b('0x11'),_0x1ac849,_0x144b('0xf'),JSON[_0x144b('0x12')](_0x29daa5));if(_0x29daa5[_0x144b('0x13')]){if(_0x29daa5['error'][_0x144b('0x14')]===0x1f4){logger['error'](_0x144b('0xe'),_0x1ac849,_0x29daa5[_0x144b('0x13')]['message']);return _0x34e187(_0x29daa5[_0x144b('0x13')][_0x144b('0x15')]);}logger[_0x144b('0x13')](_0x144b('0xe'),_0x1ac849,_0x29daa5[_0x144b('0x13')]['message']);return _0x5b9b70(_0x29daa5[_0x144b('0x13')][_0x144b('0x15')]);}else{logger[_0x144b('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x1ac849,'request\x20sent');_0x5b9b70(_0x29daa5[_0x144b('0x16')]['message']);}})[_0x144b('0x17')](function(_0xba436){logger['error'](_0x144b('0xe'),_0x1ac849,_0xba436);_0x34e187(_0xba436);});});}exports['CreateVoiceTransferReport']=function(_0x24962f){var _0x8b6e9a=this;return new Promise(function(_0x3c6478,_0x229343){return db[_0x144b('0x18')][_0x144b('0x19')](_0x24962f[_0x144b('0x1a')],{'raw':_0x24962f[_0x144b('0x1b')]?_0x24962f[_0x144b('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x144b('0xc')](function(_0x2a68bd){logger[_0x144b('0xd')](_0x144b('0x1c'),_0x24962f);logger[_0x144b('0x10')](_0x144b('0x1c'),_0x24962f,JSON[_0x144b('0x12')](_0x2a68bd));_0x3c6478(_0x2a68bd);})['catch'](function(_0x282086){logger[_0x144b('0x13')](_0x144b('0x1c'),_0x282086[_0x144b('0x15')],_0x24962f);_0x229343(_0x8b6e9a[_0x144b('0x13')](0x1f4,_0x282086['message']));});});};
\ No newline at end of file
+var _0x6462=['then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','lodash','bluebird','randomstring','../../config/utils','rpc','client','http','request'];(function(_0x2a453b,_0x479c50){var _0x132f79=function(_0x5e3d83){while(--_0x5e3d83){_0x2a453b['push'](_0x2a453b['shift']());}};_0x132f79(++_0x479c50);}(_0x6462,0x100));var _0x2646=function(_0x14db5e,_0x1b688d){_0x14db5e=_0x14db5e-0x0;var _0x89966b=_0x6462[_0x14db5e];return _0x89966b;};'use strict';var _=require(_0x2646('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2646('0x1'));var rs=require(_0x2646('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2646('0x3'));var logger=require('../../config/logger')(_0x2646('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x2646('0x5')][_0x2646('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4c9e9c,_0x4f210a,_0x4e401c){return new BPromise(function(_0x5c7b4f,_0x5a6f5d){return client[_0x2646('0x7')](_0x4c9e9c,_0x4e401c)[_0x2646('0x8')](function(_0x477822){logger[_0x2646('0x9')](_0x2646('0xa'),_0x4f210a,_0x2646('0xb'));logger[_0x2646('0xc')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x4f210a,_0x2646('0xb'),JSON[_0x2646('0xd')](_0x477822));if(_0x477822['error']){if(_0x477822[_0x2646('0xe')][_0x2646('0xf')]===0x1f4){logger[_0x2646('0xe')](_0x2646('0xa'),_0x4f210a,_0x477822[_0x2646('0xe')][_0x2646('0x10')]);return _0x5a6f5d(_0x477822[_0x2646('0xe')][_0x2646('0x10')]);}logger[_0x2646('0xe')](_0x2646('0xa'),_0x4f210a,_0x477822['error'][_0x2646('0x10')]);return _0x5c7b4f(_0x477822[_0x2646('0xe')][_0x2646('0x10')]);}else{logger['info'](_0x2646('0xa'),_0x4f210a,'request\x20sent');_0x5c7b4f(_0x477822[_0x2646('0x11')][_0x2646('0x10')]);}})[_0x2646('0x12')](function(_0x94993f){logger[_0x2646('0xe')](_0x2646('0xa'),_0x4f210a,_0x94993f);_0x5a6f5d(_0x94993f);});});}exports[_0x2646('0x13')]=function(_0x1418ad){var _0x342eda=this;return new Promise(function(_0x1865f3,_0x1e9d1b){return db[_0x2646('0x14')][_0x2646('0x15')](_0x1418ad[_0x2646('0x16')],{'raw':_0x1418ad['options']?_0x1418ad[_0x2646('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x2646('0x8')](function(_0x187e40){logger[_0x2646('0x9')](_0x2646('0x13'),_0x1418ad);logger[_0x2646('0xc')](_0x2646('0x13'),_0x1418ad,JSON[_0x2646('0xd')](_0x187e40));_0x1865f3(_0x187e40);})[_0x2646('0x12')](function(_0x2c0ec1){logger[_0x2646('0xe')](_0x2646('0x13'),_0x2c0ec1[_0x2646('0x10')],_0x1418ad);_0x1e9d1b(_0x342eda[_0x2646('0xe')](0x1f4,_0x2c0ec1['message']));});});};
\ No newline at end of file
index 92ad924..f1c9eac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cc7=['calls','/transfer','exports','express','Router','./webbar.controller','post','/originate','isAuthenticated','canUpdate','originate','/hangup','hangup','/answer','answer','hold','/unhold','/calls'];(function(_0x475004,_0x33de48){var _0x2f16fd=function(_0x43d02c){while(--_0x43d02c){_0x475004['push'](_0x475004['shift']());}};_0x2f16fd(++_0x33de48);}(_0x5cc7,0x93));var _0x75cc=function(_0x3c97d0,_0x510862){_0x3c97d0=_0x3c97d0-0x0;var _0x126da0=_0x5cc7[_0x3c97d0];return _0x126da0;};'use strict';var express=require(_0x75cc('0x0'));var router=express[_0x75cc('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x75cc('0x2'));router[_0x75cc('0x3')](_0x75cc('0x4'),auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller[_0x75cc('0x7')]);router[_0x75cc('0x3')](_0x75cc('0x8'),auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller[_0x75cc('0x9')]);router[_0x75cc('0x3')](_0x75cc('0xa'),auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller[_0x75cc('0xb')]);router[_0x75cc('0x3')]('/hold',auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller[_0x75cc('0xc')]);router[_0x75cc('0x3')](_0x75cc('0xd'),auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller['unhold']);router[_0x75cc('0x3')](_0x75cc('0xe'),auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller[_0x75cc('0xf')]);router[_0x75cc('0x3')](_0x75cc('0x10'),auth[_0x75cc('0x5')](),auth[_0x75cc('0x6')](),controller['transfer']);module[_0x75cc('0x11')]=router;
\ No newline at end of file
+var _0x9111=['../../components/auth/service','./webbar.controller','post','canUpdate','/hangup','isAuthenticated','hangup','/answer','/hold','hold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x411c23,_0x5503ae){var _0x27fab6=function(_0x4136c1){while(--_0x4136c1){_0x411c23['push'](_0x411c23['shift']());}};_0x27fab6(++_0x5503ae);}(_0x9111,0xba));var _0x1911=function(_0x1c6ddd,_0x4fcc42){_0x1c6ddd=_0x1c6ddd-0x0;var _0x4830ef=_0x9111[_0x1c6ddd];return _0x4830ef;};'use strict';var express=require(_0x1911('0x0'));var router=express['Router']();var auth=require(_0x1911('0x1'));var controller=require(_0x1911('0x2'));router[_0x1911('0x3')]('/originate',auth['isAuthenticated'](),auth[_0x1911('0x4')](),controller['originate']);router[_0x1911('0x3')](_0x1911('0x5'),auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0x7')]);router[_0x1911('0x3')](_0x1911('0x8'),auth[_0x1911('0x6')](),auth['canUpdate'](),controller['answer']);router[_0x1911('0x3')](_0x1911('0x9'),auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0xa')]);router[_0x1911('0x3')]('/unhold',auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0xb')]);router[_0x1911('0x3')](_0x1911('0xc'),auth[_0x1911('0x6')](),auth['canUpdate'](),controller[_0x1911('0xd')]);router[_0x1911('0x3')](_0x1911('0xe'),auth[_0x1911('0x6')](),auth[_0x1911('0x4')](),controller[_0x1911('0xf')]);module[_0x1911('0x10')]=router;
\ No newline at end of file
index 2cf662c..f288fc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb821=['hangup','hangup\x20fired:','userId','entityFound:','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','calls\x20fired:','conference','conference\x20fired:','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','lodash','../../mysqldb','bluebird','http','../../config/logger','webbarapi','ioredis','defaults','redis','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','sessionId\x20is\x20required','info','stringify','emit','log','error','stack','name','status','send','NotFound','then','code','User','findOne','VoiceChannels','all','filter','rows','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','callerId','callbackUrl','format','user:%s','originate\x20executed!','catch'];(function(_0x5e42a7,_0x3eba35){var _0x36d21b=function(_0x567f0a){while(--_0x567f0a){_0x5e42a7['push'](_0x5e42a7['shift']());}};_0x36d21b(++_0x3eba35);}(_0xb821,0xa7));var _0x1b82=function(_0x295b75,_0x2763f5){_0x295b75=_0x295b75-0x0;var _0x24a29a=_0xb821[_0x295b75];return _0x24a29a;};'use strict';var path=require('path');var fs=require('fs');var _=require(_0x1b82('0x0'));var db=require(_0x1b82('0x1'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require(_0x1b82('0x2'));var jayson=require('jayson/promise');var amiClient=jayson['client'][_0x1b82('0x3')]({'port':0x232a});var logger=require(_0x1b82('0x4'))(_0x1b82('0x5'));var Redis=require(_0x1b82('0x6'));config['redis']=_[_0x1b82('0x7')](config[_0x1b82('0x8')],{'host':_0x1b82('0x9'),'port':0x18eb});var io=require(_0x1b82('0xa'))(new Redis(config[_0x1b82('0x8')]));var Schema=require(_0x1b82('0xb'));var originateValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],_0x1b82('0xd')]},'callNumber':{'type':_0x1b82('0xe'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x1b82('0xe')},'callbackUrl':{'type':_0x1b82('0xe')}});var hangupValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],_0x1b82('0xd')]},'sessionId':{'type':_0x1b82('0xe'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],_0x1b82('0xd')]},'sessionId':{'type':_0x1b82('0xe'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1b82('0xd')]},'sessionId':{'type':_0x1b82('0xe'),'required':[!![],_0x1b82('0xf')]},'transferNumber':{'type':_0x1b82('0xe'),'required':[!![],'transferNumber\x20is\x20required']}});var holdValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x1b82('0xe'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0x1b82('0xc'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x563261,_0x1b115b,_0x5eb8ed){logger[_0x1b82('0x10')](_0x563261,_0x1b115b,JSON[_0x1b82('0x11')](_0x5eb8ed));io['to'](_0x563261)[_0x1b82('0x12')](_0x1b115b,_0x5eb8ed);}function handleError(_0x4a09a2){return function(_0x514082){console[_0x1b82('0x13')]('handleError:',_0x514082,_0x514082 instanceof RangeError);logger[_0x1b82('0x14')](_0x514082[_0x1b82('0x15')]);if(_0x514082 instanceof RangeError){if(_0x514082[_0x1b82('0x16')]){delete _0x514082['name'];}_0x4a09a2[_0x1b82('0x17')](0x194)[_0x1b82('0x18')](_0x514082);}else{if(_0x514082[_0x1b82('0x16')]){delete _0x514082[_0x1b82('0x16')];}_0x4a09a2[_0x1b82('0x17')](0x1f4)['send'](_0x514082);}};}function checkError(){return function(_0x35a2c8){if(!_0x35a2c8){throw new RangeError(_0x1b82('0x19'));}return _0x35a2c8;};}function respondWithRpcPromise(_0x39e668,_0x1d50b6){return new BPromise(function(_0x26e481,_0x31fd64){var _0x2d07f4=amiClient;return _0x2d07f4['request'](_0x39e668,_0x1d50b6)[_0x1b82('0x1a')](function(_0x233740){if(_0x233740['error']){if(_0x233740[_0x1b82('0x14')][_0x1b82('0x1b')]===0x1f4){return _0x31fd64(_0x233740[_0x1b82('0x14')]['message']);}return _0x26e481(_0x233740[_0x1b82('0x14')]['message']);}else{_0x26e481(_0x233740['result']);}})['catch'](function(_0xf2e556){_0x31fd64(_0xf2e556);});});}function getAgent(_0x149d0f){return db[_0x1b82('0x1c')][_0x1b82('0x1d')]({'where':{'id':_0x149d0f,'role':'agent'}})[_0x1b82('0x1a')](checkError());}function getAgentCheckSession(_0x165b45,_0x1b5260){return new BPromise(function(_0x7455e8,_0x2d78b5){var _0x1b8b6f=respondWithRpcPromise(_0x1b82('0x1e'));var _0x21ea34=getAgent(_0x165b45);Promise[_0x1b82('0x1f')]([_0x1b8b6f,_0x21ea34])[_0x1b82('0x1a')](function(_0x2fe45d){var _0x37275f=_0x2fe45d[0x0];var _0x466441=_0x2fe45d[0x1];var _0x5ea890=_[_0x1b82('0x20')](_0x37275f[_0x1b82('0x21')],function(_0x155a34){return _0x155a34[_0x1b82('0x22')]==_0x466441['id']&&_0x155a34[_0x1b82('0x23')]==_0x1b5260;});if(_0x5ea890[_0x1b82('0x24')]==0x1){_0x7455e8(_0x466441);}else{_0x2d78b5(new RangeError(_0x1b82('0x25')+_0x1b5260+_0x1b82('0x26')));}});});}exports[_0x1b82('0x27')]=function(_0x362657,_0x501ab0){logger[_0x1b82('0x10')](_0x1b82('0x28'),_0x362657[_0x1b82('0x29')]);var _0xc98ee2=originateValidation['validate'](_0x362657[_0x1b82('0x29')]);if(_0xc98ee2[_0x1b82('0x24')]>0x0){return _0x501ab0['status'](0x190)[_0x1b82('0x2a')](_0xc98ee2);}var _0x27b8f1=_0x362657[_0x1b82('0x29')]['userId'];var _0x5efb8e=_0x362657[_0x1b82('0x29')]['callNumber'];var _0x5df802=_0x362657[_0x1b82('0x29')][_0x1b82('0x2b')];var _0x7fd793=_0x362657['body'][_0x1b82('0x2c')];return getAgent(_0x27b8f1)[_0x1b82('0x1a')](function(_0xea774a){logger[_0x1b82('0x10')]('entityFound:',_0xea774a[_0x1b82('0x16')]);emit(util[_0x1b82('0x2d')](_0x1b82('0x2e'),_0xea774a['name']),'webbar:originate',{'callNumber':_0x5efb8e,'callerId':_0x5df802,'callbackUrl':_0x7fd793});return _0x501ab0[_0x1b82('0x17')](0xc8)['json']({'error':![],'message':_0x1b82('0x2f')});})[_0x1b82('0x30')](handleError(_0x501ab0));};exports[_0x1b82('0x31')]=function(_0x348880,_0x1255db){logger[_0x1b82('0x10')](_0x1b82('0x32'),_0x348880[_0x1b82('0x29')]);var _0x47cd9f=hangupValidation['validate'](_0x348880[_0x1b82('0x29')]);if(_0x47cd9f['length']>0x0){return _0x1255db[_0x1b82('0x17')](0x190)['json'](_0x47cd9f);}var _0x1c5bc1=_0x348880[_0x1b82('0x29')][_0x1b82('0x33')];var _0x2c1cd0=_0x348880[_0x1b82('0x29')][_0x1b82('0x23')];return getAgent(_0x1c5bc1)['then'](function(_0x17d214){logger['info'](_0x1b82('0x34'),_0x17d214['name']);emit(util[_0x1b82('0x2d')]('user:%s',_0x17d214['name']),_0x1b82('0x35'),{'sessionId':_0x2c1cd0});return _0x1255db[_0x1b82('0x17')](0xc8)[_0x1b82('0x2a')]({'error':![],'message':_0x1b82('0x36')});})[_0x1b82('0x30')](handleError(_0x1255db));};exports['answer']=function(_0x16f26d,_0x4ffa9e){logger[_0x1b82('0x10')](_0x1b82('0x37'),_0x16f26d[_0x1b82('0x29')]);var _0x3adf9c=answerValidation[_0x1b82('0xb')](_0x16f26d['body']);if(_0x3adf9c[_0x1b82('0x24')]>0x0){return _0x4ffa9e['status'](0x190)[_0x1b82('0x2a')](_0x3adf9c);}var _0x14b3ab=_0x16f26d['body'][_0x1b82('0x33')];var _0x225f6b=_0x16f26d[_0x1b82('0x29')][_0x1b82('0x23')];return getAgent(_0x14b3ab)[_0x1b82('0x1a')](function(_0x199213){logger[_0x1b82('0x10')]('entityFound:',_0x199213[_0x1b82('0x16')]);emit(util['format'](_0x1b82('0x2e'),_0x199213[_0x1b82('0x16')]),_0x1b82('0x38'),{'sessionId':_0x225f6b});return _0x4ffa9e[_0x1b82('0x17')](0xc8)[_0x1b82('0x2a')]({'error':![],'message':_0x1b82('0x39')});})[_0x1b82('0x30')](handleError(_0x4ffa9e));};exports[_0x1b82('0x3a')]=function(_0x192ce3,_0x120b35){logger[_0x1b82('0x10')](_0x1b82('0x3b'),_0x192ce3[_0x1b82('0x29')]);var _0x432e84=holdValidation['validate'](_0x192ce3['body']);if(_0x432e84[_0x1b82('0x24')]>0x0){return _0x120b35['status'](0x190)[_0x1b82('0x2a')](_0x432e84);}var _0x3df0af=_0x192ce3[_0x1b82('0x29')]['userId'];var _0x409a41=_0x192ce3['body']['sessionId'];return getAgent(_0x3df0af)[_0x1b82('0x1a')](function(_0x2aadf7){logger[_0x1b82('0x10')]('entityFound:',_0x2aadf7[_0x1b82('0x16')]);emit(util[_0x1b82('0x2d')]('user:%s',_0x2aadf7['name']),_0x1b82('0x3c'),{'sessionId':_0x409a41});return _0x120b35[_0x1b82('0x17')](0xc8)[_0x1b82('0x2a')]({'error':![],'message':'hold\x20executed!'});})[_0x1b82('0x30')](handleError(_0x120b35));};exports[_0x1b82('0x3d')]=function(_0x31fb5d,_0x29f9ae){logger[_0x1b82('0x10')](_0x1b82('0x3e'),_0x31fb5d['body']);var _0x3914aa=unholdValidation['validate'](_0x31fb5d[_0x1b82('0x29')]);if(_0x3914aa[_0x1b82('0x24')]>0x0){return _0x29f9ae['status'](0x190)[_0x1b82('0x2a')](_0x3914aa);}var _0x5de11b=_0x31fb5d[_0x1b82('0x29')][_0x1b82('0x33')];var _0x26051f=_0x31fb5d[_0x1b82('0x29')][_0x1b82('0x23')];return getAgent(_0x5de11b)[_0x1b82('0x1a')](function(_0x493491){logger['info'](_0x1b82('0x34'),_0x493491[_0x1b82('0x16')]);emit(util[_0x1b82('0x2d')](_0x1b82('0x2e'),_0x493491[_0x1b82('0x16')]),_0x1b82('0x3f'),{'sessionId':_0x26051f});return _0x29f9ae[_0x1b82('0x17')](0xc8)[_0x1b82('0x2a')]({'error':![],'message':'unhold\x20executed!'});})['catch'](handleError(_0x29f9ae));};exports['calls']=function(_0x2658b5,_0x2a95d2){logger[_0x1b82('0x10')](_0x1b82('0x40'),_0x2a95d2[_0x1b82('0x29')]);var _0x15b0d3=callsValidation[_0x1b82('0xb')](_0x2658b5['body']);if(_0x15b0d3[_0x1b82('0x24')]>0x0){return _0x2a95d2[_0x1b82('0x17')](0x190)[_0x1b82('0x2a')](_0x15b0d3);}var _0x42d3e1=_0x2658b5[_0x1b82('0x29')][_0x1b82('0x33')];var _0x25ee4e=respondWithRpcPromise(_0x1b82('0x1e'));var _0x52d4c5=getAgent(_0x42d3e1);return Promise[_0x1b82('0x1f')]([_0x25ee4e,_0x52d4c5])[_0x1b82('0x1a')](function(_0x39be28){var _0x22c6c8=_0x39be28[0x0];var _0x2bce47=_0x39be28[0x1];var _0x4b5dbc=_['filter'](_0x22c6c8[_0x1b82('0x21')],function(_0x326cda){return _0x326cda[_0x1b82('0x22')]==_0x2bce47['id'];});return _0x2a95d2[_0x1b82('0x17')](0xc8)['json']({'count':_0x4b5dbc[_0x1b82('0x24')],'rows':_0x4b5dbc});})[_0x1b82('0x30')](handleError(_0x2a95d2));};exports[_0x1b82('0x41')]=function(_0x26ad1c,_0x152f84){logger[_0x1b82('0x10')](_0x1b82('0x42'),_0x26ad1c[_0x1b82('0x29')]);var _0x181091=conferenceValidation[_0x1b82('0xb')](_0x26ad1c['body']);if(_0x181091[_0x1b82('0x24')]>0x0){return _0x152f84[_0x1b82('0x17')](0x190)['json'](_0x181091);}var _0x333c5e=_0x26ad1c[_0x1b82('0x29')][_0x1b82('0x33')];return getAgent(_0x333c5e)[_0x1b82('0x1a')](function(_0x4b26c4){logger[_0x1b82('0x10')](_0x1b82('0x34'),_0x4b26c4[_0x1b82('0x16')]);emit(util[_0x1b82('0x2d')](_0x1b82('0x2e'),_0x4b26c4[_0x1b82('0x16')]),'webbar:conference');return _0x152f84[_0x1b82('0x17')](0xc8)['json']({'error':![],'message':_0x1b82('0x43')});})['catch'](handleError(_0x152f84));};exports[_0x1b82('0x44')]=function(_0x2adf0e,_0x3e22ae){logger[_0x1b82('0x10')](_0x1b82('0x45'),_0x2adf0e[_0x1b82('0x29')]);var _0x245f20=transferValidation['validate'](_0x2adf0e[_0x1b82('0x29')]);if(_0x245f20[_0x1b82('0x24')]>0x0){return _0x3e22ae[_0x1b82('0x17')](0x190)[_0x1b82('0x2a')](_0x245f20);}var _0x567b9a=_0x2adf0e[_0x1b82('0x29')][_0x1b82('0x33')];var _0xa763a3=_0x2adf0e[_0x1b82('0x29')][_0x1b82('0x23')];var _0x1873de=_0x2adf0e[_0x1b82('0x29')][_0x1b82('0x46')];return getAgent(_0x567b9a)['then'](function(_0x1cf6b5){logger[_0x1b82('0x10')](_0x1b82('0x34'),_0x1cf6b5['name']);emit(util[_0x1b82('0x2d')](_0x1b82('0x2e'),_0x1cf6b5['name']),_0x1b82('0x47'),{'sessionId':_0xa763a3,'transferNumber':_0x1873de});return _0x3e22ae[_0x1b82('0x17')](0xc8)[_0x1b82('0x2a')]({'error':![],'message':'transfer\x20executed!'});})['catch'](handleError(_0x3e22ae));};
\ No newline at end of file
+var _0x2bc6=['path','lodash','../../mysqldb','client','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','log','handleError:','error','stack','status','send','name','NotFound','request','then','code','message','catch','User','findOne','VoiceChannels','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','validate','callerId','format','user:%s','json','originate\x20executed!','hangup\x20fired:','userId','entityFound:','webbar:hangup','hangup\x20executed!','answer\x20fired:','webbar:answer','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','all','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','transfer\x20executed!'];(function(_0x65e216,_0x568bd5){var _0x4e3e06=function(_0x351fc0){while(--_0x351fc0){_0x65e216['push'](_0x65e216['shift']());}};_0x4e3e06(++_0x568bd5);}(_0x2bc6,0x163));var _0x62bc=function(_0x287f9b,_0x557885){_0x287f9b=_0x287f9b-0x0;var _0x5248bb=_0x2bc6[_0x287f9b];return _0x5248bb;};'use strict';var path=require(_0x62bc('0x0'));var fs=require('fs');var _=require(_0x62bc('0x1'));var db=require(_0x62bc('0x2'))['db'];var config=require('../../config/environment');var util=require('util');var BPromise=require('bluebird');var jayson=require('jayson/promise');var amiClient=jayson[_0x62bc('0x3')]['http']({'port':0x232a});var logger=require(_0x62bc('0x4'))(_0x62bc('0x5'));var Redis=require('ioredis');config[_0x62bc('0x6')]=_[_0x62bc('0x7')](config[_0x62bc('0x6')],{'host':_0x62bc('0x8'),'port':0x18eb});var io=require(_0x62bc('0x9'))(new Redis(config[_0x62bc('0x6')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'callNumber':{'type':_0x62bc('0xc'),'required':[!![],_0x62bc('0xd')]},'callerId':{'type':'string'},'callbackUrl':{'type':_0x62bc('0xc')}});var hangupValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':_0x62bc('0xc'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':_0x62bc('0xc'),'required':[!![],_0x62bc('0xe')]},'transferNumber':{'type':'string','required':[!![],_0x62bc('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x62bc('0xc'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x62bc('0xa'),'required':[!![],_0x62bc('0xb')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x39c5e0,_0x2d6820,_0x5bb569){logger[_0x62bc('0x10')](_0x39c5e0,_0x2d6820,JSON[_0x62bc('0x11')](_0x5bb569));io['to'](_0x39c5e0)[_0x62bc('0x12')](_0x2d6820,_0x5bb569);}function handleError(_0x1e2405){return function(_0xc95407){console[_0x62bc('0x13')](_0x62bc('0x14'),_0xc95407,_0xc95407 instanceof RangeError);logger[_0x62bc('0x15')](_0xc95407[_0x62bc('0x16')]);if(_0xc95407 instanceof RangeError){if(_0xc95407['name']){delete _0xc95407['name'];}_0x1e2405[_0x62bc('0x17')](0x194)[_0x62bc('0x18')](_0xc95407);}else{if(_0xc95407[_0x62bc('0x19')]){delete _0xc95407['name'];}_0x1e2405[_0x62bc('0x17')](0x1f4)['send'](_0xc95407);}};}function checkError(){return function(_0x30e7d9){if(!_0x30e7d9){throw new RangeError(_0x62bc('0x1a'));}return _0x30e7d9;};}function respondWithRpcPromise(_0x1b6689,_0x5e2e9b){return new BPromise(function(_0x3b8644,_0x28757d){var _0xae87bf=amiClient;return _0xae87bf[_0x62bc('0x1b')](_0x1b6689,_0x5e2e9b)[_0x62bc('0x1c')](function(_0x3b2eb0){if(_0x3b2eb0['error']){if(_0x3b2eb0[_0x62bc('0x15')][_0x62bc('0x1d')]===0x1f4){return _0x28757d(_0x3b2eb0[_0x62bc('0x15')][_0x62bc('0x1e')]);}return _0x3b8644(_0x3b2eb0[_0x62bc('0x15')]['message']);}else{_0x3b8644(_0x3b2eb0['result']);}})[_0x62bc('0x1f')](function(_0x58e76a){_0x28757d(_0x58e76a);});});}function getAgent(_0x32e749){return db[_0x62bc('0x20')][_0x62bc('0x21')]({'where':{'id':_0x32e749,'role':'agent'}})[_0x62bc('0x1c')](checkError());}function getAgentCheckSession(_0x19e689,_0x32e03c){return new BPromise(function(_0x5c03ac,_0x5b26ce){var _0x641626=respondWithRpcPromise(_0x62bc('0x22'));var _0x23817c=getAgent(_0x19e689);Promise['all']([_0x641626,_0x23817c])[_0x62bc('0x1c')](function(_0x1f2985){var _0x44600f=_0x1f2985[0x0];var _0x444267=_0x1f2985[0x1];var _0x5a9302=_[_0x62bc('0x23')](_0x44600f['rows'],function(_0x26701b){return _0x26701b[_0x62bc('0x24')]==_0x444267['id']&&_0x26701b[_0x62bc('0x25')]==_0x32e03c;});if(_0x5a9302[_0x62bc('0x26')]==0x1){_0x5c03ac(_0x444267);}else{_0x5b26ce(new RangeError(_0x62bc('0x27')+_0x32e03c+_0x62bc('0x28')));}});});}exports[_0x62bc('0x29')]=function(_0x12d443,_0x406063){logger[_0x62bc('0x10')](_0x62bc('0x2a'),_0x12d443[_0x62bc('0x2b')]);var _0x1668ab=originateValidation[_0x62bc('0x2c')](_0x12d443[_0x62bc('0x2b')]);if(_0x1668ab[_0x62bc('0x26')]>0x0){return _0x406063[_0x62bc('0x17')](0x190)['json'](_0x1668ab);}var _0x32e3a9=_0x12d443['body']['userId'];var _0x2823ef=_0x12d443['body']['callNumber'];var _0x512dac=_0x12d443[_0x62bc('0x2b')][_0x62bc('0x2d')];var _0x26e043=_0x12d443['body']['callbackUrl'];return getAgent(_0x32e3a9)['then'](function(_0x3c938d){logger[_0x62bc('0x10')]('entityFound:',_0x3c938d['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3c938d[_0x62bc('0x19')]),'webbar:originate',{'callNumber':_0x2823ef,'callerId':_0x512dac,'callbackUrl':_0x26e043});return _0x406063[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x31')});})[_0x62bc('0x1f')](handleError(_0x406063));};exports['hangup']=function(_0x42a777,_0x2caa71){logger['info'](_0x62bc('0x32'),_0x42a777[_0x62bc('0x2b')]);var _0x24dbbe=hangupValidation[_0x62bc('0x2c')](_0x42a777['body']);if(_0x24dbbe[_0x62bc('0x26')]>0x0){return _0x2caa71['status'](0x190)[_0x62bc('0x30')](_0x24dbbe);}var _0x19a6e2=_0x42a777[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x5c0d67=_0x42a777[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0x19a6e2)[_0x62bc('0x1c')](function(_0x176b1f){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x176b1f[_0x62bc('0x19')]);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x176b1f[_0x62bc('0x19')]),_0x62bc('0x35'),{'sessionId':_0x5c0d67});return _0x2caa71['status'](0xc8)['json']({'error':![],'message':_0x62bc('0x36')});})[_0x62bc('0x1f')](handleError(_0x2caa71));};exports['answer']=function(_0x1cf503,_0x366505){logger[_0x62bc('0x10')](_0x62bc('0x37'),_0x1cf503[_0x62bc('0x2b')]);var _0x5f3752=answerValidation[_0x62bc('0x2c')](_0x1cf503[_0x62bc('0x2b')]);if(_0x5f3752['length']>0x0){return _0x366505['status'](0x190)[_0x62bc('0x30')](_0x5f3752);}var _0xdbd9ee=_0x1cf503[_0x62bc('0x2b')]['userId'];var _0x185423=_0x1cf503[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0xdbd9ee)[_0x62bc('0x1c')](function(_0x467d22){logger[_0x62bc('0x10')]('entityFound:',_0x467d22[_0x62bc('0x19')]);emit(util['format'](_0x62bc('0x2f'),_0x467d22[_0x62bc('0x19')]),_0x62bc('0x38'),{'sessionId':_0x185423});return _0x366505['status'](0xc8)['json']({'error':![],'message':'answer\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x366505));};exports['hold']=function(_0x10ea2e,_0x10ffa0){logger['info']('hold\x20fired:',_0x10ea2e['body']);var _0x4ce5fa=holdValidation[_0x62bc('0x2c')](_0x10ea2e[_0x62bc('0x2b')]);if(_0x4ce5fa[_0x62bc('0x26')]>0x0){return _0x10ffa0[_0x62bc('0x17')](0x190)['json'](_0x4ce5fa);}var _0x3834b2=_0x10ea2e[_0x62bc('0x2b')]['userId'];var _0x1c0026=_0x10ea2e['body'][_0x62bc('0x25')];return getAgent(_0x3834b2)[_0x62bc('0x1c')](function(_0x17e0ec){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x17e0ec[_0x62bc('0x19')]);emit(util[_0x62bc('0x2e')]('user:%s',_0x17e0ec[_0x62bc('0x19')]),_0x62bc('0x39'),{'sessionId':_0x1c0026});return _0x10ffa0['status'](0xc8)[_0x62bc('0x30')]({'error':![],'message':'hold\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x10ffa0));};exports[_0x62bc('0x3a')]=function(_0x4bec08,_0x6c2969){logger[_0x62bc('0x10')](_0x62bc('0x3b'),_0x4bec08['body']);var _0xed0bef=unholdValidation[_0x62bc('0x2c')](_0x4bec08[_0x62bc('0x2b')]);if(_0xed0bef[_0x62bc('0x26')]>0x0){return _0x6c2969[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0xed0bef);}var _0xe9ea36=_0x4bec08[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x1fb6d3=_0x4bec08[_0x62bc('0x2b')][_0x62bc('0x25')];return getAgent(_0xe9ea36)[_0x62bc('0x1c')](function(_0x3bb89a){logger[_0x62bc('0x10')](_0x62bc('0x34'),_0x3bb89a['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3bb89a[_0x62bc('0x19')]),_0x62bc('0x3c'),{'sessionId':_0x1fb6d3});return _0x6c2969[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x3d')});})[_0x62bc('0x1f')](handleError(_0x6c2969));};exports[_0x62bc('0x3e')]=function(_0x4142dd,_0x2f2322){logger[_0x62bc('0x10')]('calls\x20fired:',_0x2f2322[_0x62bc('0x2b')]);var _0x50d761=callsValidation[_0x62bc('0x2c')](_0x4142dd[_0x62bc('0x2b')]);if(_0x50d761[_0x62bc('0x26')]>0x0){return _0x2f2322[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0x50d761);}var _0xb6e13e=_0x4142dd[_0x62bc('0x2b')][_0x62bc('0x33')];var _0x4934ce=respondWithRpcPromise('VoiceChannels');var _0xd35ce2=getAgent(_0xb6e13e);return Promise[_0x62bc('0x3f')]([_0x4934ce,_0xd35ce2])[_0x62bc('0x1c')](function(_0x56bccf){var _0x221681=_0x56bccf[0x0];var _0x1325a4=_0x56bccf[0x1];var _0x14064d=_[_0x62bc('0x23')](_0x221681['rows'],function(_0x19e990){return _0x19e990[_0x62bc('0x24')]==_0x1325a4['id'];});return _0x2f2322[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'count':_0x14064d[_0x62bc('0x26')],'rows':_0x14064d});})[_0x62bc('0x1f')](handleError(_0x2f2322));};exports[_0x62bc('0x40')]=function(_0x4f196a,_0x32d424){logger[_0x62bc('0x10')](_0x62bc('0x41'),_0x4f196a['body']);var _0x4a56b7=conferenceValidation[_0x62bc('0x2c')](_0x4f196a[_0x62bc('0x2b')]);if(_0x4a56b7[_0x62bc('0x26')]>0x0){return _0x32d424['status'](0x190)[_0x62bc('0x30')](_0x4a56b7);}var _0x579c0c=_0x4f196a[_0x62bc('0x2b')][_0x62bc('0x33')];return getAgent(_0x579c0c)['then'](function(_0x3884b0){logger['info'](_0x62bc('0x34'),_0x3884b0['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x3884b0[_0x62bc('0x19')]),_0x62bc('0x42'));return _0x32d424[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':'conference\x20executed!'});})[_0x62bc('0x1f')](handleError(_0x32d424));};exports[_0x62bc('0x43')]=function(_0x2e28e4,_0x4e5478){logger[_0x62bc('0x10')](_0x62bc('0x44'),_0x2e28e4[_0x62bc('0x2b')]);var _0x132509=transferValidation['validate'](_0x2e28e4[_0x62bc('0x2b')]);if(_0x132509[_0x62bc('0x26')]>0x0){return _0x4e5478[_0x62bc('0x17')](0x190)[_0x62bc('0x30')](_0x132509);}var _0x31d5f0=_0x2e28e4['body']['userId'];var _0x280f73=_0x2e28e4['body'][_0x62bc('0x25')];var _0x18779a=_0x2e28e4['body'][_0x62bc('0x45')];return getAgent(_0x31d5f0)['then'](function(_0x2a3599){logger['info'](_0x62bc('0x34'),_0x2a3599['name']);emit(util[_0x62bc('0x2e')](_0x62bc('0x2f'),_0x2a3599[_0x62bc('0x19')]),'webbar:transfer',{'sessionId':_0x280f73,'transferNumber':_0x18779a});return _0x4e5478[_0x62bc('0x17')](0xc8)[_0x62bc('0x30')]({'error':![],'message':_0x62bc('0x46')});})[_0x62bc('0x1f')](handleError(_0x4e5478));};
\ No newline at end of file
index db89dae..447efbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','getAgents','getApplications','post','create','addDisposition','addAnswer','addAgents','/:id/applications','addApplications','notify','/:id/send','put','update','delete','destroy'];(function(_0x4f8b12,_0x136e45){var _0x4fe3f0=function(_0x5e37f7){while(--_0x5e37f7){_0x4f8b12['push'](_0x4f8b12['shift']());}};_0x4fe3f0(++_0x136e45);}(_0xdb28,0x106));var _0x8db2=function(_0x2b9f2b,_0x135752){_0x2b9f2b=_0x2b9f2b-0x0;var _0x215a46=_0xdb28[_0x2b9f2b];return _0x215a46;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./whatsappAccount.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getAnswers']);router[_0x8db2('0x9')](_0x8db2('0x12'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x9')]('/:id/applications',auth['isAuthenticated'](),controller[_0x8db2('0x14')]);router[_0x8db2('0x15')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);router[_0x8db2('0x15')](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x17')]);router[_0x8db2('0x15')](_0x8db2('0x11'),auth['isAuthenticated'](),controller[_0x8db2('0x18')]);router[_0x8db2('0x15')]('/:id/users',auth[_0x8db2('0xa')](),controller[_0x8db2('0x19')]);router[_0x8db2('0x15')](_0x8db2('0x1a'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1b')]);router['post']('/:id/notify',controller[_0x8db2('0x1c')]);router[_0x8db2('0x15')](_0x8db2('0x1d'),auth[_0x8db2('0xa')](),controller['send']);router[_0x8db2('0x1e')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x1f')]);router[_0x8db2('0x20')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x21')]);router[_0x8db2('0x20')](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x22')]);router[_0x8db2('0x20')]('/:id/canned_answers',auth[_0x8db2('0xa')](),controller['removeAnswers']);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0x8db2('0x23')]);module[_0x8db2('0x24')]=router;
\ No newline at end of file
+var _0x1623=['destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','./whatsappAccount.controller','isAuthenticated','index','/describe','describe','get','/:id','show','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','getApplications','post','/:id/dispositions','addAgents','/:id/notify','notify','update'];(function(_0x556927,_0x34b53f){var _0x5f1235=function(_0x4f4e44){while(--_0x4f4e44){_0x556927['push'](_0x556927['shift']());}};_0x5f1235(++_0x34b53f);}(_0x1623,0xab));var _0x3162=function(_0x21148c,_0x4eca83){_0x21148c=_0x21148c-0x0;var _0x3f2bf2=_0x1623[_0x21148c];return _0x3f2bf2;};'use strict';var multer=require(_0x3162('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x3162('0x1'));var express=require(_0x3162('0x2'));var router=express[_0x3162('0x3')]();var fs_extra=require(_0x3162('0x4'));var auth=require(_0x3162('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x3162('0x6'));router['get']('/',auth[_0x3162('0x7')](),controller[_0x3162('0x8')]);router['get'](_0x3162('0x9'),auth[_0x3162('0x7')](),controller[_0x3162('0xa')]);router[_0x3162('0xb')](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0xd')]);router[_0x3162('0xb')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x3162('0xe')]);router[_0x3162('0xb')](_0x3162('0xf'),auth[_0x3162('0x7')](),controller[_0x3162('0x10')]);router[_0x3162('0xb')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x12')]);router['get'](_0x3162('0x13'),auth['isAuthenticated'](),controller[_0x3162('0x14')]);router[_0x3162('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x3162('0x15')](_0x3162('0x16'),auth[_0x3162('0x7')](),controller['addDisposition']);router[_0x3162('0x15')](_0x3162('0xf'),auth[_0x3162('0x7')](),controller['addAnswer']);router[_0x3162('0x15')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x17')]);router[_0x3162('0x15')](_0x3162('0x13'),auth[_0x3162('0x7')](),controller['addApplications']);router[_0x3162('0x15')](_0x3162('0x18'),controller[_0x3162('0x19')]);router[_0x3162('0x15')]('/:id/send',auth[_0x3162('0x7')](),controller['send']);router['put'](_0x3162('0xc'),auth[_0x3162('0x7')](),controller[_0x3162('0x1a')]);router['delete']('/:id',auth[_0x3162('0x7')](),controller[_0x3162('0x1b')]);router[_0x3162('0x1c')](_0x3162('0x16'),auth[_0x3162('0x7')](),controller[_0x3162('0x1d')]);router[_0x3162('0x1c')](_0x3162('0xf'),auth['isAuthenticated'](),controller[_0x3162('0x1e')]);router[_0x3162('0x1c')](_0x3162('0x11'),auth[_0x3162('0x7')](),controller[_0x3162('0x1f')]);module[_0x3162('0x20')]=router;
\ No newline at end of file
index 6beca38..f7715d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9933=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate','ENUM'];(function(_0x399873,_0x5dc5eb){var _0x451c43=function(_0x4a5f1c){while(--_0x4a5f1c){_0x399873['push'](_0x399873['shift']());}};_0x451c43(++_0x5dc5eb);}(_0x9933,0x1d9));var _0x3993=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x9933[_0x465a0c];return _0x1e202e;};'use strict';var Sequelize=require(_0x3993('0x0'));var rs=require(_0x3993('0x1'));module[_0x3993('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0x3993('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x3993('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0x3993('0x4')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3993('0x5')]();}},'phone':{'type':Sequelize[_0x3993('0x4')]},'type':{'type':Sequelize[_0x3993('0x6')]('twilio')},'accountSid':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x3993('0x4')]},'notificationTemplate':{'type':Sequelize[_0x3993('0x7')],'defaultValue':function(){return _0x3993('0x8');}},'notificationSound':{'type':Sequelize[_0x3993('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x3993('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x3993('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3993('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3993('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3993('0xa')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3993('0x9')],'defaultValue':![],'comment':_0x3993('0xb'),'set':function(_0x2e4e36){if(!_0x2e4e36){this[_0x3993('0xc')](_0x3993('0xd'),null);}this[_0x3993('0xc')](_0x3993('0xe'),_0x2e4e36);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xcd8e=['generate','ENUM','twilio','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x2ae040,_0x391121){var _0x3ab366=function(_0xb1fe56){while(--_0xb1fe56){_0x2ae040['push'](_0x2ae040['shift']());}};_0x3ab366(++_0x391121);}(_0xcd8e,0x16b));var _0xecd8=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xcd8e[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0xecd8('0x0'));var rs=require(_0xecd8('0x1'));module[_0xecd8('0x2')]={'name':{'type':Sequelize[_0xecd8('0x3')],'unique':_0xecd8('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0xecd8('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xecd8('0x5')]();}},'phone':{'type':Sequelize[_0xecd8('0x3')]},'type':{'type':Sequelize[_0xecd8('0x6')](_0xecd8('0x7'))},'accountSid':{'type':Sequelize[_0xecd8('0x3')]},'authToken':{'type':Sequelize[_0xecd8('0x3')]},'notificationTemplate':{'type':Sequelize[_0xecd8('0x8')],'defaultValue':function(){return _0xecd8('0x9');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xecd8('0xa')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xecd8('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xecd8('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xecd8('0xa')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xecd8('0xb')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xecd8('0xc'),'set':function(_0x33339f){if(!_0x33339f){this[_0xecd8('0xd')](_0xecd8('0xe'),null);}this[_0xecd8('0xd')](_0xecd8('0xf'),_0x33339f);}},'description':{'type':Sequelize[_0xecd8('0x3')]}};
\ No newline at end of file
index 406d723..e496922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2d9=['userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','addApplications','sequelize','transaction','WhatsappApplication','findAndCountAll','priority','getApplications','notify','whatsapp','applications','orderBy','Applications','asc','account','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','replace','Body','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','contact','WhatsappInteraction','interaction','created','autoclose','close','unmanaged','*,*,*,*','messageId','ContactId','UserId','User','unshift','Start','startRouting','receiveMessage','entity\x20found','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','List','DESC','out','WhatsappMessage','dataValues','Messages','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappAccount.socket','register','client','http','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','get','UserProfileResource','name','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','params','Pause','keys','options','create','body','user','WhatsappAccounts','UserProfileSection','find','userProfileId','autoAssociation','WhatsappAccountId','getDispositions','findOne','Disposition','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','omit','spread','emit'];(function(_0xe6e78c,_0x582369){var _0x2a09c8=function(_0x470ccc){while(--_0x470ccc){_0xe6e78c['push'](_0xe6e78c['shift']());}};_0x2a09c8(++_0x582369);}(_0xb2d9,0x1a6));var _0x9b2d=function(_0x142a0d,_0x2c6d2c){_0x142a0d=_0x142a0d-0x0;var _0x320232=_0xb2d9[_0x142a0d];return _0x320232;};'use strict';var emlformat=require(_0x9b2d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x9b2d('0x1'));var rp=require(_0x9b2d('0x2'));var moment=require(_0x9b2d('0x3'));var BPromise=require(_0x9b2d('0x4'));var Mustache=require(_0x9b2d('0x5'));var util=require('util');var path=require(_0x9b2d('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9b2d('0x7'));var fs=require('fs');var fs_extra=require(_0x9b2d('0x8'));var _=require(_0x9b2d('0x9'));var squel=require(_0x9b2d('0xa'));var crypto=require(_0x9b2d('0xb'));var jsforce=require(_0x9b2d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9b2d('0xd'));var querystring=require('querystring');var Papa=require(_0x9b2d('0xe'));var Redis=require(_0x9b2d('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x9b2d('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9b2d('0x11'));var logger=require(_0x9b2d('0x12'))('api');var utils=require(_0x9b2d('0x13'));var config=require(_0x9b2d('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b2d('0x15'))['db'];config['redis']=_['defaults'](config[_0x9b2d('0x16')],{'host':_0x9b2d('0x17'),'port':0x18eb});var socket=require(_0x9b2d('0x18'))(new Redis(config[_0x9b2d('0x16')]));require(_0x9b2d('0x19'))[_0x9b2d('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson[_0x9b2d('0x1b')][_0x9b2d('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x24c825,_0x3f28c3,_0x1b860f,_0x50aa63){return new BPromise(function(_0x59920d,_0xda2e04){var _0x422944=_0x50aa63||client;return _0x422944[_0x9b2d('0x1d')](_0x24c825,_0x1b860f)[_0x9b2d('0x1e')](function(_0x5f5136){logger['info'](_0x9b2d('0x1f'),_0x3f28c3,_0x9b2d('0x20'));logger['debug'](_0x9b2d('0x21'),_0x3f28c3,_0x9b2d('0x20'),JSON[_0x9b2d('0x22')](_0x5f5136));if(_0x5f5136[_0x9b2d('0x23')]){if(_0x5f5136[_0x9b2d('0x23')][_0x9b2d('0x24')]===0x1f4){logger[_0x9b2d('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x3f28c3,_0x5f5136[_0x9b2d('0x23')][_0x9b2d('0x25')]);return _0xda2e04(_0x5f5136[_0x9b2d('0x23')][_0x9b2d('0x25')]);}logger[_0x9b2d('0x23')](_0x9b2d('0x1f'),_0x3f28c3,_0x5f5136[_0x9b2d('0x23')][_0x9b2d('0x25')]);return _0x59920d(_0x5f5136['error'][_0x9b2d('0x25')]);}else{logger[_0x9b2d('0x26')](_0x9b2d('0x1f'),_0x3f28c3,_0x9b2d('0x20'));_0x59920d(_0x5f5136[_0x9b2d('0x27')][_0x9b2d('0x25')]);}})[_0x9b2d('0x28')](function(_0x205e9a){logger[_0x9b2d('0x23')](_0x9b2d('0x1f'),_0x3f28c3,_0x205e9a);_0xda2e04(_0x205e9a);});});}function respondWithStatusCode(_0x53bf49,_0x5e9a5c){_0x5e9a5c=_0x5e9a5c||0xcc;return function(_0x45e70f){if(_0x45e70f){return _0x53bf49[_0x9b2d('0x29')](_0x5e9a5c);}return _0x53bf49['status'](_0x5e9a5c)[_0x9b2d('0x2a')]();};}function respondWithResult(_0x23a602,_0x1eede3){_0x1eede3=_0x1eede3||0xc8;return function(_0x5d95d4){if(_0x5d95d4){return _0x23a602[_0x9b2d('0x2b')](_0x1eede3)[_0x9b2d('0x2c')](_0x5d95d4);}};}function respondWithFilteredResult(_0x36bb6e,_0x5e13b8){return function(_0x48fcf2){if(_0x48fcf2){var _0x419f0d=typeof _0x5e13b8[_0x9b2d('0x2d')]==='undefined'&&typeof _0x5e13b8[_0x9b2d('0x2e')]===_0x9b2d('0x2f');var _0x498261=_0x48fcf2[_0x9b2d('0x30')];var _0x5147ef=_0x419f0d?0x0:_0x5e13b8[_0x9b2d('0x2d')];var _0x5e3a17=_0x419f0d?_0x48fcf2[_0x9b2d('0x30')]:_0x5e13b8[_0x9b2d('0x2d')]+_0x5e13b8['limit'];var _0x2701d7;if(_0x5e3a17>=_0x498261){_0x5e3a17=_0x498261;_0x2701d7=0xc8;}else{_0x2701d7=0xce;}_0x36bb6e[_0x9b2d('0x2b')](_0x2701d7);return _0x36bb6e[_0x9b2d('0x31')](_0x9b2d('0x32'),_0x5147ef+'-'+_0x5e3a17+'/'+_0x498261)[_0x9b2d('0x2c')](_0x48fcf2);}return null;};}function patchUpdates(_0x4a727c){return function(_0xf68aea){try{jsonpatch[_0x9b2d('0x33')](_0xf68aea,_0x4a727c,!![]);}catch(_0x10d179){return BPromise['reject'](_0x10d179);}return _0xf68aea['save']();};}function saveUpdates(_0xa8f962,_0x4b861d){return function(_0x193b58){if(_0x193b58){return _0x193b58[_0x9b2d('0x34')](_0xa8f962)[_0x9b2d('0x1e')](function(_0x3636c7){return _0x3636c7;});}return null;};}function removeEntity(_0x837c5a,_0x228fbe){return function(_0x2de7be){if(_0x2de7be){return _0x2de7be[_0x9b2d('0x35')]()['then'](function(){var _0x11a7e7=_0x2de7be[_0x9b2d('0x36')]({'plain':!![]});var _0x21965d='WhatsappAccounts';return db[_0x9b2d('0x37')]['destroy']({'where':{'type':_0x21965d,'resourceId':_0x11a7e7['id']}})['then'](function(){return _0x2de7be;});})[_0x9b2d('0x1e')](function(){_0x837c5a[_0x9b2d('0x2b')](0xcc)[_0x9b2d('0x2a')]();});}};}function handleEntityNotFound(_0x1a1e88,_0x5d2fa1){return function(_0x351d5b){if(!_0x351d5b){_0x1a1e88[_0x9b2d('0x29')](0x194);}return _0x351d5b;};}function handleError(_0x1db054,_0x5ee46a){_0x5ee46a=_0x5ee46a||0x1f4;return function(_0x19fa6d){logger[_0x9b2d('0x23')](_0x19fa6d['stack']);if(_0x19fa6d[_0x9b2d('0x38')]){delete _0x19fa6d[_0x9b2d('0x38')];}_0x1db054['status'](_0x5ee46a)['send'](_0x19fa6d);};}exports['index']=function(_0x1a283d,_0xc9294f){var _0x583a0b={'include':[{'model':db['Pause'],'as':_0x9b2d('0x39')}]},_0x3dfb57={},_0x1e98f8={'count':0x0,'rows':[]};var _0x2fc4c0=_[_0x9b2d('0x3a')](db[_0x9b2d('0x3b')][_0x9b2d('0x3c')],function(_0x29f089){return{'name':_0x29f089[_0x9b2d('0x3d')],'type':_0x29f089['type'][_0x9b2d('0x3e')]};});_0x3dfb57[_0x9b2d('0x3f')]=_[_0x9b2d('0x3a')](_0x2fc4c0,_0x9b2d('0x38'));_0x3dfb57[_0x9b2d('0x40')]=_['keys'](_0x1a283d[_0x9b2d('0x40')]);_0x3dfb57[_0x9b2d('0x41')]=_[_0x9b2d('0x42')](_0x3dfb57['model'],_0x3dfb57['query']);_0x583a0b[_0x9b2d('0x43')]=_[_0x9b2d('0x42')](_0x3dfb57[_0x9b2d('0x3f')],qs[_0x9b2d('0x44')](_0x1a283d[_0x9b2d('0x40')][_0x9b2d('0x44')]));_0x583a0b[_0x9b2d('0x43')]=_0x583a0b[_0x9b2d('0x43')][_0x9b2d('0x45')]?_0x583a0b['attributes']:_0x3dfb57[_0x9b2d('0x3f')];if(!_0x1a283d[_0x9b2d('0x40')][_0x9b2d('0x46')](_0x9b2d('0x47'))){_0x583a0b[_0x9b2d('0x2e')]=qs[_0x9b2d('0x2e')](_0x1a283d['query'][_0x9b2d('0x2e')]);_0x583a0b[_0x9b2d('0x2d')]=qs[_0x9b2d('0x2d')](_0x1a283d['query'][_0x9b2d('0x2d')]);}_0x583a0b[_0x9b2d('0x48')]=qs[_0x9b2d('0x49')](_0x1a283d['query'][_0x9b2d('0x49')]);_0x583a0b[_0x9b2d('0x4a')]=qs['filters'](_[_0x9b2d('0x4b')](_0x1a283d[_0x9b2d('0x40')],_0x3dfb57[_0x9b2d('0x41')]),_0x2fc4c0);if(_0x1a283d[_0x9b2d('0x40')][_0x9b2d('0x4c')]){_0x583a0b[_0x9b2d('0x4a')]=_[_0x9b2d('0x4d')](_0x583a0b[_0x9b2d('0x4a')],{'$or':_[_0x9b2d('0x3a')](_0x2fc4c0,function(_0x40b7f8){if(_0x40b7f8[_0x9b2d('0x4e')]!==_0x9b2d('0x4f')){var _0xb7a856={};_0xb7a856[_0x40b7f8['name']]={'$like':'%'+_0x1a283d[_0x9b2d('0x40')][_0x9b2d('0x4c')]+'%'};return _0xb7a856;}})});}_0x583a0b=_['merge']({},_0x583a0b,_0x1a283d['options']);var _0x169993={'where':_0x583a0b[_0x9b2d('0x4a')]};return db[_0x9b2d('0x3b')][_0x9b2d('0x30')](_0x169993)[_0x9b2d('0x1e')](function(_0xd94124){_0x1e98f8[_0x9b2d('0x30')]=_0xd94124;if(_0x1a283d['query'][_0x9b2d('0x50')]){_0x583a0b[_0x9b2d('0x51')]=[{'all':!![]}];}return db['WhatsappAccount'][_0x9b2d('0x52')](_0x583a0b);})[_0x9b2d('0x1e')](function(_0x179c7f){_0x1e98f8[_0x9b2d('0x53')]=_0x179c7f;return _0x1e98f8;})[_0x9b2d('0x1e')](respondWithFilteredResult(_0xc9294f,_0x583a0b))['catch'](handleError(_0xc9294f,null));};exports['show']=function(_0x40bb7c,_0xcb6a68){var _0xe2aa05={'raw':![],'where':{'id':_0x40bb7c[_0x9b2d('0x54')]['id']},'include':[{'model':db[_0x9b2d('0x55')],'as':_0x9b2d('0x39')}]},_0x2cf401={};_0x2cf401[_0x9b2d('0x3f')]=_[_0x9b2d('0x56')](db[_0x9b2d('0x3b')][_0x9b2d('0x3c')]);_0x2cf401[_0x9b2d('0x40')]=_['keys'](_0x40bb7c[_0x9b2d('0x40')]);_0x2cf401[_0x9b2d('0x41')]=_['intersection'](_0x2cf401[_0x9b2d('0x3f')],_0x2cf401[_0x9b2d('0x40')]);_0xe2aa05[_0x9b2d('0x43')]=_[_0x9b2d('0x42')](_0x2cf401[_0x9b2d('0x3f')],qs[_0x9b2d('0x44')](_0x40bb7c[_0x9b2d('0x40')][_0x9b2d('0x44')]));_0xe2aa05[_0x9b2d('0x43')]=_0xe2aa05['attributes'][_0x9b2d('0x45')]?_0xe2aa05[_0x9b2d('0x43')]:_0x2cf401[_0x9b2d('0x3f')];if(_0x40bb7c[_0x9b2d('0x40')]['includeAll']){_0xe2aa05['include']=[{'all':!![]}];}_0xe2aa05=_[_0x9b2d('0x4d')]({},_0xe2aa05,_0x40bb7c[_0x9b2d('0x57')]);return db[_0x9b2d('0x3b')]['find'](_0xe2aa05)[_0x9b2d('0x1e')](handleEntityNotFound(_0xcb6a68,null))['then'](respondWithResult(_0xcb6a68,null))[_0x9b2d('0x28')](handleError(_0xcb6a68,null));};exports[_0x9b2d('0x58')]=function(_0x24fbd5,_0x3a16f3){return db[_0x9b2d('0x3b')]['create'](_0x24fbd5[_0x9b2d('0x59')],{})['then'](function(_0x17a246){var _0x3f846d=_0x24fbd5[_0x9b2d('0x5a')][_0x9b2d('0x36')]({'plain':!![]});if(!_0x3f846d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3f846d['role']==='user'){var _0x217278=_0x17a246[_0x9b2d('0x36')]({'plain':!![]});var _0x7b5dba=_0x9b2d('0x5b');return db[_0x9b2d('0x5c')][_0x9b2d('0x5d')]({'where':{'name':_0x7b5dba,'userProfileId':_0x3f846d[_0x9b2d('0x5e')]},'raw':!![]})[_0x9b2d('0x1e')](function(_0x487425){if(_0x487425&&_0x487425[_0x9b2d('0x5f')]===0x0){return db[_0x9b2d('0x37')][_0x9b2d('0x58')]({'name':_0x217278[_0x9b2d('0x38')],'resourceId':_0x217278['id'],'type':_0x487425[_0x9b2d('0x38')],'sectionId':_0x487425['id']},{})[_0x9b2d('0x1e')](function(){return _0x17a246;});}else{return _0x17a246;}})['catch'](function(_0x1a5283){logger[_0x9b2d('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1a5283);throw _0x1a5283;});}return _0x17a246;})[_0x9b2d('0x1e')](respondWithResult(_0x3a16f3,0xc9))[_0x9b2d('0x28')](handleError(_0x3a16f3,null));};exports[_0x9b2d('0x34')]=function(_0x49431e,_0x13db97){if(_0x49431e[_0x9b2d('0x59')]['id']){delete _0x49431e[_0x9b2d('0x59')]['id'];}return db['WhatsappAccount'][_0x9b2d('0x5d')]({'where':{'id':_0x49431e[_0x9b2d('0x54')]['id']},'include':[{'model':db['Pause'],'as':_0x9b2d('0x39')}]})['then'](handleEntityNotFound(_0x13db97,null))[_0x9b2d('0x1e')](saveUpdates(_0x49431e[_0x9b2d('0x59')],null))[_0x9b2d('0x1e')](respondWithResult(_0x13db97,null))['catch'](handleError(_0x13db97,null));};exports['destroy']=function(_0x1c78db,_0xf0b2dd){return db[_0x9b2d('0x3b')][_0x9b2d('0x5d')]({'where':{'id':_0x1c78db['params']['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0xf0b2dd,null))[_0x9b2d('0x1e')](removeEntity(_0xf0b2dd,null))[_0x9b2d('0x28')](handleError(_0xf0b2dd,null));};exports['describe']=function(_0x2fdf09,_0x1ec868){return db['WhatsappAccount']['describe']()[_0x9b2d('0x1e')](respondWithResult(_0x1ec868,null))[_0x9b2d('0x28')](handleError(_0x1ec868,null));};exports['addDisposition']=function(_0x5ce3e5,_0x498320,_0x5e27d4){if(_0x5ce3e5['body']['id']){delete _0x5ce3e5[_0x9b2d('0x59')]['id'];}return db['WhatsappAccount'][_0x9b2d('0x5d')]({'where':{'id':_0x5ce3e5['params']['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x498320,null))[_0x9b2d('0x1e')](function(_0x52a536){if(_0x52a536){_0x5ce3e5[_0x9b2d('0x59')][_0x9b2d('0x60')]=_0x52a536['id'];return db['Disposition'][_0x9b2d('0x58')](_0x5ce3e5[_0x9b2d('0x59')]);}})[_0x9b2d('0x1e')](respondWithResult(_0x498320,null))[_0x9b2d('0x28')](handleError(_0x498320,null));};exports[_0x9b2d('0x61')]=function(_0x1eb973,_0x41c51d,_0x89d482){var _0x5f4b12={'raw':![],'where':{}};var _0x3cf019={};var _0x5c31f7={'count':0x0,'rows':[]};return db[_0x9b2d('0x3b')][_0x9b2d('0x62')]({'where':{'id':_0x1eb973['params']['id']}})['then'](handleEntityNotFound(_0x41c51d,null))[_0x9b2d('0x1e')](function(_0x2b389a){if(_0x2b389a){_0x3cf019[_0x9b2d('0x3f')]=_['keys'](db[_0x9b2d('0x63')][_0x9b2d('0x3c')]);_0x3cf019[_0x9b2d('0x40')]=_[_0x9b2d('0x56')](_0x1eb973[_0x9b2d('0x40')]);_0x3cf019[_0x9b2d('0x41')]=_[_0x9b2d('0x42')](_0x3cf019[_0x9b2d('0x3f')],_0x3cf019[_0x9b2d('0x40')]);_0x5f4b12['attributes']=_[_0x9b2d('0x42')](_0x3cf019['model'],qs['fields'](_0x1eb973[_0x9b2d('0x40')][_0x9b2d('0x44')]));_0x5f4b12[_0x9b2d('0x43')]=_0x5f4b12[_0x9b2d('0x43')][_0x9b2d('0x45')]?_0x5f4b12[_0x9b2d('0x43')]:_0x3cf019[_0x9b2d('0x3f')];if(!_0x1eb973['query'][_0x9b2d('0x46')](_0x9b2d('0x47'))){_0x5f4b12[_0x9b2d('0x2e')]=qs[_0x9b2d('0x2e')](_0x1eb973['query'][_0x9b2d('0x2e')]);_0x5f4b12[_0x9b2d('0x2d')]=qs[_0x9b2d('0x2d')](_0x1eb973['query']['offset']);}_0x5f4b12[_0x9b2d('0x48')]=qs['sort'](_0x1eb973[_0x9b2d('0x40')][_0x9b2d('0x49')]);_0x5f4b12['where']=qs[_0x9b2d('0x41')](_['pick'](_0x1eb973[_0x9b2d('0x40')],_0x3cf019['filters']));_0x5f4b12[_0x9b2d('0x4a')][_0x9b2d('0x60')]=_0x2b389a['id'];if(_0x1eb973['query'][_0x9b2d('0x4c')]){_0x5f4b12[_0x9b2d('0x4a')]=_[_0x9b2d('0x4d')](_0x5f4b12[_0x9b2d('0x4a')],{'$or':_[_0x9b2d('0x3a')](_0x5f4b12[_0x9b2d('0x43')],function(_0x1da7c7){var _0x1b5c19={};_0x1b5c19[_0x1da7c7]={'$like':'%'+_0x1eb973[_0x9b2d('0x40')][_0x9b2d('0x4c')]+'%'};return _0x1b5c19;})});}_0x5f4b12=_[_0x9b2d('0x4d')]({},_0x5f4b12,_0x1eb973[_0x9b2d('0x57')]);return db[_0x9b2d('0x63')][_0x9b2d('0x30')]({'where':_0x5f4b12[_0x9b2d('0x4a')]})[_0x9b2d('0x1e')](function(_0x3b0fcb){_0x5c31f7[_0x9b2d('0x30')]=_0x3b0fcb;if(_0x1eb973['query'][_0x9b2d('0x50')]){_0x5f4b12['include']=[{'all':!![]}];}return db[_0x9b2d('0x63')]['findAll'](_0x5f4b12);})[_0x9b2d('0x1e')](function(_0x5745a6){_0x5c31f7[_0x9b2d('0x53')]=_0x5745a6;return _0x5c31f7;});}})[_0x9b2d('0x1e')](respondWithFilteredResult(_0x41c51d,_0x5f4b12))['catch'](handleError(_0x41c51d,null));};exports[_0x9b2d('0x64')]=function(_0x5d6954,_0x3faea4,_0x50707b){return db[_0x9b2d('0x3b')][_0x9b2d('0x5d')]({'where':{'id':_0x5d6954[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x3faea4,null))['then'](function(_0x11c203){if(_0x11c203){return _0x11c203[_0x9b2d('0x64')](_0x5d6954[_0x9b2d('0x40')]['ids']);}})['then'](respondWithStatusCode(_0x3faea4,null))[_0x9b2d('0x28')](handleError(_0x3faea4,null));};exports[_0x9b2d('0x65')]=function(_0x51d645,_0x581388,_0x55397c){if(_0x51d645['body']['id']){delete _0x51d645[_0x9b2d('0x59')]['id'];}return db[_0x9b2d('0x3b')][_0x9b2d('0x5d')]({'where':{'id':_0x51d645[_0x9b2d('0x54')]['id']}})['then'](handleEntityNotFound(_0x581388,null))['then'](function(_0x3cd75e){if(_0x3cd75e){_0x51d645['body'][_0x9b2d('0x60')]=_0x3cd75e['id'];return db[_0x9b2d('0x66')][_0x9b2d('0x58')](_0x51d645[_0x9b2d('0x59')]);}})[_0x9b2d('0x1e')](respondWithResult(_0x581388,null))['catch'](handleError(_0x581388,null));};exports[_0x9b2d('0x67')]=function(_0x20e5c7,_0x7e869c,_0x58bd54){var _0x5a8e42={'raw':![],'where':{}};var _0x1ed686={};var _0x8777f8={'count':0x0,'rows':[]};return db[_0x9b2d('0x3b')][_0x9b2d('0x62')]({'where':{'id':_0x20e5c7[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x7e869c,null))['then'](function(_0x3874a7){if(_0x3874a7){_0x1ed686['model']=_['keys'](db['CannedAnswer'][_0x9b2d('0x3c')]);_0x1ed686['query']=_[_0x9b2d('0x56')](_0x20e5c7[_0x9b2d('0x40')]);_0x1ed686[_0x9b2d('0x41')]=_[_0x9b2d('0x42')](_0x1ed686[_0x9b2d('0x3f')],_0x1ed686[_0x9b2d('0x40')]);_0x5a8e42[_0x9b2d('0x43')]=_[_0x9b2d('0x42')](_0x1ed686[_0x9b2d('0x3f')],qs[_0x9b2d('0x44')](_0x20e5c7[_0x9b2d('0x40')][_0x9b2d('0x44')]));_0x5a8e42[_0x9b2d('0x43')]=_0x5a8e42['attributes'][_0x9b2d('0x45')]?_0x5a8e42[_0x9b2d('0x43')]:_0x1ed686['model'];if(!_0x20e5c7['query'][_0x9b2d('0x46')](_0x9b2d('0x47'))){_0x5a8e42[_0x9b2d('0x2e')]=qs[_0x9b2d('0x2e')](_0x20e5c7[_0x9b2d('0x40')][_0x9b2d('0x2e')]);_0x5a8e42[_0x9b2d('0x2d')]=qs[_0x9b2d('0x2d')](_0x20e5c7[_0x9b2d('0x40')]['offset']);}_0x5a8e42[_0x9b2d('0x48')]=qs[_0x9b2d('0x49')](_0x20e5c7[_0x9b2d('0x40')][_0x9b2d('0x49')]);_0x5a8e42[_0x9b2d('0x4a')]=qs[_0x9b2d('0x41')](_[_0x9b2d('0x4b')](_0x20e5c7[_0x9b2d('0x40')],_0x1ed686['filters']));_0x5a8e42['where'][_0x9b2d('0x60')]=_0x3874a7['id'];if(_0x20e5c7[_0x9b2d('0x40')][_0x9b2d('0x4c')]){_0x5a8e42[_0x9b2d('0x4a')]=_['merge'](_0x5a8e42[_0x9b2d('0x4a')],{'$or':_[_0x9b2d('0x3a')](_0x5a8e42[_0x9b2d('0x43')],function(_0xb301dc){var _0x3f2c18={};_0x3f2c18[_0xb301dc]={'$like':'%'+_0x20e5c7[_0x9b2d('0x40')][_0x9b2d('0x4c')]+'%'};return _0x3f2c18;})});}_0x5a8e42=_[_0x9b2d('0x4d')]({},_0x5a8e42,_0x20e5c7[_0x9b2d('0x57')]);return db['CannedAnswer'][_0x9b2d('0x30')]({'where':_0x5a8e42[_0x9b2d('0x4a')]})[_0x9b2d('0x1e')](function(_0x1ddb36){_0x8777f8[_0x9b2d('0x30')]=_0x1ddb36;if(_0x20e5c7['query'][_0x9b2d('0x50')]){_0x5a8e42[_0x9b2d('0x51')]=[{'all':!![]}];}return db[_0x9b2d('0x66')][_0x9b2d('0x52')](_0x5a8e42);})[_0x9b2d('0x1e')](function(_0x3ae9c3){_0x8777f8[_0x9b2d('0x53')]=_0x3ae9c3;return _0x8777f8;});}})[_0x9b2d('0x1e')](respondWithFilteredResult(_0x7e869c,_0x5a8e42))[_0x9b2d('0x28')](handleError(_0x7e869c,null));};exports[_0x9b2d('0x68')]=function(_0x928d10,_0x2634b1,_0x650079){return db[_0x9b2d('0x3b')]['find']({'where':{'id':_0x928d10[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x2634b1,null))['then'](function(_0x34c400){if(_0x34c400){return _0x34c400[_0x9b2d('0x68')](_0x928d10[_0x9b2d('0x40')][_0x9b2d('0x69')]);}})['then'](respondWithStatusCode(_0x2634b1,null))[_0x9b2d('0x28')](handleError(_0x2634b1,null));};exports['addAgents']=function(_0x5cce33,_0x90b171,_0x43a9f3){return db[_0x9b2d('0x3b')][_0x9b2d('0x5d')]({'where':{'id':_0x5cce33[_0x9b2d('0x54')]['id']}})['then'](handleEntityNotFound(_0x90b171,null))[_0x9b2d('0x1e')](function(_0x14025e){if(_0x14025e){return _0x14025e['addAgents'](_0x5cce33['body']['ids'],_[_0x9b2d('0x6a')](_0x5cce33[_0x9b2d('0x59')],['ids','id'])||{})[_0x9b2d('0x6b')](function(_0x9c1c9e){for(var _0xf719b6=0x0;_0xf719b6<_0x5cce33[_0x9b2d('0x59')][_0x9b2d('0x69')]['length'];_0xf719b6+=0x1){socket[_0x9b2d('0x6c')](_0x9b2d('0x6d'),{'UserId':Number(_0x5cce33['body']['ids'][_0xf719b6]),'WhatsappAccountId':Number(_0x5cce33[_0x9b2d('0x54')]['id'])});}return _0x9c1c9e;});}})['then'](respondWithResult(_0x90b171,null))['catch'](handleError(_0x90b171,null));};exports[_0x9b2d('0x6e')]=function(_0xcfa12d,_0x53383a,_0x4f566a){return db[_0x9b2d('0x3b')][_0x9b2d('0x5d')]({'where':{'id':_0xcfa12d[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x53383a,null))[_0x9b2d('0x1e')](function(_0x482799){if(_0x482799){return _0x482799[_0x9b2d('0x6e')](_0xcfa12d[_0x9b2d('0x40')][_0x9b2d('0x69')])[_0x9b2d('0x1e')](function(){if(_[_0x9b2d('0x6f')](_0xcfa12d[_0x9b2d('0x40')][_0x9b2d('0x69')])){for(var _0x29c4f7=0x0;_0x29c4f7<_0xcfa12d[_0x9b2d('0x40')][_0x9b2d('0x69')][_0x9b2d('0x45')];_0x29c4f7+=0x1){socket[_0x9b2d('0x6c')](_0x9b2d('0x70'),{'UserId':Number(_0xcfa12d[_0x9b2d('0x40')][_0x9b2d('0x69')][_0x29c4f7]),'WhatsappAccountId':Number(_0xcfa12d[_0x9b2d('0x54')]['id'])});}}else{socket[_0x9b2d('0x6c')]('userWhatsappAccount:remove',{'UserId':Number(_0xcfa12d['query']['ids']),'WhatsappAccountId':Number(_0xcfa12d[_0x9b2d('0x54')]['id'])});}});}})[_0x9b2d('0x1e')](respondWithStatusCode(_0x53383a,null))['catch'](handleError(_0x53383a,null));};exports[_0x9b2d('0x71')]=function(_0x17dedd,_0x56cfcc,_0x4d0116){var _0x2e00ae={};var _0x48517b={};var _0x7363ac;var _0x2a5ead;return db[_0x9b2d('0x3b')][_0x9b2d('0x62')]({'where':{'id':_0x17dedd[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x56cfcc,null))[_0x9b2d('0x1e')](function(_0x32d32f){if(_0x32d32f){_0x7363ac=_0x32d32f;_0x48517b['model']=_[_0x9b2d('0x56')](db['User'][_0x9b2d('0x3c')]);_0x48517b[_0x9b2d('0x40')]=_[_0x9b2d('0x56')](_0x17dedd[_0x9b2d('0x40')]);_0x48517b['filters']=_[_0x9b2d('0x42')](_0x48517b[_0x9b2d('0x3f')],_0x48517b['query']);_0x2e00ae[_0x9b2d('0x43')]=_[_0x9b2d('0x42')](_0x48517b['model'],qs['fields'](_0x17dedd['query'][_0x9b2d('0x44')]));_0x2e00ae[_0x9b2d('0x43')]=_0x2e00ae['attributes'][_0x9b2d('0x45')]?_0x2e00ae[_0x9b2d('0x43')]:_0x48517b['model'];_0x2e00ae[_0x9b2d('0x48')]=qs['sort'](_0x17dedd[_0x9b2d('0x40')][_0x9b2d('0x49')]);_0x2e00ae[_0x9b2d('0x4a')]=qs[_0x9b2d('0x41')](_[_0x9b2d('0x4b')](_0x17dedd[_0x9b2d('0x40')],_0x48517b[_0x9b2d('0x41')]));if(_0x17dedd[_0x9b2d('0x40')][_0x9b2d('0x4c')]){_0x2e00ae[_0x9b2d('0x4a')]=_[_0x9b2d('0x4d')](_0x2e00ae[_0x9b2d('0x4a')],{'$or':_[_0x9b2d('0x3a')](_0x2e00ae['attributes'],function(_0x419c41){var _0x5654e3={};_0x5654e3[_0x419c41]={'$like':'%'+_0x17dedd[_0x9b2d('0x40')]['filter']+'%'};return _0x5654e3;})});}_0x2e00ae=_[_0x9b2d('0x4d')]({},_0x2e00ae,_0x17dedd[_0x9b2d('0x57')]);return _0x7363ac[_0x9b2d('0x71')](_0x2e00ae);}})[_0x9b2d('0x1e')](function(_0x4300c2){if(_0x4300c2){_0x2a5ead=_0x4300c2['length'];if(!_0x17dedd[_0x9b2d('0x40')][_0x9b2d('0x46')](_0x9b2d('0x47'))){_0x2e00ae[_0x9b2d('0x2e')]=qs[_0x9b2d('0x2e')](_0x17dedd['query'][_0x9b2d('0x2e')]);_0x2e00ae[_0x9b2d('0x2d')]=qs[_0x9b2d('0x2d')](_0x17dedd[_0x9b2d('0x40')]['offset']);}return _0x7363ac[_0x9b2d('0x71')](_0x2e00ae);}})['then'](function(_0x45f833){if(_0x45f833){return _0x45f833?{'count':_0x2a5ead,'rows':_0x45f833}:null;}})[_0x9b2d('0x1e')](respondWithResult(_0x56cfcc,null))[_0x9b2d('0x28')](handleError(_0x56cfcc,null));};exports[_0x9b2d('0x72')]=function(_0x52b7eb,_0x664979,_0x637230){return db[_0x9b2d('0x3b')][_0x9b2d('0x62')]({'where':{'id':_0x52b7eb[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x664979,null))[_0x9b2d('0x1e')](function(_0x5cc690){if(_0x5cc690){return db[_0x9b2d('0x73')][_0x9b2d('0x74')](function(_0x1e32e2){return db[_0x9b2d('0x75')][_0x9b2d('0x35')]({'where':{'WhatsappAccountId':_0x52b7eb[_0x9b2d('0x54')]['id']},'transaction':_0x1e32e2})[_0x9b2d('0x1e')](function(_0x367924){var _0x2d2ce7=_[_0x9b2d('0x3a')](_0x52b7eb[_0x9b2d('0x59')],function(_0x4e21e0){_0x4e21e0[_0x9b2d('0x60')]=_0x52b7eb[_0x9b2d('0x54')]['id'];return _0x4e21e0;});return db[_0x9b2d('0x75')]['bulkCreate'](_0x2d2ce7,{'transaction':_0x1e32e2});});})['then'](function(){return db[_0x9b2d('0x75')][_0x9b2d('0x76')]({'where':{'WhatsappAccountId':_0x52b7eb[_0x9b2d('0x54')]['id']},'order':_0x9b2d('0x77')});});}})['then'](respondWithResult(_0x664979,null))[_0x9b2d('0x28')](handleError(_0x664979,null));};exports[_0x9b2d('0x78')]=function(_0x4a5775,_0x221bc7,_0x1af5bf){var _0xa7207e={};var _0x26b3fa={};var _0x190a37;var _0x4fc6ae;return db[_0x9b2d('0x3b')][_0x9b2d('0x62')]({'where':{'id':_0x4a5775[_0x9b2d('0x54')]['id']}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x221bc7,null))[_0x9b2d('0x1e')](function(_0x27419c){if(_0x27419c){_0x190a37=_0x27419c;_0x26b3fa['model']=_[_0x9b2d('0x56')](db['WhatsappApplication']['rawAttributes']);_0x26b3fa[_0x9b2d('0x40')]=_['keys'](_0x4a5775['query']);_0x26b3fa[_0x9b2d('0x41')]=_['intersection'](_0x26b3fa[_0x9b2d('0x3f')],_0x26b3fa['query']);_0xa7207e[_0x9b2d('0x43')]=_[_0x9b2d('0x42')](_0x26b3fa[_0x9b2d('0x3f')],qs[_0x9b2d('0x44')](_0x4a5775[_0x9b2d('0x40')][_0x9b2d('0x44')]));_0xa7207e[_0x9b2d('0x43')]=_0xa7207e[_0x9b2d('0x43')][_0x9b2d('0x45')]?_0xa7207e[_0x9b2d('0x43')]:_0x26b3fa[_0x9b2d('0x3f')];_0xa7207e[_0x9b2d('0x48')]=qs[_0x9b2d('0x49')](_0x4a5775[_0x9b2d('0x40')][_0x9b2d('0x49')]);_0xa7207e[_0x9b2d('0x4a')]=qs[_0x9b2d('0x41')](_[_0x9b2d('0x4b')](_0x4a5775[_0x9b2d('0x40')],_0x26b3fa[_0x9b2d('0x41')]));if(_0x4a5775[_0x9b2d('0x40')]['filter']){_0xa7207e[_0x9b2d('0x4a')]=_[_0x9b2d('0x4d')](_0xa7207e['where'],{'$or':_['map'](_0xa7207e[_0x9b2d('0x43')],function(_0x31c728){var _0x495748={};_0x495748[_0x31c728]={'$like':'%'+_0x4a5775[_0x9b2d('0x40')]['filter']+'%'};return _0x495748;})});}_0xa7207e=_[_0x9b2d('0x4d')]({},_0xa7207e,_0x4a5775[_0x9b2d('0x57')]);return _0x190a37[_0x9b2d('0x78')](_0xa7207e);}})[_0x9b2d('0x1e')](function(_0x58e178){if(_0x58e178){_0x4fc6ae=_0x58e178[_0x9b2d('0x45')];if(!_0x4a5775['query']['hasOwnProperty'](_0x9b2d('0x47'))){_0xa7207e[_0x9b2d('0x2e')]=qs[_0x9b2d('0x2e')](_0x4a5775[_0x9b2d('0x40')][_0x9b2d('0x2e')]);_0xa7207e[_0x9b2d('0x2d')]=qs[_0x9b2d('0x2d')](_0x4a5775[_0x9b2d('0x40')][_0x9b2d('0x2d')]);}return _0x190a37['getApplications'](_0xa7207e);}})['then'](function(_0xc9d099){if(_0xc9d099){return _0xc9d099?{'count':_0x4fc6ae,'rows':_0xc9d099}:null;}})['then'](respondWithResult(_0x221bc7,null))[_0x9b2d('0x28')](handleError(_0x221bc7,null));};exports[_0x9b2d('0x79')]=function(_0x5c0940,_0x1e7020,_0x44db6f){var _0x620063={'channel':_0x9b2d('0x7a')};var _0x2cfcbd=[];var _0x4acd76=[];var _0x44c11c={};return db[_0x9b2d('0x3b')]['find']({'where':{'id':_0x5c0940[_0x9b2d('0x54')]['id']},'include':[{'model':db[_0x9b2d('0x75')],'as':'Applications'}]})[_0x9b2d('0x1e')](handleEntityNotFound(_0x1e7020,null))['then'](function(_0x32a617){_0x620063['account']=_0x32a617;_0x620063[_0x9b2d('0x7b')]=_[_0x9b2d('0x7c')](_0x32a617[_0x9b2d('0x7d')],[_0x9b2d('0x77')],[_0x9b2d('0x7e')]);if(_0x620063[_0x9b2d('0x7f')][_0x9b2d('0x7d')]){delete _0x620063[_0x9b2d('0x7f')][_0x9b2d('0x7d')];}return db[_0x9b2d('0x80')][_0x9b2d('0x81')]();})[_0x9b2d('0x1e')](function(_0x132e7e){if(!_0x132e7e){throw new db[(_0x9b2d('0x82'))][(_0x9b2d('0x83'))](_0x9b2d('0x84'));}_0x2cfcbd=_[_0x9b2d('0x85')](_[_0x9b2d('0x56')](_0x132e7e),['createdAt','updatedAt']);_0x4acd76=_['difference'](_[_0x9b2d('0x56')](_0x132e7e),[_0x9b2d('0x86'),_0x9b2d('0x87'),_0x9b2d('0x88'),_0x9b2d('0x89')]);_0x620063[_0x9b2d('0x59')]={'mapKey':_0x9b2d('0x8a')};if(_0x620063['account'][_0x9b2d('0x4e')]&&_0x620063['account'][_0x9b2d('0x4e')]===_0x9b2d('0x8b')){_0x620063['body'][_0x9b2d('0x8c')]=_0x5c0940[_0x9b2d('0x59')]['From'][_0x9b2d('0x8d')]('whatsapp:','');_0x620063[_0x9b2d('0x59')]['body']=_0x5c0940[_0x9b2d('0x59')][_0x9b2d('0x8e')];_0x620063[_0x9b2d('0x59')]['messageId']=_0x5c0940['body']['MessageSid'];}if(_0x620063[_0x9b2d('0x59')]['id']){delete _0x620063[_0x9b2d('0x59')]['id'];}if(_[_0x9b2d('0x8f')](_0x620063[_0x9b2d('0x59')][_0x9b2d('0x8c')])){throw new db[(_0x9b2d('0x82'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x9b2d('0x8f')](_0x620063[_0x9b2d('0x59')][_0x9b2d('0x59')])||_0x620063[_0x9b2d('0x59')][_0x9b2d('0x59')]===''){throw new db['Sequelize'][(_0x9b2d('0x83'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x9b2d('0x8f')](_0x620063[_0x9b2d('0x59')][_0x9b2d('0x90')])){throw new db[(_0x9b2d('0x82'))]['ValidationError'](_0x9b2d('0x91')+_0x4acd76);}if(!_[_0x9b2d('0x92')](_0x4acd76,_0x620063[_0x9b2d('0x59')][_0x9b2d('0x90')])){throw new db[(_0x9b2d('0x82'))]['ValidationError'](_0x9b2d('0x93')+_0x4acd76);}_0x44c11c[_0x620063['body']['mapKey']]=_0x620063[_0x9b2d('0x59')]['from'];return db[_0x9b2d('0x94')][_0x9b2d('0x5d')]({'where':{'id':_0x620063[_0x9b2d('0x7f')][_0x9b2d('0x89')]},'include':[{'model':db[_0x9b2d('0x80')],'as':_0x9b2d('0x95'),'where':_0x44c11c,'limit':0x1,'order':[[_0x9b2d('0x87'),'DESC']]}]});})[_0x9b2d('0x1e')](handleEntityNotFound(_0x1e7020,null))['then'](function(_0x107ab4){if(_0x107ab4){_0x620063['list']=_['omit'](_0x107ab4,[_0x9b2d('0x95')]);if(_0x107ab4[_0x9b2d('0x95')][_0x9b2d('0x45')]){return _0x107ab4[_0x9b2d('0x95')][0x0];}var _0x39d4e4=_['defaults'](_0x620063[_0x9b2d('0x59')],{'firstName':_0x620063['body'][_0x9b2d('0x8c')],'ListId':_0x107ab4['id']});_0x39d4e4[_0x620063[_0x9b2d('0x59')][_0x9b2d('0x90')]]=_0x620063[_0x9b2d('0x59')]['from'];return db[_0x9b2d('0x80')][_0x9b2d('0x58')](_0x39d4e4,{'fields':_0x2cfcbd,'raw':!![]});}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x1e7020,null))[_0x9b2d('0x1e')](function(_0x2d0a6c){if(_0x2d0a6c){_0x620063[_0x9b2d('0x96')]=_0x2d0a6c;var _0x613198={'ContactId':_0x2d0a6c['id'],'phone':_0x620063[_0x9b2d('0x59')]['from'],'WhatsappAccountId':_0x5c0940[_0x9b2d('0x54')]['id']};var _0xa55bff={'ContactId':_0x2d0a6c['id'],'WhatsappAccountId':_0x5c0940[_0x9b2d('0x54')]['id'],'closed':![]};return db[_0x9b2d('0x97')][_0x9b2d('0x5d')]({'where':_0xa55bff})['then'](function(_0x8dc69d){if(_0x8dc69d){return[_0x8dc69d,![]];}return db[_0x9b2d('0x97')][_0x9b2d('0x58')](_0x613198)[_0x9b2d('0x1e')](function(_0x32eef3){return[_0x32eef3,!![]];});});}})[_0x9b2d('0x6b')](function(_0x12b51f,_0x5ccc14){_0x620063[_0x9b2d('0x98')]=_0x12b51f['get']({'plain':!![]});_0x620063[_0x9b2d('0x98')][_0x9b2d('0x99')]=![];if(_0x5ccc14){if(_0x620063[_0x9b2d('0x7f')][_0x9b2d('0x9a')]){_0x620063[_0x9b2d('0x7b')]['push']({'id':0x0,'priority':_0x620063[_0x9b2d('0x7b')][_0x9b2d('0x45')]+0x1,'app':_0x9b2d('0x9b'),'appdata':_0x9b2d('0x9c'),'interval':_0x9b2d('0x9d')});}_0x620063['interaction'][_0x9b2d('0x99')]=!![];}return db['WhatsappMessage'][_0x9b2d('0x58')]({'phone':_0x620063[_0x9b2d('0x59')]['from'],'messageId':_0x620063['body'][_0x9b2d('0x9e')],'body':_0x620063[_0x9b2d('0x59')][_0x9b2d('0x59')],'WhatsappAccountId':_0x5c0940[_0x9b2d('0x54')]['id'],'WhatsappInteractionId':_0x12b51f['id'],'direction':'in','ContactId':_0x12b51f[_0x9b2d('0x9f')],'AttachmentId':_0x620063['body']['AttachmentId']});})[_0x9b2d('0x1e')](function(_0xd2bc17){_0x620063['message']=_0xd2bc17;if(_0x620063['interaction'][_0x9b2d('0xa0')]){return db[_0x9b2d('0xa1')]['find']({'attributes':['id',_0x9b2d('0x38')],'where':{'id':_0x620063['interaction'][_0x9b2d('0xa0')]}})[_0x9b2d('0x1e')](function(_0x570c5b){if(_0x570c5b){_0x620063[_0x9b2d('0x7b')][_0x9b2d('0xa2')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x570c5b[_0x9b2d('0x38')]+','+(_0x620063[_0x9b2d('0x7f')]['waitForTheAssignedAgent']||0xa),'interval':_0x9b2d('0x9d')});}return respondWithRpcPromise(_0x9b2d('0xa3'),'startRouting',_0x620063);});}return respondWithRpcPromise(_0x9b2d('0xa3'),_0x9b2d('0xa4'),_0x620063);})['then'](function(_0x44eb58){if(_0x44eb58){var _0x5b26bb=0xc8;var _0x8a0cfc=_0x9b2d('0xa5');logger[_0x9b2d('0x26')](_0x9b2d('0x21'),_0x8a0cfc,_0x5b26bb,'entity\x20found');logger['debug']('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x8a0cfc,_0x5b26bb,_0x9b2d('0xa6'),JSON['stringify'](_0x44eb58));if(_0x620063[_0x9b2d('0x7f')][_0x9b2d('0x4e')]===_0x9b2d('0x8b')){return _0x1e7020[_0x9b2d('0x2b')](_0x5b26bb)[_0x9b2d('0x31')]('Content-Type',_0x9b2d('0xa7'))[_0x9b2d('0xa8')](_0x9b2d('0xa9'));}else{return _0x1e7020[_0x9b2d('0x2b')](_0x5b26bb)[_0x9b2d('0x2c')](_0x44eb58);}}})[_0x9b2d('0x28')](handleError(_0x1e7020,null));};exports['send']=function(_0x4ef9ef,_0x8cffa1,_0x2f69d7){var _0xfba5c2,_0x4187c5,_0x22b416;if(_[_0x9b2d('0x8f')](_0x4ef9ef['body'][_0x9b2d('0x59')])||_0x4ef9ef[_0x9b2d('0x59')]['body']===''){throw new db[(_0x9b2d('0x82'))]['ValidationError'](_0x9b2d('0xaa'));}if(_[_0x9b2d('0x8f')](_0x4ef9ef[_0x9b2d('0x59')]['to'])){throw new db['Sequelize']['ValidationError']('to\x20is\x20mandatory');}_0xfba5c2=_0x4ef9ef[_0x9b2d('0x59')]['to'];return db[_0x9b2d('0x3b')][_0x9b2d('0x5d')]({'where':{'id':_0x4ef9ef['params']['id']},'include':[{'model':db[_0x9b2d('0x94')],'as':_0x9b2d('0xab'),'include':[{'model':db[_0x9b2d('0x80')],'as':_0x9b2d('0x95'),'where':{'mobile':_0xfba5c2},'limit':0x1,'order':[[_0x9b2d('0x87'),_0x9b2d('0xac')]]}]}]})['then'](handleEntityNotFound(_0x8cffa1,null))[_0x9b2d('0x1e')](function(_0x26968f){if(_0x26968f&&_0x26968f['List']){_0x4187c5=_0x26968f[_0x9b2d('0x36')]({'plain':!![]});if(_0x4187c5['List']&&_0x4187c5['List'][_0x9b2d('0x95')]['length']){return _0x4187c5[_0x9b2d('0xab')][_0x9b2d('0x95')][0x0];}return db['CmContact']['create'](_['defaults'](_0x4ef9ef[_0x9b2d('0x59')],{'firstName':_0xfba5c2,'mobile':_0xfba5c2,'phone':_0xfba5c2,'ListId':_0x4187c5[_0x9b2d('0x89')]}));}})[_0x9b2d('0x1e')](handleEntityNotFound(_0x8cffa1,null))['then'](function(_0x1d688d){if(_0x1d688d){_0x22b416=_0x1d688d;return db['WhatsappInteraction']['find']({'where':{'ContactId':_0x22b416['id'],'closed':![],'WhatsappAccountId':_0x4187c5['id']}})['then'](function(_0x2f6560){if(_0x2f6560){return[_0x2f6560,![]];}return db[_0x9b2d('0x97')]['create']({'UserId':_0x4ef9ef[_0x9b2d('0x5a')]['id'],'ContactId':_0x22b416['id'],'WhatsappAccountId':_0x4187c5['id'],'phone':_0xfba5c2,'firstMsgDirection':_0x9b2d('0xad'),'Messages':[_[_0x9b2d('0x4d')](_0x4ef9ef['body'],{'read':![],'body':_0x4ef9ef[_0x9b2d('0x59')][_0x9b2d('0x59')],'phone':_0xfba5c2,'WhatsappAccountId':_0x4187c5['id'],'UserId':_0x4ef9ef[_0x9b2d('0x5a')]['id'],'ContactId':_0x22b416['id']})]},{'include':[{'model':db[_0x9b2d('0xae')],'as':'Messages'}]})[_0x9b2d('0x1e')](function(_0x2d0054){return[_0x2d0054,!![]];});});}})[_0x9b2d('0x6b')](function(_0x53e7f4,_0x23499a){if(_0x23499a){return _0x53e7f4;}return db[_0x9b2d('0xae')][_0x9b2d('0x58')](_['merge'](_0x4ef9ef[_0x9b2d('0x59')],{'read':![],'body':_0x4ef9ef['body']['body'],'phone':_0xfba5c2,'WhatsappAccountId':_0x4187c5['id'],'WhatsappInteractionId':_0x53e7f4['id'],'UserId':_0x4ef9ef[_0x9b2d('0x5a')]['id'],'ContactId':_0x22b416['id']}))[_0x9b2d('0x1e')](function(_0x24b82b){_0x53e7f4[_0x9b2d('0xaf')]['Messages']=[];_0x53e7f4['dataValues'][_0x9b2d('0xb0')]['push'](_0x24b82b[_0x9b2d('0xaf')]);return _0x53e7f4;});})['then'](respondWithResult(_0x8cffa1,null))['catch'](handleError(_0x8cffa1,null));};
\ No newline at end of file
+var _0xaef7=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','jayson/promise','client','http','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','result','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','update','destroy','get','UserProfileResource','sendStatus','stack','name','send','Pause','map','WhatsappAccount','type','query','filters','model','intersection','fields','attributes','length','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','WhatsappAccounts','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','mandatoryDispositionPause','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','removeDispositions','ids','addAnswer','getAnswers','findOne','CannedAnswer','hasOwnProperty','nolimit','order','removeAnswers','omit','spread','emit','removeAgents','isArray','userWhatsappAccount:remove','User','getAgents','addApplications','transaction','WhatsappApplication','findAndCountAll','getApplications','whatsapp','Applications','applications','orderBy','priority','asc','account','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','replace','Body','messageId','MessageSid','from\x20is\x20mandatory','isNil','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','ListId','CmContact','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','autoclose','close','unmanaged','*,*,*,*','WhatsappMessage','AttachmentId','UserId','unshift','agent','startRouting','receiveMessage','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','CmList','List','out','Messages','dataValues','push','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x47af66,_0x52cd59){var _0x465bad=function(_0x5af18e){while(--_0x5af18e){_0x47af66['push'](_0x47af66['shift']());}};_0x465bad(++_0x52cd59);}(_0xaef7,0x15a));var _0x7aef=function(_0x3650e0,_0xda0f52){_0x3650e0=_0x3650e0-0x0;var _0x6841fb=_0xaef7[_0x3650e0];return _0x6841fb;};'use strict';var emlformat=require(_0x7aef('0x0'));var rimraf=require(_0x7aef('0x1'));var zipdir=require(_0x7aef('0x2'));var jsonpatch=require(_0x7aef('0x3'));var rp=require(_0x7aef('0x4'));var moment=require('moment');var BPromise=require(_0x7aef('0x5'));var Mustache=require('mustache');var util=require(_0x7aef('0x6'));var path=require(_0x7aef('0x7'));var sox=require(_0x7aef('0x8'));var csv=require('to-csv');var ejs=require(_0x7aef('0x9'));var fs=require('fs');var fs_extra=require(_0x7aef('0xa'));var _=require(_0x7aef('0xb'));var squel=require('squel');var crypto=require(_0x7aef('0xc'));var jsforce=require(_0x7aef('0xd'));var deskjs=require(_0x7aef('0xe'));var toCsv=require(_0x7aef('0xf'));var querystring=require('querystring');var Papa=require(_0x7aef('0x10'));var Redis=require(_0x7aef('0x11'));var authService=require(_0x7aef('0x12'));var qs=require(_0x7aef('0x13'));var as=require(_0x7aef('0x14'));var hardwareService=require(_0x7aef('0x15'));var logger=require(_0x7aef('0x16'))(_0x7aef('0x17'));var utils=require(_0x7aef('0x18'));var config=require(_0x7aef('0x19'));var licenseUtil=require(_0x7aef('0x1a'));var db=require('../../mysqldb')['db'];config[_0x7aef('0x1b')]=_[_0x7aef('0x1c')](config[_0x7aef('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x7aef('0x1d'))(new Redis(config[_0x7aef('0x1b')]));require('./whatsappAccount.socket')['register'](socket);var jayson=require(_0x7aef('0x1e'));var client=jayson[_0x7aef('0x1f')][_0x7aef('0x20')]({'port':0x232c});function respondWithRpcPromise(_0x5b3632,_0x29ee8f,_0x41abcf,_0x281dd2){return new BPromise(function(_0xc42397,_0x566656){var _0x4ae4bb=_0x281dd2||client;return _0x4ae4bb['request'](_0x5b3632,_0x41abcf)[_0x7aef('0x21')](function(_0x580da3){logger[_0x7aef('0x22')]('WhatsappAccount,\x20%s,\x20%s',_0x29ee8f,'request\x20sent');logger[_0x7aef('0x23')](_0x7aef('0x24'),_0x29ee8f,_0x7aef('0x25'),JSON[_0x7aef('0x26')](_0x580da3));if(_0x580da3[_0x7aef('0x27')]){if(_0x580da3[_0x7aef('0x27')][_0x7aef('0x28')]===0x1f4){logger['error'](_0x7aef('0x29'),_0x29ee8f,_0x580da3[_0x7aef('0x27')][_0x7aef('0x2a')]);return _0x566656(_0x580da3['error'][_0x7aef('0x2a')]);}logger[_0x7aef('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x29ee8f,_0x580da3[_0x7aef('0x27')][_0x7aef('0x2a')]);return _0xc42397(_0x580da3[_0x7aef('0x27')][_0x7aef('0x2a')]);}else{logger[_0x7aef('0x22')]('WhatsappAccount,\x20%s,\x20%s',_0x29ee8f,_0x7aef('0x25'));_0xc42397(_0x580da3[_0x7aef('0x2b')][_0x7aef('0x2a')]);}})['catch'](function(_0x5a8e79){logger[_0x7aef('0x27')](_0x7aef('0x29'),_0x29ee8f,_0x5a8e79);_0x566656(_0x5a8e79);});});}function respondWithStatusCode(_0x1bf642,_0x443312){_0x443312=_0x443312||0xcc;return function(_0x1abc3){if(_0x1abc3){return _0x1bf642['sendStatus'](_0x443312);}return _0x1bf642[_0x7aef('0x2c')](_0x443312)[_0x7aef('0x2d')]();};}function respondWithResult(_0xf1042d,_0x54d0b1){_0x54d0b1=_0x54d0b1||0xc8;return function(_0x2a1c25){if(_0x2a1c25){return _0xf1042d['status'](_0x54d0b1)['json'](_0x2a1c25);}};}function respondWithFilteredResult(_0x25f4c4,_0x7d36f1){return function(_0x4a1c26){if(_0x4a1c26){var _0x2ce3b4=typeof _0x7d36f1[_0x7aef('0x2e')]==='undefined'&&typeof _0x7d36f1['limit']===_0x7aef('0x2f');var _0x45e2cf=_0x4a1c26[_0x7aef('0x30')];var _0x4a29da=_0x2ce3b4?0x0:_0x7d36f1[_0x7aef('0x2e')];var _0x5797eb=_0x2ce3b4?_0x4a1c26[_0x7aef('0x30')]:_0x7d36f1[_0x7aef('0x2e')]+_0x7d36f1[_0x7aef('0x31')];var _0x3b68b6;if(_0x5797eb>=_0x45e2cf){_0x5797eb=_0x45e2cf;_0x3b68b6=0xc8;}else{_0x3b68b6=0xce;}_0x25f4c4[_0x7aef('0x2c')](_0x3b68b6);return _0x25f4c4[_0x7aef('0x32')](_0x7aef('0x33'),_0x4a29da+'-'+_0x5797eb+'/'+_0x45e2cf)[_0x7aef('0x34')](_0x4a1c26);}return null;};}function patchUpdates(_0x576f83){return function(_0x4619d5){try{jsonpatch[_0x7aef('0x35')](_0x4619d5,_0x576f83,!![]);}catch(_0x3fc8a1){return BPromise['reject'](_0x3fc8a1);}return _0x4619d5['save']();};}function saveUpdates(_0x4f3cc2,_0x2f320a){return function(_0x583811){if(_0x583811){return _0x583811[_0x7aef('0x36')](_0x4f3cc2)[_0x7aef('0x21')](function(_0x5d10aa){return _0x5d10aa;});}return null;};}function removeEntity(_0x4bd825,_0x3ec21b){return function(_0x4e3ffb){if(_0x4e3ffb){return _0x4e3ffb[_0x7aef('0x37')]()['then'](function(){var _0x46f6fe=_0x4e3ffb[_0x7aef('0x38')]({'plain':!![]});var _0x1ccec9='WhatsappAccounts';return db[_0x7aef('0x39')][_0x7aef('0x37')]({'where':{'type':_0x1ccec9,'resourceId':_0x46f6fe['id']}})[_0x7aef('0x21')](function(){return _0x4e3ffb;});})['then'](function(){_0x4bd825[_0x7aef('0x2c')](0xcc)[_0x7aef('0x2d')]();});}};}function handleEntityNotFound(_0x53b3aa,_0x3ff6b1){return function(_0x1e48bc){if(!_0x1e48bc){_0x53b3aa[_0x7aef('0x3a')](0x194);}return _0x1e48bc;};}function handleError(_0x35369d,_0x55bbe1){_0x55bbe1=_0x55bbe1||0x1f4;return function(_0x1d65bc){logger['error'](_0x1d65bc[_0x7aef('0x3b')]);if(_0x1d65bc['name']){delete _0x1d65bc[_0x7aef('0x3c')];}_0x35369d[_0x7aef('0x2c')](_0x55bbe1)[_0x7aef('0x3d')](_0x1d65bc);};}exports['index']=function(_0x5d15c5,_0x8dd573){var _0x13c8e8={'include':[{'model':db[_0x7aef('0x3e')],'as':'mandatoryDispositionPause'}]},_0x107817={},_0x398517={'count':0x0,'rows':[]};var _0x4379ff=_[_0x7aef('0x3f')](db[_0x7aef('0x40')]['rawAttributes'],function(_0x56c0ea){return{'name':_0x56c0ea['fieldName'],'type':_0x56c0ea[_0x7aef('0x41')]['key']};});_0x107817['model']=_[_0x7aef('0x3f')](_0x4379ff,'name');_0x107817[_0x7aef('0x42')]=_['keys'](_0x5d15c5[_0x7aef('0x42')]);_0x107817[_0x7aef('0x43')]=_['intersection'](_0x107817[_0x7aef('0x44')],_0x107817[_0x7aef('0x42')]);_0x13c8e8['attributes']=_[_0x7aef('0x45')](_0x107817['model'],qs[_0x7aef('0x46')](_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x46')]));_0x13c8e8[_0x7aef('0x47')]=_0x13c8e8[_0x7aef('0x47')][_0x7aef('0x48')]?_0x13c8e8[_0x7aef('0x47')]:_0x107817['model'];if(!_0x5d15c5[_0x7aef('0x42')]['hasOwnProperty']('nolimit')){_0x13c8e8[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x31')]);_0x13c8e8['offset']=qs[_0x7aef('0x2e')](_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x2e')]);}_0x13c8e8['order']=qs[_0x7aef('0x49')](_0x5d15c5[_0x7aef('0x42')]['sort']);_0x13c8e8['where']=qs[_0x7aef('0x43')](_[_0x7aef('0x4a')](_0x5d15c5[_0x7aef('0x42')],_0x107817[_0x7aef('0x43')]),_0x4379ff);if(_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x13c8e8[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x13c8e8[_0x7aef('0x4c')],{'$or':_['map'](_0x4379ff,function(_0x476f7e){if(_0x476f7e['type']!==_0x7aef('0x4e')){var _0x19ca76={};_0x19ca76[_0x476f7e[_0x7aef('0x3c')]]={'$like':'%'+_0x5d15c5[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x19ca76;}})});}_0x13c8e8=_[_0x7aef('0x4d')]({},_0x13c8e8,_0x5d15c5[_0x7aef('0x4f')]);var _0xa325d={'where':_0x13c8e8['where']};return db[_0x7aef('0x40')]['count'](_0xa325d)[_0x7aef('0x21')](function(_0x3575bd){_0x398517[_0x7aef('0x30')]=_0x3575bd;if(_0x5d15c5['query'][_0x7aef('0x50')]){_0x13c8e8[_0x7aef('0x51')]=[{'all':!![]}];}return db[_0x7aef('0x40')][_0x7aef('0x52')](_0x13c8e8);})['then'](function(_0x576621){_0x398517[_0x7aef('0x53')]=_0x576621;return _0x398517;})['then'](respondWithFilteredResult(_0x8dd573,_0x13c8e8))[_0x7aef('0x54')](handleError(_0x8dd573,null));};exports['show']=function(_0x366105,_0x29d8f4){var _0x5d453d={'raw':![],'where':{'id':_0x366105[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0x3e')],'as':'mandatoryDispositionPause'}]},_0xff1ff1={};_0xff1ff1[_0x7aef('0x44')]=_[_0x7aef('0x56')](db[_0x7aef('0x40')][_0x7aef('0x57')]);_0xff1ff1[_0x7aef('0x42')]=_[_0x7aef('0x56')](_0x366105[_0x7aef('0x42')]);_0xff1ff1[_0x7aef('0x43')]=_[_0x7aef('0x45')](_0xff1ff1[_0x7aef('0x44')],_0xff1ff1[_0x7aef('0x42')]);_0x5d453d['attributes']=_[_0x7aef('0x45')](_0xff1ff1[_0x7aef('0x44')],qs['fields'](_0x366105[_0x7aef('0x42')][_0x7aef('0x46')]));_0x5d453d['attributes']=_0x5d453d[_0x7aef('0x47')]['length']?_0x5d453d[_0x7aef('0x47')]:_0xff1ff1[_0x7aef('0x44')];if(_0x366105['query']['includeAll']){_0x5d453d[_0x7aef('0x51')]=[{'all':!![]}];}_0x5d453d=_['merge']({},_0x5d453d,_0x366105[_0x7aef('0x4f')]);return db[_0x7aef('0x40')][_0x7aef('0x58')](_0x5d453d)['then'](handleEntityNotFound(_0x29d8f4,null))[_0x7aef('0x21')](respondWithResult(_0x29d8f4,null))['catch'](handleError(_0x29d8f4,null));};exports[_0x7aef('0x59')]=function(_0xa70843,_0x540418){return db[_0x7aef('0x40')][_0x7aef('0x59')](_0xa70843[_0x7aef('0x5a')],{})[_0x7aef('0x21')](function(_0x2f6992){var _0x4bb436=_0xa70843['user'][_0x7aef('0x38')]({'plain':!![]});if(!_0x4bb436)throw new Error(_0x7aef('0x5b'));if(_0x4bb436[_0x7aef('0x5c')]===_0x7aef('0x5d')){var _0x3df548=_0x2f6992['get']({'plain':!![]});var _0x544556=_0x7aef('0x5e');return db[_0x7aef('0x5f')][_0x7aef('0x58')]({'where':{'name':_0x544556,'userProfileId':_0x4bb436['userProfileId']},'raw':!![]})[_0x7aef('0x21')](function(_0x1f0df5){if(_0x1f0df5&&_0x1f0df5[_0x7aef('0x60')]===0x0){return db[_0x7aef('0x39')][_0x7aef('0x59')]({'name':_0x3df548[_0x7aef('0x3c')],'resourceId':_0x3df548['id'],'type':_0x1f0df5[_0x7aef('0x3c')],'sectionId':_0x1f0df5['id']},{})[_0x7aef('0x21')](function(){return _0x2f6992;});}else{return _0x2f6992;}})[_0x7aef('0x54')](function(_0x46ed99){logger[_0x7aef('0x27')](_0x7aef('0x61'),_0x46ed99);throw _0x46ed99;});}return _0x2f6992;})[_0x7aef('0x21')](respondWithResult(_0x540418,0xc9))[_0x7aef('0x54')](handleError(_0x540418,null));};exports[_0x7aef('0x36')]=function(_0x24bed1,_0xbf343){if(_0x24bed1['body']['id']){delete _0x24bed1['body']['id'];}return db['WhatsappAccount'][_0x7aef('0x58')]({'where':{'id':_0x24bed1[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0x3e')],'as':_0x7aef('0x62')}]})[_0x7aef('0x21')](handleEntityNotFound(_0xbf343,null))[_0x7aef('0x21')](saveUpdates(_0x24bed1[_0x7aef('0x5a')],null))[_0x7aef('0x21')](respondWithResult(_0xbf343,null))[_0x7aef('0x54')](handleError(_0xbf343,null));};exports[_0x7aef('0x37')]=function(_0x100ad8,_0x44cf9b){return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x100ad8[_0x7aef('0x55')]['id']}})['then'](handleEntityNotFound(_0x44cf9b,null))['then'](removeEntity(_0x44cf9b,null))[_0x7aef('0x54')](handleError(_0x44cf9b,null));};exports[_0x7aef('0x63')]=function(_0x2083b5,_0x545493){return db[_0x7aef('0x40')][_0x7aef('0x63')]()['then'](respondWithResult(_0x545493,null))[_0x7aef('0x54')](handleError(_0x545493,null));};exports[_0x7aef('0x64')]=function(_0x4a6183,_0x2f012f,_0x404e2d){if(_0x4a6183[_0x7aef('0x5a')]['id']){delete _0x4a6183[_0x7aef('0x5a')]['id'];}return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x4a6183['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x2f012f,null))[_0x7aef('0x21')](function(_0x41aec2){if(_0x41aec2){_0x4a6183['body'][_0x7aef('0x65')]=_0x41aec2['id'];return db[_0x7aef('0x66')][_0x7aef('0x59')](_0x4a6183[_0x7aef('0x5a')]);}})[_0x7aef('0x21')](respondWithResult(_0x2f012f,null))[_0x7aef('0x54')](handleError(_0x2f012f,null));};exports[_0x7aef('0x67')]=function(_0x3f3797,_0x34a956,_0x43bd7d){var _0x431af8={'raw':![],'where':{}};var _0x3ff9bb={};var _0x18102f={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x3f3797['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x34a956,null))[_0x7aef('0x21')](function(_0x4c0215){if(_0x4c0215){_0x3ff9bb['model']=_[_0x7aef('0x56')](db[_0x7aef('0x66')]['rawAttributes']);_0x3ff9bb['query']=_[_0x7aef('0x56')](_0x3f3797[_0x7aef('0x42')]);_0x3ff9bb[_0x7aef('0x43')]=_['intersection'](_0x3ff9bb[_0x7aef('0x44')],_0x3ff9bb[_0x7aef('0x42')]);_0x431af8[_0x7aef('0x47')]=_['intersection'](_0x3ff9bb['model'],qs[_0x7aef('0x46')](_0x3f3797['query'][_0x7aef('0x46')]));_0x431af8[_0x7aef('0x47')]=_0x431af8[_0x7aef('0x47')][_0x7aef('0x48')]?_0x431af8[_0x7aef('0x47')]:_0x3ff9bb[_0x7aef('0x44')];if(!_0x3f3797[_0x7aef('0x42')]['hasOwnProperty']('nolimit')){_0x431af8[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x3f3797[_0x7aef('0x42')][_0x7aef('0x31')]);_0x431af8['offset']=qs[_0x7aef('0x2e')](_0x3f3797['query'][_0x7aef('0x2e')]);}_0x431af8['order']=qs[_0x7aef('0x49')](_0x3f3797[_0x7aef('0x42')][_0x7aef('0x49')]);_0x431af8[_0x7aef('0x4c')]=qs['filters'](_['pick'](_0x3f3797['query'],_0x3ff9bb[_0x7aef('0x43')]));_0x431af8['where']['WhatsappAccountId']=_0x4c0215['id'];if(_0x3f3797[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x431af8['where']=_[_0x7aef('0x4d')](_0x431af8[_0x7aef('0x4c')],{'$or':_['map'](_0x431af8[_0x7aef('0x47')],function(_0x4142e0){var _0x1aed70={};_0x1aed70[_0x4142e0]={'$like':'%'+_0x3f3797[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x1aed70;})});}_0x431af8=_[_0x7aef('0x4d')]({},_0x431af8,_0x3f3797[_0x7aef('0x4f')]);return db[_0x7aef('0x66')][_0x7aef('0x30')]({'where':_0x431af8[_0x7aef('0x4c')]})['then'](function(_0x5728b8){_0x18102f[_0x7aef('0x30')]=_0x5728b8;if(_0x3f3797[_0x7aef('0x42')]['includeAll']){_0x431af8[_0x7aef('0x51')]=[{'all':!![]}];}return db['Disposition'][_0x7aef('0x52')](_0x431af8);})[_0x7aef('0x21')](function(_0x5e44b6){_0x18102f[_0x7aef('0x53')]=_0x5e44b6;return _0x18102f;});}})[_0x7aef('0x21')](respondWithFilteredResult(_0x34a956,_0x431af8))[_0x7aef('0x54')](handleError(_0x34a956,null));};exports[_0x7aef('0x68')]=function(_0x5041b3,_0xda01c0,_0x2decfb){return db[_0x7aef('0x40')]['find']({'where':{'id':_0x5041b3[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0xda01c0,null))[_0x7aef('0x21')](function(_0x558b04){if(_0x558b04){return _0x558b04[_0x7aef('0x68')](_0x5041b3[_0x7aef('0x42')][_0x7aef('0x69')]);}})[_0x7aef('0x21')](respondWithStatusCode(_0xda01c0,null))['catch'](handleError(_0xda01c0,null));};exports[_0x7aef('0x6a')]=function(_0x1231a0,_0x1f03cd,_0x395fb3){if(_0x1231a0[_0x7aef('0x5a')]['id']){delete _0x1231a0[_0x7aef('0x5a')]['id'];}return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x1231a0[_0x7aef('0x55')]['id']}})['then'](handleEntityNotFound(_0x1f03cd,null))[_0x7aef('0x21')](function(_0x4709ed){if(_0x4709ed){_0x1231a0[_0x7aef('0x5a')]['WhatsappAccountId']=_0x4709ed['id'];return db['CannedAnswer'][_0x7aef('0x59')](_0x1231a0[_0x7aef('0x5a')]);}})[_0x7aef('0x21')](respondWithResult(_0x1f03cd,null))['catch'](handleError(_0x1f03cd,null));};exports[_0x7aef('0x6b')]=function(_0x477ce4,_0x4b8700,_0x2e3ce8){var _0x58b2f3={'raw':![],'where':{}};var _0x594434={};var _0x5b24af={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x7aef('0x6c')]({'where':{'id':_0x477ce4['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x4b8700,null))[_0x7aef('0x21')](function(_0x43d516){if(_0x43d516){_0x594434[_0x7aef('0x44')]=_[_0x7aef('0x56')](db[_0x7aef('0x6d')]['rawAttributes']);_0x594434[_0x7aef('0x42')]=_[_0x7aef('0x56')](_0x477ce4[_0x7aef('0x42')]);_0x594434['filters']=_[_0x7aef('0x45')](_0x594434[_0x7aef('0x44')],_0x594434[_0x7aef('0x42')]);_0x58b2f3[_0x7aef('0x47')]=_['intersection'](_0x594434[_0x7aef('0x44')],qs['fields'](_0x477ce4['query'][_0x7aef('0x46')]));_0x58b2f3[_0x7aef('0x47')]=_0x58b2f3[_0x7aef('0x47')][_0x7aef('0x48')]?_0x58b2f3['attributes']:_0x594434[_0x7aef('0x44')];if(!_0x477ce4[_0x7aef('0x42')][_0x7aef('0x6e')](_0x7aef('0x6f'))){_0x58b2f3[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x477ce4[_0x7aef('0x42')][_0x7aef('0x31')]);_0x58b2f3[_0x7aef('0x2e')]=qs[_0x7aef('0x2e')](_0x477ce4['query'][_0x7aef('0x2e')]);}_0x58b2f3[_0x7aef('0x70')]=qs['sort'](_0x477ce4[_0x7aef('0x42')][_0x7aef('0x49')]);_0x58b2f3[_0x7aef('0x4c')]=qs[_0x7aef('0x43')](_[_0x7aef('0x4a')](_0x477ce4['query'],_0x594434[_0x7aef('0x43')]));_0x58b2f3['where']['WhatsappAccountId']=_0x43d516['id'];if(_0x477ce4[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x58b2f3[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x58b2f3[_0x7aef('0x4c')],{'$or':_[_0x7aef('0x3f')](_0x58b2f3['attributes'],function(_0x490e3e){var _0x236f84={};_0x236f84[_0x490e3e]={'$like':'%'+_0x477ce4[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x236f84;})});}_0x58b2f3=_[_0x7aef('0x4d')]({},_0x58b2f3,_0x477ce4['options']);return db[_0x7aef('0x6d')][_0x7aef('0x30')]({'where':_0x58b2f3[_0x7aef('0x4c')]})[_0x7aef('0x21')](function(_0x328539){_0x5b24af[_0x7aef('0x30')]=_0x328539;if(_0x477ce4[_0x7aef('0x42')][_0x7aef('0x50')]){_0x58b2f3[_0x7aef('0x51')]=[{'all':!![]}];}return db['CannedAnswer'][_0x7aef('0x52')](_0x58b2f3);})['then'](function(_0x53ac20){_0x5b24af[_0x7aef('0x53')]=_0x53ac20;return _0x5b24af;});}})[_0x7aef('0x21')](respondWithFilteredResult(_0x4b8700,_0x58b2f3))[_0x7aef('0x54')](handleError(_0x4b8700,null));};exports[_0x7aef('0x71')]=function(_0x247556,_0x8848fb,_0x51e77b){return db[_0x7aef('0x40')]['find']({'where':{'id':_0x247556['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x8848fb,null))['then'](function(_0x43bde5){if(_0x43bde5){return _0x43bde5[_0x7aef('0x71')](_0x247556['query'][_0x7aef('0x69')]);}})[_0x7aef('0x21')](respondWithStatusCode(_0x8848fb,null))[_0x7aef('0x54')](handleError(_0x8848fb,null));};exports['addAgents']=function(_0x5f02ac,_0x3e23e0,_0x80362b){return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x5f02ac[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x3e23e0,null))['then'](function(_0x3ca390){if(_0x3ca390){return _0x3ca390['addAgents'](_0x5f02ac['body'][_0x7aef('0x69')],_[_0x7aef('0x72')](_0x5f02ac['body'],['ids','id'])||{})[_0x7aef('0x73')](function(_0x1dc973){for(var _0x4bba69=0x0;_0x4bba69<_0x5f02ac[_0x7aef('0x5a')][_0x7aef('0x69')][_0x7aef('0x48')];_0x4bba69+=0x1){socket[_0x7aef('0x74')]('userWhatsappAccount:save',{'UserId':Number(_0x5f02ac['body'][_0x7aef('0x69')][_0x4bba69]),'WhatsappAccountId':Number(_0x5f02ac['params']['id'])});}return _0x1dc973;});}})[_0x7aef('0x21')](respondWithResult(_0x3e23e0,null))[_0x7aef('0x54')](handleError(_0x3e23e0,null));};exports['removeAgents']=function(_0x5c780c,_0x4ba53d,_0x291a3d){return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x5c780c[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x4ba53d,null))[_0x7aef('0x21')](function(_0x51f676){if(_0x51f676){return _0x51f676[_0x7aef('0x75')](_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')])[_0x7aef('0x21')](function(){if(_[_0x7aef('0x76')](_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')])){for(var _0x211d9a=0x0;_0x211d9a<_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')]['length'];_0x211d9a+=0x1){socket[_0x7aef('0x74')](_0x7aef('0x77'),{'UserId':Number(_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')][_0x211d9a]),'WhatsappAccountId':Number(_0x5c780c[_0x7aef('0x55')]['id'])});}}else{socket['emit'](_0x7aef('0x77'),{'UserId':Number(_0x5c780c[_0x7aef('0x42')][_0x7aef('0x69')]),'WhatsappAccountId':Number(_0x5c780c[_0x7aef('0x55')]['id'])});}});}})[_0x7aef('0x21')](respondWithStatusCode(_0x4ba53d,null))['catch'](handleError(_0x4ba53d,null));};exports['getAgents']=function(_0x3638e0,_0x3887f2,_0xe88575){var _0x4cfeb9={};var _0x525a85={};var _0x2f645f;var _0x24fe80;return db[_0x7aef('0x40')][_0x7aef('0x6c')]({'where':{'id':_0x3638e0['params']['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x3887f2,null))[_0x7aef('0x21')](function(_0x36e8ac){if(_0x36e8ac){_0x2f645f=_0x36e8ac;_0x525a85[_0x7aef('0x44')]=_[_0x7aef('0x56')](db[_0x7aef('0x78')]['rawAttributes']);_0x525a85[_0x7aef('0x42')]=_[_0x7aef('0x56')](_0x3638e0[_0x7aef('0x42')]);_0x525a85['filters']=_[_0x7aef('0x45')](_0x525a85['model'],_0x525a85['query']);_0x4cfeb9[_0x7aef('0x47')]=_[_0x7aef('0x45')](_0x525a85[_0x7aef('0x44')],qs[_0x7aef('0x46')](_0x3638e0[_0x7aef('0x42')][_0x7aef('0x46')]));_0x4cfeb9[_0x7aef('0x47')]=_0x4cfeb9['attributes'][_0x7aef('0x48')]?_0x4cfeb9[_0x7aef('0x47')]:_0x525a85[_0x7aef('0x44')];_0x4cfeb9[_0x7aef('0x70')]=qs[_0x7aef('0x49')](_0x3638e0[_0x7aef('0x42')]['sort']);_0x4cfeb9['where']=qs['filters'](_[_0x7aef('0x4a')](_0x3638e0[_0x7aef('0x42')],_0x525a85[_0x7aef('0x43')]));if(_0x3638e0['query'][_0x7aef('0x4b')]){_0x4cfeb9[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x4cfeb9[_0x7aef('0x4c')],{'$or':_[_0x7aef('0x3f')](_0x4cfeb9[_0x7aef('0x47')],function(_0x19dad3){var _0x71fe4={};_0x71fe4[_0x19dad3]={'$like':'%'+_0x3638e0[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x71fe4;})});}_0x4cfeb9=_[_0x7aef('0x4d')]({},_0x4cfeb9,_0x3638e0['options']);return _0x2f645f['getAgents'](_0x4cfeb9);}})['then'](function(_0x4a2f04){if(_0x4a2f04){_0x24fe80=_0x4a2f04[_0x7aef('0x48')];if(!_0x3638e0['query'][_0x7aef('0x6e')](_0x7aef('0x6f'))){_0x4cfeb9[_0x7aef('0x31')]=qs[_0x7aef('0x31')](_0x3638e0[_0x7aef('0x42')][_0x7aef('0x31')]);_0x4cfeb9[_0x7aef('0x2e')]=qs[_0x7aef('0x2e')](_0x3638e0[_0x7aef('0x42')][_0x7aef('0x2e')]);}return _0x2f645f[_0x7aef('0x79')](_0x4cfeb9);}})[_0x7aef('0x21')](function(_0x19692c){if(_0x19692c){return _0x19692c?{'count':_0x24fe80,'rows':_0x19692c}:null;}})[_0x7aef('0x21')](respondWithResult(_0x3887f2,null))['catch'](handleError(_0x3887f2,null));};exports[_0x7aef('0x7a')]=function(_0x5182dc,_0x1eaf86,_0x822b9e){return db[_0x7aef('0x40')][_0x7aef('0x6c')]({'where':{'id':_0x5182dc[_0x7aef('0x55')]['id']}})[_0x7aef('0x21')](handleEntityNotFound(_0x1eaf86,null))[_0x7aef('0x21')](function(_0x55b6c){if(_0x55b6c){return db['sequelize'][_0x7aef('0x7b')](function(_0x47ae10){return db['WhatsappApplication']['destroy']({'where':{'WhatsappAccountId':_0x5182dc['params']['id']},'transaction':_0x47ae10})[_0x7aef('0x21')](function(_0xdcd59f){var _0x362a79=_[_0x7aef('0x3f')](_0x5182dc[_0x7aef('0x5a')],function(_0x5af715){_0x5af715[_0x7aef('0x65')]=_0x5182dc['params']['id'];return _0x5af715;});return db[_0x7aef('0x7c')]['bulkCreate'](_0x362a79,{'transaction':_0x47ae10});});})[_0x7aef('0x21')](function(){return db[_0x7aef('0x7c')][_0x7aef('0x7d')]({'where':{'WhatsappAccountId':_0x5182dc[_0x7aef('0x55')]['id']},'order':'priority'});});}})['then'](respondWithResult(_0x1eaf86,null))[_0x7aef('0x54')](handleError(_0x1eaf86,null));};exports[_0x7aef('0x7e')]=function(_0x1c93ef,_0x667dc6,_0x599a86){var _0x45f378={};var _0x31a627={};var _0x228820;var _0x39ce1f;return db[_0x7aef('0x40')]['findOne']({'where':{'id':_0x1c93ef['params']['id']}})['then'](handleEntityNotFound(_0x667dc6,null))[_0x7aef('0x21')](function(_0x4c8d3e){if(_0x4c8d3e){_0x228820=_0x4c8d3e;_0x31a627[_0x7aef('0x44')]=_[_0x7aef('0x56')](db['WhatsappApplication'][_0x7aef('0x57')]);_0x31a627[_0x7aef('0x42')]=_['keys'](_0x1c93ef[_0x7aef('0x42')]);_0x31a627[_0x7aef('0x43')]=_[_0x7aef('0x45')](_0x31a627[_0x7aef('0x44')],_0x31a627[_0x7aef('0x42')]);_0x45f378[_0x7aef('0x47')]=_[_0x7aef('0x45')](_0x31a627[_0x7aef('0x44')],qs['fields'](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x46')]));_0x45f378['attributes']=_0x45f378[_0x7aef('0x47')][_0x7aef('0x48')]?_0x45f378['attributes']:_0x31a627[_0x7aef('0x44')];_0x45f378[_0x7aef('0x70')]=qs[_0x7aef('0x49')](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x49')]);_0x45f378[_0x7aef('0x4c')]=qs[_0x7aef('0x43')](_['pick'](_0x1c93ef['query'],_0x31a627[_0x7aef('0x43')]));if(_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x4b')]){_0x45f378[_0x7aef('0x4c')]=_[_0x7aef('0x4d')](_0x45f378[_0x7aef('0x4c')],{'$or':_[_0x7aef('0x3f')](_0x45f378[_0x7aef('0x47')],function(_0x281849){var _0x2a525f={};_0x2a525f[_0x281849]={'$like':'%'+_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x4b')]+'%'};return _0x2a525f;})});}_0x45f378=_[_0x7aef('0x4d')]({},_0x45f378,_0x1c93ef[_0x7aef('0x4f')]);return _0x228820[_0x7aef('0x7e')](_0x45f378);}})['then'](function(_0x11812a){if(_0x11812a){_0x39ce1f=_0x11812a[_0x7aef('0x48')];if(!_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x6e')]('nolimit')){_0x45f378[_0x7aef('0x31')]=qs['limit'](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x31')]);_0x45f378[_0x7aef('0x2e')]=qs[_0x7aef('0x2e')](_0x1c93ef[_0x7aef('0x42')][_0x7aef('0x2e')]);}return _0x228820['getApplications'](_0x45f378);}})['then'](function(_0x1b9b78){if(_0x1b9b78){return _0x1b9b78?{'count':_0x39ce1f,'rows':_0x1b9b78}:null;}})[_0x7aef('0x21')](respondWithResult(_0x667dc6,null))['catch'](handleError(_0x667dc6,null));};exports['notify']=function(_0x569cf5,_0x4f7df0,_0x3e1ca8){var _0x31359b={'channel':_0x7aef('0x7f')};var _0x571fc0=[];var _0x57a74b=[];var _0xe1f128={};return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x569cf5[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0x7c')],'as':_0x7aef('0x80')}]})[_0x7aef('0x21')](handleEntityNotFound(_0x4f7df0,null))['then'](function(_0x3bd5c9){_0x31359b['account']=_0x3bd5c9;_0x31359b[_0x7aef('0x81')]=_[_0x7aef('0x82')](_0x3bd5c9['Applications'],[_0x7aef('0x83')],[_0x7aef('0x84')]);if(_0x31359b[_0x7aef('0x85')][_0x7aef('0x80')]){delete _0x31359b[_0x7aef('0x85')][_0x7aef('0x80')];}return db['CmContact'][_0x7aef('0x63')]();})[_0x7aef('0x21')](function(_0x3dd6ee){if(!_0x3dd6ee){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))]('no\x20available\x20attributes');}_0x571fc0=_[_0x7aef('0x88')](_[_0x7aef('0x56')](_0x3dd6ee),[_0x7aef('0x89'),_0x7aef('0x8a')]);_0x57a74b=_['difference'](_['keys'](_0x3dd6ee),[_0x7aef('0x89'),'updatedAt',_0x7aef('0x8b'),'ListId']);_0x31359b[_0x7aef('0x5a')]={'mapKey':_0x7aef('0x8c')};if(_0x31359b[_0x7aef('0x85')]['type']&&_0x31359b[_0x7aef('0x85')]['type']===_0x7aef('0x8d')){_0x31359b[_0x7aef('0x5a')][_0x7aef('0x8e')]=_0x569cf5[_0x7aef('0x5a')][_0x7aef('0x8f')][_0x7aef('0x90')]('whatsapp:','');_0x31359b[_0x7aef('0x5a')][_0x7aef('0x5a')]=_0x569cf5[_0x7aef('0x5a')][_0x7aef('0x91')];_0x31359b['body'][_0x7aef('0x92')]=_0x569cf5[_0x7aef('0x5a')][_0x7aef('0x93')];}if(_0x31359b[_0x7aef('0x5a')]['id']){delete _0x31359b[_0x7aef('0x5a')]['id'];}if(_['isNil'](_0x31359b['body'][_0x7aef('0x8e')])){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))](_0x7aef('0x94'));}if(_[_0x7aef('0x95')](_0x31359b[_0x7aef('0x5a')][_0x7aef('0x5a')])||_0x31359b[_0x7aef('0x5a')][_0x7aef('0x5a')]===''){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x7aef('0x95')](_0x31359b[_0x7aef('0x5a')][_0x7aef('0x96')])){throw new db['Sequelize']['ValidationError'](_0x7aef('0x97')+_0x57a74b);}if(!_[_0x7aef('0x98')](_0x57a74b,_0x31359b[_0x7aef('0x5a')]['mapKey'])){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))](_0x7aef('0x99')+_0x57a74b);}_0xe1f128[_0x31359b['body'][_0x7aef('0x96')]]=_0x31359b['body'][_0x7aef('0x8e')];return db['CmList'][_0x7aef('0x58')]({'where':{'id':_0x31359b[_0x7aef('0x85')][_0x7aef('0x9a')]},'include':[{'model':db[_0x7aef('0x9b')],'as':_0x7aef('0x9c'),'where':_0xe1f128,'limit':0x1,'order':[[_0x7aef('0x8a'),_0x7aef('0x9d')]]}]});})['then'](handleEntityNotFound(_0x4f7df0,null))[_0x7aef('0x21')](function(_0x526632){if(_0x526632){_0x31359b[_0x7aef('0x9e')]=_[_0x7aef('0x72')](_0x526632,[_0x7aef('0x9c')]);if(_0x526632[_0x7aef('0x9c')][_0x7aef('0x48')]){return _0x526632[_0x7aef('0x9c')][0x0];}var _0x2470e7=_[_0x7aef('0x1c')](_0x31359b['body'],{'firstName':_0x31359b[_0x7aef('0x5a')]['from'],'ListId':_0x526632['id']});_0x2470e7[_0x31359b[_0x7aef('0x5a')][_0x7aef('0x96')]]=_0x31359b[_0x7aef('0x5a')]['from'];return db[_0x7aef('0x9b')][_0x7aef('0x59')](_0x2470e7,{'fields':_0x571fc0,'raw':!![]});}})['then'](handleEntityNotFound(_0x4f7df0,null))[_0x7aef('0x21')](function(_0x1c37e5){if(_0x1c37e5){_0x31359b[_0x7aef('0x9f')]=_0x1c37e5;var _0x8285c3={'ContactId':_0x1c37e5['id'],'phone':_0x31359b[_0x7aef('0x5a')][_0x7aef('0x8e')],'WhatsappAccountId':_0x569cf5[_0x7aef('0x55')]['id']};var _0x20fcb0={'ContactId':_0x1c37e5['id'],'WhatsappAccountId':_0x569cf5[_0x7aef('0x55')]['id'],'closed':![]};return db[_0x7aef('0xa0')]['find']({'where':_0x20fcb0})[_0x7aef('0x21')](function(_0x25ee86){if(_0x25ee86){return[_0x25ee86,![]];}return db[_0x7aef('0xa0')][_0x7aef('0x59')](_0x8285c3)['then'](function(_0x47ee2e){return[_0x47ee2e,!![]];});});}})['spread'](function(_0x572f12,_0x1ed128){_0x31359b['interaction']=_0x572f12[_0x7aef('0x38')]({'plain':!![]});_0x31359b[_0x7aef('0xa1')][_0x7aef('0xa2')]=![];if(_0x1ed128){if(_0x31359b[_0x7aef('0x85')][_0x7aef('0xa3')]){_0x31359b[_0x7aef('0x81')]['push']({'id':0x0,'priority':_0x31359b[_0x7aef('0x81')][_0x7aef('0x48')]+0x1,'app':_0x7aef('0xa4'),'appdata':_0x7aef('0xa5'),'interval':_0x7aef('0xa6')});}_0x31359b[_0x7aef('0xa1')][_0x7aef('0xa2')]=!![];}return db[_0x7aef('0xa7')][_0x7aef('0x59')]({'phone':_0x31359b[_0x7aef('0x5a')]['from'],'messageId':_0x31359b['body'][_0x7aef('0x92')],'body':_0x31359b['body'][_0x7aef('0x5a')],'WhatsappAccountId':_0x569cf5[_0x7aef('0x55')]['id'],'WhatsappInteractionId':_0x572f12['id'],'direction':'in','ContactId':_0x572f12['ContactId'],'AttachmentId':_0x31359b[_0x7aef('0x5a')][_0x7aef('0xa8')]});})[_0x7aef('0x21')](function(_0x3a09da){_0x31359b[_0x7aef('0x2a')]=_0x3a09da;if(_0x31359b['interaction'][_0x7aef('0xa9')]){return db['User'][_0x7aef('0x58')]({'attributes':['id',_0x7aef('0x3c')],'where':{'id':_0x31359b[_0x7aef('0xa1')][_0x7aef('0xa9')]}})[_0x7aef('0x21')](function(_0x107cfb){if(_0x107cfb){_0x31359b[_0x7aef('0x81')][_0x7aef('0xaa')]({'id':0x0,'priority':0x0,'app':_0x7aef('0xab'),'appdata':_0x107cfb[_0x7aef('0x3c')]+','+(_0x31359b['account']['waitForTheAssignedAgent']||0xa),'interval':_0x7aef('0xa6')});}return respondWithRpcPromise('Start',_0x7aef('0xac'),_0x31359b);});}return respondWithRpcPromise('Start',_0x7aef('0xac'),_0x31359b);})[_0x7aef('0x21')](function(_0x4d3ebf){if(_0x4d3ebf){var _0x448d92=0xc8;var _0x4d2234=_0x7aef('0xad');logger['info'](_0x7aef('0x24'),_0x4d2234,_0x448d92,_0x7aef('0xae'));logger[_0x7aef('0x23')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x4d2234,_0x448d92,_0x7aef('0xae'),JSON[_0x7aef('0x26')](_0x4d3ebf));if(_0x31359b[_0x7aef('0x85')]['type']===_0x7aef('0x8d')){return _0x4f7df0['status'](_0x448d92)[_0x7aef('0x32')]('Content-Type',_0x7aef('0xaf'))[_0x7aef('0x3d')](_0x7aef('0xb0'));}else{return _0x4f7df0[_0x7aef('0x2c')](_0x448d92)[_0x7aef('0x34')](_0x4d3ebf);}}})[_0x7aef('0x54')](handleError(_0x4f7df0,null));};exports[_0x7aef('0x3d')]=function(_0x31ea20,_0x1a6dca,_0x2e6cce){var _0x2bb9f7,_0x1c6521,_0x3b79e7;if(_[_0x7aef('0x95')](_0x31ea20[_0x7aef('0x5a')][_0x7aef('0x5a')])||_0x31ea20['body'][_0x7aef('0x5a')]===''){throw new db[(_0x7aef('0x86'))][(_0x7aef('0x87'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x7aef('0x95')](_0x31ea20[_0x7aef('0x5a')]['to'])){throw new db[(_0x7aef('0x86'))]['ValidationError']('to\x20is\x20mandatory');}_0x2bb9f7=_0x31ea20[_0x7aef('0x5a')]['to'];return db[_0x7aef('0x40')][_0x7aef('0x58')]({'where':{'id':_0x31ea20[_0x7aef('0x55')]['id']},'include':[{'model':db[_0x7aef('0xb1')],'as':_0x7aef('0xb2'),'include':[{'model':db[_0x7aef('0x9b')],'as':_0x7aef('0x9c'),'where':{'mobile':_0x2bb9f7},'limit':0x1,'order':[[_0x7aef('0x8a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x1a6dca,null))['then'](function(_0x48f719){if(_0x48f719&&_0x48f719[_0x7aef('0xb2')]){_0x1c6521=_0x48f719[_0x7aef('0x38')]({'plain':!![]});if(_0x1c6521['List']&&_0x1c6521['List'][_0x7aef('0x9c')][_0x7aef('0x48')]){return _0x1c6521[_0x7aef('0xb2')][_0x7aef('0x9c')][0x0];}return db[_0x7aef('0x9b')][_0x7aef('0x59')](_[_0x7aef('0x1c')](_0x31ea20[_0x7aef('0x5a')],{'firstName':_0x2bb9f7,'mobile':_0x2bb9f7,'phone':_0x2bb9f7,'ListId':_0x1c6521[_0x7aef('0x9a')]}));}})[_0x7aef('0x21')](handleEntityNotFound(_0x1a6dca,null))[_0x7aef('0x21')](function(_0x403afe){if(_0x403afe){_0x3b79e7=_0x403afe;return db['WhatsappInteraction'][_0x7aef('0x58')]({'where':{'ContactId':_0x3b79e7['id'],'closed':![],'WhatsappAccountId':_0x1c6521['id']}})['then'](function(_0x355026){if(_0x355026){return[_0x355026,![]];}return db[_0x7aef('0xa0')][_0x7aef('0x59')]({'UserId':_0x31ea20[_0x7aef('0x5d')]['id'],'ContactId':_0x3b79e7['id'],'WhatsappAccountId':_0x1c6521['id'],'phone':_0x2bb9f7,'firstMsgDirection':_0x7aef('0xb3'),'Messages':[_['merge'](_0x31ea20['body'],{'read':![],'body':_0x31ea20[_0x7aef('0x5a')][_0x7aef('0x5a')],'phone':_0x2bb9f7,'WhatsappAccountId':_0x1c6521['id'],'UserId':_0x31ea20[_0x7aef('0x5d')]['id'],'ContactId':_0x3b79e7['id']})]},{'include':[{'model':db[_0x7aef('0xa7')],'as':_0x7aef('0xb4')}]})[_0x7aef('0x21')](function(_0x242ebf){return[_0x242ebf,!![]];});});}})[_0x7aef('0x73')](function(_0x1730cb,_0x32b30b){if(_0x32b30b){return _0x1730cb;}return db[_0x7aef('0xa7')][_0x7aef('0x59')](_['merge'](_0x31ea20[_0x7aef('0x5a')],{'read':![],'body':_0x31ea20[_0x7aef('0x5a')][_0x7aef('0x5a')],'phone':_0x2bb9f7,'WhatsappAccountId':_0x1c6521['id'],'WhatsappInteractionId':_0x1730cb['id'],'UserId':_0x31ea20[_0x7aef('0x5d')]['id'],'ContactId':_0x3b79e7['id']}))[_0x7aef('0x21')](function(_0x4a065a){_0x1730cb['dataValues'][_0x7aef('0xb4')]=[];_0x1730cb[_0x7aef('0xb5')][_0x7aef('0xb4')][_0x7aef('0xb6')](_0x4a065a[_0x7aef('0xb5')]);return _0x1730cb;});})[_0x7aef('0x21')](respondWithResult(_0x1a6dca,null))[_0x7aef('0x54')](handleError(_0x1a6dca,null));};
\ No newline at end of file
index 6373099..9547fa9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc461=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappAccount','setMaxListeners','save','update'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xc461,0x159));var _0x1c46=function(_0x3254c0,_0x57a5ae){_0x3254c0=_0x3254c0-0x0;var _0x380854=_0xc461[_0x3254c0];return _0x380854;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0x1c46('0x0'))['db'][_0x1c46('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x1c46('0x2')](0x0);var events={'afterCreate':_0x1c46('0x3'),'afterUpdate':_0x1c46('0x4'),'afterDestroy':_0x1c46('0x5')};function emitEvent(_0x56496e){return function(_0x1658e1,_0x563217,_0x49ccc1){WhatsappAccountEvents[_0x1c46('0x6')](_0x56496e+':'+_0x1658e1['id'],_0x1658e1);WhatsappAccountEvents['emit'](_0x56496e,_0x1658e1);_0x49ccc1(null);};}for(var e in events){if(events[_0x1c46('0x7')](e)){var event=events[e];WhatsappAccount[_0x1c46('0x8')](e,emitEvent(event));}}module[_0x1c46('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xb35d=['exports','events','WhatsappAccount','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0x43f2ed,_0x18ef91){var _0x5f452f=function(_0x4616df){while(--_0x4616df){_0x43f2ed['push'](_0x43f2ed['shift']());}};_0x5f452f(++_0x18ef91);}(_0xb35d,0x191));var _0xdb35=function(_0x209bbf,_0x2e2375){_0x209bbf=_0x209bbf-0x0;var _0x592d4b=_0xb35d[_0x209bbf];return _0x592d4b;};'use strict';var EventEmitter=require(_0xdb35('0x0'));var WhatsappAccount=require('../../mysqldb')['db'][_0xdb35('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xdb35('0x2')](0x0);var events={'afterCreate':_0xdb35('0x3'),'afterUpdate':_0xdb35('0x4'),'afterDestroy':'remove'};function emitEvent(_0x562e17){return function(_0x29f6ea,_0x2e533e,_0x3200ba){WhatsappAccountEvents['emit'](_0x562e17+':'+_0x29f6ea['id'],_0x29f6ea);WhatsappAccountEvents[_0xdb35('0x5')](_0x562e17,_0x29f6ea);_0x3200ba(null);};}for(var e in events){if(events[_0xdb35('0x6')](e)){var event=events[e];WhatsappAccount['hook'](e,emitEvent(event));}}module[_0xdb35('0x7')]=WhatsappAccountEvents;
\ No newline at end of file
index 46e1b86..4e0b6c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42cd=['bluebird','request-promise','path','../../config/environment','exports','WhatsappAccount','lodash','api','moment'];(function(_0x37cca3,_0x463b1b){var _0x281614=function(_0x1e8858){while(--_0x1e8858){_0x37cca3['push'](_0x37cca3['shift']());}};_0x281614(++_0x463b1b);}(_0x42cd,0xde));var _0xd42c=function(_0x4858ad,_0xd5513a){_0x4858ad=_0x4858ad-0x0;var _0x3309b6=_0x42cd[_0x4858ad];return _0x3309b6;};'use strict';var _=require(_0xd42c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd42c('0x1'));var moment=require(_0xd42c('0x2'));var BPromise=require(_0xd42c('0x3'));var rp=require(_0xd42c('0x4'));var fs=require('fs');var path=require(_0xd42c('0x5'));var rimraf=require('rimraf');var config=require(_0xd42c('0x6'));var attributes=require('./whatsappAccount.attributes');module[_0xd42c('0x7')]=function(_0x5c941e,_0xa7c2d4){return _0x5c941e['define'](_0xd42c('0x8'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x96f6=['exports','WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./whatsappAccount.attributes'];(function(_0x59760e,_0x5b7697){var _0x160a9b=function(_0x4456ce){while(--_0x4456ce){_0x59760e['push'](_0x59760e['shift']());}};_0x160a9b(++_0x5b7697);}(_0x96f6,0x117));var _0x696f=function(_0x118afa,_0x4bf0c1){_0x118afa=_0x118afa-0x0;var _0x167d76=_0x96f6[_0x118afa];return _0x167d76;};'use strict';var _=require(_0x696f('0x0'));var util=require(_0x696f('0x1'));var logger=require(_0x696f('0x2'))(_0x696f('0x3'));var moment=require('moment');var BPromise=require(_0x696f('0x4'));var rp=require(_0x696f('0x5'));var fs=require('fs');var path=require(_0x696f('0x6'));var rimraf=require(_0x696f('0x7'));var config=require('../../config/environment');var attributes=require(_0x696f('0x8'));module[_0x696f('0x9')]=function(_0x5f132e,_0x461375){return _0x5f132e['define'](_0x696f('0xa'),attributes,{'tableName':_0x696f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc8dfcb..4503540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2b=['http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','then','WhatsappAccount,\x20%s,\x20%s','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','ShowWhatsappAccount','WhatsappAccount','find','options','where','attributes','include','map','model','info','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0xe01eef,_0x19e0a0){var _0x48a6d5=function(_0xcf5789){while(--_0xcf5789){_0xe01eef['push'](_0xe01eef['shift']());}};_0x48a6d5(++_0x19e0a0);}(_0x3f2b,0x1be));var _0xb3f2=function(_0x2c5802,_0x33de02){_0x2c5802=_0x2c5802-0x0;var _0x36b625=_0x3f2b[_0x2c5802];return _0x36b625;};'use strict';var _=require(_0xb3f2('0x0'));var util=require(_0xb3f2('0x1'));var moment=require(_0xb3f2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb3f2('0x3'));var db=require(_0xb3f2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb3f2('0x5'))('rpc');var config=require(_0xb3f2('0x6'));var jayson=require(_0xb3f2('0x7'));var client=jayson[_0xb3f2('0x8')][_0xb3f2('0x9')]({'port':0x232a});config[_0xb3f2('0xa')]=_[_0xb3f2('0xb')](config[_0xb3f2('0xa')],{'host':_0xb3f2('0xc'),'port':0x18eb});var socket=require(_0xb3f2('0xd'))(new Redis(config[_0xb3f2('0xa')]));require(_0xb3f2('0xe'))[_0xb3f2('0xf')](socket);function respondWithRpcPromise(_0x6ec8d0,_0x55d0ee,_0x35028a){return new BPromise(function(_0x54f0d9,_0x5c5f74){return client['request'](_0x6ec8d0,_0x35028a)[_0xb3f2('0x10')](function(_0x4cc8ba){logger['info'](_0xb3f2('0x11'),_0x55d0ee,'request\x20sent');logger[_0xb3f2('0x12')](_0xb3f2('0x13'),_0x55d0ee,_0xb3f2('0x14'),JSON[_0xb3f2('0x15')](_0x4cc8ba));if(_0x4cc8ba[_0xb3f2('0x16')]){if(_0x4cc8ba[_0xb3f2('0x16')]['code']===0x1f4){logger[_0xb3f2('0x16')](_0xb3f2('0x11'),_0x55d0ee,_0x4cc8ba[_0xb3f2('0x16')]['message']);return _0x5c5f74(_0x4cc8ba[_0xb3f2('0x16')][_0xb3f2('0x17')]);}logger[_0xb3f2('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x55d0ee,_0x4cc8ba[_0xb3f2('0x16')][_0xb3f2('0x17')]);return _0x54f0d9(_0x4cc8ba[_0xb3f2('0x16')][_0xb3f2('0x17')]);}else{logger['info'](_0xb3f2('0x11'),_0x55d0ee,_0xb3f2('0x14'));_0x54f0d9(_0x4cc8ba['result'][_0xb3f2('0x17')]);}})[_0xb3f2('0x18')](function(_0x236cac){logger[_0xb3f2('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x55d0ee,_0x236cac);_0x5c5f74(_0x236cac);});});}exports[_0xb3f2('0x19')]=function(_0x2875e8){var _0x53beb9=this;return new Promise(function(_0x91cad5,_0x1118b2){return db[_0xb3f2('0x1a')][_0xb3f2('0x1b')]({'raw':_0x2875e8['options']?_0x2875e8[_0xb3f2('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x2875e8[_0xb3f2('0x1c')]?_0x2875e8[_0xb3f2('0x1c')][_0xb3f2('0x1d')]||null:null,'attributes':_0x2875e8[_0xb3f2('0x1c')]?_0x2875e8[_0xb3f2('0x1c')][_0xb3f2('0x1e')]||null:null,'include':_0x2875e8[_0xb3f2('0x1c')]?_0x2875e8[_0xb3f2('0x1c')][_0xb3f2('0x1f')]?_[_0xb3f2('0x20')](_0x2875e8[_0xb3f2('0x1c')]['include'],function(_0x7a7e7c){return{'model':db[_0x7a7e7c[_0xb3f2('0x21')]],'as':_0x7a7e7c['as'],'attributes':_0x7a7e7c[_0xb3f2('0x1e')],'include':_0x7a7e7c['include']?_[_0xb3f2('0x20')](_0x7a7e7c[_0xb3f2('0x1f')],function(_0x7bd2e1){return{'model':db[_0x7bd2e1['model']],'as':_0x7bd2e1['as'],'attributes':_0x7bd2e1[_0xb3f2('0x1e')],'include':_0x7bd2e1[_0xb3f2('0x1f')]?_[_0xb3f2('0x20')](_0x7bd2e1[_0xb3f2('0x1f')],function(_0x25ddff){return{'model':db[_0x25ddff['model']],'as':_0x25ddff['as'],'attributes':_0x25ddff[_0xb3f2('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb3f2('0x10')](function(_0x21d3f2){logger[_0xb3f2('0x22')](_0xb3f2('0x19'),_0x2875e8);logger['debug'](_0xb3f2('0x19'),_0x2875e8,JSON[_0xb3f2('0x15')](_0x21d3f2));_0x91cad5(_0x21d3f2);})[_0xb3f2('0x18')](function(_0x2da229){logger[_0xb3f2('0x16')]('ShowWhatsappAccount',_0x2da229[_0xb3f2('0x17')],_0x2875e8);_0x1118b2(_0x53beb9[_0xb3f2('0x16')](0x1f4,_0x2da229[_0xb3f2('0x17')]));});});};
\ No newline at end of file
+var _0x5af6=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','include','model','attributes','map','lodash','randomstring','../../mysqldb'];(function(_0x4887c3,_0x2529a8){var _0x43ab61=function(_0x2d774d){while(--_0x2d774d){_0x4887c3['push'](_0x4887c3['shift']());}};_0x43ab61(++_0x2529a8);}(_0x5af6,0x15d));var _0x65af=function(_0xdd8620,_0x39ed20){_0xdd8620=_0xdd8620-0x0;var _0x25d02f=_0x5af6[_0xdd8620];return _0x25d02f;};'use strict';var _=require(_0x65af('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x65af('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x65af('0x2'))['db'];var utils=require(_0x65af('0x3'));var logger=require(_0x65af('0x4'))('rpc');var config=require(_0x65af('0x5'));var jayson=require(_0x65af('0x6'));var client=jayson[_0x65af('0x7')]['http']({'port':0x232a});config[_0x65af('0x8')]=_[_0x65af('0x9')](config['redis'],{'host':_0x65af('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x65af('0x8')]));require('./whatsappAccount.socket')[_0x65af('0xb')](socket);function respondWithRpcPromise(_0x1df61f,_0x3aba32,_0x22803b){return new BPromise(function(_0x2cb915,_0x584c5a){return client[_0x65af('0xc')](_0x1df61f,_0x22803b)[_0x65af('0xd')](function(_0xc272bb){logger['info'](_0x65af('0xe'),_0x3aba32,_0x65af('0xf'));logger['debug'](_0x65af('0x10'),_0x3aba32,_0x65af('0xf'),JSON[_0x65af('0x11')](_0xc272bb));if(_0xc272bb['error']){if(_0xc272bb[_0x65af('0x12')]['code']===0x1f4){logger['error']('WhatsappAccount,\x20%s,\x20%s',_0x3aba32,_0xc272bb[_0x65af('0x12')]['message']);return _0x584c5a(_0xc272bb['error']['message']);}logger[_0x65af('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x3aba32,_0xc272bb[_0x65af('0x12')][_0x65af('0x13')]);return _0x2cb915(_0xc272bb[_0x65af('0x12')][_0x65af('0x13')]);}else{logger[_0x65af('0x14')](_0x65af('0xe'),_0x3aba32,'request\x20sent');_0x2cb915(_0xc272bb['result']['message']);}})[_0x65af('0x15')](function(_0x26ab0e){logger[_0x65af('0x12')]('WhatsappAccount,\x20%s,\x20%s',_0x3aba32,_0x26ab0e);_0x584c5a(_0x26ab0e);});});}exports[_0x65af('0x16')]=function(_0x42d552){var _0x1bff74=this;return new Promise(function(_0x1133dc,_0x326f86){return db[_0x65af('0x17')][_0x65af('0x18')]({'raw':_0x42d552['options']?_0x42d552[_0x65af('0x19')][_0x65af('0x1a')]===undefined?!![]:![]:!![],'where':_0x42d552['options']?_0x42d552[_0x65af('0x19')][_0x65af('0x1b')]||null:null,'attributes':_0x42d552[_0x65af('0x19')]?_0x42d552['options']['attributes']||null:null,'include':_0x42d552[_0x65af('0x19')]?_0x42d552[_0x65af('0x19')]['include']?_['map'](_0x42d552[_0x65af('0x19')][_0x65af('0x1c')],function(_0x4a29b8){return{'model':db[_0x4a29b8[_0x65af('0x1d')]],'as':_0x4a29b8['as'],'attributes':_0x4a29b8[_0x65af('0x1e')],'include':_0x4a29b8[_0x65af('0x1c')]?_[_0x65af('0x1f')](_0x4a29b8[_0x65af('0x1c')],function(_0x27cab3){return{'model':db[_0x27cab3['model']],'as':_0x27cab3['as'],'attributes':_0x27cab3[_0x65af('0x1e')],'include':_0x27cab3[_0x65af('0x1c')]?_['map'](_0x27cab3[_0x65af('0x1c')],function(_0x474b79){return{'model':db[_0x474b79[_0x65af('0x1d')]],'as':_0x474b79['as'],'attributes':_0x474b79['attributes']};}):[]};}):[]};}):[]:[]})[_0x65af('0xd')](function(_0x231e5c){logger['info']('ShowWhatsappAccount',_0x42d552);logger['debug']('ShowWhatsappAccount',_0x42d552,JSON['stringify'](_0x231e5c));_0x1133dc(_0x231e5c);})[_0x65af('0x15')](function(_0x5b7418){logger[_0x65af('0x12')]('ShowWhatsappAccount',_0x5b7418[_0x65af('0x13')],_0x42d552);_0x326f86(_0x1bff74[_0x65af('0x12')](0x1f4,_0x5b7418['message']));});});};
\ No newline at end of file
index 364238a..773275c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0049=['save','remove','update','removeListener','register','length','whatsappAccount:','./whatsappAccount.events'];(function(_0x441763,_0x51e92a){var _0xdf34c4=function(_0x3199f1){while(--_0x3199f1){_0x441763['push'](_0x441763['shift']());}};_0xdf34c4(++_0x51e92a);}(_0x0049,0x147));var _0x9004=function(_0x2ee907,_0x7c8139){_0x2ee907=_0x2ee907-0x0;var _0x3111f4=_0x0049[_0x2ee907];return _0x3111f4;};'use strict';var WhatsappAccountEvents=require(_0x9004('0x0'));var events=[_0x9004('0x1'),_0x9004('0x2'),_0x9004('0x3')];function createListener(_0x58535,_0x12e133){return function(_0x2240cf){_0x12e133['emit'](_0x58535,_0x2240cf);};}function removeListener(_0x395ace,_0x691e1f){return function(){WhatsappAccountEvents[_0x9004('0x4')](_0x395ace,_0x691e1f);};}exports[_0x9004('0x5')]=function(_0x321189){for(var _0x2ee00f=0x0,_0x428d6e=events[_0x9004('0x6')];_0x2ee00f<_0x428d6e;_0x2ee00f++){var _0x57fa78=events[_0x2ee00f];var _0x3b83ef=createListener(_0x9004('0x7')+_0x57fa78,_0x321189);WhatsappAccountEvents['on'](_0x57fa78,_0x3b83ef);}};
\ No newline at end of file
+var _0x89af=['emit','removeListener','length','whatsappAccount:','save','remove','update'];(function(_0x4a367f,_0x4e05f2){var _0x2bedd5=function(_0x5b5e70){while(--_0x5b5e70){_0x4a367f['push'](_0x4a367f['shift']());}};_0x2bedd5(++_0x4e05f2);}(_0x89af,0xf9));var _0xf89a=function(_0x5efefe,_0x3b695b){_0x5efefe=_0x5efefe-0x0;var _0x1d7d1a=_0x89af[_0x5efefe];return _0x1d7d1a;};'use strict';var WhatsappAccountEvents=require('./whatsappAccount.events');var events=[_0xf89a('0x0'),_0xf89a('0x1'),_0xf89a('0x2')];function createListener(_0x28f6d7,_0x4ff8a2){return function(_0x7cae85){_0x4ff8a2[_0xf89a('0x3')](_0x28f6d7,_0x7cae85);};}function removeListener(_0x985b25,_0x5cb960){return function(){WhatsappAccountEvents[_0xf89a('0x4')](_0x985b25,_0x5cb960);};}exports['register']=function(_0x42c8eb){for(var _0x5193a4=0x0,_0x2928f8=events[_0xf89a('0x5')];_0x5193a4<_0x2928f8;_0x5193a4++){var _0x3640d8=events[_0x5193a4];var _0x23b84e=createListener(_0xf89a('0x6')+_0x3640d8,_0x42c8eb);WhatsappAccountEvents['on'](_0x3640d8,_0x23b84e);}};
\ No newline at end of file
index 8afae17..e8a593e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7768=['exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','show','post','create','/:id','update','delete','destroy'];(function(_0x3c81b5,_0x3f5ed7){var _0x5888c4=function(_0x4e65b0){while(--_0x4e65b0){_0x3c81b5['push'](_0x3c81b5['shift']());}};_0x5888c4(++_0x3f5ed7);}(_0x7768,0xf8));var _0x8776=function(_0x47a5b3,_0x279791){_0x47a5b3=_0x47a5b3-0x0;var _0x187b60=_0x7768[_0x47a5b3];return _0x187b60;};'use strict';var multer=require(_0x8776('0x0'));var util=require(_0x8776('0x1'));var path=require('path');var timeout=require(_0x8776('0x2'));var express=require(_0x8776('0x3'));var router=express[_0x8776('0x4')]();var fs_extra=require(_0x8776('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8776('0x6'));var config=require(_0x8776('0x7'));var controller=require('./whatsappApplication.controller');router[_0x8776('0x8')]('/',auth['isAuthenticated'](),controller[_0x8776('0x9')]);router[_0x8776('0x8')]('/:id',auth[_0x8776('0xa')](),controller[_0x8776('0xb')]);router[_0x8776('0xc')]('/',auth[_0x8776('0xa')](),controller[_0x8776('0xd')]);router['put'](_0x8776('0xe'),auth[_0x8776('0xa')](),controller[_0x8776('0xf')]);router[_0x8776('0x10')](_0x8776('0xe'),auth[_0x8776('0xa')](),controller[_0x8776('0x11')]);module[_0x8776('0x12')]=router;
\ No newline at end of file
+var _0xacf3=['get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller'];(function(_0x13ce0c,_0x3f2a0d){var _0x4388fb=function(_0x27db4b){while(--_0x27db4b){_0x13ce0c['push'](_0x13ce0c['shift']());}};_0x4388fb(++_0x3f2a0d);}(_0xacf3,0x6b));var _0x3acf=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xacf3[_0x57b54c];return _0x59cc19;};'use strict';var multer=require('multer');var util=require(_0x3acf('0x0'));var path=require(_0x3acf('0x1'));var timeout=require('connect-timeout');var express=require(_0x3acf('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3acf('0x3'));var interaction=require(_0x3acf('0x4'));var config=require(_0x3acf('0x5'));var controller=require(_0x3acf('0x6'));router[_0x3acf('0x7')]('/',auth[_0x3acf('0x8')](),controller[_0x3acf('0x9')]);router[_0x3acf('0x7')](_0x3acf('0xa'),auth['isAuthenticated'](),controller[_0x3acf('0xb')]);router[_0x3acf('0xc')]('/',auth[_0x3acf('0x8')](),controller[_0x3acf('0xd')]);router[_0x3acf('0xe')]('/:id',auth[_0x3acf('0x8')](),controller[_0x3acf('0xf')]);router[_0x3acf('0x10')]('/:id',auth[_0x3acf('0x8')](),controller[_0x3acf('0x11')]);module[_0x3acf('0x12')]=router;
\ No newline at end of file
index 7ca20d7..84afe96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc6=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x512d50,_0x51202b){var _0x24b38a=function(_0x3a83fe){while(--_0x3a83fe){_0x512d50['push'](_0x512d50['shift']());}};_0x24b38a(++_0x51202b);}(_0x8fc6,0x1c1));var _0x68fc=function(_0x37b022,_0x742861){_0x37b022=_0x37b022-0x0;var _0x3b6c68=_0x8fc6[_0x37b022];return _0x3b6c68;};'use strict';var Sequelize=require(_0x68fc('0x0'));module[_0x68fc('0x1')]={'priority':{'type':Sequelize[_0x68fc('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x68fc('0x3')],'allowNull':![],'defaultValue':_0x68fc('0x4')},'appdata':{'type':Sequelize[_0x68fc('0x5')]()},'description':{'type':Sequelize[_0x68fc('0x3')]},'interval':{'type':Sequelize[_0x68fc('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xa897=['noop','TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x2c74fc,_0x5a299f){var _0x2a2435=function(_0x2464f7){while(--_0x2464f7){_0x2c74fc['push'](_0x2c74fc['shift']());}};_0x2a2435(++_0x5a299f);}(_0xa897,0x73));var _0x7a89=function(_0x4604ba,_0x3cc97c){_0x4604ba=_0x4604ba-0x0;var _0x1a1a58=_0xa897[_0x4604ba];return _0x1a1a58;};'use strict';var Sequelize=require(_0x7a89('0x0'));module[_0x7a89('0x1')]={'priority':{'type':Sequelize[_0x7a89('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7a89('0x3')],'allowNull':![],'defaultValue':_0x7a89('0x4')},'appdata':{'type':Sequelize[_0x7a89('0x5')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x7a89('0x3')],'defaultValue':_0x7a89('0x6')}};
\ No newline at end of file
index d0df4f6..e2189b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77d4=['set','json','apply','reject','save','update','then','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','filter','options','includeAll','findAll','rows','catch','show','params','include','merge','find','create','body','rimraf','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x77d4,0x108));var _0x477d=function(_0x5760bd,_0x4f12e4){_0x5760bd=_0x5760bd-0x0;var _0x572625=_0x77d4[_0x5760bd];return _0x572625;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x477d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x477d('0x1'));var rp=require('request-promise');var moment=require(_0x477d('0x2'));var BPromise=require(_0x477d('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x477d('0x4'));var sox=require(_0x477d('0x5'));var csv=require(_0x477d('0x6'));var ejs=require(_0x477d('0x7'));var fs=require('fs');var fs_extra=require(_0x477d('0x8'));var _=require(_0x477d('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x477d('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x477d('0xb'));var Papa=require(_0x477d('0xc'));var Redis=require(_0x477d('0xd'));var authService=require(_0x477d('0xe'));var qs=require(_0x477d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x477d('0x10'));var logger=require('../../config/logger')(_0x477d('0x11'));var utils=require(_0x477d('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x477d('0x13'));var db=require(_0x477d('0x14'))['db'];function respondWithStatusCode(_0x5a190c,_0x5dd33c){_0x5dd33c=_0x5dd33c||0xcc;return function(_0x6ff724){if(_0x6ff724){return _0x5a190c[_0x477d('0x15')](_0x5dd33c);}return _0x5a190c['status'](_0x5dd33c)[_0x477d('0x16')]();};}function respondWithResult(_0x1d5699,_0x48c73a){_0x48c73a=_0x48c73a||0xc8;return function(_0x4b2021){if(_0x4b2021){return _0x1d5699[_0x477d('0x17')](_0x48c73a)['json'](_0x4b2021);}};}function respondWithFilteredResult(_0x30481f,_0x234b99){return function(_0x25fc02){if(_0x25fc02){var _0x5985b5=typeof _0x234b99[_0x477d('0x18')]===_0x477d('0x19')&&typeof _0x234b99[_0x477d('0x1a')]===_0x477d('0x19');var _0x57b38e=_0x25fc02[_0x477d('0x1b')];var _0x5d5553=_0x5985b5?0x0:_0x234b99[_0x477d('0x18')];var _0x1399d7=_0x5985b5?_0x25fc02[_0x477d('0x1b')]:_0x234b99[_0x477d('0x18')]+_0x234b99[_0x477d('0x1a')];var _0x2145ce;if(_0x1399d7>=_0x57b38e){_0x1399d7=_0x57b38e;_0x2145ce=0xc8;}else{_0x2145ce=0xce;}_0x30481f['status'](_0x2145ce);return _0x30481f[_0x477d('0x1c')]('Content-Range',_0x5d5553+'-'+_0x1399d7+'/'+_0x57b38e)[_0x477d('0x1d')](_0x25fc02);}return null;};}function patchUpdates(_0x24a6d5){return function(_0x40256e){try{jsonpatch[_0x477d('0x1e')](_0x40256e,_0x24a6d5,!![]);}catch(_0x27b3aa){return BPromise[_0x477d('0x1f')](_0x27b3aa);}return _0x40256e[_0x477d('0x20')]();};}function saveUpdates(_0x17154d,_0x45a8bd){return function(_0x5981a){if(_0x5981a){return _0x5981a[_0x477d('0x21')](_0x17154d)[_0x477d('0x22')](function(_0x43c845){return _0x43c845;});}return null;};}function removeEntity(_0x1f3868,_0x4e6a44){return function(_0x4481b0){if(_0x4481b0){return _0x4481b0['destroy']()[_0x477d('0x22')](function(){_0x1f3868[_0x477d('0x17')](0xcc)[_0x477d('0x16')]();});}};}function handleEntityNotFound(_0x2287b4,_0x4bb50e){return function(_0xd6dca5){if(!_0xd6dca5){_0x2287b4[_0x477d('0x15')](0x194);}return _0xd6dca5;};}function handleError(_0x1ca4fe,_0x48ee5e){_0x48ee5e=_0x48ee5e||0x1f4;return function(_0x585648){logger[_0x477d('0x23')](_0x585648[_0x477d('0x24')]);if(_0x585648[_0x477d('0x25')]){delete _0x585648['name'];}_0x1ca4fe[_0x477d('0x17')](_0x48ee5e)[_0x477d('0x26')](_0x585648);};}exports[_0x477d('0x27')]=function(_0xe4dd40,_0x37b332){var _0x537fc4={},_0x2fc959={},_0xeb02f5={'count':0x0,'rows':[]};var _0x17dd16=_[_0x477d('0x28')](db[_0x477d('0x29')][_0x477d('0x2a')],function(_0x180046){return{'name':_0x180046[_0x477d('0x2b')],'type':_0x180046[_0x477d('0x2c')][_0x477d('0x2d')]};});_0x2fc959[_0x477d('0x2e')]=_[_0x477d('0x28')](_0x17dd16,_0x477d('0x25'));_0x2fc959[_0x477d('0x2f')]=_[_0x477d('0x30')](_0xe4dd40[_0x477d('0x2f')]);_0x2fc959[_0x477d('0x31')]=_[_0x477d('0x32')](_0x2fc959[_0x477d('0x2e')],_0x2fc959[_0x477d('0x2f')]);_0x537fc4['attributes']=_[_0x477d('0x32')](_0x2fc959['model'],qs[_0x477d('0x33')](_0xe4dd40[_0x477d('0x2f')][_0x477d('0x33')]));_0x537fc4['attributes']=_0x537fc4[_0x477d('0x34')][_0x477d('0x35')]?_0x537fc4[_0x477d('0x34')]:_0x2fc959[_0x477d('0x2e')];if(!_0xe4dd40[_0x477d('0x2f')][_0x477d('0x36')](_0x477d('0x37'))){_0x537fc4[_0x477d('0x1a')]=qs[_0x477d('0x1a')](_0xe4dd40[_0x477d('0x2f')]['limit']);_0x537fc4[_0x477d('0x18')]=qs[_0x477d('0x18')](_0xe4dd40[_0x477d('0x2f')]['offset']);}_0x537fc4[_0x477d('0x38')]=qs[_0x477d('0x39')](_0xe4dd40[_0x477d('0x2f')]['sort']);_0x537fc4['where']=qs[_0x477d('0x31')](_[_0x477d('0x3a')](_0xe4dd40[_0x477d('0x2f')],_0x2fc959[_0x477d('0x31')]),_0x17dd16);if(_0xe4dd40[_0x477d('0x2f')]['filter']){_0x537fc4[_0x477d('0x3b')]=_['merge'](_0x537fc4[_0x477d('0x3b')],{'$or':_[_0x477d('0x28')](_0x17dd16,function(_0x356f41){if(_0x356f41['type']!=='VIRTUAL'){var _0x184d50={};_0x184d50[_0x356f41[_0x477d('0x25')]]={'$like':'%'+_0xe4dd40[_0x477d('0x2f')][_0x477d('0x3c')]+'%'};return _0x184d50;}})});}_0x537fc4=_['merge']({},_0x537fc4,_0xe4dd40[_0x477d('0x3d')]);var _0xc091e={'where':_0x537fc4[_0x477d('0x3b')]};return db[_0x477d('0x29')][_0x477d('0x1b')](_0xc091e)['then'](function(_0x472149){_0xeb02f5[_0x477d('0x1b')]=_0x472149;if(_0xe4dd40['query'][_0x477d('0x3e')]){_0x537fc4['include']=[{'all':!![]}];}return db[_0x477d('0x29')][_0x477d('0x3f')](_0x537fc4);})[_0x477d('0x22')](function(_0x335b2a){_0xeb02f5[_0x477d('0x40')]=_0x335b2a;return _0xeb02f5;})[_0x477d('0x22')](respondWithFilteredResult(_0x37b332,_0x537fc4))[_0x477d('0x41')](handleError(_0x37b332,null));};exports[_0x477d('0x42')]=function(_0x43ffd1,_0x4c22f5){var _0x5759f={'raw':!![],'where':{'id':_0x43ffd1[_0x477d('0x43')]['id']}},_0x31c9a1={};_0x31c9a1[_0x477d('0x2e')]=_['keys'](db['WhatsappApplication'][_0x477d('0x2a')]);_0x31c9a1[_0x477d('0x2f')]=_['keys'](_0x43ffd1[_0x477d('0x2f')]);_0x31c9a1['filters']=_['intersection'](_0x31c9a1[_0x477d('0x2e')],_0x31c9a1[_0x477d('0x2f')]);_0x5759f[_0x477d('0x34')]=_[_0x477d('0x32')](_0x31c9a1[_0x477d('0x2e')],qs[_0x477d('0x33')](_0x43ffd1['query'][_0x477d('0x33')]));_0x5759f[_0x477d('0x34')]=_0x5759f[_0x477d('0x34')][_0x477d('0x35')]?_0x5759f[_0x477d('0x34')]:_0x31c9a1['model'];if(_0x43ffd1['query'][_0x477d('0x3e')]){_0x5759f[_0x477d('0x44')]=[{'all':!![]}];}_0x5759f=_[_0x477d('0x45')]({},_0x5759f,_0x43ffd1['options']);return db[_0x477d('0x29')][_0x477d('0x46')](_0x5759f)[_0x477d('0x22')](handleEntityNotFound(_0x4c22f5,null))[_0x477d('0x22')](respondWithResult(_0x4c22f5,null))[_0x477d('0x41')](handleError(_0x4c22f5,null));};exports[_0x477d('0x47')]=function(_0x13f606,_0x4d4e19){return db[_0x477d('0x29')][_0x477d('0x47')](_0x13f606[_0x477d('0x48')],{})[_0x477d('0x22')](respondWithResult(_0x4d4e19,0xc9))[_0x477d('0x41')](handleError(_0x4d4e19,null));};exports[_0x477d('0x21')]=function(_0x2aad84,_0x30e474){if(_0x2aad84[_0x477d('0x48')]['id']){delete _0x2aad84[_0x477d('0x48')]['id'];}return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x2aad84[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x30e474,null))[_0x477d('0x22')](saveUpdates(_0x2aad84['body'],null))[_0x477d('0x22')](respondWithResult(_0x30e474,null))[_0x477d('0x41')](handleError(_0x30e474,null));};exports['destroy']=function(_0x566ba0,_0x5cb3ca){return db[_0x477d('0x29')][_0x477d('0x46')]({'where':{'id':_0x566ba0[_0x477d('0x43')]['id']}})[_0x477d('0x22')](handleEntityNotFound(_0x5cb3ca,null))[_0x477d('0x22')](removeEntity(_0x5cb3ca,null))[_0x477d('0x41')](handleError(_0x5cb3ca,null));};
\ No newline at end of file
+var _0x50a8=['querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','WhatsappApplication','then','includeAll','findAll','catch','show','params','keys','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','fs-extra','squel','crypto','jsforce'];(function(_0x1598a3,_0x436933){var _0x30b1c3=function(_0x3b99ac){while(--_0x3b99ac){_0x1598a3['push'](_0x1598a3['shift']());}};_0x30b1c3(++_0x436933);}(_0x50a8,0x193));var _0x850a=function(_0x1ef547,_0x31bfdb){_0x1ef547=_0x1ef547-0x0;var _0x1d697b=_0x50a8[_0x1ef547];return _0x1d697b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x850a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x850a('0x1'));var rp=require(_0x850a('0x2'));var moment=require(_0x850a('0x3'));var BPromise=require(_0x850a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0x850a('0x5'));var csv=require(_0x850a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x850a('0x7'));var _=require('lodash');var squel=require(_0x850a('0x8'));var crypto=require(_0x850a('0x9'));var jsforce=require(_0x850a('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x850a('0x6'));var querystring=require(_0x850a('0xb'));var Papa=require(_0x850a('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x850a('0xd'));var as=require(_0x850a('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x850a('0xf'))('api');var utils=require(_0x850a('0x10'));var config=require(_0x850a('0x11'));var licenseUtil=require(_0x850a('0x12'));var db=require(_0x850a('0x13'))['db'];function respondWithStatusCode(_0xa432b3,_0x53f12c){_0x53f12c=_0x53f12c||0xcc;return function(_0x3f60a6){if(_0x3f60a6){return _0xa432b3[_0x850a('0x14')](_0x53f12c);}return _0xa432b3['status'](_0x53f12c)[_0x850a('0x15')]();};}function respondWithResult(_0x77df34,_0x486a34){_0x486a34=_0x486a34||0xc8;return function(_0x4174da){if(_0x4174da){return _0x77df34[_0x850a('0x16')](_0x486a34)[_0x850a('0x17')](_0x4174da);}};}function respondWithFilteredResult(_0x14c67b,_0x4baedd){return function(_0x2861f8){if(_0x2861f8){var _0x2b85c5=typeof _0x4baedd[_0x850a('0x18')]===_0x850a('0x19')&&typeof _0x4baedd[_0x850a('0x1a')]===_0x850a('0x19');var _0x5ad5cd=_0x2861f8['count'];var _0x229bc5=_0x2b85c5?0x0:_0x4baedd[_0x850a('0x18')];var _0x2504db=_0x2b85c5?_0x2861f8[_0x850a('0x1b')]:_0x4baedd[_0x850a('0x18')]+_0x4baedd[_0x850a('0x1a')];var _0x4309a4;if(_0x2504db>=_0x5ad5cd){_0x2504db=_0x5ad5cd;_0x4309a4=0xc8;}else{_0x4309a4=0xce;}_0x14c67b[_0x850a('0x16')](_0x4309a4);return _0x14c67b['set'](_0x850a('0x1c'),_0x229bc5+'-'+_0x2504db+'/'+_0x5ad5cd)['json'](_0x2861f8);}return null;};}function patchUpdates(_0x27de28){return function(_0xd073c6){try{jsonpatch[_0x850a('0x1d')](_0xd073c6,_0x27de28,!![]);}catch(_0x495175){return BPromise[_0x850a('0x1e')](_0x495175);}return _0xd073c6[_0x850a('0x1f')]();};}function saveUpdates(_0x4914a8,_0x5662d1){return function(_0x287be8){if(_0x287be8){return _0x287be8[_0x850a('0x20')](_0x4914a8)['then'](function(_0xdf1d86){return _0xdf1d86;});}return null;};}function removeEntity(_0x3afd39,_0x12b4ab){return function(_0x595ec2){if(_0x595ec2){return _0x595ec2['destroy']()['then'](function(){_0x3afd39['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x13d32b,_0x34e0a9){return function(_0x453519){if(!_0x453519){_0x13d32b['sendStatus'](0x194);}return _0x453519;};}function handleError(_0x5a6864,_0x12b4ec){_0x12b4ec=_0x12b4ec||0x1f4;return function(_0x1a6e54){logger[_0x850a('0x21')](_0x1a6e54[_0x850a('0x22')]);if(_0x1a6e54[_0x850a('0x23')]){delete _0x1a6e54[_0x850a('0x23')];}_0x5a6864[_0x850a('0x16')](_0x12b4ec)[_0x850a('0x24')](_0x1a6e54);};}exports[_0x850a('0x25')]=function(_0x151a3a,_0x2754bb){var _0x1fa2bc={},_0x4dcb6c={},_0x4d9bd4={'count':0x0,'rows':[]};var _0x422564=_[_0x850a('0x26')](db['WhatsappApplication'][_0x850a('0x27')],function(_0x33eac3){return{'name':_0x33eac3[_0x850a('0x28')],'type':_0x33eac3[_0x850a('0x29')][_0x850a('0x2a')]};});_0x4dcb6c[_0x850a('0x2b')]=_[_0x850a('0x26')](_0x422564,'name');_0x4dcb6c[_0x850a('0x2c')]=_['keys'](_0x151a3a['query']);_0x4dcb6c[_0x850a('0x2d')]=_[_0x850a('0x2e')](_0x4dcb6c['model'],_0x4dcb6c[_0x850a('0x2c')]);_0x1fa2bc[_0x850a('0x2f')]=_['intersection'](_0x4dcb6c['model'],qs[_0x850a('0x30')](_0x151a3a[_0x850a('0x2c')][_0x850a('0x30')]));_0x1fa2bc['attributes']=_0x1fa2bc[_0x850a('0x2f')]['length']?_0x1fa2bc[_0x850a('0x2f')]:_0x4dcb6c[_0x850a('0x2b')];if(!_0x151a3a[_0x850a('0x2c')][_0x850a('0x31')](_0x850a('0x32'))){_0x1fa2bc[_0x850a('0x1a')]=qs[_0x850a('0x1a')](_0x151a3a[_0x850a('0x2c')][_0x850a('0x1a')]);_0x1fa2bc[_0x850a('0x18')]=qs[_0x850a('0x18')](_0x151a3a['query']['offset']);}_0x1fa2bc[_0x850a('0x33')]=qs[_0x850a('0x34')](_0x151a3a[_0x850a('0x2c')]['sort']);_0x1fa2bc[_0x850a('0x35')]=qs[_0x850a('0x2d')](_[_0x850a('0x36')](_0x151a3a[_0x850a('0x2c')],_0x4dcb6c[_0x850a('0x2d')]),_0x422564);if(_0x151a3a[_0x850a('0x2c')][_0x850a('0x37')]){_0x1fa2bc['where']=_[_0x850a('0x38')](_0x1fa2bc[_0x850a('0x35')],{'$or':_[_0x850a('0x26')](_0x422564,function(_0x18a521){if(_0x18a521[_0x850a('0x29')]!=='VIRTUAL'){var _0x59023e={};_0x59023e[_0x18a521[_0x850a('0x23')]]={'$like':'%'+_0x151a3a[_0x850a('0x2c')]['filter']+'%'};return _0x59023e;}})});}_0x1fa2bc=_['merge']({},_0x1fa2bc,_0x151a3a[_0x850a('0x39')]);var _0x1df7ea={'where':_0x1fa2bc[_0x850a('0x35')]};return db[_0x850a('0x3a')][_0x850a('0x1b')](_0x1df7ea)[_0x850a('0x3b')](function(_0x45128c){_0x4d9bd4[_0x850a('0x1b')]=_0x45128c;if(_0x151a3a['query'][_0x850a('0x3c')]){_0x1fa2bc['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0x850a('0x3d')](_0x1fa2bc);})[_0x850a('0x3b')](function(_0x513304){_0x4d9bd4['rows']=_0x513304;return _0x4d9bd4;})['then'](respondWithFilteredResult(_0x2754bb,_0x1fa2bc))[_0x850a('0x3e')](handleError(_0x2754bb,null));};exports[_0x850a('0x3f')]=function(_0x1c4b34,_0x48bbac){var _0x2725d3={'raw':!![],'where':{'id':_0x1c4b34[_0x850a('0x40')]['id']}},_0x8c01fd={};_0x8c01fd['model']=_[_0x850a('0x41')](db[_0x850a('0x3a')][_0x850a('0x27')]);_0x8c01fd[_0x850a('0x2c')]=_[_0x850a('0x41')](_0x1c4b34[_0x850a('0x2c')]);_0x8c01fd[_0x850a('0x2d')]=_[_0x850a('0x2e')](_0x8c01fd[_0x850a('0x2b')],_0x8c01fd[_0x850a('0x2c')]);_0x2725d3[_0x850a('0x2f')]=_[_0x850a('0x2e')](_0x8c01fd[_0x850a('0x2b')],qs[_0x850a('0x30')](_0x1c4b34[_0x850a('0x2c')][_0x850a('0x30')]));_0x2725d3[_0x850a('0x2f')]=_0x2725d3[_0x850a('0x2f')]['length']?_0x2725d3[_0x850a('0x2f')]:_0x8c01fd['model'];if(_0x1c4b34[_0x850a('0x2c')][_0x850a('0x3c')]){_0x2725d3['include']=[{'all':!![]}];}_0x2725d3=_[_0x850a('0x38')]({},_0x2725d3,_0x1c4b34[_0x850a('0x39')]);return db[_0x850a('0x3a')][_0x850a('0x42')](_0x2725d3)[_0x850a('0x3b')](handleEntityNotFound(_0x48bbac,null))[_0x850a('0x3b')](respondWithResult(_0x48bbac,null))[_0x850a('0x3e')](handleError(_0x48bbac,null));};exports[_0x850a('0x43')]=function(_0x2029e0,_0x401d58){return db[_0x850a('0x3a')]['create'](_0x2029e0['body'],{})['then'](respondWithResult(_0x401d58,0xc9))[_0x850a('0x3e')](handleError(_0x401d58,null));};exports[_0x850a('0x20')]=function(_0x407592,_0x1662d0){if(_0x407592[_0x850a('0x44')]['id']){delete _0x407592['body']['id'];}return db[_0x850a('0x3a')]['find']({'where':{'id':_0x407592['params']['id']}})[_0x850a('0x3b')](handleEntityNotFound(_0x1662d0,null))[_0x850a('0x3b')](saveUpdates(_0x407592['body'],null))[_0x850a('0x3b')](respondWithResult(_0x1662d0,null))['catch'](handleError(_0x1662d0,null));};exports['destroy']=function(_0xcfdb40,_0x4ba2d8){return db[_0x850a('0x3a')]['find']({'where':{'id':_0xcfdb40['params']['id']}})[_0x850a('0x3b')](handleEntityNotFound(_0x4ba2d8,null))[_0x850a('0x3b')](removeEntity(_0x4ba2d8,null))[_0x850a('0x3e')](handleError(_0x4ba2d8,null));};
\ No newline at end of file
index 2d61c2e..abb0f26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa2b=['exports','define','WhatsappApplication','utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xfa2b,0x1b7));var _0xbfa2=function(_0x4d2399,_0x392051){_0x4d2399=_0x4d2399-0x0;var _0x212f0d=_0xfa2b[_0x4d2399];return _0x212f0d;};'use strict';var _=require(_0xbfa2('0x0'));var util=require(_0xbfa2('0x1'));var logger=require(_0xbfa2('0x2'))(_0xbfa2('0x3'));var moment=require(_0xbfa2('0x4'));var BPromise=require(_0xbfa2('0x5'));var rp=require(_0xbfa2('0x6'));var fs=require('fs');var path=require(_0xbfa2('0x7'));var rimraf=require(_0xbfa2('0x8'));var config=require(_0xbfa2('0x9'));var attributes=require(_0xbfa2('0xa'));module[_0xbfa2('0xb')]=function(_0x12d71e,_0x237a99){return _0x12d71e[_0xbfa2('0xc')](_0xbfa2('0xd'),attributes,{'tableName':'whatsapp_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbfa2('0xe'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x46fc=['WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x5b0e9e,_0x5e1b13){var _0x5dd305=function(_0x434e86){while(--_0x434e86){_0x5b0e9e['push'](_0x5b0e9e['shift']());}};_0x5dd305(++_0x5e1b13);}(_0x46fc,0x103));var _0xc46f=function(_0x4c1ba3,_0x2a7bf9){_0x4c1ba3=_0x4c1ba3-0x0;var _0x54e5a0=_0x46fc[_0x4c1ba3];return _0x54e5a0;};'use strict';var _=require(_0xc46f('0x0'));var util=require(_0xc46f('0x1'));var logger=require(_0xc46f('0x2'))(_0xc46f('0x3'));var moment=require(_0xc46f('0x4'));var BPromise=require(_0xc46f('0x5'));var rp=require(_0xc46f('0x6'));var fs=require('fs');var path=require(_0xc46f('0x7'));var rimraf=require(_0xc46f('0x8'));var config=require('../../config/environment');var attributes=require('./whatsappApplication.attributes');module[_0xc46f('0x9')]=function(_0x176c6f,_0x30ca8d){return _0x176c6f[_0xc46f('0xa')](_0xc46f('0xb'),attributes,{'tableName':_0xc46f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc46f('0xd'),'collate':_0xc46f('0xe')});};
\ No newline at end of file
index 49688fc..19711e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['rpc','../../config/environment','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x20a1c4,_0x4ed269){var _0x1315bd=function(_0x49cb71){while(--_0x49cb71){_0x20a1c4['push'](_0x20a1c4['shift']());}};_0x1315bd(++_0x4ed269);}(_0xa41a,0x6b));var _0xaa41=function(_0x206c11,_0x49f687){_0x206c11=_0x206c11-0x0;var _0x5425aa=_0xa41a[_0x206c11];return _0x5425aa;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}
\ No newline at end of file
+var _0x4c4e=['result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x3dd3b0,_0xd3506){var _0x414003=function(_0x3966ef){while(--_0x3966ef){_0x3dd3b0['push'](_0x3dd3b0['shift']());}};_0x414003(++_0xd3506);}(_0x4c4e,0x152));var _0xe4c4=function(_0x3e834d,_0x42c9d9){_0x3e834d=_0x3e834d-0x0;var _0x4f91f6=_0x4c4e[_0x3e834d];return _0x4f91f6;};'use strict';var _=require(_0xe4c4('0x0'));var util=require('util');var moment=require(_0xe4c4('0x1'));var BPromise=require(_0xe4c4('0x2'));var rs=require(_0xe4c4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe4c4('0x4'))['db'];var utils=require(_0xe4c4('0x5'));var logger=require(_0xe4c4('0x6'))('rpc');var config=require(_0xe4c4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xe4c4('0x8')][_0xe4c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x262b64,_0xad105,_0x22085a){return new BPromise(function(_0x329d29,_0x28a42e){return client[_0xe4c4('0xa')](_0x262b64,_0x22085a)['then'](function(_0x589b2e){logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));logger[_0xe4c4('0xe')](_0xe4c4('0xf'),_0xad105,_0xe4c4('0xd'),JSON['stringify'](_0x589b2e));if(_0x589b2e[_0xe4c4('0x10')]){if(_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x11')]===0x1f4){logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x28a42e(_0x589b2e['error'][_0xe4c4('0x12')]);}logger[_0xe4c4('0x10')]('WhatsappApplication,\x20%s,\x20%s',_0xad105,_0x589b2e[_0xe4c4('0x10')][_0xe4c4('0x12')]);return _0x329d29(_0x589b2e['error'][_0xe4c4('0x12')]);}else{logger[_0xe4c4('0xb')](_0xe4c4('0xc'),_0xad105,_0xe4c4('0xd'));_0x329d29(_0x589b2e[_0xe4c4('0x13')][_0xe4c4('0x12')]);}})[_0xe4c4('0x14')](function(_0x1038cb){logger[_0xe4c4('0x10')](_0xe4c4('0xc'),_0xad105,_0x1038cb);_0x28a42e(_0x1038cb);});});}
\ No newline at end of file
index b2ee816..32a6e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0309=['whatsappinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','index','get','isAuthenticated','/:id','/:id/messages','/:id/download','download','post','create','addMessage','tracked','whatsapp','whatsappinteraction:addtags','addTags','put','whatsappinteraction:update','update','delete'];(function(_0xebc2e1,_0x351488){var _0x1cf115=function(_0x7bbcda){while(--_0x7bbcda){_0xebc2e1['push'](_0xebc2e1['shift']());}};_0x1cf115(++_0x351488);}(_0x0309,0x165));var _0x9030=function(_0xd93385,_0x1885f7){_0xd93385=_0xd93385-0x0;var _0x4df629=_0x0309[_0xd93385];return _0x4df629;};'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('0xa')](_0x9030('0xd'),auth[_0x9030('0xb')](),controller['getMessages']);router[_0x9030('0xa')](_0x9030('0xe'),auth[_0x9030('0xb')](),controller[_0x9030('0xf')]);router[_0x9030('0x10')]('/',auth[_0x9030('0xb')](),controller[_0x9030('0x11')]);router['post'](_0x9030('0xd'),auth[_0x9030('0xb')](),controller[_0x9030('0x12')]);router[_0x9030('0x10')]('/:id/tags',auth[_0x9030('0xb')](),interaction[_0x9030('0x13')](_0x9030('0x14'),_0x9030('0x15')),controller[_0x9030('0x16')]);router[_0x9030('0x17')](_0x9030('0xc'),auth[_0x9030('0xb')](),interaction[_0x9030('0x13')]('whatsapp',_0x9030('0x18')),controller[_0x9030('0x19')]);router[_0x9030('0x1a')](_0x9030('0xc'),auth[_0x9030('0xb')](),interaction[_0x9030('0x13')](_0x9030('0x14'),_0x9030('0x1b')),controller[_0x9030('0x1c')]);router[_0x9030('0x1a')](_0x9030('0x1d'),auth[_0x9030('0xb')](),controller[_0x9030('0x1e')]);module[_0x9030('0x1f')]=router;
\ No newline at end of file
+var _0xa751=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/messages','getMessages','/:id/download','create','post','/:id/tags','whatsapp','whatsappinteraction:addtags','put','/:id','update','delete','tracked','destroy','removeTags','multer','util','path','connect-timeout'];(function(_0x21f42b,_0x34acf3){var _0x1b1413=function(_0x523d93){while(--_0x523d93){_0x21f42b['push'](_0x21f42b['shift']());}};_0x1b1413(++_0x34acf3);}(_0xa751,0x175));var _0x1a75=function(_0x4d5160,_0x2f52e8){_0x4d5160=_0x4d5160-0x0;var _0x47bb4b=_0xa751[_0x4d5160];return _0x47bb4b;};'use strict';var multer=require(_0x1a75('0x0'));var util=require(_0x1a75('0x1'));var path=require(_0x1a75('0x2'));var timeout=require(_0x1a75('0x3'));var express=require('express');var router=express[_0x1a75('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1a75('0x5'));var interaction=require(_0x1a75('0x6'));var config=require(_0x1a75('0x7'));var controller=require('./whatsappInteraction.controller');router[_0x1a75('0x8')]('/',auth[_0x1a75('0x9')](),controller[_0x1a75('0xa')]);router[_0x1a75('0x8')](_0x1a75('0xb'),auth[_0x1a75('0x9')](),controller[_0x1a75('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1a75('0xd')]);router[_0x1a75('0x8')](_0x1a75('0xe'),auth[_0x1a75('0x9')](),controller[_0x1a75('0xf')]);router[_0x1a75('0x8')](_0x1a75('0x10'),auth[_0x1a75('0x9')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x1a75('0x11')]);router[_0x1a75('0x12')](_0x1a75('0xe'),auth[_0x1a75('0x9')](),controller['addMessage']);router['post'](_0x1a75('0x13'),auth[_0x1a75('0x9')](),interaction['tracked'](_0x1a75('0x14'),_0x1a75('0x15')),controller['addTags']);router[_0x1a75('0x16')](_0x1a75('0x17'),auth[_0x1a75('0x9')](),interaction['tracked']('whatsapp','whatsappinteraction:update'),controller[_0x1a75('0x18')]);router[_0x1a75('0x19')](_0x1a75('0x17'),auth[_0x1a75('0x9')](),interaction[_0x1a75('0x1a')](_0x1a75('0x14'),'whatsappinteraction:destroy'),controller[_0x1a75('0x1b')]);router['delete']('/:id/tags',auth[_0x1a75('0x9')](),controller[_0x1a75('0x1c')]);module['exports']=router;
\ No newline at end of file
index e486ac0..5501d56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd101=['DATE','STRING','ENUM','out','sequelize','exports','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd101,0xc1));var _0x1d10=function(_0x53de5a,_0x36cf2d){_0x53de5a=_0x53de5a-0x0;var _0x17c567=_0xd101[_0x53de5a];return _0x17c567;};'use strict';var Sequelize=require(_0x1d10('0x0'));var moment=require('moment');module[_0x1d10('0x1')]={'closed':{'type':Sequelize[_0x1d10('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1d10('0x3')]},'disposition':{'type':Sequelize[_0x1d10('0x4')]},'secondDisposition':{'type':Sequelize[_0x1d10('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1d10('0x4')]},'note':{'type':Sequelize[_0x1d10('0x4')]},'phone':{'type':Sequelize[_0x1d10('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x1d10('0x5')]('in',_0x1d10('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1d10('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x1d10('0x5')]('in',_0x1d10('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1d10('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8781=['sequelize','moment','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x3bf1c7,_0x5e22c9){var _0x1192aa=function(_0x9ac268){while(--_0x9ac268){_0x3bf1c7['push'](_0x3bf1c7['shift']());}};_0x1192aa(++_0x5e22c9);}(_0x8781,0x1c8));var _0x1878=function(_0x29caaf,_0x31607f){_0x29caaf=_0x29caaf-0x0;var _0x40f14c=_0x8781[_0x29caaf];return _0x40f14c;};'use strict';var Sequelize=require(_0x1878('0x0'));var moment=require(_0x1878('0x1'));module[_0x1878('0x2')]={'closed':{'type':Sequelize[_0x1878('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1878('0x4')]},'disposition':{'type':Sequelize[_0x1878('0x5')]},'secondDisposition':{'type':Sequelize[_0x1878('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x1878('0x5')]},'phone':{'type':Sequelize[_0x1878('0x5')]},'read1stAt':{'type':Sequelize[_0x1878('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x1878('0x6')]('in',_0x1878('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x1878('0x4')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x1878('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x1878('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 1de228a..adc1aac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x410d=['attachments','transcript-%d-%s.zip','User','CmContact','firstName','lastName','Attachment','Messages','direction','secret','WhatsappAccount','Account','Owner','get','mkdirSync','Whatsapp','N.A.','basename','existsSync','createReadStream','pipe','out','System','renderFile','root','views','transcript-','.pdf','createPdfFromHTML','log','err','rimraf','zip-dir','request-promise','bluebird','path','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','defaults','redis','localhost','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','Users','map','fullname','TagIds','forEach','Tags','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','left_join','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_interaction_has_tags','it.WhatsappInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20>\x200','Contact','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','buildExpression','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','body','some','isEmpty','WhatsappAccountId','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','isArray','filter','isNumeric','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','Sequelize','QueryTypes','SELECT','DESC','t.id\x20IN\x20?','resolve','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.WhatsappAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','c.firstName','Contact.firstName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','push','all','rows','show','WhatsappInteraction','includeAll','include','catch','create','params','describe','addMessage','ids','omit','findOne','WhatsappMessage','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','emit','whatsappInteractionTags:save','removeTags','download','files','tmp','join','server'];(function(_0x28823a,_0x2bc303){var _0x53f5f8=function(_0x5c96f5){while(--_0x5c96f5){_0x28823a['push'](_0x28823a['shift']());}};_0x53f5f8(++_0x2bc303);}(_0x410d,0x106));var _0xd410=function(_0xac0de1,_0x12d3d9){_0xac0de1=_0xac0de1-0x0;var _0x1c1995=_0x410d[_0xac0de1];return _0x1c1995;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd410('0x0'));var zipdir=require(_0xd410('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd410('0x2'));var moment=require('moment');var BPromise=require(_0xd410('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd410('0x4'));var sox=require(_0xd410('0x5'));var csv=require('to-csv');var ejs=require(_0xd410('0x6'));var fs=require('fs');var fs_extra=require(_0xd410('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd410('0x8'));var jsforce=require(_0xd410('0x9'));var deskjs=require(_0xd410('0xa'));var toCsv=require(_0xd410('0xb'));var querystring=require(_0xd410('0xc'));var Papa=require(_0xd410('0xd'));var Redis=require('ioredis');var authService=require(_0xd410('0xe'));var qs=require(_0xd410('0xf'));var as=require(_0xd410('0x10'));var pdf=require(_0xd410('0x11'));var hardwareService=require(_0xd410('0x12'));var logger=require(_0xd410('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd410('0x14'));var db=require(_0xd410('0x15'))['db'];config['redis']=_[_0xd410('0x16')](config[_0xd410('0x17')],{'host':_0xd410('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd410('0x17')]));require('./whatsappInteraction.socket')['register'](socket);function respondWithStatusCode(_0x50d7a9,_0x1da901){_0x1da901=_0x1da901||0xcc;return function(_0x4f8bcd){if(_0x4f8bcd){return _0x50d7a9[_0xd410('0x19')](_0x1da901);}return _0x50d7a9[_0xd410('0x1a')](_0x1da901)[_0xd410('0x1b')]();};}function respondWithResult(_0x5ce054,_0x3ee4d3){_0x3ee4d3=_0x3ee4d3||0xc8;return function(_0x31f8b3){if(_0x31f8b3){return _0x5ce054[_0xd410('0x1a')](_0x3ee4d3)[_0xd410('0x1c')](_0x31f8b3);}};}function respondWithFilteredResult(_0x2cccfe,_0x1d1676){return function(_0x3d97f3){if(_0x3d97f3){var _0x5aadec=typeof _0x1d1676['offset']==='undefined'&&typeof _0x1d1676[_0xd410('0x1d')]===_0xd410('0x1e');var _0x2e32f5=_0x3d97f3[_0xd410('0x1f')];var _0x3fd02e=_0x5aadec?0x0:_0x1d1676['offset'];var _0x3a779c=_0x5aadec?_0x3d97f3['count']:_0x1d1676[_0xd410('0x20')]+_0x1d1676[_0xd410('0x1d')];var _0x237d80;if(_0x3a779c>=_0x2e32f5){_0x3a779c=_0x2e32f5;_0x237d80=0xc8;}else{_0x237d80=0xce;}_0x2cccfe[_0xd410('0x1a')](_0x237d80);return _0x2cccfe[_0xd410('0x21')](_0xd410('0x22'),_0x3fd02e+'-'+_0x3a779c+'/'+_0x2e32f5)[_0xd410('0x1c')](_0x3d97f3);}return null;};}function patchUpdates(_0x1d4d90){return function(_0x422b33){try{jsonpatch[_0xd410('0x23')](_0x422b33,_0x1d4d90,!![]);}catch(_0x119e72){return BPromise[_0xd410('0x24')](_0x119e72);}return _0x422b33[_0xd410('0x25')]();};}function saveUpdates(_0xad347f,_0x255a9c){return function(_0x4a85b6){if(_0x4a85b6){return _0x4a85b6[_0xd410('0x26')](_0xad347f)[_0xd410('0x27')](function(_0x2369b7){return _0x2369b7;});}return null;};}function removeEntity(_0x36f2af,_0x46e59a){return function(_0xbc663a){if(_0xbc663a){return _0xbc663a[_0xd410('0x28')]()[_0xd410('0x27')](function(){_0x36f2af[_0xd410('0x1a')](0xcc)[_0xd410('0x1b')]();});}};}function handleEntityNotFound(_0x171912,_0x1228cf){return function(_0x4ea412){if(!_0x4ea412){_0x171912['sendStatus'](0x194);}return _0x4ea412;};}function handleError(_0x2793b4,_0x306742){_0x306742=_0x306742||0x1f4;return function(_0x2394cc){logger[_0xd410('0x29')](_0x2394cc[_0xd410('0x2a')]);if(_0x2394cc[_0xd410('0x2b')]){delete _0x2394cc['name'];}_0x2793b4[_0xd410('0x1a')](_0x306742)[_0xd410('0x2c')](_0x2394cc);};}function getInteractionUsers(_0x637eb6,_0x31eb17){return new BPromise(function(_0x1cc6dc,_0x44b9cf){try{if(_0x31eb17[_0x637eb6['id']]){_0x637eb6[_0xd410('0x2d')]=_[_0xd410('0x2e')](_0x31eb17[_0x637eb6['id']],function(_0x4295a6){return{'id':_0x4295a6['id'],'fullname':_0x4295a6[_0xd410('0x2f')]};});}}catch(_0x2fe833){_0x44b9cf(_0x2fe833);}_0x1cc6dc(_0x637eb6);});}function getInteractionTags(_0x672576,_0x22e4e0){return new BPromise(function(_0x274b29,_0x897ba2){try{if(_0x672576['TagIds']){_0x672576['Tags']=[];_0x672576[_0xd410('0x30')]['split'](',')[_0xd410('0x31')](function(_0x3b026b){_0x672576[_0xd410('0x32')]['push'](_0x22e4e0[_0x3b026b]);});}delete _0x672576[_0xd410('0x30')];}catch(_0x3c3359){_0x897ba2(_0x3c3359);}_0x274b29(_0x672576);});}function updateWhatsappInteraction(_0x342469,_0x391e2f,_0x18fa50){return new BPromise(function(_0x37706a,_0x3cdb55){return getInteractionUsers(_0x342469,_0x18fa50)['then'](function(_0xe89837){return getInteractionTags(_0xe89837,_0x391e2f);})[_0xd410('0x27')](function(_0x56ba40){_0x37706a(_0x56ba40);})['catch'](function(_0x4c46d9){_0x3cdb55(_0x4c46d9);});});}exports[_0xd410('0x33')]=function(_0x5a5dae,_0x90aea0){var _0x16e487={},_0x5a3863={},_0x56bec1={'count':0x0,'rows':[]};var _0x2e8e62=_[_0xd410('0x2e')](db['WhatsappInteraction'][_0xd410('0x34')],function(_0x43eaa1){return{'name':_0x43eaa1[_0xd410('0x35')],'type':_0x43eaa1[_0xd410('0x36')][_0xd410('0x37')]};});_0x5a3863[_0xd410('0x38')]=_['map'](_0x2e8e62,_0xd410('0x2b'));_0x5a3863[_0xd410('0x39')]=_[_0xd410('0x3a')](_0x5a5dae[_0xd410('0x39')]);_0x5a3863[_0xd410('0x3b')]=_[_0xd410('0x3c')](_0x5a3863['model'],_0x5a3863[_0xd410('0x39')]);_0x16e487[_0xd410('0x3d')]=_[_0xd410('0x3c')](_0x5a3863[_0xd410('0x38')],qs[_0xd410('0x3e')](_0x5a5dae[_0xd410('0x39')][_0xd410('0x3e')]));_0x16e487[_0xd410('0x3d')]=_0x16e487[_0xd410('0x3d')][_0xd410('0x3f')]?_0x16e487[_0xd410('0x3d')]:_0x5a3863[_0xd410('0x38')];if(!_0x5a5dae[_0xd410('0x39')][_0xd410('0x40')](_0xd410('0x41'))){_0x16e487[_0xd410('0x1d')]=qs[_0xd410('0x1d')](_0x5a5dae[_0xd410('0x39')][_0xd410('0x1d')]);_0x16e487['offset']=qs[_0xd410('0x20')](_0x5a5dae[_0xd410('0x39')][_0xd410('0x20')]);}_0x16e487[_0xd410('0x42')]=qs[_0xd410('0x43')](_0x5a5dae[_0xd410('0x39')]['sort']);_0x16e487[_0xd410('0x44')]=qs[_0xd410('0x3b')](_[_0xd410('0x45')](_0x5a5dae[_0xd410('0x39')],_0x5a3863[_0xd410('0x3b')]),_0x2e8e62);var _0xa175c=[];var _0x3716d7=squel[_0xd410('0x46')]()[_0xd410('0x47')]('id')[_0xd410('0x47')](_0xd410('0x2b'))['field'](_0xd410('0x48'))[_0xd410('0x49')](_0xd410('0x4a'));var _0x518755=squel['select']()[_0xd410('0x47')]('u.id')['field'](_0xd410('0x4b'))[_0xd410('0x47')](_0xd410('0x4c'))[_0xd410('0x49')](_0xd410('0x4d'),'ui')['left_join'](_0xd410('0x4e'),'u',_0xd410('0x4f'));var _0x231e33=squel[_0xd410('0x46')]()[_0xd410('0x49')]('whatsapp_interactions','i')[_0xd410('0x50')](_0xd410('0x51'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0xd410('0x50')](_0xd410('0x4e'),'o',_0xd410('0x52'))[_0xd410('0x50')]('whatsapp_accounts','a',_0xd410('0x53'))[_0xd410('0x50')]('whatsapp_messages','me','me.WhatsappInteractionId\x20=\x20i.id')[_0xd410('0x50')](_0xd410('0x54'),'it',_0xd410('0x55'))[_0xd410('0x50')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x4438a8=squel[_0xd410('0x56')]();var _0x3c5689=[];var _0x1b916b=squel[_0xd410('0x56')]();var _0x23c92c;if(_0x5a5dae[_0xd410('0x39')][_0xd410('0x57')]){_0x23c92c=as[_0xd410('0x58')](_0x5a5dae[_0xd410('0x39')][_0xd410('0x57')]);var _0x67ff86=_0x23c92c[_0xd410('0x59')];for(var _0x4d3e36=0x0;_0x4d3e36<_0x23c92c[_0xd410('0x5a')][_0xd410('0x3f')];_0x4d3e36++){var _0x10acb1=_0x23c92c[_0xd410('0x5a')][_0x4d3e36];var _0xb89e6f='i';var _0x1352c2=_['find'](_0x2e8e62,[_0xd410('0x2b'),_0x10acb1[_0xd410('0x47')]]);if(!_0x1352c2){switch(_0x10acb1[_0xd410('0x47')]){case _0xd410('0x5b'):if(_0x10acb1[_0xd410('0x5c')]==0x1){_0x231e33[_0xd410('0x5d')]('`'+_0x10acb1[_0xd410('0x47')]+'`\x20=\x200');}else{_0x231e33[_0xd410('0x5d')]('`'+_0x10acb1[_0xd410('0x47')]+_0xd410('0x5e'));}break;case _0xd410('0x5f'):if(_0x10acb1[_0xd410('0x60')]===_0xd410('0x61')){if(_0x10acb1['value'][_0xd410('0x62')]('\x20')[_0xd410('0x3f')]>0x1){_0x4438a8[_0x67ff86](_0xd410('0x63'),qs[_0xd410('0x64')](_0x10acb1[_0xd410('0x5c')]),null);}else{var _0x529aff='%'+_0x10acb1[_0xd410('0x5c')]+'%';_0x4438a8[_0x67ff86](_0xd410('0x65'),_0x529aff,_0x529aff,_0x529aff);}}else{_0x1352c2=_[_0xd410('0x66')](_0x2e8e62,[_0xd410('0x2b'),_0xd410('0x67')]);_0x10acb1[_0xd410('0x47')]='ContactId';_0x230ea2=as[_0xd410('0x68')](_0xb89e6f,_0x1352c2['type'],_0x10acb1);_0x4438a8[_0x67ff86](_0x230ea2[_0xd410('0x69')],_0x230ea2[_0xd410('0x5c')][_0xd410('0x6a')],_0x230ea2[_0xd410('0x5c')]['end']);}break;case _0xd410('0x6b'):var _0x59112a=_0x10acb1[_0xd410('0x5c')][_0xd410('0x62')](',')[_0xd410('0x2e')](function(_0x221682){return Number(_0x221682);});_0x59112a['forEach'](function(_0x9302e5){_0x1b916b['or'](_0xd410('0x6c'),'%,'+_0x9302e5+',%');});_0x3c5689=_['union'](_0x3c5689,_0x59112a);break;case'User':if(_0x10acb1[_0xd410('0x60')]==='$substring'){_0x4438a8[_0x67ff86](_0xd410('0x6d'),'%'+_0x10acb1[_0xd410('0x5c')]+'%',null);}else{_0x1352c2=_['find'](_0x2e8e62,['name',_0xd410('0x6e')]);_0x10acb1['field']=_0xd410('0x6e');_0x230ea2=as[_0xd410('0x68')](_0xb89e6f,_0x1352c2[_0xd410('0x36')],_0x10acb1);_0x4438a8[_0x67ff86](_0x230ea2[_0xd410('0x69')],_0x230ea2['value'][_0xd410('0x6a')],_0x230ea2[_0xd410('0x5c')]['end']);}break;case _0xd410('0x6f'):_0x230ea2=as[_0xd410('0x68')]('me',null,_0x10acb1);_0x4438a8[_0x67ff86](_0x230ea2[_0xd410('0x69')],_0x230ea2[_0xd410('0x5c')][_0xd410('0x6a')],_0x230ea2[_0xd410('0x5c')]['end']);break;}}else{var _0x230ea2=as['buildExpression'](_0xb89e6f,_0x1352c2[_0xd410('0x36')],_0x10acb1);_0x4438a8[_0x67ff86](_0x230ea2[_0xd410('0x69')],_0x230ea2['value'][_0xd410('0x6a')],_0x230ea2['value']['end']);}}}else{var _0x4bcc93=_(_0x5a5dae['query'])[_0xd410('0x3a')]()[_0xd410('0x2e')](function(_0x17f8b5){return _[_0xd410('0x70')](_0x2e8e62,[_0xd410('0x2b'),_0x17f8b5])?_0x17f8b5:undefined;})['compact']()[_0xd410('0x5c')]();if(!_[_0xd410('0x71')](_0x4bcc93)){_0x4bcc93[_0xd410('0x31')](function(_0x2a4ec2){if(_0x2a4ec2===_0xd410('0x72')){_0x231e33[_0xd410('0x44')](_0xd410('0x73'),[][_0xd410('0x74')](_0x5a5dae[_0xd410('0x39')][_0x2a4ec2]));}else if(_0x2a4ec2===_0xd410('0x75')){var _0x1daac7=JSON[_0xd410('0x76')](_0x5a5dae[_0xd410('0x39')][_0x2a4ec2])[_0xd410('0x77')];var _0x5cec58=JSON[_0xd410('0x76')](_0x5a5dae[_0xd410('0x39')][_0x2a4ec2])[_0xd410('0x78')];_0x231e33[_0xd410('0x44')](_0xd410('0x79'),_0x1daac7,_0x5cec58);}else{if(_0x5a5dae[_0xd410('0x39')][_0x2a4ec2]==='null'){_0x231e33[_0xd410('0x44')]('i.'+_0x2a4ec2+_0xd410('0x7a'));}else{_0x231e33[_0xd410('0x44')]('i.'+_0x2a4ec2+_0xd410('0x7b'),_0x5a5dae[_0xd410('0x39')][_0x2a4ec2]);}}});}if(_0x5a5dae[_0xd410('0x39')][_0xd410('0x7c')]){if(_0x5a5dae[_0xd410('0x39')]['read']==0x1){_0x231e33[_0xd410('0x5d')](_0xd410('0x7d'));}else{_0x231e33[_0xd410('0x5d')](_0xd410('0x7e'));}}if(_0x5a5dae[_0xd410('0x39')][_0xd410('0x7f')]){_0x3c5689=_[_0xd410('0x80')](_0x5a5dae[_0xd410('0x39')][_0xd410('0x7f')])?_0x5a5dae[_0xd410('0x39')][_0xd410('0x7f')]:new Array(_0x5a5dae['query']['tag']);_0x3c5689['forEach'](function(_0x8b0e98){_0x1b916b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x8b0e98+',%');});}if(_0x5a5dae[_0xd410('0x39')][_0xd410('0x81')]){var _0x5bbc09=_0x5a5dae[_0xd410('0x39')][_0xd410('0x81')]['replace']('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xd410('0x82')](_0x5bbc09)){_0x4438a8['or'](_0xd410('0x83'),_0x5bbc09+'%')['or'](_0xd410('0x84'),_0x5bbc09+'%');}else{_0x4438a8['or'](_0xd410('0x85'),qs[_0xd410('0x64')](_0x5bbc09))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5bbc09+'%');}}}_0x231e33['where'](_0x4438a8);_0x231e33['group'](_0xd410('0x86'));var _0x415dbf={'type':db[_0xd410('0x87')][_0xd410('0x88')][_0xd410('0x89')],'raw':!![]};var _0xa64267=_0x231e33['clone']();_0xa64267[_0xd410('0x47')](_0xd410('0x86'));_0xa64267[_0xd410('0x47')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xd410('0x5b'));if(_0x16e487[_0xd410('0x42')]){_0x16e487[_0xd410('0x42')][_0xd410('0x31')](function(_0x33066d){var _0x576b9e=_0x33066d[0x0]==='contactName'?_0x33066d[0x0]:'i.'+_0x33066d[0x0];_0x231e33[_0xd410('0x42')](_0x576b9e,_0x33066d[0x1]===_0xd410('0x8a')?![]:!![]);});}if(!_[_0xd410('0x71')](_0x3c5689)){_0x231e33[_0xd410('0x5d')](_0x1b916b);_0xa64267[_0xd410('0x44')](_0xd410('0x8b'),_0x3c5689);}BPromise[_0xd410('0x8c')]()[_0xd410('0x27')](function(){if(!_0x23c92c){if(_0x5a5dae['query'][_0xd410('0x72')])return;_0xa64267[_0xd410('0x44')](_0xd410('0x8d'));_0x231e33[_0xd410('0x44')]('i.WhatsappAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5a5dae[_0xd410('0x8e')][_0xd410('0x8f')]!==_0xd410('0x90'))return;return _0x5a5dae[_0xd410('0x8e')]['getWhatsappAccounts']({'attributes':['id'],'raw':!![]})['then'](function(_0x4fa11a){if(_[_0xd410('0x71')](_0x4fa11a)){_0xa64267[_0xd410('0x44')](_0xd410('0x91'));_0x231e33[_0xd410('0x44')](_0xd410('0x91'));}else{_0xa64267[_0xd410('0x44')](_0xd410('0x73'),_['map'](_0x4fa11a,'id'));_0x231e33['where'](_0xd410('0x73'),_[_0xd410('0x2e')](_0x4fa11a,'id'));}});})[_0xd410('0x27')](function(){if(_0x5a5dae[_0xd410('0x8e')][_0xd410('0x8f')]===_0xd410('0x90')&&!_0x23c92c&&!_0x5a5dae['query']['WhatsappAccountId'])return[];return db[_0xd410('0x92')][_0xd410('0x39')](_0xa64267[_0xd410('0x93')](),_0x415dbf);})[_0xd410('0x27')](function(_0x17faeb){_0x56bec1[_0xd410('0x1f')]=_0x17faeb[_0xd410('0x3f')];if(_0x56bec1[_0xd410('0x1f')]===0x0)return[];return db['sequelize'][_0xd410('0x39')](_0x3716d7[_0xd410('0x93')](),_0x415dbf)[_0xd410('0x27')](function(_0x152ec3){_0xa175c=_[_0xd410('0x94')](_0x152ec3,'id');_0x415dbf=_[_0xd410('0x95')](_0x415dbf,{'model':db['WhatsappInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5a5dae[_0xd410('0x39')][_0xd410('0x3e')]){_0x16e487['attributes'][_0xd410('0x31')](function(_0x5b25ad){_0x231e33[_0xd410('0x47')]('i.'+_0x5b25ad);});}else{_0x231e33['field']('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xd410('0x5b'));_0x231e33[_0xd410('0x47')](_0xd410('0x96'),_0xd410('0x97'));_0x231e33[_0xd410('0x47')](_0xd410('0x98'),_0xd410('0x99'));_0x231e33[_0xd410('0x47')]('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');_0x231e33[_0xd410('0x47')]('i.*');_0x231e33[_0xd410('0x47')](_0xd410('0x9a'),_0xd410('0x9b'));_0x231e33['field']('c.lastName',_0xd410('0x9c'));_0x231e33[_0xd410('0x47')](_0xd410('0x9d'),_0xd410('0x9e'));_0x231e33[_0xd410('0x47')](_0xd410('0x9f'),_0xd410('0xa0'));_0x231e33[_0xd410('0x47')](_0xd410('0xa1'),'Contact.mobile');_0x231e33[_0xd410('0x47')]('c.fax',_0xd410('0xa2'));_0x231e33[_0xd410('0x47')](_0xd410('0xa3'),_0xd410('0xa4'));_0x231e33['field'](_0xd410('0xa5'),_0xd410('0xa6'));_0x231e33['field'](_0xd410('0xa7'),'TagIds');}if(_0x16e487[_0xd410('0x1d')])_0x231e33[_0xd410('0x1d')](_0x16e487[_0xd410('0x1d')]);if(_0x16e487[_0xd410('0x20')])_0x231e33['offset'](_0x16e487[_0xd410('0x20')]);return db[_0xd410('0x92')][_0xd410('0x39')](_0x231e33[_0xd410('0x93')](),_0x415dbf);})[_0xd410('0x27')](function(_0x308363){if(_0x308363['length']>0x0)_0x518755[_0xd410('0x44')](_0xd410('0xa8'),_[_0xd410('0x2e')](_0x308363,'id'));return db[_0xd410('0x92')]['query'](_0x518755[_0xd410('0x93')](),_0x415dbf)['then'](function(_0x46ad1f){var _0xad2153=_[_0xd410('0xa9')](_0x46ad1f,_0xd410('0xaa'));var _0x261039=[];_0x308363[_0xd410('0x31')](function(_0x1c2b58){_0x261039[_0xd410('0xab')](updateWhatsappInteraction(_0x1c2b58,_0xa175c,_0xad2153));});return BPromise[_0xd410('0xac')](_0x261039);});});})[_0xd410('0x27')](function(_0x71e91b){_0x56bec1[_0xd410('0xad')]=_0x71e91b;return _0x56bec1;})[_0xd410('0x27')](respondWithFilteredResult(_0x90aea0,_0x16e487))['catch'](handleError(_0x90aea0,null));};exports[_0xd410('0xae')]=function(_0x24bce2,_0x4614d3){var _0xb11c43={'raw':![],'where':{'id':_0x24bce2['params']['id']}},_0x9fdca6={};_0x9fdca6[_0xd410('0x38')]=_['keys'](db[_0xd410('0xaf')][_0xd410('0x34')]);_0x9fdca6[_0xd410('0x39')]=_[_0xd410('0x3a')](_0x24bce2['query']);_0x9fdca6[_0xd410('0x3b')]=_[_0xd410('0x3c')](_0x9fdca6['model'],_0x9fdca6[_0xd410('0x39')]);_0xb11c43[_0xd410('0x3d')]=_[_0xd410('0x3c')](_0x9fdca6['model'],qs[_0xd410('0x3e')](_0x24bce2[_0xd410('0x39')][_0xd410('0x3e')]));_0xb11c43[_0xd410('0x3d')]=_0xb11c43[_0xd410('0x3d')][_0xd410('0x3f')]?_0xb11c43[_0xd410('0x3d')]:_0x9fdca6['model'];if(_0x24bce2[_0xd410('0x39')][_0xd410('0xb0')]){_0xb11c43[_0xd410('0xb1')]=[{'all':!![]}];}_0xb11c43=_[_0xd410('0x95')]({},_0xb11c43,_0x24bce2['options']);return db[_0xd410('0xaf')][_0xd410('0x66')](_0xb11c43)['then'](handleEntityNotFound(_0x4614d3,null))[_0xd410('0x27')](respondWithResult(_0x4614d3,null))[_0xd410('0xb2')](handleError(_0x4614d3,null));};exports[_0xd410('0xb3')]=function(_0x2d6338,_0x4efe8e){return db[_0xd410('0xaf')]['create'](_0x2d6338[_0xd410('0x6f')],{})['then'](respondWithResult(_0x4efe8e,0xc9))[_0xd410('0xb2')](handleError(_0x4efe8e,null));};exports[_0xd410('0x26')]=function(_0x177151,_0x5a7f94){if(_0x177151[_0xd410('0x6f')]['id']){delete _0x177151[_0xd410('0x6f')]['id'];}return db['WhatsappInteraction'][_0xd410('0x66')]({'where':{'id':_0x177151[_0xd410('0xb4')]['id']}})['then'](handleEntityNotFound(_0x5a7f94,null))[_0xd410('0x27')](saveUpdates(_0x177151['body'],null))[_0xd410('0x27')](respondWithResult(_0x5a7f94,null))[_0xd410('0xb2')](handleError(_0x5a7f94,null));};exports[_0xd410('0x28')]=function(_0x4de2fc,_0x449289){return db[_0xd410('0xaf')][_0xd410('0x66')]({'where':{'id':_0x4de2fc['params']['id']}})[_0xd410('0x27')](handleEntityNotFound(_0x449289,null))['then'](removeEntity(_0x449289,null))['catch'](handleError(_0x449289,null));};exports[_0xd410('0xb5')]=function(_0x1cccd1,_0x4ed8bb){return db['WhatsappInteraction'][_0xd410('0xb5')]()[_0xd410('0x27')](respondWithResult(_0x4ed8bb,null))['catch'](handleError(_0x4ed8bb,null));};exports[_0xd410('0xb6')]=function(_0x2c97a1,_0x16778d,_0x2a42b7){return db['WhatsappMessage']['find']({'where':{'id':_0x2c97a1[_0xd410('0xb4')]['id']}})['then'](handleEntityNotFound(_0x16778d,null))[_0xd410('0x27')](function(_0xa58633){if(_0xa58633){return _0xa58633['addMessage'](_0x2c97a1[_0xd410('0x6f')][_0xd410('0xb7')],_[_0xd410('0xb8')](_0x2c97a1[_0xd410('0x6f')],[_0xd410('0xb7'),'id'])||{});}})['then'](respondWithResult(_0x16778d,null))[_0xd410('0xb2')](handleError(_0x16778d,null));};exports['getMessages']=function(_0x32ded6,_0x4c703d,_0x222ef0){var _0x49dbc5={'raw':![],'where':{}};var _0x3db849={};var _0x27ebb5={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xd410('0xb9')]({'where':{'id':_0x32ded6[_0xd410('0xb4')]['id']}})['then'](handleEntityNotFound(_0x4c703d,null))['then'](function(_0xacb72b){if(_0xacb72b){_0x3db849[_0xd410('0x38')]=_[_0xd410('0x3a')](db[_0xd410('0xba')][_0xd410('0x34')]);_0x3db849[_0xd410('0x39')]=_[_0xd410('0x3a')](_0x32ded6[_0xd410('0x39')]);_0x3db849[_0xd410('0x3b')]=_['intersection'](_0x3db849['model'],_0x3db849['query']);_0x49dbc5[_0xd410('0x3d')]=_['intersection'](_0x3db849[_0xd410('0x38')],qs[_0xd410('0x3e')](_0x32ded6[_0xd410('0x39')]['fields']));_0x49dbc5['attributes']=_0x49dbc5[_0xd410('0x3d')][_0xd410('0x3f')]?_0x49dbc5[_0xd410('0x3d')]:_0x3db849['model'];if(!_0x32ded6[_0xd410('0x39')][_0xd410('0x40')]('nolimit')){_0x49dbc5['limit']=qs['limit'](_0x32ded6[_0xd410('0x39')][_0xd410('0x1d')]);_0x49dbc5['offset']=qs[_0xd410('0x20')](_0x32ded6['query'][_0xd410('0x20')]);}_0x49dbc5['order']=qs[_0xd410('0x43')](_0x32ded6['query'][_0xd410('0x43')]);_0x49dbc5['where']=qs[_0xd410('0x3b')](_[_0xd410('0x45')](_0x32ded6['query'],_0x3db849[_0xd410('0x3b')]));_0x49dbc5[_0xd410('0x44')][_0xd410('0xaa')]=_0xacb72b['id'];if(_0x32ded6[_0xd410('0x39')]['filter']){_0x49dbc5[_0xd410('0x44')]=_[_0xd410('0x95')](_0x49dbc5['where'],{'$or':_[_0xd410('0x2e')](_0x49dbc5['attributes'],function(_0x545b25){var _0x59a347={};_0x59a347[_0x545b25]={'$like':'%'+_0x32ded6[_0xd410('0x39')][_0xd410('0x81')]+'%'};return _0x59a347;})});}if(_0x32ded6['query']['$gte']){var _0x373fcb=_0x32ded6['query']['$gte']['split'](',');var _0x1b3160={};_0x1b3160[_0x373fcb[0x0]]={'$gte':moment(_0x373fcb[0x1])[_0xd410('0xbb')](_0xd410('0xbc'))};_0x49dbc5[_0xd410('0x44')]=_[_0xd410('0x95')](_0x49dbc5[_0xd410('0x44')],_0x1b3160);}_0x49dbc5=_[_0xd410('0x95')]({},_0x49dbc5,_0x32ded6['options']);return db[_0xd410('0xba')]['count']({'where':_0x49dbc5['where']})[_0xd410('0x27')](function(_0x5d3b1e){_0x27ebb5[_0xd410('0x1f')]=_0x5d3b1e;if(_0x32ded6['query'][_0xd410('0xb0')]){_0x49dbc5['include']=[{'all':!![]}];}return db[_0xd410('0xba')][_0xd410('0xbd')](_0x49dbc5);})[_0xd410('0x27')](function(_0xad95c6){_0x27ebb5['rows']=_0xad95c6;return _0x27ebb5;});}})['then'](respondWithFilteredResult(_0x4c703d,_0x49dbc5))[_0xd410('0xb2')](handleError(_0x4c703d,null));};exports[_0xd410('0xbe')]=function(_0x2f79ff,_0x3962b3,_0x195802){return db[_0xd410('0xaf')][_0xd410('0x66')]({'where':{'id':_0x2f79ff[_0xd410('0xb4')]['id']}})[_0xd410('0x27')](handleEntityNotFound(_0x3962b3,null))[_0xd410('0x27')](function(_0x22d57b){if(_0x22d57b){return _0x22d57b[_0xd410('0xbf')](_0x2f79ff[_0xd410('0x6f')][_0xd410('0xb7')],_[_0xd410('0xb8')](_0x2f79ff[_0xd410('0x6f')],[_0xd410('0xb7'),'id'])||{})['spread'](function(){return db['Tag'][_0xd410('0xbd')]({'attributes':['id',_0xd410('0x2b'),_0xd410('0x48')],'where':{'id':_0x2f79ff[_0xd410('0x6f')][_0xd410('0xb7')]}});})['then'](function(_0x27ce83){socket[_0xd410('0xc0')](_0xd410('0xc1'),{'id':Number(_0x2f79ff['params']['id']),'tags':_0x27ce83||[]});return{'id':Number(_0x2f79ff[_0xd410('0xb4')]['id']),'tags':_0x27ce83||[]};});}})[_0xd410('0x27')](respondWithResult(_0x3962b3,null))['catch'](handleError(_0x3962b3,null));};exports['removeTags']=function(_0x5a6d25,_0x3ad407,_0x22fbe0){return db[_0xd410('0xaf')][_0xd410('0x66')]({'where':{'id':_0x5a6d25[_0xd410('0xb4')]['id']}})[_0xd410('0x27')](handleEntityNotFound(_0x3ad407,null))['then'](function(_0x19f690){if(_0x19f690){return _0x19f690[_0xd410('0xc2')](_0x5a6d25['query']['ids']);}})[_0xd410('0x27')](respondWithStatusCode(_0x3ad407,null))[_0xd410('0xb2')](handleError(_0x3ad407,null));};exports[_0xd410('0xc3')]=function(_0x809b1e,_0x54a652){var _0x5fa424=moment()['unix']()[_0xd410('0x93')]();var _0x296c12=path['join'](config['root'],'server',_0xd410('0xc4'),_0xd410('0xc5'));var _0x4a489a=path[_0xd410('0xc6')](config['root'],_0xd410('0xc7'),'files',_0xd410('0xc8'));var _0x5e2bff=path[_0xd410('0xc6')](_0x296c12,_0x5fa424);var _0x12da3d=util[_0xd410('0xbb')](_0xd410('0xc9'),_0x809b1e[_0xd410('0xb4')]['id'],_0x5fa424);var _0x46e985=path['join'](_0x296c12,_0x12da3d);var _0x2c0d66=[];_0x2c0d66[_0xd410('0xab')]({'model':db['User'],'as':_0xd410('0xca'),'attributes':['id',_0xd410('0x2f')],'raw':!![]});_0x2c0d66[_0xd410('0xab')]({'model':db[_0xd410('0xcb')],'as':'Contact','attributes':['id',_0xd410('0xcc'),_0xd410('0xcd')],'raw':!![]});if(_0x809b1e['query'][_0xd410('0xc8')]){_0x2c0d66[_0xd410('0xab')]({'model':db[_0xd410('0xce')],'as':_0xd410('0xce'),'raw':!![]});}var _0x1427d0=[{'model':db[_0xd410('0xba')],'as':_0xd410('0xcf'),'attributes':['id',_0xd410('0x6f'),_0xd410('0x75'),_0xd410('0xd0'),_0xd410('0xd1'),_0xd410('0x7c')],'include':_0x2c0d66}];_0x1427d0[_0xd410('0xab')]({'model':db[_0xd410('0xd2')],'as':_0xd410('0xd3'),'attributes':['id',_0xd410('0x2b')]});_0x1427d0[_0xd410('0xab')]({'model':db[_0xd410('0xca')],'as':_0xd410('0xd4'),'attributes':['id',_0xd410('0x2f')]});return db['WhatsappInteraction'][_0xd410('0x66')]({'where':{'id':_0x809b1e['params']['id']},'include':_0x1427d0})[_0xd410('0x27')](handleEntityNotFound(_0x54a652,null))[_0xd410('0x27')](function(_0x455b79){if(_0x455b79){var _0x11dbc9=_0x455b79[_0xd410('0xd5')]({'plain':!![]});fs[_0xd410('0xd6')](_0x5e2bff);var _0x4c902={'channel':_0xd410('0xd7'),'account':_0x11dbc9[_0xd410('0xd3')][_0xd410('0x2b')],'agent':_0x11dbc9[_0xd410('0xd4')]?_0x11dbc9[_0xd410('0xd4')][_0xd410('0x2f')]:_0xd410('0xd8'),'createdAt':moment(_0x11dbc9['createdAt'])['format'](_0xd410('0xbc'))[_0xd410('0x93')](),'closedAt':_0x11dbc9['closed']?moment(_0x11dbc9['closedAt'])[_0xd410('0xbb')](_0xd410('0xbc'))['toString']():'','disposition':_0x11dbc9['disposition'],'messages':_(_0x11dbc9['Messages'])[_0xd410('0x81')]({'secret':![]})[_0xd410('0x2e')](function(_0x105dde){if(_0x105dde[_0xd410('0xce')]){var _0x317a88=path['join'](_0x4a489a,_0x105dde['Attachment'][_0xd410('0xd9')]);if(fs[_0xd410('0xda')](_0x317a88)){fs[_0xd410('0xdb')](_0x317a88)[_0xd410('0xdc')](fs['createWriteStream'](path[_0xd410('0xc6')](_0x5e2bff,_0x105dde['Attachment']['basename'])));}}return{'date':moment(_0x105dde[_0xd410('0x75')])[_0xd410('0xbb')](_0xd410('0xbc'))['toString'](),'sender':_0x105dde[_0xd410('0xd0')]===_0xd410('0xdd')?_0x105dde['User']?_0x105dde['User'][_0xd410('0x2f')]:_0xd410('0xde'):_0x105dde['Contact'][_0xd410('0xcc')]+(_0x105dde[_0xd410('0x5f')][_0xd410('0xcd')]?'\x20'+_0x105dde['Contact']['lastName']:''),'body':_0x105dde[_0xd410('0xce')]?_0x105dde[_0xd410('0xce')][_0xd410('0xd9')]:_0x105dde[_0xd410('0x6f')],'direction':_0x105dde['direction']===_0xd410('0xdd')?'A':'C','secret':_0x105dde['secret'],'read':_0x105dde[_0xd410('0x7c')],'attachment':_0x105dde['Attachment']};})[_0xd410('0x5c')]()};return ejs[_0xd410('0xdf')](path[_0xd410('0xc6')](config[_0xd410('0xe0')],_0xd410('0xc7'),_0xd410('0xe1'),'downloadInteraction.ejs'),{'interaction':_0x4c902})['then'](function(_0x136959){var _0x5046ea=path['join'](_0x5e2bff,_0xd410('0xe2')+_0x11dbc9['id']+'-'+_0x5fa424+_0xd410('0xe3'));var _0x4ea1c6={'path':_0x5046ea,'channel':_0xd410('0xd7'),'interactionId':_0x11dbc9['id']};return pdf[_0xd410('0xe4')](_0x136959,_0x4ea1c6);})[_0xd410('0x27')](function(){return new BPromise(function(_0x289e8e,_0x345c2b){zipdir(_0x5e2bff,{'saveTo':_0x46e985},function(_0x37f130,_0x2a7b3b){if(_0x37f130)return _0x345c2b(_0x37f130);return _0x289e8e(_0x2a7b3b);});})[_0xd410('0x27')](function(){return new BPromise(function(_0x2699dc,_0x2537ea){rimraf(_0x5e2bff,function(_0x4c907e){if(_0x4c907e)_0x2537ea(_0x4c907e);return _0x2699dc();});});})[_0xd410('0x27')](function(){return _0x54a652[_0xd410('0xc3')](_0x46e985,_0x12da3d,function(_0x15b406){if(_0x15b406){console[_0xd410('0xe5')](_0xd410('0xe6'),_0x15b406);}else{fs['unlinkSync'](_0x46e985);}});});});}else{return _0x54a652['sendStatus'](0xc8);}})['catch'](handleError(_0x54a652,null));};
\ No newline at end of file
+var _0xc1c4=['defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','error','stack','name','Users','fullname','TagIds','split','forEach','Tags','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','u.id','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','cm_contacts','o.id\x20=\x20i.UserId','a.id\x20=\x20i.WhatsappAccountId','whatsapp_messages','me.WhatsappInteractionId\x20=\x20i.id','whatsapp_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','conditions','unreadMessages','value','having','operator','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','find','UserId','buildExpression','body','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','WhatsappAccountId','toString','sequelize','merge','a.key','a.mandatoryDisposition','Account.mandatoryDisposition','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','WhatsappInteractionId','push','all','rows','catch','show','options','create','params','destroy','describe','WhatsappMessage','addMessage','ids','omit','getMessages','findOne','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','addTags','setTags','spread','findAll','whatsappInteractionTags:save','removeTags','unix','join','root','server','files','attachments','transcript-%d-%s.zip','CmContact','firstName','Attachment','Messages','direction','secret','WhatsappAccount','Owner','Whatsapp','N.A.','closed','closedAt','disposition','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','Contact','lastName','views','transcript-','createPdfFromHTML','download','log','err','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis'];(function(_0x1af649,_0x30562f){var _0x57798c=function(_0xd96c3){while(--_0xd96c3){_0x1af649['push'](_0x1af649['shift']());}};_0x57798c(++_0x30562f);}(_0xc1c4,0x1c7));var _0x4c1c=function(_0x351518,_0x3ee104){_0x351518=_0x351518-0x0;var _0x2edd33=_0xc1c4[_0x351518];return _0x2edd33;};'use strict';var emlformat=require(_0x4c1c('0x0'));var rimraf=require(_0x4c1c('0x1'));var zipdir=require(_0x4c1c('0x2'));var jsonpatch=require(_0x4c1c('0x3'));var rp=require(_0x4c1c('0x4'));var moment=require(_0x4c1c('0x5'));var BPromise=require(_0x4c1c('0x6'));var Mustache=require('mustache');var util=require(_0x4c1c('0x7'));var path=require(_0x4c1c('0x8'));var sox=require(_0x4c1c('0x9'));var csv=require(_0x4c1c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4c1c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4c1c('0xc'));var jsforce=require(_0x4c1c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4c1c('0xa'));var querystring=require(_0x4c1c('0xe'));var Papa=require(_0x4c1c('0xf'));var Redis=require(_0x4c1c('0x10'));var authService=require(_0x4c1c('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x4c1c('0x12'));var hardwareService=require(_0x4c1c('0x13'));var logger=require(_0x4c1c('0x14'))(_0x4c1c('0x15'));var utils=require(_0x4c1c('0x16'));var config=require(_0x4c1c('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x4c1c('0x18')]=_[_0x4c1c('0x19')](config[_0x4c1c('0x18')],{'host':_0x4c1c('0x1a'),'port':0x18eb});var socket=require(_0x4c1c('0x1b'))(new Redis(config['redis']));require(_0x4c1c('0x1c'))[_0x4c1c('0x1d')](socket);function respondWithStatusCode(_0x4deafc,_0x146b14){_0x146b14=_0x146b14||0xcc;return function(_0x1ff604){if(_0x1ff604){return _0x4deafc[_0x4c1c('0x1e')](_0x146b14);}return _0x4deafc[_0x4c1c('0x1f')](_0x146b14)[_0x4c1c('0x20')]();};}function respondWithResult(_0x25eec0,_0x457463){_0x457463=_0x457463||0xc8;return function(_0x33641d){if(_0x33641d){return _0x25eec0[_0x4c1c('0x1f')](_0x457463)[_0x4c1c('0x21')](_0x33641d);}};}function respondWithFilteredResult(_0x26b407,_0x5a9217){return function(_0x1fad89){if(_0x1fad89){var _0x213019=typeof _0x5a9217[_0x4c1c('0x22')]===_0x4c1c('0x23')&&typeof _0x5a9217[_0x4c1c('0x24')]===_0x4c1c('0x23');var _0x22b52a=_0x1fad89[_0x4c1c('0x25')];var _0x31d795=_0x213019?0x0:_0x5a9217[_0x4c1c('0x22')];var _0x58aca9=_0x213019?_0x1fad89['count']:_0x5a9217[_0x4c1c('0x22')]+_0x5a9217['limit'];var _0x469def;if(_0x58aca9>=_0x22b52a){_0x58aca9=_0x22b52a;_0x469def=0xc8;}else{_0x469def=0xce;}_0x26b407[_0x4c1c('0x1f')](_0x469def);return _0x26b407['set'](_0x4c1c('0x26'),_0x31d795+'-'+_0x58aca9+'/'+_0x22b52a)['json'](_0x1fad89);}return null;};}function patchUpdates(_0x51cac7){return function(_0x366bb3){try{jsonpatch[_0x4c1c('0x27')](_0x366bb3,_0x51cac7,!![]);}catch(_0x33b41b){return BPromise[_0x4c1c('0x28')](_0x33b41b);}return _0x366bb3[_0x4c1c('0x29')]();};}function saveUpdates(_0x5cb64e,_0x1b533b){return function(_0x1e07d1){if(_0x1e07d1){return _0x1e07d1[_0x4c1c('0x2a')](_0x5cb64e)[_0x4c1c('0x2b')](function(_0x27f648){return _0x27f648;});}return null;};}function removeEntity(_0x4a1e7c,_0x577e68){return function(_0x31bfa5){if(_0x31bfa5){return _0x31bfa5['destroy']()[_0x4c1c('0x2b')](function(){_0x4a1e7c['status'](0xcc)[_0x4c1c('0x20')]();});}};}function handleEntityNotFound(_0x2d3f47,_0x38f7f7){return function(_0x4a4afe){if(!_0x4a4afe){_0x2d3f47[_0x4c1c('0x1e')](0x194);}return _0x4a4afe;};}function handleError(_0xadb987,_0x3d6786){_0x3d6786=_0x3d6786||0x1f4;return function(_0xb1e9b5){logger[_0x4c1c('0x2c')](_0xb1e9b5[_0x4c1c('0x2d')]);if(_0xb1e9b5[_0x4c1c('0x2e')]){delete _0xb1e9b5[_0x4c1c('0x2e')];}_0xadb987['status'](_0x3d6786)['send'](_0xb1e9b5);};}function getInteractionUsers(_0x47bb26,_0x492665){return new BPromise(function(_0x595f1b,_0x333d03){try{if(_0x492665[_0x47bb26['id']]){_0x47bb26[_0x4c1c('0x2f')]=_['map'](_0x492665[_0x47bb26['id']],function(_0x360999){return{'id':_0x360999['id'],'fullname':_0x360999[_0x4c1c('0x30')]};});}}catch(_0x5cbe86){_0x333d03(_0x5cbe86);}_0x595f1b(_0x47bb26);});}function getInteractionTags(_0x4ca120,_0xf8c501){return new BPromise(function(_0x32e1bf,_0x3e06c8){try{if(_0x4ca120['TagIds']){_0x4ca120['Tags']=[];_0x4ca120[_0x4c1c('0x31')][_0x4c1c('0x32')](',')[_0x4c1c('0x33')](function(_0x1e6429){_0x4ca120[_0x4c1c('0x34')]['push'](_0xf8c501[_0x1e6429]);});}delete _0x4ca120[_0x4c1c('0x31')];}catch(_0x29157e){_0x3e06c8(_0x29157e);}_0x32e1bf(_0x4ca120);});}function updateWhatsappInteraction(_0x48e148,_0xdeb825,_0xbb0637){return new BPromise(function(_0x511029,_0x477db8){return getInteractionUsers(_0x48e148,_0xbb0637)[_0x4c1c('0x2b')](function(_0x9d3ca2){return getInteractionTags(_0x9d3ca2,_0xdeb825);})[_0x4c1c('0x2b')](function(_0x57d882){_0x511029(_0x57d882);})['catch'](function(_0x4e0e11){_0x477db8(_0x4e0e11);});});}exports[_0x4c1c('0x35')]=function(_0x14ec9b,_0x222493){var _0x57248e={},_0xebeb95={},_0x4f5c70={'count':0x0,'rows':[]};var _0x37cf62=_[_0x4c1c('0x36')](db[_0x4c1c('0x37')][_0x4c1c('0x38')],function(_0x2191d5){return{'name':_0x2191d5[_0x4c1c('0x39')],'type':_0x2191d5[_0x4c1c('0x3a')][_0x4c1c('0x3b')]};});_0xebeb95[_0x4c1c('0x3c')]=_[_0x4c1c('0x36')](_0x37cf62,_0x4c1c('0x2e'));_0xebeb95[_0x4c1c('0x3d')]=_[_0x4c1c('0x3e')](_0x14ec9b[_0x4c1c('0x3d')]);_0xebeb95[_0x4c1c('0x3f')]=_[_0x4c1c('0x40')](_0xebeb95['model'],_0xebeb95['query']);_0x57248e[_0x4c1c('0x41')]=_['intersection'](_0xebeb95[_0x4c1c('0x3c')],qs[_0x4c1c('0x42')](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x42')]));_0x57248e['attributes']=_0x57248e[_0x4c1c('0x41')][_0x4c1c('0x43')]?_0x57248e[_0x4c1c('0x41')]:_0xebeb95['model'];if(!_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x44')](_0x4c1c('0x45'))){_0x57248e[_0x4c1c('0x24')]=qs[_0x4c1c('0x24')](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x24')]);_0x57248e[_0x4c1c('0x22')]=qs['offset'](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x22')]);}_0x57248e[_0x4c1c('0x46')]=qs[_0x4c1c('0x47')](_0x14ec9b['query'][_0x4c1c('0x47')]);_0x57248e[_0x4c1c('0x48')]=qs[_0x4c1c('0x3f')](_[_0x4c1c('0x49')](_0x14ec9b['query'],_0xebeb95['filters']),_0x37cf62);var _0x21faf6=[];var _0x50b41c=squel[_0x4c1c('0x4a')]()[_0x4c1c('0x4b')]('id')[_0x4c1c('0x4b')]('name')[_0x4c1c('0x4b')](_0x4c1c('0x4c'))[_0x4c1c('0x4d')]('tools_tags');var _0x276b1c=squel[_0x4c1c('0x4a')]()[_0x4c1c('0x4b')](_0x4c1c('0x4e'))[_0x4c1c('0x4b')]('u.fullname')[_0x4c1c('0x4b')]('ui.WhatsappInteractionId')[_0x4c1c('0x4d')](_0x4c1c('0x4f'),'ui')[_0x4c1c('0x50')](_0x4c1c('0x51'),'u',_0x4c1c('0x52'));var _0x5b38f8=squel[_0x4c1c('0x4a')]()['from']('whatsapp_interactions','i')[_0x4c1c('0x50')](_0x4c1c('0x53'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x4c1c('0x50')](_0x4c1c('0x51'),'o',_0x4c1c('0x54'))[_0x4c1c('0x50')]('whatsapp_accounts','a',_0x4c1c('0x55'))['left_join'](_0x4c1c('0x56'),'me',_0x4c1c('0x57'))[_0x4c1c('0x50')](_0x4c1c('0x58'),'it','it.WhatsappInteractionId\x20=\x20i.id')[_0x4c1c('0x50')](_0x4c1c('0x59'),'t',_0x4c1c('0x5a'));var _0x198242=squel['expr']();var _0x509f9e=[];var _0x4aff2a=squel[_0x4c1c('0x5b')]();var _0x37e8d8;if(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x5c')]){_0x37e8d8=as[_0x4c1c('0x5d')](_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x5c')]);var _0x18b0cd=_0x37e8d8['sqlOperator'];for(var _0xb56164=0x0;_0xb56164<_0x37e8d8[_0x4c1c('0x5e')][_0x4c1c('0x43')];_0xb56164++){var _0xbe15e=_0x37e8d8[_0x4c1c('0x5e')][_0xb56164];var _0x49eb80='i';var _0x131ba4=_['find'](_0x37cf62,[_0x4c1c('0x2e'),_0xbe15e[_0x4c1c('0x4b')]]);if(!_0x131ba4){switch(_0xbe15e[_0x4c1c('0x4b')]){case _0x4c1c('0x5f'):if(_0xbe15e[_0x4c1c('0x60')]==0x1){_0x5b38f8[_0x4c1c('0x61')]('`'+_0xbe15e['field']+'`\x20=\x200');}else{_0x5b38f8[_0x4c1c('0x61')]('`'+_0xbe15e[_0x4c1c('0x4b')]+'`\x20>\x200');}break;case'Contact':if(_0xbe15e[_0x4c1c('0x62')]===_0x4c1c('0x63')){if(_0xbe15e[_0x4c1c('0x60')][_0x4c1c('0x32')]('\x20')[_0x4c1c('0x43')]>0x1){_0x198242[_0x18b0cd](_0x4c1c('0x64'),qs[_0x4c1c('0x65')](_0xbe15e[_0x4c1c('0x60')]),null);}else{var _0x4be874='%'+_0xbe15e[_0x4c1c('0x60')]+'%';_0x198242[_0x18b0cd]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x4be874,_0x4be874,_0x4be874);}}else{_0x131ba4=_['find'](_0x37cf62,['name',_0x4c1c('0x66')]);_0xbe15e['field']='ContactId';_0x4cbfe9=as['buildExpression'](_0x49eb80,_0x131ba4[_0x4c1c('0x3a')],_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9[_0x4c1c('0x60')][_0x4c1c('0x68')],_0x4cbfe9['value']['end']);}break;case _0x4c1c('0x69'):var _0xdeb850=_0xbe15e[_0x4c1c('0x60')]['split'](',')[_0x4c1c('0x36')](function(_0xb148fe){return Number(_0xb148fe);});_0xdeb850[_0x4c1c('0x33')](function(_0x320882){_0x4aff2a['or'](_0x4c1c('0x6a'),'%,'+_0x320882+',%');});_0x509f9e=_[_0x4c1c('0x6b')](_0x509f9e,_0xdeb850);break;case _0x4c1c('0x6c'):if(_0xbe15e[_0x4c1c('0x62')]===_0x4c1c('0x63')){_0x198242[_0x18b0cd](_0x4c1c('0x6d'),'%'+_0xbe15e[_0x4c1c('0x60')]+'%',null);}else{_0x131ba4=_[_0x4c1c('0x6e')](_0x37cf62,[_0x4c1c('0x2e'),_0x4c1c('0x6f')]);_0xbe15e[_0x4c1c('0x4b')]=_0x4c1c('0x6f');_0x4cbfe9=as[_0x4c1c('0x70')](_0x49eb80,_0x131ba4['type'],_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9['value']['start'],_0x4cbfe9['value'][_0x4c1c('0x20')]);}break;case _0x4c1c('0x71'):_0x4cbfe9=as[_0x4c1c('0x70')]('me',null,_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9[_0x4c1c('0x60')][_0x4c1c('0x68')],_0x4cbfe9['value'][_0x4c1c('0x20')]);break;}}else{var _0x4cbfe9=as[_0x4c1c('0x70')](_0x49eb80,_0x131ba4[_0x4c1c('0x3a')],_0xbe15e);_0x198242[_0x18b0cd](_0x4cbfe9[_0x4c1c('0x67')],_0x4cbfe9['value'][_0x4c1c('0x68')],_0x4cbfe9['value'][_0x4c1c('0x20')]);}}}else{var _0x58d0fd=_(_0x14ec9b['query'])[_0x4c1c('0x3e')]()[_0x4c1c('0x36')](function(_0x232b01){return _[_0x4c1c('0x72')](_0x37cf62,[_0x4c1c('0x2e'),_0x232b01])?_0x232b01:undefined;})[_0x4c1c('0x73')]()[_0x4c1c('0x60')]();if(!_[_0x4c1c('0x74')](_0x58d0fd)){_0x58d0fd[_0x4c1c('0x33')](function(_0x4fe15a){if(_0x4fe15a==='WhatsappAccountId'){_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x75'),[][_0x4c1c('0x76')](_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a]));}else if(_0x4fe15a===_0x4c1c('0x77')){var _0x51f527=JSON[_0x4c1c('0x78')](_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a])[_0x4c1c('0x79')];var _0x82bc57=JSON[_0x4c1c('0x78')](_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a])[_0x4c1c('0x7a')];_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x7b'),_0x51f527,_0x82bc57);}else{if(_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a]===_0x4c1c('0x7c')){_0x5b38f8[_0x4c1c('0x48')]('i.'+_0x4fe15a+_0x4c1c('0x7d'));}else{_0x5b38f8[_0x4c1c('0x48')]('i.'+_0x4fe15a+_0x4c1c('0x7e'),_0x14ec9b[_0x4c1c('0x3d')][_0x4fe15a]);}}});}if(_0x14ec9b['query'][_0x4c1c('0x7f')]){if(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x7f')]==0x1){_0x5b38f8[_0x4c1c('0x61')](_0x4c1c('0x80'));}else{_0x5b38f8[_0x4c1c('0x61')](_0x4c1c('0x81'));}}if(_0x14ec9b['query'][_0x4c1c('0x82')]){_0x509f9e=_['isArray'](_0x14ec9b['query'][_0x4c1c('0x82')])?_0x14ec9b[_0x4c1c('0x3d')]['tag']:new Array(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x82')]);_0x509f9e['forEach'](function(_0x49e5fd){_0x4aff2a['or'](_0x4c1c('0x6a'),'%,'+_0x49e5fd+',%');});}if(_0x14ec9b[_0x4c1c('0x3d')]['filter']){var _0x5d12e2=_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x83')]['replace']('\x5c','\x5c\x5c')[_0x4c1c('0x84')](/'/g,'\x27\x27');if(qs[_0x4c1c('0x85')](_0x5d12e2)){_0x198242['or']('i.id\x20LIKE\x20?',_0x5d12e2+'%')['or'](_0x4c1c('0x86'),_0x5d12e2+'%');}else{_0x198242['or'](_0x4c1c('0x87'),qs[_0x4c1c('0x65')](_0x5d12e2))['or'](_0x4c1c('0x88'),_0x5d12e2+'%');}}}_0x5b38f8[_0x4c1c('0x48')](_0x198242);_0x5b38f8['group'](_0x4c1c('0x89'));var _0xadddf4={'type':db[_0x4c1c('0x8a')][_0x4c1c('0x8b')][_0x4c1c('0x8c')],'raw':!![]};var _0x937792=_0x5b38f8[_0x4c1c('0x8d')]();_0x937792[_0x4c1c('0x4b')](_0x4c1c('0x89'));_0x937792['field'](_0x4c1c('0x8e'),'unreadMessages');if(_0x57248e[_0x4c1c('0x46')]){_0x57248e[_0x4c1c('0x46')]['forEach'](function(_0x1d7099){var _0x4313fe=_0x1d7099[0x0]===_0x4c1c('0x8f')?_0x1d7099[0x0]:'i.'+_0x1d7099[0x0];_0x5b38f8[_0x4c1c('0x46')](_0x4313fe,_0x1d7099[0x1]===_0x4c1c('0x90')?![]:!![]);});}if(!_['isEmpty'](_0x509f9e)){_0x5b38f8[_0x4c1c('0x61')](_0x4aff2a);_0x937792[_0x4c1c('0x48')]('t.id\x20IN\x20?',_0x509f9e);}BPromise['resolve']()['then'](function(){if(!_0x37e8d8){if(_0x14ec9b[_0x4c1c('0x3d')]['WhatsappAccountId'])return;_0x937792[_0x4c1c('0x48')](_0x4c1c('0x91'));_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x91'));return;}if(_0x14ec9b['user'][_0x4c1c('0x92')]!==_0x4c1c('0x93'))return;return _0x14ec9b[_0x4c1c('0x94')][_0x4c1c('0x95')]({'attributes':['id'],'raw':!![]})[_0x4c1c('0x2b')](function(_0x236e18){if(_[_0x4c1c('0x74')](_0x236e18)){_0x937792[_0x4c1c('0x48')]('i.WhatsappAccountId\x20IS\x20NULL');_0x5b38f8[_0x4c1c('0x48')](_0x4c1c('0x96'));}else{_0x937792[_0x4c1c('0x48')]('i.WhatsappAccountId\x20IN\x20?',_['map'](_0x236e18,'id'));_0x5b38f8[_0x4c1c('0x48')]('i.WhatsappAccountId\x20IN\x20?',_[_0x4c1c('0x36')](_0x236e18,'id'));}});})[_0x4c1c('0x2b')](function(){if(_0x14ec9b['user'][_0x4c1c('0x92')]===_0x4c1c('0x93')&&!_0x37e8d8&&!_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x97')])return[];return db['sequelize']['query'](_0x937792[_0x4c1c('0x98')](),_0xadddf4);})[_0x4c1c('0x2b')](function(_0x3572ab){_0x4f5c70[_0x4c1c('0x25')]=_0x3572ab[_0x4c1c('0x43')];if(_0x4f5c70[_0x4c1c('0x25')]===0x0)return[];return db[_0x4c1c('0x99')][_0x4c1c('0x3d')](_0x50b41c[_0x4c1c('0x98')](),_0xadddf4)[_0x4c1c('0x2b')](function(_0x361f4a){_0x21faf6=_['keyBy'](_0x361f4a,'id');_0xadddf4=_[_0x4c1c('0x9a')](_0xadddf4,{'model':db[_0x4c1c('0x37')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x14ec9b[_0x4c1c('0x3d')][_0x4c1c('0x42')]){_0x57248e[_0x4c1c('0x41')]['forEach'](function(_0x591805){_0x5b38f8[_0x4c1c('0x4b')]('i.'+_0x591805);});}else{_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x8e'),_0x4c1c('0x5f'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9b'),'Account.key');_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9c'),_0x4c1c('0x9d'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9e'),_0x4c1c('0x8f'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0x9f'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa0'),'Contact.firstName');_0x5b38f8['field'](_0x4c1c('0xa1'),_0x4c1c('0xa2'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa3'),_0x4c1c('0xa4'));_0x5b38f8['field'](_0x4c1c('0xa5'),_0x4c1c('0xa6'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa7'),_0x4c1c('0xa8'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xa9'),_0x4c1c('0xaa'));_0x5b38f8['field'](_0x4c1c('0xab'),_0x4c1c('0xac'));_0x5b38f8[_0x4c1c('0x4b')](_0x4c1c('0xad'),_0x4c1c('0xae'));_0x5b38f8['field'](_0x4c1c('0xaf'),'TagIds');}if(_0x57248e[_0x4c1c('0x24')])_0x5b38f8[_0x4c1c('0x24')](_0x57248e[_0x4c1c('0x24')]);if(_0x57248e[_0x4c1c('0x22')])_0x5b38f8[_0x4c1c('0x22')](_0x57248e['offset']);return db[_0x4c1c('0x99')][_0x4c1c('0x3d')](_0x5b38f8[_0x4c1c('0x98')](),_0xadddf4);})[_0x4c1c('0x2b')](function(_0x293472){if(_0x293472[_0x4c1c('0x43')]>0x0)_0x276b1c[_0x4c1c('0x48')](_0x4c1c('0xb0'),_[_0x4c1c('0x36')](_0x293472,'id'));return db[_0x4c1c('0x99')]['query'](_0x276b1c[_0x4c1c('0x98')](),_0xadddf4)[_0x4c1c('0x2b')](function(_0x126f2d){var _0x362c20=_[_0x4c1c('0xb1')](_0x126f2d,_0x4c1c('0xb2'));var _0x4693b8=[];_0x293472['forEach'](function(_0x416dfe){_0x4693b8[_0x4c1c('0xb3')](updateWhatsappInteraction(_0x416dfe,_0x21faf6,_0x362c20));});return BPromise[_0x4c1c('0xb4')](_0x4693b8);});});})['then'](function(_0x1109cc){_0x4f5c70[_0x4c1c('0xb5')]=_0x1109cc;return _0x4f5c70;})['then'](respondWithFilteredResult(_0x222493,_0x57248e))[_0x4c1c('0xb6')](handleError(_0x222493,null));};exports[_0x4c1c('0xb7')]=function(_0x3e0d49,_0xd6d748){var _0xac1afe={'raw':![],'where':{'id':_0x3e0d49['params']['id']}},_0x32e0c0={};_0x32e0c0[_0x4c1c('0x3c')]=_[_0x4c1c('0x3e')](db['WhatsappInteraction'][_0x4c1c('0x38')]);_0x32e0c0['query']=_[_0x4c1c('0x3e')](_0x3e0d49[_0x4c1c('0x3d')]);_0x32e0c0[_0x4c1c('0x3f')]=_[_0x4c1c('0x40')](_0x32e0c0[_0x4c1c('0x3c')],_0x32e0c0['query']);_0xac1afe[_0x4c1c('0x41')]=_['intersection'](_0x32e0c0[_0x4c1c('0x3c')],qs['fields'](_0x3e0d49[_0x4c1c('0x3d')][_0x4c1c('0x42')]));_0xac1afe[_0x4c1c('0x41')]=_0xac1afe['attributes']['length']?_0xac1afe[_0x4c1c('0x41')]:_0x32e0c0['model'];if(_0x3e0d49[_0x4c1c('0x3d')]['includeAll']){_0xac1afe['include']=[{'all':!![]}];}_0xac1afe=_['merge']({},_0xac1afe,_0x3e0d49[_0x4c1c('0xb8')]);return db[_0x4c1c('0x37')][_0x4c1c('0x6e')](_0xac1afe)['then'](handleEntityNotFound(_0xd6d748,null))['then'](respondWithResult(_0xd6d748,null))[_0x4c1c('0xb6')](handleError(_0xd6d748,null));};exports[_0x4c1c('0xb9')]=function(_0x4a4df7,_0x437579){return db[_0x4c1c('0x37')][_0x4c1c('0xb9')](_0x4a4df7[_0x4c1c('0x71')],{})[_0x4c1c('0x2b')](respondWithResult(_0x437579,0xc9))[_0x4c1c('0xb6')](handleError(_0x437579,null));};exports[_0x4c1c('0x2a')]=function(_0x3b9b55,_0x19a9c2){if(_0x3b9b55[_0x4c1c('0x71')]['id']){delete _0x3b9b55[_0x4c1c('0x71')]['id'];}return db['WhatsappInteraction'][_0x4c1c('0x6e')]({'where':{'id':_0x3b9b55[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x19a9c2,null))['then'](saveUpdates(_0x3b9b55[_0x4c1c('0x71')],null))[_0x4c1c('0x2b')](respondWithResult(_0x19a9c2,null))[_0x4c1c('0xb6')](handleError(_0x19a9c2,null));};exports[_0x4c1c('0xbb')]=function(_0x1e1a64,_0x3ce7dc){return db[_0x4c1c('0x37')][_0x4c1c('0x6e')]({'where':{'id':_0x1e1a64[_0x4c1c('0xba')]['id']}})['then'](handleEntityNotFound(_0x3ce7dc,null))['then'](removeEntity(_0x3ce7dc,null))[_0x4c1c('0xb6')](handleError(_0x3ce7dc,null));};exports['describe']=function(_0x331b78,_0x470db0){return db['WhatsappInteraction'][_0x4c1c('0xbc')]()[_0x4c1c('0x2b')](respondWithResult(_0x470db0,null))['catch'](handleError(_0x470db0,null));};exports['addMessage']=function(_0x757a78,_0x3a4871,_0x568c1d){return db[_0x4c1c('0xbd')][_0x4c1c('0x6e')]({'where':{'id':_0x757a78['params']['id']}})['then'](handleEntityNotFound(_0x3a4871,null))[_0x4c1c('0x2b')](function(_0x51d405){if(_0x51d405){return _0x51d405[_0x4c1c('0xbe')](_0x757a78[_0x4c1c('0x71')][_0x4c1c('0xbf')],_[_0x4c1c('0xc0')](_0x757a78[_0x4c1c('0x71')],[_0x4c1c('0xbf'),'id'])||{});}})[_0x4c1c('0x2b')](respondWithResult(_0x3a4871,null))['catch'](handleError(_0x3a4871,null));};exports[_0x4c1c('0xc1')]=function(_0x5df1ed,_0x10de1d,_0x124530){var _0x2066c5={'raw':![],'where':{}};var _0x1e2812={};var _0x3467a5={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0x4c1c('0xc2')]({'where':{'id':_0x5df1ed[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x10de1d,null))[_0x4c1c('0x2b')](function(_0x322ea6){if(_0x322ea6){_0x1e2812[_0x4c1c('0x3c')]=_[_0x4c1c('0x3e')](db[_0x4c1c('0xbd')][_0x4c1c('0x38')]);_0x1e2812['query']=_[_0x4c1c('0x3e')](_0x5df1ed['query']);_0x1e2812['filters']=_['intersection'](_0x1e2812[_0x4c1c('0x3c')],_0x1e2812['query']);_0x2066c5['attributes']=_['intersection'](_0x1e2812[_0x4c1c('0x3c')],qs['fields'](_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x42')]));_0x2066c5[_0x4c1c('0x41')]=_0x2066c5[_0x4c1c('0x41')][_0x4c1c('0x43')]?_0x2066c5['attributes']:_0x1e2812[_0x4c1c('0x3c')];if(!_0x5df1ed['query'][_0x4c1c('0x44')]('nolimit')){_0x2066c5['limit']=qs[_0x4c1c('0x24')](_0x5df1ed['query']['limit']);_0x2066c5[_0x4c1c('0x22')]=qs[_0x4c1c('0x22')](_0x5df1ed['query'][_0x4c1c('0x22')]);}_0x2066c5[_0x4c1c('0x46')]=qs[_0x4c1c('0x47')](_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x47')]);_0x2066c5[_0x4c1c('0x48')]=qs[_0x4c1c('0x3f')](_[_0x4c1c('0x49')](_0x5df1ed[_0x4c1c('0x3d')],_0x1e2812[_0x4c1c('0x3f')]));_0x2066c5[_0x4c1c('0x48')][_0x4c1c('0xb2')]=_0x322ea6['id'];if(_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x83')]){_0x2066c5['where']=_['merge'](_0x2066c5[_0x4c1c('0x48')],{'$or':_[_0x4c1c('0x36')](_0x2066c5[_0x4c1c('0x41')],function(_0x4bab81){var _0x12c662={};_0x12c662[_0x4bab81]={'$like':'%'+_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x83')]+'%'};return _0x12c662;})});}if(_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0x79')]){var _0xc15e80=_0x5df1ed['query']['$gte'][_0x4c1c('0x32')](',');var _0x1c0835={};_0x1c0835[_0xc15e80[0x0]]={'$gte':moment(_0xc15e80[0x1])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))};_0x2066c5[_0x4c1c('0x48')]=_['merge'](_0x2066c5[_0x4c1c('0x48')],_0x1c0835);}_0x2066c5=_[_0x4c1c('0x9a')]({},_0x2066c5,_0x5df1ed[_0x4c1c('0xb8')]);return db[_0x4c1c('0xbd')]['count']({'where':_0x2066c5[_0x4c1c('0x48')]})['then'](function(_0x273a07){_0x3467a5[_0x4c1c('0x25')]=_0x273a07;if(_0x5df1ed[_0x4c1c('0x3d')][_0x4c1c('0xc5')]){_0x2066c5[_0x4c1c('0xc6')]=[{'all':!![]}];}return db[_0x4c1c('0xbd')]['findAll'](_0x2066c5);})[_0x4c1c('0x2b')](function(_0x1a568c){_0x3467a5[_0x4c1c('0xb5')]=_0x1a568c;return _0x3467a5;});}})[_0x4c1c('0x2b')](respondWithFilteredResult(_0x10de1d,_0x2066c5))[_0x4c1c('0xb6')](handleError(_0x10de1d,null));};exports[_0x4c1c('0xc7')]=function(_0x464530,_0x1bbdc2,_0x1cab0d){return db[_0x4c1c('0x37')][_0x4c1c('0x6e')]({'where':{'id':_0x464530[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x1bbdc2,null))[_0x4c1c('0x2b')](function(_0x23f9ed){if(_0x23f9ed){return _0x23f9ed[_0x4c1c('0xc8')](_0x464530[_0x4c1c('0x71')][_0x4c1c('0xbf')],_[_0x4c1c('0xc0')](_0x464530['body'],[_0x4c1c('0xbf'),'id'])||{})[_0x4c1c('0xc9')](function(){return db['Tag'][_0x4c1c('0xca')]({'attributes':['id',_0x4c1c('0x2e'),_0x4c1c('0x4c')],'where':{'id':_0x464530[_0x4c1c('0x71')]['ids']}});})['then'](function(_0x54dbc2){socket['emit'](_0x4c1c('0xcb'),{'id':Number(_0x464530[_0x4c1c('0xba')]['id']),'tags':_0x54dbc2||[]});return{'id':Number(_0x464530[_0x4c1c('0xba')]['id']),'tags':_0x54dbc2||[]};});}})[_0x4c1c('0x2b')](respondWithResult(_0x1bbdc2,null))[_0x4c1c('0xb6')](handleError(_0x1bbdc2,null));};exports['removeTags']=function(_0x31dc96,_0x64b57,_0x409e87){return db[_0x4c1c('0x37')]['find']({'where':{'id':_0x31dc96[_0x4c1c('0xba')]['id']}})[_0x4c1c('0x2b')](handleEntityNotFound(_0x64b57,null))[_0x4c1c('0x2b')](function(_0x2d32c3){if(_0x2d32c3){return _0x2d32c3[_0x4c1c('0xcc')](_0x31dc96[_0x4c1c('0x3d')][_0x4c1c('0xbf')]);}})[_0x4c1c('0x2b')](respondWithStatusCode(_0x64b57,null))[_0x4c1c('0xb6')](handleError(_0x64b57,null));};exports['download']=function(_0x1cf023,_0x4a02af){var _0x95ad5f=moment()[_0x4c1c('0xcd')]()['toString']();var _0x471510=path[_0x4c1c('0xce')](config[_0x4c1c('0xcf')],_0x4c1c('0xd0'),_0x4c1c('0xd1'),'tmp');var _0x54d504=path['join'](config['root'],'server','files',_0x4c1c('0xd2'));var _0x238990=path[_0x4c1c('0xce')](_0x471510,_0x95ad5f);var _0xdd3624=util[_0x4c1c('0xc3')](_0x4c1c('0xd3'),_0x1cf023['params']['id'],_0x95ad5f);var _0x21d9a0=path['join'](_0x471510,_0xdd3624);var _0xf957dd=[];_0xf957dd[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0x6c')],'as':'User','attributes':['id',_0x4c1c('0x30')],'raw':!![]});_0xf957dd[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0xd4')],'as':'Contact','attributes':['id',_0x4c1c('0xd5'),'lastName'],'raw':!![]});if(_0x1cf023[_0x4c1c('0x3d')][_0x4c1c('0xd2')]){_0xf957dd[_0x4c1c('0xb3')]({'model':db['Attachment'],'as':_0x4c1c('0xd6'),'raw':!![]});}var _0x5430de=[{'model':db['WhatsappMessage'],'as':_0x4c1c('0xd7'),'attributes':['id',_0x4c1c('0x71'),_0x4c1c('0x77'),_0x4c1c('0xd8'),_0x4c1c('0xd9'),'read'],'include':_0xf957dd}];_0x5430de[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0xda')],'as':'Account','attributes':['id','name']});_0x5430de[_0x4c1c('0xb3')]({'model':db[_0x4c1c('0x6c')],'as':_0x4c1c('0xdb'),'attributes':['id',_0x4c1c('0x30')]});return db[_0x4c1c('0x37')][_0x4c1c('0x6e')]({'where':{'id':_0x1cf023[_0x4c1c('0xba')]['id']},'include':_0x5430de})[_0x4c1c('0x2b')](handleEntityNotFound(_0x4a02af,null))[_0x4c1c('0x2b')](function(_0x3ed063){if(_0x3ed063){var _0x395b12=_0x3ed063['get']({'plain':!![]});fs['mkdirSync'](_0x238990);var _0x2b129e={'channel':_0x4c1c('0xdc'),'account':_0x395b12['Account'][_0x4c1c('0x2e')],'agent':_0x395b12[_0x4c1c('0xdb')]?_0x395b12['Owner'][_0x4c1c('0x30')]:_0x4c1c('0xdd'),'createdAt':moment(_0x395b12[_0x4c1c('0x77')])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))['toString'](),'closedAt':_0x395b12[_0x4c1c('0xde')]?moment(_0x395b12[_0x4c1c('0xdf')])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))[_0x4c1c('0x98')]():'','disposition':_0x395b12[_0x4c1c('0xe0')],'messages':_(_0x395b12[_0x4c1c('0xd7')])[_0x4c1c('0x83')]({'secret':![]})[_0x4c1c('0x36')](function(_0xdb0446){if(_0xdb0446[_0x4c1c('0xd6')]){var _0x3a5be9=path[_0x4c1c('0xce')](_0x54d504,_0xdb0446[_0x4c1c('0xd6')][_0x4c1c('0xe1')]);if(fs[_0x4c1c('0xe2')](_0x3a5be9)){fs[_0x4c1c('0xe3')](_0x3a5be9)[_0x4c1c('0xe4')](fs[_0x4c1c('0xe5')](path['join'](_0x238990,_0xdb0446[_0x4c1c('0xd6')][_0x4c1c('0xe1')])));}}return{'date':moment(_0xdb0446[_0x4c1c('0x77')])[_0x4c1c('0xc3')](_0x4c1c('0xc4'))[_0x4c1c('0x98')](),'sender':_0xdb0446[_0x4c1c('0xd8')]===_0x4c1c('0xe6')?_0xdb0446[_0x4c1c('0x6c')]?_0xdb0446[_0x4c1c('0x6c')][_0x4c1c('0x30')]:_0x4c1c('0xe7'):_0xdb0446['Contact'][_0x4c1c('0xd5')]+(_0xdb0446[_0x4c1c('0xe8')][_0x4c1c('0xe9')]?'\x20'+_0xdb0446[_0x4c1c('0xe8')][_0x4c1c('0xe9')]:''),'body':_0xdb0446[_0x4c1c('0xd6')]?_0xdb0446[_0x4c1c('0xd6')][_0x4c1c('0xe1')]:_0xdb0446[_0x4c1c('0x71')],'direction':_0xdb0446['direction']===_0x4c1c('0xe6')?'A':'C','secret':_0xdb0446[_0x4c1c('0xd9')],'read':_0xdb0446[_0x4c1c('0x7f')],'attachment':_0xdb0446[_0x4c1c('0xd6')]};})[_0x4c1c('0x60')]()};return ejs['renderFile'](path['join'](config['root'],_0x4c1c('0xd0'),_0x4c1c('0xea'),'downloadInteraction.ejs'),{'interaction':_0x2b129e})[_0x4c1c('0x2b')](function(_0x5617c1){var _0x17971c=path[_0x4c1c('0xce')](_0x238990,_0x4c1c('0xeb')+_0x395b12['id']+'-'+_0x95ad5f+'.pdf');var _0xd0b855={'path':_0x17971c,'channel':_0x4c1c('0xdc'),'interactionId':_0x395b12['id']};return pdf[_0x4c1c('0xec')](_0x5617c1,_0xd0b855);})[_0x4c1c('0x2b')](function(){return new BPromise(function(_0x1833f7,_0x485e55){zipdir(_0x238990,{'saveTo':_0x21d9a0},function(_0x2fcee2,_0x40837a){if(_0x2fcee2)return _0x485e55(_0x2fcee2);return _0x1833f7(_0x40837a);});})[_0x4c1c('0x2b')](function(){return new BPromise(function(_0x5c12f5,_0x54e57f){rimraf(_0x238990,function(_0xbe9bd0){if(_0xbe9bd0)_0x54e57f(_0xbe9bd0);return _0x5c12f5();});});})[_0x4c1c('0x2b')](function(){return _0x4a02af[_0x4c1c('0xed')](_0x21d9a0,_0xdd3624,function(_0x3a8f60){if(_0x3a8f60){console[_0x4c1c('0xee')](_0x4c1c('0xef'),_0x3a8f60);}else{fs['unlinkSync'](_0x21d9a0);}});});});}else{return _0x4a02af[_0x4c1c('0x1e')](0xc8);}})['catch'](handleError(_0x4a02af,null));};
\ No newline at end of file
index 2662037..307e18b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9000=['save','update','remove','getUsers','setDataValue','Users','findAll','then','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners'];(function(_0x279e39,_0x8a6cac){var _0x3a43c7=function(_0x50cfa6){while(--_0x50cfa6){_0x279e39['push'](_0x279e39['shift']());}};_0x3a43c7(++_0x8a6cac);}(_0x9000,0x19e));var _0x0900=function(_0x2b76de,_0x2c174c){_0x2b76de=_0x2b76de-0x0;var _0x4bbf3e=_0x9000[_0x2b76de];return _0x4bbf3e;};'use strict';var EventEmitter=require(_0x0900('0x0'));var WhatsappInteraction=require(_0x0900('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x0900('0x1'))['db'][_0x0900('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x0900('0x3')](0x0);var events={'afterCreate':_0x0900('0x4'),'afterUpdate':_0x0900('0x5'),'afterDestroy':_0x0900('0x6')};function emitEvent(_0x31100b){return function(_0x3f77e6,_0x32c996,_0x50b1ad){_0x3f77e6[_0x0900('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5c4b2e){_0x3f77e6[_0x0900('0x8')](_0x0900('0x9'),_0x5c4b2e['map'](function(_0x5c13a1){return{'id':_0x5c13a1['id']};}));return WhatsappMessage[_0x0900('0xa')]({'where':{'WhatsappInteractionId':_0x3f77e6['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0900('0xb')](function(_0x2c8efa){_0x3f77e6[_0x0900('0x8')](_0x0900('0xc'),_0x2c8efa[_0x0900('0xd')]);WhatsappInteractionEvents['emit'](_0x31100b+':'+_0x3f77e6['id'],_0x3f77e6);WhatsappInteractionEvents[_0x0900('0xe')](_0x31100b,_0x3f77e6);_0x50b1ad(null);})[_0x0900('0xf')](_0x50b1ad(null));};}for(var e in events){if(events[_0x0900('0x10')](e)){var event=events[e];WhatsappInteraction[_0x0900('0x11')](e,emitEvent(event));}}module[_0x0900('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x55e0=['update','remove','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','hasOwnProperty','exports','events','../../mysqldb','WhatsappInteraction','save'];(function(_0x2b32ea,_0x267434){var _0x3b829a=function(_0x451938){while(--_0x451938){_0x2b32ea['push'](_0x2b32ea['shift']());}};_0x3b829a(++_0x267434);}(_0x55e0,0xdc));var _0x055e=function(_0x4a5b2c,_0x453068){_0x4a5b2c=_0x4a5b2c-0x0;var _0x3f723d=_0x55e0[_0x4a5b2c];return _0x3f723d;};'use strict';var EventEmitter=require(_0x055e('0x0'));var WhatsappInteraction=require(_0x055e('0x1'))['db'][_0x055e('0x2')];var WhatsappMessage=require(_0x055e('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x055e('0x3'),'afterUpdate':_0x055e('0x4'),'afterDestroy':_0x055e('0x5')};function emitEvent(_0x2773e4){return function(_0x157473,_0x196394,_0x490ee1){_0x157473['getUsers']({'attributes':['id'],'raw':!![]})[_0x055e('0x6')](function(_0x4a442e){_0x157473[_0x055e('0x7')](_0x055e('0x8'),_0x4a442e[_0x055e('0x9')](function(_0x230c32){return{'id':_0x230c32['id']};}));return WhatsappMessage[_0x055e('0xa')]({'where':{'WhatsappInteractionId':_0x157473['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x40779c){_0x157473[_0x055e('0x7')](_0x055e('0xb'),_0x40779c[_0x055e('0xc')]);WhatsappInteractionEvents[_0x055e('0xd')](_0x2773e4+':'+_0x157473['id'],_0x157473);WhatsappInteractionEvents['emit'](_0x2773e4,_0x157473);_0x490ee1(null);})['catch'](_0x490ee1(null));};}for(var e in events){if(events[_0x055e('0xe')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0x055e('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
index 558b8f5..7be47bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aeb=['WhatsappInteraction','changed','closed','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5aeb,0xc5));var _0xb5ae=function(_0xc81c69,_0xabf860){_0xc81c69=_0xc81c69-0x0;var _0x442519=_0x5aeb[_0xc81c69];return _0x442519;};'use strict';var _=require(_0xb5ae('0x0'));var util=require(_0xb5ae('0x1'));var logger=require(_0xb5ae('0x2'))(_0xb5ae('0x3'));var moment=require(_0xb5ae('0x4'));var BPromise=require(_0xb5ae('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb5ae('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappInteraction.attributes');module['exports']=function(_0xb2ab62,_0x5e4b2f){return _0xb2ab62['define'](_0xb5ae('0x7'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x34834e,_0x486a15,_0xd78b8c){if(_0x34834e[_0xb5ae('0x8')](_0xb5ae('0x9'))){_0x34834e[_0xb5ae('0xa')]=moment()[_0xb5ae('0xb')]('YYYY-MM-DD\x20HH:mm:ss');}_0xd78b8c(null,_0x34834e);}}});};
\ No newline at end of file
+var _0x69c5=['api','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger'];(function(_0x36f58b,_0x2e27b3){var _0x10ebaa=function(_0x1cb715){while(--_0x1cb715){_0x36f58b['push'](_0x36f58b['shift']());}};_0x10ebaa(++_0x2e27b3);}(_0x69c5,0xad));var _0x569c=function(_0x501d86,_0x284bca){_0x501d86=_0x501d86-0x0;var _0x1f9d47=_0x69c5[_0x501d86];return _0x1f9d47;};'use strict';var _=require(_0x569c('0x0'));var util=require(_0x569c('0x1'));var logger=require(_0x569c('0x2'))(_0x569c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x569c('0x4'));var fs=require('fs');var path=require(_0x569c('0x5'));var rimraf=require(_0x569c('0x6'));var config=require(_0x569c('0x7'));var attributes=require(_0x569c('0x8'));module[_0x569c('0x9')]=function(_0x1477d9,_0x2363e1){return _0x1477d9[_0x569c('0xa')]('WhatsappInteraction',attributes,{'tableName':_0x569c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x22d8cf,_0x32faa6,_0xb7f5cd){if(_0x22d8cf[_0x569c('0xc')](_0x569c('0xd'))){_0x22d8cf[_0x569c('0xe')]=moment()['format'](_0x569c('0xf'));}_0xb7f5cd(null,_0x22d8cf);}}});};
\ No newline at end of file
index eb8edb6..c252eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc659=['ids','spread','AddTags','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./whatsappInteraction.socket','register','request','info','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','WhatsappInteraction,\x20%s,\x20%s','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','body','options','where','attributes','limit','then','find','addTags'];(function(_0x5f12d8,_0x224220){var _0xa86be7=function(_0x38c5ef){while(--_0x38c5ef){_0x5f12d8['push'](_0x5f12d8['shift']());}};_0xa86be7(++_0x224220);}(_0xc659,0x1ed));var _0x9c65=function(_0x5caa02,_0x3106fd){_0x5caa02=_0x5caa02-0x0;var _0x562d4e=_0xc659[_0x5caa02];return _0x562d4e;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9c65('0x0'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9c65('0x1'));var logger=require(_0x9c65('0x2'))(_0x9c65('0x3'));var config=require(_0x9c65('0x4'));var jayson=require(_0x9c65('0x5'));var client=jayson[_0x9c65('0x6')]['http']({'port':0x232a});config[_0x9c65('0x7')]=_['defaults'](config[_0x9c65('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x9c65('0x8'))(new Redis(config['redis']));require(_0x9c65('0x9'))[_0x9c65('0xa')](socket);function respondWithRpcPromise(_0x408532,_0x4ab497,_0x909c80){return new BPromise(function(_0x9b0a3b,_0x36c30f){return client[_0x9c65('0xb')](_0x408532,_0x909c80)['then'](function(_0x5934b1){logger[_0x9c65('0xc')]('WhatsappInteraction,\x20%s,\x20%s',_0x4ab497,_0x9c65('0xd'));logger[_0x9c65('0xe')](_0x9c65('0xf'),_0x4ab497,_0x9c65('0xd'),JSON[_0x9c65('0x10')](_0x5934b1));if(_0x5934b1[_0x9c65('0x11')]){if(_0x5934b1[_0x9c65('0x11')]['code']===0x1f4){logger[_0x9c65('0x11')](_0x9c65('0x12'),_0x4ab497,_0x5934b1['error'][_0x9c65('0x13')]);return _0x36c30f(_0x5934b1[_0x9c65('0x11')][_0x9c65('0x13')]);}logger[_0x9c65('0x11')](_0x9c65('0x12'),_0x4ab497,_0x5934b1[_0x9c65('0x11')][_0x9c65('0x13')]);return _0x9b0a3b(_0x5934b1['error'][_0x9c65('0x13')]);}else{logger[_0x9c65('0xc')]('WhatsappInteraction,\x20%s,\x20%s',_0x4ab497,'request\x20sent');_0x9b0a3b(_0x5934b1[_0x9c65('0x14')][_0x9c65('0x13')]);}})[_0x9c65('0x15')](function(_0x2cd75a){logger[_0x9c65('0x11')](_0x9c65('0x12'),_0x4ab497,_0x2cd75a);_0x36c30f(_0x2cd75a);});});}exports[_0x9c65('0x16')]=function(_0x473047){var _0x1b3f97=this;return new Promise(function(_0x488d69,_0x48ef54){return db[_0x9c65('0x17')]['update'](_0x473047[_0x9c65('0x18')],{'raw':_0x473047['options']?_0x473047[_0x9c65('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x473047['options']?_0x473047[_0x9c65('0x19')][_0x9c65('0x1a')]||null:null,'attributes':_0x473047['options']?_0x473047[_0x9c65('0x19')][_0x9c65('0x1b')]||null:null,'limit':_0x473047[_0x9c65('0x19')]?_0x473047['options'][_0x9c65('0x1c')]||null:null})[_0x9c65('0x1d')](function(_0x275f82){logger[_0x9c65('0xc')](_0x9c65('0x16'),_0x473047);logger[_0x9c65('0xe')](_0x9c65('0x16'),_0x473047,JSON[_0x9c65('0x10')](_0x275f82));_0x488d69(_0x275f82);})[_0x9c65('0x15')](function(_0x7374a){logger[_0x9c65('0x11')]('UpdateWhatsappInteraction',_0x7374a[_0x9c65('0x13')],_0x473047);_0x48ef54(_0x1b3f97[_0x9c65('0x11')](0x1f4,_0x7374a[_0x9c65('0x13')]));});});};exports['AddTagsToWhatsappInteraction']=function(_0x5b6435){return new Promise(function(_0x54c2ca,_0x9255e){return db[_0x9c65('0x17')][_0x9c65('0x1e')]({'where':_0x5b6435['options']?_0x5b6435[_0x9c65('0x19')][_0x9c65('0x1a')]||null:null})[_0x9c65('0x1d')](function(_0x57c85f){if(_0x57c85f){return _0x57c85f[_0x9c65('0x1f')](_0x5b6435[_0x9c65('0x18')]['ids'],_['omit'](_0x5b6435[_0x9c65('0x18')],[_0x9c65('0x20'),'id'])||{});}})[_0x9c65('0x21')](function(_0x2385c9){logger[_0x9c65('0xc')]('AddTags',_0x5b6435);logger[_0x9c65('0xe')]('AddTags',_0x5b6435,JSON[_0x9c65('0x10')](_0x2385c9));_0x54c2ca(_0x2385c9);})[_0x9c65('0x15')](function(_0x594395){logger[_0x9c65('0x11')](_0x9c65('0x22'),_0x594395[_0x9c65('0x13')],_0x5b6435);_0x9255e(_this[_0x9c65('0x11')](0x1f4,_0x594395[_0x9c65('0x13')]));});});};
\ No newline at end of file
+var _0x9ede=['localhost','./whatsappInteraction.socket','request','then','info','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','WhatsappInteraction,\x20%s,\x20%s','result','UpdateWhatsappInteraction','WhatsappInteraction','body','options','raw','where','limit','catch','AddTagsToWhatsappInteraction','find','ids','omit','AddTags','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis'];(function(_0x1809b1,_0x5dd515){var _0x2aeafb=function(_0x4842ce){while(--_0x4842ce){_0x1809b1['push'](_0x1809b1['shift']());}};_0x2aeafb(++_0x5dd515);}(_0x9ede,0x183));var _0xe9ed=function(_0x20655f,_0x30c253){_0x20655f=_0x20655f-0x0;var _0x1efb50=_0x9ede[_0x20655f];return _0x1efb50;};'use strict';var _=require(_0xe9ed('0x0'));var util=require(_0xe9ed('0x1'));var moment=require('moment');var BPromise=require(_0xe9ed('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe9ed('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9ed('0x4'));var logger=require(_0xe9ed('0x5'))(_0xe9ed('0x6'));var config=require(_0xe9ed('0x7'));var jayson=require(_0xe9ed('0x8'));var client=jayson[_0xe9ed('0x9')][_0xe9ed('0xa')]({'port':0x232a});config['redis']=_[_0xe9ed('0xb')](config[_0xe9ed('0xc')],{'host':_0xe9ed('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe9ed('0xe'))['register'](socket);function respondWithRpcPromise(_0x12d0b8,_0x171c51,_0x41820f){return new BPromise(function(_0x4cb915,_0x5534d7){return client[_0xe9ed('0xf')](_0x12d0b8,_0x41820f)[_0xe9ed('0x10')](function(_0x10ca75){logger[_0xe9ed('0x11')]('WhatsappInteraction,\x20%s,\x20%s',_0x171c51,_0xe9ed('0x12'));logger[_0xe9ed('0x13')](_0xe9ed('0x14'),_0x171c51,'request\x20sent',JSON[_0xe9ed('0x15')](_0x10ca75));if(_0x10ca75[_0xe9ed('0x16')]){if(_0x10ca75[_0xe9ed('0x16')][_0xe9ed('0x17')]===0x1f4){logger[_0xe9ed('0x16')]('WhatsappInteraction,\x20%s,\x20%s',_0x171c51,_0x10ca75[_0xe9ed('0x16')][_0xe9ed('0x18')]);return _0x5534d7(_0x10ca75['error'][_0xe9ed('0x18')]);}logger[_0xe9ed('0x16')](_0xe9ed('0x19'),_0x171c51,_0x10ca75['error'][_0xe9ed('0x18')]);return _0x4cb915(_0x10ca75[_0xe9ed('0x16')][_0xe9ed('0x18')]);}else{logger[_0xe9ed('0x11')](_0xe9ed('0x19'),_0x171c51,_0xe9ed('0x12'));_0x4cb915(_0x10ca75[_0xe9ed('0x1a')][_0xe9ed('0x18')]);}})['catch'](function(_0x6541e2){logger[_0xe9ed('0x16')](_0xe9ed('0x19'),_0x171c51,_0x6541e2);_0x5534d7(_0x6541e2);});});}exports[_0xe9ed('0x1b')]=function(_0x28a4ec){var _0x5e3ccc=this;return new Promise(function(_0x4444a9,_0x41f1e6){return db[_0xe9ed('0x1c')]['update'](_0x28a4ec[_0xe9ed('0x1d')],{'raw':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec[_0xe9ed('0x1e')][_0xe9ed('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec[_0xe9ed('0x1e')][_0xe9ed('0x20')]||null:null,'attributes':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec['options']['attributes']||null:null,'limit':_0x28a4ec[_0xe9ed('0x1e')]?_0x28a4ec[_0xe9ed('0x1e')][_0xe9ed('0x21')]||null:null})[_0xe9ed('0x10')](function(_0x537099){logger[_0xe9ed('0x11')](_0xe9ed('0x1b'),_0x28a4ec);logger[_0xe9ed('0x13')](_0xe9ed('0x1b'),_0x28a4ec,JSON[_0xe9ed('0x15')](_0x537099));_0x4444a9(_0x537099);})[_0xe9ed('0x22')](function(_0x12e1e0){logger[_0xe9ed('0x16')]('UpdateWhatsappInteraction',_0x12e1e0[_0xe9ed('0x18')],_0x28a4ec);_0x41f1e6(_0x5e3ccc[_0xe9ed('0x16')](0x1f4,_0x12e1e0[_0xe9ed('0x18')]));});});};exports[_0xe9ed('0x23')]=function(_0x4fc718){return new Promise(function(_0x50f7c5,_0x1e6144){return db[_0xe9ed('0x1c')][_0xe9ed('0x24')]({'where':_0x4fc718[_0xe9ed('0x1e')]?_0x4fc718['options'][_0xe9ed('0x20')]||null:null})['then'](function(_0x30119a){if(_0x30119a){return _0x30119a['addTags'](_0x4fc718[_0xe9ed('0x1d')][_0xe9ed('0x25')],_[_0xe9ed('0x26')](_0x4fc718[_0xe9ed('0x1d')],[_0xe9ed('0x25'),'id'])||{});}})['spread'](function(_0x4e822f){logger[_0xe9ed('0x11')](_0xe9ed('0x27'),_0x4fc718);logger[_0xe9ed('0x13')](_0xe9ed('0x27'),_0x4fc718,JSON['stringify'](_0x4e822f));_0x50f7c5(_0x4e822f);})[_0xe9ed('0x22')](function(_0xdbd85c){logger['error'](_0xe9ed('0x27'),_0xdbd85c[_0xe9ed('0x18')],_0x4fc718);_0x1e6144(_this[_0xe9ed('0x16')](0x1f4,_0xdbd85c[_0xe9ed('0x18')]));});});};
\ No newline at end of file
index 47e97e9..3a2eff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x309a=['length','./whatsappInteraction.events','save','remove','emit','register'];(function(_0x590b7f,_0x4eee19){var _0x5b8f4c=function(_0x425b65){while(--_0x425b65){_0x590b7f['push'](_0x590b7f['shift']());}};_0x5b8f4c(++_0x4eee19);}(_0x309a,0x109));var _0xa309=function(_0x548891,_0x5498d8){_0x548891=_0x548891-0x0;var _0x2d8f46=_0x309a[_0x548891];return _0x2d8f46;};'use strict';var WhatsappInteractionEvents=require(_0xa309('0x0'));var events=[_0xa309('0x1'),_0xa309('0x2'),'update'];function createListener(_0x58e660,_0x1bcf20){return function(_0xea581b){_0x1bcf20[_0xa309('0x3')](_0x58e660,_0xea581b);};}function removeListener(_0x12a203,_0x1da5a9){return function(){WhatsappInteractionEvents['removeListener'](_0x12a203,_0x1da5a9);};}exports[_0xa309('0x4')]=function(_0x533dc5){for(var _0x596f6a=0x0,_0x190df8=events[_0xa309('0x5')];_0x596f6a<_0x190df8;_0x596f6a++){var _0x4df46d=events[_0x596f6a];var _0x15d478=createListener('whatsappInteraction:'+_0x4df46d,_0x533dc5);WhatsappInteractionEvents['on'](_0x4df46d,_0x15d478);}};
\ No newline at end of file
+var _0x8961=['./whatsappInteraction.events','remove','update','emit','removeListener','register','whatsappInteraction:'];(function(_0xb49cb8,_0x39474b){var _0x879ead=function(_0x596639){while(--_0x596639){_0xb49cb8['push'](_0xb49cb8['shift']());}};_0x879ead(++_0x39474b);}(_0x8961,0x103));var _0x1896=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8961[_0x160c73];return _0xd9302;};'use strict';var WhatsappInteractionEvents=require(_0x1896('0x0'));var events=['save',_0x1896('0x1'),_0x1896('0x2')];function createListener(_0x113c22,_0x106157){return function(_0x31bc4a){_0x106157[_0x1896('0x3')](_0x113c22,_0x31bc4a);};}function removeListener(_0x793b0b,_0x359ee5){return function(){WhatsappInteractionEvents[_0x1896('0x4')](_0x793b0b,_0x359ee5);};}exports[_0x1896('0x5')]=function(_0x44b854){for(var _0x299929=0x0,_0x16f31e=events['length'];_0x299929<_0x16f31e;_0x299929++){var _0x2fe2fb=events[_0x299929];var _0x13c4fc=createListener(_0x1896('0x6')+_0x2fe2fb,_0x44b854);WhatsappInteractionEvents['on'](_0x2fe2fb,_0x13c4fc);}};
\ No newline at end of file
index 463e253..02aaa63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cab=['describe','/:id','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','put','update','/:id/accept','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','isAuthenticated','index','/describe'];(function(_0xf46bd9,_0x322826){var _0x2763c3=function(_0x564f74){while(--_0x564f74){_0xf46bd9['push'](_0xf46bd9['shift']());}};_0x2763c3(++_0x322826);}(_0x2cab,0x101));var _0xb2ca=function(_0x12a275,_0x31c510){_0x12a275=_0x12a275-0x0;var _0x2e63f4=_0x2cab[_0x12a275];return _0x2e63f4;};'use strict';var multer=require(_0xb2ca('0x0'));var util=require(_0xb2ca('0x1'));var path=require('path');var timeout=require(_0xb2ca('0x2'));var express=require(_0xb2ca('0x3'));var router=express[_0xb2ca('0x4')]();var fs_extra=require(_0xb2ca('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xb2ca('0x6'));var config=require(_0xb2ca('0x7'));var controller=require(_0xb2ca('0x8'));router[_0xb2ca('0x9')]('/',auth[_0xb2ca('0xa')](),controller[_0xb2ca('0xb')]);router[_0xb2ca('0x9')](_0xb2ca('0xc'),auth[_0xb2ca('0xa')](),controller[_0xb2ca('0xd')]);router[_0xb2ca('0x9')](_0xb2ca('0xe'),auth['isAuthenticated'](),controller[_0xb2ca('0xf')]);router[_0xb2ca('0x10')]('/',auth[_0xb2ca('0xa')](),interaction['tracked'](_0xb2ca('0x11'),_0xb2ca('0x12')),controller[_0xb2ca('0x13')]);router[_0xb2ca('0x10')](_0xb2ca('0x14'),controller[_0xb2ca('0x15')]);router[_0xb2ca('0x16')]('/:id',auth[_0xb2ca('0xa')](),controller[_0xb2ca('0x17')]);router[_0xb2ca('0x16')](_0xb2ca('0x18'),auth['isAuthenticated'](),controller['accept']);router[_0xb2ca('0x16')]('/:id/reject',auth[_0xb2ca('0xa')](),controller['reject']);router[_0xb2ca('0x19')](_0xb2ca('0xe'),auth[_0xb2ca('0xa')](),controller[_0xb2ca('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xd1a8=['util','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post','whatsapp','/:id/status','status','update','put','/:id/accept','reject','delete','destroy','exports','multer'];(function(_0x22eb96,_0x3c2d8d){var _0x5e1adf=function(_0x22e392){while(--_0x22e392){_0x22eb96['push'](_0x22eb96['shift']());}};_0x5e1adf(++_0x3c2d8d);}(_0xd1a8,0x103));var _0x8d1a=function(_0x221c0f,_0x396a11){_0x221c0f=_0x221c0f-0x0;var _0x4647ad=_0xd1a8[_0x221c0f];return _0x4647ad;};'use strict';var multer=require(_0x8d1a('0x0'));var util=require(_0x8d1a('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8d1a('0x2'));var router=express['Router']();var fs_extra=require(_0x8d1a('0x3'));var auth=require(_0x8d1a('0x4'));var interaction=require(_0x8d1a('0x5'));var config=require(_0x8d1a('0x6'));var controller=require(_0x8d1a('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8d1a('0x8')]);router[_0x8d1a('0x9')](_0x8d1a('0xa'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0xc')]);router[_0x8d1a('0x9')](_0x8d1a('0xd'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0xe')]);router[_0x8d1a('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x8d1a('0x10'),'whatsappmessage:create'),controller['create']);router[_0x8d1a('0xf')](_0x8d1a('0x11'),controller[_0x8d1a('0x12')]);router['put'](_0x8d1a('0xd'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0x13')]);router[_0x8d1a('0x14')](_0x8d1a('0x15'),auth['isAuthenticated'](),controller['accept']);router[_0x8d1a('0x14')]('/:id/reject',auth[_0x8d1a('0xb')](),controller[_0x8d1a('0x16')]);router[_0x8d1a('0x17')](_0x8d1a('0xd'),auth[_0x8d1a('0xb')](),controller[_0x8d1a('0x18')]);module[_0x8d1a('0x19')]=router;
\ No newline at end of file
index aef4a9a..b0d5722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10f9=['medium','BOOLEAN','ENUM','out','STRING','DATE','sequelize','exports','TEXT'];(function(_0x54e1c6,_0x2aaf27){var _0x460a01=function(_0xf2bc45){while(--_0xf2bc45){_0x54e1c6['push'](_0x54e1c6['shift']());}};_0x460a01(++_0x2aaf27);}(_0x10f9,0x69));var _0x910f=function(_0x12998d,_0x31bb7a){_0x12998d=_0x12998d-0x0;var _0x480756=_0x10f9[_0x12998d];return _0x480756;};'use strict';var Sequelize=require(_0x910f('0x0'));module[_0x910f('0x1')]={'body':{'type':Sequelize[_0x910f('0x2')](_0x910f('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x910f('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x910f('0x5')]('in',_0x910f('0x6')),'defaultValue':_0x910f('0x6'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0x910f('0x7')]},'readAt':{'type':Sequelize[_0x910f('0x8')]},'secret':{'type':Sequelize[_0x910f('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x910f('0x7')]},'providerResponse':{'type':Sequelize[_0x910f('0x2')]}};
\ No newline at end of file
+var _0xcfab=['sequelize','TEXT','BOOLEAN','out','STRING','DATE'];(function(_0x462999,_0x24d200){var _0x4b1366=function(_0x1fa353){while(--_0x1fa353){_0x462999['push'](_0x462999['shift']());}};_0x4b1366(++_0x24d200);}(_0xcfab,0x1e0));var _0xbcfa=function(_0x49770e,_0x50aea9){_0x49770e=_0x49770e-0x0;var _0x45d552=_0xcfab[_0x49770e];return _0x45d552;};'use strict';var Sequelize=require(_0xbcfa('0x0'));module['exports']={'body':{'type':Sequelize[_0xbcfa('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xbcfa('0x2')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xbcfa('0x3')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize[_0xbcfa('0x4')]},'readAt':{'type':Sequelize[_0xbcfa('0x5')]},'secret':{'type':Sequelize[_0xbcfa('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xbcfa('0x1')]}};
\ No newline at end of file
index c4ab1e4..52b413e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6cd=['debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','end','stack','name','send','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','include','rows','params','merge','find','create','update','body','destroy','describe','accept','whatsapp','read','format','UserId','user','agent','get','WhatsappInteractionId','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','contact','User','email','internal','interface','SIP/%s','channel','EventManager','acceptmessage','whatsapp-interactions','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','fullname','rejectmessage','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','messageId','WhatsappAccount,\x20%s,\x20%s,\x20%s','twilio','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','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','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','client','http','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent'];(function(_0x3485de,_0x319486){var _0x21551f=function(_0x239f28){while(--_0x239f28){_0x3485de['push'](_0x3485de['shift']());}};_0x21551f(++_0x319486);}(_0xa6cd,0x64));var _0xda6c=function(_0x22d19b,_0x2ae63c){_0x22d19b=_0x22d19b-0x0;var _0x220d85=_0xa6cd[_0x22d19b];return _0x220d85;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xda6c('0x0'));var zipdir=require(_0xda6c('0x1'));var jsonpatch=require(_0xda6c('0x2'));var rp=require(_0xda6c('0x3'));var moment=require(_0xda6c('0x4'));var BPromise=require(_0xda6c('0x5'));var Mustache=require(_0xda6c('0x6'));var util=require(_0xda6c('0x7'));var path=require(_0xda6c('0x8'));var sox=require(_0xda6c('0x9'));var csv=require(_0xda6c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xda6c('0xb'));var squel=require('squel');var crypto=require(_0xda6c('0xc'));var jsforce=require(_0xda6c('0xd'));var deskjs=require(_0xda6c('0xe'));var toCsv=require(_0xda6c('0xa'));var querystring=require(_0xda6c('0xf'));var Papa=require('papaparse');var Redis=require(_0xda6c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xda6c('0x11'));var as=require(_0xda6c('0x12'));var hardwareService=require(_0xda6c('0x13'));var logger=require(_0xda6c('0x14'))(_0xda6c('0x15'));var utils=require(_0xda6c('0x16'));var config=require(_0xda6c('0x17'));var licenseUtil=require(_0xda6c('0x18'));var db=require(_0xda6c('0x19'))['db'];config[_0xda6c('0x1a')]=_[_0xda6c('0x1b')](config[_0xda6c('0x1a')],{'host':_0xda6c('0x1c'),'port':0x18eb});var socket=require(_0xda6c('0x1d'))(new Redis(config[_0xda6c('0x1a')]));require(_0xda6c('0x1e'))[_0xda6c('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xda6c('0x20')][_0xda6c('0x21')]({'port':0x232c});var client9002=jayson[_0xda6c('0x20')][_0xda6c('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x571db6,_0x400a19,_0x221f33,_0x3efebc){return new BPromise(function(_0x4adb29,_0x5b8a6f){var _0xf5b7bd=_0x3efebc||client;return _0xf5b7bd[_0xda6c('0x22')](_0x571db6,_0x221f33)[_0xda6c('0x23')](function(_0x54ebb0){logger[_0xda6c('0x24')](_0xda6c('0x25'),_0x400a19,_0xda6c('0x26'));logger[_0xda6c('0x27')](_0xda6c('0x28'),_0x400a19,_0xda6c('0x26'),JSON['stringify'](_0x54ebb0));if(_0x54ebb0[_0xda6c('0x29')]){if(_0x54ebb0['error'][_0xda6c('0x2a')]===0x1f4){logger[_0xda6c('0x29')](_0xda6c('0x25'),_0x400a19,_0x54ebb0[_0xda6c('0x29')][_0xda6c('0x2b')]);return _0x5b8a6f(_0x54ebb0[_0xda6c('0x29')]['message']);}logger[_0xda6c('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x400a19,_0x54ebb0[_0xda6c('0x29')][_0xda6c('0x2b')]);return _0x4adb29(_0x54ebb0['error'][_0xda6c('0x2b')]);}else{logger[_0xda6c('0x24')](_0xda6c('0x25'),_0x400a19,_0xda6c('0x26'));_0x4adb29(_0x54ebb0[_0xda6c('0x2c')][_0xda6c('0x2b')]);}})[_0xda6c('0x2d')](function(_0x20786e){logger[_0xda6c('0x29')](_0xda6c('0x25'),_0x400a19,_0x20786e);_0x5b8a6f(_0x20786e);});});}function respondWithStatusCode(_0xba8296,_0xe6634a){_0xe6634a=_0xe6634a||0xcc;return function(_0x264786){if(_0x264786){return _0xba8296[_0xda6c('0x2e')](_0xe6634a);}return _0xba8296[_0xda6c('0x2f')](_0xe6634a)['end']();};}function respondWithResult(_0xcb0a0f,_0x40ea75){_0x40ea75=_0x40ea75||0xc8;return function(_0x4d259c){if(_0x4d259c){return _0xcb0a0f['status'](_0x40ea75)[_0xda6c('0x30')](_0x4d259c);}};}function respondWithFilteredResult(_0x5c37cb,_0x529260){return function(_0x2f9efb){if(_0x2f9efb){var _0x43aacf=typeof _0x529260['offset']===_0xda6c('0x31')&&typeof _0x529260[_0xda6c('0x32')]===_0xda6c('0x31');var _0xe59127=_0x2f9efb['count'];var _0x151af9=_0x43aacf?0x0:_0x529260[_0xda6c('0x33')];var _0x23aa9a=_0x43aacf?_0x2f9efb[_0xda6c('0x34')]:_0x529260[_0xda6c('0x33')]+_0x529260[_0xda6c('0x32')];var _0x1f0cd9;if(_0x23aa9a>=_0xe59127){_0x23aa9a=_0xe59127;_0x1f0cd9=0xc8;}else{_0x1f0cd9=0xce;}_0x5c37cb[_0xda6c('0x2f')](_0x1f0cd9);return _0x5c37cb[_0xda6c('0x35')](_0xda6c('0x36'),_0x151af9+'-'+_0x23aa9a+'/'+_0xe59127)[_0xda6c('0x30')](_0x2f9efb);}return null;};}function patchUpdates(_0x5061a7){return function(_0x53b2dd){try{jsonpatch[_0xda6c('0x37')](_0x53b2dd,_0x5061a7,!![]);}catch(_0x28452c){return BPromise[_0xda6c('0x38')](_0x28452c);}return _0x53b2dd[_0xda6c('0x39')]();};}function saveUpdates(_0x134387,_0x313c56){return function(_0xdbbd2f){if(_0xdbbd2f){return _0xdbbd2f['update'](_0x134387)[_0xda6c('0x23')](function(_0x365f66){return _0x365f66;});}return null;};}function removeEntity(_0x1ca14b,_0x53d097){return function(_0x2ee662){if(_0x2ee662){return _0x2ee662['destroy']()[_0xda6c('0x23')](function(){_0x1ca14b[_0xda6c('0x2f')](0xcc)[_0xda6c('0x3a')]();});}};}function handleEntityNotFound(_0x43bbc3,_0x1815e0){return function(_0x58da2e){if(!_0x58da2e){_0x43bbc3[_0xda6c('0x2e')](0x194);}return _0x58da2e;};}function handleError(_0x274688,_0x5c5ec0){_0x5c5ec0=_0x5c5ec0||0x1f4;return function(_0x3260ee){logger[_0xda6c('0x29')](_0x3260ee[_0xda6c('0x3b')]);if(_0x3260ee[_0xda6c('0x3c')]){delete _0x3260ee[_0xda6c('0x3c')];}_0x274688[_0xda6c('0x2f')](_0x5c5ec0)[_0xda6c('0x3d')](_0x3260ee);};}exports['index']=function(_0x2a8593,_0x5cef1a){var _0x4df6bd={},_0x5c5ed3={},_0x433b6e={'count':0x0,'rows':[]};var _0x10f3fa=_[_0xda6c('0x3e')](db[_0xda6c('0x3f')][_0xda6c('0x40')],function(_0x1f5208){return{'name':_0x1f5208[_0xda6c('0x41')],'type':_0x1f5208[_0xda6c('0x42')][_0xda6c('0x43')]};});_0x5c5ed3[_0xda6c('0x44')]=_[_0xda6c('0x3e')](_0x10f3fa,_0xda6c('0x3c'));_0x5c5ed3['query']=_[_0xda6c('0x45')](_0x2a8593[_0xda6c('0x46')]);_0x5c5ed3[_0xda6c('0x47')]=_['intersection'](_0x5c5ed3[_0xda6c('0x44')],_0x5c5ed3['query']);_0x4df6bd[_0xda6c('0x48')]=_[_0xda6c('0x49')](_0x5c5ed3[_0xda6c('0x44')],qs[_0xda6c('0x4a')](_0x2a8593[_0xda6c('0x46')]['fields']));_0x4df6bd['attributes']=_0x4df6bd[_0xda6c('0x48')][_0xda6c('0x4b')]?_0x4df6bd['attributes']:_0x5c5ed3[_0xda6c('0x44')];if(!_0x2a8593['query']['hasOwnProperty'](_0xda6c('0x4c'))){_0x4df6bd['limit']=qs[_0xda6c('0x32')](_0x2a8593[_0xda6c('0x46')][_0xda6c('0x32')]);_0x4df6bd[_0xda6c('0x33')]=qs['offset'](_0x2a8593[_0xda6c('0x46')][_0xda6c('0x33')]);}_0x4df6bd[_0xda6c('0x4d')]=qs[_0xda6c('0x4e')](_0x2a8593[_0xda6c('0x46')][_0xda6c('0x4e')]);_0x4df6bd[_0xda6c('0x4f')]=qs[_0xda6c('0x47')](_['pick'](_0x2a8593[_0xda6c('0x46')],_0x5c5ed3['filters']),_0x10f3fa);if(_0x2a8593[_0xda6c('0x46')][_0xda6c('0x50')]){_0x4df6bd[_0xda6c('0x4f')]=_['merge'](_0x4df6bd['where'],{'$or':_[_0xda6c('0x3e')](_0x10f3fa,function(_0x3e1d2a){if(_0x3e1d2a['type']!==_0xda6c('0x51')){var _0x24904b={};_0x24904b[_0x3e1d2a[_0xda6c('0x3c')]]={'$like':'%'+_0x2a8593[_0xda6c('0x46')]['filter']+'%'};return _0x24904b;}})});}_0x4df6bd=_['merge']({},_0x4df6bd,_0x2a8593[_0xda6c('0x52')]);var _0x387fe3={'where':_0x4df6bd[_0xda6c('0x4f')]};return db[_0xda6c('0x3f')]['count'](_0x387fe3)[_0xda6c('0x23')](function(_0x1ca9bd){_0x433b6e[_0xda6c('0x34')]=_0x1ca9bd;if(_0x2a8593[_0xda6c('0x46')][_0xda6c('0x53')]){_0x4df6bd[_0xda6c('0x54')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x4df6bd);})['then'](function(_0x44ee02){_0x433b6e[_0xda6c('0x55')]=_0x44ee02;return _0x433b6e;})[_0xda6c('0x23')](respondWithFilteredResult(_0x5cef1a,_0x4df6bd))[_0xda6c('0x2d')](handleError(_0x5cef1a,null));};exports['show']=function(_0x4921ef,_0x570b5f){var _0x3c7458={'raw':!![],'where':{'id':_0x4921ef[_0xda6c('0x56')]['id']}},_0x19dab7={};_0x19dab7[_0xda6c('0x44')]=_[_0xda6c('0x45')](db[_0xda6c('0x3f')][_0xda6c('0x40')]);_0x19dab7[_0xda6c('0x46')]=_['keys'](_0x4921ef['query']);_0x19dab7['filters']=_[_0xda6c('0x49')](_0x19dab7['model'],_0x19dab7[_0xda6c('0x46')]);_0x3c7458[_0xda6c('0x48')]=_[_0xda6c('0x49')](_0x19dab7['model'],qs[_0xda6c('0x4a')](_0x4921ef[_0xda6c('0x46')]['fields']));_0x3c7458[_0xda6c('0x48')]=_0x3c7458[_0xda6c('0x48')][_0xda6c('0x4b')]?_0x3c7458[_0xda6c('0x48')]:_0x19dab7[_0xda6c('0x44')];if(_0x4921ef[_0xda6c('0x46')][_0xda6c('0x53')]){_0x3c7458['include']=[{'all':!![]}];}_0x3c7458=_[_0xda6c('0x57')]({},_0x3c7458,_0x4921ef[_0xda6c('0x52')]);return db[_0xda6c('0x3f')][_0xda6c('0x58')](_0x3c7458)['then'](handleEntityNotFound(_0x570b5f,null))[_0xda6c('0x23')](respondWithResult(_0x570b5f,null))['catch'](handleError(_0x570b5f,null));};exports[_0xda6c('0x59')]=function(_0x39d7fb,_0x563683){return db[_0xda6c('0x3f')][_0xda6c('0x59')](_0x39d7fb['body'],{})[_0xda6c('0x23')](respondWithResult(_0x563683,0xc9))[_0xda6c('0x2d')](handleError(_0x563683,null));};exports[_0xda6c('0x5a')]=function(_0x314c93,_0x18f8d1){if(_0x314c93[_0xda6c('0x5b')]['id']){delete _0x314c93[_0xda6c('0x5b')]['id'];}return db['WhatsappMessage'][_0xda6c('0x58')]({'where':{'id':_0x314c93[_0xda6c('0x56')]['id']}})[_0xda6c('0x23')](handleEntityNotFound(_0x18f8d1,null))[_0xda6c('0x23')](saveUpdates(_0x314c93[_0xda6c('0x5b')],null))[_0xda6c('0x23')](respondWithResult(_0x18f8d1,null))[_0xda6c('0x2d')](handleError(_0x18f8d1,null));};exports[_0xda6c('0x5c')]=function(_0x118721,_0x4816ec){return db['WhatsappMessage'][_0xda6c('0x58')]({'where':{'id':_0x118721['params']['id']}})['then'](handleEntityNotFound(_0x4816ec,null))[_0xda6c('0x23')](removeEntity(_0x4816ec,null))[_0xda6c('0x2d')](handleError(_0x4816ec,null));};exports['describe']=function(_0x10a516,_0xb67289){return db['WhatsappMessage'][_0xda6c('0x5d')]()[_0xda6c('0x23')](respondWithResult(_0xb67289,null))[_0xda6c('0x2d')](handleError(_0xb67289,null));};var interaction_log=require(_0xda6c('0x14'))('whatsapp-interactions');exports[_0xda6c('0x5e')]=function(_0x19f035,_0x2553ce,_0x2cf182){var _0x1872f6={'agent':{},'channel':_0xda6c('0x5f')};if(_0x19f035[_0xda6c('0x5b')]['id']){delete _0x19f035[_0xda6c('0x5b')]['id'];}_0x19f035['body'][_0xda6c('0x60')]=!![];_0x19f035['body']['readAt']=moment()[_0xda6c('0x61')]('YYYY-MM-DD\x20HH:mm:ss');_0x19f035[_0xda6c('0x5b')][_0xda6c('0x62')]=_0x19f035[_0xda6c('0x5b')][_0xda6c('0x62')]||_0x19f035[_0xda6c('0x63')]['id'];_0x1872f6[_0xda6c('0x64')]['id']=_0x19f035[_0xda6c('0x5b')][_0xda6c('0x62')];return db[_0xda6c('0x3f')][_0xda6c('0x58')]({'where':{'id':_0x19f035['params']['id'],'UserId':null}})[_0xda6c('0x23')](handleEntityNotFound(_0x2553ce,null))[_0xda6c('0x23')](saveUpdates(_0x19f035[_0xda6c('0x5b')],null))[_0xda6c('0x23')](function(_0x4d98ce){if(_0x4d98ce){_0x1872f6[_0xda6c('0x2b')]=_0x4d98ce[_0xda6c('0x65')]({'plain':!![]});return db['WhatsappInteraction'][_0xda6c('0x58')]({'where':{'id':_0x4d98ce[_0xda6c('0x66')]}});}return null;})[_0xda6c('0x23')](handleEntityNotFound(_0x2553ce,null))[_0xda6c('0x23')](function(_0x1e44a1){if(_0x1e44a1){return _0x1e44a1['update']({'UserId':_0x19f035['body'][_0xda6c('0x62')],'read1stAt':_[_0xda6c('0x67')](_0x1e44a1[_0xda6c('0x68')])?moment()[_0xda6c('0x61')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xda6c('0x23')](function(_0x4710a1){if(_0x4710a1){_0x1872f6[_0xda6c('0x69')]=_0x4710a1[_0xda6c('0x65')]({'plain':!![]});interaction_log[_0xda6c('0x24')](_0xda6c('0x6a'),_0x19f035[_0xda6c('0x63')]['id'],_0x19f035['user']['name'],_0x19f035[_0xda6c('0x63')][_0xda6c('0x6b')],_0x1872f6[_0xda6c('0x69')]['id'],_0x19f035[_0xda6c('0x5b')]?JSON['stringify'](_0x19f035[_0xda6c('0x5b')]):_0xda6c('0x6c'));return respondWithRpcPromise(_0xda6c('0x6d'),_0xda6c('0x6e'),_0x1872f6);}return null;})[_0xda6c('0x23')](function(_0x38faca){var _0x3c0232='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x38faca[_0xda6c('0x2b')][_0xda6c('0x6f')];return db[_0xda6c('0x70')][_0xda6c('0x46')](_0x3c0232,{'type':db[_0xda6c('0x71')][_0xda6c('0x72')]['SELECT'],'raw':!![]})[_0xda6c('0x23')](function(_0x3cb9e4){return _0x3cb9e4;});})[_0xda6c('0x23')](function(_0x3b7822){if(_0x3b7822){_0x1872f6[_0xda6c('0x2b')][_0xda6c('0x73')]=_0x3b7822[0x0];if(!_0x19f035[_0xda6c('0x5b')]['UserId'])return;return db[_0xda6c('0x74')][_0xda6c('0x58')]({'where':{'id':_0x19f035[_0xda6c('0x5b')][_0xda6c('0x62')],'role':_0xda6c('0x64')},'attributes':['id',_0xda6c('0x3c'),'fullname',_0xda6c('0x75'),_0xda6c('0x76')],'raw':!![]});}return null;})['then'](function(_0x3f4482){if(!_0x3f4482)return null;_0x1872f6['message'][_0xda6c('0x64')]=_0x3f4482;return _0x1872f6;})[_0xda6c('0x23')](function(_0x20375d){if(_0x20375d){if(_0x19f035[_0xda6c('0x5b')]['manual']){_0x1872f6[_0xda6c('0x2b')][_0xda6c('0x77')]=util[_0xda6c('0x61')](_0xda6c('0x78'),_0x19f035['user'][_0xda6c('0x3c')]);_0x1872f6['message']['channel']=_0x1872f6[_0xda6c('0x79')];_0x1872f6['message']['event']=_0xda6c('0x5e');return respondWithRpcPromise(_0xda6c('0x7a'),_0xda6c('0x7a'),{'event':_0xda6c('0x7b'),'message':_0x1872f6[_0xda6c('0x2b')]},client9002)[_0xda6c('0x23')](function(){return _0x1872f6;});}return _0x1872f6;}return null;})[_0xda6c('0x23')](respondWithResult(_0x2553ce,null))['catch'](handleError(_0x2553ce,null));};var interaction_log=require('../../config/logger')(_0xda6c('0x7c'));exports['reject']=function(_0x163ac8,_0x1ddd07,_0x4890e9){var _0x3e6fc3={'agent':{},'channel':_0xda6c('0x5f')};if(_0x163ac8['body']['id']){delete _0x163ac8['body']['id'];}_0x163ac8['body'][_0xda6c('0x62')]=_0x163ac8[_0xda6c('0x5b')][_0xda6c('0x62')]||_0x163ac8[_0xda6c('0x63')]['id'];_0x3e6fc3[_0xda6c('0x64')]['id']=_0x163ac8[_0xda6c('0x5b')][_0xda6c('0x62')];return db[_0xda6c('0x3f')]['find']({'where':{'id':_0x163ac8[_0xda6c('0x56')]['id'],'UserId':null}})[_0xda6c('0x23')](handleEntityNotFound(_0x1ddd07,null))['then'](function(_0x344d87){if(_0x344d87){_0x3e6fc3['message']=_0x344d87[_0xda6c('0x65')]({'plain':!![]});return db[_0xda6c('0x7d')]['find']({'where':{'id':_0x344d87[_0xda6c('0x66')]}});}return null;})[_0xda6c('0x23')](handleEntityNotFound(_0x1ddd07,null))['then'](function(_0x33ea67){if(_0x33ea67){_0x3e6fc3[_0xda6c('0x69')]=_0x33ea67[_0xda6c('0x65')]({'plain':!![]});interaction_log[_0xda6c('0x24')](_0xda6c('0x7e'),_0x163ac8[_0xda6c('0x63')]['id'],_0x163ac8[_0xda6c('0x63')][_0xda6c('0x3c')],_0x163ac8[_0xda6c('0x63')][_0xda6c('0x6b')],_0x3e6fc3[_0xda6c('0x69')]['id'],_0x163ac8[_0xda6c('0x5b')]?JSON[_0xda6c('0x7f')](_0x163ac8[_0xda6c('0x5b')]):_0xda6c('0x6c'));return respondWithRpcPromise('RejectMessage',_0xda6c('0x80'),_0x3e6fc3);}return null;})[_0xda6c('0x23')](function(_0xb877f7){var _0x37df99=_0xda6c('0x81')+_0xb877f7[_0xda6c('0x2b')][_0xda6c('0x6f')];return db[_0xda6c('0x70')][_0xda6c('0x46')](_0x37df99,{'type':db[_0xda6c('0x71')]['QueryTypes']['SELECT'],'raw':!![]})[_0xda6c('0x23')](function(_0x1f0265){return _0x1f0265;});})[_0xda6c('0x23')](function(_0x1fab03){if(_0x1fab03){_0x3e6fc3[_0xda6c('0x2b')][_0xda6c('0x73')]=_0x1fab03[0x0];if(!_0x163ac8['body'][_0xda6c('0x62')])return;return db[_0xda6c('0x74')][_0xda6c('0x58')]({'where':{'id':_0x163ac8[_0xda6c('0x5b')][_0xda6c('0x62')],'role':'agent'},'attributes':['id',_0xda6c('0x3c'),_0xda6c('0x82'),_0xda6c('0x75'),_0xda6c('0x76')],'raw':!![]});}return null;})['then'](function(_0xeadad1){if(!_0xeadad1)return null;_0x3e6fc3['message'][_0xda6c('0x64')]=_0xeadad1;return _0x3e6fc3;})[_0xda6c('0x23')](function(_0x52bc79){if(_0x52bc79){_0x52bc79['message']['interface']=util[_0xda6c('0x61')](_0xda6c('0x78'),_0x163ac8['user']['name']);_0x52bc79['message']['channel']=_0x3e6fc3[_0xda6c('0x79')];_0x52bc79[_0xda6c('0x2b')]['event']=_0xda6c('0x38');respondWithRpcPromise(_0xda6c('0x7a'),_0xda6c('0x7a'),{'event':_0xda6c('0x83'),'message':_0x52bc79['message']},client9002);return _0x3e6fc3;}return null;})['then'](respondWithResult(_0x1ddd07,null))[_0xda6c('0x2d')](handleError(_0x1ddd07,null));};exports[_0xda6c('0x2f')]=function(_0x31f113,_0x2dac30,_0x4a7d16){if(_0x31f113[_0xda6c('0x5b')]['id']){delete _0x31f113[_0xda6c('0x5b')]['id'];}var _0x5d3eb4;return db['WhatsappMessage'][_0xda6c('0x58')]({'where':{'id':_0x31f113[_0xda6c('0x56')]['id']}})[_0xda6c('0x23')](handleEntityNotFound(_0x2dac30,null))[_0xda6c('0x23')](function(_0x16af0f){if(_0x16af0f){_0x5d3eb4=_0x16af0f;return db['WhatsappAccount'][_0xda6c('0x58')]({'where':{'id':_0x16af0f[_0xda6c('0x84')]}});}})['then'](handleEntityNotFound(_0x2dac30,null))[_0xda6c('0x23')](function(_0x5d237f){if(_0x5d237f){logger[_0xda6c('0x27')](_0xda6c('0x85'),_0xda6c('0x2f'),_0xda6c('0x86'),_0x5d237f['type'],util[_0xda6c('0x87')](_0x31f113[_0xda6c('0x5b')],{'showHidden':![],'depth':null}));switch(_0x5d237f[_0xda6c('0x42')]){case'twilio':if(_0x31f113[_0xda6c('0x5b')]['MessageSid']&&_0x31f113[_0xda6c('0x5b')]['MessageSid']===_0x5d3eb4[_0xda6c('0x88')]&&_0x31f113[_0xda6c('0x5b')]['MessageStatus']&&_0x31f113[_0xda6c('0x5b')]['MessageStatus']===_0xda6c('0x60')){return _0x5d3eb4[_0xda6c('0x5a')]({'read':!![]});}else{logger[_0xda6c('0x29')](_0xda6c('0x89'),_0xda6c('0x2f'),_0xda6c('0x8a'),util[_0xda6c('0x87')](_0x31f113[_0xda6c('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x5d3eb4;}})['then'](respondWithResult(_0x2dac30,null))['catch'](handleError(_0x2dac30,null));};
\ No newline at end of file
+var _0x440f=['localhost','./whatsappMessage.socket','register','jayson/promise','client','http','then','debug','request\x20sent','code','WhatsappMessage,\x20%s,\x20%s','error','message','info','sendStatus','status','end','json','undefined','limit','count','set','apply','reject','save','update','destroy','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','../../config/logger','whatsapp-interactions','whatsapp','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','WhatsappInteractionId','isNil','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','agent','fullname','email','internal','interface','SIP/%s','channel','accept','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','RejectMessage','contact','motionChannel','event','rejectmessage','WhatsppMessage,\x20%s,\x20%s,\x20%s','twilio','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis'];(function(_0x29df9a,_0x42aff3){var _0x3a8e96=function(_0x70fbe7){while(--_0x70fbe7){_0x29df9a['push'](_0x29df9a['shift']());}};_0x3a8e96(++_0x42aff3);}(_0x440f,0xfc));var _0xf440=function(_0xc9fc3d,_0x539e30){_0xc9fc3d=_0xc9fc3d-0x0;var _0xbc4866=_0x440f[_0xc9fc3d];return _0xbc4866;};'use strict';var emlformat=require(_0xf440('0x0'));var rimraf=require(_0xf440('0x1'));var zipdir=require(_0xf440('0x2'));var jsonpatch=require(_0xf440('0x3'));var rp=require(_0xf440('0x4'));var moment=require(_0xf440('0x5'));var BPromise=require(_0xf440('0x6'));var Mustache=require(_0xf440('0x7'));var util=require(_0xf440('0x8'));var path=require(_0xf440('0x9'));var sox=require('sox');var csv=require(_0xf440('0xa'));var ejs=require(_0xf440('0xb'));var fs=require('fs');var fs_extra=require(_0xf440('0xc'));var _=require(_0xf440('0xd'));var squel=require(_0xf440('0xe'));var crypto=require('crypto');var jsforce=require(_0xf440('0xf'));var deskjs=require(_0xf440('0x10'));var toCsv=require(_0xf440('0xa'));var querystring=require(_0xf440('0x11'));var Papa=require('papaparse');var Redis=require(_0xf440('0x12'));var authService=require(_0xf440('0x13'));var qs=require(_0xf440('0x14'));var as=require(_0xf440('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf440('0x16'));var utils=require(_0xf440('0x17'));var config=require(_0xf440('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xf440('0x19'))['db'];config['redis']=_[_0xf440('0x1a')](config[_0xf440('0x1b')],{'host':_0xf440('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf440('0x1b')]));require(_0xf440('0x1d'))[_0xf440('0x1e')](socket);var jayson=require(_0xf440('0x1f'));var client=jayson[_0xf440('0x20')][_0xf440('0x21')]({'port':0x232c});var client9002=jayson['client'][_0xf440('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1436ce,_0x2faa7f,_0x3afb5d,_0x36d3d2){return new BPromise(function(_0xaf6b1c,_0x15c6d0){var _0x5560d7=_0x36d3d2||client;return _0x5560d7['request'](_0x1436ce,_0x3afb5d)[_0xf440('0x22')](function(_0x392d25){logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x2faa7f,'request\x20sent');logger[_0xf440('0x23')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2faa7f,_0xf440('0x24'),JSON['stringify'](_0x392d25));if(_0x392d25['error']){if(_0x392d25['error'][_0xf440('0x25')]===0x1f4){logger['error'](_0xf440('0x26'),_0x2faa7f,_0x392d25[_0xf440('0x27')][_0xf440('0x28')]);return _0x15c6d0(_0x392d25['error'][_0xf440('0x28')]);}logger[_0xf440('0x27')]('WhatsappMessage,\x20%s,\x20%s',_0x2faa7f,_0x392d25[_0xf440('0x27')][_0xf440('0x28')]);return _0xaf6b1c(_0x392d25[_0xf440('0x27')][_0xf440('0x28')]);}else{logger[_0xf440('0x29')]('WhatsappMessage,\x20%s,\x20%s',_0x2faa7f,_0xf440('0x24'));_0xaf6b1c(_0x392d25['result'][_0xf440('0x28')]);}})['catch'](function(_0x288de3){logger[_0xf440('0x27')](_0xf440('0x26'),_0x2faa7f,_0x288de3);_0x15c6d0(_0x288de3);});});}function respondWithStatusCode(_0x4495c7,_0x3de6e7){_0x3de6e7=_0x3de6e7||0xcc;return function(_0x13f114){if(_0x13f114){return _0x4495c7[_0xf440('0x2a')](_0x3de6e7);}return _0x4495c7[_0xf440('0x2b')](_0x3de6e7)[_0xf440('0x2c')]();};}function respondWithResult(_0x104164,_0x13f8d1){_0x13f8d1=_0x13f8d1||0xc8;return function(_0x4bb853){if(_0x4bb853){return _0x104164[_0xf440('0x2b')](_0x13f8d1)[_0xf440('0x2d')](_0x4bb853);}};}function respondWithFilteredResult(_0x20ab54,_0xf44ebc){return function(_0x38f609){if(_0x38f609){var _0x5746f3=typeof _0xf44ebc['offset']===_0xf440('0x2e')&&typeof _0xf44ebc[_0xf440('0x2f')]===_0xf440('0x2e');var _0x2b7918=_0x38f609[_0xf440('0x30')];var _0x593c83=_0x5746f3?0x0:_0xf44ebc['offset'];var _0x4dd2ff=_0x5746f3?_0x38f609['count']:_0xf44ebc['offset']+_0xf44ebc[_0xf440('0x2f')];var _0x10da8e;if(_0x4dd2ff>=_0x2b7918){_0x4dd2ff=_0x2b7918;_0x10da8e=0xc8;}else{_0x10da8e=0xce;}_0x20ab54[_0xf440('0x2b')](_0x10da8e);return _0x20ab54[_0xf440('0x31')]('Content-Range',_0x593c83+'-'+_0x4dd2ff+'/'+_0x2b7918)[_0xf440('0x2d')](_0x38f609);}return null;};}function patchUpdates(_0x2136aa){return function(_0x3fab46){try{jsonpatch[_0xf440('0x32')](_0x3fab46,_0x2136aa,!![]);}catch(_0x1296e3){return BPromise[_0xf440('0x33')](_0x1296e3);}return _0x3fab46[_0xf440('0x34')]();};}function saveUpdates(_0x2c91e2,_0x496dab){return function(_0x3df944){if(_0x3df944){return _0x3df944[_0xf440('0x35')](_0x2c91e2)['then'](function(_0x5a131b){return _0x5a131b;});}return null;};}function removeEntity(_0x51b204,_0x1d5784){return function(_0x4f4a23){if(_0x4f4a23){return _0x4f4a23[_0xf440('0x36')]()[_0xf440('0x22')](function(){_0x51b204[_0xf440('0x2b')](0xcc)[_0xf440('0x2c')]();});}};}function handleEntityNotFound(_0x275638,_0x4648d0){return function(_0x3d8a99){if(!_0x3d8a99){_0x275638[_0xf440('0x2a')](0x194);}return _0x3d8a99;};}function handleError(_0x5d0413,_0x382cec){_0x382cec=_0x382cec||0x1f4;return function(_0x5b6a5f){logger[_0xf440('0x27')](_0x5b6a5f['stack']);if(_0x5b6a5f[_0xf440('0x37')]){delete _0x5b6a5f[_0xf440('0x37')];}_0x5d0413[_0xf440('0x2b')](_0x382cec)[_0xf440('0x38')](_0x5b6a5f);};}exports[_0xf440('0x39')]=function(_0x27264c,_0x34e1cb){var _0x6b3a5a={},_0x3f40e2={},_0x344f8a={'count':0x0,'rows':[]};var _0x708db5=_[_0xf440('0x3a')](db[_0xf440('0x3b')][_0xf440('0x3c')],function(_0x2502d9){return{'name':_0x2502d9['fieldName'],'type':_0x2502d9[_0xf440('0x3d')][_0xf440('0x3e')]};});_0x3f40e2[_0xf440('0x3f')]=_[_0xf440('0x3a')](_0x708db5,'name');_0x3f40e2['query']=_[_0xf440('0x40')](_0x27264c[_0xf440('0x41')]);_0x3f40e2[_0xf440('0x42')]=_[_0xf440('0x43')](_0x3f40e2['model'],_0x3f40e2[_0xf440('0x41')]);_0x6b3a5a[_0xf440('0x44')]=_['intersection'](_0x3f40e2[_0xf440('0x3f')],qs[_0xf440('0x45')](_0x27264c[_0xf440('0x41')][_0xf440('0x45')]));_0x6b3a5a['attributes']=_0x6b3a5a['attributes'][_0xf440('0x46')]?_0x6b3a5a['attributes']:_0x3f40e2[_0xf440('0x3f')];if(!_0x27264c[_0xf440('0x41')][_0xf440('0x47')](_0xf440('0x48'))){_0x6b3a5a[_0xf440('0x2f')]=qs['limit'](_0x27264c['query'][_0xf440('0x2f')]);_0x6b3a5a[_0xf440('0x49')]=qs[_0xf440('0x49')](_0x27264c[_0xf440('0x41')][_0xf440('0x49')]);}_0x6b3a5a[_0xf440('0x4a')]=qs[_0xf440('0x4b')](_0x27264c[_0xf440('0x41')][_0xf440('0x4b')]);_0x6b3a5a[_0xf440('0x4c')]=qs['filters'](_[_0xf440('0x4d')](_0x27264c[_0xf440('0x41')],_0x3f40e2[_0xf440('0x42')]),_0x708db5);if(_0x27264c[_0xf440('0x41')][_0xf440('0x4e')]){_0x6b3a5a['where']=_['merge'](_0x6b3a5a[_0xf440('0x4c')],{'$or':_[_0xf440('0x3a')](_0x708db5,function(_0x355496){if(_0x355496[_0xf440('0x3d')]!==_0xf440('0x4f')){var _0x3e5da8={};_0x3e5da8[_0x355496[_0xf440('0x37')]]={'$like':'%'+_0x27264c[_0xf440('0x41')][_0xf440('0x4e')]+'%'};return _0x3e5da8;}})});}_0x6b3a5a=_[_0xf440('0x50')]({},_0x6b3a5a,_0x27264c[_0xf440('0x51')]);var _0x2267e0={'where':_0x6b3a5a['where']};return db[_0xf440('0x3b')][_0xf440('0x30')](_0x2267e0)[_0xf440('0x22')](function(_0x5f31cc){_0x344f8a[_0xf440('0x30')]=_0x5f31cc;if(_0x27264c[_0xf440('0x41')][_0xf440('0x52')]){_0x6b3a5a[_0xf440('0x53')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xf440('0x54')](_0x6b3a5a);})[_0xf440('0x22')](function(_0x46e1a7){_0x344f8a[_0xf440('0x55')]=_0x46e1a7;return _0x344f8a;})['then'](respondWithFilteredResult(_0x34e1cb,_0x6b3a5a))[_0xf440('0x56')](handleError(_0x34e1cb,null));};exports[_0xf440('0x57')]=function(_0x158cf7,_0x23acbb){var _0x29b9fe={'raw':!![],'where':{'id':_0x158cf7[_0xf440('0x58')]['id']}},_0x28bd64={};_0x28bd64[_0xf440('0x3f')]=_[_0xf440('0x40')](db[_0xf440('0x3b')][_0xf440('0x3c')]);_0x28bd64[_0xf440('0x41')]=_[_0xf440('0x40')](_0x158cf7[_0xf440('0x41')]);_0x28bd64[_0xf440('0x42')]=_['intersection'](_0x28bd64[_0xf440('0x3f')],_0x28bd64['query']);_0x29b9fe[_0xf440('0x44')]=_['intersection'](_0x28bd64['model'],qs[_0xf440('0x45')](_0x158cf7[_0xf440('0x41')][_0xf440('0x45')]));_0x29b9fe[_0xf440('0x44')]=_0x29b9fe['attributes']['length']?_0x29b9fe['attributes']:_0x28bd64[_0xf440('0x3f')];if(_0x158cf7[_0xf440('0x41')][_0xf440('0x52')]){_0x29b9fe[_0xf440('0x53')]=[{'all':!![]}];}_0x29b9fe=_['merge']({},_0x29b9fe,_0x158cf7[_0xf440('0x51')]);return db[_0xf440('0x3b')][_0xf440('0x59')](_0x29b9fe)[_0xf440('0x22')](handleEntityNotFound(_0x23acbb,null))[_0xf440('0x22')](respondWithResult(_0x23acbb,null))[_0xf440('0x56')](handleError(_0x23acbb,null));};exports[_0xf440('0x5a')]=function(_0x4615e9,_0x5e2fbb){return db['WhatsappMessage'][_0xf440('0x5a')](_0x4615e9[_0xf440('0x5b')],{})[_0xf440('0x22')](respondWithResult(_0x5e2fbb,0xc9))[_0xf440('0x56')](handleError(_0x5e2fbb,null));};exports['update']=function(_0x249383,_0x65d894){if(_0x249383[_0xf440('0x5b')]['id']){delete _0x249383['body']['id'];}return db[_0xf440('0x3b')]['find']({'where':{'id':_0x249383[_0xf440('0x58')]['id']}})['then'](handleEntityNotFound(_0x65d894,null))['then'](saveUpdates(_0x249383[_0xf440('0x5b')],null))[_0xf440('0x22')](respondWithResult(_0x65d894,null))[_0xf440('0x56')](handleError(_0x65d894,null));};exports[_0xf440('0x36')]=function(_0x2eb626,_0x1773e4){return db[_0xf440('0x3b')][_0xf440('0x59')]({'where':{'id':_0x2eb626['params']['id']}})['then'](handleEntityNotFound(_0x1773e4,null))['then'](removeEntity(_0x1773e4,null))[_0xf440('0x56')](handleError(_0x1773e4,null));};exports['describe']=function(_0x3f819e,_0x206209){return db[_0xf440('0x3b')][_0xf440('0x5c')]()[_0xf440('0x22')](respondWithResult(_0x206209,null))[_0xf440('0x56')](handleError(_0x206209,null));};var interaction_log=require(_0xf440('0x5d'))(_0xf440('0x5e'));exports['accept']=function(_0x531e1f,_0x2c7e6a,_0x2b73b6){var _0x516b0a={'agent':{},'channel':_0xf440('0x5f')};if(_0x531e1f['body']['id']){delete _0x531e1f[_0xf440('0x5b')]['id'];}_0x531e1f[_0xf440('0x5b')][_0xf440('0x60')]=!![];_0x531e1f[_0xf440('0x5b')]['readAt']=moment()[_0xf440('0x61')](_0xf440('0x62'));_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')]=_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')]||_0x531e1f[_0xf440('0x64')]['id'];_0x516b0a['agent']['id']=_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')];return db[_0xf440('0x3b')][_0xf440('0x59')]({'where':{'id':_0x531e1f[_0xf440('0x58')]['id'],'UserId':null}})[_0xf440('0x22')](handleEntityNotFound(_0x2c7e6a,null))[_0xf440('0x22')](saveUpdates(_0x531e1f[_0xf440('0x5b')],null))['then'](function(_0x158b7f){if(_0x158b7f){_0x516b0a[_0xf440('0x28')]=_0x158b7f[_0xf440('0x65')]({'plain':!![]});return db[_0xf440('0x66')][_0xf440('0x59')]({'where':{'id':_0x158b7f[_0xf440('0x67')]}});}return null;})[_0xf440('0x22')](handleEntityNotFound(_0x2c7e6a,null))[_0xf440('0x22')](function(_0x3cb87a){if(_0x3cb87a){return _0x3cb87a[_0xf440('0x35')]({'UserId':_0x531e1f[_0xf440('0x5b')]['UserId'],'read1stAt':_[_0xf440('0x68')](_0x3cb87a[_0xf440('0x69')])?moment()[_0xf440('0x61')](_0xf440('0x62')):undefined});}return null;})['then'](function(_0x2e6cd7){if(_0x2e6cd7){_0x516b0a['interaction']=_0x2e6cd7[_0xf440('0x65')]({'plain':!![]});interaction_log[_0xf440('0x29')](_0xf440('0x6a'),_0x531e1f[_0xf440('0x64')]['id'],_0x531e1f['user'][_0xf440('0x37')],_0x531e1f[_0xf440('0x64')][_0xf440('0x6b')],_0x516b0a[_0xf440('0x6c')]['id'],_0x531e1f[_0xf440('0x5b')]?JSON['stringify'](_0x531e1f[_0xf440('0x5b')]):'null');return respondWithRpcPromise(_0xf440('0x6d'),_0xf440('0x6e'),_0x516b0a);}return null;})[_0xf440('0x22')](function(_0x3c8318){var _0x25754a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3c8318['message'][_0xf440('0x6f')];return db[_0xf440('0x70')]['query'](_0x25754a,{'type':db[_0xf440('0x71')][_0xf440('0x72')][_0xf440('0x73')],'raw':!![]})[_0xf440('0x22')](function(_0x87c8e0){return _0x87c8e0;});})['then'](function(_0x34a2c4){if(_0x34a2c4){_0x516b0a[_0xf440('0x28')]['contact']=_0x34a2c4[0x0];if(!_0x531e1f['body']['UserId'])return;return db[_0xf440('0x74')][_0xf440('0x59')]({'where':{'id':_0x531e1f[_0xf440('0x5b')][_0xf440('0x63')],'role':_0xf440('0x75')},'attributes':['id',_0xf440('0x37'),_0xf440('0x76'),_0xf440('0x77'),_0xf440('0x78')],'raw':!![]});}return null;})['then'](function(_0x5b0bc0){if(!_0x5b0bc0)return null;_0x516b0a[_0xf440('0x28')][_0xf440('0x75')]=_0x5b0bc0;return _0x516b0a;})[_0xf440('0x22')](function(_0x327d7a){if(_0x327d7a){if(_0x531e1f[_0xf440('0x5b')]['manual']){_0x516b0a[_0xf440('0x28')][_0xf440('0x79')]=util[_0xf440('0x61')](_0xf440('0x7a'),_0x531e1f['user'][_0xf440('0x37')]);_0x516b0a[_0xf440('0x28')]['channel']=_0x516b0a['channel'];_0x516b0a[_0xf440('0x28')]['motionChannel']=_0x516b0a[_0xf440('0x7b')];_0x516b0a[_0xf440('0x28')]['event']=_0xf440('0x7c');return respondWithRpcPromise(_0xf440('0x7d'),'EventManager',{'event':'acceptmessage','message':_0x516b0a[_0xf440('0x28')]},client9002)[_0xf440('0x22')](function(){return _0x516b0a;});}return _0x516b0a;}return null;})[_0xf440('0x22')](respondWithResult(_0x2c7e6a,null))[_0xf440('0x56')](handleError(_0x2c7e6a,null));};var interaction_log=require(_0xf440('0x5d'))('whatsapp-interactions');exports[_0xf440('0x33')]=function(_0x4503ac,_0x80a56d,_0x35a371){var _0x237f21={'agent':{},'channel':_0xf440('0x5f')};if(_0x4503ac[_0xf440('0x5b')]['id']){delete _0x4503ac['body']['id'];}_0x4503ac['body'][_0xf440('0x63')]=_0x4503ac['body'][_0xf440('0x63')]||_0x4503ac['user']['id'];_0x237f21[_0xf440('0x75')]['id']=_0x4503ac[_0xf440('0x5b')][_0xf440('0x63')];return db[_0xf440('0x3b')]['find']({'where':{'id':_0x4503ac['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x80a56d,null))[_0xf440('0x22')](function(_0x43afa6){if(_0x43afa6){_0x237f21[_0xf440('0x28')]=_0x43afa6[_0xf440('0x65')]({'plain':!![]});return db['WhatsappInteraction'][_0xf440('0x59')]({'where':{'id':_0x43afa6[_0xf440('0x67')]}});}return null;})[_0xf440('0x22')](handleEntityNotFound(_0x80a56d,null))[_0xf440('0x22')](function(_0x52a47a){if(_0x52a47a){_0x237f21['interaction']=_0x52a47a[_0xf440('0x65')]({'plain':!![]});interaction_log['info'](_0xf440('0x7e'),_0x4503ac[_0xf440('0x64')]['id'],_0x4503ac[_0xf440('0x64')][_0xf440('0x37')],_0x4503ac['user'][_0xf440('0x6b')],_0x237f21['interaction']['id'],_0x4503ac['body']?JSON[_0xf440('0x7f')](_0x4503ac[_0xf440('0x5b')]):_0xf440('0x80'));return respondWithRpcPromise(_0xf440('0x81'),'rejectMessage',_0x237f21);}return null;})[_0xf440('0x22')](function(_0x1798bd){var _0xc3731d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1798bd[_0xf440('0x28')]['ContactId'];return db[_0xf440('0x70')]['query'](_0xc3731d,{'type':db[_0xf440('0x71')][_0xf440('0x72')]['SELECT'],'raw':!![]})[_0xf440('0x22')](function(_0x1ee692){return _0x1ee692;});})[_0xf440('0x22')](function(_0x260e2f){if(_0x260e2f){_0x237f21[_0xf440('0x28')][_0xf440('0x82')]=_0x260e2f[0x0];if(!_0x4503ac['body'][_0xf440('0x63')])return;return db[_0xf440('0x74')][_0xf440('0x59')]({'where':{'id':_0x4503ac[_0xf440('0x5b')][_0xf440('0x63')],'role':_0xf440('0x75')},'attributes':['id',_0xf440('0x37'),_0xf440('0x76'),_0xf440('0x77'),'internal'],'raw':!![]});}return null;})[_0xf440('0x22')](function(_0x3db988){if(!_0x3db988)return null;_0x237f21['message'][_0xf440('0x75')]=_0x3db988;return _0x237f21;})['then'](function(_0x4af69f){if(_0x4af69f){_0x4af69f[_0xf440('0x28')]['interface']=util['format'](_0xf440('0x7a'),_0x4503ac[_0xf440('0x64')][_0xf440('0x37')]);_0x4af69f[_0xf440('0x28')]['channel']=_0x237f21['channel'];_0x4af69f[_0xf440('0x28')][_0xf440('0x83')]=_0x237f21[_0xf440('0x7b')];_0x4af69f[_0xf440('0x28')][_0xf440('0x84')]=_0xf440('0x33');respondWithRpcPromise(_0xf440('0x7d'),_0xf440('0x7d'),{'event':_0xf440('0x85'),'message':_0x4af69f['message']},client9002);return _0x237f21;}return null;})[_0xf440('0x22')](respondWithResult(_0x80a56d,null))[_0xf440('0x56')](handleError(_0x80a56d,null));};exports[_0xf440('0x2b')]=function(_0x162729,_0x199d79,_0x5856b5){if(_0x162729[_0xf440('0x5b')]['id']){delete _0x162729[_0xf440('0x5b')]['id'];}var _0x238517;return db[_0xf440('0x3b')][_0xf440('0x59')]({'where':{'id':_0x162729['params']['id']}})[_0xf440('0x22')](handleEntityNotFound(_0x199d79,null))['then'](function(_0x130213){if(_0x130213){_0x238517=_0x130213;return db['WhatsappAccount'][_0xf440('0x59')]({'where':{'id':_0x130213['WhatsappAccountId']}});}})['then'](handleEntityNotFound(_0x199d79,null))[_0xf440('0x22')](function(_0x2c17cb){if(_0x2c17cb){logger[_0xf440('0x23')](_0xf440('0x86'),'status','received\x20delivery\x20report\x20from',_0x2c17cb[_0xf440('0x3d')],util['inspect'](_0x162729[_0xf440('0x5b')],{'showHidden':![],'depth':null}));switch(_0x2c17cb[_0xf440('0x3d')]){case _0xf440('0x87'):if(_0x162729[_0xf440('0x5b')]['MessageSid']&&_0x162729[_0xf440('0x5b')]['MessageSid']===_0x238517[_0xf440('0x88')]&&_0x162729[_0xf440('0x5b')][_0xf440('0x89')]&&_0x162729['body'][_0xf440('0x89')]==='read'){return _0x238517[_0xf440('0x35')]({'read':!![]});}else{logger[_0xf440('0x27')](_0xf440('0x8a'),_0xf440('0x2b'),_0xf440('0x87'),util[_0xf440('0x8b')](_0x162729[_0xf440('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x238517;}})[_0xf440('0x22')](respondWithResult(_0x199d79,null))['catch'](handleError(_0x199d79,null));};
\ No newline at end of file
index dc7ea10..4630c72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e81=['emit','hook','exports','events','../../mysqldb','WhatsappMessage','remove'];(function(_0x53e2ed,_0x468938){var _0x3c9461=function(_0x4e0bf8){while(--_0x4e0bf8){_0x53e2ed['push'](_0x53e2ed['shift']());}};_0x3c9461(++_0x468938);}(_0x4e81,0x1bc));var _0x14e8=function(_0x40822a,_0x582b60){_0x40822a=_0x40822a-0x0;var _0x357420=_0x4e81[_0x40822a];return _0x357420;};'use strict';var EventEmitter=require(_0x14e8('0x0'));var WhatsappMessage=require(_0x14e8('0x1'))['db'][_0x14e8('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x14e8('0x3')};function emitEvent(_0x3a988b){return function(_0x224121,_0x436444,_0x325325){WhatsappMessageEvents[_0x14e8('0x4')](_0x3a988b+':'+_0x224121['id'],_0x224121);WhatsappMessageEvents['emit'](_0x3a988b,_0x224121);_0x325325(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage[_0x14e8('0x5')](e,emitEvent(event));}}module[_0x14e8('0x6')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x9f4d=['events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x50a004,_0x193d84){var _0x5e9992=function(_0x3c8c37){while(--_0x3c8c37){_0x50a004['push'](_0x50a004['shift']());}};_0x5e9992(++_0x193d84);}(_0x9f4d,0xb0));var _0xd9f4=function(_0x5c814d,_0x4d81c7){_0x5c814d=_0x5c814d-0x0;var _0x89b71=_0x9f4d[_0x5c814d];return _0x89b71;};'use strict';var EventEmitter=require(_0xd9f4('0x0'));var WhatsappMessage=require(_0xd9f4('0x1'))['db'][_0xd9f4('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0xd9f4('0x3')](0x0);var events={'afterCreate':_0xd9f4('0x4'),'afterUpdate':_0xd9f4('0x5'),'afterDestroy':_0xd9f4('0x6')};function emitEvent(_0x273eb9){return function(_0x7dccea,_0x5e0ab0,_0x2c39cb){WhatsappMessageEvents['emit'](_0x273eb9+':'+_0x7dccea['id'],_0x7dccea);WhatsappMessageEvents[_0xd9f4('0x7')](_0x273eb9,_0x7dccea);_0x2c39cb(null);};}for(var e in events){if(events[_0xd9f4('0x8')](e)){var event=events[e];WhatsappMessage[_0xd9f4('0x9')](e,emitEvent(event));}}module[_0xd9f4('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
index 42c883d..ede0871 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f37=['utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','path','../../config/environment','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid','catch','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','finally'];(function(_0x3be782,_0x55efc9){var _0x3e2233=function(_0x5ce7ea){while(--_0x5ce7ea){_0x3be782['push'](_0x3be782['shift']());}};_0x3e2233(++_0x55efc9);}(_0x0f37,0x1c4));var _0x70f3=function(_0x238b73,_0x5df76f){_0x238b73=_0x238b73-0x0;var _0x5966d9=_0x0f37[_0x238b73];return _0x5966d9;};'use strict';var _=require('lodash');var util=require(_0x70f3('0x0'));var logger=require(_0x70f3('0x1'))('api');var moment=require(_0x70f3('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x70f3('0x3'));var rimraf=require('rimraf');var config=require(_0x70f3('0x4'));var attributes=require('./whatsappMessage.attributes');module[_0x70f3('0x5')]=function(_0xef78a,_0x5c9873){return _0xef78a[_0x70f3('0x6')](_0x70f3('0x7'),attributes,{'tableName':_0x70f3('0x8'),'paranoid':![],'indexes':[{'name':_0x70f3('0x9'),'fields':[_0x70f3('0x9')]},{'name':_0x70f3('0xa'),'fields':[_0x70f3('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5daace,_0x34bb0e,_0x581ac4){var _0x305ac9=_0xef78a[_0x70f3('0xc')];var _0x5ed10f=_0x5daace[_0x70f3('0xd')]({'plain':!![]});if(_0x5ed10f[_0x70f3('0xe')][_0x70f3('0xf')]()==='in'||_0x5ed10f[_0x70f3('0xe')][_0x70f3('0xf')]()===_0x70f3('0x10')&&!_0x5ed10f[_0x70f3('0x11')]&&!_[_0x70f3('0x12')](_0x5ed10f[_0x70f3('0x13')])){_0x305ac9[_0x70f3('0x14')][_0x70f3('0x15')]({'where':{'id':_0x5ed10f[_0x70f3('0x16')]}})[_0x70f3('0x17')](function(_0x15990e){if(_0x15990e){_0x15990e[_0x70f3('0x18')]({'lastMsgAt':_0x5ed10f[_0x70f3('0x19')],'lastMsgDirection':_0x5ed10f['direction'][_0x70f3('0xf')]()});}})['catch'](function(_0x46e123){console[_0x70f3('0x1a')](_0x46e123);});}if(_0x5ed10f[_0x70f3('0xe')]===_0x70f3('0x10')&&!_0x5ed10f[_0x70f3('0x11')]){var _0x9e8194;_0x305ac9[_0x70f3('0x1b')][_0x70f3('0x1c')]({'where':{'id':_0x5ed10f[_0x70f3('0x1d')]},'raw':!![]})[_0x70f3('0x17')](function(_0x434e26){_0x9e8194=_0x434e26;if(_0x9e8194&&_0x9e8194[_0x70f3('0x1e')]){switch(_0x9e8194[_0x70f3('0x1e')]){case _0x70f3('0x1f'):var _0x277166=require('twilio');if(_0x9e8194[_0x70f3('0x20')]&&_0x9e8194[_0x70f3('0x21')]&&_0x9e8194[_0x70f3('0x22')]){var _0x2dec65=new _0x277166(_0x9e8194['accountSid'],_0x9e8194[_0x70f3('0x21')]);_0x2dec65[_0x70f3('0x23')]['create']({'body':_0x5ed10f[_0x70f3('0xb')],'to':_0x70f3('0x24')+_0x5ed10f[_0x70f3('0x22')],'from':_0x70f3('0x24')+_0x9e8194['phone'],'statusCallback':_0x9e8194[_0x70f3('0x25')]+_0x70f3('0x26')+_0x5ed10f['id']+_0x70f3('0x27')+_0x9e8194[_0x70f3('0x28')]})['then'](function(_0x1018c5){if(_0x1018c5[_0x70f3('0x29')]){return _0x5daace[_0x70f3('0x18')]({'messageId':_0x1018c5[_0x70f3('0x29')]});}})[_0x70f3('0x2a')](function(_0x122368){logger[_0x70f3('0x1a')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','twilio',util[_0x70f3('0x2b')](_0x122368,{'showHidden':![],'depth':null}));});}else{logger[_0x70f3('0x1a')](_0x70f3('0x2c'),_0x70f3('0x2d'),'twilio',_0x70f3('0x2e'));}break;}}})[_0x70f3('0x2f')](function(){_0x581ac4();});}else{_0x581ac4();}}},'charset':_0x70f3('0x30'),'collate':_0x70f3('0x31')});};
\ No newline at end of file
+var _0x2162=['/api/whatsapp/messages/','/status?token=','token','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','finally','util','api','moment','request-promise','path','../../config/environment','./whatsappMessage.attributes','exports','whatsapp_messages','messageId','fti_whatsapp_messages','get','direction','toLowerCase','out','secret','isNil','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','update','catch','error','WhatsappAccount','find','WhatsappAccountId','then','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:'];(function(_0x46bee1,_0x25d4d4){var _0x279156=function(_0x311aba){while(--_0x311aba){_0x46bee1['push'](_0x46bee1['shift']());}};_0x279156(++_0x25d4d4);}(_0x2162,0x110));var _0x2216=function(_0x1bca2e,_0x2e5dbc){_0x1bca2e=_0x1bca2e-0x0;var _0x11ab8d=_0x2162[_0x1bca2e];return _0x11ab8d;};'use strict';var _=require('lodash');var util=require(_0x2216('0x0'));var logger=require('../../config/logger')(_0x2216('0x1'));var moment=require(_0x2216('0x2'));var BPromise=require('bluebird');var rp=require(_0x2216('0x3'));var fs=require('fs');var path=require(_0x2216('0x4'));var rimraf=require('rimraf');var config=require(_0x2216('0x5'));var attributes=require(_0x2216('0x6'));module[_0x2216('0x7')]=function(_0x524a11,_0x39378b){return _0x524a11['define']('WhatsappMessage',attributes,{'tableName':_0x2216('0x8'),'paranoid':![],'indexes':[{'name':_0x2216('0x9'),'fields':[_0x2216('0x9')]},{'name':_0x2216('0xa'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5ef687,_0x4b16f8,_0x26087b){var _0x291559=_0x524a11['models'];var _0x31d9b7=_0x5ef687[_0x2216('0xb')]({'plain':!![]});if(_0x31d9b7[_0x2216('0xc')][_0x2216('0xd')]()==='in'||_0x31d9b7['direction'][_0x2216('0xd')]()===_0x2216('0xe')&&!_0x31d9b7[_0x2216('0xf')]&&!_[_0x2216('0x10')](_0x31d9b7[_0x2216('0x11')])){_0x291559[_0x2216('0x12')][_0x2216('0x13')]({'where':{'id':_0x31d9b7[_0x2216('0x14')]}})['then'](function(_0xf273d8){if(_0xf273d8){_0xf273d8[_0x2216('0x15')]({'lastMsgAt':_0x31d9b7['createdAt'],'lastMsgDirection':_0x31d9b7[_0x2216('0xc')]['toLowerCase']()});}})[_0x2216('0x16')](function(_0x9e6c0b){console[_0x2216('0x17')](_0x9e6c0b);});}if(_0x31d9b7[_0x2216('0xc')]===_0x2216('0xe')&&!_0x31d9b7[_0x2216('0xf')]){var _0x1aa3c9;_0x291559[_0x2216('0x18')][_0x2216('0x19')]({'where':{'id':_0x31d9b7[_0x2216('0x1a')]},'raw':!![]})[_0x2216('0x1b')](function(_0x280c71){_0x1aa3c9=_0x280c71;if(_0x1aa3c9&&_0x1aa3c9[_0x2216('0x1c')]){switch(_0x1aa3c9[_0x2216('0x1c')]){case _0x2216('0x1d'):var _0x4ea6c6=require(_0x2216('0x1d'));if(_0x1aa3c9[_0x2216('0x1e')]&&_0x1aa3c9[_0x2216('0x1f')]&&_0x1aa3c9[_0x2216('0x20')]){var _0x47a40f=new _0x4ea6c6(_0x1aa3c9[_0x2216('0x1e')],_0x1aa3c9[_0x2216('0x1f')]);_0x47a40f[_0x2216('0x21')][_0x2216('0x22')]({'body':_0x31d9b7['body'],'to':'whatsapp:'+_0x31d9b7['phone'],'from':_0x2216('0x23')+_0x1aa3c9[_0x2216('0x20')],'statusCallback':_0x1aa3c9['remote']+_0x2216('0x24')+_0x31d9b7['id']+_0x2216('0x25')+_0x1aa3c9[_0x2216('0x26')]})[_0x2216('0x1b')](function(_0x281531){if(_0x281531['sid']){return _0x5ef687[_0x2216('0x15')]({'messageId':_0x281531[_0x2216('0x27')]});}})[_0x2216('0x16')](function(_0x15fded){logger['error'](_0x2216('0x28'),_0x2216('0x29'),_0x2216('0x1d'),util[_0x2216('0x2a')](_0x15fded,{'showHidden':![],'depth':null}));});}else{logger[_0x2216('0x17')](_0x2216('0x28'),_0x2216('0x29'),_0x2216('0x1d'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;}}})[_0x2216('0x2b')](function(){_0x26087b();});}else{_0x26087b();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ffcaaf4..804e6b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b4b=['error','code','message','WhatsappMessage,\x20%s,\x20%s','catch','CreateWhatsappMessage','WhatsappMessage','create','body','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x24d839,_0x12f458){var _0x40b17c=function(_0xc1d6e3){while(--_0xc1d6e3){_0x24d839['push'](_0x24d839['shift']());}};_0x40b17c(++_0x12f458);}(_0x7b4b,0x169));var _0xb7b4=function(_0x153e7d,_0x10a35f){_0x153e7d=_0x153e7d-0x0;var _0x3c22dd=_0x7b4b[_0x153e7d];return _0x3c22dd;};'use strict';var _=require(_0xb7b4('0x0'));var util=require(_0xb7b4('0x1'));var moment=require(_0xb7b4('0x2'));var BPromise=require(_0xb7b4('0x3'));var rs=require(_0xb7b4('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb7b4('0x5'))(_0xb7b4('0x6'));var config=require(_0xb7b4('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb7b4('0x8')][_0xb7b4('0x9')]({'port':0x232a});config[_0xb7b4('0xa')]=_[_0xb7b4('0xb')](config['redis'],{'host':_0xb7b4('0xc'),'port':0x18eb});var socket=require(_0xb7b4('0xd'))(new Redis(config[_0xb7b4('0xa')]));require(_0xb7b4('0xe'))[_0xb7b4('0xf')](socket);function respondWithRpcPromise(_0x1c0408,_0x1b788c,_0xd3793e){return new BPromise(function(_0x58ef42,_0x117644){return client[_0xb7b4('0x10')](_0x1c0408,_0xd3793e)[_0xb7b4('0x11')](function(_0x13e13d){logger[_0xb7b4('0x12')]('WhatsappMessage,\x20%s,\x20%s',_0x1b788c,_0xb7b4('0x13'));logger[_0xb7b4('0x14')](_0xb7b4('0x15'),_0x1b788c,_0xb7b4('0x13'),JSON[_0xb7b4('0x16')](_0x13e13d));if(_0x13e13d[_0xb7b4('0x17')]){if(_0x13e13d[_0xb7b4('0x17')][_0xb7b4('0x18')]===0x1f4){logger[_0xb7b4('0x17')]('WhatsappMessage,\x20%s,\x20%s',_0x1b788c,_0x13e13d['error']['message']);return _0x117644(_0x13e13d['error'][_0xb7b4('0x19')]);}logger[_0xb7b4('0x17')](_0xb7b4('0x1a'),_0x1b788c,_0x13e13d[_0xb7b4('0x17')][_0xb7b4('0x19')]);return _0x58ef42(_0x13e13d[_0xb7b4('0x17')][_0xb7b4('0x19')]);}else{logger[_0xb7b4('0x12')](_0xb7b4('0x1a'),_0x1b788c,_0xb7b4('0x13'));_0x58ef42(_0x13e13d['result'][_0xb7b4('0x19')]);}})[_0xb7b4('0x1b')](function(_0x439875){logger[_0xb7b4('0x17')](_0xb7b4('0x1a'),_0x1b788c,_0x439875);_0x117644(_0x439875);});});}exports[_0xb7b4('0x1c')]=function(_0x1f39c1){var _0x14ca51=this;return new Promise(function(_0x5dd564,_0x3550c7){return db[_0xb7b4('0x1d')][_0xb7b4('0x1e')](_0x1f39c1[_0xb7b4('0x1f')],{'raw':_0x1f39c1['options']?_0x1f39c1['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3b3658){logger['info'](_0xb7b4('0x1c'),_0x1f39c1);logger[_0xb7b4('0x14')](_0xb7b4('0x1c'),_0x1f39c1,JSON['stringify'](_0x3b3658));_0x5dd564(_0x3b3658);})[_0xb7b4('0x1b')](function(_0x44db29){logger[_0xb7b4('0x17')]('CreateWhatsappMessage',_0x44db29['message'],_0x1f39c1);_0x3550c7(_0x14ca51['error'](0x1f4,_0x44db29[_0xb7b4('0x19')]));});});};
\ No newline at end of file
+var _0x9726=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','defaults','redis','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','create','body','options','raw','CreateWhatsappMessage','debug','lodash'];(function(_0x1c7187,_0x32311e){var _0x2028dc=function(_0x1127dc){while(--_0x1127dc){_0x1c7187['push'](_0x1c7187['shift']());}};_0x2028dc(++_0x32311e);}(_0x9726,0x1ef));var _0x6972=function(_0x1911b7,_0x41c61f){_0x1911b7=_0x1911b7-0x0;var _0x3fc8a6=_0x9726[_0x1911b7];return _0x3fc8a6;};'use strict';var _=require(_0x6972('0x0'));var util=require('util');var moment=require(_0x6972('0x1'));var BPromise=require(_0x6972('0x2'));var rs=require(_0x6972('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6972('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6972('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6972('0x6'));var client=jayson[_0x6972('0x7')][_0x6972('0x8')]({'port':0x232a});config['redis']=_[_0x6972('0x9')](config[_0x6972('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x6972('0xb'))(new Redis(config[_0x6972('0xa')]));require(_0x6972('0xc'))[_0x6972('0xd')](socket);function respondWithRpcPromise(_0x829eb2,_0x3f7428,_0x23eee4){return new BPromise(function(_0x41af2b,_0x2fd12b){return client[_0x6972('0xe')](_0x829eb2,_0x23eee4)[_0x6972('0xf')](function(_0x876c29){logger[_0x6972('0x10')](_0x6972('0x11'),_0x3f7428,_0x6972('0x12'));logger['debug'](_0x6972('0x13'),_0x3f7428,'request\x20sent',JSON[_0x6972('0x14')](_0x876c29));if(_0x876c29[_0x6972('0x15')]){if(_0x876c29[_0x6972('0x15')][_0x6972('0x16')]===0x1f4){logger[_0x6972('0x15')](_0x6972('0x11'),_0x3f7428,_0x876c29[_0x6972('0x15')]['message']);return _0x2fd12b(_0x876c29['error']['message']);}logger[_0x6972('0x15')](_0x6972('0x11'),_0x3f7428,_0x876c29['error'][_0x6972('0x17')]);return _0x41af2b(_0x876c29[_0x6972('0x15')]['message']);}else{logger[_0x6972('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x3f7428,_0x6972('0x12'));_0x41af2b(_0x876c29['result'][_0x6972('0x17')]);}})[_0x6972('0x18')](function(_0x3a98d4){logger[_0x6972('0x15')](_0x6972('0x11'),_0x3f7428,_0x3a98d4);_0x2fd12b(_0x3a98d4);});});}exports['CreateWhatsappMessage']=function(_0x2e14d5){var _0x19d5e8=this;return new Promise(function(_0x3db8a2,_0x46b5ea){return db['WhatsappMessage'][_0x6972('0x19')](_0x2e14d5[_0x6972('0x1a')],{'raw':_0x2e14d5[_0x6972('0x1b')]?_0x2e14d5[_0x6972('0x1b')][_0x6972('0x1c')]===undefined?!![]:![]:!![]})[_0x6972('0xf')](function(_0x36851b){logger[_0x6972('0x10')](_0x6972('0x1d'),_0x2e14d5);logger[_0x6972('0x1e')](_0x6972('0x1d'),_0x2e14d5,JSON[_0x6972('0x14')](_0x36851b));_0x3db8a2(_0x36851b);})[_0x6972('0x18')](function(_0x50212f){logger[_0x6972('0x15')](_0x6972('0x1d'),_0x50212f[_0x6972('0x17')],_0x2e14d5);_0x46b5ea(_0x19d5e8[_0x6972('0x15')](0x1f4,_0x50212f['message']));});});};
\ No newline at end of file
index 991a170..de505d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f8a=['remove','update','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save'];(function(_0x1e9713,_0x1df5a3){var _0x5830fa=function(_0x273453){while(--_0x273453){_0x1e9713['push'](_0x1e9713['shift']());}};_0x5830fa(++_0x1df5a3);}(_0x4f8a,0x16e));var _0xa4f8=function(_0xa7e872,_0x1e3c50){_0xa7e872=_0xa7e872-0x0;var _0x20b8e4=_0x4f8a[_0xa7e872];return _0x20b8e4;};'use strict';var WhatsappMessageEvents=require(_0xa4f8('0x0'));var events=[_0xa4f8('0x1'),_0xa4f8('0x2'),_0xa4f8('0x3')];function createListener(_0x323385,_0xf9cfbd){return function(_0x40aca5){_0xf9cfbd['emit'](_0x323385,_0x40aca5);};}function removeListener(_0x3f3d00,_0x4b9bab){return function(){WhatsappMessageEvents[_0xa4f8('0x4')](_0x3f3d00,_0x4b9bab);};}exports[_0xa4f8('0x5')]=function(_0x293b5b){for(var _0x42bbea=0x0,_0x4ae237=events[_0xa4f8('0x6')];_0x42bbea<_0x4ae237;_0x42bbea++){var _0x4a4eec=events[_0x42bbea];var _0x116a6f=createListener(_0xa4f8('0x7')+_0x4a4eec,_0x293b5b);WhatsappMessageEvents['on'](_0x4a4eec,_0x116a6f);}};
\ No newline at end of file
+var _0xcf1e=['emit','removeListener','register','./whatsappMessage.events','save','remove','update'];(function(_0x37069f,_0x53e870){var _0x400a2b=function(_0x38407a){while(--_0x38407a){_0x37069f['push'](_0x37069f['shift']());}};_0x400a2b(++_0x53e870);}(_0xcf1e,0xc0));var _0xecf1=function(_0x50d7cf,_0x17c27e){_0x50d7cf=_0x50d7cf-0x0;var _0x2f5bd8=_0xcf1e[_0x50d7cf];return _0x2f5bd8;};'use strict';var WhatsappMessageEvents=require(_0xecf1('0x0'));var events=[_0xecf1('0x1'),_0xecf1('0x2'),_0xecf1('0x3')];function createListener(_0x368678,_0x2fffb0){return function(_0x28cbf6){_0x2fffb0[_0xecf1('0x4')](_0x368678,_0x28cbf6);};}function removeListener(_0x53f3af,_0x12d52a){return function(){WhatsappMessageEvents[_0xecf1('0x5')](_0x53f3af,_0x12d52a);};}exports[_0xecf1('0x6')]=function(_0x4dae75){for(var _0x460805=0x0,_0xf2e1c6=events['length'];_0x460805<_0xf2e1c6;_0x460805++){var _0x125d33=events[_0x460805];var _0x5a6ec4=createListener('whatsappMessage:'+_0x125d33,_0x4dae75);WhatsappMessageEvents['on'](_0x125d33,_0x5a6ec4);}};
\ No newline at end of file
index a219e22..7bb2932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfae=['addTeams','addAgents','delete','destroy','removeTeams','removeAgents','exports','util','connect-timeout','express','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMembers','/:id/users','getAgents','post','create','/:id/teams'];(function(_0x59b533,_0x4cdd05){var _0x1a2d7a=function(_0x49a2fa){while(--_0x49a2fa){_0x59b533['push'](_0x59b533['shift']());}};_0x1a2d7a(++_0x4cdd05);}(_0xdfae,0x18d));var _0xedfa=function(_0x188a93,_0xaf57db){_0x188a93=_0x188a93-0x0;var _0x23b40d=_0xdfae[_0x188a93];return _0x23b40d;};'use strict';var multer=require('multer');var util=require(_0xedfa('0x0'));var path=require('path');var timeout=require(_0xedfa('0x1'));var express=require(_0xedfa('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xedfa('0x3'));var config=require(_0xedfa('0x4'));var controller=require(_0xedfa('0x5'));router[_0xedfa('0x6')]('/',auth[_0xedfa('0x7')](),controller[_0xedfa('0x8')]);router[_0xedfa('0x6')](_0xedfa('0x9'),auth[_0xedfa('0x7')](),controller[_0xedfa('0xa')]);router[_0xedfa('0x6')](_0xedfa('0xb'),auth[_0xedfa('0x7')](),controller[_0xedfa('0xc')]);router[_0xedfa('0x6')]('/:id/members',auth['isAuthenticated'](),controller[_0xedfa('0xd')]);router[_0xedfa('0x6')]('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router[_0xedfa('0x6')](_0xedfa('0xe'),auth[_0xedfa('0x7')](),controller[_0xedfa('0xf')]);router[_0xedfa('0x10')]('/',auth[_0xedfa('0x7')](),controller[_0xedfa('0x11')]);router[_0xedfa('0x10')](_0xedfa('0x12'),auth[_0xedfa('0x7')](),controller[_0xedfa('0x13')]);router[_0xedfa('0x10')](_0xedfa('0xe'),auth[_0xedfa('0x7')](),controller[_0xedfa('0x14')]);router['put'](_0xedfa('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xedfa('0x15')](_0xedfa('0xb'),auth['isAuthenticated'](),controller[_0xedfa('0x16')]);router[_0xedfa('0x15')]('/:id/teams',auth[_0xedfa('0x7')](),controller[_0xedfa('0x17')]);router[_0xedfa('0x15')](_0xedfa('0xe'),auth[_0xedfa('0x7')](),controller[_0xedfa('0x18')]);module[_0xedfa('0x19')]=router;
\ No newline at end of file
+var _0x3cb0=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','/describe','describe','/:id','isAuthenticated','getMembers','/:id/teams','getTeams','/:id/users','post','create','addTeams','addAgents','put','update','delete','destroy','removeAgents','multer','express','fs-extra'];(function(_0x417774,_0x1b95e6){var _0x10015d=function(_0x2526b3){while(--_0x2526b3){_0x417774['push'](_0x417774['shift']());}};_0x10015d(++_0x1b95e6);}(_0x3cb0,0xde));var _0x03cb=function(_0x2183d5,_0xd4f81e){_0x2183d5=_0x2183d5-0x0;var _0x50c079=_0x3cb0[_0x2183d5];return _0x50c079;};'use strict';var multer=require(_0x03cb('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x03cb('0x1'));var router=express['Router']();var fs_extra=require(_0x03cb('0x2'));var auth=require(_0x03cb('0x3'));var interaction=require(_0x03cb('0x4'));var config=require(_0x03cb('0x5'));var controller=require(_0x03cb('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x03cb('0x7')](_0x03cb('0x8'),auth['isAuthenticated'](),controller[_0x03cb('0x9')]);router[_0x03cb('0x7')](_0x03cb('0xa'),auth[_0x03cb('0xb')](),controller['show']);router[_0x03cb('0x7')]('/:id/members',auth['isAuthenticated'](),controller[_0x03cb('0xc')]);router[_0x03cb('0x7')](_0x03cb('0xd'),auth['isAuthenticated'](),controller[_0x03cb('0xe')]);router[_0x03cb('0x7')](_0x03cb('0xf'),auth[_0x03cb('0xb')](),controller['getAgents']);router[_0x03cb('0x10')]('/',auth[_0x03cb('0xb')](),controller[_0x03cb('0x11')]);router[_0x03cb('0x10')]('/:id/teams',auth[_0x03cb('0xb')](),controller[_0x03cb('0x12')]);router[_0x03cb('0x10')]('/:id/users',auth[_0x03cb('0xb')](),controller[_0x03cb('0x13')]);router[_0x03cb('0x14')](_0x03cb('0xa'),auth[_0x03cb('0xb')](),controller[_0x03cb('0x15')]);router[_0x03cb('0x16')](_0x03cb('0xa'),auth['isAuthenticated'](),controller[_0x03cb('0x17')]);router['delete'](_0x03cb('0xd'),auth[_0x03cb('0xb')](),controller['removeTeams']);router[_0x03cb('0x16')]('/:id/users',auth[_0x03cb('0xb')](),controller[_0x03cb('0x18')]);module['exports']=router;
\ No newline at end of file
index 4bc602e..98c959f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a9=['ENUM','rrmemory','beepall','roundrobin','STRING','name','INTEGER'];(function(_0x37905c,_0x4d0a7a){var _0x4071c7=function(_0x2c4bb7){while(--_0x2c4bb7){_0x37905c['push'](_0x37905c['shift']());}};_0x4071c7(++_0x4d0a7a);}(_0x18a9,0x15b));var _0x918a=function(_0x3c1105,_0x5c45c1){_0x3c1105=_0x3c1105-0x0;var _0x35e7ab=_0x18a9[_0x3c1105];return _0x35e7ab;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x918a('0x0')],'unique':_0x918a('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x918a('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x918a('0x3')](_0x918a('0x4'),_0x918a('0x5'),_0x918a('0x6'))},'description':{'type':Sequelize[_0x918a('0x0')]}};
\ No newline at end of file
+var _0x1339=['rrmemory','beepall','roundrobin','STRING','name','INTEGER','ENUM'];(function(_0x2b6c0d,_0x99c2d3){var _0x587ed2=function(_0x2e861d){while(--_0x2e861d){_0x2b6c0d['push'](_0x2b6c0d['shift']());}};_0x587ed2(++_0x99c2d3);}(_0x1339,0x1ed));var _0x9133=function(_0x1d090b,_0x1b5756){_0x1d090b=_0x1d090b-0x0;var _0x453475=_0x1339[_0x1d090b];return _0x453475;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x9133('0x0')],'unique':_0x9133('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x9133('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9133('0x3')](_0x9133('0x4'),_0x9133('0x5'),_0x9133('0x6'))},'description':{'type':Sequelize[_0x9133('0x0')]}};
\ No newline at end of file
index c8e5351..cdc7fc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15b4=['options','includeAll','include','findAll','rows','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','hasOwnProperty','order','WhatsappQueueId','UserWhatsappQueue','User','findAndCountAll','UserId','whatsappPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','field','tq.TeamId','from','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','all','union','compact','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','save','update','then','get','WhatsappQueues','UserProfileResource','destroy','error','stack','name','send','index','map','WhatsappQueue','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','VIRTUAL','merge'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x15b4,0x160));var _0x415b=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x15b4[_0x4fbfd9];return _0x31dc94;};'use strict';var emlformat=require(_0x415b('0x0'));var rimraf=require(_0x415b('0x1'));var zipdir=require(_0x415b('0x2'));var jsonpatch=require(_0x415b('0x3'));var rp=require(_0x415b('0x4'));var moment=require(_0x415b('0x5'));var BPromise=require(_0x415b('0x6'));var Mustache=require(_0x415b('0x7'));var util=require('util');var path=require(_0x415b('0x8'));var sox=require('sox');var csv=require(_0x415b('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x415b('0xa'));var crypto=require(_0x415b('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x415b('0x9'));var querystring=require(_0x415b('0xc'));var Papa=require(_0x415b('0xd'));var Redis=require(_0x415b('0xe'));var authService=require(_0x415b('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x415b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x415b('0x11'))(_0x415b('0x12'));var utils=require(_0x415b('0x13'));var config=require(_0x415b('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x415b('0x15')]=_[_0x415b('0x16')](config['redis'],{'host':_0x415b('0x17'),'port':0x18eb});var socket=require(_0x415b('0x18'))(new Redis(config[_0x415b('0x15')]));require('./whatsappQueue.socket')[_0x415b('0x19')](socket);function respondWithStatusCode(_0x20acf0,_0x32af5e){_0x32af5e=_0x32af5e||0xcc;return function(_0x952c4c){if(_0x952c4c){return _0x20acf0[_0x415b('0x1a')](_0x32af5e);}return _0x20acf0[_0x415b('0x1b')](_0x32af5e)[_0x415b('0x1c')]();};}function respondWithResult(_0x4155ab,_0x57a81c){_0x57a81c=_0x57a81c||0xc8;return function(_0x2135b9){if(_0x2135b9){return _0x4155ab[_0x415b('0x1b')](_0x57a81c)[_0x415b('0x1d')](_0x2135b9);}};}function respondWithFilteredResult(_0x476688,_0x181f9a){return function(_0x23ec8b){if(_0x23ec8b){var _0x2db7ec=typeof _0x181f9a[_0x415b('0x1e')]===_0x415b('0x1f')&&typeof _0x181f9a[_0x415b('0x20')]==='undefined';var _0x2a0980=_0x23ec8b[_0x415b('0x21')];var _0x547664=_0x2db7ec?0x0:_0x181f9a[_0x415b('0x1e')];var _0x4fc627=_0x2db7ec?_0x23ec8b[_0x415b('0x21')]:_0x181f9a[_0x415b('0x1e')]+_0x181f9a[_0x415b('0x20')];var _0x10b20b;if(_0x4fc627>=_0x2a0980){_0x4fc627=_0x2a0980;_0x10b20b=0xc8;}else{_0x10b20b=0xce;}_0x476688[_0x415b('0x1b')](_0x10b20b);return _0x476688['set'](_0x415b('0x22'),_0x547664+'-'+_0x4fc627+'/'+_0x2a0980)[_0x415b('0x1d')](_0x23ec8b);}return null;};}function patchUpdates(_0x4e4b08){return function(_0x378fce){try{jsonpatch['apply'](_0x378fce,_0x4e4b08,!![]);}catch(_0x4e9a3d){return BPromise['reject'](_0x4e9a3d);}return _0x378fce[_0x415b('0x23')]();};}function saveUpdates(_0xec30b4,_0x49d26c){return function(_0x1f0860){if(_0x1f0860){return _0x1f0860[_0x415b('0x24')](_0xec30b4)[_0x415b('0x25')](function(_0x2e776c){return _0x2e776c;});}return null;};}function removeEntity(_0x4cc91f,_0x78a267){return function(_0x419791){if(_0x419791){return _0x419791['destroy']()[_0x415b('0x25')](function(){var _0x3d342c=_0x419791[_0x415b('0x26')]({'plain':!![]});var _0x126e38=_0x415b('0x27');return db[_0x415b('0x28')][_0x415b('0x29')]({'where':{'type':_0x126e38,'resourceId':_0x3d342c['id']}})[_0x415b('0x25')](function(){return _0x419791;});})[_0x415b('0x25')](function(){_0x4cc91f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2fe639,_0x461b88){return function(_0x14be02){if(!_0x14be02){_0x2fe639['sendStatus'](0x194);}return _0x14be02;};}function handleError(_0x4eedf4,_0x1634af){_0x1634af=_0x1634af||0x1f4;return function(_0xe445d8){logger[_0x415b('0x2a')](_0xe445d8[_0x415b('0x2b')]);if(_0xe445d8[_0x415b('0x2c')]){delete _0xe445d8[_0x415b('0x2c')];}_0x4eedf4[_0x415b('0x1b')](_0x1634af)[_0x415b('0x2d')](_0xe445d8);};}exports[_0x415b('0x2e')]=function(_0x3f9a23,_0x20dc35){var _0x8e4d70={},_0x216c59={},_0x26b2ac={'count':0x0,'rows':[]};var _0x50c9c8=_[_0x415b('0x2f')](db[_0x415b('0x30')][_0x415b('0x31')],function(_0x5d524b){return{'name':_0x5d524b[_0x415b('0x32')],'type':_0x5d524b[_0x415b('0x33')][_0x415b('0x34')]};});_0x216c59[_0x415b('0x35')]=_['map'](_0x50c9c8,'name');_0x216c59[_0x415b('0x36')]=_[_0x415b('0x37')](_0x3f9a23[_0x415b('0x36')]);_0x216c59[_0x415b('0x38')]=_[_0x415b('0x39')](_0x216c59['model'],_0x216c59['query']);_0x8e4d70[_0x415b('0x3a')]=_[_0x415b('0x39')](_0x216c59[_0x415b('0x35')],qs[_0x415b('0x3b')](_0x3f9a23['query']['fields']));_0x8e4d70[_0x415b('0x3a')]=_0x8e4d70['attributes'][_0x415b('0x3c')]?_0x8e4d70[_0x415b('0x3a')]:_0x216c59[_0x415b('0x35')];if(!_0x3f9a23[_0x415b('0x36')]['hasOwnProperty'](_0x415b('0x3d'))){_0x8e4d70[_0x415b('0x20')]=qs[_0x415b('0x20')](_0x3f9a23[_0x415b('0x36')][_0x415b('0x20')]);_0x8e4d70[_0x415b('0x1e')]=qs['offset'](_0x3f9a23[_0x415b('0x36')][_0x415b('0x1e')]);}_0x8e4d70['order']=qs[_0x415b('0x3e')](_0x3f9a23[_0x415b('0x36')][_0x415b('0x3e')]);_0x8e4d70[_0x415b('0x3f')]=qs[_0x415b('0x38')](_[_0x415b('0x40')](_0x3f9a23['query'],_0x216c59[_0x415b('0x38')]),_0x50c9c8);if(_0x3f9a23[_0x415b('0x36')][_0x415b('0x41')]){_0x8e4d70[_0x415b('0x3f')]=_['merge'](_0x8e4d70[_0x415b('0x3f')],{'$or':_[_0x415b('0x2f')](_0x50c9c8,function(_0x361231){if(_0x361231[_0x415b('0x33')]!==_0x415b('0x42')){var _0x4335ea={};_0x4335ea[_0x361231[_0x415b('0x2c')]]={'$like':'%'+_0x3f9a23['query'][_0x415b('0x41')]+'%'};return _0x4335ea;}})});}_0x8e4d70=_[_0x415b('0x43')]({},_0x8e4d70,_0x3f9a23[_0x415b('0x44')]);var _0x3c6227={'where':_0x8e4d70[_0x415b('0x3f')]};return db[_0x415b('0x30')][_0x415b('0x21')](_0x3c6227)[_0x415b('0x25')](function(_0x15a48d){_0x26b2ac[_0x415b('0x21')]=_0x15a48d;if(_0x3f9a23[_0x415b('0x36')][_0x415b('0x45')]){_0x8e4d70[_0x415b('0x46')]=[{'all':!![]}];}return db[_0x415b('0x30')][_0x415b('0x47')](_0x8e4d70);})['then'](function(_0x458db6){_0x26b2ac[_0x415b('0x48')]=_0x458db6;return _0x26b2ac;})[_0x415b('0x25')](respondWithFilteredResult(_0x20dc35,_0x8e4d70))['catch'](handleError(_0x20dc35,null));};exports[_0x415b('0x49')]=function(_0x4afd3a,_0x516691){var _0x5694e7={'raw':!![],'where':{'id':_0x4afd3a[_0x415b('0x4a')]['id']}},_0x5d15b2={};_0x5d15b2[_0x415b('0x35')]=_[_0x415b('0x37')](db[_0x415b('0x30')][_0x415b('0x31')]);_0x5d15b2['query']=_[_0x415b('0x37')](_0x4afd3a[_0x415b('0x36')]);_0x5d15b2[_0x415b('0x38')]=_[_0x415b('0x39')](_0x5d15b2[_0x415b('0x35')],_0x5d15b2['query']);_0x5694e7[_0x415b('0x3a')]=_['intersection'](_0x5d15b2['model'],qs[_0x415b('0x3b')](_0x4afd3a['query'][_0x415b('0x3b')]));_0x5694e7[_0x415b('0x3a')]=_0x5694e7[_0x415b('0x3a')]['length']?_0x5694e7[_0x415b('0x3a')]:_0x5d15b2[_0x415b('0x35')];if(_0x4afd3a['query'][_0x415b('0x45')]){_0x5694e7[_0x415b('0x46')]=[{'all':!![]}];}_0x5694e7=_[_0x415b('0x43')]({},_0x5694e7,_0x4afd3a[_0x415b('0x44')]);return db[_0x415b('0x30')][_0x415b('0x4b')](_0x5694e7)[_0x415b('0x25')](handleEntityNotFound(_0x516691,null))[_0x415b('0x25')](respondWithResult(_0x516691,null))[_0x415b('0x4c')](handleError(_0x516691,null));};exports[_0x415b('0x4d')]=function(_0x46fba9,_0x412a88){return db[_0x415b('0x30')]['create'](_0x46fba9[_0x415b('0x4e')],{})[_0x415b('0x25')](function(_0x402f20){var _0x3a8f50=_0x46fba9[_0x415b('0x4f')][_0x415b('0x26')]({'plain':!![]});if(!_0x3a8f50)throw new Error(_0x415b('0x50'));if(_0x3a8f50[_0x415b('0x51')]===_0x415b('0x4f')){var _0x2fc944=_0x402f20['get']({'plain':!![]});var _0xe0a5c4=_0x415b('0x27');return db['UserProfileSection'][_0x415b('0x4b')]({'where':{'name':_0xe0a5c4,'userProfileId':_0x3a8f50[_0x415b('0x52')]},'raw':!![]})[_0x415b('0x25')](function(_0x3b7858){if(_0x3b7858&&_0x3b7858[_0x415b('0x53')]===0x0){return db['UserProfileResource'][_0x415b('0x4d')]({'name':_0x2fc944[_0x415b('0x2c')],'resourceId':_0x2fc944['id'],'type':_0x3b7858[_0x415b('0x2c')],'sectionId':_0x3b7858['id']},{})[_0x415b('0x25')](function(){return _0x402f20;});}else{return _0x402f20;}})[_0x415b('0x4c')](function(_0xcf0f73){logger[_0x415b('0x2a')](_0x415b('0x54'),_0xcf0f73);throw _0xcf0f73;});}return _0x402f20;})[_0x415b('0x25')](respondWithResult(_0x412a88,0xc9))[_0x415b('0x4c')](handleError(_0x412a88,null));};exports[_0x415b('0x24')]=function(_0x51098a,_0x121524){if(_0x51098a[_0x415b('0x4e')]['id']){delete _0x51098a[_0x415b('0x4e')]['id'];}return db[_0x415b('0x30')][_0x415b('0x4b')]({'where':{'id':_0x51098a[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x121524,null))[_0x415b('0x25')](saveUpdates(_0x51098a['body'],null))[_0x415b('0x25')](respondWithResult(_0x121524,null))['catch'](handleError(_0x121524,null));};exports[_0x415b('0x29')]=function(_0x9839c6,_0x2ac5a1){return db[_0x415b('0x30')][_0x415b('0x4b')]({'where':{'id':_0x9839c6[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x2ac5a1,null))[_0x415b('0x25')](removeEntity(_0x2ac5a1,null))['catch'](handleError(_0x2ac5a1,null));};exports['describe']=function(_0x24266f,_0x2ac763){return db[_0x415b('0x30')][_0x415b('0x55')]()['then'](respondWithResult(_0x2ac763,null))[_0x415b('0x4c')](handleError(_0x2ac763,null));};exports[_0x415b('0x56')]=function(_0x462192,_0x2c2631,_0x178899){var _0x188fbc={'raw':!![],'where':{}},_0x5729ac={},_0x5ad4b2;return db[_0x415b('0x30')][_0x415b('0x57')]({'where':{'id':_0x462192[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x2c2631,null))['then'](function(_0x4c3164){if(_0x4c3164){_0x5ad4b2=_0x4c3164['get']({'plain':!![]});_0x5729ac[_0x415b('0x35')]=_['keys'](db['UserWhatsappQueue'][_0x415b('0x31')]);_0x5729ac[_0x415b('0x36')]=_[_0x415b('0x37')](_0x462192[_0x415b('0x36')]);_0x5729ac[_0x415b('0x38')]=_['intersection'](_0x5729ac[_0x415b('0x35')],_0x5729ac[_0x415b('0x36')]);_0x188fbc[_0x415b('0x3a')]=_['intersection'](_0x5729ac['model'],qs['fields'](_0x462192[_0x415b('0x36')][_0x415b('0x3b')]));_0x188fbc[_0x415b('0x3a')]=_0x188fbc[_0x415b('0x3a')]['length']?_0x188fbc['attributes']:_0x5729ac[_0x415b('0x35')];if(!_0x462192[_0x415b('0x36')][_0x415b('0x58')](_0x415b('0x3d'))){_0x188fbc[_0x415b('0x20')]=qs[_0x415b('0x20')](_0x462192['query']['limit']);_0x188fbc[_0x415b('0x1e')]=qs[_0x415b('0x1e')](_0x462192[_0x415b('0x36')][_0x415b('0x1e')]);}_0x188fbc[_0x415b('0x59')]=qs[_0x415b('0x3e')](_0x462192['query']['sort']);_0x188fbc[_0x415b('0x3f')]=qs[_0x415b('0x38')](_['pick'](_0x462192['query'],_0x5729ac[_0x415b('0x38')]));_0x188fbc['where'][_0x415b('0x5a')]=_0x4c3164['id'];if(_0x462192[_0x415b('0x36')][_0x415b('0x41')]){_0x188fbc['where']=_[_0x415b('0x43')](_0x188fbc[_0x415b('0x3f')],{'$or':_['map'](_0x188fbc[_0x415b('0x3a')],function(_0x474692){var _0x4bc299={};_0x4bc299[_0x474692]={'$like':'%'+_0x462192['query']['filter']+'%'};return _0x4bc299;})});}_0x188fbc=_['merge']({},_0x188fbc,_0x462192[_0x415b('0x44')]);return db[_0x415b('0x5b')][_0x415b('0x47')](_0x188fbc);}})[_0x415b('0x25')](function(_0x5dc12d){if(_0x5dc12d){return db[_0x415b('0x5c')][_0x415b('0x5d')]({'where':{'id':_[_0x415b('0x2f')](_0x5dc12d,_0x415b('0x5e')),'role':'agent'},'attributes':['id',_0x415b('0x2c'),_0x415b('0x5f'),_0x415b('0x60'),_0x415b('0x61')]});}})[_0x415b('0x25')](function(_0x422f3b){if(_0x422f3b){return{'count':_0x422f3b[_0x415b('0x21')],'rows':_[_0x415b('0x2f')](_0x422f3b[_0x415b('0x48')],function(_0x2d3766){return{'membername':_0x2d3766[_0x415b('0x2c')],'UserId':_0x2d3766['id'],'queue_name':_0x5ad4b2['name'],'WhatsappQueueId':_0x5ad4b2['id'],'interface':util[_0x415b('0x62')](_0x415b('0x63'),_0x415b('0x64'),_0x2d3766['name']),'penalty':0x0,'paused':_0x2d3766[_0x415b('0x5f')],'createdAt':_0x2d3766['createdAt'],'updatedAt':_0x2d3766[_0x415b('0x60')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x415b('0x25')](respondWithFilteredResult(_0x2c2631,_0x188fbc))[_0x415b('0x4c')](handleError(_0x2c2631,null));};exports[_0x415b('0x65')]=function(_0x3f108a,_0x62243,_0x13a466){var _0x4627f1={};var _0x3fc5f6={};var _0x3f4a54;var _0x3d337d;return db['WhatsappQueue'][_0x415b('0x57')]({'where':{'id':_0x3f108a[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x62243,null))[_0x415b('0x25')](function(_0x263c4b){if(_0x263c4b){_0x3f4a54=_0x263c4b;_0x3fc5f6[_0x415b('0x35')]=_['keys'](db[_0x415b('0x66')][_0x415b('0x31')]);_0x3fc5f6[_0x415b('0x36')]=_[_0x415b('0x37')](_0x3f108a[_0x415b('0x36')]);_0x3fc5f6['filters']=_[_0x415b('0x39')](_0x3fc5f6[_0x415b('0x35')],_0x3fc5f6[_0x415b('0x36')]);_0x4627f1[_0x415b('0x3a')]=_[_0x415b('0x39')](_0x3fc5f6['model'],qs['fields'](_0x3f108a[_0x415b('0x36')][_0x415b('0x3b')]));_0x4627f1[_0x415b('0x3a')]=_0x4627f1[_0x415b('0x3a')][_0x415b('0x3c')]?_0x4627f1[_0x415b('0x3a')]:_0x3fc5f6['model'];_0x4627f1[_0x415b('0x59')]=qs['sort'](_0x3f108a[_0x415b('0x36')]['sort']);_0x4627f1[_0x415b('0x3f')]=qs[_0x415b('0x38')](_[_0x415b('0x40')](_0x3f108a[_0x415b('0x36')],_0x3fc5f6['filters']));if(_0x3f108a['query'][_0x415b('0x41')]){_0x4627f1[_0x415b('0x3f')]=_[_0x415b('0x43')](_0x4627f1[_0x415b('0x3f')],{'$or':_[_0x415b('0x2f')](_0x4627f1[_0x415b('0x3a')],function(_0x3a4e41){var _0x5f2106={};_0x5f2106[_0x3a4e41]={'$like':'%'+_0x3f108a[_0x415b('0x36')]['filter']+'%'};return _0x5f2106;})});}_0x4627f1=_[_0x415b('0x43')]({},_0x4627f1,_0x3f108a['options']);return _0x3f4a54['getTeams'](_0x4627f1);}})['then'](function(_0x97808f){if(_0x97808f){_0x3d337d=_0x97808f['length'];if(!_0x3f108a[_0x415b('0x36')][_0x415b('0x58')](_0x415b('0x3d'))){_0x4627f1['limit']=qs[_0x415b('0x20')](_0x3f108a[_0x415b('0x36')]['limit']);_0x4627f1[_0x415b('0x1e')]=qs[_0x415b('0x1e')](_0x3f108a[_0x415b('0x36')]['offset']);}return _0x3f4a54[_0x415b('0x65')](_0x4627f1);}})[_0x415b('0x25')](function(_0x22c45f){if(_0x22c45f){return _0x22c45f?{'count':_0x3d337d,'rows':_0x22c45f}:null;}})[_0x415b('0x25')](respondWithResult(_0x62243,null))[_0x415b('0x4c')](handleError(_0x62243,null));};exports[_0x415b('0x67')]=function(_0x25d0b6,_0x51e319,_0xd8aec3){var _0x16b32e=_0x25d0b6['body'][_0x415b('0x68')];return db[_0x415b('0x66')][_0x415b('0x47')]({'where':{'id':_0x16b32e},'attributes':['id'],'include':[{'model':db['User'],'as':_0x415b('0x69'),'attributes':['id','name',_0x415b('0x6a'),_0x415b('0x6b'),'interface'],'raw':!![]}]})[_0x415b('0x25')](function(_0xf89ec7){if(_0xf89ec7){var _0x509a06=_[_0x415b('0x6c')](_0xf89ec7,function(_0x1db92){var _0x242f49=_0x1db92['get']({'plain':!![]});return _0x242f49['Agents'];});return db[_0x415b('0x30')][_0x415b('0x4b')]({'where':{'id':_0x25d0b6[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](function(_0x34cd80){return db[_0x415b('0x6d')][_0x415b('0x6e')](function(_0x39a436){return _0x34cd80['addTeams'](_0x16b32e,{'transaction':_0x39a436})['then'](function(){return BPromise[_0x415b('0x6f')](_0x509a06,function(_0x468b46){return db[_0x415b('0x5b')][_0x415b('0x70')]({'where':{'UserId':_0x468b46['id'],'WhatsappQueueId':_0x25d0b6[_0x415b('0x4a')]['id']},'transaction':_0x39a436});});})[_0x415b('0x25')](function(){_0x509a06[_0x415b('0x71')](function(_0x1aaff1){socket[_0x415b('0x72')](_0x415b('0x73'),{'UserId':_0x1aaff1['id'],'WhatsappQueueId':_0x34cd80['id']});});});});});}})[_0x415b('0x25')](respondWithStatusCode(_0x51e319,null))[_0x415b('0x4c')](handleError(_0x51e319,null));};exports[_0x415b('0x74')]=function(_0x1f6254,_0x23f933,_0xbf7ae){return db[_0x415b('0x66')][_0x415b('0x47')]({'where':{'id':_0x1f6254[_0x415b('0x36')][_0x415b('0x68')]},'attributes':['id'],'include':[{'model':db[_0x415b('0x5c')],'as':_0x415b('0x69'),'attributes':['id'],'raw':!![]}]})[_0x415b('0x25')](handleEntityNotFound(_0x23f933,null))[_0x415b('0x25')](function(_0x4eec87){var _0x29c634=_[_0x415b('0x2f')](_0x4eec87,'id');var _0x269d95=[];var _0x480b6e=[];var _0x390feb=squel[_0x415b('0x75')]();_0x390feb[_0x415b('0x76')](_0x415b('0x77'))[_0x415b('0x78')]('team_has_whatsapp_queues','tq')['join'](_0x415b('0x79'),'ut',_0x415b('0x7a'))['where'](_0x415b('0x7b'),_0x1f6254[_0x415b('0x4a')]['id']);for(var _0x2a31cf=0x0;_0x2a31cf<_0x4eec87[_0x415b('0x3c')];_0x2a31cf+=0x1){let _0x451f5c=_0x4eec87[_0x2a31cf];for(var _0xa188e=0x0;_0xa188e<_0x451f5c[_0x415b('0x69')][_0x415b('0x3c')];_0xa188e+=0x1){let _0x22055b=_0x451f5c[_0x415b('0x69')][_0xa188e];var _0x42ef47=_0x390feb['clone']();_0x42ef47[_0x415b('0x3f')](_0x415b('0x7c'),_0x22055b['id']);_0x480b6e['push'](db[_0x415b('0x6d')][_0x415b('0x36')](_0x42ef47[_0x415b('0x7d')](),{'type':db[_0x415b('0x6d')][_0x415b('0x7e')]['SELECT']})['then'](function(_0x4e8edf){if(_0x4e8edf[_0x415b('0x3c')]===0x1){return _0x22055b['id'];}else{var _0x57ac9d=_[_0x415b('0x7f')](_[_0x415b('0x2f')](_0x4e8edf,_0x415b('0x80')),function(_0xc63764){return _['includes'](_0x29c634,_0xc63764);});if(_0x57ac9d){return _0x22055b['id'];}}}));}}return BPromise[_0x415b('0x81')](_0x480b6e)['then'](function(_0x145590){_0x269d95=_(_0x269d95)[_0x415b('0x82')](_0x145590)[_0x415b('0x83')]()[_0x415b('0x84')]();return db[_0x415b('0x30')][_0x415b('0x4b')]({'where':{'id':_0x1f6254['params']['id']}})[_0x415b('0x25')](function(_0x313c38){return db[_0x415b('0x6d')][_0x415b('0x6e')](function(_0x33d779){return _0x313c38[_0x415b('0x74')](_0x1f6254[_0x415b('0x36')][_0x415b('0x68')],{'transaction':_0x33d779})['then'](function(){if(!_[_0x415b('0x85')](_0x269d95)){return _0x313c38[_0x415b('0x86')](_0x269d95,{'transaction':_0x33d779});}})[_0x415b('0x25')](function(){_0x269d95[_0x415b('0x71')](function(_0x32b761){socket[_0x415b('0x72')](_0x415b('0x87'),{'UserId':_0x32b761,'WhatsappQueueId':_0x313c38['id']});});});});});});})[_0x415b('0x25')](respondWithStatusCode(_0x23f933,null))['catch'](handleError(_0x23f933,null));};exports['addAgents']=function(_0x3f72b6,_0x3c6035,_0x5afb18){return db[_0x415b('0x30')][_0x415b('0x4b')]({'where':{'id':_0x3f72b6[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x3c6035,null))[_0x415b('0x25')](function(_0xabbd0e){if(_0xabbd0e){return _0xabbd0e[_0x415b('0x88')](_0x3f72b6[_0x415b('0x4e')][_0x415b('0x68')],_[_0x415b('0x89')](_0x3f72b6[_0x415b('0x4e')],[_0x415b('0x68'),'id'])||{})['spread'](function(_0x5dca8c){for(var _0x482c20=0x0;_0x482c20<_0x3f72b6[_0x415b('0x4e')]['ids'][_0x415b('0x3c')];_0x482c20+=0x1){socket[_0x415b('0x72')](_0x415b('0x73'),{'UserId':Number(_0x3f72b6[_0x415b('0x4e')][_0x415b('0x68')][_0x482c20]),'WhatsappQueueId':Number(_0x3f72b6[_0x415b('0x4a')]['id'])});}return _0x5dca8c;});}})['then'](respondWithResult(_0x3c6035,null))[_0x415b('0x4c')](handleError(_0x3c6035,null));};exports[_0x415b('0x86')]=function(_0x4349c1,_0x192159,_0x310571){return db['WhatsappQueue'][_0x415b('0x4b')]({'where':{'id':_0x4349c1[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x192159,null))[_0x415b('0x25')](function(_0x482afd){if(_0x482afd){return _0x482afd[_0x415b('0x86')](_0x4349c1[_0x415b('0x36')][_0x415b('0x68')])['then'](function(){if(_[_0x415b('0x8a')](_0x4349c1[_0x415b('0x36')][_0x415b('0x68')])){for(var _0x1954e5=0x0;_0x1954e5<_0x4349c1[_0x415b('0x36')][_0x415b('0x68')]['length'];_0x1954e5+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x4349c1[_0x415b('0x36')][_0x415b('0x68')][_0x1954e5]),'WhatsappQueueId':Number(_0x4349c1[_0x415b('0x4a')]['id'])});}}else{socket['emit'](_0x415b('0x87'),{'UserId':Number(_0x4349c1['query'][_0x415b('0x68')]),'WhatsappQueueId':Number(_0x4349c1[_0x415b('0x4a')]['id'])});}});}})[_0x415b('0x25')](respondWithStatusCode(_0x192159,null))[_0x415b('0x4c')](handleError(_0x192159,null));};exports[_0x415b('0x8b')]=function(_0x55700f,_0x2ec781,_0x556f0d){var _0x1bd0b0={};var _0x2f6024={};var _0x333eb7;var _0x2ff82b;return db['WhatsappQueue'][_0x415b('0x57')]({'where':{'id':_0x55700f[_0x415b('0x4a')]['id']}})[_0x415b('0x25')](handleEntityNotFound(_0x2ec781,null))[_0x415b('0x25')](function(_0x1a7e1a){if(_0x1a7e1a){_0x333eb7=_0x1a7e1a;_0x2f6024[_0x415b('0x35')]=_[_0x415b('0x37')](db[_0x415b('0x5c')]['rawAttributes']);_0x2f6024['query']=_['keys'](_0x55700f[_0x415b('0x36')]);_0x2f6024[_0x415b('0x38')]=_[_0x415b('0x39')](_0x2f6024[_0x415b('0x35')],_0x2f6024[_0x415b('0x36')]);_0x1bd0b0['attributes']=_[_0x415b('0x39')](_0x2f6024[_0x415b('0x35')],qs[_0x415b('0x3b')](_0x55700f[_0x415b('0x36')][_0x415b('0x3b')]));_0x1bd0b0[_0x415b('0x3a')]=_0x1bd0b0[_0x415b('0x3a')][_0x415b('0x3c')]?_0x1bd0b0[_0x415b('0x3a')]:_0x2f6024[_0x415b('0x35')];_0x1bd0b0['order']=qs[_0x415b('0x3e')](_0x55700f[_0x415b('0x36')][_0x415b('0x3e')]);_0x1bd0b0[_0x415b('0x3f')]=qs[_0x415b('0x38')](_[_0x415b('0x40')](_0x55700f[_0x415b('0x36')],_0x2f6024['filters']));if(_0x55700f[_0x415b('0x36')][_0x415b('0x41')]){_0x1bd0b0[_0x415b('0x3f')]=_['merge'](_0x1bd0b0[_0x415b('0x3f')],{'$or':_[_0x415b('0x2f')](_0x1bd0b0[_0x415b('0x3a')],function(_0x4d2627){var _0x12979e={};_0x12979e[_0x4d2627]={'$like':'%'+_0x55700f[_0x415b('0x36')]['filter']+'%'};return _0x12979e;})});}_0x1bd0b0=_[_0x415b('0x43')]({},_0x1bd0b0,_0x55700f['options']);return _0x333eb7[_0x415b('0x8b')](_0x1bd0b0);}})[_0x415b('0x25')](function(_0x5548a4){if(_0x5548a4){_0x2ff82b=_0x5548a4['length'];if(!_0x55700f[_0x415b('0x36')]['hasOwnProperty']('nolimit')){_0x1bd0b0[_0x415b('0x20')]=qs[_0x415b('0x20')](_0x55700f['query'][_0x415b('0x20')]);_0x1bd0b0['offset']=qs['offset'](_0x55700f[_0x415b('0x36')][_0x415b('0x1e')]);}return _0x333eb7[_0x415b('0x8b')](_0x1bd0b0);}})[_0x415b('0x25')](function(_0x304e25){if(_0x304e25){return _0x304e25?{'count':_0x2ff82b,'rows':_0x304e25}:null;}})[_0x415b('0x25')](respondWithResult(_0x2ec781,null))[_0x415b('0x4c')](handleError(_0x2ec781,null));};
\ No newline at end of file
+var _0x8b6e=['SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','forEach','addAgents','omit','spread','emit','removeAgents','isArray','userWhatsappQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','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','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','UserProfileResource','sendStatus','error','stack','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','type','VIRTUAL','options','WhatsappQueue','includeAll','findAll','catch','show','params','include','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','WhatsappQueues','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','findOne','UserWhatsappQueue','order','pick','WhatsappQueueId','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','rows','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','flatMap','sequelize','transaction','each','findOrCreate','userWhatsappQueue:save','select','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes'];(function(_0x281e5e,_0xf320e2){var _0x5a22d2=function(_0x405ff9){while(--_0x405ff9){_0x281e5e['push'](_0x281e5e['shift']());}};_0x5a22d2(++_0xf320e2);}(_0x8b6e,0xa8));var _0xe8b6=function(_0x13af4e,_0x1e01c8){_0x13af4e=_0x13af4e-0x0;var _0x353beb=_0x8b6e[_0x13af4e];return _0x353beb;};'use strict';var emlformat=require(_0xe8b6('0x0'));var rimraf=require(_0xe8b6('0x1'));var zipdir=require(_0xe8b6('0x2'));var jsonpatch=require(_0xe8b6('0x3'));var rp=require(_0xe8b6('0x4'));var moment=require('moment');var BPromise=require(_0xe8b6('0x5'));var Mustache=require(_0xe8b6('0x6'));var util=require(_0xe8b6('0x7'));var path=require(_0xe8b6('0x8'));var sox=require(_0xe8b6('0x9'));var csv=require(_0xe8b6('0xa'));var ejs=require(_0xe8b6('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe8b6('0xc'));var squel=require(_0xe8b6('0xd'));var crypto=require(_0xe8b6('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xe8b6('0xf'));var toCsv=require(_0xe8b6('0xa'));var querystring=require(_0xe8b6('0x10'));var Papa=require(_0xe8b6('0x11'));var Redis=require(_0xe8b6('0x12'));var authService=require(_0xe8b6('0x13'));var qs=require(_0xe8b6('0x14'));var as=require(_0xe8b6('0x15'));var hardwareService=require(_0xe8b6('0x16'));var logger=require('../../config/logger')(_0xe8b6('0x17'));var utils=require(_0xe8b6('0x18'));var config=require(_0xe8b6('0x19'));var licenseUtil=require(_0xe8b6('0x1a'));var db=require('../../mysqldb')['db'];config[_0xe8b6('0x1b')]=_[_0xe8b6('0x1c')](config[_0xe8b6('0x1b')],{'host':_0xe8b6('0x1d'),'port':0x18eb});var socket=require(_0xe8b6('0x1e'))(new Redis(config[_0xe8b6('0x1b')]));require(_0xe8b6('0x1f'))[_0xe8b6('0x20')](socket);function respondWithStatusCode(_0xe7ffd7,_0x130020){_0x130020=_0x130020||0xcc;return function(_0x51cd00){if(_0x51cd00){return _0xe7ffd7['sendStatus'](_0x130020);}return _0xe7ffd7[_0xe8b6('0x21')](_0x130020)[_0xe8b6('0x22')]();};}function respondWithResult(_0x4aa1df,_0x19c9be){_0x19c9be=_0x19c9be||0xc8;return function(_0x13ddf7){if(_0x13ddf7){return _0x4aa1df[_0xe8b6('0x21')](_0x19c9be)[_0xe8b6('0x23')](_0x13ddf7);}};}function respondWithFilteredResult(_0xcf564e,_0x4b7817){return function(_0x206815){if(_0x206815){var _0x7b40d=typeof _0x4b7817[_0xe8b6('0x24')]===_0xe8b6('0x25')&&typeof _0x4b7817[_0xe8b6('0x26')]===_0xe8b6('0x25');var _0x1e5970=_0x206815[_0xe8b6('0x27')];var _0x5604c1=_0x7b40d?0x0:_0x4b7817[_0xe8b6('0x24')];var _0x4f1250=_0x7b40d?_0x206815[_0xe8b6('0x27')]:_0x4b7817[_0xe8b6('0x24')]+_0x4b7817[_0xe8b6('0x26')];var _0x559e16;if(_0x4f1250>=_0x1e5970){_0x4f1250=_0x1e5970;_0x559e16=0xc8;}else{_0x559e16=0xce;}_0xcf564e['status'](_0x559e16);return _0xcf564e[_0xe8b6('0x28')](_0xe8b6('0x29'),_0x5604c1+'-'+_0x4f1250+'/'+_0x1e5970)[_0xe8b6('0x23')](_0x206815);}return null;};}function patchUpdates(_0xa828a8){return function(_0x2ce3ef){try{jsonpatch['apply'](_0x2ce3ef,_0xa828a8,!![]);}catch(_0x540fdb){return BPromise[_0xe8b6('0x2a')](_0x540fdb);}return _0x2ce3ef[_0xe8b6('0x2b')]();};}function saveUpdates(_0x5011d0,_0x39e0d1){return function(_0x153ede){if(_0x153ede){return _0x153ede['update'](_0x5011d0)[_0xe8b6('0x2c')](function(_0x5b2c07){return _0x5b2c07;});}return null;};}function removeEntity(_0x56c807,_0x3aed14){return function(_0x2a0e19){if(_0x2a0e19){return _0x2a0e19[_0xe8b6('0x2d')]()[_0xe8b6('0x2c')](function(){var _0xefec12=_0x2a0e19[_0xe8b6('0x2e')]({'plain':!![]});var _0x5a0902='WhatsappQueues';return db[_0xe8b6('0x2f')][_0xe8b6('0x2d')]({'where':{'type':_0x5a0902,'resourceId':_0xefec12['id']}})['then'](function(){return _0x2a0e19;});})['then'](function(){_0x56c807[_0xe8b6('0x21')](0xcc)[_0xe8b6('0x22')]();});}};}function handleEntityNotFound(_0x891ab8,_0x220c6f){return function(_0x2f0d1b){if(!_0x2f0d1b){_0x891ab8[_0xe8b6('0x30')](0x194);}return _0x2f0d1b;};}function handleError(_0x28d1c9,_0x5b941a){_0x5b941a=_0x5b941a||0x1f4;return function(_0x560eee){logger[_0xe8b6('0x31')](_0x560eee[_0xe8b6('0x32')]);if(_0x560eee[_0xe8b6('0x33')]){delete _0x560eee[_0xe8b6('0x33')];}_0x28d1c9[_0xe8b6('0x21')](_0x5b941a)[_0xe8b6('0x34')](_0x560eee);};}exports[_0xe8b6('0x35')]=function(_0x25e98a,_0x17a439){var _0x58fd83={},_0x460ad3={},_0x53b49a={'count':0x0,'rows':[]};var _0x4c0070=_[_0xe8b6('0x36')](db['WhatsappQueue'][_0xe8b6('0x37')],function(_0x303ebd){return{'name':_0x303ebd['fieldName'],'type':_0x303ebd['type'][_0xe8b6('0x38')]};});_0x460ad3[_0xe8b6('0x39')]=_[_0xe8b6('0x36')](_0x4c0070,_0xe8b6('0x33'));_0x460ad3[_0xe8b6('0x3a')]=_[_0xe8b6('0x3b')](_0x25e98a[_0xe8b6('0x3a')]);_0x460ad3[_0xe8b6('0x3c')]=_[_0xe8b6('0x3d')](_0x460ad3[_0xe8b6('0x39')],_0x460ad3['query']);_0x58fd83[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x460ad3[_0xe8b6('0x39')],qs[_0xe8b6('0x3f')](_0x25e98a['query'][_0xe8b6('0x3f')]));_0x58fd83['attributes']=_0x58fd83[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x58fd83['attributes']:_0x460ad3[_0xe8b6('0x39')];if(!_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x58fd83[_0xe8b6('0x26')]=qs[_0xe8b6('0x26')](_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x26')]);_0x58fd83[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x24')]);}_0x58fd83['order']=qs[_0xe8b6('0x43')](_0x25e98a[_0xe8b6('0x3a')]['sort']);_0x58fd83[_0xe8b6('0x44')]=qs[_0xe8b6('0x3c')](_['pick'](_0x25e98a['query'],_0x460ad3[_0xe8b6('0x3c')]),_0x4c0070);if(_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x45')]){_0x58fd83[_0xe8b6('0x44')]=_['merge'](_0x58fd83[_0xe8b6('0x44')],{'$or':_[_0xe8b6('0x36')](_0x4c0070,function(_0x34913c){if(_0x34913c[_0xe8b6('0x46')]!==_0xe8b6('0x47')){var _0x148d25={};_0x148d25[_0x34913c[_0xe8b6('0x33')]]={'$like':'%'+_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x45')]+'%'};return _0x148d25;}})});}_0x58fd83=_['merge']({},_0x58fd83,_0x25e98a[_0xe8b6('0x48')]);var _0x48ffcd={'where':_0x58fd83['where']};return db[_0xe8b6('0x49')][_0xe8b6('0x27')](_0x48ffcd)['then'](function(_0x411588){_0x53b49a['count']=_0x411588;if(_0x25e98a[_0xe8b6('0x3a')][_0xe8b6('0x4a')]){_0x58fd83['include']=[{'all':!![]}];}return db['WhatsappQueue'][_0xe8b6('0x4b')](_0x58fd83);})[_0xe8b6('0x2c')](function(_0x4ae2b3){_0x53b49a['rows']=_0x4ae2b3;return _0x53b49a;})['then'](respondWithFilteredResult(_0x17a439,_0x58fd83))[_0xe8b6('0x4c')](handleError(_0x17a439,null));};exports[_0xe8b6('0x4d')]=function(_0x1dcb21,_0x3e9ca2){var _0x29450c={'raw':!![],'where':{'id':_0x1dcb21[_0xe8b6('0x4e')]['id']}},_0x3c818c={};_0x3c818c[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x49')]['rawAttributes']);_0x3c818c['query']=_[_0xe8b6('0x3b')](_0x1dcb21[_0xe8b6('0x3a')]);_0x3c818c['filters']=_['intersection'](_0x3c818c[_0xe8b6('0x39')],_0x3c818c['query']);_0x29450c[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x3c818c[_0xe8b6('0x39')],qs[_0xe8b6('0x3f')](_0x1dcb21[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x29450c[_0xe8b6('0x3e')]=_0x29450c[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x29450c[_0xe8b6('0x3e')]:_0x3c818c[_0xe8b6('0x39')];if(_0x1dcb21[_0xe8b6('0x3a')][_0xe8b6('0x4a')]){_0x29450c[_0xe8b6('0x4f')]=[{'all':!![]}];}_0x29450c=_[_0xe8b6('0x50')]({},_0x29450c,_0x1dcb21[_0xe8b6('0x48')]);return db[_0xe8b6('0x49')][_0xe8b6('0x51')](_0x29450c)[_0xe8b6('0x2c')](handleEntityNotFound(_0x3e9ca2,null))['then'](respondWithResult(_0x3e9ca2,null))['catch'](handleError(_0x3e9ca2,null));};exports[_0xe8b6('0x52')]=function(_0x45b171,_0x52ce2b){return db[_0xe8b6('0x49')]['create'](_0x45b171[_0xe8b6('0x53')],{})['then'](function(_0x33a551){var _0x136a00=_0x45b171['user'][_0xe8b6('0x2e')]({'plain':!![]});if(!_0x136a00)throw new Error(_0xe8b6('0x54'));if(_0x136a00[_0xe8b6('0x55')]===_0xe8b6('0x56')){var _0x1fefb3=_0x33a551['get']({'plain':!![]});var _0x196ca8=_0xe8b6('0x57');return db['UserProfileSection'][_0xe8b6('0x51')]({'where':{'name':_0x196ca8,'userProfileId':_0x136a00['userProfileId']},'raw':!![]})['then'](function(_0x55de2e){if(_0x55de2e&&_0x55de2e[_0xe8b6('0x58')]===0x0){return db[_0xe8b6('0x2f')][_0xe8b6('0x52')]({'name':_0x1fefb3[_0xe8b6('0x33')],'resourceId':_0x1fefb3['id'],'type':_0x55de2e[_0xe8b6('0x33')],'sectionId':_0x55de2e['id']},{})[_0xe8b6('0x2c')](function(){return _0x33a551;});}else{return _0x33a551;}})['catch'](function(_0x3518aa){logger[_0xe8b6('0x31')](_0xe8b6('0x59'),_0x3518aa);throw _0x3518aa;});}return _0x33a551;})[_0xe8b6('0x2c')](respondWithResult(_0x52ce2b,0xc9))[_0xe8b6('0x4c')](handleError(_0x52ce2b,null));};exports[_0xe8b6('0x5a')]=function(_0x1b9e1c,_0x58f611){if(_0x1b9e1c[_0xe8b6('0x53')]['id']){delete _0x1b9e1c[_0xe8b6('0x53')]['id'];}return db[_0xe8b6('0x49')][_0xe8b6('0x51')]({'where':{'id':_0x1b9e1c['params']['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x58f611,null))['then'](saveUpdates(_0x1b9e1c[_0xe8b6('0x53')],null))[_0xe8b6('0x2c')](respondWithResult(_0x58f611,null))[_0xe8b6('0x4c')](handleError(_0x58f611,null));};exports[_0xe8b6('0x2d')]=function(_0x2c3e9b,_0x1e9b6b){return db['WhatsappQueue'][_0xe8b6('0x51')]({'where':{'id':_0x2c3e9b[_0xe8b6('0x4e')]['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x1e9b6b,null))[_0xe8b6('0x2c')](removeEntity(_0x1e9b6b,null))[_0xe8b6('0x4c')](handleError(_0x1e9b6b,null));};exports[_0xe8b6('0x5b')]=function(_0x5c74c1,_0x2e78fd){return db[_0xe8b6('0x49')][_0xe8b6('0x5b')]()[_0xe8b6('0x2c')](respondWithResult(_0x2e78fd,null))[_0xe8b6('0x4c')](handleError(_0x2e78fd,null));};exports['getMembers']=function(_0x18ab6c,_0x5a18c8,_0x5d6961){var _0x5a213a={'raw':!![],'where':{}},_0x2e394b={},_0x327cfb;return db[_0xe8b6('0x49')][_0xe8b6('0x5c')]({'where':{'id':_0x18ab6c[_0xe8b6('0x4e')]['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x5a18c8,null))['then'](function(_0x219126){if(_0x219126){_0x327cfb=_0x219126[_0xe8b6('0x2e')]({'plain':!![]});_0x2e394b[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x5d')][_0xe8b6('0x37')]);_0x2e394b['query']=_[_0xe8b6('0x3b')](_0x18ab6c['query']);_0x2e394b['filters']=_[_0xe8b6('0x3d')](_0x2e394b['model'],_0x2e394b[_0xe8b6('0x3a')]);_0x5a213a[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x2e394b['model'],qs['fields'](_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x5a213a[_0xe8b6('0x3e')]=_0x5a213a[_0xe8b6('0x3e')]['length']?_0x5a213a[_0xe8b6('0x3e')]:_0x2e394b['model'];if(!_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x5a213a[_0xe8b6('0x26')]=qs['limit'](_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x26')]);_0x5a213a[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x24')]);}_0x5a213a[_0xe8b6('0x5e')]=qs[_0xe8b6('0x43')](_0x18ab6c['query'][_0xe8b6('0x43')]);_0x5a213a['where']=qs[_0xe8b6('0x3c')](_[_0xe8b6('0x5f')](_0x18ab6c[_0xe8b6('0x3a')],_0x2e394b[_0xe8b6('0x3c')]));_0x5a213a[_0xe8b6('0x44')][_0xe8b6('0x60')]=_0x219126['id'];if(_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x45')]){_0x5a213a[_0xe8b6('0x44')]=_[_0xe8b6('0x50')](_0x5a213a[_0xe8b6('0x44')],{'$or':_[_0xe8b6('0x36')](_0x5a213a['attributes'],function(_0x5b33c7){var _0x2eef32={};_0x2eef32[_0x5b33c7]={'$like':'%'+_0x18ab6c[_0xe8b6('0x3a')][_0xe8b6('0x45')]+'%'};return _0x2eef32;})});}_0x5a213a=_[_0xe8b6('0x50')]({},_0x5a213a,_0x18ab6c[_0xe8b6('0x48')]);return db[_0xe8b6('0x5d')][_0xe8b6('0x4b')](_0x5a213a);}})['then'](function(_0x5a2854){if(_0x5a2854){return db[_0xe8b6('0x61')][_0xe8b6('0x62')]({'where':{'id':_[_0xe8b6('0x36')](_0x5a2854,_0xe8b6('0x63')),'role':_0xe8b6('0x64')},'attributes':['id','name',_0xe8b6('0x65'),_0xe8b6('0x66'),_0xe8b6('0x67')]});}})[_0xe8b6('0x2c')](function(_0x8676e){if(_0x8676e){return{'count':_0x8676e['count'],'rows':_['map'](_0x8676e[_0xe8b6('0x68')],function(_0x166bc8){return{'membername':_0x166bc8[_0xe8b6('0x33')],'UserId':_0x166bc8['id'],'queue_name':_0x327cfb['name'],'WhatsappQueueId':_0x327cfb['id'],'interface':util['format'](_0xe8b6('0x69'),_0xe8b6('0x6a'),_0x166bc8[_0xe8b6('0x33')]),'penalty':0x0,'paused':_0x166bc8[_0xe8b6('0x65')],'createdAt':_0x166bc8[_0xe8b6('0x67')],'updatedAt':_0x166bc8[_0xe8b6('0x66')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe8b6('0x2c')](respondWithFilteredResult(_0x5a18c8,_0x5a213a))[_0xe8b6('0x4c')](handleError(_0x5a18c8,null));};exports[_0xe8b6('0x6b')]=function(_0x20ef26,_0xfb098d,_0x415a98){var _0x48d7c4={};var _0x1d77ab={};var _0x24fdaa;var _0x4c9391;return db[_0xe8b6('0x49')][_0xe8b6('0x5c')]({'where':{'id':_0x20ef26[_0xe8b6('0x4e')]['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0xfb098d,null))[_0xe8b6('0x2c')](function(_0x3cb53f){if(_0x3cb53f){_0x24fdaa=_0x3cb53f;_0x1d77ab[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x6c')][_0xe8b6('0x37')]);_0x1d77ab[_0xe8b6('0x3a')]=_[_0xe8b6('0x3b')](_0x20ef26[_0xe8b6('0x3a')]);_0x1d77ab[_0xe8b6('0x3c')]=_[_0xe8b6('0x3d')](_0x1d77ab[_0xe8b6('0x39')],_0x1d77ab[_0xe8b6('0x3a')]);_0x48d7c4[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x1d77ab['model'],qs['fields'](_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x48d7c4[_0xe8b6('0x3e')]=_0x48d7c4[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x48d7c4[_0xe8b6('0x3e')]:_0x1d77ab[_0xe8b6('0x39')];_0x48d7c4[_0xe8b6('0x5e')]=qs[_0xe8b6('0x43')](_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x43')]);_0x48d7c4[_0xe8b6('0x44')]=qs[_0xe8b6('0x3c')](_[_0xe8b6('0x5f')](_0x20ef26[_0xe8b6('0x3a')],_0x1d77ab[_0xe8b6('0x3c')]));if(_0x20ef26['query'][_0xe8b6('0x45')]){_0x48d7c4['where']=_['merge'](_0x48d7c4['where'],{'$or':_[_0xe8b6('0x36')](_0x48d7c4[_0xe8b6('0x3e')],function(_0x41fc69){var _0x4fd0aa={};_0x4fd0aa[_0x41fc69]={'$like':'%'+_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x45')]+'%'};return _0x4fd0aa;})});}_0x48d7c4=_[_0xe8b6('0x50')]({},_0x48d7c4,_0x20ef26['options']);return _0x24fdaa[_0xe8b6('0x6b')](_0x48d7c4);}})[_0xe8b6('0x2c')](function(_0x3c2e0c){if(_0x3c2e0c){_0x4c9391=_0x3c2e0c['length'];if(!_0x20ef26['query'][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x48d7c4[_0xe8b6('0x26')]=qs[_0xe8b6('0x26')](_0x20ef26['query'][_0xe8b6('0x26')]);_0x48d7c4[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x20ef26[_0xe8b6('0x3a')][_0xe8b6('0x24')]);}return _0x24fdaa[_0xe8b6('0x6b')](_0x48d7c4);}})[_0xe8b6('0x2c')](function(_0x2b66cc){if(_0x2b66cc){return _0x2b66cc?{'count':_0x4c9391,'rows':_0x2b66cc}:null;}})[_0xe8b6('0x2c')](respondWithResult(_0xfb098d,null))[_0xe8b6('0x4c')](handleError(_0xfb098d,null));};exports[_0xe8b6('0x6d')]=function(_0x393a9e,_0x4b0cc1,_0x199dbc){var _0x54efdf=_0x393a9e['body'][_0xe8b6('0x6e')];return db['Team'][_0xe8b6('0x4b')]({'where':{'id':_0x54efdf},'attributes':['id'],'include':[{'model':db[_0xe8b6('0x61')],'as':_0xe8b6('0x6f'),'attributes':['id','name',_0xe8b6('0x70'),'voicePause','interface'],'raw':!![]}]})[_0xe8b6('0x2c')](function(_0x31189a){if(_0x31189a){var _0x2d6350=_[_0xe8b6('0x71')](_0x31189a,function(_0x40cbe8){var _0x59bdf2=_0x40cbe8[_0xe8b6('0x2e')]({'plain':!![]});return _0x59bdf2['Agents'];});return db[_0xe8b6('0x49')][_0xe8b6('0x51')]({'where':{'id':_0x393a9e['params']['id']}})['then'](function(_0x5db509){return db[_0xe8b6('0x72')][_0xe8b6('0x73')](function(_0x5b37af){return _0x5db509[_0xe8b6('0x6d')](_0x54efdf,{'transaction':_0x5b37af})[_0xe8b6('0x2c')](function(){return BPromise[_0xe8b6('0x74')](_0x2d6350,function(_0x5d7ba0){return db[_0xe8b6('0x5d')][_0xe8b6('0x75')]({'where':{'UserId':_0x5d7ba0['id'],'WhatsappQueueId':_0x393a9e[_0xe8b6('0x4e')]['id']},'transaction':_0x5b37af});});})[_0xe8b6('0x2c')](function(){_0x2d6350['forEach'](function(_0x18e916){socket['emit'](_0xe8b6('0x76'),{'UserId':_0x18e916['id'],'WhatsappQueueId':_0x5db509['id']});});});});});}})[_0xe8b6('0x2c')](respondWithStatusCode(_0x4b0cc1,null))[_0xe8b6('0x4c')](handleError(_0x4b0cc1,null));};exports['removeTeams']=function(_0x2804ff,_0x12326c,_0x1c36bc){return db['Team']['findAll']({'where':{'id':_0x2804ff[_0xe8b6('0x3a')][_0xe8b6('0x6e')]},'attributes':['id'],'include':[{'model':db[_0xe8b6('0x61')],'as':_0xe8b6('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xe8b6('0x2c')](handleEntityNotFound(_0x12326c,null))['then'](function(_0x3dc824){var _0x213422=_['map'](_0x3dc824,'id');var _0x40d6cd=[];var _0x2435e1=[];var _0x17c529=squel[_0xe8b6('0x77')]();_0x17c529[_0xe8b6('0x78')](_0xe8b6('0x79'))[_0xe8b6('0x7a')](_0xe8b6('0x7b'),'tq')[_0xe8b6('0x7c')](_0xe8b6('0x7d'),'ut',_0xe8b6('0x7e'))[_0xe8b6('0x44')](_0xe8b6('0x7f'),_0x2804ff['params']['id']);for(var _0x36f6e7=0x0;_0x36f6e7<_0x3dc824['length'];_0x36f6e7+=0x1){let _0x5af968=_0x3dc824[_0x36f6e7];for(var _0x4c6318=0x0;_0x4c6318<_0x5af968['Agents']['length'];_0x4c6318+=0x1){let _0x308fd3=_0x5af968['Agents'][_0x4c6318];var _0x3bdf15=_0x17c529[_0xe8b6('0x80')]();_0x3bdf15['where'](_0xe8b6('0x81'),_0x308fd3['id']);_0x2435e1['push'](db[_0xe8b6('0x72')][_0xe8b6('0x3a')](_0x3bdf15[_0xe8b6('0x82')](),{'type':db[_0xe8b6('0x72')][_0xe8b6('0x83')][_0xe8b6('0x84')]})['then'](function(_0x1fab55){if(_0x1fab55[_0xe8b6('0x40')]===0x1){return _0x308fd3['id'];}else{var _0x175674=_[_0xe8b6('0x85')](_[_0xe8b6('0x36')](_0x1fab55,_0xe8b6('0x86')),function(_0x48751d){return _[_0xe8b6('0x87')](_0x213422,_0x48751d);});if(_0x175674){return _0x308fd3['id'];}}}));}}return BPromise[_0xe8b6('0x88')](_0x2435e1)[_0xe8b6('0x2c')](function(_0x1b59fb){_0x40d6cd=_(_0x40d6cd)[_0xe8b6('0x89')](_0x1b59fb)[_0xe8b6('0x8a')]()[_0xe8b6('0x8b')]();return db[_0xe8b6('0x49')]['find']({'where':{'id':_0x2804ff[_0xe8b6('0x4e')]['id']}})['then'](function(_0x4ee1eb){return db[_0xe8b6('0x72')][_0xe8b6('0x73')](function(_0x30d702){return _0x4ee1eb[_0xe8b6('0x8c')](_0x2804ff['query'][_0xe8b6('0x6e')],{'transaction':_0x30d702})[_0xe8b6('0x2c')](function(){if(!_['isEmpty'](_0x40d6cd)){return _0x4ee1eb['removeAgents'](_0x40d6cd,{'transaction':_0x30d702});}})[_0xe8b6('0x2c')](function(){_0x40d6cd[_0xe8b6('0x8d')](function(_0x300349){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x300349,'WhatsappQueueId':_0x4ee1eb['id']});});});});});});})[_0xe8b6('0x2c')](respondWithStatusCode(_0x12326c,null))['catch'](handleError(_0x12326c,null));};exports['addAgents']=function(_0x2ed0af,_0x2917d3,_0x3f2e80){return db[_0xe8b6('0x49')]['find']({'where':{'id':_0x2ed0af['params']['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x2917d3,null))['then'](function(_0x5b6f6b){if(_0x5b6f6b){return _0x5b6f6b[_0xe8b6('0x8e')](_0x2ed0af['body'][_0xe8b6('0x6e')],_[_0xe8b6('0x8f')](_0x2ed0af[_0xe8b6('0x53')],[_0xe8b6('0x6e'),'id'])||{})[_0xe8b6('0x90')](function(_0xb5506b){for(var _0x2d5403=0x0;_0x2d5403<_0x2ed0af[_0xe8b6('0x53')][_0xe8b6('0x6e')]['length'];_0x2d5403+=0x1){socket[_0xe8b6('0x91')](_0xe8b6('0x76'),{'UserId':Number(_0x2ed0af[_0xe8b6('0x53')][_0xe8b6('0x6e')][_0x2d5403]),'WhatsappQueueId':Number(_0x2ed0af['params']['id'])});}return _0xb5506b;});}})['then'](respondWithResult(_0x2917d3,null))[_0xe8b6('0x4c')](handleError(_0x2917d3,null));};exports[_0xe8b6('0x92')]=function(_0xac9c34,_0x4f5084,_0x179f58){return db['WhatsappQueue'][_0xe8b6('0x51')]({'where':{'id':_0xac9c34[_0xe8b6('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4f5084,null))[_0xe8b6('0x2c')](function(_0x78dd3e){if(_0x78dd3e){return _0x78dd3e[_0xe8b6('0x92')](_0xac9c34[_0xe8b6('0x3a')]['ids'])[_0xe8b6('0x2c')](function(){if(_[_0xe8b6('0x93')](_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')])){for(var _0x5829a1=0x0;_0x5829a1<_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')][_0xe8b6('0x40')];_0x5829a1+=0x1){socket[_0xe8b6('0x91')](_0xe8b6('0x94'),{'UserId':Number(_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')][_0x5829a1]),'WhatsappQueueId':Number(_0xac9c34[_0xe8b6('0x4e')]['id'])});}}else{socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0xac9c34[_0xe8b6('0x3a')][_0xe8b6('0x6e')]),'WhatsappQueueId':Number(_0xac9c34[_0xe8b6('0x4e')]['id'])});}});}})[_0xe8b6('0x2c')](respondWithStatusCode(_0x4f5084,null))[_0xe8b6('0x4c')](handleError(_0x4f5084,null));};exports[_0xe8b6('0x95')]=function(_0x348ff3,_0x209a66,_0x4ef65d){var _0x3fa335={};var _0x3ea0ab={};var _0x106eeb;var _0x24c09d;return db['WhatsappQueue'][_0xe8b6('0x5c')]({'where':{'id':_0x348ff3['params']['id']}})[_0xe8b6('0x2c')](handleEntityNotFound(_0x209a66,null))[_0xe8b6('0x2c')](function(_0x409e71){if(_0x409e71){_0x106eeb=_0x409e71;_0x3ea0ab[_0xe8b6('0x39')]=_[_0xe8b6('0x3b')](db[_0xe8b6('0x61')][_0xe8b6('0x37')]);_0x3ea0ab[_0xe8b6('0x3a')]=_[_0xe8b6('0x3b')](_0x348ff3[_0xe8b6('0x3a')]);_0x3ea0ab[_0xe8b6('0x3c')]=_['intersection'](_0x3ea0ab[_0xe8b6('0x39')],_0x3ea0ab[_0xe8b6('0x3a')]);_0x3fa335[_0xe8b6('0x3e')]=_[_0xe8b6('0x3d')](_0x3ea0ab[_0xe8b6('0x39')],qs[_0xe8b6('0x3f')](_0x348ff3[_0xe8b6('0x3a')][_0xe8b6('0x3f')]));_0x3fa335[_0xe8b6('0x3e')]=_0x3fa335[_0xe8b6('0x3e')][_0xe8b6('0x40')]?_0x3fa335[_0xe8b6('0x3e')]:_0x3ea0ab['model'];_0x3fa335['order']=qs[_0xe8b6('0x43')](_0x348ff3[_0xe8b6('0x3a')][_0xe8b6('0x43')]);_0x3fa335[_0xe8b6('0x44')]=qs[_0xe8b6('0x3c')](_[_0xe8b6('0x5f')](_0x348ff3[_0xe8b6('0x3a')],_0x3ea0ab[_0xe8b6('0x3c')]));if(_0x348ff3['query'][_0xe8b6('0x45')]){_0x3fa335[_0xe8b6('0x44')]=_[_0xe8b6('0x50')](_0x3fa335[_0xe8b6('0x44')],{'$or':_[_0xe8b6('0x36')](_0x3fa335[_0xe8b6('0x3e')],function(_0x3b26f4){var _0x375b73={};_0x375b73[_0x3b26f4]={'$like':'%'+_0x348ff3[_0xe8b6('0x3a')]['filter']+'%'};return _0x375b73;})});}_0x3fa335=_[_0xe8b6('0x50')]({},_0x3fa335,_0x348ff3[_0xe8b6('0x48')]);return _0x106eeb[_0xe8b6('0x95')](_0x3fa335);}})[_0xe8b6('0x2c')](function(_0x15b3d0){if(_0x15b3d0){_0x24c09d=_0x15b3d0[_0xe8b6('0x40')];if(!_0x348ff3[_0xe8b6('0x3a')][_0xe8b6('0x41')](_0xe8b6('0x42'))){_0x3fa335['limit']=qs[_0xe8b6('0x26')](_0x348ff3[_0xe8b6('0x3a')]['limit']);_0x3fa335[_0xe8b6('0x24')]=qs[_0xe8b6('0x24')](_0x348ff3['query']['offset']);}return _0x106eeb['getAgents'](_0x3fa335);}})['then'](function(_0x52358d){if(_0x52358d){return _0x52358d?{'count':_0x24c09d,'rows':_0x52358d}:null;}})[_0xe8b6('0x2c')](respondWithResult(_0x209a66,null))['catch'](handleError(_0x209a66,null));};
\ No newline at end of file
index 7b2227c..4b90d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e1b=['emit','hook','exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','save','update','remove'];(function(_0xb85b10,_0x5d5338){var _0x5d5356=function(_0x248b7a){while(--_0x248b7a){_0xb85b10['push'](_0xb85b10['shift']());}};_0x5d5356(++_0x5d5338);}(_0x1e1b,0x12f));var _0xb1e1=function(_0x4b2251,_0x393f10){_0x4b2251=_0x4b2251-0x0;var _0x5d22fb=_0x1e1b[_0x4b2251];return _0x5d22fb;};'use strict';var EventEmitter=require(_0xb1e1('0x0'));var WhatsappQueue=require(_0xb1e1('0x1'))['db'][_0xb1e1('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xb1e1('0x3')](0x0);var events={'afterCreate':_0xb1e1('0x4'),'afterUpdate':_0xb1e1('0x5'),'afterDestroy':_0xb1e1('0x6')};function emitEvent(_0x3d1811){return function(_0xc4a1c5,_0x1e4d0f,_0x45380c){WhatsappQueueEvents[_0xb1e1('0x7')](_0x3d1811+':'+_0xc4a1c5['id'],_0xc4a1c5);WhatsappQueueEvents[_0xb1e1('0x7')](_0x3d1811,_0xc4a1c5);_0x45380c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xb1e1('0x8')](e,emitEvent(event));}}module[_0xb1e1('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x32c3=['emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners'];(function(_0x1f9efe,_0x1915b9){var _0x1d30fa=function(_0x29fee5){while(--_0x29fee5){_0x1f9efe['push'](_0x1f9efe['shift']());}};_0x1d30fa(++_0x1915b9);}(_0x32c3,0x195));var _0x332c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x32c3[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x332c('0x0'));var WhatsappQueue=require(_0x332c('0x1'))['db']['WhatsappQueue'];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x332c('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x24a7d1){return function(_0x36b7ab,_0x279986,_0xe973f){WhatsappQueueEvents[_0x332c('0x3')](_0x24a7d1+':'+_0x36b7ab['id'],_0x36b7ab);WhatsappQueueEvents['emit'](_0x24a7d1,_0x36b7ab);_0xe973f(null);};}for(var e in events){if(events[_0x332c('0x4')](e)){var event=events[e];WhatsappQueue[_0x332c('0x5')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
index 0960874..b7fcc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae2f=['util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0xae2f,0x138));var _0xfae2=function(_0xdaab62,_0x2728ab){_0xdaab62=_0xdaab62-0x0;var _0x13d767=_0xae2f[_0xdaab62];return _0x13d767;};'use strict';var _=require('lodash');var util=require(_0xfae2('0x0'));var logger=require(_0xfae2('0x1'))('api');var moment=require(_0xfae2('0x2'));var BPromise=require(_0xfae2('0x3'));var rp=require(_0xfae2('0x4'));var fs=require('fs');var path=require(_0xfae2('0x5'));var rimraf=require('rimraf');var config=require(_0xfae2('0x6'));var attributes=require(_0xfae2('0x7'));module[_0xfae2('0x8')]=function(_0x4485a4,_0x39342e){return _0x4485a4[_0xfae2('0x9')](_0xfae2('0xa'),attributes,{'tableName':_0xfae2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x856d=['whatsapp_queues','lodash','util','../../config/logger','moment','path','../../config/environment','./whatsappQueue.attributes','exports','define'];(function(_0x5e1e42,_0x14220e){var _0x540daa=function(_0x59b5c1){while(--_0x59b5c1){_0x5e1e42['push'](_0x5e1e42['shift']());}};_0x540daa(++_0x14220e);}(_0x856d,0xa1));var _0xd856=function(_0x4340b4,_0x52b0e8){_0x4340b4=_0x4340b4-0x0;var _0x494fdc=_0x856d[_0x4340b4];return _0x494fdc;};'use strict';var _=require(_0xd856('0x0'));var util=require(_0xd856('0x1'));var logger=require(_0xd856('0x2'))('api');var moment=require(_0xd856('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd856('0x4'));var rimraf=require('rimraf');var config=require(_0xd856('0x5'));var attributes=require(_0xd856('0x6'));module[_0xd856('0x7')]=function(_0xe88bc1,_0x23073b){return _0xe88bc1[_0xd856('0x8')]('WhatsappQueue',attributes,{'tableName':_0xd856('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 237395d..f517268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37d0=['error','code','message','info','result','catch','GetWhatsappQueue','WhatsappQueue','options','raw','attributes','limit','include','map','model','then','ShowWhatsappQueue','find','where','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','register','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0xe6e64a,_0x8f5a0f){var _0x2c96f5=function(_0x256073){while(--_0x256073){_0xe6e64a['push'](_0xe6e64a['shift']());}};_0x2c96f5(++_0x8f5a0f);}(_0x37d0,0x1c3));var _0x037d=function(_0x10ff70,_0x58d537){_0x10ff70=_0x10ff70-0x0;var _0x52191f=_0x37d0[_0x10ff70];return _0x52191f;};'use strict';var _=require('lodash');var util=require(_0x037d('0x0'));var moment=require('moment');var BPromise=require(_0x037d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x037d('0x2'));var db=require(_0x037d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x037d('0x4'))(_0x037d('0x5'));var config=require('../../config/environment');var jayson=require(_0x037d('0x6'));var client=jayson[_0x037d('0x7')]['http']({'port':0x232a});config[_0x037d('0x8')]=_[_0x037d('0x9')](config[_0x037d('0x8')],{'host':_0x037d('0xa'),'port':0x18eb});var socket=require(_0x037d('0xb'))(new Redis(config[_0x037d('0x8')]));require('./whatsappQueue.socket')[_0x037d('0xc')](socket);function respondWithRpcPromise(_0x460336,_0x421c36,_0x49b6e9){return new BPromise(function(_0x537a9b,_0x4175d4){return client['request'](_0x460336,_0x49b6e9)['then'](function(_0x4891d5){logger['info'](_0x037d('0xd'),_0x421c36,_0x037d('0xe'));logger[_0x037d('0xf')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x421c36,_0x037d('0xe'),JSON[_0x037d('0x10')](_0x4891d5));if(_0x4891d5[_0x037d('0x11')]){if(_0x4891d5[_0x037d('0x11')][_0x037d('0x12')]===0x1f4){logger[_0x037d('0x11')](_0x037d('0xd'),_0x421c36,_0x4891d5['error']['message']);return _0x4175d4(_0x4891d5['error'][_0x037d('0x13')]);}logger[_0x037d('0x11')](_0x037d('0xd'),_0x421c36,_0x4891d5[_0x037d('0x11')][_0x037d('0x13')]);return _0x537a9b(_0x4891d5[_0x037d('0x11')][_0x037d('0x13')]);}else{logger[_0x037d('0x14')](_0x037d('0xd'),_0x421c36,_0x037d('0xe'));_0x537a9b(_0x4891d5[_0x037d('0x15')][_0x037d('0x13')]);}})[_0x037d('0x16')](function(_0x402b4e){logger[_0x037d('0x11')](_0x037d('0xd'),_0x421c36,_0x402b4e);_0x4175d4(_0x402b4e);});});}exports[_0x037d('0x17')]=function(_0x7e8bf6){var _0x415654=this;return new Promise(function(_0x14b3e4,_0x352d30){return db[_0x037d('0x18')]['findAll']({'raw':_0x7e8bf6[_0x037d('0x19')]?_0x7e8bf6[_0x037d('0x19')][_0x037d('0x1a')]===undefined?!![]:![]:!![],'where':_0x7e8bf6['options']?_0x7e8bf6[_0x037d('0x19')]['where']||null:null,'attributes':_0x7e8bf6[_0x037d('0x19')]?_0x7e8bf6[_0x037d('0x19')][_0x037d('0x1b')]||null:null,'limit':_0x7e8bf6[_0x037d('0x19')]?_0x7e8bf6[_0x037d('0x19')][_0x037d('0x1c')]||null:null,'include':_0x7e8bf6[_0x037d('0x19')]?_0x7e8bf6[_0x037d('0x19')][_0x037d('0x1d')]?_[_0x037d('0x1e')](_0x7e8bf6[_0x037d('0x19')][_0x037d('0x1d')],function(_0x287c46){return{'model':db[_0x287c46[_0x037d('0x1f')]],'as':_0x287c46['as'],'attributes':_0x287c46[_0x037d('0x1b')],'include':_0x287c46[_0x037d('0x1d')]?_[_0x037d('0x1e')](_0x287c46[_0x037d('0x1d')],function(_0x455189){return{'model':db[_0x455189['model']],'as':_0x455189['as'],'attributes':_0x455189[_0x037d('0x1b')],'include':_0x455189['include']?_[_0x037d('0x1e')](_0x455189[_0x037d('0x1d')],function(_0x2194fc){return{'model':db[_0x2194fc['model']],'as':_0x2194fc['as'],'attributes':_0x2194fc[_0x037d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x037d('0x20')](function(_0x371af2){logger[_0x037d('0x14')](_0x037d('0x17'),_0x7e8bf6);logger[_0x037d('0xf')](_0x037d('0x17'),_0x7e8bf6,JSON['stringify'](_0x371af2));_0x14b3e4(_0x371af2);})[_0x037d('0x16')](function(_0x481868){logger['error'](_0x037d('0x17'),_0x481868[_0x037d('0x13')],_0x7e8bf6);_0x352d30(_0x415654[_0x037d('0x11')](0x1f4,_0x481868[_0x037d('0x13')]));});});};exports[_0x037d('0x21')]=function(_0x53942f){var _0x1afadd=this;return new Promise(function(_0x3ee253,_0x44bfc1){return db['WhatsappQueue'][_0x037d('0x22')]({'raw':_0x53942f['options']?_0x53942f[_0x037d('0x19')][_0x037d('0x1a')]===undefined?!![]:![]:!![],'where':_0x53942f['options']?_0x53942f['options'][_0x037d('0x23')]||null:null,'attributes':_0x53942f[_0x037d('0x19')]?_0x53942f[_0x037d('0x19')][_0x037d('0x1b')]||null:null,'include':_0x53942f[_0x037d('0x19')]?_0x53942f[_0x037d('0x19')][_0x037d('0x1d')]?_['map'](_0x53942f['options'][_0x037d('0x1d')],function(_0x612182){return{'model':db[_0x612182[_0x037d('0x1f')]],'as':_0x612182['as'],'attributes':_0x612182['attributes'],'include':_0x612182[_0x037d('0x1d')]?_['map'](_0x612182[_0x037d('0x1d')],function(_0x4354f5){return{'model':db[_0x4354f5[_0x037d('0x1f')]],'as':_0x4354f5['as'],'attributes':_0x4354f5[_0x037d('0x1b')],'include':_0x4354f5[_0x037d('0x1d')]?_['map'](_0x4354f5[_0x037d('0x1d')],function(_0x309435){return{'model':db[_0x309435['model']],'as':_0x309435['as'],'attributes':_0x309435[_0x037d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5992bc){logger[_0x037d('0x14')](_0x037d('0x21'),_0x53942f);logger[_0x037d('0xf')]('ShowWhatsappQueue',_0x53942f,JSON[_0x037d('0x10')](_0x5992bc));_0x3ee253(_0x5992bc);})[_0x037d('0x16')](function(_0x19f3b9){logger[_0x037d('0x11')](_0x037d('0x21'),_0x19f3b9[_0x037d('0x13')],_0x53942f);_0x44bfc1(_0x1afadd[_0x037d('0x11')](0x1f4,_0x19f3b9[_0x037d('0x13')]));});});};
\ No newline at end of file
+var _0x55ab=['findAll','options','raw','where','attributes','limit','map','include','model','debug','ShowWhatsappQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./whatsappQueue.socket','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetWhatsappQueue','WhatsappQueue'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x55ab,0x1b8));var _0xb55a=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x55ab[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0xb55a('0x0'));var moment=require(_0xb55a('0x1'));var BPromise=require(_0xb55a('0x2'));var rs=require(_0xb55a('0x3'));var fs=require('fs');var Redis=require(_0xb55a('0x4'));var db=require(_0xb55a('0x5'))['db'];var utils=require(_0xb55a('0x6'));var logger=require(_0xb55a('0x7'))('rpc');var config=require(_0xb55a('0x8'));var jayson=require(_0xb55a('0x9'));var client=jayson[_0xb55a('0xa')][_0xb55a('0xb')]({'port':0x232a});config[_0xb55a('0xc')]=_[_0xb55a('0xd')](config[_0xb55a('0xc')],{'host':_0xb55a('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb55a('0xf'))['register'](socket);function respondWithRpcPromise(_0xd6ef91,_0x1c2330,_0x3426ca){return new BPromise(function(_0x95af85,_0x217f88){return client[_0xb55a('0x10')](_0xd6ef91,_0x3426ca)[_0xb55a('0x11')](function(_0x20145f){logger[_0xb55a('0x12')](_0xb55a('0x13'),_0x1c2330,_0xb55a('0x14'));logger['debug'](_0xb55a('0x15'),_0x1c2330,'request\x20sent',JSON[_0xb55a('0x16')](_0x20145f));if(_0x20145f[_0xb55a('0x17')]){if(_0x20145f[_0xb55a('0x17')]['code']===0x1f4){logger[_0xb55a('0x17')]('WhatsappQueue,\x20%s,\x20%s',_0x1c2330,_0x20145f[_0xb55a('0x17')][_0xb55a('0x18')]);return _0x217f88(_0x20145f['error'][_0xb55a('0x18')]);}logger['error'](_0xb55a('0x13'),_0x1c2330,_0x20145f[_0xb55a('0x17')]['message']);return _0x95af85(_0x20145f[_0xb55a('0x17')][_0xb55a('0x18')]);}else{logger['info']('WhatsappQueue,\x20%s,\x20%s',_0x1c2330,_0xb55a('0x14'));_0x95af85(_0x20145f['result'][_0xb55a('0x18')]);}})[_0xb55a('0x19')](function(_0x24d109){logger['error'](_0xb55a('0x13'),_0x1c2330,_0x24d109);_0x217f88(_0x24d109);});});}exports[_0xb55a('0x1a')]=function(_0x355aa9){var _0x5ccf2f=this;return new Promise(function(_0x39ea86,_0x3d7ab0){return db[_0xb55a('0x1b')][_0xb55a('0x1c')]({'raw':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x1e')]===undefined?!![]:![]:!![],'where':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9['options'][_0xb55a('0x1f')]||null:null,'attributes':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x20')]||null:null,'limit':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x21')]||null:null,'include':_0x355aa9[_0xb55a('0x1d')]?_0x355aa9['options']['include']?_[_0xb55a('0x22')](_0x355aa9[_0xb55a('0x1d')][_0xb55a('0x23')],function(_0x51bb74){return{'model':db[_0x51bb74[_0xb55a('0x24')]],'as':_0x51bb74['as'],'attributes':_0x51bb74['attributes'],'include':_0x51bb74['include']?_[_0xb55a('0x22')](_0x51bb74[_0xb55a('0x23')],function(_0x1a5c49){return{'model':db[_0x1a5c49[_0xb55a('0x24')]],'as':_0x1a5c49['as'],'attributes':_0x1a5c49[_0xb55a('0x20')],'include':_0x1a5c49[_0xb55a('0x23')]?_['map'](_0x1a5c49[_0xb55a('0x23')],function(_0x11521a){return{'model':db[_0x11521a[_0xb55a('0x24')]],'as':_0x11521a['as'],'attributes':_0x11521a[_0xb55a('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x77bb16){logger[_0xb55a('0x12')](_0xb55a('0x1a'),_0x355aa9);logger[_0xb55a('0x25')](_0xb55a('0x1a'),_0x355aa9,JSON[_0xb55a('0x16')](_0x77bb16));_0x39ea86(_0x77bb16);})['catch'](function(_0x18aebd){logger['error']('GetWhatsappQueue',_0x18aebd['message'],_0x355aa9);_0x3d7ab0(_0x5ccf2f[_0xb55a('0x17')](0x1f4,_0x18aebd[_0xb55a('0x18')]));});});};exports['ShowWhatsappQueue']=function(_0x980636){var _0x2b57b6=this;return new Promise(function(_0x3db51a,_0x7bda05){return db['WhatsappQueue']['find']({'raw':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')][_0xb55a('0x1e')]===undefined?!![]:![]:!![],'where':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')][_0xb55a('0x1f')]||null:null,'attributes':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')][_0xb55a('0x20')]||null:null,'include':_0x980636[_0xb55a('0x1d')]?_0x980636[_0xb55a('0x1d')]['include']?_[_0xb55a('0x22')](_0x980636['options'][_0xb55a('0x23')],function(_0x4d7f06){return{'model':db[_0x4d7f06['model']],'as':_0x4d7f06['as'],'attributes':_0x4d7f06['attributes'],'include':_0x4d7f06[_0xb55a('0x23')]?_[_0xb55a('0x22')](_0x4d7f06[_0xb55a('0x23')],function(_0x4b824e){return{'model':db[_0x4b824e[_0xb55a('0x24')]],'as':_0x4b824e['as'],'attributes':_0x4b824e[_0xb55a('0x20')],'include':_0x4b824e[_0xb55a('0x23')]?_['map'](_0x4b824e['include'],function(_0x36b62e){return{'model':db[_0x36b62e[_0xb55a('0x24')]],'as':_0x36b62e['as'],'attributes':_0x36b62e[_0xb55a('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e1c34){logger[_0xb55a('0x12')](_0xb55a('0x26'),_0x980636);logger['debug'](_0xb55a('0x26'),_0x980636,JSON[_0xb55a('0x16')](_0x2e1c34));_0x3db51a(_0x2e1c34);})['catch'](function(_0x3de5d5){logger[_0xb55a('0x17')](_0xb55a('0x26'),_0x3de5d5[_0xb55a('0x18')],_0x980636);_0x7bda05(_0x2b57b6['error'](0x1f4,_0x3de5d5[_0xb55a('0x18')]));});});};
\ No newline at end of file
index f3a4c7f..85aadbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc1b=['emit','removeListener','length','whatsappQueue:','./whatsappQueue.events','save','remove','update'];(function(_0x4ce15a,_0x105a9d){var _0x4bd614=function(_0x28f287){while(--_0x28f287){_0x4ce15a['push'](_0x4ce15a['shift']());}};_0x4bd614(++_0x105a9d);}(_0xbc1b,0x94));var _0xbbc1=function(_0x836465,_0x5442ae){_0x836465=_0x836465-0x0;var _0x2150ea=_0xbc1b[_0x836465];return _0x2150ea;};'use strict';var WhatsappQueueEvents=require(_0xbbc1('0x0'));var events=[_0xbbc1('0x1'),_0xbbc1('0x2'),_0xbbc1('0x3')];function createListener(_0x39572a,_0x3ed599){return function(_0x46d44e){_0x3ed599[_0xbbc1('0x4')](_0x39572a,_0x46d44e);};}function removeListener(_0x2070c1,_0x4d9107){return function(){WhatsappQueueEvents[_0xbbc1('0x5')](_0x2070c1,_0x4d9107);};}exports['register']=function(_0x5abda5){for(var _0x52c8e7=0x0,_0x584754=events[_0xbbc1('0x6')];_0x52c8e7<_0x584754;_0x52c8e7++){var _0x12079d=events[_0x52c8e7];var _0x1e3a99=createListener(_0xbbc1('0x7')+_0x12079d,_0x5abda5);WhatsappQueueEvents['on'](_0x12079d,_0x1e3a99);}};
\ No newline at end of file
+var _0x6c9c=['register','length','whatsappQueue:','./whatsappQueue.events','save','update','removeListener'];(function(_0x29695a,_0x153d43){var _0x2405fc=function(_0x1b4e1f){while(--_0x1b4e1f){_0x29695a['push'](_0x29695a['shift']());}};_0x2405fc(++_0x153d43);}(_0x6c9c,0x96));var _0xc6c9=function(_0xd9ed40,_0xc28ab0){_0xd9ed40=_0xd9ed40-0x0;var _0x2cabad=_0x6c9c[_0xd9ed40];return _0x2cabad;};'use strict';var WhatsappQueueEvents=require(_0xc6c9('0x0'));var events=[_0xc6c9('0x1'),'remove',_0xc6c9('0x2')];function createListener(_0x4b9b1a,_0x3207f2){return function(_0x13acbe){_0x3207f2['emit'](_0x4b9b1a,_0x13acbe);};}function removeListener(_0x996712,_0x4d7cbd){return function(){WhatsappQueueEvents[_0xc6c9('0x3')](_0x996712,_0x4d7cbd);};}exports[_0xc6c9('0x4')]=function(_0x39b932){for(var _0x20d814=0x0,_0x20295d=events[_0xc6c9('0x5')];_0x20d814<_0x20295d;_0x20d814++){var _0x33f1a4=events[_0x20d814];var _0x81891a=createListener(_0xc6c9('0x6')+_0x33f1a4,_0x39b932);WhatsappQueueEvents['on'](_0x33f1a4,_0x81891a);}};
\ No newline at end of file
index 7eab8be..57e9a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3152=['post','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','/describe','describe','get','/:id','show'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x3152,0x147));var _0x2315=function(_0x3070dc,_0x40cf11){_0x3070dc=_0x3070dc-0x0;var _0x431489=_0x3152[_0x3070dc];return _0x431489;};'use strict';var multer=require(_0x2315('0x0'));var util=require(_0x2315('0x1'));var path=require(_0x2315('0x2'));var timeout=require(_0x2315('0x3'));var express=require(_0x2315('0x4'));var router=express['Router']();var fs_extra=require(_0x2315('0x5'));var auth=require(_0x2315('0x6'));var interaction=require(_0x2315('0x7'));var config=require('../../config/environment');var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x2315('0x8')](),controller[_0x2315('0x9')]);router['get'](_0x2315('0xa'),auth[_0x2315('0x8')](),controller[_0x2315('0xb')]);router[_0x2315('0xc')](_0x2315('0xd'),auth[_0x2315('0x8')](),controller[_0x2315('0xe')]);router[_0x2315('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x2315('0x8')](),controller['update']);router[_0x2315('0x10')](_0x2315('0xd'),auth['isAuthenticated'](),controller[_0x2315('0x11')]);module[_0x2315('0x12')]=router;
\ No newline at end of file
+var _0x7424=['describe','/:id','show','create','put','delete','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x390dc1,_0x4b8ec7){var _0x3820ae=function(_0x194e1e){while(--_0x194e1e){_0x390dc1['push'](_0x390dc1['shift']());}};_0x3820ae(++_0x4b8ec7);}(_0x7424,0x16f));var _0x4742=function(_0x575624,_0x437f3a){_0x575624=_0x575624-0x0;var _0x595921=_0x7424[_0x575624];return _0x595921;};'use strict';var multer=require(_0x4742('0x0'));var util=require(_0x4742('0x1'));var path=require(_0x4742('0x2'));var timeout=require('connect-timeout');var express=require(_0x4742('0x3'));var router=express[_0x4742('0x4')]();var fs_extra=require(_0x4742('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4742('0x6'));var config=require(_0x4742('0x7'));var controller=require('./whatsappQueueReport.controller');router['get']('/',auth[_0x4742('0x8')](),controller[_0x4742('0x9')]);router[_0x4742('0xa')]('/describe',auth[_0x4742('0x8')](),controller[_0x4742('0xb')]);router['get'](_0x4742('0xc'),auth[_0x4742('0x8')](),controller[_0x4742('0xd')]);router['post']('/',auth[_0x4742('0x8')](),controller[_0x4742('0xe')]);router[_0x4742('0xf')]('/:id',auth[_0x4742('0x8')](),controller['update']);router[_0x4742('0x10')](_0x4742('0xc'),auth[_0x4742('0x8')](),controller['destroy']);module[_0x4742('0x11')]=router;
\ No newline at end of file
index 2fbb432..0fdce59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2d9566,_0x1aa421){var _0x5ce511=function(_0x1e64c7){while(--_0x1e64c7){_0x2d9566['push'](_0x2d9566['shift']());}};_0x5ce511(++_0x1aa421);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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(_0x4a60d4,_0x348b50){var _0x3ed031=function(_0xe56e2e){while(--_0xe56e2e){_0x4a60d4['push'](_0x4a60d4['shift']());}};_0x3ed031(++_0x348b50);}(_0x7a54,0x106));var _0x47a5=function(_0x30d04d,_0x417353){_0x30d04d=_0x30d04d-0x0;var _0x525e9b=_0x7a54[_0x30d04d];return _0x525e9b;};'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 8bce621..550aa5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['options','includeAll','include','findAll','then','show','params','rawAttributes','catch','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','ejs','squel','crypto','jsforce','desk.js','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','status','end','undefined','count','offset','Content-Range','apply','reject','update','destroy','error','name','index','map','WhatsappQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL'];(function(_0x44719a,_0x4caa09){var _0x353591=function(_0x2b8d13){while(--_0x2b8d13){_0x44719a['push'](_0x44719a['shift']());}};_0x353591(++_0x4caa09);}(_0x5b12,0xa3));var _0x25b1=function(_0x4b9349,_0x200451){_0x4b9349=_0x4b9349-0x0;var _0x1b1d01=_0x5b12[_0x4b9349];return _0x1b1d01;};'use strict';var emlformat=require(_0x25b1('0x0'));var rimraf=require(_0x25b1('0x1'));var zipdir=require(_0x25b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x25b1('0x3'));var moment=require('moment');var BPromise=require(_0x25b1('0x4'));var Mustache=require(_0x25b1('0x5'));var util=require('util');var path=require(_0x25b1('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x25b1('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x25b1('0x8'));var crypto=require(_0x25b1('0x9'));var jsforce=require(_0x25b1('0xa'));var deskjs=require(_0x25b1('0xb'));var toCsv=require(_0x25b1('0xc'));var querystring=require(_0x25b1('0xd'));var Papa=require(_0x25b1('0xe'));var Redis=require(_0x25b1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x25b1('0x10'));var as=require(_0x25b1('0x11'));var hardwareService=require(_0x25b1('0x12'));var logger=require(_0x25b1('0x13'))(_0x25b1('0x14'));var utils=require(_0x25b1('0x15'));var config=require(_0x25b1('0x16'));var licenseUtil=require(_0x25b1('0x17'));var db=require(_0x25b1('0x18'))['db'];function respondWithStatusCode(_0x459070,_0xbdd348){_0xbdd348=_0xbdd348||0xcc;return function(_0x1c5421){if(_0x1c5421){return _0x459070[_0x25b1('0x19')](_0xbdd348);}return _0x459070[_0x25b1('0x1a')](_0xbdd348)[_0x25b1('0x1b')]();};}function respondWithResult(_0x76b5c4,_0x4ee40c){_0x4ee40c=_0x4ee40c||0xc8;return function(_0x2c337a){if(_0x2c337a){return _0x76b5c4[_0x25b1('0x1a')](_0x4ee40c)['json'](_0x2c337a);}};}function respondWithFilteredResult(_0xb5b9cf,_0x4bb1bb){return function(_0xe32e02){if(_0xe32e02){var _0x4a5a58=typeof _0x4bb1bb['offset']===_0x25b1('0x1c')&&typeof _0x4bb1bb['limit']===_0x25b1('0x1c');var _0x2ca567=_0xe32e02[_0x25b1('0x1d')];var _0x27ccc9=_0x4a5a58?0x0:_0x4bb1bb[_0x25b1('0x1e')];var _0x2a7d14=_0x4a5a58?_0xe32e02[_0x25b1('0x1d')]:_0x4bb1bb[_0x25b1('0x1e')]+_0x4bb1bb['limit'];var _0x4ecff1;if(_0x2a7d14>=_0x2ca567){_0x2a7d14=_0x2ca567;_0x4ecff1=0xc8;}else{_0x4ecff1=0xce;}_0xb5b9cf[_0x25b1('0x1a')](_0x4ecff1);return _0xb5b9cf['set'](_0x25b1('0x1f'),_0x27ccc9+'-'+_0x2a7d14+'/'+_0x2ca567)['json'](_0xe32e02);}return null;};}function patchUpdates(_0x3bfd7d){return function(_0x59aa37){try{jsonpatch[_0x25b1('0x20')](_0x59aa37,_0x3bfd7d,!![]);}catch(_0x529310){return BPromise[_0x25b1('0x21')](_0x529310);}return _0x59aa37['save']();};}function saveUpdates(_0x4e3f48,_0x565cfd){return function(_0x3bca9f){if(_0x3bca9f){return _0x3bca9f[_0x25b1('0x22')](_0x4e3f48)['then'](function(_0x19bab8){return _0x19bab8;});}return null;};}function removeEntity(_0x26b555,_0x1e5915){return function(_0x246acd){if(_0x246acd){return _0x246acd[_0x25b1('0x23')]()['then'](function(){_0x26b555[_0x25b1('0x1a')](0xcc)[_0x25b1('0x1b')]();});}};}function handleEntityNotFound(_0xd22469,_0x282187){return function(_0x1f37ed){if(!_0x1f37ed){_0xd22469[_0x25b1('0x19')](0x194);}return _0x1f37ed;};}function handleError(_0x5d9ed7,_0x3c05c6){_0x3c05c6=_0x3c05c6||0x1f4;return function(_0x27dd68){logger[_0x25b1('0x24')](_0x27dd68['stack']);if(_0x27dd68[_0x25b1('0x25')]){delete _0x27dd68[_0x25b1('0x25')];}_0x5d9ed7[_0x25b1('0x1a')](_0x3c05c6)['send'](_0x27dd68);};}exports[_0x25b1('0x26')]=function(_0x54ce2d,_0x19ecd1){var _0x3febb8={},_0x3a4475={},_0x293413={'count':0x0,'rows':[]};var _0x362118=_[_0x25b1('0x27')](db[_0x25b1('0x28')]['rawAttributes'],function(_0x30d455){return{'name':_0x30d455[_0x25b1('0x29')],'type':_0x30d455[_0x25b1('0x2a')][_0x25b1('0x2b')]};});_0x3a4475[_0x25b1('0x2c')]=_['map'](_0x362118,_0x25b1('0x25'));_0x3a4475[_0x25b1('0x2d')]=_[_0x25b1('0x2e')](_0x54ce2d[_0x25b1('0x2d')]);_0x3a4475[_0x25b1('0x2f')]=_['intersection'](_0x3a4475['model'],_0x3a4475[_0x25b1('0x2d')]);_0x3febb8['attributes']=_[_0x25b1('0x30')](_0x3a4475[_0x25b1('0x2c')],qs[_0x25b1('0x31')](_0x54ce2d['query']['fields']));_0x3febb8[_0x25b1('0x32')]=_0x3febb8[_0x25b1('0x32')][_0x25b1('0x33')]?_0x3febb8['attributes']:_0x3a4475[_0x25b1('0x2c')];if(!_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x34')](_0x25b1('0x35'))){_0x3febb8['limit']=qs[_0x25b1('0x36')](_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x36')]);_0x3febb8['offset']=qs['offset'](_0x54ce2d[_0x25b1('0x2d')]['offset']);}_0x3febb8[_0x25b1('0x37')]=qs[_0x25b1('0x38')](_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x38')]);_0x3febb8[_0x25b1('0x39')]=qs[_0x25b1('0x2f')](_[_0x25b1('0x3a')](_0x54ce2d[_0x25b1('0x2d')],_0x3a4475[_0x25b1('0x2f')]),_0x362118);if(_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x3b')]){_0x3febb8[_0x25b1('0x39')]=_[_0x25b1('0x3c')](_0x3febb8[_0x25b1('0x39')],{'$or':_[_0x25b1('0x27')](_0x362118,function(_0x4837d5){if(_0x4837d5[_0x25b1('0x2a')]!==_0x25b1('0x3d')){var _0x53423d={};_0x53423d[_0x4837d5[_0x25b1('0x25')]]={'$like':'%'+_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x3b')]+'%'};return _0x53423d;}})});}_0x3febb8=_[_0x25b1('0x3c')]({},_0x3febb8,_0x54ce2d[_0x25b1('0x3e')]);var _0x5bdefd={'where':_0x3febb8[_0x25b1('0x39')]};return db['WhatsappQueueReport'][_0x25b1('0x1d')](_0x5bdefd)['then'](function(_0x2e8747){_0x293413[_0x25b1('0x1d')]=_0x2e8747;if(_0x54ce2d[_0x25b1('0x2d')][_0x25b1('0x3f')]){_0x3febb8[_0x25b1('0x40')]=[{'all':!![]}];}return db[_0x25b1('0x28')][_0x25b1('0x41')](_0x3febb8);})[_0x25b1('0x42')](function(_0x3f9754){_0x293413['rows']=_0x3f9754;return _0x293413;})[_0x25b1('0x42')](respondWithFilteredResult(_0x19ecd1,_0x3febb8))['catch'](handleError(_0x19ecd1,null));};exports[_0x25b1('0x43')]=function(_0x2f56ac,_0x4d4e32){var _0x52d3f8={'raw':!![],'where':{'id':_0x2f56ac[_0x25b1('0x44')]['id']}},_0x39b4c7={};_0x39b4c7[_0x25b1('0x2c')]=_[_0x25b1('0x2e')](db[_0x25b1('0x28')][_0x25b1('0x45')]);_0x39b4c7[_0x25b1('0x2d')]=_[_0x25b1('0x2e')](_0x2f56ac[_0x25b1('0x2d')]);_0x39b4c7[_0x25b1('0x2f')]=_[_0x25b1('0x30')](_0x39b4c7[_0x25b1('0x2c')],_0x39b4c7[_0x25b1('0x2d')]);_0x52d3f8[_0x25b1('0x32')]=_[_0x25b1('0x30')](_0x39b4c7[_0x25b1('0x2c')],qs[_0x25b1('0x31')](_0x2f56ac['query']['fields']));_0x52d3f8['attributes']=_0x52d3f8[_0x25b1('0x32')]['length']?_0x52d3f8[_0x25b1('0x32')]:_0x39b4c7['model'];if(_0x2f56ac[_0x25b1('0x2d')][_0x25b1('0x3f')]){_0x52d3f8[_0x25b1('0x40')]=[{'all':!![]}];}_0x52d3f8=_[_0x25b1('0x3c')]({},_0x52d3f8,_0x2f56ac[_0x25b1('0x3e')]);return db[_0x25b1('0x28')]['find'](_0x52d3f8)[_0x25b1('0x42')](handleEntityNotFound(_0x4d4e32,null))[_0x25b1('0x42')](respondWithResult(_0x4d4e32,null))[_0x25b1('0x46')](handleError(_0x4d4e32,null));};exports[_0x25b1('0x47')]=function(_0x58ae67,_0x489f73){return db[_0x25b1('0x28')][_0x25b1('0x47')](_0x58ae67['body'],{})[_0x25b1('0x42')](respondWithResult(_0x489f73,0xc9))['catch'](handleError(_0x489f73,null));};exports[_0x25b1('0x22')]=function(_0x4b6181,_0x543f9b){if(_0x4b6181[_0x25b1('0x48')]['id']){delete _0x4b6181[_0x25b1('0x48')]['id'];}return db[_0x25b1('0x28')][_0x25b1('0x49')]({'where':{'id':_0x4b6181['params']['id']}})[_0x25b1('0x42')](handleEntityNotFound(_0x543f9b,null))['then'](saveUpdates(_0x4b6181[_0x25b1('0x48')],null))['then'](respondWithResult(_0x543f9b,null))[_0x25b1('0x46')](handleError(_0x543f9b,null));};exports[_0x25b1('0x23')]=function(_0x1fcc79,_0x4fb92e){return db[_0x25b1('0x28')][_0x25b1('0x49')]({'where':{'id':_0x1fcc79[_0x25b1('0x44')]['id']}})[_0x25b1('0x42')](handleEntityNotFound(_0x4fb92e,null))[_0x25b1('0x42')](removeEntity(_0x4fb92e,null))[_0x25b1('0x46')](handleError(_0x4fb92e,null));};exports['describe']=function(_0x134c64,_0x133f50){return db[_0x25b1('0x28')][_0x25b1('0x4a')]()[_0x25b1('0x42')](respondWithResult(_0x133f50,null))[_0x25b1('0x46')](handleError(_0x133f50,null));};
\ No newline at end of file
+var _0x0fd9=['includeAll','include','rows','catch','show','params','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../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','update','then','error','stack','name','index','map','WhatsappQueueReport','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options'];(function(_0x25ca40,_0x2259f7){var _0x1b25f6=function(_0x151b39){while(--_0x151b39){_0x25ca40['push'](_0x25ca40['shift']());}};_0x1b25f6(++_0x2259f7);}(_0x0fd9,0xa3));var _0x90fd=function(_0x41c381,_0x1176bd){_0x41c381=_0x41c381-0x0;var _0x427981=_0x0fd9[_0x41c381];return _0x427981;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x90fd('0x0'));var zipdir=require(_0x90fd('0x1'));var jsonpatch=require(_0x90fd('0x2'));var rp=require(_0x90fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x90fd('0x4'));var util=require(_0x90fd('0x5'));var path=require(_0x90fd('0x6'));var sox=require(_0x90fd('0x7'));var csv=require(_0x90fd('0x8'));var ejs=require(_0x90fd('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x90fd('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x90fd('0xb'));var toCsv=require(_0x90fd('0x8'));var querystring=require('querystring');var Papa=require(_0x90fd('0xc'));var Redis=require(_0x90fd('0xd'));var authService=require(_0x90fd('0xe'));var qs=require(_0x90fd('0xf'));var as=require(_0x90fd('0x10'));var hardwareService=require(_0x90fd('0x11'));var logger=require(_0x90fd('0x12'))(_0x90fd('0x13'));var utils=require(_0x90fd('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x90fd('0x15'));var db=require(_0x90fd('0x16'))['db'];function respondWithStatusCode(_0x4e8b99,_0x1439ed){_0x1439ed=_0x1439ed||0xcc;return function(_0x37a0f8){if(_0x37a0f8){return _0x4e8b99[_0x90fd('0x17')](_0x1439ed);}return _0x4e8b99['status'](_0x1439ed)[_0x90fd('0x18')]();};}function respondWithResult(_0x48e701,_0x1cae40){_0x1cae40=_0x1cae40||0xc8;return function(_0xb402d9){if(_0xb402d9){return _0x48e701[_0x90fd('0x19')](_0x1cae40)[_0x90fd('0x1a')](_0xb402d9);}};}function respondWithFilteredResult(_0x3c5da8,_0x442a19){return function(_0x296a64){if(_0x296a64){var _0x4eb953=typeof _0x442a19['offset']===_0x90fd('0x1b')&&typeof _0x442a19[_0x90fd('0x1c')]==='undefined';var _0x130489=_0x296a64[_0x90fd('0x1d')];var _0x1fcc87=_0x4eb953?0x0:_0x442a19['offset'];var _0x3f9c76=_0x4eb953?_0x296a64[_0x90fd('0x1d')]:_0x442a19[_0x90fd('0x1e')]+_0x442a19[_0x90fd('0x1c')];var _0x251957;if(_0x3f9c76>=_0x130489){_0x3f9c76=_0x130489;_0x251957=0xc8;}else{_0x251957=0xce;}_0x3c5da8[_0x90fd('0x19')](_0x251957);return _0x3c5da8[_0x90fd('0x1f')](_0x90fd('0x20'),_0x1fcc87+'-'+_0x3f9c76+'/'+_0x130489)[_0x90fd('0x1a')](_0x296a64);}return null;};}function patchUpdates(_0x90197e){return function(_0x19e79b){try{jsonpatch[_0x90fd('0x21')](_0x19e79b,_0x90197e,!![]);}catch(_0x1fb31a){return BPromise[_0x90fd('0x22')](_0x1fb31a);}return _0x19e79b[_0x90fd('0x23')]();};}function saveUpdates(_0x493c26,_0x35ce4e){return function(_0xc4e4e2){if(_0xc4e4e2){return _0xc4e4e2[_0x90fd('0x24')](_0x493c26)[_0x90fd('0x25')](function(_0x411a6a){return _0x411a6a;});}return null;};}function removeEntity(_0x3ad6c6,_0x30f67e){return function(_0x300262){if(_0x300262){return _0x300262['destroy']()[_0x90fd('0x25')](function(){_0x3ad6c6['status'](0xcc)[_0x90fd('0x18')]();});}};}function handleEntityNotFound(_0x18d5b3,_0x2ffea2){return function(_0x31667c){if(!_0x31667c){_0x18d5b3[_0x90fd('0x17')](0x194);}return _0x31667c;};}function handleError(_0x4c962f,_0x35c38d){_0x35c38d=_0x35c38d||0x1f4;return function(_0xe333f0){logger[_0x90fd('0x26')](_0xe333f0[_0x90fd('0x27')]);if(_0xe333f0[_0x90fd('0x28')]){delete _0xe333f0[_0x90fd('0x28')];}_0x4c962f['status'](_0x35c38d)['send'](_0xe333f0);};}exports[_0x90fd('0x29')]=function(_0x170cfb,_0x2924e9){var _0x404971={},_0x397aaf={},_0x59b3e8={'count':0x0,'rows':[]};var _0x4f69e7=_[_0x90fd('0x2a')](db[_0x90fd('0x2b')][_0x90fd('0x2c')],function(_0x3a0102){return{'name':_0x3a0102['fieldName'],'type':_0x3a0102['type'][_0x90fd('0x2d')]};});_0x397aaf[_0x90fd('0x2e')]=_[_0x90fd('0x2a')](_0x4f69e7,_0x90fd('0x28'));_0x397aaf['query']=_[_0x90fd('0x2f')](_0x170cfb[_0x90fd('0x30')]);_0x397aaf[_0x90fd('0x31')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],_0x397aaf[_0x90fd('0x30')]);_0x404971[_0x90fd('0x33')]=_[_0x90fd('0x32')](_0x397aaf[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x34')]));_0x404971[_0x90fd('0x33')]=_0x404971[_0x90fd('0x33')][_0x90fd('0x35')]?_0x404971[_0x90fd('0x33')]:_0x397aaf['model'];if(!_0x170cfb[_0x90fd('0x30')][_0x90fd('0x36')](_0x90fd('0x37'))){_0x404971[_0x90fd('0x1c')]=qs[_0x90fd('0x1c')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1c')]);_0x404971[_0x90fd('0x1e')]=qs[_0x90fd('0x1e')](_0x170cfb[_0x90fd('0x30')][_0x90fd('0x1e')]);}_0x404971[_0x90fd('0x38')]=qs[_0x90fd('0x39')](_0x170cfb['query'][_0x90fd('0x39')]);_0x404971[_0x90fd('0x3a')]=qs[_0x90fd('0x31')](_[_0x90fd('0x3b')](_0x170cfb['query'],_0x397aaf[_0x90fd('0x31')]),_0x4f69e7);if(_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]){_0x404971['where']=_['merge'](_0x404971[_0x90fd('0x3a')],{'$or':_[_0x90fd('0x2a')](_0x4f69e7,function(_0x377319){if(_0x377319[_0x90fd('0x3d')]!==_0x90fd('0x3e')){var _0x254200={};_0x254200[_0x377319[_0x90fd('0x28')]]={'$like':'%'+_0x170cfb[_0x90fd('0x30')][_0x90fd('0x3c')]+'%'};return _0x254200;}})});}_0x404971=_[_0x90fd('0x3f')]({},_0x404971,_0x170cfb[_0x90fd('0x40')]);var _0x43c84c={'where':_0x404971[_0x90fd('0x3a')]};return db[_0x90fd('0x2b')][_0x90fd('0x1d')](_0x43c84c)[_0x90fd('0x25')](function(_0x2717ca){_0x59b3e8[_0x90fd('0x1d')]=_0x2717ca;if(_0x170cfb['query'][_0x90fd('0x41')]){_0x404971[_0x90fd('0x42')]=[{'all':!![]}];}return db[_0x90fd('0x2b')]['findAll'](_0x404971);})['then'](function(_0x47b8c8){_0x59b3e8[_0x90fd('0x43')]=_0x47b8c8;return _0x59b3e8;})[_0x90fd('0x25')](respondWithFilteredResult(_0x2924e9,_0x404971))[_0x90fd('0x44')](handleError(_0x2924e9,null));};exports[_0x90fd('0x45')]=function(_0x1361d9,_0x311c7e){var _0x363365={'raw':!![],'where':{'id':_0x1361d9[_0x90fd('0x46')]['id']}},_0x733d4d={};_0x733d4d[_0x90fd('0x2e')]=_[_0x90fd('0x2f')](db[_0x90fd('0x2b')][_0x90fd('0x2c')]);_0x733d4d[_0x90fd('0x30')]=_[_0x90fd('0x2f')](_0x1361d9['query']);_0x733d4d['filters']=_[_0x90fd('0x32')](_0x733d4d[_0x90fd('0x2e')],_0x733d4d[_0x90fd('0x30')]);_0x363365['attributes']=_['intersection'](_0x733d4d[_0x90fd('0x2e')],qs[_0x90fd('0x34')](_0x1361d9['query']['fields']));_0x363365[_0x90fd('0x33')]=_0x363365[_0x90fd('0x33')]['length']?_0x363365['attributes']:_0x733d4d[_0x90fd('0x2e')];if(_0x1361d9[_0x90fd('0x30')][_0x90fd('0x41')]){_0x363365['include']=[{'all':!![]}];}_0x363365=_[_0x90fd('0x3f')]({},_0x363365,_0x1361d9[_0x90fd('0x40')]);return db['WhatsappQueueReport']['find'](_0x363365)['then'](handleEntityNotFound(_0x311c7e,null))[_0x90fd('0x25')](respondWithResult(_0x311c7e,null))[_0x90fd('0x44')](handleError(_0x311c7e,null));};exports['create']=function(_0x2d42b3,_0x2b73f7){return db[_0x90fd('0x2b')][_0x90fd('0x47')](_0x2d42b3[_0x90fd('0x48')],{})['then'](respondWithResult(_0x2b73f7,0xc9))['catch'](handleError(_0x2b73f7,null));};exports[_0x90fd('0x24')]=function(_0x326e4d,_0x125874){if(_0x326e4d[_0x90fd('0x48')]['id']){delete _0x326e4d[_0x90fd('0x48')]['id'];}return db[_0x90fd('0x2b')][_0x90fd('0x49')]({'where':{'id':_0x326e4d[_0x90fd('0x46')]['id']}})[_0x90fd('0x25')](handleEntityNotFound(_0x125874,null))[_0x90fd('0x25')](saveUpdates(_0x326e4d['body'],null))[_0x90fd('0x25')](respondWithResult(_0x125874,null))[_0x90fd('0x44')](handleError(_0x125874,null));};exports[_0x90fd('0x4a')]=function(_0x38021b,_0x4b47bc){return db['WhatsappQueueReport'][_0x90fd('0x49')]({'where':{'id':_0x38021b['params']['id']}})['then'](handleEntityNotFound(_0x4b47bc,null))[_0x90fd('0x25')](removeEntity(_0x4b47bc,null))[_0x90fd('0x44')](handleError(_0x4b47bc,null));};exports[_0x90fd('0x4b')]=function(_0xb8a2af,_0x13c428){return db[_0x90fd('0x2b')][_0x90fd('0x4b')]()['then'](respondWithResult(_0x13c428,null))['catch'](handleError(_0x13c428,null));};
\ No newline at end of file
index 1b25ff0..8232815 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0fa=['rimraf','../../config/environment','./whatsappQueueReport.attributes','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3068fc,_0x1b214a){var _0x12b7f3=function(_0x3e0fd3){while(--_0x3e0fd3){_0x3068fc['push'](_0x3068fc['shift']());}};_0x12b7f3(++_0x1b214a);}(_0xa0fa,0xbc));var _0xaa0f=function(_0x1a5970,_0x25ffc6){_0x1a5970=_0x1a5970-0x0;var _0x4fd7af=_0xa0fa[_0x1a5970];return _0x4fd7af;};'use strict';var _=require(_0xaa0f('0x0'));var util=require('util');var logger=require(_0xaa0f('0x1'))(_0xaa0f('0x2'));var moment=require(_0xaa0f('0x3'));var BPromise=require(_0xaa0f('0x4'));var rp=require(_0xaa0f('0x5'));var fs=require('fs');var path=require(_0xaa0f('0x6'));var rimraf=require(_0xaa0f('0x7'));var config=require(_0xaa0f('0x8'));var attributes=require(_0xaa0f('0x9'));module['exports']=function(_0x7dbdcc,_0x53b365){return _0x7dbdcc['define'](_0xaa0f('0xa'),attributes,{'tableName':_0xaa0f('0xb'),'paranoid':![],'indexes':[{'name':_0xaa0f('0xc'),'fields':[_0xaa0f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1cf0=['../../config/environment','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','bluebird','path'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x1cf0,0x16c));var _0x01cf=function(_0x256e32,_0x4013bc){_0x256e32=_0x256e32-0x0;var _0x464070=_0x1cf0[_0x256e32];return _0x464070;};'use strict';var _=require(_0x01cf('0x0'));var util=require(_0x01cf('0x1'));var logger=require(_0x01cf('0x2'))('api');var moment=require('moment');var BPromise=require(_0x01cf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x01cf('0x4'));var rimraf=require('rimraf');var config=require(_0x01cf('0x5'));var attributes=require('./whatsappQueueReport.attributes');module['exports']=function(_0x404627,_0x37287c){return _0x404627['define'](_0x01cf('0x6'),attributes,{'tableName':_0x01cf('0x7'),'paranoid':![],'indexes':[{'name':_0x01cf('0x8'),'fields':[_0x01cf('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 5b82f05..4de1139 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f2=['moment','randomstring','../../config/utils','rpc','../../config/environment','client','http','then','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','WhatsappQueueReport','create','options','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','update','raw','where','attributes','limit','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x23f2,0x1a2));var _0x223f=function(_0x570692,_0x1c648c){_0x570692=_0x570692-0x0;var _0x2e3043=_0x23f2[_0x570692];return _0x2e3043;};'use strict';var _=require(_0x223f('0x0'));var util=require(_0x223f('0x1'));var moment=require(_0x223f('0x2'));var BPromise=require('bluebird');var rs=require(_0x223f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x223f('0x4'));var logger=require('../../config/logger')(_0x223f('0x5'));var config=require(_0x223f('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x223f('0x7')][_0x223f('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4b4083,_0x2141c5,_0x44df6e){return new BPromise(function(_0x26a85a,_0x309ffc){return client['request'](_0x4b4083,_0x44df6e)[_0x223f('0x9')](function(_0x28bea4){logger['info'](_0x223f('0xa'),_0x2141c5,_0x223f('0xb'));logger[_0x223f('0xc')](_0x223f('0xd'),_0x2141c5,_0x223f('0xb'),JSON[_0x223f('0xe')](_0x28bea4));if(_0x28bea4[_0x223f('0xf')]){if(_0x28bea4[_0x223f('0xf')]['code']===0x1f4){logger[_0x223f('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2141c5,_0x28bea4[_0x223f('0xf')][_0x223f('0x10')]);return _0x309ffc(_0x28bea4[_0x223f('0xf')]['message']);}logger[_0x223f('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2141c5,_0x28bea4[_0x223f('0xf')][_0x223f('0x10')]);return _0x26a85a(_0x28bea4[_0x223f('0xf')][_0x223f('0x10')]);}else{logger[_0x223f('0x11')](_0x223f('0xa'),_0x2141c5,_0x223f('0xb'));_0x26a85a(_0x28bea4[_0x223f('0x12')][_0x223f('0x10')]);}})[_0x223f('0x13')](function(_0x33d573){logger[_0x223f('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x2141c5,_0x33d573);_0x309ffc(_0x33d573);});});}exports['CreateWhatsappQueueReport']=function(_0x57c361){var _0x2af659=this;return new Promise(function(_0x241bc3,_0x5e22e3){return db[_0x223f('0x14')][_0x223f('0x15')](_0x57c361['body'],{'raw':_0x57c361[_0x223f('0x16')]?_0x57c361['options']['raw']===undefined?!![]:![]:!![]})[_0x223f('0x9')](function(_0xb03ed0){logger[_0x223f('0x11')](_0x223f('0x17'),_0x57c361);logger[_0x223f('0xc')](_0x223f('0x17'),_0x57c361,JSON[_0x223f('0xe')](_0xb03ed0));_0x241bc3(_0xb03ed0);})[_0x223f('0x13')](function(_0x52f386){logger['error'](_0x223f('0x17'),_0x52f386[_0x223f('0x10')],_0x57c361);_0x5e22e3(_0x2af659['error'](0x1f4,_0x52f386[_0x223f('0x10')]));});});};exports[_0x223f('0x18')]=function(_0x436d94){var _0x11d308=this;return new Promise(function(_0x4ff138,_0x13119e){return db['WhatsappQueueReport'][_0x223f('0x19')](_0x436d94['body'],{'raw':_0x436d94['options']?_0x436d94[_0x223f('0x16')][_0x223f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x436d94['options']?_0x436d94[_0x223f('0x16')][_0x223f('0x1b')]||null:null,'attributes':_0x436d94[_0x223f('0x16')]?_0x436d94[_0x223f('0x16')][_0x223f('0x1c')]||null:null,'limit':_0x436d94[_0x223f('0x16')]?_0x436d94[_0x223f('0x16')][_0x223f('0x1d')]||null:null})[_0x223f('0x9')](function(_0x6bb6c7){logger[_0x223f('0x11')]('UpdateWhatsappQueueReport',_0x436d94);logger[_0x223f('0xc')]('UpdateWhatsappQueueReport',_0x436d94,JSON[_0x223f('0xe')](_0x6bb6c7));_0x4ff138(_0x6bb6c7);})[_0x223f('0x13')](function(_0x3cc5d0){logger[_0x223f('0xf')](_0x223f('0x18'),_0x3cc5d0[_0x223f('0x10')],_0x436d94);_0x13119e(_0x11d308[_0x223f('0xf')](0x1f4,_0x3cc5d0[_0x223f('0x10')]));});});};
\ No newline at end of file
+var _0x07ac=['UpdateWhatsappQueueReport','lodash','util','moment','bluebird','../../config/utils','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error','WhatsappQueueReport,\x20%s,\x20%s','message','result','catch','CreateWhatsappQueueReport','body','options','raw','WhatsappQueueReport','where','limit'];(function(_0x2c1db5,_0x20b060){var _0x204189=function(_0x20398e){while(--_0x20398e){_0x2c1db5['push'](_0x2c1db5['shift']());}};_0x204189(++_0x20b060);}(_0x07ac,0x160));var _0xc07a=function(_0x22bdd3,_0x552e50){_0x22bdd3=_0x22bdd3-0x0;var _0x44d9d9=_0x07ac[_0x22bdd3];return _0x44d9d9;};'use strict';var _=require(_0xc07a('0x0'));var util=require(_0xc07a('0x1'));var moment=require(_0xc07a('0x2'));var BPromise=require(_0xc07a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc07a('0x4'));var logger=require('../../config/logger')(_0xc07a('0x5'));var config=require('../../config/environment');var jayson=require(_0xc07a('0x6'));var client=jayson[_0xc07a('0x7')][_0xc07a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x54cc6d,_0x20b514,_0x4179c7){return new BPromise(function(_0x5a1286,_0x582f32){return client['request'](_0x54cc6d,_0x4179c7)[_0xc07a('0x9')](function(_0x3906b7){logger[_0xc07a('0xa')]('WhatsappQueueReport,\x20%s,\x20%s',_0x20b514,_0xc07a('0xb'));logger[_0xc07a('0xc')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x20b514,_0xc07a('0xb'),JSON[_0xc07a('0xd')](_0x3906b7));if(_0x3906b7[_0xc07a('0xe')]){if(_0x3906b7[_0xc07a('0xe')]['code']===0x1f4){logger[_0xc07a('0xe')](_0xc07a('0xf'),_0x20b514,_0x3906b7['error'][_0xc07a('0x10')]);return _0x582f32(_0x3906b7[_0xc07a('0xe')]['message']);}logger[_0xc07a('0xe')](_0xc07a('0xf'),_0x20b514,_0x3906b7[_0xc07a('0xe')][_0xc07a('0x10')]);return _0x5a1286(_0x3906b7[_0xc07a('0xe')][_0xc07a('0x10')]);}else{logger[_0xc07a('0xa')]('WhatsappQueueReport,\x20%s,\x20%s',_0x20b514,'request\x20sent');_0x5a1286(_0x3906b7[_0xc07a('0x11')][_0xc07a('0x10')]);}})[_0xc07a('0x12')](function(_0x574771){logger[_0xc07a('0xe')]('WhatsappQueueReport,\x20%s,\x20%s',_0x20b514,_0x574771);_0x582f32(_0x574771);});});}exports[_0xc07a('0x13')]=function(_0x5f1284){var _0x11c9af=this;return new Promise(function(_0x5f2396,_0x43293b){return db['WhatsappQueueReport']['create'](_0x5f1284[_0xc07a('0x14')],{'raw':_0x5f1284[_0xc07a('0x15')]?_0x5f1284['options'][_0xc07a('0x16')]===undefined?!![]:![]:!![]})[_0xc07a('0x9')](function(_0x3b93bd){logger['info'](_0xc07a('0x13'),_0x5f1284);logger[_0xc07a('0xc')](_0xc07a('0x13'),_0x5f1284,JSON[_0xc07a('0xd')](_0x3b93bd));_0x5f2396(_0x3b93bd);})[_0xc07a('0x12')](function(_0x5d60f0){logger[_0xc07a('0xe')](_0xc07a('0x13'),_0x5d60f0[_0xc07a('0x10')],_0x5f1284);_0x43293b(_0x11c9af[_0xc07a('0xe')](0x1f4,_0x5d60f0['message']));});});};exports['UpdateWhatsappQueueReport']=function(_0x4d9300){var _0x510683=this;return new Promise(function(_0x56f5ee,_0x285bd8){return db[_0xc07a('0x17')]['update'](_0x4d9300[_0xc07a('0x14')],{'raw':_0x4d9300[_0xc07a('0x15')]?_0x4d9300['options'][_0xc07a('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4d9300[_0xc07a('0x15')]?_0x4d9300[_0xc07a('0x15')][_0xc07a('0x18')]||null:null,'attributes':_0x4d9300[_0xc07a('0x15')]?_0x4d9300[_0xc07a('0x15')]['attributes']||null:null,'limit':_0x4d9300['options']?_0x4d9300[_0xc07a('0x15')][_0xc07a('0x19')]||null:null})['then'](function(_0x43a411){logger[_0xc07a('0xa')](_0xc07a('0x1a'),_0x4d9300);logger[_0xc07a('0xc')](_0xc07a('0x1a'),_0x4d9300,JSON[_0xc07a('0xd')](_0x43a411));_0x56f5ee(_0x43a411);})['catch'](function(_0xee5c5d){logger[_0xc07a('0xe')]('UpdateWhatsappQueueReport',_0xee5c5d[_0xc07a('0x10')],_0x4d9300);_0x285bd8(_0x510683[_0xc07a('0xe')](0x1f4,_0xee5c5d[_0xc07a('0x10')]));});});};
\ No newline at end of file
index 0efb99c..2ee7f58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94d9=['../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','get','/:id','show','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x8ceea6,_0x23ea95){var _0x5dd6d5=function(_0x3d2624){while(--_0x3d2624){_0x8ceea6['push'](_0x8ceea6['shift']());}};_0x5dd6d5(++_0x23ea95);}(_0x94d9,0x1e0));var _0x994d=function(_0x4e3cc2,_0x5132a4){_0x4e3cc2=_0x4e3cc2-0x0;var _0x3bbce7=_0x94d9[_0x4e3cc2];return _0x3bbce7;};'use strict';var multer=require('multer');var util=require(_0x994d('0x0'));var path=require(_0x994d('0x1'));var timeout=require(_0x994d('0x2'));var express=require(_0x994d('0x3'));var router=express[_0x994d('0x4')]();var fs_extra=require(_0x994d('0x5'));var auth=require(_0x994d('0x6'));var interaction=require(_0x994d('0x7'));var config=require(_0x994d('0x8'));var controller=require(_0x994d('0x9'));router['get']('/',auth[_0x994d('0xa')](),controller['index']);router[_0x994d('0xb')]('/describe',auth[_0x994d('0xa')](),controller['describe']);router[_0x994d('0xb')](_0x994d('0xc'),auth[_0x994d('0xa')](),controller[_0x994d('0xd')]);router['post']('/',auth[_0x994d('0xa')](),controller['create']);router[_0x994d('0xe')]('/:id',auth[_0x994d('0xa')](),controller[_0x994d('0xf')]);router[_0x994d('0x10')]('/:id',auth[_0x994d('0xa')](),controller[_0x994d('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x7c41=['update','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappTransferReport.controller','get','isAuthenticated','index','/:id','post','create','put'];(function(_0xc82d1a,_0x145c50){var _0x32fad2=function(_0x232731){while(--_0x232731){_0xc82d1a['push'](_0xc82d1a['shift']());}};_0x32fad2(++_0x145c50);}(_0x7c41,0x158));var _0x17c4=function(_0x5c9747,_0x423026){_0x5c9747=_0x5c9747-0x0;var _0x52c13c=_0x7c41[_0x5c9747];return _0x52c13c;};'use strict';var multer=require(_0x17c4('0x0'));var util=require(_0x17c4('0x1'));var path=require(_0x17c4('0x2'));var timeout=require(_0x17c4('0x3'));var express=require(_0x17c4('0x4'));var router=express['Router']();var fs_extra=require(_0x17c4('0x5'));var auth=require(_0x17c4('0x6'));var interaction=require(_0x17c4('0x7'));var config=require('../../config/environment');var controller=require(_0x17c4('0x8'));router[_0x17c4('0x9')]('/',auth[_0x17c4('0xa')](),controller[_0x17c4('0xb')]);router[_0x17c4('0x9')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0x17c4('0x9')](_0x17c4('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x17c4('0xd')]('/',auth[_0x17c4('0xa')](),controller[_0x17c4('0xe')]);router[_0x17c4('0xf')](_0x17c4('0xc'),auth[_0x17c4('0xa')](),controller[_0x17c4('0x10')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x17c4('0x11')]=router;
\ No newline at end of file
index b11f006..d87b194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed9=['account','agent','queue','sequelize','exports','ENUM'];(function(_0xed9bbc,_0x7decd6){var _0x4bcaeb=function(_0x3abe68){while(--_0x3abe68){_0xed9bbc['push'](_0xed9bbc['shift']());}};_0x4bcaeb(++_0x7decd6);}(_0x5ed9,0x1e9));var _0x95ed=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x5ed9[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0x95ed('0x0'));module[_0x95ed('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x95ed('0x2')](_0x95ed('0x3'),_0x95ed('0x4'),_0x95ed('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0xa9e1=['agent','DATE','sequelize','exports','ENUM','account'];(function(_0x15c466,_0x1a423b){var _0x311475=function(_0x5d03f8){while(--_0x5d03f8){_0x15c466['push'](_0x15c466['shift']());}};_0x311475(++_0x1a423b);}(_0xa9e1,0x7a));var _0x1a9e=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0xa9e1[_0x51b1a5];return _0x15c738;};'use strict';var Sequelize=require(_0x1a9e('0x0'));module[_0x1a9e('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x1a9e('0x2')](_0x1a9e('0x3'),_0x1a9e('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x1a9e('0x5')]}};
\ No newline at end of file
index 1cc41c3..ff4f959 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3ee=['query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','show','params','rawAttributes','intersection','includeAll','options','create','body','update','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','then','stack','name','map','WhatsappTransferReport','type','key','model'];(function(_0x3d8d1b,_0x482d36){var _0x20aaee=function(_0x156547){while(--_0x156547){_0x3d8d1b['push'](_0x3d8d1b['shift']());}};_0x20aaee(++_0x482d36);}(_0xd3ee,0x190));var _0xed3e=function(_0x1a37e3,_0x5db8f6){_0x1a37e3=_0x1a37e3-0x0;var _0x4db78a=_0xd3ee[_0x1a37e3];return _0x4db78a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xed3e('0x0'));var zipdir=require(_0xed3e('0x1'));var jsonpatch=require(_0xed3e('0x2'));var rp=require(_0xed3e('0x3'));var moment=require(_0xed3e('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xed3e('0x5'));var path=require(_0xed3e('0x6'));var sox=require(_0xed3e('0x7'));var csv=require(_0xed3e('0x8'));var ejs=require(_0xed3e('0x9'));var fs=require('fs');var fs_extra=require(_0xed3e('0xa'));var _=require(_0xed3e('0xb'));var squel=require(_0xed3e('0xc'));var crypto=require(_0xed3e('0xd'));var jsforce=require(_0xed3e('0xe'));var deskjs=require(_0xed3e('0xf'));var toCsv=require(_0xed3e('0x8'));var querystring=require(_0xed3e('0x10'));var Papa=require(_0xed3e('0x11'));var Redis=require('ioredis');var authService=require(_0xed3e('0x12'));var qs=require(_0xed3e('0x13'));var as=require(_0xed3e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xed3e('0x15'));var utils=require('../../config/utils');var config=require(_0xed3e('0x16'));var licenseUtil=require(_0xed3e('0x17'));var db=require(_0xed3e('0x18'))['db'];function respondWithStatusCode(_0x1132cb,_0x2df230){_0x2df230=_0x2df230||0xcc;return function(_0x38d38e){if(_0x38d38e){return _0x1132cb[_0xed3e('0x19')](_0x2df230);}return _0x1132cb[_0xed3e('0x1a')](_0x2df230)[_0xed3e('0x1b')]();};}function respondWithResult(_0x367723,_0x33e826){_0x33e826=_0x33e826||0xc8;return function(_0x338902){if(_0x338902){return _0x367723[_0xed3e('0x1a')](_0x33e826)[_0xed3e('0x1c')](_0x338902);}};}function respondWithFilteredResult(_0x2d4f23,_0xff6e2e){return function(_0x1135ee){if(_0x1135ee){var _0x1c3db1=typeof _0xff6e2e[_0xed3e('0x1d')]===_0xed3e('0x1e')&&typeof _0xff6e2e[_0xed3e('0x1f')]===_0xed3e('0x1e');var _0x11abbf=_0x1135ee[_0xed3e('0x20')];var _0x38ad91=_0x1c3db1?0x0:_0xff6e2e['offset'];var _0xe9834f=_0x1c3db1?_0x1135ee[_0xed3e('0x20')]:_0xff6e2e[_0xed3e('0x1d')]+_0xff6e2e[_0xed3e('0x1f')];var _0x52660a;if(_0xe9834f>=_0x11abbf){_0xe9834f=_0x11abbf;_0x52660a=0xc8;}else{_0x52660a=0xce;}_0x2d4f23[_0xed3e('0x1a')](_0x52660a);return _0x2d4f23[_0xed3e('0x21')](_0xed3e('0x22'),_0x38ad91+'-'+_0xe9834f+'/'+_0x11abbf)[_0xed3e('0x1c')](_0x1135ee);}return null;};}function patchUpdates(_0x111702){return function(_0x4f885c){try{jsonpatch['apply'](_0x4f885c,_0x111702,!![]);}catch(_0x19d377){return BPromise['reject'](_0x19d377);}return _0x4f885c[_0xed3e('0x23')]();};}function saveUpdates(_0x5e4722,_0x4d4794){return function(_0x3724c2){if(_0x3724c2){return _0x3724c2['update'](_0x5e4722)[_0xed3e('0x24')](function(_0x223251){return _0x223251;});}return null;};}function removeEntity(_0x667f6f,_0x525085){return function(_0x4056de){if(_0x4056de){return _0x4056de['destroy']()[_0xed3e('0x24')](function(){_0x667f6f[_0xed3e('0x1a')](0xcc)[_0xed3e('0x1b')]();});}};}function handleEntityNotFound(_0x31fc7f,_0x26333f){return function(_0x410b04){if(!_0x410b04){_0x31fc7f['sendStatus'](0x194);}return _0x410b04;};}function handleError(_0x432b92,_0x5ac676){_0x5ac676=_0x5ac676||0x1f4;return function(_0x11b607){logger['error'](_0x11b607[_0xed3e('0x25')]);if(_0x11b607['name']){delete _0x11b607[_0xed3e('0x26')];}_0x432b92[_0xed3e('0x1a')](_0x5ac676)['send'](_0x11b607);};}exports['index']=function(_0x1cdd33,_0x2a6f15){var _0x19c55b={},_0x2be05d={},_0x14feb2={'count':0x0,'rows':[]};var _0xf768b2=_[_0xed3e('0x27')](db[_0xed3e('0x28')]['rawAttributes'],function(_0x56ed90){return{'name':_0x56ed90['fieldName'],'type':_0x56ed90[_0xed3e('0x29')][_0xed3e('0x2a')]};});_0x2be05d[_0xed3e('0x2b')]=_[_0xed3e('0x27')](_0xf768b2,'name');_0x2be05d[_0xed3e('0x2c')]=_[_0xed3e('0x2d')](_0x1cdd33[_0xed3e('0x2c')]);_0x2be05d[_0xed3e('0x2e')]=_['intersection'](_0x2be05d[_0xed3e('0x2b')],_0x2be05d[_0xed3e('0x2c')]);_0x19c55b[_0xed3e('0x2f')]=_['intersection'](_0x2be05d['model'],qs[_0xed3e('0x30')](_0x1cdd33['query'][_0xed3e('0x30')]));_0x19c55b['attributes']=_0x19c55b[_0xed3e('0x2f')][_0xed3e('0x31')]?_0x19c55b[_0xed3e('0x2f')]:_0x2be05d['model'];if(!_0x1cdd33[_0xed3e('0x2c')][_0xed3e('0x32')](_0xed3e('0x33'))){_0x19c55b[_0xed3e('0x1f')]=qs['limit'](_0x1cdd33[_0xed3e('0x2c')]['limit']);_0x19c55b['offset']=qs['offset'](_0x1cdd33[_0xed3e('0x2c')][_0xed3e('0x1d')]);}_0x19c55b[_0xed3e('0x34')]=qs[_0xed3e('0x35')](_0x1cdd33[_0xed3e('0x2c')][_0xed3e('0x35')]);_0x19c55b[_0xed3e('0x36')]=qs[_0xed3e('0x2e')](_[_0xed3e('0x37')](_0x1cdd33[_0xed3e('0x2c')],_0x2be05d[_0xed3e('0x2e')]),_0xf768b2);if(_0x1cdd33['query'][_0xed3e('0x38')]){_0x19c55b[_0xed3e('0x36')]=_[_0xed3e('0x39')](_0x19c55b['where'],{'$or':_['map'](_0xf768b2,function(_0x5053dc){if(_0x5053dc[_0xed3e('0x29')]!==_0xed3e('0x3a')){var _0x4c58a0={};_0x4c58a0[_0x5053dc['name']]={'$like':'%'+_0x1cdd33[_0xed3e('0x2c')][_0xed3e('0x38')]+'%'};return _0x4c58a0;}})});}_0x19c55b=_[_0xed3e('0x39')]({},_0x19c55b,_0x1cdd33['options']);var _0x49c2de={'where':_0x19c55b['where']};return db['WhatsappTransferReport'][_0xed3e('0x20')](_0x49c2de)[_0xed3e('0x24')](function(_0x63974f){_0x14feb2[_0xed3e('0x20')]=_0x63974f;if(_0x1cdd33[_0xed3e('0x2c')]['includeAll']){_0x19c55b[_0xed3e('0x3b')]=[{'all':!![]}];}return db[_0xed3e('0x28')][_0xed3e('0x3c')](_0x19c55b);})['then'](function(_0x40c6e5){_0x14feb2['rows']=_0x40c6e5;return _0x14feb2;})['then'](respondWithFilteredResult(_0x2a6f15,_0x19c55b))[_0xed3e('0x3d')](handleError(_0x2a6f15,null));};exports[_0xed3e('0x3e')]=function(_0x498947,_0x5e1784){var _0x3d8d4e={'raw':!![],'where':{'id':_0x498947[_0xed3e('0x3f')]['id']}},_0x4a7646={};_0x4a7646[_0xed3e('0x2b')]=_[_0xed3e('0x2d')](db[_0xed3e('0x28')][_0xed3e('0x40')]);_0x4a7646[_0xed3e('0x2c')]=_['keys'](_0x498947[_0xed3e('0x2c')]);_0x4a7646[_0xed3e('0x2e')]=_['intersection'](_0x4a7646[_0xed3e('0x2b')],_0x4a7646[_0xed3e('0x2c')]);_0x3d8d4e[_0xed3e('0x2f')]=_[_0xed3e('0x41')](_0x4a7646[_0xed3e('0x2b')],qs[_0xed3e('0x30')](_0x498947[_0xed3e('0x2c')]['fields']));_0x3d8d4e[_0xed3e('0x2f')]=_0x3d8d4e[_0xed3e('0x2f')][_0xed3e('0x31')]?_0x3d8d4e['attributes']:_0x4a7646[_0xed3e('0x2b')];if(_0x498947[_0xed3e('0x2c')][_0xed3e('0x42')]){_0x3d8d4e['include']=[{'all':!![]}];}_0x3d8d4e=_['merge']({},_0x3d8d4e,_0x498947[_0xed3e('0x43')]);return db['WhatsappTransferReport']['find'](_0x3d8d4e)[_0xed3e('0x24')](handleEntityNotFound(_0x5e1784,null))[_0xed3e('0x24')](respondWithResult(_0x5e1784,null))[_0xed3e('0x3d')](handleError(_0x5e1784,null));};exports[_0xed3e('0x44')]=function(_0x516451,_0x4149b7){return db[_0xed3e('0x28')]['create'](_0x516451[_0xed3e('0x45')],{})[_0xed3e('0x24')](respondWithResult(_0x4149b7,0xc9))['catch'](handleError(_0x4149b7,null));};exports[_0xed3e('0x46')]=function(_0x4c9d57,_0x4b5ad7){if(_0x4c9d57['body']['id']){delete _0x4c9d57[_0xed3e('0x45')]['id'];}return db[_0xed3e('0x28')][_0xed3e('0x47')]({'where':{'id':_0x4c9d57[_0xed3e('0x3f')]['id']}})[_0xed3e('0x24')](handleEntityNotFound(_0x4b5ad7,null))[_0xed3e('0x24')](saveUpdates(_0x4c9d57[_0xed3e('0x45')],null))[_0xed3e('0x24')](respondWithResult(_0x4b5ad7,null))['catch'](handleError(_0x4b5ad7,null));};exports[_0xed3e('0x48')]=function(_0x4cbcda,_0x4d97f0){return db[_0xed3e('0x28')]['find']({'where':{'id':_0x4cbcda[_0xed3e('0x3f')]['id']}})[_0xed3e('0x24')](handleEntityNotFound(_0x4d97f0,null))[_0xed3e('0x24')](removeEntity(_0x4d97f0,null))[_0xed3e('0x3d')](handleError(_0x4d97f0,null));};exports[_0xed3e('0x49')]=function(_0x24ea3f,_0x14a60c){return db[_0xed3e('0x28')]['describe']()[_0xed3e('0x24')](respondWithResult(_0x14a60c,null))[_0xed3e('0x3d')](handleError(_0x14a60c,null));};
\ No newline at end of file
+var _0xd07e=['sendStatus','end','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','status','error','stack','name','send','index','WhatsappTransferReport','rawAttributes','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','findAll','rows','show','params','include','options','find','create','catch','body','describe','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','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'];(function(_0x14c192,_0x5002fd){var _0x3ec1cf=function(_0x5be35f){while(--_0x5be35f){_0x14c192['push'](_0x14c192['shift']());}};_0x3ec1cf(++_0x5002fd);}(_0xd07e,0x80));var _0xed07=function(_0x575f7b,_0x1c0ff7){_0x575f7b=_0x575f7b-0x0;var _0x396aa1=_0xd07e[_0x575f7b];return _0x396aa1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xed07('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xed07('0x1'));var rp=require('request-promise');var moment=require(_0xed07('0x2'));var BPromise=require(_0xed07('0x3'));var Mustache=require('mustache');var util=require(_0xed07('0x4'));var path=require(_0xed07('0x5'));var sox=require(_0xed07('0x6'));var csv=require(_0xed07('0x7'));var ejs=require(_0xed07('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xed07('0x9'));var squel=require(_0xed07('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xed07('0xb'));var toCsv=require(_0xed07('0x7'));var querystring=require(_0xed07('0xc'));var Papa=require(_0xed07('0xd'));var Redis=require(_0xed07('0xe'));var authService=require(_0xed07('0xf'));var qs=require(_0xed07('0x10'));var as=require(_0xed07('0x11'));var hardwareService=require(_0xed07('0x12'));var logger=require(_0xed07('0x13'))(_0xed07('0x14'));var utils=require('../../config/utils');var config=require(_0xed07('0x15'));var licenseUtil=require(_0xed07('0x16'));var db=require(_0xed07('0x17'))['db'];function respondWithStatusCode(_0x2c589f,_0x1f1d59){_0x1f1d59=_0x1f1d59||0xcc;return function(_0x21aa96){if(_0x21aa96){return _0x2c589f[_0xed07('0x18')](_0x1f1d59);}return _0x2c589f['status'](_0x1f1d59)[_0xed07('0x19')]();};}function respondWithResult(_0x5eba26,_0x2c358d){_0x2c358d=_0x2c358d||0xc8;return function(_0x49b071){if(_0x49b071){return _0x5eba26['status'](_0x2c358d)['json'](_0x49b071);}};}function respondWithFilteredResult(_0x345950,_0x2c45b3){return function(_0x7dee7c){if(_0x7dee7c){var _0x38e6f7=typeof _0x2c45b3['offset']===_0xed07('0x1a')&&typeof _0x2c45b3['limit']===_0xed07('0x1a');var _0x395536=_0x7dee7c[_0xed07('0x1b')];var _0x61a079=_0x38e6f7?0x0:_0x2c45b3['offset'];var _0x7a6b29=_0x38e6f7?_0x7dee7c[_0xed07('0x1b')]:_0x2c45b3[_0xed07('0x1c')]+_0x2c45b3['limit'];var _0x4ebfff;if(_0x7a6b29>=_0x395536){_0x7a6b29=_0x395536;_0x4ebfff=0xc8;}else{_0x4ebfff=0xce;}_0x345950['status'](_0x4ebfff);return _0x345950[_0xed07('0x1d')](_0xed07('0x1e'),_0x61a079+'-'+_0x7a6b29+'/'+_0x395536)['json'](_0x7dee7c);}return null;};}function patchUpdates(_0x3d8488){return function(_0xe4ecf0){try{jsonpatch[_0xed07('0x1f')](_0xe4ecf0,_0x3d8488,!![]);}catch(_0x445275){return BPromise[_0xed07('0x20')](_0x445275);}return _0xe4ecf0[_0xed07('0x21')]();};}function saveUpdates(_0x15f5bf,_0x5a3b37){return function(_0x5bb7b6){if(_0x5bb7b6){return _0x5bb7b6[_0xed07('0x22')](_0x15f5bf)[_0xed07('0x23')](function(_0x1faeb0){return _0x1faeb0;});}return null;};}function removeEntity(_0xb836ab,_0x4b89c1){return function(_0x25b3e6){if(_0x25b3e6){return _0x25b3e6[_0xed07('0x24')]()['then'](function(){_0xb836ab[_0xed07('0x25')](0xcc)[_0xed07('0x19')]();});}};}function handleEntityNotFound(_0x57d898,_0x58846a){return function(_0x16266b){if(!_0x16266b){_0x57d898[_0xed07('0x18')](0x194);}return _0x16266b;};}function handleError(_0x120ea2,_0x417a1c){_0x417a1c=_0x417a1c||0x1f4;return function(_0x1fafb5){logger[_0xed07('0x26')](_0x1fafb5[_0xed07('0x27')]);if(_0x1fafb5['name']){delete _0x1fafb5[_0xed07('0x28')];}_0x120ea2['status'](_0x417a1c)[_0xed07('0x29')](_0x1fafb5);};}exports[_0xed07('0x2a')]=function(_0x143436,_0x1e9113){var _0x7ae630={},_0x1869a7={},_0xa03b7={'count':0x0,'rows':[]};var _0x87b1e2=_['map'](db[_0xed07('0x2b')][_0xed07('0x2c')],function(_0xee197f){return{'name':_0xee197f['fieldName'],'type':_0xee197f['type']['key']};});_0x1869a7[_0xed07('0x2d')]=_['map'](_0x87b1e2,'name');_0x1869a7[_0xed07('0x2e')]=_[_0xed07('0x2f')](_0x143436[_0xed07('0x2e')]);_0x1869a7[_0xed07('0x30')]=_[_0xed07('0x31')](_0x1869a7['model'],_0x1869a7[_0xed07('0x2e')]);_0x7ae630[_0xed07('0x32')]=_['intersection'](_0x1869a7['model'],qs[_0xed07('0x33')](_0x143436[_0xed07('0x2e')][_0xed07('0x33')]));_0x7ae630['attributes']=_0x7ae630[_0xed07('0x32')][_0xed07('0x34')]?_0x7ae630[_0xed07('0x32')]:_0x1869a7[_0xed07('0x2d')];if(!_0x143436[_0xed07('0x2e')][_0xed07('0x35')](_0xed07('0x36'))){_0x7ae630[_0xed07('0x37')]=qs['limit'](_0x143436[_0xed07('0x2e')][_0xed07('0x37')]);_0x7ae630[_0xed07('0x1c')]=qs[_0xed07('0x1c')](_0x143436[_0xed07('0x2e')][_0xed07('0x1c')]);}_0x7ae630[_0xed07('0x38')]=qs[_0xed07('0x39')](_0x143436['query'][_0xed07('0x39')]);_0x7ae630[_0xed07('0x3a')]=qs[_0xed07('0x30')](_[_0xed07('0x3b')](_0x143436[_0xed07('0x2e')],_0x1869a7[_0xed07('0x30')]),_0x87b1e2);if(_0x143436[_0xed07('0x2e')][_0xed07('0x3c')]){_0x7ae630[_0xed07('0x3a')]=_[_0xed07('0x3d')](_0x7ae630[_0xed07('0x3a')],{'$or':_['map'](_0x87b1e2,function(_0xcc067f){if(_0xcc067f[_0xed07('0x3e')]!==_0xed07('0x3f')){var _0x36fae3={};_0x36fae3[_0xcc067f[_0xed07('0x28')]]={'$like':'%'+_0x143436[_0xed07('0x2e')][_0xed07('0x3c')]+'%'};return _0x36fae3;}})});}_0x7ae630=_[_0xed07('0x3d')]({},_0x7ae630,_0x143436['options']);var _0x2d50bb={'where':_0x7ae630['where']};return db[_0xed07('0x2b')][_0xed07('0x1b')](_0x2d50bb)[_0xed07('0x23')](function(_0x31c133){_0xa03b7[_0xed07('0x1b')]=_0x31c133;if(_0x143436['query'][_0xed07('0x40')]){_0x7ae630['include']=[{'all':!![]}];}return db[_0xed07('0x2b')][_0xed07('0x41')](_0x7ae630);})[_0xed07('0x23')](function(_0xebdcd6){_0xa03b7[_0xed07('0x42')]=_0xebdcd6;return _0xa03b7;})[_0xed07('0x23')](respondWithFilteredResult(_0x1e9113,_0x7ae630))['catch'](handleError(_0x1e9113,null));};exports[_0xed07('0x43')]=function(_0x2c5617,_0x746695){var _0x3a89f3={'raw':!![],'where':{'id':_0x2c5617[_0xed07('0x44')]['id']}},_0x1a97e9={};_0x1a97e9[_0xed07('0x2d')]=_[_0xed07('0x2f')](db[_0xed07('0x2b')]['rawAttributes']);_0x1a97e9[_0xed07('0x2e')]=_[_0xed07('0x2f')](_0x2c5617[_0xed07('0x2e')]);_0x1a97e9[_0xed07('0x30')]=_[_0xed07('0x31')](_0x1a97e9[_0xed07('0x2d')],_0x1a97e9['query']);_0x3a89f3[_0xed07('0x32')]=_[_0xed07('0x31')](_0x1a97e9[_0xed07('0x2d')],qs[_0xed07('0x33')](_0x2c5617[_0xed07('0x2e')][_0xed07('0x33')]));_0x3a89f3[_0xed07('0x32')]=_0x3a89f3['attributes'][_0xed07('0x34')]?_0x3a89f3['attributes']:_0x1a97e9[_0xed07('0x2d')];if(_0x2c5617[_0xed07('0x2e')][_0xed07('0x40')]){_0x3a89f3[_0xed07('0x45')]=[{'all':!![]}];}_0x3a89f3=_[_0xed07('0x3d')]({},_0x3a89f3,_0x2c5617[_0xed07('0x46')]);return db['WhatsappTransferReport'][_0xed07('0x47')](_0x3a89f3)['then'](handleEntityNotFound(_0x746695,null))[_0xed07('0x23')](respondWithResult(_0x746695,null))['catch'](handleError(_0x746695,null));};exports['create']=function(_0x18a154,_0x5973c6){return db[_0xed07('0x2b')][_0xed07('0x48')](_0x18a154['body'],{})[_0xed07('0x23')](respondWithResult(_0x5973c6,0xc9))[_0xed07('0x49')](handleError(_0x5973c6,null));};exports[_0xed07('0x22')]=function(_0x47f13b,_0x416b4a){if(_0x47f13b[_0xed07('0x4a')]['id']){delete _0x47f13b[_0xed07('0x4a')]['id'];}return db[_0xed07('0x2b')][_0xed07('0x47')]({'where':{'id':_0x47f13b[_0xed07('0x44')]['id']}})[_0xed07('0x23')](handleEntityNotFound(_0x416b4a,null))[_0xed07('0x23')](saveUpdates(_0x47f13b[_0xed07('0x4a')],null))[_0xed07('0x23')](respondWithResult(_0x416b4a,null))[_0xed07('0x49')](handleError(_0x416b4a,null));};exports[_0xed07('0x24')]=function(_0x4b9496,_0x1f49e6){return db[_0xed07('0x2b')][_0xed07('0x47')]({'where':{'id':_0x4b9496[_0xed07('0x44')]['id']}})[_0xed07('0x23')](handleEntityNotFound(_0x1f49e6,null))[_0xed07('0x23')](removeEntity(_0x1f49e6,null))[_0xed07('0x49')](handleError(_0x1f49e6,null));};exports[_0xed07('0x4b')]=function(_0x421cc9,_0x1ab2b4){return db[_0xed07('0x2b')][_0xed07('0x4b')]()[_0xed07('0x23')](respondWithResult(_0x1ab2b4,null))[_0xed07('0x49')](handleError(_0x1ab2b4,null));};
\ No newline at end of file
index bb72977..ae6c37e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cb9=['./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','bluebird','path','../../config/environment'];(function(_0x1872a2,_0x2a87d8){var _0x45ce68=function(_0x548af4){while(--_0x548af4){_0x1872a2['push'](_0x1872a2['shift']());}};_0x45ce68(++_0x2a87d8);}(_0x8cb9,0xad));var _0x98cb=function(_0x54a188,_0x180f4a){_0x54a188=_0x54a188-0x0;var _0x1081c3=_0x8cb9[_0x54a188];return _0x1081c3;};'use strict';var _=require(_0x98cb('0x0'));var util=require(_0x98cb('0x1'));var logger=require('../../config/logger')(_0x98cb('0x2'));var moment=require(_0x98cb('0x3'));var BPromise=require(_0x98cb('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x98cb('0x5'));var rimraf=require('rimraf');var config=require(_0x98cb('0x6'));var attributes=require(_0x98cb('0x7'));module[_0x98cb('0x8')]=function(_0x40dabf,_0x4f46a3){return _0x40dabf['define'](_0x98cb('0x9'),attributes,{'tableName':_0x98cb('0xa'),'paranoid':![],'indexes':[{'name':_0x98cb('0xb'),'fields':[_0x98cb('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2c28=['moment','request-promise','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','util','../../config/logger'];(function(_0x1fa2c3,_0x15bb6c){var _0x48bf80=function(_0x9aa2e1){while(--_0x9aa2e1){_0x1fa2c3['push'](_0x1fa2c3['shift']());}};_0x48bf80(++_0x15bb6c);}(_0x2c28,0xcd));var _0x82c2=function(_0x35b9d5,_0x5ceff8){_0x35b9d5=_0x35b9d5-0x0;var _0x5c8e44=_0x2c28[_0x35b9d5];return _0x5c8e44;};'use strict';var _=require('lodash');var util=require(_0x82c2('0x0'));var logger=require(_0x82c2('0x1'))('api');var moment=require(_0x82c2('0x2'));var BPromise=require('bluebird');var rp=require(_0x82c2('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x82c2('0x4'));module[_0x82c2('0x5')]=function(_0x375ae8,_0x2cf7d3){return _0x375ae8['define'](_0x82c2('0x6'),attributes,{'tableName':_0x82c2('0x7'),'paranoid':![],'indexes':[{'name':_0x82c2('0x8'),'fields':[_0x82c2('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
index 3efabaf..5d6721b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e74=['catch','moment','bluebird','randomstring','../../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(_0x4d08b8,_0x34c445){var _0x70214a=function(_0x4db67c){while(--_0x4db67c){_0x4d08b8['push'](_0x4d08b8['shift']());}};_0x70214a(++_0x34c445);}(_0x0e74,0xdd));var _0x40e7=function(_0x271aec,_0xfc4790){_0x271aec=_0x271aec-0x0;var _0x250491=_0x0e74[_0x271aec];return _0x250491;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x40e7('0x0'));var BPromise=require(_0x40e7('0x1'));var rs=require(_0x40e7('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x40e7('0x3'));var logger=require(_0x40e7('0x4'))(_0x40e7('0x5'));var config=require(_0x40e7('0x6'));var jayson=require(_0x40e7('0x7'));var client=jayson['client'][_0x40e7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4c38c,_0x28a758,_0x18324d){return new BPromise(function(_0x1b4368,_0x14ef2c){return client[_0x40e7('0x9')](_0x4c38c,_0x18324d)[_0x40e7('0xa')](function(_0xb2ba6d){logger[_0x40e7('0xb')](_0x40e7('0xc'),_0x28a758,_0x40e7('0xd'));logger[_0x40e7('0xe')](_0x40e7('0xf'),_0x28a758,'request\x20sent',JSON[_0x40e7('0x10')](_0xb2ba6d));if(_0xb2ba6d[_0x40e7('0x11')]){if(_0xb2ba6d['error'][_0x40e7('0x12')]===0x1f4){logger[_0x40e7('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x28a758,_0xb2ba6d['error']['message']);return _0x14ef2c(_0xb2ba6d[_0x40e7('0x11')][_0x40e7('0x13')]);}logger[_0x40e7('0x11')](_0x40e7('0xc'),_0x28a758,_0xb2ba6d[_0x40e7('0x11')][_0x40e7('0x13')]);return _0x1b4368(_0xb2ba6d[_0x40e7('0x11')][_0x40e7('0x13')]);}else{logger[_0x40e7('0xb')](_0x40e7('0xc'),_0x28a758,_0x40e7('0xd'));_0x1b4368(_0xb2ba6d[_0x40e7('0x14')][_0x40e7('0x13')]);}})[_0x40e7('0x15')](function(_0x420c30){logger['error'](_0x40e7('0xc'),_0x28a758,_0x420c30);_0x14ef2c(_0x420c30);});});}
\ No newline at end of file
+var _0x3a92=['request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','WhatsappTransferReport,\x20%s,\x20%s'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x3a92,0x12e));var _0x23a9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3a92[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x23a9('0x0'));var moment=require(_0x23a9('0x1'));var BPromise=require('bluebird');var rs=require(_0x23a9('0x2'));var fs=require('fs');var Redis=require(_0x23a9('0x3'));var db=require(_0x23a9('0x4'))['db'];var utils=require(_0x23a9('0x5'));var logger=require(_0x23a9('0x6'))(_0x23a9('0x7'));var config=require(_0x23a9('0x8'));var jayson=require(_0x23a9('0x9'));var client=jayson['client'][_0x23a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2cedbd,_0x3615a8,_0x477066){return new BPromise(function(_0x26435d,_0xa9707a){return client['request'](_0x2cedbd,_0x477066)['then'](function(_0x556074){logger[_0x23a9('0xb')](_0x23a9('0xc'),_0x3615a8,_0x23a9('0xd'));logger[_0x23a9('0xe')](_0x23a9('0xf'),_0x3615a8,_0x23a9('0xd'),JSON[_0x23a9('0x10')](_0x556074));if(_0x556074[_0x23a9('0x11')]){if(_0x556074['error']['code']===0x1f4){logger[_0x23a9('0x11')](_0x23a9('0xc'),_0x3615a8,_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);return _0xa9707a(_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);}logger[_0x23a9('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3615a8,_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);return _0x26435d(_0x556074[_0x23a9('0x11')][_0x23a9('0x12')]);}else{logger[_0x23a9('0xb')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3615a8,'request\x20sent');_0x26435d(_0x556074[_0x23a9('0x13')][_0x23a9('0x12')]);}})[_0x23a9('0x14')](function(_0x4858f5){logger[_0x23a9('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x3615a8,_0x4858f5);_0xa9707a(_0x4858f5);});});}
\ No newline at end of file
index cfda493..27842f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9384=['filter','online','name','join','Offline\x20apps:','status','None','seedDB','./config/seedDB','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./rpc','./config/logger','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','then','listen','info','start','Online\x20apps:','map'];(function(_0x39892a,_0x8dfe2f){var _0x3f0685=function(_0x36e5e4){while(--_0x36e5e4){_0x39892a['push'](_0x39892a['shift']());}};_0x3f0685(++_0x8dfe2f);}(_0x9384,0x1b2));var _0x4938=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x9384[_0x36884e];return _0x1cc367;};'use strict';var _=require(_0x4938('0x0'));var mysqldb=require(_0x4938('0x1'));var rpc=require(_0x4938('0x2'));var config=require('./config/environment');var logger=require(_0x4938('0x3'))('app');var pm2=require(_0x4938('0x4'));var pm2Config=require(_0x4938('0x5'));var schedule=require(_0x4938('0x6'));var chat=require('./config/schedule/chat');var whatsapp=require(_0x4938('0x7'));var transcribe=require(_0x4938('0x8'));function main(){return mysqldb['db'][_0x4938('0x9')]['sync']()[_0x4938('0xa')](function(){return rpc[_0x4938('0xb')]();})[_0x4938('0xa')](function(_0x28734c){logger[_0x4938('0xc')](_0x28734c);return chat['start']();})[_0x4938('0xa')](function(){return whatsapp[_0x4938('0xd')]();})[_0x4938('0xa')](function(){return schedule[_0x4938('0xd')]();})[_0x4938('0xa')](function(){return transcribe[_0x4938('0xd')]();})[_0x4938('0xa')](function(_0x4df0a1){logger[_0x4938('0xc')](_0x4df0a1);return pm2[_0x4938('0xd')](pm2Config);})['then'](function(_0x36028d){logger['info'](_0x4938('0xe'),_[_0x4938('0xf')](_[_0x4938('0x10')](_0x36028d,{'status':_0x4938('0x11')}),_0x4938('0x12'))[_0x4938('0x13')]());logger[_0x4938('0xc')](_0x4938('0x14'),_[_0x4938('0xf')](_['filter'](_0x36028d,function(_0xdf53c9){return _0xdf53c9[_0x4938('0x15')]!==_0x4938('0x11');}),_0x4938('0x12'))[_0x4938('0x13')]()||_0x4938('0x16'));config[_0x4938('0x17')]&&require(_0x4938('0x18'))[_0x4938('0x19')]();require('./config/license')[_0x4938('0x19')]();})[_0x4938('0x1a')](function(_0x5db022){logger[_0x4938('0x1b')](_0x4938('0x1c'),_0x5db022);process[_0x4938('0x1d')](0x1);});}main();
\ No newline at end of file
+var _0x9c7f=['exit','lodash','./mysqldb','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/transcribe','sync','listen','info','start','then','Online\x20apps:','map','filter','online','name','join','Offline\x20apps:','status','seedDB','./config/seedDB','./config/license','default','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s'];(function(_0x4c1ec2,_0x4f42b7){var _0x3f6f1c=function(_0xc82652){while(--_0xc82652){_0x4c1ec2['push'](_0x4c1ec2['shift']());}};_0x3f6f1c(++_0x4f42b7);}(_0x9c7f,0x1a1));var _0xf9c7=function(_0x2d7bf6,_0x203b47){_0x2d7bf6=_0x2d7bf6-0x0;var _0x5b09d0=_0x9c7f[_0x2d7bf6];return _0x5b09d0;};'use strict';var _=require(_0xf9c7('0x0'));var mysqldb=require(_0xf9c7('0x1'));var rpc=require(_0xf9c7('0x2'));var config=require(_0xf9c7('0x3'));var logger=require(_0xf9c7('0x4'))(_0xf9c7('0x5'));var pm2=require(_0xf9c7('0x6'));var pm2Config=require(_0xf9c7('0x7'));var schedule=require(_0xf9c7('0x8'));var chat=require(_0xf9c7('0x9'));var whatsapp=require('./config/schedule/whatsapp');var transcribe=require(_0xf9c7('0xa'));function main(){return mysqldb['db']['sequelize'][_0xf9c7('0xb')]()['then'](function(){return rpc[_0xf9c7('0xc')]();})['then'](function(_0x477730){logger[_0xf9c7('0xd')](_0x477730);return chat[_0xf9c7('0xe')]();})[_0xf9c7('0xf')](function(){return whatsapp[_0xf9c7('0xe')]();})['then'](function(){return schedule['start']();})[_0xf9c7('0xf')](function(){return transcribe[_0xf9c7('0xe')]();})[_0xf9c7('0xf')](function(_0x47afad){logger[_0xf9c7('0xd')](_0x47afad);return pm2['start'](pm2Config);})[_0xf9c7('0xf')](function(_0x4b5e56){logger[_0xf9c7('0xd')](_0xf9c7('0x10'),_[_0xf9c7('0x11')](_[_0xf9c7('0x12')](_0x4b5e56,{'status':_0xf9c7('0x13')}),_0xf9c7('0x14'))[_0xf9c7('0x15')]());logger[_0xf9c7('0xd')](_0xf9c7('0x16'),_[_0xf9c7('0x11')](_[_0xf9c7('0x12')](_0x4b5e56,function(_0x629b5d){return _0x629b5d[_0xf9c7('0x17')]!==_0xf9c7('0x13');}),_0xf9c7('0x14'))[_0xf9c7('0x15')]()||'None');config[_0xf9c7('0x18')]&&require(_0xf9c7('0x19'))['default']();require(_0xf9c7('0x1a'))[_0xf9c7('0x1b')]();})[_0xf9c7('0x1c')](function(_0x5ac9a1){logger[_0xf9c7('0x1d')](_0xf9c7('0x1e'),_0x5ac9a1);process[_0xf9c7('0x1f')](0x1);});}main();
\ No newline at end of file
index 4d1507c..afbb271 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f20=['API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','canUpdate','getLicense','Forbidden','isMiddleware','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','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','length','splice','unshift','encryptString','join','promisify','sign','secret','payload','verify','randomBytes','hex','now','toString','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','jsonwebtoken','composable-middleware','crypto','bluebird','util','moment','secrets','role','fullname','name','internal','email','userpic','voicePause','chatPause','mailPause','smsPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarExpires','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','use','user','ChatInteraction','closed','then','status','disposition','unmanaged','json','Unmanaged.','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','User','find','authenticate','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','blockDuration','isEqual','apiKeyNonce','nonce'];(function(_0x3186aa,_0x34c21e){var _0x2d8c36=function(_0x239e99){while(--_0x239e99){_0x3186aa['push'](_0x3186aa['shift']());}};_0x2d8c36(++_0x34c21e);}(_0x5f20,0x120));var _0x05f2=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x5f20[_0xa8883];return _0x479426;};'use strict';var db=require(_0x05f2('0x0'))['db'];var config=require(_0x05f2('0x1'));var hardwareConf=require(_0x05f2('0x2'));var licenseUtil=require(_0x05f2('0x3'));var encryptor=require(_0x05f2('0x4'));var _=require('lodash');var jwt=require(_0x05f2('0x5'));var expressJwt=require('express-jwt');var compose=require(_0x05f2('0x6'));var basicAuth=require('basic-auth');var crypto=require(_0x05f2('0x7'));var BPromise=require(_0x05f2('0x8'));var util=require(_0x05f2('0x9'));var moment=require(_0x05f2('0xa'));var validateJwt=expressJwt({'secret':config[_0x05f2('0xb')]['session']});var userAttributes=['id',_0x05f2('0xc'),_0x05f2('0xd'),_0x05f2('0xe'),_0x05f2('0xf'),_0x05f2('0x10'),_0x05f2('0x11'),'permissions','md5secret',_0x05f2('0x12'),_0x05f2('0x13'),_0x05f2('0x14'),'faxPause',_0x05f2('0x15'),_0x05f2('0x16'),_0x05f2('0x17'),'showWebBar',_0x05f2('0x18'),_0x05f2('0x19'),_0x05f2('0x1a'),_0x05f2('0x1b'),_0x05f2('0x1c'),'alias',_0x05f2('0x1d'),'phoneBarAutoAnswerDelay','phoneBarDnd',_0x05f2('0x1e'),_0x05f2('0x1f'),'phoneBarEnableSettings',_0x05f2('0x20'),'phoneBarPrefixRequired','phoneBarRemoteControl',_0x05f2('0x21'),_0x05f2('0x22'),_0x05f2('0x23'),_0x05f2('0x24'),_0x05f2('0x25'),_0x05f2('0x26'),'wssPort',_0x05f2('0x27'),_0x05f2('0x28'),'downloadAttachments'];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])[_0x05f2('0x29')](function(_0x368763,_0x200ec3,_0x3205d1){if(_0x368763[_0x05f2('0x2a')]){_0x3205d1();}else{return db[_0x05f2('0x2b')]['findOne']({'where':{'id':_0x368763['params']['id']},'attributes':['id',_0x05f2('0x2c'),'disposition'],'raw':!![]})[_0x05f2('0x2d')](function(_0x2e782d){if(_0x2e782d&&_0x2e782d[_0x05f2('0x2c')]){return _0x200ec3[_0x05f2('0x2e')](_0x2e782d[_0x05f2('0x2f')]===_0x05f2('0x30')?0x195:0x193)[_0x05f2('0x31')]({'message':_0x2e782d[_0x05f2('0x2f')]===_0x05f2('0x30')?_0x05f2('0x32'):_0x05f2('0x33')});}else{_0x3205d1();}})[_0x05f2('0x34')](function(_0x535c7b){_0x3205d1(_0x535c7b);});}});};exports[_0x05f2('0x35')]=function isAuthenticated(_0x15e5b9){return compose()['use'](function(_0x11bd44,_0x246394,_0x22b6e6){var _0x131507;if(_0x11bd44[_0x05f2('0x36')][_0x05f2('0x37')]){if(_[_0x05f2('0x38')](_0x11bd44[_0x05f2('0x36')]['authorization'],'Basic')){var _0x8bd079=basicAuth(_0x11bd44);db[_0x05f2('0x39')][_0x05f2('0x3a')]({'where':{'name':_0x8bd079['name']}})[_0x05f2('0x2d')](function(_0x59e1be){if(!_0x59e1be||!_0x59e1be[_0x05f2('0x3b')](_0x8bd079['pass'])){return _0x246394[_0x05f2('0x2e')](0x191)['json']({'message':_0x05f2('0x3c')});}_0x11bd44['user']={'id':_0x59e1be['id']};_0x22b6e6();})['catch'](function(_0x2d9b18){_0x22b6e6(_0x2d9b18);});}else if(_[_0x05f2('0x38')](_0x11bd44['headers'][_0x05f2('0x37')],_0x05f2('0x3d'))){validateJwt(_0x11bd44,_0x246394,_0x22b6e6);}else{if(_0x15e5b9){_0x22b6e6();}else{return _0x246394[_0x05f2('0x2e')](0x193)[_0x05f2('0x31')]({'message':_0x05f2('0x3e')});}}}else if(_0x11bd44[_0x05f2('0x3f')][_0x05f2('0x40')]){try{var _0x1f1894={'audience':hardwareConf[_0x05f2('0x41')](),'issuer':hardwareConf[_0x05f2('0x41')]()};verifyJwt(_0x11bd44[_0x05f2('0x3f')][_0x05f2('0x40')],_0x1f1894)[_0x05f2('0x2d')](function(_0x4c79b2){return db[_0x05f2('0x39')]['find']({'where':{'id':_0x4c79b2[_0x05f2('0x42')]}})['then'](function(_0x3fe2e7){_0x131507=_0x3fe2e7;return db[_0x05f2('0x43')]['findOne']({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x05f2('0x44')],'raw':!![]});})[_0x05f2('0x2d')](function(_0x2c07b3){if(!_0x131507||!_[_0x05f2('0x45')](_0x131507[_0x05f2('0x46')],_0x4c79b2[_0x05f2('0x47')])){return _0x246394[_0x05f2('0x2e')](0x191)[_0x05f2('0x31')]({'message':_0x05f2('0x48')});}if(_0x131507[_0x05f2('0x49')]){return _0x246394[_0x05f2('0x2e')](0x191)[_0x05f2('0x31')]({'message':_0x05f2('0x4a')});}if(_0x131507[_0x05f2('0x4b')]){if(_0x2c07b3[_0x05f2('0x44')]>0x0){if(moment(_0x131507[_0x05f2('0x4c')])[_0x05f2('0x4d')](_0x2c07b3['blockDuration'],_0x05f2('0x4e'))>moment()){return _0x246394['status'](0x191)['json']({'message':_0x05f2('0x4a')});}}else{return _0x246394[_0x05f2('0x2e')](0x191)['json']({'message':_0x05f2('0x4a')});}}_0x11bd44[_0x05f2('0x2a')]={'id':_0x131507['id']};_0x22b6e6();});})[_0x05f2('0x34')](function(){return _0x246394['status'](0x191)[_0x05f2('0x31')]({'message':_0x05f2('0x4a')});});}catch(_0x224395){_0x22b6e6(_0x224395);}}else if(_0x15e5b9){_0x22b6e6();}else{return _0x246394['status'](0x193)[_0x05f2('0x31')]({'message':'Unknown\x20authorization\x20format'});}})['use'](function(_0x5eae3a,_0x75b66c,_0x17e677){if(_0x5eae3a[_0x05f2('0x2a')]){db[_0x05f2('0x39')]['find']({'where':{'id':_0x5eae3a[_0x05f2('0x2a')]['id']},'attributes':userAttributes})[_0x05f2('0x2d')](function(_0x1d7942){if(!_0x1d7942){return _0x75b66c[_0x05f2('0x2e')](0x194)[_0x05f2('0x31')]({'message':'User\x20not\x20found.'});}_0x5eae3a['user']=_0x1d7942;_0x17e677();})[_0x05f2('0x34')](function(_0xa0a38f){_0x17e677(_0xa0a38f);});}else if(_0x15e5b9){_0x17e677();}else{return _0x75b66c[_0x05f2('0x2e')](0x194)[_0x05f2('0x31')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0x05f2('0x4f')]=function canUpdate(){return compose()['use'](function(_0x3db652,_0x4c1038,_0x4b9f37){return licenseUtil[_0x05f2('0x50')]()[_0x05f2('0x2d')](function(_0x1f41c7){if(_0x1f41c7['update']){_0x4b9f37();}else{return _0x4c1038[_0x05f2('0x2e')](0x193)[_0x05f2('0x31')]({'message':_0x05f2('0x51')});}})[_0x05f2('0x34')](function(_0xab805f){_0x4b9f37(_0xab805f);});});};exports[_0x05f2('0x52')]=function(_0x498065,_0x39d1bd,_0x462de7){_0x498065[_0x05f2('0x52')]=!![];return _0x462de7();};exports[_0x05f2('0x53')]=function signToken(_0x410b42){return signJwt(_0x410b42);};exports['setTokenCookie']=function(_0x1511de,_0x3b9e49){if(!_0x1511de['user']){return _0x3b9e49['status'](0x194)[_0x05f2('0x31')]({'message':_0x05f2('0x54')});}var _0x4f7b11={'payload':{'id':_0x1511de[_0x05f2('0x2a')]['id'],'role':_0x1511de['user'][_0x05f2('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x4f7b11)[_0x05f2('0x2d')](function(_0x57d095){_0x3b9e49['cookie'](_0x05f2('0x55'),_0x57d095);_0x3b9e49[_0x05f2('0x56')](_0x05f2('0x57'));})['catch'](function(_0x476e4c){return _0x3b9e49['status'](0x1f4)[_0x05f2('0x58')](_0x476e4c);});};exports[_0x05f2('0x59')]=function(_0x8f9608){if(_['isNil'](_0x8f9608[_0x05f2('0x46')])||_[_0x05f2('0x5a')](_0x8f9608[_0x05f2('0x5b')])){return null;}else{return createJwt(_0x8f9608);}};exports['generateApiKey']=function(_0x129e36){_0x129e36['apiKeyNonce']=generateNonce();_0x129e36[_0x05f2('0x5b')]=generateIssuedAt();return createJwt(_0x129e36);};exports[_0x05f2('0x5c')]=function(_0x4bf4fe,_0x6dcd0){var _0x447de8=_0x4bf4fe[_0x05f2('0x3f')][_0x05f2('0x40')];if(_0x447de8){var _0x26da8a={'nonce':_0x6dcd0[_0x05f2('0x46')],'iat':_0x6dcd0[_0x05f2('0x5b')],'audience':hardwareConf[_0x05f2('0x41')](),'issuer':hardwareConf[_0x05f2('0x41')]()};return verifyJwt(_0x447de8,_0x26da8a)[_0x05f2('0x2d')](function(){return generateApiKey(_0x6dcd0);});}else{throw{'message':_0x05f2('0x5d')};}};exports[_0x05f2('0x5e')]=function(_0x1369a5){var _0x3853d2=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3853d2[_0x05f2('0x5f')](_0x1369a5))throw new db[(_0x05f2('0x60'))][(_0x05f2('0x61'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x05f2('0x62')]=function(_0x46c78f,_0x1565a8,_0x37931d){var _0x1f073a=encryptor[_0x05f2('0x63')](_0x1565a8)[_0x05f2('0x64')](',');for(var _0x2b4818=0x0;_0x2b4818<_0x37931d;_0x2b4818++){if(!_0x1f073a[_0x2b4818])break;if(_0x46c78f[_0x05f2('0x65')]()===_0x1f073a[_0x2b4818][_0x05f2('0x65')]()){var _0x435f8f=util[_0x05f2('0x66')](_0x05f2('0x67'),_0x37931d);if(_0x37931d===0x1){_0x435f8f=_0x05f2('0x68');}throw new db[(_0x05f2('0x60'))][(_0x05f2('0x61'))](_0x435f8f);}}return;};exports[_0x05f2('0x69')]=function(_0x49833c,_0x267dc4){var _0x22d26b=_0x267dc4?encryptor[_0x05f2('0x63')](_0x267dc4)['split'](','):[];if(_0x22d26b[_0x05f2('0x6a')]===0x5){_0x22d26b[_0x05f2('0x6b')](-0x1,0x1);}_0x22d26b[_0x05f2('0x6c')](_0x49833c);return encryptor[_0x05f2('0x6d')](_0x22d26b[_0x05f2('0x6e')](','));};function signJwt(_0x1dedea){var _0x1d3fdf=BPromise[_0x05f2('0x6f')](jwt[_0x05f2('0x70')],{'context':jwt});var _0xafa5f0=_0x1dedea[_0x05f2('0x71')]||config[_0x05f2('0xb')]['session'];return new BPromise(function(_0x211852,_0x3a4798){_0x1d3fdf(_0x1dedea[_0x05f2('0x72')],_0xafa5f0,_0x1dedea['options'])[_0x05f2('0x2d')](function(_0x492bc4){_0x211852(_0x492bc4);})[_0x05f2('0x34')](function(_0x35fb1f){_0x3a4798(_0x35fb1f);});});}function verifyJwt(_0x4c0399,_0x75ac2a,_0x52545f){var _0x42ee75=BPromise['promisify'](jwt[_0x05f2('0x73')],{'context':jwt});var _0xea12b8=_0x52545f||config[_0x05f2('0xb')]['session'];return new BPromise(function(_0x15c7ce,_0x2ab592){_0x42ee75(_0x4c0399,_0xea12b8,_0x75ac2a)[_0x05f2('0x2d')](function(_0x53e7eb){_0x15c7ce(_0x53e7eb);})[_0x05f2('0x34')](function(_0xd64e8f){_0x2ab592(_0xd64e8f);});});}function generateNonce(){return crypto[_0x05f2('0x74')](0x10)['toString'](_0x05f2('0x75'));}function generateIssuedAt(){return Math['floor'](Date[_0x05f2('0x76')]()/0x3e8)[_0x05f2('0x77')]();}function createJwt(_0x4ba3b0){var _0x438be0={'payload':{'iat':_0x4ba3b0[_0x05f2('0x5b')],'nonce':_0x4ba3b0['apiKeyNonce']},'options':{'algorithm':'HS512','subject':_0x4ba3b0['id'][_0x05f2('0x77')](),'issuer':hardwareConf[_0x05f2('0x41')](),'audience':hardwareConf[_0x05f2('0x41')]()}};return signJwt(_0x438be0)['then'](function(_0x2ffd09){return{'iat':_0x4ba3b0[_0x05f2('0x5b')],'nonce':_0x4ba3b0['apiKeyNonce'],'token':_0x2ffd09};});}
\ No newline at end of file
+var _0x4897=['blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','add','minutes','Unknown\x20authorization\x20format','User\x20not\x20found.','getLicense','update','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','apiKeyNonce','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','splice','unshift','promisify','sign','secret','secrets','payload','verify','floor','toString','HS512','../../mysqldb','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','composable-middleware','basic-auth','crypto','util','moment','session','role','internal','email','permissions','md5secret','voicePause','mailPause','smsPause','openchannelPause','pauseType','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','alias','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','settingsEnabled','wssPort','downloadVoiceRecordings','downloadAttachments','isAuthenticated','use','user','ChatInteraction','params','closed','then','status','disposition','unmanaged','Unmanaged.','Forbidden.','catch','headers','authorization','Basic','User','find','name','authenticate','pass','json','Wrong\x20credentials.','startsWith','Bearer','query','apikey','getUuid','Setting','findOne','allowedLoginAttempts'];(function(_0x4ec15b,_0x5039eb){var _0xeeba8c=function(_0x3458d2){while(--_0x3458d2){_0x4ec15b['push'](_0x4ec15b['shift']());}};_0xeeba8c(++_0x5039eb);}(_0x4897,0xa6));var _0x7489=function(_0x49b533,_0x4b64d6){_0x49b533=_0x49b533-0x0;var _0x5bf2a6=_0x4897[_0x49b533];return _0x5bf2a6;};'use strict';var db=require(_0x7489('0x0'))['db'];var config=require(_0x7489('0x1'));var hardwareConf=require(_0x7489('0x2'));var licenseUtil=require(_0x7489('0x3'));var encryptor=require(_0x7489('0x4'));var _=require(_0x7489('0x5'));var jwt=require('jsonwebtoken');var expressJwt=require('express-jwt');var compose=require(_0x7489('0x6'));var basicAuth=require(_0x7489('0x7'));var crypto=require(_0x7489('0x8'));var BPromise=require('bluebird');var util=require(_0x7489('0x9'));var moment=require(_0x7489('0xa'));var validateJwt=expressJwt({'secret':config['secrets'][_0x7489('0xb')]});var userAttributes=['id',_0x7489('0xc'),'fullname','name',_0x7489('0xd'),_0x7489('0xe'),'userpic',_0x7489('0xf'),_0x7489('0x10'),_0x7489('0x11'),'chatPause',_0x7489('0x12'),'faxPause',_0x7489('0x13'),_0x7489('0x14'),_0x7489('0x15'),_0x7489('0x16'),_0x7489('0x17'),_0x7489('0x18'),_0x7489('0x19'),'allowmessenger','passwordResetAt',_0x7489('0x1a'),'phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd',_0x7489('0x1b'),_0x7489('0x1c'),_0x7489('0x1d'),_0x7489('0x1e'),_0x7489('0x1f'),_0x7489('0x20'),'phoneBarRemoteControlPort','hotdesk',_0x7489('0x21'),_0x7489('0x22'),'privacyEnabled',_0x7489('0x23'),_0x7489('0x24'),_0x7489('0x25'),'downloadOmnichannelInteractions',_0x7489('0x26')];exports['isChatInteractionAuthorized']=function(){return this[_0x7489('0x27')](!![])[_0x7489('0x28')](function(_0x1f0d33,_0x43f499,_0xce84f8){if(_0x1f0d33[_0x7489('0x29')]){_0xce84f8();}else{return db[_0x7489('0x2a')]['findOne']({'where':{'id':_0x1f0d33[_0x7489('0x2b')]['id']},'attributes':['id',_0x7489('0x2c'),'disposition'],'raw':!![]})[_0x7489('0x2d')](function(_0x57cace){if(_0x57cace&&_0x57cace['closed']){return _0x43f499[_0x7489('0x2e')](_0x57cace[_0x7489('0x2f')]===_0x7489('0x30')?0x195:0x193)['json']({'message':_0x57cace['disposition']===_0x7489('0x30')?_0x7489('0x31'):_0x7489('0x32')});}else{_0xce84f8();}})[_0x7489('0x33')](function(_0x44d4bb){_0xce84f8(_0x44d4bb);});}});};exports['isAuthenticated']=function isAuthenticated(_0x57e626){return compose()[_0x7489('0x28')](function(_0x2c3f93,_0x7ff5a,_0xe04c3c){var _0x1cc2dc;if(_0x2c3f93[_0x7489('0x34')][_0x7489('0x35')]){if(_['startsWith'](_0x2c3f93[_0x7489('0x34')][_0x7489('0x35')],_0x7489('0x36'))){var _0x29f83d=basicAuth(_0x2c3f93);db[_0x7489('0x37')][_0x7489('0x38')]({'where':{'name':_0x29f83d[_0x7489('0x39')]}})['then'](function(_0x1e57a8){if(!_0x1e57a8||!_0x1e57a8[_0x7489('0x3a')](_0x29f83d[_0x7489('0x3b')])){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x3d')});}_0x2c3f93[_0x7489('0x29')]={'id':_0x1e57a8['id']};_0xe04c3c();})['catch'](function(_0x28715c){_0xe04c3c(_0x28715c);});}else if(_[_0x7489('0x3e')](_0x2c3f93[_0x7489('0x34')][_0x7489('0x35')],_0x7489('0x3f'))){validateJwt(_0x2c3f93,_0x7ff5a,_0xe04c3c);}else{if(_0x57e626){_0xe04c3c();}else{return _0x7ff5a['status'](0x193)['json']({'message':'Unknown\x20authorization\x20format'});}}}else if(_0x2c3f93[_0x7489('0x40')][_0x7489('0x41')]){try{var _0x4d0556={'audience':hardwareConf[_0x7489('0x42')](),'issuer':hardwareConf[_0x7489('0x42')]()};verifyJwt(_0x2c3f93[_0x7489('0x40')]['apikey'],_0x4d0556)[_0x7489('0x2d')](function(_0x45d816){return db[_0x7489('0x37')][_0x7489('0x38')]({'where':{'id':_0x45d816['sub']}})['then'](function(_0x363025){_0x1cc2dc=_0x363025;return db[_0x7489('0x43')][_0x7489('0x44')]({'where':{'id':0x1},'attributes':[_0x7489('0x45'),_0x7489('0x46')],'raw':!![]});})[_0x7489('0x2d')](function(_0x1de51b){if(!_0x1cc2dc||!_[_0x7489('0x47')](_0x1cc2dc['apiKeyNonce'],_0x45d816[_0x7489('0x48')])){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x49')});}if(_0x1cc2dc[_0x7489('0x4a')]){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x4b')});}if(_0x1cc2dc['blocked']){if(_0x1de51b[_0x7489('0x46')]>0x0){if(moment(_0x1cc2dc['blockedAt'])[_0x7489('0x4c')](_0x1de51b[_0x7489('0x46')],_0x7489('0x4d'))>moment()){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x4b')});}}_0x2c3f93[_0x7489('0x29')]={'id':_0x1cc2dc['id']};_0xe04c3c();});})[_0x7489('0x33')](function(){return _0x7ff5a[_0x7489('0x2e')](0x191)[_0x7489('0x3c')]({'message':_0x7489('0x4b')});});}catch(_0x2b9c8d){_0xe04c3c(_0x2b9c8d);}}else if(_0x57e626){_0xe04c3c();}else{return _0x7ff5a[_0x7489('0x2e')](0x193)['json']({'message':_0x7489('0x4e')});}})['use'](function(_0x19814a,_0x570ca4,_0x1d7b08){if(_0x19814a[_0x7489('0x29')]){db['User'][_0x7489('0x38')]({'where':{'id':_0x19814a[_0x7489('0x29')]['id']},'attributes':userAttributes})[_0x7489('0x2d')](function(_0x24a8b5){if(!_0x24a8b5){return _0x570ca4['status'](0x194)[_0x7489('0x3c')]({'message':_0x7489('0x4f')});}_0x19814a[_0x7489('0x29')]=_0x24a8b5;_0x1d7b08();})[_0x7489('0x33')](function(_0x4fd9a5){_0x1d7b08(_0x4fd9a5);});}else if(_0x57e626){_0x1d7b08();}else{return _0x570ca4['status'](0x194)[_0x7489('0x3c')]({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()['use'](function(_0x175671,_0x34338d,_0x560e3f){return licenseUtil[_0x7489('0x50')]()['then'](function(_0x4398c7){if(_0x4398c7[_0x7489('0x51')]){_0x560e3f();}else{return _0x34338d['status'](0x193)['json']({'message':'Forbidden'});}})[_0x7489('0x33')](function(_0x1f32bb){_0x560e3f(_0x1f32bb);});});};exports[_0x7489('0x52')]=function(_0x42d3aa,_0x412dce,_0x33e436){_0x42d3aa['isMiddleware']=!![];return _0x33e436();};exports[_0x7489('0x53')]=function signToken(_0x499a82){return signJwt(_0x499a82);};exports[_0x7489('0x54')]=function(_0x3497f0,_0x4dba54){if(!_0x3497f0[_0x7489('0x29')]){return _0x4dba54[_0x7489('0x2e')](0x194)['json']({'message':_0x7489('0x55')});}var _0x1c558c={'payload':{'id':_0x3497f0[_0x7489('0x29')]['id'],'role':_0x3497f0['user'][_0x7489('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x1c558c)[_0x7489('0x2d')](function(_0x56abde){_0x4dba54[_0x7489('0x56')](_0x7489('0x57'),_0x56abde);_0x4dba54[_0x7489('0x58')](_0x7489('0x59'));})[_0x7489('0x33')](function(_0x232d27){return _0x4dba54[_0x7489('0x2e')](0x1f4)[_0x7489('0x5a')](_0x232d27);});};exports[_0x7489('0x5b')]=function(_0x166656){if(_['isNil'](_0x166656['apiKeyNonce'])||_[_0x7489('0x5c')](_0x166656[_0x7489('0x5d')])){return null;}else{return createJwt(_0x166656);}};exports[_0x7489('0x5e')]=function(_0x3f5bcc){_0x3f5bcc[_0x7489('0x5f')]=generateNonce();_0x3f5bcc[_0x7489('0x5d')]=generateIssuedAt();return createJwt(_0x3f5bcc);};exports['regenerateApiKey']=function(_0x359d11,_0x147f02){var _0x283a0f=_0x359d11[_0x7489('0x40')][_0x7489('0x41')];if(_0x283a0f){var _0x4850ae={'nonce':_0x147f02[_0x7489('0x5f')],'iat':_0x147f02[_0x7489('0x5d')],'audience':hardwareConf['getUuid'](),'issuer':hardwareConf[_0x7489('0x42')]()};return verifyJwt(_0x283a0f,_0x4850ae)['then'](function(){return generateApiKey(_0x147f02);});}else{throw{'message':_0x7489('0x60')};}};exports[_0x7489('0x61')]=function(_0x4ce57e){var _0x3b4e36=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3b4e36[_0x7489('0x62')](_0x4ce57e))throw new db['Sequelize'][(_0x7489('0x63'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x7489('0x64')]=function(_0x5126f7,_0x485e11,_0x1d20c8){var _0x1a3ee9=encryptor[_0x7489('0x65')](_0x485e11)[_0x7489('0x66')](',');for(var _0xf37e1d=0x0;_0xf37e1d<_0x1d20c8;_0xf37e1d++){if(!_0x1a3ee9[_0xf37e1d])break;if(_0x5126f7[_0x7489('0x67')]()===_0x1a3ee9[_0xf37e1d][_0x7489('0x67')]()){var _0x3bfac9=util[_0x7489('0x68')](_0x7489('0x69'),_0x1d20c8);if(_0x1d20c8===0x1){_0x3bfac9='The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.';}throw new db['Sequelize'][(_0x7489('0x63'))](_0x3bfac9);}}return;};exports[_0x7489('0x6a')]=function(_0x524b33,_0x4b3d79){var _0x4c3f4b=_0x4b3d79?encryptor['decryptString'](_0x4b3d79)[_0x7489('0x66')](','):[];if(_0x4c3f4b['length']===0x5){_0x4c3f4b[_0x7489('0x6b')](-0x1,0x1);}_0x4c3f4b[_0x7489('0x6c')](_0x524b33);return encryptor['encryptString'](_0x4c3f4b['join'](','));};function signJwt(_0x33ec1a){var _0x3df8be=BPromise[_0x7489('0x6d')](jwt[_0x7489('0x6e')],{'context':jwt});var _0x49a64b=_0x33ec1a[_0x7489('0x6f')]||config[_0x7489('0x70')][_0x7489('0xb')];return new BPromise(function(_0x42397e,_0xbd8e20){_0x3df8be(_0x33ec1a[_0x7489('0x71')],_0x49a64b,_0x33ec1a['options'])['then'](function(_0x289201){_0x42397e(_0x289201);})[_0x7489('0x33')](function(_0x5c5bf9){_0xbd8e20(_0x5c5bf9);});});}function verifyJwt(_0x9b9814,_0x174097,_0x5eeb72){var _0x26a811=BPromise[_0x7489('0x6d')](jwt[_0x7489('0x72')],{'context':jwt});var _0x355f54=_0x5eeb72||config[_0x7489('0x70')][_0x7489('0xb')];return new BPromise(function(_0x41fecf,_0xcb8d29){_0x26a811(_0x9b9814,_0x355f54,_0x174097)['then'](function(_0x468449){_0x41fecf(_0x468449);})[_0x7489('0x33')](function(_0x1e32d8){_0xcb8d29(_0x1e32d8);});});}function generateNonce(){return crypto['randomBytes'](0x10)['toString']('hex');}function generateIssuedAt(){return Math[_0x7489('0x73')](Date['now']()/0x3e8)[_0x7489('0x74')]();}function createJwt(_0x3033b7){var _0x14d28a={'payload':{'iat':_0x3033b7[_0x7489('0x5d')],'nonce':_0x3033b7[_0x7489('0x5f')]},'options':{'algorithm':_0x7489('0x75'),'subject':_0x3033b7['id']['toString'](),'issuer':hardwareConf['getUuid'](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x14d28a)[_0x7489('0x2d')](function(_0x4a31c8){return{'iat':_0x3033b7[_0x7489('0x5d')],'nonce':_0x3033b7[_0x7489('0x5f')],'token':_0x4a31c8};});}
\ No newline at end of file
index 6a6db9e..32032ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ee=['utf8','base64','decryptString','createDecipher','bluebird','lodash','../../config/logger','app','secrets','session','aes-256-ctr','aes192','encrypt','algorithm','join','error','test','filter','indexOf','encryptFile','createReadStream','createWriteStream','createCipher','data','update','write','final','binary','end','close','unlink','decryptFile','encryptString','secret'];(function(_0x35394f,_0x55df0c){var _0x583313=function(_0x1c5e3d){while(--_0x1c5e3d){_0x35394f['push'](_0x35394f['shift']());}};_0x583313(++_0x55df0c);}(_0x82ee,0x1e0));var _0xe82e=function(_0x4871ff,_0x497e6c){_0x4871ff=_0x4871ff-0x0;var _0x8dd2cf=_0x82ee[_0x4871ff];return _0x8dd2cf;};'use strict';var crypto=require('crypto');var fs=require('fs');var BPromise=require(_0xe82e('0x0'));var _=require(_0xe82e('0x1'));var config=require('../../config/environment');var logger=require(_0xe82e('0x2'))(_0xe82e('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0xe82e('0x4')][_0xe82e('0x5')],'algorithm':_0xe82e('0x6')};const fileOptions={'algorithm':_0xe82e('0x7')};if(config[_0xe82e('0x8')]&&config[_0xe82e('0x8')]['algorithm']){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0xe82e('0x9')]=config['encrypt'][_0xe82e('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xe82e('0xa')](',\x20');logger[_0xe82e('0xb')](config[_0xe82e('0x8')][_0xe82e('0x9')],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x504608){return AES_SUPPORTED_RX[_0xe82e('0xc')](_0x504608);}function getSupportedCiphers(){return crypto['getCiphers']()[_0xe82e('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x5dff56){return getSupportedCiphers()[_0xe82e('0xe')](_0x5dff56)>-0x1;}function combineOptions(_0x15ffab){var _0x513056={};for(var _0x6d3499 in fileOptions){if(fileOptions['hasOwnProperty'](_0x6d3499)){_0x513056[_0x6d3499]=fileOptions[_0x6d3499];}}if(_0x15ffab){for(var _0x341dd9 in _0x15ffab){if(_0x15ffab['hasOwnProperty'](_0x341dd9)){_0x513056[_0x341dd9]=_0x15ffab[_0x341dd9];}}}return _0x513056;}exports[_0xe82e('0xf')]=function(_0x151622,_0x1fe9c3,_0x612fd7,_0x209afc){return new BPromise(function(_0x515da2,_0x982913){_0x209afc=combineOptions(_0x209afc);var _0xbee49a=new Buffer(_0x612fd7);var _0x104714=fs[_0xe82e('0x10')](_0x151622);var _0x4f0143=fs[_0xe82e('0x11')](_0x1fe9c3);var _0x2800b1=crypto[_0xe82e('0x12')](_0x209afc['algorithm'],_0xbee49a);_0x104714['on'](_0xe82e('0x13'),function(_0x5e0feb){var _0x4fde55=new Buffer(_0x2800b1[_0xe82e('0x14')](_0x5e0feb),'binary');_0x4f0143[_0xe82e('0x15')](_0x4fde55);});_0x104714['on']('end',function(){try{var _0x45c8d2=new Buffer(_0x2800b1[_0xe82e('0x16')](_0xe82e('0x17')),_0xe82e('0x17'));_0x4f0143[_0xe82e('0x15')](_0x45c8d2);_0x4f0143[_0xe82e('0x18')]();_0x4f0143['on'](_0xe82e('0x19'),function(){return _0x515da2(_0x1fe9c3);});}catch(_0x2e05f1){fs[_0xe82e('0x1a')](_0x1fe9c3);return _0x982913(_0x2e05f1);}});});};exports[_0xe82e('0x1b')]=function(_0x1b90e2,_0x17ab1e,_0x41c2bb,_0x454ec2){return new BPromise(function(_0x209d1f,_0x1675e8){_0x454ec2=combineOptions(_0x454ec2);var _0x1c41f5=new Buffer(_0x41c2bb);var _0x2aa8be=fs[_0xe82e('0x10')](_0x1b90e2);var _0x4d3e8d=fs['createWriteStream'](_0x17ab1e);var _0x4fbb2a=crypto['createDecipher'](_0x454ec2[_0xe82e('0x9')],_0x1c41f5);_0x2aa8be['on'](_0xe82e('0x13'),function(_0x31d0ee){var _0xad51c6=new Buffer(_0x4fbb2a[_0xe82e('0x14')](_0x31d0ee),_0xe82e('0x17'));_0x4d3e8d['write'](_0xad51c6);});_0x2aa8be['on'](_0xe82e('0x18'),function(){try{var _0x19da82=new Buffer(_0x4fbb2a[_0xe82e('0x16')]('binary'),_0xe82e('0x17'));_0x4d3e8d[_0xe82e('0x15')](_0x19da82);_0x4d3e8d['end']();_0x4d3e8d['on'](_0xe82e('0x19'),function(){return _0x209d1f(_0x17ab1e);});}catch(_0x31a455){fs[_0xe82e('0x1a')](_0x17ab1e);return _0x1675e8(_0x31a455);}});});};exports[_0xe82e('0x1c')]=function(_0x1aa34c,_0x40f266,_0x591962){var _0x375202=_0x591962||stringOptions[_0xe82e('0x9')];var _0x5005cd=_0x40f266||stringOptions[_0xe82e('0x1d')];var _0x30a40c=crypto['createCipher'](_0x375202,_0x5005cd);var _0x5e25d8=_0x30a40c[_0xe82e('0x14')](_0x1aa34c,_0xe82e('0x1e'),'base64');_0x5e25d8+=_0x30a40c[_0xe82e('0x16')](_0xe82e('0x1f'));return _0x5e25d8;};exports[_0xe82e('0x20')]=function(_0x42b289,_0x2b9fa2,_0xfc5662){var _0x5a4c85=_0xfc5662||stringOptions['algorithm'];var _0x11955e=_0x2b9fa2||stringOptions[_0xe82e('0x1d')];var _0x26c08f=crypto[_0xe82e('0x21')](_0x5a4c85,_0x11955e);var _0x1bd9ac=_0x26c08f[_0xe82e('0x14')](_0x42b289,_0xe82e('0x1f'),_0xe82e('0x1e'));_0x1bd9ac+=_0x26c08f[_0xe82e('0x16')](_0xe82e('0x1e'));return _0x1bd9ac;};
\ No newline at end of file
+var _0x9972=['filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createWriteStream','data','binary','write','end','final','unlink','decryptFile','createDecipher','update','close','secret','utf8','base64','decryptString','crypto','lodash','../../config/environment','secrets','session','aes-256-ctr','aes192','algorithm','encrypt','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test'];(function(_0x1f5c05,_0x3f25f0){var _0x1fcc8=function(_0x250109){while(--_0x250109){_0x1f5c05['push'](_0x1f5c05['shift']());}};_0x1fcc8(++_0x3f25f0);}(_0x9972,0x1d4));var _0x2997=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9972[_0x4a9fb1];return _0x348672;};'use strict';var crypto=require(_0x2997('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x2997('0x1'));var config=require(_0x2997('0x2'));var logger=require('../../config/logger')('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x2997('0x3')][_0x2997('0x4')],'algorithm':_0x2997('0x5')};const fileOptions={'algorithm':_0x2997('0x6')};if(config['encrypt']&&config['encrypt']['algorithm']){var isSupported=isAlgorithmSupported(config['encrypt'][_0x2997('0x7')]);if(isSupported){fileOptions[_0x2997('0x7')]=config[_0x2997('0x8')][_0x2997('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger[_0x2997('0x9')](config[_0x2997('0x8')][_0x2997('0x7')],_0x2997('0xa'),supportedAlgorithms);}}function isASupportedCipher(_0x241144){return AES_SUPPORTED_RX[_0x2997('0xb')](_0x241144);}function getSupportedCiphers(){return crypto['getCiphers']()[_0x2997('0xc')](isASupportedCipher);}function isAlgorithmSupported(_0x539275){return getSupportedCiphers()[_0x2997('0xd')](_0x539275)>-0x1;}function combineOptions(_0x2e1fab){var _0x35f6f0={};for(var _0x510d4b in fileOptions){if(fileOptions[_0x2997('0xe')](_0x510d4b)){_0x35f6f0[_0x510d4b]=fileOptions[_0x510d4b];}}if(_0x2e1fab){for(var _0x50f391 in _0x2e1fab){if(_0x2e1fab[_0x2997('0xe')](_0x50f391)){_0x35f6f0[_0x50f391]=_0x2e1fab[_0x50f391];}}}return _0x35f6f0;}exports[_0x2997('0xf')]=function(_0x253609,_0x18cbb2,_0x30812e,_0x23ca08){return new BPromise(function(_0xc67384,_0x3db94f){_0x23ca08=combineOptions(_0x23ca08);var _0x1f2c57=new Buffer(_0x30812e);var _0x46f4ab=fs[_0x2997('0x10')](_0x253609);var _0x755b58=fs[_0x2997('0x11')](_0x18cbb2);var _0x3d3a00=crypto['createCipher'](_0x23ca08['algorithm'],_0x1f2c57);_0x46f4ab['on'](_0x2997('0x12'),function(_0x16f7ab){var _0xbb543d=new Buffer(_0x3d3a00['update'](_0x16f7ab),_0x2997('0x13'));_0x755b58[_0x2997('0x14')](_0xbb543d);});_0x46f4ab['on'](_0x2997('0x15'),function(){try{var _0x44f38f=new Buffer(_0x3d3a00[_0x2997('0x16')](_0x2997('0x13')),_0x2997('0x13'));_0x755b58['write'](_0x44f38f);_0x755b58['end']();_0x755b58['on']('close',function(){return _0xc67384(_0x18cbb2);});}catch(_0x27d0c8){fs[_0x2997('0x17')](_0x18cbb2);return _0x3db94f(_0x27d0c8);}});});};exports[_0x2997('0x18')]=function(_0x2fd807,_0x21d3ef,_0x249761,_0x315cac){return new BPromise(function(_0x2704e2,_0x76911a){_0x315cac=combineOptions(_0x315cac);var _0x2b2a99=new Buffer(_0x249761);var _0x2cb0cc=fs[_0x2997('0x10')](_0x2fd807);var _0x1f7b1e=fs['createWriteStream'](_0x21d3ef);var _0x253d05=crypto[_0x2997('0x19')](_0x315cac[_0x2997('0x7')],_0x2b2a99);_0x2cb0cc['on'](_0x2997('0x12'),function(_0x569981){var _0x498867=new Buffer(_0x253d05[_0x2997('0x1a')](_0x569981),'binary');_0x1f7b1e['write'](_0x498867);});_0x2cb0cc['on'](_0x2997('0x15'),function(){try{var _0x357e22=new Buffer(_0x253d05[_0x2997('0x16')](_0x2997('0x13')),_0x2997('0x13'));_0x1f7b1e[_0x2997('0x14')](_0x357e22);_0x1f7b1e[_0x2997('0x15')]();_0x1f7b1e['on'](_0x2997('0x1b'),function(){return _0x2704e2(_0x21d3ef);});}catch(_0x12195b){fs[_0x2997('0x17')](_0x21d3ef);return _0x76911a(_0x12195b);}});});};exports['encryptString']=function(_0x145b8f,_0xbc04c4,_0x3ecc13){var _0x1a3a96=_0x3ecc13||stringOptions[_0x2997('0x7')];var _0x112fd3=_0xbc04c4||stringOptions[_0x2997('0x1c')];var _0x184999=crypto['createCipher'](_0x1a3a96,_0x112fd3);var _0x247904=_0x184999[_0x2997('0x1a')](_0x145b8f,_0x2997('0x1d'),_0x2997('0x1e'));_0x247904+=_0x184999['final'](_0x2997('0x1e'));return _0x247904;};exports[_0x2997('0x1f')]=function(_0x43136d,_0x51575c,_0x2cdffb){var _0x23957a=_0x2cdffb||stringOptions[_0x2997('0x7')];var _0x3e4530=_0x51575c||stringOptions[_0x2997('0x1c')];var _0x26a5a4=crypto[_0x2997('0x19')](_0x23957a,_0x3e4530);var _0x24eb09=_0x26a5a4[_0x2997('0x1a')](_0x43136d,_0x2997('0x1e'),'utf8');_0x24eb09+=_0x26a5a4['final'](_0x2997('0x1d'));return _0x24eb09;};
\ No newline at end of file
index c2eb3e1..933dc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['then','splitSizeCsv','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','length','existsSync','join','%s%d.%s','csv','%s.%s','writeFileSync','Completed','zip','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split'];(function(_0x48d6c2,_0x1ce5d2){var _0x39eeb1=function(_0xa992a7){while(--_0xa992a7){_0x48d6c2['push'](_0x48d6c2['shift']());}};_0x39eeb1(++_0x1ce5d2);}(_0x705f,0x75));var _0xf705=function(_0xc3f3bd,_0x20b7f5){_0xc3f3bd=_0xc3f3bd-0x0;var _0x27d0bd=_0x705f[_0xc3f3bd];return _0x27d0bd;};'use strict';var util=require('util');var path=require('path');var _=require(_0xf705('0x0'));var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0xf705('0x1'));var zipdir=require(_0xf705('0x2'));var rimraf=require(_0xf705('0x3'));var db=require(_0xf705('0x4'))['db'];var dbH=require(_0xf705('0x4'))[_0xf705('0x5')];var logger=require(_0xf705('0x6'))(_0xf705('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xf705('0x8')][0x2]);var QUERY=process[_0xf705('0x8')][0x3];var PATH=process[_0xf705('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x48eb92,_0x51fda8){var _0xc244e3={'status':_0x48eb92};var _0x58cae9={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x51fda8){_0xc244e3[_0xf705('0x9')]=_0x51fda8;}return db[_0xf705('0xa')]['update'](_0xc244e3,_0x58cae9);}function main(){var _0x4bd6fd=0x1388;var _0x1f9ab1;logger[_0xf705('0xb')](util[_0xf705('0xc')](_0xf705('0xd'),EXTRACTED_REPORT_ID,_0xf705('0xe')));return db[_0xf705('0xf')][_0xf705('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf705('0x11'),'splitSizeCsv']})[_0xf705('0x12')](function(_0x296a62){if(_0x296a62){_0x1f9ab1=_0x296a62;_0x4bd6fd=_0x1f9ab1[_0xf705('0x13')]||0x1388;}})[_0xf705('0x12')](function(){return dbH[_0xf705('0x14')]['query'](util['format'](_0xf705('0x15'),QUERY),{'type':dbH[_0xf705('0x14')][_0xf705('0x16')][_0xf705('0x17')]});})['then'](function(_0x9c7b75){if(!_0x9c7b75[0x0][_0xf705('0x18')]){return analyticExtractedReport(_0xf705('0x19'));}var _0x32f48b=[];var _0x572efc=0x0;var _0x11dcbc=!![];if(_0x9c7b75&&_0x9c7b75['length']){var _0x151091=_0x9c7b75[0x0][_0xf705('0x18')]%(_0x572efc+_0x4bd6fd);if(_0x1f9ab1['split']){for(;_0x11dcbc;_0x572efc+=_0x4bd6fd,_0x151091=_0x9c7b75[0x0][_0xf705('0x18')]%(_0x572efc+_0x4bd6fd)){if(_0x151091==0x0||_0x151091==_0x9c7b75[0x0]['num']){_0x11dcbc=![];}_0x32f48b[_0xf705('0x1a')](dbH['sequelize']['query'](util[_0xf705('0xc')](_0xf705('0x1b'),QUERY,_0x4bd6fd,_0x572efc),{'type':dbH[_0xf705('0x14')]['QueryTypes'][_0xf705('0x17')]}));}}else{_0x32f48b[_0xf705('0x1a')](dbH[_0xf705('0x14')]['query'](QUERY,{'type':dbH[_0xf705('0x14')]['QueryTypes']['SELECT']}));}}var _0x2fb99e=path[_0xf705('0x1c')](PATH);var _0x2a2fb7=path[_0xf705('0x1d')](PATH,_0xf705('0x1e'));var _0x3f29c0=_0x1f9ab1[_0xf705('0x11')]&&_0x32f48b[_0xf705('0x1f')]>0x1;var _0x424d4e=[];if(!fs[_0xf705('0x20')](path[_0xf705('0x21')](_0x2fb99e,_0x2a2fb7))&&_0x3f29c0){fs['mkdirSync'](path[_0xf705('0x21')](_0x2fb99e,_0x2a2fb7));}return BPromise['each'](_0x32f48b,function(_0x23bb4a){_0x424d4e['push'](_0x23bb4a);})['then'](function(){for(var _0x8a4c48=0x0;_0x8a4c48<_0x424d4e[_0xf705('0x1f')];_0x8a4c48+=0x1){var _0x593180;var _0x4f5435=_0x424d4e[_0x8a4c48];if(_0x3f29c0){_0x593180=path[_0xf705('0x21')](_0x2fb99e,_0x2a2fb7,util[_0xf705('0xc')](_0xf705('0x22'),_0x2a2fb7,_0x8a4c48,_0xf705('0x23')));}else{_0x593180=path[_0xf705('0x21')](_0x2fb99e,util['format'](_0xf705('0x24'),_0x2a2fb7,_0xf705('0x23')));}fs[_0xf705('0x25')](_0x593180,csv(_0x4f5435));}})['then'](function(){if(_0x3f29c0){zipdir(path['join'](_0x2fb99e,_0x2a2fb7),{'saveTo':path['join'](_0x2fb99e,util['format'](_0xf705('0x24'),_0x2a2fb7,'zip'))},function(_0x58189f,_0x29ac24){});rimraf(path[_0xf705('0x21')](_0x2fb99e,_0x2a2fb7),function(){});}})[_0xf705('0x12')](function(){logger[_0xf705('0xb')](util[_0xf705('0xc')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xf705('0x26'),_0x3f29c0?util[_0xf705('0xc')](_0xf705('0x24'),_0x2a2fb7,_0x3f29c0?_0xf705('0x27'):_0xf705('0x23')):null);});})[_0xf705('0x28')](function(_0x3837c1){logger[_0xf705('0xb')](util['format'](_0xf705('0x29'),EXTRACTED_REPORT_ID,'CSV'),util[_0xf705('0x2a')](_0x3837c1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xf705('0x2b')](function(){process[_0xf705('0x2c')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x9861=['num','length','split','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.csv','existsSync','join','mkdirSync','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','exit','util','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','../../config/logger','analytics','argv','savename','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find','then','splitSizeCsv','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes'];(function(_0x3dafef,_0x3322f1){var _0x3792dd=function(_0x2de3b9){while(--_0x2de3b9){_0x3dafef['push'](_0x3dafef['shift']());}};_0x3792dd(++_0x3322f1);}(_0x9861,0x176));var _0x1986=function(_0x5148ad,_0x1c7396){_0x5148ad=_0x5148ad-0x0;var _0x125714=_0x9861[_0x5148ad];return _0x125714;};'use strict';var util=require(_0x1986('0x0'));var path=require('path');var _=require('lodash');var csv=require(_0x1986('0x1'));var fs=require('fs');var BPromise=require(_0x1986('0x2'));var zipdir=require(_0x1986('0x3'));var rimraf=require(_0x1986('0x4'));var db=require(_0x1986('0x5'))['db'];var dbH=require(_0x1986('0x5'))['dbH'];var logger=require(_0x1986('0x6'))(_0x1986('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x1986('0x8')][0x2]);var QUERY=process[_0x1986('0x8')][0x3];var PATH=process[_0x1986('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xc5e066,_0x412444){var _0x4150da={'status':_0xc5e066};var _0x2bd40f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x412444){_0x4150da[_0x1986('0x9')]=_0x412444;}return db['AnalyticExtractedReport'][_0x1986('0xa')](_0x4150da,_0x2bd40f);}function main(){var _0x1578f9=0x1388;var _0x66f64d;logger[_0x1986('0xb')](util['format'](_0x1986('0xc'),EXTRACTED_REPORT_ID,_0x1986('0xd')));return db['Setting'][_0x1986('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeCsv']})[_0x1986('0xf')](function(_0x1f49f6){if(_0x1f49f6){_0x66f64d=_0x1f49f6;_0x1578f9=_0x66f64d[_0x1986('0x10')]||0x1388;}})[_0x1986('0xf')](function(){return dbH[_0x1986('0x11')][_0x1986('0x12')](util[_0x1986('0x13')](_0x1986('0x14'),QUERY),{'type':dbH[_0x1986('0x11')][_0x1986('0x15')]['SELECT']});})['then'](function(_0x12984d){if(!_0x12984d[0x0][_0x1986('0x16')]){return analyticExtractedReport('Empty');}var _0x3b4244=[];var _0xf4c7bc=0x0;var _0x292d42=!![];if(_0x12984d&&_0x12984d[_0x1986('0x17')]){var _0x306a43=_0x12984d[0x0][_0x1986('0x16')]%(_0xf4c7bc+_0x1578f9);if(_0x66f64d[_0x1986('0x18')]){for(;_0x292d42;_0xf4c7bc+=_0x1578f9,_0x306a43=_0x12984d[0x0][_0x1986('0x16')]%(_0xf4c7bc+_0x1578f9)){if(_0x306a43==0x0||_0x306a43==_0x12984d[0x0][_0x1986('0x16')]){_0x292d42=![];}_0x3b4244[_0x1986('0x19')](dbH[_0x1986('0x11')][_0x1986('0x12')](util[_0x1986('0x13')](_0x1986('0x1a'),QUERY,_0x1578f9,_0xf4c7bc),{'type':dbH['sequelize'][_0x1986('0x15')][_0x1986('0x1b')]}));}}else{_0x3b4244['push'](dbH[_0x1986('0x11')][_0x1986('0x12')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x1986('0x1b')]}));}}var _0x358807=path[_0x1986('0x1c')](PATH);var _0x530aa1=path[_0x1986('0x1d')](PATH,_0x1986('0x1e'));var _0x2908d7=_0x66f64d['split']&&_0x3b4244[_0x1986('0x17')]>0x1;var _0xbde8e2=[];if(!fs[_0x1986('0x1f')](path[_0x1986('0x20')](_0x358807,_0x530aa1))&&_0x2908d7){fs[_0x1986('0x21')](path['join'](_0x358807,_0x530aa1));}return BPromise[_0x1986('0x22')](_0x3b4244,function(_0x518f3c){_0xbde8e2[_0x1986('0x19')](_0x518f3c);})[_0x1986('0xf')](function(){for(var _0x5873eb=0x0;_0x5873eb<_0xbde8e2[_0x1986('0x17')];_0x5873eb+=0x1){var _0x37094b;var _0x3b8f25=_0xbde8e2[_0x5873eb];if(_0x2908d7){_0x37094b=path['join'](_0x358807,_0x530aa1,util['format'](_0x1986('0x23'),_0x530aa1,_0x5873eb,_0x1986('0x24')));}else{_0x37094b=path['join'](_0x358807,util[_0x1986('0x13')](_0x1986('0x25'),_0x530aa1,_0x1986('0x24')));}fs[_0x1986('0x26')](_0x37094b,csv(_0x3b8f25));}})['then'](function(){if(_0x2908d7){zipdir(path[_0x1986('0x20')](_0x358807,_0x530aa1),{'saveTo':path[_0x1986('0x20')](_0x358807,util[_0x1986('0x13')]('%s.%s',_0x530aa1,_0x1986('0x27')))},function(_0x10090c,_0x435218){});rimraf(path[_0x1986('0x20')](_0x358807,_0x530aa1),function(){});}})[_0x1986('0xf')](function(){logger[_0x1986('0xb')](util[_0x1986('0x13')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x1986('0xd')));return analyticExtractedReport(_0x1986('0x28'),_0x2908d7?util[_0x1986('0x13')]('%s.%s',_0x530aa1,_0x2908d7?_0x1986('0x27'):_0x1986('0x24')):null);});})['catch'](function(_0x5f0f66){logger[_0x1986('0xb')](util[_0x1986('0x13')](_0x1986('0x29'),EXTRACTED_REPORT_ID,_0x1986('0xd')),util['inspect'](_0x5f0f66,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x1986('0x2a')](function(){process[_0x1986('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
index 6df1360..f943312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['%s\x20#%d','channel','interactionId','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','path','lodash','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','map','tableHeader','pick','toString','value','length','auto','body','push','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','header','pageBreak','before','margin','landscape','footer','Arial','black','num','Empty','basename','.pdf','join','%s.%s','pdf','find','split','splitSizePdf','then','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','mkdirSync','all','flatten','createPdfKitDocument','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf'];(function(_0x50f6e5,_0x151ccb){var _0x5988c5=function(_0x490a93){while(--_0x490a93){_0x50f6e5['push'](_0x50f6e5['shift']());}};_0x5988c5(++_0x151ccb);}(_0x31af,0x157));var _0xf31a=function(_0x572505,_0x22cf24){_0x572505=_0x572505-0x0;var _0x2cc11d=_0x31af[_0x572505];return _0x2cc11d;};'use strict';var _=require(_0xf31a('0x0'));var fs=require('fs');var util=require('util');var path=require('path');var moment=require('moment');var htmlToPdfmake=require(_0xf31a('0x1'));var PdfPrinter=require(_0xf31a('0x2'));var zipdir=require(_0xf31a('0x3'));var rimraf=require(_0xf31a('0x4'));var JSDOM=require(_0xf31a('0x5'))['JSDOM'];var window=new JSDOM('')['window'];var db=require(_0xf31a('0x6'))['db'];var dbH=require(_0xf31a('0x6'))[_0xf31a('0x7')];var logger=require(_0xf31a('0x8'))(_0xf31a('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0xf31a('0xa')][0x2]);var QUERY=process[_0xf31a('0xa')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0xf31a('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x2ff0ab,_0x4fed89){var _0x13f378={'status':_0x2ff0ab};var _0x5d5323={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x4fed89){_0x13f378['savename']=_0x4fed89;}return db[_0xf31a('0xc')][_0xf31a('0xd')](_0x13f378,_0x5d5323);}function getHeaders(_0x1797ed){return _[_0xf31a('0xe')](_0x1797ed,function(_0x4b5132){return{'text':_0x4b5132,'style':_0xf31a('0xf')};});}function getRows(_0x45cee0,_0x4c44d6){return _[_0xf31a('0xe')](_0x4c44d6,function(_0x3ee440){return _(_0x3ee440)[_0xf31a('0x10')](_0x45cee0)[_0xf31a('0xe')](function(_0x4cd13a){return _0x4cd13a?_[_0xf31a('0x11')](_0x4cd13a):'';})[_0xf31a('0x12')]();});}function createTable(_0x54346d,_0x20800f){var _0x426fb3={'widths':_['fill'](Array(_0x54346d[_0xf31a('0x13')]),0x91),'heights':function(_0xd7064b){return _0xd7064b===0x0?_0xf31a('0x14'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x541398=getHeaders(_0x54346d);_0x426fb3[_0xf31a('0x15')][_0xf31a('0x16')](_0x541398);var _0x27bbf1=getRows(_0x54346d,_0x20800f);_0x426fb3[_0xf31a('0x15')]=_0x426fb3[_0xf31a('0x15')][_0xf31a('0x17')](_0x27bbf1);return _0x426fb3;}function createTables(_0x1f2b4b){var _0x9ca820=[];var _0x1f9b13=_[_0xf31a('0x18')](Object[_0xf31a('0x19')](_0x1f2b4b[0x0]),0x5);_0x1f9b13[_0xf31a('0x1a')](function(_0x549354){_0x9ca820[_0xf31a('0x16')](createTable(_0x549354,_0x1f2b4b));});return _0x9ca820;}function getPDFDocDefinition(_0x1f9745){var _0x3d4f03=util[_0xf31a('0x1b')](_0xf31a('0x1c'),NAME,EXTRACTED_REPORT[_0xf31a('0x1d')],moment(EXTRACTED_REPORT['startDate'])[_0xf31a('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0xf31a('0x1e')])['format'](FORMAT));var _0x26da15=[];for(var _0x1e7030=0x0;_0x1e7030<_0x1f9745[_0xf31a('0x13')];_0x1e7030++){var _0x434cf5=[];if(_0x1e7030===0x0){_0x434cf5['push']({'text':_0x3d4f03,'style':_0xf31a('0x1f')});}var _0x535248={'table':_0x1f9745[_0x1e7030]};if(_0x1e7030>0x0){_0x535248[_0xf31a('0x20')]=_0xf31a('0x21');_0x535248[_0xf31a('0x22')]=[0x0,0x46,0x0,0x0];}_0x434cf5[_0xf31a('0x16')](_0x535248);_0x26da15['push'](_0x434cf5);}return{'pageSize':'A4','pageOrientation':_0xf31a('0x23'),'content':_0x26da15,'footer':function(_0x5a618b,_0x41346d){return{'text':_0x5a618b[_0xf31a('0x11')]()+'\x20/\x20'+_0x41346d,'style':_0xf31a('0x24')};},'defaultStyle':{'font':_0xf31a('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xf31a('0x26')},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x300970){var _0x14a2a2=0x1388;var _0x3f6b1f;if(!_0x300970[0x0][_0xf31a('0x27')]){return analyticExtractedReport(_0xf31a('0x28'));}var _0x5abe1a=[];var _0x3d0a9c=0x0;var _0x305dd0=!![];var _0x1ed5f9=path['dirname'](PATH);var _0x15a74e=path[_0xf31a('0x29')](PATH,_0xf31a('0x2a'));var _0x26e25d=path[_0xf31a('0x2b')](_0x1ed5f9,util['format'](_0xf31a('0x2c'),_0x15a74e,_0xf31a('0x2d')));var _0x18a1b9=![];return db['Setting'][_0xf31a('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf31a('0x2f'),_0xf31a('0x30')]})[_0xf31a('0x31')](function(_0x53f27a){if(_0x53f27a){_0x3f6b1f=_0x53f27a;_0x14a2a2=_0x3f6b1f[_0xf31a('0x30')]||0x3e8;}})[_0xf31a('0x31')](function(){if(_0x300970&&_0x300970['length']){var _0x5176de=_0x300970[0x0][_0xf31a('0x27')]%(_0x3d0a9c+_0x14a2a2);if(_0x3f6b1f['split']){for(;_0x305dd0;_0x3d0a9c+=_0x14a2a2,_0x5176de=_0x300970[0x0][_0xf31a('0x27')]%(_0x3d0a9c+_0x14a2a2)){if(_0x5176de==0x0||_0x5176de==_0x300970[0x0][_0xf31a('0x27')]){_0x305dd0=![];}_0x5abe1a['push'](dbH[_0xf31a('0x32')][_0xf31a('0x33')](util['format'](_0xf31a('0x34'),QUERY,_0x14a2a2,_0x3d0a9c),{'type':dbH[_0xf31a('0x32')]['QueryTypes'][_0xf31a('0x35')]}));}}else{_0x5abe1a[_0xf31a('0x16')](dbH[_0xf31a('0x32')][_0xf31a('0x33')](QUERY,{'type':dbH[_0xf31a('0x32')]['QueryTypes']['SELECT']}));}}_0x18a1b9=_0x3f6b1f[_0xf31a('0x2f')]&&_0x5abe1a[_0xf31a('0x13')]>0x1;if(!fs['existsSync'](path[_0xf31a('0x2b')](_0x1ed5f9,_0x15a74e))&&_0x18a1b9){fs[_0xf31a('0x36')](path[_0xf31a('0x2b')](_0x1ed5f9,_0x15a74e));}return Promise[_0xf31a('0x37')](_0x5abe1a);})[_0xf31a('0x31')](function(_0x34796d){return createTables(_[_0xf31a('0x38')](_0x34796d));})[_0xf31a('0x31')](function(_0x370997){var _0x38537c=getPDFDocDefinition(_0x370997);var _0x6e5f4f=getPDFPrinter();var _0x3f67b2=_0x6e5f4f[_0xf31a('0x39')](_0x38537c);if(_0x18a1b9)_0x26e25d=path[_0xf31a('0x2b')](_0x1ed5f9,_0x15a74e,util[_0xf31a('0x1b')]('%s%d.%s',_0x15a74e,index,'pdf'));return writePDFDocument(_0x3f67b2,_0x26e25d);})[_0xf31a('0x31')](function(){if(!_0x18a1b9)return;zipdir(path['join'](_0x1ed5f9,_0x15a74e),{'saveTo':path[_0xf31a('0x2b')](_0x1ed5f9,util[_0xf31a('0x1b')](_0xf31a('0x2c'),_0x15a74e,_0xf31a('0x3a')))},function(_0x5e27be){if(_0x5e27be)throw _0x5e27be;return;});})[_0xf31a('0x31')](function(){if(!_0x18a1b9)return;rimraf(path[_0xf31a('0x2b')](_0x1ed5f9,_0x15a74e),function(){});})['then'](function(){logger[_0xf31a('0x3b')](util[_0xf31a('0x1b')](_0xf31a('0x3c'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xf31a('0x3d'),_0x18a1b9?util[_0xf31a('0x1b')](_0xf31a('0x2c'),_0x15a74e,_0x18a1b9?_0xf31a('0x3a'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xf31a('0x3b')](util[_0xf31a('0x1b')](_0xf31a('0x3e'),EXTRACTED_REPORT_ID,_0xf31a('0x3f')));return db[_0xf31a('0xc')][_0xf31a('0x40')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xf31a('0x31')](function(_0x107d7e){EXTRACTED_REPORT=_0x107d7e;return dbH[_0xf31a('0x32')][_0xf31a('0x33')](util[_0xf31a('0x1b')](_0xf31a('0x41'),QUERY),{'type':dbH[_0xf31a('0x32')]['QueryTypes']['SELECT']});})[_0xf31a('0x31')](extractReport)[_0xf31a('0x42')](function(_0x2232b8){logger[_0xf31a('0x3b')](util['format'](_0xf31a('0x43'),EXTRACTED_REPORT_ID,'PDF'),util['inspect'](_0x2232b8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xf31a('0x44')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x190e09=new PdfPrinter({'Arial':{'normal':__dirname+_0xf31a('0x45'),'bold':__dirname+_0xf31a('0x46'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xf31a('0x47')}});return _0x190e09;}function getPDFDocDefinitionFromHTML(_0x4a82f3,_0x207fb3){var _0x1e79eb=util[_0xf31a('0x1b')](_0xf31a('0x48'),_0x207fb3[_0xf31a('0x49')],_0x207fb3[_0xf31a('0x4a')]);var _0x453cc6=moment()['format']('YYYY-MM-DD')[_0xf31a('0x11')]();var _0x54bcd3=htmlToPdfmake(_0x4a82f3,{'window':window,'tableAutoSize':!![]});return{'content':[_0x54bcd3],'defaultStyle':{'font':_0xf31a('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xf31a('0x4b'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xf31a('0x4b'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xf31a('0x4c'),'style':'header'}];},'footer':function(_0x4ec760,_0x31579e){return[{'text':util[_0xf31a('0x1b')](_0xf31a('0x4d'),_0x1e79eb,_0x4ec760,_0x31579e,_0x453cc6),'style':_0xf31a('0x24')}];}};}function writePDFDocument(_0x3119fd,_0x484988){return new Promise(function(_0x3abb89,_0x2f4bc3){var _0x345cab=_0x3119fd[_0xf31a('0x4e')](fs[_0xf31a('0x4f')](_0x484988));_0x345cab['on']('finish',function(){_0x3abb89(_0xf31a('0x50'));});_0x345cab['on'](_0xf31a('0x51'),function(_0x30011c){_0x2f4bc3(_0x30011c);});_0x3119fd['end']();});}exports['createPdfFromHTML']=function(_0x3942ff,_0x28cb55){var _0x32c0fa=getPDFPrinter();var _0x2e8e45=getPDFDocDefinitionFromHTML(_0x3942ff,_0x28cb55);var _0x3c2161=_0x32c0fa[_0xf31a('0x39')](_0x2e8e45);return writePDFDocument(_0x3c2161,_0x28cb55[_0xf31a('0x52')])[_0xf31a('0x42')](function(_0x548abe){throw _0x548abe;});};
\ No newline at end of file
+var _0xdfaf=['path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','JSDOM','window','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','AnalyticExtractedReport','update','tableHeader','map','toString','value','fill','auto','body','push','chunk','keys','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','format','length','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','dirname','basename','.pdf','join','%s.%s','pdf','Setting','find','then','splitSizePdf','num','split','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','mkdirSync','all','createPdfKitDocument','zip','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','CSV','Completed','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','PDF','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','createWriteStream','finish','error','end','createPdfFromHTML','lodash','util'];(function(_0x276312,_0x53c0d7){var _0xa0242f=function(_0x135bed){while(--_0x135bed){_0x276312['push'](_0x276312['shift']());}};_0xa0242f(++_0x53c0d7);}(_0xdfaf,0xb4));var _0xfdfa=function(_0x10d8b4,_0x428280){_0x10d8b4=_0x10d8b4-0x0;var _0x4ea4c1=_0xdfaf[_0x10d8b4];return _0x4ea4c1;};'use strict';var _=require(_0xfdfa('0x0'));var fs=require('fs');var util=require(_0xfdfa('0x1'));var path=require(_0xfdfa('0x2'));var moment=require(_0xfdfa('0x3'));var htmlToPdfmake=require(_0xfdfa('0x4'));var PdfPrinter=require(_0xfdfa('0x5'));var zipdir=require(_0xfdfa('0x6'));var rimraf=require('rimraf');var JSDOM=require('jsdom')[_0xfdfa('0x7')];var window=new JSDOM('')[_0xfdfa('0x8')];var db=require(_0xfdfa('0x9'))['db'];var dbH=require('../../mysqldb')[_0xfdfa('0xa')];var logger=require(_0xfdfa('0xb'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xfdfa('0xc')][0x2]);var QUERY=process[_0xfdfa('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0xfdfa('0xc')][0x5];var FORMAT=_0xfdfa('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x144e66,_0x11489c){var _0x564a55={'status':_0x144e66};var _0x3d07c6={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x11489c){_0x564a55['savename']=_0x11489c;}return db[_0xfdfa('0xe')][_0xfdfa('0xf')](_0x564a55,_0x3d07c6);}function getHeaders(_0x1d9ecd){return _['map'](_0x1d9ecd,function(_0x24ba67){return{'text':_0x24ba67,'style':_0xfdfa('0x10')};});}function getRows(_0xbbf1e7,_0x56c30f){return _[_0xfdfa('0x11')](_0x56c30f,function(_0x39be7b){return _(_0x39be7b)['pick'](_0xbbf1e7)[_0xfdfa('0x11')](function(_0x1886a9){return _0x1886a9?_[_0xfdfa('0x12')](_0x1886a9):'';})[_0xfdfa('0x13')]();});}function createTable(_0x449aa5,_0x3cfe30){var _0x2e91dc={'widths':_[_0xfdfa('0x14')](Array(_0x449aa5['length']),0x91),'heights':function(_0x44a3ed){return _0x44a3ed===0x0?_0xfdfa('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1077a2=getHeaders(_0x449aa5);_0x2e91dc[_0xfdfa('0x16')][_0xfdfa('0x17')](_0x1077a2);var _0x4cc35d=getRows(_0x449aa5,_0x3cfe30);_0x2e91dc[_0xfdfa('0x16')]=_0x2e91dc['body']['concat'](_0x4cc35d);return _0x2e91dc;}function createTables(_0x31432f){var _0x3ae018=[];var _0x2cefc2=_[_0xfdfa('0x18')](Object[_0xfdfa('0x19')](_0x31432f[0x0]),0x5);_0x2cefc2['forEach'](function(_0x3709e5){_0x3ae018[_0xfdfa('0x17')](createTable(_0x3709e5,_0x31432f));});return _0x3ae018;}function getPDFDocDefinition(_0x25a81){var _0x1f866c=util['format'](_0xfdfa('0x1a'),NAME,EXTRACTED_REPORT[_0xfdfa('0x1b')],moment(EXTRACTED_REPORT[_0xfdfa('0x1c')])['format'](FORMAT),moment(EXTRACTED_REPORT[_0xfdfa('0x1d')])[_0xfdfa('0x1e')](FORMAT));var _0x46eda7=[];for(var _0x358205=0x0;_0x358205<_0x25a81[_0xfdfa('0x1f')];_0x358205++){var _0xbeea11=[];if(_0x358205===0x0){_0xbeea11[_0xfdfa('0x17')]({'text':_0x1f866c,'style':_0xfdfa('0x20')});}var _0x267c63={'table':_0x25a81[_0x358205]};if(_0x358205>0x0){_0x267c63[_0xfdfa('0x21')]=_0xfdfa('0x22');_0x267c63[_0xfdfa('0x23')]=[0x0,0x46,0x0,0x0];}_0xbeea11[_0xfdfa('0x17')](_0x267c63);_0x46eda7[_0xfdfa('0x17')](_0xbeea11);}return{'pageSize':'A4','pageOrientation':_0xfdfa('0x24'),'content':_0x46eda7,'footer':function(_0x52e85f,_0x3ac9fa){return{'text':_0x52e85f['toString']()+_0xfdfa('0x25')+_0x3ac9fa,'style':_0xfdfa('0x26')};},'defaultStyle':{'font':_0xfdfa('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0xfdfa('0x28')},'footer':{'alignment':_0xfdfa('0x29'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x743ecf){var _0x44f286=0x1388;var _0x5eebe4;if(!_0x743ecf[0x0]['num']){return analyticExtractedReport('Empty');}var _0x339cfb=[];var _0x2ccd88=0x0;var _0xd45f30=!![];var _0x4ea48a=path[_0xfdfa('0x2a')](PATH);var _0x42dceb=path[_0xfdfa('0x2b')](PATH,_0xfdfa('0x2c'));var _0x267b71=path[_0xfdfa('0x2d')](_0x4ea48a,util[_0xfdfa('0x1e')](_0xfdfa('0x2e'),_0x42dceb,_0xfdfa('0x2f')));var _0x44a4db=![];return db[_0xfdfa('0x30')][_0xfdfa('0x31')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})[_0xfdfa('0x32')](function(_0x4d60c5){if(_0x4d60c5){_0x5eebe4=_0x4d60c5;_0x44f286=_0x5eebe4[_0xfdfa('0x33')]||0x3e8;}})[_0xfdfa('0x32')](function(){if(_0x743ecf&&_0x743ecf['length']){var _0x4184fd=_0x743ecf[0x0][_0xfdfa('0x34')]%(_0x2ccd88+_0x44f286);if(_0x5eebe4[_0xfdfa('0x35')]){for(;_0xd45f30;_0x2ccd88+=_0x44f286,_0x4184fd=_0x743ecf[0x0][_0xfdfa('0x34')]%(_0x2ccd88+_0x44f286)){if(_0x4184fd==0x0||_0x4184fd==_0x743ecf[0x0][_0xfdfa('0x34')]){_0xd45f30=![];}_0x339cfb[_0xfdfa('0x17')](dbH[_0xfdfa('0x36')][_0xfdfa('0x37')](util[_0xfdfa('0x1e')](_0xfdfa('0x38'),QUERY,_0x44f286,_0x2ccd88),{'type':dbH[_0xfdfa('0x36')][_0xfdfa('0x39')][_0xfdfa('0x3a')]}));}}else{_0x339cfb['push'](dbH[_0xfdfa('0x36')][_0xfdfa('0x37')](QUERY,{'type':dbH[_0xfdfa('0x36')][_0xfdfa('0x39')]['SELECT']}));}}_0x44a4db=_0x5eebe4[_0xfdfa('0x35')]&&_0x339cfb[_0xfdfa('0x1f')]>0x1;if(!fs['existsSync'](path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb))&&_0x44a4db){fs[_0xfdfa('0x3b')](path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb));}return Promise[_0xfdfa('0x3c')](_0x339cfb);})[_0xfdfa('0x32')](function(_0x1e35f1){return createTables(_['flatten'](_0x1e35f1));})[_0xfdfa('0x32')](function(_0x5c4399){var _0x2dbb09=getPDFDocDefinition(_0x5c4399);var _0x53d0c8=getPDFPrinter();var _0x34a5ba=_0x53d0c8[_0xfdfa('0x3d')](_0x2dbb09);if(_0x44a4db)_0x267b71=path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb,util[_0xfdfa('0x1e')]('%s%d.%s',_0x42dceb,index,_0xfdfa('0x2f')));return writePDFDocument(_0x34a5ba,_0x267b71);})[_0xfdfa('0x32')](function(){if(!_0x44a4db)return;zipdir(path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb),{'saveTo':path[_0xfdfa('0x2d')](_0x4ea48a,util[_0xfdfa('0x1e')](_0xfdfa('0x2e'),_0x42dceb,_0xfdfa('0x3e')))},function(_0x3545b9){if(_0x3545b9)throw _0x3545b9;return;});})[_0xfdfa('0x32')](function(){if(!_0x44a4db)return;rimraf(path[_0xfdfa('0x2d')](_0x4ea48a,_0x42dceb),function(){});})[_0xfdfa('0x32')](function(){logger[_0xfdfa('0x3f')](util['format'](_0xfdfa('0x40'),EXTRACTED_REPORT_ID,_0xfdfa('0x41')));return analyticExtractedReport(_0xfdfa('0x42'),_0x44a4db?util[_0xfdfa('0x1e')](_0xfdfa('0x2e'),_0x42dceb,_0x44a4db?_0xfdfa('0x3e'):'pdf'):null);});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xfdfa('0x3f')](util[_0xfdfa('0x1e')](_0xfdfa('0x43'),EXTRACTED_REPORT_ID,'PDF'));return db[_0xfdfa('0xe')][_0xfdfa('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xfdfa('0x32')](function(_0x19830b){EXTRACTED_REPORT=_0x19830b;return dbH[_0xfdfa('0x36')]['query'](util[_0xfdfa('0x1e')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xfdfa('0x36')][_0xfdfa('0x39')][_0xfdfa('0x3a')]});})[_0xfdfa('0x32')](extractReport)[_0xfdfa('0x45')](function(_0x289fa1){logger[_0xfdfa('0x3f')](util[_0xfdfa('0x1e')](_0xfdfa('0x46'),EXTRACTED_REPORT_ID,_0xfdfa('0x47')),util['inspect'](_0x289fa1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xfdfa('0x48'));})[_0xfdfa('0x49')](function(){process[_0xfdfa('0x4a')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x8d01bd=new PdfPrinter({'Arial':{'normal':__dirname+_0xfdfa('0x4b'),'bold':__dirname+_0xfdfa('0x4c'),'italics':__dirname+_0xfdfa('0x4d'),'bolditalics':__dirname+_0xfdfa('0x4e')}});return _0x8d01bd;}function getPDFDocDefinitionFromHTML(_0x761a30,_0x2fa76b){var _0x3cdca6=util[_0xfdfa('0x1e')](_0xfdfa('0x4f'),_0x2fa76b[_0xfdfa('0x50')],_0x2fa76b[_0xfdfa('0x51')]);var _0x4af68d=moment()['format'](_0xfdfa('0x52'))[_0xfdfa('0x12')]();var _0x26cce3=htmlToPdfmake(_0x761a30,{'window':window,'tableAutoSize':!![]});return{'content':[_0x26cce3],'defaultStyle':{'font':_0xfdfa('0x27')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0xfdfa('0x53'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xfdfa('0x53')}},'header':function(){return[{'text':_0xfdfa('0x54'),'style':'header'}];},'footer':function(_0x2a1eca,_0x38d92b){return[{'text':util[_0xfdfa('0x1e')](_0xfdfa('0x55'),_0x3cdca6,_0x2a1eca,_0x38d92b,_0x4af68d),'style':_0xfdfa('0x26')}];}};}function writePDFDocument(_0xcefdaa,_0x4679dc){return new Promise(function(_0x417374,_0x6efef2){var _0x4529d9=_0xcefdaa['pipe'](fs[_0xfdfa('0x56')](_0x4679dc));_0x4529d9['on'](_0xfdfa('0x57'),function(){_0x417374(_0xfdfa('0x57'));});_0x4529d9['on'](_0xfdfa('0x58'),function(_0x4a1207){_0x6efef2(_0x4a1207);});_0xcefdaa[_0xfdfa('0x59')]();});}exports[_0xfdfa('0x5a')]=function(_0x322c35,_0x59ac63){var _0x5ab200=getPDFPrinter();var _0x524931=getPDFDocDefinitionFromHTML(_0x322c35,_0x59ac63);var _0x461af9=_0x5ab200[_0xfdfa('0x3d')](_0x524931);return writePDFDocument(_0x461af9,_0x59ac63['path'])['catch'](function(_0x1f6464){throw _0x1f6464;});};
\ No newline at end of file
index 6456176..ddc69c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d9a=['savename','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','split','splitSizeXlsx','then','sequelize','query','QueryTypes','num','Empty','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','info','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','inspect','Failed','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv'];(function(_0x140202,_0x4245c7){var _0x3037c2=function(_0x525d19){while(--_0x525d19){_0x140202['push'](_0x140202['shift']());}};_0x3037c2(++_0x4245c7);}(_0x6d9a,0xf8));var _0xa6d9=function(_0x4d55e3,_0x23684e){_0x4d55e3=_0x4d55e3-0x0;var _0x468009=_0x6d9a[_0x4d55e3];return _0x468009;};'use strict';var util=require(_0xa6d9('0x0'));var path=require(_0xa6d9('0x1'));var _=require(_0xa6d9('0x2'));var fs=require('fs');var json2xls=require(_0xa6d9('0x3'));var BPromise=require(_0xa6d9('0x4'));var zipdir=require(_0xa6d9('0x5'));var rimraf=require(_0xa6d9('0x6'));var db=require('../../mysqldb')['db'];var dbH=require(_0xa6d9('0x7'))[_0xa6d9('0x8')];var logger=require(_0xa6d9('0x9'))(_0xa6d9('0xa'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xa6d9('0xb')][0x3];var PATH=process[_0xa6d9('0xb')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4969ff,_0x16f789){var _0x1ea3ae={'status':_0x4969ff};var _0x4088ad={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x16f789){_0x1ea3ae[_0xa6d9('0xc')]=_0x16f789;}return db['AnalyticExtractedReport'][_0xa6d9('0xd')](_0x1ea3ae,_0x4088ad);}function main(){var _0x4bdac9=0x1388;var _0x4fb23b;logger['info'](util[_0xa6d9('0xe')](_0xa6d9('0xf'),EXTRACTED_REPORT_ID,_0xa6d9('0x10')));return db[_0xa6d9('0x11')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa6d9('0x12'),_0xa6d9('0x13')]})[_0xa6d9('0x14')](function(_0x1076a6){if(_0x1076a6){_0x4fb23b=_0x1076a6;_0x4bdac9=_0x4fb23b[_0xa6d9('0x13')]||0x1388;}})['then'](function(){return dbH[_0xa6d9('0x15')][_0xa6d9('0x16')](util[_0xa6d9('0xe')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0xa6d9('0x17')]['SELECT']});})[_0xa6d9('0x14')](function(_0x162aea){if(!_0x162aea[0x0][_0xa6d9('0x18')]){return analyticExtractedReport(_0xa6d9('0x19'));}var _0x2a7108=[];var _0x5cdae2=0x0;var _0x26c919=!![];if(_0x4fb23b['split']){if(_0x162aea&&_0x162aea[_0xa6d9('0x1a')]){var _0x512f98=_0x162aea[0x0][_0xa6d9('0x18')]%(_0x5cdae2+_0x4bdac9);for(;_0x26c919;_0x5cdae2+=_0x4bdac9,_0x512f98=_0x162aea[0x0][_0xa6d9('0x18')]%(_0x5cdae2+_0x4bdac9)){if(_0x512f98==0x0||_0x512f98==_0x162aea[0x0][_0xa6d9('0x18')]){_0x26c919=![];}_0x2a7108[_0xa6d9('0x1b')](dbH[_0xa6d9('0x15')][_0xa6d9('0x16')](util[_0xa6d9('0xe')](_0xa6d9('0x1c'),QUERY,_0x4bdac9,_0x5cdae2),{'type':dbH[_0xa6d9('0x15')][_0xa6d9('0x17')][_0xa6d9('0x1d')]}));}}}else{_0x2a7108['push'](dbH[_0xa6d9('0x15')][_0xa6d9('0x16')](QUERY,{'type':dbH[_0xa6d9('0x15')][_0xa6d9('0x17')][_0xa6d9('0x1d')]}));}var _0x890fcf=path[_0xa6d9('0x1e')](PATH);var _0x5ddae2=path[_0xa6d9('0x1f')](PATH,_0xa6d9('0x20'));var _0x20fd2c=_0x4fb23b['split']&&_0x2a7108[_0xa6d9('0x1a')]>0x1;var _0x389b13=[];if(!fs[_0xa6d9('0x21')](path[_0xa6d9('0x22')](_0x890fcf,_0x5ddae2))&&_0x20fd2c){fs[_0xa6d9('0x23')](path['join'](_0x890fcf,_0x5ddae2));}return BPromise[_0xa6d9('0x24')](_0x2a7108,function(_0x231513){_0x389b13[_0xa6d9('0x1b')](_0x231513);})['then'](function(){for(var _0x5558b8=0x0;_0x5558b8<_0x389b13['length'];_0x5558b8+=0x1){var _0x4c530d;var _0x3fd64e=_0x389b13[_0x5558b8];if(_0x20fd2c){_0x4c530d=path[_0xa6d9('0x22')](_0x890fcf,_0x5ddae2,util[_0xa6d9('0xe')](_0xa6d9('0x25'),_0x5ddae2,_0x5558b8,_0xa6d9('0x26')));}else{_0x4c530d=path[_0xa6d9('0x22')](_0x890fcf,util['format'](_0xa6d9('0x27'),_0x5ddae2,_0xa6d9('0x26')));}fs[_0xa6d9('0x28')](_0x4c530d,json2xls(_0x3fd64e),_0xa6d9('0x29'));}})[_0xa6d9('0x14')](function(){if(_0x20fd2c){zipdir(path[_0xa6d9('0x22')](_0x890fcf,_0x5ddae2),{'saveTo':path[_0xa6d9('0x22')](_0x890fcf,util[_0xa6d9('0xe')](_0xa6d9('0x27'),_0x5ddae2,_0xa6d9('0x2a')))},function(_0x559246,_0x36409b){});rimraf(path['join'](_0x890fcf,_0x5ddae2),function(){});}})[_0xa6d9('0x14')](function(){logger[_0xa6d9('0x2b')](util[_0xa6d9('0xe')](_0xa6d9('0x2c'),EXTRACTED_REPORT_ID,_0xa6d9('0x10')));return analyticExtractedReport(_0xa6d9('0x2d'),_0x20fd2c?util[_0xa6d9('0xe')]('%s.%s',_0x5ddae2,_0x20fd2c?_0xa6d9('0x2a'):_0xa6d9('0x26')):null);});})[_0xa6d9('0x2e')](function(_0x144fe6){logger[_0xa6d9('0x2b')](util[_0xa6d9('0xe')](_0xa6d9('0x2f'),EXTRACTED_REPORT_ID,_0xa6d9('0x10')),util[_0xa6d9('0x30')](_0x144fe6,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa6d9('0x31'));})[_0xa6d9('0x32')](function(){process[_0xa6d9('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x9466=['catch','Failed','finally','exit','util','path','lodash','bluebird','zip-dir','rimraf','dbH','../../config/logger','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','QueryTypes','num','Empty','length','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','basename','.xlsx','existsSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed'];(function(_0x46262b,_0x525c15){var _0x1eefd4=function(_0x5a37b2){while(--_0x5a37b2){_0x46262b['push'](_0x46262b['shift']());}};_0x1eefd4(++_0x525c15);}(_0x9466,0x17c));var _0x6946=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x9466[_0x599f41];return _0x2e4d58;};'use strict';var util=require(_0x6946('0x0'));var path=require(_0x6946('0x1'));var _=require(_0x6946('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x6946('0x3'));var zipdir=require(_0x6946('0x4'));var rimraf=require(_0x6946('0x5'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x6946('0x6')];var logger=require(_0x6946('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x6946('0x8')][0x3];var PATH=process[_0x6946('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x53bfcc,_0x475881){var _0x3a460a={'status':_0x53bfcc};var _0x2b5743={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x475881){_0x3a460a[_0x6946('0x9')]=_0x475881;}return db[_0x6946('0xa')][_0x6946('0xb')](_0x3a460a,_0x2b5743);}function main(){var _0x58a1cc=0x1388;var _0x50a2c5;logger[_0x6946('0xc')](util[_0x6946('0xd')](_0x6946('0xe'),EXTRACTED_REPORT_ID,_0x6946('0xf')));return db[_0x6946('0x10')][_0x6946('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x6946('0x12'),_0x6946('0x13')]})[_0x6946('0x14')](function(_0x249ef9){if(_0x249ef9){_0x50a2c5=_0x249ef9;_0x58a1cc=_0x50a2c5[_0x6946('0x13')]||0x1388;}})[_0x6946('0x14')](function(){return dbH[_0x6946('0x15')][_0x6946('0x16')](util['format']('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x6946('0x15')][_0x6946('0x17')]['SELECT']});})[_0x6946('0x14')](function(_0x1f53a5){if(!_0x1f53a5[0x0][_0x6946('0x18')]){return analyticExtractedReport(_0x6946('0x19'));}var _0x5e864d=[];var _0x5abda3=0x0;var _0x1792e6=!![];if(_0x50a2c5[_0x6946('0x12')]){if(_0x1f53a5&&_0x1f53a5[_0x6946('0x1a')]){var _0x4ba7df=_0x1f53a5[0x0][_0x6946('0x18')]%(_0x5abda3+_0x58a1cc);for(;_0x1792e6;_0x5abda3+=_0x58a1cc,_0x4ba7df=_0x1f53a5[0x0]['num']%(_0x5abda3+_0x58a1cc)){if(_0x4ba7df==0x0||_0x4ba7df==_0x1f53a5[0x0][_0x6946('0x18')]){_0x1792e6=![];}_0x5e864d[_0x6946('0x1b')](dbH[_0x6946('0x15')]['query'](util[_0x6946('0xd')](_0x6946('0x1c'),QUERY,_0x58a1cc,_0x5abda3),{'type':dbH[_0x6946('0x15')][_0x6946('0x17')][_0x6946('0x1d')]}));}}}else{_0x5e864d['push'](dbH[_0x6946('0x15')][_0x6946('0x16')](QUERY,{'type':dbH['sequelize']['QueryTypes'][_0x6946('0x1d')]}));}var _0xaaa413=path['dirname'](PATH);var _0x305d6f=path[_0x6946('0x1e')](PATH,_0x6946('0x1f'));var _0x5db4ee=_0x50a2c5[_0x6946('0x12')]&&_0x5e864d[_0x6946('0x1a')]>0x1;var _0x8bc0b1=[];if(!fs[_0x6946('0x20')](path[_0x6946('0x21')](_0xaaa413,_0x305d6f))&&_0x5db4ee){fs['mkdirSync'](path[_0x6946('0x21')](_0xaaa413,_0x305d6f));}return BPromise[_0x6946('0x22')](_0x5e864d,function(_0x483985){_0x8bc0b1[_0x6946('0x1b')](_0x483985);})[_0x6946('0x14')](function(){for(var _0x5210b7=0x0;_0x5210b7<_0x8bc0b1[_0x6946('0x1a')];_0x5210b7+=0x1){var _0x5af6a0;var _0x215b1b=_0x8bc0b1[_0x5210b7];if(_0x5db4ee){_0x5af6a0=path[_0x6946('0x21')](_0xaaa413,_0x305d6f,util[_0x6946('0xd')](_0x6946('0x23'),_0x305d6f,_0x5210b7,_0x6946('0x24')));}else{_0x5af6a0=path[_0x6946('0x21')](_0xaaa413,util[_0x6946('0xd')](_0x6946('0x25'),_0x305d6f,_0x6946('0x24')));}fs[_0x6946('0x26')](_0x5af6a0,json2xls(_0x215b1b),_0x6946('0x27'));}})[_0x6946('0x14')](function(){if(_0x5db4ee){zipdir(path[_0x6946('0x21')](_0xaaa413,_0x305d6f),{'saveTo':path[_0x6946('0x21')](_0xaaa413,util['format']('%s.%s',_0x305d6f,_0x6946('0x28')))},function(_0x405caf,_0x49474c){});rimraf(path[_0x6946('0x21')](_0xaaa413,_0x305d6f),function(){});}})[_0x6946('0x14')](function(){logger[_0x6946('0xc')](util['format'](_0x6946('0x29'),EXTRACTED_REPORT_ID,_0x6946('0xf')));return analyticExtractedReport(_0x6946('0x2a'),_0x5db4ee?util['format'](_0x6946('0x25'),_0x305d6f,_0x5db4ee?_0x6946('0x28'):'xlsx'):null);});})[_0x6946('0x2b')](function(_0x16e1da){logger['info'](util[_0x6946('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util['inspect'](_0x16e1da,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x6946('0x2c'));})[_0x6946('0x2d')](function(){process[_0x6946('0x2e')](EXIT_CODE);});}main();
\ No newline at end of file
index ef5d8be..8684210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fb3=['updatedAt','interval','*,*,*,*','tag','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','app','appType','custom','answer','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','destroy','bulkCreate','sortBy','catch','lodash','models','Interval','findAll','then','intervals','VoiceExtension','IntervalId','uniq','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','exten','playback','hasOwnProperty','priority','extensions','extension','find','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','inbound','CDR(routeid)=','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt'];(function(_0x5baa5e,_0xeebb46){var _0x1504a3=function(_0x380fb1){while(--_0x380fb1){_0x5baa5e['push'](_0x5baa5e['shift']());}};_0x1504a3(++_0xeebb46);}(_0x5fb3,0x1bd));var _0x35fb=function(_0x5960d2,_0x572552){_0x5960d2=_0x5960d2-0x0;var _0xf40191=_0x5fb3[_0x5960d2];return _0xf40191;};'use strict';var _=require(_0x35fb('0x0'));var util=require('util');function rewrite(_0x4bf00f,_0xc10a0b){var _0x1ce853=this;return _0x4bf00f[_0x35fb('0x1')][_0x35fb('0x2')][_0x35fb('0x3')]({'raw':!![]})[_0x35fb('0x4')](function(_0x10f571){_0x1ce853[_0x35fb('0x5')]=_0x10f571;return _0x4bf00f[_0x35fb('0x1')][_0x35fb('0x6')]['findAll']({'where':{'IntervalId':_0xc10a0b[_0x35fb('0x7')]},'raw':!![]});})[_0x35fb('0x4')](function(_0x3cb533){return _0x4bf00f['models']['VoiceExtension'][_0x35fb('0x3')]({'where':{'exten':{'$in':_[_0x35fb('0x8')](_[_0x35fb('0x9')](_0x3cb533,'exten'))}},'order':[{'raw':_0x35fb('0xa')}],'raw':!![]});})['then'](function(_0x156dde){var _0x236fd5=_[_0x35fb('0xb')](_0x156dde,{'priority':'1'});var _0x17ea7a=_[_0x35fb('0xb')](_0x156dde,{'isApp':0x1});var _0x39bb9d=_[_0x35fb('0xc')](_0x17ea7a,_0x35fb('0xd'));var _0x4e489b=['queue',_0x35fb('0xe')];var _0x34434a=[];var _0x12b130=[];for(var _0x4b7b2d in _0x39bb9d){if(_0x39bb9d[_0x35fb('0xf')](_0x4b7b2d)){_0x1ce853[_0x35fb('0x10')]=0x2;_0x1ce853[_0x35fb('0x11')]=[];_0x1ce853[_0x35fb('0x12')]=_[_0x35fb('0x13')](_0x236fd5,{'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')]});_0x1ce853[_0x35fb('0x11')][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':util[_0x35fb('0x17')](_0x35fb('0x18'),_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')]),'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});if(_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')]===_0x35fb('0x1b')){_0x1ce853['extensions'][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':'Set','appdata':_0x35fb('0x1c')+_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')],'context':_0x39bb9d[_0x4b7b2d][0x0]['context'],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0]['VoiceExtensionId']});}else if(_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')]===_0x35fb('0x1d')){if(_0x1ce853['extension']){_0x1ce853[_0x35fb('0x11')][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x1e')+(_0x1ce853[_0x35fb('0x12')][_0x35fb('0x1f')]?_0x35fb('0x20')+_0x1ce853[_0x35fb('0x12')]['cutdigits']+'}':_0x35fb('0x21')),'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0]['VoiceExtensionId']});}_0x1ce853[_0x35fb('0x11')]['push']({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x1c')+_0x39bb9d[_0x4b7b2d][0x0]['VoiceExtensionId'],'context':_0x39bb9d[_0x4b7b2d][0x0]['context'],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853['priority']++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});var _0x286f12=_0x1ce853[_0x35fb('0x10')]++;_0x1ce853[_0x35fb('0x11')]['push']({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x286f12+0x2)+'):Goto('+(_0x286f12+0x1)+')','context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x286f12,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});if(_0x1ce853[_0x35fb('0x12')]){_0x1ce853['extensions'][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x1ce853[_0x35fb('0x12')][_0x35fb('0x1f')]?_0x35fb('0x22')+_0x1ce853[_0x35fb('0x12')][_0x35fb('0x1f')]+'}':_0x35fb('0x23'),'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0]['VoiceExtensionId']});}_0x1ce853[_0x35fb('0x11')]['push']({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x24')+_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')],'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0]['exten'],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});if(_0x1ce853[_0x35fb('0x12')]&&_0x1ce853[_0x35fb('0x12')]['hasOwnProperty'](_0x35fb('0x25'))&&_0x1ce853[_0x35fb('0x12')]['recordingFormat']!==_0x35fb('0x26')){_0x1ce853[_0x35fb('0x11')]['push']({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':'Set','appdata':_0x35fb('0x27'),'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0]['exten'],'priority':_0x1ce853['priority']++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});_0x1ce853[_0x35fb('0x11')][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x1ce853['extension'][_0x35fb('0x25')]||'wav','context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0]['exten'],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});}}_0x1ce853[_0x35fb('0x11')][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0]['type'],'app':_0x35fb('0x16'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0]['VoiceExtensionId']});_0x1ce853[_0x35fb('0x11')]['push']({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x28'),'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});_0x1ce853['extensions'][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x29'),'context':_0x39bb9d[_0x4b7b2d][0x0]['context'],'exten':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0xd')],'priority':_0x1ce853[_0x35fb('0x10')]++,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});for(var _0x4afd20=0x0,_0x4ccdda=0x0;_0x4afd20<_0x39bb9d[_0x4b7b2d][_0x35fb('0x2a')];_0x4afd20+=0x1,_0x4ccdda=0x0){var _0x2985ec=_0x39bb9d[_0x4b7b2d][_0x4afd20];if(_0x2985ec['type']){_0x2985ec['type']=_0x2985ec[_0x35fb('0x15')][_0x35fb('0x2b')]();}var _0x19fd49=[];var _0x178751=[];delete _0x2985ec['id'];delete _0x2985ec[_0x35fb('0x2c')];delete _0x2985ec[_0x35fb('0x2d')];var _0x5b852d=_0x2985ec[_0x35fb('0x2e')]!==_0x35fb('0x2f')?[_0x2985ec[_0x35fb('0x2e')]]:_0x2985ec[_0x35fb('0x7')]?_[_0x35fb('0x9')](_[_0x35fb('0xb')](_0x1ce853[_0x35fb('0x5')],{'IntervalId':_0x2985ec['IntervalId']}),'interval'):[];if(_0x2985ec[_0x35fb('0xf')](_0x35fb('0x30'))){if(_0x2985ec[_0x35fb('0x30')]&&_0x2985ec[_0x35fb('0x30')]!=='--'){_0x19fd49[_0x35fb('0x14')]({'type':_0x2985ec[_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':'CDR(tag)='+_0x2985ec['tag'],'context':_0x2985ec[_0x35fb('0x19')],'exten':_0x2985ec['exten'],'priority':_0x5b852d['length']+_0x1ce853[_0x35fb('0x10')]+_0x4ccdda++,'VoiceExtensionId':_0x2985ec[_0x35fb('0x1a')]});}}if(_0x2985ec[_0x35fb('0x15')]===_0x35fb('0x1d')&&_0x2985ec['hasOwnProperty']('callerID')){if(_0x2985ec[_0x35fb('0x31')]){_0x19fd49['push']({'type':_0x2985ec[_0x35fb('0x15')],'app':'ExecIf','appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x2985ec[_0x35fb('0x31')]+')','context':_0x2985ec['context'],'exten':_0x2985ec['exten'],'priority':_0x5b852d[_0x35fb('0x2a')]+_0x1ce853[_0x35fb('0x10')]+_0x4ccdda++,'VoiceExtensionId':_0x2985ec[_0x35fb('0x1a')]});}else{_0x19fd49['push']({'type':_0x2985ec[_0x35fb('0x15')],'app':_0x35fb('0x32'),'appdata':_0x35fb('0x33'),'context':_0x2985ec[_0x35fb('0x19')],'exten':_0x2985ec['exten'],'priority':_0x5b852d[_0x35fb('0x2a')]+_0x1ce853['priority']+_0x4ccdda++,'VoiceExtensionId':_0x2985ec['VoiceExtensionId']});}}if(_0x2985ec[_0x35fb('0xf')]('answer')){if(_0x4e489b[_0x35fb('0x34')](_0x2985ec[_0x35fb('0x35')][_0x35fb('0x2b')]())>=0x0&&_0x2985ec[_0x35fb('0x36')]!==_0x35fb('0x37')){if(_0x2985ec[_0x35fb('0x38')]){_0x19fd49[_0x35fb('0x14')]({'type':_0x2985ec[_0x35fb('0x15')],'app':_0x35fb('0x32'),'appdata':_0x35fb('0x39'),'context':_0x2985ec[_0x35fb('0x19')],'exten':_0x2985ec['exten'],'priority':_0x5b852d[_0x35fb('0x2a')]+_0x1ce853[_0x35fb('0x10')]+_0x4ccdda++,'VoiceExtensionId':_0x2985ec[_0x35fb('0x1a')]});_0x19fd49['push']({'type':_0x2985ec[_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x3a'),'context':_0x2985ec['context'],'exten':_0x2985ec[_0x35fb('0xd')],'priority':_0x5b852d[_0x35fb('0x2a')]+_0x1ce853[_0x35fb('0x10')]+_0x4ccdda++,'VoiceExtensionId':_0x2985ec[_0x35fb('0x1a')]});}else{_0x19fd49[_0x35fb('0x14')]({'type':_0x2985ec[_0x35fb('0x15')],'app':_0x35fb('0x32'),'appdata':_0x35fb('0x3b'),'context':_0x2985ec[_0x35fb('0x19')],'exten':_0x2985ec[_0x35fb('0xd')],'priority':_0x5b852d[_0x35fb('0x2a')]+_0x1ce853['priority']+_0x4ccdda++,'VoiceExtensionId':_0x2985ec[_0x35fb('0x1a')]});_0x19fd49['push']({'type':_0x2985ec[_0x35fb('0x15')],'app':_0x35fb('0x16'),'appdata':_0x35fb('0x3c'),'context':_0x2985ec['context'],'exten':_0x2985ec[_0x35fb('0xd')],'priority':_0x5b852d[_0x35fb('0x2a')]+_0x1ce853[_0x35fb('0x10')]+_0x4ccdda++,'VoiceExtensionId':_0x2985ec['VoiceExtensionId']});}}}for(var _0x46cecf=0x0;_0x46cecf<_0x5b852d[_0x35fb('0x2a')];_0x46cecf+=0x1){var _0x37620d=_0x1ce853['priority']+_0x5b852d[_0x35fb('0x2a')];var _0x13d164=_0x46cecf===_0x5b852d[_0x35fb('0x2a')]-0x1?_0x1ce853[_0x35fb('0x10')]+_0x19fd49['length']+_0x178751['length']+0x2:_0x1ce853[_0x35fb('0x10')]+_0x46cecf+0x1;_0x19fd49[_0x35fb('0x3d')](_0x46cecf,0x0,{'type':_0x2985ec['type'],'app':_0x35fb('0x3e'),'appdata':_0x5b852d[_0x46cecf]+'?'+_0x2985ec[_0x35fb('0x19')]+_0x35fb('0x3f')+_0x37620d+':'+_0x2985ec[_0x35fb('0x19')]+_0x35fb('0x3f')+_0x13d164,'exten':_0x2985ec[_0x35fb('0xd')],'context':_0x2985ec[_0x35fb('0x19')],'priority':_0x1ce853['priority']+_0x46cecf,'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});}_0x2985ec[_0x35fb('0x10')]=_0x19fd49[_0x35fb('0x2a')]?_[_0x35fb('0x40')](_0x19fd49)[_0x35fb('0x10')]+0x1:_0x1ce853['priority'];_0x1ce853['priority']=(_0x178751[_0x35fb('0x2a')]?_[_0x35fb('0x40')](_0x178751)[_0x35fb('0x10')]:_0x2985ec[_0x35fb('0x10')])+0x1;_0x1ce853[_0x35fb('0x11')]=_['concat'](_0x1ce853[_0x35fb('0x11')],_0x19fd49,[_0x2985ec],_0x178751);}_0x1ce853['extensions'][_0x35fb('0x14')]({'type':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x15')],'app':'Hangup','exten':_0x39bb9d[_0x4b7b2d][0x0]['exten'],'context':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x19')],'priority':_0x1ce853['priority'],'VoiceExtensionId':_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]});_0x34434a[_0x35fb('0x14')](_0x39bb9d[_0x4b7b2d][0x0][_0x35fb('0x1a')]);_0x12b130=_[_0x35fb('0x41')](_0x12b130,_0x1ce853[_0x35fb('0x11')]);}}return _0x4bf00f['transaction'](function(_0x4400cb){return _0x4bf00f[_0x35fb('0x1')][_0x35fb('0x6')][_0x35fb('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x34434a}},'transaction':_0x4400cb})['then'](function(_0x47e540){return _0x4bf00f[_0x35fb('0x1')][_0x35fb('0x6')][_0x35fb('0x43')](_[_0x35fb('0x44')](_0x12b130,_0x35fb('0x10')),{'transaction':_0x4400cb});});});})[_0x35fb('0x45')](function(_0x4d015d){console['error'](_0x4d015d);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x87cc=['CDR(prefix)=${EXTEN:0:','outboundrouteid=','none','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','answer','indexOf','app','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime','last','concat','Hangup','transaction','destroy','sortBy','error','rewrite','lodash','util','models','Interval','findAll','then','intervals','VoiceExtension','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','playback','hasOwnProperty','priority','extensions','extension','push','Set','format','type','inbound','VoiceExtensionId','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','context','CDR(routeid)=','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto('];(function(_0x3c44a0,_0x251004){var _0x16f84e=function(_0x28b4e2){while(--_0x28b4e2){_0x3c44a0['push'](_0x3c44a0['shift']());}};_0x16f84e(++_0x251004);}(_0x87cc,0x69));var _0xc87c=function(_0x2ef6f5,_0x2d0372){_0x2ef6f5=_0x2ef6f5-0x0;var _0x3e0028=_0x87cc[_0x2ef6f5];return _0x3e0028;};'use strict';var _=require(_0xc87c('0x0'));var util=require(_0xc87c('0x1'));function rewrite(_0x585928,_0x283d85){var _0x4ac5d3=this;return _0x585928[_0xc87c('0x2')][_0xc87c('0x3')][_0xc87c('0x4')]({'raw':!![]})[_0xc87c('0x5')](function(_0x329e4c){_0x4ac5d3[_0xc87c('0x6')]=_0x329e4c;return _0x585928[_0xc87c('0x2')][_0xc87c('0x7')][_0xc87c('0x4')]({'where':{'IntervalId':_0x283d85['IntervalId']},'raw':!![]});})[_0xc87c('0x5')](function(_0x7319fe){return _0x585928[_0xc87c('0x2')][_0xc87c('0x7')][_0xc87c('0x4')]({'where':{'exten':{'$in':_[_0xc87c('0x8')](_[_0xc87c('0x9')](_0x7319fe,_0xc87c('0xa')))}},'order':[{'raw':_0xc87c('0xb')}],'raw':!![]});})[_0xc87c('0x5')](function(_0x6cc6c2){var _0x506cf7=_['filter'](_0x6cc6c2,{'priority':'1'});var _0x3150ae=_[_0xc87c('0xc')](_0x6cc6c2,{'isApp':0x1});var _0x5a9e31=_[_0xc87c('0xd')](_0x3150ae,_0xc87c('0xa'));var _0x19422c=['queue',_0xc87c('0xe')];var _0x573216=[];var _0x511c15=[];for(var _0x45d554 in _0x5a9e31){if(_0x5a9e31[_0xc87c('0xf')](_0x45d554)){_0x4ac5d3[_0xc87c('0x10')]=0x2;_0x4ac5d3[_0xc87c('0x11')]=[];_0x4ac5d3[_0xc87c('0x12')]=_['find'](_0x506cf7,{'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')]});_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0]['type'],'app':_0xc87c('0x14'),'appdata':util[_0xc87c('0x15')]('CDR(type)=%s',_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')]),'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});if(_0x5a9e31[_0x45d554][0x0]['type']===_0xc87c('0x17')){_0x4ac5d3[_0xc87c('0x11')]['push']({'type':_0x5a9e31[_0x45d554][0x0]['type'],'app':_0xc87c('0x14'),'appdata':'CDR(routeid)='+_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')],'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});}else if(_0x5a9e31[_0x45d554][0x0]['type']===_0xc87c('0x19')){if(_0x4ac5d3[_0xc87c('0x12')]){_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':'Set','appdata':_0xc87c('0x1a')+(_0x4ac5d3['extension'][_0xc87c('0x1b')]?_0xc87c('0x1c')+_0x4ac5d3[_0xc87c('0x12')][_0xc87c('0x1b')]+'}':_0xc87c('0x1d')),'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});}_0x4ac5d3['extensions'][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x1f')+_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')],'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});var _0x23bce0=_0x4ac5d3[_0xc87c('0x10')]++;_0x4ac5d3['extensions']['push']({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':_0xc87c('0x21')+(_0x23bce0+0x2)+_0xc87c('0x22')+(_0x23bce0+0x1)+')','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x23bce0,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});if(_0x4ac5d3[_0xc87c('0x12')]){_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0x4ac5d3[_0xc87c('0x12')][_0xc87c('0x1b')]?_0xc87c('0x23')+_0x4ac5d3[_0xc87c('0x12')]['cutdigits']+'}':'CDR(prefix)=noprefix','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});}_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x24')+_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')],'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});if(_0x4ac5d3[_0xc87c('0x12')]&&_0x4ac5d3['extension']['hasOwnProperty']('recordingFormat')&&_0x4ac5d3[_0xc87c('0x12')]['recordingFormat']!==_0xc87c('0x25')){_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});_0x4ac5d3['extensions'][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x26')+_0x4ac5d3['extension'][_0xc87c('0x27')]||_0xc87c('0x28'),'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0]['exten'],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});}}_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']});_0x4ac5d3['extensions']['push']({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x29'),'context':_0x5a9e31[_0x45d554][0x0]['context'],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3['priority']++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x2a'),'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'priority':_0x4ac5d3[_0xc87c('0x10')]++,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});for(var _0x35174f=0x0,_0x2bb1d3=0x0;_0x35174f<_0x5a9e31[_0x45d554][_0xc87c('0x2b')];_0x35174f+=0x1,_0x2bb1d3=0x0){var _0x12bbb2=_0x5a9e31[_0x45d554][_0x35174f];if(_0x12bbb2[_0xc87c('0x16')]){_0x12bbb2['type']=_0x12bbb2['type'][_0xc87c('0x2c')]();}var _0x2e2a1a=[];var _0x521c00=[];delete _0x12bbb2['id'];delete _0x12bbb2[_0xc87c('0x2d')];delete _0x12bbb2[_0xc87c('0x2e')];var _0x45cefd=_0x12bbb2[_0xc87c('0x2f')]!==_0xc87c('0x30')?[_0x12bbb2[_0xc87c('0x2f')]]:_0x12bbb2[_0xc87c('0x31')]?_[_0xc87c('0x9')](_['filter'](_0x4ac5d3['intervals'],{'IntervalId':_0x12bbb2[_0xc87c('0x31')]}),_0xc87c('0x2f')):[];if(_0x12bbb2[_0xc87c('0xf')]('tag')){if(_0x12bbb2[_0xc87c('0x32')]&&_0x12bbb2[_0xc87c('0x32')]!=='--'){_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x14'),'appdata':'CDR(tag)='+_0x12bbb2[_0xc87c('0x32')],'context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}}if(_0x12bbb2[_0xc87c('0x16')]===_0xc87c('0x19')&&_0x12bbb2[_0xc87c('0xf')](_0xc87c('0x33'))){if(_0x12bbb2[_0xc87c('0x33')]){_0x2e2a1a['push']({'type':_0x12bbb2[_0xc87c('0x16')],'app':'ExecIf','appdata':_0xc87c('0x34')+_0x12bbb2['callerID']+')','context':_0x12bbb2['context'],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}else{_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}}if(_0x12bbb2['hasOwnProperty'](_0xc87c('0x35'))){if(_0x19422c[_0xc87c('0x36')](_0x12bbb2[_0xc87c('0x37')][_0xc87c('0x2c')]())>=0x0&&_0x12bbb2['appType']!==_0xc87c('0x38')){if(_0x12bbb2[_0xc87c('0x35')]){_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':_0xc87c('0x39'),'context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2['exten'],'priority':_0x45cefd['length']+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});_0x2e2a1a['push']({'type':_0x12bbb2['type'],'app':_0xc87c('0x14'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3['priority']+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}else{_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x20'),'appdata':_0xc87c('0x3a'),'context':_0x12bbb2['context'],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd['length']+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});_0x2e2a1a[_0xc87c('0x13')]({'type':_0x12bbb2['type'],'app':_0xc87c('0x14'),'appdata':_0xc87c('0x3b'),'context':_0x12bbb2[_0xc87c('0x1e')],'exten':_0x12bbb2[_0xc87c('0xa')],'priority':_0x45cefd[_0xc87c('0x2b')]+_0x4ac5d3[_0xc87c('0x10')]+_0x2bb1d3++,'VoiceExtensionId':_0x12bbb2[_0xc87c('0x18')]});}}}for(var _0x49ea8b=0x0;_0x49ea8b<_0x45cefd[_0xc87c('0x2b')];_0x49ea8b+=0x1){var _0x1b842d=_0x4ac5d3['priority']+_0x45cefd['length'];var _0x850b92=_0x49ea8b===_0x45cefd[_0xc87c('0x2b')]-0x1?_0x4ac5d3[_0xc87c('0x10')]+_0x2e2a1a['length']+_0x521c00[_0xc87c('0x2b')]+0x2:_0x4ac5d3[_0xc87c('0x10')]+_0x49ea8b+0x1;_0x2e2a1a[_0xc87c('0x3c')](_0x49ea8b,0x0,{'type':_0x12bbb2[_0xc87c('0x16')],'app':_0xc87c('0x3d'),'appdata':_0x45cefd[_0x49ea8b]+'?'+_0x12bbb2[_0xc87c('0x1e')]+',${EXTEN},'+_0x1b842d+':'+_0x12bbb2[_0xc87c('0x1e')]+',${EXTEN},'+_0x850b92,'exten':_0x12bbb2[_0xc87c('0xa')],'context':_0x12bbb2[_0xc87c('0x1e')],'priority':_0x4ac5d3[_0xc87c('0x10')]+_0x49ea8b,'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});}_0x12bbb2[_0xc87c('0x10')]=_0x2e2a1a['length']?_[_0xc87c('0x3e')](_0x2e2a1a)[_0xc87c('0x10')]+0x1:_0x4ac5d3[_0xc87c('0x10')];_0x4ac5d3[_0xc87c('0x10')]=(_0x521c00[_0xc87c('0x2b')]?_[_0xc87c('0x3e')](_0x521c00)[_0xc87c('0x10')]:_0x12bbb2[_0xc87c('0x10')])+0x1;_0x4ac5d3[_0xc87c('0x11')]=_[_0xc87c('0x3f')](_0x4ac5d3[_0xc87c('0x11')],_0x2e2a1a,[_0x12bbb2],_0x521c00);}_0x4ac5d3[_0xc87c('0x11')][_0xc87c('0x13')]({'type':_0x5a9e31[_0x45d554][0x0]['type'],'app':_0xc87c('0x40'),'exten':_0x5a9e31[_0x45d554][0x0][_0xc87c('0xa')],'context':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x1e')],'priority':_0x4ac5d3[_0xc87c('0x10')],'VoiceExtensionId':_0x5a9e31[_0x45d554][0x0][_0xc87c('0x18')]});_0x573216[_0xc87c('0x13')](_0x5a9e31[_0x45d554][0x0]['VoiceExtensionId']);_0x511c15=_[_0xc87c('0x3f')](_0x511c15,_0x4ac5d3[_0xc87c('0x11')]);}}return _0x585928[_0xc87c('0x41')](function(_0x2ec288){return _0x585928['models'][_0xc87c('0x7')][_0xc87c('0x42')]({'where':{'VoiceExtensionId':{'$in':_0x573216}},'transaction':_0x2ec288})['then'](function(_0x346867){return _0x585928['models'][_0xc87c('0x7')]['bulkCreate'](_[_0xc87c('0x43')](_0x511c15,_0xc87c('0x10')),{'transaction':_0x2ec288});});});})['catch'](function(_0x229158){console[_0xc87c('0x44')](_0x229158);});}exports[_0xc87c('0x45')]=rewrite;
\ No newline at end of file
index 1df27ee..94faa3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2712=['parse','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','data','phone','phone\x20not\x20specified!','birthDate','isValid','email','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','\x20=\x20?','cm_contacts','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','id\x20IN\x20?','cm_hopper_black','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','get','always','sequelize','query','VoiceQueueId','onlyIfOpen','all','outbound','CampaignId','Campaign','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','CSV\x20import\x20process\x20stopped!'];(function(_0x3cb83f,_0x2bc6dd){var _0x105d68=function(_0x18bd0f){while(--_0x18bd0f){_0x3cb83f['push'](_0x3cb83f['shift']());}};_0x105d68(++_0x2bc6dd);}(_0x2712,0xe9));var _0x2271=function(_0x51f492,_0x1f71e5){_0x51f492=_0x51f492-0x0;var _0x292892=_0x2712[_0x51f492];return _0x292892;};'use strict';var BPromise=require(_0x2271('0x0'));var util=require(_0x2271('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0x2271('0x2'));var Papa=require(_0x2271('0x3'));var Redis=require(_0x2271('0x4'));var db=require(_0x2271('0x5'))['db'];var config=require(_0x2271('0x6'));var logger=require(_0x2271('0x7'))(_0x2271('0x8'));config[_0x2271('0x9')]=_[_0x2271('0xa')](config[_0x2271('0x9')],{'host':_0x2271('0xb'),'port':0x18eb});var socket=require(_0x2271('0xc'))(new Redis(config['redis']));require(_0x2271('0xd'))[_0x2271('0xe')](socket);try{if(!process[_0x2271('0xf')][0x2]||process[_0x2271('0xf')][0x2]===_0x2271('0x10')||process[_0x2271('0xf')][0x2]==='null'){throw new Error(_0x2271('0x11'));}var FILEPATH=process[_0x2271('0xf')][0x2];if(!process[_0x2271('0xf')][0x3]||process[_0x2271('0xf')][0x3]==='undefined'||process[_0x2271('0xf')][0x3]==='null'||!process[_0x2271('0xf')][0x4]||process[_0x2271('0xf')][0x4]===_0x2271('0x10')||process['argv'][0x4]===_0x2271('0x12')){throw new Error(_0x2271('0x13'));}var FIELDS=_[_0x2271('0x14')](process[_0x2271('0xf')][0x3][_0x2271('0x15')](','),process[_0x2271('0xf')][0x4][_0x2271('0x15')](','));if(!process[_0x2271('0xf')][0x5]||process[_0x2271('0xf')][0x5]===_0x2271('0x10')||process[_0x2271('0xf')][0x5]===_0x2271('0x12')){throw new Error(_0x2271('0x16'));}var LISTID=process[_0x2271('0xf')][0x5];var COMPANYID=process[_0x2271('0xf')][0x6]&&process[_0x2271('0xf')][0x6]!=='undefined'&&process['argv'][0x6]!==_0x2271('0x12')?process[_0x2271('0xf')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x2271('0xf')][0x7]!==_0x2271('0x10')&&process['argv'][0x7]!==_0x2271('0x12')?process[_0x2271('0xf')][0x7]:null;if(!process['argv'][0x8]||process[_0x2271('0xf')][0x8]===_0x2271('0x10')||process[_0x2271('0xf')][0x8]===_0x2271('0x12')){throw new Error(_0x2271('0x17'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x39cfb7){logger[_0x2271('0x18')](_0x39cfb7);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(_0x5c6376,_0x499cae,_0x33f803,_0x5d221b){var _0x3147f3={'message':_0x499cae};_0x3147f3[_0x5c6376]=!![];if(_0x33f803){_0x3147f3[_0x2271('0x19')]=_0x33f803;}if(_0x5d221b){_0x3147f3[_0x2271('0x1a')]=_0x5d221b;}return _0x3147f3;}function isEmail(_0x4553c2){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))*$/[_0x2271('0x1b')](_0x4553c2);}function checkRow(_0x1538c6,_0x4c77b9,_0x2c452c){return new BPromise(function(_0x5af477,_0x13b8f6){if(_[_0x2271('0x1c')](_0x1538c6)){return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),_0x2271('0x1d'),null,_0x2c452c));}if(_0x1538c6[_0x2271('0x1e')]&&_0x1538c6[_0x2271('0x1e')][_0x2271('0x1f')]){var _0x4ed813=_[_0x2271('0x20')](_0x1538c6[_0x2271('0x1e')],_0x2271('0x21'))[_0x2271('0x22')](';');return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),_0x4ed813,null,_0x2c452c));}var _0x22058a={};for(var _0x3e2d83 in FIELDS){if(FIELDS['hasOwnProperty'](_0x3e2d83)&&FIELDS[_0x3e2d83]){_0x22058a[_0x3e2d83]=_0x1538c6[_0x2271('0x23')][0x0][FIELDS[_0x3e2d83]]||_0x1538c6[_0x2271('0x23')][0x0]['\ufeff'+FIELDS[_0x3e2d83]];}}if(!_0x22058a['firstName']){return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),'firstName\x20not\x20specified!',null,_0x2c452c));}if(!_0x22058a[_0x2271('0x24')]){return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),_0x2271('0x25'),null,_0x2c452c));}if(_0x22058a['birthDate']){var _0x4789e9=moment(_0x22058a[_0x2271('0x26')],'YYYY-MM-DD');if(!_0x4789e9[_0x2271('0x27')]()){return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x2c452c));}}if(_0x22058a['email']){if(!isEmail(_0x22058a[_0x2271('0x28')])){return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),'email\x20format\x20is\x20not\x20valid!',null,_0x2c452c));}}_0x22058a[_0x2271('0x29')]=LISTID;_0x22058a[_0x2271('0x2a')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x2271('0x1f')]&&_0x4c77b9){var _0x38a4fa={};for(var _0x2ebc98=0x0,_0x146b37=DUPLICATES[_0x2271('0x1f')];_0x2ebc98<_0x146b37;_0x2ebc98+=0x1){_0x38a4fa[DUPLICATES[_0x2ebc98]]=_0x22058a[DUPLICATES[_0x2ebc98]];}var _0x4c13c3=_[_0x2271('0x2b')](_0x4c77b9,_0x38a4fa);if(_0x4c13c3){return _0x13b8f6(handleCheckRowError(_0x2271('0x2c'),_0x2271('0x2d'),_0x4c13c3,_0x2c452c));}}return db[_0x2271('0x2e')][_0x2271('0x2f')](_0x22058a,{'raw':!![],'hooks':![],'fields':_['keys'](_0x22058a)})[_0x2271('0x30')](function(_0x173f81){if(DUPLICATES&&DUPLICATES[_0x2271('0x1f')]&&_0x4c77b9){_0x4c77b9[_0x2271('0x31')](_[_0x2271('0x32')](_0x22058a,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x173f81['id'];return _0x5af477();})[_0x2271('0x33')](function(_0x1aff2f){return _0x13b8f6(handleCheckRowError(_0x2271('0x18'),_0x2271('0x34')+(_0x1aff2f[_0x2271('0x21')]||JSON[_0x2271('0x35')](_0x1aff2f)),null,_0x2c452c));});});}function checkHopper(){function _0x2f2f45(){return function(_0x4175df){logger[_0x2271('0x18')](_0x2271('0x36'),_0x2271('0x37'),util['inspect'](_0x4175df,{'showHidden':![],'depth':null}));};}var _0x21a126=function(_0x42b785,_0x2f5491){var _0x1eef31=squel[_0x2271('0x38')]()[_0x2271('0x39')](_0x2271('0x3a'))[_0x2271('0x3b')]([_0x2271('0x24'),_0x2271('0x3c'),_0x2271('0x3d'),'ListId',_0x2f5491,_0x2271('0x3e'),_0x2271('0x3f')],squel[_0x2271('0x40')]()[_0x2271('0x41')]('phone',_0x2271('0x24'))[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3c'))[_0x2271('0x41')]('id',_0x2271('0x3d'))['field'](LISTID[_0x2271('0x43')](),'ListId')['field'](_0x42b785['id'][_0x2271('0x43')](),_0x2f5491)[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3e'))['field']('NOW()',_0x2271('0x3f'))[_0x2271('0x44')]('cm_contacts')[_0x2271('0x45')](_0x2271('0x46'))['where'](_0x2271('0x47'),LISTID['toString']())[_0x2271('0x45')](_0x2271('0x48'))[_0x2271('0x45')]('phone\x20NOT\x20IN\x20(?)',squel[_0x2271('0x40')]()[_0x2271('0x41')](_0x2271('0x24'))[_0x2271('0x44')]('cm_hopper')[_0x2271('0x45')](_0x2f5491+_0x2271('0x49'),_0x42b785['id'][_0x2271('0x43')]())))[_0x2271('0x43')]();return _0x1eef31;};var _0x54639c=function(_0x5f19c8,_0x524d59){var _0x43e9a8=squel['insert']()[_0x2271('0x39')](_0x2271('0x3a'))[_0x2271('0x3b')](['phone',_0x2271('0x3c'),_0x2271('0x3d'),_0x2271('0x29'),_0x524d59,'createdAt',_0x2271('0x3f')],squel[_0x2271('0x40')]()[_0x2271('0x41')](_0x2271('0x24'),_0x2271('0x24'))[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3c'))[_0x2271('0x41')]('id','ContactId')[_0x2271('0x41')](LISTID['toString'](),_0x2271('0x29'))[_0x2271('0x41')](_0x5f19c8['id'][_0x2271('0x43')](),_0x524d59)[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3e'))[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3f'))['from'](_0x2271('0x4a'))[_0x2271('0x45')](_0x2271('0x46'))['where'](_0x2271('0x47'),LISTID['toString']())[_0x2271('0x45')]('id\x20IN\x20?',squel[_0x2271('0x4b')](hopperContacts))[_0x2271('0x45')](_0x2271('0x48'))[_0x2271('0x45')](_0x2271('0x4c'),squel[_0x2271('0x40')]()[_0x2271('0x41')](_0x2271('0x4d'))['from'](_0x2271('0x4e'))[_0x2271('0x45')](_0x524d59+_0x2271('0x49'),_0x5f19c8['id'][_0x2271('0x43')]()))[_0x2271('0x45')](_0x2271('0x4c'),squel[_0x2271('0x40')]()[_0x2271('0x41')]('phone')[_0x2271('0x44')](_0x2271('0x3a'))[_0x2271('0x45')](_0x524d59+_0x2271('0x49'),_0x5f19c8['id'][_0x2271('0x43')]())))['toString']();return _0x43e9a8;};function _0xfcf6b2(_0x239120,_0x3df9dd){var _0x49988d=squel[_0x2271('0x38')]()[_0x2271('0x39')](_0x2271('0x3a'))[_0x2271('0x3b')](['phone',_0x2271('0x3c'),'ContactId',_0x2271('0x29'),_0x3df9dd,'createdAt',_0x2271('0x3f')],squel['select']()[_0x2271('0x41')]('phone',_0x2271('0x24'))['field'](_0x2271('0x42'),'scheduledAt')[_0x2271('0x41')]('id',_0x2271('0x3d'))[_0x2271('0x41')](LISTID[_0x2271('0x43')](),_0x2271('0x29'))[_0x2271('0x41')](_0x239120['id'][_0x2271('0x43')](),_0x3df9dd)[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3e'))[_0x2271('0x41')](_0x2271('0x42'),_0x2271('0x3f'))[_0x2271('0x44')](_0x2271('0x4a'))[_0x2271('0x45')](_0x2271('0x46'))[_0x2271('0x45')]('ListId\x20=\x20?',LISTID['toString']())[_0x2271('0x45')](_0x2271('0x4f'),squel['str'](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x49988d;}function _0xd75e3b(_0xe431e1,_0x491fda){var _0x58298d=squel[_0x2271('0x38')]()[_0x2271('0x39')](_0x2271('0x50'))['fromQuery']([_0x2271('0x24'),_0x2271('0x3d'),_0x2271('0x29'),_0x491fda,_0x2271('0x3e'),_0x2271('0x3f')],squel[_0x2271('0x40')]()[_0x2271('0x41')](_0x2271('0x24'),_0x2271('0x24'))[_0x2271('0x41')]('id',_0x2271('0x3d'))[_0x2271('0x41')](LISTID[_0x2271('0x43')](),_0x2271('0x29'))[_0x2271('0x41')](_0xe431e1['id'][_0x2271('0x43')](),_0x491fda)['field'](_0x2271('0x42'),_0x2271('0x3e'))[_0x2271('0x41')]('NOW()',_0x2271('0x3f'))['from'](_0x2271('0x4a'))[_0x2271('0x45')](_0x2271('0x46'))[_0x2271('0x45')]('ListId\x20=\x20?',LISTID['toString']())[_0x2271('0x45')]('id\x20IN\x20?',squel[_0x2271('0x4b')](hopperContacts))[_0x2271('0x45')](_0x2271('0x48')))[_0x2271('0x43')]();return _0x58298d;}return db[_0x2271('0x51')][_0x2271('0x52')]({'where':{'type':'outbound'},'attributes':['id',_0x2271('0x53')],'include':[{'model':db[_0x2271('0x54')],'as':_0x2271('0x55'),'where':{'id':LISTID}}]})['then'](function(_0x153ec1){var _0x4da877=[];if(_0x153ec1){var _0x11474f;for(var _0x4901b8=0x0,_0x39cad5;_0x4901b8<_0x153ec1[_0x2271('0x1f')];_0x4901b8+=0x1){_0x39cad5=_0x153ec1[_0x4901b8][_0x2271('0x56')]({'plain':!![]});switch(_0x39cad5[_0x2271('0x53')]){case _0x2271('0x57'):_0x4da877[_0x2271('0x31')](db[_0x2271('0x58')][_0x2271('0x59')](_0x54639c(_0x39cad5,_0x2271('0x5a')))[_0x2271('0x30')](function(){})[_0x2271('0x33')](_0x2f2f45()));break;case _0x2271('0x5b'):_0x4da877['push'](db['sequelize'][_0x2271('0x59')](_0x21a126(_0x39cad5,'VoiceQueueId'))[_0x2271('0x30')](function(){})[_0x2271('0x33')](_0x2f2f45()));break;default:_0x4da877[_0x2271('0x31')](db[_0x2271('0x58')][_0x2271('0x59')](_0xfcf6b2(_0x39cad5,_0x2271('0x5a')))[_0x2271('0x30')](function(){})['catch'](_0x2f2f45()));}}}return _0x4da877;})[_0x2271('0x5c')]()[_0x2271('0x30')](function(){return db[_0x2271('0x51')][_0x2271('0x52')]({'where':{'type':_0x2271('0x5d')},'attributes':['id'],'include':[{'model':db[_0x2271('0x54')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x2271('0x30')](function(_0x1e9e30){var _0x8b742b=[];if(_0x1e9e30){var _0x22bea3;for(var _0x4067b4=0x0,_0x2a0a18;_0x4067b4<_0x1e9e30[_0x2271('0x1f')];_0x4067b4+=0x1){_0x2a0a18=_0x1e9e30[_0x4067b4][_0x2271('0x56')]({'plain':!![]});_0x8b742b['push'](db[_0x2271('0x58')][_0x2271('0x59')](_0xd75e3b(_0x2a0a18,'VoiceQueueId'))[_0x2271('0x30')](function(){})[_0x2271('0x33')](_0x2f2f45()));}}return _0x8b742b;})[_0x2271('0x5c')]();})['then'](function(){return db['Campaign'][_0x2271('0x52')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0x2271('0x55'),'where':{'id':LISTID}}]})[_0x2271('0x30')](function(_0x285a65){var _0x318f87=[];if(_0x285a65){for(var _0x4f5ebf=0x0,_0x1d1855;_0x4f5ebf<_0x285a65['length'];_0x4f5ebf+=0x1){_0x1d1855=_0x285a65[_0x4f5ebf][_0x2271('0x56')]({'plain':!![]});switch(_0x1d1855[_0x2271('0x53')]){case'always':_0x318f87[_0x2271('0x31')](db[_0x2271('0x58')]['query'](_0x54639c(_0x1d1855,'CampaignId'))[_0x2271('0x30')](function(){})[_0x2271('0x33')](_0x2f2f45()));break;case _0x2271('0x5b'):_0x318f87[_0x2271('0x31')](db[_0x2271('0x58')][_0x2271('0x59')](_0x21a126(_0x1d1855,_0x2271('0x5e')))['then'](function(){})[_0x2271('0x33')](_0x2f2f45()));break;default:_0x318f87[_0x2271('0x31')](db[_0x2271('0x58')][_0x2271('0x59')](_0xfcf6b2(_0x1d1855,_0x2271('0x5e')))[_0x2271('0x30')](function(){})[_0x2271('0x33')](_0x2f2f45()));}}}return _0x318f87;})[_0x2271('0x5c')]();})['then'](function(){return db[_0x2271('0x5f')]['findAll']({'attributes':['id'],'include':[{'model':db[_0x2271('0x54')],'as':_0x2271('0x60'),'where':{'id':LISTID}}]})['then'](function(_0x3677b7){var _0x17b2c6=[];if(_0x3677b7){for(var _0x52dff4=0x0,_0xcc4198;_0x52dff4<_0x3677b7[_0x2271('0x1f')];_0x52dff4+=0x1){_0xcc4198=_0x3677b7[_0x52dff4]['get']({'plain':!![]});_0x17b2c6[_0x2271('0x31')](db[_0x2271('0x58')]['query'](_0xd75e3b(_0xcc4198,'CampaignId'))[_0x2271('0x30')](function(){})[_0x2271('0x33')](_0x2f2f45()));}}return _0x17b2c6;})['all']();})[_0x2271('0x33')](function(_0x59d09e){logger[_0x2271('0x18')](_0x2271('0x61'),_0x2271('0x62'),_0x59d09e[_0x2271('0x21')]);});}var processPromises=function(_0x21d1ea){return BPromise[_0x2271('0x5c')](promises)[_0x2271('0x30')](function(_0x1116ef){})[_0x2271('0x33')](function(_0x5e4177){logger[_0x2271('0x18')](_0x2271('0x63'),JSON[_0x2271('0x35')](_0x5e4177));})[_0x2271('0x64')](function(){socket['emit'](_0x2271('0x65')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x21d1ea){return _0x21d1ea[_0x2271('0x66')]();}});};var endCsv=function(){return BPromise[_0x2271('0x67')]()['then'](function(){if(hopperContacts){return checkHopper();}})[_0x2271('0x30')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2271('0x68')](FILEPATH);}catch(_0x5d3907){logger['error'](_0x2271('0x69'),JSON[_0x2271('0x35')](_0x5d3907));}finally{process[_0x2271('0x6a')](0x0);}});};process['on'](_0x2271('0x6b'),function(){logger['info'](_0x2271('0x6c'));endCsv();});function main(){return BPromise[_0x2271('0x67')]()[_0x2271('0x30')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x2271('0x15')](',');return db[_0x2271('0x2e')][_0x2271('0x52')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x48e643){var _0x1d3d45=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2271('0x6d')](_0x1d3d45,{'header':!![],'skipEmptyLines':!![],'step':function(_0x47220c,_0x2e64aa){total+=0x1;var _0x143b73=total;promises[_0x2271('0x31')](checkRow(_0x47220c,_0x48e643,_0x143b73)[_0x2271('0x30')](function(){success+=0x1;})[_0x2271('0x33')](function(_0x1105cf){if(_0x1105cf['error']){errors+=0x1;delete _0x1105cf[_0x2271('0x18')];}else if(_0x1105cf[_0x2271('0x2c')]){duplicates+=0x1;delete _0x1105cf[_0x2271('0x2c')];}rows[_0x2271('0x31')](_0x1105cf);}));if(total%0xc8===0x0){_0x2e64aa['pause']();return processPromises(_0x2e64aa);}},'complete':function(){return processPromises()[_0x2271('0x30')](function(){logger[_0x2271('0x6e')](_0x2271('0x6f'));endCsv();});},'error':function(_0x39d3cc,_0x2de78f){logger[_0x2271('0x6e')](_0x2271('0x70'),JSON[_0x2271('0x35')](_0x39d3cc));endCsv();}});})[_0x2271('0x33')](function(_0x2dee96){logger[_0x2271('0x18')](_0x2271('0x71'),JSON[_0x2271('0x35')](_0x2dee96));});}main();
\ No newline at end of file
+var _0x5f77=['email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','CmContact','create','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','insert','cm_hopper','fromQuery','createdAt','updatedAt','field','NOW()','from','cm_contacts','deletedAt\x20IS\x20NULL','toString','where','phone\x20NOT\x20IN\x20(?)','select','\x20=\x20?','into','scheduledAt','ContactId','id\x20IN\x20?','str','calleridnum','cm_hopper_final','phone\x20IS\x20NOT\x20NULL','cm_hopper_black','VoiceQueue','findAll','outbound','CmList','Lists','get','dialCheckDuplicateType','always','sequelize','VoiceQueueId','onlyIfOpen','query','all','BlackLists','Campaign','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','finally','resume','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','resolve','createReadStream','duplicate','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','util','lodash','squel','papaparse','../../../mysqldb','../../../config/logger','api','redis','defaults','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','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','length','map','message','join','hasOwnProperty','data','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!'];(function(_0x104112,_0x342eb6){var _0x394ab4=function(_0x48db18){while(--_0x48db18){_0x104112['push'](_0x104112['shift']());}};_0x394ab4(++_0x342eb6);}(_0x5f77,0x124));var _0x75f7=function(_0x576170,_0x1712ae){_0x576170=_0x576170-0x0;var _0x397c70=_0x5f77[_0x576170];return _0x397c70;};'use strict';var BPromise=require('bluebird');var util=require(_0x75f7('0x0'));var _=require(_0x75f7('0x1'));var fs=require('fs');var squel=require(_0x75f7('0x2'));var Papa=require(_0x75f7('0x3'));var Redis=require('ioredis');var db=require(_0x75f7('0x4'))['db'];var config=require('../../../config/environment');var logger=require(_0x75f7('0x5'))(_0x75f7('0x6'));config[_0x75f7('0x7')]=_[_0x75f7('0x8')](config[_0x75f7('0x7')],{'host':'localhost','port':0x18eb});var socket=require(_0x75f7('0x9'))(new Redis(config[_0x75f7('0x7')]));require(_0x75f7('0xa'))[_0x75f7('0xb')](socket);try{if(!process[_0x75f7('0xc')][0x2]||process[_0x75f7('0xc')][0x2]===_0x75f7('0xd')||process['argv'][0x2]===_0x75f7('0xe')){throw new Error(_0x75f7('0xf'));}var FILEPATH=process['argv'][0x2];if(!process[_0x75f7('0xc')][0x3]||process['argv'][0x3]==='undefined'||process[_0x75f7('0xc')][0x3]===_0x75f7('0xe')||!process[_0x75f7('0xc')][0x4]||process['argv'][0x4]===_0x75f7('0xd')||process[_0x75f7('0xc')][0x4]===_0x75f7('0xe')){throw new Error(_0x75f7('0x10'));}var FIELDS=_['zipObject'](process[_0x75f7('0xc')][0x3][_0x75f7('0x11')](','),process['argv'][0x4][_0x75f7('0x11')](','));if(!process[_0x75f7('0xc')][0x5]||process[_0x75f7('0xc')][0x5]===_0x75f7('0xd')||process[_0x75f7('0xc')][0x5]==='null'){throw new Error(_0x75f7('0x12'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x75f7('0xc')][0x6]&&process[_0x75f7('0xc')][0x6]!==_0x75f7('0xd')&&process[_0x75f7('0xc')][0x6]!=='null'?process[_0x75f7('0xc')][0x6]:null;var DUPLICATES=process[_0x75f7('0xc')][0x7]&&process['argv'][0x7]!==_0x75f7('0xd')&&process[_0x75f7('0xc')][0x7]!=='null'?process[_0x75f7('0xc')][0x7]:null;if(!process[_0x75f7('0xc')][0x8]||process[_0x75f7('0xc')][0x8]==='undefined'||process['argv'][0x8]==='null'){throw new Error(_0x75f7('0x13'));}var SOCKET_TIMESTAMP=process[_0x75f7('0xc')][0x8];}catch(_0x3e74ad){logger[_0x75f7('0x14')](_0x3e74ad);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(_0x1e51a8,_0x15bac8,_0xcd5049,_0x140c1c){var _0x4d90e3={'message':_0x15bac8};_0x4d90e3[_0x1e51a8]=!![];if(_0xcd5049){_0x4d90e3[_0x75f7('0x15')]=_0xcd5049;}if(_0x140c1c){_0x4d90e3[_0x75f7('0x16')]=_0x140c1c;}return _0x4d90e3;}function isEmail(_0x239699){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))*$/[_0x75f7('0x17')](_0x239699);}function checkRow(_0x116104,_0x6b3153,_0x58153d){return new BPromise(function(_0x8ee91,_0x5a8f18){if(_['isNil'](_0x116104)){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x18'),null,_0x58153d));}if(_0x116104['errors']&&_0x116104[_0x75f7('0x19')][_0x75f7('0x1a')]){var _0x3ed0d3=_[_0x75f7('0x1b')](_0x116104[_0x75f7('0x19')],_0x75f7('0x1c'))[_0x75f7('0x1d')](';');return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x3ed0d3,null,_0x58153d));}var _0x1f7ab4={};for(var _0xaf0c30 in FIELDS){if(FIELDS[_0x75f7('0x1e')](_0xaf0c30)&&FIELDS[_0xaf0c30]){_0x1f7ab4[_0xaf0c30]=_0x116104['data'][0x0][FIELDS[_0xaf0c30]]||_0x116104[_0x75f7('0x1f')][0x0]['\ufeff'+FIELDS[_0xaf0c30]];}}if(!_0x1f7ab4['firstName']){return _0x5a8f18(handleCheckRowError('error',_0x75f7('0x20'),null,_0x58153d));}if(!_0x1f7ab4[_0x75f7('0x21')]){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x22'),null,_0x58153d));}if(_0x1f7ab4['birthDate']){var _0x225a2a=moment(_0x1f7ab4[_0x75f7('0x23')],'YYYY-MM-DD');if(!_0x225a2a[_0x75f7('0x24')]()){return _0x5a8f18(handleCheckRowError('error',_0x75f7('0x25'),null,_0x58153d));}}if(_0x1f7ab4[_0x75f7('0x26')]){if(!isEmail(_0x1f7ab4['email'])){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x27'),null,_0x58153d));}}_0x1f7ab4[_0x75f7('0x28')]=LISTID;_0x1f7ab4[_0x75f7('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x75f7('0x1a')]&&_0x6b3153){var _0x9df965={};for(var _0x484590=0x0,_0x3d1539=DUPLICATES[_0x75f7('0x1a')];_0x484590<_0x3d1539;_0x484590+=0x1){_0x9df965[DUPLICATES[_0x484590]]=_0x1f7ab4[DUPLICATES[_0x484590]];}var _0xf60b2c=_[_0x75f7('0x2a')](_0x6b3153,_0x9df965);if(_0xf60b2c){return _0x5a8f18(handleCheckRowError('duplicate','Duplicate\x20Contact',_0xf60b2c,_0x58153d));}}return db[_0x75f7('0x2b')][_0x75f7('0x2c')](_0x1f7ab4,{'raw':!![],'hooks':![],'fields':_['keys'](_0x1f7ab4)})[_0x75f7('0x2d')](function(_0x3dabbf){if(DUPLICATES&&DUPLICATES['length']&&_0x6b3153){_0x6b3153[_0x75f7('0x2e')](_[_0x75f7('0x2f')](_0x1f7ab4,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x3dabbf['id'];return _0x8ee91();})[_0x75f7('0x30')](function(_0x58336f){return _0x5a8f18(handleCheckRowError(_0x75f7('0x14'),_0x75f7('0x31')+(_0x58336f[_0x75f7('0x1c')]||JSON[_0x75f7('0x32')](_0x58336f)),null,_0x58153d));});});}function checkHopper(){function _0x4f2270(){return function(_0x2e0028){logger[_0x75f7('0x14')](_0x75f7('0x33'),_0x75f7('0x34'),util[_0x75f7('0x35')](_0x2e0028,{'showHidden':![],'depth':null}));};}var _0x27b9cc=function(_0x4d5d07,_0x514d87){var _0x1571ed=squel[_0x75f7('0x36')]()['into'](_0x75f7('0x37'))[_0x75f7('0x38')](['phone','scheduledAt','ContactId','ListId',_0x514d87,_0x75f7('0x39'),_0x75f7('0x3a')],squel['select']()[_0x75f7('0x3b')](_0x75f7('0x21'),'phone')[_0x75f7('0x3b')](_0x75f7('0x3c'),'scheduledAt')[_0x75f7('0x3b')]('id','ContactId')[_0x75f7('0x3b')](LISTID['toString'](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x4d5d07['id']['toString'](),_0x514d87)['field'](_0x75f7('0x3c'),_0x75f7('0x39'))[_0x75f7('0x3b')](_0x75f7('0x3c'),'updatedAt')[_0x75f7('0x3d')](_0x75f7('0x3e'))['where'](_0x75f7('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x75f7('0x40')]())[_0x75f7('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0x75f7('0x41')](_0x75f7('0x42'),squel[_0x75f7('0x43')]()['field']('phone')[_0x75f7('0x3d')](_0x75f7('0x37'))[_0x75f7('0x41')](_0x514d87+_0x75f7('0x44'),_0x4d5d07['id'][_0x75f7('0x40')]())))['toString']();return _0x1571ed;};var _0x16785d=function(_0x249a75,_0x47f228){var _0x897066=squel['insert']()[_0x75f7('0x45')](_0x75f7('0x37'))['fromQuery'](['phone',_0x75f7('0x46'),'ContactId',_0x75f7('0x28'),_0x47f228,'createdAt',_0x75f7('0x3a')],squel['select']()[_0x75f7('0x3b')]('phone',_0x75f7('0x21'))[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x46'))[_0x75f7('0x3b')]('id',_0x75f7('0x47'))[_0x75f7('0x3b')](LISTID[_0x75f7('0x40')](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x249a75['id'][_0x75f7('0x40')](),_0x47f228)[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x39'))[_0x75f7('0x3b')]('NOW()',_0x75f7('0x3a'))[_0x75f7('0x3d')]('cm_contacts')['where'](_0x75f7('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x75f7('0x40')]())[_0x75f7('0x41')](_0x75f7('0x48'),squel[_0x75f7('0x49')](hopperContacts))[_0x75f7('0x41')]('phone\x20IS\x20NOT\x20NULL')[_0x75f7('0x41')](_0x75f7('0x42'),squel['select']()[_0x75f7('0x3b')](_0x75f7('0x4a'))[_0x75f7('0x3d')](_0x75f7('0x4b'))[_0x75f7('0x41')](_0x47f228+_0x75f7('0x44'),_0x249a75['id'][_0x75f7('0x40')]()))[_0x75f7('0x41')](_0x75f7('0x42'),squel['select']()[_0x75f7('0x3b')](_0x75f7('0x21'))[_0x75f7('0x3d')](_0x75f7('0x37'))[_0x75f7('0x41')](_0x47f228+_0x75f7('0x44'),_0x249a75['id'][_0x75f7('0x40')]())))[_0x75f7('0x40')]();return _0x897066;};function _0x562408(_0x5203a3,_0x2ad311){var _0x42d304=squel[_0x75f7('0x36')]()[_0x75f7('0x45')](_0x75f7('0x37'))['fromQuery']([_0x75f7('0x21'),_0x75f7('0x46'),_0x75f7('0x47'),'ListId',_0x2ad311,_0x75f7('0x39'),'updatedAt'],squel[_0x75f7('0x43')]()['field']('phone',_0x75f7('0x21'))['field'](_0x75f7('0x3c'),_0x75f7('0x46'))[_0x75f7('0x3b')]('id',_0x75f7('0x47'))[_0x75f7('0x3b')](LISTID[_0x75f7('0x40')](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x5203a3['id'][_0x75f7('0x40')](),_0x2ad311)[_0x75f7('0x3b')]('NOW()',_0x75f7('0x39'))[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x3a'))[_0x75f7('0x3d')]('cm_contacts')[_0x75f7('0x41')](_0x75f7('0x3f'))[_0x75f7('0x41')]('ListId\x20=\x20?',LISTID['toString']())[_0x75f7('0x41')](_0x75f7('0x48'),squel[_0x75f7('0x49')](hopperContacts))['where'](_0x75f7('0x4c')))[_0x75f7('0x40')]();return _0x42d304;}function _0x23de93(_0x3610b0,_0x39294c){var _0x2e84a3=squel['insert']()[_0x75f7('0x45')](_0x75f7('0x4d'))[_0x75f7('0x38')](['phone',_0x75f7('0x47'),_0x75f7('0x28'),_0x39294c,_0x75f7('0x39'),_0x75f7('0x3a')],squel[_0x75f7('0x43')]()[_0x75f7('0x3b')](_0x75f7('0x21'),'phone')[_0x75f7('0x3b')]('id','ContactId')[_0x75f7('0x3b')](LISTID[_0x75f7('0x40')](),_0x75f7('0x28'))[_0x75f7('0x3b')](_0x3610b0['id'][_0x75f7('0x40')](),_0x39294c)[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x39'))[_0x75f7('0x3b')](_0x75f7('0x3c'),_0x75f7('0x3a'))[_0x75f7('0x3d')](_0x75f7('0x3e'))[_0x75f7('0x41')](_0x75f7('0x3f'))['where']('ListId\x20=\x20?',LISTID[_0x75f7('0x40')]())[_0x75f7('0x41')](_0x75f7('0x48'),squel['str'](hopperContacts))['where'](_0x75f7('0x4c')))[_0x75f7('0x40')]();return _0x2e84a3;}return db[_0x75f7('0x4e')][_0x75f7('0x4f')]({'where':{'type':_0x75f7('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x52'),'where':{'id':LISTID}}]})['then'](function(_0xbf8182){var _0x55049c=[];if(_0xbf8182){var _0x2af485;for(var _0x3a89c4=0x0,_0x18cdf2;_0x3a89c4<_0xbf8182['length'];_0x3a89c4+=0x1){_0x18cdf2=_0xbf8182[_0x3a89c4][_0x75f7('0x53')]({'plain':!![]});switch(_0x18cdf2[_0x75f7('0x54')]){case _0x75f7('0x55'):_0x55049c[_0x75f7('0x2e')](db[_0x75f7('0x56')]['query'](_0x16785d(_0x18cdf2,_0x75f7('0x57')))['then'](function(){})['catch'](_0x4f2270()));break;case _0x75f7('0x58'):_0x55049c[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x27b9cc(_0x18cdf2,_0x75f7('0x57')))['then'](function(){})[_0x75f7('0x30')](_0x4f2270()));break;default:_0x55049c[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x562408(_0x18cdf2,'VoiceQueueId'))['then'](function(){})[_0x75f7('0x30')](_0x4f2270()));}}}return _0x55049c;})[_0x75f7('0x5a')]()[_0x75f7('0x2d')](function(){return db['VoiceQueue'][_0x75f7('0x4f')]({'where':{'type':_0x75f7('0x50')},'attributes':['id'],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x5b'),'where':{'id':LISTID}}]})[_0x75f7('0x2d')](function(_0xee18f0){var _0x47024f=[];if(_0xee18f0){var _0x106db3;for(var _0x140ef6=0x0,_0x2ed809;_0x140ef6<_0xee18f0[_0x75f7('0x1a')];_0x140ef6+=0x1){_0x2ed809=_0xee18f0[_0x140ef6][_0x75f7('0x53')]({'plain':!![]});_0x47024f['push'](db['sequelize']['query'](_0x23de93(_0x2ed809,_0x75f7('0x57')))['then'](function(){})['catch'](_0x4f2270()));}}return _0x47024f;})[_0x75f7('0x5a')]();})[_0x75f7('0x2d')](function(){return db[_0x75f7('0x5c')][_0x75f7('0x4f')]({'attributes':['id',_0x75f7('0x54')],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x52'),'where':{'id':LISTID}}]})[_0x75f7('0x2d')](function(_0x477e4d){var _0x12f9b5=[];if(_0x477e4d){for(var _0x2eec09=0x0,_0x5eebf4;_0x2eec09<_0x477e4d[_0x75f7('0x1a')];_0x2eec09+=0x1){_0x5eebf4=_0x477e4d[_0x2eec09]['get']({'plain':!![]});switch(_0x5eebf4['dialCheckDuplicateType']){case _0x75f7('0x55'):_0x12f9b5[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x16785d(_0x5eebf4,_0x75f7('0x5d')))[_0x75f7('0x2d')](function(){})[_0x75f7('0x30')](_0x4f2270()));break;case'onlyIfOpen':_0x12f9b5[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x27b9cc(_0x5eebf4,_0x75f7('0x5d')))[_0x75f7('0x2d')](function(){})[_0x75f7('0x30')](_0x4f2270()));break;default:_0x12f9b5[_0x75f7('0x2e')](db[_0x75f7('0x56')]['query'](_0x562408(_0x5eebf4,'CampaignId'))[_0x75f7('0x2d')](function(){})['catch'](_0x4f2270()));}}}return _0x12f9b5;})[_0x75f7('0x5a')]();})[_0x75f7('0x2d')](function(){return db[_0x75f7('0x5c')][_0x75f7('0x4f')]({'attributes':['id'],'include':[{'model':db[_0x75f7('0x51')],'as':_0x75f7('0x5b'),'where':{'id':LISTID}}]})[_0x75f7('0x2d')](function(_0x2e6c3c){var _0xb4f89f=[];if(_0x2e6c3c){for(var _0xc49b55=0x0,_0x31bfb8;_0xc49b55<_0x2e6c3c[_0x75f7('0x1a')];_0xc49b55+=0x1){_0x31bfb8=_0x2e6c3c[_0xc49b55][_0x75f7('0x53')]({'plain':!![]});_0xb4f89f[_0x75f7('0x2e')](db[_0x75f7('0x56')][_0x75f7('0x59')](_0x23de93(_0x31bfb8,'CampaignId'))[_0x75f7('0x2d')](function(){})[_0x75f7('0x30')](_0x4f2270()));}}return _0xb4f89f;})[_0x75f7('0x5a')]();})[_0x75f7('0x30')](function(_0x23131f){logger[_0x75f7('0x14')](_0x75f7('0x5e'),_0x75f7('0x5f'),_0x23131f['message']);});}var processPromises=function(_0x42bf44){return BPromise[_0x75f7('0x5a')](promises)[_0x75f7('0x2d')](function(_0x190164){})['catch'](function(_0x4289ed){logger[_0x75f7('0x14')](_0x75f7('0x60'),JSON[_0x75f7('0x32')](_0x4289ed));})[_0x75f7('0x61')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x42bf44){return _0x42bf44[_0x75f7('0x62')]();}});};var endCsv=function(){return BPromise['resolve']()[_0x75f7('0x2d')](function(){if(hopperContacts){return checkHopper();}})[_0x75f7('0x2d')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x193b33){logger[_0x75f7('0x14')](_0x75f7('0x63'),JSON[_0x75f7('0x32')](_0x193b33));}finally{process[_0x75f7('0x64')](0x0);}});};process['on'](_0x75f7('0x65'),function(){logger[_0x75f7('0x66')](_0x75f7('0x67'));endCsv();});function main(){return BPromise[_0x75f7('0x68')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES['split'](',');return db['CmContact'][_0x75f7('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x75f7('0x2d')](function(_0x21750b){var _0x8fabdf=fs[_0x75f7('0x69')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x8fabdf,{'header':!![],'skipEmptyLines':!![],'step':function(_0x87db1e,_0x4bc0c5){total+=0x1;var _0x482f7e=total;promises['push'](checkRow(_0x87db1e,_0x21750b,_0x482f7e)[_0x75f7('0x2d')](function(){success+=0x1;})[_0x75f7('0x30')](function(_0x443b82){if(_0x443b82[_0x75f7('0x14')]){errors+=0x1;delete _0x443b82[_0x75f7('0x14')];}else if(_0x443b82[_0x75f7('0x6a')]){duplicates+=0x1;delete _0x443b82[_0x75f7('0x6a')];}rows[_0x75f7('0x2e')](_0x443b82);}));if(total%0xc8===0x0){_0x4bc0c5[_0x75f7('0x6b')]();return processPromises(_0x4bc0c5);}},'complete':function(){return processPromises()[_0x75f7('0x2d')](function(){logger[_0x75f7('0x66')](_0x75f7('0x6c'));endCsv();});},'error':function(_0x3e4f50,_0x2d0785){logger[_0x75f7('0x66')](_0x75f7('0x6d'),JSON[_0x75f7('0x32')](_0x3e4f50));endCsv();}});})['catch'](function(_0x1fe590){logger[_0x75f7('0x14')]('Error\x20executing\x20contact\x20csv\x20import:',JSON['stringify'](_0x1fe590));});}main();
\ No newline at end of file
index 47ff550..9de5210 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccad=['each','then','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','moment','squel','ioredis','../../../mysqldb','../../../config/logger','import','defaults','localhost','redis','format','YYYY-MM-DD\x20HH:mm:ss','test','field','phone','from','join','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.id','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','createdAt','recallme','select','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','\x22onlyIfOpen\x22','\x22always\x22','cm_contacts.ListId','cm_contacts.createdAt','cm_hopper_black','updatedAt','ListId\x20=\x20?','\x20=\x20?','toString','concat','keys','ListId','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','MIN(id)','min_id','info','Received\x20SIGINT','exit','code','spread','catch','error','message','main','stringify','start','socket_timestamp','root','server/files/tmp','.csv','header','writeFileSync','createReadStream','data','length','errors','hasOwnProperty','replace','push','priority','isNaN','isNumber','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','SystemRow','appendFileSync','rows','emit','contact:import:','abort','SystemError','duplicates','cm_contacts_','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_has_cm_lists','voice_queues','VoiceQueueId','campaigns_has_cm_lists','campaigns','campaigns_has_cm_blacklists','CampaignId'];(function(_0x1b612f,_0x8dac64){var _0x3af369=function(_0x27cdb3){while(--_0x27cdb3){_0x1b612f['push'](_0x1b612f['shift']());}};_0x3af369(++_0x8dac64);}(_0xccad,0x10b));var _0xdcca=function(_0x2ee790,_0x5a8661){_0x2ee790=_0x2ee790-0x0;var _0x5a54a5=_0xccad[_0x2ee790];return _0x5a54a5;};'use strict';var fs=require('fs');var path=require(_0xdcca('0x0'));var _=require(_0xdcca('0x1'));var Papa=require('papaparse');var util=require('util');var BPromise=require('bluebird');var moment=require(_0xdcca('0x2'));var squel=require(_0xdcca('0x3'));var Redis=require(_0xdcca('0x4'));var db=require(_0xdcca('0x5'))['db'];var config=require('../../../config/environment');var logger=require(_0xdcca('0x6'))(_0xdcca('0x7'));config['redis']=_[_0xdcca('0x8')](config['redis'],{'host':_0xdcca('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xdcca('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0xdcca('0xb')](_0xdcca('0xc'));function isEmail(_0x3dc5de){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))*$/[_0xdcca('0xd')](_0x3dc5de);}function selectNotIn(_0x35c058,_0xebb227,_0x28871b,_0x564158,_0x2c8838){return squel['select']()[_0xdcca('0xe')](_0xdcca('0xf'))[_0xdcca('0x10')](_0x564158)[_0xdcca('0x11')](_0xebb227,null,_0xebb227+_0xdcca('0x12')+_0x564158+'.'+_0x28871b)['where'](_0x564158+'.'+_0x28871b+_0xdcca('0x13')+_0x35c058+'.'+_0x28871b)[_0xdcca('0x14')](_0xebb227+_0xdcca('0x15')+_0x2c8838[_0xdcca('0x11')]()+')');}function insertCmHopper(_0x12aad6,_0x3268a5,_0x402d55,_0x366317,_0x4a054f){var _0xf7e01a=[_0xdcca('0x16'),'cm_contacts.scheduledat',_0xdcca('0x17'),'cm_contacts.ListId',_0x3268a5+'.'+_0x366317,'cm_contacts.createdAt',_0xdcca('0x18'),_0xdcca('0x19'),_0xdcca('0x1a'),'\x22'+_0x4a054f+'\x22'];return squel['insert']()[_0xdcca('0x1b')](_0xdcca('0x1c'))[_0xdcca('0x1d')](['phone',_0xdcca('0x1e'),'ContactId','ListId',_0x366317,_0xdcca('0x1f'),'updatedAt','priority','UserId',_0xdcca('0x20')],squel[_0xdcca('0x21')]()[_0xdcca('0x22')](_0xf7e01a)[_0xdcca('0x10')](_0x3268a5)['join'](_0xdcca('0x23'),null,_0xdcca('0x24')+_0x3268a5+_0xdcca('0x25'))[_0xdcca('0x11')](_0x402d55,null,_0x402d55+_0xdcca('0x12')+_0x3268a5+'.'+_0x366317)['where'](_0x3268a5+'.CmListId\x20=\x20?',_0x12aad6)['where'](_0xdcca('0x26'),NOW)[_0xdcca('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x3268a5,_0x402d55,_0x366317,_0xdcca('0x1c'),['\x22always\x22',_0xdcca('0x27')]))[_0xdcca('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x3268a5,_0x402d55,_0x366317,_0xdcca('0x1c'),[_0xdcca('0x28')])))['toString']();}function insertCmHopperBlack(_0x489a6b,_0x2921e0,_0x503dd3,_0x2a77db){var _0x2f6251=['cm_contacts.phone','cm_contacts.id',_0xdcca('0x29'),_0x2921e0+'.'+_0x2a77db,_0xdcca('0x2a'),_0xdcca('0x18')];return squel['insert']()[_0xdcca('0x1b')](_0xdcca('0x2b'))[_0xdcca('0x1d')](['phone','ContactId','ListId',_0x2a77db,'createdAt',_0xdcca('0x2c')],squel['select']()[_0xdcca('0x22')](_0x2f6251)[_0xdcca('0x10')](_0x2921e0)[_0xdcca('0x11')](_0xdcca('0x23'),null,'cm_contacts.ListId\x20=\x20'+_0x2921e0+_0xdcca('0x25'))[_0xdcca('0x11')](_0x503dd3,null,_0x503dd3+_0xdcca('0x12')+_0x2921e0+'.'+_0x2a77db)[_0xdcca('0x14')](_0x2921e0+'.CmListId\x20=\x20?',_0x489a6b)[_0xdcca('0x14')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xdcca('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel['select']()[_0xdcca('0xe')](_0xdcca('0xf'))[_0xdcca('0x10')](_0xdcca('0x2b'))[_0xdcca('0x14')](_0xdcca('0x2d'),_0x489a6b)[_0xdcca('0x14')](_0x2a77db+_0xdcca('0x2e'),_0x2921e0+'.'+_0x2a77db)))[_0xdcca('0x2f')]();}function insertCmContact(_0x2bca4f,_0x25a0c3,_0x12f2f6,_0xa736c7){var _0x5ac733=_[_0xdcca('0x30')](_[_0xdcca('0x31')](_0xa736c7),[_0xdcca('0x32'),_0xdcca('0x33'),_0xdcca('0x1f'),_0xdcca('0x2c')]);return squel['insert']()[_0xdcca('0x1b')]('cm_contacts')[_0xdcca('0x1d')](_0x5ac733,squel[_0xdcca('0x21')]()[_0xdcca('0x22')](_0x5ac733)['from'](_0x25a0c3)[_0xdcca('0x14')]('('+_0x12f2f6['join'](',')+_0xdcca('0x34'),squel[_0xdcca('0x21')]()[_0xdcca('0x22')](_0x12f2f6)[_0xdcca('0x10')](_0xdcca('0x23'))[_0xdcca('0x14')](_0xdcca('0x2d'),_0x2bca4f)[_0xdcca('0x14')](_0xdcca('0x35')))[_0xdcca('0x14')]('id\x20IN\x20?',squel[_0xdcca('0x21')]()['field'](_0xdcca('0x36'),_0xdcca('0x37'))['from'](_0x25a0c3)['group'](_0x12f2f6['join'](','))))['toString']();}function handleStop(){logger[_0xdcca('0x38')](_0xdcca('0x39'));stopped=!![];}function handleUncaughtException(_0x2069e8){logger['error'](_0x2069e8['message']);process[_0xdcca('0x3a')](0x1);}function handleError(_0x165021,_0x1b6b62){stats['errors']['push']({'name':_0x1b6b62[_0xdcca('0x3b')],'message':_0x1b6b62['message'],'row':_0x165021});}function handleQuery(_0x316825){logger[_0xdcca('0x38')](_0x316825);return db['sequelize']['query'](_0x316825)[_0xdcca('0x3c')](function(_0x137654){results['push'](_0x137654);})[_0xdcca('0x3d')](function(_0x2c9d7d){logger[_0xdcca('0x3e')](_0x2c9d7d[_0xdcca('0x3f')]);});}function main(_0x1eba3e,_0x4ee99a,_0x397c86,_0x324793){logger[_0xdcca('0x38')](_0xdcca('0x40'),_0x1eba3e,JSON[_0xdcca('0x41')](_0x4ee99a));process['send'](_0xdcca('0x42'));var _0xecfed3=_0x4ee99a['binding'];var _0xd31747=_0x4ee99a[_0xdcca('0x43')];var _0x26e6d7=path[_0xdcca('0x11')](config[_0xdcca('0x44')],_0xdcca('0x45'),_0xd31747+_0xdcca('0x46'));var _0x893734=_[_0xdcca('0x31')](_0xecfed3)['join']();logger['info'](_0xdcca('0x47'),_0x893734);fs[_0xdcca('0x48')](_0x26e6d7,_0x893734+'\x0a');Papa['parse'](fs[_0xdcca('0x49')](_0x1eba3e),{'header':!![],'skipEmptyLines':!![],'step':function(_0x19fd68,_0xd562fd){try{for(var _0x41ad51=0x0,_0x283c17=[];_0x41ad51<_0x19fd68[_0xdcca('0x4a')][_0xdcca('0x4b')];_0x41ad51++){stats['rows']+=0x1;if(_0x19fd68['errors'][_0x41ad51]){handleError(_0x19fd68[_0xdcca('0x4a')][_0x41ad51],_0x19fd68[_0xdcca('0x4c')][_0x41ad51]);}else{var _0x7e978c=[];for(var _0x234c5d in _0xecfed3){if(_0xecfed3[_0xdcca('0x4d')](_0x234c5d)){if(_0x19fd68[_0xdcca('0x4a')][_0x41ad51][_0xecfed3[_0x234c5d]]){var _0x4d6855=_['trim'](_0x19fd68[_0xdcca('0x4a')][_0x41ad51][_0xecfed3[_0x234c5d]][_0xdcca('0x4e')](/"/g,'\x27'));switch(_0x234c5d){case _0xdcca('0x1e'):var _0x357008=moment(_0x4d6855,_0xdcca('0xc'),!![]);if(_0x357008['isValid']()){_0x283c17[_0xdcca('0x4f')]('\x22'+_0x4d6855+'\x22');}else{_0x7e978c['push']('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0xdcca('0x50'):var _0x3f12e0=parseInt(_0x4d6855);_0x4d6855=_[_0xdcca('0x51')](_0x3f12e0)||_0x3f12e0<0x0||_0x3f12e0>0x4?_0x324793?0x3:0x2:_0x3f12e0;_0x283c17['push']('\x22'+_0x4d6855+'\x22');break;case'UserId':var _0x31b98f=parseInt(_0x4d6855);if(_[_0xdcca('0x52')](_0x31b98f)&&_['includes'](_0x397c86,_0x31b98f)){_0x283c17[_0xdcca('0x4f')]('\x22'+_0x31b98f+'\x22');}else{_0x7e978c[_0xdcca('0x4f')](_0xdcca('0x53'));}break;case'email':if(isEmail(_0x4d6855)){_0x283c17[_0xdcca('0x4f')]('\x22'+_0x4d6855+'\x22');}else{_0x7e978c[_0xdcca('0x4f')](_0xdcca('0x54'));}break;case _0xdcca('0x55'):var _0x2fbd9a=moment(_0x4d6855,'YYYY-MM-DD',!![]);if(_0x2fbd9a[_0xdcca('0x56')]()){_0x283c17[_0xdcca('0x4f')]('\x22'+_0x4d6855+'\x22');}else{_0x7e978c[_0xdcca('0x4f')](_0xdcca('0x57'));}break;default:_0x283c17[_0xdcca('0x4f')]('\x22'+_0x4d6855+'\x22');}}else{switch(_0x234c5d){case'firstName':case _0xdcca('0xf'):_0x7e978c[_0xdcca('0x4f')](_0x234c5d+'\x20not\x20specified');break;default:_0x283c17[_0xdcca('0x4f')]('\x22\x22');}}}}if(_0x7e978c[_0xdcca('0x4b')]){handleError(_0x19fd68['data'][_0x41ad51],{'code':_0xdcca('0x58'),'message':_0x7e978c[_0xdcca('0x11')]()});}else{fs[_0xdcca('0x59')](_0x26e6d7,_0x283c17['join']()+'\x0a');}_0x283c17=[];}if(!(stats[_0xdcca('0x5a')]%0xc8)){socket[_0xdcca('0x5b')](_0xdcca('0x5c')+_0xd31747,stats);stats[_0xdcca('0x4c')]=[];}}if(stopped){logger[_0xdcca('0x38')]('Abort\x20parser');_0xd562fd[_0xdcca('0x5d')]();}}catch(_0x4ae2df){handleError(_0x19fd68[_0xdcca('0x4a')][_0x41ad51],{'code':_0xdcca('0x5e'),'message':_0x4ae2df[_0xdcca('0x3f')]});logger[_0xdcca('0x3e')]('step',_0x4ae2df['message']);}},'complete':function(){try{var _0xf2ed8e=[];var _0x56f8f3='cm_contacts';if(_0x4ee99a[_0xdcca('0x5f')]&&_0x4ee99a[_0xdcca('0x5f')][_0xdcca('0x4b')]){_0x56f8f3=_0xdcca('0x60')+_0xd31747;_0xf2ed8e['push']('CREATE\x20TABLE\x20'+_0x56f8f3+'\x20LIKE\x20cm_contacts;');}var _0x2776b4=util[_0xdcca('0xb')](_0xdcca('0x61'),_0x26e6d7,_0x56f8f3,_0x893734,_0x4ee99a[_0xdcca('0x32')],_0x4ee99a[_0xdcca('0x33')]||null,NOW,NOW);if(_[_0xdcca('0x62')](_0xecfed3['scheduledat'])){_0x2776b4+=_0xdcca('0x63');}_0xf2ed8e[_0xdcca('0x4f')](_0x2776b4);if(_0x4ee99a['duplicates']&&_0x4ee99a[_0xdcca('0x5f')][_0xdcca('0x4b')]){_0xf2ed8e[_0xdcca('0x4f')](insertCmContact(_0x4ee99a[_0xdcca('0x32')],_0x56f8f3,_0x4ee99a['duplicates'],_0xecfed3));_0xf2ed8e[_0xdcca('0x4f')](_0xdcca('0x64')+_0x56f8f3+';');}_0xf2ed8e[_0xdcca('0x4f')](insertCmHopper(_0x4ee99a['ListId'],_0xdcca('0x65'),_0xdcca('0x66'),'VoiceQueueId',_0x324793));_0xf2ed8e[_0xdcca('0x4f')](insertCmHopperBlack(_0x4ee99a[_0xdcca('0x32')],'voice_queues_has_cm_blacklists',_0xdcca('0x66'),_0xdcca('0x67')));_0xf2ed8e[_0xdcca('0x4f')](insertCmHopper(_0x4ee99a[_0xdcca('0x32')],_0xdcca('0x68'),_0xdcca('0x69'),'CampaignId',_0x324793));_0xf2ed8e[_0xdcca('0x4f')](insertCmHopperBlack(_0x4ee99a[_0xdcca('0x32')],_0xdcca('0x6a'),_0xdcca('0x69'),_0xdcca('0x6b')));BPromise[_0xdcca('0x6c')](_0xf2ed8e,handleQuery)[_0xdcca('0x6d')](function(_0x2506fc){stats['finish']=!![];stats[_0xdcca('0x6e')]=_0x4ee99a[_0xdcca('0x5f')]&&_0x4ee99a[_0xdcca('0x5f')]['length']?results[0x2][_0xdcca('0x6e')]:results[0x0][_0xdcca('0x6e')];socket[_0xdcca('0x5b')](_0xdcca('0x5c')+_0xd31747,stats);fs['unlink'](_0x1eba3e);fs[_0xdcca('0x6f')](_0x26e6d7);process[_0xdcca('0x3a')](0x0);})[_0xdcca('0x3d')](function(_0x1dddd7){logger[_0xdcca('0x3e')](_0x1dddd7[_0xdcca('0x3f')]);process[_0xdcca('0x3a')](0x1);});}catch(_0xa71e8){logger[_0xdcca('0x3e')](_0xdcca('0x70'),_0xa71e8[_0xdcca('0x3f')]);process[_0xdcca('0x3a')](0x1);}},'error':function(_0x4c7256,_0x317d56,_0x2dac5d,_0x49712d){throw new Error(_0x49712d);}});}function validate(){if(process[_0xdcca('0x71')]&&process[_0xdcca('0x71')][_0xdcca('0x4b')]<0x4){throw new Error(_0xdcca('0x72'));}var _0x559611=path[_0xdcca('0x11')](config[_0xdcca('0x44')],_0xdcca('0x45'),process[_0xdcca('0x71')][0x2]);if(!fs['existsSync'](_0x559611)){throw new Error(_0xdcca('0x73'));}var _0x29555f={};try{_0x29555f=JSON['parse'](process['argv'][0x3]);if(!_0x29555f[_0xdcca('0x74')]){throw new Error(_0xdcca('0x75'));}if(!_0x29555f[_0xdcca('0x74')]['phone']){throw new Error(_0xdcca('0x76'));}if(!_0x29555f[_0xdcca('0x74')][_0xdcca('0x77')]){throw new Error(_0xdcca('0x78'));}var _0x4274ef=0x0;if(_0x29555f[_0xdcca('0x74')]['UserId']){_0x4274ef=0x1;}if(!_0x29555f[_0xdcca('0x32')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x67b7c7){throw new Error('body\x20id\x20mandatory');}var _0x1bdfb8=[];try{_0x1bdfb8=_[_0xdcca('0x79')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x3ae767){logger[_0xdcca('0x38')](_0xdcca('0x7a'));}main(_0x559611,_0x29555f,_0x1bdfb8,_0x4274ef);}validate();process['on'](_0xdcca('0x7b'),handleStop);process['on'](_0xdcca('0x7c'),handleUncaughtException);
\ No newline at end of file
+var _0x4870=['then','finish','affectedRows','contact:import:','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','papaparse','util','bluebird','squel','../../../config/logger','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.id','cm_contacts.ListId','insert','cm_hopper_black','cm_contacts.ListId\x20=\x20','ListId\x20=\x20?','\x20=\x20?','concat','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','group','info','Received\x20SIGINT','message','exit','code','query','spread','catch','main','stringify','send','start','binding','root','server/files/tmp','header','writeFileSync','parse','createReadStream','data','length','errors','hasOwnProperty','trim','replace','push','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','SystemRow','appendFileSync','rows','emit','Abort\x20parser','abort','SystemError','error','duplicates','CREATE\x20TABLE\x20','isNil',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','VoiceQueueId','voice_queues_has_cm_blacklists','voice_queues','campaigns','CampaignId','campaigns_has_cm_blacklists','each'];(function(_0x28812e,_0xd6124b){var _0x3ff0bf=function(_0x3f3f72){while(--_0x3f3f72){_0x28812e['push'](_0x28812e['shift']());}};_0x3ff0bf(++_0xd6124b);}(_0x4870,0x8f));var _0x0487=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x4870[_0x36ed48];return _0x51c63a;};'use strict';var fs=require('fs');var path=require(_0x0487('0x0'));var _=require(_0x0487('0x1'));var Papa=require(_0x0487('0x2'));var util=require(_0x0487('0x3'));var BPromise=require(_0x0487('0x4'));var moment=require('moment');var squel=require(_0x0487('0x5'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require(_0x0487('0x6'))('import');config['redis']=_[_0x0487('0x7')](config[_0x0487('0x8')],{'host':_0x0487('0x9'),'port':0x18eb});var socket=require(_0x0487('0xa'))(new Redis(config[_0x0487('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var stopped=![];var NOW=moment()[_0x0487('0xb')](_0x0487('0xc'));function isEmail(_0x5a8335){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))*$/[_0x0487('0xd')](_0x5a8335);}function selectNotIn(_0x55ac60,_0x269335,_0x50687b,_0x5a9d2d,_0x4d3cba){return squel[_0x0487('0xe')]()[_0x0487('0xf')](_0x0487('0x10'))[_0x0487('0x11')](_0x5a9d2d)[_0x0487('0x12')](_0x269335,null,_0x269335+_0x0487('0x13')+_0x5a9d2d+'.'+_0x50687b)[_0x0487('0x14')](_0x5a9d2d+'.'+_0x50687b+'\x20=\x20'+_0x55ac60+'.'+_0x50687b)['where'](_0x269335+_0x0487('0x15')+_0x4d3cba[_0x0487('0x12')]()+')');}function insertCmHopper(_0x1652c2,_0x3a0725,_0xdfd383,_0x3accb9,_0x494fdb){var _0x444c5d=[_0x0487('0x16'),_0x0487('0x17'),'cm_contacts.id','cm_contacts.ListId',_0x3a0725+'.'+_0x3accb9,_0x0487('0x18'),_0x0487('0x19'),_0x0487('0x1a'),_0x0487('0x1b'),'\x22'+_0x494fdb+'\x22'];return squel['insert']()[_0x0487('0x1c')](_0x0487('0x1d'))[_0x0487('0x1e')]([_0x0487('0x10'),_0x0487('0x1f'),_0x0487('0x20'),_0x0487('0x21'),_0x3accb9,_0x0487('0x22'),_0x0487('0x23'),_0x0487('0x24'),_0x0487('0x25'),_0x0487('0x26')],squel['select']()[_0x0487('0x27')](_0x444c5d)[_0x0487('0x11')](_0x3a0725)[_0x0487('0x12')](_0x0487('0x28'),null,'cm_contacts.ListId\x20=\x20'+_0x3a0725+_0x0487('0x29'))[_0x0487('0x12')](_0xdfd383,null,_0xdfd383+'.id\x20=\x20'+_0x3a0725+'.'+_0x3accb9)[_0x0487('0x14')](_0x3a0725+_0x0487('0x2a'),_0x1652c2)['where'](_0x0487('0x2b'),NOW)['where'](_0x0487('0x2c'),selectNotIn(_0x3a0725,_0xdfd383,_0x3accb9,_0x0487('0x1d'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x0487('0x14')](_0x0487('0x2c'),selectNotIn(_0x3a0725,_0xdfd383,_0x3accb9,_0x0487('0x1d'),['\x22always\x22'])))[_0x0487('0x2d')]();}function insertCmHopperBlack(_0x234098,_0x5771c9,_0x40fdca,_0x5ab567){var _0x5666cd=[_0x0487('0x16'),_0x0487('0x2e'),_0x0487('0x2f'),_0x5771c9+'.'+_0x5ab567,'cm_contacts.createdAt',_0x0487('0x19')];return squel[_0x0487('0x30')]()['into'](_0x0487('0x31'))[_0x0487('0x1e')]([_0x0487('0x10'),_0x0487('0x20'),_0x0487('0x21'),_0x5ab567,_0x0487('0x22'),_0x0487('0x23')],squel[_0x0487('0xe')]()[_0x0487('0x27')](_0x5666cd)[_0x0487('0x11')](_0x5771c9)['join']('cm_contacts',null,_0x0487('0x32')+_0x5771c9+_0x0487('0x29'))[_0x0487('0x12')](_0x40fdca,null,_0x40fdca+'.id\x20=\x20'+_0x5771c9+'.'+_0x5ab567)[_0x0487('0x14')](_0x5771c9+_0x0487('0x2a'),_0x234098)[_0x0487('0x14')](_0x0487('0x2b'),NOW)[_0x0487('0x14')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x0487('0xe')]()[_0x0487('0xf')](_0x0487('0x10'))[_0x0487('0x11')](_0x0487('0x31'))[_0x0487('0x14')](_0x0487('0x33'),_0x234098)[_0x0487('0x14')](_0x5ab567+_0x0487('0x34'),_0x5771c9+'.'+_0x5ab567)))[_0x0487('0x2d')]();}function insertCmContact(_0x3da94c,_0x5d933d,_0x57d03b,_0x569b2f){var _0x3c8178=_[_0x0487('0x35')](_['keys'](_0x569b2f),[_0x0487('0x21'),_0x0487('0x36'),_0x0487('0x22'),_0x0487('0x23')]);return squel[_0x0487('0x30')]()[_0x0487('0x1c')](_0x0487('0x28'))[_0x0487('0x1e')](_0x3c8178,squel[_0x0487('0xe')]()[_0x0487('0x27')](_0x3c8178)[_0x0487('0x11')](_0x5d933d)['where']('('+_0x57d03b[_0x0487('0x12')](',')+_0x0487('0x37'),squel['select']()[_0x0487('0x27')](_0x57d03b)[_0x0487('0x11')]('cm_contacts')['where']('ListId\x20=\x20?',_0x3da94c)[_0x0487('0x14')](_0x0487('0x38')))[_0x0487('0x14')](_0x0487('0x39'),squel[_0x0487('0xe')]()[_0x0487('0xf')]('MIN(id)','min_id')[_0x0487('0x11')](_0x5d933d)[_0x0487('0x3a')](_0x57d03b[_0x0487('0x12')](','))))['toString']();}function handleStop(){logger[_0x0487('0x3b')](_0x0487('0x3c'));stopped=!![];}function handleUncaughtException(_0x500a4c){logger['error'](_0x500a4c[_0x0487('0x3d')]);process[_0x0487('0x3e')](0x1);}function handleError(_0x3fdc50,_0x25bad6){stats['errors']['push']({'name':_0x25bad6[_0x0487('0x3f')],'message':_0x25bad6[_0x0487('0x3d')],'row':_0x3fdc50});}function handleQuery(_0x574a94){logger[_0x0487('0x3b')](_0x574a94);return db['sequelize'][_0x0487('0x40')](_0x574a94)[_0x0487('0x41')](function(_0x53bb96){results['push'](_0x53bb96);})[_0x0487('0x42')](function(_0x5a2992){logger['error'](_0x5a2992[_0x0487('0x3d')]);});}function main(_0x24d037,_0x4610a1,_0x3ddb4a,_0xbfbc56){logger[_0x0487('0x3b')](_0x0487('0x43'),_0x24d037,JSON[_0x0487('0x44')](_0x4610a1));process[_0x0487('0x45')](_0x0487('0x46'));var _0xbe7d8a=_0x4610a1[_0x0487('0x47')];var _0x31b957=_0x4610a1['socket_timestamp'];var _0x4aa546=path[_0x0487('0x12')](config[_0x0487('0x48')],_0x0487('0x49'),_0x31b957+'.csv');var _0x154480=_['keys'](_0xbe7d8a)['join']();logger[_0x0487('0x3b')](_0x0487('0x4a'),_0x154480);fs[_0x0487('0x4b')](_0x4aa546,_0x154480+'\x0a');Papa[_0x0487('0x4c')](fs[_0x0487('0x4d')](_0x24d037),{'header':!![],'skipEmptyLines':!![],'step':function(_0x1f9f7b,_0x4660f4){try{for(var _0x2b8cf4=0x0,_0x397f9a=[];_0x2b8cf4<_0x1f9f7b[_0x0487('0x4e')][_0x0487('0x4f')];_0x2b8cf4++){stats['rows']+=0x1;if(_0x1f9f7b[_0x0487('0x50')][_0x2b8cf4]){handleError(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4],_0x1f9f7b[_0x0487('0x50')][_0x2b8cf4]);}else{var _0xe9b259=[];for(var _0x14e12c in _0xbe7d8a){if(_0xbe7d8a[_0x0487('0x51')](_0x14e12c)){if(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4][_0xbe7d8a[_0x14e12c]]){var _0x26998f=_[_0x0487('0x52')](_0x1f9f7b['data'][_0x2b8cf4][_0xbe7d8a[_0x14e12c]][_0x0487('0x53')](/"/g,'\x27'));switch(_0x14e12c){case _0x0487('0x1f'):var _0xe84131=moment(_0x26998f,_0x0487('0xc'),!![]);if(_0xe84131['isValid']()){_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}else{_0xe9b259['push'](_0x0487('0x55'));}break;case'priority':var _0x1054bc=parseInt(_0x26998f);_0x26998f=_[_0x0487('0x56')](_0x1054bc)||_0x1054bc<0x0||_0x1054bc>0x4?_0xbfbc56?0x3:0x2:_0x1054bc;_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');break;case _0x0487('0x25'):var _0x126f66=parseInt(_0x26998f);if(_[_0x0487('0x57')](_0x126f66)&&_[_0x0487('0x58')](_0x3ddb4a,_0x126f66)){_0x397f9a['push']('\x22'+_0x126f66+'\x22');}else{_0xe9b259[_0x0487('0x54')](_0x0487('0x59'));}break;case _0x0487('0x5a'):if(isEmail(_0x26998f)){_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}else{_0xe9b259['push']('email\x20wrong\x20format');}break;case'dateOfBirth':var _0x2e5829=moment(_0x26998f,_0x0487('0x5b'),!![]);if(_0x2e5829['isValid']()){_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}else{_0xe9b259[_0x0487('0x54')](_0x0487('0x5c'));}break;default:_0x397f9a[_0x0487('0x54')]('\x22'+_0x26998f+'\x22');}}else{switch(_0x14e12c){case _0x0487('0x5d'):case _0x0487('0x10'):_0xe9b259[_0x0487('0x54')](_0x14e12c+_0x0487('0x5e'));break;default:_0x397f9a[_0x0487('0x54')]('\x22\x22');}}}}if(_0xe9b259[_0x0487('0x4f')]){handleError(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4],{'code':_0x0487('0x5f'),'message':_0xe9b259[_0x0487('0x12')]()});}else{fs[_0x0487('0x60')](_0x4aa546,_0x397f9a['join']()+'\x0a');}_0x397f9a=[];}if(!(stats[_0x0487('0x61')]%0xc8)){socket[_0x0487('0x62')]('contact:import:'+_0x31b957,stats);stats[_0x0487('0x50')]=[];}}if(stopped){logger[_0x0487('0x3b')](_0x0487('0x63'));_0x4660f4[_0x0487('0x64')]();}}catch(_0x317350){handleError(_0x1f9f7b[_0x0487('0x4e')][_0x2b8cf4],{'code':_0x0487('0x65'),'message':_0x317350[_0x0487('0x3d')]});logger[_0x0487('0x66')]('step',_0x317350['message']);}},'complete':function(){try{var _0x29dce1=[];var _0x42da74=_0x0487('0x28');if(_0x4610a1[_0x0487('0x67')]&&_0x4610a1[_0x0487('0x67')][_0x0487('0x4f')]){_0x42da74='cm_contacts_'+_0x31b957;_0x29dce1[_0x0487('0x54')](_0x0487('0x68')+_0x42da74+'\x20LIKE\x20cm_contacts;');}var _0x20610f=util[_0x0487('0xb')]('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',_0x4aa546,_0x42da74,_0x154480,_0x4610a1[_0x0487('0x21')],_0x4610a1['CompanyId']||null,NOW,NOW);if(_[_0x0487('0x69')](_0xbe7d8a[_0x0487('0x1f')])){_0x20610f+=_0x0487('0x6a');}_0x29dce1[_0x0487('0x54')](_0x20610f);if(_0x4610a1[_0x0487('0x67')]&&_0x4610a1['duplicates'][_0x0487('0x4f')]){_0x29dce1[_0x0487('0x54')](insertCmContact(_0x4610a1[_0x0487('0x21')],_0x42da74,_0x4610a1[_0x0487('0x67')],_0xbe7d8a));_0x29dce1[_0x0487('0x54')](_0x0487('0x6b')+_0x42da74+';');}_0x29dce1[_0x0487('0x54')](insertCmHopper(_0x4610a1[_0x0487('0x21')],'voice_queues_has_cm_lists','voice_queues',_0x0487('0x6c'),_0xbfbc56));_0x29dce1[_0x0487('0x54')](insertCmHopperBlack(_0x4610a1[_0x0487('0x21')],_0x0487('0x6d'),_0x0487('0x6e'),_0x0487('0x6c')));_0x29dce1[_0x0487('0x54')](insertCmHopper(_0x4610a1[_0x0487('0x21')],'campaigns_has_cm_lists',_0x0487('0x6f'),_0x0487('0x70'),_0xbfbc56));_0x29dce1[_0x0487('0x54')](insertCmHopperBlack(_0x4610a1[_0x0487('0x21')],_0x0487('0x71'),_0x0487('0x6f'),_0x0487('0x70')));BPromise[_0x0487('0x72')](_0x29dce1,handleQuery)[_0x0487('0x73')](function(_0x6bc1f7){stats[_0x0487('0x74')]=!![];stats[_0x0487('0x75')]=_0x4610a1['duplicates']&&_0x4610a1['duplicates'][_0x0487('0x4f')]?results[0x2][_0x0487('0x75')]:results[0x0]['affectedRows'];socket['emit'](_0x0487('0x76')+_0x31b957,stats);fs['unlink'](_0x24d037);fs['unlink'](_0x4aa546);process[_0x0487('0x3e')](0x0);})['catch'](function(_0x12ce45){logger[_0x0487('0x66')](_0x12ce45[_0x0487('0x3d')]);process['exit'](0x1);});}catch(_0x3279b8){logger[_0x0487('0x66')]('complete',_0x3279b8[_0x0487('0x3d')]);process[_0x0487('0x3e')](0x1);}},'error':function(_0x10a46d,_0x388fa0,_0xcff67,_0x2a087f){throw new Error(_0x2a087f);}});}function validate(){if(process[_0x0487('0x77')]&&process[_0x0487('0x77')][_0x0487('0x4f')]<0x4){throw new Error(_0x0487('0x78'));}var _0x59e649=path[_0x0487('0x12')](config['root'],_0x0487('0x49'),process[_0x0487('0x77')][0x2]);if(!fs['existsSync'](_0x59e649)){throw new Error(_0x0487('0x79'));}var _0x2d7db9={};try{_0x2d7db9=JSON['parse'](process[_0x0487('0x77')][0x3]);if(!_0x2d7db9[_0x0487('0x47')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x2d7db9[_0x0487('0x47')][_0x0487('0x10')]){throw new Error(_0x0487('0x7a'));}if(!_0x2d7db9[_0x0487('0x47')][_0x0487('0x5d')]){throw new Error(_0x0487('0x7b'));}var _0x2a74f1=0x0;if(_0x2d7db9['binding']['UserId']){_0x2a74f1=0x1;}if(!_0x2d7db9[_0x0487('0x21')]){throw new Error(_0x0487('0x7c'));}}catch(_0x4ab454){throw new Error(_0x0487('0x7d'));}var _0x2fd24f=[];try{_0x2fd24f=_['map'](JSON[_0x0487('0x4c')](process['argv'][0x4]),'id');}catch(_0x267813){logger['info'](_0x0487('0x7e'));}main(_0x59e649,_0x2d7db9,_0x2fd24f,_0x2a74f1);}validate();process['on'](_0x0487('0x7f'),handleStop);process['on'](_0x0487('0x80'),handleUncaughtException);
\ No newline at end of file
index 74dd74e..0d62a4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1829=['outbound','Outbound\x20Call','destcalleridnum','***\x20Call\x20Info\x20***','keyValue','calleridnum','calleridname','Call\x20To','destexten','Queue','UniqueId','agentcalledAt','***\x20Agent\x20Info\x20***','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','talktime','Called\x20Number','membername','uniqueid','Date','starttime','answertime','Complete\x20Time','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','voice','toLowerCase','inbound','push','variable','queue'];(function(_0x3bc44d,_0x47f40a){var _0x5e9b5b=function(_0x46492d){while(--_0x46492d){_0x3bc44d['push'](_0x3bc44d['shift']());}};_0x5e9b5b(++_0x47f40a);}(_0x1829,0xf9));var _0x9182=function(_0x4fbfd9,_0x3ab91a){_0x4fbfd9=_0x4fbfd9-0x0;var _0x31dc94=_0x1829[_0x4fbfd9];return _0x31dc94;};'use strict';exports[_0x9182('0x0')]=function(_0x4f6c15,_0x341791){var _0x53bda0=[{'type':_0x9182('0x1'),'content':_0x9182('0x2'),'variableName':null}];switch(_0x4f6c15['toLowerCase']()){case _0x9182('0x3'):switch(_0x341791[_0x9182('0x4')]()){case _0x9182('0x5'):_0x53bda0[_0x9182('0x6')]({'type':_0x9182('0x7'),'content':'','variableName':_0x9182('0x8')});_0x53bda0[_0x9182('0x6')]({'type':_0x9182('0x7'),'content':'','variableName':'calleridnum'});break;case _0x9182('0x9'):_0x53bda0[_0x9182('0x6')]({'type':_0x9182('0x1'),'content':_0x9182('0xa'),'variableName':null});_0x53bda0['push']({'type':_0x9182('0x7'),'content':'','variableName':_0x9182('0xb')});break;}}return _0x53bda0;};exports['getDescriptions']=function(_0x3f29ad,_0xb259f3){var _0x384a9b=[];switch(_0x3f29ad['toLowerCase']()){case'voice':switch(_0xb259f3[_0x9182('0x4')]()){case _0x9182('0x5'):_0x384a9b=[{'type':_0x9182('0x1'),'content':_0x9182('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x9182('0xd'),'content':'','key':'Caller\x20Number','keyType':_0x9182('0x7'),'variableName':_0x9182('0xe')},{'type':_0x9182('0xd'),'content':'','key':'Caller\x20Name','keyType':_0x9182('0x7'),'variableName':_0x9182('0xf')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x10'),'keyType':_0x9182('0x7'),'variableName':_0x9182('0x11')},{'type':'keyValue','content':'','key':_0x9182('0x12'),'keyType':_0x9182('0x7'),'variableName':_0x9182('0x8')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x13'),'keyType':'variable','variableName':'uniqueid'},{'type':_0x9182('0xd'),'content':'','key':'Date','keyType':_0x9182('0x7'),'variableName':_0x9182('0x14')},{'type':_0x9182('0x1'),'content':_0x9182('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0x9182('0xd'),'content':'','key':'Agent\x20Name','keyType':'variable','variableName':_0x9182('0x16')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x17'),'keyType':'variable','variableName':_0x9182('0xb')},{'type':'string','content':_0x9182('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x19'),'keyType':_0x9182('0x7'),'variableName':_0x9182('0x14')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x1a'),'keyType':_0x9182('0x7'),'variableName':_0x9182('0x1b')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x1c'),'keyType':_0x9182('0x7'),'variableName':_0x9182('0x1d')},{'type':_0x9182('0xd'),'content':'','key':'Hold\x20Time','keyType':_0x9182('0x7'),'variableName':'holdtime'},{'type':_0x9182('0xd'),'content':'','key':'Talk\x20Time','keyType':_0x9182('0x7'),'variableName':_0x9182('0x1e')}];break;case'outbound':_0x384a9b=[{'type':'string','content':_0x9182('0xc'),'variableName':null},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x1f'),'keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0xb')},{'type':_0x9182('0xd'),'content':'','key':'Member\x20Name','keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0x20')},{'type':_0x9182('0xd'),'content':'','key':'UniqueId','keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0x21')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x22'),'keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0x23')},{'type':_0x9182('0x1'),'content':_0x9182('0x18')},{'type':'keyValue','content':'','key':'Answer\x20Time','keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0x24')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x25'),'keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0x26')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x27'),'keyType':_0x9182('0x7'),'keyContent':'','variableName':_0x9182('0x28')},{'type':_0x9182('0xd'),'content':'','key':_0x9182('0x29'),'keyType':'variable','keyContent':'','variableName':_0x9182('0x2a')}];break;}}return _0x384a9b;};
\ No newline at end of file
+var _0x6f37=['membername','uniqueid','starttime','***\x20Time\x20Info\x20***','answertime','endtime','Duration','getSubjects','string','[xCALLY\x20Ticket]','voice','inbound','push','queue','variable','outbound','destcalleridnum','getDescriptions','toLowerCase','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','calleridnum','Caller\x20Name','calleridname','Call\x20To','destexten','UniqueId','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','Agent\x20Number','Agent\x20Ring','Agent\x20Connect','Agent\x20Complete','agentcompleteAt','Hold\x20Time','Talk\x20Time','talktime','Called\x20Number','Member\x20Name'];(function(_0x783767,_0x382fbc){var _0x1df5a1=function(_0x5c622b){while(--_0x5c622b){_0x783767['push'](_0x783767['shift']());}};_0x1df5a1(++_0x382fbc);}(_0x6f37,0x1ab));var _0x76f3=function(_0x40d548,_0x233d52){_0x40d548=_0x40d548-0x0;var _0x1791f8=_0x6f37[_0x40d548];return _0x1791f8;};'use strict';exports[_0x76f3('0x0')]=function(_0x22d823,_0x35d8f4){var _0x545bb1=[{'type':_0x76f3('0x1'),'content':_0x76f3('0x2'),'variableName':null}];switch(_0x22d823['toLowerCase']()){case _0x76f3('0x3'):switch(_0x35d8f4['toLowerCase']()){case _0x76f3('0x4'):_0x545bb1[_0x76f3('0x5')]({'type':'variable','content':'','variableName':_0x76f3('0x6')});_0x545bb1[_0x76f3('0x5')]({'type':_0x76f3('0x7'),'content':'','variableName':'calleridnum'});break;case _0x76f3('0x8'):_0x545bb1[_0x76f3('0x5')]({'type':_0x76f3('0x1'),'content':'Outbound\x20Call','variableName':null});_0x545bb1[_0x76f3('0x5')]({'type':_0x76f3('0x7'),'content':'','variableName':_0x76f3('0x9')});break;}}return _0x545bb1;};exports[_0x76f3('0xa')]=function(_0xf4b489,_0x35fe60){var _0x51c69d=[];switch(_0xf4b489[_0x76f3('0xb')]()){case _0x76f3('0x3'):switch(_0x35fe60[_0x76f3('0xb')]()){case _0x76f3('0x4'):_0x51c69d=[{'type':'string','content':_0x76f3('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0xe'),'keyType':'variable','variableName':_0x76f3('0xf')},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x10'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x11')},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x12'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x13')},{'type':_0x76f3('0xd'),'content':'','key':'Queue','keyType':_0x76f3('0x7'),'variableName':'queue'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x14'),'keyType':_0x76f3('0x7'),'variableName':'uniqueid'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x15'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x16')},{'type':_0x76f3('0x1'),'content':_0x76f3('0x17'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0x76f3('0x18'),'keyType':_0x76f3('0x7'),'variableName':'destcalleridname'},{'type':'keyValue','content':'','key':_0x76f3('0x19'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x9')},{'type':'string','content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x1a'),'keyType':'variable','variableName':_0x76f3('0x16')},{'type':'keyValue','content':'','key':_0x76f3('0x1b'),'keyType':_0x76f3('0x7'),'variableName':'agentconnectAt'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x1c'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x1d')},{'type':'keyValue','content':'','key':_0x76f3('0x1e'),'keyType':'variable','variableName':'holdtime'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x1f'),'keyType':_0x76f3('0x7'),'variableName':_0x76f3('0x20')}];break;case _0x76f3('0x8'):_0x51c69d=[{'type':_0x76f3('0x1'),'content':'***\x20Call\x20Info\x20***','variableName':null},{'type':'keyValue','content':'','key':_0x76f3('0x21'),'keyType':_0x76f3('0x7'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0x76f3('0xd'),'content':'','key':_0x76f3('0x22'),'keyType':_0x76f3('0x7'),'keyContent':'','variableName':_0x76f3('0x23')},{'type':_0x76f3('0xd'),'content':'','key':'UniqueId','keyType':'variable','keyContent':'','variableName':_0x76f3('0x24')},{'type':'keyValue','content':'','key':'Date','keyType':_0x76f3('0x7'),'keyContent':'','variableName':_0x76f3('0x25')},{'type':_0x76f3('0x1'),'content':_0x76f3('0x26')},{'type':_0x76f3('0xd'),'content':'','key':'Answer\x20Time','keyType':_0x76f3('0x7'),'keyContent':'','variableName':_0x76f3('0x27')},{'type':_0x76f3('0xd'),'content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0x76f3('0x28')},{'type':'keyValue','content':'','key':_0x76f3('0x29'),'keyType':_0x76f3('0x7'),'keyContent':'','variableName':'duration'},{'type':_0x76f3('0xd'),'content':'','key':'Billable\x20Time','keyType':_0x76f3('0x7'),'keyContent':'','variableName':'billableseconds'}];break;}}return _0x51c69d;};
\ No newline at end of file
index 4260cca..6b05ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ea9=['whatsapp-interactions','upperFirst','InteractionId','unknown','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','stringify','null','Interaction','findOne','then','update','info','catch','user','clone','body','omit','html','phone','mobile','lodash','../../mysqldb','openchannel-interactions','../../config/logger','mail-interactions','fax-interactions','sms-interactions','chat-interactions'];(function(_0x33ccca,_0x89a328){var _0x1d199d=function(_0x225399){while(--_0x225399){_0x33ccca['push'](_0x33ccca['shift']());}};_0x1d199d(++_0x89a328);}(_0x3ea9,0xac));var _0x93ea=function(_0x1514be,_0x171c2b){_0x1514be=_0x1514be-0x0;var _0x1b75f9=_0x3ea9[_0x1514be];return _0x1b75f9;};'use strict';var _=require(_0x93ea('0x0'));var db=require(_0x93ea('0x1'))['db'];var loggers={'openchannel':require('../../config/logger')(_0x93ea('0x2')),'mail':require(_0x93ea('0x3'))(_0x93ea('0x4')),'fax':require(_0x93ea('0x3'))(_0x93ea('0x5')),'sms':require(_0x93ea('0x3'))(_0x93ea('0x6')),'chat':require(_0x93ea('0x3'))(_0x93ea('0x7')),'whatsapp':require(_0x93ea('0x3'))(_0x93ea('0x8'))};function getInteractionId(_0x25cd5c,_0x27328f,_0x567ea3){if(_0x25cd5c&&_0x25cd5c[_[_0x93ea('0x9')](_0x567ea3)+'InteractionId']){return _0x25cd5c[_[_0x93ea('0x9')](_0x567ea3)+_0x93ea('0xa')];}else if(_0x25cd5c&&_0x25cd5c['id']){return _0x25cd5c['id'];}else if(_0x27328f&&_0x27328f['id']){return _0x27328f['id'];}else{return _0x93ea('0xb');}}function log(_0x299a64,_0x394e3a,_0x2fa1dd,_0x34563d,_0x34cac7,_0x1a8122){loggers[_0x34cac7[_0x93ea('0xc')]()][_0x299a64](_0x93ea('0xd'),_0x1a8122[_0x93ea('0xe')](),_0x394e3a?_0x394e3a['id']:null,_0x394e3a?_0x394e3a['name']:null,_0x394e3a?_0x394e3a['role']:null,getInteractionId(_0x2fa1dd,_0x34563d,_0x34cac7),_0x2fa1dd?JSON[_0x93ea('0xf')](_0x2fa1dd):_0x93ea('0x10'));}function updateUser(_0xfba072,_0x595de4,_0x8412d5,_0x3889b8,_0x2230a2){db[_['upperFirst'](_0x3889b8)+_0x93ea('0x11')][_0x93ea('0x12')]({'where':{'id':getInteractionId(_0x595de4,_0x8412d5,_0x3889b8)}})[_0x93ea('0x13')](function(_0x175a38){if(_0x175a38){return _0x175a38[_0x93ea('0x14')]({'UserId':_0xfba072?_0xfba072['id']:null});}})[_0x93ea('0x13')](function(_0x2cd8a9){if(_0x2cd8a9){log(_0x93ea('0x15'),_0xfba072,_0x595de4,_0x8412d5,_0x3889b8,_0x2230a2);}})[_0x93ea('0x16')](function(){log('error',_0xfba072,_0x595de4,_0x8412d5,_0x3889b8,_0x2230a2);});}exports['tracked']=function(_0x1abc74,_0x134ebe){return function(_0x14e3cc,_0x2d97e9,_0x6ed529){var _0x5fd695=_0x14e3cc[_0x93ea('0x17')];var _0x102b52={};var _0x83d068=_0x14e3cc['query'];if(_0x102b52){_0x102b52=_[_0x93ea('0x18')](_0x14e3cc[_0x93ea('0x19')]);_0x102b52=_[_0x93ea('0x1a')](_0x102b52,[_0x93ea('0x19'),_0x93ea('0x1b'),_0x93ea('0x1c'),'fax',_0x93ea('0x1d')]);}updateUser(_0x5fd695,_0x102b52,_0x83d068,_0x1abc74,_0x134ebe);_0x6ed529(null);};};
\ No newline at end of file
+var _0xf79f=['then','update','info','catch','tracked','user','query','omit','body','html','phone','fax','mobile','lodash','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','InteractionId','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','stringify','upperFirst','Interaction','findOne'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf79f,0xc1));var _0xff79=function(_0x1d4923,_0x4e222f){_0x1d4923=_0x1d4923-0x0;var _0x14ea9a=_0xf79f[_0x1d4923];return _0x14ea9a;};'use strict';var _=require(_0xff79('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0xff79('0x1'))(_0xff79('0x2')),'mail':require(_0xff79('0x1'))(_0xff79('0x3')),'fax':require(_0xff79('0x1'))(_0xff79('0x4')),'sms':require(_0xff79('0x1'))(_0xff79('0x5')),'chat':require(_0xff79('0x1'))(_0xff79('0x6')),'whatsapp':require(_0xff79('0x1'))(_0xff79('0x7'))};function getInteractionId(_0xd4543a,_0x449e99,_0x57f046){if(_0xd4543a&&_0xd4543a[_['upperFirst'](_0x57f046)+_0xff79('0x8')]){return _0xd4543a[_['upperFirst'](_0x57f046)+_0xff79('0x8')];}else if(_0xd4543a&&_0xd4543a['id']){return _0xd4543a['id'];}else if(_0x449e99&&_0x449e99['id']){return _0x449e99['id'];}else{return'unknown';}}function log(_0xe1f5ff,_0x314a67,_0x48a95d,_0x4e34ec,_0x546a38,_0x29e270){loggers[_0x546a38[_0xff79('0x9')]()][_0xe1f5ff](_0xff79('0xa'),_0x29e270[_0xff79('0xb')](),_0x314a67?_0x314a67['id']:null,_0x314a67?_0x314a67[_0xff79('0xc')]:null,_0x314a67?_0x314a67['role']:null,getInteractionId(_0x48a95d,_0x4e34ec,_0x546a38),_0x48a95d?JSON[_0xff79('0xd')](_0x48a95d):'null');}function updateUser(_0x5af907,_0x222b04,_0x1160f5,_0x4ab21c,_0x24f891){db[_[_0xff79('0xe')](_0x4ab21c)+_0xff79('0xf')][_0xff79('0x10')]({'where':{'id':getInteractionId(_0x222b04,_0x1160f5,_0x4ab21c)}})[_0xff79('0x11')](function(_0x260dad){if(_0x260dad){return _0x260dad[_0xff79('0x12')]({'UserId':_0x5af907?_0x5af907['id']:null});}})['then'](function(_0x27117b){if(_0x27117b){log(_0xff79('0x13'),_0x5af907,_0x222b04,_0x1160f5,_0x4ab21c,_0x24f891);}})[_0xff79('0x14')](function(){log('error',_0x5af907,_0x222b04,_0x1160f5,_0x4ab21c,_0x24f891);});}exports[_0xff79('0x15')]=function(_0x4696c7,_0x269be7){return function(_0x1dc750,_0x529977,_0x3283ab){var _0x122de8=_0x1dc750[_0xff79('0x16')];var _0x440b63={};var _0x3d1b1c=_0x1dc750[_0xff79('0x17')];if(_0x440b63){_0x440b63=_['clone'](_0x1dc750['body']);_0x440b63=_[_0xff79('0x18')](_0x440b63,[_0xff79('0x19'),_0xff79('0x1a'),_0xff79('0x1b'),_0xff79('0x1c'),_0xff79('0x1d')]);}updateUser(_0x122de8,_0x440b63,_0x3d1b1c,_0x4696c7,_0x269be7);_0x3283ab(null);};};
\ No newline at end of file
index 70bee7e..fa660e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee07=['user','util','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','update','base64','utf8','final','parse','hasOwnProperty','use','License','count','then','json','catch','users','User','admin'];(function(_0xe1d15d,_0x2cac6a){var _0x439bc2=function(_0x2323f7){while(--_0x2323f7){_0xe1d15d['push'](_0xe1d15d['shift']());}};_0x439bc2(++_0x2cac6a);}(_0xee07,0x16d));var _0x7ee0=function(_0x2e7769,_0x36772d){_0x2e7769=_0x2e7769-0x0;var _0x98272e=_0xee07[_0x2e7769];return _0x98272e;};'use strict';var crypto=require('crypto');var util=require(_0x7ee0('0x0'));var compose=require(_0x7ee0('0x1'));var db=require(_0x7ee0('0x2'))['db'];var config=require(_0x7ee0('0x3'));function getValueFromLicense(_0x4f2d4f,_0x4e8186){if(_0x4f2d4f&&_0x4e8186){if(_0x4e8186[_0x7ee0('0x4')]&&_0x4e8186[_0x7ee0('0x5')]){var _0x2c8eda=_0x4e8186['data1'];var _0x44682b=_0x4e8186[_0x7ee0('0x5')];var _0x47960e=_0x2c8eda[_0x7ee0('0x6')]('-')[0x4];var _0x2da82e=_0x2c8eda[_0x7ee0('0x6')]('-')[0x0];var _0x1c4128=crypto[_0x7ee0('0x7')](_0x7ee0('0x8'),util[_0x7ee0('0x9')]('%s:%s:%s',_0x47960e,_0x2c8eda,_0x2da82e));var _0x5423dd=_0x1c4128[_0x7ee0('0xa')](_0x44682b,_0x7ee0('0xb'),_0x7ee0('0xc'));_0x5423dd+=_0x1c4128[_0x7ee0('0xd')](_0x7ee0('0xc'));var _0x565fff=JSON[_0x7ee0('0xe')](_0x5423dd);return _0x565fff[_0x7ee0('0xf')](_0x4f2d4f)?_0x565fff[_0x4f2d4f]:null;}}return null;}function isLimit(_0x34a4b1,_0x3200a0,_0x128ae6,_0x1b8b79){var _0x293534=_0x3200a0;return compose()[_0x7ee0('0x10')](function(_0x49bc9d,_0x2cdd5c,_0x33141f){return db[_0x7ee0('0x11')]['findOne']({'where':{'id':0x1},'raw':!![]})['then'](function(_0x3905e5){var _0x4a1fe6=getValueFromLicense(_0x34a4b1,_0x3905e5);return _0x4a1fe6?_0x4a1fe6:_0x293534;})['then'](function(_0x56299b){_0x293534=_0x56299b;return _0x128ae6[_0x7ee0('0x12')](_0x1b8b79);})[_0x7ee0('0x13')](function(_0x3ca9a4){if(_0x3ca9a4>=_0x293534){return _0x2cdd5c['status'](0x193)[_0x7ee0('0x14')]({'message':util[_0x7ee0('0x9')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x34a4b1)});}_0x33141f();})[_0x7ee0('0x15')](function(_0x5a891e){_0x33141f(_0x5a891e);});});}function isUserLimit(){return isLimit(_0x7ee0('0x16'),0x1,db[_0x7ee0('0x17')],{'where':{'$or':[{'role':_0x7ee0('0x18')},{'role':_0x7ee0('0x19')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
+var _0x66ef=['update','utf8','final','hasOwnProperty','use','License','findOne','then','count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','users','user','crypto','composable-middleware','../../config/environment','data1','license','split','aes-256-ctr','format'];(function(_0x4d394d,_0x40e7b3){var _0x4f0003=function(_0x56d25d){while(--_0x56d25d){_0x4d394d['push'](_0x4d394d['shift']());}};_0x4f0003(++_0x40e7b3);}(_0x66ef,0x19a));var _0xf66e=function(_0x540a46,_0x3dd2bc){_0x540a46=_0x540a46-0x0;var _0x5eb168=_0x66ef[_0x540a46];return _0x5eb168;};'use strict';var crypto=require(_0xf66e('0x0'));var util=require('util');var compose=require(_0xf66e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xf66e('0x2'));function getValueFromLicense(_0x27fc7d,_0x2244ff){if(_0x27fc7d&&_0x2244ff){if(_0x2244ff[_0xf66e('0x3')]&&_0x2244ff[_0xf66e('0x4')]){var _0x445a50=_0x2244ff[_0xf66e('0x3')];var _0x2023c2=_0x2244ff['license'];var _0x1e1a53=_0x445a50[_0xf66e('0x5')]('-')[0x4];var _0x5605ba=_0x445a50['split']('-')[0x0];var _0x119319=crypto['createDecipher'](_0xf66e('0x6'),util[_0xf66e('0x7')]('%s:%s:%s',_0x1e1a53,_0x445a50,_0x5605ba));var _0x277e55=_0x119319[_0xf66e('0x8')](_0x2023c2,'base64',_0xf66e('0x9'));_0x277e55+=_0x119319[_0xf66e('0xa')]('utf8');var _0x9b9c23=JSON['parse'](_0x277e55);return _0x9b9c23[_0xf66e('0xb')](_0x27fc7d)?_0x9b9c23[_0x27fc7d]:null;}}return null;}function isLimit(_0x2137b0,_0x313adc,_0x291af5,_0x221304){var _0x157810=_0x313adc;return compose()[_0xf66e('0xc')](function(_0x515b8c,_0x469a2f,_0x1fb496){return db[_0xf66e('0xd')][_0xf66e('0xe')]({'where':{'id':0x1},'raw':!![]})[_0xf66e('0xf')](function(_0x516f3f){var _0x32bfd8=getValueFromLicense(_0x2137b0,_0x516f3f);return _0x32bfd8?_0x32bfd8:_0x157810;})[_0xf66e('0xf')](function(_0x179d52){_0x157810=_0x179d52;return _0x291af5[_0xf66e('0x10')](_0x221304);})['then'](function(_0xda95c5){if(_0xda95c5>=_0x157810){return _0x469a2f[_0xf66e('0x11')](0x193)[_0xf66e('0x12')]({'message':util[_0xf66e('0x7')](_0xf66e('0x13'),_0x2137b0)});}_0x1fb496();})['catch'](function(_0x3e6f2e){_0x1fb496(_0x3e6f2e);});});}function isUserLimit(){return isLimit(_0xf66e('0x14'),0x1,db['User'],{'where':{'$or':[{'role':'admin'},{'role':_0xf66e('0x15')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
index 73ecda8..9bb076c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a4=['seconds','lodash','moment','parseSearch','sqlOperator','startsWith','and','[$and]','replace','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','DATE','operator','$eq','$between','$gt','$lte','value','add','format','castTo','text','\x20AS\x20','field','includes','\x20OR\x20','$in','$notIn','NOT\x20IN\x20?','$ne','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','<=\x20?','$gte','>=\x20?','start','pop','hours','minutes'];(function(_0x188ecd,_0x4b9cc5){var _0x2d2839=function(_0x4e8d13){while(--_0x4e8d13){_0x188ecd['push'](_0x188ecd['shift']());}};_0x2d2839(++_0x4b9cc5);}(_0x26a4,0x13f));var _0x426a=function(_0x594b91,_0x157fb3){_0x594b91=_0x594b91-0x0;var _0xe82cb1=_0x26a4[_0x594b91];return _0xe82cb1;};'use strict';var _=require(_0x426a('0x0'));var moment=require(_0x426a('0x1'));exports[_0x426a('0x2')]=function(_0x558a02){var _0x3ba8b5={'conditions':[]};_0x3ba8b5[_0x426a('0x3')]=_[_0x426a('0x4')](_0x558a02,'[$or]')?'or':_0x426a('0x5');var _0x194d55=_0x558a02['replace'](_0x426a('0x6'),'')[_0x426a('0x7')]('[$or]','')[_0x426a('0x8')]('||');for(var _0x41ecf6=0x0;_0x41ecf6<_0x194d55[_0x426a('0x9')];_0x41ecf6++){var _0x538bf5=_0x194d55[_0x41ecf6][_0x426a('0x8')](':=');var _0x29bbe6=_0x538bf5[0x0];var _0xbf0a8a=_0x538bf5[_0x426a('0xa')](0x1);_0xbf0a8a[_0x426a('0xb')](function(_0x49dab2){var _0x2e16b1=_0x49dab2[_0x426a('0x8')]('[')[_0x426a('0xc')]();var _0x160fbd=_0x49dab2[_0x426a('0xd')](/\[(.*?)\]/g);_0x160fbd[_0x426a('0xb')](function(_0x29b90f){var _0x27c72b=_0x29b90f[_0x426a('0x8')]('[')[_0x426a('0xe')](function(_0xf4d803){return _0xf4d803[_0x426a('0xf')](']')>-0x1;})[_0x426a('0x10')](function(_0x90d0af){return _0x90d0af[_0x426a('0x8')](']')[0x0];})[0x0];_0x3ba8b5[_0x426a('0x11')][_0x426a('0x12')]({'field':_0x29bbe6,'operator':_0x2e16b1,'value':_0x27c72b});});});}return _0x3ba8b5;};exports['buildExpression']=function(_0x49a154,_0x335b66,_0x32dee9){var _0x376c5a={};if(_0x335b66===_0x426a('0x13')){if(_0x32dee9[_0x426a('0x14')]===_0x426a('0x15')){_0x32dee9['operator']=_0x426a('0x16');_0x32dee9['value']+=','+_0x32dee9['value'];}else if(_['includes']([_0x426a('0x17'),_0x426a('0x18')],_0x32dee9[_0x426a('0x14')])){_0x32dee9['value']=moment(_0x32dee9[_0x426a('0x19')])[_0x426a('0x1a')](0x1,'days')[_0x426a('0x1b')]('YYYY-MM-DD');}}if(_0x32dee9['castTo']){_0x335b66=_0x32dee9[_0x426a('0x1c')];_0x376c5a[_0x426a('0x1d')]='CAST('+_0x49a154+'.'+_0x32dee9['field']+_0x426a('0x1e')+_0x32dee9[_0x426a('0x1c')]+')\x20'+parseOperator(_0x32dee9[_0x426a('0x14')]);}else{_0x376c5a[_0x426a('0x1d')]=_0x49a154+'.'+_0x32dee9[_0x426a('0x1f')]+'\x20'+parseOperator(_0x32dee9[_0x426a('0x14')]);}if(_[_0x426a('0x20')](['$ne','$notIn'],_0x32dee9[_0x426a('0x14')]))_0x376c5a[_0x426a('0x1d')]='('+_0x376c5a[_0x426a('0x1d')]+_0x426a('0x21')+_0x49a154+'.'+_0x32dee9[_0x426a('0x1f')]+'\x20IS\x20NULL)';_0x376c5a[_0x426a('0x19')]=parseValue(_0x335b66,_0x32dee9[_0x426a('0x14')],_0x32dee9[_0x426a('0x19')]);return _0x376c5a;};function parseOperator(_0x576383){var _0x5d400d;switch(_0x576383){case _0x426a('0x22'):_0x5d400d='IN\x20?';break;case _0x426a('0x23'):_0x5d400d=_0x426a('0x24');break;case _0x426a('0x15'):_0x5d400d='=\x20?';break;case _0x426a('0x25'):_0x5d400d=_0x426a('0x26');break;case _0x426a('0x27'):case _0x426a('0x28'):case _0x426a('0x29'):_0x5d400d=_0x426a('0x2a');break;case _0x426a('0x2b'):_0x5d400d=_0x426a('0x2c');break;case _0x426a('0x17'):_0x5d400d='>\x20?';break;case _0x426a('0x18'):_0x5d400d=_0x426a('0x2d');break;case _0x426a('0x2e'):_0x5d400d=_0x426a('0x2f');break;case _0x426a('0x16'):_0x5d400d='BETWEEN\x20?\x20AND\x20?';break;}return _0x5d400d;}function parseValue(_0x404162,_0x416428,_0x195a83){var _0xfe6beb={'start':undefined,'end':undefined};switch(_0x416428){case _0x426a('0x22'):case _0x426a('0x23'):_0xfe6beb[_0x426a('0x30')]=_0x195a83[_0x426a('0x8')](',');break;case _0x426a('0x27'):_0xfe6beb[_0x426a('0x30')]='%'+_0x195a83+'%';break;case'$startsWith':_0xfe6beb[_0x426a('0x30')]=_0x195a83+'%';break;case _0x426a('0x29'):_0xfe6beb['start']='%'+_0x195a83;break;case _0x426a('0x16'):var _0x27e244=_0x195a83[_0x426a('0x8')](',');var _0x195a83=_0x27e244[_0x426a('0xc')]();var _0x4a247a=_0x27e244[_0x426a('0x31')]();if(_0x404162===_0x426a('0x13')){_0x195a83=moment(_0x195a83)['utcOffset'](0x0,!![])[_0x426a('0x1b')]();_0x4a247a=moment(_0x4a247a)['utcOffset'](0x0,!![])[_0x426a('0x1a')](0x17,_0x426a('0x32'))[_0x426a('0x1a')](0x3b,_0x426a('0x33'))[_0x426a('0x1a')](0x3b,_0x426a('0x34'))[_0x426a('0x1b')]();}_0xfe6beb={'start':_0x195a83,'end':_0x4a247a};break;default:_0xfe6beb['start']=_0x195a83;break;}return _0xfe6beb;}
\ No newline at end of file
+var _0x8e7e=['$ne','$notIn','\x20IS\x20NULL)','IN\x20?','NOT\x20IN\x20?','$eq','=\x20?','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','start','$substring','$startsWith','pop','utcOffset','hours','minutes','seconds','lodash','startsWith','[$or]','replace','split','slice','forEach','shift','filter','indexOf','conditions','push','DATE','operator','$between','value','includes','$gt','$lte','add','days','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20'];(function(_0x5da789,_0xfc3d85){var _0x477021=function(_0x355fa1){while(--_0x355fa1){_0x5da789['push'](_0x5da789['shift']());}};_0x477021(++_0xfc3d85);}(_0x8e7e,0x1b8));var _0xe8e7=function(_0x139c15,_0x4da83e){_0x139c15=_0x139c15-0x0;var _0x116da1=_0x8e7e[_0x139c15];return _0x116da1;};'use strict';var _=require(_0xe8e7('0x0'));var moment=require('moment');exports['parseSearch']=function(_0x5318d1){var _0x1dcb9d={'conditions':[]};_0x1dcb9d['sqlOperator']=_[_0xe8e7('0x1')](_0x5318d1,_0xe8e7('0x2'))?'or':'and';var _0x3d47da=_0x5318d1['replace']('[$and]','')[_0xe8e7('0x3')](_0xe8e7('0x2'),'')[_0xe8e7('0x4')]('||');for(var _0x342133=0x0;_0x342133<_0x3d47da['length'];_0x342133++){var _0xd63392=_0x3d47da[_0x342133][_0xe8e7('0x4')](':=');var _0x329fd8=_0xd63392[0x0];var _0xda6639=_0xd63392[_0xe8e7('0x5')](0x1);_0xda6639[_0xe8e7('0x6')](function(_0x5d88b6){var _0x212ae8=_0x5d88b6[_0xe8e7('0x4')]('[')[_0xe8e7('0x7')]();var _0x40f4ee=_0x5d88b6['match'](/\[(.*?)\]/g);_0x40f4ee[_0xe8e7('0x6')](function(_0x3c39e7){var _0x9419a8=_0x3c39e7[_0xe8e7('0x4')]('[')[_0xe8e7('0x8')](function(_0xf943e0){return _0xf943e0[_0xe8e7('0x9')](']')>-0x1;})['map'](function(_0x5877ab){return _0x5877ab[_0xe8e7('0x4')](']')[0x0];})[0x0];_0x1dcb9d[_0xe8e7('0xa')][_0xe8e7('0xb')]({'field':_0x329fd8,'operator':_0x212ae8,'value':_0x9419a8});});});}return _0x1dcb9d;};exports['buildExpression']=function(_0x1b6422,_0xd6076f,_0x43ff39){var _0x450193={};if(_0xd6076f===_0xe8e7('0xc')){if(_0x43ff39[_0xe8e7('0xd')]==='$eq'){_0x43ff39[_0xe8e7('0xd')]=_0xe8e7('0xe');_0x43ff39[_0xe8e7('0xf')]+=','+_0x43ff39[_0xe8e7('0xf')];}else if(_[_0xe8e7('0x10')]([_0xe8e7('0x11'),_0xe8e7('0x12')],_0x43ff39[_0xe8e7('0xd')])){_0x43ff39[_0xe8e7('0xf')]=moment(_0x43ff39[_0xe8e7('0xf')])[_0xe8e7('0x13')](0x1,_0xe8e7('0x14'))[_0xe8e7('0x15')](_0xe8e7('0x16'));}}if(_0x43ff39['castTo']){_0xd6076f=_0x43ff39[_0xe8e7('0x17')];_0x450193[_0xe8e7('0x18')]=_0xe8e7('0x19')+_0x1b6422+'.'+_0x43ff39[_0xe8e7('0x1a')]+_0xe8e7('0x1b')+_0x43ff39[_0xe8e7('0x17')]+')\x20'+parseOperator(_0x43ff39[_0xe8e7('0xd')]);}else{_0x450193[_0xe8e7('0x18')]=_0x1b6422+'.'+_0x43ff39[_0xe8e7('0x1a')]+'\x20'+parseOperator(_0x43ff39[_0xe8e7('0xd')]);}if(_[_0xe8e7('0x10')]([_0xe8e7('0x1c'),_0xe8e7('0x1d')],_0x43ff39['operator']))_0x450193['text']='('+_0x450193[_0xe8e7('0x18')]+'\x20OR\x20'+_0x1b6422+'.'+_0x43ff39[_0xe8e7('0x1a')]+_0xe8e7('0x1e');_0x450193['value']=parseValue(_0xd6076f,_0x43ff39['operator'],_0x43ff39[_0xe8e7('0xf')]);return _0x450193;};function parseOperator(_0x4c4fc8){var _0x20ea3a;switch(_0x4c4fc8){case'$in':_0x20ea3a=_0xe8e7('0x1f');break;case _0xe8e7('0x1d'):_0x20ea3a=_0xe8e7('0x20');break;case _0xe8e7('0x21'):_0x20ea3a=_0xe8e7('0x22');break;case'$ne':_0x20ea3a='<>\x20?';break;case'$substring':case'$startsWith':case _0xe8e7('0x23'):_0x20ea3a=_0xe8e7('0x24');break;case _0xe8e7('0x25'):_0x20ea3a=_0xe8e7('0x26');break;case _0xe8e7('0x11'):_0x20ea3a=_0xe8e7('0x27');break;case'$lte':_0x20ea3a=_0xe8e7('0x28');break;case'$gte':_0x20ea3a=_0xe8e7('0x29');break;case'$between':_0x20ea3a=_0xe8e7('0x2a');break;}return _0x20ea3a;}function parseValue(_0x66ee90,_0x2fd461,_0x61972d){var _0x4570e7={'start':undefined,'end':undefined};switch(_0x2fd461){case _0xe8e7('0x2b'):case _0xe8e7('0x1d'):_0x4570e7[_0xe8e7('0x2c')]=_0x61972d[_0xe8e7('0x4')](',');break;case _0xe8e7('0x2d'):_0x4570e7[_0xe8e7('0x2c')]='%'+_0x61972d+'%';break;case _0xe8e7('0x2e'):_0x4570e7[_0xe8e7('0x2c')]=_0x61972d+'%';break;case _0xe8e7('0x23'):_0x4570e7[_0xe8e7('0x2c')]='%'+_0x61972d;break;case'$between':var _0x4dad19=_0x61972d[_0xe8e7('0x4')](',');var _0x61972d=_0x4dad19[_0xe8e7('0x7')]();var _0x3e12e0=_0x4dad19[_0xe8e7('0x2f')]();if(_0x66ee90==='DATE'){_0x61972d=moment(_0x61972d)['utcOffset'](0x0,!![])[_0xe8e7('0x15')]();_0x3e12e0=moment(_0x3e12e0)[_0xe8e7('0x30')](0x0,!![])[_0xe8e7('0x13')](0x17,_0xe8e7('0x31'))[_0xe8e7('0x13')](0x3b,_0xe8e7('0x32'))[_0xe8e7('0x13')](0x3b,_0xe8e7('0x33'))[_0xe8e7('0x15')]();}_0x4570e7={'start':_0x61972d,'end':_0x3e12e0};break;default:_0x4570e7[_0xe8e7('0x2c')]=_0x61972d;break;}return _0x4570e7;}
\ No newline at end of file
index c36fca2..a23bb63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbb6=['filter','merge','type','VIRTUAL','options','lodash','moment','parse','keys','includes','fields','filters','isEmpty','forOwn','DATE','isPlainObject','$gte','format','utc','$lte','YYYY-MM-DD','subtract','name','isArray','split','limit','offset','sort','map','priority','substr','DESC','cast','col','unsigned','ASC','omit','length','isString','unset','hasOwnProperty','isNumeric','match','push','join','$id','query','intersection','attributes','model','nolimit','where'];(function(_0x1b3224,_0x3351d9){var _0x5dae4f=function(_0x22894a){while(--_0x22894a){_0x1b3224['push'](_0x1b3224['shift']());}};_0x5dae4f(++_0x3351d9);}(_0xbbb6,0x13d));var _0x6bbb=function(_0x5734e1,_0x3e1d75){_0x5734e1=_0x5734e1-0x0;var _0x22c784=_0xbbb6[_0x5734e1];return _0x22c784;};'use strict';var _=require(_0x6bbb('0x0'));var sequelize=require('sequelize');var moment=require(_0x6bbb('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0xca6723){var _0x265118=['ne'];try{var _0x47f3da=JSON[_0x6bbb('0x2')](_0xca6723);var _0x5ead18=Object[_0x6bbb('0x3')](_0x47f3da)[0x0];return _0x265118[_0x6bbb('0x4')](_0x5ead18);}catch(_0x5df9c9){return![];}}function getOperatorValue(_0x10265d){var _0x51efeb=JSON['parse'](_0x10265d);var _0x25d60a=Object[_0x6bbb('0x3')](_0x51efeb)[0x0];var _0xe7c216=_0x51efeb[_0x25d60a];return{['$'+_0x25d60a]:_0xe7c216};}exports[_0x6bbb('0x5')]=function(_0x556ebd){var _0x42446f=null;if(_0x556ebd){_0x42446f=_0x556ebd['split'](',');}return _0x42446f;};exports[_0x6bbb('0x6')]=function(_0x156fe7,_0x1bb2e1){var _0x595c80={};if(!_[_0x6bbb('0x7')](_0x156fe7)){_[_0x6bbb('0x8')](_0x156fe7,function(_0x5f206a,_0x2f2b2d){try{if(_0x1bb2e1){var _0x37b050=_['find'](_0x1bb2e1,{'name':_0x2f2b2d})||{};if(hasSequelizeOperator(_0x5f206a)){_0x595c80[_0x2f2b2d]=getOperatorValue(_0x5f206a);}else if(_0x37b050['type']===_0x6bbb('0x9')&&_[_0x6bbb('0xa')](_0x5f206a)){var _0x52f352=JSON[_0x6bbb('0x2')](_0x5f206a);var _0x36003d={'$gte':moment(moment(_0x52f352[_0x6bbb('0xb')])[_0x6bbb('0xc')]('YYYY-MM-DD'))[_0x6bbb('0xd')]()[_0x6bbb('0xc')](),'$lte':moment(moment(_0x52f352[_0x6bbb('0xe')])[_0x6bbb('0xc')](_0x6bbb('0xf')))[_0x6bbb('0xd')]()[_0x6bbb('0x10')](0x1,'s')[_0x6bbb('0xc')]()};_0x595c80[_0x2f2b2d]=_0x36003d;}else if(_0x37b050[_0x6bbb('0x11')]==='uniqueid'){_0x595c80[_0x2f2b2d]=_0x5f206a;}else{_0x595c80[_0x2f2b2d]=_[_0x6bbb('0x12')](_0x5f206a)?_0x5f206a:JSON[_0x6bbb('0x2')](_0x5f206a);}}else{_0x595c80[_0x2f2b2d]=_['isArray'](_0x5f206a)?_0x5f206a:JSON[_0x6bbb('0x2')](_0x5f206a);}}catch(_0x1d3c33){_0x595c80[_0x2f2b2d]=_0x5f206a[_0x6bbb('0x13')](',');}});}return _0x595c80;};exports[_0x6bbb('0x14')]=function(_0x45a8d0){_0x45a8d0=parseInt(_0x45a8d0,0xa);if(!_0x45a8d0||_0x45a8d0<0x0){_0x45a8d0=LIMIT_VALUE;}return _0x45a8d0;};exports[_0x6bbb('0x15')]=function(_0x376b81){_0x376b81=parseInt(_0x376b81,0xa);if(!_0x376b81||_0x376b81<0x0){_0x376b81=0x0;}return _0x376b81;};exports[_0x6bbb('0x16')]=function(_0x25327a){var _0x57e6fb,_0x4db56e=null;if(_0x25327a){_0x57e6fb=_0x25327a['split'](',');_0x4db56e=_[_0x6bbb('0x17')](_0x57e6fb,function(_0x42323b){if(_0x42323b['indexOf']('-')===0x0){return[_0x42323b==='priority'?sequelize['cast'](sequelize['col'](_0x6bbb('0x18')),'unsigned'):_0x42323b[_0x6bbb('0x19')](0x1),_0x6bbb('0x1a')];}else{return[_0x42323b==='priority'?sequelize[_0x6bbb('0x1b')](sequelize[_0x6bbb('0x1c')](_0x6bbb('0x18')),_0x6bbb('0x1d')):_0x42323b,_0x6bbb('0x1e')];}});}return _0x4db56e;};exports[_0x6bbb('0x1f')]=function(_0x331949,_0x2ff566){if(_[_0x6bbb('0x7')](_0x331949)){return _0x331949;}if(_[_0x6bbb('0x12')](_0x331949)){for(var _0x5263f9=0x0;_0x5263f9<_0x331949[_0x6bbb('0x20')];_0x5263f9+=0x1){_0x331949[_0x5263f9]=this[_0x6bbb('0x1f')](_0x331949[_0x5263f9],_0x2ff566);}return _0x331949;}if(!_['isObject'](_0x331949)){return _0x331949;}if(_[_0x6bbb('0x21')](_0x2ff566)){_0x2ff566=[_0x2ff566];}if(!_[_0x6bbb('0x12')](_0x2ff566)){return _0x331949;}for(var _0x44938b=0x0;_0x44938b<_0x2ff566['length'];_0x44938b+=0x1){_[_0x6bbb('0x22')](_0x331949,_0x2ff566[_0x44938b]);}for(var _0x3f3042 in _0x331949){if(_0x331949[_0x6bbb('0x23')](_0x3f3042)){_0x331949[_0x3f3042]=this['omit'](_0x331949[_0x3f3042],_0x2ff566);}}return _0x331949;};exports[_0x6bbb('0x24')]=function(_0x336291){return _0x336291[_0x6bbb('0x25')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports['isEmail']=function(_0x451178){return _0x451178[_0x6bbb('0x25')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x4e7cf7){var _0x545753=[];_0x4e7cf7['split'](/[ ,]+/)['forEach'](function(_0x59b615){_0x59b615=_0x59b615['replace'](/([^:]")"+/g,'$1');_0x59b615='+'+_0x59b615+'*';if(_0x59b615[_0x6bbb('0x4')]('@'))_0x59b615='\x22'+_0x59b615+'\x22';_0x545753[_0x6bbb('0x26')](_0x59b615);});return _0x545753[_0x6bbb('0x27')]('\x20');};exports['getOptions']=function(_0x263a51,_0x2f0ce9,_0x3e3cf2){var _0x5188c6={},_0x4b3934={};if(_0x2f0ce9['query'][_0x6bbb('0x28')]){_0x2f0ce9[_0x6bbb('0x29')]['id']=_0x2f0ce9[_0x6bbb('0x29')][_0x6bbb('0x28')];delete _0x2f0ce9[_0x6bbb('0x29')]['$id'];}_0x5188c6['model']=_['map'](_0x263a51,_0x6bbb('0x11'));_0x5188c6[_0x6bbb('0x29')]=_[_0x6bbb('0x3')](_0x2f0ce9[_0x6bbb('0x29')]);_0x5188c6[_0x6bbb('0x6')]=_[_0x6bbb('0x2a')](_0x5188c6['model'],_0x5188c6['query']);_0x4b3934[_0x6bbb('0x2b')]=_['intersection'](_0x5188c6[_0x6bbb('0x2c')],this[_0x6bbb('0x5')](_0x2f0ce9[_0x6bbb('0x29')]['fields']));_0x4b3934['attributes']=_0x4b3934[_0x6bbb('0x2b')][_0x6bbb('0x20')]?_0x4b3934[_0x6bbb('0x2b')]:_0x5188c6['model'];if(!_0x2f0ce9[_0x6bbb('0x29')]['hasOwnProperty'](_0x6bbb('0x2d'))){_0x4b3934[_0x6bbb('0x14')]=this['limit'](_0x2f0ce9[_0x6bbb('0x29')]['limit']);_0x4b3934[_0x6bbb('0x15')]=this[_0x6bbb('0x15')](_0x2f0ce9[_0x6bbb('0x29')][_0x6bbb('0x15')]);}_0x4b3934['order']=this[_0x6bbb('0x16')](_0x2f0ce9[_0x6bbb('0x29')]['sort']);_0x4b3934[_0x6bbb('0x2e')]=this[_0x6bbb('0x6')](_['pick'](_0x2f0ce9[_0x6bbb('0x29')],_0x5188c6['filters']),_0x263a51);if(_0x2f0ce9[_0x6bbb('0x29')][_0x6bbb('0x2f')]){_0x4b3934[_0x6bbb('0x2e')]=_[_0x6bbb('0x30')](_0x4b3934[_0x6bbb('0x2e')],{'$or':_[_0x6bbb('0x17')](_0x263a51,function(_0x232c83){if(_0x232c83[_0x6bbb('0x31')]!==_0x6bbb('0x32')){if(_0x3e3cf2){return sequelize[_0x6bbb('0x2e')](sequelize['fn']('lower',sequelize[_0x6bbb('0x1c')](_0x232c83[_0x6bbb('0x11')])),{'$like':sequelize['fn']('lower','%'+_0x2f0ce9[_0x6bbb('0x29')][_0x6bbb('0x2f')]+'%')});}else{var _0x3d8cfd={};_0x3d8cfd[_0x232c83['name']]={'$like':'%'+_0x2f0ce9[_0x6bbb('0x29')][_0x6bbb('0x2f')]+'%'};return _0x3d8cfd;}}})});}_0x4b3934=_[_0x6bbb('0x30')]({},_0x4b3934,_0x2f0ce9[_0x6bbb('0x33')]);return _0x4b3934;};
\ No newline at end of file
+var _0x4bfe=['filters','forOwn','find','DATE','$gte','format','utc','$lte','YYYY-MM-DD','subtract','name','uniqueid','isArray','split','limit','sort','map','indexOf','priority','cast','col','unsigned','DESC','ASC','omit','isObject','isString','length','unset','hasOwnProperty','isNumeric','match','isEmail','forEach','push','join','query','$id','model','intersection','attributes','nolimit','offset','order','where','filter','merge','type','VIRTUAL','lower','options','lodash','sequelize','moment','parse','keys','includes','fields'];(function(_0x10c8da,_0x1d40bd){var _0x1a289c=function(_0xfe062f){while(--_0xfe062f){_0x10c8da['push'](_0x10c8da['shift']());}};_0x1a289c(++_0x1d40bd);}(_0x4bfe,0x1c9));var _0xe4bf=function(_0x1a6849,_0x2e01db){_0x1a6849=_0x1a6849-0x0;var _0x5e7b55=_0x4bfe[_0x1a6849];return _0x5e7b55;};'use strict';var _=require(_0xe4bf('0x0'));var sequelize=require(_0xe4bf('0x1'));var moment=require(_0xe4bf('0x2'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x236e68){var _0x207d52=['ne'];try{var _0xdaa475=JSON[_0xe4bf('0x3')](_0x236e68);var _0x4ba59a=Object[_0xe4bf('0x4')](_0xdaa475)[0x0];return _0x207d52[_0xe4bf('0x5')](_0x4ba59a);}catch(_0x3f1c7a){return![];}}function getOperatorValue(_0x3ae3e1){var _0x251148=JSON[_0xe4bf('0x3')](_0x3ae3e1);var _0x21e809=Object[_0xe4bf('0x4')](_0x251148)[0x0];var _0x5cab02=_0x251148[_0x21e809];return{['$'+_0x21e809]:_0x5cab02};}exports[_0xe4bf('0x6')]=function(_0x227156){var _0x407160=null;if(_0x227156){_0x407160=_0x227156['split'](',');}return _0x407160;};exports[_0xe4bf('0x7')]=function(_0x58878b,_0x1fb93f){var _0x4338b7={};if(!_['isEmpty'](_0x58878b)){_[_0xe4bf('0x8')](_0x58878b,function(_0x30dce9,_0x9c173c){try{if(_0x1fb93f){var _0x3d7e0e=_[_0xe4bf('0x9')](_0x1fb93f,{'name':_0x9c173c})||{};if(hasSequelizeOperator(_0x30dce9)){_0x4338b7[_0x9c173c]=getOperatorValue(_0x30dce9);}else if(_0x3d7e0e['type']===_0xe4bf('0xa')&&_['isPlainObject'](_0x30dce9)){var _0x10276e=JSON['parse'](_0x30dce9);var _0x4500d2={'$gte':moment(moment(_0x10276e[_0xe4bf('0xb')])[_0xe4bf('0xc')]('YYYY-MM-DD'))[_0xe4bf('0xd')]()['format'](),'$lte':moment(moment(_0x10276e[_0xe4bf('0xe')])[_0xe4bf('0xc')](_0xe4bf('0xf')))[_0xe4bf('0xd')]()[_0xe4bf('0x10')](0x1,'s')[_0xe4bf('0xc')]()};_0x4338b7[_0x9c173c]=_0x4500d2;}else if(_0x3d7e0e[_0xe4bf('0x11')]===_0xe4bf('0x12')){_0x4338b7[_0x9c173c]=_0x30dce9;}else{_0x4338b7[_0x9c173c]=_[_0xe4bf('0x13')](_0x30dce9)?_0x30dce9:JSON[_0xe4bf('0x3')](_0x30dce9);}}else{_0x4338b7[_0x9c173c]=_[_0xe4bf('0x13')](_0x30dce9)?_0x30dce9:JSON[_0xe4bf('0x3')](_0x30dce9);}}catch(_0x379261){_0x4338b7[_0x9c173c]=_0x30dce9[_0xe4bf('0x14')](',');}});}return _0x4338b7;};exports[_0xe4bf('0x15')]=function(_0x5afcc8){_0x5afcc8=parseInt(_0x5afcc8,0xa);if(!_0x5afcc8||_0x5afcc8<0x0){_0x5afcc8=LIMIT_VALUE;}return _0x5afcc8;};exports['offset']=function(_0x4f5269){_0x4f5269=parseInt(_0x4f5269,0xa);if(!_0x4f5269||_0x4f5269<0x0){_0x4f5269=0x0;}return _0x4f5269;};exports[_0xe4bf('0x16')]=function(_0x48ce2e){var _0x319932,_0x332abf=null;if(_0x48ce2e){_0x319932=_0x48ce2e[_0xe4bf('0x14')](',');_0x332abf=_[_0xe4bf('0x17')](_0x319932,function(_0x1e8edd){if(_0x1e8edd[_0xe4bf('0x18')]('-')===0x0){return[_0x1e8edd===_0xe4bf('0x19')?sequelize[_0xe4bf('0x1a')](sequelize[_0xe4bf('0x1b')](_0xe4bf('0x19')),_0xe4bf('0x1c')):_0x1e8edd['substr'](0x1),_0xe4bf('0x1d')];}else{return[_0x1e8edd===_0xe4bf('0x19')?sequelize[_0xe4bf('0x1a')](sequelize['col'](_0xe4bf('0x19')),_0xe4bf('0x1c')):_0x1e8edd,_0xe4bf('0x1e')];}});}return _0x332abf;};exports[_0xe4bf('0x1f')]=function(_0x5d9033,_0x360b19){if(_['isEmpty'](_0x5d9033)){return _0x5d9033;}if(_[_0xe4bf('0x13')](_0x5d9033)){for(var _0x288ac3=0x0;_0x288ac3<_0x5d9033['length'];_0x288ac3+=0x1){_0x5d9033[_0x288ac3]=this['omit'](_0x5d9033[_0x288ac3],_0x360b19);}return _0x5d9033;}if(!_[_0xe4bf('0x20')](_0x5d9033)){return _0x5d9033;}if(_[_0xe4bf('0x21')](_0x360b19)){_0x360b19=[_0x360b19];}if(!_[_0xe4bf('0x13')](_0x360b19)){return _0x5d9033;}for(var _0x5d2e5d=0x0;_0x5d2e5d<_0x360b19[_0xe4bf('0x22')];_0x5d2e5d+=0x1){_[_0xe4bf('0x23')](_0x5d9033,_0x360b19[_0x5d2e5d]);}for(var _0x9c79a1 in _0x5d9033){if(_0x5d9033[_0xe4bf('0x24')](_0x9c79a1)){_0x5d9033[_0x9c79a1]=this[_0xe4bf('0x1f')](_0x5d9033[_0x9c79a1],_0x360b19);}}return _0x5d9033;};exports[_0xe4bf('0x25')]=function(_0x3b5317){return _0x3b5317[_0xe4bf('0x26')](RegExp('^[+]?[0-9]*$'))?!![]:![];};exports[_0xe4bf('0x27')]=function(_0x454992){return _0x454992[_0xe4bf('0x26')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x5ccb46){var _0x200d33=[];_0x5ccb46[_0xe4bf('0x14')](/[ ,]+/)[_0xe4bf('0x28')](function(_0x182f35){_0x182f35=_0x182f35['replace'](/([^:]")"+/g,'$1');_0x182f35='+'+_0x182f35+'*';if(_0x182f35[_0xe4bf('0x5')]('@'))_0x182f35='\x22'+_0x182f35+'\x22';_0x200d33[_0xe4bf('0x29')](_0x182f35);});return _0x200d33[_0xe4bf('0x2a')]('\x20');};exports['getOptions']=function(_0x4411d1,_0x5aa035,_0x1698af){var _0x26c2c5={},_0x305cab={};if(_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x2c')]){_0x5aa035[_0xe4bf('0x2b')]['id']=_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x2c')];delete _0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x2c')];}_0x26c2c5[_0xe4bf('0x2d')]=_[_0xe4bf('0x17')](_0x4411d1,_0xe4bf('0x11'));_0x26c2c5[_0xe4bf('0x2b')]=_[_0xe4bf('0x4')](_0x5aa035[_0xe4bf('0x2b')]);_0x26c2c5[_0xe4bf('0x7')]=_[_0xe4bf('0x2e')](_0x26c2c5[_0xe4bf('0x2d')],_0x26c2c5['query']);_0x305cab[_0xe4bf('0x2f')]=_[_0xe4bf('0x2e')](_0x26c2c5['model'],this[_0xe4bf('0x6')](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x6')]));_0x305cab[_0xe4bf('0x2f')]=_0x305cab[_0xe4bf('0x2f')][_0xe4bf('0x22')]?_0x305cab[_0xe4bf('0x2f')]:_0x26c2c5[_0xe4bf('0x2d')];if(!_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x24')](_0xe4bf('0x30'))){_0x305cab[_0xe4bf('0x15')]=this[_0xe4bf('0x15')](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x15')]);_0x305cab[_0xe4bf('0x31')]=this['offset'](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x31')]);}_0x305cab[_0xe4bf('0x32')]=this[_0xe4bf('0x16')](_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x16')]);_0x305cab[_0xe4bf('0x33')]=this[_0xe4bf('0x7')](_['pick'](_0x5aa035[_0xe4bf('0x2b')],_0x26c2c5[_0xe4bf('0x7')]),_0x4411d1);if(_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x34')]){_0x305cab[_0xe4bf('0x33')]=_[_0xe4bf('0x35')](_0x305cab['where'],{'$or':_[_0xe4bf('0x17')](_0x4411d1,function(_0xae90a){if(_0xae90a[_0xe4bf('0x36')]!==_0xe4bf('0x37')){if(_0x1698af){return sequelize[_0xe4bf('0x33')](sequelize['fn'](_0xe4bf('0x38'),sequelize[_0xe4bf('0x1b')](_0xae90a[_0xe4bf('0x11')])),{'$like':sequelize['fn'](_0xe4bf('0x38'),'%'+_0x5aa035[_0xe4bf('0x2b')][_0xe4bf('0x34')]+'%')});}else{var _0x1de801={};_0x1de801[_0xae90a['name']]={'$like':'%'+_0x5aa035[_0xe4bf('0x2b')]['filter']+'%'};return _0x1de801;}}})});}_0x305cab=_[_0xe4bf('0x35')]({},_0x305cab,_0x5aa035[_0xe4bf('0x39')]);return _0x305cab;};
\ No newline at end of file
index 78e0e62..11e1862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b1a=['/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','50mb','json','initialize','express','serve-favicon','body-parser','method-override','cookie-parser','errorhandler','path','passport','cors','moment','../mysqldb','default','get','production','appPath','join','root','public','development','test','set','client','use','json\x20replacer','split','views'];(function(_0x525f73,_0x5cf7e6){var _0xbc7f27=function(_0x28c9c3){while(--_0x28c9c3){_0x525f73['push'](_0x525f73['shift']());}};_0xbc7f27(++_0x5cf7e6);}(_0x2b1a,0x172));var _0xa2b1=function(_0x387d90,_0x3811c2){_0x387d90=_0x387d90-0x0;var _0x1666cb=_0x2b1a[_0x387d90];return _0x1666cb;};'use strict';var express=require(_0xa2b1('0x0'));var favicon=require(_0xa2b1('0x1'));var bodyParser=require(_0xa2b1('0x2'));var methodOverride=require(_0xa2b1('0x3'));var cookieParser=require(_0xa2b1('0x4'));var errorHandler=require(_0xa2b1('0x5'));var path=require(_0xa2b1('0x6'));var passport=require(_0xa2b1('0x7'));var cors=require(_0xa2b1('0x8'));var moment=require(_0xa2b1('0x9'));var config=require('./environment');var db=require(_0xa2b1('0xa'))['db'];exports[_0xa2b1('0xb')]=function(_0x59e83e){var _0x3ba158=_0x59e83e[_0xa2b1('0xc')]('env');if(_0x3ba158===_0xa2b1('0xd')){_0x59e83e['set'](_0xa2b1('0xe'),path[_0xa2b1('0xf')](config[_0xa2b1('0x10')],_0xa2b1('0x11')));}if(_0x3ba158===_0xa2b1('0x12')||_0x3ba158===_0xa2b1('0x13')){_0x59e83e[_0xa2b1('0x14')]('appPath',path[_0xa2b1('0xf')](config[_0xa2b1('0x10')],_0xa2b1('0x15')));_0x59e83e[_0xa2b1('0x16')](errorHandler());}_0x59e83e[_0xa2b1('0x14')](_0xa2b1('0x17'),function(_0x314f35,_0x1dd322){if(this[_0x314f35]instanceof Date){_0x1dd322=this[_0x314f35]['toISOString']()[_0xa2b1('0x18')]('.')[0x0]+'Z';}return _0x1dd322;});_0x59e83e[_0xa2b1('0x16')](express['static'](_0x59e83e[_0xa2b1('0xc')](_0xa2b1('0xe'))));_0x59e83e['set'](_0xa2b1('0x19'),config['root']+_0xa2b1('0x1a'));_0x59e83e[_0xa2b1('0x1b')](_0xa2b1('0x1c'),require(_0xa2b1('0x1d'))[_0xa2b1('0x1e')]);_0x59e83e[_0xa2b1('0x14')](_0xa2b1('0x1f'),'html');_0x59e83e[_0xa2b1('0x16')](bodyParser[_0xa2b1('0x20')]({'limit':_0xa2b1('0x21'),'extended':!![]}));_0x59e83e['use'](bodyParser[_0xa2b1('0x22')]({'limit':_0xa2b1('0x21')}));_0x59e83e['use'](cors());_0x59e83e['use'](methodOverride());_0x59e83e[_0xa2b1('0x16')](cookieParser());_0x59e83e[_0xa2b1('0x16')](passport[_0xa2b1('0x23')]());};
\ No newline at end of file
+var _0xd644=['root','public','test','join','client','use','set','json\x20replacer','toISOString','split','static','get','views','/server/views','engine','html','urlencoded','50mb','json','express','serve-favicon','body-parser','errorhandler','path','cors','moment','../mysqldb','appPath'];(function(_0x581682,_0x3534a8){var _0x1889f6=function(_0x5fcc27){while(--_0x5fcc27){_0x581682['push'](_0x581682['shift']());}};_0x1889f6(++_0x3534a8);}(_0xd644,0xbb));var _0x4d64=function(_0x535c37,_0x3f2309){_0x535c37=_0x535c37-0x0;var _0x419f7f=_0xd644[_0x535c37];return _0x419f7f;};'use strict';var express=require(_0x4d64('0x0'));var favicon=require(_0x4d64('0x1'));var bodyParser=require(_0x4d64('0x2'));var methodOverride=require('method-override');var cookieParser=require('cookie-parser');var errorHandler=require(_0x4d64('0x3'));var path=require(_0x4d64('0x4'));var passport=require('passport');var cors=require(_0x4d64('0x5'));var moment=require(_0x4d64('0x6'));var config=require('./environment');var db=require(_0x4d64('0x7'))['db'];exports['default']=function(_0x38489c){var _0x255cd0=_0x38489c['get']('env');if(_0x255cd0==='production'){_0x38489c['set'](_0x4d64('0x8'),path['join'](config[_0x4d64('0x9')],_0x4d64('0xa')));}if(_0x255cd0==='development'||_0x255cd0===_0x4d64('0xb')){_0x38489c['set'](_0x4d64('0x8'),path[_0x4d64('0xc')](config['root'],_0x4d64('0xd')));_0x38489c[_0x4d64('0xe')](errorHandler());}_0x38489c[_0x4d64('0xf')](_0x4d64('0x10'),function(_0x58460a,_0x867a4e){if(this[_0x58460a]instanceof Date){_0x867a4e=this[_0x58460a][_0x4d64('0x11')]()[_0x4d64('0x12')]('.')[0x0]+'Z';}return _0x867a4e;});_0x38489c['use'](express[_0x4d64('0x13')](_0x38489c[_0x4d64('0x14')](_0x4d64('0x8'))));_0x38489c[_0x4d64('0xf')](_0x4d64('0x15'),config[_0x4d64('0x9')]+_0x4d64('0x16'));_0x38489c[_0x4d64('0x17')](_0x4d64('0x18'),require('ejs')['renderFile']);_0x38489c[_0x4d64('0xf')]('view\x20engine',_0x4d64('0x18'));_0x38489c['use'](bodyParser[_0x4d64('0x19')]({'limit':_0x4d64('0x1a'),'extended':!![]}));_0x38489c[_0x4d64('0xe')](bodyParser[_0x4d64('0x1b')]({'limit':_0x4d64('0x1a')}));_0x38489c[_0x4d64('0xe')](cors());_0x38489c[_0x4d64('0xe')](methodOverride());_0x38489c[_0x4d64('0xe')](cookieParser());_0x38489c[_0x4d64('0xe')](passport['initialize']());};
\ No newline at end of file
index e816217..87c2619 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ae7=['mac','address','127.0.0.1','getFirstInterface','cpus','map','model','join','md5','digest','getUuid','platform','licenseToken','test','win32','utf8','replace','macAddress','ipAddress','createHash','update','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','IPv4','internal','head'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x4ae7,0x82));var _0x74ae=function(_0xaeb259,_0x132cf9){_0xaeb259=_0xaeb259-0x0;var _0x96525a=_0x4ae7[_0xaeb259];return _0x96525a;};'use strict';var _=require(_0x74ae('0x0'));var os=require('os');var crypto=require(_0x74ae('0x1'));var machine=require(_0x74ae('0x2'));var exec=require(_0x74ae('0x3'))[_0x74ae('0x4')];var config=require(_0x74ae('0x5'));function getInterfaces(){var _0x357248=[];var _0x4bbdb7=os[_0x74ae('0x6')]();var _0x23c2f1=_[_0x74ae('0x7')](_[_0x74ae('0x8')](_0x4bbdb7));for(var _0x37b22c=0x0;_0x37b22c<_0x23c2f1[_0x74ae('0x9')];_0x37b22c++){var _0x2ad12f=_0x4bbdb7[_0x23c2f1[_0x37b22c]][_0x74ae('0xa')](function(_0x462f50){return _0x462f50['family']===_0x74ae('0xb')&&_0x462f50[_0x74ae('0xc')]===![];});_0x357248=_0x357248['concat'](_0x2ad12f);}return _0x357248;}function getFirstInterface(){var _0x54cf74=_[_0x74ae('0xd')](getInterfaces());return{'macAddress':_0x54cf74&&_0x54cf74[_0x74ae('0xe')]?_0x54cf74[_0x74ae('0xe')]:'00:00:00:00:00:00','ipAddress':_0x54cf74&&_0x54cf74[_0x74ae('0xf')]?_0x54cf74[_0x74ae('0xf')]:_0x74ae('0x10')};}exports[_0x74ae('0x11')]=getFirstInterface;function getCPUhash(){var _0x4441f6=_[_0x74ae('0x7')](os[_0x74ae('0x12')]()[_0x74ae('0x13')](function(_0x4b62ae){return _0x4b62ae[_0x74ae('0x14')];}))[_0x74ae('0x15')](':');return crypto['createHash'](_0x74ae('0x16'))['update'](_0x4441f6)[_0x74ae('0x17')]('hex');}exports[_0x74ae('0x18')]=function(){var _0x8e3725=os[_0x74ae('0x19')]();var _0x52f87e=/[0-9a-f-]{36}/;if(config[_0x74ae('0x1a')]&&_0x52f87e[_0x74ae('0x1b')](config[_0x74ae('0x1a')])){return config[_0x74ae('0x1a')];}else if(_0x8e3725===_0x74ae('0x1c')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x74ae('0x1d')})[_0x74ae('0x1e')]('\x0d\x0a','');}else{var _0x530fbd=getFirstInterface();var _0x3eacae=getCPUhash();var _0x2f25cb=_0x3eacae+'|'+os['hostname']()+'|'+_0x530fbd[_0x74ae('0x1f')]+'|'+_0x530fbd[_0x74ae('0x20')];var _0x1f6c44=crypto[_0x74ae('0x21')](_0x74ae('0x16'))[_0x74ae('0x22')](_0x2f25cb)[_0x74ae('0x17')]('hex');return _0x1f6c44['substring'](0x0,0x8)+'-'+_0x1f6c44[_0x74ae('0x23')](0x8,0xc)+'-'+_0x1f6c44[_0x74ae('0x23')](0xc,0x10)+'-'+_0x1f6c44[_0x74ae('0x23')](0x10,0x14)+'-'+_0x1f6c44[_0x74ae('0x23')](0x14);}};
\ No newline at end of file
+var _0xe31c=['keys','length','filter','IPv4','internal','concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model','join','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','substring','lodash','bimedia-machine-uuid','../environment','networkInterfaces','orderBy'];(function(_0x4ec8d5,_0x22e5d6){var _0x15fe14=function(_0x33e8ea){while(--_0x33e8ea){_0x4ec8d5['push'](_0x4ec8d5['shift']());}};_0x15fe14(++_0x22e5d6);}(_0xe31c,0x87));var _0xce31=function(_0x322423,_0x424ddb){_0x322423=_0x322423-0x0;var _0x320148=_0xe31c[_0x322423];return _0x320148;};'use strict';var _=require(_0xce31('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0xce31('0x1'));var exec=require('child_process')['execSync'];var config=require(_0xce31('0x2'));function getInterfaces(){var _0x5b88b6=[];var _0x29cde7=os[_0xce31('0x3')]();var _0x585016=_[_0xce31('0x4')](_[_0xce31('0x5')](_0x29cde7));for(var _0x331262=0x0;_0x331262<_0x585016[_0xce31('0x6')];_0x331262++){var _0x2d6cb0=_0x29cde7[_0x585016[_0x331262]][_0xce31('0x7')](function(_0x47a339){return _0x47a339['family']===_0xce31('0x8')&&_0x47a339[_0xce31('0x9')]===![];});_0x5b88b6=_0x5b88b6[_0xce31('0xa')](_0x2d6cb0);}return _0x5b88b6;}function getFirstInterface(){var _0x3940c1=_[_0xce31('0xb')](getInterfaces());return{'macAddress':_0x3940c1&&_0x3940c1[_0xce31('0xc')]?_0x3940c1['mac']:_0xce31('0xd'),'ipAddress':_0x3940c1&&_0x3940c1[_0xce31('0xe')]?_0x3940c1['address']:_0xce31('0xf')};}exports[_0xce31('0x10')]=getFirstInterface;function getCPUhash(){var _0x4b5505=_[_0xce31('0x4')](os['cpus']()[_0xce31('0x11')](function(_0x3c0538){return _0x3c0538[_0xce31('0x12')];}))[_0xce31('0x13')](':');return crypto[_0xce31('0x14')](_0xce31('0x15'))[_0xce31('0x16')](_0x4b5505)[_0xce31('0x17')](_0xce31('0x18'));}exports[_0xce31('0x19')]=function(){var _0x6f20f=os[_0xce31('0x1a')]();var _0x1e8e64=/[0-9a-f-]{36}/;if(config[_0xce31('0x1b')]&&_0x1e8e64['test'](config[_0xce31('0x1b')])){return config['licenseToken'];}else if(_0x6f20f===_0xce31('0x1c')){return exec(_0xce31('0x1d'),{'encoding':_0xce31('0x1e')})[_0xce31('0x1f')]('\x0d\x0a','');}else{var _0x1186f3=getFirstInterface();var _0x142115=getCPUhash();var _0x4d0583=_0x142115+'|'+os['hostname']()+'|'+_0x1186f3[_0xce31('0x20')]+'|'+_0x1186f3[_0xce31('0x21')];var _0x541942=crypto[_0xce31('0x14')](_0xce31('0x15'))[_0xce31('0x16')](_0x4d0583)[_0xce31('0x17')](_0xce31('0x18'));return _0x541942[_0xce31('0x22')](0x0,0x8)+'-'+_0x541942[_0xce31('0x22')](0x8,0xc)+'-'+_0x541942[_0xce31('0x22')](0xc,0x10)+'-'+_0x541942['substring'](0x10,0x14)+'-'+_0x541942[_0xce31('0x22')](0x14);}};
\ No newline at end of file
index 0e492fa..cf88fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x331f=['SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','../logger','exports','format','GET','then','catch','get','data2','data1','license','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','diff','days','DEMO\x20START\x20AT\x20%s','error','message','getUuid','findOrCreate'];(function(_0x302f93,_0x35550f){var _0x28a0ab=function(_0x564e3a){while(--_0x564e3a){_0x302f93['push'](_0x302f93['shift']());}};_0x28a0ab(++_0x35550f);}(_0x331f,0x1f0));var _0xf331=function(_0x552ec1,_0x65c220){_0x552ec1=_0x552ec1-0x0;var _0x35ec67=_0x331f[_0x552ec1];return _0x35ec67;};'use strict';var util=require(_0xf331('0x0'));var moment=require(_0xf331('0x1'));var rp=require(_0xf331('0x2'));var BPromise=require(_0xf331('0x3'));var pkginfo=require(_0xf331('0x4'))(module,_0xf331('0x5'));var db=require(_0xf331('0x6'))['db'];var encryptor=require(_0xf331('0x7'));var hardware=require('./hardware');var logger=require(_0xf331('0x8'))('license');var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x40df34){return new BPromise(function(_0x37e3fb,_0xd6bfe4){var _0x2f9b70=util['format']('%s/api/servers/%s/check?version=%s',HOST,_0x40df34,module[_0xf331('0x9')][_0xf331('0x5')]);if(oldToken){_0x2f9b70=util[_0xf331('0xa')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x40df34,module['exports'][_0xf331('0x5')],oldToken);}var _0x530fa4={'uri':_0x2f9b70,'method':_0xf331('0xb'),'timeout':0xea60,'json':!![]};return rp(_0x530fa4)[_0xf331('0xc')](function(_0x162c0b){_0x37e3fb(_0x162c0b);})[_0xf331('0xd')](function(_0x1a51aa){_0xd6bfe4(_0x1a51aa);});});}function manageLicense(_0x7024b7,_0xb668c5){var _0x141dce=_0xb668c5[_0xf331('0xe')]({'plain':!![]});if(!isOldTokenSent&&_0x141dce['data1']!==_0x7024b7&&!_0x141dce[_0xf331('0xf')]){oldToken=_0x141dce[_0xf331('0x10')];}httpRequest(_0x7024b7)[_0xf331('0xc')](function(_0x2a236f){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x2a236f['active']){isOldTokenSent=![];if(!_0x141dce[_0xf331('0x11')]&&_0x141dce[_0xf331('0x11')]!=_0x2a236f[_0xf331('0x11')]||_0x141dce[_0xf331('0x11')]&&_0x141dce[_0xf331('0xf')]){logger[_0xf331('0x12')](_0xf331('0x13'));}if(_0x141dce[_0xf331('0x11')]&&!_0x141dce['data2']&&_0x141dce['license']!=_0x2a236f[_0xf331('0x11')]){logger[_0xf331('0x12')](_0xf331('0x14'));}if(_0x141dce[_0xf331('0x11')]&&!_0x141dce['data2']&&_0x141dce[_0xf331('0x11')]==_0x2a236f[_0xf331('0x11')]){return _0xb668c5;}return _0xb668c5['update']({'data1':_0x7024b7,'data2':null,'license':_0x2a236f[_0xf331('0x11')]});}else{if(_0x2a236f['license']||_0x141dce[_0xf331('0x11')]){if(!_0x141dce[_0xf331('0xf')]){if(_0x141dce['data1']==_0x7024b7){GRAY_PERIOD_REASON=_0xf331('0x15');logger[_0xf331('0x12')](_0xf331('0x16'));}else{GRAY_PERIOD_REASON=_0xf331('0x17');logger[_0xf331('0x12')](_0xf331('0x18'),_0x141dce[_0xf331('0x10')],_0x7024b7);}logger[_0xf331('0x12')](_0xf331('0x19'),GRAY_PERIOD_REASON[_0xf331('0x1a')](),moment()[_0xf331('0xa')](_0xf331('0x1b')));return _0xb668c5[_0xf331('0x1c')]({'data2':encryptor['encryptString'](moment()['format'](_0xf331('0x1b')))});}else{if(moment()[_0xf331('0x1d')](encryptor['decryptString'](_0x141dce[_0xf331('0xf')]),_0xf331('0x1e'))>DAYS){logger[_0xf331('0x12')](_0xf331('0x1f'),moment()[_0xf331('0xa')](_0xf331('0x1b')));isOldTokenSent=![];return _0xb668c5[_0xf331('0x1c')]({'data1':_0x7024b7,'data2':null,'license':null});}}}else{if(_0x141dce[_0xf331('0x10')]!=_0x7024b7){logger[_0xf331('0x12')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x141dce[_0xf331('0x10')],_0x7024b7);return _0xb668c5['update']({'data1':_0x7024b7,'data2':null,'license':null});}}}return _0xb668c5;})[_0xf331('0xc')](function(_0x891cd5){_0xb668c5=_0x891cd5;})[_0xf331('0xd')](function(_0x4c29b5){logger[_0xf331('0x20')](_0x4c29b5[_0xf331('0x21')]);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0xb668c5);},TIME);});}function defaultLicense(){var _0x5786ae=hardware[_0xf331('0x22')]();if(_0x5786ae){return db['License'][_0xf331('0x23')]({'where':{'id':0x1},'defaults':{'data1':_0x5786ae}})['spread'](function(_0x2aae74,_0x4707d1){logger[_0xf331('0x12')](_0xf331('0x24'),_0x5786ae);manageLicense(_0x5786ae,_0x2aae74);})[_0xf331('0xd')](function(_0x7684ef){logger[_0xf331('0x20')](_0x7684ef[_0xf331('0x21')]);});}}exports[_0xf331('0x25')]=defaultLicense;
\ No newline at end of file
+var _0x6e96=['../logger','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch','data1','active','license','data2','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','decryptString','days','DEMO\x20START\x20AT\x20%s','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware'];(function(_0x11e05d,_0x3a4491){var _0x335588=function(_0x35ec3f){while(--_0x35ec3f){_0x11e05d['push'](_0x11e05d['shift']());}};_0x335588(++_0x3a4491);}(_0x6e96,0x1b0));var _0x66e9=function(_0x236907,_0x263de5){_0x236907=_0x236907-0x0;var _0x15eb29=_0x6e96[_0x236907];return _0x15eb29;};'use strict';var util=require('util');var moment=require(_0x66e9('0x0'));var rp=require(_0x66e9('0x1'));var BPromise=require(_0x66e9('0x2'));var pkginfo=require(_0x66e9('0x3'))(module,_0x66e9('0x4'));var db=require(_0x66e9('0x5'))['db'];var encryptor=require(_0x66e9('0x6'));var hardware=require(_0x66e9('0x7'));var logger=require(_0x66e9('0x8'))('license');var HOST='https://www.xcallymotion.com';var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x5c8eb6){return new BPromise(function(_0x30c86b,_0x791da6){var _0x314589=util[_0x66e9('0x9')](_0x66e9('0xa'),HOST,_0x5c8eb6,module[_0x66e9('0xb')][_0x66e9('0x4')]);if(oldToken){_0x314589=util[_0x66e9('0x9')](_0x66e9('0xc'),HOST,_0x5c8eb6,module['exports'][_0x66e9('0x4')],oldToken);}var _0x2365fd={'uri':_0x314589,'method':_0x66e9('0xd'),'timeout':0xea60,'json':!![]};return rp(_0x2365fd)[_0x66e9('0xe')](function(_0x514979){_0x30c86b(_0x514979);})[_0x66e9('0xf')](function(_0xd0e9c2){_0x791da6(_0xd0e9c2);});});}function manageLicense(_0x2b0509,_0x5b31a9){var _0x1039c9=_0x5b31a9['get']({'plain':!![]});if(!isOldTokenSent&&_0x1039c9[_0x66e9('0x10')]!==_0x2b0509&&!_0x1039c9['data2']){oldToken=_0x1039c9[_0x66e9('0x10')];}httpRequest(_0x2b0509)[_0x66e9('0xe')](function(_0x580fa2){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x580fa2[_0x66e9('0x11')]){isOldTokenSent=![];if(!_0x1039c9[_0x66e9('0x12')]&&_0x1039c9[_0x66e9('0x12')]!=_0x580fa2[_0x66e9('0x12')]||_0x1039c9[_0x66e9('0x12')]&&_0x1039c9[_0x66e9('0x13')]){logger['info'](_0x66e9('0x14'));}if(_0x1039c9[_0x66e9('0x12')]&&!_0x1039c9[_0x66e9('0x13')]&&_0x1039c9['license']!=_0x580fa2[_0x66e9('0x12')]){logger[_0x66e9('0x15')](_0x66e9('0x16'));}if(_0x1039c9[_0x66e9('0x12')]&&!_0x1039c9[_0x66e9('0x13')]&&_0x1039c9[_0x66e9('0x12')]==_0x580fa2[_0x66e9('0x12')]){return _0x5b31a9;}return _0x5b31a9[_0x66e9('0x17')]({'data1':_0x2b0509,'data2':null,'license':_0x580fa2[_0x66e9('0x12')]});}else{if(_0x580fa2[_0x66e9('0x12')]||_0x1039c9['license']){if(!_0x1039c9[_0x66e9('0x13')]){if(_0x1039c9['data1']==_0x2b0509){GRAY_PERIOD_REASON='Disabled';logger[_0x66e9('0x15')](_0x66e9('0x18'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x66e9('0x15')](_0x66e9('0x19'),_0x1039c9[_0x66e9('0x10')],_0x2b0509);}logger[_0x66e9('0x15')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x66e9('0x1a')](),moment()['format'](_0x66e9('0x1b')));return _0x5b31a9['update']({'data2':encryptor[_0x66e9('0x1c')](moment()[_0x66e9('0x9')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()['diff'](encryptor[_0x66e9('0x1d')](_0x1039c9[_0x66e9('0x13')]),_0x66e9('0x1e'))>DAYS){logger[_0x66e9('0x15')](_0x66e9('0x1f'),moment()[_0x66e9('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x5b31a9[_0x66e9('0x17')]({'data1':_0x2b0509,'data2':null,'license':null});}}}else{if(_0x1039c9[_0x66e9('0x10')]!=_0x2b0509){logger[_0x66e9('0x15')]('NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s',_0x1039c9['data1'],_0x2b0509);return _0x5b31a9[_0x66e9('0x17')]({'data1':_0x2b0509,'data2':null,'license':null});}}}return _0x5b31a9;})['then'](function(_0x12150e){_0x5b31a9=_0x12150e;})[_0x66e9('0xf')](function(_0x54532d){logger['error'](_0x54532d[_0x66e9('0x20')]);})[_0x66e9('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x66e9('0x22')](),_0x5b31a9);},TIME);});}function defaultLicense(){var _0x258ba9=hardware['getUuid']();if(_0x258ba9){return db[_0x66e9('0x23')][_0x66e9('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x258ba9}})[_0x66e9('0x25')](function(_0x6d416b,_0x304d87){logger[_0x66e9('0x15')](_0x66e9('0x26'),_0x258ba9);manageLicense(_0x258ba9,_0x6d416b);})[_0x66e9('0xf')](function(_0x2d4aad){logger['error'](_0x2d4aad[_0x66e9('0x20')]);});}}exports[_0x66e9('0x27')]=defaultLicense;
\ No newline at end of file
index ab72b13..aad9cdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ca=['Demo\x20license','Breaking\x20license','getUuid','License','find','then','catch','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','demo','uuid','machineUuid','gray','deadline','add','days','grayReason','changed','message','User','findAll','role','sequelize','COUNT','admin','user','telephone','users','telephones','count','pick','countBy','License\x20limit\x20reached\x20for\x20telephones','exports','util','moment','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z'];(function(_0x118481,_0x204650){var _0x493415=function(_0x29eb7a){while(--_0x29eb7a){_0x118481['push'](_0x118481['shift']());}};_0x493415(++_0x204650);}(_0xa2ca,0xae));var _0xaa2c=function(_0x4533a2,_0x3f88b1){_0x4533a2=_0x4533a2-0x0;var _0x24ddb1=_0xa2ca[_0x4533a2];return _0x24ddb1;};'use strict';var util=require(_0xaa2c('0x0'));var _=require('lodash');var moment=require(_0xaa2c('0x1'));var BPromise=require('bluebird');var hardware=require(_0xaa2c('0x2'));var encryptor=require(_0xaa2c('0x3'));var db=require(_0xaa2c('0x4'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xaa2c('0x5'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xaa2c('0x6'),'machineUuid':hardware['getUuid'](),'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':_0xaa2c('0x7'),'machineUuid':hardware[_0xaa2c('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x170fb3){return new BPromise(function(_0x317313,_0x54d6d5){return db[_0xaa2c('0x9')][_0xaa2c('0xa')](_['defaults'](_0x170fb3,{'raw':!![],'where':{'id':0x1}}))[_0xaa2c('0xb')](function(_0x2a702b){return checkLicense(_0x2a702b,null);})['then'](function(_0x1ac043){_0x317313(_0x1ac043);return;})[_0xaa2c('0xc')](function(_0x385568){_0x54d6d5(_0x385568);});});}function checkLicense(_0x45dda5,_0x263ce1){if(!_0x45dda5){demoLicense['uuid']=_0x45dda5[_0xaa2c('0xd')];return demoLicense;}try{var _0x1103ee=_0x263ce1||_0x45dda5['license'];if(_[_0xaa2c('0xe')](_0x1103ee)){throw new Error(_0xaa2c('0xf'));}var _0x150a93=_0x45dda5[_0xaa2c('0xd')];var _0x5a7d2d=_0x45dda5[_0xaa2c('0x10')];var _0x4d8f38=_0x150a93[_0xaa2c('0x11')]('-')[0x4];var _0x1731b8=_0x150a93['split']('-')[0x0];var _0x5541f5=encryptor[_0xaa2c('0x12')](_0x1103ee,util[_0xaa2c('0x13')]('%s:%s:%s',_0x4d8f38,_0x150a93,_0x1731b8));var _0x1870cd=JSON['parse'](_0x5541f5);_0x1870cd[_0xaa2c('0x14')]=![];_0x1870cd[_0xaa2c('0x15')]=_0x150a93;_0x1870cd[_0xaa2c('0x16')]=hardware['getUuid']();if(_0x5a7d2d){var _0x5103a1=encryptor['decryptString'](_0x5a7d2d);_0x1870cd[_0xaa2c('0x17')]=_0x5103a1;_0x1870cd[_0xaa2c('0x18')]=moment(_0x5103a1)[_0xaa2c('0x19')](0x7,_0xaa2c('0x1a'))[_0xaa2c('0x13')]();_0x1870cd[_0xaa2c('0x1b')]=_0x1870cd[_0xaa2c('0x15')]!=_0x1870cd[_0xaa2c('0x16')]?_0xaa2c('0x1c'):'disabled';}return _0x1870cd;}catch(_0x3cf0f){breakingLicense[_0xaa2c('0x15')]=_0x45dda5['data1'];breakingLicense[_0xaa2c('0x1d')]=_0x3cf0f[_0xaa2c('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0xe322c0,_0x37fa42){getLicense()['then'](function(_0x4492b8){return db[_0xaa2c('0x1e')][_0xaa2c('0x1f')]({'attributes':[_0xaa2c('0x20'),[db[_0xaa2c('0x21')]['fn'](_0xaa2c('0x22'),db['sequelize']['col'](_0xaa2c('0x20'))),'count']],'group':_0xaa2c('0x20'),'where':{'role':{'$or':[_0xaa2c('0x23'),_0xaa2c('0x24'),_0xaa2c('0x25')]}},'raw':!![]})[_0xaa2c('0xb')](function(_0x111aad){var _0x4b44a1={'user':_0x4492b8[_0xaa2c('0x26')]||0x0,'telephone':_0x4492b8[_0xaa2c('0x27')]||0x0};_0x111aad['forEach'](function(_0x3bc7b2){var _0x3b065c=_0x3bc7b2[_0xaa2c('0x20')]===_0xaa2c('0x23')?_0xaa2c('0x24'):_0x3bc7b2[_0xaa2c('0x20')];_0x4b44a1[_0x3b065c]-=_0x3bc7b2[_0xaa2c('0x28')];if(_0x4b44a1[_0x3b065c]<0x0)_0x4b44a1[_0x3b065c]=0x0;});_0xe322c0(_0x4b44a1);return;});})[_0xaa2c('0xc')](function(_0x57954a){_0x37fa42(_0x57954a);});});}function checkUserLimits(_0x38388d){return new BPromise(function(_0x24b0cf,_0x45b87d){getLimits()[_0xaa2c('0xb')](function(_0x5aa516){var _0x1fbe84=_[_0xaa2c('0x29')](_[_0xaa2c('0x2a')](_0x38388d,_0xaa2c('0x20')),['admin',_0xaa2c('0x24'),_0xaa2c('0x25')]);var _0x4583de=(_0x1fbe84['admin']||0x0)+(_0x1fbe84[_0xaa2c('0x24')]||0x0);var _0xcbdcc4=_0x1fbe84[_0xaa2c('0x25')]||0x0;if(_0x4583de>_0x5aa516[_0xaa2c('0x24')])return _0x45b87d('License\x20limit\x20reached\x20for\x20users');if(_0xcbdcc4>_0x5aa516[_0xaa2c('0x25')])return _0x45b87d(_0xaa2c('0x2b'));return _0x24b0cf();})[_0xaa2c('0xc')](function(_0x2756a8){_0x45b87d(_0x2756a8);});});}module[_0xaa2c('0x2c')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x6894=['defaults','uuid','data1','license','License\x20key\x20value\x20not\x20found','split','format','%s:%s:%s','parse','demo','machineUuid','decryptString','deadline','add','changed','disabled','then','User','findAll','sequelize','col','role','count','user','telephone','users','telephones','pick','countBy','admin','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','catch','exports','util','lodash','moment','bluebird','./hardware','../../mysqldb','2027-01-01T00:00:00.000Z','Breaking\x20license','getUuid','find'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x6894,0x7a));var _0x4689=function(_0x154192,_0x2d360f){_0x154192=_0x154192-0x0;var _0x3c2792=_0x6894[_0x154192];return _0x3c2792;};'use strict';var util=require(_0x4689('0x0'));var _=require(_0x4689('0x1'));var moment=require(_0x4689('0x2'));var BPromise=require(_0x4689('0x3'));var hardware=require(_0x4689('0x4'));var encryptor=require('../../components/encryptor');var db=require(_0x4689('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x4689('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x4689('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x4689('0x7'),'machineUuid':hardware[_0x4689('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x589369){return new BPromise(function(_0x3109c1,_0x572e62){return db['License'][_0x4689('0x9')](_[_0x4689('0xa')](_0x589369,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x276451){return checkLicense(_0x276451,null);})['then'](function(_0x1733d8){_0x3109c1(_0x1733d8);return;})['catch'](function(_0x1528ae){_0x572e62(_0x1528ae);});});}function checkLicense(_0x1cafb8,_0x599ab6){if(!_0x1cafb8){demoLicense[_0x4689('0xb')]=_0x1cafb8[_0x4689('0xc')];return demoLicense;}try{var _0x45e446=_0x599ab6||_0x1cafb8[_0x4689('0xd')];if(_['isEmpty'](_0x45e446)){throw new Error(_0x4689('0xe'));}var _0x2a655f=_0x1cafb8['data1'];var _0x5651c9=_0x1cafb8['data2'];var _0xbc38f7=_0x2a655f[_0x4689('0xf')]('-')[0x4];var _0x114f80=_0x2a655f[_0x4689('0xf')]('-')[0x0];var _0x2ada17=encryptor['decryptString'](_0x45e446,util[_0x4689('0x10')](_0x4689('0x11'),_0xbc38f7,_0x2a655f,_0x114f80));var _0x52b791=JSON[_0x4689('0x12')](_0x2ada17);_0x52b791[_0x4689('0x13')]=![];_0x52b791['uuid']=_0x2a655f;_0x52b791[_0x4689('0x14')]=hardware[_0x4689('0x8')]();if(_0x5651c9){var _0x2d8ca1=encryptor[_0x4689('0x15')](_0x5651c9);_0x52b791['gray']=_0x2d8ca1;_0x52b791[_0x4689('0x16')]=moment(_0x2d8ca1)[_0x4689('0x17')](0x7,'days')[_0x4689('0x10')]();_0x52b791['grayReason']=_0x52b791[_0x4689('0xb')]!=_0x52b791[_0x4689('0x14')]?_0x4689('0x18'):_0x4689('0x19');}return _0x52b791;}catch(_0x1bb2e9){breakingLicense['uuid']=_0x1cafb8[_0x4689('0xc')];breakingLicense['message']=_0x1bb2e9['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x248e92,_0x140759){getLicense()[_0x4689('0x1a')](function(_0x225238){return db[_0x4689('0x1b')][_0x4689('0x1c')]({'attributes':['role',[db[_0x4689('0x1d')]['fn']('COUNT',db[_0x4689('0x1d')][_0x4689('0x1e')](_0x4689('0x1f'))),_0x4689('0x20')]],'group':_0x4689('0x1f'),'where':{'role':{'$or':['admin',_0x4689('0x21'),_0x4689('0x22')]}},'raw':!![]})[_0x4689('0x1a')](function(_0x217b1d){var _0x26533e={'user':_0x225238[_0x4689('0x23')]||0x0,'telephone':_0x225238[_0x4689('0x24')]||0x0};_0x217b1d['forEach'](function(_0x3ef9c2){var _0x6a74fa=_0x3ef9c2['role']==='admin'?_0x4689('0x21'):_0x3ef9c2[_0x4689('0x1f')];_0x26533e[_0x6a74fa]-=_0x3ef9c2[_0x4689('0x20')];if(_0x26533e[_0x6a74fa]<0x0)_0x26533e[_0x6a74fa]=0x0;});_0x248e92(_0x26533e);return;});})['catch'](function(_0x16f01c){_0x140759(_0x16f01c);});});}function checkUserLimits(_0x135dfb){return new BPromise(function(_0x4c7fc3,_0x1f038f){getLimits()['then'](function(_0x50e2f5){var _0x28f2e6=_[_0x4689('0x25')](_[_0x4689('0x26')](_0x135dfb,_0x4689('0x1f')),[_0x4689('0x27'),_0x4689('0x21'),_0x4689('0x22')]);var _0x40ab66=(_0x28f2e6[_0x4689('0x27')]||0x0)+(_0x28f2e6[_0x4689('0x21')]||0x0);var _0x4403a9=_0x28f2e6[_0x4689('0x22')]||0x0;if(_0x40ab66>_0x50e2f5[_0x4689('0x21')])return _0x1f038f(_0x4689('0x28'));if(_0x4403a9>_0x50e2f5[_0x4689('0x22')])return _0x1f038f(_0x4689('0x29'));return _0x4c7fc3();})[_0x4689('0x2a')](function(_0x23ce02){_0x1f038f(_0x23ce02);});});}module[_0x4689('0x2b')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 09d83f8..afa2774 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5464=['secret','exports','http://localhost:9000','myappanuglar-secret'];(function(_0x55c9ea,_0xf80189){var _0x59d18e=function(_0x55ec90){while(--_0x55ec90){_0x55c9ea['push'](_0x55c9ea['shift']());}};_0x59d18e(++_0xf80189);}(_0x5464,0x15d));var _0x4546=function(_0x31c698,_0x1b2034){_0x31c698=_0x31c698-0x0;var _0x9ac382=_0x5464[_0x31c698];return _0x9ac382;};'use strict';module[_0x4546('0x0')]={'DOMAIN':_0x4546('0x1'),'SESSION_SECRET':_0x4546('0x2'),'GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x4546('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0xdb28=['myappanuglar-secret','app-id','exports','http://localhost:9000'];(function(_0x1a375d,_0x5ebe64){var _0x5443de=function(_0x3302f2){while(--_0x3302f2){_0x1a375d['push'](_0x1a375d['shift']());}};_0x5443de(++_0x5ebe64);}(_0xdb28,0x106));var _0x8db2=function(_0x3317f8,_0x2b0987){_0x3317f8=_0x3317f8-0x0;var _0x4e039e=_0xdb28[_0x3317f8];return _0x4e039e;};'use strict';module[_0x8db2('0x0')]={'DOMAIN':_0x8db2('0x1'),'SESSION_SECRET':_0x8db2('0x2'),'GOOGLE_ID':_0x8db2('0x3'),'GOOGLE_SECRET':'secret','DEBUG':''};
\ No newline at end of file
index cf3981c..2552e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbddf=['%s-%s','info','env','debugLevel','moment','winston','util','INFO','/var','log','xcally','}}}','replace','format','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','message','exports','Logger','transports','File','error'];(function(_0x2495cd,_0x596e32){var _0x5e489b=function(_0xb5031f){while(--_0xb5031f){_0x2495cd['push'](_0x2495cd['shift']());}};_0x5e489b(++_0x596e32);}(_0xbddf,0x12f));var _0xfbdd=function(_0x2d59ec,_0x4ad8f2){_0x2d59ec=_0x2d59ec-0x0;var _0x46a352=_0xbddf[_0x2d59ec];return _0x46a352;};'use strict';var moment=require(_0xfbdd('0x0'));var winston=require(_0xfbdd('0x1'));var util=require(_0xfbdd('0x2'));var path=require('path');var debugLevel=_0xfbdd('0x3');function filename(_0x2c8c4b,_0x58779e){return path['join'](_0xfbdd('0x4'),_0xfbdd('0x5'),_0xfbdd('0x6'),util['format']('%s-%s.log',_0x2c8c4b,_0x58779e));}function formatter(_0x1b98ec,_0x42b0c1){_0x42b0c1['message']=_0x42b0c1['message']['replace'](/@@{/g,'{{{')['replace'](/}@@/g,_0xfbdd('0x7'))[_0xfbdd('0x8')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xfbdd('0x9')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0xfbdd('0x9')](_0xfbdd('0xa')),_0x42b0c1[_0xfbdd('0xb')][_0xfbdd('0xc')](),_0x1b98ec,_0x42b0c1[_0xfbdd('0xd')]);}module[_0xfbdd('0xe')]=function(_0x3d29c9){return new winston[(_0xfbdd('0xf'))]({'transports':[new winston[(_0xfbdd('0x10'))][(_0xfbdd('0x11'))]({'name':util[_0xfbdd('0x9')]('%s-%s',_0x3d29c9,_0xfbdd('0x12')),'filename':filename(_0x3d29c9,_0xfbdd('0x12')),'level':_0xfbdd('0x12'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x49e96c){return formatter(_0x3d29c9,_0x49e96c);}}),new winston[(_0xfbdd('0x10'))]['File']({'name':util[_0xfbdd('0x9')](_0xfbdd('0x13'),_0x3d29c9,_0xfbdd('0x14')),'filename':filename(_0x3d29c9,_0xfbdd('0x14')),'level':_0xfbdd('0x14'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x4182f3){return formatter(_0x3d29c9,_0x4182f3);}}),new winston[(_0xfbdd('0x10'))]['Console']({'level':process[_0xfbdd('0x15')][_0xfbdd('0x16')]||debugLevel,'json':![],'formatter':function(_0x2ea26c){return formatter(_0x3d29c9,_0x2ea26c);}})]});};
\ No newline at end of file
+var _0xaf61=['transports','File','%s-%s','error','info','debugLevel','moment','util','path','INFO','/var','log','xcally','format','%s-%s.log','message','{{{','replace','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','exports','Logger'];(function(_0x4bf905,_0x4911c5){var _0x614bc8=function(_0x5d1f3c){while(--_0x5d1f3c){_0x4bf905['push'](_0x4bf905['shift']());}};_0x614bc8(++_0x4911c5);}(_0xaf61,0x126));var _0x1af6=function(_0x217348,_0x32a42d){_0x217348=_0x217348-0x0;var _0xaba3a0=_0xaf61[_0x217348];return _0xaba3a0;};'use strict';var moment=require(_0x1af6('0x0'));var winston=require('winston');var util=require(_0x1af6('0x1'));var path=require(_0x1af6('0x2'));var debugLevel=_0x1af6('0x3');function filename(_0x3919e6,_0x2b2912){return path['join'](_0x1af6('0x4'),_0x1af6('0x5'),_0x1af6('0x6'),util[_0x1af6('0x7')](_0x1af6('0x8'),_0x3919e6,_0x2b2912));}function formatter(_0x27ee8d,_0x2ef925){_0x2ef925[_0x1af6('0x9')]=_0x2ef925[_0x1af6('0x9')]['replace'](/@@{/g,_0x1af6('0xa'))['replace'](/}@@/g,'}}}')[_0x1af6('0xb')](/@{/g,'{{')[_0x1af6('0xb')](/}@/g,'}}');return util[_0x1af6('0x7')](_0x1af6('0xc'),moment()[_0x1af6('0x7')](_0x1af6('0xd')),_0x2ef925[_0x1af6('0xe')][_0x1af6('0xf')](),_0x27ee8d,_0x2ef925[_0x1af6('0x9')]);}module[_0x1af6('0x10')]=function(_0x3afd4a){return new winston[(_0x1af6('0x11'))]({'transports':[new winston[(_0x1af6('0x12'))][(_0x1af6('0x13'))]({'name':util[_0x1af6('0x7')](_0x1af6('0x14'),_0x3afd4a,_0x1af6('0x15')),'filename':filename(_0x3afd4a,_0x1af6('0x15')),'level':_0x1af6('0x15'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x482f36){return formatter(_0x3afd4a,_0x482f36);}}),new winston[(_0x1af6('0x12'))][(_0x1af6('0x13'))]({'name':util['format'](_0x1af6('0x14'),_0x3afd4a,_0x1af6('0x16')),'filename':filename(_0x3afd4a,_0x1af6('0x16')),'level':_0x1af6('0x16'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x175bc5){return formatter(_0x3afd4a,_0x175bc5);}}),new winston['transports']['Console']({'level':process['env'][_0x1af6('0x17')]||debugLevel,'json':![],'formatter':function(_0x52bdb5){return formatter(_0x3afd4a,_0x52bdb5);}})]});};
\ No newline at end of file
index d8bd6c4..d8eee2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd14c=['agi','email','../../services/email/index.js','routing','xdr','exports','path','express','join','../../services/express/index.js','ami','../../services/ami/index.js'];(function(_0x2393c0,_0x5d5d61){var _0x188aa9=function(_0x330de9){while(--_0x330de9){_0x2393c0['push'](_0x2393c0['shift']());}};_0x188aa9(++_0x5d5d61);}(_0xd14c,0x16e));var _0xcd14=function(_0x3e6707,_0x37475e){_0x3e6707=_0x3e6707-0x0;var _0x12b38d=_0xd14c[_0x3e6707];return _0x12b38d;};'use strict';var path=require(_0xcd14('0x0'));var os=require('os');var config={'apps':[{'name':_0xcd14('0x1'),'script':path[_0xcd14('0x2')](__dirname,_0xcd14('0x3'))},{'name':_0xcd14('0x4'),'script':path['join'](__dirname,_0xcd14('0x5'))},{'name':_0xcd14('0x6'),'script':path[_0xcd14('0x2')](__dirname,'../../services/agi/index.js')},{'name':_0xcd14('0x7'),'script':path[_0xcd14('0x2')](__dirname,_0xcd14('0x8'))},{'name':_0xcd14('0x9'),'script':path[_0xcd14('0x2')](__dirname,'../../services/routing/index.js')},{'name':_0xcd14('0xa'),'script':path[_0xcd14('0x2')](__dirname,'../../services/xdr/index.js')}]};module[_0xcd14('0xb')]=config;
\ No newline at end of file
+var _0xe490=['xdr','../../services/xdr/index.js','exports','path','express','join','../../services/express/index.js','ami','../../services/agi/index.js','email','../../services/email/index.js','routing'];(function(_0x584283,_0x4226cb){var _0x5b254c=function(_0x84b21e){while(--_0x84b21e){_0x584283['push'](_0x584283['shift']());}};_0x5b254c(++_0x4226cb);}(_0xe490,0x7b));var _0x0e49=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xe490[_0x3b380d];return _0x54502b;};'use strict';var path=require(_0x0e49('0x0'));var os=require('os');var config={'apps':[{'name':_0x0e49('0x1'),'script':path[_0x0e49('0x2')](__dirname,_0x0e49('0x3'))},{'name':_0x0e49('0x4'),'script':path[_0x0e49('0x2')](__dirname,'../../services/ami/index.js')},{'name':'agi','script':path[_0x0e49('0x2')](__dirname,_0x0e49('0x5'))},{'name':_0x0e49('0x6'),'script':path['join'](__dirname,_0x0e49('0x7'))},{'name':_0x0e49('0x8'),'script':path['join'](__dirname,'../../services/routing/index.js')},{'name':_0x0e49('0x9'),'script':path[_0x0e49('0x2')](__dirname,_0x0e49('0xa'))}]};module[_0x0e49('0xb')]=config;
\ No newline at end of file
index 574fad3..cf26e6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb2=['disconnect','stop','restart','list','describe','delete','dump','saved','pm2','bluebird','connect','connected','start','then'];(function(_0x3005d5,_0xf588c7){var _0x547c7e=function(_0x4514dc){while(--_0x4514dc){_0x3005d5['push'](_0x3005d5['shift']());}};_0x547c7e(++_0xf588c7);}(_0x9cb2,0x14a));var _0x29cb=function(_0x359b45,_0x40f922){_0x359b45=_0x359b45-0x0;var _0x4798a0=_0x9cb2[_0x359b45];return _0x4798a0;};'use strict';var pm2=require(_0x29cb('0x0'));var BPromise=require(_0x29cb('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x31c64b,_0x4d66f1){return pm2[_0x29cb('0x2')](function(_0x44ab3f){if(_0x44ab3f){return _0x4d66f1(_0x44ab3f);}return _0x31c64b(_0x29cb('0x3'));});});};exports[_0x29cb('0x4')]=function(_0x51a08a){return connect()[_0x29cb('0x5')](function(){return new BPromise(function(_0x171dd3,_0x325f7a){return pm2[_0x29cb('0x4')](_0x51a08a,function(_0x4e2363,_0x5066e4){if(_0x4e2363){return _0x325f7a(_0x4e2363);}pm2[_0x29cb('0x6')]();return _0x171dd3(_0x5066e4);});});});};exports[_0x29cb('0x7')]=function(_0x4f2a2a){return connect()[_0x29cb('0x5')](function(){return new BPromise(function(_0x151148,_0x1ac3f1){return pm2[_0x29cb('0x7')](_0x4f2a2a,function(_0x27a4b3,_0x263c97){if(_0x27a4b3){return _0x1ac3f1(_0x27a4b3);}pm2[_0x29cb('0x6')]();return _0x151148(_0x263c97);});});});};exports[_0x29cb('0x8')]=function(_0x160d8b){return connect()['then'](function(){return new BPromise(function(_0x2bd45b,_0x58a429){return pm2[_0x29cb('0x8')](_0x160d8b,function(_0x543fbb,_0x527c31){if(_0x543fbb){return _0x58a429(_0x543fbb);}pm2['disconnect']();return _0x2bd45b(_0x527c31);});});});};exports[_0x29cb('0x9')]=function(){return connect()[_0x29cb('0x5')](function(){return new BPromise(function(_0x22d109,_0x452f3e){return pm2[_0x29cb('0x9')](function(_0x28417a,_0x13f8c6){if(_0x28417a){return _0x452f3e(_0x28417a);}pm2[_0x29cb('0x6')]();return _0x22d109(_0x13f8c6);});});});};exports[_0x29cb('0xa')]=function(_0x218a5c){return connect()[_0x29cb('0x5')](function(){return new BPromise(function(_0x815f2b,_0x21316b){return pm2['describe'](_0x218a5c,function(_0x303668,_0x1a99ed){if(_0x303668){return _0x21316b(_0x303668);}pm2[_0x29cb('0x6')]();return _0x815f2b(_0x1a99ed);});});});};exports[_0x29cb('0xb')]=function(_0x65ac90){return connect()[_0x29cb('0x5')](function(){return new BPromise(function(_0x3c157b,_0x44089e){return pm2[_0x29cb('0xb')](_0x65ac90,function(_0x3497be,_0x24d39c){if(_0x3497be){return _0x44089e(_0x3497be);}pm2[_0x29cb('0x6')]();return _0x3c157b(_0x24d39c);});});});};exports[_0x29cb('0xc')]=function(){return connect()[_0x29cb('0x5')](function(){return new BPromise(function(_0x46ffba,_0x45415e){return pm2[_0x29cb('0xc')](function(_0x33b439){if(_0x33b439){return _0x45415e(_0x33b439);}return _0x46ffba(_0x29cb('0xd'));});});});};
\ No newline at end of file
+var _0x207e=['bluebird','./config','connect','connected','start','disconnect','then','stop','restart','list','describe','delete','dump'];(function(_0x454018,_0x46e33a){var _0x24697d=function(_0x3ec647){while(--_0x3ec647){_0x454018['push'](_0x454018['shift']());}};_0x24697d(++_0x46e33a);}(_0x207e,0x1c7));var _0xe207=function(_0x234637,_0x4bd143){_0x234637=_0x234637-0x0;var _0x3144c6=_0x207e[_0x234637];return _0x3144c6;};'use strict';var pm2=require('pm2');var BPromise=require(_0xe207('0x0'));var config=require(_0xe207('0x1'));function connect(){return new BPromise(function(_0x265db7,_0x2dfde8){return pm2[_0xe207('0x2')](function(_0x2a40fb){if(_0x2a40fb){return _0x2dfde8(_0x2a40fb);}return _0x265db7(_0xe207('0x3'));});});};exports['start']=function(_0x1af219){return connect()['then'](function(){return new BPromise(function(_0x41f3e5,_0xb27422){return pm2[_0xe207('0x4')](_0x1af219,function(_0x78e1e6,_0x412260){if(_0x78e1e6){return _0xb27422(_0x78e1e6);}pm2[_0xe207('0x5')]();return _0x41f3e5(_0x412260);});});});};exports['stop']=function(_0x4ddf62){return connect()[_0xe207('0x6')](function(){return new BPromise(function(_0x5a0762,_0x5aeeeb){return pm2[_0xe207('0x7')](_0x4ddf62,function(_0xa673a9,_0x133f06){if(_0xa673a9){return _0x5aeeeb(_0xa673a9);}pm2[_0xe207('0x5')]();return _0x5a0762(_0x133f06);});});});};exports['restart']=function(_0x1f5f87){return connect()[_0xe207('0x6')](function(){return new BPromise(function(_0x2df325,_0x12f6f6){return pm2[_0xe207('0x8')](_0x1f5f87,function(_0x4f7816,_0xfd7e39){if(_0x4f7816){return _0x12f6f6(_0x4f7816);}pm2[_0xe207('0x5')]();return _0x2df325(_0xfd7e39);});});});};exports[_0xe207('0x9')]=function(){return connect()['then'](function(){return new BPromise(function(_0x4573c8,_0x107242){return pm2[_0xe207('0x9')](function(_0x533ff5,_0x59bff0){if(_0x533ff5){return _0x107242(_0x533ff5);}pm2[_0xe207('0x5')]();return _0x4573c8(_0x59bff0);});});});};exports[_0xe207('0xa')]=function(_0x931daa){return connect()['then'](function(){return new BPromise(function(_0x3ff978,_0x412224){return pm2['describe'](_0x931daa,function(_0x4c6d50,_0x2afbde){if(_0x4c6d50){return _0x412224(_0x4c6d50);}pm2[_0xe207('0x5')]();return _0x3ff978(_0x2afbde);});});});};exports['delete']=function(_0x16cb29){return connect()[_0xe207('0x6')](function(){return new BPromise(function(_0x483f36,_0x18dba6){return pm2[_0xe207('0xb')](_0x16cb29,function(_0x4770c2,_0xb9c46f){if(_0x4770c2){return _0x18dba6(_0x4770c2);}pm2[_0xe207('0x5')]();return _0x483f36(_0xb9c46f);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x27b0b1,_0x5dabc3){return pm2[_0xe207('0xc')](function(_0x36bcb7){if(_0x36bcb7){return _0x5dabc3(_0x36bcb7);}return _0x27b0b1('saved');});});});};
\ No newline at end of file
index b1c8325..6db4d0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb070=['inspect','start','lodash','moment','ioredis','util','../../config/environment','../logger','schedule','redis','defaults','socket.io-emitter','Setting','chatTimeout','then','ChatInteraction','lastMsgAt','subtract','minutes','map','[CHAT]\x20Interactions\x20to\x20close:','join','system','format','YYYY-MM-DD\x20HH:mm:ss','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions'];(function(_0x31abee,_0x11ff0c){var _0x3c1761=function(_0x2b5062){while(--_0x2b5062){_0x31abee['push'](_0x31abee['shift']());}};_0x3c1761(++_0x11ff0c);}(_0xb070,0x1c2));var _0x0b07=function(_0x55452a,_0x49582f){_0x55452a=_0x55452a-0x0;var _0x26d5e6=_0xb070[_0x55452a];return _0x26d5e6;};'use strict';var _=require(_0x0b07('0x0'));var moment=require(_0x0b07('0x1'));var Redis=require(_0x0b07('0x2'));var util=require(_0x0b07('0x3'));var config=require(_0x0b07('0x4'));var db=require('../../mysqldb')['db'];var logger=require(_0x0b07('0x5'))(_0x0b07('0x6'));config[_0x0b07('0x7')]=_[_0x0b07('0x8')](config[_0x0b07('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x0b07('0x9'))(new Redis(config[_0x0b07('0x7')]));function closeInteractions(){var _0x2fc5cc=0x0;var _0x5bcd83=[];return db[_0x0b07('0xa')]['find']({'raw':!![],'attributes':['id',_0x0b07('0xb')],'where':{'id':0x1}})[_0x0b07('0xc')](function(_0xbea503){_0x2fc5cc=_0xbea503[_0x0b07('0xb')];if(_0x2fc5cc){return db[_0x0b07('0xd')]['findAll']({'raw':!![],'attributes':['id',_0x0b07('0xe')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x0b07('0xf')](_0xbea503[_0x0b07('0xb')],_0x0b07('0x10'))}}});}else{return[];}})[_0x0b07('0xc')](function(_0x50afde){if(_0x50afde&&_0x50afde['length']){_0x5bcd83=_[_0x0b07('0x11')](_0x50afde||[],'id');logger['info'](_0x0b07('0x12'),_0x5bcd83[_0x0b07('0x13')]());return db[_0x0b07('0xd')]['update']({'closeReason':_0x0b07('0x14'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x0b07('0x15')](_0x0b07('0x16'))},{'where':{'id':_0x5bcd83}});}})[_0x0b07('0xc')](function(){if(_0x5bcd83&&_0x5bcd83[_0x0b07('0x17')]){logger['info'](_0x0b07('0x18'),_0x5bcd83[_0x0b07('0x13')]());for(var _0x47b814=0x0;_0x47b814<_0x5bcd83[_0x0b07('0x17')];_0x47b814++){io[_0x0b07('0x19')](_0x0b07('0x1a'),{'id':_0x5bcd83[_0x47b814],'closed':!![]});}}})[_0x0b07('0x1b')](function(_0x3ccddf){logger[_0x0b07('0x1c')](_0x0b07('0x1d'),_0x3ccddf?util[_0x0b07('0x1e')](_0x3ccddf,{'showHidden':![],'depth':null}):'');});}exports[_0x0b07('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x51e5=['info','[CHAT]\x20Interactions\x20to\x20close:','join','update','system','timeout','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','[CHAT]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../mysqldb','redis','localhost','socket.io-emitter','Setting','find','then','chatTimeout','ChatInteraction','lastMsgAt','subtract','length','map'];(function(_0x45e98f,_0x3d3314){var _0xcc5ff6=function(_0x3b94c9){while(--_0x3b94c9){_0x45e98f['push'](_0x45e98f['shift']());}};_0xcc5ff6(++_0x3d3314);}(_0x51e5,0x12e));var _0x551e=function(_0x44cf54,_0x3230ee){_0x44cf54=_0x44cf54-0x0;var _0xa337b9=_0x51e5[_0x44cf54];return _0xa337b9;};'use strict';var _=require(_0x551e('0x0'));var moment=require(_0x551e('0x1'));var Redis=require(_0x551e('0x2'));var util=require(_0x551e('0x3'));var config=require('../../config/environment');var db=require(_0x551e('0x4'))['db'];var logger=require('../logger')('schedule');config[_0x551e('0x5')]=_['defaults'](config[_0x551e('0x5')],{'host':_0x551e('0x6'),'port':0x18eb});var io=require(_0x551e('0x7'))(new Redis(config[_0x551e('0x5')]));function closeInteractions(){var _0x5ebed8=0x0;var _0x5b1d82=[];return db[_0x551e('0x8')][_0x551e('0x9')]({'raw':!![],'attributes':['id','chatTimeout'],'where':{'id':0x1}})[_0x551e('0xa')](function(_0x21d505){_0x5ebed8=_0x21d505[_0x551e('0xb')];if(_0x5ebed8){return db[_0x551e('0xc')]['findAll']({'raw':!![],'attributes':['id',_0x551e('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x551e('0xe')](_0x21d505[_0x551e('0xb')],'minutes')}}});}else{return[];}})[_0x551e('0xa')](function(_0x1479c5){if(_0x1479c5&&_0x1479c5[_0x551e('0xf')]){_0x5b1d82=_[_0x551e('0x10')](_0x1479c5||[],'id');logger[_0x551e('0x11')](_0x551e('0x12'),_0x5b1d82[_0x551e('0x13')]());return db[_0x551e('0xc')][_0x551e('0x14')]({'closeReason':_0x551e('0x15'),'disposition':_0x551e('0x16'),'closed':!![],'closedAt':moment()['format'](_0x551e('0x17'))},{'where':{'id':_0x5b1d82}});}})[_0x551e('0xa')](function(){if(_0x5b1d82&&_0x5b1d82[_0x551e('0xf')]){logger['info'](_0x551e('0x18'),_0x5b1d82['join']());for(var _0x2625ee=0x0;_0x2625ee<_0x5b1d82[_0x551e('0xf')];_0x2625ee++){io[_0x551e('0x19')]('chatInteraction:update',{'id':_0x5b1d82[_0x2625ee],'closed':!![]});}}})['catch'](function(_0x2b381b){logger['error'](_0x551e('0x1a'),_0x2b381b?util[_0x551e('0x1b')](_0x2b381b,{'showHidden':![],'depth':null}):'');});}exports[_0x551e('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 62b8136..7df7450 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfd2=['start','add\x20cron','stop\x20cron','startAt','update','update\x20cron','run','util','path','lodash','moment','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Smtp','service','host','MailAccount','port','secure','authentication','auth','user','format','\x22%s\x22\x20<%s>','email','bcc','name','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','zip','existsSync','Sent','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','stringify','status','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','error','error\x20mail','email\x20sent','catch','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','keys','jobs','map','toString','keyBy','difference','length','exists','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','add'];(function(_0xa5fae3,_0x496af2){var _0xd23c48=function(_0x5539a3){while(--_0x5539a3){_0xa5fae3['push'](_0xa5fae3['shift']());}};_0xd23c48(++_0x496af2);}(_0xbfd2,0x1dd));var _0x2bfd=function(_0x398457,_0x5ba635){_0x398457=_0x398457-0x0;var _0x7a6f2c=_0xbfd2[_0x398457];return _0x7a6f2c;};'use strict';var fs=require('fs');var util=require(_0x2bfd('0x0'));var path=require(_0x2bfd('0x1'));var _=require(_0x2bfd('0x2'));var moment=require(_0x2bfd('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x2bfd('0x4'));var BPromise=require(_0x2bfd('0x5'));var logger=require(_0x2bfd('0x6'))('schedule');var db=require(_0x2bfd('0x7'))['db'];var analyticCustomReportController=require(_0x2bfd('0x8'));var analyticDefaultReportController=require(_0x2bfd('0x9'));var client=jayson[_0x2bfd('0xa')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x3ca09b,_0x411ab0){return function(){logger[_0x2bfd('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x3ca09b['email']);var _0x4befb4=!![];var _0x5898b9={'tls':{'rejectUnauthorized':![]}};if(_0x3ca09b['MailAccount'][_0x2bfd('0xc')][_0x2bfd('0xd')]){_0x5898b9[_0x2bfd('0xd')]=_0x3ca09b['MailAccount'][_0x2bfd('0xc')][_0x2bfd('0xd')];}else{_0x5898b9[_0x2bfd('0xe')]=_0x3ca09b[_0x2bfd('0xf')]['Smtp'][_0x2bfd('0xe')];_0x5898b9[_0x2bfd('0x10')]=_0x3ca09b[_0x2bfd('0xf')][_0x2bfd('0xc')][_0x2bfd('0x10')];_0x5898b9[_0x2bfd('0x11')]=_0x3ca09b[_0x2bfd('0xf')][_0x2bfd('0xc')]['secure'];}if(_0x3ca09b[_0x2bfd('0xf')][_0x2bfd('0xc')][_0x2bfd('0x12')]){_0x5898b9[_0x2bfd('0x13')]={'user':_0x3ca09b[_0x2bfd('0xf')]['Smtp'][_0x2bfd('0x14')],'pass':_0x3ca09b[_0x2bfd('0xf')][_0x2bfd('0xc')]['pass']};}var _0x180a27={'account':_0x5898b9,'message':{'from':util[_0x2bfd('0x15')](_0x2bfd('0x16'),_0x3ca09b[_0x2bfd('0xf')]['name'],_0x3ca09b[_0x2bfd('0xf')][_0x2bfd('0x17')]||_0x3ca09b['MailAccount'][_0x2bfd('0xc')][_0x2bfd('0x14')]),'to':_0x3ca09b[_0x2bfd('0x17')],'cc':_0x3ca09b['cc'],'bcc':_0x3ca09b[_0x2bfd('0x18')],'subject':util[_0x2bfd('0x15')]('Report\x20%s\x20last\x20%s\x20%s',_0x411ab0[_0x2bfd('0x19')],_0x3ca09b[_0x2bfd('0x1a')],_0x3ca09b[_0x2bfd('0x1b')])}};var _0x26dc97=path[_0x2bfd('0x1c')](__dirname,'../../files/reports');var _0x282334=_0x411ab0[_0x2bfd('0x1d')];var _0x51224f=util[_0x2bfd('0x15')](_0x2bfd('0x1e'),path[_0x2bfd('0x1f')](_0x411ab0[_0x2bfd('0x1d')],path[_0x2bfd('0x20')](_0x411ab0[_0x2bfd('0x1d')])),_0x2bfd('0x21'));var _0x4b6d7d=path[_0x2bfd('0x1c')](_0x26dc97,_0x282334);var _0x5daa81=path['join'](_0x26dc97,_0x51224f);if(fs[_0x2bfd('0x22')](_0x4b6d7d)){_0x411ab0['status']=_0x2bfd('0x23');_0x180a27[_0x2bfd('0x24')][_0x2bfd('0x25')]=[{'filename':_0x282334,'path':_0x4b6d7d}];_0x180a27[_0x2bfd('0x24')][_0x2bfd('0x26')]=util[_0x2bfd('0x15')](_0x2bfd('0x27'),JSON[_0x2bfd('0x28')](_0x411ab0,null,0x2));}else if(fs[_0x2bfd('0x22')](_0x5daa81)){_0x411ab0[_0x2bfd('0x29')]=_0x2bfd('0x23');_0x180a27[_0x2bfd('0x24')][_0x2bfd('0x25')]=[{'filename':_0x51224f,'path':_0x5daa81}];}else{_0x180a27[_0x2bfd('0x24')][_0x2bfd('0x26')]=_0x2bfd('0x2a');if(!_0x3ca09b[_0x2bfd('0x2b')]){_0x4befb4=![];logger[_0x2bfd('0xb')](_0x2bfd('0x2c'));}}if(_0x4befb4){return client[_0x2bfd('0x2d')]('SendMail',_0x180a27)['then'](function(_0x1148aa){if(_0x1148aa[_0x2bfd('0x2e')]){return logger[_0x2bfd('0x2e')](_0x2bfd('0x2f'),JSON[_0x2bfd('0x28')](_0x1148aa));}return logger[_0x2bfd('0xb')](_0x2bfd('0x30'));})[_0x2bfd('0x31')](function(_0x1ead0e){return logger['error']('error\x20mail',JSON['stringify'](_0x1ead0e));});}};}function handleError(){return function(_0x5ebc75){return logger[_0x2bfd('0x2e')](JSON[_0x2bfd('0x28')](_0x5ebc75));};}function handleResult(_0x4e0d29){return function(_0x465cb1){logger[_0x2bfd('0xb')]('data',JSON[_0x2bfd('0x28')](_0x465cb1));if(_0x4e0d29[_0x2bfd('0xf')]&&_0x4e0d29[_0x2bfd('0xf')]['Smtp']&&!_[_0x2bfd('0x32')](_0x4e0d29[_0x2bfd('0x17')])){setTimeout(handleSendEmail(_0x4e0d29,_0x465cb1),0x3c*0x3e8);}};}function handleJob(_0x57987c){return function(){try{if(_[_0x2bfd('0x32')](_0x57987c['subtractNumber'])){return logger[_0x2bfd('0xb')](_0x2bfd('0x33'));}if(_[_0x2bfd('0x32')](_0x57987c[_0x2bfd('0x1b')])){return logger[_0x2bfd('0xb')]('subtractUnit\x20null\x20or\x20undefined');}var _0x2daf32={'startDate':moment()[_0x2bfd('0x34')](_0x57987c[_0x2bfd('0x1a')],_0x57987c[_0x2bfd('0x1b')])[_0x2bfd('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x2bfd('0x15')](_0x2bfd('0x35')),'type':_0x2bfd('0x36'),'output':_0x57987c[_0x2bfd('0x37')],'name':_0x57987c[_0x2bfd('0x19')]};if(!_[_0x2bfd('0x32')](_0x57987c[_0x2bfd('0x38')])){logger[_0x2bfd('0xb')](_0x2bfd('0x39'),_0x57987c[_0x2bfd('0x38')]);return analyticDefaultReportController[_0x2bfd('0x3a')]({'id':_0x57987c[_0x2bfd('0x38')]},_0x2daf32)[_0x2bfd('0x3b')](handleResult(_0x57987c))[_0x2bfd('0x31')](handleError());}if(!_['isNil'](_0x57987c[_0x2bfd('0x3c')])){logger[_0x2bfd('0xb')](_0x2bfd('0x3d'),_0x57987c[_0x2bfd('0x3c')]);return analyticCustomReportController['runReport']({'id':_0x57987c[_0x2bfd('0x3c')]},_0x2daf32)[_0x2bfd('0x3b')](handleResult(_0x57987c))[_0x2bfd('0x31')](handleError());}}catch(_0x271948){logger[_0x2bfd('0x2e')](JSON[_0x2bfd('0x28')](_0x271948));}return logger[_0x2bfd('0xb')](_0x2bfd('0x3e'));};}function getJobs(_0x534c48){var _0x3c2ae0={};if(_0x534c48){_0x3c2ae0['id']=_0x534c48;}return db[_0x2bfd('0x3f')][_0x2bfd('0x40')]({'where':_0x3c2ae0,'include':[{'model':db['MailAccount'],'attributes':['id',_0x2bfd('0x19'),'email'],'include':[{'model':db[_0x2bfd('0x41')],'as':_0x2bfd('0xc')}]}]})[_0x2bfd('0x3b')](function(_0x9042b7){var _0x2fcdf3=_[_0x2bfd('0x42')](manager[_0x2bfd('0x43')]);var _0x3e0f58=_[_0x2bfd('0x44')](_0x9042b7,function(_0x3c4a46){return _0x3c4a46['id'][_0x2bfd('0x45')]();});var _0x6aa76b=_[_0x2bfd('0x46')](_0x9042b7,function(_0x418ba0){return _0x418ba0['id'][_0x2bfd('0x45')]();});var _0xbad04=_0x534c48?_0x3e0f58:_[_0x2bfd('0x47')](_0x3e0f58,_0x2fcdf3);var _0x4511ff=_['intersection'](_0x3e0f58,_0x2fcdf3);var _0x585eb2=_[_0x2bfd('0x47')](_0x2fcdf3,_0x3e0f58);var _0x5a051b;var _0x2bb72d;for(_0x5a051b=0x0;_0x5a051b<_0x585eb2[_0x2bfd('0x48')]&&!_0x534c48;_0x5a051b+=0x1){_0x2bb72d=_0x585eb2[_0x5a051b][_0x2bfd('0x45')]();if(manager[_0x2bfd('0x49')](_0x2bb72d)){manager[_0x2bfd('0x4a')](_0x2bb72d);manager[_0x2bfd('0x4b')](_0x2bb72d);logger[_0x2bfd('0xb')](_0x2bfd('0x4c'),_0x2bb72d);}}logger[_0x2bfd('0xb')](_0x2bfd('0x4d'),JSON[_0x2bfd('0x28')](_0xbad04));for(_0x5a051b=0x0;_0x5a051b<_0xbad04[_0x2bfd('0x48')];_0x5a051b+=0x1){_0x2bb72d=_0xbad04[_0x5a051b][_0x2bfd('0x45')]();logger[_0x2bfd('0xb')](_0x2bfd('0x4e'),_0x2bb72d);if(_0x534c48){logger[_0x2bfd('0xb')](_0x2bfd('0x4f'),_0x534c48);logger[_0x2bfd('0xb')](JSON['stringify'](_0x6aa76b[_0x2bb72d]));BPromise[_0x2bfd('0x50')]()['then'](handleJob(_0x6aa76b[_0x2bb72d]));logger[_0x2bfd('0xb')](_0x2bfd('0x51'),_0x6aa76b[_0x2bb72d]['name'],_0x6aa76b[_0x2bb72d]['cron']);}else if(_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')]&&_0x6aa76b[_0x2bb72d][_0x2bfd('0x53')]&&moment()[_0x2bfd('0x54')](_0x6aa76b[_0x2bb72d]['startAt'],_0x6aa76b[_0x2bb72d][_0x2bfd('0x55')])){manager[_0x2bfd('0x56')](_0x2bb72d,_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')],handleJob(_0x6aa76b[_0x2bb72d]));manager[_0x2bfd('0x57')](_0x2bb72d);logger[_0x2bfd('0xb')](_0x2bfd('0x58'),_0x6aa76b[_0x2bb72d]['name'],_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')]);}else if(manager[_0x2bfd('0x49')](_0x2bb72d)){manager['stop'](_0x2bb72d);manager[_0x2bfd('0x4b')](_0x2bb72d);logger[_0x2bfd('0xb')](_0x2bfd('0x59'),_0x6aa76b[_0x2bb72d][_0x2bfd('0x19')],_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')]);}}for(_0x5a051b=0x0,_0x2bb72d;_0x5a051b<_0x4511ff['length']&&!_0x534c48;_0x5a051b+=0x1){_0x2bb72d=_0x4511ff[_0x5a051b][_0x2bfd('0x45')]();if(manager[_0x2bfd('0x49')](_0x2bb72d)){if(_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')]&&_0x6aa76b[_0x2bb72d]['active']&&moment()[_0x2bfd('0x54')](_0x6aa76b[_0x2bb72d][_0x2bfd('0x5a')],_0x6aa76b[_0x2bb72d][_0x2bfd('0x55')])){manager[_0x2bfd('0x5b')](_0x2bb72d,_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')],handleJob(_0x6aa76b[_0x2bb72d]));logger['info'](_0x2bfd('0x5c'),_0x6aa76b[_0x2bb72d][_0x2bfd('0x19')],_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')]);}else{manager['stop'](_0x2bb72d);manager[_0x2bfd('0x4b')](_0x2bb72d);logger[_0x2bfd('0xb')](_0x2bfd('0x59'),_0x6aa76b[_0x2bb72d][_0x2bfd('0x19')],_0x6aa76b[_0x2bb72d][_0x2bfd('0x52')]);}}}})[_0x2bfd('0x31')](function(_0x16398a){logger[_0x2bfd('0x2e')](JSON[_0x2bfd('0x28')](_0x16398a));});}exports[_0x2bfd('0x5d')]=function(_0x55690d){return getJobs(_0x55690d);};exports['start']=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x28f9=['keyBy','difference','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','start','add\x20cron','exists','stop','stop\x20cron','startAt','update','update\x20cron','deleteJob','run','util','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','MailAccount','service','Smtp','host','port','secure','authentication','auth','user','pass','name','email','bcc','format','Report\x20%s\x20last\x20%s\x20%s','subtractUnit','../../files/reports','%s.%s','basename','savename','extname','zip','join','status','attachments','message','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','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','stringify','isNil','subtractNumber\x20null\x20or\x20undefined','subtract','subtractNumber','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','runReport','CustomReportId','no\x20report\x20id','Schedule','findAll','keys','map','toString'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0x28f9,0xbf));var _0x928f=function(_0x1866d3,_0x1e5790){_0x1866d3=_0x1866d3-0x0;var _0x319a77=_0x28f9[_0x1866d3];return _0x319a77;};'use strict';var fs=require('fs');var util=require(_0x928f('0x0'));var path=require('path');var _=require('lodash');var moment=require('moment');var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x928f('0x1'))('schedule');var db=require(_0x928f('0x2'))['db'];var analyticCustomReportController=require(_0x928f('0x3'));var analyticDefaultReportController=require(_0x928f('0x4'));var client=jayson[_0x928f('0x5')][_0x928f('0x6')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x52fa6e,_0x545a56){return function(){logger[_0x928f('0x7')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x52fa6e['email']);var _0x2eaf79=!![];var _0x5a98b1={'tls':{'rejectUnauthorized':![]}};if(_0x52fa6e[_0x928f('0x8')]['Smtp'][_0x928f('0x9')]){_0x5a98b1[_0x928f('0x9')]=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x9')];}else{_0x5a98b1[_0x928f('0xb')]=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0xb')];_0x5a98b1['port']=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0xc')];_0x5a98b1[_0x928f('0xd')]=_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0xd')];}if(_0x52fa6e['MailAccount'][_0x928f('0xa')][_0x928f('0xe')]){_0x5a98b1[_0x928f('0xf')]={'user':_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x10')],'pass':_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x11')]};}var _0x486446={'account':_0x5a98b1,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x52fa6e[_0x928f('0x8')][_0x928f('0x12')],_0x52fa6e[_0x928f('0x8')]['email']||_0x52fa6e[_0x928f('0x8')][_0x928f('0xa')][_0x928f('0x10')]),'to':_0x52fa6e[_0x928f('0x13')],'cc':_0x52fa6e['cc'],'bcc':_0x52fa6e[_0x928f('0x14')],'subject':util[_0x928f('0x15')](_0x928f('0x16'),_0x545a56[_0x928f('0x12')],_0x52fa6e['subtractNumber'],_0x52fa6e[_0x928f('0x17')])}};var _0x1fed62=path['join'](__dirname,_0x928f('0x18'));var _0x263279=_0x545a56['savename'];var _0x1e054f=util[_0x928f('0x15')](_0x928f('0x19'),path[_0x928f('0x1a')](_0x545a56[_0x928f('0x1b')],path[_0x928f('0x1c')](_0x545a56['savename'])),_0x928f('0x1d'));var _0xeb8896=path[_0x928f('0x1e')](_0x1fed62,_0x263279);var _0xc473ae=path[_0x928f('0x1e')](_0x1fed62,_0x1e054f);if(fs['existsSync'](_0xeb8896)){_0x545a56[_0x928f('0x1f')]='Sent';_0x486446['message'][_0x928f('0x20')]=[{'filename':_0x263279,'path':_0xeb8896}];_0x486446[_0x928f('0x21')][_0x928f('0x22')]=util[_0x928f('0x15')](_0x928f('0x23'),JSON['stringify'](_0x545a56,null,0x2));}else if(fs[_0x928f('0x24')](_0xc473ae)){_0x545a56['status']=_0x928f('0x25');_0x486446[_0x928f('0x21')][_0x928f('0x20')]=[{'filename':_0x1e054f,'path':_0xc473ae}];}else{_0x486446['message'][_0x928f('0x22')]='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x52fa6e[_0x928f('0x26')]){_0x2eaf79=![];logger[_0x928f('0x7')](_0x928f('0x27'));}}if(_0x2eaf79){return client[_0x928f('0x28')](_0x928f('0x29'),_0x486446)[_0x928f('0x2a')](function(_0x48751b){if(_0x48751b[_0x928f('0x2b')]){return logger[_0x928f('0x2b')](_0x928f('0x2c'),JSON['stringify'](_0x48751b));}return logger['info'](_0x928f('0x2d'));})[_0x928f('0x2e')](function(_0x32f44c){return logger[_0x928f('0x2b')](_0x928f('0x2c'),JSON[_0x928f('0x2f')](_0x32f44c));});}};}function handleError(){return function(_0x1d69c5){return logger[_0x928f('0x2b')](JSON[_0x928f('0x2f')](_0x1d69c5));};}function handleResult(_0x3965b8){return function(_0x3b8018){logger[_0x928f('0x7')]('data',JSON[_0x928f('0x2f')](_0x3b8018));if(_0x3965b8[_0x928f('0x8')]&&_0x3965b8[_0x928f('0x8')][_0x928f('0xa')]&&!_[_0x928f('0x30')](_0x3965b8['email'])){setTimeout(handleSendEmail(_0x3965b8,_0x3b8018),0x3c*0x3e8);}};}function handleJob(_0x1123af){return function(){try{if(_[_0x928f('0x30')](_0x1123af['subtractNumber'])){return logger[_0x928f('0x7')](_0x928f('0x31'));}if(_['isNil'](_0x1123af[_0x928f('0x17')])){return logger[_0x928f('0x7')]('subtractUnit\x20null\x20or\x20undefined');}var _0x3aa1fa={'startDate':moment()[_0x928f('0x32')](_0x1123af[_0x928f('0x33')],_0x1123af[_0x928f('0x17')])[_0x928f('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()['format'](_0x928f('0x34')),'type':_0x928f('0x35'),'output':_0x1123af[_0x928f('0x36')],'name':_0x1123af[_0x928f('0x12')]};if(!_[_0x928f('0x30')](_0x1123af['DefaultReportId'])){logger[_0x928f('0x7')]('exec\x20defaul\x20report\x20id:%s',_0x1123af[_0x928f('0x37')]);return analyticDefaultReportController[_0x928f('0x38')]({'id':_0x1123af[_0x928f('0x37')]},_0x3aa1fa)['then'](handleResult(_0x1123af))[_0x928f('0x2e')](handleError());}if(!_['isNil'](_0x1123af[_0x928f('0x39')])){logger['info']('exec\x20custom\x20report\x20id:%s',_0x1123af[_0x928f('0x39')]);return analyticCustomReportController[_0x928f('0x38')]({'id':_0x1123af['CustomReportId']},_0x3aa1fa)[_0x928f('0x2a')](handleResult(_0x1123af))[_0x928f('0x2e')](handleError());}}catch(_0x4b9633){logger[_0x928f('0x2b')](JSON['stringify'](_0x4b9633));}return logger[_0x928f('0x7')](_0x928f('0x3a'));};}function getJobs(_0x232ddf){var _0x30d6ce={};if(_0x232ddf){_0x30d6ce['id']=_0x232ddf;}return db[_0x928f('0x3b')][_0x928f('0x3c')]({'where':_0x30d6ce,'include':[{'model':db[_0x928f('0x8')],'attributes':['id','name',_0x928f('0x13')],'include':[{'model':db['MailServerOut'],'as':_0x928f('0xa')}]}]})[_0x928f('0x2a')](function(_0x5a16d1){var _0x50d27e=_[_0x928f('0x3d')](manager['jobs']);var _0x2e5e8e=_[_0x928f('0x3e')](_0x5a16d1,function(_0x44914c){return _0x44914c['id'][_0x928f('0x3f')]();});var _0x40298f=_[_0x928f('0x40')](_0x5a16d1,function(_0x67f5c4){return _0x67f5c4['id'][_0x928f('0x3f')]();});var _0x5ba4de=_0x232ddf?_0x2e5e8e:_[_0x928f('0x41')](_0x2e5e8e,_0x50d27e);var _0x1ff7a9=_['intersection'](_0x2e5e8e,_0x50d27e);var _0x2d57a8=_[_0x928f('0x41')](_0x50d27e,_0x2e5e8e);var _0x3bd818;var _0x2f1ab0;for(_0x3bd818=0x0;_0x3bd818<_0x2d57a8[_0x928f('0x42')]&&!_0x232ddf;_0x3bd818+=0x1){_0x2f1ab0=_0x2d57a8[_0x3bd818][_0x928f('0x3f')]();if(manager['exists'](_0x2f1ab0)){manager['stop'](_0x2f1ab0);manager['deleteJob'](_0x2f1ab0);logger[_0x928f('0x7')]('delete\x20cron',_0x2f1ab0);}}logger[_0x928f('0x7')]('toRun',JSON[_0x928f('0x2f')](_0x5ba4de));for(_0x3bd818=0x0;_0x3bd818<_0x5ba4de['length'];_0x3bd818+=0x1){_0x2f1ab0=_0x5ba4de[_0x3bd818][_0x928f('0x3f')]();logger['info'](_0x928f('0x43'),_0x2f1ab0);if(_0x232ddf){logger[_0x928f('0x7')](_0x928f('0x44'),_0x232ddf);logger[_0x928f('0x7')](JSON[_0x928f('0x2f')](_0x40298f[_0x2f1ab0]));BPromise[_0x928f('0x45')]()['then'](handleJob(_0x40298f[_0x2f1ab0]));logger[_0x928f('0x7')](_0x928f('0x46'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0][_0x928f('0x47')]);}else if(_0x40298f[_0x2f1ab0][_0x928f('0x47')]&&_0x40298f[_0x2f1ab0][_0x928f('0x48')]&&moment()[_0x928f('0x49')](_0x40298f[_0x2f1ab0]['startAt'],_0x40298f[_0x2f1ab0][_0x928f('0x4a')])){manager['add'](_0x2f1ab0,_0x40298f[_0x2f1ab0][_0x928f('0x47')],handleJob(_0x40298f[_0x2f1ab0]));manager[_0x928f('0x4b')](_0x2f1ab0);logger['info'](_0x928f('0x4c'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0]['cron']);}else if(manager[_0x928f('0x4d')](_0x2f1ab0)){manager[_0x928f('0x4e')](_0x2f1ab0);manager['deleteJob'](_0x2f1ab0);logger[_0x928f('0x7')](_0x928f('0x4f'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0][_0x928f('0x47')]);}}for(_0x3bd818=0x0,_0x2f1ab0;_0x3bd818<_0x1ff7a9[_0x928f('0x42')]&&!_0x232ddf;_0x3bd818+=0x1){_0x2f1ab0=_0x1ff7a9[_0x3bd818][_0x928f('0x3f')]();if(manager[_0x928f('0x4d')](_0x2f1ab0)){if(_0x40298f[_0x2f1ab0][_0x928f('0x47')]&&_0x40298f[_0x2f1ab0]['active']&&moment()[_0x928f('0x49')](_0x40298f[_0x2f1ab0][_0x928f('0x50')],_0x40298f[_0x2f1ab0][_0x928f('0x4a')])){manager[_0x928f('0x51')](_0x2f1ab0,_0x40298f[_0x2f1ab0][_0x928f('0x47')],handleJob(_0x40298f[_0x2f1ab0]));logger[_0x928f('0x7')](_0x928f('0x52'),_0x40298f[_0x2f1ab0]['name'],_0x40298f[_0x2f1ab0]['cron']);}else{manager['stop'](_0x2f1ab0);manager[_0x928f('0x53')](_0x2f1ab0);logger['info'](_0x928f('0x4f'),_0x40298f[_0x2f1ab0][_0x928f('0x12')],_0x40298f[_0x2f1ab0][_0x928f('0x47')]);}}}})[_0x928f('0x2e')](function(_0x2ec2c5){logger[_0x928f('0x2b')](JSON['stringify'](_0x2ec2c5));});}exports[_0x928f('0x54')]=function(_0x15688e){return getJobs(_0x15688e);};exports[_0x928f('0x4b')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index f489f21..366d944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x56dc=['Cloud\x20Provider\x20not\x20configured','Negative','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','findOne','Settings\x20not\x20available','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','inspect','start','lodash','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','transcribeRegion','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','fileText','COMPLETED','TranscriptionJobStatus','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','then','results','transcripts','length','transcript','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','ValidationError','Cloud\x20Provider\x20not\x20available','data1','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','Positive','SentimentScore','Mixed','Neutral','FAILED','update','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Transcript\x20not\x20available'];(function(_0x3c81b5,_0x3f5ed7){var _0x5888c4=function(_0x4e65b0){while(--_0x4e65b0){_0x3c81b5['push'](_0x3c81b5['shift']());}};_0x5888c4(++_0x3f5ed7);}(_0x56dc,0xfd));var _0xc56d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x56dc[_0x3dd15e];return _0x231fd0;};var _=require(_0xc56d('0x0'));var AWS=require('aws-sdk');var rp=require(_0xc56d('0x1'));var util=require(_0xc56d('0x2'));var BPromise=require(_0xc56d('0x3'));var db=require(_0xc56d('0x4'))['db'];var logger=require(_0xc56d('0x5'))('transcribe');function getTranscriptionJob(_0x2ffdfe,_0x2e7620,_0x289bb7,_0x464c0a){return new Promise(function(_0x3eb4ed,_0x3e68f4){var _0x571341=new AWS[(_0xc56d('0x6'))]({'accessKeyId':_0x2e7620,'secretAccessKey':_0x2ffdfe,'region':_0x289bb7});_0x571341[_0xc56d('0x7')]({'TranscriptionJobName':_0x464c0a},function(_0x3ac7cd,_0x51ca01){if(_0x3ac7cd){return _0x3e68f4(_0x3ac7cd);}else{return _0x3eb4ed(_0x51ca01);}});});}function sentiment(_0x146dc4,_0x1043f9,_0x3ff2cb,_0x1df34e,_0x3a6456){return new Promise(function(_0x544cef,_0x3bfd34){var _0x2d459d=new AWS[(_0xc56d('0x8'))]({'accessKeyId':_0x1043f9,'secretAccessKey':_0x146dc4,'region':_0x3ff2cb});_0x2d459d['detectSentiment']({'Text':_0x1df34e,'LanguageCode':_0x3a6456[_0xc56d('0x9')](0x0,0x2)},function(_0x2eeb7d,_0x247cea){if(_0x2eeb7d){return _0x3bfd34(_0x2eeb7d);}else{return _0x544cef(_0x247cea);}});});}function checkTranscribeJob(_0x14b82e,_0x585ca5,_0xf82e05){var _0x2f120a;return new BPromise(function(_0x26744e,_0x4b60cd){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0xc'),_0x14b82e['id'],_0x14b82e[_0xc56d('0xd')]));return getTranscriptionJob(_0xf82e05['data1'],_0xf82e05[_0xc56d('0xe')],_0x585ca5[_0xc56d('0xf')],_0x14b82e['transcribeName'])['then'](function(_0x259967){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x10'),_0x14b82e['id'],_0x14b82e['transcribeName'],_0x259967[_0xc56d('0x11')]['TranscriptionJobStatus']));if(!_0x14b82e[_0xc56d('0x12')]){switch(_0x259967[_0xc56d('0x11')]['TranscriptionJobStatus']){case _0xc56d('0x13'):var _0x22f20a={'transcribeStatus':_0x259967[_0xc56d('0x11')][_0xc56d('0x14')],'fileUri':_0x259967[_0xc56d('0x11')]['Transcript'][_0xc56d('0x15')]};logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x16'),_0x14b82e['id']));return rp({'uri':_0x259967['TranscriptionJob']['Transcript']['TranscriptFileUri'],'json':!![]})[_0xc56d('0x17')](function(_0x1c9a1c){logger[_0xc56d('0xa')](util['format']('[RECORDING:%d]\x20Transcript\x20downloaded',_0x14b82e['id']));if(_0x1c9a1c&&_0x1c9a1c[_0xc56d('0x18')]&&_0x1c9a1c[_0xc56d('0x18')]['transcripts']&&_0x1c9a1c[_0xc56d('0x18')][_0xc56d('0x19')][_0xc56d('0x1a')]){_0x22f20a[_0xc56d('0x12')]='';for(var _0x527929=0x0;_0x527929<_0x1c9a1c['results'][_0xc56d('0x19')][_0xc56d('0x1a')];_0x527929++){_0x22f20a['fileText']+=_0x1c9a1c[_0xc56d('0x18')][_0xc56d('0x19')][_0x527929][_0xc56d('0x1b')]+'';}}return _0x14b82e['update'](_0x22f20a);})[_0xc56d('0x17')](function(){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x1c'),_0x14b82e['id']));if(!_0x14b82e[_0xc56d('0x1d')]){throw new db[(_0xc56d('0x1e'))]['ValidationError'](_0xc56d('0x1f'));}if(!_0x585ca5['sentiment']||!_0x585ca5[_0xc56d('0x20')]||!_0x585ca5[_0xc56d('0x21')]||!_0x585ca5[_0xc56d('0x22')]||!_0x585ca5[_0xc56d('0x23')]){throw new db[(_0xc56d('0x1e'))]['ValidationError'](_0xc56d('0x24'));}if(!_0x22f20a['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x585ca5['sentimentAccountId']===_0xf82e05['id']){return _0xf82e05;}else{return db[_0xc56d('0x25')]['findOne']({'where':{'id':_settings[_0xc56d('0x20')]}});}})[_0xc56d('0x17')](function(_0x32d057){if(!_0x32d057){throw new db['Sequelize'][(_0xc56d('0x26'))](_0xc56d('0x27'));}if(!_0x32d057[_0xc56d('0x28')]||!_0x32d057[_0xc56d('0xe')]){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x2f120a=_0x32d057;logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x29'),_0x14b82e['id']));return sentiment(_0x2f120a[_0xc56d('0x28')],_0x2f120a[_0xc56d('0xe')],_0x585ca5['sentimentRegion'],_0x22f20a[_0xc56d('0x12')],_0x585ca5[_0xc56d('0x22')]);})[_0xc56d('0x17')](function(_0x3f1b42){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x2a'),_0x14b82e['id']));return _0x14b82e['update']({'sentiment':_0x3f1b42[_0xc56d('0x2b')],'sPositive':_0x3f1b42['SentimentScore'][_0xc56d('0x2c')],'sNegative':_0x3f1b42[_0xc56d('0x2d')]['Negative'],'sMixed':_0x3f1b42[_0xc56d('0x2d')][_0xc56d('0x2e')],'sNeutral':_0x3f1b42[_0xc56d('0x2d')][_0xc56d('0x2f')]});})[_0xc56d('0x17')](function(){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x1c'),_0x14b82e['id']));_0x26744e();});case _0xc56d('0x30'):return _0x14b82e[_0xc56d('0x31')]({'transcribeStatus':_0xc56d('0x30'),'failureReason':_0x259967[_0xc56d('0x11')][_0xc56d('0x32')]})[_0xc56d('0x17')](function(){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x1c'),_0x14b82e['id']));_0x26744e();});default:logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x33'),_0x14b82e['id']));break;}}else{return BPromise[_0xc56d('0x34')]()[_0xc56d('0x17')](function(){if(!_0x14b82e[_0xc56d('0x1d')]){throw new db[(_0xc56d('0x1e'))][(_0xc56d('0x26'))](_0xc56d('0x1f'));}if(!_0x585ca5[_0xc56d('0x35')]||!_0x585ca5[_0xc56d('0x20')]||!_0x585ca5[_0xc56d('0x21')]||!_0x585ca5['language']||!_0x585ca5[_0xc56d('0x23')]){throw new db[(_0xc56d('0x1e'))][(_0xc56d('0x26'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x14b82e['fileText']){throw new Error(_0xc56d('0x36'));}if(_0x585ca5['sentimentAccountId']===_0xf82e05['id']){return _0xf82e05;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x1bb678){if(!_0x1bb678){throw new db[(_0xc56d('0x1e'))][(_0xc56d('0x26'))](_0xc56d('0x27'));}if(!_0x1bb678[_0xc56d('0x28')]||!_0x1bb678[_0xc56d('0xe')]){throw new db[(_0xc56d('0x1e'))][(_0xc56d('0x26'))](_0xc56d('0x37'));}_0x2f120a=_0x1bb678;logger[_0xc56d('0xa')](util['format'](_0xc56d('0x29'),_0x14b82e['id']));return sentiment(_0x2f120a[_0xc56d('0x28')],_0x2f120a[_0xc56d('0xe')],_0x585ca5['sentimentRegion'],_0x14b82e[_0xc56d('0x12')],_0x585ca5[_0xc56d('0x22')]);})[_0xc56d('0x17')](function(_0x12e5c2){logger[_0xc56d('0xa')](util[_0xc56d('0xb')](_0xc56d('0x2a'),_0x14b82e['id']));return _0x14b82e[_0xc56d('0x31')]({'sentiment':_0x12e5c2['Sentiment'],'sPositive':_0x12e5c2[_0xc56d('0x2d')][_0xc56d('0x2c')],'sNegative':_0x12e5c2[_0xc56d('0x2d')][_0xc56d('0x38')],'sMixed':_0x12e5c2[_0xc56d('0x2d')][_0xc56d('0x2e')],'sNeutral':_0x12e5c2[_0xc56d('0x2d')]['Neutral'],'transcribeStatus':_0xc56d('0x13')});})[_0xc56d('0x17')](function(){logger[_0xc56d('0xa')](util['format'](_0xc56d('0x1c'),_0x14b82e['id']));_0x26744e();});}})[_0xc56d('0x39')](function(_0x2b79b7){if(_0x2b79b7){if(!_0x2b79b7[_0xc56d('0x3a')]||_0x2b79b7[_0xc56d('0x3a')]!==_0xc56d('0x3b')){logger[_0xc56d('0x3c')](util['format'](_0xc56d('0x3d'),_0x14b82e['id']),util['inspect'](_0x2b79b7,{'showHidden':![],'depth':null}));}}_0x26744e();});});}function checkTranscribe(){var _0x3ed7b9;var _0x3d39ee;var _0x5280d1;return db[_0xc56d('0x3e')][_0xc56d('0x3f')]({'where':{'transcribeStatus':_0xc56d('0x40')}})['then'](function(_0x21e643){if(!_0x21e643||!_0x21e643[_0xc56d('0x1a')]){throw new db[(_0xc56d('0x1e'))]['ValidationError'](_0xc56d('0x41'));}_0x3ed7b9=_0x21e643;return db[_0xc56d('0x42')][_0xc56d('0x43')]({'where':{'id':0x1}});})[_0xc56d('0x17')](function(_0x4451a5){if(!_0x4451a5){throw new db['Sequelize'][(_0xc56d('0x26'))](_0xc56d('0x44'));}_0x3d39ee=_0x4451a5;if(!_0x3d39ee[_0xc56d('0x45')]||!_0x3d39ee[_0xc56d('0x46')]||!_0x3d39ee[_0xc56d('0xf')]||!_0x3d39ee[_0xc56d('0x22')]||!_0x3d39ee['bucket']){throw new db['Sequelize'][(_0xc56d('0x26'))](_0xc56d('0x47'));}return db[_0xc56d('0x25')][_0xc56d('0x43')]({'where':{'id':_0x3d39ee['transcribeAccountId']}});})[_0xc56d('0x17')](function(_0xa54d26){if(!_0xa54d26){throw new db[(_0xc56d('0x1e'))][(_0xc56d('0x26'))](_0xc56d('0x27'));}if(!_0xa54d26['data1']||!_0xa54d26[_0xc56d('0xe')]){throw new db[(_0xc56d('0x1e'))][(_0xc56d('0x26'))]('Cloud\x20Provider\x20not\x20configured');}_0x5280d1=_0xa54d26;var _0x1f2bd7=[];_0x3ed7b9[_0xc56d('0x48')](function(_0x4f6d64){_0x1f2bd7[_0xc56d('0x49')](checkTranscribeJob(_0x4f6d64,_0x3d39ee,_0x5280d1));});return BPromise[_0xc56d('0x4a')](_0x1f2bd7);})[_0xc56d('0x39')](function(_0x4bb37c){if(_0x4bb37c){if(!_0x4bb37c[_0xc56d('0x3a')]||_0x4bb37c[_0xc56d('0x3a')]!==_0xc56d('0x3b')){logger[_0xc56d('0x3c')](util[_0xc56d('0x4b')](_0x4bb37c,{'showHidden':![],'depth':null}));}}});}exports[_0xc56d('0x4c')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xab26=['lodash','aws-sdk','request-promise','bluebird','../../mysqldb','TranscribeService','Comprehend','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data2','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','fileText','COMPLETED','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','transcript','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','findOne','data1','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','update','Sentiment','SentimentScore','Negative','Mixed','FAILED','FailureReason','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Neutral','name','error','VoiceRecording','IN_PROGRESS','length','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','forEach','push','all','catch','SequelizeValidationError','inspect'];(function(_0x286931,_0x50a98a){var _0x5a7d1d=function(_0x2629a0){while(--_0x2629a0){_0x286931['push'](_0x286931['shift']());}};_0x5a7d1d(++_0x50a98a);}(_0xab26,0xd2));var _0x6ab2=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xab26[_0x57b54c];return _0x59cc19;};var _=require(_0x6ab2('0x0'));var AWS=require(_0x6ab2('0x1'));var rp=require(_0x6ab2('0x2'));var util=require('util');var BPromise=require(_0x6ab2('0x3'));var db=require(_0x6ab2('0x4'))['db'];var logger=require('../../config/logger')('transcribe');function getTranscriptionJob(_0x4c8cf,_0x51bdcd,_0x332458,_0xb15094){return new Promise(function(_0x31c9f1,_0x56dc80){var _0x41643a=new AWS[(_0x6ab2('0x5'))]({'accessKeyId':_0x51bdcd,'secretAccessKey':_0x4c8cf,'region':_0x332458});_0x41643a['getTranscriptionJob']({'TranscriptionJobName':_0xb15094},function(_0x140cc1,_0x3157f1){if(_0x140cc1){return _0x56dc80(_0x140cc1);}else{return _0x31c9f1(_0x3157f1);}});});}function sentiment(_0x442ae2,_0xf9b141,_0x3bb68b,_0x3964fd,_0x217b42){return new Promise(function(_0x448216,_0x459538){var _0x2e765a=new AWS[(_0x6ab2('0x6'))]({'accessKeyId':_0xf9b141,'secretAccessKey':_0x442ae2,'region':_0x3bb68b});_0x2e765a['detectSentiment']({'Text':_0x3964fd,'LanguageCode':_0x217b42[_0x6ab2('0x7')](0x0,0x2)},function(_0x2db481,_0x3c4612){if(_0x2db481){return _0x459538(_0x2db481);}else{return _0x448216(_0x3c4612);}});});}function checkTranscribeJob(_0x5b7e6d,_0x5b6f7c,_0x10c3b1){var _0x2bb464;return new BPromise(function(_0x431d63,_0x8d1dc8){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0xa'),_0x5b7e6d['id'],_0x5b7e6d[_0x6ab2('0xb')]));return getTranscriptionJob(_0x10c3b1['data1'],_0x10c3b1[_0x6ab2('0xc')],_0x5b6f7c['transcribeRegion'],_0x5b7e6d[_0x6ab2('0xb')])[_0x6ab2('0xd')](function(_0x5ced24){logger['info'](util['format'](_0x6ab2('0xe'),_0x5b7e6d['id'],_0x5b7e6d[_0x6ab2('0xb')],_0x5ced24[_0x6ab2('0xf')][_0x6ab2('0x10')]));if(!_0x5b7e6d[_0x6ab2('0x11')]){switch(_0x5ced24[_0x6ab2('0xf')]['TranscriptionJobStatus']){case _0x6ab2('0x12'):var _0x2aac55={'transcribeStatus':_0x5ced24['TranscriptionJob'][_0x6ab2('0x10')],'fileUri':_0x5ced24['TranscriptionJob']['Transcript'][_0x6ab2('0x13')]};logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x14'),_0x5b7e6d['id']));return rp({'uri':_0x5ced24[_0x6ab2('0xf')]['Transcript'][_0x6ab2('0x13')],'json':!![]})[_0x6ab2('0xd')](function(_0x3b7a1a){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x15'),_0x5b7e6d['id']));if(_0x3b7a1a&&_0x3b7a1a[_0x6ab2('0x16')]&&_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')]&&_0x3b7a1a[_0x6ab2('0x16')]['transcripts']['length']){_0x2aac55['fileText']='';for(var _0x11e287=0x0;_0x11e287<_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')]['length'];_0x11e287++){_0x2aac55[_0x6ab2('0x11')]+=_0x3b7a1a[_0x6ab2('0x16')][_0x6ab2('0x17')][_0x11e287][_0x6ab2('0x18')]+'';}}return _0x5b7e6d['update'](_0x2aac55);})['then'](function(){logger['info'](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5b7e6d['id']));if(!_0x5b7e6d['tempSentiment']){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x1b'));}if(!_0x5b6f7c[_0x6ab2('0x1c')]||!_0x5b6f7c[_0x6ab2('0x1d')]||!_0x5b6f7c[_0x6ab2('0x1e')]||!_0x5b6f7c[_0x6ab2('0x1f')]||!_0x5b6f7c[_0x6ab2('0x20')]){throw new db[(_0x6ab2('0x19'))]['ValidationError'](_0x6ab2('0x21'));}if(!_0x2aac55[_0x6ab2('0x11')]){throw new Error('Transcript\x20not\x20available');}if(_0x5b6f7c[_0x6ab2('0x1d')]===_0x10c3b1['id']){return _0x10c3b1;}else{return db['CloudProvider'][_0x6ab2('0x22')]({'where':{'id':_settings[_0x6ab2('0x1d')]}});}})[_0x6ab2('0xd')](function(_0x151367){if(!_0x151367){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x151367[_0x6ab2('0x23')]||!_0x151367[_0x6ab2('0xc')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x24'));}_0x2bb464=_0x151367;logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5b7e6d['id']));return sentiment(_0x2bb464[_0x6ab2('0x23')],_0x2bb464[_0x6ab2('0xc')],_0x5b6f7c['sentimentRegion'],_0x2aac55['fileText'],_0x5b6f7c[_0x6ab2('0x1f')]);})[_0x6ab2('0xd')](function(_0x309165){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x25'),_0x5b7e6d['id']));return _0x5b7e6d[_0x6ab2('0x26')]({'sentiment':_0x309165[_0x6ab2('0x27')],'sPositive':_0x309165['SentimentScore']['Positive'],'sNegative':_0x309165[_0x6ab2('0x28')][_0x6ab2('0x29')],'sMixed':_0x309165[_0x6ab2('0x28')][_0x6ab2('0x2a')],'sNeutral':_0x309165[_0x6ab2('0x28')]['Neutral']});})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0x5b7e6d['id']));_0x431d63();});case _0x6ab2('0x2b'):return _0x5b7e6d[_0x6ab2('0x26')]({'transcribeStatus':'FAILED','failureReason':_0x5ced24[_0x6ab2('0xf')][_0x6ab2('0x2c')]})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x2d'),_0x5b7e6d['id']));_0x431d63();});default:logger[_0x6ab2('0x8')](util['format'](_0x6ab2('0x2e'),_0x5b7e6d['id']));break;}}else{return BPromise['resolve']()[_0x6ab2('0xd')](function(){if(!_0x5b7e6d[_0x6ab2('0x2f')]){throw new db[(_0x6ab2('0x19'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5b6f7c[_0x6ab2('0x1c')]||!_0x5b6f7c['sentimentAccountId']||!_0x5b6f7c['sentimentRegion']||!_0x5b6f7c[_0x6ab2('0x1f')]||!_0x5b6f7c[_0x6ab2('0x20')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x21'));}if(!_0x5b7e6d['fileText']){throw new Error(_0x6ab2('0x30'));}if(_0x5b6f7c['sentimentAccountId']===_0x10c3b1['id']){return _0x10c3b1;}else{return db[_0x6ab2('0x31')][_0x6ab2('0x22')]({'where':{'id':_settings[_0x6ab2('0x1d')]}});}})[_0x6ab2('0xd')](function(_0x507fdc){if(!_0x507fdc){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x32'));}if(!_0x507fdc[_0x6ab2('0x23')]||!_0x507fdc[_0x6ab2('0xc')]){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x24'));}_0x2bb464=_0x507fdc;logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x33'),_0x5b7e6d['id']));return sentiment(_0x2bb464[_0x6ab2('0x23')],_0x2bb464['data2'],_0x5b6f7c[_0x6ab2('0x1e')],_0x5b7e6d[_0x6ab2('0x11')],_0x5b6f7c[_0x6ab2('0x1f')]);})[_0x6ab2('0xd')](function(_0x1b38ae){logger[_0x6ab2('0x8')](util['format'](_0x6ab2('0x25'),_0x5b7e6d['id']));return _0x5b7e6d[_0x6ab2('0x26')]({'sentiment':_0x1b38ae[_0x6ab2('0x27')],'sPositive':_0x1b38ae[_0x6ab2('0x28')]['Positive'],'sNegative':_0x1b38ae['SentimentScore'][_0x6ab2('0x29')],'sMixed':_0x1b38ae[_0x6ab2('0x28')][_0x6ab2('0x2a')],'sNeutral':_0x1b38ae[_0x6ab2('0x28')][_0x6ab2('0x34')],'transcribeStatus':'COMPLETED'});})[_0x6ab2('0xd')](function(){logger[_0x6ab2('0x8')](util[_0x6ab2('0x9')](_0x6ab2('0x2d'),_0x5b7e6d['id']));_0x431d63();});}})['catch'](function(_0x538532){if(_0x538532){if(!_0x538532[_0x6ab2('0x35')]||_0x538532[_0x6ab2('0x35')]!=='SequelizeValidationError'){logger[_0x6ab2('0x36')](util['format']('[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis',_0x5b7e6d['id']),util['inspect'](_0x538532,{'showHidden':![],'depth':null}));}}_0x431d63();});});}function checkTranscribe(){var _0x1a7e42;var _0x2bee34;var _0x4fffb4;return db[_0x6ab2('0x37')]['findAll']({'where':{'transcribeStatus':_0x6ab2('0x38')}})[_0x6ab2('0xd')](function(_0xe385cf){if(!_0xe385cf||!_0xe385cf[_0x6ab2('0x39')]){throw new db['Sequelize'][(_0x6ab2('0x1a'))](_0x6ab2('0x3a'));}_0x1a7e42=_0xe385cf;return db[_0x6ab2('0x3b')][_0x6ab2('0x22')]({'where':{'id':0x1}});})[_0x6ab2('0xd')](function(_0x301270){if(!_0x301270){throw new db[(_0x6ab2('0x19'))]['ValidationError'](_0x6ab2('0x3c'));}_0x2bee34=_0x301270;if(!_0x2bee34[_0x6ab2('0x3d')]||!_0x2bee34[_0x6ab2('0x3e')]||!_0x2bee34[_0x6ab2('0x3f')]||!_0x2bee34[_0x6ab2('0x1f')]||!_0x2bee34[_0x6ab2('0x20')]){throw new db['Sequelize'][(_0x6ab2('0x1a'))]('Transcribe\x20not\x20configured');}return db[_0x6ab2('0x31')][_0x6ab2('0x22')]({'where':{'id':_0x2bee34[_0x6ab2('0x3e')]}});})[_0x6ab2('0xd')](function(_0x145428){if(!_0x145428){throw new db[(_0x6ab2('0x19'))][(_0x6ab2('0x1a'))](_0x6ab2('0x32'));}if(!_0x145428[_0x6ab2('0x23')]||!_0x145428['data2']){throw new db[(_0x6ab2('0x19'))]['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x4fffb4=_0x145428;var _0x3dde6b=[];_0x1a7e42[_0x6ab2('0x40')](function(_0x12eab2){_0x3dde6b[_0x6ab2('0x41')](checkTranscribeJob(_0x12eab2,_0x2bee34,_0x4fffb4));});return BPromise[_0x6ab2('0x42')](_0x3dde6b);})[_0x6ab2('0x43')](function(_0x7f1000){if(_0x7f1000){if(!_0x7f1000[_0x6ab2('0x35')]||_0x7f1000[_0x6ab2('0x35')]!==_0x6ab2('0x44')){logger[_0x6ab2('0x36')](util[_0x6ab2('0x45')](_0x7f1000,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 089243d..4ff7b2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ab2=['WhatsappInteraction','findAll','lastMsgAt','subtract','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','util','../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','localhost'];(function(_0x5b2dcf,_0x294dee){var _0x370b38=function(_0x221eb4){while(--_0x221eb4){_0x5b2dcf['push'](_0x5b2dcf['shift']());}};_0x370b38(++_0x294dee);}(_0x1ab2,0x157));var _0x21ab=function(_0x37890b,_0x1112c0){_0x37890b=_0x37890b-0x0;var _0x38ec23=_0x1ab2[_0x37890b];return _0x38ec23;};'use strict';var _=require(_0x21ab('0x0'));var moment=require('moment');var Redis=require('ioredis');var util=require(_0x21ab('0x1'));var config=require(_0x21ab('0x2'));var db=require(_0x21ab('0x3'))['db'];var logger=require(_0x21ab('0x4'))(_0x21ab('0x5'));config['redis']=_[_0x21ab('0x6')](config[_0x21ab('0x7')],{'host':_0x21ab('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x21ab('0x7')]));function closeInteractions(){var _0x587fc2=[];return db[_0x21ab('0x9')][_0x21ab('0xa')]({'raw':!![],'attributes':['id',_0x21ab('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x21ab('0xc')](0x18,_0x21ab('0xd'))}}})[_0x21ab('0xe')](function(_0x155f72){if(_0x155f72&&_0x155f72[_0x21ab('0xf')]){_0x587fc2=_[_0x21ab('0x10')](_0x155f72||[],'id');logger[_0x21ab('0x11')](_0x21ab('0x12'),_0x587fc2[_0x21ab('0x13')]());return db[_0x21ab('0x9')][_0x21ab('0x14')]({'closeReason':_0x21ab('0x15'),'disposition':_0x21ab('0x16'),'closed':!![],'closedAt':moment()[_0x21ab('0x17')](_0x21ab('0x18'))},{'where':{'id':_0x587fc2}});}})['then'](function(){if(_0x587fc2&&_0x587fc2[_0x21ab('0xf')]){logger['info'](_0x21ab('0x19'),_0x587fc2['join']());for(var _0x40c78b=0x0;_0x40c78b<_0x587fc2[_0x21ab('0xf')];_0x40c78b++){io[_0x21ab('0x1a')](_0x21ab('0x1b'),{'id':_0x587fc2[_0x40c78b],'closed':!![]});}}})[_0x21ab('0x1c')](function(_0x285ec6){logger['error'](_0x21ab('0x1d'),_0x285ec6?util[_0x21ab('0x1e')](_0x285ec6,{'showHidden':![],'depth':null}):'');});}exports[_0x21ab('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x5794=['timeout','format','YYYY-MM-DD\x20HH:mm:ss','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system'];(function(_0x2c47dc,_0x3d7409){var _0x1494d0=function(_0x279008){while(--_0x279008){_0x2c47dc['push'](_0x2c47dc['shift']());}};_0x1494d0(++_0x3d7409);}(_0x5794,0x16b));var _0x4579=function(_0x2bcd1f,_0x5bc426){_0x2bcd1f=_0x2bcd1f-0x0;var _0x2af292=_0x5794[_0x2bcd1f];return _0x2af292;};'use strict';var _=require('lodash');var moment=require(_0x4579('0x0'));var Redis=require(_0x4579('0x1'));var util=require('util');var config=require(_0x4579('0x2'));var db=require(_0x4579('0x3'))['db'];var logger=require(_0x4579('0x4'))(_0x4579('0x5'));config[_0x4579('0x6')]=_[_0x4579('0x7')](config[_0x4579('0x6')],{'host':_0x4579('0x8'),'port':0x18eb});var io=require(_0x4579('0x9'))(new Redis(config['redis']));function closeInteractions(){var _0x51c31f=[];return db[_0x4579('0xa')][_0x4579('0xb')]({'raw':!![],'attributes':['id',_0x4579('0xc')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x4579('0xd'))}}})[_0x4579('0xe')](function(_0x3c7337){if(_0x3c7337&&_0x3c7337[_0x4579('0xf')]){_0x51c31f=_['map'](_0x3c7337||[],'id');logger[_0x4579('0x10')](_0x4579('0x11'),_0x51c31f[_0x4579('0x12')]());return db[_0x4579('0xa')][_0x4579('0x13')]({'closeReason':_0x4579('0x14'),'disposition':_0x4579('0x15'),'closed':!![],'closedAt':moment()[_0x4579('0x16')](_0x4579('0x17'))},{'where':{'id':_0x51c31f}});}})['then'](function(){if(_0x51c31f&&_0x51c31f['length']){logger[_0x4579('0x10')](_0x4579('0x18'),_0x51c31f[_0x4579('0x12')]());for(var _0x4b894c=0x0;_0x4b894c<_0x51c31f[_0x4579('0xf')];_0x4b894c++){io[_0x4579('0x19')](_0x4579('0x1a'),{'id':_0x51c31f[_0x4b894c],'closed':!![]});}}})[_0x4579('0x1b')](function(_0x1c728e){logger[_0x4579('0x1c')](_0x4579('0x1d'),_0x1c728e?util[_0x4579('0x1e')](_0x1c728e,{'showHidden':![],'depth':null}):'');});}exports[_0x4579('0x1f')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index e655dc4..c67bc8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc5=['catch','util','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','CmContact','destroy','then','finished\x20populating','contacts1','CmHopper','bulkCreate','log','contacts2','hopper2'];(function(_0x445da9,_0x9b3e20){var _0x408f3e=function(_0x164d26){while(--_0x164d26){_0x445da9['push'](_0x445da9['shift']());}};_0x408f3e(++_0x9b3e20);}(_0x4fc5,0x10b));var _0x54fc=function(_0x5b1370,_0x5beac4){_0x5b1370=_0x5b1370-0x0;var _0xf5075d=_0x4fc5[_0x5b1370];return _0xf5075d;};'use strict';var util=require(_0x54fc('0x0'));var db=require(_0x54fc('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x54fc('0x2')]({'id':i,'firstName':_0x54fc('0x3')+i,'lastName':_0x54fc('0x4')+i,'phone':0xf879fb460+i,'email':_0x54fc('0x5')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x54fc('0x2')]({'id':i,'active':![],'scheduledat':Date[_0x54fc('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x54fc('0x2')]({'id':i,'firstName':_0x54fc('0x3')+i,'lastName':_0x54fc('0x4')+i,'phone':0xf879fb460+i,'email':_0x54fc('0x5')+i+_0x54fc('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x54fc('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x54fc('0x6')]()});}db[_0x54fc('0x8')][_0x54fc('0x9')]({'where':{}})[_0x54fc('0xa')](function(){return db[_0x54fc('0x8')]['bulkCreate'](contacts);})['then'](function(){console['log'](_0x54fc('0xb'),_0x54fc('0xc'));return db['CmHopper'][_0x54fc('0x9')]({'where':{}});})[_0x54fc('0xa')](function(){return db[_0x54fc('0xd')][_0x54fc('0xe')](hopper);})['then'](function(){console['log'](_0x54fc('0xb'),'hopper1');return db['CmContact'][_0x54fc('0xe')](contacts2);})[_0x54fc('0xa')](function(){console[_0x54fc('0xf')](_0x54fc('0xb'),_0x54fc('0x10'));return db['CmHopper'][_0x54fc('0xe')](hopper2);})['then'](function(){console[_0x54fc('0xf')](_0x54fc('0xb'),_0x54fc('0x11'));})[_0x54fc('0x12')](function(_0x4035f2){console[_0x54fc('0xf')](_0x4035f2);});
\ No newline at end of file
+var _0x360f=['hopper1','contacts2','hopper2','catch','../mysqldb','push','@xcally.com','now','Biondo','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper','bulkCreate'];(function(_0x2f4d41,_0x525047){var _0x3b0bb2=function(_0x19960d){while(--_0x19960d){_0x2f4d41['push'](_0x2f4d41['shift']());}};_0x3b0bb2(++_0x525047);}(_0x360f,0x125));var _0xf360=function(_0x40af8c,_0x3773d5){_0x40af8c=_0x40af8c-0x0;var _0x17c1aa=_0x360f[_0x40af8c];return _0x17c1aa;};'use strict';var util=require('util');var db=require(_0xf360('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf360('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf360('0x2')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0xf360('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xf360('0x3')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf360('0x3')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf360('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf360('0x4')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf360('0x2')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf360('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xf360('0x3')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0xf360('0x5')][_0xf360('0x6')]({'where':{}})[_0xf360('0x7')](function(){return db[_0xf360('0x5')]['bulkCreate'](contacts);})['then'](function(){console[_0xf360('0x8')](_0xf360('0x9'),_0xf360('0xa'));return db[_0xf360('0xb')]['destroy']({'where':{}});})['then'](function(){return db['CmHopper'][_0xf360('0xc')](hopper);})[_0xf360('0x7')](function(){console[_0xf360('0x8')]('finished\x20populating',_0xf360('0xd'));return db['CmContact']['bulkCreate'](contacts2);})[_0xf360('0x7')](function(){console['log'](_0xf360('0x9'),_0xf360('0xe'));return db['CmHopper'][_0xf360('0xc')](hopper2);})[_0xf360('0x7')](function(){console[_0xf360('0x8')]('finished\x20populating',_0xf360('0xf'));})[_0xf360('0x10')](function(_0x2e1d38){console[_0xf360('0x8')](_0x2e1d38);});
\ No newline at end of file
index 77100b6..b5adbb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6d2=['/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','add\x20user','catch','util','push','format','agent','%s%s','%s%s@xcally.com','password','friend','all','yes'];(function(_0x1beef3,_0x57c4b8){var _0x5af964=function(_0x36f463){while(--_0x36f463){_0x1beef3['push'](_0x1beef3['shift']());}};_0x5af964(++_0x57c4b8);}(_0xb6d2,0x14c));var _0x2b6d=function(_0x3b6746,_0xeae4a5){_0x3b6746=_0x3b6746-0x0;var _0x5b97a2=_0xb6d2[_0x3b6746];return _0x5b97a2;};'use strict';var util=require(_0x2b6d('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x2b6d('0x1')]({'name':util[_0x2b6d('0x2')]('%s%s',_0x2b6d('0x3'),i),'fullname':util[_0x2b6d('0x2')](_0x2b6d('0x4'),'agent',i),'email':util[_0x2b6d('0x2')](_0x2b6d('0x5'),'agent',i),'role':_0x2b6d('0x3'),'password':_0x2b6d('0x6'),'internal':0xfa0+i,'type':_0x2b6d('0x7'),'transport':['udp','ws','wss'],'disallow':[_0x2b6d('0x8')],'allow':['ulaw'],'defaultuser':util[_0x2b6d('0x2')](_0x2b6d('0x4'),_0x2b6d('0x3'),i),'encryption':_0x2b6d('0x9'),'avpf':_0x2b6d('0x9'),'force_avp':_0x2b6d('0x9'),'icesupport':_0x2b6d('0x9'),'dtlsenable':_0x2b6d('0x9'),'dtlsverify':'no','dtlscertfile':_0x2b6d('0xa'),'dtlsprivatekey':_0x2b6d('0xb'),'dtlssetup':_0x2b6d('0xc'),'callerid':util[_0x2b6d('0x2')]('\x22%s\x22\x20<%s>',util[_0x2b6d('0x2')]('%s%s',_0x2b6d('0x3'),i),0xfa0+i)});}db[_0x2b6d('0xd')][_0x2b6d('0xe')](users)[_0x2b6d('0xf')](function(){console[_0x2b6d('0x10')](_0x2b6d('0x11'));})[_0x2b6d('0x12')](function(_0x4bd0b5){console['log'](_0x4bd0b5);});
\ No newline at end of file
+var _0x4c8e=['ulaw','yes','/etc/pki/tls/certs/motion.crt','\x22%s\x22\x20<%s>','User','then','log','add\x20user','catch','util','push','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','all'];(function(_0x4df99b,_0x537393){var _0x538d2f=function(_0x9c24ab){while(--_0x9c24ab){_0x4df99b['push'](_0x4df99b['shift']());}};_0x538d2f(++_0x537393);}(_0x4c8e,0x1ab));var _0xe4c8=function(_0x1fb1c1,_0x4ebe69){_0x1fb1c1=_0x1fb1c1-0x0;var _0x1622df=_0x4c8e[_0x1fb1c1];return _0x1622df;};'use strict';var util=require(_0xe4c8('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xe4c8('0x1')]({'name':util['format'](_0xe4c8('0x2'),_0xe4c8('0x3'),i),'fullname':util[_0xe4c8('0x4')](_0xe4c8('0x2'),_0xe4c8('0x3'),i),'email':util[_0xe4c8('0x4')](_0xe4c8('0x5'),_0xe4c8('0x3'),i),'role':_0xe4c8('0x3'),'password':_0xe4c8('0x6'),'internal':0xfa0+i,'type':_0xe4c8('0x7'),'transport':[_0xe4c8('0x8'),'ws','wss'],'disallow':[_0xe4c8('0x9')],'allow':[_0xe4c8('0xa')],'defaultuser':util['format']('%s%s',_0xe4c8('0x3'),i),'encryption':_0xe4c8('0xb'),'avpf':_0xe4c8('0xb'),'force_avp':'yes','icesupport':_0xe4c8('0xb'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':_0xe4c8('0xc'),'dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':'actpass','callerid':util[_0xe4c8('0x4')](_0xe4c8('0xd'),util[_0xe4c8('0x4')](_0xe4c8('0x2'),'agent',i),0xfa0+i)});}db[_0xe4c8('0xe')]['bulkCreate'](users)[_0xe4c8('0xf')](function(){console[_0xe4c8('0x10')](_0xe4c8('0x11'));})[_0xe4c8('0x12')](function(_0x5175fd){console['log'](_0x5175fd);});
\ No newline at end of file
index 686d1dc..4ed429d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1af1=['connection','remotePort','connectedAt','CONNECTED','lodash','util','bluebird','../mysqldb','./environment','name','Agents','User','role','ivr','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Trunks','UserProfileResource','resourceId','then','map','where','telephone','Campaign','type','format','%s:queue:%s','length','user:%s','handshake','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','ChatQueue','FaxQueue','MailQueue','OpenchannelQueue','SmsQueue','WhatsappQueue','Telephones','Trunk','IvrCampaigns','agent','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','chat','fax','sms','mail','whatsapp','telephone:%s','campaign:%s:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','address','request','remoteAddress'];(function(_0x1b423d,_0x4bc4b8){var _0x5d37ce=function(_0xc5e930){while(--_0xc5e930){_0x1b423d['push'](_0x1b423d['shift']());}};_0x5d37ce(++_0x4bc4b8);}(_0x1af1,0x133));var _0x11af=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1af1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x11af('0x0'));var util=require(_0x11af('0x1'));var BPromise=require(_0x11af('0x2'));var db=require(_0x11af('0x3'))['db'];var config=require(_0x11af('0x4'));var queryQueues={'attributes':['id',_0x11af('0x5')],'include':[{'as':_0x11af('0x6'),'model':db[_0x11af('0x7')],'attributes':['id',_0x11af('0x5'),_0x11af('0x8')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x11af('0x5')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x11af('0x5')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0x11af('0x5'),'type'],'where':{'type':_0x11af('0x9')}};function getAssociatedResources(_0x4c8bf1,_0x3d8d3f,_0x23b31a){return db[_0x11af('0xa')][_0x11af('0xb')]({'where':{'name':_0x4c8bf1,'userProfileId':_0x3d8d3f},'raw':!![]})['then'](function(_0x4214bd){if(_0x4214bd){if(_0x4214bd[_0x11af('0xc')]){switch(_0x4c8bf1){case _0x11af('0xd'):case _0x11af('0xe'):case _0x11af('0xf'):case _0x11af('0x10'):case _0x11af('0x11'):case _0x11af('0x12'):case _0x11af('0x13'):return db[_0x23b31a][_0x11af('0x14')](queryQueues);case'Telephones':return db[_0x23b31a][_0x11af('0x14')](queryTelephones);case _0x11af('0x15'):return db[_0x23b31a][_0x11af('0x14')](queryTrunks);case'IvrCampaigns':return db[_0x23b31a][_0x11af('0x14')](queryCampaigns);}}else{return db[_0x11af('0x16')]['findAll']({'attributes':[_0x11af('0x17')],'where':{'sectionId':_0x4214bd['id']},'raw':!![]})[_0x11af('0x18')](function(_0x2292c8){if(_0x2292c8){var _0x23ed21={'where':{'id':_[_0x11af('0x19')](_0x2292c8,_0x11af('0x17'))},'raw':!![]};switch(_0x23b31a){case _0x11af('0x7'):_0x23ed21[_0x11af('0x1a')][_0x11af('0x8')]=_0x11af('0x1b');break;case _0x11af('0x1c'):_0x23ed21[_0x11af('0x1a')][_0x11af('0x1d')]=_0x11af('0x9');break;}return db[_0x23b31a][_0x11af('0x14')](_0x23ed21);}else{return[];}});}}else{return[];}})[_0x11af('0x18')](function(_0x66ef3f){return _0x66ef3f;});}function joinOrLeaveQueues(_0xa557f7,_0x2a1de1,_0x1ffbda,_0x55940a){_0xa557f7[_0x2a1de1](util[_0x11af('0x1e')](_0x11af('0x1f'),_0x1ffbda,_0x55940a['name']));if(_0x55940a[_0x11af('0x6')]){for(var _0x204333=0x0;_0x204333<_0x55940a[_0x11af('0x6')][_0x11af('0x20')];_0x204333+=0x1){_0xa557f7[_0x2a1de1](util['format'](_0x11af('0x21'),_0x55940a[_0x11af('0x6')][_0x204333][_0x11af('0x5')]));}}}function joinOrLeave(_0x1d56ca,_0x514ea8,_0x8eeed){var _0x61a534;if(_0x1d56ca[_0x11af('0x22')]['query']['id']){db[_0x11af('0x7')]['find']({'attributes':['id','name','role',_0x11af('0x23')],'where':{'id':_0x1d56ca[_0x11af('0x22')][_0x11af('0x24')]['id']},'include':[{'model':db[_0x11af('0x25')],'as':_0x11af('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x11af('0x27')],'as':_0x11af('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x11af('0x29')],'as':_0x11af('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x11af('0x2b')],'as':_0x11af('0x2c'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x11af('0x2d'),'attributes':['id'],'raw':!![]},{'model':db[_0x11af('0x2e')],'as':_0x11af('0x2f'),'attributes':['id'],'raw':!![]}]})[_0x11af('0x18')](function(_0xfc1d23){if(_0xfc1d23){_0x61a534=_0xfc1d23;_0x1d56ca[_0x514ea8](util[_0x11af('0x1e')](_0x11af('0x21'),_0xfc1d23['name']));var _0x3b047c=[];switch(_0xfc1d23[_0x11af('0x8')]){case _0x11af('0x30'):_0x1d56ca[_0x514ea8](_0x11af('0x31'));_0x1d56ca[_0x514ea8](_0x11af('0x32'));if(queryQueues[_0x11af('0x33')](_0x11af('0x34'))){delete queryQueues['include'];}_0x3b047c[_0x11af('0x35')](db[_0x11af('0x36')][_0x11af('0x14')](queryQueues));_0x3b047c[_0x11af('0x35')](db[_0x11af('0x37')]['findAll'](queryQueues));_0x3b047c[_0x11af('0x35')](db[_0x11af('0x38')]['findAll'](queryQueues));_0x3b047c[_0x11af('0x35')](db['SmsQueue'][_0x11af('0x14')](queryQueues));_0x3b047c[_0x11af('0x35')](db[_0x11af('0x39')][_0x11af('0x14')](queryQueues));_0x3b047c['push'](db[_0x11af('0x3a')][_0x11af('0x14')](queryQueues));_0x3b047c[_0x11af('0x35')](db['WhatsappQueue']['findAll'](queryQueues));_0x3b047c['push'](db[_0x11af('0x7')][_0x11af('0x14')](queryTelephones));_0x3b047c['push'](db['Trunk'][_0x11af('0x14')](queryTrunks));_0x3b047c[_0x11af('0x35')](db['Campaign'][_0x11af('0x14')](queryCampaigns));_0x3b047c[_0x11af('0x35')](db[_0x11af('0x7')][_0x11af('0x14')](queryAgents));break;case'user':_0x1d56ca[_0x514ea8](_0x11af('0x31'));_0x1d56ca[_0x514ea8](_0x11af('0x32'));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0xd'),_0xfc1d23['userProfileId'],_0x11af('0x36')));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0xe'),_0xfc1d23['userProfileId'],_0x11af('0x37')));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0xf'),_0xfc1d23['userProfileId'],_0x11af('0x38')));_0x3b047c[_0x11af('0x35')](getAssociatedResources('SmsQueues',_0xfc1d23['userProfileId'],_0x11af('0x3b')));_0x3b047c['push'](getAssociatedResources('MailQueues',_0xfc1d23['userProfileId'],_0x11af('0x39')));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0x12'),_0xfc1d23['userProfileId'],'OpenchannelQueue'));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0x13'),_0xfc1d23[_0x11af('0x23')],_0x11af('0x3c')));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0x3d'),_0xfc1d23['userProfileId'],_0x11af('0x7')));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0x15'),_0xfc1d23[_0x11af('0x23')],_0x11af('0x3e')));_0x3b047c[_0x11af('0x35')](getAssociatedResources(_0x11af('0x3f'),_0xfc1d23[_0x11af('0x23')],_0x11af('0x1c')));_0x3b047c[_0x11af('0x35')](db['User']['findAll'](queryAgents));break;case _0x11af('0x40'):_0x1d56ca[_0x514ea8](_0x11af('0x31'));_0x1d56ca[_0x514ea8]('voice:outbound');_0x3b047c['push'](_0xfc1d23['getVoiceQueues']({'attributes':['id','name']}));_0x3b047c['push'](_0xfc1d23[_0x11af('0x41')]({'attributes':['id',_0x11af('0x5')]}));_0x3b047c['push'](_0xfc1d23[_0x11af('0x42')]({'attributes':['id',_0x11af('0x5')]}));_0x3b047c[_0x11af('0x35')](_0xfc1d23[_0x11af('0x43')]({'attributes':['id','name']}));_0x3b047c[_0x11af('0x35')](_0xfc1d23[_0x11af('0x44')]({'attributes':['id','name']}));_0x3b047c[_0x11af('0x35')](_0xfc1d23[_0x11af('0x45')]({'attributes':['id','name']}));_0x3b047c[_0x11af('0x35')](_0xfc1d23[_0x11af('0x46')]({'attributes':['id',_0x11af('0x5')]}));break;}return BPromise[_0x11af('0x47')](_0x3b047c);}})[_0x11af('0x18')](function(_0x2cbeb3){if(_0x2cbeb3&&_0x2cbeb3[_0x11af('0x20')]){for(var _0x11c10e=0x0;_0x11c10e<_0x2cbeb3[_0x11af('0x20')];_0x11c10e+=0x1){for(var _0x22e8d8=0x0;_0x22e8d8<_0x2cbeb3[_0x11c10e][_0x11af('0x20')];_0x22e8d8+=0x1){switch(_0x11c10e){case 0x0:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,'voice',_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x1:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,_0x11af('0x48'),_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x2:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,_0x11af('0x49'),_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x3:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,_0x11af('0x4a'),_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x4:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,_0x11af('0x4b'),_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x5:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,'openchannel',_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x6:joinOrLeaveQueues(_0x1d56ca,_0x514ea8,_0x11af('0x4c'),_0x2cbeb3[_0x11c10e][_0x22e8d8]);break;case 0x7:if(_0x61a534[_0x11af('0x8')]!==_0x11af('0x40'))_0x1d56ca[_0x514ea8](util[_0x11af('0x1e')](_0x11af('0x4d'),_0x2cbeb3[_0x11c10e][_0x22e8d8][_0x11af('0x5')]));break;case 0x8:if(_0x61a534['role']!==_0x11af('0x40'))_0x1d56ca[_0x514ea8](util['format']('trunk:%s',_0x2cbeb3[_0x11c10e][_0x22e8d8][_0x11af('0x5')]));break;case 0x9:if(_0x61a534[_0x11af('0x8')]!==_0x11af('0x40'))_0x1d56ca[_0x514ea8](util[_0x11af('0x1e')](_0x11af('0x4e'),_0x2cbeb3[_0x11c10e][_0x22e8d8]['type'],_0x2cbeb3[_0x11c10e][_0x22e8d8]['name']));break;case 0xa:_0x1d56ca[_0x514ea8](util[_0x11af('0x1e')](_0x11af('0x21'),_0x2cbeb3[_0x11c10e][_0x22e8d8][_0x11af('0x5')]));break;}}}}})[_0x11af('0x18')](function(){if(_0x514ea8===_0x11af('0x4f')){var _0x149aa3=_[_0x11af('0x19')](_0x61a534[_0x11af('0x26')],'id');return _0x61a534[_0x11af('0x50')](_0x149aa3)[_0x11af('0x18')](function(){for(var _0x2fe470=0x0;_0x2fe470<_0x149aa3['length'];_0x2fe470+=0x1){_0x8eeed[_0x11af('0x51')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x149aa3[_0x2fe470]),'UserId':Number(_0x61a534['id'])});}});}})[_0x11af('0x18')](function(){if(_0x514ea8===_0x11af('0x4f')){var _0x361ce4=_[_0x11af('0x19')](_0x61a534[_0x11af('0x28')],'id');return _0x61a534[_0x11af('0x52')](_0x361ce4)[_0x11af('0x18')](function(){for(var _0x512dd1=0x0;_0x512dd1<_0x361ce4[_0x11af('0x20')];_0x512dd1+=0x1){_0x8eeed[_0x11af('0x51')](_0x11af('0x53'),{'MailInteractionId':Number(_0x361ce4[_0x512dd1]),'UserId':Number(_0x61a534['id'])});}});}})[_0x11af('0x18')](function(){if(_0x514ea8===_0x11af('0x4f')){var _0x41906c=_['map'](_0x61a534[_0x11af('0x2a')],'id');return _0x61a534[_0x11af('0x54')](_0x41906c)[_0x11af('0x18')](function(){for(var _0x1b0518=0x0;_0x1b0518<_0x41906c['length'];_0x1b0518+=0x1){_0x8eeed[_0x11af('0x51')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x41906c[_0x1b0518]),'UserId':Number(_0x61a534['id'])});}});}})[_0x11af('0x18')](function(){if(_0x514ea8===_0x11af('0x4f')){var _0x5b98a6=_['map'](_0x61a534[_0x11af('0x2c')],'id');return _0x61a534[_0x11af('0x55')](_0x5b98a6)[_0x11af('0x18')](function(){for(var _0x33a236=0x0;_0x33a236<_0x5b98a6[_0x11af('0x20')];_0x33a236+=0x1){_0x8eeed[_0x11af('0x51')](_0x11af('0x56'),{'SmsInteractionId':Number(_0x5b98a6[_0x33a236]),'UserId':Number(_0x61a534['id'])});}});}})[_0x11af('0x18')](function(){if(_0x514ea8===_0x11af('0x4f')){var _0x75594b=_[_0x11af('0x19')](_0x61a534['OpenchannelInteractions'],'id');return _0x61a534[_0x11af('0x57')](_0x75594b)[_0x11af('0x18')](function(){for(var _0x4ec540=0x0;_0x4ec540<_0x75594b[_0x11af('0x20')];_0x4ec540+=0x1){_0x8eeed[_0x11af('0x51')](_0x11af('0x58'),{'OpenchannelInteractionId':Number(_0x75594b[_0x4ec540]),'UserId':Number(_0x61a534['id'])});}});}})[_0x11af('0x18')](function(){if(_0x514ea8===_0x11af('0x4f')){var _0x4fbf1b=_[_0x11af('0x19')](_0x61a534['WhatsappInteractions'],'id');return _0x61a534[_0x11af('0x59')](_0x4fbf1b)[_0x11af('0x18')](function(){for(var _0x12d098=0x0;_0x12d098<_0x4fbf1b[_0x11af('0x20')];_0x12d098+=0x1){_0x8eeed[_0x11af('0x51')](_0x11af('0x5a'),{'WhatsappInteractionId':Number(_0x4fbf1b[_0x12d098]),'UserId':Number(_0x61a534['id'])});}});}})['catch'](function(_0x29f2f7){_0x1d56ca[_0x11af('0x5b')](_0x29f2f7);});}}function onDisconnect(_0x169bb3,_0x22c3c8){joinOrLeave(_0x169bb3,_0x11af('0x4f'),_0x22c3c8);}function onConnect(_0x1174b2){joinOrLeave(_0x1174b2,_0x11af('0x5c'));}exports[_0x11af('0x5d')]=function(_0x46e4ad){_0x46e4ad['on']('connection',function(_0x1a35e1){_0x1a35e1['setMaxListeners'](0x0);_0x1a35e1[_0x11af('0x5e')]=_0x1a35e1[_0x11af('0x5f')]['connection'][_0x11af('0x60')]+':'+_0x1a35e1[_0x11af('0x5f')][_0x11af('0x61')][_0x11af('0x62')];_0x1a35e1[_0x11af('0x63')]=new Date();_0x1a35e1['log']=function(_0x3add15){console[_0x11af('0x5b')]('SocketIO\x20'+_0x1a35e1['nsp'][_0x11af('0x5')]+'['+_0x1a35e1[_0x11af('0x5e')]+']',_0x3add15);};_0x1a35e1['on']('disconnect',function(){onDisconnect(_0x1a35e1,_0x46e4ad);_0x1a35e1[_0x11af('0x5b')]('DISCONNECTED');});onConnect(_0x1a35e1);_0x1a35e1[_0x11af('0x5b')](_0x11af('0x64'));});};
\ No newline at end of file
+var _0xa413=['trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','removeFaxInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:remove','removeWhatsappInteractions','catch','log','join','default','connection','setMaxListeners','address','request','SocketIO\x20','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','./environment','name','role','agent','telephone','type','ivr','then','autoAssociation','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','User','where','Campaign','format','Agents','length','handshake','find','userProfileId','query','ChatInteraction','MailInteraction','MailInteractions','FaxInteractions','SmsInteractions','OpenchannelInteractions','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','hasOwnProperty','include','ChatQueue','push','FaxQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueue','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','openchannel','whatsapp','telephone:%s'];(function(_0x1dd937,_0xddcb8c){var _0x1bf73d=function(_0x301750){while(--_0x301750){_0x1dd937['push'](_0x1dd937['shift']());}};_0x1bf73d(++_0xddcb8c);}(_0xa413,0x1e5));var _0x3a41=function(_0x558365,_0x16025e){_0x558365=_0x558365-0x0;var _0x2a230b=_0xa413[_0x558365];return _0x2a230b;};'use strict';var _=require(_0x3a41('0x0'));var util=require('util');var BPromise=require(_0x3a41('0x1'));var db=require('../mysqldb')['db'];var config=require(_0x3a41('0x2'));var queryQueues={'attributes':['id',_0x3a41('0x3')],'include':[{'as':'Agents','model':db['User'],'attributes':['id',_0x3a41('0x3'),_0x3a41('0x4')],'raw':!![],'where':{'role':_0x3a41('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x3a41('0x3')],'where':{'role':_0x3a41('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0x3a41('0x3')]};var queryAgents={'raw':!![],'attributes':['id',_0x3a41('0x3')],'where':{'role':_0x3a41('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x3a41('0x3'),_0x3a41('0x7')],'where':{'type':_0x3a41('0x8')}};function getAssociatedResources(_0x5a3e2e,_0x162aaa,_0x570304){return db['UserProfileSection']['findOne']({'where':{'name':_0x5a3e2e,'userProfileId':_0x162aaa},'raw':!![]})[_0x3a41('0x9')](function(_0x57ef75){if(_0x57ef75){if(_0x57ef75[_0x3a41('0xa')]){switch(_0x5a3e2e){case'VoiceQueues':case _0x3a41('0xb'):case _0x3a41('0xc'):case'SmsQueues':case _0x3a41('0xd'):case _0x3a41('0xe'):case _0x3a41('0xf'):return db[_0x570304][_0x3a41('0x10')](queryQueues);case _0x3a41('0x11'):return db[_0x570304]['findAll'](queryTelephones);case _0x3a41('0x12'):return db[_0x570304][_0x3a41('0x10')](queryTrunks);case _0x3a41('0x13'):return db[_0x570304][_0x3a41('0x10')](queryCampaigns);}}else{return db[_0x3a41('0x14')][_0x3a41('0x10')]({'attributes':[_0x3a41('0x15')],'where':{'sectionId':_0x57ef75['id']},'raw':!![]})[_0x3a41('0x9')](function(_0x463d5b){if(_0x463d5b){var _0x37697c={'where':{'id':_[_0x3a41('0x16')](_0x463d5b,'resourceId')},'raw':!![]};switch(_0x570304){case _0x3a41('0x17'):_0x37697c[_0x3a41('0x18')]['role']='telephone';break;case _0x3a41('0x19'):_0x37697c[_0x3a41('0x18')][_0x3a41('0x7')]=_0x3a41('0x8');break;}return db[_0x570304][_0x3a41('0x10')](_0x37697c);}else{return[];}});}}else{return[];}})[_0x3a41('0x9')](function(_0x19d41d){return _0x19d41d;});}function joinOrLeaveQueues(_0x232b8d,_0x5d816d,_0x5c2652,_0x2fa25b){_0x232b8d[_0x5d816d](util[_0x3a41('0x1a')]('%s:queue:%s',_0x5c2652,_0x2fa25b['name']));if(_0x2fa25b['Agents']){for(var _0x8629b5=0x0;_0x8629b5<_0x2fa25b[_0x3a41('0x1b')][_0x3a41('0x1c')];_0x8629b5+=0x1){_0x232b8d[_0x5d816d](util[_0x3a41('0x1a')]('user:%s',_0x2fa25b['Agents'][_0x8629b5][_0x3a41('0x3')]));}}}function joinOrLeave(_0x1ea3fe,_0x4905de,_0x383788){var _0x115b82;if(_0x1ea3fe[_0x3a41('0x1d')]['query']['id']){db[_0x3a41('0x17')][_0x3a41('0x1e')]({'attributes':['id','name',_0x3a41('0x4'),_0x3a41('0x1f')],'where':{'id':_0x1ea3fe[_0x3a41('0x1d')][_0x3a41('0x20')]['id']},'include':[{'model':db[_0x3a41('0x21')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x3a41('0x22')],'as':_0x3a41('0x23'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':_0x3a41('0x24'),'attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x3a41('0x25'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x3a41('0x26'),'attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x3a41('0x27'),'attributes':['id'],'raw':!![]}]})[_0x3a41('0x9')](function(_0x185b95){if(_0x185b95){_0x115b82=_0x185b95;_0x1ea3fe[_0x4905de](util[_0x3a41('0x1a')](_0x3a41('0x28'),_0x185b95[_0x3a41('0x3')]));var _0x9d7a22=[];switch(_0x185b95[_0x3a41('0x4')]){case _0x3a41('0x29'):_0x1ea3fe[_0x4905de](_0x3a41('0x2a'));_0x1ea3fe[_0x4905de](_0x3a41('0x2b'));if(queryQueues[_0x3a41('0x2c')](_0x3a41('0x2d'))){delete queryQueues[_0x3a41('0x2d')];}_0x9d7a22['push'](db['VoiceQueue']['findAll'](queryQueues));_0x9d7a22['push'](db[_0x3a41('0x2e')][_0x3a41('0x10')](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x30')][_0x3a41('0x10')](queryQueues));_0x9d7a22['push'](db['SmsQueue']['findAll'](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x31')]['findAll'](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x32')][_0x3a41('0x10')](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x33')][_0x3a41('0x10')](queryQueues));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x17')][_0x3a41('0x10')](queryTelephones));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x34')][_0x3a41('0x10')](queryTrunks));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x19')][_0x3a41('0x10')](queryCampaigns));_0x9d7a22['push'](db['User'][_0x3a41('0x10')](queryAgents));break;case _0x3a41('0x35'):_0x1ea3fe[_0x4905de]('voice:inbound');_0x1ea3fe[_0x4905de](_0x3a41('0x2b'));_0x9d7a22['push'](getAssociatedResources('VoiceQueues',_0x185b95['userProfileId'],_0x3a41('0x36')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources('ChatQueues',_0x185b95[_0x3a41('0x1f')],_0x3a41('0x2e')));_0x9d7a22['push'](getAssociatedResources(_0x3a41('0xc'),_0x185b95[_0x3a41('0x1f')],'FaxQueue'));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources('SmsQueues',_0x185b95['userProfileId'],'SmsQueue'));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0xd'),_0x185b95['userProfileId'],_0x3a41('0x31')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0xe'),_0x185b95[_0x3a41('0x1f')],_0x3a41('0x32')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0xf'),_0x185b95[_0x3a41('0x1f')],_0x3a41('0x33')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources(_0x3a41('0x11'),_0x185b95[_0x3a41('0x1f')],_0x3a41('0x17')));_0x9d7a22['push'](getAssociatedResources('Trunks',_0x185b95['userProfileId'],_0x3a41('0x34')));_0x9d7a22[_0x3a41('0x2f')](getAssociatedResources('IvrCampaigns',_0x185b95[_0x3a41('0x1f')],'Campaign'));_0x9d7a22[_0x3a41('0x2f')](db[_0x3a41('0x17')][_0x3a41('0x10')](queryAgents));break;case'agent':_0x1ea3fe[_0x4905de](_0x3a41('0x2a'));_0x1ea3fe[_0x4905de](_0x3a41('0x2b'));_0x9d7a22[_0x3a41('0x2f')](_0x185b95['getVoiceQueues']({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x37')]({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x38')]({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22['push'](_0x185b95[_0x3a41('0x39')]({'attributes':['id',_0x3a41('0x3')]}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x3a')]({'attributes':['id','name']}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x3b')]({'attributes':['id','name']}));_0x9d7a22[_0x3a41('0x2f')](_0x185b95[_0x3a41('0x3c')]({'attributes':['id',_0x3a41('0x3')]}));break;}return BPromise[_0x3a41('0x3d')](_0x9d7a22);}})[_0x3a41('0x9')](function(_0x5cbdb5){if(_0x5cbdb5&&_0x5cbdb5[_0x3a41('0x1c')]){for(var _0x4d30f6=0x0;_0x4d30f6<_0x5cbdb5['length'];_0x4d30f6+=0x1){for(var _0x2af115=0x0;_0x2af115<_0x5cbdb5[_0x4d30f6][_0x3a41('0x1c')];_0x2af115+=0x1){switch(_0x4d30f6){case 0x0:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x3e'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x1:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x3f'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x2:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,'fax',_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x3:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,'sms',_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x4:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,'mail',_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x5:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x40'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x6:joinOrLeaveQueues(_0x1ea3fe,_0x4905de,_0x3a41('0x41'),_0x5cbdb5[_0x4d30f6][_0x2af115]);break;case 0x7:if(_0x115b82[_0x3a41('0x4')]!==_0x3a41('0x5'))_0x1ea3fe[_0x4905de](util[_0x3a41('0x1a')](_0x3a41('0x42'),_0x5cbdb5[_0x4d30f6][_0x2af115][_0x3a41('0x3')]));break;case 0x8:if(_0x115b82[_0x3a41('0x4')]!==_0x3a41('0x5'))_0x1ea3fe[_0x4905de](util[_0x3a41('0x1a')](_0x3a41('0x43'),_0x5cbdb5[_0x4d30f6][_0x2af115][_0x3a41('0x3')]));break;case 0x9:if(_0x115b82[_0x3a41('0x4')]!==_0x3a41('0x5'))_0x1ea3fe[_0x4905de](util['format'](_0x3a41('0x44'),_0x5cbdb5[_0x4d30f6][_0x2af115]['type'],_0x5cbdb5[_0x4d30f6][_0x2af115][_0x3a41('0x3')]));break;case 0xa:_0x1ea3fe[_0x4905de](util['format'](_0x3a41('0x28'),_0x5cbdb5[_0x4d30f6][_0x2af115]['name']));break;}}}}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x37dd8f=_[_0x3a41('0x16')](_0x115b82['ChatInteractions'],'id');return _0x115b82[_0x3a41('0x46')](_0x37dd8f)['then'](function(){for(var _0x139614=0x0;_0x139614<_0x37dd8f[_0x3a41('0x1c')];_0x139614+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x48'),{'ChatInteractionId':Number(_0x37dd8f[_0x139614]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x31863a=_[_0x3a41('0x16')](_0x115b82[_0x3a41('0x23')],'id');return _0x115b82['removeMailInteractions'](_0x31863a)[_0x3a41('0x9')](function(){for(var _0x59ae4f=0x0;_0x59ae4f<_0x31863a[_0x3a41('0x1c')];_0x59ae4f+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x49'),{'MailInteractionId':Number(_0x31863a[_0x59ae4f]),'UserId':Number(_0x115b82['id'])});}});}})['then'](function(){if(_0x4905de===_0x3a41('0x45')){var _0xfdc1a7=_[_0x3a41('0x16')](_0x115b82['FaxInteractions'],'id');return _0x115b82[_0x3a41('0x4a')](_0xfdc1a7)[_0x3a41('0x9')](function(){for(var _0x1d2520=0x0;_0x1d2520<_0xfdc1a7[_0x3a41('0x1c')];_0x1d2520+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x4b'),{'FaxInteractionId':Number(_0xfdc1a7[_0x1d2520]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x3e8f9f=_[_0x3a41('0x16')](_0x115b82['SmsInteractions'],'id');return _0x115b82[_0x3a41('0x4c')](_0x3e8f9f)[_0x3a41('0x9')](function(){for(var _0x462294=0x0;_0x462294<_0x3e8f9f[_0x3a41('0x1c')];_0x462294+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x4d'),{'SmsInteractionId':Number(_0x3e8f9f[_0x462294]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x46cf43=_['map'](_0x115b82[_0x3a41('0x26')],'id');return _0x115b82['removeOpenchannelInteractions'](_0x46cf43)[_0x3a41('0x9')](function(){for(var _0x489038=0x0;_0x489038<_0x46cf43[_0x3a41('0x1c')];_0x489038+=0x1){_0x383788[_0x3a41('0x47')](_0x3a41('0x4e'),{'OpenchannelInteractionId':Number(_0x46cf43[_0x489038]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x9')](function(){if(_0x4905de===_0x3a41('0x45')){var _0x13e116=_[_0x3a41('0x16')](_0x115b82[_0x3a41('0x27')],'id');return _0x115b82[_0x3a41('0x4f')](_0x13e116)[_0x3a41('0x9')](function(){for(var _0x500f23=0x0;_0x500f23<_0x13e116[_0x3a41('0x1c')];_0x500f23+=0x1){_0x383788[_0x3a41('0x47')]('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x13e116[_0x500f23]),'UserId':Number(_0x115b82['id'])});}});}})[_0x3a41('0x50')](function(_0x1b9ecc){_0x1ea3fe[_0x3a41('0x51')](_0x1b9ecc);});}}function onDisconnect(_0x2576a8,_0x1b68bf){joinOrLeave(_0x2576a8,_0x3a41('0x45'),_0x1b68bf);}function onConnect(_0x4c05fd){joinOrLeave(_0x4c05fd,_0x3a41('0x52'));}exports[_0x3a41('0x53')]=function(_0x178c27){_0x178c27['on'](_0x3a41('0x54'),function(_0x473ac3){_0x473ac3[_0x3a41('0x55')](0x0);_0x473ac3[_0x3a41('0x56')]=_0x473ac3[_0x3a41('0x57')]['connection']['remoteAddress']+':'+_0x473ac3[_0x3a41('0x57')][_0x3a41('0x54')]['remotePort'];_0x473ac3['connectedAt']=new Date();_0x473ac3[_0x3a41('0x51')]=function(_0x24f471){console[_0x3a41('0x51')](_0x3a41('0x58')+_0x473ac3['nsp']['name']+'['+_0x473ac3[_0x3a41('0x56')]+']',_0x24f471);};_0x473ac3['on'](_0x3a41('0x59'),function(){onDisconnect(_0x473ac3,_0x178c27);_0x473ac3[_0x3a41('0x51')](_0x3a41('0x5a'));});onConnect(_0x473ac3);_0x473ac3[_0x3a41('0x51')](_0x3a41('0x5b'));});};
\ No newline at end of file
index 642b494..c638109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f81=['error','code','Trigger,\x20%s','catch','EventManager','get','channel','direction','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','query','QueryTypes','UserId','User','find','name','fullname','internal','interface','SIP/%s','outgoingmessage','opened','Sequelize','SELECT','changed','closed','event','contact','email','format','default','length','hasOwnProperty','model','hook','callback','toLowerCase','jayson/promise','../logger','triggers','lodash','client','http','Chat','ChatInteraction','afterUpdate','closedinteraction','ChatMessage','afterCreate','newmessage','Sms','SmsInteraction','Whatsapp','newinteraction','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','then','info'];(function(_0xe2d17e,_0x44dc8c){var _0x7302ca=function(_0x38ffe8){while(--_0x38ffe8){_0xe2d17e['push'](_0xe2d17e['shift']());}};_0x7302ca(++_0x44dc8c);}(_0x0f81,0x69));var _0x10f8=function(_0x32ca7a,_0x4a069d){_0x32ca7a=_0x32ca7a-0x0;var _0xab41b9=_0x0f81[_0x32ca7a];return _0xab41b9;};'use strict';var util=require('util');var db=require('../../mysqldb')['db'];var jayson=require(_0x10f8('0x0'));var logger=require(_0x10f8('0x1'))(_0x10f8('0x2'));var _=require(_0x10f8('0x3'));var client=jayson[_0x10f8('0x4')][_0x10f8('0x5')]({'port':0x232a});var triggers=[{'channel':_0x10f8('0x6'),'model':_0x10f8('0x7'),'event':'afterCreate','condition':'newinteraction','callback':afterCreate},{'channel':_0x10f8('0x6'),'model':_0x10f8('0x7'),'event':_0x10f8('0x8'),'condition':_0x10f8('0x9'),'callback':afterUpdate},{'channel':_0x10f8('0x6'),'model':_0x10f8('0xa'),'event':_0x10f8('0xb'),'condition':_0x10f8('0xc'),'callback':afterCreateMessage},{'channel':_0x10f8('0xd'),'model':_0x10f8('0xe'),'event':_0x10f8('0xb'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x10f8('0xd'),'model':_0x10f8('0xe'),'event':_0x10f8('0x8'),'condition':_0x10f8('0x9'),'callback':afterUpdate},{'channel':_0x10f8('0xd'),'model':'SmsMessage','event':_0x10f8('0xb'),'condition':_0x10f8('0xc'),'callback':afterCreateMessage},{'channel':_0x10f8('0xf'),'model':'WhatsappInteraction','event':_0x10f8('0xb'),'condition':_0x10f8('0x10'),'callback':afterCreate},{'channel':'Whatsapp','model':_0x10f8('0x11'),'event':_0x10f8('0x8'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x10f8('0xf'),'model':_0x10f8('0x12'),'event':_0x10f8('0xb'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x10f8('0x13'),'model':_0x10f8('0x14'),'event':_0x10f8('0xb'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x10f8('0x13'),'model':_0x10f8('0x14'),'event':_0x10f8('0x8'),'condition':_0x10f8('0x9'),'callback':afterUpdate},{'channel':_0x10f8('0x13'),'model':'FaxMessage','event':_0x10f8('0xb'),'condition':_0x10f8('0xc'),'callback':afterCreateMessage},{'channel':_0x10f8('0x15'),'model':_0x10f8('0x16'),'event':'afterCreate','condition':_0x10f8('0x10'),'callback':afterCreate},{'channel':_0x10f8('0x15'),'model':_0x10f8('0x16'),'event':'afterUpdate','condition':_0x10f8('0x9'),'callback':afterUpdate},{'channel':_0x10f8('0x15'),'model':_0x10f8('0x17'),'event':_0x10f8('0xb'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0x10f8('0x18'),'model':_0x10f8('0x19'),'event':_0x10f8('0xb'),'condition':_0x10f8('0x10'),'callback':afterCreate},{'channel':_0x10f8('0x18'),'model':_0x10f8('0x19'),'event':'afterUpdate','condition':_0x10f8('0x9'),'callback':afterUpdate},{'channel':'Openchannel','model':'OpenchannelMessage','event':'afterCreate','condition':_0x10f8('0xc'),'callback':afterCreateMessage}];function request(_0x3a1347){return client[_0x10f8('0x1a')]('EventManager',_0x3a1347)[_0x10f8('0x1b')](function(_0x1fea46){logger[_0x10f8('0x1c')]('Trigger,\x20%s','EventManager',_0x1fea46);if(_0x1fea46[_0x10f8('0x1d')]){if(_0x1fea46[_0x10f8('0x1d')][_0x10f8('0x1e')]===0x1f4){logger[_0x10f8('0x1d')](_0x10f8('0x1f'),'EventManager',_0x1fea46[_0x10f8('0x1d')]);}}})[_0x10f8('0x20')](function(_0x250330){logger[_0x10f8('0x1d')](_0x10f8('0x1f'),_0x10f8('0x21'),_0x250330);});}function afterCreateMessage(_0x53d1de,_0x2002a2){return function(_0x2a33c9,_0x2daf1c){_0x2a33c9=_0x2a33c9[_0x10f8('0x22')]({'plain':!![]});_0x2a33c9[_0x10f8('0x23')]=_0x53d1de;_0x2a33c9['event']=_0x2a33c9[_0x10f8('0x24')];var _0x264935=_0x10f8('0x25')+_0x2a33c9[_0x10f8('0x26')];return db[_0x10f8('0x27')][_0x10f8('0x28')](_0x264935,{'type':db['Sequelize'][_0x10f8('0x29')]['SELECT'],'raw':!![]})[_0x10f8('0x1b')](function(_0x5268c6){return _0x5268c6;})[_0x10f8('0x1b')](function(_0x37b3d5){if(_0x37b3d5){_0x2a33c9['contact']=_0x37b3d5[0x0];}if(_0x2a33c9[_0x10f8('0x2a')]){return db[_0x10f8('0x2b')][_0x10f8('0x2c')]({'where':{'id':_0x2a33c9[_0x10f8('0x2a')]},'attributes':['id',_0x10f8('0x2d'),_0x10f8('0x2e'),'email',_0x10f8('0x2f')],'raw':!![]})[_0x10f8('0x1b')](function(_0x225331){_0x2a33c9[_0x10f8('0x30')]=util['format'](_0x10f8('0x31'),_0x225331[_0x10f8('0x2d')]);_0x2a33c9[_0x10f8('0x23')]=_0x53d1de;_0x2a33c9['agent']=_0x225331;return request({'event':'incomingmessage','message':_0x2a33c9});})[_0x10f8('0x20')](function(_0x5ad6fd){console[_0x10f8('0x1d')](_0x5ad6fd);});}else{return request({'event':_0x10f8('0x32'),'message':_0x2a33c9});}});};}function afterCreate(_0x4d794a,_0x12c81b){return function(_0x18b6f1,_0x117373){_0x18b6f1=_0x18b6f1[_0x10f8('0x22')]({'plain':!![]});_0x18b6f1[_0x10f8('0x23')]=_0x4d794a;_0x18b6f1['event']=_0x10f8('0x33');var _0x52c168=_0x10f8('0x25')+_0x18b6f1[_0x10f8('0x26')];return db[_0x10f8('0x27')][_0x10f8('0x28')](_0x52c168,{'type':db[_0x10f8('0x34')][_0x10f8('0x29')][_0x10f8('0x35')],'raw':!![]})[_0x10f8('0x1b')](function(_0x5a1161){return _0x5a1161;})[_0x10f8('0x1b')](function(_0x31a850){if(_0x31a850){_0x18b6f1['contact']=_0x31a850[0x0];}return request({'event':_0x12c81b,'message':_0x18b6f1});});};}function afterUpdate(_0x35effe,_0x10b5ea){return function(_0x550c5c,_0xa78bfd){if(_0x550c5c[_0x10f8('0x36')](_0x10f8('0x37'))&&_0x550c5c['closed']){_0x550c5c=_0x550c5c['get']({'plain':!![]});_0x550c5c[_0x10f8('0x23')]=_0x35effe;_0x550c5c[_0x10f8('0x38')]=_0x10f8('0x37');var _0x139ace=_0x10f8('0x25')+_0x550c5c[_0x10f8('0x26')];return db[_0x10f8('0x27')][_0x10f8('0x28')](_0x139ace,{'type':db[_0x10f8('0x34')][_0x10f8('0x29')][_0x10f8('0x35')],'raw':!![]})[_0x10f8('0x1b')](function(_0x31b178){return _0x31b178;})[_0x10f8('0x1b')](function(_0x1bfa61){if(_0x1bfa61){_0x550c5c[_0x10f8('0x39')]=_0x1bfa61[0x0];}if(_0x550c5c['UserId']){return db[_0x10f8('0x2b')][_0x10f8('0x2c')]({'where':{'id':_0x550c5c[_0x10f8('0x2a')]},'attributes':['id','name',_0x10f8('0x2e'),_0x10f8('0x3a'),'internal'],'raw':!![]})[_0x10f8('0x1b')](function(_0x8a4178){_0x550c5c['interface']=util[_0x10f8('0x3b')](_0x10f8('0x31'),_0x8a4178[_0x10f8('0x2d')]);_0x550c5c['agent']=_0x8a4178;return request({'event':_0x10b5ea,'message':_0x550c5c});})[_0x10f8('0x20')](function(_0x107909){console['error'](_0x107909);});}else{return request({'event':_0x10b5ea,'message':_0x550c5c});}});}};}exports[_0x10f8('0x3c')]=function(){for(var _0x219d59=0x0;_0x219d59<triggers[_0x10f8('0x3d')];_0x219d59+=0x1){if(db[_0x10f8('0x3e')](triggers[_0x219d59][_0x10f8('0x3f')])){db[triggers[_0x219d59][_0x10f8('0x3f')]][_0x10f8('0x40')](triggers[_0x219d59][_0x10f8('0x38')],triggers[_0x219d59][_0x10f8('0x41')](triggers[_0x219d59]['channel'][_0x10f8('0x42')](),triggers[_0x219d59]['condition']));}}};
\ No newline at end of file
+var _0x8f14=['sequelize','query','Sequelize','QueryTypes','SELECT','then','contact','find','UserId','name','fullname','interface','format','channel','agent','incomingmessage','outgoingmessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','changed','closed','User','SIP/%s','default','length','model','callback','toLowerCase','condition','util','../../mysqldb','jayson/promise','triggers','lodash','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','Sms','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','Mail','MailInteraction','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','code','catch','get','motionChannel','event','direction','ContactId'];(function(_0x25d42d,_0x2fdcc6){var _0x2012dc=function(_0x5d7e3e){while(--_0x5d7e3e){_0x25d42d['push'](_0x25d42d['shift']());}};_0x2012dc(++_0x2fdcc6);}(_0x8f14,0xa0));var _0x48f1=function(_0x555283,_0x4289df){_0x555283=_0x555283-0x0;var _0x37f532=_0x8f14[_0x555283];return _0x37f532;};'use strict';var util=require(_0x48f1('0x0'));var db=require(_0x48f1('0x1'))['db'];var jayson=require(_0x48f1('0x2'));var logger=require('../logger')(_0x48f1('0x3'));var _=require(_0x48f1('0x4'));var client=jayson[_0x48f1('0x5')][_0x48f1('0x6')]({'port':0x232a});var triggers=[{'channel':_0x48f1('0x7'),'model':_0x48f1('0x8'),'event':_0x48f1('0x9'),'condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':_0x48f1('0x7'),'model':_0x48f1('0x8'),'event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':'Chat','model':_0x48f1('0xd'),'event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0xf'),'model':'SmsInteraction','event':_0x48f1('0x9'),'condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':'Sms','model':'SmsInteraction','event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0xf'),'model':'SmsMessage','event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x10'),'model':'WhatsappInteraction','event':_0x48f1('0x9'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x48f1('0x10'),'model':_0x48f1('0x11'),'event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0x10'),'model':_0x48f1('0x12'),'event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x13'),'model':_0x48f1('0x14'),'event':'afterCreate','condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':_0x48f1('0x13'),'model':'FaxInteraction','event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':'Fax','model':'FaxMessage','event':_0x48f1('0x9'),'condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x15'),'model':'MailInteraction','event':'afterCreate','condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':_0x48f1('0x15'),'model':_0x48f1('0x16'),'event':_0x48f1('0xb'),'condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0x15'),'model':'MailMessage','event':_0x48f1('0x9'),'condition':_0x48f1('0xe'),'callback':afterCreateMessage},{'channel':_0x48f1('0x17'),'model':_0x48f1('0x18'),'event':'afterCreate','condition':_0x48f1('0xa'),'callback':afterCreate},{'channel':'Openchannel','model':_0x48f1('0x18'),'event':'afterUpdate','condition':_0x48f1('0xc'),'callback':afterUpdate},{'channel':_0x48f1('0x17'),'model':_0x48f1('0x19'),'event':'afterCreate','condition':_0x48f1('0xe'),'callback':afterCreateMessage}];function request(_0x4cd38f){return client[_0x48f1('0x1a')](_0x48f1('0x1b'),_0x4cd38f)['then'](function(_0x599150){logger[_0x48f1('0x1c')](_0x48f1('0x1d'),_0x48f1('0x1b'),_0x599150);if(_0x599150[_0x48f1('0x1e')]){if(_0x599150['error'][_0x48f1('0x1f')]===0x1f4){logger[_0x48f1('0x1e')](_0x48f1('0x1d'),_0x48f1('0x1b'),_0x599150[_0x48f1('0x1e')]);}}})[_0x48f1('0x20')](function(_0x4a492d){logger[_0x48f1('0x1e')](_0x48f1('0x1d'),_0x48f1('0x1b'),_0x4a492d);});}function afterCreateMessage(_0x2119a6,_0x555dc5){return function(_0x5567f4,_0x5f5aa2){_0x5567f4=_0x5567f4[_0x48f1('0x21')]({'plain':!![]});_0x5567f4['channel']=_0x2119a6;_0x5567f4[_0x48f1('0x22')]=_0x2119a6;_0x5567f4[_0x48f1('0x23')]=_0x5567f4[_0x48f1('0x24')];var _0x273d50='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5567f4[_0x48f1('0x25')];return db[_0x48f1('0x26')][_0x48f1('0x27')](_0x273d50,{'type':db[_0x48f1('0x28')][_0x48f1('0x29')][_0x48f1('0x2a')],'raw':!![]})['then'](function(_0x2a7d76){return _0x2a7d76;})[_0x48f1('0x2b')](function(_0x541e46){if(_0x541e46){_0x5567f4[_0x48f1('0x2c')]=_0x541e46[0x0];}if(_0x5567f4['UserId']){return db['User'][_0x48f1('0x2d')]({'where':{'id':_0x5567f4[_0x48f1('0x2e')]},'attributes':['id',_0x48f1('0x2f'),_0x48f1('0x30'),'email','internal'],'raw':!![]})[_0x48f1('0x2b')](function(_0x5d488e){_0x5567f4[_0x48f1('0x31')]=util[_0x48f1('0x32')]('SIP/%s',_0x5d488e[_0x48f1('0x2f')]);_0x5567f4[_0x48f1('0x33')]=_0x2119a6;_0x5567f4[_0x48f1('0x34')]=_0x5d488e;return request({'event':_0x48f1('0x35'),'message':_0x5567f4});})['catch'](function(_0x572346){console[_0x48f1('0x1e')](_0x572346);});}else{return request({'event':_0x48f1('0x36'),'message':_0x5567f4});}});};}function afterCreate(_0x1ed3b7,_0x1e64ce){return function(_0x20ac61,_0x3d372d){_0x20ac61=_0x20ac61[_0x48f1('0x21')]({'plain':!![]});_0x20ac61['channel']=_0x1ed3b7;_0x20ac61[_0x48f1('0x22')]=_0x1ed3b7;_0x20ac61[_0x48f1('0x23')]='opened';var _0x373a2f=_0x48f1('0x37')+_0x20ac61[_0x48f1('0x25')];return db[_0x48f1('0x26')]['query'](_0x373a2f,{'type':db['Sequelize'][_0x48f1('0x29')][_0x48f1('0x2a')],'raw':!![]})[_0x48f1('0x2b')](function(_0x58d1f2){return _0x58d1f2;})[_0x48f1('0x2b')](function(_0x549c3e){if(_0x549c3e){_0x20ac61['contact']=_0x549c3e[0x0];}return request({'event':_0x1e64ce,'message':_0x20ac61});});};}function afterUpdate(_0x13fbe1,_0x45a98a){return function(_0x411f48,_0x27ae1e){if(_0x411f48[_0x48f1('0x38')](_0x48f1('0x39'))&&_0x411f48[_0x48f1('0x39')]){_0x411f48=_0x411f48['get']({'plain':!![]});_0x411f48['channel']=_0x13fbe1;_0x411f48[_0x48f1('0x22')]=_0x13fbe1;_0x411f48[_0x48f1('0x23')]=_0x48f1('0x39');var _0x51a0b1=_0x48f1('0x37')+_0x411f48[_0x48f1('0x25')];return db[_0x48f1('0x26')][_0x48f1('0x27')](_0x51a0b1,{'type':db[_0x48f1('0x28')][_0x48f1('0x29')][_0x48f1('0x2a')],'raw':!![]})[_0x48f1('0x2b')](function(_0x1a282b){return _0x1a282b;})[_0x48f1('0x2b')](function(_0x5a81cf){if(_0x5a81cf){_0x411f48['contact']=_0x5a81cf[0x0];}if(_0x411f48[_0x48f1('0x2e')]){return db[_0x48f1('0x3a')][_0x48f1('0x2d')]({'where':{'id':_0x411f48[_0x48f1('0x2e')]},'attributes':['id',_0x48f1('0x2f'),_0x48f1('0x30'),'email','internal'],'raw':!![]})['then'](function(_0x552f14){_0x411f48[_0x48f1('0x31')]=util['format'](_0x48f1('0x3b'),_0x552f14[_0x48f1('0x2f')]);_0x411f48[_0x48f1('0x34')]=_0x552f14;return request({'event':_0x45a98a,'message':_0x411f48});})[_0x48f1('0x20')](function(_0x28b305){console[_0x48f1('0x1e')](_0x28b305);});}else{return request({'event':_0x45a98a,'message':_0x411f48});}});}};}exports[_0x48f1('0x3c')]=function(){for(var _0x5c95f0=0x0;_0x5c95f0<triggers[_0x48f1('0x3d')];_0x5c95f0+=0x1){if(db['hasOwnProperty'](triggers[_0x5c95f0][_0x48f1('0x3e')])){db[triggers[_0x5c95f0][_0x48f1('0x3e')]]['hook'](triggers[_0x5c95f0][_0x48f1('0x23')],triggers[_0x5c95f0][_0x48f1('0x3f')](triggers[_0x5c95f0][_0x48f1('0x33')][_0x48f1('0x40')](),triggers[_0x5c95f0][_0x48f1('0x41')]));}}};
\ No newline at end of file
index 224f4ed..0a906e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa219=['bluebird','../mysqldb','./license/util','mail','fax','sms','whatsapp','getChannels','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','User','count','then','agents','lodash'];(function(_0x104b35,_0x13f218){var _0x55584d=function(_0x2bbb71){while(--_0x2bbb71){_0x104b35['push'](_0x104b35['shift']());}};_0x55584d(++_0x13f218);}(_0xa219,0xe3));var _0x9a21=function(_0x59d0cc,_0xa7c52b){_0x59d0cc=_0x59d0cc-0x0;var _0x2ae79f=_0xa219[_0x59d0cc];return _0x2ae79f;};'use strict';var _=require(_0x9a21('0x0'));var BPromise=require(_0x9a21('0x1'));var db=require(_0x9a21('0x2'))['db'];var util=require(_0x9a21('0x3'));var channels=['voice',_0x9a21('0x4'),'chat',_0x9a21('0x5'),_0x9a21('0x6'),_0x9a21('0x7'),'openchannel'];exports[_0x9a21('0x8')]=function(){return channels;};exports['isValidChannel']=function(_0x59f794){_0x59f794=_0x59f794['toLowerCase']();return _[_0x9a21('0x9')](channels,_0x59f794);};exports[_0x9a21('0xa')]=function(_0x142740,_0x5ca80b,_0x4712b8,_0x274bbd){var _0x1f4ac1={'loginAttempts':_0x5ca80b,'blocked':_0x4712b8};if(!_[_0x9a21('0xb')](_0x274bbd)){_0x1f4ac1[_0x9a21('0xc')]=_0x274bbd;}return _0x142740[_0x9a21('0xd')](_0x1f4ac1);};exports[_0x9a21('0xe')]=function(_0x254f8b){return new BPromise(function(_0x5c3c28,_0x172461){var _0x47cb9d=0x0;if(_0x254f8b['role']!=='agent'){_0x5c3c28(_0x254f8b);}db[_0x9a21('0xf')][_0x9a21('0x10')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x254f8b['id']}}})[_0x9a21('0x11')](function(_0x5daf0d){_0x47cb9d=_0x5daf0d;return util[_0x9a21('0xe')]();})[_0x9a21('0x11')](function(_0x4dff91){if(_0x4dff91&&_0x4dff91['agents']&&_0x47cb9d>=_0x4dff91[_0x9a21('0x12')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x5c3c28(_0x254f8b);})['catch'](function(_0x3bcdba){_0x172461(_0x3bcdba);});});};
\ No newline at end of file
+var _0xc9c7=['agents','Maximum\x20login\x20has\x20been\x20reached','lodash','bluebird','./license/util','voice','mail','chat','sms','whatsapp','openchannel','getChannels','isValidChannel','toLowerCase','includes','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','User','then'];(function(_0x1bb72d,_0x2b333b){var _0x47c752=function(_0x3fa6f5){while(--_0x3fa6f5){_0x1bb72d['push'](_0x1bb72d['shift']());}};_0x47c752(++_0x2b333b);}(_0xc9c7,0x8c));var _0x7c9c=function(_0x4b2a19,_0x1aab1a){_0x4b2a19=_0x4b2a19-0x0;var _0x1e7d38=_0xc9c7[_0x4b2a19];return _0x1e7d38;};'use strict';var _=require(_0x7c9c('0x0'));var BPromise=require(_0x7c9c('0x1'));var db=require('../mysqldb')['db'];var util=require(_0x7c9c('0x2'));var channels=[_0x7c9c('0x3'),_0x7c9c('0x4'),_0x7c9c('0x5'),'fax',_0x7c9c('0x6'),_0x7c9c('0x7'),_0x7c9c('0x8')];exports[_0x7c9c('0x9')]=function(){return channels;};exports[_0x7c9c('0xa')]=function(_0x234017){_0x234017=_0x234017[_0x7c9c('0xb')]();return _[_0x7c9c('0xc')](channels,_0x234017);};exports[_0x7c9c('0xd')]=function(_0x4b0835,_0x3f96fa,_0x44a5d4,_0x1f1217){var _0x4750d2={'loginAttempts':_0x3f96fa,'blocked':_0x44a5d4};if(!_[_0x7c9c('0xe')](_0x1f1217)){_0x4750d2[_0x7c9c('0xf')]=_0x1f1217;}return _0x4b0835[_0x7c9c('0x10')](_0x4750d2);};exports[_0x7c9c('0x11')]=function(_0x3bc209){return new BPromise(function(_0x250ff6,_0x17d70f){var _0xc3306e=0x0;if(_0x3bc209[_0x7c9c('0x12')]!=='agent'){_0x250ff6(_0x3bc209);}db[_0x7c9c('0x13')]['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x3bc209['id']}}})[_0x7c9c('0x14')](function(_0x2cc912){_0xc3306e=_0x2cc912;return util[_0x7c9c('0x11')]();})['then'](function(_0x4a6e93){if(_0x4a6e93&&_0x4a6e93[_0x7c9c('0x15')]&&_0xc3306e>=_0x4a6e93[_0x7c9c('0x15')]){throw Error(_0x7c9c('0x16'));}_0x250ff6(_0x3bc209);})['catch'](function(_0x293655){_0x17d70f(_0x293655);});});};
\ No newline at end of file
index 6fc89fe..ad13e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74e=['render','json','send','exports','404','status'];(function(_0x4e264a,_0x2c1aba){var _0x1d399a=function(_0x26a50f){while(--_0x26a50f){_0x4e264a['push'](_0x4e264a['shift']());}};_0x1d399a(++_0x2c1aba);}(_0xa74e,0x8d));var _0xea74=function(_0x5b7c83,_0x6f0445){_0x5b7c83=_0x5b7c83-0x0;var _0x153434=_0xa74e[_0x5b7c83];return _0x153434;};'use strict';module[_0xea74('0x0')][0x194]=function pageNotFound(_0x9bb887,_0x487d7a){var _0x573f4b=_0xea74('0x1');var _0x137a1c=0x194;var _0x1b95c6={'status':_0x137a1c};_0x487d7a['status'](_0x1b95c6[_0xea74('0x2')]);_0x487d7a[_0xea74('0x3')](_0x573f4b,{},function(_0x319b72,_0x21e45b){if(_0x319b72){return _0x487d7a['status'](_0x1b95c6[_0xea74('0x2')])[_0xea74('0x4')](_0x1b95c6);}_0x487d7a[_0xea74('0x5')](_0x21e45b);});};
\ No newline at end of file
+var _0x119c=['render','send','404','status'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0x119c,0xea));var _0xc119=function(_0x1795df,_0xcb261e){_0x1795df=_0x1795df-0x0;var _0x3f13c0=_0x119c[_0x1795df];return _0x3f13c0;};'use strict';module['exports'][0x194]=function pageNotFound(_0xa9d064,_0x5d31b3){var _0x3f93eb=_0xc119('0x0');var _0x906239=0x194;var _0x540eeb={'status':_0x906239};_0x5d31b3[_0xc119('0x1')](_0x540eeb[_0xc119('0x1')]);_0x5d31b3[_0xc119('0x2')](_0x3f93eb,{},function(_0x573014,_0xc67c68){if(_0x573014){return _0x5d31b3['status'](_0x540eeb[_0xc119('0x1')])['json'](_0x540eeb);}_0x5d31b3[_0xc119('0x3')](_0xc67c68);});};
\ No newline at end of file
index 2dc4456..0a5c292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb552=['FreshdeskAccount','FreshdeskConfiguration','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','../api/setting/setting.model','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','../api/migration/migration.model','../api/attachment/attachment.model','Plugin','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','SmsTransferReport','CmList','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','cascade','hasMany','Recordings','UserId','VoiceQueuesRt','Extensions','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteraction','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteraction','WhatsappInteractions','UserNotifications','belongsTo','Groups','chat_group_has_users','belongsToMany','cm_user_has_contacts','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','MailQueue','FaxQueues','UserFaxQueue','SmsQueues','WhatsappQueues','VoicePrefix','VoicePrefixes','user_has_voice_prefixes','ChatWebsites','user_has_chat_websites','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','VoiceMusicOnHold','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','IntervalId','Pause','mandatoryDispositionPause','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','VoiceQueueReport','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','Imap','Dispositions','Interactions','Applications','List','ListId','Template','TemplateId','Agents','team_has_mail_queues','MailInteractionId','Tags','mail_interaction_has_tags','ThroughTags','Users','Interaction','Account','ChatWebsiteId','ChatOfflineMessageId','restrict','Items','FaxAccountId','mandatoryDispositionPauseId','user_has_fax_accounts','FaxInteractionId','Owner','Attachment','AttachmentId','team_has_fax_queues','FaxQueueReport','Answers','SmsAccountId','SmsMessage','TagId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelInteractionId','openchannel_interaction_has_tags','OpenchannelQueueId','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Queue','Website','ChatInteractionId','chat_interaction_has_tags','Attachments','Contacts','CompanyId','Hoppers','ChatInteractions','CmCompany','Company','cm_contact_has_tags','Agent','Campaign','CampaignId','OwnerId','All','OneAll','Any','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','DefaultReportId','Mohs','fax_interaction_has_tags','whatsapp_interaction_has_tags','AllConditions','AllCondition','TriggerAllId','AnyConditions','TriggerAnyId','TriggerId','CustomReportId','Fields','MetricId','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','FieldId','Subject','VariableId','SugarcrmAccount','Field','DeskConfiguration','int_desk_configuration_has_tags','Description','int_zendesk_configuration_has_tags','ChatQueueReport','FromId','SessionId','ProjectId','ChatQueues','OpenchannelQueues','WhatsappQueue','SquareProjectId','campaigns_has_cm_lists','FromAccount','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToAccount','FromAgent','ToChatQueueId','FromFaxAccountId','ToFaxQueueId','ToQueue','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','voice_queues_has_cm_lists','userProfileId','UserProfileSection','UserProfileSections','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappQueueReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','team_has_whatsapp_queues','exports','../config/environment','jstz','determine','sequelize','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8mb4','name','utf8_general_ci','database','options','sequelizeHistory','username','password','User','import','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','../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','VoiceAgentReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','ChatApplication','../api/chatApplication/chatApplication.model','../api/chatInteraction/chatInteraction.model','ChatMessage','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/pause/pause.model','Cdr','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','../api/integration/integration.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','DeskAccount','DeskField','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0xb552,0x133));var _0x2b55=function(_0x1e7548,_0x5da5a4){_0x1e7548=_0x1e7548-0x0;var _0x48c3ec=_0xb552[_0x1e7548];return _0x48c3ec;};'use strict';var config=require(_0x2b55('0x0'));var Sequelize=require('sequelize');var _=require('lodash');var jstz=require(_0x2b55('0x1'));var timezone=jstz[_0x2b55('0x2')]();config[_0x2b55('0x3')]=_[_0x2b55('0x4')](config[_0x2b55('0x3')],{'database':_0x2b55('0x5'),'username':_0x2b55('0x6'),'password':_0x2b55('0x7'),'options':{'host':_0x2b55('0x8'),'port':0xcea,'dialect':_0x2b55('0x9'),'dialectOptions':{'charset':_0x2b55('0xa')},'logging':![],'timezone':timezone[_0x2b55('0xb')](),'define':{'charset':'utf8','collate':_0x2b55('0xc')}}});config['sequelizeHistory']=_[_0x2b55('0x4')](config['sequelizeHistory'],{'database':_0x2b55('0x5'),'username':_0x2b55('0x6'),'password':_0x2b55('0x7'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0x2b55('0x9'),'dialectOptions':{'charset':_0x2b55('0xa')},'logging':![],'timezone':timezone[_0x2b55('0xb')](),'define':{'charset':'utf8','collate':_0x2b55('0xc')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x2b55('0x3')][_0x2b55('0xd')],config['sequelize']['username'],config[_0x2b55('0x3')]['password'],config['sequelize'][_0x2b55('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x2b55('0xf')][_0x2b55('0xd')],config[_0x2b55('0xf')][_0x2b55('0x10')],config[_0x2b55('0xf')][_0x2b55('0x11')],config[_0x2b55('0xf')][_0x2b55('0xe')])};db[_0x2b55('0x12')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x14'));db['VoiceChanSpy']=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x15'));db[_0x2b55('0x16')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x17'));db[_0x2b55('0x18')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x19'));db['VoiceMusicOnHold']=db[_0x2b55('0x3')]['import'](_0x2b55('0x1a'));db[_0x2b55('0x1b')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x1c'));db[_0x2b55('0x1d')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x1e'));db[_0x2b55('0x1f')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x20'));db[_0x2b55('0x21')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x22'));db[_0x2b55('0x23')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x24'));db[_0x2b55('0x25')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x2b55('0x26')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x27'));db[_0x2b55('0x28')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/voiceAgentReport/voiceAgentReport.model');db['VoiceQueueReport']=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x29'));db[_0x2b55('0x2a')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x2b'));db[_0x2b55('0x2c')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x2d'));db[_0x2b55('0x2e')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x2f'));db[_0x2b55('0x30')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x31'));db[_0x2b55('0x32')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x33'));db[_0x2b55('0x34')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x35'));db[_0x2b55('0x36')]=db[_0x2b55('0x3')]['import']('../api/userMailQueue/userMailQueue.model');db['UserFaxQueue']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x37'));db[_0x2b55('0x38')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x39'));db[_0x2b55('0x3a')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x3b'));db[_0x2b55('0x3c')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x3d'));db[_0x2b55('0x3e')]=db[_0x2b55('0x3')]['import']('../api/mailServerIn/mailServerIn.model');db[_0x2b55('0x3f')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x40'));db[_0x2b55('0x41')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x42'));db['MailQueue']=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/mailQueue/mailQueue.model');db[_0x2b55('0x43')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x44'));db[_0x2b55('0x45')]=db[_0x2b55('0x3')]['import']('../api/mailInteraction/mailInteraction.model');db[_0x2b55('0x46')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x47'));db[_0x2b55('0x48')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x49'));db[_0x2b55('0x4a')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x4b'));db[_0x2b55('0x4c')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x4d'));db[_0x2b55('0x4e')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/dashboardItem/dashboardItem.model');db[_0x2b55('0x4f')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x50'));db[_0x2b55('0x51')]=db['sequelize'][_0x2b55('0x13')]('../api/faxApplication/faxApplication.model');db[_0x2b55('0x52')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x53'));db[_0x2b55('0x54')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x55'));db[_0x2b55('0x56')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x57'));db['FaxQueueReport']=db['sequelize']['import'](_0x2b55('0x58'));db[_0x2b55('0x59')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x5a'));db[_0x2b55('0x5b')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x5c'));db[_0x2b55('0x5d')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x5e'));db['SmsMessage']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x5f'));db[_0x2b55('0x60')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x61'));db[_0x2b55('0x62')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x63'));db[_0x2b55('0x64')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x65'));db[_0x2b55('0x66')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x2b55('0x67')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x68'));db[_0x2b55('0x69')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x6a'));db[_0x2b55('0x6b')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x6c'));db['OpenchannelQueueReport']=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x2b55('0x6d')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x6e'));db['ChatInteraction']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x6f'));db[_0x2b55('0x70')]=db[_0x2b55('0x3')]['import']('../api/chatMessage/chatMessage.model');db[_0x2b55('0x71')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x72'));db[_0x2b55('0x73')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x74'));db[_0x2b55('0x75')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x76'));db[_0x2b55('0x77')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x78'));db['CmCompany']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x79'));db[_0x2b55('0x7a')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x7b'));db[_0x2b55('0x7c')]=db[_0x2b55('0x3')]['import']('../api/cmHopper/cmHopper.model');db[_0x2b55('0x7d')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x7e'));db[_0x2b55('0x7f')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x80'));db[_0x2b55('0x81')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x82'));db[_0x2b55('0x83')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x84'));db[_0x2b55('0x85')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x86'));db[_0x2b55('0x87')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x88'));db[_0x2b55('0x89')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x8a'));db[_0x2b55('0x8b')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x8c'));db[_0x2b55('0x8d')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x8e'));db[_0x2b55('0x8f')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x90'));db[_0x2b55('0x91')]=db[_0x2b55('0x3')]['import']('../api/interval/interval.model');db['Pause']=db[_0x2b55('0x3')]['import'](_0x2b55('0x92'));db[_0x2b55('0x93')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/cdr/cdr.model');db[_0x2b55('0x94')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0x2b55('0x95')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x96'));db[_0x2b55('0x97')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x98'));db[_0x2b55('0x99')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x9a'));db['Template']=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/template/template.model');db[_0x2b55('0x9b')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x9c'));db[_0x2b55('0x9d')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x9e'));db['Integration']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x9f'));db['IntegrationReport']=db[_0x2b55('0x3')]['import']('../api/integrationReport/integrationReport.model');db[_0x2b55('0xa0')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xa1'));db[_0x2b55('0xa2')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xa3'));db['AnalyticExtractedReport']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xa4'));db[_0x2b55('0xa5')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xa6'));db[_0x2b55('0xa7')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xa8'));db[_0x2b55('0xa9')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xaa'));db[_0x2b55('0xab')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xac'));db['SalesforceConfiguration']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xad'));db[_0x2b55('0xae')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/intSalesforceField/intSalesforceField.model');db['SugarcrmAccount']=db[_0x2b55('0x3')]['import'](_0x2b55('0xaf'));db[_0x2b55('0xb0')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xb1'));db[_0x2b55('0xb2')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xb3'));db[_0x2b55('0xb4')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/intDeskAccount/intDeskAccount.model');db['DeskConfiguration']=db[_0x2b55('0x3')]['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x2b55('0xb5')]=db['sequelize'][_0x2b55('0x13')]('../api/intDeskField/intDeskField.model');db[_0x2b55('0xb6')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xb7'));db[_0x2b55('0xb8')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xb9'));db[_0x2b55('0xba')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xbb'));db[_0x2b55('0xbc')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0x2b55('0xbd')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xbe'));db[_0x2b55('0xbf')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/intZendeskField/intZendeskField.model');db[_0x2b55('0xc0')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x2b55('0xc1')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model');db[_0x2b55('0xc2')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xc3'));db[_0x2b55('0xc4')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xc5'));db[_0x2b55('0xc6')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xc7'));db[_0x2b55('0xc8')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xc9'));db[_0x2b55('0xca')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xcb'));db[_0x2b55('0xcc')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xcd'));db[_0x2b55('0xce')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xcf'));db[_0x2b55('0xd0')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xd1'));db[_0x2b55('0xd2')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xd3'));db[_0x2b55('0xd4')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xd5'));db[_0x2b55('0xd6')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xd7'));db[_0x2b55('0xd8')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xd9'));db[_0x2b55('0xda')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xdb'));db['Integration']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x9f'));db['Network']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xdc'));db['ChatQueueReport']=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xdd'));db[_0x2b55('0xde')]=db['sequelize'][_0x2b55('0x13')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x2b55('0xdf')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xe0'));db[_0x2b55('0xe1')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0x2b55('0xe2')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xe3'));db[_0x2b55('0xe4')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xe5'));db[_0x2b55('0xe6')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xe7'));db[_0x2b55('0xe8')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/squareReportDetail/squareReportDetail.model');db[_0x2b55('0xe9')]=db['sequelize'][_0x2b55('0x13')]('../api/jscriptyProject/jscriptyProject.model');db['Setting']=db[_0x2b55('0x3')]['import'](_0x2b55('0xea'));db[_0x2b55('0xeb')]=db[_0x2b55('0x3')]['import'](_0x2b55('0xec'));db[_0x2b55('0xed')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xee'));db[_0x2b55('0xef')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xf0'));db[_0x2b55('0xf1')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xf2'));db[_0x2b55('0xf3')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xf4'));db[_0x2b55('0xf5')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xf6'));db['Campaign']=db[_0x2b55('0x3')]['import'](_0x2b55('0xf7'));db['Migration']=db['sequelize'][_0x2b55('0x13')](_0x2b55('0xf8'));db['Attachment']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xf9'));db[_0x2b55('0xfa')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/plugin/plugin.model');db[_0x2b55('0xfb')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0xfc'));db[_0x2b55('0xfd')]=db['sequelize']['import'](_0x2b55('0xfe'));db[_0x2b55('0xff')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x100'));db[_0x2b55('0x101')]=db[_0x2b55('0x3')]['import']('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0x2b55('0x102')]=db[_0x2b55('0x3')][_0x2b55('0x13')]('../api/smsTransferReport/smsTransferReport.model');db[_0x2b55('0x103')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x104'));db['VoicePrefix']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x105'));db[_0x2b55('0x106')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x107'));db['UserProfileSection']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x108'));db[_0x2b55('0x109')]=db['sequelize'][_0x2b55('0x13')]('../api/userProfileResource/userProfileResource.model');db[_0x2b55('0x10a')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x10b'));db[_0x2b55('0x10c')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x10d'));db[_0x2b55('0x10e')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x10f'));db['WhatsappInteraction']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x110'));db[_0x2b55('0x111')]=db[_0x2b55('0x3')]['import'](_0x2b55('0x112'));db['WhatsappQueueReport']=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x113'));db[_0x2b55('0x114')]=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x115'));db['WhatsappQueue']=db[_0x2b55('0x3')][_0x2b55('0x13')](_0x2b55('0x116'));db[_0x2b55('0x117')]=db['sequelize'][_0x2b55('0x13')](_0x2b55('0x118'));db[_0x2b55('0x119')]=db['sequelize']['import'](_0x2b55('0x11a'));db[_0x2b55('0x12')][_0x2b55('0x11b')](db[_0x2b55('0x21')],{'as':_0x2b55('0x21'),'onDelete':_0x2b55('0x11c'),'foreignKey':'UserId'});db['User'][_0x2b55('0x11d')](db[_0x2b55('0x1d')],{'as':_0x2b55('0x11e'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db['UserVoiceQueueRt'],{'as':_0x2b55('0x120'),'foreignKey':'UserId'});db[_0x2b55('0x12')]['hasMany'](db['VoiceExtension'],{'as':_0x2b55('0x121'),'onDelete':_0x2b55('0x11c'),'hooks':!![]});db[_0x2b55('0x12')]['hasMany'](db[_0x2b55('0x7f')],{'as':_0x2b55('0x122'),'foreignKey':'UserId'});db[_0x2b55('0x12')][_0x2b55('0x11d')](db[_0x2b55('0x81')],{'as':_0x2b55('0x123'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db[_0x2b55('0x83')],{'as':_0x2b55('0x83'),'foreignKey':_0x2b55('0x11f')});db['User'][_0x2b55('0x11d')](db['OpenchannelInteraction'],{'as':_0x2b55('0x124'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db[_0x2b55('0x125')],{'as':'ChatInteractions','foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db['SmsInteraction'],{'as':_0x2b55('0x126'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db[_0x2b55('0x52')],{'as':_0x2b55('0x127'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')]['hasMany'](db[_0x2b55('0x45')],{'as':_0x2b55('0x128'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db[_0x2b55('0x129')],{'as':_0x2b55('0x12a'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x12')][_0x2b55('0x11d')](db[_0x2b55('0x10a')],{'as':_0x2b55('0x12b'),'foreignKey':'SenderId'});db[_0x2b55('0x12')][_0x2b55('0x12c')](db[_0x2b55('0x106')],{'as':_0x2b55('0x106'),'foreignKey':'userProfileId'});db[_0x2b55('0x12')]['belongsToMany'](db[_0x2b55('0x75')],{'as':_0x2b55('0x12d'),'through':_0x2b55('0x12e')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x7a')],{'as':'Contacts','through':_0x2b55('0x130')});db['User'][_0x2b55('0x12f')](db['CmList'],{'as':_0x2b55('0x131'),'through':_0x2b55('0x132')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'through':_0x2b55('0x133')});db[_0x2b55('0x12')]['belongsToMany'](db[_0x2b55('0x45')],{'as':'MailInteractions','through':_0x2b55('0x134')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db['ChatInteraction'],{'as':'ChatInteractions','through':_0x2b55('0x135')});db['User'][_0x2b55('0x12f')](db[_0x2b55('0x52')],{'as':_0x2b55('0x127'),'through':'user_has_fax_interactions'});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x5d')],{'as':_0x2b55('0x126'),'through':_0x2b55('0x136')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x66')],{'as':_0x2b55('0x124'),'through':_0x2b55('0x137')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x129')],{'as':_0x2b55('0x12a'),'through':_0x2b55('0x138')});db['User']['belongsToMany'](db[_0x2b55('0x1b')],{'as':_0x2b55('0x139'),'through':_0x2b55('0x32'),'required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x13a')],{'as':'MailQueues','through':_0x2b55('0x36'),'required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db['ChatQueue'],{'as':'ChatQueues','through':'UserChatQueue','required':![],'hooks':!![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x56')],{'as':_0x2b55('0x13b'),'through':_0x2b55('0x13c'),'required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db['SmsQueue'],{'as':_0x2b55('0x13d'),'through':_0x2b55('0x38'),'required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x69')],{'as':'OpenchannelQueues','through':_0x2b55('0x3a'),'required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db['WhatsappQueue'],{'as':_0x2b55('0x13e'),'through':'UserWhatsappQueue','required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x103')],{'through':'cm_user_has_lists'});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x13f')],{'as':_0x2b55('0x140'),'through':_0x2b55('0x141'),'required':![]});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x6b')],{'as':_0x2b55('0x142'),'through':_0x2b55('0x143')});db[_0x2b55('0x12')]['belongsToMany'](db[_0x2b55('0x4f')],{'as':'FaxAccounts','through':'user_has_fax_accounts'});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x41')],{'as':'MailAccounts','through':'user_has_mail_accounts'});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0x62')],{'as':'OpenchannelAccounts','through':_0x2b55('0x144')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db['SmsAccount'],{'as':_0x2b55('0x145'),'through':_0x2b55('0x146')});db[_0x2b55('0x12')]['belongsToMany'](db[_0x2b55('0x10c')],{'as':_0x2b55('0x147'),'through':_0x2b55('0x148')});db[_0x2b55('0x12')][_0x2b55('0x12f')](db[_0x2b55('0xed')],{'as':'SquareProjects','through':_0x2b55('0x149')});db['VoiceChanSpy']['hasMany'](db[_0x2b55('0x18')],{'as':_0x2b55('0x14a'),'onDelete':'cascade','foreignKey':_0x2b55('0x14b')});db[_0x2b55('0x16')][_0x2b55('0x11d')](db['VoiceExtension'],{'onDelete':'cascade'});db[_0x2b55('0x18')][_0x2b55('0x11d')](db['VoiceExtension'],{'as':'Applications','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x14c')][_0x2b55('0x12f')](db[_0x2b55('0x97')],{'as':_0x2b55('0x14d'),'through':_0x2b55('0x14e')});db[_0x2b55('0x1b')]['hasMany'](db[_0x2b55('0x30')],{'as':_0x2b55('0x14f'),'foreignKey':_0x2b55('0x150')});db[_0x2b55('0x1b')][_0x2b55('0x11d')](db[_0x2b55('0x7c')],{'as':'Hoppers','foreignKey':_0x2b55('0x150')});db[_0x2b55('0x1b')]['hasMany'](db['CmHopperFinal'],{'as':_0x2b55('0x122'),'foreignKey':_0x2b55('0x150')});db[_0x2b55('0x1b')][_0x2b55('0x11d')](db[_0x2b55('0x81')],{'as':_0x2b55('0x151'),'foreignKey':_0x2b55('0x150')});db['VoiceQueue'][_0x2b55('0x11d')](db[_0x2b55('0x83')],{'as':'ReportAgentPreview','foreignKey':'VoiceQueueId'});db[_0x2b55('0x1b')][_0x2b55('0x11d')](db['CmHopperBlack'],{'as':_0x2b55('0x152'),'foreignKey':'VoiceQueueId'});db[_0x2b55('0x1b')][_0x2b55('0x11d')](db[_0x2b55('0xe2')],{'as':_0x2b55('0x153'),'foreignKey':_0x2b55('0x150')});db['VoiceQueue'][_0x2b55('0x12c')](db[_0x2b55('0x2c')],{'as':_0x2b55('0x2c'),'foreignKey':_0x2b55('0x154')});db[_0x2b55('0x1b')]['belongsTo'](db[_0x2b55('0x2c')],{'as':_0x2b55('0x155'),'foreignKey':'TrunkBackupId'});db[_0x2b55('0x1b')]['belongsTo'](db[_0x2b55('0x91')],{'as':_0x2b55('0x91'),'foreignKey':_0x2b55('0x156')});db[_0x2b55('0x1b')][_0x2b55('0x12c')](db[_0x2b55('0x157')],{'as':_0x2b55('0x158'),'foreignKey':'mandatoryDispositionPauseId'});db['VoiceQueue'][_0x2b55('0x12f')](db['CmList'],{'as':_0x2b55('0x131'),'through':'voice_queues_has_cm_lists'});db[_0x2b55('0x1b')][_0x2b55('0x12f')](db['User'],{'as':'Agents','through':_0x2b55('0x32')});db[_0x2b55('0x1b')][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'as':_0x2b55('0x159'),'through':_0x2b55('0x119')});db[_0x2b55('0x1b')][_0x2b55('0x12f')](db[_0x2b55('0x103')],{'as':_0x2b55('0x15a'),'through':_0x2b55('0x15b')});db[_0x2b55('0x1d')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':'User','foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x1f')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':'User','foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x21')]['hasMany'](db[_0x2b55('0x23')],{'as':_0x2b55('0x15c'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x15d'),'sourceKey':'mailbox'});db[_0x2b55('0x23')]['belongsTo'](db[_0x2b55('0x21')],{'foreignKey':'mailboxuser','targetKey':'mailbox'});db[_0x2b55('0x25')][_0x2b55('0x11d')](db[_0x2b55('0x15e')],{'as':_0x2b55('0x15f'),'foreignKey':_0x2b55('0x160'),'constraints':![]});db[_0x2b55('0x25')][_0x2b55('0x11d')](db[_0x2b55('0x28')],{'as':_0x2b55('0x161'),'foreignKey':_0x2b55('0x160'),'constraints':![]});db['VoiceCallReport'][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':_0x2b55('0x12'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x25')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db['MailServerIn'][_0x2b55('0x12c')](db['MailAccount'],{'as':_0x2b55('0x41'),'foreignKey':'MailAccountId'});db[_0x2b55('0x3f')][_0x2b55('0x12c')](db['MailAccount'],{'as':_0x2b55('0x41'),'foreignKey':_0x2b55('0x164')});db[_0x2b55('0x41')][_0x2b55('0x11b')](db[_0x2b55('0x3e')],{'as':_0x2b55('0x165'),'onDelete':'cascade'});db[_0x2b55('0x41')]['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x41')]['hasMany'](db[_0x2b55('0x8d')],{'as':_0x2b55('0x166'),'foreignKey':'MailAccountId','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x41')][_0x2b55('0x11d')](db['CannedAnswer'],{'as':'Answers','foreignKey':'MailAccountId'});db[_0x2b55('0x41')][_0x2b55('0x11d')](db['MailMessage'],{'as':_0x2b55('0x15c'),'foreignKey':_0x2b55('0x164')});db[_0x2b55('0x41')]['hasMany'](db[_0x2b55('0x45')],{'as':_0x2b55('0x167')});db[_0x2b55('0x41')][_0x2b55('0x11d')](db['MailApplication'],{'as':_0x2b55('0x168')});db[_0x2b55('0x41')][_0x2b55('0x12c')](db['CmList'],{'as':_0x2b55('0x169'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x41')][_0x2b55('0x12c')](db[_0x2b55('0x16b')],{'as':_0x2b55('0x16b'),'foreignKey':_0x2b55('0x16c')});db[_0x2b55('0x41')][_0x2b55('0x12c')](db[_0x2b55('0x157')],{'as':_0x2b55('0x158'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x2b55('0x41')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0x2b55('0x13a')][_0x2b55('0x12f')](db['User'],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x36')});db[_0x2b55('0x13a')]['belongsToMany'](db['Team'],{'through':_0x2b55('0x16e'),'as':_0x2b55('0x159')});db[_0x2b55('0x45')][_0x2b55('0x11d')](db[_0x2b55('0x46')],{'as':'Messages','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x16f')});db[_0x2b55('0x45')][_0x2b55('0x12c')](db['MailAccount'],{'as':'Account','foreignKey':_0x2b55('0x164')});db['MailInteraction'][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x45')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':'Owner','foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x45')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':'mail_interaction_has_tags','as':_0x2b55('0x170')});db['MailInteraction']['belongsToMany'](db[_0x2b55('0x99')],{'through':_0x2b55('0x171'),'as':_0x2b55('0x172')});db['MailInteraction'][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x173'),'through':'user_has_mail_interactions','foreignKey':_0x2b55('0x16f')});db[_0x2b55('0x46')][_0x2b55('0x11d')](db['Attachment'],{'as':'Attachments','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x46')][_0x2b55('0x12c')](db['User'],{'as':_0x2b55('0x12')});db[_0x2b55('0x46')]['belongsTo'](db[_0x2b55('0x7a')],{'onDelete':'cascade','as':_0x2b55('0x162')});db[_0x2b55('0x46')][_0x2b55('0x12c')](db[_0x2b55('0x45')],{'as':_0x2b55('0x174'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x2b55('0x12c')](db[_0x2b55('0x41')],{'as':_0x2b55('0x175'),'foreignKey':'MailAccountId'});db[_0x2b55('0x46')][_0x2b55('0x12c')](db['ChatWebsite'],{'as':_0x2b55('0x6b'),'foreignKey':_0x2b55('0x176')});db[_0x2b55('0x46')][_0x2b55('0x12c')](db[_0x2b55('0x71')],{'as':_0x2b55('0x71'),'foreignKey':_0x2b55('0x177')});db[_0x2b55('0x48')]['belongsTo'](db[_0x2b55('0x12')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x48')][_0x2b55('0x12c')](db[_0x2b55('0x13a')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x48')][_0x2b55('0x12c')](db[_0x2b55('0x41')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x48')][_0x2b55('0x12c')](db[_0x2b55('0x91')],{'onDelete':_0x2b55('0x178'),'foreignKey':'IntervalId'});db['MailApplication'][_0x2b55('0x12c')](db[_0x2b55('0x99')],{'onDelete':_0x2b55('0x178'),'foreignKey':'TagId'});db[_0x2b55('0x4a')][_0x2b55('0x12c')](db[_0x2b55('0x41')],{});db[_0x2b55('0x4a')]['belongsTo'](db[_0x2b55('0x103')],{'as':'List','foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x4a')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':'Contact','foreignKey':_0x2b55('0x163')});db[_0x2b55('0x4a')][_0x2b55('0x12c')](db[_0x2b55('0x45')],{});db['MailQueueReport'][_0x2b55('0x12c')](db[_0x2b55('0x46')],{});db[_0x2b55('0x4a')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{});db['MailQueueReport'][_0x2b55('0x12c')](db[_0x2b55('0x13a')],{});db[_0x2b55('0x4c')][_0x2b55('0x11d')](db['DashboardItem'],{'as':_0x2b55('0x179'),'onDelete':'cascade'});db[_0x2b55('0x4f')][_0x2b55('0x11d')](db[_0x2b55('0x8d')],{'as':_0x2b55('0x166'),'foreignKey':_0x2b55('0x17a'),'onDelete':_0x2b55('0x11c')});db[_0x2b55('0x4f')][_0x2b55('0x11d')](db[_0x2b55('0x8b')],{'as':'Answers','foreignKey':_0x2b55('0x17a')});db[_0x2b55('0x4f')][_0x2b55('0x11d')](db[_0x2b55('0x52')],{'as':_0x2b55('0x167')});db[_0x2b55('0x4f')]['hasMany'](db['FaxApplication'],{'as':_0x2b55('0x168')});db['FaxAccount'][_0x2b55('0x11d')](db['VoiceExtension'],{'as':'Exntensions','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x4f')][_0x2b55('0x11d')](db[_0x2b55('0x54')],{'as':_0x2b55('0x15c')});db['FaxAccount'][_0x2b55('0x12c')](db[_0x2b55('0x2c')],{'as':'Trunk'});db[_0x2b55('0x4f')]['belongsTo'](db['CmList'],{'as':_0x2b55('0x169'),'foreignKey':'ListId'});db[_0x2b55('0x4f')]['belongsTo'](db[_0x2b55('0x157')],{'as':'mandatoryDispositionPause','foreignKey':_0x2b55('0x17b')});db['FaxAccount'][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x17c')});db[_0x2b55('0x51')][_0x2b55('0x12c')](db['User'],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x51')][_0x2b55('0x12c')](db[_0x2b55('0x56')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x51')][_0x2b55('0x12c')](db[_0x2b55('0x4f')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x51')][_0x2b55('0x12c')](db['Tag'],{'onDelete':_0x2b55('0x178'),'foreignKey':'TagId'});db[_0x2b55('0x52')][_0x2b55('0x11d')](db[_0x2b55('0x54')],{'as':'Messages','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x17d')});db['FaxInteraction'][_0x2b55('0x12c')](db[_0x2b55('0x4f')],{'as':'Account','foreignKey':_0x2b55('0x17a')});db['FaxInteraction'][_0x2b55('0x12c')](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0x2b55('0x52')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':_0x2b55('0x17e'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x52')]['belongsToMany'](db['Tag'],{'through':'fax_interaction_has_tags','as':'Tags'});db[_0x2b55('0x52')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':'fax_interaction_has_tags','as':_0x2b55('0x172')});db[_0x2b55('0x52')][_0x2b55('0x12f')](db['User'],{'as':_0x2b55('0x173'),'through':'user_has_fax_interactions','foreignKey':_0x2b55('0x17d')});db[_0x2b55('0x54')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x12')});db[_0x2b55('0x54')][_0x2b55('0x12c')](db[_0x2b55('0x52')],{'as':_0x2b55('0x174'),'foreignKey':_0x2b55('0x17d')});db[_0x2b55('0x54')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'onDelete':_0x2b55('0x11c'),'as':'Contact'});db[_0x2b55('0x54')][_0x2b55('0x12c')](db[_0x2b55('0x17f')],{'as':'Attachment','foreignKey':_0x2b55('0x180')});db[_0x2b55('0x54')][_0x2b55('0x12c')](db['FaxAccount'],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x17a')});db[_0x2b55('0x56')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':'UserFaxQueue'});db['FaxQueue'][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'through':_0x2b55('0x181'),'as':_0x2b55('0x159')});db[_0x2b55('0x182')]['belongsTo'](db[_0x2b55('0x4f')],{});db[_0x2b55('0x182')][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':_0x2b55('0x169'),'foreignKey':'ListId'});db[_0x2b55('0x182')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':'ContactId'});db['FaxQueueReport'][_0x2b55('0x12c')](db[_0x2b55('0x52')],{});db[_0x2b55('0x182')][_0x2b55('0x12c')](db[_0x2b55('0x54')],{});db[_0x2b55('0x182')][_0x2b55('0x12c')](db['User'],{});db[_0x2b55('0x182')]['belongsTo'](db[_0x2b55('0x56')],{});db[_0x2b55('0x59')]['hasMany'](db[_0x2b55('0x8d')],{'as':_0x2b55('0x166'),'foreignKey':'SmsAccountId','onDelete':'cascade'});db['SmsAccount'][_0x2b55('0x11d')](db[_0x2b55('0x8b')],{'as':_0x2b55('0x183'),'foreignKey':_0x2b55('0x184')});db[_0x2b55('0x59')]['hasMany'](db[_0x2b55('0x185')],{'as':_0x2b55('0x15c'),'foreignKey':_0x2b55('0x184')});db[_0x2b55('0x59')][_0x2b55('0x11d')](db['SmsInteraction'],{'as':'Interactions'});db['SmsAccount'][_0x2b55('0x11d')](db['SmsApplication'],{'as':_0x2b55('0x168')});db[_0x2b55('0x59')]['belongsTo'](db[_0x2b55('0x103')],{'as':_0x2b55('0x169'),'foreignKey':'ListId'});db[_0x2b55('0x59')]['belongsTo'](db[_0x2b55('0x157')],{'as':_0x2b55('0x158'),'foreignKey':_0x2b55('0x17b')});db[_0x2b55('0x59')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':'Agents','through':_0x2b55('0x146')});db[_0x2b55('0x5b')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x5b')][_0x2b55('0x12c')](db[_0x2b55('0x60')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x5b')][_0x2b55('0x12c')](db[_0x2b55('0x59')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x5b')][_0x2b55('0x12c')](db[_0x2b55('0x91')],{'onDelete':_0x2b55('0x178'),'foreignKey':_0x2b55('0x156')});db['SmsApplication'][_0x2b55('0x12c')](db[_0x2b55('0x99')],{'onDelete':_0x2b55('0x178'),'foreignKey':_0x2b55('0x186')});db[_0x2b55('0x5d')][_0x2b55('0x11d')](db[_0x2b55('0x185')],{'as':_0x2b55('0x15c'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x187')});db[_0x2b55('0x5d')]['belongsTo'](db[_0x2b55('0x59')],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x184')});db['SmsInteraction'][_0x2b55('0x12c')](db['CmContact'],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x5d')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':'Owner','foreignKey':_0x2b55('0x11f')});db['SmsInteraction'][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':_0x2b55('0x188'),'as':_0x2b55('0x170')});db['SmsInteraction'][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':_0x2b55('0x188'),'as':_0x2b55('0x172')});db['SmsInteraction'][_0x2b55('0x12f')](db['User'],{'as':'Users','through':_0x2b55('0x136'),'foreignKey':_0x2b55('0x187')});db[_0x2b55('0x185')]['belongsTo'](db[_0x2b55('0x12')],{'as':_0x2b55('0x12')});db['SmsMessage'][_0x2b55('0x12c')](db['CmContact'],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x162')});db[_0x2b55('0x185')]['belongsTo'](db[_0x2b55('0x5d')],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x174'),'foreignKey':_0x2b55('0x187')});db[_0x2b55('0x185')][_0x2b55('0x12c')](db[_0x2b55('0x59')],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x184')});db[_0x2b55('0x60')]['belongsToMany'](db['User'],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x38'),'foreignKey':_0x2b55('0x189')});db['SmsQueue'][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'through':_0x2b55('0x18a'),'as':_0x2b55('0x159')});db[_0x2b55('0x62')]['hasMany'](db[_0x2b55('0x8d')],{'as':_0x2b55('0x166'),'foreignKey':_0x2b55('0x18b'),'onDelete':'cascade'});db[_0x2b55('0x62')][_0x2b55('0x11d')](db[_0x2b55('0x8b')],{'as':_0x2b55('0x183'),'foreignKey':_0x2b55('0x18b')});db['OpenchannelAccount'][_0x2b55('0x11d')](db['OpenchannelInteraction'],{'as':_0x2b55('0x167'),'foreignKey':_0x2b55('0x18b')});db[_0x2b55('0x62')][_0x2b55('0x11d')](db[_0x2b55('0x67')],{'as':'Messages','foreignKey':'OpenchannelAccountId'});db[_0x2b55('0x62')][_0x2b55('0x11d')](db[_0x2b55('0x64')],{'as':_0x2b55('0x168'),'foreignKey':_0x2b55('0x18b')});db[_0x2b55('0x62')][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':'List','foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x62')]['belongsTo'](db[_0x2b55('0x157')],{'as':_0x2b55('0x158'),'foreignKey':_0x2b55('0x17b')});db[_0x2b55('0x62')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':'user_has_openchannel_accounts'});db['OpenchannelApplication'][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'onDelete':'restrict'});db[_0x2b55('0x64')][_0x2b55('0x12c')](db[_0x2b55('0x69')],{'onDelete':'restrict','foreignKey':'OpenchannelQueueId'});db[_0x2b55('0x64')][_0x2b55('0x12c')](db[_0x2b55('0x62')],{'onDelete':'restrict','foreignKey':'OpenchannelAccountId'});db[_0x2b55('0x64')][_0x2b55('0x12c')](db[_0x2b55('0x91')],{'onDelete':_0x2b55('0x178'),'foreignKey':_0x2b55('0x156')});db['OpenchannelApplication']['belongsTo'](db[_0x2b55('0x99')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0x2b55('0x66')][_0x2b55('0x11d')](db[_0x2b55('0x67')],{'as':_0x2b55('0x15c'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x18c')});db[_0x2b55('0x66')][_0x2b55('0x12c')](db[_0x2b55('0x62')],{'as':_0x2b55('0x175'),'foreignKey':'OpenchannelAccountId'});db[_0x2b55('0x66')]['belongsTo'](db[_0x2b55('0x7a')],{'as':'Contact','foreignKey':'ContactId'});db[_0x2b55('0x66')]['belongsTo'](db[_0x2b55('0x12')],{'as':_0x2b55('0x17e'),'foreignKey':'UserId'});db[_0x2b55('0x66')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':_0x2b55('0x18d'),'as':_0x2b55('0x170')});db['OpenchannelInteraction'][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':_0x2b55('0x18d'),'as':_0x2b55('0x172')});db[_0x2b55('0x66')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x173'),'through':_0x2b55('0x137'),'foreignKey':_0x2b55('0x18c')});db['OpenchannelMessage'][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x12')});db['OpenchannelMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x2b55('0x11c'),'as':'Contact'});db[_0x2b55('0x67')][_0x2b55('0x12c')](db[_0x2b55('0x66')],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x174'),'foreignKey':_0x2b55('0x18c')});db['OpenchannelMessage'][_0x2b55('0x12c')](db[_0x2b55('0x17f')],{'as':_0x2b55('0x17f'),'foreignKey':_0x2b55('0x180')});db[_0x2b55('0x67')]['belongsTo'](db[_0x2b55('0x62')],{'as':_0x2b55('0x175'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelQueue']['belongsToMany'](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x3a'),'foreignKey':_0x2b55('0x18e')});db[_0x2b55('0x69')][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'through':_0x2b55('0x18f'),'as':'Teams'});db[_0x2b55('0x6b')][_0x2b55('0x11d')](db[_0x2b55('0x8d')],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x6b')][_0x2b55('0x11d')](db[_0x2b55('0x8b')],{'as':_0x2b55('0x183'),'foreignKey':'ChatWebsiteId'});db[_0x2b55('0x6b')][_0x2b55('0x11d')](db[_0x2b55('0x77')],{'as':_0x2b55('0x190')});db[_0x2b55('0x6b')][_0x2b55('0x11d')](db[_0x2b55('0x125')],{'as':'Interactions'});db[_0x2b55('0x6b')][_0x2b55('0x11d')](db[_0x2b55('0x6d')],{'as':_0x2b55('0x168')});db[_0x2b55('0x6b')][_0x2b55('0x11d')](db[_0x2b55('0x70')],{'as':'Messages'});db[_0x2b55('0x6b')][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':_0x2b55('0x169'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x6b')][_0x2b55('0x12c')](db[_0x2b55('0x91')],{'as':_0x2b55('0x91'),'foreignKey':_0x2b55('0x156')});db[_0x2b55('0x6b')][_0x2b55('0x12c')](db[_0x2b55('0x41')],{'as':'MailAccount','foreignKey':_0x2b55('0x164')});db[_0x2b55('0x6b')][_0x2b55('0x12c')](db[_0x2b55('0x157')],{'as':'mandatoryDispositionPause','foreignKey':_0x2b55('0x17b')});db[_0x2b55('0x6b')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x143')});db[_0x2b55('0x191')][_0x2b55('0x12c')](db[_0x2b55('0x62')],{});db[_0x2b55('0x191')][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':_0x2b55('0x169'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x191')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':'ContactId'});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x2b55('0x191')][_0x2b55('0x12c')](db['OpenchannelMessage'],{});db['OpenchannelQueueReport']['belongsTo'](db['User'],{});db[_0x2b55('0x191')][_0x2b55('0x12c')](db[_0x2b55('0x69')],{});db[_0x2b55('0x6d')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':'Agent','foreignKey':'UserId','onDelete':'restrict'});db['ChatApplication'][_0x2b55('0x12c')](db['ChatQueue'],{'as':_0x2b55('0x192'),'foreignKey':'ChatQueueId','onDelete':_0x2b55('0x178')});db[_0x2b55('0x6d')]['belongsTo'](db[_0x2b55('0x6b')],{'as':_0x2b55('0x193'),'foreignKey':_0x2b55('0x176'),'onDelete':_0x2b55('0x178')});db[_0x2b55('0x6d')]['belongsTo'](db['Tag'],{'onDelete':_0x2b55('0x178'),'foreignKey':'TagId'});db['ChatInteraction'][_0x2b55('0x11d')](db[_0x2b55('0x70')],{'as':_0x2b55('0x15c'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x194')});db['ChatInteraction'][_0x2b55('0x12c')](db['ChatWebsite'],{'as':'Account','foreignKey':_0x2b55('0x176')});db[_0x2b55('0x125')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':'ContactId'});db['ChatInteraction']['belongsTo'](db[_0x2b55('0x12')],{'as':'Owner','foreignKey':'UserId'});db['ChatInteraction']['belongsToMany'](db[_0x2b55('0x99')],{'through':'chat_interaction_has_tags','as':'Tags'});db[_0x2b55('0x125')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':_0x2b55('0x195'),'as':_0x2b55('0x172')});db[_0x2b55('0x125')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':'Users','through':_0x2b55('0x135'),'foreignKey':_0x2b55('0x194')});db['ChatMessage']['belongsTo'](db[_0x2b55('0x12')],{'onDelete':'cascade','as':_0x2b55('0x12')});db[_0x2b55('0x70')][_0x2b55('0x12c')](db['CmContact'],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x70')]['belongsTo'](db[_0x2b55('0x125')],{'onDelete':'cascade','as':_0x2b55('0x174'),'foreignKey':_0x2b55('0x194')});db[_0x2b55('0x70')]['belongsTo'](db[_0x2b55('0x17f')],{'as':_0x2b55('0x17f'),'foreignKey':_0x2b55('0x180')});db['ChatMessage'][_0x2b55('0x12c')](db[_0x2b55('0x6b')],{'as':'Account','foreignKey':_0x2b55('0x176')});db[_0x2b55('0x71')]['hasMany'](db[_0x2b55('0x17f')],{'as':_0x2b55('0x196'),'foreignKey':'ChatOfflineMessageId','onDelete':'cascade','hooks':!![]});db[_0x2b55('0x71')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x71')][_0x2b55('0x12c')](db[_0x2b55('0x6b')],{'as':'Account','foreignKey':_0x2b55('0x176')});db[_0x2b55('0x73')]['belongsToMany'](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x34'),'hooks':!![]});db[_0x2b55('0x73')][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'through':'team_has_chat_queues','as':'Teams'});db['ChatGroup'][_0x2b55('0x11d')](db[_0x2b55('0xde')],{'as':'Messages','foreignKey':'ChatGroupId','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x75')]['belongsToMany'](db['User'],{'as':_0x2b55('0x14f'),'through':_0x2b55('0x12e')});db[_0x2b55('0x77')]['belongsTo'](db['ChatWebsite'],{'as':_0x2b55('0x193'),'foreignKey':_0x2b55('0x176')});db['CmCompany']['hasMany'](db[_0x2b55('0x7a')],{'as':_0x2b55('0x197'),'foreignKey':_0x2b55('0x198')});db['CmContact'][_0x2b55('0x11d')](db['CmHopper'],{'as':_0x2b55('0x199'),'foreignKey':'ContactId'});db[_0x2b55('0x7a')][_0x2b55('0x11d')](db['CmHopperFinal'],{'as':_0x2b55('0x122'),'foreignKey':'ContactId'});db['CmContact']['hasMany'](db[_0x2b55('0x81')],{'as':_0x2b55('0x151'),'foreignKey':_0x2b55('0x163')});db['CmContact'][_0x2b55('0x11d')](db[_0x2b55('0x83')],{'as':_0x2b55('0x83'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x7a')][_0x2b55('0x11d')](db[_0x2b55('0xe2')],{'as':_0x2b55('0x153'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x7a')]['hasMany'](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x2b55('0x178')});db['CmContact'][_0x2b55('0x11d')](db[_0x2b55('0x125')],{'as':_0x2b55('0x19a'),'foreignKey':_0x2b55('0x163'),'onDelete':_0x2b55('0x178')});db[_0x2b55('0x7a')][_0x2b55('0x11d')](db[_0x2b55('0x5d')],{'as':_0x2b55('0x126'),'foreignKey':_0x2b55('0x163'),'onDelete':_0x2b55('0x178')});db[_0x2b55('0x7a')]['hasMany'](db['FaxInteraction'],{'as':_0x2b55('0x127'),'foreignKey':_0x2b55('0x163'),'onDelete':_0x2b55('0x178')});db[_0x2b55('0x7a')][_0x2b55('0x11d')](db[_0x2b55('0x45')],{'as':_0x2b55('0x128'),'foreignKey':_0x2b55('0x163'),'onDelete':_0x2b55('0x178')});db[_0x2b55('0x7a')][_0x2b55('0x12c')](db[_0x2b55('0x19b')],{'as':_0x2b55('0x19c'),'foreignKey':_0x2b55('0x198')});db[_0x2b55('0x7a')]['belongsTo'](db['CmList'],{'as':'List','foreignKey':_0x2b55('0x16a'),'onDelete':_0x2b55('0x11c')});db[_0x2b55('0x7a')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x173'),'through':'cm_user_has_contacts'});db[_0x2b55('0x7a')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'as':_0x2b55('0x170'),'through':_0x2b55('0x19d')});db[_0x2b55('0x7a')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':'cm_contact_has_tags','as':_0x2b55('0x172')});db[_0x2b55('0x7c')]['belongsTo'](db['CmContact'],{'as':_0x2b55('0x162'),'foreignKey':'ContactId','onDelete':_0x2b55('0x11c')});db['CmHopper'][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':'List','foreignKey':_0x2b55('0x16a'),'onDelete':_0x2b55('0x11c')});db['CmHopper'][_0x2b55('0x12c')](db['User'],{'as':_0x2b55('0x19e'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x7c')][_0x2b55('0x12c')](db[_0x2b55('0x1b')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x2b55('0x7c')][_0x2b55('0x12c')](db[_0x2b55('0x19f')],{'as':_0x2b55('0x19f'),'foreignKey':_0x2b55('0x1a0'),'onDelete':'cascade'});db[_0x2b55('0x7c')]['belongsTo'](db[_0x2b55('0x12')],{'as':_0x2b55('0x17e'),'foreignKey':_0x2b55('0x1a1')});db[_0x2b55('0x7d')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163'),'onDelete':'cascade'});db[_0x2b55('0x7d')][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':'List','foreignKey':_0x2b55('0x16a'),'onDelete':_0x2b55('0x11c')});db[_0x2b55('0x7d')][_0x2b55('0x12c')](db[_0x2b55('0x1b')],{'as':_0x2b55('0x192'),'foreignKey':_0x2b55('0x150'),'onDelete':_0x2b55('0x11c')});db['CmHopperBlack']['belongsTo'](db['Campaign'],{'as':_0x2b55('0x19f'),'foreignKey':_0x2b55('0x1a0'),'onDelete':_0x2b55('0x11c')});db['Automation'][_0x2b55('0x11d')](db['Condition'],{'as':{'plural':_0x2b55('0x1a2'),'singular':_0x2b55('0x1a3')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x2b55('0x89')]['hasMany'](db[_0x2b55('0x8f')],{'as':{'plural':_0x2b55('0x1a4'),'singular':'OneAny'},'foreignKey':_0x2b55('0x1a5'),'onDelete':_0x2b55('0x11c'),'hooks':!![]});db[_0x2b55('0x89')][_0x2b55('0x11d')](db[_0x2b55('0x87')],{'as':_0x2b55('0x1a6'),'foreignKey':_0x2b55('0x1a7'),'onDelete':'cascade','hooks':!![]});db[_0x2b55('0x8d')][_0x2b55('0x11d')](db[_0x2b55('0x8d')],{'as':'Dispositions','foreignKey':_0x2b55('0x1a8'),'onDelete':'cascade'});db[_0x2b55('0x91')][_0x2b55('0x11d')](db[_0x2b55('0x91')],{'as':_0x2b55('0x1a9'),'foreignKey':'IntervalId','onDelete':_0x2b55('0x11c'),'hooks':!![],'required':![]});db['Interval'][_0x2b55('0x11d')](db[_0x2b55('0x18')],{'as':'Extensions','foreignKey':_0x2b55('0x156'),'onDelete':_0x2b55('0x178')});db[_0x2b55('0x91')]['hasMany'](db[_0x2b55('0x48')],{'as':_0x2b55('0x1aa'),'foreignKey':'IntervalId'});db[_0x2b55('0x91')][_0x2b55('0x11d')](db[_0x2b55('0x6d')],{'as':_0x2b55('0x1ab'),'foreignKey':_0x2b55('0x156')});db[_0x2b55('0x91')][_0x2b55('0x11d')](db[_0x2b55('0x51')],{'as':_0x2b55('0x1ac'),'foreignKey':_0x2b55('0x156')});db[_0x2b55('0x91')][_0x2b55('0x11d')](db[_0x2b55('0x5b')],{'as':'SmsApplications','foreignKey':_0x2b55('0x156')});db[_0x2b55('0x95')][_0x2b55('0x12c')](db['MailAccount'],{});db[_0x2b55('0x95')][_0x2b55('0x12c')](db['AnalyticDefaultReport'],{'foreignKey':_0x2b55('0x1ad')});db[_0x2b55('0x95')][_0x2b55('0x12c')](db[_0x2b55('0xa0')],{'foreignKey':'CustomReportId'});db[_0x2b55('0x97')][_0x2b55('0x12f')](db[_0x2b55('0x14c')],{'as':_0x2b55('0x1ae'),'through':_0x2b55('0x14e'),'onDelete':'restrict'});db[_0x2b55('0x99')][_0x2b55('0x12f')](db[_0x2b55('0x7a')],{'through':_0x2b55('0x19d')});db[_0x2b55('0x99')][_0x2b55('0x12f')](db['ChatInteraction'],{'through':'chat_interaction_has_tags'});db[_0x2b55('0x99')][_0x2b55('0x12f')](db['MailInteraction'],{'through':_0x2b55('0x171')});db[_0x2b55('0x99')][_0x2b55('0x12f')](db[_0x2b55('0x5d')],{'through':_0x2b55('0x188')});db[_0x2b55('0x99')][_0x2b55('0x12f')](db[_0x2b55('0x52')],{'through':_0x2b55('0x1af')});db[_0x2b55('0x99')][_0x2b55('0x12f')](db[_0x2b55('0x66')],{'through':_0x2b55('0x18d')});db[_0x2b55('0x99')][_0x2b55('0x12f')](db[_0x2b55('0x129')],{'through':_0x2b55('0x1b0')});db['Trigger'][_0x2b55('0x11d')](db[_0x2b55('0x8f')],{'as':{'plural':_0x2b55('0x1b1'),'singular':_0x2b55('0x1b2')},'foreignKey':_0x2b55('0x1b3'),'onDelete':_0x2b55('0x11c'),'hooks':!![]});db[_0x2b55('0x9b')][_0x2b55('0x11d')](db[_0x2b55('0x8f')],{'as':{'plural':_0x2b55('0x1b4'),'singular':'AnyCondition'},'foreignKey':_0x2b55('0x1b5'),'onDelete':'cascade','hooks':!![]});db[_0x2b55('0x9b')][_0x2b55('0x11d')](db['Action'],{'as':'Actions','foreignKey':_0x2b55('0x1b6'),'onDelete':_0x2b55('0x11c'),'hooks':!![]});db[_0x2b55('0xa0')][_0x2b55('0x11d')](db['AnalyticFieldReport'],{'as':'Fields','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1b7'),'hooks':!![]});db['AnalyticDefaultReport'][_0x2b55('0x11d')](db[_0x2b55('0xa7')],{'as':_0x2b55('0x1b8'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1ad')});db[_0x2b55('0xa5')][_0x2b55('0x11d')](db[_0x2b55('0xa7')],{'as':_0x2b55('0x1b8'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1b9')});db[_0x2b55('0xa7')]['belongsTo'](db['AnalyticMetric'],{'foreignKey':_0x2b55('0x1b9')});db[_0x2b55('0xab')][_0x2b55('0x11d')](db[_0x2b55('0x1ba')],{'as':_0x2b55('0x1bb'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0x1ba')]['hasMany'](db[_0x2b55('0xae')],{'as':_0x2b55('0x1bd'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0x1ba')][_0x2b55('0x11d')](db[_0x2b55('0xae')],{'as':_0x2b55('0x1bf'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0x1ba')][_0x2b55('0x11d')](db[_0x2b55('0xae')],{'as':'Fields','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0x1ba')][_0x2b55('0x12c')](db[_0x2b55('0xab')],{'as':_0x2b55('0x175'),'foreignKey':'AccountId'});db[_0x2b55('0xae')][_0x2b55('0x11d')](db[_0x2b55('0xae')],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db['SalesforceField'][_0x2b55('0x11d')](db[_0x2b55('0xae')],{'as':'Description','foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xae')][_0x2b55('0x11d')](db[_0x2b55('0xae')],{'as':'Field','foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xae')][_0x2b55('0x12c')](db['Variable'],{'as':_0x2b55('0x9d'),'foreignKey':_0x2b55('0x1c3')});db[_0x2b55('0x1c4')][_0x2b55('0x11d')](db[_0x2b55('0xb0')],{'as':_0x2b55('0x1bb'),'onDelete':_0x2b55('0x11c'),'foreignKey':'AccountId'});db['SugarcrmConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xb2')],{'as':_0x2b55('0x1bd'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xb0')][_0x2b55('0x11d')](db[_0x2b55('0xb2')],{'as':_0x2b55('0x1bf'),'onDelete':_0x2b55('0x11c'),'foreignKey':'DescriptionId'});db[_0x2b55('0xb0')]['hasMany'](db[_0x2b55('0xb2')],{'as':_0x2b55('0x1b8'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xb0')][_0x2b55('0x12c')](db[_0x2b55('0x1c4')],{'as':'Account','foreignKey':'AccountId'});db[_0x2b55('0xb2')][_0x2b55('0x11d')](db[_0x2b55('0xb2')],{'as':_0x2b55('0x1c2'),'foreignKey':'SubjectId'});db[_0x2b55('0xb2')][_0x2b55('0x11d')](db['SugarcrmField'],{'as':'Description','foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xb2')]['hasMany'](db[_0x2b55('0xb2')],{'as':_0x2b55('0x1c5'),'foreignKey':'FieldId'});db[_0x2b55('0xb2')]['belongsTo'](db[_0x2b55('0x9d')],{'as':_0x2b55('0x9d'),'foreignKey':_0x2b55('0x1c3')});db['DeskAccount']['hasMany'](db[_0x2b55('0x1c6')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x2b55('0x1bc')});db['DeskConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xb5')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0x2b55('0x1be')});db[_0x2b55('0x1c6')][_0x2b55('0x11d')](db['DeskField'],{'as':_0x2b55('0x1bf'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0x1c6')][_0x2b55('0x11d')](db[_0x2b55('0xb5')],{'as':'Fields','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0x1c6')][_0x2b55('0x12c')](db['DeskAccount'],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0x1c6')]['belongsToMany'](db[_0x2b55('0x99')],{'through':_0x2b55('0x1c7')});db[_0x2b55('0xb5')][_0x2b55('0x11d')](db[_0x2b55('0xb5')],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db['DeskField'][_0x2b55('0x11d')](db[_0x2b55('0xb5')],{'as':_0x2b55('0x1c8'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xb5')][_0x2b55('0x11d')](db[_0x2b55('0xb5')],{'as':_0x2b55('0x1c5'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xb5')][_0x2b55('0x12c')](db['Variable'],{'as':'Variable','foreignKey':'VariableId'});db['ZohoAccount'][_0x2b55('0x11d')](db[_0x2b55('0xb8')],{'as':_0x2b55('0x1bb'),'onDelete':'cascade','foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0xb8')][_0x2b55('0x11d')](db[_0x2b55('0xba')],{'as':_0x2b55('0x1bd'),'onDelete':_0x2b55('0x11c'),'foreignKey':'SubjectId'});db['ZohoConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xba')],{'as':'Descriptions','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xb8')][_0x2b55('0x11d')](db[_0x2b55('0xba')],{'as':_0x2b55('0x1b8'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c1')});db['ZohoConfiguration'][_0x2b55('0x12c')](db['ZohoAccount'],{'as':_0x2b55('0x175'),'foreignKey':'AccountId'});db[_0x2b55('0xba')][_0x2b55('0x11d')](db[_0x2b55('0xba')],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xba')]['hasMany'](db[_0x2b55('0xba')],{'as':'Description','foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xba')][_0x2b55('0x11d')](db[_0x2b55('0xba')],{'as':_0x2b55('0x1c5'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xba')][_0x2b55('0x12c')](db[_0x2b55('0x9d')],{'as':'Variable','foreignKey':'VariableId'});db[_0x2b55('0xbc')][_0x2b55('0x11d')](db['ZendeskConfiguration'],{'as':_0x2b55('0x1bb'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0xbd')][_0x2b55('0x11d')](db[_0x2b55('0xbf')],{'as':_0x2b55('0x1bd'),'foreignKey':_0x2b55('0x1be')});db['ZendeskConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xbf')],{'as':'Descriptions','foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xbd')][_0x2b55('0x11d')](db[_0x2b55('0xbf')],{'as':_0x2b55('0x1b8'),'foreignKey':'FieldId'});db[_0x2b55('0xbd')]['belongsTo'](db['ZendeskAccount'],{'as':_0x2b55('0x175'),'foreignKey':'AccountId'});db[_0x2b55('0xbd')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':_0x2b55('0x1c9')});db[_0x2b55('0xbf')]['hasMany'](db[_0x2b55('0xbf')],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db['ZendeskField'][_0x2b55('0x11d')](db['ZendeskField'],{'as':'Description','foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xbf')][_0x2b55('0x11d')](db[_0x2b55('0xbf')],{'as':_0x2b55('0x1c5'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xbf')][_0x2b55('0x12c')](db['Variable'],{'as':_0x2b55('0x9d'),'foreignKey':_0x2b55('0x1c3')});db[_0x2b55('0xc0')][_0x2b55('0x11d')](db[_0x2b55('0xc1')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x2b55('0x1bc')});db['FreshdeskConfiguration'][_0x2b55('0x11d')](db['FreshdeskField'],{'as':_0x2b55('0x1bd'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xc1')]['hasMany'](db[_0x2b55('0xc2')],{'as':_0x2b55('0x1bf'),'onDelete':'cascade','foreignKey':'DescriptionId'});db['FreshdeskConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xc2')],{'as':_0x2b55('0x1b8'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c1')});db['FreshdeskConfiguration']['belongsTo'](db[_0x2b55('0xc0')],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0xc1')][_0x2b55('0x12f')](db[_0x2b55('0x99')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x2b55('0xc2')]['hasMany'](db[_0x2b55('0xc2')],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xc2')][_0x2b55('0x11d')](db[_0x2b55('0xc2')],{'as':'Description','foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xc2')][_0x2b55('0x11d')](db['FreshdeskField'],{'as':_0x2b55('0x1c5'),'foreignKey':'FieldId'});db['FreshdeskField'][_0x2b55('0x12c')](db[_0x2b55('0x9d')],{'as':_0x2b55('0x9d'),'foreignKey':_0x2b55('0x1c3')});db[_0x2b55('0xc4')]['hasMany'](db['VtigerConfiguration'],{'as':_0x2b55('0x1bb'),'onDelete':_0x2b55('0x11c'),'foreignKey':'AccountId'});db['VtigerConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xc8')],{'as':'Subjects','foreignKey':_0x2b55('0x1be')});db['VtigerConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xc8')],{'as':_0x2b55('0x1bf'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xc6')][_0x2b55('0x11d')](db[_0x2b55('0xc8')],{'as':'Fields','foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xc6')][_0x2b55('0x12c')](db[_0x2b55('0xc4')],{'as':_0x2b55('0x175'),'foreignKey':'AccountId'});db['VtigerField'][_0x2b55('0x11d')](db[_0x2b55('0xc8')],{'as':_0x2b55('0x1c2'),'foreignKey':'SubjectId'});db['VtigerField']['hasMany'](db[_0x2b55('0xc8')],{'as':_0x2b55('0x1c8'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xc8')][_0x2b55('0x11d')](db[_0x2b55('0xc8')],{'as':_0x2b55('0x1c5'),'foreignKey':_0x2b55('0x1c1')});db['VtigerField'][_0x2b55('0x12c')](db[_0x2b55('0x9d')],{'as':_0x2b55('0x9d'),'foreignKey':'VariableId'});db['ServicenowAccount'][_0x2b55('0x11d')](db[_0x2b55('0xcc')],{'as':_0x2b55('0x1bb'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0xcc')][_0x2b55('0x11d')](db[_0x2b55('0xce')],{'as':'Subjects','foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xcc')][_0x2b55('0x11d')](db[_0x2b55('0xce')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x2b55('0xcc')]['hasMany'](db[_0x2b55('0xce')],{'as':_0x2b55('0x1b8'),'foreignKey':'FieldId'});db[_0x2b55('0xcc')][_0x2b55('0x12c')](db[_0x2b55('0xca')],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x1bc')});db['ServicenowField'][_0x2b55('0x11d')](db['ServicenowField'],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xce')][_0x2b55('0x11d')](db['ServicenowField'],{'as':_0x2b55('0x1c8'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xce')][_0x2b55('0x11d')](db['ServicenowField'],{'as':_0x2b55('0x1c5'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xce')][_0x2b55('0x12c')](db['Variable'],{'as':'Variable','foreignKey':_0x2b55('0x1c3')});db[_0x2b55('0xd0')]['hasMany'](db['Dynamics365Configuration'],{'as':_0x2b55('0x1bb'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1bc')});db['Dynamics365Configuration']['hasMany'](db[_0x2b55('0xd4')],{'as':'Subjects','onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xd2')][_0x2b55('0x11d')](db[_0x2b55('0xd4')],{'as':_0x2b55('0x1bf'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xd2')][_0x2b55('0x11d')](db[_0x2b55('0xd4')],{'as':'Fields','onDelete':_0x2b55('0x11c'),'foreignKey':'FieldId'});db['Dynamics365Configuration'][_0x2b55('0x12c')](db[_0x2b55('0xd0')],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x1bc')});db[_0x2b55('0xd4')]['hasMany'](db[_0x2b55('0xd4')],{'as':'Subject','foreignKey':_0x2b55('0x1be')});db['Dynamics365Field']['hasMany'](db[_0x2b55('0xd4')],{'as':_0x2b55('0x1c8'),'foreignKey':'DescriptionId'});db['Dynamics365Field'][_0x2b55('0x11d')](db[_0x2b55('0xd4')],{'as':_0x2b55('0x1c5'),'foreignKey':'FieldId'});db[_0x2b55('0xd4')][_0x2b55('0x12c')](db['Variable'],{'as':_0x2b55('0x9d'),'foreignKey':'VariableId'});db['FreshsalesAccount'][_0x2b55('0x11d')](db['FreshsalesConfiguration'],{'as':'Configurations','onDelete':'cascade','foreignKey':_0x2b55('0x1bc')});db['FreshsalesConfiguration'][_0x2b55('0x11d')](db[_0x2b55('0xda')],{'as':_0x2b55('0x1bd'),'foreignKey':'SubjectId'});db[_0x2b55('0xd8')][_0x2b55('0x11d')](db[_0x2b55('0xda')],{'as':_0x2b55('0x1bf'),'foreignKey':_0x2b55('0x1c0')});db['FreshsalesConfiguration']['hasMany'](db[_0x2b55('0xda')],{'as':_0x2b55('0x1b8'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xd8')][_0x2b55('0x12c')](db['FreshsalesAccount'],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x1bc')});db['FreshsalesField'][_0x2b55('0x11d')](db[_0x2b55('0xda')],{'as':_0x2b55('0x1c2'),'foreignKey':_0x2b55('0x1be')});db[_0x2b55('0xda')][_0x2b55('0x11d')](db[_0x2b55('0xda')],{'as':_0x2b55('0x1c8'),'foreignKey':_0x2b55('0x1c0')});db[_0x2b55('0xda')]['hasMany'](db[_0x2b55('0xda')],{'as':_0x2b55('0x1c5'),'foreignKey':_0x2b55('0x1c1')});db[_0x2b55('0xda')][_0x2b55('0x12c')](db[_0x2b55('0x9d')],{'as':_0x2b55('0x9d'),'foreignKey':_0x2b55('0x1c3')});db['ChatQueueReport'][_0x2b55('0x12c')](db['ChatWebsite'],{});db['ChatQueueReport'][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':_0x2b55('0x169'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x1ca')][_0x2b55('0x12c')](db['CmContact'],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0x1ca')][_0x2b55('0x12c')](db['ChatInteraction'],{});db[_0x2b55('0x1ca')][_0x2b55('0x12c')](db[_0x2b55('0x70')],{});db[_0x2b55('0x1ca')]['belongsTo'](db['User'],{});db[_0x2b55('0x1ca')]['belongsTo'](db[_0x2b55('0x73')],{});db['ChatInternalMessage'][_0x2b55('0x12c')](db['User'],{'onDelete':'cascade','foreignKey':_0x2b55('0x1cb')});db[_0x2b55('0xde')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'onDelete':_0x2b55('0x11c'),'foreignKey':'ToId'});db[_0x2b55('0xe2')]['hasMany'](db[_0x2b55('0xe1')],{'foreignKey':_0x2b55('0x1cc'),'onDelete':_0x2b55('0x11c')});db[_0x2b55('0xe2')][_0x2b55('0x11d')](db[_0x2b55('0xdf')],{'foreignKey':_0x2b55('0x1cc'),'onDelete':_0x2b55('0x11c')});db[_0x2b55('0xe4')][_0x2b55('0x12c')](db['SmsAccount'],{});db[_0x2b55('0xe4')]['belongsTo'](db[_0x2b55('0x103')],{'as':'List','foreignKey':_0x2b55('0x16a')});db[_0x2b55('0xe4')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db[_0x2b55('0xe4')]['belongsTo'](db[_0x2b55('0x5d')],{});db['SmsQueueReport'][_0x2b55('0x12c')](db[_0x2b55('0x185')],{});db[_0x2b55('0xe4')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{});db[_0x2b55('0xe4')][_0x2b55('0x12c')](db[_0x2b55('0x60')],{});db['JscriptyProject'][_0x2b55('0x11d')](db[_0x2b55('0xe2')],{'foreignKey':_0x2b55('0x1cd')});db[_0x2b55('0xe9')][_0x2b55('0x11d')](db[_0x2b55('0xe1')],{'foreignKey':_0x2b55('0x1cd')});db[_0x2b55('0xe9')][_0x2b55('0x11d')](db[_0x2b55('0xdf')],{'foreignKey':_0x2b55('0x1cd')});db[_0x2b55('0xed')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x173'),'through':_0x2b55('0x149')});db['Team'][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':'user_has_teams'});db[_0x2b55('0xf3')][_0x2b55('0x12f')](db[_0x2b55('0x1b')],{'through':_0x2b55('0x119'),'as':_0x2b55('0x139')});db[_0x2b55('0xf3')][_0x2b55('0x12f')](db[_0x2b55('0x13a')],{'through':_0x2b55('0x16e'),'as':'MailQueues'});db[_0x2b55('0xf3')][_0x2b55('0x12f')](db[_0x2b55('0x73')],{'through':'team_has_chat_queues','as':_0x2b55('0x1ce')});db[_0x2b55('0xf3')][_0x2b55('0x12f')](db[_0x2b55('0x56')],{'through':'team_has_fax_queues','as':'FaxQueues'});db[_0x2b55('0xf3')][_0x2b55('0x12f')](db[_0x2b55('0x60')],{'through':_0x2b55('0x18a'),'as':'SmsQueues'});db['Team']['belongsToMany'](db['OpenchannelQueue'],{'through':_0x2b55('0x18f'),'as':_0x2b55('0x1cf')});db[_0x2b55('0xf3')][_0x2b55('0x12f')](db[_0x2b55('0x1d0')],{'through':'team_has_whatsapp_queues','as':_0x2b55('0x13e')});db[_0x2b55('0x19f')]['hasMany'](db[_0x2b55('0x7c')],{'as':'Hoppers','foreignKey':_0x2b55('0x1a0')});db[_0x2b55('0x19f')][_0x2b55('0x11d')](db[_0x2b55('0x7f')],{'as':'HopperFinals','foreignKey':_0x2b55('0x1a0')});db[_0x2b55('0x19f')][_0x2b55('0x11d')](db[_0x2b55('0x81')],{'as':_0x2b55('0x151'),'foreignKey':'CampaignId'});db['Campaign'][_0x2b55('0x11d')](db[_0x2b55('0x7d')],{'as':_0x2b55('0x152'),'foreignKey':_0x2b55('0x1a0')});db[_0x2b55('0x19f')][_0x2b55('0x12c')](db[_0x2b55('0x2c')],{'as':_0x2b55('0x2c'),'foreignKey':_0x2b55('0x154')});db['Campaign'][_0x2b55('0x12c')](db['Trunk'],{'as':_0x2b55('0x155'),'foreignKey':'TrunkBackupId'});db[_0x2b55('0x19f')][_0x2b55('0x12c')](db[_0x2b55('0x91')],{'as':_0x2b55('0x91'),'foreignKey':_0x2b55('0x156')});db['Campaign'][_0x2b55('0x12c')](db['SquareProject'],{'as':'SquareProject','foreignKey':_0x2b55('0x1d1')});db[_0x2b55('0x19f')][_0x2b55('0x12f')](db[_0x2b55('0x103')],{'as':_0x2b55('0x131'),'through':_0x2b55('0x1d2')});db[_0x2b55('0x19f')][_0x2b55('0x12f')](db[_0x2b55('0x103')],{'as':_0x2b55('0x15a'),'through':'campaigns_has_cm_blacklists'});db[_0x2b55('0x17f')][_0x2b55('0x12c')](db[_0x2b55('0x71')],{'as':_0x2b55('0x71'),'foreignKey':'ChatOfflineMessageId'});db['MailTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x46')],{});db[_0x2b55('0xfb')][_0x2b55('0x12c')](db['MailInteraction'],{});db['MailTransferReport']['belongsTo'](db['MailAccount'],{'foreignKey':'FromMailAccountId','as':_0x2b55('0x1d3')});db['MailTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x2b55('0x1d4'),'as':'FromAgent'});db['MailTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x2b55('0x1d5'),'as':_0x2b55('0x1d6')});db[_0x2b55('0xfb')][_0x2b55('0x12c')](db[_0x2b55('0x13a')],{'foreignKey':_0x2b55('0x1d7'),'as':'ToQueue'});db[_0x2b55('0xfb')][_0x2b55('0x12c')](db['MailAccount'],{'foreignKey':'ToMailAccountId','as':_0x2b55('0x1d8')});db[_0x2b55('0xfd')][_0x2b55('0x12c')](db[_0x2b55('0x70')],{});db[_0x2b55('0xfd')]['belongsTo'](db['ChatInteraction'],{});db['ChatTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x6b')],{'foreignKey':'FromChatWebsiteId','as':_0x2b55('0x1d3')});db[_0x2b55('0xfd')][_0x2b55('0x12c')](db['User'],{'foreignKey':_0x2b55('0x1d4'),'as':_0x2b55('0x1d9')});db[_0x2b55('0xfd')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':_0x2b55('0x1d5'),'as':_0x2b55('0x1d6')});db['ChatTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x73')],{'foreignKey':_0x2b55('0x1da'),'as':'ToQueue'});db[_0x2b55('0xfd')][_0x2b55('0x12c')](db[_0x2b55('0x6b')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db['FaxTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x54')],{});db[_0x2b55('0xff')]['belongsTo'](db[_0x2b55('0x52')],{});db[_0x2b55('0xff')][_0x2b55('0x12c')](db[_0x2b55('0x4f')],{'foreignKey':_0x2b55('0x1db'),'as':_0x2b55('0x1d3')});db['FaxTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x2b55('0xff')]['belongsTo'](db[_0x2b55('0x12')],{'foreignKey':'ToUserId','as':_0x2b55('0x1d6')});db[_0x2b55('0xff')][_0x2b55('0x12c')](db[_0x2b55('0x56')],{'foreignKey':_0x2b55('0x1dc'),'as':_0x2b55('0x1dd')});db[_0x2b55('0xff')]['belongsTo'](db[_0x2b55('0x4f')],{'foreignKey':_0x2b55('0x1de'),'as':_0x2b55('0x1d8')});db[_0x2b55('0x101')][_0x2b55('0x12c')](db['OpenchannelMessage'],{});db[_0x2b55('0x101')][_0x2b55('0x12c')](db[_0x2b55('0x66')],{});db[_0x2b55('0x101')][_0x2b55('0x12c')](db[_0x2b55('0x62')],{'foreignKey':'FromOpenchannelAccountId','as':'FromAccount'});db[_0x2b55('0x101')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':_0x2b55('0x1d4'),'as':_0x2b55('0x1d9')});db[_0x2b55('0x101')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':_0x2b55('0x1d5'),'as':_0x2b55('0x1d6')});db['OpenchannelTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x69')],{'foreignKey':_0x2b55('0x1df'),'as':'ToQueue'});db[_0x2b55('0x101')][_0x2b55('0x12c')](db[_0x2b55('0x62')],{'foreignKey':_0x2b55('0x1e0'),'as':'ToAccount'});db[_0x2b55('0x102')][_0x2b55('0x12c')](db[_0x2b55('0x185')],{});db['SmsTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x5d')],{});db['SmsTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x59')],{'foreignKey':'FromSmsAccountId','as':_0x2b55('0x1d3')});db[_0x2b55('0x102')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':_0x2b55('0x1d4'),'as':_0x2b55('0x1d9')});db[_0x2b55('0x102')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':_0x2b55('0x1d5'),'as':_0x2b55('0x1d6')});db['SmsTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x60')],{'foreignKey':_0x2b55('0x1e1'),'as':_0x2b55('0x1dd')});db[_0x2b55('0x102')][_0x2b55('0x12c')](db[_0x2b55('0x59')],{'foreignKey':_0x2b55('0x1e2'),'as':_0x2b55('0x1d8')});db[_0x2b55('0x103')][_0x2b55('0x11d')](db[_0x2b55('0x8d')],{'as':_0x2b55('0x166'),'foreignKey':'ListId','onDelete':_0x2b55('0x11c')});db[_0x2b55('0x103')]['hasMany'](db['CmCustomField'],{'as':_0x2b55('0x1e3'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x103')][_0x2b55('0x11d')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x197'),'onDelete':_0x2b55('0x11c'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x103')][_0x2b55('0x11d')](db['CmHopperFinal'],{'as':'HopperFinals','foreignKey':'ListId'});db['CmList'][_0x2b55('0x11d')](db[_0x2b55('0x81')],{'as':_0x2b55('0x123'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x103')]['hasMany'](db[_0x2b55('0x83')],{'as':_0x2b55('0x83'),'foreignKey':_0x2b55('0x16a')});db['CmList']['belongsToMany'](db[_0x2b55('0x1b')],{'as':_0x2b55('0x1e4'),'through':_0x2b55('0x1e5')});db[_0x2b55('0x103')]['belongsToMany'](db[_0x2b55('0x12')],{'as':'Agents','through':'cm_user_has_lists'});db[_0x2b55('0x13f')][_0x2b55('0x11d')](db[_0x2b55('0x18')],{'as':'Extensions','onDelete':'cascade'});db[_0x2b55('0x13f')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x141')});db[_0x2b55('0x106')]['hasMany'](db[_0x2b55('0x12')],{'as':'Users','foreignKey':_0x2b55('0x1e6')});db['UserProfile'][_0x2b55('0x11d')](db[_0x2b55('0x1e7')],{'as':_0x2b55('0x1e8'),'foreignKey':_0x2b55('0x1e6'),'onDelete':'cascade'});db['UserProfileSection'][_0x2b55('0x11d')](db[_0x2b55('0x109')],{'as':'Resources','foreignKey':_0x2b55('0x1e9'),'onDelete':_0x2b55('0x11c')});db[_0x2b55('0x10c')]['hasMany'](db[_0x2b55('0x8d')],{'as':_0x2b55('0x166'),'foreignKey':_0x2b55('0x1ea'),'onDelete':'cascade'});db[_0x2b55('0x10c')][_0x2b55('0x11d')](db[_0x2b55('0x8b')],{'as':'Answers','foreignKey':_0x2b55('0x1ea')});db[_0x2b55('0x10c')][_0x2b55('0x11d')](db[_0x2b55('0x111')],{'as':_0x2b55('0x15c'),'foreignKey':'WhatsappAccountId'});db[_0x2b55('0x10c')][_0x2b55('0x11d')](db[_0x2b55('0x129')],{'as':_0x2b55('0x167')});db['WhatsappAccount']['hasMany'](db[_0x2b55('0x10e')],{'as':'Applications'});db[_0x2b55('0x10c')][_0x2b55('0x12c')](db[_0x2b55('0x103')],{'as':'List','foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x10c')][_0x2b55('0x12c')](db[_0x2b55('0x157')],{'as':'mandatoryDispositionPause','foreignKey':_0x2b55('0x17b')});db[_0x2b55('0x10c')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x16d'),'through':_0x2b55('0x148')});db['WhatsappApplication'][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x10e')][_0x2b55('0x12c')](db['WhatsappQueue'],{'onDelete':'restrict'});db['WhatsappApplication'][_0x2b55('0x12c')](db[_0x2b55('0x10c')],{'onDelete':_0x2b55('0x178')});db[_0x2b55('0x10e')][_0x2b55('0x12c')](db[_0x2b55('0x91')],{'onDelete':_0x2b55('0x178'),'foreignKey':_0x2b55('0x156')});db[_0x2b55('0x10e')][_0x2b55('0x12c')](db[_0x2b55('0x99')],{'onDelete':_0x2b55('0x178'),'foreignKey':_0x2b55('0x186')});db[_0x2b55('0x129')]['hasMany'](db[_0x2b55('0x111')],{'as':'Messages','onDelete':_0x2b55('0x11c'),'foreignKey':'WhatsappInteractionId'});db['WhatsappInteraction'][_0x2b55('0x12c')](db['WhatsappAccount'],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0x2b55('0x129')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':_0x2b55('0x163')});db['WhatsappInteraction']['belongsTo'](db[_0x2b55('0x12')],{'as':_0x2b55('0x17e'),'foreignKey':_0x2b55('0x11f')});db[_0x2b55('0x129')]['belongsToMany'](db[_0x2b55('0x99')],{'through':_0x2b55('0x1b0'),'as':_0x2b55('0x170')});db['WhatsappInteraction']['belongsToMany'](db[_0x2b55('0x99')],{'through':_0x2b55('0x1b0'),'as':_0x2b55('0x172')});db[_0x2b55('0x129')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':_0x2b55('0x173'),'through':'user_has_whatsapp_interactions','foreignKey':_0x2b55('0x1eb')});db[_0x2b55('0x111')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'as':_0x2b55('0x12')});db[_0x2b55('0x111')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'onDelete':_0x2b55('0x11c'),'as':_0x2b55('0x162')});db[_0x2b55('0x111')][_0x2b55('0x12c')](db[_0x2b55('0x129')],{'onDelete':'cascade','as':_0x2b55('0x174'),'foreignKey':_0x2b55('0x1eb')});db['WhatsappMessage'][_0x2b55('0x12c')](db[_0x2b55('0x10c')],{'as':_0x2b55('0x175'),'foreignKey':_0x2b55('0x1ea')});db[_0x2b55('0x1ec')][_0x2b55('0x12c')](db[_0x2b55('0x10c')],{});db[_0x2b55('0x1ec')]['belongsTo'](db['CmList'],{'as':_0x2b55('0x169'),'foreignKey':_0x2b55('0x16a')});db[_0x2b55('0x1ec')][_0x2b55('0x12c')](db[_0x2b55('0x7a')],{'as':_0x2b55('0x162'),'foreignKey':'ContactId'});db[_0x2b55('0x1ec')]['belongsTo'](db[_0x2b55('0x129')],{});db[_0x2b55('0x1ec')][_0x2b55('0x12c')](db[_0x2b55('0x1d0')],{});db[_0x2b55('0x1ec')][_0x2b55('0x12c')](db['WhatsappMessage'],{});db[_0x2b55('0x1ec')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{});db[_0x2b55('0x114')][_0x2b55('0x12c')](db[_0x2b55('0x111')],{});db['WhatsappTransferReport'][_0x2b55('0x12c')](db[_0x2b55('0x129')],{});db[_0x2b55('0x114')][_0x2b55('0x12c')](db[_0x2b55('0x10c')],{'foreignKey':_0x2b55('0x1ed'),'as':'FromAccount'});db[_0x2b55('0x114')][_0x2b55('0x12c')](db['WhatsappAccount'],{'foreignKey':_0x2b55('0x1ee'),'as':_0x2b55('0x1d8')});db[_0x2b55('0x114')]['belongsTo'](db[_0x2b55('0x1d0')],{'foreignKey':_0x2b55('0x1ef'),'as':_0x2b55('0x1dd')});db[_0x2b55('0x114')][_0x2b55('0x12c')](db[_0x2b55('0x12')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0x2b55('0x114')][_0x2b55('0x12c')](db['User'],{'foreignKey':'ToUserId','as':_0x2b55('0x1d6')});db[_0x2b55('0x1d0')][_0x2b55('0x12f')](db[_0x2b55('0x12')],{'as':'Agents','through':_0x2b55('0x3c'),'foreignKey':_0x2b55('0x1f0')});db[_0x2b55('0x1d0')][_0x2b55('0x12f')](db[_0x2b55('0xf3')],{'through':_0x2b55('0x1f1'),'as':'Teams'});module[_0x2b55('0x1f2')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x91c8=['ServicenowField','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','Team','License','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','../api/smsTransferReport/smsTransferReport.model','../api/voicePrefix/voicePrefix.model','UserProfile','UserProfileSection','../api/userProfileSection/userProfileSection.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','WhatsappInteraction','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','hasOne','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','cascade','CmHopperHistory','HopperHistory','ChatInteractions','SmsInteractions','FaxInteractions','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','chat_group_has_users','Contacts','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','user_has_chat_interactions','FaxInteraction','user_has_fax_interactions','user_has_sms_interactions','OpenchannelInteractions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueue','VoiceQueues','UserVoiceQueue','ChatQueues','FaxQueues','SmsQueue','SmsQueues','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueue','WhatsappQueues','VoicePrefix','VoicePrefixes','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','user_has_openchannel_accounts','SmsAccount','SmsAccounts','user_has_sms_accounts','WhatsappAccount','user_has_whatsapp_accounts','SquareProject','SquareProjects','user_has_square_projects','SpiedAgents','ChanSpyId','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','HopperBlacks','JscriptySessions','Trunk','TrunkId','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','mailboxuser','VoiceQueueReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','MailAccountId','Imap','Dispositions','CannedAnswer','Answers','Messages','Interactions','Applications','List','Template','TemplateId','mandatoryDispositionPause','Agents','MailQueue','team_has_mail_queues','MailMessage','MailInteractionId','Account','Contact','mail_interaction_has_tags','Tags','Users','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','restrict','TagId','MailQueueReport','ContactId','Items','FaxAccountId','Exntensions','Owner','fax_interaction_has_tags','Interaction','FaxInteractionId','ListId','SmsAccountId','sms_interaction_has_tags','ThroughTags','SmsInteractionId','SmsQueueId','OpenchannelAccountId','OpenchannelMessage','OpenchannelApplication','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','AttachmentId','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Agent','Queue','ChatInteractionId','chat_interaction_has_tags','Attachments','team_has_chat_queues','Website','CompanyId','Company','cm_contact_has_tags','Campaign','CampaignId','OwnerId','CmHopperBlack','Condition','All','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Actions','AutomationId','ParentId','MailApplications','ChatApplications','FaxApplications','SmsApplications','Schedule','DefaultReportId','CustomReportId','Mohs','whatsapp_interaction_has_tags','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','SalesforceAccount','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','Descriptions','FieldId','Subject','Description','DescriptionId','Field','VariableId','SugarcrmConfiguration','DeskAccount','int_desk_configuration_has_tags','FreshdeskField','ServicenowAccount','FromId','ToId','SessionId','ProjectId','MailQueues','team_has_fax_queues','team_has_sms_queues','team_has_whatsapp_queues','TrunkBackup','SquareProjectId','campaigns_has_cm_blacklists','FromUserId','ToUserId','ToAgent','ToMailQueueId','ToMailAccountId','ToAccount','FromChatWebsiteId','FromAccount','FromAgent','ToChatQueueId','ToQueue','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','SmsTransferReport','FromSmsAccountId','ToSmsAccountId','CmCustomField','CustomFields','Queues','user_has_voice_prefixes','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','ToWhatsappAccountId','ToQueueId','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','name','utf8','utf8_general_ci','sequelizeHistory','database','password','username','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','../api/voiceContext/voiceContext.model','VoiceExtension','VoiceMusicOnHold','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','VoiceMailMessage','VoiceCallReport','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','MailAccount','../api/mailAccount/mailAccount.model','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','ChatMessage','../api/chatMessage/chatMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','Action','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/schedule/schedule.model','Tag','../api/tag/tag.model','../api/template/template.model','Trigger','../api/trigger/trigger.model','Variable','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','AnalyticDefaultReport','AnalyticExtractedReport','AnalyticMetric','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model'];(function(_0x4ef23a,_0x27fb98){var _0xe5d974=function(_0x361278){while(--_0x361278){_0x4ef23a['push'](_0x4ef23a['shift']());}};_0xe5d974(++_0x27fb98);}(_0x91c8,0x13d));var _0x891c=function(_0x463a25,_0x893d60){_0x463a25=_0x463a25-0x0;var _0x2fee6f=_0x91c8[_0x463a25];return _0x2fee6f;};'use strict';var config=require(_0x891c('0x0'));var Sequelize=require(_0x891c('0x1'));var _=require(_0x891c('0x2'));var jstz=require(_0x891c('0x3'));var timezone=jstz[_0x891c('0x4')]();config[_0x891c('0x1')]=_[_0x891c('0x5')](config[_0x891c('0x1')],{'database':_0x891c('0x6'),'username':_0x891c('0x7'),'password':_0x891c('0x8'),'options':{'host':_0x891c('0x9'),'port':0xcea,'dialect':_0x891c('0xa'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x891c('0xb')](),'define':{'charset':_0x891c('0xc'),'collate':_0x891c('0xd')}}});config[_0x891c('0xe')]=_[_0x891c('0x5')](config['sequelizeHistory'],{'database':_0x891c('0x6'),'username':'xcall','password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0x891c('0xb')](),'define':{'charset':_0x891c('0xc'),'collate':_0x891c('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x891c('0x1')][_0x891c('0xf')],config[_0x891c('0x1')]['username'],config[_0x891c('0x1')][_0x891c('0x10')],config[_0x891c('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0x891c('0xe')]['database'],config[_0x891c('0xe')][_0x891c('0x11')],config[_0x891c('0xe')][_0x891c('0x10')],config[_0x891c('0xe')]['options'])};db[_0x891c('0x12')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x14'));db[_0x891c('0x15')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x16'));db[_0x891c('0x17')]=db[_0x891c('0x1')]['import'](_0x891c('0x18'));db[_0x891c('0x19')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceExtension/voiceExtension.model');db[_0x891c('0x1a')]=db['sequelize'][_0x891c('0x13')]('../api/voiceMusicOnHold/voiceMusicOnHold.model');db['VoiceQueue']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceQueue/voiceQueue.model');db['VoiceRecording']=db['sequelize'][_0x891c('0x13')](_0x891c('0x1b'));db['ScreenRecording']=db[_0x891c('0x1')]['import'](_0x891c('0x1c'));db[_0x891c('0x1d')]=db[_0x891c('0x1')]['import']('../api/voiceMail/voiceMail.model');db[_0x891c('0x1e')]=db[_0x891c('0x1')]['import']('../api/voiceMailMessage/voiceMailMessage.model');db[_0x891c('0x1f')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceCallReport/voiceCallReport.model');db[_0x891c('0x20')]=db[_0x891c('0x1')]['import'](_0x891c('0x21'));db['VoiceAgentReport']=db['sequelize'][_0x891c('0x13')](_0x891c('0x22'));db['VoiceQueueReport']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x23'));db[_0x891c('0x24')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x25'));db['Trunk']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x26'));db['VoiceTransferReport']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x27'));db[_0x891c('0x28')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x29'));db['UserVoiceQueue']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x2a'));db[_0x891c('0x2b')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x2c'));db[_0x891c('0x2d')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x2e'));db[_0x891c('0x2f')]=db[_0x891c('0x1')]['import'](_0x891c('0x30'));db[_0x891c('0x31')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x32'));db['UserOpenchannelQueue']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/userOpenchannelQueue/userOpenchannelQueue.model');db[_0x891c('0x33')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x34'));db[_0x891c('0x35')]=db[_0x891c('0x1')]['import'](_0x891c('0x36'));db[_0x891c('0x37')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/mailServerOut/mailServerOut.model');db[_0x891c('0x38')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x39'));db['MailQueue']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x3a'));db[_0x891c('0x3b')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x3c'));db['MailMessage']=db['sequelize'][_0x891c('0x13')](_0x891c('0x3d'));db[_0x891c('0x3e')]=db[_0x891c('0x1')]['import'](_0x891c('0x3f'));db['MailQueueReport']=db[_0x891c('0x1')]['import'](_0x891c('0x40'));db[_0x891c('0x41')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x42'));db[_0x891c('0x43')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/dashboardItem/dashboardItem.model');db[_0x891c('0x44')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/faxAccount/faxAccount.model');db[_0x891c('0x45')]=db[_0x891c('0x1')]['import'](_0x891c('0x46'));db['FaxInteraction']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x47'));db[_0x891c('0x48')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x49'));db[_0x891c('0x4a')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x4b'));db[_0x891c('0x4c')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x4d'));db['SmsAccount']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x4e'));db[_0x891c('0x4f')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x50'));db[_0x891c('0x51')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x52'));db[_0x891c('0x53')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x54'));db['SmsQueue']=db['sequelize'][_0x891c('0x13')](_0x891c('0x55'));db[_0x891c('0x56')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x57'));db['OpenchannelApplication']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x58'));db[_0x891c('0x59')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x5a'));db['OpenchannelMessage']=db[_0x891c('0x1')]['import'](_0x891c('0x5b'));db[_0x891c('0x5c')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x5d'));db[_0x891c('0x5e')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x5f'));db['OpenchannelQueueReport']=db[_0x891c('0x1')]['import'](_0x891c('0x60'));db[_0x891c('0x61')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x62'));db[_0x891c('0x63')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatInteraction/chatInteraction.model');db[_0x891c('0x64')]=db['sequelize']['import'](_0x891c('0x65'));db['ChatOfflineMessage']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x891c('0x66')]=db[_0x891c('0x1')]['import'](_0x891c('0x67'));db[_0x891c('0x68')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatGroup/chatGroup.model');db[_0x891c('0x69')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatProactiveAction/chatProactiveAction.model');db[_0x891c('0x6a')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x6b'));db[_0x891c('0x6c')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/cmContact/cmContact.model');db[_0x891c('0x6d')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x6e'));db['CmHopperBlack']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x6f'));db[_0x891c('0x70')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x71'));db['CmHopperHistory']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x72'));db[_0x891c('0x73')]=db[_0x891c('0x1')]['import']('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/cmCustomField/cmCustomField.model');db[_0x891c('0x74')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/action/action.model');db[_0x891c('0x75')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x76'));db['CannedAnswer']=db[_0x891c('0x1')]['import'](_0x891c('0x77'));db[_0x891c('0x78')]=db['sequelize'][_0x891c('0x13')]('../api/disposition/disposition.model');db['Condition']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x79'));db[_0x891c('0x7a')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x7b'));db[_0x891c('0x7c')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x7d'));db[_0x891c('0x7e')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x7f'));db['VoiceQueuesLog']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/voiceQueuesLog/voiceQueuesLog.model');db['Schedule']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x80'));db['Sound']=db['sequelize'][_0x891c('0x13')]('../api/sound/sound.model');db[_0x891c('0x81')]=db['sequelize'][_0x891c('0x13')](_0x891c('0x82'));db['Template']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x83'));db[_0x891c('0x84')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x85'));db[_0x891c('0x86')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/variable/variable.model');db[_0x891c('0x87')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x88'));db[_0x891c('0x89')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x8a'));db[_0x891c('0x8b')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/analyticCustomReport/analyticCustomReport.model');db[_0x891c('0x8c')]=db['sequelize'][_0x891c('0x13')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0x891c('0x8d')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0x891c('0x8e')]=db[_0x891c('0x1')]['import'](_0x891c('0x8f'));db[_0x891c('0x90')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x91'));db[_0x891c('0x92')]=db[_0x891c('0x1')]['import'](_0x891c('0x93'));db['SalesforceAccount']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x94'));db['SalesforceConfiguration']=db['sequelize'][_0x891c('0x13')](_0x891c('0x95'));db[_0x891c('0x96')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x97'));db[_0x891c('0x98')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x99'));db['SugarcrmConfiguration']=db[_0x891c('0x1')]['import'](_0x891c('0x9a'));db[_0x891c('0x9b')]=db['sequelize']['import']('../api/intSugarcrmField/intSugarcrmField.model');db['DeskAccount']=db[_0x891c('0x1')]['import'](_0x891c('0x9c'));db[_0x891c('0x9d')]=db['sequelize'][_0x891c('0x13')]('../api/intDeskConfiguration/intDeskConfiguration.model');db[_0x891c('0x9e')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x9f'));db[_0x891c('0xa0')]=db[_0x891c('0x1')]['import'](_0x891c('0xa1'));db[_0x891c('0xa2')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0x891c('0xa3')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intZohoField/intZohoField.model');db[_0x891c('0xa4')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xa5'));db[_0x891c('0xa6')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xa7'));db[_0x891c('0xa8')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xa9'));db[_0x891c('0xaa')]=db['sequelize'][_0x891c('0x13')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0x891c('0xab')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xac'));db['FreshdeskField']=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0x891c('0xad')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xae'));db[_0x891c('0xaf')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xb0'));db[_0x891c('0xb1')]=db[_0x891c('0x1')]['import']('../api/intVtigerField/intVtigerField.model');db['ServicenowAccount']=db['sequelize']['import'](_0x891c('0xb2'));db[_0x891c('0xb3')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xb4'));db[_0x891c('0xb5')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/intServicenowField/intServicenowField.model');db['Dynamics365Account']=db[_0x891c('0x1')]['import'](_0x891c('0xb6'));db[_0x891c('0xb7')]=db[_0x891c('0x1')]['import'](_0x891c('0xb8'));db[_0x891c('0xb9')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xba'));db[_0x891c('0xbb')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xbc'));db[_0x891c('0xbd')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xbe'));db[_0x891c('0xbf')]=db[_0x891c('0x1')]['import'](_0x891c('0xc0'));db[_0x891c('0x87')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0x88'));db[_0x891c('0xc1')]=db['sequelize'][_0x891c('0x13')]('../api/network/network.model');db[_0x891c('0xc2')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xc3'));db[_0x891c('0xc4')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xc5'));db[_0x891c('0xc6')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xc7'));db[_0x891c('0xc8')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xc9'));db[_0x891c('0xca')]=db[_0x891c('0x1')]['import']('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0x891c('0xcb')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xcc'));db[_0x891c('0xcd')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xce'));db[_0x891c('0xcf')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/squareReportDetail/squareReportDetail.model');db[_0x891c('0xd0')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xd1'));db[_0x891c('0xd2')]=db['sequelize']['import']('../api/setting/setting.model');db[_0x891c('0xd3')]=db['sequelize'][_0x891c('0x13')]('../api/squareOdbc/squareOdbc.model');db['SquareProject']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xd4'));db[_0x891c('0xd5')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xd6'));db['SquareMessage']=db['sequelize'][_0x891c('0x13')]('../api/squareMessage/squareMessage.model');db[_0x891c('0xd7')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/team/team.model');db[_0x891c('0xd8')]=db[_0x891c('0x1')]['import']('../api/license/license.model');db['Campaign']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xd9'));db[_0x891c('0xda')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xdb'));db[_0x891c('0xdc')]=db[_0x891c('0x1')]['import'](_0x891c('0xdd'));db[_0x891c('0xde')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xdf'));db[_0x891c('0xe0')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xe1'));db[_0x891c('0xe2')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/chatTransferReport/chatTransferReport.model');db[_0x891c('0xe3')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xe4'));db[_0x891c('0xe5')]=db['sequelize']['import'](_0x891c('0xe6'));db['SmsTransferReport']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xe7'));db['CmList']=db[_0x891c('0x1')]['import']('../api/cmList/cmList.model');db['VoicePrefix']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xe8'));db[_0x891c('0xe9')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/userProfile/userProfile.model');db[_0x891c('0xea')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xeb'));db['UserProfileResource']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xec'));db[_0x891c('0xed')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xee'));db['WhatsappAccount']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xef'));db[_0x891c('0xf0')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/whatsappApplication/whatsappApplication.model');db[_0x891c('0xf1')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/whatsappInteraction/whatsappInteraction.model');db[_0x891c('0xf2')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xf3'));db[_0x891c('0xf4')]=db['sequelize'][_0x891c('0x13')](_0x891c('0xf5'));db[_0x891c('0xf6')]=db[_0x891c('0x1')][_0x891c('0x13')]('../api/whatsappTransferReport/whatsappTransferReport.model');db['WhatsappQueue']=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xf7'));db[_0x891c('0xf8')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xf9'));db[_0x891c('0xfa')]=db[_0x891c('0x1')][_0x891c('0x13')](_0x891c('0xfb'));db['User'][_0x891c('0xfc')](db['VoiceMail'],{'as':_0x891c('0x1d'),'onDelete':'cascade','foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0xff')],{'as':_0x891c('0x100'),'foreignKey':'UserId'});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0x28')],{'as':_0x891c('0x101'),'foreignKey':'UserId'});db[_0x891c('0x12')]['hasMany'](db[_0x891c('0x19')],{'as':_0x891c('0x102'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0x70')],{'as':'HopperFinals','foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')]['hasMany'](db[_0x891c('0x104')],{'as':_0x891c('0x105'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db['ReportAgentPreview'],{'as':'ReportAgentPreview','foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')]['hasMany'](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0x891c('0xfd')});db['User']['hasMany'](db[_0x891c('0x63')],{'as':_0x891c('0x106'),'foreignKey':'UserId'});db[_0x891c('0x12')][_0x891c('0xfe')](db[_0x891c('0x51')],{'as':_0x891c('0x107'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db['FaxInteraction'],{'as':_0x891c('0x108'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db[_0x891c('0x109')],{'as':_0x891c('0x10a'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x12')]['hasMany'](db[_0x891c('0xf1')],{'as':_0x891c('0x10b'),'foreignKey':_0x891c('0xfd')});db['User'][_0x891c('0xfe')](db['UserNotification'],{'as':_0x891c('0x10c'),'foreignKey':_0x891c('0x10d')});db[_0x891c('0x12')][_0x891c('0x10e')](db[_0x891c('0xe9')],{'as':_0x891c('0xe9'),'foreignKey':_0x891c('0x10f')});db['User'][_0x891c('0x110')](db['ChatGroup'],{'as':'Groups','through':_0x891c('0x111')});db[_0x891c('0x12')][_0x891c('0x110')](db['CmContact'],{'as':_0x891c('0x112'),'through':_0x891c('0x113')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x114')],{'as':_0x891c('0x115'),'through':_0x891c('0x116')});db[_0x891c('0x12')][_0x891c('0x110')](db[_0x891c('0xd7')],{'through':_0x891c('0x117')});db[_0x891c('0x12')][_0x891c('0x110')](db['MailInteraction'],{'as':'MailInteractions','through':_0x891c('0x118')});db['User'][_0x891c('0x110')](db[_0x891c('0x63')],{'as':_0x891c('0x106'),'through':_0x891c('0x119')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x11a')],{'as':'FaxInteractions','through':_0x891c('0x11b')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x51')],{'as':_0x891c('0x107'),'through':_0x891c('0x11c')});db['User'][_0x891c('0x110')](db['OpenchannelInteraction'],{'as':_0x891c('0x11d'),'through':_0x891c('0x11e')});db['User'][_0x891c('0x110')](db[_0x891c('0xf1')],{'as':'WhatsappInteractions','through':_0x891c('0x11f')});db['User'][_0x891c('0x110')](db[_0x891c('0x120')],{'as':_0x891c('0x121'),'through':_0x891c('0x122'),'required':![]});db[_0x891c('0x12')][_0x891c('0x110')](db['MailQueue'],{'as':'MailQueues','through':_0x891c('0x2d'),'required':![]});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x66')],{'as':_0x891c('0x123'),'through':_0x891c('0x2b'),'required':![],'hooks':!![]});db['User'][_0x891c('0x110')](db[_0x891c('0x4a')],{'as':_0x891c('0x124'),'through':_0x891c('0x2f'),'required':![]});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x125')],{'as':_0x891c('0x126'),'through':'UserSmsQueue','required':![]});db['User'][_0x891c('0x110')](db[_0x891c('0x5c')],{'as':_0x891c('0x127'),'through':_0x891c('0x128'),'required':![]});db[_0x891c('0x12')][_0x891c('0x110')](db[_0x891c('0x129')],{'as':_0x891c('0x12a'),'through':_0x891c('0x33'),'required':![]});db[_0x891c('0x12')][_0x891c('0x110')](db[_0x891c('0x114')],{'through':_0x891c('0x116')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x12b')],{'as':_0x891c('0x12c'),'through':'user_has_voice_prefixes','required':![]});db['User'][_0x891c('0x110')](db[_0x891c('0x5e')],{'as':_0x891c('0x12d'),'through':_0x891c('0x12e')});db['User'][_0x891c('0x110')](db[_0x891c('0x44')],{'as':'FaxAccounts','through':_0x891c('0x12f')});db['User'][_0x891c('0x110')](db[_0x891c('0x38')],{'as':_0x891c('0x130'),'through':_0x891c('0x131')});db['User'][_0x891c('0x110')](db[_0x891c('0x56')],{'as':'OpenchannelAccounts','through':_0x891c('0x132')});db['User']['belongsToMany'](db[_0x891c('0x133')],{'as':_0x891c('0x134'),'through':_0x891c('0x135')});db[_0x891c('0x12')]['belongsToMany'](db[_0x891c('0x136')],{'as':'WhatsappAccounts','through':_0x891c('0x137')});db['User']['belongsToMany'](db[_0x891c('0x138')],{'as':_0x891c('0x139'),'through':_0x891c('0x13a')});db[_0x891c('0x15')][_0x891c('0xfe')](db['VoiceExtension'],{'as':_0x891c('0x13b'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x13c')});db['VoiceContext'][_0x891c('0xfe')](db['VoiceExtension'],{'onDelete':'cascade'});db[_0x891c('0x19')][_0x891c('0xfe')](db[_0x891c('0x19')],{'as':'Applications','onDelete':_0x891c('0x103')});db['VoiceMusicOnHold']['belongsToMany'](db[_0x891c('0x13d')],{'as':_0x891c('0x13e'),'through':_0x891c('0x13f')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x28')],{'as':_0x891c('0x140'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x6d')],{'as':_0x891c('0x142'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x70')],{'as':_0x891c('0x143'),'foreignKey':'VoiceQueueId'});db[_0x891c('0x120')]['hasMany'](db[_0x891c('0x104')],{'as':_0x891c('0x144'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0x73')],{'as':_0x891c('0x73'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db['CmHopperBlack'],{'as':_0x891c('0x145'),'foreignKey':_0x891c('0x141')});db[_0x891c('0x120')][_0x891c('0xfe')](db[_0x891c('0xca')],{'as':_0x891c('0x146'),'foreignKey':_0x891c('0x141')});db['VoiceQueue']['belongsTo'](db[_0x891c('0x147')],{'as':'Trunk','foreignKey':_0x891c('0x148')});db[_0x891c('0x120')]['belongsTo'](db[_0x891c('0x147')],{'as':'TrunkBackup','foreignKey':_0x891c('0x149')});db[_0x891c('0x120')][_0x891c('0x10e')](db['Interval'],{'as':_0x891c('0x7a'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x120')]['belongsTo'](db[_0x891c('0x7c')],{'as':'mandatoryDispositionPause','foreignKey':_0x891c('0x14b')});db['VoiceQueue'][_0x891c('0x110')](db[_0x891c('0x114')],{'as':_0x891c('0x115'),'through':_0x891c('0x14c')});db[_0x891c('0x120')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':_0x891c('0x122')});db[_0x891c('0x120')][_0x891c('0x110')](db['Team'],{'as':_0x891c('0x14d'),'through':_0x891c('0xfa')});db['VoiceQueue'][_0x891c('0x110')](db[_0x891c('0x114')],{'as':_0x891c('0x14e'),'through':_0x891c('0x14f')});db[_0x891c('0xff')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x12'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x150')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x12'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x1d')][_0x891c('0xfe')](db[_0x891c('0x1e')],{'as':'Messages','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x151'),'sourceKey':'mailbox'});db[_0x891c('0x1e')][_0x891c('0x10e')](db['VoiceMail'],{'foreignKey':_0x891c('0x151'),'targetKey':'mailbox'});db[_0x891c('0x1f')][_0x891c('0xfe')](db[_0x891c('0x152')],{'as':_0x891c('0x153'),'foreignKey':_0x891c('0x154'),'constraints':![]});db[_0x891c('0x1f')]['hasMany'](db[_0x891c('0x155')],{'as':_0x891c('0x156'),'foreignKey':_0x891c('0x154'),'constraints':![]});db['VoiceCallReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':'User','foreignKey':_0x891c('0xfd')});db['VoiceCallReport']['belongsTo'](db[_0x891c('0x6c')],{'as':'Contact','foreignKey':'ContactId'});db[_0x891c('0x35')][_0x891c('0x10e')](db[_0x891c('0x38')],{'as':_0x891c('0x38'),'foreignKey':'MailAccountId'});db[_0x891c('0x37')]['belongsTo'](db[_0x891c('0x38')],{'as':_0x891c('0x38'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x38')]['hasOne'](db[_0x891c('0x35')],{'as':_0x891c('0x158'),'onDelete':_0x891c('0x103')});db[_0x891c('0x38')]['hasOne'](db[_0x891c('0x37')],{'as':'Smtp','onDelete':_0x891c('0x103')});db[_0x891c('0x38')][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x157'),'onDelete':_0x891c('0x103')});db[_0x891c('0x38')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x38')][_0x891c('0xfe')](db['MailMessage'],{'as':_0x891c('0x15c'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x38')]['hasMany'](db[_0x891c('0x109')],{'as':_0x891c('0x15d')});db[_0x891c('0x38')][_0x891c('0xfe')](db[_0x891c('0x3e')],{'as':_0x891c('0x15e')});db[_0x891c('0x38')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db['MailAccount'][_0x891c('0x10e')](db[_0x891c('0x160')],{'as':'Template','foreignKey':_0x891c('0x161')});db['MailAccount'][_0x891c('0x10e')](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x38')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x131')});db[_0x891c('0x164')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':'UserMailQueue'});db[_0x891c('0x164')]['belongsToMany'](db[_0x891c('0xd7')],{'through':_0x891c('0x165'),'as':_0x891c('0x14d')});db['MailInteraction'][_0x891c('0xfe')](db[_0x891c('0x166')],{'as':_0x891c('0x15c'),'onDelete':'cascade','foreignKey':_0x891c('0x167')});db[_0x891c('0x109')]['belongsTo'](db[_0x891c('0x38')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x109')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':'ContactId'});db[_0x891c('0x109')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':'Owner','foreignKey':_0x891c('0xfd')});db[_0x891c('0x109')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x16a'),'as':_0x891c('0x16b')});db[_0x891c('0x109')]['belongsToMany'](db[_0x891c('0x81')],{'through':_0x891c('0x16a'),'as':'ThroughTags'});db['MailInteraction']['belongsToMany'](db['User'],{'as':_0x891c('0x16c'),'through':_0x891c('0x118'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x891c('0xfe')](db[_0x891c('0xdc')],{'as':'Attachments','onDelete':_0x891c('0x103')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':'User'});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x109')],{'as':'Interaction','foreignKey':'MailInteractionId'});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x38')],{'as':'Account','foreignKey':_0x891c('0x157')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'as':_0x891c('0x5e'),'foreignKey':_0x891c('0x16d')});db[_0x891c('0x166')][_0x891c('0x10e')](db[_0x891c('0x16e')],{'as':_0x891c('0x16e'),'foreignKey':_0x891c('0x16f')});db['MailApplication']['belongsTo'](db[_0x891c('0x12')],{'onDelete':'restrict'});db[_0x891c('0x3e')][_0x891c('0x10e')](db[_0x891c('0x164')],{'onDelete':_0x891c('0x170')});db[_0x891c('0x3e')]['belongsTo'](db[_0x891c('0x38')],{'onDelete':_0x891c('0x170')});db[_0x891c('0x3e')][_0x891c('0x10e')](db['Interval'],{'onDelete':_0x891c('0x170'),'foreignKey':'IntervalId'});db['MailApplication'][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':'restrict','foreignKey':_0x891c('0x171')});db[_0x891c('0x172')][_0x891c('0x10e')](db['MailAccount'],{});db[_0x891c('0x172')][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0x172')][_0x891c('0x10e')](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db['MailQueueReport'][_0x891c('0x10e')](db[_0x891c('0x109')],{});db['MailQueueReport'][_0x891c('0x10e')](db[_0x891c('0x166')],{});db['MailQueueReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0x172')][_0x891c('0x10e')](db['MailQueue'],{});db[_0x891c('0x41')][_0x891c('0xfe')](db['DashboardItem'],{'as':_0x891c('0x174'),'onDelete':_0x891c('0x103')});db[_0x891c('0x44')]['hasMany'](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x175'),'onDelete':'cascade'});db[_0x891c('0x44')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':'FaxAccountId'});db['FaxAccount'][_0x891c('0xfe')](db[_0x891c('0x11a')],{'as':_0x891c('0x15d')});db[_0x891c('0x44')][_0x891c('0xfe')](db['FaxApplication'],{'as':_0x891c('0x15e')});db['FaxAccount']['hasMany'](db['VoiceExtension'],{'as':_0x891c('0x176'),'onDelete':_0x891c('0x103')});db['FaxAccount']['hasMany'](db[_0x891c('0x48')],{'as':_0x891c('0x15c')});db[_0x891c('0x44')][_0x891c('0x10e')](db[_0x891c('0x147')],{'as':_0x891c('0x147')});db[_0x891c('0x44')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0x44')][_0x891c('0x10e')](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x44')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x12f')});db[_0x891c('0x45')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'restrict'});db[_0x891c('0x45')][_0x891c('0x10e')](db[_0x891c('0x4a')],{'onDelete':'restrict'});db[_0x891c('0x45')][_0x891c('0x10e')](db['FaxAccount'],{'onDelete':'restrict'});db[_0x891c('0x45')][_0x891c('0x10e')](db['Tag'],{'onDelete':'restrict','foreignKey':_0x891c('0x171')});db['FaxInteraction'][_0x891c('0xfe')](db['FaxMessage'],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':'FaxInteractionId'});db[_0x891c('0x11a')][_0x891c('0x10e')](db[_0x891c('0x44')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x175')});db['FaxInteraction'][_0x891c('0x10e')](db['CmContact'],{'as':'Contact','foreignKey':_0x891c('0x173')});db[_0x891c('0x11a')][_0x891c('0x10e')](db['User'],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db['FaxInteraction'][_0x891c('0x110')](db['Tag'],{'through':_0x891c('0x178'),'as':_0x891c('0x16b')});db[_0x891c('0x11a')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x178'),'as':'ThroughTags'});db['FaxInteraction'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x16c'),'through':_0x891c('0x11b'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'cascade','as':_0x891c('0x12')});db[_0x891c('0x48')][_0x891c('0x10e')](db[_0x891c('0x11a')],{'as':_0x891c('0x179'),'foreignKey':_0x891c('0x17a')});db[_0x891c('0x48')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x48')][_0x891c('0x10e')](db['Attachment'],{'as':_0x891c('0xdc'),'foreignKey':'AttachmentId'});db[_0x891c('0x48')][_0x891c('0x10e')](db[_0x891c('0x44')],{'as':_0x891c('0x168'),'foreignKey':'FaxAccountId'});db[_0x891c('0x4a')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':'UserFaxQueue'});db['FaxQueue']['belongsToMany'](db[_0x891c('0xd7')],{'through':'team_has_fax_queues','as':_0x891c('0x14d')});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x44')],{});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db[_0x891c('0x4c')]['belongsTo'](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x11a')],{});db[_0x891c('0x4c')][_0x891c('0x10e')](db['FaxMessage'],{});db[_0x891c('0x4c')][_0x891c('0x10e')](db[_0x891c('0x12')],{});db['FaxQueueReport']['belongsTo'](db[_0x891c('0x4a')],{});db['SmsAccount'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':'SmsAccountId','onDelete':'cascade'});db[_0x891c('0x133')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':_0x891c('0x17c')});db[_0x891c('0x133')][_0x891c('0xfe')](db[_0x891c('0x53')],{'as':'Messages','foreignKey':_0x891c('0x17c')});db[_0x891c('0x133')]['hasMany'](db[_0x891c('0x51')],{'as':_0x891c('0x15d')});db[_0x891c('0x133')]['hasMany'](db[_0x891c('0x4f')],{'as':_0x891c('0x15e')});db[_0x891c('0x133')]['belongsTo'](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db['SmsAccount']['belongsTo'](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db['SmsAccount'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x135')});db['SmsApplication'][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'restrict'});db['SmsApplication'][_0x891c('0x10e')](db['SmsQueue'],{'onDelete':_0x891c('0x170')});db['SmsApplication'][_0x891c('0x10e')](db[_0x891c('0x133')],{'onDelete':_0x891c('0x170')});db[_0x891c('0x4f')][_0x891c('0x10e')](db[_0x891c('0x7a')],{'onDelete':_0x891c('0x170'),'foreignKey':'IntervalId'});db[_0x891c('0x4f')][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0x51')]['hasMany'](db[_0x891c('0x53')],{'as':'Messages','onDelete':_0x891c('0x103'),'foreignKey':'SmsInteractionId'});db[_0x891c('0x51')]['belongsTo'](db['SmsAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x17c')});db[_0x891c('0x51')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x51')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x51')][_0x891c('0x110')](db['Tag'],{'through':_0x891c('0x17d'),'as':_0x891c('0x16b')});db[_0x891c('0x51')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x17d'),'as':_0x891c('0x17e')});db[_0x891c('0x51')]['belongsToMany'](db[_0x891c('0x12')],{'as':'Users','through':_0x891c('0x11c'),'foreignKey':_0x891c('0x17f')});db[_0x891c('0x53')][_0x891c('0x10e')](db['User'],{'as':_0x891c('0x12')});db[_0x891c('0x53')][_0x891c('0x10e')](db['CmContact'],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x53')][_0x891c('0x10e')](db[_0x891c('0x51')],{'onDelete':_0x891c('0x103'),'as':'Interaction','foreignKey':_0x891c('0x17f')});db[_0x891c('0x53')]['belongsTo'](db[_0x891c('0x133')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x17c')});db[_0x891c('0x125')][_0x891c('0x110')](db['User'],{'as':'Agents','through':_0x891c('0x31'),'foreignKey':_0x891c('0x180')});db[_0x891c('0x125')]['belongsToMany'](db[_0x891c('0xd7')],{'through':'team_has_sms_queues','as':'Teams'});db[_0x891c('0x56')]['hasMany'](db[_0x891c('0x78')],{'as':'Dispositions','foreignKey':_0x891c('0x181'),'onDelete':'cascade'});db['OpenchannelAccount']['hasMany'](db['CannedAnswer'],{'as':_0x891c('0x15b'),'foreignKey':_0x891c('0x181')});db[_0x891c('0x56')]['hasMany'](db[_0x891c('0x59')],{'as':'Interactions','foreignKey':_0x891c('0x181')});db[_0x891c('0x56')][_0x891c('0xfe')](db[_0x891c('0x182')],{'as':_0x891c('0x15c'),'foreignKey':_0x891c('0x181')});db['OpenchannelAccount'][_0x891c('0xfe')](db[_0x891c('0x183')],{'as':_0x891c('0x15e'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0x56')][_0x891c('0x10e')](db['Pause'],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x56')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':_0x891c('0x132')});db[_0x891c('0x183')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':_0x891c('0x170')});db['OpenchannelApplication']['belongsTo'](db[_0x891c('0x5c')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x184')});db[_0x891c('0x183')][_0x891c('0x10e')](db[_0x891c('0x56')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x181')});db[_0x891c('0x183')]['belongsTo'](db[_0x891c('0x7a')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x183')]['belongsTo'](db['Tag'],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0x59')][_0x891c('0xfe')](db[_0x891c('0x182')],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':'OpenchannelInteractionId'});db['OpenchannelInteraction'][_0x891c('0x10e')](db[_0x891c('0x56')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x181')});db[_0x891c('0x59')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':'ContactId'});db[_0x891c('0x59')]['belongsTo'](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x59')]['belongsToMany'](db[_0x891c('0x81')],{'through':_0x891c('0x185'),'as':_0x891c('0x16b')});db['OpenchannelInteraction'][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x185'),'as':_0x891c('0x17e')});db[_0x891c('0x59')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x16c'),'through':_0x891c('0x11e'),'foreignKey':_0x891c('0x186')});db['OpenchannelMessage']['belongsTo'](db['User'],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x12')});db[_0x891c('0x182')][_0x891c('0x10e')](db['CmContact'],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0x182')][_0x891c('0x10e')](db[_0x891c('0x59')],{'onDelete':_0x891c('0x103'),'as':'Interaction','foreignKey':_0x891c('0x186')});db['OpenchannelMessage']['belongsTo'](db[_0x891c('0xdc')],{'as':_0x891c('0xdc'),'foreignKey':_0x891c('0x187')});db['OpenchannelMessage'][_0x891c('0x10e')](db[_0x891c('0x56')],{'as':_0x891c('0x168'),'foreignKey':'OpenchannelAccountId'});db[_0x891c('0x5c')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x128'),'foreignKey':_0x891c('0x184')});db[_0x891c('0x5c')]['belongsToMany'](db[_0x891c('0xd7')],{'through':_0x891c('0x188'),'as':_0x891c('0x14d')});db[_0x891c('0x5e')]['hasMany'](db['Disposition'],{'as':'Dispositions','foreignKey':'ChatWebsiteId','onDelete':_0x891c('0x103')});db[_0x891c('0x5e')][_0x891c('0xfe')](db['CannedAnswer'],{'as':'Answers','foreignKey':_0x891c('0x16d')});db['ChatWebsite'][_0x891c('0xfe')](db[_0x891c('0x69')],{'as':_0x891c('0x189')});db[_0x891c('0x5e')]['hasMany'](db['ChatInteraction'],{'as':'Interactions'});db[_0x891c('0x5e')][_0x891c('0xfe')](db[_0x891c('0x61')],{'as':_0x891c('0x15e')});db[_0x891c('0x5e')][_0x891c('0xfe')](db['ChatMessage'],{'as':_0x891c('0x15c')});db[_0x891c('0x5e')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':'List','foreignKey':'ListId'});db[_0x891c('0x5e')][_0x891c('0x10e')](db['Interval'],{'as':_0x891c('0x7a'),'foreignKey':'IntervalId'});db['ChatWebsite'][_0x891c('0x10e')](db['MailAccount'],{'as':_0x891c('0x38'),'foreignKey':_0x891c('0x157')});db[_0x891c('0x5e')][_0x891c('0x10e')](db[_0x891c('0x7c')],{'as':_0x891c('0x162'),'foreignKey':_0x891c('0x14b')});db[_0x891c('0x5e')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':_0x891c('0x12e')});db[_0x891c('0x18a')]['belongsTo'](db[_0x891c('0x56')],{});db[_0x891c('0x18a')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db['OpenchannelQueueReport'][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':'Contact','foreignKey':_0x891c('0x173')});db['OpenchannelQueueReport'][_0x891c('0x10e')](db[_0x891c('0x59')],{});db[_0x891c('0x18a')][_0x891c('0x10e')](db['OpenchannelMessage'],{});db[_0x891c('0x18a')]['belongsTo'](db[_0x891c('0x12')],{});db[_0x891c('0x18a')][_0x891c('0x10e')](db[_0x891c('0x5c')],{});db[_0x891c('0x61')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x18b'),'foreignKey':_0x891c('0xfd'),'onDelete':'restrict'});db[_0x891c('0x61')][_0x891c('0x10e')](db['ChatQueue'],{'as':_0x891c('0x18c'),'foreignKey':'ChatQueueId','onDelete':_0x891c('0x170')});db[_0x891c('0x61')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'as':'Website','foreignKey':_0x891c('0x16d'),'onDelete':_0x891c('0x170')});db[_0x891c('0x61')][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0x63')][_0x891c('0xfe')](db[_0x891c('0x64')],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x18d')});db[_0x891c('0x63')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x16d')});db[_0x891c('0x63')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x63')]['belongsTo'](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0xfd')});db[_0x891c('0x63')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x18e'),'as':_0x891c('0x16b')});db[_0x891c('0x63')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x18e'),'as':'ThroughTags'});db[_0x891c('0x63')][_0x891c('0x110')](db['User'],{'as':_0x891c('0x16c'),'through':'user_has_chat_interactions','foreignKey':_0x891c('0x18d')});db[_0x891c('0x64')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'cascade','as':_0x891c('0x12')});db['ChatMessage']['belongsTo'](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x64')][_0x891c('0x10e')](db[_0x891c('0x63')],{'onDelete':_0x891c('0x103'),'as':'Interaction','foreignKey':'ChatInteractionId'});db[_0x891c('0x64')][_0x891c('0x10e')](db[_0x891c('0xdc')],{'as':'Attachment','foreignKey':_0x891c('0x187')});db['ChatMessage'][_0x891c('0x10e')](db['ChatWebsite'],{'as':_0x891c('0x168'),'foreignKey':'ChatWebsiteId'});db[_0x891c('0x16e')][_0x891c('0xfe')](db[_0x891c('0xdc')],{'as':_0x891c('0x18f'),'foreignKey':_0x891c('0x16f'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x16e')]['belongsTo'](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169'),'foreignKey':'ContactId'});db[_0x891c('0x16e')]['belongsTo'](db[_0x891c('0x5e')],{'as':'Account','foreignKey':_0x891c('0x16d')});db['ChatQueue'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x2b'),'hooks':!![]});db[_0x891c('0x66')][_0x891c('0x110')](db[_0x891c('0xd7')],{'through':_0x891c('0x190'),'as':_0x891c('0x14d')});db[_0x891c('0x68')][_0x891c('0xfe')](db[_0x891c('0xc4')],{'as':_0x891c('0x15c'),'foreignKey':'ChatGroupId','onDelete':'cascade'});db['ChatGroup'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x140'),'through':_0x891c('0x111')});db['ChatProactiveAction']['belongsTo'](db['ChatWebsite'],{'as':_0x891c('0x191'),'foreignKey':'ChatWebsiteId'});db[_0x891c('0x6a')][_0x891c('0xfe')](db[_0x891c('0x6c')],{'as':_0x891c('0x112'),'foreignKey':_0x891c('0x192')});db[_0x891c('0x6c')][_0x891c('0xfe')](db['CmHopper'],{'as':_0x891c('0x142'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x70')],{'as':_0x891c('0x143'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x104')],{'as':_0x891c('0x144'),'foreignKey':_0x891c('0x173')});db[_0x891c('0x6c')][_0x891c('0xfe')](db['ReportAgentPreview'],{'as':_0x891c('0x73'),'foreignKey':_0x891c('0x173')});db['CmContact'][_0x891c('0xfe')](db[_0x891c('0xca')],{'as':'JscriptySessions','foreignKey':_0x891c('0x173')});db['CmContact'][_0x891c('0xfe')](db[_0x891c('0x59')],{'as':'OpenchannelInteractions','foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x63')],{'as':'ChatInteractions','foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db['CmContact'][_0x891c('0xfe')](db[_0x891c('0x51')],{'as':_0x891c('0x107'),'foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0xfe')](db['FaxInteraction'],{'as':'FaxInteractions','foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0xfe')](db[_0x891c('0x109')],{'as':_0x891c('0x10a'),'foreignKey':'ContactId','onDelete':_0x891c('0x170')});db[_0x891c('0x6c')][_0x891c('0x10e')](db['CmCompany'],{'as':_0x891c('0x193'),'foreignKey':_0x891c('0x192')});db[_0x891c('0x6c')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':'List','foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db[_0x891c('0x6c')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x16c'),'through':_0x891c('0x113')});db[_0x891c('0x6c')]['belongsToMany'](db[_0x891c('0x81')],{'as':'Tags','through':_0x891c('0x194')});db[_0x891c('0x6c')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x194'),'as':_0x891c('0x17e')});db[_0x891c('0x6d')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':'ContactId','onDelete':_0x891c('0x103')});db[_0x891c('0x6d')][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db[_0x891c('0x6d')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x18b'),'foreignKey':_0x891c('0xfd')});db['CmHopper']['belongsTo'](db[_0x891c('0x120')],{'as':_0x891c('0x18c'),'foreignKey':'VoiceQueueId','onDelete':_0x891c('0x103')});db[_0x891c('0x6d')][_0x891c('0x10e')](db[_0x891c('0x195')],{'as':_0x891c('0x195'),'foreignKey':_0x891c('0x196'),'onDelete':_0x891c('0x103')});db['CmHopper'][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x177'),'foreignKey':_0x891c('0x197')});db[_0x891c('0x198')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173'),'onDelete':_0x891c('0x103')});db[_0x891c('0x198')][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':'List','foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db[_0x891c('0x198')][_0x891c('0x10e')](db[_0x891c('0x120')],{'as':'Queue','foreignKey':_0x891c('0x141'),'onDelete':_0x891c('0x103')});db[_0x891c('0x198')]['belongsTo'](db[_0x891c('0x195')],{'as':'Campaign','foreignKey':'CampaignId','onDelete':'cascade'});db['Automation']['hasMany'](db[_0x891c('0x199')],{'as':{'plural':_0x891c('0x19a'),'singular':_0x891c('0x19b')},'foreignKey':_0x891c('0x19c'),'onDelete':'cascade','hooks':!![]});db['Automation']['hasMany'](db[_0x891c('0x199')],{'as':{'plural':_0x891c('0x19d'),'singular':_0x891c('0x19e')},'foreignKey':_0x891c('0x19f'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x75')][_0x891c('0xfe')](db[_0x891c('0x74')],{'as':_0x891c('0x1a0'),'foreignKey':_0x891c('0x1a1'),'onDelete':_0x891c('0x103'),'hooks':!![]});db['Disposition'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x1a2'),'onDelete':_0x891c('0x103')});db['Interval'][_0x891c('0xfe')](db[_0x891c('0x7a')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0x891c('0x103'),'hooks':!![],'required':![]});db['Interval'][_0x891c('0xfe')](db[_0x891c('0x19')],{'as':_0x891c('0x102'),'foreignKey':'IntervalId','onDelete':_0x891c('0x170')});db['Interval'][_0x891c('0xfe')](db['MailApplication'],{'as':_0x891c('0x1a3'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x7a')][_0x891c('0xfe')](db[_0x891c('0x61')],{'as':_0x891c('0x1a4'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x7a')]['hasMany'](db[_0x891c('0x45')],{'as':_0x891c('0x1a5'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x7a')][_0x891c('0xfe')](db[_0x891c('0x4f')],{'as':_0x891c('0x1a6'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0x1a7')][_0x891c('0x10e')](db[_0x891c('0x38')],{});db[_0x891c('0x1a7')]['belongsTo'](db[_0x891c('0x8c')],{'foreignKey':_0x891c('0x1a8')});db[_0x891c('0x1a7')]['belongsTo'](db[_0x891c('0x8b')],{'foreignKey':_0x891c('0x1a9')});db['Sound'][_0x891c('0x110')](db[_0x891c('0x1a')],{'as':_0x891c('0x1aa'),'through':'moh_has_sounds','onDelete':_0x891c('0x170')});db[_0x891c('0x81')][_0x891c('0x110')](db['CmContact'],{'through':_0x891c('0x194')});db[_0x891c('0x81')][_0x891c('0x110')](db[_0x891c('0x63')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x891c('0x110')](db[_0x891c('0x109')],{'through':_0x891c('0x16a')});db['Tag'][_0x891c('0x110')](db[_0x891c('0x51')],{'through':_0x891c('0x17d')});db[_0x891c('0x81')][_0x891c('0x110')](db[_0x891c('0x11a')],{'through':_0x891c('0x178')});db['Tag'][_0x891c('0x110')](db[_0x891c('0x59')],{'through':'openchannel_interaction_has_tags'});db[_0x891c('0x81')][_0x891c('0x110')](db[_0x891c('0xf1')],{'through':_0x891c('0x1ab')});db['Trigger'][_0x891c('0xfe')](db[_0x891c('0x199')],{'as':{'plural':'AllConditions','singular':_0x891c('0x1ac')},'foreignKey':_0x891c('0x1ad'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x84')]['hasMany'](db[_0x891c('0x199')],{'as':{'plural':_0x891c('0x1ae'),'singular':_0x891c('0x1af')},'foreignKey':_0x891c('0x1b0'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x84')]['hasMany'](db['Action'],{'as':'Actions','foreignKey':_0x891c('0x1b1'),'onDelete':_0x891c('0x103'),'hooks':!![]});db[_0x891c('0x8b')][_0x891c('0xfe')](db[_0x891c('0x90')],{'as':_0x891c('0x1b2'),'onDelete':'cascade','foreignKey':_0x891c('0x1a9'),'hooks':!![]});db[_0x891c('0x8c')][_0x891c('0xfe')](db[_0x891c('0x90')],{'as':_0x891c('0x1b2'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x891c('0x8e')][_0x891c('0xfe')](db[_0x891c('0x90')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b3')});db[_0x891c('0x90')]['belongsTo'](db[_0x891c('0x8e')],{'foreignKey':_0x891c('0x1b3')});db[_0x891c('0x1b4')][_0x891c('0xfe')](db[_0x891c('0x1b5')],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x1b5')][_0x891c('0xfe')](db['SalesforceField'],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db['SalesforceConfiguration'][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':'DescriptionId'});db[_0x891c('0x1b5')][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x1b5')][_0x891c('0x10e')](db[_0x891c('0x1b4')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x96')][_0x891c('0xfe')](db['SalesforceField'],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x96')][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x96')][_0x891c('0xfe')](db[_0x891c('0x96')],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x96')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0x98')]['hasMany'](db[_0x891c('0x1c1')],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':'AccountId'});db[_0x891c('0x1c1')]['hasMany'](db[_0x891c('0x9b')],{'as':_0x891c('0x1b8'),'onDelete':'cascade','foreignKey':_0x891c('0x1b9')});db[_0x891c('0x1c1')]['hasMany'](db[_0x891c('0x9b')],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x1c1')][_0x891c('0xfe')](db[_0x891c('0x9b')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db['SugarcrmConfiguration'][_0x891c('0x10e')](db['SugarcrmAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x9b')][_0x891c('0xfe')](db[_0x891c('0x9b')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x9b')][_0x891c('0xfe')](db[_0x891c('0x9b')],{'as':_0x891c('0x1bd'),'foreignKey':'DescriptionId'});db[_0x891c('0x9b')][_0x891c('0xfe')](db['SugarcrmField'],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x9b')]['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':'VariableId'});db[_0x891c('0x1c2')][_0x891c('0xfe')](db[_0x891c('0x9d')],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x9d')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x9d')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':'Descriptions','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x9d')][_0x891c('0xfe')](db['DeskField'],{'as':'Fields','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x9d')][_0x891c('0x10e')](db[_0x891c('0x1c2')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0x9d')]['belongsToMany'](db[_0x891c('0x81')],{'through':_0x891c('0x1c3')});db[_0x891c('0x9e')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0x9e')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':'Description','foreignKey':_0x891c('0x1be')});db[_0x891c('0x9e')][_0x891c('0xfe')](db[_0x891c('0x9e')],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db['DeskField']['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xa0')]['hasMany'](db[_0x891c('0xa2')],{'as':'Configurations','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db['ZohoConfiguration']['hasMany'](db[_0x891c('0xa3')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xa2')]['hasMany'](db[_0x891c('0xa3')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0x891c('0x1be')});db[_0x891c('0xa2')]['hasMany'](db[_0x891c('0xa3')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db['ZohoConfiguration']['belongsTo'](db['ZohoAccount'],{'as':_0x891c('0x168'),'foreignKey':'AccountId'});db[_0x891c('0xa3')][_0x891c('0xfe')](db[_0x891c('0xa3')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xa3')][_0x891c('0xfe')](db[_0x891c('0xa3')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xa3')]['hasMany'](db[_0x891c('0xa3')],{'as':'Field','foreignKey':'FieldId'});db[_0x891c('0xa3')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':'Variable','foreignKey':_0x891c('0x1c0')});db[_0x891c('0xa4')][_0x891c('0xfe')](db['ZendeskConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xa6')][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':_0x891c('0x1b8'),'foreignKey':'SubjectId'});db[_0x891c('0xa6')][_0x891c('0xfe')](db['ZendeskField'],{'as':_0x891c('0x1ba'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xa6')][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':_0x891c('0x1b2'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0xa6')]['belongsTo'](db['ZendeskAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xa6')]['belongsToMany'](db[_0x891c('0x81')],{'through':'int_zendesk_configuration_has_tags'});db[_0x891c('0xa8')][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':_0x891c('0x1bc'),'foreignKey':_0x891c('0x1b9')});db['ZendeskField'][_0x891c('0xfe')](db[_0x891c('0xa8')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x891c('0xa8')]['hasMany'](db[_0x891c('0xa8')],{'as':'Field','foreignKey':_0x891c('0x1bb')});db[_0x891c('0xa8')]['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xaa')][_0x891c('0xfe')](db['FreshdeskConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xab')][_0x891c('0xfe')](db[_0x891c('0x1c4')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xab')]['hasMany'](db['FreshdeskField'],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xab')][_0x891c('0xfe')](db[_0x891c('0x1c4')],{'as':_0x891c('0x1b2'),'onDelete':'cascade','foreignKey':_0x891c('0x1bb')});db['FreshdeskConfiguration'][_0x891c('0x10e')](db[_0x891c('0xaa')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xab')]['belongsToMany'](db[_0x891c('0x81')],{'through':'int_freshdesk_configuration_has_tags'});db[_0x891c('0x1c4')]['hasMany'](db['FreshdeskField'],{'as':_0x891c('0x1bc'),'foreignKey':'SubjectId'});db[_0x891c('0x1c4')]['hasMany'](db[_0x891c('0x1c4')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0x1c4')][_0x891c('0xfe')](db[_0x891c('0x1c4')],{'as':_0x891c('0x1bf'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0x1c4')]['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xad')]['hasMany'](db['VtigerConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xaf')][_0x891c('0xfe')](db[_0x891c('0xb1')],{'as':_0x891c('0x1b8'),'foreignKey':'SubjectId'});db[_0x891c('0xaf')]['hasMany'](db[_0x891c('0xb1')],{'as':'Descriptions','foreignKey':_0x891c('0x1be')});db[_0x891c('0xaf')]['hasMany'](db[_0x891c('0xb1')],{'as':_0x891c('0x1b2'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0xaf')]['belongsTo'](db[_0x891c('0xad')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xb1')]['hasMany'](db[_0x891c('0xb1')],{'as':'Subject','foreignKey':'SubjectId'});db[_0x891c('0xb1')][_0x891c('0xfe')](db[_0x891c('0xb1')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db['VtigerField'][_0x891c('0xfe')](db[_0x891c('0xb1')],{'as':_0x891c('0x1bf'),'foreignKey':'FieldId'});db[_0x891c('0xb1')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':'VariableId'});db['ServicenowAccount'][_0x891c('0xfe')](db[_0x891c('0xb3')],{'as':_0x891c('0x1b6'),'onDelete':'cascade','foreignKey':'AccountId'});db[_0x891c('0xb3')][_0x891c('0xfe')](db['ServicenowField'],{'as':_0x891c('0x1b8'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xb3')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':_0x891c('0x1ba'),'foreignKey':'DescriptionId'});db[_0x891c('0xb3')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':_0x891c('0x1b2'),'foreignKey':'FieldId'});db[_0x891c('0xb3')]['belongsTo'](db[_0x891c('0x1c5')],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db['ServicenowField'][_0x891c('0xfe')](db['ServicenowField'],{'as':'Subject','foreignKey':_0x891c('0x1b9')});db[_0x891c('0xb5')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xb5')][_0x891c('0xfe')](db[_0x891c('0xb5')],{'as':'Field','foreignKey':_0x891c('0x1bb')});db[_0x891c('0xb5')][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db['Dynamics365Account']['hasMany'](db['Dynamics365Configuration'],{'as':'Configurations','onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xb7')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1b8'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b9')});db[_0x891c('0xb7')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1ba'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xb7')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1b2'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1bb')});db[_0x891c('0xb7')][_0x891c('0x10e')](db['Dynamics365Account'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xb9')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1bc'),'foreignKey':'SubjectId'});db[_0x891c('0xb9')][_0x891c('0xfe')](db[_0x891c('0xb9')],{'as':_0x891c('0x1bd'),'foreignKey':_0x891c('0x1be')});db[_0x891c('0xb9')]['hasMany'](db[_0x891c('0xb9')],{'as':_0x891c('0x1bf'),'foreignKey':'FieldId'});db['Dynamics365Field'][_0x891c('0x10e')](db[_0x891c('0x86')],{'as':'Variable','foreignKey':'VariableId'});db[_0x891c('0xbb')][_0x891c('0xfe')](db['FreshsalesConfiguration'],{'as':_0x891c('0x1b6'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1b7')});db['FreshsalesConfiguration'][_0x891c('0xfe')](db[_0x891c('0xbf')],{'as':'Subjects','foreignKey':_0x891c('0x1b9')});db['FreshsalesConfiguration']['hasMany'](db[_0x891c('0xbf')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0x891c('0xbd')][_0x891c('0xfe')](db[_0x891c('0xbf')],{'as':_0x891c('0x1b2'),'foreignKey':_0x891c('0x1bb')});db['FreshsalesConfiguration']['belongsTo'](db['FreshsalesAccount'],{'as':_0x891c('0x168'),'foreignKey':_0x891c('0x1b7')});db[_0x891c('0xbf')]['hasMany'](db[_0x891c('0xbf')],{'as':_0x891c('0x1bc'),'foreignKey':'SubjectId'});db[_0x891c('0xbf')]['hasMany'](db[_0x891c('0xbf')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x891c('0xbf')]['hasMany'](db[_0x891c('0xbf')],{'as':'Field','foreignKey':_0x891c('0x1bb')});db['FreshsalesField']['belongsTo'](db[_0x891c('0x86')],{'as':_0x891c('0x86'),'foreignKey':_0x891c('0x1c0')});db[_0x891c('0xc2')][_0x891c('0x10e')](db['ChatWebsite'],{});db['ChatQueueReport'][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':'ListId'});db[_0x891c('0xc2')][_0x891c('0x10e')](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0xc2')][_0x891c('0x10e')](db['ChatInteraction'],{});db[_0x891c('0xc2')]['belongsTo'](db[_0x891c('0x64')],{});db[_0x891c('0xc2')][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0xc2')]['belongsTo'](db[_0x891c('0x66')],{});db[_0x891c('0xc4')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1c6')});db[_0x891c('0xc4')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1c7')});db[_0x891c('0xca')][_0x891c('0xfe')](db[_0x891c('0xc8')],{'foreignKey':_0x891c('0x1c8'),'onDelete':_0x891c('0x103')});db[_0x891c('0xca')][_0x891c('0xfe')](db[_0x891c('0xc6')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x891c('0xcb')][_0x891c('0x10e')](db[_0x891c('0x133')],{});db[_0x891c('0xcb')][_0x891c('0x10e')](db['CmList'],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db['SmsQueueReport'][_0x891c('0x10e')](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':'ContactId'});db['SmsQueueReport'][_0x891c('0x10e')](db[_0x891c('0x51')],{});db[_0x891c('0xcb')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0xcb')]['belongsTo'](db[_0x891c('0x125')],{});db['JscriptyProject'][_0x891c('0xfe')](db[_0x891c('0xca')],{'foreignKey':_0x891c('0x1c9')});db['JscriptyProject'][_0x891c('0xfe')](db['JscriptyQuestionReport'],{'foreignKey':_0x891c('0x1c9')});db[_0x891c('0xd0')][_0x891c('0xfe')](db[_0x891c('0xc6')],{'foreignKey':'ProjectId'});db[_0x891c('0x138')][_0x891c('0x110')](db['User'],{'as':'Users','through':_0x891c('0x13a')});db['Team'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x117')});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x120')],{'through':_0x891c('0xfa'),'as':'VoiceQueues'});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x164')],{'through':_0x891c('0x165'),'as':_0x891c('0x1ca')});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x66')],{'through':_0x891c('0x190'),'as':_0x891c('0x123')});db[_0x891c('0xd7')][_0x891c('0x110')](db['FaxQueue'],{'through':_0x891c('0x1cb'),'as':_0x891c('0x124')});db['Team'][_0x891c('0x110')](db[_0x891c('0x125')],{'through':_0x891c('0x1cc'),'as':_0x891c('0x126')});db[_0x891c('0xd7')][_0x891c('0x110')](db[_0x891c('0x5c')],{'through':_0x891c('0x188'),'as':_0x891c('0x127')});db['Team'][_0x891c('0x110')](db[_0x891c('0x129')],{'through':_0x891c('0x1cd'),'as':_0x891c('0x12a')});db[_0x891c('0x195')][_0x891c('0xfe')](db[_0x891c('0x6d')],{'as':_0x891c('0x142'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')]['hasMany'](db[_0x891c('0x70')],{'as':_0x891c('0x143'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')][_0x891c('0xfe')](db['CmHopperHistory'],{'as':_0x891c('0x144'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')]['hasMany'](db[_0x891c('0x198')],{'as':_0x891c('0x145'),'foreignKey':_0x891c('0x196')});db[_0x891c('0x195')][_0x891c('0x10e')](db[_0x891c('0x147')],{'as':_0x891c('0x147'),'foreignKey':_0x891c('0x148')});db['Campaign']['belongsTo'](db[_0x891c('0x147')],{'as':_0x891c('0x1ce'),'foreignKey':'TrunkBackupId'});db[_0x891c('0x195')][_0x891c('0x10e')](db['Interval'],{'as':_0x891c('0x7a'),'foreignKey':'IntervalId'});db[_0x891c('0x195')][_0x891c('0x10e')](db['SquareProject'],{'as':_0x891c('0x138'),'foreignKey':_0x891c('0x1cf')});db[_0x891c('0x195')][_0x891c('0x110')](db[_0x891c('0x114')],{'as':_0x891c('0x115'),'through':'campaigns_has_cm_lists'});db[_0x891c('0x195')]['belongsToMany'](db[_0x891c('0x114')],{'as':_0x891c('0x14e'),'through':_0x891c('0x1d0')});db['Attachment'][_0x891c('0x10e')](db[_0x891c('0x16e')],{'as':_0x891c('0x16e'),'foreignKey':_0x891c('0x16f')});db[_0x891c('0xe0')]['belongsTo'](db['MailMessage'],{});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x109')],{});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x38')],{'foreignKey':'FromMailAccountId','as':'FromAccount'});db['MailTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db['MailTransferReport'][_0x891c('0x10e')](db[_0x891c('0x164')],{'foreignKey':_0x891c('0x1d4'),'as':'ToQueue'});db[_0x891c('0xe0')][_0x891c('0x10e')](db[_0x891c('0x38')],{'foreignKey':_0x891c('0x1d5'),'as':_0x891c('0x1d6')});db[_0x891c('0xe2')]['belongsTo'](db['ChatMessage'],{});db[_0x891c('0xe2')]['belongsTo'](db[_0x891c('0x63')],{});db[_0x891c('0xe2')][_0x891c('0x10e')](db['ChatWebsite'],{'foreignKey':_0x891c('0x1d7'),'as':_0x891c('0x1d8')});db[_0x891c('0xe2')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':_0x891c('0x1d9')});db[_0x891c('0xe2')]['belongsTo'](db[_0x891c('0x12')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0x891c('0xe2')][_0x891c('0x10e')](db[_0x891c('0x66')],{'foreignKey':_0x891c('0x1da'),'as':_0x891c('0x1db')});db[_0x891c('0xe2')][_0x891c('0x10e')](db[_0x891c('0x5e')],{'foreignKey':_0x891c('0x1dc'),'as':_0x891c('0x1d6')});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x48')],{});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x11a')],{});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x44')],{'foreignKey':_0x891c('0x1dd'),'as':_0x891c('0x1d8')});db['FaxTransferReport']['belongsTo'](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xe3')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0xe3')][_0x891c('0x10e')](db['FaxQueue'],{'foreignKey':_0x891c('0x1de'),'as':_0x891c('0x1db')});db[_0x891c('0xe3')]['belongsTo'](db[_0x891c('0x44')],{'foreignKey':_0x891c('0x1df'),'as':_0x891c('0x1d6')});db['OpenchannelTransferReport'][_0x891c('0x10e')](db['OpenchannelMessage'],{});db[_0x891c('0xe5')][_0x891c('0x10e')](db[_0x891c('0x59')],{});db[_0x891c('0xe5')][_0x891c('0x10e')](db[_0x891c('0x56')],{'foreignKey':'FromOpenchannelAccountId','as':_0x891c('0x1d8')});db['OpenchannelTransferReport']['belongsTo'](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xe5')]['belongsTo'](db['User'],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0xe5')]['belongsTo'](db[_0x891c('0x5c')],{'foreignKey':_0x891c('0x1e0'),'as':_0x891c('0x1db')});db[_0x891c('0xe5')][_0x891c('0x10e')](db[_0x891c('0x56')],{'foreignKey':_0x891c('0x1e1'),'as':'ToAccount'});db[_0x891c('0x1e2')]['belongsTo'](db[_0x891c('0x53')],{});db[_0x891c('0x1e2')]['belongsTo'](db[_0x891c('0x51')],{});db[_0x891c('0x1e2')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0x891c('0x1e3'),'as':'FromAccount'});db['SmsTransferReport'][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':_0x891c('0x1d9')});db[_0x891c('0x1e2')][_0x891c('0x10e')](db['User'],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0x1e2')]['belongsTo'](db[_0x891c('0x125')],{'foreignKey':'ToSmsQueueId','as':'ToQueue'});db[_0x891c('0x1e2')][_0x891c('0x10e')](db[_0x891c('0x133')],{'foreignKey':_0x891c('0x1e4'),'as':_0x891c('0x1d6')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x17b'),'onDelete':_0x891c('0x103')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x1e5')],{'as':_0x891c('0x1e6'),'foreignKey':_0x891c('0x17b')});db['CmList'][_0x891c('0xfe')](db['CmContact'],{'as':'Contacts','onDelete':'cascade','foreignKey':_0x891c('0x17b')});db[_0x891c('0x114')]['hasMany'](db['CmHopperFinal'],{'as':_0x891c('0x143'),'foreignKey':_0x891c('0x17b')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x104')],{'as':_0x891c('0x105'),'foreignKey':_0x891c('0x17b')});db['CmList'][_0x891c('0xfe')](db[_0x891c('0x73')],{'as':'ReportAgentPreview','foreignKey':_0x891c('0x17b')});db[_0x891c('0x114')]['belongsToMany'](db['VoiceQueue'],{'as':_0x891c('0x1e7'),'through':_0x891c('0x14c')});db['CmList']['belongsToMany'](db['User'],{'as':_0x891c('0x163'),'through':'cm_user_has_lists'});db[_0x891c('0x12b')][_0x891c('0xfe')](db[_0x891c('0x19')],{'as':_0x891c('0x102'),'onDelete':_0x891c('0x103')});db['VoicePrefix'][_0x891c('0x110')](db[_0x891c('0x12')],{'as':_0x891c('0x163'),'through':_0x891c('0x1e8')});db[_0x891c('0xe9')][_0x891c('0xfe')](db['User'],{'as':_0x891c('0x16c'),'foreignKey':_0x891c('0x10f')});db[_0x891c('0xe9')][_0x891c('0xfe')](db[_0x891c('0xea')],{'as':_0x891c('0x1e9'),'foreignKey':'userProfileId','onDelete':'cascade'});db['UserProfileSection'][_0x891c('0xfe')](db[_0x891c('0x1ea')],{'as':_0x891c('0x1eb'),'foreignKey':_0x891c('0x1ec'),'onDelete':_0x891c('0x103')});db['WhatsappAccount'][_0x891c('0xfe')](db[_0x891c('0x78')],{'as':_0x891c('0x159'),'foreignKey':_0x891c('0x1ed'),'onDelete':_0x891c('0x103')});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0x15a')],{'as':_0x891c('0x15b'),'foreignKey':'WhatsappAccountId'});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0xf2')],{'as':_0x891c('0x15c'),'foreignKey':_0x891c('0x1ed')});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0xf1')],{'as':_0x891c('0x15d')});db[_0x891c('0x136')][_0x891c('0xfe')](db[_0x891c('0xf0')],{'as':'Applications'});db['WhatsappAccount'][_0x891c('0x10e')](db[_0x891c('0x114')],{'as':_0x891c('0x15f'),'foreignKey':_0x891c('0x17b')});db[_0x891c('0x136')][_0x891c('0x10e')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0x891c('0x136')][_0x891c('0x110')](db[_0x891c('0x12')],{'as':'Agents','through':'user_has_whatsapp_accounts'});db[_0x891c('0xf0')][_0x891c('0x10e')](db[_0x891c('0x12')],{'onDelete':'restrict'});db[_0x891c('0xf0')][_0x891c('0x10e')](db['WhatsappQueue'],{'onDelete':'restrict'});db[_0x891c('0xf0')][_0x891c('0x10e')](db[_0x891c('0x136')],{'onDelete':_0x891c('0x170')});db['WhatsappApplication'][_0x891c('0x10e')](db[_0x891c('0x7a')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x14a')});db[_0x891c('0xf0')][_0x891c('0x10e')](db[_0x891c('0x81')],{'onDelete':_0x891c('0x170'),'foreignKey':_0x891c('0x171')});db[_0x891c('0xf1')][_0x891c('0xfe')](db[_0x891c('0xf2')],{'as':_0x891c('0x15c'),'onDelete':_0x891c('0x103'),'foreignKey':_0x891c('0x1ee')});db[_0x891c('0xf1')][_0x891c('0x10e')](db[_0x891c('0x136')],{'as':_0x891c('0x168'),'foreignKey':'WhatsappAccountId'});db[_0x891c('0xf1')][_0x891c('0x10e')](db[_0x891c('0x6c')],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0xf1')][_0x891c('0x10e')](db['User'],{'as':'Owner','foreignKey':_0x891c('0xfd')});db[_0x891c('0xf1')][_0x891c('0x110')](db[_0x891c('0x81')],{'through':'whatsapp_interaction_has_tags','as':_0x891c('0x16b')});db['WhatsappInteraction'][_0x891c('0x110')](db[_0x891c('0x81')],{'through':_0x891c('0x1ab'),'as':'ThroughTags'});db[_0x891c('0xf1')][_0x891c('0x110')](db['User'],{'as':'Users','through':_0x891c('0x11f'),'foreignKey':_0x891c('0x1ee')});db[_0x891c('0xf2')][_0x891c('0x10e')](db[_0x891c('0x12')],{'as':_0x891c('0x12')});db['WhatsappMessage'][_0x891c('0x10e')](db[_0x891c('0x6c')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x169')});db[_0x891c('0xf2')][_0x891c('0x10e')](db[_0x891c('0xf1')],{'onDelete':_0x891c('0x103'),'as':_0x891c('0x179'),'foreignKey':_0x891c('0x1ee')});db[_0x891c('0xf2')]['belongsTo'](db['WhatsappAccount'],{'as':_0x891c('0x168'),'foreignKey':'WhatsappAccountId'});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0x136')],{});db[_0x891c('0xf4')][_0x891c('0x10e')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x891c('0xf4')]['belongsTo'](db['CmContact'],{'as':_0x891c('0x169'),'foreignKey':_0x891c('0x173')});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0xf1')],{});db['WhatsappQueueReport'][_0x891c('0x10e')](db[_0x891c('0x129')],{});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0xf2')],{});db[_0x891c('0xf4')][_0x891c('0x10e')](db[_0x891c('0x12')],{});db[_0x891c('0xf6')][_0x891c('0x10e')](db[_0x891c('0xf2')],{});db[_0x891c('0xf6')][_0x891c('0x10e')](db['WhatsappInteraction'],{});db['WhatsappTransferReport']['belongsTo'](db[_0x891c('0x136')],{'foreignKey':'FromWhatsappAccountId','as':'FromAccount'});db[_0x891c('0xf6')][_0x891c('0x10e')](db['WhatsappAccount'],{'foreignKey':_0x891c('0x1ef'),'as':'ToAccount'});db['WhatsappTransferReport'][_0x891c('0x10e')](db['WhatsappQueue'],{'foreignKey':_0x891c('0x1f0'),'as':'ToQueue'});db[_0x891c('0xf6')][_0x891c('0x10e')](db[_0x891c('0x12')],{'foreignKey':_0x891c('0x1d1'),'as':'FromAgent'});db[_0x891c('0xf6')][_0x891c('0x10e')](db['User'],{'foreignKey':_0x891c('0x1d2'),'as':_0x891c('0x1d3')});db[_0x891c('0x129')][_0x891c('0x110')](db['User'],{'as':_0x891c('0x163'),'through':_0x891c('0x33'),'foreignKey':'WhatsappQueueId'});db[_0x891c('0x129')][_0x891c('0x110')](db[_0x891c('0xd7')],{'through':_0x891c('0x1cd'),'as':_0x891c('0x14d')});module[_0x891c('0x1f1')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 3575510..524beb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89ee=['/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','/api/chat/queues','./api/chatGroup','./api/chatProactiveAction','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/actions','./api/action','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','./api/voiceQueuesLog','/api/schedules','/api/sounds','/api/tags','./api/tag','./api/template','/api/triggers','./api/trigger','./api/variable','/api/integrations','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./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/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','./api/intZohoConfiguration','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./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/intFreshsalesConfiguration','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/internal/messages','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','/api/settings','/api/square/odbc','./api/squareOdbc','./api/squareRecording','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','./api/migration','/api/attachments','./api/plugin','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','./api/whatsappAccount','./api/whatsappApplication','/api/whatsapp/interactions','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','/api/realtime','./api/realtime','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','static','root','/www','join','/demo','/snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','newPassword','apiKey','lastName','street','mobile','email','clientId','securityToken','code','accessKey','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','key','pass','accountSid','localstationid','dsn','registry','oldPassword','isPlainObject','isString','@@{','replace','includes','path','express-winston','util','./errors','./config/environment','./config/logger','api','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','connection','remoteAddress','url','statusCode','responseTime','user','name','role','inspect','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','other','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','/api/members/reports','./api/memberReport','./api/trunk','/api/voice/transfers/reports','/api/mail/out_servers','/api/mail/accounts','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','/api/mail/messages','./api/mailApplication','/api/mail/reports/queue','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','/api/fax/queues','./api/faxQueue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','/api/sms/applications','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','/api/chat/applications'];(function(_0x200c4f,_0x13b3ff){var _0x28588c=function(_0x168a65){while(--_0x168a65){_0x200c4f['push'](_0x200c4f['shift']());}};_0x28588c(++_0x13b3ff);}(_0x89ee,0xd9));var _0xe89e=function(_0x589f2e,_0x5df7c9){_0x589f2e=_0x589f2e-0x0;var _0xd3233f=_0x89ee[_0x589f2e];return _0xd3233f;};'use strict';var _=require('lodash');var path=require(_0xe89e('0x0'));var express=require('express');var ewinston=require(_0xe89e('0x1'));var util=require(_0xe89e('0x2'));var errors=require(_0xe89e('0x3'));var config=require(_0xe89e('0x4'));var logger=require(_0xe89e('0x5'))(_0xe89e('0x6'));var authLogger=require(_0xe89e('0x5'))('auth');exports['default']=function(_0x339b34){_0x339b34[_0xe89e('0x7')](ewinston[_0xe89e('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x371220,_0x182805){var _0x5161fd=_0xe89e('0x9');if(!_[_0xe89e('0xa')](_0x371220[_0xe89e('0xb')])){_0x5161fd+=_0xe89e('0xc');var _0x13aae8=_0x371220[_0xe89e('0xb')];maskSensitiveData(_0x13aae8);}return util[_0xe89e('0xd')](_0x5161fd,_0x371220['method'],_0x371220[_0xe89e('0xe')][_0xe89e('0xf')]?_0x371220[_0xe89e('0xe')]['x-forwarded-for']:_0x371220[_0xe89e('0x10')][_0xe89e('0x11')]||_0x371220['ip'],_0x371220[_0xe89e('0x12')],_0x182805[_0xe89e('0x13')],_0x182805[_0xe89e('0x14')],_0x371220['user']?_0x371220[_0xe89e('0x15')]['id']:null,_0x371220[_0xe89e('0x15')]?_0x371220[_0xe89e('0x15')][_0xe89e('0x16')]:null,_0x371220[_0xe89e('0x15')]?_0x371220[_0xe89e('0x15')][_0xe89e('0x17')]:null,_0x13aae8?util[_0xe89e('0x18')](_0x13aae8,![],null):'');}}));_0x339b34[_0xe89e('0x7')](ewinston[_0xe89e('0x8')]({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x108def,_0x3abb9f){var _0x52baac='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x108def[_0xe89e('0xb')]&&_0x108def['body'][_0xe89e('0x19')]&&_0x108def[_0xe89e('0xb')][_0xe89e('0x1a')]){_0x52baac=_0xe89e('0x1b');}return util['format'](_0x52baac,_0x108def['method'],_0x108def[_0xe89e('0xe')]['x-forwarded-for']?_0x108def['headers']['x-forwarded-for']:_0x108def[_0xe89e('0x10')][_0xe89e('0x11')]||_0x108def['ip'],_0x108def['url'],_0x3abb9f[_0xe89e('0x13')],_0x3abb9f[_0xe89e('0x14')],_0x108def[_0xe89e('0x15')]?_0x108def['user']['id']:null,_0x108def[_0xe89e('0x15')]?_0x108def['user'][_0xe89e('0x16')]:null,_0x108def['user']?_0x108def[_0xe89e('0x15')]['role']:null,_0x108def[_0xe89e('0xb')]&&_0x108def[_0xe89e('0xb')][_0xe89e('0x19')]?_0x108def['body'][_0xe89e('0x19')]:_0xe89e('0x1c'),_0x108def[_0xe89e('0xb')]&&_0x108def[_0xe89e('0xb')][_0xe89e('0x1a')]?_0x108def[_0xe89e('0xb')][_0xe89e('0x1a')]:'',_0x108def[_0xe89e('0xb')]&&_0x108def[_0xe89e('0xb')]['agent_name']?_0x108def[_0xe89e('0xb')]['agent_name']:'');},'ignoreRoute':function(_0x28eebd){var _0x5b010b=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x5b010b['test'](_0x28eebd[_0xe89e('0x12')]);}}));_0x339b34[_0xe89e('0x7')](_0xe89e('0x1d'),require(_0xe89e('0x1e')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x1f'),require(_0xe89e('0x20')));_0x339b34['use'](_0xe89e('0x21'),require(_0xe89e('0x22')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x23'),require(_0xe89e('0x24')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x25'),require(_0xe89e('0x26')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x27'),require('./api/voiceQueue'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x28'),require(_0xe89e('0x29')));_0x339b34['use'](_0xe89e('0x2a'),require(_0xe89e('0x2b')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x2c'),require('./api/voiceMail'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x2d'),require('./api/voiceMailMessage'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x2e'),require(_0xe89e('0x2f')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x30'),require(_0xe89e('0x31')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x32'),require(_0xe89e('0x33')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x34'),require('./api/voiceQueueReport'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x35'),require(_0xe89e('0x36')));_0x339b34[_0xe89e('0x7')]('/api/trunks',require(_0xe89e('0x37')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x38'),require('./api/voiceTransferReport'));_0x339b34['use'](_0xe89e('0x39'),require('./api/mailServerOut'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x3a'),require('./api/mailAccount'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x3b'),require(_0xe89e('0x3c')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x3d'),require('./api/mailSubstatus'));_0x339b34['use'](_0xe89e('0x3e'),require('./api/mailInteraction'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x3f'),require('./api/mailMessage'));_0x339b34[_0xe89e('0x7')]('/api/mail/applications',require(_0xe89e('0x40')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x41'),require('./api/mailQueueReport'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x42'),require(_0xe89e('0x43')));_0x339b34['use'](_0xe89e('0x44'),require(_0xe89e('0x45')));_0x339b34['use'](_0xe89e('0x46'),require(_0xe89e('0x47')));_0x339b34['use'](_0xe89e('0x48'),require(_0xe89e('0x49')));_0x339b34['use'](_0xe89e('0x4a'),require('./api/faxInteraction'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x4b'),require('./api/faxMessage'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x4c'),require(_0xe89e('0x4d')));_0x339b34[_0xe89e('0x7')]('/api/fax/reports/queue',require(_0xe89e('0x4e')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x4f'),require(_0xe89e('0x50')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x51'),require('./api/smsApplication'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x52'),require(_0xe89e('0x53')));_0x339b34['use'](_0xe89e('0x54'),require(_0xe89e('0x55')));_0x339b34[_0xe89e('0x7')]('/api/sms/queues',require('./api/smsQueue'));_0x339b34[_0xe89e('0x7')]('/api/openchannel/accounts',require(_0xe89e('0x56')));_0x339b34['use'](_0xe89e('0x57'),require(_0xe89e('0x58')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x59'),require(_0xe89e('0x5a')));_0x339b34[_0xe89e('0x7')]('/api/openchannel/messages',require('./api/openchannelMessage'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x5b'),require(_0xe89e('0x5c')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x5d'),require(_0xe89e('0x5e')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x5f'),require('./api/openchannelQueueReport'));_0x339b34['use'](_0xe89e('0x60'),require('./api/chatApplication'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x61'),require(_0xe89e('0x62')));_0x339b34['use'](_0xe89e('0x63'),require(_0xe89e('0x64')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x65'),require('./api/chatOfflineMessage'));_0x339b34['use'](_0xe89e('0x66'),require('./api/chatQueue'));_0x339b34['use']('/api/chat/groups',require(_0xe89e('0x67')));_0x339b34['use']('/api/chat/proactive_actions',require(_0xe89e('0x68')));_0x339b34[_0xe89e('0x7')]('/api/cm/companies',require('./api/cmCompany'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x69'),require(_0xe89e('0x6a')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x6b'),require(_0xe89e('0x6c')));_0x339b34[_0xe89e('0x7')]('/api/cm/hopper_black',require('./api/cmHopperBlack'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x6d'),require(_0xe89e('0x6e')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x6f'),require('./api/cmHopperHistory'));_0x339b34['use']('/api/cm/custom_fields',require('./api/cmCustomField'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x70'),require(_0xe89e('0x71')));_0x339b34['use'](_0xe89e('0x72'),require(_0xe89e('0x73')));_0x339b34[_0xe89e('0x7')]('/api/canned_answers',require(_0xe89e('0x74')));_0x339b34['use'](_0xe89e('0x75'),require('./api/disposition'));_0x339b34['use'](_0xe89e('0x76'),require(_0xe89e('0x77')));_0x339b34['use'](_0xe89e('0x78'),require(_0xe89e('0x79')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x7a'),require(_0xe89e('0x7b')));_0x339b34['use'](_0xe89e('0x7c'),require(_0xe89e('0x7d')));_0x339b34[_0xe89e('0x7')]('/api/voiceQueuesLog',require(_0xe89e('0x7e')));_0x339b34['use'](_0xe89e('0x7f'),require('./api/schedule'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x80'),require('./api/sound'));_0x339b34['use'](_0xe89e('0x81'),require(_0xe89e('0x82')));_0x339b34[_0xe89e('0x7')]('/api/templates',require(_0xe89e('0x83')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x84'),require(_0xe89e('0x85')));_0x339b34[_0xe89e('0x7')]('/api/variables',require(_0xe89e('0x86')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x87'),require('./api/integration'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x88'),require(_0xe89e('0x89')));_0x339b34[_0xe89e('0x7')]('/api/analytics/custom_reports',require(_0xe89e('0x8a')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x8b'),require(_0xe89e('0x8c')));_0x339b34['use']('/api/analytics/extracted_reports',require(_0xe89e('0x8d')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x8e'),require(_0xe89e('0x8f')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x90'),require(_0xe89e('0x91')));_0x339b34['use'](_0xe89e('0x92'),require(_0xe89e('0x93')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x94'),require(_0xe89e('0x95')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x96'),require(_0xe89e('0x97')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x98'),require(_0xe89e('0x99')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x9a'),require(_0xe89e('0x9b')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x9c'),require(_0xe89e('0x9d')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x9e'),require(_0xe89e('0x9f')));_0x339b34[_0xe89e('0x7')]('/api/integrations/desk/accounts',require(_0xe89e('0xa0')));_0x339b34[_0xe89e('0x7')]('/api/integrations/desk/configurations',require(_0xe89e('0xa1')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xa2'),require(_0xe89e('0xa3')));_0x339b34[_0xe89e('0x7')]('/api/integrations/zoho/accounts',require(_0xe89e('0xa4')));_0x339b34[_0xe89e('0x7')]('/api/integrations/zoho/configurations',require(_0xe89e('0xa5')));_0x339b34['use'](_0xe89e('0xa6'),require('./api/intZohoField'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xa7'),require(_0xe89e('0xa8')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xa9'),require(_0xe89e('0xaa')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xab'),require(_0xe89e('0xac')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xad'),require(_0xe89e('0xae')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xaf'),require(_0xe89e('0xb0')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xb1'),require(_0xe89e('0xb2')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xb3'),require('./api/intVtigerAccount'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xb4'),require(_0xe89e('0xb5')));_0x339b34[_0xe89e('0x7')]('/api/integrations/vtiger/fields',require(_0xe89e('0xb6')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xb7'),require(_0xe89e('0xb8')));_0x339b34['use'](_0xe89e('0xb9'),require(_0xe89e('0xba')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xbb'),require(_0xe89e('0xbc')));_0x339b34[_0xe89e('0x7')]('/api/integrations/dynamics365/accounts',require(_0xe89e('0xbd')));_0x339b34['use'](_0xe89e('0xbe'),require('./api/intDynamics365Configuration'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xbf'),require(_0xe89e('0xc0')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xc1'),require('./api/intFreshsalesAccount'));_0x339b34[_0xe89e('0x7')]('/api/integrations/freshsales/configurations',require(_0xe89e('0xc2')));_0x339b34[_0xe89e('0x7')]('/api/integrations/freshsales/fields',require(_0xe89e('0xc3')));_0x339b34['use'](_0xe89e('0xc4'),require(_0xe89e('0xc5')));_0x339b34['use']('/api/chat/reports/queue',require('./api/chatQueueReport'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xc6'),require('./api/chatInternalMessage'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xc7'),require(_0xe89e('0xc8')));_0x339b34[_0xe89e('0x7')]('/api/jscripty/questions/reports',require('./api/jscriptyQuestionReport'));_0x339b34[_0xe89e('0x7')]('/api/jscripty/sessions/reports',require('./api/jscriptySessionReport'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xc9'),require(_0xe89e('0xca')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xcb'),require(_0xe89e('0xcc')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xcd'),require(_0xe89e('0xce')));_0x339b34[_0xe89e('0x7')]('/api/jscripty/projects',require(_0xe89e('0xcf')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xd0'),require('./api/setting'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xd1'),require(_0xe89e('0xd2')));_0x339b34[_0xe89e('0x7')]('/api/square/projects',require('./api/squareProject'));_0x339b34['use']('/api/square/recordings',require(_0xe89e('0xd3')));_0x339b34['use']('/api/square/messages',require(_0xe89e('0xd4')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xd5'),require(_0xe89e('0xd6')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xd7'),require(_0xe89e('0xd8')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xd9'),require(_0xe89e('0xda')));_0x339b34[_0xe89e('0x7')]('/api/migrations',require(_0xe89e('0xdb')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xdc'),require('./api/attachment'));_0x339b34[_0xe89e('0x7')]('/api/plugins',require(_0xe89e('0xdd')));_0x339b34[_0xe89e('0x7')]('/api/mail/reports/transfer',require('./api/mailTransferReport'));_0x339b34[_0xe89e('0x7')]('/api/chat/reports/transfer',require('./api/chatTransferReport'));_0x339b34[_0xe89e('0x7')]('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x339b34[_0xe89e('0x7')]('/api/openchannel/reports/transfer',require(_0xe89e('0xde')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xdf'),require(_0xe89e('0xe0')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xe1'),require(_0xe89e('0xe2')));_0x339b34['use'](_0xe89e('0xe3'),require('./api/voicePrefix'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xe4'),require(_0xe89e('0xe5')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xe6'),require(_0xe89e('0xe7')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xe8'),require(_0xe89e('0xe9')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xea'),require(_0xe89e('0xeb')));_0x339b34['use']('/api/whatsapp/accounts',require(_0xe89e('0xec')));_0x339b34[_0xe89e('0x7')]('/api/whatsapp/applications',require(_0xe89e('0xed')));_0x339b34['use'](_0xe89e('0xee'),require('./api/whatsappInteraction'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xef'),require(_0xe89e('0xf0')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xf1'),require(_0xe89e('0xf2')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xf3'),require(_0xe89e('0xf4')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xf5'),require(_0xe89e('0xf6')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xf7'),require('./api/cloudProvider'));_0x339b34[_0xe89e('0x7')](_0xe89e('0xf8'),require(_0xe89e('0xf9')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xfa'),require(_0xe89e('0xfb')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xfc'),require(_0xe89e('0xfd')));_0x339b34[_0xe89e('0x7')](_0xe89e('0xfe'),require(_0xe89e('0xff')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x100'),require('./api/rpc'));_0x339b34[_0xe89e('0x7')](_0xe89e('0x101'),require(_0xe89e('0x102')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x103'),require(_0xe89e('0x104')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x105'),require(_0xe89e('0x106')));_0x339b34['use'](_0xe89e('0x107'),require('./api/webbar'));_0x339b34[_0xe89e('0x7')]('/apidoc',express[_0xe89e('0x108')](path['join'](config[_0xe89e('0x109')],'/apidoc')));_0x339b34[_0xe89e('0x7')](_0xe89e('0x10a'),express['static'](path[_0xe89e('0x10b')](config[_0xe89e('0x109')],_0xe89e('0x10a'))));_0x339b34['use'](_0xe89e('0x10c'),express[_0xe89e('0x108')](path[_0xe89e('0x10b')](config['root'],_0xe89e('0x10c'))));_0x339b34[_0xe89e('0x7')](_0xe89e('0x10d'),express[_0xe89e('0x108')](path[_0xe89e('0x10b')](config[_0xe89e('0x109')],'snippet',_0xe89e('0x10e'))));_0x339b34[_0xe89e('0x7')](_0xe89e('0x10f'),express[_0xe89e('0x108')](path[_0xe89e('0x10b')](config[_0xe89e('0x109')],_0xe89e('0x110'))));_0x339b34[_0xe89e('0x111')](_0xe89e('0x112'))[_0xe89e('0x113')](errors[0x194]);_0x339b34[_0xe89e('0x111')]('/*')[_0xe89e('0x113')](function(_0x31a32d,_0x5856ac){_0x5856ac[_0xe89e('0x114')](path[_0xe89e('0x115')](_0x339b34[_0xe89e('0x113')](_0xe89e('0x116'))+'/index.html'));});};var sensitiveFields=['username','password',_0xe89e('0x117'),_0xe89e('0x118'),'firstName',_0xe89e('0x119'),_0xe89e('0x11a'),'phone',_0xe89e('0x11b'),'fax',_0xe89e('0x11c'),_0xe89e('0x11d'),'clientSecret',_0xe89e('0x11e'),_0xe89e('0x11f'),_0xe89e('0x120'),'tenantId',_0xe89e('0x121'),_0xe89e('0x122'),_0xe89e('0x123'),_0xe89e('0x124'),_0xe89e('0x125'),_0xe89e('0x126'),_0xe89e('0x127'),_0xe89e('0x128'),'calleridname',_0xe89e('0x129'),_0xe89e('0x12a'),_0xe89e('0x12b'),_0xe89e('0x12c'),_0xe89e('0x12d'),'accesskeyid','secretaccesskey',_0xe89e('0x12e'),_0xe89e('0x15'),_0xe89e('0x12f'),_0xe89e('0x130'),_0xe89e('0x131'),_0xe89e('0x132'),'secret',_0xe89e('0x133'),_0xe89e('0x134')];function maskSensitiveData(_0x4e5f2b){var _0x787d66=/(?!^)[\s\S](?!$)/g;if(!_[_0xe89e('0x135')](_0x4e5f2b))return;for(var _0x397499 in _0x4e5f2b){if(_['isArray'](_0x4e5f2b[_0x397499])){for(var _0xd13ff7=0x0;_0xd13ff7<_0x4e5f2b[_0x397499]['length'];_0xd13ff7++){maskSensitiveData(_0x4e5f2b[_0x397499][_0xd13ff7]);}}else if(_[_0xe89e('0x135')](_0x4e5f2b[_0x397499])){maskSensitiveData(_0x4e5f2b[_0x397499]);}else if(_[_0xe89e('0x136')](_0x4e5f2b[_0x397499])){_0x4e5f2b[_0x397499]=_0x4e5f2b[_0x397499]['replace'](/{{{/g,_0xe89e('0x137'))[_0xe89e('0x138')](/}}}/g,'}@@')[_0xe89e('0x138')](/{{/g,'@{')[_0xe89e('0x138')](/}}/g,'}@');if(_[_0xe89e('0x139')](sensitiveFields,_0x397499)){_0x4e5f2b[_0x397499]=_0x4e5f2b[_0x397499]['replace'](_0x787d66,'*');}}}}
\ No newline at end of file
+var _0x9ed2=['/api/voice/extensions','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','./api/voiceCallReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','./api/cmContact','/api/cm/hopper','/api/cm/hopper_black','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/actions','./api/action','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/templates','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','./api/analyticMetric','/api/analytics/field_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','./api/intFreshdeskConfiguration','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','/api/networks','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/projects','./api/squareProject','/api/square/recordings','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/campaign','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/api/chat/reports/transfer','./api/chatTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappApplication','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','/api/realtime','./api/realtime','./api/authLocal','/api/auth/google','/api/jira','./api/jira','./api/rpc','/api/version','/api/pm2','./api/pm2','./api/webbar','/apidoc','static','join','root','/www','/demo','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','username','password','newPassword','apiKey','phone','mobile','fax','clientId','clientSecret','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','consumerKey','consumerSecret','calleridname','calleridnum','exten','vidaooApiKey','clientEmail','privateKey','accesskeyid','secretaccesskey','key','pass','accountSid','secret','isPlainObject','isArray','length','isString','replace','}@@','includes','lodash','path','express','express-winston','util','./config/environment','./config/logger','auth','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','headers','x-forwarded-for','connection','url','statusCode','responseTime','user','name','role','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','method','remoteAddress','other','agent_name','test','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext'];(function(_0x16a572,_0x4571ce){var _0x33b88a=function(_0x11c899){while(--_0x11c899){_0x16a572['push'](_0x16a572['shift']());}};_0x33b88a(++_0x4571ce);}(_0x9ed2,0x122));var _0x29ed=function(_0x389832,_0x10a4a9){_0x389832=_0x389832-0x0;var _0x59429e=_0x9ed2[_0x389832];return _0x59429e;};'use strict';var _=require(_0x29ed('0x0'));var path=require(_0x29ed('0x1'));var express=require(_0x29ed('0x2'));var ewinston=require(_0x29ed('0x3'));var util=require(_0x29ed('0x4'));var errors=require('./errors');var config=require(_0x29ed('0x5'));var logger=require(_0x29ed('0x6'))('api');var authLogger=require(_0x29ed('0x6'))(_0x29ed('0x7'));exports['default']=function(_0x3b92fe){_0x3b92fe['use'](ewinston[_0x29ed('0x8')]({'winstonInstance':logger,'meta':![],'statusLevels':!![],'msg':function(_0x4ceefe,_0xab08fe){var _0x1baca9=_0x29ed('0x9');if(!_[_0x29ed('0xa')](_0x4ceefe[_0x29ed('0xb')])){_0x1baca9+=_0x29ed('0xc');var _0x40d3f6=_0x4ceefe[_0x29ed('0xb')];maskSensitiveData(_0x40d3f6);}return util['format'](_0x1baca9,_0x4ceefe['method'],_0x4ceefe[_0x29ed('0xd')][_0x29ed('0xe')]?_0x4ceefe['headers'][_0x29ed('0xe')]:_0x4ceefe[_0x29ed('0xf')]['remoteAddress']||_0x4ceefe['ip'],_0x4ceefe[_0x29ed('0x10')],_0xab08fe[_0x29ed('0x11')],_0xab08fe[_0x29ed('0x12')],_0x4ceefe[_0x29ed('0x13')]?_0x4ceefe[_0x29ed('0x13')]['id']:null,_0x4ceefe[_0x29ed('0x13')]?_0x4ceefe[_0x29ed('0x13')][_0x29ed('0x14')]:null,_0x4ceefe['user']?_0x4ceefe[_0x29ed('0x13')][_0x29ed('0x15')]:null,_0x40d3f6?util['inspect'](_0x40d3f6,![],null):'');}}));_0x3b92fe[_0x29ed('0x16')](ewinston['logger']({'winstonInstance':authLogger,'meta':![],'statusLevels':!![],'msg':function(_0x3972fd,_0x21002f){var _0x417283=_0x29ed('0x17');if(_0x3972fd[_0x29ed('0xb')]&&_0x3972fd[_0x29ed('0xb')][_0x29ed('0x18')]&&_0x3972fd['body'][_0x29ed('0x19')]){_0x417283=_0x29ed('0x1a');}return util[_0x29ed('0x1b')](_0x417283,_0x3972fd[_0x29ed('0x1c')],_0x3972fd[_0x29ed('0xd')]['x-forwarded-for']?_0x3972fd[_0x29ed('0xd')]['x-forwarded-for']:_0x3972fd[_0x29ed('0xf')][_0x29ed('0x1d')]||_0x3972fd['ip'],_0x3972fd[_0x29ed('0x10')],_0x21002f['statusCode'],_0x21002f[_0x29ed('0x12')],_0x3972fd['user']?_0x3972fd[_0x29ed('0x13')]['id']:null,_0x3972fd[_0x29ed('0x13')]?_0x3972fd[_0x29ed('0x13')][_0x29ed('0x14')]:null,_0x3972fd['user']?_0x3972fd['user']['role']:null,_0x3972fd[_0x29ed('0xb')]&&_0x3972fd[_0x29ed('0xb')][_0x29ed('0x18')]?_0x3972fd[_0x29ed('0xb')][_0x29ed('0x18')]:_0x29ed('0x1e'),_0x3972fd['body']&&_0x3972fd['body'][_0x29ed('0x19')]?_0x3972fd['body'][_0x29ed('0x19')]:'',_0x3972fd[_0x29ed('0xb')]&&_0x3972fd[_0x29ed('0xb')][_0x29ed('0x1f')]?_0x3972fd[_0x29ed('0xb')]['agent_name']:'');},'ignoreRoute':function(_0x166ad1){var _0x196404=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x196404[_0x29ed('0x20')](_0x166ad1[_0x29ed('0x10')]);}}));_0x3b92fe[_0x29ed('0x16')]('/api/users',require('./api/user'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x21'),require(_0x29ed('0x22')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x23'),require(_0x29ed('0x24')));_0x3b92fe['use'](_0x29ed('0x25'),require(_0x29ed('0x26')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x27'),require(_0x29ed('0x28')));_0x3b92fe[_0x29ed('0x16')]('/api/voice/queues',require('./api/voiceQueue'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x29'),require(_0x29ed('0x2a')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x2b'),require('./api/screenRecording'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x2c'),require(_0x29ed('0x2d')));_0x3b92fe['use'](_0x29ed('0x2e'),require(_0x29ed('0x2f')));_0x3b92fe[_0x29ed('0x16')]('/api/voice/calls/reports',require(_0x29ed('0x30')));_0x3b92fe[_0x29ed('0x16')]('/api/voice/dials/reports',require('./api/voiceDialReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x31'),require(_0x29ed('0x32')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x33'),require(_0x29ed('0x34')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x35'),require(_0x29ed('0x36')));_0x3b92fe[_0x29ed('0x16')]('/api/trunks',require(_0x29ed('0x37')));_0x3b92fe['use'](_0x29ed('0x38'),require(_0x29ed('0x39')));_0x3b92fe['use'](_0x29ed('0x3a'),require(_0x29ed('0x3b')));_0x3b92fe['use'](_0x29ed('0x3c'),require(_0x29ed('0x3d')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x3e'),require(_0x29ed('0x3f')));_0x3b92fe[_0x29ed('0x16')]('/api/mail/substatuses',require('./api/mailSubstatus'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x40'),require(_0x29ed('0x41')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x42'),require('./api/mailMessage'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x43'),require(_0x29ed('0x44')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x45'),require(_0x29ed('0x46')));_0x3b92fe['use'](_0x29ed('0x47'),require(_0x29ed('0x48')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x49'),require('./api/dashboardItem'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4a'),require(_0x29ed('0x4b')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4c'),require(_0x29ed('0x4d')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4e'),require('./api/faxInteraction'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x4f'),require(_0x29ed('0x50')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x51'),require(_0x29ed('0x52')));_0x3b92fe['use'](_0x29ed('0x53'),require(_0x29ed('0x54')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x55'),require(_0x29ed('0x56')));_0x3b92fe[_0x29ed('0x16')]('/api/sms/applications',require(_0x29ed('0x57')));_0x3b92fe['use'](_0x29ed('0x58'),require(_0x29ed('0x59')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x5a'),require(_0x29ed('0x5b')));_0x3b92fe['use']('/api/sms/queues',require(_0x29ed('0x5c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x5d'),require(_0x29ed('0x5e')));_0x3b92fe[_0x29ed('0x16')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x3b92fe['use']('/api/openchannel/interactions',require('./api/openchannelInteraction'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x5f'),require('./api/openchannelMessage'));_0x3b92fe['use'](_0x29ed('0x60'),require(_0x29ed('0x61')));_0x3b92fe['use'](_0x29ed('0x62'),require(_0x29ed('0x63')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x64'),require(_0x29ed('0x65')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x66'),require('./api/chatApplication'));_0x3b92fe[_0x29ed('0x16')]('/api/chat/interactions',require(_0x29ed('0x67')));_0x3b92fe['use'](_0x29ed('0x68'),require(_0x29ed('0x69')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x6a'),require(_0x29ed('0x6b')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x6c'),require(_0x29ed('0x6d')));_0x3b92fe[_0x29ed('0x16')]('/api/chat/groups',require('./api/chatGroup'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x6e'),require(_0x29ed('0x6f')));_0x3b92fe['use'](_0x29ed('0x70'),require(_0x29ed('0x71')));_0x3b92fe[_0x29ed('0x16')]('/api/cm/contacts',require(_0x29ed('0x72')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x73'),require('./api/cmHopper'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x74'),require('./api/cmHopperBlack'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x75'),require(_0x29ed('0x76')));_0x3b92fe[_0x29ed('0x16')]('/api/cm/hopper_history',require(_0x29ed('0x77')));_0x3b92fe['use'](_0x29ed('0x78'),require(_0x29ed('0x79')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x7a'),require(_0x29ed('0x7b')));_0x3b92fe[_0x29ed('0x16')]('/api/automations',require(_0x29ed('0x7c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x7d'),require(_0x29ed('0x7e')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x7f'),require(_0x29ed('0x80')));_0x3b92fe['use']('/api/conditions',require(_0x29ed('0x81')));_0x3b92fe[_0x29ed('0x16')]('/api/intervals',require('./api/interval'));_0x3b92fe[_0x29ed('0x16')]('/api/pauses',require(_0x29ed('0x82')));_0x3b92fe['use'](_0x29ed('0x83'),require(_0x29ed('0x84')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x85'),require('./api/voiceQueuesLog'));_0x3b92fe['use']('/api/schedules',require(_0x29ed('0x86')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x87'),require(_0x29ed('0x88')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x89'),require(_0x29ed('0x8a')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x8b'),require(_0x29ed('0x8c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x8d'),require(_0x29ed('0x8e')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x8f'),require(_0x29ed('0x90')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x91'),require('./api/integration'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x92'),require(_0x29ed('0x93')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x94'),require(_0x29ed('0x95')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x96'),require(_0x29ed('0x97')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x98'),require('./api/analyticExtractedReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x99'),require(_0x29ed('0x9a')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x9b'),require('./api/analyticFieldReport'));_0x3b92fe[_0x29ed('0x16')]('/api/analytics/tree_reports',require(_0x29ed('0x9c')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/salesforce/accounts',require(_0x29ed('0x9d')));_0x3b92fe['use'](_0x29ed('0x9e'),require(_0x29ed('0x9f')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa0'),require('./api/intSalesforceField'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa1'),require(_0x29ed('0xa2')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa3'),require(_0x29ed('0xa4')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa5'),require('./api/intSugarcrmField'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa6'),require('./api/intDeskAccount'));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/desk/configurations',require(_0x29ed('0xa7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xa8'),require(_0x29ed('0xa9')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xaa'),require('./api/intZohoAccount'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xab'),require('./api/intZohoConfiguration'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xac'),require(_0x29ed('0xad')));_0x3b92fe['use'](_0x29ed('0xae'),require(_0x29ed('0xaf')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb0'),require(_0x29ed('0xb1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb2'),require(_0x29ed('0xb3')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb4'),require(_0x29ed('0xb5')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/freshdesk/configurations',require(_0x29ed('0xb6')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/freshdesk/fields',require(_0x29ed('0xb7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xb8'),require(_0x29ed('0xb9')));_0x3b92fe['use']('/api/integrations/vtiger/configurations',require('./api/intVtigerConfiguration'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xba'),require(_0x29ed('0xbb')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/servicenow/accounts',require('./api/intServicenowAccount'));_0x3b92fe['use']('/api/integrations/servicenow/configurations',require(_0x29ed('0xbc')));_0x3b92fe['use'](_0x29ed('0xbd'),require(_0x29ed('0xbe')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xbf'),require(_0x29ed('0xc0')));_0x3b92fe[_0x29ed('0x16')]('/api/integrations/dynamics365/configurations',require(_0x29ed('0xc1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc2'),require(_0x29ed('0xc3')));_0x3b92fe['use'](_0x29ed('0xc4'),require(_0x29ed('0xc5')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc6'),require(_0x29ed('0xc7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc8'),require('./api/intFreshsalesField'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xc9'),require(_0x29ed('0xca')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xcb'),require('./api/chatQueueReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xcc'),require(_0x29ed('0xcd')));_0x3b92fe['use'](_0x29ed('0xce'),require(_0x29ed('0xcf')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd0'),require('./api/jscriptyQuestionReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd1'),require(_0x29ed('0xd2')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd3'),require('./api/smsQueueReport'));_0x3b92fe['use'](_0x29ed('0xd4'),require(_0x29ed('0xd5')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd6'),require(_0x29ed('0xd7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xd8'),require(_0x29ed('0xd9')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xda'),require('./api/setting'));_0x3b92fe['use']('/api/square/odbc',require('./api/squareOdbc'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xdb'),require(_0x29ed('0xdc')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xdd'),require('./api/squareRecording'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xde'),require(_0x29ed('0xdf')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe0'),require(_0x29ed('0xe1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe2'),require(_0x29ed('0xe3')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe4'),require(_0x29ed('0xe5')));_0x3b92fe['use'](_0x29ed('0xe6'),require(_0x29ed('0xe7')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe8'),require('./api/attachment'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xe9'),require(_0x29ed('0xea')));_0x3b92fe[_0x29ed('0x16')]('/api/mail/reports/transfer',require('./api/mailTransferReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xeb'),require(_0x29ed('0xec')));_0x3b92fe[_0x29ed('0x16')]('/api/fax/reports/transfer',require('./api/faxTransferReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xed'),require('./api/openchannelTransferReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xee'),require(_0x29ed('0xef')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf0'),require(_0x29ed('0xf1')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf2'),require(_0x29ed('0xf3')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf4'),require(_0x29ed('0xf5')));_0x3b92fe['use'](_0x29ed('0xf6'),require(_0x29ed('0xf7')));_0x3b92fe['use']('/api/userProfile/resources',require(_0x29ed('0xf8')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xf9'),require(_0x29ed('0xfa')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xfb'),require('./api/whatsappAccount'));_0x3b92fe[_0x29ed('0x16')]('/api/whatsapp/applications',require(_0x29ed('0xfc')));_0x3b92fe[_0x29ed('0x16')]('/api/whatsapp/interactions',require(_0x29ed('0xfd')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0xfe'),require(_0x29ed('0xff')));_0x3b92fe[_0x29ed('0x16')]('/api/whatsapp/reports/queue',require('./api/whatsappQueueReport'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x100'),require(_0x29ed('0x101')));_0x3b92fe['use'](_0x29ed('0x102'),require(_0x29ed('0x103')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x104'),require(_0x29ed('0x105')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x106'),require(_0x29ed('0x107')));_0x3b92fe[_0x29ed('0x16')]('/api/auth/local',require(_0x29ed('0x108')));_0x3b92fe['use'](_0x29ed('0x109'),require('./api/authGoogle'));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x10a'),require(_0x29ed('0x10b')));_0x3b92fe[_0x29ed('0x16')]('/api/rpc',require(_0x29ed('0x10c')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x10d'),require('./api/version'));_0x3b92fe[_0x29ed('0x16')]('/api/system',require('./api/system'));_0x3b92fe['use'](_0x29ed('0x10e'),require(_0x29ed('0x10f')));_0x3b92fe[_0x29ed('0x16')]('/api/webbar',require(_0x29ed('0x110')));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x111'),express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x111'))));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x115'),express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x115'))));_0x3b92fe[_0x29ed('0x16')]('/demo',express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x116'))));_0x3b92fe['use']('/snippet',express[_0x29ed('0x112')](path['join'](config[_0x29ed('0x114')],_0x29ed('0x117'),_0x29ed('0x118'))));_0x3b92fe[_0x29ed('0x16')](_0x29ed('0x119'),express[_0x29ed('0x112')](path[_0x29ed('0x113')](config[_0x29ed('0x114')],_0x29ed('0x11a'))));_0x3b92fe[_0x29ed('0x11b')](_0x29ed('0x11c'))['get'](errors[0x194]);_0x3b92fe[_0x29ed('0x11b')]('/*')[_0x29ed('0x11d')](function(_0xbf2537,_0xcfa18b){_0xcfa18b[_0x29ed('0x11e')](path[_0x29ed('0x11f')](_0x3b92fe[_0x29ed('0x11d')](_0x29ed('0x120'))+_0x29ed('0x121')));});};var sensitiveFields=[_0x29ed('0x122'),_0x29ed('0x123'),_0x29ed('0x124'),_0x29ed('0x125'),'firstName','lastName','street',_0x29ed('0x126'),_0x29ed('0x127'),_0x29ed('0x128'),'email',_0x29ed('0x129'),_0x29ed('0x12a'),_0x29ed('0x12b'),_0x29ed('0x12c'),_0x29ed('0x12d'),_0x29ed('0x12e'),_0x29ed('0x12f'),_0x29ed('0x130'),_0x29ed('0x131'),'accessTokenSecret','authToken',_0x29ed('0x132'),_0x29ed('0x133'),'membername',_0x29ed('0x134'),_0x29ed('0x135'),_0x29ed('0x136'),_0x29ed('0x137'),_0x29ed('0x138'),_0x29ed('0x139'),_0x29ed('0x13a'),_0x29ed('0x13b'),_0x29ed('0x13c'),'user',_0x29ed('0x13d'),_0x29ed('0x13e'),'localstationid','dsn',_0x29ed('0x13f'),'registry','oldPassword'];function maskSensitiveData(_0x15e8d7){var _0x46a569=/(?!^)[\s\S](?!$)/g;if(!_[_0x29ed('0x140')](_0x15e8d7))return;for(var _0x5ebef0 in _0x15e8d7){if(_[_0x29ed('0x141')](_0x15e8d7[_0x5ebef0])){for(var _0x971d08=0x0;_0x971d08<_0x15e8d7[_0x5ebef0][_0x29ed('0x142')];_0x971d08++){maskSensitiveData(_0x15e8d7[_0x5ebef0][_0x971d08]);}}else if(_[_0x29ed('0x140')](_0x15e8d7[_0x5ebef0])){maskSensitiveData(_0x15e8d7[_0x5ebef0]);}else if(_[_0x29ed('0x143')](_0x15e8d7[_0x5ebef0])){_0x15e8d7[_0x5ebef0]=_0x15e8d7[_0x5ebef0][_0x29ed('0x144')](/{{{/g,'@@{')[_0x29ed('0x144')](/}}}/g,_0x29ed('0x145'))[_0x29ed('0x144')](/{{/g,'@{')[_0x29ed('0x144')](/}}/g,'}@');if(_[_0x29ed('0x146')](sensitiveFields,_0x5ebef0)){_0x15e8d7[_0x5ebef0]=_0x15e8d7[_0x5ebef0][_0x29ed('0x144')](_0x46a569,'*');}}}}
\ No newline at end of file
index 41da8fc..26a3d3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f61=['../api/squareProject/squareProject.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','http','rpc','port','error','listen','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','lodash','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/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/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc'];(function(_0xc86baf,_0x2ffba2){var _0xab4b1f=function(_0x27404e){while(--_0x27404e){_0xc86baf['push'](_0xc86baf['shift']());}};_0xab4b1f(++_0x2ffba2);}(_0x7f61,0xe0));var _0x17f6=function(_0xcd4bb6,_0x455c0b){_0xcd4bb6=_0xcd4bb6-0x0;var _0x50d8b9=_0x7f61[_0xcd4bb6];return _0x50d8b9;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var _=require(_0x17f6('0x0'));var config=require('../config/environment');exports['listen']=function(){return new BPromise(function(_0x1f5faf,_0x395913){var _0x2c1ad8={};_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/user/user.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x2')));_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/voiceQueue/voiceQueue.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x3')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x4')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x5')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x6')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x7')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x8')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/trunk/trunk.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x9')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0xa')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0xb')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/mailQueue/mailQueue.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/mailInteraction/mailInteraction.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/mailMessage/mailMessage.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/mailApplication/mailApplication.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0xc')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0xd')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0xe')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/faxInteraction/faxInteraction.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0xf')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x10')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x11')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x12')));_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/smsMessage/smsMessage.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x13')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x14')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x15')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x16')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x17')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x18')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x19')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x1a')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/chatQueue/chatQueue.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x1b')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x1c')));_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x1d')));_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/reportAgentPreview/reportAgentPreview.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x1e')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x1f')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/sound/sound.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x20')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x21')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x22')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x23')));_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/intSugarcrmAccount/intSugarcrmAccount.rpc'));_0x2c1ad8=_['merge'](_0x2c1ad8,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x24')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x25')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x26')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x27')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x28')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x29')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x2a')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x2b')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x2c')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x2d')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x2e')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x2f')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x30')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require('../api/squareRecording/squareRecording.rpc'));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x31')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x32')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x33')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x34')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x35')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x36')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x37')));_0x2c1ad8=_['merge'](_0x2c1ad8,require(_0x17f6('0x38')));_0x2c1ad8=_[_0x17f6('0x1')](_0x2c1ad8,require(_0x17f6('0x39')));var _0x4198b4=jayson[_0x17f6('0x3a')](_0x2c1ad8)[_0x17f6('0x3b')]();var _0x250ab0=config[_0x17f6('0x3c')][_0x17f6('0x3d')]||config['port']+0x1;var _0xc841f2=config[_0x17f6('0x3c')]['ip']||'localhost';_0x4198b4['on'](_0x17f6('0x3e'),function(_0x5054ba){return _0x395913(_0x5054ba);});_0x4198b4[_0x17f6('0x3f')](_0x250ab0,_0xc841f2,function(){console[_0x17f6('0x40')](_0x17f6('0x41'),_0xc841f2,_0x250ab0);require(_0x17f6('0x42'))[_0x17f6('0x43')]();return _0x1f5faf('RPC\x20listening\x20on\x20'+_0xc841f2+':'+_0x250ab0);});});};
\ No newline at end of file
+var _0x8c03=['../api/interval/interval.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.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','http','rpc','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','bluebird','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.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/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc'];(function(_0x19fb82,_0x45da17){var _0xa7a3da=function(_0x279452){while(--_0x279452){_0x19fb82['push'](_0x19fb82['shift']());}};_0xa7a3da(++_0x45da17);}(_0x8c03,0x6f));var _0x38c0=function(_0x3ab3f0,_0x916f8a){_0x3ab3f0=_0x3ab3f0-0x0;var _0x46d86e=_0x8c03[_0x3ab3f0];return _0x46d86e;};'use strict';var jayson=require('jayson/promise');var BPromise=require(_0x38c0('0x0'));var _=require(_0x38c0('0x1'));var config=require(_0x38c0('0x2'));exports[_0x38c0('0x3')]=function(){return new BPromise(function(_0x69cc39,_0x57883f){var _0x5e553e={};_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x5')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x6')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x7')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/voiceRecording/voiceRecording.rpc'));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x8')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x9')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0xa')));_0x5e553e=_['merge'](_0x5e553e,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xb')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xc')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xd')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xe')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0xf')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x10')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x11')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x12')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x13')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x14')));_0x5e553e=_['merge'](_0x5e553e,require('../api/faxAccount/faxAccount.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/faxApplication/faxApplication.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x15')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x16')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x17')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x18')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/smsAccount/smsAccount.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x19')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1a')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1b')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1c')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1d')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/openchannelQueueReport/openchannelQueueReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x1e')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x1f')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/chatQueue/chatQueue.rpc'));_0x5e553e=_['merge'](_0x5e553e,require('../api/cmContact/cmContact.rpc'));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x20')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x21')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x22')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x23')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x24')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x25')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/pause/pause.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/sound/sound.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x26')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x27')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x28')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x29')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2a')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x2b')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2c')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2d')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x2e')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x2f')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x30')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x31')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x32')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require('../api/squareReport/squareReport.rpc'));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x33')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x34')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x35')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x36')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x37')));_0x5e553e=_['merge'](_0x5e553e,require('../api/squareMessage/squareMessage.rpc'));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x38')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x39')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3a')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3b')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3c')));_0x5e553e=_['merge'](_0x5e553e,require(_0x38c0('0x3d')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3e')));_0x5e553e=_[_0x38c0('0x4')](_0x5e553e,require(_0x38c0('0x3f')));var _0x412a8f=jayson[_0x38c0('0x40')](_0x5e553e)[_0x38c0('0x41')]();var _0x4fd0ff=config[_0x38c0('0x42')]['port']||config['port']+0x1;var _0x435541=config[_0x38c0('0x42')]['ip']||_0x38c0('0x43');_0x412a8f['on'](_0x38c0('0x44'),function(_0xc0fe52){return _0x57883f(_0xc0fe52);});_0x412a8f['listen'](_0x4fd0ff,_0x435541,function(){console[_0x38c0('0x45')](_0x38c0('0x46'),_0x435541,_0x4fd0ff);require(_0x38c0('0x47'))[_0x38c0('0x48')]();return _0x69cc39(_0x38c0('0x49')+_0x435541+':'+_0x4fd0ff);});});};
\ No newline at end of file
index b4ad5c0..097de0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b5b=['setTimeout','emit','ready','line','toLowerCase','hangup','search','520\x20End\x20of\x20proper','function','substring','no\x20code','replace','result=','indexOf','startsWith','split','length','match','error','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','write','inherits','sendRequest','sync','prototype','getData','format','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','EXEC\x20%s\x20%s','join','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','isNumber','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setContext','GOTO\x20%s\x20%s\x20%s','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','agi','exec','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','util','lodash','events','EventEmitter','./reply','./error','call','setEncoding','utf8'];(function(_0x16b513,_0x5ce8ca){var _0x1fcf5b=function(_0x49bb9a){while(--_0x49bb9a){_0x16b513['push'](_0x16b513['shift']());}};_0x1fcf5b(++_0x5ce8ca);}(_0x1b5b,0x11b));var _0xb1b5=function(_0x48b5e0,_0xb3826){_0x48b5e0=_0x48b5e0-0x0;var _0x4287ea=_0x1b5b[_0x48b5e0];return _0x4287ea;};'use strict';var util=require(_0xb1b5('0x0'));var _=require(_0xb1b5('0x1'));var EventEmitter=require(_0xb1b5('0x2'))[_0xb1b5('0x3')];var AGIReply=require(_0xb1b5('0x4'));var AGIError=require(_0xb1b5('0x5'));function AGIChannel(_0x42f073){var _0x52b374=this,_0x4a2819=new AGIReply(),_0x2e2a60=![],_0x30ab2e={};EventEmitter[_0xb1b5('0x6')](_0x52b374);_0x42f073[_0xb1b5('0x7')](_0xb1b5('0x8'));_0x42f073[_0xb1b5('0x9')](0x8*0x3c*0x3c*0x3e8);_0x4a2819[_0xb1b5('0x7')](_0xb1b5('0x8'));_0x4a2819['on']('headers',function(_0x577b3e){for(var _0x41400b in _0x577b3e){_0x52b374[_0x41400b]=_0x577b3e[_0x41400b];}_0x52b374[_0xb1b5('0xa')](_0xb1b5('0xb'));});_0x4a2819['on'](_0xb1b5('0xc'),function(_0x1503f9){if(_0x1503f9[_0xb1b5('0xd')]()=='hangup'){_0x52b374[_0xb1b5('0xa')](_0xb1b5('0xe'));return;}if(_0x1503f9['substring'](0x0,0xb)=='520-Invalid'){_0x2e2a60=!![];}if(_0x2e2a60){_0x30ab2e['rx']+=_0x1503f9+'\x0a';if(_0x1503f9[_0xb1b5('0xf')](_0xb1b5('0x10'))!=-0x1){_0x2e2a60=![];}}else{_0x30ab2e['rx']=_0x1503f9;}if(_0x2e2a60){return;}if(typeof _0x30ab2e['cb']==_0xb1b5('0x11')){var _0x537710=_0x30ab2e['rx'][_0xb1b5('0x12')](0x0,0x3),_0x2f831a=null,_0x5dd143=null;_0x537710=parseInt(_0x537710);if(isNaN(_0x537710)){_0x30ab2e['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xb1b5('0x13')});return;}if(_0x537710!=0xc8){_0x30ab2e['cb'](null,{'code':_0x537710,'result':-0x1,'extra':'KO'});return;}_0x2f831a=_0x30ab2e['rx'][_0xb1b5('0x12')](0x4)[_0xb1b5('0x14')](_0xb1b5('0x15'),'');if(_0x2f831a['indexOf']('\x20')!=-0x1){_0x2f831a=_0x2f831a['substr'](0x0,_0x2f831a[_0xb1b5('0x16')]('\x20'));}if(_[_0xb1b5('0x17')](_0x2f831a,'-1')){_0x2f831a=parseInt(_0x2f831a);}_0x5dd143=_0x30ab2e['rx'][_0xb1b5('0x18')]('\x20');if(_0x5dd143[_0xb1b5('0x19')]==0x3){_0x5dd143=_0x5dd143[0x2][_0xb1b5('0x12')](0x1,_0x5dd143[0x2][_0xb1b5('0x19')]-0x1);}else if(_0x5dd143[_0xb1b5('0x19')]>0x3){var _0x2e1a61=/\((.+)\)/;var _0x2b21f8=_0x30ab2e['rx'][_0xb1b5('0x1a')](_0x2e1a61);if(_0x2b21f8){_0x5dd143=_0x2b21f8[0x1];}else{_0x5dd143=null;}}else{_0x5dd143=null;}_0x30ab2e['cb'](null,{'code':_0x537710,'result':_0x2f831a,'extra':_0x5dd143});}});_0x42f073['on'](_0xb1b5('0x1b'),function(_0x37abbe){_0x52b374[_0xb1b5('0xa')](_0xb1b5('0x1b'),new AGIError('E_AGI_SOCKET_ERROR',_0x37abbe[_0xb1b5('0x1c')]));});_0x42f073['on'](_0xb1b5('0x1d'),function(){_0x52b374[_0xb1b5('0xa')]('close',new AGIError(_0xb1b5('0x1e')));});_0x42f073['on'](_0xb1b5('0x1f'),function(){_0x52b374[_0xb1b5('0xa')]('timeout',new AGIError(_0xb1b5('0x20')));_0x42f073[_0xb1b5('0x21')]();});_0x42f073['pipe'](_0x4a2819);this['command']=function(_0x31231d,_0x471d04){var _0x31231d=_0x31231d||'',_0x471d04=typeof _0x471d04==_0xb1b5('0x11')?_0x471d04:new Function();_0x30ab2e={'tx':_0x31231d,'rx':'','cb':_0x471d04};_0x42f073[_0xb1b5('0x22')](_0x31231d+'\x0a');},this[_0xb1b5('0x1d')]=function(){_0x42f073[_0xb1b5('0x21')]();};}util[_0xb1b5('0x23')](AGIChannel,EventEmitter);AGIChannel['prototype'][_0xb1b5('0x24')]=function(_0x4a06e7){return this['command'][_0xb1b5('0x25')](this,_0x4a06e7);};AGIChannel['prototype']['answer']=function(){return this[_0xb1b5('0x24')]('ANSWER');};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x27')]=function(_0x5da665,_0x2a6c9a,_0x4b96e7){_0x5da665=_0x5da665===undefined?'beep':_0x5da665;_0x2a6c9a=_0x2a6c9a===undefined?'5':_0x2a6c9a;_0x4b96e7=_0x4b96e7===undefined?'1':_0x4b96e7;return this[_0xb1b5('0x24')](util[_0xb1b5('0x28')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x5da665,_0x2a6c9a*0x3e8,_0x4b96e7));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x29')]=function(_0x1980c1){_0x1980c1=_0x1980c1||_0xb1b5('0x2a');return this['sendRequest'](util[_0xb1b5('0x28')](_0xb1b5('0x2b'),_0x1980c1));};AGIChannel['prototype']['exec']=function(_0x48e218,_0x2774bf){if(_['isArray'](_0x2774bf)){return this[_0xb1b5('0x24')](util['format'](_0xb1b5('0x2c'),_0x48e218,_0x2774bf[_0xb1b5('0x2d')](',')));}return this['sendRequest'](util[_0xb1b5('0x28')](_0xb1b5('0x2c'),_0x48e218,_0x2774bf));};AGIChannel[_0xb1b5('0x26')]['setContext']=function(_0x45c778){return this['sendRequest'](util[_0xb1b5('0x28')]('SET\x20CONTEXT\x20%s',_0x45c778));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x2e')]=function(_0x571dfa){return this[_0xb1b5('0x24')](util[_0xb1b5('0x28')](_0xb1b5('0x2f'),_0x571dfa));};AGIChannel['prototype'][_0xb1b5('0x30')]=function(_0x1accee){return this[_0xb1b5('0x24')](util['format'](_0xb1b5('0x31'),_0x1accee));};AGIChannel['prototype']['hangup']=function(){return this['sendRequest'](_0xb1b5('0x32'));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x33')]=function(_0x3114cc,_0x228cd3){var _0x2981dc=_[_0xb1b5('0x34')](_0x228cd3)||_[_0xb1b5('0x35')](_0x228cd3)?_0x228cd3['toString']():_0x228cd3;return this['sendRequest'](util[_0xb1b5('0x28')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x3114cc,_0x2981dc?_0x2981dc[_0xb1b5('0x36')]()[_0xb1b5('0x14')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x37')]=function(_0x1c508c,_0x541cc5){return this['sendRequest'](util['format'](_0xb1b5('0x38'),_0x1c508c,_0x541cc5));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x39')]=function(_0x15f57d,_0x52a448){return this['sendRequest'](util[_0xb1b5('0x28')]('SAY\x20DIGITS\x20%s\x20%s',_0x15f57d,_0x52a448));};AGIChannel['prototype']['sayPhonetic']=function(_0x5cc4d3,_0x4dd975){return this[_0xb1b5('0x24')](util[_0xb1b5('0x28')](_0xb1b5('0x3a'),_0x5cc4d3,_0x4dd975));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x3b')]=function(_0x5247b7,_0x3e540c,_0x26cec0){_0x3e540c=_0x3e540c||this['extension'];_0x26cec0=_0x26cec0||0x1;this[_0xb1b5('0x3c')](_0x5247b7);this[_0xb1b5('0x2e')](_0x3e540c);this[_0xb1b5('0x30')](_0x26cec0);return this[_0xb1b5('0x29')](util['format'](_0xb1b5('0x3d'),_0x5247b7,_0x3e540c,_0x26cec0));};AGIChannel['prototype']['getVariable']=function(_0x160b15){return this[_0xb1b5('0x24')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x160b15));};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x3e')]=function(_0x363b7b,_0x3e1eb7,_0x53f5a0,_0x4cd30d,_0x1246ba,_0x31e6b0){_0x3e1eb7=_0x3e1eb7||_0xb1b5('0x3f');_0x53f5a0=_0x53f5a0||'';_0x4cd30d=_0x4cd30d===undefined?-0x1:_0x4cd30d==='-1'?-0x1:_0x4cd30d*0x3e8;_0x1246ba=_0x1246ba===undefined?'':'s='+_0x1246ba;_0x31e6b0=_0x31e6b0?_0xb1b5('0x40'):'';return this[_0xb1b5('0x24')](util[_0xb1b5('0x28')](_0xb1b5('0x41'),_0x363b7b,_0x3e1eb7,_0x53f5a0,_0x4cd30d,_0x31e6b0,_0x1246ba));};AGIChannel['prototype'][_0xb1b5('0x42')]=function(_0x236522,_0x20ca02){_0x20ca02=_0x20ca02||'';return this[_0xb1b5('0x24')](util[_0xb1b5('0x28')]('STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22',_0x236522,_0x20ca02));};AGIChannel['prototype'][_0xb1b5('0x43')]=function(_0x401dcd){return this[_0xb1b5('0x44')]('AGI',_0x401dcd);};AGIChannel['prototype'][_0xb1b5('0x45')]=function(_0x225985){return this[_0xb1b5('0x44')]('WAIT',_0x225985);};AGIChannel[_0xb1b5('0x26')][_0xb1b5('0x1b')]=function(_0x4456d9,_0x526857){this[_0xb1b5('0x29')](util[_0xb1b5('0x28')](_0xb1b5('0x46'),_0x4456d9['id'],_0x4456d9[_0xb1b5('0x47')],_0x526857));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xb1b5('0x48')]=AGIChannel;
\ No newline at end of file
+var _0xfdbd=['SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','setPriority','getVariable','wav','BEEP','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','WAIT','label','exports','util','lodash','events','EventEmitter','./reply','./error','setEncoding','utf8','headers','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','520\x20End\x20of\x20proper','function','no\x20code','indexOf','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','inherits','prototype','sendRequest','sync','answer','ANSWER','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20PRIORITY\x20%s','HANGUP','isBoolean','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','replace','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits'];(function(_0x254752,_0x5248bc){var _0x1984a1=function(_0x2d0a2f){while(--_0x2d0a2f){_0x254752['push'](_0x254752['shift']());}};_0x1984a1(++_0x5248bc);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x385467,_0x298239){_0x385467=_0x385467-0x0;var _0x5ed67e=_0xfdbd[_0x385467];return _0x5ed67e;};'use strict';var util=require(_0xdfdb('0x0'));var _=require(_0xdfdb('0x1'));var EventEmitter=require(_0xdfdb('0x2'))[_0xdfdb('0x3')];var AGIReply=require(_0xdfdb('0x4'));var AGIError=require(_0xdfdb('0x5'));function AGIChannel(_0x11218a){var _0x66533b=this,_0x330ad3=new AGIReply(),_0x5945e0=![],_0x3f5b2d={};EventEmitter['call'](_0x66533b);_0x11218a[_0xdfdb('0x6')](_0xdfdb('0x7'));_0x11218a['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x330ad3['setEncoding']('utf8');_0x330ad3['on'](_0xdfdb('0x8'),function(_0xf72a24){for(var _0x47c629 in _0xf72a24){_0x66533b[_0x47c629]=_0xf72a24[_0x47c629];}_0x66533b[_0xdfdb('0x9')](_0xdfdb('0xa'));});_0x330ad3['on'](_0xdfdb('0xb'),function(_0x27ddcd){if(_0x27ddcd[_0xdfdb('0xc')]()==_0xdfdb('0xd')){_0x66533b[_0xdfdb('0x9')]('hangup');return;}if(_0x27ddcd[_0xdfdb('0xe')](0x0,0xb)==_0xdfdb('0xf')){_0x5945e0=!![];}if(_0x5945e0){_0x3f5b2d['rx']+=_0x27ddcd+'\x0a';if(_0x27ddcd['search'](_0xdfdb('0x10'))!=-0x1){_0x5945e0=![];}}else{_0x3f5b2d['rx']=_0x27ddcd;}if(_0x5945e0){return;}if(typeof _0x3f5b2d['cb']==_0xdfdb('0x11')){var _0x2bee3b=_0x3f5b2d['rx'][_0xdfdb('0xe')](0x0,0x3),_0x1918c1=null,_0x2a95f1=null;_0x2bee3b=parseInt(_0x2bee3b);if(isNaN(_0x2bee3b)){_0x3f5b2d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xdfdb('0x12')});return;}if(_0x2bee3b!=0xc8){_0x3f5b2d['cb'](null,{'code':_0x2bee3b,'result':-0x1,'extra':'KO'});return;}_0x1918c1=_0x3f5b2d['rx'][_0xdfdb('0xe')](0x4)['replace']('result=','');if(_0x1918c1[_0xdfdb('0x13')]('\x20')!=-0x1){_0x1918c1=_0x1918c1['substr'](0x0,_0x1918c1[_0xdfdb('0x13')]('\x20'));}if(_[_0xdfdb('0x14')](_0x1918c1,'-1')){_0x1918c1=parseInt(_0x1918c1);}_0x2a95f1=_0x3f5b2d['rx'][_0xdfdb('0x15')]('\x20');if(_0x2a95f1[_0xdfdb('0x16')]==0x3){_0x2a95f1=_0x2a95f1[0x2][_0xdfdb('0xe')](0x1,_0x2a95f1[0x2][_0xdfdb('0x16')]-0x1);}else if(_0x2a95f1['length']>0x3){var _0x4fd3d5=/\((.+)\)/;var _0x2a0295=_0x3f5b2d['rx'][_0xdfdb('0x17')](_0x4fd3d5);if(_0x2a0295){_0x2a95f1=_0x2a0295[0x1];}else{_0x2a95f1=null;}}else{_0x2a95f1=null;}_0x3f5b2d['cb'](null,{'code':_0x2bee3b,'result':_0x1918c1,'extra':_0x2a95f1});}});_0x11218a['on'](_0xdfdb('0x18'),function(_0x55ab5a){_0x66533b[_0xdfdb('0x9')](_0xdfdb('0x18'),new AGIError(_0xdfdb('0x19'),_0x55ab5a[_0xdfdb('0x1a')]));});_0x11218a['on'](_0xdfdb('0x1b'),function(){_0x66533b[_0xdfdb('0x9')](_0xdfdb('0x1b'),new AGIError(_0xdfdb('0x1c')));});_0x11218a['on']('timeout',function(){_0x66533b[_0xdfdb('0x9')](_0xdfdb('0x1d'),new AGIError(_0xdfdb('0x1e')));_0x11218a['destroy']();});_0x11218a[_0xdfdb('0x1f')](_0x330ad3);this[_0xdfdb('0x20')]=function(_0x2c7dd1,_0x4d55e5){var _0x2c7dd1=_0x2c7dd1||'',_0x4d55e5=typeof _0x4d55e5==_0xdfdb('0x11')?_0x4d55e5:new Function();_0x3f5b2d={'tx':_0x2c7dd1,'rx':'','cb':_0x4d55e5};_0x11218a['write'](_0x2c7dd1+'\x0a');},this[_0xdfdb('0x1b')]=function(){_0x11218a['destroy']();};}util[_0xdfdb('0x21')](AGIChannel,EventEmitter);AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x23')]=function(_0x2a560c){return this['command'][_0xdfdb('0x24')](this,_0x2a560c);};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x25')]=function(){return this[_0xdfdb('0x23')](_0xdfdb('0x26'));};AGIChannel[_0xdfdb('0x22')]['getData']=function(_0xec4d22,_0x2d5fe2,_0xdf3a5c){_0xec4d22=_0xec4d22===undefined?'beep':_0xec4d22;_0x2d5fe2=_0x2d5fe2===undefined?'5':_0x2d5fe2;_0xdf3a5c=_0xdf3a5c===undefined?'1':_0xdf3a5c;return this[_0xdfdb('0x23')](util['format'](_0xdfdb('0x27'),_0xec4d22,_0x2d5fe2*0x3e8,_0xdf3a5c));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x28')]=function(_0x513fa0){_0x513fa0=_0x513fa0||'NO\x20MESSAGE';return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x2a'),_0x513fa0));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x2b')]=function(_0x165f72,_0x5a9fc4){if(_[_0xdfdb('0x2c')](_0x5a9fc4)){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x2d'),_0x165f72,_0x5a9fc4[_0xdfdb('0x2e')](',')));}return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x2d'),_0x165f72,_0x5a9fc4));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x2f')]=function(_0x379e6a){return this['sendRequest'](util['format'](_0xdfdb('0x30'),_0x379e6a));};AGIChannel['prototype'][_0xdfdb('0x31')]=function(_0x14e83e){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')]('SET\x20EXTENSION\x20%s',_0x14e83e));};AGIChannel[_0xdfdb('0x22')]['setPriority']=function(_0x341f0d){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x32'),_0x341f0d));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0xd')]=function(){return this['sendRequest'](_0xdfdb('0x33'));};AGIChannel[_0xdfdb('0x22')]['setVariable']=function(_0x1c1484,_0x4377d6){var _0x45b7bb=_[_0xdfdb('0x34')](_0x4377d6)||_[_0xdfdb('0x35')](_0x4377d6)?_0x4377d6[_0xdfdb('0x36')]():_0x4377d6;return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x37'),_0x1c1484,_0x45b7bb?_0x45b7bb[_0xdfdb('0x36')]()[_0xdfdb('0x38')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype'][_0xdfdb('0x39')]=function(_0x2e65b9,_0x3d3807){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x3a'),_0x2e65b9,_0x3d3807));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x3b')]=function(_0x55bfc6,_0x55d707){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')](_0xdfdb('0x3c'),_0x55bfc6,_0x55d707));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x3d')]=function(_0x300884,_0x3da4ca){return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x300884,_0x3da4ca));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x3e')]=function(_0x13ddb7,_0x31fad2,_0x561add){_0x31fad2=_0x31fad2||this['extension'];_0x561add=_0x561add||0x1;this[_0xdfdb('0x2f')](_0x13ddb7);this[_0xdfdb('0x31')](_0x31fad2);this[_0xdfdb('0x3f')](_0x561add);return this[_0xdfdb('0x28')](util[_0xdfdb('0x29')]('GOTO\x20%s\x20%s\x20%s',_0x13ddb7,_0x31fad2,_0x561add));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x40')]=function(_0xf0482a){return this['sendRequest'](util[_0xdfdb('0x29')]('GET\x20VARIABLE\x20\x22%s\x22',_0xf0482a));};AGIChannel[_0xdfdb('0x22')]['recordFile']=function(_0x15b0c6,_0x3a50e7,_0x5c14a1,_0xc92f82,_0x4e8ead,_0xfea790){_0x3a50e7=_0x3a50e7||_0xdfdb('0x41');_0x5c14a1=_0x5c14a1||'';_0xc92f82=_0xc92f82===undefined?-0x1:_0xc92f82==='-1'?-0x1:_0xc92f82*0x3e8;_0x4e8ead=_0x4e8ead===undefined?'':'s='+_0x4e8ead;_0xfea790=_0xfea790?_0xdfdb('0x42'):'';return this[_0xdfdb('0x23')](util[_0xdfdb('0x29')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x15b0c6,_0x3a50e7,_0x5c14a1,_0xc92f82,_0xfea790,_0x4e8ead));};AGIChannel['prototype'][_0xdfdb('0x43')]=function(_0xaac02e,_0x4b70b3){_0x4b70b3=_0x4b70b3||'';return this[_0xdfdb('0x23')](util['format'](_0xdfdb('0x44'),_0xaac02e,_0x4b70b3));};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x45')]=function(_0x103166){return this[_0xdfdb('0x2b')](_0xdfdb('0x46'),_0x103166);};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x47')]=function(_0x2ac36e){return this[_0xdfdb('0x2b')](_0xdfdb('0x48'),_0x2ac36e);};AGIChannel[_0xdfdb('0x22')][_0xdfdb('0x18')]=function(_0x202c25,_0x1c08fb){this[_0xdfdb('0x28')](util['format']('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x202c25['id'],_0x202c25[_0xdfdb('0x49')],_0x1c08fb));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xdfdb('0x4a')]=AGIChannel;
\ No newline at end of file
index 330c9e3..1252bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x870d=['name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply'];(function(_0x5eb35a,_0x23da94){var _0x1e37c0=function(_0x27865e){while(--_0x27865e){_0x5eb35a['push'](_0x5eb35a['shift']());}};_0x1e37c0(++_0x23da94);}(_0x870d,0x189));var _0xd870=function(_0x565937,_0x2d1c71){_0x565937=_0x565937-0x0;var _0xfcb6a6=_0x870d[_0x565937];return _0xfcb6a6;};'use strict';var util=require(_0xd870('0x0'));var error={'E_AGI_UNDEFINED':_0xd870('0x1'),'E_AGI_ARGUMENT_PORT':_0xd870('0x2'),'E_AGI_SERVER_ERROR':'Server\x20error.\x20Code:\x20%s.','E_AGI_SERVER_CLOSE':_0xd870('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xd870('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xd870('0x5'),'E_AGI_SOCKET_ERROR':_0xd870('0x6'),'E_AGI_SOCKET_CLOSE':_0xd870('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xd870('0x8'),'E_AGI_COMMAND_EMPTY':_0xd870('0x9'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xd870('0xa'),'E_AGI_IVR_ENTRY':_0xd870('0xb')};function AGIError(_0x39345a){var _0x39345a=_0x39345a||null,_0x4dc2b3=_0x4dc2b3||[],_0x30fd41=0x1,_0x5a306b='';if(!error[_0x39345a]){_0x39345a=_0xd870('0xc');}_0x4dc2b3[_0xd870('0xd')](error[_0x39345a]);while(arguments[_0x30fd41]){_0x4dc2b3['push'](arguments[_0x30fd41]);_0x30fd41++;}_0x5a306b=util['format'][_0xd870('0xe')](util,_0x4dc2b3);this['message']=_0x5a306b;this[_0xd870('0xf')]=_0x39345a;}module[_0xd870('0x10')]=AGIError;
\ No newline at end of file
+var _0x701e=['Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','format','apply','message','name','exports','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.'];(function(_0x3bd564,_0x3c1502){var _0x51c5b0=function(_0x250cba){while(--_0x250cba){_0x3bd564['push'](_0x3bd564['shift']());}};_0x51c5b0(++_0x3c1502);}(_0x701e,0x142));var _0xe701=function(_0x4f8998,_0x5774f3){_0x4f8998=_0x4f8998-0x0;var _0x47a429=_0x701e[_0x4f8998];return _0x47a429;};'use strict';var util=require('util');var error={'E_AGI_UNDEFINED':_0xe701('0x0'),'E_AGI_ARGUMENT_PORT':_0xe701('0x1'),'E_AGI_SERVER_ERROR':_0xe701('0x2'),'E_AGI_SERVER_CLOSE':_0xe701('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xe701('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xe701('0x5'),'E_AGI_SOCKET_ERROR':_0xe701('0x6'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0xe701('0x7'),'E_AGI_COMMAND_EMPTY':_0xe701('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xe701('0x9'),'E_AGI_IVR_ENTRY':_0xe701('0xa')};function AGIError(_0x4ba625){var _0x4ba625=_0x4ba625||null,_0xe6811c=_0xe6811c||[],_0x227184=0x1,_0x4807f0='';if(!error[_0x4ba625]){_0x4ba625=_0xe701('0xb');}_0xe6811c[_0xe701('0xc')](error[_0x4ba625]);while(arguments[_0x227184]){_0xe6811c[_0xe701('0xc')](arguments[_0x227184]);_0x227184++;}_0x4807f0=util[_0xe701('0xd')][_0xe701('0xe')](util,_0xe6811c);this[_0xe701('0xf')]=_0x4807f0;this[_0xe701('0x10')]=_0x4ba625;}module[_0xe701('0x11')]=AGIError;
\ No newline at end of file
index b32be61..a51bad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe74e=['max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges','prototype','addVertex','addEdge','push','numberOfEdges','size','relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes'];(function(_0x5762e0,_0x4a41ce){var _0x52e4e2=function(_0x463107){while(--_0x463107){_0x5762e0['push'](_0x5762e0['shift']());}};_0x52e4e2(++_0x4a41ce);}(_0xe74e,0xe3));var _0xee74=function(_0xfcb984,_0x4165bd){_0xfcb984=_0xfcb984-0x0;var _0x32e3de=_0xe74e[_0xfcb984];return _0x32e3de;};'use strict';var _=require(_0xee74('0x0'));var logger=require(_0xee74('0x1'))(_0xee74('0x2'));var verticesWithRetry=[_0xee74('0x3'),_0xee74('0x4'),_0xee74('0x5')];var Graph=function(){this[_0xee74('0x6')]={};this[_0xee74('0x7')]={};this['numberOfEdges']=0x0;};Graph[_0xee74('0x8')][_0xee74('0x9')]=function(_0x1adc18){this[_0xee74('0x6')][_0x1adc18['id']]=_0x1adc18;this[_0xee74('0x7')][_0x1adc18['id']]=[];};Graph[_0xee74('0x8')][_0xee74('0xa')]=function(_0x30f9f0,_0x36c56a,_0x2f70ca){this['edges'][_0x30f9f0][_0xee74('0xb')]({'target':_0x36c56a,'condition':_0x2f70ca});this[_0xee74('0xc')]+=0x1;};Graph[_0xee74('0x8')]['size']=function(){return _[_0xee74('0xd')](this[_0xee74('0x6')]);};Graph['prototype'][_0xee74('0xe')]=function(){return this[_0xee74('0xc')];};Graph[_0xee74('0x8')]['getVertex']=function(_0x586d82){return this['vertices'][_0x586d82];};Graph[_0xee74('0x8')][_0xee74('0xf')]=function(_0x2a71e7,_0x29e320){if(!this['vertices'][_0x2a71e7]){return logger[_0xee74('0x10')](_0xee74('0x11'));}var _0x5f1379=_0x29e320(this[_0xee74('0x6')][_0x2a71e7]);if(!_0x5f1379){return logger[_0xee74('0x10')](_0xee74('0x12'));}if(this['edges'][_0x2a71e7][_0xee74('0x13')]===0x0){return logger[_0xee74('0x10')](_0xee74('0x14'));}for(var _0x669147=0x0,_0x66d1fa=[],_0x249643=![];_0x669147<this[_0xee74('0x7')][_0x2a71e7][_0xee74('0x13')];_0x669147+=0x1){if(this[_0xee74('0x7')][_0x2a71e7][_0x669147][_0xee74('0x15')]){_0x66d1fa=this[_0xee74('0x7')][_0x2a71e7][_0x669147][_0xee74('0x15')][_0xee74('0x16')](',');for(var _0x4c20f4=0x0;_0x4c20f4<_0x66d1fa[_0xee74('0x13')];_0x4c20f4+=0x1){if(this['vertices'][_0x2a71e7][_0xee74('0x17')]==='vswitch'&&_0x66d1fa[_0x4c20f4]==='-'){_0x249643=this['edges'][_0x2a71e7][_0x669147][_0xee74('0x18')];logger[_0xee74('0x10')](_0xee74('0x19'),_0x66d1fa[_0x4c20f4],this['edges'][_0x2a71e7][_0x669147][_0xee74('0x18')]);}else if(this[_0xee74('0x6')][_0x2a71e7]['agicommand']==='menu'&&_0x66d1fa[_0x4c20f4]==='i'){_0x249643=this[_0xee74('0x7')][_0x2a71e7][_0x669147][_0xee74('0x18')];logger['info'](_0xee74('0x1a'),_0x66d1fa[_0x4c20f4],this[_0xee74('0x7')][_0x2a71e7][_0x669147][_0xee74('0x18')]);}if(_0x66d1fa[_0x4c20f4]===_0x5f1379){return this[_0xee74('0xf')](this[_0xee74('0x7')][_0x2a71e7][_0x669147][_0xee74('0x18')],_0x29e320);}}}else{return this[_0xee74('0xf')](this[_0xee74('0x7')][_0x2a71e7][_0x669147][_0xee74('0x18')],_0x29e320);}}if(_0x66d1fa[_0xee74('0x13')]){if(this[_0xee74('0x6')][_0x2a71e7][_0xee74('0x17')]==='vswitch'){if(_0x249643){return this[_0xee74('0xf')](_0x249643,_0x29e320);}return logger[_0xee74('0x10')](_0xee74('0x1b'));}else if(_[_0xee74('0x1c')](verticesWithRetry,this[_0xee74('0x6')][_0x2a71e7]['agicommand'])){if(_0x5f1379==='-'){return logger[_0xee74('0x10')](_0xee74('0x1d'));}if(_0x249643&&_0x5f1379!=='t'){return this['traverseBFS'](_0x249643,_0x29e320);}return this[_0xee74('0xf')](_0x2a71e7,_0x29e320);}return logger['info'](_0xee74('0x1e'));}};module[_0xee74('0x1f')]=Graph;
\ No newline at end of file
+var _0x79d4=['info','stop\x20traverse','no\x20edge/s\x20available','condition','split','agicommand','vswitch','default','target','invalid','length','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','agi','menu','getdigits','edges','numberOfEdges','addVertex','vertices','prototype','addEdge','push','size','relations','getVertex','traverseBFS'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x79d4,0x177));var _0x479d=function(_0x39dc44,_0x595103){_0x39dc44=_0x39dc44-0x0;var _0x39a6b5=_0x79d4[_0x39dc44];return _0x39a6b5;};'use strict';var _=require(_0x479d('0x0'));var logger=require('../../../config/logger')(_0x479d('0x1'));var verticesWithRetry=[_0x479d('0x2'),_0x479d('0x3'),'getsecretdigits'];var Graph=function(){this['vertices']={};this[_0x479d('0x4')]={};this[_0x479d('0x5')]=0x0;};Graph['prototype'][_0x479d('0x6')]=function(_0x13afa7){this[_0x479d('0x7')][_0x13afa7['id']]=_0x13afa7;this[_0x479d('0x4')][_0x13afa7['id']]=[];};Graph[_0x479d('0x8')][_0x479d('0x9')]=function(_0x24a638,_0x543007,_0x295baa){this[_0x479d('0x4')][_0x24a638][_0x479d('0xa')]({'target':_0x543007,'condition':_0x295baa});this[_0x479d('0x5')]+=0x1;};Graph[_0x479d('0x8')][_0x479d('0xb')]=function(){return _[_0x479d('0xb')](this['vertices']);};Graph['prototype'][_0x479d('0xc')]=function(){return this[_0x479d('0x5')];};Graph[_0x479d('0x8')][_0x479d('0xd')]=function(_0x5e5d00){return this[_0x479d('0x7')][_0x5e5d00];};Graph[_0x479d('0x8')][_0x479d('0xe')]=function(_0x8086ed,_0x2af6ce){if(!this['vertices'][_0x8086ed]){return logger['info']('no\x20vertex\x20found');}var _0x33f137=_0x2af6ce(this[_0x479d('0x7')][_0x8086ed]);if(!_0x33f137){return logger[_0x479d('0xf')](_0x479d('0x10'));}if(this[_0x479d('0x4')][_0x8086ed]['length']===0x0){return logger['info'](_0x479d('0x11'));}for(var _0x2cd010=0x0,_0x47fa40=[],_0x5cd11c=![];_0x2cd010<this[_0x479d('0x4')][_0x8086ed]['length'];_0x2cd010+=0x1){if(this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x12')]){_0x47fa40=this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x12')][_0x479d('0x13')](',');for(var _0x4ed28b=0x0;_0x4ed28b<_0x47fa40['length'];_0x4ed28b+=0x1){if(this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')]===_0x479d('0x15')&&_0x47fa40[_0x4ed28b]==='-'){_0x5cd11c=this[_0x479d('0x4')][_0x8086ed][_0x2cd010]['target'];logger[_0x479d('0xf')](_0x479d('0x16'),_0x47fa40[_0x4ed28b],this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')]);}else if(this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')]===_0x479d('0x2')&&_0x47fa40[_0x4ed28b]==='i'){_0x5cd11c=this['edges'][_0x8086ed][_0x2cd010][_0x479d('0x17')];logger[_0x479d('0xf')](_0x479d('0x18'),_0x47fa40[_0x4ed28b],this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')]);}if(_0x47fa40[_0x4ed28b]===_0x33f137){return this[_0x479d('0xe')](this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')],_0x2af6ce);}}}else{return this[_0x479d('0xe')](this[_0x479d('0x4')][_0x8086ed][_0x2cd010][_0x479d('0x17')],_0x2af6ce);}}if(_0x47fa40[_0x479d('0x19')]){if(this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')]==='vswitch'){if(_0x5cd11c){return this[_0x479d('0xe')](_0x5cd11c,_0x2af6ce);}return logger[_0x479d('0xf')]('default\x20on\x20switch\x20not\x20found');}else if(_[_0x479d('0x1a')](verticesWithRetry,this[_0x479d('0x7')][_0x8086ed][_0x479d('0x14')])){if(_0x33f137==='-'){return logger[_0x479d('0xf')](_0x479d('0x1b'));}if(_0x5cd11c&&_0x33f137!=='t'){return this[_0x479d('0xe')](_0x5cd11c,_0x2af6ce);}return this[_0x479d('0xe')](_0x8086ed,_0x2af6ce);}return logger['info'](_0x479d('0x1c'));}};module[_0x479d('0x1d')]=Graph;
\ No newline at end of file
index 794ddbb..75318a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb805=['agi','../../config/license/util','./rpc','./graph','./vertices','defaults','127.0.0.1','nextTick','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','[%s]\x20%s','message','[ERROR]\x20%s','stack','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','evtHangup','agicommand','hasOwnProperty','maxRetry','retry','addVertex','omit','mxCell','isArray','source','target','addEdge','value','getSquareProject','then','catch','createSquareReport','indexOf','substring','inspect','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','production','start','root','stringify','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','clear','vertex','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','isUndefined','result','toString','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20published','getLicense','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','finally','./server','listening','connection','moment','../../config/environment','../../config/logger'];(function(_0x2d588c,_0x46e768){var _0x464354=function(_0x5f154e){while(--_0x5f154e){_0x2d588c['push'](_0x2d588c['shift']());}};_0x464354(++_0x46e768);}(_0xb805,0xa7));var _0x5b80=function(_0x1079f4,_0x20a675){_0x1079f4=_0x1079f4-0x0;var _0x2e4222=_0xb805[_0x1079f4];return _0x2e4222;};'use strict';var parser=require('xml2json');var _=require('lodash');var syncho=require('syncho');var util=require('util');var moment=require(_0x5b80('0x0'));var config=require(_0x5b80('0x1'));var logger=require(_0x5b80('0x2'))(_0x5b80('0x3'));var utilLicense=require(_0x5b80('0x4'));var rpc=require(_0x5b80('0x5'));var mailRpc=require('./mailRpc');var Graph=require(_0x5b80('0x6'));var Vertices=require(_0x5b80('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x5b80('0x3')]=_[_0x5b80('0x8')](config['agi'],{'ip':_0x5b80('0x9'),'port':0x11dd});function connectionHandler(_0x5c7aea){process[_0x5b80('0xa')](function(){syncho(function(){try{setChannelVariables(_0x5c7aea);agiHandler(_0x5c7aea);}catch(_0x2bf481){logger[_0x5b80('0xb')](_0x2bf481['stack']);}});});}function listeningHandler(){console[_0x5b80('0xc')](_0x5b80('0xd'),config[_0x5b80('0x3')][_0x5b80('0xe')]);logger[_0x5b80('0xf')](util[_0x5b80('0x10')](_0x5b80('0x11'),config[_0x5b80('0x3')]['ip'],config[_0x5b80('0x3')][_0x5b80('0xe')]));}function errorHandler(_0x3ad6f4){if(_0x3ad6f4&&_0x3ad6f4[_0x5b80('0x12')]&&_0x3ad6f4['message']){logger[_0x5b80('0xb')](util[_0x5b80('0x10')](_0x5b80('0x13'),_0x3ad6f4[_0x5b80('0x12')],_0x3ad6f4[_0x5b80('0x14')]));}else{logger[_0x5b80('0xb')](util[_0x5b80('0x10')](_0x5b80('0x15'),_0x3ad6f4[_0x5b80('0x16')]));}}function closeHandler(){logger[_0x5b80('0xf')](util[_0x5b80('0x10')](_0x5b80('0x17'),this['arg_1'],this[_0x5b80('0x18')],this[_0x5b80('0x19')],this[_0x5b80('0x1a')],this[_0x5b80('0x1b')]));try{createSquareReport(this);}catch(_0x20d804){logger[_0x5b80('0xb')](_0x20d804[_0x5b80('0x16')]);}}function timeoutHandler(){logger[_0x5b80('0xf')](util[_0x5b80('0x10')](_0x5b80('0x1c'),this[_0x5b80('0x1d')],this['calleridname'],this[_0x5b80('0x19')],this['dnid'],this[_0x5b80('0x1b')]));}function hangupHandler(){logger[_0x5b80('0xf')](util[_0x5b80('0x10')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0x5b80('0x18')],this[_0x5b80('0x19')],this[_0x5b80('0x1a')],this[_0x5b80('0x1b')]));this[_0x5b80('0x1e')]=!![];}function getRoot(_0x212c58){return parser['toJson'](_0x212c58,{'object':!![]})['mxGraphModel']['root'];}function addVertex(_0x5a9e66,_0x2a55fa,_0xcc2708){_0x2a55fa[_0x5b80('0x1f')]=_0xcc2708;if(_0x2a55fa[_0x5b80('0x20')]('retry')){_0x2a55fa[_0x5b80('0x21')]=parseInt(_0x2a55fa[_0x5b80('0x22')],0xa);}_0x5a9e66[_0x5b80('0x23')](_[_0x5b80('0x24')](_0x2a55fa,_0x5b80('0x25')));}function initGraph(_0x1e1f6f,_0x52a5e5){var _0x591260=new Graph();for(var _0x5e503b in _0x1e1f6f){if(_0x1e1f6f[_0x5b80('0x20')](_0x5e503b)){if(_[_0x5b80('0x26')](_0x1e1f6f[_0x5e503b])){for(var _0x3cf564=0x0;_0x3cf564<_0x1e1f6f[_0x5e503b]['length'];_0x3cf564+=0x1){addVertex(_0x591260,_0x1e1f6f[_0x5e503b][_0x3cf564],_0x5e503b);}}else{addVertex(_0x591260,_0x1e1f6f[_0x5e503b],_0x5e503b);}}}for(var _0x44ae79=0x0;_0x44ae79<_0x52a5e5['length'];_0x44ae79+=0x1){if(_0x52a5e5[_0x44ae79][_0x5b80('0x27')]&&_0x52a5e5[_0x44ae79][_0x5b80('0x28')]){_0x591260[_0x5b80('0x29')](_0x52a5e5[_0x44ae79][_0x5b80('0x27')],_0x52a5e5[_0x44ae79]['target'],_0x52a5e5[_0x44ae79][_0x5b80('0x2a')]);}}return _0x591260;}function getSquareProject(_0x209ca5,_0x3cbfea){rpc[_0x5b80('0x2b')](_0x209ca5)[_0x5b80('0x2c')](function(_0x3dfa93){_0x3cbfea(null,_0x3dfa93);})[_0x5b80('0x2d')](function(_0x555107){_0x3cbfea(null,_0x555107);});}function createSquareReport(_0x436e0b,_0x4f537f){rpc[_0x5b80('0x2e')](_0x436e0b)['then'](function(_0x42ac80){if(_0x4f537f){_0x4f537f(null,_0x42ac80);}})['catch'](function(_0x30b574){if(_0x4f537f){_0x4f537f(null,_0x30b574);}});}function setChannelVariables(_0x2bd758){for(var _0x23f3f3 in _0x2bd758){if(_0x2bd758[_0x5b80('0x20')](_0x23f3f3)){if(_0x23f3f3[_0x5b80('0x2f')]('agi_')===0x0){_0x2bd758[_0x23f3f3[_0x5b80('0x30')](0x4)]=_0x2bd758[_0x23f3f3];delete _0x2bd758[_0x23f3f3];}}}}function getLogFromObject(_0x1a8ec4){return util[_0x5b80('0x31')](_0x1a8ec4,{'showHidden':![],'depth':null});}function agiHandler(_0x283b4b){var _0x339c69,_0x912f1c,_0x3513e4,_0x4e20ef,_0x2a0b0b;logger[_0x5b80('0x32')](_0x5b80('0x33'),JSON['stringify'](_0x283b4b,null,0x2));logger['info'](util[_0x5b80('0x10')](_0x5b80('0x34'),_0x283b4b['arg_1'],_0x283b4b[_0x5b80('0x18')],_0x283b4b[_0x5b80('0x19')],_0x283b4b[_0x5b80('0x1a')],_0x283b4b[_0x5b80('0x1b')]));_0x283b4b['on'](_0x5b80('0xb'),errorHandler);_0x283b4b['on'](_0x5b80('0x35'),closeHandler);_0x283b4b['on'](_0x5b80('0x36'),timeoutHandler);_0x283b4b[_0x5b80('0x1e')]=![];_0x283b4b['on']('hangup',hangupHandler);var _0x5aa632=getSquareProject['sync'](null,_0x283b4b[_0x5b80('0x1d')]);if(_0x5aa632){if(_0x5aa632[_0x5b80('0x37')]){_0x339c69=getRoot(_0x5aa632[_0x5b80('0x37')]);if(_0x339c69&&_0x339c69[_0x5b80('0x38')]){logger['debug'](_0x5b80('0x39'),JSON[_0x5b80('0x3a')](_0x339c69,null,0x2));_0x283b4b[_0x5b80('0x3b')]=moment()[_0x5b80('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x912f1c=initGraph(_[_0x5b80('0x24')](_0x339c69,_0x5b80('0x25')),_0x339c69[_0x5b80('0x25')]);_0x3513e4=new Vertices(_0x283b4b,rpc,mailRpc);logger[_0x5b80('0xf')](util[_0x5b80('0x10')](_0x5b80('0x3c'),_0x283b4b[_0x5b80('0x1d')],_0x283b4b['calleridname'],_0x283b4b['callerid'],_0x283b4b[_0x5b80('0x1a')],_0x283b4b[_0x5b80('0x1b')]));_0x912f1c['traverseBFS'](_0x339c69[_0x5b80('0x38')]['id'],function(_0x5e9e69){try{_0x5e9e69=_0x3513e4[_0x5b80('0x3d')](_0x5e9e69);logger[_0x5b80('0x32')](_0x5b80('0x3e'),JSON[_0x5b80('0x3a')](_0x5e9e69,null,0x2));if(_0x5e9e69[_0x5b80('0x1f')]==='gotoc'){logger['info'](_0x5b80('0x3f'));_0x283b4b['context']=_0x5e9e69['context']||_0x283b4b[_0x5b80('0x40')];_0x283b4b[_0x5b80('0x41')]=_0x5e9e69[_0x5b80('0x41')];_0x283b4b['priority']=_0x5e9e69['priority']?_0x5e9e69[_0x5b80('0x42')]-0x1:0x1;return null;}else if(_0x5e9e69&&_0x3513e4[_0x5e9e69[_0x5b80('0x1f')]]){_0x2a0b0b=_0x3513e4[_0x5e9e69[_0x5b80('0x1f')]](_0x5e9e69);logger['info'](_0x5b80('0x43'),JSON[_0x5b80('0x3a')](_0x2a0b0b,null,0x2));if(_0x2a0b0b&&_0x2a0b0b[_0x5b80('0x44')]===AGI_CODE_SUCCESS&&_0x2a0b0b['result']!==AGI_RESULT_ERROR&&!_0x283b4b[_0x5b80('0x1e')]){logger[_0x5b80('0x32')]('response',getLogFromObject(_0x2a0b0b));return _[_0x5b80('0x45')](_0x2a0b0b['result'])?null:_0x2a0b0b[_0x5b80('0x46')][_0x5b80('0x47')]();}else{logger['error'](_0x5b80('0x43'),getLogFromObject(_0x2a0b0b));return null;}}else{logger[_0x5b80('0xb')](_0x5b80('0x48'));return null;}}catch(_0x492104){logger[_0x5b80('0xb')](_0x492104[_0x5b80('0x16')]);return null;}});if(_0x339c69['finally']){logger[_0x5b80('0xf')](util[_0x5b80('0x10')](_0x5b80('0x49'),_0x283b4b['arg_1'],_0x283b4b['calleridname'],_0x283b4b[_0x5b80('0x19')],_0x283b4b['dnid'],_0x283b4b[_0x5b80('0x1b')]));_0x912f1c[_0x5b80('0x4a')](_0x339c69['finally']['id'],function(_0x5af1bb){try{_0x5af1bb=_0x3513e4[_0x5b80('0x3d')](_0x5af1bb);logger[_0x5b80('0x32')](_0x5b80('0x3e'),JSON[_0x5b80('0x3a')](_0x5af1bb,null,0x2));if(_0x5af1bb&&_0x3513e4[_0x5af1bb[_0x5b80('0x1f')]]){_0x2a0b0b=_0x3513e4[_0x5af1bb[_0x5b80('0x1f')]](_0x5af1bb);if(_0x2a0b0b){logger[_0x5b80('0x32')]('response',getLogFromObject(_0x2a0b0b));return _[_0x5b80('0x45')](_0x2a0b0b[_0x5b80('0x46')])?null:_0x2a0b0b[_0x5b80('0x46')][_0x5b80('0x47')]();}else{logger[_0x5b80('0xb')](_0x5b80('0x43'),getLogFromObject(_0x2a0b0b));return null;}}else{logger['error'](_0x5b80('0x48'));return null;}}catch(_0xfc712e){logger['error'](_0xfc712e[_0x5b80('0x16')]);return null;}});}logger[_0x5b80('0xf')](util[_0x5b80('0x10')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x283b4b[_0x5b80('0x1d')],_0x283b4b[_0x5b80('0x18')],_0x283b4b[_0x5b80('0x19')],_0x283b4b[_0x5b80('0x1a')],_0x283b4b['uniqueid']));logger[_0x5b80('0xf')](util[_0x5b80('0x10')](_0x5b80('0x4b'),_0x283b4b['context'],_0x283b4b['extension'],parseInt(_0x283b4b[_0x5b80('0x42')],0xa)+0x1));_0x283b4b[_0x5b80('0x4c')](_0x283b4b[_0x5b80('0x40')],_0x283b4b['extension'],parseInt(_0x283b4b[_0x5b80('0x42')],0xa)+0x1);_0x283b4b[_0x5b80('0x35')]();}}else{logger[_0x5b80('0xb')](util[_0x5b80('0x10')](_0x5b80('0x4d'),_0x283b4b[_0x5b80('0x1d')]));_0x283b4b[_0x5b80('0x4c')](_0x283b4b[_0x5b80('0x40')],_0x283b4b[_0x5b80('0x41')],parseInt(_0x283b4b[_0x5b80('0x42')],0xa)+0x1);_0x283b4b['close']();}}else{logger[_0x5b80('0xb')](util[_0x5b80('0x10')]('Project\x20%s\x20not\x20found',_0x283b4b[_0x5b80('0x1d')]));_0x283b4b['continueAt'](_0x283b4b[_0x5b80('0x40')],_0x283b4b['extension'],parseInt(_0x283b4b[_0x5b80('0x42')],0xa)+0x1);_0x283b4b['close']();}}function main(){var _0x272073;return utilLicense[_0x5b80('0x4e')]()[_0x5b80('0x2c')](function(_0x242379){if(_0x242379){if(_0x242379['voice']){if(_0x242379[_0x5b80('0x4f')]&&_0x242379[_0x5b80('0x4f')]>0x0){logger['info'](util['format']('[LICENSE]\x20CHANNELS:\x20%s',_0x242379['callysquare']));_0x272073=_0x242379['callysquare'];}else{logger[_0x5b80('0xf')](_0x5b80('0x50'));}}else{logger['info']('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x272073=-0x1;}}})[_0x5b80('0x2d')](function(_0x295fcb){logger['error']('[LICENSE]',_0x295fcb[_0x5b80('0x16')]);})[_0x5b80('0x51')](function(){var _0x36a811=require(_0x5b80('0x52'))(config['agi'][_0x5b80('0xe')],config[_0x5b80('0x3')]['ip'],_0x272073);_0x36a811['on'](_0x5b80('0xb'),errorHandler);_0x36a811['on'](_0x5b80('0x53'),listeningHandler);_0x36a811['on'](_0x5b80('0x54'),connectionHandler);_0x36a811['on'](_0x5b80('0x35'),closeHandler);});}main();
\ No newline at end of file
+var _0xa7cc=['Project\x20%s\x20not\x20found','close','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','[LICENSE]','./server','listening','connection','xml2json','util','moment','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./mailRpc','./graph','defaults','127.0.0.1','nextTick','error','stack','log','port','info','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','format','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','toJson','mxGraphModel','root','hasOwnProperty','retry','maxRetry','omit','mxCell','length','source','target','getSquareProject','then','createSquareReport','catch','indexOf','substring','inspect','debug','variables','timeout','production','start','joinAt','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','clear','vertex','agicommand','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','stringify','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','[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','Project\x20%s\x20not\x20published','continueAt'];(function(_0x131557,_0x541d3b){var _0x20ccbd=function(_0x5af406){while(--_0x5af406){_0x131557['push'](_0x131557['shift']());}};_0x20ccbd(++_0x541d3b);}(_0xa7cc,0xba));var _0xca7c=function(_0x686b80,_0x409cf7){_0x686b80=_0x686b80-0x0;var _0x2f4f5a=_0xa7cc[_0x686b80];return _0x2f4f5a;};'use strict';var parser=require(_0xca7c('0x0'));var _=require('lodash');var syncho=require('syncho');var util=require(_0xca7c('0x1'));var moment=require(_0xca7c('0x2'));var config=require(_0xca7c('0x3'));var logger=require(_0xca7c('0x4'))(_0xca7c('0x5'));var utilLicense=require(_0xca7c('0x6'));var rpc=require(_0xca7c('0x7'));var mailRpc=require(_0xca7c('0x8'));var Graph=require(_0xca7c('0x9'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0xca7c('0x5')]=_[_0xca7c('0xa')](config[_0xca7c('0x5')],{'ip':_0xca7c('0xb'),'port':0x11dd});function connectionHandler(_0x5c14a9){process[_0xca7c('0xc')](function(){syncho(function(){try{setChannelVariables(_0x5c14a9);agiHandler(_0x5c14a9);}catch(_0xf40236){logger[_0xca7c('0xd')](_0xf40236[_0xca7c('0xe')]);}});});}function listeningHandler(){console[_0xca7c('0xf')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config[_0xca7c('0x5')][_0xca7c('0x10')]);logger[_0xca7c('0x11')](util['format'](_0xca7c('0x12'),config['agi']['ip'],config[_0xca7c('0x5')][_0xca7c('0x10')]));}function errorHandler(_0x84fff0){if(_0x84fff0&&_0x84fff0[_0xca7c('0x13')]&&_0x84fff0[_0xca7c('0x14')]){logger['error'](util[_0xca7c('0x15')]('[%s]\x20%s',_0x84fff0[_0xca7c('0x13')],_0x84fff0[_0xca7c('0x14')]));}else{logger[_0xca7c('0xd')](util[_0xca7c('0x15')]('[ERROR]\x20%s',_0x84fff0['stack']));}}function closeHandler(){logger[_0xca7c('0x11')](util[_0xca7c('0x15')](_0xca7c('0x16'),this[_0xca7c('0x17')],this[_0xca7c('0x18')],this[_0xca7c('0x19')],this[_0xca7c('0x1a')],this[_0xca7c('0x1b')]));try{createSquareReport(this);}catch(_0x46c7ef){logger[_0xca7c('0xd')](_0x46c7ef[_0xca7c('0xe')]);}}function timeoutHandler(){logger['info'](util[_0xca7c('0x15')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xca7c('0x17')],this[_0xca7c('0x18')],this[_0xca7c('0x19')],this[_0xca7c('0x1a')],this[_0xca7c('0x1b')]));}function hangupHandler(){logger[_0xca7c('0x11')](util['format'](_0xca7c('0x1c'),this[_0xca7c('0x17')],this[_0xca7c('0x18')],this[_0xca7c('0x19')],this[_0xca7c('0x1a')],this[_0xca7c('0x1b')]));this[_0xca7c('0x1d')]=!![];}function getRoot(_0xfe222){return parser[_0xca7c('0x1e')](_0xfe222,{'object':!![]})[_0xca7c('0x1f')][_0xca7c('0x20')];}function addVertex(_0x131b77,_0x117d1e,_0x49e73d){_0x117d1e['agicommand']=_0x49e73d;if(_0x117d1e[_0xca7c('0x21')](_0xca7c('0x22'))){_0x117d1e[_0xca7c('0x23')]=parseInt(_0x117d1e[_0xca7c('0x22')],0xa);}_0x131b77['addVertex'](_[_0xca7c('0x24')](_0x117d1e,_0xca7c('0x25')));}function initGraph(_0x5823b1,_0x4b7492){var _0x5e6a51=new Graph();for(var _0x23cf2e in _0x5823b1){if(_0x5823b1[_0xca7c('0x21')](_0x23cf2e)){if(_['isArray'](_0x5823b1[_0x23cf2e])){for(var _0x312ed5=0x0;_0x312ed5<_0x5823b1[_0x23cf2e][_0xca7c('0x26')];_0x312ed5+=0x1){addVertex(_0x5e6a51,_0x5823b1[_0x23cf2e][_0x312ed5],_0x23cf2e);}}else{addVertex(_0x5e6a51,_0x5823b1[_0x23cf2e],_0x23cf2e);}}}for(var _0x543cc5=0x0;_0x543cc5<_0x4b7492[_0xca7c('0x26')];_0x543cc5+=0x1){if(_0x4b7492[_0x543cc5][_0xca7c('0x27')]&&_0x4b7492[_0x543cc5][_0xca7c('0x28')]){_0x5e6a51['addEdge'](_0x4b7492[_0x543cc5][_0xca7c('0x27')],_0x4b7492[_0x543cc5][_0xca7c('0x28')],_0x4b7492[_0x543cc5]['value']);}}return _0x5e6a51;}function getSquareProject(_0x414dcc,_0x3a4e96){rpc[_0xca7c('0x29')](_0x414dcc)[_0xca7c('0x2a')](function(_0x53c321){_0x3a4e96(null,_0x53c321);})['catch'](function(_0x349f80){_0x3a4e96(null,_0x349f80);});}function createSquareReport(_0xa84d57,_0x481718){rpc[_0xca7c('0x2b')](_0xa84d57)[_0xca7c('0x2a')](function(_0x1727f2){if(_0x481718){_0x481718(null,_0x1727f2);}})[_0xca7c('0x2c')](function(_0x15607e){if(_0x481718){_0x481718(null,_0x15607e);}});}function setChannelVariables(_0x5b613c){for(var _0xdd3598 in _0x5b613c){if(_0x5b613c[_0xca7c('0x21')](_0xdd3598)){if(_0xdd3598[_0xca7c('0x2d')]('agi_')===0x0){_0x5b613c[_0xdd3598[_0xca7c('0x2e')](0x4)]=_0x5b613c[_0xdd3598];delete _0x5b613c[_0xdd3598];}}}}function getLogFromObject(_0x118455){return util[_0xca7c('0x2f')](_0x118455,{'showHidden':![],'depth':null});}function agiHandler(_0x3e21b8){var _0x2447b1,_0x31baf5,_0x4637fe,_0x3cd8c7,_0xeb5189;logger[_0xca7c('0x30')](_0xca7c('0x31'),JSON['stringify'](_0x3e21b8,null,0x2));logger[_0xca7c('0x11')](util[_0xca7c('0x15')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x3e21b8['arg_1'],_0x3e21b8[_0xca7c('0x18')],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8[_0xca7c('0x1b')]));_0x3e21b8['on']('error',errorHandler);_0x3e21b8['on']('close',closeHandler);_0x3e21b8['on'](_0xca7c('0x32'),timeoutHandler);_0x3e21b8[_0xca7c('0x1d')]=![];_0x3e21b8['on']('hangup',hangupHandler);var _0x5f59a8=getSquareProject['sync'](null,_0x3e21b8[_0xca7c('0x17')]);if(_0x5f59a8){if(_0x5f59a8[_0xca7c('0x33')]){_0x2447b1=getRoot(_0x5f59a8[_0xca7c('0x33')]);if(_0x2447b1&&_0x2447b1[_0xca7c('0x34')]){logger[_0xca7c('0x30')](_0xca7c('0x20'),JSON['stringify'](_0x2447b1,null,0x2));_0x3e21b8[_0xca7c('0x35')]=moment()[_0xca7c('0x15')]('YYYY-MM-DD\x20HH:mm:ss');_0x31baf5=initGraph(_[_0xca7c('0x24')](_0x2447b1,_0xca7c('0x25')),_0x2447b1[_0xca7c('0x25')]);_0x4637fe=new Vertices(_0x3e21b8,rpc,mailRpc);logger['info'](util['format'](_0xca7c('0x36'),_0x3e21b8[_0xca7c('0x17')],_0x3e21b8[_0xca7c('0x18')],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8['uniqueid']));_0x31baf5[_0xca7c('0x37')](_0x2447b1['start']['id'],function(_0x126faa){try{_0x126faa=_0x4637fe[_0xca7c('0x38')](_0x126faa);logger['debug'](_0xca7c('0x39'),JSON['stringify'](_0x126faa,null,0x2));if(_0x126faa[_0xca7c('0x3a')]==='gotoc'){logger['info'](_0xca7c('0x3b'));_0x3e21b8[_0xca7c('0x3c')]=_0x126faa['context']||_0x3e21b8['context'];_0x3e21b8[_0xca7c('0x3d')]=_0x126faa[_0xca7c('0x3d')];_0x3e21b8[_0xca7c('0x3e')]=_0x126faa[_0xca7c('0x3e')]?_0x126faa['priority']-0x1:0x1;return null;}else if(_0x126faa&&_0x4637fe[_0x126faa[_0xca7c('0x3a')]]){_0xeb5189=_0x4637fe[_0x126faa[_0xca7c('0x3a')]](_0x126faa);logger[_0xca7c('0x11')](_0xca7c('0x3f'),JSON[_0xca7c('0x40')](_0xeb5189,null,0x2));if(_0xeb5189&&_0xeb5189['code']===AGI_CODE_SUCCESS&&_0xeb5189[_0xca7c('0x41')]!==AGI_RESULT_ERROR&&!_0x3e21b8[_0xca7c('0x1d')]){logger[_0xca7c('0x30')]('response',getLogFromObject(_0xeb5189));return _[_0xca7c('0x42')](_0xeb5189[_0xca7c('0x41')])?null:_0xeb5189[_0xca7c('0x41')][_0xca7c('0x43')]();}else{logger[_0xca7c('0xd')](_0xca7c('0x3f'),getLogFromObject(_0xeb5189));return null;}}else{logger['error'](_0xca7c('0x44'));return null;}}catch(_0x5df2dd){logger[_0xca7c('0xd')](_0x5df2dd['stack']);return null;}});if(_0x2447b1[_0xca7c('0x45')]){logger['info'](util[_0xca7c('0x15')](_0xca7c('0x46'),_0x3e21b8[_0xca7c('0x17')],_0x3e21b8['calleridname'],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8[_0xca7c('0x1b')]));_0x31baf5[_0xca7c('0x37')](_0x2447b1[_0xca7c('0x45')]['id'],function(_0x18cd15){try{_0x18cd15=_0x4637fe[_0xca7c('0x38')](_0x18cd15);logger[_0xca7c('0x30')](_0xca7c('0x39'),JSON['stringify'](_0x18cd15,null,0x2));if(_0x18cd15&&_0x4637fe[_0x18cd15[_0xca7c('0x3a')]]){_0xeb5189=_0x4637fe[_0x18cd15[_0xca7c('0x3a')]](_0x18cd15);if(_0xeb5189){logger[_0xca7c('0x30')](_0xca7c('0x3f'),getLogFromObject(_0xeb5189));return _[_0xca7c('0x42')](_0xeb5189[_0xca7c('0x41')])?null:_0xeb5189['result'][_0xca7c('0x43')]();}else{logger[_0xca7c('0xd')](_0xca7c('0x3f'),getLogFromObject(_0xeb5189));return null;}}else{logger['error']('agicommand\x20not\x20found');return null;}}catch(_0x23d180){logger[_0xca7c('0xd')](_0x23d180['stack']);return null;}});}logger[_0xca7c('0x11')](util['format'](_0xca7c('0x47'),_0x3e21b8[_0xca7c('0x17')],_0x3e21b8[_0xca7c('0x18')],_0x3e21b8[_0xca7c('0x19')],_0x3e21b8[_0xca7c('0x1a')],_0x3e21b8[_0xca7c('0x1b')]));logger[_0xca7c('0x11')](util['format'](_0xca7c('0x48'),_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8[_0xca7c('0x3e')],0xa)+0x1));_0x3e21b8['continueAt'](_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8[_0xca7c('0x3e')],0xa)+0x1);_0x3e21b8['close']();}}else{logger[_0xca7c('0xd')](util['format'](_0xca7c('0x49'),_0x3e21b8['arg_1']));_0x3e21b8[_0xca7c('0x4a')](_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8[_0xca7c('0x3e')],0xa)+0x1);_0x3e21b8['close']();}}else{logger['error'](util[_0xca7c('0x15')](_0xca7c('0x4b'),_0x3e21b8[_0xca7c('0x17')]));_0x3e21b8[_0xca7c('0x4a')](_0x3e21b8[_0xca7c('0x3c')],_0x3e21b8[_0xca7c('0x3d')],parseInt(_0x3e21b8['priority'],0xa)+0x1);_0x3e21b8[_0xca7c('0x4c')]();}}function main(){var _0x443ebc;return utilLicense[_0xca7c('0x4d')]()[_0xca7c('0x2a')](function(_0x4fabe0){if(_0x4fabe0){if(_0x4fabe0[_0xca7c('0x4e')]){if(_0x4fabe0[_0xca7c('0x4f')]&&_0x4fabe0['callysquare']>0x0){logger[_0xca7c('0x11')](util['format'](_0xca7c('0x50'),_0x4fabe0[_0xca7c('0x4f')]));_0x443ebc=_0x4fabe0[_0xca7c('0x4f')];}else{logger['info'](_0xca7c('0x51'));}}else{logger[_0xca7c('0x11')](_0xca7c('0x52'));_0x443ebc=-0x1;}}})[_0xca7c('0x2c')](function(_0x5112ed){logger[_0xca7c('0xd')](_0xca7c('0x53'),_0x5112ed[_0xca7c('0xe')]);})[_0xca7c('0x45')](function(){var _0x19999b=require(_0xca7c('0x54'))(config[_0xca7c('0x5')][_0xca7c('0x10')],config[_0xca7c('0x5')]['ip'],_0x443ebc);_0x19999b['on'](_0xca7c('0xd'),errorHandler);_0x19999b['on'](_0xca7c('0x55'),listeningHandler);_0x19999b['on'](_0xca7c('0x56'),connectionHandler);_0x19999b['on'](_0xca7c('0x4c'),closeHandler);});}main();
\ No newline at end of file
index b32a122..297f0ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e7e=['SendMail','bluebird','jayson/promise','request','then','error','message','result','sendMailMessage'];(function(_0x1c3b65,_0x1e5afb){var _0x248e18=function(_0x5071a8){while(--_0x5071a8){_0x1c3b65['push'](_0x1c3b65['shift']());}};_0x248e18(++_0x1e5afb);}(_0x0e7e,0x10f));var _0xe0e7=function(_0x40227e,_0x2a1c52){_0x40227e=_0x40227e-0x0;var _0x419728=_0x0e7e[_0x40227e];return _0x419728;};'use strict';var BPromise=require(_0xe0e7('0x0'));var jayson=require(_0xe0e7('0x1'));var client=jayson['client']['http']({'port':0x232b});function request(_0x1863ae,_0x4a1ae8){return new BPromise(function(_0x6bf0be,_0x24a597){return client[_0xe0e7('0x2')](_0x1863ae,_0x4a1ae8)[_0xe0e7('0x3')](function(_0x4f70a4){if(_0x4f70a4[_0xe0e7('0x4')]){return _0x24a597(_0x4f70a4['error'][_0xe0e7('0x5')]);}else{return _0x6bf0be(_0x4f70a4[_0xe0e7('0x6')]);}})['catch'](function(_0x4e617){return _0x24a597(_0x4e617);});});}exports[_0xe0e7('0x7')]=function(_0x103c82,_0x5972eb){return request(_0xe0e7('0x8'),{'account':_0x103c82,'message':_0x5972eb});};
\ No newline at end of file
+var _0xd3ba=['result','catch','SendMail','bluebird','client','http','request','then','error'];(function(_0x40d411,_0x4642f1){var _0x51fd22=function(_0x1031c5){while(--_0x1031c5){_0x40d411['push'](_0x40d411['shift']());}};_0x51fd22(++_0x4642f1);}(_0xd3ba,0x93));var _0xad3b=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xd3ba[_0x465028];return _0xb783d4;};'use strict';var BPromise=require(_0xad3b('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xad3b('0x1')][_0xad3b('0x2')]({'port':0x232b});function request(_0xd06f02,_0x5425dc){return new BPromise(function(_0x102085,_0x3b29e4){return client[_0xad3b('0x3')](_0xd06f02,_0x5425dc)[_0xad3b('0x4')](function(_0x570dba){if(_0x570dba[_0xad3b('0x5')]){return _0x3b29e4(_0x570dba[_0xad3b('0x5')]['message']);}else{return _0x102085(_0x570dba[_0xad3b('0x6')]);}})[_0xad3b('0x7')](function(_0x9ed04){return _0x3b29e4(_0x9ed04);});});}exports['sendMailMessage']=function(_0x40f353,_0x3ce1a4){return request(_0xad3b('0x8'),{'account':_0x40f353,'message':_0x3ce1a4});};
\ No newline at end of file
index 5d5c7b3..2e7a1b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecb6=['substring','length','split','slice','trim','emit','line','exports','util','stream','call','_localBuffer','inherits','_transform','\x0d\x0a\x0d\x0a','toString','_inBody','indexOf'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0xecb6,0xaa));var _0x6ecb=function(_0x3f6ed6,_0x51616c){_0x3f6ed6=_0x3f6ed6-0x0;var _0x400ffb=_0xecb6[_0x3f6ed6];return _0x400ffb;};'use strict';var util=require(_0x6ecb('0x0'));var Transform=require(_0x6ecb('0x1'))['Transform'];function AGIReply(_0x20ee08){Transform[_0x6ecb('0x2')](this,_0x20ee08);this[_0x6ecb('0x3')]='';this['_inBody']=![];}util[_0x6ecb('0x4')](AGIReply,Transform);AGIReply['prototype'][_0x6ecb('0x5')]=function(_0x5b6d45,_0x35f6ec,_0x45220b){var _0x59da7a='\x0a',_0x33c244=['\x0a\x0a',_0x6ecb('0x6')],_0x837f09=-0x1,_0x40580f=-0x1,_0x3b3ce9='',_0x261cc1=0x0,_0x50b268='',_0xfe6d18='';this[_0x6ecb('0x3')]+=_0x5b6d45[_0x6ecb('0x7')]();_0x50b268=this[_0x6ecb('0x3')];if(!this[_0x6ecb('0x8')]){_0x261cc1=0x0;while(_0x33c244[_0x261cc1]){while((_0x40580f=_0x50b268[_0x6ecb('0x9')](_0x33c244[_0x261cc1]))!=-0x1){_0x3b3ce9=_0x33c244[_0x261cc1];_0xfe6d18=_0x50b268['substring'](0x0,_0x40580f);_0x50b268=_0x50b268[_0x6ecb('0xa')](_0x40580f+_0x3b3ce9[_0x6ecb('0xb')]);var _0x57e3dc=_0xfe6d18[_0x6ecb('0xc')](_0x59da7a),_0x2c19a1=0x0,_0x1a0492={},_0xe559a4='',_0x1336bc='',_0x5dc9b6=-0x1;while(_0x57e3dc[_0x2c19a1]){_0x5dc9b6=_0x57e3dc[_0x2c19a1][_0x6ecb('0x9')](':');if(_0x5dc9b6!=-0x1){_0xe559a4=_0x57e3dc[_0x2c19a1][_0x6ecb('0xd')](0x0,_0x5dc9b6)[_0x6ecb('0xe')]();_0x1336bc=_0x57e3dc[_0x2c19a1][_0x6ecb('0xd')](_0x5dc9b6+0x1)[_0x6ecb('0xe')]();if(_0xe559a4[_0x6ecb('0xb')]>0x0){_0x1a0492[_0xe559a4]=_0x1336bc;}}else{}_0x2c19a1++;}this[_0x6ecb('0xf')]('headers',_0x1a0492);this['_inBody']=!![];}_0x261cc1++;}this[_0x6ecb('0x3')]=_0x50b268;}else{while((_0x837f09=_0x50b268['indexOf'](_0x59da7a))!=-0x1){_0xfe6d18=_0x50b268[_0x6ecb('0xa')](0x0,_0x837f09);this[_0x6ecb('0xf')](_0x6ecb('0x10'),_0xfe6d18);_0x50b268=_0x50b268[_0x6ecb('0xa')](_0x837f09+_0x59da7a[_0x6ecb('0xb')]);}this[_0x6ecb('0x3')]=_0x50b268;}_0x45220b();};module[_0x6ecb('0x11')]=AGIReply;
\ No newline at end of file
+var _0xb522=['toString','_inBody','substring','length','split','indexOf','trim','slice','headers','emit','line','exports','util','stream','Transform','_localBuffer','inherits','_transform','\x0d\x0a\x0d\x0a'];(function(_0x168038,_0x552d34){var _0x226594=function(_0x515602){while(--_0x515602){_0x168038['push'](_0x168038['shift']());}};_0x226594(++_0x552d34);}(_0xb522,0x188));var _0x2b52=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb522[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0x2b52('0x0'));var Transform=require(_0x2b52('0x1'))[_0x2b52('0x2')];function AGIReply(_0x351077){Transform['call'](this,_0x351077);this[_0x2b52('0x3')]='';this['_inBody']=![];}util[_0x2b52('0x4')](AGIReply,Transform);AGIReply['prototype'][_0x2b52('0x5')]=function(_0x520b7b,_0x3039cc,_0x29f858){var _0x22704d='\x0a',_0x31755e=['\x0a\x0a',_0x2b52('0x6')],_0x1f3a94=-0x1,_0x5bf044=-0x1,_0x38b06d='',_0xf44e9b=0x0,_0x3e41ea='',_0x3ed7e3='';this[_0x2b52('0x3')]+=_0x520b7b[_0x2b52('0x7')]();_0x3e41ea=this['_localBuffer'];if(!this[_0x2b52('0x8')]){_0xf44e9b=0x0;while(_0x31755e[_0xf44e9b]){while((_0x5bf044=_0x3e41ea['indexOf'](_0x31755e[_0xf44e9b]))!=-0x1){_0x38b06d=_0x31755e[_0xf44e9b];_0x3ed7e3=_0x3e41ea['substring'](0x0,_0x5bf044);_0x3e41ea=_0x3e41ea[_0x2b52('0x9')](_0x5bf044+_0x38b06d[_0x2b52('0xa')]);var _0x54c638=_0x3ed7e3[_0x2b52('0xb')](_0x22704d),_0x47b179=0x0,_0x5a02df={},_0x1ff160='',_0x59d7f1='',_0x4d7680=-0x1;while(_0x54c638[_0x47b179]){_0x4d7680=_0x54c638[_0x47b179][_0x2b52('0xc')](':');if(_0x4d7680!=-0x1){_0x1ff160=_0x54c638[_0x47b179]['slice'](0x0,_0x4d7680)[_0x2b52('0xd')]();_0x59d7f1=_0x54c638[_0x47b179][_0x2b52('0xe')](_0x4d7680+0x1)[_0x2b52('0xd')]();if(_0x1ff160[_0x2b52('0xa')]>0x0){_0x5a02df[_0x1ff160]=_0x59d7f1;}}else{}_0x47b179++;}this['emit'](_0x2b52('0xf'),_0x5a02df);this[_0x2b52('0x8')]=!![];}_0xf44e9b++;}this['_localBuffer']=_0x3e41ea;}else{while((_0x1f3a94=_0x3e41ea['indexOf'](_0x22704d))!=-0x1){_0x3ed7e3=_0x3e41ea[_0x2b52('0x9')](0x0,_0x1f3a94);this[_0x2b52('0x10')](_0x2b52('0x11'),_0x3ed7e3);_0x3e41ea=_0x3e41ea['substring'](_0x1f3a94+_0x22704d[_0x2b52('0xa')]);}this[_0x2b52('0x3')]=_0x3e41ea;}_0x29f858();};module[_0x2b52('0x12')]=AGIReply;
\ No newline at end of file
index 4290b8f..163f8a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf432=['ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSquareDetailsReport','CreateSquareDetailsReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','phone','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','agentLogout','moment','lodash','jayson/promise','client','http','request','then','error','message','catch','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','name','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser','getTrunkById','getSoundById'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf432,0x17a));var _0x2f43=function(_0x5d815b,_0x4c422d){_0x5d815b=_0x5d815b-0x0;var _0x5440a9=_0xf432[_0x5d815b];return _0x5440a9;};'use strict';var BPromise=require('bluebird');var moment=require(_0x2f43('0x0'));var _=require(_0x2f43('0x1'));var util=require('util');var jayson=require(_0x2f43('0x2'));var client=jayson[_0x2f43('0x3')][_0x2f43('0x4')]({'port':0x2329});function request(_0x1733e7,_0x1b39ab){return new BPromise(function(_0x1ed2be,_0x8ce475){return client[_0x2f43('0x5')](_0x1733e7,_0x1b39ab)[_0x2f43('0x6')](function(_0x36d714){if(_0x36d714[_0x2f43('0x7')]){return _0x8ce475(_0x36d714[_0x2f43('0x7')][_0x2f43('0x8')]);}else{return _0x1ed2be(_0x36d714['result']);}})[_0x2f43('0x9')](function(_0x3fe0f7){return _0x8ce475(_0x3fe0f7);});});}exports[_0x2f43('0xa')]=function(_0x2e6efe){return request(_0x2f43('0xb'),{'options':{'raw':![],'where':{'name':_0x2e6efe},'attributes':['production']}});};exports[_0x2f43('0xc')]=function(_0x159129){return request(_0x2f43('0xd'),{'options':{'raw':![],'where':{'id':_0x159129},'include':[{'model':_0x2f43('0xe'),'as':_0x2f43('0xf')}],'attributes':['id',_0x2f43('0x10'),_0x2f43('0x11')]}});};exports[_0x2f43('0x12')]=function(_0x1f1944){return request(_0x2f43('0xb'),{'options':{'where':{'id':_0x1f1944},'attributes':[_0x2f43('0x10')]}});};exports[_0x2f43('0x13')]=function(_0x42928b){return request(_0x2f43('0x14'),{'options':{'where':{'id':_0x42928b},'attributes':['name']}});};exports['getVariableById']=function(_0xb712f7){return request('ShowVariable',{'options':{'where':{'id':_0xb712f7},'attributes':[_0x2f43('0x10')]}});};exports[_0x2f43('0x15')]=function(_0x236cde){return request(_0x2f43('0x16'),{'options':{'where':{'id':_0x236cde},'attributes':[_0x2f43('0x17')]}});};exports[_0x2f43('0x18')]=function(_0x2301e0){return request(_0x2f43('0x19'),{'options':{'where':{'id':_0x2301e0},'attributes':[_0x2f43('0x10')]}});};exports[_0x2f43('0x1a')]=function(_0x1e9560){return request('ShowTrunk',{'options':{'where':{'id':_0x1e9560},'attributes':[_0x2f43('0x10')]}});};exports[_0x2f43('0x1b')]=function(_0x1e2a05){return request(_0x2f43('0x1c'),{'options':{'where':{'id':_0x1e2a05},'attributes':[_0x2f43('0x1d')]}});};exports[_0x2f43('0x1e')]=function(_0x16fd75){return request(_0x2f43('0x1f'),{'options':{'raw':![],'where':{'id':_0x16fd75},'include':[{'model':_0x2f43('0x20'),'as':_0x2f43('0x21')}]}});};exports[_0x2f43('0x22')]=function(_0x285507){return request(_0x2f43('0x23'),{'options':{'where':{'id':_0x285507},'attributes':['id','name']}});};exports['createSmsMessage']=function(_0x26e2cd){return request('CreateSmsMessage',{'body':_0x26e2cd});};exports[_0x2f43('0x24')]=function(_0x4735ed){return request(_0x2f43('0x25'),{'body':_0x4735ed});};exports['createSquareReport']=function(_0xe0b88){return request('CreateSquareReport',{'body':_[_0x2f43('0x26')](_0xe0b88,{'project_name':_0xe0b88[_0x2f43('0x27')],'prev_project_name':_0xe0b88[_0x2f43('0x28')]||'','is_subproject':_0xe0b88[_0x2f43('0x28')]?!![]:![],'leaveAt':moment()[_0x2f43('0x29')](_0x2f43('0x2a'))})});};exports['createSquareRecording']=function(_0x3e2c34){return request(_0x2f43('0x2b'),{'body':_0x3e2c34});};exports[_0x2f43('0x2c')]=function(_0x443ac6){return request(_0x2f43('0x2d'),{'body':_0x443ac6});};exports[_0x2f43('0x2e')]=function(_0x46e5cc){return request(_0x2f43('0x2f'),{'options':{'raw':![],'where':{'phone':_0x46e5cc[_0x2f43('0x30')],'ListId':_0x46e5cc['ListId']}}})[_0x2f43('0x6')](function(_0x3d11f5){if(_0x3d11f5){return _0x3d11f5;}return request(_0x2f43('0x31'),{'body':_0x46e5cc});});};exports[_0x2f43('0x32')]=function(_0xbbb031){return request(_0x2f43('0x33'),{'options':{'where':{'id':_0xbbb031},'attributes':[_0x2f43('0x10')]}});};exports[_0x2f43('0x34')]=function(_0x9d5173,_0xd3682e){return request(_0x2f43('0x35'),{'body':{'interface':_0xd3682e},'options':{'where':_0x9d5173}});};exports[_0x2f43('0x36')]=function(_0x40870c,_0x57f6c4,_0x5909f7){return request(_0x2f43('0x37'),{'body':{'type':_0x57f6c4,'uniqueid':_0x5909f7},'options':{'where':_0x40870c}});};exports[_0x2f43('0x38')]=function(_0xa1e646){return request('UnpauseUser',{'body':{},'options':{'where':_0xa1e646}});};exports[_0x2f43('0x39')]=function(_0x44b9ea){return request('LogoutUser',{'body':{},'options':{'where':_0x44b9ea}});};
\ No newline at end of file
+var _0xe60f=['Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','CreateSquareRecording','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','agentPause','agentUnpause','UnpauseUser','agentLogout','moment','util','then','error','message','result','catch','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','getSquareProjectById','name','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','getTrunkById','ShowTrunk','getSoundById','save_name','getIntervalById','ShowInterval'];(function(_0x1efc8c,_0x46e5ef){var _0x2f2ace=function(_0x1623a4){while(--_0x1623a4){_0x1efc8c['push'](_0x1efc8c['shift']());}};_0x2f2ace(++_0x46e5ef);}(_0xe60f,0xb3));var _0xfe60=function(_0x29c9c8,_0x4f6e6a){_0x29c9c8=_0x29c9c8-0x0;var _0x4c653e=_0xe60f[_0x29c9c8];return _0x4c653e;};'use strict';var BPromise=require('bluebird');var moment=require(_0xfe60('0x0'));var _=require('lodash');var util=require(_0xfe60('0x1'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x2329});function request(_0x187044,_0x57e97f){return new BPromise(function(_0x3cdaeb,_0x576e34){return client['request'](_0x187044,_0x57e97f)[_0xfe60('0x2')](function(_0x4a4d27){if(_0x4a4d27[_0xfe60('0x3')]){return _0x576e34(_0x4a4d27[_0xfe60('0x3')][_0xfe60('0x4')]);}else{return _0x3cdaeb(_0x4a4d27[_0xfe60('0x5')]);}})[_0xfe60('0x6')](function(_0x255cac){return _0x576e34(_0x255cac);});});}exports[_0xfe60('0x7')]=function(_0x10acdf){return request(_0xfe60('0x8'),{'options':{'raw':![],'where':{'name':_0x10acdf},'attributes':['production']}});};exports[_0xfe60('0x9')]=function(_0x3f3c6c){return request(_0xfe60('0xa'),{'options':{'raw':![],'where':{'id':_0x3f3c6c},'include':[{'model':_0xfe60('0xb'),'as':_0xfe60('0xc')}],'attributes':['id','name','email']}});};exports[_0xfe60('0xd')]=function(_0x530da1){return request(_0xfe60('0x8'),{'options':{'where':{'id':_0x530da1},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0xf')]=function(_0x35c420){return request(_0xfe60('0x10'),{'options':{'where':{'id':_0x35c420},'attributes':['name']}});};exports[_0xfe60('0x11')]=function(_0xe5997){return request(_0xfe60('0x12'),{'options':{'where':{'id':_0xe5997},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x13')]=function(_0x3af329){return request(_0xfe60('0x14'),{'options':{'where':{'id':_0x3af329},'attributes':[_0xfe60('0x15')]}});};exports[_0xfe60('0x16')]=function(_0x4e5404){return request('ShowUser',{'options':{'where':{'id':_0x4e5404},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x17')]=function(_0x390404){return request(_0xfe60('0x18'),{'options':{'where':{'id':_0x390404},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x19')]=function(_0x142008){return request('ShowSound',{'options':{'where':{'id':_0x142008},'attributes':[_0xfe60('0x1a')]}});};exports[_0xfe60('0x1b')]=function(_0x223642){return request(_0xfe60('0x1c'),{'options':{'raw':![],'where':{'id':_0x223642},'include':[{'model':'Interval','as':_0xfe60('0x1d')}]}});};exports[_0xfe60('0x1e')]=function(_0x29c1a3){return request(_0xfe60('0x1f'),{'options':{'where':{'id':_0x29c1a3},'attributes':['id',_0xfe60('0xe')]}});};exports[_0xfe60('0x20')]=function(_0x4c7e4d){return request(_0xfe60('0x21'),{'body':_0x4c7e4d});};exports['createSquareDetailsReport']=function(_0x4bd595){return request(_0xfe60('0x22'),{'body':_0x4bd595});};exports['createSquareReport']=function(_0x11c324){return request(_0xfe60('0x23'),{'body':_[_0xfe60('0x24')](_0x11c324,{'project_name':_0x11c324[_0xfe60('0x25')],'prev_project_name':_0x11c324[_0xfe60('0x26')]||'','is_subproject':_0x11c324[_0xfe60('0x26')]?!![]:![],'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x2cc80f){return request(_0xfe60('0x27'),{'body':_0x2cc80f});};exports['createSquareMessage']=function(_0x5818c0){return request('CreateSquareMessage',{'body':_0x5818c0});};exports[_0xfe60('0x28')]=function(_0x26bc75){return request(_0xfe60('0x29'),{'options':{'raw':![],'where':{'phone':_0x26bc75[_0xfe60('0x2a')],'ListId':_0x26bc75[_0xfe60('0x2b')]}}})[_0xfe60('0x2')](function(_0x165cef){if(_0x165cef){return _0x165cef;}return request(_0xfe60('0x2c'),{'body':_0x26bc75});});};exports[_0xfe60('0x2d')]=function(_0xef5ec6){return request(_0xfe60('0x2e'),{'options':{'where':{'id':_0xef5ec6},'attributes':[_0xfe60('0xe')]}});};exports[_0xfe60('0x2f')]=function(_0x410c21,_0x55591a){return request('LoginUser',{'body':{'interface':_0x55591a},'options':{'where':_0x410c21}});};exports[_0xfe60('0x30')]=function(_0xacd9ef,_0x1297bf,_0x497cf5){return request('PauseUser',{'body':{'type':_0x1297bf,'uniqueid':_0x497cf5},'options':{'where':_0xacd9ef}});};exports[_0xfe60('0x31')]=function(_0x3b373f){return request(_0xfe60('0x32'),{'body':{},'options':{'where':_0x3b373f}});};exports[_0xfe60('0x33')]=function(_0x3dc7c5){return request('LogoutUser',{'body':{},'options':{'where':_0x3dc7c5}});};
\ No newline at end of file
index 4ffbebd..82cc3f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd206=['./lex','./polly'];(function(_0x482372,_0x40f56b){var _0x55fbea=function(_0x43d38d){while(--_0x43d38d){_0x482372['push'](_0x482372['shift']());}};_0x55fbea(++_0x40f56b);}(_0xd206,0x107));var _0x6d20=function(_0x45b034,_0x3a57dd){_0x45b034=_0x45b034-0x0;var _0x509cb0=_0xd206[_0x45b034];return _0x509cb0;};var polly=require(_0x6d20('0x0'));var lex=require(_0x6d20('0x1'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x00b3=['exports','./polly','./lex'];(function(_0x3ecf3b,_0x12c1b6){var _0x123171=function(_0x364b93){while(--_0x364b93){_0x3ecf3b['push'](_0x3ecf3b['shift']());}};_0x123171(++_0x12c1b6);}(_0x00b3,0x157));var _0x300b=function(_0x241e77,_0x40ce34){_0x241e77=_0x241e77-0x0;var _0x1fcbd8=_0x00b3[_0x241e77];return _0x1fcbd8;};var polly=require(_0x300b('0x0'));var lex=require(_0x300b('0x1'));module[_0x300b('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index b862111..4ff20f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9354=['exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9354,0x96));var _0x4935=function(_0x177cc9,_0x3f6fdd){_0x177cc9=_0x177cc9-0x0;var _0x2fe577=_0x9354[_0x177cc9];return _0x2fe577;};'use strict';var lex=require('./lib/api');module[_0x4935('0x0')]=function(_0xc3c1f3,_0x4896da,_0x263dd5,_0x2a4993,_0x29d1eb,_0x280bbc){return lex(_0xc3c1f3,_0x4896da,_0x263dd5,_0x2a4993,_0x29d1eb,_0x280bbc);};
\ No newline at end of file
+var _0x5ff3=['exports'];(function(_0x57f217,_0x26961d){var _0x58e576=function(_0x1e33f1){while(--_0x1e33f1){_0x57f217['push'](_0x57f217['shift']());}};_0x58e576(++_0x26961d);}(_0x5ff3,0x17d));var _0x35ff=function(_0x41670c,_0x4cec14){_0x41670c=_0x41670c-0x0;var _0x5ebac1=_0x5ff3[_0x41670c];return _0x5ebac1;};'use strict';var lex=require('./lib/api');module[_0x35ff('0x0')]=function(_0x48cbf7,_0x1763a,_0x47c98d,_0x380f54,_0x1bb200,_0x3bd66a){return lex(_0x48cbf7,_0x1763a,_0x47c98d,_0x380f54,_0x1bb200,_0x3bd66a);};
\ No newline at end of file
index f29390e..0f9bdd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x18e12b,_0x2a9ca5){var _0x38e780=function(_0x307b11){while(--_0x307b11){_0x18e12b['push'](_0x18e12b['shift']());}};_0x38e780(++_0x2a9ca5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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(_0x2be463,_0x3c2ba0){var _0x1ff123=function(_0x19624e){while(--_0x19624e){_0x2be463['push'](_0x2be463['shift']());}};_0x1ff123(++_0x3c2ba0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x36dfbd,_0x5bfe2d){_0x36dfbd=_0x36dfbd-0x0;var _0x4ecad9=_0xa9e0[_0x36dfbd];return _0x4ecad9;};'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 75f1941..45a7524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85f8=['exports','./lib/api'];(function(_0x4e371d,_0x3b7447){var _0x4e6be3=function(_0x3a7331){while(--_0x3a7331){_0x4e371d['push'](_0x4e371d['shift']());}};_0x4e6be3(++_0x3b7447);}(_0x85f8,0x11f));var _0x885f=function(_0x4a861a,_0x2f4b27){_0x4a861a=_0x4a861a-0x0;var _0x2133ce=_0x85f8[_0x4a861a];return _0x2133ce;};'use strict';var polly=require(_0x885f('0x0'));module[_0x885f('0x1')]=function(_0x14a717,_0x184fc7,_0x13ee04,_0x49e6e0,_0xc06172,_0x9efc3e,_0x224881){return polly(_0x14a717,_0x184fc7,_0x13ee04,_0x49e6e0,_0xc06172,_0x9efc3e,_0x224881);};
\ No newline at end of file
+var _0x5db3=['./lib/api','exports'];(function(_0x114c1c,_0x5bfd6d){var _0x50a0a6=function(_0x4f97f0){while(--_0x4f97f0){_0x114c1c['push'](_0x114c1c['shift']());}};_0x50a0a6(++_0x5bfd6d);}(_0x5db3,0xe8));var _0x35db=function(_0x3a607e,_0x54d530){_0x3a607e=_0x3a607e-0x0;var _0x37b106=_0x5db3[_0x3a607e];return _0x37b106;};'use strict';var polly=require(_0x35db('0x0'));module[_0x35db('0x1')]=function(_0x364c44,_0xb2efac,_0x2662f3,_0x57dd75,_0x1a3d64,_0x243916,_0x14b008){return polly(_0x364c44,_0xb2efac,_0x2662f3,_0x57dd75,_0x1a3d64,_0x243916,_0x14b008);};
\ No newline at end of file
index d0fbb50..91c235a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x671d=['Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile'];(function(_0x33032e,_0x31411a){var _0x13316b=function(_0x2fb049){while(--_0x2fb049){_0x33032e['push'](_0x33032e['shift']());}};_0x13316b(++_0x31411a);}(_0x671d,0x155));var _0xd671=function(_0x2dd849,_0x3bd1bf){_0x2dd849=_0x2dd849-0x0;var _0x38ba4e=_0x671d[_0x2dd849];return _0x38ba4e;};'use strict';var fs=require('fs');var path=require(_0xd671('0x0'));var BPromise=require(_0xd671('0x1'));var rs=require(_0xd671('0x2'));var AWS=require(_0xd671('0x3'));function pollyResult(_0x2f6b53,_0x4378c3,_0x4c63bb){return new BPromise(function(_0x2822a0,_0x2bd49b){_0x2f6b53[_0xd671('0x4')](_0x4378c3,function(_0x477df9,_0x1998af){if(_0x477df9){_0x2bd49b(_0x477df9);}else if(_0x1998af){if(_0x1998af[_0xd671('0x5')]instanceof Buffer){fs[_0xd671('0x6')](_0x4c63bb,_0x1998af['AudioStream'],function(_0x934c11){if(_0x934c11){_0x2bd49b(_0x934c11);}else{_0x2822a0();}});}else{_0x2bd49b(new Error(_0xd671('0x7')));}}else{_0x2bd49b(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xd671('0x8')]=function(_0x5801c3,_0x134989,_0x305eb9,_0x2189f3,_0x320a70,_0x25bc4d,_0x55a788){var _0x22740a=new AWS[(_0xd671('0x9'))]({'accessKeyId':_0x5801c3,'secretAccessKey':_0x134989,'region':_0x305eb9});var _0x30999c={'Text':_0x320a70,'TextType':_0x25bc4d||_0xd671('0xa'),'OutputFormat':_0xd671('0xb'),'VoiceId':_0x2189f3};return pollyResult(_0x22740a,_0x30999c,_0x55a788);};
\ No newline at end of file
+var _0x3c6e=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','synthesizeSpeech'];(function(_0x81176b,_0x114b6b){var _0x162d4e=function(_0x581110){while(--_0x581110){_0x81176b['push'](_0x81176b['shift']());}};_0x162d4e(++_0x114b6b);}(_0x3c6e,0xa7));var _0xe3c6=function(_0x3261f5,_0x5745b7){_0x3261f5=_0x3261f5-0x0;var _0x149001=_0x3c6e[_0x3261f5];return _0x149001;};'use strict';var fs=require('fs');var path=require(_0xe3c6('0x0'));var BPromise=require(_0xe3c6('0x1'));var rs=require('randomstring');var AWS=require('aws-sdk');function pollyResult(_0x4c57a5,_0x14292e,_0x3bdafa){return new BPromise(function(_0x56dd0e,_0x269b1a){_0x4c57a5[_0xe3c6('0x2')](_0x14292e,function(_0x40d06d,_0x2e391a){if(_0x40d06d){_0x269b1a(_0x40d06d);}else if(_0x2e391a){if(_0x2e391a[_0xe3c6('0x3')]instanceof Buffer){fs[_0xe3c6('0x4')](_0x3bdafa,_0x2e391a[_0xe3c6('0x3')],function(_0x5edaaf){if(_0x5edaaf){_0x269b1a(_0x5edaaf);}else{_0x56dd0e();}});}else{_0x269b1a(new Error(_0xe3c6('0x5')));}}else{_0x269b1a(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0xe3c6('0x6')]=function(_0x559e5b,_0x3e5073,_0x274228,_0x3d99d4,_0x4ceb74,_0x58f9bf,_0x14350a){var _0x56ad2e=new AWS[(_0xe3c6('0x7'))]({'accessKeyId':_0x559e5b,'secretAccessKey':_0x3e5073,'region':_0x274228});var _0x4f9f7b={'Text':_0x4ceb74,'TextType':_0x58f9bf||_0xe3c6('0x8'),'OutputFormat':_0xe3c6('0x9'),'VoiceId':_0x3d99d4};return pollyResult(_0x56ad2e,_0x4f9f7b,_0x14350a);};
\ No newline at end of file
index d2eceac..46e8819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ba=['./lib/api'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x34ba,0x19e));var _0xa34b=function(_0x44774c,_0x28dcf6){_0x44774c=_0x44774c-0x0;var _0x27a337=_0x34ba[_0x44774c];return _0x27a337;};'use strict';var asr=require(_0xa34b('0x0'));module['exports']=function(_0x14d217,_0xb8bfed,_0x10c356,_0x4a445a){return asr(_0x14d217,_0xb8bfed,_0x10c356);};
\ No newline at end of file
+var _0xc3ad=['./lib/api'];(function(_0x5cb48d,_0x28866e){var _0x3249ca=function(_0x361eae){while(--_0x361eae){_0x5cb48d['push'](_0x5cb48d['shift']());}};_0x3249ca(++_0x28866e);}(_0xc3ad,0x13a));var _0xdc3a=function(_0x3a5bf3,_0x3c388e){_0x3a5bf3=_0x3a5bf3-0x0;var _0x2b8d6a=_0xc3ad[_0x3a5bf3];return _0x2b8d6a;};'use strict';var asr=require(_0xdc3a('0x0'));module['exports']=function(_0x523da0,_0x24e156,_0x1f1276,_0x343ad4){return asr(_0x523da0,_0x24e156,_0x1f1276);};
\ No newline at end of file
index 689b55e..7eec0ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9a=['POST','8000','bluebird','exports','length','filepath\x20should\x20be\x20a\x20string','string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x0a9a,0x183));var _0xa0a9=function(_0x75eda6,_0x2f71ac){_0x75eda6=_0x75eda6-0x0;var _0x4fa022=_0x0a9a[_0x75eda6];return _0x4fa022;};'use strict';var url=require('url');var BPromise=require(_0xa0a9('0x0'));var fs=require('fs');var host='https://speech.googleapis.com';module[_0xa0a9('0x1')]=function(_0x3cff22,_0x34801b,_0x49162f){return new BPromise(function(_0x4ba993,_0x317a94){var _0x360be5;if(typeof _0x3cff22!=='string'||_0x3cff22[_0xa0a9('0x2')]===0x0){return _0x317a94(_0xa0a9('0x3'));}if(typeof _0x34801b!==_0xa0a9('0x4')||_0x34801b[_0xa0a9('0x2')]===0x0){return _0x317a94('key\x20should\x20be\x20a\x20string');}if(typeof _0x49162f!==_0xa0a9('0x5')&&(typeof _0x49162f!=='string'||_0x49162f[_0xa0a9('0x2')]===0x0)){return _0x317a94(_0xa0a9('0x6'));}try{_0x360be5=fs[_0xa0a9('0x7')](_0x3cff22)[_0xa0a9('0x8')]('base64');}catch(_0x2ba0ac){return _0x317a94(_0x2ba0ac);}return _0x4ba993({'method':_0xa0a9('0x9'),'uri':host+'/v1/speech:recognize?key='+_0x34801b,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':_0xa0a9('0xa'),'languageCode':_0x49162f},'audio':{'content':_0x360be5}},'json':!![]});});};
\ No newline at end of file
+var _0x48ea=['url','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','/v1/speech:recognize?key='];(function(_0x1c8e2d,_0x1c1dc0){var _0x47496a=function(_0x3f4883){while(--_0x3f4883){_0x1c8e2d['push'](_0x1c8e2d['shift']());}};_0x47496a(++_0x1c1dc0);}(_0x48ea,0x9c));var _0xa48e=function(_0x387a7c,_0x442229){_0x387a7c=_0x387a7c-0x0;var _0xa89304=_0x48ea[_0x387a7c];return _0xa89304;};'use strict';var url=require(_0xa48e('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host=_0xa48e('0x1');module[_0xa48e('0x2')]=function(_0x108dac,_0x492009,_0x480d3c){return new BPromise(function(_0x86a544,_0x5c7354){var _0x1da836;if(typeof _0x108dac!==_0xa48e('0x3')||_0x108dac[_0xa48e('0x4')]===0x0){return _0x5c7354(_0xa48e('0x5'));}if(typeof _0x492009!==_0xa48e('0x3')||_0x492009[_0xa48e('0x4')]===0x0){return _0x5c7354(_0xa48e('0x6'));}if(typeof _0x480d3c!==_0xa48e('0x7')&&(typeof _0x480d3c!==_0xa48e('0x3')||_0x480d3c[_0xa48e('0x4')]===0x0)){return _0x5c7354(_0xa48e('0x8'));}try{_0x1da836=fs[_0xa48e('0x9')](_0x108dac)[_0xa48e('0xa')](_0xa48e('0xb'));}catch(_0xf9436a){return _0x5c7354(_0xf9436a);}return _0x86a544({'method':'POST','uri':host+_0xa48e('0xc')+_0x492009,'body':{'config':{'encoding':'LINEAR16','sampleRateHertz':'8000','languageCode':_0x480d3c},'audio':{'content':_0x1da836}},'json':!![]});});};
\ No newline at end of file
index 2b982e6..ed0b905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc41=['exports','./asr'];(function(_0x1f57e7,_0x31455f){var _0xc38613=function(_0x3a13dc){while(--_0x3a13dc){_0x1f57e7['push'](_0x1f57e7['shift']());}};_0xc38613(++_0x31455f);}(_0xcc41,0x1ef));var _0x1cc4=function(_0x2e5405,_0x42ec09){_0x2e5405=_0x2e5405-0x0;var _0x2f0270=_0xcc41[_0x2e5405];return _0x2f0270;};var asr=require(_0x1cc4('0x0'));module[_0x1cc4('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x1580=['./asr'];(function(_0x4f0e62,_0x28e44f){var _0x117ab8=function(_0x1a74bb){while(--_0x1a74bb){_0x4f0e62['push'](_0x4f0e62['shift']());}};_0x117ab8(++_0x28e44f);}(_0x1580,0x9d));var _0x0158=function(_0x5997c2,_0x23e397){_0x5997c2=_0x5997c2-0x0;var _0x5318f9=_0x1580[_0x5997c2];return _0x5318f9;};var asr=require(_0x0158('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 6961b22..4bb9df4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b91=['./tilde','../../../config/logger','agi','protocol','https:','host','path','WHAT_EVER','error','request\x20to\x20','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','finish\x20download\x20file','close','unlink','download\x20error','end','get','data','transcode','wav','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','.wav','writeFileSync','then','chmodSync','777','readFileSync','?key=','input','voice','audioConfig','MP3','text:synthesize','.mp3','from','writeFile','googleCloudTTS\x20path','split','googleTTS','utf8','POST','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','lang\x20\x22','googleASR','asr','results','map','alternatives','transcript','confidence','join','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','textRequest','result','source','resolvedQuery','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','action','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsLex','lex','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','model=%s','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','request-promise','randomstring','sox','google-tts-api','url','parse','./aws','./google','./sestek'];(function(_0x2861bb,_0x43826b){var _0x204145=function(_0xaf0730){while(--_0xaf0730){_0x2861bb['push'](_0x2861bb['shift']());}};_0x204145(++_0x43826b);}(_0x8b91,0x102));var _0x18b9=function(_0x15c168,_0x637939){_0x15c168=_0x15c168-0x0;var _0x217d1e=_0x8b91[_0x15c168];return _0x217d1e;};'use strict';var apiai=require(_0x18b9('0x0'));var BPromise=require(_0x18b9('0x1'));var dialogflow=require(_0x18b9('0x2'));var fs=require('fs');var http=require(_0x18b9('0x3'));var https=require('https');var md5=require(_0x18b9('0x4'));var path=require('path');var querystring=require('querystring');var rp=require(_0x18b9('0x5'));var rs=require(_0x18b9('0x6'));var sox=require(_0x18b9('0x7'));var tts=require(_0x18b9('0x8'));var urlParse=require(_0x18b9('0x9'))[_0x18b9('0xa')];var util=require('util');var aws=require(_0x18b9('0xb'));var google=require(_0x18b9('0xc'));var sestek=require(_0x18b9('0xd'));var tilde=require(_0x18b9('0xe'));var logger=require(_0x18b9('0xf'))(_0x18b9('0x10'));var ISPEECH_API='https://api.ispeech.org/api/rest';function downloadFile(_0x2e48d4,_0x1a930c){return new BPromise(function(_0x4eddec,_0x433da6){var _0xab7793=urlParse(_0x2e48d4);var _0x5433d7=_0xab7793[_0x18b9('0x11')]===_0x18b9('0x12')?https:http;var _0x58de05={'host':_0xab7793[_0x18b9('0x13')],'path':_0xab7793[_0x18b9('0x14')],'headers':{'user-agent':_0x18b9('0x15')}};_0x5433d7['get'](_0x58de05,function(_0x132adf){if(_0x132adf['statusCode']!==0xc8){logger[_0x18b9('0x16')](_0x18b9('0x17')+_0x2e48d4+'\x20failed,\x20status\x20code\x20=\x20'+_0x132adf[_0x18b9('0x18')]+'\x20('+_0x132adf[_0x18b9('0x19')]+')');_0x433da6(new Error('request\x20to\x20'+_0x2e48d4+_0x18b9('0x1a')+_0x132adf['statusCode']+'\x20('+_0x132adf['statusMessage']+')'));return;}var _0x533673=fs[_0x18b9('0x1b')](_0x1a930c);_0x533673['on'](_0x18b9('0x1c'),function(){logger['info'](_0x18b9('0x1d'));_0x533673[_0x18b9('0x1e')](_0x4eddec);});_0x533673['on'](_0x18b9('0x16'),function(_0x3abe2d){fs[_0x18b9('0x1f')](_0x1a930c);logger[_0x18b9('0x16')](_0x18b9('0x20'),_0x3abe2d);_0x433da6(_0x3abe2d);});_0x132adf['pipe'](_0x533673);})['on'](_0x18b9('0x16'),function(_0x37daad){logger[_0x18b9('0x16')](_0x37daad);_0x433da6(_0x37daad);})[_0x18b9('0x21')]();});}function uploadFile(_0x335e7d){return new BPromise(function(_0x3eed4c,_0x4eb8e1){var _0x3db9b7=urlParse(_0x335e7d);var _0x4b41f5=_0x3db9b7[_0x18b9('0x11')]===_0x18b9('0x12')?https:http;var _0x42198a={'host':_0x3db9b7['host'],'path':_0x3db9b7[_0x18b9('0x14')],'headers':{'user-agent':'WHAT_EVER'}};_0x4b41f5[_0x18b9('0x22')](_0x42198a,function(_0x4a71c6){if(_0x4a71c6[_0x18b9('0x18')]!==0xc8){_0x4eb8e1(new Error(_0x18b9('0x17')+_0x335e7d+'\x20failed,\x20status\x20code\x20=\x20'+_0x4a71c6['statusCode']+'\x20('+_0x4a71c6[_0x18b9('0x19')]+')'));return;}var _0x185153='';_0x4a71c6['on'](_0x18b9('0x23'),function(_0x5d97d2){_0x185153+=_0x5d97d2;});_0x4a71c6['on'](_0x18b9('0x21'),function(){_0x3eed4c(_0x185153);});})['on'](_0x18b9('0x16'),function(_0x3fbbdb){_0x4eb8e1(_0x3fbbdb);})[_0x18b9('0x21')]();});}function convertFile(_0xc5b0fb,_0x38c727){return new BPromise(function(_0x33e083,_0x55ef2e){var _0x1df63f=sox[_0x18b9('0x24')](_0xc5b0fb,_0x38c727,{'sampleRate':0x1f40,'format':_0x18b9('0x25'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1df63f['on'](_0x18b9('0x16'),function(_0x29fbe5){logger[_0x18b9('0x16')](_0x18b9('0x26'),_0x29fbe5);_0x55ef2e(_0x29fbe5);});_0x1df63f['on'](_0x18b9('0x21'),function(){logger[_0x18b9('0x27')](_0x18b9('0x28'));_0x33e083();});_0x1df63f[_0x18b9('0x29')]();});}function base64Decode(_0x32a979,_0x201f34){var _0x3aa0b0=path[_0x18b9('0x2a')](__dirname,_0x18b9('0x2b'),rs[_0x18b9('0x2c')](0x4)+_0x18b9('0x2d'));fs[_0x18b9('0x2e')](_0x3aa0b0,_0x32a979,'base64');return convertFile(_0x3aa0b0,_0x201f34)[_0x18b9('0x2f')](function(){try{fs['unlink'](_0x3aa0b0);fs[_0x18b9('0x30')](_0x201f34,_0x18b9('0x31'));}catch(_0x1750ab){logger['error'](_0x1750ab);}return _0x201f34['split']('.')[0x0];});}function base64Encode(_0x497371){var _0x9bf70c=fs[_0x18b9('0x32')](_0x497371);return new Buffer(_0x9bf70c)['toString']('base64');}exports['googleCloudTTS']=function(_0x51f495,_0x34c009,_0x4f9146,_0x75367c,_0x5875a6,_0x1e0310){var _0xec894d,_0x5d1ff3;var _0x4eb76d='https://texttospeech.googleapis.com/v1/';var _0x1864a3=_0x18b9('0x33')+_0x51f495;var _0x4af0e0={};if(_0x34c009==='ssml'){_0x4af0e0[_0x18b9('0x34')]={'ssml':_0x4f9146};}else{_0x4af0e0[_0x18b9('0x34')]={'text':_0x4f9146};};_0x4af0e0[_0x18b9('0x35')]={'languageCode':_0x75367c,'ssmlGender':_0x5875a6};_0x4af0e0[_0x18b9('0x36')]={'audioEncoding':_0x18b9('0x37'),'sampleRateHertz':0x1f40};var _0x10d195={'url':_0x4eb76d+_0x18b9('0x38')+_0x1864a3,'method':'POST','json':!![],'body':_0x4af0e0};return rp(_0x10d195)[_0x18b9('0x2f')](function(_0x554156){return new BPromise(function(_0x4e0684,_0x289ffd){_0xec894d=path['resolve'](__dirname,'tmp',rs[_0x18b9('0x2c')](0x4)+_0x18b9('0x39'));var _0x50a6d8=Buffer[_0x18b9('0x3a')](_0x554156['audioContent'],'base64');return fs[_0x18b9('0x3b')](_0xec894d,_0x50a6d8,function(_0x11cd51){_0x289ffd(_0x11cd51);},function(_0x4645c8){fs['chmodSync'](_0xec894d,_0x18b9('0x31'));_0x4e0684(_0x4645c8);});});})['then'](function(_0x11d327){_0x5d1ff3=path[_0x18b9('0x2a')](__dirname,_0x18b9('0x2b'),rs[_0x18b9('0x2c')](0x4)+_0x18b9('0x2d'));return convertFile(_0xec894d,_0x5d1ff3);})[_0x18b9('0x2f')](function(){try{fs[_0x18b9('0x1f')](_0xec894d);fs['chmodSync'](_0x5d1ff3,'777');}catch(_0x164cf5){logger['error'](_0x164cf5);}logger[_0x18b9('0x27')](_0x18b9('0x3c'),_0x5d1ff3[_0x18b9('0x3d')]('.')[0x0]);return _0x5d1ff3[_0x18b9('0x3d')]('.')[0x0];});};exports[_0x18b9('0x3e')]=function(_0x21e7e0,_0x294e56){var _0x2aeb35='https://translate.google.com/_/TranslateWebserverUi/data/batchexecute';var _0x5656b3,_0x247512;var _0x47ed7e;var _0x4a7951={'encoding':_0x18b9('0x3f'),'method':_0x18b9('0x40'),'timeout':0x2710,'url':_0x2aeb35,'headers':{'Content-Type':_0x18b9('0x41')},'body':_0x18b9('0x42')+encodeURIComponent(JSON[_0x18b9('0x43')]([[[_0x18b9('0x44'),JSON[_0x18b9('0x43')]([_0x21e7e0,_0x294e56||'en',![],_0x18b9('0x45')]),null,'generic']]]))};return rp(_0x4a7951)['then'](function(_0x4b5249){try{_0x47ed7e=eval(_0x4b5249['slice'](0x5))[0x0][0x2];}catch(_0x463b14){throw new Error('parse\x20response\x20failed:\x0a'+_0x4b5249[_0x18b9('0x23')]);}if(!_0x47ed7e){if(_0x21e7e0['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x18b9('0x46')+_0x294e56+'\x22\x20might\x20not\x20exist');}}try{_0x47ed7e=eval(_0x47ed7e)[0x0];}catch(_0x2e2a8f){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x18b9('0x23')]);}const _0x117072=_0x47ed7e;_0x5656b3=path['resolve'](__dirname,'tmp',rs['generate'](0x4)+_0x18b9('0x39'));fs[_0x18b9('0x2e')](_0x5656b3,_0x47ed7e,{'encoding':'base64'});_0x247512=path[_0x18b9('0x2a')](__dirname,_0x18b9('0x2b'),rs['generate'](0x4)+_0x18b9('0x2d'));return convertFile(_0x5656b3,_0x247512);})['then'](function(){try{fs[_0x18b9('0x1f')](_0x5656b3);fs[_0x18b9('0x30')](_0x247512,_0x18b9('0x31'));}catch(_0x38e12b){logger[_0x18b9('0x16')](_0x38e12b);}logger[_0x18b9('0x27')]('goggleTTS\x20path',_0x247512[_0x18b9('0x3d')]('.')[0x0]);return _0x247512[_0x18b9('0x3d')]('.')[0x0];});};exports[_0x18b9('0x47')]=function(_0x42876b,_0x2b614b,_0x834bce){return google[_0x18b9('0x48')](_0x42876b,_0x2b614b,_0x834bce)['then'](function(_0x1e003c){logger[_0x18b9('0x27')](_0x1e003c['uri']);return rp(_0x1e003c);})['then'](function(_0x2ec069){var _0x3ddd8f='';var _0x427a39=0x0;try{fs[_0x18b9('0x1f')](_0x42876b);}catch(_0x5a96d0){logger[_0x18b9('0x16')](_0x5a96d0);}if(_0x2ec069&&_0x2ec069['results']){_0x3ddd8f=_0x2ec069[_0x18b9('0x49')][_0x18b9('0x4a')](function(_0x1a9834){return _0x1a9834&&_0x1a9834[_0x18b9('0x4b')][0x0]&&_0x1a9834[_0x18b9('0x4b')][0x0][_0x18b9('0x4c')]?_0x1a9834[_0x18b9('0x4b')][0x0][_0x18b9('0x4c')]:'';})['join']('\x0a');_0x427a39=_0x2ec069[_0x18b9('0x49')][_0x18b9('0x4a')](function(_0x1cfe18){return _0x1cfe18&&_0x1cfe18[_0x18b9('0x4b')][0x0]&&_0x1cfe18[_0x18b9('0x4b')][0x0][_0x18b9('0x4d')]?_0x1cfe18['alternatives'][0x0][_0x18b9('0x4d')]:0x0;})[_0x18b9('0x4e')]('\x0a');}logger[_0x18b9('0x27')](_0x18b9('0x4f'),_0x3ddd8f);logger[_0x18b9('0x27')]('googleASR\x20confidence',_0x427a39);return{'transcript':_0x3ddd8f,'confidence':_0x427a39};})[_0x18b9('0x50')](function(_0x1f7296){logger[_0x18b9('0x16')](_0x18b9('0x51'),_0x1f7296['statusCode'],_0x1f7296[_0x18b9('0x52')],_0x1f7296[_0x18b9('0x53')]);});};exports['googleDialogflow']=function(_0x5d63ba,_0x167f5a,_0x507642,_0x432cd6){var _0x13aa84=apiai(_0x167f5a,{'language':_0x432cd6||'en'});return _0x13aa84[_0x18b9('0x54')](_0x507642,{'sessionId':md5(_0x5d63ba)})[_0x18b9('0x2f')](function(_0x4f2f40){logger['info'](JSON['stringify'](_0x4f2f40));return{'source':_0x4f2f40[_0x18b9('0x55')][_0x18b9('0x56')],'resolvedQuery':_0x4f2f40[_0x18b9('0x55')][_0x18b9('0x57')],'action':_0x4f2f40[_0x18b9('0x55')]['action'],'actionIncomplete':_0x4f2f40[_0x18b9('0x55')][_0x18b9('0x58')],'speech':_0x4f2f40['result'][_0x18b9('0x59')][_0x18b9('0x5a')],'score':_0x4f2f40[_0x18b9('0x55')][_0x18b9('0x5b')],'statusCode':_0x4f2f40[_0x18b9('0x5c')]['code'],'endConversation':_0x4f2f40[_0x18b9('0x55')][_0x18b9('0x5d')][_0x18b9('0x5e')]||![],'isFallbackIntent':_0x4f2f40[_0x18b9('0x55')][_0x18b9('0x5d')]['isFallbackIntent']};});};exports[_0x18b9('0x5f')]=function(_0x4ed600,_0x5f016e,_0x4bdd6d,_0x1feafb,_0x27aa57,_0x587cb6){var _0x74ca=_0x1feafb[_0x18b9('0x60')](/\\n/g,'\x0a');var _0xccf58f={'credentials':{'private_key':_0x74ca,'client_email':_0x4bdd6d}};var _0x2b45f3=new dialogflow[(_0x18b9('0x61'))](_0xccf58f);var _0x5cca14=_0x2b45f3[_0x18b9('0x62')](_0x5f016e,md5(_0x4ed600));var _0x1bbc1e={'session':_0x5cca14,'queryInput':{'text':{'text':_0x27aa57,'languageCode':_0x587cb6}}};return _0x2b45f3[_0x18b9('0x63')](_0x1bbc1e)[_0x18b9('0x2f')](function(_0x15903d){if(_0x15903d&&_0x15903d[_0x18b9('0x64')]){logger[_0x18b9('0x27')](_0x18b9('0x65'),JSON[_0x18b9('0x43')](_0x15903d));var _0x58f2c7=_0x15903d[0x0];if(_0x58f2c7){var _0x36d928={'action':_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x67')],'allRequiredParamsPresent':_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x68')],'endConversation':_0x58f2c7[_0x18b9('0x66')]['diagnosticInfo']&&_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x69')][_0x18b9('0x6a')]?_0x58f2c7['queryResult']['diagnosticInfo'][_0x18b9('0x6a')][_0x18b9('0x6b')][_0x18b9('0x6c')]:![],'fulfillmentText':_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x6d')],'intentName':_0x58f2c7[_0x18b9('0x66')]['intent'][_0x18b9('0x52')],'intentDisplayName':_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x6e')][_0x18b9('0x6f')],'isFallbackIntent':_0x58f2c7[_0x18b9('0x66')]['intent'][_0x18b9('0x70')],'languageCode':_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x71')],'queryText':_0x58f2c7[_0x18b9('0x66')][_0x18b9('0x72')],'responseId':_0x58f2c7[_0x18b9('0x73')],'score':_0x58f2c7['queryResult'][_0x18b9('0x74')],'speech':_0x58f2c7['queryResult']['fulfillmentText'],'providerResponse':JSON[_0x18b9('0x43')](_0x15903d)};return _0x36d928;}}});};exports['tildeASR']=function(_0x426128,_0x505738,_0x539958,_0x234015){return tilde[_0x18b9('0x48')](_0x426128,_0x505738,_0x539958,_0x234015)['then'](function(_0x246dac){try{fs[_0x18b9('0x1f')](_0x426128);}catch(_0x26d6a3){logger[_0x18b9('0x16')](_0x26d6a3);}logger[_0x18b9('0x27')](_0x18b9('0x75'),_0x246dac[_0x18b9('0x4c')]);logger['info'](_0x18b9('0x76'),_0x246dac[_0x18b9('0x4d')]);return _0x246dac;});};exports['awsPolly']=function(_0x54235c,_0x3c9ca6,_0x4586a0,_0x2bd46d,_0x4ee1fb,_0x3a1102){var _0x4efc8e=path['resolve'](__dirname,_0x18b9('0x2b'),rs['generate'](0x4)+_0x18b9('0x39'));var _0x2cac07;return aws['polly'](_0x54235c,_0x3c9ca6,_0x4586a0,_0x2bd46d,_0x4ee1fb,_0x3a1102,_0x4efc8e)[_0x18b9('0x2f')](function(){_0x2cac07=path['resolve'](__dirname,_0x18b9('0x2b'),rs['generate'](0x4)+_0x18b9('0x2d'));return convertFile(_0x4efc8e,_0x2cac07);})[_0x18b9('0x2f')](function(){try{fs[_0x18b9('0x1f')](_0x4efc8e);fs[_0x18b9('0x30')](_0x2cac07,_0x18b9('0x31'));}catch(_0x515547){logger['error'](_0x515547);}return _0x2cac07[_0x18b9('0x3d')]('.')[0x0];});};exports[_0x18b9('0x77')]=function(_0x1e6f28,_0x4fef1d,_0x55d8a3,_0x483473,_0x4b427c,_0x5d7885){return aws[_0x18b9('0x78')](_0x1e6f28,_0x4fef1d,_0x55d8a3,_0x483473,_0x4b427c,_0x5d7885)['then'](function(_0x13b8d0){logger['info'](JSON[_0x18b9('0x43')](_0x13b8d0));return _0x13b8d0;});};exports['ispeechTTS']=function(_0x437049,_0x4f2cf7,_0x229fe3,_0x33737d){var _0x5e4e89=util[_0x18b9('0x79')](_0x18b9('0x7a'),ISPEECH_API,_0x437049,encodeURIComponent(_0x4f2cf7),_0x229fe3,_0x33737d);var _0xb589cf=path[_0x18b9('0x2a')](__dirname,_0x18b9('0x2b'),rs['generate'](0x4)+'.mp3');var _0x3d32c5;return downloadFile(_0x5e4e89,_0xb589cf)['then'](function(){_0x3d32c5=path[_0x18b9('0x2a')](__dirname,_0x18b9('0x2b'),rs[_0x18b9('0x2c')](0x4)+'.wav');return convertFile(_0xb589cf,_0x3d32c5);})['then'](function(){try{fs[_0x18b9('0x1f')](_0xb589cf);fs[_0x18b9('0x30')](_0x3d32c5,_0x18b9('0x31'));}catch(_0x5f19e1){logger[_0x18b9('0x16')](_0x5f19e1);}return _0x3d32c5['split']('.')[0x0];});};exports[_0x18b9('0x7b')]=function(_0x149d21,_0x917e08,_0x575c26,_0x31510f){var _0x14f2cf=util[_0x18b9('0x79')](_0x18b9('0x7c'),ISPEECH_API,_0x917e08,_0x575c26,base64Encode(_0x149d21),_0x31510f?util[_0x18b9('0x79')](_0x18b9('0x7d'),encodeURIComponent(_0x31510f)):'freeform=3');return uploadFile(_0x14f2cf)['then'](function(_0x55ba6f){return querystring[_0x18b9('0xa')](_0x55ba6f);});};exports[_0x18b9('0x7e')]=function(_0x36a323,_0x3c079a){return sestek[_0x18b9('0x7f')](_0x36a323,_0x3c079a)[_0x18b9('0x2f')](function(_0x72453a){logger['info'](JSON[_0x18b9('0x43')](_0x72453a));var _0x2c7b09={'speech':_0x72453a[_0x18b9('0x80')],'action':_0x72453a[_0x18b9('0x81')]?_0x72453a[_0x18b9('0x81')][_0x18b9('0x82')]:undefined,'actiondata':_0x72453a[_0x18b9('0x81')]?_0x72453a[_0x18b9('0x81')][_0x18b9('0x83')]:undefined};if(_0x72453a[_0x18b9('0x81')]&&_0x72453a[_0x18b9('0x81')][_0x18b9('0x84')]){return base64Decode(_0x72453a['channelData'][_0x18b9('0x84')][_0x18b9('0x85')],path[_0x18b9('0x2a')](__dirname,_0x18b9('0x2b'),rs[_0x18b9('0x2c')](0x4)+_0x18b9('0x2d')))[_0x18b9('0x2f')](function(_0x17a8c5){_0x2c7b09[_0x18b9('0x86')]=_0x17a8c5;return _0x2c7b09;});}return _0x2c7b09;});};exports[_0x18b9('0x87')]=function(){return __dirname;};
\ No newline at end of file
+var _0x11b7=['start','generate','.wav','writeFileSync','base64','then','777','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','tmp','.mp3','from','audioContent','writeFile','resolve','chmodSync','info','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','null','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','googleASR','uri','results','alternatives','transcript','join','map','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','action','speech','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','SessionsClient','detectIntent','Dialogflow\x20V2\x20response:','allRequiredParamsPresent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','%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','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','dialogflow','md5','path','sox','google-tts-api','util','./aws','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','unlink','download\x20error','data','end','transcode','wav','error\x20convert','finish\x20to\x20convert'];(function(_0x2e7637,_0x51ed05){var _0xace948=function(_0x121a56){while(--_0x121a56){_0x2e7637['push'](_0x2e7637['shift']());}};_0xace948(++_0x51ed05);}(_0x11b7,0xea));var _0x711b=function(_0x15a0fe,_0x1ff601){_0x15a0fe=_0x15a0fe-0x0;var _0x830aa6=_0x11b7[_0x15a0fe];return _0x830aa6;};'use strict';var apiai=require('apiai-promise');var BPromise=require('bluebird');var dialogflow=require(_0x711b('0x0'));var fs=require('fs');var http=require('http');var https=require('https');var md5=require(_0x711b('0x1'));var path=require(_0x711b('0x2'));var querystring=require('querystring');var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0x711b('0x3'));var tts=require(_0x711b('0x4'));var urlParse=require('url')['parse'];var util=require(_0x711b('0x5'));var aws=require(_0x711b('0x6'));var google=require(_0x711b('0x7'));var sestek=require('./sestek');var tilde=require(_0x711b('0x8'));var logger=require(_0x711b('0x9'))(_0x711b('0xa'));var ISPEECH_API=_0x711b('0xb');function downloadFile(_0x205da2,_0x100a0f){return new BPromise(function(_0x2c9b98,_0x3b6790){var _0x1d31a3=urlParse(_0x205da2);var _0x9f9c84=_0x1d31a3[_0x711b('0xc')]===_0x711b('0xd')?https:http;var _0x5e5545={'host':_0x1d31a3[_0x711b('0xe')],'path':_0x1d31a3[_0x711b('0x2')],'headers':{'user-agent':_0x711b('0xf')}};_0x9f9c84[_0x711b('0x10')](_0x5e5545,function(_0x486571){if(_0x486571[_0x711b('0x11')]!==0xc8){logger[_0x711b('0x12')](_0x711b('0x13')+_0x205da2+_0x711b('0x14')+_0x486571[_0x711b('0x11')]+'\x20('+_0x486571[_0x711b('0x15')]+')');_0x3b6790(new Error('request\x20to\x20'+_0x205da2+_0x711b('0x14')+_0x486571[_0x711b('0x11')]+'\x20('+_0x486571[_0x711b('0x15')]+')'));return;}var _0x3e01fb=fs['createWriteStream'](_0x100a0f);_0x3e01fb['on']('finish',function(){logger['info']('finish\x20download\x20file');_0x3e01fb['close'](_0x2c9b98);});_0x3e01fb['on']('error',function(_0x2351ee){fs[_0x711b('0x16')](_0x100a0f);logger[_0x711b('0x12')](_0x711b('0x17'),_0x2351ee);_0x3b6790(_0x2351ee);});_0x486571['pipe'](_0x3e01fb);})['on']('error',function(_0x5809b9){logger['error'](_0x5809b9);_0x3b6790(_0x5809b9);})['end']();});}function uploadFile(_0x3095c3){return new BPromise(function(_0x52e485,_0x774206){var _0x3b8231=urlParse(_0x3095c3);var _0x364761=_0x3b8231['protocol']===_0x711b('0xd')?https:http;var _0x4e0e8b={'host':_0x3b8231['host'],'path':_0x3b8231[_0x711b('0x2')],'headers':{'user-agent':_0x711b('0xf')}};_0x364761[_0x711b('0x10')](_0x4e0e8b,function(_0x9daa4b){if(_0x9daa4b[_0x711b('0x11')]!==0xc8){_0x774206(new Error(_0x711b('0x13')+_0x3095c3+_0x711b('0x14')+_0x9daa4b[_0x711b('0x11')]+'\x20('+_0x9daa4b[_0x711b('0x15')]+')'));return;}var _0x1f5d8f='';_0x9daa4b['on'](_0x711b('0x18'),function(_0x296a07){_0x1f5d8f+=_0x296a07;});_0x9daa4b['on'](_0x711b('0x19'),function(){_0x52e485(_0x1f5d8f);});})['on'](_0x711b('0x12'),function(_0x8bf4f1){_0x774206(_0x8bf4f1);})[_0x711b('0x19')]();});}function convertFile(_0x2978ad,_0x3c73e3){return new BPromise(function(_0x8b3f40,_0x3731ea){var _0x3847fb=sox[_0x711b('0x1a')](_0x2978ad,_0x3c73e3,{'sampleRate':0x1f40,'format':_0x711b('0x1b'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3847fb['on']('error',function(_0x52c443){logger['error'](_0x711b('0x1c'),_0x52c443);_0x3731ea(_0x52c443);});_0x3847fb['on']('end',function(){logger['info'](_0x711b('0x1d'));_0x8b3f40();});_0x3847fb[_0x711b('0x1e')]();});}function base64Decode(_0x2cb238,_0x51ceff){var _0x572669=path['resolve'](__dirname,'tmp',rs[_0x711b('0x1f')](0x4)+_0x711b('0x20'));fs[_0x711b('0x21')](_0x572669,_0x2cb238,_0x711b('0x22'));return convertFile(_0x572669,_0x51ceff)[_0x711b('0x23')](function(){try{fs['unlink'](_0x572669);fs['chmodSync'](_0x51ceff,_0x711b('0x24'));}catch(_0x541435){logger['error'](_0x541435);}return _0x51ceff['split']('.')[0x0];});}function base64Encode(_0x16ec0a){var _0x70b5dd=fs[_0x711b('0x25')](_0x16ec0a);return new Buffer(_0x70b5dd)['toString'](_0x711b('0x22'));}exports[_0x711b('0x26')]=function(_0x400afc,_0x21a63f,_0x56da9c,_0x44c49a,_0x48770f,_0x1aa3c9){var _0x4be1c1,_0x5423c1;var _0x4781d3=_0x711b('0x27');var _0x1305a2=_0x711b('0x28')+_0x400afc;var _0x414c7e={};if(_0x21a63f===_0x711b('0x29')){_0x414c7e[_0x711b('0x2a')]={'ssml':_0x56da9c};}else{_0x414c7e[_0x711b('0x2a')]={'text':_0x56da9c};};_0x414c7e[_0x711b('0x2b')]={'languageCode':_0x44c49a,'ssmlGender':_0x48770f};_0x414c7e[_0x711b('0x2c')]={'audioEncoding':_0x711b('0x2d'),'sampleRateHertz':0x1f40};var _0x2b0066={'url':_0x4781d3+_0x711b('0x2e')+_0x1305a2,'method':_0x711b('0x2f'),'json':!![],'body':_0x414c7e};return rp(_0x2b0066)[_0x711b('0x23')](function(_0x2a9dc6){return new BPromise(function(_0x1ba9e7,_0x3e76f0){_0x4be1c1=path['resolve'](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x31'));var _0x3f88f3=Buffer[_0x711b('0x32')](_0x2a9dc6[_0x711b('0x33')],'base64');return fs[_0x711b('0x34')](_0x4be1c1,_0x3f88f3,function(_0x2e9445){_0x3e76f0(_0x2e9445);},function(_0x444001){fs['chmodSync'](_0x4be1c1,_0x711b('0x24'));_0x1ba9e7(_0x444001);});});})[_0x711b('0x23')](function(_0x5775db){_0x5423c1=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+'.wav');return convertFile(_0x4be1c1,_0x5423c1);})[_0x711b('0x23')](function(){try{fs[_0x711b('0x16')](_0x4be1c1);fs[_0x711b('0x36')](_0x5423c1,_0x711b('0x24'));}catch(_0x594903){logger[_0x711b('0x12')](_0x594903);}logger[_0x711b('0x37')](_0x711b('0x38'),_0x5423c1[_0x711b('0x39')]('.')[0x0]);return _0x5423c1[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x3a')]=function(_0x1ed6a1,_0x1fd4dd){var _0x276874=_0x711b('0x3b');var _0x19b19a,_0x13d377;var _0x2bbdea;var _0x5d31d0={'encoding':'utf8','method':_0x711b('0x2f'),'timeout':0x2710,'url':_0x276874,'headers':{'Content-Type':_0x711b('0x3c')},'body':_0x711b('0x3d')+encodeURIComponent(JSON[_0x711b('0x3e')]([[['jQ1olc',JSON[_0x711b('0x3e')]([_0x1ed6a1,_0x1fd4dd||'en',![],_0x711b('0x3f')]),null,'generic']]]))};return rp(_0x5d31d0)[_0x711b('0x23')](function(_0x2c12f6){try{_0x2bbdea=eval(_0x2c12f6[_0x711b('0x40')](0x5))[0x0][0x2];}catch(_0x6c8f46){throw new Error(_0x711b('0x41')+_0x2c12f6['data']);}if(!_0x2bbdea){if(_0x1ed6a1[_0x711b('0x42')]>0xc8){throw new Error(_0x711b('0x43'));}else{throw new Error('lang\x20\x22'+_0x1fd4dd+'\x22\x20might\x20not\x20exist');}}try{_0x2bbdea=eval(_0x2bbdea)[0x0];}catch(_0x401112){throw new Error('parse\x20response\x20failed:\x0a'+res['data']);}const _0x1e6e73=_0x2bbdea;_0x19b19a=path['resolve'](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x31'));fs[_0x711b('0x21')](_0x19b19a,_0x2bbdea,{'encoding':_0x711b('0x22')});_0x13d377=path[_0x711b('0x35')](__dirname,'tmp',rs[_0x711b('0x1f')](0x4)+'.wav');return convertFile(_0x19b19a,_0x13d377);})['then'](function(){try{fs[_0x711b('0x16')](_0x19b19a);fs[_0x711b('0x36')](_0x13d377,_0x711b('0x24'));}catch(_0xba69c4){logger[_0x711b('0x12')](_0xba69c4);}logger[_0x711b('0x37')]('goggleTTS\x20path',_0x13d377[_0x711b('0x39')]('.')[0x0]);return _0x13d377[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x44')]=function(_0xfe33fc,_0x364674,_0x57f91f){return google['asr'](_0xfe33fc,_0x364674,_0x57f91f)[_0x711b('0x23')](function(_0x249451){logger['info'](_0x249451[_0x711b('0x45')]);return rp(_0x249451);})[_0x711b('0x23')](function(_0x430134){var _0x36d08f='';var _0x554a42=0x0;try{fs[_0x711b('0x16')](_0xfe33fc);}catch(_0x576c1c){logger[_0x711b('0x12')](_0x576c1c);}if(_0x430134&&_0x430134[_0x711b('0x46')]){_0x36d08f=_0x430134['results']['map'](function(_0x310f1c){return _0x310f1c&&_0x310f1c[_0x711b('0x47')][0x0]&&_0x310f1c[_0x711b('0x47')][0x0][_0x711b('0x48')]?_0x310f1c[_0x711b('0x47')][0x0][_0x711b('0x48')]:'';})[_0x711b('0x49')]('\x0a');_0x554a42=_0x430134[_0x711b('0x46')][_0x711b('0x4a')](function(_0x4455f8){return _0x4455f8&&_0x4455f8[_0x711b('0x47')][0x0]&&_0x4455f8[_0x711b('0x47')][0x0][_0x711b('0x4b')]?_0x4455f8[_0x711b('0x47')][0x0]['confidence']:0x0;})[_0x711b('0x49')]('\x0a');}logger['info'](_0x711b('0x4c'),_0x36d08f);logger['info'](_0x711b('0x4d'),_0x554a42);return{'transcript':_0x36d08f,'confidence':_0x554a42};})[_0x711b('0x4e')](function(_0xc3345e){logger[_0x711b('0x12')](_0x711b('0x4f'),_0xc3345e[_0x711b('0x11')],_0xc3345e[_0x711b('0x50')],_0xc3345e[_0x711b('0x51')]);});};exports[_0x711b('0x52')]=function(_0x60d5b6,_0x380ced,_0x4cc104,_0x1769f0){var _0x35afd4=apiai(_0x380ced,{'language':_0x1769f0||'en'});return _0x35afd4[_0x711b('0x53')](_0x4cc104,{'sessionId':md5(_0x60d5b6)})[_0x711b('0x23')](function(_0x550b06){logger[_0x711b('0x37')](JSON[_0x711b('0x3e')](_0x550b06));return{'source':_0x550b06[_0x711b('0x54')][_0x711b('0x55')],'resolvedQuery':_0x550b06[_0x711b('0x54')]['resolvedQuery'],'action':_0x550b06['result'][_0x711b('0x56')],'actionIncomplete':_0x550b06[_0x711b('0x54')]['actionIncomplete'],'speech':_0x550b06[_0x711b('0x54')]['fulfillment'][_0x711b('0x57')],'score':_0x550b06[_0x711b('0x54')]['score'],'statusCode':_0x550b06[_0x711b('0x58')][_0x711b('0x59')],'endConversation':_0x550b06[_0x711b('0x54')][_0x711b('0x5a')][_0x711b('0x5b')]||![],'isFallbackIntent':_0x550b06[_0x711b('0x54')][_0x711b('0x5a')][_0x711b('0x5c')]};});};exports[_0x711b('0x5d')]=function(_0x3bd895,_0x392c7b,_0x24b610,_0x14d413,_0x365253,_0x3975e3){var _0x3e133a=_0x14d413['replace'](/\\n/g,'\x0a');var _0x36f832={'credentials':{'private_key':_0x3e133a,'client_email':_0x24b610}};var _0x56237d=new dialogflow[(_0x711b('0x5e'))](_0x36f832);var _0x7fd693=_0x56237d['sessionPath'](_0x392c7b,md5(_0x3bd895));var _0x1b265b={'session':_0x7fd693,'queryInput':{'text':{'text':_0x365253,'languageCode':_0x3975e3}}};return _0x56237d[_0x711b('0x5f')](_0x1b265b)['then'](function(_0x57647b){if(_0x57647b&&_0x57647b['length']){logger[_0x711b('0x37')](_0x711b('0x60'),JSON[_0x711b('0x3e')](_0x57647b));var _0x4a97b1=_0x57647b[0x0];if(_0x4a97b1){var _0x580e8c={'action':_0x4a97b1['queryResult'][_0x711b('0x56')],'allRequiredParamsPresent':_0x4a97b1['queryResult'][_0x711b('0x61')],'endConversation':_0x4a97b1[_0x711b('0x62')][_0x711b('0x63')]&&_0x4a97b1[_0x711b('0x62')][_0x711b('0x63')][_0x711b('0x64')]?_0x4a97b1[_0x711b('0x62')][_0x711b('0x63')][_0x711b('0x64')][_0x711b('0x65')][_0x711b('0x66')]:![],'fulfillmentText':_0x4a97b1[_0x711b('0x62')][_0x711b('0x67')],'intentName':_0x4a97b1['queryResult']['intent'][_0x711b('0x50')],'intentDisplayName':_0x4a97b1['queryResult']['intent'][_0x711b('0x68')],'isFallbackIntent':_0x4a97b1[_0x711b('0x62')]['intent'][_0x711b('0x69')],'languageCode':_0x4a97b1[_0x711b('0x62')][_0x711b('0x6a')],'queryText':_0x4a97b1[_0x711b('0x62')][_0x711b('0x6b')],'responseId':_0x4a97b1[_0x711b('0x6c')],'score':_0x4a97b1[_0x711b('0x62')][_0x711b('0x6d')],'speech':_0x4a97b1[_0x711b('0x62')][_0x711b('0x67')],'providerResponse':JSON[_0x711b('0x3e')](_0x57647b)};return _0x580e8c;}}});};exports[_0x711b('0x6e')]=function(_0x13f4cd,_0x3ceea4,_0x322261,_0x5a1dc6){return tilde['asr'](_0x13f4cd,_0x3ceea4,_0x322261,_0x5a1dc6)[_0x711b('0x23')](function(_0x2a3cf6){try{fs['unlink'](_0x13f4cd);}catch(_0x577963){logger[_0x711b('0x12')](_0x577963);}logger[_0x711b('0x37')](_0x711b('0x6f'),_0x2a3cf6[_0x711b('0x48')]);logger[_0x711b('0x37')](_0x711b('0x70'),_0x2a3cf6['confidence']);return _0x2a3cf6;});};exports[_0x711b('0x71')]=function(_0x4e850e,_0x195e87,_0x5442bc,_0x1e805f,_0x37773e,_0x27a105){var _0xb61f91=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x31'));var _0x2d66be;return aws[_0x711b('0x72')](_0x4e850e,_0x195e87,_0x5442bc,_0x1e805f,_0x37773e,_0x27a105,_0xb61f91)[_0x711b('0x23')](function(){_0x2d66be=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs[_0x711b('0x1f')](0x4)+_0x711b('0x20'));return convertFile(_0xb61f91,_0x2d66be);})[_0x711b('0x23')](function(){try{fs[_0x711b('0x16')](_0xb61f91);fs['chmodSync'](_0x2d66be,'777');}catch(_0x32d1b9){logger[_0x711b('0x12')](_0x32d1b9);}return _0x2d66be[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x73')]=function(_0x3e264c,_0x92eb8,_0x1ac921,_0x2aa64d,_0x1d7dda,_0x328404){return aws[_0x711b('0x74')](_0x3e264c,_0x92eb8,_0x1ac921,_0x2aa64d,_0x1d7dda,_0x328404)[_0x711b('0x23')](function(_0x325425){logger[_0x711b('0x37')](JSON[_0x711b('0x3e')](_0x325425));return _0x325425;});};exports['ispeechTTS']=function(_0x4782cd,_0x1e7b16,_0xe8a9a6,_0x3b6007){var _0x186e4c=util['format'](_0x711b('0x75'),ISPEECH_API,_0x4782cd,encodeURIComponent(_0x1e7b16),_0xe8a9a6,_0x3b6007);var _0x529148=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs['generate'](0x4)+'.mp3');var _0x469610;return downloadFile(_0x186e4c,_0x529148)[_0x711b('0x23')](function(){_0x469610=path[_0x711b('0x35')](__dirname,_0x711b('0x30'),rs['generate'](0x4)+_0x711b('0x20'));return convertFile(_0x529148,_0x469610);})[_0x711b('0x23')](function(){try{fs[_0x711b('0x16')](_0x529148);fs[_0x711b('0x36')](_0x469610,_0x711b('0x24'));}catch(_0x4ae5bb){logger[_0x711b('0x12')](_0x4ae5bb);}return _0x469610[_0x711b('0x39')]('.')[0x0];});};exports[_0x711b('0x76')]=function(_0x6ebf5a,_0x36454b,_0x5e1266,_0x3c66b){var _0x6ccef3=util[_0x711b('0x77')](_0x711b('0x78'),ISPEECH_API,_0x36454b,_0x5e1266,base64Encode(_0x6ebf5a),_0x3c66b?util[_0x711b('0x77')](_0x711b('0x79'),encodeURIComponent(_0x3c66b)):_0x711b('0x7a'));return uploadFile(_0x6ccef3)[_0x711b('0x23')](function(_0x57b8aa){return querystring['parse'](_0x57b8aa);});};exports[_0x711b('0x7b')]=function(_0x5dd9cf,_0x104847){return sestek['nda'](_0x5dd9cf,_0x104847)[_0x711b('0x23')](function(_0xc8cac8){logger['info'](JSON[_0x711b('0x3e')](_0xc8cac8));var _0x1ac6e5={'speech':_0xc8cac8[_0x711b('0x7c')],'action':_0xc8cac8['channelData']?_0xc8cac8[_0x711b('0x7d')][_0x711b('0x7e')]:undefined,'actiondata':_0xc8cac8['channelData']?_0xc8cac8[_0x711b('0x7d')][_0x711b('0x7f')]:undefined};if(_0xc8cac8[_0x711b('0x7d')]&&_0xc8cac8[_0x711b('0x7d')]['AudioFromTts']){return base64Decode(_0xc8cac8['channelData'][_0x711b('0x80')][_0x711b('0x81')],path['resolve'](__dirname,_0x711b('0x30'),rs['generate'](0x4)+_0x711b('0x20')))[_0x711b('0x23')](function(_0x3e458a){_0x1ac6e5[_0x711b('0x82')]=_0x3e458a;return _0x1ac6e5;});}return _0x1ac6e5;});};exports[_0x711b('0x83')]=function(){return __dirname;};
\ No newline at end of file
index 295fe04..cce38b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4c2=['exports','./nda'];(function(_0x19d57e,_0x47c3ed){var _0x355c60=function(_0x9a130f){while(--_0x9a130f){_0x19d57e['push'](_0x19d57e['shift']());}};_0x355c60(++_0x47c3ed);}(_0xd4c2,0x15d));var _0x2d4c=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0xd4c2[_0x4a53d];return _0x27410e;};var nda=require(_0x2d4c('0x0'));module[_0x2d4c('0x1')]={'nda':nda};
\ No newline at end of file
+var _0xb323=['exports'];(function(_0x36f364,_0x52948d){var _0x5e707e=function(_0xf17993){while(--_0xf17993){_0x36f364['push'](_0x36f364['shift']());}};_0x5e707e(++_0x52948d);}(_0xb323,0xb6));var _0x3b32=function(_0x39e932,_0x23d413){_0x39e932=_0x39e932-0x0;var _0x413ea3=_0xb323[_0x39e932];return _0x413ea3;};var nda=require('./nda');module[_0x3b32('0x0')]={'nda':nda};
\ No newline at end of file
index 69b0124..cde38d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85de=['request-promise','url','../../../../../config/logger','agi','exports','resolve','ndauth_url','password','username','then','POST','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','calleridname','extension','Bearer\x20','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action','custom_action_data','CustomActionData','stringify'];(function(_0x27f390,_0x1d5ade){var _0x3274ff=function(_0x5f2c99){while(--_0x5f2c99){_0x27f390['push'](_0x27f390['shift']());}};_0x3274ff(++_0x1d5ade);}(_0x85de,0x1f0));var _0xe85d=function(_0xa7d8c3,_0x46ff3a){_0xa7d8c3=_0xa7d8c3-0x0;var _0xb38061=_0x85de[_0xa7d8c3];return _0xb38061;};'use strict';var rp=require(_0xe85d('0x0'));var url=require(_0xe85d('0x1'));var logger=require(_0xe85d('0x2'))(_0xe85d('0x3'));module[_0xe85d('0x4')]=function(_0x57970c,_0x3e4fb5){var _0x559802={'method':'POST','uri':url[_0xe85d('0x5')](_0x3e4fb5[_0xe85d('0x6')],'/token'),'form':{'grant_type':_0xe85d('0x7'),'username':_0x3e4fb5[_0xe85d('0x8')],'password':_0x3e4fb5[_0xe85d('0x7')]},'json':!![]};return rp(_0x559802)[_0xe85d('0x9')](function(_0x4608f4){var _0x888738={'method':_0xe85d('0xa'),'uri':url[_0xe85d('0x5')](_0x3e4fb5['ndassistant_url'],_0xe85d('0xb')),'body':{'type':_0x3e4fb5[_0xe85d('0xc')]||_0xe85d('0xd'),'channelId':_0xe85d('0xe'),'conversation':{'id':_0x57970c[_0xe85d('0xf')]},'from':{'id':_0x57970c['callerid'],'name':_0x57970c[_0xe85d('0x10')]},'recipient':{'id':_0x57970c['dnid'],'name':_0x57970c[_0xe85d('0x11')]},'text':_0x3e4fb5['text'],'channelData':{}},'headers':{'Authorization':_0xe85d('0x12')+_0x4608f4['access_token']},'json':!![]};if(_0x3e4fb5[_0xe85d('0x13')]){_0x888738[_0xe85d('0x14')][_0xe85d('0x15')][_0xe85d('0x16')]=_0x3e4fb5[_0xe85d('0x13')];}if(_0x3e4fb5[_0xe85d('0x17')]=='1'){_0x888738[_0xe85d('0x14')]['channelData'][_0xe85d('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xe85d('0x19')};}if(_0x3e4fb5['custom_action']){_0x888738[_0xe85d('0x14')][_0xe85d('0x15')][_0xe85d('0x1a')]=_0x3e4fb5[_0xe85d('0x1b')];if(_0x3e4fb5[_0xe85d('0x1c')]){_0x888738[_0xe85d('0x14')][_0xe85d('0x15')][_0xe85d('0x1d')]=_0x3e4fb5[_0xe85d('0x1c')];}}logger['info'](JSON[_0xe85d('0x1e')](_0x888738));return rp(_0x888738);});};
\ No newline at end of file
+var _0x1c42=['custom_action_data','CustomActionData','info','stringify','url','../../../../../config/logger','agi','POST','resolve','ndauth_url','/token','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','callerid','calleridname','extension','Bearer\x20','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','custom_action'];(function(_0x5e841f,_0x51921c){var _0x21afe3=function(_0x4d5cb6){while(--_0x4d5cb6){_0x5e841f['push'](_0x5e841f['shift']());}};_0x21afe3(++_0x51921c);}(_0x1c42,0x13a));var _0x21c4=function(_0x53914d,_0x5a80af){_0x53914d=_0x53914d-0x0;var _0x230539=_0x1c42[_0x53914d];return _0x230539;};'use strict';var rp=require('request-promise');var url=require(_0x21c4('0x0'));var logger=require(_0x21c4('0x1'))(_0x21c4('0x2'));module['exports']=function(_0x27cb4a,_0x40bc3e){var _0x1512d2={'method':_0x21c4('0x3'),'uri':url[_0x21c4('0x4')](_0x40bc3e[_0x21c4('0x5')],_0x21c4('0x6')),'form':{'grant_type':_0x21c4('0x7'),'username':_0x40bc3e['username'],'password':_0x40bc3e[_0x21c4('0x7')]},'json':!![]};return rp(_0x1512d2)[_0x21c4('0x8')](function(_0x54b2ea){var _0x184e75={'method':'POST','uri':url[_0x21c4('0x4')](_0x40bc3e[_0x21c4('0x9')],_0x21c4('0xa')),'body':{'type':_0x40bc3e[_0x21c4('0xb')]||_0x21c4('0xc'),'channelId':_0x21c4('0xd'),'conversation':{'id':_0x27cb4a[_0x21c4('0xe')]},'from':{'id':_0x27cb4a[_0x21c4('0xf')],'name':_0x27cb4a[_0x21c4('0x10')]},'recipient':{'id':_0x27cb4a['dnid'],'name':_0x27cb4a[_0x21c4('0x11')]},'text':_0x40bc3e['text'],'channelData':{}},'headers':{'Authorization':_0x21c4('0x12')+_0x54b2ea['access_token']},'json':!![]};if(_0x40bc3e[_0x21c4('0x13')]){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')][_0x21c4('0x16')]=_0x40bc3e[_0x21c4('0x13')];}if(_0x40bc3e[_0x21c4('0x17')]=='1'){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')][_0x21c4('0x18')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x21c4('0x19')};}if(_0x40bc3e[_0x21c4('0x1a')]){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')]['CustomAction']=_0x40bc3e['custom_action'];if(_0x40bc3e[_0x21c4('0x1b')]){_0x184e75[_0x21c4('0x14')][_0x21c4('0x15')][_0x21c4('0x1c')]=_0x40bc3e[_0x21c4('0x1b')];}}logger[_0x21c4('0x1d')](JSON[_0x21c4('0x1e')](_0x184e75));return rp(_0x184e75);});};
\ No newline at end of file
index ad0a689..e09eddb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6031=['./lib/api','exports'];(function(_0x472276,_0xa37f3b){var _0xdd2b80=function(_0x57455f){while(--_0x57455f){_0x472276['push'](_0x472276['shift']());}};_0xdd2b80(++_0xa37f3b);}(_0x6031,0x9a));var _0x1603=function(_0x11067b,_0x202502){_0x11067b=_0x11067b-0x0;var _0x2ed5b3=_0x6031[_0x11067b];return _0x2ed5b3;};'use strict';var asr=require(_0x1603('0x0'));module[_0x1603('0x1')]=function(_0x62c3ae,_0x2541b4,_0x3642ee,_0xcecc04){return asr(_0x62c3ae,_0x2541b4,_0x3642ee,_0xcecc04);};
\ No newline at end of file
+var _0xc598=['exports','./lib/api'];(function(_0x8a0f8,_0x512126){var _0x3c132c=function(_0x3c9382){while(--_0x3c9382){_0x8a0f8['push'](_0x8a0f8['shift']());}};_0x3c132c(++_0x512126);}(_0xc598,0x8b));var _0x8c59=function(_0x22e04c,_0x4d3176){_0x22e04c=_0x22e04c-0x0;var _0x267ffe=_0xc598[_0x22e04c];return _0x267ffe;};'use strict';var asr=require(_0x8c59('0x0'));module[_0x8c59('0x1')]=function(_0x3b8beb,_0x431f68,_0x59156c,_0x1ffe95){return asr(_0x3b8beb,_0x431f68,_0x59156c,_0x1ffe95);};
\ No newline at end of file
index 0aa5c50..a5d9eb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ba=['isObject','open','message','lodash','moment','crypto','../../../../../../config/logger','info','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','data','send','close','error','Tilde\x20ASR\x20send\x20error','parse','status','result','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','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.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','isNil'];(function(_0x1d2f72,_0x48523e){var _0x2d954d=function(_0xbf4006){while(--_0xbf4006){_0x1d2f72['push'](_0x1d2f72['shift']());}};_0x2d954d(++_0x48523e);}(_0xb3ba,0xb7));var _0xab3b=function(_0x54f471,_0x2e35ad){_0x54f471=_0x54f471-0x0;var _0x57ddee=_0xb3ba[_0x54f471];return _0x57ddee;};'use strict';var BPromise=require('bluebird');var _=require(_0xab3b('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xab3b('0x1'));var crypto=require(_0xab3b('0x2'));var logger=require(_0xab3b('0x3'))('agi');module['exports']=function(_0xd04db1,_0x1fae35,_0x2421a0,_0x3fa278){return new BPromise(function(_0x2f065b,_0xb0c490){logger[_0xab3b('0x4')](_0xab3b('0x5'),_0x3fa278||_0xab3b('0x6'));var _0x5d37e=new WebSocket(_0x3fa278||_0xab3b('0x6'),{'perMessageDeflate':![]});var _0x5672c1='';var _0xc03265='0';var _0x5737ab='1';var _0x5df119='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';function _0x42f937(_0x7aea83){var _0x53f969=crypto['createHash']('sha1');_0x53f969[_0xab3b('0x7')](_0x7aea83);return _0x53f969[_0xab3b('0x8')](_0xab3b('0x9'));}function _0x23cf8c(){try{logger[_0xab3b('0x4')](_0xab3b('0xa'));var _0x10d776=moment()[_0xab3b('0xb')]();var _0x4b04c6=_0x42f937(_0x10d776+_0x1fae35+_0x2421a0);_0x5d37e['send'](JSON[_0xab3b('0xc')]({'appID':_0x1fae35,'timestamp':_0x10d776,'appKey':_0x4b04c6}));var _0x1a9e13=fs[_0xab3b('0xd')](_0xd04db1);_0x1a9e13['on'](_0xab3b('0xe'),function(_0x3de77c){_0x5d37e[_0xab3b('0xf')](_0x3de77c);});_0x1a9e13['on'](_0xab3b('0x10'),function(){_0x5d37e[_0xab3b('0xf')]('EOS');});}catch(_0xf8f71){logger[_0xab3b('0x11')](_0xab3b('0x12'),JSON[_0xab3b('0xc')](_0xf8f71));_0x5d37e['terminate']();}}function _0x1431b5(_0x219d3a){try{if(_0x219d3a){var _0x3ee280=JSON[_0xab3b('0x13')](_0x219d3a);switch(_0x3ee280[_0xab3b('0x14')]){case 0x0:if(_0x3ee280[_0xab3b('0x15')]){if(_0x3ee280[_0xab3b('0x15')]['final']){logger[_0xab3b('0x4')](_0xab3b('0x16'),JSON['stringify'](_0x3ee280[_0xab3b('0x15')][_0xab3b('0x17')]));_0x5672c1=_0x3ee280[_0xab3b('0x15')][_0xab3b('0x17')][0x0][_0xab3b('0x18')];_0xc03265=_0x3ee280[_0xab3b('0x15')][_0xab3b('0x17')][0x0]['likelihood'];_0x5737ab='0';_0x5df119='Success.';_0x5d37e[_0xab3b('0x19')]();}}break;case 0x1:logger[_0xab3b('0x4')](_0xab3b('0x1a'));_0x5737ab='1';_0x5df119=_0xab3b('0x1a');break;case 0x2:logger['info'](_0xab3b('0x1b'));_0x5737ab='2';_0x5df119=_0xab3b('0x1b');break;case 0x9:logger[_0xab3b('0x4')](_0xab3b('0x1c'));_0x5737ab='9';_0x5df119='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0xab3b('0x4')](_0xab3b('0x1d'));_0x5737ab='10';_0x5df119='Authentication\x20failed.';break;case 0xb:logger[_0xab3b('0x4')](_0xab3b('0x1e'));_0x5737ab='11';_0x5df119=_0xab3b('0x1e');}}}catch(_0x4e46f6){logger[_0xab3b('0x11')](_0xab3b('0x1f'),JSON['stringify'](_0x4e46f6));_0x5d37e[_0xab3b('0x19')]();}}function _0x4677be(){logger['info']('Close\x20Tilde\x20ASR\x20socket');_0x2f065b({'transcript':_0x5672c1,'confidence':_0xc03265,'status':_0x5737ab,'status_message':_0x5df119});}function _0x33c5f3(_0x2b58ce){logger[_0xab3b('0x11')]('Error\x20Tilde\x20ASR\x20socket');if(!_[_0xab3b('0x20')](_0x2b58ce)){logger[_0xab3b('0x11')](_[_0xab3b('0x21')](_0x2b58ce)?JSON[_0xab3b('0xc')](_0x2b58ce):_0x2b58ce);}}_0x5d37e['on'](_0xab3b('0x22'),_0x23cf8c);_0x5d37e['on'](_0xab3b('0x23'),_0x1431b5);_0x5d37e['on'](_0xab3b('0x10'),_0x4677be);_0x5d37e['on']('error',_0x33c5f3);});};
\ No newline at end of file
+var _0xcc69=['info','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','sha1','update','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','open','bluebird','lodash','moment','crypto','../../../../../../config/logger','agi'];(function(_0x18d631,_0x4376d2){var _0x50d708=function(_0x3b6ab5){while(--_0x3b6ab5){_0x18d631['push'](_0x18d631['shift']());}};_0x50d708(++_0x4376d2);}(_0xcc69,0xc7));var _0x9cc6=function(_0xc587ed,_0x11cbc2){_0xc587ed=_0xc587ed-0x0;var _0x41d137=_0xcc69[_0xc587ed];return _0x41d137;};'use strict';var BPromise=require(_0x9cc6('0x0'));var _=require(_0x9cc6('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x9cc6('0x2'));var crypto=require(_0x9cc6('0x3'));var logger=require(_0x9cc6('0x4'))(_0x9cc6('0x5'));module['exports']=function(_0x25e674,_0x23180e,_0x80f63e,_0x633d2a){return new BPromise(function(_0x30e21c,_0x32b13a){logger[_0x9cc6('0x6')](_0x9cc6('0x7'),_0x633d2a||_0x9cc6('0x8'));var _0x4ef5a9=new WebSocket(_0x633d2a||_0x9cc6('0x8'),{'perMessageDeflate':![]});var _0x162421='';var _0xc15595='0';var _0x37656c='1';var _0x54c7f1=_0x9cc6('0x9');function _0x58f6e8(_0xc98967){var _0x31254c=crypto['createHash'](_0x9cc6('0xa'));_0x31254c[_0x9cc6('0xb')](_0xc98967);return _0x31254c['digest'](_0x9cc6('0xc'));}function _0x26c8da(){try{logger['info'](_0x9cc6('0xd'));var _0x53bf31=moment()[_0x9cc6('0xe')]();var _0x2f3c4e=_0x58f6e8(_0x53bf31+_0x23180e+_0x80f63e);_0x4ef5a9[_0x9cc6('0xf')](JSON['stringify']({'appID':_0x23180e,'timestamp':_0x53bf31,'appKey':_0x2f3c4e}));var _0xd0905a=fs[_0x9cc6('0x10')](_0x25e674);_0xd0905a['on'](_0x9cc6('0x11'),function(_0xdc8947){_0x4ef5a9[_0x9cc6('0xf')](_0xdc8947);});_0xd0905a['on'](_0x9cc6('0x12'),function(){_0x4ef5a9[_0x9cc6('0xf')](_0x9cc6('0x13'));});}catch(_0x1db25b){logger[_0x9cc6('0x14')](_0x9cc6('0x15'),JSON[_0x9cc6('0x16')](_0x1db25b));_0x4ef5a9[_0x9cc6('0x17')]();}}function _0x40c0b5(_0x732961){try{if(_0x732961){var _0x27fd02=JSON['parse'](_0x732961);switch(_0x27fd02[_0x9cc6('0x18')]){case 0x0:if(_0x27fd02[_0x9cc6('0x19')]){if(_0x27fd02[_0x9cc6('0x19')][_0x9cc6('0x1a')]){logger['info'](_0x9cc6('0x1b'),JSON['stringify'](_0x27fd02[_0x9cc6('0x19')]['hypotheses']));_0x162421=_0x27fd02['result'][_0x9cc6('0x1c')][0x0][_0x9cc6('0x1d')];_0xc15595=_0x27fd02[_0x9cc6('0x19')][_0x9cc6('0x1c')][0x0][_0x9cc6('0x1e')];_0x37656c='0';_0x54c7f1=_0x9cc6('0x1f');_0x4ef5a9[_0x9cc6('0x17')]();}}break;case 0x1:logger[_0x9cc6('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x37656c='1';_0x54c7f1=_0x9cc6('0x9');break;case 0x2:logger[_0x9cc6('0x6')](_0x9cc6('0x20'));_0x37656c='2';_0x54c7f1=_0x9cc6('0x20');break;case 0x9:logger['info'](_0x9cc6('0x21'));_0x37656c='9';_0x54c7f1=_0x9cc6('0x21');break;case 0xa:logger[_0x9cc6('0x6')](_0x9cc6('0x22'));_0x37656c='10';_0x54c7f1=_0x9cc6('0x22');break;case 0xb:logger[_0x9cc6('0x6')](_0x9cc6('0x23'));_0x37656c='11';_0x54c7f1=_0x9cc6('0x23');}}}catch(_0xcbd1a2){logger[_0x9cc6('0x14')](_0x9cc6('0x24'),JSON[_0x9cc6('0x16')](_0xcbd1a2));_0x4ef5a9[_0x9cc6('0x17')]();}}function _0x28121f(){logger[_0x9cc6('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x30e21c({'transcript':_0x162421,'confidence':_0xc15595,'status':_0x37656c,'status_message':_0x54c7f1});}function _0x70d7f7(_0xe885c7){logger[_0x9cc6('0x14')](_0x9cc6('0x25'));if(!_[_0x9cc6('0x26')](_0xe885c7)){logger['error'](_[_0x9cc6('0x27')](_0xe885c7)?JSON[_0x9cc6('0x16')](_0xe885c7):_0xe885c7);}}_0x4ef5a9['on'](_0x9cc6('0x28'),_0x26c8da);_0x4ef5a9['on']('message',_0x40c0b5);_0x4ef5a9['on'](_0x9cc6('0x12'),_0x28121f);_0x4ef5a9['on'](_0x9cc6('0x14'),_0x70d7f7);});};
\ No newline at end of file
index 3e826fa..82cdc1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7041=['exports'];(function(_0xcd5a3d,_0x3c5b33){var _0xd43207=function(_0x17d976){while(--_0x17d976){_0xcd5a3d['push'](_0xcd5a3d['shift']());}};_0xd43207(++_0x3c5b33);}(_0x7041,0x177));var _0x1704=function(_0x9784b0,_0x2be373){_0x9784b0=_0x9784b0-0x0;var _0x7a90ca=_0x7041[_0x9784b0];return _0x7a90ca;};var asr=require('./asr');module[_0x1704('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x6fbd=['./asr'];(function(_0x5bb612,_0x19ed1e){var _0x8e28d7=function(_0x32bbeb){while(--_0x32bbeb){_0x5bb612['push'](_0x5bb612['shift']());}};_0x8e28d7(++_0x19ed1e);}(_0x6fbd,0x141));var _0xd6fb=function(_0x562faa,_0x23adc7){_0x562faa=_0x562faa-0x0;var _0xc70f59=_0x6fbd[_0x562faa];return _0xc70f59;};var asr=require(_0xd6fb('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
index 34a4063..30eb766 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7543=['./channel','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listening','connection','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','ready','code','close','nextTick','inherits','util','EventEmitter'];(function(_0x33c7df,_0x1e50e9){var _0x584ec4=function(_0x55a88b){while(--_0x55a88b){_0x33c7df['push'](_0x33c7df['shift']());}};_0x584ec4(++_0x1e50e9);}(_0x7543,0x154));var _0x3754=function(_0xd41dc1,_0x24aaaa){_0xd41dc1=_0xd41dc1-0x0;var _0x14465a=_0x7543[_0xd41dc1];return _0x14465a;};'use strict';var util=require(_0x3754('0x0'));var net=require('net');var EventEmitter=require('events')[_0x3754('0x1')];var AGIError=require('./error');var AGIChannel=require(_0x3754('0x2'));var AGIServer=function(_0x2b8c3b,_0x37c3b7,_0x43a72a){var _0x5ad273=this,_0x2b8c3b=_0x2b8c3b||0x11dd,_0x37c3b7=_0x37c3b7||'127.0.0.1',_0x3b104f=null,_0x17cbff=0x0;EventEmitter[_0x3754('0x3')](_0x5ad273);function _0x170c0d(){if(!_0x2b8c3b){_0x5ad273[_0x3754('0x4')](_0x3754('0x5'),new AGIError(_0x3754('0x6')));return![];}_0x3b104f=net[_0x3754('0x7')]();_0x3b104f['listen'](_0x2b8c3b,_0x37c3b7);_0x3b104f['on'](_0x3754('0x8'),function(){_0x5ad273[_0x3754('0x4')]('listening');});_0x3b104f['on'](_0x3754('0x9'),function(_0x3a7cdc){_0x3b104f['getConnections'](function(_0x5adcc8,_0x650d22){if(_0x5adcc8){_0x5ad273[_0x3754('0x4')](_0x3754('0x5'),new AGIError(_0x3754('0xa'),_0x5adcc8));}else if(_0x43a72a&&_0x43a72a<0x0){_0x5ad273[_0x3754('0x4')](_0x3754('0x5'),new AGIError(_0x3754('0xb')));_0x3a7cdc['destroy']();}else if(_0x43a72a&&_0x43a72a>0x0&&_0x43a72a<_0x650d22){_0x17cbff+=0x1;_0x5ad273[_0x3754('0x4')](_0x3754('0x5'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x17cbff));_0x3a7cdc[_0x3754('0xc')]();}else{var _0x37bc62=new AGIChannel(_0x3a7cdc);_0x37bc62['on'](_0x3754('0xd'),function(){_0x5ad273[_0x3754('0x4')]('connection',_0x37bc62);});}});});_0x3b104f['on'](_0x3754('0x5'),function(_0x402461){_0x5ad273['emit'](_0x3754('0x5'),new AGIError('E_AGI_SERVER_ERROR',_0x402461[_0x3754('0xe')]));});_0x3b104f['on'](_0x3754('0xf'),function(){_0x5ad273[_0x3754('0x4')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x3754('0x10')](function(){_0x170c0d();});};util[_0x3754('0x11')](AGIServer,EventEmitter);module['exports']=function(_0x90a1f8,_0x10f2d1,_0x5e0e28){return new AGIServer(_0x90a1f8,_0x10f2d1,_0x5e0e28);};
\ No newline at end of file
+var _0x3ddd=['connection','getConnections','error','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','ready','code','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','./error','./channel','127.0.0.1','emit','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x4841c2,_0x49d761){var _0x26965e=function(_0x493711){while(--_0x493711){_0x4841c2['push'](_0x4841c2['shift']());}};_0x26965e(++_0x49d761);}(_0x3ddd,0x8a));var _0xd3dd=function(_0x40c938,_0x235622){_0x40c938=_0x40c938-0x0;var _0x59f333=_0x3ddd[_0x40c938];return _0x59f333;};'use strict';var util=require(_0xd3dd('0x0'));var net=require('net');var EventEmitter=require('events')['EventEmitter'];var AGIError=require(_0xd3dd('0x1'));var AGIChannel=require(_0xd3dd('0x2'));var AGIServer=function(_0x949e0,_0x5d99a0,_0x570e86){var _0x30ca4f=this,_0x949e0=_0x949e0||0x11dd,_0x5d99a0=_0x5d99a0||_0xd3dd('0x3'),_0x2bb35f=null,_0x29636e=0x0;EventEmitter['call'](_0x30ca4f);function _0x8bcf26(){if(!_0x949e0){_0x30ca4f[_0xd3dd('0x4')]('error',new AGIError(_0xd3dd('0x5')));return![];}_0x2bb35f=net[_0xd3dd('0x6')]();_0x2bb35f[_0xd3dd('0x7')](_0x949e0,_0x5d99a0);_0x2bb35f['on'](_0xd3dd('0x8'),function(){_0x30ca4f[_0xd3dd('0x4')](_0xd3dd('0x8'));});_0x2bb35f['on'](_0xd3dd('0x9'),function(_0x2ec11e){_0x2bb35f[_0xd3dd('0xa')](function(_0x156fc5,_0x408a06){if(_0x156fc5){_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError(_0xd3dd('0xc'),_0x156fc5));}else if(_0x570e86&&_0x570e86<0x0){_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError(_0xd3dd('0xd')));_0x2ec11e[_0xd3dd('0xe')]();}else if(_0x570e86&&_0x570e86>0x0&&_0x570e86<_0x408a06){_0x29636e+=0x1;_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x29636e));_0x2ec11e[_0xd3dd('0xe')]();}else{var _0x207742=new AGIChannel(_0x2ec11e);_0x207742['on'](_0xd3dd('0xf'),function(){_0x30ca4f[_0xd3dd('0x4')](_0xd3dd('0x9'),_0x207742);});}});});_0x2bb35f['on']('error',function(_0x487535){_0x30ca4f['emit'](_0xd3dd('0xb'),new AGIError('E_AGI_SERVER_ERROR',_0x487535[_0xd3dd('0x10')]));});_0x2bb35f['on']('close',function(){_0x30ca4f['emit']('close',new AGIError(_0xd3dd('0x11')));});}process[_0xd3dd('0x12')](function(){_0x8bcf26();});};util[_0xd3dd('0x13')](AGIServer,EventEmitter);module[_0xd3dd('0x14')]=function(_0x51f5eb,_0x1d2d05,_0x620ad1){return new AGIServer(_0x51f5eb,_0x1d2d05,_0x620ad1);};
\ No newline at end of file
index 41244c4..8f7d9a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1bd=['isNil','callback_','lastName','phone','list_id','callback','Callback\x20scheduled\x20at\x20','scheduledAt','toString','callback_priority','getPause','getPauseById','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','googleTTS','google_tts_language','restAPI','url','method','timeout','PUT','toUpperCase','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','headers','render','stringify','body','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','googleASR','tildeASR','appid','clear','agicommand','clone','hasOwnProperty','isString','includes','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isArray','length','saveRestApiResult','isPlainObject','%s.%s','setVariable','split','replaceAll','getVariable','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','no\x20text\x20configured','MRCPSynth','mrcprecog','grammar','no\x20grammar\x20configured','MRCPRecog','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_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','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','query','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','DIAL','SIP/%s','opts','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','DIALOGFLOW_%s','speech','dialogflow','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','bot','Trying\x20DialogflowV2:\x20%s','providerResponse','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20password\x20configured','ndassistant_url','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','no\x20variable\x20selected\x20for\x20the\x20result','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','substr','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_bot_name','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','message','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','beep','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','Enter\x20in\x20GOTO\x20(%s)\x20block','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','failure','no\x20operation\x20configured','operation','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','agentPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','macro','gosub','position','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','saynumber','sayNumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','Smtp','no\x20mail\x20account\x20found','email','user','bcc','service','host','port','secure','auth','pass','sendMail\x20message','account_id','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20configured','sms_account_id','no\x20sms\x20account\x20found','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','subproject','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','path','util','lodash','shelljs','odbc','moment','mustache','../../config/logger','agi','../../config/environment','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','name','catch','getVoiceQueue','getVoiceQueueById','then','getSquareProject','getSquareOdbc','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','map','Intervals','interval','format','getQueryOdbc','open','error','info','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','priority','accountcode','file','createSquareMessage','createCmContact','isEmpty'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xd1bd,0x184));var _0xdd1b=function(_0x18bd2a,_0x3f93f0){_0x18bd2a=_0x18bd2a-0x0;var _0x546f18=_0xd1bd[_0x18bd2a];return _0x546f18;};'use strict';var fs=require('fs');var path=require(_0xdd1b('0x0'));var util=require(_0xdd1b('0x1'));var _=require(_0xdd1b('0x2'));var sh=require(_0xdd1b('0x3'));var odbc=require(_0xdd1b('0x4'))();var rs=require('randomstring');var moment=require(_0xdd1b('0x5'));var Mustache=require(_0xdd1b('0x6'));var rp=require('request-promise');var logger=require(_0xdd1b('0x7'))(_0xdd1b('0x8'));var config=require(_0xdd1b('0x9'));var scripts=require('./scripts');var FILES_PATH=_0xdd1b('0xa');var recursiveMapAttributes=[_0xdd1b('0xb'),_0xdd1b('0xc')];var verticesWithRetry=[_0xdd1b('0xd'),_0xdd1b('0xe'),_0xdd1b('0xf')];var AGIVertices=function(_0x547012,_0x94bef1,_0x16240b){this[_0xdd1b('0x10')]=_0x547012;this[_0xdd1b('0x11')]=_0x94bef1;this[_0xdd1b('0x12')]=_0x16240b;};AGIVertices[_0xdd1b('0x13')]['getVariable']=function(_0x3d0650,_0x599956){this[_0xdd1b('0x11')]['getVariableById'](_0x3d0650)['then'](function(_0x6831a3){_0x599956(null,_0x6831a3?_0x6831a3[_0xdd1b('0x14')]:![]);})[_0xdd1b('0x15')](function(_0x2ecff8){_0x599956(_0x2ecff8);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x16')]=function(_0x25b70a,_0x3e041d){this[_0xdd1b('0x11')][_0xdd1b('0x17')](_0x25b70a)[_0xdd1b('0x18')](function(_0x1cf7ad){_0x3e041d(null,_0x1cf7ad?_0x1cf7ad['name']:![]);})[_0xdd1b('0x15')](function(_0x39de1a){_0x3e041d(_0x39de1a);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x19')]=function(_0x20d7e3,_0x588dfd){this[_0xdd1b('0x11')]['getSquareProjectById'](_0x20d7e3)[_0xdd1b('0x18')](function(_0xd36475){_0x588dfd(null,_0xd36475?_0xd36475[_0xdd1b('0x14')]:![]);})['catch'](function(_0xf0e7c2){_0x588dfd(_0xf0e7c2);});};AGIVertices['prototype'][_0xdd1b('0x1a')]=function(_0x2386c2,_0x21ed00){this[_0xdd1b('0x11')][_0xdd1b('0x1b')](_0x2386c2)[_0xdd1b('0x18')](function(_0x538526){_0x21ed00(null,_0x538526?_0x538526[_0xdd1b('0x1c')]:![]);})['catch'](function(_0x2b59b7){_0x21ed00(_0x2b59b7);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1d')]=function(_0x22c61b,_0x3056aa){this[_0xdd1b('0x11')][_0xdd1b('0x1e')](_0x22c61b)[_0xdd1b('0x18')](function(_0x5e1601){_0x3056aa(null,_0x5e1601?_0x5e1601['name']:![]);})[_0xdd1b('0x15')](function(_0x33fe6c){_0x3056aa(_0x33fe6c);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1f')]=function(_0x2e399f,_0x2174a2){this[_0xdd1b('0x11')][_0xdd1b('0x20')](_0x2e399f)[_0xdd1b('0x18')](function(_0x18f15e){_0x2174a2(null,_0x18f15e?_0x18f15e[_0xdd1b('0x14')]:![]);})['catch'](function(_0x46b072){_0x2174a2(_0x46b072);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x21')]=function(_0xfd8ceb,_0x3e5c82){var _0x5bf67e=this;this['rpc'][_0xdd1b('0x22')](_0xfd8ceb)[_0xdd1b('0x18')](function(_0x205bc1){_0x3e5c82(null,_0x205bc1?_0x5bf67e[_0xdd1b('0x23')](_0x205bc1['save_name']):![]);})[_0xdd1b('0x15')](function(_0x62aa3e){_0x3e5c82(_0x62aa3e);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x24')]=function(_0x113e7b,_0x29f15a){this[_0xdd1b('0x11')][_0xdd1b('0x25')](_0x113e7b)[_0xdd1b('0x18')](function(_0x59a1c7){_0x29f15a(null,_0x59a1c7?_0x59a1c7:![]);})[_0xdd1b('0x15')](function(_0x181f27){_0x29f15a(_0x181f27);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x26')]=function(_0x4429f4,_0x58b86d,_0x3a1f18){this['mailRpc'][_0xdd1b('0x26')](_0x4429f4,_0x58b86d)[_0xdd1b('0x18')](function(){_0x3a1f18(null);})['catch'](function(_0x29e7a5){_0x3a1f18(_0x29e7a5);});};AGIVertices['prototype'][_0xdd1b('0x27')]=function(_0x1796f9,_0x2e1315){this[_0xdd1b('0x11')][_0xdd1b('0x28')](_0x1796f9)[_0xdd1b('0x18')](function(_0x587286){if(_0x587286){if(_0x587286['IntervalId']){_0x2e1315(null,[_0x587286['interval']]);}else{_0x2e1315(null,_[_0xdd1b('0x29')](_0x587286[_0xdd1b('0x2a')],_0xdd1b('0x2b')));}}else{_0x2e1315(null,![]);}})[_0xdd1b('0x15')](function(_0x1ff68e){_0x2e1315(_0x1ff68e);});};AGIVertices[_0xdd1b('0x13')]['getSoundPath']=function(_0x477ed3){return util[_0xdd1b('0x2c')]('%s/sounds/converted/%s',FILES_PATH,_0x477ed3);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x2d')]=function(_0x21b93b,_0x39ee37,_0x24faf4){odbc[_0xdd1b('0x2e')](_0x21b93b,function(_0x59548f){if(_0x59548f){logger[_0xdd1b('0x2f')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x59548f);_0x24faf4(_0x59548f);}else{logger[_0xdd1b('0x30')]('ODBC\x20connection\x20successfully');odbc['query'](_0x39ee37,function(_0x241b5d,_0x2d5b73){if(_0x241b5d){logger[_0xdd1b('0x30')](_0xdd1b('0x31'),_0x39ee37);_0x24faf4(_0x241b5d);}else{logger['info'](_0xdd1b('0x32'),_0x39ee37);odbc[_0xdd1b('0x33')](function(_0x512981){if(_0x512981){logger[_0xdd1b('0x2f')](_0xdd1b('0x34'),_0x512981);}_0x24faf4(null,_0x2d5b73);});}});}});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x35')]=function(_0x1049d0,_0x13e5d6){this['rpc']['getSmsAccountById'](_0x1049d0)[_0xdd1b('0x18')](function(_0x33a320){_0x13e5d6(null,_0x33a320?_0x33a320:![]);})[_0xdd1b('0x15')](function(_0x23c440){_0x13e5d6(_0x23c440);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x36')]=function(_0x32386c,_0x111c8a){this['rpc'][_0xdd1b('0x36')](_0x32386c)[_0xdd1b('0x18')](function(_0x4d705f){_0x111c8a(null,_0x4d705f);})[_0xdd1b('0x15')](function(_0x54497e){_0x111c8a(_0x54497e);});};AGIVertices[_0xdd1b('0x13')]['createSquareDetailsReport']=function(_0x211782,_0x217a47,_0x21fb20){this[_0xdd1b('0x11')][_0xdd1b('0x37')]({'uniqueid':this['channel']['uniqueid'],'node':_0x211782['label'],'application':_0x211782['agicommand'],'data':_0x217a47||null,'project_name':this['channel'][_0xdd1b('0x38')],'callerid':this[_0xdd1b('0x10')][_0xdd1b('0x39')]})[_0xdd1b('0x18')](function(_0x104c14){if(_0x21fb20){_0x21fb20(null,_0x104c14);}})['catch'](function(_0x41bd0e){if(_0x21fb20){_0x21fb20(_0x41bd0e);}});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x3a')]=function(_0x562418,_0x5d5ff2,_0x4f6ddf,_0x1d3cd4){this[_0xdd1b('0x11')][_0xdd1b('0x3a')]({'uniqueid':this[_0xdd1b('0x10')][_0xdd1b('0x3b')],'callerid':this[_0xdd1b('0x10')][_0xdd1b('0x39')],'calleridname':this[_0xdd1b('0x10')][_0xdd1b('0x3c')],'context':this[_0xdd1b('0x10')][_0xdd1b('0x3d')],'extension':this[_0xdd1b('0x10')]['extension'],'priority':this[_0xdd1b('0x10')][_0xdd1b('0x3e')],'accountcode':this[_0xdd1b('0x10')][_0xdd1b('0x3f')],'dnid':this[_0xdd1b('0x10')]['dnid'],'projectName':this[_0xdd1b('0x10')][_0xdd1b('0x38')],'saveName':_0x5d5ff2,'filename':_0x562418[_0xdd1b('0x40')]||_0x5d5ff2,'savePath':_0x4f6ddf})['then'](function(_0x217ac2){_0x1d3cd4(null,_0x217ac2);})['catch'](function(_0x513783){_0x1d3cd4(_0x513783);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x41')]=function(_0x597125,_0x564123,_0x4119e7,_0x4533e6,_0x516032){this['rpc'][_0xdd1b('0x41')]({'uniqueid':this[_0xdd1b('0x10')][_0xdd1b('0x3b')],'body':_0x597125,'direction':_0x564123,'providerName':_0x4119e7,'providerResponse':_0x4533e6})['then'](function(_0x3b04fb){if(_0x516032){_0x516032(null,_0x3b04fb);}})['catch'](function(_0x3f5b49){if(_0x516032){_0x516032(_0x3f5b49);}});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x42')]=function(_0x45cb2e,_0x235893){this[_0xdd1b('0x11')][_0xdd1b('0x42')]({'firstName':_[_0xdd1b('0x43')](_0x45cb2e[_0xdd1b('0x14')])||_[_0xdd1b('0x44')](_0x45cb2e[_0xdd1b('0x14')])?_0xdd1b('0x45')+Math['random']():_0x45cb2e[_0xdd1b('0x14')],'lastName':_['isEmpty'](_0x45cb2e[_0xdd1b('0x46')])||_[_0xdd1b('0x44')](_0x45cb2e[_0xdd1b('0x46')])?null:_0x45cb2e['lastName'],'phone':_0x45cb2e[_0xdd1b('0x47')],'ListId':_0x45cb2e[_0xdd1b('0x48')],'scheduledat':_0x45cb2e['scheduledAt'],'callbackUniqueid':this[_0xdd1b('0x10')][_0xdd1b('0x3b')],'tags':_0xdd1b('0x49'),'description':_0xdd1b('0x4a')+_0x45cb2e[_0xdd1b('0x4b')][_0xdd1b('0x4c')](),'priority':_0x45cb2e[_0xdd1b('0x4d')]})[_0xdd1b('0x18')](function(_0x4052c0){_0x235893(null,_0x4052c0);})[_0xdd1b('0x15')](function(_0x17e37d){_0x235893(_0x17e37d);});};AGIVertices['prototype'][_0xdd1b('0x4e')]=function(_0x5bfa01,_0x2fce77){this['rpc'][_0xdd1b('0x4f')](_0x5bfa01)['then'](function(_0x5659e8){_0x2fce77(null,_0x5659e8?_0x5659e8[_0xdd1b('0x14')]:![]);})[_0xdd1b('0x15')](function(_0x209409){_0x2fce77(_0x209409);});};AGIVertices[_0xdd1b('0x13')]['agentPause']=function(_0x1eb060,_0x6e8ff4,_0x19d96f){var _0x52f586={'role':_0xdd1b('0x50')};_0x52f586[_0x1eb060]=this[_0xdd1b('0x10')]['callerid'];this['rpc']['agentPause'](_0x52f586,_0x6e8ff4,this['channel'][_0xdd1b('0x3b')])[_0xdd1b('0x18')](function(_0x4ff056){_0x19d96f(null,_[_0xdd1b('0x44')](_0x4ff056)?![]:!![]);})[_0xdd1b('0x15')](function(_0x4ae959){logger['error'](_0x4ae959);_0x19d96f(null,![]);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x51')]=function(_0x3918e6,_0x396d1c){var _0x307d39={'role':_0xdd1b('0x50')};_0x307d39[_0x3918e6]=this[_0xdd1b('0x10')][_0xdd1b('0x39')];this[_0xdd1b('0x11')][_0xdd1b('0x51')](_0x307d39)[_0xdd1b('0x18')](function(_0xedb772){_0x396d1c(null,_[_0xdd1b('0x44')](_0xedb772)?![]:!![]);})[_0xdd1b('0x15')](function(_0x12c966){logger['error'](_0x12c966);_0x396d1c(null,![]);});};AGIVertices['prototype'][_0xdd1b('0x52')]=function(_0x4e6b7e,_0x33cdd6){var _0x59a9ea={'role':'agent'};_0x59a9ea[_0x4e6b7e]=this[_0xdd1b('0x10')]['callerid'];this[_0xdd1b('0x11')]['agentLogout'](_0x59a9ea)[_0xdd1b('0x18')](function(_0x183a27){_0x33cdd6(null,_['isNil'](_0x183a27)?![]:!![]);})[_0xdd1b('0x15')](function(_0x2a7dbb){logger['error'](_0x2a7dbb);_0x33cdd6(null,![]);});};AGIVertices['prototype'][_0xdd1b('0x53')]=function(_0x72bcf1,_0x3a3663){var _0x1bd371={'role':_0xdd1b('0x50')};_0x1bd371[_0x72bcf1]=this[_0xdd1b('0x10')][_0xdd1b('0x39')];var _0x48318d=_0x72bcf1!='internal'?util[_0xdd1b('0x2c')](_0xdd1b('0x54'),_0xdd1b('0x55'),this[_0xdd1b('0x10')][_0xdd1b('0x39')]):undefined;this[_0xdd1b('0x11')][_0xdd1b('0x53')](_0x1bd371,_0x48318d)[_0xdd1b('0x18')](function(_0x4bf237){_0x3a3663(null,_[_0xdd1b('0x44')](_0x4bf237)?![]:!![]);})[_0xdd1b('0x15')](function(_0x56ead8){logger[_0xdd1b('0x2f')](_0x56ead8);_0x3a3663(null,![]);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x56')]=function(_0xd84b03,_0x1ca771){sh[_0xdd1b('0x57')](_[_0xdd1b('0x58')](_0xd84b03),function(_0x50c5c9,_0x31c34e){var _0x59b273=_0x31c34e[_0xdd1b('0x59')](/(\r\n|\n|\r)/gm,'');_0x1ca771(null,_0x59b273);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x5a')]=function(_0x5b538f,_0x5f9d6b){scripts[_0xdd1b('0x5a')](_0x5b538f[_0xdd1b('0x5b')],_0x5b538f[_0xdd1b('0x5c')]||_0xdd1b('0x5d'),_0x5b538f[_0xdd1b('0x5d')],_0x5b538f[_0xdd1b('0x5e')]||_0xdd1b('0x5f'),_0x5b538f[_0xdd1b('0x60')]||_0xdd1b('0x61'),_0x5b538f[_0xdd1b('0x62')]||_0xdd1b('0x63'))['then'](function(_0x569b63){_0x5f9d6b(null,_0x569b63);})['catch'](function(_0x281658){_0x5f9d6b(_0x281658);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x64')]=function(_0x47187a,_0x1b64c9){scripts['googleTTS'](_0x47187a['text'],_0x47187a[_0xdd1b('0x65')]||'en',0x1)[_0xdd1b('0x18')](function(_0x4cb75a){_0x1b64c9(null,_0x4cb75a);})[_0xdd1b('0x15')](function(_0x28a173){_0x1b64c9(_0x28a173);});};AGIVertices['prototype'][_0xdd1b('0x66')]=function(_0x3adb3c,_0x5c0863){var _0x3cf0e3={'uri':_0x3adb3c[_0xdd1b('0x67')],'method':_0x3adb3c[_0xdd1b('0x68')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x3adb3c['timeout'])==='number'&&parseInt(_0x3adb3c[_0xdd1b('0x69')])>=0x1?parseInt(_0x3adb3c[_0xdd1b('0x69')])*0x3e8:0x5*0x3e8};if(_['includes'](['POST',_0xdd1b('0x6a')],_0x3cf0e3['method'][_0xdd1b('0x6b')]())){try{_0x3cf0e3['body']=_0x3adb3c[_0xdd1b('0xc')]?JSON[_0xdd1b('0x6c')](_0x3adb3c['rawBody']):{};}catch(_0x5c9964){logger[_0xdd1b('0x2f')](_0xdd1b('0x6d'),_0x5c9964);}}try{_0x3cf0e3['headers']=_0x3adb3c[_0xdd1b('0xb')]?JSON[_0xdd1b('0x6c')](_0x3adb3c[_0xdd1b('0xb')]):{};}catch(_0x273167){logger[_0xdd1b('0x2f')](_0xdd1b('0x6e'),_0x273167);}if(_0x3adb3c[_0xdd1b('0x6f')]){try{var _0x3e7d74=require(_0x3adb3c[_0xdd1b('0x6f')])[_0xdd1b('0x70')](this,_0x3cf0e3);_0x3cf0e3[_0xdd1b('0x71')]=Mustache['render'](_0x3adb3c['url'],_0x3e7d74,{},['$$','$$']);if(_0x3cf0e3[_0xdd1b('0x72')]){_0x3cf0e3[_0xdd1b('0x72')]=JSON[_0xdd1b('0x6c')](Mustache[_0xdd1b('0x73')](JSON[_0xdd1b('0x74')](_0x3cf0e3['headers']),_0x3e7d74,{},['$$','$$']));}if(_0x3cf0e3[_0xdd1b('0x75')]){_0x3cf0e3[_0xdd1b('0x75')]=JSON[_0xdd1b('0x6c')](Mustache[_0xdd1b('0x73')](JSON[_0xdd1b('0x74')](_0x3cf0e3[_0xdd1b('0x75')]),_0x3e7d74,{},['$$','$$']));}}catch(_0x4a3083){logger['error'](_0xdd1b('0x76'),_0x4a3083);}}rp(_0x3cf0e3)[_0xdd1b('0x18')](function(_0x55eb8b){var _0x1293c6={'statusCode':_0x55eb8b['statusCode']||0xc8,'statusMessage':_0x55eb8b[_0xdd1b('0x77')]||'OK','headers':_0x55eb8b[_0xdd1b('0x72')]||{},'body':_0x55eb8b[_0xdd1b('0x75')]||{}};_0x5c0863(null,_0x1293c6);})[_0xdd1b('0x15')](function(_0x56c923){var _0x18352e={'statusCode':_0x56c923[_0xdd1b('0x78')]||0x1f4,'statusMessage':_0x56c923['message']||_0xdd1b('0x79'),'headers':_0x56c923[_0xdd1b('0x7a')]['headers']||{},'body':_0x56c923[_0xdd1b('0x7a')][_0xdd1b('0x75')]||{}};_0x5c0863(null,_0x18352e);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x7b')]=function(_0x2a18c3,_0x1f5285){scripts[_0xdd1b('0x7b')](this[_0xdd1b('0x10')][_0xdd1b('0x3b')],_0x2a18c3[_0xdd1b('0x7c')],_0x2a18c3[_0xdd1b('0x5d')],_0x2a18c3[_0xdd1b('0x7d')]||'en')['then'](function(_0x2d8b49){_0x1f5285(null,_0x2d8b49);})[_0xdd1b('0x15')](function(_0x90eaf5){_0x1f5285(_0x90eaf5);});};AGIVertices[_0xdd1b('0x13')]['googleDialogflowV2']=function(_0x85ff5e,_0x4cf9cc){scripts[_0xdd1b('0x7e')](this['channel'][_0xdd1b('0x3b')],_0x85ff5e[_0xdd1b('0x7f')],_0x85ff5e[_0xdd1b('0x80')],_0x85ff5e[_0xdd1b('0x81')],_0x85ff5e['text'],_0x85ff5e[_0xdd1b('0x82')]||'en')[_0xdd1b('0x18')](function(_0x10d36d){_0x4cf9cc(null,_0x10d36d);})[_0xdd1b('0x15')](function(_0x2505fb){_0x4cf9cc(_0x2505fb);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x83')]=function(_0x495ebe,_0x97df66){scripts[_0xdd1b('0x83')](this[_0xdd1b('0x10')],_0x495ebe)[_0xdd1b('0x18')](function(_0x3345f2){_0x97df66(null,_0x3345f2);})[_0xdd1b('0x15')](function(_0x3a8f82){_0x97df66(_0x3a8f82);});};AGIVertices['prototype']['ispeechTTS']=function(_0x1fadd5,_0x515650){scripts[_0xdd1b('0x84')](_0x1fadd5['key'],_0x1fadd5[_0xdd1b('0x5d')],_0x1fadd5['ispeech_tts_language']||_0xdd1b('0x5f'),_0x1fadd5[_0xdd1b('0x85')])[_0xdd1b('0x18')](function(_0xffd76){_0x515650(null,_0xffd76);})[_0xdd1b('0x15')](function(_0xfd7ad7){_0x515650(_0xfd7ad7);});};AGIVertices[_0xdd1b('0x13')]['ispeechASR']=function(_0x3bf2d2,_0x3060d2,_0x2952b3){scripts[_0xdd1b('0x86')](_0x3060d2,_0x3bf2d2[_0xdd1b('0x7c')],_0x3bf2d2[_0xdd1b('0x87')]||'en-US',this['isConfigured'](_0x3bf2d2['model'])?_0x3bf2d2[_0xdd1b('0x88')]:undefined)[_0xdd1b('0x18')](function(_0x5215e5){_0x2952b3(null,_0x5215e5);})['catch'](function(_0x67780){_0x2952b3(_0x67780);});};AGIVertices['prototype'][_0xdd1b('0x89')]=function(_0x3088d4,_0x4eab82){scripts[_0xdd1b('0x89')](_0x3088d4[_0xdd1b('0x8a')],_0x3088d4[_0xdd1b('0x8b')],_0x3088d4[_0xdd1b('0x8c')],_0x3088d4[_0xdd1b('0x8d')]||_0xdd1b('0x8e'),_0x3088d4[_0xdd1b('0x5d')],_0x3088d4[_0xdd1b('0x8f')]||_0xdd1b('0x5d'))['then'](function(_0xbbef4a){_0x4eab82(null,_0xbbef4a);})[_0xdd1b('0x15')](function(_0x5030dd){_0x4eab82(_0x5030dd);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x90')]=function(_0x470f31,_0x41ffe2){scripts[_0xdd1b('0x90')](this['channel'][_0xdd1b('0x3b')],_0x470f31[_0xdd1b('0x8a')],_0x470f31[_0xdd1b('0x8b')],_0x470f31[_0xdd1b('0x91')],_0x470f31[_0xdd1b('0x5d')],_0x470f31['aws_bot_name'])['then'](function(_0x4c234c){_0x41ffe2(null,_0x4c234c);})[_0xdd1b('0x15')](function(_0xf493e){_0x41ffe2(_0xf493e);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x92')]=function(_0x55ed5a,_0xe9b165,_0x4aec05){scripts[_0xdd1b('0x92')](_0xe9b165,_0x55ed5a[_0xdd1b('0x7c')],_0x55ed5a['google_asr_language']||'en-US')[_0xdd1b('0x18')](function(_0x579e79){_0x4aec05(null,_0x579e79);})[_0xdd1b('0x15')](function(_0x81ce0f){_0x4aec05(_0x81ce0f);});};AGIVertices['prototype']['tildeASR']=function(_0x50413b,_0x4c80b0,_0x43bf5e){scripts[_0xdd1b('0x93')](_0x4c80b0,_0x50413b[_0xdd1b('0x94')],_0x50413b['appsecret'],_0x50413b['uri'])[_0xdd1b('0x18')](function(_0xb87ede){_0x43bf5e(null,_0xb87ede);})[_0xdd1b('0x15')](function(_0x3f6611){_0x43bf5e(_0x3f6611);});};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x95')]=function(_0xd8390f){var _0x7af50f=_['includes'](verticesWithRetry,_0xd8390f[_0xdd1b('0x96')])?_0xd8390f:_[_0xdd1b('0x97')](_0xd8390f);for(var _0x35aaec in _0x7af50f){if(_0x7af50f[_0xdd1b('0x98')](_0x35aaec)){if(_0x7af50f[_0x35aaec]&&_[_0xdd1b('0x99')](_0x7af50f[_0x35aaec])){if(_[_0xdd1b('0x9a')](recursiveMapAttributes,_0x35aaec)){_0x7af50f[_0x35aaec]=this[_0xdd1b('0x9b')](_0x7af50f[_0x35aaec]);}else{_0x7af50f[_0x35aaec]=this[_0xdd1b('0x9c')](_0x7af50f[_0x35aaec]);}}}}return _0x7af50f;};AGIVertices[_0xdd1b('0x13')]['recursiveNodeIndex']=function(_0x311df2){for(var _0x5d2959 in _0x311df2){if(_0x311df2['hasOwnProperty'](_0x5d2959)){if(_['isPlainObject'](_0x311df2[_0x5d2959])){this[_0xdd1b('0x9d')](_0x311df2[_0x5d2959]);}else if(_[_0xdd1b('0x9e')](_0x311df2[_0x5d2959])){for(var _0x488ac2=0x0;_0x488ac2<_0x311df2[_0x5d2959][_0xdd1b('0x9f')];_0x488ac2++){this[_0xdd1b('0x9d')](_0x311df2[_0x5d2959][_0x488ac2]);}}else if(_[_0xdd1b('0x99')](_0x311df2[_0x5d2959])){_0x311df2[_0x5d2959]=this[_0xdd1b('0x9c')](_0x311df2[_0x5d2959]);}}}};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xa0')]=function(_0x117fa7,_0x1c561c){for(var _0x18e34a in _0x117fa7){if(_0x117fa7[_0xdd1b('0x98')](_0x18e34a)){if(_[_0xdd1b('0xa1')](_0x117fa7[_0x18e34a])){if(!_[_0xdd1b('0x43')](_0x117fa7[_0x18e34a])){this[_0xdd1b('0xa0')](_0x117fa7[_0x18e34a],util[_0xdd1b('0x2c')]('%s.%s',_0x1c561c,_0x18e34a));}}else if(_[_0xdd1b('0x9e')](_0x117fa7[_0x18e34a])){for(var _0x45c0cd=0x0;_0x45c0cd<_0x117fa7[_0x18e34a]['length'];_0x45c0cd++){this['saveRestApiResult'](_0x117fa7[_0x18e34a][_0x45c0cd],util[_0xdd1b('0x2c')](_0xdd1b('0xa2'),_0x1c561c,_0x18e34a+'['+_0x45c0cd+']'));}}else{if(!_[_0xdd1b('0x44')](_0x117fa7[_0x18e34a])){this['channel'][_0xdd1b('0xa3')](util['format'](_0xdd1b('0xa2'),_0x1c561c,_0x18e34a),_0x117fa7[_0x18e34a]);}}}}};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x9b')]=function(_0x48e7ce){try{var _0x379375=JSON[_0xdd1b('0x6c')](_0x48e7ce);this[_0xdd1b('0x9d')](_0x379375);return JSON[_0xdd1b('0x74')](_0x379375);}catch(_0x532949){return this[_0xdd1b('0x9c')](_0x48e7ce);}};AGIVertices['prototype'][_0xdd1b('0x9c')]=function(_0x313fed){var _0x31c0e4=_0x313fed[_0xdd1b('0xa4')]('{');for(var _0x3811a5=0x1;_0x3811a5<_0x31c0e4[_0xdd1b('0x9f')];_0x3811a5+=0x1){var _0x2f9881=_0x31c0e4[_0x3811a5][_0xdd1b('0xa4')]('}');if(_0x2f9881['length']>0x1){_0x313fed=_0x313fed[_0xdd1b('0xa5')]('{'+_0x2f9881[0x0]+'}',this[_0xdd1b('0x10')][_0xdd1b('0xa6')](_0x2f9881[0x0])[_0xdd1b('0xa7')]||_0x2f9881[0x0]);}}if(_0x31c0e4['length']===0x1){return _0x313fed[_0xdd1b('0x4c')]();}return this[_0xdd1b('0x9c')](_0x313fed);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xa8')]=function(_0xf8f395,_0x57ad90){var _0x470af7=this[_0xdd1b('0x10')][_0xdd1b('0xa6')](_0xf8f395);if(_0x470af7[_0xdd1b('0xa9')]===-0x1){return _0x470af7;}logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xaa'),_0x57ad90,_0x470af7[_0xdd1b('0xa7')]));return this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0x57ad90,_0x470af7[_0xdd1b('0xa7')]);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xab')]=function(_0x515577){return _0x515577&&_0x515577!=='0'&&_0x515577!=='-1'&&_0x515577!=='';};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xac')]=function(_0x3b435a){this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x3b435a,'-');_0x3b435a['retry']=_0x3b435a[_0xdd1b('0xac')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype']['mrcpsynth']=function(_0x173232){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xad'),_0x173232[_0xdd1b('0xae')]));if(!this['isConfigured'](_0x173232[_0xdd1b('0x5d')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb0'));}var _0x3d8ab8='\x22'+_0x173232[_0xdd1b('0x5d')]+'\x22';if(this['isConfigured'](_0x173232[_0xdd1b('0x7a')])){_0x3d8ab8+=','+_0x173232[_0xdd1b('0x7a')];}var _0x37db46=this[_0xdd1b('0x10')]['exec'](_0xdd1b('0xb1'),_0x3d8ab8);if(_0x37db46['result']===-0x1){return _0x37db46;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x3d8ab8));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xb2')]=function(_0x1904bd){logger['info'](util[_0xdd1b('0x2c')]('Enter\x20in\x20MRCPRecog\x20(%s)\x20block',_0x1904bd[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x1904bd[_0xdd1b('0xb3')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb4'));}var _0x27e7fd=_0x1904bd['grammar'];if(this['isConfigured'](_0x1904bd[_0xdd1b('0x7a')])){_0x27e7fd+=','+_0x1904bd[_0xdd1b('0x7a')];}var _0x373b39=this[_0xdd1b('0x10')][_0xdd1b('0x57')](_0xdd1b('0xb5'),_0x27e7fd);if(_0x373b39[_0xdd1b('0xa9')]===-0x1){return _0x373b39;}var _0x582ebd=this[_0xdd1b('0xa8')]('RECOG_CONFIDENCE()',_0xdd1b('0xb6'));if(_0x582ebd[_0xdd1b('0xa9')]===-0x1){return _0x582ebd;}var _0x6aa610=this[_0xdd1b('0xa8')](_0xdd1b('0xb7'),_0xdd1b('0xb8'));if(_0x6aa610[_0xdd1b('0xa9')]===-0x1){return _0x6aa610;}var _0x1b93d0=this[_0xdd1b('0xa8')](_0xdd1b('0xb9'),_0xdd1b('0xba'));if(_0x1b93d0[_0xdd1b('0xa9')]===-0x1){return _0x1b93d0;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x27e7fd));};AGIVertices['prototype']['agi']=function(_0x546862){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xbb'),_0x546862[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')][_0xdd1b('0x8')]([_0x546862[_0xdd1b('0xbc')],_0x546862[_0xdd1b('0xbd')]]);};AGIVertices['prototype'][_0xdd1b('0xbe')]=function(_0x5c37b1){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xbf'),_0x5c37b1[_0xdd1b('0xae')]));if(this['isConfigured'](_0x5c37b1['timeout'])){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xc0'),_0x5c37b1[_0xdd1b('0x69')]));var _0xbf9848=this[_0xdd1b('0x10')][_0xdd1b('0xc1')](_0x5c37b1[_0xdd1b('0x69')]);if(_0xbf9848[_0xdd1b('0xa9')]===-0x1){return _0xbf9848;}}return this['channel']['answer']();};AGIVertices[_0xdd1b('0x13')]['callback']=function(_0x5489ec){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xc2'),_0x5489ec[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x5489ec[_0xdd1b('0x48')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x5489ec,_0xdd1b('0xc3'));}_0x5489ec[_0xdd1b('0x4b')]=moment();if(this[_0xdd1b('0xab')](_0x5489ec[_0xdd1b('0xc4')])){_0x5489ec[_0xdd1b('0x4b')]=moment()['add'](_0x5489ec[_0xdd1b('0xc4')],'minutes');}if(!this[_0xdd1b('0xab')](_0x5489ec[_0xdd1b('0x4d')])){_0x5489ec[_0xdd1b('0x4d')]=0x2;}this[_0xdd1b('0x42')][_0xdd1b('0x70')](this,_0x5489ec);return this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xc5'),_0x5489ec['phone'],_0x5489ec[_0xdd1b('0x48')],_0x5489ec[_0xdd1b('0x4b')]));};AGIVertices[_0xdd1b('0x13')]['custom_app']=function(_0x429fcf){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xc6'),_0x429fcf[_0xdd1b('0xae')]));var _0x243eab=this[_0xdd1b('0x10')][_0xdd1b('0x57')](_0x429fcf[_0xdd1b('0xc7')],_0x429fcf[_0xdd1b('0x7a')]);if(_0x243eab['result']===-0x1){return _0x243eab;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format'](_0xdd1b('0xc8'),_0x429fcf[_0xdd1b('0xc7')],_0x429fcf[_0xdd1b('0x7a')]));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xc9')]=function(_0x759448){logger['info'](util[_0xdd1b('0x2c')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x759448[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x759448[_0xdd1b('0x5d')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')]('no\x20text\x20configured');}var _0x4ecde6='\x22'+_0x759448[_0xdd1b('0x5d')]+'\x22';if(this[_0xdd1b('0xab')](_0x759448[_0xdd1b('0x7a')])){_0x4ecde6+=','+_0x759448[_0xdd1b('0x7a')];}var _0x42406b=this[_0xdd1b('0x10')][_0xdd1b('0x57')](_0xdd1b('0xb1'),_0x4ecde6);if(_0x42406b[_0xdd1b('0xa9')]===-0x1){return _0x42406b;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Executed\x20command\x20MRCPSynth\x20%s',_0x4ecde6));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xca')]=function(_0x414d84){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0xcb'),_0x414d84[_0xdd1b('0xae')]));if(!this['isConfigured'](_0x414d84[_0xdd1b('0x5d')])){return this['channel']['noop']('no\x20text\x20configured');}var _0x958c82='\x22'+_0x414d84['text']+'\x22';if(this[_0xdd1b('0xab')](_0x414d84[_0xdd1b('0x7a')])){_0x958c82+=','+_0x414d84['options'];}var _0x50ce12=this[_0xdd1b('0x10')][_0xdd1b('0x57')](_0xdd1b('0xb1'),_0x958c82);if(_0x50ce12['result']===-0x1){return _0x50ce12;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Executed\x20command\x20MRCPSynth\x20%s',_0x958c82));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xcc')]=function(_0x64a945){logger['info'](util[_0xdd1b('0x2c')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x64a945[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x64a945[_0xdd1b('0xb3')])){return this['channel']['noop']('no\x20grammar\x20configured');}var _0x3ef641=_0x64a945[_0xdd1b('0xb3')];if(this[_0xdd1b('0xab')](_0x64a945[_0xdd1b('0x7a')])){_0x3ef641+=','+_0x64a945['options'];}var _0x310d0d=this[_0xdd1b('0x10')][_0xdd1b('0x57')]('MRCPRecog',_0x3ef641);if(_0x310d0d[_0xdd1b('0xa9')]===-0x1){return _0x310d0d;}var _0x1cd46f=this[_0xdd1b('0xa8')](_0xdd1b('0xcd'),_0xdd1b('0xce'));if(_0x1cd46f['result']===-0x1){return _0x1cd46f;}var _0x253b5a=this[_0xdd1b('0xa8')](_0xdd1b('0xb7'),_0xdd1b('0xcf'));if(_0x253b5a[_0xdd1b('0xa9')]===-0x1){return _0x253b5a;}var _0x4a0872=this[_0xdd1b('0xa8')](_0xdd1b('0xb9'),_0xdd1b('0xd0'));if(_0x4a0872[_0xdd1b('0xa9')]===-0x1){return _0x4a0872;}return this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xd1'),_0x3ef641));};AGIVertices[_0xdd1b('0x13')]['sestekasr']=function(_0x4b0561){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0xd2'),_0x4b0561[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x4b0561[_0xdd1b('0xb3')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb4'));}var _0x183117=_0x4b0561[_0xdd1b('0xb3')];if(this[_0xdd1b('0xab')](_0x4b0561[_0xdd1b('0x7a')])){_0x183117+=','+_0x4b0561[_0xdd1b('0x7a')];}var _0x3473b4=this[_0xdd1b('0x10')][_0xdd1b('0x57')](_0xdd1b('0xb5'),_0x183117);if(_0x3473b4[_0xdd1b('0xa9')]===-0x1){return _0x3473b4;}var _0x163318=this[_0xdd1b('0xa8')]('RECOG_CONFIDENCE()',_0xdd1b('0xd3'));if(_0x163318[_0xdd1b('0xa9')]===-0x1){return _0x163318;}var _0x41cde0=this[_0xdd1b('0xa8')](_0xdd1b('0xb7'),'SESTEK_ASR_TRANSCRIPT');if(_0x41cde0[_0xdd1b('0xa9')]===-0x1){return _0x41cde0;}var _0x18a86f=this['getAndSetVariable'](_0xdd1b('0xb9'),'SESTEK_ASR_INSTANCE');if(_0x18a86f[_0xdd1b('0xa9')]===-0x1){return _0x18a86f;}return this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Executed\x20command\x20MRCPRecog\x20%s',_0x183117));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xd4')]=function(_0x40c0b0){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0xd5'),_0x40c0b0['label']));if(!this[_0xdd1b('0xab')](_0x40c0b0[_0xdd1b('0xd6')])){return this['channel'][_0xdd1b('0x2f')](_0x40c0b0,_0xdd1b('0xd7'));}var _0x471793=this[_0xdd1b('0x1a')][_0xdd1b('0x70')](this,_0x40c0b0['odbc_id']);if(!_0x471793){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x40c0b0,_0xdd1b('0xd8'));}if(!this[_0xdd1b('0xab')](_0x40c0b0[_0xdd1b('0xd9')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x40c0b0,_0xdd1b('0xda'));}var _0x4e5524=_0x40c0b0[_0xdd1b('0xd9')][_0xdd1b('0x59')](/(\r\n|\n|\r)/gm,'\x20');this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format'](_0xdd1b('0xdb'),_0x4e5524));var _0x133bca=this['getQueryOdbc'][_0xdd1b('0x70')](this,_0x471793,_0x4e5524);this['createSquareDetailsReport']['sync'](this,_0x40c0b0,_0x4e5524);if(!this[_0xdd1b('0xab')](_0x40c0b0[_0xdd1b('0xdc')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x1edb8d=this[_0xdd1b('0xa6')]['sync'](this,_0x40c0b0[_0xdd1b('0xdc')]);if(!_0x1edb8d){return this['channel'][_0xdd1b('0x2f')](_0x40c0b0,_0xdd1b('0xdd'));}var _0x1de853=this;_0x133bca[_0xdd1b('0xde')](function(_0x2efde3,_0x3e34ee){Object[_0xdd1b('0xdf')](_0x2efde3)['forEach'](function(_0x2e57b8){_0x1de853[_0xdd1b('0x10')][_0xdd1b('0xa3')](util['format'](_0xdd1b('0xe0'),_0x1edb8d,_0x3e34ee,_0x2e57b8),_0x2efde3[_0x2e57b8]);});});this[_0xdd1b('0x10')]['setVariable'](util[_0xdd1b('0x2c')](_0xdd1b('0xe1'),_0x1edb8d),_0x133bca['length']);return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format'](_0xdd1b('0xe2'),_0x1edb8d));};AGIVertices['prototype'][_0xdd1b('0xe3')]=function(_0x232efa){logger[_0xdd1b('0xe4')](util['format'](_0xdd1b('0xe5'),_0x232efa['label']));if(!this[_0xdd1b('0xab')](_0x232efa['sip_id'])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x232efa,_0xdd1b('0xe6'));}var _0x4c403c=this['getUser'][_0xdd1b('0x70')](this,_0x232efa[_0xdd1b('0xe7')]);if(!_0x4c403c){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x232efa,'no\x20user\x20found');}var _0x67eff8=this['channel'][_0xdd1b('0x57')](_0xdd1b('0xe8'),[util['format'](_0xdd1b('0xe9'),_0x4c403c),_0x232efa[_0xdd1b('0x69')],_0x232efa[_0xdd1b('0xea')],_0x232efa[_0xdd1b('0x67')]]);if(_0x67eff8[_0xdd1b('0xa9')]===-0x1){return _0x67eff8;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Executed\x20command\x20%s','DIAL'));};AGIVertices[_0xdd1b('0x13')]['dialogflow']=function(_0x37068b){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0xeb'),_0x37068b['label']));if(!this[_0xdd1b('0xab')](_0x37068b[_0xdd1b('0x7c')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xec'));}if(!this[_0xdd1b('0xab')](_0x37068b['text'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb0'));}this['channel']['bot']=!![];this[_0xdd1b('0x37')](_0x37068b);this['createSquareMessage'](_0x37068b[_0xdd1b('0x5d')],'in','','');this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Trying\x20Dialogflow:\x20%s',_0x37068b[_0xdd1b('0x5d')]));var _0x104313=this[_0xdd1b('0x7b')][_0xdd1b('0x70')](this,_0x37068b);if(_0x104313){for(var _0x13ade7 in _0x104313){if(_0x104313[_0xdd1b('0x98')](_0x13ade7)){this[_0xdd1b('0x10')][_0xdd1b('0xa3')](util[_0xdd1b('0x2c')](_0xdd1b('0xed'),_0x13ade7['toUpperCase']()),_0x104313[_0x13ade7]);}}this[_0xdd1b('0x41')](_0x104313[_0xdd1b('0xee')],'out',_0xdd1b('0xef'),'');return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xf0'),_0x104313[_0xdd1b('0xee')]));}return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x37068b,_0xdd1b('0xf1'));};AGIVertices['prototype'][_0xdd1b('0xf2')]=function(_0x276413){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0xf3'),_0x276413[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x276413[_0xdd1b('0x7f')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xf4'));}if(!this[_0xdd1b('0xab')](_0x276413[_0xdd1b('0x80')])){return this['channel'][_0xdd1b('0xaf')](_0xdd1b('0xf5'));}if(!this[_0xdd1b('0xab')](_0x276413[_0xdd1b('0x81')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xf6'));}if(!this[_0xdd1b('0xab')](_0x276413['dialogflowV2_language'])){return this[_0xdd1b('0x10')]['noop'](_0xdd1b('0xf7'));}if(!this[_0xdd1b('0xab')](_0x276413[_0xdd1b('0x5d')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb0'));}this[_0xdd1b('0x10')][_0xdd1b('0xf8')]=!![];this[_0xdd1b('0x37')](_0x276413);this['createSquareMessage'](_0x276413[_0xdd1b('0x5d')],'in','','');this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format'](_0xdd1b('0xf9'),_0x276413[_0xdd1b('0x5d')]));var _0x1fa8d2=this[_0xdd1b('0x7e')][_0xdd1b('0x70')](this,_0x276413);if(_0x1fa8d2){for(var _0x1e756d in _0x1fa8d2){if(_0x1fa8d2[_0xdd1b('0x98')](_0x1e756d)){if(_0x1e756d!==_0xdd1b('0xfa')){this[_0xdd1b('0x10')][_0xdd1b('0xa3')](util[_0xdd1b('0x2c')]('DIALOGFLOW_%s',_0x1e756d['toUpperCase']()),_0x1fa8d2[_0x1e756d]);}}}this[_0xdd1b('0x41')](_0x1fa8d2[_0xdd1b('0xee')],_0xdd1b('0xfb'),_0xdd1b('0xf2'),_0x1fa8d2[_0xdd1b('0xfa')]);return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xfc'),_0x1fa8d2[_0xdd1b('0xee')]));}return this['channel'][_0xdd1b('0x2f')](_0x276413,_0xdd1b('0xfd'));};AGIVertices['prototype'][_0xdd1b('0xfe')]=function(_0x42e5fb){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20SESTEKNDA\x20(%s)\x20block',_0x42e5fb[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x42e5fb[_0xdd1b('0xff')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x100'));}if(!this['isConfigured'](_0x42e5fb['username'])){return this['channel'][_0xdd1b('0xaf')]('no\x20username\x20configured');}if(!this[_0xdd1b('0xab')](_0x42e5fb['password'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x101'));}if(!this[_0xdd1b('0xab')](_0x42e5fb[_0xdd1b('0x102')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb0'));}this[_0xdd1b('0x10')][_0xdd1b('0xf8')]=!![];this['createSquareDetailsReport'](_0x42e5fb);this[_0xdd1b('0x41')](_0x42e5fb[_0xdd1b('0x5d')],'in','','');this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format']('Trying\x20SestekNDA:\x20%s',_0x42e5fb[_0xdd1b('0x5d')]));var _0x38ad44=this[_0xdd1b('0x83')][_0xdd1b('0x70')](this,_0x42e5fb);if(_0x38ad44){for(var _0x5c4a41 in _0x38ad44){if(_0x38ad44[_0xdd1b('0x98')](_0x5c4a41)){this[_0xdd1b('0x10')]['setVariable'](util[_0xdd1b('0x2c')]('SESTEK_NDA_%s',_0x5c4a41[_0xdd1b('0x6b')]()),_0x38ad44[_0x5c4a41]);}}this[_0xdd1b('0x41')](_0x38ad44['speech'],_0xdd1b('0xfb'),_0xdd1b('0xfe'),'');if(_0x38ad44[_0xdd1b('0x103')]){this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x38ad44[_0xdd1b('0x103')]));var _0x30550c=this[_0xdd1b('0x10')][_0xdd1b('0x104')](_0x38ad44[_0xdd1b('0x103')]);try{fs[_0xdd1b('0x105')](_0x38ad44[_0xdd1b('0x103')]+_0xdd1b('0x106'));}catch(_0xedb575){logger[_0xdd1b('0x2f')](_0xedb575);}return _0x30550c;}else{return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x107'),_0x38ad44[_0xdd1b('0xee')]));}}return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x42e5fb,_0xdd1b('0x108'));};AGIVertices['prototype'][_0xdd1b('0x109')]=function(_0x5a0d49){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x10a'),_0x5a0d49[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x109'));};AGIVertices['prototype']['ext_dial']=function(_0x13130c){logger['info'](util[_0xdd1b('0x2c')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x13130c[_0xdd1b('0xae')]));var _0x24aca6='';if(_0x13130c[_0xdd1b('0x10b')]){if(!this[_0xdd1b('0xab')](_0x13130c['trunk_id'])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x13130c,_0xdd1b('0x10c'));}else{var _0x52f802=parseInt(_0x13130c[_0xdd1b('0x10b')],0xa);if(isNaN(_0x52f802)){_0x24aca6=_0x13130c[_0xdd1b('0x10b')];}else{_0x24aca6=this['getTrunk'][_0xdd1b('0x70')](this,_0x13130c['trunk_id']);if(!_0x24aca6){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x13130c,_0xdd1b('0x10d'));}}}}else if(_0x13130c[_0xdd1b('0x10e')]){_0x24aca6=_0x13130c[_0xdd1b('0x10e')];}else{return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x13130c,_0xdd1b('0x10c'));}var _0x4eacd0=this['channel']['exec'](_0xdd1b('0xe8'),[util['format'](_0xdd1b('0x10f'),_0x24aca6,_0x13130c[_0xdd1b('0x47')]),_0x13130c[_0xdd1b('0x69')],_0x13130c['opts'],_0x13130c[_0xdd1b('0x67')]]);if(_0x4eacd0[_0xdd1b('0xa9')]===-0x1){return _0x4eacd0;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x110'),_0xdd1b('0xe8')));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x111')]=function(_0x548c58){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x112'),_0x548c58[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x111'));};AGIVertices['prototype'][_0xdd1b('0xe')]=function(_0x333253){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x333253[_0xdd1b('0xae')]));if(_0x333253[_0xdd1b('0x113')]===0x0){return this[_0xdd1b('0xac')](_0x333253);}_0x333253[_0xdd1b('0x113')]-=0x1;if(!this[_0xdd1b('0xab')](_0x333253[_0xdd1b('0x114')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x333253,_0xdd1b('0x115'));}var _0x5b0848=this[_0xdd1b('0x21')][_0xdd1b('0x70')](this,_0x333253[_0xdd1b('0x114')]);if(!_0x5b0848){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x333253,_0xdd1b('0x116'));}if(!this['isConfigured'](_0x333253[_0xdd1b('0xdc')])){return this['channel'][_0xdd1b('0x2f')](_0xdd1b('0x117'));}var _0x400ace=this[_0xdd1b('0x10')][_0xdd1b('0x118')](_0x5b0848,_0x333253[_0xdd1b('0x119')],_0x333253[_0xdd1b('0x11a')]);var _0x30210a=_0x400ace[_0xdd1b('0xa9')]?_0x400ace['result'][_0xdd1b('0x4c')]():'';logger['info'](_0xdd1b('0x11b'),JSON['stringify'](_0x400ace));if(_0x400ace[_0xdd1b('0xa9')]===-0x1){this['createSquareDetailsReport'][_0xdd1b('0x70')](this,_0x333253,_0x30210a);return _0x400ace;}else if(_0x400ace[_0xdd1b('0xa7')]===_0xdd1b('0x69')){_0x400ace[_0xdd1b('0xa9')]=_0x30210a[_0xdd1b('0x9f')]>=parseInt(_0x333253[_0xdd1b('0x11c')])?'x':'i';}else{_0x400ace[_0xdd1b('0xa9')]=_0x30210a[_0xdd1b('0x9f')]>=parseInt(_0x333253['mindigit'])&&_0x30210a[_0xdd1b('0x9f')]<=parseInt(_0x333253[_0xdd1b('0x11a')])?'x':'i';}var _0x2bbb37=this[_0xdd1b('0xa6')]['sync'](this,_0x333253[_0xdd1b('0xdc')]);if(!_0x2bbb37){return this['channel']['error'](_0x333253,'no\x20variable\x20found');}this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0x2bbb37,_0x30210a);if(this[_0xdd1b('0xab')](_0x333253[_0xdd1b('0x11d')])){var _0x446a17=parseInt(_0x333253['hiddendigitsnum'],0xa);var _0x2a6881=rs[_0xdd1b('0x11e')]({'charset':'*','length':_0x446a17});var _0x2939fe=_0x30210a[_0xdd1b('0x9f')];if(_0x2939fe>0x0){if(_0x2939fe>_0x446a17){this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x333253,_0x333253['hiddendigitspos']==='first'?_0x2a6881+_0x30210a['substr'](_0x446a17):_0x30210a[_0xdd1b('0x11f')](0x0,_0x2939fe-_0x446a17)+_0x2a6881);}else{this['createSquareDetailsReport'][_0xdd1b('0x70')](this,_0x333253,rs[_0xdd1b('0x11e')]({'charset':'*','length':_0x2939fe}));}}else{this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x333253,'');}}else{this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x333253,_0x30210a);}return _0x400ace;};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0xf')]=function(_0x534099){logger['info'](util[_0xdd1b('0x2c')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x534099[_0xdd1b('0xae')]));return this['getdigits'](_0x534099);};AGIVertices['prototype']['goal']=function(_0xb38d46){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0xb38d46[_0xdd1b('0xae')]));this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0xb38d46,_0xb38d46['goalname']);return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x120'),_0xb38d46['goalname']));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x121')]=function(_0x171ab0){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x122'),_0x171ab0[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x171ab0[_0xdd1b('0x8a')])||!this[_0xdd1b('0xab')](_0x171ab0['aws_secret_access_key'])){return this[_0xdd1b('0x10')]['noop'](_0xdd1b('0x123'));}if(!this[_0xdd1b('0xab')](_0x171ab0[_0xdd1b('0x5d')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xb0'));}this['channel']['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x124'),_0x171ab0['text']));var _0x46fe30=this[_0xdd1b('0x89')]['sync'](this,_0x171ab0);if(_0x46fe30){this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x125'),_0x46fe30));var _0x476332=this['channel'][_0xdd1b('0x104')](_0x46fe30);try{fs[_0xdd1b('0x105')](_0x46fe30+_0xdd1b('0x106'));}catch(_0x327df3){logger['error'](_0x327df3);}return _0x476332;}return this[_0xdd1b('0x10')]['error'](_0x171ab0,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0xdd1b('0x13')]['awslex']=function(_0x184730){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x126'),_0x184730['label']));if(!this[_0xdd1b('0xab')](_0x184730[_0xdd1b('0x8a')])||!this[_0xdd1b('0xab')](_0x184730[_0xdd1b('0x8b')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x123'));}if(!this[_0xdd1b('0xab')](_0x184730[_0xdd1b('0x127')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x128'));}if(!this['isConfigured'](_0x184730[_0xdd1b('0x5d')])){return this[_0xdd1b('0x10')]['noop'](_0xdd1b('0xb0'));}this[_0xdd1b('0x10')]['bot']=!![];this[_0xdd1b('0x37')](_0x184730);this[_0xdd1b('0x41')](_0x184730[_0xdd1b('0x5d')],'in','','');this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x129'),_0x184730[_0xdd1b('0x5d')]));var _0x228468=this['awsLex'][_0xdd1b('0x70')](this,_0x184730);if(_0x228468){for(var _0x447522 in _0x228468){if(_0x228468[_0xdd1b('0x98')](_0x447522)&&_[_0xdd1b('0x99')](_0x228468[_0x447522])){this[_0xdd1b('0x10')][_0xdd1b('0xa3')](util['format'](_0xdd1b('0x12a'),_0x447522[_0xdd1b('0x6b')]()),_0x228468[_0x447522]);}}if(_[_0xdd1b('0x44')](_0x228468[_0xdd1b('0x12b')])){return this['channel']['noop'](_0xdd1b('0x12c'));}else{this[_0xdd1b('0x41')](_0x228468['message'],_0xdd1b('0xfb'),_0xdd1b('0x12d'),'');return this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x12e'),_0x228468[_0xdd1b('0x12b')]));}}return this['channel'][_0xdd1b('0x2f')](_0x184730,_0xdd1b('0x12f'));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x130')]=function(_0xd8a87f){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x131'),_0xd8a87f['label'],_0xd8a87f['timeout']));if(!this[_0xdd1b('0xab')](_0xd8a87f['key'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xec'));}var _0x2b5ba3=_0xdd1b('0x132');var _0x1fc4e0=util['format'](_0xdd1b('0x133'),FILES_PATH,rs['generate'](0x4));var _0x51b20b=util[_0xdd1b('0x2c')](_0xdd1b('0xa2'),_0x1fc4e0,_0x2b5ba3);var _0x378baa=!![];if(_0xd8a87f[_0xdd1b('0x134')]===_0xdd1b('0x135')){_0x378baa=![];}var _0xc2e75c=this[_0xdd1b('0x10')]['recordFile'](_0x1fc4e0,_0x2b5ba3,_0xd8a87f[_0xdd1b('0x136')],_0xd8a87f['timeout'],undefined,_0x378baa);if(_0xc2e75c[_0xdd1b('0xa9')]!==-0x1){this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x137'),_0x51b20b));var _0x3d9039=this[_0xdd1b('0x92')][_0xdd1b('0x70')](this,_0xd8a87f,_0x51b20b);if(_0x3d9039){for(var _0x2b869f in _0x3d9039){if(_0x3d9039[_0xdd1b('0x98')](_0x2b869f)){this['channel'][_0xdd1b('0xa3')](util['format'](_0xdd1b('0x138'),_0x2b869f['toUpperCase']()),_0x3d9039[_0x2b869f]);}}return this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('GoogleASR\x20Result\x20%s',JSON[_0xdd1b('0x74')](_0x3d9039)));}}return _0xc2e75c;};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x139')]=function(_0x93126){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x13a'),_0x93126[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x93126[_0xdd1b('0x94')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x13b'));}if(!this[_0xdd1b('0xab')](_0x93126['appsecret'])){return this['channel'][_0xdd1b('0xaf')]('no\x20appsecret\x20configured');}var _0x5ef6a3=_0xdd1b('0x132');var _0x346a53=util['format'](_0xdd1b('0x133'),FILES_PATH,rs['generate'](0x4));var _0x1caea9=util[_0xdd1b('0x2c')](_0xdd1b('0xa2'),_0x346a53,_0x5ef6a3);var _0x2ce490=!![];if(_0x93126[_0xdd1b('0x134')]===_0xdd1b('0x135')){_0x2ce490=![];}var _0x229f6b=this[_0xdd1b('0x10')][_0xdd1b('0x13c')](_0x346a53,_0x5ef6a3,_0x93126[_0xdd1b('0x136')],_0x93126[_0xdd1b('0x69')],undefined,_0x2ce490);if(_0x229f6b[_0xdd1b('0xa9')]!==-0x1){this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x13d'),_0x1caea9));var _0x179ec9=this[_0xdd1b('0x93')][_0xdd1b('0x70')](this,_0x93126,_0x1caea9);if(_0x179ec9){for(var _0x5af159 in _0x179ec9){if(_0x179ec9[_0xdd1b('0x98')](_0x5af159)){this[_0xdd1b('0x10')][_0xdd1b('0xa3')](util[_0xdd1b('0x2c')](_0xdd1b('0x13e'),_0x5af159[_0xdd1b('0x6b')]()),_0x179ec9[_0x5af159]);}}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('TildeASR\x20Result\x20%s',JSON[_0xdd1b('0x74')](_0x179ec9)));}}return _0x229f6b;};AGIVertices[_0xdd1b('0x13')]['gotoc']=function(_0x13c82d){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x13f'),_0x13c82d[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')]['continueAt'](_0x13c82d[_0xdd1b('0x3d')],_0x13c82d[_0xdd1b('0x140')],_0x13c82d['priority']);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x141')]=function(_0x22d27c){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x142'),_0x22d27c[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x22d27c[_0xdd1b('0x143')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x22d27c,_0xdd1b('0x144'));}try{var _0x459d06=eval(_0x22d27c[_0xdd1b('0x143')])?_0xdd1b('0x145'):_0xdd1b('0x146');this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('EVAL\x20CONDITION\x20%s\x20%s',_0x22d27c[_0xdd1b('0x143')],_0x459d06));return{'code':0xc8,'result':_0x459d06};}catch(_0x51e9d6){return{'code':0xc8,'result':_0xdd1b('0x146')};}};AGIVertices[_0xdd1b('0x13')]['gotoiftime']=function(_0x377ad4){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x147'),_0x377ad4['label']));if(!this['isConfigured'](_0x377ad4[_0xdd1b('0x148')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x377ad4,'no\x20interval\x20configured');}var _0x1ca012=this[_0xdd1b('0x27')]['sync'](this,_0x377ad4['interval_id']);if(!_0x1ca012){return this[_0xdd1b('0x10')]['error'](_0x377ad4,_0xdd1b('0x149'));}for(var _0x39d85c=0x0;_0x39d85c<_0x1ca012[_0xdd1b('0x9f')];_0x39d85c+=0x1){var _0x45c0b7=this[_0xdd1b('0x10')][_0xdd1b('0xa6')](util[_0xdd1b('0x2c')](_0xdd1b('0x14a'),_0x1ca012[_0x39d85c]));if(_0x45c0b7[_0xdd1b('0xa9')]===-0x1){return _0x45c0b7;}logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x14b'),_0x1ca012[_0x39d85c],_0x45c0b7['extra']));if(_0x45c0b7[_0xdd1b('0xa7')]===_0xdd1b('0x145')){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x14b'),_0x1ca012[_0x39d85c],_0xdd1b('0x145')));this['channel'][_0xdd1b('0xaf')](util['format'](_0xdd1b('0x14b'),_0x1ca012[_0x39d85c],_0xdd1b('0x145')));return{'code':0xc8,'result':_0xdd1b('0x145')};}else{logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x14b'),_0x1ca012[_0x39d85c],_0xdd1b('0x146')));this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x14b'),_0x1ca012[_0x39d85c],'false'));}}return{'code':0xc8,'result':_0xdd1b('0x146')};};AGIVertices[_0xdd1b('0x13')]['hangup']=function(_0x23f5e9){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x23f5e9[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')]['hangup']();};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x14c')]=function(_0x8f9405){logger['info'](util['format'](_0xdd1b('0x14d'),_0x8f9405[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x8f9405['key'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xec'));}var _0x5d12ec=_0xdd1b('0x132');var _0x3afa0e=util[_0xdd1b('0x2c')](_0xdd1b('0x133'),FILES_PATH,rs[_0xdd1b('0x11e')](0x4));var _0x42ce02=util[_0xdd1b('0x2c')](_0xdd1b('0xa2'),_0x3afa0e,_0x5d12ec);var _0x54f54b=!![];if(_0x8f9405['beep']===_0xdd1b('0x135')){_0x54f54b=![];}var _0x42de23=this['channel'][_0xdd1b('0x13c')](_0x3afa0e,_0x5d12ec,_0x8f9405[_0xdd1b('0x136')],_0x8f9405[_0xdd1b('0x69')],undefined,_0x54f54b);if(_0x42de23[_0xdd1b('0xa9')]!==-0x1){this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x14e'),_0x42ce02));var _0x3fdea5=this['ispeechASR']['sync'](this,_0x8f9405,_0x42ce02);if(_0x3fdea5){for(var _0x446db0 in _0x3fdea5){if(_0x3fdea5['hasOwnProperty'](_0x446db0)){this[_0xdd1b('0x10')]['setVariable'](util[_0xdd1b('0x2c')](_0xdd1b('0x14f'),_0x446db0[_0xdd1b('0x6b')]()),_0x3fdea5[_0x446db0]);}}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('IspeechASR\x20Result\x20%s',JSON[_0xdd1b('0x74')](_0x3fdea5)));}}return _0x42de23;};AGIVertices['prototype'][_0xdd1b('0x150')]=function(_0x500a57){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x151'),_0x500a57['label']));if(!this['isConfigured'](_0x500a57['key'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0xec'));}if(!this[_0xdd1b('0xab')](_0x500a57['text'])){return this[_0xdd1b('0x10')]['noop']('no\x20text\x20configured');}this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util['format']('Trying\x20ispeech\x20TTS\x20%s',_0x500a57[_0xdd1b('0x5d')]));var _0xca8987=this['ispeechTTS'][_0xdd1b('0x70')](this,_0x500a57);if(_0xca8987){this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x14e'),_0xca8987));var _0x4967f7=this[_0xdd1b('0x10')][_0xdd1b('0x104')](_0xca8987,_0x500a57['intKey']);try{fs[_0xdd1b('0x105')](_0xca8987+'.wav');}catch(_0x16824d){logger[_0xdd1b('0x2f')](_0x16824d);}return _0x4967f7;}return this['channel'][_0xdd1b('0x2f')](_0x500a57,_0xdd1b('0x152'));};AGIVertices['prototype'][_0xdd1b('0x153')]=function(_0x45550b){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x154'),_0x45550b[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x45550b['findBy'])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x45550b,_0xdd1b('0x155'));}logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x156'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x45550b[_0xdd1b('0x157')]));var _0x53a037=this[_0xdd1b('0x53')]['sync'](this,_0x45550b['findBy']);if(_0x53a037){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x158'),this[_0xdd1b('0x10')]['callerid'],_0x45550b[_0xdd1b('0x157')]));this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this[_0xdd1b('0x10')]['callerid'],_0x45550b[_0xdd1b('0x157')]));return{'code':0xc8,'result':_0xdd1b('0x159')};}else{logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x15a'),this[_0xdd1b('0x10')]['callerid'],_0x45550b[_0xdd1b('0x157')]));this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel']['callerid'],_0x45550b['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0xdd1b('0x15b')]=function(_0x135a6f){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x135a6f[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x135a6f[_0xdd1b('0x157')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x135a6f,'no\x20find\x20by\x20configured');}logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x156'),this[_0xdd1b('0x10')]['callerid'],_0x135a6f[_0xdd1b('0x157')]));var _0x12dd40=this[_0xdd1b('0x52')][_0xdd1b('0x70')](this,_0x135a6f[_0xdd1b('0x157')]);if(_0x12dd40){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this['channel'][_0xdd1b('0x39')],_0x135a6f[_0xdd1b('0x157')]));this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x135a6f[_0xdd1b('0x157')]));return{'code':0xc8,'result':_0xdd1b('0x159')};}else{logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x15a'),this['channel'][_0xdd1b('0x39')],_0x135a6f['findBy']));this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x15a'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x135a6f[_0xdd1b('0x157')]));return{'code':0xc8,'result':_0xdd1b('0x15c')};}};AGIVertices['prototype']['math']=function(_0x4cfc12){logger['info'](util['format']('Enter\x20in\x20MATH\x20(%s)\x20block',_0x4cfc12[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x4cfc12['operation'])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x4cfc12,_0xdd1b('0x15d'));}this['channel']['noop'](util['format']('math\x20%s',_0x4cfc12['operation']));var _0x1eb2ec=eval(_0x4cfc12[_0xdd1b('0x15e')]);if(!this[_0xdd1b('0xab')](_0x4cfc12[_0xdd1b('0xdc')])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x1d651a=this['getVariable'][_0xdd1b('0x70')](this,_0x4cfc12['variable_id']);if(!_0x1d651a){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x4cfc12,_0xdd1b('0xdd'));}if(_[_0xdd1b('0x9e')](_0x1eb2ec)){var _0x31cfde=this;_0x1eb2ec['forEach'](function(_0x761c0f,_0x1598bf){_0x31cfde[_0xdd1b('0x10')]['setVariable'](util[_0xdd1b('0x2c')](_0xdd1b('0x15f'),_0x1d651a,_0x1598bf),_0x761c0f);});return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')]('variable\x20%s[key]\x20set',_0x1d651a));}else{return this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0x1d651a,_0x1eb2ec);}};AGIVertices['prototype'][_0xdd1b('0xd')]=function(_0x8b10d8){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x160'),_0x8b10d8[_0xdd1b('0xae')]));if(_0x8b10d8[_0xdd1b('0x113')]===0x0){return this[_0xdd1b('0xac')](_0x8b10d8);}_0x8b10d8['retry']-=0x1;if(!this['isConfigured'](_0x8b10d8[_0xdd1b('0x114')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x8b10d8,_0xdd1b('0x115'));}var _0x2b81db=this[_0xdd1b('0x21')][_0xdd1b('0x70')](this,_0x8b10d8[_0xdd1b('0x114')]);if(!_0x2b81db){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x8b10d8,'no\x20file\x20audio\x20found');}var _0x38e7cf=this[_0xdd1b('0x10')][_0xdd1b('0x118')](_0x2b81db,_0x8b10d8[_0xdd1b('0x119')],_0x8b10d8[_0xdd1b('0x161')]);var _0x35a997=_0x38e7cf['result'];if(_0x38e7cf['result']===-0x1){this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x8b10d8,'-1');return _0x38e7cf;}else if(_0x38e7cf[_0xdd1b('0xa7')]===_0xdd1b('0x69')){_0x38e7cf[_0xdd1b('0xa9')]=_0x38e7cf[_0xdd1b('0xa9')][_0xdd1b('0x9f')]>0x0?_0x38e7cf['result']:'t';}else if(_[_0xdd1b('0x43')](_0x38e7cf[_0xdd1b('0xa9')])){_0x38e7cf[_0xdd1b('0xa9')]='#';_0x35a997='#';}if(!this[_0xdd1b('0xab')](_0x8b10d8[_0xdd1b('0xdc')])){this[_0xdd1b('0x10')][_0xdd1b('0xaf')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x1445bf=this[_0xdd1b('0xa6')][_0xdd1b('0x70')](this,_0x8b10d8[_0xdd1b('0xdc')]);if(!_0x1445bf){return this['channel'][_0xdd1b('0x2f')](_0x8b10d8,'no\x20variable\x20found');}this[_0xdd1b('0x10')]['setVariable'](_0x1445bf,_0x35a997);}this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x8b10d8,_0x35a997);return _0x38e7cf;};AGIVertices['prototype'][_0xdd1b('0xaf')]=function(_0x2c933b){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x162'),_0x2c933b['label']));return this['channel'][_0xdd1b('0xaf')](_0x2c933b[_0xdd1b('0x163')]||_0x2c933b[_0xdd1b('0xae')]);};AGIVertices['prototype'][_0xdd1b('0x164')]=function(_0x408fe2){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x165'),_0x408fe2['label']));if(!this[_0xdd1b('0xab')](_0x408fe2['findBy'])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x408fe2,_0xdd1b('0x155'));}logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x156'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x408fe2[_0xdd1b('0x157')]));var _0x45001a=this[_0xdd1b('0x4e')]['sync'](this,_0x408fe2[_0xdd1b('0x166')]);var _0x111e83=this[_0xdd1b('0x167')][_0xdd1b('0x70')](this,_0x408fe2[_0xdd1b('0x157')],_0x45001a);if(_0x111e83){logger[_0xdd1b('0x30')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xdd1b('0x10')]['callerid'],_0x408fe2['findBy']));this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x408fe2[_0xdd1b('0x157')]));return{'code':0xc8,'result':'success'};}else{logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x15a'),this[_0xdd1b('0x10')]['callerid'],_0x408fe2[_0xdd1b('0x157')]));this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this[_0xdd1b('0x10')]['callerid'],_0x408fe2['findBy']));return{'code':0xc8,'result':_0xdd1b('0x15c')};}};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x168')]=function(_0x55a32e){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x169'),_0x55a32e['label']));if(!this['isConfigured'](_0x55a32e[_0xdd1b('0x114')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x55a32e,_0xdd1b('0x115'));}var _0x5ed588=this[_0xdd1b('0x21')][_0xdd1b('0x70')](this,_0x55a32e[_0xdd1b('0x114')]);if(!_0x5ed588){return this[_0xdd1b('0x10')]['error'](_0x55a32e,_0xdd1b('0x116'));}var _0x2ac164=this[_0xdd1b('0x10')]['exec'](_0xdd1b('0x16a'),[_0x5ed588,_0x55a32e[_0xdd1b('0xea')]]);if(_0x2ac164[_0xdd1b('0xa9')]===-0x1){return _0x2ac164;}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xc8'),_0xdd1b('0x16a'),_0x5ed588));};AGIVertices['prototype'][_0xdd1b('0x16b')]=function(_0x2d17af){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x16c'),_0x2d17af[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x2d17af[_0xdd1b('0x16d')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x2d17af,'no\x20queue\x20selected');}var _0x356be9='';var _0x52938d=parseInt(_0x2d17af['queue_id'],0xa);if(isNaN(_0x52938d)){_0x356be9=_0x2d17af[_0xdd1b('0x16d')];}else{_0x356be9=this[_0xdd1b('0x16')][_0xdd1b('0x70')](this,_0x2d17af[_0xdd1b('0x16d')]);if(!_0x356be9){return this['channel'][_0xdd1b('0x2f')](_0x2d17af,'no\x20queue\x20found');}}var _0x47131e='';if(this[_0xdd1b('0xab')](_0x2d17af[_0xdd1b('0x114')])){var _0xffb5f9=this[_0xdd1b('0x21')][_0xdd1b('0x70')](this,_0x2d17af[_0xdd1b('0x114')]);if(_0xffb5f9){_0x47131e=_0xffb5f9;}}this['createSquareDetailsReport'][_0xdd1b('0x70')](this,_0x2d17af,_0x356be9);if(_0x2d17af['opts'][_0xdd1b('0x16e')]('x')<0x0){_0x2d17af['opts']+='x';}if(_0x2d17af[_0xdd1b('0xea')][_0xdd1b('0x16e')]('X')<0x0){_0x2d17af['opts']+='X';}this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0xdd1b('0x16f'),_0x356be9?_0x356be9[_0xdd1b('0x170')]():'');var _0x1d060e=this['channel']['exec'](_0xdd1b('0x171'),[_0x356be9,_0x2d17af[_0xdd1b('0xea')],_0x2d17af['url'],_0x47131e,_0x2d17af[_0xdd1b('0x69')],_0x2d17af[_0xdd1b('0x8')],_0x2d17af[_0xdd1b('0x172')],_0x2d17af[_0xdd1b('0x173')],'',_0x2d17af[_0xdd1b('0x174')]]);if(_0x1d060e['result']===-0x1){return _0x1d060e;}return this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')]('Executed\x20command\x20%s\x20%s',_0xdd1b('0x171'),_0x356be9));};AGIVertices['prototype']['record']=function(_0x274558){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20RECORD\x20(%s)\x20block',_0x274558['label']));var _0x448031=_0x274558[_0xdd1b('0x175')]||_0xdd1b('0x132');var _0x3be05c=util[_0xdd1b('0x2c')](_0xdd1b('0x176'),this[_0xdd1b('0x10')]['uniqueid'],rs[_0xdd1b('0x11e')](0x5));var _0x5b283d=util[_0xdd1b('0x2c')](_0xdd1b('0x177'),FILES_PATH,_0x3be05c,_0x448031);var _0x14c1b5=util[_0xdd1b('0x2c')](_0xdd1b('0x133'),FILES_PATH,_0x3be05c);this[_0xdd1b('0x3a')][_0xdd1b('0x70')](this,_0x274558,_0x3be05c,_0x5b283d);this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0xdd1b('0x178'),_0x3be05c);logger[_0xdd1b('0x30')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x14c1b5,_0x448031,_0x274558[_0xdd1b('0x179')],_0x274558[_0xdd1b('0x69')]);return this[_0xdd1b('0x10')][_0xdd1b('0x13c')](_0x14c1b5,_0x448031,_0x274558[_0xdd1b('0x179')],_0x274558[_0xdd1b('0x69')],undefined,!![]);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x17a')]=function(_0x1d34b7){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x17b'),_0x1d34b7['label']));if(!this[_0xdd1b('0xab')](_0x1d34b7['url'])){return this['channel'][_0xdd1b('0xaf')](_0xdd1b('0x17c'));}var _0x30a66a=this[_0xdd1b('0x66')]['sync'](this,_0x1d34b7);logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x17d'),util[_0xdd1b('0x17e')](_0x30a66a,{'showHidden':![],'depth':null})));if(!this[_0xdd1b('0xab')](_0x1d34b7['variable_id'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x17f'));}var _0x20b539=this['getVariable'][_0xdd1b('0x70')](this,_0x1d34b7[_0xdd1b('0xdc')]);if(!_0x20b539){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x1d34b7,_0xdd1b('0xdd'));}this[_0xdd1b('0x10')][_0xdd1b('0xa3')](util[_0xdd1b('0x2c')](_0xdd1b('0x180'),_0x20b539),_0x30a66a[_0xdd1b('0x78')]?_0x30a66a[_0xdd1b('0x78')]:_0xdd1b('0x181'));this[_0xdd1b('0x10')]['setVariable'](util[_0xdd1b('0x2c')](_0xdd1b('0x182'),_0x20b539),_0x30a66a['statusMessage']?_0x30a66a['statusMessage']:'OK');if(_0x30a66a['body']){try{this[_0xdd1b('0xa0')](_0x30a66a['body'],_0x20b539);}catch(_0x4db08f){logger[_0xdd1b('0x2f')](util[_0xdd1b('0x2c')](_0xdd1b('0x183'),_0x20b539));}}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xe2'),_0x20b539));};AGIVertices['prototype'][_0xdd1b('0x184')]=function(_0x2e2878){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x185'),_0x2e2878['label']));return this[_0xdd1b('0x10')][_0xdd1b('0x186')](_0x2e2878['digits'][_0xdd1b('0x59')](/\s+/g,''),_0x2e2878[_0xdd1b('0x179')]);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x187')]=function(_0x11d473){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x11d473[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')][_0xdd1b('0x188')](_0x11d473[_0xdd1b('0x189')][_0xdd1b('0x59')](/\s+/g,''),_0x11d473['escape_digits']);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x18a')]=function(_0x35dc0f){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x18b'),_0x35dc0f[_0xdd1b('0xae')]));return this[_0xdd1b('0x10')][_0xdd1b('0x18c')](_0x35dc0f['text'],_0x35dc0f[_0xdd1b('0x179')]);};AGIVertices['prototype']['sendMail']=function(_0x4c1e2a){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x18d'),_0x4c1e2a[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x4c1e2a['account_id'])){return this[_0xdd1b('0x10')][_0xdd1b('0xaf')]('no\x20mail\x20account\x20configured');}var _0x512f33=this[_0xdd1b('0x24')]['sync'](this,_0x4c1e2a['account_id']);if(!_0x512f33||!_0x512f33[_0xdd1b('0x18e')]){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x4c1e2a,_0xdd1b('0x18f'));}var _0x409c4c={'from':util[_0xdd1b('0x2c')]('\x22%s\x22\x20<%s>',_0x512f33['name'],_0x512f33[_0xdd1b('0x190')]||_0x512f33['Smtp'][_0xdd1b('0x191')]),'to':_0x4c1e2a['to']||'','cc':_0x4c1e2a['cc']||'','bcc':_0x4c1e2a[_0xdd1b('0x192')]||'','subject':_0x4c1e2a['subject'],'html':_0x4c1e2a[_0xdd1b('0x5d')],'text':_0x4c1e2a[_0xdd1b('0x5d')]};var _0xb3b3a6={'tls':{'rejectUnauthorized':![]}};if(_0x512f33[_0xdd1b('0x18e')][_0xdd1b('0x193')]){_0xb3b3a6[_0xdd1b('0x193')]=_0x512f33[_0xdd1b('0x18e')][_0xdd1b('0x193')];}else{_0xb3b3a6[_0xdd1b('0x194')]=_0x512f33[_0xdd1b('0x18e')][_0xdd1b('0x194')];_0xb3b3a6[_0xdd1b('0x195')]=_0x512f33['Smtp']['port'];_0xb3b3a6[_0xdd1b('0x196')]=_0x512f33[_0xdd1b('0x18e')]['secure'];}if(_0x512f33[_0xdd1b('0x18e')]['authentication']){_0xb3b3a6[_0xdd1b('0x197')]={'user':_0x512f33[_0xdd1b('0x18e')]['user'],'pass':_0x512f33[_0xdd1b('0x18e')][_0xdd1b('0x198')]};}if(this[_0xdd1b('0xab')](_0x4c1e2a['template_id'])){}logger['debug'](_0xdd1b('0x199'),JSON[_0xdd1b('0x74')](_0x409c4c));this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x4c1e2a,_0x4c1e2a[_0xdd1b('0x19a')]);this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x19b'),_0x512f33[_0xdd1b('0x14')]));this[_0xdd1b('0x26')][_0xdd1b('0x70')](this,_0xb3b3a6,_0x409c4c);return this[_0xdd1b('0x10')]['noop'](_0xdd1b('0x19c'));};AGIVertices['prototype'][_0xdd1b('0x19d')]=function(_0xbd4b46){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x19e'),_0xbd4b46['label']));return this[_0xdd1b('0x10')][_0xdd1b('0xaf')](_0xdd1b('0x19f'));};AGIVertices[_0xdd1b('0x13')]['sendSMS']=function(_0x5f4c1c){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x1a0'),_0x5f4c1c[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x5f4c1c['sms_account_id'])){return this[_0xdd1b('0x10')]['noop'](_0xdd1b('0x1a1'));}var _0xb30632=this[_0xdd1b('0x35')][_0xdd1b('0x70')](this,_0x5f4c1c[_0xdd1b('0x1a2')]);if(!_0xb30632){return this['channel'][_0xdd1b('0x2f')](_0x5f4c1c,_0xdd1b('0x1a3'));}var _0x1a07d0={'body':_0x5f4c1c['sms_text'],'phone':_0x5f4c1c['to']||'','SmsAccountId':_0xb30632['id']};logger[_0xdd1b('0xe4')](_0xdd1b('0x1a4'),JSON[_0xdd1b('0x74')](_0x1a07d0));this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x5f4c1c,_0x5f4c1c[_0xdd1b('0x1a2')]);this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x1a5'),_0xb30632[_0xdd1b('0x14')]));this[_0xdd1b('0x36')][_0xdd1b('0x70')](this,_0x1a07d0);return this[_0xdd1b('0x10')]['noop']('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0xdd1b('0x1a6')]=function(_0x16a3ff){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x1a7'),_0x16a3ff[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x16a3ff['variable_id'])){return this[_0xdd1b('0x10')]['error'](_0x16a3ff,_0xdd1b('0x1a8'));}var _0x15b030=this[_0xdd1b('0xa6')][_0xdd1b('0x70')](this,_0x16a3ff['variable_id']);if(!_0x15b030){return this[_0xdd1b('0x10')]['error'](_0x16a3ff,_0xdd1b('0xdd'));}return this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0x15b030,_0x16a3ff[_0xdd1b('0x1a9')]);};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1aa')]=function(_0x39baaa){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x1ab'),_0x39baaa[_0xdd1b('0xae')]));this[_0xdd1b('0x10')]['noop'](_0xdd1b('0x1ac'));if(_0x39baaa[_0xdd1b('0xbe')]===_0xdd1b('0x1ad')){this[_0xdd1b('0x10')]['noop']('Answer');return this['channel'][_0xdd1b('0xbe')]();}return this[_0xdd1b('0x10')][_0xdd1b('0xaf')]('Skipped\x20Answer');};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1ae')]=function(_0x43ce75){logger[_0xdd1b('0x30')](util['format']('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x43ce75['label']));if(!this[_0xdd1b('0xab')](_0x43ce75[_0xdd1b('0x1af')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x43ce75,_0xdd1b('0x1b0'));}var _0x11b74d=this['getSquareProject'][_0xdd1b('0x70')](this,_0x43ce75[_0xdd1b('0x1af')]);if(!this[_0xdd1b('0xab')](_0x11b74d)){return this[_0xdd1b('0x10')]['error'](_0x43ce75,util[_0xdd1b('0x2c')](_0xdd1b('0x1b1'),_0x43ce75['project_id']));}if(_0x11b74d===this[_0xdd1b('0x10')][_0xdd1b('0x38')]){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x43ce75,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x43ce75,_0x11b74d);var _0xbeb615=this['channel'][_0xdd1b('0x57')](_0xdd1b('0x1b2'),util[_0xdd1b('0x2c')](_0xdd1b('0x1b3'),config[_0xdd1b('0x8')][_0xdd1b('0x194')]||'127.0.0.1',_0x11b74d,this[_0xdd1b('0x10')][_0xdd1b('0x38')]));if(_0xbeb615[_0xdd1b('0xa9')]===-0x1){return _0xbeb615;}return this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xc8'),_0xdd1b('0x1b2'),_0x11b74d));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1b4')]=function(_0x202dab){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x1b5'),_0x202dab['label']));var _0x2eba86=this[_0xdd1b('0x56')][_0xdd1b('0x70')](this,_0x202dab['command']);this[_0xdd1b('0x37')][_0xdd1b('0x70')](this,_0x202dab,_0x202dab['command']);if(this[_0xdd1b('0xab')](_0x202dab[_0xdd1b('0xdc')])){var _0x15ce44=this[_0xdd1b('0xa6')][_0xdd1b('0x70')](this,_0x202dab[_0xdd1b('0xdc')]);if(_0x15ce44){this[_0xdd1b('0x10')][_0xdd1b('0xa3')](_0x15ce44,_0x2eba86);return this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x1b6'),_0x202dab[_0xdd1b('0xbc')],_0x15ce44));}}return this['channel']['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x1b7'),_0x202dab[_0xdd1b('0xbc')]));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1b8')]=function(_0x316ea9){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block',_0x316ea9[_0xdd1b('0xae')]));_0x316ea9[_0xdd1b('0x5d')]=_0x316ea9[_0xdd1b('0x5d')][_0xdd1b('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x316ea9['apiKey'])){return this['channel']['noop'](_0xdd1b('0x1b9'));}if(!this['isConfigured'](_0x316ea9['text'])){return this[_0xdd1b('0x10')]['noop'](_0xdd1b('0xb0'));}this['channel'][_0xdd1b('0xaf')](util['format'](_0xdd1b('0x1ba'),_0x316ea9['text']));var _0x190dcd=this[_0xdd1b('0x5a')][_0xdd1b('0x70')](this,_0x316ea9);if(_0x190dcd){this['channel']['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x1bb'),_0x190dcd));var _0x240961=this[_0xdd1b('0x10')][_0xdd1b('0x104')](_0x190dcd);try{fs[_0xdd1b('0x105')](_0x190dcd+_0xdd1b('0x106'));}catch(_0x138466){logger['error'](_0x138466);}return _0x240961;}return this['channel'][_0xdd1b('0x2f')](_0x316ea9,_0xdd1b('0x1bc'));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1bd')]=function(_0x4f7694){logger[_0xdd1b('0x30')](util['format'](_0xdd1b('0x1be'),_0x4f7694[_0xdd1b('0xae')]));_0x4f7694[_0xdd1b('0x5d')]=_0x4f7694[_0xdd1b('0x5d')][_0xdd1b('0x59')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xdd1b('0xab')](_0x4f7694[_0xdd1b('0x5d')])){return this['channel'][_0xdd1b('0xaf')](_0xdd1b('0xb0'));}this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x1bf'),_0x4f7694[_0xdd1b('0x5d')]));var _0x3e06be=this['googleTTS'][_0xdd1b('0x70')](this,_0x4f7694);if(_0x3e06be){this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x1c0'),_0x3e06be));var _0x599aa6=this[_0xdd1b('0x10')][_0xdd1b('0x104')](_0x3e06be);try{fs[_0xdd1b('0x105')](_0x3e06be+_0xdd1b('0x106'));}catch(_0x195c4f){logger[_0xdd1b('0x2f')](_0x195c4f);}return _0x599aa6;}return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x4f7694,_0xdd1b('0x1c1'));};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1c2')]=function(_0x33de43){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0x33de43[_0xdd1b('0xae')]));if(!this[_0xdd1b('0xab')](_0x33de43['findBy'])){return this[_0xdd1b('0x10')]['error'](_0x33de43,_0xdd1b('0x155'));}logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x156'),this[_0xdd1b('0x10')]['callerid'],_0x33de43[_0xdd1b('0x157')]));var _0x3ce904=this[_0xdd1b('0x51')][_0xdd1b('0x70')](this,_0x33de43[_0xdd1b('0x157')]);if(_0x3ce904){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x33de43[_0xdd1b('0x157')]));this[_0xdd1b('0x10')]['noop'](util[_0xdd1b('0x2c')](_0xdd1b('0x158'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x33de43['findBy']));return{'code':0xc8,'result':_0xdd1b('0x159')};}else{logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x15a'),this['channel'][_0xdd1b('0x39')],_0x33de43['findBy']));this[_0xdd1b('0x10')][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0x15a'),this[_0xdd1b('0x10')][_0xdd1b('0x39')],_0x33de43[_0xdd1b('0x157')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xdd1b('0x13')][_0xdd1b('0x1c3')]=function(_0x5c1099){logger['info'](util[_0xdd1b('0x2c')](_0xdd1b('0x1c4'),_0x5c1099[_0xdd1b('0xae')]));var _0x3b4417=this[_0xdd1b('0x10')][_0xdd1b('0x57')](_0xdd1b('0x1c5'),[_0x5c1099['mailbox'],_0x5c1099[_0xdd1b('0x7a')]]);if(_0x3b4417[_0xdd1b('0xa9')]===-0x1){return _0x3b4417;}return this['channel'][_0xdd1b('0xaf')](util[_0xdd1b('0x2c')](_0xdd1b('0xc8'),_0xdd1b('0x1c5'),_0x5c1099['mailbox']));};AGIVertices[_0xdd1b('0x13')]['vswitch']=function(_0x276be7){logger[_0xdd1b('0x30')](util[_0xdd1b('0x2c')](_0xdd1b('0x1c6'),_0x276be7['label']));if(!this[_0xdd1b('0xab')](_0x276be7[_0xdd1b('0xdc')])){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x276be7,_0xdd1b('0x1a8'));}var _0x3d37d7=this['getVariable'][_0xdd1b('0x70')](this,_0x276be7['variable_id']);if(!_0x3d37d7){return this[_0xdd1b('0x10')][_0xdd1b('0x2f')](_0x276be7,_0xdd1b('0xdd'));}var _0x8ece90=this[_0xdd1b('0x10')][_0xdd1b('0xa6')](_0x3d37d7);return{'code':0xc8,'result':_0x8ece90[_0xdd1b('0xa7')]?_0x8ece90[_0xdd1b('0xa7')]:'-'};};String[_0xdd1b('0x13')][_0xdd1b('0xa5')]=function(_0x2ec8cb,_0x423e0a){return this['split'](_0x2ec8cb)[_0xdd1b('0x1c7')](_0x423e0a);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x28cc=['agentLogin','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','restAPI','url','method','number','timeout','includes','POST','PUT','toUpperCase','body','parse','headers','rawHeaders','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','googleDialogflowV2','dialogflowV2_project_id','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','model','awsPolly','aws_access_key_id','Amy','aws_text_type','awsLex','aws_secret_access_key','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','uri','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','saveRestApiResult','%s.%s','setVariable','split','length','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','isConfigured','maxRetry','retry','mrcpsynth','noop','exec','Executed\x20command\x20MRCPSynth\x20%s','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','command','args','answer','Wait\x20%s\x20seconds\x20before\x20answer','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','odbc_id','no\x20database\x20selected','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','getQueryOdbc','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20text\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','no\x20project_id\x20configured','client_email','private_key','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','out','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','sesteknda','Sestek\x20NDA\x20%s\x20file\x20created','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','Enter\x20in\x20END\x20(%s)\x20block','end','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','getSound','no\x20file\x20audio\x20found','getData','maxdigit','hiddendigitsnum','generate','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','wav','%s/recordings/%s','beep','NOBEEP','recordFile','intKey','google\x20%s\x20file\x20created','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','appsecret','no\x20appsecret\x20configured','TILDE_ASR_%s','TildeASR\x20Result\x20%s','continueAt','priority','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20interval\x20configured','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','no\x20find\x20by\x20configured','findBy','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','math','no\x20operation\x20configured','operation','%s[%s]','variable\x20%s[key]\x20set','Enter\x20in\x20MENU\x20(%s)\x20block','response','digit','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20found','indexOf','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','getMailAccount','no\x20mail\x20account\x20found','email','Smtp','user','bcc','subject','service','host','port','secure','auth','template_id','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','shellCommand','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','exports','path','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','./scripts','/var/opt/motion2/server/files','rawBody','menu','getsecretdigits','channel','rpc','mailRpc','prototype','getVariable','getVariableById','then','name','catch','getVoiceQueueById','getSquareProject','getSquareProjectById','getSquareOdbc','dsn','getUser','getUserById','getTrunk','getSoundById','getSoundPath','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','interval','map','Intervals','format','%s/sounds/converted/%s','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','callerid','createSquareRecording','calleridname','context','extension','dnid','arg_1','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agentLogout','agent','internal','%s/%s@from-sip/n','LOCAL'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x28cc,0x180));var _0xc28c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x28cc[_0x321bb2];return _0x9c12ed;};'use strict';var fs=require('fs');var path=require(_0xc28c('0x0'));var util=require(_0xc28c('0x1'));var _=require(_0xc28c('0x2'));var sh=require(_0xc28c('0x3'));var odbc=require(_0xc28c('0x4'))();var rs=require(_0xc28c('0x5'));var moment=require(_0xc28c('0x6'));var Mustache=require(_0xc28c('0x7'));var rp=require(_0xc28c('0x8'));var logger=require(_0xc28c('0x9'))(_0xc28c('0xa'));var config=require(_0xc28c('0xb'));var scripts=require(_0xc28c('0xc'));var FILES_PATH=_0xc28c('0xd');var recursiveMapAttributes=['rawHeaders',_0xc28c('0xe')];var verticesWithRetry=[_0xc28c('0xf'),'getdigits',_0xc28c('0x10')];var AGIVertices=function(_0x2c5cb5,_0x50b4fe,_0x235b15){this[_0xc28c('0x11')]=_0x2c5cb5;this[_0xc28c('0x12')]=_0x50b4fe;this[_0xc28c('0x13')]=_0x235b15;};AGIVertices[_0xc28c('0x14')][_0xc28c('0x15')]=function(_0x2da609,_0x2c057c){this[_0xc28c('0x12')][_0xc28c('0x16')](_0x2da609)[_0xc28c('0x17')](function(_0x221299){_0x2c057c(null,_0x221299?_0x221299[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x2930ef){_0x2c057c(_0x2930ef);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x12b530,_0x1c57ad){this[_0xc28c('0x12')][_0xc28c('0x1a')](_0x12b530)[_0xc28c('0x17')](function(_0x1d2515){_0x1c57ad(null,_0x1d2515?_0x1d2515[_0xc28c('0x18')]:![]);})['catch'](function(_0x47d104){_0x1c57ad(_0x47d104);});};AGIVertices['prototype'][_0xc28c('0x1b')]=function(_0x113909,_0x401938){this[_0xc28c('0x12')][_0xc28c('0x1c')](_0x113909)[_0xc28c('0x17')](function(_0x11f05a){_0x401938(null,_0x11f05a?_0x11f05a[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x2ff347){_0x401938(_0x2ff347);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1d')]=function(_0x17e023,_0x3845ad){this[_0xc28c('0x12')]['getSquareOdbcById'](_0x17e023)[_0xc28c('0x17')](function(_0x470340){_0x3845ad(null,_0x470340?_0x470340[_0xc28c('0x1e')]:![]);})[_0xc28c('0x19')](function(_0x15e2de){_0x3845ad(_0x15e2de);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1f')]=function(_0x4808b8,_0x3c6cc8){this[_0xc28c('0x12')][_0xc28c('0x20')](_0x4808b8)[_0xc28c('0x17')](function(_0x2bd92b){_0x3c6cc8(null,_0x2bd92b?_0x2bd92b[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x32ee3a){_0x3c6cc8(_0x32ee3a);});};AGIVertices['prototype'][_0xc28c('0x21')]=function(_0x558cca,_0x2c1f7c){this[_0xc28c('0x12')]['getTrunkById'](_0x558cca)[_0xc28c('0x17')](function(_0xf0d9ee){_0x2c1f7c(null,_0xf0d9ee?_0xf0d9ee[_0xc28c('0x18')]:![]);})[_0xc28c('0x19')](function(_0x16ad3f){_0x2c1f7c(_0x16ad3f);});};AGIVertices[_0xc28c('0x14')]['getSound']=function(_0x392625,_0x3ac7dc){var _0xec9c2=this;this[_0xc28c('0x12')][_0xc28c('0x22')](_0x392625)[_0xc28c('0x17')](function(_0xf18318){_0x3ac7dc(null,_0xf18318?_0xec9c2[_0xc28c('0x23')](_0xf18318['save_name']):![]);})['catch'](function(_0x4df626){_0x3ac7dc(_0x4df626);});};AGIVertices[_0xc28c('0x14')]['getMailAccount']=function(_0x1fd1c5,_0x49d6fb){this[_0xc28c('0x12')][_0xc28c('0x24')](_0x1fd1c5)['then'](function(_0x22d0a4){_0x49d6fb(null,_0x22d0a4?_0x22d0a4:![]);})[_0xc28c('0x19')](function(_0x22c652){_0x49d6fb(_0x22c652);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x25')]=function(_0x2a7e0a,_0x4743a3,_0x522d89){this['mailRpc'][_0xc28c('0x25')](_0x2a7e0a,_0x4743a3)[_0xc28c('0x17')](function(){_0x522d89(null);})[_0xc28c('0x19')](function(_0x458f54){_0x522d89(_0x458f54);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x26')]=function(_0x34022f,_0x42c344){this[_0xc28c('0x12')][_0xc28c('0x27')](_0x34022f)['then'](function(_0x4e2149){if(_0x4e2149){if(_0x4e2149['IntervalId']){_0x42c344(null,[_0x4e2149[_0xc28c('0x28')]]);}else{_0x42c344(null,_[_0xc28c('0x29')](_0x4e2149[_0xc28c('0x2a')],_0xc28c('0x28')));}}else{_0x42c344(null,![]);}})['catch'](function(_0x13aae7){_0x42c344(_0x13aae7);});};AGIVertices[_0xc28c('0x14')]['getSoundPath']=function(_0x4154ef){return util[_0xc28c('0x2b')](_0xc28c('0x2c'),FILES_PATH,_0x4154ef);};AGIVertices['prototype']['getQueryOdbc']=function(_0x3a8fb0,_0xddad76,_0x5c8597){odbc['open'](_0x3a8fb0,function(_0x56974d){if(_0x56974d){logger[_0xc28c('0x2d')](_0xc28c('0x2e'),_0x56974d);_0x5c8597(_0x56974d);}else{logger[_0xc28c('0x2f')](_0xc28c('0x30'));odbc[_0xc28c('0x31')](_0xddad76,function(_0x165da7,_0x1828b0){if(_0x165da7){logger[_0xc28c('0x2f')]('Error\x20executing\x20query\x20%s',_0xddad76);_0x5c8597(_0x165da7);}else{logger[_0xc28c('0x2f')]('Query\x20executed\x20correctly\x20%s',_0xddad76);odbc[_0xc28c('0x32')](function(_0x9bff17){if(_0x9bff17){logger[_0xc28c('0x2d')](_0xc28c('0x33'),_0x9bff17);}_0x5c8597(null,_0x1828b0);});}});}});};AGIVertices[_0xc28c('0x14')]['getSmsAccount']=function(_0x5699aa,_0x2d5829){this['rpc'][_0xc28c('0x34')](_0x5699aa)[_0xc28c('0x17')](function(_0x33a6e0){_0x2d5829(null,_0x33a6e0?_0x33a6e0:![]);})[_0xc28c('0x19')](function(_0x217686){_0x2d5829(_0x217686);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x35')]=function(_0x369a13,_0x5a920a){this['rpc'][_0xc28c('0x35')](_0x369a13)[_0xc28c('0x17')](function(_0x5658c5){_0x5a920a(null,_0x5658c5);})[_0xc28c('0x19')](function(_0x4a7cf0){_0x5a920a(_0x4a7cf0);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x36')]=function(_0x342b5d,_0x409ef0,_0x21392e){this[_0xc28c('0x12')][_0xc28c('0x36')]({'uniqueid':this[_0xc28c('0x11')][_0xc28c('0x37')],'node':_0x342b5d[_0xc28c('0x38')],'application':_0x342b5d[_0xc28c('0x39')],'data':_0x409ef0||null,'project_name':this[_0xc28c('0x11')]['arg_1'],'callerid':this[_0xc28c('0x11')][_0xc28c('0x3a')]})[_0xc28c('0x17')](function(_0x41edb6){if(_0x21392e){_0x21392e(null,_0x41edb6);}})[_0xc28c('0x19')](function(_0x12126b){if(_0x21392e){_0x21392e(_0x12126b);}});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x3b')]=function(_0x5732ea,_0x423aa0,_0x2f5d8a,_0x16b18e){this[_0xc28c('0x12')]['createSquareRecording']({'uniqueid':this[_0xc28c('0x11')][_0xc28c('0x37')],'callerid':this[_0xc28c('0x11')]['callerid'],'calleridname':this[_0xc28c('0x11')][_0xc28c('0x3c')],'context':this['channel'][_0xc28c('0x3d')],'extension':this[_0xc28c('0x11')][_0xc28c('0x3e')],'priority':this[_0xc28c('0x11')]['priority'],'accountcode':this[_0xc28c('0x11')]['accountcode'],'dnid':this[_0xc28c('0x11')][_0xc28c('0x3f')],'projectName':this['channel'][_0xc28c('0x40')],'saveName':_0x423aa0,'filename':_0x5732ea[_0xc28c('0x41')]||_0x423aa0,'savePath':_0x2f5d8a})[_0xc28c('0x17')](function(_0x211151){_0x16b18e(null,_0x211151);})[_0xc28c('0x19')](function(_0x3755b4){_0x16b18e(_0x3755b4);});};AGIVertices['prototype'][_0xc28c('0x42')]=function(_0x2e2740,_0x4b1b4b,_0x31d30a,_0x4906ad,_0x1bd554){this[_0xc28c('0x12')]['createSquareMessage']({'uniqueid':this[_0xc28c('0x11')]['uniqueid'],'body':_0x2e2740,'direction':_0x4b1b4b,'providerName':_0x31d30a,'providerResponse':_0x4906ad})[_0xc28c('0x17')](function(_0x45fbbe){if(_0x1bd554){_0x1bd554(null,_0x45fbbe);}})['catch'](function(_0x5ec2bb){if(_0x1bd554){_0x1bd554(_0x5ec2bb);}});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x43')]=function(_0x5136f9,_0x59d9d0){this[_0xc28c('0x12')][_0xc28c('0x43')]({'firstName':_[_0xc28c('0x44')](_0x5136f9[_0xc28c('0x18')])||_[_0xc28c('0x45')](_0x5136f9['name'])?_0xc28c('0x46')+Math[_0xc28c('0x47')]():_0x5136f9[_0xc28c('0x18')],'lastName':_[_0xc28c('0x44')](_0x5136f9[_0xc28c('0x48')])||_[_0xc28c('0x45')](_0x5136f9[_0xc28c('0x48')])?null:_0x5136f9['lastName'],'phone':_0x5136f9[_0xc28c('0x49')],'ListId':_0x5136f9[_0xc28c('0x4a')],'scheduledat':_0x5136f9[_0xc28c('0x4b')],'callbackUniqueid':this[_0xc28c('0x11')][_0xc28c('0x37')],'tags':'callback','description':_0xc28c('0x4c')+_0x5136f9['scheduledAt'][_0xc28c('0x4d')](),'priority':_0x5136f9[_0xc28c('0x4e')]})[_0xc28c('0x17')](function(_0x56309a){_0x59d9d0(null,_0x56309a);})[_0xc28c('0x19')](function(_0x2402a0){_0x59d9d0(_0x2402a0);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x4f')]=function(_0x19ed10,_0x433c42){this['rpc'][_0xc28c('0x50')](_0x19ed10)[_0xc28c('0x17')](function(_0x314bd0){_0x433c42(null,_0x314bd0?_0x314bd0['name']:![]);})['catch'](function(_0x409e43){_0x433c42(_0x409e43);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x51')]=function(_0x4a08d2,_0x248e0d,_0xed5347){var _0x37427f={'role':'agent'};_0x37427f[_0x4a08d2]=this[_0xc28c('0x11')][_0xc28c('0x3a')];this['rpc']['agentPause'](_0x37427f,_0x248e0d,this[_0xc28c('0x11')][_0xc28c('0x37')])[_0xc28c('0x17')](function(_0x1eeb8a){_0xed5347(null,_[_0xc28c('0x45')](_0x1eeb8a)?![]:!![]);})[_0xc28c('0x19')](function(_0x329a71){logger[_0xc28c('0x2d')](_0x329a71);_0xed5347(null,![]);});};AGIVertices['prototype']['agentUnpause']=function(_0x205370,_0x385517){var _0x4785f6={'role':'agent'};_0x4785f6[_0x205370]=this[_0xc28c('0x11')][_0xc28c('0x3a')];this[_0xc28c('0x12')][_0xc28c('0x52')](_0x4785f6)['then'](function(_0xfccf59){_0x385517(null,_[_0xc28c('0x45')](_0xfccf59)?![]:!![]);})[_0xc28c('0x19')](function(_0x5423a1){logger[_0xc28c('0x2d')](_0x5423a1);_0x385517(null,![]);});};AGIVertices['prototype'][_0xc28c('0x53')]=function(_0xdf76ef,_0x3d1683){var _0x1aa37e={'role':'agent'};_0x1aa37e[_0xdf76ef]=this[_0xc28c('0x11')][_0xc28c('0x3a')];this['rpc'][_0xc28c('0x53')](_0x1aa37e)[_0xc28c('0x17')](function(_0x4bc1d1){_0x3d1683(null,_[_0xc28c('0x45')](_0x4bc1d1)?![]:!![]);})[_0xc28c('0x19')](function(_0x312d7e){logger[_0xc28c('0x2d')](_0x312d7e);_0x3d1683(null,![]);});};AGIVertices[_0xc28c('0x14')]['agentLogin']=function(_0x4ce0ef,_0x2e7ec7){var _0x4acbce={'role':_0xc28c('0x54')};_0x4acbce[_0x4ce0ef]=this[_0xc28c('0x11')][_0xc28c('0x3a')];var _0x42fbb2=_0x4ce0ef!=_0xc28c('0x55')?util[_0xc28c('0x2b')](_0xc28c('0x56'),_0xc28c('0x57'),this[_0xc28c('0x11')][_0xc28c('0x3a')]):undefined;this[_0xc28c('0x12')][_0xc28c('0x58')](_0x4acbce,_0x42fbb2)[_0xc28c('0x17')](function(_0x384499){_0x2e7ec7(null,_[_0xc28c('0x45')](_0x384499)?![]:!![]);})[_0xc28c('0x19')](function(_0x518bc7){logger[_0xc28c('0x2d')](_0x518bc7);_0x2e7ec7(null,![]);});};AGIVertices[_0xc28c('0x14')]['shellCommand']=function(_0x2d0cf1,_0x4f8585){sh['exec'](_[_0xc28c('0x59')](_0x2d0cf1),function(_0x15aec6,_0x213ae2){var _0x184dbf=_0x213ae2['replace'](/(\r\n|\n|\r)/gm,'');_0x4f8585(null,_0x184dbf);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x5a')]=function(_0x34567f,_0x28a70f){scripts[_0xc28c('0x5a')](_0x34567f[_0xc28c('0x5b')],_0x34567f[_0xc28c('0x5c')]||'text',_0x34567f[_0xc28c('0x5d')],_0x34567f[_0xc28c('0x5e')]||_0xc28c('0x5f'),_0x34567f[_0xc28c('0x60')]||_0xc28c('0x61'),_0x34567f[_0xc28c('0x62')]||_0xc28c('0x63'))[_0xc28c('0x17')](function(_0x219950){_0x28a70f(null,_0x219950);})[_0xc28c('0x19')](function(_0x27c45e){_0x28a70f(_0x27c45e);});};AGIVertices['prototype'][_0xc28c('0x64')]=function(_0x54754e,_0x1355f7){scripts[_0xc28c('0x64')](_0x54754e[_0xc28c('0x5d')],_0x54754e['google_tts_language']||'en',0x1)[_0xc28c('0x17')](function(_0x192fd4){_0x1355f7(null,_0x192fd4);})[_0xc28c('0x19')](function(_0x42269b){_0x1355f7(_0x42269b);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x65')]=function(_0x11a504,_0x10508f){var _0x571736={'uri':_0x11a504[_0xc28c('0x66')],'method':_0x11a504[_0xc28c('0x67')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x11a504['timeout'])===_0xc28c('0x68')&&parseInt(_0x11a504[_0xc28c('0x69')])>=0x1?parseInt(_0x11a504[_0xc28c('0x69')])*0x3e8:0x5*0x3e8};if(_[_0xc28c('0x6a')]([_0xc28c('0x6b'),_0xc28c('0x6c')],_0x571736[_0xc28c('0x67')][_0xc28c('0x6d')]())){try{_0x571736[_0xc28c('0x6e')]=_0x11a504[_0xc28c('0xe')]?JSON[_0xc28c('0x6f')](_0x11a504[_0xc28c('0xe')]):{};}catch(_0x785d7c){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x785d7c);}}try{_0x571736[_0xc28c('0x70')]=_0x11a504[_0xc28c('0x71')]?JSON[_0xc28c('0x6f')](_0x11a504[_0xc28c('0x71')]):{};}catch(_0xb1fc23){logger[_0xc28c('0x2d')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0xb1fc23);}if(_0x11a504[_0xc28c('0x72')]){try{var _0x7ec2ac=require(_0x11a504[_0xc28c('0x72')])[_0xc28c('0x73')](this,_0x571736);_0x571736['uri']=Mustache[_0xc28c('0x74')](_0x11a504[_0xc28c('0x66')],_0x7ec2ac,{},['$$','$$']);if(_0x571736[_0xc28c('0x70')]){_0x571736[_0xc28c('0x70')]=JSON['parse'](Mustache['render'](JSON[_0xc28c('0x75')](_0x571736[_0xc28c('0x70')]),_0x7ec2ac,{},['$$','$$']));}if(_0x571736[_0xc28c('0x6e')]){_0x571736[_0xc28c('0x6e')]=JSON[_0xc28c('0x6f')](Mustache['render'](JSON[_0xc28c('0x75')](_0x571736['body']),_0x7ec2ac,{},['$$','$$']));}}catch(_0x61497b){logger[_0xc28c('0x2d')](_0xc28c('0x76'),_0x61497b);}}rp(_0x571736)[_0xc28c('0x17')](function(_0x5a1c7c){var _0x10466b={'statusCode':_0x5a1c7c[_0xc28c('0x77')]||0xc8,'statusMessage':_0x5a1c7c['statusMessage']||'OK','headers':_0x5a1c7c[_0xc28c('0x70')]||{},'body':_0x5a1c7c[_0xc28c('0x6e')]||{}};_0x10508f(null,_0x10466b);})['catch'](function(_0x1dec9c){var _0x1f3ee0={'statusCode':_0x1dec9c[_0xc28c('0x77')]||0x1f4,'statusMessage':_0x1dec9c[_0xc28c('0x78')]||_0xc28c('0x79'),'headers':_0x1dec9c[_0xc28c('0x7a')][_0xc28c('0x70')]||{},'body':_0x1dec9c[_0xc28c('0x7a')]['body']||{}};_0x10508f(null,_0x1f3ee0);});};AGIVertices['prototype'][_0xc28c('0x7b')]=function(_0x2ce0ea,_0x1d5037){scripts[_0xc28c('0x7b')](this[_0xc28c('0x11')][_0xc28c('0x37')],_0x2ce0ea[_0xc28c('0x7c')],_0x2ce0ea[_0xc28c('0x5d')],_0x2ce0ea['dialogflow_language']||'en')[_0xc28c('0x17')](function(_0x72f754){_0x1d5037(null,_0x72f754);})[_0xc28c('0x19')](function(_0x3e09a2){_0x1d5037(_0x3e09a2);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x7d')]=function(_0x4f829a,_0x25dcc7){scripts[_0xc28c('0x7d')](this[_0xc28c('0x11')][_0xc28c('0x37')],_0x4f829a[_0xc28c('0x7e')],_0x4f829a['client_email'],_0x4f829a['private_key'],_0x4f829a[_0xc28c('0x5d')],_0x4f829a['dialogflowV2_language']||'en')['then'](function(_0x365f76){_0x25dcc7(null,_0x365f76);})[_0xc28c('0x19')](function(_0x45169e){_0x25dcc7(_0x45169e);});};AGIVertices[_0xc28c('0x14')]['sestekNDA']=function(_0x5ab782,_0x3d4ff9){scripts[_0xc28c('0x7f')](this[_0xc28c('0x11')],_0x5ab782)[_0xc28c('0x17')](function(_0x5dd68d){_0x3d4ff9(null,_0x5dd68d);})[_0xc28c('0x19')](function(_0x3b389c){_0x3d4ff9(_0x3b389c);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x80')]=function(_0x4ac35f,_0x736e7c){scripts[_0xc28c('0x80')](_0x4ac35f[_0xc28c('0x7c')],_0x4ac35f['text'],_0x4ac35f[_0xc28c('0x81')]||_0xc28c('0x5f'),_0x4ac35f[_0xc28c('0x82')])[_0xc28c('0x17')](function(_0x18d5f5){_0x736e7c(null,_0x18d5f5);})[_0xc28c('0x19')](function(_0x2bf6da){_0x736e7c(_0x2bf6da);});};AGIVertices['prototype'][_0xc28c('0x83')]=function(_0x56acc0,_0x5815fb,_0x4f1623){scripts[_0xc28c('0x83')](_0x5815fb,_0x56acc0[_0xc28c('0x7c')],_0x56acc0[_0xc28c('0x84')]||_0xc28c('0x5f'),this['isConfigured'](_0x56acc0['model'])?_0x56acc0[_0xc28c('0x85')]:undefined)[_0xc28c('0x17')](function(_0x4d8aa8){_0x4f1623(null,_0x4d8aa8);})[_0xc28c('0x19')](function(_0x2f774c){_0x4f1623(_0x2f774c);});};AGIVertices['prototype']['awsPolly']=function(_0x9364d8,_0x36c51a){scripts[_0xc28c('0x86')](_0x9364d8[_0xc28c('0x87')],_0x9364d8['aws_secret_access_key'],_0x9364d8['aws_polly_region'],_0x9364d8['aws_polly_voice']||_0xc28c('0x88'),_0x9364d8['text'],_0x9364d8[_0xc28c('0x89')]||'text')['then'](function(_0x9ac769){_0x36c51a(null,_0x9ac769);})[_0xc28c('0x19')](function(_0x4bf24b){_0x36c51a(_0x4bf24b);});};AGIVertices[_0xc28c('0x14')]['awsLex']=function(_0x2c9cdc,_0x38bc17){scripts[_0xc28c('0x8a')](this['channel'][_0xc28c('0x37')],_0x2c9cdc[_0xc28c('0x87')],_0x2c9cdc[_0xc28c('0x8b')],_0x2c9cdc[_0xc28c('0x8c')],_0x2c9cdc[_0xc28c('0x5d')],_0x2c9cdc[_0xc28c('0x8d')])[_0xc28c('0x17')](function(_0x3f7121){_0x38bc17(null,_0x3f7121);})[_0xc28c('0x19')](function(_0x2f9052){_0x38bc17(_0x2f9052);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x8e')]=function(_0x11dfda,_0x3d7c40,_0x585fcd){scripts[_0xc28c('0x8e')](_0x3d7c40,_0x11dfda['key'],_0x11dfda[_0xc28c('0x8f')]||_0xc28c('0x5f'))[_0xc28c('0x17')](function(_0x3819ce){_0x585fcd(null,_0x3819ce);})[_0xc28c('0x19')](function(_0x545149){_0x585fcd(_0x545149);});};AGIVertices['prototype'][_0xc28c('0x90')]=function(_0xb8a0c1,_0xc760fd,_0x45c07f){scripts[_0xc28c('0x90')](_0xc760fd,_0xb8a0c1['appid'],_0xb8a0c1['appsecret'],_0xb8a0c1[_0xc28c('0x91')])[_0xc28c('0x17')](function(_0x4898c3){_0x45c07f(null,_0x4898c3);})[_0xc28c('0x19')](function(_0x8514f7){_0x45c07f(_0x8514f7);});};AGIVertices[_0xc28c('0x14')][_0xc28c('0x92')]=function(_0x56be36){var _0x3672ec=_[_0xc28c('0x6a')](verticesWithRetry,_0x56be36[_0xc28c('0x39')])?_0x56be36:_['clone'](_0x56be36);for(var _0x621253 in _0x3672ec){if(_0x3672ec[_0xc28c('0x93')](_0x621253)){if(_0x3672ec[_0x621253]&&_[_0xc28c('0x94')](_0x3672ec[_0x621253])){if(_[_0xc28c('0x6a')](recursiveMapAttributes,_0x621253)){_0x3672ec[_0x621253]=this[_0xc28c('0x95')](_0x3672ec[_0x621253]);}else{_0x3672ec[_0x621253]=this[_0xc28c('0x96')](_0x3672ec[_0x621253]);}}}}return _0x3672ec;};AGIVertices['prototype'][_0xc28c('0x97')]=function(_0x3fbaab){for(var _0x5a5710 in _0x3fbaab){if(_0x3fbaab[_0xc28c('0x93')](_0x5a5710)){if(_[_0xc28c('0x98')](_0x3fbaab[_0x5a5710])){this[_0xc28c('0x97')](_0x3fbaab[_0x5a5710]);}else if(_[_0xc28c('0x99')](_0x3fbaab[_0x5a5710])){for(var _0x30e764=0x0;_0x30e764<_0x3fbaab[_0x5a5710]['length'];_0x30e764++){this[_0xc28c('0x97')](_0x3fbaab[_0x5a5710][_0x30e764]);}}else if(_['isString'](_0x3fbaab[_0x5a5710])){_0x3fbaab[_0x5a5710]=this[_0xc28c('0x96')](_0x3fbaab[_0x5a5710]);}}}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x9a')]=function(_0x27b035,_0x58ca5b){for(var _0x491060 in _0x27b035){if(_0x27b035[_0xc28c('0x93')](_0x491060)){if(_[_0xc28c('0x98')](_0x27b035[_0x491060])){if(!_[_0xc28c('0x44')](_0x27b035[_0x491060])){this[_0xc28c('0x9a')](_0x27b035[_0x491060],util['format']('%s.%s',_0x58ca5b,_0x491060));}}else if(_['isArray'](_0x27b035[_0x491060])){for(var _0x6b91ff=0x0;_0x6b91ff<_0x27b035[_0x491060]['length'];_0x6b91ff++){this[_0xc28c('0x9a')](_0x27b035[_0x491060][_0x6b91ff],util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x58ca5b,_0x491060+'['+_0x6b91ff+']'));}}else{if(!_[_0xc28c('0x45')](_0x27b035[_0x491060])){this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x58ca5b,_0x491060),_0x27b035[_0x491060]);}}}}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x95')]=function(_0x313875){try{var _0x5bce5e=JSON[_0xc28c('0x6f')](_0x313875);this[_0xc28c('0x97')](_0x5bce5e);return JSON['stringify'](_0x5bce5e);}catch(_0x43ccc0){return this['replaceAllVariables'](_0x313875);}};AGIVertices[_0xc28c('0x14')]['replaceAllVariables']=function(_0xb099f1){var _0x489b89=_0xb099f1[_0xc28c('0x9d')]('{');for(var _0x56797e=0x1;_0x56797e<_0x489b89[_0xc28c('0x9e')];_0x56797e+=0x1){var _0x521451=_0x489b89[_0x56797e][_0xc28c('0x9d')]('}');if(_0x521451[_0xc28c('0x9e')]>0x1){_0xb099f1=_0xb099f1['replaceAll']('{'+_0x521451[0x0]+'}',this[_0xc28c('0x11')][_0xc28c('0x15')](_0x521451[0x0])[_0xc28c('0x9f')]||_0x521451[0x0]);}}if(_0x489b89[_0xc28c('0x9e')]===0x1){return _0xb099f1[_0xc28c('0x4d')]();}return this[_0xc28c('0x96')](_0xb099f1);};AGIVertices['prototype'][_0xc28c('0xa0')]=function(_0x7eff5e,_0x53626e){var _0x53f4d0=this[_0xc28c('0x11')][_0xc28c('0x15')](_0x7eff5e);if(_0x53f4d0[_0xc28c('0xa1')]===-0x1){return _0x53f4d0;}logger['info'](util[_0xc28c('0x2b')](_0xc28c('0xa2'),_0x53626e,_0x53f4d0[_0xc28c('0x9f')]));return this[_0xc28c('0x11')]['setVariable'](_0x53626e,_0x53f4d0[_0xc28c('0x9f')]);};AGIVertices['prototype'][_0xc28c('0xa3')]=function(_0x2fa3d5){return _0x2fa3d5&&_0x2fa3d5!=='0'&&_0x2fa3d5!=='-1'&&_0x2fa3d5!=='';};AGIVertices[_0xc28c('0x14')][_0xc28c('0xa4')]=function(_0x39c721){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x39c721,'-');_0x39c721[_0xc28c('0xa5')]=_0x39c721[_0xc28c('0xa4')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0xc28c('0xa6')]=function(_0x21363f){logger['info'](util[_0xc28c('0x2b')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x21363f[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x21363f[_0xc28c('0x5d')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20text\x20configured');}var _0x5b6fd6='\x22'+_0x21363f['text']+'\x22';if(this[_0xc28c('0xa3')](_0x21363f[_0xc28c('0x7a')])){_0x5b6fd6+=','+_0x21363f[_0xc28c('0x7a')];}var _0x35511f=this[_0xc28c('0x11')][_0xc28c('0xa8')]('MRCPSynth',_0x5b6fd6);if(_0x35511f[_0xc28c('0xa1')]===-0x1){return _0x35511f;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xa9'),_0x5b6fd6));};AGIVertices[_0xc28c('0x14')]['mrcprecog']=function(_0x33595b){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xaa'),_0x33595b[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x33595b[_0xc28c('0xab')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xac'));}var _0x8f48df=_0x33595b['grammar'];if(this['isConfigured'](_0x33595b['options'])){_0x8f48df+=','+_0x33595b['options'];}var _0xb5dd99=this['channel'][_0xc28c('0xa8')](_0xc28c('0xad'),_0x8f48df);if(_0xb5dd99[_0xc28c('0xa1')]===-0x1){return _0xb5dd99;}var _0x1fd1a5=this[_0xc28c('0xa0')](_0xc28c('0xae'),_0xc28c('0xaf'));if(_0x1fd1a5[_0xc28c('0xa1')]===-0x1){return _0x1fd1a5;}var _0x3c22ef=this[_0xc28c('0xa0')](_0xc28c('0xb0'),'MRCP_RECOG_TRANSCRIPT');if(_0x3c22ef['result']===-0x1){return _0x3c22ef;}var _0xd67525=this[_0xc28c('0xa0')](_0xc28c('0xb1'),'MRCP_RECOG_INSTANCE');if(_0xd67525[_0xc28c('0xa1')]===-0x1){return _0xd67525;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x8f48df));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xa')]=function(_0x5e13dd){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x5e13dd[_0xc28c('0x38')]));return this['channel'][_0xc28c('0xa')]([_0x5e13dd[_0xc28c('0xb2')],_0x5e13dd[_0xc28c('0xb3')]]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0xb4')]=function(_0x458906){logger['info'](util[_0xc28c('0x2b')]('Enter\x20in\x20ANSWER\x20(%s)\x20block',_0x458906['label']));if(this[_0xc28c('0xa3')](_0x458906[_0xc28c('0x69')])){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xb5'),_0x458906[_0xc28c('0x69')]));var _0x26819e=this[_0xc28c('0x11')]['wait'](_0x458906[_0xc28c('0x69')]);if(_0x26819e[_0xc28c('0xa1')]===-0x1){return _0x26819e;}}return this[_0xc28c('0x11')][_0xc28c('0xb4')]();};AGIVertices['prototype']['callback']=function(_0x540518){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xb6'),_0x540518['label']));if(!this['isConfigured'](_0x540518[_0xc28c('0x4a')])){return this['channel'][_0xc28c('0x2d')](_0x540518,'no\x20list\x20selected');}_0x540518['scheduledAt']=moment();if(this[_0xc28c('0xa3')](_0x540518[_0xc28c('0xb7')])){_0x540518[_0xc28c('0x4b')]=moment()[_0xc28c('0xb8')](_0x540518[_0xc28c('0xb7')],_0xc28c('0xb9'));}if(!this[_0xc28c('0xa3')](_0x540518[_0xc28c('0x4e')])){_0x540518['callback_priority']=0x2;}this[_0xc28c('0x43')][_0xc28c('0x73')](this,_0x540518);return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xba'),_0x540518[_0xc28c('0x49')],_0x540518[_0xc28c('0x4a')],_0x540518[_0xc28c('0x4b')]));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xbb')]=function(_0x2ac93b){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0xbc'),_0x2ac93b['label']));var _0x378c2d=this['channel']['exec'](_0x2ac93b[_0xc28c('0xbd')],_0x2ac93b[_0xc28c('0x7a')]);if(_0x378c2d['result']===-0x1){return _0x378c2d;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xbe'),_0x2ac93b['application'],_0x2ac93b['options']));};AGIVertices[_0xc28c('0x14')]['lumenvoxtts']=function(_0x37144e){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xbf'),_0x37144e[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x37144e['text'])){return this['channel'][_0xc28c('0xa7')]('no\x20text\x20configured');}var _0x597f59='\x22'+_0x37144e[_0xc28c('0x5d')]+'\x22';if(this[_0xc28c('0xa3')](_0x37144e[_0xc28c('0x7a')])){_0x597f59+=','+_0x37144e[_0xc28c('0x7a')];}var _0x1a38f5=this['channel']['exec'](_0xc28c('0xc0'),_0x597f59);if(_0x1a38f5[_0xc28c('0xa1')]===-0x1){return _0x1a38f5;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xa9'),_0x597f59));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xc1')]=function(_0x43d7ff){logger[_0xc28c('0x2f')](util['format']('Enter\x20in\x20SESTEKTTS\x20(%s)\x20block',_0x43d7ff[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x43d7ff[_0xc28c('0x5d')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20text\x20configured');}var _0x253208='\x22'+_0x43d7ff['text']+'\x22';if(this[_0xc28c('0xa3')](_0x43d7ff[_0xc28c('0x7a')])){_0x253208+=','+_0x43d7ff[_0xc28c('0x7a')];}var _0x207a9f=this['channel'][_0xc28c('0xa8')]('MRCPSynth',_0x253208);if(_0x207a9f[_0xc28c('0xa1')]===-0x1){return _0x207a9f;}return this['channel']['noop'](util[_0xc28c('0x2b')](_0xc28c('0xa9'),_0x253208));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xc2')]=function(_0x47a94b){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0x47a94b['label']));if(!this['isConfigured'](_0x47a94b[_0xc28c('0xab')])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xac'));}var _0x5d8aca=_0x47a94b['grammar'];if(this[_0xc28c('0xa3')](_0x47a94b[_0xc28c('0x7a')])){_0x5d8aca+=','+_0x47a94b[_0xc28c('0x7a')];}var _0x29084e=this[_0xc28c('0x11')]['exec']('MRCPRecog',_0x5d8aca);if(_0x29084e['result']===-0x1){return _0x29084e;}var _0x2b67da=this[_0xc28c('0xa0')](_0xc28c('0xae'),_0xc28c('0xc3'));if(_0x2b67da[_0xc28c('0xa1')]===-0x1){return _0x2b67da;}var _0x1f62e7=this[_0xc28c('0xa0')]('RECOG_INPUT()',_0xc28c('0xc4'));if(_0x1f62e7[_0xc28c('0xa1')]===-0x1){return _0x1f62e7;}var _0x267871=this[_0xc28c('0xa0')]('RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE');if(_0x267871[_0xc28c('0xa1')]===-0x1){return _0x267871;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5d8aca));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xc5')]=function(_0x1e565d){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x1e565d[_0xc28c('0x38')]));if(!this['isConfigured'](_0x1e565d[_0xc28c('0xab')])){return this[_0xc28c('0x11')]['noop']('no\x20grammar\x20configured');}var _0x229f65=_0x1e565d[_0xc28c('0xab')];if(this[_0xc28c('0xa3')](_0x1e565d[_0xc28c('0x7a')])){_0x229f65+=','+_0x1e565d['options'];}var _0x292a5b=this[_0xc28c('0x11')]['exec'](_0xc28c('0xad'),_0x229f65);if(_0x292a5b[_0xc28c('0xa1')]===-0x1){return _0x292a5b;}var _0x270d7a=this[_0xc28c('0xa0')]('RECOG_CONFIDENCE()',_0xc28c('0xc6'));if(_0x270d7a[_0xc28c('0xa1')]===-0x1){return _0x270d7a;}var _0x219de2=this[_0xc28c('0xa0')]('RECOG_INPUT()',_0xc28c('0xc7'));if(_0x219de2[_0xc28c('0xa1')]===-0x1){return _0x219de2;}var _0x240a39=this[_0xc28c('0xa0')](_0xc28c('0xb1'),_0xc28c('0xc8'));if(_0x240a39['result']===-0x1){return _0x240a39;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xc9'),_0x229f65));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xca')]=function(_0x2f7930){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0xcb'),_0x2f7930[_0xc28c('0x38')]));if(!this['isConfigured'](_0x2f7930[_0xc28c('0xcc')])){return this[_0xc28c('0x11')]['error'](_0x2f7930,_0xc28c('0xcd'));}var _0x2f21b4=this[_0xc28c('0x1d')][_0xc28c('0x73')](this,_0x2f7930[_0xc28c('0xcc')]);if(!_0x2f21b4){return this[_0xc28c('0x11')]['error'](_0x2f7930,_0xc28c('0xce'));}if(!this[_0xc28c('0xa3')](_0x2f7930[_0xc28c('0x31')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x2f7930,_0xc28c('0xcf'));}var _0x5b36c7=_0x2f7930[_0xc28c('0x31')][_0xc28c('0xd0')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('query:\x20%s',_0x5b36c7));var _0x263902=this[_0xc28c('0xd1')][_0xc28c('0x73')](this,_0x2f21b4,_0x5b36c7);this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x2f7930,_0x5b36c7);if(!this[_0xc28c('0xa3')](_0x2f7930[_0xc28c('0xd2')])){return this['channel']['noop'](_0xc28c('0xd3'));}var _0x28db02=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x2f7930['variable_id']);if(!_0x28db02){return this['channel']['error'](_0x2f7930,_0xc28c('0xd4'));}var _0x4df93e=this;_0x263902[_0xc28c('0xd5')](function(_0x16a048,_0x5d995f){Object[_0xc28c('0xd6')](_0x16a048)[_0xc28c('0xd5')](function(_0x1dd512){_0x4df93e[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0xd7'),_0x28db02,_0x5d995f,_0x1dd512),_0x16a048[_0x1dd512]);});});this['channel'][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0xd8'),_0x28db02),_0x263902['length']);return this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0xd9'),_0x28db02));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xda')]=function(_0x39f577){logger[_0xc28c('0xdb')](util['format'](_0xc28c('0xdc'),_0x39f577['label']));if(!this[_0xc28c('0xa3')](_0x39f577['sip_id'])){return this[_0xc28c('0x11')]['error'](_0x39f577,_0xc28c('0xdd'));}var _0x2abdcd=this[_0xc28c('0x1f')][_0xc28c('0x73')](this,_0x39f577[_0xc28c('0xde')]);if(!_0x2abdcd){return this[_0xc28c('0x11')]['error'](_0x39f577,_0xc28c('0xdf'));}var _0x2fff33=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0xe0'),[util[_0xc28c('0x2b')](_0xc28c('0xe1'),_0x2abdcd),_0x39f577[_0xc28c('0x69')],_0x39f577['opts'],_0x39f577[_0xc28c('0x66')]]);if(_0x2fff33[_0xc28c('0xa1')]===-0x1){return _0x2fff33;}return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xe2'),_0xc28c('0xe0')));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xe3')]=function(_0x394ba2){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0xe4'),_0x394ba2[_0xc28c('0x38')]));if(!this['isConfigured'](_0x394ba2[_0xc28c('0x7c')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20key\x20configured');}if(!this[_0xc28c('0xa3')](_0x394ba2['text'])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xe5'));}this['channel'][_0xc28c('0xe6')]=!![];this[_0xc28c('0x36')](_0x394ba2);this[_0xc28c('0x42')](_0x394ba2[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0xe7'),_0x394ba2['text']));var _0x56c44a=this['googleDialogflow']['sync'](this,_0x394ba2);if(_0x56c44a){for(var _0x380e5d in _0x56c44a){if(_0x56c44a[_0xc28c('0x93')](_0x380e5d)){this['channel'][_0xc28c('0x9c')](util['format'](_0xc28c('0xe8'),_0x380e5d[_0xc28c('0x6d')]()),_0x56c44a[_0x380e5d]);}}this[_0xc28c('0x42')](_0x56c44a[_0xc28c('0xe9')],'out',_0xc28c('0xe3'),'');return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Dialogflow\x20Result\x20%s',_0x56c44a[_0xc28c('0xe9')]));}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x394ba2,_0xc28c('0xea'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0xeb')]=function(_0x42f509){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block',_0x42f509['label']));if(!this[_0xc28c('0xa3')](_0x42f509[_0xc28c('0x7e')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xec'));}if(!this[_0xc28c('0xa3')](_0x42f509[_0xc28c('0xed')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x42f509[_0xc28c('0xee')])){return this[_0xc28c('0x11')]['noop']('no\x20private_key\x20configured');}if(!this[_0xc28c('0xa3')](_0x42f509['dialogflowV2_language'])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xef'));}if(!this[_0xc28c('0xa3')](_0x42f509['text'])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xe6')]=!![];this[_0xc28c('0x36')](_0x42f509);this[_0xc28c('0x42')](_0x42f509[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xf0'),_0x42f509[_0xc28c('0x5d')]));var _0x282f40=this[_0xc28c('0x7d')]['sync'](this,_0x42f509);if(_0x282f40){for(var _0x982b66 in _0x282f40){if(_0x282f40[_0xc28c('0x93')](_0x982b66)){if(_0x982b66!=='providerResponse'){this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')]('DIALOGFLOW_%s',_0x982b66[_0xc28c('0x6d')]()),_0x282f40[_0x982b66]);}}}this[_0xc28c('0x42')](_0x282f40[_0xc28c('0xe9')],_0xc28c('0xf1'),_0xc28c('0xeb'),_0x282f40['providerResponse']);return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xf2'),_0x282f40[_0xc28c('0xe9')]));}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x42f509,_0xc28c('0xf3'));};AGIVertices['prototype']['sesteknda']=function(_0x3b51fb){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0xf4'),_0x3b51fb[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xf5')])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0xf6'));}if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xf7')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xf8'));}if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xf9')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xfa'));}if(!this[_0xc28c('0xa3')](_0x3b51fb[_0xc28c('0xfb')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xe5'));}this['channel'][_0xc28c('0xe6')]=!![];this[_0xc28c('0x36')](_0x3b51fb);this[_0xc28c('0x42')](_0x3b51fb[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xfc'),_0x3b51fb[_0xc28c('0x5d')]));var _0x1e99df=this[_0xc28c('0x7f')][_0xc28c('0x73')](this,_0x3b51fb);if(_0x1e99df){for(var _0x2c8626 in _0x1e99df){if(_0x1e99df[_0xc28c('0x93')](_0x2c8626)){this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0xfd'),_0x2c8626['toUpperCase']()),_0x1e99df[_0x2c8626]);}}this[_0xc28c('0x42')](_0x1e99df[_0xc28c('0xe9')],_0xc28c('0xf1'),_0xc28c('0xfe'),'');if(_0x1e99df['audiofile']){this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0xff'),_0x1e99df[_0xc28c('0x100')]));var _0x4085ad=this[_0xc28c('0x11')][_0xc28c('0x101')](_0x1e99df[_0xc28c('0x100')]);try{fs[_0xc28c('0x102')](_0x1e99df[_0xc28c('0x100')]+_0xc28c('0x103'));}catch(_0x415cbb){logger[_0xc28c('0x2d')](_0x415cbb);}return _0x4085ad;}else{return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x104'),_0x1e99df[_0xc28c('0xe9')]));}}return this['channel']['error'](_0x3b51fb,'SestekNDA\x20is\x20unreachable');};AGIVertices[_0xc28c('0x14')]['end']=function(_0x5a1903){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x105'),_0x5a1903[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x106'));};AGIVertices[_0xc28c('0x14')]['ext_dial']=function(_0x57a825){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x107'),_0x57a825[_0xc28c('0x38')]));var _0x577049='';if(_0x57a825[_0xc28c('0x108')]){if(!this['isConfigured'](_0x57a825[_0xc28c('0x108')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x57a825,_0xc28c('0x109'));}else{var _0x1c5ab9=parseInt(_0x57a825['trunk_id'],0xa);if(isNaN(_0x1c5ab9)){_0x577049=_0x57a825[_0xc28c('0x108')];}else{_0x577049=this[_0xc28c('0x21')]['sync'](this,_0x57a825['trunk_id']);if(!_0x577049){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x57a825,_0xc28c('0x10a'));}}}}else if(_0x57a825[_0xc28c('0x10b')]){_0x577049=_0x57a825[_0xc28c('0x10b')];}else{return this[_0xc28c('0x11')]['error'](_0x57a825,_0xc28c('0x109'));}var _0x51af3e=this['channel']['exec'](_0xc28c('0xe0'),[util[_0xc28c('0x2b')](_0xc28c('0x10c'),_0x577049,_0x57a825[_0xc28c('0x49')]),_0x57a825[_0xc28c('0x69')],_0x57a825[_0xc28c('0x10d')],_0x57a825['url']]);if(_0x51af3e[_0xc28c('0xa1')]===-0x1){return _0x51af3e;}return this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')]('Executed\x20command\x20%s',_0xc28c('0xe0')));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x10e')]=function(_0x348d9e){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x10f'),_0x348d9e['label']));return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x10e'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x110')]=function(_0x513602){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x111'),_0x513602[_0xc28c('0x38')]));if(_0x513602[_0xc28c('0xa5')]===0x0){return this[_0xc28c('0xa4')](_0x513602);}_0x513602['retry']-=0x1;if(!this['isConfigured'](_0x513602[_0xc28c('0x112')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x513602,_0xc28c('0x113'));}var _0x10da30=this[_0xc28c('0x114')][_0xc28c('0x73')](this,_0x513602[_0xc28c('0x112')]);if(!_0x10da30){return this['channel'][_0xc28c('0x2d')](_0x513602,_0xc28c('0x115'));}if(!this['isConfigured'](_0x513602[_0xc28c('0xd2')])){return this[_0xc28c('0x11')]['error']('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x520152=this[_0xc28c('0x11')][_0xc28c('0x116')](_0x10da30,_0x513602['response'],_0x513602['maxdigit']);var _0x3da506=_0x520152[_0xc28c('0xa1')]?_0x520152[_0xc28c('0xa1')][_0xc28c('0x4d')]():'';logger[_0xc28c('0x2f')]('test',JSON[_0xc28c('0x75')](_0x520152));if(_0x520152[_0xc28c('0xa1')]===-0x1){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x513602,_0x3da506);return _0x520152;}else if(_0x520152[_0xc28c('0x9f')]===_0xc28c('0x69')){_0x520152[_0xc28c('0xa1')]=_0x3da506['length']>=parseInt(_0x513602['mindigit'])?'x':'i';}else{_0x520152['result']=_0x3da506['length']>=parseInt(_0x513602['mindigit'])&&_0x3da506[_0xc28c('0x9e')]<=parseInt(_0x513602[_0xc28c('0x117')])?'x':'i';}var _0x20135a=this[_0xc28c('0x15')]['sync'](this,_0x513602[_0xc28c('0xd2')]);if(!_0x20135a){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x513602,'no\x20variable\x20found');}this[_0xc28c('0x11')][_0xc28c('0x9c')](_0x20135a,_0x3da506);if(this[_0xc28c('0xa3')](_0x513602[_0xc28c('0x118')])){var _0x258e4b=parseInt(_0x513602[_0xc28c('0x118')],0xa);var _0x5f4d06=rs[_0xc28c('0x119')]({'charset':'*','length':_0x258e4b});var _0x3a8a27=_0x3da506['length'];if(_0x3a8a27>0x0){if(_0x3a8a27>_0x258e4b){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x513602,_0x513602['hiddendigitspos']==='first'?_0x5f4d06+_0x3da506[_0xc28c('0x11a')](_0x258e4b):_0x3da506['substr'](0x0,_0x3a8a27-_0x258e4b)+_0x5f4d06);}else{this['createSquareDetailsReport']['sync'](this,_0x513602,rs[_0xc28c('0x119')]({'charset':'*','length':_0x3a8a27}));}}else{this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x513602,'');}}else{this[_0xc28c('0x36')]['sync'](this,_0x513602,_0x3da506);}return _0x520152;};AGIVertices[_0xc28c('0x14')][_0xc28c('0x10')]=function(_0x3b6833){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x11b'),_0x3b6833[_0xc28c('0x38')]));return this[_0xc28c('0x110')](_0x3b6833);};AGIVertices['prototype'][_0xc28c('0x11c')]=function(_0x589920){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x11d'),_0x589920['label']));this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x589920,_0x589920[_0xc28c('0x11e')]);return this['channel']['noop'](util[_0xc28c('0x2b')]('GOAL\x20%s',_0x589920[_0xc28c('0x11e')]));};AGIVertices['prototype'][_0xc28c('0x11f')]=function(_0x4a28f6){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x120'),_0x4a28f6[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x4a28f6['aws_access_key_id'])||!this[_0xc28c('0xa3')](_0x4a28f6[_0xc28c('0x8b')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20valid\x20credentials\x20configured');}if(!this[_0xc28c('0xa3')](_0x4a28f6[_0xc28c('0x5d')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x121'),_0x4a28f6['text']));var _0xd7add5=this['awsPolly'][_0xc28c('0x73')](this,_0x4a28f6);if(_0xd7add5){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x122'),_0xd7add5));var _0x108dc8=this[_0xc28c('0x11')]['streamFile'](_0xd7add5);try{fs[_0xc28c('0x102')](_0xd7add5+_0xc28c('0x103'));}catch(_0x71c4a3){logger[_0xc28c('0x2d')](_0x71c4a3);}return _0x108dc8;}return this['channel'][_0xc28c('0x2d')](_0x4a28f6,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0xc28c('0x123')]=function(_0x11b538){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x124'),_0x11b538['label']));if(!this[_0xc28c('0xa3')](_0x11b538[_0xc28c('0x87')])||!this['isConfigured'](_0x11b538[_0xc28c('0x8b')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x125'));}if(!this[_0xc28c('0xa3')](_0x11b538['aws_bot_name'])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0x126'));}if(!this['isConfigured'](_0x11b538[_0xc28c('0x5d')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xe6')]=!![];this['createSquareDetailsReport'](_0x11b538);this[_0xc28c('0x42')](_0x11b538[_0xc28c('0x5d')],'in','','');this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x127'),_0x11b538[_0xc28c('0x5d')]));var _0x158700=this[_0xc28c('0x8a')][_0xc28c('0x73')](this,_0x11b538);if(_0x158700){for(var _0x53556d in _0x158700){if(_0x158700[_0xc28c('0x93')](_0x53556d)&&_['isString'](_0x158700[_0x53556d])){this[_0xc28c('0x11')][_0xc28c('0x9c')](util['format'](_0xc28c('0x128'),_0x53556d[_0xc28c('0x6d')]()),_0x158700[_0x53556d]);}}if(_[_0xc28c('0x45')](_0x158700[_0xc28c('0x78')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x129'));}else{this[_0xc28c('0x42')](_0x158700[_0xc28c('0x78')],_0xc28c('0xf1'),_0xc28c('0x12a'),'');return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x12b'),_0x158700[_0xc28c('0x78')]));}}return this[_0xc28c('0x11')]['error'](_0x11b538,_0xc28c('0x12c'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x12d')]=function(_0x3e0c0c){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x12e'),_0x3e0c0c[_0xc28c('0x38')],_0x3e0c0c[_0xc28c('0x69')]));if(!this[_0xc28c('0xa3')](_0x3e0c0c[_0xc28c('0x7c')])){return this['channel']['noop'](_0xc28c('0x12f'));}var _0x3ae2d5=_0xc28c('0x130');var _0x50dd34=util[_0xc28c('0x2b')](_0xc28c('0x131'),FILES_PATH,rs[_0xc28c('0x119')](0x4));var _0x2f2091=util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x50dd34,_0x3ae2d5);var _0x3aee08=!![];if(_0x3e0c0c[_0xc28c('0x132')]===_0xc28c('0x133')){_0x3aee08=![];}var _0x399b52=this[_0xc28c('0x11')][_0xc28c('0x134')](_0x50dd34,_0x3ae2d5,_0x3e0c0c[_0xc28c('0x135')],_0x3e0c0c['timeout'],undefined,_0x3aee08);if(_0x399b52[_0xc28c('0xa1')]!==-0x1){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x136'),_0x2f2091));var _0x360133=this[_0xc28c('0x8e')][_0xc28c('0x73')](this,_0x3e0c0c,_0x2f2091);if(_0x360133){for(var _0x1820c8 in _0x360133){if(_0x360133['hasOwnProperty'](_0x1820c8)){this['channel'][_0xc28c('0x9c')](util[_0xc28c('0x2b')]('GOOGLE_ASR_%s',_0x1820c8[_0xc28c('0x6d')]()),_0x360133[_0x1820c8]);}}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x137'),JSON['stringify'](_0x360133)));}}return _0x399b52;};AGIVertices[_0xc28c('0x14')][_0xc28c('0x138')]=function(_0x2f5ded){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x139'),_0x2f5ded['label']));if(!this[_0xc28c('0xa3')](_0x2f5ded[_0xc28c('0x13a')])){return this['channel']['noop'](_0xc28c('0x13b'));}if(!this[_0xc28c('0xa3')](_0x2f5ded[_0xc28c('0x13c')])){return this[_0xc28c('0x11')]['noop'](_0xc28c('0x13d'));}var _0x273f0c=_0xc28c('0x130');var _0x4f42ff=util['format'](_0xc28c('0x131'),FILES_PATH,rs[_0xc28c('0x119')](0x4));var _0x30acd6=util[_0xc28c('0x2b')](_0xc28c('0x9b'),_0x4f42ff,_0x273f0c);var _0x4bdfd7=!![];if(_0x2f5ded[_0xc28c('0x132')]==='NOBEEP'){_0x4bdfd7=![];}var _0x43d265=this[_0xc28c('0x11')]['recordFile'](_0x4f42ff,_0x273f0c,_0x2f5ded[_0xc28c('0x135')],_0x2f5ded[_0xc28c('0x69')],undefined,_0x4bdfd7);if(_0x43d265[_0xc28c('0xa1')]!==-0x1){this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')]('tilde\x20%s\x20file\x20created',_0x30acd6));var _0x237081=this['tildeASR'][_0xc28c('0x73')](this,_0x2f5ded,_0x30acd6);if(_0x237081){for(var _0x1b7c3e in _0x237081){if(_0x237081[_0xc28c('0x93')](_0x1b7c3e)){this[_0xc28c('0x11')]['setVariable'](util[_0xc28c('0x2b')](_0xc28c('0x13e'),_0x1b7c3e[_0xc28c('0x6d')]()),_0x237081[_0x1b7c3e]);}}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x13f'),JSON[_0xc28c('0x75')](_0x237081)));}}return _0x43d265;};AGIVertices[_0xc28c('0x14')]['gotoc']=function(_0x3dbffc){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x3dbffc['label']));return this[_0xc28c('0x11')][_0xc28c('0x140')](_0x3dbffc[_0xc28c('0x3d')],_0x3dbffc[_0xc28c('0x3e')],_0x3dbffc[_0xc28c('0x141')]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x142')]=function(_0x49207b){logger['info'](util['format'](_0xc28c('0x143'),_0x49207b[_0xc28c('0x38')]));if(!this['isConfigured'](_0x49207b[_0xc28c('0x144')])){return this['channel'][_0xc28c('0x2d')](_0x49207b,_0xc28c('0x145'));}try{var _0xed08fc=eval(_0x49207b[_0xc28c('0x144')])?_0xc28c('0x146'):_0xc28c('0x147');this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x148'),_0x49207b[_0xc28c('0x144')],_0xed08fc));return{'code':0xc8,'result':_0xed08fc};}catch(_0x29c1f5){return{'code':0xc8,'result':_0xc28c('0x147')};}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x149')]=function(_0x1b317f){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x14a'),_0x1b317f[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x1b317f[_0xc28c('0x14b')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x1b317f,_0xc28c('0x14c'));}var _0x15fa0c=this[_0xc28c('0x26')][_0xc28c('0x73')](this,_0x1b317f[_0xc28c('0x14b')]);if(!_0x15fa0c){return this['channel']['error'](_0x1b317f,'no\x20intervals\x20found');}for(var _0x732933=0x0;_0x732933<_0x15fa0c[_0xc28c('0x9e')];_0x732933+=0x1){var _0x2ce7e3=this[_0xc28c('0x11')][_0xc28c('0x15')](util[_0xc28c('0x2b')](_0xc28c('0x14d'),_0x15fa0c[_0x732933]));if(_0x2ce7e3['result']===-0x1){return _0x2ce7e3;}logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0x2ce7e3[_0xc28c('0x9f')]));if(_0x2ce7e3[_0xc28c('0x9f')]===_0xc28c('0x146')){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],'true'));this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0xc28c('0x146')));return{'code':0xc8,'result':_0xc28c('0x146')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0xc28c('0x147')));this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x14e'),_0x15fa0c[_0x732933],_0xc28c('0x147')));}}return{'code':0xc8,'result':_0xc28c('0x147')};};AGIVertices[_0xc28c('0x14')]['hangup']=function(_0x56d754){logger[_0xc28c('0x2f')](util['format']('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x56d754[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0x14f')]();};AGIVertices[_0xc28c('0x14')][_0xc28c('0x150')]=function(_0x197499){logger['info'](util['format'](_0xc28c('0x151'),_0x197499[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x197499[_0xc28c('0x7c')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x12f'));}var _0x12b80b='wav';var _0x15eab9=util[_0xc28c('0x2b')](_0xc28c('0x131'),FILES_PATH,rs[_0xc28c('0x119')](0x4));var _0x2ebee5=util['format'](_0xc28c('0x9b'),_0x15eab9,_0x12b80b);var _0x67b1b0=!![];if(_0x197499['beep']===_0xc28c('0x133')){_0x67b1b0=![];}var _0x546fa1=this[_0xc28c('0x11')]['recordFile'](_0x15eab9,_0x12b80b,_0x197499[_0xc28c('0x135')],_0x197499[_0xc28c('0x69')],undefined,_0x67b1b0);if(_0x546fa1[_0xc28c('0xa1')]!==-0x1){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x152'),_0x2ebee5));var _0x512345=this[_0xc28c('0x83')][_0xc28c('0x73')](this,_0x197499,_0x2ebee5);if(_0x512345){for(var _0x5b4d3c in _0x512345){if(_0x512345[_0xc28c('0x93')](_0x5b4d3c)){this['channel'][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0x153'),_0x5b4d3c['toUpperCase']()),_0x512345[_0x5b4d3c]);}}return this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x154'),JSON[_0xc28c('0x75')](_0x512345)));}}return _0x546fa1;};AGIVertices[_0xc28c('0x14')]['ispeechtts']=function(_0x36ab45){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x155'),_0x36ab45[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x36ab45[_0xc28c('0x7c')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x12f'));}if(!this[_0xc28c('0xa3')](_0x36ab45['text'])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xe5'));}this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x156'),_0x36ab45[_0xc28c('0x5d')]));var _0x27396a=this[_0xc28c('0x80')][_0xc28c('0x73')](this,_0x36ab45);if(_0x27396a){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x152'),_0x27396a));var _0x1bf99c=this[_0xc28c('0x11')][_0xc28c('0x101')](_0x27396a,_0x36ab45[_0xc28c('0x135')]);try{fs[_0xc28c('0x102')](_0x27396a+_0xc28c('0x103'));}catch(_0x3e05be){logger[_0xc28c('0x2d')](_0x3e05be);}return _0x1bf99c;}return this['channel'][_0xc28c('0x2d')](_0x36ab45,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0xc28c('0x14')][_0xc28c('0x157')]=function(_0x260de8){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x158'),_0x260de8['label']));if(!this[_0xc28c('0xa3')](_0x260de8['findBy'])){return this['channel'][_0xc28c('0x2d')](_0x260de8,_0xc28c('0x159'));}logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xc28c('0x11')]['callerid'],_0x260de8[_0xc28c('0x15a')]));var _0x488e94=this[_0xc28c('0x58')][_0xc28c('0x73')](this,_0x260de8[_0xc28c('0x15a')]);if(_0x488e94){logger[_0xc28c('0x2f')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x260de8['findBy']));this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this['channel'][_0xc28c('0x3a')],_0x260de8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15d'),this['channel'][_0xc28c('0x3a')],_0x260de8[_0xc28c('0x15a')]));this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x15d'),this['channel']['callerid'],_0x260de8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15e')};}};AGIVertices['prototype'][_0xc28c('0x15f')]=function(_0x1ed4c8){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x1ed4c8[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x1ed4c8['findBy'])){return this[_0xc28c('0x11')]['error'](_0x1ed4c8,'no\x20find\x20by\x20configured');}logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x1ed4c8[_0xc28c('0x15a')]));var _0x31248b=this['agentLogout'][_0xc28c('0x73')](this,_0x1ed4c8[_0xc28c('0x15a')]);if(_0x31248b){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this['channel'][_0xc28c('0x3a')],_0x1ed4c8[_0xc28c('0x15a')]));this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this['channel']['callerid'],_0x1ed4c8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x15d'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x1ed4c8['findBy']));this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x15d'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x1ed4c8[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15e')};}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x160')]=function(_0x295dd9){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x295dd9['label']));if(!this[_0xc28c('0xa3')](_0x295dd9['operation'])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x295dd9,_0xc28c('0x161'));}this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('math\x20%s',_0x295dd9[_0xc28c('0x162')]));var _0x2b952d=eval(_0x295dd9['operation']);if(!this[_0xc28c('0xa3')](_0x295dd9['variable_id'])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xd3'));}var _0x1d7b73=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x295dd9[_0xc28c('0xd2')]);if(!_0x1d7b73){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x295dd9,_0xc28c('0xd4'));}if(_[_0xc28c('0x99')](_0x2b952d)){var _0x280f3a=this;_0x2b952d['forEach'](function(_0xd527ec,_0x5361e0){_0x280f3a[_0xc28c('0x11')][_0xc28c('0x9c')](util['format'](_0xc28c('0x163'),_0x1d7b73,_0x5361e0),_0xd527ec);});return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x164'),_0x1d7b73));}else{return this['channel'][_0xc28c('0x9c')](_0x1d7b73,_0x2b952d);}};AGIVertices[_0xc28c('0x14')][_0xc28c('0xf')]=function(_0x82362){logger['info'](util['format'](_0xc28c('0x165'),_0x82362[_0xc28c('0x38')]));if(_0x82362[_0xc28c('0xa5')]===0x0){return this[_0xc28c('0xa4')](_0x82362);}_0x82362[_0xc28c('0xa5')]-=0x1;if(!this[_0xc28c('0xa3')](_0x82362[_0xc28c('0x112')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x82362,_0xc28c('0x113'));}var _0x3292c4=this[_0xc28c('0x114')][_0xc28c('0x73')](this,_0x82362[_0xc28c('0x112')]);if(!_0x3292c4){return this[_0xc28c('0x11')]['error'](_0x82362,'no\x20file\x20audio\x20found');}var _0x3bdf78=this[_0xc28c('0x11')][_0xc28c('0x116')](_0x3292c4,_0x82362[_0xc28c('0x166')],_0x82362[_0xc28c('0x167')]);var _0x284555=_0x3bdf78[_0xc28c('0xa1')];if(_0x3bdf78[_0xc28c('0xa1')]===-0x1){this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x82362,'-1');return _0x3bdf78;}else if(_0x3bdf78['extra']===_0xc28c('0x69')){_0x3bdf78['result']=_0x3bdf78[_0xc28c('0xa1')][_0xc28c('0x9e')]>0x0?_0x3bdf78[_0xc28c('0xa1')]:'t';}else if(_[_0xc28c('0x44')](_0x3bdf78[_0xc28c('0xa1')])){_0x3bdf78[_0xc28c('0xa1')]='#';_0x284555='#';}if(!this[_0xc28c('0xa3')](_0x82362[_0xc28c('0xd2')])){this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0xd3'));}else{var _0xbfa412=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x82362[_0xc28c('0xd2')]);if(!_0xbfa412){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x82362,_0xc28c('0xd4'));}this['channel'][_0xc28c('0x9c')](_0xbfa412,_0x284555);}this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x82362,_0x284555);return _0x3bdf78;};AGIVertices['prototype'][_0xc28c('0xa7')]=function(_0x119d08){logger[_0xc28c('0x2f')](util['format']('Enter\x20in\x20NOOP\x20(%s)\x20block',_0x119d08[_0xc28c('0x38')]));return this['channel']['noop'](_0x119d08[_0xc28c('0x168')]||_0x119d08[_0xc28c('0x38')]);};AGIVertices['prototype'][_0xc28c('0x169')]=function(_0x55d00e){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x16a'),_0x55d00e[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x55d00e[_0xc28c('0x15a')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x55d00e,_0xc28c('0x159'));}logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x16b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x55d00e[_0xc28c('0x15a')]));var _0x1a1dad=this['getPause'][_0xc28c('0x73')](this,_0x55d00e[_0xc28c('0x16c')]);var _0x5706a4=this[_0xc28c('0x51')]['sync'](this,_0x55d00e[_0xc28c('0x15a')],_0x1a1dad);if(_0x5706a4){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x15b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x55d00e[_0xc28c('0x15a')]));this['channel'][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this[_0xc28c('0x11')]['callerid'],_0x55d00e['findBy']));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15d'),this[_0xc28c('0x11')]['callerid'],_0x55d00e[_0xc28c('0x15a')]));this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x55d00e[_0xc28c('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xc28c('0x14')]['playback']=function(_0x5e53a6){logger['info'](util['format'](_0xc28c('0x16d'),_0x5e53a6[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x5e53a6[_0xc28c('0x112')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x5e53a6,'no\x20file\x20audio\x20selected');}var _0x51f31c=this[_0xc28c('0x114')]['sync'](this,_0x5e53a6[_0xc28c('0x112')]);if(!_0x51f31c){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x5e53a6,'no\x20file\x20audio\x20found');}var _0x317359=this['channel'][_0xc28c('0xa8')](_0xc28c('0x16e'),[_0x51f31c,_0x5e53a6[_0xc28c('0x10d')]]);if(_0x317359[_0xc28c('0xa1')]===-0x1){return _0x317359;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0xbe'),_0xc28c('0x16e'),_0x51f31c));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x16f')]=function(_0xd90f0){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x170'),_0xd90f0[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0xd90f0[_0xc28c('0x171')])){return this[_0xc28c('0x11')]['error'](_0xd90f0,'no\x20queue\x20selected');}var _0xacd30='';var _0x1216f8=parseInt(_0xd90f0['queue_id'],0xa);if(isNaN(_0x1216f8)){_0xacd30=_0xd90f0[_0xc28c('0x171')];}else{_0xacd30=this['getVoiceQueue'][_0xc28c('0x73')](this,_0xd90f0[_0xc28c('0x171')]);if(!_0xacd30){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0xd90f0,_0xc28c('0x172'));}}var _0x189702='';if(this['isConfigured'](_0xd90f0['file_id'])){var _0x3d5c6a=this[_0xc28c('0x114')]['sync'](this,_0xd90f0['file_id']);if(_0x3d5c6a){_0x189702=_0x3d5c6a;}}this[_0xc28c('0x36')]['sync'](this,_0xd90f0,_0xacd30);if(_0xd90f0['opts'][_0xc28c('0x173')]('x')<0x0){_0xd90f0[_0xc28c('0x10d')]+='x';}if(_0xd90f0['opts']['indexOf']('X')<0x0){_0xd90f0[_0xc28c('0x10d')]+='X';}this[_0xc28c('0x11')]['setVariable']('XMCS-QUEUE',_0xacd30?_0xacd30['toLowerCase']():'');var _0x519db9=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0x174'),[_0xacd30,_0xd90f0[_0xc28c('0x10d')],_0xd90f0[_0xc28c('0x66')],_0x189702,_0xd90f0[_0xc28c('0x69')],_0xd90f0[_0xc28c('0xa')],_0xd90f0[_0xc28c('0x175')],_0xd90f0[_0xc28c('0x176')],'',_0xd90f0[_0xc28c('0x177')]]);if(_0x519db9[_0xc28c('0xa1')]===-0x1){return _0x519db9;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Executed\x20command\x20%s\x20%s',_0xc28c('0x174'),_0xacd30));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x178')]=function(_0x3d952b){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x179'),_0x3d952b[_0xc28c('0x38')]));var _0x4466b7=_0x3d952b[_0xc28c('0x17a')]||_0xc28c('0x130');var _0x1f45eb=util[_0xc28c('0x2b')](_0xc28c('0x17b'),this[_0xc28c('0x11')]['uniqueid'],rs[_0xc28c('0x119')](0x5));var _0x81c8ec=util['format']('%s/recordings/%s.%s',FILES_PATH,_0x1f45eb,_0x4466b7);var _0xdc8567=util[_0xc28c('0x2b')]('%s/recordings/%s',FILES_PATH,_0x1f45eb);this[_0xc28c('0x3b')]['sync'](this,_0x3d952b,_0x1f45eb,_0x81c8ec);this['channel']['setVariable'](_0xc28c('0x17c'),_0x1f45eb);logger[_0xc28c('0x2f')](_0xc28c('0x17d'),_0xdc8567,_0x4466b7,_0x3d952b[_0xc28c('0x17e')],_0x3d952b[_0xc28c('0x69')]);return this['channel'][_0xc28c('0x134')](_0xdc8567,_0x4466b7,_0x3d952b[_0xc28c('0x17e')],_0x3d952b[_0xc28c('0x69')],undefined,!![]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x17f')]=function(_0x290a87){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x180'),_0x290a87[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x290a87[_0xc28c('0x66')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x181'));}var _0x47b4c9=this[_0xc28c('0x65')][_0xc28c('0x73')](this,_0x290a87);logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x182'),util[_0xc28c('0x183')](_0x47b4c9,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x290a87[_0xc28c('0xd2')])){return this['channel']['noop'](_0xc28c('0x184'));}var _0x24fb4b=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x290a87['variable_id']);if(!_0x24fb4b){return this['channel'][_0xc28c('0x2d')](_0x290a87,_0xc28c('0xd4'));}this['channel']['setVariable'](util['format'](_0xc28c('0x185'),_0x24fb4b),_0x47b4c9[_0xc28c('0x77')]?_0x47b4c9[_0xc28c('0x77')]:'200');this[_0xc28c('0x11')][_0xc28c('0x9c')](util[_0xc28c('0x2b')](_0xc28c('0x186'),_0x24fb4b),_0x47b4c9[_0xc28c('0x187')]?_0x47b4c9[_0xc28c('0x187')]:'OK');if(_0x47b4c9['body']){try{this['saveRestApiResult'](_0x47b4c9[_0xc28c('0x6e')],_0x24fb4b);}catch(_0x7c4fae){logger[_0xc28c('0x2d')](util[_0xc28c('0x2b')](_0xc28c('0x188'),_0x24fb4b));}}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0xd9'),_0x24fb4b));};AGIVertices['prototype']['saydigits']=function(_0x340798){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x189'),_0x340798[_0xc28c('0x38')]));return this[_0xc28c('0x11')]['sayDigits'](_0x340798[_0xc28c('0x18a')][_0xc28c('0xd0')](/\s+/g,''),_0x340798[_0xc28c('0x17e')]);};AGIVertices['prototype'][_0xc28c('0x18b')]=function(_0x531831){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x18c'),_0x531831[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0x18d')](_0x531831[_0xc28c('0x68')][_0xc28c('0xd0')](/\s+/g,''),_0x531831['escape_digits']);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x18e')]=function(_0x446ecf){logger['info'](util[_0xc28c('0x2b')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x446ecf[_0xc28c('0x38')]));return this[_0xc28c('0x11')][_0xc28c('0x18f')](_0x446ecf[_0xc28c('0x5d')],_0x446ecf[_0xc28c('0x17e')]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x190')]=function(_0x342016){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x191'),_0x342016[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x342016[_0xc28c('0x192')])){return this[_0xc28c('0x11')][_0xc28c('0xa7')]('no\x20mail\x20account\x20configured');}var _0x5d377a=this[_0xc28c('0x193')][_0xc28c('0x73')](this,_0x342016[_0xc28c('0x192')]);if(!_0x5d377a||!_0x5d377a['Smtp']){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x342016,_0xc28c('0x194'));}var _0x214a18={'from':util[_0xc28c('0x2b')]('\x22%s\x22\x20<%s>',_0x5d377a[_0xc28c('0x18')],_0x5d377a[_0xc28c('0x195')]||_0x5d377a[_0xc28c('0x196')][_0xc28c('0x197')]),'to':_0x342016['to']||'','cc':_0x342016['cc']||'','bcc':_0x342016[_0xc28c('0x198')]||'','subject':_0x342016[_0xc28c('0x199')],'html':_0x342016['text'],'text':_0x342016['text']};var _0x41803f={'tls':{'rejectUnauthorized':![]}};if(_0x5d377a[_0xc28c('0x196')]['service']){_0x41803f['service']=_0x5d377a[_0xc28c('0x196')][_0xc28c('0x19a')];}else{_0x41803f[_0xc28c('0x19b')]=_0x5d377a[_0xc28c('0x196')][_0xc28c('0x19b')];_0x41803f[_0xc28c('0x19c')]=_0x5d377a[_0xc28c('0x196')][_0xc28c('0x19c')];_0x41803f[_0xc28c('0x19d')]=_0x5d377a[_0xc28c('0x196')]['secure'];}if(_0x5d377a['Smtp']['authentication']){_0x41803f[_0xc28c('0x19e')]={'user':_0x5d377a['Smtp'][_0xc28c('0x197')],'pass':_0x5d377a[_0xc28c('0x196')]['pass']};}if(this['isConfigured'](_0x342016[_0xc28c('0x19f')])){}logger['debug'](_0xc28c('0x1a0'),JSON[_0xc28c('0x75')](_0x214a18));this['createSquareDetailsReport'][_0xc28c('0x73')](this,_0x342016,_0x342016[_0xc28c('0x192')]);this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x1a1'),_0x5d377a[_0xc28c('0x18')]));this[_0xc28c('0x25')][_0xc28c('0x73')](this,_0x41803f,_0x214a18);return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x1a2'));};AGIVertices['prototype'][_0xc28c('0x1a3')]=function(_0x357a9c){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1a4'),_0x357a9c[_0xc28c('0x38')]));return this['channel']['noop'](_0xc28c('0x1a5'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1a6')]=function(_0x302b7f){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1a7'),_0x302b7f['label']));if(!this[_0xc28c('0xa3')](_0x302b7f[_0xc28c('0x1a8')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0x1a9'));}var _0x176314=this[_0xc28c('0x1aa')]['sync'](this,_0x302b7f[_0xc28c('0x1a8')]);if(!_0x176314){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x302b7f,'no\x20sms\x20account\x20found');}var _0xa5d217={'body':_0x302b7f[_0xc28c('0x1ab')],'phone':_0x302b7f['to']||'','SmsAccountId':_0x176314['id']};logger[_0xc28c('0xdb')](_0xc28c('0x1ac'),JSON[_0xc28c('0x75')](_0xa5d217));this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x302b7f,_0x302b7f[_0xc28c('0x1a8')]);this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x1ad'),_0x176314[_0xc28c('0x18')]));this[_0xc28c('0x35')][_0xc28c('0x73')](this,_0xa5d217);return this['channel']['noop']('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1ae')]=function(_0x448bca){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1af'),_0x448bca['label']));if(!this[_0xc28c('0xa3')](_0x448bca[_0xc28c('0xd2')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x448bca,_0xc28c('0x1b0'));}var _0x5b022c=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x448bca[_0xc28c('0xd2')]);if(!_0x5b022c){return this[_0xc28c('0x11')]['error'](_0x448bca,_0xc28c('0xd4'));}return this[_0xc28c('0x11')]['setVariable'](_0x5b022c,_0x448bca[_0xc28c('0x1b1')]);};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1b2')]=function(_0x43fda9){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1b3'),_0x43fda9[_0xc28c('0x38')]));this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x1b4'));if(_0x43fda9['answer']===_0xc28c('0x1b5')){this[_0xc28c('0x11')]['noop'](_0xc28c('0x1b6'));return this[_0xc28c('0x11')][_0xc28c('0xb4')]();}return this[_0xc28c('0x11')]['noop'](_0xc28c('0x1b7'));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1b8')]=function(_0x3bd29b){logger[_0xc28c('0x2f')](util['format'](_0xc28c('0x1b9'),_0x3bd29b[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x3bd29b[_0xc28c('0x1ba')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x3bd29b,_0xc28c('0x1bb'));}var _0x4ba11b=this[_0xc28c('0x1b')][_0xc28c('0x73')](this,_0x3bd29b[_0xc28c('0x1ba')]);if(!this[_0xc28c('0xa3')](_0x4ba11b)){return this[_0xc28c('0x11')]['error'](_0x3bd29b,util[_0xc28c('0x2b')](_0xc28c('0x1bc'),_0x3bd29b[_0xc28c('0x1ba')]));}if(_0x4ba11b===this['channel']['arg_1']){return this['channel'][_0xc28c('0x2d')](_0x3bd29b,_0xc28c('0x1bd'));}this['createSquareDetailsReport'][_0xc28c('0x73')](this,_0x3bd29b,_0x4ba11b);var _0x4780ca=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0x1be'),util[_0xc28c('0x2b')](_0xc28c('0x1bf'),config[_0xc28c('0xa')][_0xc28c('0x19b')]||_0xc28c('0x1c0'),_0x4ba11b,this[_0xc28c('0x11')][_0xc28c('0x40')]));if(_0x4780ca['result']===-0x1){return _0x4780ca;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('Executed\x20command\x20%s\x20%s',_0xc28c('0x1be'),_0x4ba11b));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1c1')]=function(_0x523905){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x1c2'),_0x523905[_0xc28c('0x38')]));var _0x1f25e3=this[_0xc28c('0x1c3')][_0xc28c('0x73')](this,_0x523905[_0xc28c('0xb2')]);this[_0xc28c('0x36')][_0xc28c('0x73')](this,_0x523905,_0x523905[_0xc28c('0xb2')]);if(this['isConfigured'](_0x523905[_0xc28c('0xd2')])){var _0x7d580a=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x523905['variable_id']);if(_0x7d580a){this[_0xc28c('0x11')]['setVariable'](_0x7d580a,_0x1f25e3);return this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x523905['command'],_0x7d580a));}}return this['channel']['noop'](util[_0xc28c('0x2b')](_0xc28c('0x1c4'),_0x523905[_0xc28c('0xb2')]));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1c5')]=function(_0x35d745){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x1c6'),_0x35d745[_0xc28c('0x38')]));_0x35d745[_0xc28c('0x5d')]=_0x35d745[_0xc28c('0x5d')][_0xc28c('0xd0')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xc28c('0xa3')](_0x35d745['apiKey'])){return this[_0xc28c('0x11')][_0xc28c('0xa7')](_0xc28c('0x1c7'));}if(!this[_0xc28c('0xa3')](_0x35d745['text'])){return this['channel']['noop'](_0xc28c('0xe5'));}this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0x1c8'),_0x35d745[_0xc28c('0x5d')]));var _0x552976=this[_0xc28c('0x5a')]['sync'](this,_0x35d745);if(_0x552976){this[_0xc28c('0x11')][_0xc28c('0xa7')](util[_0xc28c('0x2b')](_0xc28c('0x1c9'),_0x552976));var _0x1895af=this[_0xc28c('0x11')]['streamFile'](_0x552976);try{fs[_0xc28c('0x102')](_0x552976+_0xc28c('0x103'));}catch(_0x87384f){logger[_0xc28c('0x2d')](_0x87384f);}return _0x1895af;}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x35d745,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0xc28c('0x14')]['tts']=function(_0x40cce9){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1ca'),_0x40cce9[_0xc28c('0x38')]));_0x40cce9[_0xc28c('0x5d')]=_0x40cce9['text']['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x40cce9[_0xc28c('0x5d')])){return this['channel'][_0xc28c('0xa7')](_0xc28c('0xe5'));}this[_0xc28c('0x11')]['noop'](util['format']('Trying\x20Google\x20TTS\x20%s',_0x40cce9[_0xc28c('0x5d')]));var _0x51d0cb=this[_0xc28c('0x64')]['sync'](this,_0x40cce9);if(_0x51d0cb){this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')](_0xc28c('0x1cb'),_0x51d0cb));var _0xeae246=this[_0xc28c('0x11')][_0xc28c('0x101')](_0x51d0cb);try{fs[_0xc28c('0x102')](_0x51d0cb+_0xc28c('0x103'));}catch(_0x8ad7e1){logger[_0xc28c('0x2d')](_0x8ad7e1);}return _0xeae246;}return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x40cce9,_0xc28c('0x1cc'));};AGIVertices['prototype'][_0xc28c('0x1cd')]=function(_0x7ea72d){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1ce'),_0x7ea72d[_0xc28c('0x38')]));if(!this[_0xc28c('0xa3')](_0x7ea72d[_0xc28c('0x15a')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x7ea72d,_0xc28c('0x159'));}logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x16b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));var _0x2704c2=this[_0xc28c('0x52')][_0xc28c('0x73')](this,_0x7ea72d[_0xc28c('0x15a')]);if(_0x2704c2){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x15b'),this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));this[_0xc28c('0x11')]['noop'](util[_0xc28c('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xc28c('0x11')]['callerid'],_0x7ea72d[_0xc28c('0x15a')]));return{'code':0xc8,'result':_0xc28c('0x15c')};}else{logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xc28c('0x11')][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));this['channel'][_0xc28c('0xa7')](util['format'](_0xc28c('0x15d'),this['channel'][_0xc28c('0x3a')],_0x7ea72d[_0xc28c('0x15a')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1cf')]=function(_0x42c615){logger['info'](util[_0xc28c('0x2b')](_0xc28c('0x1d0'),_0x42c615[_0xc28c('0x38')]));var _0x438092=this[_0xc28c('0x11')][_0xc28c('0xa8')](_0xc28c('0x1d1'),[_0x42c615['mailbox'],_0x42c615['options']]);if(_0x438092['result']===-0x1){return _0x438092;}return this[_0xc28c('0x11')][_0xc28c('0xa7')](util['format'](_0xc28c('0xbe'),_0xc28c('0x1d1'),_0x42c615[_0xc28c('0x1d2')]));};AGIVertices[_0xc28c('0x14')][_0xc28c('0x1d3')]=function(_0x514e96){logger[_0xc28c('0x2f')](util[_0xc28c('0x2b')](_0xc28c('0x1d4'),_0x514e96[_0xc28c('0x38')]));if(!this['isConfigured'](_0x514e96[_0xc28c('0xd2')])){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x514e96,'no\x20variable\x20selected');}var _0xa5dd4c=this[_0xc28c('0x15')][_0xc28c('0x73')](this,_0x514e96[_0xc28c('0xd2')]);if(!_0xa5dd4c){return this[_0xc28c('0x11')][_0xc28c('0x2d')](_0x514e96,_0xc28c('0xd4'));}var _0x4b391b=this[_0xc28c('0x11')]['getVariable'](_0xa5dd4c);return{'code':0xc8,'result':_0x4b391b[_0xc28c('0x9f')]?_0x4b391b[_0xc28c('0x9f')]:'-'};};String[_0xc28c('0x14')][_0xc28c('0x1d5')]=function(_0xcb896,_0x229b7d){return this[_0xc28c('0x9d')](_0xcb896)[_0xc28c('0x1d6')](_0x229b7d);};module[_0xc28c('0x1d7')]=AGIVertices;
\ No newline at end of file
index 2816f7c..3f77940 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b02=['interface','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','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','finally','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','stringify','message','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','transfertargetuniqueid','secondtransfereruniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','syncBlindTransfer','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','bind','hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','syncAttendedTransfer','blindtransfer','custom:agentConnectPreview','syncAgentConnectPreview','diff','seconds','prototype','startAcw','channels'];(function(_0x30786c,_0x35df5a){var _0x928e0a=function(_0x4b0859){while(--_0x4b0859){_0x30786c['push'](_0x30786c['shift']());}};_0x928e0a(++_0x35df5a);}(_0x7b02,0x152));var _0x27b0=function(_0x2d92c8,_0x5efacd){_0x2d92c8=_0x2d92c8-0x0;var _0x2c49cb=_0x7b02[_0x2d92c8];return _0x2c49cb;};'use strict';var util=require(_0x27b0('0x0'));var _=require(_0x27b0('0x1'));var moment=require('moment');var ami=require(_0x27b0('0x2'));var logger=require('../../../config/logger')(_0x27b0('0x3'));var RpcUser=require(_0x27b0('0x4'));var RpcVoiceAgentReport=require(_0x27b0('0x5'));function Acw(_0x224b3c){this[_0x27b0('0x6')]=_0x224b3c['voiceQueues'];this[_0x27b0('0x7')]=_0x224b3c[_0x27b0('0x7')];this[_0x27b0('0x8')]=_0x224b3c[_0x27b0('0x8')];this['channels']={};ami['on'](_0x27b0('0x9'),this['syncAgentConnect'][_0x27b0('0xa')](this));ami['on'](_0x27b0('0xb'),this[_0x27b0('0xc')][_0x27b0('0xa')](this));ami['on'](_0x27b0('0xd'),this[_0x27b0('0xe')][_0x27b0('0xa')](this));ami['on'](_0x27b0('0xf'),this[_0x27b0('0x10')][_0x27b0('0xa')](this));ami['on']('attendedtransfer',this[_0x27b0('0x11')][_0x27b0('0xa')](this));ami['on'](_0x27b0('0x12'),this['syncBlindTransfer'][_0x27b0('0xa')](this));ami['on'](_0x27b0('0x13'),this[_0x27b0('0x14')][_0x27b0('0xa')](this));}function getDiff(_0x281fcc){var _0xa9ca6c=moment()['milliseconds'](0x0);var _0x5a3631=moment(_0x281fcc)['milliseconds'](0x0);return _0xa9ca6c[_0x27b0('0x15')](_0x5a3631,_0x27b0('0x16'));}Acw[_0x27b0('0x17')][_0x27b0('0x18')]=function(_0x2f446f){try{var _0xdadebc=this;var _0x1c286f=this[_0x27b0('0x19')][_0x2f446f][_0x27b0('0x1a')];var _0x1bf895=this['channels'][_0x2f446f][_0x27b0('0x1b')];var _0x5c15d4=this[_0x27b0('0x6')][_0x1bf895];var _0xbf4dd5=![];var _0x952dde=_0x27b0('0x1c');if(_0x5c15d4[_0x27b0('0x1d')]){if(_0x5c15d4[_0x27b0('0x1e')][_0x27b0('0x1f')]){_0xbf4dd5=!![];_0x952dde=_0x5c15d4[_0x27b0('0x1e')][_0x27b0('0x1f')];}}ami['Action']({'action':_0x27b0('0x20'),'interface':_0x1c286f,'paused':!![],'reason':_0x952dde})[_0x27b0('0x21')](function(_0x1748d0){if(_0xdadebc[_0x27b0('0x7')][_0x1c286f]){return RpcUser[_0x27b0('0x22')](_0xdadebc['agents'][_0x1c286f]['id'])[_0x27b0('0x21')](function(_0x104a71){if(_0x104a71&&!_0x104a71[_0x27b0('0x23')]){logger[_0x27b0('0x24')](_0x27b0('0x25'),_0x2f446f,_0x1c286f,_0x1bf895);var _0x24f36c=_0xdadebc['channels'][_0x2f446f][_0x27b0('0x26')]&&_0xdadebc[_0x27b0('0x19')][_0x2f446f]['destlinkedid']?_0xdadebc['channels'][_0x2f446f][_0x27b0('0x27')]:_0x2f446f;return RpcUser[_0x27b0('0x28')](_0xdadebc['agents'][_0x1c286f],_0x952dde,_0x24f36c)[_0x27b0('0x21')](function(_0x1439be){if(!_0xbf4dd5){_0xdadebc[_0x27b0('0x8')][_0x1c286f]={};logger[_0x27b0('0x24')](_0x27b0('0x29'),_0x2f446f,_0xdadebc[_0x27b0('0x6')][_0x1bf895][_0x27b0('0x2a')],_0x1c286f,_0x1bf895);_0xdadebc[_0x27b0('0x8')][_0x1c286f][_0x27b0('0x2b')]=setTimeout(_0xdadebc[_0x27b0('0x2c')]['bind'](_0xdadebc,_0x1c286f),_0xdadebc['voiceQueues'][_0x1bf895]['acwTimeout']*0x3e8);_0xdadebc[_0x27b0('0x8')][_0x1c286f][_0x27b0('0x2d')]=moment()[_0x27b0('0x2e')](_0x27b0('0x2f'));_0xdadebc['timers'][_0x1c286f][_0x27b0('0x30')]=_0x2f446f;_0xdadebc[_0x27b0('0x8')][_0x1c286f]['queue']=_0x1bf895;_0xdadebc[_0x27b0('0x8')][_0x1c286f][_0x27b0('0x31')]=function(){var _0x29a68f=getDiff(_0xdadebc[_0x27b0('0x8')][_0x1c286f][_0x27b0('0x2d')]);clearTimeout(_0xdadebc[_0x27b0('0x8')][_0x1c286f][_0x27b0('0x2b')]);_0xdadebc[_0x27b0('0x8')][_0x1c286f][_0x27b0('0x2b')]=![];RpcVoiceAgentReport[_0x27b0('0x32')]({'acwtime':_0x29a68f},_0xdadebc[_0x27b0('0x8')][_0x1c286f]['uniqueid'],_0x1c286f)[_0x27b0('0x21')](function(_0x2a7527){logger[_0x27b0('0x24')](_0x27b0('0x33'),_0x2f446f,_0x29a68f,_0x2a7527);})[_0x27b0('0x34')](function(_0x27bb82){logger['error'](_0x27b0('0x35'),_0x2f446f,_0x27bb82);});delete _0xdadebc['timers'][_0x1c286f];};}});}else{logger[_0x27b0('0x24')](_0x27b0('0x36'),_0x2f446f,_0x1c286f,_0x1bf895);}});}})[_0x27b0('0x34')](function(_0x16fd11){logger[_0x27b0('0x37')](_0x27b0('0x29'),_0x2f446f,_0xdadebc[_0x27b0('0x6')][_0x1bf895][_0x27b0('0x2a')],_0x1c286f,_0x1bf895);})[_0x27b0('0x38')](function(){delete _0xdadebc[_0x27b0('0x19')][_0x2f446f];});}catch(_0x4dfffd){logger[_0x27b0('0x37')](_0x27b0('0x39'),_0x4dfffd['message']);}};Acw[_0x27b0('0x17')][_0x27b0('0x2c')]=function(_0x4c401d){try{var _0x16a74f=this;if(_0x16a74f['timers'][_0x4c401d]){_0x16a74f[_0x27b0('0x8')][_0x4c401d][_0x27b0('0x2b')]=![];var _0x34fc0e=_0x16a74f[_0x27b0('0x8')][_0x4c401d][_0x27b0('0x30')];var _0x5979f5=_0x16a74f['timers'][_0x4c401d][_0x27b0('0x1b')];var _0x108f7b=_0x16a74f[_0x27b0('0x6')][_0x5979f5][_0x27b0('0x2a')];logger['info'](_0x27b0('0x3a'),_0x34fc0e,_0x4c401d);RpcUser[_0x27b0('0x3b')](this[_0x27b0('0x7')][_0x4c401d]);RpcVoiceAgentReport[_0x27b0('0x32')]({'acwtime':_0x108f7b,'agentacw':!![]},_0x34fc0e,_0x4c401d)[_0x27b0('0x21')](function(_0x3fdbed){logger[_0x27b0('0x24')](_0x27b0('0x33'),_0x34fc0e,_0x108f7b,_0x3fdbed);})['catch'](function(_0x43a64d){logger[_0x27b0('0x37')](_0x27b0('0x35'),_0x34fc0e,_0x43a64d);});}else{logger[_0x27b0('0x37')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x4c401d);if(_0x16a74f[_0x27b0('0x8')]){logger['info'](_0x27b0('0x3c'),JSON[_0x27b0('0x3d')](_0x16a74f['timers']));}}}catch(_0x3fa4e2){logger[_0x27b0('0x37')]('[ACW][STOP]\x20%s',_0x3fa4e2[_0x27b0('0x3e')]);}};Acw[_0x27b0('0x17')][_0x27b0('0x3f')]=function(_0x1513de){try{if(this[_0x27b0('0x6')][_0x1513de['queue']]&&(this[_0x27b0('0x6')][_0x1513de['queue']][_0x27b0('0x3')]||this['voiceQueues'][_0x1513de['queue']][_0x27b0('0x1d')])){if(this[_0x27b0('0x7')][_0x1513de[_0x27b0('0x1a')]]){this[_0x27b0('0x19')][_0x1513de['uniqueid']]={'queue':_0x1513de[_0x27b0('0x1b')],'interface':_0x1513de[_0x27b0('0x1a')],'destlinkedid':_0x1513de[_0x27b0('0x27')]};}}}catch(_0x16ed45){logger[_0x27b0('0x37')](_0x27b0('0x40'),_0x16ed45['message']);}};Acw[_0x27b0('0x17')][_0x27b0('0x14')]=function(_0x4b7628){try{if(this['voiceQueues'][_0x4b7628['queue']]&&(this[_0x27b0('0x6')][_0x4b7628[_0x27b0('0x1b')]][_0x27b0('0x3')]||this[_0x27b0('0x6')][_0x4b7628[_0x27b0('0x1b')]][_0x27b0('0x1d')])){if(this[_0x27b0('0x7')][_0x4b7628[_0x27b0('0x1a')]]){this[_0x27b0('0x19')][_0x4b7628[_0x27b0('0x30')]]={'queue':_0x4b7628[_0x27b0('0x1b')],'interface':_0x4b7628['interface']};}}}catch(_0x36bf69){logger[_0x27b0('0x37')](_0x27b0('0x41'),_0x36bf69[_0x27b0('0x3e')]);}};Acw['prototype'][_0x27b0('0xc')]=function(_0x2908bc){try{if(this[_0x27b0('0x19')][_0x2908bc[_0x27b0('0x30')]]&&_[_0x27b0('0x42')](this[_0x27b0('0x19')][_0x2908bc['uniqueid']][_0x27b0('0x26')])){logger['info'](_0x27b0('0x43'),_0x2908bc[_0x27b0('0x30')]);this[_0x27b0('0x18')](_0x2908bc[_0x27b0('0x30')]);}else if(this[_0x27b0('0x19')][_0x2908bc[_0x27b0('0x44')]]&&_['isUndefined'](this['channels'][_0x2908bc['linkedid']][_0x27b0('0x26')])){logger['info']('[%s][HANGUP:LINKEDID]',_0x2908bc[_0x27b0('0x44')]);this[_0x27b0('0x18')](_0x2908bc[_0x27b0('0x44')]);}}catch(_0x49fb73){logger[_0x27b0('0x37')](_0x27b0('0x45'),_0x49fb73[_0x27b0('0x3e')]);}};Acw[_0x27b0('0x17')][_0x27b0('0xe')]=function(_0x6769e6){try{if(this['channels'][_0x6769e6[_0x27b0('0x30')]]&&this[_0x27b0('0x19')][_0x6769e6[_0x27b0('0x30')]][_0x27b0('0x26')]){logger[_0x27b0('0x24')](_0x27b0('0x46'),_0x6769e6[_0x27b0('0x30')]);this['startAcw'](_0x6769e6[_0x27b0('0x30')]);}else if(this[_0x27b0('0x19')][_0x6769e6['linkedid']]&&this['channels'][_0x6769e6[_0x27b0('0x44')]]['attended']){logger[_0x27b0('0x24')](_0x27b0('0x47'),_0x6769e6[_0x27b0('0x44')]);this[_0x27b0('0x18')](_0x6769e6[_0x27b0('0x44')]);}}catch(_0x45ec26){logger['error'](_0x27b0('0x48'),_0x45ec26['message']);}};Acw[_0x27b0('0x17')][_0x27b0('0x11')]=function(_0x1da7e6){try{if(!_[_0x27b0('0x49')](this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4a')]])){this[_0x27b0('0x18')](_0x1da7e6[_0x27b0('0x4a')]);if(this[_0x27b0('0x19')][_0x1da7e6['secondtransfereruniqueid']]){this[_0x27b0('0x19')][_0x1da7e6['secondtransfereruniqueid']][_0x27b0('0x26')]=!![];this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4b')]]=this[_0x27b0('0x19')][_0x1da7e6['secondtransfereruniqueid']];delete this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4c')]];}}else if(!_['isNil'](this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4b')]])){this['startAcw'](_0x1da7e6[_0x27b0('0x4b')]);if(this[_0x27b0('0x19')][_0x1da7e6['origtransfereruniqueid']]){this['channels'][_0x1da7e6['origtransfereruniqueid']][_0x27b0('0x26')]=!![];this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4a')]]=this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4d')]];delete this[_0x27b0('0x19')][_0x1da7e6[_0x27b0('0x4d')]];}}}catch(_0x3cf67c){logger[_0x27b0('0x37')](_0x27b0('0x4e'),_0x3cf67c['message']);}};Acw[_0x27b0('0x17')][_0x27b0('0x4f')]=function(_0x42c9fe){try{if(this[_0x27b0('0x19')][_0x42c9fe['transfereruniqueid']]){logger[_0x27b0('0x24')](_0x27b0('0x50'),JSON[_0x27b0('0x3d')](_0x42c9fe[_0x27b0('0x51')]));this[_0x27b0('0x18')](_0x42c9fe[_0x27b0('0x51')]);}else if(this[_0x27b0('0x19')][_0x42c9fe[_0x27b0('0x52')]]){logger['info'](_0x27b0('0x53'),JSON['stringify'](_0x42c9fe['transfererlinkedid']));this[_0x27b0('0x18')](_0x42c9fe[_0x27b0('0x52')]);}}catch(_0x1845a8){logger[_0x27b0('0x37')](_0x27b0('0x54'),_0x1845a8[_0x27b0('0x3e')]);}};Acw[_0x27b0('0x17')]['syncAgentRingNoAnswer']=function(_0xdeeb6a){try{if(this[_0x27b0('0x6')][_0xdeeb6a[_0x27b0('0x1b')]]&&this[_0x27b0('0x6')][_0xdeeb6a['queue']][_0x27b0('0x55')]===_0x27b0('0x56')){if(this['agents'][_0xdeeb6a[_0x27b0('0x1a')]]){logger[_0x27b0('0x24')](_0x27b0('0x57'),_0xdeeb6a['uniqueid'],_0xdeeb6a[_0x27b0('0x1a')],_0xdeeb6a['queue']);return RpcUser[_0x27b0('0x28')](this['agents'][_0xdeeb6a[_0x27b0('0x1a')]],_0x27b0('0x58'),_0xdeeb6a[_0x27b0('0x30')]);}}}catch(_0x2817f5){logger[_0x27b0('0x37')](_0x27b0('0x59'),_0x2817f5[_0x27b0('0x3e')]);}};module[_0x27b0('0x5a')]=Acw;
\ No newline at end of file
+var _0x8dd6=['interface','isUndefined','attended','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','isNil','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','stringify','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','util','lodash','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','bind','hanguprequest','syncHangupRequest','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','startAcw','queue','ACW','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','[%s][START][AGENT:%s][QUEUE:%s]','destlinkedid','savePause','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','then','info','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','saveUnpause','[%s][UPDATE][ACWTIME:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','prototype','uniqueid'];(function(_0x3019dc,_0x10fadc){var _0x5550db=function(_0x253a65){while(--_0x253a65){_0x3019dc['push'](_0x3019dc['shift']());}};_0x5550db(++_0x10fadc);}(_0x8dd6,0x1c5));var _0x68dd=function(_0x26fee6,_0xfe4eb2){_0x26fee6=_0x26fee6-0x0;var _0x552a3a=_0x8dd6[_0x26fee6];return _0x552a3a;};'use strict';var util=require(_0x68dd('0x0'));var _=require(_0x68dd('0x1'));var moment=require('moment');var ami=require(_0x68dd('0x2'));var logger=require('../../../config/logger')(_0x68dd('0x3'));var RpcUser=require(_0x68dd('0x4'));var RpcVoiceAgentReport=require(_0x68dd('0x5'));function Acw(_0xe879c8){this[_0x68dd('0x6')]=_0xe879c8[_0x68dd('0x6')];this[_0x68dd('0x7')]=_0xe879c8[_0x68dd('0x7')];this['timers']=_0xe879c8[_0x68dd('0x8')];this[_0x68dd('0x9')]={};ami['on'](_0x68dd('0xa'),this[_0x68dd('0xb')][_0x68dd('0xc')](this));ami['on'](_0x68dd('0xd'),this[_0x68dd('0xe')]['bind'](this));ami['on'](_0x68dd('0xf'),this['syncHangup']['bind'](this));ami['on'](_0x68dd('0x10'),this[_0x68dd('0x11')][_0x68dd('0xc')](this));ami['on'](_0x68dd('0x12'),this['syncAttendedTransfer'][_0x68dd('0xc')](this));ami['on']('blindtransfer',this[_0x68dd('0x13')][_0x68dd('0xc')](this));ami['on'](_0x68dd('0x14'),this[_0x68dd('0x15')]['bind'](this));}function getDiff(_0x5c815e){var _0x273609=moment()['milliseconds'](0x0);var _0x46139d=moment(_0x5c815e)[_0x68dd('0x16')](0x0);return _0x273609[_0x68dd('0x17')](_0x46139d,'seconds');}Acw['prototype'][_0x68dd('0x18')]=function(_0x3be944){try{var _0x414302=this;var _0x509075=this['channels'][_0x3be944]['interface'];var _0x521904=this[_0x68dd('0x9')][_0x3be944][_0x68dd('0x19')];var _0x2e5579=this[_0x68dd('0x6')][_0x521904];var _0x4ad527=![];var _0x117db8=_0x68dd('0x1a');if(_0x2e5579[_0x68dd('0x1b')]){if(_0x2e5579[_0x68dd('0x1c')][_0x68dd('0x1d')]){_0x4ad527=!![];_0x117db8=_0x2e5579[_0x68dd('0x1c')][_0x68dd('0x1d')];}}ami['Action']({'action':'QueuePause','interface':_0x509075,'paused':!![],'reason':_0x117db8})['then'](function(_0x5cc2ad){if(_0x414302[_0x68dd('0x7')][_0x509075]){return RpcUser[_0x68dd('0x1e')](_0x414302[_0x68dd('0x7')][_0x509075]['id'])['then'](function(_0x39233c){if(_0x39233c&&!_0x39233c['voicePause']){logger['info'](_0x68dd('0x1f'),_0x3be944,_0x509075,_0x521904);var _0x149ee6=_0x414302['channels'][_0x3be944]['attended']&&_0x414302[_0x68dd('0x9')][_0x3be944][_0x68dd('0x20')]?_0x414302['channels'][_0x3be944][_0x68dd('0x20')]:_0x3be944;return RpcUser[_0x68dd('0x21')](_0x414302[_0x68dd('0x7')][_0x509075],_0x117db8,_0x149ee6)['then'](function(_0x1ca401){if(!_0x4ad527){_0x414302[_0x68dd('0x8')][_0x509075]={};logger['info']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3be944,_0x414302[_0x68dd('0x6')][_0x521904][_0x68dd('0x22')],_0x509075,_0x521904);_0x414302['timers'][_0x509075][_0x68dd('0x23')]=setTimeout(_0x414302[_0x68dd('0x24')][_0x68dd('0xc')](_0x414302,_0x509075),_0x414302[_0x68dd('0x6')][_0x521904][_0x68dd('0x22')]*0x3e8);_0x414302['timers'][_0x509075][_0x68dd('0x25')]=moment()[_0x68dd('0x26')](_0x68dd('0x27'));_0x414302[_0x68dd('0x8')][_0x509075]['uniqueid']=_0x3be944;_0x414302[_0x68dd('0x8')][_0x509075][_0x68dd('0x19')]=_0x521904;_0x414302['timers'][_0x509075][_0x68dd('0x28')]=function(){var _0x306ff3=getDiff(_0x414302[_0x68dd('0x8')][_0x509075][_0x68dd('0x25')]);clearTimeout(_0x414302[_0x68dd('0x8')][_0x509075][_0x68dd('0x23')]);_0x414302['timers'][_0x509075][_0x68dd('0x23')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x306ff3},_0x414302['timers'][_0x509075]['uniqueid'],_0x509075)[_0x68dd('0x29')](function(_0x167df4){logger[_0x68dd('0x2a')]('[%s][UPDATE][ACWTIME:%s]',_0x3be944,_0x306ff3,_0x167df4);})[_0x68dd('0x2b')](function(_0x4c9643){logger[_0x68dd('0x2c')](_0x68dd('0x2d'),_0x3be944,_0x4c9643);});delete _0x414302[_0x68dd('0x8')][_0x509075];};}});}else{logger['info'](_0x68dd('0x2e'),_0x3be944,_0x509075,_0x521904);}});}})[_0x68dd('0x2b')](function(_0x3f01d7){logger[_0x68dd('0x2c')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3be944,_0x414302[_0x68dd('0x6')][_0x521904][_0x68dd('0x22')],_0x509075,_0x521904);})[_0x68dd('0x2f')](function(){delete _0x414302[_0x68dd('0x9')][_0x3be944];});}catch(_0x5d3d88){logger[_0x68dd('0x2c')](_0x68dd('0x30'),_0x5d3d88['message']);}};Acw['prototype'][_0x68dd('0x24')]=function(_0x2b03c3){try{var _0x3c5031=this;if(_0x3c5031['timers'][_0x2b03c3]){_0x3c5031[_0x68dd('0x8')][_0x2b03c3][_0x68dd('0x23')]=![];var _0x3b75bb=_0x3c5031[_0x68dd('0x8')][_0x2b03c3]['uniqueid'];var _0x48645f=_0x3c5031[_0x68dd('0x8')][_0x2b03c3][_0x68dd('0x19')];var _0x313692=_0x3c5031[_0x68dd('0x6')][_0x48645f][_0x68dd('0x22')];logger[_0x68dd('0x2a')]('[%s][TIMER][STOP][AGENT:%s]',_0x3b75bb,_0x2b03c3);RpcUser[_0x68dd('0x31')](this[_0x68dd('0x7')][_0x2b03c3]);RpcVoiceAgentReport['update']({'acwtime':_0x313692,'agentacw':!![]},_0x3b75bb,_0x2b03c3)['then'](function(_0x53e913){logger['info'](_0x68dd('0x32'),_0x3b75bb,_0x313692,_0x53e913);})[_0x68dd('0x2b')](function(_0xc709ad){logger['error']('[%s][UPDATE][ERRORS:%s]',_0x3b75bb,_0xc709ad);});}else{logger[_0x68dd('0x2c')](_0x68dd('0x33'),_0x2b03c3);if(_0x3c5031[_0x68dd('0x8')]){logger[_0x68dd('0x2a')](_0x68dd('0x34'),JSON['stringify'](_0x3c5031[_0x68dd('0x8')]));}}}catch(_0x3e919a){logger[_0x68dd('0x2c')](_0x68dd('0x35'),_0x3e919a[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0xb')]=function(_0x52b8bb){try{if(this[_0x68dd('0x6')][_0x52b8bb[_0x68dd('0x19')]]&&(this[_0x68dd('0x6')][_0x52b8bb[_0x68dd('0x19')]][_0x68dd('0x3')]||this['voiceQueues'][_0x52b8bb['queue']][_0x68dd('0x1b')])){if(this[_0x68dd('0x7')][_0x52b8bb['interface']]){this[_0x68dd('0x9')][_0x52b8bb[_0x68dd('0x38')]]={'queue':_0x52b8bb[_0x68dd('0x19')],'interface':_0x52b8bb[_0x68dd('0x39')],'destlinkedid':_0x52b8bb[_0x68dd('0x20')]};}}}catch(_0x3979a7){logger[_0x68dd('0x2c')]('[ACW][syncAgentConnect]\x20%s',_0x3979a7[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0x15')]=function(_0x1d579e){try{if(this['voiceQueues'][_0x1d579e[_0x68dd('0x19')]]&&(this['voiceQueues'][_0x1d579e['queue']][_0x68dd('0x3')]||this[_0x68dd('0x6')][_0x1d579e[_0x68dd('0x19')]]['mandatoryDisposition'])){if(this[_0x68dd('0x7')][_0x1d579e[_0x68dd('0x39')]]){this[_0x68dd('0x9')][_0x1d579e[_0x68dd('0x38')]]={'queue':_0x1d579e[_0x68dd('0x19')],'interface':_0x1d579e[_0x68dd('0x39')]};}}}catch(_0x353a25){logger['error']('[ACW][syncAgentConnectPreview]\x20%s',_0x353a25[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0xe')]=function(_0x1e9109){try{if(this['channels'][_0x1e9109['uniqueid']]&&_[_0x68dd('0x3a')](this[_0x68dd('0x9')][_0x1e9109['uniqueid']]['attended'])){logger[_0x68dd('0x2a')]('[%s][HANGUP:UNIQUEID]',_0x1e9109['uniqueid']);this[_0x68dd('0x18')](_0x1e9109['uniqueid']);}else if(this[_0x68dd('0x9')][_0x1e9109['linkedid']]&&_['isUndefined'](this[_0x68dd('0x9')][_0x1e9109['linkedid']][_0x68dd('0x3b')])){logger[_0x68dd('0x2a')](_0x68dd('0x3c'),_0x1e9109[_0x68dd('0x3d')]);this['startAcw'](_0x1e9109[_0x68dd('0x3d')]);}}catch(_0x529c4b){logger[_0x68dd('0x2c')](_0x68dd('0x3e'),_0x529c4b[_0x68dd('0x36')]);}};Acw['prototype']['syncHangup']=function(_0x496661){try{if(this[_0x68dd('0x9')][_0x496661[_0x68dd('0x38')]]&&this[_0x68dd('0x9')][_0x496661['uniqueid']][_0x68dd('0x3b')]){logger[_0x68dd('0x2a')](_0x68dd('0x3f'),_0x496661[_0x68dd('0x38')]);this[_0x68dd('0x18')](_0x496661[_0x68dd('0x38')]);}else if(this[_0x68dd('0x9')][_0x496661[_0x68dd('0x3d')]]&&this[_0x68dd('0x9')][_0x496661[_0x68dd('0x3d')]][_0x68dd('0x3b')]){logger[_0x68dd('0x2a')](_0x68dd('0x40'),_0x496661[_0x68dd('0x3d')]);this[_0x68dd('0x18')](_0x496661['linkedid']);}}catch(_0x57872c){logger['error'](_0x68dd('0x41'),_0x57872c[_0x68dd('0x36')]);}};Acw['prototype'][_0x68dd('0x42')]=function(_0x42479c){try{if(!_['isNil'](this['channels'][_0x42479c[_0x68dd('0x43')]])){this[_0x68dd('0x18')](_0x42479c[_0x68dd('0x43')]);if(this[_0x68dd('0x9')][_0x42479c['secondtransfereruniqueid']]){this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x44')]]['attended']=!![];this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x45')]]=this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x44')]];delete this['channels'][_0x42479c['secondtransfereruniqueid']];}}else if(!_[_0x68dd('0x46')](this['channels'][_0x42479c[_0x68dd('0x45')]])){this[_0x68dd('0x18')](_0x42479c[_0x68dd('0x45')]);if(this[_0x68dd('0x9')][_0x42479c['origtransfereruniqueid']]){this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x47')]][_0x68dd('0x3b')]=!![];this['channels'][_0x42479c[_0x68dd('0x43')]]=this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x47')]];delete this[_0x68dd('0x9')][_0x42479c[_0x68dd('0x47')]];}}}catch(_0xcd1369){logger[_0x68dd('0x2c')](_0x68dd('0x48'),_0xcd1369['message']);}};Acw[_0x68dd('0x37')][_0x68dd('0x13')]=function(_0xe4f659){try{if(this['channels'][_0xe4f659['transfereruniqueid']]){logger[_0x68dd('0x2a')](_0x68dd('0x49'),JSON[_0x68dd('0x4a')](_0xe4f659[_0x68dd('0x4b')]));this[_0x68dd('0x18')](_0xe4f659[_0x68dd('0x4b')]);}else if(this[_0x68dd('0x9')][_0xe4f659[_0x68dd('0x4c')]]){logger[_0x68dd('0x2a')](_0x68dd('0x4d'),JSON[_0x68dd('0x4a')](_0xe4f659['transfererlinkedid']));this[_0x68dd('0x18')](_0xe4f659['transfererlinkedid']);}}catch(_0xf84418){logger[_0x68dd('0x2c')](_0x68dd('0x4e'),_0xf84418[_0x68dd('0x36')]);}};Acw[_0x68dd('0x37')][_0x68dd('0x11')]=function(_0x2bf3f4){try{if(this[_0x68dd('0x6')][_0x2bf3f4['queue']]&&this[_0x68dd('0x6')][_0x2bf3f4[_0x68dd('0x19')]][_0x68dd('0x4f')]===_0x68dd('0x50')){if(this[_0x68dd('0x7')][_0x2bf3f4['interface']]){logger[_0x68dd('0x2a')](_0x68dd('0x51'),_0x2bf3f4['uniqueid'],_0x2bf3f4[_0x68dd('0x39')],_0x2bf3f4['queue']);return RpcUser[_0x68dd('0x21')](this[_0x68dd('0x7')][_0x2bf3f4[_0x68dd('0x39')]],_0x68dd('0x52'),_0x2bf3f4[_0x68dd('0x38')]);}}}catch(_0x329c81){logger[_0x68dd('0x2c')](_0x68dd('0x53'),_0x329c81[_0x68dd('0x36')]);}};module[_0x68dd('0x54')]=Acw;
\ No newline at end of file
index f194129..6738534 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x442d=['actionSipShowRegistry','Action','sipshowregistry','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','coreshowchannels','info','once','close','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionDeviceStateList','actionCoreShowChannels','exports','asterisk-manager','bluebird','moment','util','lodash','ami','asterisk','port','username','password','keepConnected','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s'];(function(_0x501fd6,_0x8d4e78){var _0x39b7d6=function(_0x15ce6a){while(--_0x15ce6a){_0x501fd6['push'](_0x501fd6['shift']());}};_0x39b7d6(++_0x8d4e78);}(_0x442d,0xf8));var _0xd442=function(_0x710815,_0x520da8){_0x710815=_0x710815-0x0;var _0x5b3b89=_0x442d[_0x710815];return _0x5b3b89;};'use strict';var Manager=require(_0xd442('0x0'));var BPromise=require(_0xd442('0x1'));var moment=require(_0xd442('0x2'));var util=require(_0xd442('0x3'));var _=require(_0xd442('0x4'));var logger=require('../../config/logger')(_0xd442('0x5'));var config=require('../../config/environment');var ami=new Manager(config[_0xd442('0x6')][_0xd442('0x7')],config[_0xd442('0x6')]['ip'],config['asterisk'][_0xd442('0x8')],config['asterisk'][_0xd442('0x9')],!![]);ami[_0xd442('0xa')]();ami['Action']=BPromise[_0xd442('0xb')](ami[_0xd442('0xc')]);function error(_0x437ec3){logger[_0xd442('0xd')](util[_0xd442('0xe')](_0xd442('0xf'),config['asterisk'][_0xd442('0x8')],config[_0xd442('0x6')]['ip'],config['asterisk'][_0xd442('0x7')],util[_0xd442('0x10')](_0x437ec3,![],null)));}function close(){logger[_0xd442('0xd')](util[_0xd442('0xe')](_0xd442('0x11'),config[_0xd442('0x6')][_0xd442('0x8')],config[_0xd442('0x6')]['ip'],config[_0xd442('0x6')]['port']));}ami[_0xd442('0x12')]=function(){return function(){return ami[_0xd442('0x13')]({'action':_0xd442('0x14')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0xd442('0x13')]({'action':_0xd442('0x15')});};};ami[_0xd442('0x16')]=function(){return function(){return ami[_0xd442('0x13')]({'action':_0xd442('0x17')});};};ami[_0xd442('0x18')]=function(){return function(){return ami['Action']({'action':'queuesummary'});};};ami['actionCoreShowChannels']=function(){return function(){return ami[_0xd442('0x13')]({'action':_0xd442('0x19')});};};function connect(_0x41186e){logger[_0xd442('0x1a')](util[_0xd442('0xe')]('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config['asterisk']['username'],config[_0xd442('0x6')]['ip'],config[_0xd442('0x6')][_0xd442('0x7')]));ami[_0xd442('0x1b')]('error',error);ami[_0xd442('0x1b')](_0xd442('0x1c'),close);}ami['on'](_0xd442('0x1d'),connect);ami['on'](_0xd442('0x1e'),function(_0x1c973e){logger['info'](util[_0xd442('0xe')](_0xd442('0x1f'),config[_0xd442('0x6')][_0xd442('0x8')],config[_0xd442('0x6')]['ip'],config[_0xd442('0x6')]['port'],util['inspect'](_0x1c973e,![],null)));});ami['on']('fullybooted',function(_0x254f19){logger['info'](util['format'](_0xd442('0x20'),config[_0xd442('0x6')]['username'],config[_0xd442('0x6')]['ip'],config[_0xd442('0x6')]['port']));return BPromise[_0xd442('0x21')]()[_0xd442('0x22')](ami['actionSipShowRegistry']())['then'](ami[_0xd442('0x23')]())[_0xd442('0x22')](ami[_0xd442('0x16')]())[_0xd442('0x22')](ami[_0xd442('0x18')]())[_0xd442('0x22')](ami[_0xd442('0x24')]())['catch'](function(_0x28c8c4){console['log'](_0x28c8c4);});});ami[_0xd442('0x1b')](_0xd442('0xd'),error);ami['once'](_0xd442('0x1c'),close);module[_0xd442('0x25')]=ami;
\ No newline at end of file
+var _0x6da4=['Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipPeerStatus','catch','log','exports','asterisk-manager','moment','util','lodash','port','asterisk','password','keepConnected','promisify','action','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','Action','devicestatelist','sippeerstatus','actionQueueSummary','actionCoreShowChannels','info'];(function(_0x4a5f6c,_0x4f532e){var _0x281ffd=function(_0x4c68e3){while(--_0x4c68e3){_0x4a5f6c['push'](_0x4a5f6c['shift']());}};_0x281ffd(++_0x4f532e);}(_0x6da4,0xc5));var _0x46da=function(_0x32e4d3,_0x4be410){_0x32e4d3=_0x32e4d3-0x0;var _0x36fcc0=_0x6da4[_0x32e4d3];return _0x36fcc0;};'use strict';var Manager=require(_0x46da('0x0'));var BPromise=require('bluebird');var moment=require(_0x46da('0x1'));var util=require(_0x46da('0x2'));var _=require(_0x46da('0x3'));var logger=require('../../config/logger')('ami');var config=require('../../config/environment');var ami=new Manager(config['asterisk'][_0x46da('0x4')],config['asterisk']['ip'],config[_0x46da('0x5')]['username'],config[_0x46da('0x5')][_0x46da('0x6')],!![]);ami[_0x46da('0x7')]();ami['Action']=BPromise[_0x46da('0x8')](ami[_0x46da('0x9')]);function error(_0x3031d1){logger['error'](util[_0x46da('0xa')](_0x46da('0xb'),config['asterisk'][_0x46da('0xc')],config[_0x46da('0x5')]['ip'],config['asterisk'][_0x46da('0x4')],util[_0x46da('0xd')](_0x3031d1,![],null)));}function close(){logger[_0x46da('0xe')](util['format'](_0x46da('0xf'),config['asterisk'][_0x46da('0xc')],config['asterisk']['ip'],config[_0x46da('0x5')]['port']));}ami[_0x46da('0x10')]=function(){return function(){return ami['Action']({'action':_0x46da('0x11')});};};ami[_0x46da('0x12')]=function(){return function(){return ami[_0x46da('0x13')]({'action':_0x46da('0x14')});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x46da('0x13')]({'action':_0x46da('0x15')});};};ami[_0x46da('0x16')]=function(){return function(){return ami['Action']({'action':'queuesummary'});};};ami[_0x46da('0x17')]=function(){return function(){return ami['Action']({'action':'coreshowchannels'});};};function connect(_0x3f1a83){logger[_0x46da('0x18')](util['format'](_0x46da('0x19'),config[_0x46da('0x5')][_0x46da('0xc')],config['asterisk']['ip'],config['asterisk'][_0x46da('0x4')]));ami[_0x46da('0x1a')](_0x46da('0xe'),error);ami[_0x46da('0x1a')](_0x46da('0x1b'),close);}ami['on'](_0x46da('0x1c'),connect);ami['on'](_0x46da('0x1d'),function(_0x360fcf){logger[_0x46da('0x18')](util[_0x46da('0xa')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x46da('0x5')][_0x46da('0xc')],config[_0x46da('0x5')]['ip'],config['asterisk'][_0x46da('0x4')],util[_0x46da('0xd')](_0x360fcf,![],null)));});ami['on']('fullybooted',function(_0x1f85f8){logger[_0x46da('0x18')](util[_0x46da('0xa')](_0x46da('0x1e'),config[_0x46da('0x5')][_0x46da('0xc')],config[_0x46da('0x5')]['ip'],config['asterisk'][_0x46da('0x4')]));return BPromise[_0x46da('0x1f')]()[_0x46da('0x20')](ami['actionSipShowRegistry']())[_0x46da('0x20')](ami[_0x46da('0x12')]())['then'](ami[_0x46da('0x21')]())['then'](ami[_0x46da('0x16')]())[_0x46da('0x20')](ami[_0x46da('0x17')]())[_0x46da('0x22')](function(_0x64e2dd){console[_0x46da('0x23')](_0x64e2dd);});});ami[_0x46da('0x1a')](_0x46da('0xe'),error);ami[_0x46da('0x1a')](_0x46da('0x1b'),close);module[_0x46da('0x24')]=ami;
\ No newline at end of file
index a5cf99e..ae29e9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['ami','client','http','then','debug','memberReport','error','message','result','catch','rpc','jayson/promise','bluebird','../../config/logger'];(function(_0x416cdc,_0x213b87){var _0x1931ce=function(_0x1dc762){while(--_0x1dc762){_0x416cdc['push'](_0x416cdc['shift']());}};_0x1931ce(++_0x213b87);}(_0xac4a,0x13f));var _0xaac4=function(_0x2dcb04,_0x4ed30c){_0x2dcb04=_0x2dcb04-0x0;var _0x26350f=_0xac4a[_0x2dcb04];return _0x26350f;};'use strict';var jayson=require(_0xaac4('0x0'));var BPromise=require(_0xaac4('0x1'));var logger=require(_0xaac4('0x2'))(_0xaac4('0x3'));var client=jayson[_0xaac4('0x4')][_0xaac4('0x5')]({'port':0x2329});client['Request']=function(_0x58626e,_0x2af0f6){return new BPromise(function(_0x2a5762,_0x32d34c){return client['request'](_0x58626e,_0x2af0f6)[_0xaac4('0x6')](function(_0x53d03a){logger[_0xaac4('0x7')]('rpc',_0xaac4('0x8'),_0x58626e,_0x2af0f6,_0x53d03a);if(_0x53d03a[_0xaac4('0x9')]){logger['error']('rpc',_0xaac4('0x8'),_0x58626e,_0x53d03a['error'][_0xaac4('0xa')],_0x2af0f6);return _0x32d34c(_0x53d03a['error']['message']);}else{return _0x2a5762(_0x53d03a[_0xaac4('0xb')]);}})[_0xaac4('0xc')](function(_0x38d1d0){logger[_0xaac4('0x9')](_0xaac4('0xd'),'memberReport',_0x58626e,_0x38d1d0,_0x2af0f6);return _0x32d34c(_0x38d1d0);});});};module['exports']=client;
\ No newline at end of file
+var _0xf4eb=['rpc','error','message','result','exports','jayson/promise','http','request','then','debug','memberReport'];(function(_0x3e9030,_0x16c384){var _0x526b49=function(_0x3228fe){while(--_0x3228fe){_0x3e9030['push'](_0x3e9030['shift']());}};_0x526b49(++_0x16c384);}(_0xf4eb,0xec));var _0xbf4e=function(_0x6854e6,_0x64c51e){_0x6854e6=_0x6854e6-0x0;var _0xf29a80=_0xf4eb[_0x6854e6];return _0xf29a80;};'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 4e1e649..2dae202 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x886a=['idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','number','exports','util','lodash','moment','isNil','voiceQueue','name','Contact','phone','firstName','lastName','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','VoiceQueueId','CampaignId'];(function(_0x483d8b,_0x526c52){var _0x6500f1=function(_0x372797){while(--_0x372797){_0x483d8b['push'](_0x483d8b['shift']());}};_0x6500f1(++_0x526c52);}(_0x886a,0x169));var _0xa886=function(_0x15ec4e,_0x40b7e0){_0x15ec4e=_0x15ec4e-0x0;var _0xb5e5dd=_0x886a[_0x15ec4e];return _0xb5e5dd;};'use strict';var util=require(_0xa886('0x0'));var _=require(_0xa886('0x1'));var moment=require(_0xa886('0x2'));function checkNameSurname(_0x2b224f,_0x492a7c,_0x4d9f95){var _0x36e51e='';if(!_['isNil'](_0x492a7c)&&'string'===typeof _0x492a7c){_0x36e51e+=_0x492a7c;}if(!_[_0xa886('0x3')](_0x4d9f95)&&'string'===typeof _0x4d9f95){_0x36e51e+='\x20'+_0x4d9f95;}if(_0x36e51e!==''){return _0x36e51e;}return _0x2b224f;}function Action(_0x302e16,_0x14d965,_0x1b7937){this[_0xa886('0x4')]=_0x302e16;this['uniqueid']=_0x1b7937||undefined;this[_0xa886('0x5')]=checkNameSurname(_0x14d965[_0xa886('0x6')][_0xa886('0x7')],_0x14d965[_0xa886('0x6')][_0xa886('0x8')],_0x14d965['Contact'][_0xa886('0x9')]);this['number']=_0x14d965[_0xa886('0x6')][_0xa886('0x7')];this[_0xa886('0xa')]=_0x302e16[_0xa886('0x5')];this[_0xa886('0xb')]=_0x14d965[_0xa886('0xb')]||![];this[_0xa886('0xc')]=_0x302e16['type'];this[_0xa886('0xd')]=_0x302e16[_0xa886('0xd')]||0x3;this[_0xa886('0xe')]=_0x14d965[_0xa886('0xe')];this[_0xa886('0xf')]=_0x14d965[_0xa886('0xf')];this[_0xa886('0x10')]=_0x14d965[_0xa886('0x10')];this['countnoanswerretry']=_0x14d965['countnoanswerretry'];this[_0xa886('0x11')]=_0x14d965[_0xa886('0x11')];this['countdropretry']=_0x14d965[_0xa886('0x12')];this['countabandonedretry']=_0x14d965[_0xa886('0x13')];this[_0xa886('0x14')]=_0x14d965[_0xa886('0x14')];this[_0xa886('0x15')]=_0x14d965['countagentrejectretry'];this[_0xa886('0x16')]=_0x14d965[_0xa886('0x16')];this['ListId']=_0x14d965[_0xa886('0x17')];this['UserId']=_0x14d965['UserId'];this['VoiceQueueId']=_0x14d965[_0xa886('0x18')];this['CampaignId']=_0x14d965[_0xa886('0x19')];this[_0xa886('0x1a')]=_0x14d965['id'];this[_0xa886('0x1b')]=_0x14d965[_0xa886('0x6')][_0xa886('0x8')]||'';this[_0xa886('0x1c')]=moment()[_0xa886('0x1d')](_0xa886('0x1e'));this[_0xa886('0x1f')]=_0x14d965['callback'];this[_0xa886('0x20')]=_0x14d965['callbackuniqueid'];this[_0xa886('0x21')]=_0x14d965[_0xa886('0x21')];this[_0xa886('0x22')]=_0x14d965[_0xa886('0x22')];this[_0xa886('0x23')]='';this[_0xa886('0x24')]='';}Action[_0xa886('0x25')][_0xa886('0x26')]=function(){return util[_0xa886('0x1d')](_0xa886('0x27'),this[_0xa886('0x5')],this[_0xa886('0x4')][_0xa886('0x28')]>0x0?this[_0xa886('0x29')]['substring'](this[_0xa886('0x4')][_0xa886('0x28')]):this['number']);};Action[_0xa886('0x25')]['getQueue']=function(){return this[_0xa886('0xa')];};module[_0xa886('0x2a')]=Action;
\ No newline at end of file
+var _0x9552=['scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','ContactFirstName','starttime','YYYY-MM-DD\x20HH:mm:ss','callback','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util','lodash','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout'];(function(_0x2a4bf7,_0x23bb9f){var _0x3530be=function(_0x519314){while(--_0x519314){_0x2a4bf7['push'](_0x2a4bf7['shift']());}};_0x3530be(++_0x23bb9f);}(_0x9552,0xfe));var _0x2955=function(_0xabd75d,_0x438b31){_0xabd75d=_0xabd75d-0x0;var _0x579083=_0x9552[_0xabd75d];return _0x579083;};'use strict';var util=require(_0x2955('0x0'));var _=require(_0x2955('0x1'));var moment=require('moment');function checkNameSurname(_0x3c9721,_0x235cfe,_0x406991){var _0x1e9ffe='';if(!_[_0x2955('0x2')](_0x235cfe)&&_0x2955('0x3')===typeof _0x235cfe){_0x1e9ffe+=_0x235cfe;}if(!_[_0x2955('0x2')](_0x406991)&&_0x2955('0x3')===typeof _0x406991){_0x1e9ffe+='\x20'+_0x406991;}if(_0x1e9ffe!==''){return _0x1e9ffe;}return _0x3c9721;}function Action(_0xec62f4,_0x11db0d,_0x419a74){this[_0x2955('0x4')]=_0xec62f4;this[_0x2955('0x5')]=_0x419a74||undefined;this[_0x2955('0x6')]=checkNameSurname(_0x11db0d[_0x2955('0x7')][_0x2955('0x8')],_0x11db0d[_0x2955('0x7')][_0x2955('0x9')],_0x11db0d[_0x2955('0x7')][_0x2955('0xa')]);this[_0x2955('0xb')]=_0x11db0d[_0x2955('0x7')][_0x2955('0x8')];this[_0x2955('0xc')]=_0xec62f4[_0x2955('0x6')];this[_0x2955('0xd')]=_0x11db0d[_0x2955('0xd')]||![];this[_0x2955('0xe')]=_0xec62f4[_0x2955('0xe')];this[_0x2955('0xf')]=_0xec62f4[_0x2955('0xf')]||0x3;this[_0x2955('0x10')]=_0x11db0d['scheduledat'];this[_0x2955('0x11')]=_0x11db0d[_0x2955('0x11')];this[_0x2955('0x12')]=_0x11db0d['countcongestionretry'];this[_0x2955('0x13')]=_0x11db0d[_0x2955('0x13')];this[_0x2955('0x14')]=_0x11db0d['countnosuchnumberretry'];this[_0x2955('0x15')]=_0x11db0d['countdropretry'];this[_0x2955('0x16')]=_0x11db0d[_0x2955('0x16')];this[_0x2955('0x17')]=_0x11db0d[_0x2955('0x17')];this[_0x2955('0x18')]=_0x11db0d['countagentrejectretry'];this[_0x2955('0x19')]=_0x11db0d[_0x2955('0x19')];this['ListId']=_0x11db0d[_0x2955('0x1a')];this[_0x2955('0x1b')]=_0x11db0d[_0x2955('0x1b')];this[_0x2955('0x1c')]=_0x11db0d[_0x2955('0x1c')];this[_0x2955('0x1d')]=_0x11db0d['CampaignId'];this['idHopper']=_0x11db0d['id'];this[_0x2955('0x1e')]=_0x11db0d[_0x2955('0x7')][_0x2955('0x9')]||'';this[_0x2955('0x1f')]=moment()['format'](_0x2955('0x20'));this[_0x2955('0x21')]=_0x11db0d[_0x2955('0x21')];this['callbackuniqueid']=_0x11db0d['callbackuniqueid'];this[_0x2955('0x22')]=_0x11db0d[_0x2955('0x22')];this['recallme']=_0x11db0d[_0x2955('0x23')];this[_0x2955('0x24')]='';this[_0x2955('0x25')]='';}Action[_0x2955('0x26')][_0x2955('0x27')]=function(){return util[_0x2955('0x28')](_0x2955('0x29'),this[_0x2955('0x6')],this[_0x2955('0x4')][_0x2955('0x2a')]>0x0?this[_0x2955('0xb')][_0x2955('0x2b')](this['voiceQueue'][_0x2955('0x2a')]):this[_0x2955('0xb')]);};Action[_0x2955('0x26')]['getQueue']=function(){return this[_0x2955('0xc')];};module[_0x2955('0x2c')]=Action;
\ No newline at end of file
index 3eb9c96..4876be6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9f6=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xf9f6,0x118));var _0x6f9f=function(_0x2d344f,_0x25fa84){_0x2d344f=_0x2d344f-0x0;var _0x2e796b=_0xf9f6[_0x2d344f];return _0x2e796b;};'use strict';var util=require(_0x6f9f('0x0'));var _=require(_0x6f9f('0x1'));var moment=require(_0x6f9f('0x2'));function getSeconds(_0x2d5c2f,_0x2a5e5d){var _0x120f05=moment(_0x2d5c2f)[_0x6f9f('0x3')](0x0);var _0x144e5d=moment(_0x2a5e5d)[_0x6f9f('0x3')](0x0);return _0x120f05[_0x6f9f('0x4')](_0x144e5d,_0x6f9f('0x5'));}function AgentComplete(_0x55638d,_0x55cb9f){this[_0x6f9f('0x6')]=0x4;this[_0x6f9f('0x7')]=_0x6f9f('0x8');this[_0x6f9f('0x9')]=_0x55638d['scheduledat'];this[_0x6f9f('0xa')]=_0x55638d['type'];this[_0x6f9f('0xb')]=_0x55638d[_0x6f9f('0xa')]==='outbound'?_0x6f9f('0xc'):_0x55638d[_0x6f9f('0xa')];this[_0x6f9f('0xd')]=_0x55638d[_0x6f9f('0xd')];this[_0x6f9f('0xe')]=_0x55638d[_0x6f9f('0xe')];this[_0x6f9f('0xf')]=_0x55638d['countnoanswerretry'];this[_0x6f9f('0x10')]=_0x55638d[_0x6f9f('0xd')]+_0x55638d['countcongestionretry']+_0x55638d[_0x6f9f('0xf')]+_0x55638d['countnosuchnumberretry']+_0x55638d[_0x6f9f('0x11')]+_0x55638d[_0x6f9f('0x12')]+_0x55638d['countmachineretry']+_0x55638d[_0x6f9f('0x13')];this['countnosuchnumberretry']=_0x55638d['countnosuchnumberretry'];this[_0x6f9f('0x11')]=_0x55638d[_0x6f9f('0x11')];this[_0x6f9f('0x12')]=_0x55638d[_0x6f9f('0x12')];this[_0x6f9f('0x14')]=_0x55638d[_0x6f9f('0x14')];this[_0x6f9f('0x13')]=_0x55638d[_0x6f9f('0x13')];this[_0x6f9f('0x15')]=_0x55cb9f[_0x6f9f('0x15')];this[_0x6f9f('0x16')]=_0x55638d[_0x6f9f('0x17')];this[_0x6f9f('0x18')]=_0x55638d['number'];this[_0x6f9f('0x19')]=_0x55638d[_0x6f9f('0x19')];this[_0x6f9f('0x1a')]=_0x55638d['responsetime'];this[_0x6f9f('0x1b')]=_0x55638d[_0x6f9f('0x1b')];this[_0x6f9f('0x1c')]=moment()[_0x6f9f('0x1d')](_0x6f9f('0x1e'));this[_0x6f9f('0x1f')]=getSeconds(_0x55638d['responsetime'],_0x55638d[_0x6f9f('0x19')]);this['holdtime']=getSeconds(_0x55638d['answertime'],_0x55638d[_0x6f9f('0x1a')]);this[_0x6f9f('0x20')]=getSeconds(this[_0x6f9f('0x1c')],_0x55638d['answertime']);this[_0x6f9f('0xc')]=_0x55cb9f[_0x6f9f('0xc')];this[_0x6f9f('0x21')]=_0x55cb9f[_0x6f9f('0x21')];this[_0x6f9f('0x22')]=_0x55cb9f[_0x6f9f('0x22')];this[_0x6f9f('0x23')]=_0x55638d['callback'];this[_0x6f9f('0x24')]=_0x55638d[_0x6f9f('0x24')];this[_0x6f9f('0x25')]=_0x55638d[_0x6f9f('0x25')];this[_0x6f9f('0x26')]=_0x55638d[_0x6f9f('0x26')];this[_0x6f9f('0x27')]=_0x55638d['ContactId'];this[_0x6f9f('0x28')]=_0x55638d[_0x6f9f('0x28')];this['UserId']=_0x55638d[_0x6f9f('0x29')];this['VoiceQueueId']=_0x55638d[_0x6f9f('0x2a')];this[_0x6f9f('0x2b')]=_0x55638d['CampaignId'];this[_0x6f9f('0x2c')]=_0x55638d[_0x6f9f('0x2c')]||'';this['originatecalleridname']=_0x55638d[_0x6f9f('0x2d')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
+var _0xf372=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countdropretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','answertime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','lodash','moment','diff','seconds','state','scheduledat','type','campaigntype','outbound','queue'];(function(_0x3a9815,_0x47eb16){var _0x188653=function(_0x203e84){while(--_0x203e84){_0x3a9815['push'](_0x3a9815['shift']());}};_0x188653(++_0x47eb16);}(_0xf372,0x165));var _0x2f37=function(_0x2c21b9,_0x1a9c25){_0x2c21b9=_0x2c21b9-0x0;var _0x444377=_0xf372[_0x2c21b9];return _0x444377;};'use strict';var util=require(_0x2f37('0x0'));var _=require(_0x2f37('0x1'));var moment=require(_0x2f37('0x2'));function getSeconds(_0x53d049,_0x5981eb){var _0x2f9ddb=moment(_0x53d049)['milliseconds'](0x0);var _0x24a0cc=moment(_0x5981eb)['milliseconds'](0x0);return _0x2f9ddb[_0x2f37('0x3')](_0x24a0cc,_0x2f37('0x4'));}function AgentComplete(_0x58df61,_0x5bc2f0){this[_0x2f37('0x5')]=0x4;this['statedesc']='Answer';this[_0x2f37('0x6')]=_0x58df61[_0x2f37('0x6')];this[_0x2f37('0x7')]=_0x58df61['type'];this[_0x2f37('0x8')]=_0x58df61[_0x2f37('0x7')]===_0x2f37('0x9')?_0x2f37('0xa'):_0x58df61[_0x2f37('0x7')];this[_0x2f37('0xb')]=_0x58df61['countbusyretry'];this[_0x2f37('0xc')]=_0x58df61[_0x2f37('0xc')];this[_0x2f37('0xd')]=_0x58df61[_0x2f37('0xd')];this[_0x2f37('0xe')]=_0x58df61[_0x2f37('0xb')]+_0x58df61[_0x2f37('0xc')]+_0x58df61[_0x2f37('0xd')]+_0x58df61[_0x2f37('0xf')]+_0x58df61['countdropretry']+_0x58df61[_0x2f37('0x10')]+_0x58df61['countmachineretry']+_0x58df61['countagentrejectretry'];this['countnosuchnumberretry']=_0x58df61[_0x2f37('0xf')];this['countdropretry']=_0x58df61[_0x2f37('0x11')];this['countabandonedretry']=_0x58df61[_0x2f37('0x10')];this[_0x2f37('0x12')]=_0x58df61[_0x2f37('0x12')];this[_0x2f37('0x13')]=_0x58df61[_0x2f37('0x13')];this['uniqueid']=_0x5bc2f0[_0x2f37('0x14')];this[_0x2f37('0x15')]=_0x58df61[_0x2f37('0x16')];this[_0x2f37('0x17')]=_0x58df61[_0x2f37('0x18')];this['starttime']=_0x58df61[_0x2f37('0x19')];this['responsetime']=_0x58df61[_0x2f37('0x1a')];this['answertime']=_0x58df61['answertime'];this[_0x2f37('0x1b')]=moment()[_0x2f37('0x1c')](_0x2f37('0x1d'));this[_0x2f37('0x1e')]=getSeconds(_0x58df61[_0x2f37('0x1a')],_0x58df61[_0x2f37('0x19')]);this[_0x2f37('0x1f')]=getSeconds(_0x58df61[_0x2f37('0x20')],_0x58df61[_0x2f37('0x1a')]);this[_0x2f37('0x21')]=getSeconds(this[_0x2f37('0x1b')],_0x58df61['answertime']);this[_0x2f37('0xa')]=_0x5bc2f0[_0x2f37('0xa')];this[_0x2f37('0x22')]=_0x5bc2f0[_0x2f37('0x22')];this[_0x2f37('0x23')]=_0x5bc2f0[_0x2f37('0x23')];this[_0x2f37('0x24')]=_0x58df61['callback'];this[_0x2f37('0x25')]=_0x58df61[_0x2f37('0x25')];this[_0x2f37('0x26')]=_0x58df61['callbackat'];this[_0x2f37('0x27')]=_0x58df61[_0x2f37('0x27')];this[_0x2f37('0x28')]=_0x58df61[_0x2f37('0x28')];this[_0x2f37('0x29')]=_0x58df61['ListId'];this[_0x2f37('0x2a')]=_0x58df61[_0x2f37('0x2a')];this[_0x2f37('0x2b')]=_0x58df61[_0x2f37('0x2b')];this['CampaignId']=_0x58df61['CampaignId'];this[_0x2f37('0x2c')]=_0x58df61[_0x2f37('0x2c')]||'';this[_0x2f37('0x2d')]=_0x58df61['originatecalleridname']||'';}module['exports']=AgentComplete;
\ No newline at end of file
index 0df429e..d5a8e79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['countagentrejectretry','countabandonedretry','countmachineretry','calleridname','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry'];(function(_0x5d26bd,_0x3f13c7){var _0x69f246=function(_0x3b8539){while(--_0x3b8539){_0x5d26bd['push'](_0x5d26bd['shift']());}};_0x69f246(++_0x3f13c7);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x2a32a3,_0xfaa409){_0x2a32a3=_0x2a32a3-0x0;var _0x4d874c=_0xbfe8[_0x2a32a3];return _0x4d874c;};'use strict';var util=require('util');var _=require(_0x8bfe('0x0'));var moment=require('moment');function getSeconds(_0x1fd32c,_0x39d664){var _0x56fddf=moment(_0x1fd32c)['milliseconds'](0x0);var _0x101fc1=moment(_0x39d664)[_0x8bfe('0x1')](0x0);return _0x56fddf['diff'](_0x101fc1,_0x8bfe('0x2'));}function Final(_0x1deab0){this[_0x8bfe('0x3')]=_0x1deab0['uniqueid'];this[_0x8bfe('0x4')]=_0x1deab0[_0x8bfe('0x4')];this[_0x8bfe('0x5')]=_0x1deab0[_0x8bfe('0x5')];this[_0x8bfe('0x6')]=_0x1deab0[_0x8bfe('0x5')]===_0x8bfe('0x7')?_0x8bfe('0x8'):_0x1deab0[_0x8bfe('0x5')];this[_0x8bfe('0x9')]=_0x1deab0[_0x8bfe('0x9')];this[_0x8bfe('0xa')]=_0x1deab0[_0x8bfe('0xa')];this[_0x8bfe('0xb')]=_0x1deab0[_0x8bfe('0xb')];this['countglobal']=_0x1deab0[_0x8bfe('0x9')]+_0x1deab0['countcongestionretry']+_0x1deab0[_0x8bfe('0xb')]+_0x1deab0[_0x8bfe('0xc')]+_0x1deab0[_0x8bfe('0xd')]+_0x1deab0['countabandonedretry']+_0x1deab0['countmachineretry']+_0x1deab0[_0x8bfe('0xe')];this[_0x8bfe('0xc')]=_0x1deab0[_0x8bfe('0xc')];this[_0x8bfe('0xd')]=_0x1deab0[_0x8bfe('0xd')];this['countabandonedretry']=_0x1deab0[_0x8bfe('0xf')];this[_0x8bfe('0x10')]=_0x1deab0['countmachineretry'];this[_0x8bfe('0xe')]=_0x1deab0[_0x8bfe('0xe')];this[_0x8bfe('0x8')]=_0x1deab0['queue'];this['calleridname']=_0x1deab0[_0x8bfe('0x11')];this['calleridnum']=_0x1deab0['calleridnum'];this[_0x8bfe('0x12')]=_0x1deab0[_0x8bfe('0x12')];this[_0x8bfe('0x13')]=_0x1deab0[_0x8bfe('0x13')];this[_0x8bfe('0x14')]=_0x1deab0[_0x8bfe('0x13')];this[_0x8bfe('0x15')]=_0x1deab0['ringtime']||0x0;this[_0x8bfe('0x16')]=_0x1deab0['holdtime']||0x0;this[_0x8bfe('0x17')]=_0x1deab0[_0x8bfe('0x17')]||0x0;this[_0x8bfe('0x18')]=_0x1deab0['callback'];this['callbackuniqueid']=_0x1deab0[_0x8bfe('0x19')];this['callbackat']=_0x1deab0['callbackat'];this[_0x8bfe('0x1a')]=_0x1deab0['recallme'];this[_0x8bfe('0x1b')]=_0x1deab0['ContactId'];this[_0x8bfe('0x1c')]=_0x1deab0[_0x8bfe('0x1c')];this[_0x8bfe('0x1d')]=_0x1deab0[_0x8bfe('0x1d')];this['VoiceQueueId']=_0x1deab0[_0x8bfe('0x1e')];this[_0x8bfe('0x1f')]=_0x1deab0['CampaignId'];this[_0x8bfe('0x20')]=_0x1deab0[_0x8bfe('0x20')]||'';this[_0x8bfe('0x21')]=_0x1deab0[_0x8bfe('0x21')]||'';}module[_0x8bfe('0x22')]=Final;
\ No newline at end of file
+var _0x06f4=['countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridname','exports','util','lodash','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry'];(function(_0x3cee76,_0x2c6506){var _0x210720=function(_0x4197c5){while(--_0x4197c5){_0x3cee76['push'](_0x3cee76['shift']());}};_0x210720(++_0x2c6506);}(_0x06f4,0x136));var _0x406f=function(_0x116ebe,_0x44c4e5){_0x116ebe=_0x116ebe-0x0;var _0x3e5f62=_0x06f4[_0x116ebe];return _0x3e5f62;};'use strict';var util=require(_0x406f('0x0'));var _=require(_0x406f('0x1'));var moment=require('moment');function getSeconds(_0x203c04,_0x276a15){var _0x58cd7d=moment(_0x203c04)['milliseconds'](0x0);var _0x3a4ff0=moment(_0x276a15)['milliseconds'](0x0);return _0x58cd7d[_0x406f('0x2')](_0x3a4ff0,_0x406f('0x3'));}function Final(_0x3ab3d4){this[_0x406f('0x4')]=_0x3ab3d4['uniqueid'];this[_0x406f('0x5')]=_0x3ab3d4['scheduledat'];this[_0x406f('0x6')]=_0x3ab3d4[_0x406f('0x6')];this[_0x406f('0x7')]=_0x3ab3d4['type']===_0x406f('0x8')?'queue':_0x3ab3d4['type'];this[_0x406f('0x9')]=_0x3ab3d4['countbusyretry'];this[_0x406f('0xa')]=_0x3ab3d4['countcongestionretry'];this[_0x406f('0xb')]=_0x3ab3d4['countnoanswerretry'];this[_0x406f('0xc')]=_0x3ab3d4[_0x406f('0x9')]+_0x3ab3d4['countcongestionretry']+_0x3ab3d4[_0x406f('0xb')]+_0x3ab3d4[_0x406f('0xd')]+_0x3ab3d4[_0x406f('0xe')]+_0x3ab3d4[_0x406f('0xf')]+_0x3ab3d4[_0x406f('0x10')]+_0x3ab3d4[_0x406f('0x11')];this[_0x406f('0xd')]=_0x3ab3d4[_0x406f('0xd')];this[_0x406f('0xe')]=_0x3ab3d4[_0x406f('0xe')];this[_0x406f('0xf')]=_0x3ab3d4['countabandonedretry'];this[_0x406f('0x10')]=_0x3ab3d4[_0x406f('0x10')];this[_0x406f('0x11')]=_0x3ab3d4['countagentrejectretry'];this[_0x406f('0x12')]=_0x3ab3d4[_0x406f('0x12')];this['calleridname']=_0x3ab3d4['calleridname'];this[_0x406f('0x13')]=_0x3ab3d4[_0x406f('0x13')];this['starttime']=_0x3ab3d4[_0x406f('0x14')];this['responsetime']=_0x3ab3d4[_0x406f('0x15')];this[_0x406f('0x16')]=_0x3ab3d4[_0x406f('0x15')];this[_0x406f('0x17')]=_0x3ab3d4['ringtime']||0x0;this['holdtime']=_0x3ab3d4[_0x406f('0x18')]||0x0;this['talktime']=_0x3ab3d4[_0x406f('0x19')]||0x0;this['callback']=_0x3ab3d4[_0x406f('0x1a')];this[_0x406f('0x1b')]=_0x3ab3d4[_0x406f('0x1b')];this['callbackat']=_0x3ab3d4['callbackat'];this['recallme']=_0x3ab3d4[_0x406f('0x1c')];this[_0x406f('0x1d')]=_0x3ab3d4[_0x406f('0x1d')];this['ListId']=_0x3ab3d4[_0x406f('0x1e')];this['UserId']=_0x3ab3d4[_0x406f('0x1f')];this[_0x406f('0x20')]=_0x3ab3d4[_0x406f('0x20')];this[_0x406f('0x21')]=_0x3ab3d4[_0x406f('0x21')];this['originatecalleridnum']=_0x3ab3d4['originatecalleridnum']||'';this[_0x406f('0x22')]=_0x3ab3d4['originatecalleridname']||'';}module[_0x406f('0x23')]=Final;
\ No newline at end of file
index 6b4c18e..bdec101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37b5=['responsetime','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','number','starttime'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x37b5,0x90));var _0x537b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x37b5[_0x14add3];return _0x4a174f;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x537b('0x0'));function getSeconds(_0x447e1e,_0x8c3a84){var _0x17b0bc=moment(_0x447e1e)[_0x537b('0x1')](0x0);var _0x108238=moment(_0x8c3a84)[_0x537b('0x1')](0x0);return _0x17b0bc[_0x537b('0x2')](_0x108238,_0x537b('0x3'));}function Hangup(_0x14cf64,_0x2ccab5){this[_0x537b('0x4')]=0x4;this[_0x537b('0x5')]=_0x537b('0x6');this['scheduledat']=_0x14cf64[_0x537b('0x7')];this[_0x537b('0x8')]=_0x14cf64[_0x537b('0x8')];this[_0x537b('0x9')]=_0x14cf64['type']===_0x537b('0xa')?_0x537b('0xb'):_0x14cf64[_0x537b('0x8')];this[_0x537b('0xc')]=_0x14cf64[_0x537b('0xc')];this['countcongestionretry']=_0x14cf64['countcongestionretry'];this[_0x537b('0xd')]=_0x14cf64[_0x537b('0xd')];this[_0x537b('0xe')]=_0x14cf64[_0x537b('0xc')]+_0x14cf64['countcongestionretry']+_0x14cf64[_0x537b('0xd')]+_0x14cf64[_0x537b('0xf')]+_0x14cf64[_0x537b('0x10')]+_0x14cf64['countabandonedretry']+_0x14cf64['countmachineretry']+_0x14cf64['countagentrejectretry'];this['countnosuchnumberretry']=_0x14cf64[_0x537b('0xf')];this['countdropretry']=_0x14cf64['countdropretry'];this[_0x537b('0x11')]=_0x14cf64[_0x537b('0x11')];this[_0x537b('0x12')]=_0x14cf64[_0x537b('0x12')];this[_0x537b('0x13')]=_0x14cf64['countagentrejectretry'];this[_0x537b('0x14')]=_0x2ccab5[_0x537b('0x14')];this[_0x537b('0x15')]=_0x14cf64['name'];this['calleridnum']=_0x14cf64[_0x537b('0x16')];this[_0x537b('0x17')]=_0x14cf64[_0x537b('0x17')];this[_0x537b('0x18')]=_0x14cf64[_0x537b('0x18')];this['endtime']=moment()['format'](_0x537b('0x19'));this[_0x537b('0x1a')]=getSeconds(_0x14cf64[_0x537b('0x18')],_0x14cf64[_0x537b('0x17')]);this[_0x537b('0x1b')]=0x0;this[_0x537b('0x1c')]=getSeconds(this['endtime'],_0x14cf64[_0x537b('0x18')]);this['queue']=_0x14cf64[_0x537b('0xb')];this[_0x537b('0x1d')]='IVR';this[_0x537b('0x1e')]=_0x2ccab5[_0x537b('0x1f')];this[_0x537b('0x20')]=_0x14cf64[_0x537b('0x20')];this[_0x537b('0x21')]=_0x14cf64[_0x537b('0x21')];this[_0x537b('0x22')]=_0x14cf64['callbackat'];this[_0x537b('0x23')]=_0x14cf64[_0x537b('0x23')];this[_0x537b('0x24')]=_0x14cf64[_0x537b('0x24')];this[_0x537b('0x25')]=_0x14cf64[_0x537b('0x25')];this['UserId']=_0x14cf64[_0x537b('0x26')];this[_0x537b('0x27')]=_0x14cf64[_0x537b('0x27')];this[_0x537b('0x28')]=_0x14cf64['CampaignId'];}module[_0x537b('0x29')]=Hangup;
\ No newline at end of file
+var _0xd658=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','util','milliseconds','diff','seconds','state','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countdropretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridnum','starttime','responsetime','endtime','reason','cause-txt','callback','callbackuniqueid','callbackat','recallme'];(function(_0x57add2,_0x4f2b7d){var _0x4e3670=function(_0x3311b){while(--_0x3311b){_0x57add2['push'](_0x57add2['shift']());}};_0x4e3670(++_0x4f2b7d);}(_0xd658,0x159));var _0x8d65=function(_0xefe6e4,_0x273583){_0xefe6e4=_0xefe6e4-0x0;var _0x106b72=_0xd658[_0xefe6e4];return _0x106b72;};'use strict';var util=require(_0x8d65('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x4127c4,_0x34f016){var _0x4d6920=moment(_0x4127c4)[_0x8d65('0x1')](0x0);var _0x32e530=moment(_0x34f016)[_0x8d65('0x1')](0x0);return _0x4d6920[_0x8d65('0x2')](_0x32e530,_0x8d65('0x3'));}function Hangup(_0x48d0db,_0x1dbe8b){this[_0x8d65('0x4')]=0x4;this['statedesc']=_0x8d65('0x5');this[_0x8d65('0x6')]=_0x48d0db['scheduledat'];this[_0x8d65('0x7')]=_0x48d0db[_0x8d65('0x7')];this[_0x8d65('0x8')]=_0x48d0db['type']==='outbound'?_0x8d65('0x9'):_0x48d0db[_0x8d65('0x7')];this[_0x8d65('0xa')]=_0x48d0db[_0x8d65('0xa')];this[_0x8d65('0xb')]=_0x48d0db[_0x8d65('0xb')];this[_0x8d65('0xc')]=_0x48d0db[_0x8d65('0xc')];this['countglobal']=_0x48d0db[_0x8d65('0xa')]+_0x48d0db[_0x8d65('0xb')]+_0x48d0db[_0x8d65('0xc')]+_0x48d0db['countnosuchnumberretry']+_0x48d0db[_0x8d65('0xd')]+_0x48d0db['countabandonedretry']+_0x48d0db['countmachineretry']+_0x48d0db['countagentrejectretry'];this[_0x8d65('0xe')]=_0x48d0db[_0x8d65('0xe')];this[_0x8d65('0xd')]=_0x48d0db[_0x8d65('0xd')];this[_0x8d65('0xf')]=_0x48d0db[_0x8d65('0xf')];this[_0x8d65('0x10')]=_0x48d0db[_0x8d65('0x10')];this[_0x8d65('0x11')]=_0x48d0db[_0x8d65('0x11')];this['uniqueid']=_0x1dbe8b[_0x8d65('0x12')];this['calleridname']=_0x48d0db['name'];this[_0x8d65('0x13')]=_0x48d0db['number'];this[_0x8d65('0x14')]=_0x48d0db[_0x8d65('0x14')];this['responsetime']=_0x48d0db[_0x8d65('0x15')];this[_0x8d65('0x16')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x48d0db[_0x8d65('0x15')],_0x48d0db[_0x8d65('0x14')]);this['holdtime']=0x0;this['talktime']=getSeconds(this['endtime'],_0x48d0db['responsetime']);this['queue']=_0x48d0db['queue'];this['membername']='IVR';this[_0x8d65('0x17')]=_0x1dbe8b[_0x8d65('0x18')];this[_0x8d65('0x19')]=_0x48d0db['callback'];this[_0x8d65('0x1a')]=_0x48d0db['callbackuniqueid'];this[_0x8d65('0x1b')]=_0x48d0db[_0x8d65('0x1b')];this[_0x8d65('0x1c')]=_0x48d0db[_0x8d65('0x1c')];this[_0x8d65('0x1d')]=_0x48d0db[_0x8d65('0x1d')];this[_0x8d65('0x1e')]=_0x48d0db[_0x8d65('0x1e')];this[_0x8d65('0x1f')]=_0x48d0db['UserId'];this['VoiceQueueId']=_0x48d0db[_0x8d65('0x20')];this[_0x8d65('0x21')]=_0x48d0db[_0x8d65('0x21')];}module['exports']=Hangup;
\ No newline at end of file
index 7ba107e..15cb854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42d9=['responsetime','holdtime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','milliseconds','diff','seconds','uniqueid','type','campaigntype','outbound','queue','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','calleridname','name','calleridnum','number','starttime'];(function(_0x5cc8,_0x1faa02){var _0x450661=function(_0x237b05){while(--_0x237b05){_0x5cc8['push'](_0x5cc8['shift']());}};_0x450661(++_0x1faa02);}(_0x42d9,0x160));var _0x942d=function(_0x5f2668,_0x29630f){_0x5f2668=_0x5f2668-0x0;var _0x42df13=_0x42d9[_0x5f2668];return _0x42df13;};'use strict';var util=require('util');var _=require('lodash');var moment=require('moment');function getSeconds(_0x478981,_0x42b2fb){var _0x42bd9e=moment(_0x478981)['milliseconds'](0x0);var _0x299436=moment(_0x42b2fb)[_0x942d('0x0')](0x0);return _0x42bd9e[_0x942d('0x1')](_0x299436,_0x942d('0x2'));}function History(_0x1d1e4b){this[_0x942d('0x3')]=_0x1d1e4b[_0x942d('0x3')];this['scheduledat']=_0x1d1e4b['scheduledat']||undefined;this[_0x942d('0x4')]=_0x1d1e4b['type'];this[_0x942d('0x5')]=_0x1d1e4b['type']===_0x942d('0x6')?_0x942d('0x7'):_0x1d1e4b[_0x942d('0x4')];this[_0x942d('0x8')]=_0x1d1e4b[_0x942d('0x8')];this['countcongestionretry']=_0x1d1e4b['countcongestionretry'];this[_0x942d('0x9')]=_0x1d1e4b[_0x942d('0x9')];this[_0x942d('0xa')]=_0x1d1e4b['countbusyretry']+_0x1d1e4b[_0x942d('0xb')]+_0x1d1e4b[_0x942d('0x9')]+_0x1d1e4b[_0x942d('0xc')]+_0x1d1e4b[_0x942d('0xd')]+_0x1d1e4b['countabandonedretry']+_0x1d1e4b[_0x942d('0xe')]+_0x1d1e4b['countagentrejectretry'];this[_0x942d('0xc')]=_0x1d1e4b[_0x942d('0xc')];this[_0x942d('0xd')]=_0x1d1e4b['countdropretry'];this[_0x942d('0xf')]=_0x1d1e4b['countabandonedretry'];this[_0x942d('0xe')]=_0x1d1e4b[_0x942d('0xe')];this['countagentrejectretry']=_0x1d1e4b[_0x942d('0x10')];this[_0x942d('0x7')]=_0x1d1e4b[_0x942d('0x7')];this[_0x942d('0x11')]=_0x1d1e4b[_0x942d('0x12')];this[_0x942d('0x13')]=_0x1d1e4b[_0x942d('0x14')];this[_0x942d('0x15')]=_0x1d1e4b[_0x942d('0x15')];this[_0x942d('0x16')]=_0x1d1e4b['responsetime'];this['endtime']=_0x1d1e4b[_0x942d('0x16')];this['ringtime']=getSeconds(_0x1d1e4b[_0x942d('0x16')],_0x1d1e4b['starttime']);this[_0x942d('0x17')]=0x0;this['talktime']=0x0;this[_0x942d('0x18')]=_0x1d1e4b[_0x942d('0x18')];this[_0x942d('0x19')]=_0x1d1e4b[_0x942d('0x19')];this[_0x942d('0x1a')]=_0x1d1e4b[_0x942d('0x1a')];this[_0x942d('0x1b')]=_0x1d1e4b[_0x942d('0x1b')];this[_0x942d('0x1c')]=_0x1d1e4b['ContactId'];this[_0x942d('0x1d')]=_0x1d1e4b['ListId'];this[_0x942d('0x1e')]=_0x1d1e4b['UserId'];this[_0x942d('0x1f')]=_0x1d1e4b[_0x942d('0x1f')];this['CampaignId']=_0x1d1e4b['CampaignId'];this[_0x942d('0x20')]=_0x1d1e4b['originatecalleridnum']||'';this[_0x942d('0x21')]=_0x1d1e4b[_0x942d('0x21')]||'';}module['exports']=History;
\ No newline at end of file
+var _0xf1a7=['holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','calleridnum','number','starttime','responsetime','endtime','ringtime'];(function(_0x465a0c,_0x19d4d5){var _0x1e202e=function(_0x27bd8a){while(--_0x27bd8a){_0x465a0c['push'](_0x465a0c['shift']());}};_0x1e202e(++_0x19d4d5);}(_0xf1a7,0x11f));var _0x7f1a=function(_0x2a2cf8,_0x3573f4){_0x2a2cf8=_0x2a2cf8-0x0;var _0x32d355=_0xf1a7[_0x2a2cf8];return _0x32d355;};'use strict';var util=require('util');var _=require(_0x7f1a('0x0'));var moment=require(_0x7f1a('0x1'));function getSeconds(_0x2346de,_0x186a62){var _0x4bd337=moment(_0x2346de)[_0x7f1a('0x2')](0x0);var _0x265c55=moment(_0x186a62)[_0x7f1a('0x2')](0x0);return _0x4bd337['diff'](_0x265c55,'seconds');}function History(_0x3f804d){this[_0x7f1a('0x3')]=_0x3f804d[_0x7f1a('0x3')];this[_0x7f1a('0x4')]=_0x3f804d[_0x7f1a('0x4')]||undefined;this[_0x7f1a('0x5')]=_0x3f804d[_0x7f1a('0x5')];this[_0x7f1a('0x6')]=_0x3f804d[_0x7f1a('0x5')]==='outbound'?_0x7f1a('0x7'):_0x3f804d[_0x7f1a('0x5')];this[_0x7f1a('0x8')]=_0x3f804d[_0x7f1a('0x8')];this[_0x7f1a('0x9')]=_0x3f804d['countcongestionretry'];this[_0x7f1a('0xa')]=_0x3f804d[_0x7f1a('0xa')];this[_0x7f1a('0xb')]=_0x3f804d[_0x7f1a('0x8')]+_0x3f804d[_0x7f1a('0x9')]+_0x3f804d[_0x7f1a('0xa')]+_0x3f804d[_0x7f1a('0xc')]+_0x3f804d['countdropretry']+_0x3f804d[_0x7f1a('0xd')]+_0x3f804d[_0x7f1a('0xe')]+_0x3f804d[_0x7f1a('0xf')];this['countnosuchnumberretry']=_0x3f804d[_0x7f1a('0xc')];this[_0x7f1a('0x10')]=_0x3f804d['countdropretry'];this[_0x7f1a('0xd')]=_0x3f804d['countabandonedretry'];this[_0x7f1a('0xe')]=_0x3f804d['countmachineretry'];this['countagentrejectretry']=_0x3f804d[_0x7f1a('0xf')];this[_0x7f1a('0x7')]=_0x3f804d[_0x7f1a('0x7')];this[_0x7f1a('0x11')]=_0x3f804d[_0x7f1a('0x12')];this[_0x7f1a('0x13')]=_0x3f804d[_0x7f1a('0x14')];this[_0x7f1a('0x15')]=_0x3f804d[_0x7f1a('0x15')];this[_0x7f1a('0x16')]=_0x3f804d[_0x7f1a('0x16')];this[_0x7f1a('0x17')]=_0x3f804d['responsetime'];this[_0x7f1a('0x18')]=getSeconds(_0x3f804d['responsetime'],_0x3f804d[_0x7f1a('0x15')]);this[_0x7f1a('0x19')]=0x0;this[_0x7f1a('0x1a')]=0x0;this['callback']=_0x3f804d[_0x7f1a('0x1b')];this[_0x7f1a('0x1c')]=_0x3f804d[_0x7f1a('0x1c')];this[_0x7f1a('0x1d')]=_0x3f804d[_0x7f1a('0x1d')];this[_0x7f1a('0x1e')]=_0x3f804d[_0x7f1a('0x1e')];this[_0x7f1a('0x1f')]=_0x3f804d[_0x7f1a('0x1f')];this[_0x7f1a('0x20')]=_0x3f804d[_0x7f1a('0x20')];this[_0x7f1a('0x21')]=_0x3f804d[_0x7f1a('0x21')];this[_0x7f1a('0x22')]=_0x3f804d[_0x7f1a('0x22')];this[_0x7f1a('0x23')]=_0x3f804d['CampaignId'];this[_0x7f1a('0x24')]=_0x3f804d['originatecalleridnum']||'';this[_0x7f1a('0x25')]=_0x3f804d['originatecalleridname']||'';}module[_0x7f1a('0x26')]=History;
\ No newline at end of file
index ef55fe3..89f8b75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7dc2=['---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','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','clearing\x20variable\x20start\x20progressive','handlePredictive','clearing\x20variable\x20handle\x20predictive','outbound','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','stack','undefined','originated','[decremetOriginate]\x20object\x20originated\x20is\x20negative','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','pTalking','sendMessageOneNotActive','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','state','statedesc','endtime','loopClearZombieChannels','uniqueId','[uniqueid]','clearZombieChannels','[actions]','Action','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','countReScheduled','resolve','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','then','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','notFound','saveInDb','merge','pick','ListId','VoiceQueueId','CampaignId','[emptyContact]','Success','isTrunkReachable','SIP/%s','status','reachable','uniqueid','isNil','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','HangupInAMD','membername','AMD','custom:amd','buildObj','[syncHangupInAMD][createHistory]','MACHINE','Machine','countmachineretry','countglobal','amd','[syncAgentComplete][createHistory][0]','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countbusyretry','countcongestionretry','countnoanswerretry','syncHangup','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','dialQueueProject','cause-txt','agiafterat','dialQueueProject2','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','dialDropMaxRetry','queueCallerAbandonCreateState','[rescheduleContact][Drop]','starttime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','syncNewExten','channel','actionid','strategy','locked','paused','stateinterface','queueBooked','push','idHopper','[unlockQueueStatus][undefined]','queueStatusComplete','[booked][unlockQueueStatus]','run','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','length','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','checkIsTrunkReachable','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','checkIfTimeIntervals','INTERVAL_IS_EMPTY','Failure','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','interval','content','true','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','dialMethod','progressive','handlePower','power','dialPowerLevel','predictive','booked','Queue','method\x20not\x20recognized','handleIvr','dialGlobalInterval','dialTimezone','syncCampaigns','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','random','actionOriginate','voiceQueue\x20is\x20undefine','phone','Contact','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialAgiAfterHangupAgent','ACTIVE','XMD-AMDGREETING','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','XMD-','toUpper','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','originatecalleridnum','SIP/%s/%s%s','trim','dialCutDigit','substring','from-sip','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','isSuccess','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','object','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','reason','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberMaxRetry','createStateFinal','reason\x200\x20no\x20such\x20number....','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','reason\x2011\x20abandoned','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dropRate','dialPredictiveOptimization','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','Agent','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','outboundBlacklistCallsDay','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','emptyContact','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[countReScheduled]\x20','[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','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','p\x20=\x20','Amax\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','[busyFactor]','Umin\x20=\x20','bluebird','uuid','moment','md5','../preview/util/util','../../../config/environment/','dialer','../../../config/logger','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','../rpc/cmHopper','../rpc/cmHopperHistory','./action','./history','./final','./agentComplete','./hangup','XCALLY_IP_AGI','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startPredictive','ivrOriginated','agentconnect','bind','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','newexten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','isUndefined','message','AGENTS_NOT_LOGGED','name','NOT_ACTIVE','\x20NOT\x20Active','INTERVAL_IS_NULL','Interval','Intervals','isEmpty','Error','stringify','diff','seconds','emit','type','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startProgressive','Trunk','active','callerid','voice_queue:save','ivr','format','campaign:ivr:%s','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','predictiveIntervalDroppedCallsCallersExit','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x7dc2,0x19d));var _0x27dc=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7dc2[_0x20a584];return _0x4b41a8;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0x27dc('0x0'));var uuid=require(_0x27dc('0x1'));var moment=require(_0x27dc('0x2'));var rr=require('rr');var md5=require(_0x27dc('0x3'));var Redis=require('ioredis');var ut=require(_0x27dc('0x4'));var config=require(_0x27dc('0x5'));var logger=require('../../../config/logger')(_0x27dc('0x6'));var loggerBooked=require(_0x27dc('0x7'))('booked');var loggerPredictive=require(_0x27dc('0x7'))('predictive');var loggerPredictiveCalls=require(_0x27dc('0x7'))(_0x27dc('0x8'));var loggerSyncQueueSummary=require('../../../config/logger')(_0x27dc('0x9'));var ami=require(_0x27dc('0xa'));config[_0x27dc('0xb')]=_[_0x27dc('0xc')](config['redis'],{'host':_0x27dc('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x27dc('0xb')]));var cmHopper=require(_0x27dc('0xe'));var cmHopperHistory=require(_0x27dc('0xf'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require('../rpc/voiceQueueRt');var Action=require(_0x27dc('0x10'));var History=require(_0x27dc('0x11'));var Final=require(_0x27dc('0x12'));var AgentComplete=require(_0x27dc('0x13'));var QueueCallerAbandon=require('./queueCallerAbandon');var Hangup=require(_0x27dc('0x14'));var ipAgi=process['env'][_0x27dc('0x15')]||'127.0.0.1';var strategy={'rrmemory':_0x27dc('0x16'),'roundrobin':_0x27dc('0x17')};var Sequence=function(){};Sequence[_0x27dc('0x18')][_0x27dc('0x19')]=function(_0x5c4d00){this[_0x27dc('0x1a')]=this[_0x27dc('0x1a')]?this[_0x27dc('0x1a')][_0x27dc('0x1b')](_0x5c4d00):_0x5c4d00();};function Dialer(_0x3afdfd,_0x5d0c9d){this[_0x27dc('0x1c')]=new Sequence();this[_0x27dc('0x1d')]=_0x5d0c9d;this[_0x27dc('0x1e')]=_0x3afdfd[_0x27dc('0x1e')];this['campaigns']=_0x3afdfd[_0x27dc('0x1f')];this[_0x27dc('0x20')]=_0x3afdfd[_0x27dc('0x20')];this[_0x27dc('0x21')]=_0x3afdfd[_0x27dc('0x21')];this[_0x27dc('0x22')]=config[_0x27dc('0x22')]||0x2;this[_0x27dc('0x23')]={};this[_0x27dc('0x24')]={};this[_0x27dc('0x25')]={};this['uniqueId']={};this[_0x27dc('0x26')]={};this[_0x27dc('0x27')]={};this['startProgressive']={};this[_0x27dc('0x28')]={};this['queueBooked']={};this['queueBookedRR']={};ami['on'](_0x27dc('0x29'),this['syncAgentConnect'][_0x27dc('0x2a')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x27dc('0x2a')](this));ami['on']('originateresponse',this[_0x27dc('0x2b')]['bind'](this));ami['on'](_0x27dc('0x2c'),this[_0x27dc('0x2d')][_0x27dc('0x2a')](this));ami['on'](_0x27dc('0x2e'),this['syncQueueSummary'][_0x27dc('0x2a')](this));ami['on']('hangup',this['syncHangup'][_0x27dc('0x2a')](this));ami['on'](_0x27dc('0x2f'),this['syncNewExten'][_0x27dc('0x2a')](this));ami['on'](_0x27dc('0x30'),this[_0x27dc('0x31')][_0x27dc('0x2a')](this));ami['on'](_0x27dc('0x32'),this[_0x27dc('0x33')][_0x27dc('0x2a')](this));ami['on'](_0x27dc('0x34'),this[_0x27dc('0x35')][_0x27dc('0x2a')](this));this[_0x27dc('0x36')]();this['loopClearZombieChannels']();}function isNotNull(_0xdaf7cb){return _0xdaf7cb!==null&&!_[_0x27dc('0x37')](_0xdaf7cb);}function checkIsLoggedIn(_0x4a2fe6,_0x14a8a1){return function(){if(_0x14a8a1<=0x0){_0x4a2fe6[_0x27dc('0x38')]=_0x27dc('0x39');throw _0x4a2fe6[_0x27dc('0x3a')]+'\x20AGENTS\x20NOT\x20LOGGED';}};}function isActive(_0x3edb8c){return _0x3edb8c;}function checkIsActive(_0x291ec8,_0x392112){return function(){if(!isActive(_0x392112)){_0x291ec8['message']=_0x27dc('0x3b');throw _0x291ec8[_0x27dc('0x3a')]+_0x27dc('0x3c');}};}function checkInterval(_0x331074){return function(){if(!isNotNull(_0x331074['Interval'])){_0x331074[_0x27dc('0x38')]=_0x27dc('0x3d');throw _0x331074[_0x27dc('0x3a')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x331074[_0x27dc('0x3e')][_0x27dc('0x3f')])){_0x331074[_0x27dc('0x38')]=_0x27dc('0x3d');throw _0x331074[_0x27dc('0x3a')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x27dc('0x40')](_0x331074[_0x27dc('0x3e')][_0x27dc('0x3f')]))){_0x331074[_0x27dc('0x38')]=_0x27dc('0x3d');throw _0x331074['name']+'\x20INTERVAL_IS_NULL';}};}function msgResponse(_0x2d6e00,_0x35fbda,_0x2f0228){return{'action':_0x2d6e00,'response':_0x35fbda,'message':_0x2f0228,'stack':_0x2f0228};}function myreject(_0x11d738){return function(_0x52973a){return _0x11d738(msgResponse('[ifTime][Action]',_0x27dc('0x41'),JSON[_0x27dc('0x42')](_0x52973a)));};}function getSeconds(_0x9b49b5,_0x55ac93){var _0x1059d1=moment(_0x9b49b5)['milliseconds'](0x0);var _0x40a204=moment(_0x55ac93)['milliseconds'](0x0);return _0x1059d1[_0x27dc('0x43')](_0x40a204,_0x27dc('0x44'));}function emit(_0xa84c4f,_0x467094,_0x3d9865){io['to'](_0xa84c4f)[_0x27dc('0x45')](_0x467094,_0x3d9865);}function emitVoiceQueueSummary(_0x1f72fc){if(_0x1f72fc[_0x27dc('0x46')]==='outbound'){var _0x3f017b={'id':_0x1f72fc['id'],'name':_0x1f72fc[_0x27dc('0x3a')],'strategy':_0x1f72fc['strategy'],'answered':_0x1f72fc[_0x27dc('0x47')],'available':_0x1f72fc[_0x27dc('0x48')],'loggedIn':_0x1f72fc[_0x27dc('0x49')],'pTalking':_0x1f72fc['pTalking'],'sumBillable':_0x1f72fc[_0x27dc('0x4a')],'sumDuration':_0x1f72fc[_0x27dc('0x4b')],'sumHoldTime':_0x1f72fc[_0x27dc('0x4c')]||0x0,'talking':_0x1f72fc[_0x27dc('0x4d')],'total':_0x1f72fc['total'],'type':_0x1f72fc[_0x27dc('0x46')],'unmanaged':_0x1f72fc[_0x27dc('0x4e')],'abandoned':_0x1f72fc[_0x27dc('0x4f')],'waiting':_0x1f72fc[_0x27dc('0x50')],'loggedInDb':_0x1f72fc[_0x27dc('0x51')],'dialActive':_0x1f72fc[_0x27dc('0x52')],'dialMethod':_0x1f72fc['dialMethod'],'dialOriginateCallerIdName':_0x1f72fc['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1f72fc['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x1f72fc[_0x27dc('0x53')],'dialPrefix':_0x1f72fc[_0x27dc('0x54')],'outboundAnswerAgiCallsDay':_0x1f72fc[_0x27dc('0x55')],'outboundAnswerCallsDay':_0x1f72fc[_0x27dc('0x56')],'outboundBlacklistCallsDay':_0x1f72fc['outboundBlacklistCallsDay'],'outboundBusyCallsDay':_0x1f72fc['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1f72fc[_0x27dc('0x57')],'outboundDropCallsDayACS':_0x1f72fc['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1f72fc[_0x27dc('0x58')],'outboundDropCallsDayTimeout':_0x1f72fc[_0x27dc('0x59')],'outboundNoAnswerCallsDay':_0x1f72fc[_0x27dc('0x5a')],'outboundNoSuchCallsDay':_0x1f72fc['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x1f72fc[_0x27dc('0x5b')],'outboundReCallsDay':_0x1f72fc[_0x27dc('0x5c')],'outboundRejectCallsDay':_0x1f72fc[_0x27dc('0x5d')],'outboundUnknownCallsDay':_0x1f72fc[_0x27dc('0x5e')],'predictiveIntervalAnsweredCalls':_0x1f72fc['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x1f72fc[_0x27dc('0x5f')],'predictiveIntervalAvgTalktime':_0x1f72fc[_0x27dc('0x60')],'predictiveIntervalDroppedCallsCallersExit':_0x1f72fc['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1f72fc[_0x27dc('0x61')],'predictiveIntervalErlangCalls':_0x1f72fc[_0x27dc('0x62')],'predictiveIntervalErlangCallsDroppedCalls':_0x1f72fc[_0x27dc('0x63')],'predictiveIntervalHitRate':_0x1f72fc[_0x27dc('0x64')],'predictiveIntervalMultiplicativeFactor':_0x1f72fc[_0x27dc('0x65')],'predictiveIntervalPauses':_0x1f72fc[_0x27dc('0x66')],'predictiveIntervalAvailable':_0x1f72fc[_0x27dc('0x67')],'predictiveIntervalTotalCalls':_0x1f72fc[_0x27dc('0x68')],'message':_0x1f72fc[_0x27dc('0x38')],'originated':_0x1f72fc['originated'],'erlangCalls':_0x1f72fc[_0x27dc('0x69')],'erlangCallToSecond':_0x1f72fc['erlangCallToSecond'],'erlangAbandonmentRate':_0x1f72fc[_0x27dc('0x6a')],'erlangBusyFactor':_0x1f72fc[_0x27dc('0x6b')],'startPredictive':_0x1f72fc[_0x27dc('0x27')],'startProgressive':_0x1f72fc[_0x27dc('0x6c')]};if(_0x1f72fc[_0x27dc('0x6d')]){_0x3f017b['Trunk']={'id':_0x1f72fc[_0x27dc('0x6d')]['id'],'name':_0x1f72fc[_0x27dc('0x6d')][_0x27dc('0x3a')],'active':_0x1f72fc[_0x27dc('0x6d')][_0x27dc('0x6e')],'callerid':_0x1f72fc[_0x27dc('0x6d')][_0x27dc('0x6f')]};}if(_0x1f72fc[_0x27dc('0x3e')]){_0x3f017b[_0x27dc('0x3e')]={'id':_0x1f72fc['Interval']['id'],'name':_0x1f72fc['Interval'][_0x27dc('0x3a')]};}var _0x37517d=md5(JSON['stringify'](_0x3f017b));if(_0x1f72fc[_0x27dc('0x3')]!==_0x37517d){_0x1f72fc[_0x27dc('0x3')]=_0x37517d;emit(util['format']('voice:queue:%s',_0x3f017b['name']),_0x27dc('0x70'),_0x3f017b);}}}function emitCampaignSummary(_0x5872fc){if(_0x5872fc['type']===_0x27dc('0x71')){emit(util[_0x27dc('0x72')](_0x27dc('0x73'),_0x5872fc['name']),_0x27dc('0x74'),_0x5872fc);}}function checkGetDataPredictive(_0x15f2fb){if(isNotNull(_0x15f2fb)&&!_['isEmpty'](_0x15f2fb)){loggerPredictive[_0x27dc('0x75')](_0x27dc('0x76'));loggerPredictive['info'](_0x27dc('0x77'),_0x15f2fb[_0x27dc('0x68')]);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x78'),_0x15f2fb[_0x27dc('0x79')]);loggerPredictive[_0x27dc('0x75')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x15f2fb[_0x27dc('0x61')]);loggerPredictive[_0x27dc('0x75')]('Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x15f2fb[_0x27dc('0x7a')]);loggerPredictive[_0x27dc('0x75')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x15f2fb[_0x27dc('0x5f')]);loggerPredictive['info'](_0x27dc('0x7b'),_0x15f2fb[_0x27dc('0x60')]);loggerPredictive['info'](_0x27dc('0x7c'));if(_0x15f2fb[_0x27dc('0x68')]>0x0){if(!_[_0x27dc('0x37')](_0x15f2fb[_0x27dc('0x60')])&&_0x15f2fb['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive['info'](_0x27dc('0x7d'));if(!_[_0x27dc('0x37')](_0x15f2fb['predictiveIntervalAvgHoldtime'])&&_0x15f2fb[_0x27dc('0x5f')]>0x0){return!![];}loggerPredictive['info'](_0x27dc('0x7e'));}else{loggerPredictive[_0x27dc('0x75')]('Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive');}}else{loggerPredictive[_0x27dc('0x75')](_0x27dc('0x7f'));}return![];}function mergeDataErlangB(_0x2af980){return function(_0x3428db){loggerPredictive['info'](_0x27dc('0x80'));loggerPredictive[_0x27dc('0x75')](_0x27dc('0x81'),_0x3428db[_0x27dc('0x69')]);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x82'),_0x3428db[_0x27dc('0x83')]);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x84'),_0x3428db[_0x27dc('0x6a')]);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x85'),_0x3428db[_0x27dc('0x6b')]);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x84'),_0x3428db[_0x27dc('0x6a')]);loggerPredictive['info'](_0x27dc('0x7c'));_['merge'](_0x2af980,_0x3428db);};}function getDiff(_0x1b3506){var _0x193121=moment()['milliseconds'](0x0);var _0x250207=moment(_0x1b3506)['milliseconds'](0x0);return _0x193121['diff'](_0x250207,_0x27dc('0x44'));}function ifInterval(_0x313620,_0x3653e5){if(_[_0x27dc('0x37')](_0x3653e5)){return![];}return getDiff(_0x3653e5)<_0x313620*0x3c;}function freeVariablesPredictive(_0x1ecae8){if(isNotNull(_0x1ecae8)){if(!_['isUndefined'](_0x1ecae8[_0x27dc('0x6c')])){_0x1ecae8[_0x27dc('0x6c')]=undefined;loggerPredictive[_0x27dc('0x75')](_0x1ecae8[_0x27dc('0x3a')],_0x27dc('0x86'));}if(!_[_0x27dc('0x37')](_0x1ecae8[_0x27dc('0x27')])){_0x1ecae8['startPredictive']=undefined;loggerPredictive[_0x27dc('0x75')](_0x1ecae8[_0x27dc('0x3a')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x27dc('0x37')](_0x1ecae8[_0x27dc('0x87')])){clearInterval(_0x1ecae8[_0x27dc('0x87')]);_0x1ecae8[_0x27dc('0x87')]=undefined;loggerPredictive[_0x27dc('0x75')](_0x1ecae8['name'],_0x27dc('0x88'));}}}function erlangb(_0x913268,_0x43f827){if(_0x43f827===0x0){return 0x0;}var _0x431fbe=0x1;for(var _0x307d4c=0x1;_0x307d4c<=_0x43f827;_0x307d4c+=0x1){_0x431fbe=0x1+_0x431fbe*_0x307d4c/_0x913268;}return 0x1/_0x431fbe;}function isVoiceQueueOutbound(_0x27ece3){return _0x27ece3===_0x27dc('0x89');}function isNotPreview(_0x4b220e){return _0x4b220e!==_0x27dc('0x1d');}function isCampaignIvr(_0x1cf296){return _0x1cf296===_0x27dc('0x71');}function getCallerId(_0x3aea3e,_0xe37871,_0x2face6){if(!_[_0x27dc('0x37')](_0x2face6)&&typeof _0x2face6===_0x27dc('0x8a')&&!_[_0x27dc('0x40')](_0x2face6)){if(!_[_0x27dc('0x37')](_0xe37871)&&typeof _0xe37871===_0x27dc('0x8a')&&!_['isEmpty'](_0xe37871)){return util[_0x27dc('0x72')](_0x27dc('0x8b'),_0xe37871,_0x2face6);}return util[_0x27dc('0x72')]('\x22%s\x22\x20<%s>',_0x2face6,_0x2face6);}if(!_[_0x27dc('0x37')](_0x3aea3e)&&typeof _0x3aea3e===_0x27dc('0x8a')&&!_[_0x27dc('0x40')](_0x3aea3e)){return _0x3aea3e;}return _0x27dc('0x8c');}function loggerCatchQueueSummary(_0x303452,_0x18a0fa){return function(_0x44177b){freeVariablesPredictive(_0x18a0fa);emitVoiceQueueSummary(_0x18a0fa);emitCampaignSummary(_0x18a0fa);loggerSyncQueueSummary[_0x27dc('0x8d')](_0x303452,util[_0x27dc('0x8e')](_0x44177b,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x1d818f,_0x207ab6){return function(_0x290e28){loggerPredictive[_0x27dc('0x8d')](_0x207ab6[_0x27dc('0x3a')],_0x1d818f);loggerPredictive[_0x27dc('0x8d')](_0x290e28[_0x27dc('0x8f')]);freeVariablesPredictive(_0x207ab6);};}function loggerCatch(_0x2220f6){return function(_0x121fc5){logger[_0x27dc('0x8d')](_0x2220f6,util[_0x27dc('0x8e')](_0x121fc5,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x2c241b){return _0x2c241b&&!_[_0x27dc('0x37')](_0x2c241b)&&_0x2c241b['length']>0x0;}function decremetOriginate(_0x4e6cc0){if(!_[_0x27dc('0x37')](_0x4e6cc0)&&_0x4e6cc0!==null){if(typeof _0x4e6cc0['originated']!==_0x27dc('0x90')){if(_0x4e6cc0[_0x27dc('0x91')]>0x0){_0x4e6cc0['originated']-=0x1;}else{logger['error'](_0x27dc('0x92'));}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x211b64,_0x41f0d1,_0x2cfd09){if(_0x41f0d1>_0x2cfd09){for(var _0x2c923e=0x0;_0x2c923e<_0x41f0d1-_0x2cfd09;_0x2c923e+=0x1){decremetOriginate(_0x211b64);}}}function loggerGetContactDialer(_0x5c885b,_0x540b5b,_0x1d1cde){return function(_0x1bc831){checkContactLowerLimitOriginate(_0x540b5b,_0x1d1cde,0x0);logger['error'](_0x5c885b,util['inspect'](_0x1bc831,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x31559c){return function(_0x133b36){if(isNotNull(_0x133b36)&&isNotNull(_0x133b36[0x0])){if(_0x133b36[0x0]['contactsRescheduled']>0x0){_0x31559c[_0x27dc('0x38')]=_0x27dc('0x93');logger['info'](_0x27dc('0x94')+_0x31559c[_0x27dc('0x3a')],_0x133b36[0x0][_0x27dc('0x95')],'contacts');}else{_0x31559c['message']=_0x27dc('0x96');logger['info'](_0x27dc('0x97')+_0x31559c['name']);}}};}function notSendMessagesQueue(_0x4c3344){if(_0x4c3344['sendMessageOneNotActive']){freeVariablesPredictive(_0x4c3344);if(_0x4c3344[_0x27dc('0x91')]===0x0&&_0x4c3344[_0x27dc('0x4d')]===0x0&&_0x4c3344['waiting']===0x0&&(_0x4c3344[_0x27dc('0x98')]||0x0)===0x0){_0x4c3344[_0x27dc('0x99')]=![];_0x4c3344[_0x27dc('0x48')]=0x0;_0x4c3344[_0x27dc('0x38')]=_0x27dc('0x3b');loggerSyncQueueSummary[_0x27dc('0x8d')](_0x27dc('0x9a'),_0x4c3344[_0x27dc('0x3a')],_0x27dc('0x9b'));}else{_0x4c3344['message']=_0x27dc('0x9c');loggerSyncQueueSummary['error'](_0x27dc('0x9a'),_0x4c3344[_0x27dc('0x3a')],_0x27dc('0x9d'));}emitVoiceQueueSummary(_0x4c3344);}}function notSendMessagesCampaign(_0x4e9858){if(_0x4e9858[_0x27dc('0x99')]){if(_0x4e9858['originated']===0x0){_0x4e9858[_0x27dc('0x99')]=![];_0x4e9858[_0x27dc('0x38')]=_0x27dc('0x3b');loggerSyncQueueSummary['error'](_0x27dc('0x9e'),_0x4e9858[_0x27dc('0x3a')],'is\x20not\x20active');}else{_0x4e9858[_0x27dc('0x38')]=_0x27dc('0x9c');loggerSyncQueueSummary[_0x27dc('0x8d')](_0x27dc('0x9e'),_0x4e9858[_0x27dc('0x3a')],'is\x20disactive');}emitCampaignSummary(_0x4e9858);}}function createObjHistory(_0x30a9b3,_0x5a797b,_0x4d5a91,_0x2afa44,_0x1b03f3){_0x30a9b3[_0x27dc('0x38')]=_0x4d5a91;var _0x1efd7=new Action(_0x30a9b3,_0x5a797b);var _0x4f402d=new History(_0x1efd7);_0x4f402d[_0x27dc('0x9f')]=_0x2afa44;_0x4f402d[_0x27dc('0xa0')]=_0x1b03f3;_0x4f402d[_0x27dc('0xa1')]=_0x1efd7['starttime'];return _0x4f402d;}Dialer[_0x27dc('0x18')][_0x27dc('0xa2')]=function(){var _0xee8f18=this;setInterval(function(){_0xee8f18['clearZombieChannels'](_0xee8f18[_0x27dc('0xa3')],_0x27dc('0xa4'));_0xee8f18[_0x27dc('0xa5')](_0xee8f18[_0x27dc('0x24')],_0x27dc('0xa6'));},0x32c8);};Dialer[_0x27dc('0x18')]['clearZombieChannels']=function(_0x5e11c1,_0x38b7fb){var _0x1480c9=this;for(var _0x5d0d8b in _0x5e11c1){if(typeof _0x5e11c1[_0x5d0d8b]!==_0x27dc('0x90')){this[_0x27dc('0x1c')][_0x27dc('0x19')](function(){if(!_['isNil'](_0x5e11c1[_0x5d0d8b])){return ami[_0x27dc('0xa7')]({'action':'status','channel':_0x5e11c1[_0x5d0d8b]['channel']})[_0x27dc('0xa8')](function(_0x1da4e6){if(_0x1da4e6['message']===_0x27dc('0xa9')){setTimeout(function(){if(_0x5e11c1[_0x5d0d8b]&&_0x5e11c1[_0x5d0d8b]['type']!=='ivr'){_0x1480c9[_0x27dc('0xaa')](_0x1480c9[_0x27dc('0x1e')][_0x5e11c1[_0x5d0d8b][_0x27dc('0xab')]]);logger['error'](_0x27dc('0xac'),_0x38b7fb,_0x5d0d8b,_0x5e11c1[_0x5d0d8b][_0x27dc('0xab')]);delete _0x5e11c1[_0x5d0d8b];}if(_0x5e11c1[_0x5d0d8b]&&_0x5e11c1[_0x5d0d8b][_0x27dc('0x46')]===_0x27dc('0x71')){_0x1480c9['updateOriginated'](_0x1480c9['campaigns'][_0x5e11c1[_0x5d0d8b][_0x27dc('0xab')]]);logger[_0x27dc('0x8d')]('[Dialer][checkChannel][ivr]',_0x38b7fb,_0x5d0d8b,_0x5e11c1[_0x5d0d8b][_0x27dc('0xab')]);delete _0x5e11c1[_0x5d0d8b];}},0x2328);}});}});}}};Dialer['prototype'][_0x27dc('0xad')]=function(_0x40aed8){return BPromise[_0x27dc('0xae')]()['then'](cmHopper[_0x27dc('0xad')](_0x40aed8))['catch'](loggerCatch('[countReScheduled]\x20'));};Dialer[_0x27dc('0x18')][_0x27dc('0xaf')]=function(_0x700cae){return BPromise[_0x27dc('0xae')]()['then'](cmHopperBlack[_0x27dc('0xaf')](_0x700cae))[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xb0')));};Dialer[_0x27dc('0x18')][_0x27dc('0xb1')]=function(_0x2631c0){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopperBlack[_0x27dc('0xb1')](_0x2631c0))['catch'](loggerCatch(_0x27dc('0xb3')));};Dialer[_0x27dc('0x18')][_0x27dc('0xb4')]=function(_0x2705ea){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopperHistory[_0x27dc('0xb5')](_0x2705ea))['catch'](loggerCatch(_0x27dc('0xb6')));};Dialer[_0x27dc('0x18')]['rescheduleContact']=function(_0x5543d0){return BPromise[_0x27dc('0xae')]()['then'](cmHopper[_0x27dc('0xb7')](_0x5543d0))[_0x27dc('0xa8')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0x27dc('0x18')][_0x27dc('0xb8')]=function(_0x2a7b9c,_0x478a30,_0x19390d){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopper['unlockContact'](_0x2a7b9c,_0x478a30,_0x19390d))['catch'](loggerCatch(_0x27dc('0xb9')));};Dialer['prototype'][_0x27dc('0xba')]=function(_0xd41c28,_0x4def88,_0x11c76a,_0x2a3709,_0x5a7b10){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopper[_0x27dc('0xba')](_0xd41c28,_0x4def88,_0x11c76a,_0x2a3709))['catch'](function(_0x15bd8c){_0x5a7b10[_0x27dc('0xbb')]-=_0x11c76a;_0x5a7b10[_0x27dc('0xbb')]=_0x5a7b10[_0x27dc('0xbb')]>0x0?_0x5a7b10[_0x27dc('0xbb')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x15bd8c);});};Dialer[_0x27dc('0x18')][_0x27dc('0xbc')]=function(_0x1af032,_0x23ae65,_0x4c7a1e,_0x4d9e12){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopper['getContactDialerIvr'](_0x1af032,_0x23ae65,_0x4c7a1e))[_0x27dc('0xa8')](function(_0x513151){_0x4d9e12['temp']-=_0x23ae65;_0x4d9e12[_0x27dc('0xbb')]=_0x4d9e12[_0x27dc('0xbb')]>0x0?_0x4d9e12[_0x27dc('0xbb')]:0x0;loggerCatch(_0x27dc('0xbd'))(_0x513151);});};Dialer[_0x27dc('0x18')][_0x27dc('0xbe')]=function(_0x545594){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](voiceQueueRt[_0x27dc('0xbe')](_0x545594))[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xbf')));};Dialer[_0x27dc('0x18')][_0x27dc('0xc0')]=function(_0x3c947f){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopper['moveContactManagedDialer'](_0x3c947f))[_0x27dc('0xa8')](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype'][_0x27dc('0xc1')]=function(_0x8eb58){return BPromise[_0x27dc('0xae')]()[_0x27dc('0xb2')](cmHopperHistory[_0x27dc('0xc1')](_0x8eb58))[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xc2')));};Dialer['prototype'][_0x27dc('0xaa')]=function(_0x311693){if(!_[_0x27dc('0x37')](_0x311693)&&_0x311693!==null){if(typeof _0x311693[_0x27dc('0x91')]!==_0x27dc('0x90')){if(_0x311693[_0x27dc('0x91')]>0x0){_0x311693[_0x27dc('0x91')]-=0x1;}else{logger[_0x27dc('0x8d')](_0x27dc('0xc3'));}}}else{logger[_0x27dc('0x8d')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x27dc('0x18')][_0x27dc('0xc4')]=function(_0x315ab3,_0xbb3183){var _0x500938=this;return function(_0x490d0f){_0x500938[_0x27dc('0xaa')](_0xbb3183);logger['error'](_0x315ab3,util[_0x27dc('0x8e')](_0x490d0f,{'showHidden':![],'depth':null}));};};Dialer[_0x27dc('0x18')]['emptyContact']=function(_0x4211f2,_0x9fde3d,_0x54f875){var _0x2a4921={'state':0x19,'statedesc':_0x27dc('0xc5')};this[_0x27dc('0xaa')](_0x9fde3d);this[_0x27dc('0xc6')](_[_0x27dc('0xc7')](_0x2a4921,_[_0x27dc('0xc8')](_0x54f875,['ContactId',_0x27dc('0xc9'),'UserId',_0x27dc('0xca'),_0x27dc('0xcb')])),'[emptyContact][createHistory]',_0x27dc('0xcc'));logger[_0x27dc('0x8d')](_0x4211f2);};Dialer['prototype']['isSuccess']=function(_0x1d451d){return _0x1d451d===_0x27dc('0xcd');};Dialer['prototype'][_0x27dc('0xce')]=function(_0x5180a6){return!_['isUndefined'](_0x5180a6)&&_0x5180a6&&!_[_0x27dc('0x37')](_0x5180a6['name'])&&!_[_0x27dc('0x37')](_0x5180a6[_0x27dc('0x6e')])&&_0x5180a6[_0x27dc('0x6e')]&&(this[_0x27dc('0x21')][util[_0x27dc('0x72')](_0x27dc('0xcf'),_0x5180a6[_0x27dc('0x3a')])][_0x27dc('0xd0')]===_0x27dc('0xd1')||this[_0x27dc('0x21')][util[_0x27dc('0x72')](_0x27dc('0xcf'),_0x5180a6[_0x27dc('0x3a')])][_0x27dc('0xd0')]==='unmonitored');};Dialer[_0x27dc('0x18')][_0x27dc('0xc6')]=function(_0x5867ae,_0x2ed75a,_0x3fbfc7){this['createHistory'](_0x5867ae)[_0x27dc('0xa8')](loggerCatch(_0x2ed75a));this[_0x27dc('0xc0')](_0x5867ae)[_0x27dc('0xa8')](loggerCatch(_0x3fbfc7));};Dialer[_0x27dc('0x18')][_0x27dc('0x31')]=function(_0x54af7a){var _0x28d4d9=this[_0x27dc('0xa3')][_0x54af7a[_0x27dc('0xd2')]];var _0x19bcf9;if(!_[_0x27dc('0xd3')](_0x54af7a)&&!_[_0x27dc('0xd3')](_0x54af7a[_0x27dc('0xd4')])&&!_[_0x27dc('0xd3')](_0x54af7a['variable']['amdstatus'])&&_0x54af7a[_0x27dc('0xd5')]===_0x27dc('0xd6')&&_0x28d4d9){if(_0x28d4d9[_0x27dc('0x46')]!==_0x27dc('0x71')&&this['voiceQueues'][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0xd7')]&&_0x54af7a[_0x27dc('0xd8')]===_0x27dc('0xd9')){delete this['uniqueId'][_0x54af7a['uniqueid']];this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][_0x28d4d9[_0x27dc('0xab')]]);this[_0x27dc('0x1e')][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0x56')]+=0x1;this[_0x27dc('0x1e')][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0x55')]+=0x1;_0x19bcf9=new Hangup(_0x28d4d9,_0x54af7a);_0x19bcf9['state']=0x12;_0x19bcf9[_0x27dc('0xa0')]=_0x27dc('0xda');_0x19bcf9[_0x27dc('0xdb')]=_0x27dc('0xdc');ami[_0x27dc('0x45')](_0x27dc('0xdd'),ut[_0x27dc('0xde')](_0x19bcf9,'amd'));this[_0x27dc('0xc6')](_0x19bcf9,_0x27dc('0xdf'),'[syncHangupInAMD]');}if(_0x28d4d9[_0x27dc('0x46')]!=='ivr'&&this['voiceQueues'][_0x28d4d9['queue']]['dialAMDActive']&&_0x54af7a[_0x27dc('0xd8')]===_0x27dc('0xe0')){var _0x136508=this;return new BPromise(function(_0x1d3c07,_0x2c069d){delete _0x136508['uniqueId'][_0x54af7a[_0x27dc('0xd2')]];_0x136508[_0x27dc('0xaa')](_0x136508[_0x27dc('0x1e')][_0x28d4d9[_0x27dc('0xab')]]);_0x136508['voiceQueues'][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0x56')]+=0x1;_0x136508['voiceQueues'][_0x28d4d9['queue']][_0x27dc('0x55')]+=0x1;var _0x4cd5ca=_0x136508[_0x27dc('0x1e')][_0x28d4d9[_0x27dc('0xab')]];var _0x194287=new Hangup(_0x28d4d9,_0x54af7a);_0x194287[_0x27dc('0x9f')]=0x13;_0x194287[_0x27dc('0xa0')]=_0x27dc('0xe1');_0x194287[_0x27dc('0xdb')]='AMD';_0x194287[_0x27dc('0xe2')]+=0x1;_0x194287[_0x27dc('0xe3')]+=0x1;_0x194287[_0x27dc('0xe4')]=!![];ami[_0x27dc('0x45')](_0x27dc('0xdd'),ut['buildObj'](_0x194287,_0x27dc('0xe4')));_0x136508[_0x27dc('0xc1')](_0x194287)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xe5')));if(_0x194287['countbusyretry']+_0x194287['countcongestionretry']+_0x194287['countnoanswerretry']+_0x194287[_0x27dc('0xe6')]+_0x194287[_0x27dc('0xe7')]+_0x194287[_0x27dc('0xe8')]+_0x194287[_0x27dc('0xe2')]+_0x194287[_0x27dc('0xe9')]>=_0x4cd5ca[_0x27dc('0xea')]){_0x136508[_0x27dc('0xeb')](_0x194287,_0x1d3c07,_0x2c069d,_0x27dc('0xec'));}else{if(_0x194287[_0x27dc('0xe2')]>=_0x4cd5ca[_0x27dc('0xed')]){_0x136508['createStateFinal'](_0x194287,_0x1d3c07,_0x2c069d,_0x27dc('0xee'));}else{_0x136508[_0x27dc('0xb7')]({'active':![],'countmachineretry':_0x194287['countmachineretry'],'scheduledat':moment()[_0x27dc('0xef')](_0x4cd5ca[_0x27dc('0xf0')],_0x27dc('0xf1'))[_0x27dc('0x72')](_0x27dc('0xf2')),'ContactId':_0x194287[_0x27dc('0xf3')],'ListId':_0x194287['ListId'],'VoiceQueueId':_0x194287[_0x27dc('0xca')]||undefined,'CampaignId':_0x194287[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xf4')));_0x1d3c07({'reschedule':0x1});}}});}if(_0x28d4d9[_0x27dc('0x46')]==='ivr'&&this[_0x27dc('0x1f')][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0xd7')]&&_0x54af7a[_0x27dc('0xd8')]==='HANGUP'){delete this['uniqueId'][_0x54af7a['uniqueid']];this[_0x27dc('0xaa')](this[_0x27dc('0x1f')][_0x28d4d9[_0x27dc('0xab')]]);_0x19bcf9=new Hangup(_0x28d4d9,_0x54af7a);_0x19bcf9[_0x27dc('0x9f')]=0x12;_0x19bcf9[_0x27dc('0xa0')]=_0x27dc('0xda');_0x19bcf9[_0x27dc('0xdb')]='AMD';ami[_0x27dc('0x45')](_0x27dc('0xdd'),ut['buildObj'](_0x19bcf9,_0x27dc('0xe4')));this[_0x27dc('0xc6')](_0x19bcf9,_0x27dc('0xf5'),_0x27dc('0xf6'));}if(_0x28d4d9['type']==='ivr'&&this[_0x27dc('0x1f')][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0xd7')]&&_0x54af7a[_0x27dc('0xd8')]===_0x27dc('0xe0')){var _0x136508=this;return new BPromise(function(_0x2c4d21,_0x37a833){delete _0x136508[_0x27dc('0xa3')][_0x54af7a[_0x27dc('0xd2')]];_0x136508[_0x27dc('0xaa')](_0x136508[_0x27dc('0x1f')][_0x28d4d9[_0x27dc('0xab')]]);_0x136508['campaigns'][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0x56')]+=0x1;_0x136508['campaigns'][_0x28d4d9[_0x27dc('0xab')]][_0x27dc('0x55')]+=0x1;var _0x572b71=_0x136508[_0x27dc('0x1f')][_0x28d4d9[_0x27dc('0xab')]];var _0x2b65a9=new Hangup(_0x28d4d9,_0x54af7a);_0x2b65a9['state']=0x13;_0x2b65a9[_0x27dc('0xa0')]=_0x27dc('0xe1');_0x2b65a9['membername']=_0x27dc('0xdc');_0x2b65a9['countmachineretry']+=0x1;_0x2b65a9[_0x27dc('0xe3')]+=0x1;_0x2b65a9[_0x27dc('0xe4')]=!![];ami['emit'](_0x27dc('0xdd'),ut[_0x27dc('0xde')](_0x2b65a9,'amd'));_0x136508[_0x27dc('0xc1')](_0x2b65a9)['catch'](loggerCatch(_0x27dc('0xe5')));if(_0x2b65a9[_0x27dc('0xf7')]+_0x2b65a9[_0x27dc('0xf8')]+_0x2b65a9[_0x27dc('0xf9')]+_0x2b65a9[_0x27dc('0xe6')]+_0x2b65a9[_0x27dc('0xe7')]+_0x2b65a9[_0x27dc('0xe8')]+_0x2b65a9[_0x27dc('0xe2')]+_0x2b65a9[_0x27dc('0xe9')]>=_0x572b71[_0x27dc('0xea')]){_0x136508[_0x27dc('0xeb')](_0x2b65a9,_0x2c4d21,_0x37a833,_0x27dc('0xec'));}else{if(_0x2b65a9['countmachineretry']>=_0x572b71[_0x27dc('0xed')]){_0x136508['createStateFinal'](_0x2b65a9,_0x2c4d21,_0x37a833,_0x27dc('0xee'));}else{_0x136508[_0x27dc('0xb7')]({'active':![],'countmachineretry':_0x2b65a9[_0x27dc('0xe2')],'scheduledat':moment()[_0x27dc('0xef')](_0x572b71[_0x27dc('0xf0')],_0x27dc('0xf1'))[_0x27dc('0x72')](_0x27dc('0xf2')),'ContactId':_0x2b65a9[_0x27dc('0xf3')],'ListId':_0x2b65a9['ListId'],'VoiceQueueId':_0x2b65a9[_0x27dc('0xca')]||undefined,'CampaignId':_0x2b65a9[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xf4')));_0x2c4d21({'reschedule':0x1});}}});}}};Dialer[_0x27dc('0x18')][_0x27dc('0xfa')]=function(_0x4931b7){var _0x55bc06=this['uniqueId'][_0x4931b7[_0x27dc('0xd2')]];var _0x20eba0=this;var _0xa4f545;if(_0x55bc06&&_0x55bc06[_0x27dc('0x46')]===_0x27dc('0x71')){delete this[_0x27dc('0xa3')][_0x4931b7[_0x27dc('0xd2')]];this[_0x27dc('0xaa')](this[_0x27dc('0x1f')][_0x55bc06[_0x27dc('0xab')]]);this[_0x27dc('0x1f')][_0x55bc06['queue']][_0x27dc('0xfb')]+=0x1;_0xa4f545=new Hangup(_0x55bc06,_0x4931b7);this['createHistory'](_0xa4f545)['catch'](loggerCatch(_0x27dc('0xfc')));this[_0x27dc('0xc0')](_0xa4f545)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xfd')));}if(_0x55bc06&&_0x55bc06[_0x27dc('0x46')]!==_0x27dc('0x71')&&isNotNull(this['voiceQueues'][_0x55bc06[_0x27dc('0xab')]][_0x27dc('0xfe')])){delete this[_0x27dc('0xa3')][_0x4931b7['uniqueid']];this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][_0x55bc06['queue']]);this[_0x27dc('0x1e')][_0x55bc06['queue']][_0x27dc('0x56')]+=0x1;this[_0x27dc('0x1e')][_0x55bc06[_0x27dc('0xab')]][_0x27dc('0x55')]+=0x1;_0xa4f545=new Hangup(_0x55bc06,_0x4931b7);_0xa4f545[_0x27dc('0x9f')]=0x10;_0xa4f545['statedesc']='AnswerAGI';_0xa4f545[_0x27dc('0xdb')]='AGI';this['createHistory'](_0xa4f545)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xfc')));this['moveContactManagedDialer'](_0xa4f545)['catch'](loggerCatch(_0x27dc('0xfd')));}if(_0x55bc06&&_0x55bc06[_0x27dc('0x46')]!==_0x27dc('0x71')&&!isNotNull(this['voiceQueues'][_0x55bc06[_0x27dc('0xab')]][_0x27dc('0xfe')])){delete this[_0x27dc('0xa3')][_0x4931b7[_0x27dc('0xd2')]];this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][_0x55bc06[_0x27dc('0xab')]]);this['voiceQueues'][_0x55bc06[_0x27dc('0xab')]][_0x27dc('0x5e')]+=0x1;_0xa4f545=new Hangup(_0x55bc06,_0x4931b7);_0xa4f545[_0x27dc('0x9f')]=0xc;_0xa4f545[_0x27dc('0xa0')]=_0x4931b7[_0x27dc('0xff')];_0xa4f545[_0x27dc('0xdb')]='Unknow';this[_0x27dc('0xc1')](_0xa4f545)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xfc')));this[_0x27dc('0xc0')](_0xa4f545)['catch'](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype']['syncAgentComplete']=function(_0x8f1379){var _0x409816=this[_0x27dc('0xa3')][_0x8f1379[_0x27dc('0xd2')]];var _0x1f4642=this;if(this[_0x27dc('0x1e')][_0x8f1379[_0x27dc('0xab')]]){if(_0x409816&&_0x409816[_0x27dc('0x46')]!==_0x27dc('0x71')){delete this['uniqueId'][_0x8f1379[_0x27dc('0xd2')]];this[_0x27dc('0x1e')][_0x8f1379[_0x27dc('0xab')]][_0x27dc('0x56')]+=0x1;var _0x32a826=new AgentComplete(_0x409816,_0x8f1379);if(_0x8f1379['reason']==='agent'){_0x32a826[_0x27dc('0x100')]=this[_0x27dc('0x1e')][_0x8f1379[_0x27dc('0xab')]][_0x27dc('0x101')]&&this['voiceQueues'][_0x8f1379['queue']]['dialAgiAfterHangupAgent']?moment()['format'](_0x27dc('0xf2')):undefined;}this[_0x27dc('0xc1')](_0x32a826)['catch'](loggerCatch(_0x27dc('0x102')));this[_0x27dc('0xc0')](_0x32a826)['catch'](loggerCatch(_0x27dc('0x103')));}}};Dialer[_0x27dc('0x18')][_0x27dc('0x104')]=function(_0x303c90){if(this[_0x27dc('0x1e')][_0x303c90[_0x27dc('0xab')]]){if(this[_0x27dc('0xa3')][_0x303c90[_0x27dc('0xd2')]]&&this[_0x27dc('0xa3')][_0x303c90[_0x27dc('0xd2')]][_0x27dc('0x46')]!==_0x27dc('0x71')){this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][_0x303c90['queue']]);this['uniqueId'][_0x303c90[_0x27dc('0xd2')]][_0x27dc('0x105')]=moment()[_0x27dc('0x72')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x27dc('0x18')]['queueCallerAbandonCreateState']=function(_0x3e9547){this[_0x27dc('0xc1')](_0x3e9547)['catch'](loggerCatch(_0x27dc('0x102')));this[_0x27dc('0xc0')](_0x3e9547)['catch'](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));};Dialer[_0x27dc('0x18')][_0x27dc('0x106')]=function(_0x29f12c){var _0x1bb023=this[_0x27dc('0xa3')][_0x29f12c[_0x27dc('0xd2')]];var _0x37dd1=this;if(this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]]){if(_0x1bb023&&_0x1bb023[_0x27dc('0x46')]!==_0x27dc('0x71')){delete this[_0x27dc('0xa3')][_0x29f12c['uniqueid']];this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]]);_0x1bb023[_0x27dc('0x107')]=moment()[_0x27dc('0x72')](_0x27dc('0xf2'));var _0x153160=new QueueCallerAbandon(_0x1bb023,_0x29f12c);if(getSeconds(_0x1bb023['droptime'],_0x1bb023[_0x27dc('0x108')])>=_0x1bb023[_0x27dc('0x109')]){this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]][_0x27dc('0x61')]+=0x1;this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]][_0x27dc('0x59')]+=0x1;this[_0x27dc('0x1e')][_0x29f12c['queue']][_0x27dc('0x63')]+=0x1;_0x153160[_0x27dc('0x9f')]=0xa;_0x153160[_0x27dc('0xa0')]=_0x27dc('0x10a');_0x153160[_0x27dc('0x10b')]=_0x27dc('0x10c');_0x153160['agiafterat']=this['voiceQueues'][_0x29f12c[_0x27dc('0xab')]]['dialQueueProject2']?moment()[_0x27dc('0x72')](_0x27dc('0xf2')):undefined;_0x153160[_0x27dc('0xe7')]+=0x1;_0x153160[_0x27dc('0xe3')]+=0x1;if(_0x153160[_0x27dc('0xe7')]>=this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]][_0x27dc('0x10d')]){this[_0x27dc('0x10e')](_0x153160);}else{this[_0x27dc('0xb7')]({'active':![],'countdropretry':_0x153160[_0x27dc('0xe7')],'scheduledat':moment()[_0x27dc('0xef')](this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]]['dialDropRetryFrequency'],_0x27dc('0xf1'))['format'](_0x27dc('0xf2')),'ContactId':_0x1bb023[_0x27dc('0xf3')],'ListId':_0x1bb023[_0x27dc('0xc9')],'VoiceQueueId':_0x1bb023['VoiceQueueId']||undefined,'CampaignId':_0x1bb023[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x10f')));var _0x30d93d=new History(_0x153160);_0x30d93d['state']=0xa;_0x30d93d[_0x27dc('0xa0')]='Drop';_0x30d93d[_0x27dc('0x110')]=moment()['format'](_0x27dc('0xf2'));_0x30d93d[_0x27dc('0xa1')]=_0x30d93d['starttime'];_0x30d93d[_0x27dc('0x111')]=_0x153160[_0x27dc('0x111')];_0x30d93d[_0x27dc('0x112')]=_0x153160[_0x27dc('0x112')];this[_0x27dc('0xc1')](_0x30d93d)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x113')));}}else{this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]][_0x27dc('0x7a')]+=0x1;this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]]['outboundDropCallsDayCallersExit']+=0x1;_0x153160[_0x27dc('0x9f')]=0xb;_0x153160[_0x27dc('0xa0')]=_0x27dc('0x114');_0x153160[_0x27dc('0x10b')]='CALLEREXIT';_0x153160['countabandonedretry']+=0x1;_0x153160[_0x27dc('0xe3')]+=0x1;if(_0x153160['countabandonedretry']>=this[_0x27dc('0x1e')][_0x29f12c[_0x27dc('0xab')]][_0x27dc('0x115')]){this['queueCallerAbandonCreateState'](_0x153160);}else{this[_0x27dc('0xb7')]({'active':![],'countabandonedretry':_0x153160['countabandonedretry'],'scheduledat':moment()['add'](this['voiceQueues'][_0x29f12c['queue']][_0x27dc('0x116')],_0x27dc('0xf1'))['format'](_0x27dc('0xf2')),'ContactId':_0x1bb023[_0x27dc('0xf3')],'ListId':_0x1bb023[_0x27dc('0xc9')],'VoiceQueueId':_0x1bb023['VoiceQueueId']||undefined,'CampaignId':_0x1bb023[_0x27dc('0xcb')]||undefined})['catch'](loggerCatch(_0x27dc('0x117')));var _0x30d93d=new History(_0x153160);_0x30d93d['state']=0xb;_0x30d93d['statedesc']='Abandoned';_0x30d93d[_0x27dc('0x110')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x30d93d[_0x27dc('0xa1')]=_0x30d93d[_0x27dc('0x110')];_0x30d93d['calleridname']=_0x153160[_0x27dc('0x111')];_0x30d93d[_0x27dc('0x112')]=_0x153160[_0x27dc('0x112')];this[_0x27dc('0xc1')](_0x30d93d)['catch'](loggerCatch(_0x27dc('0x118')));}}}}};Dialer['prototype'][_0x27dc('0x119')]=function(_0x1103ab){if(this[_0x27dc('0x24')][_0x1103ab[_0x27dc('0xd2')]]){this[_0x27dc('0x24')][_0x1103ab['uniqueid']][_0x27dc('0x11a')]=_0x1103ab[_0x27dc('0x11a')];}if(this[_0x27dc('0xa3')][_0x1103ab[_0x27dc('0xd2')]]){this['uniqueId'][_0x1103ab[_0x27dc('0xd2')]][_0x27dc('0x11a')]=_0x1103ab[_0x27dc('0x11a')];}};Dialer[_0x27dc('0x18')]['syncQueueMember']=function(_0x1fa24d){if(strategy[this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]]['queue']][_0x27dc('0x11c')]]==='roundrobin'){if(this['actions'][_0x1fa24d[_0x27dc('0x11b')]]&&_[_0x27dc('0xd3')](this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0x11d')])&&_0x1fa24d[_0x27dc('0xd0')]==='1'&&_0x1fa24d[_0x27dc('0x11e')]==='0'){if(this[_0x27dc('0x20')][_0x1fa24d['stateinterface']]){if(!this['agents'][_0x1fa24d[_0x27dc('0x11f')]][_0x27dc('0x11d')]){this[_0x27dc('0x20')][_0x1fa24d[_0x27dc('0x11f')]][_0x27dc('0x11d')]=!![];this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0x11d')]=!![];this['actions'][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0x11f')]=_0x1fa24d['stateinterface'];}}}}else if((strategy[this['voiceQueues'][this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0xab')]][_0x27dc('0x11c')]]||'rrmemory')===_0x27dc('0x16')){if(this['actions'][_0x1fa24d['actionid']]){if(this['agents'][_0x1fa24d[_0x27dc('0x11f')]]){this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0x11f')]=_0x1fa24d[_0x27dc('0x11f')];if(_[_0x27dc('0xd3')](this['queueBooked'][this['actions'][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0xab')]])){this[_0x27dc('0x120')][this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]][_0x27dc('0xab')]]=[];}this[_0x27dc('0x120')][this['actions'][_0x1fa24d['actionid']][_0x27dc('0xab')]][_0x27dc('0x121')](_['merge'](_[_0x27dc('0xc8')](this[_0x27dc('0x24')][_0x1fa24d[_0x27dc('0x11b')]],[_0x27dc('0x122'),_0x27dc('0x11f')]),{'status':_0x1fa24d['status'],'paused':_0x1fa24d[_0x27dc('0x11e')]}));}}}};function unlockQueueStatus(_0x20aa00,_0x10ce7b){setTimeout(function(){if(_[_0x27dc('0x37')](_0x20aa00['queueStatusComplete'])){loggerBooked[_0x27dc('0x8d')](_0x27dc('0x123'),_0x10ce7b);}_0x20aa00[_0x27dc('0x124')]=!![];loggerBooked[_0x27dc('0x75')](_0x27dc('0x125'),_0x10ce7b,JSON[_0x27dc('0x42')](_[_0x27dc('0xc8')](_0x20aa00,[_0x27dc('0x3a'),_0x27dc('0x124')])));},0x1f3);}Dialer['prototype']['syncQueueStatusComplete']=function(_0x42ed62){var _0x3f34b1=this;var _0x5cb25f=_0x3f34b1[_0x27dc('0x1e')][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]];if(strategy[this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x42ed62['actionid']][_0x27dc('0xab')]][_0x27dc('0x11c')]]===_0x27dc('0x17')){if(this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]&&this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0x11f')]){this[_0x27dc('0x1d')][_0x27dc('0x126')](this['actions'][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0x122')],this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0x11f')])['catch'](function(_0x3cc7b9){logger[_0x27dc('0x8d')](_0x27dc('0x127'),util[_0x27dc('0x8e')](_0x3cc7b9,{'showHidden':![],'depth':null}));})[_0x27dc('0x1b')](function(){_0x3f34b1[_0x27dc('0xaa')](_0x3f34b1[_0x27dc('0x1e')][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]);_0x3f34b1['agents'][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0x11f')]][_0x27dc('0x11d')]=![];delete _0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]];unlockQueueStatus(_0x5cb25f);});}else{this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]);this[_0x27dc('0xb7')]({'active':![],'ContactId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xf3')],'ListId':this['actions'][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xc9')],'VoiceQueueId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xca')]||undefined,'CampaignId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x128')));delete this[_0x27dc('0x24')][_0x42ed62['actionid']];unlockQueueStatus(_0x5cb25f);}}else if((strategy[this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]['queue']]['strategy']]||_0x27dc('0x16'))===_0x27dc('0x16')){var _0x216446;if(this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]&&!_[_0x27dc('0x40')](this[_0x27dc('0x120')][this[_0x27dc('0x24')][_0x42ed62['actionid']][_0x27dc('0xab')]])){if(this['queueBookedRR'][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]){this['queueBookedRR'][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]=this['queueBookedRR'][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]['queue']]?this[_0x27dc('0x129')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]:this[_0x27dc('0x120')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]?this[_0x27dc('0x120')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]][_0x27dc('0x12a')]||0x0:0x0;}this[_0x27dc('0x120')][this[_0x27dc('0x24')][_0x42ed62['actionid']][_0x27dc('0xab')]][_0x27dc('0x12a')]=this[_0x27dc('0x129')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]];for(var _0x2020eb=0x0;_0x2020eb<this['queueBooked'][this['actions'][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]][_0x27dc('0x12b')];_0x2020eb+=0x1){_0x216446=rr(this['queueBooked'][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]);this[_0x27dc('0x129')][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]['queue']]=this[_0x27dc('0x120')][this[_0x27dc('0x24')][_0x42ed62['actionid']][_0x27dc('0xab')]][_0x27dc('0x12a')];if(_0x216446['status']==='1'&&_0x216446[_0x27dc('0x11e')]==='0'){break;}}if(!_[_0x27dc('0xd3')](_0x216446)){this['agents'][_0x216446['stateinterface']][_0x27dc('0x12c')]=_['isUndefined'](this[_0x27dc('0x20')][_0x216446[_0x27dc('0x11f')]]['unlockRR'])?!![]:this['agents'][_0x216446[_0x27dc('0x11f')]]['unlockRR'];}loggerBooked['info'](_0x27dc('0x12d'),_0x42ed62[_0x27dc('0x11b')],'Agent:\x20',JSON[_0x27dc('0x42')](_[_0x27dc('0xc8')](this[_0x27dc('0x20')][_0x216446['stateinterface']],[_0x27dc('0x3a'),'unlockRR'])),_0x27dc('0x12e'),JSON['stringify'](_0x216446[_0x27dc('0x122')]));if(!_[_0x27dc('0xd3')](_0x216446)&&_0x216446[_0x27dc('0xd0')]==='1'&&_0x216446[_0x27dc('0x11e')]==='0'&&this[_0x27dc('0x20')][_0x216446[_0x27dc('0x11f')]][_0x27dc('0x12c')]){this['agents'][_0x216446['stateinterface']]['unlockRR']=![];this[_0x27dc('0x120')][_0x3f34b1['actions'][_0x42ed62['actionid']][_0x27dc('0xab')]]=[];this[_0x27dc('0x1d')][_0x27dc('0x126')](_0x216446[_0x27dc('0x122')],_0x216446[_0x27dc('0x11f')])['catch'](function(_0x2ddcc4){logger[_0x27dc('0x8d')](_0x27dc('0x127'),util[_0x27dc('0x8e')](_0x2ddcc4,{'showHidden':![],'depth':null}));})[_0x27dc('0x1b')](function(){_0x3f34b1[_0x27dc('0xaa')](_0x3f34b1[_0x27dc('0x1e')][_0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]);setTimeout(function(){_0x3f34b1[_0x27dc('0x20')][_0x216446[_0x27dc('0x11f')]][_0x27dc('0x12c')]=!![];loggerBooked[_0x27dc('0x75')](_0x27dc('0x12f'),_0x42ed62[_0x27dc('0x11b')],'Agent:\x20',JSON[_0x27dc('0x42')](_[_0x27dc('0xc8')](_0x3f34b1[_0x27dc('0x20')][_0x216446[_0x27dc('0x11f')]],['name',_0x27dc('0x12c')])),_0x27dc('0x12e'),JSON[_0x27dc('0x42')](_0x216446[_0x27dc('0x122')]));},0xc7);delete _0x3f34b1[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]];unlockQueueStatus(_0x5cb25f,_0x42ed62['actionid']);});}else{loggerBooked[_0x27dc('0x75')](_0x27dc('0x130'));this['updateOriginated'](this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xab')]]);this[_0x27dc('0xb7')]({'active':![],'ContactId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xf3')],'ListId':this[_0x27dc('0x24')][_0x42ed62['actionid']][_0x27dc('0xc9')],'VoiceQueueId':this['actions'][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xca')]||undefined,'CampaignId':this['actions'][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x128')));delete this[_0x27dc('0x24')][_0x42ed62['actionid']];unlockQueueStatus(_0x5cb25f);}}else{loggerBooked['info'](_0x27dc('0x131'));this[_0x27dc('0xaa')](this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]['queue']]);this[_0x27dc('0xb7')]({'active':![],'ContactId':this['actions'][_0x42ed62[_0x27dc('0x11b')]]['ContactId'],'ListId':this['actions'][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xc9')],'VoiceQueueId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xca')]||undefined,'CampaignId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x132')));delete this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]];unlockQueueStatus(_0x5cb25f);}}else{loggerBooked[_0x27dc('0x75')](_0x27dc('0x133'));this['updateOriginated'](this[_0x27dc('0x1e')][this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]['queue']]);this[_0x27dc('0xb7')]({'active':![],'ContactId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xf3')],'ListId':this[_0x27dc('0x24')][_0x42ed62['actionid']]['ListId'],'VoiceQueueId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]][_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x134')));delete this[_0x27dc('0x24')][_0x42ed62[_0x27dc('0x11b')]];unlockQueueStatus(_0x5cb25f);}};Dialer[_0x27dc('0x18')]['loopCampaigns']=function(){var _0x2a2a27=this;setInterval(function(){_0x2a2a27['syncCampaigns']();},0x3e8);};Dialer[_0x27dc('0x18')][_0x27dc('0x135')]=function(_0x4d1dd0){var _0x9c6cd8=this;return function(){if(!_0x9c6cd8['isTrunkReachable'](_0x4d1dd0[_0x27dc('0x6d')])){if(!_0x9c6cd8['isTrunkReachable'](_0x4d1dd0[_0x27dc('0x136')])){_0x4d1dd0[_0x27dc('0x38')]='TRUNK_IS_NOT_REACHABLE';throw _0x4d1dd0[_0x27dc('0x3a')]+_0x27dc('0x137');}}};};Dialer[_0x27dc('0x18')][_0x27dc('0x138')]=function(_0xafe165,_0x236048,_0x2d92aa,_0x1b17df){var _0x7df46b=this;return function(){var _0x15e30d=!![];return _0x7df46b[_0x27dc('0x139')](_0xafe165,_0x236048,_0x2d92aa,_0x1b17df,_0x15e30d);};};Dialer[_0x27dc('0x18')][_0x27dc('0x13a')]=function(_0x1455c5,_0x1f0f88,_0x1f1bb2,_0x1d1cf5){var _0x444d98=this;return function(){var _0x4ccda4=![];return _0x444d98[_0x27dc('0x139')](_0x1455c5['Intervals'],_0x1f0f88,_0x1f1bb2,_0x1d1cf5,_0x4ccda4);};};Dialer['prototype'][_0x27dc('0x139')]=function(_0x5836c5,_0xd9c892,_0x145b7a,_0x56fe01,_0x37a2db){var _0x240a2b=[];return new BPromise(function(_0x1408de,_0x213d29){if(!isNotNull(_0x5836c5)){_0x56fe01[_0x27dc('0x38')]=_0x27dc('0x3d');return _0x213d29(msgResponse(_0x27dc('0x139'),'Failure',_0x145b7a+'\x20Intervals\x20is\x20null\x20'));}if(_[_0x27dc('0x40')](_0x5836c5)){_0x56fe01[_0x27dc('0x38')]=_0x27dc('0x13b');return _0x213d29(msgResponse('ifTime',_0x27dc('0x13c'),_0x145b7a+_0x27dc('0x13d')));}if(_0xd9c892&&_[_0x27dc('0x37')](config[_0x27dc('0x13e')][_0xd9c892])){_0x56fe01[_0x27dc('0x38')]=_0x27dc('0x13f');return _0x213d29(msgResponse(_0x27dc('0x139'),'Failure',_0x145b7a+_0x27dc('0x140')+_0xd9c892));}if(_[_0x27dc('0x141')](_0x5836c5)){for(var _0x4f1893=0x0;_0x4f1893<_0x5836c5[_0x27dc('0x12b')];_0x4f1893+=0x1){_0x240a2b[_0x27dc('0x121')](ami[_0x27dc('0xa7')]({'action':_0x27dc('0x142'),'command':util[_0x27dc('0x72')]('iftime\x20%s,%s',_0x5836c5[_0x4f1893][_0x27dc('0x143')],!_[_0x27dc('0x37')](config['timezones'][_0xd9c892])?_0xd9c892:'')})[_0x27dc('0xb2')](function(_0x4a2771){return _0x4a2771[_0x27dc('0x144')]['indexOf'](_0x27dc('0x145'))>=0x0;})[_0x27dc('0xa8')](myreject(_0x213d29)));}}else{_0x240a2b[_0x27dc('0x121')](ami[_0x27dc('0xa7')]({'action':_0x27dc('0x142'),'command':util[_0x27dc('0x72')]('iftime\x20%s,%s',_0x5836c5,!_[_0x27dc('0x37')](config['timezones'][_0xd9c892])?_0xd9c892:'')})[_0x27dc('0xb2')](function(_0x12c79e){return _0x12c79e[_0x27dc('0x144')]['indexOf'](_0x27dc('0x145'))>=0x0;})[_0x27dc('0xa8')](myreject(_0x213d29)));}BPromise[_0x27dc('0x146')](_0x240a2b)['then'](function(_0x61c487){var _0x545b1a=_[_0x27dc('0x147')](_0x61c487);if(_0x545b1a){return _0x1408de(_0x545b1a);}else{_0x56fe01[_0x27dc('0x38')]=_0x37a2db?_0x27dc('0x148'):_0x27dc('0x149');return _0x213d29(msgResponse(_0x27dc('0x14a'),_0x27dc('0x13c'),_0x27dc('0x14b')+_0x37a2db+'\x20'+_0x145b7a+_0x27dc('0x14c')+util[_0x27dc('0x8e')](_0x5836c5,{'showHidden':![],'depth':null})+_0x27dc('0x14d')+_0xd9c892));}})['catch'](function(_0x357429){return _0x213d29(msgResponse('ifTime',_0x27dc('0x13c'),JSON[_0x27dc('0x42')](_0x357429)));});});};Dialer['prototype'][_0x27dc('0x14e')]=function(_0x17b4b0){var _0x2db58b=this;return function(){switch(_0x17b4b0[_0x27dc('0x14f')]){case _0x27dc('0x150'):freeVariablesPredictive(_0x17b4b0);_0x2db58b[_0x27dc('0x151')](_0x17b4b0,0x1);break;case _0x27dc('0x152'):freeVariablesPredictive(_0x17b4b0);_0x2db58b[_0x27dc('0x151')](_0x17b4b0,_0x17b4b0[_0x27dc('0x153')]);break;case _0x27dc('0x154'):_0x2db58b[_0x27dc('0x154')](_0x17b4b0);break;case _0x27dc('0x155'):freeVariablesPredictive(_0x17b4b0);_0x2db58b['handlePower'](_0x17b4b0,0x1);break;default:freeVariablesPredictive(_0x17b4b0);logger[_0x27dc('0x8d')](_0x27dc('0x156'),_0x17b4b0['name'],_0x27dc('0x157'));}};};Dialer[_0x27dc('0x18')]['launchHandleIvr']=function(_0x56dbbc){var _0x4a4434=this;return function(){_0x4a4434[_0x27dc('0x158')](_0x56dbbc);};};Dialer[_0x27dc('0x18')][_0x27dc('0x9')]=function(_0x49a7c8){var _0x248840=this;if(isNotPreview(_0x49a7c8['dialMethod'])){if(isVoiceQueueOutbound(_0x49a7c8[_0x27dc('0x46')])&&isActive(_0x49a7c8[_0x27dc('0x52')])){_0x49a7c8[_0x27dc('0x99')]=!![];BPromise[_0x27dc('0xae')]()['then'](checkIsLoggedIn(_0x49a7c8,_0x49a7c8[_0x27dc('0x49')]))[_0x27dc('0xb2')](checkIsActive(_0x49a7c8,_0x49a7c8['dialActive']))['then'](checkInterval(_0x49a7c8))['then'](_0x248840[_0x27dc('0x135')](_0x49a7c8))[_0x27dc('0xb2')](_0x248840[_0x27dc('0x138')](_0x49a7c8[_0x27dc('0x159')],_0x49a7c8[_0x27dc('0x15a')],_0x49a7c8[_0x27dc('0x3a')],_0x49a7c8))[_0x27dc('0xb2')](_0x248840['checkIfTimeIntervals'](_0x49a7c8[_0x27dc('0x3e')],_0x49a7c8[_0x27dc('0x15a')],_0x49a7c8[_0x27dc('0x3a')],_0x49a7c8))['then'](_0x248840['checkDialMethod'](_0x49a7c8))[_0x27dc('0xa8')](loggerCatchQueueSummary('[syncQueueSummary]',_0x49a7c8));}else{notSendMessagesQueue(_0x49a7c8);}}else{freeVariablesPredictive(_0x49a7c8);}};Dialer[_0x27dc('0x18')][_0x27dc('0x15b')]=function(){var _0x101d2f=this;var _0x20fe58;for(var _0x45041b in this['campaigns']){if(typeof this['campaigns'][_0x45041b]!==_0x27dc('0x90')){_0x20fe58=this[_0x27dc('0x1f')][_0x45041b];if(isCampaignIvr(_0x20fe58['type'])&&isActive(_0x20fe58['active'])){_0x20fe58['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0x27dc('0xb2')](checkIsActive(_0x20fe58,_0x20fe58['active']))[_0x27dc('0xb2')](checkInterval(_0x20fe58))[_0x27dc('0xb2')](_0x101d2f[_0x27dc('0x135')](_0x20fe58))[_0x27dc('0xb2')](_0x101d2f[_0x27dc('0x138')](_0x20fe58[_0x27dc('0x159')],_0x20fe58[_0x27dc('0x15a')],_0x20fe58[_0x27dc('0x3a')],_0x20fe58))['then'](_0x101d2f[_0x27dc('0x13a')](_0x20fe58[_0x27dc('0x3e')],_0x20fe58[_0x27dc('0x15a')],_0x20fe58[_0x27dc('0x3a')],_0x20fe58))['then'](_0x101d2f[_0x27dc('0x15c')](_0x20fe58))[_0x27dc('0xa8')](loggerCatchQueueSummary(_0x27dc('0x15d'),_0x20fe58));}else{notSendMessagesCampaign(_0x20fe58);}}}};function getCallerIdRandom(_0x60563d,_0x44ce85){var _0x379b9a;var _0x365a4a;var _0x3c0d6a;if(_0x44ce85<=0x0){_0x44ce85=0x1;}_0x379b9a=new RegExp(_0x27dc('0x15e')+_0x44ce85+'}$');_0x365a4a=Math[_0x27dc('0x15f')](0xa,_0x44ce85-0x1);_0x3c0d6a=Math[_0x27dc('0x15f')](0xa,_0x44ce85)-0x1;return util['format']('%s',_[_0x27dc('0x160')](_0x60563d,_0x379b9a,_[_0x27dc('0x161')](_0x365a4a,_0x3c0d6a)));}function extractCalleridName(_0xb79f8f){var _0x3767ba=_0xb79f8f['match'](/"(.*?)"/);return _0x3767ba?_0x3767ba[0x1]:_0xb79f8f;}function extractCalleridNumber(_0x4aefc3){var _0x11ef63=_0x4aefc3['match'](/<(.*?)>/);return _0x11ef63?_0x11ef63[0x1]:_0x4aefc3;}Dialer[_0x27dc('0x18')][_0x27dc('0x162')]=function(_0x54e55f,_0x2748ff){var _0x490e36=this;var _0x5acb8d=uuid['v4']();this['actions'][_0x5acb8d]=new Action(_0x54e55f,_0x2748ff,_0x5acb8d);return new BPromise(function(_0x30bc2f,_0x261c5f){if(_['isUndefined'](_0x54e55f)&&typeof _0x54e55f!=='object'){return _0x261c5f(msgResponse('originate','Failure',_0x27dc('0x163')));}if(_[_0x27dc('0x37')](_0x2748ff['Contact'][_0x27dc('0x164')])||_0x2748ff[_0x27dc('0x165')]['phone']===null){return _0x261c5f(msgResponse(_0x27dc('0x166'),_0x27dc('0x13c'),_0x27dc('0x167')));}var _0x35e6f9={'XMD-CALLERID':_0x490e36['actions'][_0x5acb8d][_0x27dc('0x168')](),'XMD-AGI':_0x54e55f['dialQueueProject']?util[_0x27dc('0x72')](_0x27dc('0x169'),ipAgi,_0x54e55f[_0x27dc('0xfe')]):_0x27dc('0x16a'),'XMD-AGIAFTER':_0x54e55f[_0x27dc('0x101')]?util[_0x27dc('0x72')](_0x27dc('0x169'),ipAgi,_0x54e55f[_0x27dc('0x101')]):_0x27dc('0x16a'),'XMD-QUEUE':_0x54e55f[_0x27dc('0x46')]===_0x27dc('0x89')?util['format'](_0x27dc('0x16b'),_0x54e55f[_0x27dc('0x3a')],_0x54e55f[_0x27dc('0x16c')]||'',_0x54e55f[_0x27dc('0x16d')]?'c':'',_0x54e55f['dialQueueTimeout']||0x3):'NONE','XMD-CONTACTID':_0x2748ff['ContactId'],'XMD-CDRTYPE':_0x27dc('0x6'),'CALLERID(all)':_0x490e36['actions'][_0x5acb8d][_0x27dc('0x168')](),'XMD-AMD':_0x54e55f[_0x27dc('0xd7')]?_0x27dc('0x16e'):'NONE','XMD-DESTINATION':_0x27dc('0xd6')};if(_0x54e55f['dialAMDActive']){_0x35e6f9['XMD-AMDINITIALSILENCE']=_0x54e55f['dialAMDInitialSilence']||0x9c4;_0x35e6f9[_0x27dc('0x16f')]=_0x54e55f['dialAMDGreeting']||0x5dc;_0x35e6f9[_0x27dc('0x170')]=_0x54e55f[_0x27dc('0x171')]||0x320;_0x35e6f9[_0x27dc('0x172')]=_0x54e55f[_0x27dc('0x173')]||0x1388;_0x35e6f9[_0x27dc('0x174')]=_0x54e55f[_0x27dc('0x175')]||0x64;_0x35e6f9[_0x27dc('0x176')]=_0x54e55f[_0x27dc('0x177')]||0x32;_0x35e6f9['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x54e55f[_0x27dc('0x178')]||0x3;_0x35e6f9[_0x27dc('0x179')]=_0x54e55f[_0x27dc('0x17a')]||0x100;_0x35e6f9[_0x27dc('0x17b')]=_0x54e55f[_0x27dc('0x17c')]||0x1388;}if(_0x54e55f[_0x27dc('0x46')]===_0x27dc('0x89')){_0x35e6f9[_0x27dc('0x17d')]=_0x2748ff['VoiceQueueId'];}else{_0x35e6f9[_0x27dc('0x17e')]=_0x2748ff[_0x27dc('0xcb')];}for(var _0x577d70 in _0x2748ff[_0x27dc('0x165')]){if(typeof _0x2748ff[_0x27dc('0x165')][_0x577d70]!==_0x27dc('0x90')){if(isNotNull(_0x2748ff[_0x27dc('0x165')][_0x577d70])&&_0x577d70!=='id'&&_0x577d70!==_0x27dc('0x17f')&&_0x577d70!=='createdAt'&&_0x577d70!==_0x27dc('0x180')){_0x35e6f9[util['format'](_0x27dc('0x181'),_0x27dc('0x182'),_[_0x27dc('0x183')](_0x577d70))]=_0x2748ff[_0x27dc('0x165')][_0x577d70];}}}var _0x46b9d6=_0x490e36[_0x27dc('0xce')](_0x54e55f[_0x27dc('0x6d')])?getCallerId(_0x54e55f[_0x27dc('0x6d')][_0x27dc('0x6f')],_0x54e55f[_0x27dc('0x184')],_0x54e55f['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x54e55f[_0x27dc('0x185')],_0x54e55f['dialRandomLastDigitCallerIdNumber']):_0x54e55f[_0x27dc('0x185')]):getCallerId(_[_0x27dc('0xd3')](_0x54e55f[_0x27dc('0x136')])?_0x54e55f[_0x27dc('0x6d')]['callerid']:_0x54e55f['TrunkBackup'][_0x27dc('0x6f')],_0x54e55f[_0x27dc('0x184')],_0x54e55f['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x54e55f['dialOriginateCallerIdNumber'],_0x54e55f[_0x27dc('0x186')]):_0x54e55f[_0x27dc('0x185')]);if(_0x46b9d6){_0x35e6f9[_0x27dc('0x187')]=_0x490e36[_0x27dc('0x24')][_0x5acb8d][_0x27dc('0x188')]=extractCalleridName(_0x46b9d6);_0x35e6f9['XMD-ORIGINATECALLERIDNUM']=_0x490e36[_0x27dc('0x24')][_0x5acb8d][_0x27dc('0x189')]=extractCalleridNumber(_0x46b9d6);}return ami[_0x27dc('0xa7')]({'actionid':_0x5acb8d,'action':_0x27dc('0x166'),'channel':_0x490e36[_0x27dc('0xce')](_0x54e55f[_0x27dc('0x6d')])?util[_0x27dc('0x72')](_0x27dc('0x18a'),_0x54e55f['Trunk'][_0x27dc('0x3a')],isNotNull(_0x54e55f['dialPrefix'])?_0x54e55f[_0x27dc('0x54')][_0x27dc('0x18b')]()||'':'',_0x54e55f[_0x27dc('0x18c')]>0x0?_0x2748ff[_0x27dc('0x165')][_0x27dc('0x164')][_0x27dc('0x18d')](_0x54e55f[_0x27dc('0x18c')]):_0x2748ff[_0x27dc('0x165')][_0x27dc('0x164')]):util[_0x27dc('0x72')](_0x27dc('0x18a'),_['isNil'](_0x54e55f[_0x27dc('0x136')])?_0x54e55f[_0x27dc('0x6d')][_0x27dc('0x3a')]:_0x54e55f[_0x27dc('0x136')][_0x27dc('0x3a')],isNotNull(_0x54e55f['dialPrefix'])?_0x54e55f['dialPrefix'][_0x27dc('0x18b')]()||'':'',_0x54e55f['dialCutDigit']>0x0?_0x2748ff[_0x27dc('0x165')][_0x27dc('0x164')][_0x27dc('0x18d')](_0x54e55f[_0x27dc('0x18c')]):_0x2748ff[_0x27dc('0x165')][_0x27dc('0x164')]),'callerid':_0x46b9d6,'Exten':_0x27dc('0xd6'),'Context':_0x27dc('0x18e'),'Priority':'1','variable':_0x35e6f9,'timeout':(_0x54e55f['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x5acb8d})[_0x27dc('0xb2')](function(_0x22c349){return _0x30bc2f(_0x22c349);})[_0x27dc('0xa8')](function(_0x50ffc3){_0x54e55f[_0x27dc('0x5b')]+=0x1;var _0x2a32be=new History(_0x490e36[_0x27dc('0x24')][_0x5acb8d]);logger[_0x27dc('0x8d')](util[_0x27dc('0x72')](_0x27dc('0x18f'),JSON[_0x27dc('0x42')](_0x50ffc3)));_0x2a32be[_0x27dc('0x9f')]=0xe;_0x2a32be['statedesc']=_0x27dc('0x190');_0x2a32be[_0x27dc('0x110')]=moment()[_0x27dc('0x72')]('YYYY-MM-DD\x20HH:mm:ss');_0x2a32be['endtime']=_0x2a32be[_0x27dc('0x110')];_0x490e36[_0x27dc('0xc1')](_0x2a32be)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x191')));_0x490e36['moveContactManagedDialer'](_0x2a32be)['catch'](loggerCatch(_0x27dc('0x191')))['finally'](function(){delete _0x490e36[_0x27dc('0x24')][_0x5acb8d];return _0x261c5f(msgResponse(_0x27dc('0x166'),_0x27dc('0x41'),_0x27dc('0x192')));});});});};Dialer[_0x27dc('0x18')][_0x27dc('0x2b')]=function(_0x2ef223){var _0x489cec=this['actions'][_0x2ef223[_0x27dc('0x11b')]];if(_0x489cec){delete this[_0x27dc('0x24')][_0x2ef223['actionid']];_0x489cec[_0x27dc('0x108')]=moment()[_0x27dc('0x72')]('YYYY-MM-DD\x20HH:mm:ss');var _0x4a6a81=_0x489cec[_0x27dc('0x46')]===_0x27dc('0x71')?this[_0x27dc('0x1f')][_0x489cec[_0x27dc('0xab')]]:this[_0x27dc('0x1e')][_0x489cec[_0x27dc('0x193')]()];if(!this[_0x27dc('0x194')](_0x2ef223[_0x27dc('0x195')])){this[_0x27dc('0xaa')](_0x4a6a81);return this[_0x27dc('0x196')](_0x489cec,_0x4a6a81,_0x2ef223)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x197')));}this[_0x27dc('0xa3')][_0x2ef223[_0x27dc('0xd2')]]=_0x489cec;}};Dialer[_0x27dc('0x18')][_0x27dc('0x198')]=function(_0x132cc7,_0x3b722f,_0x6f3380){var _0x17ea49=new History(_0x3b722f);if(_0x17ea49[_0x27dc('0xf7')]+_0x17ea49[_0x27dc('0xf8')]+_0x17ea49[_0x27dc('0xf9')]+_0x17ea49[_0x27dc('0xe6')]+_0x17ea49['countdropretry']+_0x17ea49[_0x27dc('0xe8')]+_0x17ea49[_0x27dc('0xe2')]+_0x17ea49[_0x27dc('0xe9')]>=_0x6f3380['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x132cc7){case 0x3:if(_0x17ea49[_0x27dc('0xf9')]>=_0x6f3380[_0x27dc('0x199')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x17ea49[_0x27dc('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x6f3380[_0x27dc('0x19a')],_0x27dc('0xf1'))[_0x27dc('0x72')](_0x27dc('0xf2')),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49[_0x27dc('0xc9')],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49['CampaignId']||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x19b')));break;case 0x5:if(_0x17ea49['countbusyretry']>=_0x6f3380[_0x27dc('0x19c')]-0x1){return!![];}this[_0x27dc('0xb7')]({'active':![],'countbusyretry':_0x17ea49['countbusyretry']+=0x1,'scheduledat':moment()[_0x27dc('0xef')](_0x6f3380['dialBusyRetryFrequency'],'minutes')[_0x27dc('0x72')](_0x27dc('0xf2')),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49[_0x27dc('0xc9')],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x19d')));break;case 0x8:if(_0x17ea49['countcongestionretry']>=_0x6f3380['dialCongestionMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countcongestionretry':_0x17ea49['countcongestionretry']+=0x1,'scheduledat':moment()['add'](_0x6f3380['dialCongestionRetryFrequency'],_0x27dc('0xf1'))[_0x27dc('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x17ea49['ContactId'],'ListId':_0x17ea49['ListId'],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49[_0x27dc('0xcb')]||undefined})['catch'](loggerCatch(_0x27dc('0x19e')));break;case 0x0:if(_0x17ea49[_0x27dc('0xe6')]>=_0x6f3380['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this[_0x27dc('0xb7')]({'active':![],'countnosuchnumberretry':_0x17ea49['countnosuchnumberretry']+=0x1,'scheduledat':moment()['add'](_0x6f3380[_0x27dc('0x19f')],_0x27dc('0xf1'))['format'](_0x27dc('0xf2')),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49[_0x27dc('0xc9')],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1a0')));}break;case 0xa:if(_0x17ea49[_0x27dc('0xe7')]>=_0x6f3380[_0x27dc('0x10d')]-0x1){return!![];}this[_0x27dc('0xb7')]({'active':![],'countdropretry':_0x17ea49['countdropretry']+=0x1,'scheduledat':moment()[_0x27dc('0xef')](_0x6f3380[_0x27dc('0x1a1')],_0x27dc('0xf1'))[_0x27dc('0x72')](_0x27dc('0xf2')),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49[_0x27dc('0xc9')],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x17ea49['countabandonedretry']>=_0x6f3380[_0x27dc('0x115')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x17ea49[_0x27dc('0xe8')]+=0x1,'scheduledat':moment()[_0x27dc('0xef')](_0x6f3380['dialAbandonedRetryFrequency'],_0x27dc('0xf1'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49[_0x27dc('0xc9')],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x117')));break;case 0x13:if(_0x17ea49[_0x27dc('0xe2')]>=_0x6f3380[_0x27dc('0xed')]-0x1){return!![];}this[_0x27dc('0xb7')]({'active':![],'countmachineretry':_0x17ea49[_0x27dc('0xe2')]+=0x1,'scheduledat':moment()[_0x27dc('0xef')](_0x6f3380[_0x27dc('0xf0')],_0x27dc('0xf1'))[_0x27dc('0x72')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49[_0x27dc('0xc9')],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xf4')));break;case 0x14:if(_0x17ea49[_0x27dc('0xe9')]>=_0x6f3380[_0x27dc('0x1a2')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countagentrejectretry':_0x17ea49[_0x27dc('0xe9')]+=0x1,'scheduledat':moment()[_0x27dc('0xef')](_0x6f3380[_0x27dc('0x1a3')],_0x27dc('0xf1'))[_0x27dc('0x72')](_0x27dc('0xf2')),'ContactId':_0x17ea49[_0x27dc('0xf3')],'ListId':_0x17ea49['ListId'],'VoiceQueueId':_0x17ea49[_0x27dc('0xca')]||undefined,'CampaignId':_0x17ea49['CampaignId']||undefined})['catch'](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x27dc('0x18')][_0x27dc('0x196')]=function(_0x2a465b,_0xdb5161,_0x7c88fe){var _0x2826eb=this;var _0x559a7a=new History(_0x2a465b);return new BPromise(function(_0x3ddc65,_0x309bcf){if(_[_0x27dc('0x37')](_0xdb5161)&&typeof _0xdb5161!==_0x27dc('0x1a4')){return _0x309bcf(msgResponse(_0x27dc('0x1a5'),_0x27dc('0x13c'),_0x27dc('0x1a6')));}if(_[_0x27dc('0x37')](_0x7c88fe)&&typeof _0x7c88fe!=='object'){return _0x309bcf(msgResponse(_0x27dc('0x1a5'),'Failure',_0x27dc('0x1a7')));}switch(_0x7c88fe[_0x27dc('0x1a8')]){case'0':_0xdb5161['outboundNoSuchCallsDay']+=0x1;_0x559a7a[_0x27dc('0x9f')]=0x0;_0x559a7a[_0x27dc('0xa0')]='NoSuchNumber';_0x559a7a[_0x27dc('0xe6')]+=0x1;_0x559a7a[_0x27dc('0xe3')]+=0x1;ami[_0x27dc('0x45')](_0x27dc('0x1a9'),ut[_0x27dc('0xde')](_0x2a465b,_0x27dc('0x1aa')));_0x2826eb[_0x27dc('0xc1')](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0xe5')));if(_0x2826eb['checkRetriveMax'](0x0,_0x2a465b,_0xdb5161)){if(_0x559a7a[_0x27dc('0xe6')]>=_0xdb5161[_0x27dc('0x1ab')]){_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,'reason\x200\x20no\x20such\x20number....');}else{_0x2826eb[_0x27dc('0xeb')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1ad'));}}break;case'3':_0xdb5161[_0x27dc('0x5a')]+=0x1;_0x559a7a[_0x27dc('0x9f')]=0x3;_0x559a7a[_0x27dc('0xa0')]='NoAnswer';_0x559a7a['countnoanswerretry']+=0x1;_0x559a7a[_0x27dc('0xe3')]+=0x1;ami[_0x27dc('0x45')](_0x27dc('0x1ae'),ut[_0x27dc('0xde')](_0x2a465b,_0x27dc('0x1af')));_0x2826eb['createHistory'](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1b0')));if(_0x2826eb[_0x27dc('0x198')](0x3,_0x2a465b,_0xdb5161)){if(_0x559a7a[_0x27dc('0xf9')]>=_0xdb5161[_0x27dc('0x199')]){_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1b1'));}else{_0x2826eb[_0x27dc('0xeb')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1b1'));}}break;case'5':_0xdb5161[_0x27dc('0x1b2')]+=0x1;_0x559a7a[_0x27dc('0x9f')]=0x5;_0x559a7a[_0x27dc('0xa0')]=_0x27dc('0x1b3');_0x559a7a[_0x27dc('0xf7')]+=0x1;_0x559a7a[_0x27dc('0xe3')]+=0x1;ami[_0x27dc('0x45')](_0x27dc('0x1b4'),ut[_0x27dc('0xde')](_0x2a465b,_0x27dc('0x1b5')));_0x2826eb[_0x27dc('0xc1')](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1b6')));if(_0x2826eb[_0x27dc('0x198')](0x5,_0x2a465b,_0xdb5161)){if(_0x559a7a[_0x27dc('0xf7')]>=_0xdb5161[_0x27dc('0x19c')]){_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1b7'));}else{_0x2826eb[_0x27dc('0xeb')](_0x559a7a,_0x3ddc65,_0x309bcf,'reason\x205\x20busy');}}break;case'8':_0xdb5161['outboundCongestionCallsDay']+=0x1;_0x559a7a[_0x27dc('0x9f')]=0x8;_0x559a7a['statedesc']=_0x27dc('0x1b8');_0x559a7a['countcongestionretry']+=0x1;_0x559a7a[_0x27dc('0xe3')]+=0x1;ami['emit'](_0x27dc('0x1b9'),ut['buildObj'](_0x2a465b,'congestion'));_0x2826eb[_0x27dc('0xc1')](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1ba')));if(_0x2826eb[_0x27dc('0x198')](0x8,_0x2a465b,_0xdb5161)){if(_0x559a7a[_0x27dc('0xf8')]>=_0xdb5161['dialCongestionMaxRetry']){_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1bb'));}else{_0x2826eb[_0x27dc('0xeb')](_0x559a7a,_0x3ddc65,_0x309bcf,'reason\x208\x20congestion');}}break;case'11':_0xdb5161['outboundAbandonedCallsDay']+=0x1;_0x559a7a[_0x27dc('0x9f')]=0xb;_0x559a7a['statedesc']=_0x27dc('0x114');_0x559a7a['countabandonedretry']+=0x1;_0x559a7a[_0x27dc('0xe3')]+=0x1;_0x2826eb[_0x27dc('0xc1')](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x118')));if(_0x2826eb[_0x27dc('0x198')](0xb,_0x2a465b,_0xdb5161)){if(_0x559a7a[_0x27dc('0xe8')]>=_0xdb5161[_0x27dc('0x115')]){_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,'reason\x2011\x20abandoned');}else{_0x2826eb['stateGlobal'](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1bc'));}}break;case'20':_0xdb5161[_0x27dc('0x5d')]+=0x1;_0x559a7a['state']=0x14;_0x559a7a[_0x27dc('0xa0')]='AgentReject';_0x559a7a['countagentrejectretry']+=0x1;_0x559a7a[_0x27dc('0xe3')]+=0x1;ami[_0x27dc('0x45')](_0x27dc('0x1bd'),ut[_0x27dc('0xde')](_0x2a465b,_0x27dc('0x1be')));_0x2826eb[_0x27dc('0xc1')](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1bf')));if(_0x2826eb[_0x27dc('0x198')](0x14,_0x2a465b,_0xdb5161)){if(_0x559a7a['countagentrejectretry']>=_0xdb5161[_0x27dc('0x1a2')]){_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1c0'));}else{_0x2826eb['stateGlobal'](_0x559a7a,_0x3ddc65,_0x309bcf,_0x27dc('0x1c0'));}}break;default:_0xdb5161[_0x27dc('0x5e')]+=0x1;_0x559a7a['state']=0xc;_0x559a7a['statedesc']=_0x7c88fe[_0x27dc('0x1a8')];_0x2826eb[_0x27dc('0xc1')](_0x559a7a)[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1c1')));if(_0x2826eb[_0x27dc('0x198')](_0x7c88fe[_0x27dc('0x1a8')],_0x2a465b,_0xdb5161)){if(_0x559a7a[_0x27dc('0xf7')]+_0x559a7a[_0x27dc('0xf8')]+_0x559a7a[_0x27dc('0xf9')]+_0x559a7a[_0x27dc('0xe6')]+_0x559a7a['countdropretry']+_0x559a7a[_0x27dc('0xe8')]+_0x559a7a['countmachineretry']+_0x559a7a[_0x27dc('0xe9')]>=_0xdb5161[_0x27dc('0xea')]){_0x2826eb[_0x27dc('0xeb')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x7c88fe[_0x27dc('0x1a8')]);}else{_0x2826eb[_0x27dc('0x1ac')](_0x559a7a,_0x3ddc65,_0x309bcf,_0x7c88fe[_0x27dc('0x1a8')]);}}}});};Dialer['prototype'][_0x27dc('0xeb')]=function(_0x5ad01f,_0x46ace6,_0xe17be2,_0x153cc3){var _0x320bd5=new Final(_0x5ad01f);_0x320bd5[_0x27dc('0x9f')]=0xf;_0x320bd5[_0x27dc('0xa0')]='Global';this[_0x27dc('0x1ac')](_0x320bd5,_0x46ace6,_0xe17be2,_0x153cc3);};Dialer['prototype']['createStateFinal']=function(_0xef2648,_0x26a8a2,_0x51ea73,_0x49f530){this['moveContactManagedDialer'](_0xef2648)[_0x27dc('0xb2')](function(){return _0x26a8a2(msgResponse(_0x27dc('0x1a5'),'Success',_0x49f530));})[_0x27dc('0xa8')](function(){return _0x51ea73(msgResponse(_0x27dc('0x1c2'),_0x27dc('0x13c'),_0x27dc('0x1c3')));});};Dialer[_0x27dc('0x18')][_0x27dc('0x154')]=function(_0x4ef51e){var _0x43e6b9=_0x4ef51e[_0x27dc('0x1c4')]/0x64;var _0x4fe6b5=_0x4ef51e['outboundDropCallsDayTimeout']/(_0x4ef51e[_0x27dc('0x59')]+_0x4ef51e[_0x27dc('0x56')]);var _0x53ad12=Math[_0x27dc('0x1c5')](_0x4ef51e['predictiveIntervalAvailable']*(_0x4ef51e[_0x27dc('0x1c6')]/0x64));var _0x58764d=Math['round'](_0x4ef51e[_0x27dc('0x67')]*(_0x4ef51e[_0x27dc('0x1c7')]/0x64));var _0x1045d9=_0x4ef51e[_0x27dc('0x48')]+_0x4ef51e[_0x27dc('0x4d')];var _0x3870e5=Math[_0x27dc('0x1c8')](_0x4ef51e[_0x27dc('0x69')]*_0x4ef51e[_0x27dc('0x6a')]*_0x4ef51e[_0x27dc('0x64')]*_0x4ef51e[_0x27dc('0x65')]);if(_['isUndefined'](_0x4ef51e['startProgressive'])){if(!_[_0x27dc('0x37')](_0x4ef51e['startPredictive'])){_0x4ef51e[_0x27dc('0x27')]=undefined;loggerPredictive[_0x27dc('0x8d')](_0x27dc('0x1c9'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_['isUndefined'](_0x4ef51e[_0x27dc('0x87')])){loggerPredictive['error']('[startMethodPredictive][StartProgressive]',_0x27dc('0x1ca'));clearInterval(_0x4ef51e[_0x27dc('0x87')]);_0x4ef51e[_0x27dc('0x87')]=undefined;}_0x4ef51e[_0x27dc('0x6c')]=moment()[_0x27dc('0x72')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x4ef51e['name'],'collection\x20data\x20in\x20progressive\x20at',_0x4ef51e[_0x27dc('0x6c')]);this[_0x27dc('0x151')](_0x4ef51e,0x1);}else if(ifInterval(_0x4ef51e[_0x27dc('0x1cb')],_0x4ef51e['startProgressive'])){this[_0x27dc('0x151')](_0x4ef51e,0x1);loggerPredictiveCalls[_0x27dc('0x75')](_0x27dc('0x1cc'),_0x4ef51e[_0x27dc('0x6c')],_0x4ef51e[_0x27dc('0x3a')]);_0x4ef51e[_0x27dc('0x69')]=0x0;_0x4ef51e[_0x27dc('0x63')]=0x0;}else if(_0x43e6b9<_0x4fe6b5&&_0x4ef51e['dialPredictiveOptimization']===_0x27dc('0x1cd')){freeVariablesPredictive(_0x4ef51e);loggerPredictive['info']('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day',_0x4fe6b5,_0x27dc('0x6c'),_0x4ef51e[_0x27dc('0x3a')]);}else if(_0x3870e5<_0x4ef51e['predictiveIntervalErlangCallsDroppedCalls']&&_0x4ef51e[_0x27dc('0x1ce')]===_0x27dc('0x1cd')){freeVariablesPredictive(_0x4ef51e);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x1cf'),_0x27dc('0x1d0'),_0x3870e5,_0x27dc('0x1d1'),_0x4ef51e['predictiveIntervalErlangCallsDroppedCalls'],_0x27dc('0x6c'),_0x4ef51e[_0x27dc('0x3a')]);}else if(!ifInterval(_0x4ef51e[_0x27dc('0x1cb')],_0x4ef51e[_0x27dc('0x6c')])&&_[_0x27dc('0x37')](_0x4ef51e[_0x27dc('0x27')])&&!_[_0x27dc('0x37')](_0x4ef51e[_0x27dc('0x6c')])){_0x4ef51e[_0x27dc('0x27')]=moment()[_0x27dc('0x72')](_0x27dc('0xf2'));loggerPredictive[_0x27dc('0x75')](_0x4ef51e[_0x27dc('0x3a')],'started\x20in\x20predictive\x20at',_0x4ef51e[_0x27dc('0x27')]);this[_0x27dc('0xb4')](_0x4ef51e['dialPredictiveInterval'])[_0x27dc('0xb2')](this[_0x27dc('0x1d2')](_0x4ef51e))[_0x27dc('0xb2')](mergeDataErlangB(_0x4ef51e))[_0x27dc('0xb2')](this[_0x27dc('0x1d3')](_0x4ef51e))[_0x27dc('0xa8')](loggerCatchPredictive(_0x27dc('0x1d4'),_0x4ef51e));}else if(!ifInterval(_0x4ef51e[_0x27dc('0x1cb')],_0x4ef51e['startPredictive'])){_0x4ef51e[_0x27dc('0x63')]=0x0;_0x4ef51e['startPredictive']=moment()[_0x27dc('0x72')](_0x27dc('0xf2'));loggerPredictive[_0x27dc('0x75')](_0x4ef51e[_0x27dc('0x3a')],_0x27dc('0x1d5'),_0x4ef51e['startPredictive']);clearInterval(_0x4ef51e[_0x27dc('0x87')]);_0x4ef51e['handlePredictive']=undefined;this[_0x27dc('0xb4')](_0x4ef51e[_0x27dc('0x1cb')])[_0x27dc('0xb2')](this[_0x27dc('0x1d2')](_0x4ef51e))[_0x27dc('0xb2')](mergeDataErlangB(_0x4ef51e))[_0x27dc('0xb2')](this['startMethodPredictive'](_0x4ef51e))[_0x27dc('0xa8')](loggerCatchPredictive(_0x27dc('0x1d6'),_0x4ef51e));}else if(_0x4ef51e[_0x27dc('0x67')]&&_0x1045d9<_0x4ef51e[_0x27dc('0x67')]-_0x58764d){freeVariablesPredictive(_0x4ef51e);loggerPredictive[_0x27dc('0x75')](_0x4ef51e[_0x27dc('0x3a')],_0x27dc('0x1d7'),_0x1045d9,_0x27dc('0x1d8'),_0x4ef51e['predictiveIntervalAvailable'],'-',_0x58764d,'=',_0x4ef51e[_0x27dc('0x67')]-_0x58764d,')');}else if(_0x4ef51e['predictiveIntervalAvailable']&&_0x1045d9>_0x4ef51e[_0x27dc('0x67')]+_0x53ad12){freeVariablesPredictive(_0x4ef51e);loggerPredictive[_0x27dc('0x75')](_0x4ef51e[_0x27dc('0x3a')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x1045d9,_0x27dc('0x1d9'),_0x4ef51e[_0x27dc('0x67')],'+',_0x53ad12,'=',_0x4ef51e[_0x27dc('0x67')]+_0x53ad12,')');}};Dialer['prototype']['getDataPredictive']=function(_0x2b63d2){var _0x2233aa=this;return function(_0x31d763){return new BPromise(function(_0x77f50b,_0x48468d){_[_0x27dc('0xc7')](_0x2b63d2,_0x31d763[0x0]);if(checkGetDataPredictive(_0x31d763[0x0])){var _0x20dfcd=_0x2b63d2[_0x27dc('0x67')]=_0x2b63d2[_0x27dc('0x4d')]+_0x2b63d2[_0x27dc('0x48')];var _0x1e1dae=_0x2b63d2[_0x27dc('0x1cb')]*0x3c;var _0xfdf9ee=_0x31d763[0x0][_0x27dc('0x60')]+_0x31d763[0x0][_0x27dc('0x5f')];var _0x808152=(_0x31d763[0x0][_0x27dc('0x79')]+_0x31d763[0x0][_0x27dc('0x61')]+_0x31d763[0x0][_0x27dc('0x7a')])/_0x31d763[0x0]['predictiveIntervalTotalCalls'];_0x2b63d2[_0x27dc('0x64')]=_0x808152>0x0?_0x808152:0x1;switch(_0x2b63d2[_0x27dc('0x1ce')]){case'dropRate':var _0x5cc24e=_0x2b63d2[_0x27dc('0x1c4')]/0x64;return _0x2233aa[_0x27dc('0x1da')](_0x20dfcd,_0x1e1dae,_0xfdf9ee,_0x808152,_0x5cc24e)['then'](function(_0x4cd5aa){return _0x77f50b(_0x4cd5aa);});case _0x27dc('0x1db'):var _0x1c94ec=_0x2b63d2[_0x27dc('0x1c4')]/0x64;return _0x2233aa[_0x27dc('0x1dc')](_0x20dfcd,_0x1e1dae,_0xfdf9ee,_0x808152,_0x1c94ec)['then'](function(_0x1f700d){return _0x77f50b(_0x1f700d);});default:return _0x48468d(msgResponse(_0x27dc('0x1dd'),_0x27dc('0x13c'),_0x27dc('0x1de')));}}else{return _0x48468d(msgResponse(_0x27dc('0x1dd'),_0x27dc('0x13c'),_0x27dc('0x1df')));}});};};Dialer[_0x27dc('0x18')][_0x27dc('0x1e0')]=function(_0x57a39d){var _0x4da4b1=this;return function(_0x1ee1b2){return new BPromise(function(_0x3fe161,_0x256a82){_[_0x27dc('0xc7')](_0x57a39d,_0x1ee1b2[0x0]);if(checkGetDataPredictive(_0x1ee1b2[0x0])){loggerPredictive[_0x27dc('0x75')](JSON[_0x27dc('0x42')](_0x1ee1b2[0x0]));if(_0x57a39d[_0x27dc('0x1ce')]===_0x27dc('0x1cd')){return _0x4da4b1[_0x27dc('0xbe')](_0x57a39d['id'])['then'](function(_0x34a319){var _0x2751bf=_0x57a39d['loggedIn']-_0x34a319[0x0]['outboundQueuePauses'];var _0xd5dc8f=_0x57a39d[_0x27dc('0x1cb')]*0x3c;var _0x312953=_0x1ee1b2[0x0][_0x27dc('0x60')]+_0x1ee1b2[0x0][_0x27dc('0x5f')];var _0x209fad=(_0x1ee1b2[0x0][_0x27dc('0x79')]+_0x1ee1b2[0x0][_0x27dc('0x61')]+_0x1ee1b2[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1ee1b2[0x0][_0x27dc('0x68')];var _0x79872a=_0x57a39d[_0x27dc('0x1c4')]/0x64;_0x57a39d[_0x27dc('0x66')]=_0x34a319[0x0][_0x27dc('0x1e1')]||0x0;_0x57a39d[_0x27dc('0x64')]=_0x209fad>0x0?_0x209fad:0x1;return _0x4da4b1[_0x27dc('0x1da')](_0x2751bf,_0xd5dc8f,_0x312953,_0x209fad,_0x79872a);})[_0x27dc('0xb2')](function(_0x509b42){return _0x3fe161(_0x509b42);})[_0x27dc('0xa8')](function(_0x3d18c7){return _0x256a82(msgResponse('[CatchErlangB]',_0x27dc('0x13c'),JSON['stringify'](_0x3d18c7)));});}if(_0x57a39d['dialPredictiveOptimization']==='agentBusyFactor'){return _0x4da4b1[_0x27dc('0xbe')](_0x57a39d['id'])[_0x27dc('0xb2')](function(_0x2b4869){var _0x1186c2=_0x57a39d[_0x27dc('0x49')]-_0x2b4869[0x0][_0x27dc('0x1e1')];var _0x350454=_0x57a39d[_0x27dc('0x1cb')]*0x3c;var _0x4fb31a=_0x1ee1b2[0x0][_0x27dc('0x60')]+_0x1ee1b2[0x0][_0x27dc('0x5f')];var _0x124c0d=(_0x1ee1b2[0x0][_0x27dc('0x79')]+_0x1ee1b2[0x0][_0x27dc('0x61')]+_0x1ee1b2[0x0][_0x27dc('0x7a')])/_0x1ee1b2[0x0]['predictiveIntervalTotalCalls'];var _0x305b55=_0x57a39d['dialPredictiveOptimizationPercentage']/0x64;_0x57a39d[_0x27dc('0x66')]=_0x2b4869[0x0][_0x27dc('0x1e1')]||0x0;_0x57a39d[_0x27dc('0x64')]=_0x124c0d>0x0?_0x124c0d:0x1;return _0x4da4b1[_0x27dc('0x1dc')](_0x1186c2,_0x350454,_0x4fb31a,_0x124c0d,_0x305b55);})[_0x27dc('0xb2')](function(_0x26095e){return _0x3fe161(_0x26095e);})[_0x27dc('0xa8')](function(_0x703eb6){return _0x256a82(msgResponse(_0x27dc('0x1e2'),_0x27dc('0x13c'),JSON[_0x27dc('0x42')](_0x703eb6)));});}}else{return _0x256a82(msgResponse(_0x27dc('0x1dd'),'Failure',_0x27dc('0x1df')));}});};};Dialer[_0x27dc('0x18')][_0x27dc('0x1d3')]=function(_0x319e22){var _0x54a1d9=this;return function(){var _0x117ce8=0x0;var _0x102786=Math[_0x27dc('0x1c8')](_0x319e22[_0x27dc('0x83')]*0x3e8);if(_0x102786>0x0){_0x102786=_0x102786<0x64?0x64:_0x102786;loggerPredictive[_0x27dc('0x75')](_0x319e22['name'],_0x27dc('0x1e3'),_0x102786,_0x27dc('0x1e4'));_0x319e22['handlePredictive']=setInterval(function(){_0x54a1d9[_0x27dc('0x87')](_0x319e22);loggerPredictiveCalls['info'](_0x27dc('0x1e5'),_0x117ce8+=0x1);},_0x102786);}else{loggerPredictive[_0x27dc('0x75')](_0x319e22[_0x27dc('0x3a')],_0x27dc('0x1e6'));}};};Dialer[_0x27dc('0x18')][_0x27dc('0x1e7')]=function(_0x4d156b,_0x23ab52){var _0x51108f=this;return function(_0x2c0b92){if(_['isEmpty'](_0x2c0b92)){if(_[_0x27dc('0xd3')](_0x23ab52['UserId'])||!_0x23ab52[_0x27dc('0x1e8')]){if(_0x4d156b[_0x27dc('0x14f')]==='booked'){_0x4d156b[_0x27dc('0x124')]=_[_0x27dc('0x37')](_0x4d156b[_0x27dc('0x124')])?!![]:_0x4d156b[_0x27dc('0x124')];var _0xc21509=uuid['v4']();_0x51108f[_0x27dc('0x24')][_0xc21509]=new Action(_0x4d156b,_0x23ab52,_0xc21509);loggerBooked['info'](_0x27dc('0x1e9'),_0xc21509,_0x27dc('0x1ea'),JSON[_0x27dc('0x42')](_0x4d156b[_0x27dc('0x124')]),_0x27dc('0x1eb'),_0x4d156b[_0x27dc('0x3a')]);if(_0x4d156b['queueStatusComplete']){_0x4d156b[_0x27dc('0x124')]=![];_0x51108f[_0x27dc('0x120')][_0x51108f[_0x27dc('0x24')][_0xc21509][_0x27dc('0xab')]]=[];ami[_0x27dc('0xa7')]({'actionid':_0xc21509,'action':_0x27dc('0x1ec'),'queue':_0x4d156b[_0x27dc('0x3a')]})[_0x27dc('0xa8')](function(){_0x51108f[_0x27dc('0xaa')](_0x4d156b);_0x51108f[_0x27dc('0xb7')]({'active':![],'ContactId':_0x51108f[_0x27dc('0x24')][_0xc21509]['ContactId'],'ListId':_0x51108f[_0x27dc('0x24')][_0xc21509]['ListId'],'VoiceQueueId':_0x51108f[_0x27dc('0x24')][_0xc21509][_0x27dc('0xca')]||undefined,'CampaignId':_0x51108f['actions'][_0xc21509][_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1ed')));delete _0x51108f[_0x27dc('0x24')][_0xc21509];});}else{loggerBooked[_0x27dc('0x75')](_0x27dc('0x1ee'),JSON[_0x27dc('0x42')](_0x4d156b[_0x27dc('0x124')]),_0x27dc('0x1eb'),_0x4d156b['name']);_0x51108f[_0x27dc('0xaa')](_0x4d156b);_0x51108f['rescheduleContact']({'active':![],'ContactId':_0x51108f[_0x27dc('0x24')][_0xc21509][_0x27dc('0xf3')],'ListId':_0x51108f[_0x27dc('0x24')][_0xc21509]['ListId'],'VoiceQueueId':_0x51108f[_0x27dc('0x24')][_0xc21509][_0x27dc('0xca')]||undefined,'CampaignId':_0x51108f[_0x27dc('0x24')][_0xc21509][_0x27dc('0xcb')]||undefined})['catch'](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x51108f['actions'][_0xc21509];}}else{return _0x51108f[_0x27dc('0x162')](_0x4d156b,_0x23ab52);}}else{if(getDiff(_0x23ab52[_0x27dc('0x1ef')])<_0x4d156b['dialRecallMeTimeout']*0x3c){if(_0x23ab52[_0x27dc('0x1f0')]&&!_0x23ab52[_0x27dc('0x1f0')][_0x27dc('0x1f1')]){_0x51108f['preview'][_0x27dc('0x126')](_0x23ab52['id'])[_0x27dc('0x1b')](function(){_0x51108f[_0x27dc('0xaa')](_0x4d156b);});}else{_0x51108f['unlockContact']({'active':![]},_0x23ab52['id'],0x1)[_0x27dc('0x1b')](function(){_0x51108f['updateOriginated'](_0x4d156b);});}}else{_0x4d156b[_0x27dc('0x5c')]+=0x1;_0x51108f[_0x27dc('0xaa')](_0x4d156b);if(_0x4d156b[_0x27dc('0x1f2')]){_0x51108f[_0x27dc('0xb7')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x23ab52['ContactId'],'ListId':_0x23ab52[_0x27dc('0xc9')],'VoiceQueueId':_0x23ab52['VoiceQueueId']||undefined,'CampaignId':_0x23ab52[_0x27dc('0xcb')]||undefined})[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x1f3')));_0x51108f['createHistory'](createObjHistory(_0x4d156b,_0x23ab52,_0x27dc('0x1f4'),0x17,_0x27dc('0x1f5')))['catch'](loggerCatch(_0x27dc('0x1f6')));}else{_0x51108f[_0x27dc('0xc6')](createObjHistory(_0x4d156b,_0x23ab52,_0x27dc('0x1f7'),0x16,_0x27dc('0x1f8')),_0x27dc('0x1f9'),'[Originate][HistoryRecallClose]');}}}}else{_0x4d156b[_0x27dc('0x1fa')]+=0x1;_0x51108f[_0x27dc('0xc6')](createObjHistory(_0x4d156b,_0x23ab52,'BLACKLIST',0xd,_0x27dc('0x1fb')),_0x27dc('0x1fc'),_0x27dc('0x1fd'));throw'inBlackList';}};};Dialer[_0x27dc('0x18')][_0x27dc('0x158')]=function(_0x89cc5c){var _0x1d58b8=this;var _0x315d9c=_0x89cc5c[_0x27dc('0x1fe')]-_0x89cc5c[_0x27dc('0x91')]-_0x89cc5c['temp'];emitCampaignSummary(_0x89cc5c);if(_0x315d9c>0x0){if(_0x315d9c>this['maxNumberOriginate']){_0x315d9c=this[_0x27dc('0x22')];}_0x89cc5c[_0x27dc('0xbb')]+=_0x315d9c;this['getContactDialerIvr'](_0x89cc5c['id'],_0x315d9c,_0x89cc5c[_0x27dc('0x1ff')],_0x89cc5c)[_0x27dc('0xb2')](function(_0x4c1b26){_0x89cc5c[_0x27dc('0xbb')]-=_0x315d9c;_0x89cc5c[_0x27dc('0xbb')]=_0x89cc5c[_0x27dc('0xbb')]>0x0?_0x89cc5c[_0x27dc('0xbb')]:0x0;if(!checkContactEmpty(_0x4c1b26)){_0x89cc5c[_0x27dc('0x38')]=_0x27dc('0x96');logger['info'](_0x27dc('0x200')+_0x89cc5c[_0x27dc('0x3a')]);}else{_0x89cc5c[_0x27dc('0x91')]+=_0x4c1b26[_0x27dc('0x12b')];_0x89cc5c[_0x27dc('0x38')]=_0x27dc('0x201');for(var _0x66e002=0x0;_0x66e002<_0x4c1b26[_0x27dc('0x12b')];_0x66e002+=0x1){_0x89cc5c[_0x27dc('0x202')]+=0x1;if(_[_0x27dc('0xd3')](_0x4c1b26[_0x66e002])||_['isNil'](_0x4c1b26[_0x66e002]['Contact'])||_['isNil'](_0x4c1b26[_0x66e002][_0x27dc('0x165')][_0x27dc('0x164')])){_0x1d58b8['emptyContact'](_0x27dc('0x203'),_0x89cc5c,_0x4c1b26[_0x66e002]);}else{_0x1d58b8['checkIsBlackListIvr'](_[_0x27dc('0xc8')](_0x4c1b26[_0x66e002],[_0x27dc('0xcb'),_0x27dc('0x204')]))[_0x27dc('0xb2')](_0x1d58b8[_0x27dc('0x1e7')](_0x89cc5c,_0x4c1b26[_0x66e002]))[_0x27dc('0xa8')](_0x1d58b8[_0x27dc('0xc4')](_0x27dc('0x205'),_0x89cc5c));}}}})['catch'](loggerGetContactDialer(_0x27dc('0x206'),_0x89cc5c,_0x315d9c));}};Dialer[_0x27dc('0x18')][_0x27dc('0x151')]=function(_0x5c00f7,_0x89cbf3){var _0x2fc48f=this;var _0x3c6d18=[];var _0x168f75=_0x89cbf3>=0x1?_0x89cbf3:0x1;if(_0x5c00f7[_0x27dc('0x14f')]===_0x27dc('0x155')){_0x168f75=0x1;}var _0x40117e=Math[_0x27dc('0x1c8')](_0x5c00f7['available']*_0x168f75)-_0x5c00f7['originated']-_0x5c00f7[_0x27dc('0xbb')];emitVoiceQueueSummary(_0x5c00f7);if(_0x5c00f7[_0x27dc('0x207')]>0x0){var _0x32f76c=_0x5c00f7[_0x27dc('0x207')]-_0x5c00f7[_0x27dc('0x91')]-_0x5c00f7[_0x27dc('0x4d')]-_0x5c00f7[_0x27dc('0xbb')]-_0x5c00f7['pTalking'];if(_0x40117e>_0x32f76c){_0x40117e=_0x32f76c;}}if(_0x40117e>0x0){if(_0x5c00f7[_0x27dc('0x14f')]===_0x27dc('0x155')){_0x40117e=0x1;}if(_0x40117e>this[_0x27dc('0x22')]){_0x40117e=this[_0x27dc('0x22')];}_0x5c00f7[_0x27dc('0xbb')]+=_0x40117e;for(var _0x5a9305 in this[_0x27dc('0x20')]){if(typeof this[_0x27dc('0x20')][_0x5a9305]!==_0x27dc('0x90')){if(this[_0x27dc('0x20')][_0x5a9305][_0x27dc('0x9f')]===_0x27dc('0x208')&&this[_0x27dc('0x20')][_0x5a9305]['status']===_0x27dc('0xd1')){_0x3c6d18['push'](this[_0x27dc('0x20')][_0x5a9305]['id']);}}}this[_0x27dc('0xba')](_0x5c00f7['id'],_0x3c6d18,_0x40117e,_0x5c00f7[_0x27dc('0x1ff')],_0x5c00f7)[_0x27dc('0xb2')](function(_0x20bc7c){_0x5c00f7[_0x27dc('0xbb')]-=_0x40117e;_0x5c00f7[_0x27dc('0xbb')]=_0x5c00f7[_0x27dc('0xbb')]>0x0?_0x5c00f7[_0x27dc('0xbb')]:0x0;if(!checkContactEmpty(_0x20bc7c)){_0x2fc48f[_0x27dc('0xad')](_0x5c00f7)[_0x27dc('0xb2')](sendMessageReschedule(_0x5c00f7))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x5c00f7[_0x27dc('0x91')]+=_0x20bc7c[_0x27dc('0x12b')];_0x5c00f7[_0x27dc('0x38')]=_0x5c00f7[_0x27dc('0x14f')]==='booked'?'ACTIVE':_0x27dc('0x201');for(var _0x28211c=0x0;_0x28211c<_0x20bc7c[_0x27dc('0x12b')];_0x28211c+=0x1){if(_[_0x27dc('0xd3')](_0x20bc7c[_0x28211c])||_[_0x27dc('0xd3')](_0x20bc7c[_0x28211c][_0x27dc('0x165')])||_[_0x27dc('0xd3')](_0x20bc7c[_0x28211c][_0x27dc('0x165')]['phone'])){_0x2fc48f[_0x27dc('0x209')]('[actionOriginate]\x20',_0x5c00f7,_0x20bc7c[_0x28211c]);}else{_0x2fc48f[_0x27dc('0xaf')](_[_0x27dc('0xc8')](_0x20bc7c[_0x28211c],[_0x27dc('0xca'),'Contact.phone']))[_0x27dc('0xb2')](_0x2fc48f['checkContactBlack'](_0x5c00f7,_0x20bc7c[_0x28211c]))['catch'](_0x2fc48f[_0x27dc('0xc4')]('[actionOriginate]\x20',_0x5c00f7));}}}})[_0x27dc('0xa8')](loggerGetContactDialer(_0x27dc('0x20a'),_0x5c00f7,_0x40117e));}};Dialer['prototype'][_0x27dc('0x87')]=function(_0x4bcea1){if(_0x4bcea1[_0x27dc('0x207')]>0x0){var _0x3698a3=_0x4bcea1[_0x27dc('0x207')]-_0x4bcea1['originated']-_0x4bcea1[_0x27dc('0x4d')];if(_0x3698a3>0x0){this[_0x27dc('0x20b')](_0x4bcea1);}else{loggerPredictiveCalls[_0x27dc('0x75')](_0x27dc('0x20c'));}}else{this['tryOriginatePredictive'](_0x4bcea1);}};Dialer['prototype']['tryOriginatePredictive']=function(_0x335ff9){var _0xac59ff=this;var _0x6a25a8=[];_0x335ff9[_0x27dc('0x91')]+=0x1;for(var _0x2f0854 in this[_0x27dc('0x20')]){if(typeof this[_0x27dc('0x20')][_0x2f0854]!==_0x27dc('0x90')){if(this['agents'][_0x2f0854][_0x27dc('0x9f')]===_0x27dc('0x208')&&this[_0x27dc('0x20')][_0x2f0854][_0x27dc('0xd0')]==='reachable'){_0x6a25a8[_0x27dc('0x121')](this[_0x27dc('0x20')][_0x2f0854]['id']);}}}this['getContactDialer'](_0x335ff9['id'],_0x6a25a8,0x1,_0x335ff9[_0x27dc('0x1ff')],_0x335ff9)[_0x27dc('0xb2')](function(_0x1bc181){if(!checkContactEmpty(_0x1bc181)){checkContactLowerLimitOriginate(_0x335ff9,0x1,0x0);_0xac59ff[_0x27dc('0xad')](_0x335ff9)[_0x27dc('0xb2')](sendMessageReschedule(_0x335ff9))[_0x27dc('0xa8')](loggerCatch(_0x27dc('0x20d')));}else{_0x335ff9['message']=_0x27dc('0x201');if(_[_0x27dc('0xd3')](_0x1bc181[0x0])||_[_0x27dc('0xd3')](_0x1bc181[0x0][_0x27dc('0x165')])||_[_0x27dc('0xd3')](_0x1bc181[0x0][_0x27dc('0x165')]['phone'])){_0xac59ff['emptyContact'](_0x27dc('0x203'),_0x335ff9,_0x1bc181[0x0]);}else{_0xac59ff[_0x27dc('0xaf')](_['pick'](_0x1bc181[0x0],[_0x27dc('0xca'),_0x27dc('0x204')]))['then'](_0xac59ff[_0x27dc('0x1e7')](_0x335ff9,_0x1bc181[0x0]))['catch'](_0xac59ff[_0x27dc('0xc4')](_0x27dc('0x20e'),_0x335ff9));}}})['catch'](loggerGetContactDialer('[getContactDialerPredictive]',_0x335ff9,0x1));emitVoiceQueueSummary(_0x335ff9);};Dialer[_0x27dc('0x18')]['abandonmentRate']=function(_0x25bd6a,_0x4d10af,_0x58d7d3,_0x2e39a6,_0x53fdcd,_0x1e6c0d){loggerPredictive[_0x27dc('0x75')](_0x27dc('0x20f'));loggerPredictive[_0x27dc('0x75')](_0x27dc('0x210'),_0x25bd6a);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x211'),_0x4d10af);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x212'),_0x58d7d3);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x213'),_0x2e39a6);loggerPredictive['info'](_0x27dc('0x214'),_0x53fdcd);loggerPredictive[_0x27dc('0x75')]('---------------------------');return new BPromise(function(_0x27aedb,_0x195b07){if(_0x25bd6a<=0x0||isNaN(_0x25bd6a)){return _0x195b07(msgResponse(_0x27dc('0x215'),_0x27dc('0x41'),_0x27dc('0x216')+_0x25bd6a));}if(_0x58d7d3<=0x0||isNaN(_0x58d7d3)){return _0x195b07(msgResponse(_0x27dc('0x215'),_0x27dc('0x41'),_0x27dc('0x217')+_0x58d7d3));}if(_0x2e39a6<=0x0||isNaN(_0x2e39a6)){return _0x195b07(msgResponse(_0x27dc('0x215'),'Error',_0x27dc('0x218')+_0x2e39a6));}if(_0x4d10af<=0x0||isNaN(_0x4d10af)){return _0x195b07(msgResponse(_0x27dc('0x215'),_0x27dc('0x41'),'interval\x20=\x20'+_0x4d10af));}if(_0x53fdcd<=0x0||isNaN(_0x53fdcd)){return _0x195b07(msgResponse(_0x27dc('0x215'),_0x27dc('0x41'),_0x27dc('0x219')+_0x53fdcd));}_0x1e6c0d=_0x1e6c0d||0x0;var _0x1aabc=0x1/_0x58d7d3;var _0x38acfb=0x0;var _0x35ce20=0x0;var _0x1c3e8d=0x0;var _0x21ecfa=0x0;for(var _0x121b64=0x0;_0x1c3e8d<_0x53fdcd;_0x121b64+=0x1){_0x35ce20=_0x121b64/_0x4d10af;_0x38acfb=(_0x2e39a6*_0x35ce20+_0x1e6c0d)/_0x1aabc;_0x1c3e8d=erlangb(_0x38acfb,_0x25bd6a);_0x21ecfa=_0x38acfb/_0x25bd6a*(0x1-erlangb(_0x38acfb,_0x25bd6a));}return _0x27aedb({'erlangCalls':_0x121b64,'erlangCallToSecond':_0x4d10af/_0x121b64,'erlangAbandonmentRate':_0x1c3e8d,'erlangBusyFactor':_0x21ecfa});});};Dialer['prototype']['busyFactor']=function(_0x1e0620,_0x32527e,_0x21c980,_0x34989b,_0x4a1af2,_0x149f5c){loggerPredictive[_0x27dc('0x75')]('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0x27dc('0x75')](_0x27dc('0x210'),_0x1e0620);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x211'),_0x32527e);loggerPredictive['info'](_0x27dc('0x212'),_0x21c980);loggerPredictive[_0x27dc('0x75')](_0x27dc('0x213'),_0x34989b);loggerPredictive['info'](_0x27dc('0x21a'),_0x4a1af2);loggerPredictive[_0x27dc('0x75')]('---------------------------');return new BPromise(function(_0x4b3b5f,_0x246587){if(_0x1e0620<=0x0||isNaN(_0x1e0620)){return _0x246587(msgResponse('[busyFactor]','Error','m\x20=\x20'+_0x1e0620));}if(_0x21c980<=0x0||isNaN(_0x21c980)){return _0x246587(msgResponse(_0x27dc('0x21b'),_0x27dc('0x41'),_0x27dc('0x217')+_0x21c980));}if(_0x34989b<=0x0||isNaN(_0x34989b)){return _0x246587(msgResponse(_0x27dc('0x21b'),_0x27dc('0x41'),_0x27dc('0x218')+_0x34989b));}if(_0x32527e<=0x0||isNaN(_0x32527e)){return _0x246587(msgResponse('[busyFactor]',_0x27dc('0x41'),'interval\x20=\x20'+_0x32527e));}if(_0x4a1af2<=0x0||isNaN(_0x4a1af2)){return _0x246587(msgResponse(_0x27dc('0x21b'),_0x27dc('0x41'),_0x27dc('0x21c')+_0x4a1af2));}_0x149f5c=_0x149f5c||0x0;var _0x30c67f=0x1/_0x21c980;var _0x3be92f=0x0;var _0x36e3f8=0x0;var _0x4e07f8=0x0;var _0x116f0f=0x0;for(var _0x220c56=0x0;_0x116f0f<_0x4a1af2;_0x220c56+=0x1){_0x36e3f8=_0x220c56/_0x32527e;_0x3be92f=(_0x34989b*_0x36e3f8+_0x149f5c)/_0x30c67f;_0x4e07f8=erlangb(_0x3be92f,_0x1e0620);_0x116f0f=_0x3be92f/_0x1e0620*(0x1-erlangb(_0x3be92f,_0x1e0620));}return _0x4b3b5f({'erlangCalls':_0x220c56,'erlangCallToSecond':_0x32527e/_0x220c56,'erlangAbandonmentRate':_0x4e07f8,'erlangBusyFactor':_0x116f0f});});};module['exports']=Dialer;
\ No newline at end of file
+var _0x3750=['checkDialMethod','checkIsTrunkReachable','dialGlobalInterval','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','object','originate','phone','Contact','contact\x20is\x20undefine','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','dialAMDInitialSilence','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','tags','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','originatecalleridnum','dialPrefix','trim','dialCutDigit','substring','SIP/%s/%s%s','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','getQueue','response','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[callProgressDetecting]','entity\x20is\x20undefine','evt\x20is\x20undefine','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','createStateFinal','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','noanswer','[syncAgentComplete][createHistory][3]','dialNoAnswerMaxRetry','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','custom:agentcongestion','congestion','dialCongestionMaxRetry','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalAvailable','[startMethodPredictive][StartProgressive]','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','predictiveIntervalErlangCallsDroppedCalls','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','dialPredictiveOptimization','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','floor','one\x20call\x20every:','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','Agent','voicePause','unlockContact','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','[actionOriginate]\x20','Contact.phone','[actionOriginateIvr]\x20','dialLimitQueue','reachable','ACTIVE','[getContactDialer2]','tryOriginatePredictive','not_inuse','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','interval\x20=\x20','Amax\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','[busyFactor]','m\x20=\x20','Umin\x20=\x20','exports','util','lodash','bluebird','uuid','moment','ioredis','../preview/util/util','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','env','127.0.0.1','roundrobin','enqueue','tail','finally','sequence','campaigns','agents','trunks','maxNumberOriginate','channels','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','custom:queuesummary','newexten','syncNewExten','varset','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopClearZombieChannels','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','name','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','outbound','strategy','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','md5','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','info','-----\x20Stats\x20Predictive\x20---','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','isUndefined','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCallToSecond','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','clearing\x20variable\x20start\x20progressive','handlePredictive','preview','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','error','inspect','length','originated','undefined','[decremetOriginate]\x20is\x20null\x20or\x20undefined','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','sendMessageOneNotActive','talking','available','[syncQueueSummary]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','state','starttime','prototype','clearZombieChannels','uniqueId','[uniqueid]','actions','[actions]','Action','status','catch','No\x20such\x20channel','updateOriginated','voiceQueues','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','checkIsBlackListIvr','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','loggerHandler','emptyContact','notFound','saveInDb','pick','ListId','CampaignId','[emptyContact][createHistory]','[emptyContact]','Success','SIP/%s','unmonitored','syncVarSet','uniqueid','isNil','variable','amdstatus','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerCallsDay','HangupInAMD','membername','emit','custom:amd','buildObj','amd','[syncHangupInAMD]','MACHINE','statedesc','Machine','AMD','countmachineretry','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','dialGlobalMaxRetry','dialMachineMaxRetry','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','VoiceQueueId','[rescheduleContact][Machine]','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','stateGlobal','reason19\x20machine....','syncHangup','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','dialQueueProject','AnswerAGI','AGI','outboundUnknownCallsDay','cause-txt','Unknow','[syncHangupIvr]','syncAgentComplete','reason','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','Drop','dropreason','TIMEOUT','dialDropMaxRetry','dialDropRetryFrequency','[rescheduleContact][Drop]','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','countabandonedretry','add','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','channel','actionid','paused','stateinterface','locked','rrmemory','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','loopCampaigns','syncCampaigns','isTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','checkIfTimeIntervals','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','interval','indexOf','true','iftime\x20%s,%s','timezones','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','dialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','dialTimezone'];(function(_0x252690,_0x242f7d){var _0xeb0a8d=function(_0x1a3614){while(--_0x1a3614){_0x252690['push'](_0x252690['shift']());}};_0xeb0a8d(++_0x242f7d);}(_0x3750,0xbb));var _0x0375=function(_0x511e82,_0x5c8e7b){_0x511e82=_0x511e82-0x0;var _0x32bc8e=_0x3750[_0x511e82];return _0x32bc8e;};'use strict';var util=require(_0x0375('0x0'));var _=require(_0x0375('0x1'));var BPromise=require(_0x0375('0x2'));var uuid=require(_0x0375('0x3'));var moment=require(_0x0375('0x4'));var rr=require('rr');var md5=require('md5');var Redis=require(_0x0375('0x5'));var ut=require(_0x0375('0x6'));var config=require('../../../config/environment/');var logger=require(_0x0375('0x7'))(_0x0375('0x8'));var loggerBooked=require(_0x0375('0x7'))(_0x0375('0x9'));var loggerPredictive=require(_0x0375('0x7'))(_0x0375('0xa'));var loggerPredictiveCalls=require('../../../config/logger')(_0x0375('0xb'));var loggerSyncQueueSummary=require(_0x0375('0x7'))(_0x0375('0xc'));var ami=require(_0x0375('0xd'));config[_0x0375('0xe')]=_[_0x0375('0xf')](config['redis'],{'host':_0x0375('0x10'),'port':0x18eb});var io=require(_0x0375('0x11'))(new Redis(config[_0x0375('0xe')]));var cmHopper=require(_0x0375('0x12'));var cmHopperHistory=require(_0x0375('0x13'));var cmHopperBlack=require(_0x0375('0x14'));var voiceQueueRt=require(_0x0375('0x15'));var Action=require(_0x0375('0x16'));var History=require(_0x0375('0x17'));var Final=require(_0x0375('0x18'));var AgentComplete=require(_0x0375('0x19'));var QueueCallerAbandon=require(_0x0375('0x1a'));var Hangup=require('./hangup');var ipAgi=process[_0x0375('0x1b')]['XCALLY_IP_AGI']||_0x0375('0x1c');var strategy={'rrmemory':'rrmemory','roundrobin':_0x0375('0x1d')};var Sequence=function(){};Sequence['prototype'][_0x0375('0x1e')]=function(_0x3126f6){this[_0x0375('0x1f')]=this[_0x0375('0x1f')]?this[_0x0375('0x1f')][_0x0375('0x20')](_0x3126f6):_0x3126f6();};function Dialer(_0x3585a0,_0x94acd1){this[_0x0375('0x21')]=new Sequence();this['preview']=_0x94acd1;this['voiceQueues']=_0x3585a0['voiceQueues'];this[_0x0375('0x22')]=_0x3585a0['campaigns'];this['agents']=_0x3585a0[_0x0375('0x23')];this[_0x0375('0x24')]=_0x3585a0[_0x0375('0x24')];this['maxNumberOriginate']=config[_0x0375('0x25')]||0x2;this[_0x0375('0x26')]={};this['actions']={};this['contactsId']={};this['uniqueId']={};this[_0x0375('0x27')]={};this['startPredictive']={};this[_0x0375('0x28')]={};this[_0x0375('0x29')]={};this[_0x0375('0x2a')]={};this[_0x0375('0x2b')]={};ami['on'](_0x0375('0x2c'),this['syncAgentConnect'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x2e'),this[_0x0375('0x2f')]['bind'](this));ami['on'](_0x0375('0x30'),this[_0x0375('0x31')][_0x0375('0x2d')](this));ami['on'](_0x0375('0x32'),this['syncAgentComplete'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x33'),this['syncQueueSummary']['bind'](this));ami['on']('hangup',this['syncHangup'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x34'),this[_0x0375('0x35')]['bind'](this));ami['on'](_0x0375('0x36'),this['syncVarSet'][_0x0375('0x2d')](this));ami['on'](_0x0375('0x37'),this[_0x0375('0x38')][_0x0375('0x2d')](this));ami['on'](_0x0375('0x39'),this[_0x0375('0x3a')][_0x0375('0x2d')](this));this['loopCampaigns']();this[_0x0375('0x3b')]();}function isNotNull(_0x3162d2){return _0x3162d2!==null&&!_['isUndefined'](_0x3162d2);}function checkIsLoggedIn(_0x17a4eb,_0x550de3){return function(){if(_0x550de3<=0x0){_0x17a4eb[_0x0375('0x3c')]=_0x0375('0x3d');throw _0x17a4eb['name']+_0x0375('0x3e');}};}function isActive(_0x226c7c){return _0x226c7c;}function checkIsActive(_0x5891c5,_0x502762){return function(){if(!isActive(_0x502762)){_0x5891c5[_0x0375('0x3c')]=_0x0375('0x3f');throw _0x5891c5[_0x0375('0x40')]+'\x20NOT\x20Active';}};}function checkInterval(_0x4d24be){return function(){if(!isNotNull(_0x4d24be[_0x0375('0x41')])){_0x4d24be[_0x0375('0x3c')]=_0x0375('0x42');throw _0x4d24be[_0x0375('0x40')]+_0x0375('0x43');}if(!isNotNull(_0x4d24be['Interval']['Intervals'])){_0x4d24be['message']='INTERVAL_IS_NULL';throw _0x4d24be['name']+_0x0375('0x43');}if(!isNotNull(_[_0x0375('0x44')](_0x4d24be[_0x0375('0x41')][_0x0375('0x45')]))){_0x4d24be[_0x0375('0x3c')]='INTERVAL_IS_NULL';throw _0x4d24be[_0x0375('0x40')]+_0x0375('0x43');}};}function msgResponse(_0x506832,_0x1e8473,_0x3c82c1){return{'action':_0x506832,'response':_0x1e8473,'message':_0x3c82c1,'stack':_0x3c82c1};}function myreject(_0x714dc9){return function(_0xc2c399){return _0x714dc9(msgResponse(_0x0375('0x46'),_0x0375('0x47'),JSON[_0x0375('0x48')](_0xc2c399)));};}function getSeconds(_0x1d552e,_0x4e0150){var _0x3adc51=moment(_0x1d552e)[_0x0375('0x49')](0x0);var _0x13f893=moment(_0x4e0150)[_0x0375('0x49')](0x0);return _0x3adc51[_0x0375('0x4a')](_0x13f893,_0x0375('0x4b'));}function emit(_0x586e11,_0x2536a0,_0x523097){io['to'](_0x586e11)['emit'](_0x2536a0,_0x523097);}function emitVoiceQueueSummary(_0x62ce0b){if(_0x62ce0b['type']===_0x0375('0x4c')){var _0x480cbb={'id':_0x62ce0b['id'],'name':_0x62ce0b[_0x0375('0x40')],'strategy':_0x62ce0b[_0x0375('0x4d')],'answered':_0x62ce0b['answered'],'available':_0x62ce0b['available'],'loggedIn':_0x62ce0b[_0x0375('0x4e')],'pTalking':_0x62ce0b[_0x0375('0x4f')],'sumBillable':_0x62ce0b[_0x0375('0x50')],'sumDuration':_0x62ce0b[_0x0375('0x51')],'sumHoldTime':_0x62ce0b[_0x0375('0x52')]||0x0,'talking':_0x62ce0b['talking'],'total':_0x62ce0b[_0x0375('0x53')],'type':_0x62ce0b[_0x0375('0x54')],'unmanaged':_0x62ce0b[_0x0375('0x55')],'abandoned':_0x62ce0b[_0x0375('0x56')],'waiting':_0x62ce0b[_0x0375('0x57')],'loggedInDb':_0x62ce0b[_0x0375('0x58')],'dialActive':_0x62ce0b[_0x0375('0x59')],'dialMethod':_0x62ce0b['dialMethod'],'dialOriginateCallerIdName':_0x62ce0b[_0x0375('0x5a')],'dialOriginateCallerIdNumber':_0x62ce0b[_0x0375('0x5b')],'dialOriginateTimeout':_0x62ce0b[_0x0375('0x5c')],'dialPrefix':_0x62ce0b['dialPrefix'],'outboundAnswerAgiCallsDay':_0x62ce0b[_0x0375('0x5d')],'outboundAnswerCallsDay':_0x62ce0b['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x62ce0b[_0x0375('0x5e')],'outboundBusyCallsDay':_0x62ce0b[_0x0375('0x5f')],'outboundCongestionCallsDay':_0x62ce0b[_0x0375('0x60')],'outboundDropCallsDayACS':_0x62ce0b['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x62ce0b[_0x0375('0x61')],'outboundDropCallsDayTimeout':_0x62ce0b[_0x0375('0x62')],'outboundNoAnswerCallsDay':_0x62ce0b[_0x0375('0x63')],'outboundNoSuchCallsDay':_0x62ce0b['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x62ce0b[_0x0375('0x64')],'outboundReCallsDay':_0x62ce0b[_0x0375('0x65')],'outboundRejectCallsDay':_0x62ce0b[_0x0375('0x66')],'outboundUnknownCallsDay':_0x62ce0b['outboundUnknownCallsDay'],'predictiveIntervalAnsweredCalls':_0x62ce0b[_0x0375('0x67')],'predictiveIntervalAvgHoldtime':_0x62ce0b['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x62ce0b[_0x0375('0x68')],'predictiveIntervalDroppedCallsCallersExit':_0x62ce0b[_0x0375('0x69')],'predictiveIntervalDroppedCallsTimeout':_0x62ce0b['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x62ce0b['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x62ce0b['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x62ce0b[_0x0375('0x6a')],'predictiveIntervalMultiplicativeFactor':_0x62ce0b[_0x0375('0x6b')],'predictiveIntervalPauses':_0x62ce0b[_0x0375('0x6c')],'predictiveIntervalAvailable':_0x62ce0b['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x62ce0b[_0x0375('0x6d')],'message':_0x62ce0b['message'],'originated':_0x62ce0b['originated'],'erlangCalls':_0x62ce0b[_0x0375('0x6e')],'erlangCallToSecond':_0x62ce0b['erlangCallToSecond'],'erlangAbandonmentRate':_0x62ce0b[_0x0375('0x6f')],'erlangBusyFactor':_0x62ce0b[_0x0375('0x70')],'startPredictive':_0x62ce0b[_0x0375('0x71')],'startProgressive':_0x62ce0b[_0x0375('0x28')]};if(_0x62ce0b[_0x0375('0x72')]){_0x480cbb['Trunk']={'id':_0x62ce0b[_0x0375('0x72')]['id'],'name':_0x62ce0b[_0x0375('0x72')][_0x0375('0x40')],'active':_0x62ce0b['Trunk'][_0x0375('0x73')],'callerid':_0x62ce0b[_0x0375('0x72')][_0x0375('0x74')]};}if(_0x62ce0b['Interval']){_0x480cbb['Interval']={'id':_0x62ce0b[_0x0375('0x41')]['id'],'name':_0x62ce0b[_0x0375('0x41')][_0x0375('0x40')]};}var _0x3360a4=md5(JSON[_0x0375('0x48')](_0x480cbb));if(_0x62ce0b[_0x0375('0x75')]!==_0x3360a4){_0x62ce0b[_0x0375('0x75')]=_0x3360a4;emit(util[_0x0375('0x76')](_0x0375('0x77'),_0x480cbb['name']),_0x0375('0x78'),_0x480cbb);}}}function emitCampaignSummary(_0x3008f3){if(_0x3008f3[_0x0375('0x54')]===_0x0375('0x79')){emit(util[_0x0375('0x76')](_0x0375('0x7a'),_0x3008f3[_0x0375('0x40')]),'campaign:save',_0x3008f3);}}function checkGetDataPredictive(_0x1e84c3){if(isNotNull(_0x1e84c3)&&!_['isEmpty'](_0x1e84c3)){loggerPredictive[_0x0375('0x7b')](_0x0375('0x7c'));loggerPredictive[_0x0375('0x7b')](_0x0375('0x7d'),_0x1e84c3[_0x0375('0x6d')]);loggerPredictive[_0x0375('0x7b')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e84c3['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x0375('0x7b')](_0x0375('0x7e'),_0x1e84c3[_0x0375('0x7f')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x80'),_0x1e84c3[_0x0375('0x69')]);loggerPredictive[_0x0375('0x7b')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1e84c3[_0x0375('0x81')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x82'),_0x1e84c3[_0x0375('0x68')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));if(_0x1e84c3[_0x0375('0x6d')]>0x0){if(!_[_0x0375('0x84')](_0x1e84c3[_0x0375('0x68')])&&_0x1e84c3[_0x0375('0x68')]>0x0){return!![];}loggerPredictive['info']('Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive');if(!_['isUndefined'](_0x1e84c3[_0x0375('0x81')])&&_0x1e84c3[_0x0375('0x81')]>0x0){return!![];}loggerPredictive[_0x0375('0x7b')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive['info'](_0x0375('0x85'));}}else{loggerPredictive[_0x0375('0x7b')](_0x0375('0x86'));}return![];}function mergeDataErlangB(_0x25e63b){return function(_0x2be455){loggerPredictive['info'](_0x0375('0x87'));loggerPredictive[_0x0375('0x7b')](_0x0375('0x88'),_0x2be455['erlangCalls']);loggerPredictive['info'](_0x0375('0x89'),_0x2be455[_0x0375('0x8a')]);loggerPredictive[_0x0375('0x7b')](_0x0375('0x8b'),_0x2be455[_0x0375('0x6f')]);loggerPredictive['info'](_0x0375('0x8c'),_0x2be455[_0x0375('0x70')]);loggerPredictive['info'](_0x0375('0x8b'),_0x2be455['erlangAbandonmentRate']);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));_[_0x0375('0x8d')](_0x25e63b,_0x2be455);};}function getDiff(_0x1f527a){var _0x4b55ba=moment()[_0x0375('0x49')](0x0);var _0x295040=moment(_0x1f527a)[_0x0375('0x49')](0x0);return _0x4b55ba['diff'](_0x295040,_0x0375('0x4b'));}function ifInterval(_0x5bf49f,_0x1afa5b){if(_[_0x0375('0x84')](_0x1afa5b)){return![];}return getDiff(_0x1afa5b)<_0x5bf49f*0x3c;}function freeVariablesPredictive(_0x27806f){if(isNotNull(_0x27806f)){if(!_[_0x0375('0x84')](_0x27806f[_0x0375('0x28')])){_0x27806f['startProgressive']=undefined;loggerPredictive['info'](_0x27806f[_0x0375('0x40')],_0x0375('0x8e'));}if(!_[_0x0375('0x84')](_0x27806f[_0x0375('0x71')])){_0x27806f[_0x0375('0x71')]=undefined;loggerPredictive[_0x0375('0x7b')](_0x27806f[_0x0375('0x40')],'clearing\x20variable\x20start\x20predictive');}if(!_[_0x0375('0x84')](_0x27806f['handlePredictive'])){clearInterval(_0x27806f['handlePredictive']);_0x27806f[_0x0375('0x8f')]=undefined;loggerPredictive[_0x0375('0x7b')](_0x27806f[_0x0375('0x40')],'clearing\x20variable\x20handle\x20predictive');}}}function erlangb(_0x582885,_0x19610c){if(_0x19610c===0x0){return 0x0;}var _0x2226eb=0x1;for(var _0x33e84c=0x1;_0x33e84c<=_0x19610c;_0x33e84c+=0x1){_0x2226eb=0x1+_0x2226eb*_0x33e84c/_0x582885;}return 0x1/_0x2226eb;}function isVoiceQueueOutbound(_0x50c957){return _0x50c957===_0x0375('0x4c');}function isNotPreview(_0x4a5fc0){return _0x4a5fc0!==_0x0375('0x90');}function isCampaignIvr(_0x477605){return _0x477605===_0x0375('0x79');}function getCallerId(_0x3e98e9,_0x89f29e,_0x5d9483){if(!_[_0x0375('0x84')](_0x5d9483)&&typeof _0x5d9483==='string'&&!_[_0x0375('0x44')](_0x5d9483)){if(!_[_0x0375('0x84')](_0x89f29e)&&typeof _0x89f29e===_0x0375('0x91')&&!_[_0x0375('0x44')](_0x89f29e)){return util[_0x0375('0x76')](_0x0375('0x92'),_0x89f29e,_0x5d9483);}return util[_0x0375('0x76')](_0x0375('0x92'),_0x5d9483,_0x5d9483);}if(!_[_0x0375('0x84')](_0x3e98e9)&&typeof _0x3e98e9===_0x0375('0x91')&&!_[_0x0375('0x44')](_0x3e98e9)){return _0x3e98e9;}return _0x0375('0x93');}function loggerCatchQueueSummary(_0x570425,_0x5116c6){return function(_0x1c098a){freeVariablesPredictive(_0x5116c6);emitVoiceQueueSummary(_0x5116c6);emitCampaignSummary(_0x5116c6);loggerSyncQueueSummary[_0x0375('0x94')](_0x570425,util[_0x0375('0x95')](_0x1c098a,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x11827a,_0x4a536a){return function(_0x455e){loggerPredictive['error'](_0x4a536a[_0x0375('0x40')],_0x11827a);loggerPredictive[_0x0375('0x94')](_0x455e['stack']);freeVariablesPredictive(_0x4a536a);};}function loggerCatch(_0x2f610d){return function(_0x438622){logger[_0x0375('0x94')](_0x2f610d,util[_0x0375('0x95')](_0x438622,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x5049c3){return _0x5049c3&&!_[_0x0375('0x84')](_0x5049c3)&&_0x5049c3[_0x0375('0x96')]>0x0;}function decremetOriginate(_0xdade95){if(!_[_0x0375('0x84')](_0xdade95)&&_0xdade95!==null){if(typeof _0xdade95[_0x0375('0x97')]!==_0x0375('0x98')){if(_0xdade95[_0x0375('0x97')]>0x0){_0xdade95[_0x0375('0x97')]-=0x1;}else{logger[_0x0375('0x94')]('[decremetOriginate]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0x0375('0x94')](_0x0375('0x99'));}}function checkContactLowerLimitOriginate(_0x40d223,_0x55440a,_0x7eb8e7){if(_0x55440a>_0x7eb8e7){for(var _0x1848d9=0x0;_0x1848d9<_0x55440a-_0x7eb8e7;_0x1848d9+=0x1){decremetOriginate(_0x40d223);}}}function loggerGetContactDialer(_0x1d4229,_0x278783,_0x54decb){return function(_0x5778b3){checkContactLowerLimitOriginate(_0x278783,_0x54decb,0x0);logger[_0x0375('0x94')](_0x1d4229,util[_0x0375('0x95')](_0x5778b3,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x60297f){return function(_0x28cf3b){if(isNotNull(_0x28cf3b)&&isNotNull(_0x28cf3b[0x0])){if(_0x28cf3b[0x0][_0x0375('0x9a')]>0x0){_0x60297f['message']=_0x0375('0x9b');logger[_0x0375('0x7b')](_0x0375('0x9c')+_0x60297f[_0x0375('0x40')],_0x28cf3b[0x0][_0x0375('0x9a')],'contacts');}else{_0x60297f[_0x0375('0x3c')]=_0x0375('0x9d');logger[_0x0375('0x7b')]('[getContactDialer2][Empty]'+_0x60297f[_0x0375('0x40')]);}}};}function notSendMessagesQueue(_0x266123){if(_0x266123[_0x0375('0x9e')]){freeVariablesPredictive(_0x266123);if(_0x266123['originated']===0x0&&_0x266123[_0x0375('0x9f')]===0x0&&_0x266123[_0x0375('0x57')]===0x0&&(_0x266123[_0x0375('0x4f')]||0x0)===0x0){_0x266123[_0x0375('0x9e')]=![];_0x266123[_0x0375('0xa0')]=0x0;_0x266123[_0x0375('0x3c')]='NOT_ACTIVE';loggerSyncQueueSummary[_0x0375('0x94')](_0x0375('0xa1'),_0x266123[_0x0375('0x40')],'is\x20not\x20active');}else{_0x266123[_0x0375('0x3c')]=_0x0375('0xa2');loggerSyncQueueSummary['error'](_0x0375('0xa1'),_0x266123[_0x0375('0x40')],_0x0375('0xa3'));}emitVoiceQueueSummary(_0x266123);}}function notSendMessagesCampaign(_0x41a905){if(_0x41a905[_0x0375('0x9e')]){if(_0x41a905[_0x0375('0x97')]===0x0){_0x41a905[_0x0375('0x9e')]=![];_0x41a905[_0x0375('0x3c')]=_0x0375('0x3f');loggerSyncQueueSummary['error'](_0x0375('0xa4'),_0x41a905['name'],_0x0375('0xa5'));}else{_0x41a905[_0x0375('0x3c')]='IS_DISACTIVED';loggerSyncQueueSummary[_0x0375('0x94')](_0x0375('0xa4'),_0x41a905[_0x0375('0x40')],_0x0375('0xa3'));}emitCampaignSummary(_0x41a905);}}function createObjHistory(_0x15cea3,_0x2b89a7,_0x588fce,_0xbe8f3f,_0x47310d){_0x15cea3[_0x0375('0x3c')]=_0x588fce;var _0x244fb1=new Action(_0x15cea3,_0x2b89a7);var _0x50fbfb=new History(_0x244fb1);_0x50fbfb[_0x0375('0xa6')]=_0xbe8f3f;_0x50fbfb['statedesc']=_0x47310d;_0x50fbfb['endtime']=_0x244fb1[_0x0375('0xa7')];return _0x50fbfb;}Dialer[_0x0375('0xa8')][_0x0375('0x3b')]=function(){var _0x6baa39=this;setInterval(function(){_0x6baa39[_0x0375('0xa9')](_0x6baa39[_0x0375('0xaa')],_0x0375('0xab'));_0x6baa39[_0x0375('0xa9')](_0x6baa39[_0x0375('0xac')],_0x0375('0xad'));},0x32c8);};Dialer[_0x0375('0xa8')]['clearZombieChannels']=function(_0x5c17fb,_0x4157d){var _0x3a9e75=this;for(var _0x4daf0d in _0x5c17fb){if(typeof _0x5c17fb[_0x4daf0d]!==_0x0375('0x98')){this[_0x0375('0x21')][_0x0375('0x1e')](function(){if(!_['isNil'](_0x5c17fb[_0x4daf0d])){return ami[_0x0375('0xae')]({'action':_0x0375('0xaf'),'channel':_0x5c17fb[_0x4daf0d]['channel']})[_0x0375('0xb0')](function(_0x7adfc8){if(_0x7adfc8[_0x0375('0x3c')]===_0x0375('0xb1')){setTimeout(function(){if(_0x5c17fb[_0x4daf0d]&&_0x5c17fb[_0x4daf0d][_0x0375('0x54')]!=='ivr'){_0x3a9e75[_0x0375('0xb2')](_0x3a9e75[_0x0375('0xb3')][_0x5c17fb[_0x4daf0d][_0x0375('0xb4')]]);logger[_0x0375('0x94')](_0x0375('0xb5'),_0x4157d,_0x4daf0d,_0x5c17fb[_0x4daf0d][_0x0375('0xb4')]);delete _0x5c17fb[_0x4daf0d];}if(_0x5c17fb[_0x4daf0d]&&_0x5c17fb[_0x4daf0d][_0x0375('0x54')]===_0x0375('0x79')){_0x3a9e75[_0x0375('0xb2')](_0x3a9e75[_0x0375('0x22')][_0x5c17fb[_0x4daf0d]['queue']]);logger['error'](_0x0375('0xb6'),_0x4157d,_0x4daf0d,_0x5c17fb[_0x4daf0d][_0x0375('0xb4')]);delete _0x5c17fb[_0x4daf0d];}},0x2328);}});}});}}};Dialer[_0x0375('0xa8')][_0x0375('0xb7')]=function(_0x365d53){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopper['countReScheduled'](_0x365d53))[_0x0375('0xb0')](loggerCatch(_0x0375('0xba')));};Dialer[_0x0375('0xa8')][_0x0375('0xbb')]=function(_0x562ce1){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopperBlack[_0x0375('0xbb')](_0x562ce1))[_0x0375('0xb0')](loggerCatch(_0x0375('0xbc')));};Dialer[_0x0375('0xa8')][_0x0375('0xbd')]=function(_0x2aae3a){return BPromise[_0x0375('0xb8')]()['then'](cmHopperBlack[_0x0375('0xbd')](_0x2aae3a))[_0x0375('0xb0')](loggerCatch('[checkIsBlackListIvr]\x20'));};Dialer[_0x0375('0xa8')][_0x0375('0xbe')]=function(_0x56abdb){return BPromise[_0x0375('0xb8')]()['then'](cmHopperHistory[_0x0375('0xbf')](_0x56abdb))[_0x0375('0xb0')](loggerCatch(_0x0375('0xc0')));};Dialer[_0x0375('0xa8')]['rescheduleContact']=function(_0x58cd94){return BPromise['resolve']()[_0x0375('0xb9')](cmHopper[_0x0375('0xc1')](_0x58cd94))[_0x0375('0xb0')](loggerCatch(_0x0375('0xc2')));};Dialer[_0x0375('0xa8')]['unlockContact']=function(_0x1c72df,_0x55302b,_0x2d98d1){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopper['unlockContact'](_0x1c72df,_0x55302b,_0x2d98d1))[_0x0375('0xb0')](loggerCatch(_0x0375('0xc3')));};Dialer[_0x0375('0xa8')][_0x0375('0xc4')]=function(_0x4e5b3b,_0x3a8dc1,_0x104b43,_0x2a13ab,_0x4a180d){return BPromise['resolve']()[_0x0375('0xb9')](cmHopper[_0x0375('0xc4')](_0x4e5b3b,_0x3a8dc1,_0x104b43,_0x2a13ab))['catch'](function(_0x8c9b15){_0x4a180d[_0x0375('0xc5')]-=_0x104b43;_0x4a180d[_0x0375('0xc5')]=_0x4a180d['temp']>0x0?_0x4a180d[_0x0375('0xc5')]:0x0;loggerCatch(_0x0375('0xc6'))(_0x8c9b15);});};Dialer[_0x0375('0xa8')]['getContactDialerIvr']=function(_0x316e80,_0x3ebe46,_0x3846e4,_0x596b8b){return BPromise['resolve']()['then'](cmHopper[_0x0375('0xc7')](_0x316e80,_0x3ebe46,_0x3846e4))[_0x0375('0xb0')](function(_0x4994a2){_0x596b8b[_0x0375('0xc5')]-=_0x3ebe46;_0x596b8b['temp']=_0x596b8b['temp']>0x0?_0x596b8b['temp']:0x0;loggerCatch(_0x0375('0xc8'))(_0x4994a2);});};Dialer['prototype'][_0x0375('0xc9')]=function(_0x1badc6){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](voiceQueueRt[_0x0375('0xc9')](_0x1badc6))[_0x0375('0xb0')](loggerCatch(_0x0375('0xca')));};Dialer[_0x0375('0xa8')][_0x0375('0xcb')]=function(_0x52f6de){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopper[_0x0375('0xcb')](_0x52f6de))[_0x0375('0xb0')](loggerCatch(_0x0375('0xcc')));};Dialer[_0x0375('0xa8')][_0x0375('0xcd')]=function(_0x10316f){return BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](cmHopperHistory[_0x0375('0xcd')](_0x10316f))[_0x0375('0xb0')](loggerCatch(_0x0375('0xce')));};Dialer['prototype'][_0x0375('0xb2')]=function(_0x3e696c){if(!_[_0x0375('0x84')](_0x3e696c)&&_0x3e696c!==null){if(typeof _0x3e696c['originated']!==_0x0375('0x98')){if(_0x3e696c[_0x0375('0x97')]>0x0){_0x3e696c[_0x0375('0x97')]-=0x1;}else{logger[_0x0375('0x94')](_0x0375('0xcf'));}}}else{logger[_0x0375('0x94')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x0375('0xa8')][_0x0375('0xd0')]=function(_0x3233e4,_0x58af24){var _0x12a1e2=this;return function(_0x207e49){_0x12a1e2[_0x0375('0xb2')](_0x58af24);logger[_0x0375('0x94')](_0x3233e4,util[_0x0375('0x95')](_0x207e49,{'showHidden':![],'depth':null}));};};Dialer[_0x0375('0xa8')][_0x0375('0xd1')]=function(_0x134c28,_0x59cbec,_0x375b6a){var _0x315d6d={'state':0x19,'statedesc':_0x0375('0xd2')};this[_0x0375('0xb2')](_0x59cbec);this[_0x0375('0xd3')](_['merge'](_0x315d6d,_[_0x0375('0xd4')](_0x375b6a,['ContactId',_0x0375('0xd5'),'UserId','VoiceQueueId',_0x0375('0xd6')])),_0x0375('0xd7'),_0x0375('0xd8'));logger[_0x0375('0x94')](_0x134c28);};Dialer[_0x0375('0xa8')]['isSuccess']=function(_0x6b827b){return _0x6b827b===_0x0375('0xd9');};Dialer[_0x0375('0xa8')]['isTrunkReachable']=function(_0x3bad9b){return!_[_0x0375('0x84')](_0x3bad9b)&&_0x3bad9b&&!_[_0x0375('0x84')](_0x3bad9b[_0x0375('0x40')])&&!_[_0x0375('0x84')](_0x3bad9b[_0x0375('0x73')])&&_0x3bad9b[_0x0375('0x73')]&&(this[_0x0375('0x24')][util[_0x0375('0x76')]('SIP/%s',_0x3bad9b[_0x0375('0x40')])][_0x0375('0xaf')]==='reachable'||this['trunks'][util[_0x0375('0x76')](_0x0375('0xda'),_0x3bad9b[_0x0375('0x40')])][_0x0375('0xaf')]===_0x0375('0xdb'));};Dialer['prototype'][_0x0375('0xd3')]=function(_0x10d62c,_0x4696b9,_0x591506){this[_0x0375('0xcd')](_0x10d62c)[_0x0375('0xb0')](loggerCatch(_0x4696b9));this[_0x0375('0xcb')](_0x10d62c)[_0x0375('0xb0')](loggerCatch(_0x591506));};Dialer['prototype'][_0x0375('0xdc')]=function(_0x1fb524){var _0xd9bdf9=this['uniqueId'][_0x1fb524[_0x0375('0xdd')]];var _0x160a6c;if(!_[_0x0375('0xde')](_0x1fb524)&&!_[_0x0375('0xde')](_0x1fb524[_0x0375('0xdf')])&&!_['isNil'](_0x1fb524['variable'][_0x0375('0xe0')])&&_0x1fb524['exten']===_0x0375('0xe1')&&_0xd9bdf9){if(_0xd9bdf9[_0x0375('0x54')]!==_0x0375('0x79')&&this[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0xe2')]&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xe4')){delete this[_0x0375('0xaa')][_0x1fb524[_0x0375('0xdd')]];this[_0x0375('0xb2')](this[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]]);this['voiceQueues'][_0xd9bdf9['queue']][_0x0375('0xe5')]+=0x1;this[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0x5d')]+=0x1;_0x160a6c=new Hangup(_0xd9bdf9,_0x1fb524);_0x160a6c[_0x0375('0xa6')]=0x12;_0x160a6c['statedesc']=_0x0375('0xe6');_0x160a6c[_0x0375('0xe7')]='AMD';ami[_0x0375('0xe8')](_0x0375('0xe9'),ut[_0x0375('0xea')](_0x160a6c,_0x0375('0xeb')));this[_0x0375('0xd3')](_0x160a6c,'[syncHangupInAMD][createHistory]',_0x0375('0xec'));}if(_0xd9bdf9[_0x0375('0x54')]!==_0x0375('0x79')&&this[_0x0375('0xb3')][_0xd9bdf9['queue']]['dialAMDActive']&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xed')){var _0x33304a=this;return new BPromise(function(_0x28a440,_0x28d4db){delete _0x33304a[_0x0375('0xaa')][_0x1fb524[_0x0375('0xdd')]];_0x33304a[_0x0375('0xb2')](_0x33304a[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]]);_0x33304a[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0xe5')]+=0x1;_0x33304a['voiceQueues'][_0xd9bdf9['queue']][_0x0375('0x5d')]+=0x1;var _0x2fd517=_0x33304a[_0x0375('0xb3')][_0xd9bdf9[_0x0375('0xb4')]];var _0x14c3b7=new Hangup(_0xd9bdf9,_0x1fb524);_0x14c3b7[_0x0375('0xa6')]=0x13;_0x14c3b7[_0x0375('0xee')]=_0x0375('0xef');_0x14c3b7[_0x0375('0xe7')]=_0x0375('0xf0');_0x14c3b7[_0x0375('0xf1')]+=0x1;_0x14c3b7[_0x0375('0xf2')]+=0x1;_0x14c3b7[_0x0375('0xeb')]=!![];ami[_0x0375('0xe8')](_0x0375('0xe9'),ut['buildObj'](_0x14c3b7,_0x0375('0xeb')));_0x33304a[_0x0375('0xcd')](_0x14c3b7)[_0x0375('0xb0')](loggerCatch(_0x0375('0xf3')));if(_0x14c3b7[_0x0375('0xf4')]+_0x14c3b7[_0x0375('0xf5')]+_0x14c3b7[_0x0375('0xf6')]+_0x14c3b7[_0x0375('0xf7')]+_0x14c3b7[_0x0375('0xf8')]+_0x14c3b7['countabandonedretry']+_0x14c3b7['countmachineretry']+_0x14c3b7[_0x0375('0xf9')]>=_0x2fd517[_0x0375('0xfa')]){_0x33304a['stateGlobal'](_0x14c3b7,_0x28a440,_0x28d4db,'reason19\x20machine....');}else{if(_0x14c3b7[_0x0375('0xf1')]>=_0x2fd517[_0x0375('0xfb')]){_0x33304a['createStateFinal'](_0x14c3b7,_0x28a440,_0x28d4db,_0x0375('0xfc'));}else{_0x33304a[_0x0375('0xc1')]({'active':![],'countmachineretry':_0x14c3b7[_0x0375('0xf1')],'scheduledat':moment()['add'](_0x2fd517[_0x0375('0xfd')],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x14c3b7[_0x0375('0x100')],'ListId':_0x14c3b7[_0x0375('0xd5')],'VoiceQueueId':_0x14c3b7[_0x0375('0x101')]||undefined,'CampaignId':_0x14c3b7[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x102')));_0x28a440({'reschedule':0x1});}}});}if(_0xd9bdf9[_0x0375('0x54')]==='ivr'&&this[_0x0375('0x22')][_0xd9bdf9['queue']][_0x0375('0xe2')]&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xe4')){delete this['uniqueId'][_0x1fb524[_0x0375('0xdd')]];this['updateOriginated'](this[_0x0375('0x22')][_0xd9bdf9['queue']]);_0x160a6c=new Hangup(_0xd9bdf9,_0x1fb524);_0x160a6c[_0x0375('0xa6')]=0x12;_0x160a6c[_0x0375('0xee')]=_0x0375('0xe6');_0x160a6c[_0x0375('0xe7')]=_0x0375('0xf0');ami[_0x0375('0xe8')](_0x0375('0xe9'),ut[_0x0375('0xea')](_0x160a6c,'amd'));this[_0x0375('0xd3')](_0x160a6c,_0x0375('0x103'),_0x0375('0x104'));}if(_0xd9bdf9['type']===_0x0375('0x79')&&this[_0x0375('0x22')][_0xd9bdf9['queue']]['dialAMDActive']&&_0x1fb524[_0x0375('0xe3')]===_0x0375('0xed')){var _0x33304a=this;return new BPromise(function(_0x54267f,_0x1bbe44){delete _0x33304a[_0x0375('0xaa')][_0x1fb524['uniqueid']];_0x33304a[_0x0375('0xb2')](_0x33304a[_0x0375('0x22')][_0xd9bdf9['queue']]);_0x33304a['campaigns'][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0xe5')]+=0x1;_0x33304a[_0x0375('0x22')][_0xd9bdf9[_0x0375('0xb4')]][_0x0375('0x5d')]+=0x1;var _0x42d39c=_0x33304a[_0x0375('0x22')][_0xd9bdf9['queue']];var _0x4fef39=new Hangup(_0xd9bdf9,_0x1fb524);_0x4fef39[_0x0375('0xa6')]=0x13;_0x4fef39[_0x0375('0xee')]=_0x0375('0xef');_0x4fef39[_0x0375('0xe7')]='AMD';_0x4fef39[_0x0375('0xf1')]+=0x1;_0x4fef39[_0x0375('0xf2')]+=0x1;_0x4fef39['amd']=!![];ami[_0x0375('0xe8')](_0x0375('0xe9'),ut[_0x0375('0xea')](_0x4fef39,_0x0375('0xeb')));_0x33304a[_0x0375('0xcd')](_0x4fef39)[_0x0375('0xb0')](loggerCatch(_0x0375('0xf3')));if(_0x4fef39[_0x0375('0xf4')]+_0x4fef39[_0x0375('0xf5')]+_0x4fef39[_0x0375('0xf6')]+_0x4fef39[_0x0375('0xf7')]+_0x4fef39[_0x0375('0xf8')]+_0x4fef39['countabandonedretry']+_0x4fef39['countmachineretry']+_0x4fef39[_0x0375('0xf9')]>=_0x42d39c[_0x0375('0xfa')]){_0x33304a[_0x0375('0x105')](_0x4fef39,_0x54267f,_0x1bbe44,_0x0375('0x106'));}else{if(_0x4fef39['countmachineretry']>=_0x42d39c[_0x0375('0xfb')]){_0x33304a['createStateFinal'](_0x4fef39,_0x54267f,_0x1bbe44,_0x0375('0xfc'));}else{_0x33304a['rescheduleContact']({'active':![],'countmachineretry':_0x4fef39[_0x0375('0xf1')],'scheduledat':moment()['add'](_0x42d39c['dialMachineRetryFrequency'],_0x0375('0xfe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4fef39[_0x0375('0x100')],'ListId':_0x4fef39[_0x0375('0xd5')],'VoiceQueueId':_0x4fef39[_0x0375('0x101')]||undefined,'CampaignId':_0x4fef39['CampaignId']||undefined})['catch'](loggerCatch(_0x0375('0x102')));_0x54267f({'reschedule':0x1});}}});}}};Dialer[_0x0375('0xa8')][_0x0375('0x107')]=function(_0x3c1745){var _0x5d493a=this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];var _0x68574d=this;var _0x19e744;if(_0x5d493a&&_0x5d493a[_0x0375('0x54')]==='ivr'){delete this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];this[_0x0375('0xb2')](this[_0x0375('0x22')][_0x5d493a[_0x0375('0xb4')]]);this[_0x0375('0x22')][_0x5d493a['queue']][_0x0375('0x108')]+=0x1;_0x19e744=new Hangup(_0x5d493a,_0x3c1745);this[_0x0375('0xcd')](_0x19e744)[_0x0375('0xb0')](loggerCatch(_0x0375('0x109')));this[_0x0375('0xcb')](_0x19e744)[_0x0375('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x5d493a&&_0x5d493a['type']!==_0x0375('0x79')&&isNotNull(this['voiceQueues'][_0x5d493a[_0x0375('0xb4')]][_0x0375('0x10a')])){delete this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];this['updateOriginated'](this[_0x0375('0xb3')][_0x5d493a[_0x0375('0xb4')]]);this[_0x0375('0xb3')][_0x5d493a[_0x0375('0xb4')]][_0x0375('0xe5')]+=0x1;this[_0x0375('0xb3')][_0x5d493a['queue']][_0x0375('0x5d')]+=0x1;_0x19e744=new Hangup(_0x5d493a,_0x3c1745);_0x19e744['state']=0x10;_0x19e744[_0x0375('0xee')]=_0x0375('0x10b');_0x19e744[_0x0375('0xe7')]=_0x0375('0x10c');this[_0x0375('0xcd')](_0x19e744)[_0x0375('0xb0')](loggerCatch(_0x0375('0x109')));this['moveContactManagedDialer'](_0x19e744)[_0x0375('0xb0')](loggerCatch('[syncHangupIvr]'));}if(_0x5d493a&&_0x5d493a[_0x0375('0x54')]!==_0x0375('0x79')&&!isNotNull(this[_0x0375('0xb3')][_0x5d493a[_0x0375('0xb4')]]['dialQueueProject'])){delete this[_0x0375('0xaa')][_0x3c1745[_0x0375('0xdd')]];this[_0x0375('0xb2')](this['voiceQueues'][_0x5d493a[_0x0375('0xb4')]]);this[_0x0375('0xb3')][_0x5d493a['queue']][_0x0375('0x10d')]+=0x1;_0x19e744=new Hangup(_0x5d493a,_0x3c1745);_0x19e744[_0x0375('0xa6')]=0xc;_0x19e744['statedesc']=_0x3c1745[_0x0375('0x10e')];_0x19e744[_0x0375('0xe7')]=_0x0375('0x10f');this[_0x0375('0xcd')](_0x19e744)[_0x0375('0xb0')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0x0375('0xcb')](_0x19e744)[_0x0375('0xb0')](loggerCatch(_0x0375('0x110')));}};Dialer[_0x0375('0xa8')][_0x0375('0x111')]=function(_0x77c560){var _0x4f896f=this['uniqueId'][_0x77c560[_0x0375('0xdd')]];var _0x43fac4=this;if(this[_0x0375('0xb3')][_0x77c560[_0x0375('0xb4')]]){if(_0x4f896f&&_0x4f896f['type']!==_0x0375('0x79')){delete this[_0x0375('0xaa')][_0x77c560[_0x0375('0xdd')]];this[_0x0375('0xb3')][_0x77c560['queue']]['outboundAnswerCallsDay']+=0x1;var _0x3319e0=new AgentComplete(_0x4f896f,_0x77c560);if(_0x77c560[_0x0375('0x112')]===_0x0375('0x113')){_0x3319e0[_0x0375('0x114')]=this[_0x0375('0xb3')][_0x77c560[_0x0375('0xb4')]][_0x0375('0x115')]&&this[_0x0375('0xb3')][_0x77c560[_0x0375('0xb4')]][_0x0375('0x116')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0x0375('0xcd')](_0x3319e0)['catch'](loggerCatch(_0x0375('0x117')));this[_0x0375('0xcb')](_0x3319e0)[_0x0375('0xb0')](loggerCatch(_0x0375('0x118')));}}};Dialer['prototype']['syncAgentConnect']=function(_0x1713a5){if(this[_0x0375('0xb3')][_0x1713a5[_0x0375('0xb4')]]){if(this['uniqueId'][_0x1713a5[_0x0375('0xdd')]]&&this[_0x0375('0xaa')][_0x1713a5['uniqueid']][_0x0375('0x54')]!==_0x0375('0x79')){this['updateOriginated'](this['voiceQueues'][_0x1713a5['queue']]);this[_0x0375('0xaa')][_0x1713a5[_0x0375('0xdd')]]['answertime']=moment()[_0x0375('0x76')](_0x0375('0xff'));}}};Dialer[_0x0375('0xa8')][_0x0375('0x119')]=function(_0x573898){this[_0x0375('0xcd')](_0x573898)[_0x0375('0xb0')](loggerCatch(_0x0375('0x117')));this[_0x0375('0xcb')](_0x573898)['catch'](loggerCatch(_0x0375('0x11a')));};Dialer[_0x0375('0xa8')][_0x0375('0x2f')]=function(_0x4067e4){var _0x47817f=this[_0x0375('0xaa')][_0x4067e4[_0x0375('0xdd')]];var _0xfaf673=this;if(this[_0x0375('0xb3')][_0x4067e4['queue']]){if(_0x47817f&&_0x47817f['type']!==_0x0375('0x79')){delete this[_0x0375('0xaa')][_0x4067e4['uniqueid']];this[_0x0375('0xb2')](this[_0x0375('0xb3')][_0x4067e4['queue']]);_0x47817f[_0x0375('0x11b')]=moment()['format'](_0x0375('0xff'));var _0x59f903=new QueueCallerAbandon(_0x47817f,_0x4067e4);if(getSeconds(_0x47817f[_0x0375('0x11b')],_0x47817f[_0x0375('0x11c')])>=_0x47817f['dialQueueTimeout']){this['voiceQueues'][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x7f')]+=0x1;this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x62')]+=0x1;this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x59f903['state']=0xa;_0x59f903[_0x0375('0xee')]=_0x0375('0x11d');_0x59f903[_0x0375('0x11e')]=_0x0375('0x11f');_0x59f903[_0x0375('0x114')]=this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x115')]?moment()[_0x0375('0x76')]('YYYY-MM-DD\x20HH:mm:ss'):undefined;_0x59f903[_0x0375('0xf8')]+=0x1;_0x59f903['countglobal']+=0x1;if(_0x59f903[_0x0375('0xf8')]>=this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x120')]){this['queueCallerAbandonCreateState'](_0x59f903);}else{this['rescheduleContact']({'active':![],'countdropretry':_0x59f903[_0x0375('0xf8')],'scheduledat':moment()['add'](this['voiceQueues'][_0x4067e4['queue']][_0x0375('0x121')],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x47817f[_0x0375('0x100')],'ListId':_0x47817f[_0x0375('0xd5')],'VoiceQueueId':_0x47817f[_0x0375('0x101')]||undefined,'CampaignId':_0x47817f['CampaignId']||undefined})['catch'](loggerCatch(_0x0375('0x122')));var _0x20758e=new History(_0x59f903);_0x20758e[_0x0375('0xa6')]=0xa;_0x20758e[_0x0375('0xee')]=_0x0375('0x11d');_0x20758e['starttime']=moment()[_0x0375('0x76')]('YYYY-MM-DD\x20HH:mm:ss');_0x20758e[_0x0375('0x123')]=_0x20758e[_0x0375('0xa7')];_0x20758e[_0x0375('0x124')]=_0x59f903[_0x0375('0x124')];_0x20758e[_0x0375('0x125')]=_0x59f903['calleridnum'];this[_0x0375('0xcd')](_0x20758e)[_0x0375('0xb0')](loggerCatch(_0x0375('0x126')));}}else{this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x69')]+=0x1;this[_0x0375('0xb3')][_0x4067e4['queue']][_0x0375('0x61')]+=0x1;_0x59f903[_0x0375('0xa6')]=0xb;_0x59f903[_0x0375('0xee')]=_0x0375('0x127');_0x59f903[_0x0375('0x11e')]='CALLEREXIT';_0x59f903['countabandonedretry']+=0x1;_0x59f903[_0x0375('0xf2')]+=0x1;if(_0x59f903[_0x0375('0x128')]>=this[_0x0375('0xb3')][_0x4067e4[_0x0375('0xb4')]]['dialAbandonedMaxRetry']){this[_0x0375('0x119')](_0x59f903);}else{this[_0x0375('0xc1')]({'active':![],'countabandonedretry':_0x59f903[_0x0375('0x128')],'scheduledat':moment()[_0x0375('0x129')](this['voiceQueues'][_0x4067e4[_0x0375('0xb4')]][_0x0375('0x12a')],'minutes')[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x47817f[_0x0375('0x100')],'ListId':_0x47817f[_0x0375('0xd5')],'VoiceQueueId':_0x47817f[_0x0375('0x101')]||undefined,'CampaignId':_0x47817f[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x12b')));var _0x20758e=new History(_0x59f903);_0x20758e[_0x0375('0xa6')]=0xb;_0x20758e['statedesc']='Abandoned';_0x20758e[_0x0375('0xa7')]=moment()[_0x0375('0x76')](_0x0375('0xff'));_0x20758e['endtime']=_0x20758e[_0x0375('0xa7')];_0x20758e['calleridname']=_0x59f903['calleridname'];_0x20758e[_0x0375('0x125')]=_0x59f903[_0x0375('0x125')];this[_0x0375('0xcd')](_0x20758e)[_0x0375('0xb0')](loggerCatch('[syncAgentComplete][createHistory][11]'));}}}}};Dialer[_0x0375('0xa8')][_0x0375('0x35')]=function(_0x517d05){if(this['actions'][_0x517d05[_0x0375('0xdd')]]){this['actions'][_0x517d05[_0x0375('0xdd')]][_0x0375('0x12c')]=_0x517d05['channel'];}if(this[_0x0375('0xaa')][_0x517d05['uniqueid']]){this[_0x0375('0xaa')][_0x517d05[_0x0375('0xdd')]][_0x0375('0x12c')]=_0x517d05[_0x0375('0x12c')];}};Dialer[_0x0375('0xa8')][_0x0375('0x38')]=function(_0x37a0e0){if(strategy[this[_0x0375('0xb3')][this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]][_0x0375('0xb4')]][_0x0375('0x4d')]]===_0x0375('0x1d')){if(this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]&&_[_0x0375('0xde')](this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]['locked'])&&_0x37a0e0[_0x0375('0xaf')]==='1'&&_0x37a0e0[_0x0375('0x12e')]==='0'){if(this[_0x0375('0x23')][_0x37a0e0[_0x0375('0x12f')]]){if(!this[_0x0375('0x23')][_0x37a0e0[_0x0375('0x12f')]][_0x0375('0x130')]){this[_0x0375('0x23')][_0x37a0e0['stateinterface']][_0x0375('0x130')]=!![];this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]][_0x0375('0x130')]=!![];this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]['stateinterface']=_0x37a0e0[_0x0375('0x12f')];}}}}else if((strategy[this[_0x0375('0xb3')][this[_0x0375('0xac')][_0x37a0e0['actionid']]['queue']][_0x0375('0x4d')]]||_0x0375('0x131'))==='rrmemory'){if(this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]]){if(this['agents'][_0x37a0e0[_0x0375('0x12f')]]){this[_0x0375('0xac')][_0x37a0e0[_0x0375('0x12d')]][_0x0375('0x12f')]=_0x37a0e0[_0x0375('0x12f')];if(_['isNil'](this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x37a0e0['actionid']]['queue']])){this['queueBooked'][this[_0x0375('0xac')][_0x37a0e0['actionid']][_0x0375('0xb4')]]=[];}this[_0x0375('0x2a')][this['actions'][_0x37a0e0[_0x0375('0x12d')]]['queue']][_0x0375('0x132')](_['merge'](_[_0x0375('0xd4')](this['actions'][_0x37a0e0['actionid']],[_0x0375('0x133'),_0x0375('0x12f')]),{'status':_0x37a0e0['status'],'paused':_0x37a0e0['paused']}));}}}};function unlockQueueStatus(_0x238592,_0x3fc2e3){setTimeout(function(){if(_[_0x0375('0x84')](_0x238592[_0x0375('0x134')])){loggerBooked['error'](_0x0375('0x135'),_0x3fc2e3);}_0x238592[_0x0375('0x134')]=!![];loggerBooked[_0x0375('0x7b')]('[booked][unlockQueueStatus]',_0x3fc2e3,JSON['stringify'](_['pick'](_0x238592,[_0x0375('0x40'),_0x0375('0x134')])));},0x1f3);}Dialer['prototype']['syncQueueStatusComplete']=function(_0x64d7e8){var _0x17cba8=this;var _0x5da507=_0x17cba8[_0x0375('0xb3')][_0x17cba8['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]];if(strategy[this['voiceQueues'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]][_0x0375('0x4d')]]===_0x0375('0x1d')){if(this[_0x0375('0xac')][_0x64d7e8['actionid']]&&this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0x12f')]){this[_0x0375('0x90')][_0x0375('0x136')](this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['idHopper'],this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0x12f')])[_0x0375('0xb0')](function(_0x319741){logger[_0x0375('0x94')](_0x0375('0x137'),util['inspect'](_0x319741,{'showHidden':![],'depth':null}));})[_0x0375('0x20')](function(){_0x17cba8[_0x0375('0xb2')](_0x17cba8['voiceQueues'][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);_0x17cba8[_0x0375('0x23')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['stateinterface']][_0x0375('0x130')]=![];delete _0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);});}else{this[_0x0375('0xb2')](this[_0x0375('0xb3')][this['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x100')],'ListId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xd5')],'VoiceQueueId':this['actions'][_0x64d7e8['actionid']][_0x0375('0x101')]||undefined,'CampaignId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);}}else if((strategy[this[_0x0375('0xb3')][this['actions'][_0x64d7e8[_0x0375('0x12d')]]['queue']][_0x0375('0x4d')]]||_0x0375('0x131'))==='rrmemory'){var _0x2546c4;if(this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]&&!_[_0x0375('0x44')](this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]])){if(this[_0x0375('0x2b')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]){this[_0x0375('0x2b')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]=this[_0x0375('0x2b')][this['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]?this['queueBookedRR'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]:this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]?this['queueBooked'][this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xb4')]][_0x0375('0x138')]||0x0:0x0;}this['queueBooked'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]][_0x0375('0x138')]=this[_0x0375('0x2b')][this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xb4')]];for(var _0x39192a=0x0;_0x39192a<this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']][_0x0375('0x96')];_0x39192a+=0x1){_0x2546c4=rr(this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xb4')]]);this[_0x0375('0x2b')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]=this[_0x0375('0x2a')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]['_rr'];if(_0x2546c4['status']==='1'&&_0x2546c4['paused']==='0'){break;}}if(!_[_0x0375('0xde')](_0x2546c4)){this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]]['unlockRR']=_['isUndefined'](this[_0x0375('0x23')][_0x2546c4['stateinterface']][_0x0375('0x139')])?!![]:this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]]['unlockRR'];}loggerBooked[_0x0375('0x7b')](_0x0375('0x13a'),_0x64d7e8[_0x0375('0x12d')],'Agent:\x20',JSON[_0x0375('0x48')](_[_0x0375('0xd4')](this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]],[_0x0375('0x40'),'unlockRR'])),_0x0375('0x13b'),JSON[_0x0375('0x48')](_0x2546c4[_0x0375('0x133')]));if(!_[_0x0375('0xde')](_0x2546c4)&&_0x2546c4['status']==='1'&&_0x2546c4[_0x0375('0x12e')]==='0'&&this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]][_0x0375('0x139')]){this[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]]['unlockRR']=![];this[_0x0375('0x2a')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]=[];this[_0x0375('0x90')][_0x0375('0x136')](_0x2546c4['idHopper'],_0x2546c4[_0x0375('0x12f')])[_0x0375('0xb0')](function(_0x5dd85b){logger[_0x0375('0x94')](_0x0375('0x137'),util[_0x0375('0x95')](_0x5dd85b,{'showHidden':![],'depth':null}));})[_0x0375('0x20')](function(){_0x17cba8[_0x0375('0xb2')](_0x17cba8[_0x0375('0xb3')][_0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]);setTimeout(function(){_0x17cba8[_0x0375('0x23')][_0x2546c4['stateinterface']]['unlockRR']=!![];loggerBooked[_0x0375('0x7b')](_0x0375('0x13c'),_0x64d7e8[_0x0375('0x12d')],_0x0375('0x13d'),JSON['stringify'](_[_0x0375('0xd4')](_0x17cba8[_0x0375('0x23')][_0x2546c4[_0x0375('0x12f')]],[_0x0375('0x40'),_0x0375('0x139')])),_0x0375('0x13b'),JSON[_0x0375('0x48')](_0x2546c4[_0x0375('0x133')]));},0xc7);delete _0x17cba8[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507,_0x64d7e8[_0x0375('0x12d')]);});}else{loggerBooked[_0x0375('0x7b')](_0x0375('0x13e'));this[_0x0375('0xb2')](this[_0x0375('0xb3')][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);this[_0x0375('0xc1')]({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x100')],'ListId':this['actions'][_0x64d7e8['actionid']][_0x0375('0xd5')],'VoiceQueueId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x101')]||undefined,'CampaignId':this['actions'][_0x64d7e8['actionid']]['CampaignId']||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x13f')));delete this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);}}else{loggerBooked['info']('[booked][unlock2]');this['updateOriginated'](this['voiceQueues'][this['actions'][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xb4')]]);this[_0x0375('0xc1')]({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x100')],'ListId':this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0xd5')],'VoiceQueueId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x101')]||undefined,'CampaignId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[unlock2][syncQueueStatusComplete]'));delete this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]];unlockQueueStatus(_0x5da507);}}else{loggerBooked[_0x0375('0x7b')](_0x0375('0x140'));this[_0x0375('0xb2')](this['voiceQueues'][this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['queue']]);this[_0x0375('0xc1')]({'active':![],'ContactId':this[_0x0375('0xac')][_0x64d7e8['actionid']][_0x0375('0x100')],'ListId':this['actions'][_0x64d7e8[_0x0375('0x12d')]]['ListId'],'VoiceQueueId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]][_0x0375('0x101')]||undefined,'CampaignId':this[_0x0375('0xac')][_0x64d7e8[_0x0375('0x12d')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x0375('0x141')));delete this[_0x0375('0xac')][_0x64d7e8['actionid']];unlockQueueStatus(_0x5da507);}};Dialer['prototype'][_0x0375('0x142')]=function(){var _0x5a5424=this;setInterval(function(){_0x5a5424[_0x0375('0x143')]();},0x3e8);};Dialer[_0x0375('0xa8')]['checkIsTrunkReachable']=function(_0x54b150){var _0x1ca874=this;return function(){if(!_0x1ca874[_0x0375('0x144')](_0x54b150['Trunk'])){if(!_0x1ca874[_0x0375('0x144')](_0x54b150['TrunkBackup'])){_0x54b150[_0x0375('0x3c')]='TRUNK_IS_NOT_REACHABLE';throw _0x54b150[_0x0375('0x40')]+_0x0375('0x145');}}};};Dialer[_0x0375('0xa8')][_0x0375('0x146')]=function(_0x171663,_0x34a4cc,_0xb9a50f,_0x5ea66f){var _0x2e4496=this;return function(){var _0x404e34=!![];return _0x2e4496['ifTime'](_0x171663,_0x34a4cc,_0xb9a50f,_0x5ea66f,_0x404e34);};};Dialer['prototype'][_0x0375('0x147')]=function(_0x3f40e3,_0x33a276,_0x1704f5,_0x4f3e37){var _0x27ce29=this;return function(){var _0x1160d7=![];return _0x27ce29['ifTime'](_0x3f40e3[_0x0375('0x45')],_0x33a276,_0x1704f5,_0x4f3e37,_0x1160d7);};};Dialer['prototype'][_0x0375('0x148')]=function(_0x10ae92,_0x578be0,_0x3939e0,_0x519dea,_0x4ca5eb){var _0x37e7ec=[];return new BPromise(function(_0x3690c0,_0x1fe8c8){if(!isNotNull(_0x10ae92)){_0x519dea[_0x0375('0x3c')]=_0x0375('0x42');return _0x1fe8c8(msgResponse(_0x0375('0x148'),'Failure',_0x3939e0+_0x0375('0x149')));}if(_[_0x0375('0x44')](_0x10ae92)){_0x519dea[_0x0375('0x3c')]=_0x0375('0x14a');return _0x1fe8c8(msgResponse(_0x0375('0x148'),_0x0375('0x14b'),_0x3939e0+'\x20Intervals\x20is\x20empty\x20'));}if(_0x578be0&&_['isUndefined'](config['timezones'][_0x578be0])){_0x519dea[_0x0375('0x3c')]=_0x0375('0x14c');return _0x1fe8c8(msgResponse(_0x0375('0x148'),_0x0375('0x14b'),_0x3939e0+_0x0375('0x14d')+_0x578be0));}if(_[_0x0375('0x14e')](_0x10ae92)){for(var _0x51bce7=0x0;_0x51bce7<_0x10ae92['length'];_0x51bce7+=0x1){_0x37e7ec[_0x0375('0x132')](ami[_0x0375('0xae')]({'action':_0x0375('0x14f'),'command':util[_0x0375('0x76')]('iftime\x20%s,%s',_0x10ae92[_0x51bce7][_0x0375('0x150')],!_[_0x0375('0x84')](config['timezones'][_0x578be0])?_0x578be0:'')})[_0x0375('0xb9')](function(_0x356bbe){return _0x356bbe['content'][_0x0375('0x151')](_0x0375('0x152'))>=0x0;})['catch'](myreject(_0x1fe8c8)));}}else{_0x37e7ec[_0x0375('0x132')](ami[_0x0375('0xae')]({'action':'command','command':util[_0x0375('0x76')](_0x0375('0x153'),_0x10ae92,!_[_0x0375('0x84')](config[_0x0375('0x154')][_0x578be0])?_0x578be0:'')})[_0x0375('0xb9')](function(_0x4f17da){return _0x4f17da['content'][_0x0375('0x151')](_0x0375('0x152'))>=0x0;})[_0x0375('0xb0')](myreject(_0x1fe8c8)));}BPromise[_0x0375('0x155')](_0x37e7ec)['then'](function(_0x34ab9a){var _0x40e4b2=_[_0x0375('0x156')](_0x34ab9a);if(_0x40e4b2){return _0x3690c0(_0x40e4b2);}else{_0x519dea[_0x0375('0x3c')]=_0x4ca5eb?_0x0375('0x157'):_0x0375('0x158');return _0x1fe8c8(msgResponse(_0x0375('0x159'),'Failure','Global:\x20'+_0x4ca5eb+'\x20'+_0x3939e0+_0x0375('0x15a')+util[_0x0375('0x95')](_0x10ae92,{'showHidden':![],'depth':null})+_0x0375('0x15b')+_0x578be0));}})['catch'](function(_0x5601ae){return _0x1fe8c8(msgResponse(_0x0375('0x148'),_0x0375('0x14b'),JSON[_0x0375('0x48')](_0x5601ae)));});});};Dialer['prototype']['checkDialMethod']=function(_0x29da65){var _0x351710=this;return function(){switch(_0x29da65[_0x0375('0x15c')]){case _0x0375('0x15d'):freeVariablesPredictive(_0x29da65);_0x351710[_0x0375('0x15e')](_0x29da65,0x1);break;case _0x0375('0x15f'):freeVariablesPredictive(_0x29da65);_0x351710[_0x0375('0x15e')](_0x29da65,_0x29da65[_0x0375('0x160')]);break;case _0x0375('0xa'):_0x351710[_0x0375('0xa')](_0x29da65);break;case _0x0375('0x9'):freeVariablesPredictive(_0x29da65);_0x351710['handlePower'](_0x29da65,0x1);break;default:freeVariablesPredictive(_0x29da65);logger[_0x0375('0x94')](_0x0375('0x161'),_0x29da65[_0x0375('0x40')],_0x0375('0x162'));}};};Dialer[_0x0375('0xa8')]['launchHandleIvr']=function(_0x558adb){var _0x5688a5=this;return function(){_0x5688a5['handleIvr'](_0x558adb);};};Dialer[_0x0375('0xa8')][_0x0375('0xc')]=function(_0x494060){var _0x3d27bf=this;if(isNotPreview(_0x494060[_0x0375('0x15c')])){if(isVoiceQueueOutbound(_0x494060[_0x0375('0x54')])&&isActive(_0x494060['dialActive'])){_0x494060[_0x0375('0x9e')]=!![];BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](checkIsLoggedIn(_0x494060,_0x494060['loggedIn']))[_0x0375('0xb9')](checkIsActive(_0x494060,_0x494060[_0x0375('0x59')]))[_0x0375('0xb9')](checkInterval(_0x494060))['then'](_0x3d27bf['checkIsTrunkReachable'](_0x494060))[_0x0375('0xb9')](_0x3d27bf[_0x0375('0x146')](_0x494060['dialGlobalInterval'],_0x494060[_0x0375('0x163')],_0x494060[_0x0375('0x40')],_0x494060))[_0x0375('0xb9')](_0x3d27bf[_0x0375('0x147')](_0x494060[_0x0375('0x41')],_0x494060[_0x0375('0x163')],_0x494060[_0x0375('0x40')],_0x494060))[_0x0375('0xb9')](_0x3d27bf[_0x0375('0x164')](_0x494060))['catch'](loggerCatchQueueSummary('[syncQueueSummary]',_0x494060));}else{notSendMessagesQueue(_0x494060);}}else{freeVariablesPredictive(_0x494060);}};Dialer[_0x0375('0xa8')][_0x0375('0x143')]=function(){var _0x318ef5=this;var _0x19da83;for(var _0x526104 in this[_0x0375('0x22')]){if(typeof this['campaigns'][_0x526104]!=='undefined'){_0x19da83=this[_0x0375('0x22')][_0x526104];if(isCampaignIvr(_0x19da83['type'])&&isActive(_0x19da83[_0x0375('0x73')])){_0x19da83['sendMessageOneNotActive']=!![];BPromise[_0x0375('0xb8')]()[_0x0375('0xb9')](checkIsActive(_0x19da83,_0x19da83[_0x0375('0x73')]))[_0x0375('0xb9')](checkInterval(_0x19da83))[_0x0375('0xb9')](_0x318ef5[_0x0375('0x165')](_0x19da83))[_0x0375('0xb9')](_0x318ef5[_0x0375('0x146')](_0x19da83[_0x0375('0x166')],_0x19da83[_0x0375('0x163')],_0x19da83[_0x0375('0x40')],_0x19da83))[_0x0375('0xb9')](_0x318ef5[_0x0375('0x147')](_0x19da83[_0x0375('0x41')],_0x19da83[_0x0375('0x163')],_0x19da83[_0x0375('0x40')],_0x19da83))['then'](_0x318ef5[_0x0375('0x167')](_0x19da83))['catch'](loggerCatchQueueSummary(_0x0375('0x168'),_0x19da83));}else{notSendMessagesCampaign(_0x19da83);}}}};function getCallerIdRandom(_0x45cd0e,_0x2490ef){var _0x448561;var _0x1702ab;var _0x2245cf;if(_0x2490ef<=0x0){_0x2490ef=0x1;}_0x448561=new RegExp(_0x0375('0x169')+_0x2490ef+'}$');_0x1702ab=Math[_0x0375('0x16a')](0xa,_0x2490ef-0x1);_0x2245cf=Math[_0x0375('0x16a')](0xa,_0x2490ef)-0x1;return util[_0x0375('0x76')]('%s',_[_0x0375('0x16b')](_0x45cd0e,_0x448561,_[_0x0375('0x16c')](_0x1702ab,_0x2245cf)));}function extractCalleridName(_0x5e33a1){var _0x47d530=_0x5e33a1[_0x0375('0x16d')](/"(.*?)"/);return _0x47d530?_0x47d530[0x1]:_0x5e33a1;}function extractCalleridNumber(_0x2b0408){var _0x4c2af6=_0x2b0408[_0x0375('0x16d')](/<(.*?)>/);return _0x4c2af6?_0x4c2af6[0x1]:_0x2b0408;}Dialer[_0x0375('0xa8')]['actionOriginate']=function(_0x3581d9,_0x4a5386){var _0x88ef88=this;var _0x58e2d7=uuid['v4']();this[_0x0375('0xac')][_0x58e2d7]=new Action(_0x3581d9,_0x4a5386,_0x58e2d7);return new BPromise(function(_0xe42170,_0x1cfde9){if(_[_0x0375('0x84')](_0x3581d9)&&typeof _0x3581d9!==_0x0375('0x16e')){return _0x1cfde9(msgResponse(_0x0375('0x16f'),_0x0375('0x14b'),'voiceQueue\x20is\x20undefine'));}if(_['isUndefined'](_0x4a5386['Contact'][_0x0375('0x170')])||_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]===null){return _0x1cfde9(msgResponse(_0x0375('0x16f'),_0x0375('0x14b'),_0x0375('0x172')));}var _0x164483={'XMD-CALLERID':_0x88ef88[_0x0375('0xac')][_0x58e2d7]['getCaller'](),'XMD-AGI':_0x3581d9[_0x0375('0x10a')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x3581d9['dialQueueProject']):_0x0375('0x173'),'XMD-AGIAFTER':_0x3581d9[_0x0375('0x115')]?util[_0x0375('0x76')]('\x22agi://%s/square,%s\x22',ipAgi,_0x3581d9[_0x0375('0x115')]):'NONE','XMD-QUEUE':_0x3581d9[_0x0375('0x54')]===_0x0375('0x4c')?util['format'](_0x0375('0x174'),_0x3581d9['name'],_0x3581d9[_0x0375('0x175')]||'',_0x3581d9[_0x0375('0x116')]?'c':'',_0x3581d9[_0x0375('0x176')]||0x3):_0x0375('0x173'),'XMD-CONTACTID':_0x4a5386[_0x0375('0x100')],'XMD-CDRTYPE':_0x0375('0x8'),'CALLERID(all)':_0x88ef88[_0x0375('0xac')][_0x58e2d7]['getCaller'](),'XMD-AMD':_0x3581d9[_0x0375('0xe2')]?'ACTIVE':'NONE','XMD-DESTINATION':_0x0375('0xe1')};if(_0x3581d9[_0x0375('0xe2')]){_0x164483['XMD-AMDINITIALSILENCE']=_0x3581d9[_0x0375('0x177')]||0x9c4;_0x164483['XMD-AMDGREETING']=_0x3581d9[_0x0375('0x178')]||0x5dc;_0x164483[_0x0375('0x179')]=_0x3581d9[_0x0375('0x17a')]||0x320;_0x164483[_0x0375('0x17b')]=_0x3581d9[_0x0375('0x17c')]||0x1388;_0x164483[_0x0375('0x17d')]=_0x3581d9[_0x0375('0x17e')]||0x64;_0x164483['XMD-AMDBETWEENWORDSSILENCE']=_0x3581d9[_0x0375('0x17f')]||0x32;_0x164483['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x3581d9[_0x0375('0x180')]||0x3;_0x164483[_0x0375('0x181')]=_0x3581d9[_0x0375('0x182')]||0x100;_0x164483[_0x0375('0x183')]=_0x3581d9[_0x0375('0x184')]||0x1388;}if(_0x3581d9['type']==='outbound'){_0x164483[_0x0375('0x185')]=_0x4a5386[_0x0375('0x101')];}else{_0x164483[_0x0375('0x186')]=_0x4a5386[_0x0375('0xd6')];}for(var _0x315048 in _0x4a5386['Contact']){if(typeof _0x4a5386[_0x0375('0x171')][_0x315048]!==_0x0375('0x98')){if(isNotNull(_0x4a5386[_0x0375('0x171')][_0x315048])&&_0x315048!=='id'&&_0x315048!==_0x0375('0x187')&&_0x315048!=='createdAt'&&_0x315048!==_0x0375('0x188')){_0x164483[util['format'](_0x0375('0x189'),_0x0375('0x18a'),_[_0x0375('0x18b')](_0x315048))]=_0x4a5386[_0x0375('0x171')][_0x315048];}}}var _0x5891f=_0x88ef88['isTrunkReachable'](_0x3581d9[_0x0375('0x72')])?getCallerId(_0x3581d9[_0x0375('0x72')]['callerid'],_0x3581d9[_0x0375('0x5a')],_0x3581d9[_0x0375('0x18c')]>0x0?getCallerIdRandom(_0x3581d9[_0x0375('0x5b')],_0x3581d9['dialRandomLastDigitCallerIdNumber']):_0x3581d9[_0x0375('0x5b')]):getCallerId(_[_0x0375('0xde')](_0x3581d9[_0x0375('0x18d')])?_0x3581d9[_0x0375('0x72')][_0x0375('0x74')]:_0x3581d9['TrunkBackup'][_0x0375('0x74')],_0x3581d9[_0x0375('0x5a')],_0x3581d9['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x3581d9[_0x0375('0x5b')],_0x3581d9['dialRandomLastDigitCallerIdNumber']):_0x3581d9[_0x0375('0x5b')]);if(_0x5891f){_0x164483[_0x0375('0x18e')]=_0x88ef88['actions'][_0x58e2d7][_0x0375('0x18f')]=extractCalleridName(_0x5891f);_0x164483[_0x0375('0x190')]=_0x88ef88[_0x0375('0xac')][_0x58e2d7][_0x0375('0x191')]=extractCalleridNumber(_0x5891f);}return ami['Action']({'actionid':_0x58e2d7,'action':_0x0375('0x16f'),'channel':_0x88ef88['isTrunkReachable'](_0x3581d9[_0x0375('0x72')])?util['format']('SIP/%s/%s%s',_0x3581d9[_0x0375('0x72')][_0x0375('0x40')],isNotNull(_0x3581d9[_0x0375('0x192')])?_0x3581d9['dialPrefix'][_0x0375('0x193')]()||'':'',_0x3581d9[_0x0375('0x194')]>0x0?_0x4a5386[_0x0375('0x171')][_0x0375('0x170')][_0x0375('0x195')](_0x3581d9[_0x0375('0x194')]):_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]):util[_0x0375('0x76')](_0x0375('0x196'),_[_0x0375('0xde')](_0x3581d9['TrunkBackup'])?_0x3581d9[_0x0375('0x72')][_0x0375('0x40')]:_0x3581d9[_0x0375('0x18d')][_0x0375('0x40')],isNotNull(_0x3581d9[_0x0375('0x192')])?_0x3581d9[_0x0375('0x192')][_0x0375('0x193')]()||'':'',_0x3581d9['dialCutDigit']>0x0?_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]['substring'](_0x3581d9[_0x0375('0x194')]):_0x4a5386[_0x0375('0x171')][_0x0375('0x170')]),'callerid':_0x5891f,'Exten':_0x0375('0xe1'),'Context':'from-sip','Priority':'1','variable':_0x164483,'timeout':(_0x3581d9[_0x0375('0x5c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x58e2d7})[_0x0375('0xb9')](function(_0x5f257c){return _0xe42170(_0x5f257c);})[_0x0375('0xb0')](function(_0x31b900){_0x3581d9['outboundOriginateFailureCallsDay']+=0x1;var _0x52e817=new History(_0x88ef88[_0x0375('0xac')][_0x58e2d7]);logger['error'](util[_0x0375('0x76')](_0x0375('0x197'),JSON[_0x0375('0x48')](_0x31b900)));_0x52e817[_0x0375('0xa6')]=0xe;_0x52e817[_0x0375('0xee')]=_0x0375('0x198');_0x52e817['starttime']=moment()[_0x0375('0x76')]('YYYY-MM-DD\x20HH:mm:ss');_0x52e817[_0x0375('0x123')]=_0x52e817['starttime'];_0x88ef88[_0x0375('0xcd')](_0x52e817)[_0x0375('0xb0')](loggerCatch(_0x0375('0x199')));_0x88ef88['moveContactManagedDialer'](_0x52e817)['catch'](loggerCatch(_0x0375('0x199')))['finally'](function(){delete _0x88ef88['actions'][_0x58e2d7];return _0x1cfde9(msgResponse(_0x0375('0x16f'),_0x0375('0x47'),_0x0375('0x19a')));});});});};Dialer[_0x0375('0xa8')][_0x0375('0x31')]=function(_0x5cf387){var _0x262270=this[_0x0375('0xac')][_0x5cf387[_0x0375('0x12d')]];if(_0x262270){delete this[_0x0375('0xac')][_0x5cf387[_0x0375('0x12d')]];_0x262270['responsetime']=moment()[_0x0375('0x76')](_0x0375('0xff'));var _0x36be32=_0x262270[_0x0375('0x54')]===_0x0375('0x79')?this['campaigns'][_0x262270['queue']]:this[_0x0375('0xb3')][_0x262270[_0x0375('0x19b')]()];if(!this['isSuccess'](_0x5cf387[_0x0375('0x19c')])){this[_0x0375('0xb2')](_0x36be32);return this[_0x0375('0x19d')](_0x262270,_0x36be32,_0x5cf387)[_0x0375('0xb0')](loggerCatch(_0x0375('0x19e')));}this[_0x0375('0xaa')][_0x5cf387['uniqueid']]=_0x262270;}};Dialer['prototype'][_0x0375('0x19f')]=function(_0xf9d348,_0x2cf8cc,_0x55ab87){var _0x441141=new History(_0x2cf8cc);if(_0x441141[_0x0375('0xf4')]+_0x441141[_0x0375('0xf5')]+_0x441141[_0x0375('0xf6')]+_0x441141[_0x0375('0xf7')]+_0x441141['countdropretry']+_0x441141['countabandonedretry']+_0x441141[_0x0375('0xf1')]+_0x441141[_0x0375('0xf9')]>=_0x55ab87[_0x0375('0xfa')]-0x1){return!![];}switch(_0xf9d348){case 0x3:if(_0x441141[_0x0375('0xf6')]>=_0x55ab87['dialNoAnswerMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x441141['countnoanswerretry']+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87['dialNoAnswerRetryFrequency'],_0x0375('0xfe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x441141['ContactId'],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1a0')));break;case 0x5:if(_0x441141['countbusyretry']>=_0x55ab87[_0x0375('0x1a1')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countbusyretry':_0x441141[_0x0375('0xf4')]+=0x1,'scheduledat':moment()['add'](_0x55ab87['dialBusyRetryFrequency'],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x441141[_0x0375('0xf5')]>=_0x55ab87['dialCongestionMaxRetry']-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countcongestionretry':_0x441141[_0x0375('0xf5')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0x1a2')],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141[_0x0375('0xd5')],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x441141[_0x0375('0xf7')]>=_0x55ab87[_0x0375('0x1a3')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x441141[_0x0375('0xf7')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87['dialNoSuchNumberRetryFrequency'],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x441141['ContactId'],'ListId':_0x441141[_0x0375('0xd5')],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141['CampaignId']||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1a4')));}break;case 0xa:if(_0x441141[_0x0375('0xf8')]>=_0x55ab87[_0x0375('0x120')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countdropretry':_0x441141[_0x0375('0xf8')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0x121')],_0x0375('0xfe'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})['catch'](loggerCatch(_0x0375('0x122')));break;case 0xb:if(_0x441141[_0x0375('0x128')]>=_0x55ab87[_0x0375('0x1a5')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countabandonedretry':_0x441141[_0x0375('0x128')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0x12a')],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x12b')));break;case 0x13:if(_0x441141['countmachineretry']>=_0x55ab87['dialMachineMaxRetry']-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countmachineretry':_0x441141[_0x0375('0xf1')]+=0x1,'scheduledat':moment()[_0x0375('0x129')](_0x55ab87[_0x0375('0xfd')],'minutes')['format'](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141[_0x0375('0x101')]||undefined,'CampaignId':_0x441141[_0x0375('0xd6')]||undefined})['catch'](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x441141['countagentrejectretry']>=_0x55ab87[_0x0375('0x1a6')]-0x1){return!![];}this[_0x0375('0xc1')]({'active':![],'countagentrejectretry':_0x441141[_0x0375('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x55ab87[_0x0375('0x1a7')],_0x0375('0xfe'))[_0x0375('0x76')](_0x0375('0xff')),'ContactId':_0x441141[_0x0375('0x100')],'ListId':_0x441141['ListId'],'VoiceQueueId':_0x441141['VoiceQueueId']||undefined,'CampaignId':_0x441141['CampaignId']||undefined})[_0x0375('0xb0')](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer[_0x0375('0xa8')][_0x0375('0x19d')]=function(_0x1cdc65,_0x234674,_0x414577){var _0x57bf5d=this;var _0x17eba3=new History(_0x1cdc65);return new BPromise(function(_0x3fe079,_0x7760dc){if(_[_0x0375('0x84')](_0x234674)&&typeof _0x234674!=='object'){return _0x7760dc(msgResponse(_0x0375('0x1a8'),'Failure',_0x0375('0x1a9')));}if(_['isUndefined'](_0x414577)&&typeof _0x414577!==_0x0375('0x16e')){return _0x7760dc(msgResponse('[callProgressDetecting]',_0x0375('0x14b'),_0x0375('0x1aa')));}switch(_0x414577[_0x0375('0x112')]){case'0':_0x234674[_0x0375('0x1ab')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0x0;_0x17eba3['statedesc']=_0x0375('0x1ac');_0x17eba3[_0x0375('0xf7')]+=0x1;_0x17eba3['countglobal']+=0x1;ami['emit'](_0x0375('0x1ad'),ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1ae')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0xf3')));if(_0x57bf5d[_0x0375('0x19f')](0x0,_0x1cdc65,_0x234674)){if(_0x17eba3['countnosuchnumberretry']>=_0x234674[_0x0375('0x1a3')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b0'));}else{_0x57bf5d['stateGlobal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b0'));}}break;case'3':_0x234674[_0x0375('0x63')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0x3;_0x17eba3[_0x0375('0xee')]=_0x0375('0x1b1');_0x17eba3['countnoanswerretry']+=0x1;_0x17eba3['countglobal']+=0x1;ami['emit'](_0x0375('0x1b2'),ut['buildObj'](_0x1cdc65,_0x0375('0x1b3')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1b4')));if(_0x57bf5d[_0x0375('0x19f')](0x3,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf6')]>=_0x234674[_0x0375('0x1b5')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b6'));}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1b6'));}}break;case'5':_0x234674['outboundBusyCallsDay']+=0x1;_0x17eba3[_0x0375('0xa6')]=0x5;_0x17eba3[_0x0375('0xee')]=_0x0375('0x1b7');_0x17eba3['countbusyretry']+=0x1;_0x17eba3['countglobal']+=0x1;ami[_0x0375('0xe8')](_0x0375('0x1b8'),ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1b9')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)['catch'](loggerCatch(_0x0375('0x1ba')));if(_0x57bf5d[_0x0375('0x19f')](0x5,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf4')]>=_0x234674[_0x0375('0x1a1')]){_0x57bf5d['createStateFinal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1bb'));}else{_0x57bf5d['stateGlobal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1bb'));}}break;case'8':_0x234674[_0x0375('0x60')]+=0x1;_0x17eba3['state']=0x8;_0x17eba3[_0x0375('0xee')]=_0x0375('0x1bc');_0x17eba3['countcongestionretry']+=0x1;_0x17eba3[_0x0375('0xf2')]+=0x1;ami['emit'](_0x0375('0x1bd'),ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1be')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)['catch'](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0x57bf5d[_0x0375('0x19f')](0x8,_0x1cdc65,_0x234674)){if(_0x17eba3['countcongestionretry']>=_0x234674[_0x0375('0x1bf')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c0'));}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c0'));}}break;case'11':_0x234674[_0x0375('0x1c1')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0xb;_0x17eba3[_0x0375('0xee')]=_0x0375('0x127');_0x17eba3[_0x0375('0x128')]+=0x1;_0x17eba3['countglobal']+=0x1;_0x57bf5d['createHistory'](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1c2')));if(_0x57bf5d[_0x0375('0x19f')](0xb,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0x128')]>=_0x234674[_0x0375('0x1a5')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,'reason\x2011\x20abandoned');}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c3'));}}break;case'20':_0x234674[_0x0375('0x66')]+=0x1;_0x17eba3[_0x0375('0xa6')]=0x14;_0x17eba3[_0x0375('0xee')]='AgentReject';_0x17eba3[_0x0375('0xf9')]+=0x1;_0x17eba3['countglobal']+=0x1;ami[_0x0375('0xe8')]('custom:agentreject',ut[_0x0375('0xea')](_0x1cdc65,_0x0375('0x1c4')));_0x57bf5d[_0x0375('0xcd')](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1c5')));if(_0x57bf5d[_0x0375('0x19f')](0x14,_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf9')]>=_0x234674[_0x0375('0x1a6')]){_0x57bf5d[_0x0375('0x1af')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c6'));}else{_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x0375('0x1c6'));}}break;default:_0x234674['outboundUnknownCallsDay']+=0x1;_0x17eba3[_0x0375('0xa6')]=0xc;_0x17eba3[_0x0375('0xee')]=_0x414577[_0x0375('0x112')];_0x57bf5d['createHistory'](_0x17eba3)[_0x0375('0xb0')](loggerCatch(_0x0375('0x1c7')));if(_0x57bf5d[_0x0375('0x19f')](_0x414577[_0x0375('0x112')],_0x1cdc65,_0x234674)){if(_0x17eba3[_0x0375('0xf4')]+_0x17eba3['countcongestionretry']+_0x17eba3['countnoanswerretry']+_0x17eba3[_0x0375('0xf7')]+_0x17eba3[_0x0375('0xf8')]+_0x17eba3['countabandonedretry']+_0x17eba3[_0x0375('0xf1')]+_0x17eba3[_0x0375('0xf9')]>=_0x234674[_0x0375('0xfa')]){_0x57bf5d[_0x0375('0x105')](_0x17eba3,_0x3fe079,_0x7760dc,_0x414577[_0x0375('0x112')]);}else{_0x57bf5d['createStateFinal'](_0x17eba3,_0x3fe079,_0x7760dc,_0x414577[_0x0375('0x112')]);}}}});};Dialer[_0x0375('0xa8')][_0x0375('0x105')]=function(_0x59e59d,_0x2f3058,_0x2ca769,_0x303327){var _0xb0b4a3=new Final(_0x59e59d);_0xb0b4a3[_0x0375('0xa6')]=0xf;_0xb0b4a3[_0x0375('0xee')]='Global';this[_0x0375('0x1af')](_0xb0b4a3,_0x2f3058,_0x2ca769,_0x303327);};Dialer[_0x0375('0xa8')][_0x0375('0x1af')]=function(_0x2f9de5,_0x272c0b,_0x1e07e5,_0x4c1c9d){this[_0x0375('0xcb')](_0x2f9de5)[_0x0375('0xb9')](function(){return _0x272c0b(msgResponse(_0x0375('0x1a8'),_0x0375('0xd9'),_0x4c1c9d));})[_0x0375('0xb0')](function(){return _0x1e07e5(msgResponse(_0x0375('0x1c8'),_0x0375('0x14b'),_0x0375('0x1c9')));});};Dialer[_0x0375('0xa8')][_0x0375('0xa')]=function(_0x200883){var _0x77042d=_0x200883[_0x0375('0x1ca')]/0x64;var _0x31eec1=_0x200883['outboundDropCallsDayTimeout']/(_0x200883[_0x0375('0x62')]+_0x200883[_0x0375('0xe5')]);var _0x2382ea=Math[_0x0375('0x1cb')](_0x200883['predictiveIntervalAvailable']*(_0x200883[_0x0375('0x1cc')]/0x64));var _0x2e70db=Math[_0x0375('0x1cb')](_0x200883[_0x0375('0x1cd')]*(_0x200883['predictiveIntervalMinThreshold']/0x64));var _0x423ee8=_0x200883[_0x0375('0xa0')]+_0x200883[_0x0375('0x9f')];var _0x18de5f=Math['floor'](_0x200883[_0x0375('0x6e')]*_0x200883[_0x0375('0x6f')]*_0x200883['predictiveIntervalHitRate']*_0x200883[_0x0375('0x6b')]);if(_[_0x0375('0x84')](_0x200883[_0x0375('0x28')])){if(!_[_0x0375('0x84')](_0x200883['startPredictive'])){_0x200883['startPredictive']=undefined;loggerPredictive[_0x0375('0x94')](_0x0375('0x1ce'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0x0375('0x84')](_0x200883[_0x0375('0x8f')])){loggerPredictive[_0x0375('0x94')](_0x0375('0x1ce'),'check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x200883[_0x0375('0x8f')]);_0x200883[_0x0375('0x8f')]=undefined;}_0x200883[_0x0375('0x28')]=moment()[_0x0375('0x76')](_0x0375('0xff'));loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1cf'),_0x200883[_0x0375('0x28')]);this[_0x0375('0x15e')](_0x200883,0x1);}else if(ifInterval(_0x200883[_0x0375('0x1d0')],_0x200883['startProgressive'])){this[_0x0375('0x15e')](_0x200883,0x1);loggerPredictiveCalls[_0x0375('0x7b')]('[startMethodPredictive][StartProgressive][Loop]',_0x200883[_0x0375('0x28')],_0x200883[_0x0375('0x40')]);_0x200883['erlangCalls']=0x0;_0x200883['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x77042d<_0x31eec1&&_0x200883['dialPredictiveOptimization']===_0x0375('0x1d1')){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')](_0x0375('0x1d2'),_0x0375('0x1d3'),_0x31eec1,_0x0375('0x28'),_0x200883[_0x0375('0x40')]);}else if(_0x18de5f<_0x200883['predictiveIntervalErlangCallsDroppedCalls']&&_0x200883['dialPredictiveOptimization']==='dropRate'){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20',_0x18de5f,'Drop\x20in\x20this\x20interval',_0x200883[_0x0375('0x1d4')],_0x0375('0x28'),_0x200883[_0x0375('0x40')]);}else if(!ifInterval(_0x200883[_0x0375('0x1d0')],_0x200883[_0x0375('0x28')])&&_[_0x0375('0x84')](_0x200883['startPredictive'])&&!_['isUndefined'](_0x200883[_0x0375('0x28')])){_0x200883[_0x0375('0x71')]=moment()[_0x0375('0x76')](_0x0375('0xff'));loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1d5'),_0x200883[_0x0375('0x71')]);this['averageHandleTime'](_0x200883['dialPredictiveInterval'])['then'](this[_0x0375('0x1d6')](_0x200883))[_0x0375('0xb9')](mergeDataErlangB(_0x200883))[_0x0375('0xb9')](this[_0x0375('0x1d7')](_0x200883))[_0x0375('0xb0')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x200883));}else if(!ifInterval(_0x200883[_0x0375('0x1d0')],_0x200883[_0x0375('0x71')])){_0x200883[_0x0375('0x1d4')]=0x0;_0x200883[_0x0375('0x71')]=moment()[_0x0375('0x76')](_0x0375('0xff'));loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1d8'),_0x200883['startPredictive']);clearInterval(_0x200883[_0x0375('0x8f')]);_0x200883[_0x0375('0x8f')]=undefined;this['averageHandleTime'](_0x200883['dialPredictiveInterval'])[_0x0375('0xb9')](this[_0x0375('0x1d6')](_0x200883))[_0x0375('0xb9')](mergeDataErlangB(_0x200883))[_0x0375('0xb9')](this[_0x0375('0x1d7')](_0x200883))[_0x0375('0xb0')](loggerCatchPredictive(_0x0375('0x1d9'),_0x200883));}else if(_0x200883[_0x0375('0x1cd')]&&_0x423ee8<_0x200883['predictiveIntervalAvailable']-_0x2e70db){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1da'),_0x423ee8,_0x0375('0x1db'),_0x200883[_0x0375('0x1cd')],'-',_0x2e70db,'=',_0x200883[_0x0375('0x1cd')]-_0x2e70db,')');}else if(_0x200883[_0x0375('0x1cd')]&&_0x423ee8>_0x200883[_0x0375('0x1cd')]+_0x2382ea){freeVariablesPredictive(_0x200883);loggerPredictive[_0x0375('0x7b')](_0x200883[_0x0375('0x40')],_0x0375('0x1da'),_0x423ee8,_0x0375('0x1dc'),_0x200883['predictiveIntervalAvailable'],'+',_0x2382ea,'=',_0x200883['predictiveIntervalAvailable']+_0x2382ea,')');}};Dialer[_0x0375('0xa8')]['getDataPredictive']=function(_0x2b6007){var _0x17a71b=this;return function(_0x11c34f){return new BPromise(function(_0x3bf0e,_0x5d12be){_[_0x0375('0x8d')](_0x2b6007,_0x11c34f[0x0]);if(checkGetDataPredictive(_0x11c34f[0x0])){var _0x3a80ae=_0x2b6007[_0x0375('0x1cd')]=_0x2b6007[_0x0375('0x9f')]+_0x2b6007['available'];var _0x3a7f2e=_0x2b6007[_0x0375('0x1d0')]*0x3c;var _0x2769a3=_0x11c34f[0x0][_0x0375('0x68')]+_0x11c34f[0x0][_0x0375('0x81')];var _0x4aee3b=(_0x11c34f[0x0][_0x0375('0x67')]+_0x11c34f[0x0][_0x0375('0x7f')]+_0x11c34f[0x0][_0x0375('0x69')])/_0x11c34f[0x0][_0x0375('0x6d')];_0x2b6007[_0x0375('0x6a')]=_0x4aee3b>0x0?_0x4aee3b:0x1;switch(_0x2b6007[_0x0375('0x1dd')]){case _0x0375('0x1d1'):var _0x59232a=_0x2b6007[_0x0375('0x1ca')]/0x64;return _0x17a71b[_0x0375('0x1de')](_0x3a80ae,_0x3a7f2e,_0x2769a3,_0x4aee3b,_0x59232a)['then'](function(_0x23dca3){return _0x3bf0e(_0x23dca3);});case _0x0375('0x1df'):var _0xf13042=_0x2b6007[_0x0375('0x1ca')]/0x64;return _0x17a71b[_0x0375('0x1e0')](_0x3a80ae,_0x3a7f2e,_0x2769a3,_0x4aee3b,_0xf13042)[_0x0375('0xb9')](function(_0x1dbd17){return _0x3bf0e(_0x1dbd17);});default:return _0x5d12be(msgResponse(_0x0375('0x1e1'),'Failure',_0x0375('0x1e2')));}}else{return _0x5d12be(msgResponse(_0x0375('0x1e1'),'Failure',_0x0375('0x1e3')));}});};};Dialer['prototype'][_0x0375('0x1e4')]=function(_0xe014d2){var _0x14d345=this;return function(_0x2ec098){return new BPromise(function(_0x5b850f,_0x5b5bc8){_[_0x0375('0x8d')](_0xe014d2,_0x2ec098[0x0]);if(checkGetDataPredictive(_0x2ec098[0x0])){loggerPredictive[_0x0375('0x7b')](JSON[_0x0375('0x48')](_0x2ec098[0x0]));if(_0xe014d2[_0x0375('0x1dd')]===_0x0375('0x1d1')){return _0x14d345[_0x0375('0xc9')](_0xe014d2['id'])['then'](function(_0x2d96f3){var _0xc365d1=_0xe014d2[_0x0375('0x4e')]-_0x2d96f3[0x0][_0x0375('0x1e5')];var _0x36dfc2=_0xe014d2[_0x0375('0x1d0')]*0x3c;var _0x5c9975=_0x2ec098[0x0]['predictiveIntervalAvgTalktime']+_0x2ec098[0x0][_0x0375('0x81')];var _0x443808=(_0x2ec098[0x0]['predictiveIntervalAnsweredCalls']+_0x2ec098[0x0][_0x0375('0x7f')]+_0x2ec098[0x0][_0x0375('0x69')])/_0x2ec098[0x0][_0x0375('0x6d')];var _0x4fcbc5=_0xe014d2[_0x0375('0x1ca')]/0x64;_0xe014d2[_0x0375('0x6c')]=_0x2d96f3[0x0][_0x0375('0x1e5')]||0x0;_0xe014d2['predictiveIntervalHitRate']=_0x443808>0x0?_0x443808:0x1;return _0x14d345[_0x0375('0x1de')](_0xc365d1,_0x36dfc2,_0x5c9975,_0x443808,_0x4fcbc5);})[_0x0375('0xb9')](function(_0xc20eaa){return _0x5b850f(_0xc20eaa);})[_0x0375('0xb0')](function(_0xefc6e0){return _0x5b5bc8(msgResponse(_0x0375('0x1e6'),_0x0375('0x14b'),JSON[_0x0375('0x48')](_0xefc6e0)));});}if(_0xe014d2[_0x0375('0x1dd')]===_0x0375('0x1df')){return _0x14d345[_0x0375('0xc9')](_0xe014d2['id'])[_0x0375('0xb9')](function(_0x7534f6){var _0x4e79e1=_0xe014d2[_0x0375('0x4e')]-_0x7534f6[0x0]['outboundQueuePauses'];var _0x1e5f39=_0xe014d2[_0x0375('0x1d0')]*0x3c;var _0x547843=_0x2ec098[0x0][_0x0375('0x68')]+_0x2ec098[0x0][_0x0375('0x81')];var _0x1581de=(_0x2ec098[0x0][_0x0375('0x67')]+_0x2ec098[0x0][_0x0375('0x7f')]+_0x2ec098[0x0][_0x0375('0x69')])/_0x2ec098[0x0][_0x0375('0x6d')];var _0x4abf58=_0xe014d2[_0x0375('0x1ca')]/0x64;_0xe014d2[_0x0375('0x6c')]=_0x7534f6[0x0][_0x0375('0x1e5')]||0x0;_0xe014d2[_0x0375('0x6a')]=_0x1581de>0x0?_0x1581de:0x1;return _0x14d345['busyFactor'](_0x4e79e1,_0x1e5f39,_0x547843,_0x1581de,_0x4abf58);})[_0x0375('0xb9')](function(_0x487d24){return _0x5b850f(_0x487d24);})[_0x0375('0xb0')](function(_0x5b3fb0){return _0x5b5bc8(msgResponse(_0x0375('0x1e6'),_0x0375('0x14b'),JSON[_0x0375('0x48')](_0x5b3fb0)));});}}else{return _0x5b5bc8(msgResponse(_0x0375('0x1e1'),_0x0375('0x14b'),_0x0375('0x1e3')));}});};};Dialer[_0x0375('0xa8')]['startMethodPredictive']=function(_0xa73713){var _0x5d893d=this;return function(){var _0xfc108b=0x0;var _0x586932=Math[_0x0375('0x1e7')](_0xa73713[_0x0375('0x8a')]*0x3e8);if(_0x586932>0x0){_0x586932=_0x586932<0x64?0x64:_0x586932;loggerPredictive[_0x0375('0x7b')](_0xa73713[_0x0375('0x40')],_0x0375('0x1e8'),_0x586932,_0x0375('0x49'));_0xa73713[_0x0375('0x8f')]=setInterval(function(){_0x5d893d[_0x0375('0x8f')](_0xa73713);loggerPredictiveCalls[_0x0375('0x7b')]('[handlePredictive]',_0xfc108b+=0x1);},_0x586932);}else{loggerPredictive[_0x0375('0x7b')](_0xa73713[_0x0375('0x40')],_0x0375('0x1e9'));}};};Dialer[_0x0375('0xa8')][_0x0375('0x1ea')]=function(_0x22c130,_0x33952f){var _0x550adb=this;return function(_0x47c662){if(_[_0x0375('0x44')](_0x47c662)){if(_[_0x0375('0xde')](_0x33952f[_0x0375('0x1eb')])||!_0x33952f['recallme']){if(_0x22c130[_0x0375('0x15c')]===_0x0375('0x9')){_0x22c130['queueStatusComplete']=_[_0x0375('0x84')](_0x22c130[_0x0375('0x134')])?!![]:_0x22c130[_0x0375('0x134')];var _0x552989=uuid['v4']();_0x550adb['actions'][_0x552989]=new Action(_0x22c130,_0x33952f,_0x552989);loggerBooked[_0x0375('0x7b')]('[booked][checkContactBlack]',_0x552989,_0x0375('0x1ec'),JSON[_0x0375('0x48')](_0x22c130['queueStatusComplete']),_0x0375('0x1ed'),_0x22c130[_0x0375('0x40')]);if(_0x22c130[_0x0375('0x134')]){_0x22c130[_0x0375('0x134')]=![];_0x550adb[_0x0375('0x2a')][_0x550adb['actions'][_0x552989][_0x0375('0xb4')]]=[];ami[_0x0375('0xae')]({'actionid':_0x552989,'action':_0x0375('0x1ee'),'queue':_0x22c130['name']})[_0x0375('0xb0')](function(){_0x550adb[_0x0375('0xb2')](_0x22c130);_0x550adb[_0x0375('0xc1')]({'active':![],'ContactId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0x100')],'ListId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0xd5')],'VoiceQueueId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0x101')]||undefined,'CampaignId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1ef')));delete _0x550adb[_0x0375('0xac')][_0x552989];});}else{loggerBooked['info'](_0x0375('0x1f0'),JSON[_0x0375('0x48')](_0x22c130[_0x0375('0x134')]),_0x0375('0x1ed'),_0x22c130[_0x0375('0x40')]);_0x550adb['updateOriginated'](_0x22c130);_0x550adb[_0x0375('0xc1')]({'active':![],'ContactId':_0x550adb[_0x0375('0xac')][_0x552989]['ContactId'],'ListId':_0x550adb['actions'][_0x552989][_0x0375('0xd5')],'VoiceQueueId':_0x550adb[_0x0375('0xac')][_0x552989]['VoiceQueueId']||undefined,'CampaignId':_0x550adb[_0x0375('0xac')][_0x552989][_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1ef')));delete _0x550adb[_0x0375('0xac')][_0x552989];}}else{return _0x550adb['actionOriginate'](_0x22c130,_0x33952f);}}else{if(getDiff(_0x33952f[_0x0375('0x1f1')])<_0x22c130[_0x0375('0x1f2')]*0x3c){if(_0x33952f['Agent']&&!_0x33952f[_0x0375('0x1f3')][_0x0375('0x1f4')]){_0x550adb[_0x0375('0x90')]['run'](_0x33952f['id'])[_0x0375('0x20')](function(){_0x550adb[_0x0375('0xb2')](_0x22c130);});}else{_0x550adb[_0x0375('0x1f5')]({'active':![]},_0x33952f['id'],0x1)[_0x0375('0x20')](function(){_0x550adb[_0x0375('0xb2')](_0x22c130);});}}else{_0x22c130[_0x0375('0x65')]+=0x1;_0x550adb['updateOriginated'](_0x22c130);if(_0x22c130['dialRecallInQueue']){_0x550adb[_0x0375('0xc1')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x33952f[_0x0375('0x100')],'ListId':_0x33952f['ListId'],'VoiceQueueId':_0x33952f[_0x0375('0x101')]||undefined,'CampaignId':_0x33952f[_0x0375('0xd6')]||undefined})[_0x0375('0xb0')](loggerCatch(_0x0375('0x1f6')));_0x550adb['createHistory'](createObjHistory(_0x22c130,_0x33952f,_0x0375('0x1f7'),0x17,_0x0375('0x1f8')))[_0x0375('0xb0')](loggerCatch('[Originate][HistoryDialRecallInQueue][historyCatch]'));}else{_0x550adb[_0x0375('0xd3')](createObjHistory(_0x22c130,_0x33952f,_0x0375('0x1f9'),0x16,_0x0375('0x1fa')),_0x0375('0x1fb'),'[Originate][HistoryRecallClose]');}}}}else{_0x22c130['outboundBlacklistCallsDay']+=0x1;_0x550adb['saveInDb'](createObjHistory(_0x22c130,_0x33952f,_0x0375('0x1fc'),0xd,_0x0375('0x1fd')),_0x0375('0x1fe'),_0x0375('0x1ff'));throw _0x0375('0x200');}};};Dialer[_0x0375('0xa8')][_0x0375('0x201')]=function(_0x4a1d4c){var _0x1c0ee0=this;var _0x6acbf3=_0x4a1d4c[_0x0375('0x202')]-_0x4a1d4c[_0x0375('0x97')]-_0x4a1d4c[_0x0375('0xc5')];emitCampaignSummary(_0x4a1d4c);if(_0x6acbf3>0x0){if(_0x6acbf3>this[_0x0375('0x25')]){_0x6acbf3=this[_0x0375('0x25')];}_0x4a1d4c[_0x0375('0xc5')]+=_0x6acbf3;this[_0x0375('0xc7')](_0x4a1d4c['id'],_0x6acbf3,_0x4a1d4c[_0x0375('0x203')],_0x4a1d4c)['then'](function(_0x9cfafa){_0x4a1d4c[_0x0375('0xc5')]-=_0x6acbf3;_0x4a1d4c['temp']=_0x4a1d4c[_0x0375('0xc5')]>0x0?_0x4a1d4c['temp']:0x0;if(!checkContactEmpty(_0x9cfafa)){_0x4a1d4c['message']=_0x0375('0x9d');logger[_0x0375('0x7b')](_0x0375('0x204')+_0x4a1d4c[_0x0375('0x40')]);}else{_0x4a1d4c[_0x0375('0x97')]+=_0x9cfafa[_0x0375('0x96')];_0x4a1d4c[_0x0375('0x3c')]=_0x0375('0x205');for(var _0x5c4e2e=0x0;_0x5c4e2e<_0x9cfafa['length'];_0x5c4e2e+=0x1){_0x4a1d4c['ivrTotalCallsDays']+=0x1;if(_[_0x0375('0xde')](_0x9cfafa[_0x5c4e2e])||_[_0x0375('0xde')](_0x9cfafa[_0x5c4e2e][_0x0375('0x171')])||_[_0x0375('0xde')](_0x9cfafa[_0x5c4e2e][_0x0375('0x171')][_0x0375('0x170')])){_0x1c0ee0[_0x0375('0xd1')](_0x0375('0x206'),_0x4a1d4c,_0x9cfafa[_0x5c4e2e]);}else{_0x1c0ee0[_0x0375('0xbd')](_[_0x0375('0xd4')](_0x9cfafa[_0x5c4e2e],[_0x0375('0xd6'),_0x0375('0x207')]))[_0x0375('0xb9')](_0x1c0ee0['checkContactBlack'](_0x4a1d4c,_0x9cfafa[_0x5c4e2e]))[_0x0375('0xb0')](_0x1c0ee0['loggerHandler'](_0x0375('0x208'),_0x4a1d4c));}}}})[_0x0375('0xb0')](loggerGetContactDialer('[getContactCampaign2]',_0x4a1d4c,_0x6acbf3));}};Dialer[_0x0375('0xa8')][_0x0375('0x15e')]=function(_0x2bdf8e,_0x30a110){var _0x5cf53c=this;var _0x1bd381=[];var _0x5e0733=_0x30a110>=0x1?_0x30a110:0x1;if(_0x2bdf8e[_0x0375('0x15c')]===_0x0375('0x9')){_0x5e0733=0x1;}var _0x1fb446=Math[_0x0375('0x1e7')](_0x2bdf8e[_0x0375('0xa0')]*_0x5e0733)-_0x2bdf8e['originated']-_0x2bdf8e[_0x0375('0xc5')];emitVoiceQueueSummary(_0x2bdf8e);if(_0x2bdf8e['dialLimitQueue']>0x0){var _0x4db49b=_0x2bdf8e[_0x0375('0x209')]-_0x2bdf8e['originated']-_0x2bdf8e['talking']-_0x2bdf8e[_0x0375('0xc5')]-_0x2bdf8e['pTalking'];if(_0x1fb446>_0x4db49b){_0x1fb446=_0x4db49b;}}if(_0x1fb446>0x0){if(_0x2bdf8e[_0x0375('0x15c')]===_0x0375('0x9')){_0x1fb446=0x1;}if(_0x1fb446>this[_0x0375('0x25')]){_0x1fb446=this[_0x0375('0x25')];}_0x2bdf8e[_0x0375('0xc5')]+=_0x1fb446;for(var _0x477edb in this[_0x0375('0x23')]){if(typeof this['agents'][_0x477edb]!==_0x0375('0x98')){if(this[_0x0375('0x23')][_0x477edb]['state']==='not_inuse'&&this[_0x0375('0x23')][_0x477edb][_0x0375('0xaf')]===_0x0375('0x20a')){_0x1bd381[_0x0375('0x132')](this[_0x0375('0x23')][_0x477edb]['id']);}}}this['getContactDialer'](_0x2bdf8e['id'],_0x1bd381,_0x1fb446,_0x2bdf8e['dialOrderByScheduledAt'],_0x2bdf8e)['then'](function(_0x514777){_0x2bdf8e[_0x0375('0xc5')]-=_0x1fb446;_0x2bdf8e[_0x0375('0xc5')]=_0x2bdf8e[_0x0375('0xc5')]>0x0?_0x2bdf8e['temp']:0x0;if(!checkContactEmpty(_0x514777)){_0x5cf53c[_0x0375('0xb7')](_0x2bdf8e)[_0x0375('0xb9')](sendMessageReschedule(_0x2bdf8e))[_0x0375('0xb0')](loggerCatch(_0x0375('0xba')));}else{_0x2bdf8e[_0x0375('0x97')]+=_0x514777[_0x0375('0x96')];_0x2bdf8e[_0x0375('0x3c')]=_0x2bdf8e[_0x0375('0x15c')]===_0x0375('0x9')?_0x0375('0x20b'):_0x0375('0x205');for(var _0x1e3047=0x0;_0x1e3047<_0x514777['length'];_0x1e3047+=0x1){if(_[_0x0375('0xde')](_0x514777[_0x1e3047])||_[_0x0375('0xde')](_0x514777[_0x1e3047]['Contact'])||_[_0x0375('0xde')](_0x514777[_0x1e3047]['Contact']['phone'])){_0x5cf53c['emptyContact'](_0x0375('0x206'),_0x2bdf8e,_0x514777[_0x1e3047]);}else{_0x5cf53c[_0x0375('0xbb')](_[_0x0375('0xd4')](_0x514777[_0x1e3047],[_0x0375('0x101'),_0x0375('0x207')]))[_0x0375('0xb9')](_0x5cf53c[_0x0375('0x1ea')](_0x2bdf8e,_0x514777[_0x1e3047]))[_0x0375('0xb0')](_0x5cf53c[_0x0375('0xd0')](_0x0375('0x206'),_0x2bdf8e));}}}})[_0x0375('0xb0')](loggerGetContactDialer(_0x0375('0x20c'),_0x2bdf8e,_0x1fb446));}};Dialer[_0x0375('0xa8')][_0x0375('0x8f')]=function(_0x1310cd){if(_0x1310cd[_0x0375('0x209')]>0x0){var _0x19540c=_0x1310cd[_0x0375('0x209')]-_0x1310cd[_0x0375('0x97')]-_0x1310cd[_0x0375('0x9f')];if(_0x19540c>0x0){this[_0x0375('0x20d')](_0x1310cd);}else{loggerPredictiveCalls[_0x0375('0x7b')]('[handlePredictive][limitChannel]');}}else{this['tryOriginatePredictive'](_0x1310cd);}};Dialer[_0x0375('0xa8')][_0x0375('0x20d')]=function(_0x204a91){var _0x188331=this;var _0x4eab37=[];_0x204a91[_0x0375('0x97')]+=0x1;for(var _0x2e0ab0 in this['agents']){if(typeof this['agents'][_0x2e0ab0]!==_0x0375('0x98')){if(this['agents'][_0x2e0ab0]['state']===_0x0375('0x20e')&&this[_0x0375('0x23')][_0x2e0ab0][_0x0375('0xaf')]===_0x0375('0x20a')){_0x4eab37['push'](this[_0x0375('0x23')][_0x2e0ab0]['id']);}}}this[_0x0375('0xc4')](_0x204a91['id'],_0x4eab37,0x1,_0x204a91[_0x0375('0x203')],_0x204a91)[_0x0375('0xb9')](function(_0x290464){if(!checkContactEmpty(_0x290464)){checkContactLowerLimitOriginate(_0x204a91,0x1,0x0);_0x188331[_0x0375('0xb7')](_0x204a91)[_0x0375('0xb9')](sendMessageReschedule(_0x204a91))['catch'](loggerCatch(_0x0375('0xba')));}else{_0x204a91[_0x0375('0x3c')]=_0x0375('0x205');if(_['isNil'](_0x290464[0x0])||_[_0x0375('0xde')](_0x290464[0x0][_0x0375('0x171')])||_['isNil'](_0x290464[0x0][_0x0375('0x171')]['phone'])){_0x188331[_0x0375('0xd1')](_0x0375('0x206'),_0x204a91,_0x290464[0x0]);}else{_0x188331[_0x0375('0xbb')](_[_0x0375('0xd4')](_0x290464[0x0],[_0x0375('0x101'),'Contact.phone']))[_0x0375('0xb9')](_0x188331[_0x0375('0x1ea')](_0x204a91,_0x290464[0x0]))[_0x0375('0xb0')](_0x188331[_0x0375('0xd0')](_0x0375('0x20f'),_0x204a91));}}})[_0x0375('0xb0')](loggerGetContactDialer(_0x0375('0x210'),_0x204a91,0x1));emitVoiceQueueSummary(_0x204a91);};Dialer[_0x0375('0xa8')][_0x0375('0x1de')]=function(_0x218ffd,_0x435c41,_0x333638,_0x27f26c,_0x311816,_0x483063){loggerPredictive[_0x0375('0x7b')](_0x0375('0x211'));loggerPredictive['info'](_0x0375('0x212'),_0x218ffd);loggerPredictive[_0x0375('0x7b')](_0x0375('0x213'),_0x435c41);loggerPredictive[_0x0375('0x7b')](_0x0375('0x214'),_0x333638);loggerPredictive[_0x0375('0x7b')](_0x0375('0x215'),_0x27f26c);loggerPredictive[_0x0375('0x7b')](_0x0375('0x216'),_0x311816);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));return new BPromise(function(_0x37ee35,_0x182d72){if(_0x218ffd<=0x0||isNaN(_0x218ffd)){return _0x182d72(msgResponse(_0x0375('0x217'),_0x0375('0x47'),'m\x20=\x20'+_0x218ffd));}if(_0x333638<=0x0||isNaN(_0x333638)){return _0x182d72(msgResponse('[abandonmentRate]',_0x0375('0x47'),'Ts\x20=\x20'+_0x333638));}if(_0x27f26c<=0x0||isNaN(_0x27f26c)){return _0x182d72(msgResponse(_0x0375('0x217'),_0x0375('0x47'),'p\x20=\x20'+_0x27f26c));}if(_0x435c41<=0x0||isNaN(_0x435c41)){return _0x182d72(msgResponse(_0x0375('0x217'),_0x0375('0x47'),_0x0375('0x218')+_0x435c41));}if(_0x311816<=0x0||isNaN(_0x311816)){return _0x182d72(msgResponse('[abandonmentRate]','Error',_0x0375('0x219')+_0x311816));}_0x483063=_0x483063||0x0;var _0x494322=0x1/_0x333638;var _0xb54123=0x0;var _0x45c98=0x0;var _0x2ffc69=0x0;var _0x32ee82=0x0;for(var _0x220c90=0x0;_0x2ffc69<_0x311816;_0x220c90+=0x1){_0x45c98=_0x220c90/_0x435c41;_0xb54123=(_0x27f26c*_0x45c98+_0x483063)/_0x494322;_0x2ffc69=erlangb(_0xb54123,_0x218ffd);_0x32ee82=_0xb54123/_0x218ffd*(0x1-erlangb(_0xb54123,_0x218ffd));}return _0x37ee35({'erlangCalls':_0x220c90,'erlangCallToSecond':_0x435c41/_0x220c90,'erlangAbandonmentRate':_0x2ffc69,'erlangBusyFactor':_0x32ee82});});};Dialer[_0x0375('0xa8')][_0x0375('0x1e0')]=function(_0x2dcc52,_0x55f6b7,_0x184c49,_0x133c8e,_0x313e58,_0x40f2d5){loggerPredictive[_0x0375('0x7b')](_0x0375('0x21a'));loggerPredictive['info'](_0x0375('0x212'),_0x2dcc52);loggerPredictive[_0x0375('0x7b')](_0x0375('0x213'),_0x55f6b7);loggerPredictive[_0x0375('0x7b')](_0x0375('0x214'),_0x184c49);loggerPredictive['info'](_0x0375('0x215'),_0x133c8e);loggerPredictive[_0x0375('0x7b')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x313e58);loggerPredictive[_0x0375('0x7b')](_0x0375('0x83'));return new BPromise(function(_0x42a88c,_0x1df9a7){if(_0x2dcc52<=0x0||isNaN(_0x2dcc52)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),'Error',_0x0375('0x21c')+_0x2dcc52));}if(_0x184c49<=0x0||isNaN(_0x184c49)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),'Ts\x20=\x20'+_0x184c49));}if(_0x133c8e<=0x0||isNaN(_0x133c8e)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),'p\x20=\x20'+_0x133c8e));}if(_0x55f6b7<=0x0||isNaN(_0x55f6b7)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),_0x0375('0x218')+_0x55f6b7));}if(_0x313e58<=0x0||isNaN(_0x313e58)){return _0x1df9a7(msgResponse(_0x0375('0x21b'),_0x0375('0x47'),_0x0375('0x21d')+_0x313e58));}_0x40f2d5=_0x40f2d5||0x0;var _0x2cbb0d=0x1/_0x184c49;var _0x132c5e=0x0;var _0x43542a=0x0;var _0x23a182=0x0;var _0x17682a=0x0;for(var _0x59e321=0x0;_0x17682a<_0x313e58;_0x59e321+=0x1){_0x43542a=_0x59e321/_0x55f6b7;_0x132c5e=(_0x133c8e*_0x43542a+_0x40f2d5)/_0x2cbb0d;_0x23a182=erlangb(_0x132c5e,_0x2dcc52);_0x17682a=_0x132c5e/_0x2dcc52*(0x1-erlangb(_0x132c5e,_0x2dcc52));}return _0x42a88c({'erlangCalls':_0x59e321,'erlangCallToSecond':_0x55f6b7/_0x59e321,'erlangAbandonmentRate':_0x23a182,'erlangBusyFactor':_0x17682a});});};module[_0x0375('0x21e')]=Dialer;
\ No newline at end of file
index 3bae744..2be914f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x845a=['talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','seconds','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','holdtime','droptime'];(function(_0x235bce,_0x516860){var _0x1bbc9a=function(_0x1dbb36){while(--_0x1dbb36){_0x235bce['push'](_0x235bce['shift']());}};_0x1bbc9a(++_0x516860);}(_0x845a,0x1d2));var _0xa845=function(_0xfafc6e,_0x320b2f){_0xfafc6e=_0xfafc6e-0x0;var _0x3c3766=_0x845a[_0xfafc6e];return _0x3c3766;};'use strict';var util=require(_0xa845('0x0'));var _=require(_0xa845('0x1'));var moment=require(_0xa845('0x2'));function getSeconds(_0x261d6b,_0x132615){var _0x621191=moment(_0x261d6b)[_0xa845('0x3')](0x0);var _0x57e6a2=moment(_0x132615)[_0xa845('0x3')](0x0);return _0x621191[_0xa845('0x4')](_0x57e6a2,_0xa845('0x5'));}function QueueCallerAbandon(_0x5eaea2,_0x19061b){this['scheduledat']=_0x5eaea2['scheduledat'];this[_0xa845('0x6')]=_0x5eaea2[_0xa845('0x6')];this[_0xa845('0x7')]=_0x5eaea2[_0xa845('0x6')]===_0xa845('0x8')?_0xa845('0x9'):_0x5eaea2[_0xa845('0x6')];this[_0xa845('0xa')]=_0x5eaea2['countbusyretry'];this[_0xa845('0xb')]=_0x5eaea2['countcongestionretry'];this[_0xa845('0xc')]=_0x5eaea2['countnoanswerretry'];this['countglobal']=_0x5eaea2[_0xa845('0xa')]+_0x5eaea2[_0xa845('0xb')]+_0x5eaea2[_0xa845('0xc')]+_0x5eaea2[_0xa845('0xd')]+_0x5eaea2['countdropretry']+_0x5eaea2[_0xa845('0xe')]+_0x5eaea2[_0xa845('0xf')]+_0x5eaea2['countagentrejectretry'];this[_0xa845('0xd')]=_0x5eaea2['countnosuchnumberretry'];this[_0xa845('0x10')]=_0x5eaea2[_0xa845('0x10')];this[_0xa845('0xe')]=_0x5eaea2[_0xa845('0xe')];this[_0xa845('0xf')]=_0x5eaea2[_0xa845('0xf')];this[_0xa845('0x11')]=_0x5eaea2[_0xa845('0x11')];this[_0xa845('0x12')]=_0x19061b[_0xa845('0x12')];this['calleridname']=_0x5eaea2[_0xa845('0x13')];this[_0xa845('0x14')]=_0x5eaea2[_0xa845('0x15')];this[_0xa845('0x16')]=_0x5eaea2['starttime'];this[_0xa845('0x17')]=_0x5eaea2[_0xa845('0x17')];this['droptime']=_0x5eaea2['droptime'];this['endtime']=this['droptime'];this['ringtime']=getSeconds(_0x5eaea2[_0xa845('0x17')],_0x5eaea2[_0xa845('0x16')]);this[_0xa845('0x18')]=getSeconds(this[_0xa845('0x19')],_0x5eaea2[_0xa845('0x17')]);this[_0xa845('0x1a')]=0x0;this[_0xa845('0x9')]=_0x19061b[_0xa845('0x9')];this[_0xa845('0x1b')]=_0x19061b['connectedlinename'];this[_0xa845('0x1c')]=_0x19061b[_0xa845('0x1c')];this[_0xa845('0x1d')]=_0x5eaea2[_0xa845('0x1d')];this['callbackuniqueid']=_0x5eaea2[_0xa845('0x1e')];this[_0xa845('0x1f')]=_0x5eaea2[_0xa845('0x1f')];this[_0xa845('0x20')]=_0x5eaea2['recallme'];this[_0xa845('0x21')]=_0x5eaea2[_0xa845('0x21')];this[_0xa845('0x22')]=_0x5eaea2['ListId'];this[_0xa845('0x23')]=_0x5eaea2[_0xa845('0x23')];this[_0xa845('0x24')]=_0x5eaea2[_0xa845('0x24')];this[_0xa845('0x25')]=_0x5eaea2[_0xa845('0x25')];this['originatecalleridnum']=_0x5eaea2[_0xa845('0x26')]||'';this[_0xa845('0x27')]=_0x5eaea2[_0xa845('0x27')]||'';}module[_0xa845('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0xc96d=['campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','droptime','endtime','ringtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','moment','milliseconds','diff','seconds','scheduledat','type'];(function(_0x46cc04,_0x5a6bef){var _0x400c05=function(_0x885527){while(--_0x885527){_0x46cc04['push'](_0x46cc04['shift']());}};_0x400c05(++_0x5a6bef);}(_0xc96d,0x11f));var _0xdc96=function(_0x5074ef,_0x46cecf){_0x5074ef=_0x5074ef-0x0;var _0x2be1ba=_0xc96d[_0x5074ef];return _0x2be1ba;};'use strict';var util=require('util');var _=require(_0xdc96('0x0'));var moment=require(_0xdc96('0x1'));function getSeconds(_0x2bd346,_0x156721){var _0xb22901=moment(_0x2bd346)[_0xdc96('0x2')](0x0);var _0x5f406e=moment(_0x156721)[_0xdc96('0x2')](0x0);return _0xb22901[_0xdc96('0x3')](_0x5f406e,_0xdc96('0x4'));}function QueueCallerAbandon(_0x39075b,_0x24a801){this[_0xdc96('0x5')]=_0x39075b[_0xdc96('0x5')];this[_0xdc96('0x6')]=_0x39075b[_0xdc96('0x6')];this[_0xdc96('0x7')]=_0x39075b[_0xdc96('0x6')]==='outbound'?'queue':_0x39075b[_0xdc96('0x6')];this['countbusyretry']=_0x39075b[_0xdc96('0x8')];this[_0xdc96('0x9')]=_0x39075b[_0xdc96('0x9')];this[_0xdc96('0xa')]=_0x39075b[_0xdc96('0xa')];this['countglobal']=_0x39075b[_0xdc96('0x8')]+_0x39075b[_0xdc96('0x9')]+_0x39075b['countnoanswerretry']+_0x39075b[_0xdc96('0xb')]+_0x39075b[_0xdc96('0xc')]+_0x39075b[_0xdc96('0xd')]+_0x39075b[_0xdc96('0xe')]+_0x39075b[_0xdc96('0xf')];this['countnosuchnumberretry']=_0x39075b['countnosuchnumberretry'];this[_0xdc96('0xc')]=_0x39075b[_0xdc96('0xc')];this[_0xdc96('0xd')]=_0x39075b[_0xdc96('0xd')];this[_0xdc96('0xe')]=_0x39075b[_0xdc96('0xe')];this[_0xdc96('0xf')]=_0x39075b[_0xdc96('0xf')];this[_0xdc96('0x10')]=_0x24a801[_0xdc96('0x10')];this[_0xdc96('0x11')]=_0x39075b[_0xdc96('0x12')];this[_0xdc96('0x13')]=_0x39075b['number'];this['starttime']=_0x39075b[_0xdc96('0x14')];this['responsetime']=_0x39075b[_0xdc96('0x15')];this[_0xdc96('0x16')]=_0x39075b['droptime'];this[_0xdc96('0x17')]=this[_0xdc96('0x16')];this[_0xdc96('0x18')]=getSeconds(_0x39075b['responsetime'],_0x39075b[_0xdc96('0x14')]);this[_0xdc96('0x19')]=getSeconds(this[_0xdc96('0x16')],_0x39075b[_0xdc96('0x15')]);this[_0xdc96('0x1a')]=0x0;this[_0xdc96('0x1b')]=_0x24a801[_0xdc96('0x1b')];this[_0xdc96('0x1c')]=_0x24a801[_0xdc96('0x1d')];this[_0xdc96('0x1e')]=_0x24a801['reason'];this['callback']=_0x39075b[_0xdc96('0x1f')];this[_0xdc96('0x20')]=_0x39075b[_0xdc96('0x20')];this['callbackat']=_0x39075b['callbackat'];this[_0xdc96('0x21')]=_0x39075b[_0xdc96('0x21')];this[_0xdc96('0x22')]=_0x39075b[_0xdc96('0x22')];this[_0xdc96('0x23')]=_0x39075b['ListId'];this[_0xdc96('0x24')]=_0x39075b[_0xdc96('0x24')];this[_0xdc96('0x25')]=_0x39075b[_0xdc96('0x25')];this[_0xdc96('0x26')]=_0x39075b[_0xdc96('0x26')];this[_0xdc96('0x27')]=_0x39075b[_0xdc96('0x27')]||'';this[_0xdc96('0x28')]=_0x39075b[_0xdc96('0x28')]||'';}module[_0xdc96('0x29')]=QueueCallerAbandon;
\ No newline at end of file
index b47acaf..f735e62 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(_0x7ee44,_0x2e0bdf){var _0x184617=function(_0x51f8a4){while(--_0x51f8a4){_0x7ee44['push'](_0x7ee44['shift']());}};_0x184617(++_0x2e0bdf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa9e0[_0x2160a9];return _0xa88cf7;};'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(_0x3e0796,_0x4dff83){var _0x27810c=function(_0x1d9633){while(--_0x1d9633){_0x3e0796['push'](_0x3e0796['shift']());}};_0x27810c(++_0x4dff83);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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 531492c..4acf56c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc04=['Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','tiff2pdf','../../../config/logger','fax','./rpcDb','./channel','./action','../rpc/faxAccount','../rpc/faxMessage','faxAccounts','trunks','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','syncReceiveFax','hangup','originateresponse','syncOriginateResponse','prototype','context','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','filename','calleridnum','\x20result\x20conversion\x20file\x20','message','create','parse','name','application/pdf','then','notify','catch','error','\x20notify\x20','stringify','\x20receiveFax\x20','actions','merge','pick','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','addVariables','ext','.pdf','isTrunkReachable','isNil','active','SIP/%s','unmonitored','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]'];(function(_0xb591e,_0x268858){var _0x1c386d=function(_0x39d39a){while(--_0x39d39a){_0xb591e['push'](_0xb591e['shift']());}};_0x1c386d(++_0x268858);}(_0xbc04,0x7e));var _0x4bc0=function(_0x1a4465,_0x4b15bb){_0x1a4465=_0x1a4465-0x0;var _0x3282ae=_0xbc04[_0x1a4465];return _0x3282ae;};'use strict';var util=require(_0x4bc0('0x0'));var _=require(_0x4bc0('0x1'));var BPromise=require(_0x4bc0('0x2'));var uuid=require(_0x4bc0('0x3'));var moment=require(_0x4bc0('0x4'));var path=require('path');var tiff2pdf=require(_0x4bc0('0x5'));var gs=require('./util/gs');var logger=require(_0x4bc0('0x6'))(_0x4bc0('0x7'));var ami=require('../ami');var rpcDb=require(_0x4bc0('0x8'));var Channel=require(_0x4bc0('0x9'));var ut=require('./util/util');var Action=require(_0x4bc0('0xa'));var faxAccount=require(_0x4bc0('0xb'));var attachment=require('../rpc/attachment');var faxMessage=require(_0x4bc0('0xc'));function Fax(_0x10bec5){this['channels']={};this[_0x4bc0('0xd')]=_0x10bec5['faxAccounts'];this[_0x4bc0('0xe')]=_0x10bec5[_0x4bc0('0xe')];this['actions']={};ami['on']('newchannel',this[_0x4bc0('0xf')][_0x4bc0('0x10')](this));ami['on'](_0x4bc0('0x11'),this[_0x4bc0('0x12')][_0x4bc0('0x10')](this));ami['on'](_0x4bc0('0x13'),this[_0x4bc0('0x14')]['bind'](this));ami['on'](_0x4bc0('0x15'),this[_0x4bc0('0x16')]['bind'](this));ami['on'](_0x4bc0('0x17'),this[_0x4bc0('0x18')]['bind'](this));ami['on'](_0x4bc0('0x19'),this[_0x4bc0('0x1a')][_0x4bc0('0x10')](this));ami['on'](_0x4bc0('0x1b'),this['syncHangup'][_0x4bc0('0x10')](this));ami['on'](_0x4bc0('0x1c'),this[_0x4bc0('0x1d')]['bind'](this));}Fax[_0x4bc0('0x1e')][_0x4bc0('0xf')]=function(_0x17a456){if(_0x17a456[_0x4bc0('0x1f')]==='from-voip-provider'){for(var _0xa9826b in this[_0x4bc0('0xd')]){if(this[_0x4bc0('0xd')][_0x4bc0('0x20')](_0xa9826b)){if(_0x17a456[_0x4bc0('0x21')]===this[_0x4bc0('0xd')][_0xa9826b][_0x4bc0('0x22')]){this[_0x4bc0('0x23')][_0x17a456[_0x4bc0('0x24')]]={};this['channels'][_0x17a456[_0x4bc0('0x24')]][_0x4bc0('0x25')]=_0x17a456[_0x4bc0('0x25')];this['channels'][_0x17a456['uniqueid']]['id']=this[_0x4bc0('0xd')][_0xa9826b]['id'];this['channels'][_0x17a456[_0x4bc0('0x24')]]['name']=this[_0x4bc0('0xd')][_0xa9826b]['name'];logger[_0x4bc0('0x26')](_0x17a456[_0x4bc0('0x24')],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x17a456[_0x4bc0('0x24')]]){this['channels'][_0x17a456['uniqueid']]={};this[_0x4bc0('0x23')][_0x17a456[_0x4bc0('0x24')]][_0x4bc0('0x25')]=_0x17a456[_0x4bc0('0x25')];logger[_0x4bc0('0x26')](_0x17a456['uniqueid'],_0x4bc0('0x27'));}};Fax[_0x4bc0('0x1e')]['syncVarSet']=function(_0x10aece){if(this[_0x4bc0('0x23')][_0x10aece[_0x4bc0('0x24')]]){for(var _0x129e94 in _0x10aece['variable']){if(_0x10aece[_0x4bc0('0x28')]['hasOwnProperty'](_0x129e94)){this[_0x4bc0('0x23')][_0x10aece[_0x4bc0('0x24')]][_0x129e94]=_0x10aece[_0x4bc0('0x29')];}}}};Fax['prototype'][_0x4bc0('0x14')]=function(_0x3943a0){if(this[_0x4bc0('0x23')][_0x3943a0[_0x4bc0('0x24')]]){this[_0x4bc0('0x23')][_0x3943a0[_0x4bc0('0x24')]][_0x4bc0('0x2a')]=_0x3943a0[_0x4bc0('0x2a')];this[_0x4bc0('0x23')][_0x3943a0[_0x4bc0('0x24')]]['channelstatedesc']=_0x3943a0[_0x4bc0('0x2b')];}};Fax['prototype'][_0x4bc0('0x16')]=function(_0x10ff57){if(this[_0x4bc0('0x23')][_0x10ff57[_0x4bc0('0x24')]]){for(var _0x2800ee in _0x10ff57[_0x4bc0('0x28')]){if(_0x10ff57[_0x4bc0('0x28')][_0x4bc0('0x20')](_0x2800ee)){this['channels'][_0x10ff57['uniqueid']][_0x2800ee]=_0x10ff57[_0x4bc0('0x29')];}}}};Fax['prototype'][_0x4bc0('0x18')]=function(_0x302ab9){if(this['channels'][_0x302ab9[_0x4bc0('0x24')]]){this[_0x4bc0('0x23')][_0x302ab9['uniqueid']][_0x4bc0('0x2c')]=_0x302ab9[_0x4bc0('0x2c')];this[_0x4bc0('0x23')][_0x302ab9['uniqueid']][_0x4bc0('0x2d')]=_0x302ab9[_0x4bc0('0x2d')];this[_0x4bc0('0x23')][_0x302ab9[_0x4bc0('0x24')]]['localstationid']=_0x302ab9[_0x4bc0('0x22')];this[_0x4bc0('0x23')][_0x302ab9['uniqueid']]['filename']=_0x302ab9['filename'];logger['info'](_0x302ab9[_0x4bc0('0x24')],_0x4bc0('0x2e'));}};Fax['prototype'][_0x4bc0('0x1a')]=function(_0x1e44b0){var _0x1ee06c=this;if(this[_0x4bc0('0x23')][_0x1e44b0[_0x4bc0('0x24')]]){var _0x15d3ac=this['channels'][_0x1e44b0['uniqueid']]['id'];this[_0x4bc0('0x23')][_0x1e44b0[_0x4bc0('0x24')]][_0x4bc0('0x2f')]=_0x1e44b0[_0x4bc0('0x2f')];this[_0x4bc0('0x23')][_0x1e44b0['uniqueid']][_0x4bc0('0x30')]=_0x1e44b0['pagestransferred'];this['channels'][_0x1e44b0['uniqueid']][_0x4bc0('0x22')]=_0x1e44b0['localstationid'];this[_0x4bc0('0x23')][_0x1e44b0[_0x4bc0('0x24')]][_0x4bc0('0x31')]=_0x1e44b0['resolution'];this['channels'][_0x1e44b0['uniqueid']][_0x4bc0('0x32')]=_0x1e44b0['transferrate'];this['channels'][_0x1e44b0['uniqueid']][_0x4bc0('0x33')]=_0x1e44b0[_0x4bc0('0x33')];this[_0x4bc0('0x23')][_0x1e44b0[_0x4bc0('0x24')]]['calleridnum']=_0x1e44b0[_0x4bc0('0x34')];if(this[_0x4bc0('0x23')][_0x1e44b0['uniqueid']]['pagestransferred']>0x0){tiff2pdf(_0x1e44b0[_0x4bc0('0x33')],'/var/opt/motion2/server/files/attachments/',function(_0x564356){logger['info'](_0x1e44b0['uniqueid'],_0x4bc0('0x35'),_0x564356[_0x4bc0('0x36')]);attachment[_0x4bc0('0x37')]({'name':path[_0x4bc0('0x38')](_0x1e44b0[_0x4bc0('0x33')])['name'],'basename':path[_0x4bc0('0x38')](_0x1e44b0['filename'])[_0x4bc0('0x39')]+'.pdf','type':_0x4bc0('0x3a')})[_0x4bc0('0x3b')](function(_0x2ce280){faxAccount[_0x4bc0('0x3c')](_0x15d3ac,{'from':_0x1e44b0[_0x4bc0('0x34')],'mapKey':_0x4bc0('0x7'),'body':path['parse'](_0x1e44b0[_0x4bc0('0x33')])[_0x4bc0('0x39')]+'.pdf','AttachmentId':_0x2ce280['id']})[_0x4bc0('0x3d')](function(_0x9d0799){logger[_0x4bc0('0x3e')](_0x1e44b0[_0x4bc0('0x24')],_0x4bc0('0x3f'),JSON[_0x4bc0('0x40')](_0x9d0799));});})[_0x4bc0('0x3d')](function(_0xe2acf1){logger[_0x4bc0('0x3e')](_0x1e44b0[_0x4bc0('0x24')],_0x4bc0('0x41'),JSON['stringify'](_0xe2acf1));});});}logger['info'](_0x1e44b0['uniqueid'],_0x4bc0('0x41'));}};Fax[_0x4bc0('0x1e')][_0x4bc0('0x1d')]=function(_0x813cad){if(this[_0x4bc0('0x42')][_0x813cad[_0x4bc0('0x24')]]){_[_0x4bc0('0x43')](this[_0x4bc0('0x23')][_0x813cad[_0x4bc0('0x24')]],_[_0x4bc0('0x44')](_0x813cad,[_0x4bc0('0x45'),_0x4bc0('0x46')]));}};function updateStatus(_0x2da6e5){if(_0x2da6e5[_0x4bc0('0x47')]){faxMessage[_0x4bc0('0x48')](_0x2da6e5[_0x4bc0('0x47')],{'failMessage':_0x4bc0('0x49')})[_0x4bc0('0x3b')](function(_0x42c293){ut[_0x4bc0('0x4a')]('[Fax][Message][Error][Updated]',_0x42c293);})[_0x4bc0('0x3d')](function(_0x11e7c0){ut['logger'](_0x4bc0('0x4b'),_0x11e7c0);});}else{ut[_0x4bc0('0x4a')](_0x4bc0('0x4c'));}}Fax[_0x4bc0('0x1e')][_0x4bc0('0x4d')]=function(_0x49fe58,_0x163fc6,_0x2c5a3d){var _0x58a341=this;var _0x22cd21={};if(_0x163fc6){_0x22cd21={'read':_0x163fc6};}else{_0x22cd21={'failMessage':_0x2c5a3d};}if(this[_0x4bc0('0x42')][_0x49fe58][_0x4bc0('0x47')]){faxMessage[_0x4bc0('0x48')](this[_0x4bc0('0x42')][_0x49fe58]['AttachmentId'],_0x22cd21)[_0x4bc0('0x3b')](function(_0x5de99e){ut[_0x4bc0('0x4a')](_0x4bc0('0x4e'),_0x5de99e);})[_0x4bc0('0x3d')](function(_0x3adf8c){ut['logger'](_0x4bc0('0x4f'),_0x3adf8c);})[_0x4bc0('0x50')](function(){delete _0x58a341[_0x4bc0('0x23')][_0x49fe58];delete _0x58a341[_0x4bc0('0x42')][_0x49fe58];});}else{ut[_0x4bc0('0x4a')](_0x4bc0('0x51'));delete this[_0x4bc0('0x23')][_0x49fe58];delete this['actions'][_0x49fe58];}};Fax[_0x4bc0('0x1e')][_0x4bc0('0x52')]=function(_0x1cccbb){var _0x2c6cf8=this;if(this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]]){if(this[_0x4bc0('0x42')][_0x1cccbb[_0x4bc0('0x24')]]){this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]]['id']=this[_0x4bc0('0x42')][_0x1cccbb[_0x4bc0('0x24')]]['id'];this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]][_0x4bc0('0x39')]=this[_0x4bc0('0x42')][_0x1cccbb[_0x4bc0('0x24')]][_0x4bc0('0x39')];}logger[_0x4bc0('0x26')](_0x1cccbb[_0x4bc0('0x24')],this['actions'][_0x1cccbb[_0x4bc0('0x24')]]?_0x4bc0('0x53'):_0x4bc0('0x54'),JSON['stringify'](this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]]));if(this['actions'][_0x1cccbb[_0x4bc0('0x24')]]){if(this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]]['faxpages']>0x0&&this['channels'][_0x1cccbb[_0x4bc0('0x24')]][_0x4bc0('0x17')]==='SUCCESS'){this[_0x4bc0('0x4d')](_0x1cccbb[_0x4bc0('0x24')],!![]);}else{this['updateStatus'](_0x1cccbb[_0x4bc0('0x24')],![],this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]][_0x4bc0('0x55')]?_0x4bc0('0x56')+this[_0x4bc0('0x23')][_0x1cccbb[_0x4bc0('0x24')]][_0x4bc0('0x55')]:_0x4bc0('0x57'));}}}};Fax[_0x4bc0('0x1e')][_0x4bc0('0x58')]=function(_0x58463a){var _0x579aab=this;return new BPromise(function(_0x37dfdc,_0x30a79c){_0x579aab[_0x4bc0('0x59')](_0x58463a,_0x579aab['faxAccounts'][_0x58463a[_0x4bc0('0x5a')]])['then'](function(_0x280db4){ut[_0x4bc0('0x4a')](_0x4bc0('0x5b'),_0x280db4);_0x37dfdc(ut[_0x4bc0('0x36')]('Fax\x20received'));})[_0x4bc0('0x3d')](function(_0x37b6e5){ut[_0x4bc0('0x4a')](_0x4bc0('0x5c'),_0x37b6e5);updateStatus(_0x58463a);_0x30a79c(ut[_0x4bc0('0x36')]('Fax\x20failed'));});});};Fax[_0x4bc0('0x1e')][_0x4bc0('0x5d')]=function(_0x31b891){var _0xd5ed68=this;return new BPromise(function(_0x2c8f49,_0x30bcaf){var _0x45c230=_0xd5ed68[_0x4bc0('0x5e')](_0xd5ed68[_0x4bc0('0xd')][_0x31b891[_0x4bc0('0x5a')]][_0x4bc0('0x5f')],_0x31b891);if(_0x45c230[_0x4bc0('0x60')]){_0x2c8f49(ut['message'](_0x4bc0('0x61')));}else{_0x30bcaf(ut[_0x4bc0('0x36')](_0x45c230['message']));}});};function originate(_0x358492,_0x5d5217,_0x548017){return new BPromise(function(_0x4597fd,_0x42e62c){if(_0x548017){var _0x4827a8=util[_0x4bc0('0x62')](_0x4bc0('0x63'),path[_0x4bc0('0x38')](_0x358492[_0x4bc0('0x64')])[_0x4bc0('0x39')],_0x358492['path']);gs[_0x4bc0('0x65')](_0x4827a8)[_0x4bc0('0x3b')](function(){_0x358492[_0x4bc0('0x64')]=util[_0x4bc0('0x62')](_0x4bc0('0x66'),path[_0x4bc0('0x38')](_0x358492[_0x4bc0('0x64')])[_0x4bc0('0x67')],path[_0x4bc0('0x38')](_0x358492[_0x4bc0('0x64')])[_0x4bc0('0x39')]);_0x5d5217[_0x4bc0('0x68')]=_0x358492[_0x4bc0('0x64')];ut[_0x4bc0('0x4a')](_0x4bc0('0x69'),'');ami[_0x4bc0('0x6a')](ut[_0x4bc0('0x6b')](_0x358492,_0x5d5217))[_0x4bc0('0x3b')](function(_0x3a48a9){_0x4597fd(_0x3a48a9);})['catch'](function(_0x386bd4){_0x42e62c(_0x386bd4);});})[_0x4bc0('0x3d')](function(_0x4d7058){_0x42e62c(_0x4d7058);});}else{ami[_0x4bc0('0x6a')](ut[_0x4bc0('0x6b')](_0x358492,_0x5d5217))[_0x4bc0('0x3b')](function(_0x196ef2){_0x4597fd(_0x196ef2);})[_0x4bc0('0x3d')](function(_0x1d2e40){_0x42e62c(_0x1d2e40);});}});}Fax[_0x4bc0('0x1e')]['execOriginate']=function(_0x1141c1,_0x3adef6){var _0x52672c=this;return new BPromise(function(_0x5ae0ab,_0xfdd604){var _0x4d351a=uuid['v4']();var _0x5c1573=ut[_0x4bc0('0x6c')](_0x1141c1,_0x3adef6);_0x52672c[_0x4bc0('0x42')][_0x4d351a]=new Action(_0x4d351a,_0x3adef6,_0x1141c1);var _0x6c02cb=_0x52672c[_0x4bc0('0x42')][_0x4d351a];if(path[_0x4bc0('0x38')](_0x1141c1[_0x4bc0('0x64')])[_0x4bc0('0x6d')]===_0x4bc0('0x6e')){originate(_0x6c02cb,_0x5c1573,!![])['then'](function(_0x47b98b){_0x5ae0ab(_0x47b98b);})[_0x4bc0('0x3d')](function(_0x121810){_0xfdd604(_0x121810);});}else{originate(_0x6c02cb,_0x5c1573,![])['then'](function(_0x136196){_0x5ae0ab(_0x136196);})[_0x4bc0('0x3d')](function(_0x3e2445){_0xfdd604(_0x3e2445);});}});};Fax[_0x4bc0('0x1e')][_0x4bc0('0x6f')]=function(_0x55ca7d){return!_[_0x4bc0('0x70')](_0x55ca7d)&&!_[_0x4bc0('0x70')](_0x55ca7d[_0x4bc0('0x39')])&&!_[_0x4bc0('0x70')](_0x55ca7d[_0x4bc0('0x71')])&&_0x55ca7d['active']&&!_['isNil'](this[_0x4bc0('0xe')][util[_0x4bc0('0x62')]('SIP/%s',_0x55ca7d[_0x4bc0('0x39')])])&&!_['isNil'](this[_0x4bc0('0xe')][util[_0x4bc0('0x62')](_0x4bc0('0x72'),_0x55ca7d[_0x4bc0('0x39')])]['status'])&&(this[_0x4bc0('0xe')][util[_0x4bc0('0x62')](_0x4bc0('0x72'),_0x55ca7d['name'])]['status']==='reachable'||this['trunks'][util[_0x4bc0('0x62')](_0x4bc0('0x72'),_0x55ca7d[_0x4bc0('0x39')])][_0x4bc0('0x2d')]===_0x4bc0('0x73'));};Fax['prototype'][_0x4bc0('0x5e')]=function(_0x54d118,_0x28c7a2){if(!this[_0x4bc0('0x6f')](_0x54d118)){ut['logger']('[Fax][checkTrunk][Trunk\x20not\x20work]',_[_0x4bc0('0x70')](_0x54d118)?'':_0x54d118[_0x4bc0('0x39')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x4bc0('0x74')};}if(_['isNil'](_0x28c7a2[_0x4bc0('0x7')])){ut[_0x4bc0('0x4a')](_0x4bc0('0x75'),JSON[_0x4bc0('0x40')](_0x28c7a2));return{'isValid':![],'message':_0x4bc0('0x76')};}if(_[_0x4bc0('0x70')](_0x28c7a2[_0x4bc0('0x64')])){ut[_0x4bc0('0x4a')](_0x4bc0('0x77'),JSON[_0x4bc0('0x40')](_0x28c7a2));return{'isValid':![],'message':'Empty\x20path'};}return{'isValid':!![],'message':_0x4bc0('0x78')};};module[_0x4bc0('0x79')]=Fax;
\ No newline at end of file
+var _0xe5c4=['send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','checkAfterSend','checkTrunk','Trunk\x20Reachable','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','execute','format','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','uuid','moment','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./channel','./action','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','syncVarSet','newexten','syncNewExten','syncFaxStatus','receivefax','syncReceiveFax','syncOriginateResponse','from-voip-provider','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','prototype','variable','hasOwnProperty','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','error','\x20notify\x20','stringify','catch','\x20receiveFax\x20','merge','pick','response','reason','update','AttachmentId','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatus','SUCCESS','SENDING\x20FAILED:\x20','SENDING\x20FAILED'];(function(_0x3747ae,_0x408e61){var _0x339035=function(_0x83be87){while(--_0x83be87){_0x3747ae['push'](_0x3747ae['shift']());}};_0x339035(++_0x408e61);}(_0xe5c4,0x1ed));var _0x4e5c=function(_0x10cd1d,_0xe35e2c){_0x10cd1d=_0x10cd1d-0x0;var _0x5e35dd=_0xe5c4[_0x10cd1d];return _0x5e35dd;};'use strict';var util=require(_0x4e5c('0x0'));var _=require(_0x4e5c('0x1'));var BPromise=require('bluebird');var uuid=require(_0x4e5c('0x2'));var moment=require(_0x4e5c('0x3'));var path=require('path');var tiff2pdf=require('tiff2pdf');var gs=require(_0x4e5c('0x4'));var logger=require(_0x4e5c('0x5'))(_0x4e5c('0x6'));var ami=require(_0x4e5c('0x7'));var rpcDb=require(_0x4e5c('0x8'));var Channel=require(_0x4e5c('0x9'));var ut=require('./util/util');var Action=require(_0x4e5c('0xa'));var faxAccount=require('../rpc/faxAccount');var attachment=require(_0x4e5c('0xb'));var faxMessage=require(_0x4e5c('0xc'));function Fax(_0x5270fb){this[_0x4e5c('0xd')]={};this['faxAccounts']=_0x5270fb[_0x4e5c('0xe')];this[_0x4e5c('0xf')]=_0x5270fb[_0x4e5c('0xf')];this[_0x4e5c('0x10')]={};ami['on'](_0x4e5c('0x11'),this[_0x4e5c('0x12')][_0x4e5c('0x13')](this));ami['on']('varset',this[_0x4e5c('0x14')]['bind'](this));ami['on']('newstate',this['syncNewState'][_0x4e5c('0x13')](this));ami['on'](_0x4e5c('0x15'),this[_0x4e5c('0x16')][_0x4e5c('0x13')](this));ami['on']('faxstatus',this[_0x4e5c('0x17')][_0x4e5c('0x13')](this));ami['on'](_0x4e5c('0x18'),this[_0x4e5c('0x19')][_0x4e5c('0x13')](this));ami['on']('hangup',this['syncHangup'][_0x4e5c('0x13')](this));ami['on']('originateresponse',this[_0x4e5c('0x1a')][_0x4e5c('0x13')](this));}Fax['prototype']['syncNewchannel']=function(_0x635c72){if(_0x635c72['context']===_0x4e5c('0x1b')){for(var _0x2bc2cb in this['faxAccounts']){if(this['faxAccounts']['hasOwnProperty'](_0x2bc2cb)){if(_0x635c72['exten']===this[_0x4e5c('0xe')][_0x2bc2cb][_0x4e5c('0x1c')]){this['channels'][_0x635c72[_0x4e5c('0x1d')]]={};this['channels'][_0x635c72[_0x4e5c('0x1d')]]['channel']=_0x635c72[_0x4e5c('0x1e')];this[_0x4e5c('0xd')][_0x635c72['uniqueid']]['id']=this['faxAccounts'][_0x2bc2cb]['id'];this['channels'][_0x635c72[_0x4e5c('0x1d')]][_0x4e5c('0x1f')]=this[_0x4e5c('0xe')][_0x2bc2cb][_0x4e5c('0x1f')];logger['info'](_0x635c72[_0x4e5c('0x1d')],'\x20syncNewchannel\x20');}}}}if(this[_0x4e5c('0x10')][_0x635c72['uniqueid']]){this[_0x4e5c('0xd')][_0x635c72[_0x4e5c('0x1d')]]={};this[_0x4e5c('0xd')][_0x635c72['uniqueid']][_0x4e5c('0x1e')]=_0x635c72[_0x4e5c('0x1e')];logger[_0x4e5c('0x20')](_0x635c72['uniqueid'],_0x4e5c('0x21'));}};Fax[_0x4e5c('0x22')][_0x4e5c('0x14')]=function(_0x1ee20e){if(this[_0x4e5c('0xd')][_0x1ee20e[_0x4e5c('0x1d')]]){for(var _0x51c8ad in _0x1ee20e[_0x4e5c('0x23')]){if(_0x1ee20e['variable'][_0x4e5c('0x24')](_0x51c8ad)){this[_0x4e5c('0xd')][_0x1ee20e['uniqueid']][_0x51c8ad]=_0x1ee20e[_0x4e5c('0x25')];}}}};Fax[_0x4e5c('0x22')]['syncNewState']=function(_0xd7ac64){if(this[_0x4e5c('0xd')][_0xd7ac64[_0x4e5c('0x1d')]]){this[_0x4e5c('0xd')][_0xd7ac64[_0x4e5c('0x1d')]][_0x4e5c('0x26')]=_0xd7ac64[_0x4e5c('0x26')];this[_0x4e5c('0xd')][_0xd7ac64['uniqueid']][_0x4e5c('0x27')]=_0xd7ac64[_0x4e5c('0x27')];}};Fax[_0x4e5c('0x22')][_0x4e5c('0x16')]=function(_0x224348){if(this[_0x4e5c('0xd')][_0x224348[_0x4e5c('0x1d')]]){for(var _0x45b908 in _0x224348['variable']){if(_0x224348[_0x4e5c('0x23')][_0x4e5c('0x24')](_0x45b908)){this[_0x4e5c('0xd')][_0x224348[_0x4e5c('0x1d')]][_0x45b908]=_0x224348[_0x4e5c('0x25')];}}}};Fax['prototype'][_0x4e5c('0x17')]=function(_0x4c15ad){if(this[_0x4e5c('0xd')][_0x4c15ad['uniqueid']]){this['channels'][_0x4c15ad[_0x4e5c('0x1d')]]['operation']=_0x4c15ad[_0x4e5c('0x28')];this[_0x4e5c('0xd')][_0x4c15ad[_0x4e5c('0x1d')]]['status']=_0x4c15ad[_0x4e5c('0x29')];this[_0x4e5c('0xd')][_0x4c15ad[_0x4e5c('0x1d')]][_0x4e5c('0x1c')]=_0x4c15ad[_0x4e5c('0x1c')];this['channels'][_0x4c15ad[_0x4e5c('0x1d')]]['filename']=_0x4c15ad[_0x4e5c('0x2a')];logger[_0x4e5c('0x20')](_0x4c15ad[_0x4e5c('0x1d')],_0x4e5c('0x2b'));}};Fax[_0x4e5c('0x22')][_0x4e5c('0x19')]=function(_0x2e5276){var _0x10b70a=this;if(this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]){var _0x23f606=this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]['id'];this[_0x4e5c('0xd')][_0x2e5276['uniqueid']][_0x4e5c('0x2c')]=_0x2e5276['remotestationid'];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x2d')]=_0x2e5276[_0x4e5c('0x2d')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x1c')]=_0x2e5276[_0x4e5c('0x1c')];this[_0x4e5c('0xd')][_0x2e5276['uniqueid']][_0x4e5c('0x2e')]=_0x2e5276[_0x4e5c('0x2e')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x2f')]=_0x2e5276[_0x4e5c('0x2f')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]][_0x4e5c('0x2a')]=_0x2e5276[_0x4e5c('0x2a')];this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]['calleridnum']=_0x2e5276[_0x4e5c('0x30')];if(this[_0x4e5c('0xd')][_0x2e5276[_0x4e5c('0x1d')]]['pagestransferred']>0x0){tiff2pdf(_0x2e5276[_0x4e5c('0x2a')],_0x4e5c('0x31'),function(_0x522e07){logger[_0x4e5c('0x20')](_0x2e5276['uniqueid'],_0x4e5c('0x32'),_0x522e07[_0x4e5c('0x33')]);attachment[_0x4e5c('0x34')]({'name':path['parse'](_0x2e5276['filename'])['name'],'basename':path[_0x4e5c('0x35')](_0x2e5276[_0x4e5c('0x2a')])[_0x4e5c('0x1f')]+_0x4e5c('0x36'),'type':_0x4e5c('0x37')})[_0x4e5c('0x38')](function(_0x552a33){faxAccount['notify'](_0x23f606,{'from':_0x2e5276[_0x4e5c('0x30')],'mapKey':_0x4e5c('0x6'),'body':path[_0x4e5c('0x35')](_0x2e5276['filename'])[_0x4e5c('0x1f')]+_0x4e5c('0x36'),'AttachmentId':_0x552a33['id']})['catch'](function(_0x3c343b){logger[_0x4e5c('0x39')](_0x2e5276[_0x4e5c('0x1d')],_0x4e5c('0x3a'),JSON[_0x4e5c('0x3b')](_0x3c343b));});})[_0x4e5c('0x3c')](function(_0x11d8ce){logger[_0x4e5c('0x39')](_0x2e5276[_0x4e5c('0x1d')],_0x4e5c('0x3d'),JSON[_0x4e5c('0x3b')](_0x11d8ce));});});}logger[_0x4e5c('0x20')](_0x2e5276[_0x4e5c('0x1d')],_0x4e5c('0x3d'));}};Fax[_0x4e5c('0x22')][_0x4e5c('0x1a')]=function(_0x56f606){if(this[_0x4e5c('0x10')][_0x56f606[_0x4e5c('0x1d')]]){_[_0x4e5c('0x3e')](this[_0x4e5c('0xd')][_0x56f606['uniqueid']],_[_0x4e5c('0x3f')](_0x56f606,[_0x4e5c('0x40'),_0x4e5c('0x41')]));}};function updateStatus(_0x30d744){if(_0x30d744['AttachmentId']){faxMessage[_0x4e5c('0x42')](_0x30d744[_0x4e5c('0x43')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x4e5c('0x38')](function(_0x3ccb61){ut[_0x4e5c('0x44')](_0x4e5c('0x45'),_0x3ccb61);})[_0x4e5c('0x3c')](function(_0x35afd0){ut[_0x4e5c('0x44')]('[Fax][Message][Error][NoUpdate1]',_0x35afd0);});}else{ut[_0x4e5c('0x44')](_0x4e5c('0x46'));}}Fax['prototype'][_0x4e5c('0x47')]=function(_0x45fbf6,_0x5454fd,_0x21af50){var _0x305133=this;var _0x1e2bf0={};if(_0x5454fd){_0x1e2bf0={'read':_0x5454fd};}else{_0x1e2bf0={'failMessage':_0x21af50};}if(this[_0x4e5c('0x10')][_0x45fbf6][_0x4e5c('0x43')]){faxMessage['update'](this[_0x4e5c('0x10')][_0x45fbf6]['AttachmentId'],_0x1e2bf0)['then'](function(_0x23a9ae){ut[_0x4e5c('0x44')](_0x4e5c('0x48'),_0x23a9ae);})['catch'](function(_0x4781c6){ut['logger']('[Fax][Message][NoUpdate1]',_0x4781c6);})[_0x4e5c('0x49')](function(){delete _0x305133[_0x4e5c('0xd')][_0x45fbf6];delete _0x305133[_0x4e5c('0x10')][_0x45fbf6];});}else{ut[_0x4e5c('0x44')](_0x4e5c('0x4a'));delete this[_0x4e5c('0xd')][_0x45fbf6];delete this[_0x4e5c('0x10')][_0x45fbf6];}};Fax[_0x4e5c('0x22')][_0x4e5c('0x4b')]=function(_0xa3e45a){var _0x26b79c=this;if(this[_0x4e5c('0xd')][_0xa3e45a['uniqueid']]){if(this[_0x4e5c('0x10')][_0xa3e45a[_0x4e5c('0x1d')]]){this['channels'][_0xa3e45a[_0x4e5c('0x1d')]]['id']=this['actions'][_0xa3e45a[_0x4e5c('0x1d')]]['id'];this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]][_0x4e5c('0x1f')]=this[_0x4e5c('0x10')][_0xa3e45a[_0x4e5c('0x1d')]][_0x4e5c('0x1f')];}logger[_0x4e5c('0x20')](_0xa3e45a[_0x4e5c('0x1d')],this['actions'][_0xa3e45a[_0x4e5c('0x1d')]]?_0x4e5c('0x4c'):_0x4e5c('0x4d'),JSON[_0x4e5c('0x3b')](this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]]));if(this['actions'][_0xa3e45a['uniqueid']]){if(this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]]['faxpages']>0x0&&this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]][_0x4e5c('0x4e')]===_0x4e5c('0x4f')){this[_0x4e5c('0x47')](_0xa3e45a[_0x4e5c('0x1d')],!![]);}else{this[_0x4e5c('0x47')](_0xa3e45a[_0x4e5c('0x1d')],![],this[_0x4e5c('0xd')][_0xa3e45a[_0x4e5c('0x1d')]]['faxstatusstring']?_0x4e5c('0x50')+this['channels'][_0xa3e45a['uniqueid']]['faxstatusstring']:_0x4e5c('0x51'));}}}};Fax[_0x4e5c('0x22')][_0x4e5c('0x52')]=function(_0x1ac9b0){var _0x496834=this;return new BPromise(function(_0x54c84d,_0x485ef6){_0x496834['execOriginate'](_0x1ac9b0,_0x496834['faxAccounts'][_0x1ac9b0[_0x4e5c('0x53')]])[_0x4e5c('0x38')](function(_0x954c86){ut[_0x4e5c('0x44')](_0x4e5c('0x54'),_0x954c86);_0x54c84d(ut[_0x4e5c('0x33')](_0x4e5c('0x55')));})[_0x4e5c('0x3c')](function(_0x212e05){ut[_0x4e5c('0x44')]('[Fax][execOriginate][failure]',_0x212e05);updateStatus(_0x1ac9b0);_0x485ef6(ut[_0x4e5c('0x33')]('Fax\x20failed'));});});};Fax[_0x4e5c('0x22')][_0x4e5c('0x56')]=function(_0x16e99f){var _0x168732=this;return new BPromise(function(_0x2e73ad,_0x10734d){var _0x4688cb=_0x168732[_0x4e5c('0x57')](_0x168732[_0x4e5c('0xe')][_0x16e99f[_0x4e5c('0x53')]]['Trunk'],_0x16e99f);if(_0x4688cb['isValid']){_0x2e73ad(ut[_0x4e5c('0x33')](_0x4e5c('0x58')));}else{_0x10734d(ut[_0x4e5c('0x33')](_0x4688cb[_0x4e5c('0x33')]));}});};function originate(_0x5b30fb,_0x2b9e43,_0xfa6046){return new BPromise(function(_0x4ab37a,_0x5832b0){if(_0xfa6046){var _0xe4e075=util['format'](_0x4e5c('0x59'),path['parse'](_0x5b30fb['path'])[_0x4e5c('0x1f')],_0x5b30fb[_0x4e5c('0x5a')]);gs[_0x4e5c('0x5b')](_0xe4e075)[_0x4e5c('0x38')](function(){_0x5b30fb[_0x4e5c('0x5a')]=util[_0x4e5c('0x5c')](_0x4e5c('0x5d'),path[_0x4e5c('0x35')](_0x5b30fb['path'])[_0x4e5c('0x5e')],path[_0x4e5c('0x35')](_0x5b30fb[_0x4e5c('0x5a')])[_0x4e5c('0x1f')]);_0x2b9e43[_0x4e5c('0x5f')]=_0x5b30fb['path'];ut[_0x4e5c('0x44')](_0x4e5c('0x60'),'');ami[_0x4e5c('0x61')](ut[_0x4e5c('0x62')](_0x5b30fb,_0x2b9e43))[_0x4e5c('0x38')](function(_0x25ad1f){_0x4ab37a(_0x25ad1f);})[_0x4e5c('0x3c')](function(_0x2169ca){_0x5832b0(_0x2169ca);});})[_0x4e5c('0x3c')](function(_0x125cbe){_0x5832b0(_0x125cbe);});}else{ami['Action'](ut['variablesAction'](_0x5b30fb,_0x2b9e43))['then'](function(_0x1a44e8){_0x4ab37a(_0x1a44e8);})[_0x4e5c('0x3c')](function(_0x577fbe){_0x5832b0(_0x577fbe);});}});}Fax[_0x4e5c('0x22')][_0x4e5c('0x63')]=function(_0x130e88,_0x2a3fce){var _0xe6344c=this;return new BPromise(function(_0x18a2b9,_0x34553d){var _0x2d6c32=uuid['v4']();var _0x250f48=ut['addVariables'](_0x130e88,_0x2a3fce);_0xe6344c['actions'][_0x2d6c32]=new Action(_0x2d6c32,_0x2a3fce,_0x130e88);var _0x38992c=_0xe6344c[_0x4e5c('0x10')][_0x2d6c32];if(path[_0x4e5c('0x35')](_0x130e88[_0x4e5c('0x5a')])[_0x4e5c('0x64')]===_0x4e5c('0x36')){originate(_0x38992c,_0x250f48,!![])[_0x4e5c('0x38')](function(_0x5c6c5a){_0x18a2b9(_0x5c6c5a);})[_0x4e5c('0x3c')](function(_0x44366d){_0x34553d(_0x44366d);});}else{originate(_0x38992c,_0x250f48,![])[_0x4e5c('0x38')](function(_0x233be7){_0x18a2b9(_0x233be7);})[_0x4e5c('0x3c')](function(_0x21cd62){_0x34553d(_0x21cd62);});}});};Fax[_0x4e5c('0x22')][_0x4e5c('0x65')]=function(_0x8f585a){return!_['isNil'](_0x8f585a)&&!_[_0x4e5c('0x66')](_0x8f585a['name'])&&!_[_0x4e5c('0x66')](_0x8f585a['active'])&&_0x8f585a[_0x4e5c('0x67')]&&!_[_0x4e5c('0x66')](this[_0x4e5c('0xf')][util['format']('SIP/%s',_0x8f585a['name'])])&&!_[_0x4e5c('0x66')](this[_0x4e5c('0xf')][util[_0x4e5c('0x5c')](_0x4e5c('0x68'),_0x8f585a[_0x4e5c('0x1f')])][_0x4e5c('0x29')])&&(this[_0x4e5c('0xf')][util[_0x4e5c('0x5c')](_0x4e5c('0x68'),_0x8f585a[_0x4e5c('0x1f')])][_0x4e5c('0x29')]===_0x4e5c('0x69')||this[_0x4e5c('0xf')][util[_0x4e5c('0x5c')]('SIP/%s',_0x8f585a[_0x4e5c('0x1f')])][_0x4e5c('0x29')]===_0x4e5c('0x6a'));};Fax[_0x4e5c('0x22')][_0x4e5c('0x57')]=function(_0x2a028a,_0x376ea3){if(!this[_0x4e5c('0x65')](_0x2a028a)){ut[_0x4e5c('0x44')](_0x4e5c('0x6b'),_['isNil'](_0x2a028a)?'':_0x2a028a[_0x4e5c('0x1f')]+_0x4e5c('0x6c'));return{'isValid':![],'message':_0x4e5c('0x6d')};}if(_[_0x4e5c('0x66')](_0x376ea3[_0x4e5c('0x6')])){ut[_0x4e5c('0x44')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x4e5c('0x3b')](_0x376ea3));return{'isValid':![],'message':_0x4e5c('0x6e')};}if(_[_0x4e5c('0x66')](_0x376ea3[_0x4e5c('0x5a')])){ut[_0x4e5c('0x44')](_0x4e5c('0x6f'),JSON['stringify'](_0x376ea3));return{'isValid':![],'message':_0x4e5c('0x70')};}return{'isValid':!![],'message':_0x4e5c('0x71')};};module[_0x4e5c('0x72')]=Fax;
\ No newline at end of file
index 6f83aee..73a1f74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc660=['then','catch','preview','lodash','notify','resolve'];(function(_0x526fef,_0x24d8b8){var _0x5a1e4=function(_0x3105a6){while(--_0x3105a6){_0x526fef['push'](_0x526fef['shift']());}};_0x5a1e4(++_0x24d8b8);}(_0xc660,0x1ee));var _0x0c66=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xc660[_0x17d9e3];return _0x14192d;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require('../../../config/logger')(_0x0c66('0x0'));var _=require(_0x0c66('0x1'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x3c6167){return function(_0x1140a3){logger['error'](_0x3c6167,util['inspect'](_0x1140a3,{'showHidden':![],'depth':null}));};}exports[_0x0c66('0x2')]=function(_0x205b2b,_0x288960){return BPromise[_0x0c66('0x3')]()[_0x0c66('0x4')](faxAccount[_0x0c66('0x2')](_0x205b2b,_0x288960))[_0x0c66('0x5')](loggerCatch('[Notify]\x20'));};
\ No newline at end of file
+var _0x41d5=['inspect','notify','[Notify]\x20','util','bluebird','lodash','../rpc/faxAccount','error'];(function(_0x22ab22,_0x8453cf){var _0x1d01b5=function(_0x1b84c2){while(--_0x1b84c2){_0x22ab22['push'](_0x22ab22['shift']());}};_0x1d01b5(++_0x8453cf);}(_0x41d5,0x193));var _0x541d=function(_0x5e20d4,_0x5d782b){_0x5e20d4=_0x5e20d4-0x0;var _0x310d29=_0x41d5[_0x5e20d4];return _0x310d29;};'use strict';var util=require(_0x541d('0x0'));var BPromise=require(_0x541d('0x1'));var logger=require('../../../config/logger')('preview');var _=require(_0x541d('0x2'));var faxAccount=require(_0x541d('0x3'));function loggerCatch(_0x23b791){return function(_0x469b5e){logger[_0x541d('0x4')](_0x23b791,util[_0x541d('0x5')](_0x469b5e,{'showHidden':![],'depth':null}));};}exports[_0x541d('0x6')]=function(_0x1fffaa,_0x33a79f){return BPromise['resolve']()['then'](faxAccount['notify'](_0x1fffaa,_0x33a79f))['catch'](loggerCatch(_0x541d('0x7')));};
\ No newline at end of file
index 698c21b..1d789da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe52=['../../../../config/logger','fax','bluebird','exec','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util'];(function(_0x2b2d47,_0xaf108b){var _0x403aa1=function(_0x4e3855){while(--_0x4e3855){_0x2b2d47['push'](_0x2b2d47['shift']());}};_0x403aa1(++_0xaf108b);}(_0xbe52,0x167));var _0x2be5=function(_0x39ac98,_0x2485c0){_0x39ac98=_0x39ac98-0x0;var _0x5c8478=_0xbe52[_0x39ac98];return _0x5c8478;};'use strict';var util=require(_0x2be5('0x0'));var logger=require(_0x2be5('0x1'))(_0x2be5('0x2'));var BPromise=require(_0x2be5('0x3'));var exec=require('child_process')[_0x2be5('0x4')];exports[_0x2be5('0x5')]=function(_0x5aaee4){return new BPromise(function(_0x2f7502,_0x328e2d){exec(_0x5aaee4,function(_0x2ccbe1,_0x5f34c1,_0x277519){logger[_0x2be5('0x6')]('Exec\x20gs',_0x5f34c1);if(_0x2ccbe1){logger['info'](_0x2be5('0x7'),_0x2be5('0x8'),util[_0x2be5('0x9')](_0x2ccbe1,{'showHidden':![],'depth':null}),_0x5f34c1,_0x277519);_0x328e2d(_0x2ccbe1);}_0x2f7502(_0x5f34c1);});});};
\ No newline at end of file
+var _0x1ffc=['Exec\x20gs','util','fax','child_process','exec','execute','info'];(function(_0x29771f,_0x1189ae){var _0x279baf=function(_0xd66325){while(--_0xd66325){_0x29771f['push'](_0x29771f['shift']());}};_0x279baf(++_0x1189ae);}(_0x1ffc,0x1eb));var _0xc1ff=function(_0x2d92f7,_0x317a27){_0x2d92f7=_0x2d92f7-0x0;var _0x4d0d46=_0x1ffc[_0x2d92f7];return _0x4d0d46;};'use strict';var util=require(_0xc1ff('0x0'));var logger=require('../../../../config/logger')(_0xc1ff('0x1'));var BPromise=require('bluebird');var exec=require(_0xc1ff('0x2'))[_0xc1ff('0x3')];exports[_0xc1ff('0x4')]=function(_0x56a51c){return new BPromise(function(_0x425629,_0x5dc150){exec(_0x56a51c,function(_0x5d8425,_0x58f435,_0x499a22){logger[_0xc1ff('0x5')](_0xc1ff('0x6'),_0x58f435);if(_0x5d8425){logger[_0xc1ff('0x5')](_0xc1ff('0x6'),'\x20Error\x20:',util['inspect'](_0x5d8425,{'showHidden':![],'depth':null}),_0x58f435,_0x499a22);_0x5dc150(_0x5d8425);}_0x425629(_0x58f435);});});};
\ No newline at end of file
index c1882f5..aaede5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20e1=['\x22%s\x22\x20<%s>','localstationid','util','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','maxrate','format','\x22%s\x22','modem','gateway','t38timeout','path','uniqueid','xcally-motion-fax','from-sip'];(function(_0x3dbe4b,_0x488095){var _0x15a3cf=function(_0x423971){while(--_0x423971){_0x3dbe4b['push'](_0x3dbe4b['shift']());}};_0x15a3cf(++_0x488095);}(_0x20e1,0x122));var _0x120e=function(_0x41d6c7,_0xc0db02){_0x41d6c7=_0x41d6c7-0x0;var _0x36ed7d=_0x20e1[_0x41d6c7];return _0x36ed7d;};'use strict';var util=require(_0x120e('0x0'));var _=require('lodash');var moment=require(_0x120e('0x1'));var logger=require(_0x120e('0x2'))(_0x120e('0x3'));exports[_0x120e('0x4')]=function(_0x3e0ddc){return{'message':_0x3e0ddc};};exports[_0x120e('0x5')]=function(_0x612588,_0x23d0b6){logger[_0x120e('0x6')](_0x612588,util[_0x120e('0x7')](_0x23d0b6,{'showHidden':![],'depth':null}));};exports[_0x120e('0x8')]=function(_0x5e1a27,_0x5825e5){var _0x15a1d9={'XMF-ECM':_0x5825e5[_0x120e('0x9')],'XMF-HEADERINFO':_0x5825e5[_0x120e('0xa')],'XMF-MINRATE':_0x5825e5[_0x120e('0xb')],'XMF-MAXRATE':_0x5825e5[_0x120e('0xc')],'XMF-MODEM':util[_0x120e('0xd')](_0x120e('0xe'),_0x5825e5[_0x120e('0xf')]),'XMF-GATEWAY':_0x5825e5[_0x120e('0x10')],'XMF-FAXDETECT':_0x5825e5['faxdetect'],'XMF-T38TIMEOUT':_0x5825e5[_0x120e('0x11')],'XMF-LOCALSTATIONID':_0x5825e5['localstationid'],'XMF-PATH':_0x5e1a27[_0x120e('0x12')]};return _0x15a1d9;};exports['variablesAction']=function(_0x12e87e,_0x323969){return{'actionid':_0x12e87e[_0x120e('0x13')],'action':'originate','channel':_0x12e87e['channel'],'Exten':_0x120e('0x14'),'Context':_0x120e('0x15'),'Priority':'1','callerid':util[_0x120e('0xd')](_0x120e('0x16'),_0x12e87e['headerinfo']?_0x12e87e['headerinfo']:'',_0x12e87e[_0x120e('0x17')]),'variable':_0x323969,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x12e87e['uniqueid']};};
\ No newline at end of file
+var _0x23aa=['headerinfo','minrate','format','\x22%s\x22','modem','gateway','faxdetect','localstationid','path','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','uniqueid','lodash','moment','fax','inspect','addVariables','ecm'];(function(_0x3e0a0e,_0x1ecf6d){var _0x8e0d0a=function(_0x521ce6){while(--_0x521ce6){_0x3e0a0e['push'](_0x3e0a0e['shift']());}};_0x8e0d0a(++_0x1ecf6d);}(_0x23aa,0x1c6));var _0xa23a=function(_0x229a5e,_0x22f1a7){_0x229a5e=_0x229a5e-0x0;var _0x2ec47c=_0x23aa[_0x229a5e];return _0x2ec47c;};'use strict';var util=require('util');var _=require(_0xa23a('0x0'));var moment=require(_0xa23a('0x1'));var logger=require('../../../../config/logger')(_0xa23a('0x2'));exports['message']=function(_0x41ecc8){return{'message':_0x41ecc8};};exports['logger']=function(_0x199fc2,_0x54a943){logger['info'](_0x199fc2,util[_0xa23a('0x3')](_0x54a943,{'showHidden':![],'depth':null}));};exports[_0xa23a('0x4')]=function(_0x4877f5,_0x5b98ab){var _0x559f61={'XMF-ECM':_0x5b98ab[_0xa23a('0x5')],'XMF-HEADERINFO':_0x5b98ab[_0xa23a('0x6')],'XMF-MINRATE':_0x5b98ab[_0xa23a('0x7')],'XMF-MAXRATE':_0x5b98ab['maxrate'],'XMF-MODEM':util[_0xa23a('0x8')](_0xa23a('0x9'),_0x5b98ab[_0xa23a('0xa')]),'XMF-GATEWAY':_0x5b98ab[_0xa23a('0xb')],'XMF-FAXDETECT':_0x5b98ab[_0xa23a('0xc')],'XMF-T38TIMEOUT':_0x5b98ab['t38timeout'],'XMF-LOCALSTATIONID':_0x5b98ab[_0xa23a('0xd')],'XMF-PATH':_0x4877f5[_0xa23a('0xe')]};return _0x559f61;};exports['variablesAction']=function(_0x593e8e,_0x381aa1){return{'actionid':_0x593e8e['uniqueid'],'action':'originate','channel':_0x593e8e[_0xa23a('0xf')],'Exten':_0xa23a('0x10'),'Context':_0xa23a('0x11'),'Priority':'1','callerid':util[_0xa23a('0x8')](_0xa23a('0x12'),_0x593e8e['headerinfo']?_0x593e8e['headerinfo']:'',_0x593e8e[_0xa23a('0xd')]),'variable':_0x381aa1,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x593e8e[_0xa23a('0x13')]};};
\ No newline at end of file
index c314a95..eb054b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cde=['./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','get','hour','resolve','then','getAgents','getTelephones','getTrunks','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getVoiceExtensions','initVoiceQueueReports','getVoiceQueueHopperHistory','initCampaignHopperHistory','getVoiceCallReports','catch','log','listen','bluebird','util','./server','./realtime','./acw','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger'];(function(_0x28baf4,_0x154b4a){var _0x4764e1=function(_0x53dd57){while(--_0x53dd57){_0x28baf4['push'](_0x28baf4['shift']());}};_0x4764e1(++_0x154b4a);}(_0x8cde,0xf6));var _0xe8cd=function(_0xa223ad,_0x5a574b){_0xa223ad=_0xa223ad-0x0;var _0x306d47=_0x8cde[_0xa223ad];return _0x306d47;};'use strict';var BPromise=require(_0xe8cd('0x0'));var util=require(_0xe8cd('0x1'));var moment=require('moment');var server=require(_0xe8cd('0x2'));var Realtime=require(_0xe8cd('0x3'));var Report=require('./report');var Acw=require(_0xe8cd('0x4'));var Trigger=require('./trigger');var Dialer=require(_0xe8cd('0x5'));var Preview=require(_0xe8cd('0x6'));var Fax=require(_0xe8cd('0x7'));var user=require(_0xe8cd('0x8'));var voiceQueue=require(_0xe8cd('0x9'));var voiceQueueReport=require(_0xe8cd('0xa'));var voiceCallReport=require(_0xe8cd('0xb'));var trunk=require(_0xe8cd('0xc'));var trigger=require(_0xe8cd('0xd'));var template=require(_0xe8cd('0xe'));var cmHopperHistory=require(_0xe8cd('0xf'));var campaign=require(_0xe8cd('0x10'));var voiceExtension=require(_0xe8cd('0x11'));var faxAccount=require(_0xe8cd('0x12'));var zendesk=require(_0xe8cd('0x13'));var salesforce=require(_0xe8cd('0x14'));var sugarcrm=require(_0xe8cd('0x15'));var freshdesk=require(_0xe8cd('0x16'));var desk=require('./rpc/integrations/desk');var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0xe8cd('0x17'));var freshsales=require(_0xe8cd('0x18'));var servicenow=require(_0xe8cd('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()[_0xe8cd('0x1a')](_0xe8cd('0x1b'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xe8cd('0x1a')](_0xe8cd('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xe8cd('0x1c')]()[_0xe8cd('0x1d')](user[_0xe8cd('0x1e')]())[_0xe8cd('0x1d')](realtime['initAgents']())[_0xe8cd('0x1d')](user[_0xe8cd('0x1f')]())['then'](realtime['initTelephones']())[_0xe8cd('0x1d')](trunk[_0xe8cd('0x20')]())[_0xe8cd('0x1d')](realtime['initTrunks']())[_0xe8cd('0x1d')](voiceQueue['getVoiceQueues']())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x21')]())[_0xe8cd('0x1d')](trigger[_0xe8cd('0x22')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x23')]())['then'](template[_0xe8cd('0x24')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x25')]())[_0xe8cd('0x1d')](zendesk['getZendeskAccounts']())['then'](realtime[_0xe8cd('0x26')]())[_0xe8cd('0x1d')](salesforce[_0xe8cd('0x27')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x28')]())[_0xe8cd('0x1d')](sugarcrm[_0xe8cd('0x29')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x2a')]())[_0xe8cd('0x1d')](freshdesk[_0xe8cd('0x2b')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x2c')]())['then'](desk[_0xe8cd('0x2d')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x2e')]())['then'](zoho[_0xe8cd('0x2f')]())['then'](realtime[_0xe8cd('0x30')]())['then'](vtiger[_0xe8cd('0x31')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x32')]())['then'](freshsales[_0xe8cd('0x33')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x34')]())[_0xe8cd('0x1d')](servicenow[_0xe8cd('0x35')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x36')]())[_0xe8cd('0x1d')](dynamics365[_0xe8cd('0x37')]())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x38')]())[_0xe8cd('0x1d')](campaign['getCampaigns']())['then'](realtime['initCampaigns']())[_0xe8cd('0x1d')](voiceExtension[_0xe8cd('0x39')]())['then'](realtime['initVoiceExtensions']())[_0xe8cd('0x1d')](faxAccount['getFaxAccounts']())[_0xe8cd('0x1d')](realtime['initFaxAccounts']())[_0xe8cd('0x1d')](function(){return realtime;});}function initParams(){return BPromise['resolve']()[_0xe8cd('0x1d')](voiceQueueReport['getVoiceQueueReports']())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x3a')]())[_0xe8cd('0x1d')](cmHopperHistory[_0xe8cd('0x3b')]())['then'](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory['getCampaignHopperHistory']())[_0xe8cd('0x1d')](realtime[_0xe8cd('0x3c')]())['then'](voiceCallReport[_0xe8cd('0x3d')]())[_0xe8cd('0x1d')](realtime['initVoiceCallReports']())[_0xe8cd('0x1d')](function(_0xb621e9){})[_0xe8cd('0x3e')](function(_0x4762fd){console[_0xe8cd('0x3f')](_0x4762fd);});}function main(){return server[_0xe8cd('0x40')](realtime,preview,fax)[_0xe8cd('0x1d')](function(_0x1ac1e9){return initRealtime();})[_0xe8cd('0x1d')](function(){return initParams();})['then'](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0xe8cd('0x3e')](function(_0x19d263){console[_0xe8cd('0x3f')](_0x19d263);});}main();
\ No newline at end of file
+var _0xd49d=['getVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','initSugarcrmAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','listen','sync','log','bluebird','util','moment','./server','./report','./acw','./trigger','./dialer','./preview','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks'];(function(_0x2f7ffc,_0x234d9f){var _0x30f6b7=function(_0x3974bf){while(--_0x3974bf){_0x2f7ffc['push'](_0x2f7ffc['shift']());}};_0x30f6b7(++_0x234d9f);}(_0xd49d,0x139));var _0xdd49=function(_0x29a593,_0x17bb27){_0x29a593=_0x29a593-0x0;var _0x2cfb67=_0xd49d[_0x29a593];return _0x2cfb67;};'use strict';var BPromise=require(_0xdd49('0x0'));var util=require(_0xdd49('0x1'));var moment=require(_0xdd49('0x2'));var server=require(_0xdd49('0x3'));var Realtime=require('./realtime');var Report=require(_0xdd49('0x4'));var Acw=require(_0xdd49('0x5'));var Trigger=require(_0xdd49('0x6'));var Dialer=require(_0xdd49('0x7'));var Preview=require(_0xdd49('0x8'));var Fax=require(_0xdd49('0x9'));var user=require(_0xdd49('0xa'));var voiceQueue=require(_0xdd49('0xb'));var voiceQueueReport=require(_0xdd49('0xc'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0xdd49('0xd'));var trigger=require(_0xdd49('0xe'));var template=require('./rpc/template');var cmHopperHistory=require(_0xdd49('0xf'));var campaign=require(_0xdd49('0x10'));var voiceExtension=require(_0xdd49('0x11'));var faxAccount=require(_0xdd49('0x12'));var zendesk=require(_0xdd49('0x13'));var salesforce=require(_0xdd49('0x14'));var sugarcrm=require(_0xdd49('0x15'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0xdd49('0x16'));var zoho=require(_0xdd49('0x17'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0xdd49('0x18'));var servicenow=require(_0xdd49('0x19'));var dynamics365=require(_0xdd49('0x1a'));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()[_0xdd49('0x1b')](_0xdd49('0x1c'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xdd49('0x1c'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xdd49('0x1d')]()['then'](user[_0xdd49('0x1e')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x20')]())['then'](user[_0xdd49('0x21')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x22')]())['then'](trunk[_0xdd49('0x23')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x24')]())[_0xdd49('0x1f')](voiceQueue[_0xdd49('0x25')]())[_0xdd49('0x1f')](realtime['initVoiceQueues']())[_0xdd49('0x1f')](trigger['getTriggers']())[_0xdd49('0x1f')](realtime[_0xdd49('0x26')]())[_0xdd49('0x1f')](template['getTemplates']())['then'](realtime[_0xdd49('0x27')]())['then'](zendesk['getZendeskAccounts']())[_0xdd49('0x1f')](realtime[_0xdd49('0x28')]())['then'](salesforce[_0xdd49('0x29')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x2a')]())[_0xdd49('0x1f')](sugarcrm['getSugarcrmAccounts']())['then'](realtime[_0xdd49('0x2b')]())[_0xdd49('0x1f')](freshdesk['getFreshdeskAccounts']())[_0xdd49('0x1f')](realtime[_0xdd49('0x2c')]())['then'](desk[_0xdd49('0x2d')]())[_0xdd49('0x1f')](realtime['initDeskAccounts']())['then'](zoho[_0xdd49('0x2e')]())['then'](realtime[_0xdd49('0x2f')]())[_0xdd49('0x1f')](vtiger[_0xdd49('0x30')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x31')]())['then'](freshsales[_0xdd49('0x32')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x33')]())['then'](servicenow[_0xdd49('0x34')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x35')]())[_0xdd49('0x1f')](dynamics365[_0xdd49('0x36')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x37')]())[_0xdd49('0x1f')](campaign[_0xdd49('0x38')]())['then'](realtime['initCampaigns']())['then'](voiceExtension[_0xdd49('0x39')]())['then'](realtime['initVoiceExtensions']())[_0xdd49('0x1f')](faxAccount[_0xdd49('0x3a')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x3b')]())[_0xdd49('0x1f')](function(){return realtime;});}function initParams(){return BPromise[_0xdd49('0x1d')]()[_0xdd49('0x1f')](voiceQueueReport[_0xdd49('0x3c')]())[_0xdd49('0x1f')](realtime['initVoiceQueueReports']())[_0xdd49('0x1f')](cmHopperHistory[_0xdd49('0x3d')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x3e')]())[_0xdd49('0x1f')](cmHopperHistory[_0xdd49('0x3f')]())['then'](realtime['initCampaignHopperHistory']())[_0xdd49('0x1f')](voiceCallReport[_0xdd49('0x40')]())[_0xdd49('0x1f')](realtime[_0xdd49('0x41')]())[_0xdd49('0x1f')](function(_0x169544){})[_0xdd49('0x42')](function(_0x58af10){console['log'](_0x58af10);});}function main(){return server[_0xdd49('0x43')](realtime,preview,fax)[_0xdd49('0x1f')](function(_0x2937ff){return initRealtime();})[_0xdd49('0x1f')](function(){return initParams();})[_0xdd49('0x1f')](function(){report[_0xdd49('0x44')]();setInterval(initRealtime,0x1388);})[_0xdd49('0x42')](function(_0x2a523f){console[_0xdd49('0x45')](_0x2a523f);});}main();
\ No newline at end of file
index 0b85600..e00837a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_0x41c842,_0x3865f6){var _0x15ee6b=function(_0x2505f5){while(--_0x2505f5){_0x41c842['push'](_0x41c842['shift']());}};_0x15ee6b(++_0x3865f6);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var Redis=require(_0x49c4('0x2'));var config=require(_0x49c4('0x3'));config[_0x49c4('0x4')]=_[_0x49c4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49c4('0x6'))(new Redis(config['redis']));function Agent(_0xc1278f){this['id']=_0xc1278f['id']||0x0;this[_0x49c4('0x7')]=_0xc1278f[_0x49c4('0x7')]||'';this[_0x49c4('0x8')]=_0xc1278f[_0x49c4('0x8')]||'';this['accountcode']=_0xc1278f[_0x49c4('0x9')]||'';this[_0x49c4('0xa')]=_0xc1278f[_0x49c4('0xa')]||'';this[_0x49c4('0xb')]='unknown';this['stateTime']=0x0;this[_0x49c4('0xc')]=_0x49c4('0xd');this['address']='';this[_0x49c4('0xe')]='';this[_0x49c4('0xf')]='';this['interface']='';this['online']=_0xc1278f[_0x49c4('0x10')]||![];this[_0x49c4('0x11')]='unknown';this[_0x49c4('0x12')]=0x0;this[_0x49c4('0x13')]='';this['voiceStatusQueue']='';this[_0x49c4('0x14')]=![];this[_0x49c4('0x15')]=![];this[_0x49c4('0x1')]='';}Agent[_0x49c4('0x16')][_0x49c4('0x17')]=function(_0x18211c){var _0x75ea8;if(_0x18211c&&_0x18211c[_0x49c4('0xb')]){_0x75ea8=_0x18211c['state'][_0x49c4('0x18')]();switch(_0x75ea8){case _0x49c4('0x19'):_0x75ea8=_0x49c4('0x1a');break;case _0x49c4('0x1b'):_0x75ea8=_0x49c4('0x1c');break;}}if(_0x75ea8&&this['voiceStatus']!==_0x75ea8||_0x18211c[_0x49c4('0x1d')]){this[_0x49c4('0x12')]=_['toNumber'](moment()['format']('x'));}if(_0x75ea8){this[_0x49c4('0x11')]=_0x75ea8;}var _0x2f82d5={'id':this['id'],'name':this[_0x49c4('0x7')],'email':this['email'],'accountcode':this[_0x49c4('0x9')],'fullname':this['fullname'],'state':this[_0x49c4('0xb')],'stateTime':this[_0x49c4('0x1e')],'status':this[_0x49c4('0xc')],'address':this[_0x49c4('0x1f')],'online':this[_0x49c4('0x10')],'voiceStatus':this[_0x49c4('0x11')],'voiceStatusTime':this[_0x49c4('0x12')],'voiceStatusCallerIdNumber':this[_0x49c4('0x13')],'voiceStatusQueue':this[_0x49c4('0x20')],'interface':this['interface'],'onhold':this['onhold']};var _0x57f502=md5(JSON[_0x49c4('0x21')](_0x2f82d5));if(this['md5']!==_0x57f502){this['md5']=_0x57f502;io['to'](util[_0x49c4('0x22')](_0x49c4('0x23'),_0x2f82d5[_0x49c4('0x7')]))[_0x49c4('0x24')]('user:save',_0x2f82d5);io['emit'](_0x49c4('0x25'),_0x2f82d5);}};module[_0x49c4('0x26')]=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(_0x8b4f41,_0x210287){var _0x45e5bd=function(_0xe2d2f8){while(--_0xe2d2f8){_0x8b4f41['push'](_0x8b4f41['shift']());}};_0x45e5bd(++_0x210287);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x29e35f,_0x4859ef){_0x29e35f=_0x29e35f-0x0;var _0x266b74=_0xcb91[_0x29e35f];return _0x266b74;};'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 1235ab2..354615e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b83=['dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','temp','ivrTotalCallsDays','sendMessageOneNotActive','active','limitCalls'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x9b83,0x1ec));var _0x39b8=function(_0x2f9467,_0x40576f){_0x2f9467=_0x2f9467-0x0;var _0x39894c=_0x9b83[_0x2f9467];return _0x39894c;};'use strict';function Campaign(_0x41e741){this['id']=_0x41e741['id']||0x0;this[_0x39b8('0x0')]=_0x41e741[_0x39b8('0x0')]||'';this[_0x39b8('0x1')]=_0x41e741[_0x39b8('0x1')]||'campaign';this[_0x39b8('0x2')]=0x0;this[_0x39b8('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0x39b8('0x4')]=0x0;this['message']='';this[_0x39b8('0x5')]=!![];this[_0x39b8('0x6')]=_0x41e741[_0x39b8('0x6')];this[_0x39b8('0x7')]=_0x41e741[_0x39b8('0x7')];this[_0x39b8('0x8')]=_0x41e741[_0x39b8('0x8')]||null;this[_0x39b8('0x9')]=_0x41e741[_0x39b8('0x9')]?_0x41e741[_0x39b8('0x9')]:null;this['dialOriginateCallerIdName']=_0x41e741[_0x39b8('0xa')];this['dialOriginateCallerIdNumber']=_0x41e741[_0x39b8('0xb')];this[_0x39b8('0xc')]=_0x41e741['dialOriginateTimeout']||0x1e;this[_0x39b8('0xd')]=_0x41e741[_0x39b8('0xd')];this[_0x39b8('0xe')]=_0x41e741[_0x39b8('0xe')];this[_0x39b8('0xf')]=_0x41e741['dialBusyMaxRetry'];this[_0x39b8('0x10')]=_0x41e741[_0x39b8('0x10')];this[_0x39b8('0x11')]=_0x41e741['dialNoAnswerMaxRetry'];this[_0x39b8('0x12')]=_0x41e741[_0x39b8('0x12')];this[_0x39b8('0x13')]=_0x41e741[_0x39b8('0x13')];this[_0x39b8('0x14')]=_0x41e741[_0x39b8('0x14')]||0x3;this[_0x39b8('0x15')]=_0x41e741[_0x39b8('0x15')]||0x96;this[_0x39b8('0x16')]=_0x41e741['dialDropMaxRetry']||0x3;this[_0x39b8('0x17')]=_0x41e741[_0x39b8('0x17')]||0x96;this['dialAbandonedMaxRetry']=_0x41e741['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x41e741[_0x39b8('0x18')]||0x96;this[_0x39b8('0x19')]=_0x41e741[_0x39b8('0x19')]||0x3;this['dialMachineRetryFrequency']=_0x41e741[_0x39b8('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x41e741[_0x39b8('0x1b')]||0x3;this[_0x39b8('0x1c')]=_0x41e741[_0x39b8('0x1c')]||0x96;this[_0x39b8('0x1d')]=_0x41e741[_0x39b8('0x1d')]||_0x39b8('0x1e');this[_0x39b8('0x1f')]=_0x41e741[_0x39b8('0x1f')]||undefined;this[_0x39b8('0x20')]=_0x41e741['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x39b8('0x21')]=_0x41e741[_0x39b8('0x21')]||undefined;this[_0x39b8('0x22')]=_0x41e741[_0x39b8('0x22')]?_0x41e741['TrunkBackup']:undefined;this[_0x39b8('0x23')]=_0x41e741['Trunk']?_0x41e741[_0x39b8('0x23')]:undefined;this['Interval']=_0x41e741['Interval']?_0x41e741[_0x39b8('0x24')]:undefined;this[_0x39b8('0x25')]=_0x41e741['SquareProject']?_0x41e741[_0x39b8('0x25')]:undefined;this[_0x39b8('0x26')]=_0x41e741[_0x39b8('0x25')]?_0x41e741[_0x39b8('0x25')][_0x39b8('0x0')]:undefined;this[_0x39b8('0x27')]=_0x41e741['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x41e741[_0x39b8('0x28')];this[_0x39b8('0x29')]=_0x41e741[_0x39b8('0x29')];this[_0x39b8('0x2a')]=_0x41e741[_0x39b8('0x2a')];this[_0x39b8('0x2b')]=_0x41e741[_0x39b8('0x2b')];this[_0x39b8('0x2c')]=_0x41e741[_0x39b8('0x2c')];this[_0x39b8('0x2d')]=_0x41e741['dialAMDBetweenWordsSilence'];this[_0x39b8('0x2e')]=_0x41e741['dialAMDMaximumNumberOfWords'];this[_0x39b8('0x2f')]=_0x41e741[_0x39b8('0x2f')];this[_0x39b8('0x30')]=_0x41e741['dialAMDMaximumWordLength'];}module[_0x39b8('0x31')]=Campaign;
\ No newline at end of file
+var _0x55ac=['dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout'];(function(_0x2cde51,_0x41b85c){var _0x37177e=function(_0x5a68f4){while(--_0x5a68f4){_0x2cde51['push'](_0x2cde51['shift']());}};_0x37177e(++_0x41b85c);}(_0x55ac,0x149));var _0xc55a=function(_0x5801a5,_0x4a0dac){_0x5801a5=_0x5801a5-0x0;var _0x4b88cf=_0x55ac[_0x5801a5];return _0x4b88cf;};'use strict';function Campaign(_0x3c97cd){this['id']=_0x3c97cd['id']||0x0;this[_0xc55a('0x0')]=_0x3c97cd[_0xc55a('0x0')]||'';this[_0xc55a('0x1')]=_0x3c97cd['type']||_0xc55a('0x2');this[_0xc55a('0x3')]=0x0;this['temp']=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xc55a('0x4')]=0x0;this[_0xc55a('0x5')]='';this[_0xc55a('0x6')]=!![];this[_0xc55a('0x7')]=_0x3c97cd[_0xc55a('0x7')];this[_0xc55a('0x8')]=_0x3c97cd['limitCalls'];this[_0xc55a('0x9')]=_0x3c97cd[_0xc55a('0x9')]||null;this['dialGlobalInterval']=_0x3c97cd[_0xc55a('0xa')]?_0x3c97cd[_0xc55a('0xa')]:null;this[_0xc55a('0xb')]=_0x3c97cd['dialOriginateCallerIdName'];this[_0xc55a('0xc')]=_0x3c97cd['dialOriginateCallerIdNumber'];this[_0xc55a('0xd')]=_0x3c97cd[_0xc55a('0xd')]||0x1e;this[_0xc55a('0xe')]=_0x3c97cd[_0xc55a('0xe')];this[_0xc55a('0xf')]=_0x3c97cd[_0xc55a('0xf')];this['dialBusyMaxRetry']=_0x3c97cd[_0xc55a('0x10')];this[_0xc55a('0x11')]=_0x3c97cd['dialBusyRetryFrequency'];this[_0xc55a('0x12')]=_0x3c97cd[_0xc55a('0x12')];this[_0xc55a('0x13')]=_0x3c97cd['dialNoAnswerRetryFrequency'];this[_0xc55a('0x14')]=_0x3c97cd['dialGlobalMaxRetry'];this[_0xc55a('0x15')]=_0x3c97cd[_0xc55a('0x15')]||0x3;this[_0xc55a('0x16')]=_0x3c97cd['dialNoSuchNumberRetryFrequency']||0x96;this[_0xc55a('0x17')]=_0x3c97cd[_0xc55a('0x17')]||0x3;this[_0xc55a('0x18')]=_0x3c97cd['dialDropRetryFrequency']||0x96;this[_0xc55a('0x19')]=_0x3c97cd[_0xc55a('0x19')]||0x3;this[_0xc55a('0x1a')]=_0x3c97cd[_0xc55a('0x1a')]||0x96;this['dialMachineMaxRetry']=_0x3c97cd['dialMachineMaxRetry']||0x3;this[_0xc55a('0x1b')]=_0x3c97cd[_0xc55a('0x1b')]||0x96;this[_0xc55a('0x1c')]=_0x3c97cd['dialAgentRejectMaxRetry']||0x3;this[_0xc55a('0x1d')]=_0x3c97cd[_0xc55a('0x1d')]||0x96;this[_0xc55a('0x1e')]=_0x3c97cd['dialOrderByScheduledAt']||_0xc55a('0x1f');this['dialPrefix']=_0x3c97cd[_0xc55a('0x20')]||undefined;this[_0xc55a('0x21')]=_0x3c97cd[_0xc55a('0x21')]||undefined;this[_0xc55a('0x22')]=_0x3c97cd['dialCutDigit']||undefined;this['TrunkBackup']=_0x3c97cd[_0xc55a('0x23')]?_0x3c97cd[_0xc55a('0x23')]:undefined;this[_0xc55a('0x24')]=_0x3c97cd['Trunk']?_0x3c97cd[_0xc55a('0x24')]:undefined;this['Interval']=_0x3c97cd[_0xc55a('0x25')]?_0x3c97cd['Interval']:undefined;this[_0xc55a('0x26')]=_0x3c97cd[_0xc55a('0x26')]?_0x3c97cd[_0xc55a('0x26')]:undefined;this['dialQueueProject']=_0x3c97cd[_0xc55a('0x26')]?_0x3c97cd[_0xc55a('0x26')][_0xc55a('0x0')]:undefined;this[_0xc55a('0x27')]=_0x3c97cd[_0xc55a('0x27')]||![];this[_0xc55a('0x28')]=_0x3c97cd['dialAMDInitialSilence'];this[_0xc55a('0x29')]=_0x3c97cd[_0xc55a('0x29')];this[_0xc55a('0x2a')]=_0x3c97cd[_0xc55a('0x2a')];this['dialAMDTotalAnalysisTime']=_0x3c97cd['dialAMDTotalAnalysisTime'];this['dialAMDMinWordLength']=_0x3c97cd[_0xc55a('0x2b')];this['dialAMDBetweenWordsSilence']=_0x3c97cd[_0xc55a('0x2c')];this[_0xc55a('0x2d')]=_0x3c97cd[_0xc55a('0x2d')];this['dialAMDSilenceThreshold']=_0x3c97cd[_0xc55a('0x2e')];this[_0xc55a('0x2f')]=_0x3c97cd[_0xc55a('0x2f')];}module[_0xc55a('0x30')]=Campaign;
\ No newline at end of file
index 2d3e3db..84ceb8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1cc=['connectedlinename','context','linkedid','exten','answered','answertime','abandoned','lastapplication','lastdata','type','disposition','monitor','monitorFilename','queue','monitors','transferconnectedlinenum','transferType','exports','starttime','channel','destinationchannel','calleridname','connectedlinenum'];(function(_0x3d118a,_0xc2c0d7){var _0xbdfbf3=function(_0x555085){while(--_0x555085){_0x3d118a['push'](_0x3d118a['shift']());}};_0xbdfbf3(++_0xc2c0d7);}(_0xa1cc,0x10f));var _0xca1c=function(_0x58c094,_0xdbf48f){_0x58c094=_0x58c094-0x0;var _0x21c64a=_0xa1cc[_0x58c094];return _0x21c64a;};'use strict';function Channel(){this[_0xca1c('0x0')]=null;this[_0xca1c('0x1')]='';this[_0xca1c('0x2')]='';this['calleridnum']=0x0;this[_0xca1c('0x3')]='';this[_0xca1c('0x4')]=undefined;this[_0xca1c('0x5')]=undefined;this['accountcode']=0x0;this[_0xca1c('0x6')]='';this['uniqueid']=0x0;this[_0xca1c('0x7')]=0x0;this[_0xca1c('0x8')]=0x0;this[_0xca1c('0x9')]=![];this[_0xca1c('0xa')]=null;this['endtime']=null;this['unmanaged']=![];this[_0xca1c('0xb')]=![];this[_0xca1c('0xc')]='';this[_0xca1c('0xd')]='';this['duration']=0x0;this['billableseconds']=0x0;this['holdtime']=0x0;this[_0xca1c('0xe')]=null;this['tag']=null;this[_0xca1c('0xf')]=null;this[_0xca1c('0x10')]=![];this[_0xca1c('0x11')]=null;this[_0xca1c('0x12')]=null;this[_0xca1c('0x13')]=[];this['transfercalleridnum']=undefined;this[_0xca1c('0x14')]=undefined;this[_0xca1c('0x15')]=undefined;this['mohtime']=0x0;}module[_0xca1c('0x16')]=Channel;
\ No newline at end of file
+var _0x383b=['lastapplication','billableseconds','holdtime','type','tag','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferType','mohtime','starttime','destinationchannel','calleridnum','calleridname','connectedlinename','context','uniqueid','linkedid','exten','answered','answertime','unmanaged','abandoned'];(function(_0x42e4d7,_0x4bd202){var _0x346cd8=function(_0x36c0f6){while(--_0x36c0f6){_0x42e4d7['push'](_0x42e4d7['shift']());}};_0x346cd8(++_0x4bd202);}(_0x383b,0x89));var _0xb383=function(_0x2c9ee7,_0x41c477){_0x2c9ee7=_0x2c9ee7-0x0;var _0x27fdc6=_0x383b[_0x2c9ee7];return _0x27fdc6;};'use strict';function Channel(){this[_0xb383('0x0')]=null;this['channel']='';this[_0xb383('0x1')]='';this[_0xb383('0x2')]=0x0;this[_0xb383('0x3')]='';this['connectedlinenum']=undefined;this[_0xb383('0x4')]=undefined;this['accountcode']=0x0;this[_0xb383('0x5')]='';this[_0xb383('0x6')]=0x0;this[_0xb383('0x7')]=0x0;this[_0xb383('0x8')]=0x0;this[_0xb383('0x9')]=![];this[_0xb383('0xa')]=null;this['endtime']=null;this[_0xb383('0xb')]=![];this[_0xb383('0xc')]=![];this[_0xb383('0xd')]='';this['lastdata']='';this['duration']=0x0;this[_0xb383('0xe')]=0x0;this[_0xb383('0xf')]=0x0;this[_0xb383('0x10')]=null;this[_0xb383('0x11')]=null;this['disposition']=null;this[_0xb383('0x12')]=![];this[_0xb383('0x13')]=null;this[_0xb383('0x14')]=null;this[_0xb383('0x15')]=[];this[_0xb383('0x16')]=undefined;this['transferconnectedlinenum']=undefined;this[_0xb383('0x17')]=undefined;this[_0xb383('0x18')]=0x0;}module['exports']=Channel;
\ No newline at end of file
index 97ffe3c..652c04e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb137=['username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name'];(function(_0x1e37c7,_0x4c4472){var _0x214c9c=function(_0x112c7f){while(--_0x112c7f){_0x1e37c7['push'](_0x1e37c7['shift']());}};_0x214c9c(++_0x4c4472);}(_0xb137,0x17f));var _0x7b13=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0xb137[_0x40220a];return _0x3903cc;};'use strict';function DeskAccount(_0x164026){this['id']=_0x164026['id']||0x0;this['name']=_0x164026[_0x7b13('0x0')]||'';this[_0x7b13('0x1')]=_0x164026[_0x7b13('0x1')]||'';this['remoteUri']=_0x164026[_0x7b13('0x2')]||'';this[_0x7b13('0x3')]=_0x164026[_0x7b13('0x3')]||'';this[_0x7b13('0x4')]=_0x164026[_0x7b13('0x4')]||'';this[_0x7b13('0x5')]=_0x164026[_0x7b13('0x5')]||'';this[_0x7b13('0x6')]=_0x164026[_0x7b13('0x6')]||'';this[_0x7b13('0x7')]=_0x164026['token']||'';this[_0x7b13('0x8')]=_0x164026[_0x7b13('0x8')]||'';this[_0x7b13('0x9')]=_0x164026[_0x7b13('0x9')]||'';this[_0x7b13('0xa')]=_0x164026[_0x7b13('0xa')]||'';this[_0x7b13('0xb')]=_0x164026[_0x7b13('0xb')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x074b=['Configurations','exports','name','username','remoteUri','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl'];(function(_0x5d0649,_0x420088){var _0x429327=function(_0x1c157d){while(--_0x1c157d){_0x5d0649['push'](_0x5d0649['shift']());}};_0x429327(++_0x420088);}(_0x074b,0xe6));var _0xb074=function(_0x19b19b,_0x53c6ee){_0x19b19b=_0x19b19b-0x0;var _0x1d67ed=_0x074b[_0x19b19b];return _0x1d67ed;};'use strict';function DeskAccount(_0x17c778){this['id']=_0x17c778['id']||0x0;this[_0xb074('0x0')]=_0x17c778[_0xb074('0x0')]||'';this[_0xb074('0x1')]=_0x17c778[_0xb074('0x1')]||'';this[_0xb074('0x2')]=_0x17c778['remoteUri']||'';this['authType']=_0x17c778['authType']||'';this[_0xb074('0x3')]=_0x17c778['password']||'';this[_0xb074('0x4')]=_0x17c778['consumerKey']||'';this['consumerSecret']=_0x17c778[_0xb074('0x5')]||'';this[_0xb074('0x6')]=_0x17c778[_0xb074('0x6')]||'';this['tokenSecret']=_0x17c778[_0xb074('0x7')]||'';this[_0xb074('0x8')]=_0x17c778[_0xb074('0x8')]||'';this[_0xb074('0x9')]=_0x17c778[_0xb074('0x9')]||'';this[_0xb074('0xa')]=_0x17c778[_0xb074('0xa')]||{};}module[_0xb074('0xb')]=DeskAccount;
\ No newline at end of file
index a755ed2..273fb7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda3f=['clientId','serverUrl','Configurations','exports','name','password','remoteUri','tenantId'];(function(_0x32e6cb,_0x436508){var _0xfbded9=function(_0x49e961){while(--_0x49e961){_0x32e6cb['push'](_0x32e6cb['shift']());}};_0xfbded9(++_0x436508);}(_0xda3f,0xec));var _0xfda3=function(_0x86ba30,_0x320aa0){_0x86ba30=_0x86ba30-0x0;var _0x2e52e8=_0xda3f[_0x86ba30];return _0x2e52e8;};'use strict';function Dynamics365Account(_0x33f0ce){this['id']=_0x33f0ce['id']||0x0;this[_0xfda3('0x0')]=_0x33f0ce[_0xfda3('0x0')]||'';this['username']=_0x33f0ce['username']||'';this['password']=_0x33f0ce[_0xfda3('0x1')]||'';this['remoteUri']=_0x33f0ce[_0xfda3('0x2')]||'';this[_0xfda3('0x3')]=_0x33f0ce['tenantId']||'';this[_0xfda3('0x4')]=_0x33f0ce[_0xfda3('0x4')]||'';this['clientSecret']=_0x33f0ce['clientSecret']||{};this[_0xfda3('0x5')]=_0x33f0ce[_0xfda3('0x5')]||'';this[_0xfda3('0x6')]=_0x33f0ce[_0xfda3('0x6')]||{};}module[_0xfda3('0x7')]=Dynamics365Account;
\ No newline at end of file
+var _0x91a7=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','Configurations'];(function(_0x56c514,_0x273aa2){var _0x3e2108=function(_0x22ed5a){while(--_0x22ed5a){_0x56c514['push'](_0x56c514['shift']());}};_0x3e2108(++_0x273aa2);}(_0x91a7,0xe7));var _0x791a=function(_0x58e3ee,_0x3ad5ba){_0x58e3ee=_0x58e3ee-0x0;var _0x76c60b=_0x91a7[_0x58e3ee];return _0x76c60b;};'use strict';function Dynamics365Account(_0x27c92e){this['id']=_0x27c92e['id']||0x0;this[_0x791a('0x0')]=_0x27c92e[_0x791a('0x0')]||'';this[_0x791a('0x1')]=_0x27c92e['username']||'';this[_0x791a('0x2')]=_0x27c92e['password']||'';this[_0x791a('0x3')]=_0x27c92e['remoteUri']||'';this['tenantId']=_0x27c92e[_0x791a('0x4')]||'';this[_0x791a('0x5')]=_0x27c92e['clientId']||'';this[_0x791a('0x6')]=_0x27c92e['clientSecret']||{};this[_0x791a('0x7')]=_0x27c92e[_0x791a('0x7')]||'';this['Configurations']=_0x27c92e[_0x791a('0x8')]||{};}module[_0x791a('0x9')]=Dynamics365Account;
\ No newline at end of file
index 1a94b18..70cd6cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77c1=['ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description'];(function(_0x287a47,_0x2f731c){var _0x3fb726=function(_0xbedc33){while(--_0xbedc33){_0x287a47['push'](_0x287a47['shift']());}};_0x3fb726(++_0x2f731c);}(_0x77c1,0x130));var _0x177c=function(_0x299f30,_0xb31366){_0x299f30=_0x299f30-0x0;var _0x10036c=_0x77c1[_0x299f30];return _0x10036c;};'use strict';function FaxAccount(_0x2ddc68){this['id']=_0x2ddc68['id']||0x0;this[_0x177c('0x0')]=_0x2ddc68['name']||'';this[_0x177c('0x1')]=_0x2ddc68[_0x177c('0x1')];this[_0x177c('0x2')]=_0x2ddc68[_0x177c('0x2')];this[_0x177c('0x3')]=_0x2ddc68[_0x177c('0x3')];this[_0x177c('0x4')]=_0x2ddc68[_0x177c('0x4')];this[_0x177c('0x5')]=_0x2ddc68[_0x177c('0x5')]||0x960;this[_0x177c('0x6')]=_0x2ddc68[_0x177c('0x6')]||0x3840;this['modem']=_0x2ddc68[_0x177c('0x7')]||_0x177c('0x8');this['gateway']=_0x2ddc68[_0x177c('0x9')]||'no';this[_0x177c('0xa')]=_0x2ddc68[_0x177c('0xa')]||'no';this[_0x177c('0xb')]=_0x2ddc68[_0x177c('0xb')]||0x1388;this[_0x177c('0xc')]=_0x2ddc68[_0x177c('0xc')]||_0x177c('0xd');this[_0x177c('0xe')]=_0x2ddc68[_0x177c('0xe')]?_0x2ddc68[_0x177c('0xe')]:undefined;this['ListId']=_0x2ddc68[_0x177c('0xf')];this[_0x177c('0x10')]=_0x2ddc68['key'];}module[_0x177c('0x11')]=FaxAccount;
\ No newline at end of file
+var _0xc7ec=['t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway'];(function(_0x11dc89,_0x4983cc){var _0xeab215=function(_0x371db6){while(--_0x371db6){_0x11dc89['push'](_0x11dc89['shift']());}};_0xeab215(++_0x4983cc);}(_0xc7ec,0x77));var _0xcc7e=function(_0x305b20,_0x5e57e9){_0x305b20=_0x305b20-0x0;var _0x26d64a=_0xc7ec[_0x305b20];return _0x26d64a;};'use strict';function FaxAccount(_0x468810){this['id']=_0x468810['id']||0x0;this[_0xcc7e('0x0')]=_0x468810[_0xcc7e('0x0')]||'';this[_0xcc7e('0x1')]=_0x468810[_0xcc7e('0x1')];this[_0xcc7e('0x2')]=_0x468810[_0xcc7e('0x2')];this[_0xcc7e('0x3')]=_0x468810['headerinfo'];this[_0xcc7e('0x4')]=_0x468810[_0xcc7e('0x4')];this[_0xcc7e('0x5')]=_0x468810[_0xcc7e('0x5')]||0x960;this[_0xcc7e('0x6')]=_0x468810[_0xcc7e('0x6')]||0x3840;this[_0xcc7e('0x7')]=_0x468810[_0xcc7e('0x7')]||'v17,v27,v29';this[_0xcc7e('0x8')]=_0x468810[_0xcc7e('0x8')]||'no';this['faxdetect']=_0x468810['faxdetect']||'no';this[_0xcc7e('0x9')]=_0x468810[_0xcc7e('0x9')]||0x1388;this[_0xcc7e('0xa')]=_0x468810[_0xcc7e('0xa')]||_0xcc7e('0xb');this[_0xcc7e('0xc')]=_0x468810['Trunk']?_0x468810[_0xcc7e('0xc')]:undefined;this[_0xcc7e('0xd')]=_0x468810[_0xcc7e('0xd')];this[_0xcc7e('0xe')]=_0x468810['key'];}module[_0xcc7e('0xf')]=FaxAccount;
\ No newline at end of file
index 471172b..d74da5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e3d=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x7e269,_0x1049df){var _0xaf2fb9=function(_0x190c93){while(--_0x190c93){_0x7e269['push'](_0x7e269['shift']());}};_0xaf2fb9(++_0x1049df);}(_0x2e3d,0x162));var _0xd2e3=function(_0x1c0f63,_0x7b25c2){_0x1c0f63=_0x1c0f63-0x0;var _0x2a25a4=_0x2e3d[_0x1c0f63];return _0x2a25a4;};'use strict';function FreshdeskAccount(_0x47b899){this['id']=_0x47b899['id']||0x0;this[_0xd2e3('0x0')]=_0x47b899[_0xd2e3('0x0')]||'';this['username']=_0x47b899[_0xd2e3('0x1')]||'';this[_0xd2e3('0x2')]=_0x47b899[_0xd2e3('0x3')]||'';this[_0xd2e3('0x4')]=_0x47b899[_0xd2e3('0x4')]||'';this[_0xd2e3('0x5')]=_0x47b899['serverUrl']||'';this[_0xd2e3('0x6')]=_0x47b899['Configurations']||{};}module[_0xd2e3('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0x7c84=['serverUrl','Configurations','exports','name','username','apiKey','token','remoteUri'];(function(_0x3fa933,_0x190a6d){var _0x52846d=function(_0x4e856b){while(--_0x4e856b){_0x3fa933['push'](_0x3fa933['shift']());}};_0x52846d(++_0x190a6d);}(_0x7c84,0x18b));var _0x47c8=function(_0x1f0f20,_0x3744f5){_0x1f0f20=_0x1f0f20-0x0;var _0x1e9ad0=_0x7c84[_0x1f0f20];return _0x1e9ad0;};'use strict';function FreshdeskAccount(_0x3f5fe0){this['id']=_0x3f5fe0['id']||0x0;this[_0x47c8('0x0')]=_0x3f5fe0[_0x47c8('0x0')]||'';this[_0x47c8('0x1')]=_0x3f5fe0[_0x47c8('0x1')]||'';this[_0x47c8('0x2')]=_0x3f5fe0[_0x47c8('0x3')]||'';this[_0x47c8('0x4')]=_0x3f5fe0['remoteUri']||'';this[_0x47c8('0x5')]=_0x3f5fe0[_0x47c8('0x5')]||'';this[_0x47c8('0x6')]=_0x3f5fe0[_0x47c8('0x6')]||{};}module[_0x47c8('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 1525787..f3ae3ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1298=['Configurations','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x402756,_0x4c2695){var _0x4091d4=function(_0x50d309){while(--_0x50d309){_0x402756['push'](_0x402756['shift']());}};_0x4091d4(++_0x4c2695);}(_0x1298,0x19e));var _0x8129=function(_0x951951,_0x494607){_0x951951=_0x951951-0x0;var _0x4bc6ad=_0x1298[_0x951951];return _0x4bc6ad;};'use strict';function FreshsalesAccount(_0x211e78){this['id']=_0x211e78['id']||0x0;this[_0x8129('0x0')]=_0x211e78['name']||'';this[_0x8129('0x1')]=_0x211e78[_0x8129('0x1')]||'';this[_0x8129('0x2')]=_0x211e78[_0x8129('0x3')]||'';this[_0x8129('0x4')]=_0x211e78[_0x8129('0x4')]||'';this[_0x8129('0x5')]=_0x211e78['serverUrl']||'';this[_0x8129('0x6')]=_0x211e78[_0x8129('0x6')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x4aa3=['exports','name','username','token','remoteUri','serverUrl','Configurations'];(function(_0x3577d1,_0x4893f0){var _0x597460=function(_0x974ff){while(--_0x974ff){_0x3577d1['push'](_0x3577d1['shift']());}};_0x597460(++_0x4893f0);}(_0x4aa3,0x174));var _0x34aa=function(_0x5862e3,_0x50d643){_0x5862e3=_0x5862e3-0x0;var _0x1a0e81=_0x4aa3[_0x5862e3];return _0x1a0e81;};'use strict';function FreshsalesAccount(_0x45ec6e){this['id']=_0x45ec6e['id']||0x0;this[_0x34aa('0x0')]=_0x45ec6e['name']||'';this[_0x34aa('0x1')]=_0x45ec6e[_0x34aa('0x1')]||'';this['apiKey']=_0x45ec6e[_0x34aa('0x2')]||'';this[_0x34aa('0x3')]=_0x45ec6e['remoteUri']||'';this[_0x34aa('0x4')]=_0x45ec6e[_0x34aa('0x4')]||'';this[_0x34aa('0x5')]=_0x45ec6e['Configurations']||{};}module[_0x34aa('0x6')]=FreshsalesAccount;
\ No newline at end of file
index db054b9..093bde2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73b5=['inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','context','exten','priority','holdtime','assigned','lastAssignedTo','mohtime','exports','type'];(function(_0x5756c6,_0x58290a){var _0x4b5806=function(_0x193246){while(--_0x193246){_0x5756c6['push'](_0x5756c6['shift']());}};_0x4b5806(++_0x58290a);}(_0x73b5,0x72));var _0x573b=function(_0x2e5d39,_0x41f201){_0x2e5d39=_0x2e5d39-0x0;var _0x17812a=_0x73b5[_0x2e5d39];return _0x17812a;};'use strict';function QueueReport(){this[_0x573b('0x0')]=_0x573b('0x1');this[_0x573b('0x2')]='';this[_0x573b('0x3')]='';this[_0x573b('0x4')]='';this[_0x573b('0x5')]='';this[_0x573b('0x6')]=null;this[_0x573b('0x7')]=null;this[_0x573b('0x8')]=0x1;this['count']=0x1;this[_0x573b('0x9')]=![];this[_0x573b('0xa')]=null;this['queuecallercomplete']=![];this[_0x573b('0xb')]=null;this[_0x573b('0xc')]=![];this[_0x573b('0xd')]=null;this['originalposition']=0x1;this[_0x573b('0xe')]='';this['connectedlinenum']='';this['connectedlinename']='';this['accountcode']='';this[_0x573b('0xf')]='';this[_0x573b('0x10')]='';this[_0x573b('0x11')]='';this[_0x573b('0x12')]=0x0;this[_0x573b('0x13')]=![];this[_0x573b('0x14')]='';this[_0x573b('0x15')]=0x0;this['variables']={};}module[_0x573b('0x16')]=QueueReport;
\ No newline at end of file
+var _0x2f80=['assigned','lastAssignedTo','voice','mohtime','variables','inbound','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','originalposition','channel','connectedlinenum','connectedlinename','accountcode','context','exten','priority'];(function(_0x2459fd,_0x575d9b){var _0x364cd2=function(_0x4b22f6){while(--_0x4b22f6){_0x2459fd['push'](_0x2459fd['shift']());}};_0x364cd2(++_0x575d9b);}(_0x2f80,0x155));var _0x02f8=function(_0x33fb76,_0x450ed3){_0x33fb76=_0x33fb76-0x0;var _0x41033e=_0x2f80[_0x33fb76];return _0x41033e;};'use strict';function QueueReport(){this['type']=_0x02f8('0x0');this[_0x02f8('0x1')]='';this[_0x02f8('0x2')]='';this[_0x02f8('0x3')]='';this['queue']='';this[_0x02f8('0x4')]=null;this[_0x02f8('0x5')]=null;this['position']=0x1;this[_0x02f8('0x6')]=0x1;this[_0x02f8('0x7')]=![];this[_0x02f8('0x8')]=null;this['queuecallercomplete']=![];this[_0x02f8('0x9')]=null;this[_0x02f8('0xa')]=![];this['queuecallerexitAt']=null;this[_0x02f8('0xb')]=0x1;this[_0x02f8('0xc')]='';this[_0x02f8('0xd')]='';this[_0x02f8('0xe')]='';this[_0x02f8('0xf')]='';this[_0x02f8('0x10')]='';this[_0x02f8('0x11')]='';this[_0x02f8('0x12')]='';this['holdtime']=0x0;this[_0x02f8('0x13')]=![];this[_0x02f8('0x14')]='';this['motionChannel']=_0x02f8('0x15');this[_0x02f8('0x16')]=0x0;this[_0x02f8('0x17')]={};}module['exports']=QueueReport;
\ No newline at end of file
index 617539e..2abd48b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfa8=['clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId'];(function(_0x247f66,_0x1d4b11){var _0xd2fc1f=function(_0x3ec7f9){while(--_0x3ec7f9){_0x247f66['push'](_0x247f66['shift']());}};_0xd2fc1f(++_0x1d4b11);}(_0xcfa8,0xdf));var _0x8cfa=function(_0x4f1925,_0x47b4f4){_0x4f1925=_0x4f1925-0x0;var _0xaffa26=_0xcfa8[_0x4f1925];return _0xaffa26;};'use strict';function SalesforceAccount(_0x44f46a){this['id']=_0x44f46a['id']||0x0;this[_0x8cfa('0x0')]=_0x44f46a['name']||'';this[_0x8cfa('0x1')]=_0x44f46a[_0x8cfa('0x1')]||'';this[_0x8cfa('0x2')]=_0x44f46a[_0x8cfa('0x2')]||'';this['password']=_0x44f46a[_0x8cfa('0x3')]||'';this['clientId']=_0x44f46a[_0x8cfa('0x4')]||'';this[_0x8cfa('0x5')]=_0x44f46a[_0x8cfa('0x5')]||'';this[_0x8cfa('0x6')]=_0x44f46a[_0x8cfa('0x6')]||'';this[_0x8cfa('0x7')]=_0x44f46a[_0x8cfa('0x7')]||_0x8cfa('0x8');this[_0x8cfa('0x9')]=_0x44f46a['serverUrl']||'';this['Configurations']=_0x44f46a[_0x8cfa('0xa')]||{};}module[_0x8cfa('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x046a=['integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','clientId','clientSecret','securityToken','type'];(function(_0x2c264f,_0x17e72a){var _0x53aa2f=function(_0x1505d0){while(--_0x1505d0){_0x2c264f['push'](_0x2c264f['shift']());}};_0x53aa2f(++_0x17e72a);}(_0x046a,0x122));var _0xa046=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x046a[_0x9df060];return _0x338dfe;};'use strict';function SalesforceAccount(_0x17b5a6){this['id']=_0x17b5a6['id']||0x0;this['name']=_0x17b5a6[_0xa046('0x0')]||'';this[_0xa046('0x1')]=_0x17b5a6[_0xa046('0x1')]||'';this[_0xa046('0x2')]=_0x17b5a6['remoteUri']||'';this['password']=_0x17b5a6['password']||'';this['clientId']=_0x17b5a6[_0xa046('0x3')]||'';this[_0xa046('0x4')]=_0x17b5a6[_0xa046('0x4')]||'';this[_0xa046('0x5')]=_0x17b5a6['securityToken']||'';this[_0xa046('0x6')]=_0x17b5a6[_0xa046('0x6')]||_0xa046('0x7');this['serverUrl']=_0x17b5a6[_0xa046('0x8')]||'';this[_0xa046('0x9')]=_0x17b5a6[_0xa046('0x9')]||{};}module[_0xa046('0xa')]=SalesforceAccount;
\ No newline at end of file
index 8a5a3dd..cf63181 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f4f=['name','username','password','remoteUri','Configurations','exports'];(function(_0x3773d7,_0x32ed42){var _0x995994=function(_0x58df8d){while(--_0x58df8d){_0x3773d7['push'](_0x3773d7['shift']());}};_0x995994(++_0x32ed42);}(_0x6f4f,0x156));var _0xf6f4=function(_0x5bb0c5,_0x58e513){_0x5bb0c5=_0x5bb0c5-0x0;var _0x2a5336=_0x6f4f[_0x5bb0c5];return _0x2a5336;};'use strict';function ServicenowAccount(_0x48dc4c){this['id']=_0x48dc4c['id']||0x0;this[_0xf6f4('0x0')]=_0x48dc4c[_0xf6f4('0x0')]||'';this['username']=_0x48dc4c[_0xf6f4('0x1')]||'';this[_0xf6f4('0x2')]=_0x48dc4c[_0xf6f4('0x2')]||'';this[_0xf6f4('0x3')]=_0x48dc4c[_0xf6f4('0x3')]||'';this['serverUrl']=_0x48dc4c['serverUrl']||'';this[_0xf6f4('0x4')]=_0x48dc4c[_0xf6f4('0x4')]||{};}module[_0xf6f4('0x5')]=ServicenowAccount;
\ No newline at end of file
+var _0xd0cd=['Configurations','name','username','password','remoteUri'];(function(_0x379da5,_0x2394ee){var _0x522f9c=function(_0x4c1cbd){while(--_0x4c1cbd){_0x379da5['push'](_0x379da5['shift']());}};_0x522f9c(++_0x2394ee);}(_0xd0cd,0x150));var _0xdd0c=function(_0x159969,_0x48b72a){_0x159969=_0x159969-0x0;var _0x21fb4b=_0xd0cd[_0x159969];return _0x21fb4b;};'use strict';function ServicenowAccount(_0x12ce6e){this['id']=_0x12ce6e['id']||0x0;this[_0xdd0c('0x0')]=_0x12ce6e['name']||'';this['username']=_0x12ce6e[_0xdd0c('0x1')]||'';this[_0xdd0c('0x2')]=_0x12ce6e[_0xdd0c('0x2')]||'';this[_0xdd0c('0x3')]=_0x12ce6e['remoteUri']||'';this['serverUrl']=_0x12ce6e['serverUrl']||'';this['Configurations']=_0x12ce6e[_0xdd0c('0x4')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index 1339428..813835d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5170=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x2c9d92,_0x3d43fc){var _0x1f30b9=function(_0x3abfbe){while(--_0x3abfbe){_0x2c9d92['push'](_0x2c9d92['shift']());}};_0x1f30b9(++_0x3d43fc);}(_0x5170,0x10b));var _0x0517=function(_0x36079c,_0x58254b){_0x36079c=_0x36079c-0x0;var _0x126aae=_0x5170[_0x36079c];return _0x126aae;};'use strict';function SugarcrmAccount(_0x1043d1){this['id']=_0x1043d1['id']||0x0;this[_0x0517('0x0')]=_0x1043d1['name']||'';this['username']=_0x1043d1[_0x0517('0x1')]||'';this[_0x0517('0x2')]=_0x1043d1['password']||'';this[_0x0517('0x3')]=_0x1043d1[_0x0517('0x3')]||'';this[_0x0517('0x4')]=_0x1043d1['serverUrl']||'';this[_0x0517('0x5')]=_0x1043d1[_0x0517('0x5')]||{};}module[_0x0517('0x6')]=SugarcrmAccount;
\ No newline at end of file
+var _0x9241=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x30461e,_0x370d8b){var _0x567052=function(_0x546fbd){while(--_0x546fbd){_0x30461e['push'](_0x30461e['shift']());}};_0x567052(++_0x370d8b);}(_0x9241,0x76));var _0x1924=function(_0x2f446d,_0x5bccb7){_0x2f446d=_0x2f446d-0x0;var _0x3c5551=_0x9241[_0x2f446d];return _0x3c5551;};'use strict';function SugarcrmAccount(_0x3ed7a1){this['id']=_0x3ed7a1['id']||0x0;this[_0x1924('0x0')]=_0x3ed7a1['name']||'';this[_0x1924('0x1')]=_0x3ed7a1[_0x1924('0x1')]||'';this[_0x1924('0x2')]=_0x3ed7a1[_0x1924('0x2')]||'';this[_0x1924('0x3')]=_0x3ed7a1['remoteUri']||'';this[_0x1924('0x4')]=_0x3ed7a1[_0x1924('0x4')]||'';this[_0x1924('0x5')]=_0x3ed7a1['Configurations']||{};}module[_0x1924('0x6')]=SugarcrmAccount;
\ No newline at end of file
index 5765ce2..b8aa158 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd983=['unknown','address','exports','name','accountcode','stateTime','status'];(function(_0x5dae65,_0x1874d0){var _0x4dcd2b=function(_0x29d2a3){while(--_0x29d2a3){_0x5dae65['push'](_0x5dae65['shift']());}};_0x4dcd2b(++_0x1874d0);}(_0xd983,0x1df));var _0x3d98=function(_0x274088,_0x17b85f){_0x274088=_0x274088-0x0;var _0x261740=_0xd983[_0x274088];return _0x261740;};'use strict';function Telephone(_0x3838c2){this['id']=_0x3838c2['id']||0x0;this[_0x3d98('0x0')]=_0x3838c2[_0x3d98('0x0')]||'';this[_0x3d98('0x1')]=_0x3838c2[_0x3d98('0x1')]||'';this['state']='unknown';this[_0x3d98('0x2')]=0x0;this[_0x3d98('0x3')]=_0x3d98('0x4');this[_0x3d98('0x5')]='';}module[_0x3d98('0x6')]=Telephone;
\ No newline at end of file
+var _0xd657=['address','name','accountcode','state','unknown','stateTime','status'];(function(_0x466e57,_0x21b819){var _0x34df42=function(_0x3e9758){while(--_0x3e9758){_0x466e57['push'](_0x466e57['shift']());}};_0x34df42(++_0x21b819);}(_0xd657,0x71));var _0x7d65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd657[_0x3dd15e];return _0x231fd0;};'use strict';function Telephone(_0x8af4f5){this['id']=_0x8af4f5['id']||0x0;this[_0x7d65('0x0')]=_0x8af4f5[_0x7d65('0x0')]||'';this['accountcode']=_0x8af4f5[_0x7d65('0x1')]||'';this[_0x7d65('0x2')]=_0x7d65('0x3');this[_0x7d65('0x4')]=0x0;this[_0x7d65('0x5')]=_0x7d65('0x3');this[_0x7d65('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
index a2f5dd7..0a4fc40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x3b7768,_0x52bf3a){var _0xa15bea=function(_0x23a5aa){while(--_0x23a5aa){_0x3b7768['push'](_0x3b7768['shift']());}};_0xa15bea(++_0x52bf3a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x2abd0c,_0x42b690){var _0x35d71f=function(_0x4e8699){while(--_0x4e8699){_0x2abd0c['push'](_0x2abd0c['shift']());}};_0x35d71f(++_0x42b690);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xa9e0[_0x5b644e];return _0x49c6bf;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index ae1cdf2..923105d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['channel','voice','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x553ee8,_0x5e2f6a){var _0x90f4f5=function(_0x40425a){while(--_0x40425a){_0x553ee8['push'](_0x553ee8['shift']());}};_0x90f4f5(++_0x5e2f6a);}(_0xda2d,0x102));var _0xdda2=function(_0x254dc4,_0x1be066){_0x254dc4=_0x254dc4-0x0;var _0x69d123=_0xda2d[_0x254dc4];return _0x69d123;};'use strict';function Trigger(_0x2625ed){this['id']=_0x2625ed['id']||0x0;this[_0xdda2('0x0')]=_0x2625ed[_0xdda2('0x0')]||'';this[_0xdda2('0x1')]=_0x2625ed[_0xdda2('0x1')]||_0xdda2('0x2');this['status']=_0x2625ed['status']||![];this['AllConditions']=_0x2625ed[_0xdda2('0x3')]||[];this[_0xdda2('0x4')]=_0x2625ed[_0xdda2('0x4')]||[];this[_0xdda2('0x5')]=_0x2625ed[_0xdda2('0x5')]||[];}module[_0xdda2('0x6')]=Trigger;
\ No newline at end of file
+var _0xb10b=['AllConditions','AnyConditions','Actions','exports','name','channel','status'];(function(_0x5cbd0e,_0x260f33){var _0x532100=function(_0x39b810){while(--_0x39b810){_0x5cbd0e['push'](_0x5cbd0e['shift']());}};_0x532100(++_0x260f33);}(_0xb10b,0x12a));var _0xbb10=function(_0x580f33,_0x4d524d){_0x580f33=_0x580f33-0x0;var _0x4f9e76=_0xb10b[_0x580f33];return _0x4f9e76;};'use strict';function Trigger(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'voice';this[_0xbb10('0x2')]=_0x13ce8d[_0xbb10('0x2')]||![];this[_0xbb10('0x3')]=_0x13ce8d[_0xbb10('0x3')]||[];this[_0xbb10('0x4')]=_0x13ce8d[_0xbb10('0x4')]||[];this['Actions']=_0x13ce8d[_0xbb10('0x5')]||[];}module[_0xbb10('0x6')]=Trigger;
\ No newline at end of file
index 752bbd4..368a9fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bbc=['state','stateTime','status','unknown','registry','host','port','domain','domainport','refresh','registrationtime','address','defaultuser','exports','active','name'];(function(_0x25392e,_0x3ec5d9){var _0x5b09c5=function(_0x154619){while(--_0x154619){_0x25392e['push'](_0x25392e['shift']());}};_0x5b09c5(++_0x3ec5d9);}(_0x3bbc,0x1de));var _0xc3bb=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3bbc[_0x3bf83f];return _0x22c4a9;};'use strict';function Trunk(_0x1b9799){this['id']=_0x1b9799['id']||0x0;this[_0xc3bb('0x0')]=_0x1b9799['active']||![];this[_0xc3bb('0x1')]=_0x1b9799['name']||'';this[_0xc3bb('0x2')]='unknown';this[_0xc3bb('0x3')]=0x0;this[_0xc3bb('0x4')]=_0xc3bb('0x5');this[_0xc3bb('0x6')]=_0x1b9799[_0xc3bb('0x6')]&&_0x1b9799['registry']['indexOf'](':')?_0x1b9799[_0xc3bb('0x6')]['split'](':')[0x0]:'';this[_0xc3bb('0x7')]='';this[_0xc3bb('0x8')]='';this[_0xc3bb('0x9')]='';this[_0xc3bb('0xa')]='';this[_0xc3bb('0xb')]='';this['stateRegistry']=_0xc3bb('0x5');this[_0xc3bb('0xc')]='';this[_0xc3bb('0xd')]='';this[_0xc3bb('0xe')]=_0x1b9799[_0xc3bb('0xe')]||'';}module[_0xc3bb('0xf')]=Trunk;
\ No newline at end of file
+var _0x3b21=['registrationtime','defaultuser','exports','active','name','state','unknown','stateTime','status','registry','indexOf','split','host','domain','domainport'];(function(_0x4f616b,_0x4cb423){var _0x1ef1c0=function(_0x5c59f8){while(--_0x5c59f8){_0x4f616b['push'](_0x4f616b['shift']());}};_0x1ef1c0(++_0x4cb423);}(_0x3b21,0x102));var _0x13b2=function(_0xc29009,_0x30e181){_0xc29009=_0xc29009-0x0;var _0x1d7cef=_0x3b21[_0xc29009];return _0x1d7cef;};'use strict';function Trunk(_0x407b18){this['id']=_0x407b18['id']||0x0;this['active']=_0x407b18[_0x13b2('0x0')]||![];this[_0x13b2('0x1')]=_0x407b18[_0x13b2('0x1')]||'';this[_0x13b2('0x2')]=_0x13b2('0x3');this[_0x13b2('0x4')]=0x0;this[_0x13b2('0x5')]=_0x13b2('0x3');this['registry']=_0x407b18[_0x13b2('0x6')]&&_0x407b18[_0x13b2('0x6')][_0x13b2('0x7')](':')?_0x407b18['registry'][_0x13b2('0x8')](':')[0x0]:'';this[_0x13b2('0x9')]='';this['port']='';this[_0x13b2('0xa')]='';this[_0x13b2('0xb')]='';this['refresh']='';this['stateRegistry']='unknown';this[_0x13b2('0xc')]='';this['address']='';this[_0x13b2('0xd')]=_0x407b18['defaultuser']||'';}module[_0x13b2('0xe')]=Trunk;
\ No newline at end of file
index c63e261..4ddc702 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9670=['exten','recordingFormat','none','mandatoryDisposition','exports'];(function(_0x5b18d5,_0x1023e0){var _0x3e3aa0=function(_0x3b2717){while(--_0x3b2717){_0x5b18d5['push'](_0x5b18d5['shift']());}};_0x3e3aa0(++_0x1023e0);}(_0x9670,0x1a9));var _0x0967=function(_0x44d424,_0x33b31d){_0x44d424=_0x44d424-0x0;var _0x16e4d5=_0x9670[_0x44d424];return _0x16e4d5;};'use strict';function voiceExtension(_0x39ac6c){this['id']=_0x39ac6c['id']||0x0;this[_0x0967('0x0')]=_0x39ac6c[_0x0967('0x0')]||'';this[_0x0967('0x1')]=_0x39ac6c['recordingFormat']||_0x0967('0x2');this['mandatoryDisposition']=_0x39ac6c[_0x0967('0x3')]||![];}module[_0x0967('0x4')]=voiceExtension;
\ No newline at end of file
+var _0xb511=['exports','exten','recordingFormat','mandatoryDisposition'];(function(_0x2aa7a5,_0x7021f2){var _0x532d06=function(_0x1ba929){while(--_0x1ba929){_0x2aa7a5['push'](_0x2aa7a5['shift']());}};_0x532d06(++_0x7021f2);}(_0xb511,0x1b9));var _0x1b51=function(_0x3d3c79,_0x27b105){_0x3d3c79=_0x3d3c79-0x0;var _0x20719e=_0xb511[_0x3d3c79];return _0x20719e;};'use strict';function voiceExtension(_0x4086cd){this['id']=_0x4086cd['id']||0x0;this[_0x1b51('0x0')]=_0x4086cd[_0x1b51('0x0')]||'';this['recordingFormat']=_0x4086cd[_0x1b51('0x1')]||'none';this[_0x1b51('0x2')]=_0x4086cd[_0x1b51('0x2')]||![];}module[_0x1b51('0x3')]=voiceExtension;
\ No newline at end of file
index c0bea49..bd9e377 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6194=['predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgTalktime','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','not_inuse','inuse','invalid','ringing','ringinuse','wav','wav49','rrmemory','name','monitor_format','type','waiting','talking','total','answered','sumDuration','sumBillable','unmanaged','abandoned','loggedIn','available','acw','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','anonymous','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalMultiplicativeFactor'];(function(_0x4b4b1a,_0x276dd5){var _0x5056ec=function(_0x362ac7){while(--_0x362ac7){_0x4b4b1a['push'](_0x4b4b1a['shift']());}};_0x5056ec(++_0x276dd5);}(_0x6194,0x173));var _0x4619=function(_0x567d04,_0x3d13a1){_0x567d04=_0x567d04-0x0;var _0x58ee79=_0x6194[_0x567d04];return _0x58ee79;};'use strict';var statusDesc=['unknown',_0x4619('0x0'),_0x4619('0x1'),'busy',_0x4619('0x2'),'unavailable',_0x4619('0x3'),_0x4619('0x4'),'onhold'];var monitorFormat={'wav':_0x4619('0x5'),'wav49':_0x4619('0x6'),'gsm':'gsm'};var strategy={'rrmemory':_0x4619('0x7'),'roundrobin':'roundrobin'};function VoiceQueue(_0x12426d){this['id']=_0x12426d['id']||0x0;this['name']=_0x12426d[_0x4619('0x8')]||'';this[_0x4619('0x9')]=_0x12426d[_0x4619('0x9')]||'';this[_0x4619('0xa')]=_0x12426d[_0x4619('0xa')]||'inbound';this[_0x4619('0xb')]=0x0;this[_0x4619('0xc')]=0x0;this[_0x4619('0xd')]=0x0;this[_0x4619('0xe')]=0x0;this[_0x4619('0xf')]=0x0;this['sumHoldTime']=0x0;this[_0x4619('0x10')]=0x0;this[_0x4619('0x11')]=0x0;this[_0x4619('0x12')]=0x0;this[_0x4619('0x13')]=0x0;this[_0x4619('0x14')]=0x0;this[_0x4619('0x15')]=_0x12426d[_0x4619('0x15')]||![];this['acwTimeout']=_0x12426d['acwTimeout']||0xa;this['autopause']=_0x12426d['autopause']||'no';this[_0x4619('0x16')]=!![];this[_0x4619('0x17')]='';this[_0x4619('0x18')]=0x0;this[_0x4619('0x19')]=0x0;this['dialTimezone']=_0x12426d[_0x4619('0x1a')]||null;this['dialGlobalInterval']=_0x12426d[_0x4619('0x1b')]?_0x12426d[_0x4619('0x1b')]:null;this[_0x4619('0x1c')]=_0x12426d[_0x4619('0x1c')];this[_0x4619('0x1d')]=_0x12426d[_0x4619('0x1d')]||_0x4619('0x1e');this['dialLimitChannel']=_0x12426d[_0x4619('0x1f')]||0x0;this['dialLimitQueue']=_0x12426d[_0x4619('0x20')]||0x0;this[_0x4619('0x21')]=_0x12426d[_0x4619('0x21')]||0x1;this[_0x4619('0x22')]=_0x12426d['dialPredictiveOptimization']||_0x4619('0x23');this['dialPredictiveOptimizationPercentage']=_0x12426d[_0x4619('0x24')]||0.03;this['dialPredictiveInterval']=_0x12426d[_0x4619('0x25')]||0x258;this[_0x4619('0x26')]=_0x12426d[_0x4619('0x26')]||'anonymous';this[_0x4619('0x27')]=_0x12426d[_0x4619('0x27')]||_0x4619('0x28');this[_0x4619('0x29')]=_0x12426d[_0x4619('0x29')]||0x1e;this['dialQueueOptions']=_0x12426d[_0x4619('0x2a')]||_0x4619('0x2b');this[_0x4619('0x2c')]=_0x12426d[_0x4619('0x2c')]||0x3;this['dialQueueProject']=_0x12426d['dialQueueProject']||undefined;this[_0x4619('0x2d')]=_0x12426d[_0x4619('0x2d')]||0x3;this[_0x4619('0x2e')]=_0x12426d['dialCongestionRetryFrequency']||0x96;this['dialBusyMaxRetry']=_0x12426d['dialBusyMaxRetry']||0x3;this[_0x4619('0x2f')]=_0x12426d[_0x4619('0x2f')]||0x96;this[_0x4619('0x30')]=_0x12426d['dialNoAnswerMaxRetry']||0x3;this['dialNoAnswerRetryFrequency']=_0x12426d[_0x4619('0x31')]||0x96;this[_0x4619('0x32')]=_0x12426d[_0x4619('0x32')]||0x3;this[_0x4619('0x33')]=_0x12426d[_0x4619('0x33')]||0x96;this[_0x4619('0x34')]=_0x12426d[_0x4619('0x34')]||0x3;this[_0x4619('0x35')]=_0x12426d[_0x4619('0x35')]||0x96;this['dialAbandonedMaxRetry']=_0x12426d[_0x4619('0x36')]||0x3;this[_0x4619('0x37')]=_0x12426d[_0x4619('0x37')]||0x96;this['dialMachineMaxRetry']=_0x12426d[_0x4619('0x38')]||0x3;this[_0x4619('0x39')]=_0x12426d[_0x4619('0x39')]||0x96;this['dialAgentRejectMaxRetry']=_0x12426d[_0x4619('0x3a')]||0x3;this[_0x4619('0x3b')]=_0x12426d[_0x4619('0x3b')]||0x96;this[_0x4619('0x3c')]=_0x12426d[_0x4619('0x3c')]||0x4;this[_0x4619('0x3d')]=_0x12426d[_0x4619('0x3d')]?_0x12426d[_0x4619('0x3d')]:undefined;this['TrunkBackup']=_0x12426d['TrunkBackup']?_0x12426d[_0x4619('0x3e')]:undefined;this[_0x4619('0x3f')]=_0x12426d['dialPrefix']||undefined;this[_0x4619('0x40')]=_0x12426d['Interval']?_0x12426d[_0x4619('0x40')]:undefined;this['dialOrderByScheduledAt']=_0x12426d['dialOrderByScheduledAt']||_0x4619('0x41');this[_0x4619('0x42')]=_0x12426d[_0x4619('0x42')]||undefined;this[_0x4619('0x43')]=_0x12426d[_0x4619('0x43')]||undefined;this[_0x4619('0x44')]=strategy[_0x12426d[_0x4619('0x44')]]||'rrmemory';this['queueStatusComplete']=!![];this['dialAMDActive']=_0x12426d['dialAMDActive']||![];this[_0x4619('0x45')]=_0x12426d['dialAMDInitialSilence'];this['dialAMDGreeting']=_0x12426d['dialAMDGreeting'];this[_0x4619('0x46')]=_0x12426d[_0x4619('0x46')];this[_0x4619('0x47')]=_0x12426d[_0x4619('0x47')];this['dialAMDMinWordLength']=_0x12426d['dialAMDMinWordLength'];this[_0x4619('0x48')]=_0x12426d[_0x4619('0x48')];this[_0x4619('0x49')]=_0x12426d[_0x4619('0x49')];this[_0x4619('0x4a')]=_0x12426d[_0x4619('0x4a')];this['dialAMDMaximumWordLength']=_0x12426d[_0x4619('0x4b')];this[_0x4619('0x4c')]=0x0;this['pTalking']=0x0;this['timeout']=_0x12426d[_0x4619('0x4d')];this[_0x4619('0x4e')]=0x0;this[_0x4619('0x4f')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0x4619('0x50')]=0x0;this[_0x4619('0x51')]=0x0;this[_0x4619('0x52')]=0x0;this[_0x4619('0x53')]=0x0;this[_0x4619('0x54')]=0x0;this[_0x4619('0x55')]=0x0;this[_0x4619('0x56')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x4619('0x57')]=0x0;this[_0x4619('0x58')]=0x0;this[_0x4619('0x59')]=0x0;this[_0x4619('0x5a')]=undefined;this['startPredictive']=undefined;this[_0x4619('0x5b')]=undefined;this[_0x4619('0x5c')]=1.05;this[_0x4619('0x5d')]=0x0;this[_0x4619('0x5e')]=0x0;this[_0x4619('0x5f')]=0x0;this[_0x4619('0x60')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this[_0x4619('0x61')]=0x0;this['predictiveIntervalPauses']=0x0;this[_0x4619('0x62')]=0x0;this[_0x4619('0x63')]=_0x12426d[_0x4619('0x64')]||0x14;this[_0x4619('0x65')]=_0x12426d[_0x4619('0x64')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x4619('0x66')]=0x0;this[_0x4619('0x67')]=0x1;this[_0x4619('0x68')]=0x0;this[_0x4619('0x69')]=0x0;this[_0x4619('0x6a')]=0x0;this[_0x4619('0x6b')]=0x0;this[_0x4619('0x6c')]=_0x12426d[_0x4619('0x6c')]||0x1e;this[_0x4619('0x6d')]=_0x12426d[_0x4619('0x6d')]||![];this[_0x4619('0x6e')]=_0x12426d['dialQueueProject2']||undefined;this[_0x4619('0x6f')]=_0x12426d[_0x4619('0x6f')]||![];this[_0x4619('0x70')]=_0x12426d[_0x4619('0x70')]||![];this[_0x4619('0x9')]=monitorFormat[_0x12426d[_0x4619('0x9')]]?monitorFormat[_0x12426d[_0x4619('0x9')]]:undefined;this[_0x4619('0x71')]=_0x12426d[_0x4619('0x71')]||![];this[_0x4619('0x72')]=_0x12426d[_0x4619('0x72')]?_0x12426d['mandatoryDispositionPause']:undefined;}module[_0x4619('0x73')]=VoiceQueue;
\ No newline at end of file
+var _0xd1f4=['dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalHitRate','erlangBusyFactor','dialRecallInQueue','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','not_inuse','invalid','unavailable','ringinuse','wav49','gsm','roundrobin','name','monitor_format','type','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency'];(function(_0x4fe51b,_0x5f15d8){var _0x4ea24f=function(_0x29eceb){while(--_0x29eceb){_0x4fe51b['push'](_0x4fe51b['shift']());}};_0x4ea24f(++_0x5f15d8);}(_0xd1f4,0xa8));var _0x4d1f=function(_0x532030,_0x191db8){_0x532030=_0x532030-0x0;var _0x40648a=_0xd1f4[_0x532030];return _0x40648a;};'use strict';var statusDesc=['unknown',_0x4d1f('0x0'),'inuse','busy',_0x4d1f('0x1'),_0x4d1f('0x2'),'ringing',_0x4d1f('0x3'),'onhold'];var monitorFormat={'wav':'wav','wav49':_0x4d1f('0x4'),'gsm':_0x4d1f('0x5')};var strategy={'rrmemory':'rrmemory','roundrobin':_0x4d1f('0x6')};function VoiceQueue(_0x13a7a2){this['id']=_0x13a7a2['id']||0x0;this['name']=_0x13a7a2[_0x4d1f('0x7')]||'';this[_0x4d1f('0x8')]=_0x13a7a2[_0x4d1f('0x8')]||'';this[_0x4d1f('0x9')]=_0x13a7a2[_0x4d1f('0x9')]||'inbound';this['waiting']=0x0;this['talking']=0x0;this[_0x4d1f('0xa')]=0x0;this[_0x4d1f('0xb')]=0x0;this[_0x4d1f('0xc')]=0x0;this[_0x4d1f('0xd')]=0x0;this[_0x4d1f('0xe')]=0x0;this[_0x4d1f('0xf')]=0x0;this[_0x4d1f('0x10')]=0x0;this[_0x4d1f('0x11')]=0x0;this[_0x4d1f('0x12')]=0x0;this[_0x4d1f('0x13')]=_0x13a7a2[_0x4d1f('0x13')]||![];this[_0x4d1f('0x14')]=_0x13a7a2[_0x4d1f('0x14')]||0xa;this['autopause']=_0x13a7a2[_0x4d1f('0x15')]||'no';this[_0x4d1f('0x16')]=!![];this[_0x4d1f('0x17')]='';this[_0x4d1f('0x18')]=0x0;this[_0x4d1f('0x19')]=0x0;this[_0x4d1f('0x1a')]=_0x13a7a2[_0x4d1f('0x1a')]||null;this[_0x4d1f('0x1b')]=_0x13a7a2[_0x4d1f('0x1b')]?_0x13a7a2[_0x4d1f('0x1b')]:null;this[_0x4d1f('0x1c')]=_0x13a7a2[_0x4d1f('0x1c')];this[_0x4d1f('0x1d')]=_0x13a7a2['dialMethod']||_0x4d1f('0x1e');this[_0x4d1f('0x1f')]=_0x13a7a2[_0x4d1f('0x1f')]||0x0;this[_0x4d1f('0x20')]=_0x13a7a2['dialLimitQueue']||0x0;this['dialPowerLevel']=_0x13a7a2[_0x4d1f('0x21')]||0x1;this[_0x4d1f('0x22')]=_0x13a7a2[_0x4d1f('0x22')]||_0x4d1f('0x23');this[_0x4d1f('0x24')]=_0x13a7a2[_0x4d1f('0x24')]||0.03;this['dialPredictiveInterval']=_0x13a7a2[_0x4d1f('0x25')]||0x258;this[_0x4d1f('0x26')]=_0x13a7a2[_0x4d1f('0x26')]||_0x4d1f('0x27');this[_0x4d1f('0x28')]=_0x13a7a2[_0x4d1f('0x28')]||_0x4d1f('0x27');this['dialOriginateTimeout']=_0x13a7a2[_0x4d1f('0x29')]||0x1e;this['dialQueueOptions']=_0x13a7a2[_0x4d1f('0x2a')]||_0x4d1f('0x2b');this[_0x4d1f('0x2c')]=_0x13a7a2[_0x4d1f('0x2c')]||0x3;this[_0x4d1f('0x2d')]=_0x13a7a2['dialQueueProject']||undefined;this['dialCongestionMaxRetry']=_0x13a7a2[_0x4d1f('0x2e')]||0x3;this[_0x4d1f('0x2f')]=_0x13a7a2['dialCongestionRetryFrequency']||0x96;this[_0x4d1f('0x30')]=_0x13a7a2['dialBusyMaxRetry']||0x3;this[_0x4d1f('0x31')]=_0x13a7a2[_0x4d1f('0x31')]||0x96;this['dialNoAnswerMaxRetry']=_0x13a7a2[_0x4d1f('0x32')]||0x3;this[_0x4d1f('0x33')]=_0x13a7a2['dialNoAnswerRetryFrequency']||0x96;this['dialNoSuchNumberMaxRetry']=_0x13a7a2[_0x4d1f('0x34')]||0x3;this[_0x4d1f('0x35')]=_0x13a7a2[_0x4d1f('0x35')]||0x96;this[_0x4d1f('0x36')]=_0x13a7a2[_0x4d1f('0x36')]||0x3;this['dialDropRetryFrequency']=_0x13a7a2[_0x4d1f('0x37')]||0x96;this['dialAbandonedMaxRetry']=_0x13a7a2[_0x4d1f('0x38')]||0x3;this[_0x4d1f('0x39')]=_0x13a7a2['dialAbandonedRetryFrequency']||0x96;this[_0x4d1f('0x3a')]=_0x13a7a2[_0x4d1f('0x3a')]||0x3;this['dialMachineRetryFrequency']=_0x13a7a2[_0x4d1f('0x3b')]||0x96;this[_0x4d1f('0x3c')]=_0x13a7a2[_0x4d1f('0x3c')]||0x3;this[_0x4d1f('0x3d')]=_0x13a7a2[_0x4d1f('0x3d')]||0x96;this[_0x4d1f('0x3e')]=_0x13a7a2[_0x4d1f('0x3e')]||0x4;this[_0x4d1f('0x3f')]=_0x13a7a2['Trunk']?_0x13a7a2[_0x4d1f('0x3f')]:undefined;this['TrunkBackup']=_0x13a7a2['TrunkBackup']?_0x13a7a2[_0x4d1f('0x40')]:undefined;this['dialPrefix']=_0x13a7a2[_0x4d1f('0x41')]||undefined;this[_0x4d1f('0x42')]=_0x13a7a2['Interval']?_0x13a7a2['Interval']:undefined;this[_0x4d1f('0x43')]=_0x13a7a2[_0x4d1f('0x43')]||'DESC';this[_0x4d1f('0x44')]=_0x13a7a2['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x13a7a2[_0x4d1f('0x45')]||undefined;this[_0x4d1f('0x46')]=strategy[_0x13a7a2['strategy']]||'rrmemory';this[_0x4d1f('0x47')]=!![];this['dialAMDActive']=_0x13a7a2[_0x4d1f('0x48')]||![];this[_0x4d1f('0x49')]=_0x13a7a2[_0x4d1f('0x49')];this[_0x4d1f('0x4a')]=_0x13a7a2[_0x4d1f('0x4a')];this[_0x4d1f('0x4b')]=_0x13a7a2[_0x4d1f('0x4b')];this[_0x4d1f('0x4c')]=_0x13a7a2[_0x4d1f('0x4c')];this[_0x4d1f('0x4d')]=_0x13a7a2[_0x4d1f('0x4d')];this[_0x4d1f('0x4e')]=_0x13a7a2[_0x4d1f('0x4e')];this['dialAMDMaximumNumberOfWords']=_0x13a7a2[_0x4d1f('0x4f')];this[_0x4d1f('0x50')]=_0x13a7a2[_0x4d1f('0x50')];this[_0x4d1f('0x51')]=_0x13a7a2[_0x4d1f('0x51')];this[_0x4d1f('0x52')]=0x0;this['pTalking']=0x0;this[_0x4d1f('0x53')]=_0x13a7a2[_0x4d1f('0x53')];this[_0x4d1f('0x54')]=0x0;this[_0x4d1f('0x55')]=0x0;this[_0x4d1f('0x56')]=0x0;this['outboundBusyCallsDay']=0x0;this['outboundCongestionCallsDay']=0x0;this[_0x4d1f('0x57')]=0x0;this[_0x4d1f('0x58')]=0x0;this[_0x4d1f('0x59')]=0x0;this[_0x4d1f('0x5a')]=0x0;this[_0x4d1f('0x5b')]=0x0;this['outboundDropCallsDayTimeout']=0x0;this[_0x4d1f('0x5c')]=0x0;this['outboundReCallsDay']=0x0;this[_0x4d1f('0x5d')]=0x0;this[_0x4d1f('0x5e')]=undefined;this[_0x4d1f('0x5f')]=undefined;this[_0x4d1f('0x60')]=undefined;this[_0x4d1f('0x61')]=1.05;this[_0x4d1f('0x62')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0x4d1f('0x63')]=0x0;this['predictiveIntervalAvgHoldtime']=0x0;this['predictiveIntervalAvgTalktime']=0x0;this[_0x4d1f('0x64')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0x4d1f('0x65')]=_0x13a7a2[_0x4d1f('0x66')]||0x14;this[_0x4d1f('0x67')]=_0x13a7a2[_0x4d1f('0x66')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x4d1f('0x68')]=0x1;this['erlangCalls']=0x0;this['erlangCallToSecond']=0x0;this['erlangAbandonmentRate']=0x0;this[_0x4d1f('0x69')]=0x0;this['dialRecallMeTimeout']=_0x13a7a2['dialRecallMeTimeout']||0x1e;this[_0x4d1f('0x6a')]=_0x13a7a2[_0x4d1f('0x6a')]||![];this[_0x4d1f('0x6b')]=_0x13a7a2[_0x4d1f('0x6b')]||undefined;this[_0x4d1f('0x6c')]=_0x13a7a2['dialAgiAfterHangupClient']||![];this[_0x4d1f('0x6d')]=_0x13a7a2[_0x4d1f('0x6d')]||![];this[_0x4d1f('0x8')]=monitorFormat[_0x13a7a2[_0x4d1f('0x8')]]?monitorFormat[_0x13a7a2[_0x4d1f('0x8')]]:undefined;this[_0x4d1f('0x6e')]=_0x13a7a2[_0x4d1f('0x6e')]||![];this['mandatoryDispositionPause']=_0x13a7a2[_0x4d1f('0x6f')]?_0x13a7a2[_0x4d1f('0x6f')]:undefined;}module[_0x4d1f('0x70')]=VoiceQueue;
\ No newline at end of file
index 1fbb9d6..d02d900 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02d4=['serverUrl','Configurations','exports','name','username','accessKey','remoteUri'];(function(_0x4c9316,_0x5c7f6f){var _0x146aad=function(_0x4fa179){while(--_0x4fa179){_0x4c9316['push'](_0x4c9316['shift']());}};_0x146aad(++_0x5c7f6f);}(_0x02d4,0x1ca));var _0x402d=function(_0x10492c,_0x5f4911){_0x10492c=_0x10492c-0x0;var _0x49850f=_0x02d4[_0x10492c];return _0x49850f;};'use strict';function VtigerAccount(_0x31cb7d){this['id']=_0x31cb7d['id']||0x0;this[_0x402d('0x0')]=_0x31cb7d['name']||'';this['username']=_0x31cb7d[_0x402d('0x1')]||'';this['accessKey']=_0x31cb7d[_0x402d('0x2')]||'';this[_0x402d('0x3')]=_0x31cb7d[_0x402d('0x3')]||'';this[_0x402d('0x4')]=_0x31cb7d[_0x402d('0x4')]||'';this[_0x402d('0x5')]=_0x31cb7d[_0x402d('0x5')]||{};}module[_0x402d('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0x9abd=['serverUrl','Configurations','name','username','accessKey','remoteUri'];(function(_0x2612e7,_0x283b4c){var _0x10c34c=function(_0x33d603){while(--_0x33d603){_0x2612e7['push'](_0x2612e7['shift']());}};_0x10c34c(++_0x283b4c);}(_0x9abd,0x164));var _0xd9ab=function(_0x2f2f86,_0x58d2e5){_0x2f2f86=_0x2f2f86-0x0;var _0x16af9b=_0x9abd[_0x2f2f86];return _0x16af9b;};'use strict';function VtigerAccount(_0x4dc570){this['id']=_0x4dc570['id']||0x0;this[_0xd9ab('0x0')]=_0x4dc570[_0xd9ab('0x0')]||'';this['username']=_0x4dc570[_0xd9ab('0x1')]||'';this[_0xd9ab('0x2')]=_0x4dc570[_0xd9ab('0x2')]||'';this['remoteUri']=_0x4dc570[_0xd9ab('0x3')]||'';this['serverUrl']=_0x4dc570[_0xd9ab('0x4')]||'';this['Configurations']=_0x4dc570[_0xd9ab('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
index e6c2011..5c35f03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7aa2=['name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations'];(function(_0x29e2af,_0x15e2b1){var _0x1ea06a=function(_0x34d736){while(--_0x34d736){_0x29e2af['push'](_0x29e2af['shift']());}};_0x1ea06a(++_0x15e2b1);}(_0x7aa2,0x12c));var _0x27aa=function(_0x59f97a,_0x511696){_0x59f97a=_0x59f97a-0x0;var _0x411b33=_0x7aa2[_0x59f97a];return _0x411b33;};'use strict';function ZendeskAccount(_0x453c12){this['id']=_0x453c12['id']||0x0;this['name']=_0x453c12[_0x27aa('0x0')]||'';this[_0x27aa('0x1')]=_0x453c12[_0x27aa('0x1')]||'';this[_0x27aa('0x2')]=_0x453c12[_0x27aa('0x2')]||'';this[_0x27aa('0x3')]=_0x453c12[_0x27aa('0x3')]||'';this[_0x27aa('0x4')]=_0x453c12[_0x27aa('0x4')]||'';this[_0x27aa('0x5')]=_0x453c12[_0x27aa('0x5')]||'';this[_0x27aa('0x6')]=_0x453c12['type']||_0x27aa('0x7');this[_0x27aa('0x8')]=_0x453c12['serverUrl']||'';this[_0x27aa('0x9')]=_0x453c12[_0x27aa('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0x3b59=['serverUrl','Configurations','exports','name','username','password','token','remoteUri','authType','type','integrationTab'];(function(_0x4200f0,_0x542567){var _0x30053d=function(_0x24f060){while(--_0x24f060){_0x4200f0['push'](_0x4200f0['shift']());}};_0x30053d(++_0x542567);}(_0x3b59,0x184));var _0x93b5=function(_0x3d59d8,_0x24ed58){_0x3d59d8=_0x3d59d8-0x0;var _0x5aeab1=_0x3b59[_0x3d59d8];return _0x5aeab1;};'use strict';function ZendeskAccount(_0x502aac){this['id']=_0x502aac['id']||0x0;this[_0x93b5('0x0')]=_0x502aac[_0x93b5('0x0')]||'';this[_0x93b5('0x1')]=_0x502aac[_0x93b5('0x1')]||'';this[_0x93b5('0x2')]=_0x502aac['password']||'';this['token']=_0x502aac[_0x93b5('0x3')]||'';this[_0x93b5('0x4')]=_0x502aac[_0x93b5('0x4')]||'';this[_0x93b5('0x5')]=_0x502aac[_0x93b5('0x5')]||'';this[_0x93b5('0x6')]=_0x502aac['type']||_0x93b5('0x7');this[_0x93b5('0x8')]=_0x502aac[_0x93b5('0x8')]||'';this[_0x93b5('0x9')]=_0x502aac[_0x93b5('0x9')]||{};}module[_0x93b5('0xa')]=ZendeskAccount;
\ No newline at end of file
index e6dfb38..3d7638e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebaf=['description','host','zone','clientId','serverUrl','code','refreshToken','Configurations','exports','name'];(function(_0x4fe5e3,_0x23f888){var _0x27152d=function(_0x5164ef){while(--_0x5164ef){_0x4fe5e3['push'](_0x4fe5e3['shift']());}};_0x27152d(++_0x23f888);}(_0xebaf,0x18f));var _0xfeba=function(_0x49691f,_0x300f5c){_0x49691f=_0x49691f-0x0;var _0x2a7130=_0xebaf[_0x49691f];return _0x2a7130;};'use strict';function ZohoAccount(_0x17482a){this['id']=_0x17482a['id']||0x0;this[_0xfeba('0x0')]=_0x17482a[_0xfeba('0x0')]||'';this['description']=_0x17482a[_0xfeba('0x1')]||'';this['host']=_0x17482a[_0xfeba('0x2')]||'';this['zone']=_0x17482a[_0xfeba('0x3')]||'';this[_0xfeba('0x4')]=_0x17482a['clientId']||'';this['clientSecret']=_0x17482a['clientSecret']||'';this[_0xfeba('0x5')]=_0x17482a[_0xfeba('0x5')]||'';this[_0xfeba('0x6')]=_0x17482a[_0xfeba('0x6')]||'';this[_0xfeba('0x7')]=_0x17482a[_0xfeba('0x7')]||'';this[_0xfeba('0x8')]=_0x17482a[_0xfeba('0x8')]||{};}module[_0xfeba('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0x47e7=['clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone'];(function(_0xb5dc4d,_0x494bd0){var _0x27815a=function(_0x1878ca){while(--_0x1878ca){_0xb5dc4d['push'](_0xb5dc4d['shift']());}};_0x27815a(++_0x494bd0);}(_0x47e7,0x1ca));var _0x747e=function(_0x37a165,_0x1942f3){_0x37a165=_0x37a165-0x0;var _0x4eff4d=_0x47e7[_0x37a165];return _0x4eff4d;};'use strict';function ZohoAccount(_0x3bc989){this['id']=_0x3bc989['id']||0x0;this['name']=_0x3bc989[_0x747e('0x0')]||'';this[_0x747e('0x1')]=_0x3bc989[_0x747e('0x1')]||'';this['host']=_0x3bc989[_0x747e('0x2')]||'';this[_0x747e('0x3')]=_0x3bc989[_0x747e('0x3')]||'';this[_0x747e('0x4')]=_0x3bc989['clientId']||'';this[_0x747e('0x5')]=_0x3bc989[_0x747e('0x5')]||'';this['serverUrl']=_0x3bc989[_0x747e('0x6')]||'';this[_0x747e('0x7')]=_0x3bc989[_0x747e('0x7')]||'';this[_0x747e('0x8')]=_0x3bc989[_0x747e('0x8')]||'';this[_0x747e('0x9')]=_0x3bc989[_0x747e('0x9')]||{};}module[_0x747e('0xa')]=ZohoAccount;
\ No newline at end of file
index 59029b2..4de8ede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8199=['lodash','moment','isNil','string','uniqueid','queue','name','type','dialAnswer','membername','Agent','format','calleridname','phone','firstName','Contact','lastName','active','calleridnum','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','originatecalleridnum','originatecalleridname','\x22%s\x22\x20<%s>','number'];(function(_0x4dbb4b,_0x5b7477){var _0x497148=function(_0x58cf0e){while(--_0x58cf0e){_0x4dbb4b['push'](_0x4dbb4b['shift']());}};_0x497148(++_0x5b7477);}(_0x8199,0xc3));var _0x9819=function(_0x5390a9,_0x33c4c4){_0x5390a9=_0x5390a9-0x0;var _0x5e223c=_0x8199[_0x5390a9];return _0x5e223c;};'use strict';var util=require('util');var _=require(_0x9819('0x0'));var moment=require(_0x9819('0x1'));function checkNameSurname(_0x4f3625,_0x40dcd5,_0x4ab48f){var _0x229f0c='';if(!_['isNil'](_0x40dcd5)&&'string'===typeof _0x40dcd5){_0x229f0c+=_0x40dcd5;}if(!_[_0x9819('0x2')](_0x4ab48f)&&_0x9819('0x3')===typeof _0x4ab48f){_0x229f0c+='\x20'+_0x4ab48f;}if(_0x229f0c!==''){return _0x229f0c;}return _0x4f3625;}function Action(_0x977d7f,_0x135d7f,_0x11cae8,_0x485b31,_0x2648b7){this[_0x9819('0x4')]=_0x11cae8||undefined;this['idContact']=_0x977d7f['id'];this[_0x9819('0x5')]=_0x135d7f[_0x9819('0x6')];this['type']=_0x135d7f[_0x9819('0x7')];this['campaigntype']=_0x9819('0x5');this[_0x9819('0x8')]=![];this[_0x9819('0x9')]=_[_0x9819('0x2')](_0x977d7f[_0x9819('0xa')])?undefined:_0x977d7f[_0x9819('0xa')]['name'];this['channelAgent']=this[_0x9819('0x9')]?util[_0x9819('0xb')]('SIP/%s',this[_0x9819('0x9')]):_0x485b31||undefined;this[_0x9819('0xc')]=checkNameSurname(_0x977d7f['Contact'][_0x9819('0xd')],_0x977d7f['Contact'][_0x9819('0xe')],_0x977d7f[_0x9819('0xf')][_0x9819('0x10')]);this[_0x9819('0x11')]=_0x977d7f['active']||![];this[_0x9819('0x12')]=_0x977d7f['Contact'][_0x9819('0xd')];this['scheduledat']=_0x977d7f['scheduledat'];this['countbusyretry']=_0x977d7f[_0x9819('0x13')]||0x0;this[_0x9819('0x14')]=_0x977d7f[_0x9819('0x14')]||0x0;this[_0x9819('0x15')]=_0x977d7f[_0x9819('0x15')]||0x0;this[_0x9819('0x16')]=(_0x977d7f[_0x9819('0x13')]||0x0)+(_0x977d7f[_0x9819('0x14')]||0x0)+(_0x977d7f['countnoanswerretry']||0x0)+(_0x977d7f[_0x9819('0x17')]||0x0)+(_0x977d7f['countdropretry']||0x0)+(_0x977d7f[_0x9819('0x18')]||0x0)+(_0x977d7f[_0x9819('0x19')]||0x0)+(_0x977d7f['countagentrejectretry']||0x0);this[_0x9819('0x17')]=_0x977d7f['countnosuchnumberretry']||0x0;this[_0x9819('0x1a')]=_0x977d7f[_0x9819('0x1a')]||0x0;this[_0x9819('0x18')]=_0x977d7f['countabandonedretry']||0x0;this[_0x9819('0x19')]=_0x977d7f[_0x9819('0x19')]||0x0;this['countagentrejectretry']=_0x977d7f[_0x9819('0x1b')]||0x0;this['callback']=_0x977d7f[_0x9819('0x1c')];this[_0x9819('0x1d')]=_0x977d7f[_0x9819('0x1d')];this[_0x9819('0x1e')]=_0x977d7f[_0x9819('0x1e')];this[_0x9819('0x1f')]=_0x977d7f[_0x9819('0x1f')];this['ContactId']=_0x977d7f[_0x9819('0x20')];this[_0x9819('0x21')]=_0x977d7f[_0x9819('0x21')];this[_0x9819('0x22')]=_[_0x9819('0x2')](_0x977d7f[_0x9819('0xa')])?_0x977d7f['UserId']:_0x977d7f[_0x9819('0xa')]['id'];this['VoiceQueueId']=_0x977d7f['VoiceQueueId'];this[_0x9819('0x23')]='';this[_0x9819('0x24')]='';}Action['prototype']['getCaller']=function(){return util['format'](_0x9819('0x25'),this['calleridname'],this[_0x9819('0x26')]);};module['exports']=Action;
\ No newline at end of file
+var _0x1850=['getCaller','\x22%s\x22\x20<%s>','number','exports','moment','isNil','string','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','SIP/%s','calleridname','phone','Contact','firstName','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype'];(function(_0x4f7d50,_0x363daa){var _0x327bfd=function(_0x8fd108){while(--_0x8fd108){_0x4f7d50['push'](_0x4f7d50['shift']());}};_0x327bfd(++_0x363daa);}(_0x1850,0x1bc));var _0x0185=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1850[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x0185('0x0'));function checkNameSurname(_0x229041,_0x549128,_0x4f0778){var _0x145f18='';if(!_[_0x0185('0x1')](_0x549128)&&'string'===typeof _0x549128){_0x145f18+=_0x549128;}if(!_[_0x0185('0x1')](_0x4f0778)&&_0x0185('0x2')===typeof _0x4f0778){_0x145f18+='\x20'+_0x4f0778;}if(_0x145f18!==''){return _0x145f18;}return _0x229041;}function Action(_0x11d5a3,_0x3cc92a,_0x5af75f,_0x18e749,_0x8a5b24){this[_0x0185('0x3')]=_0x5af75f||undefined;this[_0x0185('0x4')]=_0x11d5a3['id'];this[_0x0185('0x5')]=_0x3cc92a[_0x0185('0x6')];this['type']=_0x3cc92a[_0x0185('0x7')];this[_0x0185('0x8')]=_0x0185('0x5');this[_0x0185('0x9')]=![];this[_0x0185('0xa')]=_['isNil'](_0x11d5a3[_0x0185('0xb')])?undefined:_0x11d5a3[_0x0185('0xb')][_0x0185('0x6')];this[_0x0185('0xc')]=this['membername']?util['format'](_0x0185('0xd'),this[_0x0185('0xa')]):_0x18e749||undefined;this[_0x0185('0xe')]=checkNameSurname(_0x11d5a3['Contact'][_0x0185('0xf')],_0x11d5a3[_0x0185('0x10')][_0x0185('0x11')],_0x11d5a3[_0x0185('0x10')][_0x0185('0x12')]);this[_0x0185('0x13')]=_0x11d5a3[_0x0185('0x13')]||![];this['calleridnum']=_0x11d5a3[_0x0185('0x10')][_0x0185('0xf')];this[_0x0185('0x14')]=_0x11d5a3[_0x0185('0x14')];this[_0x0185('0x15')]=_0x11d5a3['countbusyretry']||0x0;this[_0x0185('0x16')]=_0x11d5a3[_0x0185('0x16')]||0x0;this[_0x0185('0x17')]=_0x11d5a3[_0x0185('0x17')]||0x0;this['countglobal']=(_0x11d5a3[_0x0185('0x15')]||0x0)+(_0x11d5a3[_0x0185('0x16')]||0x0)+(_0x11d5a3[_0x0185('0x17')]||0x0)+(_0x11d5a3[_0x0185('0x18')]||0x0)+(_0x11d5a3['countdropretry']||0x0)+(_0x11d5a3[_0x0185('0x19')]||0x0)+(_0x11d5a3[_0x0185('0x1a')]||0x0)+(_0x11d5a3[_0x0185('0x1b')]||0x0);this['countnosuchnumberretry']=_0x11d5a3[_0x0185('0x18')]||0x0;this[_0x0185('0x1c')]=_0x11d5a3[_0x0185('0x1c')]||0x0;this['countabandonedretry']=_0x11d5a3[_0x0185('0x19')]||0x0;this[_0x0185('0x1a')]=_0x11d5a3[_0x0185('0x1a')]||0x0;this[_0x0185('0x1b')]=_0x11d5a3[_0x0185('0x1b')]||0x0;this[_0x0185('0x1d')]=_0x11d5a3[_0x0185('0x1d')];this[_0x0185('0x1e')]=_0x11d5a3[_0x0185('0x1e')];this[_0x0185('0x1f')]=_0x11d5a3[_0x0185('0x1f')];this[_0x0185('0x20')]=_0x11d5a3[_0x0185('0x20')];this[_0x0185('0x21')]=_0x11d5a3[_0x0185('0x21')];this[_0x0185('0x22')]=_0x11d5a3['ListId'];this[_0x0185('0x23')]=_[_0x0185('0x1')](_0x11d5a3[_0x0185('0xb')])?_0x11d5a3[_0x0185('0x23')]:_0x11d5a3[_0x0185('0xb')]['id'];this[_0x0185('0x24')]=_0x11d5a3[_0x0185('0x24')];this[_0x0185('0x25')]='';this[_0x0185('0x26')]='';}Action[_0x0185('0x27')][_0x0185('0x28')]=function(){return util['format'](_0x0185('0x29'),this[_0x0185('0xe')],this[_0x0185('0x2a')]);};module[_0x0185('0x2b')]=Action;
\ No newline at end of file
index f2adafa..78ffaaa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a69=['dialCutDigit','substring','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','callerid','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','variablesAction','destconnectedlinenum','user:%s','calleridnum','actionid','lookAgent','logLookAgent','clone','response','rejected','callProgressDetectingAgent','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','[syncHangup][talking][transfer]','destlinkedid','destuniqueid','addVariable','variables','syncVarSet','filterKey','keys','variable','value','inspect','transfertargetlinkedid','transfer','util','lodash','bluebird','uuid','moment','ioredis','../../../config/environment','../../../config/logger','actionPreview','../ami','./rpcDb','./util/util','redis','localhost','socket.io-emitter','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','hangup','syncHangup','bind','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','type','name','available','loggedIn','sumDuration','talking','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','message','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','Interval','stringify','md5','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','IS_DISACTIVED','\x20is\x20disactive','loopCampaigns','syncCampaigns','hasOwnProperty','dialMethod','booked','outbound','clearZombieChannels','preview','setMessage','recallMe','prototype','clearZombieChannel','isNil','[clearZombieChannels][talking]','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','No\x20such\x20channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','[action]','size','getContactRecallMe','agentReadyId','then','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','disableContact','starttime','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','YYYY-MM-DD\x20HH:mm:ss','responsetime','[syncHangup][talking][increment]','uniqueid','custom:agentconnect','connect','buildAcw','custom:agentcomplete','complete','answered','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','sumBillable','\x20Queue','BUSY','countbusyretry','countglobal','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialBusyMaxRetry','NOANSWER','countnoanswerretry','NoAnswer','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','countcongestionretry','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','[callProgressDetectingCustomer][logCongestion]','countagentrejectretry','custom:agentreject','agentreject','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','ABANDONED','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','countabandonedretry','countmachineretry','cause-txt','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','dialstatus','[default]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','isUndefined','object','logAgent','createAgentHistory','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent]','Contact','phone','Contact\x20is\x20undefined','Queue','isEmpty','execCall','[Preview][execCall][success]','idContact','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','[Preview][validateContact][Empty\x20Campaign]','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','trim'];(function(_0x1992f1,_0x5c61f0){var _0x413dfe=function(_0x2136e5){while(--_0x2136e5){_0x1992f1['push'](_0x1992f1['shift']());}};_0x413dfe(++_0x5c61f0);}(_0x4a69,0x183));var _0x94a6=function(_0x3cf150,_0x178cb5){_0x3cf150=_0x3cf150-0x0;var _0x931f8b=_0x4a69[_0x3cf150];return _0x931f8b;};'use strict';var util=require(_0x94a6('0x0'));var _=require(_0x94a6('0x1'));var BPromise=require(_0x94a6('0x2'));var uuid=require(_0x94a6('0x3'));var moment=require(_0x94a6('0x4'));var md5=require('md5');var Redis=require(_0x94a6('0x5'));var config=require(_0x94a6('0x6'));var logger=require(_0x94a6('0x7'))('preview');var loggerAction=require(_0x94a6('0x7'))(_0x94a6('0x8'));var ami=require(_0x94a6('0x9'));var rpcDb=require(_0x94a6('0xa'));var Action=require('./action');var ut=require(_0x94a6('0xb'));config[_0x94a6('0xc')]=_['defaults'](config[_0x94a6('0xc')],{'host':_0x94a6('0xd'),'port':0x18eb});var io=require(_0x94a6('0xe'))(new Redis(config[_0x94a6('0xc')]));var Sequence=function(){};Sequence['prototype'][_0x94a6('0xf')]=function(_0x5ccb69){this['tail']=this['tail']?this[_0x94a6('0x10')][_0x94a6('0x11')](_0x5ccb69):_0x5ccb69();};function Preview(_0x57182d){this[_0x94a6('0x12')]=new Sequence();this[_0x94a6('0x13')]=_0x57182d[_0x94a6('0x14')];this['trunks']=_0x57182d[_0x94a6('0x15')];this[_0x94a6('0x16')]={};this[_0x94a6('0x17')]=_0x57182d[_0x94a6('0x17')];this[_0x94a6('0x18')]=0x0;ami['on'](_0x94a6('0x19'),this['syncOriginateResponse']['bind'](this));ami['on'](_0x94a6('0x1a'),this[_0x94a6('0x1b')][_0x94a6('0x1c')](this));ami['on']('hanguprequest',this[_0x94a6('0x1d')][_0x94a6('0x1c')](this));ami['on'](_0x94a6('0x1e'),this[_0x94a6('0x1f')][_0x94a6('0x1c')](this));ami['on'](_0x94a6('0x20'),this[_0x94a6('0x21')]['bind'](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on'](_0x94a6('0x22'),this[_0x94a6('0x23')]['bind'](this));ami['on'](_0x94a6('0x24'),this[_0x94a6('0x25')]['bind'](this));this['loopCampaigns'](this[_0x94a6('0x13')]);}function emit(_0x25099b,_0x45cff1,_0x164fd7){io['to'](_0x25099b)[_0x94a6('0x26')](_0x45cff1,_0x164fd7);}function emitCampaignPreview(_0x512e7f){if(_0x512e7f[_0x94a6('0x27')]==='outbound'){var _0x14c1a6={'id':_0x512e7f['id'],'name':_0x512e7f[_0x94a6('0x28')],'strategy':_0x512e7f['strategy'],'answered':_0x512e7f['answered'],'available':_0x512e7f[_0x94a6('0x29')],'loggedIn':_0x512e7f[_0x94a6('0x2a')],'pTalking':_0x512e7f['pTalking'],'sumBillable':_0x512e7f['sumBillable'],'sumDuration':_0x512e7f[_0x94a6('0x2b')],'sumHoldTime':_0x512e7f['sumHoldTime']||0x0,'talking':_0x512e7f[_0x94a6('0x2c')],'total':_0x512e7f[_0x94a6('0x2d')],'type':_0x512e7f[_0x94a6('0x27')],'unmanaged':_0x512e7f[_0x94a6('0x2e')],'abandoned':_0x512e7f[_0x94a6('0x2f')],'waiting':_0x512e7f[_0x94a6('0x30')],'loggedInDb':_0x512e7f[_0x94a6('0x31')],'dialActive':_0x512e7f[_0x94a6('0x32')],'dialMethod':_0x512e7f['dialMethod'],'dialOriginateCallerIdName':_0x512e7f['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x512e7f[_0x94a6('0x33')],'dialOriginateTimeout':_0x512e7f[_0x94a6('0x34')],'dialPrefix':_0x512e7f['dialPrefix'],'outboundAnswerAgiCallsDay':_0x512e7f['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x512e7f[_0x94a6('0x35')],'outboundBlacklistCallsDay':_0x512e7f[_0x94a6('0x36')],'outboundBusyCallsDay':_0x512e7f[_0x94a6('0x37')],'outboundCongestionCallsDay':_0x512e7f[_0x94a6('0x38')],'outboundDropCallsDayACS':_0x512e7f[_0x94a6('0x39')],'outboundDropCallsDayCallersExit':_0x512e7f[_0x94a6('0x3a')],'outboundDropCallsDayTimeout':_0x512e7f[_0x94a6('0x3b')],'outboundNoAnswerCallsDay':_0x512e7f['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x512e7f['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x512e7f[_0x94a6('0x3c')],'outboundReCallsDay':_0x512e7f[_0x94a6('0x3d')],'outboundRejectCallsDay':_0x512e7f[_0x94a6('0x3e')],'outboundUnknownCallsDay':_0x512e7f[_0x94a6('0x3f')],'outboundAbandonedCallsDay':_0x512e7f[_0x94a6('0x40')],'predictiveIntervalAnsweredCalls':_0x512e7f[_0x94a6('0x41')],'predictiveIntervalAvgHoldtime':_0x512e7f[_0x94a6('0x42')],'predictiveIntervalAvgTalktime':_0x512e7f[_0x94a6('0x43')],'predictiveIntervalDroppedCallsCallersExit':_0x512e7f['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x512e7f['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x512e7f[_0x94a6('0x44')],'predictiveIntervalErlangCallsDroppedCalls':_0x512e7f[_0x94a6('0x45')],'predictiveIntervalHitRate':_0x512e7f[_0x94a6('0x46')],'predictiveIntervalMultiplicativeFactor':_0x512e7f[_0x94a6('0x47')],'predictiveIntervalPauses':_0x512e7f[_0x94a6('0x48')],'predictiveIntervalAvailable':_0x512e7f[_0x94a6('0x49')],'predictiveIntervalTotalCalls':_0x512e7f['predictiveIntervalTotalCalls'],'message':_0x512e7f[_0x94a6('0x4a')],'originated':_0x512e7f['originated'],'erlangCalls':_0x512e7f[_0x94a6('0x4b')],'erlangCallToSecond':_0x512e7f[_0x94a6('0x4c')],'erlangAbandonmentRate':_0x512e7f['erlangAbandonmentRate'],'erlangBusyFactor':_0x512e7f[_0x94a6('0x4d')],'startPredictive':_0x512e7f[_0x94a6('0x4e')],'startProgressive':_0x512e7f[_0x94a6('0x4f')]};if(_0x512e7f['Trunk']){_0x14c1a6['Trunk']={'id':_0x512e7f[_0x94a6('0x50')]['id'],'name':_0x512e7f[_0x94a6('0x50')][_0x94a6('0x28')],'active':_0x512e7f['Trunk'][_0x94a6('0x51')],'callerid':_0x512e7f['Trunk']['callerid']};}if(_0x512e7f['Interval']){_0x14c1a6[_0x94a6('0x52')]={'id':_0x512e7f['Interval']['id'],'name':_0x512e7f['Interval'][_0x94a6('0x28')]};}var _0x4b3685=md5(JSON[_0x94a6('0x53')](_0x14c1a6));if(_0x512e7f['md5']!==_0x4b3685){_0x512e7f[_0x94a6('0x54')]=_0x4b3685;emit(util[_0x94a6('0x55')](_0x94a6('0x56'),_0x14c1a6[_0x94a6('0x28')]),_0x94a6('0x57'),_0x14c1a6);}}}function emitVoiceQueueChannelRemove(_0x2c6b83){logger[_0x94a6('0x58')](_0x94a6('0x59'),JSON[_0x94a6('0x53')](_0x2c6b83));emit(util[_0x94a6('0x55')](_0x94a6('0x56'),_0x2c6b83['name']),_0x94a6('0x5a'),_0x2c6b83);io[_0x94a6('0x26')](_0x94a6('0x5b'),_0x2c6b83);}function notSendMessagesQueue(_0x5f371c){if(_0x5f371c[_0x94a6('0x5c')]){if(_0x5f371c[_0x94a6('0x5d')]===0x0&&_0x5f371c[_0x94a6('0x5e')]===0x0){_0x5f371c[_0x94a6('0x5c')]=![];_0x5f371c[_0x94a6('0x29')]=0x0;_0x5f371c[_0x94a6('0x5f')]=0x0;_0x5f371c[_0x94a6('0x4a')]=_0x94a6('0x60');ut[_0x94a6('0x61')](_0x94a6('0x62'),_0x5f371c['name']+'\x20is\x20not\x20active');}else{_0x5f371c[_0x94a6('0x4a')]=_0x94a6('0x63');ut[_0x94a6('0x61')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x5f371c[_0x94a6('0x28')]+_0x94a6('0x64'));}emitCampaignPreview(_0x5f371c);}}Preview['prototype'][_0x94a6('0x65')]=function(){var _0x57830b=this;setInterval(function(){_0x57830b[_0x94a6('0x66')]();},0x7cf);};Preview['prototype']['syncCampaigns']=function(){var _0x49ad39=this[_0x94a6('0x13')];this['clockClearZombieChannels']+=0x1;for(var _0x232147 in _0x49ad39){if(_0x49ad39[_0x94a6('0x67')](_0x232147)&&(_0x49ad39[_0x232147][_0x94a6('0x68')]==='preview'||_0x49ad39[_0x232147]['dialMethod']===_0x94a6('0x69'))&&_0x49ad39[_0x232147][_0x94a6('0x27')]===_0x94a6('0x6a')){if(this[_0x94a6('0x18')]>0x7){this[_0x94a6('0x18')]=0x0;this[_0x94a6('0x6b')]();}}if(_0x49ad39[_0x94a6('0x67')](_0x232147)&&_0x49ad39[_0x232147][_0x94a6('0x68')]===_0x94a6('0x6c')&&_0x49ad39[_0x232147][_0x94a6('0x27')]===_0x94a6('0x6a')){if(_0x49ad39[_0x232147][_0x94a6('0x32')]){this[_0x94a6('0x6d')](_0x49ad39[_0x232147]);this[_0x94a6('0x6e')](_0x49ad39[_0x232147]);}else{notSendMessagesQueue(_0x49ad39[_0x232147]);}}}};Preview[_0x94a6('0x6f')][_0x94a6('0x70')]=function(_0x556094){var _0x507491=this;this['sequence'][_0x94a6('0xf')](function(){if(!_[_0x94a6('0x71')](_0x507491[_0x94a6('0x16')][_0x556094])){loggerAction[_0x94a6('0x58')](_0x94a6('0x72'),_0x556094,'Queue',_0x507491[_0x94a6('0x16')][_0x556094][_0x94a6('0x73')],_0x94a6('0x74'),JSON[_0x94a6('0x53')](_0x507491[_0x94a6('0x13')][_0x507491[_0x94a6('0x16')][_0x556094]['queue']][_0x94a6('0x5d')]),_0x94a6('0x75'),JSON[_0x94a6('0x53')](_0x507491[_0x94a6('0x13')][_0x507491['actions'][_0x556094][_0x94a6('0x73')]][_0x94a6('0x5e')]),JSON[_0x94a6('0x53')](_0x507491[_0x94a6('0x16')][_0x556094][_0x94a6('0x76')]),JSON['stringify'](_[_0x94a6('0x77')](_0x507491[_0x94a6('0x16')][_0x556094],[_0x94a6('0x78'),_0x94a6('0x79'),_0x94a6('0x7a'),_0x94a6('0x7b')])));return ami[_0x94a6('0x7c')]({'action':_0x94a6('0x7d'),'channel':_0x507491['actions'][_0x556094][_0x94a6('0x7e')]})[_0x94a6('0x7f')](function(_0x34e758){if(_0x34e758[_0x94a6('0x4a')]===_0x94a6('0x80')){setTimeout(function(){if(_0x507491[_0x94a6('0x16')][_0x556094]){ut['updateOriginated'](_0x507491[_0x94a6('0x13')][_0x507491[_0x94a6('0x16')][_0x556094][_0x94a6('0x73')]],_0x94a6('0x81'));if(_0x507491[_0x94a6('0x16')][_0x556094][_0x94a6('0x76')]===!![]){ut[_0x94a6('0x82')](_0x507491[_0x94a6('0x13')][_0x507491[_0x94a6('0x16')][_0x556094][_0x94a6('0x73')]],_0x94a6('0x81'));ut[_0x94a6('0x83')](_0x94a6('0x84')+_0x556094,_0x507491['actions'][_0x556094][_0x94a6('0x73')]);}ut[_0x94a6('0x83')](_0x94a6('0x85')+_0x556094,_0x507491[_0x94a6('0x16')][_0x556094]['queue']);delete _0x507491[_0x94a6('0x16')][_0x556094];}},0x2328);}});}});};Preview[_0x94a6('0x6f')][_0x94a6('0x6b')]=function(){var _0x1fa2c8=this;loggerAction[_0x94a6('0x58')](_0x94a6('0x86'),_[_0x94a6('0x87')](this['actions']));for(var _0x280a82 in this['actions']){if(_0x1fa2c8['actions']['hasOwnProperty'](_0x280a82)){_0x1fa2c8[_0x94a6('0x70')](_0x280a82);}}};Preview[_0x94a6('0x6f')][_0x94a6('0x6e')]=function(_0x305585){var _0x2d31fa=this;rpcDb[_0x94a6('0x88')](_0x305585['id'],ut[_0x94a6('0x89')](this[_0x94a6('0x17')]))[_0x94a6('0x8a')](function(_0x327536){if(!_[_0x94a6('0x71')](_0x327536)){for(var _0x4e8bb6=0x0;_0x4e8bb6<_0x327536['length'];_0x4e8bb6+=0x1){if(ut['getDiff'](_0x327536[_0x4e8bb6][_0x94a6('0x8b')])<_0x305585[_0x94a6('0x8c')]*0x3c){if(_0x327536[_0x4e8bb6][_0x94a6('0x8d')]&&!_0x327536[_0x4e8bb6][_0x94a6('0x8d')]['voicePause']){_0x2d31fa[_0x94a6('0x8e')](_0x327536[_0x4e8bb6]['id'])['then'](ut[_0x94a6('0x8f')](_0x94a6('0x90')))[_0x94a6('0x7f')](ut['logger2'](_0x94a6('0x90')));}else{rpcDb[_0x94a6('0x91')](_0x327536[_0x4e8bb6]['id']);}}else{var _0x2d6968=new Action(_0x327536[_0x4e8bb6],_0x305585);_0x2d6968[_0x94a6('0x92')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x305585[_0x94a6('0x3d')]+=0x1;ut[_0x94a6('0x93')](_0x2d6968,0x17,_0x94a6('0x94'));if(_0x305585[_0x94a6('0x95')]){rpcDb[_0x94a6('0x96')](ut[_0x94a6('0x97')](_0x327536[_0x4e8bb6]));rpcDb[_0x94a6('0x98')](_0x2d6968,_0x94a6('0x99'));}else{ut[_0x94a6('0x93')](_0x2d6968,0x16,_0x94a6('0x9a'));rpcDb[_0x94a6('0x98')](_0x2d6968,_0x94a6('0x9b'));rpcDb[_0x94a6('0x9c')](_0x2d6968,'[HistoryRecallClose]');}}}}})[_0x94a6('0x7f')](ut[_0x94a6('0x8f')](_0x94a6('0x9d')));};Preview[_0x94a6('0x6f')][_0x94a6('0x6d')]=function(_0x2db7cc){_0x2db7cc['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x2db7cc[_0x94a6('0x2a')])){_0x2db7cc[_0x94a6('0x4a')]=_0x94a6('0x9e');}else if(!ut[_0x94a6('0x9f')](_0x2db7cc['dialActive'])){_0x2db7cc['message']='NOT_ACTIVE';}else if(!this[_0x94a6('0xa0')](_0x2db7cc[_0x94a6('0x50')])){if(!this['isTrunkReachable'](_0x2db7cc['TrunkBackup'])){_0x2db7cc[_0x94a6('0x4a')]=_0x94a6('0xa1');}else{_0x2db7cc[_0x94a6('0x4a')]=_0x94a6('0xa2');}}else{_0x2db7cc[_0x94a6('0x4a')]='ACTIVE';}emitCampaignPreview(_0x2db7cc);};Preview[_0x94a6('0x6f')][_0x94a6('0xa3')]=function(_0x233964,_0x2a97b3,_0x117f75){var _0x4e25b1=this;var _0x4f3fa6=this[_0x94a6('0x16')][_0x2a97b3];var _0x458336=this[_0x94a6('0x13')][_0x4f3fa6['queue']];var _0x4e2f31;if(_0x458336){switch(_0x117f75){case'1':_0x458336[_0x94a6('0xa4')]+=0x1;_0x4f3fa6[_0x94a6('0xa5')]+=0x1;_0x4f3fa6['countglobal']=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x0,_0x94a6('0xa7'));ami[_0x94a6('0x26')](_0x94a6('0xa8'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xaa')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,_0x94a6('0xab'));if(ut[_0x94a6('0xa6')](_0x4f3fa6)>=_0x458336[_0x94a6('0xac')]){_0x4e2f31=ut[_0x94a6('0xad')](_0x4f3fa6,0xf,_0x94a6('0xae'));rpcDb[_0x94a6('0x9c')](_0x4e2f31,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x4f3fa6[_0x94a6('0xa5')]>=_0x458336[_0x94a6('0xaf')]){rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xb0'));}else{rpcDb[_0x94a6('0xb1')](ut[_0x94a6('0xb2')](_0x4f3fa6,'countnosuchnumberretry',_0x458336[_0x94a6('0xb3')]),_0x4f3fa6[_0x94a6('0xb4')],_0x4f3fa6[_0x94a6('0xb5')]);}}delete this[_0x94a6('0x16')][_0x233964[_0x94a6('0xb6')]];break;case _0x94a6('0xb7'):var _0x5ced21=moment()[_0x94a6('0x55')](_0x94a6('0xb8'));_0x4f3fa6[_0x94a6('0xb9')]=_0x5ced21;_0x4f3fa6['answertime']=_0x5ced21;_0x4f3fa6[_0x94a6('0x76')]=!![];_0x458336['pTalking']+=0x1;logger[_0x94a6('0x58')](_0x94a6('0xba'),_0x4f3fa6[_0x94a6('0xbb')],'\x20Queue',_0x458336[_0x94a6('0x28')],_0x94a6('0x75'),_0x458336['pTalking']);ami[_0x94a6('0x26')](_0x94a6('0xbc'),ut['buildObj'](_0x4f3fa6,_0x94a6('0xbd'),this[_0x94a6('0x13')][_0x4f3fa6['queue']]));if(_0x458336['acw']){ami[_0x94a6('0x26')]('custom:agentConnectPreview',ut[_0x94a6('0xbe')](_0x4f3fa6));}break;case'16':ami['emit'](_0x94a6('0xbf'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xc0'),this[_0x94a6('0x13')][_0x4f3fa6[_0x94a6('0x73')]]));emitVoiceQueueChannelRemove(ut[_0x94a6('0xa9')](_0x4f3fa6,'complete'));_0x458336[_0x94a6('0x35')]+=0x1;_0x458336[_0x94a6('0x2d')]+=0x1;_0x458336[_0x94a6('0xc1')]+=0x1;ut['decrementTalkink'](_0x458336,'[16]');_0x4f3fa6['countglobal']=ut[_0x94a6('0xa6')](_0x4f3fa6);ut['logCustomer'](_0x4f3fa6,0x4,'Answer');rpcDb['createCustomerHistory'](_0x4f3fa6,_0x94a6('0xc2'));rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xc3'));rpcDb[_0x94a6('0xc4')](_0x4f3fa6);_0x458336['sumDuration']+=_0x4f3fa6[_0x94a6('0xc5')];_0x458336[_0x94a6('0xc6')]+=_0x4f3fa6[_0x94a6('0xc5')];logger[_0x94a6('0x58')]('[syncHangup][talking][decrement]',_0x4f3fa6[_0x94a6('0xbb')],_0x94a6('0xc7'),_0x458336[_0x94a6('0x28')],'pTalking:\x20',_0x458336[_0x94a6('0x5e')]);delete this[_0x94a6('0x16')][_0x233964[_0x94a6('0xb6')]];break;case _0x94a6('0xc8'):_0x458336[_0x94a6('0x37')]+=0x1;_0x4f3fa6[_0x94a6('0xc9')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x5,_0x94a6('0xcb'));ami[_0x94a6('0x26')](_0x94a6('0xcc'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xcd')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,_0x94a6('0xce'));if(ut[_0x94a6('0xa6')](_0x4f3fa6)>=_0x458336[_0x94a6('0xac')]){_0x4e2f31=ut['cloneAction'](_0x4f3fa6,0xf,'Global');rpcDb[_0x94a6('0x9c')](_0x4e2f31,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x4f3fa6[_0x94a6('0xc9')]>=_0x458336[_0x94a6('0xcf')]){rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xce'));}else{rpcDb[_0x94a6('0xb1')](ut['scheduledAt'](_0x4f3fa6,'countbusyretry',_0x458336['dialBusyRetryFrequency']),_0x4f3fa6[_0x94a6('0xb4')],_0x4f3fa6[_0x94a6('0xb5')]);}}break;case _0x94a6('0xd0'):_0x458336['outboundNoAnswerCallsDay']+=0x1;_0x4f3fa6[_0x94a6('0xd1')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut['totalGlobal'](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x3,_0x94a6('0xd2'));ami[_0x94a6('0x26')](_0x94a6('0xd3'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xd4')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,_0x94a6('0xd5'));if(ut[_0x94a6('0xa6')](_0x4f3fa6)>=_0x458336[_0x94a6('0xac')]){_0x4e2f31=ut[_0x94a6('0xad')](_0x4f3fa6,0xf,'Global');rpcDb[_0x94a6('0x9c')](_0x4e2f31,_0x94a6('0xd6'));}else{if(_0x4f3fa6[_0x94a6('0xd1')]>=_0x458336[_0x94a6('0xd7')]){rpcDb['createCustomerFinal'](_0x4f3fa6,_0x94a6('0xd5'));}else{rpcDb['rescheduleContact'](ut[_0x94a6('0xb2')](_0x4f3fa6,_0x94a6('0xd1'),_0x458336[_0x94a6('0xd8')]),_0x4f3fa6['unlockAgent'],_0x4f3fa6[_0x94a6('0xb5')]);}}break;case'CONGESTION':_0x458336['outboundCongestionCallsDay']+=0x1;_0x4f3fa6[_0x94a6('0xd9')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x8,'Congestion');ami[_0x94a6('0x26')](_0x94a6('0xda'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xdb')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,'[callProgressDetectingCustomer][logCongestion]');if(ut['totalGlobal'](_0x4f3fa6)>=_0x458336['dialGlobalMaxRetry']){_0x4e2f31=ut['cloneAction'](_0x4f3fa6,0xf,'Global');rpcDb[_0x94a6('0x9c')](_0x4e2f31,_0x94a6('0xdc'));}else{if(_0x4f3fa6[_0x94a6('0xd9')]>=_0x458336['dialCongestionMaxRetry']){rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xdd'));}else{rpcDb['rescheduleContact'](ut[_0x94a6('0xb2')](_0x4f3fa6,_0x94a6('0xd9'),_0x458336['dialBusyRetryFrequency']),_0x4f3fa6[_0x94a6('0xb4')],_0x4f3fa6['activeContact']);}}break;case'CANCEL':_0x458336['outboundRejectCallsDay']+=0x1;_0x4f3fa6[_0x94a6('0xde')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x14,'AgentReject');ami['emit'](_0x94a6('0xdf'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xe0')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,'[syncHangupRequest][logAgentReject]');if(ut[_0x94a6('0xa6')](_0x4f3fa6)>=_0x458336['dialGlobalMaxRetry']){_0x4e2f31=ut[_0x94a6('0xad')](_0x4f3fa6,0x14,_0x94a6('0xe1'));rpcDb[_0x94a6('0x9c')](_0x4e2f31,_0x94a6('0xe2'));}else{if(_0x4f3fa6['countagentrejectretry']>=_0x458336[_0x94a6('0xe3')]){rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xe2'));}else{rpcDb[_0x94a6('0xb1')](ut[_0x94a6('0xb2')](_0x4f3fa6,_0x94a6('0xde'),_0x458336[_0x94a6('0xe4')]),_0x4f3fa6[_0x94a6('0xb4')],_0x4f3fa6[_0x94a6('0xb5')]);}}break;case _0x94a6('0xe5'):_0x458336['outboundAbandonedCallsDay']+=0x1;_0x4f3fa6['countabandonedretry']+=0x1;_0x4f3fa6['countglobal']=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0xb,_0x94a6('0xe6'));rpcDb[_0x94a6('0x98')](_0x4f3fa6,_0x94a6('0xe7'));if(ut[_0x94a6('0xa6')](_0x4f3fa6)>=_0x458336[_0x94a6('0xac')]){_0x4e2f31=ut[_0x94a6('0xad')](_0x4f3fa6,0xf,'Global');rpcDb[_0x94a6('0x9c')](_0x4e2f31,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x4f3fa6[_0x94a6('0xe8')]>=_0x458336[_0x94a6('0xe9')]){rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xe7'));}else{rpcDb[_0x94a6('0xb1')](ut[_0x94a6('0xb2')](_0x4f3fa6,_0x94a6('0xea'),_0x458336['dialAbandonedRetryFrequency']),_0x4f3fa6[_0x94a6('0xb4')],_0x4f3fa6[_0x94a6('0xb5')]);}}break;case'18':_0x458336[_0x94a6('0x3f')]+=0x1;_0x4f3fa6[_0x94a6('0xeb')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut['totalGlobal'](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x12,_0x233964[_0x94a6('0xec')]||_0x233964['dialstatus']);ami[_0x94a6('0x26')](_0x94a6('0xed'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xee')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,_0x94a6('0xef'));if(ut['totalGlobal'](_0x4f3fa6)>=_0x458336[_0x94a6('0xac')]){_0x4e2f31=ut[_0x94a6('0xad')](_0x4f3fa6,0xf,_0x94a6('0xae'));rpcDb[_0x94a6('0x9c')](_0x4e2f31,_0x94a6('0xef'));}else{rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xef'));}delete this[_0x94a6('0x16')][_0x233964[_0x94a6('0xb6')]];break;case'19':_0x458336[_0x94a6('0x3f')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0x13,_0x233964['cause-txt']||_0x233964[_0x94a6('0xf0')]);ami[_0x94a6('0x26')](_0x94a6('0xed'),ut[_0x94a6('0xa9')](_0x4f3fa6,_0x94a6('0xee')));rpcDb[_0x94a6('0x98')](_0x4f3fa6,'[callProgressDetectingCustomer][machine]');if(ut['totalGlobal'](_0x4f3fa6)>=_0x458336['dialGlobalMaxRetry']){_0x4e2f31=ut[_0x94a6('0xad')](_0x4f3fa6,0xf,'Global');rpcDb[_0x94a6('0x9c')](_0x4e2f31,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x4f3fa6,'[callProgressDetectingCustomer][machine]');}delete this[_0x94a6('0x16')][_0x233964[_0x94a6('0xb6')]];break;default:if(_0x4f3fa6[_0x94a6('0x76')]){ut[_0x94a6('0x82')](_0x458336,_0x94a6('0xf1'));ut[_0x94a6('0x83')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x458336[_0x94a6('0x28')],_0x233964);}_0x458336[_0x94a6('0x3f')]+=0x1;_0x4f3fa6[_0x94a6('0xca')]=ut[_0x94a6('0xa6')](_0x4f3fa6);ut[_0x94a6('0x93')](_0x4f3fa6,0xc,_0x233964['cause-txt']||_0x233964[_0x94a6('0xf0')]);rpcDb['createCustomerHistory'](_0x4f3fa6,_0x94a6('0xf2'));if(ut[_0x94a6('0xa6')](_0x4f3fa6)>=_0x458336[_0x94a6('0xac')]){_0x4e2f31=ut['cloneAction'](_0x4f3fa6,0xf,_0x94a6('0xae'));rpcDb[_0x94a6('0x9c')](_0x4e2f31,_0x94a6('0xf3'));}else{rpcDb[_0x94a6('0x9c')](_0x4f3fa6,_0x94a6('0xf3'));}delete this['actions'][_0x233964[_0x94a6('0xb6')]];}if(!(_0x4f3fa6['dialAnswer']&&_0x117f75==='16')){ut[_0x94a6('0xf4')](_0x458336,'[callProgressDetectingCustomer]');logger[_0x94a6('0x58')](_0x94a6('0xf5'),_0x4f3fa6[_0x94a6('0xbb')],_0x94a6('0xc7'),_0x458336[_0x94a6('0x28')],'originated:\x20',_0x458336[_0x94a6('0x5d')]);}if(_0x117f75!=='ANSWER'){delete this[_0x94a6('0x16')][_0x233964[_0x94a6('0xb6')]];delete this['actions'][_0x233964['destlinkedid']];}}};Preview[_0x94a6('0x6f')]['callProgressDetectingAgent']=function(_0x1ff4d2,_0x48870b,_0x274a4f){if(_[_0x94a6('0xf6')](_0x48870b)&&_0x94a6('0xf7')!==typeof _0x48870b){return;}if(_[_0x94a6('0xf6')](_0x274a4f)&&'object'!==typeof _0x274a4f){return;}switch(_0x274a4f['reason']){case'0':ut[_0x94a6('0xf8')](_0x1ff4d2,0x0,_0x94a6('0xa7'));rpcDb[_0x94a6('0xf9')](_0x1ff4d2,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x1ff4d2,0x3,'NoAnswer');rpcDb[_0x94a6('0xf9')](_0x1ff4d2,'[callProgressDetectingAgent][logNoAnswer]');break;case'5':ut[_0x94a6('0xf8')](_0x1ff4d2,0x5,_0x94a6('0xcb'));rpcDb[_0x94a6('0xf9')](_0x1ff4d2,'[callProgressDetectingAgent][logBusy]');break;case'8':ut['logAgent'](_0x1ff4d2,0x8,_0x94a6('0xfa'));rpcDb['createAgentHistory'](_0x1ff4d2,_0x94a6('0xfb'));break;case'22':ut['logAgent'](_0x1ff4d2,0x16,_0x94a6('0xfc'));rpcDb[_0x94a6('0xf9')](_0x1ff4d2,_0x94a6('0xfd'));break;default:ut[_0x94a6('0xf8')](_0x1ff4d2,0xc,_0x274a4f[_0x94a6('0xfe')]);rpcDb[_0x94a6('0xf9')](_0x1ff4d2,_0x94a6('0xfb'));}ut[_0x94a6('0xf4')](_0x48870b,_0x94a6('0xff'));logger['info']('[originated][decrement][callProgressDetectingAgent]',_0x1ff4d2[_0x94a6('0xbb')],'\x20Queue',_0x48870b['name'],_0x94a6('0x74'),_0x48870b['originated']);delete this[_0x94a6('0x16')][_0x1ff4d2[_0x94a6('0xbb')]];};Preview['prototype']['checkInBlack']=function(_0x41bd46,_0x1b5d7c,_0x5af229,_0x40f33f,_0x342fb){var _0x167970=this;return new BPromise(function(_0x3ee4fb,_0xc50fd3){if(_['isNil'](_0x1b5d7c)||_['isNil'](_0x1b5d7c[_0x94a6('0x100')])||_['isNil'](_0x1b5d7c[_0x94a6('0x100')][_0x94a6('0x101')])||_[_0x94a6('0x71')](_0x1b5d7c['VoiceQueueId'])){_0xc50fd3(ut['message'](_0x94a6('0x102'),_0x40f33f,_0x342fb));return;}var _0x462666=uuid['v4']();var _0x1567fa=_0x167970[_0x94a6('0x13')][_0x1b5d7c[_0x94a6('0x103')][_0x94a6('0x28')]];var _0x36460b=_0x5af229?_0x167970['agents'][_0x5af229]['id']:undefined;_0x167970[_0x94a6('0x16')][_0x462666]=new Action(_0x1b5d7c,_0x1567fa,_0x462666,_0x5af229,_0x36460b);var _0x324e01=_0x167970[_0x94a6('0x16')][_0x462666];_0x324e01[_0x94a6('0xb4')]=_0x40f33f;_0x324e01[_0x94a6('0xb5')]=_0x342fb;_0x324e01['lookAgent']=_0x5af229;if(_[_0x94a6('0x104')](_0x41bd46)){_0x167970[_0x94a6('0x105')](_0x324e01,_0x1567fa,_0x1b5d7c,_0x5af229)[_0x94a6('0x8a')](function(_0x45e3b6){logger['info'](_0x94a6('0x106'),'Queue:\x20'+_0x324e01[_0x94a6('0x73')]+'\x20IdHopper:\x20'+_0x324e01[_0x94a6('0x107')],JSON[_0x94a6('0x53')](_0x45e3b6));ami[_0x94a6('0x26')](_0x94a6('0x108'),ut[_0x94a6('0xa9')](_0x324e01,_0x94a6('0x109'),_0x167970[_0x94a6('0x13')][_0x324e01[_0x94a6('0x73')]]));_0x3ee4fb(ut[_0x94a6('0x4a')]('Calling'));})[_0x94a6('0x7f')](function(_0x2d6d4e){ut[_0x94a6('0x61')](_0x94a6('0x10a'),_0x2d6d4e);_0xc50fd3(ut[_0x94a6('0x4a')](_0x94a6('0x10b'),_0x40f33f,_0x342fb));});}else{_0x1567fa[_0x94a6('0x36')]+=0x1;ut[_0x94a6('0x10c')](_0x324e01);rpcDb['createHistory'](_0x324e01,_0x94a6('0x10d'));delete _0x167970['actions'][_0x462666];_0xc50fd3(ut[_0x94a6('0x4a')](_0x94a6('0x10e'),_0x40f33f,_0x342fb));}});};Preview[_0x94a6('0x6f')][_0x94a6('0xa0')]=function(_0x556ce3){return!_[_0x94a6('0x71')](_0x556ce3)&&!_[_0x94a6('0x71')](_0x556ce3[_0x94a6('0x28')])&&!_['isNil'](_0x556ce3[_0x94a6('0x51')])&&_0x556ce3[_0x94a6('0x51')]&&!_[_0x94a6('0x71')](this[_0x94a6('0x15')][util[_0x94a6('0x55')]('SIP/%s',_0x556ce3[_0x94a6('0x28')])])&&!_[_0x94a6('0x71')](this['trunks'][util[_0x94a6('0x55')](_0x94a6('0x10f'),_0x556ce3['name'])]['status'])&&(this[_0x94a6('0x15')][util[_0x94a6('0x55')]('SIP/%s',_0x556ce3[_0x94a6('0x28')])][_0x94a6('0x7d')]===_0x94a6('0x110')||this['trunks'][util[_0x94a6('0x55')]('SIP/%s',_0x556ce3['name'])]['status']===_0x94a6('0x111'));};Preview['prototype'][_0x94a6('0x8e')]=function(_0x584d70,_0x8be464){var _0x3132a5=this;return new BPromise(function(_0x2fd0d5,_0x410629){_0x3132a5[_0x94a6('0x112')](_0x584d70,_0x8be464)[_0x94a6('0x8a')](function(_0x345c08){_0x2fd0d5(_['pick'](_0x345c08,['message']));})['catch'](function(_0x3e80d8){if(_0x3e80d8[_0x94a6('0x113')]){rpcDb[_0x94a6('0x114')](_0x584d70);}if(_0x3e80d8[_0x94a6('0x51')]){rpcDb['disableContact'](_0x584d70);}_0x410629(_[_0x94a6('0x77')](_0x3e80d8,[_0x94a6('0x4a')]));});});};Preview['prototype']['execRun']=function(_0x384d3b,_0x4e8cef){var _0x510731=this;return new BPromise(function(_0x1135a4,_0x5c095e){var _0x314a92,_0x9d50a7;rpcDb['getContactPreview'](_0x384d3b)['then'](function(_0x2a1636){if(!_[_0x94a6('0x71')](_0x2a1636[0x0])){_0x9d50a7=_0x2a1636[0x0]['recallme']?![]:!![];_0x314a92=_0x2a1636[0x0][_0x94a6('0x115')]?!![]:![];_0x314a92=_0x4e8cef?!![]:_0x314a92;}var _0x3fac81=_0x510731[_0x94a6('0x116')](_0x2a1636);if(_0x3fac81[_0x94a6('0x117')]){rpcDb[_0x94a6('0x118')](_[_0x94a6('0x77')](_0x2a1636[0x0],[_0x94a6('0x7a'),_0x94a6('0x119')]))[_0x94a6('0x8a')](function(_0x27429d){_0x510731[_0x94a6('0x11a')](_0x27429d,_0x2a1636[0x0],_0x4e8cef,_0x9d50a7,_0x314a92)[_0x94a6('0x8a')](function(_0x489d5a){_0x1135a4(_0x489d5a);})[_0x94a6('0x7f')](function(_0x1b3204){_0x5c095e(_0x1b3204);});})['catch'](function(_0x5e6c5c){ut[_0x94a6('0x61')](_0x94a6('0x11b'),_0x5e6c5c);_0x5c095e(ut[_0x94a6('0x4a')]('Call\x20unsuccessful',_0x9d50a7,_0x314a92));});}else{_0x5c095e(ut[_0x94a6('0x4a')](_0x3fac81[_0x94a6('0x4a')],_0x9d50a7,_0x314a92));}})['catch'](function(_0xda5bab){ut[_0x94a6('0x61')](_0x94a6('0x11c'),_0xda5bab);_0x5c095e(ut[_0x94a6('0x4a')](_0x94a6('0x11d'),![],!![]));});});};Preview[_0x94a6('0x6f')][_0x94a6('0x116')]=function(_0x67b22c){if(_['isNil'](_0x67b22c)||_['isEmpty'](_0x67b22c)||!_['isNil'](_0x67b22c[0x0][_0x94a6('0x8d')])&&_[_0x94a6('0x71')](_0x67b22c[0x0][_0x94a6('0x8d')][_0x94a6('0x28')])){ut[_0x94a6('0x61')](_0x94a6('0x11e'),_0x67b22c);return{'isValid':![],'message':'Empty\x20Contact'};}var _0x2c1c7c=this[_0x94a6('0x13')][_0x67b22c[0x0][_0x94a6('0x103')][_0x94a6('0x28')]];_0x2c1c7c[_0x94a6('0x4a')]=_0x94a6('0xa2');if(_[_0x94a6('0x71')](_0x2c1c7c)){ut['logger'](_0x94a6('0x11f'),_0x2c1c7c);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0x94a6('0xa0')](_0x2c1c7c[_0x94a6('0x50')])){ut[_0x94a6('0x61')](_0x94a6('0x120'),_0x94a6('0x121')+_0x2c1c7c[_0x94a6('0x28')]+_0x94a6('0x122'));if(!this[_0x94a6('0xa0')](_0x2c1c7c[_0x94a6('0x123')])){ut[_0x94a6('0x61')]('[Preview][validateContact][Trunk\x20not\x20work]',_0x2c1c7c[_0x94a6('0x28')]+'\x20Trunk\x20Backup\x20is\x20not\x20active');return{'isValid':![],'message':_0x94a6('0x124')};}}if(!ut['isActive'](_0x2c1c7c['dialActive'])){ut[_0x94a6('0x61')](_0x94a6('0x125'),_0x2c1c7c[_0x94a6('0x28')]+_0x94a6('0x126'));return{'isValid':![],'message':_0x94a6('0x121')+_0x2c1c7c['name']+_0x94a6('0x126')};}return{'isValid':!![],'message':_0x94a6('0x127')};};Preview[_0x94a6('0x6f')][_0x94a6('0x105')]=function(_0x15c2ea,_0x34ea57,_0x58bea4,_0x3b84f0){var _0x4defe3=this;return new BPromise(function(_0x2cb0a5,_0x566f6b){var _0x7840cb=_0x15c2ea[_0x94a6('0xbb')];var _0x189cd1=_0x4defe3['isTrunkReachable'](_0x34ea57[_0x94a6('0x50')])?util['format'](_0x94a6('0x128'),_0x34ea57['Trunk'][_0x94a6('0x28')],_[_0x94a6('0x71')](_0x34ea57[_0x94a6('0x129')])?'':_0x34ea57[_0x94a6('0x129')][_0x94a6('0x12a')]()||'',_0x34ea57[_0x94a6('0x12b')]>0x0?_0x58bea4[_0x94a6('0x100')][_0x94a6('0x101')][_0x94a6('0x12c')](_0x34ea57[_0x94a6('0x12b')]):_0x58bea4[_0x94a6('0x100')][_0x94a6('0x101')]):util[_0x94a6('0x55')](_0x94a6('0x128'),_[_0x94a6('0x71')](_0x34ea57['TrunkBackup'])?_0x34ea57['Trunk'][_0x94a6('0x28')]:_0x34ea57[_0x94a6('0x123')][_0x94a6('0x28')],_[_0x94a6('0x71')](_0x34ea57[_0x94a6('0x129')])?'':_0x34ea57[_0x94a6('0x129')]['trim']()||'',_0x34ea57[_0x94a6('0x12b')]>0x0?_0x58bea4[_0x94a6('0x100')][_0x94a6('0x101')][_0x94a6('0x12c')](_0x34ea57[_0x94a6('0x12b')]):_0x58bea4['Contact']['phone']);var _0x4d39d4=_0x4defe3[_0x94a6('0xa0')](_0x34ea57[_0x94a6('0x50')])?ut[_0x94a6('0x12d')](_0x34ea57['Trunk']['callerid'],_0x34ea57[_0x94a6('0x12e')],_0x34ea57[_0x94a6('0x12f')]>0x0?ut[_0x94a6('0x130')](_0x34ea57[_0x94a6('0x33')],_0x34ea57['dialRandomLastDigitCallerIdNumber']):_0x34ea57[_0x94a6('0x33')]):ut[_0x94a6('0x12d')](_['isNil'](_0x34ea57['TrunkBackup'])?_0x34ea57[_0x94a6('0x50')][_0x94a6('0x131')]:_0x34ea57[_0x94a6('0x123')]['callerid'],_0x34ea57['dialOriginateCallerIdName'],_0x34ea57[_0x94a6('0x12f')]>0x0?ut[_0x94a6('0x130')](_0x34ea57['dialOriginateCallerIdNumber'],_0x34ea57[_0x94a6('0x12f')]):_0x34ea57['dialOriginateCallerIdNumber']);if(_0x4d39d4){_0x15c2ea[_0x94a6('0x132')]=ut[_0x94a6('0x133')](_0x4d39d4);_0x15c2ea[_0x94a6('0x134')]=ut[_0x94a6('0x135')](_0x4d39d4);}var _0x3c539f=ut[_0x94a6('0x136')](_0x34ea57,_0x58bea4,_0x189cd1,_0x4d39d4,_0x7840cb,_0x15c2ea);_['merge'](_0x15c2ea,ut[_0x94a6('0x137')](_0x3c539f));_0x15c2ea[_0x94a6('0x92')]=moment()[_0x94a6('0x55')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0x94a6('0x7c')](ut[_0x94a6('0x138')](_0x15c2ea,_0x34ea57,_0x3c539f,_0x15c2ea[_0x94a6('0xb5')],_0x3b84f0))[_0x94a6('0x8a')](function(_0xe38ff1){var _0x5131e5=_0x15c2ea['channelAgent'];if(!_['isNil'](_0x5131e5)){if(!_[_0x94a6('0x71')](_0x4defe3[_0x94a6('0x17')][_0x5131e5])){_0x4defe3['agents'][_0x5131e5][_0x94a6('0x139')]=_0x15c2ea['calleridnum'];emit(util[_0x94a6('0x55')](_0x94a6('0x13a'),_0x4defe3[_0x94a6('0x17')][_0x5131e5][_0x94a6('0x28')]),'user:agentconnect',{'destaccountcode':_0x4defe3[_0x94a6('0x17')][_0x5131e5]['accountcode'],'destconnectedlinenum':_0x15c2ea[_0x94a6('0x13b')]});}}_0x34ea57[_0x94a6('0x5d')]+=0x1;logger[_0x94a6('0x58')]('[originated][increment]',_0x7840cb,_0x94a6('0xc7'),_0x34ea57[_0x94a6('0x28')],_0x94a6('0x74'),_0x34ea57[_0x94a6('0x5d')]);_0x2cb0a5(_0xe38ff1);})[_0x94a6('0x7f')](function(_0x3555cb){ut[_0x94a6('0xf8')](_0x15c2ea,0xe,'OriginateError');rpcDb[_0x94a6('0xf9')](_0x15c2ea,'[originateFailure][logOriginateFailure]');_0x566f6b(_0x3555cb);});});};Preview[_0x94a6('0x6f')]['syncNewExten']=function(_0x550ab4){if(this['actions'][_0x550ab4[_0x94a6('0xb6')]]){this[_0x94a6('0x16')][_0x550ab4[_0x94a6('0xb6')]]['channel']=_0x550ab4['channel'];}};Preview[_0x94a6('0x6f')]['syncOriginateResponse']=function(_0xc6e216){var _0x1734f4=this;var _0x25223c=this[_0x94a6('0x16')][_0xc6e216[_0x94a6('0x13c')]];if(_0x25223c){if(_0x25223c[_0x94a6('0x13d')]&&this['agents'][_0x25223c[_0x94a6('0x13d')]]){ut[_0x94a6('0x13e')](_0x25223c,this[_0x94a6('0x17')][_0x25223c[_0x94a6('0x13d')]][_0x94a6('0x28')],this['agents'][_0x25223c[_0x94a6('0x13d')]]['id']);}var _0x40227f=_[_0x94a6('0x13f')](_0x25223c);_0x40227f[_0x94a6('0xb9')]=moment()['format'](_0x94a6('0xb8'));var _0x5e0cad=_0x1734f4[_0x94a6('0x13')][_0x25223c['queue']];if(ut['isFailure'](_0xc6e216[_0x94a6('0x140')])){if(_0x25223c[_0x94a6('0xb4')]){rpcDb[_0x94a6('0x114')](_0x25223c['idContact']);}if(_0x25223c[_0x94a6('0xb5')]){rpcDb[_0x94a6('0x91')](_0x25223c[_0x94a6('0x107')]);}ami[_0x94a6('0x26')]('custom:agentringnoanswer',ut[_0x94a6('0xa9')](_0x25223c,_0x94a6('0x141'),this[_0x94a6('0x13')][_0x25223c[_0x94a6('0x73')]]));this[_0x94a6('0x142')](_0x40227f,_0x5e0cad,_0xc6e216);}else{_0x25223c[_0x94a6('0x92')]=moment()[_0x94a6('0x55')]('YYYY-MM-DD\x20HH:mm:ss');ut['logAgent'](_0x40227f,0x4,_0x94a6('0x143'));rpcDb[_0x94a6('0xf9')](_0x40227f,_0x94a6('0x144'));}}};Preview[_0x94a6('0x6f')]['syncHangup']=function(_0x399e42){var _0x1743db=this;var _0x19175a=this[_0x94a6('0x16')][_0x399e42[_0x94a6('0xb6')]];var _0x37dc82;if(_0x19175a){_0x37dc82=this[_0x94a6('0x13')][_0x19175a['queue']];logger[_0x94a6('0x58')](_0x94a6('0x145'),_0x399e42[_0x94a6('0xb6')],_0x94a6('0xc7'),_0x37dc82[_0x94a6('0x28')],_0x94a6('0x75'),_0x37dc82[_0x94a6('0x5e')]);}if(this['actions'][_0x399e42[_0x94a6('0xb6')]]&&_0x399e42[_0x94a6('0xb6')]!==_0x399e42[_0x94a6('0xbb')]){if(_0x399e42[_0x94a6('0x146')]==='16'&&this[_0x94a6('0x16')][_0x399e42[_0x94a6('0xb6')]]['dialAnswer']){this[_0x94a6('0xa3')](_0x399e42,_0x399e42[_0x94a6('0xb6')],_0x399e42['cause']);}else if(this['actions'][_0x399e42[_0x94a6('0xb6')]][_0x94a6('0x76')]){logger[_0x94a6('0x58')](_0x94a6('0x147'),_0x399e42[_0x94a6('0xb6')],_0x399e42['cause'],_0x94a6('0xc7'),_0x37dc82['name'],_0x94a6('0x75'),_0x37dc82['pTalking']);this[_0x94a6('0xa3')](_0x399e42,_0x399e42[_0x94a6('0xb6')],_0x399e42[_0x94a6('0x146')]);}}else if(_0x19175a&&_[_0x94a6('0x71')](_0x19175a['statedesc'])&&_0x37dc82[_0x94a6('0x148')]&&_0x399e42[_0x94a6('0xb6')]===_0x399e42['uniqueid']&&_[_0x94a6('0x71')](_0x399e42[_0x94a6('0xfe')])&&_0x399e42[_0x94a6('0x146')]==='16'&&_0x399e42[_0x94a6('0x149')]==='6'&&_[_0x94a6('0xf6')](_0x19175a['transfer'])){if(_0x19175a['unlockAgent']){rpcDb[_0x94a6('0x114')](_0x19175a['idContact']);}if(_0x19175a[_0x94a6('0xb5')]){rpcDb[_0x94a6('0x91')](_0x19175a[_0x94a6('0x107')]);}_0x399e42[_0x94a6('0xfe')]='22';this[_0x94a6('0x142')](_0x19175a,_0x37dc82,_0x399e42);}else if(_0x19175a&&_0x19175a['transfer']){if(_0x399e42[_0x94a6('0x146')]==='16'&&this[_0x94a6('0x16')][_0x399e42['linkedid']]['dialAnswer']){logger[_0x94a6('0x58')](_0x94a6('0x14a'),_0x399e42[_0x94a6('0xb6')],_0x399e42[_0x94a6('0x146')],'\x20Queue',_0x37dc82['name'],'pTalking:\x20',_0x37dc82[_0x94a6('0x5e')]);this['callProgressDetectingCustomer'](_0x399e42,_0x399e42[_0x94a6('0xb6')],_0x399e42['cause']);}else if(this[_0x94a6('0x16')][_0x399e42[_0x94a6('0xb6')]]['dialAnswer']){logger[_0x94a6('0x58')](_0x94a6('0x147'),_0x399e42['linkedid'],_0x399e42['cause'],_0x94a6('0xc7'),_0x37dc82[_0x94a6('0x28')],_0x94a6('0x75'),_0x37dc82[_0x94a6('0x5e')]);this[_0x94a6('0xa3')](_0x399e42,_0x399e42[_0x94a6('0xb6')],_0x399e42[_0x94a6('0x146')]);}}};Preview['prototype'][_0x94a6('0x1f')]=function(_0xf0962d){if(this[_0x94a6('0x16')][_0xf0962d[_0x94a6('0x14b')]]&&_0xf0962d[_0x94a6('0x14b')]!==_0xf0962d[_0x94a6('0x14c')]){this[_0x94a6('0xa3')](_0xf0962d,_0xf0962d[_0x94a6('0x14b')],_0xf0962d[_0x94a6('0xf0')]);}};Preview[_0x94a6('0x6f')][_0x94a6('0x1d')]=function(_0x49a32b){if(this[_0x94a6('0x16')][_0x49a32b['linkedid']]&&_0x49a32b[_0x94a6('0xb6')]!==_0x49a32b[_0x94a6('0xbb')]&&!this[_0x94a6('0x16')][_0x49a32b[_0x94a6('0xb6')]][_0x94a6('0x76')]){if(_0x49a32b['cause']==='1'){this[_0x94a6('0xa3')](_0x49a32b,_0x49a32b[_0x94a6('0xb6')],_0x49a32b[_0x94a6('0x146')]);}}};Preview[_0x94a6('0x6f')][_0x94a6('0x14d')]=function(_0xd1e22d,_0x58f3c2,_0x4ca8e2){if(this['actions'][_0xd1e22d]){if(_[_0x94a6('0x71')](this['actions'][_0xd1e22d][_0x94a6('0x14e')])){this[_0x94a6('0x16')][_0xd1e22d]['variables']={};}this[_0x94a6('0x16')][_0xd1e22d]['variables'][_0x58f3c2]=_0x4ca8e2;}};Preview[_0x94a6('0x6f')][_0x94a6('0x14f')]=function(_0x3499d9){try{if(!_['isNil'](_0x3499d9)){if(ut[_0x94a6('0x150')](_[_0x94a6('0x151')](_0x3499d9[_0x94a6('0x152')])[0x0])){this[_0x94a6('0x14d')](_0x3499d9['uniqueid'],_[_0x94a6('0x151')](_0x3499d9['variable'])[0x0],_0x3499d9[_0x94a6('0x153')]);}}}catch(_0x159443){logger['error']('[syncVarSet][Preview]',util[_0x94a6('0x154')](_0x159443,{'showHidden':![],'depth':null}));}};Preview[_0x94a6('0x6f')][_0x94a6('0x23')]=function(_0x43debc){if(_0x43debc){if(this[_0x94a6('0x16')][_0x43debc[_0x94a6('0x155')]]){this[_0x94a6('0x16')][_0x43debc['transfertargetlinkedid']]['transfer']=!![];}}};Preview[_0x94a6('0x6f')][_0x94a6('0x25')]=function(_0xeaaf3c){if(_0xeaaf3c){if(this[_0x94a6('0x16')][_0xeaaf3c['transfererlinkedid']]){this[_0x94a6('0x16')][_0xeaaf3c['transfererlinkedid']][_0x94a6('0x156')]=!![];}}};module['exports']=Preview;
\ No newline at end of file
+var _0x911d=['isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','dialGlobalMaxRetry','cloneAction','Global','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','dialNoSuchNumberRetryFrequency','unlockAgent','activeContact','linkedid','ANSWER','answertime','dialAnswer','uniqueid','custom:agentconnect','acw','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','sumDuration','talktime','\x20Queue','BUSY','countbusyretry','Busy','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','NOANSWER','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','countnoanswerretry','dialNoAnswerRetryFrequency','CONGESTION','countcongestionretry','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','[callProgressDetectingCustomer][logCongestion]','CANCEL','AgentReject','custom:agentreject','agentreject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','countagentrejectretry','ABANDONED','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','reason','[originated][decrement][callProgressDetectingAgent]','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','idContact','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','Contact\x20in\x20black\x20List','SIP/%s','reachable','unmonitored','execRun','unlock','getContactPreview','recallme','validateContact','isValid','checkIsBlackList','Contact.phone','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','variablesAction','channelAgent','destconnectedlinenum','user:%s','accountcode','calleridnum','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','statedesc','channelstate','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','syncHangupRequest','addVariable','variables','filterKey','variable','keys','value','error','[syncVarSet][Preview]','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','uuid','ioredis','../../../config/logger','preview','actionPreview','../ami','./rpcDb','./action','./util/util','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','syncHangup','hanguprequest','syncDialEnd','newexten','varset','syncAttendedTransfer','syncBlindTransfer','loopCampaigns','emit','type','outbound','name','strategy','answered','available','loggedIn','pTalking','sumBillable','sumHoldTime','talking','total','abandoned','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgTalktime','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','md5','format','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','paused','logger','\x20is\x20not\x20active','IS_DISACTIVED','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20disactive','syncCampaigns','hasOwnProperty','dialMethod','booked','clearZombieChannels','setMessage','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','channel','catch','[clearZombieChannel]','decrementTalkink','loggerError','[action]','size','recallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','voicePause','run','logger2','[RecallMe]','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x911d,0xba));var _0xd911=function(_0x499caf,_0x34744f){_0x499caf=_0x499caf-0x0;var _0x47b9bb=_0x911d[_0x499caf];return _0x47b9bb;};'use strict';var util=require(_0xd911('0x0'));var _=require(_0xd911('0x1'));var BPromise=require(_0xd911('0x2'));var uuid=require(_0xd911('0x3'));var moment=require('moment');var md5=require('md5');var Redis=require(_0xd911('0x4'));var config=require('../../../config/environment');var logger=require(_0xd911('0x5'))(_0xd911('0x6'));var loggerAction=require(_0xd911('0x5'))(_0xd911('0x7'));var ami=require(_0xd911('0x8'));var rpcDb=require(_0xd911('0x9'));var Action=require(_0xd911('0xa'));var ut=require(_0xd911('0xb'));config[_0xd911('0xc')]=_[_0xd911('0xd')](config[_0xd911('0xc')],{'host':_0xd911('0xe'),'port':0x18eb});var io=require(_0xd911('0xf'))(new Redis(config[_0xd911('0xc')]));var Sequence=function(){};Sequence[_0xd911('0x10')][_0xd911('0x11')]=function(_0xb31753){this[_0xd911('0x12')]=this['tail']?this[_0xd911('0x12')]['finally'](_0xb31753):_0xb31753();};function Preview(_0x13e1f3){this['sequence']=new Sequence();this[_0xd911('0x13')]=_0x13e1f3[_0xd911('0x14')];this[_0xd911('0x15')]=_0x13e1f3[_0xd911('0x15')];this[_0xd911('0x16')]={};this['agents']=_0x13e1f3[_0xd911('0x17')];this[_0xd911('0x18')]=0x0;ami['on'](_0xd911('0x19'),this[_0xd911('0x1a')][_0xd911('0x1b')](this));ami['on']('hangup',this[_0xd911('0x1c')][_0xd911('0x1b')](this));ami['on'](_0xd911('0x1d'),this['syncHangupRequest'][_0xd911('0x1b')](this));ami['on']('dialend',this[_0xd911('0x1e')]['bind'](this));ami['on'](_0xd911('0x1f'),this['syncNewExten'][_0xd911('0x1b')](this));ami['on'](_0xd911('0x20'),this['syncVarSet'][_0xd911('0x1b')](this));ami['on']('attendedtransfer',this[_0xd911('0x21')][_0xd911('0x1b')](this));ami['on']('blindtransfer',this[_0xd911('0x22')][_0xd911('0x1b')](this));this[_0xd911('0x23')](this[_0xd911('0x13')]);}function emit(_0x27b654,_0x1f65c8,_0x2c36df){io['to'](_0x27b654)[_0xd911('0x24')](_0x1f65c8,_0x2c36df);}function emitCampaignPreview(_0x3f6300){if(_0x3f6300[_0xd911('0x25')]===_0xd911('0x26')){var _0x4bb70b={'id':_0x3f6300['id'],'name':_0x3f6300[_0xd911('0x27')],'strategy':_0x3f6300[_0xd911('0x28')],'answered':_0x3f6300[_0xd911('0x29')],'available':_0x3f6300[_0xd911('0x2a')],'loggedIn':_0x3f6300[_0xd911('0x2b')],'pTalking':_0x3f6300[_0xd911('0x2c')],'sumBillable':_0x3f6300[_0xd911('0x2d')],'sumDuration':_0x3f6300['sumDuration'],'sumHoldTime':_0x3f6300[_0xd911('0x2e')]||0x0,'talking':_0x3f6300[_0xd911('0x2f')],'total':_0x3f6300[_0xd911('0x30')],'type':_0x3f6300[_0xd911('0x25')],'unmanaged':_0x3f6300['unmanaged'],'abandoned':_0x3f6300[_0xd911('0x31')],'waiting':_0x3f6300['waiting'],'loggedInDb':_0x3f6300[_0xd911('0x32')],'dialActive':_0x3f6300[_0xd911('0x33')],'dialMethod':_0x3f6300['dialMethod'],'dialOriginateCallerIdName':_0x3f6300[_0xd911('0x34')],'dialOriginateCallerIdNumber':_0x3f6300[_0xd911('0x35')],'dialOriginateTimeout':_0x3f6300['dialOriginateTimeout'],'dialPrefix':_0x3f6300[_0xd911('0x36')],'outboundAnswerAgiCallsDay':_0x3f6300[_0xd911('0x37')],'outboundAnswerCallsDay':_0x3f6300[_0xd911('0x38')],'outboundBlacklistCallsDay':_0x3f6300[_0xd911('0x39')],'outboundBusyCallsDay':_0x3f6300[_0xd911('0x3a')],'outboundCongestionCallsDay':_0x3f6300[_0xd911('0x3b')],'outboundDropCallsDayACS':_0x3f6300['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x3f6300[_0xd911('0x3c')],'outboundDropCallsDayTimeout':_0x3f6300[_0xd911('0x3d')],'outboundNoAnswerCallsDay':_0x3f6300[_0xd911('0x3e')],'outboundNoSuchCallsDay':_0x3f6300[_0xd911('0x3f')],'outboundOriginateFailureCallsDay':_0x3f6300[_0xd911('0x40')],'outboundReCallsDay':_0x3f6300[_0xd911('0x41')],'outboundRejectCallsDay':_0x3f6300[_0xd911('0x42')],'outboundUnknownCallsDay':_0x3f6300[_0xd911('0x43')],'outboundAbandonedCallsDay':_0x3f6300[_0xd911('0x44')],'predictiveIntervalAnsweredCalls':_0x3f6300[_0xd911('0x45')],'predictiveIntervalAvgHoldtime':_0x3f6300['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x3f6300[_0xd911('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x3f6300['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x3f6300['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x3f6300[_0xd911('0x47')],'predictiveIntervalErlangCallsDroppedCalls':_0x3f6300[_0xd911('0x48')],'predictiveIntervalHitRate':_0x3f6300[_0xd911('0x49')],'predictiveIntervalMultiplicativeFactor':_0x3f6300['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3f6300['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x3f6300[_0xd911('0x4a')],'predictiveIntervalTotalCalls':_0x3f6300[_0xd911('0x4b')],'message':_0x3f6300[_0xd911('0x4c')],'originated':_0x3f6300[_0xd911('0x4d')],'erlangCalls':_0x3f6300[_0xd911('0x4e')],'erlangCallToSecond':_0x3f6300[_0xd911('0x4f')],'erlangAbandonmentRate':_0x3f6300['erlangAbandonmentRate'],'erlangBusyFactor':_0x3f6300[_0xd911('0x50')],'startPredictive':_0x3f6300[_0xd911('0x51')],'startProgressive':_0x3f6300[_0xd911('0x52')]};if(_0x3f6300[_0xd911('0x53')]){_0x4bb70b[_0xd911('0x53')]={'id':_0x3f6300[_0xd911('0x53')]['id'],'name':_0x3f6300[_0xd911('0x53')][_0xd911('0x27')],'active':_0x3f6300[_0xd911('0x53')][_0xd911('0x54')],'callerid':_0x3f6300[_0xd911('0x53')][_0xd911('0x55')]};}if(_0x3f6300[_0xd911('0x56')]){_0x4bb70b['Interval']={'id':_0x3f6300[_0xd911('0x56')]['id'],'name':_0x3f6300['Interval'][_0xd911('0x27')]};}var _0x28f05d=md5(JSON[_0xd911('0x57')](_0x4bb70b));if(_0x3f6300['md5']!==_0x28f05d){_0x3f6300[_0xd911('0x58')]=_0x28f05d;emit(util[_0xd911('0x59')]('voice:queue:%s',_0x4bb70b[_0xd911('0x27')]),_0xd911('0x5a'),_0x4bb70b);}}}function emitVoiceQueueChannelRemove(_0x53d117){logger[_0xd911('0x5b')](_0xd911('0x5c'),JSON[_0xd911('0x57')](_0x53d117));emit(util['format'](_0xd911('0x5d'),_0x53d117[_0xd911('0x27')]),_0xd911('0x5e'),_0x53d117);io[_0xd911('0x24')](_0xd911('0x5f'),_0x53d117);}function notSendMessagesQueue(_0x5815ac){if(_0x5815ac[_0xd911('0x60')]){if(_0x5815ac['originated']===0x0&&_0x5815ac[_0xd911('0x2c')]===0x0){_0x5815ac['sendMessageOneNotActive']=![];_0x5815ac[_0xd911('0x2a')]=0x0;_0x5815ac[_0xd911('0x61')]=0x0;_0x5815ac['message']='NOT_ACTIVE';ut[_0xd911('0x62')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x5815ac[_0xd911('0x27')]+_0xd911('0x63'));}else{_0x5815ac[_0xd911('0x4c')]=_0xd911('0x64');ut[_0xd911('0x62')](_0xd911('0x65'),_0x5815ac[_0xd911('0x27')]+_0xd911('0x66'));}emitCampaignPreview(_0x5815ac);}}Preview[_0xd911('0x10')]['loopCampaigns']=function(){var _0x5b261e=this;setInterval(function(){_0x5b261e[_0xd911('0x67')]();},0x7cf);};Preview[_0xd911('0x10')][_0xd911('0x67')]=function(){var _0x1c17b8=this[_0xd911('0x13')];this[_0xd911('0x18')]+=0x1;for(var _0x556dd7 in _0x1c17b8){if(_0x1c17b8[_0xd911('0x68')](_0x556dd7)&&(_0x1c17b8[_0x556dd7][_0xd911('0x69')]===_0xd911('0x6')||_0x1c17b8[_0x556dd7][_0xd911('0x69')]===_0xd911('0x6a'))&&_0x1c17b8[_0x556dd7][_0xd911('0x25')]===_0xd911('0x26')){if(this[_0xd911('0x18')]>0x7){this[_0xd911('0x18')]=0x0;this[_0xd911('0x6b')]();}}if(_0x1c17b8[_0xd911('0x68')](_0x556dd7)&&_0x1c17b8[_0x556dd7]['dialMethod']===_0xd911('0x6')&&_0x1c17b8[_0x556dd7][_0xd911('0x25')]===_0xd911('0x26')){if(_0x1c17b8[_0x556dd7][_0xd911('0x33')]){this[_0xd911('0x6c')](_0x1c17b8[_0x556dd7]);this['recallMe'](_0x1c17b8[_0x556dd7]);}else{notSendMessagesQueue(_0x1c17b8[_0x556dd7]);}}}};Preview[_0xd911('0x10')][_0xd911('0x6d')]=function(_0x271176){var _0x11752f=this;this['sequence'][_0xd911('0x11')](function(){if(!_[_0xd911('0x6e')](_0x11752f[_0xd911('0x16')][_0x271176])){loggerAction['info'](_0xd911('0x6f'),_0x271176,_0xd911('0x70'),_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')],_0xd911('0x72'),JSON['stringify'](_0x11752f[_0xd911('0x13')][_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')]][_0xd911('0x4d')]),_0xd911('0x73'),JSON[_0xd911('0x57')](_0x11752f['campaignsPreview'][_0x11752f['actions'][_0x271176][_0xd911('0x71')]]['pTalking']),JSON[_0xd911('0x57')](_0x11752f[_0xd911('0x16')][_0x271176]['dialAnswer']),JSON['stringify'](_[_0xd911('0x74')](_0x11752f[_0xd911('0x16')][_0x271176],[_0xd911('0x75'),_0xd911('0x76'),_0xd911('0x77'),_0xd911('0x78')])));return ami[_0xd911('0x79')]({'action':_0xd911('0x7a'),'channel':_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x7b')]})[_0xd911('0x7c')](function(_0x57b256){if(_0x57b256[_0xd911('0x4c')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x11752f[_0xd911('0x16')][_0x271176]){ut['updateOriginated'](_0x11752f[_0xd911('0x13')][_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')]],_0xd911('0x7d'));if(_0x11752f['actions'][_0x271176]['dialAnswer']===!![]){ut[_0xd911('0x7e')](_0x11752f[_0xd911('0x13')][_0x11752f[_0xd911('0x16')][_0x271176]['queue']],_0xd911('0x7d'));ut['loggerError']('[Dialer][checkChannel][pTalking][Preview]'+_0x271176,_0x11752f[_0xd911('0x16')][_0x271176][_0xd911('0x71')]);}ut[_0xd911('0x7f')]('[Dialer][checkChannel][Preview]'+_0x271176,_0x11752f['actions'][_0x271176][_0xd911('0x71')]);delete _0x11752f['actions'][_0x271176];}},0x2328);}});}});};Preview[_0xd911('0x10')][_0xd911('0x6b')]=function(){var _0x148d2e=this;loggerAction[_0xd911('0x5b')](_0xd911('0x80'),_[_0xd911('0x81')](this['actions']));for(var _0x29be8f in this[_0xd911('0x16')]){if(_0x148d2e[_0xd911('0x16')][_0xd911('0x68')](_0x29be8f)){_0x148d2e[_0xd911('0x6d')](_0x29be8f);}}};Preview[_0xd911('0x10')][_0xd911('0x82')]=function(_0x1a48be){var _0x173ffb=this;rpcDb['getContactRecallMe'](_0x1a48be['id'],ut[_0xd911('0x83')](this[_0xd911('0x17')]))[_0xd911('0x84')](function(_0x10eb09){if(!_['isNil'](_0x10eb09)){for(var _0xab16ac=0x0;_0xab16ac<_0x10eb09[_0xd911('0x85')];_0xab16ac+=0x1){if(ut[_0xd911('0x86')](_0x10eb09[_0xab16ac][_0xd911('0x87')])<_0x1a48be[_0xd911('0x88')]*0x3c){if(_0x10eb09[_0xab16ac]['Agent']&&!_0x10eb09[_0xab16ac][_0xd911('0x89')][_0xd911('0x8a')]){_0x173ffb[_0xd911('0x8b')](_0x10eb09[_0xab16ac]['id'])[_0xd911('0x84')](ut[_0xd911('0x8c')](_0xd911('0x8d')))['catch'](ut[_0xd911('0x8c')](_0xd911('0x8d')));}else{rpcDb[_0xd911('0x8e')](_0x10eb09[_0xab16ac]['id']);}}else{var _0x390972=new Action(_0x10eb09[_0xab16ac],_0x1a48be);_0x390972[_0xd911('0x8f')]=moment()['format'](_0xd911('0x90'));_0x1a48be[_0xd911('0x41')]+=0x1;ut[_0xd911('0x91')](_0x390972,0x17,_0xd911('0x92'));if(_0x1a48be[_0xd911('0x93')]){rpcDb[_0xd911('0x94')](ut[_0xd911('0x95')](_0x10eb09[_0xab16ac]));rpcDb[_0xd911('0x96')](_0x390972,'[HistoryDialRecallInQueue][historyCatch]');}else{ut[_0xd911('0x91')](_0x390972,0x16,_0xd911('0x97'));rpcDb[_0xd911('0x96')](_0x390972,_0xd911('0x98'));rpcDb[_0xd911('0x99')](_0x390972,_0xd911('0x98'));}}}}})[_0xd911('0x7c')](ut[_0xd911('0x8c')](_0xd911('0x9a')));};Preview[_0xd911('0x10')][_0xd911('0x6c')]=function(_0x46f56b){_0x46f56b[_0xd911('0x60')]=!![];if(ut[_0xd911('0x9b')](_0x46f56b[_0xd911('0x2b')])){_0x46f56b[_0xd911('0x4c')]=_0xd911('0x9c');}else if(!ut[_0xd911('0x9d')](_0x46f56b['dialActive'])){_0x46f56b[_0xd911('0x4c')]='NOT_ACTIVE';}else if(!this[_0xd911('0x9e')](_0x46f56b[_0xd911('0x53')])){if(!this[_0xd911('0x9e')](_0x46f56b[_0xd911('0x9f')])){_0x46f56b[_0xd911('0x4c')]=_0xd911('0xa0');}else{_0x46f56b[_0xd911('0x4c')]=_0xd911('0xa1');}}else{_0x46f56b['message']=_0xd911('0xa1');}emitCampaignPreview(_0x46f56b);};Preview[_0xd911('0x10')][_0xd911('0xa2')]=function(_0x38892c,_0x18b577,_0x5837be){var _0x1cec6e=this;var _0x43fd9d=this['actions'][_0x18b577];var _0x441f1d=this[_0xd911('0x13')][_0x43fd9d['queue']];var _0x392188;if(_0x441f1d){switch(_0x5837be){case'1':_0x441f1d[_0xd911('0x3f')]+=0x1;_0x43fd9d[_0xd911('0xa3')]+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut['logCustomer'](_0x43fd9d,0x0,_0xd911('0xa6'));ami[_0xd911('0x24')](_0xd911('0xa7'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xa9')));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xaa'));if(ut['totalGlobal'](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x43fd9d['countnosuchnumberretry']>=_0x441f1d[_0xd911('0xae')]){rpcDb[_0xd911('0x99')](_0x43fd9d,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,_0xd911('0xa3'),_0x441f1d[_0xd911('0xb1')]),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}delete this['actions'][_0x38892c[_0xd911('0xb4')]];break;case _0xd911('0xb5'):var _0x391082=moment()[_0xd911('0x59')](_0xd911('0x90'));_0x43fd9d['responsetime']=_0x391082;_0x43fd9d[_0xd911('0xb6')]=_0x391082;_0x43fd9d[_0xd911('0xb7')]=!![];_0x441f1d[_0xd911('0x2c')]+=0x1;logger[_0xd911('0x5b')]('[syncHangup][talking][increment]',_0x43fd9d[_0xd911('0xb8')],'\x20Queue',_0x441f1d['name'],_0xd911('0x73'),_0x441f1d[_0xd911('0x2c')]);ami[_0xd911('0x24')](_0xd911('0xb9'),ut[_0xd911('0xa8')](_0x43fd9d,'connect',this[_0xd911('0x13')][_0x43fd9d['queue']]));if(_0x441f1d[_0xd911('0xba')]){ami['emit'](_0xd911('0xbb'),ut[_0xd911('0xbc')](_0x43fd9d));}break;case'16':ami[_0xd911('0x24')](_0xd911('0xbd'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xbe'),this[_0xd911('0x13')][_0x43fd9d[_0xd911('0x71')]]));emitVoiceQueueChannelRemove(ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xbe')));_0x441f1d[_0xd911('0x38')]+=0x1;_0x441f1d['total']+=0x1;_0x441f1d[_0xd911('0x29')]+=0x1;ut[_0xd911('0x7e')](_0x441f1d,_0xd911('0xbf'));_0x43fd9d['countglobal']=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x4,_0xd911('0xc0'));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xc1'));rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xc2'));rpcDb['crateCustomerReportQueue'](_0x43fd9d);_0x441f1d[_0xd911('0xc3')]+=_0x43fd9d[_0xd911('0xc4')];_0x441f1d[_0xd911('0x2d')]+=_0x43fd9d['talktime'];logger['info']('[syncHangup][talking][decrement]',_0x43fd9d[_0xd911('0xb8')],_0xd911('0xc5'),_0x441f1d[_0xd911('0x27')],'pTalking:\x20',_0x441f1d[_0xd911('0x2c')]);delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xb4')]];break;case _0xd911('0xc6'):_0x441f1d[_0xd911('0x3a')]+=0x1;_0x43fd9d[_0xd911('0xc7')]+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x5,_0xd911('0xc8'));ami[_0xd911('0x24')](_0xd911('0xc9'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xca')));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xcb'));if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xcc'));}else{if(_0x43fd9d[_0xd911('0xc7')]>=_0x441f1d[_0xd911('0xcd')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xcb'));}else{rpcDb['rescheduleContact'](ut[_0xd911('0xb0')](_0x43fd9d,_0xd911('0xc7'),_0x441f1d['dialBusyRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xce'):_0x441f1d[_0xd911('0x3e')]+=0x1;_0x43fd9d['countnoanswerretry']+=0x1;_0x43fd9d['countglobal']=ut[_0xd911('0xa5')](_0x43fd9d);ut['logCustomer'](_0x43fd9d,0x3,'NoAnswer');ami[_0xd911('0x24')](_0xd911('0xcf'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xd0')));rpcDb[_0xd911('0x96')](_0x43fd9d,'[callProgressDetectingCustomer][logNoAnswer]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb['createCustomerFinal'](_0x392188,_0xd911('0xd1'));}else{if(_0x43fd9d['countnoanswerretry']>=_0x441f1d[_0xd911('0xd2')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xd3'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x43fd9d,_0xd911('0xd4'),_0x441f1d[_0xd911('0xd5')]),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xd6'):_0x441f1d[_0xd911('0x3b')]+=0x1;_0x43fd9d[_0xd911('0xd7')]+=0x1;_0x43fd9d['countglobal']=ut[_0xd911('0xa5')](_0x43fd9d);ut['logCustomer'](_0x43fd9d,0x8,'Congestion');ami[_0xd911('0x24')]('custom:agentcongestion',ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xd8')));rpcDb[_0xd911('0x96')](_0x43fd9d,'[callProgressDetectingCustomer][logCongestion]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d['dialGlobalMaxRetry']){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xd9'));}else{if(_0x43fd9d[_0xd911('0xd7')]>=_0x441f1d['dialCongestionMaxRetry']){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xda'));}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,'countcongestionretry',_0x441f1d['dialBusyRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xdb'):_0x441f1d[_0xd911('0x42')]+=0x1;_0x43fd9d['countagentrejectretry']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut['totalGlobal'](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x14,_0xd911('0xdc'));ami[_0xd911('0x24')](_0xd911('0xdd'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xde')));rpcDb[_0xd911('0x96')](_0x43fd9d,'[syncHangupRequest][logAgentReject]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0x14,_0xd911('0xdc'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xdf'));}else{if(_0x43fd9d['countagentrejectretry']>=_0x441f1d[_0xd911('0xe0')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xdf'));}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,_0xd911('0xe1'),_0x441f1d['dialAgentRejectRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case _0xd911('0xe2'):_0x441f1d['outboundAbandonedCallsDay']+=0x1;_0x43fd9d['countabandonedretry']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0xb,'Abandoned');rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xe3'));if(ut['totalGlobal'](_0x43fd9d)>=_0x441f1d['dialGlobalMaxRetry']){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb['createCustomerFinal'](_0x392188,_0xd911('0xe3'));}else{if(_0x43fd9d['countabandonedetry']>=_0x441f1d[_0xd911('0xe4')]){rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xe3'));}else{rpcDb[_0xd911('0xaf')](ut[_0xd911('0xb0')](_0x43fd9d,'countabandonedretry',_0x441f1d['dialAbandonedRetryFrequency']),_0x43fd9d[_0xd911('0xb2')],_0x43fd9d[_0xd911('0xb3')]);}}break;case'18':_0x441f1d['outboundUnknownCallsDay']+=0x1;_0x43fd9d['countmachineretry']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x12,_0x38892c[_0xd911('0xe5')]||_0x38892c[_0xd911('0xe6')]);ami[_0xd911('0x24')](_0xd911('0xe7'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xe8')));rpcDb[_0xd911('0x96')](_0x43fd9d,_0xd911('0xe9'));if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,_0xd911('0xad'));rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xe9'));}else{rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xe9'));}delete this['actions'][_0x38892c[_0xd911('0xb4')]];break;case'19':_0x441f1d[_0xd911('0x43')]+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0x13,_0x38892c[_0xd911('0xe5')]||_0x38892c['dialstatus']);ami[_0xd911('0x24')](_0xd911('0xe7'),ut[_0xd911('0xa8')](_0x43fd9d,_0xd911('0xe8')));rpcDb['createCustomerHistory'](_0x43fd9d,_0xd911('0xea'));if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d[_0xd911('0xab')]){_0x392188=ut[_0xd911('0xac')](_0x43fd9d,0xf,'Global');rpcDb['createCustomerFinal'](_0x392188,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xea'));}delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xb4')]];break;default:if(_0x43fd9d[_0xd911('0xb7')]){ut[_0xd911('0x7e')](_0x441f1d,_0xd911('0xeb'));ut[_0xd911('0x7f')](_0xd911('0xec')+_0x441f1d[_0xd911('0x27')],_0x38892c);}_0x441f1d['outboundUnknownCallsDay']+=0x1;_0x43fd9d[_0xd911('0xa4')]=ut[_0xd911('0xa5')](_0x43fd9d);ut[_0xd911('0x91')](_0x43fd9d,0xc,_0x38892c['cause-txt']||_0x38892c['dialstatus']);rpcDb[_0xd911('0x96')](_0x43fd9d,'[callProgressDetectingCustomer][logUnknown]');if(ut[_0xd911('0xa5')](_0x43fd9d)>=_0x441f1d['dialGlobalMaxRetry']){_0x392188=ut['cloneAction'](_0x43fd9d,0xf,'Global');rpcDb[_0xd911('0x99')](_0x392188,_0xd911('0xed'));}else{rpcDb[_0xd911('0x99')](_0x43fd9d,_0xd911('0xed'));}delete this[_0xd911('0x16')][_0x38892c['linkedid']];}if(!(_0x43fd9d[_0xd911('0xb7')]&&_0x5837be==='16')){ut[_0xd911('0xee')](_0x441f1d,'[callProgressDetectingCustomer]');logger[_0xd911('0x5b')](_0xd911('0xef'),_0x43fd9d['uniqueid'],'\x20Queue',_0x441f1d[_0xd911('0x27')],'originated:\x20',_0x441f1d['originated']);}if(_0x5837be!==_0xd911('0xb5')){delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xb4')]];delete this[_0xd911('0x16')][_0x38892c[_0xd911('0xf0')]];}}};Preview['prototype'][_0xd911('0xf1')]=function(_0x2ad781,_0x3ef70b,_0x4a88ac){if(_[_0xd911('0xf2')](_0x3ef70b)&&_0xd911('0xf3')!==typeof _0x3ef70b){return;}if(_[_0xd911('0xf2')](_0x4a88ac)&&_0xd911('0xf3')!==typeof _0x4a88ac){return;}switch(_0x4a88ac['reason']){case'0':ut[_0xd911('0xf4')](_0x2ad781,0x0,_0xd911('0xa6'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xf6'));break;case'3':ut[_0xd911('0xf4')](_0x2ad781,0x3,_0xd911('0xf7'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xf8'));break;case'5':ut['logAgent'](_0x2ad781,0x5,_0xd911('0xc8'));rpcDb['createAgentHistory'](_0x2ad781,_0xd911('0xf9'));break;case'8':ut[_0xd911('0xf4')](_0x2ad781,0x8,_0xd911('0xfa'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xfb'));break;case'22':ut[_0xd911('0xf4')](_0x2ad781,0x16,_0xd911('0xfc'));rpcDb[_0xd911('0xf5')](_0x2ad781,_0xd911('0xfd'));break;default:ut[_0xd911('0xf4')](_0x2ad781,0xc,_0x4a88ac[_0xd911('0xfe')]);rpcDb['createAgentHistory'](_0x2ad781,_0xd911('0xfb'));}ut[_0xd911('0xee')](_0x3ef70b,'[callProgressDetectingAgent]');logger[_0xd911('0x5b')](_0xd911('0xff'),_0x2ad781[_0xd911('0xb8')],_0xd911('0xc5'),_0x3ef70b[_0xd911('0x27')],_0xd911('0x72'),_0x3ef70b['originated']);delete this['actions'][_0x2ad781[_0xd911('0xb8')]];};Preview['prototype'][_0xd911('0x100')]=function(_0xfa605,_0x53d4b1,_0x2a8c8c,_0x20b6f8,_0x2267ad){var _0x2d8956=this;return new BPromise(function(_0x19b375,_0x4c1d92){if(_[_0xd911('0x6e')](_0x53d4b1)||_[_0xd911('0x6e')](_0x53d4b1[_0xd911('0x101')])||_['isNil'](_0x53d4b1[_0xd911('0x101')][_0xd911('0x102')])||_[_0xd911('0x6e')](_0x53d4b1[_0xd911('0x77')])){_0x4c1d92(ut[_0xd911('0x4c')](_0xd911('0x103'),_0x20b6f8,_0x2267ad));return;}var _0x31be6d=uuid['v4']();var _0x6499de=_0x2d8956['campaignsPreview'][_0x53d4b1[_0xd911('0x70')][_0xd911('0x27')]];var _0x2c5e59=_0x2a8c8c?_0x2d8956['agents'][_0x2a8c8c]['id']:undefined;_0x2d8956['actions'][_0x31be6d]=new Action(_0x53d4b1,_0x6499de,_0x31be6d,_0x2a8c8c,_0x2c5e59);var _0x4e51af=_0x2d8956[_0xd911('0x16')][_0x31be6d];_0x4e51af['unlockAgent']=_0x20b6f8;_0x4e51af['activeContact']=_0x2267ad;_0x4e51af[_0xd911('0x104')]=_0x2a8c8c;if(_[_0xd911('0x105')](_0xfa605)){_0x2d8956['execCall'](_0x4e51af,_0x6499de,_0x53d4b1,_0x2a8c8c)[_0xd911('0x84')](function(_0xd8ef89){logger['info'](_0xd911('0x106'),_0xd911('0x107')+_0x4e51af[_0xd911('0x71')]+'\x20IdHopper:\x20'+_0x4e51af[_0xd911('0x108')],JSON[_0xd911('0x57')](_0xd8ef89));ami[_0xd911('0x24')](_0xd911('0x109'),ut[_0xd911('0xa8')](_0x4e51af,_0xd911('0x10a'),_0x2d8956['campaignsPreview'][_0x4e51af[_0xd911('0x71')]]));_0x19b375(ut[_0xd911('0x4c')]('Calling'));})['catch'](function(_0x479c14){ut['logger'](_0xd911('0x10b'),_0x479c14);_0x4c1d92(ut[_0xd911('0x4c')](_0xd911('0x10c'),_0x20b6f8,_0x2267ad));});}else{_0x6499de[_0xd911('0x39')]+=0x1;ut[_0xd911('0x10d')](_0x4e51af);rpcDb[_0xd911('0x10e')](_0x4e51af,'[Blacklist][error]');delete _0x2d8956[_0xd911('0x16')][_0x31be6d];_0x4c1d92(ut['message'](_0xd911('0x10f'),_0x20b6f8,_0x2267ad));}});};Preview[_0xd911('0x10')][_0xd911('0x9e')]=function(_0x1d17a0){return!_['isNil'](_0x1d17a0)&&!_[_0xd911('0x6e')](_0x1d17a0[_0xd911('0x27')])&&!_[_0xd911('0x6e')](_0x1d17a0[_0xd911('0x54')])&&_0x1d17a0['active']&&!_['isNil'](this[_0xd911('0x15')][util[_0xd911('0x59')](_0xd911('0x110'),_0x1d17a0[_0xd911('0x27')])])&&!_['isNil'](this[_0xd911('0x15')][util[_0xd911('0x59')]('SIP/%s',_0x1d17a0[_0xd911('0x27')])][_0xd911('0x7a')])&&(this[_0xd911('0x15')][util['format'](_0xd911('0x110'),_0x1d17a0[_0xd911('0x27')])][_0xd911('0x7a')]===_0xd911('0x111')||this[_0xd911('0x15')][util[_0xd911('0x59')](_0xd911('0x110'),_0x1d17a0[_0xd911('0x27')])][_0xd911('0x7a')]===_0xd911('0x112'));};Preview['prototype'][_0xd911('0x8b')]=function(_0x201c72,_0x4c1d49){var _0x140d1f=this;return new BPromise(function(_0x5d4f03,_0x29433e){_0x140d1f[_0xd911('0x113')](_0x201c72,_0x4c1d49)['then'](function(_0x2d415f){_0x5d4f03(_[_0xd911('0x74')](_0x2d415f,[_0xd911('0x4c')]));})[_0xd911('0x7c')](function(_0x496ecb){if(_0x496ecb[_0xd911('0x114')]){rpcDb['unlockContact'](_0x201c72);}if(_0x496ecb['active']){rpcDb[_0xd911('0x8e')](_0x201c72);}_0x29433e(_[_0xd911('0x74')](_0x496ecb,['message']));});});};Preview[_0xd911('0x10')]['execRun']=function(_0x12dab6,_0x41d5ed){var _0x185e98=this;return new BPromise(function(_0x5c7b46,_0x5bab19){var _0x443a59,_0x59161c;rpcDb[_0xd911('0x115')](_0x12dab6)[_0xd911('0x84')](function(_0x24b34c){if(!_[_0xd911('0x6e')](_0x24b34c[0x0])){_0x59161c=_0x24b34c[0x0][_0xd911('0x116')]?![]:!![];_0x443a59=_0x24b34c[0x0]['recallme']?!![]:![];_0x443a59=_0x41d5ed?!![]:_0x443a59;}var _0x29812d=_0x185e98[_0xd911('0x117')](_0x24b34c);if(_0x29812d[_0xd911('0x118')]){rpcDb[_0xd911('0x119')](_[_0xd911('0x74')](_0x24b34c[0x0],['VoiceQueueId',_0xd911('0x11a')]))[_0xd911('0x84')](function(_0x4faafe){_0x185e98[_0xd911('0x100')](_0x4faafe,_0x24b34c[0x0],_0x41d5ed,_0x59161c,_0x443a59)['then'](function(_0x37339f){_0x5c7b46(_0x37339f);})[_0xd911('0x7c')](function(_0x57a4ec){_0x5bab19(_0x57a4ec);});})[_0xd911('0x7c')](function(_0x3db4ea){ut['logger'](_0xd911('0x11b'),_0x3db4ea);_0x5bab19(ut[_0xd911('0x4c')]('Call\x20unsuccessful',_0x59161c,_0x443a59));});}else{_0x5bab19(ut[_0xd911('0x4c')](_0x29812d[_0xd911('0x4c')],_0x59161c,_0x443a59));}})['catch'](function(_0x323374){ut[_0xd911('0x62')](_0xd911('0x11c'),_0x323374);_0x5bab19(ut[_0xd911('0x4c')]('Call\x20unsuccessful',![],!![]));});});};Preview[_0xd911('0x10')]['validateContact']=function(_0x3388cd){if(_[_0xd911('0x6e')](_0x3388cd)||_['isEmpty'](_0x3388cd)||!_[_0xd911('0x6e')](_0x3388cd[0x0][_0xd911('0x89')])&&_[_0xd911('0x6e')](_0x3388cd[0x0]['Agent'][_0xd911('0x27')])){ut[_0xd911('0x62')]('[Preview][validateContact][Empty\x20Contact]',_0x3388cd);return{'isValid':![],'message':_0xd911('0x11d')};}var _0x3ec254=this[_0xd911('0x13')][_0x3388cd[0x0][_0xd911('0x70')][_0xd911('0x27')]];_0x3ec254[_0xd911('0x4c')]='ACTIVE';if(_[_0xd911('0x6e')](_0x3ec254)){ut[_0xd911('0x62')](_0xd911('0x11e'),_0x3ec254);return{'isValid':![],'message':'Empty\x20Campaign'};}if(!this[_0xd911('0x9e')](_0x3ec254[_0xd911('0x53')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]',_0xd911('0x11f')+_0x3ec254[_0xd911('0x27')]+_0xd911('0x120'));if(!this[_0xd911('0x9e')](_0x3ec254[_0xd911('0x9f')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]',_0x3ec254[_0xd911('0x27')]+_0xd911('0x121'));return{'isValid':![],'message':_0xd911('0x122')};}}if(!ut[_0xd911('0x9d')](_0x3ec254[_0xd911('0x33')])){ut[_0xd911('0x62')](_0xd911('0x123'),_0x3ec254['name']+'\x20Not\x20Active');return{'isValid':![],'message':_0xd911('0x11f')+_0x3ec254['name']+_0xd911('0x124')};}return{'isValid':!![],'message':_0xd911('0x125')};};Preview[_0xd911('0x10')][_0xd911('0x126')]=function(_0xb066bb,_0x1c30cc,_0x1cced0,_0x2b793e){var _0x2a2eef=this;return new BPromise(function(_0x218378,_0x36150b){var _0x348a69=_0xb066bb[_0xd911('0xb8')];var _0x25fef4=_0x2a2eef['isTrunkReachable'](_0x1c30cc[_0xd911('0x53')])?util[_0xd911('0x59')](_0xd911('0x127'),_0x1c30cc[_0xd911('0x53')]['name'],_[_0xd911('0x6e')](_0x1c30cc[_0xd911('0x36')])?'':_0x1c30cc[_0xd911('0x36')][_0xd911('0x128')]()||'',_0x1c30cc[_0xd911('0x129')]>0x0?_0x1cced0[_0xd911('0x101')][_0xd911('0x102')][_0xd911('0x12a')](_0x1c30cc[_0xd911('0x129')]):_0x1cced0[_0xd911('0x101')][_0xd911('0x102')]):util['format']('SIP/%s/%s%s',_[_0xd911('0x6e')](_0x1c30cc['TrunkBackup'])?_0x1c30cc[_0xd911('0x53')]['name']:_0x1c30cc['TrunkBackup']['name'],_[_0xd911('0x6e')](_0x1c30cc[_0xd911('0x36')])?'':_0x1c30cc[_0xd911('0x36')][_0xd911('0x128')]()||'',_0x1c30cc[_0xd911('0x129')]>0x0?_0x1cced0[_0xd911('0x101')][_0xd911('0x102')][_0xd911('0x12a')](_0x1c30cc[_0xd911('0x129')]):_0x1cced0[_0xd911('0x101')][_0xd911('0x102')]);var _0x2d5611=_0x2a2eef[_0xd911('0x9e')](_0x1c30cc[_0xd911('0x53')])?ut[_0xd911('0x12b')](_0x1c30cc[_0xd911('0x53')][_0xd911('0x55')],_0x1c30cc[_0xd911('0x34')],_0x1c30cc[_0xd911('0x12c')]>0x0?ut[_0xd911('0x12d')](_0x1c30cc['dialOriginateCallerIdNumber'],_0x1c30cc[_0xd911('0x12c')]):_0x1c30cc[_0xd911('0x35')]):ut['getCallerId'](_[_0xd911('0x6e')](_0x1c30cc[_0xd911('0x9f')])?_0x1c30cc['Trunk'][_0xd911('0x55')]:_0x1c30cc['TrunkBackup'][_0xd911('0x55')],_0x1c30cc[_0xd911('0x34')],_0x1c30cc[_0xd911('0x12c')]>0x0?ut['getCallerIdRandom'](_0x1c30cc['dialOriginateCallerIdNumber'],_0x1c30cc[_0xd911('0x12c')]):_0x1c30cc[_0xd911('0x35')]);if(_0x2d5611){_0xb066bb['originatecalleridname']=ut[_0xd911('0x12e')](_0x2d5611);_0xb066bb[_0xd911('0x12f')]=ut[_0xd911('0x130')](_0x2d5611);}var _0x28a15f=ut[_0xd911('0x131')](_0x1c30cc,_0x1cced0,_0x25fef4,_0x2d5611,_0x348a69,_0xb066bb);_[_0xd911('0x132')](_0xb066bb,ut['toLowerVariables'](_0x28a15f));_0xb066bb['starttime']=moment()[_0xd911('0x59')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0xd911('0x79')](ut[_0xd911('0x133')](_0xb066bb,_0x1c30cc,_0x28a15f,_0xb066bb[_0xd911('0xb3')],_0x2b793e))[_0xd911('0x84')](function(_0xb103e3){var _0x1f29ad=_0xb066bb[_0xd911('0x134')];if(!_[_0xd911('0x6e')](_0x1f29ad)){if(!_['isNil'](_0x2a2eef['agents'][_0x1f29ad])){_0x2a2eef[_0xd911('0x17')][_0x1f29ad][_0xd911('0x135')]=_0xb066bb['calleridnum'];emit(util[_0xd911('0x59')](_0xd911('0x136'),_0x2a2eef[_0xd911('0x17')][_0x1f29ad][_0xd911('0x27')]),'user:agentconnect',{'destaccountcode':_0x2a2eef[_0xd911('0x17')][_0x1f29ad][_0xd911('0x137')],'destconnectedlinenum':_0xb066bb[_0xd911('0x138')]});}}_0x1c30cc[_0xd911('0x4d')]+=0x1;logger[_0xd911('0x5b')](_0xd911('0x139'),_0x348a69,_0xd911('0xc5'),_0x1c30cc[_0xd911('0x27')],_0xd911('0x72'),_0x1c30cc[_0xd911('0x4d')]);_0x218378(_0xb103e3);})[_0xd911('0x7c')](function(_0x5ac026){ut[_0xd911('0xf4')](_0xb066bb,0xe,_0xd911('0x13a'));rpcDb[_0xd911('0xf5')](_0xb066bb,_0xd911('0x13b'));_0x36150b(_0x5ac026);});});};Preview['prototype']['syncNewExten']=function(_0x5e22e7){if(this[_0xd911('0x16')][_0x5e22e7[_0xd911('0xb4')]]){this['actions'][_0x5e22e7[_0xd911('0xb4')]]['channel']=_0x5e22e7[_0xd911('0x7b')];}};Preview[_0xd911('0x10')][_0xd911('0x1a')]=function(_0x2d13e7){var _0x4ee30b=this;var _0x30534f=this['actions'][_0x2d13e7['actionid']];if(_0x30534f){if(_0x30534f['lookAgent']&&this[_0xd911('0x17')][_0x30534f[_0xd911('0x104')]]){ut[_0xd911('0x13c')](_0x30534f,this[_0xd911('0x17')][_0x30534f['lookAgent']]['name'],this['agents'][_0x30534f[_0xd911('0x104')]]['id']);}var _0x360695=_[_0xd911('0x13d')](_0x30534f);_0x360695['responsetime']=moment()[_0xd911('0x59')](_0xd911('0x90'));var _0x28200d=_0x4ee30b[_0xd911('0x13')][_0x30534f[_0xd911('0x71')]];if(ut[_0xd911('0x13e')](_0x2d13e7[_0xd911('0x13f')])){if(_0x30534f[_0xd911('0xb2')]){rpcDb['unlockContact'](_0x30534f[_0xd911('0x108')]);}if(_0x30534f[_0xd911('0xb3')]){rpcDb[_0xd911('0x8e')](_0x30534f[_0xd911('0x108')]);}ami[_0xd911('0x24')](_0xd911('0x140'),ut[_0xd911('0xa8')](_0x30534f,_0xd911('0x141'),this['campaignsPreview'][_0x30534f[_0xd911('0x71')]]));this[_0xd911('0xf1')](_0x360695,_0x28200d,_0x2d13e7);}else{_0x30534f[_0xd911('0x8f')]=moment()[_0xd911('0x59')](_0xd911('0x90'));ut[_0xd911('0xf4')](_0x360695,0x4,_0xd911('0xc0'));rpcDb['createAgentHistory'](_0x360695,_0xd911('0x142'));}}};Preview['prototype']['syncHangup']=function(_0x13dc04){var _0x2ac888=this;var _0x5d8510=this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]];var _0x3af802;if(_0x5d8510){_0x3af802=this[_0xd911('0x13')][_0x5d8510[_0xd911('0x71')]];logger[_0xd911('0x5b')](_0xd911('0x143'),_0x13dc04[_0xd911('0xb4')],'\x20Queue',_0x3af802[_0xd911('0x27')],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);}if(this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]]&&_0x13dc04[_0xd911('0xb4')]!==_0x13dc04[_0xd911('0xb8')]){if(_0x13dc04['cause']==='16'&&this[_0xd911('0x16')][_0x13dc04['linkedid']]['dialAnswer']){this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}else if(this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]]['dialAnswer']){logger[_0xd911('0x5b')]('[syncHangup][talking][cause]',_0x13dc04['linkedid'],_0x13dc04[_0xd911('0x144')],'\x20Queue',_0x3af802['name'],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}}else if(_0x5d8510&&_[_0xd911('0x6e')](_0x5d8510[_0xd911('0x145')])&&_0x3af802['dialQueueProject']&&_0x13dc04[_0xd911('0xb4')]===_0x13dc04[_0xd911('0xb8')]&&_[_0xd911('0x6e')](_0x13dc04['reason'])&&_0x13dc04[_0xd911('0x144')]==='16'&&_0x13dc04[_0xd911('0x146')]==='6'&&_[_0xd911('0xf2')](_0x5d8510['transfer'])){if(_0x5d8510['unlockAgent']){rpcDb['unlockContact'](_0x5d8510['idContact']);}if(_0x5d8510[_0xd911('0xb3')]){rpcDb[_0xd911('0x8e')](_0x5d8510['idContact']);}_0x13dc04[_0xd911('0xfe')]='22';this['callProgressDetectingAgent'](_0x5d8510,_0x3af802,_0x13dc04);}else if(_0x5d8510&&_0x5d8510[_0xd911('0x147')]){if(_0x13dc04['cause']==='16'&&this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]]['dialAnswer']){logger[_0xd911('0x5b')](_0xd911('0x148'),_0x13dc04['linkedid'],_0x13dc04['cause'],_0xd911('0xc5'),_0x3af802[_0xd911('0x27')],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}else if(this[_0xd911('0x16')][_0x13dc04[_0xd911('0xb4')]][_0xd911('0xb7')]){logger['info'](_0xd911('0x149'),_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')],_0xd911('0xc5'),_0x3af802[_0xd911('0x27')],_0xd911('0x73'),_0x3af802[_0xd911('0x2c')]);this[_0xd911('0xa2')](_0x13dc04,_0x13dc04[_0xd911('0xb4')],_0x13dc04[_0xd911('0x144')]);}}};Preview[_0xd911('0x10')][_0xd911('0x1e')]=function(_0x58aa23){if(this['actions'][_0x58aa23[_0xd911('0xf0')]]&&_0x58aa23[_0xd911('0xf0')]!==_0x58aa23[_0xd911('0x14a')]){this[_0xd911('0xa2')](_0x58aa23,_0x58aa23[_0xd911('0xf0')],_0x58aa23[_0xd911('0xe6')]);}};Preview[_0xd911('0x10')][_0xd911('0x14b')]=function(_0x222f15){if(this[_0xd911('0x16')][_0x222f15['linkedid']]&&_0x222f15[_0xd911('0xb4')]!==_0x222f15['uniqueid']&&!this[_0xd911('0x16')][_0x222f15[_0xd911('0xb4')]][_0xd911('0xb7')]){if(_0x222f15['cause']==='1'){this[_0xd911('0xa2')](_0x222f15,_0x222f15[_0xd911('0xb4')],_0x222f15[_0xd911('0x144')]);}}};Preview[_0xd911('0x10')][_0xd911('0x14c')]=function(_0x24368f,_0x219b0f,_0x521dbe){if(this['actions'][_0x24368f]){if(_[_0xd911('0x6e')](this['actions'][_0x24368f][_0xd911('0x14d')])){this[_0xd911('0x16')][_0x24368f]['variables']={};}this[_0xd911('0x16')][_0x24368f]['variables'][_0x219b0f]=_0x521dbe;}};Preview[_0xd911('0x10')]['syncVarSet']=function(_0x17baf5){try{if(!_[_0xd911('0x6e')](_0x17baf5)){if(ut[_0xd911('0x14e')](_['keys'](_0x17baf5[_0xd911('0x14f')])[0x0])){this[_0xd911('0x14c')](_0x17baf5['uniqueid'],_[_0xd911('0x150')](_0x17baf5['variable'])[0x0],_0x17baf5[_0xd911('0x151')]);}}}catch(_0x44bf6f){logger[_0xd911('0x152')](_0xd911('0x153'),util['inspect'](_0x44bf6f,{'showHidden':![],'depth':null}));}};Preview[_0xd911('0x10')][_0xd911('0x21')]=function(_0x364a92){if(_0x364a92){if(this[_0xd911('0x16')][_0x364a92['transfertargetlinkedid']]){this[_0xd911('0x16')][_0x364a92[_0xd911('0x154')]][_0xd911('0x147')]=!![];}}};Preview[_0xd911('0x10')][_0xd911('0x22')]=function(_0xee37ef){if(_0xee37ef){if(this[_0xd911('0x16')][_0xee37ef['transfererlinkedid']]){this[_0xd911('0x16')][_0xee37ef[_0xd911('0x155')]]['transfer']=!![];}}};module[_0xd911('0x156')]=Preview;
\ No newline at end of file
index 14f92d3..8c9b804 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2546=['unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','connectedlinename','membername','context','exten','xcally-motion-preview','holdtime','assigned','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','inspect','resolve','[createHistory]\x20','then','createHistory','catch','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20'];(function(_0xba9bdd,_0x1e9d47){var _0x1b105c=function(_0x2d3d99){while(--_0x2d3d99){_0xba9bdd['push'](_0xba9bdd['shift']());}};_0x1b105c(++_0x1e9d47);}(_0x2546,0x1e6));var _0x6254=function(_0x528bd3,_0x2849b8){_0x528bd3=_0x528bd3-0x0;var _0x476a88=_0x2546[_0x528bd3];return _0x476a88;};'use strict';var util=require(_0x6254('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')(_0x6254('0x1'));var _=require('lodash');var cmHopper=require(_0x6254('0x2'));var cmHopperFinal=require(_0x6254('0x3'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x6254('0x4'));var voiceQueueRt=require(_0x6254('0x5'));var agentReportPreview=require('../rpc/agentReportPreview');var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x42bc0a){return function(_0x3f5843){logger['error'](_0x42bc0a,util[_0x6254('0x6')](_0x3f5843,{'showHidden':![],'depth':null}));};}function create(_0x4e535b){return BPromise[_0x6254('0x7')]()['then'](cmHopperHistory['createHistory'](_0x4e535b))['catch'](loggerCatch(_0x6254('0x8')));}function createAgent(_0x5f1d66){return BPromise[_0x6254('0x7')]()[_0x6254('0x9')](agentReportPreview[_0x6254('0xa')](_0x5f1d66))[_0x6254('0xb')](loggerCatch(_0x6254('0x8')));}function moveContact(_0x3bf026){return BPromise[_0x6254('0x7')]()['then'](cmHopper['moveContactManagedDialer'](_0x3bf026,!![]))[_0x6254('0xb')](loggerCatch(_0x6254('0xc')));}exports[_0x6254('0xd')]=function(_0x298829){return BPromise['resolve']()[_0x6254('0x9')](cmHopperBlack[_0x6254('0xd')](_0x298829))[_0x6254('0xb')](loggerCatch(_0x6254('0xe')));};exports[_0x6254('0xf')]=function(_0x530d8c){return BPromise['resolve']()[_0x6254('0x9')](cmHopper['getContactPreview'](_0x530d8c))['catch'](loggerCatch(_0x6254('0x10')));};exports['createHistory']=function(_0x1be9db,_0x10c45c){create(_0x1be9db)[_0x6254('0xb')](loggerCatch(_0x10c45c));moveContact(_0x1be9db)['catch'](loggerCatch(_0x10c45c));};exports[_0x6254('0x11')]=function(_0x151af8,_0xfbd619){createAgent(_0x151af8)[_0x6254('0xb')](loggerCatch(_0xfbd619));};exports['createCustomerHistory']=function(_0x2a7d1d,_0x3a5d36){create(_0x2a7d1d)[_0x6254('0xb')](loggerCatch(_0x3a5d36));};exports['createCustomerFinal']=function(_0x19b280,_0x2d7c7d){moveContact(_0x19b280)['catch'](loggerCatch(_0x2d7c7d));};exports[_0x6254('0x12')]=function(_0x2644a9,_0x20af9a,_0x491a41){if(_0x20af9a){_0x2644a9[_0x6254('0x13')]=null;}if(_0x491a41){_0x2644a9[_0x6254('0x14')]=![];}return BPromise[_0x6254('0x7')]()[_0x6254('0x9')](cmHopper['rescheduleContact'](_0x2644a9))[_0x6254('0xb')](loggerCatch(_0x6254('0x15')));};exports[_0x6254('0x16')]=function(_0x1a3656){return BPromise[_0x6254('0x7')]()[_0x6254('0x9')](cmHopper[_0x6254('0x16')](_0x1a3656))['catch'](loggerCatch(_0x6254('0x17')));};exports[_0x6254('0x18')]=function(_0x4cfd57){return BPromise[_0x6254('0x7')]()[_0x6254('0x9')](cmHopper[_0x6254('0x18')]({'UserId':null},_0x4cfd57,0x1))[_0x6254('0xb')](loggerCatch(_0x6254('0x19')));};exports[_0x6254('0x1a')]=function(_0x475ef0){return BPromise[_0x6254('0x7')]()['then'](cmHopper[_0x6254('0x18')]({'active':![]},_0x475ef0,0x1))['catch'](loggerCatch(_0x6254('0x1b')));};exports[_0x6254('0x1c')]=function(_0x12a119){var _0x354db8={};_0x354db8[_0x6254('0x1d')]=_0x12a119[_0x6254('0x1d')];_0x354db8[_0x6254('0x1e')]=_0x12a119[_0x6254('0x1e')];_0x354db8[_0x6254('0x1f')]=_0x12a119['calleridnum'];_0x354db8['calleridname']=_0x12a119['calleridname'];_0x354db8[_0x6254('0x20')]=_0x12a119[_0x6254('0x20')];_0x354db8[_0x6254('0x21')]=_0x12a119[_0x6254('0x22')];_0x354db8[_0x6254('0x23')]=_0x12a119[_0x6254('0x22')];_0x354db8[_0x6254('0x24')]=0x1;_0x354db8[_0x6254('0x25')]=_0x12a119['endtime'];_0x354db8[_0x6254('0x26')]=_0x12a119[_0x6254('0x27')];_0x354db8[_0x6254('0x28')]='from-sip';_0x354db8[_0x6254('0x29')]=_0x6254('0x2a');_0x354db8[_0x6254('0x2b')]=0x0;_0x354db8[_0x6254('0x2c')]=0x1;_0x354db8['lastAssignedTo']=_0x12a119[_0x6254('0x27')];_0x354db8['queuecallerexitreason']=_0x6254('0x2d');return BPromise['resolve']()[_0x6254('0x9')](voiceQueueReport['create'](_0x354db8))[_0x6254('0xb')](loggerCatch(_0x6254('0x2e')));};exports['getContactRecallMe']=function(_0x2f862a,_0x3cb67c){return BPromise['resolve']()['then'](cmHopper[_0x6254('0x2f')](_0x2f862a,_0x3cb67c))[_0x6254('0xb')](loggerCatch(_0x6254('0x30')));};exports[_0x6254('0x31')]=function(_0x4f5e4e){return BPromise[_0x6254('0x7')]()[_0x6254('0x9')](cmHopper['rescheduleContact'](_0x4f5e4e,!![],!![]))[_0x6254('0xb')](loggerCatch(_0x6254('0x32')));};
\ No newline at end of file
+var _0x92f7=['queuecallerexitreason','COMPLETED','create','getContactRecallMe','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','then','createHistory','[createHistory]\x20','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20','crateCustomerReportQueue','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo'];(function(_0x3624b4,_0x5ced54){var _0x2f858f=function(_0x43071f){while(--_0x43071f){_0x3624b4['push'](_0x3624b4['shift']());}};_0x2f858f(++_0x5ced54);}(_0x92f7,0xea));var _0x792f=function(_0x4403e5,_0x32ddae){_0x4403e5=_0x4403e5-0x0;var _0x512114=_0x92f7[_0x4403e5];return _0x512114;};'use strict';var util=require(_0x792f('0x0'));var BPromise=require('bluebird');var logger=require(_0x792f('0x1'))(_0x792f('0x2'));var _=require('lodash');var cmHopper=require(_0x792f('0x3'));var cmHopperFinal=require(_0x792f('0x4'));var cmHopperHistory=require(_0x792f('0x5'));var cmHopperBlack=require(_0x792f('0x6'));var voiceQueueRt=require('../rpc/voiceQueueRt');var agentReportPreview=require(_0x792f('0x7'));var voiceQueueReport=require(_0x792f('0x8'));function loggerCatch(_0x29f762){return function(_0x395483){logger[_0x792f('0x9')](_0x29f762,util[_0x792f('0xa')](_0x395483,{'showHidden':![],'depth':null}));};}function create(_0x3a3762){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopperHistory[_0x792f('0xd')](_0x3a3762))['catch'](loggerCatch(_0x792f('0xe')));}function createAgent(_0x340881){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](agentReportPreview[_0x792f('0xd')](_0x340881))[_0x792f('0xf')](loggerCatch(_0x792f('0xe')));}function moveContact(_0x1dc865){return BPromise['resolve']()['then'](cmHopper[_0x792f('0x10')](_0x1dc865,!![]))[_0x792f('0xf')](loggerCatch(_0x792f('0x11')));}exports[_0x792f('0x12')]=function(_0x1a0d68){return BPromise[_0x792f('0xb')]()['then'](cmHopperBlack[_0x792f('0x12')](_0x1a0d68))[_0x792f('0xf')](loggerCatch('[checkIsBlackList]\x20'));};exports['getContactPreview']=function(_0x559577){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x13')](_0x559577))[_0x792f('0xf')](loggerCatch('[getContactPreview]\x20'));};exports[_0x792f('0xd')]=function(_0x277ebf,_0x5e27dc){create(_0x277ebf)[_0x792f('0xf')](loggerCatch(_0x5e27dc));moveContact(_0x277ebf)[_0x792f('0xf')](loggerCatch(_0x5e27dc));};exports['createAgentHistory']=function(_0x3627f8,_0x3b5f6b){createAgent(_0x3627f8)['catch'](loggerCatch(_0x3b5f6b));};exports[_0x792f('0x14')]=function(_0x4a38ba,_0x49a0a1){create(_0x4a38ba)[_0x792f('0xf')](loggerCatch(_0x49a0a1));};exports[_0x792f('0x15')]=function(_0x3075a6,_0x558fe1){moveContact(_0x3075a6)[_0x792f('0xf')](loggerCatch(_0x558fe1));};exports[_0x792f('0x16')]=function(_0x30c376,_0x10d021,_0x3cfb94){if(_0x10d021){_0x30c376[_0x792f('0x17')]=null;}if(_0x3cfb94){_0x30c376[_0x792f('0x18')]=![];}return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x16')](_0x30c376))['catch'](loggerCatch(_0x792f('0x19')));};exports[_0x792f('0x1a')]=function(_0x376762){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x1a')](_0x376762))[_0x792f('0xf')](loggerCatch('[countReScheduled]\x20'));};exports[_0x792f('0x1b')]=function(_0x1d8c78){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x1b')]({'UserId':null},_0x1d8c78,0x1))[_0x792f('0xf')](loggerCatch(_0x792f('0x1c')));};exports[_0x792f('0x1d')]=function(_0x431db9){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper[_0x792f('0x1b')]({'active':![]},_0x431db9,0x1))[_0x792f('0xf')](loggerCatch(_0x792f('0x1e')));};exports[_0x792f('0x1f')]=function(_0x430c78){var _0xb27433={};_0xb27433['type']=_0x430c78['type'];_0xb27433[_0x792f('0x20')]=_0x430c78[_0x792f('0x20')];_0xb27433[_0x792f('0x21')]=_0x430c78[_0x792f('0x21')];_0xb27433[_0x792f('0x22')]=_0x430c78[_0x792f('0x22')];_0xb27433['queue']=_0x430c78[_0x792f('0x23')];_0xb27433[_0x792f('0x24')]=_0x430c78[_0x792f('0x25')];_0xb27433[_0x792f('0x26')]=_0x430c78['answertime'];_0xb27433[_0x792f('0x27')]=0x1;_0xb27433[_0x792f('0x28')]=_0x430c78[_0x792f('0x29')];_0xb27433[_0x792f('0x2a')]=_0x430c78[_0x792f('0x2b')];_0xb27433[_0x792f('0x2c')]=_0x792f('0x2d');_0xb27433[_0x792f('0x2e')]=_0x792f('0x2f');_0xb27433[_0x792f('0x30')]=0x0;_0xb27433[_0x792f('0x31')]=0x1;_0xb27433[_0x792f('0x32')]=_0x430c78[_0x792f('0x2b')];_0xb27433[_0x792f('0x33')]=_0x792f('0x34');return BPromise['resolve']()[_0x792f('0xc')](voiceQueueReport[_0x792f('0x35')](_0xb27433))[_0x792f('0xf')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x792f('0x36')]=function(_0x5073da,_0x4675ad){return BPromise[_0x792f('0xb')]()['then'](cmHopper[_0x792f('0x36')](_0x5073da,_0x4675ad))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x792f('0x37')]=function(_0x32c517){return BPromise[_0x792f('0xb')]()[_0x792f('0xc')](cmHopper['rescheduleContact'](_0x32c517,!![],!![]))[_0x792f('0xf')](loggerCatch(_0x792f('0x38')));};
\ No newline at end of file
index 0f9bf19..995d6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbb6=['dialer','VoiceQueueId','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','dialQueueProject','NONE','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','tags','createdAt','%s%s','XMD-','toLowerVariables','toLower','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','membername','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','uniqueid','originate','channelAgent','calleridnum','from-sip','timeout','totalGlobal','countbusyretry','countcongestionretry','countnosuchnumberretry','cloneAction','clone','Global','active','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','buildObj','lastevent','queue','interface','buildAcw','not_inuse','status','getDiff','createBody','idContact','type','campaigntype','dialAnswer','scheduledat','countnoanswerretry','countglobal','callback','callbackuniqueid','callbackat','recallme','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialoptions','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','error','inspect','logger','info','loggerError','message','getCallerId','string','isEmpty','format','\x22%s\x22\x20<%s>','isUndefined','isActive','isNil','addVariables','name','calleridname','ContactId'];(function(_0x11a53c,_0x486647){var _0x119348=function(_0x416318){while(--_0x416318){_0x11a53c['push'](_0x11a53c['shift']());}};_0x119348(++_0x486647);}(_0xbbb6,0xf7));var _0x6bbb=function(_0x1d873a,_0x7c445e){_0x1d873a=_0x1d873a-0x0;var _0x4cea22=_0xbbb6[_0x1d873a];return _0x4cea22;};'use strict';var util=require(_0x6bbb('0x0'));var _=require(_0x6bbb('0x1'));var moment=require(_0x6bbb('0x2'));var logger=require(_0x6bbb('0x3'))('preview');var ipAgi=process['env'][_0x6bbb('0x4')]||_0x6bbb('0x5');function getSeconds(_0x26f9f1,_0xe75ef){var _0x18dcb7=moment(_0x26f9f1)[_0x6bbb('0x6')](0x0);var _0x484143=moment(_0xe75ef)[_0x6bbb('0x6')](0x0);return _0x18dcb7[_0x6bbb('0x7')](_0x484143,_0x6bbb('0x8'));}exports['loggerCatch']=function(_0x5ca0f4){return function(_0xc2ee51){logger[_0x6bbb('0x9')](_0x5ca0f4,util[_0x6bbb('0xa')](_0xc2ee51,{'showHidden':![],'depth':null}));};};exports[_0x6bbb('0xb')]=function(_0x4754ef,_0x50b962){logger[_0x6bbb('0xc')](_0x4754ef,util['inspect'](_0x50b962,{'showHidden':![],'depth':null}));};exports[_0x6bbb('0xd')]=function(_0x2283f7,_0x559de4){logger[_0x6bbb('0x9')](_0x2283f7,util[_0x6bbb('0xa')](_0x559de4,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x52a6bd){return function(_0x5b80b0){logger[_0x6bbb('0xc')](_0x52a6bd,util[_0x6bbb('0xa')](_0x5b80b0,{'showHidden':![],'depth':null}));};};exports[_0x6bbb('0xe')]=function(_0x4aa72e,_0x294ff3,_0x5e6f23){return{'message':_0x4aa72e,'unlock':_0x294ff3,'active':_0x5e6f23};};exports[_0x6bbb('0xf')]=function(_0x130058,_0x2d8d9e,_0x5355a4){if(!_['isUndefined'](_0x5355a4)&&_0x6bbb('0x10')===typeof _0x5355a4&&!_['isEmpty'](_0x5355a4)){if(!_['isUndefined'](_0x2d8d9e)&&_0x6bbb('0x10')===typeof _0x2d8d9e&&!_[_0x6bbb('0x11')](_0x2d8d9e)){return util[_0x6bbb('0x12')](_0x6bbb('0x13'),_0x2d8d9e,_0x5355a4);}return util[_0x6bbb('0x12')](_0x6bbb('0x13'),_0x5355a4,_0x5355a4);}if(!_[_0x6bbb('0x14')](_0x130058)&&'string'===typeof _0x130058&&!_['isEmpty'](_0x130058)){return _0x130058;}return'\x22\x22\x20<>';};exports[_0x6bbb('0x15')]=function(_0x4e4417){if(_[_0x6bbb('0x16')](_0x4e4417)){return![];}return _0x4e4417;};exports[_0x6bbb('0x17')]=function(_0x45f7b1,_0x5337ab,_0x234192,_0xc86ad0,_0xba0b8b,_0x50aa07){var _0x1f173a={'XMD-QUEUE':_0x5337ab['Queue']?_0x5337ab['Queue'][_0x6bbb('0x18')]:'','XMD-CALLERID':_0xc86ad0,'XMD-CALLERID-PREVIEW':_0x50aa07?util[_0x6bbb('0x12')](_0x6bbb('0x13'),_0x50aa07[_0x6bbb('0x19')],_0x50aa07['calleridnum']):_0xc86ad0,'XMD-DIALID':_0xba0b8b,'XMD-CONTACTID':_0x5337ab[_0x6bbb('0x1a')],'XMD-CDRTYPE':_0x6bbb('0x1b'),'CALLERID(all)':_0xc86ad0,'XMD-VOICEQUEUEID':_0x5337ab[_0x6bbb('0x1c')],'XMD-DIALCHANNEL':_0x234192,'XMD-DIALTIMEOUT':_0x45f7b1['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x6bbb('0x12')]('\x22rtTxX%s%s\x22',_0x45f7b1[_0x6bbb('0x1d')]?'g':'',_[_0x6bbb('0x11')](_0x45f7b1[_0x6bbb('0x1e')])?'':_0x6bbb('0x1f')),'XMD-DIALURL':_0x45f7b1[_0x6bbb('0x20')]||'','XMD-AGI':_0x45f7b1['dialQueueProject']?util[_0x6bbb('0x12')](_0x6bbb('0x21'),ipAgi,_0x45f7b1[_0x6bbb('0x22')]):_0x6bbb('0x23'),'XMD-AGIAFTER':_0x45f7b1[_0x6bbb('0x1d')]?util['format'](_0x6bbb('0x21'),ipAgi,_0x45f7b1['dialQueueProject2']):_0x6bbb('0x23'),'XMD-ORIGINATECALLERIDNUM':_0x50aa07?_0x50aa07['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x50aa07?_0x50aa07[_0x6bbb('0x24')]:'','XMD-DESTINATION':_0x6bbb('0x25')};if(!_['isEmpty'](_0x45f7b1[_0x6bbb('0x1e')])){_0x1f173a[util[_0x6bbb('0x12')]('%s',_0x6bbb('0x26'))]=_0x45f7b1[_0x6bbb('0x1e')];_0x1f173a[util[_0x6bbb('0x12')]('%s',_0x6bbb('0x27'))]=_0xba0b8b;}if(_0x5337ab&&_0x5337ab[_0x6bbb('0x28')]){for(var _0x513fe1 in _0x5337ab['Contact']){if(_0x5337ab['Contact'][_0x6bbb('0x29')](_0x513fe1)){if(!_[_0x6bbb('0x16')](_0x5337ab[_0x6bbb('0x28')][_0x513fe1])&&_0x513fe1!=='id'&&_0x513fe1!==_0x6bbb('0x2a')&&_0x513fe1!==_0x6bbb('0x2b')&&_0x513fe1!=='updatedAt'){_0x1f173a[util['format'](_0x6bbb('0x2c'),_0x6bbb('0x2d'),_['toUpper'](_0x513fe1))]=_0x5337ab[_0x6bbb('0x28')][_0x513fe1];}}}}return _0x1f173a;};exports[_0x6bbb('0x2e')]=function(_0x4f47dc){var _0x5509c7={};for(var _0x869c37 in _0x4f47dc){if(_0x4f47dc[_0x6bbb('0x29')](_0x869c37)){_0x5509c7[util[_0x6bbb('0x12')]('%s',_[_0x6bbb('0x2f')](_0x869c37))]=_0x4f47dc[_0x869c37];}}return{'variables':_0x5509c7};};exports['updateOriginated']=function(_0x3acee6,_0x2a3f4b){if(!_[_0x6bbb('0x16')](_0x3acee6)){if(_0x3acee6[_0x6bbb('0x29')](_0x6bbb('0x30'))){if(_0x3acee6[_0x6bbb('0x30')]>0x0){_0x3acee6['originated']-=0x1;}else{logger['error'](_0x6bbb('0x31'),_0x2a3f4b);}}}else{logger['error'](_0x6bbb('0x32'),_0x2a3f4b);}};exports[_0x6bbb('0x33')]=function(_0x48c8fa){var _0x1637f2=moment()[_0x6bbb('0x12')](_0x6bbb('0x34'));_0x48c8fa[_0x6bbb('0x35')]=0xd;_0x48c8fa[_0x6bbb('0x36')]=_0x6bbb('0x37');_0x48c8fa[_0x6bbb('0x38')]=_0x1637f2;_0x48c8fa[_0x6bbb('0x39')]=_0x1637f2;_0x48c8fa[_0x6bbb('0x3a')]=_0x1637f2;};exports[_0x6bbb('0x3b')]=function(_0x4a103a,_0x1a8bcd,_0x4838d5){var _0xb93510=moment()['format'](_0x6bbb('0x34'));_0x4a103a['state']=_0x1a8bcd;_0x4a103a[_0x6bbb('0x36')]=_0x4838d5;_0x4a103a[_0x6bbb('0x39')]=_0xb93510;_0x4a103a[_0x6bbb('0x3c')]=getSeconds(_0x4a103a['responsetime'],_0x4a103a[_0x6bbb('0x38')]);};exports['logLookAgent']=function(_0x1df80c,_0x334008,_0x1cdce5){_0x1df80c[_0x6bbb('0x3d')]=_0x334008;_0x1df80c['UserId']=_0x1cdce5;};exports['logCustomer']=function(_0x24b0ff,_0x3ef478,_0x3355bb){var _0x579f3e=moment()[_0x6bbb('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x24b0ff['state']=_0x3ef478;_0x24b0ff['statedesc']=_0x3355bb;_0x24b0ff[_0x6bbb('0x39')]=_0x24b0ff[_0x6bbb('0x39')]?_0x24b0ff[_0x6bbb('0x39')]:_0x579f3e;_0x24b0ff[_0x6bbb('0x3a')]=_0x24b0ff[_0x6bbb('0x3a')]?_0x24b0ff[_0x6bbb('0x3a')]:_0x579f3e;_0x24b0ff[_0x6bbb('0x3c')]=getSeconds(_0x24b0ff[_0x6bbb('0x39')]||0x0,_0x24b0ff[_0x6bbb('0x38')]||0x0);_0x24b0ff[_0x6bbb('0x3e')]=_0x24b0ff['answertime']?getSeconds(_0x24b0ff[_0x6bbb('0x3a')],_0x24b0ff[_0x6bbb('0x3f')]):0x0;};exports[_0x6bbb('0x40')]=function(_0x2bc435){return _0x2bc435===_0x6bbb('0x41');};exports[_0x6bbb('0x42')]=function(_0x581bde,_0x31cf85,_0x66e5b8,_0x43b7c5,_0x392aab){var _0xd8cf5a=_0x43b7c5?'RECALL':_0x581bde['calleridname'];_0xd8cf5a=_0x392aab?_0x6bbb('0x43'):_0xd8cf5a;return{'actionid':_0x581bde[_0x6bbb('0x44')],'action':_0x6bbb('0x45'),'channel':_0x581bde[_0x6bbb('0x46')],'callerid':util[_0x6bbb('0x12')]('\x22%s\x22\x20<%s>',_0xd8cf5a,_0x581bde[_0x6bbb('0x47')]),'Exten':'xcally-motion-preview','Context':_0x6bbb('0x48'),'Priority':'1','variable':_0x66e5b8,'timeout':(_0x31cf85[_0x6bbb('0x49')]||0x1e)*0x3e8,'async':!![],'channelid':_0x581bde[_0x6bbb('0x44')]};};exports[_0x6bbb('0x4a')]=function(_0xe4fa7b){return _0xe4fa7b[_0x6bbb('0x4b')]+_0xe4fa7b[_0x6bbb('0x4c')]+_0xe4fa7b['countnoanswerretry']+_0xe4fa7b['countagentrejectretry']+_0xe4fa7b[_0x6bbb('0x4d')];};exports[_0x6bbb('0x4e')]=function(_0x4430a4){var _0x2a9080=_[_0x6bbb('0x4f')](_0x4430a4);_0x2a9080[_0x6bbb('0x35')]=0xf;_0x2a9080[_0x6bbb('0x36')]=_0x6bbb('0x50');return _0x2a9080;};exports['scheduledAt']=function(_0x49ad3d,_0x36bece,_0x26d1c0){var _0x56be74={};_0x56be74[_0x36bece]=_0x49ad3d[_0x36bece];_0x56be74[_0x6bbb('0x51')]=![];_0x56be74['scheduledat']=moment()[_0x6bbb('0x52')](_0x26d1c0,_0x6bbb('0x53'))[_0x6bbb('0x12')](_0x6bbb('0x34'));_0x56be74[_0x6bbb('0x1a')]=_0x49ad3d[_0x6bbb('0x1a')];_0x56be74[_0x6bbb('0x54')]=_0x49ad3d['ListId'];_0x56be74['VoiceQueueId']=_0x49ad3d[_0x6bbb('0x1c')]||undefined;return _0x56be74;};exports[_0x6bbb('0x55')]=function(_0x347251,_0x1d4616){if(!_[_0x6bbb('0x16')](_0x347251)){if(_0x347251['pTalking']>0x0){_0x347251[_0x6bbb('0x56')]-=0x1;}else{logger['error'](_0x1d4616,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x6bbb('0x9')](_0x1d4616,_0x6bbb('0x57'));}};exports['IsNotLoggedIn']=function(_0x5b9dd2){if(_0x5b9dd2<=0x0){return!![];}return![];};exports[_0x6bbb('0x58')]=function(_0x4827d4,_0xe9ae15,_0x25d27b){_0x4827d4[_0x6bbb('0x59')]=_0xe9ae15;_0x4827d4[_0x6bbb('0x18')]=_0x4827d4[_0x6bbb('0x5a')];_0x4827d4[_0x6bbb('0x5b')]=_0x4827d4[_0x6bbb('0x46')];if(_0x25d27b){_0x4827d4['mandatoryDisposition']=_0x25d27b['mandatoryDisposition'];}return _0x4827d4;};exports[_0x6bbb('0x5c')]=function(_0x327cc1){var _0xc36369={};_0xc36369[_0x6bbb('0x5a')]=_0x327cc1['queue'];_0xc36369[_0x6bbb('0x5b')]=_0x327cc1['channelAgent'];_0xc36369['uniqueid']=_0x327cc1[_0x6bbb('0x44')];return _0xc36369;};exports['agentReadyId']=function(_0x2e942c){var _0x4dffbe=[];for(var _0x2b052b in _0x2e942c){if(_0x2e942c[_0x6bbb('0x29')](_0x2b052b)){if(!_[_0x6bbb('0x16')](_0x2e942c[_0x2b052b])&&_0x2e942c[_0x2b052b]['state']===_0x6bbb('0x5d')&&_0x2e942c[_0x2b052b][_0x6bbb('0x5e')]==='reachable'){_0x4dffbe['push'](_0x2e942c[_0x2b052b]['id']);}}}return _0x4dffbe;};exports[_0x6bbb('0x5f')]=function(_0x391e47){var _0x4ab27b=moment()[_0x6bbb('0x6')](0x0);var _0x36b9b0=moment(_0x391e47)[_0x6bbb('0x6')](0x0);return _0x4ab27b['diff'](_0x36b9b0,_0x6bbb('0x8'));};exports[_0x6bbb('0x60')]=function(_0x4563fe){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x4563fe[_0x6bbb('0x1a')],'ListId':_0x4563fe['ListId'],'VoiceQueueId':_0x4563fe[_0x6bbb('0x1c')]||undefined,'CampaignId':_0x4563fe['CampaignId']||undefined};};exports['filterKey']=function(_0x2f046e){if(_0x2f046e==='uniqueid'||_0x2f046e===_0x6bbb('0x61')||_0x2f046e===_0x6bbb('0x5a')||_0x2f046e===_0x6bbb('0x62')||_0x2f046e===_0x6bbb('0x63')||_0x2f046e===_0x6bbb('0x64')||_0x2f046e==='membername'||_0x2f046e===_0x6bbb('0x46')||_0x2f046e===_0x6bbb('0x19')||_0x2f046e===_0x6bbb('0x51')||_0x2f046e===_0x6bbb('0x47')||_0x2f046e===_0x6bbb('0x65')||_0x2f046e===_0x6bbb('0x4b')||_0x2f046e===_0x6bbb('0x4c')||_0x2f046e===_0x6bbb('0x66')||_0x2f046e===_0x6bbb('0x67')||_0x2f046e===_0x6bbb('0x68')||_0x2f046e===_0x6bbb('0x69')||_0x2f046e===_0x6bbb('0x6a')||_0x2f046e===_0x6bbb('0x6b')||_0x2f046e===_0x6bbb('0x1a')||_0x2f046e===_0x6bbb('0x54')||_0x2f046e===_0x6bbb('0x6c')||_0x2f046e===_0x6bbb('0x1c')||_0x2f046e===_0x6bbb('0x6d')||_0x2f046e===_0x6bbb('0x6e')||_0x2f046e===_0x6bbb('0x6f')||_0x2f046e==='xmd-phone'||_0x2f046e===_0x6bbb('0x70')||_0x2f046e===_0x6bbb('0x71')||_0x2f046e==='xmd-dialtimeout'||_0x2f046e===_0x6bbb('0x72')||_0x2f046e==='xmd-dialid'||_0x2f046e===_0x6bbb('0x73')||_0x2f046e===_0x6bbb('0x74')||_0x2f046e===_0x6bbb('0x75')||_0x2f046e===_0x6bbb('0x76')||_0x2f046e==='xmd-agiafter'||_0x2f046e===_0x6bbb('0x77')||_0x2f046e===_0x6bbb('0x78')||_0x2f046e===_0x6bbb('0x79')||_0x2f046e===_0x6bbb('0x7a')||_0x2f046e===_0x6bbb('0x7b')||_0x2f046e===_0x6bbb('0x7c')||_0x2f046e===_0x6bbb('0x7d')||_0x2f046e===_0x6bbb('0x7e')||_0x2f046e==='rtpaudioqosrttbridged'||_0x2f046e===_0x6bbb('0x78')||_0x2f046e===_0x6bbb('0x79')||_0x2f046e===_0x6bbb('0x7a')||_0x2f046e===_0x6bbb('0x7b')||_0x2f046e==='rtpaudioqosloss'||_0x2f046e===_0x6bbb('0x7d')||_0x2f046e==='rtpaudioqosrtt'||_0x2f046e==='rtpaudioqosrttbridged'||_0x2f046e===_0x6bbb('0x7f')||_0x2f046e===_0x6bbb('0x80')||_0x2f046e===_0x6bbb('0x35')||_0x2f046e==='statedesc'){return![];}return!![];};exports[_0x6bbb('0x81')]=function(_0x20ac0c,_0x1021ac){var _0x3a62ff,_0x18ec1c,_0x7f6cbf;if(_0x1021ac<=0x0){_0x1021ac=0x1;}_0x3a62ff=new RegExp(_0x6bbb('0x82')+_0x1021ac+'}$');_0x18ec1c=Math[_0x6bbb('0x83')](0xa,_0x1021ac-0x1);_0x7f6cbf=Math[_0x6bbb('0x83')](0xa,_0x1021ac)-0x1;return util[_0x6bbb('0x12')]('%s',_[_0x6bbb('0x84')](_0x20ac0c,_0x3a62ff,_[_0x6bbb('0x85')](_0x18ec1c,_0x7f6cbf)));};exports[_0x6bbb('0x86')]=function(_0x40dd31){var _0x1adb5e=_0x40dd31[_0x6bbb('0x87')](/"(.*?)"/);return _0x1adb5e?_0x1adb5e[0x1]:_0x40dd31;};exports[_0x6bbb('0x88')]=function(_0x24d3da){var _0xfd7f1b=_0x24d3da[_0x6bbb('0x87')](/<(.*?)>/);return _0xfd7f1b?_0xfd7f1b[0x1]:_0x24d3da;};
\ No newline at end of file
+var _0x34ed=['xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosloss','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','random','match','extractCalleridNumber','util','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','loggerCatch','inspect','logger','info','loggerError','message','getCallerId','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','isActive','Queue','name','calleridnum','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','createdAt','updatedAt','XMD-','toUpper','toLowerVariables','toLower','isNil','originated','error','[updateOriginated]\x20object\x20originated\x20is\x20negative','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','membername','logCustomer','talktime','answertime','Failure','RECALL','BOOKED','originate','channelAgent','from-sip','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','clone','scheduledAt','active','scheduledat','add','minutes','ContactId','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','interface','motionChannel','mandatoryDisposition','buildAcw','queue','uniqueid','agentReadyId','not_inuse','status','push','getDiff','seconds','createBody','filterKey','idContact','type','calleridname','countnoanswerretry','countglobal','callback','callbackuniqueid','recallme','xmd-voicequeueid','xmd-phone','xmd-listid'];(function(_0x439415,_0x1019ae){var _0x149999=function(_0x57f8eb){while(--_0x57f8eb){_0x439415['push'](_0x439415['shift']());}};_0x149999(++_0x1019ae);}(_0x34ed,0xa0));var _0xd34e=function(_0x221b8c,_0x2c7afc){_0x221b8c=_0x221b8c-0x0;var _0x3fab9f=_0x34ed[_0x221b8c];return _0x3fab9f;};'use strict';var util=require(_0xd34e('0x0'));var _=require('lodash');var moment=require(_0xd34e('0x1'));var logger=require(_0xd34e('0x2'))(_0xd34e('0x3'));var ipAgi=process[_0xd34e('0x4')][_0xd34e('0x5')]||_0xd34e('0x6');function getSeconds(_0x40ae9f,_0x2bfc03){var _0x186771=moment(_0x40ae9f)[_0xd34e('0x7')](0x0);var _0x3f15d1=moment(_0x2bfc03)[_0xd34e('0x7')](0x0);return _0x186771[_0xd34e('0x8')](_0x3f15d1,'seconds');}exports[_0xd34e('0x9')]=function(_0x1a620b){return function(_0x1311aa){logger['error'](_0x1a620b,util[_0xd34e('0xa')](_0x1311aa,{'showHidden':![],'depth':null}));};};exports[_0xd34e('0xb')]=function(_0x5ec251,_0x7cafed){logger[_0xd34e('0xc')](_0x5ec251,util[_0xd34e('0xa')](_0x7cafed,{'showHidden':![],'depth':null}));};exports[_0xd34e('0xd')]=function(_0x1d4135,_0x492942){logger['error'](_0x1d4135,util['inspect'](_0x492942,{'showHidden':![],'depth':null}));};exports['logger2']=function(_0x22549d){return function(_0x2bd9b4){logger['info'](_0x22549d,util[_0xd34e('0xa')](_0x2bd9b4,{'showHidden':![],'depth':null}));};};exports[_0xd34e('0xe')]=function(_0x5acd24,_0x418b99,_0x33ec37){return{'message':_0x5acd24,'unlock':_0x418b99,'active':_0x33ec37};};exports[_0xd34e('0xf')]=function(_0x6e959a,_0x19fe70,_0x12a6d1){if(!_[_0xd34e('0x10')](_0x12a6d1)&&_0xd34e('0x11')===typeof _0x12a6d1&&!_[_0xd34e('0x12')](_0x12a6d1)){if(!_[_0xd34e('0x10')](_0x19fe70)&&_0xd34e('0x11')===typeof _0x19fe70&&!_[_0xd34e('0x12')](_0x19fe70)){return util['format'](_0xd34e('0x13'),_0x19fe70,_0x12a6d1);}return util[_0xd34e('0x14')](_0xd34e('0x13'),_0x12a6d1,_0x12a6d1);}if(!_[_0xd34e('0x10')](_0x6e959a)&&_0xd34e('0x11')===typeof _0x6e959a&&!_['isEmpty'](_0x6e959a)){return _0x6e959a;}return _0xd34e('0x15');};exports[_0xd34e('0x16')]=function(_0x401835){if(_['isNil'](_0x401835)){return![];}return _0x401835;};exports['addVariables']=function(_0xef6862,_0x137c3b,_0x26ad1d,_0x3d6882,_0x3f03f1,_0x4933e8){var _0x217a8e={'XMD-QUEUE':_0x137c3b[_0xd34e('0x17')]?_0x137c3b[_0xd34e('0x17')][_0xd34e('0x18')]:'','XMD-CALLERID':_0x3d6882,'XMD-CALLERID-PREVIEW':_0x4933e8?util[_0xd34e('0x14')](_0xd34e('0x13'),_0x4933e8['calleridname'],_0x4933e8[_0xd34e('0x19')]):_0x3d6882,'XMD-DIALID':_0x3f03f1,'XMD-CONTACTID':_0x137c3b['ContactId'],'XMD-CDRTYPE':_0xd34e('0x1a'),'CALLERID(all)':_0x3d6882,'XMD-VOICEQUEUEID':_0x137c3b[_0xd34e('0x1b')],'XMD-DIALCHANNEL':_0x26ad1d,'XMD-DIALTIMEOUT':_0xef6862[_0xd34e('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0xd34e('0x14')](_0xd34e('0x1d'),_0xef6862[_0xd34e('0x1e')]?'g':'',_['isEmpty'](_0xef6862[_0xd34e('0x1f')])?'':_0xd34e('0x20')),'XMD-DIALURL':_0xef6862[_0xd34e('0x21')]||'','XMD-AGI':_0xef6862[_0xd34e('0x22')]?util[_0xd34e('0x14')](_0xd34e('0x23'),ipAgi,_0xef6862[_0xd34e('0x22')]):_0xd34e('0x24'),'XMD-AGIAFTER':_0xef6862[_0xd34e('0x1e')]?util['format'](_0xd34e('0x23'),ipAgi,_0xef6862['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x4933e8?_0x4933e8[_0xd34e('0x25')]:'','XMD-ORIGINATECALLERIDNAME':_0x4933e8?_0x4933e8[_0xd34e('0x26')]:'','XMD-DESTINATION':_0xd34e('0x27')};if(!_[_0xd34e('0x12')](_0xef6862[_0xd34e('0x1f')])){_0x217a8e[util[_0xd34e('0x14')]('%s',_0xd34e('0x28'))]=_0xef6862[_0xd34e('0x1f')];_0x217a8e[util[_0xd34e('0x14')]('%s',_0xd34e('0x29'))]=_0x3f03f1;}if(_0x137c3b&&_0x137c3b[_0xd34e('0x2a')]){for(var _0x3703ab in _0x137c3b[_0xd34e('0x2a')]){if(_0x137c3b[_0xd34e('0x2a')][_0xd34e('0x2b')](_0x3703ab)){if(!_['isNil'](_0x137c3b['Contact'][_0x3703ab])&&_0x3703ab!=='id'&&_0x3703ab!=='tags'&&_0x3703ab!==_0xd34e('0x2c')&&_0x3703ab!==_0xd34e('0x2d')){_0x217a8e[util['format']('%s%s',_0xd34e('0x2e'),_[_0xd34e('0x2f')](_0x3703ab))]=_0x137c3b['Contact'][_0x3703ab];}}}}return _0x217a8e;};exports[_0xd34e('0x30')]=function(_0xa4870d){var _0x165c95={};for(var _0x4dd40b in _0xa4870d){if(_0xa4870d[_0xd34e('0x2b')](_0x4dd40b)){_0x165c95[util[_0xd34e('0x14')]('%s',_[_0xd34e('0x31')](_0x4dd40b))]=_0xa4870d[_0x4dd40b];}}return{'variables':_0x165c95};};exports['updateOriginated']=function(_0x428609,_0x4b2cbc){if(!_[_0xd34e('0x32')](_0x428609)){if(_0x428609['hasOwnProperty'](_0xd34e('0x33'))){if(_0x428609[_0xd34e('0x33')]>0x0){_0x428609[_0xd34e('0x33')]-=0x1;}else{logger[_0xd34e('0x34')](_0xd34e('0x35'),_0x4b2cbc);}}}else{logger[_0xd34e('0x34')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x4b2cbc);}};exports['logBlacklist']=function(_0x18c524){var _0x12ec15=moment()[_0xd34e('0x14')](_0xd34e('0x36'));_0x18c524[_0xd34e('0x37')]=0xd;_0x18c524[_0xd34e('0x38')]=_0xd34e('0x39');_0x18c524[_0xd34e('0x3a')]=_0x12ec15;_0x18c524[_0xd34e('0x3b')]=_0x12ec15;_0x18c524[_0xd34e('0x3c')]=_0x12ec15;};exports[_0xd34e('0x3d')]=function(_0x497842,_0xeab1df,_0x2697c4){var _0x588efc=moment()['format'](_0xd34e('0x36'));_0x497842['state']=_0xeab1df;_0x497842[_0xd34e('0x38')]=_0x2697c4;_0x497842[_0xd34e('0x3b')]=_0x588efc;_0x497842[_0xd34e('0x3e')]=getSeconds(_0x497842[_0xd34e('0x3b')],_0x497842[_0xd34e('0x3a')]);};exports['logLookAgent']=function(_0x2e5438,_0x394d75,_0x542fee){_0x2e5438[_0xd34e('0x3f')]=_0x394d75;_0x2e5438['UserId']=_0x542fee;};exports[_0xd34e('0x40')]=function(_0x1c50f0,_0x2e5b9b,_0x2d8c42){var _0x43bf38=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x1c50f0[_0xd34e('0x37')]=_0x2e5b9b;_0x1c50f0['statedesc']=_0x2d8c42;_0x1c50f0[_0xd34e('0x3b')]=_0x1c50f0[_0xd34e('0x3b')]?_0x1c50f0[_0xd34e('0x3b')]:_0x43bf38;_0x1c50f0['endtime']=_0x1c50f0[_0xd34e('0x3c')]?_0x1c50f0['endtime']:_0x43bf38;_0x1c50f0[_0xd34e('0x3e')]=getSeconds(_0x1c50f0[_0xd34e('0x3b')]||0x0,_0x1c50f0[_0xd34e('0x3a')]||0x0);_0x1c50f0[_0xd34e('0x41')]=_0x1c50f0['answertime']?getSeconds(_0x1c50f0[_0xd34e('0x3c')],_0x1c50f0[_0xd34e('0x42')]):0x0;};exports['isFailure']=function(_0x4bdee4){return _0x4bdee4===_0xd34e('0x43');};exports['variablesAction']=function(_0x1578c4,_0x471d32,_0x2aab90,_0x1284bb,_0x5c8101){var _0x76a975=_0x1284bb?_0xd34e('0x44'):_0x1578c4['calleridname'];_0x76a975=_0x5c8101?_0xd34e('0x45'):_0x76a975;return{'actionid':_0x1578c4['uniqueid'],'action':_0xd34e('0x46'),'channel':_0x1578c4[_0xd34e('0x47')],'callerid':util[_0xd34e('0x14')]('\x22%s\x22\x20<%s>',_0x76a975,_0x1578c4[_0xd34e('0x19')]),'Exten':_0xd34e('0x27'),'Context':_0xd34e('0x48'),'Priority':'1','variable':_0x2aab90,'timeout':(_0x471d32['timeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x1578c4['uniqueid']};};exports['totalGlobal']=function(_0x151db1){return _0x151db1[_0xd34e('0x49')]+_0x151db1[_0xd34e('0x4a')]+_0x151db1['countnoanswerretry']+_0x151db1[_0xd34e('0x4b')]+_0x151db1[_0xd34e('0x4c')];};exports['cloneAction']=function(_0x60ebb5){var _0x44a8d0=_[_0xd34e('0x4d')](_0x60ebb5);_0x44a8d0[_0xd34e('0x37')]=0xf;_0x44a8d0['statedesc']='Global';return _0x44a8d0;};exports[_0xd34e('0x4e')]=function(_0x854726,_0x48ec61,_0x1bc7e8){var _0x3da261={};_0x3da261[_0x48ec61]=_0x854726[_0x48ec61];_0x3da261[_0xd34e('0x4f')]=![];_0x3da261[_0xd34e('0x50')]=moment()[_0xd34e('0x51')](_0x1bc7e8,_0xd34e('0x52'))[_0xd34e('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x3da261[_0xd34e('0x53')]=_0x854726['ContactId'];_0x3da261[_0xd34e('0x54')]=_0x854726['ListId'];_0x3da261['VoiceQueueId']=_0x854726[_0xd34e('0x1b')]||undefined;return _0x3da261;};exports[_0xd34e('0x55')]=function(_0x93199b,_0x535d5e){if(!_[_0xd34e('0x32')](_0x93199b)){if(_0x93199b[_0xd34e('0x56')]>0x0){_0x93199b[_0xd34e('0x56')]-=0x1;}else{logger['error'](_0x535d5e,_0xd34e('0x57'));}}else{logger['error'](_0x535d5e,_0xd34e('0x58'));}};exports[_0xd34e('0x59')]=function(_0x11e235){if(_0x11e235<=0x0){return!![];}return![];};exports['buildObj']=function(_0xd5da90,_0x1a2369,_0x3812d8){_0xd5da90[_0xd34e('0x5a')]=_0x1a2369;_0xd5da90['name']=_0xd5da90['queue'];_0xd5da90[_0xd34e('0x5b')]=_0xd5da90['channelAgent'];_0xd5da90[_0xd34e('0x5c')]='voice';if(_0x3812d8){_0xd5da90[_0xd34e('0x5d')]=_0x3812d8[_0xd34e('0x5d')];}return _0xd5da90;};exports[_0xd34e('0x5e')]=function(_0x4668a9){var _0x22fd25={};_0x22fd25[_0xd34e('0x5f')]=_0x4668a9[_0xd34e('0x5f')];_0x22fd25[_0xd34e('0x5b')]=_0x4668a9[_0xd34e('0x47')];_0x22fd25[_0xd34e('0x60')]=_0x4668a9[_0xd34e('0x60')];return _0x22fd25;};exports[_0xd34e('0x61')]=function(_0x320faf){var _0x250cef=[];for(var _0x30a8f8 in _0x320faf){if(_0x320faf[_0xd34e('0x2b')](_0x30a8f8)){if(!_[_0xd34e('0x32')](_0x320faf[_0x30a8f8])&&_0x320faf[_0x30a8f8][_0xd34e('0x37')]===_0xd34e('0x62')&&_0x320faf[_0x30a8f8][_0xd34e('0x63')]==='reachable'){_0x250cef[_0xd34e('0x64')](_0x320faf[_0x30a8f8]['id']);}}}return _0x250cef;};exports[_0xd34e('0x65')]=function(_0x5ab795){var _0x59a046=moment()[_0xd34e('0x7')](0x0);var _0x2c1af0=moment(_0x5ab795)[_0xd34e('0x7')](0x0);return _0x59a046[_0xd34e('0x8')](_0x2c1af0,_0xd34e('0x66'));};exports[_0xd34e('0x67')]=function(_0x3b2aeb){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3b2aeb[_0xd34e('0x53')],'ListId':_0x3b2aeb['ListId'],'VoiceQueueId':_0x3b2aeb[_0xd34e('0x1b')]||undefined,'CampaignId':_0x3b2aeb['CampaignId']||undefined};};exports[_0xd34e('0x68')]=function(_0x4e7838){if(_0x4e7838===_0xd34e('0x60')||_0x4e7838===_0xd34e('0x69')||_0x4e7838===_0xd34e('0x5f')||_0x4e7838===_0xd34e('0x6a')||_0x4e7838==='campaigntype'||_0x4e7838==='dialAnswer'||_0x4e7838===_0xd34e('0x3f')||_0x4e7838===_0xd34e('0x47')||_0x4e7838===_0xd34e('0x6b')||_0x4e7838===_0xd34e('0x4f')||_0x4e7838===_0xd34e('0x19')||_0x4e7838===_0xd34e('0x50')||_0x4e7838===_0xd34e('0x49')||_0x4e7838===_0xd34e('0x4a')||_0x4e7838===_0xd34e('0x6c')||_0x4e7838===_0xd34e('0x6d')||_0x4e7838===_0xd34e('0x6e')||_0x4e7838===_0xd34e('0x6f')||_0x4e7838==='callbackat'||_0x4e7838===_0xd34e('0x70')||_0x4e7838==='ContactId'||_0x4e7838===_0xd34e('0x54')||_0x4e7838==='UserId'||_0x4e7838===_0xd34e('0x1b')||_0x4e7838==='sipcallid'||_0x4e7838===_0xd34e('0x71')||_0x4e7838==='xmd-queue'||_0x4e7838===_0xd34e('0x72')||_0x4e7838===_0xd34e('0x73')||_0x4e7838==='xmd-dialurl'||_0x4e7838===_0xd34e('0x74')||_0x4e7838===_0xd34e('0x75')||_0x4e7838===_0xd34e('0x76')||_0x4e7838===_0xd34e('0x77')||_0x4e7838==='xmd-contactid'||_0x4e7838===_0xd34e('0x78')||_0x4e7838===_0xd34e('0x79')||_0x4e7838===_0xd34e('0x7a')||_0x4e7838===_0xd34e('0x7b')||_0x4e7838===_0xd34e('0x7c')||_0x4e7838===_0xd34e('0x7d')||_0x4e7838===_0xd34e('0x7e')||_0x4e7838===_0xd34e('0x7f')||_0x4e7838==='rtpaudioqosloss'||_0x4e7838===_0xd34e('0x80')||_0x4e7838===_0xd34e('0x81')||_0x4e7838===_0xd34e('0x82')||_0x4e7838===_0xd34e('0x7c')||_0x4e7838===_0xd34e('0x7d')||_0x4e7838==='rtpaudioqosjitter'||_0x4e7838===_0xd34e('0x7f')||_0x4e7838===_0xd34e('0x83')||_0x4e7838===_0xd34e('0x80')||_0x4e7838===_0xd34e('0x81')||_0x4e7838===_0xd34e('0x82')||_0x4e7838==='bridgepeer'||_0x4e7838===_0xd34e('0x84')||_0x4e7838===_0xd34e('0x37')||_0x4e7838===_0xd34e('0x38')){return![];}return!![];};exports[_0xd34e('0x85')]=function(_0x39c84a,_0x217ec8){var _0x36a9ac,_0x35d48c,_0x6b6913;if(_0x217ec8<=0x0){_0x217ec8=0x1;}_0x36a9ac=new RegExp(_0xd34e('0x86')+_0x217ec8+'}$');_0x35d48c=Math['pow'](0xa,_0x217ec8-0x1);_0x6b6913=Math['pow'](0xa,_0x217ec8)-0x1;return util['format']('%s',_['replace'](_0x39c84a,_0x36a9ac,_[_0xd34e('0x87')](_0x35d48c,_0x6b6913)));};exports['extractCalleridName']=function(_0x106693){var _0x2fb3c6=_0x106693[_0xd34e('0x88')](/"(.*?)"/);return _0x2fb3c6?_0x2fb3c6[0x1]:_0x106693;};exports[_0xd34e('0x89')]=function(_0x4877eb){var _0x3dc162=_0x4877eb[_0xd34e('0x88')](/<(.*?)>/);return _0x3dc162?_0x3dc162[0x1]:_0x4877eb;};
\ No newline at end of file
index ccad25f..8b9b2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b09=['queueadd','string','number','boolean','queueremove','queuepause','reload','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect'];(function(_0x445f97,_0x5bc5cc){var _0x5b27fb=function(_0x3facdf){while(--_0x3facdf){_0x445f97['push'](_0x445f97['shift']());}};_0x5b27fb(++_0x5bc5cc);}(_0x2b09,0x1ae));var _0x92b0=function(_0x35909b,_0x38afd9){_0x35909b=_0x35909b-0x0;var _0x1d9022=_0x2b09[_0x35909b];return _0x1d9022;};'use strict';exports[_0x92b0('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0x92b0('0x1'),'required':!![]},'penalty':{'type':_0x92b0('0x2'),'required':![]},'paused':{'type':_0x92b0('0x3'),'required':![]}};exports[_0x92b0('0x4')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x92b0('0x1'),'required':!![]}};exports[_0x92b0('0x5')]={'interface':{'type':_0x92b0('0x1'),'required':!![]},'paused':{'type':_0x92b0('0x3')},'reason':{'type':_0x92b0('0x1'),'required':![]}};exports[_0x92b0('0x6')]={'module':{'type':'string','required':![]}};exports[_0x92b0('0x7')]={'uniqueid':{'type':_0x92b0('0x1'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x92b0('0x1')},'format':{'type':_0x92b0('0x1')},'mixmonitorid':{'type':'string'}};exports[_0x92b0('0x8')]={'uniqueid':{'type':_0x92b0('0x1'),'required':!![]}};exports[_0x92b0('0x9')]={'uniqueid':{'type':_0x92b0('0x1'),'required':!![]},'exten':{'type':_0x92b0('0x1'),'required':!![]},'context':{'type':_0x92b0('0x1')}};
\ No newline at end of file
+var _0x256a=['voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','queueadd','string','queueremove','queuepause','boolean','reload','voicequeuechannel'];(function(_0x252851,_0x1a7f34){var _0x49d6b1=function(_0x4720c1){while(--_0x4720c1){_0x252851['push'](_0x252851['shift']());}};_0x49d6b1(++_0x1a7f34);}(_0x256a,0x1b1));var _0xa256=function(_0x2e7fd0,_0x483b30){_0x2e7fd0=_0x2e7fd0-0x0;var _0x2fc533=_0x256a[_0x2e7fd0];return _0x2fc533;};'use strict';exports[_0xa256('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':_0xa256('0x1'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports[_0xa256('0x2')]={'queue':{'type':_0xa256('0x1'),'required':!![]},'interface':{'type':_0xa256('0x1'),'required':!![]}};exports[_0xa256('0x3')]={'interface':{'type':_0xa256('0x1'),'required':!![]},'paused':{'type':_0xa256('0x4')},'reason':{'type':_0xa256('0x1'),'required':![]}};exports[_0xa256('0x5')]={'module':{'type':_0xa256('0x1'),'required':![]}};exports[_0xa256('0x6')]={'uniqueid':{'type':_0xa256('0x1'),'required':!![]}};exports[_0xa256('0x7')]={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0xa256('0x1')},'format':{'type':_0xa256('0x1')},'mixmonitorid':{'type':'string'}};exports[_0xa256('0x8')]={'uniqueid':{'type':_0xa256('0x1'),'required':!![]}};exports[_0xa256('0x9')]={'uniqueid':{'type':_0xa256('0x1'),'required':!![]},'exten':{'type':_0xa256('0x1'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 9748c89..82a2784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc55=['initTriggers','initZendeskAccounts','zendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','queuecallerexit','unmanaged','queuecallerabandon','diff','seconds','queuecallerexitAt','queuecallercompleteAt','queuecallerleaveAt','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','bluebird','util','moment','../model/agent','../model/telephone','../model/trunk','../model/trigger','../model/template','../model/campaign','../model/salesforceAccount','../model/zohoAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','agents','telephones','trunks','voiceQueues','triggers','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','hasOwnProperty','mapKeys','format','SIP/%s','isNil','interface','name','total','answered','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','queueStatusComplete','prototype','mergeFromDatabase','isUndefined','initTelephones','length','initVoiceQueues'];(function(_0x3121cc,_0xd1dbf9){var _0x553b40=function(_0x42ffd0){while(--_0x42ffd0){_0x3121cc['push'](_0x3121cc['shift']());}};_0x553b40(++_0xd1dbf9);}(_0xcc55,0x80));var _0x5cc5=function(_0x2b7ba5,_0x1ccdc8){_0x2b7ba5=_0x2b7ba5-0x0;var _0x2a52f8=_0xcc55[_0x2b7ba5];return _0x2a52f8;};'use strict';var BPromise=require(_0x5cc5('0x0'));var util=require(_0x5cc5('0x1'));var _=require('lodash');var moment=require(_0x5cc5('0x2'));var Agent=require(_0x5cc5('0x3'));var Telephone=require(_0x5cc5('0x4'));var Trunk=require(_0x5cc5('0x5'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x5cc5('0x6'));var Template=require(_0x5cc5('0x7'));var Campaign=require(_0x5cc5('0x8'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require('../model/zendeskAccount');var SalesforceAccount=require(_0x5cc5('0x9'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x5cc5('0xa'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0x5cc5('0xb'));var ServicenowAccount=require(_0x5cc5('0xc'));var Dynamics365Account=require(_0x5cc5('0xd'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0x5cc5('0xe')]={};this[_0x5cc5('0xf')]={};this[_0x5cc5('0x10')]={};this[_0x5cc5('0x11')]={};this[_0x5cc5('0x12')]={};this[_0x5cc5('0x13')]={};this[_0x5cc5('0x14')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x5cc5('0x15')]={};this[_0x5cc5('0x16')]={};this[_0x5cc5('0x17')]={};this[_0x5cc5('0x18')]={};this[_0x5cc5('0x19')]={};this['settings']={};this['zendeskAccounts']={};this[_0x5cc5('0x1a')]={};this[_0x5cc5('0x1b')]={};this[_0x5cc5('0x1c')]={};this[_0x5cc5('0x1d')]={};this[_0x5cc5('0x1e')]={};this[_0x5cc5('0x1f')]={};this[_0x5cc5('0x20')]={};this[_0x5cc5('0x21')]={};this[_0x5cc5('0x22')]={};this[_0x5cc5('0x23')]={};};function freeIsNotKey(_0xd523fb,_0xd22711,_0x3d3e9c){var _0x49dbfc=_['mapKeys'](_0xd523fb,function(_0x2f9bda,_0x5a12e5){return _0x2f9bda[_0x3d3e9c];});for(var _0x5e0bb6 in _0xd22711){if(_0xd22711[_0x5cc5('0x24')](_0x5e0bb6)){if(!_0x49dbfc[_0x5e0bb6]){delete _0xd22711[_0x5e0bb6];}}}}function freeIsNotKeySip(_0x1a5322,_0x1f44ab){var _0x23650d=_[_0x5cc5('0x25')](_0x1a5322,function(_0xb2c116,_0x2887ab){return util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0xb2c116['name']);});for(var _0x520724 in _0x1f44ab){if(_0x1f44ab[_0x5cc5('0x24')](_0x520724)){if(!_0x23650d[_0x520724]){delete _0x1f44ab[_0x520724];}}}}function freeIsNotKeyAgent(_0x17b0d9,_0x388b8e){var _0x3d570f=_[_0x5cc5('0x25')](_0x17b0d9,function(_0x27f1a1,_0x18cac3){var _0x1a6a64=_[_0x5cc5('0x28')](_0x27f1a1[_0x5cc5('0x29')])?util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0x27f1a1[_0x5cc5('0x2a')]):_0x27f1a1['interface'];return _0x1a6a64;});for(var _0x3a6508 in _0x388b8e){if(_0x388b8e[_0x5cc5('0x24')](_0x3a6508)){if(!_0x3d570f[_0x3a6508]){delete _0x388b8e[_0x3a6508];}}}}function clearVoiceCallReports(_0x39156b){_0x39156b[_0x5cc5('0x2b')]=0x0;_0x39156b[_0x5cc5('0x2c')]=0x0;_0x39156b['sumHoldTime']=0x0;_0x39156b[_0x5cc5('0x2d')]=0x0;_0x39156b[_0x5cc5('0x2e')]=0x0;}function clearCampaigns(_0x25f280){if(!_[_0x5cc5('0x2f')](_0x25f280)){for(var _0x40fde9 in _0x25f280){if(_0x25f280[_0x5cc5('0x24')](_0x40fde9)){_0x25f280[_0x40fde9][_0x5cc5('0x30')]=0x0;_0x25f280[_0x40fde9]['ivrAnswerCallsDay']=0x0;}}}}function clearVoiceQueues(_0x3142fe){if(!_[_0x5cc5('0x2f')](_0x3142fe)){for(var _0x3da093 in _0x3142fe){if(_0x3142fe[_0x5cc5('0x24')](_0x3da093)){_0x3142fe[_0x3da093][_0x5cc5('0x2b')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x2c')]=0x0;_0x3142fe[_0x3da093]['unmanaged']=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x31')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x32')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x2d')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x2e')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x33')]=0x0;_0x3142fe[_0x3da093]['outboundNoAnswerCallsDay']=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x34')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x35')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x36')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x37')]=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x38')]=0x0;_0x3142fe[_0x3da093]['outboundDropCallsDayCallersExit']=0x0;_0x3142fe[_0x3da093]['outboundBlacklistCallsDay']=0x0;_0x3142fe[_0x3da093]['outboundOriginateFailureCallsDay']=0x0;_0x3142fe[_0x3da093]['outboundRejectCallsDay']=0x0;_0x3142fe[_0x3da093]['outboundReCallsDay']=0x0;_0x3142fe[_0x3da093]['outboundAnswerAgiCallsDay']=0x0;_0x3142fe[_0x3da093]['outboundAnswerCallsDay']=0x0;_0x3142fe[_0x3da093][_0x5cc5('0x39')]=!![];}}}}Realtime[_0x5cc5('0x3a')][_0x5cc5('0x3b')]=function(_0x18112b,_0x31a47b){for(var _0x4fb7ad in _0x31a47b){if(_0x18112b[_0x5cc5('0x24')](_0x4fb7ad)){_0x18112b[_0x4fb7ad]=_0x31a47b[_0x4fb7ad];}}};Realtime[_0x5cc5('0x3a')]['initAgents']=function(){var _0x1900aa=this;return function(_0x444ff5){if(_0x444ff5){freeIsNotKeyAgent(_0x444ff5,_0x1900aa[_0x5cc5('0xe')]);for(var _0x2a7bf9=0x0,_0x449929={},_0x2d07bc={};_0x2a7bf9<_0x444ff5['length'];_0x2a7bf9+=0x1){_0x449929=_0x444ff5[_0x2a7bf9];var _0x281dfe=_['isNil'](_0x449929[_0x5cc5('0x29')])?util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0x449929['name']):_0x449929[_0x5cc5('0x29')];if(_[_0x5cc5('0x3c')](_0x1900aa['agents'][_0x281dfe])){_0x1900aa['agents'][_0x281dfe]=new Agent(_0x449929);}else{_0x1900aa['mergeFromDatabase'](_0x1900aa[_0x5cc5('0xe')][_0x281dfe],_0x449929);}}}return _0x1900aa[_0x5cc5('0xe')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x3d')]=function(){var _0x100a66=this;return function(_0x462ebc){if(_0x462ebc){freeIsNotKeySip(_0x462ebc,_0x100a66[_0x5cc5('0xf')]);for(var _0x43a2f6=0x0,_0x9a0155={},_0x59ed60={};_0x43a2f6<_0x462ebc[_0x5cc5('0x3e')];_0x43a2f6+=0x1){_0x9a0155=_0x462ebc[_0x43a2f6];if(_[_0x5cc5('0x3c')](_0x100a66['telephones'][util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0x9a0155[_0x5cc5('0x2a')])])){_0x100a66[_0x5cc5('0xf')][util['format'](_0x5cc5('0x27'),_0x9a0155['name'])]=new Telephone(_0x9a0155);}else{_0x100a66['mergeFromDatabase'](_0x100a66[_0x5cc5('0xf')][util[_0x5cc5('0x26')]('SIP/%s',_0x9a0155[_0x5cc5('0x2a')])],_0x9a0155);}}}return _0x100a66[_0x5cc5('0xf')];};};Realtime[_0x5cc5('0x3a')]['initTrunks']=function(){var _0x35dcd7=this;return function(_0x240f2c){if(_0x240f2c){freeIsNotKeySip(_0x240f2c,_0x35dcd7[_0x5cc5('0x10')]);for(var _0x3239de=0x0,_0x2929a0={},_0x6e29c6={};_0x3239de<_0x240f2c[_0x5cc5('0x3e')];_0x3239de+=0x1){_0x2929a0=_0x240f2c[_0x3239de];if(_[_0x5cc5('0x3c')](_0x35dcd7[_0x5cc5('0x10')][util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0x2929a0['name'])])){_0x35dcd7[_0x5cc5('0x10')][util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0x2929a0[_0x5cc5('0x2a')])]=new Trunk(_0x2929a0);}else{_0x35dcd7['mergeFromDatabase'](_0x35dcd7[_0x5cc5('0x10')][util[_0x5cc5('0x26')](_0x5cc5('0x27'),_0x2929a0[_0x5cc5('0x2a')])],_0x2929a0);}}}return _0x35dcd7[_0x5cc5('0x10')];};};Realtime['prototype'][_0x5cc5('0x3f')]=function(){var _0x18d986=this;return function(_0x2c319f){if(_0x2c319f){freeIsNotKey(_0x2c319f,_0x18d986[_0x5cc5('0x11')],_0x5cc5('0x2a'));for(var _0x592577=0x0,_0x5f2acc={},_0x1dd92b={};_0x592577<_0x2c319f[_0x5cc5('0x3e')];_0x592577+=0x1){_0x5f2acc=_0x2c319f[_0x592577];if(_['isUndefined'](_0x18d986[_0x5cc5('0x11')][_0x5f2acc[_0x5cc5('0x2a')]])){_0x18d986[_0x5cc5('0x11')][_0x5f2acc[_0x5cc5('0x2a')]]=new VoiceQueue(_0x5f2acc);}else{_0x18d986[_0x5cc5('0x3b')](_0x18d986['voiceQueues'][_0x5f2acc[_0x5cc5('0x2a')]],_0x5f2acc);}}}return _0x18d986[_0x5cc5('0x11')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x40')]=function(){var _0x1cb796=this;return function(_0x41a468){if(_0x41a468){freeIsNotKey(_0x41a468,_0x1cb796[_0x5cc5('0x12')],'id');for(var _0x5b6c61=0x0,_0x11a51e={},_0x1406cb={};_0x5b6c61<_0x41a468[_0x5cc5('0x3e')];_0x5b6c61+=0x1){_0x11a51e=_0x41a468[_0x5b6c61];if(_[_0x5cc5('0x3c')](_0x1cb796[_0x5cc5('0x12')][_0x11a51e['id']])){_0x1cb796[_0x5cc5('0x12')][_0x11a51e['id']]=new Trigger(_0x11a51e);}else{_0x1cb796[_0x5cc5('0x3b')](_0x1cb796['triggers'][_0x11a51e['id']],_0x11a51e);}}}return _0x1cb796[_0x5cc5('0x12')];};};Realtime[_0x5cc5('0x3a')]['initTemplates']=function(){var _0x3d0cca=this;return function(_0x2b155d){if(_0x2b155d){freeIsNotKey(_0x2b155d,_0x3d0cca[_0x5cc5('0x14')],'id');for(var _0x22b695=0x0,_0x49668f={},_0x8b7c1f={};_0x22b695<_0x2b155d['length'];_0x22b695+=0x1){_0x49668f=_0x2b155d[_0x22b695];if(_[_0x5cc5('0x3c')](_0x3d0cca[_0x5cc5('0x14')][_0x49668f['id']])){_0x3d0cca['templates'][_0x49668f['id']]=new Template(_0x49668f);}else{_0x3d0cca['mergeFromDatabase'](_0x3d0cca['templates'][_0x49668f['id']],_0x49668f);}}}return _0x3d0cca[_0x5cc5('0x14')];};};Realtime['prototype'][_0x5cc5('0x41')]=function(){var _0x64e6b1=this;return function(_0x7ac494){if(_0x7ac494){freeIsNotKey(_0x7ac494,_0x64e6b1[_0x5cc5('0x42')],'id');for(var _0x451579=0x0,_0x264d46={},_0x44baba={};_0x451579<_0x7ac494['length'];_0x451579+=0x1){_0x264d46=_0x7ac494[_0x451579];if(_['isUndefined'](_0x64e6b1[_0x5cc5('0x42')][_0x264d46['id']])){_0x64e6b1['zendeskAccounts'][_0x264d46['id']]=new ZendeskAccount(_0x264d46);}else{_0x64e6b1[_0x5cc5('0x3b')](_0x64e6b1[_0x5cc5('0x42')][_0x264d46['id']],_0x264d46);}}}return _0x64e6b1['zendeskAccounts'];};};Realtime['prototype'][_0x5cc5('0x43')]=function(){var _0x556d5e=this;return function(_0x1bbe3e){if(_0x1bbe3e){freeIsNotKey(_0x1bbe3e,_0x556d5e[_0x5cc5('0x1a')],'id');for(var _0x3a7919=0x0,_0x3e7a0f={},_0x1d19d9={};_0x3a7919<_0x1bbe3e[_0x5cc5('0x3e')];_0x3a7919+=0x1){_0x3e7a0f=_0x1bbe3e[_0x3a7919];if(_[_0x5cc5('0x3c')](_0x556d5e[_0x5cc5('0x1a')][_0x3e7a0f['id']])){_0x556d5e[_0x5cc5('0x1a')][_0x3e7a0f['id']]=new SalesforceAccount(_0x3e7a0f);}else{_0x556d5e['mergeFromDatabase'](_0x556d5e[_0x5cc5('0x1a')][_0x3e7a0f['id']],_0x3e7a0f);}}}return _0x556d5e[_0x5cc5('0x1a')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x44')]=function(){var _0xae68e6=this;return function(_0x5d9fd3){if(_0x5d9fd3){freeIsNotKey(_0x5d9fd3,_0xae68e6['freshdeskAccounts'],'id');for(var _0x4179ed=0x0,_0x8d0cae={},_0x363508={};_0x4179ed<_0x5d9fd3[_0x5cc5('0x3e')];_0x4179ed+=0x1){_0x8d0cae=_0x5d9fd3[_0x4179ed];if(_[_0x5cc5('0x3c')](_0xae68e6[_0x5cc5('0x1c')][_0x8d0cae['id']])){_0xae68e6[_0x5cc5('0x1c')][_0x8d0cae['id']]=new FreshdeskAccount(_0x8d0cae);}else{_0xae68e6[_0x5cc5('0x3b')](_0xae68e6[_0x5cc5('0x1c')][_0x8d0cae['id']],_0x8d0cae);}}}return _0xae68e6[_0x5cc5('0x1c')];};};Realtime[_0x5cc5('0x3a')]['initZohoAccounts']=function(){var _0x4bcbff=this;return function(_0xe1ffb9){if(_0xe1ffb9){freeIsNotKey(_0xe1ffb9,_0x4bcbff[_0x5cc5('0x1d')],'id');for(var _0x4f12b5=0x0,_0x2c0b12={},_0x54d247={};_0x4f12b5<_0xe1ffb9[_0x5cc5('0x3e')];_0x4f12b5+=0x1){_0x2c0b12=_0xe1ffb9[_0x4f12b5];if(_[_0x5cc5('0x3c')](_0x4bcbff[_0x5cc5('0x1d')][_0x2c0b12['id']])){_0x4bcbff[_0x5cc5('0x1d')][_0x2c0b12['id']]=new ZohoAccount(_0x2c0b12);}else{_0x4bcbff[_0x5cc5('0x3b')](_0x4bcbff[_0x5cc5('0x1d')][_0x2c0b12['id']],_0x2c0b12);}}}return _0x4bcbff[_0x5cc5('0x1d')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x45')]=function(){var _0x568ba0=this;return function(_0xfbb161){if(_0xfbb161){freeIsNotKey(_0xfbb161,_0x568ba0['deskAccounts'],'id');for(var _0x1cedb3=0x0,_0x29f047={},_0x576b8b={};_0x1cedb3<_0xfbb161[_0x5cc5('0x3e')];_0x1cedb3+=0x1){_0x29f047=_0xfbb161[_0x1cedb3];if(_[_0x5cc5('0x3c')](_0x568ba0[_0x5cc5('0x1e')][_0x29f047['id']])){_0x568ba0[_0x5cc5('0x1e')][_0x29f047['id']]=new DeskAccount(_0x29f047);}else{_0x568ba0[_0x5cc5('0x3b')](_0x568ba0[_0x5cc5('0x1e')][_0x29f047['id']],_0x29f047);}}}return _0x568ba0[_0x5cc5('0x1e')];};};Realtime[_0x5cc5('0x3a')]['initSugarcrmAccounts']=function(){var _0x48f72a=this;return function(_0x35ff44){if(_0x35ff44){freeIsNotKey(_0x35ff44,_0x48f72a[_0x5cc5('0x1b')],'id');for(var _0x13806e=0x0,_0x1c0ac8={},_0x5ac990={};_0x13806e<_0x35ff44[_0x5cc5('0x3e')];_0x13806e+=0x1){_0x1c0ac8=_0x35ff44[_0x13806e];if(_[_0x5cc5('0x3c')](_0x48f72a[_0x5cc5('0x1b')][_0x1c0ac8['id']])){_0x48f72a['sugarcrmAccounts'][_0x1c0ac8['id']]=new SugarcrmAccount(_0x1c0ac8);}else{_0x48f72a[_0x5cc5('0x3b')](_0x48f72a['sugarcrmAccounts'][_0x1c0ac8['id']],_0x1c0ac8);}}}return _0x48f72a[_0x5cc5('0x1b')];};};Realtime['prototype']['initVtigerAccounts']=function(){var _0x43a19c=this;return function(_0x1421f1){if(_0x1421f1){freeIsNotKey(_0x1421f1,_0x43a19c[_0x5cc5('0x1f')],'id');for(var _0x40357f=0x0,_0xba15aa={},_0x12bc97={};_0x40357f<_0x1421f1[_0x5cc5('0x3e')];_0x40357f+=0x1){_0xba15aa=_0x1421f1[_0x40357f];if(_[_0x5cc5('0x3c')](_0x43a19c[_0x5cc5('0x1f')][_0xba15aa['id']])){_0x43a19c['vtigerAccounts'][_0xba15aa['id']]=new VtigerAccount(_0xba15aa);}else{_0x43a19c[_0x5cc5('0x3b')](_0x43a19c[_0x5cc5('0x1f')][_0xba15aa['id']],_0xba15aa);}}}return _0x43a19c[_0x5cc5('0x1f')];};};Realtime['prototype'][_0x5cc5('0x46')]=function(){var _0x1397ec=this;return function(_0x1f9747){if(_0x1f9747){freeIsNotKey(_0x1f9747,_0x1397ec[_0x5cc5('0x20')],'id');for(var _0x29e58a=0x0,_0x111fc4={},_0x4a1737={};_0x29e58a<_0x1f9747['length'];_0x29e58a+=0x1){_0x111fc4=_0x1f9747[_0x29e58a];if(_[_0x5cc5('0x3c')](_0x1397ec[_0x5cc5('0x20')][_0x111fc4['id']])){_0x1397ec[_0x5cc5('0x20')][_0x111fc4['id']]=new ServicenowAccount(_0x111fc4);}else{_0x1397ec['mergeFromDatabase'](_0x1397ec[_0x5cc5('0x20')][_0x111fc4['id']],_0x111fc4);}}}return _0x1397ec['servicenowAccounts'];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x47')]=function(){var _0x26e8af=this;return function(_0x5c8506){if(_0x5c8506){freeIsNotKey(_0x5c8506,_0x26e8af[_0x5cc5('0x21')],'id');for(var _0x5cbc45=0x0,_0x3f41a1={},_0x5eadd5={};_0x5cbc45<_0x5c8506['length'];_0x5cbc45+=0x1){_0x3f41a1=_0x5c8506[_0x5cbc45];if(_[_0x5cc5('0x3c')](_0x26e8af[_0x5cc5('0x21')][_0x3f41a1['id']])){_0x26e8af[_0x5cc5('0x21')][_0x3f41a1['id']]=new Dynamics365Account(_0x3f41a1);}else{_0x26e8af[_0x5cc5('0x3b')](_0x26e8af['dynamics365Accounts'][_0x3f41a1['id']],_0x3f41a1);}}}return _0x26e8af[_0x5cc5('0x21')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x48')]=function(){var _0x5a2a91=this;return function(_0x14b890){if(_0x14b890){freeIsNotKey(_0x14b890,_0x5a2a91[_0x5cc5('0x22')],'id');for(var _0xd7c58a=0x0,_0x5ea452={},_0x2167d2={};_0xd7c58a<_0x14b890[_0x5cc5('0x3e')];_0xd7c58a+=0x1){_0x5ea452=_0x14b890[_0xd7c58a];if(_[_0x5cc5('0x3c')](_0x5a2a91[_0x5cc5('0x22')][_0x5ea452['id']])){_0x5a2a91[_0x5cc5('0x22')][_0x5ea452['id']]=new FreshsalesAccount(_0x5ea452);}else{_0x5a2a91[_0x5cc5('0x3b')](_0x5a2a91[_0x5cc5('0x22')][_0x5ea452['id']],_0x5ea452);}}}return _0x5a2a91[_0x5cc5('0x22')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x49')]=function(){var _0x4c9680=this;return function(_0x46ef2b){for(var _0x41af8b=0x0;_0x41af8b<_0x46ef2b[_0x5cc5('0x3e')];_0x41af8b+=0x1){_[_0x5cc5('0x4a')](_0x4c9680[_0x5cc5('0x11')][_0x46ef2b[_0x41af8b][_0x5cc5('0x2a')]],_0x46ef2b[_0x41af8b]);}return _0x4c9680[_0x5cc5('0x11')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x58aae4=this;return function(_0x16c402){clearVoiceQueues(_0x58aae4[_0x5cc5('0x11')]);if(_0x16c402){_0x16c402=_[_0x5cc5('0x4b')](_0x16c402,'uniqueid');for(var _0x765110 in _0x16c402){if(_0x16c402[_0x5cc5('0x24')](_0x765110)){var _0x3417fd={};for(var _0x4c7508=0x0;_0x4c7508<_0x16c402[_0x765110][_0x5cc5('0x3e')];_0x4c7508+=0x1){var _0x43cf03=_0x16c402[_0x765110][_0x4c7508]['queue'];if(_0x58aae4['voiceQueues'][_0x43cf03]){if(_0x16c402[_0x765110][_0x4c7508][_0x5cc5('0x4c')]){_0x58aae4[_0x5cc5('0x11')][_0x43cf03][_0x5cc5('0x4d')]+=0x1;}if(_0x16c402[_0x765110][_0x4c7508][_0x5cc5('0x4e')]){_0x58aae4[_0x5cc5('0x11')][_0x43cf03][_0x5cc5('0x31')]+=0x1;}_0x58aae4[_0x5cc5('0x11')][_0x43cf03]['sumHoldTime']+=moment(_0x16c402[_0x765110][_0x4c7508]['queuecallerleaveAt'])[_0x5cc5('0x4f')](moment(_0x16c402[_0x765110][_0x4c7508]['queuecallerjoinAt']),_0x5cc5('0x50'))||0x0;if(_0x4c7508===_0x16c402[_0x765110][_0x5cc5('0x3e')]-0x1){_0x58aae4[_0x5cc5('0x11')][_0x43cf03][_0x5cc5('0x2d')]+=moment(_0x16c402[_0x765110][_0x4c7508]['queuecallercompleteAt']||_0x16c402[_0x765110][_0x4c7508]['queuecallerabandonAt']||_0x16c402[_0x765110][_0x4c7508][_0x5cc5('0x51')])[_0x5cc5('0x4f')](moment(_0x16c402[_0x765110][_0x4c7508]['queuecallerjoinAt']),_0x5cc5('0x50'))||0x0;_0x58aae4['voiceQueues'][_0x43cf03][_0x5cc5('0x2b')]+=0x1;if(_0x16c402[_0x765110][_0x4c7508]['queuecallercomplete']){_0x58aae4['voiceQueues'][_0x43cf03]['answered']+=0x1;_0x58aae4[_0x5cc5('0x11')][_0x43cf03][_0x5cc5('0x2e')]+=moment(_0x16c402[_0x765110][_0x4c7508][_0x5cc5('0x52')])['diff'](moment(_0x16c402[_0x765110][_0x4c7508][_0x5cc5('0x53')]),_0x5cc5('0x50'))||0x0;}}else{_0x58aae4[_0x5cc5('0x11')][_0x43cf03][_0x5cc5('0x2d')]+=_0x58aae4[_0x5cc5('0x11')][_0x43cf03][_0x5cc5('0x32')]||0x0;}}}}}}return _0x58aae4[_0x5cc5('0x11')];};};Realtime['prototype']['initVoiceCallReports']=function(){var _0x2031a9=this;return function(_0x188674){clearVoiceCallReports(_0x2031a9['outbound']);if(_0x188674){for(var _0x5a4c97=0x0;_0x5a4c97<_0x188674[_0x5cc5('0x3e')];_0x5a4c97+=0x1){_0x2031a9[_0x5cc5('0x54')][_0x5cc5('0x2b')]+=0x1;_0x2031a9[_0x5cc5('0x54')]['sumDuration']+=_0x188674[_0x5a4c97][_0x5cc5('0x55')];if(_0x188674[_0x5a4c97][_0x5cc5('0x56')]===_0x5cc5('0x57')){_0x2031a9[_0x5cc5('0x54')][_0x5cc5('0x2c')]+=0x1;_0x2031a9[_0x5cc5('0x54')][_0x5cc5('0x32')]+=_0x188674[_0x5a4c97][_0x5cc5('0x55')]-_0x188674[_0x5a4c97]['billableseconds']||0x0;_0x2031a9[_0x5cc5('0x54')][_0x5cc5('0x2e')]+=_0x188674[_0x5a4c97][_0x5cc5('0x58')];}}}return _0x2031a9['outbound'];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x59')]=function(){var _0x457cae=this;return function(_0x2dfee3){if(_0x2dfee3){freeIsNotKey(_0x2dfee3,_0x457cae[_0x5cc5('0x13')],_0x5cc5('0x2a'));for(var _0x43934a=0x0,_0xd23a78={};_0x43934a<_0x2dfee3[_0x5cc5('0x3e')];_0x43934a+=0x1){_0xd23a78=_0x2dfee3[_0x43934a];if(_[_0x5cc5('0x3c')](_0x457cae[_0x5cc5('0x13')][_0xd23a78['name']])){_0x457cae[_0x5cc5('0x13')][_0xd23a78[_0x5cc5('0x2a')]]=new Campaign(_0xd23a78);}else{_0x457cae[_0x5cc5('0x3b')](_0x457cae[_0x5cc5('0x13')][_0xd23a78[_0x5cc5('0x2a')]],_0xd23a78);_0x457cae[_0x5cc5('0x13')][_0xd23a78[_0x5cc5('0x2a')]][_0x5cc5('0x5a')]=_0xd23a78[_0x5cc5('0x5b')]?_0xd23a78[_0x5cc5('0x5b')]['name']:undefined;}}}return _0x457cae[_0x5cc5('0x13')];};};Realtime[_0x5cc5('0x3a')][_0x5cc5('0x5c')]=function(){var _0xc653e9=this;return function(_0x34ac73){if(_0x34ac73){freeIsNotKey(_0x34ac73,_0xc653e9[_0x5cc5('0x15')],'id');for(var _0x4556d1=0x0,_0x5b1be0={};_0x4556d1<_0x34ac73['length'];_0x4556d1+=0x1){_0x5b1be0=_0x34ac73[_0x4556d1];if(_[_0x5cc5('0x3c')](_0xc653e9[_0x5cc5('0x15')][_0x5b1be0['id']])){_0xc653e9[_0x5cc5('0x15')][_0x5b1be0['id']]=new VoiceExtension(_0x5b1be0);}else{_0xc653e9['mergeFromDatabase'](_0xc653e9[_0x5cc5('0x15')][_0x5b1be0['id']],_0x5b1be0);}}}return _0xc653e9['voiceExtensions'];};};Realtime['prototype'][_0x5cc5('0x5d')]=function(){var _0x52a900=this;return function(_0x1ca829){clearCampaigns(_0x52a900[_0x5cc5('0x13')]);for(var _0x219f30=0x0;_0x219f30<_0x1ca829['length'];_0x219f30+=0x1){_['merge'](_0x52a900[_0x5cc5('0x13')][_0x1ca829[_0x219f30][_0x5cc5('0x2a')]],_0x1ca829[_0x219f30]);}return _0x52a900['campaigns'];};};Realtime['prototype'][_0x5cc5('0x5e')]=function(){var _0x311902=this;return function(_0x4b483c){if(_0x4b483c){freeIsNotKey(_0x4b483c,_0x311902[_0x5cc5('0x23')],'id');for(var _0x1f4e49=0x0,_0x4f6e75={},_0x313a79={};_0x1f4e49<_0x4b483c[_0x5cc5('0x3e')];_0x1f4e49+=0x1){_0x4f6e75=_0x4b483c[_0x1f4e49];if(_[_0x5cc5('0x3c')](_0x311902[_0x5cc5('0x23')][_0x4f6e75['id']])){_0x311902[_0x5cc5('0x23')][_0x4f6e75['id']]=new FaxAccount(_0x4f6e75);}else{_0x311902[_0x5cc5('0x3b')](_0x311902['faxAccounts'][_0x4f6e75['id']],_0x4f6e75);}}}return _0x311902[_0x5cc5('0x23')];};};module[_0x5cc5('0x5f')]=Realtime;
\ No newline at end of file
+var _0xe26b=['initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initDynamics365Accounts','dynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','total','queuecallerleaveAt','seconds','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/voiceExtension','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','freshsalesAccounts','faxAccounts','mapKeys','format','SIP/%s','name','isNil','sumHoldTime','sumBillable','hasOwnProperty','ivrTotalCallsDays','ivrAnswerCallsDay','answered','unmanaged','abandoned','sumDuration','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','length','interface','agents','isUndefined','initTrunks','initTriggers','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts'];(function(_0x250ca6,_0x47f9a4){var _0x583b6d=function(_0x139c30){while(--_0x139c30){_0x250ca6['push'](_0x250ca6['shift']());}};_0x583b6d(++_0x47f9a4);}(_0xe26b,0x8d));var _0xbe26=function(_0x244c60,_0x47c473){_0x244c60=_0x244c60-0x0;var _0x634bba=_0xe26b[_0x244c60];return _0x634bba;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require('lodash');var moment=require('moment');var Agent=require('../model/agent');var Telephone=require(_0xbe26('0x0'));var Trunk=require(_0xbe26('0x1'));var VoiceQueue=require(_0xbe26('0x2'));var Trigger=require(_0xbe26('0x3'));var Template=require(_0xbe26('0x4'));var Campaign=require('../model/campaign');var VoiceExtension=require(_0xbe26('0x5'));var ZendeskAccount=require(_0xbe26('0x6'));var SalesforceAccount=require(_0xbe26('0x7'));var FreshdeskAccount=require(_0xbe26('0x8'));var SugarcrmAccount=require(_0xbe26('0x9'));var ZohoAccount=require(_0xbe26('0xa'));var DeskAccount=require(_0xbe26('0xb'));var VtigerAccount=require('../model/vtigerAccount');var ServicenowAccount=require(_0xbe26('0xc'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0xbe26('0xd'));var FaxAccount=require(_0xbe26('0xe'));var Realtime=function(){this['agents']={};this[_0xbe26('0xf')]={};this[_0xbe26('0x10')]={};this[_0xbe26('0x11')]={};this['triggers']={};this[_0xbe26('0x12')]={};this[_0xbe26('0x13')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xbe26('0x14')]={};this[_0xbe26('0x15')]={};this[_0xbe26('0x16')]={};this[_0xbe26('0x17')]={};this['timers']={};this[_0xbe26('0x18')]={};this[_0xbe26('0x19')]={};this[_0xbe26('0x1a')]={};this[_0xbe26('0x1b')]={};this[_0xbe26('0x1c')]={};this[_0xbe26('0x1d')]={};this[_0xbe26('0x1e')]={};this[_0xbe26('0x1f')]={};this[_0xbe26('0x20')]={};this['dynamics365Accounts']={};this[_0xbe26('0x21')]={};this[_0xbe26('0x22')]={};};function freeIsNotKey(_0x25d20a,_0x1dccea,_0x277b5a){var _0x439e68=_[_0xbe26('0x23')](_0x25d20a,function(_0x2a7b6a,_0x582cdd){return _0x2a7b6a[_0x277b5a];});for(var _0x2c527b in _0x1dccea){if(_0x1dccea['hasOwnProperty'](_0x2c527b)){if(!_0x439e68[_0x2c527b]){delete _0x1dccea[_0x2c527b];}}}}function freeIsNotKeySip(_0x102e6b,_0x5c5bd1){var _0x4ae6bc=_['mapKeys'](_0x102e6b,function(_0x34918d,_0x637f16){return util[_0xbe26('0x24')](_0xbe26('0x25'),_0x34918d[_0xbe26('0x26')]);});for(var _0x2c8c1b in _0x5c5bd1){if(_0x5c5bd1['hasOwnProperty'](_0x2c8c1b)){if(!_0x4ae6bc[_0x2c8c1b]){delete _0x5c5bd1[_0x2c8c1b];}}}}function freeIsNotKeyAgent(_0xa6a0ab,_0x1b5fb9){var _0x2abdae=_[_0xbe26('0x23')](_0xa6a0ab,function(_0x3a18f6,_0x374908){var _0x23bd77=_[_0xbe26('0x27')](_0x3a18f6['interface'])?util[_0xbe26('0x24')](_0xbe26('0x25'),_0x3a18f6[_0xbe26('0x26')]):_0x3a18f6['interface'];return _0x23bd77;});for(var _0x56287e in _0x1b5fb9){if(_0x1b5fb9['hasOwnProperty'](_0x56287e)){if(!_0x2abdae[_0x56287e]){delete _0x1b5fb9[_0x56287e];}}}}function clearVoiceCallReports(_0x3cc6d9){_0x3cc6d9['total']=0x0;_0x3cc6d9['answered']=0x0;_0x3cc6d9[_0xbe26('0x28')]=0x0;_0x3cc6d9['sumDuration']=0x0;_0x3cc6d9[_0xbe26('0x29')]=0x0;}function clearCampaigns(_0x479a73){if(!_['isEmpty'](_0x479a73)){for(var _0x1e3ed5 in _0x479a73){if(_0x479a73[_0xbe26('0x2a')](_0x1e3ed5)){_0x479a73[_0x1e3ed5][_0xbe26('0x2b')]=0x0;_0x479a73[_0x1e3ed5][_0xbe26('0x2c')]=0x0;}}}}function clearVoiceQueues(_0x572275){if(!_['isEmpty'](_0x572275)){for(var _0x2439d4 in _0x572275){if(_0x572275[_0xbe26('0x2a')](_0x2439d4)){_0x572275[_0x2439d4]['total']=0x0;_0x572275[_0x2439d4][_0xbe26('0x2d')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x2e')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x2f')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x28')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x30')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x29')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x31')]=0x0;_0x572275[_0x2439d4]['outboundNoAnswerCallsDay']=0x0;_0x572275[_0x2439d4][_0xbe26('0x32')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x33')]=0x0;_0x572275[_0x2439d4]['outboundNoSuchCallsDay']=0x0;_0x572275[_0x2439d4][_0xbe26('0x34')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x35')]=0x0;_0x572275[_0x2439d4]['outboundDropCallsDayCallersExit']=0x0;_0x572275[_0x2439d4][_0xbe26('0x36')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x37')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x38')]=0x0;_0x572275[_0x2439d4]['outboundReCallsDay']=0x0;_0x572275[_0x2439d4][_0xbe26('0x31')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x39')]=0x0;_0x572275[_0x2439d4][_0xbe26('0x3a')]=!![];}}}}Realtime[_0xbe26('0x3b')][_0xbe26('0x3c')]=function(_0x43dfb3,_0x1a7574){for(var _0x22908b in _0x1a7574){if(_0x43dfb3[_0xbe26('0x2a')](_0x22908b)){_0x43dfb3[_0x22908b]=_0x1a7574[_0x22908b];}}};Realtime[_0xbe26('0x3b')]['initAgents']=function(){var _0x3e9453=this;return function(_0x353285){if(_0x353285){freeIsNotKeyAgent(_0x353285,_0x3e9453['agents']);for(var _0x5999e1=0x0,_0x31f442={},_0x4edce9={};_0x5999e1<_0x353285[_0xbe26('0x3d')];_0x5999e1+=0x1){_0x31f442=_0x353285[_0x5999e1];var _0x179a4d=_[_0xbe26('0x27')](_0x31f442['interface'])?util[_0xbe26('0x24')](_0xbe26('0x25'),_0x31f442['name']):_0x31f442[_0xbe26('0x3e')];if(_['isUndefined'](_0x3e9453['agents'][_0x179a4d])){_0x3e9453['agents'][_0x179a4d]=new Agent(_0x31f442);}else{_0x3e9453[_0xbe26('0x3c')](_0x3e9453['agents'][_0x179a4d],_0x31f442);}}}return _0x3e9453[_0xbe26('0x3f')];};};Realtime['prototype']['initTelephones']=function(){var _0x4582d5=this;return function(_0x4204d4){if(_0x4204d4){freeIsNotKeySip(_0x4204d4,_0x4582d5[_0xbe26('0xf')]);for(var _0x2116fa=0x0,_0x535654={},_0x1e6a45={};_0x2116fa<_0x4204d4[_0xbe26('0x3d')];_0x2116fa+=0x1){_0x535654=_0x4204d4[_0x2116fa];if(_[_0xbe26('0x40')](_0x4582d5[_0xbe26('0xf')][util[_0xbe26('0x24')]('SIP/%s',_0x535654['name'])])){_0x4582d5['telephones'][util['format'](_0xbe26('0x25'),_0x535654[_0xbe26('0x26')])]=new Telephone(_0x535654);}else{_0x4582d5[_0xbe26('0x3c')](_0x4582d5[_0xbe26('0xf')][util[_0xbe26('0x24')]('SIP/%s',_0x535654[_0xbe26('0x26')])],_0x535654);}}}return _0x4582d5[_0xbe26('0xf')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x41')]=function(){var _0x461a4b=this;return function(_0xc67df2){if(_0xc67df2){freeIsNotKeySip(_0xc67df2,_0x461a4b[_0xbe26('0x10')]);for(var _0x39b24d=0x0,_0x1beba1={},_0x3a1eef={};_0x39b24d<_0xc67df2[_0xbe26('0x3d')];_0x39b24d+=0x1){_0x1beba1=_0xc67df2[_0x39b24d];if(_[_0xbe26('0x40')](_0x461a4b['trunks'][util[_0xbe26('0x24')](_0xbe26('0x25'),_0x1beba1['name'])])){_0x461a4b[_0xbe26('0x10')][util[_0xbe26('0x24')](_0xbe26('0x25'),_0x1beba1[_0xbe26('0x26')])]=new Trunk(_0x1beba1);}else{_0x461a4b['mergeFromDatabase'](_0x461a4b['trunks'][util['format'](_0xbe26('0x25'),_0x1beba1[_0xbe26('0x26')])],_0x1beba1);}}}return _0x461a4b[_0xbe26('0x10')];};};Realtime[_0xbe26('0x3b')]['initVoiceQueues']=function(){var _0x134470=this;return function(_0x5443f1){if(_0x5443f1){freeIsNotKey(_0x5443f1,_0x134470[_0xbe26('0x11')],_0xbe26('0x26'));for(var _0x23a04e=0x0,_0x35cabd={},_0x54e9fe={};_0x23a04e<_0x5443f1[_0xbe26('0x3d')];_0x23a04e+=0x1){_0x35cabd=_0x5443f1[_0x23a04e];if(_[_0xbe26('0x40')](_0x134470[_0xbe26('0x11')][_0x35cabd[_0xbe26('0x26')]])){_0x134470[_0xbe26('0x11')][_0x35cabd[_0xbe26('0x26')]]=new VoiceQueue(_0x35cabd);}else{_0x134470[_0xbe26('0x3c')](_0x134470['voiceQueues'][_0x35cabd[_0xbe26('0x26')]],_0x35cabd);}}}return _0x134470[_0xbe26('0x11')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x42')]=function(){var _0x346eae=this;return function(_0xcc28e4){if(_0xcc28e4){freeIsNotKey(_0xcc28e4,_0x346eae[_0xbe26('0x43')],'id');for(var _0x2bd2d3=0x0,_0x36a72d={},_0x24ad1f={};_0x2bd2d3<_0xcc28e4['length'];_0x2bd2d3+=0x1){_0x36a72d=_0xcc28e4[_0x2bd2d3];if(_[_0xbe26('0x40')](_0x346eae[_0xbe26('0x43')][_0x36a72d['id']])){_0x346eae['triggers'][_0x36a72d['id']]=new Trigger(_0x36a72d);}else{_0x346eae[_0xbe26('0x3c')](_0x346eae[_0xbe26('0x43')][_0x36a72d['id']],_0x36a72d);}}}return _0x346eae[_0xbe26('0x43')];};};Realtime['prototype'][_0xbe26('0x44')]=function(){var _0x37032c=this;return function(_0xb42cab){if(_0xb42cab){freeIsNotKey(_0xb42cab,_0x37032c[_0xbe26('0x13')],'id');for(var _0x2c22a4=0x0,_0x156009={},_0x8eeb44={};_0x2c22a4<_0xb42cab[_0xbe26('0x3d')];_0x2c22a4+=0x1){_0x156009=_0xb42cab[_0x2c22a4];if(_[_0xbe26('0x40')](_0x37032c[_0xbe26('0x13')][_0x156009['id']])){_0x37032c[_0xbe26('0x13')][_0x156009['id']]=new Template(_0x156009);}else{_0x37032c[_0xbe26('0x3c')](_0x37032c[_0xbe26('0x13')][_0x156009['id']],_0x156009);}}}return _0x37032c[_0xbe26('0x13')];};};Realtime['prototype'][_0xbe26('0x45')]=function(){var _0xd046b6=this;return function(_0x5f5911){if(_0x5f5911){freeIsNotKey(_0x5f5911,_0xd046b6[_0xbe26('0x19')],'id');for(var _0x2e66f6=0x0,_0x28ace2={},_0x3d7b4c={};_0x2e66f6<_0x5f5911[_0xbe26('0x3d')];_0x2e66f6+=0x1){_0x28ace2=_0x5f5911[_0x2e66f6];if(_['isUndefined'](_0xd046b6[_0xbe26('0x19')][_0x28ace2['id']])){_0xd046b6[_0xbe26('0x19')][_0x28ace2['id']]=new ZendeskAccount(_0x28ace2);}else{_0xd046b6['mergeFromDatabase'](_0xd046b6[_0xbe26('0x19')][_0x28ace2['id']],_0x28ace2);}}}return _0xd046b6[_0xbe26('0x19')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x46')]=function(){var _0x46d49c=this;return function(_0x5342c9){if(_0x5342c9){freeIsNotKey(_0x5342c9,_0x46d49c[_0xbe26('0x1a')],'id');for(var _0x4f9ccd=0x0,_0x1e48e1={},_0x3620d3={};_0x4f9ccd<_0x5342c9[_0xbe26('0x3d')];_0x4f9ccd+=0x1){_0x1e48e1=_0x5342c9[_0x4f9ccd];if(_[_0xbe26('0x40')](_0x46d49c['salesforceAccounts'][_0x1e48e1['id']])){_0x46d49c[_0xbe26('0x1a')][_0x1e48e1['id']]=new SalesforceAccount(_0x1e48e1);}else{_0x46d49c[_0xbe26('0x3c')](_0x46d49c[_0xbe26('0x1a')][_0x1e48e1['id']],_0x1e48e1);}}}return _0x46d49c[_0xbe26('0x1a')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x47')]=function(){var _0x2b62e3=this;return function(_0x3e4641){if(_0x3e4641){freeIsNotKey(_0x3e4641,_0x2b62e3[_0xbe26('0x1c')],'id');for(var _0x3acbcd=0x0,_0x3dd034={},_0x4d07e8={};_0x3acbcd<_0x3e4641[_0xbe26('0x3d')];_0x3acbcd+=0x1){_0x3dd034=_0x3e4641[_0x3acbcd];if(_['isUndefined'](_0x2b62e3[_0xbe26('0x1c')][_0x3dd034['id']])){_0x2b62e3[_0xbe26('0x1c')][_0x3dd034['id']]=new FreshdeskAccount(_0x3dd034);}else{_0x2b62e3['mergeFromDatabase'](_0x2b62e3[_0xbe26('0x1c')][_0x3dd034['id']],_0x3dd034);}}}return _0x2b62e3['freshdeskAccounts'];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x48')]=function(){var _0xf56aee=this;return function(_0x777dea){if(_0x777dea){freeIsNotKey(_0x777dea,_0xf56aee['zohoAccounts'],'id');for(var _0x361cb8=0x0,_0x3a2b2a={},_0x4c6c43={};_0x361cb8<_0x777dea['length'];_0x361cb8+=0x1){_0x3a2b2a=_0x777dea[_0x361cb8];if(_[_0xbe26('0x40')](_0xf56aee['zohoAccounts'][_0x3a2b2a['id']])){_0xf56aee[_0xbe26('0x1d')][_0x3a2b2a['id']]=new ZohoAccount(_0x3a2b2a);}else{_0xf56aee[_0xbe26('0x3c')](_0xf56aee['zohoAccounts'][_0x3a2b2a['id']],_0x3a2b2a);}}}return _0xf56aee[_0xbe26('0x1d')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x49')]=function(){var _0x555a69=this;return function(_0x35665d){if(_0x35665d){freeIsNotKey(_0x35665d,_0x555a69['deskAccounts'],'id');for(var _0x2a1762=0x0,_0x1eb5bd={},_0x12941c={};_0x2a1762<_0x35665d['length'];_0x2a1762+=0x1){_0x1eb5bd=_0x35665d[_0x2a1762];if(_[_0xbe26('0x40')](_0x555a69['deskAccounts'][_0x1eb5bd['id']])){_0x555a69[_0xbe26('0x1e')][_0x1eb5bd['id']]=new DeskAccount(_0x1eb5bd);}else{_0x555a69[_0xbe26('0x3c')](_0x555a69['deskAccounts'][_0x1eb5bd['id']],_0x1eb5bd);}}}return _0x555a69[_0xbe26('0x1e')];};};Realtime['prototype'][_0xbe26('0x4a')]=function(){var _0x17de0f=this;return function(_0x4a3c73){if(_0x4a3c73){freeIsNotKey(_0x4a3c73,_0x17de0f['sugarcrmAccounts'],'id');for(var _0x42ddeb=0x0,_0x1dcf09={},_0x5cfa65={};_0x42ddeb<_0x4a3c73['length'];_0x42ddeb+=0x1){_0x1dcf09=_0x4a3c73[_0x42ddeb];if(_['isUndefined'](_0x17de0f[_0xbe26('0x1b')][_0x1dcf09['id']])){_0x17de0f[_0xbe26('0x1b')][_0x1dcf09['id']]=new SugarcrmAccount(_0x1dcf09);}else{_0x17de0f[_0xbe26('0x3c')](_0x17de0f[_0xbe26('0x1b')][_0x1dcf09['id']],_0x1dcf09);}}}return _0x17de0f[_0xbe26('0x1b')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4b')]=function(){var _0xec9159=this;return function(_0x5b8fba){if(_0x5b8fba){freeIsNotKey(_0x5b8fba,_0xec9159[_0xbe26('0x1f')],'id');for(var _0x53a88f=0x0,_0x27fe5b={},_0x4cae86={};_0x53a88f<_0x5b8fba['length'];_0x53a88f+=0x1){_0x27fe5b=_0x5b8fba[_0x53a88f];if(_[_0xbe26('0x40')](_0xec9159[_0xbe26('0x1f')][_0x27fe5b['id']])){_0xec9159['vtigerAccounts'][_0x27fe5b['id']]=new VtigerAccount(_0x27fe5b);}else{_0xec9159[_0xbe26('0x3c')](_0xec9159[_0xbe26('0x1f')][_0x27fe5b['id']],_0x27fe5b);}}}return _0xec9159['vtigerAccounts'];};};Realtime[_0xbe26('0x3b')]['initServicenowAccounts']=function(){var _0x1cac6f=this;return function(_0x57fe43){if(_0x57fe43){freeIsNotKey(_0x57fe43,_0x1cac6f['servicenowAccounts'],'id');for(var _0x4eb5d4=0x0,_0x29f04e={},_0x766ec3={};_0x4eb5d4<_0x57fe43['length'];_0x4eb5d4+=0x1){_0x29f04e=_0x57fe43[_0x4eb5d4];if(_[_0xbe26('0x40')](_0x1cac6f[_0xbe26('0x20')][_0x29f04e['id']])){_0x1cac6f[_0xbe26('0x20')][_0x29f04e['id']]=new ServicenowAccount(_0x29f04e);}else{_0x1cac6f['mergeFromDatabase'](_0x1cac6f[_0xbe26('0x20')][_0x29f04e['id']],_0x29f04e);}}}return _0x1cac6f[_0xbe26('0x20')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4c')]=function(){var _0x47781f=this;return function(_0x9e91fb){if(_0x9e91fb){freeIsNotKey(_0x9e91fb,_0x47781f[_0xbe26('0x4d')],'id');for(var _0xde42c2=0x0,_0x4f3351={},_0x5a8eea={};_0xde42c2<_0x9e91fb['length'];_0xde42c2+=0x1){_0x4f3351=_0x9e91fb[_0xde42c2];if(_[_0xbe26('0x40')](_0x47781f[_0xbe26('0x4d')][_0x4f3351['id']])){_0x47781f['dynamics365Accounts'][_0x4f3351['id']]=new Dynamics365Account(_0x4f3351);}else{_0x47781f[_0xbe26('0x3c')](_0x47781f[_0xbe26('0x4d')][_0x4f3351['id']],_0x4f3351);}}}return _0x47781f[_0xbe26('0x4d')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4e')]=function(){var _0x1b670c=this;return function(_0x2b52a3){if(_0x2b52a3){freeIsNotKey(_0x2b52a3,_0x1b670c[_0xbe26('0x21')],'id');for(var _0x36543f=0x0,_0x79b62={},_0x228788={};_0x36543f<_0x2b52a3['length'];_0x36543f+=0x1){_0x79b62=_0x2b52a3[_0x36543f];if(_[_0xbe26('0x40')](_0x1b670c[_0xbe26('0x21')][_0x79b62['id']])){_0x1b670c[_0xbe26('0x21')][_0x79b62['id']]=new FreshsalesAccount(_0x79b62);}else{_0x1b670c['mergeFromDatabase'](_0x1b670c[_0xbe26('0x21')][_0x79b62['id']],_0x79b62);}}}return _0x1b670c[_0xbe26('0x21')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x4f')]=function(){var _0x41fb27=this;return function(_0x2feef9){for(var _0x479d38=0x0;_0x479d38<_0x2feef9[_0xbe26('0x3d')];_0x479d38+=0x1){_[_0xbe26('0x50')](_0x41fb27['voiceQueues'][_0x2feef9[_0x479d38][_0xbe26('0x26')]],_0x2feef9[_0x479d38]);}return _0x41fb27['voiceQueues'];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x18d736=this;return function(_0x45bc13){clearVoiceQueues(_0x18d736[_0xbe26('0x11')]);if(_0x45bc13){_0x45bc13=_[_0xbe26('0x51')](_0x45bc13,_0xbe26('0x52'));for(var _0x342aba in _0x45bc13){if(_0x45bc13[_0xbe26('0x2a')](_0x342aba)){var _0x44e6ea={};for(var _0x5c4d6b=0x0;_0x5c4d6b<_0x45bc13[_0x342aba]['length'];_0x5c4d6b+=0x1){var _0x31dccf=_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x53')];if(_0x18d736[_0xbe26('0x11')][_0x31dccf]){if(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x54')]){_0x18d736[_0xbe26('0x11')][_0x31dccf]['unmanaged']+=0x1;}if(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x55')]){_0x18d736[_0xbe26('0x11')][_0x31dccf]['abandoned']+=0x1;}_0x18d736[_0xbe26('0x11')][_0x31dccf]['sumHoldTime']+=moment(_0x45bc13[_0x342aba][_0x5c4d6b]['queuecallerleaveAt'])[_0xbe26('0x56')](moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x57')]),'seconds')||0x0;if(_0x5c4d6b===_0x45bc13[_0x342aba]['length']-0x1){_0x18d736[_0xbe26('0x11')][_0x31dccf]['sumDuration']+=moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x58')]||_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x59')]||_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x5a')])[_0xbe26('0x56')](moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x57')]),'seconds')||0x0;_0x18d736[_0xbe26('0x11')][_0x31dccf][_0xbe26('0x5b')]+=0x1;if(_0x45bc13[_0x342aba][_0x5c4d6b]['queuecallercomplete']){_0x18d736[_0xbe26('0x11')][_0x31dccf][_0xbe26('0x2d')]+=0x1;_0x18d736['voiceQueues'][_0x31dccf][_0xbe26('0x29')]+=moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x58')])[_0xbe26('0x56')](moment(_0x45bc13[_0x342aba][_0x5c4d6b][_0xbe26('0x5c')]),_0xbe26('0x5d'))||0x0;}}else{_0x18d736[_0xbe26('0x11')][_0x31dccf][_0xbe26('0x30')]+=_0x18d736['voiceQueues'][_0x31dccf][_0xbe26('0x28')]||0x0;}}}}}}return _0x18d736['voiceQueues'];};};Realtime['prototype'][_0xbe26('0x5e')]=function(){var _0x51ff45=this;return function(_0x1e1536){clearVoiceCallReports(_0x51ff45[_0xbe26('0x5f')]);if(_0x1e1536){for(var _0x58e22d=0x0;_0x58e22d<_0x1e1536['length'];_0x58e22d+=0x1){_0x51ff45[_0xbe26('0x5f')]['total']+=0x1;_0x51ff45['outbound'][_0xbe26('0x30')]+=_0x1e1536[_0x58e22d][_0xbe26('0x60')];if(_0x1e1536[_0x58e22d][_0xbe26('0x61')]===_0xbe26('0x62')){_0x51ff45[_0xbe26('0x5f')]['answered']+=0x1;_0x51ff45['outbound']['sumHoldTime']+=_0x1e1536[_0x58e22d][_0xbe26('0x60')]-_0x1e1536[_0x58e22d][_0xbe26('0x63')]||0x0;_0x51ff45[_0xbe26('0x5f')][_0xbe26('0x29')]+=_0x1e1536[_0x58e22d][_0xbe26('0x63')];}}}return _0x51ff45['outbound'];};};Realtime['prototype'][_0xbe26('0x64')]=function(){var _0x466e31=this;return function(_0x3feb5a){if(_0x3feb5a){freeIsNotKey(_0x3feb5a,_0x466e31[_0xbe26('0x12')],_0xbe26('0x26'));for(var _0x4e527e=0x0,_0xf29c95={};_0x4e527e<_0x3feb5a['length'];_0x4e527e+=0x1){_0xf29c95=_0x3feb5a[_0x4e527e];if(_[_0xbe26('0x40')](_0x466e31[_0xbe26('0x12')][_0xf29c95[_0xbe26('0x26')]])){_0x466e31[_0xbe26('0x12')][_0xf29c95[_0xbe26('0x26')]]=new Campaign(_0xf29c95);}else{_0x466e31[_0xbe26('0x3c')](_0x466e31[_0xbe26('0x12')][_0xf29c95[_0xbe26('0x26')]],_0xf29c95);_0x466e31['campaigns'][_0xf29c95[_0xbe26('0x26')]]['dialQueueProject']=_0xf29c95[_0xbe26('0x65')]?_0xf29c95[_0xbe26('0x65')][_0xbe26('0x26')]:undefined;}}}return _0x466e31['campaigns'];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x66')]=function(){var _0x55a1f4=this;return function(_0x4b0350){if(_0x4b0350){freeIsNotKey(_0x4b0350,_0x55a1f4[_0xbe26('0x14')],'id');for(var _0x137879=0x0,_0x26b61f={};_0x137879<_0x4b0350[_0xbe26('0x3d')];_0x137879+=0x1){_0x26b61f=_0x4b0350[_0x137879];if(_[_0xbe26('0x40')](_0x55a1f4[_0xbe26('0x14')][_0x26b61f['id']])){_0x55a1f4[_0xbe26('0x14')][_0x26b61f['id']]=new VoiceExtension(_0x26b61f);}else{_0x55a1f4[_0xbe26('0x3c')](_0x55a1f4[_0xbe26('0x14')][_0x26b61f['id']],_0x26b61f);}}}return _0x55a1f4[_0xbe26('0x14')];};};Realtime[_0xbe26('0x3b')][_0xbe26('0x67')]=function(){var _0x37a239=this;return function(_0x268796){clearCampaigns(_0x37a239[_0xbe26('0x12')]);for(var _0x5db8c7=0x0;_0x5db8c7<_0x268796[_0xbe26('0x3d')];_0x5db8c7+=0x1){_['merge'](_0x37a239[_0xbe26('0x12')][_0x268796[_0x5db8c7][_0xbe26('0x26')]],_0x268796[_0x5db8c7]);}return _0x37a239['campaigns'];};};Realtime['prototype'][_0xbe26('0x68')]=function(){var _0xcd3d9=this;return function(_0x1c6c00){if(_0x1c6c00){freeIsNotKey(_0x1c6c00,_0xcd3d9[_0xbe26('0x22')],'id');for(var _0x287de9=0x0,_0x61ed67={},_0x24a4b6={};_0x287de9<_0x1c6c00['length'];_0x287de9+=0x1){_0x61ed67=_0x1c6c00[_0x287de9];if(_['isUndefined'](_0xcd3d9[_0xbe26('0x22')][_0x61ed67['id']])){_0xcd3d9[_0xbe26('0x22')][_0x61ed67['id']]=new FaxAccount(_0x61ed67);}else{_0xcd3d9[_0xbe26('0x3c')](_0xcd3d9[_0xbe26('0x22')][_0x61ed67['id']],_0x61ed67);}}}return _0xcd3d9['faxAccounts'];};};module[_0xbe26('0x69')]=Realtime;
\ No newline at end of file
index 9daf007..4acdc76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d73=['interface','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','destination','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridnum','originatecalleridnum','destinationchannel','channel','calleridpreview','disposition','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','uniqueid','monitor','monitors','monitorFilename','connectedlinename','xcally-motion-dialer','forEach','startsWith','substring','indexOf','mobile','phone','lastIndexOf','membername','transfererlinkedid','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./userReport','realtime','agents','prototype','sync','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','accountcode','isNil','telephones','name','format','SIP/%s','length','connectedlinenum','assigned'];(function(_0x5351cd,_0x218c6d){var _0x39c1e7=function(_0x15230c){while(--_0x15230c){_0x5351cd['push'](_0x5351cd['shift']());}};_0x39c1e7(++_0x218c6d);}(_0x8d73,0xdc));var _0x38d7=function(_0x3491f5,_0x222f0c){_0x3491f5=_0x3491f5-0x0;var _0x26e38a=_0x8d73[_0x3491f5];return _0x26e38a;};'use strict';var _=require(_0x38d7('0x0'));var moment=require(_0x38d7('0x1'));var util=require(_0x38d7('0x2'));var config=require(_0x38d7('0x3'));var ami=require(_0x38d7('0x4'));var RpcVoiceAgentReport=require(_0x38d7('0x5'));var RpcVoiceCallReport=require(_0x38d7('0x6'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x38d7('0x7'));var RpcVoiceQueueReport=require(_0x38d7('0x8'));var RpcVoiceRecording=require(_0x38d7('0x9'));var RpcVoiceTransferReport=require(_0x38d7('0xa'));var VoiceQueueReport=require(_0x38d7('0xb'));var VoiceCallReport=require(_0x38d7('0xc'));var VoiceAgentReport=require(_0x38d7('0xd'));var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x38d7('0xe'));function Report(_0x395e6a){this[_0x38d7('0xf')]=_0x395e6a;this[_0x38d7('0x10')]=_0x395e6a[_0x38d7('0x10')];this['telephones']=_0x395e6a['telephones'];}Report[_0x38d7('0x11')][_0x38d7('0x12')]=function(_0x179b1a){var _0x1db768=new VoiceQueueReport(this['realtime']);var _0x3ebbbc=new VoiceAgentReport(this[_0x38d7('0xf')]);var _0x40faa4=new VoiceDialReport(this[_0x38d7('0xf')]);var _0x23ede4=new VoiceCallReport(this[_0x38d7('0xf')]);var _0x47dd2b=new UserReport(this[_0x38d7('0xf')]);if(config[_0x38d7('0x13')]&&config[_0x38d7('0x13')][_0x38d7('0x14')]){ami['on'](_0x38d7('0x15'),this[_0x38d7('0x16')][_0x38d7('0x17')](this));ami['on'](_0x38d7('0x18'),this[_0x38d7('0x19')][_0x38d7('0x17')](this));ami['on'](_0x38d7('0x1a'),this[_0x38d7('0x1b')]['bind'](this));ami['on']('custom:voiceDialReport',this[_0x38d7('0x1c')][_0x38d7('0x17')](this));ami['on'](_0x38d7('0x1d'),this[_0x38d7('0x1e')][_0x38d7('0x17')](this));ami['on'](_0x38d7('0x1f'),this[_0x38d7('0x20')][_0x38d7('0x17')](this));}};Report[_0x38d7('0x11')][_0x38d7('0x21')]=function(_0x490fe8){var _0x42e317;_0x42e317=_[_0x38d7('0x22')](this[_0x38d7('0x10')],function(_0x1cd111){return _0x1cd111[_0x38d7('0x23')]==_0x490fe8||_0x1cd111['name']==_0x490fe8;});if(_[_0x38d7('0x24')](_0x42e317)){var _0x913a75=_['find'](this[_0x38d7('0x25')],function(_0x301691){return _0x301691[_0x38d7('0x23')]==_0x490fe8||_0x301691[_0x38d7('0x26')]==_0x490fe8;});if(_0x913a75){_0x42e317=_[_0x38d7('0x22')](this[_0x38d7('0x10')],function(_0x44f7e9){return _0x44f7e9['interface']==util[_0x38d7('0x27')](_0x38d7('0x28'),_0x913a75[_0x38d7('0x26')]);});}}return _0x42e317;};Report[_0x38d7('0x11')]['voiceQueueReport']=function(_0x45313e){for(var _0x3c547c=0x0;_0x3c547c<_0x45313e[_0x38d7('0x29')];_0x3c547c+=0x1){var _0x12f429=this[_0x38d7('0x21')](_0x45313e[_0x3c547c][_0x38d7('0x2a')]);if(_0x12f429){_0x45313e[_0x3c547c][_0x38d7('0x23')]=_0x12f429[_0x38d7('0x23')];_0x45313e[_0x3c547c][_0x38d7('0x2b')]=!![];_0x45313e[_0x3c547c]['lastAssignedTo']=_0x12f429[_0x38d7('0x26')];_0x45313e[_0x3c547c][_0x38d7('0x2c')]=_[_0x38d7('0x24')](_0x12f429['interface'])?util[_0x38d7('0x27')]('SIP/%s',_0x12f429[_0x38d7('0x26')]):_0x12f429['interface'];if(_0x45313e[_0x3c547c][_0x38d7('0x2d')]){_0x45313e[_0x3c547c][_0x38d7('0x2e')]=moment()[_0x38d7('0x27')](_0x38d7('0x2f'));}if(_0x45313e[_0x3c547c][_0x38d7('0x30')]){_0x45313e[_0x3c547c][_0x38d7('0x31')]=moment()['format'](_0x38d7('0x2f'));}RpcMemberReport['voiceQueueReport'](_0x45313e[_0x3c547c]);}RpcVoiceQueueReport[_0x38d7('0x32')](_0x45313e[_0x3c547c]);}};function extractCalleridNumber(_0x3a54b3){var _0x27b7f7=_0x3a54b3['match'](/<(.*?)>/);return _0x27b7f7?_0x27b7f7[0x1]:_0x3a54b3;}Report['prototype'][_0x38d7('0x19')]=function(_0x5202c4){_0x5202c4[_0x38d7('0x33')]=_0x5202c4[_0x38d7('0x33')]||_0x5202c4[_0x38d7('0x34')];if(_0x5202c4[_0x38d7('0x35')]==_0x38d7('0x36')){_0x5202c4[_0x38d7('0x37')]=_0x38d7('0x38');_0x5202c4[_0x38d7('0x39')]=_0x5202c4['queue'];if(_0x5202c4[_0x38d7('0x3a')]==_0x38d7('0x3b')){_0x5202c4[_0x38d7('0x23')]='';_0x5202c4[_0x38d7('0x33')]=extractCalleridNumber(_0x5202c4[_0x38d7('0x3c')]);}else if(_0x5202c4[_0x38d7('0x3a')]==_0x38d7('0x3d')){if(_0x5202c4[_0x38d7('0x33')]==_0x38d7('0x3e')){_0x5202c4[_0x38d7('0x33')]=extractCalleridNumber(_0x5202c4['calleridpreview']);_0x5202c4[_0x38d7('0x3f')]=_0x5202c4[_0x38d7('0x40')];_0x5202c4[_0x38d7('0x41')]=[_0x5202c4[_0x38d7('0x42')],_0x5202c4['channel']=_0x5202c4[_0x38d7('0x41')]][0x0];_0x5202c4[_0x38d7('0x3c')]=_0x5202c4[_0x38d7('0x43')];}else{_0x5202c4[_0x38d7('0x33')]=_0x5202c4[_0x38d7('0x3f')];_0x5202c4['calleridnum']=_0x5202c4[_0x38d7('0x40')];if(_0x5202c4[_0x38d7('0x44')]=='ANSWERED'){_0x5202c4[_0x38d7('0x23')]=_0x5202c4['connectedlinenum'];}else{_0x5202c4[_0x38d7('0x23')]='';}}}}else{_0x5202c4[_0x38d7('0x3c')]=util[_0x38d7('0x27')](_0x38d7('0x45'),_0x5202c4[_0x38d7('0x46')],_0x5202c4[_0x38d7('0x3f')]);}if(RpcVoiceTransferReport[_0x38d7('0x47')][_0x5202c4[_0x38d7('0x48')]]){var _0x57584c=RpcVoiceTransferReport[_0x38d7('0x47')][_0x5202c4[_0x38d7('0x48')]];_0x57584c['transfereelinkedid']=_0x5202c4[_0x38d7('0x49')];RpcVoiceTransferReport[_0x38d7('0x1e')](_0x57584c);delete RpcVoiceTransferReport[_0x38d7('0x47')][_0x5202c4[_0x38d7('0x48')]];}RpcVoiceCallReport[_0x38d7('0x32')](_0x5202c4);if(_0x5202c4[_0x38d7('0x4a')]){for(var _0x3f0831=0x0;_0x3f0831<_0x5202c4[_0x38d7('0x4b')]['length'];_0x3f0831+=0x1){_0x5202c4[_0x38d7('0x4c')]=_0x5202c4['monitors'][_0x3f0831]['filename'];_0x5202c4['createdAt']=_0x5202c4[_0x38d7('0x4b')][_0x3f0831]['createdAt'];if(_0x5202c4[_0x38d7('0x34')]==_0x38d7('0x3e')){_0x5202c4[_0x38d7('0x3f')]=_0x5202c4[_0x38d7('0x2a')];_0x5202c4[_0x38d7('0x46')]=_0x5202c4['connectedlinename'];_0x5202c4[_0x38d7('0x2a')]=_0x5202c4[_0x38d7('0x23')];_0x5202c4[_0x38d7('0x4d')]=_0x5202c4['membername'];_0x5202c4[_0x38d7('0x34')]=_0x5202c4['originatecalleridnum'];}else if(_0x5202c4[_0x38d7('0x34')]==_0x38d7('0x4e')){_0x5202c4[_0x38d7('0x3f')]=_0x5202c4[_0x38d7('0x33')];_0x5202c4[_0x38d7('0x34')]=_0x5202c4[_0x38d7('0x40')];}RpcVoiceRecording[_0x38d7('0x32')](_0x5202c4);}}};Report['prototype'][_0x38d7('0x1b')]=function(_0x482697){if(_['isArray'](_0x482697)){_0x482697[_0x38d7('0x4f')](function(_0x45471c){RpcVoiceAgentReport[_0x38d7('0x32')](_0x45471c);});}else{RpcVoiceAgentReport[_0x38d7('0x32')](_0x482697);}};Report[_0x38d7('0x11')][_0x38d7('0x1c')]=function(_0x43d33d){RpcVoiceDialReport['create'](_0x43d33d);var _0x1e578e;var _0x302e56;var _0x2bf833=_0x43d33d[_0x38d7('0x42')];if(_[_0x38d7('0x50')](_0x2bf833,'Local')){_0x302e56=_0x2bf833[_0x38d7('0x51')](_0x2bf833[_0x38d7('0x52')]('/')+0x1,_0x2bf833['indexOf']('@'));_0x1e578e=_[_0x38d7('0x22')](this['agents'],function(_0x521a33){return _0x521a33[_0x38d7('0x53')]==_0x302e56||_0x521a33[_0x38d7('0x54')]==_0x302e56||_0x521a33['accountcode']==_0x302e56;});}else{_0x302e56=_0x2bf833[_0x38d7('0x51')](_0x2bf833[_0x38d7('0x52')]('/')+0x1,_0x2bf833[_0x38d7('0x55')]('-'));_0x1e578e=this['findAgent'](_0x302e56);}if(_0x1e578e){_0x43d33d[_0x38d7('0x2c')]=_[_0x38d7('0x24')](_0x1e578e[_0x38d7('0x2c')])?util[_0x38d7('0x27')]('SIP/%s',_0x1e578e[_0x38d7('0x26')]):_0x1e578e[_0x38d7('0x2c')];_0x43d33d[_0x38d7('0x56')]=_0x1e578e[_0x38d7('0x26')];_0x43d33d['accountcode']=_0x1e578e[_0x38d7('0x23')];RpcMemberReport[_0x38d7('0x1c')](_0x43d33d);}};Report[_0x38d7('0x11')]['blindTransfer']=function(_0x55d83f){RpcVoiceTransferReport[_0x38d7('0x47')][_0x55d83f[_0x38d7('0x57')]]=_0x55d83f;};Report[_0x38d7('0x11')][_0x38d7('0x20')]=function(_0x4ce3d6){RpcVoiceTransferReport['attendedTransfer'](_0x4ce3d6);};module['exports']=Report;
\ No newline at end of file
+var _0xc898=['realtime','agents','telephones','sync','xdr','custom:voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','prototype','find','name','isNil','accountcode','interface','format','SIP/%s','findAgent','connectedlinenum','assigned','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','voiceQueueReport','match','destination','exten','type','dialer','lastapplication','lastdata','queue','context','from-voip-provider','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','channel','callerid','calleridname','transfers','linkedid','transfereelinkedid','create','monitor','monitors','filename','createdAt','connectedlinename','membername','xcally-motion-dialer','isArray','forEach','startsWith','substring','indexOf','mobile','phone','lastIndexOf','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceDialReport','./userReport'];(function(_0x7e68e2,_0x6edb7c){var _0x154477=function(_0x42d831){while(--_0x42d831){_0x7e68e2['push'](_0x7e68e2['shift']());}};_0x154477(++_0x6edb7c);}(_0xc898,0x95));var _0x8c89=function(_0x9686ba,_0x203d70){_0x9686ba=_0x9686ba-0x0;var _0x57c132=_0xc898[_0x9686ba];return _0x57c132;};'use strict';var _=require(_0x8c89('0x0'));var moment=require('moment');var util=require(_0x8c89('0x1'));var config=require(_0x8c89('0x2'));var ami=require(_0x8c89('0x3'));var RpcVoiceAgentReport=require(_0x8c89('0x4'));var RpcVoiceCallReport=require(_0x8c89('0x5'));var RpcVoiceDialReport=require(_0x8c89('0x6'));var RpcMemberReport=require(_0x8c89('0x7'));var RpcVoiceQueueReport=require(_0x8c89('0x8'));var RpcVoiceRecording=require(_0x8c89('0x9'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x8c89('0xa'));var VoiceCallReport=require('./voiceCallReport');var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x8c89('0xb'));var UserReport=require(_0x8c89('0xc'));function Report(_0x31e1b9){this[_0x8c89('0xd')]=_0x31e1b9;this[_0x8c89('0xe')]=_0x31e1b9[_0x8c89('0xe')];this[_0x8c89('0xf')]=_0x31e1b9[_0x8c89('0xf')];}Report['prototype'][_0x8c89('0x10')]=function(_0x80af6a){var _0x96e03b=new VoiceQueueReport(this[_0x8c89('0xd')]);var _0x52e10c=new VoiceAgentReport(this[_0x8c89('0xd')]);var _0x136c4d=new VoiceDialReport(this[_0x8c89('0xd')]);var _0x111b3b=new VoiceCallReport(this[_0x8c89('0xd')]);var _0x3b8fe3=new UserReport(this['realtime']);if(config[_0x8c89('0x11')]&&config[_0x8c89('0x11')]['disabled']){ami['on'](_0x8c89('0x12'),this['voiceQueueReport'][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x14'),this['voiceCallReport']['bind'](this));ami['on'](_0x8c89('0x15'),this[_0x8c89('0x16')][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x17'),this[_0x8c89('0x18')][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x19'),this[_0x8c89('0x1a')][_0x8c89('0x13')](this));ami['on'](_0x8c89('0x1b'),this[_0x8c89('0x1c')]['bind'](this));}};Report[_0x8c89('0x1d')]['findAgent']=function(_0x5bbf53){var _0x446564;_0x446564=_[_0x8c89('0x1e')](this[_0x8c89('0xe')],function(_0x548a4f){return _0x548a4f['accountcode']==_0x5bbf53||_0x548a4f[_0x8c89('0x1f')]==_0x5bbf53;});if(_[_0x8c89('0x20')](_0x446564)){var _0x5bf47c=_[_0x8c89('0x1e')](this[_0x8c89('0xf')],function(_0x321a4c){return _0x321a4c[_0x8c89('0x21')]==_0x5bbf53||_0x321a4c[_0x8c89('0x1f')]==_0x5bbf53;});if(_0x5bf47c){_0x446564=_[_0x8c89('0x1e')](this[_0x8c89('0xe')],function(_0x29a6dd){return _0x29a6dd[_0x8c89('0x22')]==util[_0x8c89('0x23')](_0x8c89('0x24'),_0x5bf47c[_0x8c89('0x1f')]);});}}return _0x446564;};Report[_0x8c89('0x1d')]['voiceQueueReport']=function(_0x292928){for(var _0x39a7fe=0x0;_0x39a7fe<_0x292928['length'];_0x39a7fe+=0x1){var _0xeda03b=this[_0x8c89('0x25')](_0x292928[_0x39a7fe][_0x8c89('0x26')]);if(_0xeda03b){_0x292928[_0x39a7fe][_0x8c89('0x21')]=_0xeda03b['accountcode'];_0x292928[_0x39a7fe][_0x8c89('0x27')]=!![];_0x292928[_0x39a7fe]['lastAssignedTo']=_0xeda03b[_0x8c89('0x1f')];_0x292928[_0x39a7fe][_0x8c89('0x22')]=_['isNil'](_0xeda03b[_0x8c89('0x22')])?util['format']('SIP/%s',_0xeda03b[_0x8c89('0x1f')]):_0xeda03b[_0x8c89('0x22')];if(_0x292928[_0x39a7fe]['queuecallercomplete']){_0x292928[_0x39a7fe][_0x8c89('0x28')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x292928[_0x39a7fe][_0x8c89('0x29')]){_0x292928[_0x39a7fe][_0x8c89('0x2a')]=moment()[_0x8c89('0x23')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x8c89('0x2b')](_0x292928[_0x39a7fe]);}RpcVoiceQueueReport['create'](_0x292928[_0x39a7fe]);}};function extractCalleridNumber(_0x859764){var _0x10133f=_0x859764[_0x8c89('0x2c')](/<(.*?)>/);return _0x10133f?_0x10133f[0x1]:_0x859764;}Report['prototype']['voiceCallReport']=function(_0x2f2dc2){_0x2f2dc2[_0x8c89('0x2d')]=_0x2f2dc2[_0x8c89('0x2d')]||_0x2f2dc2[_0x8c89('0x2e')];if(_0x2f2dc2[_0x8c89('0x2f')]==_0x8c89('0x30')){_0x2f2dc2[_0x8c89('0x31')]='queue';_0x2f2dc2[_0x8c89('0x32')]=_0x2f2dc2[_0x8c89('0x33')];if(_0x2f2dc2[_0x8c89('0x34')]==_0x8c89('0x35')){_0x2f2dc2[_0x8c89('0x21')]='';_0x2f2dc2['destination']=extractCalleridNumber(_0x2f2dc2['callerid']);}else if(_0x2f2dc2['context']=='from-sip'){if(_0x2f2dc2[_0x8c89('0x2d')]==_0x8c89('0x36')){_0x2f2dc2[_0x8c89('0x2d')]=extractCalleridNumber(_0x2f2dc2[_0x8c89('0x37')]);_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2[_0x8c89('0x39')];_0x2f2dc2[_0x8c89('0x3a')]=[_0x2f2dc2['channel'],_0x2f2dc2[_0x8c89('0x3b')]=_0x2f2dc2['destinationchannel']][0x0];_0x2f2dc2[_0x8c89('0x3c')]=_0x2f2dc2[_0x8c89('0x37')];}else{_0x2f2dc2['destination']=_0x2f2dc2[_0x8c89('0x38')];_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2['originatecalleridnum'];if(_0x2f2dc2['disposition']=='ANSWERED'){_0x2f2dc2[_0x8c89('0x21')]=_0x2f2dc2[_0x8c89('0x26')];}else{_0x2f2dc2[_0x8c89('0x21')]='';}}}}else{_0x2f2dc2[_0x8c89('0x3c')]=util[_0x8c89('0x23')]('\x22%s\x22\x20<%s>',_0x2f2dc2[_0x8c89('0x3d')],_0x2f2dc2[_0x8c89('0x38')]);}if(RpcVoiceTransferReport[_0x8c89('0x3e')][_0x2f2dc2[_0x8c89('0x3f')]]){var _0x4211d2=RpcVoiceTransferReport[_0x8c89('0x3e')][_0x2f2dc2['linkedid']];_0x4211d2[_0x8c89('0x40')]=_0x2f2dc2['uniqueid'];RpcVoiceTransferReport[_0x8c89('0x1a')](_0x4211d2);delete RpcVoiceTransferReport[_0x8c89('0x3e')][_0x2f2dc2['linkedid']];}RpcVoiceCallReport[_0x8c89('0x41')](_0x2f2dc2);if(_0x2f2dc2[_0x8c89('0x42')]){for(var _0x4c240b=0x0;_0x4c240b<_0x2f2dc2[_0x8c89('0x43')]['length'];_0x4c240b+=0x1){_0x2f2dc2['monitorFilename']=_0x2f2dc2[_0x8c89('0x43')][_0x4c240b][_0x8c89('0x44')];_0x2f2dc2[_0x8c89('0x45')]=_0x2f2dc2['monitors'][_0x4c240b][_0x8c89('0x45')];if(_0x2f2dc2[_0x8c89('0x2e')]==_0x8c89('0x36')){_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2[_0x8c89('0x26')];_0x2f2dc2[_0x8c89('0x3d')]=_0x2f2dc2[_0x8c89('0x46')];_0x2f2dc2[_0x8c89('0x26')]=_0x2f2dc2[_0x8c89('0x21')];_0x2f2dc2[_0x8c89('0x46')]=_0x2f2dc2[_0x8c89('0x47')];_0x2f2dc2[_0x8c89('0x2e')]=_0x2f2dc2[_0x8c89('0x39')];}else if(_0x2f2dc2[_0x8c89('0x2e')]==_0x8c89('0x48')){_0x2f2dc2[_0x8c89('0x38')]=_0x2f2dc2[_0x8c89('0x2d')];_0x2f2dc2['exten']=_0x2f2dc2['originatecalleridnum'];}RpcVoiceRecording['create'](_0x2f2dc2);}}};Report[_0x8c89('0x1d')][_0x8c89('0x16')]=function(_0x12d7df){if(_[_0x8c89('0x49')](_0x12d7df)){_0x12d7df[_0x8c89('0x4a')](function(_0x5964b3){RpcVoiceAgentReport[_0x8c89('0x41')](_0x5964b3);});}else{RpcVoiceAgentReport[_0x8c89('0x41')](_0x12d7df);}};Report[_0x8c89('0x1d')][_0x8c89('0x18')]=function(_0x1c69c2){RpcVoiceDialReport[_0x8c89('0x41')](_0x1c69c2);var _0x24dc52;var _0x456145;var _0x511e6b=_0x1c69c2[_0x8c89('0x3b')];if(_[_0x8c89('0x4b')](_0x511e6b,'Local')){_0x456145=_0x511e6b[_0x8c89('0x4c')](_0x511e6b[_0x8c89('0x4d')]('/')+0x1,_0x511e6b['indexOf']('@'));_0x24dc52=_[_0x8c89('0x1e')](this[_0x8c89('0xe')],function(_0x5cc9c7){return _0x5cc9c7[_0x8c89('0x4e')]==_0x456145||_0x5cc9c7[_0x8c89('0x4f')]==_0x456145||_0x5cc9c7[_0x8c89('0x21')]==_0x456145;});}else{_0x456145=_0x511e6b[_0x8c89('0x4c')](_0x511e6b['indexOf']('/')+0x1,_0x511e6b[_0x8c89('0x50')]('-'));_0x24dc52=this[_0x8c89('0x25')](_0x456145);}if(_0x24dc52){_0x1c69c2[_0x8c89('0x22')]=_[_0x8c89('0x20')](_0x24dc52[_0x8c89('0x22')])?util[_0x8c89('0x23')](_0x8c89('0x24'),_0x24dc52[_0x8c89('0x1f')]):_0x24dc52['interface'];_0x1c69c2[_0x8c89('0x47')]=_0x24dc52[_0x8c89('0x1f')];_0x1c69c2[_0x8c89('0x21')]=_0x24dc52[_0x8c89('0x21')];RpcMemberReport[_0x8c89('0x18')](_0x1c69c2);}};Report[_0x8c89('0x1d')]['blindTransfer']=function(_0xd1a913){RpcVoiceTransferReport[_0x8c89('0x3e')][_0xd1a913['transfererlinkedid']]=_0xd1a913;};Report['prototype'][_0x8c89('0x1c')]=function(_0x2d5bed){RpcVoiceTransferReport['attendedTransfer'](_0x2d5bed);};module['exports']=Report;
\ No newline at end of file
index a7f6b8c..a1629ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27bf=['syncRegistry','bind','registry','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','inspect','actionDeviceStateList','actionSipPeerStatus','catch','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','info','[userReport][registry]\x20registry:%s\x20state:%s','state','debug','[userReport][registry]','find','username','stateRegistry','merge','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','emit','format','trunk:%s','name','trunk:save','device','[userReport][devicestatechange]','agents','local','toLowerCase','inuse','stateTime','toNumber','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','startsWith','Local','substring','indexOf','phone','accountcode','address','peer','registered','status','updateStatusRealtime','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','[userReport][peerstatus]','exports','lodash','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','localhost','socket.io-emitter','trunks','telephones'];(function(_0x8051d7,_0x263ba9){var _0x3fb835=function(_0x3605a6){while(--_0x3605a6){_0x8051d7['push'](_0x8051d7['shift']());}};_0x3fb835(++_0x263ba9);}(_0x27bf,0x126));var _0xf27b=function(_0x4cc1bd,_0x3b02dc){_0x4cc1bd=_0x4cc1bd-0x0;var _0x166c92=_0x27bf[_0x4cc1bd];return _0x166c92;};'use strict';var _=require(_0xf27b('0x0'));var moment=require(_0xf27b('0x1'));var util=require(_0xf27b('0x2'));var Redis=require(_0xf27b('0x3'));var BPromise=require(_0xf27b('0x4'));var config=require(_0xf27b('0x5'));var logger=require(_0xf27b('0x6'))(_0xf27b('0x7'));var ami=require(_0xf27b('0x8'));config['redis']=_['defaults'](config[_0xf27b('0x9')],{'host':_0xf27b('0xa'),'port':0x18eb});var io=require(_0xf27b('0xb'))(new Redis(config[_0xf27b('0x9')]));function UserReport(_0x4d3354){this[_0xf27b('0xc')]=_0x4d3354['trunks'];this['agents']=_0x4d3354['agents'];this[_0xf27b('0xd')]=_0x4d3354[_0xf27b('0xd')];ami['on']('registryentry',this[_0xf27b('0xe')][_0xf27b('0xf')](this));ami['on'](_0xf27b('0x10'),this[_0xf27b('0xe')][_0xf27b('0xf')](this));ami['on'](_0xf27b('0x11'),this[_0xf27b('0x12')][_0xf27b('0xf')](this));ami['on'](_0xf27b('0x13'),this[_0xf27b('0x14')][_0xf27b('0xf')](this));return this[_0xf27b('0x15')]();}function showSipRegistrations(){Promise[_0xf27b('0x16')]()[_0xf27b('0x17')](ami[_0xf27b('0x18')]())['catch'](function(_0x30643f){logger[_0xf27b('0x19')]('[userReport][sipshowregistry]',util[_0xf27b('0x1a')](_0x30643f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xf27b('0x16')]()[_0xf27b('0x17')](ami[_0xf27b('0x1b')]())['catch'](function(_0x6814ec){logger['error']('[userReport][devicestatelist]',util['inspect'](_0x6814ec,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()['then'](ami[_0xf27b('0x1c')]())[_0xf27b('0x1d')](function(_0x4fc83b){logger[_0xf27b('0x19')](_0xf27b('0x1e'),util[_0xf27b('0x1a')](_0x4fc83b,{'showHidden':![],'depth':null}));});}UserReport[_0xf27b('0x1f')][_0xf27b('0x15')]=function(){setInterval(function(){BPromise['resolve']()[_0xf27b('0x17')](showSipRegistrations())['then'](listDeviceStates())[_0xf27b('0x17')](showPeersStatus());},0x32c8);};UserReport[_0xf27b('0x1f')][_0xf27b('0x20')]=function(_0x10e5a1){return _0x10e5a1!==null&&!_[_0xf27b('0x21')](_0x10e5a1);};UserReport[_0xf27b('0x1f')]['emit']=function(_0x4e1331,_0x4f0495,_0x1ba52d){io['to'](_0x4e1331)['emit'](_0x4f0495,_0x1ba52d);};UserReport[_0xf27b('0x1f')]['syncRegistry']=function(_0x43d519){try{if(this[_0xf27b('0x20')](_0x43d519)){logger[_0xf27b('0x22')](_0xf27b('0x23'),_0x43d519['username'],_0x43d519[_0xf27b('0x24')]);logger[_0xf27b('0x25')](_0xf27b('0x26'),util[_0xf27b('0x1a')](_0x43d519,{'showHidden':![],'depth':null}));var _0x4e95ef=_[_0xf27b('0x27')](this[_0xf27b('0xc')],{'defaultuser':_0x43d519[_0xf27b('0x28')]});if(_0x4e95ef){_0x43d519[_0xf27b('0x29')]=_0x43d519[_0xf27b('0x24')];_[_0xf27b('0x2a')](_0x4e95ef,_['omit'](_0x43d519,[_0xf27b('0x2b'),_0xf27b('0x2c'),'username','state']));logger[_0xf27b('0x25')](_0xf27b('0x2d'),util[_0xf27b('0x1a')](_0x4e95ef,{'showHidden':![],'depth':null}));this[_0xf27b('0x2e')](util[_0xf27b('0x2f')](_0xf27b('0x30'),_0x4e95ef[_0xf27b('0x31')]),_0xf27b('0x32'),_0x4e95ef);}}}catch(_0x3088f2){logger['error']('[userReport][registry]',util[_0xf27b('0x1a')](_0x3088f2,{'showHidden':![],'depth':null}));}};UserReport[_0xf27b('0x1f')][_0xf27b('0x12')]=function(_0x117c13){try{if(this[_0xf27b('0x20')](_0x117c13)){logger[_0xf27b('0x22')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x117c13[_0xf27b('0x33')],_0x117c13['state']);logger[_0xf27b('0x25')](_0xf27b('0x34'),util[_0xf27b('0x1a')](_0x117c13,{'showHidden':![],'depth':null}));if(this[_0xf27b('0x35')][_0x117c13[_0xf27b('0x33')]]){if(!this['agents'][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x36')]||_0x117c13['state'][_0xf27b('0x37')]()==_0xf27b('0x38')){this[_0xf27b('0x35')][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x36')]=![];if(this['agents'][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x24')]!==_0x117c13[_0xf27b('0x24')][_0xf27b('0x37')]()){this[_0xf27b('0x35')][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x39')]=_[_0xf27b('0x3a')](moment()[_0xf27b('0x2f')]('x'));}this['agents'][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x24')]=_0x117c13[_0xf27b('0x24')][_0xf27b('0x37')]();this[_0xf27b('0x35')][_0x117c13[_0xf27b('0x33')]]['updateStatusRealtime'](_0x117c13);}}else if(this[_0xf27b('0xd')][_0x117c13[_0xf27b('0x33')]]){if(this[_0xf27b('0xd')][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x24')]!==_0x117c13[_0xf27b('0x24')][_0xf27b('0x37')]()){this[_0xf27b('0xd')][_0x117c13['device']]['stateTime']=_[_0xf27b('0x3a')](moment()[_0xf27b('0x2f')]('x'));}this[_0xf27b('0xd')][_0x117c13['device']][_0xf27b('0x24')]=_0x117c13[_0xf27b('0x24')][_0xf27b('0x37')]();logger[_0xf27b('0x25')](_0xf27b('0x3b'),util[_0xf27b('0x1a')](this['telephones'][_0x117c13[_0xf27b('0x33')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xf27b('0x2f')](_0xf27b('0x3c'),this[_0xf27b('0xd')][_0x117c13['device']][_0xf27b('0x31')]),'telephone:save',this[_0xf27b('0xd')][_0x117c13['device']]);}else if(this['trunks'][_0x117c13[_0xf27b('0x33')]]){if(this['trunks'][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x24')]!==_0x117c13[_0xf27b('0x24')][_0xf27b('0x37')]()){this[_0xf27b('0xc')][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x39')]=_[_0xf27b('0x3a')](moment()[_0xf27b('0x2f')]('x'));}this['trunks'][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x24')]=_0x117c13[_0xf27b('0x24')]['toLowerCase']();logger[_0xf27b('0x25')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this['trunks'][_0x117c13[_0xf27b('0x33')]],{'showHidden':![],'depth':null}));this[_0xf27b('0x2e')](util['format'](_0xf27b('0x30'),this['trunks'][_0x117c13[_0xf27b('0x33')]][_0xf27b('0x31')]),_0xf27b('0x32'),this[_0xf27b('0xc')][_0x117c13[_0xf27b('0x33')]]);}else if(_[_0xf27b('0x3d')](_0x117c13[_0xf27b('0x33')],_0xf27b('0x3e'))){var _0x2672a5=_0x117c13[_0xf27b('0x33')];var _0x5d4b7f=_0x2672a5[_0xf27b('0x3f')](_0x2672a5['indexOf']('/')+0x1,_0x2672a5[_0xf27b('0x40')]('@'));var _0xfa7768=_[_0xf27b('0x27')](this['agents'],function(_0x3180fe){return _0x3180fe['mobile']==_0x5d4b7f||_0x3180fe[_0xf27b('0x41')]==_0x5d4b7f||_0x3180fe[_0xf27b('0x42')]==_0x5d4b7f;});if(_0xfa7768){if(_0xfa7768[_0xf27b('0x24')]!==_0x117c13[_0xf27b('0x24')][_0xf27b('0x37')]()){_0xfa7768[_0xf27b('0x39')]=_[_0xf27b('0x3a')](moment()[_0xf27b('0x2f')]('x'));}_0xfa7768[_0xf27b('0x24')]=_0x117c13['state'][_0xf27b('0x37')]();_0xfa7768[_0xf27b('0x36')]=!![];_0xfa7768['updateStatusRealtime'](_0x117c13);}}}}catch(_0x2e62cd){logger[_0xf27b('0x19')](_0xf27b('0x34'),util['inspect'](_0x2e62cd,{'showHidden':![],'depth':null}));}};UserReport[_0xf27b('0x1f')][_0xf27b('0x14')]=function(_0x1c9919){try{if(this[_0xf27b('0x20')](_0x1c9919)&&this[_0xf27b('0x20')](_0x1c9919['peerstatus'])){logger['info']('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1c9919['peer'],_0x1c9919[_0xf27b('0x43')],_0x1c9919['peerstatus']);logger[_0xf27b('0x25')]('[userReport][peerstatus]',util[_0xf27b('0x1a')](_0x1c9919,{'showHidden':![],'depth':null}));if(this['agents'][_0x1c9919[_0xf27b('0x44')]]){if(!this['agents'][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x36')]||_0x1c9919['peerstatus'][_0xf27b('0x37')]()==_0xf27b('0x45')){this['agents'][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x36')]=![];this['agents'][_0x1c9919['peer']][_0xf27b('0x46')]=_0x1c9919['peerstatus'][_0xf27b('0x37')]();this[_0xf27b('0x35')][_0x1c9919['peer']][_0xf27b('0x43')]=_0x1c9919[_0xf27b('0x43')];this['agents'][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x47')](_0x1c9919);}}else if(this['telephones'][_0x1c9919[_0xf27b('0x44')]]){this[_0xf27b('0xd')][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x46')]=_0x1c9919[_0xf27b('0x13')][_0xf27b('0x37')]();this[_0xf27b('0xd')][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x43')]=_0x1c9919['address'];logger[_0xf27b('0x25')](_0xf27b('0x48'),util[_0xf27b('0x1a')](this['telephones'][_0x1c9919[_0xf27b('0x44')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xf27b('0x2f')](_0xf27b('0x3c'),this[_0xf27b('0xd')][_0x1c9919[_0xf27b('0x44')]]['name']),_0xf27b('0x49'),this[_0xf27b('0xd')][_0x1c9919['peer']]);}else if(this[_0xf27b('0xc')][_0x1c9919['peer']]){this['trunks'][_0x1c9919['peer']][_0xf27b('0x46')]=_0x1c9919[_0xf27b('0x13')][_0xf27b('0x37')]();this[_0xf27b('0xc')][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x43')]=_0x1c9919[_0xf27b('0x43')];logger[_0xf27b('0x25')](_0xf27b('0x4a'),util[_0xf27b('0x1a')](this['trunks'][_0x1c9919[_0xf27b('0x44')]],{'showHidden':![],'depth':null}));this[_0xf27b('0x2e')](util[_0xf27b('0x2f')]('trunk:%s',this['trunks'][_0x1c9919[_0xf27b('0x44')]][_0xf27b('0x31')]),_0xf27b('0x32'),this[_0xf27b('0xc')][_0x1c9919['peer']]);}}}catch(_0x23a691){logger[_0xf27b('0x19')](_0xf27b('0x4b'),util[_0xf27b('0x1a')](_0x23a691,{'showHidden':![],'depth':null}));}};module[_0xf27b('0x4c')]=UserReport;
\ No newline at end of file
+var _0x20d2=['[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','lodash','moment','util','ioredis','bluebird','ami','../ami','redis','socket.io-emitter','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncRealtimeShow','resolve','then','actionSipShowRegistry','error','inspect','actionDeviceStateList','catch','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','local','toLowerCase','inuse','device','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:save','trunks','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','indexOf','phone','accountcode','[userReport][devicestatechange]','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','peerstatus'];(function(_0x13556f,_0x35b410){var _0x43b023=function(_0x128496){while(--_0x128496){_0x13556f['push'](_0x13556f['shift']());}};_0x43b023(++_0x35b410);}(_0x20d2,0xee));var _0x220d=function(_0x48f5a6,_0x35da91){_0x48f5a6=_0x48f5a6-0x0;var _0x4924c0=_0x20d2[_0x48f5a6];return _0x4924c0;};'use strict';var _=require(_0x220d('0x0'));var moment=require(_0x220d('0x1'));var util=require(_0x220d('0x2'));var Redis=require(_0x220d('0x3'));var BPromise=require(_0x220d('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x220d('0x5'));var ami=require(_0x220d('0x6'));config[_0x220d('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x220d('0x8'))(new Redis(config[_0x220d('0x7')]));function UserReport(_0x122ef6){this['trunks']=_0x122ef6['trunks'];this[_0x220d('0x9')]=_0x122ef6[_0x220d('0x9')];this[_0x220d('0xa')]=_0x122ef6['telephones'];ami['on'](_0x220d('0xb'),this[_0x220d('0xc')][_0x220d('0xd')](this));ami['on'](_0x220d('0xe'),this[_0x220d('0xc')]['bind'](this));ami['on'](_0x220d('0xf'),this[_0x220d('0x10')][_0x220d('0xd')](this));ami['on']('peerstatus',this['syncPeerStatus'][_0x220d('0xd')](this));return this[_0x220d('0x11')]();}function showSipRegistrations(){Promise[_0x220d('0x12')]()[_0x220d('0x13')](ami[_0x220d('0x14')]())['catch'](function(_0x2fd99f){logger[_0x220d('0x15')]('[userReport][sipshowregistry]',util[_0x220d('0x16')](_0x2fd99f,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x220d('0x12')]()[_0x220d('0x13')](ami[_0x220d('0x17')]())[_0x220d('0x18')](function(_0x54dcf2){logger['error'](_0x220d('0x19'),util[_0x220d('0x16')](_0x54dcf2,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x220d('0x13')](ami[_0x220d('0x1a')]())[_0x220d('0x18')](function(_0x5dadd8){logger[_0x220d('0x15')](_0x220d('0x1b'),util[_0x220d('0x16')](_0x5dadd8,{'showHidden':![],'depth':null}));});}UserReport['prototype']['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x220d('0x12')]()['then'](showSipRegistrations())[_0x220d('0x13')](listDeviceStates())[_0x220d('0x13')](showPeersStatus());},0x32c8);};UserReport[_0x220d('0x1c')][_0x220d('0x1d')]=function(_0x58568c){return _0x58568c!==null&&!_[_0x220d('0x1e')](_0x58568c);};UserReport[_0x220d('0x1c')]['emit']=function(_0x53f945,_0x4e4473,_0x24c929){io['to'](_0x53f945)[_0x220d('0x1f')](_0x4e4473,_0x24c929);};UserReport[_0x220d('0x1c')][_0x220d('0xc')]=function(_0x18f7f7){try{if(this[_0x220d('0x1d')](_0x18f7f7)){logger[_0x220d('0x20')](_0x220d('0x21'),_0x18f7f7[_0x220d('0x22')],_0x18f7f7[_0x220d('0x23')]);logger[_0x220d('0x24')](_0x220d('0x25'),util['inspect'](_0x18f7f7,{'showHidden':![],'depth':null}));var _0x4199e0=_[_0x220d('0x26')](this['trunks'],{'defaultuser':_0x18f7f7[_0x220d('0x22')]});if(_0x4199e0){_0x18f7f7[_0x220d('0x27')]=_0x18f7f7[_0x220d('0x23')];_[_0x220d('0x28')](_0x4199e0,_[_0x220d('0x29')](_0x18f7f7,[_0x220d('0x2a'),_0x220d('0x2b'),'username',_0x220d('0x23')]));logger['debug'](_0x220d('0x2c'),util[_0x220d('0x16')](_0x4199e0,{'showHidden':![],'depth':null}));this['emit'](util[_0x220d('0x2d')](_0x220d('0x2e'),_0x4199e0[_0x220d('0x2f')]),_0x220d('0x30'),_0x4199e0);}}}catch(_0x196ae4){logger[_0x220d('0x15')](_0x220d('0x25'),util[_0x220d('0x16')](_0x196ae4,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x220d('0x10')]=function(_0x30e2ce){try{if(this[_0x220d('0x1d')](_0x30e2ce)){logger[_0x220d('0x20')](_0x220d('0x31'),_0x30e2ce['device'],_0x30e2ce[_0x220d('0x23')]);logger[_0x220d('0x24')]('[userReport][devicestatechange]',util[_0x220d('0x16')](_0x30e2ce,{'showHidden':![],'depth':null}));if(this[_0x220d('0x9')][_0x30e2ce['device']]){if(!this[_0x220d('0x9')][_0x30e2ce['device']][_0x220d('0x32')]||_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()==_0x220d('0x34')){this[_0x220d('0x9')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x32')]=![];if(this['agents'][_0x30e2ce['device']]['state']!==_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()){this['agents'][_0x30e2ce['device']][_0x220d('0x36')]=_[_0x220d('0x37')](moment()[_0x220d('0x2d')]('x'));}this['agents'][_0x30e2ce['device']]['state']=_0x30e2ce['state']['toLowerCase']();this[_0x220d('0x9')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x38')](_0x30e2ce);}}else if(this[_0x220d('0xa')][_0x30e2ce['device']]){if(this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x23')]!==_0x30e2ce[_0x220d('0x23')]['toLowerCase']()){this['telephones'][_0x30e2ce['device']][_0x220d('0x36')]=_[_0x220d('0x37')](moment()[_0x220d('0x2d')]('x'));}this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x23')]=_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]();logger[_0x220d('0x24')](_0x220d('0x39'),util['inspect'](this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]],{'showHidden':![],'depth':null}));this[_0x220d('0x1f')](util['format']('telephone:%s',this[_0x220d('0xa')][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x2f')]),_0x220d('0x3a'),this[_0x220d('0xa')][_0x30e2ce['device']]);}else if(this['trunks'][_0x30e2ce[_0x220d('0x35')]]){if(this[_0x220d('0x3b')][_0x30e2ce['device']]['state']!==_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()){this[_0x220d('0x3b')][_0x30e2ce['device']][_0x220d('0x36')]=_['toNumber'](moment()[_0x220d('0x2d')]('x'));}this['trunks'][_0x30e2ce[_0x220d('0x35')]][_0x220d('0x23')]=_0x30e2ce[_0x220d('0x23')]['toLowerCase']();logger[_0x220d('0x24')](_0x220d('0x3c'),util['inspect'](this[_0x220d('0x3b')][_0x30e2ce[_0x220d('0x35')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x220d('0x2d')](_0x220d('0x2e'),this[_0x220d('0x3b')][_0x30e2ce['device']][_0x220d('0x2f')]),'trunk:save',this[_0x220d('0x3b')][_0x30e2ce[_0x220d('0x35')]]);}else if(_['startsWith'](_0x30e2ce[_0x220d('0x35')],_0x220d('0x3d'))){var _0x4904e6=_0x30e2ce[_0x220d('0x35')];var _0x1987e1=_0x4904e6['substring'](_0x4904e6['indexOf']('/')+0x1,_0x4904e6[_0x220d('0x3e')]('@'));var _0x3dde6b=_['find'](this[_0x220d('0x9')],function(_0x11588b){return _0x11588b['mobile']==_0x1987e1||_0x11588b[_0x220d('0x3f')]==_0x1987e1||_0x11588b[_0x220d('0x40')]==_0x1987e1;});if(_0x3dde6b){if(_0x3dde6b['state']!==_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]()){_0x3dde6b[_0x220d('0x36')]=_['toNumber'](moment()['format']('x'));}_0x3dde6b[_0x220d('0x23')]=_0x30e2ce[_0x220d('0x23')][_0x220d('0x33')]();_0x3dde6b[_0x220d('0x32')]=!![];_0x3dde6b[_0x220d('0x38')](_0x30e2ce);}}}}catch(_0x1a9606){logger['error'](_0x220d('0x41'),util[_0x220d('0x16')](_0x1a9606,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x220d('0x42')]=function(_0x39a06c){try{if(this[_0x220d('0x1d')](_0x39a06c)&&this[_0x220d('0x1d')](_0x39a06c['peerstatus'])){logger[_0x220d('0x20')](_0x220d('0x43'),_0x39a06c['peer'],_0x39a06c[_0x220d('0x44')],_0x39a06c[_0x220d('0x45')]);logger['debug'](_0x220d('0x46'),util[_0x220d('0x16')](_0x39a06c,{'showHidden':![],'depth':null}));if(this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]]){if(!this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x32')]||_0x39a06c[_0x220d('0x45')][_0x220d('0x33')]()==_0x220d('0x48')){this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]]['local']=![];this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x49')]=_0x39a06c['peerstatus'][_0x220d('0x33')]();this[_0x220d('0x9')][_0x39a06c['peer']][_0x220d('0x44')]=_0x39a06c[_0x220d('0x44')];this[_0x220d('0x9')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x38')](_0x39a06c);}}else if(this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]]){this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x49')]=_0x39a06c[_0x220d('0x45')][_0x220d('0x33')]();this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x44')]=_0x39a06c[_0x220d('0x44')];logger[_0x220d('0x24')](_0x220d('0x4a'),util['inspect'](this[_0x220d('0xa')][_0x39a06c[_0x220d('0x47')]],{'showHidden':![],'depth':null}));this[_0x220d('0x1f')](util['format'](_0x220d('0x4b'),this[_0x220d('0xa')][_0x39a06c['peer']][_0x220d('0x2f')]),_0x220d('0x3a'),this['telephones'][_0x39a06c[_0x220d('0x47')]]);}else if(this[_0x220d('0x3b')][_0x39a06c[_0x220d('0x47')]]){this['trunks'][_0x39a06c['peer']]['status']=_0x39a06c[_0x220d('0x45')][_0x220d('0x33')]();this[_0x220d('0x3b')][_0x39a06c[_0x220d('0x47')]][_0x220d('0x44')]=_0x39a06c[_0x220d('0x44')];logger[_0x220d('0x24')](_0x220d('0x4c'),util[_0x220d('0x16')](this['trunks'][_0x39a06c[_0x220d('0x47')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x220d('0x2d')](_0x220d('0x2e'),this[_0x220d('0x3b')][_0x39a06c[_0x220d('0x47')]]['name']),_0x220d('0x30'),this[_0x220d('0x3b')][_0x39a06c['peer']]);}}}catch(_0x440b84){logger[_0x220d('0x15')](_0x220d('0x46'),util[_0x220d('0x16')](_0x440b84,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index 0249235..aa13b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4af81f,_0x49161f){var _0x3eaaaf=function(_0x46b0d5){while(--_0x46b0d5){_0x4af81f['push'](_0x4af81f['shift']());}};_0x3eaaaf(++_0x49161f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'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
+var _0xdfae=['[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','custom:agentcalled','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','error','[%s][voiceAgentReport][agentcalled]','syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','YYYY-MM-DD\x20HH:mm:ss','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','routealias','interface','pick','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswer','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]','isNotNull','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','talktime','acwtime','agentacw','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','addVariable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','memberrealtime','includes','[%s][voiceAgentReport][hangup]\x20event:','transfer','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%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]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','syncMusicOnHoldStart','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstop]','exports','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','bind','agentconnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','attendedtransfer','blindtransfer','prototype','emit','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','queue','mandatoryDisposition','inbound','merge','omit','privilege'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdfae,0x18d));var _0xedfa=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0xdfae[_0x247fa1];return _0x244f35;};'use strict';var _=require('lodash');var moment=require(_0xedfa('0x0'));var util=require('util');var Redis=require(_0xedfa('0x1'));var config=require(_0xedfa('0x2'));var logger=require('../../../config/logger')('ami');var ami=require('../ami');config[_0xedfa('0x3')]=_[_0xedfa('0x4')](config[_0xedfa('0x3')],{'host':_0xedfa('0x5'),'port':0x18eb});var io=require(_0xedfa('0x6'))(new Redis(config[_0xedfa('0x3')]));function VoiceAgentReport(_0x128d3c){this[_0xedfa('0x7')]={};this[_0xedfa('0x8')]=_0x128d3c[_0xedfa('0x7')];this[_0xedfa('0x9')]=_0x128d3c[_0xedfa('0x9')];this[_0xedfa('0xa')]=_0x128d3c[_0xedfa('0xa')];this[_0xedfa('0xb')]={};ami['on']('agentcalled',this['syncAgentCalled'][_0xedfa('0xc')](this));ami['on'](_0xedfa('0xd'),this['syncAgentConnect']['bind'](this));ami['on']('agentringnoanswer',this[_0xedfa('0xe')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0xf'),this[_0xedfa('0x10')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x11'),this[_0xedfa('0x12')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x13'),this[_0xedfa('0x14')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x15'),this[_0xedfa('0x16')][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x17'),this['syncMusicOnHoldStart'][_0xedfa('0xc')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop'][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x18'),this['syncAttendedTransfer'][_0xedfa('0xc')](this));ami['on'](_0xedfa('0x19'),this['syncBlindTransfer'][_0xedfa('0xc')](this));}VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x1b')]=function(_0x1bf03f,_0xa784d4,_0x160999){io['to'](_0x1bf03f)[_0xedfa('0x1b')](_0xa784d4,_0x160999);};VoiceAgentReport[_0xedfa('0x1a')]['isNotNull']=function(_0xac282b){return _0xac282b!==null&&!_[_0xedfa('0x1c')](_0xac282b);};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x1d')]=function(_0x38c7ef){try{if(this['isNotNull'](_0x38c7ef)){logger[_0xedfa('0x1e')](_0xedfa('0x1f'),_0x38c7ef[_0xedfa('0x20')],_0x38c7ef[_0xedfa('0x21')],_0x38c7ef[_0xedfa('0x22')]);logger[_0xedfa('0x23')](_0xedfa('0x24'),_0x38c7ef['uniqueid'],util[_0xedfa('0x25')](_0x38c7ef,{'showHidden':![],'depth':null}));if(_[_0xedfa('0x1c')](this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]])){this['channels'][_0x38c7ef[_0xedfa('0x20')]]={};}if(_[_0xedfa('0x1c')](this['channels'][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef[_0xedfa('0x22')]])){this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef[_0xedfa('0x22')]]={'agentcalledAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','mandatoryDisposition':this[_0xedfa('0x9')][_0x38c7ef['queue']]?this[_0xedfa('0x9')][_0x38c7ef[_0xedfa('0x26')]][_0xedfa('0x27')]||![]:![],'type':this['voiceQueues'][_0x38c7ef[_0xedfa('0x26')]]?this[_0xedfa('0x9')][_0x38c7ef[_0xedfa('0x26')]]['type']||_0xedfa('0x28'):'inbound','variables':this[_0xedfa('0xb')][_0x38c7ef[_0xedfa('0x20')]],'motionChannel':'voice'};}_[_0xedfa('0x29')](this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef[_0xedfa('0x22')]],_[_0xedfa('0x2a')](_0x38c7ef,['event',_0xedfa('0x2b')]));logger['debug'](_0xedfa('0x2c'),_0x38c7ef[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x38c7ef['uniqueid']][_0x38c7ef['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x2d'),this[_0xedfa('0x7')][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef['destuniqueid']]);logger[_0xedfa('0x23')](_0xedfa('0x2e'),_0x38c7ef['uniqueid'],util[_0xedfa('0x25')](this['channels'][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef['destuniqueid']],{'showHidden':![],'depth':null}));this['emit'](util[_0xedfa('0x2f')](_0xedfa('0x30'),_0x38c7ef[_0xedfa('0x21')]),'user:called',this['channels'][_0x38c7ef[_0xedfa('0x20')]][_0x38c7ef['destuniqueid']]);}}catch(_0x2881b5){logger[_0xedfa('0x31')](_0xedfa('0x32'),_0x38c7ef[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x2881b5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x33')]=function(_0x4512a9){try{if(this['isNotNull'](_0x4512a9)){if(this['channels'][_0x4512a9['uniqueid']]){logger['debug'](_0xedfa('0x34'),_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x4512a9,{'showHidden':![],'depth':null}));for(var _0x49bc3b in this['channels'][_0x4512a9['uniqueid']]){if(this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0xedfa('0x35')](_0x49bc3b)){if(_0x4512a9[_0xedfa('0x22')]===_0x49bc3b){logger[_0xedfa('0x1e')](_0xedfa('0x36'),_0x4512a9[_0xedfa('0x20')],_0x4512a9[_0xedfa('0x21')],_0x4512a9[_0xedfa('0x22')]);this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x37')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x39')]=_0x4512a9['connectedlinename'];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3a')]=_0x4512a9[_0xedfa('0x3a')];this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3b')]=_0x4512a9['destchannelstate'];this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x3c')]=_0x4512a9[_0xedfa('0x3c')];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3d')]=_0x4512a9[_0xedfa('0x3d')];this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3e')]='connect';if(this['voiceChannels'][this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b]['uniqueid']]){var _0x4736ae=this[_0xedfa('0x8')][this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x20')]][_0xedfa('0x3f')];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x3f')]=_0x4736ae;_0x4512a9[_0xedfa('0x3f')]=_0x4736ae;}_['merge'](this[_0xedfa('0xa')][_0x4512a9[_0xedfa('0x40')]],_[_0xedfa('0x41')](_0x4512a9,[_0xedfa('0x26'),_0xedfa('0x42'),_0xedfa('0x3f')]));logger['debug'](_0xedfa('0x43'),_0x4512a9['uniqueid'],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x4512a9[_0xedfa('0x22')]],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x44'),this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x4512a9[_0xedfa('0x22')]]);logger[_0xedfa('0x23')](_0xedfa('0x45'),_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x4512a9[_0xedfa('0x22')]],{'showHidden':![],'depth':null}));this[_0xedfa('0x1b')](util[_0xedfa('0x2f')](_0xedfa('0x30'),_0x4512a9[_0xedfa('0x21')]),_0xedfa('0x46'),this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x4512a9[_0xedfa('0x22')]]);}else if(!this['channels'][_0x4512a9['uniqueid']][_0x49bc3b]['agentringnoanswer']&&!this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x11')]){logger[_0xedfa('0x1e')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x4512a9[_0xedfa('0x20')],this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b]['membername'],_0x49bc3b);this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b][_0xedfa('0x47')]=!![];this['channels'][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x48')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x49')]=_0x4512a9[_0xedfa('0x22')];this['channels'][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b]['answeredelsewheremembername']=_0x4512a9[_0xedfa('0x21')];this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x3e')]=_0xedfa('0x4a');this['channels'][_0x4512a9['uniqueid']][_0x49bc3b][_0xedfa('0x4b')]=_0xedfa('0x4a');logger[_0xedfa('0x23')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x4512a9[_0xedfa('0x20')]][_0x49bc3b],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x4c'),this[_0xedfa('0x7')][_0x4512a9['uniqueid']][_0x49bc3b]);}}}}}}catch(_0xdc4730){logger[_0xedfa('0x31')](_0xedfa('0x4d'),_0x4512a9[_0xedfa('0x20')],util[_0xedfa('0x25')](_0xdc4730,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0xe')]=function(_0x5485d4){try{if(this['isNotNull'](_0x5485d4)){logger['debug'](_0xedfa('0x4e'),_0x5485d4[_0xedfa('0x20')],util['inspect'](_0x5485d4,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x5485d4['uniqueid']]&&this[_0xedfa('0x7')][_0x5485d4[_0xedfa('0x20')]][_0x5485d4['destuniqueid']]){logger[_0xedfa('0x1e')](_0xedfa('0x4f'),_0x5485d4[_0xedfa('0x20')],_0x5485d4[_0xedfa('0x21')],_0x5485d4[_0xedfa('0x22')]);this[_0xedfa('0x7')][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x47')]=!![];this[_0xedfa('0x7')][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x48')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this['channels'][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x3e')]='rejected';this[_0xedfa('0x7')][_0x5485d4['uniqueid']][_0x5485d4[_0xedfa('0x22')]][_0xedfa('0x4b')]=_0xedfa('0x50');logger[_0xedfa('0x23')](_0xedfa('0x51'),_0x5485d4[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x5485d4[_0xedfa('0x20')]][_0x5485d4[_0xedfa('0x22')]],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this[_0xedfa('0x7')][_0x5485d4[_0xedfa('0x20')]][_0x5485d4[_0xedfa('0x22')]]);}}}catch(_0x3883c7){logger['error'](_0xedfa('0x52'),_0x5485d4[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x3883c7,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x10')]=function(_0x199c1e){try{if(this['isNotNull'](_0x199c1e)){logger[_0xedfa('0x23')](_0xedfa('0x53'),_0x199c1e[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x199c1e,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]]){for(var _0x5c3cee in this['channels'][_0x199c1e[_0xedfa('0x20')]]){if(this['channels'][_0x199c1e[_0xedfa('0x20')]]['hasOwnProperty'](_0x5c3cee)&&!this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee][_0xedfa('0x47')]&&!this['channels'][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee]['agentcomplete']){logger[_0xedfa('0x1e')](_0xedfa('0x54'),_0x199c1e[_0xedfa('0x20')],this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee][_0xedfa('0x21')],_0x5c3cee);this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee][_0xedfa('0x47')]=!![];this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee][_0xedfa('0x48')]=moment()['format'](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee][_0xedfa('0x3e')]=_0xedfa('0x55');this['channels'][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee]['reason']=_0xedfa('0x55');logger[_0xedfa('0x23')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x199c1e[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x199c1e[_0xedfa('0x20')]][_0x5c3cee],{'showHidden':![],'depth':null}));ami['emit']('custom:agentqueuecallerabandon',this[_0xedfa('0x7')][_0x199c1e['uniqueid']][_0x5c3cee]);}}}}}catch(_0x1d8d5b){logger[_0xedfa('0x31')](_0xedfa('0x56'),_0x199c1e['uniqueid'],util[_0xedfa('0x25')](_0x1d8d5b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x12')]=function(_0x1f6194){try{if(this[_0xedfa('0x57')](_0x1f6194)){logger['debug'](_0xedfa('0x58'),_0x1f6194[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x1f6194,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]]){for(var _0x1b67af in this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]]){if(this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]]['hasOwnProperty'](_0x1b67af)){if(this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x37')]&&!this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x11')]){logger[_0xedfa('0x1e')](_0xedfa('0x59'),_0x1f6194[_0xedfa('0x20')],this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x21')],_0x1b67af);this[_0xedfa('0x7')][_0x1f6194['uniqueid']][_0x1b67af][_0xedfa('0x11')]=!![];this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5a')]=moment()[_0xedfa('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x3e')]=_0xedfa('0x5b');this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x4b')]=_0x1f6194[_0xedfa('0x4b')]=='transfer'?'agent':_0x1f6194['reason'];this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5c')]=_0x1f6194[_0xedfa('0x5c')];if(this[_0xedfa('0x9')][_0x1f6194['queue']]&&this[_0xedfa('0x9')][_0x1f6194[_0xedfa('0x26')]]['acw']){this['channels'][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5d')]=this[_0xedfa('0x9')][_0x1f6194[_0xedfa('0x26')]]['acwTimeout'];this['channels'][_0x1f6194[_0xedfa('0x20')]][_0x1b67af][_0xedfa('0x5e')]=!![];}this[_0xedfa('0xa')][_0x1f6194[_0xedfa('0x40')]]=_['omit'](this[_0xedfa('0xa')][_0x1f6194[_0xedfa('0x40')]],[_0xedfa('0x26'),'destconnectedlinenum']);logger[_0xedfa('0x23')](_0xedfa('0x5f'),_0x1f6194[_0xedfa('0x20')],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af],{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x60'),this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af]);logger[_0xedfa('0x23')](_0xedfa('0x61'),_0x1f6194['uniqueid'],util[_0xedfa('0x25')](this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af],{'showHidden':![],'depth':null}));this[_0xedfa('0x1b')](util[_0xedfa('0x2f')]('user:%s',_0x1f6194['membername']),_0xedfa('0x62'),this[_0xedfa('0x7')][_0x1f6194[_0xedfa('0x20')]][_0x1b67af]);}}}}}}catch(_0x76e60b){logger[_0xedfa('0x31')](_0xedfa('0x63'),_0x1f6194[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x76e60b,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xedfa('0x14')]=function(_0x169040){try{if(this['isNotNull'](_0x169040)){logger[_0xedfa('0x23')]('[%s][voiceAgentReport][varset]\x20event:',_0x169040[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x169040,{'showHidden':![],'depth':null}));this[_0xedfa('0x64')](_0x169040['uniqueid'],_['keys'](_0x169040['variable'])[0x0],_0x169040['value']);if(this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]]){for(var _0x51f90a in this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]]){if(this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]][_0xedfa('0x35')](_0x51f90a)){logger['info'](_0xedfa('0x65'),_0x169040[_0xedfa('0x20')],_0x51f90a,_['keys'](_0x169040['variable'])[0x0],_0x169040[_0xedfa('0x66')]);if(_['isUndefined'](this['channels'][_0x169040[_0xedfa('0x20')]][_0x51f90a][_0xedfa('0xb')])){this[_0xedfa('0x7')][_0x169040['uniqueid']][_0x51f90a][_0xedfa('0xb')]={};}this[_0xedfa('0x7')][_0x169040[_0xedfa('0x20')]][_0x51f90a]['variables']=this[_0xedfa('0xb')][_0x169040['uniqueid']];}}}}}catch(_0x17188b){logger[_0xedfa('0x31')]('[%s][voiceAgentReport][varset]',_0x169040[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x17188b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x64')]=function(_0x58e919,_0x1079e4,_0x3a7eef){var _0x333c5d=[_0xedfa('0x67'),_0xedfa('0x68'),_0xedfa('0x69'),'rtpaudioqosjitterbridged',_0xedfa('0x6a'),_0xedfa('0x6b'),_0xedfa('0x6c'),_0xedfa('0x6d'),_0xedfa('0x6e'),_0xedfa('0x6f'),_0xedfa('0x70'),'bridgepvtcallid',_0xedfa('0x71'),_0xedfa('0x72'),_0xedfa('0x73'),'memberlastcall','membername','memberpenalty',_0xedfa('0x74')];if(!_['isNil'](_0x1079e4)&&!_[_0xedfa('0x75')](_0x333c5d,_0x1079e4)){if(_[_0xedfa('0x1c')](this['variables'][_0x58e919])){this[_0xedfa('0xb')][_0x58e919]={};}this[_0xedfa('0xb')][_0x58e919][_0x1079e4]=_0x3a7eef;}};VoiceAgentReport[_0xedfa('0x1a')]['syncHangup']=function(_0x761e82){try{if(this[_0xedfa('0x57')](_0x761e82)){logger[_0xedfa('0x23')](_0xedfa('0x76'),_0x761e82['uniqueid'],util[_0xedfa('0x25')](_0x761e82,{'showHidden':![],'depth':null}));if(this['channels'][_0x761e82[_0xedfa('0x20')]]){for(var _0x285863 in this['channels'][_0x761e82[_0xedfa('0x20')]]){if(this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]][_0xedfa('0x35')](_0x285863)){if(this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]][_0x285863]['reason']==_0xedfa('0x77')&&this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]][_0x285863][_0xedfa('0x11')]){logger[_0xedfa('0x1e')](_0xedfa('0x78'),_0x761e82[_0xedfa('0x20')],_0x285863);this['channels'][_0x761e82[_0xedfa('0x20')]][_0x285863][_0xedfa('0x5a')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));}}}logger['debug'](_0xedfa('0x79'),_0x761e82[_0xedfa('0x20')],util[_0xedfa('0x25')](_[_0xedfa('0x7a')](this['channels'][_0x761e82[_0xedfa('0x20')]]),{'showHidden':![],'depth':null}));ami[_0xedfa('0x1b')](_0xedfa('0x7b'),_['values'](this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]]));delete this[_0xedfa('0x7')][_0x761e82[_0xedfa('0x20')]];}if(this['variables'][_0x761e82[_0xedfa('0x20')]]){delete this[_0xedfa('0xb')][_0x761e82[_0xedfa('0x20')]];}}}catch(_0x2024c3){logger[_0xedfa('0x31')](_0xedfa('0x7c'),_0x761e82[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x2024c3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x7d')]=function(_0x4e5b4f){try{if(this[_0xedfa('0x57')](_0x4e5b4f)){logger[_0xedfa('0x23')](_0xedfa('0x7e'),_0x4e5b4f[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x4e5b4f,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]]){for(var _0x3a868d in this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]]){if(this[_0xedfa('0x7')][_0x4e5b4f['transfereeuniqueid']][_0xedfa('0x35')](_0x3a868d)){if(_0x4e5b4f[_0xedfa('0x80')]===_0x3a868d){logger['info'](_0xedfa('0x81'),_0x4e5b4f[_0xedfa('0x20')],this['channels'][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x21')],_0x3a868d);var _0x2246c0=moment();this['channels'][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x11')]=!![];this['channels'][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x5a')]=moment()[_0xedfa('0x2f')](_0xedfa('0x38'));this[_0xedfa('0x7')][_0x4e5b4f['transfereeuniqueid']][_0x3a868d]['lastevent']=_0xedfa('0x5b');this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x4b')]=_0xedfa('0x77');this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d]['talktime']=_0x2246c0[_0xedfa('0x82')](this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]][_0x3a868d][_0xedfa('0x37')],_0xedfa('0x83'));}}}}if(this[_0xedfa('0x7')][_0x4e5b4f['secondtransfereruniqueid']]){var _0x24d9a3=this[_0xedfa('0x7')][_0x4e5b4f['secondtransfereruniqueid']];this['channels'][_0x4e5b4f[_0xedfa('0x84')]]=this['channels'][_0x4e5b4f[_0xedfa('0x7f')]];this[_0xedfa('0x7')][_0x4e5b4f[_0xedfa('0x7f')]]=_0x24d9a3;}}}catch(_0xc3be72){logger[_0xedfa('0x31')](_0xedfa('0x85'),_0x4e5b4f[_0xedfa('0x20')],util[_0xedfa('0x25')](_0xc3be72,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncBlindTransfer']=function(_0x120fc5){try{if(this['isNotNull'](_0x120fc5)){logger[_0xedfa('0x23')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x120fc5[_0xedfa('0x20')],util['inspect'](_0x120fc5,{'showHidden':![],'depth':null}));if(this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]]){for(var _0x11c3e3 in this['channels'][_0x120fc5['transfereeuniqueid']]){if(this[_0xedfa('0x7')][_0x120fc5['transfereeuniqueid']][_0xedfa('0x35')](_0x11c3e3)){if(_0x120fc5[_0xedfa('0x86')]===_0x11c3e3){logger[_0xedfa('0x1e')](_0xedfa('0x87'),_0x120fc5[_0xedfa('0x20')],this['channels'][_0x120fc5['transfereeuniqueid']][_0x11c3e3][_0xedfa('0x21')],_0x11c3e3);var _0x990adc=moment();this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x11')]=!![];this['channels'][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x5a')]=_0x990adc;this['channels'][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x3e')]='complete';this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x4b')]=_0xedfa('0x77');this[_0xedfa('0x7')][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3][_0xedfa('0x5c')]=_0x990adc[_0xedfa('0x82')](this['channels'][_0x120fc5[_0xedfa('0x7f')]][_0x11c3e3]['agentconnectAt'],'seconds');}}}}}}catch(_0x1d5ca5){logger[_0xedfa('0x31')]('[%s][voiceAgentReport][blindtransfer]',_0x120fc5[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x1d5ca5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x88')]=function(_0xe04203){var _0x3ef056='';try{if(this['isNotNull'](_0xe04203)){logger[_0xedfa('0x23')](_0xedfa('0x89'),_0xe04203[_0xedfa('0x20')],util[_0xedfa('0x25')](_0xe04203,{'showHidden':![],'depth':null}));if(_0xe04203[_0xedfa('0x8a')]){_0x3ef056=_0xe04203['channel'][_0xedfa('0x8b')](0x0,_0xe04203[_0xedfa('0x8a')][_0xedfa('0x8c')]('-'));if(this['agents'][_0x3ef056]){logger['info']('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0xe04203[_0xedfa('0x20')],_0x3ef056);this['agents'][_0x3ef056]['onhold']=!![];}}}}catch(_0x286016){logger[_0xedfa('0x31')](_0xedfa('0x8d'),_0xe04203[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x286016,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xedfa('0x1a')][_0xedfa('0x8e')]=function(_0x359768){var _0x50caa5='';try{if(this[_0xedfa('0x57')](_0x359768)){logger[_0xedfa('0x23')]('[%s][voiceAgentReport][musiconholdstop]\x20event:',_0x359768[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x359768,{'showHidden':![],'depth':null}));if(_0x359768[_0xedfa('0x8a')]){_0x50caa5=_0x359768[_0xedfa('0x8a')][_0xedfa('0x8b')](0x0,_0x359768[_0xedfa('0x8a')]['lastIndexOf']('-'));if(this[_0xedfa('0xa')][_0x50caa5]){logger[_0xedfa('0x1e')](_0xedfa('0x8f'),_0x359768[_0xedfa('0x20')],_0x50caa5);this['agents'][_0x50caa5][_0xedfa('0x90')]=![];}}}}catch(_0x4819be){logger[_0xedfa('0x31')](_0xedfa('0x91'),_0x359768[_0xedfa('0x20')],util[_0xedfa('0x25')](_0x4819be,{'showHidden':![],'depth':null}));}};module[_0xedfa('0x92')]=VoiceAgentReport;
\ No newline at end of file
index 22b8464..2008f10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9193=['pick','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','user:%s','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastapplication','lastdata','cdr(','match','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','connectedlinename','destinationchannel','toNumber','UserId','routealias','accountcode','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','OutgoingSpoolFailed','variable','mixmonitor_filename','[%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','type','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','xmcs-queue','sipcalluniqueid','parse','sipcallid','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','endtime','diff','billableseconds','answertime','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','resolve','then','transferType','undefined','isEmpty','getSettings','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','some','origtransfererlinkedid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','isNil','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','bluebird','lodash','moment','util','path','ioredis','../../../config/environment','../../../config/logger','../ami','../model/channel','../rpc/setting','unknown','not_inuse','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','set','queue','agi','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','isUndefined','keys','context','from-sip','channel','exten','split','destconnectedlinenum','connectedlinenum','format','name','user:agentconnect','[%s][voiceCallReport][newchannel]\x20event:','info','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','channelstate','merge'];(function(_0x5a3f92,_0x23e7df){var _0x467063=function(_0x387be4){while(--_0x387be4){_0x5a3f92['push'](_0x5a3f92['shift']());}};_0x467063(++_0x23e7df);}(_0x9193,0x7e));var _0x3919=function(_0x587ba2,_0x42eb40){_0x587ba2=_0x587ba2-0x0;var _0x50ec73=_0x9193[_0x587ba2];return _0x50ec73;};'use strict';var BPromise=require(_0x3919('0x0'));var _=require(_0x3919('0x1'));var moment=require(_0x3919('0x2'));var util=require(_0x3919('0x3'));var path=require(_0x3919('0x4'));var Redis=require(_0x3919('0x5'));var config=require(_0x3919('0x6'));var logger=require(_0x3919('0x7'))('ami');var ami=require(_0x3919('0x8'));var Channel=require(_0x3919('0x9'));var RpcSetting=require(_0x3919('0xa'));var statusDesc=[_0x3919('0xb'),_0x3919('0xc'),_0x3919('0xd'),_0x3919('0xe'),_0x3919('0xf'),_0x3919('0x10'),_0x3919('0x11'),_0x3919('0x12'),_0x3919('0x13')];var applications=[_0x3919('0x14'),_0x3919('0x15'),_0x3919('0x16'),'dial',_0x3919('0x17'),_0x3919('0x18')];var dispositions=['NO\x20ANSWER',_0x3919('0x19'),_0x3919('0x19'),_0x3919('0x1a'),_0x3919('0x1a'),_0x3919('0x1a'),_0x3919('0x1b'),_0x3919('0x1c'),_0x3919('0x19'),_0x3919('0x19'),_0x3919('0x19')];var actions={};config[_0x3919('0x1d')]=_['defaults'](config[_0x3919('0x1d')],{'host':_0x3919('0x1e'),'port':0x18eb});var io=require(_0x3919('0x1f'))(new Redis(config[_0x3919('0x1d')]));function VoiceCallReport(_0x15f866){this[_0x3919('0x20')]=_0x15f866[_0x3919('0x20')];this[_0x3919('0x21')]=_0x15f866[_0x3919('0x21')];this[_0x3919('0x22')]={};ami['on'](_0x3919('0x23'),this[_0x3919('0x24')][_0x3919('0x25')](this));ami['on'](_0x3919('0x26'),this[_0x3919('0x24')][_0x3919('0x25')](this));ami['on'](_0x3919('0x27'),this[_0x3919('0x28')][_0x3919('0x25')](this));ami['on'](_0x3919('0x29'),this['syncNewState'][_0x3919('0x25')](this));ami['on'](_0x3919('0x2a'),this['syncVarSet']['bind'](this));ami['on'](_0x3919('0x2b'),this[_0x3919('0x2c')][_0x3919('0x25')](this));ami['on'](_0x3919('0x2d'),this[_0x3919('0x2e')][_0x3919('0x25')](this));ami['on'](_0x3919('0x2f'),this[_0x3919('0x30')][_0x3919('0x25')](this));ami['on'](_0x3919('0x31'),this[_0x3919('0x32')][_0x3919('0x25')](this));ami['on'](_0x3919('0x33'),this[_0x3919('0x34')]['bind'](this));ami['on'](_0x3919('0x35'),this[_0x3919('0x36')][_0x3919('0x25')](this));try{logger['info'](_0x3919('0x37'));ami[_0x3919('0x38')]();}catch(_0x1cedc3){logger[_0x3919('0x39')](_0x3919('0x3a'),util[_0x3919('0x3b')](_0x1cedc3,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x3919('0x3c')][_0x3919('0x3d')]=function(_0xd07104){return _0xd07104!==null&&!_['isUndefined'](_0xd07104);};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x3e')]=function(_0x3847b2,_0x55a3dc,_0x3d09f3){io['to'](_0x3847b2)[_0x3919('0x3e')](_0x55a3dc,_0x3d09f3);};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x2e')]=function(_0x3e5487){try{if(this[_0x3919('0x3d')](_0x3e5487)){logger['info'](_0x3919('0x3f'),_0x3e5487[_0x3919('0x40')],_0x3e5487[_0x3919('0x41')],_0x3e5487[_0x3919('0x42')]);logger[_0x3919('0x43')](_0x3919('0x44'),_0x3e5487['uniqueid'],util[_0x3919('0x3b')](_0x3e5487,{'showHidden':![],'depth':null}));if(_0x3e5487[_0x3919('0x40')]===_0x3e5487[_0x3919('0x45')]){if(!_[_0x3919('0x46')](this['channels'][_0x3e5487[_0x3919('0x40')]])){_['merge'](this[_0x3919('0x20')][_0x3e5487[_0x3919('0x40')]],_['pick'](_0x3e5487,_[_0x3919('0x47')](this['channels'][_0x3e5487['uniqueid']])));}}if(_0x3e5487[_0x3919('0x48')]===_0x3919('0x49')){if(this[_0x3919('0x21')][_0x3e5487[_0x3919('0x4a')]['split']('-')[0x0]]){if(_0x3e5487[_0x3919('0x4b')]=='xcally-motion-preview'){this[_0x3919('0x21')][_0x3e5487[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x4d')]=_0x3e5487[_0x3919('0x4e')];this['emit'](util[_0x3919('0x4f')]('user:%s',this[_0x3919('0x21')][_0x3e5487[_0x3919('0x4a')]['split']('-')[0x0]][_0x3919('0x50')]),_0x3919('0x51'),{'destaccountcode':this[_0x3919('0x21')][_0x3e5487['channel'][_0x3919('0x4c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x3e5487[_0x3919('0x4e')]});}}}}}catch(_0x3fea28){logger[_0x3919('0x39')]('[%s][voiceCallReport][newcallerid]',_0x3e5487[_0x3919('0x40')],util[_0x3919('0x3b')](_0x3fea28,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x28')]=function(_0x579271){try{if(this[_0x3919('0x3d')](_0x579271)){logger[_0x3919('0x43')](_0x3919('0x52'),_0x579271['uniqueid'],util['inspect'](_0x579271,{'showHidden':![],'depth':null}));if(_0x579271[_0x3919('0x40')]===_0x579271[_0x3919('0x45')]&&_0x579271[_0x3919('0x4a')]!='OutgoingSpoolFailed'){if(_[_0x3919('0x46')](this[_0x3919('0x20')][_0x579271[_0x3919('0x40')]])){logger[_0x3919('0x53')](_0x3919('0x54'),_0x579271['uniqueid'],_0x579271[_0x3919('0x48')],_0x579271['exten']);this[_0x3919('0x20')][_0x579271['uniqueid']]=new Channel();this['channels'][_0x579271[_0x3919('0x40')]][_0x3919('0x55')]=moment()[_0x3919('0x4f')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x579271[_0x3919('0x40')]][_0x3919('0x56')]=dispositions[_['toNumber'](_0x579271[_0x3919('0x57')])];_[_0x3919('0x58')](this['channels'][_0x579271[_0x3919('0x40')]],_[_0x3919('0x59')](_0x579271,_[_0x3919('0x47')](this['channels'][_0x579271[_0x3919('0x40')]])));if(_0x579271[_0x3919('0x48')]==='from-sip'){if(this[_0x3919('0x21')][_0x579271['channel'][_0x3919('0x4c')]('-')[0x0]]){if(_['isUndefined'](this[_0x3919('0x21')][_0x579271[_0x3919('0x4a')]['split']('-')[0x0]][_0x3919('0x4d')])){this[_0x3919('0x21')][_0x579271[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x4d')]=_0x579271[_0x3919('0x4b')];logger[_0x3919('0x43')](_0x3919('0x5a'),_0x579271['uniqueid'],util[_0x3919('0x3b')]({'destaccountcode':this[_0x3919('0x21')][_0x579271['channel'][_0x3919('0x4c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x579271[_0x3919('0x4b')]},{'showHidden':![],'depth':null}));this[_0x3919('0x3e')](util['format'](_0x3919('0x5b'),this[_0x3919('0x21')][_0x579271[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x50')]),'user:agentconnect',{'destaccountcode':this[_0x3919('0x21')][_0x579271['channel'][_0x3919('0x4c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x579271[_0x3919('0x4b')]});}}}}}}}catch(_0x1ab5d9){logger['error'](_0x3919('0x5c'),_0x579271[_0x3919('0x40')],util['inspect'](_0x1ab5d9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')]['syncNewExten']=function(_0x3c6920){try{if(this[_0x3919('0x3d')](_0x3c6920)){logger['debug'](_0x3919('0x5d'),_0x3c6920[_0x3919('0x40')],util[_0x3919('0x3b')](_0x3c6920,{'showHidden':![],'depth':null}));if(_0x3c6920[_0x3919('0x40')]===_0x3c6920['linkedid']&&_0x3c6920[_0x3919('0x4b')]!='h'&&_0x3c6920['channel']!='OutgoingSpoolFailed'){_0x3c6920[_0x3919('0x5e')]=_0x3c6920[_0x3919('0x5e')][_0x3919('0x5f')]();_0x3c6920[_0x3919('0x60')]=_0x3c6920[_0x3919('0x61')]&&_0x3c6920[_0x3919('0x61')][_0x3919('0x62')](_0x3919('0x63'))?_0x3c6920[_0x3919('0x61')]:(_0x3c6920['appdata']||_0x3c6920['applicationdata'])[_0x3919('0x5f')]();logger[_0x3919('0x53')](_0x3919('0x64'),_0x3c6920[_0x3919('0x40')],_0x3c6920[_0x3919('0x5e')],_0x3c6920[_0x3919('0x60')]);if(_[_0x3919('0x46')](this[_0x3919('0x20')][_0x3c6920[_0x3919('0x40')]])){this['channels'][_0x3c6920[_0x3919('0x40')]]=new Channel();this['channels'][_0x3c6920[_0x3919('0x40')]][_0x3919('0x55')]=_0x3c6920[_0x3919('0x65')]?moment()['subtract'](moment['duration'](_0x3c6920['duration'])[_0x3919('0x66')](),_0x3919('0x66'))['format'](_0x3919('0x67')):moment()[_0x3919('0x4f')](_0x3919('0x67'));this[_0x3919('0x20')][_0x3c6920['uniqueid']][_0x3919('0x56')]=_0x3919('0x1a');}_[_0x3919('0x58')](this['channels'][_0x3c6920[_0x3919('0x40')]],_[_0x3919('0x59')](_0x3c6920,_[_0x3919('0x47')](this['channels'][_0x3c6920[_0x3919('0x40')]])));if(_[_0x3919('0x68')](applications,_0x3c6920[_0x3919('0x5e')])){this[_0x3919('0x20')][_0x3c6920[_0x3919('0x40')]][_0x3919('0x69')]=_0x3c6920[_0x3919('0x5e')];this['channels'][_0x3c6920[_0x3919('0x40')]][_0x3919('0x6a')]=_0x3c6920[_0x3919('0x60')];if(_0x3c6920[_0x3919('0x5e')]===_0x3919('0x14')&&_[_0x3919('0x62')](_0x3c6920[_0x3919('0x60')][_0x3919('0x5f')](),_0x3919('0x6b'))){var _0x247062=_0x3c6920[_0x3919('0x60')][_0x3919('0x4c')]('=');var _0x43ffd6=_0x247062[0x0][_0x3919('0x5f')]()[_0x3919('0x6c')](/cdr\((.*)\)/);if(_0x43ffd6){this[_0x3919('0x20')][_0x3c6920[_0x3919('0x40')]][_0x43ffd6[0x1]]=_0x247062[0x1];}}else if(_0x3c6920['application']===_0x3919('0x15')){this[_0x3919('0x20')][_0x3c6920['uniqueid']]['queue']=_0x3c6920[_0x3919('0x60')][_0x3919('0x4c')](',')[0x0];}}}}}catch(_0x724871){logger[_0x3919('0x39')](_0x3919('0x6d'),_0x3c6920[_0x3919('0x40')],util[_0x3919('0x3b')](_0x724871,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x6e')]=function(_0x19937e){try{if(this[_0x3919('0x3d')](_0x19937e)){logger[_0x3919('0x53')]('[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s',_0x19937e[_0x3919('0x40')],_0x19937e[_0x3919('0x45')],_0x19937e[_0x3919('0x41')],_0x19937e[_0x3919('0x42')]);logger['debug'](_0x3919('0x6f'),_0x19937e[_0x3919('0x40')],util[_0x3919('0x3b')](_0x19937e,{'showHidden':![],'depth':null}));if(_0x19937e[_0x3919('0x40')]!==_0x19937e[_0x3919('0x45')]){if(this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]]){if(_0x19937e[_0x3919('0x57')]==='6'){if(!this[_0x3919('0x20')][_0x19937e['linkedid']][_0x3919('0x70')]){var _0x337b59=moment();this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]][_0x3919('0x70')]=!![];this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]]['answertime']=_0x337b59[_0x3919('0x4f')](_0x3919('0x67'));if(this[_0x3919('0x20')][_0x19937e['linkedid']][_0x3919('0x55')]){this['channels'][_0x19937e[_0x3919('0x45')]][_0x3919('0x71')]=_0x337b59['diff'](this[_0x3919('0x20')][_0x19937e['linkedid']][_0x3919('0x55')],'seconds');}}this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]][_0x3919('0x45')]=_0x19937e[_0x3919('0x40')];if(_0x19937e['calleridnum']!=='xcally-motion-preview'){this['channels'][_0x19937e[_0x3919('0x45')]]['connectedlinenum']=_0x19937e[_0x3919('0x42')];}this['channels'][_0x19937e[_0x3919('0x45')]][_0x3919('0x72')]=_0x19937e[_0x3919('0x41')];this['channels'][_0x19937e[_0x3919('0x45')]][_0x3919('0x73')]=_0x19937e[_0x3919('0x4a')];this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]][_0x3919('0x56')]=dispositions[_[_0x3919('0x74')](_0x19937e['channelstate'])];if(this['agents'][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]){this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]][_0x3919('0x75')]=this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')]['split']('-')[0x0]]['id'];this[_0x3919('0x20')][_0x19937e['linkedid']]['membername']=this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]['name'];}}}}else{if(this[_0x3919('0x20')][_0x19937e[_0x3919('0x40')]]){if(_0x19937e[_0x3919('0x57')]==='6'){if(this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]){this['channels'][_0x19937e[_0x3919('0x40')]][_0x3919('0x75')]=this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]['id'];this[_0x3919('0x20')][_0x19937e[_0x3919('0x40')]]['membername']=this['agents'][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x50')];}}}}if(_0x19937e[_0x3919('0x57')]==='6'&&_0x19937e[_0x3919('0x48')]==='from-sip'){if(this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]){this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]['destconnectedlinenum']=_0x19937e[_0x3919('0x4b')];var _0x5a5918;if(this[_0x3919('0x20')][_0x19937e[_0x3919('0x40')]])_0x5a5918=this[_0x3919('0x20')][_0x19937e[_0x3919('0x40')]][_0x3919('0x76')];else if(this[_0x3919('0x20')][_0x19937e['linkedid']])_0x5a5918=this[_0x3919('0x20')][_0x19937e[_0x3919('0x45')]][_0x3919('0x76')];logger['debug']('[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:',_0x19937e['uniqueid'],util[_0x3919('0x3b')]({'destaccountcode':this['agents'][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x77')],'destconnectedlinenum':_0x19937e[_0x3919('0x4b')],'routealias':_0x5a5918},{'showHidden':![],'depth':null}));this[_0x3919('0x3e')](util[_0x3919('0x4f')]('user:%s',this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x50')]),_0x3919('0x51'),{'destaccountcode':this[_0x3919('0x21')][_0x19937e[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x19937e[_0x3919('0x4b')],'routealias':_0x5a5918});}}}}catch(_0x3836e1){logger['error'](_0x3919('0x78'),_0x19937e[_0x3919('0x40')],util[_0x3919('0x3b')](_0x3836e1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x79')]=function(_0x71b2b6,_0x4ebe42){try{if(this[_0x3919('0x20')][_0x71b2b6]){logger[_0x3919('0x53')](_0x3919('0x7a'),_0x71b2b6,_0x4ebe42);this[_0x3919('0x20')][_0x71b2b6][_0x3919('0x7b')]=!![];if(_[_0x3919('0x7c')](_0x4ebe42,_0x3919('0x7d'))){_0x4ebe42=_0x4ebe42[_0x3919('0x7e')](_0x3919('0x7d'),_0x3919('0x7f'));}this['channels'][_0x71b2b6]['monitorFilename']=_0x4ebe42;var _0x5ba7ef=_[_0x3919('0x80')](this[_0x3919('0x20')][_0x71b2b6][_0x3919('0x81')],{'filename':_0x4ebe42});if(_['isNil'](_0x5ba7ef)){this[_0x3919('0x20')][_0x71b2b6]['monitors'][_0x3919('0x82')]({'filename':_0x4ebe42,'createdAt':moment()['format'](_0x3919('0x67')),'mixmonitorid':'','status':_0x3919('0x83')});}}}catch(_0x3b67e9){logger[_0x3919('0x39')](_0x3919('0x84'),_0x71b2b6,util[_0x3919('0x3b')](_0x3b67e9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')]['syncVarSet']=function(_0x1e948d){try{if(this['isNotNull'](_0x1e948d)){logger[_0x3919('0x43')](_0x3919('0x85'),_0x1e948d['uniqueid'],util[_0x3919('0x3b')](_0x1e948d,{'showHidden':![],'depth':null}));if(this[_0x3919('0x20')][_0x1e948d[_0x3919('0x40')]]&&_0x1e948d[_0x3919('0x4a')]!=_0x3919('0x86')){if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')])){if(this['isNotNull'](_0x1e948d['variable'][_0x3919('0x88')])){logger['info'](_0x3919('0x89'),_0x1e948d['uniqueid'],_0x1e948d['value']);this['syncMixMonitorFilename'](_0x1e948d[_0x3919('0x40')],_0x1e948d[_0x3919('0x8a')]);}else if(this['isNotNull'](_0x1e948d[_0x3919('0x87')][_0x3919('0x8b')])){logger[_0x3919('0x53')](_0x3919('0x8c'),_0x1e948d['uniqueid'],_0x1e948d['value']);this[_0x3919('0x20')][_0x1e948d['uniqueid']][_0x3919('0x42')]=_0x1e948d['value'];}else if(this['isNotNull'](_0x1e948d[_0x3919('0x87')][_0x3919('0x8d')])){logger[_0x3919('0x53')](_0x3919('0x8e'),_0x1e948d[_0x3919('0x40')],_0x1e948d[_0x3919('0x8a')]);this[_0x3919('0x20')][_0x1e948d[_0x3919('0x40')]][_0x3919('0x8f')]=_0x1e948d['value'];}else if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')][_0x3919('0x90')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x1e948d[_0x3919('0x40')],_0x1e948d[_0x3919('0x8a')]);this[_0x3919('0x20')][_0x1e948d['uniqueid']][_0x3919('0x91')]=_0x1e948d[_0x3919('0x8a')];}else if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')][_0x3919('0x92')])){logger[_0x3919('0x53')](_0x3919('0x93'),_0x1e948d[_0x3919('0x40')],_0x1e948d[_0x3919('0x8a')][_0x3919('0x4c')](',')[0x0]);this[_0x3919('0x20')][_0x1e948d[_0x3919('0x40')]]['queue']=_0x1e948d[_0x3919('0x8a')][_0x3919('0x4c')](',')[0x0];}else if(this['isNotNull'](_0x1e948d['variable'][_0x3919('0x94')])){logger[_0x3919('0x53')](_0x3919('0x95'),_0x1e948d['uniqueid'],_0x1e948d['value']);this[_0x3919('0x20')][_0x1e948d[_0x3919('0x40')]][_0x3919('0x96')]=_0x1e948d[_0x3919('0x8a')];}else if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')]['xmd-destination'])){logger[_0x3919('0x53')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x1e948d[_0x3919('0x40')],_0x1e948d['value']);this[_0x3919('0x20')][_0x1e948d[_0x3919('0x40')]][_0x3919('0x97')]=_0x1e948d['value'];}else if(this['isNotNull'](_0x1e948d[_0x3919('0x87')][_0x3919('0x98')])){logger[_0x3919('0x53')](_0x3919('0x99'),_0x1e948d[_0x3919('0x40')],_0x1e948d['value']);this[_0x3919('0x20')][_0x1e948d['uniqueid']]['calleridpreview']=_0x1e948d[_0x3919('0x8a')];}else if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')][_0x3919('0x9a')])){logger[_0x3919('0x53')]('[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s',_0x1e948d[_0x3919('0x40')],_0x1e948d['value']);this[_0x3919('0x20')][_0x1e948d[_0x3919('0x40')]][_0x3919('0x15')]=_0x1e948d['value'];}else if(this['isNotNull'](_0x1e948d['variable']['sipcallid'])){logger[_0x3919('0x53')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x1e948d[_0x3919('0x40')],_0x1e948d[_0x3919('0x8a')]);this['channels'][_0x1e948d[_0x3919('0x40')]][_0x3919('0x9b')]=_0x1e948d['value'];}}}else if(this['isNotNull'](_0x1e948d[_0x3919('0x87')]['mixmonitor_filename'])){if(_0x1e948d[_0x3919('0x8a')]){var _0x1d7fda=path[_0x3919('0x9c')](_0x1e948d['value'])[_0x3919('0x50')];logger[_0x3919('0x53')](_0x3919('0x89'),_0x1d7fda,_0x1e948d[_0x3919('0x8a')]);this[_0x3919('0x79')](_0x1d7fda,_0x1e948d[_0x3919('0x8a')]);}}else if(this['channels'][_0x1e948d['linkedid']]){if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')])){if(this[_0x3919('0x3d')](_0x1e948d[_0x3919('0x87')][_0x3919('0x9d')])){logger[_0x3919('0x53')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x1e948d['linkedid'],_0x1e948d[_0x3919('0x8a')]);this[_0x3919('0x20')][_0x1e948d[_0x3919('0x45')]][_0x3919('0x9e')]=_0x1e948d[_0x3919('0x8a')];}}}}}catch(_0x4a2b27){logger[_0x3919('0x39')](_0x3919('0x9f'),_0x1e948d['uniqueid'],util[_0x3919('0x3b')](_0x4a2b27,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')]['syncHangup']=function(_0x2c8ab3){try{if(this[_0x3919('0x3d')](_0x2c8ab3)){logger['debug']('[%s][voiceCallReport][hangup]\x20event:',_0x2c8ab3['uniqueid'],util[_0x3919('0x3b')](_0x2c8ab3,{'showHidden':![],'depth':null}));if(this[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]]){logger[_0x3919('0x53')](_0x3919('0xa0'),_0x2c8ab3[_0x3919('0x40')],_0x2c8ab3[_0x3919('0xa1')]);var _0xe5583d=moment();this['channels'][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0xa2')]=_0xe5583d['format'](_0x3919('0x67'));this[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x65')]=_0xe5583d[_0x3919('0xa3')](this[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x55')],_0x3919('0x66'));if(this[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]]['answered']){this['channels'][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0xa4')]=_0xe5583d[_0x3919('0xa3')](this[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0xa5')],'seconds');this[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x71')]=this['channels'][_0x2c8ab3[_0x3919('0x40')]]['duration']-this[_0x3919('0x20')][_0x2c8ab3['uniqueid']][_0x3919('0xa4')];}if(_0x2c8ab3[_0x3919('0x48')]==='from-sip'){if(this['agents'][_0x2c8ab3[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]){this[_0x3919('0x21')][_0x2c8ab3[_0x3919('0x4a')]['split']('-')[0x0]]=_[_0x3919('0xa6')](this['agents'][_0x2c8ab3[_0x3919('0x4a')]['split']('-')[0x0]],[_0x3919('0x4d')]);logger[_0x3919('0x43')](_0x3919('0xa7'),_0x2c8ab3['uniqueid'],util['inspect']({'id':this[_0x3919('0x21')][_0x2c8ab3[_0x3919('0x4a')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x3919('0x21')][_0x2c8ab3[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x77')]},{'showHidden':![],'depth':null}));this[_0x3919('0x3e')](util[_0x3919('0x4f')](_0x3919('0x5b'),this['agents'][_0x2c8ab3[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]['name']),_0x3919('0xa8'),{'id':this[_0x3919('0x21')][_0x2c8ab3[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]]['id'],'destaccountcode':this[_0x3919('0x21')][_0x2c8ab3[_0x3919('0x4a')][_0x3919('0x4c')]('-')[0x0]][_0x3919('0x77')]});}}var _0xc04193=this;Promise[_0x3919('0xa9')]()[_0x3919('0xaa')](function(){var _0x18519f=_0xc04193[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]];if(typeof _0x18519f[_0x3919('0xab')]===_0x3919('0xac'))return;if(_[_0x3919('0xad')](_0x18519f[_0x3919('0x81')]))return;return RpcSetting[_0x3919('0xae')]()[_0x3919('0xaa')](function(_0x2b3dae){if(!_0x2b3dae['stopRecordingOnTransfer'])return;return Promise[_0x3919('0xa9')]()['then'](function(){return ami[_0x3919('0xaf')]({'action':_0x3919('0xb0'),'channel':_0x18519f[_0x3919('0x4a')]})[_0x3919('0xb1')](function(){});})[_0x3919('0xaa')](function(){return ami['Action']({'action':_0x3919('0xb0'),'channel':_0x18519f[_0x3919('0x73')]})[_0x3919('0xb1')](function(){})[_0x3919('0xb2')](function(){var _0x5c723a=_0xc04193[_0x3919('0x21')][_0x18519f[_0x3919('0x73')]['split']('-')[0x0]];if(!_0x5c723a)return;io['emit'](_0x3919('0xb3'),{'agentId':_0x5c723a['id'],'uniqueid':_0x18519f[_0x3919('0x40')]});});});});})[_0x3919('0xaa')](function(){if(_0x2c8ab3[_0x3919('0xb4')]===_0x3919('0xb5')){_0xc04193[_0x3919('0x22')][_0x2c8ab3[_0x3919('0x40')]]=_0xc04193[_0x3919('0x20')][_0x2c8ab3['uniqueid']];}else{if(_0xc04193['channels'][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x91')]===_0x3919('0xb6')&&_0xc04193['blindTransfers'][_0x2c8ab3[_0x3919('0x40')]]){_0xc04193['channels'][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x40')]=[_0xc04193[_0x3919('0x20')][_0x2c8ab3['uniqueid']][_0x3919('0x45')],_0xc04193[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x45')]=_0xc04193[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]][_0x3919('0x40')]][0x0];delete _0xc04193[_0x3919('0x22')][_0x2c8ab3[_0x3919('0x40')]];}}logger[_0x3919('0x43')](_0x3919('0xb7'),_0x2c8ab3[_0x3919('0x40')],util[_0x3919('0x3b')](_0xc04193[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]],{'showHidden':![],'depth':null}));ami[_0x3919('0x3e')](_0x3919('0xb8'),_0xc04193[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]]);delete _0xc04193[_0x3919('0x20')][_0x2c8ab3[_0x3919('0x40')]];});}}}catch(_0x3e6564){logger['error'](_0x3919('0xb9'),_0x2c8ab3['uniqueid'],util[_0x3919('0x3b')](_0x3e6564,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncAttendedTransfer']=function(_0x3fde7f){try{if(this[_0x3919('0x3d')](_0x3fde7f)){logger[_0x3919('0x53')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x3fde7f['uniqueid'],_0x3fde7f[_0x3919('0xba')],_0x3fde7f[_0x3919('0xbb')]);logger[_0x3919('0x43')](_0x3919('0xbc'),_0x3fde7f[_0x3919('0x40')],util[_0x3919('0x3b')](_0x3fde7f,{'showHidden':![],'depth':null}));if(this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xbd')]]){this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xbd')]][_0x3919('0xbe')]=_0x3fde7f[_0x3919('0xba')];this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xbd')]][_0x3919('0xbf')]=_0x3fde7f[_0x3919('0xbb')];if(this['channels'][_0x3fde7f[_0x3919('0xc0')]]){var _0x4f990e=this['channels'][_0x3fde7f[_0x3919('0xc0')]];this[_0x3919('0x20')][_0x3fde7f['secondtransfereruniqueid']]=this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xbd')]];this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xbd')]]=_0x4f990e;}}else if(this['channels'][_0x3fde7f['transfertargetuniqueid']]){this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc1')]][_0x3919('0xbe')]=_0x3fde7f[_0x3919('0xba')];this[_0x3919('0x20')][_0x3fde7f['transfertargetuniqueid']][_0x3919('0xbf')]=_0x3fde7f[_0x3919('0xbb')];if(this['channels'][_0x3fde7f[_0x3919('0xc2')]]){var _0x4f990e=this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc2')]];this[_0x3919('0x20')][_0x3fde7f['origtransfereruniqueid']]=this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc1')]];this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc1')]]=_0x4f990e;}}if((this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc2')]]||this['channels'][_0x3fde7f['origtransfererlinkedid']])&&this[_0x3919('0x20')][_0x3fde7f['secondtransfereruniqueid']]){var _0x5552c8=_[_0x3919('0xc3')]([this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc2')]],this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc4')]],this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc0')]]],function(_0x392e49){return _0x392e49&&_0x392e49[_0x3919('0x91')]===_0x3919('0xb6')&&_0x392e49['routeid'];});if(_0x5552c8){if(this['channels'][_0x3fde7f[_0x3919('0xc2')]])this['channels'][_0x3fde7f['origtransfereruniqueid']][_0x3919('0xab')]='ATTENDED';if(this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc4')]])this[_0x3919('0x20')][_0x3fde7f[_0x3919('0xc4')]]['transferType']='ATTENDED';this['channels'][_0x3fde7f[_0x3919('0xc0')]][_0x3919('0xab')]=_0x3919('0xc5');}}}}catch(_0x4ebd3b){logger[_0x3919('0x39')](_0x3919('0xc6'),_0x3fde7f[_0x3919('0x40')],util[_0x3919('0x3b')](_0x4ebd3b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x3919('0x32')]=function(_0x5a9fde){try{if(this[_0x3919('0x3d')](_0x5a9fde)){logger['info'](_0x3919('0xc7'),_0x5a9fde[_0x3919('0x40')],_0x5a9fde[_0x3919('0xc8')],_0x5a9fde[_0x3919('0xc9')]);logger['debug'](_0x3919('0xca'),_0x5a9fde[_0x3919('0x40')],util[_0x3919('0x3b')](_0x5a9fde,{'showHidden':![],'depth':null}));if(this[_0x3919('0x20')][_0x5a9fde[_0x3919('0xbd')]]){this[_0x3919('0x20')][_0x5a9fde['transfereeuniqueid']][_0x3919('0xbe')]=_0x5a9fde[_0x3919('0xc8')];this[_0x3919('0x20')][_0x5a9fde[_0x3919('0xbd')]][_0x3919('0xbf')]=_0x5a9fde['extension'];this[_0x3919('0x20')][_0x5a9fde['transfereeuniqueid']][_0x3919('0xab')]=_0x3919('0xcb');this['syncHangup']({'event':_0x3919('0xb5'),'uniqueid':_0x5a9fde[_0x3919('0xbd')],'context':_0x5a9fde[_0x3919('0x48')],'channel':_0x5a9fde[_0x3919('0xcc')]});}else{this[_0x3919('0x20')][_0x5a9fde[_0x3919('0xcd')]]['transferType']=_0x3919('0xcb');}}}catch(_0x42d079){logger[_0x3919('0x39')](_0x3919('0xce'),_0x5a9fde['uniqueid'],util[_0x3919('0x3b')](_0x42d079,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x34')]=function(_0x370ae3){try{if(this['isNotNull'](_0x370ae3)){logger['debug'](_0x3919('0xcf'),_0x370ae3[_0x3919('0x40')],util[_0x3919('0x3b')](_0x370ae3,{'showHidden':![],'depth':null}));if(this['channels'][_0x370ae3[_0x3919('0x40')]]){if(!_[_0x3919('0xd0')](this[_0x3919('0x20')][_0x370ae3[_0x3919('0x40')]][_0x3919('0xa5')])){this[_0x3919('0x20')][_0x370ae3[_0x3919('0x40')]][_0x3919('0xd1')]=moment()[_0x3919('0x4f')](_0x3919('0x67'));logger['info'](_0x3919('0xd2'),_0x370ae3[_0x3919('0x40')],this['channels'][_0x370ae3[_0x3919('0x40')]][_0x3919('0xd1')]);}}}}catch(_0x28cef8){logger[_0x3919('0x39')]('[%s][voiceCallReport][musiconholdstart]',_0x370ae3[_0x3919('0x40')],util[_0x3919('0x3b')](_0x28cef8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x3919('0x3c')][_0x3919('0x36')]=function(_0x3d3ae6){try{if(this[_0x3919('0x3d')](_0x3d3ae6)){logger['debug']('[%s][voiceCallReport][musiconholdstop]\x20event:',_0x3d3ae6[_0x3919('0x40')],util['inspect'](_0x3d3ae6,{'showHidden':![],'depth':null}));if(this[_0x3919('0x20')][_0x3d3ae6[_0x3919('0x40')]]){if(!_[_0x3919('0xd0')](this[_0x3919('0x20')][_0x3d3ae6[_0x3919('0x40')]][_0x3919('0xd1')])){this[_0x3919('0x20')][_0x3d3ae6[_0x3919('0x40')]][_0x3919('0xd3')]+=moment()['milliseconds'](0x0)[_0x3919('0xa3')](this['channels'][_0x3d3ae6[_0x3919('0x40')]]['mohstarttime'],_0x3919('0x66'));logger['info'](_0x3919('0xd4'),_0x3d3ae6['uniqueid'],this['channels'][_0x3d3ae6[_0x3919('0x40')]][_0x3919('0xd3')]);delete this['channels'][_0x3d3ae6[_0x3919('0x40')]]['mohstarttime'];}}}}catch(_0x55e888){logger[_0x3919('0x39')](_0x3919('0xd5'),_0x3d3ae6['uniqueid'],util[_0x3919('0x3b')](_0x55e888,{'showHidden':![],'depth':null}));}};module[_0x3919('0xd6')]=VoiceCallReport;
\ No newline at end of file
+var _0x05a3=['value','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','answertime','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','then','transferType','undefined','stopRecordingOnTransfer','resolve','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','event','BlindTransfer','type','outbound','custom:voiceCallReport','[%s][voiceCallReport][hangup]','syncAttendedTransfer','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','ATTENDED','[%s][voiceCallReport][attendedtransfer]','transfereecalleridnum','extension','BLIND','transfererchannel','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','bluebird','lodash','moment','util','path','ioredis','../../../config/logger','ami','../ami','../model/channel','../rpc/setting','unknown','not_inuse','unavailable','ringing','ringinuse','onhold','set','queue','agi','dial','playback','voicemail','NO\x20ANSWER','FAILED','ANSWERED','defaults','localhost','socket.io-emitter','redis','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncVarSet','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncBlindTransfer','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','isNotNull','isUndefined','prototype','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','inspect','merge','pick','context','channel','exten','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:%s','split','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','linkedid','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','keys','from-sip','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','emit','name','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','includes','lastapplication','lastdata','match','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','diff','connectedlinename','destinationchannel','UserId','membername','channelstate','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','find','monitors','isNil','push','rec','OutgoingSpoolFailed','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s'];(function(_0x558e45,_0x4f5e4f){var _0x3e9075=function(_0x289725){while(--_0x289725){_0x558e45['push'](_0x558e45['shift']());}};_0x3e9075(++_0x4f5e4f);}(_0x05a3,0x115));var _0x305a=function(_0x15b3eb,_0x63681e){_0x15b3eb=_0x15b3eb-0x0;var _0x1c54cc=_0x05a3[_0x15b3eb];return _0x1c54cc;};'use strict';var BPromise=require(_0x305a('0x0'));var _=require(_0x305a('0x1'));var moment=require(_0x305a('0x2'));var util=require(_0x305a('0x3'));var path=require(_0x305a('0x4'));var Redis=require(_0x305a('0x5'));var config=require('../../../config/environment');var logger=require(_0x305a('0x6'))(_0x305a('0x7'));var ami=require(_0x305a('0x8'));var Channel=require(_0x305a('0x9'));var RpcSetting=require(_0x305a('0xa'));var statusDesc=[_0x305a('0xb'),_0x305a('0xc'),'inuse','busy','invalid',_0x305a('0xd'),_0x305a('0xe'),_0x305a('0xf'),_0x305a('0x10')];var applications=[_0x305a('0x11'),_0x305a('0x12'),_0x305a('0x13'),_0x305a('0x14'),_0x305a('0x15'),_0x305a('0x16')];var dispositions=[_0x305a('0x17'),_0x305a('0x18'),_0x305a('0x18'),_0x305a('0x17'),'NO\x20ANSWER',_0x305a('0x17'),_0x305a('0x19'),'BUSY','FAILED','FAILED',_0x305a('0x18')];var actions={};config['redis']=_[_0x305a('0x1a')](config['redis'],{'host':_0x305a('0x1b'),'port':0x18eb});var io=require(_0x305a('0x1c'))(new Redis(config[_0x305a('0x1d')]));function VoiceCallReport(_0x17e87b){this[_0x305a('0x1e')]=_0x17e87b[_0x305a('0x1e')];this[_0x305a('0x1f')]=_0x17e87b['agents'];this[_0x305a('0x20')]={};ami['on'](_0x305a('0x21'),this[_0x305a('0x22')][_0x305a('0x23')](this));ami['on'](_0x305a('0x24'),this['syncNewExten'][_0x305a('0x23')](this));ami['on'](_0x305a('0x25'),this[_0x305a('0x26')]['bind'](this));ami['on'](_0x305a('0x27'),this['syncNewState'][_0x305a('0x23')](this));ami['on'](_0x305a('0x28'),this[_0x305a('0x29')]['bind'](this));ami['on']('hangup',this[_0x305a('0x2a')][_0x305a('0x23')](this));ami['on'](_0x305a('0x2b'),this[_0x305a('0x2c')]['bind'](this));ami['on'](_0x305a('0x2d'),this['syncAttendedTransfer'][_0x305a('0x23')](this));ami['on']('blindtransfer',this[_0x305a('0x2e')][_0x305a('0x23')](this));ami['on']('musiconholdstart',this[_0x305a('0x2f')]['bind'](this));ami['on']('musiconholdstop',this[_0x305a('0x30')][_0x305a('0x23')](this));try{logger[_0x305a('0x31')](_0x305a('0x32'));ami[_0x305a('0x33')]();}catch(_0x391b96){logger[_0x305a('0x34')](_0x305a('0x35'),util['inspect'](_0x391b96,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x305a('0x36')]=function(_0x200d33){return _0x200d33!==null&&!_[_0x305a('0x37')](_0x200d33);};VoiceCallReport['prototype']['emit']=function(_0x169af5,_0x4715ce,_0x41bb32){io['to'](_0x169af5)['emit'](_0x4715ce,_0x41bb32);};VoiceCallReport[_0x305a('0x38')]['syncNewCallerId']=function(_0xbbc3b5){try{if(this[_0x305a('0x36')](_0xbbc3b5)){logger[_0x305a('0x31')](_0x305a('0x39'),_0xbbc3b5[_0x305a('0x3a')],_0xbbc3b5['calleridname'],_0xbbc3b5[_0x305a('0x3b')]);logger[_0x305a('0x3c')](_0x305a('0x3d'),_0xbbc3b5[_0x305a('0x3a')],util[_0x305a('0x3e')](_0xbbc3b5,{'showHidden':![],'depth':null}));if(_0xbbc3b5[_0x305a('0x3a')]===_0xbbc3b5['linkedid']){if(!_[_0x305a('0x37')](this[_0x305a('0x1e')][_0xbbc3b5[_0x305a('0x3a')]])){_[_0x305a('0x3f')](this[_0x305a('0x1e')][_0xbbc3b5[_0x305a('0x3a')]],_[_0x305a('0x40')](_0xbbc3b5,_['keys'](this[_0x305a('0x1e')][_0xbbc3b5[_0x305a('0x3a')]])));}}if(_0xbbc3b5[_0x305a('0x41')]==='from-sip'){if(this[_0x305a('0x1f')][_0xbbc3b5[_0x305a('0x42')]['split']('-')[0x0]]){if(_0xbbc3b5[_0x305a('0x43')]==_0x305a('0x44')){this['agents'][_0xbbc3b5[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x45')]=_0xbbc3b5[_0x305a('0x46')];this['emit'](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0xbbc3b5[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['name']),_0x305a('0x4a'),{'destaccountcode':this[_0x305a('0x1f')][_0xbbc3b5[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0xbbc3b5[_0x305a('0x46')]});}}}}}catch(_0x52abb8){logger[_0x305a('0x34')](_0x305a('0x4c'),_0xbbc3b5[_0x305a('0x3a')],util['inspect'](_0x52abb8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')]['syncNewChannel']=function(_0x89b937){try{if(this['isNotNull'](_0x89b937)){logger[_0x305a('0x3c')]('[%s][voiceCallReport][newchannel]\x20event:',_0x89b937[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x89b937,{'showHidden':![],'depth':null}));if(_0x89b937[_0x305a('0x3a')]===_0x89b937[_0x305a('0x4d')]&&_0x89b937[_0x305a('0x42')]!='OutgoingSpoolFailed'){if(_[_0x305a('0x37')](this['channels'][_0x89b937['uniqueid']])){logger[_0x305a('0x31')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x89b937[_0x305a('0x3a')],_0x89b937[_0x305a('0x41')],_0x89b937[_0x305a('0x43')]);this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]]=new Channel();this[_0x305a('0x1e')][_0x89b937['uniqueid']][_0x305a('0x4e')]=moment()[_0x305a('0x47')](_0x305a('0x4f'));this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]][_0x305a('0x50')]=dispositions[_[_0x305a('0x51')](_0x89b937['channelstate'])];_[_0x305a('0x3f')](this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]],_[_0x305a('0x40')](_0x89b937,_[_0x305a('0x52')](this[_0x305a('0x1e')][_0x89b937[_0x305a('0x3a')]])));if(_0x89b937[_0x305a('0x41')]===_0x305a('0x53')){if(this[_0x305a('0x1f')][_0x89b937['channel']['split']('-')[0x0]]){if(_['isUndefined'](this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x45')])){this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')]['split']('-')[0x0]]['destconnectedlinenum']=_0x89b937[_0x305a('0x43')];logger[_0x305a('0x3c')](_0x305a('0x54'),_0x89b937[_0x305a('0x3a')],util['inspect']({'destaccountcode':this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x89b937[_0x305a('0x43')]},{'showHidden':![],'depth':null}));this[_0x305a('0x55')](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x56')]),_0x305a('0x4a'),{'destaccountcode':this[_0x305a('0x1f')][_0x89b937[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x89b937[_0x305a('0x43')]});}}}}}}}catch(_0x5f2d0d){logger[_0x305a('0x34')]('[%s][voiceCallReport][newchannel]',_0x89b937['uniqueid'],util[_0x305a('0x3e')](_0x5f2d0d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x22')]=function(_0x4ff7fc){try{if(this[_0x305a('0x36')](_0x4ff7fc)){logger[_0x305a('0x3c')](_0x305a('0x57'),_0x4ff7fc[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x4ff7fc,{'showHidden':![],'depth':null}));if(_0x4ff7fc[_0x305a('0x3a')]===_0x4ff7fc[_0x305a('0x4d')]&&_0x4ff7fc['exten']!='h'&&_0x4ff7fc[_0x305a('0x42')]!='OutgoingSpoolFailed'){_0x4ff7fc[_0x305a('0x58')]=_0x4ff7fc[_0x305a('0x58')][_0x305a('0x59')]();_0x4ff7fc[_0x305a('0x5a')]=_0x4ff7fc[_0x305a('0x5b')]&&_0x4ff7fc[_0x305a('0x5b')][_0x305a('0x5c')](_0x305a('0x5d'))?_0x4ff7fc[_0x305a('0x5b')]:(_0x4ff7fc['appdata']||_0x4ff7fc[_0x305a('0x5a')])[_0x305a('0x59')]();logger['info'](_0x305a('0x5e'),_0x4ff7fc[_0x305a('0x3a')],_0x4ff7fc[_0x305a('0x58')],_0x4ff7fc[_0x305a('0x5a')]);if(_[_0x305a('0x37')](this[_0x305a('0x1e')][_0x4ff7fc['uniqueid']])){this['channels'][_0x4ff7fc[_0x305a('0x3a')]]=new Channel();this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x4e')]=_0x4ff7fc[_0x305a('0x5f')]?moment()[_0x305a('0x60')](moment[_0x305a('0x5f')](_0x4ff7fc[_0x305a('0x5f')])[_0x305a('0x61')](),_0x305a('0x61'))['format'](_0x305a('0x4f')):moment()[_0x305a('0x47')](_0x305a('0x4f'));this['channels'][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x50')]=_0x305a('0x17');}_[_0x305a('0x3f')](this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]],_[_0x305a('0x40')](_0x4ff7fc,_[_0x305a('0x52')](this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]])));if(_[_0x305a('0x62')](applications,_0x4ff7fc[_0x305a('0x58')])){this['channels'][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x63')]=_0x4ff7fc[_0x305a('0x58')];this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]][_0x305a('0x64')]=_0x4ff7fc[_0x305a('0x5a')];if(_0x4ff7fc[_0x305a('0x58')]===_0x305a('0x11')&&_[_0x305a('0x5c')](_0x4ff7fc[_0x305a('0x5a')]['toLowerCase'](),'cdr(')){var _0x45908c=_0x4ff7fc[_0x305a('0x5a')][_0x305a('0x49')]('=');var _0x24423b=_0x45908c[0x0][_0x305a('0x59')]()[_0x305a('0x65')](/cdr\((.*)\)/);if(_0x24423b){this[_0x305a('0x1e')][_0x4ff7fc[_0x305a('0x3a')]][_0x24423b[0x1]]=_0x45908c[0x1];}}else if(_0x4ff7fc['application']===_0x305a('0x12')){this['channels'][_0x4ff7fc[_0x305a('0x3a')]]['queue']=_0x4ff7fc[_0x305a('0x5a')][_0x305a('0x49')](',')[0x0];}}}}}catch(_0x314ff9){logger['error'](_0x305a('0x66'),_0x4ff7fc[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x314ff9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x67')]=function(_0x10e5a0){try{if(this[_0x305a('0x36')](_0x10e5a0)){logger[_0x305a('0x31')](_0x305a('0x68'),_0x10e5a0[_0x305a('0x3a')],_0x10e5a0[_0x305a('0x4d')],_0x10e5a0[_0x305a('0x69')],_0x10e5a0['calleridnum']);logger[_0x305a('0x3c')](_0x305a('0x6a'),_0x10e5a0[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x10e5a0,{'showHidden':![],'depth':null}));if(_0x10e5a0[_0x305a('0x3a')]!==_0x10e5a0['linkedid']){if(this[_0x305a('0x1e')][_0x10e5a0['linkedid']]){if(_0x10e5a0['channelstate']==='6'){if(!this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6b')]){var _0x2cefd7=moment();this['channels'][_0x10e5a0['linkedid']][_0x305a('0x6b')]=!![];this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]]['answertime']=_0x2cefd7[_0x305a('0x47')](_0x305a('0x4f'));if(this[_0x305a('0x1e')][_0x10e5a0['linkedid']][_0x305a('0x4e')]){this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6c')]=_0x2cefd7[_0x305a('0x6d')](this['channels'][_0x10e5a0['linkedid']]['starttime'],_0x305a('0x61'));}}this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x4d')]=_0x10e5a0[_0x305a('0x3a')];if(_0x10e5a0[_0x305a('0x3b')]!==_0x305a('0x44')){this['channels'][_0x10e5a0['linkedid']]['connectedlinenum']=_0x10e5a0['calleridnum'];}this['channels'][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6e')]=_0x10e5a0[_0x305a('0x69')];this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x6f')]=_0x10e5a0[_0x305a('0x42')];this[_0x305a('0x1e')][_0x10e5a0['linkedid']][_0x305a('0x50')]=dispositions[_[_0x305a('0x51')](_0x10e5a0['channelstate'])];if(this[_0x305a('0x1f')][_0x10e5a0['channel'][_0x305a('0x49')]('-')[0x0]]){this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x70')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['id'];this['channels'][_0x10e5a0[_0x305a('0x4d')]][_0x305a('0x71')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')]['split']('-')[0x0]]['name'];}}}}else{if(this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]]){if(_0x10e5a0[_0x305a('0x72')]==='6'){if(this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]){this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]][_0x305a('0x70')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['id'];this['channels'][_0x10e5a0['uniqueid']][_0x305a('0x71')]=this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x56')];}}}}if(_0x10e5a0['channelstate']==='6'&&_0x10e5a0[_0x305a('0x41')]===_0x305a('0x53')){if(this['agents'][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]){this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')]['split']('-')[0x0]]['destconnectedlinenum']=_0x10e5a0['exten'];var _0xabd758;if(this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]])_0xabd758=this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x3a')]]['routealias'];else if(this['channels'][_0x10e5a0[_0x305a('0x4d')]])_0xabd758=this[_0x305a('0x1e')][_0x10e5a0[_0x305a('0x4d')]]['routealias'];logger['debug'](_0x305a('0x73'),_0x10e5a0[_0x305a('0x3a')],util['inspect']({'destaccountcode':this['agents'][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x10e5a0[_0x305a('0x43')],'routealias':_0xabd758},{'showHidden':![],'depth':null}));this[_0x305a('0x55')](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x56')]),_0x305a('0x4a'),{'destaccountcode':this[_0x305a('0x1f')][_0x10e5a0[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')],'destconnectedlinenum':_0x10e5a0[_0x305a('0x43')],'routealias':_0xabd758});}}}}catch(_0x430ad1){logger['error'](_0x305a('0x74'),_0x10e5a0[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x430ad1,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x75')]=function(_0x2e949f,_0x1ba35a){try{if(this[_0x305a('0x1e')][_0x2e949f]){logger[_0x305a('0x31')](_0x305a('0x76'),_0x2e949f,_0x1ba35a);this[_0x305a('0x1e')][_0x2e949f][_0x305a('0x77')]=!![];if(_[_0x305a('0x78')](_0x1ba35a,_0x305a('0x79'))){_0x1ba35a=_0x1ba35a['replace']('.wav49','.WAV');}this[_0x305a('0x1e')][_0x2e949f]['monitorFilename']=_0x1ba35a;var _0x1f090b=_[_0x305a('0x7a')](this[_0x305a('0x1e')][_0x2e949f][_0x305a('0x7b')],{'filename':_0x1ba35a});if(_[_0x305a('0x7c')](_0x1f090b)){this[_0x305a('0x1e')][_0x2e949f][_0x305a('0x7b')][_0x305a('0x7d')]({'filename':_0x1ba35a,'createdAt':moment()[_0x305a('0x47')](_0x305a('0x4f')),'mixmonitorid':'','status':_0x305a('0x7e')});}}}catch(_0x5d32be){logger[_0x305a('0x34')]('[%s][voiceCallReport][mixMonitorFilename]',_0x2e949f,util[_0x305a('0x3e')](_0x5d32be,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x305a('0x29')]=function(_0x405b30){try{if(this[_0x305a('0x36')](_0x405b30)){logger[_0x305a('0x3c')]('[%s][voiceCallReport][varset]\x20event:',_0x405b30[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x405b30,{'showHidden':![],'depth':null}));if(this['channels'][_0x405b30[_0x305a('0x3a')]]&&_0x405b30[_0x305a('0x42')]!=_0x305a('0x7f')){if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')])){if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x81')])){logger['info'](_0x305a('0x82'),_0x405b30['uniqueid'],_0x405b30['value']);this[_0x305a('0x75')](_0x405b30['uniqueid'],_0x405b30['value']);}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')]['xmd-phone'])){logger[_0x305a('0x31')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x3b')]=_0x405b30['value'];}else if(this['isNotNull'](_0x405b30['variable'][_0x305a('0x84')])){logger[_0x305a('0x31')](_0x305a('0x85'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x86')]=_0x405b30[_0x305a('0x83')];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x87')])){logger[_0x305a('0x31')]('[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]]['type']=_0x405b30['value'];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x88')])){logger['info'](_0x305a('0x89'),_0x405b30['uniqueid'],_0x405b30['value']['split'](',')[0x0]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x12')]=_0x405b30[_0x305a('0x83')][_0x305a('0x49')](',')[0x0];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x8a')])){logger[_0x305a('0x31')](_0x305a('0x8b'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x8c')]=_0x405b30[_0x305a('0x83')];}else if(this['isNotNull'](_0x405b30[_0x305a('0x80')][_0x305a('0x8d')])){logger[_0x305a('0x31')](_0x305a('0x8e'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]]['destination']=_0x405b30[_0x305a('0x83')];}else if(this[_0x305a('0x36')](_0x405b30['variable']['xmd-callerid-preview'])){logger['info'](_0x305a('0x8f'),_0x405b30[_0x305a('0x3a')],_0x405b30[_0x305a('0x83')]);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x90')]=_0x405b30[_0x305a('0x83')];}else if(this[_0x305a('0x36')](_0x405b30[_0x305a('0x80')][_0x305a('0x91')])){logger['info'](_0x305a('0x92'),_0x405b30[_0x305a('0x3a')],_0x405b30['value']);this[_0x305a('0x1e')][_0x405b30[_0x305a('0x3a')]][_0x305a('0x12')]=_0x405b30[_0x305a('0x83')];}else if(this['isNotNull'](_0x405b30[_0x305a('0x80')][_0x305a('0x93')])){logger[_0x305a('0x31')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x405b30['uniqueid'],_0x405b30['value']);this['channels'][_0x405b30[_0x305a('0x3a')]]['sipcalluniqueid']=_0x405b30['value'];}}}else if(this['isNotNull'](_0x405b30[_0x305a('0x80')][_0x305a('0x81')])){if(_0x405b30[_0x305a('0x83')]){var _0x26225a=path[_0x305a('0x94')](_0x405b30[_0x305a('0x83')])[_0x305a('0x56')];logger['info'](_0x305a('0x82'),_0x26225a,_0x405b30[_0x305a('0x83')]);this['syncMixMonitorFilename'](_0x26225a,_0x405b30['value']);}}else if(this[_0x305a('0x1e')][_0x405b30[_0x305a('0x4d')]]){if(this['isNotNull'](_0x405b30[_0x305a('0x80')])){if(this['isNotNull'](_0x405b30['variable'][_0x305a('0x93')])){logger[_0x305a('0x31')](_0x305a('0x95'),_0x405b30['linkedid'],_0x405b30['value']);this[_0x305a('0x1e')][_0x405b30['linkedid']][_0x305a('0x96')]=_0x405b30[_0x305a('0x83')];}}}}}catch(_0x164af8){logger[_0x305a('0x34')](_0x305a('0x97'),_0x405b30['uniqueid'],util[_0x305a('0x3e')](_0x164af8,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')]['syncHangup']=function(_0x56314f){try{if(this[_0x305a('0x36')](_0x56314f)){logger['debug'](_0x305a('0x98'),_0x56314f[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x56314f,{'showHidden':![],'depth':null}));if(this['channels'][_0x56314f['uniqueid']]){logger[_0x305a('0x31')](_0x305a('0x99'),_0x56314f[_0x305a('0x3a')],_0x56314f['cause-txt']);var _0x7b9ea0=moment();this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9a')]=_0x7b9ea0['format'](_0x305a('0x4f'));this['channels'][_0x56314f['uniqueid']]['duration']=_0x7b9ea0[_0x305a('0x6d')](this[_0x305a('0x1e')][_0x56314f['uniqueid']][_0x305a('0x4e')],'seconds');if(this[_0x305a('0x1e')][_0x56314f['uniqueid']]['answered']){this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9b')]=_0x7b9ea0[_0x305a('0x6d')](this['channels'][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9c')],_0x305a('0x61'));this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x6c')]=this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x5f')]-this[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x9b')];}if(_0x56314f[_0x305a('0x41')]===_0x305a('0x53')){if(this[_0x305a('0x1f')][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]){this['agents'][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]=_['omit'](this[_0x305a('0x1f')][_0x56314f['channel'][_0x305a('0x49')]('-')[0x0]],[_0x305a('0x45')]);logger[_0x305a('0x3c')](_0x305a('0x9d'),_0x56314f['uniqueid'],util['inspect']({'id':this['agents'][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x4b')]},{'showHidden':![],'depth':null}));this[_0x305a('0x55')](util[_0x305a('0x47')](_0x305a('0x48'),this[_0x305a('0x1f')][_0x56314f[_0x305a('0x42')][_0x305a('0x49')]('-')[0x0]][_0x305a('0x56')]),_0x305a('0x9e'),{'id':this[_0x305a('0x1f')][_0x56314f['channel'][_0x305a('0x49')]('-')[0x0]]['id'],'destaccountcode':this[_0x305a('0x1f')][_0x56314f[_0x305a('0x42')]['split']('-')[0x0]][_0x305a('0x4b')]});}}var _0x2bf4e0=this;Promise['resolve']()[_0x305a('0x9f')](function(){var _0x48d54d=_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]];if(typeof _0x48d54d[_0x305a('0xa0')]===_0x305a('0xa1'))return;if(_['isEmpty'](_0x48d54d[_0x305a('0x7b')]))return;return RpcSetting['getSettings']()[_0x305a('0x9f')](function(_0x4b4b1a){if(!_0x4b4b1a[_0x305a('0xa2')])return;return Promise[_0x305a('0xa3')]()[_0x305a('0x9f')](function(){return ami[_0x305a('0xa4')]({'action':_0x305a('0xa5'),'channel':_0x48d54d[_0x305a('0x42')]})[_0x305a('0xa6')](function(){});})[_0x305a('0x9f')](function(){return ami[_0x305a('0xa4')]({'action':'StopMixMonitor','channel':_0x48d54d[_0x305a('0x6f')]})[_0x305a('0xa6')](function(){})[_0x305a('0xa7')](function(){var _0x35c279=_0x2bf4e0[_0x305a('0x1f')][_0x48d54d[_0x305a('0x6f')]['split']('-')[0x0]];if(!_0x35c279)return;io[_0x305a('0x55')](_0x305a('0xa8'),{'agentId':_0x35c279['id'],'uniqueid':_0x48d54d[_0x305a('0x3a')]});});});});})['then'](function(){if(_0x56314f[_0x305a('0xa9')]===_0x305a('0xaa')){_0x2bf4e0['blindTransfers'][_0x56314f[_0x305a('0x3a')]]=_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]];}else{if(_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0xab')]===_0x305a('0xac')&&_0x2bf4e0[_0x305a('0x20')][_0x56314f[_0x305a('0x3a')]]){_0x2bf4e0[_0x305a('0x1e')][_0x56314f['uniqueid']][_0x305a('0x3a')]=[_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x4d')],_0x2bf4e0['channels'][_0x56314f[_0x305a('0x3a')]][_0x305a('0x4d')]=_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]][_0x305a('0x3a')]][0x0];delete _0x2bf4e0[_0x305a('0x20')][_0x56314f[_0x305a('0x3a')]];}}logger[_0x305a('0x3c')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x56314f[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]],{'showHidden':![],'depth':null}));ami[_0x305a('0x55')](_0x305a('0xad'),_0x2bf4e0[_0x305a('0x1e')][_0x56314f[_0x305a('0x3a')]]);delete _0x2bf4e0['channels'][_0x56314f[_0x305a('0x3a')]];});}}}catch(_0x377a91){logger[_0x305a('0x34')](_0x305a('0xae'),_0x56314f[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x377a91,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0xaf')]=function(_0x1a4c73){try{if(this[_0x305a('0x36')](_0x1a4c73)){logger[_0x305a('0x31')](_0x305a('0xb0'),_0x1a4c73[_0x305a('0x3a')],_0x1a4c73[_0x305a('0xb1')],_0x1a4c73[_0x305a('0xb2')]);logger['debug'](_0x305a('0xb3'),_0x1a4c73['uniqueid'],util[_0x305a('0x3e')](_0x1a4c73,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]]){this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]][_0x305a('0xb5')]=_0x1a4c73[_0x305a('0xb1')];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]][_0x305a('0xb6')]=_0x1a4c73['transfertargetcalleridnum'];if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb7')]]){var _0x425339=this['channels'][_0x1a4c73[_0x305a('0xb7')]];this['channels'][_0x1a4c73['secondtransfereruniqueid']]=this[_0x305a('0x1e')][_0x1a4c73['transfereeuniqueid']];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb4')]]=_0x425339;}}else if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]]){this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]][_0x305a('0xb5')]=_0x1a4c73[_0x305a('0xb1')];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]][_0x305a('0xb6')]=_0x1a4c73[_0x305a('0xb2')];if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]]){var _0x425339=this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]]=this['channels'][_0x1a4c73[_0x305a('0xb8')]];this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb8')]]=_0x425339;}}if((this[_0x305a('0x1e')][_0x1a4c73['origtransfereruniqueid']]||this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xba')]])&&this[_0x305a('0x1e')][_0x1a4c73['secondtransfereruniqueid']]){var _0x626e64=_['some']([this['channels'][_0x1a4c73[_0x305a('0xb9')]],this[_0x305a('0x1e')][_0x1a4c73['origtransfererlinkedid']],this['channels'][_0x1a4c73[_0x305a('0xb7')]]],function(_0x1addb3){return _0x1addb3&&_0x1addb3[_0x305a('0xab')]===_0x305a('0xac')&&_0x1addb3[_0x305a('0xbb')];});if(_0x626e64){if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]])this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xb9')]][_0x305a('0xa0')]=_0x305a('0xbc');if(this[_0x305a('0x1e')][_0x1a4c73[_0x305a('0xba')]])this[_0x305a('0x1e')][_0x1a4c73['origtransfererlinkedid']]['transferType']='ATTENDED';this['channels'][_0x1a4c73[_0x305a('0xb7')]][_0x305a('0xa0')]=_0x305a('0xbc');}}}}catch(_0xec0e43){logger[_0x305a('0x34')](_0x305a('0xbd'),_0x1a4c73[_0x305a('0x3a')],util['inspect'](_0xec0e43,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x2e')]=function(_0x586598){try{if(this[_0x305a('0x36')](_0x586598)){logger[_0x305a('0x31')]('[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x586598[_0x305a('0x3a')],_0x586598[_0x305a('0xbe')],_0x586598[_0x305a('0xbf')]);logger['debug']('[%s][voiceCallReport][blindtransfer]\x20event:',_0x586598[_0x305a('0x3a')],util['inspect'](_0x586598,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x586598['transfereeuniqueid']]){this[_0x305a('0x1e')][_0x586598[_0x305a('0xb4')]]['transfercalleridnum']=_0x586598[_0x305a('0xbe')];this[_0x305a('0x1e')][_0x586598['transfereeuniqueid']]['transferconnectedlinenum']=_0x586598['extension'];this[_0x305a('0x1e')][_0x586598[_0x305a('0xb4')]]['transferType']=_0x305a('0xc0');this[_0x305a('0x2a')]({'event':_0x305a('0xaa'),'uniqueid':_0x586598[_0x305a('0xb4')],'context':_0x586598['context'],'channel':_0x586598[_0x305a('0xc1')]});}else{this[_0x305a('0x1e')][_0x586598[_0x305a('0xc2')]][_0x305a('0xa0')]=_0x305a('0xc0');}}}catch(_0x1e352a){logger['error'](_0x305a('0xc3'),_0x586598[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x1e352a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x2f')]=function(_0x181576){try{if(this[_0x305a('0x36')](_0x181576)){logger[_0x305a('0x3c')]('[%s][voiceCallReport][musiconholdstart]\x20event:',_0x181576[_0x305a('0x3a')],util[_0x305a('0x3e')](_0x181576,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x181576[_0x305a('0x3a')]]){if(!_[_0x305a('0x7c')](this[_0x305a('0x1e')][_0x181576[_0x305a('0x3a')]]['answertime'])){this[_0x305a('0x1e')][_0x181576[_0x305a('0x3a')]][_0x305a('0xc4')]=moment()[_0x305a('0x47')](_0x305a('0x4f'));logger[_0x305a('0x31')](_0x305a('0xc5'),_0x181576[_0x305a('0x3a')],this['channels'][_0x181576[_0x305a('0x3a')]][_0x305a('0xc4')]);}}}}catch(_0x522ffb){logger['error'](_0x305a('0xc6'),_0x181576['uniqueid'],util[_0x305a('0x3e')](_0x522ffb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x305a('0x38')][_0x305a('0x30')]=function(_0x4a89bb){try{if(this[_0x305a('0x36')](_0x4a89bb)){logger[_0x305a('0x3c')](_0x305a('0xc7'),_0x4a89bb['uniqueid'],util[_0x305a('0x3e')](_0x4a89bb,{'showHidden':![],'depth':null}));if(this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]]){if(!_[_0x305a('0x7c')](this[_0x305a('0x1e')][_0x4a89bb['uniqueid']][_0x305a('0xc4')])){this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]][_0x305a('0xc8')]+=moment()[_0x305a('0xc9')](0x0)[_0x305a('0x6d')](this[_0x305a('0x1e')][_0x4a89bb['uniqueid']][_0x305a('0xc4')],'seconds');logger[_0x305a('0x31')](_0x305a('0xca'),_0x4a89bb['uniqueid'],this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]]['mohtime']);delete this[_0x305a('0x1e')][_0x4a89bb[_0x305a('0x3a')]][_0x305a('0xc4')];}}}}catch(_0x3251a8){logger[_0x305a('0x34')](_0x305a('0xcb'),_0x4a89bb[_0x305a('0x3a')],util['inspect'](_0x3251a8,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index 66fff0d..27e679f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88f6=['called','channel','lastIndexOf','event','membername','[%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','dialstatus','ANSWER','connectedlinenum','answertime','info','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','substring','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','keys','variable','isUndefined','value','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','duration','diff','starttime','seconds','complete','total','answered','holdtime','billableseconds','endtime','sumBillable','sumDuration','[%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','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','ioredis','../../../config/environment','../../../config/logger','defaults','redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','newexten','syncNewExten','isNotNull','prototype','emit','syncDialBegin','debug','uniqueid','inspect','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x88f6,0x137));var _0x688f=function(_0x3f66f8,_0x5c6f73){_0x3f66f8=_0x3f66f8-0x0;var _0x1d00f4=_0x88f6[_0x3f66f8];return _0x1d00f4;};'use strict';var _=require(_0x688f('0x0'));var moment=require(_0x688f('0x1'));var util=require('util');var Redis=require(_0x688f('0x2'));var config=require(_0x688f('0x3'));var logger=require(_0x688f('0x4'))('ami');var ami=require('../ami');config['redis']=_[_0x688f('0x5')](config[_0x688f('0x6')],{'host':_0x688f('0x7'),'port':0x18eb});var io=require(_0x688f('0x8'))(new Redis(config[_0x688f('0x6')]));function VoiceDialReport(_0x231e1f){this[_0x688f('0x9')]=_0x231e1f[_0x688f('0xa')];this['outbound']=_0x231e1f[_0x688f('0xb')];this[_0x688f('0xc')]={};this[_0x688f('0xd')]={};ami['on'](_0x688f('0xe'),this['syncDialBegin'][_0x688f('0xf')](this));ami['on'](_0x688f('0x10'),this[_0x688f('0x11')][_0x688f('0xf')](this));ami['on'](_0x688f('0x12'),this[_0x688f('0x13')][_0x688f('0xf')](this));ami['on'](_0x688f('0x14'),this[_0x688f('0x15')][_0x688f('0xf')](this));ami['on']('hangup',this['syncHangup'][_0x688f('0xf')](this));}VoiceDialReport['prototype'][_0x688f('0x16')]=function(_0x2ec082){return _0x2ec082!==null&&!_['isUndefined'](_0x2ec082);};VoiceDialReport[_0x688f('0x17')][_0x688f('0x18')]=function(_0x5b9223,_0x1ddf94,_0x2cb49d){io['to'](_0x5b9223)[_0x688f('0x18')](_0x1ddf94,_0x2cb49d);};VoiceDialReport[_0x688f('0x17')][_0x688f('0x19')]=function(_0x486055){try{if(this['isNotNull'](_0x486055)){logger[_0x688f('0x1a')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x486055[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x486055,{'showHidden':![],'depth':null}));if(this['channels'][_0x486055[_0x688f('0x1b')]]){_['merge'](this[_0x688f('0x9')][_0x486055[_0x688f('0x1b')]],{'starttime':moment()[_0x688f('0x1d')](_0x688f('0x1e')),'lastevent':_0x688f('0x1f'),'interface':_0x486055[_0x688f('0x20')]['substring'](0x0,_0x486055[_0x688f('0x20')][_0x688f('0x21')]('-')),'membername':_0x486055['channel']['substring'](_0x486055['channel'][_0x688f('0x21')]('/')+0x1,_0x486055['channel'][_0x688f('0x21')]('-'))},_['omit'](_0x486055,[_0x688f('0x22'),'privilege']));logger['info']('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x486055[_0x688f('0x1b')],this[_0x688f('0x9')][_0x486055[_0x688f('0x1b')]][_0x688f('0x23')],this['channels'][_0x486055[_0x688f('0x1b')]]['interface']);logger[_0x688f('0x1a')](_0x688f('0x24'),_0x486055[_0x688f('0x1b')],util['inspect'](this['channels'][_0x486055['uniqueid']],{'showHidden':![],'depth':null}));if(this['applications'][_0x486055[_0x688f('0x1b')]])_[_0x688f('0x25')](this[_0x688f('0x9')][_0x486055[_0x688f('0x1b')]],this[_0x688f('0xc')][_0x486055[_0x688f('0x1b')]]);this[_0x688f('0x18')](_0x688f('0x26'),_0x688f('0x27'),this[_0x688f('0x9')][_0x486055[_0x688f('0x1b')]]);logger['debug'](_0x688f('0x28'),_0x486055[_0x688f('0x1b')],util[_0x688f('0x1c')](this[_0x688f('0x9')][_0x486055[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0x688f('0x29'),this[_0x688f('0x9')][_0x486055[_0x688f('0x1b')]]);}}}catch(_0x5726de){logger[_0x688f('0x2a')]('[%s][voiceDialReport][dialbegin]',_0x486055[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x5726de,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x688f('0x11')]=function(_0x1478b9){try{if(this[_0x688f('0x16')](_0x1478b9)){logger[_0x688f('0x1a')]('[%s][voiceDialReport][dialend]\x20event:',_0x1478b9[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x1478b9,{'showHidden':![],'depth':null}));if(this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]]){this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]][_0x688f('0x2b')]=_0x1478b9[_0x688f('0x2b')];if(_0x1478b9[_0x688f('0x2b')]===_0x688f('0x2c')){this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]][_0x688f('0x2d')]=_0x1478b9['connectedlinenum'];this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]]['connectedlinename']=_0x1478b9['connectedlinename'];this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]][_0x688f('0x2e')]=moment()[_0x688f('0x1d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x688f('0x9')][_0x1478b9['uniqueid']]['lastevent']='connect';logger[_0x688f('0x2f')](_0x688f('0x30'),_0x1478b9[_0x688f('0x1b')],_0x1478b9[_0x688f('0x20')][_0x688f('0x31')](_0x1478b9[_0x688f('0x20')]['lastIndexOf']('/')+0x1,_0x1478b9[_0x688f('0x20')][_0x688f('0x21')]('-')));logger['debug'](_0x688f('0x32'),_0x1478b9['uniqueid'],util[_0x688f('0x1c')](this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x688f('0x18')](_0x688f('0x33'),this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]]);}logger['debug'](_0x688f('0x34'),_0x1478b9['uniqueid'],util[_0x688f('0x1c')](this[_0x688f('0x9')][_0x1478b9['uniqueid']],{'showHidden':![],'depth':null}));this[_0x688f('0x18')](_0x688f('0x26'),_0x688f('0x27'),this[_0x688f('0x9')][_0x1478b9[_0x688f('0x1b')]]);}}}catch(_0x33e063){logger[_0x688f('0x2a')](_0x688f('0x35'),_0x1478b9[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x33e063,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x688f('0x13')]=function(_0x545558){try{if(this['isNotNull'](_0x545558)){logger[_0x688f('0x1a')]('[%s][voiceDialReport][varset]\x20event:',_0x545558[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x545558,{'showHidden':![],'depth':null}));this['addVariable'](_0x545558['uniqueid'],_[_0x688f('0x36')](_0x545558[_0x688f('0x37')])[0x0],_0x545558['value']);if(this['isNotNull'](_0x545558[_0x688f('0x37')])&&this['isNotNull'](_0x545558[_0x688f('0x37')]['outboundrouteid'])){if(_[_0x688f('0x38')](this[_0x688f('0x9')][_0x545558[_0x688f('0x1b')]])){this[_0x688f('0x9')][_0x545558['uniqueid']]={'routeId':_0x545558[_0x688f('0x39')],'variables':this[_0x688f('0xd')][_0x545558[_0x688f('0x1b')]]};logger[_0x688f('0x2f')](_0x688f('0x3a'),_0x545558['uniqueid'],_0x545558[_0x688f('0x37')][_0x688f('0x3b')],_[_0x688f('0x36')](_0x545558['variable'])[0x0],_0x545558[_0x688f('0x39')]);logger[_0x688f('0x1a')](_0x688f('0x3c'),_0x545558['uniqueid'],util['inspect'](this[_0x688f('0x9')][_0x545558[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));this[_0x688f('0x18')](_0x688f('0x26'),_0x688f('0x27'),this['channels'][_0x545558[_0x688f('0x1b')]]);}}}}catch(_0x1b9034){logger[_0x688f('0x2a')]('[%s][voiceDialReport][varset]',_0x545558[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x1b9034,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x688f('0x17')][_0x688f('0x3d')]=function(_0x14da9b,_0x4e3ad2,_0x1ef1ba){var _0x4e804e=[_0x688f('0x3e'),_0x688f('0x3f'),_0x688f('0x40'),_0x688f('0x41'),_0x688f('0x42'),_0x688f('0x43'),'rtpaudioqosrtt',_0x688f('0x44'),'sipcallid',_0x688f('0x45'),'bridgepeer',_0x688f('0x46'),_0x688f('0x47'),'memberdynamic',_0x688f('0x48'),_0x688f('0x49'),_0x688f('0x23'),_0x688f('0x4a'),_0x688f('0x4b')];if(!_[_0x688f('0x4c')](_0x4e3ad2)&&!_[_0x688f('0x4d')](_0x4e804e,_0x4e3ad2)){if(_[_0x688f('0x38')](this['variables'][_0x14da9b])){this[_0x688f('0xd')][_0x14da9b]={};}this['variables'][_0x14da9b][_0x4e3ad2]=_0x1ef1ba;}};VoiceDialReport[_0x688f('0x17')][_0x688f('0x4e')]=function(_0x133bee){try{if(this[_0x688f('0x16')](_0x133bee)){logger['debug'](_0x688f('0x4f'),_0x133bee['uniqueid'],util[_0x688f('0x1c')](_0x133bee,{'showHidden':![],'depth':null}));if(this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]]){logger['info']('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x133bee['uniqueid'],_0x133bee['cause-txt']);this[_0x688f('0x9')][_0x133bee['uniqueid']]['endtime']=moment()[_0x688f('0x1d')](_0x688f('0x1e'));this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]][_0x688f('0x50')]=moment(this['channels'][_0x133bee[_0x688f('0x1b')]]['endtime'])[_0x688f('0x51')](this['channels'][_0x133bee[_0x688f('0x1b')]][_0x688f('0x52')],_0x688f('0x53'));this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]]['lastevent']=_0x688f('0x54');this[_0x688f('0xb')][_0x688f('0x55')]+=0x1;if(this['channels'][_0x133bee[_0x688f('0x1b')]][_0x688f('0x2e')]){this['outbound'][_0x688f('0x56')]+=0x1;this['channels'][_0x133bee['uniqueid']][_0x688f('0x57')]=moment(this[_0x688f('0x9')][_0x133bee['uniqueid']][_0x688f('0x2e')])[_0x688f('0x51')](this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]]['starttime'],'seconds');this['channels'][_0x133bee['uniqueid']][_0x688f('0x58')]=moment(this['channels'][_0x133bee[_0x688f('0x1b')]][_0x688f('0x59')])['diff'](this['channels'][_0x133bee[_0x688f('0x1b')]][_0x688f('0x2e')],_0x688f('0x53'));this['outbound']['sumHoldTime']+=this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]][_0x688f('0x57')]||0x0;this[_0x688f('0xb')][_0x688f('0x5a')]+=this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]][_0x688f('0x58')];}this['outbound'][_0x688f('0x5b')]+=this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]][_0x688f('0x50')];logger[_0x688f('0x1a')](_0x688f('0x5c'),_0x133bee[_0x688f('0x1b')],util['inspect'](this['channels'][_0x133bee[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));ami[_0x688f('0x18')](_0x688f('0x5d'),this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]]);logger[_0x688f('0x1a')](_0x688f('0x5e'),_0x133bee['uniqueid'],util[_0x688f('0x1c')](this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));ami['emit'](_0x688f('0x5f'),this['channels'][_0x133bee[_0x688f('0x1b')]]);logger[_0x688f('0x1a')](_0x688f('0x60'),_0x133bee[_0x688f('0x1b')],util[_0x688f('0x1c')](this['channels'][_0x133bee[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));this[_0x688f('0x18')]('voice:outbound',_0x688f('0x61'),this[_0x688f('0xb')]);logger['info']('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x688f('0x62')](this['channels'][_0x133bee['uniqueid']]));logger[_0x688f('0x1a')](_0x688f('0x63'),_0x133bee[_0x688f('0x1b')],util[_0x688f('0x1c')](this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]],{'showHidden':![],'depth':null}));this['emit'](_0x688f('0x26'),'voice_outbound_channel:remove',this[_0x688f('0x9')][_0x133bee['uniqueid']]);delete this[_0x688f('0x9')][_0x133bee[_0x688f('0x1b')]];}else if(this[_0x688f('0x9')][_0x133bee['linkedid']]){this[_0x688f('0x9')][_0x133bee[_0x688f('0x64')]][_0x688f('0x1b')]=this[_0x688f('0x9')][_0x133bee['linkedid']]['destuniqueid'];}if(this['variables'][_0x133bee[_0x688f('0x1b')]]){delete this[_0x688f('0xd')][_0x133bee[_0x688f('0x1b')]];}}}catch(_0xcd67d2){logger[_0x688f('0x2a')](_0x688f('0x65'),_0x133bee[_0x688f('0x1b')],util['inspect'](_0xcd67d2,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x688f('0x15')]=function(_0x173566){try{if(this['isNotNull'](_0x173566)){logger[_0x688f('0x1a')](_0x688f('0x66'),_0x173566[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x173566,{'showHidden':![],'depth':null}));if(_0x173566[_0x688f('0x67')][_0x688f('0x68')]()===_0x688f('0x69')){_0x173566[_0x688f('0x6a')]=(_0x173566[_0x688f('0x6b')]||_0x173566[_0x688f('0x6a')])[_0x688f('0x68')]();if(_[_0x688f('0x6c')](_0x173566[_0x688f('0x6a')],_0x688f('0x6d'))){if(_[_0x688f('0x38')](this[_0x688f('0xc')][_0x173566[_0x688f('0x1b')]]))this[_0x688f('0xc')][_0x173566[_0x688f('0x1b')]]={};logger['info'](_0x688f('0x6e'),_0x173566['uniqueid'],_0x173566[_0x688f('0x67')],_0x173566[_0x688f('0x6a')]);var _0x15785c=_0x173566[_0x688f('0x6a')]['split']('=');var _0x2256c8=_0x15785c[0x0][_0x688f('0x6f')](/cdr\((.*)\)/);if(_0x2256c8)this[_0x688f('0xc')][_0x173566[_0x688f('0x1b')]][_0x2256c8[0x1]]=_0x15785c[0x1];}}}}catch(_0x1349be){logger[_0x688f('0x2a')](_0x688f('0x70'),_0x173566[_0x688f('0x1b')],util[_0x688f('0x1c')](_0x1349be,{'showHidden':![],'depth':null}));}};module[_0x688f('0x71')]=VoiceDialReport;
\ No newline at end of file
+var _0x4ab1=['isNotNull','isUndefined','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','channels','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','channel','substring','lastIndexOf','omit','event','privilege','info','membername','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','error','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][dialend]','addVariable','keys','value','variable','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberpenalty','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','holdtime','sumHoldTime','sumBillable','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','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','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','outboundChannels','outbound','applications','variables','bind','dialend','varset','syncVarSet','newexten','syncNewExten','syncHangup','prototype'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x4ab1,0x13a));var _0x14ab=function(_0xeb916d,_0x1541cb){_0xeb916d=_0xeb916d-0x0;var _0x1dcf00=_0x4ab1[_0xeb916d];return _0x1dcf00;};'use strict';var _=require(_0x14ab('0x0'));var moment=require(_0x14ab('0x1'));var util=require('util');var Redis=require(_0x14ab('0x2'));var config=require('../../../config/environment');var logger=require(_0x14ab('0x3'))(_0x14ab('0x4'));var ami=require(_0x14ab('0x5'));config[_0x14ab('0x6')]=_[_0x14ab('0x7')](config['redis'],{'host':_0x14ab('0x8'),'port':0x18eb});var io=require(_0x14ab('0x9'))(new Redis(config['redis']));function VoiceDialReport(_0x4afc51){this['channels']=_0x4afc51[_0x14ab('0xa')];this[_0x14ab('0xb')]=_0x4afc51[_0x14ab('0xb')];this[_0x14ab('0xc')]={};this[_0x14ab('0xd')]={};ami['on']('dialbegin',this['syncDialBegin'][_0x14ab('0xe')](this));ami['on'](_0x14ab('0xf'),this['syncDialEnd'][_0x14ab('0xe')](this));ami['on'](_0x14ab('0x10'),this[_0x14ab('0x11')][_0x14ab('0xe')](this));ami['on'](_0x14ab('0x12'),this[_0x14ab('0x13')][_0x14ab('0xe')](this));ami['on']('hangup',this[_0x14ab('0x14')][_0x14ab('0xe')](this));}VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x16')]=function(_0x4be83f){return _0x4be83f!==null&&!_[_0x14ab('0x17')](_0x4be83f);};VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x18')]=function(_0x52e4a7,_0x567155,_0xe57f14){io['to'](_0x52e4a7)[_0x14ab('0x18')](_0x567155,_0xe57f14);};VoiceDialReport['prototype'][_0x14ab('0x19')]=function(_0x50136f){try{if(this[_0x14ab('0x16')](_0x50136f)){logger[_0x14ab('0x1a')](_0x14ab('0x1b'),_0x50136f['uniqueid'],util[_0x14ab('0x1c')](_0x50136f,{'showHidden':![],'depth':null}));if(this['channels'][_0x50136f['uniqueid']]){_['merge'](this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]],{'starttime':moment()[_0x14ab('0x1f')](_0x14ab('0x20')),'lastevent':'called','interface':_0x50136f[_0x14ab('0x21')][_0x14ab('0x22')](0x0,_0x50136f[_0x14ab('0x21')]['lastIndexOf']('-')),'membername':_0x50136f[_0x14ab('0x21')]['substring'](_0x50136f[_0x14ab('0x21')][_0x14ab('0x23')]('/')+0x1,_0x50136f['channel'][_0x14ab('0x23')]('-'))},_[_0x14ab('0x24')](_0x50136f,[_0x14ab('0x25'),_0x14ab('0x26')]));logger[_0x14ab('0x27')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x50136f[_0x14ab('0x1e')],this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]][_0x14ab('0x28')],this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]]['interface']);logger[_0x14ab('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x50136f[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x50136f[_0x14ab('0x1e')]])_['merge'](this['channels'][_0x50136f['uniqueid']],this[_0x14ab('0xc')][_0x50136f['uniqueid']]);this[_0x14ab('0x18')](_0x14ab('0x29'),_0x14ab('0x2a'),this[_0x14ab('0x1d')][_0x50136f[_0x14ab('0x1e')]]);logger[_0x14ab('0x1a')](_0x14ab('0x2b'),_0x50136f[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this['channels'][_0x50136f['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x14ab('0x18')]('custom:dialbegin',this['channels'][_0x50136f[_0x14ab('0x1e')]]);}}}catch(_0x28f63c){logger[_0x14ab('0x2c')](_0x14ab('0x2d'),_0x50136f['uniqueid'],util[_0x14ab('0x1c')](_0x28f63c,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype']['syncDialEnd']=function(_0x59f173){try{if(this[_0x14ab('0x16')](_0x59f173)){logger[_0x14ab('0x1a')]('[%s][voiceDialReport][dialend]\x20event:',_0x59f173[_0x14ab('0x1e')],util['inspect'](_0x59f173,{'showHidden':![],'depth':null}));if(this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]]){this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x2e')]=_0x59f173['dialstatus'];if(_0x59f173['dialstatus']===_0x14ab('0x2f')){this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x30')]=_0x59f173[_0x14ab('0x30')];this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x31')]=_0x59f173[_0x14ab('0x31')];this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]][_0x14ab('0x32')]=moment()[_0x14ab('0x1f')](_0x14ab('0x20'));this['channels'][_0x59f173['uniqueid']][_0x14ab('0x33')]=_0x14ab('0x34');logger[_0x14ab('0x27')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x59f173[_0x14ab('0x1e')],_0x59f173['channel'][_0x14ab('0x22')](_0x59f173['channel']['lastIndexOf']('/')+0x1,_0x59f173['channel'][_0x14ab('0x23')]('-')));logger[_0x14ab('0x1a')](_0x14ab('0x35'),_0x59f173[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x59f173['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x14ab('0x18')](_0x14ab('0x36'),this[_0x14ab('0x1d')][_0x59f173['uniqueid']]);}logger[_0x14ab('0x1a')](_0x14ab('0x37'),_0x59f173[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x59f173[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this[_0x14ab('0x18')](_0x14ab('0x29'),'voice_outbound_channel:save',this['channels'][_0x59f173[_0x14ab('0x1e')]]);}}}catch(_0x27ca3c){logger[_0x14ab('0x2c')](_0x14ab('0x38'),_0x59f173['uniqueid'],util[_0x14ab('0x1c')](_0x27ca3c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x11')]=function(_0x4358f3){try{if(this[_0x14ab('0x16')](_0x4358f3)){logger[_0x14ab('0x1a')]('[%s][voiceDialReport][varset]\x20event:',_0x4358f3[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x4358f3,{'showHidden':![],'depth':null}));this[_0x14ab('0x39')](_0x4358f3[_0x14ab('0x1e')],_[_0x14ab('0x3a')](_0x4358f3['variable'])[0x0],_0x4358f3[_0x14ab('0x3b')]);if(this[_0x14ab('0x16')](_0x4358f3['variable'])&&this[_0x14ab('0x16')](_0x4358f3[_0x14ab('0x3c')][_0x14ab('0x3d')])){if(_[_0x14ab('0x17')](this[_0x14ab('0x1d')][_0x4358f3[_0x14ab('0x1e')]])){this[_0x14ab('0x1d')][_0x4358f3[_0x14ab('0x1e')]]={'routeId':_0x4358f3[_0x14ab('0x3b')],'variables':this['variables'][_0x4358f3[_0x14ab('0x1e')]],'motionChannel':'voice'};logger[_0x14ab('0x27')](_0x14ab('0x3e'),_0x4358f3[_0x14ab('0x1e')],_0x4358f3[_0x14ab('0x3c')][_0x14ab('0x3d')],_['keys'](_0x4358f3[_0x14ab('0x3c')])[0x0],_0x4358f3[_0x14ab('0x3b')]);logger[_0x14ab('0x1a')](_0x14ab('0x3f'),_0x4358f3['uniqueid'],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x4358f3[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this[_0x14ab('0x18')](_0x14ab('0x29'),_0x14ab('0x2a'),this['channels'][_0x4358f3[_0x14ab('0x1e')]]);}}}}catch(_0x10edc6){logger[_0x14ab('0x2c')]('[%s][voiceDialReport][varset]',_0x4358f3['uniqueid'],util[_0x14ab('0x1c')](_0x10edc6,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x14ab('0x15')][_0x14ab('0x39')]=function(_0x133c29,_0x400b5c,_0x1fe052){var _0x5c3b26=['rtpaudioqos',_0x14ab('0x40'),'rtpaudioqosjitter',_0x14ab('0x41'),_0x14ab('0x42'),_0x14ab('0x43'),_0x14ab('0x44'),'rtpaudioqosrttbridged',_0x14ab('0x45'),'sipuri',_0x14ab('0x46'),_0x14ab('0x47'),'membercalls',_0x14ab('0x48'),_0x14ab('0x49'),'memberlastcall','membername',_0x14ab('0x4a'),'memberrealtime'];if(!_[_0x14ab('0x4b')](_0x400b5c)&&!_[_0x14ab('0x4c')](_0x5c3b26,_0x400b5c)){if(_[_0x14ab('0x17')](this[_0x14ab('0xd')][_0x133c29])){this[_0x14ab('0xd')][_0x133c29]={};}this[_0x14ab('0xd')][_0x133c29][_0x400b5c]=_0x1fe052;}};VoiceDialReport[_0x14ab('0x15')]['syncHangup']=function(_0x1b81a4){try{if(this['isNotNull'](_0x1b81a4)){logger[_0x14ab('0x1a')](_0x14ab('0x4d'),_0x1b81a4[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x1b81a4,{'showHidden':![],'depth':null}));if(this[_0x14ab('0x1d')][_0x1b81a4['uniqueid']]){logger[_0x14ab('0x27')](_0x14ab('0x4e'),_0x1b81a4[_0x14ab('0x1e')],_0x1b81a4[_0x14ab('0x4f')]);this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x50')]=moment()['format'](_0x14ab('0x20'));this[_0x14ab('0x1d')][_0x1b81a4['uniqueid']][_0x14ab('0x51')]=moment(this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x50')])[_0x14ab('0x52')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x53')],_0x14ab('0x54'));this['channels'][_0x1b81a4[_0x14ab('0x1e')]]['lastevent']=_0x14ab('0x55');this[_0x14ab('0xb')]['total']+=0x1;if(this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x32')]){this['outbound']['answered']+=0x1;this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x56')]=moment(this['channels'][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x32')])[_0x14ab('0x52')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x53')],_0x14ab('0x54'));this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]['billableseconds']=moment(this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]['endtime'])[_0x14ab('0x52')](this['channels'][_0x1b81a4['uniqueid']]['answertime'],_0x14ab('0x54'));this['outbound'][_0x14ab('0x57')]+=this['channels'][_0x1b81a4[_0x14ab('0x1e')]]['holdtime']||0x0;this['outbound'][_0x14ab('0x58')]+=this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x59')];}this[_0x14ab('0xb')][_0x14ab('0x5a')]+=this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]][_0x14ab('0x51')];logger[_0x14ab('0x1a')](_0x14ab('0x5b'),_0x1b81a4[_0x14ab('0x1e')],util['inspect'](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));ami['emit'](_0x14ab('0x5c'),this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]);logger[_0x14ab('0x1a')]('[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:',_0x1b81a4[_0x14ab('0x1e')],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));ami[_0x14ab('0x18')](_0x14ab('0x5d'),this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]);logger[_0x14ab('0x1a')](_0x14ab('0x5e'),_0x1b81a4['uniqueid'],util[_0x14ab('0x1c')](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this[_0x14ab('0x18')](_0x14ab('0x29'),_0x14ab('0x5f'),this[_0x14ab('0xb')]);logger[_0x14ab('0x27')](_0x14ab('0x60'),JSON[_0x14ab('0x61')](this[_0x14ab('0x1d')][_0x1b81a4['uniqueid']]));logger['debug'](_0x14ab('0x62'),_0x1b81a4[_0x14ab('0x1e')],util['inspect'](this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]],{'showHidden':![],'depth':null}));this['emit'](_0x14ab('0x29'),_0x14ab('0x63'),this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x1e')]]);delete this['channels'][_0x1b81a4[_0x14ab('0x1e')]];}else if(this['channels'][_0x1b81a4[_0x14ab('0x64')]]){this['channels'][_0x1b81a4['linkedid']][_0x14ab('0x1e')]=this[_0x14ab('0x1d')][_0x1b81a4[_0x14ab('0x64')]][_0x14ab('0x65')];}if(this[_0x14ab('0xd')][_0x1b81a4[_0x14ab('0x1e')]]){delete this['variables'][_0x1b81a4[_0x14ab('0x1e')]];}}}catch(_0x5850df){logger['error'](_0x14ab('0x66'),_0x1b81a4[_0x14ab('0x1e')],util['inspect'](_0x5850df,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x14ab('0x15')]['syncNewExten']=function(_0x28a105){try{if(this[_0x14ab('0x16')](_0x28a105)){logger[_0x14ab('0x1a')](_0x14ab('0x67'),_0x28a105[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x28a105,{'showHidden':![],'depth':null}));if(_0x28a105[_0x14ab('0x68')]['toLowerCase']()==='set'){_0x28a105[_0x14ab('0x69')]=(_0x28a105[_0x14ab('0x6a')]||_0x28a105[_0x14ab('0x69')])['toLowerCase']();if(_[_0x14ab('0x6b')](_0x28a105['applicationdata'],'cdr(')){if(_[_0x14ab('0x17')](this[_0x14ab('0xc')][_0x28a105[_0x14ab('0x1e')]]))this['applications'][_0x28a105[_0x14ab('0x1e')]]={};logger['info'](_0x14ab('0x6c'),_0x28a105[_0x14ab('0x1e')],_0x28a105[_0x14ab('0x68')],_0x28a105[_0x14ab('0x69')]);var _0x5a81d5=_0x28a105['applicationdata']['split']('=');var _0x2278ca=_0x5a81d5[0x0][_0x14ab('0x6d')](/cdr\((.*)\)/);if(_0x2278ca)this[_0x14ab('0xc')][_0x28a105[_0x14ab('0x1e')]][_0x2278ca[0x1]]=_0x5a81d5[0x1];}}}}catch(_0x4f4f70){logger[_0x14ab('0x2c')](_0x14ab('0x6e'),_0x28a105[_0x14ab('0x1e')],util[_0x14ab('0x1c')](_0x4f4f70,{'showHidden':![],'depth':null}));}};module[_0x14ab('0x6f')]=VoiceDialReport;
\ No newline at end of file
index fdab4ff..6a5c330 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52d=['enqueue','tail','finally','sequence','queueReports','agents','channels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','syncFullyBooted','newexten','syncNewExten','musiconholdstart','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','hasOwnProperty','isEmpty','originated','talking','pTalking','waiting','clearZombieChannels','switch','isNil','Action','status','channel','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','voice_queue_channel:remove','strategy','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','total','type','unmanaged','abandoned','Trunk','callerid','Interval','stringify','md5','[voiceQueueReport][','voice_queue:save','isNotNull','isUndefined','[voiceQueueReport][queues]','loopQueueSummary','queuesummary','[voiceQueueReport][queuesummary]\x20event:','queue','[voiceQueueReport][queuesummary]\x20name:%s','countBy','toNumber','callers','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','syncQueueSummaryComplete','[%s][voiceQueueReport][queuecallerjoin]','inbound','queuecallerjoinAt','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','push','emitVoiceQueueChannelSave','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexitreason','ABANDONED','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','toLowerCase','linkedid','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','agentcomplete','[%s][voiceQueueReport][varset]','value','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','EXITWITHKEY','keys','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','seconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][attendedtransfer]','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','syncHangup','BlindTransfer','context','[%s][voiceQueueReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][newexten]\x20event:','application','appdata','startsWith','CDR(routeAlias)','applicationdata','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceQueueReport][newexten]','exports','moment','util','ioredis','ami','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype'];(function(_0x17a842,_0x1ac67a){var _0x142199=function(_0x23aadd){while(--_0x23aadd){_0x17a842['push'](_0x17a842['shift']());}};_0x142199(++_0x1ac67a);}(_0xd52d,0x1c7));var _0xdd52=function(_0x19aaea,_0x150ddb){_0x19aaea=_0x19aaea-0x0;var _0x3fe029=_0xd52d[_0x19aaea];return _0x3fe029;};'use strict';var _=require('lodash');var moment=require(_0xdd52('0x0'));var util=require(_0xdd52('0x1'));var md5=require('md5');var Redis=require(_0xdd52('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xdd52('0x3'));var ami=require(_0xdd52('0x4'));var QueueReport=require(_0xdd52('0x5'));config[_0xdd52('0x6')]=_[_0xdd52('0x7')](config[_0xdd52('0x6')],{'host':_0xdd52('0x8'),'port':0x18eb});var io=require(_0xdd52('0x9'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0xdd52('0xa')][_0xdd52('0xb')]=function(_0x8a6170){this[_0xdd52('0xc')]=this[_0xdd52('0xc')]?this[_0xdd52('0xc')][_0xdd52('0xd')](_0x8a6170):_0x8a6170();};function VoiceQueueReport(_0x3e41e1){this[_0xdd52('0xe')]=new Sequence();this[_0xdd52('0xf')]={};this[_0xdd52('0x10')]=_0x3e41e1[_0xdd52('0x10')];this[_0xdd52('0x11')]=_0x3e41e1['queueChannels'];this[_0xdd52('0x12')]=_0x3e41e1[_0xdd52('0x12')];this[_0xdd52('0x13')]=!![];this[_0xdd52('0x14')]=_0x3e41e1[_0xdd52('0x14')];this[_0xdd52('0x15')]={};ami['on']('queuesummary',this[_0xdd52('0x16')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x18'),this['syncQueueSummaryComplete'][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x19'),this[_0xdd52('0x1a')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x1b'),this[_0xdd52('0x1c')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x1d'),this['syncQueueCallerLeave'][_0xdd52('0x17')](this));ami['on']('agentcomplete',this[_0xdd52('0x1e')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x1f'),this[_0xdd52('0x20')]['bind'](this));ami['on'](_0xdd52('0x21'),this[_0xdd52('0x22')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x23'),this['syncHangup'][_0xdd52('0x17')](this));ami['on']('fullybooted',this[_0xdd52('0x24')]['bind'](this));ami['on'](_0xdd52('0x25'),this[_0xdd52('0x26')]['bind'](this));ami['on'](_0xdd52('0x27'),this['syncMusicOnHoldStart'][_0xdd52('0x17')](this));ami['on']('musiconholdstop',this[_0xdd52('0x28')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x29'),this[_0xdd52('0x2a')][_0xdd52('0x17')](this));ami['on'](_0xdd52('0x2b'),this[_0xdd52('0x2c')][_0xdd52('0x17')](this));this['loopQueueSummary']();this[_0xdd52('0x2d')]();}function clearChannels(_0xe8a5bc){if(!_['isEmpty'](_0xe8a5bc)){for(var _0x1156cc in _0xe8a5bc){if(_0xe8a5bc[_0xdd52('0x2e')](_0x1156cc)){delete _0xe8a5bc[_0x1156cc];}}}}function clearCampaigns(_0x43ef06){if(!_[_0xdd52('0x2f')](_0x43ef06)){for(var _0x4ee66d in _0x43ef06){if(_0x43ef06[_0xdd52('0x2e')](_0x4ee66d)){_0x43ef06[_0x4ee66d][_0xdd52('0x30')]=0x0;}}}}function clearVoiceQueues(_0x70ed7b){if(!_['isEmpty'](_0x70ed7b)){for(var _0x515e78 in _0x70ed7b){if(_0x70ed7b[_0xdd52('0x2e')](_0x515e78)){_0x70ed7b[_0x515e78]['originated']=0x0;_0x70ed7b[_0x515e78][_0xdd52('0x31')]=0x0;_0x70ed7b[_0x515e78][_0xdd52('0x32')]=0x0;_0x70ed7b[_0x515e78][_0xdd52('0x33')]=0x0;_0x70ed7b[_0x515e78]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x499e14){if(!_[_0xdd52('0x2f')](_0x499e14)){for(var _0x3a0e0d in _0x499e14){if(_0x499e14[_0xdd52('0x2e')](_0x3a0e0d)){_0x499e14[_0x3a0e0d]['unlockRR']=!![];}}}}VoiceQueueReport['prototype'][_0xdd52('0x34')]=function(){var _0x566658=this;for(var _0x29c940 in this[_0xdd52('0x11')]){if(this[_0xdd52('0x11')][_0xdd52('0x2e')](_0x29c940)&&!this[_0xdd52('0x11')][_0x29c940][_0xdd52('0x35')]){this[_0xdd52('0xe')][_0xdd52('0xb')](function(){if(!_[_0xdd52('0x36')](_0x566658[_0xdd52('0x11')][_0x29c940])){return ami[_0xdd52('0x37')]({'action':_0xdd52('0x38'),'channel':_0x566658[_0xdd52('0x11')][_0x29c940][_0xdd52('0x39')]})[_0xdd52('0x3a')](function(_0x46e125){if(_0x46e125[_0xdd52('0x3b')]===_0xdd52('0x3c')){setTimeout(function(){if(_0x566658[_0xdd52('0x11')][_0x29c940]){delete _0x566658[_0xdd52('0x11')][_0x29c940];logger[_0xdd52('0x3d')]('[%s][voiceQueueReport][checkChannel]',_0x29c940,util[_0xdd52('0x3e')](_0x46e125,{'showHidden':![],'depth':null}));}if(_0x566658[_0xdd52('0xf')][_0x29c940]){delete _0x566658['queueReports'][_0x29c940];logger['error']('[%s][voiceQueueReport][checkQueueReport]',_0x29c940,util[_0xdd52('0x3e')](_0x46e125,{'showHidden':![],'depth':null}));}if(_0x566658[_0xdd52('0x15')][_0x29c940]){delete _0x566658[_0xdd52('0x15')][_0x29c940];logger[_0xdd52('0x3d')](_0xdd52('0x3f'),_0x29c940,util[_0xdd52('0x3e')](_0x46e125,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0xdd52('0xa')][_0xdd52('0x24')]=function(){logger[_0xdd52('0x3d')](_0xdd52('0x40'));clearChannels(this['channels']);this[_0xdd52('0x41')](this[_0xdd52('0xf')]);clearAgentBooked(this[_0xdd52('0x10')]);clearVoiceQueues(this[_0xdd52('0x12')]);clearCampaigns(this[_0xdd52('0x14')]);};VoiceQueueReport[_0xdd52('0xa')][_0xdd52('0x41')]=function(_0x2d5c79){var _0x120c27=this;if(!_[_0xdd52('0x2f')](_0x2d5c79)){for(var _0x3eb744 in _0x2d5c79){if(_0x2d5c79[_0xdd52('0x2e')](_0x3eb744)){_0x120c27[_0xdd52('0x42')](_0x2d5c79[_0x3eb744],_0xdd52('0x43'));delete _0x2d5c79[_0x3eb744];}}}};VoiceQueueReport[_0xdd52('0xa')][_0xdd52('0x44')]=function(_0x3007b8,_0x244abf,_0x8ba51){io['to'](_0x3007b8)[_0xdd52('0x44')](_0x244abf,_0x8ba51);};VoiceQueueReport[_0xdd52('0xa')]['emitVoiceQueueChannelSave']=function(_0x4c2e3b,_0x28c4fd){logger[_0xdd52('0x45')](_0xdd52('0x46')+_0x28c4fd+_0xdd52('0x47'),_0x4c2e3b[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x4c2e3b,{'showHidden':![],'depth':null}));this[_0xdd52('0x44')](util[_0xdd52('0x49')](_0xdd52('0x4a'),_0x4c2e3b[_0xdd52('0x4b')]),'voice_queue_channel:save',_0x4c2e3b);io[_0xdd52('0x44')](_0xdd52('0x4c'),_0x4c2e3b);};VoiceQueueReport[_0xdd52('0xa')]['emitVoiceQueueChannelRemove']=function(_0x220587,_0x1857d1){logger[_0xdd52('0x45')](_0xdd52('0x46')+_0x1857d1+_0xdd52('0x4d'),_0x220587[_0xdd52('0x48')],util['inspect'](_0x220587,{'showHidden':![],'depth':null}));this[_0xdd52('0x44')](util[_0xdd52('0x49')](_0xdd52('0x4a'),_0x220587['name']),_0xdd52('0x4e'),_0x220587);io[_0xdd52('0x44')]('voice_queue_presence:remove',_0x220587);};VoiceQueueReport[_0xdd52('0xa')]['emitVoiceQueueSummary']=function(_0x3621f1,_0x4ee95d){if(_0x3621f1['type']==='inbound'){var _0x14fb80={'id':_0x3621f1['id'],'name':_0x3621f1[_0xdd52('0x4b')],'strategy':_0x3621f1[_0xdd52('0x4f')],'answered':_0x3621f1[_0xdd52('0x50')],'available':_0x3621f1[_0xdd52('0x51')],'loggedIn':_0x3621f1[_0xdd52('0x52')],'pTalking':_0x3621f1['pTalking'],'sumBillable':_0x3621f1[_0xdd52('0x53')],'sumDuration':_0x3621f1[_0xdd52('0x54')],'sumHoldTime':_0x3621f1[_0xdd52('0x55')]||0x0,'talking':_0x3621f1['talking'],'total':_0x3621f1[_0xdd52('0x56')],'type':_0x3621f1[_0xdd52('0x57')],'unmanaged':_0x3621f1[_0xdd52('0x58')],'abandoned':_0x3621f1[_0xdd52('0x59')],'waiting':_0x3621f1['waiting']};if(_0x3621f1[_0xdd52('0x5a')]){_0x14fb80[_0xdd52('0x5a')]={'id':_0x3621f1['Trunk']['id'],'name':_0x3621f1[_0xdd52('0x5a')][_0xdd52('0x4b')],'active':_0x3621f1[_0xdd52('0x5a')]['active'],'callerid':_0x3621f1['Trunk'][_0xdd52('0x5b')]};}if(_0x3621f1[_0xdd52('0x5c')]){_0x14fb80[_0xdd52('0x5c')]={'id':_0x3621f1['Interval']['id'],'name':_0x3621f1[_0xdd52('0x5c')]['name']};}var _0xd150d=md5(JSON[_0xdd52('0x5d')](_0x14fb80));if(_0x3621f1[_0xdd52('0x5e')]!==_0xd150d){_0x3621f1['md5']=_0xd150d;logger['debug'](_0xdd52('0x5f')+_0x4ee95d+']\x20sending\x20voice_queue:save\x20event:',util[_0xdd52('0x3e')](_0x14fb80,{'showHidden':![],'depth':null}));this[_0xdd52('0x44')](util[_0xdd52('0x49')](_0xdd52('0x4a'),_0x14fb80[_0xdd52('0x4b')]),_0xdd52('0x60'),_0x14fb80);}}};VoiceQueueReport['prototype'][_0xdd52('0x61')]=function(_0x2fb3e3){return _0x2fb3e3!==null&&!_[_0xdd52('0x62')](_0x2fb3e3);};VoiceQueueReport[_0xdd52('0xa')]['loopQueueShow']=function(){var _0x2ca606=this;setInterval(function(){_0x2ca606[_0xdd52('0x34')]();ami[_0xdd52('0x37')]({'action':'queues'})[_0xdd52('0x3a')](function(_0x3a90fc){logger[_0xdd52('0x3d')](_0xdd52('0x63'),util[_0xdd52('0x3e')](_0x3a90fc,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport['prototype'][_0xdd52('0x64')]=function(){var _0x430f88=this;setInterval(function(){if(_0x430f88[_0xdd52('0x13')]){return ami[_0xdd52('0x37')]({'action':_0xdd52('0x65')})['then'](function(_0x3b9841){_0x430f88[_0xdd52('0x13')]=![];})['catch'](function(_0x51c9f9){logger[_0xdd52('0x3d')]('[voiceQueueReport][queuesummary]',util[_0xdd52('0x3e')](_0x51c9f9,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xdd52('0xa')]['syncQueueSummary']=function(_0x1e6f5a){try{if(this['isNotNull'](_0x1e6f5a)&&this['isNotNull'](_0x1e6f5a['queue'])){logger[_0xdd52('0x45')](_0xdd52('0x66'),util[_0xdd52('0x3e')](_0x1e6f5a,{'showHidden':![],'depth':null}));if(this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]]){logger['info'](_0xdd52('0x68'),_0x1e6f5a[_0xdd52('0x67')]);var _0x1bf35e=_[_0xdd52('0x69')](this[_0xdd52('0x11')],_0xdd52('0x67'))[_0x1e6f5a[_0xdd52('0x67')]]||0x0;var _0x4503c6=_0x1bf35e-_0x1e6f5a['callers'];if(this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x33')]!==_[_0xdd52('0x6a')](_0x1e6f5a[_0xdd52('0x6b')])||this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x52')]!==_[_0xdd52('0x6a')](_0x1e6f5a[_0xdd52('0x6c')])||this['voiceQueues'][_0x1e6f5a[_0xdd52('0x67')]]['available']!==_['toNumber'](_0x1e6f5a['available'])||this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]]['talking']!==_0x4503c6){this['voiceQueues'][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x33')]=_[_0xdd52('0x6a')](_0x1e6f5a[_0xdd52('0x6b')]);this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x52')]=_[_0xdd52('0x6a')](_0x1e6f5a[_0xdd52('0x6c')]);this[_0xdd52('0x12')][_0x1e6f5a['queue']]['available']=_['toNumber'](_0x1e6f5a[_0xdd52('0x51')]);this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x31')]=_0x4503c6>0x0?_0x4503c6:0x0;this['voiceQueues'][_0x1e6f5a[_0xdd52('0x67')]]['talking']=this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x31')]>_[_0xdd52('0x6a')](_0x1e6f5a[_0xdd52('0x6c')])?_[_0xdd52('0x6a')](_0x1e6f5a[_0xdd52('0x6c')]):this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]][_0xdd52('0x31')];this['emitVoiceQueueSummary'](this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]],_0xdd52('0x65'));}logger[_0xdd52('0x45')](_0xdd52('0x6d'),util[_0xdd52('0x3e')](this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]],{'showHidden':![],'depth':null}));ami[_0xdd52('0x44')]('custom:queuesummary',this[_0xdd52('0x12')][_0x1e6f5a[_0xdd52('0x67')]]);}}}catch(_0xbf8b05){logger[_0xdd52('0x3d')]('[voiceQueueReport][queuesummary]',util[_0xdd52('0x3e')](_0xbf8b05,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xdd52('0x6e')]=function(_0x37ceb6){logger[_0xdd52('0x45')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0xdd52('0x3e')](_0x37ceb6,{'showHidden':![],'depth':null}));this[_0xdd52('0x13')]=!![];};VoiceQueueReport[_0xdd52('0xa')][_0xdd52('0x1a')]=function(_0x609566){try{if(this[_0xdd52('0x61')](_0x609566)){logger['debug'](_0xdd52('0x6f'),_0x609566[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x609566,{'showHidden':![],'depth':null}));if(_[_0xdd52('0x62')](this['queueReports'][_0x609566[_0xdd52('0x48')]]))this[_0xdd52('0xf')][_0x609566[_0xdd52('0x48')]]=[];if(_[_0xdd52('0x62')](this[_0xdd52('0x11')][_0x609566[_0xdd52('0x48')]]))this[_0xdd52('0x11')][_0x609566['uniqueid']]={};var _0x2a8130=new QueueReport();_0x2a8130[_0xdd52('0x4b')]=_0x609566['queue'];_0x2a8130['type']=this['voiceQueues'][_0x2a8130[_0xdd52('0x4b')]]&&this[_0xdd52('0x12')][_0x2a8130[_0xdd52('0x4b')]][_0xdd52('0x57')]?this[_0xdd52('0x12')][_0x2a8130[_0xdd52('0x4b')]][_0xdd52('0x57')]||'inbound':_0xdd52('0x70');_0x2a8130['queue']=_0x609566[_0xdd52('0x67')];_0x2a8130[_0xdd52('0x71')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2a8130[_0xdd52('0x72')]=_0x609566['position'];_0x2a8130[_0xdd52('0x73')]=_0x609566[_0xdd52('0x73')];_0x2a8130[_0xdd52('0x48')]=_0x609566['uniqueid'];_0x2a8130[_0xdd52('0x74')]=this[_0xdd52('0x11')][_0x609566['uniqueid']][_0xdd52('0x74')];logger[_0xdd52('0x75')](_0xdd52('0x76'),_0x2a8130[_0xdd52('0x4b')],_0x2a8130[_0xdd52('0x57')]);_[_0xdd52('0x77')](_0x2a8130,_['pick'](_0x609566,_['keys'](_0x2a8130)));this[_0xdd52('0xf')][_0x609566['uniqueid']][_0xdd52('0x78')](_0x2a8130);this[_0xdd52('0x11')][_0x609566[_0xdd52('0x48')]]=_0x2a8130;this[_0xdd52('0x79')](_0x2a8130,'queuecallerjoin');}}catch(_0x58be5a){logger[_0xdd52('0x3d')]('[%s][voiceQueueReport][queuecallerjoin]',_0x609566[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x58be5a,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xdd52('0x1c')]=function(_0x29bd93){try{if(this[_0xdd52('0x61')](_0x29bd93)){logger['debug'](_0xdd52('0x7a'),_0x29bd93[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x29bd93,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x29bd93[_0xdd52('0x48')]]){var _0x12fb1b=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x29bd93[_0xdd52('0x48')]]);_0x12fb1b[_0xdd52('0x7c')]=![];_0x12fb1b[_0xdd52('0x7d')]=null;_0x12fb1b['holdtime']=_0x29bd93[_0xdd52('0x7e')];_0x12fb1b[_0xdd52('0x7f')]=_0x29bd93[_0xdd52('0x7f')];_0x12fb1b[_0xdd52('0x1b')]=!![];_0x12fb1b[_0xdd52('0x80')]=moment()[_0xdd52('0x49')](_0xdd52('0x81'));_0x12fb1b[_0xdd52('0x82')]=_0xdd52('0x83');_0x12fb1b[_0xdd52('0x84')]=null;logger[_0xdd52('0x75')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x12fb1b[_0xdd52('0x4b')],_0x12fb1b[_0xdd52('0x57')]);this[_0xdd52('0x11')][_0x29bd93[_0xdd52('0x48')]]=_0x12fb1b;this[_0xdd52('0x42')](_0x12fb1b,_0xdd52('0x1b'));}}}catch(_0x38f9c0){logger[_0xdd52('0x3d')](_0xdd52('0x7a'),_0x29bd93['uniqueid'],util['inspect'](_0x38f9c0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xdd52('0xa')]['syncQueueCallerLeave']=function(_0x199857){try{if(this[_0xdd52('0x61')](_0x199857)){logger['debug'](_0xdd52('0x85'),_0x199857['uniqueid'],util['inspect'](_0x199857,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x199857[_0xdd52('0x48')]]){var _0x4086d9=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x199857[_0xdd52('0x48')]]);_0x4086d9[_0xdd52('0x86')]=moment()[_0xdd52('0x49')](_0xdd52('0x81'));_0x4086d9[_0xdd52('0x87')]=_0x199857[_0xdd52('0x87')];_0x4086d9['connectedlinename']=_0x199857['connectedlinename'];logger[_0xdd52('0x75')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x4086d9['name'],_0x4086d9['type'],_0x199857[_0xdd52('0x87')],_0x199857['connectedlinename']);this[_0xdd52('0x11')][_0x199857['uniqueid']]=_0x4086d9;this[_0xdd52('0x79')](_0x4086d9,'queuecallerleave');}}}catch(_0x127b24){logger[_0xdd52('0x3d')](_0xdd52('0x85'),_0x199857[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x127b24,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xdd52('0x20')]=function(_0x296395){try{if(this['isNotNull'](_0x296395)){logger['debug'](_0xdd52('0x88'),_0x296395[_0xdd52('0x48')],util['inspect'](_0x296395,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x296395[_0xdd52('0x48')]]){var _0x93cfde=_[_0xdd52('0x7b')](this['queueReports'][_0x296395[_0xdd52('0x48')]]);_0x93cfde[_0xdd52('0x7c')]=!![];_0x93cfde['queuecallerexitreason']=_0xdd52('0x89');logger['info'](_0xdd52('0x8a'),_0x93cfde[_0xdd52('0x4b')],_0x93cfde['type']);}}}catch(_0x22580e){logger[_0xdd52('0x3d')](_0xdd52('0x88'),_0x296395[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x22580e,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xdd52('0x1e')]=function(_0x4fd998){try{if(this[_0xdd52('0x61')](_0x4fd998)){logger[_0xdd52('0x45')](_0xdd52('0x8b'),_0x4fd998[_0xdd52('0x48')],util['inspect'](_0x4fd998,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x4fd998[_0xdd52('0x48')]]){var _0x287af4=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x4fd998[_0xdd52('0x48')]]);_0x287af4[_0xdd52('0x1b')]=![];_0x287af4[_0xdd52('0x80')]=null;_0x287af4['assigned']=!![];_0x287af4[_0xdd52('0x84')]=_0x4fd998[_0xdd52('0x8c')];_0x287af4['holdtime']=_0x4fd998[_0xdd52('0x7e')];_0x287af4[_0xdd52('0x7c')]=!![];_0x287af4[_0xdd52('0x8d')]=![];_0x287af4[_0xdd52('0x8e')]=null;if(!_0x287af4[_0xdd52('0x8f')]){if(_0x4fd998[_0xdd52('0x90')]==_0xdd52('0x8f')){_0x287af4[_0xdd52('0x82')]=_0xdd52('0x91');logger['info'](_0xdd52('0x92'),_0x287af4['name'],_0x287af4['type']);}else{if(_['startsWith'](_0x4fd998[_0xdd52('0x39')][_0xdd52('0x93')](),'local/')){if(this['queueReports'][_0x4fd998['linkedid']]){var _0x2f3627=_[_0xdd52('0x7b')](this['queueReports'][_0x4fd998[_0xdd52('0x94')]]);_0x2f3627['queuecallercomplete']=![];_0x2f3627[_0xdd52('0x8d')]=!![];_0x2f3627[_0xdd52('0x8e')]=moment(_0x287af4[_0xdd52('0x71')])['add'](_0x4fd998[_0xdd52('0x7e')],'seconds')[_0xdd52('0x49')](_0xdd52('0x81'));_0x2f3627[_0xdd52('0x82')]=_0xdd52('0x95');_0x2f3627[_0xdd52('0x8f')]=!![];_0x2f3627[_0xdd52('0x96')]=_0xdd52('0x97');_0x2f3627[_0xdd52('0x98')]=_0x4fd998[_0xdd52('0x99')];_0x2f3627[_0xdd52('0x9a')]=_0x4fd998[_0xdd52('0x48')];logger[_0xdd52('0x75')](_0xdd52('0x9b'),_0x2f3627[_0xdd52('0x4b')],_0x2f3627[_0xdd52('0x57')]);var _0x199df6=this[_0xdd52('0xf')][_0x4fd998[_0xdd52('0x94')]];this[_0xdd52('0xf')][_0x4fd998[_0xdd52('0x94')]]=this[_0xdd52('0xf')][_0x4fd998[_0xdd52('0x48')]];this[_0xdd52('0xf')][_0x4fd998[_0xdd52('0x48')]]=_0x199df6;}}else{_0x287af4[_0xdd52('0x82')]=_0xdd52('0x9c')+_0x4fd998[_0xdd52('0x90')]['toUpperCase']();logger[_0xdd52('0x75')](_0xdd52('0x9d'),_0x287af4['name'],_0x287af4[_0xdd52('0x57')],_0x287af4[_0xdd52('0x82')]);}}}this[_0xdd52('0x11')][_0x4fd998[_0xdd52('0x48')]]=_0x287af4;this[_0xdd52('0x42')](_0x287af4,_0xdd52('0x9e'));}}}catch(_0x2dabde){logger[_0xdd52('0x3d')](_0xdd52('0x8b'),_0x4fd998[_0xdd52('0x48')],util['inspect'](_0x2dabde,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xdd52('0xa')][_0xdd52('0x22')]=function(_0x1f12a2){try{if(this[_0xdd52('0x61')](_0x1f12a2)){logger[_0xdd52('0x45')](_0xdd52('0x9f'),_0x1f12a2['uniqueid'],util[_0xdd52('0x3e')](_0x1f12a2,{'showHidden':![],'depth':null}));this['addVariable'](_0x1f12a2[_0xdd52('0x48')],_['keys'](_0x1f12a2['variable'])[0x0],_0x1f12a2[_0xdd52('0xa0')]);if(this[_0xdd52('0xf')][_0x1f12a2[_0xdd52('0x48')]]){var _0x29cab8=_['last'](this[_0xdd52('0xf')][_0x1f12a2[_0xdd52('0x48')]]);if(_0x29cab8){if(this[_0xdd52('0x61')](_0x1f12a2[_0xdd52('0xa1')])&&this[_0xdd52('0x61')](_0x1f12a2['variable'][_0xdd52('0xa2')])){switch(_0x1f12a2['value']){case _0xdd52('0xa3'):_0x29cab8[_0xdd52('0x8d')]=![];_0x29cab8[_0xdd52('0x8e')]=null;break;case _0xdd52('0xa4'):_0x29cab8[_0xdd52('0xa5')]=_0xdd52('0xa6');_0x29cab8[_0xdd52('0x8d')]=!![];_0x29cab8[_0xdd52('0x8e')]=moment()['format'](_0xdd52('0x81'));_0x29cab8['queuecallerleaveAt']=moment()[_0xdd52('0x49')](_0xdd52('0x81'));logger['debug'](_0xdd52('0xa7'),_0x1f12a2[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x29cab8,{'showHidden':![],'depth':null}));ami[_0xdd52('0x44')]('custom:timeout',_0x29cab8);break;default:_0x29cab8[_0xdd52('0x8d')]=!![];_0x29cab8['queuecallerexitAt']=moment()['format'](_0xdd52('0x81'));_0x29cab8[_0xdd52('0x86')]=moment()[_0xdd52('0x49')]('YYYY-MM-DD\x20HH:mm:ss');}_0x29cab8[_0xdd52('0x1b')]=![];_0x29cab8[_0xdd52('0x80')]=null;_0x29cab8[_0xdd52('0x82')]=_0x1f12a2['value'];this[_0xdd52('0x11')][_0x1f12a2['uniqueid']]=_0x29cab8;this['emitVoiceQueueChannelRemove'](_0x29cab8,_0xdd52('0x21'));}else if(this[_0xdd52('0x61')](_0x1f12a2[_0xdd52('0xa1')])&&this['isNotNull'](_0x1f12a2[_0xdd52('0xa1')][_0xdd52('0xa8')])){if(!_0x29cab8['queuecallerabandon']){_0x29cab8[_0xdd52('0x8d')]=!![];_0x29cab8[_0xdd52('0x8e')]=moment()[_0xdd52('0x49')](_0xdd52('0x81'));_0x29cab8[_0xdd52('0x82')]=_0xdd52('0xa9');_0x29cab8[_0xdd52('0x86')]=moment()[_0xdd52('0x49')](_0xdd52('0x81'));this['channels'][_0x1f12a2[_0xdd52('0x48')]]=_0x29cab8;}}logger[_0xdd52('0x75')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x1f12a2[_0xdd52('0x48')],_0x29cab8[_0xdd52('0x4b')],_0x29cab8[_0xdd52('0x57')],_[_0xdd52('0xaa')](_0x1f12a2[_0xdd52('0xa1')])[0x0],_0x1f12a2[_0xdd52('0xa0')]);_0x29cab8[_0xdd52('0x15')]=this['variables'][_0x1f12a2[_0xdd52('0x48')]];}}}}catch(_0x3716aa){logger['error']('[%s][voiceQueueReport][varset]',_0x1f12a2['uniqueid'],util[_0xdd52('0x3e')](_0x3716aa,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xdd52('0xa')]['addVariable']=function(_0x5092a0,_0xe5338a,_0x10a647){var _0x3d4e98=['rtpaudioqos',_0xdd52('0xab'),_0xdd52('0xac'),_0xdd52('0xad'),'rtpaudioqosloss',_0xdd52('0xae'),_0xdd52('0xaf'),_0xdd52('0xb0'),_0xdd52('0xb1'),_0xdd52('0xb2'),_0xdd52('0xb3'),_0xdd52('0xb4'),'membercalls',_0xdd52('0xb5'),'memberinterface',_0xdd52('0xb6'),_0xdd52('0x8c'),_0xdd52('0xb7'),_0xdd52('0xb8')];if(!_[_0xdd52('0x36')](_0xe5338a)&&!_[_0xdd52('0xb9')](_0x3d4e98,_0xe5338a)){if(_[_0xdd52('0x62')](this[_0xdd52('0x15')][_0x5092a0])){this[_0xdd52('0x15')][_0x5092a0]={};}this[_0xdd52('0x15')][_0x5092a0][_0xe5338a]=_0x10a647;}};VoiceQueueReport[_0xdd52('0xa')]['syncHangup']=function(_0x3c4ae3){try{if(this['isNotNull'](_0x3c4ae3)){logger[_0xdd52('0x45')](_0xdd52('0xba'),_0x3c4ae3['uniqueid'],util['inspect'](_0x3c4ae3,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x3c4ae3['uniqueid']]){for(var _0x4fc862=0x0,_0x78a8be={};_0x4fc862<this[_0xdd52('0xf')][_0x3c4ae3[_0xdd52('0x48')]][_0xdd52('0xbb')];_0x4fc862+=0x1){_0x78a8be=this[_0xdd52('0xf')][_0x3c4ae3[_0xdd52('0x48')]][_0x4fc862];if(this['voiceQueues'][_0x78a8be[_0xdd52('0x67')]]){if(_0x78a8be[_0xdd52('0x8d')]&&_0x78a8be[_0xdd52('0x8f')]!=!![]){this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x58')]+=0x1;}if(_0x78a8be[_0xdd52('0x1b')]){this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x59')]+=0x1;}this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x55')]+=moment(_0x78a8be[_0xdd52('0x86')])[_0xdd52('0xbc')](_0x78a8be[_0xdd52('0x71')],'seconds')||0x0;if(_0x4fc862===this[_0xdd52('0xf')][_0x3c4ae3[_0xdd52('0x48')]][_0xdd52('0xbb')]-0x1){this['voiceQueues'][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x54')]+=moment()['milliseconds'](0x0)[_0xdd52('0xbc')](_0x78a8be['queuecallerjoinAt'],'seconds');this[_0xdd52('0x12')][_0x78a8be['queue']][_0xdd52('0x56')]+=0x1;if(_0x78a8be[_0xdd52('0x7c')]){this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x50')]+=0x1;this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]]['sumBillable']+=moment()[_0xdd52('0xbd')](0x0)[_0xdd52('0xbc')](_0x78a8be[_0xdd52('0x86')],_0xdd52('0xbe'));_0x78a8be[_0xdd52('0x7d')]=moment()['format'](_0xdd52('0x81'));_0x78a8be['queuecallerexit']=![];_0x78a8be[_0xdd52('0x8e')]=null;}if(_0x78a8be[_0xdd52('0x8d')]&&_0x78a8be[_0xdd52('0x8f')]!=!![]){_0x78a8be[_0xdd52('0xa5')]=_0xdd52('0x58');logger[_0xdd52('0x45')](_0xdd52('0xbf'),_0x3c4ae3[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x78a8be,{'showHidden':![],'depth':null}));ami[_0xdd52('0x44')](_0xdd52('0xc0'),_0x78a8be);}if(_0x78a8be[_0xdd52('0x1b')]){_0x78a8be[_0xdd52('0xa5')]='abandoned';logger[_0xdd52('0x45')](_0xdd52('0xc1'),_0x3c4ae3[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x78a8be,{'showHidden':![],'depth':null}));ami[_0xdd52('0x44')](_0xdd52('0xc2'),_0x78a8be);}}else{this['voiceQueues'][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x54')]+=this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]][_0xdd52('0x55')];}logger[_0xdd52('0x75')](_0xdd52('0xc3'),_0x3c4ae3[_0xdd52('0x48')],_0x78a8be[_0xdd52('0x4b')],_0x78a8be[_0xdd52('0x57')],_0x3c4ae3['cause-txt']);this['channels'][_0x3c4ae3[_0xdd52('0x48')]]=_0x78a8be;this[_0xdd52('0x42')](_0x78a8be,_0xdd52('0x23'));this['emitVoiceQueueSummary'](this[_0xdd52('0x12')][_0x78a8be[_0xdd52('0x67')]],_0xdd52('0x23'));}}logger[_0xdd52('0x45')](_0xdd52('0xc4'),_0x3c4ae3[_0xdd52('0x48')],util[_0xdd52('0x3e')](this['queueReports'][_0x3c4ae3[_0xdd52('0x48')]],{'showHidden':![],'depth':null}));ami[_0xdd52('0x44')]('custom:voiceQueueReport',this['queueReports'][_0x3c4ae3[_0xdd52('0x48')]]);delete this[_0xdd52('0xf')][_0x3c4ae3[_0xdd52('0x48')]];delete this['channels'][_0x3c4ae3[_0xdd52('0x48')]];}if(this['variables'][_0x3c4ae3[_0xdd52('0x48')]]){delete this[_0xdd52('0x15')][_0x3c4ae3['uniqueid']];}}}catch(_0x537934){logger['error'](_0xdd52('0xba'),_0x3c4ae3['uniqueid'],util[_0xdd52('0x3e')](_0x537934,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xdd52('0x2a')]=function(_0x43fc33){try{if(this[_0xdd52('0x61')](_0x43fc33)){logger[_0xdd52('0x45')]('[%s][voiceQueueReport][attendedtransfer]',_0x43fc33[_0xdd52('0x48')],util['inspect'](_0x43fc33,{'showHidden':![],'depth':null}));var _0x1ed42a;if(this['queueReports'][_0x43fc33[_0xdd52('0xc5')]]){_0x1ed42a=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x43fc33[_0xdd52('0xc5')]]);_0x1ed42a[_0xdd52('0x98')]=_0x43fc33[_0xdd52('0xc6')];_0x1ed42a[_0xdd52('0x9a')]=_0x43fc33[_0xdd52('0xc7')];_0x1ed42a[_0xdd52('0x82')]=_0xdd52('0xc8');_0x1ed42a[_0xdd52('0x8f')]=!![];_0x1ed42a['transfertype']=_0xdd52('0xc9');if(this[_0xdd52('0xf')][_0x43fc33[_0xdd52('0xc7')]]){var _0x15cd86=this[_0xdd52('0xf')][_0x43fc33['secondtransfereruniqueid']];this[_0xdd52('0xf')][_0x43fc33['secondtransfereruniqueid']]=this[_0xdd52('0xf')][_0x43fc33['transfereeuniqueid']];this['queueReports'][_0x43fc33['transfereeuniqueid']]=_0x15cd86;var _0x5e1ed0=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x43fc33['transfereeuniqueid']]);_0x5e1ed0[_0xdd52('0x35')]=!![];}logger[_0xdd52('0x75')](_0xdd52('0xca'),_0x43fc33[_0xdd52('0x48')],_0x1ed42a[_0xdd52('0x4b')],_0x1ed42a[_0xdd52('0x57')],_0x1ed42a['transferexten'],_0x1ed42a['transferuniqueid']);}else if(this[_0xdd52('0xf')][_0x43fc33[_0xdd52('0xcb')]]){_0x1ed42a=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x43fc33['transfertargetuniqueid']]);_0x1ed42a['transferexten']=_0x43fc33[_0xdd52('0xcc')];_0x1ed42a[_0xdd52('0x9a')]=_0x43fc33['origtransfereruniqueid'];_0x1ed42a[_0xdd52('0x82')]='ATTENDEDTRANSFER';_0x1ed42a[_0xdd52('0x8f')]=!![];_0x1ed42a[_0xdd52('0x96')]=_0xdd52('0xc9');if(this[_0xdd52('0xf')][_0x43fc33[_0xdd52('0xcd')]]){var _0x15cd86=this['queueReports'][_0x43fc33['origtransfereruniqueid']];this['queueReports'][_0x43fc33[_0xdd52('0xcd')]]=this['queueReports'][_0x43fc33[_0xdd52('0xcb')]];this[_0xdd52('0xf')][_0x43fc33['transfertargetuniqueid']]=_0x15cd86;var _0x5e1ed0=_['last'](this['queueReports'][_0x43fc33[_0xdd52('0xcb')]]);_0x5e1ed0[_0xdd52('0x35')]=!![];}logger[_0xdd52('0x75')](_0xdd52('0xca'),_0x43fc33[_0xdd52('0x48')],_0x1ed42a['name'],_0x1ed42a[_0xdd52('0x57')],_0x1ed42a['transferexten'],_0x1ed42a[_0xdd52('0x9a')]);}}}catch(_0xb50349){logger[_0xdd52('0x3d')](_0xdd52('0xce'),_0x43fc33[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0xb50349,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xdd52('0x2c')]=function(_0x168c53){try{if(this[_0xdd52('0x61')](_0x168c53)){logger[_0xdd52('0x45')]('[%s][voiceQueueReport][blindtransfer]',_0x168c53['uniqueid'],util[_0xdd52('0x3e')](_0x168c53,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x168c53[_0xdd52('0xc5')]]){var _0x57bee3=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x168c53[_0xdd52('0xc5')]]);_0x57bee3[_0xdd52('0x82')]=_0xdd52('0xcf');_0x57bee3[_0xdd52('0x8f')]=!![];_0x57bee3[_0xdd52('0x96')]=_0xdd52('0xd0');_0x57bee3[_0xdd52('0x98')]=_0x168c53[_0xdd52('0xd1')];_0x57bee3[_0xdd52('0x9a')]=_0x168c53[_0xdd52('0xc5')];logger['info'](_0xdd52('0xd2'),_0x168c53[_0xdd52('0x48')],_0x57bee3[_0xdd52('0x4b')],_0x57bee3[_0xdd52('0x57')],_0x57bee3[_0xdd52('0x98')],_0x57bee3[_0xdd52('0x9a')]);this[_0xdd52('0xd3')]({'event':_0xdd52('0xd4'),'uniqueid':_0x168c53['transfereeuniqueid'],'context':_0x168c53[_0xdd52('0xd5')],'channel':_0x168c53['transfererchannel']});}}}catch(_0xdf36ef){logger[_0xdd52('0x3d')](_0xdd52('0xd6'),_0x168c53[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0xdf36ef,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xdd52('0xa')][_0xdd52('0xd7')]=function(_0x1684bc){try{if(this['isNotNull'](_0x1684bc)){logger[_0xdd52('0x45')](_0xdd52('0xd8'),_0x1684bc[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x1684bc,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x1684bc[_0xdd52('0x48')]]){var _0x1708de=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x1684bc[_0xdd52('0x48')]]);if(!_[_0xdd52('0x36')](_0x1708de[_0xdd52('0x86')])){_0x1708de[_0xdd52('0xd9')]=moment()[_0xdd52('0x49')](_0xdd52('0x81'));logger['info'](_0xdd52('0xda'),_0x1684bc[_0xdd52('0x48')],_0x1708de[_0xdd52('0xd9')]);}}}}catch(_0x529784){logger[_0xdd52('0x3d')](_0xdd52('0xd8'),_0x1684bc[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x529784,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xdd52('0xa')]['syncMusicOnHoldStop']=function(_0x4ae66d){try{if(this[_0xdd52('0x61')](_0x4ae66d)){logger[_0xdd52('0x45')](_0xdd52('0xdb'),_0x4ae66d[_0xdd52('0x48')],util[_0xdd52('0x3e')](_0x4ae66d,{'showHidden':![],'depth':null}));if(this[_0xdd52('0xf')][_0x4ae66d[_0xdd52('0x48')]]){var _0x25937e=_[_0xdd52('0x7b')](this[_0xdd52('0xf')][_0x4ae66d['uniqueid']]);if(!_[_0xdd52('0x36')](_0x25937e['mohstarttime'])){_0x25937e[_0xdd52('0xdc')]+=moment()['milliseconds'](0x0)[_0xdd52('0xbc')](_0x25937e[_0xdd52('0xd9')],_0xdd52('0xbe'));logger[_0xdd52('0x75')](_0xdd52('0xdd'),_0x4ae66d[_0xdd52('0x48')],_0x25937e[_0xdd52('0xdc')]);delete _0x25937e[_0xdd52('0xd9')];}}}}catch(_0x49ad52){logger[_0xdd52('0x3d')](_0xdd52('0xdb'),_0x4ae66d['uniqueid'],util['inspect'](_0x49ad52,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xdd52('0xa')]['syncNewExten']=function(_0x3fe8dc){try{if(this[_0xdd52('0x61')](_0x3fe8dc)){logger[_0xdd52('0x45')](_0xdd52('0xde'),_0x3fe8dc['uniqueid'],util[_0xdd52('0x3e')](_0x3fe8dc,{'showHidden':![],'depth':null}));if(_0x3fe8dc[_0xdd52('0xdf')][_0xdd52('0x93')]()==='set'){_0x3fe8dc['applicationdata']=_0x3fe8dc[_0xdd52('0xe0')]&&_0x3fe8dc[_0xdd52('0xe0')][_0xdd52('0xe1')](_0xdd52('0xe2'))?_0x3fe8dc['appdata']:(_0x3fe8dc[_0xdd52('0xe0')]||_0x3fe8dc[_0xdd52('0xe3')])[_0xdd52('0x93')]();if(_[_0xdd52('0xe1')](_0x3fe8dc[_0xdd52('0xe3')]['toLowerCase'](),_0xdd52('0xe4'))){logger[_0xdd52('0x75')](_0xdd52('0xe5'),_0x3fe8dc['uniqueid'],_0x3fe8dc[_0xdd52('0xdf')],_0x3fe8dc[_0xdd52('0xe3')]);if(_[_0xdd52('0x62')](this[_0xdd52('0x11')][_0x3fe8dc['uniqueid']]))this[_0xdd52('0x11')][_0x3fe8dc[_0xdd52('0x48')]]={};var _0x47a1b3=_0x3fe8dc['applicationdata'][_0xdd52('0xe6')]('=');var _0x5d217f=_0x47a1b3[0x0][_0xdd52('0x93')]()['match'](/cdr\((.*)\)/);if(_0x5d217f)this['channels'][_0x3fe8dc['uniqueid']][_0x5d217f[0x1]]=_0x47a1b3[0x1];}}}}catch(_0x2eafaa){logger['error'](_0xdd52('0xe7'),_0x3fe8dc[_0xdd52('0x48')],util['inspect'](_0x2eafaa,{'showHidden':![],'depth':null}));}};module[_0xdd52('0xe8')]=VoiceQueueReport;
\ No newline at end of file
+var _0x0713=['channels','queueChannels','voiceQueues','flagQueueSummary','variables','syncQueueSummary','bind','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','newexten','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','isNil','Action','status','channel','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkVariables]','clearQueueReport','campaigns','emitVoiceQueueChannelRemove','emit','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','strategy','available','sumHoldTime','total','unmanaged','abandoned','Trunk','active','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isNotNull','isUndefined','queues','catch','[voiceQueueReport][queues]','queuesummary','queue','[voiceQueueReport][queuesummary]\x20event:','info','callers','toNumber','loggedIn','loggedin','custom:queuesummary','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','count','routealias','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','emitVoiceQueueChannelSave','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','syncAgentComplete','assigned','queuecallerexit','queuecallerexitAt','transfer','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','linkedid','add','seconds','transfertype','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','[%s][voiceQueueReport][agentcomplete]','[%s][voiceQueueReport][varset]','addVariable','variable','lastevent','timeout','queuecallerleaveAt','custom:timeout','value','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','membername','memberpenalty','memberrealtime','[%s][voiceQueueReport][hangup]','length','diff','milliseconds','answered','sumBillable','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerabandon','sumDuration','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','syncAttendedTransfer','transfereeuniqueid','secondtransfereruniqueid','ATTENDEDTRANSFER','ATTENDED','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfereruniqueid','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][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','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','cdr(','match','[%s][voiceQueueReport][newexten]','util','md5','ioredis','../../../config/environment','../../../config/logger','../ami','../model/queueReport','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents'];(function(_0x5bd27f,_0x16c4a9){var _0x10f40a=function(_0x35237d){while(--_0x35237d){_0x5bd27f['push'](_0x5bd27f['shift']());}};_0x10f40a(++_0x16c4a9);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x3071('0x0'));var md5=require(_0x3071('0x1'));var Redis=require(_0x3071('0x2'));var config=require(_0x3071('0x3'));var logger=require(_0x3071('0x4'))('ami');var ami=require(_0x3071('0x5'));var QueueReport=require(_0x3071('0x6'));config[_0x3071('0x7')]=_[_0x3071('0x8')](config[_0x3071('0x7')],{'host':_0x3071('0x9'),'port':0x18eb});var io=require(_0x3071('0xa'))(new Redis(config[_0x3071('0x7')]));var Sequence=function(){};Sequence[_0x3071('0xb')][_0x3071('0xc')]=function(_0x3e9a5e){this[_0x3071('0xd')]=this[_0x3071('0xd')]?this['tail'][_0x3071('0xe')](_0x3e9a5e):_0x3e9a5e();};function VoiceQueueReport(_0x2610b4){this[_0x3071('0xf')]=new Sequence();this[_0x3071('0x10')]={};this[_0x3071('0x11')]=_0x2610b4['agents'];this[_0x3071('0x12')]=_0x2610b4[_0x3071('0x13')];this[_0x3071('0x14')]=_0x2610b4[_0x3071('0x14')];this[_0x3071('0x15')]=!![];this['campaigns']=_0x2610b4['campaigns'];this[_0x3071('0x16')]={};ami['on']('queuesummary',this[_0x3071('0x17')][_0x3071('0x18')](this));ami['on']('queuesummarycomplete',this[_0x3071('0x19')]['bind'](this));ami['on'](_0x3071('0x1a'),this[_0x3071('0x1b')][_0x3071('0x18')](this));ami['on'](_0x3071('0x1c'),this[_0x3071('0x1d')][_0x3071('0x18')](this));ami['on'](_0x3071('0x1e'),this[_0x3071('0x1f')][_0x3071('0x18')](this));ami['on'](_0x3071('0x20'),this['syncAgentComplete'][_0x3071('0x18')](this));ami['on'](_0x3071('0x21'),this[_0x3071('0x22')][_0x3071('0x18')](this));ami['on'](_0x3071('0x23'),this[_0x3071('0x24')][_0x3071('0x18')](this));ami['on'](_0x3071('0x25'),this['syncHangup'][_0x3071('0x18')](this));ami['on'](_0x3071('0x26'),this[_0x3071('0x27')]['bind'](this));ami['on'](_0x3071('0x28'),this['syncNewExten'][_0x3071('0x18')](this));ami['on'](_0x3071('0x29'),this[_0x3071('0x2a')][_0x3071('0x18')](this));ami['on'](_0x3071('0x2b'),this[_0x3071('0x2c')][_0x3071('0x18')](this));ami['on'](_0x3071('0x2d'),this['syncAttendedTransfer']['bind'](this));ami['on'](_0x3071('0x2e'),this[_0x3071('0x2f')][_0x3071('0x18')](this));this[_0x3071('0x30')]();this[_0x3071('0x31')]();}function clearChannels(_0x44b45f){if(!_[_0x3071('0x32')](_0x44b45f)){for(var _0x1fe727 in _0x44b45f){if(_0x44b45f[_0x3071('0x33')](_0x1fe727)){delete _0x44b45f[_0x1fe727];}}}}function clearCampaigns(_0x4c7130){if(!_[_0x3071('0x32')](_0x4c7130)){for(var _0x3f1e6e in _0x4c7130){if(_0x4c7130[_0x3071('0x33')](_0x3f1e6e)){_0x4c7130[_0x3f1e6e]['originated']=0x0;}}}}function clearVoiceQueues(_0x4fb1ca){if(!_[_0x3071('0x32')](_0x4fb1ca)){for(var _0x163604 in _0x4fb1ca){if(_0x4fb1ca[_0x3071('0x33')](_0x163604)){_0x4fb1ca[_0x163604][_0x3071('0x34')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x35')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x36')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x37')]=0x0;_0x4fb1ca[_0x163604][_0x3071('0x38')]=!![];}}}}function clearAgentBooked(_0x292205){if(!_[_0x3071('0x32')](_0x292205)){for(var _0x5aba96 in _0x292205){if(_0x292205['hasOwnProperty'](_0x5aba96)){_0x292205[_0x5aba96][_0x3071('0x39')]=!![];}}}}VoiceQueueReport[_0x3071('0xb')][_0x3071('0x3a')]=function(){var _0x40be95=this;for(var _0x3f6d90 in this[_0x3071('0x12')]){if(this[_0x3071('0x12')][_0x3071('0x33')](_0x3f6d90)&&!this['channels'][_0x3f6d90]['switch']){this['sequence'][_0x3071('0xc')](function(){if(!_[_0x3071('0x3b')](_0x40be95['channels'][_0x3f6d90])){return ami[_0x3071('0x3c')]({'action':_0x3071('0x3d'),'channel':_0x40be95[_0x3071('0x12')][_0x3f6d90][_0x3071('0x3e')]})['catch'](function(_0x218a82){if(_0x218a82[_0x3071('0x3f')]===_0x3071('0x40')){setTimeout(function(){if(_0x40be95[_0x3071('0x12')][_0x3f6d90]){delete _0x40be95[_0x3071('0x12')][_0x3f6d90];logger[_0x3071('0x41')](_0x3071('0x42'),_0x3f6d90,util[_0x3071('0x43')](_0x218a82,{'showHidden':![],'depth':null}));}if(_0x40be95['queueReports'][_0x3f6d90]){delete _0x40be95[_0x3071('0x10')][_0x3f6d90];logger['error']('[%s][voiceQueueReport][checkQueueReport]',_0x3f6d90,util[_0x3071('0x43')](_0x218a82,{'showHidden':![],'depth':null}));}if(_0x40be95[_0x3071('0x16')][_0x3f6d90]){delete _0x40be95['variables'][_0x3f6d90];logger[_0x3071('0x41')](_0x3071('0x44'),_0x3f6d90,util[_0x3071('0x43')](_0x218a82,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x27')]=function(){logger[_0x3071('0x41')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x3071('0x12')]);this[_0x3071('0x45')](this['queueReports']);clearAgentBooked(this[_0x3071('0x11')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x3071('0x46')]);};VoiceQueueReport[_0x3071('0xb')]['clearQueueReport']=function(_0x593c99){var _0x283074=this;if(!_[_0x3071('0x32')](_0x593c99)){for(var _0x569171 in _0x593c99){if(_0x593c99['hasOwnProperty'](_0x569171)){_0x283074[_0x3071('0x47')](_0x593c99[_0x569171],'clearqueuereport');delete _0x593c99[_0x569171];}}}};VoiceQueueReport[_0x3071('0xb')]['emit']=function(_0x7c1782,_0x100650,_0x1fcc52){io['to'](_0x7c1782)[_0x3071('0x48')](_0x100650,_0x1fcc52);};VoiceQueueReport[_0x3071('0xb')]['emitVoiceQueueChannelSave']=function(_0x53ed25,_0x4337eb){logger[_0x3071('0x49')](_0x3071('0x4a')+_0x4337eb+_0x3071('0x4b'),_0x53ed25['uniqueid'],util[_0x3071('0x43')](_0x53ed25,{'showHidden':![],'depth':null}));this[_0x3071('0x48')](util[_0x3071('0x4c')](_0x3071('0x4d'),_0x53ed25[_0x3071('0x4e')]),_0x3071('0x4f'),_0x53ed25);io['emit'](_0x3071('0x50'),_0x53ed25);};VoiceQueueReport['prototype']['emitVoiceQueueChannelRemove']=function(_0x4dc9d1,_0x47ceaf){logger[_0x3071('0x49')](_0x3071('0x4a')+_0x47ceaf+_0x3071('0x51'),_0x4dc9d1[_0x3071('0x52')],util[_0x3071('0x43')](_0x4dc9d1,{'showHidden':![],'depth':null}));this[_0x3071('0x48')](util[_0x3071('0x4c')](_0x3071('0x4d'),_0x4dc9d1['name']),_0x3071('0x53'),_0x4dc9d1);io[_0x3071('0x48')](_0x3071('0x54'),_0x4dc9d1);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x55')]=function(_0x5ef13f,_0x5c93c7){if(_0x5ef13f[_0x3071('0x56')]===_0x3071('0x57')){var _0x1fe5e0={'id':_0x5ef13f['id'],'name':_0x5ef13f[_0x3071('0x4e')],'strategy':_0x5ef13f[_0x3071('0x58')],'answered':_0x5ef13f['answered'],'available':_0x5ef13f[_0x3071('0x59')],'loggedIn':_0x5ef13f['loggedIn'],'pTalking':_0x5ef13f[_0x3071('0x36')],'sumBillable':_0x5ef13f['sumBillable'],'sumDuration':_0x5ef13f['sumDuration'],'sumHoldTime':_0x5ef13f[_0x3071('0x5a')]||0x0,'talking':_0x5ef13f['talking'],'total':_0x5ef13f[_0x3071('0x5b')],'type':_0x5ef13f['type'],'unmanaged':_0x5ef13f[_0x3071('0x5c')],'abandoned':_0x5ef13f[_0x3071('0x5d')],'waiting':_0x5ef13f[_0x3071('0x37')]};if(_0x5ef13f[_0x3071('0x5e')]){_0x1fe5e0['Trunk']={'id':_0x5ef13f[_0x3071('0x5e')]['id'],'name':_0x5ef13f['Trunk'][_0x3071('0x4e')],'active':_0x5ef13f['Trunk'][_0x3071('0x5f')],'callerid':_0x5ef13f[_0x3071('0x5e')]['callerid']};}if(_0x5ef13f[_0x3071('0x60')]){_0x1fe5e0[_0x3071('0x60')]={'id':_0x5ef13f[_0x3071('0x60')]['id'],'name':_0x5ef13f[_0x3071('0x60')][_0x3071('0x4e')]};}var _0x2622b4=md5(JSON[_0x3071('0x61')](_0x1fe5e0));if(_0x5ef13f['md5']!==_0x2622b4){_0x5ef13f[_0x3071('0x1')]=_0x2622b4;logger[_0x3071('0x49')](_0x3071('0x62')+_0x5c93c7+_0x3071('0x63'),util['inspect'](_0x1fe5e0,{'showHidden':![],'depth':null}));this[_0x3071('0x48')](util[_0x3071('0x4c')](_0x3071('0x4d'),_0x1fe5e0[_0x3071('0x4e')]),_0x3071('0x64'),_0x1fe5e0);}}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x65')]=function(_0x390944){return _0x390944!==null&&!_[_0x3071('0x66')](_0x390944);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x31')]=function(){var _0x111115=this;setInterval(function(){_0x111115[_0x3071('0x3a')]();ami[_0x3071('0x3c')]({'action':_0x3071('0x67')})[_0x3071('0x68')](function(_0x596cdd){logger['error'](_0x3071('0x69'),util['inspect'](_0x596cdd,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x30')]=function(){var _0x15c6f8=this;setInterval(function(){if(_0x15c6f8['flagQueueSummary']){return ami[_0x3071('0x3c')]({'action':_0x3071('0x6a')})['then'](function(_0x4b8ec0){_0x15c6f8[_0x3071('0x15')]=![];})[_0x3071('0x68')](function(_0x30e9d5){logger[_0x3071('0x41')]('[voiceQueueReport][queuesummary]',util[_0x3071('0x43')](_0x30e9d5,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x17')]=function(_0x41f02a){try{if(this[_0x3071('0x65')](_0x41f02a)&&this['isNotNull'](_0x41f02a[_0x3071('0x6b')])){logger[_0x3071('0x49')](_0x3071('0x6c'),util[_0x3071('0x43')](_0x41f02a,{'showHidden':![],'depth':null}));if(this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]]){logger[_0x3071('0x6d')]('[voiceQueueReport][queuesummary]\x20name:%s',_0x41f02a['queue']);var _0x18cad9=_['countBy'](this[_0x3071('0x12')],_0x3071('0x6b'))[_0x41f02a['queue']]||0x0;var _0x19dc95=_0x18cad9-_0x41f02a[_0x3071('0x6e')];if(this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x37')]!==_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x6e')])||this[_0x3071('0x14')][_0x41f02a['queue']][_0x3071('0x70')]!==_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x71')])||this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x59')]!==_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x59')])||this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')]!==_0x19dc95){this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]]['waiting']=_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x6e')]);this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x70')]=_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x71')]);this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x59')]=_[_0x3071('0x6f')](_0x41f02a['available']);this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')]=_0x19dc95>0x0?_0x19dc95:0x0;this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')]=this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]]['talking']>_[_0x3071('0x6f')](_0x41f02a[_0x3071('0x71')])?_['toNumber'](_0x41f02a['loggedin']):this[_0x3071('0x14')][_0x41f02a[_0x3071('0x6b')]][_0x3071('0x35')];this[_0x3071('0x55')](this['voiceQueues'][_0x41f02a['queue']],_0x3071('0x6a'));}logger['debug']('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util['inspect'](this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]],{'showHidden':![],'depth':null}));ami[_0x3071('0x48')](_0x3071('0x72'),this['voiceQueues'][_0x41f02a[_0x3071('0x6b')]]);}}}catch(_0xfab3d9){logger[_0x3071('0x41')](_0x3071('0x73'),util['inspect'](_0xfab3d9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x19')]=function(_0x588406){logger[_0x3071('0x49')](_0x3071('0x74'),util[_0x3071('0x43')](_0x588406,{'showHidden':![],'depth':null}));this[_0x3071('0x15')]=!![];};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x1b')]=function(_0x2deac2){try{if(this['isNotNull'](_0x2deac2)){logger['debug'](_0x3071('0x75'),_0x2deac2[_0x3071('0x52')],util[_0x3071('0x43')](_0x2deac2,{'showHidden':![],'depth':null}));if(_['isUndefined'](this['queueReports'][_0x2deac2[_0x3071('0x52')]]))this[_0x3071('0x10')][_0x2deac2[_0x3071('0x52')]]=[];if(_[_0x3071('0x66')](this[_0x3071('0x12')][_0x2deac2[_0x3071('0x52')]]))this[_0x3071('0x12')][_0x2deac2[_0x3071('0x52')]]={};var _0x5eed64=new QueueReport();_0x5eed64[_0x3071('0x4e')]=_0x2deac2['queue'];_0x5eed64[_0x3071('0x56')]=this[_0x3071('0x14')][_0x5eed64[_0x3071('0x4e')]]&&this[_0x3071('0x14')][_0x5eed64[_0x3071('0x4e')]][_0x3071('0x56')]?this[_0x3071('0x14')][_0x5eed64[_0x3071('0x4e')]]['type']||_0x3071('0x57'):_0x3071('0x57');_0x5eed64[_0x3071('0x6b')]=_0x2deac2['queue'];_0x5eed64[_0x3071('0x76')]=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x5eed64['position']=_0x2deac2['position'];_0x5eed64[_0x3071('0x78')]=_0x2deac2['count'];_0x5eed64[_0x3071('0x52')]=_0x2deac2[_0x3071('0x52')];_0x5eed64[_0x3071('0x79')]=this[_0x3071('0x12')][_0x2deac2[_0x3071('0x52')]][_0x3071('0x79')];logger[_0x3071('0x6d')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x5eed64[_0x3071('0x4e')],_0x5eed64[_0x3071('0x56')]);_[_0x3071('0x7a')](_0x5eed64,_[_0x3071('0x7b')](_0x2deac2,_[_0x3071('0x7c')](_0x5eed64)));this[_0x3071('0x10')][_0x2deac2[_0x3071('0x52')]][_0x3071('0x7d')](_0x5eed64);this['channels'][_0x2deac2[_0x3071('0x52')]]=_0x5eed64;this['emitVoiceQueueChannelSave'](_0x5eed64,_0x3071('0x1a'));}}catch(_0x1456db){logger[_0x3071('0x41')](_0x3071('0x75'),_0x2deac2[_0x3071('0x52')],util[_0x3071('0x43')](_0x1456db,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x1d')]=function(_0x77df0){try{if(this[_0x3071('0x65')](_0x77df0)){logger['debug'](_0x3071('0x7e'),_0x77df0[_0x3071('0x52')],util['inspect'](_0x77df0,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0x77df0[_0x3071('0x52')]]){var _0x306964=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x77df0['uniqueid']]);_0x306964['queuecallercomplete']=![];_0x306964[_0x3071('0x80')]=null;_0x306964['holdtime']=_0x77df0[_0x3071('0x81')];_0x306964[_0x3071('0x82')]=_0x77df0[_0x3071('0x82')];_0x306964[_0x3071('0x1c')]=!![];_0x306964[_0x3071('0x83')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x306964[_0x3071('0x84')]=_0x3071('0x85');_0x306964[_0x3071('0x86')]=null;logger[_0x3071('0x6d')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x306964[_0x3071('0x4e')],_0x306964[_0x3071('0x56')]);this['channels'][_0x77df0[_0x3071('0x52')]]=_0x306964;this[_0x3071('0x47')](_0x306964,_0x3071('0x1c'));}}}catch(_0x10bc5b){logger[_0x3071('0x41')]('[%s][voiceQueueReport][queuecallerabandon]',_0x77df0[_0x3071('0x52')],util['inspect'](_0x10bc5b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x1f')]=function(_0x39060f){try{if(this[_0x3071('0x65')](_0x39060f)){logger[_0x3071('0x49')](_0x3071('0x87'),_0x39060f[_0x3071('0x52')],util[_0x3071('0x43')](_0x39060f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x39060f[_0x3071('0x52')]]){var _0x3efa3c=_[_0x3071('0x7f')](this['queueReports'][_0x39060f[_0x3071('0x52')]]);_0x3efa3c['queuecallerleaveAt']=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x3efa3c[_0x3071('0x88')]=_0x39060f['connectedlinenum'];_0x3efa3c[_0x3071('0x89')]=_0x39060f[_0x3071('0x89')];logger[_0x3071('0x6d')](_0x3071('0x8a'),_0x3efa3c[_0x3071('0x4e')],_0x3efa3c[_0x3071('0x56')],_0x39060f[_0x3071('0x88')],_0x39060f[_0x3071('0x89')]);this[_0x3071('0x12')][_0x39060f['uniqueid']]=_0x3efa3c;this[_0x3071('0x8b')](_0x3efa3c,_0x3071('0x1e'));}}}catch(_0x34b376){logger['error']('[%s][voiceQueueReport][queuecallerleave]',_0x39060f['uniqueid'],util['inspect'](_0x34b376,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3071('0x22')]=function(_0x44b4c9){try{if(this['isNotNull'](_0x44b4c9)){logger[_0x3071('0x49')](_0x3071('0x8c'),_0x44b4c9[_0x3071('0x52')],util['inspect'](_0x44b4c9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x44b4c9[_0x3071('0x52')]]){var _0x2927b2=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x44b4c9[_0x3071('0x52')]]);_0x2927b2[_0x3071('0x8d')]=!![];_0x2927b2[_0x3071('0x84')]='COMPLETEDBYAGENT';logger['info'](_0x3071('0x8e'),_0x2927b2[_0x3071('0x4e')],_0x2927b2[_0x3071('0x56')]);}}}catch(_0x1674cb){logger['error'](_0x3071('0x8c'),_0x44b4c9[_0x3071('0x52')],util[_0x3071('0x43')](_0x1674cb,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x8f')]=function(_0x38bf4e){try{if(this[_0x3071('0x65')](_0x38bf4e)){logger[_0x3071('0x49')]('[%s][voiceQueueReport][agentcomplete]',_0x38bf4e[_0x3071('0x52')],util[_0x3071('0x43')](_0x38bf4e,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x52')]]){var _0x46cc3b=_['last'](this[_0x3071('0x10')][_0x38bf4e['uniqueid']]);_0x46cc3b['queuecallerabandon']=![];_0x46cc3b[_0x3071('0x83')]=null;_0x46cc3b[_0x3071('0x90')]=!![];_0x46cc3b[_0x3071('0x86')]=_0x38bf4e['membername'];_0x46cc3b[_0x3071('0x81')]=_0x38bf4e[_0x3071('0x81')];_0x46cc3b[_0x3071('0x8d')]=!![];_0x46cc3b[_0x3071('0x91')]=![];_0x46cc3b[_0x3071('0x92')]=null;if(!_0x46cc3b['transfer']){if(_0x38bf4e['reason']==_0x3071('0x93')){_0x46cc3b[_0x3071('0x84')]='COMPLETED';logger[_0x3071('0x6d')](_0x3071('0x94'),_0x46cc3b[_0x3071('0x4e')],_0x46cc3b[_0x3071('0x56')]);}else{if(_[_0x3071('0x95')](_0x38bf4e['channel'][_0x3071('0x96')](),'local/')){if(this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x97')]]){var _0x532943=_[_0x3071('0x7f')](this['queueReports'][_0x38bf4e[_0x3071('0x97')]]);_0x532943[_0x3071('0x8d')]=![];_0x532943[_0x3071('0x91')]=!![];_0x532943[_0x3071('0x92')]=moment(_0x46cc3b['queuecallerjoinAt'])[_0x3071('0x98')](_0x38bf4e['holdtime'],_0x3071('0x99'))['format'](_0x3071('0x77'));_0x532943[_0x3071('0x84')]='FORWARDTRANSFER';_0x532943[_0x3071('0x93')]=!![];_0x532943[_0x3071('0x9a')]='FORWARD';_0x532943[_0x3071('0x9b')]=_0x38bf4e[_0x3071('0x9c')];_0x532943[_0x3071('0x9d')]=_0x38bf4e[_0x3071('0x52')];logger[_0x3071('0x6d')](_0x3071('0x9e'),_0x532943[_0x3071('0x4e')],_0x532943[_0x3071('0x56')]);var _0x325aa2=this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x97')]];this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x97')]]=this[_0x3071('0x10')][_0x38bf4e[_0x3071('0x52')]];this['queueReports'][_0x38bf4e[_0x3071('0x52')]]=_0x325aa2;}}else{_0x46cc3b[_0x3071('0x84')]=_0x3071('0x9f')+_0x38bf4e[_0x3071('0xa0')][_0x3071('0xa1')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x46cc3b[_0x3071('0x4e')],_0x46cc3b[_0x3071('0x56')],_0x46cc3b['queuecallerexitreason']);}}}this[_0x3071('0x12')][_0x38bf4e[_0x3071('0x52')]]=_0x46cc3b;this['emitVoiceQueueChannelRemove'](_0x46cc3b,_0x3071('0x20'));}}}catch(_0x2edff8){logger[_0x3071('0x41')](_0x3071('0xa2'),_0x38bf4e[_0x3071('0x52')],util[_0x3071('0x43')](_0x2edff8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x24')]=function(_0xbee265){try{if(this[_0x3071('0x65')](_0xbee265)){logger['debug'](_0x3071('0xa3'),_0xbee265['uniqueid'],util[_0x3071('0x43')](_0xbee265,{'showHidden':![],'depth':null}));this[_0x3071('0xa4')](_0xbee265[_0x3071('0x52')],_[_0x3071('0x7c')](_0xbee265['variable'])[0x0],_0xbee265['value']);if(this['queueReports'][_0xbee265[_0x3071('0x52')]]){var _0x44ae03=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0xbee265['uniqueid']]);if(_0x44ae03){if(this[_0x3071('0x65')](_0xbee265[_0x3071('0xa5')])&&this[_0x3071('0x65')](_0xbee265['variable']['queuestatus'])){switch(_0xbee265['value']){case'CONTINUE':_0x44ae03[_0x3071('0x91')]=![];_0x44ae03[_0x3071('0x92')]=null;break;case'TIMEOUT':_0x44ae03[_0x3071('0xa6')]=_0x3071('0xa7');_0x44ae03[_0x3071('0x91')]=!![];_0x44ae03[_0x3071('0x92')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');_0x44ae03[_0x3071('0xa8')]=moment()[_0x3071('0x4c')](_0x3071('0x77'));logger[_0x3071('0x49')]('[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:',_0xbee265[_0x3071('0x52')],util['inspect'](_0x44ae03,{'showHidden':![],'depth':null}));ami[_0x3071('0x48')](_0x3071('0xa9'),_0x44ae03);break;default:_0x44ae03[_0x3071('0x91')]=!![];_0x44ae03['queuecallerexitAt']=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x44ae03[_0x3071('0xa8')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');}_0x44ae03[_0x3071('0x1c')]=![];_0x44ae03[_0x3071('0x83')]=null;_0x44ae03[_0x3071('0x84')]=_0xbee265[_0x3071('0xaa')];this[_0x3071('0x12')][_0xbee265['uniqueid']]=_0x44ae03;this['emitVoiceQueueChannelRemove'](_0x44ae03,_0x3071('0x23'));}else if(this[_0x3071('0x65')](_0xbee265[_0x3071('0xa5')])&&this[_0x3071('0x65')](_0xbee265['variable']['queueposition'])){if(!_0x44ae03[_0x3071('0x1c')]){_0x44ae03[_0x3071('0x91')]=!![];_0x44ae03['queuecallerexitAt']=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x44ae03[_0x3071('0x84')]='EXITWITHKEY';_0x44ae03['queuecallerleaveAt']=moment()['format'](_0x3071('0x77'));this[_0x3071('0x12')][_0xbee265[_0x3071('0x52')]]=_0x44ae03;}}logger['info']('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0xbee265[_0x3071('0x52')],_0x44ae03[_0x3071('0x4e')],_0x44ae03[_0x3071('0x56')],_[_0x3071('0x7c')](_0xbee265[_0x3071('0xa5')])[0x0],_0xbee265['value']);_0x44ae03[_0x3071('0x16')]=this['variables'][_0xbee265[_0x3071('0x52')]];}}}}catch(_0x294e55){logger[_0x3071('0x41')](_0x3071('0xa3'),_0xbee265[_0x3071('0x52')],util['inspect'](_0x294e55,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0xa4')]=function(_0x17b103,_0x8787eb,_0x315200){var _0x39f057=[_0x3071('0xab'),_0x3071('0xac'),_0x3071('0xad'),_0x3071('0xae'),_0x3071('0xaf'),'rtpaudioqoslossbridged',_0x3071('0xb0'),_0x3071('0xb1'),_0x3071('0xb2'),_0x3071('0xb3'),'bridgepeer',_0x3071('0xb4'),'membercalls',_0x3071('0xb5'),_0x3071('0xb6'),_0x3071('0xb7'),_0x3071('0xb8'),_0x3071('0xb9'),_0x3071('0xba')];if(!_[_0x3071('0x3b')](_0x8787eb)&&!_['includes'](_0x39f057,_0x8787eb)){if(_[_0x3071('0x66')](this['variables'][_0x17b103])){this['variables'][_0x17b103]={};}this[_0x3071('0x16')][_0x17b103][_0x8787eb]=_0x315200;}};VoiceQueueReport[_0x3071('0xb')]['syncHangup']=function(_0xf7cc54){try{if(this['isNotNull'](_0xf7cc54)){logger[_0x3071('0x49')](_0x3071('0xbb'),_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0xf7cc54,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0xf7cc54[_0x3071('0x52')]]){for(var _0x116692=0x0,_0x3a5b66={};_0x116692<this[_0x3071('0x10')][_0xf7cc54[_0x3071('0x52')]][_0x3071('0xbc')];_0x116692+=0x1){_0x3a5b66=this['queueReports'][_0xf7cc54[_0x3071('0x52')]][_0x116692];if(this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]]){if(_0x3a5b66['queuecallerexit']&&_0x3a5b66[_0x3071('0x93')]!=!![]){this['voiceQueues'][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0x5c')]+=0x1;}if(_0x3a5b66[_0x3071('0x1c')]){this[_0x3071('0x14')][_0x3a5b66['queue']]['abandoned']+=0x1;}this['voiceQueues'][_0x3a5b66[_0x3071('0x6b')]]['sumHoldTime']+=moment(_0x3a5b66['queuecallerleaveAt'])[_0x3071('0xbd')](_0x3a5b66['queuecallerjoinAt'],_0x3071('0x99'))||0x0;if(_0x116692===this[_0x3071('0x10')][_0xf7cc54[_0x3071('0x52')]]['length']-0x1){this[_0x3071('0x14')][_0x3a5b66['queue']]['sumDuration']+=moment()[_0x3071('0xbe')](0x0)[_0x3071('0xbd')](_0x3a5b66[_0x3071('0x76')],_0x3071('0x99'));this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0x5b')]+=0x1;if(_0x3a5b66['queuecallercomplete']){this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0xbf')]+=0x1;this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0xc0')]+=moment()[_0x3071('0xbe')](0x0)[_0x3071('0xbd')](_0x3a5b66[_0x3071('0xa8')],'seconds');_0x3a5b66[_0x3071('0x80')]=moment()[_0x3071('0x4c')](_0x3071('0x77'));_0x3a5b66[_0x3071('0x91')]=![];_0x3a5b66[_0x3071('0x92')]=null;}if(_0x3a5b66[_0x3071('0x91')]&&_0x3a5b66[_0x3071('0x93')]!=!![]){_0x3a5b66['lastevent']=_0x3071('0x5c');logger['debug'](_0x3071('0xc1'),_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0x3a5b66,{'showHidden':![],'depth':null}));ami['emit']('custom:queuecallerunmanaged',_0x3a5b66);}if(_0x3a5b66['queuecallerabandon']){_0x3a5b66[_0x3071('0xa6')]=_0x3071('0x5d');logger[_0x3071('0x49')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0x3a5b66,{'showHidden':![],'depth':null}));ami[_0x3071('0x48')](_0x3071('0xc2'),_0x3a5b66);}}else{this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]][_0x3071('0xc3')]+=this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]]['sumHoldTime'];}logger[_0x3071('0x6d')](_0x3071('0xc4'),_0xf7cc54[_0x3071('0x52')],_0x3a5b66['name'],_0x3a5b66[_0x3071('0x56')],_0xf7cc54[_0x3071('0xc5')]);this[_0x3071('0x12')][_0xf7cc54[_0x3071('0x52')]]=_0x3a5b66;this[_0x3071('0x47')](_0x3a5b66,_0x3071('0x25'));this[_0x3071('0x55')](this[_0x3071('0x14')][_0x3a5b66[_0x3071('0x6b')]],_0x3071('0x25'));}}logger[_0x3071('0x49')](_0x3071('0xc6'),_0xf7cc54['uniqueid'],util[_0x3071('0x43')](this[_0x3071('0x10')][_0xf7cc54['uniqueid']],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceQueueReport',this['queueReports'][_0xf7cc54[_0x3071('0x52')]]);delete this[_0x3071('0x10')][_0xf7cc54['uniqueid']];delete this[_0x3071('0x12')][_0xf7cc54[_0x3071('0x52')]];}if(this[_0x3071('0x16')][_0xf7cc54[_0x3071('0x52')]]){delete this[_0x3071('0x16')][_0xf7cc54[_0x3071('0x52')]];}}}catch(_0x358227){logger[_0x3071('0x41')](_0x3071('0xbb'),_0xf7cc54[_0x3071('0x52')],util[_0x3071('0x43')](_0x358227,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0xc7')]=function(_0x49d2aa){try{if(this[_0x3071('0x65')](_0x49d2aa)){logger[_0x3071('0x49')]('[%s][voiceQueueReport][attendedtransfer]',_0x49d2aa[_0x3071('0x52')],util[_0x3071('0x43')](_0x49d2aa,{'showHidden':![],'depth':null}));var _0x63aa5d;if(this[_0x3071('0x10')][_0x49d2aa['transfereeuniqueid']]){_0x63aa5d=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xc8')]]);_0x63aa5d[_0x3071('0x9b')]=_0x49d2aa['secondtransfererexten'];_0x63aa5d['transferuniqueid']=_0x49d2aa[_0x3071('0xc9')];_0x63aa5d[_0x3071('0x84')]=_0x3071('0xca');_0x63aa5d[_0x3071('0x93')]=!![];_0x63aa5d[_0x3071('0x9a')]=_0x3071('0xcb');if(this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xc9')]]){var _0x54229b=this[_0x3071('0x10')][_0x49d2aa['secondtransfereruniqueid']];this['queueReports'][_0x49d2aa[_0x3071('0xc9')]]=this[_0x3071('0x10')][_0x49d2aa['transfereeuniqueid']];this['queueReports'][_0x49d2aa[_0x3071('0xc8')]]=_0x54229b;var _0x4aff5b=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x49d2aa['transfereeuniqueid']]);_0x4aff5b[_0x3071('0xcc')]=!![];}logger[_0x3071('0x6d')](_0x3071('0xcd'),_0x49d2aa[_0x3071('0x52')],_0x63aa5d[_0x3071('0x4e')],_0x63aa5d['type'],_0x63aa5d[_0x3071('0x9b')],_0x63aa5d[_0x3071('0x9d')]);}else if(this['queueReports'][_0x49d2aa['transfertargetuniqueid']]){_0x63aa5d=_['last'](this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xce')]]);_0x63aa5d[_0x3071('0x9b')]=_0x49d2aa['origtransfererexten'];_0x63aa5d[_0x3071('0x9d')]=_0x49d2aa[_0x3071('0xcf')];_0x63aa5d['queuecallerexitreason']=_0x3071('0xca');_0x63aa5d[_0x3071('0x93')]=!![];_0x63aa5d[_0x3071('0x9a')]=_0x3071('0xcb');if(this[_0x3071('0x10')][_0x49d2aa['origtransfereruniqueid']]){var _0x54229b=this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xcf')]];this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xcf')]]=this['queueReports'][_0x49d2aa['transfertargetuniqueid']];this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xce')]]=_0x54229b;var _0x4aff5b=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x49d2aa[_0x3071('0xce')]]);_0x4aff5b[_0x3071('0xcc')]=!![];}logger['info'](_0x3071('0xcd'),_0x49d2aa[_0x3071('0x52')],_0x63aa5d[_0x3071('0x4e')],_0x63aa5d[_0x3071('0x56')],_0x63aa5d['transferexten'],_0x63aa5d[_0x3071('0x9d')]);}}}catch(_0x2fa596){logger['error'](_0x3071('0xd0'),_0x49d2aa[_0x3071('0x52')],util[_0x3071('0x43')](_0x2fa596,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x2f')]=function(_0x5069a9){try{if(this[_0x3071('0x65')](_0x5069a9)){logger['debug'](_0x3071('0xd1'),_0x5069a9['uniqueid'],util[_0x3071('0x43')](_0x5069a9,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0x5069a9[_0x3071('0xc8')]]){var _0x29746e=_['last'](this[_0x3071('0x10')][_0x5069a9[_0x3071('0xc8')]]);_0x29746e[_0x3071('0x84')]='BLINDTRANSFER';_0x29746e[_0x3071('0x93')]=!![];_0x29746e[_0x3071('0x9a')]=_0x3071('0xd2');_0x29746e['transferexten']=_0x5069a9[_0x3071('0xd3')];_0x29746e[_0x3071('0x9d')]=_0x5069a9[_0x3071('0xc8')];logger[_0x3071('0x6d')](_0x3071('0xd4'),_0x5069a9['uniqueid'],_0x29746e[_0x3071('0x4e')],_0x29746e[_0x3071('0x56')],_0x29746e[_0x3071('0x9b')],_0x29746e[_0x3071('0x9d')]);this['syncHangup']({'event':_0x3071('0xd5'),'uniqueid':_0x5069a9[_0x3071('0xc8')],'context':_0x5069a9[_0x3071('0xd6')],'channel':_0x5069a9[_0x3071('0xd7')]});}}}catch(_0x4605d2){logger[_0x3071('0x41')](_0x3071('0xd1'),_0x5069a9[_0x3071('0x52')],util['inspect'](_0x4605d2,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x3071('0x2a')]=function(_0xc47864){try{if(this['isNotNull'](_0xc47864)){logger[_0x3071('0x49')](_0x3071('0xd8'),_0xc47864[_0x3071('0x52')],util[_0x3071('0x43')](_0xc47864,{'showHidden':![],'depth':null}));if(this[_0x3071('0x10')][_0xc47864[_0x3071('0x52')]]){var _0x248060=_['last'](this[_0x3071('0x10')][_0xc47864[_0x3071('0x52')]]);if(!_['isNil'](_0x248060[_0x3071('0xa8')])){_0x248060[_0x3071('0xd9')]=moment()[_0x3071('0x4c')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x3071('0x6d')](_0x3071('0xda'),_0xc47864[_0x3071('0x52')],_0x248060[_0x3071('0xd9')]);}}}}catch(_0x28b7b8){logger[_0x3071('0x41')](_0x3071('0xd8'),_0xc47864[_0x3071('0x52')],util['inspect'](_0x28b7b8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')][_0x3071('0x2c')]=function(_0x5ee0e5){try{if(this['isNotNull'](_0x5ee0e5)){logger[_0x3071('0x49')]('[%s][voiceQueueReport][musiconholdstop]',_0x5ee0e5[_0x3071('0x52')],util['inspect'](_0x5ee0e5,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5ee0e5[_0x3071('0x52')]]){var _0x1acef1=_[_0x3071('0x7f')](this[_0x3071('0x10')][_0x5ee0e5[_0x3071('0x52')]]);if(!_[_0x3071('0x3b')](_0x1acef1['mohstarttime'])){_0x1acef1[_0x3071('0xdb')]+=moment()[_0x3071('0xbe')](0x0)['diff'](_0x1acef1[_0x3071('0xd9')],_0x3071('0x99'));logger['info'](_0x3071('0xdc'),_0x5ee0e5[_0x3071('0x52')],_0x1acef1[_0x3071('0xdb')]);delete _0x1acef1[_0x3071('0xd9')];}}}}catch(_0x158897){logger['error'](_0x3071('0xdd'),_0x5ee0e5[_0x3071('0x52')],util[_0x3071('0x43')](_0x158897,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x3071('0xb')]['syncNewExten']=function(_0x4f32ba){try{if(this[_0x3071('0x65')](_0x4f32ba)){logger[_0x3071('0x49')](_0x3071('0xde'),_0x4f32ba[_0x3071('0x52')],util[_0x3071('0x43')](_0x4f32ba,{'showHidden':![],'depth':null}));if(_0x4f32ba[_0x3071('0xdf')][_0x3071('0x96')]()===_0x3071('0xe0')){_0x4f32ba[_0x3071('0xe1')]=_0x4f32ba[_0x3071('0xe2')]&&_0x4f32ba[_0x3071('0xe2')][_0x3071('0x95')]('CDR(routeAlias)')?_0x4f32ba[_0x3071('0xe2')]:(_0x4f32ba['appdata']||_0x4f32ba[_0x3071('0xe1')])[_0x3071('0x96')]();if(_[_0x3071('0x95')](_0x4f32ba[_0x3071('0xe1')][_0x3071('0x96')](),_0x3071('0xe3'))){logger[_0x3071('0x6d')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x4f32ba['uniqueid'],_0x4f32ba[_0x3071('0xdf')],_0x4f32ba['applicationdata']);if(_['isUndefined'](this[_0x3071('0x12')][_0x4f32ba['uniqueid']]))this['channels'][_0x4f32ba[_0x3071('0x52')]]={};var _0x58e5ca=_0x4f32ba[_0x3071('0xe1')]['split']('=');var _0x46776d=_0x58e5ca[0x0][_0x3071('0x96')]()[_0x3071('0xe4')](/cdr\((.*)\)/);if(_0x46776d)this[_0x3071('0x12')][_0x4f32ba['uniqueid']][_0x46776d[0x1]]=_0x58e5ca[0x1];}}}}catch(_0x54e790){logger['error'](_0x3071('0xe5'),_0x4f32ba[_0x3071('0x52')],util[_0x3071('0x43')](_0x54e790,{'showHidden':![],'depth':null}));}};module['exports']=VoiceQueueReport;
\ No newline at end of file
index 03c60f4..c8b2014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab28=['../client','createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0x2320a6,_0x577893){var _0x11ec84=function(_0x12a596){while(--_0x12a596){_0x2320a6['push'](_0x2320a6['shift']());}};_0x11ec84(++_0x577893);}(_0xab28,0xd8));var _0x8ab2=function(_0x5a1552,_0x5478df){_0x5a1552=_0x5a1552-0x0;var _0x88e370=_0xab28[_0x5a1552];return _0x88e370;};'use strict';var client=require(_0x8ab2('0x0'));exports[_0x8ab2('0x1')]=function(_0x2de366){return function(){_0x2de366[_0x8ab2('0x2')]=_0x2de366[_0x8ab2('0x3')];return client[_0x8ab2('0x4')]('CreateReportAgentPreview',{'body':_0x2de366,'log':_0x8ab2('0x5')});};};
\ No newline at end of file
+var _0x4590=['queue','campaign'];(function(_0x26f80e,_0x1e52dd){var _0x364f3e=function(_0x127b4e){while(--_0x127b4e){_0x26f80e['push'](_0x26f80e['shift']());}};_0x364f3e(++_0x1e52dd);}(_0x4590,0x13f));var _0x0459=function(_0x1ddc4b,_0x16037a){_0x1ddc4b=_0x1ddc4b-0x0;var _0x566f8c=_0x4590[_0x1ddc4b];return _0x566f8c;};'use strict';var client=require('../client');exports['createHistory']=function(_0x3a440f){return function(){_0x3a440f[_0x0459('0x0')]=_0x3a440f[_0x0459('0x1')];return client['Request']('CreateReportAgentPreview',{'body':_0x3a440f,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
index 550df7f..1dd25f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2baf=['Request','CreateAttachment','create'];(function(_0x532dad,_0x151512){var _0x34ab96=function(_0x3c55d9){while(--_0x3c55d9){_0x532dad['push'](_0x532dad['shift']());}};_0x34ab96(++_0x151512);}(_0x2baf,0xc8));var _0xf2ba=function(_0x12ca5f,_0x223d98){_0x12ca5f=_0x12ca5f-0x0;var _0xfc3ae9=_0x2baf[_0x12ca5f];return _0xfc3ae9;};'use strict';var client=require('../client');exports[_0xf2ba('0x0')]=function(_0x44f046){return client[_0xf2ba('0x1')](_0xf2ba('0x2'),{'body':_0x44f046,'log':_0xf2ba('0x2')});};
\ No newline at end of file
+var _0x7871=['CreateAttachment','../client','Request'];(function(_0x28c627,_0xed188c){var _0x4cf2b4=function(_0x554372){while(--_0x554372){_0x28c627['push'](_0x28c627['shift']());}};_0x4cf2b4(++_0xed188c);}(_0x7871,0xb5));var _0x1787=function(_0x1762a3,_0x56ce97){_0x1762a3=_0x1762a3-0x0;var _0x27642e=_0x7871[_0x1762a3];return _0x27642e;};'use strict';var client=require(_0x1787('0x0'));exports['create']=function(_0xcb0720){return client[_0x1787('0x1')](_0x1787('0x2'),{'body':_0xcb0720,'log':_0x1787('0x2')});};
\ No newline at end of file
index 54fd234..69f3aff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0xe150b1,_0x3a8ab8){var _0x484cde=function(_0x16cd30){while(--_0x16cd30){_0xe150b1['push'](_0xe150b1['shift']());}};_0x484cde(++_0x3a8ab8);}(_0x326f,0xd1));var _0xf326=function(_0x20eefb,_0x32fdbc){_0x20eefb=_0x20eefb-0x0;var _0x1eda4e=_0x326f[_0x20eefb];return _0x1eda4e;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0x42091c,_0x10a78f){var _0x4aa531=function(_0x41bc8e){while(--_0x41bc8e){_0x42091c['push'](_0x42091c['shift']());}};_0x4aa531(++_0x10a78f);}(_0xdb28,0x106));var _0x8db2=function(_0x52f4d2,_0x568327){_0x52f4d2=_0x52f4d2-0x0;var _0xc3abfd=_0xdb28[_0x52f4d2];return _0xc3abfd;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
index 45798da..51489b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2110=['Request','CreateCmContact','getContacts','GetCmContact','../client','createContact'];(function(_0x2118ad,_0xe8e3fd){var _0x4b5715=function(_0x399f72){while(--_0x399f72){_0x2118ad['push'](_0x2118ad['shift']());}};_0x4b5715(++_0xe8e3fd);}(_0x2110,0x82));var _0x0211=function(_0x18fbb5,_0x2307ea){_0x18fbb5=_0x18fbb5-0x0;var _0x5acb21=_0x2110[_0x18fbb5];return _0x5acb21;};'use strict';var client=require(_0x0211('0x0'));exports[_0x0211('0x1')]=function(_0x113a1a){return function(){return client[_0x0211('0x2')](_0x0211('0x3'),{'body':_0x113a1a,'log':_0x0211('0x3')});};};exports[_0x0211('0x4')]=function(_0x2cbe50){return function(){return client[_0x0211('0x2')](_0x0211('0x5'),{'options':_0x2cbe50,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x61db=['CreateCmContact','getContacts','GetCmContact','createContact','Request'];(function(_0x3132e8,_0x499a0e){var _0x43eb8c=function(_0x2321e1){while(--_0x2321e1){_0x3132e8['push'](_0x3132e8['shift']());}};_0x43eb8c(++_0x499a0e);}(_0x61db,0x189));var _0xb61d=function(_0x45c041,_0x3684f3){_0x45c041=_0x45c041-0x0;var _0xbdcdeb=_0x61db[_0x45c041];return _0xbdcdeb;};'use strict';var client=require('../client');exports[_0xb61d('0x0')]=function(_0x5709e3){return function(){return client[_0xb61d('0x1')](_0xb61d('0x2'),{'body':_0x5709e3,'log':_0xb61d('0x2')});};};exports[_0xb61d('0x3')]=function(_0x8031a0){return function(){return client[_0xb61d('0x1')](_0xb61d('0x4'),{'options':_0x8031a0,'log':_0xb61d('0x4')});};};
\ No newline at end of file
index 7105260..64fc5ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0377=['DestroyCmHopper','GetContactDialer','format','priority','DESC','scheduledat','ASC','getContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','VoiceQueueId','CampaignId','countReScheduled','CountReScheduled','User','Agent','name','VoiceQueue','Queue','unlockContact','getContactRecallMe','GetContactRecallMe','voicePause','../client','lodash','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','Request','ContactId','ListId','destroyContact'];(function(_0x190e24,_0x437eeb){var _0x3041e1=function(_0x3be3a6){while(--_0x3be3a6){_0x190e24['push'](_0x190e24['shift']());}};_0x3041e1(++_0x437eeb);}(_0x0377,0x87));var _0x7037=function(_0x20b124,_0x552025){_0x20b124=_0x20b124-0x0;var _0x4bfd0f=_0x0377[_0x20b124];return _0x4bfd0f;};'use strict';var client=require(_0x7037('0x0'));var moment=require('moment');var _=require(_0x7037('0x1'));exports['getContacts']=function(_0x11b24a,_0x845d40){return function(){return client['Request']('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0x11b24a},'include':[{'model':_0x7037('0x2'),'as':_0x7037('0x3')}],'limit':_0x845d40,'raw':![]},'log':_0x7037('0x4')});};};exports[_0x7037('0x5')]=function(_0x514146,_0x35bc27,_0x118f49){return function(){return client['Request'](_0x7037('0x6'),{'body':_0x514146,'options':{'where':{'VoiceQueueId':_0x35bc27,'scheduledat':{'$lte':moment()['format'](_0x7037('0x7'))}},'limit':_0x118f49},'log':_0x7037('0x6')});};};exports[_0x7037('0x8')]=function(_0x130f25){return function(){return client[_0x7037('0x9')](_0x7037('0x6'),{'body':_0x130f25,'options':{'where':{'ContactId':_0x130f25[_0x7037('0xa')],'ListId':_0x130f25[_0x7037('0xb')],'VoiceQueueId':_0x130f25['VoiceQueueId'],'CampaignId':_0x130f25['CampaignId']}},'log':'rescheduleContact'});};};exports[_0x7037('0xc')]=function(_0x4f5bb0,_0x32fd0f,_0x2988e2){return function(){return client['Request'](_0x7037('0xd'),{'options':{'where':{'VoiceQueueId':_0x4f5bb0,'ListId':_0x32fd0f,'ContactId':_0x2988e2}},'log':_0x7037('0xd')});};};exports['getContactDialer']=function(_0x319d00,_0x4ad04a,_0x33fa50,_0x48fe4b){return function(){return client[_0x7037('0x9')](_0x7037('0xe'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x319d00,'active':![],'scheduledat':{'$lte':moment()[_0x7037('0xf')](_0x7037('0x7'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x4ad04a}}]},'order':[[_0x7037('0x10'),_0x7037('0x11')],[_0x7037('0x12'),_0x48fe4b],['id',_0x7037('0x13')]],'raw':!![],'limit':_0x33fa50},'log':_0x7037('0xe')});};};exports[_0x7037('0x14')]=function(_0x2ef9fa,_0x2f78c2,_0xa7c09f){return function(){return client[_0x7037('0x9')](_0x7037('0xe'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x2ef9fa,'active':![],'scheduledat':{'$lte':moment()['format'](_0x7037('0x7'))}},'include':[{'model':_0x7037('0x2'),'as':_0x7037('0x3')}],'order':[['priority',_0x7037('0x11')],[_0x7037('0x12'),_0xa7c09f],['id',_0x7037('0x13')]],'raw':!![],'limit':_0x2f78c2},'log':'GetContactDialerIvr'});};};exports[_0x7037('0x15')]=function(_0x5f25f3,_0x14938f){return function(){_0x5f25f3['campaign']=_0x5f25f3[_0x7037('0x16')];return client[_0x7037('0x9')](_0x7037('0x17'),{'body':_0x5f25f3,'options':{'where':{'ContactId':_0x5f25f3[_0x7037('0xa')],'ListId':_0x5f25f3[_0x7037('0xb')],'VoiceQueueId':_0x5f25f3[_0x7037('0x18')],'CampaignId':_0x5f25f3[_0x7037('0x19')],'active':_0x14938f?undefined:!![]}},'log':_0x7037('0x17')});};};exports[_0x7037('0x1a')]=function(_0x5bf397){return function(){return client[_0x7037('0x9')](_0x7037('0x1b'),{'options':{'where':{'VoiceQueueId':_0x5bf397['id']?_0x5bf397['id']||null:null}},'log':_0x7037('0x1a')});};};exports['getContactPreview']=function(_0x1af287){return function(){return client[_0x7037('0x9')]('GetCmHopperPreview',{'options':{'where':{'id':_0x1af287},'include':[{'model':_0x7037('0x2'),'as':'Contact'},{'model':_0x7037('0x1c'),'as':_0x7037('0x1d'),'attributes':['id',_0x7037('0x1e')]},{'model':_0x7037('0x1f'),'as':_0x7037('0x20'),'attributes':['id',_0x7037('0x1e')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0x7037('0x21')]=function(_0x20edba,_0x4ba076,_0x211140){return function(){return client[_0x7037('0x9')]('UpdateCmHopper',{'body':_0x20edba,'options':{'where':{'id':_0x4ba076},'limit':_0x211140},'log':_0x7037('0x6')});};};exports[_0x7037('0x22')]=function(_0xb12601,_0x16dd9a){return function(){return client[_0x7037('0x9')](_0x7037('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xb12601,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x7037('0xf')](_0x7037('0x7'))},'UserId':{'$in':_0x16dd9a}},'order':[[_0x7037('0x10'),_0x7037('0x11')],[_0x7037('0x12'),_0x7037('0x11')],['id',_0x7037('0x13')]],'include':[{'model':_0x7037('0x2'),'as':_0x7037('0x3')},{'model':_0x7037('0x1c'),'as':_0x7037('0x1d'),'attributes':['id',_0x7037('0x1e'),_0x7037('0x24')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0x7037('0xe')});};};
\ No newline at end of file
+var _0x06be=['getContacts','GetCmHopper','CmContact','Contact','updateContacts','Request','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','moveContactManagedDialer','queue','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','name','Queue','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','voicePause','../client','moment'];(function(_0x42f2a3,_0x4b820d){var _0x5e696d=function(_0x2a681f){while(--_0x2a681f){_0x42f2a3['push'](_0x42f2a3['shift']());}};_0x5e696d(++_0x4b820d);}(_0x06be,0xee));var _0xe06b=function(_0x4fd813,_0x706757){_0x4fd813=_0x4fd813-0x0;var _0x149b5a=_0x06be[_0x4fd813];return _0x149b5a;};'use strict';var client=require(_0xe06b('0x0'));var moment=require(_0xe06b('0x1'));var _=require('lodash');exports[_0xe06b('0x2')]=function(_0x4bec81,_0x1338b7){return function(){return client['Request'](_0xe06b('0x3'),{'options':{'where':{'VoiceQueueId':_0x4bec81},'include':[{'model':_0xe06b('0x4'),'as':_0xe06b('0x5')}],'limit':_0x1338b7,'raw':![]},'log':'getCmHopper'});};};exports[_0xe06b('0x6')]=function(_0x555801,_0x13213c,_0x1be034){return function(){return client[_0xe06b('0x7')](_0xe06b('0x8'),{'body':_0x555801,'options':{'where':{'VoiceQueueId':_0x13213c,'scheduledat':{'$lte':moment()[_0xe06b('0x9')](_0xe06b('0xa'))}},'limit':_0x1be034},'log':_0xe06b('0x8')});};};exports[_0xe06b('0xb')]=function(_0x528695){return function(){return client['Request'](_0xe06b('0x8'),{'body':_0x528695,'options':{'where':{'ContactId':_0x528695[_0xe06b('0xc')],'ListId':_0x528695['ListId'],'VoiceQueueId':_0x528695[_0xe06b('0xd')],'CampaignId':_0x528695[_0xe06b('0xe')]}},'log':_0xe06b('0xb')});};};exports[_0xe06b('0xf')]=function(_0x59bb01,_0x4c92a7,_0x6be968){return function(){return client['Request'](_0xe06b('0x10'),{'options':{'where':{'VoiceQueueId':_0x59bb01,'ListId':_0x4c92a7,'ContactId':_0x6be968}},'log':_0xe06b('0x10')});};};exports[_0xe06b('0x11')]=function(_0x4a65bb,_0x10ef1e,_0x19b5b7,_0x2bb939){return function(){return client[_0xe06b('0x7')](_0xe06b('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4a65bb,'active':![],'scheduledat':{'$lte':moment()[_0xe06b('0x9')](_0xe06b('0xa'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x10ef1e}}]},'order':[[_0xe06b('0x13'),_0xe06b('0x14')],[_0xe06b('0x15'),_0x2bb939],['id',_0xe06b('0x16')]],'raw':!![],'limit':_0x19b5b7},'log':_0xe06b('0x12')});};};exports[_0xe06b('0x17')]=function(_0x550e20,_0xd0e2d5,_0x1307c2){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x550e20,'active':![],'scheduledat':{'$lte':moment()['format'](_0xe06b('0xa'))}},'include':[{'model':_0xe06b('0x4'),'as':_0xe06b('0x5')}],'order':[[_0xe06b('0x13'),_0xe06b('0x14')],['scheduledat',_0x1307c2],['id','ASC']],'raw':!![],'limit':_0xd0e2d5},'log':'GetContactDialerIvr'});};};exports[_0xe06b('0x18')]=function(_0xabc0e3,_0x4ed14d){return function(){_0xabc0e3['campaign']=_0xabc0e3[_0xe06b('0x19')];return client[_0xe06b('0x7')](_0xe06b('0x1a'),{'body':_0xabc0e3,'options':{'where':{'ContactId':_0xabc0e3['ContactId'],'ListId':_0xabc0e3[_0xe06b('0x1b')],'VoiceQueueId':_0xabc0e3[_0xe06b('0xd')],'CampaignId':_0xabc0e3[_0xe06b('0xe')],'active':_0x4ed14d?undefined:!![]}},'log':_0xe06b('0x1a')});};};exports[_0xe06b('0x1c')]=function(_0x5c0be1){return function(){return client[_0xe06b('0x7')](_0xe06b('0x1d'),{'options':{'where':{'VoiceQueueId':_0x5c0be1['id']?_0x5c0be1['id']||null:null}},'log':_0xe06b('0x1c')});};};exports[_0xe06b('0x1e')]=function(_0x2b1856){return function(){return client['Request'](_0xe06b('0x1f'),{'options':{'where':{'id':_0x2b1856},'include':[{'model':'CmContact','as':_0xe06b('0x5')},{'model':'User','as':'Agent','attributes':['id',_0xe06b('0x20')]},{'model':'VoiceQueue','as':_0xe06b('0x21'),'attributes':['id',_0xe06b('0x20')]}],'raw':!![]},'log':_0xe06b('0x22')});};};exports[_0xe06b('0x23')]=function(_0x51147b,_0x3aef67,_0x2529d2){return function(){return client[_0xe06b('0x7')]('UpdateCmHopper',{'body':_0x51147b,'options':{'where':{'id':_0x3aef67},'limit':_0x2529d2},'log':_0xe06b('0x8')});};};exports[_0xe06b('0x24')]=function(_0x38b53d,_0x5e8190){return function(){return client[_0xe06b('0x7')](_0xe06b('0x25'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x38b53d,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xe06b('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x5e8190}},'order':[[_0xe06b('0x13'),'DESC'],[_0xe06b('0x15'),'DESC'],['id',_0xe06b('0x16')]],'include':[{'model':_0xe06b('0x4'),'as':_0xe06b('0x5')},{'model':'User','as':_0xe06b('0x26'),'attributes':['id',_0xe06b('0x20'),_0xe06b('0x27')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0xe06b('0x12')});};};
\ No newline at end of file
index f4dbe10..fd749cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa478=['../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','Contact','phone','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr'];(function(_0x2d4ce5,_0x2ad3fc){var _0x464c9a=function(_0x3d1b8f){while(--_0x3d1b8f){_0x2d4ce5['push'](_0x2d4ce5['shift']());}};_0x464c9a(++_0x2ad3fc);}(_0xa478,0x136));var _0x8a47=function(_0x929c7e,_0x38c4cc){_0x929c7e=_0x929c7e-0x0;var _0x5de099=_0xa478[_0x929c7e];return _0x5de099;};'use strict';var client=require(_0x8a47('0x0'));exports[_0x8a47('0x1')]=function(_0x46cf54){return function(){return client[_0x8a47('0x2')](_0x8a47('0x3'),{'options':{'where':{'VoiceQueueId':_0x46cf54[_0x8a47('0x4')],'phone':_0x46cf54[_0x8a47('0x5')][_0x8a47('0x6')]},'raw':![]},'log':_0x8a47('0x3')});};};exports[_0x8a47('0x7')]=function(_0x6e2ab5){return function(){return client[_0x8a47('0x2')]('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x6e2ab5[_0x8a47('0x8')],'phone':_0x6e2ab5[_0x8a47('0x5')][_0x8a47('0x6')]},'raw':![]},'log':_0x8a47('0x9')});};};
\ No newline at end of file
+var _0xd4f4=['Contact','phone','checkIsBlackListIvr','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x43282d,_0x166cd7){_0x43282d=_0x43282d-0x0;var _0x11475e=_0xd4f4[_0x43282d];return _0x11475e;};'use strict';var client=require(_0x4d4f('0x0'));exports[_0x4d4f('0x1')]=function(_0x2cfc72){return function(){return client[_0x4d4f('0x2')](_0x4d4f('0x3'),{'options':{'where':{'VoiceQueueId':_0x2cfc72[_0x4d4f('0x4')],'phone':_0x2cfc72[_0x4d4f('0x5')][_0x4d4f('0x6')]},'raw':![]},'log':_0x4d4f('0x3')});};};exports[_0x4d4f('0x7')]=function(_0x15585){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x15585['CampaignId'],'phone':_0x15585[_0x4d4f('0x5')][_0x4d4f('0x6')]},'raw':![]},'log':_0x4d4f('0x8')});};};
\ No newline at end of file
index 02c01a5..e35bdef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45af=['queue','Request','CreateCmHopperFinal','../client'];(function(_0x24998c,_0x450c59){var _0x5be667=function(_0xd8c70f){while(--_0xd8c70f){_0x24998c['push'](_0x24998c['shift']());}};_0x5be667(++_0x450c59);}(_0x45af,0x17b));var _0xf45a=function(_0x4137c0,_0x3fa626){_0x4137c0=_0x4137c0-0x0;var _0x245470=_0x45af[_0x4137c0];return _0x245470;};'use strict';var client=require(_0xf45a('0x0'));exports['createContact']=function(_0x22544e){return function(){_0x22544e['campaign']=_0x22544e[_0xf45a('0x1')];return client[_0xf45a('0x2')]('CreateCmHopperFinal',{'body':_0x22544e,'log':_0xf45a('0x3')});};};
\ No newline at end of file
+var _0xfe2e=['CreateCmHopperFinal','../client','campaign','queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfe2e,0x1c9));var _0xefe2=function(_0x333384,_0xe8ca24){_0x333384=_0x333384-0x0;var _0xb7c0cd=_0xfe2e[_0x333384];return _0xb7c0cd;};'use strict';var client=require(_0xefe2('0x0'));exports['createContact']=function(_0x1919e4){return function(){_0x1919e4[_0xefe2('0x1')]=_0x1919e4[_0xefe2('0x2')];return client['Request'](_0xefe2('0x3'),{'body':_0x1919e4,'log':_0xefe2('0x3')});};};
\ No newline at end of file
index c3a5018..86ccff0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2771=['YYYY-MM-DD\x20HH:mm:ss','format','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','day','endOf','GetCampaignHopperHistory','startOf','../client','moment','campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x2771,0xaa));var _0x1277=function(_0x4f8bd4,_0xec5450){_0x4f8bd4=_0x4f8bd4-0x0;var _0x4c4078=_0x2771[_0x4f8bd4];return _0x4c4078;};'use strict';var client=require(_0x1277('0x0'));var moment=require(_0x1277('0x1'));exports['createHistory']=function(_0x3f39d9){return function(){_0x3f39d9[_0x1277('0x2')]=_0x3f39d9[_0x1277('0x3')];return client[_0x1277('0x4')](_0x1277('0x5'),{'body':_0x3f39d9,'log':_0x1277('0x5')});};};exports[_0x1277('0x6')]=function(_0x590520){return function(){return client[_0x1277('0x4')](_0x1277('0x7'),{'options':{'where':{'endtime':{'$between':[moment()[_0x1277('0x8')](_0x590520,_0x1277('0x9'))['format'](_0x1277('0xa')),moment()[_0x1277('0xb')](_0x1277('0xa'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x1277('0xc')]=function(_0xbfeab2){return function(){return client[_0x1277('0x4')](_0x1277('0xd'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x1277('0xe'))[_0x1277('0xb')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x1277('0xf')](_0x1277('0xe'))[_0x1277('0xb')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x1277('0x3')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports['getCampaignHopperHistory']=function(_0x3f4e5a){return function(){return client[_0x1277('0x4')](_0x1277('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x1277('0x11')]('day')[_0x1277('0xb')](_0x1277('0xa')),moment()[_0x1277('0xf')]('day')[_0x1277('0xb')](_0x1277('0xa'))]},'campaigntype':'ivr'},'raw':![]},'log':_0x1277('0x10')});};};
\ No newline at end of file
+var _0x9d01=['AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','endOf','ivr','GetCampaignHopperHistory','moment','createHistory','campaign','queue','CreateCmHopperHistory','Request'];(function(_0x1c0fa1,_0x1dd4d8){var _0x201901=function(_0x41cab1){while(--_0x41cab1){_0x1c0fa1['push'](_0x1c0fa1['shift']());}};_0x201901(++_0x1dd4d8);}(_0x9d01,0x66));var _0x19d0=function(_0x140af6,_0x3cbead){_0x140af6=_0x140af6-0x0;var _0x184179=_0x9d01[_0x140af6];return _0x184179;};'use strict';var client=require('../client');var moment=require(_0x19d0('0x0'));exports[_0x19d0('0x1')]=function(_0x49f5a1){return function(){_0x49f5a1[_0x19d0('0x2')]=_0x49f5a1[_0x19d0('0x3')];return client['Request'](_0x19d0('0x4'),{'body':_0x49f5a1,'log':_0x19d0('0x4')});};};exports['avgHandleTime']=function(_0x5ac4ac){return function(){return client[_0x19d0('0x5')](_0x19d0('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x19d0('0x7')](_0x5ac4ac,_0x19d0('0x8'))[_0x19d0('0x9')](_0x19d0('0xa')),moment()[_0x19d0('0x9')](_0x19d0('0xa'))]}},'raw':![]},'log':'GetCmHopperHistory'});};};exports[_0x19d0('0xb')]=function(_0x29a6ce){return function(){return client[_0x19d0('0x5')](_0x19d0('0xc'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x19d0('0xd')](_0x19d0('0xe'))[_0x19d0('0x9')](_0x19d0('0xa')),moment()[_0x19d0('0xf')]('day')['format'](_0x19d0('0xa'))]},'campaigntype':_0x19d0('0x3')},'raw':![]},'log':_0x19d0('0xc')});};};exports['getCampaignHopperHistory']=function(_0x7a4741){return function(){return client['Request']('GetCampaignHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x19d0('0xd')](_0x19d0('0xe'))[_0x19d0('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x19d0('0xf')](_0x19d0('0xe'))[_0x19d0('0x9')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x19d0('0x10')},'raw':![]},'log':_0x19d0('0x11')});};};
\ No newline at end of file
index e8cefa5..fac2654 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb8d=['notify','NotifyFaxAccount','../client','Request','ecm','headerinfo','localstationid','minrate','maxrate','gateway','faxdetect','t38timeout','tech','ListId','Trunk','callerid','active','getFaxAccount'];(function(_0x587fb5,_0x59cb3b){var _0x551105=function(_0x5bbef4){while(--_0x5bbef4){_0x587fb5['push'](_0x587fb5['shift']());}};_0x551105(++_0x59cb3b);}(_0xbb8d,0x146));var _0xdbb8=function(_0x494024,_0x568036){_0x494024=_0x494024-0x0;var _0x540541=_0xbb8d[_0x494024];return _0x540541;};'use strict';var client=require(_0xdbb8('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0xdbb8('0x1')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id','name','description',_0xdbb8('0x2'),_0xdbb8('0x3'),_0xdbb8('0x4'),_0xdbb8('0x5'),_0xdbb8('0x6'),'modem',_0xdbb8('0x7'),_0xdbb8('0x8'),_0xdbb8('0x9'),_0xdbb8('0xa'),'TrunkId',_0xdbb8('0xb'),'key'],'include':[{'model':_0xdbb8('0xc'),'as':_0xdbb8('0xc'),'attributes':['id','name',_0xdbb8('0xd'),_0xdbb8('0xe')]}]},'log':_0xdbb8('0xf')});};};exports[_0xdbb8('0x10')]=function(_0x2eb417,_0xee681f){return client[_0xdbb8('0x1')](_0xdbb8('0x11'),{'account':{'id':_0x2eb417},'body':_0xee681f,'log':_0xdbb8('0x11')});};
\ No newline at end of file
+var _0x2ff5=['key','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','getFaxAccounts','Request','name','description','ecm','headerinfo','localstationid','minrate','modem','gateway','faxdetect','tech','TrunkId','ListId'];(function(_0x4635fd,_0x4025c1){var _0x565477=function(_0x1ad53a){while(--_0x1ad53a){_0x4635fd['push'](_0x4635fd['shift']());}};_0x565477(++_0x4025c1);}(_0x2ff5,0x1d5));var _0x52ff=function(_0x245c39,_0x3a601e){_0x245c39=_0x245c39-0x0;var _0x2a4be8=_0x2ff5[_0x245c39];return _0x2a4be8;};'use strict';var client=require('../client');exports[_0x52ff('0x0')]=function(){return function(){return client[_0x52ff('0x1')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0x52ff('0x2'),_0x52ff('0x3'),_0x52ff('0x4'),_0x52ff('0x5'),_0x52ff('0x6'),_0x52ff('0x7'),'maxrate',_0x52ff('0x8'),_0x52ff('0x9'),_0x52ff('0xa'),'t38timeout',_0x52ff('0xb'),_0x52ff('0xc'),_0x52ff('0xd'),_0x52ff('0xe')],'include':[{'model':_0x52ff('0xf'),'as':_0x52ff('0xf'),'attributes':['id',_0x52ff('0x2'),_0x52ff('0x10'),_0x52ff('0x11')]}]},'log':_0x52ff('0x12')});};};exports[_0x52ff('0x13')]=function(_0x111904,_0xe66d8f){return client[_0x52ff('0x1')](_0x52ff('0x14'),{'account':{'id':_0x111904},'body':_0xe66d8f,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index 1c0f09e..311cfb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x266b=['UpdateFaxMessage','../client','Request'];(function(_0xb7cb72,_0x19d391){var _0x4b7570=function(_0x5a4a93){while(--_0x5a4a93){_0xb7cb72['push'](_0xb7cb72['shift']());}};_0x4b7570(++_0x19d391);}(_0x266b,0xb8));var _0xb266=function(_0x29d17c,_0x1c9a9d){_0x29d17c=_0x29d17c-0x0;var _0x161b7d=_0x266b[_0x29d17c];return _0x161b7d;};'use strict';var client=require(_0xb266('0x0'));exports['update']=function(_0x24ced7,_0x471cde){return client[_0xb266('0x1')](_0xb266('0x2'),{'body':_0x471cde,'options':{'where':{'AttachmentId':_0x24ced7}},'log':_0xb266('0x2')});};
\ No newline at end of file
+var _0xd39d=['UpdateFaxMessage','../client'];(function(_0x131706,_0x59db80){var _0x533db4=function(_0x42e69d){while(--_0x42e69d){_0x131706['push'](_0x131706['shift']());}};_0x533db4(++_0x59db80);}(_0xd39d,0xdf));var _0xdd39=function(_0x1c68d9,_0x1591f1){_0x1c68d9=_0x1c68d9-0x0;var _0x5a47f8=_0xd39d[_0x1c68d9];return _0x5a47f8;};'use strict';var client=require(_0xdd39('0x0'));exports['update']=function(_0x45d06d,_0x16add9){return client['Request']('UpdateFaxMessage',{'body':_0x16add9,'options':{'where':{'AttachmentId':_0x45d06d}},'log':_0xdd39('0x1')});};
\ No newline at end of file
index f1a90f5..f1feb30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d31=['nameField','customField','Tag','Tags','getDeskAccounts','GetDeskAccount','name','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields'];(function(_0x3361e1,_0x35637a){var _0x2f3fcd=function(_0x7bd36){while(--_0x7bd36){_0x3361e1['push'](_0x3361e1['shift']());}};_0x2f3fcd(++_0x35637a);}(_0x0d31,0x154));var _0x10d3=function(_0x4cdea9,_0x5dcefa){_0x4cdea9=_0x4cdea9-0x0;var _0x2e9ca3=_0x0d31[_0x4cdea9];return _0x2e9ca3;};'use strict';var client=require('../../client');exports[_0x10d3('0x0')]=function(){return function(_0x4b1ad9){return client['Request'](_0x10d3('0x1'),{'options':{'raw':![],'attributes':['id',_0x10d3('0x2'),'description','username',_0x10d3('0x3'),_0x10d3('0x4'),_0x10d3('0x5'),_0x10d3('0x6'),_0x10d3('0x7')],'include':[{'model':_0x10d3('0x8'),'as':_0x10d3('0x9'),'attributes':['id',_0x10d3('0x2')],'include':[{'model':_0x10d3('0xa'),'as':_0x10d3('0xb'),'attributes':['id',_0x10d3('0x6'),_0x10d3('0xc'),_0x10d3('0xd')],'include':[{'model':'Variable','as':_0x10d3('0xe'),'attributes':['id',_0x10d3('0x2')]}]},{'model':_0x10d3('0xa'),'as':_0x10d3('0xf'),'attributes':['id',_0x10d3('0x6'),_0x10d3('0xc'),_0x10d3('0x10'),_0x10d3('0x11'),_0x10d3('0x12'),_0x10d3('0xd')],'include':[{'model':_0x10d3('0xe'),'as':_0x10d3('0xe'),'attributes':['id',_0x10d3('0x2')]}]},{'model':_0x10d3('0xa'),'as':_0x10d3('0x13'),'attributes':['id',_0x10d3('0x6'),_0x10d3('0xc'),'idField',_0x10d3('0x14'),_0x10d3('0x15'),'variableName'],'include':[{'model':'Variable','as':_0x10d3('0xe'),'attributes':['id',_0x10d3('0x2')]}]},{'model':_0x10d3('0x16'),'as':_0x10d3('0x17'),'attributes':['id',_0x10d3('0x2')]}]}]},'log':_0x10d3('0x1')});};};
\ No newline at end of file
+var _0xa197=['variableName','Fields','idField','nameField','Variable','Tag','Tags','../../client','getDeskAccounts','Request','GetDeskAccount','username','password','remoteUri','authType','type','DeskConfiguration','Configurations','DeskField','name','Descriptions','content','key','keyType','keyContent'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa197,0x9d));var _0x7a19=function(_0x247fa1,_0x4ec37c){_0x247fa1=_0x247fa1-0x0;var _0x244f35=_0xa197[_0x247fa1];return _0x244f35;};'use strict';var client=require(_0x7a19('0x0'));exports[_0x7a19('0x1')]=function(){return function(_0x1e5d6c){return client[_0x7a19('0x2')](_0x7a19('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x7a19('0x4'),_0x7a19('0x5'),_0x7a19('0x6'),_0x7a19('0x7'),_0x7a19('0x8'),'serverUrl'],'include':[{'model':_0x7a19('0x9'),'as':_0x7a19('0xa'),'attributes':['id','name'],'include':[{'model':_0x7a19('0xb'),'as':'Subjects','attributes':['id',_0x7a19('0x8'),'content','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7a19('0xc')]}]},{'model':_0x7a19('0xb'),'as':_0x7a19('0xd'),'attributes':['id',_0x7a19('0x8'),_0x7a19('0xe'),_0x7a19('0xf'),_0x7a19('0x10'),_0x7a19('0x11'),_0x7a19('0x12')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x7a19('0xc')]}]},{'model':_0x7a19('0xb'),'as':_0x7a19('0x13'),'attributes':['id','type',_0x7a19('0xe'),_0x7a19('0x14'),_0x7a19('0x15'),'customField','variableName'],'include':[{'model':'Variable','as':_0x7a19('0x16'),'attributes':['id',_0x7a19('0xc')]}]},{'model':_0x7a19('0x17'),'as':_0x7a19('0x18'),'attributes':['id','name']}]}]},'log':_0x7a19('0x3')});};};
\ No newline at end of file
index 1df4a5f..5c942dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3455=['clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','Fields','idField','nameField','customField','GetDynamics365Account','../../client','Request','name','username','remoteUri'];(function(_0x3a4393,_0x1852c0){var _0xa169c6=function(_0x4e49fa){while(--_0x4e49fa){_0x3a4393['push'](_0x3a4393['shift']());}};_0xa169c6(++_0x1852c0);}(_0x3455,0xff));var _0x5345=function(_0x616fb8,_0x177e11){_0x616fb8=_0x616fb8-0x0;var _0x739e20=_0x3455[_0x616fb8];return _0x739e20;};'use strict';var client=require(_0x5345('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x3298f4){return client[_0x5345('0x1')]('GetDynamics365Account',{'options':{'raw':![],'attributes':['id',_0x5345('0x2'),_0x5345('0x3'),'password',_0x5345('0x4'),'tenantId',_0x5345('0x5'),_0x5345('0x6'),_0x5345('0x7'),_0x5345('0x8')],'include':[{'model':_0x5345('0x9'),'as':_0x5345('0xa'),'attributes':['id',_0x5345('0x2'),_0x5345('0xb')],'include':[{'model':_0x5345('0xc'),'as':_0x5345('0xd'),'attributes':['id',_0x5345('0xe'),_0x5345('0xf'),_0x5345('0x10')],'include':[{'model':_0x5345('0x11'),'as':_0x5345('0x11'),'attributes':['id',_0x5345('0x2')]}]},{'model':_0x5345('0xc'),'as':_0x5345('0x12'),'attributes':['id',_0x5345('0xe'),'content',_0x5345('0x13'),_0x5345('0x14'),'keyContent',_0x5345('0x10')],'include':[{'model':_0x5345('0x11'),'as':'Variable','attributes':['id',_0x5345('0x2')]}]},{'model':'Dynamics365Field','as':_0x5345('0x15'),'attributes':['id',_0x5345('0xe'),'content',_0x5345('0x16'),_0x5345('0x17'),_0x5345('0x18'),_0x5345('0x10')],'include':[{'model':_0x5345('0x11'),'as':'Variable','attributes':['id',_0x5345('0x2')]}]}]}]},'log':_0x5345('0x19')});};};
\ No newline at end of file
+var _0x95ab=['Subjects','content','Variable','type','key','keyType','Fields','idField','nameField','variableName','../../client','getDynamics365Accounts','GetDynamics365Account','name','username','password','clientId','serverUrl','description','Dynamics365Configuration','ticketType','Dynamics365Field'];(function(_0x1fc122,_0x5e2c17){var _0xa2cb13=function(_0x263b13){while(--_0x263b13){_0x1fc122['push'](_0x1fc122['shift']());}};_0xa2cb13(++_0x5e2c17);}(_0x95ab,0xba));var _0xb95a=function(_0x3cdaa8,_0xbb2c67){_0x3cdaa8=_0x3cdaa8-0x0;var _0xf53388=_0x95ab[_0x3cdaa8];return _0xf53388;};'use strict';var client=require(_0xb95a('0x0'));exports[_0xb95a('0x1')]=function(){return function(_0x87b569){return client['Request'](_0xb95a('0x2'),{'options':{'raw':![],'attributes':['id',_0xb95a('0x3'),_0xb95a('0x4'),_0xb95a('0x5'),'remoteUri','tenantId',_0xb95a('0x6'),'clientSecret',_0xb95a('0x7'),_0xb95a('0x8')],'include':[{'model':_0xb95a('0x9'),'as':'Configurations','attributes':['id',_0xb95a('0x3'),_0xb95a('0xa')],'include':[{'model':_0xb95a('0xb'),'as':_0xb95a('0xc'),'attributes':['id','type',_0xb95a('0xd'),'variableName'],'include':[{'model':_0xb95a('0xe'),'as':_0xb95a('0xe'),'attributes':['id',_0xb95a('0x3')]}]},{'model':_0xb95a('0xb'),'as':'Descriptions','attributes':['id',_0xb95a('0xf'),_0xb95a('0xd'),_0xb95a('0x10'),_0xb95a('0x11'),'keyContent','variableName'],'include':[{'model':_0xb95a('0xe'),'as':_0xb95a('0xe'),'attributes':['id',_0xb95a('0x3')]}]},{'model':_0xb95a('0xb'),'as':_0xb95a('0x12'),'attributes':['id',_0xb95a('0xf'),_0xb95a('0xd'),_0xb95a('0x13'),_0xb95a('0x14'),'customField',_0xb95a('0x15')],'include':[{'model':_0xb95a('0xe'),'as':_0xb95a('0xe'),'attributes':['id',_0xb95a('0x3')]}]}]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index d90d4d8..ccda521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd624=['Configurations','name','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','nameField','customField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request','apiKey','remoteUri','serverUrl','FreshdeskConfiguration'];(function(_0x23f8c8,_0xb536b9){var _0x3dc718=function(_0x25d719){while(--_0x25d719){_0x23f8c8['push'](_0x23f8c8['shift']());}};_0x3dc718(++_0xb536b9);}(_0xd624,0x124));var _0x4d62=function(_0xf03129,_0x24b33c){_0xf03129=_0xf03129-0x0;var _0x1faa8f=_0xd624[_0xf03129];return _0x1faa8f;};'use strict';var client=require(_0x4d62('0x0'));exports[_0x4d62('0x1')]=function(){return function(_0x4f4d9a){return client[_0x4d62('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id','name','username',_0x4d62('0x3'),_0x4d62('0x4'),_0x4d62('0x5')],'include':[{'model':_0x4d62('0x6'),'as':_0x4d62('0x7'),'attributes':['id',_0x4d62('0x8')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x4d62('0x9'),'as':_0x4d62('0xa'),'attributes':['id',_0x4d62('0xb'),_0x4d62('0xc'),_0x4d62('0xd')],'include':[{'model':'Variable','as':_0x4d62('0xe'),'attributes':['id',_0x4d62('0x8')]}]},{'model':_0x4d62('0x9'),'as':_0x4d62('0xf'),'attributes':['id','type',_0x4d62('0xc'),_0x4d62('0x10'),_0x4d62('0x11'),_0x4d62('0x12'),_0x4d62('0xd')],'include':[{'model':_0x4d62('0xe'),'as':_0x4d62('0xe'),'attributes':['id',_0x4d62('0x8')]}]},{'model':_0x4d62('0x9'),'as':_0x4d62('0x13'),'attributes':['id',_0x4d62('0xb'),_0x4d62('0xc'),'idField',_0x4d62('0x14'),_0x4d62('0x15'),_0x4d62('0xd')],'include':[{'model':'Variable','as':_0x4d62('0xe'),'attributes':['id',_0x4d62('0x8')]}]}]}]},'log':_0x4d62('0x16')});};};
\ No newline at end of file
+var _0xcce8=['key','keyType','variableName','Fields','type','idField','customField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects','Variable','Descriptions','content'];(function(_0x294739,_0x120fe9){var _0x36fe4d=function(_0x44901a){while(--_0x44901a){_0x294739['push'](_0x294739['shift']());}};_0x36fe4d(++_0x120fe9);}(_0xcce8,0x1a5));var _0x8cce=function(_0x2fb0b9,_0x52f276){_0x2fb0b9=_0x2fb0b9-0x0;var _0x2bd5e3=_0xcce8[_0x2fb0b9];return _0x2bd5e3;};'use strict';var client=require(_0x8cce('0x0'));exports[_0x8cce('0x1')]=function(){return function(_0x367918){return client[_0x8cce('0x2')](_0x8cce('0x3'),{'options':{'raw':![],'attributes':['id',_0x8cce('0x4'),_0x8cce('0x5'),_0x8cce('0x6'),_0x8cce('0x7'),_0x8cce('0x8')],'include':[{'model':'FreshdeskConfiguration','as':_0x8cce('0x9'),'attributes':['id',_0x8cce('0x4')],'include':[{'model':_0x8cce('0xa'),'attributes':['id',_0x8cce('0x4')]},{'model':_0x8cce('0xb'),'as':_0x8cce('0xc'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x8cce('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x8cce('0xb'),'as':_0x8cce('0xe'),'attributes':['id','type',_0x8cce('0xf'),_0x8cce('0x10'),_0x8cce('0x11'),'keyContent',_0x8cce('0x12')],'include':[{'model':_0x8cce('0xd'),'as':_0x8cce('0xd'),'attributes':['id',_0x8cce('0x4')]}]},{'model':'FreshdeskField','as':_0x8cce('0x13'),'attributes':['id',_0x8cce('0x14'),_0x8cce('0xf'),_0x8cce('0x15'),'nameField',_0x8cce('0x16'),'variableName'],'include':[{'model':'Variable','as':_0x8cce('0xd'),'attributes':['id','name']}]}]}]},'log':_0x8cce('0x3')});};};
\ No newline at end of file
index da12550..005b9b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce68=['GetFreshsalesAccount','name','username','remoteUri','serverUrl','FreshsalesConfiguration','FreshsalesField','content','variableName','Variable','Descriptions','type','key','keyType','keyContent','GetFreshsalesccount','../../client','Request'];(function(_0x414a13,_0x3b146d){var _0xf1660c=function(_0x4ac89b){while(--_0x4ac89b){_0x414a13['push'](_0x414a13['shift']());}};_0xf1660c(++_0x3b146d);}(_0xce68,0x10c));var _0x8ce6=function(_0x586b8d,_0x9e7d09){_0x586b8d=_0x586b8d-0x0;var _0x4cfc84=_0xce68[_0x586b8d];return _0x4cfc84;};'use strict';var client=require(_0x8ce6('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x30b0c9){return client[_0x8ce6('0x1')](_0x8ce6('0x2'),{'options':{'raw':![],'attributes':['id',_0x8ce6('0x3'),_0x8ce6('0x4'),'apiKey',_0x8ce6('0x5'),_0x8ce6('0x6')],'include':[{'model':_0x8ce6('0x7'),'as':'Configurations','attributes':['id',_0x8ce6('0x3')],'include':[{'model':_0x8ce6('0x8'),'as':'Subjects','attributes':['id','type',_0x8ce6('0x9'),_0x8ce6('0xa')],'include':[{'model':_0x8ce6('0xb'),'as':_0x8ce6('0xb'),'attributes':['id','name']}]},{'model':_0x8ce6('0x8'),'as':_0x8ce6('0xc'),'attributes':['id',_0x8ce6('0xd'),_0x8ce6('0x9'),_0x8ce6('0xe'),_0x8ce6('0xf'),_0x8ce6('0x10'),_0x8ce6('0xa')],'include':[{'model':_0x8ce6('0xb'),'as':_0x8ce6('0xb'),'attributes':['id',_0x8ce6('0x3')]}]}]}]},'log':_0x8ce6('0x11')});};};
\ No newline at end of file
+var _0xbacd=['Variable','keyType','GetFreshsalesccount','../../client','getFreshsalesAccounts','Request','GetFreshsalesAccount','name','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName'];(function(_0x54b988,_0x4d50b5){var _0x1c6b15=function(_0x499bfa){while(--_0x499bfa){_0x54b988['push'](_0x54b988['shift']());}};_0x1c6b15(++_0x4d50b5);}(_0xbacd,0x1c5));var _0xdbac=function(_0x43468c,_0x5ed020){_0x43468c=_0x43468c-0x0;var _0x2da9cb=_0xbacd[_0x43468c];return _0x2da9cb;};'use strict';var client=require(_0xdbac('0x0'));exports[_0xdbac('0x1')]=function(){return function(_0x4e4bfd){return client[_0xdbac('0x2')](_0xdbac('0x3'),{'options':{'raw':![],'attributes':['id',_0xdbac('0x4'),'username',_0xdbac('0x5'),_0xdbac('0x6'),_0xdbac('0x7')],'include':[{'model':_0xdbac('0x8'),'as':_0xdbac('0x9'),'attributes':['id',_0xdbac('0x4')],'include':[{'model':_0xdbac('0xa'),'as':_0xdbac('0xb'),'attributes':['id',_0xdbac('0xc'),_0xdbac('0xd'),_0xdbac('0xe')],'include':[{'model':_0xdbac('0xf'),'as':_0xdbac('0xf'),'attributes':['id',_0xdbac('0x4')]}]},{'model':_0xdbac('0xa'),'as':'Descriptions','attributes':['id',_0xdbac('0xc'),_0xdbac('0xd'),'key',_0xdbac('0x10'),'keyContent',_0xdbac('0xe')],'include':[{'model':_0xdbac('0xf'),'as':_0xdbac('0xf'),'attributes':['id',_0xdbac('0x4')]}]}]}]},'log':_0xdbac('0x11')});};};
\ No newline at end of file
index b9dbb6f..a7012fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d1=['leadId','additionalSearchAccount','additionalSearchLead','SalesforceField','Variable','Descriptions','Fields','../../client','Request','GetSalesforceAccount','name','username','remoteUri','clientId','clientSecret','securityToken','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType'];(function(_0xf9c1f5,_0x2a911f){var _0x59a362=function(_0x360721){while(--_0x360721){_0xf9c1f5['push'](_0xf9c1f5['shift']());}};_0x59a362(++_0x2a911f);}(_0x99d1,0x104));var _0x199d=function(_0x64bf0f,_0x6f5949){_0x64bf0f=_0x64bf0f-0x0;var _0x1b0b63=_0x99d1[_0x64bf0f];return _0x1b0b63;};'use strict';var client=require(_0x199d('0x0'));exports['getSalesforceAccounts']=function(){return function(_0xb850b7){return client[_0x199d('0x1')](_0x199d('0x2'),{'options':{'raw':![],'attributes':['id',_0x199d('0x3'),_0x199d('0x4'),'password',_0x199d('0x5'),_0x199d('0x6'),_0x199d('0x7'),_0x199d('0x8'),_0x199d('0x9'),_0x199d('0xa')],'include':[{'model':_0x199d('0xb'),'as':_0x199d('0xc'),'attributes':['id',_0x199d('0x3'),_0x199d('0xd'),_0x199d('0xe'),_0x199d('0xf'),_0x199d('0x10'),_0x199d('0x11'),'additionalSearchContact',_0x199d('0x12')],'include':[{'model':_0x199d('0x13'),'as':'Subjects','include':[{'model':_0x199d('0x14'),'as':_0x199d('0x14'),'attributes':['id',_0x199d('0x3')]}]},{'model':'SalesforceField','as':_0x199d('0x15'),'include':[{'model':_0x199d('0x14'),'as':'Variable','attributes':['id','name']}]},{'model':_0x199d('0x13'),'as':_0x199d('0x16'),'include':[{'model':_0x199d('0x14'),'as':_0x199d('0x14'),'attributes':['id',_0x199d('0x3')]}]}]}]},'log':_0x199d('0x2')});};};
\ No newline at end of file
+var _0xfe9d=['additionalSearchLead','Subjects','Variable','name','SalesforceField','Descriptions','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','remoteUri','clientId','clientSecret','securityToken','serverUrl','Configurations','moduleSearch','moduleCreate','leadId','additionalSearchAccount','additionalSearchContact'];(function(_0x2c96f6,_0x877207){var _0x6d4808=function(_0x567e0c){while(--_0x567e0c){_0x2c96f6['push'](_0x2c96f6['shift']());}};_0x6d4808(++_0x877207);}(_0xfe9d,0x10e));var _0xdfe9=function(_0x530659,_0x3ee9cc){_0x530659=_0x530659-0x0;var _0x43326c=_0xfe9d[_0x530659];return _0x43326c;};'use strict';var client=require(_0xdfe9('0x0'));exports[_0xdfe9('0x1')]=function(){return function(_0x75737a){return client[_0xdfe9('0x2')](_0xdfe9('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xdfe9('0x4'),'password',_0xdfe9('0x5'),_0xdfe9('0x6'),_0xdfe9('0x7'),_0xdfe9('0x8'),_0xdfe9('0x9'),'type'],'include':[{'model':'SalesforceConfiguration','as':_0xdfe9('0xa'),'attributes':['id','name',_0xdfe9('0xb'),_0xdfe9('0xc'),'ticketType',_0xdfe9('0xd'),_0xdfe9('0xe'),_0xdfe9('0xf'),_0xdfe9('0x10')],'include':[{'model':'SalesforceField','as':_0xdfe9('0x11'),'include':[{'model':_0xdfe9('0x12'),'as':_0xdfe9('0x12'),'attributes':['id',_0xdfe9('0x13')]}]},{'model':_0xdfe9('0x14'),'as':_0xdfe9('0x15'),'include':[{'model':_0xdfe9('0x12'),'as':_0xdfe9('0x12'),'attributes':['id',_0xdfe9('0x13')]}]},{'model':_0xdfe9('0x14'),'as':'Fields','include':[{'model':_0xdfe9('0x12'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xdfe9('0x3')});};};
\ No newline at end of file
index 4a89dc7..326ccb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetServicenowAccount'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x524e,0x15e));var _0xe524=function(_0x64cff3,_0x2b578c){_0x64cff3=_0x64cff3-0x0;var _0x1b612d=_0x524e[_0x64cff3];return _0x1b612d;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x1967=['description','username','password','email','remoteUri','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','variableName','Variable','content','key','keyType','keyContent','Fields','idField','nameField','customField','GetServicenowkAccount','getServicenowAccounts','Request','GetServicenowAccount','name'];(function(_0x3aff58,_0x30a3a3){var _0x5e6ec6=function(_0x4d7449){while(--_0x4d7449){_0x3aff58['push'](_0x3aff58['shift']());}};_0x5e6ec6(++_0x30a3a3);}(_0x1967,0x173));var _0x7196=function(_0x54fd0a,_0x1e26cb){_0x54fd0a=_0x54fd0a-0x0;var _0x9fb397=_0x1967[_0x54fd0a];return _0x9fb397;};'use strict';var client=require('../../client');exports[_0x7196('0x0')]=function(){return function(_0xdb72bb){return client[_0x7196('0x1')](_0x7196('0x2'),{'options':{'raw':![],'attributes':['id',_0x7196('0x3'),_0x7196('0x4'),_0x7196('0x5'),_0x7196('0x6'),_0x7196('0x7'),_0x7196('0x8'),'serverUrl'],'include':[{'model':_0x7196('0x9'),'as':_0x7196('0xa'),'attributes':['id',_0x7196('0x3')],'include':[{'model':_0x7196('0xb'),'as':_0x7196('0xc'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':'Descriptions','attributes':['id','type',_0x7196('0x10'),_0x7196('0x11'),_0x7196('0x12'),_0x7196('0x13'),_0x7196('0xe')],'include':[{'model':_0x7196('0xf'),'as':_0x7196('0xf'),'attributes':['id',_0x7196('0x3')]}]},{'model':_0x7196('0xb'),'as':_0x7196('0x14'),'attributes':['id',_0x7196('0xd'),'content',_0x7196('0x15'),_0x7196('0x16'),_0x7196('0x17'),_0x7196('0xe')],'include':[{'model':'Variable','as':_0x7196('0xf'),'attributes':['id','name']}]}]}]},'log':_0x7196('0x18')});};};
\ No newline at end of file
index 7d9c499..144bc47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['GetSugarcrmAccount','getSugarcrmAccounts','Request','name','username','remoteUri','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','key','keyContent','customField'];(function(_0x39baaa,_0x4a8d9e){var _0x337dd3=function(_0x214650){while(--_0x214650){_0x39baaa['push'](_0x39baaa['shift']());}};_0x337dd3(++_0x4a8d9e);}(_0x2032,0xd9));var _0x2203=function(_0x477da3,_0xa0891b){_0x477da3=_0x477da3-0x0;var _0x179577=_0x2032[_0x477da3];return _0x179577;};'use strict';var client=require('../../client');exports[_0x2203('0x0')]=function(){return function(_0x1e103d){return client[_0x2203('0x1')]('GetSugarcrmAccount',{'options':{'raw':![],'attributes':['id',_0x2203('0x2'),_0x2203('0x3'),'password',_0x2203('0x4'),_0x2203('0x5')],'include':[{'model':_0x2203('0x6'),'as':_0x2203('0x7'),'attributes':['id',_0x2203('0x2')],'include':[{'model':_0x2203('0x8'),'as':_0x2203('0x9'),'attributes':['id',_0x2203('0xa'),_0x2203('0xb'),_0x2203('0xc')],'include':[{'model':_0x2203('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':_0x2203('0x8'),'as':'Descriptions','attributes':['id',_0x2203('0xa'),_0x2203('0xb'),_0x2203('0xe'),'keyType',_0x2203('0xf'),'variableName'],'include':[{'model':_0x2203('0xd'),'as':'Variable','attributes':['id',_0x2203('0x2')]}]},{'model':_0x2203('0x8'),'as':'Fields','attributes':['id','type','content','idField','nameField',_0x2203('0x10'),'variableName'],'include':[{'model':'Variable','as':_0x2203('0xd'),'attributes':['id',_0x2203('0x2')]}]}]}]},'log':_0x2203('0x11')});};};
\ No newline at end of file
+var _0x1a85=['serverUrl','Configurations','SugarcrmField','type','content','Variable','Descriptions','key','keyType','keyContent','variableName','name','Fields','idField','nameField','Request','GetSugarcrmAccount','password','remoteUri'];(function(_0x172005,_0x3209eb){var _0x247db7=function(_0x26c564){while(--_0x26c564){_0x172005['push'](_0x172005['shift']());}};_0x247db7(++_0x3209eb);}(_0x1a85,0x178));var _0x51a8=function(_0x347884,_0xd8ef37){_0x347884=_0x347884-0x0;var _0x2cd3fa=_0x1a85[_0x347884];return _0x2cd3fa;};'use strict';var client=require('../../client');exports['getSugarcrmAccounts']=function(){return function(_0x305f18){return client[_0x51a8('0x0')](_0x51a8('0x1'),{'options':{'raw':![],'attributes':['id','name','username',_0x51a8('0x2'),_0x51a8('0x3'),_0x51a8('0x4')],'include':[{'model':'SugarcrmConfiguration','as':_0x51a8('0x5'),'attributes':['id','name'],'include':[{'model':_0x51a8('0x6'),'as':'Subjects','attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),'variableName'],'include':[{'model':_0x51a8('0x9'),'as':'Variable','attributes':['id','name']}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0xa'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0xb'),_0x51a8('0xc'),_0x51a8('0xd'),_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id',_0x51a8('0xf')]}]},{'model':_0x51a8('0x6'),'as':_0x51a8('0x10'),'attributes':['id',_0x51a8('0x7'),_0x51a8('0x8'),_0x51a8('0x11'),_0x51a8('0x12'),'customField',_0x51a8('0xe')],'include':[{'model':_0x51a8('0x9'),'as':_0x51a8('0x9'),'attributes':['id','name']}]}]}]},'log':_0x51a8('0x1')});};};
\ No newline at end of file
index 7a0abc1..9779ff2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x118c=['content','key','Fields','nameField','../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','accessKey','remoteUri','Configurations','VtigerField','Subjects','type','variableName','Variable'];(function(_0x483e4a,_0x32aa45){var _0x31fba5=function(_0x345bc9){while(--_0x345bc9){_0x483e4a['push'](_0x483e4a['shift']());}};_0x31fba5(++_0x32aa45);}(_0x118c,0x15a));var _0xc118=function(_0xe1b523,_0x2bc05b){_0xe1b523=_0xe1b523-0x0;var _0x52c152=_0x118c[_0xe1b523];return _0x52c152;};'use strict';var client=require(_0xc118('0x0'));exports[_0xc118('0x1')]=function(){return function(_0x1727d4){return client[_0xc118('0x2')](_0xc118('0x3'),{'options':{'raw':![],'attributes':['id',_0xc118('0x4'),_0xc118('0x5'),'username',_0xc118('0x6'),_0xc118('0x7'),'serverUrl'],'include':[{'model':'VtigerConfiguration','as':_0xc118('0x8'),'attributes':['id','name'],'include':[{'model':_0xc118('0x9'),'as':_0xc118('0xa'),'attributes':['id',_0xc118('0xb'),'content',_0xc118('0xc')],'include':[{'model':_0xc118('0xd'),'as':_0xc118('0xd'),'attributes':['id',_0xc118('0x4')]}]},{'model':'VtigerField','as':'Descriptions','attributes':['id',_0xc118('0xb'),_0xc118('0xe'),_0xc118('0xf'),'keyType','keyContent',_0xc118('0xc')],'include':[{'model':_0xc118('0xd'),'as':_0xc118('0xd'),'attributes':['id',_0xc118('0x4')]}]},{'model':_0xc118('0x9'),'as':_0xc118('0x10'),'attributes':['id',_0xc118('0xb'),_0xc118('0xe'),'idField',_0xc118('0x11'),'customField',_0xc118('0xc')],'include':[{'model':_0xc118('0xd'),'as':_0xc118('0xd'),'attributes':['id',_0xc118('0x4')]}]}]}]},'log':_0xc118('0x3')});};};
\ No newline at end of file
+var _0xf205=['../../client','getVtigerAccounts','Request','GetVtigerAccount','name','description','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','VtigerField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0xa89c3e,_0x144268){var _0x48072f=function(_0x4a1fe2){while(--_0x4a1fe2){_0xa89c3e['push'](_0xa89c3e['shift']());}};_0x48072f(++_0x144268);}(_0xf205,0x12c));var _0x5f20=function(_0x6be15a,_0x1a19b6){_0x6be15a=_0x6be15a-0x0;var _0x3ca07f=_0xf205[_0x6be15a];return _0x3ca07f;};'use strict';var client=require(_0x5f20('0x0'));exports[_0x5f20('0x1')]=function(){return function(_0x1b995f){return client[_0x5f20('0x2')](_0x5f20('0x3'),{'options':{'raw':![],'attributes':['id',_0x5f20('0x4'),_0x5f20('0x5'),_0x5f20('0x6'),_0x5f20('0x7'),_0x5f20('0x8'),_0x5f20('0x9')],'include':[{'model':_0x5f20('0xa'),'as':_0x5f20('0xb'),'attributes':['id',_0x5f20('0x4')],'include':[{'model':_0x5f20('0xc'),'as':_0x5f20('0xd'),'attributes':['id',_0x5f20('0xe'),_0x5f20('0xf'),_0x5f20('0x10')],'include':[{'model':_0x5f20('0x11'),'as':_0x5f20('0x11'),'attributes':['id',_0x5f20('0x4')]}]},{'model':_0x5f20('0xc'),'as':'Descriptions','attributes':['id',_0x5f20('0xe'),_0x5f20('0xf'),_0x5f20('0x12'),_0x5f20('0x13'),_0x5f20('0x14'),_0x5f20('0x10')],'include':[{'model':'Variable','as':_0x5f20('0x11'),'attributes':['id','name']}]},{'model':_0x5f20('0xc'),'as':_0x5f20('0x15'),'attributes':['id','type','content',_0x5f20('0x16'),_0x5f20('0x17'),_0x5f20('0x18'),_0x5f20('0x10')],'include':[{'model':_0x5f20('0x11'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0x5f20('0x3')});};};
\ No newline at end of file
index 8772d10..33813d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba75=['../../client','getZendeskAccounts','name','username','password','token','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','Subjects','content','variableName','Variable','key','keyContent','idField','nameField','customField','GetZendeskAccount'];(function(_0x10fd40,_0x274791){var _0x565393=function(_0x270df4){while(--_0x270df4){_0x10fd40['push'](_0x10fd40['shift']());}};_0x565393(++_0x274791);}(_0xba75,0x134));var _0x5ba7=function(_0x15f972,_0x4a1fc7){_0x15f972=_0x15f972-0x0;var _0x3d916e=_0xba75[_0x15f972];return _0x3d916e;};'use strict';var client=require(_0x5ba7('0x0'));exports[_0x5ba7('0x1')]=function(){return function(_0x4a4825){return client['Request']('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x5ba7('0x2'),_0x5ba7('0x3'),_0x5ba7('0x4'),_0x5ba7('0x5'),'remoteUri','authType',_0x5ba7('0x6'),_0x5ba7('0x7')],'include':[{'model':_0x5ba7('0x8'),'as':_0x5ba7('0x9'),'attributes':['id','name'],'include':[{'model':_0x5ba7('0xa'),'attributes':['id',_0x5ba7('0x2')]},{'model':_0x5ba7('0xb'),'as':_0x5ba7('0xc'),'attributes':['id',_0x5ba7('0x7'),_0x5ba7('0xd'),_0x5ba7('0xe')],'include':[{'model':'Variable','as':_0x5ba7('0xf'),'attributes':['id','name']}]},{'model':_0x5ba7('0xb'),'as':'Descriptions','attributes':['id',_0x5ba7('0x7'),'content',_0x5ba7('0x10'),'keyType',_0x5ba7('0x11'),_0x5ba7('0xe')],'include':[{'model':_0x5ba7('0xf'),'as':'Variable','attributes':['id',_0x5ba7('0x2')]}]},{'model':_0x5ba7('0xb'),'as':'Fields','attributes':['id',_0x5ba7('0x7'),_0x5ba7('0xd'),_0x5ba7('0x12'),_0x5ba7('0x13'),_0x5ba7('0x14'),_0x5ba7('0xe')],'include':[{'model':_0x5ba7('0xf'),'as':_0x5ba7('0xf'),'attributes':['id',_0x5ba7('0x2')]}]}]}]},'log':_0x5ba7('0x15')});};};
\ No newline at end of file
+var _0x144d=['Request','GetZendeskAccount','username','token','remoteUri','authType','type','ZendeskConfiguration','Configurations','name','Tag','Subjects','content','variableName','Variable','ZendeskField','Descriptions','key','Fields','customField','../../client','getZendeskAccounts'];(function(_0x4be32e,_0x192304){var _0x450d3b=function(_0x3e2d3e){while(--_0x3e2d3e){_0x4be32e['push'](_0x4be32e['shift']());}};_0x450d3b(++_0x192304);}(_0x144d,0x1cc));var _0xd144=function(_0x46288f,_0x1afe45){_0x46288f=_0x46288f-0x0;var _0x43f4aa=_0x144d[_0x46288f];return _0x43f4aa;};'use strict';var client=require(_0xd144('0x0'));exports[_0xd144('0x1')]=function(){return function(_0x239340){return client[_0xd144('0x2')](_0xd144('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd144('0x4'),'password',_0xd144('0x5'),_0xd144('0x6'),_0xd144('0x7'),'serverUrl',_0xd144('0x8')],'include':[{'model':_0xd144('0x9'),'as':_0xd144('0xa'),'attributes':['id',_0xd144('0xb')],'include':[{'model':_0xd144('0xc'),'attributes':['id',_0xd144('0xb')]},{'model':'ZendeskField','as':_0xd144('0xd'),'attributes':['id',_0xd144('0x8'),_0xd144('0xe'),_0xd144('0xf')],'include':[{'model':'Variable','as':_0xd144('0x10'),'attributes':['id',_0xd144('0xb')]}]},{'model':_0xd144('0x11'),'as':_0xd144('0x12'),'attributes':['id',_0xd144('0x8'),_0xd144('0xe'),_0xd144('0x13'),'keyType','keyContent',_0xd144('0xf')],'include':[{'model':_0xd144('0x10'),'as':_0xd144('0x10'),'attributes':['id',_0xd144('0xb')]}]},{'model':_0xd144('0x11'),'as':_0xd144('0x14'),'attributes':['id',_0xd144('0x8'),_0xd144('0xe'),'idField','nameField',_0xd144('0x15'),_0xd144('0xf')],'include':[{'model':_0xd144('0x10'),'as':'Variable','attributes':['id','name']}]}]}]},'log':_0xd144('0x3')});};};
\ No newline at end of file
index d4606de..1267302 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb28=['Variable','ZohoField','Descriptions','content','key','keyType','keyContent','Fields','idField','variableName','../../client','Request','GetZohoAccount','name','description','host','zone','clientId','clientSecret','code','refreshToken','ZohoConfiguration','Configurations','moduleCreate','Subjects','type'];(function(_0x19d131,_0x3f32ad){var _0x50ca05=function(_0x5e6b19){while(--_0x5e6b19){_0x19d131['push'](_0x19d131['shift']());}};_0x50ca05(++_0x3f32ad);}(_0xeb28,0x8c));var _0x8eb2=function(_0x7fa70d,_0x3e16c0){_0x7fa70d=_0x7fa70d-0x0;var _0x4eae26=_0xeb28[_0x7fa70d];return _0x4eae26;};'use strict';var client=require(_0x8eb2('0x0'));exports['getZohoAccounts']=function(){return function(_0x2e5b0b){return client[_0x8eb2('0x1')](_0x8eb2('0x2'),{'options':{'raw':![],'attributes':['id',_0x8eb2('0x3'),_0x8eb2('0x4'),_0x8eb2('0x5'),_0x8eb2('0x6'),_0x8eb2('0x7'),_0x8eb2('0x8'),'serverUrl',_0x8eb2('0x9'),_0x8eb2('0xa')],'include':[{'model':_0x8eb2('0xb'),'as':_0x8eb2('0xc'),'attributes':['id',_0x8eb2('0x3'),_0x8eb2('0xd'),'moduleSearch','description'],'include':[{'model':'ZohoField','as':_0x8eb2('0xe'),'attributes':['id',_0x8eb2('0xf'),'content','variableName'],'include':[{'model':_0x8eb2('0x10'),'as':_0x8eb2('0x10'),'attributes':['id',_0x8eb2('0x3')]}]},{'model':_0x8eb2('0x11'),'as':_0x8eb2('0x12'),'attributes':['id',_0x8eb2('0xf'),_0x8eb2('0x13'),_0x8eb2('0x14'),_0x8eb2('0x15'),_0x8eb2('0x16'),'variableName'],'include':[{'model':_0x8eb2('0x10'),'as':'Variable','attributes':['id',_0x8eb2('0x3')]}]},{'model':_0x8eb2('0x11'),'as':_0x8eb2('0x17'),'attributes':['id',_0x8eb2('0xf'),_0x8eb2('0x13'),_0x8eb2('0x18'),'nameField','customField',_0x8eb2('0x19')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x8eb2('0x3')]}]}]}]},'log':_0x8eb2('0x2')});};};
\ No newline at end of file
+var _0x52ce=['content','Variable','keyType','keyContent','variableName','ZohoField','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','zone','clientId','clientSecret','code','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','type'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x52ce,0xf8));var _0xe52c=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x52ce[_0x1203f];return _0x365f0a;};'use strict';var client=require(_0xe52c('0x0'));exports[_0xe52c('0x1')]=function(){return function(_0x12d68a){return client[_0xe52c('0x2')](_0xe52c('0x3'),{'options':{'raw':![],'attributes':['id',_0xe52c('0x4'),_0xe52c('0x5'),'host',_0xe52c('0x6'),_0xe52c('0x7'),_0xe52c('0x8'),'serverUrl',_0xe52c('0x9'),'refreshToken'],'include':[{'model':_0xe52c('0xa'),'as':_0xe52c('0xb'),'attributes':['id','name',_0xe52c('0xc'),_0xe52c('0xd'),_0xe52c('0x5')],'include':[{'model':'ZohoField','as':_0xe52c('0xe'),'attributes':['id',_0xe52c('0xf'),_0xe52c('0x10'),'variableName'],'include':[{'model':_0xe52c('0x11'),'as':'Variable','attributes':['id',_0xe52c('0x4')]}]},{'model':'ZohoField','as':'Descriptions','attributes':['id','type',_0xe52c('0x10'),'key',_0xe52c('0x12'),_0xe52c('0x13'),_0xe52c('0x14')],'include':[{'model':'Variable','as':_0xe52c('0x11'),'attributes':['id',_0xe52c('0x4')]}]},{'model':_0xe52c('0x15'),'as':'Fields','attributes':['id',_0xe52c('0xf'),'content','idField',_0xe52c('0x16'),_0xe52c('0x17'),_0xe52c('0x14')],'include':[{'model':_0xe52c('0x11'),'as':_0xe52c('0x11'),'attributes':['id',_0xe52c('0x4')]}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
index facffcc..923ff69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d2=['voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','CreateMemberReport','voice','lastAssignedTo','interface','format','SIP/%s','queuecallerleaveAt','diff','seconds','calleridnum','exten','queue','accountcode','uniqueid','membername','starttime','endtime','dialstring','agent','toNumber','lodash','util','../client'];(function(_0x514a11,_0x11769e){var _0x42b9be=function(_0x188e53){while(--_0x188e53){_0x514a11['push'](_0x514a11['shift']());}};_0x42b9be(++_0x11769e);}(_0x49d2,0x101));var _0x249d=function(_0x79cd47,_0x16102d){_0x79cd47=_0x79cd47-0x0;var _0x3b9484=_0x49d2[_0x79cd47];return _0x3b9484;};'use strict';var moment=require('moment');var _=require(_0x249d('0x0'));var util=require(_0x249d('0x1'));var client=require(_0x249d('0x2'));exports[_0x249d('0x3')]=function(_0x14c029){var _0x241d5f=_0x14c029[_0x249d('0x4')]||_0x14c029[_0x249d('0x5')];return client['Request'](_0x249d('0x6'),{'body':{'channel':_0x249d('0x7'),'membername':_0x14c029[_0x249d('0x8')],'interface':_['isNil'](_0x14c029[_0x249d('0x9')])?util[_0x249d('0xa')](_0x249d('0xb'),_0x14c029[_0x249d('0x8')]):_0x14c029[_0x249d('0x9')],'type':'TALKING','enterAt':_0x14c029[_0x249d('0xc')],'exitAt':_0x241d5f,'duration':moment(_0x241d5f)[_0x249d('0xd')](_0x14c029[_0x249d('0xc')],_0x249d('0xe')),'data1':'inbound','data2':_0x14c029[_0x249d('0xf')],'data3':_0x14c029[_0x249d('0x10')],'data4':null,'data5':_0x14c029[_0x249d('0x11')],'role':'agent','internal':_0x14c029[_0x249d('0x12')]?_['toNumber'](_0x14c029[_0x249d('0x12')]):undefined,'uniqueid':_0x14c029[_0x249d('0x13')]},'log':_0x249d('0x6')});};exports['voiceDialReport']=function(_0x7b47de){return client['Request']('CreateMemberReport',{'body':{'channel':_0x249d('0x7'),'membername':_0x7b47de[_0x249d('0x14')],'interface':_0x7b47de[_0x249d('0x9')],'type':'TALKING','enterAt':_0x7b47de[_0x249d('0x15')],'exitAt':_0x7b47de[_0x249d('0x16')],'duration':moment(_0x7b47de[_0x249d('0x16')])['diff'](_0x7b47de[_0x249d('0x15')],_0x249d('0xe'))>=0x0?moment(_0x7b47de[_0x249d('0x16')])[_0x249d('0xd')](_0x7b47de[_0x249d('0x15')],_0x249d('0xe')):null,'data1':'outbound','data2':_0x7b47de[_0x249d('0x12')],'data3':_0x7b47de['exten'],'data4':_0x7b47de[_0x249d('0x17')]||null,'role':_0x249d('0x18'),'internal':_0x7b47de[_0x249d('0x12')]?_[_0x249d('0x19')](_0x7b47de[_0x249d('0x12')]):undefined,'uniqueid':_0x7b47de[_0x249d('0x13')]},'log':_0x249d('0x6')});};
\ No newline at end of file
+var _0x7cc2=['membername','endtime','diff','starttime','outbound','moment','util','../client','voiceQueueReport','queuecallercompleteAt','Request','CreateMemberReport','voice','isNil','interface','lastAssignedTo','TALKING','queuecallerleaveAt','seconds','inbound','calleridnum','exten','agent','accountcode','toNumber','uniqueid','voiceDialReport'];(function(_0x6fde9d,_0x4580a2){var _0x141271=function(_0x1d9432){while(--_0x1d9432){_0x6fde9d['push'](_0x6fde9d['shift']());}};_0x141271(++_0x4580a2);}(_0x7cc2,0xf8));var _0x27cc=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x7cc2[_0x36ed48];return _0x51c63a;};'use strict';var moment=require(_0x27cc('0x0'));var _=require('lodash');var util=require(_0x27cc('0x1'));var client=require(_0x27cc('0x2'));exports[_0x27cc('0x3')]=function(_0x6ace4d){var _0x24437d=_0x6ace4d[_0x27cc('0x4')]||_0x6ace4d['queuecallerexitAt'];return client[_0x27cc('0x5')](_0x27cc('0x6'),{'body':{'channel':_0x27cc('0x7'),'membername':_0x6ace4d['lastAssignedTo'],'interface':_[_0x27cc('0x8')](_0x6ace4d[_0x27cc('0x9')])?util['format']('SIP/%s',_0x6ace4d[_0x27cc('0xa')]):_0x6ace4d['interface'],'type':_0x27cc('0xb'),'enterAt':_0x6ace4d[_0x27cc('0xc')],'exitAt':_0x24437d,'duration':moment(_0x24437d)['diff'](_0x6ace4d[_0x27cc('0xc')],_0x27cc('0xd')),'data1':_0x27cc('0xe'),'data2':_0x6ace4d[_0x27cc('0xf')],'data3':_0x6ace4d[_0x27cc('0x10')],'data4':null,'data5':_0x6ace4d['queue'],'role':_0x27cc('0x11'),'internal':_0x6ace4d[_0x27cc('0x12')]?_[_0x27cc('0x13')](_0x6ace4d[_0x27cc('0x12')]):undefined,'uniqueid':_0x6ace4d[_0x27cc('0x14')]},'log':_0x27cc('0x6')});};exports[_0x27cc('0x15')]=function(_0x7ea27e){return client[_0x27cc('0x5')](_0x27cc('0x6'),{'body':{'channel':_0x27cc('0x7'),'membername':_0x7ea27e[_0x27cc('0x16')],'interface':_0x7ea27e[_0x27cc('0x9')],'type':_0x27cc('0xb'),'enterAt':_0x7ea27e['starttime'],'exitAt':_0x7ea27e[_0x27cc('0x17')],'duration':moment(_0x7ea27e[_0x27cc('0x17')])['diff'](_0x7ea27e['starttime'],_0x27cc('0xd'))>=0x0?moment(_0x7ea27e[_0x27cc('0x17')])[_0x27cc('0x18')](_0x7ea27e[_0x27cc('0x19')],_0x27cc('0xd')):null,'data1':_0x27cc('0x1a'),'data2':_0x7ea27e[_0x27cc('0x12')],'data3':_0x7ea27e[_0x27cc('0x10')],'data4':_0x7ea27e['dialstring']||null,'role':'agent','internal':_0x7ea27e[_0x27cc('0x12')]?_['toNumber'](_0x7ea27e['accountcode']):undefined,'uniqueid':_0x7ea27e[_0x27cc('0x14')]},'log':_0x27cc('0x6')});};
\ No newline at end of file
index 3f79ffb..b1a04c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1aa=['GetSettings','getSettings','Request','ShowSetting','stopRecordingOnTransfer'];(function(_0x502006,_0x5c93cd){var _0xa2c0dd=function(_0x1fca26){while(--_0x1fca26){_0x502006['push'](_0x502006['shift']());}};_0xa2c0dd(++_0x5c93cd);}(_0xa1aa,0x19b));var _0xaa1a=function(_0x18a71c,_0x617d18){_0x18a71c=_0x18a71c-0x0;var _0x564a01=_0xa1aa[_0x18a71c];return _0x564a01;};'use strict';var client=require('../client');exports[_0xaa1a('0x0')]=function(){return client[_0xaa1a('0x1')](_0xaa1a('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xaa1a('0x3')]},'log':_0xaa1a('0x4')});};
\ No newline at end of file
+var _0xff99=['Request','ShowSetting','GetSettings','../client','getSettings'];(function(_0x526074,_0x5e5d09){var _0x83c6c8=function(_0x571483){while(--_0x571483){_0x526074['push'](_0x526074['shift']());}};_0x83c6c8(++_0x5e5d09);}(_0xff99,0x85));var _0x9ff9=function(_0x5b07b2,_0xfcdb66){_0x5b07b2=_0x5b07b2-0x0;var _0xafe77c=_0xff99[_0x5b07b2];return _0xafe77c;};'use strict';var client=require(_0x9ff9('0x0'));exports[_0x9ff9('0x1')]=function(){return client[_0x9ff9('0x2')](_0x9ff9('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer']},'log':_0x9ff9('0x4')});};
\ No newline at end of file
index 6a79d86..72972c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb84=['GetTemplate','name','html','getTemplates','Request'];(function(_0x11d684,_0x4d4123){var _0x78a301=function(_0x1a1966){while(--_0x1a1966){_0x11d684['push'](_0x11d684['shift']());}};_0x78a301(++_0x4d4123);}(_0xdb84,0xa8));var _0x4db8=function(_0x287ed0,_0x2b709a){_0x287ed0=_0x287ed0-0x0;var _0x3bb397=_0xdb84[_0x287ed0];return _0x3bb397;};'use strict';var client=require('../client');exports[_0x4db8('0x0')]=function(_0x46ca70){return function(_0x566868){return client[_0x4db8('0x1')](_0x4db8('0x2'),{'options':{'raw':!![],'attributes':['id',_0x4db8('0x3'),_0x4db8('0x4')]},'log':_0x4db8('0x2')});};};
\ No newline at end of file
+var _0x1b55=['GetTemplate','name','html','../client','getTemplates'];(function(_0x2e5f94,_0x1440cc){var _0x25f1a6=function(_0x44da6f){while(--_0x44da6f){_0x2e5f94['push'](_0x2e5f94['shift']());}};_0x25f1a6(++_0x1440cc);}(_0x1b55,0x1ca));var _0x51b5=function(_0x5528bc,_0x3fbeca){_0x5528bc=_0x5528bc-0x0;var _0x592eea=_0x1b55[_0x5528bc];return _0x592eea;};'use strict';var client=require(_0x51b5('0x0'));exports[_0x51b5('0x1')]=function(_0x361de2){return function(_0x44a3e1){return client['Request'](_0x51b5('0x2'),{'options':{'raw':!![],'attributes':['id',_0x51b5('0x3'),_0x51b5('0x4')]},'log':_0x51b5('0x2')});};};
\ No newline at end of file
index 9ff05f8..2c67660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4813=['data6','data7','GetTrigger','status','Condition','AllConditions','operator','value','AnyConditions','field','Action','Actions','action','data1','data2','data4','data5'];(function(_0x15ad31,_0x31d3f8){var _0xd07157=function(_0x3e1f60){while(--_0x3e1f60){_0x15ad31['push'](_0x15ad31['shift']());}};_0xd07157(++_0x31d3f8);}(_0x4813,0x189));var _0x3481=function(_0x23fee7,_0x284202){_0x23fee7=_0x23fee7-0x0;var _0x276d57=_0x4813[_0x23fee7];return _0x276d57;};'use strict';var client=require('../client');exports['getTriggers']=function(_0xe32a28){return function(_0x3ea43f){return client['Request'](_0x3481('0x0'),{'options':{'raw':![],'attributes':['id','name','channel',_0x3481('0x1')],'include':[{'model':_0x3481('0x2'),'as':_0x3481('0x3'),'attributes':['id','field',_0x3481('0x4'),_0x3481('0x5')]},{'model':'Condition','as':_0x3481('0x6'),'attributes':['id',_0x3481('0x7'),_0x3481('0x4'),_0x3481('0x5')]},{'model':_0x3481('0x8'),'as':_0x3481('0x9'),'attributes':['id',_0x3481('0xa'),_0x3481('0xb'),_0x3481('0xc'),'data3',_0x3481('0xd'),_0x3481('0xe'),_0x3481('0xf'),_0x3481('0x10')]}]},'log':_0x3481('0x0')});};};
\ No newline at end of file
+var _0xafb2=['name','channel','status','Condition','field','operator','value','AnyConditions','Action','Actions','action','data1','data3','data4','data5','data7','../client','getTriggers','Request','GetTrigger'];(function(_0x5cf40a,_0x289fa8){var _0x8b4dc4=function(_0x3c7e51){while(--_0x3c7e51){_0x5cf40a['push'](_0x5cf40a['shift']());}};_0x8b4dc4(++_0x289fa8);}(_0xafb2,0x128));var _0x2afb=function(_0x3e801e,_0x2ee3c4){_0x3e801e=_0x3e801e-0x0;var _0x20d7df=_0xafb2[_0x3e801e];return _0x20d7df;};'use strict';var client=require(_0x2afb('0x0'));exports[_0x2afb('0x1')]=function(_0x15be26){return function(_0x448e49){return client[_0x2afb('0x2')](_0x2afb('0x3'),{'options':{'raw':![],'attributes':['id',_0x2afb('0x4'),_0x2afb('0x5'),_0x2afb('0x6')],'include':[{'model':_0x2afb('0x7'),'as':'AllConditions','attributes':['id',_0x2afb('0x8'),_0x2afb('0x9'),_0x2afb('0xa')]},{'model':_0x2afb('0x7'),'as':_0x2afb('0xb'),'attributes':['id',_0x2afb('0x8'),_0x2afb('0x9'),_0x2afb('0xa')]},{'model':_0x2afb('0xc'),'as':_0x2afb('0xd'),'attributes':['id',_0x2afb('0xe'),_0x2afb('0xf'),'data2',_0x2afb('0x10'),_0x2afb('0x11'),_0x2afb('0x12'),'data6',_0x2afb('0x13')]}]},'log':_0x2afb('0x3')});};};
\ No newline at end of file
index f6eb946..ad68d9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3890=['Request','GetTrunk','name','registry','defaultuser','../client'];(function(_0x21f001,_0x316d61){var _0x24ef50=function(_0x574ee2){while(--_0x574ee2){_0x21f001['push'](_0x21f001['shift']());}};_0x24ef50(++_0x316d61);}(_0x3890,0x161));var _0x0389=function(_0x46253d,_0x5c571d){_0x46253d=_0x46253d-0x0;var _0x241c3c=_0x3890[_0x46253d];return _0x241c3c;};'use strict';var client=require(_0x0389('0x0'));exports['getTrunks']=function(_0x30da5e){return function(_0x1baf0d){return client[_0x0389('0x1')](_0x0389('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x0389('0x3'),_0x0389('0x4'),_0x0389('0x5')]},'log':'GetTrunk'});};};
\ No newline at end of file
+var _0xcc36=['registry','defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xcc36,0x1a6));var _0x6cc3=function(_0x4d12c2,_0x2ad644){_0x4d12c2=_0x4d12c2-0x0;var _0x18e9c6=_0xcc36[_0x4d12c2];return _0x18e9c6;};'use strict';var client=require(_0x6cc3('0x0'));exports[_0x6cc3('0x1')]=function(_0x4582c2){return function(_0x1d25a3){return client[_0x6cc3('0x2')](_0x6cc3('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x6cc3('0x4'),_0x6cc3('0x5'),_0x6cc3('0x6')]},'log':_0x6cc3('0x3')});};};
\ No newline at end of file
index 462d513..8b96528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0xac12b,_0x3f0dfa){var _0x5d1fd3=function(_0x493e6b){while(--_0x493e6b){_0xac12b['push'](_0xac12b['shift']());}};_0x5d1fd3(++_0x3f0dfa);}(_0x70e0,0x17b));var _0x070e=function(_0xb1598a,_0x5dae78){_0xb1598a=_0xb1598a-0x0;var _0x2db947=_0x70e0[_0xb1598a];return _0x2db947;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5'),_0x070e('0x6'),'online',_0x070e('0x7'),'pauseType',_0x070e('0x8'),'voicePause','phone','mobile',_0x070e('0x9')]},'log':_0x070e('0x1')});};};exports[_0x070e('0xa')]=function(){return function(){return client[_0x070e('0x2')](_0x070e('0xb'),{'options':{'raw':!![],'where':{'role':_0x070e('0xc')},'attributes':['id',_0x070e('0x3'),'accountcode','internal']},'log':_0x070e('0xa')});};};exports[_0x070e('0xd')]=function(_0x12bb37,_0xb8d819,_0xa927a2){return client[_0x070e('0x2')](_0x070e('0xe'),{'body':{'type':_0xb8d819,'uniqueid':_0xa927a2},'options':{'where':{'id':_0x12bb37['id']}},'log':_0x070e('0xd')});};exports[_0x070e('0xf')]=function(_0x5bf079){return client[_0x070e('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5bf079['id']}},'log':'savePause'});};exports[_0x070e('0x10')]=function(_0x56c7ba){return client['Request']('ShowUser',{'options':{'raw':![],'where':{'role':_0x070e('0x11'),'id':_0x56c7ba},'attributes':['id',_0x070e('0x3'),'email','accountcode',_0x070e('0x6'),_0x070e('0x12'),_0x070e('0x7'),_0x070e('0x13'),'lastPauseAt','voicePause',_0x070e('0x9')]},'log':_0x070e('0x10')});};
\ No newline at end of file
+var _0xcb91=['UnpauseUser','getAgent','ShowUser','email','lastPauseAt','Request','GetUser','agent','name','accountcode','fullname','lastLoginAt','pauseType','voicePause','phone','interface','getAgents','internal','getTelephones','savePause','PauseUser'];(function(_0x655507,_0x77ec5){var _0x5c09d9=function(_0x195ea1){while(--_0x195ea1){_0x655507['push'](_0x655507['shift']());}};_0x5c09d9(++_0x77ec5);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x350aeb,_0x3d265a){_0x350aeb=_0x350aeb-0x0;var _0x3c5273=_0xcb91[_0x350aeb];return _0x3c5273;};'use strict';var client=require('../client');exports['getAgents']=function(){return function(){return client[_0x1cb9('0x0')](_0x1cb9('0x1'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2')},'attributes':['id',_0x1cb9('0x3'),'email',_0x1cb9('0x4'),_0x1cb9('0x5'),'online',_0x1cb9('0x6'),_0x1cb9('0x7'),'lastPauseAt',_0x1cb9('0x8'),_0x1cb9('0x9'),'mobile',_0x1cb9('0xa')]},'log':_0x1cb9('0xb')});};};exports['getTelephones']=function(){return function(){return client[_0x1cb9('0x0')]('GetUser',{'options':{'raw':!![],'where':{'role':'telephone'},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x4'),_0x1cb9('0xc')]},'log':_0x1cb9('0xd')});};};exports[_0x1cb9('0xe')]=function(_0x50ce71,_0x9b58f1,_0x44a6b4){return client[_0x1cb9('0x0')](_0x1cb9('0xf'),{'body':{'type':_0x9b58f1,'uniqueid':_0x44a6b4},'options':{'where':{'id':_0x50ce71['id']}},'log':_0x1cb9('0xe')});};exports['saveUnpause']=function(_0x5e3c19){return client['Request'](_0x1cb9('0x10'),{'body':{},'options':{'where':{'id':_0x5e3c19['id']}},'log':_0x1cb9('0xe')});};exports[_0x1cb9('0x11')]=function(_0x1c714f){return client['Request'](_0x1cb9('0x12'),{'options':{'raw':![],'where':{'role':_0x1cb9('0x2'),'id':_0x1c714f},'attributes':['id',_0x1cb9('0x3'),_0x1cb9('0x13'),_0x1cb9('0x4'),'fullname','online',_0x1cb9('0x6'),_0x1cb9('0x7'),_0x1cb9('0x14'),_0x1cb9('0x8'),_0x1cb9('0xa')]},'log':_0x1cb9('0x11')});};
\ No newline at end of file
index c9cc156..7ce886c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab4e=['CreateVoiceAgentReport','Request','UpdateVoiceAgentReport','create'];(function(_0x955896,_0x224088){var _0x31aabb=function(_0x111910){while(--_0x111910){_0x955896['push'](_0x955896['shift']());}};_0x31aabb(++_0x224088);}(_0xab4e,0x1bf));var _0xeab4=function(_0x2bb253,_0x2b4097){_0x2bb253=_0x2bb253-0x0;var _0x22ef01=_0xab4e[_0x2bb253];return _0x22ef01;};'use strict';var client=require('../client');exports[_0xeab4('0x0')]=function(_0x34daf4){return client['Request'](_0xeab4('0x1'),{'body':_0x34daf4,'log':_0xeab4('0x1')});};exports['update']=function(_0x50fd92,_0x38ff64,_0x189345){return client[_0xeab4('0x2')]('UpdateVoiceAgentReport',{'body':_0x50fd92,'options':{'where':{'uniqueid':_0x38ff64,'interface':_0x189345,'agentcomplete':!![]}},'log':_0xeab4('0x3')});};
\ No newline at end of file
+var _0x0f30=['CreateVoiceAgentReport','UpdateVoiceAgentReport','create','Request'];(function(_0x2b6602,_0xd3609a){var _0x38eb9a=function(_0x4a7884){while(--_0x4a7884){_0x2b6602['push'](_0x2b6602['shift']());}};_0x38eb9a(++_0xd3609a);}(_0x0f30,0xe6));var _0x00f3=function(_0x502e15,_0x49ff8f){_0x502e15=_0x502e15-0x0;var _0xadd0c4=_0x0f30[_0x502e15];return _0xadd0c4;};'use strict';var client=require('../client');exports[_0x00f3('0x0')]=function(_0x3f7234){return client[_0x00f3('0x1')](_0x00f3('0x2'),{'body':_0x3f7234,'log':'CreateVoiceAgentReport'});};exports['update']=function(_0x594833,_0x422814,_0x3e2bce){return client['Request'](_0x00f3('0x3'),{'body':_0x594833,'options':{'where':{'uniqueid':_0x422814,'interface':_0x3e2bce,'agentcomplete':!![]}},'log':_0x00f3('0x3')});};
\ No newline at end of file
index d140eba..b447434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x495d=['moment','util','create','Request','CreateVoiceCallReport','merge','calleridnum','context','callerid','startOf','format','YYYY-MM-DD\x20HH:mm:ss','day','disposition','duration','GetVoiceCallReports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x495d,0xb0));var _0xd495=function(_0x1c06ef,_0x40b60b){_0x1c06ef=_0x1c06ef-0x0;var _0x52eaef=_0x495d[_0x1c06ef];return _0x52eaef;};'use strict';var moment=require(_0xd495('0x0'));var util=require(_0xd495('0x1'));var _=require('lodash');var client=require('../client');exports[_0xd495('0x2')]=function(_0x598e83){return client[_0xd495('0x3')](_0xd495('0x4'),{'body':_[_0xd495('0x5')](_0x598e83,{'source':_0x598e83[_0xd495('0x6')],'destinationcontext':_0x598e83[_0xd495('0x7')],'callerid':_0x598e83[_0xd495('0x8')],'amaflags':'DOCUMENTATION'}),'log':_0xd495('0x4')});};exports['getVoiceCallReports']=function(){return function(){return client[_0xd495('0x3')]('GetVoiceCallReport',{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0xd495('0x9')]('day')[_0xd495('0xa')](_0xd495('0xb')),moment()['endOf'](_0xd495('0xc'))[_0xd495('0xa')](_0xd495('0xb'))]}},'attributes':['type',_0xd495('0xd'),_0xd495('0xe'),'billableseconds']},'log':_0xd495('0xf')});};};
\ No newline at end of file
+var _0x598c=['merge','DOCUMENTATION','getVoiceCallReports','GetVoiceCallReport','outbound','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','disposition','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','CreateVoiceCallReport'];(function(_0x308f51,_0x32466e){var _0x8e1b3e=function(_0x1f00c9){while(--_0x1f00c9){_0x308f51['push'](_0x308f51['shift']());}};_0x8e1b3e(++_0x32466e);}(_0x598c,0x1b2));var _0xc598=function(_0x2c2253,_0x73919a){_0x2c2253=_0x2c2253-0x0;var _0x6d7247=_0x598c[_0x2c2253];return _0x6d7247;};'use strict';var moment=require(_0xc598('0x0'));var util=require(_0xc598('0x1'));var _=require(_0xc598('0x2'));var client=require(_0xc598('0x3'));exports[_0xc598('0x4')]=function(_0x50401a){return client[_0xc598('0x5')](_0xc598('0x6'),{'body':_[_0xc598('0x7')](_0x50401a,{'source':_0x50401a['calleridnum'],'destinationcontext':_0x50401a['context'],'callerid':_0x50401a['callerid'],'amaflags':_0xc598('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0xc598('0x9')]=function(){return function(){return client[_0xc598('0x5')](_0xc598('0xa'),{'options':{'where':{'type':[_0xc598('0xb')],'createdAt':{'$between':[moment()[_0xc598('0xc')](_0xc598('0xd'))[_0xc598('0xe')](_0xc598('0xf')),moment()[_0xc598('0x10')](_0xc598('0xd'))['format'](_0xc598('0xf'))]}},'attributes':['type',_0xc598('0x11'),_0xc598('0x12'),_0xc598('0x13')]},'log':_0xc598('0x14')});};};
\ No newline at end of file
index 1afe9be..e68f6ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15a9=['Request','CreateVoiceDialReport','../client','create'];(function(_0x151262,_0x3ee27b){var _0x1ca4e0=function(_0x33f837){while(--_0x33f837){_0x151262['push'](_0x151262['shift']());}};_0x1ca4e0(++_0x3ee27b);}(_0x15a9,0x152));var _0x915a=function(_0x15b278,_0x468425){_0x15b278=_0x15b278-0x0;var _0x4b2ab9=_0x15a9[_0x15b278];return _0x4b2ab9;};'use strict';var client=require(_0x915a('0x0'));exports[_0x915a('0x1')]=function(_0x2042c7){return client[_0x915a('0x2')](_0x915a('0x3'),{'body':_0x2042c7,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0xfd11=['CreateVoiceDialReport','../client','create','Request'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xfd11,0x13d));var _0x1fd1=function(_0x529f1c,_0x437ed1){_0x529f1c=_0x529f1c-0x0;var _0x4d57ab=_0xfd11[_0x529f1c];return _0x4d57ab;};'use strict';var client=require(_0x1fd1('0x0'));exports[_0x1fd1('0x1')]=function(_0x2230e4){return client[_0x1fd1('0x2')]('CreateVoiceDialReport',{'body':_0x2230e4,'log':_0x1fd1('0x3')});};
\ No newline at end of file
index 46dac22..b00ced2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1094=['getVoiceExtensions','GetVoiceExtension','recordingFormat','../client'];(function(_0x20beae,_0x5eac6d){var _0xf5725=function(_0x926a3b){while(--_0x926a3b){_0x20beae['push'](_0x20beae['shift']());}};_0xf5725(++_0x5eac6d);}(_0x1094,0x143));var _0x4109=function(_0x1d60d0,_0x2cfa88){_0x1d60d0=_0x1d60d0-0x0;var _0x1a0917=_0x1094[_0x1d60d0];return _0x1a0917;};'use strict';var client=require(_0x4109('0x0'));exports[_0x4109('0x1')]=function(){return function(){return client['Request'](_0x4109('0x2'),{'options':{'raw':!![],'attributes':['id','exten',_0x4109('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x4109('0x1')});};};
\ No newline at end of file
+var _0x7d13=['getVoiceExtensions','GetVoiceExtension','recordingFormat'];(function(_0x2c8b7a,_0x483fe0){var _0x1c1cf9=function(_0x464bcf){while(--_0x464bcf){_0x2c8b7a['push'](_0x2c8b7a['shift']());}};_0x1c1cf9(++_0x483fe0);}(_0x7d13,0x6c));var _0x37d1=function(_0x515408,_0x27993d){_0x515408=_0x515408-0x0;var _0x374b70=_0x7d13[_0x515408];return _0x374b70;};'use strict';var client=require('../client');exports[_0x37d1('0x0')]=function(){return function(){return client['Request'](_0x37d1('0x1'),{'options':{'raw':!![],'attributes':['id','exten',_0x37d1('0x2')],'where':{'VoiceExtensionId':null}},'log':_0x37d1('0x0')});};};
\ No newline at end of file
index 8d66b5a..ad00339 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcc2=['callerid','Pause','TrunkBackup','active','Interval','Intervals','interval','getVoiceQueues','name','acwTimeout','autopause','type','dialLimitChannel','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xdcc2,0xb2));var _0x2dcc=function(_0x4bd249,_0x34fe12){_0x4bd249=_0x4bd249-0x0;var _0x5d5448=_0xdcc2[_0x4bd249];return _0x5d5448;};'use strict';var client=require('../client');exports[_0x2dcc('0x0')]=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x2dcc('0x1'),'acw',_0x2dcc('0x2'),_0x2dcc('0x3'),'monitor_format',_0x2dcc('0x4'),'dialActive','dialMethod',_0x2dcc('0x5'),'dialLimitQueue',_0x2dcc('0x6'),'dialPredictiveOptimization',_0x2dcc('0x7'),_0x2dcc('0x8'),_0x2dcc('0x9'),_0x2dcc('0xa'),_0x2dcc('0xb'),'dialQueueOptions',_0x2dcc('0xc'),'dialQueueProject',_0x2dcc('0xd'),_0x2dcc('0xe'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x2dcc('0xf'),_0x2dcc('0x10'),_0x2dcc('0x11'),'dialTimezone',_0x2dcc('0x12'),_0x2dcc('0x13'),_0x2dcc('0x14'),'dialAMDActive',_0x2dcc('0x15'),'dialAMDGreeting',_0x2dcc('0x16'),'dialAMDTotalAnalysisTime',_0x2dcc('0x17'),_0x2dcc('0x18'),_0x2dcc('0x19'),_0x2dcc('0x1a'),_0x2dcc('0x1b'),_0x2dcc('0x1c'),_0x2dcc('0x1d'),_0x2dcc('0x1e'),'dialOrderByScheduledAt',_0x2dcc('0x1f'),_0x2dcc('0x20'),_0x2dcc('0x21'),_0x2dcc('0x22'),_0x2dcc('0x23'),_0x2dcc('0x24'),_0x2dcc('0x25'),_0x2dcc('0x26'),_0x2dcc('0x27'),_0x2dcc('0x28'),_0x2dcc('0x29'),'dialAbandonedMaxRetry',_0x2dcc('0x2a'),_0x2dcc('0x2b'),_0x2dcc('0x2c'),_0x2dcc('0x2d'),'dialAgentRejectRetryFrequency',_0x2dcc('0x2e'),_0x2dcc('0x2f'),_0x2dcc('0x30')],'include':[{'model':_0x2dcc('0x31'),'as':_0x2dcc('0x31'),'attributes':['id',_0x2dcc('0x1'),_0x2dcc('0x32'),'active']},{'model':_0x2dcc('0x33'),'as':'mandatoryDispositionPause','attributes':['id','name']},{'model':_0x2dcc('0x31'),'as':_0x2dcc('0x34'),'attributes':['id',_0x2dcc('0x1'),'callerid',_0x2dcc('0x35')]},{'model':_0x2dcc('0x36'),'as':_0x2dcc('0x36'),'attributes':['id',_0x2dcc('0x1')],'include':[{'model':'Interval','as':_0x2dcc('0x37'),'attributes':['id',_0x2dcc('0x1'),_0x2dcc('0x38')]}]}]},'log':_0x2dcc('0x0')});};};
\ No newline at end of file
+var _0xa947=['dialCheckDuplicateType','dialAMDActive','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','Trunk','callerid','active','Pause','mandatoryDispositionPause','Interval','Intervals','Request','GetVoiceQueue','name','acw','autopause','type','dialActive','dialLimitQueue','dialPredictiveOptimization','dialPredictiveInterval','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval'];(function(_0x39245c,_0x3c0848){var _0x490965=function(_0x5e35f3){while(--_0x5e35f3){_0x39245c['push'](_0x39245c['shift']());}};_0x490965(++_0x3c0848);}(_0xa947,0x1c9));var _0x7a94=function(_0xae8d9f,_0x404864){_0xae8d9f=_0xae8d9f-0x0;var _0x5b757b=_0xa947[_0xae8d9f];return _0x5b757b;};'use strict';var client=require('../client');exports['getVoiceQueues']=function(){return function(){return client[_0x7a94('0x0')](_0x7a94('0x1'),{'options':{'raw':![],'attributes':['id',_0x7a94('0x2'),_0x7a94('0x3'),'acwTimeout',_0x7a94('0x4'),'monitor_format',_0x7a94('0x5'),_0x7a94('0x6'),'dialMethod','dialLimitChannel',_0x7a94('0x7'),'dialPowerLevel',_0x7a94('0x8'),'dialPredictiveOptimizationPercentage',_0x7a94('0x9'),'dialOriginateCallerIdName',_0x7a94('0xa'),'dialOriginateTimeout',_0x7a94('0xb'),'dialQueueTimeout',_0x7a94('0xc'),_0x7a94('0xd'),_0x7a94('0xe'),_0x7a94('0xf'),'dialBusyRetryFrequency',_0x7a94('0x10'),_0x7a94('0x11'),_0x7a94('0x12'),'dialTimezone',_0x7a94('0x13'),'dialPrefix',_0x7a94('0x14'),_0x7a94('0x15'),'dialAMDInitialSilence','dialAMDGreeting',_0x7a94('0x16'),'dialAMDTotalAnalysisTime',_0x7a94('0x17'),_0x7a94('0x18'),'dialAMDMaximumNumberOfWords',_0x7a94('0x19'),_0x7a94('0x1a'),'timeout',_0x7a94('0x1b'),_0x7a94('0x1c'),_0x7a94('0x1d'),_0x7a94('0x1e'),'dialAgiAfterHangupClient',_0x7a94('0x1f'),'monitor_format',_0x7a94('0x20'),_0x7a94('0x21'),_0x7a94('0x22'),'dialNoSuchNumberMaxRetry',_0x7a94('0x23'),_0x7a94('0x24'),_0x7a94('0x25'),_0x7a94('0x26'),_0x7a94('0x27'),'dialMachineMaxRetry',_0x7a94('0x28'),_0x7a94('0x29'),_0x7a94('0x2a'),_0x7a94('0x2b'),_0x7a94('0x2c'),_0x7a94('0x2d')],'include':[{'model':_0x7a94('0x2e'),'as':_0x7a94('0x2e'),'attributes':['id',_0x7a94('0x2'),_0x7a94('0x2f'),_0x7a94('0x30')]},{'model':_0x7a94('0x31'),'as':_0x7a94('0x32'),'attributes':['id','name']},{'model':_0x7a94('0x2e'),'as':'TrunkBackup','attributes':['id','name',_0x7a94('0x2f'),_0x7a94('0x30')]},{'model':'Interval','as':_0x7a94('0x33'),'attributes':['id',_0x7a94('0x2')],'include':[{'model':_0x7a94('0x33'),'as':_0x7a94('0x34'),'attributes':['id',_0x7a94('0x2'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index b94c24c..5f3fe55 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(_0x15aa4a,_0x4d472a){var _0x40454c=function(_0x531087){while(--_0x531087){_0x15aa4a['push'](_0x15aa4a['shift']());}};_0x40454c(++_0x4d472a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xa9e0[_0x46aff0];return _0x9d78cf;};'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(_0x1fed1a,_0x237534){var _0x3fec2d=function(_0x202a55){while(--_0x202a55){_0x1fed1a['push'](_0x1fed1a['shift']());}};_0x3fec2d(++_0x237534);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xa9e0[_0x4154a6];return _0x3b2786;};'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 17ecf56..ca261cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b72=['getVoiceQueueRtPauses','Request','../client'];(function(_0x45c981,_0x2ad2d4){var _0x4f62c8=function(_0x55209b){while(--_0x55209b){_0x45c981['push'](_0x45c981['shift']());}};_0x4f62c8(++_0x2ad2d4);}(_0x8b72,0x89));var _0x28b7=function(_0x2743d3,_0x501919){_0x2743d3=_0x2743d3-0x0;var _0x4beae3=_0x8b72[_0x2743d3];return _0x4beae3;};'use strict';var client=require(_0x28b7('0x0'));exports[_0x28b7('0x1')]=function(_0x381d08){return function(){return client[_0x28b7('0x2')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x381d08,'paused':!![]},'raw':!![]},'log':_0x28b7('0x1')});};};
\ No newline at end of file
+var _0xbbff=['getVoiceQueueRtPauses','../client','Request'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xbbff,0x1a2));var _0xfbbf=function(_0x3155f8,_0x11b9bf){_0x3155f8=_0x3155f8-0x0;var _0x3822ee=_0xbbff[_0x3155f8];return _0x3822ee;};'use strict';var client=require(_0xfbbf('0x0'));exports['getVoiceQueueRtPauses']=function(_0x22c03e){return function(){return client[_0xfbbf('0x1')]('GetVoiceQueueRtPauses',{'options':{'where':{'VoiceQueueId':_0x22c03e,'paused':!![]},'raw':!![]},'log':_0xfbbf('0x2')});};};
\ No newline at end of file
index df6edf6..43f731b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x3eb254,_0xadd1c3){var _0x5da5bb=function(_0x42547a){while(--_0x42547a){_0x3eb254['push'](_0x3eb254['shift']());}};_0x5da5bb(++_0xadd1c3);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x382d56,_0x4d4da6){var _0x59f6f3=function(_0x20cbe6){while(--_0x20cbe6){_0x382d56['push'](_0x382d56['shift']());}};_0x59f6f3(++_0x4d4da6);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 09d56fe..2ad5bd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf04f=['transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers','Request','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','CreateVoiceTransferReport','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','transfertargetcalleridnum','transfertargetcalleridname'];(function(_0x55ce6e,_0x34d72e){var _0x5b26ad=function(_0x2b4d9e){while(--_0x2b4d9e){_0x55ce6e['push'](_0x55ce6e['shift']());}};_0x5b26ad(++_0x34d72e);}(_0xf04f,0x181));var _0xff04=function(_0x2ca9d4,_0x51d5c6){_0x2ca9d4=_0x2ca9d4-0x0;var _0x258956=_0xf04f[_0x2ca9d4];return _0x258956;};'use strict';var client=require(_0xff04('0x0'));exports[_0xff04('0x1')]={};exports['blindTransfer']=function(_0x12669b){return client[_0xff04('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x12669b[_0xff04('0x3')],'transfererchannel':_0x12669b[_0xff04('0x4')],'transferercalleridnum':_0x12669b[_0xff04('0x5')],'transferercalleridname':_0x12669b[_0xff04('0x6')],'transfererconnectedlinenum':_0x12669b[_0xff04('0x7')],'transfererconnectedlinename':_0x12669b[_0xff04('0x8')],'transfereraccountcode':_0x12669b['transfereraccountcode'],'transferercontext':_0x12669b[_0xff04('0x9')],'transfererexten':_0x12669b[_0xff04('0xa')],'transfererlinkedid':_0x12669b[_0xff04('0xb')],'transfereechannel':_0x12669b[_0xff04('0xc')],'transfereecalleridnum':_0x12669b[_0xff04('0xd')],'transfereecalleridname':_0x12669b['transfereecalleridname'],'transfereeconnectedlinenum':_0x12669b[_0xff04('0xe')],'transfereeconnectedlinename':_0x12669b[_0xff04('0xf')],'transfereeaccountcode':_0x12669b['transfereeaccountcode'],'transfereecontext':_0x12669b[_0xff04('0x10')],'transfereeexten':_0x12669b[_0xff04('0x11')],'transfereelinkedid':_0x12669b[_0xff04('0x12')],'isexternal':_0x12669b[_0xff04('0x13')],'context':_0x12669b[_0xff04('0x14')],'extension':_0x12669b[_0xff04('0x15')],'type':_0xff04('0x16')},'log':'CreateVoiceTransferReport'});};exports[_0xff04('0x17')]=function(_0x43fe8f){return client[_0xff04('0x2')](_0xff04('0x18'),{'body':{'result':_0x43fe8f[_0xff04('0x3')],'transfererchannel':_0x43fe8f[_0xff04('0x19')],'transferercalleridnum':_0x43fe8f[_0xff04('0x1a')],'transferercalleridname':_0x43fe8f[_0xff04('0x1b')],'transfererconnectedlinenum':_0x43fe8f[_0xff04('0x1c')],'transfererconnectedlinename':_0x43fe8f[_0xff04('0x1d')],'transfereraccountcode':_0x43fe8f[_0xff04('0x1e')],'transferercontext':_0x43fe8f[_0xff04('0x1f')],'transfererexten':_0x43fe8f[_0xff04('0x20')],'transfererlinkedid':_0x43fe8f['origtransfererlinkedid'],'transfereechannel':_0x43fe8f['transfertargetchannel'],'transfereecalleridnum':_0x43fe8f[_0xff04('0x21')],'transfereecalleridname':_0x43fe8f[_0xff04('0x22')],'transfereeconnectedlinenum':_0x43fe8f[_0xff04('0x23')],'transfereeconnectedlinename':_0x43fe8f[_0xff04('0x24')],'transfereeaccountcode':_0x43fe8f['transfertargetaccountcode'],'transfereecontext':_0x43fe8f[_0xff04('0x25')],'transfereeexten':_0x43fe8f['transfertargetexten'],'transfereelinkedid':_0x43fe8f[_0xff04('0x26')],'isexternal':_0x43fe8f['isexternal'],'context':_0x43fe8f[_0xff04('0x27')],'extension':_0x43fe8f[_0xff04('0x28')],'type':_0xff04('0x29')},'log':_0xff04('0x18')});};
\ No newline at end of file
+var _0xa2b5=['transfertargetcontext','origtransfererexten','attended','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererexten','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum','transfereeconnectedlinename','transfereecontext','transfereeexten','isexternal','context','extension','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa2b5,0x75));var _0x5a2b=function(_0x2e445b,_0x1d1aa0){_0x2e445b=_0x2e445b-0x0;var _0x40317a=_0xa2b5[_0x2e445b];return _0x40317a;};'use strict';var client=require(_0x5a2b('0x0'));exports[_0x5a2b('0x1')]={};exports[_0x5a2b('0x2')]=function(_0xa90b2a){return client[_0x5a2b('0x3')](_0x5a2b('0x4'),{'body':{'result':_0xa90b2a[_0x5a2b('0x5')],'transfererchannel':_0xa90b2a[_0x5a2b('0x6')],'transferercalleridnum':_0xa90b2a['transferercalleridnum'],'transferercalleridname':_0xa90b2a[_0x5a2b('0x7')],'transfererconnectedlinenum':_0xa90b2a[_0x5a2b('0x8')],'transfererconnectedlinename':_0xa90b2a[_0x5a2b('0x9')],'transfereraccountcode':_0xa90b2a[_0x5a2b('0xa')],'transferercontext':_0xa90b2a['transferercontext'],'transfererexten':_0xa90b2a[_0x5a2b('0xb')],'transfererlinkedid':_0xa90b2a['transfererlinkedid'],'transfereechannel':_0xa90b2a[_0x5a2b('0xc')],'transfereecalleridnum':_0xa90b2a[_0x5a2b('0xd')],'transfereecalleridname':_0xa90b2a['transfereecalleridname'],'transfereeconnectedlinenum':_0xa90b2a[_0x5a2b('0xe')],'transfereeconnectedlinename':_0xa90b2a[_0x5a2b('0xf')],'transfereeaccountcode':_0xa90b2a['transfereeaccountcode'],'transfereecontext':_0xa90b2a[_0x5a2b('0x10')],'transfereeexten':_0xa90b2a[_0x5a2b('0x11')],'transfereelinkedid':_0xa90b2a['transfereelinkedid'],'isexternal':_0xa90b2a[_0x5a2b('0x12')],'context':_0xa90b2a[_0x5a2b('0x13')],'extension':_0xa90b2a[_0x5a2b('0x14')],'type':'blind'},'log':_0x5a2b('0x4')});};exports[_0x5a2b('0x15')]=function(_0x3fc6c6){return client[_0x5a2b('0x3')](_0x5a2b('0x4'),{'body':{'result':_0x3fc6c6[_0x5a2b('0x5')],'transfererchannel':_0x3fc6c6[_0x5a2b('0x16')],'transferercalleridnum':_0x3fc6c6[_0x5a2b('0x17')],'transferercalleridname':_0x3fc6c6[_0x5a2b('0x18')],'transfererconnectedlinenum':_0x3fc6c6[_0x5a2b('0x19')],'transfererconnectedlinename':_0x3fc6c6[_0x5a2b('0x1a')],'transfereraccountcode':_0x3fc6c6[_0x5a2b('0x1b')],'transferercontext':_0x3fc6c6[_0x5a2b('0x1c')],'transfererexten':_0x3fc6c6[_0x5a2b('0x1d')],'transfererlinkedid':_0x3fc6c6[_0x5a2b('0x1e')],'transfereechannel':_0x3fc6c6['transfertargetchannel'],'transfereecalleridnum':_0x3fc6c6[_0x5a2b('0x1f')],'transfereecalleridname':_0x3fc6c6[_0x5a2b('0x20')],'transfereeconnectedlinenum':_0x3fc6c6[_0x5a2b('0x21')],'transfereeconnectedlinename':_0x3fc6c6[_0x5a2b('0x22')],'transfereeaccountcode':_0x3fc6c6['transfertargetaccountcode'],'transfereecontext':_0x3fc6c6[_0x5a2b('0x23')],'transfereeexten':_0x3fc6c6['transfertargetexten'],'transfereelinkedid':_0x3fc6c6['transfertargetlinkedid'],'isexternal':_0x3fc6c6[_0x5a2b('0x12')],'context':_0x3fc6c6['origtransferercontext'],'extension':_0x3fc6c6[_0x5a2b('0x24')],'type':_0x5a2b('0x25')},'log':_0x5a2b('0x4')});};
\ No newline at end of file
index 230644e..9aa0ee9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd4=['sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','length','find','omit','undefined','values','channels','voicechannel','map','channel','filename','uniqueid','MixMonitor','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','Channel\x20doesn\x27t\x20exist','destinationchannel','StopMixMonitor','stop','%s.%s','wav','status','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','voicequeuechannelredirect','exten','context','trunks','outboundChannels','run','custom:','event','faxAccounts','send','server','listen','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','../../../config/environment','../properties','../ami','format','SIP','name','timers','timer','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','message','catch','command','Command','content','voiceQueues','hasOwnProperty','answered','loggedIn','pTalking'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x9fd4,0x16c));var _0x49fd=function(_0x104377,_0x54b94c){_0x104377=_0x104377-0x0;var _0x1fac22=_0x9fd4[_0x104377];return _0x1fac22;};'use strict';var _=require(_0x49fd('0x0'));var util=require(_0x49fd('0x1'));var jayson=require(_0x49fd('0x2'));var schema=require(_0x49fd('0x3'));var BPromise=require(_0x49fd('0x4'));var moment=require(_0x49fd('0x5'));var config=require(_0x49fd('0x6'));var properties=require(_0x49fd('0x7'));var ami=require(_0x49fd('0x8'));exports['listen']=function(_0x481f6a,_0x3b4b46,_0x42fdc7){return new BPromise(function(_0x1bc16e,_0x9353cd){var _0x48b999={'QueuePause':function(_0x14bb94){return new Promise(function(_0x461ac1,_0x36f605){var _0x3bf3fd=util[_0x49fd('0x9')]('%s/%s',_0x49fd('0xa'),_0x14bb94[_0x49fd('0xb')]);if(_0x481f6a[_0x49fd('0xc')]&&_0x481f6a[_0x49fd('0xc')][_0x3bf3fd]&&_0x481f6a[_0x49fd('0xc')][_0x3bf3fd][_0x49fd('0xd')]){_0x481f6a[_0x49fd('0xc')][_0x3bf3fd]['updateAcw']();}if(_0x481f6a[_0x49fd('0xe')][_0x3bf3fd]){_0x481f6a[_0x49fd('0xe')][_0x3bf3fd][_0x49fd('0xf')]({'statePause':_0x14bb94[_0x49fd('0x10')]?!![]:![]});}_0x461ac1({'code':0xc8,'message':_0x49fd('0x11')});});},'Reload':function(_0x206bd8){var _0x26f2c1=this;return new Promise(function(_0x3fa518,_0x1d900b){if(ami[_0x49fd('0x12')]()==![]){return _0x1d900b(_0x26f2c1[_0x49fd('0x13')](0x1f4,[config[_0x49fd('0x14')]['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')][_0x49fd('0x17')]('\x20')));}_0x206bd8=_[_0x49fd('0x18')](_0x206bd8,_[_0x49fd('0x19')](properties[_0x49fd('0x1a')]));_0x206bd8[_0x49fd('0x1b')]=_0x49fd('0x1c');return ami[_0x49fd('0x1d')](_0x206bd8)[_0x49fd('0x1e')](function(_0x475eee){_0x3fa518({'code':0xc8,'message':_0x475eee[_0x49fd('0x1f')]});})[_0x49fd('0x20')](function(_0x598793){_0x1d900b(_0x26f2c1[_0x49fd('0x13')](0x1f5,_0x598793[_0x49fd('0x1f')]));});});},'Command':function(_0x59a407){var _0x5c323a=this;return new Promise(function(_0x449c9a,_0x53cbd1){if(ami[_0x49fd('0x12')]()==![]){return _0x53cbd1(_0x5c323a[_0x49fd('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],'ami\x20disconnected'][_0x49fd('0x17')]('\x20')));}_0x59a407=_[_0x49fd('0x18')](_0x59a407,_0x49fd('0x21'));_0x59a407[_0x49fd('0x1b')]=_0x49fd('0x22');return ami[_0x49fd('0x1d')](_0x59a407)['then'](function(_0x46019d){_0x449c9a({'code':0xc8,'message':_0x46019d[_0x49fd('0x23')]});})[_0x49fd('0x20')](function(_0x4bf811){_0x53cbd1(_0x5c323a[_0x49fd('0x13')](0x1f5,_0x4bf811[_0x49fd('0x1f')]));});});},'VoiceQueues':function(_0x146d55){return new Promise(function(_0x4bff4c,_0x597161){var _0x497469=[];for(var _0x13c5a8 in _0x481f6a[_0x49fd('0x24')]){if(_0x481f6a[_0x49fd('0x24')][_0x49fd('0x25')](_0x13c5a8)){var _0x9587b9=_0x481f6a[_0x49fd('0x24')][_0x13c5a8];var _0x20873e={'id':_0x9587b9['id'],'name':_0x9587b9[_0x49fd('0xb')],'strategy':_0x9587b9['strategy'],'answered':_0x9587b9[_0x49fd('0x26')],'available':_0x9587b9['available'],'loggedIn':_0x9587b9[_0x49fd('0x27')],'pTalking':_0x9587b9[_0x49fd('0x28')],'sumBillable':_0x9587b9['sumBillable'],'sumDuration':_0x9587b9[_0x49fd('0x29')],'sumHoldTime':_0x9587b9[_0x49fd('0x2a')]||0x0,'talking':_0x9587b9[_0x49fd('0x2b')],'total':_0x9587b9[_0x49fd('0x2c')],'type':_0x9587b9[_0x49fd('0x2d')],'unmanaged':_0x9587b9[_0x49fd('0x2e')],'abandoned':_0x9587b9[_0x49fd('0x2f')],'waiting':_0x9587b9[_0x49fd('0x30')],'loggedInDb':_0x9587b9['loggedInDb']};if(_0x9587b9[_0x49fd('0x2d')]==='outbound'){_0x20873e[_0x49fd('0x31')]=_0x9587b9['dialActive'];_0x20873e[_0x49fd('0x32')]=_0x9587b9[_0x49fd('0x32')];_0x20873e[_0x49fd('0x33')]=_0x9587b9['dialOriginateCallerIdName'];_0x20873e['dialOriginateCallerIdNumber']=_0x9587b9['dialOriginateCallerIdNumber'];_0x20873e[_0x49fd('0x34')]=_0x9587b9[_0x49fd('0x34')];_0x20873e['dialPrefix']=_0x9587b9[_0x49fd('0x35')];_0x20873e['temp']=_0x9587b9['temp'];_0x20873e[_0x49fd('0x36')]=_0x9587b9[_0x49fd('0x36')];_0x20873e[_0x49fd('0x37')]=_0x9587b9[_0x49fd('0x37')];_0x20873e[_0x49fd('0x38')]=_0x9587b9['outboundBlacklistCallsDay'];_0x20873e['outboundBusyCallsDay']=_0x9587b9[_0x49fd('0x39')];_0x20873e[_0x49fd('0x3a')]=_0x9587b9[_0x49fd('0x3a')];_0x20873e[_0x49fd('0x3b')]=_0x9587b9['outboundDropCallsDayACS'];_0x20873e[_0x49fd('0x3c')]=_0x9587b9[_0x49fd('0x3c')];_0x20873e[_0x49fd('0x3d')]=_0x9587b9[_0x49fd('0x3d')];_0x20873e[_0x49fd('0x3e')]=_0x9587b9[_0x49fd('0x3e')];_0x20873e[_0x49fd('0x3f')]=_0x9587b9[_0x49fd('0x3f')];_0x20873e[_0x49fd('0x40')]=_0x9587b9[_0x49fd('0x40')];_0x20873e[_0x49fd('0x41')]=_0x9587b9['outboundReCallsDay'];_0x20873e[_0x49fd('0x42')]=_0x9587b9[_0x49fd('0x42')];_0x20873e[_0x49fd('0x43')]=_0x9587b9[_0x49fd('0x43')];_0x20873e[_0x49fd('0x44')]=_0x9587b9[_0x49fd('0x44')];_0x20873e[_0x49fd('0x45')]=_0x9587b9[_0x49fd('0x45')];_0x20873e[_0x49fd('0x46')]=_0x9587b9['predictiveIntervalAvgTalktime'];_0x20873e[_0x49fd('0x47')]=_0x9587b9['predictiveIntervalDroppedCallsCallersExit'];_0x20873e[_0x49fd('0x48')]=_0x9587b9[_0x49fd('0x48')];_0x20873e['predictiveIntervalErlangCalls']=_0x9587b9[_0x49fd('0x49')];_0x20873e[_0x49fd('0x4a')]=_0x9587b9['predictiveIntervalErlangCallsDroppedCalls'];_0x20873e[_0x49fd('0x4b')]=_0x9587b9['predictiveIntervalHitRate'];_0x20873e['predictiveIntervalMultiplicativeFactor']=_0x9587b9['predictiveIntervalMultiplicativeFactor'];_0x20873e[_0x49fd('0x4c')]=_0x9587b9[_0x49fd('0x4c')];_0x20873e[_0x49fd('0x4d')]=_0x9587b9[_0x49fd('0x4d')];_0x20873e['predictiveIntervalTotalCalls']=_0x9587b9[_0x49fd('0x4e')];_0x20873e[_0x49fd('0x1f')]=_0x9587b9[_0x49fd('0x1f')];_0x20873e[_0x49fd('0x4f')]=_0x9587b9[_0x49fd('0x4f')];_0x20873e[_0x49fd('0x50')]=_0x9587b9[_0x49fd('0x50')];_0x20873e[_0x49fd('0x51')]=_0x9587b9['erlangCallToSecond'];_0x20873e[_0x49fd('0x52')]=_0x9587b9[_0x49fd('0x52')];_0x20873e['erlangBusyFactor']=_0x9587b9[_0x49fd('0x53')];_0x20873e[_0x49fd('0x54')]=_0x9587b9['startPredictive'];_0x20873e[_0x49fd('0x55')]=_0x9587b9['startProgressive'];}if(_0x9587b9[_0x49fd('0x56')]){_0x20873e[_0x49fd('0x56')]={'id':_0x9587b9[_0x49fd('0x56')]['id'],'name':_0x9587b9[_0x49fd('0x56')]['name'],'active':_0x9587b9['Trunk'][_0x49fd('0x57')],'callerid':_0x9587b9['Trunk'][_0x49fd('0x58')]};}if(_0x9587b9[_0x49fd('0x59')]){_0x20873e[_0x49fd('0x59')]={'id':_0x9587b9[_0x49fd('0x59')]['id'],'name':_0x9587b9['Interval'][_0x49fd('0xb')]};}_0x497469[_0x49fd('0x5a')](_0x20873e);}}_0x4bff4c({'count':_0x497469[_0x49fd('0x5b')],'rows':_0x497469});});},'UpdateVoiceQueue':function(_0x8d4b0b){return new Promise(function(_0x24705e,_0x30937f){var _0x231c08=_[_0x49fd('0x5c')](_0x481f6a[_0x49fd('0x24')],{'id':parseInt(_0x8d4b0b['id'])});var _0xa4a3b7=_[_0x49fd('0x5d')](_0x8d4b0b,['id']);if(_0x231c08){for(var _0x312344 in _0xa4a3b7){if(typeof _0xa4a3b7[_0x312344]!==_0x49fd('0x5e')&&typeof _0x231c08[_0x312344]!==_0x49fd('0x5e')){_0x231c08[_0x312344]=_0xa4a3b7[_0x312344];}}_0x24705e(_0x231c08);}else{_0x30937f();}});},'VoiceChannels':function(_0x58c7eb){return new Promise(function(_0x4fc625,_0x6960ad){var _0xa3518f=_[_0x49fd('0x5f')](_0x481f6a[_0x49fd('0x60')]);_0x4fc625({'count':_0xa3518f['length'],'rows':_0xa3518f});});},'VoiceChannelMixMonitor':function(_0x23e5f2){var _0x3ae66a=this;return new Promise(function(_0x4b28fa,_0x341728){if(ami[_0x49fd('0x12')]()==![]){return _0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f4,[config[_0x49fd('0x14')]['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')][_0x49fd('0x17')]('\x20')));}var _0x215b76=schema(properties[_0x49fd('0x61')])[_0x49fd('0x3')](_0x23e5f2);if(_0x215b76['length']>0x0){return _0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x215b76,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x23457c=_[_0x49fd('0x5c')](_0x481f6a['channels'],{'uniqueid':_0x23e5f2['uniqueid']});if(_0x23457c&&_0x23457c[_0x49fd('0x63')]){var _0x765bca=util[_0x49fd('0x9')]('%s.%s',_0x23e5f2[_0x49fd('0x64')]||_0x23e5f2[_0x49fd('0x65')],_0x23e5f2['format']||'wav');return ami['Action']({'action':_0x49fd('0x66'),'channel':_0x23457c['channel'],'file':_0x765bca,'options':'ai(mixmonitorid)'})['then'](function(_0x37860b){var _0x46d467=_[_0x49fd('0x5c')](_0x23457c[_0x49fd('0x67')],{'filename':_0x49fd('0x68')+_0x765bca[_0x49fd('0x69')]()});if(_[_0x49fd('0x6a')](_0x46d467)){_0x23457c[_0x49fd('0x67')][_0x49fd('0x5a')]({'filename':_0x49fd('0x68')+_0x765bca['toLowerCase'](),'createdAt':moment()[_0x49fd('0x9')](_0x49fd('0x6b')),'mixmonitorid':_0x37860b[_0x49fd('0x6c')],'status':_0x49fd('0x6d')});}else{_0x46d467[_0x49fd('0x6c')]=_0x37860b[_0x49fd('0x6c')];_0x46d467['status']=_0x49fd('0x6d');}_0x4b28fa({'code':0xc8,'message':[_0x23e5f2[_0x49fd('0x65')],'MixMonitor\x20Success',_0x37860b['mixmonitorid']][_0x49fd('0x17')]('\x20'),'mixmonitorid':_0x37860b['mixmonitorid']});})[_0x49fd('0x20')](function(_0x575bc5){_0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f5,[_0x23e5f2['uniqueid'],_0x575bc5[_0x49fd('0x1f')][_0x49fd('0x69')]()]['join']('\x20')));});}else{return _0x341728(_0x3ae66a[_0x49fd('0x13')](0x1f5,_0x49fd('0x6e')));}});},'VoiceChannelStopMixMonitor':function(_0x275a68){var _0x40f3bc=this;return new Promise(function(_0x1b7992,_0x41da82){if(ami[_0x49fd('0x12')]()==![]){return _0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')]['join']('\x20')));}var _0x34613d=schema(properties[_0x49fd('0x61')])[_0x49fd('0x3')](_0x275a68);if(_0x34613d[_0x49fd('0x5b')]>0x0){return _0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x34613d,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x61d98c=_['find'](_0x481f6a[_0x49fd('0x60')],{'uniqueid':_0x275a68[_0x49fd('0x65')]});if(_0x61d98c){return BPromise['resolve']()[_0x49fd('0x1e')](function(){if(_0x61d98c[_0x49fd('0x63')]){return ami['Action']({'action':'StopMixMonitor','channel':_0x61d98c['channel'],'mixmonitorid':_0x275a68[_0x49fd('0x6c')]})[_0x49fd('0x20')](function(_0x410bbe){});}})[_0x49fd('0x1e')](function(){if(_0x61d98c[_0x49fd('0x6f')]){return ami['Action']({'action':_0x49fd('0x70'),'channel':_0x61d98c['destinationchannel'],'mixmonitorid':_0x275a68[_0x49fd('0x6c')]})['catch'](function(_0x1e5279){});}})[_0x49fd('0x1e')](function(_0x234e2a){var _0x1cd930=_['find'](_0x61d98c[_0x49fd('0x67')],{'mixmonitorid':_0x275a68[_0x49fd('0x6c')]});if(_0x1cd930){_0x1cd930['status']=_0x49fd('0x71');}})[_0x49fd('0x1e')](function(){var _0xc3cddd=util['format'](_0x49fd('0x72'),_0x275a68[_0x49fd('0x64')]||_0x275a68[_0x49fd('0x65')],_0x275a68[_0x49fd('0x9')]||_0x49fd('0x73'));var _0x330c6d=_['find'](_0x61d98c['monitors'],{'filename':_0x49fd('0x68')+_0xc3cddd[_0x49fd('0x69')]()});if(_0x330c6d){_0x330c6d[_0x49fd('0x74')]=_0x49fd('0x71');}})[_0x49fd('0x1e')](function(){_0x1b7992({'code':0xc8,'message':[_0x275a68[_0x49fd('0x65')],_0x49fd('0x75')][_0x49fd('0x17')]('\x20')});})[_0x49fd('0x20')](function(_0x3cb9e9){_0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f5,[_0x275a68[_0x49fd('0x65')],_0x3cb9e9[_0x49fd('0x1f')]['toLowerCase']()][_0x49fd('0x17')]('\x20')));});}else{return _0x41da82(_0x40f3bc[_0x49fd('0x13')](0x1f5,_0x49fd('0x6e')));}});},'VoiceQueuesChannels':function(_0x561e58){return new Promise(function(_0x545603,_0x3a9985){var _0x1be81d=_[_0x49fd('0x5f')](_0x481f6a['queueChannels']);_0x545603({'count':_0x1be81d[_0x49fd('0x5b')],'rows':_0x1be81d});});},'VoiceQueuesChannel':function(_0x161767){var _0x162b84=this;return new Promise(function(_0x3ce72c,_0x1a3555){var _0x24ad9f=schema(properties[_0x49fd('0x76')])['validate'](_0x161767);if(_0x24ad9f['length']>0x0){return _0x1a3555(_0x162b84[_0x49fd('0x13')](0x1f4,_['map'](_0x24ad9f,_0x49fd('0x1f'))['join'](',\x20')));}var _0x593346=_['find'](_0x481f6a[_0x49fd('0x77')],{'uniqueid':_0x161767[_0x49fd('0x65')]});if(_0x593346){_0x3ce72c(_0x593346);}else{return _0x1a3555(_0x162b84['error'](0x1f5,_0x49fd('0x6e')));}});},'VoiceQueuesChannelHangup':function(_0x3bca7b){var _0x4c3a12=this;return new Promise(function(_0x67f0f5,_0x2ba14a){if(ami['isConnected']()==![]){return _0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],'ami\x20disconnected'][_0x49fd('0x17')]('\x20')));}var _0x27132c=schema(properties['voicequeuechannelhangup'])[_0x49fd('0x3')](_0x3bca7b);if(_0x27132c[_0x49fd('0x5b')]>0x0){return _0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x27132c,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x1ffd5f=_[_0x49fd('0x5c')](_0x481f6a['queueChannels'],{'uniqueid':_0x3bca7b['uniqueid']});if(_0x1ffd5f&&_0x1ffd5f[_0x49fd('0x63')]){return ami[_0x49fd('0x1d')]({'action':'Hangup','channel':_0x1ffd5f[_0x49fd('0x63')]})[_0x49fd('0x1e')](function(_0x5a2794){_0x67f0f5({'code':0xc8,'message':[_0x3bca7b[_0x49fd('0x65')],_0x5a2794[_0x49fd('0x1f')][_0x49fd('0x69')]()][_0x49fd('0x17')]('\x20')});})['catch'](function(_0x33c908){_0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f5,[_0x3bca7b[_0x49fd('0x65')],_0x33c908[_0x49fd('0x1f')][_0x49fd('0x69')]()][_0x49fd('0x17')]('\x20')));});}else{return _0x2ba14a(_0x4c3a12[_0x49fd('0x13')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x1d04d5){var _0x31dec5=this;return new Promise(function(_0x3c86dc,_0x373ce0){if(ami[_0x49fd('0x12')]()==![]){return _0x373ce0(_0x31dec5[_0x49fd('0x13')](0x1f4,[config[_0x49fd('0x14')]['ip'],config[_0x49fd('0x14')][_0x49fd('0x15')],_0x49fd('0x16')][_0x49fd('0x17')]('\x20')));}var _0x40c089=schema(properties[_0x49fd('0x78')])[_0x49fd('0x3')](_0x1d04d5);if(_0x40c089[_0x49fd('0x5b')]>0x0){return _0x373ce0(_0x31dec5[_0x49fd('0x13')](0x1f4,_[_0x49fd('0x62')](_0x40c089,_0x49fd('0x1f'))[_0x49fd('0x17')](',\x20')));}var _0x1ba291=_['find'](_0x481f6a[_0x49fd('0x77')],{'uniqueid':_0x1d04d5['uniqueid']});if(_0x1ba291&&_0x1ba291[_0x49fd('0x63')]){return ami[_0x49fd('0x1d')]({'action':'Redirect','channel':_0x1ba291['channel'],'exten':_0x1d04d5[_0x49fd('0x79')],'context':_0x1d04d5[_0x49fd('0x7a')]||_0x1ba291[_0x49fd('0x7a')],'priority':0x1})['then'](function(_0x1c0136){_0x3c86dc({'code':0xc8,'message':[_0x1d04d5['uniqueid'],_0x1c0136[_0x49fd('0x1f')][_0x49fd('0x69')]()]['join']('\x20')});})['catch'](function(_0x51afb5){_0x373ce0(_0x31dec5[_0x49fd('0x13')](0x1f5,[_0x1d04d5['uniqueid'],_0x51afb5[_0x49fd('0x1f')][_0x49fd('0x69')]()][_0x49fd('0x17')]('\x20')));});}else{return _0x373ce0(_0x31dec5['error'](0x1f5,_0x49fd('0x6e')));}});},'Agents':function(_0x5b49e8){return new Promise(function(_0xceaa75,_0x24315e){var _0x58d948=_[_0x49fd('0x5f')](_0x481f6a[_0x49fd('0xe')]);_0xceaa75({'count':_0x58d948[_0x49fd('0x5b')],'rows':_0x58d948});});},'Telephones':function(_0x5e73a7){return new Promise(function(_0x1f3678,_0x3b91d0){var _0x3f063e=_[_0x49fd('0x5f')](_0x481f6a['telephones']);_0x1f3678({'count':_0x3f063e[_0x49fd('0x5b')],'rows':_0x3f063e});});},'Trunks':function(_0x268029){return new Promise(function(_0x9fbe94,_0x232f6f){var _0x5ec8ac=_['values'](_0x481f6a[_0x49fd('0x7b')]);_0x9fbe94({'count':_0x5ec8ac['length'],'rows':_0x5ec8ac});});},'OutboundChannels':function(_0x365d33){return new Promise(function(_0x3b2ac0,_0x377d62){var _0x25457f=_['values'](_0x481f6a[_0x49fd('0x7c')]);_0x3b2ac0({'count':_0x25457f[_0x49fd('0x5b')],'rows':_0x25457f});});},'Outbound':function(_0x574e8a){return new Promise(function(_0x557189,_0x20f97d){_0x557189(_0x481f6a['outbound']);});},'Campaigns':function(_0x2b506c){return new Promise(function(_0x30c38c,_0x2a4af6){var _0x4dc0bd=_[_0x49fd('0x5f')](_0x481f6a['campaigns']);_0x30c38c({'count':_0x4dc0bd[_0x49fd('0x5b')],'rows':_0x4dc0bd});});},'VoiceQueuesPreview':function(_0x5d638d){var _0x156f8e=this;return new Promise(function(_0x5f02fa,_0x5c28d7){_0x3b4b46[_0x49fd('0x7d')](_0x5d638d['id'])['then'](function(_0x36f200){_0x5f02fa({'code':0xc8,'message':_0x36f200[_0x49fd('0x1f')]});})[_0x49fd('0x20')](function(_0x5e1943){_0x5c28d7(_0x156f8e[_0x49fd('0x13')](0x1f4,_0x5e1943['message']));});});},'EventManager':function(_0x1deda5){var _0x59a9e8=this;return new Promise(function(_0x25bb21,_0x4b53d0){if(!_0x1deda5['event']){return _0x4b53d0(_0x59a9e8['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x49fd('0x7e')+_0x1deda5[_0x49fd('0x7f')],_0x1deda5[_0x49fd('0x1f')]);_0x25bb21({'code':0xc8,'message':_0x1deda5});});},'FaxAccounts':function(_0x5a6c59){return new Promise(function(_0x78a4de,_0x40d20e){var _0x20326b=_['values'](_0x481f6a[_0x49fd('0x80')]);_0x78a4de({'count':_0x20326b['length'],'rows':_0x20326b});});},'SendFax':function(_0x574fdc){var _0x485396=this;return new Promise(function(_0xd23a0a,_0x148a2b){_0x42fdc7[_0x49fd('0x81')](_0x574fdc)[_0x49fd('0x1e')](function(_0x232bab){_0xd23a0a({'code':0xc8,'message':_0x232bab[_0x49fd('0x1f')]});})[_0x49fd('0x20')](function(_0x265b81){_0x148a2b(_0x485396['error'](0x1f4,_0x265b81[_0x49fd('0x1f')]));});});},'CheckAfterSend':function(_0x11b242){var _0x4997e6=this;return new Promise(function(_0x30c14a,_0x47bba4){_0x42fdc7['checkAfterSend'](_0x11b242)[_0x49fd('0x1e')](function(_0x206543){_0x30c14a({'code':0xc8,'message':_0x206543['message']});})[_0x49fd('0x20')](function(_0xe9596f){_0x47bba4(_0x4997e6[_0x49fd('0x13')](0x1f4,_0xe9596f[_0x49fd('0x1f')]));});});}};var _0x45153b=jayson[_0x49fd('0x82')](_0x48b999)['http']();_0x45153b['on']('error',function(_0x549914){return _0x9353cd(_0x549914);});_0x45153b[_0x49fd('0x83')](0x232a,'127.0.0.1',function(){console[_0x49fd('0x84')](_0x49fd('0x85'),0x232a);return _0x1bc16e(_0x49fd('0x86')+0x232a);});});};
\ No newline at end of file
+var _0xc4aa=['push','length','find','omit','undefined','values','channels','map','uniqueid','%s.%s','filename','wav','MixMonitor','channel','toLowerCase','isNil','/var/spool/asterisk/monitor/','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','monitors','stop','queueChannels','Redirect','exten','context','telephones','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','moment','listen','format','%s/%s','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','module','action','Reload','Action','then','message','catch','command','content','voiceQueues','hasOwnProperty','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','total','type','unmanaged','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','Interval'];(function(_0x4e738a,_0x516ef5){var _0x101899=function(_0x36c932){while(--_0x36c932){_0x4e738a['push'](_0x4e738a['shift']());}};_0x101899(++_0x516ef5);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0xc4aa[_0x255d5b];return _0x3e141a;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var jayson=require(_0xac4a('0x2'));var schema=require(_0xac4a('0x3'));var BPromise=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var config=require('../../../config/environment');var properties=require('../properties');var ami=require('../ami');exports[_0xac4a('0x6')]=function(_0x15b967,_0x730a38,_0x215f39){return new BPromise(function(_0x96be2b,_0x15cd34){var _0x3ef77c={'QueuePause':function(_0x10525b){return new Promise(function(_0x5c6179,_0x5b8339){var _0x1aba6d=util[_0xac4a('0x7')](_0xac4a('0x8'),'SIP',_0x10525b[_0xac4a('0x9')]);if(_0x15b967[_0xac4a('0xa')]&&_0x15b967[_0xac4a('0xa')][_0x1aba6d]&&_0x15b967['timers'][_0x1aba6d][_0xac4a('0xb')]){_0x15b967['timers'][_0x1aba6d][_0xac4a('0xc')]();}if(_0x15b967['agents'][_0x1aba6d]){_0x15b967[_0xac4a('0xd')][_0x1aba6d][_0xac4a('0xe')]({'statePause':_0x10525b[_0xac4a('0xf')]?!![]:![]});}_0x5c6179({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x21a79){var _0x68424a=this;return new Promise(function(_0x247b78,_0x6e00d4){if(ami[_0xac4a('0x10')]()==![]){return _0x6e00d4(_0x68424a[_0xac4a('0x11')](0x1f4,[config[_0xac4a('0x12')]['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}_0x21a79=_[_0xac4a('0x16')](_0x21a79,_['keys'](properties[_0xac4a('0x17')]));_0x21a79[_0xac4a('0x18')]=_0xac4a('0x19');return ami[_0xac4a('0x1a')](_0x21a79)[_0xac4a('0x1b')](function(_0x387a54){_0x247b78({'code':0xc8,'message':_0x387a54[_0xac4a('0x1c')]});})[_0xac4a('0x1d')](function(_0x546c5d){_0x6e00d4(_0x68424a['error'](0x1f5,_0x546c5d[_0xac4a('0x1c')]));});});},'Command':function(_0x13c8eb){var _0x39b691=this;return new Promise(function(_0x4d837c,_0x39e83e){if(ami[_0xac4a('0x10')]()==![]){return _0x39e83e(_0x39b691[_0xac4a('0x11')](0x1f4,[config[_0xac4a('0x12')]['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}_0x13c8eb=_['pick'](_0x13c8eb,_0xac4a('0x1e'));_0x13c8eb[_0xac4a('0x18')]='Command';return ami[_0xac4a('0x1a')](_0x13c8eb)[_0xac4a('0x1b')](function(_0x3eacd3){_0x4d837c({'code':0xc8,'message':_0x3eacd3[_0xac4a('0x1f')]});})['catch'](function(_0x1b7998){_0x39e83e(_0x39b691[_0xac4a('0x11')](0x1f5,_0x1b7998[_0xac4a('0x1c')]));});});},'VoiceQueues':function(_0x412494){return new Promise(function(_0x594f36,_0x2b0dc2){var _0x222507=[];for(var _0x36054a in _0x15b967[_0xac4a('0x20')]){if(_0x15b967[_0xac4a('0x20')][_0xac4a('0x21')](_0x36054a)){var _0x215a31=_0x15b967[_0xac4a('0x20')][_0x36054a];var _0x472c57={'id':_0x215a31['id'],'name':_0x215a31[_0xac4a('0x9')],'strategy':_0x215a31[_0xac4a('0x22')],'answered':_0x215a31['answered'],'available':_0x215a31[_0xac4a('0x23')],'loggedIn':_0x215a31[_0xac4a('0x24')],'pTalking':_0x215a31[_0xac4a('0x25')],'sumBillable':_0x215a31[_0xac4a('0x26')],'sumDuration':_0x215a31[_0xac4a('0x27')],'sumHoldTime':_0x215a31['sumHoldTime']||0x0,'talking':_0x215a31['talking'],'total':_0x215a31[_0xac4a('0x28')],'type':_0x215a31[_0xac4a('0x29')],'unmanaged':_0x215a31[_0xac4a('0x2a')],'abandoned':_0x215a31['abandoned'],'waiting':_0x215a31['waiting'],'loggedInDb':_0x215a31[_0xac4a('0x2b')]};if(_0x215a31[_0xac4a('0x29')]===_0xac4a('0x2c')){_0x472c57[_0xac4a('0x2d')]=_0x215a31[_0xac4a('0x2d')];_0x472c57['dialMethod']=_0x215a31[_0xac4a('0x2e')];_0x472c57['dialOriginateCallerIdName']=_0x215a31[_0xac4a('0x2f')];_0x472c57['dialOriginateCallerIdNumber']=_0x215a31[_0xac4a('0x30')];_0x472c57[_0xac4a('0x31')]=_0x215a31[_0xac4a('0x31')];_0x472c57[_0xac4a('0x32')]=_0x215a31[_0xac4a('0x32')];_0x472c57[_0xac4a('0x33')]=_0x215a31[_0xac4a('0x33')];_0x472c57[_0xac4a('0x34')]=_0x215a31[_0xac4a('0x34')];_0x472c57[_0xac4a('0x35')]=_0x215a31[_0xac4a('0x35')];_0x472c57[_0xac4a('0x36')]=_0x215a31[_0xac4a('0x36')];_0x472c57[_0xac4a('0x37')]=_0x215a31['outboundBusyCallsDay'];_0x472c57[_0xac4a('0x38')]=_0x215a31[_0xac4a('0x38')];_0x472c57['outboundDropCallsDayACS']=_0x215a31[_0xac4a('0x39')];_0x472c57[_0xac4a('0x3a')]=_0x215a31['outboundDropCallsDayCallersExit'];_0x472c57['outboundDropCallsDayTimeout']=_0x215a31[_0xac4a('0x3b')];_0x472c57[_0xac4a('0x3c')]=_0x215a31[_0xac4a('0x3c')];_0x472c57[_0xac4a('0x3d')]=_0x215a31['outboundNoSuchCallsDay'];_0x472c57[_0xac4a('0x3e')]=_0x215a31[_0xac4a('0x3e')];_0x472c57['outboundReCallsDay']=_0x215a31[_0xac4a('0x3f')];_0x472c57[_0xac4a('0x40')]=_0x215a31[_0xac4a('0x40')];_0x472c57['outboundUnknownCallsDay']=_0x215a31[_0xac4a('0x41')];_0x472c57[_0xac4a('0x42')]=_0x215a31[_0xac4a('0x42')];_0x472c57['predictiveIntervalAvgHoldtime']=_0x215a31[_0xac4a('0x43')];_0x472c57[_0xac4a('0x44')]=_0x215a31['predictiveIntervalAvgTalktime'];_0x472c57['predictiveIntervalDroppedCallsCallersExit']=_0x215a31[_0xac4a('0x45')];_0x472c57['predictiveIntervalDroppedCallsTimeout']=_0x215a31['predictiveIntervalDroppedCallsTimeout'];_0x472c57['predictiveIntervalErlangCalls']=_0x215a31['predictiveIntervalErlangCalls'];_0x472c57[_0xac4a('0x46')]=_0x215a31[_0xac4a('0x46')];_0x472c57[_0xac4a('0x47')]=_0x215a31[_0xac4a('0x47')];_0x472c57[_0xac4a('0x48')]=_0x215a31[_0xac4a('0x48')];_0x472c57[_0xac4a('0x49')]=_0x215a31[_0xac4a('0x49')];_0x472c57[_0xac4a('0x4a')]=_0x215a31[_0xac4a('0x4a')];_0x472c57[_0xac4a('0x4b')]=_0x215a31[_0xac4a('0x4b')];_0x472c57['message']=_0x215a31['message'];_0x472c57['originated']=_0x215a31[_0xac4a('0x4c')];_0x472c57[_0xac4a('0x4d')]=_0x215a31[_0xac4a('0x4d')];_0x472c57[_0xac4a('0x4e')]=_0x215a31[_0xac4a('0x4e')];_0x472c57[_0xac4a('0x4f')]=_0x215a31[_0xac4a('0x4f')];_0x472c57[_0xac4a('0x50')]=_0x215a31[_0xac4a('0x50')];_0x472c57[_0xac4a('0x51')]=_0x215a31['startPredictive'];_0x472c57[_0xac4a('0x52')]=_0x215a31[_0xac4a('0x52')];}if(_0x215a31[_0xac4a('0x53')]){_0x472c57[_0xac4a('0x53')]={'id':_0x215a31[_0xac4a('0x53')]['id'],'name':_0x215a31['Trunk'][_0xac4a('0x9')],'active':_0x215a31[_0xac4a('0x53')]['active'],'callerid':_0x215a31[_0xac4a('0x53')]['callerid']};}if(_0x215a31[_0xac4a('0x54')]){_0x472c57[_0xac4a('0x54')]={'id':_0x215a31[_0xac4a('0x54')]['id'],'name':_0x215a31[_0xac4a('0x54')][_0xac4a('0x9')]};}_0x222507[_0xac4a('0x55')](_0x472c57);}}_0x594f36({'count':_0x222507[_0xac4a('0x56')],'rows':_0x222507});});},'UpdateVoiceQueue':function(_0x30a169){return new Promise(function(_0x98e0c4,_0xcb002b){var _0x4fa9eb=_[_0xac4a('0x57')](_0x15b967['voiceQueues'],{'id':parseInt(_0x30a169['id'])});var _0x1646ea=_[_0xac4a('0x58')](_0x30a169,['id']);if(_0x4fa9eb){for(var _0xeca4e9 in _0x1646ea){if(typeof _0x1646ea[_0xeca4e9]!=='undefined'&&typeof _0x4fa9eb[_0xeca4e9]!==_0xac4a('0x59')){_0x4fa9eb[_0xeca4e9]=_0x1646ea[_0xeca4e9];}}_0x98e0c4(_0x4fa9eb);}else{_0xcb002b();}});},'VoiceChannels':function(_0x19276e){return new Promise(function(_0x5f54ff,_0x42969b){var _0x5a7f6e=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x5b')]);_0x5f54ff({'count':_0x5a7f6e[_0xac4a('0x56')],'rows':_0x5a7f6e});});},'VoiceChannelMixMonitor':function(_0x5e3581){var _0x588374=this;return new Promise(function(_0x42fd9d,_0x4aaeff){if(ami[_0xac4a('0x10')]()==![]){return _0x4aaeff(_0x588374['error'](0x1f4,[config[_0xac4a('0x12')]['ip'],config['asterisk'][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}var _0x1c8c39=schema(properties['voicechannel'])[_0xac4a('0x3')](_0x5e3581);if(_0x1c8c39[_0xac4a('0x56')]>0x0){return _0x4aaeff(_0x588374[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0x1c8c39,_0xac4a('0x1c'))[_0xac4a('0x15')](',\x20')));}var _0x187306=_['find'](_0x15b967[_0xac4a('0x5b')],{'uniqueid':_0x5e3581[_0xac4a('0x5d')]});if(_0x187306&&_0x187306['channel']){var _0x16afbe=util[_0xac4a('0x7')](_0xac4a('0x5e'),_0x5e3581[_0xac4a('0x5f')]||_0x5e3581['uniqueid'],_0x5e3581[_0xac4a('0x7')]||_0xac4a('0x60'));return ami[_0xac4a('0x1a')]({'action':_0xac4a('0x61'),'channel':_0x187306[_0xac4a('0x62')],'file':_0x16afbe,'options':'ai(mixmonitorid)'})[_0xac4a('0x1b')](function(_0x564b10){var _0x307441=_[_0xac4a('0x57')](_0x187306['monitors'],{'filename':'/var/spool/asterisk/monitor/'+_0x16afbe[_0xac4a('0x63')]()});if(_[_0xac4a('0x64')](_0x307441)){_0x187306['monitors'][_0xac4a('0x55')]({'filename':_0xac4a('0x65')+_0x16afbe[_0xac4a('0x63')](),'createdAt':moment()[_0xac4a('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x564b10[_0xac4a('0x66')],'status':_0xac4a('0x67')});}else{_0x307441[_0xac4a('0x66')]=_0x564b10[_0xac4a('0x66')];_0x307441[_0xac4a('0x68')]=_0xac4a('0x67');}_0x42fd9d({'code':0xc8,'message':[_0x5e3581[_0xac4a('0x5d')],'MixMonitor\x20Success',_0x564b10[_0xac4a('0x66')]][_0xac4a('0x15')]('\x20'),'mixmonitorid':_0x564b10[_0xac4a('0x66')]});})[_0xac4a('0x1d')](function(_0x1b7231){_0x4aaeff(_0x588374[_0xac4a('0x11')](0x1f5,[_0x5e3581[_0xac4a('0x5d')],_0x1b7231[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')));});}else{return _0x4aaeff(_0x588374[_0xac4a('0x11')](0x1f5,_0xac4a('0x69')));}});},'VoiceChannelStopMixMonitor':function(_0x400ac4){var _0x2fe7df=this;return new Promise(function(_0x5222f3,_0x11c753){if(ami['isConnected']()==![]){return _0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xac4a('0x12')]['username'],_0xac4a('0x14')]['join']('\x20')));}var _0x3e92bf=schema(properties['voicechannel'])['validate'](_0x400ac4);if(_0x3e92bf[_0xac4a('0x56')]>0x0){return _0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0x3e92bf,_0xac4a('0x1c'))[_0xac4a('0x15')](',\x20')));}var _0xb7b884=_['find'](_0x15b967[_0xac4a('0x5b')],{'uniqueid':_0x400ac4['uniqueid']});if(_0xb7b884){return BPromise[_0xac4a('0x6a')]()['then'](function(){if(_0xb7b884[_0xac4a('0x62')]){return ami[_0xac4a('0x1a')]({'action':_0xac4a('0x6b'),'channel':_0xb7b884[_0xac4a('0x62')],'mixmonitorid':_0x400ac4[_0xac4a('0x66')]})[_0xac4a('0x1d')](function(_0x3abd57){});}})[_0xac4a('0x1b')](function(){if(_0xb7b884[_0xac4a('0x6c')]){return ami[_0xac4a('0x1a')]({'action':_0xac4a('0x6b'),'channel':_0xb7b884[_0xac4a('0x6c')],'mixmonitorid':_0x400ac4[_0xac4a('0x66')]})[_0xac4a('0x1d')](function(_0x17ae93){});}})[_0xac4a('0x1b')](function(_0x38cb4f){var _0x4a0156=_[_0xac4a('0x57')](_0xb7b884[_0xac4a('0x6d')],{'mixmonitorid':_0x400ac4['mixmonitorid']});if(_0x4a0156){_0x4a0156[_0xac4a('0x68')]=_0xac4a('0x6e');}})[_0xac4a('0x1b')](function(){var _0x2b8562=util[_0xac4a('0x7')]('%s.%s',_0x400ac4['filename']||_0x400ac4[_0xac4a('0x5d')],_0x400ac4[_0xac4a('0x7')]||_0xac4a('0x60'));var _0x148288=_[_0xac4a('0x57')](_0xb7b884[_0xac4a('0x6d')],{'filename':_0xac4a('0x65')+_0x2b8562[_0xac4a('0x63')]()});if(_0x148288){_0x148288[_0xac4a('0x68')]=_0xac4a('0x6e');}})[_0xac4a('0x1b')](function(){_0x5222f3({'code':0xc8,'message':[_0x400ac4['uniqueid'],'StopMixMonitor\x20Success'][_0xac4a('0x15')]('\x20')});})[_0xac4a('0x1d')](function(_0x2954fc){_0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f5,[_0x400ac4[_0xac4a('0x5d')],_0x2954fc[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')));});}else{return _0x11c753(_0x2fe7df[_0xac4a('0x11')](0x1f5,_0xac4a('0x69')));}});},'VoiceQueuesChannels':function(_0xb09b89){return new Promise(function(_0xb12cc5,_0x5f0173){var _0x13c854=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x6f')]);_0xb12cc5({'count':_0x13c854[_0xac4a('0x56')],'rows':_0x13c854});});},'VoiceQueuesChannel':function(_0x513976){var _0xc61e94=this;return new Promise(function(_0x5a30af,_0xab4305){var _0x3af39a=schema(properties['voicequeuechannel'])['validate'](_0x513976);if(_0x3af39a[_0xac4a('0x56')]>0x0){return _0xab4305(_0xc61e94[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0x3af39a,'message')[_0xac4a('0x15')](',\x20')));}var _0x4d067d=_[_0xac4a('0x57')](_0x15b967['queueChannels'],{'uniqueid':_0x513976['uniqueid']});if(_0x4d067d){_0x5a30af(_0x4d067d);}else{return _0xab4305(_0xc61e94[_0xac4a('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0xb776c4){var _0x5df028=this;return new Promise(function(_0x3cbacc,_0x3a68b6){if(ami['isConnected']()==![]){return _0x3a68b6(_0x5df028[_0xac4a('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],'ami\x20disconnected'][_0xac4a('0x15')]('\x20')));}var _0x4b66b4=schema(properties['voicequeuechannelhangup'])[_0xac4a('0x3')](_0xb776c4);if(_0x4b66b4['length']>0x0){return _0x3a68b6(_0x5df028[_0xac4a('0x11')](0x1f4,_['map'](_0x4b66b4,'message')[_0xac4a('0x15')](',\x20')));}var _0x4065c0=_[_0xac4a('0x57')](_0x15b967['queueChannels'],{'uniqueid':_0xb776c4['uniqueid']});if(_0x4065c0&&_0x4065c0[_0xac4a('0x62')]){return ami[_0xac4a('0x1a')]({'action':'Hangup','channel':_0x4065c0['channel']})[_0xac4a('0x1b')](function(_0x178def){_0x3cbacc({'code':0xc8,'message':[_0xb776c4[_0xac4a('0x5d')],_0x178def[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')});})[_0xac4a('0x1d')](function(_0x13833b){_0x3a68b6(_0x5df028[_0xac4a('0x11')](0x1f5,[_0xb776c4['uniqueid'],_0x13833b[_0xac4a('0x1c')][_0xac4a('0x63')]()][_0xac4a('0x15')]('\x20')));});}else{return _0x3a68b6(_0x5df028['error'](0x1f5,_0xac4a('0x69')));}});},'VoiceQueuesChannelRedirect':function(_0x46211a){var _0x7c9bbe=this;return new Promise(function(_0x391c35,_0x3d2b5c){if(ami['isConnected']()==![]){return _0x3d2b5c(_0x7c9bbe[_0xac4a('0x11')](0x1f4,[config[_0xac4a('0x12')]['ip'],config[_0xac4a('0x12')][_0xac4a('0x13')],_0xac4a('0x14')][_0xac4a('0x15')]('\x20')));}var _0xd7bdd6=schema(properties['voicequeuechannelredirect'])[_0xac4a('0x3')](_0x46211a);if(_0xd7bdd6[_0xac4a('0x56')]>0x0){return _0x3d2b5c(_0x7c9bbe[_0xac4a('0x11')](0x1f4,_[_0xac4a('0x5c')](_0xd7bdd6,_0xac4a('0x1c'))[_0xac4a('0x15')](',\x20')));}var _0x547eec=_[_0xac4a('0x57')](_0x15b967[_0xac4a('0x6f')],{'uniqueid':_0x46211a[_0xac4a('0x5d')]});if(_0x547eec&&_0x547eec[_0xac4a('0x62')]){return ami['Action']({'action':_0xac4a('0x70'),'channel':_0x547eec['channel'],'exten':_0x46211a[_0xac4a('0x71')],'context':_0x46211a[_0xac4a('0x72')]||_0x547eec['context'],'priority':0x1})['then'](function(_0x957f7d){_0x391c35({'code':0xc8,'message':[_0x46211a[_0xac4a('0x5d')],_0x957f7d[_0xac4a('0x1c')]['toLowerCase']()][_0xac4a('0x15')]('\x20')});})['catch'](function(_0x2fd565){_0x3d2b5c(_0x7c9bbe[_0xac4a('0x11')](0x1f5,[_0x46211a[_0xac4a('0x5d')],_0x2fd565[_0xac4a('0x1c')][_0xac4a('0x63')]()]['join']('\x20')));});}else{return _0x3d2b5c(_0x7c9bbe['error'](0x1f5,_0xac4a('0x69')));}});},'Agents':function(_0x23cc6f){return new Promise(function(_0x23d07c,_0x8b5a90){var _0x3afcf6=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0xd')]);_0x23d07c({'count':_0x3afcf6[_0xac4a('0x56')],'rows':_0x3afcf6});});},'Telephones':function(_0x49ac09){return new Promise(function(_0x52b3e6,_0x446d99){var _0x31cc9a=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x73')]);_0x52b3e6({'count':_0x31cc9a[_0xac4a('0x56')],'rows':_0x31cc9a});});},'Trunks':function(_0x2ea4a4){return new Promise(function(_0xdaa2ef,_0x2e704b){var _0x540d8e=_['values'](_0x15b967[_0xac4a('0x74')]);_0xdaa2ef({'count':_0x540d8e[_0xac4a('0x56')],'rows':_0x540d8e});});},'OutboundChannels':function(_0x22804e){return new Promise(function(_0x371e06,_0x3030cf){var _0x13bcae=_[_0xac4a('0x5a')](_0x15b967['outboundChannels']);_0x371e06({'count':_0x13bcae[_0xac4a('0x56')],'rows':_0x13bcae});});},'Outbound':function(_0x1bacf2){return new Promise(function(_0x3439f3,_0x5f323d){_0x3439f3(_0x15b967[_0xac4a('0x2c')]);});},'Campaigns':function(_0x222840){return new Promise(function(_0x390984,_0x7f455b){var _0x1a7448=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x75')]);_0x390984({'count':_0x1a7448[_0xac4a('0x56')],'rows':_0x1a7448});});},'VoiceQueuesPreview':function(_0x322465){var _0x5f0adc=this;return new Promise(function(_0x32bd79,_0x50f71c){_0x730a38[_0xac4a('0x76')](_0x322465['id'])[_0xac4a('0x1b')](function(_0x3184b3){_0x32bd79({'code':0xc8,'message':_0x3184b3[_0xac4a('0x1c')]});})[_0xac4a('0x1d')](function(_0x337da7){_0x50f71c(_0x5f0adc[_0xac4a('0x11')](0x1f4,_0x337da7['message']));});});},'EventManager':function(_0x2b883a){var _0x42b3f7=this;return new Promise(function(_0x279f9b,_0x3315e7){if(!_0x2b883a[_0xac4a('0x77')]){return _0x3315e7(_0x42b3f7['error'](0x1f4,_0xac4a('0x78')));}ami[_0xac4a('0x79')]('custom:'+_0x2b883a['event'],_0x2b883a[_0xac4a('0x1c')]);_0x279f9b({'code':0xc8,'message':_0x2b883a});});},'FaxAccounts':function(_0x467dcf){return new Promise(function(_0x59afa0,_0x24d36d){var _0x217d8b=_[_0xac4a('0x5a')](_0x15b967[_0xac4a('0x7a')]);_0x59afa0({'count':_0x217d8b[_0xac4a('0x56')],'rows':_0x217d8b});});},'SendFax':function(_0x34787c){var _0x599775=this;return new Promise(function(_0xbdff4b,_0x1eddc1){_0x215f39[_0xac4a('0x7b')](_0x34787c)['then'](function(_0x2c90c9){_0xbdff4b({'code':0xc8,'message':_0x2c90c9[_0xac4a('0x1c')]});})[_0xac4a('0x1d')](function(_0x17f20f){_0x1eddc1(_0x599775[_0xac4a('0x11')](0x1f4,_0x17f20f[_0xac4a('0x1c')]));});});},'CheckAfterSend':function(_0x5d6ef3){var _0xe84bf7=this;return new Promise(function(_0x4406c3,_0x5ab83b){_0x215f39[_0xac4a('0x7c')](_0x5d6ef3)['then'](function(_0x37bbfa){_0x4406c3({'code':0xc8,'message':_0x37bbfa[_0xac4a('0x1c')]});})['catch'](function(_0x471c44){_0x5ab83b(_0xe84bf7['error'](0x1f4,_0x471c44[_0xac4a('0x1c')]));});});}};var _0x4e6612=jayson[_0xac4a('0x7d')](_0x3ef77c)[_0xac4a('0x7e')]();_0x4e6612['on'](_0xac4a('0x11'),function(_0xfe8977){return _0x15cd34(_0xfe8977);});_0x4e6612[_0xac4a('0x6')](0x232a,_0xac4a('0x7f'),function(){console[_0xac4a('0x80')](_0xac4a('0x81'),0x232a);return _0x96be2b(_0xac4a('0x82')+0x232a);});});};
\ No newline at end of file
index cc12e11..3006924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c7=['lastName','mobile','fax','createdAt','scheduledAt','union','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','destcalleridnum','isNil','<unknown>','calleridname','destcalleridname','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','uniqueid','[CM][%s][%s]\x20Autocreate\x20disabled','Unknown','format','user:%s','name','trigger:%s','action','toLowerCase','merge','bluebird','util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','info','[CM][%s][%s]','stringify','exec','data1','data2','xmd-contactid','ListId','data3','split','phone','map','routeId','calleridnum','firstName'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0xa5c7,0x91));var _0x7a5c=function(_0x334bb9,_0x2c9ff5){_0x334bb9=_0x334bb9-0x0;var _0x904185=_0xa5c7[_0x334bb9];return _0x904185;};'use strict';var _=require('lodash');var BPromise=require(_0x7a5c('0x0'));var Redis=require('ioredis');var util=require(_0x7a5c('0x1'));var config=require(_0x7a5c('0x2'));var logger=require(_0x7a5c('0x3'))('trigger');var cmContactRpc=require('../../rpc/cmContact');config[_0x7a5c('0x4')]=_[_0x7a5c('0x5')](config[_0x7a5c('0x4')],{'host':_0x7a5c('0x6'),'port':0x18eb});var io=require(_0x7a5c('0x7'))(new Redis(config[_0x7a5c('0x4')]));function emit(_0x142293,_0x1dcad7,_0x5dc88a,_0x46b92f,_0x88b36a){logger[_0x7a5c('0x8')](_0x7a5c('0x9'),_0x142293,_0x1dcad7['id'],_0x5dc88a,_0x46b92f,JSON[_0x7a5c('0xa')](_0x88b36a));io['to'](_0x5dc88a)['emit'](_0x46b92f,_0x88b36a);}exports[_0x7a5c('0xb')]=function(_0x34d93d,_0x2249f6,_0x10cc9d,_0x38e495){var _0x2a1c1a,_0x527e25;var _0x29fca9={};var _0x1cf181=Number(_0x10cc9d[_0x7a5c('0xc')]);var _0x5aae03=_0x10cc9d[_0x7a5c('0xd')]?Boolean(Number(_0x10cc9d[_0x7a5c('0xd')])):![];var _0x31c424;if(_0x38e495[_0x7a5c('0xe')]){_0x29fca9['id']=_0x38e495['xmd-contactid'];}if(!_0x29fca9['id']){_0x29fca9[_0x7a5c('0xf')]=_0x1cf181;_0x31c424=_0x10cc9d['data3']&&_0x10cc9d[_0x7a5c('0x10')]!=='0'?_0x10cc9d[_0x7a5c('0x10')][_0x7a5c('0x11')](','):[_0x7a5c('0x12')];_0x29fca9['$or']=_[_0x7a5c('0x13')](_0x31c424,function(_0x37f4f9){var _0x244758={};_0x244758[_0x37f4f9]=_0x38e495[_0x7a5c('0x14')]?_0x38e495['destcalleridnum']:_0x38e495[_0x7a5c('0x15')];return _0x244758;});}var _0x537217=['id',_0x7a5c('0x16'),_0x7a5c('0x17'),_0x7a5c('0x12'),_0x7a5c('0x18'),_0x7a5c('0x19'),_0x7a5c('0xf'),_0x7a5c('0x1a'),_0x7a5c('0x1b'),'updatedAt'];var _0x4b654d=_[_0x7a5c('0x1c')](_0x537217,_0x31c424);BPromise[_0x7a5c('0x1d')]()[_0x7a5c('0x1e')](cmContactRpc[_0x7a5c('0x1f')]({'attributes':_0x4b654d,'where':_0x29fca9}))['then'](function(_0x486a92){_0x527e25=_0x486a92;if(!_[_0x7a5c('0x20')](_0x527e25)){if(_0x527e25[_0x7a5c('0x21')]===0x1){_0x2a1c1a=_0x527e25[0x0];logger[_0x7a5c('0x8')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x38e495['uniqueid'],_0x2249f6['id'],_0x2a1c1a['id']);}else{logger[_0x7a5c('0x8')](_0x7a5c('0x22'),_0x38e495['uniqueid'],_0x2249f6['id'],_[_0x7a5c('0x13')](_0x527e25,'id')[_0x7a5c('0x23')](','));}return;}else{logger['info'](_0x7a5c('0x24'),_0x38e495['uniqueid'],_0x2249f6['id']);var _0x5b9fb9={'ListId':_0x1cf181};var _0x3af226=_0x10cc9d['data4']&&_0x10cc9d[_0x7a5c('0x25')]!=='0'?_0x10cc9d[_0x7a5c('0x25')]:_0x7a5c('0x12');if(_0x5aae03){logger[_0x7a5c('0x8')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x38e495['uniqueid'],_0x2249f6['id']);_0x5b9fb9[_0x3af226]=_['isNil'](_0x38e495[_0x7a5c('0x14')])?_0x38e495['calleridnum']:_0x38e495[_0x7a5c('0x26')];if(_[_0x7a5c('0x27')](_0x38e495[_0x7a5c('0x14')])){_0x5b9fb9[_0x7a5c('0x16')]=_0x38e495['calleridname']&&_0x38e495['calleridname']!==_0x7a5c('0x28')?_0x38e495[_0x7a5c('0x29')]:'Unknown';}else{_0x5b9fb9[_0x7a5c('0x16')]=_0x38e495['destcalleridname']&&_0x38e495[_0x7a5c('0x2a')]!==_0x7a5c('0x28')?_0x38e495[_0x7a5c('0x2a')]:'Unknown';}return BPromise[_0x7a5c('0x1d')]()[_0x7a5c('0x1e')](cmContactRpc[_0x7a5c('0x2b')](_0x5b9fb9))[_0x7a5c('0x1e')](function(_0x449d43){_0x2a1c1a=_0x449d43;_0x527e25[_0x7a5c('0x2c')](_0x449d43);if(_0x2a1c1a){logger[_0x7a5c('0x8')](_0x7a5c('0x2d'),_0x38e495[_0x7a5c('0x2e')],_0x2249f6['id'],_0x2a1c1a['id']);}return;});}else{logger[_0x7a5c('0x8')](_0x7a5c('0x2f'),_0x38e495['uniqueid'],_0x2249f6['id']);_0x5b9fb9[_0x3af226]=_['isNil'](_0x38e495[_0x7a5c('0x14')])?_0x38e495[_0x7a5c('0x15')]:_0x38e495[_0x7a5c('0x26')];if(_[_0x7a5c('0x27')](_0x38e495[_0x7a5c('0x14')])){_0x5b9fb9[_0x7a5c('0x16')]=_0x38e495[_0x7a5c('0x29')]&&_0x38e495['calleridname']!=='<unknown>'?_0x38e495['calleridname']:_0x7a5c('0x30');}else{_0x5b9fb9[_0x7a5c('0x16')]=_0x38e495[_0x7a5c('0x2a')]&&_0x38e495[_0x7a5c('0x2a')]!==_0x7a5c('0x28')?_0x38e495[_0x7a5c('0x2a')]:'Unknown';}_0x2a1c1a=_0x5b9fb9;_0x527e25[_0x7a5c('0x2c')](_0x5b9fb9);return;}}})['then'](function(){if(_0x34d93d){emit(_0x38e495[_0x7a5c('0x2e')],_0x2249f6,util[_0x7a5c('0x31')](_0x7a5c('0x32'),_0x34d93d[_0x7a5c('0x33')]),util[_0x7a5c('0x31')](_0x7a5c('0x34'),_0x10cc9d[_0x7a5c('0x35')][_0x7a5c('0x36')]()),{'evt':_[_0x7a5c('0x37')](_0x38e495,{'autoCreate':_0x5aae03}),'contact':_0x2a1c1a===undefined?{}:_0x2a1c1a,'contacts':_0x527e25[_0x7a5c('0x21')]===0x0?undefined:_0x527e25});}});};
\ No newline at end of file
+var _0x3dae=['$or','map','routeId','destcalleridnum','calleridnum','firstName','phone','mobile','createdAt','updatedAt','union','resolve','then','getContacts','length','[CM][%s][%s]\x20Contact\x20found:%s','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','uniqueid','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','isNil','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','../../../../config/logger','trigger','../../rpc/cmContact','defaults','redis','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','xmd-contactid','ListId','data3','split'];(function(_0x25f83a,_0x5bcfe6){var _0x13c950=function(_0x5e23ea){while(--_0x5e23ea){_0x25f83a['push'](_0x25f83a['shift']());}};_0x13c950(++_0x5bcfe6);}(_0x3dae,0x1d4));var _0xe3da=function(_0x1ceec5,_0x458cfd){_0x1ceec5=_0x1ceec5-0x0;var _0x1b7078=_0x3dae[_0x1ceec5];return _0x1b7078;};'use strict';var _=require(_0xe3da('0x0'));var BPromise=require(_0xe3da('0x1'));var Redis=require('ioredis');var util=require('util');var config=require('../../../../config/environment');var logger=require(_0xe3da('0x2'))(_0xe3da('0x3'));var cmContactRpc=require(_0xe3da('0x4'));config['redis']=_[_0xe3da('0x5')](config[_0xe3da('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe3da('0x6')]));function emit(_0x2d6b42,_0x5c1736,_0x3d6f49,_0x108732,_0x1adf3c){logger[_0xe3da('0x7')](_0xe3da('0x8'),_0x2d6b42,_0x5c1736['id'],_0x3d6f49,_0x108732,JSON[_0xe3da('0x9')](_0x1adf3c));io['to'](_0x3d6f49)[_0xe3da('0xa')](_0x108732,_0x1adf3c);}exports[_0xe3da('0xb')]=function(_0x4952b1,_0x20655c,_0x5afb04,_0x380ffb){var _0x22d7ce,_0x278664;var _0x4190e7={};var _0x54ca46=Number(_0x5afb04[_0xe3da('0xc')]);var _0xf1f5dd=_0x5afb04[_0xe3da('0xd')]?Boolean(Number(_0x5afb04[_0xe3da('0xd')])):![];var _0x24ee0e;if(_0x380ffb[_0xe3da('0xe')]){_0x4190e7['id']=_0x380ffb[_0xe3da('0xe')];}if(!_0x4190e7['id']){_0x4190e7[_0xe3da('0xf')]=_0x54ca46;_0x24ee0e=_0x5afb04[_0xe3da('0x10')]&&_0x5afb04['data3']!=='0'?_0x5afb04[_0xe3da('0x10')][_0xe3da('0x11')](','):['phone'];_0x4190e7[_0xe3da('0x12')]=_[_0xe3da('0x13')](_0x24ee0e,function(_0x5c056c){var _0x287155={};_0x287155[_0x5c056c]=_0x380ffb[_0xe3da('0x14')]?_0x380ffb[_0xe3da('0x15')]:_0x380ffb[_0xe3da('0x16')];return _0x287155;});}var _0x19e724=['id',_0xe3da('0x17'),'lastName',_0xe3da('0x18'),_0xe3da('0x19'),'fax',_0xe3da('0xf'),_0xe3da('0x1a'),'scheduledAt',_0xe3da('0x1b')];var _0x3c617f=_[_0xe3da('0x1c')](_0x19e724,_0x24ee0e);BPromise[_0xe3da('0x1d')]()[_0xe3da('0x1e')](cmContactRpc[_0xe3da('0x1f')]({'attributes':_0x3c617f,'where':_0x4190e7}))[_0xe3da('0x1e')](function(_0x4f7eed){_0x278664=_0x4f7eed;if(!_['isEmpty'](_0x278664)){if(_0x278664[_0xe3da('0x20')]===0x1){_0x22d7ce=_0x278664[0x0];logger['info'](_0xe3da('0x21'),_0x380ffb['uniqueid'],_0x20655c['id'],_0x22d7ce['id']);}else{logger['info'](_0xe3da('0x22'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id'],_['map'](_0x278664,'id')[_0xe3da('0x24')](','));}return;}else{logger['info'](_0xe3da('0x25'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id']);var _0x5235f7={'ListId':_0x54ca46};var _0x3d9dac=_0x5afb04[_0xe3da('0x26')]&&_0x5afb04['data4']!=='0'?_0x5afb04['data4']:_0xe3da('0x18');if(_0xf1f5dd){logger[_0xe3da('0x7')](_0xe3da('0x27'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id']);_0x5235f7[_0x3d9dac]=_[_0xe3da('0x28')](_0x380ffb['routeId'])?_0x380ffb['calleridnum']:_0x380ffb['destcalleridnum'];if(_[_0xe3da('0x28')](_0x380ffb[_0xe3da('0x14')])){_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x29')]&&_0x380ffb[_0xe3da('0x29')]!==_0xe3da('0x2a')?_0x380ffb[_0xe3da('0x29')]:'Unknown';}else{_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x2b')]&&_0x380ffb[_0xe3da('0x2b')]!==_0xe3da('0x2a')?_0x380ffb['destcalleridname']:_0xe3da('0x2c');}return BPromise[_0xe3da('0x1d')]()['then'](cmContactRpc[_0xe3da('0x2d')](_0x5235f7))[_0xe3da('0x1e')](function(_0x4b1f05){_0x22d7ce=_0x4b1f05;_0x278664[_0xe3da('0x2e')](_0x4b1f05);if(_0x22d7ce){logger[_0xe3da('0x7')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x380ffb[_0xe3da('0x23')],_0x20655c['id'],_0x22d7ce['id']);}return;});}else{logger['info'](_0xe3da('0x2f'),_0x380ffb[_0xe3da('0x23')],_0x20655c['id']);_0x5235f7[_0x3d9dac]=_[_0xe3da('0x28')](_0x380ffb[_0xe3da('0x14')])?_0x380ffb['calleridnum']:_0x380ffb['destcalleridnum'];if(_[_0xe3da('0x28')](_0x380ffb[_0xe3da('0x14')])){_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x29')]&&_0x380ffb['calleridname']!==_0xe3da('0x2a')?_0x380ffb[_0xe3da('0x29')]:'Unknown';}else{_0x5235f7[_0xe3da('0x17')]=_0x380ffb[_0xe3da('0x2b')]&&_0x380ffb[_0xe3da('0x2b')]!==_0xe3da('0x2a')?_0x380ffb[_0xe3da('0x2b')]:'Unknown';}_0x22d7ce=_0x5235f7;_0x278664[_0xe3da('0x2e')](_0x5235f7);return;}}})['then'](function(){if(_0x4952b1){emit(_0x380ffb['uniqueid'],_0x20655c,util[_0xe3da('0x30')]('user:%s',_0x4952b1[_0xe3da('0x31')]),util[_0xe3da('0x30')](_0xe3da('0x32'),_0x5afb04[_0xe3da('0x33')][_0xe3da('0x34')]()),{'evt':_[_0xe3da('0x35')](_0x380ffb,{'autoCreate':_0xf1f5dd}),'contact':_0x22d7ce===undefined?{}:_0x22d7ce,'contacts':_0x278664[_0xe3da('0x20')]===0x0?undefined:_0x278664});}});};
\ No newline at end of file
index e0614d8..59335aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ab0=['replace','AllConditions','every','checkConditions','channel','AnyConditions','some','account','chat','ChatWebsiteId','upperFirst','AccountId','value','interaction','event','operator','agent','membername','lastevent','exports','util','lodash','url','mustache','./urlforward','./cmContact','./script','../../../config/environment','../../../config/logger','../ami','localhost','redis','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','freshdeskAccounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentringnoanswer','custom:agentcomplete','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialconnect','syncAgentDial','custom:dialend','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','prototype','emit','info','clone','checkTriggers','interface','hasOwnProperty','status','checkTrigger','merge','Actions','length','toLowerCase','contactmanager','motionbar','data1','popup','TemplateId','data2','render','template\x20not\x20found','uri','isNil','data3','data4','windowWidth','800','data5','windowHeight','600','data6','winApplication','winArguments','format','user:%s','trigger:%s:%s','action','jscripty','name','trigger:%s','exec','integration','accounts','queue','routeId','urlforward','script','parse','search'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7ab0,0xfc));var _0x07ab=function(_0xefd519,_0xc62635){_0xefd519=_0xefd519-0x0;var _0x4bb882=_0x7ab0[_0xefd519];return _0x4bb882;};'use strict';var util=require(_0x07ab('0x0'));var _=require(_0x07ab('0x1'));var url=require(_0x07ab('0x2'));var Mustache=require(_0x07ab('0x3'));var Redis=require('ioredis');var urlforward=require(_0x07ab('0x4'));var integration=require('./integration');var cmContact=require(_0x07ab('0x5'));var script=require(_0x07ab('0x6'));var config=require(_0x07ab('0x7'));var logger=require(_0x07ab('0x8'))('trigger');var ami=require(_0x07ab('0x9'));config['redis']=_['defaults'](config['redis'],{'host':_0x07ab('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x07ab('0xb')]));var operators={'equals':function(_0x51f463,_0x1ea05c){return _0x51f463==_0x1ea05c;},'not_equals':function(_0x21ba50,_0x5ec12a){return _0x21ba50!=_0x5ec12a;}};var barAndWebActions=['popup','url',_0x07ab('0xc')];function Trigger(_0x537160){this[_0x07ab('0xd')]=_0x537160[_0x07ab('0xd')];this[_0x07ab('0xe')]=_0x537160['agents'];this[_0x07ab('0xf')]=_0x537160[_0x07ab('0xf')];this[_0x07ab('0x10')]=_0x537160['templates'];this[_0x07ab('0x11')]=_0x537160['voiceExtensions'];this[_0x07ab('0x12')]=_0x537160[_0x07ab('0x12')];this['freshdeskAccounts']=_0x537160['freshdeskAccounts'];this['salesforceAccounts']=_0x537160[_0x07ab('0x13')];this[_0x07ab('0x14')]=_0x537160[_0x07ab('0x14')];this[_0x07ab('0x15')]=_0x537160[_0x07ab('0x15')];this[_0x07ab('0x16')]=_0x537160[_0x07ab('0x16')];this[_0x07ab('0x17')]=_0x537160['vtigerAccounts'];this[_0x07ab('0x18')]=_0x537160[_0x07ab('0x18')];this[_0x07ab('0x19')]=_0x537160[_0x07ab('0x19')];this[_0x07ab('0x1a')]=_0x537160[_0x07ab('0x1a')];this['accounts']={'zendesk':this[_0x07ab('0x12')],'salesforce':this[_0x07ab('0x13')],'freshdesk':this[_0x07ab('0x1b')],'sugarcrm':this[_0x07ab('0x14')],'zoho':this['zohoAccounts'],'desk':this[_0x07ab('0x16')],'vtiger':this[_0x07ab('0x17')],'dynamics365':this[_0x07ab('0x19')],'freshsales':this[_0x07ab('0x1a')],'servicenow':this[_0x07ab('0x18')]};ami['on'](_0x07ab('0x1c'),this['syncCustomEvent'][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x1e'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x20'),this[_0x07ab('0x1f')]['bind'](this));ami['on'](_0x07ab('0x21'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on']('custom:agentnosuchnumber',this['syncCustomEvent'][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x22'),this[_0x07ab('0x1f')]['bind'](this));ami['on'](_0x07ab('0x23'),this['syncCustomEvent']['bind'](this));ami['on'](_0x07ab('0x24'),this['syncCustomEvent'][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x25'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x26'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x27'),this[_0x07ab('0x1f')]['bind'](this));ami['on'](_0x07ab('0x28'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x29'),this[_0x07ab('0x2a')]['bind'](this));ami['on'](_0x07ab('0x2b'),this['syncAgentDial'][_0x07ab('0x1d')](this));ami['on']('custom:newinteraction',this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on']('custom:closedinteraction',this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x2c'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));ami['on'](_0x07ab('0x2d'),this[_0x07ab('0x1f')]['bind'](this));ami['on']('custom:acceptmessage',this[_0x07ab('0x1f')]['bind'](this));ami['on'](_0x07ab('0x2e'),this[_0x07ab('0x1f')][_0x07ab('0x1d')](this));}Trigger[_0x07ab('0x2f')][_0x07ab('0x30')]=function(_0x52c58f,_0x3c7ba0,_0x39d30d){logger[_0x07ab('0x31')](_0x52c58f,_0x3c7ba0,JSON['stringify'](_0x39d30d));io['to'](_0x52c58f)[_0x07ab('0x30')](_0x3c7ba0,_0x39d30d);};Trigger[_0x07ab('0x2f')][_0x07ab('0x1f')]=function(_0x3b56f8){var _0x5965b8=_[_0x07ab('0x32')](_0x3b56f8);this[_0x07ab('0x33')](_0x5965b8);};Trigger[_0x07ab('0x2f')][_0x07ab('0x2a')]=function(_0x1f565e){if(this[_0x07ab('0xe')][_0x1f565e[_0x07ab('0x34')]]){this[_0x07ab('0x1f')](_0x1f565e);}};Trigger[_0x07ab('0x2f')]['checkTriggers']=function(_0x5ac354){var _0x19dc27;for(var _0x144406 in this[_0x07ab('0xd')]){if(this['triggers'][_0x07ab('0x35')](_0x144406)){if(this[_0x07ab('0xd')][_0x144406][_0x07ab('0x36')]){_0x19dc27=this[_0x07ab('0x37')](this[_0x07ab('0xd')][_0x144406],_0x5ac354);if(_0x19dc27){_[_0x07ab('0x38')](_0x5ac354,_0x5ac354['variables']);for(var _0x3dc896=0x0,_0x8dacdf,_0x27fcf1,_0x1557c6;_0x3dc896<this[_0x07ab('0xd')][_0x144406][_0x07ab('0x39')][_0x07ab('0x3a')];_0x3dc896+=0x1){_0x8dacdf=this['triggers'][_0x144406][_0x07ab('0x39')][_0x3dc896];if(this['agents'][_0x5ac354['interface']]){switch(_0x8dacdf['action'][_0x07ab('0x3b')]()){case _0x07ab('0x3c'):break;case _0x07ab('0x3d'):case'browser':var _0x3edcc8={};switch(barAndWebActions[_0x8dacdf[_0x07ab('0x3e')]]){case _0x07ab('0x3f'):_0x3edcc8[_0x07ab('0x40')]=_0x8dacdf[_0x07ab('0x41')];_0x3edcc8['html']=this[_0x07ab('0x10')][_0x8dacdf[_0x07ab('0x41')]]?Mustache[_0x07ab('0x42')](this['templates'][_0x8dacdf[_0x07ab('0x41')]]['html'],_0x5ac354):_0x07ab('0x43');break;case _0x07ab('0x2'):_0x3edcc8[_0x07ab('0x44')]=this['buildUri'](_0x8dacdf[_0x07ab('0x41')],_0x5ac354,_[_0x07ab('0x45')](_0x8dacdf[_0x07ab('0x46')])?!![]:parseInt(_0x8dacdf[_0x07ab('0x46')],0xa));if(_[_0x07ab('0x45')](_0x8dacdf[_0x07ab('0x47')])){_0x3edcc8['location']='0';}else{_0x3edcc8['uriLocation']=_0x8dacdf['data4'];_0x3edcc8[_0x07ab('0x48')]=_[_0x07ab('0x45')](_0x8dacdf['data5'])?_0x07ab('0x49'):_0x8dacdf[_0x07ab('0x4a')];_0x3edcc8[_0x07ab('0x4b')]=_[_0x07ab('0x45')](_0x8dacdf['data6'])?_0x07ab('0x4c'):_0x8dacdf[_0x07ab('0x4d')];}break;case _0x07ab('0xc'):_0x3edcc8[_0x07ab('0x4e')]=_0x8dacdf[_0x07ab('0x41')]?Mustache[_0x07ab('0x42')](_0x8dacdf[_0x07ab('0x41')],_0x5ac354):'';_0x3edcc8[_0x07ab('0x4f')]=_0x8dacdf[_0x07ab('0x46')]?Mustache[_0x07ab('0x42')](_0x8dacdf['data3'],_0x5ac354):'';break;}this[_0x07ab('0x30')](util[_0x07ab('0x50')](_0x07ab('0x51'),this['agents'][_0x5ac354[_0x07ab('0x34')]]['name']),util[_0x07ab('0x50')](_0x07ab('0x52'),_0x8dacdf[_0x07ab('0x53')]['toLowerCase'](),barAndWebActions[_0x8dacdf[_0x07ab('0x3e')]]),_[_0x07ab('0x38')](_0x3edcc8,_0x5ac354));break;case _0x07ab('0x54'):this[_0x07ab('0x30')](util['format'](_0x07ab('0x51'),this['agents'][_0x5ac354[_0x07ab('0x34')]][_0x07ab('0x55')]),util[_0x07ab('0x50')](_0x07ab('0x56'),_0x8dacdf['action'][_0x07ab('0x3b')]()),_[_0x07ab('0x38')]({'ProjectId':parseInt(_0x8dacdf[_0x07ab('0x3e')],0xa)},_0x5ac354));break;default:this[_0x07ab('0x30')](util[_0x07ab('0x50')](_0x07ab('0x51'),this[_0x07ab('0xe')][_0x5ac354[_0x07ab('0x34')]][_0x07ab('0x55')]),util['format'](_0x07ab('0x56'),_0x8dacdf['action'][_0x07ab('0x3b')]()),_['merge']({},_0x8dacdf,_0x5ac354));}}switch(_0x8dacdf['action'][_0x07ab('0x3b')]()){case _0x07ab('0x3c'):cmContact[_0x07ab('0x57')](this[_0x07ab('0xe')][_0x5ac354[_0x07ab('0x34')]],this['triggers'][_0x144406],_0x8dacdf,_0x5ac354);break;case _0x07ab('0x58'):integration[_0x07ab('0x57')](_0x8dacdf,_0x5ac354,this[_0x07ab('0x59')],this[_0x07ab('0xe')][_0x5ac354[_0x07ab('0x34')]],this['voiceQueues'][_0x5ac354[_0x07ab('0x5a')]],this[_0x07ab('0x11')][_0x5ac354[_0x07ab('0x5b')]]);break;case _0x07ab('0x5c'):urlforward[_0x07ab('0x57')](_0x8dacdf,_0x5ac354);break;case _0x07ab('0x5d'):script[_0x07ab('0x57')](_0x8dacdf,_0x5ac354);break;}}}}}}};Trigger[_0x07ab('0x2f')]['buildUri']=function(_0x241e6b,_0x3ed226,_0x51a7f7){var _0x3b199e=url[_0x07ab('0x5e')](Mustache[_0x07ab('0x42')](_0x241e6b,_0x3ed226),!![]);if(_0x51a7f7){_[_0x07ab('0x38')](_0x3b199e['query'],_0x3ed226);}delete _0x3b199e[_0x07ab('0x5f')];var _0x184514=url[_0x07ab('0x50')](_0x3b199e);_0x184514=_0x184514[_0x07ab('0x60')](/\/\?/g,'?');return _0x184514;};Trigger['prototype'][_0x07ab('0x37')]=function(_0x4a2bd9,_0x52e609){var _0x5224e9=!![],_0x54e3db=!![];if(_0x4a2bd9[_0x07ab('0x61')][_0x07ab('0x3a')]){_0x5224e9=_[_0x07ab('0x62')](_0x4a2bd9[_0x07ab('0x61')],this[_0x07ab('0x63')](_0x52e609,_0x4a2bd9[_0x07ab('0x64')]));}if(_0x4a2bd9[_0x07ab('0x65')]['length']){_0x54e3db=_[_0x07ab('0x66')](_0x4a2bd9['AnyConditions'],this['checkConditions'](_0x52e609,_0x4a2bd9[_0x07ab('0x64')]));}return _0x5224e9&&_0x54e3db;};Trigger[_0x07ab('0x2f')]['checkConditions']=function(_0x1e0e18,_0x26eabb){return function(_0xba30a8){switch(_0xba30a8['field']){case _0x07ab('0x67'):if(_0x1e0e18[_0x07ab('0x64')]===_0x26eabb){if(_0x26eabb===_0x07ab('0x68')){return _0x1e0e18[_0x07ab('0x69')]?operators[_0xba30a8['operator']](Number(_0xba30a8['value']),_0x1e0e18['ChatWebsiteId']):![];}else{return _0x1e0e18[_[_0x07ab('0x6a')](_0x26eabb)+_0x07ab('0x6b')]?operators[_0xba30a8['operator']](Number(_0xba30a8[_0x07ab('0x6c')]),_0x1e0e18[_[_0x07ab('0x6a')](_0x26eabb)+_0x07ab('0x6b')]):![];}}break;case _0x07ab('0x6d'):case'message':if(_0x1e0e18[_0x07ab('0x64')]===_0x26eabb){return _0x1e0e18[_0x07ab('0x6e')]?operators[_0xba30a8[_0x07ab('0x6f')]](_0xba30a8[_0x07ab('0x6c')],_0x1e0e18[_0x07ab('0x6e')]):![];}break;case _0x07ab('0x5a'):return _0x1e0e18['queue']?operators[_0xba30a8[_0x07ab('0x6f')]](_0xba30a8[_0x07ab('0x6c')],_0x1e0e18[_0x07ab('0x5a')]):![];case _0x07ab('0x70'):return _0x1e0e18[_0x07ab('0x71')]?operators[_0xba30a8[_0x07ab('0x6f')]](_0xba30a8[_0x07ab('0x6c')],_0x1e0e18[_0x07ab('0x71')]):![];case _0x07ab('0x72'):return _0x1e0e18[_0x07ab('0x72')]?operators[_0xba30a8[_0x07ab('0x6f')]](_0xba30a8['value'],_0x1e0e18[_0x07ab('0x72')]):![];case _0x07ab('0x5b'):return _0x1e0e18[_0x07ab('0x5b')]?operators[_0xba30a8[_0x07ab('0x6f')]](_0xba30a8[_0x07ab('0x6c')],_0x1e0e18[_0x07ab('0x5b')]):![];}return![];};};module[_0x07ab('0x73')]=Trigger;
\ No newline at end of file
+var _0x9e9b=['custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','stringify','motionChannel','undefined','voice','checkTriggers','interface','status','merge','variables','Actions','length','contactmanager','motionbar','browser','data1','TemplateId','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','windowWidth','data5','800','windowHeight','data6','winapp','winArguments','emit','format','user:%s','trigger:%s:%s','toLowerCase','jscripty','name','trigger:%s','action','exec','integration','accounts','queue','routeId','urlforward','script','parse','search','replace','checkTrigger','channel','AllConditions','checkConditions','AnyConditions','some','account','chat','value','ChatWebsiteId','upperFirst','operator','event','membername','lastevent','exports','util','lodash','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','defaults','redis','localhost','popup','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer'];(function(_0x45932a,_0x184d29){var _0x1a7875=function(_0x289d97){while(--_0x289d97){_0x45932a['push'](_0x45932a['shift']());}};_0x1a7875(++_0x184d29);}(_0x9e9b,0x1ba));var _0xb9e9=function(_0x1282a0,_0x58b2f9){_0x1282a0=_0x1282a0-0x0;var _0x18af0c=_0x9e9b[_0x1282a0];return _0x18af0c;};'use strict';var util=require(_0xb9e9('0x0'));var _=require(_0xb9e9('0x1'));var url=require(_0xb9e9('0x2'));var Mustache=require(_0xb9e9('0x3'));var Redis=require(_0xb9e9('0x4'));var urlforward=require(_0xb9e9('0x5'));var integration=require(_0xb9e9('0x6'));var cmContact=require(_0xb9e9('0x7'));var script=require(_0xb9e9('0x8'));var config=require(_0xb9e9('0x9'));var logger=require(_0xb9e9('0xa'))('trigger');var ami=require('../ami');config['redis']=_[_0xb9e9('0xb')](config[_0xb9e9('0xc')],{'host':_0xb9e9('0xd'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb9e9('0xc')]));var operators={'equals':function(_0x50496e,_0x863edf){return _0x50496e==_0x863edf;},'not_equals':function(_0x12f2ad,_0x5d0f23){return _0x12f2ad!=_0x5d0f23;}};var barAndWebActions=[_0xb9e9('0xe'),_0xb9e9('0x2'),'winapp'];function Trigger(_0x2c433f){this[_0xb9e9('0xf')]=_0x2c433f[_0xb9e9('0xf')];this[_0xb9e9('0x10')]=_0x2c433f['agents'];this[_0xb9e9('0x11')]=_0x2c433f[_0xb9e9('0x11')];this[_0xb9e9('0x12')]=_0x2c433f[_0xb9e9('0x12')];this[_0xb9e9('0x13')]=_0x2c433f[_0xb9e9('0x13')];this[_0xb9e9('0x14')]=_0x2c433f['zendeskAccounts'];this[_0xb9e9('0x15')]=_0x2c433f[_0xb9e9('0x15')];this[_0xb9e9('0x16')]=_0x2c433f[_0xb9e9('0x16')];this[_0xb9e9('0x17')]=_0x2c433f['sugarcrmAccounts'];this[_0xb9e9('0x18')]=_0x2c433f['zohoAccounts'];this['deskAccounts']=_0x2c433f[_0xb9e9('0x19')];this[_0xb9e9('0x1a')]=_0x2c433f[_0xb9e9('0x1a')];this[_0xb9e9('0x1b')]=_0x2c433f[_0xb9e9('0x1b')];this[_0xb9e9('0x1c')]=_0x2c433f[_0xb9e9('0x1c')];this[_0xb9e9('0x1d')]=_0x2c433f[_0xb9e9('0x1d')];this['accounts']={'zendesk':this[_0xb9e9('0x14')],'salesforce':this[_0xb9e9('0x16')],'freshdesk':this[_0xb9e9('0x15')],'sugarcrm':this[_0xb9e9('0x17')],'zoho':this[_0xb9e9('0x18')],'desk':this['deskAccounts'],'vtiger':this[_0xb9e9('0x1a')],'dynamics365':this[_0xb9e9('0x1c')],'freshsales':this[_0xb9e9('0x1d')],'servicenow':this[_0xb9e9('0x1b')]};ami['on']('custom:agentcalled',this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x20'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x21'),this['syncCustomEvent'][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x22'),this['syncCustomEvent']['bind'](this));ami['on'](_0xb9e9('0x23'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x24'),this[_0xb9e9('0x1e')]['bind'](this));ami['on']('custom:agentbusy',this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x25'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x26'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x27'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x28'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x29'),this[_0xb9e9('0x1e')]['bind'](this));ami['on'](_0xb9e9('0x2a'),this[_0xb9e9('0x2b')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2c'),this[_0xb9e9('0x2b')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2d'),this['syncAgentDial'][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2e'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x2f'),this['syncCustomEvent']['bind'](this));ami['on']('custom:incomingmessage',this['syncCustomEvent']['bind'](this));ami['on'](_0xb9e9('0x30'),this['syncCustomEvent'][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x31'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));ami['on'](_0xb9e9('0x32'),this[_0xb9e9('0x1e')][_0xb9e9('0x1f')](this));}Trigger[_0xb9e9('0x33')]['emit']=function(_0x362c6d,_0x571d9d,_0x590d96){logger['info'](_0x362c6d,_0x571d9d,JSON[_0xb9e9('0x34')](_0x590d96));io['to'](_0x362c6d)['emit'](_0x571d9d,_0x590d96);};Trigger[_0xb9e9('0x33')]['syncCustomEvent']=function(_0x41c011){var _0x5af878=_['clone'](_0x41c011);if(typeof _0x5af878[_0xb9e9('0x35')]===_0xb9e9('0x36')){_0x5af878[_0xb9e9('0x35')]=_0xb9e9('0x37');}this[_0xb9e9('0x38')](_0x5af878);};Trigger['prototype'][_0xb9e9('0x2b')]=function(_0x5ea735){if(this[_0xb9e9('0x10')][_0x5ea735[_0xb9e9('0x39')]]){this[_0xb9e9('0x1e')](_0x5ea735);}};Trigger[_0xb9e9('0x33')]['checkTriggers']=function(_0x23b70b){var _0x48f761;for(var _0x3ceb00 in this[_0xb9e9('0xf')]){if(this['triggers']['hasOwnProperty'](_0x3ceb00)){if(this['triggers'][_0x3ceb00][_0xb9e9('0x3a')]){_0x48f761=this['checkTrigger'](this[_0xb9e9('0xf')][_0x3ceb00],_0x23b70b);if(_0x48f761){_[_0xb9e9('0x3b')](_0x23b70b,_0x23b70b[_0xb9e9('0x3c')]);for(var _0xb407dc=0x0,_0xeefcdd,_0x1ea957,_0x16c38e;_0xb407dc<this[_0xb9e9('0xf')][_0x3ceb00][_0xb9e9('0x3d')][_0xb9e9('0x3e')];_0xb407dc+=0x1){_0xeefcdd=this[_0xb9e9('0xf')][_0x3ceb00][_0xb9e9('0x3d')][_0xb407dc];if(this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]]){switch(_0xeefcdd['action']['toLowerCase']()){case _0xb9e9('0x3f'):break;case _0xb9e9('0x40'):case _0xb9e9('0x41'):var _0x41582d={};switch(barAndWebActions[_0xeefcdd[_0xb9e9('0x42')]]){case _0xb9e9('0xe'):_0x41582d[_0xb9e9('0x43')]=_0xeefcdd[_0xb9e9('0x44')];_0x41582d[_0xb9e9('0x45')]=this[_0xb9e9('0x12')][_0xeefcdd[_0xb9e9('0x44')]]?Mustache[_0xb9e9('0x46')](this[_0xb9e9('0x12')][_0xeefcdd['data2']][_0xb9e9('0x45')],_0x23b70b):_0xb9e9('0x47');break;case _0xb9e9('0x2'):_0x41582d[_0xb9e9('0x48')]=this[_0xb9e9('0x49')](_0xeefcdd[_0xb9e9('0x44')],_0x23b70b,_[_0xb9e9('0x4a')](_0xeefcdd[_0xb9e9('0x4b')])?!![]:parseInt(_0xeefcdd[_0xb9e9('0x4b')],0xa));if(_['isNil'](_0xeefcdd['data4'])){_0x41582d[_0xb9e9('0x4c')]='0';}else{_0x41582d['uriLocation']=_0xeefcdd['data4'];_0x41582d[_0xb9e9('0x4d')]=_[_0xb9e9('0x4a')](_0xeefcdd[_0xb9e9('0x4e')])?_0xb9e9('0x4f'):_0xeefcdd['data5'];_0x41582d[_0xb9e9('0x50')]=_[_0xb9e9('0x4a')](_0xeefcdd[_0xb9e9('0x51')])?'600':_0xeefcdd[_0xb9e9('0x51')];}break;case _0xb9e9('0x52'):_0x41582d['winApplication']=_0xeefcdd['data2']?Mustache[_0xb9e9('0x46')](_0xeefcdd['data2'],_0x23b70b):'';_0x41582d[_0xb9e9('0x53')]=_0xeefcdd[_0xb9e9('0x4b')]?Mustache[_0xb9e9('0x46')](_0xeefcdd[_0xb9e9('0x4b')],_0x23b70b):'';break;}this[_0xb9e9('0x54')](util[_0xb9e9('0x55')](_0xb9e9('0x56'),this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]]['name']),util[_0xb9e9('0x55')](_0xb9e9('0x57'),_0xeefcdd['action'][_0xb9e9('0x58')](),barAndWebActions[_0xeefcdd[_0xb9e9('0x42')]]),_[_0xb9e9('0x3b')](_0x41582d,_0x23b70b));break;case _0xb9e9('0x59'):this[_0xb9e9('0x54')](util[_0xb9e9('0x55')](_0xb9e9('0x56'),this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]][_0xb9e9('0x5a')]),util['format']('trigger:%s',_0xeefcdd['action'][_0xb9e9('0x58')]()),_[_0xb9e9('0x3b')]({'ProjectId':parseInt(_0xeefcdd[_0xb9e9('0x42')],0xa)},_0x23b70b));break;default:this[_0xb9e9('0x54')](util['format'](_0xb9e9('0x56'),this[_0xb9e9('0x10')][_0x23b70b['interface']][_0xb9e9('0x5a')]),util[_0xb9e9('0x55')](_0xb9e9('0x5b'),_0xeefcdd[_0xb9e9('0x5c')][_0xb9e9('0x58')]()),_[_0xb9e9('0x3b')]({},_0xeefcdd,_0x23b70b));}}switch(_0xeefcdd[_0xb9e9('0x5c')]['toLowerCase']()){case _0xb9e9('0x3f'):cmContact[_0xb9e9('0x5d')](this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]],this[_0xb9e9('0xf')][_0x3ceb00],_0xeefcdd,_0x23b70b);break;case _0xb9e9('0x5e'):integration[_0xb9e9('0x5d')](_0xeefcdd,_0x23b70b,this[_0xb9e9('0x5f')],this[_0xb9e9('0x10')][_0x23b70b[_0xb9e9('0x39')]],this[_0xb9e9('0x11')][_0x23b70b[_0xb9e9('0x60')]],this[_0xb9e9('0x13')][_0x23b70b[_0xb9e9('0x61')]]);break;case _0xb9e9('0x62'):urlforward[_0xb9e9('0x5d')](_0xeefcdd,_0x23b70b);break;case _0xb9e9('0x63'):script['exec'](_0xeefcdd,_0x23b70b);break;}}}}}}};Trigger[_0xb9e9('0x33')][_0xb9e9('0x49')]=function(_0x508a32,_0x26a150,_0x26f3ea){var _0x2c4018=url[_0xb9e9('0x64')](Mustache[_0xb9e9('0x46')](_0x508a32,_0x26a150),!![]);if(_0x26f3ea){_[_0xb9e9('0x3b')](_0x2c4018['query'],_0x26a150);}delete _0x2c4018[_0xb9e9('0x65')];var _0x4daa14=url[_0xb9e9('0x55')](_0x2c4018);_0x4daa14=_0x4daa14[_0xb9e9('0x66')](/\/\?/g,'?');return _0x4daa14;};Trigger[_0xb9e9('0x33')][_0xb9e9('0x67')]=function(_0x321b6d,_0x274c4c){var _0x4858a1=!![];var _0x2fe60e=!![];var _0x49f67e=![];if(_0x321b6d[_0xb9e9('0x68')]===_0x274c4c[_0xb9e9('0x35')]){_0x49f67e=!![];}if(_0x321b6d[_0xb9e9('0x69')]['length']){_0x4858a1=_['every'](_0x321b6d[_0xb9e9('0x69')],this[_0xb9e9('0x6a')](_0x274c4c,_0x321b6d[_0xb9e9('0x68')]));}if(_0x321b6d[_0xb9e9('0x6b')]['length']){_0x2fe60e=_[_0xb9e9('0x6c')](_0x321b6d[_0xb9e9('0x6b')],this[_0xb9e9('0x6a')](_0x274c4c,_0x321b6d[_0xb9e9('0x68')]));}return _0x49f67e&&_0x4858a1&&_0x2fe60e;};Trigger[_0xb9e9('0x33')][_0xb9e9('0x6a')]=function(_0x45cd9b,_0x47b95b){return function(_0x25e8e2){switch(_0x25e8e2['field']){case _0xb9e9('0x6d'):if(_0x45cd9b[_0xb9e9('0x68')]===_0x47b95b){if(_0x47b95b===_0xb9e9('0x6e')){return _0x45cd9b['ChatWebsiteId']?operators[_0x25e8e2['operator']](Number(_0x25e8e2[_0xb9e9('0x6f')]),_0x45cd9b[_0xb9e9('0x70')]):![];}else{return _0x45cd9b[_[_0xb9e9('0x71')](_0x47b95b)+'AccountId']?operators[_0x25e8e2[_0xb9e9('0x72')]](Number(_0x25e8e2[_0xb9e9('0x6f')]),_0x45cd9b[_['upperFirst'](_0x47b95b)+'AccountId']):![];}}break;case'interaction':case'message':if(_0x45cd9b[_0xb9e9('0x68')]===_0x47b95b){return _0x45cd9b[_0xb9e9('0x73')]?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2[_0xb9e9('0x6f')],_0x45cd9b['event']):![];}break;case'queue':return _0x45cd9b[_0xb9e9('0x60')]?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2['value'],_0x45cd9b[_0xb9e9('0x60')]):![];case'agent':return _0x45cd9b[_0xb9e9('0x74')]?operators[_0x25e8e2['operator']](_0x25e8e2[_0xb9e9('0x6f')],_0x45cd9b['membername']):![];case'lastevent':return _0x45cd9b['lastevent']?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2[_0xb9e9('0x6f')],_0x45cd9b[_0xb9e9('0x75')]):![];case _0xb9e9('0x61'):return _0x45cd9b[_0xb9e9('0x61')]?operators[_0x25e8e2[_0xb9e9('0x72')]](_0x25e8e2['value'],_0x45cd9b['routeId']):![];}return![];};};module[_0xb9e9('0x76')]=Trigger;
\ No newline at end of file
index b11d393..1d1c92c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x547005,_0x48649f){var _0x54e31e=function(_0x158f57){while(--_0x158f57){_0x547005['push'](_0x547005['shift']());}};_0x54e31e(++_0x48649f);}(_0x3e74,0x175));var _0x43e7=function(_0x55f7df,_0x307618){_0x55f7df=_0x55f7df-0x0;var _0x4824a2=_0x3e74[_0x55f7df];return _0x4824a2;};'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
+var _0x5fc3=['map','forEach','includes','string','picklist','nameField','customField','toLowerCase','content','type','custom_fields','variable','variableName','idField','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','phone','new','xCALLY','Motion','CTI','concat','Descriptions','/api/v2/users/%d','user','Fields','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','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','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','recordingURL','The\x20User\x20ID\x20is:','destcalleridnum','Ticket\x20created!','[OUTBOUND]','unmanaged','lastevent','Recording\x20is\x20enabled!','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','emit','application/json','info','Getting\x20agent\x20with\x20email','%s/users','remoteUri','total_entries','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','format','%s/users/me','debug','stringify','authType','%s:%s','username','token','%s/token:%s','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','length'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0x5fc3,0xa8));var _0x35fc=function(_0x3f25b2,_0x412bd4){_0x3f25b2=_0x3f25b2-0x0;var _0xd8caeb=_0x5fc3[_0x3f25b2];return _0xd8caeb;};'use strict';var _=require(_0x35fc('0x0'));var rp=require(_0x35fc('0x1'));var md5=require('md5');var util=require(_0x35fc('0x2'));var Redis=require(_0x35fc('0x3'));var intUtil=require(_0x35fc('0x4'));var config=require(_0x35fc('0x5'));var logger=require(_0x35fc('0x6'))('desk');config[_0x35fc('0x7')]=_[_0x35fc('0x8')](config[_0x35fc('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x35fc('0x7')]));function emit(_0x508b32,_0x16e153,_0x27524f){io['to'](_0x508b32)[_0x35fc('0x9')](_0x16e153,_0x27524f);}var headers={'Content-Type':_0x35fc('0xa'),'Accept':_0x35fc('0xa')};function getUser(_0xf9d3a6,_0x2051ab){if(intUtil['validateEmail'](_0x2051ab)===!![]){logger[_0x35fc('0xb')](_0x35fc('0xc'),_0x2051ab);return request({'uri':util['format'](_0x35fc('0xd'),_0xf9d3a6[_0x35fc('0xe')])})['then'](function(_0xda83fb){if(_0xda83fb[_0x35fc('0xf')]){return _['find'](_0xda83fb['_embedded'][_0x35fc('0x10')],{'email':_0x2051ab});}})['then'](function(_0x397738){if(_0x397738){logger[_0x35fc('0xb')](_0x35fc('0x11'));return _0x397738;}else{logger[_0x35fc('0xb')](_0x35fc('0x12'));return request({'uri':util['format']('%s/users/me',_0xf9d3a6['remoteUri'])});}});}else{logger['info'](_0x35fc('0x13'));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x15'),_0xf9d3a6[_0x35fc('0xe')])});}}function request(_0x227a49){logger[_0x35fc('0x16')]('[HTTP]',JSON[_0x35fc('0x17')](_0x227a49));return rp(_[_0x35fc('0x8')](_0x227a49,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x41e165){var _0x363e47;if(_0x41e165[_0x35fc('0x18')]==='basic'){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x19'),_0x41e165[_0x35fc('0x1a')],_0x41e165['password']);}else if(_0x41e165[_0x35fc('0x18')]===_0x35fc('0x1b')){_0x363e47=util[_0x35fc('0x14')](_0x35fc('0x1c'),_0x41e165[_0x35fc('0x1a')],_0x41e165[_0x35fc('0x1b')]);}return util[_0x35fc('0x14')](_0x35fc('0x1d'),new Buffer(_0x363e47)[_0x35fc('0x1e')](_0x35fc('0x1f')));}function getEndUser(_0x5bd2b8,_0x323aee,_0xd5399f){logger[_0x35fc('0xb')](_0x35fc('0x20'),_0xd5399f);return request({'uri':util[_0x35fc('0x14')]('%s/customers/search',_0x5bd2b8[_0x35fc('0xe')]),'qs':{'phone':_0xd5399f}})[_0x35fc('0x21')](function(_0x561bf8){if(_0x561bf8[_0x35fc('0xf')]){logger[_0x35fc('0xb')](_0x35fc('0x22'));return _0x561bf8['_embedded'][_0x35fc('0x10')][0x0];}else{logger['info'](_0x35fc('0x23'));return request({'uri':util[_0x35fc('0x14')]('%s/customers',_0x5bd2b8['remoteUri']),'method':_0x35fc('0x24'),'body':{'first_name':_0x323aee,'title':_0x323aee,'phone_numbers':[{'type':'work','value':_0xd5399f}]}});}});}function getTags(_0x274208,_0x1a5d92){var _0x57001c=[];if(_0x274208&&_0x274208[_0x35fc('0x25')]>0x0){_0x57001c=_[_0x35fc('0x26')](_0x274208,_0x1a5d92);}return _0x57001c;}function getCustomFields(_0x383837,_0x9f3c8a){var _0x3735da=[];var _0x134dfa={'custom_fields':{}};if(_0x383837[_0x35fc('0x25')]>0x0){_[_0x35fc('0x27')](_0x383837,function(_0x54aedc){if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc['type'])&&_0x54aedc[_0x35fc('0x2b')]&&!_0x54aedc[_0x35fc('0x2c')]){_0x134dfa[_0x54aedc[_0x35fc('0x2b')][_0x35fc('0x2d')]()]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_[_0x35fc('0x28')]([_0x35fc('0x29'),_0x35fc('0x2a')],_0x54aedc[_0x35fc('0x2f')])&&_0x54aedc['idField']&&_0x54aedc['customField']){_0x134dfa[_0x35fc('0x30')][_0x54aedc['idField']]=_0x54aedc[_0x35fc('0x2e')][_0x35fc('0x1e')]();}else if(_0x54aedc[_0x35fc('0x2f')]===_0x35fc('0x31')&&_0x54aedc[_0x35fc('0x32')]&&_0x54aedc[_0x35fc('0x33')]&&_0x54aedc['customField']){_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc[_0x35fc('0x32')]][_0x35fc('0x1e')]());}else if(_0x54aedc[_0x35fc('0x2f')]==='customVariable'&&_0x54aedc[_0x35fc('0x34')]&&_0x54aedc[_0x35fc('0x34')][_0x35fc('0x35')]&&_0x54aedc['idField']&&_0x54aedc[_0x35fc('0x2c')]){_0x9f3c8a[_0x54aedc['Variable'][_0x35fc('0x35')][_0x35fc('0x2d')]()]&&(_0x134dfa[_0x35fc('0x30')][_0x54aedc[_0x35fc('0x33')]]=_0x9f3c8a[_0x54aedc['Variable']['name']['toLowerCase']()][_0x35fc('0x1e')]());}});}if(_0x134dfa['priority']){_0x134dfa[_0x35fc('0x36')]=Number(_0x134dfa['priority']);}return _0x134dfa;}function getTicket(_0x9c6b65,_0x1f2d66,_0x2ca9ac,_0x22b724,_0x1c10e0){logger[_0x35fc('0xb')](_0x35fc('0x37'));var _0x4ec0dc=_[_0x35fc('0x38')]({'subject':intUtil[_0x35fc('0x39')](_0x22b724['Subjects'],_0x1c10e0,'\x20'),'type':_0x35fc('0x3a'),'status':_0x35fc('0x3b'),'labels':[_0x35fc('0x3c'),_0x35fc('0x3d'),_0x35fc('0x3e')][_0x35fc('0x3f')](getTags(_0x22b724['Tags'],_0x35fc('0x35'))),'description':intUtil[_0x35fc('0x39')](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0x35fc('0x41'),_0x1f2d66['id']),'class':_0x35fc('0x42')}},'message':{'direction':'in','body':intUtil['getString'](_0x22b724[_0x35fc('0x40')],_0x1c10e0,'\x0a')}},getCustomFields(_0x22b724[_0x35fc('0x43')],_0x1c10e0));return request({'uri':util[_0x35fc('0x14')](_0x35fc('0x44'),_0x9c6b65[_0x35fc('0xe')],_0x2ca9ac['id']),'method':_0x35fc('0x24'),'body':_0x4ec0dc});}exports[_0x35fc('0x45')]=function(_0x3ec51f,_0x5a7e9e,_0x596e83,_0x210d5d,_0x36fcf9,_0x4fdc6d){var _0x5c2e5c,_0x4ff202;_0x4fdc6d[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x4fdc6d['remoteUri']);_0x4fdc6d[_0x35fc('0x47')]=intUtil[_0x35fc('0x46')](_0x4fdc6d[_0x35fc('0x47')]);if(_0x36fcf9&&_0x36fcf9[_0x35fc('0x48')]){logger['info']('[QUEUE]','Recording\x20is\x20enabled!');_0x5a7e9e['recordingURL']=util['format'](_0x35fc('0x49'),_0x4fdc6d[_0x35fc('0x47')],_0x5a7e9e['uniqueid'],md5(_0x5a7e9e[_0x35fc('0x4a')]));}else{_0x5a7e9e['recordingURL']='';}headers[_0x35fc('0x4b')]=getAuth(_0x4fdc6d);return getUser(_0x4fdc6d,_0x210d5d[_0x35fc('0x4c')])[_0x35fc('0x21')](function(_0x2de5d1){_0x5c2e5c=_0x2de5d1;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x5c2e5c['id']);return getEndUser(_0x4fdc6d,_0x5a7e9e[_0x35fc('0x4d')],_0x5a7e9e[_0x35fc('0x4e')]);})['then'](function(_0x18181b){_0x4ff202=_0x18181b;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x4ff202['id']);return getTicket(_0x4fdc6d,_0x5c2e5c,_0x4ff202,_0x596e83,_0x5a7e9e);})[_0x35fc('0x21')](function(_0x5bc8c3){if(_0x5bc8c3){logger[_0x35fc('0xb')]('Ticket\x20created!');logger['info'](_0x35fc('0x50'),_0x5bc8c3['id']);switch(_0x4fdc6d[_0x35fc('0x2f')]){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x53'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d['name']),_0x35fc('0x55'),{'recordId':_0x5bc8c3['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')](_0x35fc('0x54'),_0x210d5d[_0x35fc('0x35')]),_0x35fc('0x58'),{'uri':util[_0x35fc('0x14')](_0x35fc('0x59'),_0x5bc8c3['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x52'),_0x35fc('0x5b'));}}})['catch'](function(_0x553ed6){console[_0x35fc('0x5a')](_0x553ed6);logger[_0x35fc('0x5a')](_0x35fc('0x52'),JSON[_0x35fc('0x17')](_0x553ed6));});};exports[_0x35fc('0x5c')]=function(_0x3e6494,_0x4a4798,_0x4f024c,_0x388521,_0x19b2ce,_0x395d63,_0x38bc78){var _0x5b2595,_0x467980;_0x395d63[_0x35fc('0xe')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0xe')]);_0x395d63[_0x35fc('0x47')]=intUtil['stripTrailingSlash'](_0x395d63[_0x35fc('0x47')]);if(_0x38bc78&&_0x38bc78[_0x35fc('0x5d')]&&_0x38bc78[_0x35fc('0x5d')]!==_0x35fc('0x5e')){logger['info']('[OUTBOUND]','Recording\x20is\x20enabled!');_0x4a4798[_0x35fc('0x5f')]=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x395d63[_0x35fc('0x47')],_0x4a4798[_0x35fc('0x4a')],md5(_0x4a4798[_0x35fc('0x4a')]));}headers[_0x35fc('0x4b')]=getAuth(_0x395d63);return getUser(_0x395d63,_0x388521[_0x35fc('0x4c')])['then'](function(_0x2d9d45){_0x5b2595=_0x2d9d45;logger[_0x35fc('0xb')](_0x35fc('0x60'),_0x5b2595['id']);return getEndUser(_0x395d63,_0x4a4798['destcalleridname'],_0x4a4798[_0x35fc('0x61')]);})[_0x35fc('0x21')](function(_0x47fb1a){_0x467980=_0x47fb1a;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0x467980['id']);return getTicket(_0x395d63,_0x5b2595,_0x467980,_0x4f024c,_0x4a4798);})[_0x35fc('0x21')](function(_0x1c4c33){if(_0x1c4c33){logger[_0x35fc('0xb')](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x1c4c33['id']);switch(_0x395d63['type']){case _0x35fc('0x51'):logger[_0x35fc('0xb')](_0x35fc('0x52'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:desk:display',{'recordId':_0x1c4c33['id']});break;case _0x35fc('0x56'):logger[_0x35fc('0xb')](_0x35fc('0x52'),_0x35fc('0x57'));emit(util[_0x35fc('0x14')]('user:%s',_0x388521['name']),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x395d63[_0x35fc('0xe')],_0x1c4c33['id'])});break;default:logger[_0x35fc('0x5a')](_0x35fc('0x63'),_0x35fc('0x5b'));}}})['catch'](function(_0x458eb8){logger[_0x35fc('0x5a')](_0x35fc('0x63'),JSON[_0x35fc('0x17')](_0x458eb8));});};exports[_0x35fc('0x64')]=function(_0x1d0e53,_0x27071b,_0x2127e0,_0x462ceb,_0x4c3ace,_0x35d7c8){var _0x47c75f,_0xfbd737;_0x35d7c8[_0x35fc('0xe')]=intUtil[_0x35fc('0x46')](_0x35d7c8[_0x35fc('0xe')]);_0x35d7c8['serverUrl']=intUtil[_0x35fc('0x46')](_0x35d7c8['serverUrl']);if(_0x4c3ace&&_0x4c3ace['monitor_format']){logger['info']('['+_0x27071b[_0x35fc('0x65')]['toUpperCase']()+']',_0x35fc('0x66'));_0x27071b['recordingURL']=util[_0x35fc('0x14')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x35d7c8[_0x35fc('0x47')],_0x27071b[_0x35fc('0x4a')],md5(_0x27071b[_0x35fc('0x4a')]));}else{_0x27071b[_0x35fc('0x5f')]='';}headers['Authorization']=getAuth(_0x35d7c8);return getUser(_0x35d7c8)[_0x35fc('0x21')](function(_0x1e2214){_0x47c75f=_0x1e2214;logger[_0x35fc('0xb')]('The\x20User\x20ID\x20is:',_0x47c75f['id']);return getEndUser(_0x35d7c8,_0x27071b[_0x35fc('0x4d')],_0x27071b[_0x35fc('0x4e')]);})[_0x35fc('0x21')](function(_0x3c1b56){_0xfbd737=_0x3c1b56;logger[_0x35fc('0xb')](_0x35fc('0x4f'),_0xfbd737['id']);return getTicket(_0x35d7c8,_0x47c75f,_0xfbd737,_0x2127e0,_0x27071b);})[_0x35fc('0x21')](function(_0x4464d5){if(_0x4464d5){logger['info'](_0x35fc('0x62'));logger[_0x35fc('0xb')](_0x35fc('0x50'),_0x4464d5['id']);}})['catch'](function(_0x1c88d8){logger[_0x35fc('0x5a')]('['+_0x27071b['lastevent']['toUpperCase']()+']',JSON[_0x35fc('0x17')](_0x1c88d8));});};
\ No newline at end of file
index 0eddeba..274e2ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd0=['socket.io-emitter','POST','remoteUri','password','clientSecret','then','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','userId','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','username','toLowerCase','outbound','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','destcalleridnum','calleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','value','telephone1','enduserId','contactid',']\x20Enduser\x20Created!','includes','string','nameField','customField','idField','indexOf','content','ticketType','incident','incidents','getString','Subjects','Descriptions','Fields','assign','/contacts(','callDirection','queue','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','emit','trigger:browser:url','serverUrl','stripTrailingSlash','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Dynamics365\x20integration','inspect','lodash','bluebird','request-promise','util','./util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2cd0,0xc2));var _0x02cd=function(_0x179f03,_0x4d05ab){_0x179f03=_0x179f03-0x0;var _0x2fffa2=_0x2cd0[_0x179f03];return _0x2fffa2;};'use strict';var _=require(_0x02cd('0x0'));var BPromise=require(_0x02cd('0x1'));var rp=require(_0x02cd('0x2'));var util=require(_0x02cd('0x3'));var intUtil=require(_0x02cd('0x4'));var md5=require('md5');var Redis=require(_0x02cd('0x5'));var logger=require(_0x02cd('0x6'))(_0x02cd('0x7'));var config=require(_0x02cd('0x8'));config['redis']=_['defaults'](config[_0x02cd('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x02cd('0xa'))(new Redis(config[_0x02cd('0x9')]));function getAuthToken(_0x4f9809,_0xa061b7,_0x162ad8){var _0x59124f={'method':_0x02cd('0xb'),'uri':_0xa061b7,'form':{'client_id':_0x4f9809['clientId'],'resource':_0x4f9809[_0x02cd('0xc')],'username':_0x4f9809['username'],'password':_0x4f9809[_0x02cd('0xd')],'grant_type':_0x02cd('0xd'),'client_secret':_0x4f9809[_0x02cd('0xe')]},'json':!![]};return rp(_0x59124f)[_0x02cd('0xf')](function(_0x2f219a){return _0x2f219a[_0x02cd('0x10')];})[_0x02cd('0x11')](function(_0x314bdd){logger[_0x02cd('0x12')]('['+[_0x162ad8[_0x02cd('0x13')]()]+_0x02cd('0x14'));return _0x314bdd[_0x02cd('0x15')];});}function getUser(_0x3b1204,_0x36672d,_0x1b6688,_0x3d8c3e,_0x110b09,_0x327733){return new BPromise(function(_0x59a60a,_0x296827){return getAuthToken(_0x36672d,_0x3d8c3e,_0x327733)[_0x02cd('0xf')](function(_0x3ec140){var _0x47395c={'method':_0x02cd('0x16'),'uri':_0x110b09+_0x02cd('0x17'),'headers':{'Authorization':_0x02cd('0x18')+_0x3ec140,'OData-Version':_0x02cd('0x19')},'json':!![]};return rp(_0x47395c);})['then'](function(_0x5ac57a){var _0x5dd533=_0x5ac57a['value'];var _0xba47c=![];var _0x335b51=null;if(!_['isNil'](_0x1b6688)){if(intUtil[_0x02cd('0x1a')](_0x1b6688[_0x02cd('0x1b')])){_0x3b1204[_0x02cd('0x1c')]=_0x1b6688['email'];for(_0x335b51=0x0;_0x335b51<_0x5dd533[_0x02cd('0x1d')];_0x335b51++){if(_0x5dd533[_0x335b51][_0x02cd('0x1e')]===_0x1b6688[_0x02cd('0x1b')]&&!_0x5dd533[_0x335b51][_0x02cd('0x1f')]){_0xba47c=!![];logger[_0x02cd('0x20')]('['+[_0x327733[_0x02cd('0x13')]()]+_0x02cd('0x21')+_0x5dd533[_0x335b51]['systemuserid']+'!');_0x3b1204[_0x02cd('0x22')]=_0x5dd533[_0x335b51][_0x02cd('0x23')];}}}}if(!_0xba47c){logger[_0x02cd('0x20')]('['+[_0x327733['toUpperCase']()]+_0x02cd('0x24'));_0x3b1204[_0x02cd('0x1c')]=_0x36672d[_0x02cd('0x25')];for(_0x335b51=0x0;_0x335b51<_0x5dd533[_0x02cd('0x1d')];_0x335b51++){if(_0x5dd533[_0x335b51][_0x02cd('0x1e')]===_0x36672d[_0x02cd('0x25')]){_0x3b1204[_0x02cd('0x22')]=_0x5dd533[_0x335b51][_0x02cd('0x23')];}}}_0x59a60a(_0x3b1204);})[_0x02cd('0x11')](function(_0x2c0633){_0x296827(_0x2c0633[_0x02cd('0x15')]);});});}function createEndUser(_0x49102e,_0xd4b8ff,_0x4ab7f7,_0x180db5,_0x3bb864,_0x255f09){return new BPromise(function(_0xe29fb5,_0x5b1b43){return getAuthToken(_0xd4b8ff,_0x4ab7f7,_0x255f09)['then'](function(_0x1b3b70){var _0x25ec96=_0x255f09[_0x02cd('0x26')]()===_0x02cd('0x27')?_0x3bb864['destcalleridnum']:_0x3bb864['calleridnum'];var _0x5bdac4={'method':_0x02cd('0xb'),'uri':_0x180db5+_0x02cd('0x28'),'body':{'telephone1':_0x25ec96,'fullname':_0x25ec96,'firstname':_0x25ec96,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x02cd('0x29')+_0x49102e[_0x02cd('0x22')]+')'},'headers':{'Authorization':_0x02cd('0x18')+_0x1b3b70,'OData-Version':_0x02cd('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x5bdac4);})[_0x02cd('0xf')](function(_0x516296){var _0x45ab9d=_0x516296[_0x02cd('0x2a')][_0x02cd('0x2b')];var _0x20c6ee=_0x45ab9d[_0x02cd('0x2c')](_0x45ab9d[_0x02cd('0x2d')]('(')+0x1,_0x45ab9d[_0x02cd('0x2d')](')'));_0x49102e['enduserId']=_0x20c6ee;_0xe29fb5(_0x49102e);})[_0x02cd('0x11')](function(_0x26e509){_0x5b1b43(_0x26e509[_0x02cd('0x15')]);});});}function getEndUser(_0x37ff0e,_0x316657,_0x1306e5,_0x302f8f,_0x1849fb,_0x5ac469){return new BPromise(function(_0x27e0b3,_0x583342){var _0x535805=_0x5ac469[_0x02cd('0x26')]()===_0x02cd('0x27')?_0x1849fb[_0x02cd('0x2e')]:_0x1849fb[_0x02cd('0x2f')];return getAuthToken(_0x316657,_0x1306e5,_0x5ac469)[_0x02cd('0xf')](function(_0x49bdfa){var _0x2b981d={'method':_0x02cd('0x16'),'uri':_0x302f8f+_0x02cd('0x30')+_0x535805[_0x02cd('0x31')]('+',_0x02cd('0x32'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x49bdfa,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x2b981d);})['then'](function(_0x81ca4e){var _0x214db7=null;if(_0x81ca4e){var _0x41a8ae=_0x81ca4e[_0x02cd('0x33')];var _0xf93956=![];for(_0x214db7=0x0;_0x214db7<_0x41a8ae[_0x02cd('0x1d')];_0x214db7++){if(_0x41a8ae[_0x214db7][_0x02cd('0x34')]===_0x535805){_0xf93956=!![];_0x37ff0e[_0x02cd('0x35')]=_0x41a8ae[_0x214db7][_0x02cd('0x36')];}}if(_0xf93956){_0x27e0b3(_0x37ff0e);}else{return createEndUser(_0x37ff0e,_0x316657,_0x1306e5,_0x302f8f,_0x1849fb,_0x5ac469)[_0x02cd('0xf')](function(_0x1bb624){logger[_0x02cd('0x20')]('['+[_0x5ac469[_0x02cd('0x13')]()]+']\x20Enduser\x20created!',_0x1bb624['enduserId']);_0x27e0b3(_0x1bb624);});}}else{return createEndUser(_0x37ff0e,_0x316657,_0x1306e5,_0x302f8f,_0x1849fb,_0x5ac469)['then'](function(_0x4c61bd){logger[_0x02cd('0x20')]('['+[_0x5ac469[_0x02cd('0x13')]()]+_0x02cd('0x37'),_0x4c61bd[_0x02cd('0x35')]);_0x27e0b3(_0x4c61bd);});}});});}function getCustomFields(_0x3e3e2d,_0x26c26a,_0xe5149d){var _0x53851d={};if(_0x3e3e2d[_0x02cd('0x1d')]>0x0){_['forEach'](_0x3e3e2d,function(_0x5dd0b5){if(_[_0x02cd('0x38')]([_0x02cd('0x39'),'picklist'],_0x5dd0b5['type'])&&_0x5dd0b5[_0x02cd('0x3a')]&&!_0x5dd0b5[_0x02cd('0x3b')]){var _0x222ff5=_0x5dd0b5[_0x02cd('0x3c')][_0x02cd('0x26')]();var _0x3e404a=_0x222ff5[_0x02cd('0x2c')](0x0,_0x222ff5[_0x02cd('0x3d')]('_'));var _0x401135=_0x222ff5['substring'](_0x222ff5['indexOf']('_')+0x1);if(_0x3e404a===_0xe5149d){_0x53851d[_0x401135]=_0x5dd0b5[_0x02cd('0x3e')];}}});}return _0x53851d;}function getTicket(_0x5a548b,_0x226c03,_0x291a00,_0xb4c756,_0x8e3a3e,_0x159663,_0x1fa3d6){return new BPromise(function(_0x2b1392,_0x3f8e95){var _0x5033e8;return getAuthToken(_0x226c03,_0x291a00,_0x1fa3d6)[_0x02cd('0xf')](function(_0x5520b0){if(_0x159663[_0x02cd('0x3f')]===_0x02cd('0x40')){_0x5033e8={'method':_0x02cd('0xb'),'uri':_0xb4c756+_0x02cd('0x41'),'body':Object['assign']({},{'title':intUtil[_0x02cd('0x42')](_0x159663[_0x02cd('0x43')],_0x8e3a3e,'\x20'),'description':intUtil['getString'](_0x159663[_0x02cd('0x44')],_0x8e3a3e,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x5a548b['enduserId']+')','ownerid@odata.bind':_0x02cd('0x29')+_0x5a548b[_0x02cd('0x22')]+')','caseorigincode':'1'},getCustomFields(_0x159663[_0x02cd('0x45')],_0x8e3a3e,_0x159663[_0x02cd('0x3f')])),'headers':{'Authorization':'Bearer\x20'+_0x5520b0,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x159663['ticketType']==='phonecall'){_0x5033e8={'method':'POST','uri':_0xb4c756+'phonecalls','body':Object[_0x02cd('0x46')]({},{'subject':intUtil['getString'](_0x159663[_0x02cd('0x43')],_0x8e3a3e,'\x20'),'phonenumber':String(_0x8e3a3e[_0x02cd('0x2f')]),'description':intUtil[_0x02cd('0x42')](_0x159663[_0x02cd('0x44')],_0x8e3a3e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x02cd('0x47')+_0x5a548b['enduserId']+')','ownerid@odata.bind':_0x02cd('0x29')+_0x5a548b['userId']+')','directioncode':_0x5a548b[_0x02cd('0x48')]===_0x02cd('0x49')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x02cd('0x29')+_0x5a548b[_0x02cd('0x22')]+')','participationtypemask':_0x5a548b[_0x02cd('0x48')]===_0x02cd('0x49')?0x2:0x1},{'partyid_contact@odata.bind':_0x02cd('0x47')+_0x5a548b[_0x02cd('0x35')]+')','participationtypemask':_0x5a548b[_0x02cd('0x48')]===_0x02cd('0x49')?0x1:0x2}]},getCustomFields(_0x159663[_0x02cd('0x45')],_0x8e3a3e,_0x159663['ticketType'])),'headers':{'Authorization':_0x02cd('0x18')+_0x5520b0,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x5033e8);})[_0x02cd('0xf')](function(_0x18f994){var _0x42f6a0=_0x18f994['headers']['odata-entityid'];var _0x1aba83=_0x42f6a0[_0x02cd('0x2c')](_0x42f6a0['lastIndexOf']('(')+0x1,_0x42f6a0[_0x02cd('0x2d')](')'));_0x5a548b[_0x02cd('0x4a')]=_0x1aba83;_0x2b1392(_0x5a548b);})[_0x02cd('0x11')](function(_0x1c1451){_0x3f8e95(_0x1c1451[_0x02cd('0x15')]);});});}function emit(_0x29251d,_0x1e0789,_0x3f925b,_0x2da909){var _0x4fdeef={'uri':util[_0x02cd('0x4b')](_0x02cd('0x4c'),_0x29251d,_0x3f925b,_0x2da909)};io['to'](util[_0x02cd('0x4b')]('user:%s',_0x1e0789))[_0x02cd('0x4d')](_0x02cd('0x4e'),_0x4fdeef);}exports['cs']=function(_0x3af5ed,_0x1f27a8,_0x4ca71b,_0x5d8cf8,_0x236eb4,_0x36832f,_0x1e24ec,_0x47e169){var _0x5ef975={};_0x36832f[_0x02cd('0xc')]=intUtil['stripTrailingSlash'](_0x36832f[_0x02cd('0xc')]);_0x36832f[_0x02cd('0x4f')]=intUtil[_0x02cd('0x50')](_0x36832f[_0x02cd('0x4f')]);_0x5ef975['callDirection']=_0x47e169==='queue'||_0x47e169===_0x02cd('0x51')?_0x02cd('0x49'):_0x02cd('0x27');var _0x127959=util['format']('%s/api/data/v9.0/',_0x36832f[_0x02cd('0xc')]);var _0x32540a=util[_0x02cd('0x4b')](_0x02cd('0x52'),_0x36832f['tenantId']);var _0x282b2a=util[_0x02cd('0x4b')](_0x02cd('0x53'),_0x36832f['serverUrl'],_0x1f27a8[_0x02cd('0x54')],md5(_0x1f27a8[_0x02cd('0x54')]));if(_0x236eb4&&_0x236eb4[_0x02cd('0x55')]){logger['info'](_0x02cd('0x56'),_0x02cd('0x57'));_0x1f27a8[_0x02cd('0x58')]=_0x282b2a;}else if(_0x1e24ec&&_0x1e24ec[_0x02cd('0x59')]&&_0x1e24ec[_0x02cd('0x59')]!==_0x02cd('0x5a')){logger[_0x02cd('0x20')](_0x02cd('0x5b'),_0x02cd('0x57'));_0x1f27a8[_0x02cd('0x58')]=_0x282b2a;}else{_0x1f27a8[_0x02cd('0x58')]='';}return getUser(_0x5ef975,_0x36832f,_0x5d8cf8,_0x32540a,_0x127959,_0x47e169)[_0x02cd('0xf')](function(_0x2fb089){logger[_0x02cd('0x20')]('['+_0x47e169['toUpperCase']()+_0x02cd('0x5c'),_0x2fb089[_0x02cd('0x22')]);logger['info']('['+_0x47e169[_0x02cd('0x13')]()+_0x02cd('0x5d'),_0x2fb089[_0x02cd('0x1c')]);return getEndUser(_0x2fb089,_0x36832f,_0x32540a,_0x127959,_0x1f27a8,_0x47e169);})[_0x02cd('0xf')](function(_0x32944a){logger[_0x02cd('0x20')]('['+_0x47e169[_0x02cd('0x13')]()+_0x02cd('0x5e'),_0x32944a[_0x02cd('0x35')]);logger[_0x02cd('0x20')]('['+_0x47e169[_0x02cd('0x13')]()+_0x02cd('0x5f'),_0x1f27a8[_0x02cd('0x2f')]);return getTicket(_0x32944a,_0x36832f,_0x32540a,_0x127959,_0x1f27a8,_0x4ca71b,_0x47e169);})[_0x02cd('0xf')](function(_0x281e83){logger[_0x02cd('0x20')](util[_0x02cd('0x4b')]('['+_0x47e169[_0x02cd('0x13')]()+_0x02cd('0x60'),_0x4ca71b[_0x02cd('0x3f')],_0x281e83[_0x02cd('0x4a')]));logger[_0x02cd('0x20')](util[_0x02cd('0x4b')]('['+_0x47e169[_0x02cd('0x13')]()+_0x02cd('0x61'),_0x47e169));if(_0x47e169!==_0x02cd('0x51')){logger[_0x02cd('0x20')]('['+_0x47e169[_0x02cd('0x13')]()+']',_0x02cd('0x62'));emit(_0x36832f[_0x02cd('0xc')],_0x5d8cf8[_0x02cd('0x63')],_0x4ca71b[_0x02cd('0x3f')],_0x281e83[_0x02cd('0x4a')]);}})[_0x02cd('0x11')](function(_0x17877b){logger[_0x02cd('0x12')]('['+_0x47e169[_0x02cd('0x13')]()+_0x02cd('0x64'),util[_0x02cd('0x65')](_0x17877b,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4227=[']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','unmanaged','ticketId','inspect','lodash','bluebird','request-promise','./util','md5','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','defaults','redis','socket.io-emitter','clientId','remoteUri','username','password','clientSecret','then','access_token','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','userEmail','catch','outbound','calleridnum','POST','contacts','/systemusers(','headers','lastIndexOf','enduserId','destcalleridnum','contacts?$select=telephone1&$filter=telephone1\x20eq\x20\x27','replace','%2b','telephone1','contactid',']\x20Enduser\x20Created!','forEach','type','nameField','customField','idField','toLowerCase','substring','indexOf','ticketType','incident','incidents','assign','getString','Fields','phonecall','phonecalls','Subjects','/contacts(','queue','format','user:%s','stripTrailingSlash','serverUrl','callDirection','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:'];(function(_0x4b3a7a,_0x4212cb){var _0x4abc37=function(_0x4ca611){while(--_0x4ca611){_0x4b3a7a['push'](_0x4b3a7a['shift']());}};_0x4abc37(++_0x4212cb);}(_0x4227,0x189));var _0x7422=function(_0x48f621,_0x4bbfbb){_0x48f621=_0x48f621-0x0;var _0x10dcf0=_0x4227[_0x48f621];return _0x10dcf0;};'use strict';var _=require(_0x7422('0x0'));var BPromise=require(_0x7422('0x1'));var rp=require(_0x7422('0x2'));var util=require('util');var intUtil=require(_0x7422('0x3'));var md5=require(_0x7422('0x4'));var Redis=require(_0x7422('0x5'));var logger=require(_0x7422('0x6'))(_0x7422('0x7'));var config=require(_0x7422('0x8'));config['redis']=_[_0x7422('0x9')](config[_0x7422('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x7422('0xb'))(new Redis(config[_0x7422('0xa')]));function getAuthToken(_0x5a0169,_0x46a5f6,_0x4d65b2){var _0x4fb6aa={'method':'POST','uri':_0x46a5f6,'form':{'client_id':_0x5a0169[_0x7422('0xc')],'resource':_0x5a0169[_0x7422('0xd')],'username':_0x5a0169[_0x7422('0xe')],'password':_0x5a0169[_0x7422('0xf')],'grant_type':_0x7422('0xf'),'client_secret':_0x5a0169[_0x7422('0x10')]},'json':!![]};return rp(_0x4fb6aa)[_0x7422('0x11')](function(_0xacfc52){return _0xacfc52[_0x7422('0x12')];})['catch'](function(_0x32493e){logger[_0x7422('0x13')]('['+[_0x4d65b2[_0x7422('0x14')]()]+']\x20Wrong\x20credentials!');return _0x32493e[_0x7422('0x15')];});}function getUser(_0x971fe9,_0x41e94f,_0x535dc3,_0x530708,_0x36e485,_0x59c200){return new BPromise(function(_0x3d6365,_0xc5f8a1){return getAuthToken(_0x41e94f,_0x530708,_0x59c200)['then'](function(_0x6d1005){var _0x27b038={'method':_0x7422('0x16'),'uri':_0x36e485+_0x7422('0x17'),'headers':{'Authorization':_0x7422('0x18')+_0x6d1005,'OData-Version':_0x7422('0x19')},'json':!![]};return rp(_0x27b038);})[_0x7422('0x11')](function(_0x12e678){var _0x43a849=_0x12e678[_0x7422('0x1a')];var _0x55385f=![];var _0x274ee6=null;if(!_[_0x7422('0x1b')](_0x535dc3)){if(intUtil[_0x7422('0x1c')](_0x535dc3[_0x7422('0x1d')])){_0x971fe9['userEmail']=_0x535dc3[_0x7422('0x1d')];for(_0x274ee6=0x0;_0x274ee6<_0x43a849[_0x7422('0x1e')];_0x274ee6++){if(_0x43a849[_0x274ee6][_0x7422('0x1f')]===_0x535dc3[_0x7422('0x1d')]&&!_0x43a849[_0x274ee6][_0x7422('0x20')]){_0x55385f=!![];logger[_0x7422('0x21')]('['+[_0x59c200[_0x7422('0x14')]()]+_0x7422('0x22')+_0x43a849[_0x274ee6][_0x7422('0x23')]+'!');_0x971fe9[_0x7422('0x24')]=_0x43a849[_0x274ee6]['systemuserid'];}}}}if(!_0x55385f){logger[_0x7422('0x21')]('['+[_0x59c200[_0x7422('0x14')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x971fe9[_0x7422('0x25')]=_0x41e94f['username'];for(_0x274ee6=0x0;_0x274ee6<_0x43a849[_0x7422('0x1e')];_0x274ee6++){if(_0x43a849[_0x274ee6][_0x7422('0x1f')]===_0x41e94f['username']){_0x971fe9[_0x7422('0x24')]=_0x43a849[_0x274ee6][_0x7422('0x23')];}}}_0x3d6365(_0x971fe9);})[_0x7422('0x26')](function(_0x5a4a41){_0xc5f8a1(_0x5a4a41[_0x7422('0x15')]);});});}function createEndUser(_0x2e7059,_0x874679,_0x265f02,_0x5387f8,_0x4521f5,_0x454a03){return new BPromise(function(_0x430fc9,_0x259c8e){return getAuthToken(_0x874679,_0x265f02,_0x454a03)['then'](function(_0xed0d58){var _0x2bc318=_0x454a03['toLowerCase']()===_0x7422('0x27')?_0x4521f5['destcalleridnum']:_0x4521f5[_0x7422('0x28')];var _0x462368={'method':_0x7422('0x29'),'uri':_0x5387f8+_0x7422('0x2a'),'body':{'telephone1':_0x2bc318,'fullname':_0x2bc318,'firstname':_0x2bc318,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x7422('0x2b')+_0x2e7059['userId']+')'},'headers':{'Authorization':_0x7422('0x18')+_0xed0d58,'OData-Version':_0x7422('0x19')},'json':!![],'resolveWithFullResponse':!![]};return rp(_0x462368);})[_0x7422('0x11')](function(_0x4d6470){var _0x330ff5=_0x4d6470[_0x7422('0x2c')]['odata-entityid'];var _0x31f5a7=_0x330ff5['substring'](_0x330ff5['lastIndexOf']('(')+0x1,_0x330ff5[_0x7422('0x2d')](')'));_0x2e7059[_0x7422('0x2e')]=_0x31f5a7;_0x430fc9(_0x2e7059);})[_0x7422('0x26')](function(_0x412e13){_0x259c8e(_0x412e13[_0x7422('0x15')]);});});}function getEndUser(_0x4f180f,_0x48cdf0,_0x5a3675,_0x1416ca,_0x34aa5b,_0x187ed6){return new BPromise(function(_0x3de49e,_0x12112e){var _0xbe3464=_0x187ed6['toLowerCase']()===_0x7422('0x27')?_0x34aa5b[_0x7422('0x2f')]:_0x34aa5b[_0x7422('0x28')];return getAuthToken(_0x48cdf0,_0x5a3675,_0x187ed6)[_0x7422('0x11')](function(_0x2fe2f4){var _0x506b66={'method':_0x7422('0x16'),'uri':_0x1416ca+_0x7422('0x30')+_0xbe3464[_0x7422('0x31')]('+',_0x7422('0x32'))+'\x27','headers':{'Authorization':_0x7422('0x18')+_0x2fe2f4,'If-None-Match':null,'OData-Version':_0x7422('0x19')},'json':!![]};return rp(_0x506b66);})['then'](function(_0x1bd0a2){var _0x1c53c2=null;if(_0x1bd0a2){var _0x4b57a8=_0x1bd0a2[_0x7422('0x1a')];var _0x3e683a=![];for(_0x1c53c2=0x0;_0x1c53c2<_0x4b57a8[_0x7422('0x1e')];_0x1c53c2++){if(_0x4b57a8[_0x1c53c2][_0x7422('0x33')]===_0xbe3464){_0x3e683a=!![];_0x4f180f['enduserId']=_0x4b57a8[_0x1c53c2][_0x7422('0x34')];}}if(_0x3e683a){_0x3de49e(_0x4f180f);}else{return createEndUser(_0x4f180f,_0x48cdf0,_0x5a3675,_0x1416ca,_0x34aa5b,_0x187ed6)[_0x7422('0x11')](function(_0x3010e0){logger['info']('['+[_0x187ed6[_0x7422('0x14')]()]+']\x20Enduser\x20created!',_0x3010e0[_0x7422('0x2e')]);_0x3de49e(_0x3010e0);});}}else{return createEndUser(_0x4f180f,_0x48cdf0,_0x5a3675,_0x1416ca,_0x34aa5b,_0x187ed6)['then'](function(_0x28c914){logger[_0x7422('0x21')]('['+[_0x187ed6[_0x7422('0x14')]()]+_0x7422('0x35'),_0x28c914[_0x7422('0x2e')]);_0x3de49e(_0x28c914);});}});});}function getCustomFields(_0x272fef,_0x4be293,_0x2f5d85){var _0x37e48c={};if(_0x272fef['length']>0x0){_[_0x7422('0x36')](_0x272fef,function(_0x55fb51){if(_['includes'](['string','picklist'],_0x55fb51[_0x7422('0x37')])&&_0x55fb51[_0x7422('0x38')]&&!_0x55fb51[_0x7422('0x39')]){var _0x192177=_0x55fb51[_0x7422('0x3a')][_0x7422('0x3b')]();var _0x2f8c3a=_0x192177[_0x7422('0x3c')](0x0,_0x192177['indexOf']('_'));var _0x1ff6aa=_0x192177[_0x7422('0x3c')](_0x192177[_0x7422('0x3d')]('_')+0x1);if(_0x2f8c3a===_0x2f5d85){_0x37e48c[_0x1ff6aa]=_0x55fb51['content'];}}});}return _0x37e48c;}function getTicket(_0x3daf18,_0x5d0129,_0x573fa1,_0x6bdfc9,_0x4dcc0a,_0xa0b58b,_0x381642){return new BPromise(function(_0x2b3f27,_0x276464){var _0x542f22;return getAuthToken(_0x5d0129,_0x573fa1,_0x381642)[_0x7422('0x11')](function(_0x47e56a){if(_0xa0b58b[_0x7422('0x3e')]===_0x7422('0x3f')){_0x542f22={'method':'POST','uri':_0x6bdfc9+_0x7422('0x40'),'body':Object[_0x7422('0x41')]({},{'title':intUtil[_0x7422('0x42')](_0xa0b58b['Subjects'],_0x4dcc0a,'\x20'),'description':intUtil[_0x7422('0x42')](_0xa0b58b['Descriptions'],_0x4dcc0a,'\x0a'),'customerid_contact@odata.bind':'/contacts('+_0x3daf18['enduserId']+')','ownerid@odata.bind':_0x7422('0x2b')+_0x3daf18[_0x7422('0x24')]+')','caseorigincode':'1'},getCustomFields(_0xa0b58b[_0x7422('0x43')],_0x4dcc0a,_0xa0b58b[_0x7422('0x3e')])),'headers':{'Authorization':'Bearer\x20'+_0x47e56a,'OData-Version':_0x7422('0x19')},'json':!![],'resolveWithFullResponse':!![]};}if(_0xa0b58b[_0x7422('0x3e')]===_0x7422('0x44')){_0x542f22={'method':'POST','uri':_0x6bdfc9+_0x7422('0x45'),'body':Object['assign']({},{'subject':intUtil[_0x7422('0x42')](_0xa0b58b[_0x7422('0x46')],_0x4dcc0a,'\x20'),'phonenumber':String(_0x4dcc0a[_0x7422('0x28')]),'description':intUtil[_0x7422('0x42')](_0xa0b58b['Descriptions'],_0x4dcc0a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x7422('0x47')+_0x3daf18[_0x7422('0x2e')]+')','ownerid@odata.bind':_0x7422('0x2b')+_0x3daf18[_0x7422('0x24')]+')','directioncode':_0x3daf18['callDirection']===_0x7422('0x48')?![]:!![],'phonecall_activity_parties':[{'partyid_systemuser@odata.bind':_0x7422('0x2b')+_0x3daf18[_0x7422('0x24')]+')','participationtypemask':_0x3daf18['callDirection']===_0x7422('0x48')?0x2:0x1},{'partyid_contact@odata.bind':_0x7422('0x47')+_0x3daf18[_0x7422('0x2e')]+')','participationtypemask':_0x3daf18['callDirection']===_0x7422('0x48')?0x1:0x2}]},getCustomFields(_0xa0b58b[_0x7422('0x43')],_0x4dcc0a,_0xa0b58b[_0x7422('0x3e')])),'headers':{'Authorization':'Bearer\x20'+_0x47e56a,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x542f22);})[_0x7422('0x11')](function(_0x375f50){var _0x1a1e10=_0x375f50[_0x7422('0x2c')]['odata-entityid'];var _0x2a51f3=_0x1a1e10[_0x7422('0x3c')](_0x1a1e10[_0x7422('0x2d')]('(')+0x1,_0x1a1e10[_0x7422('0x2d')](')'));_0x3daf18['ticketId']=_0x2a51f3;_0x2b3f27(_0x3daf18);})['catch'](function(_0xd87338){_0x276464(_0xd87338[_0x7422('0x15')]);});});}function emit(_0xbb18b6,_0x8fad96,_0x3a3d35,_0x1180b8){var _0x54d8db={'uri':util['format']('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0xbb18b6,_0x3a3d35,_0x1180b8)};io['to'](util[_0x7422('0x49')](_0x7422('0x4a'),_0x8fad96))['emit']('trigger:browser:url',_0x54d8db);}exports['cs']=function(_0x446d44,_0x551b8d,_0x1ca9f3,_0x329020,_0x389682,_0x103918,_0x11170e,_0x2a46ac){var _0x40a137={};_0x103918[_0x7422('0xd')]=intUtil[_0x7422('0x4b')](_0x103918[_0x7422('0xd')]);_0x103918[_0x7422('0x4c')]=intUtil[_0x7422('0x4b')](_0x103918['serverUrl']);_0x40a137[_0x7422('0x4d')]=_0x2a46ac===_0x7422('0x48')||_0x2a46ac==='unmanaged'?_0x7422('0x48'):_0x7422('0x27');var _0x4250bb=util[_0x7422('0x49')](_0x7422('0x4e'),_0x103918[_0x7422('0xd')]);var _0x353d0f=util[_0x7422('0x49')](_0x7422('0x4f'),_0x103918['tenantId']);var _0x3e3861=util[_0x7422('0x49')](_0x7422('0x50'),_0x103918[_0x7422('0x4c')],_0x551b8d[_0x7422('0x51')],md5(_0x551b8d[_0x7422('0x51')]));if(_0x389682&&_0x389682['monitor_format']){logger['info'](_0x7422('0x52'),_0x7422('0x53'));_0x551b8d['recordingURL']=_0x3e3861;}else if(_0x11170e&&_0x11170e[_0x7422('0x54')]&&_0x11170e['recordingFormat']!==_0x7422('0x55')){logger['info'](_0x7422('0x56'),_0x7422('0x53'));_0x551b8d[_0x7422('0x57')]=_0x3e3861;}else{_0x551b8d[_0x7422('0x57')]='';}return getUser(_0x40a137,_0x103918,_0x329020,_0x353d0f,_0x4250bb,_0x2a46ac)[_0x7422('0x11')](function(_0x3673cb){logger['info']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x58'),_0x3673cb['userId']);logger[_0x7422('0x21')]('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x59'),_0x3673cb['userEmail']);return getEndUser(_0x3673cb,_0x103918,_0x353d0f,_0x4250bb,_0x551b8d,_0x2a46ac);})[_0x7422('0x11')](function(_0x4c9b97){logger[_0x7422('0x21')]('['+_0x2a46ac['toUpperCase']()+_0x7422('0x5a'),_0x4c9b97[_0x7422('0x2e')]);logger['info']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x5b'),_0x551b8d['calleridnum']);return getTicket(_0x4c9b97,_0x103918,_0x353d0f,_0x4250bb,_0x551b8d,_0x1ca9f3,_0x2a46ac);})[_0x7422('0x11')](function(_0x4fbd67){logger[_0x7422('0x21')](util['format']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x5c'),_0x1ca9f3[_0x7422('0x3e')],_0x4fbd67['ticketId']));logger[_0x7422('0x21')](util['format']('['+_0x2a46ac[_0x7422('0x14')]()+_0x7422('0x5d'),_0x2a46ac));if(_0x2a46ac!==_0x7422('0x5e')){logger[_0x7422('0x21')]('['+_0x2a46ac[_0x7422('0x14')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x103918[_0x7422('0xd')],_0x329020['name'],_0x1ca9f3[_0x7422('0x3e')],_0x4fbd67[_0x7422('0x5f')]);}})['catch'](function(_0x3cc21f){logger[_0x7422('0x13')]('['+_0x2a46ac[_0x7422('0x14')]()+']\x20Error\x20running\x20Dynamics365\x20integration',util[_0x7422('0x60')](_0x3cc21f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 19a864b..ae4e2fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cc6=['toString','debug','[HTTP]','stringify','defaults','GET','map','includes','string','nameField','toLowerCase','content','picklist','type','custom_fields','push','variable','variableName','idField','customVariable','Variable','customField','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','lastevent','toUpperCase','request-promise','md5','util','ioredis','./util','../../../../config/logger','redis','localhost','socket.io-emitter','application/json','emit','info','format','Caller\x20-\x20%s','calleridname','calleridnum','getString','Subjects','Descriptions','Tags','name','Fields','mapValues','keyBy','value','%s/api/v2/agents','remoteUri','then','length','Agent\x20found!','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','Enduser\x20created.','Basic\x20%s','apiKey'];(function(_0x269fe3,_0x2cdbee){var _0x362b40=function(_0x4e1fc5){while(--_0x4e1fc5){_0x269fe3['push'](_0x269fe3['shift']());}};_0x362b40(++_0x2cdbee);}(_0x1cc6,0x141));var _0x61cc=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x1cc6[_0x19950b];return _0x3c6b41;};'use strict';var _=require('lodash');var rp=require(_0x61cc('0x0'));var md5=require(_0x61cc('0x1'));var util=require(_0x61cc('0x2'));var Redis=require(_0x61cc('0x3'));var intUtil=require(_0x61cc('0x4'));var config=require('../../../../config/environment');var logger=require(_0x61cc('0x5'))('freshdesk');config[_0x61cc('0x6')]=_['defaults'](config['redis'],{'host':_0x61cc('0x7'),'port':0x18eb});var io=require(_0x61cc('0x8'))(new Redis(config['redis']));var headers={'Content-Type':_0x61cc('0x9'),'Accept':_0x61cc('0x9')};function emit(_0x2a8306,_0x4eca82,_0x272197){io['to'](_0x2a8306)[_0x61cc('0xa')](_0x4eca82,_0x272197);}function getTicket(_0x508981,_0x28922d,_0x51df27,_0x441c3e,_0x2b0c52){logger[_0x61cc('0xb')]('Creating\x20new\x20ticket...');var _0x379ba9=_['merge']({'responder_id':_0x28922d['id'],'requester_id':_0x51df27['id'],'name':util[_0x61cc('0xc')](_0x61cc('0xd'),_0x2b0c52[_0x61cc('0xe')]),'phone':_0x2b0c52[_0x61cc('0xf')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x61cc('0x10')](_0x441c3e[_0x61cc('0x11')],_0x2b0c52,'\x20'),'description':intUtil[_0x61cc('0x10')](_0x441c3e[_0x61cc('0x12')],_0x2b0c52,'<br>'),'tags':getTags(_0x441c3e[_0x61cc('0x13')],_0x61cc('0x14'))},getCustomFields(_0x441c3e[_0x61cc('0x15')],_0x2b0c52));_0x379ba9['custom_fields']=_[_0x61cc('0x16')](_[_0x61cc('0x17')](_0x379ba9['custom_fields'],'id'),_0x61cc('0x18'));return request({'uri':util[_0x61cc('0xc')]('%s/api/v2/tickets',_0x508981['remoteUri']),'method':'POST','body':_0x379ba9})['then'](function(_0x37afb8){logger[_0x61cc('0xb')]('Ticket\x20created!');return _0x37afb8;});}function getUser(_0x431183,_0x3bcc52){if(intUtil['validateEmail'](_0x3bcc52)){return request({'uri':util['format'](_0x61cc('0x19'),_0x431183[_0x61cc('0x1a')]),'qs':{'email':_0x3bcc52}})[_0x61cc('0x1b')](function(_0x45ddc0){if(_0x45ddc0[_0x61cc('0x1c')]){logger[_0x61cc('0xb')](_0x61cc('0x1d'));return _[_0x61cc('0x1e')](_0x45ddc0,function(_0x4006a6){return _0x4006a6[_0x61cc('0x1f')]['email']===_0x3bcc52;});}else{logger[_0x61cc('0xb')](_0x61cc('0x20'));return request({'uri':util[_0x61cc('0xc')](_0x61cc('0x21'),_0x431183['remoteUri'])})['then'](function(_0x35d034){logger[_0x61cc('0xb')](_0x61cc('0x22'));return _0x35d034;});}});}else{logger[_0x61cc('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x61cc('0xc')]('%s/api/v2/agents/me',_0x431183[_0x61cc('0x1a')])})['then'](function(_0x4ca918){logger[_0x61cc('0xb')](_0x61cc('0x22'));return _0x4ca918;});}}function getEndUser(_0x3d4713,_0x2de0a7,_0x499d47){logger[_0x61cc('0xb')](_0x61cc('0x23'),_0x499d47);return request({'uri':util['format'](_0x61cc('0x24'),_0x3d4713[_0x61cc('0x1a')]),'qs':{'phone':_0x499d47}})[_0x61cc('0x1b')](function(_0x273446){if(_0x273446[_0x61cc('0x1c')]){logger[_0x61cc('0xb')](_0x61cc('0x25'));return _[_0x61cc('0x1e')](_0x273446,{'phone':_0x499d47});}else{logger['info'](_0x61cc('0x26'));return request({'uri':util[_0x61cc('0xc')](_0x61cc('0x24'),_0x3d4713['remoteUri']),'method':_0x61cc('0x27'),'body':{'name':_0x2de0a7,'phone':_0x499d47}})['then'](function(_0x1421df){logger[_0x61cc('0xb')](_0x61cc('0x28'));return _0x1421df;});}});}function getAuth(_0x46f598){return util[_0x61cc('0xc')](_0x61cc('0x29'),new Buffer(_0x46f598[_0x61cc('0x2a')]+':X')[_0x61cc('0x2b')]('base64'));}function request(_0x4a5e02){logger[_0x61cc('0x2c')](_0x61cc('0x2d'),JSON[_0x61cc('0x2e')](_0x4a5e02));return rp(_[_0x61cc('0x2f')](_0x4a5e02,{'method':_0x61cc('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x3656bb,_0x22db1b){var _0x4e80d7=[];if(_0x3656bb&&_0x3656bb[_0x61cc('0x1c')]>0x0){_0x4e80d7=_[_0x61cc('0x31')](_0x3656bb,_0x22db1b);}return _0x4e80d7;}function getCustomFields(_0x2441d4,_0x4feeb4){var _0x4f119b=[];var _0x380780={'custom_fields':[]};if(_0x2441d4[_0x61cc('0x1c')]>0x0){_['forEach'](_0x2441d4,function(_0x42ff6c){if(_[_0x61cc('0x32')]([_0x61cc('0x33'),'picklist'],_0x42ff6c['type'])&&_0x42ff6c[_0x61cc('0x34')]&&!_0x42ff6c['customField']){_0x380780[_0x42ff6c[_0x61cc('0x34')][_0x61cc('0x35')]()]=_0x42ff6c[_0x61cc('0x36')][_0x61cc('0x2b')]();}else if(_[_0x61cc('0x32')]([_0x61cc('0x33'),_0x61cc('0x37')],_0x42ff6c[_0x61cc('0x38')])&&_0x42ff6c['idField']&&_0x42ff6c['customField']){_0x380780[_0x61cc('0x39')][_0x61cc('0x3a')]({'id':_0x42ff6c['idField'],'value':_0x42ff6c[_0x61cc('0x36')][_0x61cc('0x2b')]()});}else if(_0x42ff6c['type']===_0x61cc('0x3b')&&_0x42ff6c[_0x61cc('0x3c')]&&_0x42ff6c[_0x61cc('0x3d')]&&_0x42ff6c['customField']){_0x4feeb4[_0x42ff6c[_0x61cc('0x3c')]]&&_0x380780['custom_fields'][_0x61cc('0x3a')]({'id':_0x42ff6c[_0x61cc('0x3d')],'value':_0x4feeb4[_0x42ff6c[_0x61cc('0x3c')]][_0x61cc('0x2b')]()});}else if(_0x42ff6c[_0x61cc('0x38')]===_0x61cc('0x3e')&&_0x42ff6c['Variable']&&_0x42ff6c[_0x61cc('0x3f')][_0x61cc('0x14')]&&_0x42ff6c['idField']&&_0x42ff6c[_0x61cc('0x40')]){_0x4feeb4[_0x42ff6c[_0x61cc('0x3f')][_0x61cc('0x14')]['toLowerCase']()]&&_0x380780['custom_fields'][_0x61cc('0x3a')]({'id':_0x42ff6c[_0x61cc('0x3d')],'value':_0x4feeb4[_0x42ff6c['Variable'][_0x61cc('0x14')][_0x61cc('0x35')]()]['toString']()});}});}return _0x380780;}exports['queue']=function(_0x50e2e8,_0x3c0983,_0x436d5a,_0x65f06,_0x2292f0,_0xb90493){var _0x9875a,_0x3c4bdb;_0xb90493[_0x61cc('0x1a')]=intUtil[_0x61cc('0x41')](_0xb90493['remoteUri']);_0xb90493[_0x61cc('0x42')]=intUtil[_0x61cc('0x41')](_0xb90493['serverUrl']);if(_0x2292f0&&_0x2292f0[_0x61cc('0x43')]){logger[_0x61cc('0xb')](_0x61cc('0x44'),'Recording\x20is\x20enabled!');_0x3c0983[_0x61cc('0x45')]=util[_0x61cc('0xc')](_0x61cc('0x46'),_0xb90493['serverUrl'],_0x3c0983[_0x61cc('0x47')],md5(_0x3c0983[_0x61cc('0x47')]));}else{_0x3c0983[_0x61cc('0x45')]='';}headers[_0x61cc('0x48')]=getAuth(_0xb90493);return getUser(_0xb90493,_0x65f06[_0x61cc('0x49')])[_0x61cc('0x1b')](function(_0x5d6e6d){_0x9875a=_0x5d6e6d;logger[_0x61cc('0xb')](_0x61cc('0x4a'),_0x9875a['id']);return getEndUser(_0xb90493,_0x3c0983['calleridname'],_0x3c0983[_0x61cc('0xf')]);})[_0x61cc('0x1b')](function(_0x24b3e7){_0x3c4bdb=_0x24b3e7;logger[_0x61cc('0xb')](_0x61cc('0x4b'),_0x3c4bdb['id']);return getTicket(_0xb90493,_0x9875a,_0x3c4bdb,_0x436d5a,_0x3c0983);})[_0x61cc('0x1b')](function(_0x3b91b3){if(_0x3b91b3&&_0x3b91b3['id']){logger[_0x61cc('0xb')]('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x3b91b3['id']);logger[_0x61cc('0xb')]('[QUEUE]',_0x61cc('0x4c'));emit(util[_0x61cc('0xc')]('user:%s',_0x65f06[_0x61cc('0x14')]),_0x61cc('0x4d'),{'uri':util['format'](_0x61cc('0x4e'),_0xb90493['remoteUri'],_0x3b91b3['id'])});}})[_0x61cc('0x4f')](function(_0x38ea2b){logger[_0x61cc('0x50')](_0x61cc('0x44'),JSON[_0x61cc('0x2e')](_0x38ea2b));});};exports['outbound']=function(_0x3367c1,_0x3ca08c,_0x45bd97,_0x4429af,_0x129941,_0x539212,_0x527f0f){var _0x36e7fc,_0x26d45f;_0x539212[_0x61cc('0x1a')]=intUtil[_0x61cc('0x41')](_0x539212['remoteUri']);_0x539212[_0x61cc('0x42')]=intUtil[_0x61cc('0x41')](_0x539212['serverUrl']);if(_0x527f0f&&_0x527f0f[_0x61cc('0x51')]&&_0x527f0f[_0x61cc('0x51')]!==_0x61cc('0x52')){logger[_0x61cc('0xb')](_0x61cc('0x53'),_0x61cc('0x54'));_0x3ca08c[_0x61cc('0x45')]=util[_0x61cc('0xc')](_0x61cc('0x46'),_0x539212[_0x61cc('0x42')],_0x3ca08c[_0x61cc('0x47')],md5(_0x3ca08c['uniqueid']));}headers['Authorization']=getAuth(_0x539212);return getUser(_0x539212,_0x4429af[_0x61cc('0x49')])[_0x61cc('0x1b')](function(_0x28511a){_0x36e7fc=_0x28511a;logger[_0x61cc('0xb')](_0x61cc('0x4a'),_0x36e7fc['id']);return getEndUser(_0x539212,_0x3ca08c[_0x61cc('0x55')],_0x3ca08c[_0x61cc('0x56')]);})[_0x61cc('0x1b')](function(_0xe3a91c){_0x26d45f=_0xe3a91c;logger[_0x61cc('0xb')](_0x61cc('0x4b'),_0x26d45f['id']);return getTicket(_0x539212,_0x36e7fc,_0x26d45f,_0x45bd97,_0x3ca08c);})[_0x61cc('0x1b')](function(_0x16b4a3){if(_0x16b4a3&&_0x16b4a3['id']){logger[_0x61cc('0xb')](_0x61cc('0x57'));logger['info'](_0x61cc('0x58'),_0x16b4a3['id']);logger[_0x61cc('0xb')](_0x61cc('0x53'),_0x61cc('0x4c'));emit(util['format']('user:%s',_0x4429af[_0x61cc('0x14')]),_0x61cc('0x4d'),{'uri':util[_0x61cc('0xc')]('%s/helpdesk/tickets/%d',_0x539212[_0x61cc('0x1a')],_0x16b4a3['id'])});}})['catch'](function(_0x50ab53){logger[_0x61cc('0x50')]('[OUTBOUND]',JSON[_0x61cc('0x2e')](_0x50ab53));});};exports['unmanaged']=function(_0x415635,_0x27f46a,_0x562a77,_0x517a27,_0x5d5485,_0x24317c){var _0x314efa,_0x4101f8;_0x24317c[_0x61cc('0x1a')]=intUtil['stripTrailingSlash'](_0x24317c[_0x61cc('0x1a')]);_0x24317c[_0x61cc('0x42')]=intUtil[_0x61cc('0x41')](_0x24317c[_0x61cc('0x42')]);if(_0x5d5485&&_0x5d5485['monitor_format']){logger[_0x61cc('0xb')]('['+_0x27f46a[_0x61cc('0x59')][_0x61cc('0x5a')]()+']',_0x61cc('0x54'));_0x27f46a['recordingURL']=util[_0x61cc('0xc')](_0x61cc('0x46'),_0x24317c[_0x61cc('0x42')],_0x27f46a[_0x61cc('0x47')],md5(_0x27f46a[_0x61cc('0x47')]));}else{_0x27f46a[_0x61cc('0x45')]='';}headers[_0x61cc('0x48')]=getAuth(_0x24317c);return getUser(_0x24317c,'')[_0x61cc('0x1b')](function(_0x2cdcf2){_0x314efa=_0x2cdcf2;logger[_0x61cc('0xb')](_0x61cc('0x4a'),_0x314efa['id']);return getEndUser(_0x24317c,_0x27f46a['calleridname'],_0x27f46a['calleridnum']);})[_0x61cc('0x1b')](function(_0x14d1c6){_0x4101f8=_0x14d1c6;logger[_0x61cc('0xb')]('The\x20Enduser\x20ID\x20is:',_0x4101f8['id']);return getTicket(_0x24317c,_0x314efa,_0x4101f8,_0x562a77,_0x27f46a);})[_0x61cc('0x1b')](function(_0x2867ad){if(_0x2867ad){logger['info'](_0x61cc('0x57'));logger['info'](_0x61cc('0x58'),_0x2867ad['id']);}})['catch'](function(_0x3bfa88){logger[_0x61cc('0x50')]('['+_0x27f46a[_0x61cc('0x59')]['toUpperCase']()+']',JSON['stringify'](_0x3bfa88));});};
\ No newline at end of file
+var _0x59e4=['POST','Enduser\x20created.','Basic\x20%s','base64','debug','[HTTP]','stringify','map','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','variableName','push','customVariable','Variable','name','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','unmanaged','lastevent','toUpperCase','lodash','md5','util','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','emit','info','merge','format','Caller\x20-\x20%s','calleridname','getString','Subjects','<br>','keyBy','custom_fields','value','%s/api/v2/tickets','remoteUri','then','Ticket\x20created!','%s/api/v2/agents','length','find','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!'];(function(_0x2bdf23,_0x249d86){var _0x3c4163=function(_0x212c7a){while(--_0x212c7a){_0x2bdf23['push'](_0x2bdf23['shift']());}};_0x3c4163(++_0x249d86);}(_0x59e4,0x89));var _0x459e=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0x59e4[_0x87b0ff];return _0x3bc0b2;};'use strict';var _=require(_0x459e('0x0'));var rp=require('request-promise');var md5=require(_0x459e('0x1'));var util=require(_0x459e('0x2'));var Redis=require('ioredis');var intUtil=require(_0x459e('0x3'));var config=require('../../../../config/environment');var logger=require(_0x459e('0x4'))('freshdesk');config['redis']=_[_0x459e('0x5')](config[_0x459e('0x6')],{'host':_0x459e('0x7'),'port':0x18eb});var io=require(_0x459e('0x8'))(new Redis(config[_0x459e('0x6')]));var headers={'Content-Type':'application/json','Accept':_0x459e('0x9')};function emit(_0x55f401,_0x3b51a3,_0x5045f3){io['to'](_0x55f401)[_0x459e('0xa')](_0x3b51a3,_0x5045f3);}function getTicket(_0x13906a,_0x33f557,_0x449032,_0x1068db,_0x4fbc52){logger[_0x459e('0xb')]('Creating\x20new\x20ticket...');var _0x3ec962=_[_0x459e('0xc')]({'responder_id':_0x33f557['id'],'requester_id':_0x449032['id'],'name':util[_0x459e('0xd')](_0x459e('0xe'),_0x4fbc52[_0x459e('0xf')]),'phone':_0x4fbc52['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0x459e('0x10')](_0x1068db[_0x459e('0x11')],_0x4fbc52,'\x20'),'description':intUtil[_0x459e('0x10')](_0x1068db['Descriptions'],_0x4fbc52,_0x459e('0x12')),'tags':getTags(_0x1068db['Tags'],'name')},getCustomFields(_0x1068db['Fields'],_0x4fbc52));_0x3ec962['custom_fields']=_['mapValues'](_[_0x459e('0x13')](_0x3ec962[_0x459e('0x14')],'id'),_0x459e('0x15'));return request({'uri':util['format'](_0x459e('0x16'),_0x13906a[_0x459e('0x17')]),'method':'POST','body':_0x3ec962})[_0x459e('0x18')](function(_0x39cbcf){logger['info'](_0x459e('0x19'));return _0x39cbcf;});}function getUser(_0x24bcdb,_0xca6a4d){if(intUtil['validateEmail'](_0xca6a4d)){return request({'uri':util['format'](_0x459e('0x1a'),_0x24bcdb[_0x459e('0x17')]),'qs':{'email':_0xca6a4d}})[_0x459e('0x18')](function(_0x4ab8ea){if(_0x4ab8ea[_0x459e('0x1b')]){logger['info']('Agent\x20found!');return _[_0x459e('0x1c')](_0x4ab8ea,function(_0x5910d2){return _0x5910d2[_0x459e('0x1d')]['email']===_0xca6a4d;});}else{logger['info'](_0x459e('0x1e'));return request({'uri':util[_0x459e('0xd')]('%s/api/v2/agents/me',_0x24bcdb[_0x459e('0x17')])})[_0x459e('0x18')](function(_0x1ca48c){logger[_0x459e('0xb')](_0x459e('0x1f'));return _0x1ca48c;});}});}else{logger['info'](_0x459e('0x20'));return request({'uri':util[_0x459e('0xd')](_0x459e('0x21'),_0x24bcdb['remoteUri'])})[_0x459e('0x18')](function(_0x549b5f){logger['info'](_0x459e('0x1f'));return _0x549b5f;});}}function getEndUser(_0x44b1fc,_0x5246fe,_0x49c16c){logger[_0x459e('0xb')]('Searching\x20enduser\x20with\x20phone',_0x49c16c);return request({'uri':util[_0x459e('0xd')](_0x459e('0x22'),_0x44b1fc[_0x459e('0x17')]),'qs':{'phone':_0x49c16c}})[_0x459e('0x18')](function(_0x50b50e){if(_0x50b50e[_0x459e('0x1b')]){logger[_0x459e('0xb')](_0x459e('0x23'));return _[_0x459e('0x1c')](_0x50b50e,{'phone':_0x49c16c});}else{logger[_0x459e('0xb')](_0x459e('0x24'));return request({'uri':util[_0x459e('0xd')](_0x459e('0x22'),_0x44b1fc[_0x459e('0x17')]),'method':_0x459e('0x25'),'body':{'name':_0x5246fe,'phone':_0x49c16c}})[_0x459e('0x18')](function(_0x170848){logger[_0x459e('0xb')](_0x459e('0x26'));return _0x170848;});}});}function getAuth(_0x55fa50){return util[_0x459e('0xd')](_0x459e('0x27'),new Buffer(_0x55fa50['apiKey']+':X')['toString'](_0x459e('0x28')));}function request(_0x36d58b){logger[_0x459e('0x29')](_0x459e('0x2a'),JSON[_0x459e('0x2b')](_0x36d58b));return rp(_[_0x459e('0x5')](_0x36d58b,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x16cd2c,_0x5e2339){var _0x1ade7c=[];if(_0x16cd2c&&_0x16cd2c[_0x459e('0x1b')]>0x0){_0x1ade7c=_[_0x459e('0x2c')](_0x16cd2c,_0x5e2339);}return _0x1ade7c;}function getCustomFields(_0x4fdb8d,_0x25d151){var _0x3f4686=[];var _0x5280d8={'custom_fields':[]};if(_0x4fdb8d[_0x459e('0x1b')]>0x0){_[_0x459e('0x2d')](_0x4fdb8d,function(_0x12d68d){if(_[_0x459e('0x2e')]([_0x459e('0x2f'),_0x459e('0x30')],_0x12d68d[_0x459e('0x31')])&&_0x12d68d[_0x459e('0x32')]&&!_0x12d68d[_0x459e('0x33')]){_0x5280d8[_0x12d68d['nameField']['toLowerCase']()]=_0x12d68d[_0x459e('0x34')][_0x459e('0x35')]();}else if(_[_0x459e('0x2e')]([_0x459e('0x2f'),_0x459e('0x30')],_0x12d68d[_0x459e('0x31')])&&_0x12d68d[_0x459e('0x36')]&&_0x12d68d['customField']){_0x5280d8[_0x459e('0x14')]['push']({'id':_0x12d68d[_0x459e('0x36')],'value':_0x12d68d[_0x459e('0x34')][_0x459e('0x35')]()});}else if(_0x12d68d[_0x459e('0x31')]==='variable'&&_0x12d68d[_0x459e('0x37')]&&_0x12d68d[_0x459e('0x36')]&&_0x12d68d['customField']){_0x25d151[_0x12d68d[_0x459e('0x37')]]&&_0x5280d8[_0x459e('0x14')][_0x459e('0x38')]({'id':_0x12d68d['idField'],'value':_0x25d151[_0x12d68d[_0x459e('0x37')]][_0x459e('0x35')]()});}else if(_0x12d68d[_0x459e('0x31')]===_0x459e('0x39')&&_0x12d68d[_0x459e('0x3a')]&&_0x12d68d[_0x459e('0x3a')][_0x459e('0x3b')]&&_0x12d68d[_0x459e('0x36')]&&_0x12d68d[_0x459e('0x33')]){_0x25d151[_0x12d68d['Variable'][_0x459e('0x3b')][_0x459e('0x3c')]()]&&_0x5280d8[_0x459e('0x14')][_0x459e('0x38')]({'id':_0x12d68d[_0x459e('0x36')],'value':_0x25d151[_0x12d68d[_0x459e('0x3a')][_0x459e('0x3b')][_0x459e('0x3c')]()][_0x459e('0x35')]()});}});}return _0x5280d8;}exports[_0x459e('0x3d')]=function(_0x5934c8,_0x12e617,_0x48848f,_0x46a2b5,_0x318dec,_0x233c98){var _0x5d3491,_0x388cd1;_0x233c98['remoteUri']=intUtil[_0x459e('0x3e')](_0x233c98[_0x459e('0x17')]);_0x233c98[_0x459e('0x3f')]=intUtil[_0x459e('0x3e')](_0x233c98[_0x459e('0x3f')]);if(_0x318dec&&_0x318dec[_0x459e('0x40')]){logger[_0x459e('0xb')](_0x459e('0x41'),'Recording\x20is\x20enabled!');_0x12e617['recordingURL']=util[_0x459e('0xd')](_0x459e('0x42'),_0x233c98[_0x459e('0x3f')],_0x12e617[_0x459e('0x43')],md5(_0x12e617['uniqueid']));}else{_0x12e617[_0x459e('0x44')]='';}headers[_0x459e('0x45')]=getAuth(_0x233c98);return getUser(_0x233c98,_0x46a2b5[_0x459e('0x46')])[_0x459e('0x18')](function(_0x1c0690){_0x5d3491=_0x1c0690;logger['info'](_0x459e('0x47'),_0x5d3491['id']);return getEndUser(_0x233c98,_0x12e617[_0x459e('0xf')],_0x12e617[_0x459e('0x48')]);})[_0x459e('0x18')](function(_0x3b82f3){_0x388cd1=_0x3b82f3;logger['info']('The\x20Enduser\x20ID\x20is:',_0x388cd1['id']);return getTicket(_0x233c98,_0x5d3491,_0x388cd1,_0x48848f,_0x12e617);})[_0x459e('0x18')](function(_0x31dc8e){if(_0x31dc8e&&_0x31dc8e['id']){logger[_0x459e('0xb')](_0x459e('0x19'));logger[_0x459e('0xb')](_0x459e('0x49'),_0x31dc8e['id']);logger['info'](_0x459e('0x41'),_0x459e('0x4a'));emit(util[_0x459e('0xd')](_0x459e('0x4b'),_0x46a2b5[_0x459e('0x3b')]),'trigger:browser:url',{'uri':util[_0x459e('0xd')](_0x459e('0x4c'),_0x233c98['remoteUri'],_0x31dc8e['id'])});}})[_0x459e('0x4d')](function(_0x41d8a8){logger[_0x459e('0x4e')](_0x459e('0x41'),JSON[_0x459e('0x2b')](_0x41d8a8));});};exports[_0x459e('0x4f')]=function(_0x5167d5,_0x849cc0,_0xe8985b,_0x40201c,_0x3bace2,_0x5e0b6a,_0x30281a){var _0x4f9ffe,_0x267443;_0x5e0b6a[_0x459e('0x17')]=intUtil['stripTrailingSlash'](_0x5e0b6a[_0x459e('0x17')]);_0x5e0b6a[_0x459e('0x3f')]=intUtil['stripTrailingSlash'](_0x5e0b6a[_0x459e('0x3f')]);if(_0x30281a&&_0x30281a[_0x459e('0x50')]&&_0x30281a[_0x459e('0x50')]!==_0x459e('0x51')){logger[_0x459e('0xb')](_0x459e('0x52'),_0x459e('0x53'));_0x849cc0[_0x459e('0x44')]=util[_0x459e('0xd')](_0x459e('0x42'),_0x5e0b6a[_0x459e('0x3f')],_0x849cc0[_0x459e('0x43')],md5(_0x849cc0['uniqueid']));}headers['Authorization']=getAuth(_0x5e0b6a);return getUser(_0x5e0b6a,_0x40201c['email'])[_0x459e('0x18')](function(_0x5894d3){_0x4f9ffe=_0x5894d3;logger[_0x459e('0xb')]('The\x20User\x20ID\x20is:',_0x4f9ffe['id']);return getEndUser(_0x5e0b6a,_0x849cc0['destcalleridname'],_0x849cc0['destcalleridnum']);})['then'](function(_0x5585a0){_0x267443=_0x5585a0;logger[_0x459e('0xb')]('The\x20Enduser\x20ID\x20is:',_0x267443['id']);return getTicket(_0x5e0b6a,_0x4f9ffe,_0x267443,_0xe8985b,_0x849cc0);})[_0x459e('0x18')](function(_0xf51fb8){if(_0xf51fb8&&_0xf51fb8['id']){logger['info'](_0x459e('0x19'));logger[_0x459e('0xb')]('The\x20Ticket\x20ID\x20is:',_0xf51fb8['id']);logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x459e('0xd')](_0x459e('0x4b'),_0x40201c[_0x459e('0x3b')]),'trigger:browser:url',{'uri':util['format'](_0x459e('0x4c'),_0x5e0b6a[_0x459e('0x17')],_0xf51fb8['id'])});}})[_0x459e('0x4d')](function(_0x365cbd){logger[_0x459e('0x4e')](_0x459e('0x52'),JSON[_0x459e('0x2b')](_0x365cbd));});};exports[_0x459e('0x54')]=function(_0x17550b,_0xbc5527,_0x3a428d,_0x379e99,_0x3acbd6,_0x5df6b6){var _0x17f911,_0xc4105c;_0x5df6b6[_0x459e('0x17')]=intUtil[_0x459e('0x3e')](_0x5df6b6['remoteUri']);_0x5df6b6['serverUrl']=intUtil[_0x459e('0x3e')](_0x5df6b6['serverUrl']);if(_0x3acbd6&&_0x3acbd6['monitor_format']){logger['info']('['+_0xbc5527[_0x459e('0x55')][_0x459e('0x56')]()+']',_0x459e('0x53'));_0xbc5527[_0x459e('0x44')]=util[_0x459e('0xd')](_0x459e('0x42'),_0x5df6b6['serverUrl'],_0xbc5527[_0x459e('0x43')],md5(_0xbc5527['uniqueid']));}else{_0xbc5527[_0x459e('0x44')]='';}headers[_0x459e('0x45')]=getAuth(_0x5df6b6);return getUser(_0x5df6b6,'')[_0x459e('0x18')](function(_0x4fbfee){_0x17f911=_0x4fbfee;logger[_0x459e('0xb')](_0x459e('0x47'),_0x17f911['id']);return getEndUser(_0x5df6b6,_0xbc5527[_0x459e('0xf')],_0xbc5527[_0x459e('0x48')]);})[_0x459e('0x18')](function(_0x1213ee){_0xc4105c=_0x1213ee;logger[_0x459e('0xb')]('The\x20Enduser\x20ID\x20is:',_0xc4105c['id']);return getTicket(_0x5df6b6,_0x17f911,_0xc4105c,_0x3a428d,_0xbc5527);})[_0x459e('0x18')](function(_0x344a71){if(_0x344a71){logger['info'](_0x459e('0x19'));logger[_0x459e('0xb')](_0x459e('0x49'),_0x344a71['id']);}})['catch'](function(_0x342978){logger[_0x459e('0x4e')]('['+_0xbc5527['lastevent'][_0x459e('0x56')]()+']',JSON[_0x459e('0x2b')](_0x342978));});};
\ No newline at end of file
index cca0035..acad8b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xded5=['message','Getting\x20user\x20list','Getting\x20user\x20with\x20email','agentEmail','email','userId','User\x20found:','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','endUserId','Contact\x20created:','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','POST','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','task','emit','Token\x20token=','apiKey','remoteUri','serverUrl','username','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','md5','util','moment','ioredis','./util','../../../../config/environment','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','info','Getting\x20admin\x20information','then','users','length','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase'];(function(_0x165b5f,_0x47a9ba){var _0xf2c825=function(_0x2334d7){while(--_0x2334d7){_0x165b5f['push'](_0x165b5f['shift']());}};_0xf2c825(++_0x47a9ba);}(_0xded5,0x188));var _0x5ded=function(_0x3b1b1e,_0x298617){_0x3b1b1e=_0x3b1b1e-0x0;var _0x5d2686=_0xded5[_0x3b1b1e];return _0x5d2686;};'use strict';var _=require(_0x5ded('0x0'));var rp=require(_0x5ded('0x1'));var md5=require(_0x5ded('0x2'));var util=require(_0x5ded('0x3'));var moment=require(_0x5ded('0x4'));var Promise=require('bluebird');var Redis=require(_0x5ded('0x5'));var intUtil=require(_0x5ded('0x6'));var config=require(_0x5ded('0x7'));var logger=require('../../../../config/logger')(_0x5ded('0x8'));config[_0x5ded('0x9')]=_[_0x5ded('0xa')](config['redis'],{'host':_0x5ded('0xb'),'port':0x18eb});var io=require(_0x5ded('0xc'))(new Redis(config['redis']));function getAdminId(_0x1103b7,_0x5e70e4,_0x4041fc,_0x3ffb11){return new Promise(function(_0x2fa3db,_0x2d834d){var _0xd2a5b5=![];var _0x442358={'method':_0x5ded('0xd'),'uri':_0x3ffb11+_0x5ded('0xe'),'json':!![]};_0x442358[_0x5ded('0xf')]=_0x4041fc;logger[_0x5ded('0x10')](_0x5ded('0x11'));return rp(_0x442358)[_0x5ded('0x12')](function(_0xac7865){if(_0xac7865){var _0x195aac=_0xac7865[_0x5ded('0x13')];var _0x4b8793=null;for(_0x4b8793=0x0;_0x4b8793<_0x195aac[_0x5ded('0x14')];_0x4b8793++){if(_0x195aac[_0x4b8793]['email']===_0x1103b7[_0x5ded('0x15')]){_0x1103b7[_0x5ded('0x16')]=_0x195aac[_0x4b8793]['id'];_0xd2a5b5=!![];}}if(_0xd2a5b5){logger[_0x5ded('0x10')](_0x5ded('0x17'),_0x1103b7[_0x5ded('0x16')]);_0x2fa3db(_0x1103b7);}else{_0x2d834d({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x2d834d({'statusCode':0x194,'message':_0x5ded('0x18')});}})[_0x5ded('0x19')](function(_0x59fe09){logger[_0x5ded('0x1a')]('['+[_0x5e70e4[_0x5ded('0x1b')]()]+']',_0x59fe09[_0x5ded('0x1c')]);_0x2d834d(_0x59fe09);});});}function getUser(_0x1ad0e4,_0x548918,_0x545af6){return function(_0xa08927){return new Promise(function(_0x16d3f2,_0x2f88f6){var _0x1ff693={'method':_0x5ded('0xd'),'uri':_0x545af6+_0x5ded('0xe'),'json':!![]};_0x1ff693[_0x5ded('0xf')]=_0x548918;logger[_0x5ded('0x10')](_0x5ded('0x1d'));return rp(_0x1ff693)[_0x5ded('0x12')](function(_0x408592){if(_0x408592){var _0x11876c=_0x408592[_0x5ded('0x13')];var _0xe140c7=![];var _0x1fabac=null;if(_0xa08927['agentEmail']!==null){logger[_0x5ded('0x10')](_0x5ded('0x1e'),_0xa08927[_0x5ded('0x1f')]);_0xa08927['userEmail']=_0xa08927['agentEmail'];for(_0x1fabac=0x0;_0x1fabac<_0x11876c[_0x5ded('0x14')];_0x1fabac++){if(_0x11876c[_0x1fabac][_0x5ded('0x20')]===_0xa08927[_0x5ded('0x1f')]){_0xe140c7=!![];_0xa08927[_0x5ded('0x21')]=_0x11876c[_0x1fabac]['id'];logger[_0x5ded('0x10')](_0x5ded('0x22'),_0xa08927[_0x5ded('0x21')]);}}}if(!_0xe140c7){logger[_0x5ded('0x10')]('Admin\x20selected');_0xa08927['userEmail']=_0xa08927['adminEmail'];_0xa08927[_0x5ded('0x21')]=_0xa08927[_0x5ded('0x16')];_0xe140c7=!![];}if(_0xe140c7){_0x16d3f2(_0xa08927);}else{_0x2f88f6({'statusCode':0x194,'message':_0x5ded('0x18')});}}else{_0x2f88f6({'statusCode':0x194,'message':_0x5ded('0x18')});}})[_0x5ded('0x19')](function(_0x2cb5c9){logger['error']('['+[_0x1ad0e4[_0x5ded('0x1b')]()]+']',_0x2cb5c9[_0x5ded('0x1c')]);_0x2f88f6(_0x2cb5c9);});});};}function searchContact(_0x52e29d,_0x2f8efe,_0x510e99,_0x5672a2){return new Promise(function(_0xab43b0,_0xf25fd1){var _0x540a71={'method':_0x5ded('0xd'),'headers':_0x2f8efe,'uri':_0x52e29d+'/api/lookup?q='+_0x5672a2+_0x5ded('0x23')+_0x510e99+_0x5ded('0x24'),'json':!![]};rp(_0x540a71)[_0x5ded('0x12')](function(_0x3a5454){var _0x46a43f=_[_0x5ded('0x25')](_0x3a5454[_0x5ded('0x26')][_0x5ded('0x26')],[_0x510e99,_0x5672a2]);_0xab43b0(_0x46a43f);})[_0x5ded('0x19')](function(_0x34c6db){_0xf25fd1(_0x34c6db);});});}function getEndUser(_0x4a6e1d,_0x5b6d6d,_0x592d8f){return function(_0xfd70c3){return new Promise(function(_0x5d6923,_0x51b65d){logger[_0x5ded('0x10')](util[_0x5ded('0x27')](_0x5ded('0x28'),_0xfd70c3[_0x5ded('0x29')]));searchContact(_0x592d8f,_0x5b6d6d,'mobile_number',_0xfd70c3[_0x5ded('0x29')])[_0x5ded('0x12')](function(_0x1186dc){if(_0x1186dc){_0xfd70c3['endUserId']=_0x1186dc['id'];logger[_0x5ded('0x10')](_0x5ded('0x2a'),_0xfd70c3['endUserId']);return _0x5d6923(_0xfd70c3);}searchContact(_0x592d8f,_0x5b6d6d,_0x5ded('0x2b'),_0xfd70c3[_0x5ded('0x29')])['then'](function(_0x58c0f2){if(_0x58c0f2){_0xfd70c3['endUserId']=_0x58c0f2['id'];logger[_0x5ded('0x10')](_0x5ded('0x2c'),_0xfd70c3[_0x5ded('0x2d')]);return _0x5d6923(_0xfd70c3);}createEndUser(_0xfd70c3,_0x4a6e1d,_0x5b6d6d,_0x592d8f)[_0x5ded('0x12')](function(_0x5ad0cf){logger[_0x5ded('0x10')](_0x5ded('0x2e'),_0x5ad0cf[_0x5ded('0x2d')]);return _0x5d6923(_0x5ad0cf);});});})[_0x5ded('0x19')](function(_0x1b056b){_0x51b65d(_0x1b056b);});});};}function createEndUser(_0x27dc23,_0xf68fe,_0x134bda,_0x53d9e8){return new Promise(function(_0x117677,_0x2ed6dd){var _0x2a8274=moment();var _0x40a74d={'method':'POST','uri':_0x53d9e8+_0x5ded('0x2f'),'body':{'contact':{'last_name':_0x27dc23[_0x5ded('0x29')],'work_number':_0x27dc23[_0x5ded('0x29')],'mobile_number':_0x27dc23[_0x5ded('0x29')],'owner_id':_0x27dc23[_0x5ded('0x21')],'created_at':_0x2a8274[_0x5ded('0x27')](_0x5ded('0x30'))}},'json':!![]};_0x40a74d[_0x5ded('0xf')]=_0x134bda;logger[_0x5ded('0x10')](_0x5ded('0x31'));return rp(_0x40a74d)['then'](function(_0x34bd94){_0x27dc23[_0x5ded('0x2d')]=_0x34bd94['contact']['id'];_0x117677(_0x27dc23);})['catch'](function(_0x3638f6){logger[_0x5ded('0x1a')]('['+[_0xf68fe[_0x5ded('0x1b')]()]+']',_0x3638f6[_0x5ded('0x1c')]);_0x2ed6dd(_0x3638f6['message']);});});}function getTicket(_0x94002d,_0x5b23d8,_0x23283d,_0x210520,_0x194d36){return function(_0x596999){logger['info'](_0x5ded('0x32'));return new Promise(function(_0x1cc794,_0x486a73){var _0x4d93eb=moment();var _0x341ab6={'method':_0x5ded('0x33'),'uri':_0x23283d+_0x5ded('0x34'),'body':{'title':intUtil[_0x5ded('0x35')](_0x210520[_0x5ded('0x36')],_0x194d36,'\x20'),'description':intUtil['getString'](_0x210520[_0x5ded('0x37')],_0x194d36,'\x0a'),'owner_id':_0x596999[_0x5ded('0x21')],'creater_id':_0x596999[_0x5ded('0x16')],'targetable_id':_0x596999['endUserId'],'targetable_type':_0x5ded('0x38'),'created_at':_0x4d93eb[_0x5ded('0x27')](_0x5ded('0x30')),'due_date':_0x4d93eb[_0x5ded('0x39')](0x1e,'m')[_0x5ded('0x27')](_0x5ded('0x30'))},'json':!![]};_0x341ab6[_0x5ded('0xf')]=_0x5b23d8;return rp(_0x341ab6)[_0x5ded('0x12')](function(_0xb5fe56){_0x596999[_0x5ded('0x3a')]=_0xb5fe56[_0x5ded('0x3b')]['id'];logger['info']('Task\x20created:',_0x596999[_0x5ded('0x3a')]);_0x1cc794(_0x596999);})[_0x5ded('0x19')](function(_0x24aea2){logger['error']('['+[_0x94002d[_0x5ded('0x1b')]()]+']',_0x24aea2[_0x5ded('0x1c')]);_0x486a73(_0x24aea2[_0x5ded('0x1c')]);});});};}function emit(_0x31ecba,_0x1a626b,_0x2ad2a1){var _0xc0bf6f={'uri':_0x31ecba+'/contacts/'+_0x2ad2a1};io['to'](util[_0x5ded('0x27')]('user:%s',_0x1a626b))[_0x5ded('0x3c')]('trigger:browser:url',_0xc0bf6f);}exports['cs']=function(_0x79cd7f,_0x372b63,_0x57b78c,_0x4112df,_0x256ce2,_0x3b916c,_0x25f5e6,_0x386074){var _0x2331c3={};var _0x4cc42a={'Authorization':_0x5ded('0x3d')+_0x3b916c[_0x5ded('0x3e')]};_0x3b916c[_0x5ded('0x3f')]=intUtil['stripTrailingSlash'](_0x3b916c[_0x5ded('0x3f')]);_0x3b916c['serverUrl']=intUtil['stripTrailingSlash'](_0x3b916c[_0x5ded('0x40')]);var _0x340285=_0x3b916c[_0x5ded('0x3f')];_0x2331c3['adminEmail']=_0x3b916c[_0x5ded('0x41')];_0x2331c3[_0x5ded('0x29')]=_0x386074['toLowerCase']()===_0x5ded('0x42')?_0x372b63[_0x5ded('0x43')]:_0x372b63[_0x5ded('0x44')];_0x2331c3[_0x5ded('0x45')]=_0x386074===_0x5ded('0x46')||_0x386074==='unmanaged'?_0x5ded('0x46'):_0x5ded('0x42');if(_0x4112df){_0x2331c3[_0x5ded('0x1f')]=_0x4112df[_0x5ded('0x20')];}var _0x1ca80e=util[_0x5ded('0x27')](_0x5ded('0x47'),_0x3b916c[_0x5ded('0x40')],_0x372b63[_0x5ded('0x48')],md5(_0x372b63['uniqueid']));if(_0x256ce2&&_0x256ce2[_0x5ded('0x49')]){logger[_0x5ded('0x10')](_0x5ded('0x4a'),'Recording\x20is\x20enabled!');_0x372b63[_0x5ded('0x4b')]=_0x1ca80e;}else if(_0x25f5e6&&_0x25f5e6[_0x5ded('0x4c')]&&_0x25f5e6[_0x5ded('0x4c')]!==_0x5ded('0x4d')){logger[_0x5ded('0x10')](_0x5ded('0x4e'),_0x5ded('0x4f'));_0x372b63[_0x5ded('0x4b')]=_0x1ca80e;}else{_0x372b63[_0x5ded('0x4b')]='';}return getAdminId(_0x2331c3,_0x386074,_0x4cc42a,_0x340285)['then'](getUser(_0x386074,_0x4cc42a,_0x340285))['then'](getEndUser(_0x386074,_0x4cc42a,_0x340285))[_0x5ded('0x12')](getTicket(_0x386074,_0x4cc42a,_0x340285,_0x57b78c,_0x372b63))[_0x5ded('0x12')](function(_0x25e051){logger[_0x5ded('0x10')](util['format'](_0x5ded('0x50'),_0x25e051[_0x5ded('0x3a')]));if(_0x386074!==_0x5ded('0x51')){logger[_0x5ded('0x10')]('['+[_0x386074['toUpperCase']()]+']',_0x5ded('0x52'));emit(_0x340285,_0x4112df[_0x5ded('0x53')],_0x25e051['endUserId']);}})[_0x5ded('0x19')](function(_0x53c654){logger['error']('['+[_0x386074[_0x5ded('0x1b')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x53c654,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xb415=['Admin\x20selected','adminEmail','error','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','Contact\x20found\x20mobile_number:','endUserId','work_number','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','getString','Subjects','Descriptions','Contact','add','ticketId','task','/contacts/','user:%s','emit','trigger:browser:url','apiKey','stripTrailingSlash','serverUrl','remoteUri','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20task\x20in\x20a\x20new\x20tab...','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','headers','then','users','email','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','Getting\x20user\x20list','Getting\x20user\x20with\x20email','userEmail','length','agentEmail','userId','User\x20found:'];(function(_0x168f7b,_0x81ff02){var _0x31c010=function(_0x45efa7){while(--_0x45efa7){_0x168f7b['push'](_0x168f7b['shift']());}};_0x31c010(++_0x81ff02);}(_0xb415,0x1c8));var _0x5b41=function(_0x8ba6a8,_0x36e866){_0x8ba6a8=_0x8ba6a8-0x0;var _0x5a5b08=_0xb415[_0x8ba6a8];return _0x5a5b08;};'use strict';var _=require(_0x5b41('0x0'));var rp=require(_0x5b41('0x1'));var md5=require('md5');var util=require(_0x5b41('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x5b41('0x3'));var intUtil=require('./util');var config=require(_0x5b41('0x4'));var logger=require(_0x5b41('0x5'))(_0x5b41('0x6'));config[_0x5b41('0x7')]=_[_0x5b41('0x8')](config[_0x5b41('0x7')],{'host':_0x5b41('0x9'),'port':0x18eb});var io=require(_0x5b41('0xa'))(new Redis(config[_0x5b41('0x7')]));function getAdminId(_0x4ce2a5,_0x521a83,_0x5d9552,_0x5aac76){return new Promise(function(_0x3dde98,_0x50448d){var _0x51afb9=![];var _0x5af665={'method':_0x5b41('0xb'),'uri':_0x5aac76+_0x5b41('0xc'),'json':!![]};_0x5af665[_0x5b41('0xd')]=_0x5d9552;logger['info']('Getting\x20admin\x20information');return rp(_0x5af665)[_0x5b41('0xe')](function(_0x38f93d){if(_0x38f93d){var _0x4c07ec=_0x38f93d[_0x5b41('0xf')];var _0x806361=null;for(_0x806361=0x0;_0x806361<_0x4c07ec['length'];_0x806361++){if(_0x4c07ec[_0x806361][_0x5b41('0x10')]===_0x4ce2a5['adminEmail']){_0x4ce2a5['adminId']=_0x4c07ec[_0x806361]['id'];_0x51afb9=!![];}}if(_0x51afb9){logger[_0x5b41('0x11')](_0x5b41('0x12'),_0x4ce2a5[_0x5b41('0x13')]);_0x3dde98(_0x4ce2a5);}else{_0x50448d({'statusCode':0x194,'message':_0x5b41('0x14')});}}else{_0x50448d({'statusCode':0x194,'message':_0x5b41('0x14')});}})[_0x5b41('0x15')](function(_0x4a5ac8){logger['error']('['+[_0x521a83[_0x5b41('0x16')]()]+']',_0x4a5ac8['message']);_0x50448d(_0x4a5ac8);});});}function getUser(_0xbebc73,_0x1faf8c,_0x3b6d32){return function(_0x2d7f48){return new Promise(function(_0x22dbf,_0x198bd2){var _0x79af8={'method':_0x5b41('0xb'),'uri':_0x3b6d32+'/api/selector/owners','json':!![]};_0x79af8[_0x5b41('0xd')]=_0x1faf8c;logger[_0x5b41('0x11')](_0x5b41('0x17'));return rp(_0x79af8)['then'](function(_0x590a95){if(_0x590a95){var _0x3b2456=_0x590a95[_0x5b41('0xf')];var _0x388056=![];var _0xcc87dc=null;if(_0x2d7f48['agentEmail']!==null){logger[_0x5b41('0x11')](_0x5b41('0x18'),_0x2d7f48['agentEmail']);_0x2d7f48[_0x5b41('0x19')]=_0x2d7f48['agentEmail'];for(_0xcc87dc=0x0;_0xcc87dc<_0x3b2456[_0x5b41('0x1a')];_0xcc87dc++){if(_0x3b2456[_0xcc87dc][_0x5b41('0x10')]===_0x2d7f48[_0x5b41('0x1b')]){_0x388056=!![];_0x2d7f48[_0x5b41('0x1c')]=_0x3b2456[_0xcc87dc]['id'];logger[_0x5b41('0x11')](_0x5b41('0x1d'),_0x2d7f48[_0x5b41('0x1c')]);}}}if(!_0x388056){logger[_0x5b41('0x11')](_0x5b41('0x1e'));_0x2d7f48[_0x5b41('0x19')]=_0x2d7f48[_0x5b41('0x1f')];_0x2d7f48['userId']=_0x2d7f48[_0x5b41('0x13')];_0x388056=!![];}if(_0x388056){_0x22dbf(_0x2d7f48);}else{_0x198bd2({'statusCode':0x194,'message':_0x5b41('0x14')});}}else{_0x198bd2({'statusCode':0x194,'message':_0x5b41('0x14')});}})[_0x5b41('0x15')](function(_0x9b611a){logger[_0x5b41('0x20')]('['+[_0xbebc73[_0x5b41('0x16')]()]+']',_0x9b611a['message']);_0x198bd2(_0x9b611a);});});};}function searchContact(_0x5ec55a,_0x210d73,_0x3f458d,_0x4e7432){return new Promise(function(_0x3ffa0b,_0x9c11e6){var _0xaaf6e1={'method':_0x5b41('0xb'),'headers':_0x210d73,'uri':_0x5ec55a+'/api/lookup?q='+_0x4e7432+_0x5b41('0x21')+_0x3f458d+'&entities=contact','json':!![]};rp(_0xaaf6e1)['then'](function(_0x37433c){var _0x33dcdc=_[_0x5b41('0x22')](_0x37433c[_0x5b41('0x23')]['contacts'],[_0x3f458d,_0x4e7432]);_0x3ffa0b(_0x33dcdc);})[_0x5b41('0x15')](function(_0x3aa4ba){_0x9c11e6(_0x3aa4ba);});});}function getEndUser(_0x208381,_0x1c371c,_0x1669e1){return function(_0x106014){return new Promise(function(_0x59e996,_0x49ab69){logger[_0x5b41('0x11')](util[_0x5b41('0x24')](_0x5b41('0x25'),_0x106014[_0x5b41('0x26')]));searchContact(_0x1669e1,_0x1c371c,_0x5b41('0x27'),_0x106014['contactNumber'])[_0x5b41('0xe')](function(_0x1c9db5){if(_0x1c9db5){_0x106014['endUserId']=_0x1c9db5['id'];logger[_0x5b41('0x11')](_0x5b41('0x28'),_0x106014[_0x5b41('0x29')]);return _0x59e996(_0x106014);}searchContact(_0x1669e1,_0x1c371c,_0x5b41('0x2a'),_0x106014[_0x5b41('0x26')])['then'](function(_0x19f5d3){if(_0x19f5d3){_0x106014[_0x5b41('0x29')]=_0x19f5d3['id'];logger['info']('Contact\x20found\x20work_number:',_0x106014[_0x5b41('0x29')]);return _0x59e996(_0x106014);}createEndUser(_0x106014,_0x208381,_0x1c371c,_0x1669e1)[_0x5b41('0xe')](function(_0x4feb37){logger[_0x5b41('0x11')](_0x5b41('0x2b'),_0x4feb37[_0x5b41('0x29')]);return _0x59e996(_0x4feb37);});});})[_0x5b41('0x15')](function(_0x5c16d9){_0x49ab69(_0x5c16d9);});});};}function createEndUser(_0x1e91d7,_0xb9507c,_0xc0f1e4,_0x3d81ce){return new Promise(function(_0x5a500f,_0x147f51){var _0x584cad=moment();var _0x3dfcf9={'method':_0x5b41('0x2c'),'uri':_0x3d81ce+'/api/contacts','body':{'contact':{'last_name':_0x1e91d7[_0x5b41('0x26')],'work_number':_0x1e91d7[_0x5b41('0x26')],'mobile_number':_0x1e91d7[_0x5b41('0x26')],'owner_id':_0x1e91d7[_0x5b41('0x1c')],'created_at':_0x584cad[_0x5b41('0x24')](_0x5b41('0x2d'))}},'json':!![]};_0x3dfcf9[_0x5b41('0xd')]=_0xc0f1e4;logger['info'](_0x5b41('0x2e'));return rp(_0x3dfcf9)[_0x5b41('0xe')](function(_0xd7314){_0x1e91d7[_0x5b41('0x29')]=_0xd7314[_0x5b41('0x2f')]['id'];_0x5a500f(_0x1e91d7);})[_0x5b41('0x15')](function(_0x4c1914){logger[_0x5b41('0x20')]('['+[_0xb9507c['toUpperCase']()]+']',_0x4c1914[_0x5b41('0x30')]);_0x147f51(_0x4c1914[_0x5b41('0x30')]);});});}function getTicket(_0x27dbdf,_0x47cf3a,_0x28f6e7,_0x18af7e,_0x1b7ac6){return function(_0x5baecb){logger[_0x5b41('0x11')](_0x5b41('0x31'));return new Promise(function(_0x23d1c2,_0x58e5a4){var _0x2f4cbd=moment();var _0x550cab={'method':_0x5b41('0x2c'),'uri':_0x28f6e7+'/api/tasks','body':{'title':intUtil[_0x5b41('0x32')](_0x18af7e[_0x5b41('0x33')],_0x1b7ac6,'\x20'),'description':intUtil['getString'](_0x18af7e[_0x5b41('0x34')],_0x1b7ac6,'\x0a'),'owner_id':_0x5baecb['userId'],'creater_id':_0x5baecb['adminId'],'targetable_id':_0x5baecb[_0x5b41('0x29')],'targetable_type':_0x5b41('0x35'),'created_at':_0x2f4cbd[_0x5b41('0x24')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x2f4cbd[_0x5b41('0x36')](0x1e,'m')['format']('YYYY-MM-DDTHH:mm:ss')},'json':!![]};_0x550cab['headers']=_0x47cf3a;return rp(_0x550cab)[_0x5b41('0xe')](function(_0x3345f0){_0x5baecb[_0x5b41('0x37')]=_0x3345f0[_0x5b41('0x38')]['id'];logger['info']('Task\x20created:',_0x5baecb[_0x5b41('0x37')]);_0x23d1c2(_0x5baecb);})[_0x5b41('0x15')](function(_0x5e8612){logger[_0x5b41('0x20')]('['+[_0x27dbdf[_0x5b41('0x16')]()]+']',_0x5e8612[_0x5b41('0x30')]);_0x58e5a4(_0x5e8612[_0x5b41('0x30')]);});});};}function emit(_0x5ec341,_0x4dd9de,_0x40e89a){var _0x53fb82={'uri':_0x5ec341+_0x5b41('0x39')+_0x40e89a};io['to'](util[_0x5b41('0x24')](_0x5b41('0x3a'),_0x4dd9de))[_0x5b41('0x3b')](_0x5b41('0x3c'),_0x53fb82);}exports['cs']=function(_0x11c365,_0x33112f,_0x408e87,_0x830441,_0x1b8d1b,_0x9d1bf2,_0x4d080a,_0x4ab9f1){var _0x851f1d={};var _0x554c6c={'Authorization':'Token\x20token='+_0x9d1bf2[_0x5b41('0x3d')]};_0x9d1bf2['remoteUri']=intUtil[_0x5b41('0x3e')](_0x9d1bf2['remoteUri']);_0x9d1bf2[_0x5b41('0x3f')]=intUtil[_0x5b41('0x3e')](_0x9d1bf2[_0x5b41('0x3f')]);var _0x229255=_0x9d1bf2[_0x5b41('0x40')];_0x851f1d[_0x5b41('0x1f')]=_0x9d1bf2[_0x5b41('0x41')];_0x851f1d[_0x5b41('0x26')]=_0x4ab9f1[_0x5b41('0x42')]()===_0x5b41('0x43')?_0x33112f['destcalleridnum']:_0x33112f[_0x5b41('0x44')];_0x851f1d[_0x5b41('0x45')]=_0x4ab9f1===_0x5b41('0x46')||_0x4ab9f1===_0x5b41('0x47')?_0x5b41('0x46'):_0x5b41('0x43');if(_0x830441){_0x851f1d[_0x5b41('0x1b')]=_0x830441['email'];}var _0x1a965c=util[_0x5b41('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x9d1bf2[_0x5b41('0x3f')],_0x33112f[_0x5b41('0x48')],md5(_0x33112f[_0x5b41('0x48')]));if(_0x1b8d1b&&_0x1b8d1b[_0x5b41('0x49')]){logger[_0x5b41('0x11')](_0x5b41('0x4a'),_0x5b41('0x4b'));_0x33112f[_0x5b41('0x4c')]=_0x1a965c;}else if(_0x4d080a&&_0x4d080a[_0x5b41('0x4d')]&&_0x4d080a[_0x5b41('0x4d')]!==_0x5b41('0x4e')){logger['info'](_0x5b41('0x4f'),_0x5b41('0x4b'));_0x33112f[_0x5b41('0x4c')]=_0x1a965c;}else{_0x33112f['recordingURL']='';}return getAdminId(_0x851f1d,_0x4ab9f1,_0x554c6c,_0x229255)[_0x5b41('0xe')](getUser(_0x4ab9f1,_0x554c6c,_0x229255))[_0x5b41('0xe')](getEndUser(_0x4ab9f1,_0x554c6c,_0x229255))[_0x5b41('0xe')](getTicket(_0x4ab9f1,_0x554c6c,_0x229255,_0x408e87,_0x33112f))[_0x5b41('0xe')](function(_0xed6ff){logger[_0x5b41('0x11')](util[_0x5b41('0x24')]('The\x20ticket\x20ID\x20is:\x20%s',_0xed6ff[_0x5b41('0x37')]));if(_0x4ab9f1!==_0x5b41('0x47')){logger[_0x5b41('0x11')]('['+[_0x4ab9f1['toUpperCase']()]+']',_0x5b41('0x50'));emit(_0x229255,_0x830441['name'],_0xed6ff[_0x5b41('0x29')]);}})[_0x5b41('0x15')](function(_0x1cfe38){logger[_0x5b41('0x20')]('['+[_0x4ab9f1[_0x5b41('0x16')]()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x1cfe38,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 98bbf59..dde323c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7530=['./salesforce','./sugarcrm','./zoho','./desk','./dynamics365','zendesk','sugarcrm','freshdesk','desk','freshsales','servicenow','data1','toLowerCase','data2','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','salesforce','zoho','vtiger','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk'];(function(_0x52bd3c,_0x2a1b27){var _0x3575a4=function(_0x4871cd){while(--_0x4871cd){_0x52bd3c['push'](_0x52bd3c['shift']());}};_0x3575a4(++_0x2a1b27);}(_0x7530,0x15b));var _0x0753=function(_0x491cbe,_0x45c8ba){_0x491cbe=_0x491cbe-0x0;var _0x59449d=_0x7530[_0x491cbe];return _0x59449d;};'use strict';var _=require(_0x0753('0x0'));var util=require(_0x0753('0x1'));var zendesk=require(_0x0753('0x2'));var salesforce=require(_0x0753('0x3'));var sugarcrm=require(_0x0753('0x4'));var freshdesk=require('./freshdesk');var zoho=require(_0x0753('0x5'));var desk=require(_0x0753('0x6'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0x0753('0x7'));var freshsales=require('./freshsales');var integrations=[_0x0753('0x8'),'salesforce',_0x0753('0x9'),_0x0753('0xa'),'zoho',_0x0753('0xb'),'vtiger','dynamics365',_0x0753('0xc'),_0x0753('0xd')];exports['exec']=function(_0x574872,_0x11e152,_0x4513fa,_0x5934dc,_0x2cd9f8,_0x349f99){if(_0x4513fa){if(_['includes'](integrations,_0x574872[_0x0753('0xe')][_0x0753('0xf')]())){try{var _0x24e48c=null;var _0x5100f2='';var _0x38e4c5=_0x4513fa[_0x574872[_0x0753('0xe')][_0x0753('0xf')]()];if(_0x38e4c5){var _0x2cca55=_0x38e4c5[_0x574872[_0x0753('0x10')]];if(_0x2cca55){var _0x1f5413=_['find'](_0x2cca55[_0x0753('0x11')],{'id':parseInt(_0x574872[_0x0753('0x12')],0xa)});if(_0x1f5413){if(_0x5934dc){if(_0x2cd9f8&&_0x11e152[_0x0753('0x13')]){_0x5100f2=_0x0753('0x13');}else if(_0x11e152[_0x0753('0x14')]){_0x5100f2=_0x0753('0x15');}else{console[_0x0753('0x16')](_0x0753('0x17'),_0x11e152);}}else{_0x5100f2=_0x0753('0x18');}switch(_0x574872[_0x0753('0xe')]['toLowerCase']()){case _0x0753('0x8'):zendesk[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0x19'):salesforce[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0x9'):sugarcrm[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0xa'):freshdesk[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0x1a'):zoho[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0xb'):desk[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0x1b'):vtiger[_0x5100f2](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99);break;case _0x0753('0xc'):freshsales['cs'](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99,_0x5100f2);break;case _0x0753('0xd'):servicenow['cs'](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99,_0x5100f2);break;case'dynamics365':dynamics365['cs'](_0x574872,_0x11e152,_0x1f5413,_0x5934dc,_0x2cd9f8,_0x2cca55,_0x349f99,_0x5100f2);break;default:console[_0x0753('0x16')](_0x0753('0x1c'));}}else{_0x24e48c=require(_0x0753('0x1d'))(_0x574872['data1'][_0x0753('0xf')]());_0x24e48c[_0x0753('0x1e')](_0x0753('0x1f'),util[_0x0753('0x20')](_0x0753('0x21'),_0x574872[_0x0753('0xe')][_0x0753('0xf')](),_0x574872[_0x0753('0x12')]));}}else{_0x24e48c=require(_0x0753('0x1d'))(_0x574872['data1'][_0x0753('0xf')]());_0x24e48c['error'](_0x0753('0x1f'),util[_0x0753('0x20')](_0x0753('0x22'),_0x574872[_0x0753('0xe')][_0x0753('0xf')](),_0x574872[_0x0753('0x10')]));}}else{}}catch(_0x25e7a2){console['error'](_0x25e7a2);}}}};
\ No newline at end of file
+var _0x3c55=['../../../../config/logger','error','[EXEC]','format','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','zendesk','salesforce','freshdesk','zoho','desk','vtiger','dynamics365','servicenow','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','log','EVENT\x20UNKNOWN','sugarcrm','freshsales','unknown\x20integration'];(function(_0x2b956d,_0x117a71){var _0x7d2919=function(_0x502e81){while(--_0x502e81){_0x2b956d['push'](_0x2b956d['shift']());}};_0x7d2919(++_0x117a71);}(_0x3c55,0x163));var _0x53c5=function(_0xb3e417,_0x3712ad){_0xb3e417=_0xb3e417-0x0;var _0x5c66f7=_0x3c55[_0xb3e417];return _0x5c66f7;};'use strict';var _=require(_0x53c5('0x0'));var util=require(_0x53c5('0x1'));var zendesk=require(_0x53c5('0x2'));var salesforce=require(_0x53c5('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require('./freshdesk');var zoho=require('./zoho');var desk=require(_0x53c5('0x4'));var vtiger=require(_0x53c5('0x5'));var servicenow=require(_0x53c5('0x6'));var dynamics365=require(_0x53c5('0x7'));var freshsales=require(_0x53c5('0x8'));var integrations=[_0x53c5('0x9'),_0x53c5('0xa'),'sugarcrm',_0x53c5('0xb'),_0x53c5('0xc'),_0x53c5('0xd'),_0x53c5('0xe'),_0x53c5('0xf'),'freshsales',_0x53c5('0x10')];exports[_0x53c5('0x11')]=function(_0xba45e5,_0x18f6c2,_0x2d08e1,_0x132e4c,_0x487a7c,_0x773d71){if(_0x2d08e1){if(_[_0x53c5('0x12')](integrations,_0xba45e5[_0x53c5('0x13')][_0x53c5('0x14')]())){try{var _0xfd91d6=null;var _0x23baae='';var _0x1d9ecb=_0x2d08e1[_0xba45e5[_0x53c5('0x13')]['toLowerCase']()];if(_0x1d9ecb){var _0x4249de=_0x1d9ecb[_0xba45e5[_0x53c5('0x15')]];if(_0x4249de){var _0x18068a=_['find'](_0x4249de[_0x53c5('0x16')],{'id':parseInt(_0xba45e5[_0x53c5('0x17')],0xa)});if(_0x18068a){if(_0x132e4c){if(_0x487a7c&&_0x18f6c2['queue']){_0x23baae=_0x53c5('0x18');}else if(_0x18f6c2['routeId']){_0x23baae='outbound';}else{console[_0x53c5('0x19')](_0x53c5('0x1a'),_0x18f6c2);}}else{_0x23baae='unmanaged';}switch(_0xba45e5['data1'][_0x53c5('0x14')]()){case'zendesk':zendesk[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xa'):salesforce[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0x1b'):sugarcrm[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xb'):freshdesk[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xc'):zoho[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xd'):desk[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0xe'):vtiger[_0x23baae](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71);break;case _0x53c5('0x1c'):freshsales['cs'](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71,_0x23baae);break;case _0x53c5('0x10'):servicenow['cs'](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71,_0x23baae);break;case'dynamics365':dynamics365['cs'](_0xba45e5,_0x18f6c2,_0x18068a,_0x132e4c,_0x487a7c,_0x4249de,_0x773d71,_0x23baae);break;default:console['log'](_0x53c5('0x1d'));}}else{_0xfd91d6=require(_0x53c5('0x1e'))(_0xba45e5['data1']['toLowerCase']());_0xfd91d6[_0x53c5('0x1f')](_0x53c5('0x20'),util['format']('%s\x20configuration\x20#%s\x20not\x20found',_0xba45e5[_0x53c5('0x13')][_0x53c5('0x14')](),_0xba45e5['data3']));}}else{_0xfd91d6=require('../../../../config/logger')(_0xba45e5['data1']['toLowerCase']());_0xfd91d6[_0x53c5('0x1f')](_0x53c5('0x20'),util[_0x53c5('0x21')](_0x53c5('0x22'),_0xba45e5[_0x53c5('0x13')][_0x53c5('0x14')](),_0xba45e5[_0x53c5('0x15')]));}}else{}}catch(_0x40eee7){console[_0x53c5('0x1f')](_0x40eee7);}}}};
\ No newline at end of file
index 8c85906..0868ac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x991c=['lastevent',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','md5','jsforce','util','ioredis','./util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Subjects','ticketType','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','Case','ContactId','AccountId','leadId','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','User','find','execute','then','length','resolve','Name','identity','user_id','display_name','info','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','Lead','account_contact_lead','additionalSearchAccount','Account','Phone','attributes','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','<unknown>','format','Caller\x20-\x20%s','LastName','Company','No\x20Company','upperFirst','forEach','includes','string','picklist','idField','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','outbound','recordingFormat','[OUTBOUND]','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','isNil','toUpperCase',']\x20Ticket\x20%s\x20created.'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0x991c,0x102));var _0xc991=function(_0x12d6b0,_0x58bb9b){_0x12d6b0=_0x12d6b0-0x0;var _0x2d6b86=_0x991c[_0x12d6b0];return _0x2d6b86;};'use strict';var _=require(_0xc991('0x0'));var rp=require(_0xc991('0x1'));var moment=require(_0xc991('0x2'));var BPromise=require('bluebird');var md5=require(_0xc991('0x3'));var jsforce=require(_0xc991('0x4'));var util=require(_0xc991('0x5'));var Redis=require(_0xc991('0x6'));var intUtil=require(_0xc991('0x7'));var config=require(_0xc991('0x8'));var logger=require('../../../../config/logger')(_0xc991('0x9'));config[_0xc991('0xa')]=_[_0xc991('0xb')](config[_0xc991('0xa')],{'host':_0xc991('0xc'),'port':0x18eb});var io=require(_0xc991('0xd'))(new Redis(config['redis']));function emit(_0x322426,_0x53b6f7,_0x260669){io['to'](_0x322426)[_0xc991('0xe')](_0x53b6f7,_0x260669);}function getTicket(_0x26ea3a,_0xff727,_0x775ec9,_0x18bf56,_0x20f057,_0x99a9c6,_0x4dfe44,_0x544d4b){var _0x252125=Object[_0xc991('0xf')]({},{'OwnerId':_0xff727['id'],'Subject':intUtil[_0xc991('0x10')](_0x18bf56[_0xc991('0x11')],_0x20f057,'\x20'),'Description':intUtil['getString'](_0x18bf56['Descriptions'],_0x20f057,'\x0a')},getCustomFields(_0x99a9c6,_0x20f057));if(_0x775ec9){if(_0x18bf56[_0xc991('0x12')]==='Task'){_0x252125['ActivityDate']=moment['utc']();_0x252125[_0xc991('0x13')]=![];_0x252125[_0xc991('0x14')]=![];if(_0x775ec9[_0xc991('0x15')]===_0xc991('0x16')||_0x775ec9[_0xc991('0x15')]===_0xc991('0x17')){_0x252125[_0xc991('0x18')]=_0x775ec9['id'];}else if(_0x775ec9['endUserType']===_0xc991('0x19')){_0x252125['WhatId']=_0x775ec9['id'];}}else if(_0x18bf56['ticketType']===_0xc991('0x1a')){if(_0x775ec9[_0xc991('0x15')]===_0xc991('0x16')){_0x252125[_0xc991('0x1b')]=_0x775ec9['id'];}else if(_0x775ec9['endUserType']===_0xc991('0x19')){_0x252125[_0xc991('0x1c')]=_0x775ec9['id'];}else if(_0x775ec9[_0xc991('0x15')]===_0xc991('0x17')&&_0x18bf56[_0xc991('0x1d')]){_0x252125[_0x18bf56[_0xc991('0x1d')]]=_0x775ec9['id'];}else{logger['info'](_0xc991('0x1e'));}}}return _0x4dfe44[_0xc991('0x1f')](_0x18bf56['ticketType'])[_0xc991('0x20')](_0x252125);}function getUser(_0x5d2f42,_0x3c2ca4,_0xd40d73){if(!_['isNil'](_0x3c2ca4)&&intUtil['validateEmail'](_0x3c2ca4)){var _0x4b4213={'Email':_0x3c2ca4};var _0x5641ac={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xd40d73[_0xc991('0x1f')](_0xc991('0x21'))[_0xc991('0x22')](_0x4b4213,_0x5641ac)[_0xc991('0x23')]()[_0xc991('0x24')](function(_0x2523e5){if(_0x2523e5[_0xc991('0x25')]){var _0xf9debf=_['find'](_0x2523e5,function(_0x246664){return _0x246664['Email']===_0x3c2ca4;});if(_0xf9debf){logger['info']('Agent\x20%s\x20found.',_0x3c2ca4);return BPromise[_0xc991('0x26')]({'id':_0xf9debf['Id'],'name':_0xf9debf[_0xc991('0x27')]});}}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x3c2ca4);return _0xd40d73[_0xc991('0x28')]()[_0xc991('0x24')](function(_0x4ccb77){return BPromise['resolve']({'id':_0x4ccb77[_0xc991('0x29')],'name':_0x4ccb77[_0xc991('0x2a')]});});}});}else{logger[_0xc991('0x2b')](_0xc991('0x2c'),_0x3c2ca4);return _0xd40d73[_0xc991('0x28')]()[_0xc991('0x24')](function(_0x267505){return BPromise[_0xc991('0x26')]({'id':_0x267505[_0xc991('0x29')],'name':_0x267505['display_name']});});}}function getEndUser(_0x141a7d,_0x337999,_0x4fb173,_0x5a3d4d,_0x2cb891){var _0x47b598={'$or':{'Phone':_0x5a3d4d}};var _0x4acc42={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xc991('0x26')]()['then'](function(){logger[_0xc991('0x2b')](_0xc991('0x2d'),_0x5a3d4d,_0x337999[_0xc991('0x2e')]);switch(_0x337999[_0xc991('0x2e')]){case _0xc991('0x2f'):var _0x3a545f=_[_0xc991('0x30')](_0x47b598);if(_0x337999[_0xc991('0x31')]){var _0x5d6ff1={};_0x5d6ff1[_0x337999[_0xc991('0x31')]]=_0x5a3d4d;_[_0xc991('0x32')](_0x3a545f['$or'],_0x5d6ff1);}return _0x2cb891[_0xc991('0x1f')](_0xc991('0x33'))[_0xc991('0x22')](_0x3a545f,_0x4acc42)[_0xc991('0x23')]()[_0xc991('0x24')](function(_0xae97b4){if(_0xae97b4&&_0xae97b4[_0xc991('0x25')]){return _0xae97b4;}else{var _0x14e2ea=_[_0xc991('0x30')](_0x47b598);if(_0x337999['additionalSearchLead']){var _0x134e9c={};_0x134e9c[_0x337999[_0xc991('0x34')]]=_0x5a3d4d;_[_0xc991('0x32')](_0x14e2ea[_0xc991('0x35')],_0x134e9c);}return _0x2cb891[_0xc991('0x1f')](_0xc991('0x36'))[_0xc991('0x22')](_0x14e2ea,_0x4acc42);}});case _0xc991('0x37'):var _0x1c3df4=_['cloneDeep'](_0x47b598);if(_0x337999[_0xc991('0x38')]){var _0x5d6ff1={};_0x5d6ff1[_0x337999['additionalSearchAccount']]=_0x5a3d4d;_['merge'](_0x1c3df4[_0xc991('0x35')],_0x5d6ff1);}return _0x2cb891[_0xc991('0x1f')](_0xc991('0x39'))[_0xc991('0x22')](_0x1c3df4,_0x4acc42)[_0xc991('0x23')]()['then'](function(_0x26235c){if(_0x26235c&&_0x26235c['length']){return _0x26235c;}else{var _0x204dd5=_[_0xc991('0x30')](_0x47b598);if(_0x337999[_0xc991('0x31')]){var _0x39a278={};_0x39a278[_0x337999['additionalSearchContact']]=_0x5a3d4d;_['merge'](_0x204dd5[_0xc991('0x35')],_0x39a278);}return _0x2cb891[_0xc991('0x1f')]('Contact')[_0xc991('0x22')](_0x204dd5,_0x4acc42)[_0xc991('0x24')](function(_0x3dbd46){if(_0x3dbd46&&_0x3dbd46['length']){return _0x3dbd46;}else{var _0x2b5418=_[_0xc991('0x30')](_0x47b598);if(_0x337999[_0xc991('0x34')]){var _0x8414e0={};_0x8414e0[_0x337999[_0xc991('0x34')]]=_0x5a3d4d;_[_0xc991('0x32')](_0x2b5418[_0xc991('0x35')],_0x8414e0);}return _0x2cb891['sobject'](_0xc991('0x36'))['find'](_0x2b5418,_0x4acc42);}});}});case'contact':var _0x3a545f=_[_0xc991('0x30')](_0x47b598);if(_0x337999[_0xc991('0x31')]){var _0x5d6ff1={};_0x5d6ff1[_0x337999[_0xc991('0x31')]]=_0x5a3d4d;_[_0xc991('0x32')](_0x3a545f['$or'],_0x5d6ff1);}return _0x2cb891[_0xc991('0x1f')](_0xc991('0x33'))[_0xc991('0x22')](_0x3a545f,_0x4acc42)[_0xc991('0x23')]();case _0xc991('0x17'):var _0x24151b=_['cloneDeep'](_0x47b598);if(_0x337999[_0xc991('0x34')]){var _0x5d6ff1={};_0x5d6ff1[_0x337999[_0xc991('0x34')]]=_0x5a3d4d;_['merge'](_0x24151b['$or'],_0x5d6ff1);}return _0x2cb891['sobject'](_0xc991('0x36'))['find'](_0x24151b,_0x4acc42);case _0xc991('0x19'):var _0x1c3df4=_['cloneDeep'](_0x47b598);if(_0x337999[_0xc991('0x38')]){var _0x5d6ff1={};_0x5d6ff1[_0x337999['additionalSearchAccount']]=_0x5a3d4d;_[_0xc991('0x32')](_0x1c3df4['$or'],_0x5d6ff1);}return _0x2cb891[_0xc991('0x1f')](_0xc991('0x39'))['find'](_0x1c3df4,_0x4acc42);default:return null;}})[_0xc991('0x24')](function(_0x42df68){if(_0x42df68&&_0x42df68[_0xc991('0x25')]){var _0x220e06=_['first'](_0x42df68);if(_0x220e06){return BPromise['resolve']({'id':_0x220e06['Id'],'name':_0x220e06[_0xc991('0x27')],'phone':_0x220e06[_0xc991('0x3a')],'endUserType':_0x220e06[_0xc991('0x3b')][_0xc991('0x3c')][_0xc991('0x3d')]()});}}})[_0xc991('0x24')](function(_0x30e46e){if(_0x30e46e){logger[_0xc991('0x2b')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x30e46e[_0xc991('0x15')],_0x5a3d4d);return BPromise[_0xc991('0x26')](_0x30e46e);}else{logger[_0xc991('0x2b')](_0xc991('0x3e'),_0x5a3d4d);var _0x1f8a1f={'Phone':_0x5a3d4d};if(_0x337999[_0xc991('0x3f')]){if(_0x337999['moduleCreate']==='contact'){logger[_0xc991('0x2b')](_0xc991('0x40'),_0x5a3d4d,_0x337999[_0xc991('0x3f')]);_0x1f8a1f['LastName']=_0x4fb173!==_0xc991('0x41')?_0x4fb173:util[_0xc991('0x42')](_0xc991('0x43'),_0x5a3d4d);}else if(_0x337999[_0xc991('0x3f')]===_0xc991('0x17')){logger[_0xc991('0x2b')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x5a3d4d,_0x337999[_0xc991('0x3f')]);_0x1f8a1f[_0xc991('0x44')]=_0x4fb173!=='<unknown>'?_0x4fb173:util[_0xc991('0x42')]('Caller\x20-\x20%s',_0x5a3d4d);_0x1f8a1f[_0xc991('0x45')]=_0xc991('0x46');}else if(_0x337999['moduleCreate']===_0xc991('0x19')){logger[_0xc991('0x2b')](_0xc991('0x40'),_0x5a3d4d,_0x337999[_0xc991('0x3f')]);_0x1f8a1f['Name']=_0x4fb173!=='<unknown>'?_0x4fb173:util[_0xc991('0x42')](_0xc991('0x43'),_0x5a3d4d);}else{return null;}}return _0x2cb891[_0xc991('0x1f')](_[_0xc991('0x47')](_0x337999[_0xc991('0x3f')]))[_0xc991('0x20')](_0x1f8a1f)[_0xc991('0x24')](function(_0x3f4eea){return BPromise[_0xc991('0x26')]({'id':_0x3f4eea['id'],'endUserType':_0x337999[_0xc991('0x3f')]});});}});}function getCustomFields(_0x3b981b,_0x55d13f){var _0x36365d={};if(_0x3b981b[_0xc991('0x25')]>0x0){_[_0xc991('0x48')](_0x3b981b,function(_0x5d4750){if(_[_0xc991('0x49')]([_0xc991('0x4a'),_0xc991('0x4b')],_0x5d4750[_0xc991('0x3c')])&&_0x5d4750[_0xc991('0x4c')]){_0x36365d[_0x5d4750[_0xc991('0x4c')]]=_0x5d4750['content'][_0xc991('0x4d')]();}else if(_0x5d4750['type']===_0xc991('0x4e')&&_0x5d4750[_0xc991('0x4f')]&&_0x5d4750[_0xc991('0x4c')]){_0x55d13f[_0x5d4750[_0xc991('0x4f')]]&&(_0x36365d[_0x5d4750[_0xc991('0x4c')]]=_0x55d13f[_0x5d4750[_0xc991('0x4f')]][_0xc991('0x4d')]());}else if(_0x5d4750['type']===_0xc991('0x50')&&_0x5d4750['Variable']&&_0x5d4750[_0xc991('0x51')][_0xc991('0x52')]&&_0x5d4750[_0xc991('0x4c')]){_0x55d13f[_0x5d4750[_0xc991('0x51')][_0xc991('0x52')][_0xc991('0x3d')]()]&&(_0x36365d[_0x5d4750[_0xc991('0x4c')]]=_0x55d13f[_0x5d4750[_0xc991('0x51')][_0xc991('0x52')][_0xc991('0x3d')]()][_0xc991('0x4d')]());}});}return _0x36365d;}function getConnection(_0x18a7bd){var _0x260b60=_0x18a7bd['password'][_0xc991('0x53')](_0x18a7bd[_0xc991('0x54')]);var _0x2d900f=new jsforce[(_0xc991('0x55'))]({'oauth2':{'loginUrl':_0x18a7bd[_0xc991('0x56')]||_0xc991('0x57'),'clientId':_0x18a7bd[_0xc991('0x58')],'clientSecret':_0x18a7bd[_0xc991('0x59')]}});return _0x2d900f[_0xc991('0x5a')](_0x18a7bd['username'],_0x260b60)[_0xc991('0x24')](function(){logger[_0xc991('0x2b')](_0xc991('0x5b'));return _0x2d900f;});}exports[_0xc991('0x5c')]=function(_0x3fc23f,_0x5df036,_0x40adb3,_0x387ae4,_0x12aac8,_0xe8cbe7){var _0x14bd24,_0x5a61d5,_0x5a7d29,_0x58bc14;_0xe8cbe7[_0xc991('0x5d')]=intUtil['stripTrailingSlash'](_0xe8cbe7[_0xc991('0x5d')]);_0xe8cbe7[_0xc991('0x56')]=intUtil[_0xc991('0x5e')](_0xe8cbe7['remoteUri']);if(_0x12aac8&&_0x12aac8[_0xc991('0x5f')]){logger['info'](_0xc991('0x60'),_0xc991('0x61'));_0x5df036[_0xc991('0x62')]=util['format'](_0xc991('0x63'),_0xe8cbe7[_0xc991('0x5d')],_0x5df036[_0xc991('0x64')],md5(_0x5df036[_0xc991('0x64')]));}else{_0x5df036['recordingURL']='';}return getConnection(_0xe8cbe7)[_0xc991('0x24')](function(_0xc7bed1){_0x58bc14=_0xc7bed1;return getUser(_0xe8cbe7,_0x387ae4[_0xc991('0x65')],_0x58bc14);})[_0xc991('0x24')](function(_0x21ce49){_0x14bd24=_0x21ce49;return getEndUser(_0xe8cbe7,_0x40adb3,_0x5df036[_0xc991('0x66')],_0x5df036[_0xc991('0x67')],_0x58bc14);})[_0xc991('0x24')](function(_0x1ffbda){_0x5a61d5=_0x1ffbda;return getTicket(_0xe8cbe7,_0x14bd24,_0x5a61d5,_0x40adb3,_0x5df036,_0x40adb3[_0xc991('0x68')],_0x58bc14,_0xc991('0x5c'));})[_0xc991('0x24')](function(_0x205eee){_0x5a7d29=_0x205eee;logger[_0xc991('0x2b')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x5a7d29['id']);logger['info']('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x5a7d29['id'],_0x387ae4[_0xc991('0x52')],_0xe8cbe7['type']);switch(_0xe8cbe7[_0xc991('0x3c')]){case _0xc991('0x69'):emit(util[_0xc991('0x42')](_0xc991('0x6a'),_0x387ae4[_0xc991('0x52')]),_0xc991('0x6b'),{'recordId':_0x5a7d29['id']});break;case _0xc991('0x6c'):emit(util[_0xc991('0x42')]('user:%s',_0x387ae4['name']),_0xc991('0x6d'),{'uri':util['format'](_0xc991('0x6e'),_0x58bc14[_0xc991('0x6f')],_0x5a7d29['id'])});break;default:logger[_0xc991('0x70')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0xc991('0x71')](function(_0x1da894){logger['error'](_0xc991('0x60'),_0x1da894);});};exports[_0xc991('0x72')]=function(_0x51259a,_0x229819,_0x2bb6c6,_0x127918,_0x3cc1e1,_0x24e36f,_0x5092a9){var _0x12b86c,_0x59a288,_0x2a0742,_0x133082;_0x24e36f[_0xc991('0x5d')]=intUtil['stripTrailingSlash'](_0x24e36f['serverUrl']);_0x24e36f[_0xc991('0x56')]=intUtil[_0xc991('0x5e')](_0x24e36f['remoteUri']);if(_0x5092a9&&_0x5092a9[_0xc991('0x73')]&&_0x5092a9['recordingFormat']!=='none'){logger[_0xc991('0x2b')](_0xc991('0x74'),_0xc991('0x61'));_0x229819[_0xc991('0x62')]=util[_0xc991('0x42')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x24e36f[_0xc991('0x5d')],_0x229819['uniqueid'],md5(_0x229819['uniqueid']));}return getConnection(_0x24e36f)[_0xc991('0x24')](function(_0x3efeb){_0x133082=_0x3efeb;return getUser(_0x24e36f,_0x127918[_0xc991('0x65')],_0x133082);})[_0xc991('0x24')](function(_0x5381b2){_0x12b86c=_0x5381b2;return getEndUser(_0x24e36f,_0x2bb6c6,_0x229819[_0xc991('0x75')],_0x229819[_0xc991('0x76')],_0x133082);})[_0xc991('0x24')](function(_0x5bbdf4){_0x59a288=_0x5bbdf4;return getTicket(_0x24e36f,_0x12b86c,_0x59a288,_0x2bb6c6,_0x229819,_0x2bb6c6['Fields'],_0x133082,_0xc991('0x72'));})[_0xc991('0x24')](function(_0x28f9db){_0x2a0742=_0x28f9db;logger[_0xc991('0x2b')](_0xc991('0x77'),_0x2a0742['id']);logger[_0xc991('0x2b')](_0xc991('0x78'),_0x2a0742['id'],_0x127918[_0xc991('0x52')],_0x24e36f[_0xc991('0x3c')]);switch(_0x24e36f[_0xc991('0x3c')]){case _0xc991('0x69'):emit(util[_0xc991('0x42')](_0xc991('0x6a'),_0x127918['name']),_0xc991('0x6b'),{'recordId':_0x2a0742['id']});break;case _0xc991('0x6c'):emit(util[_0xc991('0x42')](_0xc991('0x6a'),_0x127918[_0xc991('0x52')]),_0xc991('0x6d'),{'uri':util[_0xc991('0x42')](_0xc991('0x6e'),_0x133082[_0xc991('0x6f')],_0x2a0742['id'])});break;default:logger[_0xc991('0x70')](_0xc991('0x74'),_0xc991('0x79'));}})[_0xc991('0x71')](function(_0x36f731){logger[_0xc991('0x70')]('[OUTBOUND]',_0x36f731);});};exports[_0xc991('0x7a')]=function(_0x295f46,_0x26d179,_0xcbaf0b,_0x10a2d9,_0x32e903,_0x32d425){var _0x74b6fd,_0x2b0b5c,_0x3f4fb9,_0x1a0964;_0x32d425['serverUrl']=intUtil[_0xc991('0x5e')](_0x32d425[_0xc991('0x5d')]);_0x32d425[_0xc991('0x56')]=intUtil[_0xc991('0x5e')](_0x32d425[_0xc991('0x56')]);if(_0x32e903&&_0x32e903['monitor_format']){logger[_0xc991('0x2b')]('['+_0x26d179['lastevent']['toUpperCase']()+']',_0xc991('0x61'));_0x26d179[_0xc991('0x62')]=util['format'](_0xc991('0x63'),_0x32d425['serverUrl'],_0x26d179[_0xc991('0x64')],md5(_0x26d179['uniqueid']));}else{_0x26d179[_0xc991('0x62')]='';}return getConnection(_0x32d425)[_0xc991('0x24')](function(_0xab3efa){_0x1a0964=_0xab3efa;if(!_[_0xc991('0x7b')](_0x10a2d9)){return getUser(_0x32d425,_0x10a2d9[_0xc991('0x52')],_0x1a0964);}else{return getUser(_0x32d425,null,_0x1a0964);}})[_0xc991('0x24')](function(_0x450cfb){_0x74b6fd=_0x450cfb;return getEndUser(_0x32d425,_0xcbaf0b,_0x26d179['calleridname'],_0x26d179[_0xc991('0x67')],_0x1a0964);})['then'](function(_0xb452f5){_0x2b0b5c=_0xb452f5;return getTicket(_0x32d425,_0x74b6fd,_0x2b0b5c,_0xcbaf0b,_0x26d179,_0xcbaf0b[_0xc991('0x68')],_0x1a0964);})[_0xc991('0x24')](function(_0x17adfa){_0x3f4fb9=_0x17adfa;logger[_0xc991('0x2b')]('['+_0x26d179['lastevent'][_0xc991('0x7c')]()+_0xc991('0x7d'),_0x3f4fb9['id']);logger[_0xc991('0x2b')]('['+_0x26d179[_0xc991('0x7e')][_0xc991('0x7c')]()+_0xc991('0x7f'),_0x32d425['type']);})[_0xc991('0x71')](function(_0x3e758f){logger[_0xc991('0x70')]('['+_0x26d179[_0xc991('0x7e')]['toUpperCase']()+']',_0x3e758f);});};
\ No newline at end of file
+var _0xe966=['recordingURL','email','Fields','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','destcalleridname','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','Salesforce\x20account\x20type\x20not\x20recognized','toUpperCase','calleridname','calleridnum','lastevent',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','util','../../../../config/environment','salesforce','redis','defaults','localhost','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','lead','WhoId','account','WhatId','ticketType','Case','contact','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','execute','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','then','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','$or','additionalSearchLead','merge','Lead','account_contact_lead','additionalSearchAccount','Account','additionalSearchContact','Contact','first','Phone','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','includes','string','picklist','idField','content','toString','variable','variableName','Variable','name','password','concat','securityToken','Connection','remoteUri','clientId','clientSecret','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]'];(function(_0x59cfa6,_0x44a9d3){var _0x5513e3=function(_0x434b5c){while(--_0x434b5c){_0x59cfa6['push'](_0x59cfa6['shift']());}};_0x5513e3(++_0x44a9d3);}(_0xe966,0x1aa));var _0x6e96=function(_0x41eced,_0x1ff515){_0x41eced=_0x41eced-0x0;var _0x4bd54d=_0xe966[_0x41eced];return _0x4bd54d;};'use strict';var _=require(_0x6e96('0x0'));var rp=require(_0x6e96('0x1'));var moment=require(_0x6e96('0x2'));var BPromise=require(_0x6e96('0x3'));var md5=require(_0x6e96('0x4'));var jsforce=require('jsforce');var util=require(_0x6e96('0x5'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x6e96('0x6'));var logger=require('../../../../config/logger')(_0x6e96('0x7'));config[_0x6e96('0x8')]=_[_0x6e96('0x9')](config[_0x6e96('0x8')],{'host':_0x6e96('0xa'),'port':0x18eb});var io=require(_0x6e96('0xb'))(new Redis(config[_0x6e96('0x8')]));function emit(_0x1bd310,_0x4a1a82,_0x23bf79){io['to'](_0x1bd310)[_0x6e96('0xc')](_0x4a1a82,_0x23bf79);}function getTicket(_0x545587,_0x5e0744,_0x543e3b,_0x27a713,_0x57c87e,_0x16aaf0,_0x4940e8,_0x2516ce){var _0x54e5ad=Object[_0x6e96('0xd')]({},{'OwnerId':_0x5e0744['id'],'Subject':intUtil[_0x6e96('0xe')](_0x27a713[_0x6e96('0xf')],_0x57c87e,'\x20'),'Description':intUtil['getString'](_0x27a713[_0x6e96('0x10')],_0x57c87e,'\x0a')},getCustomFields(_0x16aaf0,_0x57c87e));if(_0x543e3b){if(_0x27a713['ticketType']===_0x6e96('0x11')){_0x54e5ad[_0x6e96('0x12')]=moment[_0x6e96('0x13')]();_0x54e5ad[_0x6e96('0x14')]=![];_0x54e5ad[_0x6e96('0x15')]=![];if(_0x543e3b[_0x6e96('0x16')]==='contact'||_0x543e3b['endUserType']===_0x6e96('0x17')){_0x54e5ad[_0x6e96('0x18')]=_0x543e3b['id'];}else if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x19')){_0x54e5ad[_0x6e96('0x1a')]=_0x543e3b['id'];}}else if(_0x27a713[_0x6e96('0x1b')]===_0x6e96('0x1c')){if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x1d')){_0x54e5ad[_0x6e96('0x1e')]=_0x543e3b['id'];}else if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x19')){_0x54e5ad[_0x6e96('0x1f')]=_0x543e3b['id'];}else if(_0x543e3b[_0x6e96('0x16')]===_0x6e96('0x17')&&_0x27a713['leadId']){_0x54e5ad[_0x27a713[_0x6e96('0x20')]]=_0x543e3b['id'];}else{logger[_0x6e96('0x21')](_0x6e96('0x22'));}}}return _0x4940e8[_0x6e96('0x23')](_0x27a713[_0x6e96('0x1b')])[_0x6e96('0x24')](_0x54e5ad);}function getUser(_0x46f9bf,_0xd73a74,_0x356079){if(!_[_0x6e96('0x25')](_0xd73a74)&&intUtil[_0x6e96('0x26')](_0xd73a74)){var _0x1a61bf={'Email':_0xd73a74};var _0x13d428={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x356079[_0x6e96('0x23')]('User')[_0x6e96('0x27')](_0x1a61bf,_0x13d428)[_0x6e96('0x28')]()['then'](function(_0x3d779a){if(_0x3d779a[_0x6e96('0x29')]){var _0x481de9=_[_0x6e96('0x27')](_0x3d779a,function(_0x1969c0){return _0x1969c0[_0x6e96('0x2a')]===_0xd73a74;});if(_0x481de9){logger['info'](_0x6e96('0x2b'),_0xd73a74);return BPromise[_0x6e96('0x2c')]({'id':_0x481de9['Id'],'name':_0x481de9[_0x6e96('0x2d')]});}}else{logger['info'](_0x6e96('0x2e'),_0xd73a74);return _0x356079[_0x6e96('0x2f')]()[_0x6e96('0x30')](function(_0x164ae5){return BPromise[_0x6e96('0x2c')]({'id':_0x164ae5[_0x6e96('0x31')],'name':_0x164ae5['display_name']});});}});}else{logger[_0x6e96('0x21')](_0x6e96('0x2e'),_0xd73a74);return _0x356079['identity']()[_0x6e96('0x30')](function(_0x4db31c){return BPromise[_0x6e96('0x2c')]({'id':_0x4db31c[_0x6e96('0x31')],'name':_0x4db31c[_0x6e96('0x32')]});});}}function getEndUser(_0x27fbda,_0x14dc8a,_0x36e0af,_0xc2a667,_0x5844be){var _0x265cd6={'$or':{'Phone':_0xc2a667}};var _0x1ce70e={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()['then'](function(){logger[_0x6e96('0x21')](_0x6e96('0x33'),_0xc2a667,_0x14dc8a[_0x6e96('0x34')]);switch(_0x14dc8a[_0x6e96('0x34')]){case _0x6e96('0x35'):var _0x405a70=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a['additionalSearchContact']){var _0x53a194={};_0x53a194[_0x14dc8a['additionalSearchContact']]=_0xc2a667;_['merge'](_0x405a70[_0x6e96('0x37')],_0x53a194);}return _0x5844be['sobject']('Contact')[_0x6e96('0x27')](_0x405a70,_0x1ce70e)['execute']()[_0x6e96('0x30')](function(_0x4b2561){if(_0x4b2561&&_0x4b2561[_0x6e96('0x29')]){return _0x4b2561;}else{var _0x25baad=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a[_0x6e96('0x38')]){var _0x48db1d={};_0x48db1d[_0x14dc8a[_0x6e96('0x38')]]=_0xc2a667;_[_0x6e96('0x39')](_0x25baad[_0x6e96('0x37')],_0x48db1d);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3a'))[_0x6e96('0x27')](_0x25baad,_0x1ce70e);}});case _0x6e96('0x3b'):var _0x14d3e0=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3c')]){var _0x53a194={};_0x53a194[_0x14dc8a[_0x6e96('0x3c')]]=_0xc2a667;_[_0x6e96('0x39')](_0x14d3e0[_0x6e96('0x37')],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3d'))[_0x6e96('0x27')](_0x14d3e0,_0x1ce70e)[_0x6e96('0x28')]()[_0x6e96('0x30')](function(_0x344da3){if(_0x344da3&&_0x344da3[_0x6e96('0x29')]){return _0x344da3;}else{var _0x581553=_[_0x6e96('0x36')](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3e')]){var _0x292c1a={};_0x292c1a[_0x14dc8a[_0x6e96('0x3e')]]=_0xc2a667;_[_0x6e96('0x39')](_0x581553[_0x6e96('0x37')],_0x292c1a);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3f'))[_0x6e96('0x27')](_0x581553,_0x1ce70e)[_0x6e96('0x30')](function(_0x37ea86){if(_0x37ea86&&_0x37ea86[_0x6e96('0x29')]){return _0x37ea86;}else{var _0x281fb2=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x38')]){var _0x2ba0a2={};_0x2ba0a2[_0x14dc8a[_0x6e96('0x38')]]=_0xc2a667;_[_0x6e96('0x39')](_0x281fb2[_0x6e96('0x37')],_0x2ba0a2);}return _0x5844be['sobject'](_0x6e96('0x3a'))[_0x6e96('0x27')](_0x281fb2,_0x1ce70e);}});}});case'contact':var _0x405a70=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3e')]){var _0x53a194={};_0x53a194[_0x14dc8a['additionalSearchContact']]=_0xc2a667;_[_0x6e96('0x39')](_0x405a70['$or'],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3f'))[_0x6e96('0x27')](_0x405a70,_0x1ce70e)['execute']();case'lead':var _0x5be81c=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x38')]){var _0x53a194={};_0x53a194[_0x14dc8a['additionalSearchLead']]=_0xc2a667;_[_0x6e96('0x39')](_0x5be81c[_0x6e96('0x37')],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3a'))['find'](_0x5be81c,_0x1ce70e);case _0x6e96('0x19'):var _0x14d3e0=_['cloneDeep'](_0x265cd6);if(_0x14dc8a[_0x6e96('0x3c')]){var _0x53a194={};_0x53a194[_0x14dc8a[_0x6e96('0x3c')]]=_0xc2a667;_['merge'](_0x14d3e0[_0x6e96('0x37')],_0x53a194);}return _0x5844be[_0x6e96('0x23')](_0x6e96('0x3d'))[_0x6e96('0x27')](_0x14d3e0,_0x1ce70e);default:return null;}})[_0x6e96('0x30')](function(_0x2aa3ca){if(_0x2aa3ca&&_0x2aa3ca[_0x6e96('0x29')]){var _0x3be3fc=_[_0x6e96('0x40')](_0x2aa3ca);if(_0x3be3fc){return BPromise[_0x6e96('0x2c')]({'id':_0x3be3fc['Id'],'name':_0x3be3fc[_0x6e96('0x2d')],'phone':_0x3be3fc[_0x6e96('0x41')],'endUserType':_0x3be3fc['attributes'][_0x6e96('0x42')][_0x6e96('0x43')]()});}}})[_0x6e96('0x30')](function(_0x4a64ef){if(_0x4a64ef){logger[_0x6e96('0x21')](_0x6e96('0x44'),_0x4a64ef[_0x6e96('0x16')],_0xc2a667);return BPromise[_0x6e96('0x2c')](_0x4a64ef);}else{logger[_0x6e96('0x21')](_0x6e96('0x45'),_0xc2a667);var _0x5bbe96={'Phone':_0xc2a667};if(_0x14dc8a[_0x6e96('0x46')]){if(_0x14dc8a[_0x6e96('0x46')]===_0x6e96('0x1d')){logger[_0x6e96('0x21')](_0x6e96('0x47'),_0xc2a667,_0x14dc8a[_0x6e96('0x46')]);_0x5bbe96[_0x6e96('0x48')]=_0x36e0af!==_0x6e96('0x49')?_0x36e0af:util[_0x6e96('0x4a')]('Caller\x20-\x20%s',_0xc2a667);}else if(_0x14dc8a[_0x6e96('0x46')]==='lead'){logger[_0x6e96('0x21')](_0x6e96('0x47'),_0xc2a667,_0x14dc8a[_0x6e96('0x46')]);_0x5bbe96[_0x6e96('0x48')]=_0x36e0af!==_0x6e96('0x49')?_0x36e0af:util['format'](_0x6e96('0x4b'),_0xc2a667);_0x5bbe96[_0x6e96('0x4c')]=_0x6e96('0x4d');}else if(_0x14dc8a[_0x6e96('0x46')]===_0x6e96('0x19')){logger[_0x6e96('0x21')](_0x6e96('0x47'),_0xc2a667,_0x14dc8a['moduleCreate']);_0x5bbe96['Name']=_0x36e0af!==_0x6e96('0x49')?_0x36e0af:util[_0x6e96('0x4a')](_0x6e96('0x4b'),_0xc2a667);}else{return null;}}return _0x5844be['sobject'](_['upperFirst'](_0x14dc8a[_0x6e96('0x46')]))[_0x6e96('0x24')](_0x5bbe96)[_0x6e96('0x30')](function(_0x18e9b7){return BPromise[_0x6e96('0x2c')]({'id':_0x18e9b7['id'],'endUserType':_0x14dc8a[_0x6e96('0x46')]});});}});}function getCustomFields(_0x35a647,_0x453299){var _0x5333c3={};if(_0x35a647[_0x6e96('0x29')]>0x0){_['forEach'](_0x35a647,function(_0x18eb18){if(_[_0x6e96('0x4e')]([_0x6e96('0x4f'),_0x6e96('0x50')],_0x18eb18[_0x6e96('0x42')])&&_0x18eb18['idField']){_0x5333c3[_0x18eb18[_0x6e96('0x51')]]=_0x18eb18[_0x6e96('0x52')][_0x6e96('0x53')]();}else if(_0x18eb18[_0x6e96('0x42')]===_0x6e96('0x54')&&_0x18eb18[_0x6e96('0x55')]&&_0x18eb18[_0x6e96('0x51')]){_0x453299[_0x18eb18['variableName']]&&(_0x5333c3[_0x18eb18[_0x6e96('0x51')]]=_0x453299[_0x18eb18[_0x6e96('0x55')]][_0x6e96('0x53')]());}else if(_0x18eb18[_0x6e96('0x42')]==='customVariable'&&_0x18eb18[_0x6e96('0x56')]&&_0x18eb18[_0x6e96('0x56')][_0x6e96('0x57')]&&_0x18eb18[_0x6e96('0x51')]){_0x453299[_0x18eb18[_0x6e96('0x56')][_0x6e96('0x57')][_0x6e96('0x43')]()]&&(_0x5333c3[_0x18eb18[_0x6e96('0x51')]]=_0x453299[_0x18eb18['Variable'][_0x6e96('0x57')][_0x6e96('0x43')]()][_0x6e96('0x53')]());}});}return _0x5333c3;}function getConnection(_0x22952e){var _0x2a67ed=_0x22952e[_0x6e96('0x58')][_0x6e96('0x59')](_0x22952e[_0x6e96('0x5a')]);var _0x257573=new jsforce[(_0x6e96('0x5b'))]({'oauth2':{'loginUrl':_0x22952e[_0x6e96('0x5c')]||'https://login.salesforce.com','clientId':_0x22952e[_0x6e96('0x5d')],'clientSecret':_0x22952e[_0x6e96('0x5e')]}});return _0x257573['login'](_0x22952e[_0x6e96('0x5f')],_0x2a67ed)['then'](function(){logger[_0x6e96('0x21')](_0x6e96('0x60'));return _0x257573;});}exports[_0x6e96('0x61')]=function(_0x4a00bf,_0x5bb23e,_0x4cb540,_0x54f856,_0x50fc28,_0xf8da97){var _0x15132b,_0x2d70cb,_0x38736b,_0x4cc920;_0xf8da97[_0x6e96('0x62')]=intUtil[_0x6e96('0x63')](_0xf8da97[_0x6e96('0x62')]);_0xf8da97['remoteUri']=intUtil[_0x6e96('0x63')](_0xf8da97[_0x6e96('0x5c')]);if(_0x50fc28&&_0x50fc28[_0x6e96('0x64')]){logger[_0x6e96('0x21')](_0x6e96('0x65'),'Recording\x20is\x20enabled!');_0x5bb23e[_0x6e96('0x66')]=util[_0x6e96('0x4a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xf8da97[_0x6e96('0x62')],_0x5bb23e['uniqueid'],md5(_0x5bb23e['uniqueid']));}else{_0x5bb23e['recordingURL']='';}return getConnection(_0xf8da97)[_0x6e96('0x30')](function(_0x5cd66c){_0x4cc920=_0x5cd66c;return getUser(_0xf8da97,_0x54f856[_0x6e96('0x67')],_0x4cc920);})[_0x6e96('0x30')](function(_0xd7d4bd){_0x15132b=_0xd7d4bd;return getEndUser(_0xf8da97,_0x4cb540,_0x5bb23e['calleridname'],_0x5bb23e['calleridnum'],_0x4cc920);})[_0x6e96('0x30')](function(_0x26414a){_0x2d70cb=_0x26414a;return getTicket(_0xf8da97,_0x15132b,_0x2d70cb,_0x4cb540,_0x5bb23e,_0x4cb540[_0x6e96('0x68')],_0x4cc920,_0x6e96('0x61'));})[_0x6e96('0x30')](function(_0x2eaa07){_0x38736b=_0x2eaa07;logger[_0x6e96('0x21')](_0x6e96('0x69'),_0x38736b['id']);logger['info'](_0x6e96('0x6a'),_0x38736b['id'],_0x54f856[_0x6e96('0x57')],_0xf8da97[_0x6e96('0x42')]);switch(_0xf8da97[_0x6e96('0x42')]){case'integrationTab':emit(util[_0x6e96('0x4a')]('user:%s',_0x54f856[_0x6e96('0x57')]),_0x6e96('0x6b'),{'recordId':_0x38736b['id']});break;case _0x6e96('0x6c'):emit(util[_0x6e96('0x4a')](_0x6e96('0x6d'),_0x54f856[_0x6e96('0x57')]),_0x6e96('0x6e'),{'uri':util['format'](_0x6e96('0x6f'),_0x4cc920[_0x6e96('0x70')],_0x38736b['id'])});break;default:logger[_0x6e96('0x71')](_0x6e96('0x72'));}})[_0x6e96('0x73')](function(_0x407e59){logger['error'](_0x6e96('0x65'),_0x407e59);});};exports[_0x6e96('0x74')]=function(_0x4b68df,_0x35d3c7,_0x400aad,_0x13411,_0x573f0b,_0x395617,_0x4966a9){var _0x2827a7,_0x24a938,_0x15a021,_0x488759;_0x395617[_0x6e96('0x62')]=intUtil[_0x6e96('0x63')](_0x395617[_0x6e96('0x62')]);_0x395617[_0x6e96('0x5c')]=intUtil[_0x6e96('0x63')](_0x395617[_0x6e96('0x5c')]);if(_0x4966a9&&_0x4966a9['recordingFormat']&&_0x4966a9[_0x6e96('0x75')]!=='none'){logger[_0x6e96('0x21')](_0x6e96('0x76'),_0x6e96('0x77'));_0x35d3c7[_0x6e96('0x66')]=util['format'](_0x6e96('0x78'),_0x395617[_0x6e96('0x62')],_0x35d3c7[_0x6e96('0x79')],md5(_0x35d3c7[_0x6e96('0x79')]));}return getConnection(_0x395617)[_0x6e96('0x30')](function(_0x3fd68f){_0x488759=_0x3fd68f;return getUser(_0x395617,_0x13411['email'],_0x488759);})['then'](function(_0x5cb618){_0x2827a7=_0x5cb618;return getEndUser(_0x395617,_0x400aad,_0x35d3c7[_0x6e96('0x7a')],_0x35d3c7['destcalleridnum'],_0x488759);})['then'](function(_0x56c9f1){_0x24a938=_0x56c9f1;return getTicket(_0x395617,_0x2827a7,_0x24a938,_0x400aad,_0x35d3c7,_0x400aad['Fields'],_0x488759,_0x6e96('0x74'));})['then'](function(_0x4cb658){_0x15a021=_0x4cb658;logger['info'](_0x6e96('0x7b'),_0x15a021['id']);logger[_0x6e96('0x21')](_0x6e96('0x7c'),_0x15a021['id'],_0x13411[_0x6e96('0x57')],_0x395617[_0x6e96('0x42')]);switch(_0x395617[_0x6e96('0x42')]){case _0x6e96('0x7d'):emit(util[_0x6e96('0x4a')](_0x6e96('0x6d'),_0x13411[_0x6e96('0x57')]),_0x6e96('0x6b'),{'recordId':_0x15a021['id']});break;case _0x6e96('0x6c'):emit(util['format'](_0x6e96('0x6d'),_0x13411[_0x6e96('0x57')]),'trigger:browser:url',{'uri':util[_0x6e96('0x4a')](_0x6e96('0x6f'),_0x488759[_0x6e96('0x70')],_0x15a021['id'])});break;default:logger[_0x6e96('0x71')]('[OUTBOUND]',_0x6e96('0x7e'));}})[_0x6e96('0x73')](function(_0x475651){logger[_0x6e96('0x71')](_0x6e96('0x76'),_0x475651);});};exports['unmanaged']=function(_0x4f8476,_0x2f386e,_0x2fa0b6,_0x1d791c,_0x2a3119,_0xf1741f){var _0x353445,_0x29d1b8,_0x319aa5,_0x527709;_0xf1741f['serverUrl']=intUtil[_0x6e96('0x63')](_0xf1741f[_0x6e96('0x62')]);_0xf1741f['remoteUri']=intUtil['stripTrailingSlash'](_0xf1741f[_0x6e96('0x5c')]);if(_0x2a3119&&_0x2a3119['monitor_format']){logger[_0x6e96('0x21')]('['+_0x2f386e['lastevent'][_0x6e96('0x7f')]()+']','Recording\x20is\x20enabled!');_0x2f386e[_0x6e96('0x66')]=util[_0x6e96('0x4a')](_0x6e96('0x78'),_0xf1741f[_0x6e96('0x62')],_0x2f386e[_0x6e96('0x79')],md5(_0x2f386e['uniqueid']));}else{_0x2f386e[_0x6e96('0x66')]='';}return getConnection(_0xf1741f)['then'](function(_0x16ac74){_0x527709=_0x16ac74;if(!_[_0x6e96('0x25')](_0x1d791c)){return getUser(_0xf1741f,_0x1d791c['name'],_0x527709);}else{return getUser(_0xf1741f,null,_0x527709);}})[_0x6e96('0x30')](function(_0x1ff29b){_0x353445=_0x1ff29b;return getEndUser(_0xf1741f,_0x2fa0b6,_0x2f386e[_0x6e96('0x80')],_0x2f386e[_0x6e96('0x81')],_0x527709);})[_0x6e96('0x30')](function(_0x50f38d){_0x29d1b8=_0x50f38d;return getTicket(_0xf1741f,_0x353445,_0x29d1b8,_0x2fa0b6,_0x2f386e,_0x2fa0b6[_0x6e96('0x68')],_0x527709);})[_0x6e96('0x30')](function(_0x3d5974){_0x319aa5=_0x3d5974;logger[_0x6e96('0x21')]('['+_0x2f386e['lastevent'][_0x6e96('0x7f')]()+']\x20Ticket\x20%s\x20created.',_0x319aa5['id']);logger[_0x6e96('0x21')]('['+_0x2f386e[_0x6e96('0x82')][_0x6e96('0x7f')]()+_0x6e96('0x83'),_0xf1741f[_0x6e96('0x42')]);})['catch'](function(_0x5ad60b){logger[_0x6e96('0x71')]('['+_0x2f386e[_0x6e96('0x82')]['toUpperCase']()+']',_0x5ad60b);});};
\ No newline at end of file
index 027c9ec..16a05b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f94=['POST','getString','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','incident','Incident','Incident\x20-\x20','ticketNumber','push','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','user:%s','emit','trigger:browser:url','username','password','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','format','%s/api/now/table/','isNil','email','adminEmail','destcalleridnum','queue','serverUrl','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','servicenow','defaults','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','sys_id','info','toUpperCase','error','message','],\x20getUser\x20input\x20crm','sys_user?sysparm_query=email%3D','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','adminId','],\x20getUser\x20crm','catch',']\x20using\x20admin\x20profile','userId','],\x20createEndUser\x20input\x20crm','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','length','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','type','nameField','customField','toLowerCase','content','string','picklist','idField','toString','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x4f94,0x16f));var _0x44f9=function(_0xacda4c,_0x3db917){_0xacda4c=_0xacda4c-0x0;var _0x5b0c59=_0x4f94[_0xacda4c];return _0x5b0c59;};'use strict';var _=require(_0x44f9('0x0'));var Promise=require(_0x44f9('0x1'));var rp=require(_0x44f9('0x2'));var util=require(_0x44f9('0x3'));var md5=require('md5');var Redis=require(_0x44f9('0x4'));var intUtil=require(_0x44f9('0x5'));var config=require(_0x44f9('0x6'));var logger=require('../../../../config/logger')(_0x44f9('0x7'));config['redis']=_[_0x44f9('0x8')](config[_0x44f9('0x9')],{'host':_0x44f9('0xa'),'port':0x18eb});var io=require(_0x44f9('0xb'))(new Redis(config[_0x44f9('0x9')]));function getAdminUser(_0x3796f0,_0x13df97,_0x5c8b74,_0x290e00,_0x5ed647,_0x5305e4){return new Promise(function(_0x281b32,_0x1c662c){var _0x35f7e7={'method':_0x44f9('0xc'),'uri':_0x290e00+_0x44f9('0xd')+'&'+_0x5ed647+'&'+_0x5305e4,'auth':_0x13df97,'json':!![]};return rp(_0x35f7e7)[_0x44f9('0xe')](function(_0x24df4a){if(_0x24df4a[_0x44f9('0xf')]['length']>0x0){_0x5c8b74['adminId']=_0x24df4a[_0x44f9('0xf')][0x0][_0x44f9('0x10')];}logger[_0x44f9('0x11')]('['+[_0x3796f0[_0x44f9('0x12')]()]+'],\x20getAdminUser\x20crm',_0x5c8b74);_0x281b32(_0x5c8b74);})['catch'](function(_0x226c1f){logger[_0x44f9('0x13')]('['+[_0x3796f0[_0x44f9('0x12')]()]+']',_0x226c1f[_0x44f9('0x14')]);_0x1c662c(_0x226c1f[_0x44f9('0x14')]);});});}function getUser(_0x241ba2,_0x2293d1,_0x1cc3e5,_0x1526a2,_0x2bafb0){return function(_0x182b53){logger[_0x44f9('0x11')]('['+[_0x241ba2[_0x44f9('0x12')]()]+_0x44f9('0x15'),_0x182b53);return new Promise(function(_0x192b44,_0x48658b){if(intUtil['validateEmail'](_0x182b53['userEmail'])){var _0x462b4b={'method':_0x44f9('0xc'),'uri':_0x1cc3e5+_0x44f9('0x16')+_0x182b53[_0x44f9('0x17')]+'&'+_0x1526a2+'&'+_0x2bafb0,'auth':_0x2293d1,'json':!![]};logger[_0x44f9('0x11')]('['+[_0x241ba2[_0x44f9('0x12')]()]+_0x44f9('0x18'),_0x462b4b);return rp(_0x462b4b)[_0x44f9('0xe')](function(_0x4f5d68){logger['info']('['+[_0x241ba2[_0x44f9('0x12')]()]+_0x44f9('0x19'),_0x4f5d68);if(_0x4f5d68[_0x44f9('0xf')]['length']>0x0&&String(_0x4f5d68[_0x44f9('0xf')][0x0][_0x44f9('0x1a')])===_0x44f9('0x1b')){_0x182b53['userId']=_0x4f5d68[_0x44f9('0xf')][0x0][_0x44f9('0x10')];}else{_0x182b53['userId']=_0x182b53[_0x44f9('0x1c')];_0x182b53[_0x44f9('0x17')]=_0x182b53['adminEmail'];}logger[_0x44f9('0x11')]('['+[_0x241ba2[_0x44f9('0x12')]()]+_0x44f9('0x1d'),_0x182b53);_0x192b44(_0x182b53);})[_0x44f9('0x1e')](function(_0x88bcda){logger[_0x44f9('0x13')]('['+[_0x241ba2[_0x44f9('0x12')]()]+']',_0x88bcda[_0x44f9('0x14')]);_0x48658b(_0x88bcda[_0x44f9('0x14')]);});}else{logger[_0x44f9('0x11')]('['+[_0x241ba2[_0x44f9('0x12')]()]+_0x44f9('0x1f'));_0x182b53[_0x44f9('0x20')]=_0x182b53[_0x44f9('0x1c')];_0x182b53[_0x44f9('0x17')]=_0x182b53['adminEmail'];_0x192b44(_0x182b53);}});};}function createEndUser(_0x44b89c,_0x271e8b,_0x3d279e,_0x18035d,_0x513878){logger['info']('['+[_0x44b89c['toUpperCase']()]+_0x44f9('0x21'),_0x3d279e);return new Promise(function(_0x59d1a9,_0x2353fe){var _0x15e745={'method':'POST','uri':_0x18035d+'sys_user?'+_0x513878,'body':{'user_name':_0x3d279e[_0x44f9('0x22')],'roles':_0x44f9('0x23'),'first_name':_0x3d279e[_0x44f9('0x22')],'active':_0x44f9('0x1b'),'date_format':_0x44f9('0x24'),'phone':_0x3d279e['endUserNumber']},'auth':_0x271e8b,'json':!![]};return rp(_0x15e745)['then'](function(_0x55243c){logger[_0x44f9('0x11')]('['+[_0x44b89c[_0x44f9('0x12')]()]+_0x44f9('0x25'),_0x55243c[_0x44f9('0xf')]);_0x3d279e[_0x44f9('0x26')]=_0x55243c[_0x44f9('0xf')]['sys_id'];_0x59d1a9(_0x3d279e);})[_0x44f9('0x1e')](function(_0x4a6640){logger[_0x44f9('0x13')]('['+[_0x44b89c[_0x44f9('0x12')]()]+']',_0x4a6640['message']);_0x2353fe(_0x4a6640[_0x44f9('0x14')]);});});}function getEndUser(_0x4e3889,_0x5d9469,_0x4caf3a,_0x58b4f3,_0x2201c2){return function(_0x51a68b){logger[_0x44f9('0x11')]('['+[_0x4e3889['toUpperCase']()]+_0x44f9('0x27'),_0x51a68b);return new Promise(function(_0x417ca8,_0x34e5db){var _0x5b9877={'method':_0x44f9('0xc'),'uri':_0x4caf3a+_0x44f9('0x28')+_0x51a68b[_0x44f9('0x22')]+'&'+_0x58b4f3+'&'+_0x2201c2,'auth':_0x5d9469,'json':!![]};return rp(_0x5b9877)[_0x44f9('0xe')](function(_0xf943e){if(_0xf943e['result'][_0x44f9('0x29')]>0x0){_0x51a68b[_0x44f9('0x26')]=_0xf943e[_0x44f9('0xf')][0x0][_0x44f9('0x10')];logger[_0x44f9('0x11')]('['+[_0x4e3889[_0x44f9('0x12')]()]+_0x44f9('0x2a'),_0x51a68b);_0x417ca8(_0x51a68b);}else{return createEndUser(_0x4e3889,_0x5d9469,_0x51a68b,_0x4caf3a,_0x58b4f3)[_0x44f9('0xe')](function(_0x5f24c1){logger[_0x44f9('0x11')]('['+[_0x4e3889[_0x44f9('0x12')]()]+_0x44f9('0x2b'),_0x5f24c1);_0x417ca8(_0x5f24c1);});}})['catch'](function(_0x214d1f){logger[_0x44f9('0x13')]('['+[_0x4e3889[_0x44f9('0x12')]()]+']',_0x214d1f[_0x44f9('0x14')]);_0x34e5db(_0x214d1f[_0x44f9('0x14')]);});});};}function getCustomFields(_0x338e08,_0x23196b){var _0x3b699b={};if(_0x338e08['length']>0x0){_[_0x44f9('0x2c')](_0x338e08,function(_0xc8f3ec){if(_[_0x44f9('0x2d')](['string','picklist'],_0xc8f3ec[_0x44f9('0x2e')])&&_0xc8f3ec[_0x44f9('0x2f')]&&!_0xc8f3ec[_0x44f9('0x30')]){_0x3b699b[_0xc8f3ec[_0x44f9('0x2f')][_0x44f9('0x31')]()]=_0xc8f3ec[_0x44f9('0x32')]['toString']();}else if(_[_0x44f9('0x2d')]([_0x44f9('0x33'),_0x44f9('0x34')],_0xc8f3ec[_0x44f9('0x2e')])&&_0xc8f3ec[_0x44f9('0x35')]&&_0xc8f3ec[_0x44f9('0x30')]){_0x3b699b[_0xc8f3ec[_0x44f9('0x35')]['toLowerCase']()]=_0xc8f3ec[_0x44f9('0x32')][_0x44f9('0x36')]();}else if(_0xc8f3ec['type']==='variable'&&_0xc8f3ec[_0x44f9('0x37')]&&_0xc8f3ec[_0x44f9('0x35')]&&_0xc8f3ec[_0x44f9('0x30')]){_0x3b699b[_0xc8f3ec[_0x44f9('0x35')][_0x44f9('0x31')]()]=_0x23196b[_0xc8f3ec[_0x44f9('0x37')]][_0x44f9('0x36')]();}else if(_0xc8f3ec[_0x44f9('0x2e')]===_0x44f9('0x38')&&_0xc8f3ec[_0x44f9('0x39')]&&_0xc8f3ec['Variable'][_0x44f9('0x3a')]&&_0xc8f3ec[_0x44f9('0x35')]&&_0xc8f3ec['customField']){_0x3b699b[_0xc8f3ec[_0x44f9('0x35')][_0x44f9('0x31')]()]=_0x23196b[_0xc8f3ec[_0x44f9('0x39')][_0x44f9('0x3a')][_0x44f9('0x31')]()][_0x44f9('0x36')]();}});}return _0x3b699b;}function getTicket(_0x2db360,_0x35709a,_0x3b8761,_0x33b1df,_0x57e63a,_0x39f7fa){return function(_0x5aef52){logger['info']('['+[_0x2db360[_0x44f9('0x12')]()]+_0x44f9('0x3b'),_0x5aef52);return new Promise(function(_0xcd828c,_0x1f77c5){var _0xcec032=_0x2db360[_0x44f9('0x31')]()===_0x44f9('0x3c')?_0x5aef52[_0x44f9('0x20')]:_0x5aef52[_0x44f9('0x26')];var _0x25601c={'method':_0x44f9('0x3d'),'uri':_0x3b8761+'incident'+'?'+_0x39f7fa,'body':Object['assign']({},{'active':'true','caller_id':_0xcec032,'assigned_to':_0x5aef52[_0x44f9('0x20')],'short_description':intUtil[_0x44f9('0x3e')](_0x33b1df['Subjects'],_0x57e63a,'\x20'),'description':intUtil[_0x44f9('0x3e')](_0x33b1df['Descriptions'],_0x57e63a,'\x0a')},getCustomFields(_0x33b1df[_0x44f9('0x3f')],_0x57e63a)),'auth':_0x35709a,'json':!![]};return rp(_0x25601c)['then'](function(_0x57739b){logger[_0x44f9('0x11')]('['+[_0x2db360['toUpperCase']()]+_0x44f9('0x40'),_0x57739b[_0x44f9('0xf')]);_0x5aef52[_0x44f9('0x41')]=_0x57739b[_0x44f9('0xf')][_0x44f9('0x10')];_0x5aef52['ticketNumber']=_0x57739b[_0x44f9('0xf')][_0x44f9('0x42')];logger['info']('['+[_0x2db360[_0x44f9('0x12')]()]+_0x44f9('0x43'),_0x5aef52);_0xcd828c(_0x5aef52);})[_0x44f9('0x1e')](function(_0x20a2e8){logger[_0x44f9('0x13')]('['+[_0x2db360[_0x44f9('0x12')]()]+']',_0x20a2e8[_0x44f9('0x14')]);_0x1f77c5(_0x20a2e8[_0x44f9('0x14')]);});});};}function createRemoteTag(_0x4aad82,_0x384fec,_0x1a4a6d,_0x52f267){return new Promise(function(_0x4bdfae,_0x327ecb){var _0x5be391={'method':'POST','uri':_0x1a4a6d+_0x44f9('0x44')+'?'+_0x52f267,'body':{'short_description':_0x4aad82,'global':!![],'active':!![],'name':_0x4aad82},'auth':_0x384fec,'json':!![]};return rp(_0x5be391)[_0x44f9('0xe')](function(_0xf80197){var _0x4bd6e3=_0xf80197[_0x44f9('0xf')][_0x44f9('0x10')];_0x4bdfae(_0x4bd6e3);});});}function getRemoteTag(_0x13ca44,_0x57d8ae,_0x361d59,_0x59da01,_0x1b4631){return new Promise(function(_0x3b7b13,_0x3c5538){var _0x52590d={'method':'GET','uri':_0x361d59+'label'+_0x44f9('0x45')+_0x13ca44+'&'+_0x59da01,'auth':_0x57d8ae,'json':!![]};return rp(_0x52590d)[_0x44f9('0xe')](function(_0x270c89){if(_0x270c89[_0x44f9('0xf')][_0x44f9('0x29')]>0x0){var _0xafd335=_0x270c89[_0x44f9('0xf')][0x0][_0x44f9('0x10')];_0x3b7b13(_0xafd335);}else{return createRemoteTag(_0x13ca44,_0x57d8ae,_0x361d59,_0x59da01)[_0x44f9('0xe')](function(_0x431ba4){_0x3b7b13(_0x431ba4);});}});});}function assignTagToIncident(_0x250f07,_0x3e0e5f,_0x1f2960,_0x2f7832,_0x13f34d){return new Promise(function(_0x49a5ab,_0x19c8fb){var _0x317741={'method':_0x44f9('0x3d'),'uri':_0x1f2960+'label_entry'+'?'+_0x13f34d,'body':{'label':_0x250f07,'table':_0x44f9('0x46'),'id_type':_0x44f9('0x47'),'table_key':_0x2f7832[_0x44f9('0x41')],'title':_0x44f9('0x48')+_0x2f7832['ticketNumber'],'id_display':_0x2f7832[_0x44f9('0x49')]},'auth':_0x3e0e5f,'json':!![]};return rp(_0x317741)[_0x44f9('0xe')](function(_0x425adf){_0x49a5ab();})[_0x44f9('0x1e')](function(){_0x49a5ab();});});}function manageTags(_0x3b411b,_0xa94043,_0x14007e,_0x3fcf2f,_0x333fe9,_0x175cf6,_0x48a20e){return new Promise(function(_0x5c7b9d,_0x52693b){var _0x5d396d=[];_0xa94043[_0x44f9('0x2c')](function(_0x261585){_0x5d396d[_0x44f9('0x4a')](getRemoteTag(_0x261585,_0x14007e,_0x3fcf2f,_0x175cf6,_0x48a20e));});return Promise[_0x44f9('0x4b')](_0x5d396d)[_0x44f9('0xe')](function(_0x4b381a){if(_0x4b381a[_0x44f9('0x29')]){logger[_0x44f9('0x11')]('['+[_0x3b411b[_0x44f9('0x12')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x4b381a);var _0x2c57bd=[];_0x4b381a['forEach'](function(_0x3cea39){_0x2c57bd[_0x44f9('0x4a')](assignTagToIncident(_0x3cea39,_0x14007e,_0x3fcf2f,_0x333fe9,_0x175cf6));});return Promise[_0x44f9('0x4b')](_0x2c57bd)[_0x44f9('0xe')](function(){_0x5c7b9d();})[_0x44f9('0x1e')](function(){_0x5c7b9d();});}else{_0x5c7b9d();}});});}function getTags(_0x31715a,_0x31da9d,_0x198cc0,_0x5f3260,_0x504688,_0x526bdb){return function(_0x49a6cf){return new Promise(function(_0x2d19ec,_0x18a854){var _0x3fe457=[];var _0x1da5e4=_0x5f3260['Tags'];if(_0x1da5e4&&_0x1da5e4[_0x44f9('0x29')]>0x0){_0x3fe457=_[_0x44f9('0x4c')](_0x1da5e4,_0x44f9('0x3a'));}if(_0x3fe457[_0x44f9('0x29')]>0x0){return manageTags(_0x31715a,_0x3fe457,_0x31da9d,_0x198cc0,_0x49a6cf,_0x504688,_0x526bdb)[_0x44f9('0xe')](function(){_0x2d19ec(_0x49a6cf);});}else{_0x2d19ec(_0x49a6cf);}});};}function emit(_0x55cc09,_0x3bfdff,_0x13710a){var _0x2962b2=_0x44f9('0x4d')+_0x44f9('0x4e')+_0x44f9('0x4f')+_0x44f9('0x50');var _0x77d9f8={'uri':_0x55cc09+_0x44f9('0x51')+_0x13710a+_0x2962b2};io['to'](util['format'](_0x44f9('0x52'),_0x3bfdff))[_0x44f9('0x53')](_0x44f9('0x54'),_0x77d9f8);}exports['cs']=function(_0x22c770,_0x378f96,_0xbd6554,_0x1bc892,_0x41c4c0,_0x5b7dc7,_0x41215e,_0x47cb8e){var _0x5aac0f={};var _0x205a88={'user':_0x5b7dc7[_0x44f9('0x55')],'pass':_0x5b7dc7[_0x44f9('0x56')]};var _0x52356c=_0x44f9('0x57');var _0x394959=_0x44f9('0x58');_0x5b7dc7[_0x44f9('0x59')]=intUtil[_0x44f9('0x5a')](_0x5b7dc7[_0x44f9('0x59')]);_0x5b7dc7['serverUrl']=intUtil[_0x44f9('0x5a')](_0x5b7dc7['serverUrl']);var _0x5a5446=util[_0x44f9('0x5b')](_0x44f9('0x5c'),_0x5b7dc7[_0x44f9('0x59')]);_0x5aac0f['userEmail']=!_[_0x44f9('0x5d')](_0x1bc892)?_0x1bc892[_0x44f9('0x5e')]:null;_0x5aac0f[_0x44f9('0x5f')]=_0x5b7dc7[_0x44f9('0x5e')];_0x5aac0f[_0x44f9('0x22')]=_0x47cb8e[_0x44f9('0x31')]()===_0x44f9('0x3c')?_0x378f96[_0x44f9('0x60')]:_0x378f96['calleridnum'];_0x5aac0f['callDirection']=_0x47cb8e===_0x44f9('0x61')||_0x47cb8e==='unmanaged'?_0x44f9('0x61'):_0x44f9('0x3c');var _0x658f97=util[_0x44f9('0x5b')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b7dc7[_0x44f9('0x62')],_0x378f96['uniqueid'],md5(_0x378f96[_0x44f9('0x63')]));if(_0x41c4c0&&_0x41c4c0['monitor_format']){logger[_0x44f9('0x11')]('[QUEUE]',_0x44f9('0x64'));_0x378f96[_0x44f9('0x65')]=_0x658f97;}else if(_0x41215e&&_0x41215e[_0x44f9('0x66')]&&_0x41215e[_0x44f9('0x66')]!==_0x44f9('0x67')){logger[_0x44f9('0x11')]('[OUTBOUND]',_0x44f9('0x64'));_0x378f96['recordingURL']=_0x658f97;}else{_0x378f96[_0x44f9('0x65')]='';}return getAdminUser(_0x47cb8e,_0x205a88,_0x5aac0f,_0x5a5446,_0x394959,_0x52356c)[_0x44f9('0xe')](getUser(_0x47cb8e,_0x205a88,_0x5a5446,_0x394959,_0x52356c))['then'](getEndUser(_0x47cb8e,_0x205a88,_0x5a5446,_0x394959,_0x52356c))['then'](getTicket(_0x47cb8e,_0x205a88,_0x5a5446,_0xbd6554,_0x378f96,_0x394959))[_0x44f9('0xe')](function(_0x4be869){logger['info'](util['format'](_0x44f9('0x68'),_0x4be869[_0x44f9('0x41')]));logger[_0x44f9('0x11')](util[_0x44f9('0x5b')]('call\x20direction:\x20%s',_0x47cb8e));if(_0x47cb8e!=='unmanaged'){logger[_0x44f9('0x11')]('['+[_0x47cb8e[_0x44f9('0x12')]()]+']',_0x44f9('0x69'));emit(_0x5b7dc7['remoteUri'],_0x1bc892[_0x44f9('0x3a')],_0x4be869[_0x44f9('0x41')]);}})['catch'](function(_0x3d2404){logger[_0x44f9('0x13')]('['+[_0x47cb8e[_0x44f9('0x12')]()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0x44f9('0x6a')](_0x3d2404,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x8ece=['],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','userId','adminEmail',']\x20using\x20admin\x20profile','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','catch','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','forEach','includes','type','customField','nameField','toLowerCase','content','toString','string','idField','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','getString','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','label','label_entry','Incident\x20-\x20','push','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','sysparm_limit=1','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','%s/api/now/table/','email','calleridnum','callDirection','queue','unmanaged','%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','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D'];(function(_0x414a4c,_0x484e6a){var _0x459d65=function(_0x278413){while(--_0x278413){_0x414a4c['push'](_0x414a4c['shift']());}};_0x459d65(++_0x484e6a);}(_0x8ece,0x195));var _0xe8ec=function(_0x4afcf1,_0x1f34e0){_0x4afcf1=_0x4afcf1-0x0;var _0x377f36=_0x8ece[_0x4afcf1];return _0x377f36;};'use strict';var _=require(_0xe8ec('0x0'));var Promise=require(_0xe8ec('0x1'));var rp=require(_0xe8ec('0x2'));var util=require(_0xe8ec('0x3'));var md5=require('md5');var Redis=require('ioredis');var intUtil=require(_0xe8ec('0x4'));var config=require(_0xe8ec('0x5'));var logger=require(_0xe8ec('0x6'))(_0xe8ec('0x7'));config[_0xe8ec('0x8')]=_['defaults'](config[_0xe8ec('0x8')],{'host':_0xe8ec('0x9'),'port':0x18eb});var io=require(_0xe8ec('0xa'))(new Redis(config[_0xe8ec('0x8')]));function getAdminUser(_0x3682cb,_0x122f36,_0x406f7e,_0x5525f8,_0x44d128,_0x5e1fe9){return new Promise(function(_0x1345e0,_0x5b1569){var _0x1b0a84={'method':_0xe8ec('0xb'),'uri':_0x5525f8+_0xe8ec('0xc')+'&'+_0x44d128+'&'+_0x5e1fe9,'auth':_0x122f36,'json':!![]};return rp(_0x1b0a84)[_0xe8ec('0xd')](function(_0x235e18){if(_0x235e18[_0xe8ec('0xe')][_0xe8ec('0xf')]>0x0){_0x406f7e[_0xe8ec('0x10')]=_0x235e18[_0xe8ec('0xe')][0x0][_0xe8ec('0x11')];}logger[_0xe8ec('0x12')]('['+[_0x3682cb[_0xe8ec('0x13')]()]+_0xe8ec('0x14'),_0x406f7e);_0x1345e0(_0x406f7e);})['catch'](function(_0x15de29){logger[_0xe8ec('0x15')]('['+[_0x3682cb[_0xe8ec('0x13')]()]+']',_0x15de29[_0xe8ec('0x16')]);_0x5b1569(_0x15de29[_0xe8ec('0x16')]);});});}function getUser(_0xdb2565,_0x1e76ac,_0x218a4b,_0x531f69,_0x2e7c82){return function(_0xf34100){logger[_0xe8ec('0x12')]('['+[_0xdb2565['toUpperCase']()]+_0xe8ec('0x17'),_0xf34100);return new Promise(function(_0x20e847,_0x2a3b73){if(intUtil[_0xe8ec('0x18')](_0xf34100[_0xe8ec('0x19')])){var _0x39e557={'method':_0xe8ec('0xb'),'uri':_0x218a4b+_0xe8ec('0x1a')+_0xf34100['userEmail']+'&'+_0x531f69+'&'+_0x2e7c82,'auth':_0x1e76ac,'json':!![]};logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+_0xe8ec('0x1b'),_0x39e557);return rp(_0x39e557)[_0xe8ec('0xd')](function(_0x30a35b){logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+_0xe8ec('0x1c'),_0x30a35b);if(_0x30a35b[_0xe8ec('0xe')]['length']>0x0&&String(_0x30a35b[_0xe8ec('0xe')][0x0][_0xe8ec('0x1d')])===_0xe8ec('0x1e')){_0xf34100[_0xe8ec('0x1f')]=_0x30a35b[_0xe8ec('0xe')][0x0]['sys_id'];}else{_0xf34100[_0xe8ec('0x1f')]=_0xf34100[_0xe8ec('0x10')];_0xf34100[_0xe8ec('0x19')]=_0xf34100[_0xe8ec('0x20')];}logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+'],\x20getUser\x20crm',_0xf34100);_0x20e847(_0xf34100);})['catch'](function(_0x457607){logger[_0xe8ec('0x15')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+']',_0x457607[_0xe8ec('0x16')]);_0x2a3b73(_0x457607[_0xe8ec('0x16')]);});}else{logger[_0xe8ec('0x12')]('['+[_0xdb2565[_0xe8ec('0x13')]()]+_0xe8ec('0x21'));_0xf34100[_0xe8ec('0x1f')]=_0xf34100[_0xe8ec('0x10')];_0xf34100[_0xe8ec('0x19')]=_0xf34100[_0xe8ec('0x20')];_0x20e847(_0xf34100);}});};}function createEndUser(_0x1b7bdd,_0x310fec,_0x1140d6,_0x5d6888,_0x21badd){logger[_0xe8ec('0x12')]('['+[_0x1b7bdd[_0xe8ec('0x13')]()]+'],\x20createEndUser\x20input\x20crm',_0x1140d6);return new Promise(function(_0x28cd63,_0x4d4137){var _0x45bb71={'method':_0xe8ec('0x22'),'uri':_0x5d6888+_0xe8ec('0x23')+_0x21badd,'body':{'user_name':_0x1140d6[_0xe8ec('0x24')],'roles':_0xe8ec('0x25'),'first_name':_0x1140d6['endUserNumber'],'active':_0xe8ec('0x1e'),'date_format':_0xe8ec('0x26'),'phone':_0x1140d6[_0xe8ec('0x24')]},'auth':_0x310fec,'json':!![]};return rp(_0x45bb71)['then'](function(_0x2bc9e4){logger['info']('['+[_0x1b7bdd[_0xe8ec('0x13')]()]+_0xe8ec('0x27'),_0x2bc9e4[_0xe8ec('0xe')]);_0x1140d6[_0xe8ec('0x28')]=_0x2bc9e4[_0xe8ec('0xe')][_0xe8ec('0x11')];_0x28cd63(_0x1140d6);})[_0xe8ec('0x29')](function(_0x2277cc){logger[_0xe8ec('0x15')]('['+[_0x1b7bdd['toUpperCase']()]+']',_0x2277cc[_0xe8ec('0x16')]);_0x4d4137(_0x2277cc[_0xe8ec('0x16')]);});});}function getEndUser(_0x18cd13,_0x4cbd75,_0x10b287,_0x13c1bf,_0x47d726){return function(_0x308fa3){logger[_0xe8ec('0x12')]('['+[_0x18cd13[_0xe8ec('0x13')]()]+_0xe8ec('0x2a'),_0x308fa3);return new Promise(function(_0x4d9908,_0x189109){var _0x3c3a12={'method':_0xe8ec('0xb'),'uri':_0x10b287+_0xe8ec('0x2b')+_0x308fa3[_0xe8ec('0x24')]+'&'+_0x13c1bf+'&'+_0x47d726,'auth':_0x4cbd75,'json':!![]};return rp(_0x3c3a12)[_0xe8ec('0xd')](function(_0x165324){if(_0x165324[_0xe8ec('0xe')]['length']>0x0){_0x308fa3['endUserId']=_0x165324[_0xe8ec('0xe')][0x0][_0xe8ec('0x11')];logger[_0xe8ec('0x12')]('['+[_0x18cd13[_0xe8ec('0x13')]()]+_0xe8ec('0x2c'),_0x308fa3);_0x4d9908(_0x308fa3);}else{return createEndUser(_0x18cd13,_0x4cbd75,_0x308fa3,_0x10b287,_0x13c1bf)[_0xe8ec('0xd')](function(_0x1456ec){logger['info']('['+[_0x18cd13[_0xe8ec('0x13')]()]+'],\x20createEndUser\x20crm',_0x1456ec);_0x4d9908(_0x1456ec);});}})[_0xe8ec('0x29')](function(_0x17b7b0){logger['error']('['+[_0x18cd13['toUpperCase']()]+']',_0x17b7b0[_0xe8ec('0x16')]);_0x189109(_0x17b7b0[_0xe8ec('0x16')]);});});};}function getCustomFields(_0x34c572,_0x5c99cd){var _0x1223b8={};if(_0x34c572[_0xe8ec('0xf')]>0x0){_[_0xe8ec('0x2d')](_0x34c572,function(_0x198315){if(_[_0xe8ec('0x2e')](['string','picklist'],_0x198315[_0xe8ec('0x2f')])&&_0x198315['nameField']&&!_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315[_0xe8ec('0x31')][_0xe8ec('0x32')]()]=_0x198315[_0xe8ec('0x33')][_0xe8ec('0x34')]();}else if(_[_0xe8ec('0x2e')]([_0xe8ec('0x35'),'picklist'],_0x198315[_0xe8ec('0x2f')])&&_0x198315[_0xe8ec('0x36')]&&_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315[_0xe8ec('0x36')][_0xe8ec('0x32')]()]=_0x198315[_0xe8ec('0x33')][_0xe8ec('0x34')]();}else if(_0x198315[_0xe8ec('0x2f')]==='variable'&&_0x198315[_0xe8ec('0x37')]&&_0x198315[_0xe8ec('0x36')]&&_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315['idField'][_0xe8ec('0x32')]()]=_0x5c99cd[_0x198315['variableName']][_0xe8ec('0x34')]();}else if(_0x198315[_0xe8ec('0x2f')]===_0xe8ec('0x38')&&_0x198315['Variable']&&_0x198315[_0xe8ec('0x39')][_0xe8ec('0x3a')]&&_0x198315['idField']&&_0x198315[_0xe8ec('0x30')]){_0x1223b8[_0x198315['idField'][_0xe8ec('0x32')]()]=_0x5c99cd[_0x198315['Variable'][_0xe8ec('0x3a')][_0xe8ec('0x32')]()][_0xe8ec('0x34')]();}});}return _0x1223b8;}function getTicket(_0x2448b7,_0x5eb0bd,_0x49836b,_0x4a82fa,_0x1cb28d,_0xce235){return function(_0x424a23){logger['info']('['+[_0x2448b7[_0xe8ec('0x13')]()]+_0xe8ec('0x3b'),_0x424a23);return new Promise(function(_0x96ca5f,_0x1f96d9){var _0x18f620=_0x2448b7['toLowerCase']()===_0xe8ec('0x3c')?_0x424a23[_0xe8ec('0x1f')]:_0x424a23[_0xe8ec('0x28')];var _0x3de7aa={'method':_0xe8ec('0x22'),'uri':_0x49836b+_0xe8ec('0x3d')+'?'+_0xce235,'body':Object[_0xe8ec('0x3e')]({},{'active':'true','caller_id':_0x18f620,'assigned_to':_0x424a23[_0xe8ec('0x1f')],'short_description':intUtil[_0xe8ec('0x3f')](_0x4a82fa['Subjects'],_0x1cb28d,'\x20'),'description':intUtil[_0xe8ec('0x3f')](_0x4a82fa[_0xe8ec('0x40')],_0x1cb28d,'\x0a')},getCustomFields(_0x4a82fa[_0xe8ec('0x41')],_0x1cb28d)),'auth':_0x5eb0bd,'json':!![]};return rp(_0x3de7aa)[_0xe8ec('0xd')](function(_0x55b347){logger[_0xe8ec('0x12')]('['+[_0x2448b7[_0xe8ec('0x13')]()]+_0xe8ec('0x42'),_0x55b347[_0xe8ec('0xe')]);_0x424a23[_0xe8ec('0x43')]=_0x55b347[_0xe8ec('0xe')]['sys_id'];_0x424a23[_0xe8ec('0x44')]=_0x55b347[_0xe8ec('0xe')]['number'];logger['info']('['+[_0x2448b7[_0xe8ec('0x13')]()]+']\x20getTicket\x20crm',_0x424a23);_0x96ca5f(_0x424a23);})['catch'](function(_0x3bd3fb){logger[_0xe8ec('0x15')]('['+[_0x2448b7[_0xe8ec('0x13')]()]+']',_0x3bd3fb[_0xe8ec('0x16')]);_0x1f96d9(_0x3bd3fb[_0xe8ec('0x16')]);});});};}function createRemoteTag(_0x342ff5,_0x547a5c,_0x5c1832,_0x243bdc){return new Promise(function(_0xde7275,_0x596e32){var _0x556425={'method':_0xe8ec('0x22'),'uri':_0x5c1832+_0xe8ec('0x45')+'?'+_0x243bdc,'body':{'short_description':_0x342ff5,'global':!![],'active':!![],'name':_0x342ff5},'auth':_0x547a5c,'json':!![]};return rp(_0x556425)[_0xe8ec('0xd')](function(_0x51fa51){var _0x5550f0=_0x51fa51[_0xe8ec('0xe')][_0xe8ec('0x11')];_0xde7275(_0x5550f0);});});}function getRemoteTag(_0x3af346,_0x20a431,_0x5292e6,_0x5b693d,_0x17d1e4){return new Promise(function(_0x496f3c,_0xa58c79){var _0x221a79={'method':'GET','uri':_0x5292e6+_0xe8ec('0x45')+'?sysparm_query=name%3D'+_0x3af346+'&'+_0x5b693d,'auth':_0x20a431,'json':!![]};return rp(_0x221a79)[_0xe8ec('0xd')](function(_0x4e69e5){if(_0x4e69e5[_0xe8ec('0xe')][_0xe8ec('0xf')]>0x0){var _0x3ef497=_0x4e69e5[_0xe8ec('0xe')][0x0][_0xe8ec('0x11')];_0x496f3c(_0x3ef497);}else{return createRemoteTag(_0x3af346,_0x20a431,_0x5292e6,_0x5b693d)[_0xe8ec('0xd')](function(_0x56be8d){_0x496f3c(_0x56be8d);});}});});}function assignTagToIncident(_0x249bcc,_0x4acba2,_0xc7d31d,_0x1184aa,_0x1b40cc){return new Promise(function(_0x5494fb,_0x1e3acb){var _0x5348f1={'method':_0xe8ec('0x22'),'uri':_0xc7d31d+_0xe8ec('0x46')+'?'+_0x1b40cc,'body':{'label':_0x249bcc,'table':'incident','id_type':'Incident','table_key':_0x1184aa[_0xe8ec('0x43')],'title':_0xe8ec('0x47')+_0x1184aa['ticketNumber'],'id_display':_0x1184aa[_0xe8ec('0x44')]},'auth':_0x4acba2,'json':!![]};return rp(_0x5348f1)[_0xe8ec('0xd')](function(_0x4ee845){_0x5494fb();})['catch'](function(){_0x5494fb();});});}function manageTags(_0x26516e,_0x97e904,_0x49aba3,_0x4fef2b,_0x43d74c,_0x236880,_0x17052e){return new Promise(function(_0x2a3286,_0x19d194){var _0x1a14ca=[];_0x97e904[_0xe8ec('0x2d')](function(_0x319813){_0x1a14ca[_0xe8ec('0x48')](getRemoteTag(_0x319813,_0x49aba3,_0x4fef2b,_0x236880,_0x17052e));});return Promise[_0xe8ec('0x49')](_0x1a14ca)[_0xe8ec('0xd')](function(_0x1c1470){if(_0x1c1470[_0xe8ec('0xf')]){logger[_0xe8ec('0x12')]('['+[_0x26516e[_0xe8ec('0x13')]()]+_0xe8ec('0x4a'),_0x1c1470);var _0x5d5cca=[];_0x1c1470[_0xe8ec('0x2d')](function(_0x27850d){_0x5d5cca[_0xe8ec('0x48')](assignTagToIncident(_0x27850d,_0x49aba3,_0x4fef2b,_0x43d74c,_0x236880));});return Promise[_0xe8ec('0x49')](_0x5d5cca)['then'](function(){_0x2a3286();})['catch'](function(){_0x2a3286();});}else{_0x2a3286();}});});}function getTags(_0xecf875,_0x50c78d,_0x1ae75a,_0x57824f,_0x40eb3b,_0x1b93aa){return function(_0x11138b){return new Promise(function(_0xb5e982,_0x1e058a){var _0xaecdcd=[];var _0x2174f0=_0x57824f[_0xe8ec('0x4b')];if(_0x2174f0&&_0x2174f0[_0xe8ec('0xf')]>0x0){_0xaecdcd=_[_0xe8ec('0x4c')](_0x2174f0,'name');}if(_0xaecdcd[_0xe8ec('0xf')]>0x0){return manageTags(_0xecf875,_0xaecdcd,_0x50c78d,_0x1ae75a,_0x11138b,_0x40eb3b,_0x1b93aa)[_0xe8ec('0xd')](function(){_0xb5e982(_0x11138b);});}else{_0xb5e982(_0x11138b);}});};}function emit(_0x2aada0,_0x149b5f,_0x55e370){var _0x1e69eb='%26sysparm_record_target%3Dincident'+_0xe8ec('0x4d')+'%26sysparm_record_list%3Dactive%253Dtrue'+_0xe8ec('0x4e');var _0x4b06f0={'uri':_0x2aada0+_0xe8ec('0x4f')+_0x55e370+_0x1e69eb};io['to'](util[_0xe8ec('0x50')](_0xe8ec('0x51'),_0x149b5f))[_0xe8ec('0x52')]('trigger:browser:url',_0x4b06f0);}exports['cs']=function(_0x28cf8b,_0x57255c,_0x3af37c,_0x425f55,_0x5a7660,_0x3a858c,_0x2a2d67,_0x49ab18){var _0x309c75={};var _0x32a598={'user':_0x3a858c['username'],'pass':_0x3a858c['password']};var _0x105ad6=_0xe8ec('0x53');var _0x34829e=_0xe8ec('0x54');_0x3a858c[_0xe8ec('0x55')]=intUtil['stripTrailingSlash'](_0x3a858c['remoteUri']);_0x3a858c[_0xe8ec('0x56')]=intUtil[_0xe8ec('0x57')](_0x3a858c[_0xe8ec('0x56')]);var _0x5033a8=util['format'](_0xe8ec('0x58'),_0x3a858c['remoteUri']);_0x309c75[_0xe8ec('0x19')]=!_['isNil'](_0x425f55)?_0x425f55[_0xe8ec('0x59')]:null;_0x309c75[_0xe8ec('0x20')]=_0x3a858c[_0xe8ec('0x59')];_0x309c75['endUserNumber']=_0x49ab18[_0xe8ec('0x32')]()===_0xe8ec('0x3c')?_0x57255c['destcalleridnum']:_0x57255c[_0xe8ec('0x5a')];_0x309c75[_0xe8ec('0x5b')]=_0x49ab18===_0xe8ec('0x5c')||_0x49ab18===_0xe8ec('0x5d')?'queue':_0xe8ec('0x3c');var _0x5d9c9b=util[_0xe8ec('0x50')](_0xe8ec('0x5e'),_0x3a858c['serverUrl'],_0x57255c[_0xe8ec('0x5f')],md5(_0x57255c[_0xe8ec('0x5f')]));if(_0x5a7660&&_0x5a7660[_0xe8ec('0x60')]){logger['info'](_0xe8ec('0x61'),_0xe8ec('0x62'));_0x57255c[_0xe8ec('0x63')]=_0x5d9c9b;}else if(_0x2a2d67&&_0x2a2d67[_0xe8ec('0x64')]&&_0x2a2d67[_0xe8ec('0x64')]!==_0xe8ec('0x65')){logger[_0xe8ec('0x12')](_0xe8ec('0x66'),'Recording\x20is\x20enabled!');_0x57255c['recordingURL']=_0x5d9c9b;}else{_0x57255c[_0xe8ec('0x63')]='';}return getAdminUser(_0x49ab18,_0x32a598,_0x309c75,_0x5033a8,_0x34829e,_0x105ad6)[_0xe8ec('0xd')](getUser(_0x49ab18,_0x32a598,_0x5033a8,_0x34829e,_0x105ad6))[_0xe8ec('0xd')](getEndUser(_0x49ab18,_0x32a598,_0x5033a8,_0x34829e,_0x105ad6))[_0xe8ec('0xd')](getTicket(_0x49ab18,_0x32a598,_0x5033a8,_0x3af37c,_0x57255c,_0x34829e))[_0xe8ec('0xd')](function(_0x4e40c4){logger['info'](util['format'](_0xe8ec('0x67'),_0x4e40c4[_0xe8ec('0x43')]));logger[_0xe8ec('0x12')](util[_0xe8ec('0x50')](_0xe8ec('0x68'),_0x49ab18));if(_0x49ab18!=='unmanaged'){logger['info']('['+[_0x49ab18[_0xe8ec('0x13')]()]+']',_0xe8ec('0x69'));emit(_0x3a858c[_0xe8ec('0x55')],_0x425f55[_0xe8ec('0x3a')],_0x4e40c4['ticketId']);}})[_0xe8ec('0x29')](function(_0x43aa41){logger[_0xe8ec('0x15')]('['+[_0x49ab18['toUpperCase']()]+_0xe8ec('0x6a'),util[_0xe8ec('0x6b')](_0x43aa41,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index fcac726..fcfe8e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd99=['recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','contacts','user:%s','trigger:browser:url','uri','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','lodash','request-promise','bluebird','util','../../../../config/logger','sugarcrm','defaults','redis','localhost','socket.io-emitter','POST','Creating\x20new\x20ticket...','name','getString','created_by','description','Descriptions','date_start','toISOString','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','push','idField','variableName','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','isNil','info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','find','entry_list','name_value_list','value','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','then','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','type','customField','nameField','toLowerCase','string','custom_fields','content','variable','customVariable','Variable','login','username','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','queue','remoteUri','stripTrailingSlash','serverUrl','%s/service/v4_1/rest.php','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','outbound'];(function(_0x33b93f,_0x59c41d){var _0xf8d4bb=function(_0x53b937){while(--_0x53b937){_0x33b93f['push'](_0x33b93f['shift']());}};_0xf8d4bb(++_0x59c41d);}(_0xdd99,0x82));var _0x9dd9=function(_0x4b80e2,_0x366890){_0x4b80e2=_0x4b80e2-0x0;var _0x4a3a9c=_0xdd99[_0x4b80e2];return _0x4a3a9c;};'use strict';var _=require(_0x9dd9('0x0'));var rp=require(_0x9dd9('0x1'));var BPromise=require(_0x9dd9('0x2'));var md5=require('md5');var util=require(_0x9dd9('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0x9dd9('0x4'))(_0x9dd9('0x5'));config['redis']=_[_0x9dd9('0x6')](config[_0x9dd9('0x7')],{'host':_0x9dd9('0x8'),'port':0x18eb});var io=require(_0x9dd9('0x9'))(new Redis(config['redis']));var def={'method':_0x9dd9('0xa'),'json':!![]};function emit(_0x5e7e97,_0xc77acd,_0x43ab0b){io['to'](_0x5e7e97)['emit'](_0xc77acd,_0x43ab0b);}function getTicket(_0x202f25,_0x4d1586,_0x406cb1,_0x301e60,_0x34a937,_0x176b73,_0x32e994,_0x797321){logger['info'](_0x9dd9('0xb'));var _0x4249a2=new Date();var _0x6661f5=[{'name':_0x9dd9('0xc'),'value':intUtil[_0x9dd9('0xd')](_0x301e60['Subjects'],_0x34a937,'\x20')},{'name':'assigned_user_id','value':_0x4d1586['id']},{'name':_0x9dd9('0xe'),'value':_0x4d1586['id']},{'name':_0x9dd9('0xf'),'value':intUtil[_0x9dd9('0xd')](_0x301e60[_0x9dd9('0x10')],_0x34a937,'\x0a')},{'name':_0x9dd9('0x11'),'value':_0x4249a2[_0x9dd9('0x12')]()['slice'](0x0,0x13)['replace']('T','\x20')},{'name':'duration_hours','value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0x9dd9('0x13'),'value':_0x406cb1['id']},{'name':_0x9dd9('0x14'),'value':_0x9dd9('0x15')},{'name':_0x9dd9('0x16'),'value':_0x406cb1[_0x9dd9('0xc')]},{'name':_0x9dd9('0x17'),'value':_0x797321}];if(_0x176b73[_0x9dd9('0x18')]){_[_0x9dd9('0x19')](_0x176b73,function(_0x5d0491){if(_0x34a937[_0x5d0491['variableName']]){_0x6661f5[_0x9dd9('0x1a')]({'name':_0x5d0491[_0x9dd9('0x1b')],'value':_0x34a937[_0x5d0491[_0x9dd9('0x1c')]]});}});}return request({'form':{'method':_0x9dd9('0x1d'),'input_type':_0x9dd9('0x1e'),'response_type':_0x9dd9('0x1e'),'rest_data':JSON[_0x9dd9('0x1f')]({'session':_0x32e994['id'],'module_name':_0x9dd9('0x20'),'name_value_list':_0x6661f5})}});}function getAuth(_0x2d233d){return util[_0x9dd9('0x21')](_0x9dd9('0x22'),new Buffer(_0x2d233d[_0x9dd9('0x23')]+':X')[_0x9dd9('0x24')]('base64'));}function getServerInfo(_0x53916c){return request({'form':{'method':'get_server_info','input_type':_0x9dd9('0x1e'),'response_type':_0x9dd9('0x1e'),'rest_data':JSON[_0x9dd9('0x1f')]({'session':_0x53916c['id']})}});}function getUser(_0x3942bb,_0x365b5e,_0x264c20){if(!_[_0x9dd9('0x25')](_0x365b5e)){logger[_0x9dd9('0x26')](_0x9dd9('0x27'),_0x365b5e);return request({'form':{'method':_0x9dd9('0x28'),'input_type':_0x9dd9('0x1e'),'response_type':_0x9dd9('0x1e'),'rest_data':JSON['stringify']({'session':_0x264c20['id'],'module_name':_0x9dd9('0x29'),'query':util[_0x9dd9('0x21')](_0x9dd9('0x2a'),_0x365b5e),'order_by':'','offset':'0','select_fields':['id',_0x9dd9('0xc'),_0x9dd9('0x2b')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x674f56){if(_0x674f56['entry_list'][_0x9dd9('0x18')]){var _0x572db1=_[_0x9dd9('0x2c')](_0x674f56[_0x9dd9('0x2d')],function(_0x2c11ac){return _0x2c11ac[_0x9dd9('0x2e')][_0x9dd9('0x2b')][_0x9dd9('0x2f')]===_0x365b5e;});if(_0x572db1){logger[_0x9dd9('0x26')](_0x9dd9('0x30'));return BPromise['resolve']({'id':_0x572db1['name_value_list']['id'][_0x9dd9('0x2f')],'name':_0x572db1['name_value_list'][_0x9dd9('0xc')][_0x9dd9('0x2f')]});}}logger[_0x9dd9('0x26')](_0x9dd9('0x31'));return BPromise[_0x9dd9('0x32')]({'id':_0x264c20[_0x9dd9('0x2e')]['user_id'][_0x9dd9('0x2f')],'name':_0x264c20['name_value_list'][_0x9dd9('0x2b')][_0x9dd9('0x2f')]});});}else{logger[_0x9dd9('0x26')](_0x9dd9('0x33'));return BPromise[_0x9dd9('0x32')]({'id':_0x264c20[_0x9dd9('0x2e')][_0x9dd9('0x34')][_0x9dd9('0x2f')],'name':_0x264c20[_0x9dd9('0x2e')]['user_name'][_0x9dd9('0x2f')]});}}function getEndUser(_0x3e77a2,_0x1f7605,_0xaaf173,_0x418950){logger[_0x9dd9('0x26')]('Searching\x20enduser\x20with\x20phone',_0xaaf173);return request({'form':{'method':_0x9dd9('0x28'),'input_type':_0x9dd9('0x1e'),'response_type':_0x9dd9('0x1e'),'rest_data':JSON['stringify']({'session':_0x418950['id'],'module_name':'Contacts','query':util[_0x9dd9('0x21')](_0x9dd9('0x35'),_0xaaf173),'order_by':'','offset':'0','select_fields':['id',_0x9dd9('0xc'),_0x9dd9('0x36')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9dd9('0x37')](function(_0x358ddb){if(_0x358ddb[_0x9dd9('0x2d')]['length']){var _0x375a80=_['find'](_0x358ddb[_0x9dd9('0x2d')],function(_0x2b44a4){return _0x2b44a4[_0x9dd9('0x2e')][_0x9dd9('0x36')]['value']===_0xaaf173;});if(_0x375a80){logger[_0x9dd9('0x26')]('Enduser\x20found!');return BPromise[_0x9dd9('0x32')]({'id':_0x375a80['name_value_list']['id'][_0x9dd9('0x2f')],'name':_0x375a80['name_value_list'][_0x9dd9('0xc')][_0x9dd9('0x2f')],'phone':_0x375a80[_0x9dd9('0x2e')]['phone_home'][_0x9dd9('0x2f')]});}}else{logger[_0x9dd9('0x26')](_0x9dd9('0x38'));return request({'form':{'method':'set_entry','input_type':_0x9dd9('0x1e'),'response_type':_0x9dd9('0x1e'),'rest_data':JSON[_0x9dd9('0x1f')]({'session':_0x418950['id'],'module_name':_0x9dd9('0x15'),'name_value_list':[{'name':_0x9dd9('0x39'),'value':_0x1f7605!=='<unknown>'?_0x1f7605:util[_0x9dd9('0x21')](_0x9dd9('0x3a'),_0xaaf173)},{'name':'phone_home','value':_0xaaf173}]})}})[_0x9dd9('0x37')](function(_0x19a44e){logger[_0x9dd9('0x26')](_0x9dd9('0x3b'));return BPromise[_0x9dd9('0x32')]({'id':_0x19a44e['id'],'name':_0x19a44e['entry_list'][_0x9dd9('0x39')][_0x9dd9('0x2f')],'phone':_0x19a44e[_0x9dd9('0x2d')][_0x9dd9('0x36')][_0x9dd9('0x2f')]});});}});}function request(_0x245945){logger[_0x9dd9('0x3c')](_0x9dd9('0x3d'),JSON[_0x9dd9('0x1f')](_0x245945));return rp(_[_0x9dd9('0x3e')](def,_0x245945));}function getTags(_0x140327,_0x450d2){var _0x21f6a4=[];if(_0x140327&&_0x140327[_0x9dd9('0x18')]>0x0){_0x21f6a4=_[_0x9dd9('0x3f')](_0x140327,_0x450d2);}return _0x21f6a4;}function getCustomFields(_0x1cc9c0,_0xe618e1){var _0x3fd724=[];var _0x4abc4c={'custom_fields':[]};if(_0x1cc9c0['length']>0x0){_['forEach'](_0x1cc9c0,function(_0x27a67c){if(_0x27a67c[_0x9dd9('0x40')]==='string'&&_0x27a67c['nameField']&&!_0x27a67c[_0x9dd9('0x41')]){_0x4abc4c[_0x27a67c[_0x9dd9('0x42')][_0x9dd9('0x43')]()]=_0x27a67c['content'][_0x9dd9('0x24')]();}else if(_0x27a67c[_0x9dd9('0x40')]===_0x9dd9('0x44')&&_0x27a67c[_0x9dd9('0x1b')]&&_0x27a67c['customField']){_0x4abc4c[_0x9dd9('0x45')][_0x9dd9('0x1a')]({'id':_0x27a67c[_0x9dd9('0x1b')],'value':_0x27a67c[_0x9dd9('0x46')][_0x9dd9('0x24')]()});}else if(_0x27a67c[_0x9dd9('0x40')]===_0x9dd9('0x47')&&_0x27a67c[_0x9dd9('0x1c')]&&_0x27a67c['idField']&&_0x27a67c[_0x9dd9('0x41')]){_0xe618e1[_0x27a67c['variableName']]&&_0x4abc4c[_0x9dd9('0x45')][_0x9dd9('0x1a')]({'id':_0x27a67c[_0x9dd9('0x1b')],'value':_0xe618e1[_0x27a67c[_0x9dd9('0x1c')]][_0x9dd9('0x24')]()});}else if(_0x27a67c['type']===_0x9dd9('0x48')&&_0x27a67c[_0x9dd9('0x49')]&&_0x27a67c[_0x9dd9('0x49')]['name']&&_0x27a67c['idField']&&_0x27a67c[_0x9dd9('0x41')]){_0xe618e1[_0x27a67c[_0x9dd9('0x49')]['name'][_0x9dd9('0x43')]()]&&_0x4abc4c['custom_fields'][_0x9dd9('0x1a')]({'id':_0x27a67c[_0x9dd9('0x1b')],'value':_0xe618e1[_0x27a67c['Variable'][_0x9dd9('0xc')][_0x9dd9('0x43')]()][_0x9dd9('0x24')]()});}});}return _0x4abc4c;}function getConnection(_0x361e8f){return request({'method':'POST','form':{'method':_0x9dd9('0x4a'),'input_type':_0x9dd9('0x1e'),'response_type':_0x9dd9('0x1e'),'rest_data':JSON[_0x9dd9('0x1f')]({'user_auth':{'user_name':_0x361e8f[_0x9dd9('0x4b')],'password':_0x361e8f['password'],'encryption':'PLAIN'},'application':_0x9dd9('0x4c')})}})[_0x9dd9('0x37')](function(_0x402de2){var _0x4a0a2e=_0x402de2;if(_0x4a0a2e['id']){def[_0x9dd9('0x4d')]=_0x4a0a2e['id'];return BPromise[_0x9dd9('0x32')](_0x4a0a2e);}else{throw new Error(util['format'](_0x9dd9('0x4e'),_0x361e8f['id']));}});}function setRelationship(_0x26372f,_0x169a8a,_0x7dcc1a,_0x47e43c){return request({'form':{'method':'set_relationship','input_type':_0x9dd9('0x1e'),'response_type':'JSON','rest_data':JSON[_0x9dd9('0x1f')]({'session':_0x26372f['id'],'module_name':_0x9dd9('0x20'),'module_id':_0x7dcc1a['id'],'link_field_name':_0x47e43c,'related_ids':[_0x169a8a['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x9dd9('0x4f')]=function(_0x3671a3,_0x222823,_0xb67de5,_0x2aae71,_0x143606,_0xdee38){var _0x4a2f3a,_0xf9aa12,_0x5880f2,_0x43d110;_0xdee38[_0x9dd9('0x50')]=intUtil[_0x9dd9('0x51')](_0xdee38[_0x9dd9('0x50')]);_0xdee38['serverUrl']=intUtil['stripTrailingSlash'](_0xdee38[_0x9dd9('0x52')]);def['uri']=util[_0x9dd9('0x21')](_0x9dd9('0x53'),_0xdee38[_0x9dd9('0x50')]);if(_0x143606&&_0x143606[_0x9dd9('0x54')]){logger[_0x9dd9('0x26')](_0x9dd9('0x55'),'Recording\x20is\x20enabled!');_0x222823['recordingURL']=util[_0x9dd9('0x21')](_0x9dd9('0x56'),_0xdee38[_0x9dd9('0x52')],_0x222823[_0x9dd9('0x57')],md5(_0x222823['uniqueid']));}else{_0x222823[_0x9dd9('0x58')]='';}return getConnection(_0xdee38)['then'](function(_0x4f597b){_0x43d110=_0x4f597b;return getUser(_0xdee38,_0x2aae71[_0x9dd9('0xc')],_0x43d110);})[_0x9dd9('0x37')](function(_0xc01cd9){_0x4a2f3a=_0xc01cd9;logger[_0x9dd9('0x26')](_0x9dd9('0x59'),_0x4a2f3a['id']);return getEndUser(_0xdee38,_0x222823[_0x9dd9('0x5a')],_0x222823[_0x9dd9('0x5b')],_0x43d110);})[_0x9dd9('0x37')](function(_0x14b2b2){_0xf9aa12=_0x14b2b2;logger['info']('The\x20Enduser\x20ID\x20is:',_0xf9aa12['id']);return getTicket(_0xdee38,_0x4a2f3a,_0xf9aa12,_0xb67de5,_0x222823,_0xb67de5['Fields'],_0x43d110,_0x9dd9('0x5c'));})['then'](function(_0x24d2ee){_0x5880f2=_0x24d2ee;logger[_0x9dd9('0x26')](_0x9dd9('0x5d'));logger[_0x9dd9('0x26')](_0x9dd9('0x5e'),_0x5880f2['id']);return setRelationship(_0x43d110,_0x4a2f3a,_0x5880f2,_0x9dd9('0x5f'));})[_0x9dd9('0x37')](function(){return setRelationship(_0x43d110,_0xf9aa12,_0x5880f2,'contacts');})[_0x9dd9('0x37')](function(){return getServerInfo(_0x43d110);})[_0x9dd9('0x37')](function(_0x86a1e5){var _0x2066c0=parseInt(_0x86a1e5[_0x9dd9('0x60')][_0x9dd9('0x61')](0x0));var _0x456a8a=util[_0x9dd9('0x21')](_0x9dd9('0x62'),_0xdee38['remoteUri'],_0x5880f2['id']);if(_0x2066c0>0x6){_0x456a8a=util[_0x9dd9('0x21')](_0x9dd9('0x63'),_0xdee38[_0x9dd9('0x50')],_0x5880f2['id']);}logger['info'](_0x9dd9('0x55'),_0x9dd9('0x64'));emit(util[_0x9dd9('0x21')]('user:%s',_0x2aae71[_0x9dd9('0xc')]),'trigger:browser:url',{'uri':_0x456a8a});})[_0x9dd9('0x65')](function(_0xc4580c){logger[_0x9dd9('0x66')](_0x9dd9('0x55'),JSON[_0x9dd9('0x1f')](_0xc4580c));});};exports[_0x9dd9('0x67')]=function(_0xbb4dda,_0x4de85c,_0x250405,_0x2b85d6,_0x4a26cd,_0x2e9786,_0x103e4a){var _0x13b24a,_0x492ffc,_0x26d633,_0x260a91;_0x2e9786[_0x9dd9('0x50')]=intUtil[_0x9dd9('0x51')](_0x2e9786[_0x9dd9('0x50')]);_0x2e9786['serverUrl']=intUtil[_0x9dd9('0x51')](_0x2e9786[_0x9dd9('0x52')]);def['uri']=util[_0x9dd9('0x21')](_0x9dd9('0x53'),_0x2e9786[_0x9dd9('0x50')]);if(_0x103e4a&&_0x103e4a[_0x9dd9('0x68')]&&_0x103e4a[_0x9dd9('0x68')]!==_0x9dd9('0x69')){logger[_0x9dd9('0x26')](_0x9dd9('0x6a'),_0x9dd9('0x6b'));_0x4de85c[_0x9dd9('0x58')]=util[_0x9dd9('0x21')](_0x9dd9('0x56'),_0x2e9786[_0x9dd9('0x52')],_0x4de85c[_0x9dd9('0x57')],md5(_0x4de85c[_0x9dd9('0x57')]));}return getConnection(_0x2e9786)[_0x9dd9('0x37')](function(_0x8727ad){_0x260a91=_0x8727ad;return getUser(_0x2e9786,_0x2b85d6[_0x9dd9('0xc')],_0x260a91);})[_0x9dd9('0x37')](function(_0x5dface){_0x13b24a=_0x5dface;logger[_0x9dd9('0x26')](_0x9dd9('0x59'),_0x13b24a['id']);return getEndUser(_0x2e9786,_0x4de85c[_0x9dd9('0x6c')],_0x4de85c[_0x9dd9('0x6d')],_0x260a91);})[_0x9dd9('0x37')](function(_0x59c874){_0x492ffc=_0x59c874;logger[_0x9dd9('0x26')]('The\x20Enduser\x20ID\x20is:',_0x492ffc['id']);return getTicket(_0x2e9786,_0x13b24a,_0x492ffc,_0x250405,_0x4de85c,_0x250405['Fields'],_0x260a91,'Outbound');})[_0x9dd9('0x37')](function(_0x35c2f9){_0x26d633=_0x35c2f9;logger[_0x9dd9('0x26')](_0x9dd9('0x5d'));logger['info'](_0x9dd9('0x5e'),_0x26d633['id']);return setRelationship(_0x260a91,_0x13b24a,_0x26d633,_0x9dd9('0x5f'));})[_0x9dd9('0x37')](function(){return setRelationship(_0x260a91,_0x492ffc,_0x26d633,_0x9dd9('0x6e'));})['then'](function(){return getServerInfo(_0x260a91);})['then'](function(_0x429557){var _0x450015=parseInt(_0x429557['version'][_0x9dd9('0x61')](0x0));var _0x21e231=util['format'](_0x9dd9('0x62'),_0x2e9786[_0x9dd9('0x50')],_0x26d633['id']);if(_0x450015>0x6){_0x21e231=util[_0x9dd9('0x21')](_0x9dd9('0x63'),_0x2e9786[_0x9dd9('0x50')],_0x26d633['id']);}logger[_0x9dd9('0x26')](_0x9dd9('0x6a'),_0x9dd9('0x64'));emit(util[_0x9dd9('0x21')](_0x9dd9('0x6f'),_0x2b85d6[_0x9dd9('0xc')]),_0x9dd9('0x70'),{'uri':_0x21e231});})[_0x9dd9('0x65')](function(_0x2b5f26){logger[_0x9dd9('0x66')](_0x9dd9('0x6a'),JSON[_0x9dd9('0x1f')](_0x2b5f26));});};exports['unmanaged']=function(_0x405cc6,_0x5b7fe0,_0x291363,_0xf24a57,_0xba2e7c,_0x4aa503){var _0x445b67,_0x4c2ef6,_0x28178f,_0x235194;_0x4aa503[_0x9dd9('0x50')]=intUtil[_0x9dd9('0x51')](_0x4aa503[_0x9dd9('0x50')]);_0x4aa503['serverUrl']=intUtil[_0x9dd9('0x51')](_0x4aa503[_0x9dd9('0x52')]);def[_0x9dd9('0x71')]=util[_0x9dd9('0x21')](_0x9dd9('0x53'),_0x4aa503[_0x9dd9('0x50')]);if(_0xba2e7c&&_0xba2e7c[_0x9dd9('0x54')]){logger[_0x9dd9('0x26')]('['+_0x5b7fe0[_0x9dd9('0x72')][_0x9dd9('0x73')]()+']',_0x9dd9('0x6b'));_0x5b7fe0[_0x9dd9('0x58')]=util[_0x9dd9('0x21')](_0x9dd9('0x56'),_0x4aa503['serverUrl'],_0x5b7fe0[_0x9dd9('0x57')],md5(_0x5b7fe0[_0x9dd9('0x57')]));}else{_0x5b7fe0[_0x9dd9('0x58')]='';}return getConnection(_0x4aa503)['then'](function(_0x10e480){_0x235194=_0x10e480;if(!_['isNil'](_0xf24a57)){return getUser(_0x4aa503,_0xf24a57[_0x9dd9('0xc')],_0x235194);}else{return getUser(_0x4aa503,null,_0x235194);}})[_0x9dd9('0x37')](function(_0x1988b5){_0x445b67=_0x1988b5;logger[_0x9dd9('0x26')](_0x9dd9('0x59'),_0x445b67['id']);return getEndUser(_0x4aa503,_0x5b7fe0[_0x9dd9('0x5a')],_0x5b7fe0[_0x9dd9('0x5b')],_0x235194);})['then'](function(_0x4f9c8b){_0x4c2ef6=_0x4f9c8b;logger[_0x9dd9('0x26')](_0x9dd9('0x74'),_0x4c2ef6['id']);return getTicket(_0x4aa503,_0x445b67,_0x4c2ef6,_0x291363,_0x5b7fe0,_0x291363['Fields'],_0x235194,_0x9dd9('0x5c'));})[_0x9dd9('0x37')](function(_0x56e76b){_0x28178f=_0x56e76b;logger['info'](_0x9dd9('0x5d'));logger[_0x9dd9('0x26')]('The\x20Ticket\x20ID\x20is:',_0x28178f['id']);return setRelationship(_0x235194,_0x445b67,_0x28178f,'users');})[_0x9dd9('0x37')](function(){return setRelationship(_0x235194,_0x4c2ef6,_0x28178f,'contacts');})[_0x9dd9('0x37')](function(){return getServerInfo(_0x235194);})[_0x9dd9('0x65')](function(_0x5b76d9){logger[_0x9dd9('0x66')]('['+_0x5b7fe0[_0x9dd9('0x72')][_0x9dd9('0x73')]()+']',JSON[_0x9dd9('0x1f')](_0x5b76d9));});};
\ No newline at end of file
+var _0x5675=['monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','catch','error','[QUEUE]','stripTrailingSlash','uri','recordingFormat','none','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Outbound','users','[OUTBOUND]','user:%s','unmanaged','lastevent','toUpperCase','calleridname','calleridnum','Inbound','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','description','date_start','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','forEach','variableName','idField','set_entry','JSON','Calls','format','Basic\x20%s','toString','base64','get_server_info','stringify','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','length','entry_list','Agent\x20found!','resolve','value','name_value_list','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','phone_home','find','Enduser\x20found!','Contacts','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','merge','map','type','string','nameField','customField','toLowerCase','content','custom_fields','push','Variable','login','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','serverUrl','%s/service/v4_1/rest.php'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x5675,0xa1));var _0x5567=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0x5675[_0x1e7b16];return _0x37fadc;};'use strict';var _=require(_0x5567('0x0'));var rp=require(_0x5567('0x1'));var BPromise=require(_0x5567('0x2'));var md5=require(_0x5567('0x3'));var util=require(_0x5567('0x4'));var Redis=require(_0x5567('0x5'));var intUtil=require(_0x5567('0x6'));var config=require(_0x5567('0x7'));var logger=require(_0x5567('0x8'))(_0x5567('0x9'));config[_0x5567('0xa')]=_[_0x5567('0xb')](config[_0x5567('0xa')],{'host':_0x5567('0xc'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x5567('0xa')]));var def={'method':_0x5567('0xd'),'json':!![]};function emit(_0x3dbb19,_0x55ed37,_0x1ea4b2){io['to'](_0x3dbb19)[_0x5567('0xe')](_0x55ed37,_0x1ea4b2);}function getTicket(_0x140ab9,_0xd6cd24,_0x55d77e,_0x46a3a4,_0x208d1f,_0x2f0f01,_0x40a24a,_0x7e5b20){logger[_0x5567('0xf')](_0x5567('0x10'));var _0x41a110=new Date();var _0x5b2a60=[{'name':_0x5567('0x11'),'value':intUtil[_0x5567('0x12')](_0x46a3a4[_0x5567('0x13')],_0x208d1f,'\x20')},{'name':_0x5567('0x14'),'value':_0xd6cd24['id']},{'name':'created_by','value':_0xd6cd24['id']},{'name':_0x5567('0x15'),'value':intUtil['getString'](_0x46a3a4['Descriptions'],_0x208d1f,'\x0a')},{'name':_0x5567('0x16'),'value':_0x41a110['toISOString']()[_0x5567('0x17')](0x0,0x13)[_0x5567('0x18')]('T','\x20')},{'name':_0x5567('0x19'),'value':'0'},{'name':_0x5567('0x1a'),'value':'15'},{'name':_0x5567('0x1b'),'value':_0x55d77e['id']},{'name':_0x5567('0x1c'),'value':'Contacts'},{'name':_0x5567('0x1d'),'value':_0x55d77e[_0x5567('0x11')]},{'name':_0x5567('0x1e'),'value':_0x7e5b20}];if(_0x2f0f01['length']){_[_0x5567('0x1f')](_0x2f0f01,function(_0x193ad9){if(_0x208d1f[_0x193ad9[_0x5567('0x20')]]){_0x5b2a60['push']({'name':_0x193ad9[_0x5567('0x21')],'value':_0x208d1f[_0x193ad9[_0x5567('0x20')]]});}});}return request({'form':{'method':_0x5567('0x22'),'input_type':'JSON','response_type':_0x5567('0x23'),'rest_data':JSON['stringify']({'session':_0x40a24a['id'],'module_name':_0x5567('0x24'),'name_value_list':_0x5b2a60})}});}function getAuth(_0x127c6f){return util[_0x5567('0x25')](_0x5567('0x26'),new Buffer(_0x127c6f['apiKey']+':X')[_0x5567('0x27')](_0x5567('0x28')));}function getServerInfo(_0x18d93d){return request({'form':{'method':_0x5567('0x29'),'input_type':'JSON','response_type':_0x5567('0x23'),'rest_data':JSON[_0x5567('0x2a')]({'session':_0x18d93d['id']})}});}function getUser(_0xcaa82e,_0x527738,_0x8628d6){if(!_[_0x5567('0x2b')](_0x527738)){logger[_0x5567('0xf')](_0x5567('0x2c'),_0x527738);return request({'form':{'method':_0x5567('0x2d'),'input_type':_0x5567('0x23'),'response_type':_0x5567('0x23'),'rest_data':JSON[_0x5567('0x2a')]({'session':_0x8628d6['id'],'module_name':_0x5567('0x2e'),'query':util[_0x5567('0x25')](_0x5567('0x2f'),_0x527738),'order_by':'','offset':'0','select_fields':['id',_0x5567('0x11'),_0x5567('0x30')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5567('0x31')](function(_0xe7c6ed){if(_0xe7c6ed['entry_list'][_0x5567('0x32')]){var _0x4f51b8=_['find'](_0xe7c6ed[_0x5567('0x33')],function(_0x52da4d){return _0x52da4d['name_value_list'][_0x5567('0x30')]['value']===_0x527738;});if(_0x4f51b8){logger[_0x5567('0xf')](_0x5567('0x34'));return BPromise[_0x5567('0x35')]({'id':_0x4f51b8['name_value_list']['id'][_0x5567('0x36')],'name':_0x4f51b8['name_value_list'][_0x5567('0x11')][_0x5567('0x36')]});}}logger[_0x5567('0xf')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x5567('0x35')]({'id':_0x8628d6[_0x5567('0x37')][_0x5567('0x38')]['value'],'name':_0x8628d6[_0x5567('0x37')][_0x5567('0x30')][_0x5567('0x36')]});});}else{logger[_0x5567('0xf')](_0x5567('0x39'));return BPromise[_0x5567('0x35')]({'id':_0x8628d6[_0x5567('0x37')]['user_id'][_0x5567('0x36')],'name':_0x8628d6['name_value_list'][_0x5567('0x30')]['value']});}}function getEndUser(_0x1dbce1,_0x1404f2,_0x12f3d5,_0x145a59){logger['info']('Searching\x20enduser\x20with\x20phone',_0x12f3d5);return request({'form':{'method':_0x5567('0x2d'),'input_type':_0x5567('0x23'),'response_type':'JSON','rest_data':JSON[_0x5567('0x2a')]({'session':_0x145a59['id'],'module_name':'Contacts','query':util[_0x5567('0x25')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x12f3d5),'order_by':'','offset':'0','select_fields':['id',_0x5567('0x11'),_0x5567('0x3a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x5567('0x31')](function(_0x5a95db){if(_0x5a95db[_0x5567('0x33')][_0x5567('0x32')]){var _0x292808=_[_0x5567('0x3b')](_0x5a95db[_0x5567('0x33')],function(_0x583b2b){return _0x583b2b[_0x5567('0x37')][_0x5567('0x3a')][_0x5567('0x36')]===_0x12f3d5;});if(_0x292808){logger[_0x5567('0xf')](_0x5567('0x3c'));return BPromise[_0x5567('0x35')]({'id':_0x292808[_0x5567('0x37')]['id']['value'],'name':_0x292808[_0x5567('0x37')][_0x5567('0x11')]['value'],'phone':_0x292808[_0x5567('0x37')][_0x5567('0x3a')][_0x5567('0x36')]});}}else{logger[_0x5567('0xf')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x5567('0x22'),'input_type':_0x5567('0x23'),'response_type':'JSON','rest_data':JSON[_0x5567('0x2a')]({'session':_0x145a59['id'],'module_name':_0x5567('0x3d'),'name_value_list':[{'name':_0x5567('0x3e'),'value':_0x1404f2!==_0x5567('0x3f')?_0x1404f2:util[_0x5567('0x25')](_0x5567('0x40'),_0x12f3d5)},{'name':_0x5567('0x3a'),'value':_0x12f3d5}]})}})[_0x5567('0x31')](function(_0xaf0aad){logger[_0x5567('0xf')](_0x5567('0x41'));return BPromise[_0x5567('0x35')]({'id':_0xaf0aad['id'],'name':_0xaf0aad[_0x5567('0x33')][_0x5567('0x3e')]['value'],'phone':_0xaf0aad[_0x5567('0x33')][_0x5567('0x3a')]['value']});});}});}function request(_0xa246df){logger[_0x5567('0x42')]('[HTTP]',JSON['stringify'](_0xa246df));return rp(_[_0x5567('0x43')](def,_0xa246df));}function getTags(_0x59bc55,_0x33cef7){var _0x595eb0=[];if(_0x59bc55&&_0x59bc55[_0x5567('0x32')]>0x0){_0x595eb0=_[_0x5567('0x44')](_0x59bc55,_0x33cef7);}return _0x595eb0;}function getCustomFields(_0x4f9311,_0x5e182e){var _0x406675=[];var _0x191b6e={'custom_fields':[]};if(_0x4f9311['length']>0x0){_[_0x5567('0x1f')](_0x4f9311,function(_0x33aaf9){if(_0x33aaf9[_0x5567('0x45')]===_0x5567('0x46')&&_0x33aaf9[_0x5567('0x47')]&&!_0x33aaf9[_0x5567('0x48')]){_0x191b6e[_0x33aaf9[_0x5567('0x47')][_0x5567('0x49')]()]=_0x33aaf9[_0x5567('0x4a')][_0x5567('0x27')]();}else if(_0x33aaf9[_0x5567('0x45')]===_0x5567('0x46')&&_0x33aaf9[_0x5567('0x21')]&&_0x33aaf9[_0x5567('0x48')]){_0x191b6e[_0x5567('0x4b')]['push']({'id':_0x33aaf9['idField'],'value':_0x33aaf9[_0x5567('0x4a')][_0x5567('0x27')]()});}else if(_0x33aaf9[_0x5567('0x45')]==='variable'&&_0x33aaf9[_0x5567('0x20')]&&_0x33aaf9[_0x5567('0x21')]&&_0x33aaf9[_0x5567('0x48')]){_0x5e182e[_0x33aaf9[_0x5567('0x20')]]&&_0x191b6e[_0x5567('0x4b')][_0x5567('0x4c')]({'id':_0x33aaf9[_0x5567('0x21')],'value':_0x5e182e[_0x33aaf9[_0x5567('0x20')]][_0x5567('0x27')]()});}else if(_0x33aaf9[_0x5567('0x45')]==='customVariable'&&_0x33aaf9[_0x5567('0x4d')]&&_0x33aaf9[_0x5567('0x4d')][_0x5567('0x11')]&&_0x33aaf9[_0x5567('0x21')]&&_0x33aaf9['customField']){_0x5e182e[_0x33aaf9[_0x5567('0x4d')][_0x5567('0x11')][_0x5567('0x49')]()]&&_0x191b6e[_0x5567('0x4b')][_0x5567('0x4c')]({'id':_0x33aaf9[_0x5567('0x21')],'value':_0x5e182e[_0x33aaf9[_0x5567('0x4d')][_0x5567('0x11')][_0x5567('0x49')]()][_0x5567('0x27')]()});}});}return _0x191b6e;}function getConnection(_0x47e555){return request({'method':'POST','form':{'method':_0x5567('0x4e'),'input_type':_0x5567('0x23'),'response_type':_0x5567('0x23'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x47e555[_0x5567('0x4f')],'password':_0x47e555[_0x5567('0x50')],'encryption':_0x5567('0x51')},'application':_0x5567('0x52')})}})[_0x5567('0x31')](function(_0x5cb50b){var _0x45fb0e=_0x5cb50b;if(_0x45fb0e['id']){def[_0x5567('0x53')]=_0x45fb0e['id'];return BPromise[_0x5567('0x35')](_0x45fb0e);}else{throw new Error(util[_0x5567('0x25')](_0x5567('0x54'),_0x47e555['id']));}});}function setRelationship(_0x5407bf,_0x2d0ae5,_0xf05bf,_0xa5d0a9){return request({'form':{'method':_0x5567('0x55'),'input_type':_0x5567('0x23'),'response_type':_0x5567('0x23'),'rest_data':JSON[_0x5567('0x2a')]({'session':_0x5407bf['id'],'module_name':_0x5567('0x24'),'module_id':_0xf05bf['id'],'link_field_name':_0xa5d0a9,'related_ids':[_0x2d0ae5['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x592e4a,_0x2d5c12,_0x276ef8,_0x16264f,_0x2988d1,_0x4a6e4a){var _0x419c0d,_0x169850,_0x437f54,_0x3c488b;_0x4a6e4a['remoteUri']=intUtil['stripTrailingSlash'](_0x4a6e4a[_0x5567('0x56')]);_0x4a6e4a[_0x5567('0x57')]=intUtil['stripTrailingSlash'](_0x4a6e4a[_0x5567('0x57')]);def['uri']=util['format'](_0x5567('0x58'),_0x4a6e4a[_0x5567('0x56')]);if(_0x2988d1&&_0x2988d1[_0x5567('0x59')]){logger[_0x5567('0xf')]('[QUEUE]',_0x5567('0x5a'));_0x2d5c12[_0x5567('0x5b')]=util[_0x5567('0x25')](_0x5567('0x5c'),_0x4a6e4a[_0x5567('0x57')],_0x2d5c12[_0x5567('0x5d')],md5(_0x2d5c12['uniqueid']));}else{_0x2d5c12[_0x5567('0x5b')]='';}return getConnection(_0x4a6e4a)[_0x5567('0x31')](function(_0x22eeb3){_0x3c488b=_0x22eeb3;return getUser(_0x4a6e4a,_0x16264f[_0x5567('0x11')],_0x3c488b);})[_0x5567('0x31')](function(_0x907921){_0x419c0d=_0x907921;logger[_0x5567('0xf')](_0x5567('0x5e'),_0x419c0d['id']);return getEndUser(_0x4a6e4a,_0x2d5c12['calleridname'],_0x2d5c12['calleridnum'],_0x3c488b);})[_0x5567('0x31')](function(_0x5dd764){_0x169850=_0x5dd764;logger[_0x5567('0xf')]('The\x20Enduser\x20ID\x20is:',_0x169850['id']);return getTicket(_0x4a6e4a,_0x419c0d,_0x169850,_0x276ef8,_0x2d5c12,_0x276ef8[_0x5567('0x5f')],_0x3c488b,'Inbound');})['then'](function(_0x2f9ec0){_0x437f54=_0x2f9ec0;logger[_0x5567('0xf')](_0x5567('0x60'));logger['info'](_0x5567('0x61'),_0x437f54['id']);return setRelationship(_0x3c488b,_0x419c0d,_0x437f54,'users');})[_0x5567('0x31')](function(){return setRelationship(_0x3c488b,_0x169850,_0x437f54,_0x5567('0x62'));})[_0x5567('0x31')](function(){return getServerInfo(_0x3c488b);})[_0x5567('0x31')](function(_0x4a783e){var _0x4f764e=parseInt(_0x4a783e[_0x5567('0x63')][_0x5567('0x64')](0x0));var _0x4924e6=util['format'](_0x5567('0x65'),_0x4a6e4a[_0x5567('0x56')],_0x437f54['id']);if(_0x4f764e>0x6){_0x4924e6=util[_0x5567('0x25')](_0x5567('0x66'),_0x4a6e4a['remoteUri'],_0x437f54['id']);}logger[_0x5567('0xf')]('[QUEUE]',_0x5567('0x67'));emit(util[_0x5567('0x25')]('user:%s',_0x16264f[_0x5567('0x11')]),_0x5567('0x68'),{'uri':_0x4924e6});})[_0x5567('0x69')](function(_0x123ed2){logger[_0x5567('0x6a')](_0x5567('0x6b'),JSON[_0x5567('0x2a')](_0x123ed2));});};exports['outbound']=function(_0x5568c7,_0x2936e9,_0x58ccd7,_0xd367b9,_0x5a6ff6,_0x354c27,_0x55ab1e){var _0x52afd5,_0x26a20a,_0x10a3f3,_0x1cc14f;_0x354c27[_0x5567('0x56')]=intUtil[_0x5567('0x6c')](_0x354c27[_0x5567('0x56')]);_0x354c27[_0x5567('0x57')]=intUtil['stripTrailingSlash'](_0x354c27[_0x5567('0x57')]);def[_0x5567('0x6d')]=util['format'](_0x5567('0x58'),_0x354c27[_0x5567('0x56')]);if(_0x55ab1e&&_0x55ab1e[_0x5567('0x6e')]&&_0x55ab1e[_0x5567('0x6e')]!==_0x5567('0x6f')){logger[_0x5567('0xf')]('[OUTBOUND]',_0x5567('0x5a'));_0x2936e9['recordingURL']=util[_0x5567('0x25')](_0x5567('0x5c'),_0x354c27[_0x5567('0x57')],_0x2936e9[_0x5567('0x5d')],md5(_0x2936e9[_0x5567('0x5d')]));}return getConnection(_0x354c27)[_0x5567('0x31')](function(_0x10cd3b){_0x1cc14f=_0x10cd3b;return getUser(_0x354c27,_0xd367b9['name'],_0x1cc14f);})[_0x5567('0x31')](function(_0x1be43e){_0x52afd5=_0x1be43e;logger[_0x5567('0xf')](_0x5567('0x5e'),_0x52afd5['id']);return getEndUser(_0x354c27,_0x2936e9[_0x5567('0x70')],_0x2936e9[_0x5567('0x71')],_0x1cc14f);})['then'](function(_0x1ec194){_0x26a20a=_0x1ec194;logger[_0x5567('0xf')](_0x5567('0x72'),_0x26a20a['id']);return getTicket(_0x354c27,_0x52afd5,_0x26a20a,_0x58ccd7,_0x2936e9,_0x58ccd7['Fields'],_0x1cc14f,_0x5567('0x73'));})['then'](function(_0x13011e){_0x10a3f3=_0x13011e;logger[_0x5567('0xf')](_0x5567('0x60'));logger[_0x5567('0xf')]('The\x20Ticket\x20ID\x20is:',_0x10a3f3['id']);return setRelationship(_0x1cc14f,_0x52afd5,_0x10a3f3,_0x5567('0x74'));})[_0x5567('0x31')](function(){return setRelationship(_0x1cc14f,_0x26a20a,_0x10a3f3,_0x5567('0x62'));})[_0x5567('0x31')](function(){return getServerInfo(_0x1cc14f);})[_0x5567('0x31')](function(_0x56569c){var _0x2d5fe4=parseInt(_0x56569c[_0x5567('0x63')][_0x5567('0x64')](0x0));var _0x1d1594=util[_0x5567('0x25')](_0x5567('0x65'),_0x354c27[_0x5567('0x56')],_0x10a3f3['id']);if(_0x2d5fe4>0x6){_0x1d1594=util['format'](_0x5567('0x66'),_0x354c27['remoteUri'],_0x10a3f3['id']);}logger[_0x5567('0xf')](_0x5567('0x75'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x5567('0x25')](_0x5567('0x76'),_0xd367b9[_0x5567('0x11')]),_0x5567('0x68'),{'uri':_0x1d1594});})[_0x5567('0x69')](function(_0x145f2c){logger[_0x5567('0x6a')](_0x5567('0x75'),JSON[_0x5567('0x2a')](_0x145f2c));});};exports[_0x5567('0x77')]=function(_0x19bcc8,_0x365717,_0xa0e49d,_0xff4dc,_0x10f04b,_0x5f28fc){var _0x212d68,_0x2fe997,_0x488c8,_0x507750;_0x5f28fc['remoteUri']=intUtil['stripTrailingSlash'](_0x5f28fc[_0x5567('0x56')]);_0x5f28fc['serverUrl']=intUtil[_0x5567('0x6c')](_0x5f28fc[_0x5567('0x57')]);def[_0x5567('0x6d')]=util[_0x5567('0x25')](_0x5567('0x58'),_0x5f28fc[_0x5567('0x56')]);if(_0x10f04b&&_0x10f04b[_0x5567('0x59')]){logger[_0x5567('0xf')]('['+_0x365717[_0x5567('0x78')][_0x5567('0x79')]()+']',_0x5567('0x5a'));_0x365717[_0x5567('0x5b')]=util['format'](_0x5567('0x5c'),_0x5f28fc['serverUrl'],_0x365717['uniqueid'],md5(_0x365717[_0x5567('0x5d')]));}else{_0x365717[_0x5567('0x5b')]='';}return getConnection(_0x5f28fc)[_0x5567('0x31')](function(_0x246739){_0x507750=_0x246739;if(!_[_0x5567('0x2b')](_0xff4dc)){return getUser(_0x5f28fc,_0xff4dc['name'],_0x507750);}else{return getUser(_0x5f28fc,null,_0x507750);}})[_0x5567('0x31')](function(_0x1c50cc){_0x212d68=_0x1c50cc;logger[_0x5567('0xf')](_0x5567('0x5e'),_0x212d68['id']);return getEndUser(_0x5f28fc,_0x365717[_0x5567('0x7a')],_0x365717[_0x5567('0x7b')],_0x507750);})[_0x5567('0x31')](function(_0x324c04){_0x2fe997=_0x324c04;logger[_0x5567('0xf')](_0x5567('0x72'),_0x2fe997['id']);return getTicket(_0x5f28fc,_0x212d68,_0x2fe997,_0xa0e49d,_0x365717,_0xa0e49d['Fields'],_0x507750,_0x5567('0x7c'));})['then'](function(_0x20f556){_0x488c8=_0x20f556;logger[_0x5567('0xf')](_0x5567('0x60'));logger[_0x5567('0xf')](_0x5567('0x61'),_0x488c8['id']);return setRelationship(_0x507750,_0x212d68,_0x488c8,'users');})['then'](function(){return setRelationship(_0x507750,_0x2fe997,_0x488c8,_0x5567('0x62'));})['then'](function(){return getServerInfo(_0x507750);})[_0x5567('0x69')](function(_0x562b1c){logger[_0x5567('0x6a')]('['+_0x365717['lastevent'][_0x5567('0x79')]()+']',JSON[_0x5567('0x2a')](_0x562b1c));});};
\ No newline at end of file
index ba17b14..0944173 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x881e=['validateEmail','isNil','test','util','getString','length','type','push','content','variable','variableName','customVariable','Variable','toLowerCase','name','toString','keyValue','keyType','string','key','format','%s:\x20%s','keyContent','join','stripTrailingSlash','substring'];(function(_0x518782,_0x2974ca){var _0x379137=function(_0xc83c71){while(--_0xc83c71){_0x518782['push'](_0x518782['shift']());}};_0x379137(++_0x2974ca);}(_0x881e,0xd3));var _0xe881=function(_0x4ececf,_0x5a0ee4){_0x4ececf=_0x4ececf-0x0;var _0x292479=_0x881e[_0x4ececf];return _0x292479;};'use strict';var _=require('lodash');var util=require(_0xe881('0x0'));exports[_0xe881('0x1')]=function(_0x5aec79,_0x59e8a2,_0x28d43d){var _0x2c04df=[];if(_0x5aec79[_0xe881('0x2')]>0x0){var _0x2cde51=_['sortBy'](_0x5aec79,['id']);for(var _0x5bd118=0x0;_0x5bd118<_0x2cde51[_0xe881('0x2')];_0x5bd118++){var _0x2b0664=_0x2cde51[_0x5bd118];if(_0x2b0664[_0xe881('0x3')]==='string'){_0x2c04df[_0xe881('0x4')](_0x2b0664[_0xe881('0x5')]);}else if(_0x2b0664[_0xe881('0x3')]===_0xe881('0x6')&&_0x2b0664['variableName']){_0x59e8a2[_0x2b0664[_0xe881('0x7')]]&&_0x2c04df['push'](_0x59e8a2[_0x2b0664[_0xe881('0x7')]]['toString']());}else if(_0x2b0664[_0xe881('0x3')]===_0xe881('0x8')&&_0x2b0664[_0xe881('0x9')]&&_0x2b0664[_0xe881('0x9')]['name']){_0x59e8a2[_0x2b0664['Variable']['name'][_0xe881('0xa')]()]&&_0x2c04df[_0xe881('0x4')](_0x59e8a2[_0x2b0664[_0xe881('0x9')][_0xe881('0xb')][_0xe881('0xa')]()][_0xe881('0xc')]());}else if(_0x2b0664[_0xe881('0x3')]===_0xe881('0xd')){if(_0x2b0664[_0xe881('0xe')]===_0xe881('0xf')&&_0x2b0664[_0xe881('0x10')]){_0x2c04df[_0xe881('0x4')](util[_0xe881('0x11')](_0xe881('0x12'),_0x2b0664[_0xe881('0x10')],_0x2b0664[_0xe881('0x13')]));}else if(_0x2b0664['keyType']===_0xe881('0x6')&&_0x2b0664['variableName']&&_0x2b0664['key']){_0x59e8a2[_0x2b0664['variableName']]&&_0x2c04df['push'](util[_0xe881('0x11')](_0xe881('0x12'),_0x2b0664['key'],_0x59e8a2[_0x2b0664[_0xe881('0x7')]]));}else if(_0x2b0664['keyType']==='customVariable'&&_0x2b0664[_0xe881('0x9')]&&_0x2b0664[_0xe881('0x9')][_0xe881('0xb')]&&_0x2b0664[_0xe881('0x10')]){_0x59e8a2[_0x2b0664['Variable'][_0xe881('0xb')][_0xe881('0xa')]()]&&_0x2c04df['push'](util[_0xe881('0x11')](_0xe881('0x12'),_0x2b0664[_0xe881('0x10')],_0x59e8a2[_0x2b0664[_0xe881('0x9')]['name'][_0xe881('0xa')]()]));}}}}return _0x2c04df[_0xe881('0x14')](_0x28d43d);};exports[_0xe881('0x15')]=function(_0xee89ef){var _0x35a194=_0xee89ef['slice'](-0x1);if(_0x35a194==='/'){_0xee89ef=_0xee89ef[_0xe881('0x16')](0x0,_0xee89ef['lastIndexOf'](_0x35a194));}return _0xee89ef;};exports[_0xe881('0x17')]=function(_0x2cc20e){if(!_[_0xe881('0x18')](_0x2cc20e)&&_0x2cc20e!==''){var _0x56f7a4=/^(([^<>()\[\]\\.,;:\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 _0x56f7a4[_0xe881('0x19')](String(_0x2cc20e)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x5254=['%s:\x20%s','join','slice','substring','lastIndexOf','isNil','test','lodash','length','type','string','push','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key','format'];(function(_0x5563f2,_0x57def7){var _0x446209=function(_0xa50caa){while(--_0xa50caa){_0x5563f2['push'](_0x5563f2['shift']());}};_0x446209(++_0x57def7);}(_0x5254,0x67));var _0x4525=function(_0x4f9345,_0x98d79){_0x4f9345=_0x4f9345-0x0;var _0x4ec75a=_0x5254[_0x4f9345];return _0x4ec75a;};'use strict';var _=require(_0x4525('0x0'));var util=require('util');exports['getString']=function(_0x453510,_0x279a67,_0xff08d5){var _0x311a6a=[];if(_0x453510[_0x4525('0x1')]>0x0){var _0xd5de6=_['sortBy'](_0x453510,['id']);for(var _0x2c2edc=0x0;_0x2c2edc<_0xd5de6['length'];_0x2c2edc++){var _0x5eb4ac=_0xd5de6[_0x2c2edc];if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0x3')){_0x311a6a[_0x4525('0x4')](_0x5eb4ac[_0x4525('0x5')]);}else if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0x6')&&_0x5eb4ac[_0x4525('0x7')]){_0x279a67[_0x5eb4ac[_0x4525('0x7')]]&&_0x311a6a[_0x4525('0x4')](_0x279a67[_0x5eb4ac['variableName']][_0x4525('0x8')]());}else if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0x9')&&_0x5eb4ac[_0x4525('0xa')]&&_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')]){_0x279a67[_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')][_0x4525('0xc')]()]&&_0x311a6a[_0x4525('0x4')](_0x279a67[_0x5eb4ac['Variable']['name']['toLowerCase']()][_0x4525('0x8')]());}else if(_0x5eb4ac[_0x4525('0x2')]===_0x4525('0xd')){if(_0x5eb4ac[_0x4525('0xe')]==='string'&&_0x5eb4ac[_0x4525('0xf')]){_0x311a6a[_0x4525('0x4')](util[_0x4525('0x10')](_0x4525('0x11'),_0x5eb4ac[_0x4525('0xf')],_0x5eb4ac['keyContent']));}else if(_0x5eb4ac[_0x4525('0xe')]===_0x4525('0x6')&&_0x5eb4ac[_0x4525('0x7')]&&_0x5eb4ac[_0x4525('0xf')]){_0x279a67[_0x5eb4ac['variableName']]&&_0x311a6a['push'](util['format'](_0x4525('0x11'),_0x5eb4ac[_0x4525('0xf')],_0x279a67[_0x5eb4ac[_0x4525('0x7')]]));}else if(_0x5eb4ac['keyType']===_0x4525('0x9')&&_0x5eb4ac['Variable']&&_0x5eb4ac['Variable']['name']&&_0x5eb4ac[_0x4525('0xf')]){_0x279a67[_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')]['toLowerCase']()]&&_0x311a6a['push'](util[_0x4525('0x10')](_0x4525('0x11'),_0x5eb4ac[_0x4525('0xf')],_0x279a67[_0x5eb4ac[_0x4525('0xa')][_0x4525('0xb')][_0x4525('0xc')]()]));}}}}return _0x311a6a[_0x4525('0x12')](_0xff08d5);};exports['stripTrailingSlash']=function(_0x316f58){var _0xa76ae=_0x316f58[_0x4525('0x13')](-0x1);if(_0xa76ae==='/'){_0x316f58=_0x316f58[_0x4525('0x14')](0x0,_0x316f58[_0x4525('0x15')](_0xa76ae));}return _0x316f58;};exports['validateEmail']=function(_0x14fe65){if(!_[_0x4525('0x16')](_0x14fe65)&&_0x14fe65!==''){var _0x41da1e=/^(([^<>()\[\]\\.,;:\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 _0x41da1e[_0x4525('0x17')](String(_0x14fe65)[_0x4525('0xc')]());}else{return![];}};
\ No newline at end of file
index 61eed18..8dc597e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
+var _0xa9e0=['variable','variableName','customVariable','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','Normal','Open','Subjects','POST','format','%s/webservice.php','create','username','sessionName','HelpDesk','stringify','then','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','catch','error','[vTiger],\x20%s,\x20%s,\x20%s','createTicket','validateEmail','Getting\x20agent\x20with\x20email','GET','query','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','success','resolve','email1','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','statusCode','getUser','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','Enduser\x20created.','phone','getEndUser','accessKey','getchallenge','login','token','Account\x20%d\x20is\x20not\x20valid','[HTTP]','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','The\x20Enduser\x20ID\x20is:','Fields','split','trigger:browser:url','unmanaged','monitor_format','toUpperCase','calleridname','lastevent','lodash','request-promise','bluebird','ioredis','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','length','forEach','includes','idField','content','toString','type'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'use strict';var _=require(_0x0a9e('0x0'));var rp=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var md5=require('md5');var util=require('util');var Redis=require(_0x0a9e('0x3'));var intUtil=require('./util');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));config[_0x0a9e('0x7')]=_[_0x0a9e('0x8')](config['redis'],{'host':_0x0a9e('0x9'),'port':0x18eb});var io=require(_0x0a9e('0xa'))(new Redis(config[_0x0a9e('0x7')]));function emit(_0x5f41ea,_0x503809,_0xe42b77){io['to'](_0x5f41ea)['emit'](_0x503809,_0xe42b77);}function getCustomFields(_0x52cace,_0x39753a){var _0xf81284={};if(_0x52cace[_0x0a9e('0xb')]>0x0){_[_0x0a9e('0xc')](_0x52cace,function(_0xfeb75b){if(_[_0x0a9e('0xd')](['string','picklist'],_0xfeb75b['type'])&&_0xfeb75b['idField']){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0xfeb75b[_0x0a9e('0xf')][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x12')&&_0xfeb75b[_0x0a9e('0x13')]&&_0xfeb75b['idField']&&_0x39753a[_0xfeb75b[_0x0a9e('0x13')]]){_0xf81284[_0xfeb75b[_0x0a9e('0xe')]]=_0x39753a[_0xfeb75b[_0x0a9e('0x13')]][_0x0a9e('0x10')]();}else if(_0xfeb75b[_0x0a9e('0x11')]===_0x0a9e('0x14')&&_0xfeb75b['Variable']&&_0xfeb75b[_0x0a9e('0x15')]['name']&&_0xfeb75b[_0x0a9e('0xe')]&&_0x39753a[_0xfeb75b['Variable'][_0x0a9e('0x16')][_0x0a9e('0x17')]()]){_0xf81284[_0xfeb75b['idField']]=_0x39753a[_0xfeb75b[_0x0a9e('0x15')]['name'][_0x0a9e('0x17')]()][_0x0a9e('0x10')]();}});}return _0xf81284;}function createTicket(_0x106033,_0x205fd6,_0x31b1ca,_0x2eb11f,_0x530eb7,_0x20559e,_0x1314ae){logger[_0x0a9e('0x18')](_0x0a9e('0x19'));var _0x105080=_['merge']({'parent_id':'','assigned_user_id':_0x205fd6['id'],'ticketpriorities':_0x0a9e('0x1a'),'ticketstatus':_0x0a9e('0x1b'),'ticket_title':intUtil['getString'](_0x2eb11f[_0x0a9e('0x1c')],_0x530eb7,'\x20'),'description':intUtil['getString'](_0x2eb11f['Descriptions'],_0x530eb7,'\x0a'),'contact_id':_0x31b1ca['id']},getCustomFields(_0x20559e,_0x530eb7));var _0x3a02e1={'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x106033['remoteUri']),'form':{'operation':_0x0a9e('0x20'),'username':_0x106033[_0x0a9e('0x21')],'sessionName':_0x1314ae[_0x0a9e('0x22')],'elementType':_0x0a9e('0x23'),'element':JSON[_0x0a9e('0x24')](_0x105080)},'json':!![]};return request(_0x3a02e1)[_0x0a9e('0x25')](function(_0x16b1ca){if(_0x16b1ca['success']){return BPromise['resolve']({'id':_0x16b1ca[_0x0a9e('0x26')]['id']});}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x27'),JSON[_0x0a9e('0x24')](_0x16b1ca['error'])));}})[_0x0a9e('0x28')](function(_0x479bc4){var _0x45a1e7=_0x479bc4['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x45a1e7,JSON[_0x0a9e('0x24')](_0x479bc4));});}function getUser(_0x140511,_0x1538a4,_0x11c3b6){if(intUtil[_0x0a9e('0x2c')](_0x1538a4)){logger['info'](_0x0a9e('0x2d'),_0x1538a4);return request({'method':_0x0a9e('0x2e'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x140511['remoteUri']),'qs':{'operation':_0x0a9e('0x2f'),'username':_0x140511[_0x0a9e('0x21')],'sessionName':_0x11c3b6[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x30'),_0x1538a4)},'json':!![]})[_0x0a9e('0x25')](function(_0x296f41){if(_0x296f41[_0x0a9e('0x31')]&&_0x296f41[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')]('Agent\x20found!');return BPromise[_0x0a9e('0x32')]({'id':_0x296f41[_0x0a9e('0x26')][0x0]['id'],'email':_0x296f41[_0x0a9e('0x26')][0x0][_0x0a9e('0x33')],'name':_0x296f41[_0x0a9e('0x26')][0x0]['first_name']+'\x20'+_0x296f41[_0x0a9e('0x26')][_0x0a9e('0x34')]});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511[_0x0a9e('0x21')],'name':_0x0a9e('0x37')});}})['catch'](function(_0x44295a){var _0x5e7238=_0x44295a[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),_0x0a9e('0x39'),_0x5e7238,JSON['stringify'](_0x44295a));});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x35'));return BPromise[_0x0a9e('0x32')]({'id':_0x11c3b6[_0x0a9e('0x36')],'email':_0x140511['username'],'name':'admin'})[_0x0a9e('0x28')](function(_0x5640eb){var _0x24936a=_0x5640eb[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getUser',_0x24936a,JSON[_0x0a9e('0x24')](_0x5640eb));});}}function getEndUser(_0x3bfce8,_0x3cae,_0x533942,_0x1dbf74){logger[_0x0a9e('0x18')](_0x0a9e('0x3a'),_0x533942);return request({'method':'GET','uri':util['format'](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'qs':{'operation':'query','username':_0x3bfce8[_0x0a9e('0x21')],'sessionName':_0x1dbf74[_0x0a9e('0x22')],'query':util[_0x0a9e('0x1e')](_0x0a9e('0x3c'),_0x533942,_0x533942,_0x533942,_0x533942,_0x533942)},'json':!![]})['then'](function(_0x5a594b){if(_0x5a594b[_0x0a9e('0x31')]&&_0x5a594b[_0x0a9e('0x26')]['length']){logger[_0x0a9e('0x18')](_0x0a9e('0x3d'));return BPromise[_0x0a9e('0x32')]({'id':_0x5a594b['result'][0x0]['id'],'name':_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3e')]+'\x20'+_0x5a594b[_0x0a9e('0x26')][0x0][_0x0a9e('0x3f')],'phone':_0x533942});}else{logger[_0x0a9e('0x18')](_0x0a9e('0x40'));return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0x3bfce8[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x20'),'sessionName':_0x1dbf74[_0x0a9e('0x22')],'elementType':_0x0a9e('0x41'),'element':JSON[_0x0a9e('0x24')]({'lastname':_0x3cae,'phone':_0x533942,'assigned_user_id':'\x20'})},'json':!![]})[_0x0a9e('0x25')](function(_0x4d04c8){logger['info'](_0x0a9e('0x42'));return BPromise[_0x0a9e('0x32')]({'id':_0x4d04c8[_0x0a9e('0x26')]['id'],'name':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x3f')],'phone':_0x4d04c8[_0x0a9e('0x26')][_0x0a9e('0x43')]});})[_0x0a9e('0x28')](function(_0x432fcc){var _0x25c6e6=_0x432fcc[_0x0a9e('0x38')]||0x1f4;logger[_0x0a9e('0x29')]('[vTiger],\x20%s,\x20%s,\x20%s',_0x0a9e('0x44'),_0x25c6e6,JSON[_0x0a9e('0x24')](_0x432fcc));});}});}function getConnection(_0xdd268f){var _0xfbd5ad=_0xdd268f[_0x0a9e('0x21')];var _0xbe9d19=_0xdd268f[_0x0a9e('0x45')];return request({'method':_0x0a9e('0x2e'),'uri':util['format'](_0x0a9e('0x1f'),_0xdd268f['remoteUri']),'qs':{'operation':_0x0a9e('0x46'),'username':_0xfbd5ad},'json':!![]})[_0x0a9e('0x25')](function(_0x8d6dd1){if(_0x8d6dd1['success']){return request({'method':_0x0a9e('0x1d'),'uri':util[_0x0a9e('0x1e')](_0x0a9e('0x1f'),_0xdd268f[_0x0a9e('0x3b')]),'form':{'operation':_0x0a9e('0x47'),'username':_0xfbd5ad,'accessKey':md5(_0x8d6dd1[_0x0a9e('0x26')][_0x0a9e('0x48')]+_0xbe9d19)},'json':!![]});}})['then'](function(_0x13f44d){if(_0x13f44d[_0x0a9e('0x31')]){return BPromise[_0x0a9e('0x32')](_0x13f44d[_0x0a9e('0x26')]);}else{throw new Error(util[_0x0a9e('0x1e')](_0x0a9e('0x49'),_0xdd268f['id']));}})[_0x0a9e('0x28')](function(_0x19383e){var _0x34febd=_0x19383e['statusCode']||0x1f4;logger[_0x0a9e('0x29')](_0x0a9e('0x2a'),'getConnection',_0x34febd,JSON['stringify'](_0x19383e));});}function request(_0x5ddf84){logger[_0x0a9e('0x18')](_0x0a9e('0x4a'),JSON[_0x0a9e('0x24')](_0x5ddf84));return rp(_0x5ddf84);}exports[_0x0a9e('0x4b')]=function(_0x61bb17,_0x30decb,_0x2e5165,_0x375c18,_0x5d38ae,_0x4b1b9f){var _0x53975a,_0x39d77d,_0x204173,_0x14d602;_0x4b1b9f['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x4b1b9f[_0x0a9e('0x3b')]);if(_0x5d38ae&&_0x5d38ae['monitor_format']){logger['info'](_0x0a9e('0x4d'),'Recording\x20is\x20enabled!');_0x30decb[_0x0a9e('0x4e')]=util['format'](_0x0a9e('0x4f'),_0x4b1b9f[_0x0a9e('0x50')],_0x30decb[_0x0a9e('0x51')],md5(_0x30decb['uniqueid']));}else{_0x30decb[_0x0a9e('0x4e')]='';}return getConnection(_0x4b1b9f)[_0x0a9e('0x25')](function(_0x508b47){_0x14d602=_0x508b47;return getUser(_0x4b1b9f,_0x375c18['email'],_0x14d602);})[_0x0a9e('0x25')](function(_0x3aedd0){_0x53975a=_0x3aedd0;logger['info'](_0x0a9e('0x52'),_0x53975a['id']);return getEndUser(_0x4b1b9f,_0x30decb['calleridname'],_0x30decb[_0x0a9e('0x53')],_0x14d602);})['then'](function(_0xe22ccc){_0x39d77d=_0xe22ccc;logger['info']('The\x20Enduser\x20ID\x20is:',_0x39d77d['id']);return createTicket(_0x4b1b9f,_0x53975a,_0x39d77d,_0x2e5165,_0x30decb,_0x2e5165['Fields'],_0x14d602);})[_0x0a9e('0x25')](function(_0x47de4c){_0x204173=_0x47de4c;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x204173['id']);var _0x232830=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x4b1b9f[_0x0a9e('0x3b')],_['split'](_0x204173['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x4d'),_0x0a9e('0x57'));emit(util[_0x0a9e('0x1e')](_0x0a9e('0x58'),_0x375c18[_0x0a9e('0x16')]),'trigger:browser:url',{'uri':_0x232830});})[_0x0a9e('0x28')](function(_0x26bc80){logger['error'](_0x0a9e('0x4d'),JSON['stringify'](_0x26bc80));});};exports[_0x0a9e('0x59')]=function(_0x5ba1f9,_0x4b3c1a,_0x5674ee,_0x273cb5,_0x49d231,_0x2244d6,_0x1fc70e){var _0x261adb,_0x7be420,_0x1cca9f,_0x26d7db;_0x2244d6['remoteUri']=intUtil[_0x0a9e('0x4c')](_0x2244d6['remoteUri']);_0x2244d6[_0x0a9e('0x50')]=intUtil[_0x0a9e('0x4c')](_0x2244d6[_0x0a9e('0x50')]);if(_0x1fc70e&&_0x1fc70e['recordingFormat']&&_0x1fc70e[_0x0a9e('0x5a')]!==_0x0a9e('0x5b')){logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),'Recording\x20is\x20enabled!');_0x4b3c1a[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2244d6[_0x0a9e('0x50')],_0x4b3c1a[_0x0a9e('0x51')],md5(_0x4b3c1a[_0x0a9e('0x51')]));}return getConnection(_0x2244d6)[_0x0a9e('0x25')](function(_0x401837){_0x26d7db=_0x401837;return getUser(_0x2244d6,_0x273cb5['email'],_0x26d7db);})[_0x0a9e('0x25')](function(_0x2937e0){_0x261adb=_0x2937e0;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x261adb['id']);return getEndUser(_0x2244d6,_0x4b3c1a[_0x0a9e('0x5d')],_0x4b3c1a['destcalleridnum'],_0x26d7db);})['then'](function(_0x242745){_0x7be420=_0x242745;logger[_0x0a9e('0x18')](_0x0a9e('0x5e'),_0x7be420['id']);return createTicket(_0x2244d6,_0x261adb,_0x7be420,_0x5674ee,_0x4b3c1a,_0x5674ee[_0x0a9e('0x5f')],_0x26d7db);})[_0x0a9e('0x25')](function(_0xc8c264){_0x1cca9f=_0xc8c264;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1cca9f['id']);var _0x2e89b7=util[_0x0a9e('0x1e')](_0x0a9e('0x56'),_0x2244d6[_0x0a9e('0x3b')],_[_0x0a9e('0x60')](_0x1cca9f['id'],'x')[0x1]);logger[_0x0a9e('0x18')](_0x0a9e('0x5c'),_0x0a9e('0x57'));emit(util['format'](_0x0a9e('0x58'),_0x273cb5[_0x0a9e('0x16')]),_0x0a9e('0x61'),{'uri':_0x2e89b7});})['catch'](function(_0x1148a1){logger[_0x0a9e('0x29')]('[OUTBOUND]',JSON[_0x0a9e('0x24')](_0x1148a1));});};exports[_0x0a9e('0x62')]=function(_0x3ef315,_0x427946,_0x13b5c0,_0x4a43a8,_0x50cdce,_0x4a2438){var _0x40fb85,_0x18bf5d,_0x1104ad,_0x23a7d3;_0x4a2438[_0x0a9e('0x3b')]=intUtil[_0x0a9e('0x4c')](_0x4a2438[_0x0a9e('0x3b')]);_0x4a2438[_0x0a9e('0x50')]=intUtil['stripTrailingSlash'](_0x4a2438[_0x0a9e('0x50')]);if(_0x50cdce&&_0x50cdce[_0x0a9e('0x63')]){logger[_0x0a9e('0x18')]('['+_0x427946['lastevent'][_0x0a9e('0x64')]()+']','Recording\x20is\x20enabled!');_0x427946[_0x0a9e('0x4e')]=util[_0x0a9e('0x1e')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4a2438[_0x0a9e('0x50')],_0x427946[_0x0a9e('0x51')],md5(_0x427946[_0x0a9e('0x51')]));}else{_0x427946[_0x0a9e('0x4e')]='';}return getConnection(_0x4a2438)['then'](function(_0x1d442c){_0x23a7d3=_0x1d442c;return getUser(_0x4a2438,'',_0x23a7d3);})[_0x0a9e('0x25')](function(_0x371533){_0x40fb85=_0x371533;logger[_0x0a9e('0x18')]('The\x20User\x20ID\x20is:',_0x40fb85['id']);return getEndUser(_0x4a2438,_0x427946[_0x0a9e('0x65')],_0x427946[_0x0a9e('0x53')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0x361b21){_0x18bf5d=_0x361b21;logger['info'](_0x0a9e('0x5e'),_0x18bf5d['id']);return createTicket(_0x4a2438,_0x40fb85,_0x18bf5d,_0x13b5c0,_0x427946,_0x13b5c0[_0x0a9e('0x5f')],_0x23a7d3);})[_0x0a9e('0x25')](function(_0xf410e5){_0x1104ad=_0xf410e5;logger[_0x0a9e('0x18')](_0x0a9e('0x54'));logger[_0x0a9e('0x18')](_0x0a9e('0x55'),_0x1104ad['id']);})[_0x0a9e('0x28')](function(_0x336dc3){logger[_0x0a9e('0x29')]('['+_0x427946[_0x0a9e('0x66')][_0x0a9e('0x64')]()+']',JSON[_0x0a9e('0x24')](_0x336dc3));});};
\ No newline at end of file
index 1d9c2ff..7ef9c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c13=['%s:%s','authType','token','%s/token:%s','Basic\x20%s','toString','base64','debug','GET','map','forEach','picklist','type','nameField','customField','custom_fields','push','idField','content','variable','variableName','Variable','toLowerCase','queue','stripTrailingSlash','serverUrl','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','replace','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','none','[OUTBOUND]','Recording\x20is\x20enabled!','The\x20User\x20ID\x20is:','destcalleridnum','%s/agent/tickets/%s','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','ioredis','./util','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','Subjects','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','count','Agent\x20found!','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','%s/search.json','length','filter','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Enduser\x20created.','password'];(function(_0x38ee11,_0x3e776c){var _0x50364e=function(_0x1aeaf4){while(--_0x1aeaf4){_0x38ee11['push'](_0x38ee11['shift']());}};_0x50364e(++_0x3e776c);}(_0x9c13,0xa6));var _0x39c1=function(_0x11946c,_0x12152c){_0x11946c=_0x11946c-0x0;var _0x383935=_0x9c13[_0x11946c];return _0x383935;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require('md5');var util=require('util');var Redis=require(_0x39c1('0x0'));var intUtil=require(_0x39c1('0x1'));var config=require('../../../../config/environment');var logger=require(_0x39c1('0x2'))(_0x39c1('0x3'));config[_0x39c1('0x4')]=_[_0x39c1('0x5')](config[_0x39c1('0x4')],{'host':_0x39c1('0x6'),'port':0x18eb});var io=require(_0x39c1('0x7'))(new Redis(config[_0x39c1('0x4')]));function emit(_0x523b9e,_0x50a5cf,_0x14e947){io['to'](_0x523b9e)['emit'](_0x50a5cf,_0x14e947);}var headers={'Content-Type':_0x39c1('0x8'),'Accept':_0x39c1('0x8')};function getTicket(_0xd87175,_0x317bfd,_0x3f46ee,_0x503571,_0x20ce6e){logger[_0x39c1('0x9')](_0x39c1('0xa'));return request({'uri':util[_0x39c1('0xb')](_0x39c1('0xc'),_0xd87175[_0x39c1('0xd')]),'method':_0x39c1('0xe'),'body':{'ticket':_[_0x39c1('0xf')]({'requester_id':_0x3f46ee['id'],'submitter_id':_0x317bfd?_0x317bfd['id']:undefined,'assignee_id':_0x317bfd?_0x317bfd['id']:undefined,'tags':getTags(_0x503571[_0x39c1('0x10')],_0x39c1('0x11')),'subject':intUtil['getString'](_0x503571[_0x39c1('0x12')],_0x20ce6e,'\x20'),'description':intUtil[_0x39c1('0x13')](_0x503571[_0x39c1('0x14')],_0x20ce6e,'\x0a'),'comment':{'public':![],'body':intUtil[_0x39c1('0x13')](_0x503571[_0x39c1('0x14')],_0x20ce6e,'\x0a')}},getCustomFields(_0x503571[_0x39c1('0x15')],_0x20ce6e))}})[_0x39c1('0x16')](function(_0x3dc1b5){logger[_0x39c1('0x9')](_0x39c1('0x17'));return _0x3dc1b5[_0x39c1('0x18')];});}function getUser(_0x133b6d,_0x59e377){if(intUtil[_0x39c1('0x19')](_0x59e377)){logger['info'](_0x39c1('0x1a'),_0x59e377);return request({'uri':util[_0x39c1('0xb')]('%s/search.json',_0x133b6d[_0x39c1('0xd')]),'qs':{'query':util[_0x39c1('0xb')](_0x39c1('0x1b'),_0x59e377)}})[_0x39c1('0x16')](function(_0x58460d){if(_0x58460d[_0x39c1('0x1c')]){logger['info'](_0x39c1('0x1d'));return _['find'](_0x58460d[_0x39c1('0x1e')],{'email':_0x59e377,'role':_0x39c1('0x1f')});}else{logger[_0x39c1('0x9')](_0x39c1('0x20'));return request({'uri':util['format'](_0x39c1('0x21'),_0x133b6d['remoteUri'])})[_0x39c1('0x16')](function(_0x11e2d5){logger[_0x39c1('0x9')](_0x39c1('0x22'));return _0x11e2d5['user'];});}});}else{logger[_0x39c1('0x9')](_0x39c1('0x20'));return request({'uri':util[_0x39c1('0xb')]('%s/users/me.json',_0x133b6d[_0x39c1('0xd')])})[_0x39c1('0x16')](function(_0x121725){logger['info'](_0x39c1('0x22'));return _0x121725[_0x39c1('0x23')];});}}function getEndUser(_0x1b1215,_0x364ce1,_0x378689){logger[_0x39c1('0x9')](_0x39c1('0x24'),_0x378689);return request({'uri':util['format'](_0x39c1('0x25'),_0x1b1215['remoteUri']),'qs':{'query':util['format']('type:user\x20role:end-user\x20phone:%s',_0x378689)}})['then'](function(_0x2e9a1c){var _0x244567;if(_0x2e9a1c[_0x39c1('0x1e')][_0x39c1('0x26')]){_0x2e9a1c['results']=_[_0x39c1('0x27')](_0x2e9a1c[_0x39c1('0x1e')],{'suspended':![],'role':'end-user'});if(_0x2e9a1c[_0x39c1('0x1e')][_0x39c1('0x26')]){_0x244567=_[_0x39c1('0x28')](_0x2e9a1c[_0x39c1('0x1e')]);}}if(_0x244567){logger[_0x39c1('0x9')](_0x39c1('0x29'));return _0x244567;}else{logger[_0x39c1('0x9')](_0x39c1('0x2a'));return request({'uri':util[_0x39c1('0xb')](_0x39c1('0x2b'),_0x1b1215['remoteUri']),'method':_0x39c1('0xe'),'body':{'user':{'role':'end-user','name':util[_0x39c1('0xb')]('Caller\x20-\x20%s',_0x364ce1||_0x378689),'phone':_0x378689}}})[_0x39c1('0x16')](function(_0x32f746){logger['info'](_0x39c1('0x2c'));return _0x32f746[_0x39c1('0x23')];});}});}function getAuth(_0x2a0935){var _0x367bca;if(_0x2a0935['authType']===_0x39c1('0x2d')){_0x367bca=util[_0x39c1('0xb')](_0x39c1('0x2e'),_0x2a0935['username'],_0x2a0935[_0x39c1('0x2d')]);}else if(_0x2a0935[_0x39c1('0x2f')]===_0x39c1('0x30')){_0x367bca=util[_0x39c1('0xb')](_0x39c1('0x31'),_0x2a0935['username'],_0x2a0935[_0x39c1('0x30')]);}return util[_0x39c1('0xb')](_0x39c1('0x32'),new Buffer(_0x367bca)[_0x39c1('0x33')](_0x39c1('0x34')));}function request(_0x14b983){logger[_0x39c1('0x35')]('[HTTP]',JSON['stringify'](_0x14b983));return rp(_[_0x39c1('0x5')](_0x14b983,{'method':_0x39c1('0x36'),'headers':headers,'json':!![]}));}function getTags(_0xfbcca5,_0x31c06a){var _0x1b5d17=[];if(_0xfbcca5&&_0xfbcca5['length']>0x0){_0x1b5d17=_[_0x39c1('0x37')](_0xfbcca5,_0x31c06a);}return _0x1b5d17;}function getCustomFields(_0x246fe9,_0x3effb4){var _0x496368=[];var _0x515178={'custom_fields':[]};if(_0x246fe9['length']>0x0){_[_0x39c1('0x38')](_0x246fe9,function(_0x19d6eb){if(_['includes'](['string',_0x39c1('0x39')],_0x19d6eb[_0x39c1('0x3a')])&&_0x19d6eb[_0x39c1('0x3b')]&&!_0x19d6eb[_0x39c1('0x3c')]){_0x515178[_0x19d6eb[_0x39c1('0x3b')]['toLowerCase']()]=_0x19d6eb['content'][_0x39c1('0x33')]();}else if(_['includes'](['string',_0x39c1('0x39')],_0x19d6eb[_0x39c1('0x3a')])&&_0x19d6eb['idField']&&_0x19d6eb['customField']){_0x515178[_0x39c1('0x3d')][_0x39c1('0x3e')]({'id':_0x19d6eb[_0x39c1('0x3f')],'value':_0x19d6eb[_0x39c1('0x40')][_0x39c1('0x33')]()});}else if(_0x19d6eb[_0x39c1('0x3a')]===_0x39c1('0x41')&&_0x19d6eb['variableName']&&_0x19d6eb[_0x39c1('0x3f')]&&_0x19d6eb[_0x39c1('0x3c')]){_0x3effb4[_0x19d6eb[_0x39c1('0x42')]]&&_0x515178[_0x39c1('0x3d')][_0x39c1('0x3e')]({'id':_0x19d6eb[_0x39c1('0x3f')],'value':_0x3effb4[_0x19d6eb[_0x39c1('0x42')]][_0x39c1('0x33')]()});}else if(_0x19d6eb[_0x39c1('0x3a')]==='customVariable'&&_0x19d6eb[_0x39c1('0x43')]&&_0x19d6eb['Variable'][_0x39c1('0x11')]&&_0x19d6eb['idField']&&_0x19d6eb[_0x39c1('0x3c')]){_0x3effb4[_0x19d6eb[_0x39c1('0x43')]['name'][_0x39c1('0x44')]()]&&_0x515178[_0x39c1('0x3d')]['push']({'id':_0x19d6eb[_0x39c1('0x3f')],'value':_0x3effb4[_0x19d6eb[_0x39c1('0x43')][_0x39c1('0x11')]['toLowerCase']()][_0x39c1('0x33')]()});}});}return _0x515178;}exports[_0x39c1('0x45')]=function(_0x1c6a84,_0xc089c6,_0x9356c7,_0x351e75,_0x576e7f,_0x164d8f){var _0x178066,_0x40064c;_0x164d8f[_0x39c1('0xd')]=intUtil[_0x39c1('0x46')](_0x164d8f[_0x39c1('0xd')]);_0x164d8f[_0x39c1('0x47')]=intUtil['stripTrailingSlash'](_0x164d8f[_0x39c1('0x47')]);if(_0x576e7f&&_0x576e7f[_0x39c1('0x48')]){logger[_0x39c1('0x9')]('[QUEUE]','Recording\x20is\x20enabled!');_0xc089c6['recordingURL']=util[_0x39c1('0xb')](_0x39c1('0x49'),_0x164d8f[_0x39c1('0x47')],_0xc089c6[_0x39c1('0x4a')],md5(_0xc089c6[_0x39c1('0x4a')]));}else{_0xc089c6[_0x39c1('0x4b')]='';}headers[_0x39c1('0x4c')]=getAuth(_0x164d8f);return getUser(_0x164d8f,_0x351e75['email'])[_0x39c1('0x16')](function(_0x446e92){_0x178066=_0x446e92;logger[_0x39c1('0x9')]('The\x20User\x20ID\x20is:',_0x178066['id']);return getEndUser(_0x164d8f,_0xc089c6[_0x39c1('0x4d')],_0xc089c6['calleridnum']);})[_0x39c1('0x16')](function(_0x5f9349){_0x40064c=_0x5f9349;logger[_0x39c1('0x9')](_0x39c1('0x4e'),_0x40064c['id']);return getTicket(_0x164d8f,_0x178066,_0x40064c,_0x9356c7,_0xc089c6);})[_0x39c1('0x16')](function(_0x39d9ac){if(_0x39d9ac){logger['info'](_0x39c1('0x4f'),_0x39d9ac['id']);switch(_0x164d8f[_0x39c1('0x3a')]){case'integrationTab':logger[_0x39c1('0x9')](_0x39c1('0x50'),_0x39c1('0x51'));return request({'uri':util[_0x39c1('0xb')](_0x39c1('0x52'),_0x164d8f['remoteUri'],_0x178066['id'],_0x39d9ac['id']),'method':_0x39c1('0xe')});case _0x39c1('0x53'):logger[_0x39c1('0x9')]('[QUEUE]',_0x39c1('0x54'));emit(util['format']('user:%s',_0x351e75[_0x39c1('0x11')]),_0x39c1('0x55'),{'uri':util['format']('%s/agent/tickets/%s',_0x164d8f[_0x39c1('0xd')][_0x39c1('0x56')](_0x39c1('0x57'),''),_0x39d9ac['id'])});break;default:logger[_0x39c1('0x58')](_0x39c1('0x50'),_0x39c1('0x59'));}}})[_0x39c1('0x5a')](function(_0x3e977b){logger[_0x39c1('0x58')](_0x39c1('0x5b'),util[_0x39c1('0x5c')](_0x3e977b,{'showHidden':!![],'depth':null}));});};exports[_0x39c1('0x5d')]=function(_0x87b994,_0x11cce8,_0x2a5eb1,_0x4ac7e6,_0x29a54b,_0x1eaa90,_0x37a3a0){var _0x4a5fc3,_0x352e8e;_0x1eaa90[_0x39c1('0xd')]=intUtil[_0x39c1('0x46')](_0x1eaa90['remoteUri']);_0x1eaa90[_0x39c1('0x47')]=intUtil[_0x39c1('0x46')](_0x1eaa90[_0x39c1('0x47')]);if(_0x37a3a0&&_0x37a3a0['recordingFormat']&&_0x37a3a0['recordingFormat']!==_0x39c1('0x5e')){logger[_0x39c1('0x9')](_0x39c1('0x5f'),_0x39c1('0x60'));_0x11cce8['recordingURL']=util[_0x39c1('0xb')](_0x39c1('0x49'),_0x1eaa90['serverUrl'],_0x11cce8[_0x39c1('0x4a')],md5(_0x11cce8[_0x39c1('0x4a')]));}headers[_0x39c1('0x4c')]=getAuth(_0x1eaa90);return getUser(_0x1eaa90,_0x4ac7e6['email'])[_0x39c1('0x16')](function(_0x598352){_0x4a5fc3=_0x598352;logger[_0x39c1('0x9')](_0x39c1('0x61'),_0x4a5fc3['id']);return getEndUser(_0x1eaa90,_0x11cce8['destcalleridname'],_0x11cce8[_0x39c1('0x62')]);})['then'](function(_0x254c4b){_0x352e8e=_0x254c4b;logger[_0x39c1('0x9')](_0x39c1('0x4e'),_0x352e8e['id']);return getTicket(_0x1eaa90,_0x4a5fc3,_0x352e8e,_0x2a5eb1,_0x11cce8);})['then'](function(_0x2dda75){if(_0x2dda75){logger['info']('The\x20Ticket\x20ID\x20is:',_0x2dda75['id']);switch(_0x1eaa90[_0x39c1('0x3a')]){case'integrationTab':logger[_0x39c1('0x9')](_0x39c1('0x5f'),_0x39c1('0x51'));return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x1eaa90['remoteUri'],_0x4a5fc3['id'],_0x2dda75['id']),'method':_0x39c1('0xe')});case _0x39c1('0x53'):logger[_0x39c1('0x9')](_0x39c1('0x5f'),_0x39c1('0x54'));emit(util[_0x39c1('0xb')]('user:%s',_0x4ac7e6[_0x39c1('0x11')]),_0x39c1('0x55'),{'uri':util[_0x39c1('0xb')](_0x39c1('0x63'),_0x1eaa90['remoteUri'][_0x39c1('0x56')](_0x39c1('0x57'),''),_0x2dda75['id'])});break;default:logger['error'](_0x39c1('0x5f'),_0x39c1('0x59'));}}})[_0x39c1('0x5a')](function(_0x53fc31){logger[_0x39c1('0x58')](_0x39c1('0x64'),util[_0x39c1('0x5c')](_0x53fc31,{'showHidden':!![],'depth':null}));});};exports[_0x39c1('0x65')]=function(_0x23227e,_0x1ec8dc,_0x31d1cc,_0x3793c1,_0x31fede,_0x3285e6){var _0x2914a0,_0x2759fa;_0x3285e6[_0x39c1('0xd')]=intUtil['stripTrailingSlash'](_0x3285e6[_0x39c1('0xd')]);_0x3285e6[_0x39c1('0x47')]=intUtil['stripTrailingSlash'](_0x3285e6[_0x39c1('0x47')]);if(_0x31fede&&_0x31fede[_0x39c1('0x48')]){logger[_0x39c1('0x9')]('['+_0x1ec8dc[_0x39c1('0x66')][_0x39c1('0x67')]()+']',_0x39c1('0x60'));_0x1ec8dc[_0x39c1('0x4b')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3285e6[_0x39c1('0x47')],_0x1ec8dc[_0x39c1('0x4a')],md5(_0x1ec8dc[_0x39c1('0x4a')]));}else{_0x1ec8dc['recordingURL']='';}headers['Authorization']=getAuth(_0x3285e6);return getUser(_0x3285e6)[_0x39c1('0x16')](function(_0x47de0c){_0x2914a0=_0x47de0c;logger['info'](_0x39c1('0x61'),_0x2914a0['id']);return getEndUser(_0x3285e6,_0x1ec8dc['calleridname'],_0x1ec8dc[_0x39c1('0x68')]);})[_0x39c1('0x16')](function(_0x991eeb){_0x2759fa=_0x991eeb;logger[_0x39c1('0x9')]('The\x20Enduser\x20ID\x20is:',_0x2759fa['id']);return getTicket(_0x3285e6,_0x2914a0,_0x2759fa,_0x31d1cc,_0x1ec8dc);})[_0x39c1('0x16')](function(_0x3d56a0){if(_0x3d56a0){logger['info'](_0x39c1('0x4f'),_0x3d56a0['id']);}})[_0x39c1('0x5a')](function(_0x101ff9){logger[_0x39c1('0x58')]('['+_0x1ec8dc[_0x39c1('0x66')][_0x39c1('0x67')]()+']'+_0x39c1('0x69'),util[_0x39c1('0x5c')](_0x101ff9,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xa107=['then','Ticket\x20created!','validateEmail','Getting\x20agent\x20with\x20email','format','%s/search.json','count','find','results','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','token','%s/token:%s','Basic\x20%s','toString','base64','debug','stringify','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variable','variableName','custom_fields','customVariable','Variable','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','[QUEUE]','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','error','Zendesk\x20account\x20type\x20not\x20recognized','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','replace','catch','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridnum','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','defaults','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','%s/tickets.json','remoteUri','POST','Tags','name','getString','Subjects','Descriptions','Fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa107,0x1be));var _0x7a10=function(_0x1d3e56,_0x1b900a){_0x1d3e56=_0x1d3e56-0x0;var _0x16fa4f=_0xa107[_0x1d3e56];return _0x16fa4f;};'use strict';var _=require(_0x7a10('0x0'));var rp=require(_0x7a10('0x1'));var md5=require(_0x7a10('0x2'));var util=require(_0x7a10('0x3'));var Redis=require(_0x7a10('0x4'));var intUtil=require(_0x7a10('0x5'));var config=require(_0x7a10('0x6'));var logger=require(_0x7a10('0x7'))(_0x7a10('0x8'));config['redis']=_[_0x7a10('0x9')](config[_0x7a10('0xa')],{'host':_0x7a10('0xb'),'port':0x18eb});var io=require(_0x7a10('0xc'))(new Redis(config[_0x7a10('0xa')]));function emit(_0x25ce30,_0x329ef0,_0x11a7e9){io['to'](_0x25ce30)[_0x7a10('0xd')](_0x329ef0,_0x11a7e9);}var headers={'Content-Type':_0x7a10('0xe'),'Accept':_0x7a10('0xe')};function getTicket(_0x5c0d7b,_0x2101d6,_0x4ec1fd,_0x3ff4cb,_0xe26eb){logger[_0x7a10('0xf')](_0x7a10('0x10'));return request({'uri':util['format'](_0x7a10('0x11'),_0x5c0d7b[_0x7a10('0x12')]),'method':_0x7a10('0x13'),'body':{'ticket':_['merge']({'requester_id':_0x4ec1fd['id'],'submitter_id':_0x2101d6?_0x2101d6['id']:undefined,'assignee_id':_0x2101d6?_0x2101d6['id']:undefined,'tags':getTags(_0x3ff4cb[_0x7a10('0x14')],_0x7a10('0x15')),'subject':intUtil[_0x7a10('0x16')](_0x3ff4cb[_0x7a10('0x17')],_0xe26eb,'\x20'),'description':intUtil['getString'](_0x3ff4cb[_0x7a10('0x18')],_0xe26eb,'\x0a'),'comment':{'public':![],'body':intUtil[_0x7a10('0x16')](_0x3ff4cb[_0x7a10('0x18')],_0xe26eb,'\x0a')}},getCustomFields(_0x3ff4cb[_0x7a10('0x19')],_0xe26eb))}})[_0x7a10('0x1a')](function(_0x3def14){logger['info'](_0x7a10('0x1b'));return _0x3def14['ticket'];});}function getUser(_0x75bfc1,_0x2b16e0){if(intUtil[_0x7a10('0x1c')](_0x2b16e0)){logger['info'](_0x7a10('0x1d'),_0x2b16e0);return request({'uri':util[_0x7a10('0x1e')](_0x7a10('0x1f'),_0x75bfc1[_0x7a10('0x12')]),'qs':{'query':util[_0x7a10('0x1e')]('type:user\x20role:agent\x20email:%s',_0x2b16e0)}})[_0x7a10('0x1a')](function(_0x33a43b){if(_0x33a43b[_0x7a10('0x20')]){logger['info']('Agent\x20found!');return _[_0x7a10('0x21')](_0x33a43b[_0x7a10('0x22')],{'email':_0x2b16e0,'role':_0x7a10('0x23')});}else{logger['info'](_0x7a10('0x24'));return request({'uri':util['format'](_0x7a10('0x25'),_0x75bfc1['remoteUri'])})['then'](function(_0x27cce9){logger[_0x7a10('0xf')](_0x7a10('0x26'));return _0x27cce9[_0x7a10('0x27')];});}});}else{logger[_0x7a10('0xf')](_0x7a10('0x24'));return request({'uri':util[_0x7a10('0x1e')](_0x7a10('0x25'),_0x75bfc1[_0x7a10('0x12')])})['then'](function(_0xe002f0){logger[_0x7a10('0xf')](_0x7a10('0x26'));return _0xe002f0['user'];});}}function getEndUser(_0x50338b,_0xa38bf0,_0x2e7371){logger['info'](_0x7a10('0x28'),_0x2e7371);return request({'uri':util['format'](_0x7a10('0x1f'),_0x50338b['remoteUri']),'qs':{'query':util[_0x7a10('0x1e')](_0x7a10('0x29'),_0x2e7371)}})[_0x7a10('0x1a')](function(_0x1e6862){var _0x1aa8d0;if(_0x1e6862[_0x7a10('0x22')]['length']){_0x1e6862[_0x7a10('0x22')]=_[_0x7a10('0x2a')](_0x1e6862[_0x7a10('0x22')],{'suspended':![],'role':_0x7a10('0x2b')});if(_0x1e6862[_0x7a10('0x22')][_0x7a10('0x2c')]){_0x1aa8d0=_[_0x7a10('0x2d')](_0x1e6862[_0x7a10('0x22')]);}}if(_0x1aa8d0){logger[_0x7a10('0xf')](_0x7a10('0x2e'));return _0x1aa8d0;}else{logger[_0x7a10('0xf')](_0x7a10('0x2f'));return request({'uri':util[_0x7a10('0x1e')]('%s/users.json',_0x50338b['remoteUri']),'method':_0x7a10('0x13'),'body':{'user':{'role':_0x7a10('0x2b'),'name':util[_0x7a10('0x1e')](_0x7a10('0x30'),_0xa38bf0||_0x2e7371),'phone':_0x2e7371}}})[_0x7a10('0x1a')](function(_0x37b841){logger[_0x7a10('0xf')](_0x7a10('0x31'));return _0x37b841['user'];});}});}function getAuth(_0x5c3ec3){var _0x46675f;if(_0x5c3ec3[_0x7a10('0x32')]===_0x7a10('0x33')){_0x46675f=util[_0x7a10('0x1e')](_0x7a10('0x34'),_0x5c3ec3['username'],_0x5c3ec3[_0x7a10('0x33')]);}else if(_0x5c3ec3[_0x7a10('0x32')]===_0x7a10('0x35')){_0x46675f=util[_0x7a10('0x1e')](_0x7a10('0x36'),_0x5c3ec3['username'],_0x5c3ec3[_0x7a10('0x35')]);}return util[_0x7a10('0x1e')](_0x7a10('0x37'),new Buffer(_0x46675f)[_0x7a10('0x38')](_0x7a10('0x39')));}function request(_0xa88999){logger[_0x7a10('0x3a')]('[HTTP]',JSON[_0x7a10('0x3b')](_0xa88999));return rp(_[_0x7a10('0x9')](_0xa88999,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x14c1e9,_0x1f87bd){var _0x32b5f7=[];if(_0x14c1e9&&_0x14c1e9[_0x7a10('0x2c')]>0x0){_0x32b5f7=_[_0x7a10('0x3c')](_0x14c1e9,_0x1f87bd);}return _0x32b5f7;}function getCustomFields(_0x48bc35,_0x1ea837){var _0x23678a=[];var _0x88eb06={'custom_fields':[]};if(_0x48bc35[_0x7a10('0x2c')]>0x0){_[_0x7a10('0x3d')](_0x48bc35,function(_0x1e5931){if(_[_0x7a10('0x3e')]([_0x7a10('0x3f'),_0x7a10('0x40')],_0x1e5931[_0x7a10('0x41')])&&_0x1e5931[_0x7a10('0x42')]&&!_0x1e5931[_0x7a10('0x43')]){_0x88eb06[_0x1e5931['nameField'][_0x7a10('0x44')]()]=_0x1e5931[_0x7a10('0x45')][_0x7a10('0x38')]();}else if(_[_0x7a10('0x3e')](['string',_0x7a10('0x40')],_0x1e5931[_0x7a10('0x41')])&&_0x1e5931[_0x7a10('0x46')]&&_0x1e5931['customField']){_0x88eb06['custom_fields'][_0x7a10('0x47')]({'id':_0x1e5931[_0x7a10('0x46')],'value':_0x1e5931[_0x7a10('0x45')]['toString']()});}else if(_0x1e5931[_0x7a10('0x41')]===_0x7a10('0x48')&&_0x1e5931[_0x7a10('0x49')]&&_0x1e5931[_0x7a10('0x46')]&&_0x1e5931[_0x7a10('0x43')]){_0x1ea837[_0x1e5931[_0x7a10('0x49')]]&&_0x88eb06[_0x7a10('0x4a')][_0x7a10('0x47')]({'id':_0x1e5931['idField'],'value':_0x1ea837[_0x1e5931[_0x7a10('0x49')]]['toString']()});}else if(_0x1e5931[_0x7a10('0x41')]===_0x7a10('0x4b')&&_0x1e5931['Variable']&&_0x1e5931['Variable']['name']&&_0x1e5931[_0x7a10('0x46')]&&_0x1e5931[_0x7a10('0x43')]){_0x1ea837[_0x1e5931['Variable']['name'][_0x7a10('0x44')]()]&&_0x88eb06[_0x7a10('0x4a')][_0x7a10('0x47')]({'id':_0x1e5931[_0x7a10('0x46')],'value':_0x1ea837[_0x1e5931[_0x7a10('0x4c')][_0x7a10('0x15')][_0x7a10('0x44')]()][_0x7a10('0x38')]()});}});}return _0x88eb06;}exports['queue']=function(_0x157735,_0x4e163a,_0x2a6b8a,_0x16f660,_0x5dcc9b,_0x45aa09){var _0x4023ee,_0x2d9f95;_0x45aa09[_0x7a10('0x12')]=intUtil[_0x7a10('0x4d')](_0x45aa09[_0x7a10('0x12')]);_0x45aa09[_0x7a10('0x4e')]=intUtil[_0x7a10('0x4d')](_0x45aa09['serverUrl']);if(_0x5dcc9b&&_0x5dcc9b[_0x7a10('0x4f')]){logger[_0x7a10('0xf')]('[QUEUE]',_0x7a10('0x50'));_0x4e163a[_0x7a10('0x51')]=util['format'](_0x7a10('0x52'),_0x45aa09['serverUrl'],_0x4e163a['uniqueid'],md5(_0x4e163a['uniqueid']));}else{_0x4e163a[_0x7a10('0x51')]='';}headers[_0x7a10('0x53')]=getAuth(_0x45aa09);return getUser(_0x45aa09,_0x16f660[_0x7a10('0x54')])[_0x7a10('0x1a')](function(_0x58bd54){_0x4023ee=_0x58bd54;logger[_0x7a10('0xf')](_0x7a10('0x55'),_0x4023ee['id']);return getEndUser(_0x45aa09,_0x4e163a[_0x7a10('0x56')],_0x4e163a['calleridnum']);})[_0x7a10('0x1a')](function(_0x1ae29f){_0x2d9f95=_0x1ae29f;logger[_0x7a10('0xf')](_0x7a10('0x57'),_0x2d9f95['id']);return getTicket(_0x45aa09,_0x4023ee,_0x2d9f95,_0x2a6b8a,_0x4e163a);})[_0x7a10('0x1a')](function(_0x4b987f){if(_0x4b987f){logger[_0x7a10('0xf')](_0x7a10('0x58'),_0x4b987f['id']);switch(_0x45aa09[_0x7a10('0x41')]){case _0x7a10('0x59'):logger[_0x7a10('0xf')](_0x7a10('0x5a'),_0x7a10('0x5b'));return request({'uri':util[_0x7a10('0x1e')](_0x7a10('0x5c'),_0x45aa09['remoteUri'],_0x4023ee['id'],_0x4b987f['id']),'method':'POST'});case _0x7a10('0x5d'):logger['info'](_0x7a10('0x5a'),_0x7a10('0x5e'));emit(util['format'](_0x7a10('0x5f'),_0x16f660[_0x7a10('0x15')]),_0x7a10('0x60'),{'uri':util[_0x7a10('0x1e')](_0x7a10('0x61'),_0x45aa09[_0x7a10('0x12')]['replace'](_0x7a10('0x62'),''),_0x4b987f['id'])});break;default:logger[_0x7a10('0x63')](_0x7a10('0x5a'),_0x7a10('0x64'));}}})['catch'](function(_0x54ab93){logger[_0x7a10('0x63')](_0x7a10('0x65'),util[_0x7a10('0x66')](_0x54ab93,{'showHidden':!![],'depth':null}));});};exports[_0x7a10('0x67')]=function(_0x15c947,_0x37e033,_0x2c37a1,_0x20f1a7,_0x2abb71,_0x36f7b4,_0x51b021){var _0xa12112,_0x1db284;_0x36f7b4[_0x7a10('0x12')]=intUtil['stripTrailingSlash'](_0x36f7b4['remoteUri']);_0x36f7b4[_0x7a10('0x4e')]=intUtil[_0x7a10('0x4d')](_0x36f7b4[_0x7a10('0x4e')]);if(_0x51b021&&_0x51b021[_0x7a10('0x68')]&&_0x51b021['recordingFormat']!==_0x7a10('0x69')){logger[_0x7a10('0xf')](_0x7a10('0x6a'),'Recording\x20is\x20enabled!');_0x37e033[_0x7a10('0x51')]=util[_0x7a10('0x1e')](_0x7a10('0x52'),_0x36f7b4[_0x7a10('0x4e')],_0x37e033[_0x7a10('0x6b')],md5(_0x37e033['uniqueid']));}headers[_0x7a10('0x53')]=getAuth(_0x36f7b4);return getUser(_0x36f7b4,_0x20f1a7[_0x7a10('0x54')])[_0x7a10('0x1a')](function(_0x2bf474){_0xa12112=_0x2bf474;logger[_0x7a10('0xf')](_0x7a10('0x55'),_0xa12112['id']);return getEndUser(_0x36f7b4,_0x37e033[_0x7a10('0x6c')],_0x37e033[_0x7a10('0x6d')]);})[_0x7a10('0x1a')](function(_0x394152){_0x1db284=_0x394152;logger[_0x7a10('0xf')]('The\x20Enduser\x20ID\x20is:',_0x1db284['id']);return getTicket(_0x36f7b4,_0xa12112,_0x1db284,_0x2c37a1,_0x37e033);})['then'](function(_0x54edbf){if(_0x54edbf){logger[_0x7a10('0xf')]('The\x20Ticket\x20ID\x20is:',_0x54edbf['id']);switch(_0x36f7b4[_0x7a10('0x41')]){case _0x7a10('0x59'):logger[_0x7a10('0xf')](_0x7a10('0x6a'),_0x7a10('0x5b'));return request({'uri':util[_0x7a10('0x1e')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x36f7b4[_0x7a10('0x12')],_0xa12112['id'],_0x54edbf['id']),'method':_0x7a10('0x13')});case _0x7a10('0x5d'):logger[_0x7a10('0xf')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7a10('0x1e')](_0x7a10('0x5f'),_0x20f1a7[_0x7a10('0x15')]),'trigger:browser:url',{'uri':util[_0x7a10('0x1e')](_0x7a10('0x61'),_0x36f7b4[_0x7a10('0x12')][_0x7a10('0x6e')](_0x7a10('0x62'),''),_0x54edbf['id'])});break;default:logger[_0x7a10('0x63')](_0x7a10('0x6a'),_0x7a10('0x64'));}}})[_0x7a10('0x6f')](function(_0x117119){logger[_0x7a10('0x63')](_0x7a10('0x70'),util[_0x7a10('0x66')](_0x117119,{'showHidden':!![],'depth':null}));});};exports[_0x7a10('0x71')]=function(_0x5cb407,_0x309609,_0x37244e,_0x6528a,_0x1be611,_0x304434){var _0x4fb576,_0x5caa9c;_0x304434[_0x7a10('0x12')]=intUtil['stripTrailingSlash'](_0x304434[_0x7a10('0x12')]);_0x304434[_0x7a10('0x4e')]=intUtil[_0x7a10('0x4d')](_0x304434[_0x7a10('0x4e')]);if(_0x1be611&&_0x1be611[_0x7a10('0x4f')]){logger[_0x7a10('0xf')]('['+_0x309609[_0x7a10('0x72')][_0x7a10('0x73')]()+']',_0x7a10('0x50'));_0x309609[_0x7a10('0x51')]=util[_0x7a10('0x1e')](_0x7a10('0x52'),_0x304434['serverUrl'],_0x309609[_0x7a10('0x6b')],md5(_0x309609[_0x7a10('0x6b')]));}else{_0x309609['recordingURL']='';}headers['Authorization']=getAuth(_0x304434);return getUser(_0x304434)[_0x7a10('0x1a')](function(_0xe2b5bf){_0x4fb576=_0xe2b5bf;logger['info'](_0x7a10('0x55'),_0x4fb576['id']);return getEndUser(_0x304434,_0x309609[_0x7a10('0x56')],_0x309609[_0x7a10('0x74')]);})['then'](function(_0x1ee43d){_0x5caa9c=_0x1ee43d;logger[_0x7a10('0xf')](_0x7a10('0x57'),_0x5caa9c['id']);return getTicket(_0x304434,_0x4fb576,_0x5caa9c,_0x37244e,_0x309609);})[_0x7a10('0x1a')](function(_0x526343){if(_0x526343){logger[_0x7a10('0xf')](_0x7a10('0x58'),_0x526343['id']);}})['catch'](function(_0x3587a3){logger[_0x7a10('0x63')]('['+_0x309609[_0x7a10('0x72')][_0x7a10('0x73')]()+']'+_0x7a10('0x75'),util[_0x7a10('0x66')](_0x3587a3,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 28404f5..e071b8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01d3=['Contacts','lead','Creating\x20new\x20call...','Owner','administrator','Subject','getString','Descriptions','enduserType','Who_Id','Full_Name','First_Name','Last_Name','What_Id','talktime','Call_Duration','mm:ss','answertime','endtime','utc','YYYY-MM-DDTHH:mm:ss','diff','lastevent','called','Call_Result','complete','connect','Rejected','abandoned','Abandoned','timeout','outbound','starttime','agentcalledAt','Inbound','Fields','/crm/v2/Calls','details','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','recordingURL','zoho.eu','com','The\x20User\x20ID\x20is:','calleridname','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','destcalleridname','destcalleridnum','Outbound','[OUTBOUND]','unmanaged','calleridnum','toUpperCase','md5','util','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','defaults','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','string','picklist','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','isNil','access_token','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','refreshToken','clientId','clientSecret','refresh_token','then','add','seconds','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','error','catch','data','https://www.zohoapis.','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','SUCCESS','startCase','log','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact'];(function(_0x3671b7,_0x14c171){var _0x55bb16=function(_0x3acb1e){while(--_0x3acb1e){_0x3671b7['push'](_0x3671b7['shift']());}};_0x55bb16(++_0x14c171);}(_0x01d3,0xdb));var _0x301d=function(_0x3c4e2f,_0x58fb74){_0x3c4e2f=_0x3c4e2f-0x0;var _0x598678=_0x01d3[_0x3c4e2f];return _0x598678;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x301d('0x0'));var util=require(_0x301d('0x1'));var intUtil=require(_0x301d('0x2'));var moment=require('moment');var Redis=require(_0x301d('0x3'));var BPromise=require(_0x301d('0x4'));var config=require(_0x301d('0x5'));var logger=require(_0x301d('0x6'))(_0x301d('0x7'));config['redis']=_[_0x301d('0x8')](config[_0x301d('0x9')],{'host':_0x301d('0xa'),'port':0x18eb});var io=require(_0x301d('0xb'))(new Redis(config[_0x301d('0x9')]));function emit(_0x49a253,_0x106c88,_0x1d8e83){io['to'](_0x49a253)[_0x301d('0xc')](_0x106c88,_0x1d8e83);}function request(_0x445d5c){logger[_0x301d('0xd')](_0x301d('0xe'),JSON[_0x301d('0xf')](_0x445d5c));return rp(_0x445d5c);}function getCustomFields(_0x10f53d,_0x107378){var _0x4e6d86={};if(_0x10f53d[_0x301d('0x10')]>0x0){_[_0x301d('0x11')](_0x10f53d,function(_0x53b139){if(_[_0x301d('0x12')]([_0x301d('0x13'),_0x301d('0x14')],_0x53b139[_0x301d('0x15')])&&_0x53b139['idField']){_0x4e6d86[_0x53b139[_0x301d('0x16')]]=_0x53b139[_0x301d('0x17')][_0x301d('0x18')]();}else if(_0x53b139[_0x301d('0x15')]===_0x301d('0x19')&&_0x53b139[_0x301d('0x1a')]&&_0x53b139[_0x301d('0x16')]&&_0x107378[_0x53b139['variableName']]){_0x4e6d86[_0x53b139[_0x301d('0x16')]]=_0x107378[_0x53b139[_0x301d('0x1a')]]['toString']();}else if(_0x53b139[_0x301d('0x15')]===_0x301d('0x1b')&&_0x53b139[_0x301d('0x1c')]&&_0x53b139[_0x301d('0x1c')][_0x301d('0x1d')]&&_0x53b139[_0x301d('0x16')]&&_0x107378[_0x53b139[_0x301d('0x1c')][_0x301d('0x1d')][_0x301d('0x1e')]()]){_0x4e6d86[_0x53b139[_0x301d('0x16')]]=_0x107378[_0x53b139[_0x301d('0x1c')][_0x301d('0x1d')][_0x301d('0x1e')]()][_0x301d('0x18')]();}});}return _0x4e6d86;}function getName(_0x5487ae){if(_0x5487ae['indexOf']('\x20')>0x0){var _0x51d0a5=_0x5487ae['split'](/ (.+)/);if(_0x51d0a5[0x1]){return _0x51d0a5;}}return[_0x5487ae,_0x5487ae];}var accountsTokens={};function getAccessToken(_0x31c94e){return new Promise(function(_0x17ee2a,_0x5948da){if(!_['isNil'](accountsTokens[_0x31c94e['id']])&&!_[_0x301d('0x1f')](accountsTokens[_0x31c94e['id']][_0x301d('0x20')])){if(moment()['isBefore'](accountsTokens[_0x31c94e['id']]['expires_in'])){_0x17ee2a(accountsTokens[_0x31c94e['id']][_0x301d('0x20')]);}}var _0x30569e;switch(_0x31c94e[_0x301d('0x21')]){case'US':_0x30569e=_0x301d('0x22');break;case'AU':_0x30569e='https://accounts.zoho.com.au';break;case'EU':_0x30569e=_0x301d('0x23');break;case'IN':_0x30569e=_0x301d('0x24');break;case'CN':_0x30569e=_0x301d('0x25');break;default:_0x30569e=_0x301d('0x23');break;}var _0x290201={'method':_0x301d('0x26'),'uri':_0x30569e+'/oauth/v2/token','qs':{'refresh_token':_0x31c94e[_0x301d('0x27')],'client_id':_0x31c94e[_0x301d('0x28')],'client_secret':_0x31c94e[_0x301d('0x29')],'grant_type':_0x301d('0x2a')},'json':!![]};return rp(_0x290201)[_0x301d('0x2b')](function(_0x23c934){accountsTokens[_0x31c94e['id']]={'access_token':_0x23c934[_0x301d('0x20')],'expires_in':moment()[_0x301d('0x2c')](_0x23c934['expires_in'],_0x301d('0x2d'))};_0x17ee2a(_0x23c934['access_token']);})['catch'](function(_0x320819){logger['error'](_0x301d('0x2e'),_0x320819[_0x301d('0x2f')]);_0x5948da(_0x320819);});});}function getUser(_0x362c68,_0x46127a,_0xb6a139,_0x5aaa61){logger[_0x301d('0x30')](_0x301d('0x31'));return request({'method':_0x301d('0x32'),'uri':util[_0x301d('0x33')]('https://www.zohoapis.%s/crm/v2/users',_0x46127a),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x362c68},'json':!![]})['then'](function(_0x1cf0bb){if(_0x1cf0bb[_0x301d('0x34')]){var _0x27c3a1=-0x1;if(_[_0x301d('0x35')](_0x1cf0bb[_0x301d('0x34')])){if(!_[_0x301d('0x1f')](_0x5aaa61)){_0x27c3a1=_[_0x301d('0x36')](_0x1cf0bb[_0x301d('0x34')],function(_0x38525f){return _0x38525f[_0x301d('0x37')]===_0x5aaa61;});}if(_0x27c3a1>=0x0){logger['info'](_0x301d('0x38'));}else{logger[_0x301d('0x30')](_0x301d('0x39'));_0x27c3a1=_[_0x301d('0x36')](_0x1cf0bb[_0x301d('0x34')],function(_0x410f0b){return _0x410f0b[_0x301d('0x3a')][_0x301d('0x1d')]===_0x301d('0x3b');});}return _0x1cf0bb[_0x301d('0x34')][_0x27c3a1];}else{if(_0x1cf0bb['user']['profile'][_0x301d('0x1d')]===_0x301d('0x3b')){logger[_0x301d('0x30')](_0x301d('0x39'));user=_0x1cf0bb[_0x301d('0x3c')];return user;}else{logger['error'](_0x301d('0x3d'),JSON[_0x301d('0xf')](_0x1cf0bb));throw new Error(_0x301d('0x3e')+JSON['stringify'](_0x1cf0bb));}}}else{logger[_0x301d('0x3f')]('The\x20failing\x20result\x20is',JSON[_0x301d('0xf')](_0x1cf0bb));throw new Error(_0x301d('0x3e')+JSON[_0x301d('0xf')](_0x1cf0bb));}})[_0x301d('0x40')](function(_0x33e803){console[_0x301d('0x3f')](_0x33e803);});}function getZohoUser(_0x32035b,_0xb0c740){return new BPromise(function(_0x4e7520,_0x114daa){request(_0x32035b)[_0x301d('0x2b')](function(_0x5d6d04){var _0x2e858f=null;if(_0x5d6d04){_0x2e858f=_0x5d6d04[_0x301d('0x41')][0x0];_0x2e858f['enduserType']=_0xb0c740;}_0x4e7520(_0x2e858f);})['catch'](function(_0x5557f8){_0x114daa(_0x5557f8);});});}function createEndUser(_0x26bd3b,_0x5b3056,_0x35047e,_0x368540,_0x30bc21,_0x15a94c){var _0x35047e=getName(_0x35047e);return request({'method':'POST','uri':_0x301d('0x42')+_0x5b3056+'/crm/v2/'+_['startCase'](_0x15a94c[_0x301d('0x43')])+'s','body':{'data':[{'Last_Name':_0x35047e[0x1],'First_Name':_0x35047e[0x0],'Phone':_0x368540,'Owner':{'name':!_['isNil'](_0x30bc21['role'][_0x301d('0x1d')])?_0x30bc21[_0x301d('0x44')][_0x301d('0x1d')]:!_[_0x301d('0x1f')](_0x30bc21[_0x301d('0x45')])?_0x30bc21[_0x301d('0x45')]+'\x20'+_0x30bc21['last_name']:_0x30bc21[_0x301d('0x46')],'id':_0x30bc21['id']}}]},'headers':{'Authorization':_0x301d('0x47')+_0x26bd3b},'json':!![]})[_0x301d('0x2b')](function(_0x411814){if(_0x411814&&_0x411814[_0x301d('0x41')][0x0][_0x301d('0x48')]===_0x301d('0x49')){var _0x5085cf=_0x411814[_0x301d('0x41')][0x0]['details'];_0x5085cf['enduserType']=_[_0x301d('0x4a')](_0x15a94c[_0x301d('0x43')])+'s';return _0x5085cf;}logger['error'](_0x301d('0x3d'),JSON[_0x301d('0xf')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})[_0x301d('0x40')](function(_0x370241){console[_0x301d('0x4b')]('CREATE\x20ERROR',_0x370241);});}function getEndUser(_0x5acb46,_0x33cadd,_0x71c996,_0x42a316,_0x3f4a01,_0x180f3e,_0x5dcd35){var _0x135bf7={'method':_0x301d('0x32'),'uri':'','headers':{'Authorization':_0x301d('0x47')+_0x5acb46},'json':!![]};switch(_0x5dcd35['moduleSearch']){case _0x301d('0x4c'):_0x135bf7[_0x301d('0x4d')]=_0x301d('0x42')+_0x33cadd+_0x301d('0x4e')+_0x3f4a01+'))';return getZohoUser(_0x135bf7,'Contacts')[_0x301d('0x2b')](function(_0x587338){if(_0x587338)return _0x587338;_0x135bf7[_0x301d('0x4d')]='https://www.zohoapis.'+_0x33cadd+_0x301d('0x4f')+_0x3f4a01+'))';return getZohoUser(_0x135bf7,_0x301d('0x50'))[_0x301d('0x2b')](function(_0x155912){if(_0x155912)return _0x155912;if(_0x5dcd35[_0x301d('0x43')]!=_0x301d('0x51')){return createEndUser(_0x5acb46,_0x33cadd,_0x42a316,_0x3f4a01,_0x180f3e,_0x5dcd35);}else{return{};}});});break;case _0x301d('0x52'):_0x135bf7[_0x301d('0x4d')]=_0x301d('0x42')+_0x33cadd+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x3f4a01+'))';return getZohoUser(_0x135bf7,_0x301d('0x53'))[_0x301d('0x2b')](function(_0x470ff9){if(_0x470ff9)return _0x470ff9;if(_0x5dcd35[_0x301d('0x43')]!='nothing'){return createEndUser(_0x5acb46,_0x33cadd,_0x42a316,_0x3f4a01,_0x180f3e,_0x5dcd35);}else{return{};}});break;case _0x301d('0x54'):_0x135bf7['uri']='https://www.zohoapis.'+_0x33cadd+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x3f4a01+'))';return getZohoUser(_0x135bf7,_0x301d('0x50'))['then'](function(_0x49a885){if(_0x49a885)return _0x49a885;if(_0x5dcd35[_0x301d('0x43')]!=_0x301d('0x51')){return createEndUser(_0x5acb46,_0x33cadd,_0x42a316,_0x3f4a01,_0x180f3e,_0x5dcd35);}else{return{};}});break;}}function getCall(_0x291384,_0x29cb7b,_0x243cb2,_0x2d4142,_0x2f2d3b,_0x1a6813,_0x46c232,_0x1f2db5){logger[_0x301d('0x30')](_0x301d('0x55'));var _0x2846a7={};_0x2846a7[_0x301d('0x56')]={'name':!_[_0x301d('0x1f')](_0x2d4142[_0x301d('0x44')][_0x301d('0x1d')])&&!_[_0x301d('0x1f')](_0x2d4142['profile'][_0x301d('0x1d')])&&_0x2d4142[_0x301d('0x3a')][_0x301d('0x1d')]===_0x301d('0x57')?_0x2d4142[_0x301d('0x44')][_0x301d('0x1d')]:!_[_0x301d('0x1f')](_0x2d4142['first_name'])?_0x2d4142[_0x301d('0x45')]+'\x20'+_0x2d4142[_0x301d('0x46')]:_0x2d4142['last_name'],'id':_0x2d4142['id']};_0x2846a7[_0x301d('0x58')]=intUtil['getString'](_0x1a6813['Subjects'],_0x46c232,'\x20');_0x2846a7['Description']=intUtil[_0x301d('0x59')](_0x1a6813[_0x301d('0x5a')],_0x46c232,'\x0a');if(_0x2f2d3b[_0x301d('0x5b')]==='Contacts'){_0x2846a7[_0x301d('0x5c')]={'name':!_['isNil'](_0x2f2d3b[_0x301d('0x5d')])?_0x2f2d3b[_0x301d('0x5d')]:!_[_0x301d('0x1f')](_0x2f2d3b[_0x301d('0x5e')])?_0x2f2d3b[_0x301d('0x5e')]+'\x20'+_0x2f2d3b[_0x301d('0x5f')]:_0x2f2d3b['Last_Name'],'id':_0x2f2d3b['id']};}if(_0x2f2d3b[_0x301d('0x5b')]==='Leads'){_0x2846a7[_0x301d('0x60')]={'name':!_[_0x301d('0x1f')](_0x2f2d3b[_0x301d('0x5d')])?_0x2f2d3b['Full_Name']:!_['isNil'](_0x2f2d3b['First_Name'])?_0x2f2d3b[_0x301d('0x5e')]+'\x20'+_0x2f2d3b[_0x301d('0x5f')]:_0x2f2d3b[_0x301d('0x5f')],'id':_0x2f2d3b['id']};_0x2846a7['$se_module']=_[_0x301d('0x4a')](_0x2f2d3b[_0x301d('0x5b')]);}if(_0x46c232[_0x301d('0x61')]){_0x2846a7[_0x301d('0x62')]=moment['utc'](parseInt(_0x46c232[_0x301d('0x61')])*0x3e8)['format'](_0x301d('0x63'));}else if(_0x46c232[_0x301d('0x64')]&&_0x46c232[_0x301d('0x65')]){_0x2846a7['Call_Duration']=moment[_0x301d('0x66')](moment(_0x46c232[_0x301d('0x65')],_0x301d('0x67'))[_0x301d('0x68')](moment(_0x46c232['starttime'],_0x301d('0x67'))))[_0x301d('0x33')](_0x301d('0x63'));}switch(_0x46c232[_0x301d('0x69')]){case _0x301d('0x6a'):_0x2846a7[_0x301d('0x6b')]='Called';break;case _0x301d('0x6c'):case _0x301d('0x6d'):_0x2846a7[_0x301d('0x6b')]='Answered';break;case'rejected':_0x2846a7['Call_Result']=_0x301d('0x6e');break;case _0x301d('0x6f'):_0x2846a7[_0x301d('0x6b')]=_0x301d('0x70');break;case _0x301d('0x71'):_0x2846a7[_0x301d('0x6b')]='Timeout';default:}_0x2846a7['Call_Start_Time']=(_0x1f2db5===_0x301d('0x72')?moment(_0x46c232[_0x301d('0x73')])[_0x301d('0x33')](_0x301d('0x67')):moment(_0x46c232[_0x301d('0x74')])['format'](_0x301d('0x67')))||moment()['format'](_0x301d('0x67'));_0x2846a7['Call_Type']=_0x1f2db5||_0x301d('0x75');_0x2846a7=_['merge'](_0x2846a7,getCustomFields(_0x1a6813[_0x301d('0x76')],_0x46c232));return request({'method':'POST','uri':'https://www.zohoapis.'+_0x29cb7b+_0x301d('0x77'),'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x291384},'body':{'data':[_0x2846a7]},'json':!![]})[_0x301d('0x2b')](function(_0x2b2ba7){if(_0x2b2ba7&&_0x2b2ba7[_0x301d('0x41')][0x0][_0x301d('0x48')]===_0x301d('0x49')){logger[_0x301d('0x30')]('Call\x20created!');return{'id':_0x2b2ba7[_0x301d('0x41')][0x0][_0x301d('0x78')]['id']};}})[_0x301d('0x40')](function(_0x28718d){logger[_0x301d('0x30')](_0x301d('0x79'),_0x28718d[_0x301d('0x2f')]);console['log'](_0x301d('0x79'),_0x28718d);});}exports[_0x301d('0x7a')]=function(_0x2f4f49,_0x15d09d,_0xe9a40,_0x3bffe9,_0x2557ef,_0x4acf61){var _0x24480f,_0x2845f3,_0x405850;_0x4acf61[_0x301d('0x7b')]=intUtil[_0x301d('0x7c')](_0x4acf61['host']);_0x4acf61[_0x301d('0x7d')]=intUtil['stripTrailingSlash'](_0x4acf61['serverUrl']);if(_0x2557ef&&_0x2557ef[_0x301d('0x7e')]){logger['info'](_0x301d('0x7f'),_0x301d('0x80'));_0x15d09d['recordingURL']=_0x4acf61[_0x301d('0x7d')]+_0x301d('0x81')+_0x15d09d[_0x301d('0x82')]+_0x301d('0x83')+md5(_0x15d09d['uniqueid']);}else{_0x15d09d[_0x301d('0x84')]='';}var _0x1836e6=_0x4acf61['host']===_0x301d('0x85')?'eu':_0x301d('0x86');return getAccessToken(_0x4acf61)[_0x301d('0x2b')](function(_0x1a83d5){_0x405850=_0x1a83d5;return getUser(_0x405850,_0x1836e6,_0x4acf61,_0x3bffe9[_0x301d('0x37')]);})[_0x301d('0x2b')](function(_0x1a7735){_0x24480f=_0x1a7735;logger['info'](_0x301d('0x87'),_0x24480f['id']);return getEndUser(_0x405850,_0x1836e6,_0x4acf61,_0x15d09d[_0x301d('0x88')],_0x15d09d['calleridnum'],_0x24480f,_0xe9a40);})[_0x301d('0x2b')](function(_0x4b3318){_0x2845f3=_0x4b3318;return getCall(_0x405850,_0x1836e6,_0x4acf61,_0x24480f,_0x2845f3,_0xe9a40,_0x15d09d,_0x301d('0x75'));})[_0x301d('0x2b')](function(_0x1fdbbf){if(_0x1fdbbf){logger['info'](_0x301d('0x89'),_0x1fdbbf['id']);logger[_0x301d('0x30')](_0x301d('0x7f'),_0x301d('0x8a'));emit(util[_0x301d('0x33')](_0x301d('0x8b'),_0x3bffe9[_0x301d('0x1d')]),_0x301d('0x8c'),{'uri':_0x301d('0x8d')+_0x4acf61[_0x301d('0x7b')]+_0x301d('0x8e')+_0x1fdbbf['id']});}})[_0x301d('0x40')](function(_0x4d29e7){logger[_0x301d('0x3f')](_0x301d('0x7f'),JSON[_0x301d('0xf')](_0x4d29e7));});};exports[_0x301d('0x72')]=function(_0x99b25d,_0x163e2b,_0x456a37,_0x39eeeb,_0x163ccb,_0x412543,_0x517751){var _0xb8e07d,_0x48af01,_0x1968bc;_0x412543[_0x301d('0x7b')]=intUtil[_0x301d('0x7c')](_0x412543[_0x301d('0x7b')]);_0x412543[_0x301d('0x7d')]=intUtil[_0x301d('0x7c')](_0x412543[_0x301d('0x7d')]);if(_0x517751&&_0x517751[_0x301d('0x8f')]&&_0x517751[_0x301d('0x8f')]!=='none'){logger['info']('[OUTBOUND]',_0x301d('0x80'));_0x163e2b['recordingURL']=_0x412543[_0x301d('0x7d')]+_0x301d('0x81')+_0x163e2b[_0x301d('0x82')]+_0x301d('0x83')+md5(_0x163e2b[_0x301d('0x82')]);}var _0x1fcf00=_0x412543[_0x301d('0x7b')]===_0x301d('0x85')?'eu':_0x301d('0x86');return getAccessToken(_0x412543)[_0x301d('0x2b')](function(_0x50c078){_0x1968bc=_0x50c078;return getUser(_0x1968bc,_0x1fcf00,_0x412543,_0x39eeeb['email']);})[_0x301d('0x2b')](function(_0x53de39){_0xb8e07d=_0x53de39;logger[_0x301d('0x30')](_0x301d('0x87'),_0xb8e07d['id']);return getEndUser(_0x1968bc,_0x1fcf00,_0x412543,_0x163e2b[_0x301d('0x90')],_0x163e2b[_0x301d('0x91')],_0xb8e07d,_0x456a37);})['then'](function(_0x19a2ed){_0x48af01=_0x19a2ed;return getCall(_0x1968bc,_0x1fcf00,_0x412543,_0xb8e07d,_0x48af01,_0x456a37,_0x163e2b,_0x301d('0x92'));})[_0x301d('0x2b')](function(_0x56e0d9){if(_0x56e0d9){logger[_0x301d('0x30')](_0x301d('0x89'),_0x56e0d9['id']);logger[_0x301d('0x30')](_0x301d('0x93'),_0x301d('0x8a'));emit(util[_0x301d('0x33')](_0x301d('0x8b'),_0x39eeeb['name']),_0x301d('0x8c'),{'uri':_0x301d('0x8d')+_0x412543['host']+'/crm/EntityInfo.do?module=Calls&id='+_0x56e0d9['id']});}})['catch'](function(_0x1ed704){logger[_0x301d('0x3f')](_0x301d('0x93'),JSON[_0x301d('0xf')](_0x1ed704));});};exports[_0x301d('0x94')]=function(_0x11452b,_0x3aee86,_0x208b6f,_0x498f44,_0x2ad6c3,_0x13e876){var _0x9b9aeb,_0x369de6,_0x27337b;_0x13e876[_0x301d('0x7b')]=intUtil['stripTrailingSlash'](_0x13e876[_0x301d('0x7b')]);_0x13e876['serverUrl']=intUtil[_0x301d('0x7c')](_0x13e876[_0x301d('0x7d')]);if(_0x2ad6c3&&_0x2ad6c3['monitor_format']){logger[_0x301d('0x30')]('['+_0x3aee86[_0x301d('0x69')]['toUpperCase']()+']',_0x301d('0x80'));_0x3aee86[_0x301d('0x84')]=_0x13e876[_0x301d('0x7d')]+_0x301d('0x81')+_0x3aee86[_0x301d('0x82')]+_0x301d('0x83')+md5(_0x3aee86[_0x301d('0x82')]);}else{_0x3aee86[_0x301d('0x84')]='';}var _0x94d487=_0x13e876[_0x301d('0x7b')]===_0x301d('0x85')?'eu':_0x301d('0x86');return getAccessToken(_0x13e876)['then'](function(_0x438cca){_0x27337b=_0x438cca;return getUser(_0x27337b,_0x94d487,_0x13e876);})[_0x301d('0x2b')](function(_0x34fe9b){_0x9b9aeb=_0x34fe9b;logger['info'](_0x301d('0x87'),_0x9b9aeb['id']);return getEndUser(_0x27337b,_0x94d487,_0x13e876,_0x3aee86['calleridname'],_0x3aee86[_0x301d('0x95')],_0x9b9aeb,_0x208b6f);})[_0x301d('0x2b')](function(_0x14a3ac){_0x369de6=_0x14a3ac;return getCall(_0x27337b,_0x94d487,_0x13e876,_0x9b9aeb,_0x369de6,_0x208b6f,_0x3aee86,'Inbound');})[_0x301d('0x2b')](function(_0x5aadcc){if(_0x5aadcc){logger['info']('The\x20Call\x20ID\x20is:',_0x5aadcc['id']);}})['catch'](function(_0x21d5b9){logger[_0x301d('0x3f')]('['+_0x3aee86[_0x301d('0x69')][_0x301d('0x96')]()+']',JSON[_0x301d('0xf')](_0x21d5b9));});};
\ No newline at end of file
+var _0x3021=['Subject','getString','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','$se_module','startCase','talktime','Call_Duration','utc','mm:ss','answertime','endtime','diff','YYYY-MM-DDTHH:mm:ss','called','Call_Result','complete','connect','rejected','Rejected','abandoned','Abandoned','timeout','starttime','Call_Type','Fields','/crm/v2/Calls','code','Call\x20created!','err','log','queue','host','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','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','https://crm.','recordingFormat','none','[OUTBOUND]','/downloads?type=uniqueid&token=','email','destcalleridnum','Outbound','/crm/EntityInfo.do?module=Calls&id=','unmanaged','stripTrailingSlash','lastevent','toUpperCase','lodash','md5','./util','moment','ioredis','../../../../config/environment','../../../../config/logger','zoho','redis','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','forEach','includes','string','picklist','idField','content','toString','type','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','access_token','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','seconds','error','Failing\x20creating\x20the\x20access_token','stack','info','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','isNil','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','catch','https://www.zohoapis.','/crm/v2/','moduleCreate','role','first_name','last_name','SUCCESS','details','CREATE\x20ERROR','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','Creating\x20new\x20call...','administrator'];(function(_0x5e18cd,_0xacb1fa){var _0x363dcf=function(_0xbb77a){while(--_0xbb77a){_0x5e18cd['push'](_0x5e18cd['shift']());}};_0x363dcf(++_0xacb1fa);}(_0x3021,0x179));var _0x1302=function(_0x3363c9,_0x41c44a){_0x3363c9=_0x3363c9-0x0;var _0x19d279=_0x3021[_0x3363c9];return _0x19d279;};'use strict';var _=require(_0x1302('0x0'));var rp=require('request-promise');var md5=require(_0x1302('0x1'));var util=require('util');var intUtil=require(_0x1302('0x2'));var moment=require(_0x1302('0x3'));var Redis=require(_0x1302('0x4'));var BPromise=require('bluebird');var config=require(_0x1302('0x5'));var logger=require(_0x1302('0x6'))(_0x1302('0x7'));config[_0x1302('0x8')]=_['defaults'](config[_0x1302('0x8')],{'host':_0x1302('0x9'),'port':0x18eb});var io=require(_0x1302('0xa'))(new Redis(config[_0x1302('0x8')]));function emit(_0x56f7ac,_0x9e141a,_0x4b7556){io['to'](_0x56f7ac)[_0x1302('0xb')](_0x9e141a,_0x4b7556);}function request(_0x2eced8){logger[_0x1302('0xc')](_0x1302('0xd'),JSON[_0x1302('0xe')](_0x2eced8));return rp(_0x2eced8);}function getCustomFields(_0x341590,_0x5d1eb0){var _0x160d3c={};if(_0x341590['length']>0x0){_[_0x1302('0xf')](_0x341590,function(_0x139e9d){if(_[_0x1302('0x10')]([_0x1302('0x11'),_0x1302('0x12')],_0x139e9d['type'])&&_0x139e9d[_0x1302('0x13')]){_0x160d3c[_0x139e9d[_0x1302('0x13')]]=_0x139e9d[_0x1302('0x14')][_0x1302('0x15')]();}else if(_0x139e9d[_0x1302('0x16')]===_0x1302('0x17')&&_0x139e9d['variableName']&&_0x139e9d[_0x1302('0x13')]&&_0x5d1eb0[_0x139e9d[_0x1302('0x18')]]){_0x160d3c[_0x139e9d['idField']]=_0x5d1eb0[_0x139e9d[_0x1302('0x18')]][_0x1302('0x15')]();}else if(_0x139e9d[_0x1302('0x16')]===_0x1302('0x19')&&_0x139e9d[_0x1302('0x1a')]&&_0x139e9d[_0x1302('0x1a')][_0x1302('0x1b')]&&_0x139e9d[_0x1302('0x13')]&&_0x5d1eb0[_0x139e9d[_0x1302('0x1a')][_0x1302('0x1b')]['toLowerCase']()]){_0x160d3c[_0x139e9d[_0x1302('0x13')]]=_0x5d1eb0[_0x139e9d[_0x1302('0x1a')][_0x1302('0x1b')][_0x1302('0x1c')]()][_0x1302('0x15')]();}});}return _0x160d3c;}function getName(_0xea021e){if(_0xea021e[_0x1302('0x1d')]('\x20')>0x0){var _0x565b23=_0xea021e[_0x1302('0x1e')](/ (.+)/);if(_0x565b23[0x1]){return _0x565b23;}}return[_0xea021e,_0xea021e];}var accountsTokens={};function getAccessToken(_0x2147f0){return new Promise(function(_0x52ed7a,_0x172537){if(!_['isNil'](accountsTokens[_0x2147f0['id']])&&!_['isNil'](accountsTokens[_0x2147f0['id']][_0x1302('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x2147f0['id']][_0x1302('0x20')])){_0x52ed7a(accountsTokens[_0x2147f0['id']][_0x1302('0x1f')]);}}var _0x215962;switch(_0x2147f0[_0x1302('0x21')]){case'US':_0x215962='https://accounts.zoho.com';break;case'AU':_0x215962=_0x1302('0x22');break;case'EU':_0x215962='https://accounts.zoho.eu';break;case'IN':_0x215962=_0x1302('0x23');break;case'CN':_0x215962=_0x1302('0x24');break;default:_0x215962=_0x1302('0x25');break;}var _0x21a0d6={'method':_0x1302('0x26'),'uri':_0x215962+_0x1302('0x27'),'qs':{'refresh_token':_0x2147f0[_0x1302('0x28')],'client_id':_0x2147f0[_0x1302('0x29')],'client_secret':_0x2147f0[_0x1302('0x2a')],'grant_type':_0x1302('0x2b')},'json':!![]};return rp(_0x21a0d6)[_0x1302('0x2c')](function(_0x44b073){accountsTokens[_0x2147f0['id']]={'access_token':_0x44b073[_0x1302('0x1f')],'expires_in':moment()['add'](_0x44b073[_0x1302('0x20')],_0x1302('0x2d'))};_0x52ed7a(_0x44b073[_0x1302('0x1f')]);})['catch'](function(_0x2cefa9){logger[_0x1302('0x2e')](_0x1302('0x2f'),_0x2cefa9[_0x1302('0x30')]);_0x172537(_0x2cefa9);});});}function getUser(_0x422697,_0x1c7f4c,_0x145d68,_0x48b3cb){logger[_0x1302('0x31')]('Search\x20user');return request({'method':_0x1302('0x32'),'uri':util[_0x1302('0x33')](_0x1302('0x34'),_0x1c7f4c),'qs':{'type':_0x1302('0x35')},'headers':{'Authorization':_0x1302('0x36')+_0x422697},'json':!![]})[_0x1302('0x2c')](function(_0x3ab4da){if(_0x3ab4da[_0x1302('0x37')]){var _0x5e8120=-0x1;if(_[_0x1302('0x38')](_0x3ab4da[_0x1302('0x37')])){if(!_[_0x1302('0x39')](_0x48b3cb)){_0x5e8120=_[_0x1302('0x3a')](_0x3ab4da[_0x1302('0x37')],function(_0x1431ba){return _0x1431ba['email']===_0x48b3cb;});}if(_0x5e8120>=0x0){logger['info'](_0x1302('0x3b'));}else{logger[_0x1302('0x31')](_0x1302('0x3c'));_0x5e8120=_[_0x1302('0x3a')](_0x3ab4da[_0x1302('0x37')],function(_0x10b907){return _0x10b907[_0x1302('0x3d')][_0x1302('0x1b')]==='Administrator';});}return _0x3ab4da[_0x1302('0x37')][_0x5e8120];}else{if(_0x3ab4da['user'][_0x1302('0x3d')][_0x1302('0x1b')]==='Administrator'){logger[_0x1302('0x31')](_0x1302('0x3c'));user=_0x3ab4da[_0x1302('0x3e')];return user;}else{logger[_0x1302('0x2e')](_0x1302('0x3f'),JSON[_0x1302('0xe')](_0x3ab4da));throw new Error(_0x1302('0x40')+JSON[_0x1302('0xe')](_0x3ab4da));}}}else{logger['error'](_0x1302('0x3f'),JSON[_0x1302('0xe')](_0x3ab4da));throw new Error(_0x1302('0x40')+JSON['stringify'](_0x3ab4da));}})['catch'](function(_0x199385){console[_0x1302('0x2e')](_0x199385);});}function getZohoUser(_0x20fc9e,_0xb8b75f){return new BPromise(function(_0x3322a8,_0x460aad){request(_0x20fc9e)[_0x1302('0x2c')](function(_0x374927){var _0x354fda=null;if(_0x374927){_0x354fda=_0x374927[_0x1302('0x41')][0x0];_0x354fda[_0x1302('0x42')]=_0xb8b75f;}_0x3322a8(_0x354fda);})[_0x1302('0x43')](function(_0x1c11b7){_0x460aad(_0x1c11b7);});});}function createEndUser(_0x296527,_0x4e2815,_0x4bdc8b,_0x3b12b7,_0x24a3b9,_0x22092d){var _0x4bdc8b=getName(_0x4bdc8b);return request({'method':_0x1302('0x26'),'uri':_0x1302('0x44')+_0x4e2815+_0x1302('0x45')+_['startCase'](_0x22092d[_0x1302('0x46')])+'s','body':{'data':[{'Last_Name':_0x4bdc8b[0x1],'First_Name':_0x4bdc8b[0x0],'Phone':_0x3b12b7,'Owner':{'name':!_[_0x1302('0x39')](_0x24a3b9[_0x1302('0x47')][_0x1302('0x1b')])?_0x24a3b9[_0x1302('0x47')][_0x1302('0x1b')]:!_['isNil'](_0x24a3b9[_0x1302('0x48')])?_0x24a3b9[_0x1302('0x48')]+'\x20'+_0x24a3b9[_0x1302('0x49')]:_0x24a3b9[_0x1302('0x49')],'id':_0x24a3b9['id']}}]},'headers':{'Authorization':_0x1302('0x36')+_0x296527},'json':!![]})[_0x1302('0x2c')](function(_0x424285){if(_0x424285&&_0x424285[_0x1302('0x41')][0x0]['code']===_0x1302('0x4a')){var _0x2b218c=_0x424285['data'][0x0][_0x1302('0x4b')];_0x2b218c[_0x1302('0x42')]=_['startCase'](_0x22092d[_0x1302('0x46')])+'s';return _0x2b218c;}logger[_0x1302('0x2e')](_0x1302('0x3f'),JSON['stringify'](data));throw new Error('Error:\x20'+JSON[_0x1302('0xe')](data));})[_0x1302('0x43')](function(_0x5ab774){console['log'](_0x1302('0x4c'),_0x5ab774);});}function getEndUser(_0x43f4a2,_0xdb2660,_0x46be1c,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a){var _0x325c00={'method':_0x1302('0x32'),'uri':'','headers':{'Authorization':_0x1302('0x36')+_0x43f4a2},'json':!![]};switch(_0x3c9b6a[_0x1302('0x4d')]){case _0x1302('0x4e'):_0x325c00[_0x1302('0x4f')]='https://www.zohoapis.'+_0xdb2660+_0x1302('0x50')+_0x57bc3b+'))';return getZohoUser(_0x325c00,_0x1302('0x51'))[_0x1302('0x2c')](function(_0x3147fc){if(_0x3147fc)return _0x3147fc;_0x325c00[_0x1302('0x4f')]=_0x1302('0x44')+_0xdb2660+_0x1302('0x52')+_0x57bc3b+'))';return getZohoUser(_0x325c00,_0x1302('0x53'))[_0x1302('0x2c')](function(_0xba9808){if(_0xba9808)return _0xba9808;if(_0x3c9b6a[_0x1302('0x46')]!=_0x1302('0x54')){return createEndUser(_0x43f4a2,_0xdb2660,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a);}else{return{};}});});break;case _0x1302('0x55'):_0x325c00[_0x1302('0x4f')]=_0x1302('0x44')+_0xdb2660+_0x1302('0x50')+_0x57bc3b+'))';return getZohoUser(_0x325c00,'Contacts')['then'](function(_0x529dd2){if(_0x529dd2)return _0x529dd2;if(_0x3c9b6a[_0x1302('0x46')]!=_0x1302('0x54')){return createEndUser(_0x43f4a2,_0xdb2660,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a);}else{return{};}});break;case'lead':_0x325c00[_0x1302('0x4f')]=_0x1302('0x44')+_0xdb2660+_0x1302('0x52')+_0x57bc3b+'))';return getZohoUser(_0x325c00,_0x1302('0x53'))[_0x1302('0x2c')](function(_0x53be75){if(_0x53be75)return _0x53be75;if(_0x3c9b6a[_0x1302('0x46')]!=_0x1302('0x54')){return createEndUser(_0x43f4a2,_0xdb2660,_0x579b1c,_0x57bc3b,_0x1f3187,_0x3c9b6a);}else{return{};}});break;}}function getCall(_0x4def20,_0x2c7ece,_0x8405bc,_0x10b924,_0x5ce1e2,_0x4bef87,_0x2f89ab,_0x29c1f7){logger[_0x1302('0x31')](_0x1302('0x56'));var _0x54358d={};_0x54358d['Owner']={'name':!_[_0x1302('0x39')](_0x10b924['role'][_0x1302('0x1b')])&&!_[_0x1302('0x39')](_0x10b924['profile']['name'])&&_0x10b924[_0x1302('0x3d')]['name']===_0x1302('0x57')?_0x10b924['role'][_0x1302('0x1b')]:!_[_0x1302('0x39')](_0x10b924[_0x1302('0x48')])?_0x10b924['first_name']+'\x20'+_0x10b924[_0x1302('0x49')]:_0x10b924['last_name'],'id':_0x10b924['id']};_0x54358d[_0x1302('0x58')]=intUtil[_0x1302('0x59')](_0x4bef87['Subjects'],_0x2f89ab,'\x20');_0x54358d[_0x1302('0x5a')]=intUtil[_0x1302('0x59')](_0x4bef87[_0x1302('0x5b')],_0x2f89ab,'\x0a');if(_0x5ce1e2[_0x1302('0x42')]===_0x1302('0x51')){_0x54358d[_0x1302('0x5c')]={'name':!_[_0x1302('0x39')](_0x5ce1e2[_0x1302('0x5d')])?_0x5ce1e2[_0x1302('0x5d')]:!_['isNil'](_0x5ce1e2[_0x1302('0x5e')])?_0x5ce1e2[_0x1302('0x5e')]+'\x20'+_0x5ce1e2['Last_Name']:_0x5ce1e2[_0x1302('0x5f')],'id':_0x5ce1e2['id']};}if(_0x5ce1e2[_0x1302('0x42')]===_0x1302('0x53')){_0x54358d['What_Id']={'name':!_[_0x1302('0x39')](_0x5ce1e2[_0x1302('0x5d')])?_0x5ce1e2[_0x1302('0x5d')]:!_[_0x1302('0x39')](_0x5ce1e2['First_Name'])?_0x5ce1e2[_0x1302('0x5e')]+'\x20'+_0x5ce1e2[_0x1302('0x5f')]:_0x5ce1e2[_0x1302('0x5f')],'id':_0x5ce1e2['id']};_0x54358d[_0x1302('0x60')]=_[_0x1302('0x61')](_0x5ce1e2[_0x1302('0x42')]);}if(_0x2f89ab[_0x1302('0x62')]){_0x54358d[_0x1302('0x63')]=moment[_0x1302('0x64')](parseInt(_0x2f89ab[_0x1302('0x62')])*0x3e8)[_0x1302('0x33')](_0x1302('0x65'));}else if(_0x2f89ab[_0x1302('0x66')]&&_0x2f89ab[_0x1302('0x67')]){_0x54358d[_0x1302('0x63')]=moment['utc'](moment(_0x2f89ab['endtime'],'YYYY-MM-DDTHH:mm:ss')[_0x1302('0x68')](moment(_0x2f89ab['starttime'],_0x1302('0x69'))))[_0x1302('0x33')](_0x1302('0x65'));}switch(_0x2f89ab['lastevent']){case _0x1302('0x6a'):_0x54358d[_0x1302('0x6b')]='Called';break;case _0x1302('0x6c'):case _0x1302('0x6d'):_0x54358d[_0x1302('0x6b')]='Answered';break;case _0x1302('0x6e'):_0x54358d[_0x1302('0x6b')]=_0x1302('0x6f');break;case _0x1302('0x70'):_0x54358d[_0x1302('0x6b')]=_0x1302('0x71');break;case _0x1302('0x72'):_0x54358d['Call_Result']='Timeout';default:}_0x54358d['Call_Start_Time']=(_0x29c1f7==='outbound'?moment(_0x2f89ab[_0x1302('0x73')])[_0x1302('0x33')]('YYYY-MM-DDTHH:mm:ss'):moment(_0x2f89ab['agentcalledAt'])[_0x1302('0x33')]('YYYY-MM-DDTHH:mm:ss'))||moment()[_0x1302('0x33')](_0x1302('0x69'));_0x54358d[_0x1302('0x74')]=_0x29c1f7||'Inbound';_0x54358d=_['merge'](_0x54358d,getCustomFields(_0x4bef87[_0x1302('0x75')],_0x2f89ab));return request({'method':_0x1302('0x26'),'uri':_0x1302('0x44')+_0x2c7ece+_0x1302('0x76'),'headers':{'Authorization':_0x1302('0x36')+_0x4def20},'body':{'data':[_0x54358d]},'json':!![]})[_0x1302('0x2c')](function(_0x2b7ea9){if(_0x2b7ea9&&_0x2b7ea9[_0x1302('0x41')][0x0][_0x1302('0x77')]==='SUCCESS'){logger['info'](_0x1302('0x78'));return{'id':_0x2b7ea9[_0x1302('0x41')][0x0][_0x1302('0x4b')]['id']};}})[_0x1302('0x43')](function(_0x4e043b){logger[_0x1302('0x31')](_0x1302('0x79'),_0x4e043b[_0x1302('0x30')]);console[_0x1302('0x7a')](_0x1302('0x79'),_0x4e043b);});}exports[_0x1302('0x7b')]=function(_0x32fcac,_0x55fb7a,_0x4ec494,_0x1d0b7c,_0x521504,_0x508ebc){var _0x89f66d,_0x2add82,_0x41600c;_0x508ebc['host']=intUtil['stripTrailingSlash'](_0x508ebc[_0x1302('0x7c')]);_0x508ebc[_0x1302('0x7d')]=intUtil['stripTrailingSlash'](_0x508ebc['serverUrl']);if(_0x521504&&_0x521504[_0x1302('0x7e')]){logger['info'](_0x1302('0x7f'),_0x1302('0x80'));_0x55fb7a[_0x1302('0x81')]=_0x508ebc[_0x1302('0x7d')]+_0x1302('0x82')+_0x55fb7a[_0x1302('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x55fb7a['uniqueid']);}else{_0x55fb7a[_0x1302('0x81')]='';}var _0x3dbb06=_0x508ebc[_0x1302('0x7c')]===_0x1302('0x84')?'eu':_0x1302('0x85');return getAccessToken(_0x508ebc)[_0x1302('0x2c')](function(_0x2305f2){_0x41600c=_0x2305f2;return getUser(_0x41600c,_0x3dbb06,_0x508ebc,_0x1d0b7c['email']);})[_0x1302('0x2c')](function(_0x1a1824){_0x89f66d=_0x1a1824;logger[_0x1302('0x31')](_0x1302('0x86'),_0x89f66d['id']);return getEndUser(_0x41600c,_0x3dbb06,_0x508ebc,_0x55fb7a[_0x1302('0x87')],_0x55fb7a[_0x1302('0x88')],_0x89f66d,_0x4ec494);})[_0x1302('0x2c')](function(_0x278256){_0x2add82=_0x278256;return getCall(_0x41600c,_0x3dbb06,_0x508ebc,_0x89f66d,_0x2add82,_0x4ec494,_0x55fb7a,_0x1302('0x89'));})[_0x1302('0x2c')](function(_0x20697a){if(_0x20697a){logger['info'](_0x1302('0x8a'),_0x20697a['id']);logger[_0x1302('0x31')](_0x1302('0x7f'),_0x1302('0x8b'));emit(util[_0x1302('0x33')](_0x1302('0x8c'),_0x1d0b7c[_0x1302('0x1b')]),_0x1302('0x8d'),{'uri':_0x1302('0x8e')+_0x508ebc[_0x1302('0x7c')]+'/crm/EntityInfo.do?module=Calls&id='+_0x20697a['id']});}})['catch'](function(_0x5f55dd){logger[_0x1302('0x2e')](_0x1302('0x7f'),JSON['stringify'](_0x5f55dd));});};exports['outbound']=function(_0x2de86a,_0x203a03,_0x274759,_0x335153,_0x251b84,_0x317725,_0xe901e7){var _0x1e704c,_0x5e12cf,_0x250c11;_0x317725[_0x1302('0x7c')]=intUtil['stripTrailingSlash'](_0x317725[_0x1302('0x7c')]);_0x317725['serverUrl']=intUtil['stripTrailingSlash'](_0x317725[_0x1302('0x7d')]);if(_0xe901e7&&_0xe901e7['recordingFormat']&&_0xe901e7[_0x1302('0x8f')]!==_0x1302('0x90')){logger[_0x1302('0x31')](_0x1302('0x91'),_0x1302('0x80'));_0x203a03[_0x1302('0x81')]=_0x317725[_0x1302('0x7d')]+'/api/voice/recordings/'+_0x203a03[_0x1302('0x83')]+_0x1302('0x92')+md5(_0x203a03[_0x1302('0x83')]);}var _0xbe15c1=_0x317725[_0x1302('0x7c')]===_0x1302('0x84')?'eu':_0x1302('0x85');return getAccessToken(_0x317725)[_0x1302('0x2c')](function(_0x1e2d8e){_0x250c11=_0x1e2d8e;return getUser(_0x250c11,_0xbe15c1,_0x317725,_0x335153[_0x1302('0x93')]);})[_0x1302('0x2c')](function(_0x391551){_0x1e704c=_0x391551;logger[_0x1302('0x31')](_0x1302('0x86'),_0x1e704c['id']);return getEndUser(_0x250c11,_0xbe15c1,_0x317725,_0x203a03['destcalleridname'],_0x203a03[_0x1302('0x94')],_0x1e704c,_0x274759);})[_0x1302('0x2c')](function(_0x5706c2){_0x5e12cf=_0x5706c2;return getCall(_0x250c11,_0xbe15c1,_0x317725,_0x1e704c,_0x5e12cf,_0x274759,_0x203a03,_0x1302('0x95'));})['then'](function(_0x566d74){if(_0x566d74){logger['info']('The\x20Call\x20ID\x20is:',_0x566d74['id']);logger[_0x1302('0x31')]('[OUTBOUND]',_0x1302('0x8b'));emit(util['format'](_0x1302('0x8c'),_0x335153['name']),'trigger:browser:url',{'uri':_0x1302('0x8e')+_0x317725['host']+_0x1302('0x96')+_0x566d74['id']});}})[_0x1302('0x43')](function(_0x430704){logger['error'](_0x1302('0x91'),JSON[_0x1302('0xe')](_0x430704));});};exports[_0x1302('0x97')]=function(_0x3908eb,_0x57934c,_0x4d0c7c,_0x297ac7,_0x48e978,_0x3d68c7){var _0x3db2ef,_0x4c83d1,_0x3bcf24;_0x3d68c7[_0x1302('0x7c')]=intUtil[_0x1302('0x98')](_0x3d68c7[_0x1302('0x7c')]);_0x3d68c7[_0x1302('0x7d')]=intUtil[_0x1302('0x98')](_0x3d68c7['serverUrl']);if(_0x48e978&&_0x48e978[_0x1302('0x7e')]){logger['info']('['+_0x57934c[_0x1302('0x99')][_0x1302('0x9a')]()+']',_0x1302('0x80'));_0x57934c['recordingURL']=_0x3d68c7['serverUrl']+_0x1302('0x82')+_0x57934c[_0x1302('0x83')]+_0x1302('0x92')+md5(_0x57934c['uniqueid']);}else{_0x57934c[_0x1302('0x81')]='';}var _0x4d45b2=_0x3d68c7[_0x1302('0x7c')]==='zoho.eu'?'eu':'com';return getAccessToken(_0x3d68c7)[_0x1302('0x2c')](function(_0x5bb2c0){_0x3bcf24=_0x5bb2c0;return getUser(_0x3bcf24,_0x4d45b2,_0x3d68c7);})['then'](function(_0x4e66a6){_0x3db2ef=_0x4e66a6;logger[_0x1302('0x31')](_0x1302('0x86'),_0x3db2ef['id']);return getEndUser(_0x3bcf24,_0x4d45b2,_0x3d68c7,_0x57934c['calleridname'],_0x57934c['calleridnum'],_0x3db2ef,_0x4d0c7c);})[_0x1302('0x2c')](function(_0x4327bf){_0x4c83d1=_0x4327bf;return getCall(_0x3bcf24,_0x4d45b2,_0x3d68c7,_0x3db2ef,_0x4c83d1,_0x4d0c7c,_0x57934c,'Inbound');})[_0x1302('0x2c')](function(_0x50d7df){if(_0x50d7df){logger[_0x1302('0x31')](_0x1302('0x8a'),_0x50d7df['id']);}})[_0x1302('0x43')](function(_0x3e89f8){logger['error']('['+_0x57934c[_0x1302('0x99')][_0x1302('0x9a')]()+']',JSON[_0x1302('0xe')](_0x3e89f8));});};
\ No newline at end of file
index 3fa411e..e4423ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea9=['data2','Script','data3','render','error','format','info','util','shelljs','mustache','../../../../config/logger','exec'];(function(_0x5cb1af,_0x4bdc8c){var _0x8d7940=function(_0x3db70a){while(--_0x3db70a){_0x5cb1af['push'](_0x5cb1af['shift']());}};_0x8d7940(++_0x4bdc8c);}(_0xeea9,0x17b));var _0x9eea=function(_0xb07424,_0x3093b0){_0xb07424=_0xb07424-0x0;var _0x45e1a2=_0xeea9[_0xb07424];return _0x45e1a2;};'use strict';var util=require(_0x9eea('0x0'));var sh=require(_0x9eea('0x1'));var Mustache=require(_0x9eea('0x2'));var logger=require(_0x9eea('0x3'))('trigger');exports[_0x9eea('0x4')]=function(_0x46ae32,_0x15ce5a){var _0x4de4d0=_0x46ae32[_0x9eea('0x5')]?_0x46ae32[_0x9eea('0x5')]:_0x9eea('0x6');var _0xfe4181=_0x46ae32[_0x9eea('0x7')]?Mustache[_0x9eea('0x8')](_0x46ae32['data3'],_0x15ce5a):_0x15ce5a;sh['exec'](_0xfe4181,function(_0x54a055,_0x4ef462,_0x1f7d94){if(_0x54a055!==0x0){logger[_0x9eea('0x9')](util[_0x9eea('0xa')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x4de4d0,_0xfe4181,_0x54a055,_0x1f7d94));}else{logger[_0x9eea('0xb')](util[_0x9eea('0xa')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x4de4d0,_0xfe4181,_0x4ef462));}});};
\ No newline at end of file
+var _0xdcca=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3'];(function(_0x57f67d,_0x30f8b0){var _0x5b37ff=function(_0x91da9f){while(--_0x91da9f){_0x57f67d['push'](_0x57f67d['shift']());}};_0x5b37ff(++_0x30f8b0);}(_0xdcca,0x1e1));var _0xadcc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdcca[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xadcc('0x0'));var sh=require(_0xadcc('0x1'));var Mustache=require(_0xadcc('0x2'));var logger=require(_0xadcc('0x3'))(_0xadcc('0x4'));exports[_0xadcc('0x5')]=function(_0x34a6dc,_0x7dc4ab){var _0x38b387=_0x34a6dc[_0xadcc('0x6')]?_0x34a6dc['data2']:_0xadcc('0x7');var _0x4c8a29=_0x34a6dc[_0xadcc('0x8')]?Mustache['render'](_0x34a6dc[_0xadcc('0x8')],_0x7dc4ab):_0x7dc4ab;sh['exec'](_0x4c8a29,function(_0x16466d,_0x17f3ca,_0x3ebdad){if(_0x16466d!==0x0){logger[_0xadcc('0x9')](util[_0xadcc('0xa')](_0xadcc('0xb'),_0x38b387,_0x4c8a29,_0x16466d,_0x3ebdad));}else{logger[_0xadcc('0xc')](util[_0xadcc('0xa')](_0xadcc('0xd'),_0x38b387,_0x4c8a29,_0x17f3ca));}});};
\ No newline at end of file
index cd3b218..11cc72e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cde=['util','mustache','../../../../config/logger','exec','data1','toUpperCase','render','data2','data5','number','headers','data6','parse','error','GET','POST','PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','then','isNil','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','name'];(function(_0x4c440b,_0x3ea627){var _0x2d48cf=function(_0x56bac7){while(--_0x56bac7){_0x4c440b['push'](_0x4c440b['shift']());}};_0x2d48cf(++_0x3ea627);}(_0x6cde,0x14a));var _0xe6cd=function(_0x29d610,_0x1b06b6){_0x29d610=_0x29d610-0x0;var _0x4d45ae=_0x6cde[_0x29d610];return _0x4d45ae;};'use strict';var rp=require('request-promise');var util=require(_0xe6cd('0x0'));var _=require('lodash');var Mustache=require(_0xe6cd('0x1'));var logger=require(_0xe6cd('0x2'))('trigger');exports[_0xe6cd('0x3')]=function(_0x324f33,_0x138725){var _0x513beb,_0x2047b9;var _0x24cc4e={'method':_0x324f33[_0xe6cd('0x4')][_0xe6cd('0x5')](),'uri':Mustache[_0xe6cd('0x6')](_0x324f33[_0xe6cd('0x7')],_0x138725),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x324f33[_0xe6cd('0x8')])===_0xe6cd('0x9')&&parseInt(_0x324f33[_0xe6cd('0x8')])>=0x1&&parseInt(_0x324f33[_0xe6cd('0x8')])<=0xa?parseInt(_0x324f33[_0xe6cd('0x8')])*0x3e8:0x5*0x3e8};try{_0x24cc4e[_0xe6cd('0xa')]=_0x324f33[_0xe6cd('0xb')]?JSON[_0xe6cd('0xc')](Mustache['render'](_0x324f33[_0xe6cd('0xb')],_0x138725)):{};}catch(_0x5a541d){logger[_0xe6cd('0xd')](_0x5a541d['stack']);}switch(_0x324f33[_0xe6cd('0x4')]['toUpperCase']()){case _0xe6cd('0xe'):case'DELETE':_0x513beb=null;_0x24cc4e['qs']=_0x138725;break;case _0xe6cd('0xf'):case _0xe6cd('0x10'):if(_0x324f33[_0xe6cd('0x11')]){try{_0x513beb=JSON[_0xe6cd('0xc')](Mustache[_0xe6cd('0x6')](_0x324f33[_0xe6cd('0x11')],_0x138725));_0x24cc4e[_0xe6cd('0x12')]=_0x513beb;}catch(_0x1f2794){logger[_0xe6cd('0xd')](_0x1f2794[_0xe6cd('0x13')]);logger[_0xe6cd('0xd')](_0xe6cd('0x14'));}}else{_0x513beb=_0x138725;_0x24cc4e[_0xe6cd('0x12')]=_0x513beb;}break;}logger[_0xe6cd('0x15')](util[_0xe6cd('0x16')](_0xe6cd('0x17'),_0x324f33[_0xe6cd('0x4')],_0x324f33['data2'],JSON['stringify'](_0x24cc4e)));rp(_0x24cc4e)[_0xe6cd('0x18')](function(_0x153ff4){_0x513beb=!_[_0xe6cd('0x19')](_0x513beb)?',\x20request\x20body:\x20'+_0x513beb:'';_0x2047b9=typeof _0x153ff4['body']===_0xe6cd('0x1a')?JSON['stringify'](_0x153ff4[_0xe6cd('0x12')]):_0x153ff4[_0xe6cd('0x12')];logger[_0xe6cd('0x15')](util['format'](_0xe6cd('0x1b'),_0x324f33[_0xe6cd('0x4')],_0x324f33[_0xe6cd('0x7')],_0x153ff4['statusCode'],_0x2047b9));})['catch'](function(_0x46816f){logger[_0xe6cd('0xd')](util[_0xe6cd('0x16')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x324f33[_0xe6cd('0x4')],_0x324f33['data2'],_0x46816f[_0xe6cd('0x1c')],_0x46816f[_0xe6cd('0x1d')],_0x46816f['message']));});};
\ No newline at end of file
+var _0xb456=['parse','error','data1','POST','PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil','%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','exec','toUpperCase','render','data2','data5','number','headers','data6'];(function(_0x2cea34,_0x19360d){var _0x2d0f71=function(_0x4c70a3){while(--_0x4c70a3){_0x2cea34['push'](_0x2cea34['shift']());}};_0x2d0f71(++_0x19360d);}(_0xb456,0x1f1));var _0x6b45=function(_0x4f9847,_0x136945){_0x4f9847=_0x4f9847-0x0;var _0x1f4fc4=_0xb456[_0x4f9847];return _0x1f4fc4;};'use strict';var rp=require(_0x6b45('0x0'));var util=require(_0x6b45('0x1'));var _=require(_0x6b45('0x2'));var Mustache=require(_0x6b45('0x3'));var logger=require(_0x6b45('0x4'))('trigger');exports[_0x6b45('0x5')]=function(_0x542077,_0x58c414){var _0x552460,_0x3275cd;var _0x33e917={'method':_0x542077['data1'][_0x6b45('0x6')](),'uri':Mustache[_0x6b45('0x7')](_0x542077[_0x6b45('0x8')],_0x58c414),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x542077[_0x6b45('0x9')])===_0x6b45('0xa')&&parseInt(_0x542077['data5'])>=0x1&&parseInt(_0x542077[_0x6b45('0x9')])<=0xa?parseInt(_0x542077[_0x6b45('0x9')])*0x3e8:0x5*0x3e8};try{_0x33e917[_0x6b45('0xb')]=_0x542077[_0x6b45('0xc')]?JSON[_0x6b45('0xd')](Mustache[_0x6b45('0x7')](_0x542077['data6'],_0x58c414)):{};}catch(_0x4401d4){logger[_0x6b45('0xe')](_0x4401d4['stack']);}switch(_0x542077[_0x6b45('0xf')][_0x6b45('0x6')]()){case'GET':case'DELETE':_0x552460=null;_0x33e917['qs']=_0x58c414;break;case _0x6b45('0x10'):case _0x6b45('0x11'):if(_0x542077[_0x6b45('0x12')]){try{_0x552460=JSON['parse'](Mustache[_0x6b45('0x7')](_0x542077[_0x6b45('0x12')],_0x58c414));_0x33e917[_0x6b45('0x13')]=_0x552460;}catch(_0x39edb7){logger[_0x6b45('0xe')](_0x39edb7[_0x6b45('0x14')]);logger['error'](_0x6b45('0x15'));}}else{_0x552460=_0x58c414;_0x33e917['body']=_0x552460;}break;}logger[_0x6b45('0x16')](util[_0x6b45('0x17')](_0x6b45('0x18'),_0x542077[_0x6b45('0xf')],_0x542077[_0x6b45('0x8')],JSON[_0x6b45('0x19')](_0x33e917)));rp(_0x33e917)[_0x6b45('0x1a')](function(_0x3755ad){_0x552460=!_[_0x6b45('0x1b')](_0x552460)?',\x20request\x20body:\x20'+_0x552460:'';_0x3275cd=typeof _0x3755ad[_0x6b45('0x13')]==='object'?JSON['stringify'](_0x3755ad['body']):_0x3755ad['body'];logger[_0x6b45('0x16')](util['format'](_0x6b45('0x1c'),_0x542077['data1'],_0x542077[_0x6b45('0x8')],_0x3755ad[_0x6b45('0x1d')],_0x3275cd));})[_0x6b45('0x1e')](function(_0x21959e){logger[_0x6b45('0xe')](util[_0x6b45('0x17')](_0x6b45('0x1f'),_0x542077['data1'],_0x542077[_0x6b45('0x8')],_0x21959e[_0x6b45('0x1d')],_0x21959e[_0x6b45('0x20')],_0x21959e[_0x6b45('0x21')]));});};
\ No newline at end of file
index 5736d7e..2919ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7780=['result','jayson/promise','../../config/logger','client','http','Request','request','then','routing','error','rpc','message'];(function(_0x518d92,_0x5a1d01){var _0x131229=function(_0x216af7){while(--_0x216af7){_0x518d92['push'](_0x518d92['shift']());}};_0x131229(++_0x5a1d01);}(_0x7780,0xa9));var _0x0778=function(_0x2ecb67,_0x8ec62d){_0x2ecb67=_0x2ecb67-0x0;var _0x168079=_0x7780[_0x2ecb67];return _0x168079;};'use strict';var jayson=require(_0x0778('0x0'));var BPromise=require('bluebird');var logger=require(_0x0778('0x1'))('routing');var client=jayson[_0x0778('0x2')][_0x0778('0x3')]({'port':0x2329});client[_0x0778('0x4')]=function(_0xf28319,_0x30b2aa){return new BPromise(function(_0x426dd8,_0x2b460b){return client[_0x0778('0x5')](_0xf28319,_0x30b2aa)[_0x0778('0x6')](function(_0x69778b){logger['debug']('rpc',_0x0778('0x7'),_0xf28319,_0x30b2aa,_0x69778b);if(_0x69778b[_0x0778('0x8')]){logger[_0x0778('0x8')](_0x0778('0x9'),'routing',_0xf28319,_0x69778b[_0x0778('0x8')][_0x0778('0xa')],_0x30b2aa);return _0x2b460b(_0x69778b[_0x0778('0x8')][_0x0778('0xa')]);}else{return _0x426dd8(_0x69778b[_0x0778('0xb')]);}})['catch'](function(_0x2551af){logger[_0x0778('0x8')](_0x0778('0x9'),_0x0778('0x7'),_0xf28319,_0x2551af,_0x30b2aa);return _0x2b460b(_0x2551af);});});};module['exports']=client;
\ No newline at end of file
+var _0xa021=['http','Request','then','rpc','error','message','result','catch','exports','jayson/promise','bluebird','../../config/logger','routing'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa021,0x1d0));var _0x1a02=function(_0x23a7aa,_0x51647e){_0x23a7aa=_0x23a7aa-0x0;var _0x5a6172=_0xa021[_0x23a7aa];return _0x5a6172;};'use strict';var jayson=require(_0x1a02('0x0'));var BPromise=require(_0x1a02('0x1'));var logger=require(_0x1a02('0x2'))(_0x1a02('0x3'));var client=jayson['client'][_0x1a02('0x4')]({'port':0x2329});client[_0x1a02('0x5')]=function(_0x10d5bc,_0x512b88){return new BPromise(function(_0x3b0176,_0x2e30c4){return client['request'](_0x10d5bc,_0x512b88)[_0x1a02('0x6')](function(_0x4d551d){logger['debug'](_0x1a02('0x7'),'routing',_0x10d5bc,_0x512b88,_0x4d551d);if(_0x4d551d[_0x1a02('0x8')]){logger['error'](_0x1a02('0x7'),_0x1a02('0x3'),_0x10d5bc,_0x4d551d[_0x1a02('0x8')]['message'],_0x512b88);return _0x2e30c4(_0x4d551d[_0x1a02('0x8')][_0x1a02('0x9')]);}else{return _0x3b0176(_0x4d551d[_0x1a02('0xa')]);}})[_0x1a02('0xb')](function(_0x2c6304){logger[_0x1a02('0x8')](_0x1a02('0x7'),_0x1a02('0x3'),_0x10d5bc,_0x2c6304,_0x512b88);return _0x2e30c4(_0x2c6304);});});};module[_0x1a02('0xc')]=client;
\ No newline at end of file
index 4ffc098..a604431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0acc=['bluebird','./server','./realtime','./lib/email','./rpc/mailAccount','resolve','then','getMailAccounts','initMailAccounts','mailAccounts','listen','loginMailFrequency','catch'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x0acc,0xd0));var _0xc0ac=function(_0x26bdda,_0x3ae7ec){_0x26bdda=_0x26bdda-0x0;var _0x4c4761=_0x0acc[_0x26bdda];return _0x4c4761;};'use strict';var BPromise=require(_0xc0ac('0x0'));var server=require(_0xc0ac('0x1'));var Realtime=require(_0xc0ac('0x2'));var EmailChannel=require(_0xc0ac('0x3'));var mailAccount=require(_0xc0ac('0x4'));var setting=require('./rpc/setting');var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0xc0ac('0x5')]()[_0xc0ac('0x6')](mailAccount[_0xc0ac('0x7')]())[_0xc0ac('0x6')](realtime[_0xc0ac('0x8')]())[_0xc0ac('0x6')](function(){email['refresh'](realtime[_0xc0ac('0x9')]);return realtime;});}function main(){return server[_0xc0ac('0xa')](realtime,email)[_0xc0ac('0x6')](function(){return initRealtime();})['then'](function(){return setting['getSettings']();})['then'](function(_0x365f54){return setInterval(initRealtime,_0x365f54[_0xc0ac('0xb')]*0x3e8);})[_0xc0ac('0xc')](function(_0x268506){console['log'](_0x268506);});}main();
\ No newline at end of file
+var _0x8814=['then','getMailAccounts','initMailAccounts','refresh','mailAccounts','getSettings','loginMailFrequency','log','bluebird','./lib/email','./rpc/setting','resolve'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x8814,0x1b8));var _0x4881=function(_0xa3463d,_0x32f8da){_0xa3463d=_0xa3463d-0x0;var _0x50fd67=_0x8814[_0xa3463d];return _0x50fd67;};'use strict';var BPromise=require(_0x4881('0x0'));var server=require('./server');var Realtime=require('./realtime');var EmailChannel=require(_0x4881('0x1'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x4881('0x2'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return BPromise[_0x4881('0x3')]()[_0x4881('0x4')](mailAccount[_0x4881('0x5')]())['then'](realtime[_0x4881('0x6')]())[_0x4881('0x4')](function(){email[_0x4881('0x7')](realtime[_0x4881('0x8')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0x4881('0x4')](function(){return initRealtime();})['then'](function(){return setting[_0x4881('0x9')]();})[_0x4881('0x4')](function(_0x1c491e){return setInterval(initRealtime,_0x1c491e[_0x4881('0xa')]*0x3e8);})['catch'](function(_0xda4edd){console[_0x4881('0xb')](_0xda4edd);});}main();
\ No newline at end of file
index 4141e8c..d284cd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x165b=['ioredis','../../../config/environment','../../../config/logger','redis','defaults','localhost','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','smtp','emit','name','key','Imap','status','messageStatus','total','mailAccount:update','refresh','hasOwnProperty','active','imapAccounts','email','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','isNil','disabled','prototype','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','error','sendMail','send','verifySmtp','Smtp','lastSync','verify','verified','exports','lodash','moment','bluebird','md5'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x165b,0x1dc));var _0xb165=function(_0x40b4f1,_0x4c6c29){_0x40b4f1=_0x40b4f1-0x0;var _0x193304=_0x165b[_0x40b4f1];return _0x193304;};'use strict';var _=require(_0xb165('0x0'));var moment=require(_0xb165('0x1'));var BPromise=require(_0xb165('0x2'));var md5=require(_0xb165('0x3'));var Redis=require(_0xb165('0x4'));var config=require(_0xb165('0x5'));var logger=require(_0xb165('0x6'))('email');config[_0xb165('0x7')]=_[_0xb165('0x8')](config['redis'],{'host':_0xb165('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb165('0x7')]));var EmailImap=require(_0xb165('0xa'));var EmailSmtp=require(_0xb165('0xb'));var mailAccount=require(_0xb165('0xc'));var md5Accounts={};function EmailChannel(_0x391d6f){logger[_0xb165('0xd')](_0xb165('0xe'));this[_0xb165('0xf')]=_0x391d6f[_0xb165('0xf')];this['imapAccounts']={};this[_0xb165('0x10')]=new EmailSmtp();}EmailChannel['prototype'][_0xb165('0x11')]=function(_0x3b0221){var _0x4220fe=this[_0xb165('0xf')][_0x3b0221];var _0x4d0602={'id':_0x4220fe['id'],'name':_0x4220fe[_0xb165('0x12')],'key':_0x4220fe[_0xb165('0x13')],'active':_0x4220fe['active'],'Imap':{'status':_0x4220fe[_0xb165('0x14')][_0xb165('0x15')],'messageStatus':_0x4220fe[_0xb165('0x14')][_0xb165('0x16')],'total':_0x4220fe['Imap'][_0xb165('0x17')]}};if(_['isNil'](md5Accounts[_0x3b0221])){md5Accounts[_0x3b0221]={};}var _0x3717e7=md5(JSON['stringify'](_0x4d0602));if(md5Accounts[_0x3b0221][_0xb165('0x3')]!==_0x3717e7){md5Accounts[_0x3b0221]['md5']=_0x3717e7;io[_0xb165('0x11')](_0xb165('0x18'),_0x4d0602);}};EmailChannel['prototype'][_0xb165('0x19')]=function(_0x50f33f){for(var _0x50c479 in _0x50f33f){if(_0x50f33f[_0xb165('0x1a')](_0x50c479)){if(_0x50f33f[_0x50c479][_0xb165('0x14')]&&_0x50f33f[_0x50c479][_0xb165('0x1b')]){var _0x25e03a=_0x50f33f[_0x50c479]['Imap'];if(!this[_0xb165('0x1c')][_0xb165('0x1a')](_0x25e03a['id'])){this[_0xb165('0x1c')][_0x25e03a['id']]=new EmailImap(_0x25e03a,_0x50f33f[_0x50c479][_0xb165('0x1d')]);this[_0xb165('0x1c')][_0x25e03a['id']]['on'](_0xb165('0x1e'),this[_0xb165('0x1f')][_0xb165('0x20')](this,_0x50c479));this[_0xb165('0x1c')][_0x25e03a['id']]['on'](_0xb165('0x1d'),this[_0xb165('0x21')][_0xb165('0x20')](this,_0x50c479));this['imapAccounts'][_0x25e03a['id']]['on'](_0xb165('0x22'),this[_0xb165('0x23')][_0xb165('0x20')](this,_0x50c479));this[_0xb165('0x1c')][_0x25e03a['id']]['on']('error',this['handleImapError'][_0xb165('0x20')](this,_0x50c479));}}else{if(_[_0xb165('0x24')](this[_0xb165('0xf')][_0x50c479][_0xb165('0x14')])){this[_0xb165('0xf')][_0x50c479][_0xb165('0x14')]={};}this[_0xb165('0xf')][_0x50c479][_0xb165('0x14')][_0xb165('0x15')]=_0xb165('0x25');this[_0xb165('0xf')][_0x50c479]['Imap']['messageStatus']='';this[_0xb165('0x11')](_0x50c479);}}}};EmailChannel[_0xb165('0x26')][_0xb165('0x1f')]=function(_0x1829af,_0x1be863){if(this[_0xb165('0xf')][_0x1829af]){this[_0xb165('0xf')][_0x1829af][_0xb165('0x14')][_0xb165('0x15')]=_0xb165('0x27');this[_0xb165('0xf')][_0x1829af][_0xb165('0x14')][_0xb165('0x16')]=_0x1be863[_0xb165('0x12')];if(_0x1be863[_0xb165('0x28')]){this[_0xb165('0xf')][_0x1829af][_0xb165('0x14')][_0xb165('0x17')]=_0x1be863['messages'][_0xb165('0x17')];}return this[_0xb165('0x11')](_0x1829af);}};EmailChannel[_0xb165('0x26')][_0xb165('0x21')]=function(_0x18641c,_0x3c59a7){logger[_0xb165('0xd')](_0xb165('0x29'),_0x3c59a7[_0xb165('0x2a')],_0x3c59a7[_0xb165('0x2b')],_0x3c59a7[_0xb165('0x2c')],_0x18641c);if(this[_0xb165('0xf')][_0x18641c]){return mailAccount[_0xb165('0x2d')](_0x18641c,_0x3c59a7)[_0xb165('0x2e')](function(_0x2fd7e3){if(_0x2fd7e3){logger[_0xb165('0xd')](_0xb165('0x2f'));}})[_0xb165('0x30')](function(_0xedab38){logger['error'](_0xb165('0x31'),JSON[_0xb165('0x32')](_0xedab38));});}};EmailChannel[_0xb165('0x26')][_0xb165('0x23')]=function(_0x412169){if(this[_0xb165('0xf')][_0x412169]&&this[_0xb165('0xf')][_0x412169]['Imap']){if(this['imapAccounts'][this[_0xb165('0xf')][_0x412169][_0xb165('0x14')]['id']]){delete this['imapAccounts'][this[_0xb165('0xf')][_0x412169][_0xb165('0x14')]['id']];}this['mailAccounts'][_0x412169][_0xb165('0x14')]['lastSync']=moment();this[_0xb165('0x11')](_0x412169);}};EmailChannel['prototype']['handleImapError']=function(_0x2ee3bd,_0x1ba762){if(this[_0xb165('0xf')][_0x2ee3bd]){this[_0xb165('0xf')][_0x2ee3bd]['Imap']['status']=_0xb165('0x33');this[_0xb165('0xf')][_0x2ee3bd][_0xb165('0x14')][_0xb165('0x16')]=_0x1ba762;return this[_0xb165('0x11')](_0x2ee3bd);}};EmailChannel[_0xb165('0x26')][_0xb165('0x34')]=function(_0x5d53ee,_0x305859){return this['smtp'][_0xb165('0x35')](_0x5d53ee,_0x305859);};EmailChannel[_0xb165('0x26')][_0xb165('0x36')]=function(_0x12d70a){var _0xd4202=this;if(this['mailAccounts'][_0x12d70a['id']]){if(_[_0xb165('0x24')](this[_0xb165('0xf')][_0x12d70a['id']][_0xb165('0x37')])){this[_0xb165('0xf')][_0x12d70a['id']][_0xb165('0x37')]={};}this[_0xb165('0xf')][_0x12d70a['id']][_0xb165('0x37')][_0xb165('0x38')]=moment();return new BPromise(function(_0x5ec443,_0x75d2ef){return _0xd4202[_0xb165('0x10')][_0xb165('0x39')](_0x12d70a)[_0xb165('0x2e')](function(_0x20a122){_0xd4202[_0xb165('0xf')][_0x12d70a['id']]['Smtp']['status']=_0xb165('0x3a');_0xd4202['mailAccounts'][_0x12d70a['id']][_0xb165('0x37')][_0xb165('0x16')]='';_0xd4202[_0xb165('0x11')](_0x12d70a['id']);_0x5ec443(_0x20a122);})['catch'](function(_0x17820d){_0xd4202[_0xb165('0xf')][_0x12d70a['id']][_0xb165('0x37')][_0xb165('0x15')]='error';_0xd4202['mailAccounts'][_0x12d70a['id']]['Smtp']['messageStatus']=_0x17820d;_0xd4202[_0xb165('0x11')](_0x12d70a['id']);_0x75d2ef(_0x17820d);});});}return this['smtp'][_0xb165('0x39')](_0x12d70a);};module[_0xb165('0x3b')]=EmailChannel;
\ No newline at end of file
+var _0x035e=['status','connected','messages','total','emit','handleImapEmail','firstName','lastName','then','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','sendMail','Smtp','verify','verified','exports','lodash','md5','../../../config/environment','../../../config/logger','email','redis','localhost','socket.io-emitter','./imap','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','name','key','active','Imap','messageStatus','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','handleImapBox','bind','end','handleImapEnd','error','handleImapError','disabled'];(function(_0x1667d5,_0x12e413){var _0x1dd537=function(_0x42e04e){while(--_0x42e04e){_0x1667d5['push'](_0x1667d5['shift']());}};_0x1dd537(++_0x12e413);}(_0x035e,0x16f));var _0xe035=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x035e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe035('0x0'));var moment=require('moment');var BPromise=require('bluebird');var md5=require(_0xe035('0x1'));var Redis=require('ioredis');var config=require(_0xe035('0x2'));var logger=require(_0xe035('0x3'))(_0xe035('0x4'));config[_0xe035('0x5')]=_['defaults'](config['redis'],{'host':_0xe035('0x6'),'port':0x18eb});var io=require(_0xe035('0x7'))(new Redis(config[_0xe035('0x5')]));var EmailImap=require(_0xe035('0x8'));var EmailSmtp=require('./smtp');var mailAccount=require(_0xe035('0x9'));var md5Accounts={};function EmailChannel(_0x28ae47){logger[_0xe035('0xa')](_0xe035('0xb'));this[_0xe035('0xc')]=_0x28ae47[_0xe035('0xc')];this[_0xe035('0xd')]={};this[_0xe035('0xe')]=new EmailSmtp();}EmailChannel[_0xe035('0xf')]['emit']=function(_0x3f866d){var _0x5eaaf2=this[_0xe035('0xc')][_0x3f866d];var _0x5e85b2={'id':_0x5eaaf2['id'],'name':_0x5eaaf2[_0xe035('0x10')],'key':_0x5eaaf2[_0xe035('0x11')],'active':_0x5eaaf2[_0xe035('0x12')],'Imap':{'status':_0x5eaaf2[_0xe035('0x13')]['status'],'messageStatus':_0x5eaaf2[_0xe035('0x13')][_0xe035('0x14')],'total':_0x5eaaf2['Imap']['total']}};if(_[_0xe035('0x15')](md5Accounts[_0x3f866d])){md5Accounts[_0x3f866d]={};}var _0x19b54c=md5(JSON[_0xe035('0x16')](_0x5e85b2));if(md5Accounts[_0x3f866d][_0xe035('0x1')]!==_0x19b54c){md5Accounts[_0x3f866d]['md5']=_0x19b54c;io['emit'](_0xe035('0x17'),_0x5e85b2);}};EmailChannel['prototype'][_0xe035('0x18')]=function(_0x3d95f7){for(var _0x26b1cd in _0x3d95f7){if(_0x3d95f7[_0xe035('0x19')](_0x26b1cd)){if(_0x3d95f7[_0x26b1cd]['Imap']&&_0x3d95f7[_0x26b1cd][_0xe035('0x12')]){var _0xd4d7db=_0x3d95f7[_0x26b1cd]['Imap'];if(!this[_0xe035('0xd')][_0xe035('0x19')](_0xd4d7db['id'])){this[_0xe035('0xd')][_0xd4d7db['id']]=new EmailImap(_0xd4d7db,_0x3d95f7[_0x26b1cd][_0xe035('0x4')]);this[_0xe035('0xd')][_0xd4d7db['id']]['on']('box',this[_0xe035('0x1a')][_0xe035('0x1b')](this,_0x26b1cd));this['imapAccounts'][_0xd4d7db['id']]['on'](_0xe035('0x4'),this['handleImapEmail'][_0xe035('0x1b')](this,_0x26b1cd));this[_0xe035('0xd')][_0xd4d7db['id']]['on'](_0xe035('0x1c'),this[_0xe035('0x1d')][_0xe035('0x1b')](this,_0x26b1cd));this[_0xe035('0xd')][_0xd4d7db['id']]['on'](_0xe035('0x1e'),this[_0xe035('0x1f')]['bind'](this,_0x26b1cd));}}else{if(_[_0xe035('0x15')](this[_0xe035('0xc')][_0x26b1cd]['Imap'])){this[_0xe035('0xc')][_0x26b1cd][_0xe035('0x13')]={};}this[_0xe035('0xc')][_0x26b1cd][_0xe035('0x13')]['status']=_0xe035('0x20');this[_0xe035('0xc')][_0x26b1cd][_0xe035('0x13')][_0xe035('0x14')]='';this['emit'](_0x26b1cd);}}}};EmailChannel[_0xe035('0xf')][_0xe035('0x1a')]=function(_0x12570f,_0x2e200b){if(this['mailAccounts'][_0x12570f]){this['mailAccounts'][_0x12570f]['Imap'][_0xe035('0x21')]=_0xe035('0x22');this['mailAccounts'][_0x12570f][_0xe035('0x13')][_0xe035('0x14')]=_0x2e200b[_0xe035('0x10')];if(_0x2e200b[_0xe035('0x23')]){this[_0xe035('0xc')][_0x12570f][_0xe035('0x13')][_0xe035('0x24')]=_0x2e200b[_0xe035('0x23')][_0xe035('0x24')];}return this[_0xe035('0x25')](_0x12570f);}};EmailChannel[_0xe035('0xf')][_0xe035('0x26')]=function(_0x4bccce,_0x1b4307){logger[_0xe035('0xa')]('New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s',_0x1b4307[_0xe035('0x27')],_0x1b4307[_0xe035('0x28')],_0x1b4307['from'],_0x4bccce);if(this[_0xe035('0xc')][_0x4bccce]){return mailAccount['notify'](_0x4bccce,_0x1b4307)[_0xe035('0x29')](function(_0x2a7390){if(_0x2a7390){logger['info']('Mail\x20accepted\x20from\x20routing');}})[_0xe035('0x2a')](function(_0x24c40a){logger[_0xe035('0x1e')](_0xe035('0x2b'),JSON[_0xe035('0x16')](_0x24c40a));});}};EmailChannel[_0xe035('0xf')][_0xe035('0x1d')]=function(_0x9180ad){if(this[_0xe035('0xc')][_0x9180ad]&&this[_0xe035('0xc')][_0x9180ad][_0xe035('0x13')]){if(this['imapAccounts'][this[_0xe035('0xc')][_0x9180ad]['Imap']['id']]){delete this['imapAccounts'][this[_0xe035('0xc')][_0x9180ad][_0xe035('0x13')]['id']];}this['mailAccounts'][_0x9180ad][_0xe035('0x13')][_0xe035('0x2c')]=moment();this['emit'](_0x9180ad);}};EmailChannel['prototype']['handleImapError']=function(_0x28f5e3,_0x336f3e){if(this[_0xe035('0xc')][_0x28f5e3]){this[_0xe035('0xc')][_0x28f5e3]['Imap']['status']=_0xe035('0x1e');this[_0xe035('0xc')][_0x28f5e3]['Imap'][_0xe035('0x14')]=_0x336f3e;return this[_0xe035('0x25')](_0x28f5e3);}};EmailChannel['prototype'][_0xe035('0x2d')]=function(_0x216f9a,_0x57a784){return this[_0xe035('0xe')]['send'](_0x216f9a,_0x57a784);};EmailChannel[_0xe035('0xf')]['verifySmtp']=function(_0x29918f){var _0x584cbe=this;if(this[_0xe035('0xc')][_0x29918f['id']]){if(_[_0xe035('0x15')](this['mailAccounts'][_0x29918f['id']][_0xe035('0x2e')])){this[_0xe035('0xc')][_0x29918f['id']][_0xe035('0x2e')]={};}this['mailAccounts'][_0x29918f['id']][_0xe035('0x2e')]['lastSync']=moment();return new BPromise(function(_0xae9c62,_0x5e7285){return _0x584cbe['smtp'][_0xe035('0x2f')](_0x29918f)[_0xe035('0x29')](function(_0x1738aa){_0x584cbe[_0xe035('0xc')][_0x29918f['id']][_0xe035('0x2e')]['status']=_0xe035('0x30');_0x584cbe[_0xe035('0xc')][_0x29918f['id']][_0xe035('0x2e')][_0xe035('0x14')]='';_0x584cbe[_0xe035('0x25')](_0x29918f['id']);_0xae9c62(_0x1738aa);})[_0xe035('0x2a')](function(_0x56d00e){_0x584cbe[_0xe035('0xc')][_0x29918f['id']]['Smtp'][_0xe035('0x21')]='error';_0x584cbe['mailAccounts'][_0x29918f['id']][_0xe035('0x2e')][_0xe035('0x14')]=_0x56d00e;_0x584cbe[_0xe035('0x25')](_0x29918f['id']);_0x5e7285(_0x56d00e);});});}return this[_0xe035('0xe')][_0xe035('0x2f')](_0x29918f);};module[_0xe035('0x31')]=EmailChannel;
\ No newline at end of file
index 7bc8a05..988e30f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb252=['lodash','randomstring','mailparser','simpleParser','iconv','events','./utils','email','mailbox','INBOX','account','ready','handleReady','bind','once','handleEnd','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','isNil','service','authentication','user','password','host','port','tls','autotls','anonymous@xcally.com','openBox','handleOpenBox','emit','box','readUnseen','handleCloseBox','search','handleReadUnseen','length','fetch','message','handleFetchError','end','closeBox','handleFetchMessage','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','path','util','imap'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xb252,0x13d));var _0x2b25=function(_0x2cac3b,_0x5c7a98){_0x2cac3b=_0x2cac3b-0x0;var _0x54d375=_0xb252[_0x2cac3b];return _0x54d375;};'use strict';var fs=require('fs');var path=require(_0x2b25('0x0'));var util=require(_0x2b25('0x1'));var Imap=require(_0x2b25('0x2'));var _=require(_0x2b25('0x3'));var rs=require(_0x2b25('0x4'));var simpleParser=require(_0x2b25('0x5'))[_0x2b25('0x6')];var Iconv=require(_0x2b25('0x7'))['Iconv'];var EventEmitter=require(_0x2b25('0x8'))['EventEmitter'];var utils=require(_0x2b25('0x9'));var logger=require('../../../config/logger')(_0x2b25('0xa'));function EmailImap(_0x265bb3,_0x2ac9d3){this[_0x2b25('0xb')]=_0x2b25('0xc');this[_0x2b25('0xd')]=this['getAccount'](_0x265bb3,_0x2ac9d3);this[_0x2b25('0x2')]=new Imap(this[_0x2b25('0xd')]);this['imap']['once'](_0x2b25('0xe'),this[_0x2b25('0xf')][_0x2b25('0x10')](this));this[_0x2b25('0x2')][_0x2b25('0x11')]('end',this[_0x2b25('0x12')][_0x2b25('0x10')](this));this['imap']['on'](_0x2b25('0x13'),this[_0x2b25('0x14')][_0x2b25('0x10')](this));this[_0x2b25('0x2')][_0x2b25('0x15')]();}util[_0x2b25('0x16')](EmailImap,EventEmitter);EmailImap[_0x2b25('0x17')]['getAccount']=function(_0x44bc15,_0x3a98ed){var _0x2292c3={'connTimeout':_0x44bc15[_0x2b25('0x18')]?_0x44bc15[_0x2b25('0x18')]*0x3e8:0x2710,'authTimeout':_0x44bc15[_0x2b25('0x19')]?_0x44bc15[_0x2b25('0x19')]*0x3e8:0x1388};if(_[_0x2b25('0x1a')](_0x44bc15[_0x2b25('0x1b')])){if(_0x44bc15[_0x2b25('0x1c')]){_0x2292c3[_0x2b25('0x1d')]=_0x44bc15[_0x2b25('0x1d')];_0x2292c3[_0x2b25('0x1e')]=_0x44bc15[_0x2b25('0x1e')];}_0x2292c3[_0x2b25('0x1f')]=_0x44bc15[_0x2b25('0x1f')];_0x2292c3['port']=_0x44bc15[_0x2b25('0x20')]||0x3e1;if(_0x44bc15[_0x2b25('0x21')]){_0x2292c3['tls']=!![];}else{_0x2292c3[_0x2b25('0x21')]=![];_0x2292c3[_0x2b25('0x22')]='required';}}else{_0x2292c3[_0x2b25('0x1d')]=_0x44bc15[_0x2b25('0x1d')];_0x2292c3[_0x2b25('0x1e')]=_0x44bc15['password'];_0x2292c3[_0x2b25('0x1f')]=utils['getHost'](_0x44bc15[_0x2b25('0x1b')]);_0x2292c3[_0x2b25('0x20')]=0x3e1;_0x2292c3[_0x2b25('0x21')]=!![];}_0x2292c3['email']=_0x3a98ed||_0x44bc15[_0x2b25('0x1d')]||_0x2b25('0x23');return _0x2292c3;};EmailImap[_0x2b25('0x17')][_0x2b25('0xf')]=function(){this['imap'][_0x2b25('0x24')](this[_0x2b25('0xb')],![],this[_0x2b25('0x25')]['bind'](this));};EmailImap[_0x2b25('0x17')]['handleOpenBox']=function(_0x9837ec,_0x170978){if(_0x9837ec){this['handleError'](_0x9837ec,!![]);}else{this[_0x2b25('0x26')](_0x2b25('0x27'),_0x170978);this[_0x2b25('0x28')]();}};EmailImap['prototype'][_0x2b25('0x29')]=function(_0x24c85b){if(_0x24c85b){this[_0x2b25('0x14')](_0x24c85b,!![]);}else{this[_0x2b25('0x2')]['end']();}};EmailImap['prototype'][_0x2b25('0x28')]=function(){this[_0x2b25('0x2')][_0x2b25('0x2a')](['UNSEEN'],this[_0x2b25('0x2b')][_0x2b25('0x10')](this));};EmailImap[_0x2b25('0x17')][_0x2b25('0x2b')]=function(_0x1c98d0,_0x39cb76){if(_0x1c98d0){this[_0x2b25('0x14')](_0x1c98d0,!![]);}else{if(_0x39cb76[_0x2b25('0x2c')]){try{var _0xcf96aa=this[_0x2b25('0x2')][_0x2b25('0x2d')](_0x39cb76,{'bodies':'','markSeen':!![]});_0xcf96aa['on'](_0x2b25('0x2e'),this['handleFetchMessage'][_0x2b25('0x10')](this));_0xcf96aa[_0x2b25('0x11')](_0x2b25('0x13'),this[_0x2b25('0x2f')][_0x2b25('0x10')](this));_0xcf96aa['once'](_0x2b25('0x30'),this['handleFetchEnd'][_0x2b25('0x10')](this));}catch(_0x334d8b){logger[_0x2b25('0x13')](_0x334d8b);}}else{this['imap'][_0x2b25('0x31')](!![],this[_0x2b25('0x29')][_0x2b25('0x10')](this));}}};EmailImap[_0x2b25('0x17')][_0x2b25('0x32')]=function(_0x17213d,_0x2559b8){_0x17213d['on'](_0x2b25('0x33'),this[_0x2b25('0x34')]['bind'](this));_0x17213d[_0x2b25('0x11')](_0x2b25('0x35'),this[_0x2b25('0x36')][_0x2b25('0x10')](this));_0x17213d[_0x2b25('0x11')](_0x2b25('0x30'),this[_0x2b25('0x37')]['bind'](this));};EmailImap[_0x2b25('0x17')][_0x2b25('0x34')]=function(_0x5bcb5b,_0x4fd8bc){simpleParser(_0x5bcb5b,{'Iconv':Iconv},this[_0x2b25('0x38')][_0x2b25('0x10')](this));};EmailImap['prototype'][_0x2b25('0x36')]=function(_0x323fa0){};EmailImap[_0x2b25('0x17')]['handleMessageEnd']=function(){};EmailImap[_0x2b25('0x17')][_0x2b25('0x38')]=function(_0x3cd95e,_0x94b7ea){if(_0x3cd95e){logger[_0x2b25('0x13')](_0x3cd95e);}else{var _0x5c9540=this;utils[_0x2b25('0x39')](this['account'],_0x94b7ea,function(_0x1acb34){_0x5c9540[_0x2b25('0x26')](_0x2b25('0xa'),_0x1acb34);});}};EmailImap['prototype'][_0x2b25('0x3a')]=function(){this[_0x2b25('0x2')][_0x2b25('0x31')](!![],this[_0x2b25('0x29')][_0x2b25('0x10')](this));};EmailImap[_0x2b25('0x17')][_0x2b25('0x2f')]=function(_0x3cacec){this[_0x2b25('0x14')](_0x3cacec);this[_0x2b25('0x2')]['closeBox'](!![],this[_0x2b25('0x29')][_0x2b25('0x10')](this));};EmailImap[_0x2b25('0x17')][_0x2b25('0x12')]=function(){this[_0x2b25('0x26')](_0x2b25('0x30'));};EmailImap[_0x2b25('0x17')]['handleError']=function(_0x271ebd,_0x1262a2){logger[_0x2b25('0x13')](_0x2b25('0x14'),this['account'][_0x2b25('0xa')],JSON[_0x2b25('0x3b')](_0x271ebd));var _0x15731b='';if(_0x271ebd){if(_0x271ebd[_0x2b25('0x3c')]){_0x15731b=_0x271ebd[_0x2b25('0x3c')];}else{for(var _0x451ab9 in _0x271ebd){if(_0x271ebd[_0x2b25('0x3d')](_0x451ab9)){_0x15731b+=_[_0x2b25('0x3e')](_0x451ab9)+':\x20'+_0x271ebd[_0x451ab9]+'\x0a';}}}}if(_0x1262a2){this[_0x2b25('0x2')][_0x2b25('0x30')]();}else{this[_0x2b25('0x26')](_0x2b25('0x13'),_0x15731b);this[_0x2b25('0x26')](_0x2b25('0x30'));}};module[_0x2b25('0x3f')]=EmailImap;
\ No newline at end of file
+var _0x1c4f=['stringify','textCode','hasOwnProperty','upperFirst','path','util','imap','randomstring','mailparser','iconv','Iconv','events','./utils','../../../config/logger','email','mailbox','account','getAccount','once','ready','handleReady','bind','handleEnd','error','handleError','inherits','connTimeout','authTimeout','isNil','service','authentication','user','host','port','tls','autotls','required','password','getHost','anonymous@xcally.com','openBox','handleOpenBox','prototype','emit','box','readUnseen','handleCloseBox','end','search','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','handleFetchError','handleFetchEnd','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser'];(function(_0x3c8909,_0x25314e){var _0x3d1373=function(_0x9adeb1){while(--_0x9adeb1){_0x3c8909['push'](_0x3c8909['shift']());}};_0x3d1373(++_0x25314e);}(_0x1c4f,0x1f4));var _0xf1c4=function(_0x3e3fb1,_0x5cfc91){_0x3e3fb1=_0x3e3fb1-0x0;var _0x43d970=_0x1c4f[_0x3e3fb1];return _0x43d970;};'use strict';var fs=require('fs');var path=require(_0xf1c4('0x0'));var util=require(_0xf1c4('0x1'));var Imap=require(_0xf1c4('0x2'));var _=require('lodash');var rs=require(_0xf1c4('0x3'));var simpleParser=require(_0xf1c4('0x4'))['simpleParser'];var Iconv=require(_0xf1c4('0x5'))[_0xf1c4('0x6')];var EventEmitter=require(_0xf1c4('0x7'))['EventEmitter'];var utils=require(_0xf1c4('0x8'));var logger=require(_0xf1c4('0x9'))(_0xf1c4('0xa'));function EmailImap(_0x79689d,_0x3dadae){this[_0xf1c4('0xb')]='INBOX';this[_0xf1c4('0xc')]=this[_0xf1c4('0xd')](_0x79689d,_0x3dadae);this[_0xf1c4('0x2')]=new Imap(this['account']);this[_0xf1c4('0x2')][_0xf1c4('0xe')](_0xf1c4('0xf'),this[_0xf1c4('0x10')][_0xf1c4('0x11')](this));this[_0xf1c4('0x2')]['once']('end',this[_0xf1c4('0x12')][_0xf1c4('0x11')](this));this[_0xf1c4('0x2')]['on'](_0xf1c4('0x13'),this[_0xf1c4('0x14')][_0xf1c4('0x11')](this));this[_0xf1c4('0x2')]['connect']();}util[_0xf1c4('0x15')](EmailImap,EventEmitter);EmailImap['prototype'][_0xf1c4('0xd')]=function(_0x3c211b,_0x11cb27){var _0x1f1122={'connTimeout':_0x3c211b[_0xf1c4('0x16')]?_0x3c211b[_0xf1c4('0x16')]*0x3e8:0x2710,'authTimeout':_0x3c211b[_0xf1c4('0x17')]?_0x3c211b[_0xf1c4('0x17')]*0x3e8:0x1388};if(_[_0xf1c4('0x18')](_0x3c211b[_0xf1c4('0x19')])){if(_0x3c211b[_0xf1c4('0x1a')]){_0x1f1122['user']=_0x3c211b[_0xf1c4('0x1b')];_0x1f1122['password']=_0x3c211b['password'];}_0x1f1122[_0xf1c4('0x1c')]=_0x3c211b[_0xf1c4('0x1c')];_0x1f1122['port']=_0x3c211b[_0xf1c4('0x1d')]||0x3e1;if(_0x3c211b[_0xf1c4('0x1e')]){_0x1f1122[_0xf1c4('0x1e')]=!![];}else{_0x1f1122[_0xf1c4('0x1e')]=![];_0x1f1122[_0xf1c4('0x1f')]=_0xf1c4('0x20');}}else{_0x1f1122['user']=_0x3c211b['user'];_0x1f1122[_0xf1c4('0x21')]=_0x3c211b[_0xf1c4('0x21')];_0x1f1122[_0xf1c4('0x1c')]=utils[_0xf1c4('0x22')](_0x3c211b[_0xf1c4('0x19')]);_0x1f1122[_0xf1c4('0x1d')]=0x3e1;_0x1f1122[_0xf1c4('0x1e')]=!![];}_0x1f1122['email']=_0x11cb27||_0x3c211b['user']||_0xf1c4('0x23');return _0x1f1122;};EmailImap['prototype']['handleReady']=function(){this[_0xf1c4('0x2')][_0xf1c4('0x24')](this['mailbox'],![],this[_0xf1c4('0x25')]['bind'](this));};EmailImap[_0xf1c4('0x26')]['handleOpenBox']=function(_0x1bc59e,_0x286028){if(_0x1bc59e){this[_0xf1c4('0x14')](_0x1bc59e,!![]);}else{this[_0xf1c4('0x27')](_0xf1c4('0x28'),_0x286028);this[_0xf1c4('0x29')]();}};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x2a')]=function(_0x318dbb){if(_0x318dbb){this['handleError'](_0x318dbb,!![]);}else{this[_0xf1c4('0x2')][_0xf1c4('0x2b')]();}};EmailImap['prototype']['readUnseen']=function(){this[_0xf1c4('0x2')][_0xf1c4('0x2c')]([_0xf1c4('0x2d')],this[_0xf1c4('0x2e')][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x2e')]=function(_0x322bf4,_0x451c13){if(_0x322bf4){this[_0xf1c4('0x14')](_0x322bf4,!![]);}else{if(_0x451c13[_0xf1c4('0x2f')]){try{var _0x4143cc=this[_0xf1c4('0x2')][_0xf1c4('0x30')](_0x451c13,{'bodies':'','markSeen':!![]});_0x4143cc['on']('message',this[_0xf1c4('0x31')][_0xf1c4('0x11')](this));_0x4143cc[_0xf1c4('0xe')](_0xf1c4('0x13'),this[_0xf1c4('0x32')][_0xf1c4('0x11')](this));_0x4143cc[_0xf1c4('0xe')](_0xf1c4('0x2b'),this[_0xf1c4('0x33')][_0xf1c4('0x11')](this));}catch(_0x53c4d0){logger['error'](_0x53c4d0);}}else{this[_0xf1c4('0x2')][_0xf1c4('0x34')](!![],this[_0xf1c4('0x2a')][_0xf1c4('0x11')](this));}}};EmailImap[_0xf1c4('0x26')]['handleFetchMessage']=function(_0x2c35d2,_0x1da257){_0x2c35d2['on'](_0xf1c4('0x35'),this[_0xf1c4('0x36')][_0xf1c4('0x11')](this));_0x2c35d2[_0xf1c4('0xe')](_0xf1c4('0x37'),this[_0xf1c4('0x38')][_0xf1c4('0x11')](this));_0x2c35d2[_0xf1c4('0xe')](_0xf1c4('0x2b'),this['handleMessageEnd'][_0xf1c4('0x11')](this));};EmailImap['prototype'][_0xf1c4('0x36')]=function(_0x34211d,_0x5ce132){simpleParser(_0x34211d,{'Iconv':Iconv},this[_0xf1c4('0x39')][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')]['handleMessageAttributes']=function(_0x54b2d1){};EmailImap[_0xf1c4('0x26')]['handleMessageEnd']=function(){};EmailImap['prototype'][_0xf1c4('0x39')]=function(_0x96b648,_0x3aaffc){if(_0x96b648){logger[_0xf1c4('0x13')](_0x96b648);}else{var _0xd557f9=this;utils['parser'](this['account'],_0x3aaffc,function(_0x15f65d){_0xd557f9[_0xf1c4('0x27')](_0xf1c4('0xa'),_0x15f65d);});}};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x33')]=function(){this[_0xf1c4('0x2')]['closeBox'](!![],this['handleCloseBox'][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')]['handleFetchError']=function(_0x11e7a1){this[_0xf1c4('0x14')](_0x11e7a1);this[_0xf1c4('0x2')][_0xf1c4('0x34')](!![],this[_0xf1c4('0x2a')][_0xf1c4('0x11')](this));};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x12')]=function(){this[_0xf1c4('0x27')](_0xf1c4('0x2b'));};EmailImap[_0xf1c4('0x26')][_0xf1c4('0x14')]=function(_0x597f85,_0x141521){logger[_0xf1c4('0x13')]('handleError',this[_0xf1c4('0xc')]['email'],JSON[_0xf1c4('0x3a')](_0x597f85));var _0x468ce0='';if(_0x597f85){if(_0x597f85[_0xf1c4('0x3b')]){_0x468ce0=_0x597f85[_0xf1c4('0x3b')];}else{for(var _0x503d65 in _0x597f85){if(_0x597f85[_0xf1c4('0x3c')](_0x503d65)){_0x468ce0+=_[_0xf1c4('0x3d')](_0x503d65)+':\x20'+_0x597f85[_0x503d65]+'\x0a';}}}}if(_0x141521){this[_0xf1c4('0x2')][_0xf1c4('0x2b')]();}else{this[_0xf1c4('0x27')](_0xf1c4('0x13'),_0x468ce0);this[_0xf1c4('0x27')](_0xf1c4('0x2b'));}};module['exports']=EmailImap;
\ No newline at end of file
index 56c1e7f..767d24d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe83=['verify','Not\x20verifired','nodemailer','bluebird','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','toString'];(function(_0x2776db,_0xfb2eda){var _0x572930=function(_0x5e1032){while(--_0x5e1032){_0x2776db['push'](_0x2776db['shift']());}};_0x572930(++_0xfb2eda);}(_0xbe83,0x12e));var _0x3be8=function(_0x446631,_0x1f5241){_0x446631=_0x446631-0x0;var _0x12e335=_0xbe83[_0x446631];return _0x12e335;};'use strict';var nodemailer=require(_0x3be8('0x0'));var BPromise=require(_0x3be8('0x1'));var inlineBase64=require(_0x3be8('0x2'));function EmailSmtp(){}EmailSmtp[_0x3be8('0x3')][_0x3be8('0x4')]=function(_0x16098e,_0x492434){return new BPromise(function(_0x387878,_0x5addc6){var _0x39ebe1=nodemailer[_0x3be8('0x5')](_0x16098e);_0x39ebe1[_0x3be8('0x6')](_0x3be8('0x7'),inlineBase64());_0x39ebe1[_0x3be8('0x8')](_0x492434,function(_0x1c5c3a,_0x3042c7){if(_0x1c5c3a){_0x5addc6(_0x1c5c3a[_0x3be8('0x9')]());}else{_0x387878(_0x3042c7);}});});};EmailSmtp[_0x3be8('0x3')][_0x3be8('0xa')]=function(_0x37410d){return new BPromise(function(_0x2ae50d,_0x4aca07){var _0x5896b7=nodemailer[_0x3be8('0x5')](_0x37410d);_0x5896b7[_0x3be8('0xa')](function(_0x3db6a1,_0x537edb){if(_0x3db6a1){_0x4aca07(_0x3db6a1[_0x3be8('0x9')]());}else{if(_0x537edb){_0x2ae50d(_0x537edb);}else{_0x4aca07(_0x3be8('0xb'));}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0x64f6=['use','compile','toString','verify','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x64f6,0x199));var _0x664f=function(_0x1fd441,_0x2629bf){_0x1fd441=_0x1fd441-0x0;var _0x411a91=_0x64f6[_0x1fd441];return _0x411a91;};'use strict';var nodemailer=require(_0x664f('0x0'));var BPromise=require('bluebird');var inlineBase64=require(_0x664f('0x1'));function EmailSmtp(){}EmailSmtp[_0x664f('0x2')][_0x664f('0x3')]=function(_0x42cca0,_0x36a86f){return new BPromise(function(_0x2597e9,_0x3f0d5f){var _0x3381e7=nodemailer[_0x664f('0x4')](_0x42cca0);_0x3381e7[_0x664f('0x5')](_0x664f('0x6'),inlineBase64());_0x3381e7['sendMail'](_0x36a86f,function(_0x5ace92,_0x14c7f1){if(_0x5ace92){_0x3f0d5f(_0x5ace92[_0x664f('0x7')]());}else{_0x2597e9(_0x14c7f1);}});});};EmailSmtp[_0x664f('0x2')][_0x664f('0x8')]=function(_0x52b7a4){return new BPromise(function(_0x38e039,_0x3334c0){var _0x3a830b=nodemailer['createTransport'](_0x52b7a4);_0x3a830b[_0x664f('0x8')](function(_0xdbff70,_0x497523){if(_0xdbff70){_0x3334c0(_0xdbff70[_0x664f('0x7')]());}else{if(_0x497523){_0x38e039(_0x497523);}else{_0x3334c0('Not\x20verifired');}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
index d8ac571..787d842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2f5=['messageId','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','<p>Empty\x20message</p>','Attachments','Title','getHost','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','outlook365','127.0.0.1','lodash','moment','randomstring','path','node-tnef','../../../config/environment','value','address','generate','@xcally.com','name','indexOf','split','length','slice','join','Anonymous','pop','isEmpty','anonymous','html','test','replace','includes','<img','attachments','forEach','push','filename','_SRC','_IMG','\x20]</span>','body','message','originTo','email','originCc','bcc','attachment-','format','%s-%s','now','writeFileSync','content','contentType','headerLines','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject'];(function(_0x48029d,_0x7425d6){var _0x40141c=function(_0x34cab2){while(--_0x34cab2){_0x48029d['push'](_0x48029d['shift']());}};_0x40141c(++_0x7425d6);}(_0xd2f5,0x12e));var _0x5d2f=function(_0x3e9af2,_0x71fc77){_0x3e9af2=_0x3e9af2-0x0;var _0x175e37=_0xd2f5[_0x3e9af2];return _0x175e37;};'use strict';var _=require(_0x5d2f('0x0'));var moment=require(_0x5d2f('0x1'));var random=require(_0x5d2f('0x2'));var fs=require('fs');var path=require(_0x5d2f('0x3'));var util=require('util');var tnef=require(_0x5d2f('0x4'));var logger=require('../../../config/logger')('email');var config=require(_0x5d2f('0x5'));function getAddress(_0x436447){var _0x263891=_['head'](_0x436447[_0x5d2f('0x6')]);return _0x263891&&_0x263891[_0x5d2f('0x7')]?_0x263891[_0x5d2f('0x7')]:'anonymous'+random[_0x5d2f('0x8')](0x6)+_0x5d2f('0x9');}function getFirstName(_0x330195){var _0x485432=_['head'](_0x330195[_0x5d2f('0x6')]);if(_0x485432&&_0x485432[_0x5d2f('0xa')]){if(_0x485432['name']==_0x485432[_0x5d2f('0x7')]){return _0x485432[_0x5d2f('0xa')]['substring'](0x0,_0x485432['name'][_0x5d2f('0xb')]('@'));}var _0x458f43=_0x485432['name'][_0x5d2f('0xc')](/\s+/);return _0x458f43[_0x5d2f('0xd')]>0x1?_0x458f43[_0x5d2f('0xe')](0x0,-0x1)[_0x5d2f('0xf')]('\x20'):_0x485432[_0x5d2f('0xa')];}return _0x5d2f('0x10');}function getLastName(_0x149e68){var _0x526695=_['head'](_0x149e68['value']);if(_0x526695&&_0x526695['name']){var _0x1a76eb=_0x526695['name'][_0x5d2f('0xc')](/\s+/);return _0x1a76eb[_0x5d2f('0xd')]>0x1?_0x1a76eb[_0x5d2f('0x11')]():'';}return'';}function getMails(_0x1cd3e5,_0x53f46f){var _0x64e7e0='';for(var _0x875750=0x0;_0x875750<_0x53f46f['value'][_0x5d2f('0xd')];_0x875750+=0x1){if(_0x53f46f[_0x5d2f('0x6')][_0x875750][_0x5d2f('0x7')]!==_0x1cd3e5){if(!_[_0x5d2f('0x12')](_0x64e7e0)){_0x64e7e0+=',';}_0x64e7e0+=_0x53f46f[_0x5d2f('0x6')][_0x875750][_0x5d2f('0xa')]||_0x53f46f[_0x5d2f('0x6')][_0x875750][_0x5d2f('0x7')]||'';_0x64e7e0+='\x20<';_0x64e7e0+=_0x53f46f[_0x5d2f('0x6')][_0x875750][_0x5d2f('0x7')]?_0x53f46f[_0x5d2f('0x6')][_0x875750][_0x5d2f('0x7')]:_0x5d2f('0x13')+random['generate'](0x6)+_0x5d2f('0x9');_0x64e7e0+='>';}}return _0x64e7e0;}function parseEmail(_0x25fd87,_0x5994ba,_0x43fe3f){if(_0x5994ba[_0x5d2f('0x14')]){var _0x677173=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x677173[_0x5d2f('0x15')](_0x5994ba[_0x5d2f('0x14')])){_0x5994ba[_0x5d2f('0x14')]=_0x5994ba[_0x5d2f('0x14')][_0x5d2f('0x16')](_0x677173,'');}if(_0x5994ba[_0x5d2f('0x14')][_0x5d2f('0x17')](_0x5d2f('0x18'))){var _0x53bc35=[];_0x5994ba[_0x5d2f('0x19')][_0x5d2f('0x1a')](_0x355abe=>{_0x53bc35[_0x5d2f('0x1b')](_0x355abe[_0x5d2f('0x1c')]);});var _0x224827=/<img.*? _SRC(.*?)[^>]+>/g;var _0x3e57df=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x1e8501=_0x5994ba[_0x5d2f('0x14')]['replace'](_0x3e57df,_0x5d2f('0x1d'));var _0x208fc4=_0x1e8501['replace'](_0x224827,_0x5d2f('0x1e'));for(let _0x1a61f1=0x0;_0x1a61f1<_0x53bc35[_0x5d2f('0xd')];_0x1a61f1++){var _0x208a97=_0x208fc4[_0x5d2f('0x16')](_0x5d2f('0x1e'),'<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x53bc35[_0x1a61f1]+_0x5d2f('0x1f'));_0x208fc4=_0x208a97;}_0x5994ba[_0x5d2f('0x14')]=_0x208fc4;}_0x43fe3f['body']=_0x5994ba['html'];}else{_0x43fe3f['body']=_0x5994ba['textAsHtml'];}if(_0x43fe3f[_0x5d2f('0x20')]){_0x43fe3f[_0x5d2f('0x20')]=_0x43fe3f[_0x5d2f('0x20')][_0x5d2f('0x16')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x5994ba['to']){_0x43fe3f[_0x5d2f('0x21')][_0x5d2f('0x22')]=getMails(null,_0x5994ba['to']);var _0x2c0f2a=getMails(_0x25fd87[_0x5d2f('0x23')],_0x5994ba['to']);if(!_['isEmpty'](_0x2c0f2a)){_0x43fe3f[_0x5d2f('0x21')]['cc']+=_0x2c0f2a;}}if(_0x5994ba['cc']){_0x43fe3f['message'][_0x5d2f('0x24')]=getMails(null,_0x5994ba['cc']);var _0x16f19f=getMails(_0x25fd87[_0x5d2f('0x23')],_0x5994ba['cc']);if(!_[_0x5d2f('0x12')](_0x16f19f)){if(!_['isEmpty'](_0x43fe3f[_0x5d2f('0x21')]['cc'])){_0x43fe3f['message']['cc']+=',';}_0x43fe3f[_0x5d2f('0x21')]['cc']+=_0x16f19f;}}if(!_[_0x5d2f('0x17')](_0x43fe3f[_0x5d2f('0x21')]['originTo'],_0x25fd87[_0x5d2f('0x23')])&&!_[_0x5d2f('0x17')](_0x43fe3f[_0x5d2f('0x21')]['originCc'],_0x25fd87['email'])){_0x43fe3f[_0x5d2f('0x21')][_0x5d2f('0x25')]=_0x25fd87[_0x5d2f('0x23')];}if(_0x5994ba[_0x5d2f('0x19')]&&_0x5994ba[_0x5d2f('0x19')][_0x5d2f('0xd')]){_0x43fe3f[_0x5d2f('0x21')]['attach']=_0x5994ba['attachments'][_0x5d2f('0xd')];for(var _0x332abd=0x0,_0x432d8a,_0x343c1e,_0x57a504;_0x332abd<_0x5994ba['attachments']['length'];_0x332abd+=0x1){if(_0x5994ba[_0x5d2f('0x19')][_0x332abd]['type']==='attachment'){_0x57a504=_0x5994ba[_0x5d2f('0x19')][_0x332abd][_0x5d2f('0x1c')]||_0x5d2f('0x26')+_0x332abd;_0x432d8a=util[_0x5d2f('0x27')](_0x5d2f('0x28'),Date[_0x5d2f('0x29')](),_0x57a504);_0x343c1e=path[_0x5d2f('0xf')](config['root'],'server/files/attachments/',_0x432d8a);fs[_0x5d2f('0x2a')](_0x343c1e,_0x5994ba[_0x5d2f('0x19')][_0x332abd][_0x5d2f('0x2b')]);_0x43fe3f[_0x5d2f('0x21')][_0x5d2f('0x19')][_0x5d2f('0x1b')]({'name':_0x57a504,'basename':_0x432d8a,'type':_0x5994ba[_0x5d2f('0x19')][_0x332abd][_0x5d2f('0x2c')],'filepath':_0x343c1e});}}}if(_0x5994ba[_0x5d2f('0x2d')]&&_0x5994ba[_0x5d2f('0x2d')][_0x5d2f('0xd')]>0x0){var _0x1de840=['Auto-Submitted:\x20auto-replied',_0x5d2f('0x2e'),_0x5d2f('0x2f')];for(var _0x55f0aa=0x0;_0x55f0aa<_0x5994ba[_0x5d2f('0x2d')][_0x5d2f('0xd')];_0x55f0aa++){var _0x159ba1=_[_0x5d2f('0xb')](_0x1de840,_0x5994ba['headerLines'][_0x55f0aa][_0x5d2f('0x30')]);if(_0x159ba1>=0x0){_0x43fe3f[_0x5d2f('0x31')]=!![];}}}return _0x43fe3f;}exports[_0x5d2f('0x32')]=function(_0x48bf3f,_0x57a72f,_0x5dc54e){var _0xe6d87={'from':getAddress(_0x57a72f[_0x5d2f('0x33')]),'firstName':getFirstName(_0x57a72f[_0x5d2f('0x33')]),'lastName':getLastName(_0x57a72f[_0x5d2f('0x33')]),'mapKey':_0x5d2f('0x23'),'message':{'from':getMails(_0x48bf3f[_0x5d2f('0x23')],_0x57a72f[_0x5d2f('0x33')]),'to':_0x48bf3f[_0x5d2f('0x23')],'cc':'','subject':_0x57a72f[_0x5d2f('0x34')]||'','messageId':_0x57a72f[_0x5d2f('0x35')],'inReplyTo':_0x57a72f['inReplyTo'],'sentAt':moment(_0x57a72f[_0x5d2f('0x36')])['format'](_0x5d2f('0x37')),'attach':![],'attachments':[]}};if(!_0x57a72f[_0x5d2f('0x14')]&&!_0x57a72f['textAsHtml']){var _0x48f12d=_[_0x5d2f('0x38')](_0x57a72f[_0x5d2f('0x19')],{'contentType':_0x5d2f('0x39')});if(_0x48f12d[_0x5d2f('0xd')]){logger['info'](util['format'](_0x5d2f('0x3a'),_0x57a72f[_0x5d2f('0x35')]));tnef[_0x5d2f('0x3b')](_[_0x5d2f('0x3c')](_0x48f12d)[_0x5d2f('0x2b')],function(_0x44c540,_0x4af116){if(_0x4af116){_0x57a72f[_0x5d2f('0x14')]=_0x4af116['BodyHTML']||_0x5d2f('0x3d');if(_0x4af116[_0x5d2f('0x3e')]){for(var _0x3c2319=0x0;_0x3c2319<_0x4af116[_0x5d2f('0x3e')]['length'];_0x3c2319++){var _0x3d9972=_0x4af116[_0x5d2f('0x3e')][_0x3c2319];_0xe6d87[_0x5d2f('0x21')]['attachments'][_0x5d2f('0x1b')]({'filename':_0x3d9972[_0x5d2f('0x3f')],'content':Buffer['from'](_0x3d9972['Data'])});}}}_0x5dc54e(parseEmail(_0x48bf3f,_0x57a72f,_0xe6d87));});}else{_0x57a72f[_0x5d2f('0x14')]='<p>Empty\x20message</p>';_0x5dc54e(parseEmail(_0x48bf3f,_0x57a72f,_0xe6d87));}}else{_0x5dc54e(parseEmail(_0x48bf3f,_0x57a72f,_0xe6d87));}};exports[_0x5d2f('0x40')]=function(_0x4f9ee1){switch(_0x4f9ee1){case'gmail':return _0x5d2f('0x41');case _0x5d2f('0x42'):return _0x5d2f('0x43');case _0x5d2f('0x44'):return'imap-mail.outlook.com';case _0x5d2f('0x45'):return'outlook.office365.com';}return _0x5d2f('0x46');};
\ No newline at end of file
+var _0xf960=['from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','getHost','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','lodash','randomstring','util','node-tnef','email','head','value','address','@xcally.com','name','substring','indexOf','split','slice','join','Anonymous','length','isEmpty','anonymous','generate','html','test','replace','includes','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','message','originTo','originCc','bcc','type','attachment','format','%s-%s','now','root','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','line','isAutoreply','parser'];(function(_0x6dea12,_0x4fb070){var _0x132324=function(_0x585d05){while(--_0x585d05){_0x6dea12['push'](_0x6dea12['shift']());}};_0x132324(++_0x4fb070);}(_0xf960,0x193));var _0x0f96=function(_0x695b76,_0x551526){_0x695b76=_0x695b76-0x0;var _0x1dc21f=_0xf960[_0x695b76];return _0x1dc21f;};'use strict';var _=require(_0x0f96('0x0'));var moment=require('moment');var random=require(_0x0f96('0x1'));var fs=require('fs');var path=require('path');var util=require(_0x0f96('0x2'));var tnef=require(_0x0f96('0x3'));var logger=require('../../../config/logger')(_0x0f96('0x4'));var config=require('../../../config/environment');function getAddress(_0x4ed973){var _0x125f4b=_[_0x0f96('0x5')](_0x4ed973[_0x0f96('0x6')]);return _0x125f4b&&_0x125f4b[_0x0f96('0x7')]?_0x125f4b[_0x0f96('0x7')]:'anonymous'+random['generate'](0x6)+_0x0f96('0x8');}function getFirstName(_0x354642){var _0x4408ed=_[_0x0f96('0x5')](_0x354642[_0x0f96('0x6')]);if(_0x4408ed&&_0x4408ed[_0x0f96('0x9')]){if(_0x4408ed['name']==_0x4408ed[_0x0f96('0x7')]){return _0x4408ed['name'][_0x0f96('0xa')](0x0,_0x4408ed['name'][_0x0f96('0xb')]('@'));}var _0x3cc1c8=_0x4408ed[_0x0f96('0x9')][_0x0f96('0xc')](/\s+/);return _0x3cc1c8['length']>0x1?_0x3cc1c8[_0x0f96('0xd')](0x0,-0x1)[_0x0f96('0xe')]('\x20'):_0x4408ed[_0x0f96('0x9')];}return _0x0f96('0xf');}function getLastName(_0x5ce4a1){var _0x3df618=_[_0x0f96('0x5')](_0x5ce4a1[_0x0f96('0x6')]);if(_0x3df618&&_0x3df618[_0x0f96('0x9')]){var _0x208769=_0x3df618[_0x0f96('0x9')]['split'](/\s+/);return _0x208769[_0x0f96('0x10')]>0x1?_0x208769['pop']():'';}return'';}function getMails(_0x4f55cf,_0x2ab709){var _0x2b808d='';for(var _0x183d93=0x0;_0x183d93<_0x2ab709[_0x0f96('0x6')][_0x0f96('0x10')];_0x183d93+=0x1){if(_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x7')]!==_0x4f55cf){if(!_[_0x0f96('0x11')](_0x2b808d)){_0x2b808d+=',';}_0x2b808d+=_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x9')]||_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x7')]||'';_0x2b808d+='\x20<';_0x2b808d+=_0x2ab709[_0x0f96('0x6')][_0x183d93][_0x0f96('0x7')]?_0x2ab709['value'][_0x183d93][_0x0f96('0x7')]:_0x0f96('0x12')+random[_0x0f96('0x13')](0x6)+_0x0f96('0x8');_0x2b808d+='>';}}return _0x2b808d;}function parseEmail(_0x4a2a34,_0x210a93,_0xb1e078){if(_0x210a93[_0x0f96('0x14')]){var _0x47993c=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x47993c[_0x0f96('0x15')](_0x210a93[_0x0f96('0x14')])){_0x210a93['html']=_0x210a93[_0x0f96('0x14')][_0x0f96('0x16')](_0x47993c,'');}if(_0x210a93[_0x0f96('0x14')][_0x0f96('0x17')]('<img')){var _0xabbaf0=[];_0x210a93[_0x0f96('0x18')][_0x0f96('0x19')](_0x1d0847=>{_0xabbaf0[_0x0f96('0x1a')](_0x1d0847[_0x0f96('0x1b')]);});var _0x3cfca7=/<img.*? _SRC(.*?)[^>]+>/g;var _0x4f6934=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x248b45=_0x210a93[_0x0f96('0x14')][_0x0f96('0x16')](_0x4f6934,'_SRC');var _0x43128e=_0x248b45[_0x0f96('0x16')](_0x3cfca7,_0x0f96('0x1c'));for(let _0x1db1c1=0x0;_0x1db1c1<_0xabbaf0[_0x0f96('0x10')];_0x1db1c1++){var _0x591c91=_0x43128e[_0x0f96('0x16')](_0x0f96('0x1c'),_0x0f96('0x1d')+_0xabbaf0[_0x1db1c1]+_0x0f96('0x1e'));_0x43128e=_0x591c91;}_0x210a93[_0x0f96('0x14')]=_0x43128e;}_0xb1e078[_0x0f96('0x1f')]=_0x210a93[_0x0f96('0x14')];}else{_0xb1e078[_0x0f96('0x1f')]=_0x210a93[_0x0f96('0x20')];}if(_0xb1e078[_0x0f96('0x1f')]){_0xb1e078['body']=_0xb1e078[_0x0f96('0x1f')][_0x0f96('0x16')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x210a93['to']){_0xb1e078[_0x0f96('0x21')][_0x0f96('0x22')]=getMails(null,_0x210a93['to']);var _0x581192=getMails(_0x4a2a34[_0x0f96('0x4')],_0x210a93['to']);if(!_[_0x0f96('0x11')](_0x581192)){_0xb1e078[_0x0f96('0x21')]['cc']+=_0x581192;}}if(_0x210a93['cc']){_0xb1e078[_0x0f96('0x21')][_0x0f96('0x23')]=getMails(null,_0x210a93['cc']);var _0xade3be=getMails(_0x4a2a34[_0x0f96('0x4')],_0x210a93['cc']);if(!_['isEmpty'](_0xade3be)){if(!_['isEmpty'](_0xb1e078[_0x0f96('0x21')]['cc'])){_0xb1e078['message']['cc']+=',';}_0xb1e078['message']['cc']+=_0xade3be;}}if(!_['includes'](_0xb1e078[_0x0f96('0x21')][_0x0f96('0x22')],_0x4a2a34[_0x0f96('0x4')])&&!_['includes'](_0xb1e078[_0x0f96('0x21')][_0x0f96('0x23')],_0x4a2a34[_0x0f96('0x4')])){_0xb1e078[_0x0f96('0x21')][_0x0f96('0x24')]=_0x4a2a34[_0x0f96('0x4')];}if(_0x210a93[_0x0f96('0x18')]&&_0x210a93[_0x0f96('0x18')]['length']){_0xb1e078[_0x0f96('0x21')]['attach']=_0x210a93[_0x0f96('0x18')][_0x0f96('0x10')];for(var _0x21a382=0x0,_0xffa801,_0x1d2646,_0x1f7278;_0x21a382<_0x210a93[_0x0f96('0x18')]['length'];_0x21a382+=0x1){if(_0x210a93['attachments'][_0x21a382][_0x0f96('0x25')]===_0x0f96('0x26')){_0x1f7278=_0x210a93[_0x0f96('0x18')][_0x21a382][_0x0f96('0x1b')]||'attachment-'+_0x21a382;_0xffa801=util[_0x0f96('0x27')](_0x0f96('0x28'),Date[_0x0f96('0x29')](),_0x1f7278);_0x1d2646=path[_0x0f96('0xe')](config[_0x0f96('0x2a')],_0x0f96('0x2b'),_0xffa801);fs[_0x0f96('0x2c')](_0x1d2646,_0x210a93[_0x0f96('0x18')][_0x21a382][_0x0f96('0x2d')]);_0xb1e078['message'][_0x0f96('0x18')][_0x0f96('0x1a')]({'name':_0x1f7278,'basename':_0xffa801,'type':_0x210a93['attachments'][_0x21a382][_0x0f96('0x2e')],'filepath':_0x1d2646});}}}if(_0x210a93[_0x0f96('0x2f')]&&_0x210a93[_0x0f96('0x2f')]['length']>0x0){var _0x43fec4=[_0x0f96('0x30'),'X-Auto-Response-Suppress:\x20All',_0x0f96('0x31')];for(var _0x3478d5=0x0;_0x3478d5<_0x210a93['headerLines'][_0x0f96('0x10')];_0x3478d5++){var _0x4e1626=_['indexOf'](_0x43fec4,_0x210a93[_0x0f96('0x2f')][_0x3478d5][_0x0f96('0x32')]);if(_0x4e1626>=0x0){_0xb1e078[_0x0f96('0x33')]=!![];}}}return _0xb1e078;}exports[_0x0f96('0x34')]=function(_0x261452,_0x1e6b76,_0x2c2346){var _0x2a8032={'from':getAddress(_0x1e6b76['from']),'firstName':getFirstName(_0x1e6b76['from']),'lastName':getLastName(_0x1e6b76[_0x0f96('0x35')]),'mapKey':'email','message':{'from':getMails(_0x261452[_0x0f96('0x4')],_0x1e6b76[_0x0f96('0x35')]),'to':_0x261452[_0x0f96('0x4')],'cc':'','subject':_0x1e6b76[_0x0f96('0x36')]||'','messageId':_0x1e6b76[_0x0f96('0x37')],'inReplyTo':_0x1e6b76[_0x0f96('0x38')],'sentAt':moment(_0x1e6b76[_0x0f96('0x39')])['format'](_0x0f96('0x3a')),'attach':![],'attachments':[]}};if(!_0x1e6b76[_0x0f96('0x14')]&&!_0x1e6b76[_0x0f96('0x20')]){var _0xaf2a3c=_[_0x0f96('0x3b')](_0x1e6b76[_0x0f96('0x18')],{'contentType':_0x0f96('0x3c')});if(_0xaf2a3c[_0x0f96('0x10')]){logger[_0x0f96('0x3d')](util[_0x0f96('0x27')](_0x0f96('0x3e'),_0x1e6b76[_0x0f96('0x37')]));tnef['parseBuffer'](_['first'](_0xaf2a3c)[_0x0f96('0x2d')],function(_0x35b61a,_0x1b3605){if(_0x1b3605){_0x1e6b76['html']=_0x1b3605[_0x0f96('0x3f')]||_0x0f96('0x40');if(_0x1b3605[_0x0f96('0x41')]){for(var _0x2d363b=0x0;_0x2d363b<_0x1b3605[_0x0f96('0x41')]['length'];_0x2d363b++){var _0x961972=_0x1b3605[_0x0f96('0x41')][_0x2d363b];_0x2a8032['message']['attachments'][_0x0f96('0x1a')]({'filename':_0x961972[_0x0f96('0x42')],'content':Buffer[_0x0f96('0x35')](_0x961972[_0x0f96('0x43')])});}}}_0x2c2346(parseEmail(_0x261452,_0x1e6b76,_0x2a8032));});}else{_0x1e6b76[_0x0f96('0x14')]='<p>Empty\x20message</p>';_0x2c2346(parseEmail(_0x261452,_0x1e6b76,_0x2a8032));}}else{_0x2c2346(parseEmail(_0x261452,_0x1e6b76,_0x2a8032));}};exports[_0x0f96('0x44')]=function(_0x3fb81e){switch(_0x3fb81e){case _0x0f96('0x45'):return _0x0f96('0x46');case _0x0f96('0x47'):return _0x0f96('0x48');case _0x0f96('0x49'):return _0x0f96('0x4a');case'outlook365':return _0x0f96('0x4b');}return'127.0.0.1';};
\ No newline at end of file
index a23edcf..d926764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3c0=['Service','key','SERV','active','Imap','Smtp','lodash','name'];(function(_0x474bc0,_0x26989c){var _0x4b24cf=function(_0x4be866){while(--_0x4be866){_0x474bc0['push'](_0x474bc0['shift']());}};_0x4b24cf(++_0x26989c);}(_0xb3c0,0x136));var _0x0b3c=function(_0x2e3539,_0x5a3af5){_0x2e3539=_0x2e3539-0x0;var _0x28127e=_0xb3c0[_0x2e3539];return _0x28127e;};'use strict';var _=require(_0x0b3c('0x0'));function MailAccount(_0x4f0487){this['id']=_0x4f0487['id']||0x0;this[_0x0b3c('0x1')]=_0x4f0487['name']||_0x0b3c('0x2');this[_0x0b3c('0x3')]=_0x4f0487[_0x0b3c('0x3')]||_0x0b3c('0x4');this[_0x0b3c('0x5')]=_0x4f0487['active']||![];this[_0x0b3c('0x6')]=_0x4f0487[_0x0b3c('0x6')]||[];this[_0x0b3c('0x7')]=_0x4f0487[_0x0b3c('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0x8c4f=['Service','key','SERV','Imap','Smtp','exports','lodash','name'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x8c4f,0x1ee));var _0xf8c4=function(_0x1c4a75,_0x1085e3){_0x1c4a75=_0x1c4a75-0x0;var _0x186f9b=_0x8c4f[_0x1c4a75];return _0x186f9b;};'use strict';var _=require(_0xf8c4('0x0'));function MailAccount(_0xf5d6de){this['id']=_0xf5d6de['id']||0x0;this[_0xf8c4('0x1')]=_0xf5d6de[_0xf8c4('0x1')]||_0xf8c4('0x2');this[_0xf8c4('0x3')]=_0xf5d6de['key']||_0xf8c4('0x4');this['active']=_0xf5d6de['active']||![];this[_0xf8c4('0x5')]=_0xf5d6de[_0xf8c4('0x5')]||[];this[_0xf8c4('0x6')]=_0xf5d6de[_0xf8c4('0x6')]||[];}module[_0xf8c4('0x7')]=MailAccount;
\ No newline at end of file
index f0f1ced..1491e1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ee=['mailAccounts','lodash','../model/mailAccount','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined'];(function(_0x543084,_0x4337f5){var _0x306a57=function(_0x2769ed){while(--_0x2769ed){_0x543084['push'](_0x543084['shift']());}};_0x306a57(++_0x4337f5);}(_0xe6ee,0x17d));var _0xee6e=function(_0x235ab5,_0x35f786){_0x235ab5=_0x235ab5-0x0;var _0x2030fb=_0xe6ee[_0x235ab5];return _0x2030fb;};'use strict';var _=require(_0xee6e('0x0'));var MailAccount=require(_0xee6e('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x472cca,_0x408ba9,_0x2b7b15){var _0x66aefb=_[_0xee6e('0x2')](_0x472cca,function(_0x3fb686,_0xb816a7){return _0x3fb686[_0x2b7b15];});for(var _0x4ca4ac in _0x408ba9){if(_0x408ba9[_0xee6e('0x3')](_0x4ca4ac)){if(!_0x66aefb[_0x4ca4ac]){delete _0x408ba9[_0x4ca4ac];}}}}Realtime[_0xee6e('0x4')][_0xee6e('0x5')]=function(_0x2225ae,_0x138564){for(var _0x2b2cf9 in _0x138564){if(_0x2225ae[_0xee6e('0x3')](_0x2b2cf9)){_0x2225ae[_0x2b2cf9]=_0x138564[_0x2b2cf9];}}};Realtime[_0xee6e('0x4')][_0xee6e('0x6')]=function(){var _0xabbb21=this;return function(_0x25f3b4){if(_0x25f3b4){freeIsNotKey(_0x25f3b4,_0xabbb21['mailAccounts'],'id');for(var _0x376fea=0x0,_0x29174e={},_0xb778c={};_0x376fea<_0x25f3b4[_0xee6e('0x7')];_0x376fea+=0x1){_0x29174e=_0x25f3b4[_0x376fea];if(_[_0xee6e('0x8')](_0xabbb21[_0xee6e('0x9')][_0x29174e['id']])){_0xabbb21['mailAccounts'][_0x29174e['id']]=new MailAccount(_0x29174e);}else{_['merge'](_0xabbb21[_0xee6e('0x9')][_0x29174e['id']],_0x29174e);}}}return _0xabbb21[_0xee6e('0x9')];};};module['exports']=Realtime;
\ No newline at end of file
+var _0x776d=['initMailAccounts','length','isUndefined','merge','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','mergeFromDatabase'];(function(_0x35f7f5,_0x4e2ee1){var _0x5567a4=function(_0x3e5df0){while(--_0x3e5df0){_0x35f7f5['push'](_0x35f7f5['shift']());}};_0x5567a4(++_0x4e2ee1);}(_0x776d,0x7e));var _0xd776=function(_0x55e20e,_0x38aee4){_0x55e20e=_0x55e20e-0x0;var _0x154154=_0x776d[_0x55e20e];return _0x154154;};'use strict';var _=require(_0xd776('0x0'));var MailAccount=require(_0xd776('0x1'));var Realtime=function(){this[_0xd776('0x2')]={};};function freeIsNotKey(_0x169ed0,_0x2b2543,_0x3f0511){var _0x1006d7=_[_0xd776('0x3')](_0x169ed0,function(_0x45f52c,_0x39516c){return _0x45f52c[_0x3f0511];});for(var _0x241f79 in _0x2b2543){if(_0x2b2543[_0xd776('0x4')](_0x241f79)){if(!_0x1006d7[_0x241f79]){delete _0x2b2543[_0x241f79];}}}}Realtime['prototype'][_0xd776('0x5')]=function(_0x2a2d8b,_0x3b88fc){for(var _0x2bde25 in _0x3b88fc){if(_0x2a2d8b['hasOwnProperty'](_0x2bde25)){_0x2a2d8b[_0x2bde25]=_0x3b88fc[_0x2bde25];}}};Realtime['prototype'][_0xd776('0x6')]=function(){var _0x596561=this;return function(_0x178ee3){if(_0x178ee3){freeIsNotKey(_0x178ee3,_0x596561[_0xd776('0x2')],'id');for(var _0x2f41c1=0x0,_0x2df9a4={},_0x38ebb9={};_0x2f41c1<_0x178ee3[_0xd776('0x7')];_0x2f41c1+=0x1){_0x2df9a4=_0x178ee3[_0x2f41c1];if(_[_0xd776('0x8')](_0x596561[_0xd776('0x2')][_0x2df9a4['id']])){_0x596561[_0xd776('0x2')][_0x2df9a4['id']]=new MailAccount(_0x2df9a4);}else{_[_0xd776('0x9')](_0x596561[_0xd776('0x2')][_0x2df9a4['id']],_0x2df9a4);}}}return _0x596561[_0xd776('0x2')];};};module[_0xd776('0xa')]=Realtime;
\ No newline at end of file
index ae203de..b2dc658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x458a=['GetMailAccount','name','email','active','key','ListId','TemplateId','MailServerIn','getMailAccount','notify','Request','NotifyMailAccount','../client'];(function(_0x5aa2c8,_0x1cc3a3){var _0x42c532=function(_0x51cfc6){while(--_0x51cfc6){_0x5aa2c8['push'](_0x5aa2c8['shift']());}};_0x42c532(++_0x1cc3a3);}(_0x458a,0x110));var _0xa458=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x458a[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xa458('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request'](_0xa458('0x1'),{'options':{'attributes':['id',_0xa458('0x2'),'service',_0xa458('0x3'),_0xa458('0x4'),_0xa458('0x5'),_0xa458('0x6'),_0xa458('0x7')],'raw':![],'include':[{'model':_0xa458('0x8'),'as':'Imap'},{'model':'MailServerOut','as':'Smtp'}]},'log':_0xa458('0x9')});};};exports[_0xa458('0xa')]=function(_0x435bc7,_0x192b61){return client[_0xa458('0xb')]('NotifyMailAccount',{'account':{'id':_0x435bc7},'body':_0x192b61,'log':_0xa458('0xc')});};
\ No newline at end of file
+var _0xdf5d=['MailServerOut','Smtp','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','active','ListId','TemplateId','MailServerIn','Imap'];(function(_0x5dac64,_0x51d507){var _0x19ebb6=function(_0x12a447){while(--_0x12a447){_0x5dac64['push'](_0x5dac64['shift']());}};_0x19ebb6(++_0x51d507);}(_0xdf5d,0x126));var _0xddf5=function(_0x132450,_0x2ef14f){_0x132450=_0x132450-0x0;var _0x1adf23=_0xdf5d[_0x132450];return _0x1adf23;};'use strict';var client=require(_0xddf5('0x0'));exports[_0xddf5('0x1')]=function(){return function(){return client[_0xddf5('0x2')](_0xddf5('0x3'),{'options':{'attributes':['id',_0xddf5('0x4'),_0xddf5('0x5'),_0xddf5('0x6'),_0xddf5('0x7'),'key',_0xddf5('0x8'),_0xddf5('0x9')],'raw':![],'include':[{'model':_0xddf5('0xa'),'as':_0xddf5('0xb')},{'model':_0xddf5('0xc'),'as':_0xddf5('0xd')}]},'log':_0xddf5('0xe')});};};exports[_0xddf5('0xf')]=function(_0x3a1e13,_0x3df89){return client[_0xddf5('0x2')](_0xddf5('0x10'),{'account':{'id':_0x3a1e13},'body':_0x3df89,'log':_0xddf5('0x10')});};
\ No newline at end of file
index f54bf40..8abfe85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x240b=['getSettings','Request','ShowSetting','../client'];(function(_0x52cb4a,_0x217996){var _0x2d84e7=function(_0x1ecdb2){while(--_0x1ecdb2){_0x52cb4a['push'](_0x52cb4a['shift']());}};_0x2d84e7(++_0x217996);}(_0x240b,0xf7));var _0xb240=function(_0x488412,_0x48fd26){_0x488412=_0x488412-0x0;var _0x2115de=_0x240b[_0x488412];return _0x2115de;};'use strict';var client=require(_0xb240('0x0'));exports[_0xb240('0x1')]=function(){return client[_0xb240('0x2')](_0xb240('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':'GetSettings'});};
\ No newline at end of file
+var _0x07e0=['../client','getSettings','ShowSetting','GetSettings'];(function(_0x5bc682,_0x3b4f4b){var _0x474109=function(_0x5246b4){while(--_0x5246b4){_0x5bc682['push'](_0x5bc682['shift']());}};_0x474109(++_0x3b4f4b);}(_0x07e0,0x1c4));var _0x007e=function(_0x1a9283,_0x57eafc){_0x1a9283=_0x1a9283-0x0;var _0x5353fb=_0x07e0[_0x1a9283];return _0x5353fb;};'use strict';var client=require(_0x007e('0x0'));exports[_0x007e('0x1')]=function(){return client['Request'](_0x007e('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0x007e('0x3')});};
\ No newline at end of file
index 3a0d9a6..3d97260 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(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xa9e0[_0x30ae5e];return _0x1f2e93;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0xa9e0[_0xbe200f];return _0x192597;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=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 9788ad5..e7841ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54d2=['defaults','localhost','../../config/triggers','default','../../config/express','../../routes','once','listening','log','exports','http','express','sticky-session','ioredis','../../config/environment','timeout','listen','port','socket.io','websocket','redis'];(function(_0x559c60,_0x2a2367){var _0x3e0047=function(_0x176da3){while(--_0x176da3){_0x559c60['push'](_0x559c60['shift']());}};_0x3e0047(++_0x2a2367);}(_0x54d2,0x73));var _0x254d=function(_0xa709ec,_0x24e57c){_0xa709ec=_0xa709ec-0x0;var _0xae5fb5=_0x54d2[_0xa709ec];return _0xae5fb5;};'use strict';var _=require('lodash');var http=require(_0x254d('0x0'));var express=require(_0x254d('0x1'));var sticky=require(_0x254d('0x2'));var Redis=require(_0x254d('0x3'));var config=require(_0x254d('0x4'));var app=express();var server=http['createServer'](app);server[_0x254d('0x5')]=0xdbba0;if(sticky[_0x254d('0x6')](server,config[_0x254d('0x7')])){var socketio=require(_0x254d('0x8'))(server,{'transports':[_0x254d('0x9'),'polling']});config[_0x254d('0xa')]=_[_0x254d('0xb')](config[_0x254d('0xa')],{'host':_0x254d('0xc'),'port':0x18eb});socketio['adapter'](require('socket.io-redis')({'pubClient':new Redis(config[_0x254d('0xa')]),'subClient':new Redis(config['redis'])}));require(_0x254d('0xd'))[_0x254d('0xe')]();require('../../config/socketio')['default'](socketio);require(_0x254d('0xf'))[_0x254d('0xe')](app);require(_0x254d('0x10'))[_0x254d('0xe')](app);}else{server[_0x254d('0x11')](_0x254d('0x12'),function(){console[_0x254d('0x13')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0x254d('0x7')]);});}exports=module[_0x254d('0x14')]=app;
\ No newline at end of file
+var _0xab25=['express','ioredis','../../config/environment','createServer','port','socket.io','websocket','redis','localhost','adapter','socket.io-redis','default','../../config/socketio','../../config/express','../../routes','once','listening','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','http'];(function(_0x5406be,_0x4fac5f){var _0x174807=function(_0x56dacf){while(--_0x56dacf){_0x5406be['push'](_0x5406be['shift']());}};_0x174807(++_0x4fac5f);}(_0xab25,0xe5));var _0x5ab2=function(_0x1177a1,_0xcadbc){_0x1177a1=_0x1177a1-0x0;var _0x342968=_0xab25[_0x1177a1];return _0x342968;};'use strict';var _=require(_0x5ab2('0x0'));var http=require(_0x5ab2('0x1'));var express=require(_0x5ab2('0x2'));var sticky=require('sticky-session');var Redis=require(_0x5ab2('0x3'));var config=require(_0x5ab2('0x4'));var app=express();var server=http[_0x5ab2('0x5')](app);server['timeout']=0xdbba0;if(sticky['listen'](server,config[_0x5ab2('0x6')])){var socketio=require(_0x5ab2('0x7'))(server,{'transports':[_0x5ab2('0x8'),'polling']});config[_0x5ab2('0x9')]=_['defaults'](config['redis'],{'host':_0x5ab2('0xa'),'port':0x18eb});socketio[_0x5ab2('0xb')](require(_0x5ab2('0xc'))({'pubClient':new Redis(config[_0x5ab2('0x9')]),'subClient':new Redis(config[_0x5ab2('0x9')])}));require('../../config/triggers')[_0x5ab2('0xd')]();require(_0x5ab2('0xe'))[_0x5ab2('0xd')](socketio);require(_0x5ab2('0xf'))[_0x5ab2('0xd')](app);require(_0x5ab2('0x10'))[_0x5ab2('0xd')](app);}else{server[_0x5ab2('0x11')](_0x5ab2('0x12'),function(){console['log'](_0x5ab2('0x13'),config['port']);});}exports=module[_0x5ab2('0x14')]=app;
\ No newline at end of file
index 4e22749..5105897 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23dc=['routing','error','message','result','exports','../../config/logger','client','Request','request','then','debug','rpc'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x23dc,0x13d));var _0xc23d=function(_0x41de5a,_0x4d385c){_0x41de5a=_0x41de5a-0x0;var _0x4b21d5=_0x23dc[_0x41de5a];return _0x4b21d5;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xc23d('0x0'))('routing');var client=jayson[_0xc23d('0x1')]['http']({'port':0x2329});client[_0xc23d('0x2')]=function(_0x41d90c,_0x1139a2){return new BPromise(function(_0x21a3b7,_0x38a39c){return client[_0xc23d('0x3')](_0x41d90c,_0x1139a2)[_0xc23d('0x4')](function(_0xc9a6ea){logger[_0xc23d('0x5')](_0xc23d('0x6'),_0xc23d('0x7'),_0x41d90c,_0x1139a2,_0xc9a6ea);if(_0xc9a6ea[_0xc23d('0x8')]){logger[_0xc23d('0x8')](_0xc23d('0x6'),'routing',_0x41d90c,_0xc9a6ea[_0xc23d('0x8')][_0xc23d('0x9')],_0x1139a2);return _0x38a39c(_0xc9a6ea['error'][_0xc23d('0x9')]);}else{return _0x21a3b7(_0xc9a6ea[_0xc23d('0xa')]);}})['catch'](function(_0x24ed72){logger[_0xc23d('0x8')]('rpc',_0xc23d('0x7'),_0x41d90c,_0x24ed72,_0x1139a2);return _0x38a39c(_0x24ed72);});});};module[_0xc23d('0xb')]=client;
\ No newline at end of file
+var _0xda2d=['jayson/promise','bluebird','../../config/logger','client','Request','request','then','debug','rpc','routing','error','message','result','catch','exports'];(function(_0x366abc,_0x2dd460){var _0x5e1bac=function(_0x274993){while(--_0x274993){_0x366abc['push'](_0x366abc['shift']());}};_0x5e1bac(++_0x2dd460);}(_0xda2d,0x195));var _0xdda2=function(_0x4a7750,_0x4d5014){_0x4a7750=_0x4a7750-0x0;var _0x1229d7=_0xda2d[_0x4a7750];return _0x1229d7;};'use strict';var jayson=require(_0xdda2('0x0'));var BPromise=require(_0xdda2('0x1'));var logger=require(_0xdda2('0x2'))('routing');var client=jayson[_0xdda2('0x3')]['http']({'port':0x2329});client[_0xdda2('0x4')]=function(_0x3def4c,_0x513a97){return new BPromise(function(_0x213ae4,_0xe85ec5){return client[_0xdda2('0x5')](_0x3def4c,_0x513a97)[_0xdda2('0x6')](function(_0x526ca3){logger[_0xdda2('0x7')](_0xdda2('0x8'),_0xdda2('0x9'),_0x3def4c,_0x513a97,_0x526ca3);if(_0x526ca3[_0xdda2('0xa')]){logger[_0xdda2('0xa')](_0xdda2('0x8'),'routing',_0x3def4c,_0x526ca3[_0xdda2('0xa')][_0xdda2('0xb')],_0x513a97);return _0xe85ec5(_0x526ca3['error'][_0xdda2('0xb')]);}else{return _0x213ae4(_0x526ca3[_0xdda2('0xc')]);}})[_0xdda2('0xd')](function(_0xb30e51){logger[_0xdda2('0xa')]('rpc','routing',_0x3def4c,_0xb30e51,_0x513a97);return _0xe85ec5(_0xb30e51);});});};module[_0xdda2('0xe')]=client;
\ No newline at end of file
index 40e6a94..3e2ee01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0919=['then','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','log','bluebird','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/whatsappQueue','resolve','initAgents','getIntervals'];(function(_0x5093e9,_0x5154d0){var _0x4c9a22=function(_0x15176d){while(--_0x15176d){_0x5093e9['push'](_0x5093e9['shift']());}};_0x4c9a22(++_0x5154d0);}(_0x0919,0xb0));var _0x9091=function(_0x1afc73,_0x1e3ecb){_0x1afc73=_0x1afc73-0x0;var _0x23f0d2=_0x0919[_0x1afc73];return _0x23f0d2;};'use strict';var BPromise=require(_0x9091('0x0'));var server=require(_0x9091('0x1'));var Realtime=require(_0x9091('0x2'));var user=require(_0x9091('0x3'));var interval=require(_0x9091('0x4'));var openchannelQueue=require(_0x9091('0x5'));var chatQueue=require(_0x9091('0x6'));var smsQueue=require(_0x9091('0x7'));var mailQueue=require(_0x9091('0x8'));var faxQueue=require('./rpc/faxQueue');var whatsappQueue=require(_0x9091('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x9091('0xa')]()['then'](user['getAgents']())['then'](realtime[_0x9091('0xb')]())['then'](interval[_0x9091('0xc')]())[_0x9091('0xd')](realtime[_0x9091('0xe')]())[_0x9091('0xd')](openchannelQueue[_0x9091('0xf')]())['then'](realtime[_0x9091('0x10')]())[_0x9091('0xd')](chatQueue[_0x9091('0x11')]())['then'](realtime[_0x9091('0x12')]())[_0x9091('0xd')](smsQueue[_0x9091('0x13')]())['then'](realtime[_0x9091('0x14')]())[_0x9091('0xd')](mailQueue[_0x9091('0x15')]())['then'](realtime['initMailQueues']())[_0x9091('0xd')](faxQueue['getFaxQueues']())[_0x9091('0xd')](realtime[_0x9091('0x16')]())['then'](whatsappQueue[_0x9091('0x17')]())[_0x9091('0xd')](realtime[_0x9091('0x18')]())[_0x9091('0xd')](function(){return realtime;});}function main(){return server[_0x9091('0x19')](realtime)['then'](function(_0x2bea4d){return initRealtime();})[_0x9091('0xd')](function(_0x3fdd79){return setInterval(initRealtime,0x1388);})['catch'](function(_0x4645bc){console[_0x9091('0x1a')](_0x4645bc);});}main();
\ No newline at end of file
+var _0xe339=['catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','initIntervals','getOpenchannelQueues','initOpenchannelQueues','getChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues'];(function(_0x1e5cc3,_0x238a87){var _0x15c596=function(_0x27bb04){while(--_0x27bb04){_0x1e5cc3['push'](_0x1e5cc3['shift']());}};_0x15c596(++_0x238a87);}(_0xe339,0xff));var _0x9e33=function(_0x58c20f,_0x4cdb1b){_0x58c20f=_0x58c20f-0x0;var _0x3b0318=_0xe339[_0x58c20f];return _0x3b0318;};'use strict';var BPromise=require('bluebird');var server=require(_0x9e33('0x0'));var Realtime=require(_0x9e33('0x1'));var user=require(_0x9e33('0x2'));var interval=require(_0x9e33('0x3'));var openchannelQueue=require(_0x9e33('0x4'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x9e33('0x5'));var mailQueue=require(_0x9e33('0x6'));var faxQueue=require(_0x9e33('0x7'));var whatsappQueue=require(_0x9e33('0x8'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x9e33('0x9')]()[_0x9e33('0xa')](user['getAgents']())[_0x9e33('0xa')](realtime['initAgents']())[_0x9e33('0xa')](interval['getIntervals']())[_0x9e33('0xa')](realtime[_0x9e33('0xb')]())['then'](openchannelQueue[_0x9e33('0xc')]())[_0x9e33('0xa')](realtime[_0x9e33('0xd')]())[_0x9e33('0xa')](chatQueue[_0x9e33('0xe')]())[_0x9e33('0xa')](realtime['initChatQueues']())[_0x9e33('0xa')](smsQueue['getSmsQueues']())[_0x9e33('0xa')](realtime[_0x9e33('0xf')]())[_0x9e33('0xa')](mailQueue[_0x9e33('0x10')]())['then'](realtime[_0x9e33('0x11')]())['then'](faxQueue[_0x9e33('0x12')]())[_0x9e33('0xa')](realtime[_0x9e33('0x13')]())[_0x9e33('0xa')](whatsappQueue[_0x9e33('0x14')]())[_0x9e33('0xa')](realtime['initWhatsappQueues']())[_0x9e33('0xa')](function(){return realtime;});}function main(){return server['listen'](realtime)['then'](function(_0x280e6f){return initRealtime();})[_0x9e33('0xa')](function(_0x53fa4d){return setInterval(initRealtime,0x1388);})[_0x9e33('0x15')](function(_0xa2cc58){console[_0x9e33('0x16')](_0xa2cc58);});}main();
\ No newline at end of file
index 88ba4c8..f6c7164 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x302f55,_0x31872f){var _0x55ca94=function(_0x477ac3){while(--_0x477ac3){_0x302f55['push'](_0x302f55['shift']());}};_0x55ca94(++_0x31872f);}(_0x814b,0x1a2));var _0xb814=function(_0x57014b,_0x360c0f){_0x57014b=_0x57014b-0x0;var _0x2b258a=_0x814b[_0x57014b];return _0x2b258a;};'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
+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(_0x339c23,_0x541ff6){var _0x5bf134=function(_0x46c91d){while(--_0x46c91d){_0x339c23['push'](_0x339c23['shift']());}};_0x5bf134(++_0x541ff6);}(_0x814b,0x1a2));var _0xb814=function(_0x3b7b42,_0x31badd){_0x3b7b42=_0x3b7b42-0x0;var _0x1ebaad=_0x814b[_0x3b7b42];return _0x1ebaad;};'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 ca0bd33..0259235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e15=['error','message','catch','bluebird','http','request','then'];(function(_0x34ac63,_0x40f4da){var _0x44aee2=function(_0x5a1140){while(--_0x5a1140){_0x34ac63['push'](_0x34ac63['shift']());}};_0x44aee2(++_0x40f4da);}(_0x6e15,0x184));var _0x56e1=function(_0x4d493b,_0x4e79d7){_0x4d493b=_0x4d493b-0x0;var _0x372276=_0x6e15[_0x4d493b];return _0x372276;};'use strict';var BPromise=require(_0x56e1('0x0'));var jayson=require('jayson/promise');var client=jayson['client'][_0x56e1('0x1')]({'port':0x232b});function request(_0x5e9bc3,_0x9785d5){return new BPromise(function(_0x4019ff,_0x221a04){return client[_0x56e1('0x2')](_0x5e9bc3,_0x9785d5)[_0x56e1('0x3')](function(_0x37b6e0){if(_0x37b6e0[_0x56e1('0x4')]){return _0x221a04(_0x37b6e0[_0x56e1('0x4')][_0x56e1('0x5')]);}else{return _0x4019ff(_0x37b6e0['result']);}})[_0x56e1('0x6')](function(_0x39c6c1){return _0x221a04(_0x39c6c1);});});}exports['sendMailMessage']=function(_0x1cfbea,_0x160150){return request('SendMail',{'account':_0x1cfbea,'message':_0x160150});};
\ No newline at end of file
+var _0x2614=['error','result','catch','sendMailMessage','http'];(function(_0x90951f,_0x4cde35){var _0xd93f0d=function(_0x49808d){while(--_0x49808d){_0x90951f['push'](_0x90951f['shift']());}};_0xd93f0d(++_0x4cde35);}(_0x2614,0xb3));var _0x4261=function(_0x4620fd,_0x37be01){_0x4620fd=_0x4620fd-0x0;var _0x2934bf=_0x2614[_0x4620fd];return _0x2934bf;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson['client'][_0x4261('0x0')]({'port':0x232b});function request(_0x434fac,_0x190624){return new BPromise(function(_0x308891,_0x16c593){return client['request'](_0x434fac,_0x190624)['then'](function(_0x495e50){if(_0x495e50[_0x4261('0x1')]){return _0x16c593(_0x495e50[_0x4261('0x1')]['message']);}else{return _0x308891(_0x495e50[_0x4261('0x2')]);}})[_0x4261('0x3')](function(_0x2f19b8){return _0x16c593(_0x2f19b8);});});}exports[_0x4261('0x4')]=function(_0x5e3c85,_0x5101c9){return request('SendMail',{'account':_0x5e3c85,'message':_0x5101c9});};
\ No newline at end of file
index 178f41b..68582ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14d0=['openchannel','fax','sms','length','getChannelStatus','Status','StatusTime','toNumber','format','mailCurrentCapacity','faxStatusTime','whatsappStatus','busy','emit','user:save','lodash','moment','md5','defaults','redis','localhost','name','online','voicePause','chatPause','mailPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','updateRealtime','prototype','Capacity','maxcapacity','working','mail'];(function(_0x55cc90,_0x4c1338){var _0x533e13=function(_0xbfe2c){while(--_0xbfe2c){_0x55cc90['push'](_0x55cc90['shift']());}};_0x533e13(++_0x4c1338);}(_0x14d0,0x127));var _0x014d=function(_0x367e5b,_0x5721e4){_0x367e5b=_0x367e5b-0x0;var _0x4b909e=_0x14d0[_0x367e5b];return _0x4b909e;};'use strict';var _=require(_0x014d('0x0'));var moment=require(_0x014d('0x1'));var md5=require(_0x014d('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config['redis']=_[_0x014d('0x3')](config[_0x014d('0x4')],{'host':_0x014d('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x014d('0x4')]));function Agent(_0x4b5892){this['id']=_0x4b5892['id']||0x0;this[_0x014d('0x6')]=_0x4b5892[_0x014d('0x6')]||'';this[_0x014d('0x7')]=_0x4b5892['online']||!![];this['voicePause']=_0x4b5892[_0x014d('0x8')]||![];this[_0x014d('0x9')]=_0x4b5892[_0x014d('0x9')]||![];this[_0x014d('0xa')]=_0x4b5892['mailPause']||![];this['faxPause']=_0x4b5892['faxPause']||![];this[_0x014d('0xb')]=_0x4b5892[_0x014d('0xb')]||![];this[_0x014d('0xc')]=_0x4b5892[_0x014d('0xc')]||![];this[_0x014d('0xd')]=_0x014d('0xe');this[_0x014d('0xf')]=0x0;this[_0x014d('0x10')]=_0x4b5892[_0x014d('0x10')]||0x0;this[_0x014d('0x11')]=0x0;this[_0x014d('0x12')]=_0x014d('0xe');this[_0x014d('0x13')]=0x0;this[_0x014d('0x14')]=_0x4b5892[_0x014d('0x14')]||0x0;this['mailCurrentCapacity']=0x0;this[_0x014d('0x15')]='unknown';this['faxStatusTime']=0x0;this[_0x014d('0x16')]=_0x4b5892['faxCapacity']||0x0;this[_0x014d('0x17')]=0x0;this[_0x014d('0x18')]=_0x014d('0xe');this[_0x014d('0x19')]=0x0;this[_0x014d('0x1a')]=_0x4b5892[_0x014d('0x1a')]||0x0;this[_0x014d('0x1b')]=0x0;this['whatsappStatus']=_0x014d('0xe');this[_0x014d('0x1c')]=0x0;this['whatsappCapacity']=_0x4b5892['whatsappCapacity']||0x0;this[_0x014d('0x1d')]=0x0;this[_0x014d('0x1e')]=_0x014d('0xe');this[_0x014d('0x1f')]=0x0;this['openchannelCapacity']=_0x4b5892[_0x014d('0x20')]||0x0;this[_0x014d('0x21')]=0x0;this['busy']=![];this[_0x014d('0x22')]=undefined;this[_0x014d('0x2')]='';this[_0x014d('0x23')]();}Agent[_0x014d('0x24')]['getChannelStatus']=function(_0x25f271){if(this[_0x25f271+'CurrentCapacity']>0x0){if(this[_0x25f271+'Capacity']>0x0&&this[_0x25f271+'CurrentCapacity']>=this[_0x25f271+_0x014d('0x25')]){return _0x014d('0x26');}else{return _0x014d('0x27');}}else{return'idle';}};Agent[_0x014d('0x24')][_0x014d('0x23')]=function(){var _0x598e37=[_0x014d('0x28'),'chat',_0x014d('0x29'),_0x014d('0x2a'),_0x014d('0x2b'),'whatsapp'];for(var _0xab5cc8=0x0;_0xab5cc8<_0x598e37[_0x014d('0x2c')];_0xab5cc8+=0x1){var _0x5a89fe=this[_0x014d('0x2d')](_0x598e37[_0xab5cc8]);if(this[_0x598e37[_0xab5cc8]+_0x014d('0x2e')]!==_0x5a89fe){this[_0x598e37[_0xab5cc8]+_0x014d('0x2f')]=_[_0x014d('0x30')](moment()[_0x014d('0x31')]('x'));}this[_0x598e37[_0xab5cc8]+_0x014d('0x2e')]=_0x5a89fe;}var _0x598a11={'id':this['id'],'name':this[_0x014d('0x6')],'online':this['online'],'voicePause':this[_0x014d('0x8')],'chatPause':this['chatPause'],'mailPause':this[_0x014d('0xa')],'smsPause':this['smsPause'],'faxPause':this['faxPause'],'openchannelPause':this[_0x014d('0xc')],'chatStatus':this[_0x014d('0xd')],'chatStatusTime':this[_0x014d('0xf')],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this[_0x014d('0x11')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x014d('0x13')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0x014d('0x32')],'faxStatus':this[_0x014d('0x15')],'faxStatusTime':this[_0x014d('0x33')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this['faxCurrentCapacity'],'smsStatus':this['smsStatus'],'smsStatusTime':this[_0x014d('0x19')],'smsCapacity':this['smsCapacity'],'smsCurrentCapacity':this[_0x014d('0x1b')],'whatsappStatus':this[_0x014d('0x34')],'whatsappStatusTime':this[_0x014d('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x014d('0x1d')],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0x014d('0x1f')],'openchannelCapacity':this[_0x014d('0x20')],'openchannelCurrentCapacity':this[_0x014d('0x21')],'busy':this[_0x014d('0x35')],'busyQueue':this['busyQueue']};var _0x593bfc=md5(JSON['stringify'](_0x598a11));if(this[_0x014d('0x2')]!==_0x593bfc){this['md5']=_0x593bfc;io[_0x014d('0x36')](_0x014d('0x37'),_0x598a11);}};module['exports']=Agent;
\ No newline at end of file
+var _0xfd2e=['name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','mail','chat','fax','sms','whatsapp','length','Status','StatusTime','toNumber','smsStatus','smsCurrentCapacity','stringify','emit','user:save','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost'];(function(_0x37ba47,_0x4ecf7e){var _0x330a32=function(_0x5f09ab){while(--_0x5f09ab){_0x37ba47['push'](_0x37ba47['shift']());}};_0x330a32(++_0x4ecf7e);}(_0xfd2e,0x1a3));var _0xefd2=function(_0x332110,_0x5696bc){_0x332110=_0x332110-0x0;var _0x42797d=_0xfd2e[_0x332110];return _0x42797d;};'use strict';var _=require(_0xefd2('0x0'));var moment=require(_0xefd2('0x1'));var md5=require(_0xefd2('0x2'));var Redis=require(_0xefd2('0x3'));var config=require(_0xefd2('0x4'));config[_0xefd2('0x5')]=_[_0xefd2('0x6')](config[_0xefd2('0x5')],{'host':_0xefd2('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xefd2('0x5')]));function Agent(_0x35151f){this['id']=_0x35151f['id']||0x0;this[_0xefd2('0x8')]=_0x35151f[_0xefd2('0x8')]||'';this[_0xefd2('0x9')]=_0x35151f[_0xefd2('0x9')]||!![];this['voicePause']=_0x35151f[_0xefd2('0xa')]||![];this[_0xefd2('0xb')]=_0x35151f[_0xefd2('0xb')]||![];this['mailPause']=_0x35151f[_0xefd2('0xc')]||![];this[_0xefd2('0xd')]=_0x35151f['faxPause']||![];this[_0xefd2('0xe')]=_0x35151f[_0xefd2('0xe')]||![];this[_0xefd2('0xf')]=_0x35151f[_0xefd2('0xf')]||![];this[_0xefd2('0x10')]=_0xefd2('0x11');this[_0xefd2('0x12')]=0x0;this[_0xefd2('0x13')]=_0x35151f['chatCapacity']||0x0;this[_0xefd2('0x14')]=0x0;this[_0xefd2('0x15')]=_0xefd2('0x11');this['mailStatusTime']=0x0;this[_0xefd2('0x16')]=_0x35151f[_0xefd2('0x16')]||0x0;this[_0xefd2('0x17')]=0x0;this[_0xefd2('0x18')]=_0xefd2('0x11');this[_0xefd2('0x19')]=0x0;this[_0xefd2('0x1a')]=_0x35151f[_0xefd2('0x1a')]||0x0;this[_0xefd2('0x1b')]=0x0;this['smsStatus']=_0xefd2('0x11');this[_0xefd2('0x1c')]=0x0;this[_0xefd2('0x1d')]=_0x35151f[_0xefd2('0x1d')]||0x0;this['smsCurrentCapacity']=0x0;this[_0xefd2('0x1e')]=_0xefd2('0x11');this[_0xefd2('0x1f')]=0x0;this['whatsappCapacity']=_0x35151f[_0xefd2('0x20')]||0x0;this[_0xefd2('0x21')]=0x0;this[_0xefd2('0x22')]=_0xefd2('0x11');this['openchannelStatusTime']=0x0;this[_0xefd2('0x23')]=_0x35151f[_0xefd2('0x23')]||0x0;this[_0xefd2('0x24')]=0x0;this[_0xefd2('0x25')]=![];this[_0xefd2('0x26')]=undefined;this[_0xefd2('0x2')]='';this[_0xefd2('0x27')]();}Agent[_0xefd2('0x28')][_0xefd2('0x29')]=function(_0x49c9ac){if(this[_0x49c9ac+_0xefd2('0x2a')]>0x0){if(this[_0x49c9ac+_0xefd2('0x2b')]>0x0&&this[_0x49c9ac+_0xefd2('0x2a')]>=this[_0x49c9ac+_0xefd2('0x2b')]){return _0xefd2('0x2c');}else{return _0xefd2('0x2d');}}else{return _0xefd2('0x2e');}};Agent['prototype'][_0xefd2('0x27')]=function(){var _0xc5e578=[_0xefd2('0x2f'),_0xefd2('0x30'),'openchannel',_0xefd2('0x31'),_0xefd2('0x32'),_0xefd2('0x33')];for(var _0x37cfaa=0x0;_0x37cfaa<_0xc5e578[_0xefd2('0x34')];_0x37cfaa+=0x1){var _0x7631d7=this[_0xefd2('0x29')](_0xc5e578[_0x37cfaa]);if(this[_0xc5e578[_0x37cfaa]+_0xefd2('0x35')]!==_0x7631d7){this[_0xc5e578[_0x37cfaa]+_0xefd2('0x36')]=_[_0xefd2('0x37')](moment()['format']('x'));}this[_0xc5e578[_0x37cfaa]+_0xefd2('0x35')]=_0x7631d7;}var _0x54d82a={'id':this['id'],'name':this[_0xefd2('0x8')],'online':this[_0xefd2('0x9')],'voicePause':this[_0xefd2('0xa')],'chatPause':this[_0xefd2('0xb')],'mailPause':this[_0xefd2('0xc')],'smsPause':this[_0xefd2('0xe')],'faxPause':this[_0xefd2('0xd')],'openchannelPause':this[_0xefd2('0xf')],'chatStatus':this[_0xefd2('0x10')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this['chatCapacity'],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xefd2('0x15')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this[_0xefd2('0x16')],'mailCurrentCapacity':this[_0xefd2('0x17')],'faxStatus':this[_0xefd2('0x18')],'faxStatusTime':this[_0xefd2('0x19')],'faxCapacity':this[_0xefd2('0x1a')],'faxCurrentCapacity':this[_0xefd2('0x1b')],'smsStatus':this[_0xefd2('0x38')],'smsStatusTime':this[_0xefd2('0x1c')],'smsCapacity':this[_0xefd2('0x1d')],'smsCurrentCapacity':this[_0xefd2('0x39')],'whatsappStatus':this[_0xefd2('0x1e')],'whatsappStatusTime':this[_0xefd2('0x1f')],'whatsappCapacity':this[_0xefd2('0x20')],'whatsappCurrentCapacity':this[_0xefd2('0x21')],'openchannelStatus':this[_0xefd2('0x22')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0xefd2('0x23')],'openchannelCurrentCapacity':this[_0xefd2('0x24')],'busy':this[_0xefd2('0x25')],'busyQueue':this[_0xefd2('0x26')]};var _0x2d39d7=md5(JSON[_0xefd2('0x3a')](_0x54d82a));if(this['md5']!==_0x2d39d7){this['md5']=_0x2d39d7;io[_0xefd2('0x3b')](_0xefd2('0x3c'),_0x54d82a);}};module['exports']=Agent;
\ No newline at end of file
index f8bdd40..48fbc5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0d3=['Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','chatPause','available','chat:queue:%s','chat_queue:save','exports','lodash','md5','../../../config/environment','redis','socket.io-emitter','name','timeout','beepall'];(function(_0x3a8cab,_0x375ef7){var _0x2be7ad=function(_0x4a1164){while(--_0x4a1164){_0x3a8cab['push'](_0x3a8cab['shift']());}};_0x2be7ad(++_0x375ef7);}(_0xf0d3,0xd0));var _0x3f0d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf0d3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3f0d('0x0'));var md5=require(_0x3f0d('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x3f0d('0x2'));config[_0x3f0d('0x3')]=_['defaults'](config[_0x3f0d('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0x3f0d('0x4'))(new Redis(config[_0x3f0d('0x3')]));function ChatQueue(_0x1358d2){this['id']=_0x1358d2['id']||0x0;this[_0x3f0d('0x5')]=_0x1358d2[_0x3f0d('0x5')]||'';this['timeout']=_0x1358d2[_0x3f0d('0x6')]||0xa;this['strategy']=_0x1358d2['strategy']||_0x3f0d('0x7');this[_0x3f0d('0x8')]=_0x1358d2[_0x3f0d('0x8')];this[_0x3f0d('0x9')]={};this[_0x3f0d('0xa')]=0x0;this[_0x3f0d('0x1')]='';this[_0x3f0d('0xb')]();this[_0x3f0d('0xc')]();}ChatQueue[_0x3f0d('0xd')][_0x3f0d('0xb')]=function(){var _0x535bec=this[_0x3f0d('0x9')]['_rr'];this[_0x3f0d('0x9')]=_['map'](this[_0x3f0d('0x8')],'id');this[_0x3f0d('0x9')][_0x3f0d('0xe')]=_0x535bec;};ChatQueue[_0x3f0d('0xd')]['updateRealtime']=function(){this[_0x3f0d('0xf')]=0x0;this[_0x3f0d('0x10')]=0x0;for(var _0x3cd257=0x0;_0x3cd257<this[_0x3f0d('0x8')][_0x3f0d('0x11')];_0x3cd257+=0x1){if(this[_0x3f0d('0x8')][_0x3cd257][_0x3f0d('0x12')]){this[_0x3f0d('0xf')]+=0x1;}if(this[_0x3f0d('0x8')][_0x3cd257][_0x3f0d('0x13')]){this[_0x3f0d('0x10')]+=0x1;}}this[_0x3f0d('0x14')]=this[_0x3f0d('0xf')]-this['paused'];this[_0x3f0d('0x14')]=this[_0x3f0d('0x14')]>=0x0?this['available']:0x0;var _0x11f5cf={'id':this['id'],'available':this[_0x3f0d('0x14')],'loggedIn':this[_0x3f0d('0xf')],'name':this[_0x3f0d('0x5')],'paused':this[_0x3f0d('0x10')],'waiting':this['waiting']};var _0x31531b=md5(JSON['stringify'](_0x11f5cf));if(this[_0x3f0d('0x1')]!==_0x31531b){this[_0x3f0d('0x1')]=_0x31531b;io['to'](util['format'](_0x3f0d('0x15'),_0x11f5cf[_0x3f0d('0x5')]))['emit'](_0x3f0d('0x16'),_0x11f5cf);}};module[_0x3f0d('0x17')]=ChatQueue;
\ No newline at end of file
+var _0x99f3=['exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','available','chat:queue:%s','emit','chat_queue:save'];(function(_0x3950f6,_0xd769f8){var _0x3e6887=function(_0x1518a5){while(--_0x1518a5){_0x3950f6['push'](_0x3950f6['shift']());}};_0x3e6887(++_0xd769f8);}(_0x99f3,0x151));var _0x399f=function(_0x783834,_0x38c810){_0x783834=_0x783834-0x0;var _0x22055f=_0x99f3[_0x783834];return _0x22055f;};'use strict';var _=require(_0x399f('0x0'));var md5=require(_0x399f('0x1'));var util=require('util');var Redis=require(_0x399f('0x2'));var config=require(_0x399f('0x3'));config[_0x399f('0x4')]=_[_0x399f('0x5')](config[_0x399f('0x4')],{'host':_0x399f('0x6'),'port':0x18eb});var io=require(_0x399f('0x7'))(new Redis(config[_0x399f('0x4')]));function ChatQueue(_0x5c8cf0){this['id']=_0x5c8cf0['id']||0x0;this[_0x399f('0x8')]=_0x5c8cf0[_0x399f('0x8')]||'';this[_0x399f('0x9')]=_0x5c8cf0[_0x399f('0x9')]||0xa;this[_0x399f('0xa')]=_0x5c8cf0[_0x399f('0xa')]||_0x399f('0xb');this['Agents']=_0x5c8cf0[_0x399f('0xc')];this[_0x399f('0xd')]={};this[_0x399f('0xe')]=0x0;this[_0x399f('0x1')]='';this[_0x399f('0xf')]();this[_0x399f('0x10')]();}ChatQueue[_0x399f('0x11')][_0x399f('0xf')]=function(){var _0x103f9b=this[_0x399f('0xd')][_0x399f('0x12')];this['mapAgentsId']=_[_0x399f('0x13')](this[_0x399f('0xc')],'id');this[_0x399f('0xd')]['_rr']=_0x103f9b;};ChatQueue[_0x399f('0x11')]['updateRealtime']=function(){this[_0x399f('0x14')]=0x0;this[_0x399f('0x15')]=0x0;for(var _0x43df66=0x0;_0x43df66<this['Agents'][_0x399f('0x16')];_0x43df66+=0x1){if(this[_0x399f('0xc')][_0x43df66]['online']){this[_0x399f('0x14')]+=0x1;}if(this[_0x399f('0xc')][_0x43df66]['chatPause']){this[_0x399f('0x15')]+=0x1;}}this[_0x399f('0x17')]=this[_0x399f('0x14')]-this[_0x399f('0x15')];this['available']=this['available']>=0x0?this[_0x399f('0x17')]:0x0;var _0x1a1466={'id':this['id'],'available':this[_0x399f('0x17')],'loggedIn':this[_0x399f('0x14')],'name':this['name'],'paused':this[_0x399f('0x15')],'waiting':this[_0x399f('0xe')]};var _0x31c767=md5(JSON['stringify'](_0x1a1466));if(this['md5']!==_0x31c767){this[_0x399f('0x1')]=_0x31c767;io['to'](util['format'](_0x399f('0x18'),_0x1a1466[_0x399f('0x8')]))[_0x399f('0x19')](_0x399f('0x1a'),_0x1a1466);}};module[_0x399f('0x1b')]=ChatQueue;
\ No newline at end of file
index 1ffb03c..8b39adc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c02=['updateRouting','mapAgentsId','_rr','updateRealtime','loggedIn','paused','length','faxPause','available','format','fax:queue:%s','fax_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting'];(function(_0x418e42,_0x64ed45){var _0x4580cc=function(_0x477e22){while(--_0x477e22){_0x418e42['push'](_0x418e42['shift']());}};_0x4580cc(++_0x64ed45);}(_0x8c02,0x12b));var _0x28c0=function(_0xb8782b,_0x10ef34){_0xb8782b=_0xb8782b-0x0;var _0x1777fb=_0x8c02[_0xb8782b];return _0x1777fb;};'use strict';var _=require(_0x28c0('0x0'));var md5=require(_0x28c0('0x1'));var util=require(_0x28c0('0x2'));var Redis=require(_0x28c0('0x3'));var config=require(_0x28c0('0x4'));config[_0x28c0('0x5')]=_['defaults'](config[_0x28c0('0x5')],{'host':_0x28c0('0x6'),'port':0x18eb});var io=require(_0x28c0('0x7'))(new Redis(config['redis']));function FaxQueue(_0x570d16){this['id']=_0x570d16['id']||0x0;this[_0x28c0('0x8')]=_0x570d16[_0x28c0('0x8')]||'';this[_0x28c0('0x9')]=_0x570d16['timeout']||0xa;this[_0x28c0('0xa')]=_0x570d16[_0x28c0('0xa')]||'beepall';this['Agents']=_0x570d16[_0x28c0('0xb')];this['mapAgentsId']={};this[_0x28c0('0xc')]=0x0;this[_0x28c0('0x1')]='';this['updateRouting']();this['updateRealtime']();}FaxQueue['prototype'][_0x28c0('0xd')]=function(){var _0xbba7a6=this[_0x28c0('0xe')][_0x28c0('0xf')];this[_0x28c0('0xe')]=_['map'](this[_0x28c0('0xb')],'id');this[_0x28c0('0xe')][_0x28c0('0xf')]=_0xbba7a6;};FaxQueue['prototype'][_0x28c0('0x10')]=function(){this[_0x28c0('0x11')]=0x0;this[_0x28c0('0x12')]=0x0;for(var _0x34e0f8=0x0;_0x34e0f8<this[_0x28c0('0xb')][_0x28c0('0x13')];_0x34e0f8+=0x1){if(this[_0x28c0('0xb')][_0x34e0f8]['online']){this[_0x28c0('0x11')]+=0x1;}if(this[_0x28c0('0xb')][_0x34e0f8][_0x28c0('0x14')]){this[_0x28c0('0x12')]+=0x1;}}this[_0x28c0('0x15')]=this[_0x28c0('0x11')]-this[_0x28c0('0x12')];this['available']=this[_0x28c0('0x15')]>=0x0?this['available']:0x0;var _0x146ade={'id':this['id'],'available':this['available'],'loggedIn':this[_0x28c0('0x11')],'name':this[_0x28c0('0x8')],'paused':this[_0x28c0('0x12')],'waiting':this[_0x28c0('0xc')]};var _0x110e24=md5(JSON['stringify'](_0x146ade));if(this[_0x28c0('0x1')]!==_0x110e24){this[_0x28c0('0x1')]=_0x110e24;io['to'](util[_0x28c0('0x16')](_0x28c0('0x17'),_0x146ade[_0x28c0('0x8')]))['emit'](_0x28c0('0x18'),_0x146ade);}};module[_0x28c0('0x19')]=FaxQueue;
\ No newline at end of file
+var _0xd6af=['updateRealtime','loggedIn','length','faxPause','paused','available','stringify','format','fax:queue:%s','emit','fax_queue:save','exports','lodash','md5','ioredis','redis','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','prototype','map','mapAgentsId'];(function(_0x85ab32,_0xa188e7){var _0x46a3e4=function(_0xe314f4){while(--_0xe314f4){_0x85ab32['push'](_0x85ab32['shift']());}};_0x46a3e4(++_0xa188e7);}(_0xd6af,0xdc));var _0xfd6a=function(_0x5d93c7,_0x580b09){_0x5d93c7=_0x5d93c7-0x0;var _0x54a38b=_0xd6af[_0x5d93c7];return _0x54a38b;};'use strict';var _=require(_0xfd6a('0x0'));var md5=require(_0xfd6a('0x1'));var util=require('util');var Redis=require(_0xfd6a('0x2'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0xfd6a('0x3')],{'host':'localhost','port':0x18eb});var io=require(_0xfd6a('0x4'))(new Redis(config[_0xfd6a('0x3')]));function FaxQueue(_0xc302e0){this['id']=_0xc302e0['id']||0x0;this[_0xfd6a('0x5')]=_0xc302e0[_0xfd6a('0x5')]||'';this[_0xfd6a('0x6')]=_0xc302e0['timeout']||0xa;this[_0xfd6a('0x7')]=_0xc302e0[_0xfd6a('0x7')]||'beepall';this[_0xfd6a('0x8')]=_0xc302e0[_0xfd6a('0x8')];this['mapAgentsId']={};this[_0xfd6a('0x9')]=0x0;this[_0xfd6a('0x1')]='';this[_0xfd6a('0xa')]();this['updateRealtime']();}FaxQueue[_0xfd6a('0xb')][_0xfd6a('0xa')]=function(){var _0x5e1574=this['mapAgentsId']['_rr'];this['mapAgentsId']=_[_0xfd6a('0xc')](this[_0xfd6a('0x8')],'id');this[_0xfd6a('0xd')]['_rr']=_0x5e1574;};FaxQueue[_0xfd6a('0xb')][_0xfd6a('0xe')]=function(){this[_0xfd6a('0xf')]=0x0;this['paused']=0x0;for(var _0xbf22ca=0x0;_0xbf22ca<this[_0xfd6a('0x8')][_0xfd6a('0x10')];_0xbf22ca+=0x1){if(this[_0xfd6a('0x8')][_0xbf22ca]['online']){this['loggedIn']+=0x1;}if(this['Agents'][_0xbf22ca][_0xfd6a('0x11')]){this[_0xfd6a('0x12')]+=0x1;}}this[_0xfd6a('0x13')]=this[_0xfd6a('0xf')]-this[_0xfd6a('0x12')];this[_0xfd6a('0x13')]=this[_0xfd6a('0x13')]>=0x0?this['available']:0x0;var _0x484871={'id':this['id'],'available':this[_0xfd6a('0x13')],'loggedIn':this[_0xfd6a('0xf')],'name':this[_0xfd6a('0x5')],'paused':this[_0xfd6a('0x12')],'waiting':this[_0xfd6a('0x9')]};var _0x2b3cfa=md5(JSON[_0xfd6a('0x14')](_0x484871));if(this[_0xfd6a('0x1')]!==_0x2b3cfa){this[_0xfd6a('0x1')]=_0x2b3cfa;io['to'](util[_0xfd6a('0x15')](_0xfd6a('0x16'),_0x484871[_0xfd6a('0x5')]))[_0xfd6a('0x17')](_0xfd6a('0x18'),_0x484871);}};module[_0xfd6a('0x19')]=FaxQueue;
\ No newline at end of file
index aee245f..50a6ce4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa559=['exports','name','Intervals'];(function(_0x1ce2ac,_0x5b81d4){var _0x2e7433=function(_0x57beff){while(--_0x57beff){_0x1ce2ac['push'](_0x1ce2ac['shift']());}};_0x2e7433(++_0x5b81d4);}(_0xa559,0xeb));var _0x9a55=function(_0x43cddd,_0x53ee83){_0x43cddd=_0x43cddd-0x0;var _0x5066c8=_0xa559[_0x43cddd];return _0x5066c8;};'use strict';function Interval(_0x45dd13){this['id']=_0x45dd13['id']||0x0;this['name']=_0x45dd13[_0x9a55('0x0')]||'';this[_0x9a55('0x1')]=_0x45dd13[_0x9a55('0x1')]||{};}module[_0x9a55('0x2')]=Interval;
\ No newline at end of file
+var _0x9a23=['exports','name','Intervals'];(function(_0x3ae179,_0x42a53d){var _0x3bd3ab=function(_0x42bc8f){while(--_0x42bc8f){_0x3ae179['push'](_0x3ae179['shift']());}};_0x3bd3ab(++_0x42a53d);}(_0x9a23,0x1bd));var _0x39a2=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0x9a23[_0x199572];return _0x13cfa3;};'use strict';function Interval(_0x1b8148){this['id']=_0x1b8148['id']||0x0;this[_0x39a2('0x0')]=_0x1b8148[_0x39a2('0x0')]||'';this[_0x39a2('0x1')]=_0x1b8148['Intervals']||{};}module[_0x39a2('0x2')]=Interval;
\ No newline at end of file
index 2b8f0d6..77b2fd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9062=['emit','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','mailPause','available','stringify','format'];(function(_0xd713d,_0x24eb9b){var _0x529488=function(_0x376c87){while(--_0x376c87){_0xd713d['push'](_0xd713d['shift']());}};_0x529488(++_0x24eb9b);}(_0x9062,0x12e));var _0x2906=function(_0x5404ab,_0x5bffe1){_0x5404ab=_0x5404ab-0x0;var _0x313817=_0x9062[_0x5404ab];return _0x313817;};'use strict';var _=require(_0x2906('0x0'));var md5=require(_0x2906('0x1'));var util=require(_0x2906('0x2'));var Redis=require(_0x2906('0x3'));var config=require(_0x2906('0x4'));config[_0x2906('0x5')]=_[_0x2906('0x6')](config[_0x2906('0x5')],{'host':_0x2906('0x7'),'port':0x18eb});var io=require(_0x2906('0x8'))(new Redis(config['redis']));function MailQueue(_0x396884){this['id']=_0x396884['id']||0x0;this[_0x2906('0x9')]=_0x396884[_0x2906('0x9')]||'';this[_0x2906('0xa')]=_0x396884[_0x2906('0xa')]||0xa;this[_0x2906('0xb')]=_0x396884[_0x2906('0xb')]||_0x2906('0xc');this[_0x2906('0xd')]=_0x396884[_0x2906('0xd')];this[_0x2906('0xe')]={};this[_0x2906('0xf')]=0x0;this[_0x2906('0x1')]='';this[_0x2906('0x10')]();this[_0x2906('0x11')]();}MailQueue[_0x2906('0x12')]['updateRouting']=function(){var _0x59545f=this[_0x2906('0xe')][_0x2906('0x13')];this['mapAgentsId']=_['map'](this[_0x2906('0xd')],'id');this['mapAgentsId'][_0x2906('0x13')]=_0x59545f;};MailQueue['prototype']['updateRealtime']=function(){this[_0x2906('0x14')]=0x0;this[_0x2906('0x15')]=0x0;for(var _0x535684=0x0;_0x535684<this[_0x2906('0xd')][_0x2906('0x16')];_0x535684+=0x1){if(this['Agents'][_0x535684][_0x2906('0x17')]){this[_0x2906('0x14')]+=0x1;}if(this[_0x2906('0xd')][_0x535684][_0x2906('0x18')]){this[_0x2906('0x15')]+=0x1;}}this[_0x2906('0x19')]=this[_0x2906('0x14')]-this[_0x2906('0x15')];this[_0x2906('0x19')]=this[_0x2906('0x19')]>=0x0?this[_0x2906('0x19')]:0x0;var _0x54e6a={'id':this['id'],'available':this[_0x2906('0x19')],'loggedIn':this[_0x2906('0x14')],'name':this[_0x2906('0x9')],'paused':this[_0x2906('0x15')],'waiting':this[_0x2906('0xf')]};var _0x4de845=md5(JSON[_0x2906('0x1a')](_0x54e6a));if(this[_0x2906('0x1')]!==_0x4de845){this[_0x2906('0x1')]=_0x4de845;io['to'](util[_0x2906('0x1b')]('mail:queue:%s',_0x54e6a[_0x2906('0x9')]))[_0x2906('0x1c')]('mail_queue:save',_0x54e6a);}};module[_0x2906('0x1d')]=MailQueue;
\ No newline at end of file
+var _0x34f7=['localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map','loggedIn','paused','length','mailPause','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','redis','defaults'];(function(_0x35c64a,_0x159e2c){var _0x17540f=function(_0x65b1b1){while(--_0x65b1b1){_0x35c64a['push'](_0x35c64a['shift']());}};_0x17540f(++_0x159e2c);}(_0x34f7,0x19f));var _0x734f=function(_0x4aaa1c,_0x56f6d7){_0x4aaa1c=_0x4aaa1c-0x0;var _0x3057e=_0x34f7[_0x4aaa1c];return _0x3057e;};'use strict';var _=require('lodash');var md5=require(_0x734f('0x0'));var util=require(_0x734f('0x1'));var Redis=require(_0x734f('0x2'));var config=require('../../../config/environment');config[_0x734f('0x3')]=_[_0x734f('0x4')](config[_0x734f('0x3')],{'host':_0x734f('0x5'),'port':0x18eb});var io=require(_0x734f('0x6'))(new Redis(config['redis']));function MailQueue(_0x5874fb){this['id']=_0x5874fb['id']||0x0;this['name']=_0x5874fb[_0x734f('0x7')]||'';this[_0x734f('0x8')]=_0x5874fb[_0x734f('0x8')]||0xa;this[_0x734f('0x9')]=_0x5874fb[_0x734f('0x9')]||_0x734f('0xa');this['Agents']=_0x5874fb[_0x734f('0xb')];this['mapAgentsId']={};this[_0x734f('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0x734f('0xd')]();}MailQueue[_0x734f('0xe')][_0x734f('0xf')]=function(){var _0x1dd710=this[_0x734f('0x10')][_0x734f('0x11')];this['mapAgentsId']=_[_0x734f('0x12')](this['Agents'],'id');this[_0x734f('0x10')]['_rr']=_0x1dd710;};MailQueue[_0x734f('0xe')][_0x734f('0xd')]=function(){this[_0x734f('0x13')]=0x0;this[_0x734f('0x14')]=0x0;for(var _0x454538=0x0;_0x454538<this[_0x734f('0xb')][_0x734f('0x15')];_0x454538+=0x1){if(this['Agents'][_0x454538]['online']){this['loggedIn']+=0x1;}if(this[_0x734f('0xb')][_0x454538][_0x734f('0x16')]){this[_0x734f('0x14')]+=0x1;}}this[_0x734f('0x17')]=this[_0x734f('0x13')]-this['paused'];this[_0x734f('0x17')]=this[_0x734f('0x17')]>=0x0?this[_0x734f('0x17')]:0x0;var _0x2010f9={'id':this['id'],'available':this['available'],'loggedIn':this[_0x734f('0x13')],'name':this['name'],'paused':this[_0x734f('0x14')],'waiting':this['waiting']};var _0x4be14c=md5(JSON[_0x734f('0x18')](_0x2010f9));if(this['md5']!==_0x4be14c){this[_0x734f('0x0')]=_0x4be14c;io['to'](util[_0x734f('0x19')](_0x734f('0x1a'),_0x2010f9['name']))[_0x734f('0x1b')](_0x734f('0x1c'),_0x2010f9);}};module[_0x734f('0x1d')]=MailQueue;
\ No newline at end of file
index 2aa696d..0271ec2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['strategy','Agents','mapAgentsId','updateRouting','updateRealtime','map','_rr','prototype','loggedIn','paused','length','online','available','waiting','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout'];(function(_0x7e2eb0,_0x17cd58){var _0xd92de4=function(_0x5d005b){while(--_0x5d005b){_0x7e2eb0['push'](_0x7e2eb0['shift']());}};_0xd92de4(++_0x17cd58);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0xac4a('0x0'));var md5=require(_0xac4a('0x1'));var util=require(_0xac4a('0x2'));var Redis=require(_0xac4a('0x3'));var config=require(_0xac4a('0x4'));config[_0xac4a('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xac4a('0x6'))(new Redis(config[_0xac4a('0x5')]));function OpenchannelQueue(_0x730a38){this['id']=_0x730a38['id']||0x0;this[_0xac4a('0x7')]=_0x730a38[_0xac4a('0x7')]||'';this[_0xac4a('0x8')]=_0x730a38[_0xac4a('0x8')]||0xa;this[_0xac4a('0x9')]=_0x730a38['strategy']||'beepall';this[_0xac4a('0xa')]=_0x730a38[_0xac4a('0xa')];this[_0xac4a('0xb')]={};this['waiting']=0x0;this[_0xac4a('0x1')]='';this[_0xac4a('0xc')]();this[_0xac4a('0xd')]();}OpenchannelQueue['prototype'][_0xac4a('0xc')]=function(){var _0x488e3c=this[_0xac4a('0xb')]['_rr'];this[_0xac4a('0xb')]=_[_0xac4a('0xe')](this[_0xac4a('0xa')],'id');this['mapAgentsId'][_0xac4a('0xf')]=_0x488e3c;};OpenchannelQueue[_0xac4a('0x10')][_0xac4a('0xd')]=function(){this[_0xac4a('0x11')]=0x0;this[_0xac4a('0x12')]=0x0;for(var _0x3b71c0=0x0;_0x3b71c0<this[_0xac4a('0xa')][_0xac4a('0x13')];_0x3b71c0+=0x1){if(this[_0xac4a('0xa')][_0x3b71c0][_0xac4a('0x14')]){this[_0xac4a('0x11')]+=0x1;}if(this[_0xac4a('0xa')][_0x3b71c0]['openchannelPause']){this[_0xac4a('0x12')]+=0x1;}}this[_0xac4a('0x15')]=this[_0xac4a('0x11')]-this[_0xac4a('0x12')];this[_0xac4a('0x15')]=this[_0xac4a('0x15')]>=0x0?this[_0xac4a('0x15')]:0x0;var _0x44ec59={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xac4a('0x7')],'paused':this[_0xac4a('0x12')],'waiting':this[_0xac4a('0x16')]};var _0x4d837c=md5(JSON[_0xac4a('0x17')](_0x44ec59));if(this[_0xac4a('0x1')]!==_0x4d837c){this[_0xac4a('0x1')]=_0x4d837c;io['to'](util[_0xac4a('0x18')](_0xac4a('0x19'),_0x44ec59[_0xac4a('0x7')]))[_0xac4a('0x1a')](_0xac4a('0x1b'),_0x44ec59);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
+var _0x1261=['available','stringify','openchannel:queue:%s','openchannel_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','map','_rr','updateRealtime','loggedIn','paused','length','online'];(function(_0x2ca9d4,_0x51d5c6){var _0x258956=function(_0x47a0e5){while(--_0x47a0e5){_0x2ca9d4['push'](_0x2ca9d4['shift']());}};_0x258956(++_0x51d5c6);}(_0x1261,0x144));var _0x1126=function(_0x51652a,_0x5144fc){_0x51652a=_0x51652a-0x0;var _0xae7099=_0x1261[_0x51652a];return _0xae7099;};'use strict';var _=require('lodash');var md5=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));config[_0x1126('0x4')]=_[_0x1126('0x5')](config[_0x1126('0x4')],{'host':_0x1126('0x6'),'port':0x18eb});var io=require(_0x1126('0x7'))(new Redis(config[_0x1126('0x4')]));function OpenchannelQueue(_0x5a2189){this['id']=_0x5a2189['id']||0x0;this['name']=_0x5a2189[_0x1126('0x8')]||'';this[_0x1126('0x9')]=_0x5a2189['timeout']||0xa;this[_0x1126('0xa')]=_0x5a2189[_0x1126('0xa')]||_0x1126('0xb');this[_0x1126('0xc')]=_0x5a2189[_0x1126('0xc')];this['mapAgentsId']={};this[_0x1126('0xd')]=0x0;this[_0x1126('0x0')]='';this[_0x1126('0xe')]();this['updateRealtime']();}OpenchannelQueue[_0x1126('0xf')]['updateRouting']=function(){var _0x52ef15=this[_0x1126('0x10')]['_rr'];this[_0x1126('0x10')]=_[_0x1126('0x11')](this[_0x1126('0xc')],'id');this[_0x1126('0x10')][_0x1126('0x12')]=_0x52ef15;};OpenchannelQueue[_0x1126('0xf')][_0x1126('0x13')]=function(){this[_0x1126('0x14')]=0x0;this[_0x1126('0x15')]=0x0;for(var _0x53a8f0=0x0;_0x53a8f0<this['Agents'][_0x1126('0x16')];_0x53a8f0+=0x1){if(this[_0x1126('0xc')][_0x53a8f0][_0x1126('0x17')]){this['loggedIn']+=0x1;}if(this[_0x1126('0xc')][_0x53a8f0]['openchannelPause']){this[_0x1126('0x15')]+=0x1;}}this[_0x1126('0x18')]=this[_0x1126('0x14')]-this['paused'];this[_0x1126('0x18')]=this[_0x1126('0x18')]>=0x0?this['available']:0x0;var _0x4d2b38={'id':this['id'],'available':this[_0x1126('0x18')],'loggedIn':this[_0x1126('0x14')],'name':this['name'],'paused':this['paused'],'waiting':this[_0x1126('0xd')]};var _0x58b109=md5(JSON[_0x1126('0x19')](_0x4d2b38));if(this[_0x1126('0x0')]!==_0x58b109){this[_0x1126('0x0')]=_0x58b109;io['to'](util['format'](_0x1126('0x1a'),_0x4d2b38['name']))['emit'](_0x1126('0x1b'),_0x4d2b38);}};module[_0x1126('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index aa09c85..aa57f5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeebe=['socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','smsPause','available','waiting','md5','emit','sms_queue:save','exports','lodash','util','../../../config/environment','redis','defaults','localhost'];(function(_0x59e60d,_0x29c76c){var _0x3ad3bb=function(_0x144c22){while(--_0x144c22){_0x59e60d['push'](_0x59e60d['shift']());}};_0x3ad3bb(++_0x29c76c);}(_0xeebe,0xff));var _0xeeeb=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0xeebe[_0x4d8ed9];return _0x1e2140;};'use strict';var _=require(_0xeeeb('0x0'));var md5=require('md5');var util=require(_0xeeeb('0x1'));var Redis=require('ioredis');var config=require(_0xeeeb('0x2'));config[_0xeeeb('0x3')]=_[_0xeeeb('0x4')](config[_0xeeeb('0x3')],{'host':_0xeeeb('0x5'),'port':0x18eb});var io=require(_0xeeeb('0x6'))(new Redis(config[_0xeeeb('0x3')]));function SmsQueue(_0x1d5c27){this['id']=_0x1d5c27['id']||0x0;this[_0xeeeb('0x7')]=_0x1d5c27[_0xeeeb('0x7')]||'';this[_0xeeeb('0x8')]=_0x1d5c27[_0xeeeb('0x8')]||0xa;this[_0xeeeb('0x9')]=_0x1d5c27[_0xeeeb('0x9')]||_0xeeeb('0xa');this[_0xeeeb('0xb')]=_0x1d5c27[_0xeeeb('0xb')];this[_0xeeeb('0xc')]={};this['waiting']=0x0;this['md5']='';this[_0xeeeb('0xd')]();this[_0xeeeb('0xe')]();}SmsQueue[_0xeeeb('0xf')]['updateRouting']=function(){var _0x3eb739=this[_0xeeeb('0xc')][_0xeeeb('0x10')];this['mapAgentsId']=_[_0xeeeb('0x11')](this['Agents'],'id');this['mapAgentsId'][_0xeeeb('0x10')]=_0x3eb739;};SmsQueue[_0xeeeb('0xf')][_0xeeeb('0xe')]=function(){this[_0xeeeb('0x12')]=0x0;this[_0xeeeb('0x13')]=0x0;for(var _0x1bf055=0x0;_0x1bf055<this[_0xeeeb('0xb')][_0xeeeb('0x14')];_0x1bf055+=0x1){if(this[_0xeeeb('0xb')][_0x1bf055][_0xeeeb('0x15')]){this[_0xeeeb('0x12')]+=0x1;}if(this[_0xeeeb('0xb')][_0x1bf055][_0xeeeb('0x16')]){this[_0xeeeb('0x13')]+=0x1;}}this[_0xeeeb('0x17')]=this[_0xeeeb('0x12')]-this[_0xeeeb('0x13')];this[_0xeeeb('0x17')]=this[_0xeeeb('0x17')]>=0x0?this[_0xeeeb('0x17')]:0x0;var _0x37efe6={'id':this['id'],'available':this[_0xeeeb('0x17')],'loggedIn':this[_0xeeeb('0x12')],'name':this[_0xeeeb('0x7')],'paused':this[_0xeeeb('0x13')],'waiting':this[_0xeeeb('0x18')]};var _0x434cdf=md5(JSON['stringify'](_0x37efe6));if(this[_0xeeeb('0x19')]!==_0x434cdf){this['md5']=_0x434cdf;io['to'](util['format']('sms:queue:%s',_0x37efe6['name']))[_0xeeeb('0x1a')](_0xeeeb('0x1b'),_0x37efe6);}};module[_0xeeeb('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0xa1a5=['strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting','prototype','_rr','updateRealtime','paused','length','online','smsPause','available','loggedIn','stringify','format','sms:queue:%s','sms_queue:save','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0xa1a5,0x1b8));var _0x5a1a=function(_0x3f0abe,_0xa33753){_0x3f0abe=_0x3f0abe-0x0;var _0x349868=_0xa1a5[_0x3f0abe];return _0x349868;};'use strict';var _=require(_0x5a1a('0x0'));var md5=require('md5');var util=require(_0x5a1a('0x1'));var Redis=require(_0x5a1a('0x2'));var config=require(_0x5a1a('0x3'));config[_0x5a1a('0x4')]=_[_0x5a1a('0x5')](config['redis'],{'host':_0x5a1a('0x6'),'port':0x18eb});var io=require(_0x5a1a('0x7'))(new Redis(config[_0x5a1a('0x4')]));function SmsQueue(_0x416416){this['id']=_0x416416['id']||0x0;this[_0x5a1a('0x8')]=_0x416416[_0x5a1a('0x8')]||'';this[_0x5a1a('0x9')]=_0x416416['timeout']||0xa;this[_0x5a1a('0xa')]=_0x416416[_0x5a1a('0xa')]||_0x5a1a('0xb');this[_0x5a1a('0xc')]=_0x416416[_0x5a1a('0xc')];this[_0x5a1a('0xd')]={};this[_0x5a1a('0xe')]=0x0;this[_0x5a1a('0xf')]='';this[_0x5a1a('0x10')]();this['updateRealtime']();}SmsQueue[_0x5a1a('0x11')][_0x5a1a('0x10')]=function(){var _0x1474c2=this['mapAgentsId'][_0x5a1a('0x12')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0x5a1a('0xd')][_0x5a1a('0x12')]=_0x1474c2;};SmsQueue[_0x5a1a('0x11')][_0x5a1a('0x13')]=function(){this['loggedIn']=0x0;this[_0x5a1a('0x14')]=0x0;for(var _0x30e2a5=0x0;_0x30e2a5<this['Agents'][_0x5a1a('0x15')];_0x30e2a5+=0x1){if(this[_0x5a1a('0xc')][_0x30e2a5][_0x5a1a('0x16')]){this['loggedIn']+=0x1;}if(this[_0x5a1a('0xc')][_0x30e2a5][_0x5a1a('0x17')]){this[_0x5a1a('0x14')]+=0x1;}}this[_0x5a1a('0x18')]=this[_0x5a1a('0x19')]-this[_0x5a1a('0x14')];this[_0x5a1a('0x18')]=this[_0x5a1a('0x18')]>=0x0?this['available']:0x0;var _0x9e7924={'id':this['id'],'available':this[_0x5a1a('0x18')],'loggedIn':this[_0x5a1a('0x19')],'name':this[_0x5a1a('0x8')],'paused':this[_0x5a1a('0x14')],'waiting':this[_0x5a1a('0xe')]};var _0x3c47e3=md5(JSON[_0x5a1a('0x1a')](_0x9e7924));if(this[_0x5a1a('0xf')]!==_0x3c47e3){this[_0x5a1a('0xf')]=_0x3c47e3;io['to'](util[_0x5a1a('0x1b')](_0x5a1a('0x1c'),_0x9e7924['name']))['emit'](_0x5a1a('0x1d'),_0x9e7924);}};module['exports']=SmsQueue;
\ No newline at end of file
index 53cfeef..a6cd335 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb581=['defaults','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','map','loggedIn','paused','length','online','available','stringify','whatsapp:queue:%s','emit','whatsapp_queue:save','md5','util','ioredis','redis'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0xb581,0xec));var _0x1b58=function(_0x538fcc,_0x2c71be){_0x538fcc=_0x538fcc-0x0;var _0x2c8894=_0xb581[_0x538fcc];return _0x2c8894;};'use strict';var _=require('lodash');var md5=require(_0x1b58('0x0'));var util=require(_0x1b58('0x1'));var Redis=require(_0x1b58('0x2'));var config=require('../../../config/environment');config[_0x1b58('0x3')]=_[_0x1b58('0x4')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1b58('0x5'))(new Redis(config[_0x1b58('0x3')]));function WhatsappQueue(_0x5b4c9e){this['id']=_0x5b4c9e['id']||0x0;this[_0x1b58('0x6')]=_0x5b4c9e[_0x1b58('0x6')]||'';this[_0x1b58('0x7')]=_0x5b4c9e[_0x1b58('0x7')]||0xa;this[_0x1b58('0x8')]=_0x5b4c9e[_0x1b58('0x8')]||'beepall';this[_0x1b58('0x9')]=_0x5b4c9e['Agents'];this[_0x1b58('0xa')]={};this[_0x1b58('0xb')]=0x0;this[_0x1b58('0x0')]='';this[_0x1b58('0xc')]();this[_0x1b58('0xd')]();}WhatsappQueue['prototype'][_0x1b58('0xc')]=function(){var _0x2d0deb=this[_0x1b58('0xa')]['_rr'];this[_0x1b58('0xa')]=_[_0x1b58('0xe')](this[_0x1b58('0x9')],'id');this[_0x1b58('0xa')]['_rr']=_0x2d0deb;};WhatsappQueue['prototype']['updateRealtime']=function(){this[_0x1b58('0xf')]=0x0;this[_0x1b58('0x10')]=0x0;for(var _0x59d913=0x0;_0x59d913<this[_0x1b58('0x9')][_0x1b58('0x11')];_0x59d913+=0x1){if(this[_0x1b58('0x9')][_0x59d913][_0x1b58('0x12')]){this[_0x1b58('0xf')]+=0x1;}if(this['Agents'][_0x59d913]['whatsappPause']){this[_0x1b58('0x10')]+=0x1;}}this[_0x1b58('0x13')]=this[_0x1b58('0xf')]-this['paused'];this[_0x1b58('0x13')]=this[_0x1b58('0x13')]>=0x0?this[_0x1b58('0x13')]:0x0;var _0x280b51={'id':this['id'],'available':this[_0x1b58('0x13')],'loggedIn':this[_0x1b58('0xf')],'name':this[_0x1b58('0x6')],'paused':this['paused'],'waiting':this[_0x1b58('0xb')]};var _0x2fe4c3=md5(JSON[_0x1b58('0x14')](_0x280b51));if(this['md5']!==_0x2fe4c3){this['md5']=_0x2fe4c3;io['to'](util['format'](_0x1b58('0x15'),_0x280b51['name']))[_0x1b58('0x16')](_0x1b58('0x17'),_0x280b51);}};module['exports']=WhatsappQueue;
\ No newline at end of file
+var _0xecc0=['available','md5','format','whatsapp:queue:%s','emit','whatsapp_queue:save','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','_rr','mapAgentsId','loggedIn','paused','length','whatsappPause'];(function(_0x4ed508,_0x5f322b){var _0x31aa80=function(_0x4ebd21){while(--_0x4ebd21){_0x4ed508['push'](_0x4ed508['shift']());}};_0x31aa80(++_0x5f322b);}(_0xecc0,0x76));var _0x0ecc=function(_0x3e134d,_0x1045fa){_0x3e134d=_0x3e134d-0x0;var _0x33b9e3=_0xecc0[_0x3e134d];return _0x33b9e3;};'use strict';var _=require(_0x0ecc('0x0'));var md5=require('md5');var util=require(_0x0ecc('0x1'));var Redis=require(_0x0ecc('0x2'));var config=require(_0x0ecc('0x3'));config[_0x0ecc('0x4')]=_[_0x0ecc('0x5')](config[_0x0ecc('0x4')],{'host':_0x0ecc('0x6'),'port':0x18eb});var io=require(_0x0ecc('0x7'))(new Redis(config[_0x0ecc('0x4')]));function WhatsappQueue(_0x5c6bb8){this['id']=_0x5c6bb8['id']||0x0;this[_0x0ecc('0x8')]=_0x5c6bb8[_0x0ecc('0x8')]||'';this[_0x0ecc('0x9')]=_0x5c6bb8[_0x0ecc('0x9')]||0xa;this['strategy']=_0x5c6bb8[_0x0ecc('0xa')]||'beepall';this[_0x0ecc('0xb')]=_0x5c6bb8[_0x0ecc('0xb')];this['mapAgentsId']={};this[_0x0ecc('0xc')]=0x0;this['md5']='';this[_0x0ecc('0xd')]();this[_0x0ecc('0xe')]();}WhatsappQueue[_0x0ecc('0xf')][_0x0ecc('0xd')]=function(){var _0xf63ede=this['mapAgentsId'][_0x0ecc('0x10')];this['mapAgentsId']=_['map'](this[_0x0ecc('0xb')],'id');this[_0x0ecc('0x11')][_0x0ecc('0x10')]=_0xf63ede;};WhatsappQueue[_0x0ecc('0xf')][_0x0ecc('0xe')]=function(){this[_0x0ecc('0x12')]=0x0;this[_0x0ecc('0x13')]=0x0;for(var _0x22ee91=0x0;_0x22ee91<this[_0x0ecc('0xb')][_0x0ecc('0x14')];_0x22ee91+=0x1){if(this[_0x0ecc('0xb')][_0x22ee91]['online']){this[_0x0ecc('0x12')]+=0x1;}if(this[_0x0ecc('0xb')][_0x22ee91][_0x0ecc('0x15')]){this[_0x0ecc('0x13')]+=0x1;}}this[_0x0ecc('0x16')]=this['loggedIn']-this[_0x0ecc('0x13')];this[_0x0ecc('0x16')]=this[_0x0ecc('0x16')]>=0x0?this[_0x0ecc('0x16')]:0x0;var _0x182527={'id':this['id'],'available':this[_0x0ecc('0x16')],'loggedIn':this[_0x0ecc('0x12')],'name':this[_0x0ecc('0x8')],'paused':this[_0x0ecc('0x13')],'waiting':this[_0x0ecc('0xc')]};var _0x315db7=md5(JSON['stringify'](_0x182527));if(this[_0x0ecc('0x17')]!==_0x315db7){this[_0x0ecc('0x17')]=_0x315db7;io['to'](util[_0x0ecc('0x18')](_0x0ecc('0x19'),_0x182527[_0x0ecc('0x8')]))[_0x0ecc('0x1a')](_0x0ecc('0x1b'),_0x182527);}};module['exports']=WhatsappQueue;
\ No newline at end of file
index 60cbe23..40f802d 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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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 _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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index 37554cd..b5204b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bdd=['Request','UpdateChatInteraction','updateChatInteraction','addTags','addTagsToChatInteraction','../client','update'];(function(_0x1e6803,_0x4c54b0){var _0x438f72=function(_0x2283f1){while(--_0x2283f1){_0x1e6803['push'](_0x1e6803['shift']());}};_0x438f72(++_0x4c54b0);}(_0x7bdd,0x140));var _0xd7bd=function(_0x3a4510,_0x36fbe6){_0x3a4510=_0x3a4510-0x0;var _0x45eea0=_0x7bdd[_0x3a4510];return _0x45eea0;};'use strict';var client=require(_0xd7bd('0x0'));exports[_0xd7bd('0x1')]=function(_0x525a76,_0x2ab496){return client[_0xd7bd('0x2')](_0xd7bd('0x3'),{'body':_0x2ab496,'options':{'where':{'id':_0x525a76}},'log':_0xd7bd('0x4')});};exports[_0xd7bd('0x5')]=function(_0x3dc915,_0x38e842){return client[_0xd7bd('0x2')]('AddTagsToChatInteraction',{'body':_0x38e842,'options':{'where':{'id':_0x3dc915}},'log':_0xd7bd('0x6')});};
\ No newline at end of file
+var _0x9762=['Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction','../client','update'];(function(_0x501e06,_0x13a8b5){var _0x38e4f5=function(_0x363f7c){while(--_0x363f7c){_0x501e06['push'](_0x501e06['shift']());}};_0x38e4f5(++_0x13a8b5);}(_0x9762,0x166));var _0x2976=function(_0x8f0f67,_0x5d19ad){_0x8f0f67=_0x8f0f67-0x0;var _0x127cee=_0x9762[_0x8f0f67];return _0x127cee;};'use strict';var client=require(_0x2976('0x0'));exports[_0x2976('0x1')]=function(_0x2135c2,_0x48c230){return client[_0x2976('0x2')](_0x2976('0x3'),{'body':_0x48c230,'options':{'where':{'id':_0x2135c2}},'log':_0x2976('0x4')});};exports[_0x2976('0x5')]=function(_0x8c9947,_0x375686){return client[_0x2976('0x2')](_0x2976('0x6'),{'body':_0x375686,'options':{'where':{'id':_0x8c9947}},'log':_0x2976('0x7')});};
\ No newline at end of file
index e718cbf..79b7ea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x123e=['CreateChatMessage','createChatMessage','create','Request'];(function(_0x256d6a,_0x2f002f){var _0x460058=function(_0x195be7){while(--_0x195be7){_0x256d6a['push'](_0x256d6a['shift']());}};_0x460058(++_0x2f002f);}(_0x123e,0x196));var _0xe123=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x123e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0xe123('0x0')]=function(_0x51b643){return client[_0xe123('0x1')](_0xe123('0x2'),{'body':_0x51b643,'log':_0xe123('0x3')});};
\ No newline at end of file
+var _0xe9b1=['create','Request','CreateChatMessage','createChatMessage','../client'];(function(_0x518e0d,_0xe6c7c8){var _0x5cff9e=function(_0x2974a2){while(--_0x2974a2){_0x518e0d['push'](_0x518e0d['shift']());}};_0x5cff9e(++_0xe6c7c8);}(_0xe9b1,0x13a));var _0x1e9b=function(_0x189d3c,_0x5efebf){_0x189d3c=_0x189d3c-0x0;var _0x485959=_0xe9b1[_0x189d3c];return _0x485959;};'use strict';var client=require(_0x1e9b('0x0'));exports[_0x1e9b('0x1')]=function(_0x3029b5){return client[_0x1e9b('0x2')](_0x1e9b('0x3'),{'body':_0x3029b5,'log':_0x1e9b('0x4')});};
\ No newline at end of file
index f7d7f19..0847b86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02a7=['User','Agents','online','getChatQueues','name','timeout','strategy'];(function(_0x156cbc,_0x45bddf){var _0x47b3cd=function(_0x53afea){while(--_0x53afea){_0x156cbc['push'](_0x156cbc['shift']());}};_0x47b3cd(++_0x45bddf);}(_0x02a7,0x7a));var _0x702a=function(_0x48f79e,_0x1ac3c8){_0x48f79e=_0x48f79e-0x0;var _0x4f1dc1=_0x02a7[_0x48f79e];return _0x4f1dc1;};'use strict';var client=require('../client');exports[_0x702a('0x0')]=function(){return function(){return client['Request']('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0x702a('0x1'),_0x702a('0x2'),_0x702a('0x3')],'include':[{'model':_0x702a('0x4'),'as':_0x702a('0x5'),'attributes':['id',_0x702a('0x1'),_0x702a('0x6'),'chatPause']}]},'log':_0x702a('0x0')});};};
\ No newline at end of file
+var _0xc01b=['GetChatQueue','timeout','strategy','online','chatPause','../client','getChatQueues','Request'];(function(_0x4df6bd,_0x30d543){var _0x322dcb=function(_0x2ae31b){while(--_0x2ae31b){_0x4df6bd['push'](_0x4df6bd['shift']());}};_0x322dcb(++_0x30d543);}(_0xc01b,0x65));var _0xbc01=function(_0x2bda09,_0x125c82){_0x2bda09=_0x2bda09-0x0;var _0x5842c5=_0xc01b[_0x2bda09];return _0x5842c5;};'use strict';var client=require(_0xbc01('0x0'));exports[_0xbc01('0x1')]=function(){return function(){return client[_0xbc01('0x2')](_0xbc01('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xbc01('0x4'),_0xbc01('0x5')],'include':[{'model':'User','as':'Agents','attributes':['id','name',_0xbc01('0x6'),_0xbc01('0x7')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index e9f0432..37edec3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9de3=['../client','Request','CreateChatQueueReport','update','UpdateChatQueueReport','DESC'];(function(_0x33c050,_0x52e6e5){var _0x5b0d0a=function(_0x3dfb67){while(--_0x3dfb67){_0x33c050['push'](_0x33c050['shift']());}};_0x5b0d0a(++_0x52e6e5);}(_0x9de3,0xea));var _0x39de=function(_0x10de81,_0x2ce449){_0x10de81=_0x10de81-0x0;var _0x3d02ee=_0x9de3[_0x10de81];return _0x3d02ee;};'use strict';var client=require(_0x39de('0x0'));exports['create']=function(_0x15cb04){return client[_0x39de('0x1')](_0x39de('0x2'),{'body':_0x15cb04,'log':'CreateChatQueueReport'});};exports[_0x39de('0x3')]=function(_0x515fba,_0x1010da){return client[_0x39de('0x1')](_0x39de('0x4'),{'body':_0x1010da,'options':{'where':{'uniqueid':_0x515fba},'order':[['id',_0x39de('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
+var _0x2c6a=['create','Request','update','UpdateChatQueueReport','DESC','../client'];(function(_0x34b5ca,_0x594010){var _0x2d72c0=function(_0x4ae1d3){while(--_0x4ae1d3){_0x34b5ca['push'](_0x34b5ca['shift']());}};_0x2d72c0(++_0x594010);}(_0x2c6a,0xa7));var _0xa2c6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c6a[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xa2c6('0x0'));exports[_0xa2c6('0x1')]=function(_0x1c6627){return client[_0xa2c6('0x2')]('CreateChatQueueReport',{'body':_0x1c6627,'log':'CreateChatQueueReport'});};exports[_0xa2c6('0x3')]=function(_0x5cae61,_0xc8c32b){return client[_0xa2c6('0x2')](_0xa2c6('0x4'),{'body':_0xc8c32b,'options':{'where':{'uniqueid':_0x5cae61},'order':[['id',_0xa2c6('0x5')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index 09d8215..9b88820 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(_0x1e9bad,_0x43e307){var _0x48392c=function(_0x389bb1){while(--_0x389bb1){_0x1e9bad['push'](_0x1e9bad['shift']());}};_0x48392c(++_0x43e307);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x107910,_0x3323be){var _0x50b48f=function(_0x533581){while(--_0x533581){_0x107910['push'](_0x107910['shift']());}};_0x50b48f(++_0x3323be);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index c3e6005..a47c602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b1d=['createFaxMessage','CreateFaxMessage'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x6b1d,0xd1));var _0xd6b1=function(_0x1a6007,_0x350755){_0x1a6007=_0x1a6007-0x0;var _0x120665=_0x6b1d[_0x1a6007];return _0x120665;};'use strict';var client=require('../client');exports['create']=function(_0x5ac415){return client['Request'](_0xd6b1('0x0'),{'body':_0x5ac415,'log':_0xd6b1('0x1')});};
\ No newline at end of file
+var _0xabaf=['create','Request','CreateFaxMessage','createFaxMessage','../client'];(function(_0x4d7b43,_0x47e11c){var _0x476d6e=function(_0x189c1e){while(--_0x189c1e){_0x4d7b43['push'](_0x4d7b43['shift']());}};_0x476d6e(++_0x47e11c);}(_0xabaf,0x8b));var _0xfaba=function(_0x597f64,_0x139321){_0x597f64=_0x597f64-0x0;var _0x58f965=_0xabaf[_0x597f64];return _0x58f965;};'use strict';var client=require(_0xfaba('0x0'));exports[_0xfaba('0x1')]=function(_0x20cea0){return client[_0xfaba('0x2')](_0xfaba('0x3'),{'body':_0x20cea0,'log':_0xfaba('0x4')});};
\ No newline at end of file
index 1853291..75960e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x363b=['name','online','faxPause','getFaxQueues','Request','GetFaxQueue','strategy','User','Agents'];(function(_0x5ac862,_0x4e833b){var _0x25bd6c=function(_0x527551){while(--_0x527551){_0x5ac862['push'](_0x5ac862['shift']());}};_0x25bd6c(++_0x4e833b);}(_0x363b,0x17d));var _0xb363=function(_0x15e06d,_0x4a6f77){_0x15e06d=_0x15e06d-0x0;var _0xdd4cde=_0x363b[_0x15e06d];return _0xdd4cde;};'use strict';var client=require('../client');exports[_0xb363('0x0')]=function(){return function(){return client[_0xb363('0x1')](_0xb363('0x2'),{'options':{'raw':![],'attributes':['id','name','timeout',_0xb363('0x3')],'include':[{'model':_0xb363('0x4'),'as':_0xb363('0x5'),'attributes':['id',_0xb363('0x6'),_0xb363('0x7'),_0xb363('0x8')]}]},'log':_0xb363('0x0')});};};
\ No newline at end of file
+var _0x74c9=['strategy','User','online','faxPause','getFaxQueues','Request','GetFaxQueue','name','timeout'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x74c9,0x187));var _0x974c=function(_0x5e980a,_0x28ebd1){_0x5e980a=_0x5e980a-0x0;var _0x2af923=_0x74c9[_0x5e980a];return _0x2af923;};'use strict';var client=require('../client');exports[_0x974c('0x0')]=function(){return function(){return client[_0x974c('0x1')](_0x974c('0x2'),{'options':{'raw':![],'attributes':['id',_0x974c('0x3'),_0x974c('0x4'),_0x974c('0x5')],'include':[{'model':_0x974c('0x6'),'as':'Agents','attributes':['id',_0x974c('0x3'),_0x974c('0x7'),_0x974c('0x8')]}]},'log':_0x974c('0x0')});};};
\ No newline at end of file
index f7211a4..d2aba6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb90=['DESC','../client','create','Request','CreateFaxQueueReport','update'];(function(_0xb1aec6,_0x102c14){var _0x126bc5=function(_0x120c3c){while(--_0x120c3c){_0xb1aec6['push'](_0xb1aec6['shift']());}};_0x126bc5(++_0x102c14);}(_0xeb90,0x1b7));var _0x0eb9=function(_0x5b28c6,_0x2e5693){_0x5b28c6=_0x5b28c6-0x0;var _0x359ff7=_0xeb90[_0x5b28c6];return _0x359ff7;};'use strict';var client=require(_0x0eb9('0x0'));exports[_0x0eb9('0x1')]=function(_0xbf12b6){return client[_0x0eb9('0x2')](_0x0eb9('0x3'),{'body':_0xbf12b6,'log':'CreateFaxQueueReport'});};exports[_0x0eb9('0x4')]=function(_0x4cc336,_0x4ad6f3){return client['Request']('UpdateFaxQueueReport',{'body':_0x4ad6f3,'options':{'where':{'uniqueid':_0x4cc336},'order':[['id',_0x0eb9('0x5')]],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
+var _0xbcf2=['../client','create','Request','CreateFaxQueueReport','DESC','UpdateFaxQueueReport'];(function(_0x1d24d9,_0x377797){var _0x2dfab7=function(_0x1459c7){while(--_0x1459c7){_0x1d24d9['push'](_0x1d24d9['shift']());}};_0x2dfab7(++_0x377797);}(_0xbcf2,0x15c));var _0x2bcf=function(_0x11ea64,_0x59f7a2){_0x11ea64=_0x11ea64-0x0;var _0x30590a=_0xbcf2[_0x11ea64];return _0x30590a;};'use strict';var client=require(_0x2bcf('0x0'));exports[_0x2bcf('0x1')]=function(_0x2364dd){return client[_0x2bcf('0x2')](_0x2bcf('0x3'),{'body':_0x2364dd,'log':_0x2bcf('0x3')});};exports['update']=function(_0x1963bb,_0x51e1dc){return client[_0x2bcf('0x2')]('UpdateFaxQueueReport',{'body':_0x51e1dc,'options':{'where':{'uniqueid':_0x1963bb},'order':[['id',_0x2bcf('0x4')]],'limit':0x1},'log':_0x2bcf('0x5')});};
\ No newline at end of file
index 12886a9..c79a665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd63b=['getIntervals','Request','Interval','Intervals','name','interval','../client'];(function(_0x5d808c,_0x22bbf6){var _0x11d463=function(_0x4574dc){while(--_0x4574dc){_0x5d808c['push'](_0x5d808c['shift']());}};_0x11d463(++_0x22bbf6);}(_0xd63b,0xe6));var _0xbd63=function(_0x23788d,_0x7d4d67){_0x23788d=_0x23788d-0x0;var _0x16f9fe=_0xd63b[_0x23788d];return _0x16f9fe;};'use strict';var client=require(_0xbd63('0x0'));exports[_0xbd63('0x1')]=function(){return function(){return client[_0xbd63('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0xbd63('0x3'),'as':_0xbd63('0x4'),'attributes':['id',_0xbd63('0x5'),_0xbd63('0x6')]}]},'log':_0xbd63('0x1')});};};
\ No newline at end of file
+var _0x6fef=['Interval','getIntervals','Request','GetInterval','name'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x6fef,0x1be));var _0xf6fe=function(_0x3ebd8c,_0x2cd6ac){_0x3ebd8c=_0x3ebd8c-0x0;var _0x2ce2ad=_0x6fef[_0x3ebd8c];return _0x2ce2ad;};'use strict';var client=require('../client');exports[_0xf6fe('0x0')]=function(){return function(){return client[_0xf6fe('0x1')](_0xf6fe('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xf6fe('0x3')],'include':[{'model':_0xf6fe('0x4'),'as':'Intervals','attributes':['id',_0xf6fe('0x3'),'interval']}]},'log':_0xf6fe('0x0')});};};
\ No newline at end of file
index dc13f1d..b93635a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x160f=['UpdateMailInteraction','updateMailInteraction','addTags','Request','addTagsToChatInteraction','../client','update'];(function(_0x2c065a,_0x44e071){var _0x16dcf0=function(_0x4ef63d){while(--_0x4ef63d){_0x2c065a['push'](_0x2c065a['shift']());}};_0x16dcf0(++_0x44e071);}(_0x160f,0x1ef));var _0xf160=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x160f[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xf160('0x0'));exports[_0xf160('0x1')]=function(_0x2d4cde,_0x2966aa){return client['Request'](_0xf160('0x2'),{'body':_0x2966aa,'options':{'where':{'id':_0x2d4cde}},'log':_0xf160('0x3')});};exports[_0xf160('0x4')]=function(_0x3b2d7b,_0x194331){return client[_0xf160('0x5')]('AddTagsToMailInteraction',{'body':_0x194331,'options':{'where':{'id':_0x3b2d7b}},'log':_0xf160('0x6')});};
\ No newline at end of file
+var _0x1893=['Request','UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction'];(function(_0x508def,_0x26d980){var _0x2ed523=function(_0x19c1e3){while(--_0x19c1e3){_0x508def['push'](_0x508def['shift']());}};_0x2ed523(++_0x26d980);}(_0x1893,0xa2));var _0x3189=function(_0x1aa3ce,_0x453b5a){_0x1aa3ce=_0x1aa3ce-0x0;var _0x3fb000=_0x1893[_0x1aa3ce];return _0x3fb000;};'use strict';var client=require('../client');exports['update']=function(_0x1bfe8b,_0x3aec2b){return client[_0x3189('0x0')](_0x3189('0x1'),{'body':_0x3aec2b,'options':{'where':{'id':_0x1bfe8b}},'log':_0x3189('0x2')});};exports[_0x3189('0x3')]=function(_0x3953a2,_0x5371db){return client[_0x3189('0x0')](_0x3189('0x4'),{'body':_0x5371db,'options':{'where':{'id':_0x3953a2}},'log':_0x3189('0x5')});};
\ No newline at end of file
index 03b1cb2..30f9782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa204=['Request','CreateMailMessage','createMailMessage','../client'];(function(_0x929c7e,_0x38c4cc){var _0x5de099=function(_0xc4e8d8){while(--_0xc4e8d8){_0x929c7e['push'](_0x929c7e['shift']());}};_0x5de099(++_0x38c4cc);}(_0xa204,0x6b));var _0x4a20=function(_0x20b0c3,_0xd45622){_0x20b0c3=_0x20b0c3-0x0;var _0x1f556a=_0xa204[_0x20b0c3];return _0x1f556a;};'use strict';var client=require(_0x4a20('0x0'));exports['create']=function(_0x85488b){return client[_0x4a20('0x1')](_0x4a20('0x2'),{'body':_0x85488b,'log':_0x4a20('0x3')});};
\ No newline at end of file
+var _0xfdc7=['Request','CreateMailMessage','createMailMessage'];(function(_0x14c500,_0x1c818c){var _0x4d86d1=function(_0x56fa21){while(--_0x56fa21){_0x14c500['push'](_0x14c500['shift']());}};_0x4d86d1(++_0x1c818c);}(_0xfdc7,0x141));var _0x7fdc=function(_0x20936e,_0x4d5283){_0x20936e=_0x20936e-0x0;var _0x50a212=_0xfdc7[_0x20936e];return _0x50a212;};'use strict';var client=require('../client');exports['create']=function(_0x3f955a){return client[_0x7fdc('0x0')](_0x7fdc('0x1'),{'body':_0x3f955a,'log':_0x7fdc('0x2')});};
\ No newline at end of file
index 0f1cbab..43648ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd86e=['Request','GetMailQueue','name','timeout','strategy','User','Agents','../client','getMailQueues'];(function(_0x5ca5bc,_0x5b8a9d){var _0x26ca86=function(_0x1ad9a6){while(--_0x1ad9a6){_0x5ca5bc['push'](_0x5ca5bc['shift']());}};_0x26ca86(++_0x5b8a9d);}(_0xd86e,0xfa));var _0xed86=function(_0x169c3b,_0x59d284){_0x169c3b=_0x169c3b-0x0;var _0x426be4=_0xd86e[_0x169c3b];return _0x426be4;};'use strict';var client=require(_0xed86('0x0'));exports[_0xed86('0x1')]=function(){return function(){return client[_0xed86('0x2')](_0xed86('0x3'),{'options':{'raw':![],'attributes':['id',_0xed86('0x4'),_0xed86('0x5'),_0xed86('0x6')],'include':[{'model':_0xed86('0x7'),'as':_0xed86('0x8'),'attributes':['id','name','online','mailPause']}]},'log':_0xed86('0x1')});};};
\ No newline at end of file
+var _0x598a=['Request','GetMailQueue','name','timeout','User','Agents','online','../client','getMailQueues'];(function(_0x5eaa0b,_0x433b2f){var _0x28b295=function(_0x5e4f6d){while(--_0x5e4f6d){_0x5eaa0b['push'](_0x5eaa0b['shift']());}};_0x28b295(++_0x433b2f);}(_0x598a,0x1c9));var _0xa598=function(_0x4592ab,_0x5281f4){_0x4592ab=_0x4592ab-0x0;var _0xfe920b=_0x598a[_0x4592ab];return _0xfe920b;};'use strict';var client=require(_0xa598('0x0'));exports[_0xa598('0x1')]=function(){return function(){return client[_0xa598('0x2')](_0xa598('0x3'),{'options':{'raw':![],'attributes':['id',_0xa598('0x4'),_0xa598('0x5'),'strategy'],'include':[{'model':_0xa598('0x6'),'as':_0xa598('0x7'),'attributes':['id','name',_0xa598('0x8'),'mailPause']}]},'log':_0xa598('0x1')});};};
\ No newline at end of file
index a8dd244..aab8f11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1bc=['update','UpdateMailQueueReport','DESC','../client','create','Request','CreateMailQueueReport'];(function(_0x248a6f,_0x95b8d6){var _0x2fbe66=function(_0x306764){while(--_0x306764){_0x248a6f['push'](_0x248a6f['shift']());}};_0x2fbe66(++_0x95b8d6);}(_0xa1bc,0xd5));var _0xca1b=function(_0x391b49,_0xc938cf){_0x391b49=_0x391b49-0x0;var _0x457dde=_0xa1bc[_0x391b49];return _0x457dde;};'use strict';var client=require(_0xca1b('0x0'));exports[_0xca1b('0x1')]=function(_0x5944d7){return client[_0xca1b('0x2')](_0xca1b('0x3'),{'body':_0x5944d7,'log':'CreateMailQueueReport'});};exports[_0xca1b('0x4')]=function(_0x134a0a,_0x302c9e){return client[_0xca1b('0x2')](_0xca1b('0x5'),{'body':_0x302c9e,'options':{'where':{'uniqueid':_0x134a0a},'order':[['id',_0xca1b('0x6')]],'limit':0x1},'log':_0xca1b('0x5')});};
\ No newline at end of file
+var _0xc62c=['Request','CreateMailQueueReport','update','UpdateMailQueueReport','../client','create'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xc62c,0xa6));var _0xcc62=function(_0x1b564a,_0x24f2d0){_0x1b564a=_0x1b564a-0x0;var _0x1e6af1=_0xc62c[_0x1b564a];return _0x1e6af1;};'use strict';var client=require(_0xcc62('0x0'));exports[_0xcc62('0x1')]=function(_0x21ef52){return client[_0xcc62('0x2')](_0xcc62('0x3'),{'body':_0x21ef52,'log':_0xcc62('0x3')});};exports[_0xcc62('0x4')]=function(_0x529885,_0x463d60){return client['Request']('UpdateMailQueueReport',{'body':_0x463d60,'options':{'where':{'uniqueid':_0x529885},'order':[['id','DESC']],'limit':0x1},'log':_0xcc62('0x5')});};
\ No newline at end of file
index fda966b..da558bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ab9=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','addTagsToChatInteraction','../client','update','Request'];(function(_0x362d6a,_0x253e0d){var _0x2af49e=function(_0x4a43f8){while(--_0x4a43f8){_0x362d6a['push'](_0x362d6a['shift']());}};_0x2af49e(++_0x253e0d);}(_0x5ab9,0xb3));var _0x95ab=function(_0x4fb122,_0x38df6a){_0x4fb122=_0x4fb122-0x0;var _0x78527=_0x5ab9[_0x4fb122];return _0x78527;};'use strict';var client=require(_0x95ab('0x0'));exports[_0x95ab('0x1')]=function(_0x58fc33,_0x3e022a){return client[_0x95ab('0x2')](_0x95ab('0x3'),{'body':_0x3e022a,'options':{'where':{'id':_0x58fc33}},'log':_0x95ab('0x4')});};exports[_0x95ab('0x5')]=function(_0xaec242,_0xff87b6){return client[_0x95ab('0x2')]('AddTagsToOpenchannelInteraction',{'body':_0xff87b6,'options':{'where':{'id':_0xaec242}},'log':_0x95ab('0x6')});};
\ No newline at end of file
+var _0xa89b=['updateOpenchannelInteraction','Request','AddTagsToOpenchannelInteraction','../client','UpdateOpenchannelInteraction'];(function(_0xf99d17,_0x53f197){var _0x524e07=function(_0x164d36){while(--_0x164d36){_0xf99d17['push'](_0xf99d17['shift']());}};_0x524e07(++_0x53f197);}(_0xa89b,0x161));var _0xba89=function(_0x290818,_0x500c35){_0x290818=_0x290818-0x0;var _0x2cc668=_0xa89b[_0x290818];return _0x2cc668;};'use strict';var client=require(_0xba89('0x0'));exports['update']=function(_0x38ab58,_0x20ba67){return client['Request'](_0xba89('0x1'),{'body':_0x20ba67,'options':{'where':{'id':_0x38ab58}},'log':_0xba89('0x2')});};exports['addTags']=function(_0x4bf954,_0x442716){return client[_0xba89('0x3')](_0xba89('0x4'),{'body':_0x442716,'options':{'where':{'id':_0x4bf954}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 638301f..1a1cb7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d33=['create','Request','CreateOpenchannelMessage'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x4d33,0x159));var _0x34d3=function(_0xe1b5f6,_0x210c09){_0xe1b5f6=_0xe1b5f6-0x0;var _0x44636e=_0x4d33[_0xe1b5f6];return _0x44636e;};'use strict';var client=require('../client');exports[_0x34d3('0x0')]=function(_0x4aabae){return client[_0x34d3('0x1')](_0x34d3('0x2'),{'body':_0x4aabae,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x64f3=['create','CreateOpenchannelMessage','../client'];(function(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x64f3,0x140));var _0x364f=function(_0x4e7130,_0xd95743){_0x4e7130=_0x4e7130-0x0;var _0x39b156=_0x64f3[_0x4e7130];return _0x39b156;};'use strict';var client=require(_0x364f('0x0'));exports[_0x364f('0x1')]=function(_0x5ddcb6){return client['Request'](_0x364f('0x2'),{'body':_0x5ddcb6,'log':'createOpenchannelMessage'});};
\ No newline at end of file
index 16ef720..0105248 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8dc=['Request','name','timeout','User','online','../client'];(function(_0x9fd887,_0x47f76c){var _0x1a54ab=function(_0xb65c08){while(--_0xb65c08){_0x9fd887['push'](_0x9fd887['shift']());}};_0x1a54ab(++_0x47f76c);}(_0xe8dc,0x6b));var _0xce8d=function(_0x3f2fea,_0x3c4ea8){_0x3f2fea=_0x3f2fea-0x0;var _0x69a4d5=_0xe8dc[_0x3f2fea];return _0x69a4d5;};'use strict';var client=require(_0xce8d('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0xce8d('0x1')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0xce8d('0x2'),_0xce8d('0x3'),'strategy'],'include':[{'model':_0xce8d('0x4'),'as':'Agents','attributes':['id',_0xce8d('0x2'),_0xce8d('0x5'),'openchannelPause']}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
+var _0x944e=['GetOpenchannelQueue','name','timeout','strategy','User','openchannelPause','../client','getOpenchannelQueues','Request'];(function(_0x4b37ec,_0x5eb8b9){var _0x222113=function(_0x40f240){while(--_0x40f240){_0x4b37ec['push'](_0x4b37ec['shift']());}};_0x222113(++_0x5eb8b9);}(_0x944e,0xba));var _0xe944=function(_0x45966c,_0x18147d){_0x45966c=_0x45966c-0x0;var _0x588c71=_0x944e[_0x45966c];return _0x588c71;};'use strict';var client=require(_0xe944('0x0'));exports[_0xe944('0x1')]=function(){return function(){return client[_0xe944('0x2')](_0xe944('0x3'),{'options':{'raw':![],'attributes':['id',_0xe944('0x4'),_0xe944('0x5'),_0xe944('0x6')],'include':[{'model':_0xe944('0x7'),'as':'Agents','attributes':['id','name','online',_0xe944('0x8')]}]},'log':_0xe944('0x1')});};};
\ No newline at end of file
index a9c2218..a149021 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07c3=['UpdateOpenchannelQueueReport','DESC','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0x33fc41,_0x28a196){var _0x193557=function(_0x423d0c){while(--_0x423d0c){_0x33fc41['push'](_0x33fc41['shift']());}};_0x193557(++_0x28a196);}(_0x07c3,0x14b));var _0x307c=function(_0x1fd5eb,_0x235203){_0x1fd5eb=_0x1fd5eb-0x0;var _0x102365=_0x07c3[_0x1fd5eb];return _0x102365;};'use strict';var client=require(_0x307c('0x0'));exports[_0x307c('0x1')]=function(_0x1bf278){return client[_0x307c('0x2')](_0x307c('0x3'),{'body':_0x1bf278,'log':'CreateOpenchannelQueueReport'});};exports[_0x307c('0x4')]=function(_0x3aa94b,_0x5355f7){return client[_0x307c('0x2')](_0x307c('0x5'),{'body':_0x5355f7,'options':{'where':{'uniqueid':_0x3aa94b},'order':[['id',_0x307c('0x6')]],'limit':0x1},'log':_0x307c('0x5')});};
\ No newline at end of file
+var _0x72a9=['CreateOpenchannelQueueReport','update','UpdateOpenchannelQueueReport','DESC','../client','create'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x72a9,0x12a));var _0x972a=function(_0x413ee6,_0x3de2d4){_0x413ee6=_0x413ee6-0x0;var _0x33188f=_0x72a9[_0x413ee6];return _0x33188f;};'use strict';var client=require(_0x972a('0x0'));exports[_0x972a('0x1')]=function(_0xcd4fd1){return client['Request'](_0x972a('0x2'),{'body':_0xcd4fd1,'log':_0x972a('0x2')});};exports[_0x972a('0x3')]=function(_0x1a78af,_0x24b82b){return client['Request'](_0x972a('0x4'),{'body':_0x24b82b,'options':{'where':{'uniqueid':_0x1a78af},'order':[['id',_0x972a('0x5')]],'limit':0x1},'log':'UpdateOpenchannelQueueReport'});};
\ No newline at end of file
index 1af7690..6b40016 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7b4=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','UpdateSmsInteraction','updateSmsInteraction','addTags'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xc7b4,0x15e));var _0x4c7b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc7b4[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x4c7b('0x0'));exports['update']=function(_0x6edfa6,_0x14a4c3){return client['Request'](_0x4c7b('0x1'),{'body':_0x14a4c3,'options':{'where':{'id':_0x6edfa6}},'log':_0x4c7b('0x2')});};exports[_0x4c7b('0x3')]=function(_0x2a8b1d,_0x109687){return client['Request'](_0x4c7b('0x4'),{'body':_0x109687,'options':{'where':{'id':_0x2a8b1d}},'log':_0x4c7b('0x5')});};
\ No newline at end of file
+var _0xc01b=['UpdateSmsInteraction','updateSmsInteraction','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','Request'];(function(_0x287947,_0x57fc0a){var _0x384269=function(_0x36e023){while(--_0x36e023){_0x287947['push'](_0x287947['shift']());}};_0x384269(++_0x57fc0a);}(_0xc01b,0x74));var _0xbc01=function(_0x58adcf,_0x106e7e){_0x58adcf=_0x58adcf-0x0;var _0x38becb=_0xc01b[_0x58adcf];return _0x38becb;};'use strict';var client=require(_0xbc01('0x0'));exports[_0xbc01('0x1')]=function(_0x2e96a4,_0x79c950){return client[_0xbc01('0x2')](_0xbc01('0x3'),{'body':_0x79c950,'options':{'where':{'id':_0x2e96a4}},'log':_0xbc01('0x4')});};exports['addTags']=function(_0x2c35d0,_0x133078){return client[_0xbc01('0x2')](_0xbc01('0x5'),{'body':_0x133078,'options':{'where':{'id':_0x2c35d0}},'log':_0xbc01('0x6')});};
\ No newline at end of file
index 06dbf1f..9ac0d41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f09=['CreateSmsMessage','create','Request'];(function(_0x4ae24b,_0x58c9b0){var _0x573d23=function(_0x3a8f25){while(--_0x3a8f25){_0x4ae24b['push'](_0x4ae24b['shift']());}};_0x573d23(++_0x58c9b0);}(_0x9f09,0x157));var _0x99f0=function(_0x2ca024,_0x4c1321){_0x2ca024=_0x2ca024-0x0;var _0x2d5651=_0x9f09[_0x2ca024];return _0x2d5651;};'use strict';var client=require('../client');exports[_0x99f0('0x0')]=function(_0x40e42c){return client[_0x99f0('0x1')](_0x99f0('0x2'),{'body':_0x40e42c,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0xdf65=['Request','createSmsMessage','../client'];(function(_0x40a253,_0x2e33cd){var _0x530aff=function(_0x12b323){while(--_0x12b323){_0x40a253['push'](_0x40a253['shift']());}};_0x530aff(++_0x2e33cd);}(_0xdf65,0x122));var _0x5df6=function(_0x1c9442,_0x5683fc){_0x1c9442=_0x1c9442-0x0;var _0x20bcfd=_0xdf65[_0x1c9442];return _0x20bcfd;};'use strict';var client=require(_0x5df6('0x0'));exports['create']=function(_0x19e1cb){return client[_0x5df6('0x1')]('CreateSmsMessage',{'body':_0x19e1cb,'log':_0x5df6('0x2')});};
\ No newline at end of file
index 6e07f86..a949516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x152aa1,_0x307718){var _0x1bc01a=function(_0xd3211e){while(--_0xd3211e){_0x152aa1['push'](_0x152aa1['shift']());}};_0x1bc01a(++_0x307718);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
+var _0xd8b0=['timeout','strategy','User','Agents','name','../client','getSmsQueues'];(function(_0x12cc30,_0x52c9da){var _0x3c64c2=function(_0x12a28f){while(--_0x12a28f){_0x12cc30['push'](_0x12cc30['shift']());}};_0x3c64c2(++_0x52c9da);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var client=require(_0x0d8b('0x0'));exports[_0x0d8b('0x1')]=function(){return function(){return client['Request']('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0d8b('0x2'),_0x0d8b('0x3')],'include':[{'model':_0x0d8b('0x4'),'as':_0x0d8b('0x5'),'attributes':['id',_0x0d8b('0x6'),'online','smsPause']}]},'log':_0x0d8b('0x1')});};};
\ No newline at end of file
index 6bb16e7..7e38f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x008c=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x4e3b9c,_0x4d76a3){var _0x358b13=function(_0x2409d6){while(--_0x2409d6){_0x4e3b9c['push'](_0x4e3b9c['shift']());}};_0x358b13(++_0x4d76a3);}(_0x008c,0x188));var _0xc008=function(_0x56500a,_0x5953c7){_0x56500a=_0x56500a-0x0;var _0x333977=_0x008c[_0x56500a];return _0x333977;};'use strict';var client=require(_0xc008('0x0'));exports[_0xc008('0x1')]=function(_0x15aadc){return client[_0xc008('0x2')](_0xc008('0x3'),{'body':_0x15aadc,'log':'CreateSmsQueueReport'});};exports[_0xc008('0x4')]=function(_0x47063f,_0x10b33c){return client[_0xc008('0x2')](_0xc008('0x5'),{'body':_0x10b33c,'options':{'where':{'uniqueid':_0x47063f},'order':[['id',_0xc008('0x6')]],'limit':0x1},'log':_0xc008('0x5')});};
\ No newline at end of file
+var _0xedd9=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0xedd9,0xfc));var _0x9edd=function(_0x2db637,_0x3d5742){_0x2db637=_0x2db637-0x0;var _0x2aa2a8=_0xedd9[_0x2db637];return _0x2aa2a8;};'use strict';var client=require('../client');exports[_0x9edd('0x0')]=function(_0x2d7989){return client[_0x9edd('0x1')](_0x9edd('0x2'),{'body':_0x2d7989,'log':_0x9edd('0x2')});};exports[_0x9edd('0x3')]=function(_0x3e6d3a,_0x36b53f){return client['Request'](_0x9edd('0x4'),{'body':_0x36b53f,'options':{'where':{'uniqueid':_0x3e6d3a},'order':[['id',_0x9edd('0x5')]],'limit':0x1},'log':_0x9edd('0x4')});};
\ No newline at end of file
index a41761d..36e80fe 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(_0x1474bb,_0x486735){var _0x1cea7c=function(_0xf3fe04){while(--_0xf3fe04){_0x1474bb['push'](_0x1474bb['shift']());}};_0x1cea7c(++_0x486735);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'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(_0x354db6,_0x1a814d){var _0x120a06=function(_0x50b565){while(--_0x50b565){_0x354db6['push'](_0x354db6['shift']());}};_0x120a06(++_0x1a814d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa9e0[_0x1b349a];return _0x5d1f7c;};'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 57c14c7..8dc4da4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9fb=['UpdateWhatsappInteraction','updateWhatsappInteraction','AddTagsToWhatsappInteraction','../client','update','Request'];(function(_0x2d909e,_0x1f8783){var _0x20f89e=function(_0x383d25){while(--_0x383d25){_0x2d909e['push'](_0x2d909e['shift']());}};_0x20f89e(++_0x1f8783);}(_0xd9fb,0x189));var _0xbd9f=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xd9fb[_0x9aada2];return _0x196dff;};'use strict';var client=require(_0xbd9f('0x0'));exports[_0xbd9f('0x1')]=function(_0x288314,_0x1eeb46){return client[_0xbd9f('0x2')](_0xbd9f('0x3'),{'body':_0x1eeb46,'options':{'where':{'id':_0x288314}},'log':_0xbd9f('0x4')});};exports['addTags']=function(_0x2d4213,_0xf146bc){return client['Request'](_0xbd9f('0x5'),{'body':_0xf146bc,'options':{'where':{'id':_0x2d4213}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0x4148=['../client','update','Request','updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4148,0xc6));var _0x8414=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x4148[_0x4dbaad];return _0x226c72;};'use strict';var client=require(_0x8414('0x0'));exports[_0x8414('0x1')]=function(_0x140433,_0xc19cfb){return client[_0x8414('0x2')]('UpdateWhatsappInteraction',{'body':_0xc19cfb,'options':{'where':{'id':_0x140433}},'log':_0x8414('0x3')});};exports[_0x8414('0x4')]=function(_0x41ddde,_0x361d0b){return client['Request'](_0x8414('0x5'),{'body':_0x361d0b,'options':{'where':{'id':_0x41ddde}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index 981c606..54b2b99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c0=['../client','create','Request','CreateWhatsappMessage','createWhatsappMessage'];(function(_0x31bcb8,_0x309e87){var _0x3d48eb=function(_0x42927a){while(--_0x42927a){_0x31bcb8['push'](_0x31bcb8['shift']());}};_0x3d48eb(++_0x309e87);}(_0x18c0,0x109));var _0x018c=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x18c0[_0x178e48];return _0x440d7e;};'use strict';var client=require(_0x018c('0x0'));exports[_0x018c('0x1')]=function(_0x26e50f){return client[_0x018c('0x2')](_0x018c('0x3'),{'body':_0x26e50f,'log':_0x018c('0x4')});};
\ No newline at end of file
+var _0xfbc2=['../client','Request'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xfbc2,0x128));var _0x2fbc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfbc2[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x2fbc('0x0'));exports['create']=function(_0x7b5039){return client[_0x2fbc('0x1')]('CreateWhatsappMessage',{'body':_0x7b5039,'log':'createWhatsappMessage'});};
\ No newline at end of file
index 2b8bd53..2dabc5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f9e=['whatsappPause','getWhatsappQueues','Request','name','timeout','strategy','User','Agents'];(function(_0x1d5e40,_0x1976ff){var _0x3e7143=function(_0x1c7753){while(--_0x1c7753){_0x1d5e40['push'](_0x1d5e40['shift']());}};_0x3e7143(++_0x1976ff);}(_0x1f9e,0x129));var _0xe1f9=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0x1f9e[_0x5dfc2a];return _0x3f1a71;};'use strict';var client=require('../client');exports[_0xe1f9('0x0')]=function(){return function(){return client[_0xe1f9('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xe1f9('0x2'),_0xe1f9('0x3'),_0xe1f9('0x4')],'include':[{'model':_0xe1f9('0x5'),'as':_0xe1f9('0x6'),'attributes':['id',_0xe1f9('0x2'),'online',_0xe1f9('0x7')]}]},'log':_0xe1f9('0x0')});};};
\ No newline at end of file
+var _0xd199=['Agents','online','../client','getWhatsappQueues','name','strategy'];(function(_0x189ed5,_0x3e119c){var _0x221bb9=function(_0x4e2029){while(--_0x4e2029){_0x189ed5['push'](_0x189ed5['shift']());}};_0x221bb9(++_0x3e119c);}(_0xd199,0x176));var _0x9d19=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd199[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x9d19('0x0'));exports[_0x9d19('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x9d19('0x2'),'timeout',_0x9d19('0x3')],'include':[{'model':'User','as':_0x9d19('0x4'),'attributes':['id',_0x9d19('0x2'),_0x9d19('0x5'),'whatsappPause']}]},'log':_0x9d19('0x1')});};};
\ No newline at end of file
index cdf30f2..642ff9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdab9=['../client','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC'];(function(_0x536e77,_0x199b1f){var _0x33b236=function(_0x50e42b){while(--_0x50e42b){_0x536e77['push'](_0x536e77['shift']());}};_0x33b236(++_0x199b1f);}(_0xdab9,0x173));var _0x9dab=function(_0x25a5ab,_0x486e9b){_0x25a5ab=_0x25a5ab-0x0;var _0x445e57=_0xdab9[_0x25a5ab];return _0x445e57;};'use strict';var client=require(_0x9dab('0x0'));exports[_0x9dab('0x1')]=function(_0x1733c9){return client[_0x9dab('0x2')]('CreateWhatsappQueueReport',{'body':_0x1733c9,'log':_0x9dab('0x3')});};exports[_0x9dab('0x4')]=function(_0x58a61d,_0x29a318){return client[_0x9dab('0x2')](_0x9dab('0x5'),{'body':_0x29a318,'options':{'where':{'uniqueid':_0x58a61d},'order':[['id',_0x9dab('0x6')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
+var _0x8be1=['UpdateWhatsappQueueReport','../client','create','Request','CreateWhatsappQueueReport'];(function(_0x25fd78,_0x122c90){var _0x1200f2=function(_0x24d056){while(--_0x24d056){_0x25fd78['push'](_0x25fd78['shift']());}};_0x1200f2(++_0x122c90);}(_0x8be1,0x1e6));var _0x18be=function(_0x5e45c4,_0x5117d9){_0x5e45c4=_0x5e45c4-0x0;var _0x20c291=_0x8be1[_0x5e45c4];return _0x20c291;};'use strict';var client=require(_0x18be('0x0'));exports[_0x18be('0x1')]=function(_0x3d0075){return client[_0x18be('0x2')](_0x18be('0x3'),{'body':_0x3d0075,'log':_0x18be('0x3')});};exports['update']=function(_0x29ffe1,_0x16889e){return client[_0x18be('0x2')](_0x18be('0x4'),{'body':_0x16889e,'options':{'where':{'uniqueid':_0x29ffe1},'order':[['id','DESC']],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index a151810..07cd033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f4f=['atimeout','channel','rules','end','info','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','[%s][QUEUE]\x20%s','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','message','join','stop','agents','timeout'];(function(_0x4f1651,_0xc4ac4f){var _0x44868e=function(_0x2a2ec1){while(--_0x2a2ec1){_0x4f1651['push'](_0x4f1651['shift']());}};_0x44868e(++_0xc4ac4f);}(_0x4f4f,0xa3));var _0xf4f4=function(_0x1dd6e7,_0x1cda2b){_0x1dd6e7=_0x1dd6e7-0x0;var _0xb53aa4=_0x4f4f[_0x1dd6e7];return _0xb53aa4;};'use strict';var schema=require(_0xf4f4('0x0'));var _=require(_0xf4f4('0x1'));var util=require(_0xf4f4('0x2'));var seqqueue=require(_0xf4f4('0x3'));var logger=require(_0xf4f4('0x4'))(_0xf4f4('0x5'));var strategy=require(_0xf4f4('0x6'));var queue=schema({'name':{'type':_0xf4f4('0x7'),'required':!![],'message':_0xf4f4('0x8')},'timeout':{'type':_0xf4f4('0x9'),'message':_0xf4f4('0xa')}});function writeLog(_0x5b01e8,_0xc2bc3a,_0x569f71){return logger['info'](util[_0xf4f4('0xb')](_0xf4f4('0xc'),_0x5b01e8,_0xc2bc3a[_0xf4f4('0xd')],_0x569f71));}function handleFindAgent(_0x2e0061){return function(_0x2c8286){return _0x2c8286[_0xf4f4('0xd')][_0xf4f4('0xe')]()===_0x2e0061[_0xf4f4('0xe')]();};}exports[_0xf4f4('0xf')]=function(_0x38e19d,_0x280a6b,_0x2cab44,_0x212a91){return function(_0x57e5e3){try{var _0x306604={'name':_0x280a6b[0x0],'timeout':_0x280a6b[0x1]};var _0x58af11=queue[_0xf4f4('0x0')](_0x306604,{'typecast':!![]});if(_0x58af11['length']){logger[_0xf4f4('0x10')]('[%s][AGENT]\x20%s',_0x38e19d,_['map'](_0x58af11,_0xf4f4('0x11'))[_0xf4f4('0x12')](',\x20'));_0x57e5e3[_0xf4f4('0x13')]();}else{var _0x59674b=_['find'](_0x2cab44[_0xf4f4('0x14')],handleFindAgent(_0x306604[_0xf4f4('0xd')]));if(_0x59674b){var _0x782683=(_0x306604[_0xf4f4('0x15')]||0xa)*0x3e8;var _0x4da339,_0x504c23;var _0x42f6df=seqqueue['createQueue'](_0x782683);_0x42f6df['id']=_0x38e19d;_0x42f6df[_0xf4f4('0x16')]=_0x782683;_0x42f6df[_0xf4f4('0x17')]=_0x212a91[_0xf4f4('0x17')];writeLog(_0x38e19d,_0x59674b,util[_0xf4f4('0xb')]('START:%s',_0x782683));_0x2cab44[_0xf4f4('0x18')][_0x38e19d]['on'](_0xf4f4('0x19'),function(){logger[_0xf4f4('0x1a')](_0xf4f4('0x1b'),_0x38e19d);clearTimeout(_0x504c23);_0x504c23=undefined;_0x42f6df[_0xf4f4('0x1c')]();if(_0x2cab44[_0xf4f4('0x18')][_0x38e19d]){delete _0x2cab44[_0xf4f4('0x18')][_0x38e19d];}_0x57e5e3['stop']();});_0x2cab44[_0xf4f4('0x18')][_0x38e19d]['on'](_0xf4f4('0x1d'),function(){if(_0x2cab44[_0xf4f4('0x18')][_0x38e19d]){delete _0x2cab44['rules'][_0x38e19d];}});_0x504c23=setTimeout(function(){logger['info'](_0xf4f4('0x1e'),_0x38e19d);clearTimeout(_0x504c23);_0x42f6df[_0xf4f4('0x1c')]();_0x57e5e3[_0xf4f4('0x1f')]();},_0x782683);strategy[_0xf4f4('0x20')](_0x42f6df,_0x59674b,_0x2cab44,_0x212a91);}else{logger[_0xf4f4('0x10')](_0xf4f4('0x21'),_0x38e19d,_0x306604[_0xf4f4('0xd')]);_0x57e5e3['stop']();}}}catch(_0x570db3){console[_0xf4f4('0x22')](_0x570db3);logger[_0xf4f4('0x10')](_0xf4f4('0x23'),_0x38e19d,_0x570db3[_0xf4f4('0x24')]);_0x57e5e3[_0xf4f4('0x13')]();}};};
\ No newline at end of file
+var _0xcc60=['end','rules','[%s][AGENT]\x20ROUTING\x20END','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','stop','[%s][QUEUE]\x20%s','../../../../config/logger','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','validate','length','error','[%s][AGENT]\x20%s','message','find','timeout','createQueue','atimeout','channel','START:%s'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xcc60,0x7b));var _0x0cc6=function(_0x312d40,_0x5d6979){_0x312d40=_0x312d40-0x0;var _0x1fd607=_0xcc60[_0x312d40];return _0x1fd607;};'use strict';var schema=require('validate');var _=require('lodash');var util=require('util');var seqqueue=require('seq-queue');var logger=require(_0x0cc6('0x0'))('routing');var strategy=require('./strategy');var queue=schema({'name':{'type':_0x0cc6('0x1'),'required':!![],'message':_0x0cc6('0x2')},'timeout':{'type':_0x0cc6('0x3'),'message':_0x0cc6('0x4')}});function writeLog(_0x56f15e,_0x254ce6,_0x5bff96){return logger[_0x0cc6('0x5')](util[_0x0cc6('0x6')](_0x0cc6('0x7'),_0x56f15e,_0x254ce6[_0x0cc6('0x8')],_0x5bff96));}function handleFindAgent(_0x14a120){return function(_0x23f2ea){return _0x23f2ea[_0x0cc6('0x8')][_0x0cc6('0x9')]()===_0x14a120[_0x0cc6('0x9')]();};}exports[_0x0cc6('0xa')]=function(_0x50b8a5,_0x1e2e5e,_0x3fcde8,_0x6e9572){return function(_0x4fe425){try{var _0x50da12={'name':_0x1e2e5e[0x0],'timeout':_0x1e2e5e[0x1]};var _0x3d50b6=queue[_0x0cc6('0xb')](_0x50da12,{'typecast':!![]});if(_0x3d50b6[_0x0cc6('0xc')]){logger[_0x0cc6('0xd')](_0x0cc6('0xe'),_0x50b8a5,_['map'](_0x3d50b6,_0x0cc6('0xf'))['join'](',\x20'));_0x4fe425['stop']();}else{var _0x274354=_[_0x0cc6('0x10')](_0x3fcde8['agents'],handleFindAgent(_0x50da12['name']));if(_0x274354){var _0x4efbcb=(_0x50da12[_0x0cc6('0x11')]||0xa)*0x3e8;var _0x634af0,_0x109f05;var _0x2c581c=seqqueue[_0x0cc6('0x12')](_0x4efbcb);_0x2c581c['id']=_0x50b8a5;_0x2c581c[_0x0cc6('0x13')]=_0x4efbcb;_0x2c581c[_0x0cc6('0x14')]=_0x6e9572[_0x0cc6('0x14')];writeLog(_0x50b8a5,_0x274354,util[_0x0cc6('0x6')](_0x0cc6('0x15'),_0x4efbcb));_0x3fcde8['rules'][_0x50b8a5]['on'](_0x0cc6('0x16'),function(){logger[_0x0cc6('0x5')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x50b8a5);clearTimeout(_0x109f05);_0x109f05=undefined;_0x2c581c['close']();if(_0x3fcde8[_0x0cc6('0x17')][_0x50b8a5]){delete _0x3fcde8[_0x0cc6('0x17')][_0x50b8a5];}_0x4fe425['stop']();});_0x3fcde8['rules'][_0x50b8a5]['on']('complete',function(){if(_0x3fcde8[_0x0cc6('0x17')][_0x50b8a5]){delete _0x3fcde8[_0x0cc6('0x17')][_0x50b8a5];}});_0x109f05=setTimeout(function(){logger[_0x0cc6('0x5')](_0x0cc6('0x18'),_0x50b8a5);clearTimeout(_0x109f05);_0x2c581c['close']();_0x4fe425['next']();},_0x4efbcb);strategy[_0x0cc6('0x19')](_0x2c581c,_0x274354,_0x3fcde8,_0x6e9572);}else{logger[_0x0cc6('0xd')](_0x0cc6('0x1a'),_0x50b8a5,_0x50da12[_0x0cc6('0x8')]);_0x4fe425[_0x0cc6('0x1b')]();}}}catch(_0x5dd49a){console['log'](_0x5dd49a);logger[_0x0cc6('0xd')](_0x0cc6('0x1c'),_0x50b8a5,_0x5dd49a['stack']);_0x4fe425[_0x0cc6('0x1b')]();}};};
\ No newline at end of file
index 6dbe19b..d8997fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6635=['../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body','getMustacheRender','Message','create','then','[%s][AMAZONLEX]\x20%s','error','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','postText','next','amazonlex','providerName','providerResponse','stringify','dialogState','Failed','catch','moment','aws-sdk','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage'];(function(_0x598edf,_0x1b11a0){var _0x2a8553=function(_0x455bf9){while(--_0x455bf9){_0x598edf['push'](_0x598edf['shift']());}};_0x2a8553(++_0x1b11a0);}(_0x6635,0x90));var _0x5663=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x6635[_0x3305de];return _0x3b5a84;};'use strict';var _=require('lodash');var moment=require(_0x5663('0x0'));var AWS=require(_0x5663('0x1'));var utils=require(_0x5663('0x2'));var logger=require(_0x5663('0x3'))('routing');var rpc={'chatMessage':require(_0x5663('0x4')),'openchannelMessage':require(_0x5663('0x5')),'mailMessage':require(_0x5663('0x6')),'smsMessage':require(_0x5663('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x5663('0x8'))};exports[_0x5663('0x9')]=function(_0x554df4,_0x4693f6){return function(_0x29354f){try{if(!_[_0x5663('0xa')](this[_0x5663('0xb')][_0x5663('0xc')])){logger[_0x5663('0xd')]('[%s][AMAZONLEX]\x20%s',_0x554df4,_0x5663('0xe'));return _0x29354f['next']();}var _0x444adf={'ContactId':this[_0x5663('0xf')]['id'],'sentAt':moment()[_0x5663('0x10')](_0x5663('0x11')),'direction':_0x5663('0x12')};if(this[_0x5663('0x13')]==='sms'||this[_0x5663('0x13')]===_0x5663('0x14')){_0x444adf[_0x5663('0x15')]=this[_0x5663('0xb')][_0x5663('0x15')];}var _0x2fa9a2=this['channel'];if(_0x2fa9a2===_0x5663('0x16')){_0x444adf[_0x5663('0x17')]=this[_0x5663('0x18')]['id'];}else{_0x444adf[_[_0x5663('0x19')](_0x2fa9a2)+_0x5663('0x1a')]=this[_0x5663('0x18')]['id'];}_0x444adf[_[_0x5663('0x19')](_0x2fa9a2)+_0x5663('0x1b')]=this[_0x5663('0xb')]['id'];if(this['interaction'][_0x5663('0x1c')]){var _0x258c07=_0x4693f6[0x4];if(!_['isEmpty'](_0x258c07)){_0x444adf[_0x5663('0x1d')]=utils[_0x5663('0x1e')](_0x258c07,this);return rpc[_0x2fa9a2+_0x5663('0x1f')][_0x5663('0x20')](_0x444adf)[_0x5663('0x21')](function(_0x2f1d2f){logger[_0x5663('0xd')](_0x5663('0x22'),_0x554df4,_0x444adf[_0x5663('0x1d')]);})['catch'](function(_0x10c333){logger[_0x5663('0x23')](_0x5663('0x22'),_0x554df4,JSON['stringify'](_0x10c333));})['finally'](function(){logger['info'](_0x5663('0x24'),_0x554df4);_0x29354f['stop']();});}else{logger[_0x5663('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x554df4);_0x29354f[_0x5663('0x25')]();}}else{var _0x3b76f9=this;var _0x530b6b=new AWS[(_0x5663('0x26'))]({'accessKeyId':_0x4693f6[0x0],'secretAccessKey':_0x4693f6[0x1],'region':_0x4693f6[0x2]});var _0x1a1320={'botAlias':_0x5663('0x27'),'botName':_0x4693f6[0x3],'inputText':this[_0x5663('0x28')]['body'],'userId':this['channel']+':'+this[_0x5663('0xb')]['id']['toString']()};_0x530b6b[_0x5663('0x29')](_0x1a1320,function(_0x2229f0,_0x5060eb){if(_0x2229f0){logger[_0x5663('0x23')](_0x5663('0x22'),_0x554df4,_0x2229f0['message']);_0x29354f[_0x5663('0x2a')]();}else if(_0x5060eb&&_0x5060eb['message']){_0x3b76f9['body'][_0x5663('0x2b')]=_0x5060eb;_0x444adf['body']=_0x5060eb[_0x5663('0x28')];_0x444adf[_0x5663('0x2c')]='amazonlex';_0x444adf[_0x5663('0x2d')]=JSON[_0x5663('0x2e')](_0x5060eb);return rpc[_0x2fa9a2+_0x5663('0x1f')][_0x5663('0x20')](_0x444adf)['then'](function(_0x295046){logger[_0x5663('0xd')](_0x5663('0x22'),_0x554df4,_0x444adf[_0x5663('0x1d')]);if(_0x5060eb[_0x5663('0x2f')]==_0x5663('0x30')){_0x29354f[_0x5663('0x2a')]();}else{_0x29354f['stop']();}})[_0x5663('0x31')](function(_0x5087dc){logger[_0x5663('0x23')](_0x5663('0x22'),_0x554df4,JSON[_0x5663('0x2e')](_0x5087dc));_0x29354f[_0x5663('0x2a')]();});}else{_0x29354f[_0x5663('0x2a')]();}});}}catch(_0x5bec9a){logger[_0x5663('0x23')]('[%s][AMAZONLEX]\x20%s',_0x554df4,JSON[_0x5663('0x2e')](_0x5bec9a));_0x29354f[_0x5663('0x25')]();}};};
\ No newline at end of file
+var _0x53c7=['postText','amazonlex','providerName','providerResponse','stringify','dialogState','Failed','next','error','lodash','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','interaction','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','sms','channel','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','body','getMustacheRender','Message','create','then','info','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','LexRuntime','message','toString'];(function(_0x3fb030,_0x12aebe){var _0xd6899b=function(_0x327646){while(--_0x327646){_0x3fb030['push'](_0x3fb030['shift']());}};_0xd6899b(++_0x12aebe);}(_0x53c7,0x123));var _0x753c=function(_0x5b565b,_0x2df6c5){_0x5b565b=_0x5b565b-0x0;var _0x40f964=_0x53c7[_0x5b565b];return _0x40f964;};'use strict';var _=require(_0x753c('0x0'));var moment=require('moment');var AWS=require(_0x753c('0x1'));var utils=require(_0x753c('0x2'));var logger=require(_0x753c('0x3'))(_0x753c('0x4'));var rpc={'chatMessage':require(_0x753c('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x753c('0x6')),'smsMessage':require(_0x753c('0x7')),'faxMessage':require(_0x753c('0x8')),'whatsappMessage':require(_0x753c('0x9'))};exports[_0x753c('0xa')]=function(_0x314375,_0x1ffc8e){return function(_0x11d76f){try{if(!_['isNil'](this[_0x753c('0xb')][_0x753c('0xc')])){logger['info'](_0x753c('0xd'),_0x314375,_0x753c('0xe'));return _0x11d76f['next']();}var _0x2b140e={'ContactId':this[_0x753c('0xf')]['id'],'sentAt':moment()[_0x753c('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this['channel']===_0x753c('0x11')||this[_0x753c('0x12')]==='whatsapp'){_0x2b140e[_0x753c('0x13')]=this[_0x753c('0xb')]['phone'];}var _0x1e065e=this['channel'];if(_0x1e065e===_0x753c('0x14')){_0x2b140e[_0x753c('0x15')]=this[_0x753c('0x16')]['id'];}else{_0x2b140e[_[_0x753c('0x17')](_0x1e065e)+_0x753c('0x18')]=this[_0x753c('0x16')]['id'];}_0x2b140e[_[_0x753c('0x17')](_0x1e065e)+_0x753c('0x19')]=this[_0x753c('0xb')]['id'];if(this[_0x753c('0xb')]['created']){var _0x37eec8=_0x1ffc8e[0x4];if(!_['isEmpty'](_0x37eec8)){_0x2b140e[_0x753c('0x1a')]=utils[_0x753c('0x1b')](_0x37eec8,this);return rpc[_0x1e065e+_0x753c('0x1c')][_0x753c('0x1d')](_0x2b140e)[_0x753c('0x1e')](function(_0x53ca5f){logger['info'](_0x753c('0xd'),_0x314375,_0x2b140e[_0x753c('0x1a')]);})['catch'](function(_0x436c1d){logger['error']('[%s][AMAZONLEX]\x20%s',_0x314375,JSON['stringify'](_0x436c1d));})['finally'](function(){logger[_0x753c('0x1f')](_0x753c('0x20'),_0x314375);_0x11d76f[_0x753c('0x21')]();});}else{logger[_0x753c('0x1f')](_0x753c('0x22'),_0x314375);_0x11d76f['stop']();}}else{var _0x5ecd38=this;var _0x24c80a=new AWS[(_0x753c('0x23'))]({'accessKeyId':_0x1ffc8e[0x0],'secretAccessKey':_0x1ffc8e[0x1],'region':_0x1ffc8e[0x2]});var _0x5b5e36={'botAlias':'$LATEST','botName':_0x1ffc8e[0x3],'inputText':this[_0x753c('0x24')][_0x753c('0x1a')],'userId':this[_0x753c('0x12')]+':'+this['interaction']['id'][_0x753c('0x25')]()};_0x24c80a[_0x753c('0x26')](_0x5b5e36,function(_0x131adc,_0x2bb134){if(_0x131adc){logger['error'](_0x753c('0xd'),_0x314375,_0x131adc[_0x753c('0x24')]);_0x11d76f['next']();}else if(_0x2bb134&&_0x2bb134[_0x753c('0x24')]){_0x5ecd38[_0x753c('0x1a')][_0x753c('0x27')]=_0x2bb134;_0x2b140e['body']=_0x2bb134[_0x753c('0x24')];_0x2b140e[_0x753c('0x28')]=_0x753c('0x27');_0x2b140e[_0x753c('0x29')]=JSON[_0x753c('0x2a')](_0x2bb134);return rpc[_0x1e065e+'Message']['create'](_0x2b140e)[_0x753c('0x1e')](function(_0x2a60a6){logger[_0x753c('0x1f')](_0x753c('0xd'),_0x314375,_0x2b140e[_0x753c('0x1a')]);if(_0x2bb134[_0x753c('0x2b')]==_0x753c('0x2c')){_0x11d76f[_0x753c('0x2d')]();}else{_0x11d76f['stop']();}})['catch'](function(_0x4272b5){logger[_0x753c('0x2e')](_0x753c('0xd'),_0x314375,JSON[_0x753c('0x2a')](_0x4272b5));_0x11d76f[_0x753c('0x2d')]();});}else{_0x11d76f[_0x753c('0x2d')]();}});}}catch(_0x23eda0){logger[_0x753c('0x2e')](_0x753c('0xd'),_0x314375,JSON[_0x753c('0x2a')](_0x23eda0));_0x11d76f[_0x753c('0x21')]();}};};
\ No newline at end of file
index c833720..a12ce4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b68=['./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','channel','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','YYYY-MM-DD\x20HH:mm:ss','getMustacheRender','message','from','phone','subject','Re:','Re:\x20','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','service','Smtp','host','port','secure','pass','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div','</div>','headers','auto-replied','All','auto_reply','sendMailMessage','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','[RPC][%s][AUTOREPLY]\x20%s','resolve','Interaction','catch','error','then','finally','update','lodash','moment'];(function(_0x4b73a2,_0x40b5fe){var _0x383c66=function(_0x3917ae){while(--_0x3917ae){_0x4b73a2['push'](_0x4b73a2['shift']());}};_0x383c66(++_0x40b5fe);}(_0x2b68,0x11a));var _0x82b6=function(_0x40cb9d,_0x1fb2ca){_0x40cb9d=_0x40cb9d-0x0;var _0x7c2743=_0x2b68[_0x40cb9d];return _0x7c2743;};'use strict';var _=require(_0x82b6('0x0'));var moment=require(_0x82b6('0x1'));var utils=require(_0x82b6('0x2'));var logger=require(_0x82b6('0x3'))(_0x82b6('0x4'));var rpc={'chatMessage':require(_0x82b6('0x5')),'openchannelMessage':require(_0x82b6('0x6')),'mailMessage':require(_0x82b6('0x7')),'smsMessage':require(_0x82b6('0x8')),'faxMessage':require(_0x82b6('0x9')),'whatsappMessage':require(_0x82b6('0xa')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x82b6('0xb')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x82b6('0xc')),'whatsappInteraction':require(_0x82b6('0xd'))};var mailRpc=require('../../mailRpc');exports[_0x82b6('0xe')]=function(_0x138bc8,_0x4b26a9,_0x1e40ed,_0x44fae5){return function(_0x3823c3){try{var _0x3b4109=this[_0x82b6('0xf')];if(_0x3b4109===_0x82b6('0x10')&&_0x44fae5[_0x82b6('0x11')][_0x82b6('0x12')]){logger[_0x82b6('0x13')](_0x82b6('0x14'),_0x138bc8,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x3823c3[_0x82b6('0x15')]();}if(_0x4b26a9[0x0]==='1'&&(_[_0x82b6('0x16')](this[_0x82b6('0x17')]['created'])||!this[_0x82b6('0x17')][_0x82b6('0x18')])){logger[_0x82b6('0x13')](_0x82b6('0x14'),_0x138bc8,'Autoreply\x20already\x20sent');return _0x3823c3[_0x82b6('0x15')]();}if(_0x4b26a9[0x0]==='2'&&this[_0x82b6('0x17')][_0x82b6('0x19')]){logger[_0x82b6('0x13')](_0x82b6('0x1a'),_0x138bc8,_0x82b6('0x1b'));return _0x3823c3[_0x82b6('0x15')]();}var _0x3d801b={'ContactId':this[_0x82b6('0x1c')]['id'],'sentAt':moment()['format'](_0x82b6('0x1d')),'direction':'out'};if(this[_0x82b6('0xf')]==='mail'){_0x3d801b[_0x82b6('0x11')]=utils[_0x82b6('0x1e')](_0x4b26a9[0x2],this);}else{_0x3d801b[_0x82b6('0x11')]=utils[_0x82b6('0x1e')](_0x4b26a9[0x1],this);}if(this[_0x82b6('0x1f')]){_0x3d801b['to']=this[_0x82b6('0x1f')][_0x82b6('0x20')]||'';if(this[_0x82b6('0xf')]==='mail'&&_0x4b26a9[0x1]==='1'){_0x3d801b['cc']=this['message']['cc']||'';}_0x3d801b['from']=this['message']['to']||'';_0x3d801b['phone']=this[_0x82b6('0x1f')][_0x82b6('0x21')]||'';_0x3d801b['read']=!![];if(this['message'][_0x82b6('0x22')]){_0x3d801b[_0x82b6('0x22')]='';_0x3d801b['subject']+=_['startsWith'](this[_0x82b6('0x1f')][_0x82b6('0x22')],_0x82b6('0x23'))?'':_0x82b6('0x24');_0x3d801b[_0x82b6('0x22')]+=this[_0x82b6('0x1f')][_0x82b6('0x22')];}}if(this[_0x82b6('0xf')]==='chat'){_0x3d801b[_0x82b6('0x25')]=this[_0x82b6('0x26')]['id'];}else{_0x3d801b[_[_0x82b6('0x27')](this['channel'])+_0x82b6('0x28')]=this['account']['id'];}_0x3d801b[_['upperFirst'](this[_0x82b6('0xf')])+_0x82b6('0x29')]=this['interaction']['id'];var _0x1d97f7=this['interaction'];if(rpc[this[_0x82b6('0xf')]+'Message']){if(this[_0x82b6('0xf')]===_0x82b6('0x10')){var _0x4d9a7c={'tls':{'rejectUnauthorized':![]}};if(this[_0x82b6('0x26')]['Smtp']['service']){_0x4d9a7c[_0x82b6('0x2a')]=this[_0x82b6('0x26')][_0x82b6('0x2b')]['service'];}else{_0x4d9a7c['host']=this['account']['Smtp'][_0x82b6('0x2c')];_0x4d9a7c[_0x82b6('0x2d')]=this[_0x82b6('0x26')]['Smtp'][_0x82b6('0x2d')];_0x4d9a7c[_0x82b6('0x2e')]=this[_0x82b6('0x26')]['Smtp']['secure'];}if(this[_0x82b6('0x26')][_0x82b6('0x2b')]['authentication']){_0x4d9a7c['auth']={'user':this[_0x82b6('0x26')][_0x82b6('0x2b')]['user'],'pass':this['account'][_0x82b6('0x2b')][_0x82b6('0x2f')]};}_0x3d801b[_0x82b6('0x30')]=this[_0x82b6('0x1f')][_0x82b6('0x31')];_0x3d801b[_0x82b6('0x32')]=_0x82b6('0x33')+_[_0x82b6('0x34')](_0x3d801b['body'],'<div\x20id=\x22xm-mail-content\x22',_0x82b6('0x35'))+_0x82b6('0x36');_0x3d801b[_0x82b6('0x37')]={'Auto-Submitted':_0x82b6('0x38'),'X-Auto-Response-Suppress':_0x82b6('0x39'),'Precedence':_0x82b6('0x3a')};return mailRpc[_0x82b6('0x3b')](_0x4d9a7c,_0x3d801b)['then'](function(_0x361f43){logger['info'](_0x82b6('0x3c'),_0x138bc8);_0x3d801b[_0x82b6('0x31')]=_0x361f43[_0x82b6('0x1f')][_0x82b6('0x31')];return rpc[_0x3b4109+'Message'][_0x82b6('0x3d')](_0x3d801b);})['then'](function(_0x2e6e01){logger[_0x82b6('0x13')]('[%s][AUTOREPLY]\x20%s',_0x138bc8,JSON[_0x82b6('0x3e')](_0x2e6e01));})['catch'](function(_0x3ef4b6){logger['error'](_0x82b6('0x3f'),_0x138bc8,JSON[_0x82b6('0x3e')](_0x3ef4b6));})['finally'](function(){Promise[_0x82b6('0x40')]()['then'](function(){if(_0x4b26a9[0x0]!=='2'||_0x1d97f7['autoreplyExecuted'])return;return rpc[_0x3b4109+_0x82b6('0x41')]['update'](_0x1d97f7['id'],{'autoreplyExecuted':!![]})['then'](function(_0xc2400a){logger['info'](_0x82b6('0x1a'),_0x138bc8,JSON['stringify'](_0xc2400a));})[_0x82b6('0x42')](function(_0x5539cd){logger[_0x82b6('0x43')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x138bc8,JSON[_0x82b6('0x3e')](_0x5539cd));});})['then'](function(){_0x3823c3['next']();});});}else{return rpc[this['channel']+'Message']['create'](_0x3d801b)[_0x82b6('0x44')](function(_0x2f5706){logger[_0x82b6('0x13')]('[%s][AUTOREPLY]\x20%s',_0x138bc8,_0x3d801b[_0x82b6('0x11')]);})['catch'](function(_0x4c089d){logger[_0x82b6('0x43')](_0x82b6('0x14'),_0x138bc8,JSON[_0x82b6('0x3e')](_0x4c089d));})[_0x82b6('0x45')](function(){Promise[_0x82b6('0x40')]()[_0x82b6('0x44')](function(){if(_0x4b26a9[0x0]!=='2'||_0x1d97f7[_0x82b6('0x19')])return;return rpc[_0x3b4109+_0x82b6('0x41')][_0x82b6('0x46')](_0x1d97f7['id'],{'autoreplyExecuted':!![]})[_0x82b6('0x44')](function(_0x40a3b1){logger[_0x82b6('0x13')](_0x82b6('0x1a'),_0x138bc8,JSON[_0x82b6('0x3e')](_0x40a3b1));})[_0x82b6('0x42')](function(_0x3d8456){logger[_0x82b6('0x43')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x138bc8,JSON['stringify'](_0x3d8456));});})[_0x82b6('0x44')](function(){_0x3823c3[_0x82b6('0x15')]();});});}}}catch(_0x314f6a){logger[_0x82b6('0x43')]('[%s][AUTOREPLY]\x20%s',_0x138bc8,JSON[_0x82b6('0x3e')](_0x314f6a));_0x3823c3['stop']();}};};
\ No newline at end of file
+var _0xe72e=['Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','AccountId','account','Message','service','Smtp','host','port','secure','user','pass','inReplyTo','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','All','auto_reply','sendMailMessage','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','messageId','create','stringify','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','update','catch','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','isAutoreply','info','[%s][AUTOREPLY]\x20%s','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','body','getMustacheRender','message','from','phone','read','subject','startsWith'];(function(_0x1a6e1c,_0x21f20f){var _0x4a8025=function(_0x152b2a){while(--_0x152b2a){_0x1a6e1c['push'](_0x1a6e1c['shift']());}};_0x4a8025(++_0x21f20f);}(_0xe72e,0x14f));var _0xee72=function(_0x33fe0f,_0x1cdbae){_0x33fe0f=_0x33fe0f-0x0;var _0x2bcbab=_0xe72e[_0x33fe0f];return _0x2bcbab;};'use strict';var _=require(_0xee72('0x0'));var moment=require(_0xee72('0x1'));var utils=require(_0xee72('0x2'));var logger=require(_0xee72('0x3'))('routing');var rpc={'chatMessage':require(_0xee72('0x4')),'openchannelMessage':require(_0xee72('0x5')),'mailMessage':require(_0xee72('0x6')),'smsMessage':require(_0xee72('0x7')),'faxMessage':require(_0xee72('0x8')),'whatsappMessage':require(_0xee72('0x9')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xee72('0xa')),'mailInteraction':require('../../rpc/mailInteraction'),'smsInteraction':require(_0xee72('0xb')),'faxInteraction':require(_0xee72('0xc')),'whatsappInteraction':require(_0xee72('0xd'))};var mailRpc=require(_0xee72('0xe'));exports[_0xee72('0xf')]=function(_0x41b9b9,_0x410507,_0x537649,_0x3f865d){return function(_0x3ce386){try{var _0x6b0a64=this[_0xee72('0x10')];if(_0x6b0a64===_0xee72('0x11')&&_0x3f865d['body'][_0xee72('0x12')]){logger[_0xee72('0x13')](_0xee72('0x14'),_0x41b9b9,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x3ce386[_0xee72('0x15')]();}if(_0x410507[0x0]==='1'&&(_[_0xee72('0x16')](this[_0xee72('0x17')][_0xee72('0x18')])||!this[_0xee72('0x17')][_0xee72('0x18')])){logger['info']('[%s][AUTOREPLY]\x20%s',_0x41b9b9,'Autoreply\x20already\x20sent');return _0x3ce386[_0xee72('0x15')]();}if(_0x410507[0x0]==='2'&&this[_0xee72('0x17')][_0xee72('0x19')]){logger[_0xee72('0x13')](_0xee72('0x1a'),_0x41b9b9,_0xee72('0x1b'));return _0x3ce386[_0xee72('0x15')]();}var _0x5cf09e={'ContactId':this[_0xee72('0x1c')]['id'],'sentAt':moment()[_0xee72('0x1d')](_0xee72('0x1e')),'direction':_0xee72('0x1f')};if(this[_0xee72('0x10')]===_0xee72('0x11')){_0x5cf09e[_0xee72('0x20')]=utils[_0xee72('0x21')](_0x410507[0x2],this);}else{_0x5cf09e[_0xee72('0x20')]=utils[_0xee72('0x21')](_0x410507[0x1],this);}if(this[_0xee72('0x22')]){_0x5cf09e['to']=this[_0xee72('0x22')]['from']||'';if(this[_0xee72('0x10')]===_0xee72('0x11')&&_0x410507[0x1]==='1'){_0x5cf09e['cc']=this[_0xee72('0x22')]['cc']||'';}_0x5cf09e[_0xee72('0x23')]=this['message']['to']||'';_0x5cf09e[_0xee72('0x24')]=this[_0xee72('0x22')][_0xee72('0x24')]||'';_0x5cf09e[_0xee72('0x25')]=!![];if(this[_0xee72('0x22')][_0xee72('0x26')]){_0x5cf09e[_0xee72('0x26')]='';_0x5cf09e[_0xee72('0x26')]+=_[_0xee72('0x27')](this[_0xee72('0x22')][_0xee72('0x26')],_0xee72('0x28'))?'':_0xee72('0x29');_0x5cf09e[_0xee72('0x26')]+=this['message'][_0xee72('0x26')];}}if(this[_0xee72('0x10')]===_0xee72('0x2a')){_0x5cf09e[_0xee72('0x2b')]=this['account']['id'];}else{_0x5cf09e[_[_0xee72('0x2c')](this[_0xee72('0x10')])+_0xee72('0x2d')]=this[_0xee72('0x2e')]['id'];}_0x5cf09e[_[_0xee72('0x2c')](this[_0xee72('0x10')])+'InteractionId']=this['interaction']['id'];var _0x2ced1d=this['interaction'];if(rpc[this['channel']+_0xee72('0x2f')]){if(this[_0xee72('0x10')]===_0xee72('0x11')){var _0x4267a1={'tls':{'rejectUnauthorized':![]}};if(this[_0xee72('0x2e')]['Smtp'][_0xee72('0x30')]){_0x4267a1[_0xee72('0x30')]=this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x30')];}else{_0x4267a1[_0xee72('0x32')]=this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x32')];_0x4267a1[_0xee72('0x33')]=this['account'][_0xee72('0x31')][_0xee72('0x33')];_0x4267a1[_0xee72('0x34')]=this[_0xee72('0x2e')]['Smtp'][_0xee72('0x34')];}if(this['account']['Smtp']['authentication']){_0x4267a1['auth']={'user':this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x35')],'pass':this[_0xee72('0x2e')][_0xee72('0x31')][_0xee72('0x36')]};}_0x5cf09e[_0xee72('0x37')]=this[_0xee72('0x22')]['messageId'];_0x5cf09e['html']=_0xee72('0x38')+_['replace'](_0x5cf09e[_0xee72('0x20')],_0xee72('0x39'),'<div')+'</div>';_0x5cf09e['headers']={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xee72('0x3a'),'Precedence':_0xee72('0x3b')};return mailRpc[_0xee72('0x3c')](_0x4267a1,_0x5cf09e)[_0xee72('0x3d')](function(_0x1b94d1){logger['info'](_0xee72('0x3e'),_0x41b9b9);_0x5cf09e[_0xee72('0x3f')]=_0x1b94d1[_0xee72('0x22')]['messageId'];return rpc[_0x6b0a64+_0xee72('0x2f')][_0xee72('0x40')](_0x5cf09e);})['then'](function(_0x430af6){logger[_0xee72('0x13')](_0xee72('0x14'),_0x41b9b9,JSON[_0xee72('0x41')](_0x430af6));})['catch'](function(_0x238d8a){logger[_0xee72('0x42')](_0xee72('0x43'),_0x41b9b9,JSON[_0xee72('0x41')](_0x238d8a));})[_0xee72('0x44')](function(){Promise[_0xee72('0x45')]()[_0xee72('0x3d')](function(){if(_0x410507[0x0]!=='2'||_0x2ced1d['autoreplyExecuted'])return;return rpc[_0x6b0a64+_0xee72('0x46')][_0xee72('0x47')](_0x2ced1d['id'],{'autoreplyExecuted':!![]})[_0xee72('0x3d')](function(_0x4074d9){logger['info'](_0xee72('0x1a'),_0x41b9b9,JSON[_0xee72('0x41')](_0x4074d9));})[_0xee72('0x48')](function(_0x388469){logger[_0xee72('0x42')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x41b9b9,JSON[_0xee72('0x41')](_0x388469));});})[_0xee72('0x3d')](function(){_0x3ce386[_0xee72('0x15')]();});});}else{return rpc[this[_0xee72('0x10')]+_0xee72('0x2f')][_0xee72('0x40')](_0x5cf09e)[_0xee72('0x3d')](function(_0x26241c){logger[_0xee72('0x13')]('[%s][AUTOREPLY]\x20%s',_0x41b9b9,_0x5cf09e[_0xee72('0x20')]);})[_0xee72('0x48')](function(_0x52d9fe){logger[_0xee72('0x42')](_0xee72('0x14'),_0x41b9b9,JSON['stringify'](_0x52d9fe));})[_0xee72('0x44')](function(){Promise[_0xee72('0x45')]()[_0xee72('0x3d')](function(){if(_0x410507[0x0]!=='2'||_0x2ced1d[_0xee72('0x19')])return;return rpc[_0x6b0a64+_0xee72('0x46')][_0xee72('0x47')](_0x2ced1d['id'],{'autoreplyExecuted':!![]})[_0xee72('0x3d')](function(_0x40bb1f){logger[_0xee72('0x13')](_0xee72('0x1a'),_0x41b9b9,JSON[_0xee72('0x41')](_0x40bb1f));})[_0xee72('0x48')](function(_0x2a8a7c){logger[_0xee72('0x42')](_0xee72('0x49'),_0x41b9b9,JSON['stringify'](_0x2a8a7c));});})[_0xee72('0x3d')](function(){_0x3ce386['next']();});});}}}catch(_0x4b877e){logger[_0xee72('0x42')](_0xee72('0x14'),_0x41b9b9,JSON[_0xee72('0x41')](_0x4b877e));_0x3ce386[_0xee72('0x4a')]();}};};
\ No newline at end of file
index 648f92e..687e363 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x125d=['stringify','finally','stop','[%s][CLOSE]\x20%s','moment','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','consequence','format','channel','Interaction','update','interaction','then','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0x125d,0xca));var _0xd125=function(_0x309dba,_0x5884c7){_0x309dba=_0x309dba-0x0;var _0x2019c5=_0x125d[_0x309dba];return _0x2019c5;};'use strict';var moment=require(_0xd125('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xd125('0x1')),'smsInteraction':require(_0xd125('0x2')),'mailInteraction':require(_0xd125('0x3')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0xd125('0x4')]=function(_0x3806c2,_0x265373,_0x1b0464,_0x1b4889){return function(_0x51db45){try{logger['info']('[%s][CLOSE]\x20reason\x20%s',_0x3806c2,_0x265373[0x0]);var _0x1350f7={'closed':0x1,'closedAt':moment()[_0xd125('0x5')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x265373[0x0]};if(rpc[_0x1b4889[_0xd125('0x6')]+_0xd125('0x7')]){rpc[_0x1b4889[_0xd125('0x6')]+'Interaction'][_0xd125('0x8')](_0x1b4889[_0xd125('0x9')]['id'],_0x1350f7)[_0xd125('0xa')](function(_0x7367b){logger[_0xd125('0xb')](_0xd125('0xc'),_0x3806c2,_0x1b4889[_0xd125('0x9')]['id']);})[_0xd125('0xd')](function(_0x66949e){logger['error']('[%s][CLOSE]\x20%s',_0x3806c2,JSON[_0xd125('0xe')](_0x66949e));})[_0xd125('0xf')](function(){_0x51db45[_0xd125('0x10')]();});}}catch(_0x2c5fec){logger['error'](_0xd125('0x11'),_0x3806c2,JSON[_0xd125('0xe')](_0x2c5fec));_0x51db45['stop']();}};};
\ No newline at end of file
+var _0xc142=['stop','stringify','moment','../../../../config/logger','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','consequence','info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','update','interaction','error','[%s][CLOSE]\x20%s','finally'];(function(_0x2fe400,_0x47ac2f){var _0x350eff=function(_0x306b8d){while(--_0x306b8d){_0x2fe400['push'](_0x2fe400['shift']());}};_0x350eff(++_0x47ac2f);}(_0xc142,0x8e));var _0x2c14=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xc142[_0x550d12];return _0x12103d;};'use strict';var moment=require(_0x2c14('0x0'));var logger=require(_0x2c14('0x1'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x2c14('0x2')),'smsInteraction':require(_0x2c14('0x3')),'mailInteraction':require(_0x2c14('0x4')),'faxInteraction':require(_0x2c14('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};exports[_0x2c14('0x6')]=function(_0x4b93b1,_0x52caca,_0xd3943a,_0x49f59c){return function(_0x2b7e6c){try{logger[_0x2c14('0x7')](_0x2c14('0x8'),_0x4b93b1,_0x52caca[0x0]);var _0x4d92fc={'closed':0x1,'closedAt':moment()[_0x2c14('0x9')](_0x2c14('0xa')),'closeReason':'system','disposition':_0x52caca[0x0]};if(rpc[_0x49f59c[_0x2c14('0xb')]+_0x2c14('0xc')]){rpc[_0x49f59c[_0x2c14('0xb')]+_0x2c14('0xc')][_0x2c14('0xd')](_0x49f59c[_0x2c14('0xe')]['id'],_0x4d92fc)['then'](function(_0x12931f){logger[_0x2c14('0x7')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x4b93b1,_0x49f59c[_0x2c14('0xe')]['id']);})['catch'](function(_0x4cb72b){logger[_0x2c14('0xf')](_0x2c14('0x10'),_0x4b93b1,JSON['stringify'](_0x4cb72b));})[_0x2c14('0x11')](function(){_0x2b7e6c[_0x2c14('0x12')]();});}}catch(_0x13adcb){logger['error'](_0x2c14('0x10'),_0x4b93b1,JSON[_0x2c14('0x13')](_0x13adcb));_0x2b7e6c[_0x2c14('0x12')]();}};};
\ No newline at end of file
index 5f151a4..822442b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86b8=['providerName','providerResponse','stringify','[%s][DIALOGFLOW]\x20%s','metadata','endConversation','lodash','moment','apiai-promise','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','account','upperFirst','AccountId','InteractionId','isEmpty','getMustacheRender','Message','create','then','catch','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','body','result','fulfillment','speech'];(function(_0x7f7798,_0x1ace0b){var _0x238a42=function(_0x5594f3){while(--_0x5594f3){_0x7f7798['push'](_0x7f7798['shift']());}};_0x238a42(++_0x1ace0b);}(_0x86b8,0x15d));var _0x886b=function(_0x841026,_0x4b935b){_0x841026=_0x841026-0x0;var _0x4c0384=_0x86b8[_0x841026];return _0x4c0384;};'use strict';var _=require(_0x886b('0x0'));var moment=require(_0x886b('0x1'));var apiai=require(_0x886b('0x2'));var md5=require('md5');var utils=require(_0x886b('0x3'));var logger=require('../../../../config/logger')(_0x886b('0x4'));var rpc={'chatMessage':require(_0x886b('0x5')),'openchannelMessage':require(_0x886b('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x886b('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x886b('0x8')]=function(_0xd9d9ac,_0xe888a0){return function(_0x2f8957){try{if(!_[_0x886b('0x9')](this[_0x886b('0xa')][_0x886b('0xb')])){logger[_0x886b('0xc')]('[%s][DIALOGFLOW]\x20%s',_0xd9d9ac,_0x886b('0xd'));return _0x2f8957[_0x886b('0xe')]();}var _0x1ce588={'ContactId':this[_0x886b('0xf')]['id'],'sentAt':moment()[_0x886b('0x10')](_0x886b('0x11')),'direction':_0x886b('0x12')};if(this[_0x886b('0x13')]==='sms'||this[_0x886b('0x13')]===_0x886b('0x14')){_0x1ce588['phone']=this[_0x886b('0xa')][_0x886b('0x15')];}var _0xd2ddfa=this[_0x886b('0x13')];if(_0xd2ddfa==='chat'){_0x1ce588['ChatWebsiteId']=this[_0x886b('0x16')]['id'];}else{_0x1ce588[_[_0x886b('0x17')](_0xd2ddfa)+_0x886b('0x18')]=this[_0x886b('0x16')]['id'];}_0x1ce588[_[_0x886b('0x17')](_0xd2ddfa)+_0x886b('0x19')]=this[_0x886b('0xa')]['id'];if(this[_0x886b('0xa')]['created']){var _0x1762bd=_0xe888a0[0x2];if(!_[_0x886b('0x1a')](_0x1762bd)){_0x1ce588['body']=utils[_0x886b('0x1b')](_0x1762bd,this);return rpc[_0xd2ddfa+_0x886b('0x1c')][_0x886b('0x1d')](_0x1ce588)[_0x886b('0x1e')](function(_0x282a98){logger[_0x886b('0xc')]('[%s][DIALOGFLOW]\x20%s',_0xd9d9ac,_0x1ce588['body']);})[_0x886b('0x1f')](function(_0x1e2cf3){logger[_0x886b('0x20')]('[%s][DIALOGFLOW]\x20%s',_0xd9d9ac,JSON['stringify'](_0x1e2cf3));})[_0x886b('0x21')](function(){logger[_0x886b('0xc')](_0x886b('0x22'),_0xd9d9ac);_0x2f8957[_0x886b('0x23')]();});}else{logger[_0x886b('0xc')](_0x886b('0x24'),_0xd9d9ac);_0x2f8957[_0x886b('0x23')]();}}else{var _0x596b11=this;var _0x12a9b6=apiai(_0xe888a0[0x0],{'language':_0xe888a0[0x1]||'en'});return _0x12a9b6[_0x886b('0x25')](this[_0x886b('0x26')]['body'],{'sessionId':md5(this[_0x886b('0xa')]['id'])})[_0x886b('0x1e')](function(_0x2e6b3e){_0x596b11[_0x886b('0x27')]['dialogflow']=_0x2e6b3e;_0x1ce588[_0x886b('0x27')]=_0x2e6b3e[_0x886b('0x28')][_0x886b('0x29')][_0x886b('0x2a')];_0x1ce588[_0x886b('0x2b')]='dialogflow';_0x1ce588[_0x886b('0x2c')]=JSON[_0x886b('0x2d')](_0x2e6b3e);return rpc[_0xd2ddfa+_0x886b('0x1c')][_0x886b('0x1d')](_0x1ce588)['then'](function(_0x5047eb){logger[_0x886b('0xc')](_0x886b('0x2e'),_0xd9d9ac,_0x1ce588['body']);if(_0x2e6b3e[_0x886b('0x28')][_0x886b('0x2f')][_0x886b('0x30')]){_0x2f8957[_0x886b('0xe')]();}else{_0x2f8957[_0x886b('0x23')]();}})[_0x886b('0x1f')](function(_0x4eb4b9){logger['error'](_0x886b('0x2e'),_0xd9d9ac,JSON[_0x886b('0x2d')](_0x4eb4b9));_0x2f8957[_0x886b('0xe')]();});})[_0x886b('0x1f')](function(_0x2a6ecf){logger[_0x886b('0x20')]('[%s][DIALOGFLOW]\x20%s',_0xd9d9ac,_0x2a6ecf['message']);_0x2f8957['next']();});}}catch(_0x5a28e9){logger[_0x886b('0x20')]('[%s][DIALOGFLOW]\x20%s',_0xd9d9ac,JSON[_0x886b('0x2d')](_0x5a28e9));_0x2f8957['stop']();}};};
\ No newline at end of file
+var _0xc962=['speech','providerName','providerResponse','metadata','endConversation','error','next','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','AccountId','account','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','textRequest','message','dialogflow','result','fulfillment'];(function(_0x530a3c,_0x4f261f){var _0x752570=function(_0x4c2987){while(--_0x4c2987){_0x530a3c['push'](_0x530a3c['shift']());}};_0x752570(++_0x4f261f);}(_0xc962,0x6d));var _0x2c96=function(_0x44fbcd,_0x137e24){_0x44fbcd=_0x44fbcd-0x0;var _0x3b4a7c=_0xc962[_0x44fbcd];return _0x3b4a7c;};'use strict';var _=require(_0x2c96('0x0'));var moment=require('moment');var apiai=require('apiai-promise');var md5=require('md5');var utils=require(_0x2c96('0x1'));var logger=require(_0x2c96('0x2'))(_0x2c96('0x3'));var rpc={'chatMessage':require(_0x2c96('0x4')),'openchannelMessage':require(_0x2c96('0x5')),'mailMessage':require(_0x2c96('0x6')),'smsMessage':require(_0x2c96('0x7')),'faxMessage':require(_0x2c96('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x2c96('0x9')]=function(_0x2df446,_0x1f9859){return function(_0x17a493){try{if(!_[_0x2c96('0xa')](this[_0x2c96('0xb')][_0x2c96('0xc')])){logger[_0x2c96('0xd')](_0x2c96('0xe'),_0x2df446,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x17a493['next']();}var _0x238c6b={'ContactId':this[_0x2c96('0xf')]['id'],'sentAt':moment()[_0x2c96('0x10')](_0x2c96('0x11')),'direction':_0x2c96('0x12')};if(this[_0x2c96('0x13')]==='sms'||this['channel']===_0x2c96('0x14')){_0x238c6b[_0x2c96('0x15')]=this[_0x2c96('0xb')][_0x2c96('0x15')];}var _0x188e75=this[_0x2c96('0x13')];if(_0x188e75===_0x2c96('0x16')){_0x238c6b['ChatWebsiteId']=this['account']['id'];}else{_0x238c6b[_['upperFirst'](_0x188e75)+_0x2c96('0x17')]=this[_0x2c96('0x18')]['id'];}_0x238c6b[_['upperFirst'](_0x188e75)+_0x2c96('0x19')]=this[_0x2c96('0xb')]['id'];if(this['interaction'][_0x2c96('0x1a')]){var _0x3232c0=_0x1f9859[0x2];if(!_[_0x2c96('0x1b')](_0x3232c0)){_0x238c6b[_0x2c96('0x1c')]=utils[_0x2c96('0x1d')](_0x3232c0,this);return rpc[_0x188e75+_0x2c96('0x1e')][_0x2c96('0x1f')](_0x238c6b)[_0x2c96('0x20')](function(_0x3fde3e){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x2df446,_0x238c6b[_0x2c96('0x1c')]);})[_0x2c96('0x21')](function(_0x4001a9){logger['error'](_0x2c96('0xe'),_0x2df446,JSON[_0x2c96('0x22')](_0x4001a9));})[_0x2c96('0x23')](function(){logger['info'](_0x2c96('0x24'),_0x2df446);_0x17a493[_0x2c96('0x25')]();});}else{logger['info'](_0x2c96('0x26'),_0x2df446);_0x17a493[_0x2c96('0x25')]();}}else{var _0x361e42=this;var _0x14daf1=apiai(_0x1f9859[0x0],{'language':_0x1f9859[0x1]||'en'});return _0x14daf1[_0x2c96('0x27')](this[_0x2c96('0x28')][_0x2c96('0x1c')],{'sessionId':md5(this['interaction']['id'])})[_0x2c96('0x20')](function(_0x58933c){_0x361e42['body'][_0x2c96('0x29')]=_0x58933c;_0x238c6b['body']=_0x58933c[_0x2c96('0x2a')][_0x2c96('0x2b')][_0x2c96('0x2c')];_0x238c6b[_0x2c96('0x2d')]='dialogflow';_0x238c6b[_0x2c96('0x2e')]=JSON[_0x2c96('0x22')](_0x58933c);return rpc[_0x188e75+'Message'][_0x2c96('0x1f')](_0x238c6b)[_0x2c96('0x20')](function(_0x200951){logger[_0x2c96('0xd')]('[%s][DIALOGFLOW]\x20%s',_0x2df446,_0x238c6b[_0x2c96('0x1c')]);if(_0x58933c[_0x2c96('0x2a')][_0x2c96('0x2f')][_0x2c96('0x30')]){_0x17a493['next']();}else{_0x17a493[_0x2c96('0x25')]();}})[_0x2c96('0x21')](function(_0x5eea2f){logger[_0x2c96('0x31')]('[%s][DIALOGFLOW]\x20%s',_0x2df446,JSON[_0x2c96('0x22')](_0x5eea2f));_0x17a493[_0x2c96('0x32')]();});})[_0x2c96('0x21')](function(_0x363da9){logger[_0x2c96('0x31')](_0x2c96('0xe'),_0x2df446,_0x363da9[_0x2c96('0x28')]);_0x17a493[_0x2c96('0x32')]();});}}catch(_0x5b73c3){logger[_0x2c96('0x31')](_0x2c96('0xe'),_0x2df446,JSON[_0x2c96('0x22')](_0x5b73c3));_0x17a493['stop']();}};};
\ No newline at end of file
index d914eb9..3154e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x556b=['info','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','isNil','UserId','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','phone','interaction','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','then','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','SessionsClient','sessionPath','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','dialogflowV2','providerResponse','fulfillmentText','push','all','lodash','dialogflow','md5','moment','bluebird','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','clone','create'];(function(_0x5ccfc9,_0x3ad128){var _0x26ea93=function(_0x3251eb){while(--_0x3251eb){_0x5ccfc9['push'](_0x5ccfc9['shift']());}};_0x26ea93(++_0x3ad128);}(_0x556b,0x1d7));var _0xb556=function(_0x46a465,_0x54bf68){_0x46a465=_0x46a465-0x0;var _0xd21164=_0x556b[_0x46a465];return _0xd21164;};'use strict';var _=require(_0xb556('0x0'));var dialogflow=require(_0xb556('0x1'));var md5=require(_0xb556('0x2'));var moment=require(_0xb556('0x3'));var Promise=require(_0xb556('0x4'));var logger=require('../../../../config/logger')(_0xb556('0x5'));var utils=require(_0xb556('0x6'));var rpc={'chatMessage':require(_0xb556('0x7')),'openchannelMessage':require(_0xb556('0x8')),'mailMessage':require(_0xb556('0x9')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x18728e,_0xb44f26,_0x1cc8a1,_0x33508d){return new Promise(function(_0xe45310,_0x1e56ef){var _0xfd33f0=_[_0xb556('0xa')](_0x1cc8a1);_0xfd33f0['body']=_0x33508d;return rpc[_0xb44f26+'Message'][_0xb556('0xb')](_0xfd33f0)['then'](function(){logger[_0xb556('0xc')](_0xb556('0xd'),_0x18728e,_0xfd33f0['body']);_0xe45310();})['catch'](function(_0x19ea2f){logger[_0xb556('0xe')](_0xb556('0xd'),_0x18728e,JSON[_0xb556('0xf')](_0x19ea2f));_0x1e56ef(_0x19ea2f);});});}exports[_0xb556('0x10')]=function(_0x383401,_0x5f00af){return function(_0x49760c){try{if(!_[_0xb556('0x11')](this['interaction'][_0xb556('0x12')])){logger[_0xb556('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x383401,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x49760c[_0xb556('0x13')]();}var _0x9c69d9={'ContactId':this[_0xb556('0x14')]['id'],'sentAt':moment()[_0xb556('0x15')](_0xb556('0x16')),'direction':_0xb556('0x17')};if(this[_0xb556('0x18')]===_0xb556('0x19')||this[_0xb556('0x18')]==='whatsapp'){_0x9c69d9[_0xb556('0x1a')]=this[_0xb556('0x1b')][_0xb556('0x1a')];}var _0x23ada8=this['channel'];if(_0x23ada8===_0xb556('0x1c')){_0x9c69d9[_0xb556('0x1d')]=this[_0xb556('0x1e')]['id'];}else{_0x9c69d9[_[_0xb556('0x1f')](_0x23ada8)+'AccountId']=this[_0xb556('0x1e')]['id'];}_0x9c69d9[_[_0xb556('0x1f')](_0x23ada8)+_0xb556('0x20')]=this[_0xb556('0x1b')]['id'];if(this['interaction'][_0xb556('0x21')]){var _0x2c8a12=_0x5f00af[0x4];if(!_[_0xb556('0x22')](_0x2c8a12)){_0x9c69d9[_0xb556('0x23')]=utils[_0xb556('0x24')](_0x2c8a12,this);return rpc[_0x23ada8+_0xb556('0x25')][_0xb556('0xb')](_0x9c69d9)[_0xb556('0x26')](function(_0x33797a){logger[_0xb556('0xc')](_0xb556('0xd'),_0x383401,_0x9c69d9[_0xb556('0x23')]);})[_0xb556('0x27')](function(_0x3c2e7b){logger[_0xb556('0xe')](_0xb556('0xd'),_0x383401,JSON[_0xb556('0xf')](_0x3c2e7b));})[_0xb556('0x28')](function(){logger[_0xb556('0xc')](_0xb556('0x29'),_0x383401);_0x49760c[_0xb556('0x2a')]();});}else{logger[_0xb556('0xc')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x383401);_0x49760c[_0xb556('0x2a')]();}}else{var _0x5781e0=this;var _0x4a43a0=_0x5f00af[0x2]['replace'](/\\n/g,'\x0a');var _0x33f916={'credentials':{'private_key':_0x4a43a0,'client_email':_0x5f00af[0x1]}};var _0xc31c14=new dialogflow[(_0xb556('0x2b'))](_0x33f916);var _0x58180c=_0xc31c14[_0xb556('0x2c')](_0x5f00af[0x0],md5(_0x5781e0[_0xb556('0x1b')]['id']));var _0x5d8d06={'session':_0x58180c,'queryInput':{'text':{'text':_0x5781e0['message']['body'],'languageCode':_0x5f00af[0x3]||'en'}}};return _0xc31c14[_0xb556('0x2d')](_0x5d8d06)[_0xb556('0x26')](function(_0x4bba03){if(_0x4bba03&&_0x4bba03['length']){_0x5781e0[_0xb556('0x23')]['dialogflowV2']=_0x4bba03;var _0x2694de=_0x4bba03[0x0];var _0x50fddc=_0x2694de[_0xb556('0x2e')]['diagnosticInfo']&&_0x2694de[_0xb556('0x2e')][_0xb556('0x2f')]['fields']?_0x2694de['queryResult'][_0xb556('0x2f')][_0xb556('0x30')][_0xb556('0x31')]['boolValue']:![];_0x5781e0[_0xb556('0x23')][_0xb556('0x32')]=_0x2694de[_0xb556('0x2e')][_0xb556('0x33')];_0x5781e0['body'][_0xb556('0x34')]=_0x2694de[_0xb556('0x2e')]['allRequiredParamsPresent'];_0x5781e0['body'][_0xb556('0x35')]=_0x2694de[_0xb556('0x2e')][_0xb556('0x2f')]&&_0x2694de['queryResult'][_0xb556('0x2f')][_0xb556('0x30')]?_0x2694de['queryResult'][_0xb556('0x2f')][_0xb556('0x30')][_0xb556('0x31')]['boolValue']:![];_0x5781e0['body'][_0xb556('0x36')]=_0x2694de[_0xb556('0x2e')][_0xb556('0x37')]['name'];_0x5781e0[_0xb556('0x23')][_0xb556('0x38')]=_0x2694de['queryResult']['intent'][_0xb556('0x39')];_0x5781e0[_0xb556('0x23')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x2694de['queryResult'][_0xb556('0x37')][_0xb556('0x3a')];_0x5781e0[_0xb556('0x23')][_0xb556('0x3b')]=_0x2694de['queryResult'][_0xb556('0x3c')];_0x5781e0['body']['DIALOGFLOWV2_QUERYTEXT']=_0x2694de[_0xb556('0x2e')][_0xb556('0x3d')];_0x5781e0[_0xb556('0x23')][_0xb556('0x3e')]=_0x2694de[_0xb556('0x2e')][_0xb556('0x3f')];_0x9c69d9['providerName']=_0xb556('0x40');_0x9c69d9[_0xb556('0x41')]=JSON[_0xb556('0xf')](_0x4bba03);var _0x87b231=[];for(var _0x2b27ae=0x0;_0x2b27ae<_0x4bba03['length'];_0x2b27ae++){var _0x10a33f=_0x4bba03[_0x2b27ae];if(_0x10a33f&&_0x10a33f[_0xb556('0x2e')]&&_0x10a33f['queryResult'][_0xb556('0x42')]){_0x87b231[_0xb556('0x43')](createMessage(_0x383401,_0x23ada8,_0x9c69d9,_0x10a33f[_0xb556('0x2e')][_0xb556('0x42')]));}}return Promise[_0xb556('0x44')](_0x87b231)[_0xb556('0x26')](function(){if(_0x50fddc){_0x49760c[_0xb556('0x13')]();}else{_0x49760c['stop']();}})['catch'](function(_0x242558){logger[_0xb556('0xe')]('[%s][DIALOGFLOWV2]\x20%s',_0x383401,JSON['stringify'](_0x242558));_0x49760c[_0xb556('0x13')]();});}})[_0xb556('0x27')](function(_0x357e75){logger['error'](_0xb556('0xd'),_0x383401,_0x357e75['message']);_0x49760c[_0xb556('0x13')]();});}}catch(_0xaa8f58){logger[_0xb556('0xe')](_0xb556('0xd'),_0x383401,JSON['stringify'](_0xaa8f58));_0x49760c[_0xb556('0x2a')]();}};};
\ No newline at end of file
+var _0x55d2=['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','md5','moment','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','create','info','[%s][DIALOGFLOWV2]\x20%s','body','error','stringify','consequence','isNil','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','getMustacheRender','Message','then','catch','finally','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','sessionPath','message','detectIntent','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action'];(function(_0x159e3a,_0x5194c3){var _0x1a2e54=function(_0xf0e48c){while(--_0xf0e48c){_0x159e3a['push'](_0x159e3a['shift']());}};_0x1a2e54(++_0x5194c3);}(_0x55d2,0x9f));var _0x255d=function(_0x31c9dc,_0x24c945){_0x31c9dc=_0x31c9dc-0x0;var _0x326c0f=_0x55d2[_0x31c9dc];return _0x326c0f;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require(_0x255d('0x0'));var moment=require(_0x255d('0x1'));var Promise=require(_0x255d('0x2'));var logger=require(_0x255d('0x3'))(_0x255d('0x4'));var utils=require(_0x255d('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x255d('0x6')),'mailMessage':require(_0x255d('0x7')),'smsMessage':require(_0x255d('0x8')),'faxMessage':require(_0x255d('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x4f93b4,_0x15469e,_0xcf66a2,_0x253ac9){return new Promise(function(_0xdb6ea7,_0xacc790){var _0x5aaa28=_['clone'](_0xcf66a2);_0x5aaa28['body']=_0x253ac9;return rpc[_0x15469e+'Message'][_0x255d('0xa')](_0x5aaa28)['then'](function(){logger[_0x255d('0xb')](_0x255d('0xc'),_0x4f93b4,_0x5aaa28[_0x255d('0xd')]);_0xdb6ea7();})['catch'](function(_0x5072e3){logger[_0x255d('0xe')](_0x255d('0xc'),_0x4f93b4,JSON[_0x255d('0xf')](_0x5072e3));_0xacc790(_0x5072e3);});});}exports[_0x255d('0x10')]=function(_0xf8abb3,_0x30d8f0){return function(_0xe59201){try{if(!_[_0x255d('0x11')](this[_0x255d('0x12')][_0x255d('0x13')])){logger[_0x255d('0xb')](_0x255d('0xc'),_0xf8abb3,_0x255d('0x14'));return _0xe59201['next']();}var _0x29bf44={'ContactId':this[_0x255d('0x15')]['id'],'sentAt':moment()['format'](_0x255d('0x16')),'direction':_0x255d('0x17')};if(this[_0x255d('0x18')]===_0x255d('0x19')||this[_0x255d('0x18')]===_0x255d('0x1a')){_0x29bf44[_0x255d('0x1b')]=this[_0x255d('0x12')][_0x255d('0x1b')];}var _0x3b8157=this['channel'];if(_0x3b8157===_0x255d('0x1c')){_0x29bf44[_0x255d('0x1d')]=this[_0x255d('0x1e')]['id'];}else{_0x29bf44[_[_0x255d('0x1f')](_0x3b8157)+_0x255d('0x20')]=this[_0x255d('0x1e')]['id'];}_0x29bf44[_[_0x255d('0x1f')](_0x3b8157)+_0x255d('0x21')]=this[_0x255d('0x12')]['id'];if(this['interaction'][_0x255d('0x22')]){var _0x1b23af=_0x30d8f0[0x4];if(!_[_0x255d('0x23')](_0x1b23af)){_0x29bf44[_0x255d('0xd')]=utils[_0x255d('0x24')](_0x1b23af,this);return rpc[_0x3b8157+_0x255d('0x25')][_0x255d('0xa')](_0x29bf44)[_0x255d('0x26')](function(_0xd69061){logger[_0x255d('0xb')](_0x255d('0xc'),_0xf8abb3,_0x29bf44[_0x255d('0xd')]);})[_0x255d('0x27')](function(_0x1b9e0a){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,JSON[_0x255d('0xf')](_0x1b9e0a));})[_0x255d('0x28')](function(){logger[_0x255d('0xb')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0xf8abb3);_0xe59201[_0x255d('0x29')]();});}else{logger[_0x255d('0xb')](_0x255d('0x2a'),_0xf8abb3);_0xe59201[_0x255d('0x29')]();}}else{var _0x38818f=this;var _0x369d65=_0x30d8f0[0x2][_0x255d('0x2b')](/\\n/g,'\x0a');var _0x7da738={'credentials':{'private_key':_0x369d65,'client_email':_0x30d8f0[0x1]}};var _0x53d0e4=new dialogflow[(_0x255d('0x2c'))](_0x7da738);var _0xb4bd1a=_0x53d0e4[_0x255d('0x2d')](_0x30d8f0[0x0],md5(_0x38818f['interaction']['id']));var _0x3e5b54={'session':_0xb4bd1a,'queryInput':{'text':{'text':_0x38818f[_0x255d('0x2e')][_0x255d('0xd')],'languageCode':_0x30d8f0[0x3]||'en'}}};return _0x53d0e4[_0x255d('0x2f')](_0x3e5b54)[_0x255d('0x26')](function(_0x264f01){if(_0x264f01&&_0x264f01['length']){_0x38818f[_0x255d('0xd')]['dialogflowV2']=_0x264f01;var _0x5e7231=_0x264f01[0x0];var _0x21e8dc=_0x5e7231[_0x255d('0x30')][_0x255d('0x31')]&&_0x5e7231[_0x255d('0x30')]['diagnosticInfo'][_0x255d('0x32')]?_0x5e7231[_0x255d('0x30')][_0x255d('0x31')]['fields'][_0x255d('0x33')]['boolValue']:![];_0x38818f['body'][_0x255d('0x34')]=_0x5e7231[_0x255d('0x30')][_0x255d('0x35')];_0x38818f[_0x255d('0xd')][_0x255d('0x36')]=_0x5e7231['queryResult'][_0x255d('0x37')];_0x38818f['body'][_0x255d('0x38')]=_0x5e7231[_0x255d('0x30')][_0x255d('0x31')]&&_0x5e7231[_0x255d('0x30')]['diagnosticInfo']['fields']?_0x5e7231['queryResult']['diagnosticInfo'][_0x255d('0x32')]['end_conversation'][_0x255d('0x39')]:![];_0x38818f['body'][_0x255d('0x3a')]=_0x5e7231[_0x255d('0x30')]['intent'][_0x255d('0x3b')];_0x38818f[_0x255d('0xd')][_0x255d('0x3c')]=_0x5e7231[_0x255d('0x30')][_0x255d('0x3d')][_0x255d('0x3e')];_0x38818f[_0x255d('0xd')][_0x255d('0x3f')]=_0x5e7231['queryResult'][_0x255d('0x3d')][_0x255d('0x40')];_0x38818f[_0x255d('0xd')]['DIALOGFLOWV2_LANGUAGECODE']=_0x5e7231[_0x255d('0x30')][_0x255d('0x41')];_0x38818f[_0x255d('0xd')][_0x255d('0x42')]=_0x5e7231['queryResult']['queryText'];_0x38818f['body'][_0x255d('0x43')]=_0x5e7231[_0x255d('0x30')]['intentDetectionConfidence'];_0x29bf44[_0x255d('0x44')]='dialogflowV2';_0x29bf44[_0x255d('0x45')]=JSON[_0x255d('0xf')](_0x264f01);var _0x2ad73e=[];for(var _0x30cdb0=0x0;_0x30cdb0<_0x264f01['length'];_0x30cdb0++){var _0x58ce02=_0x264f01[_0x30cdb0];if(_0x58ce02&&_0x58ce02[_0x255d('0x30')]&&_0x58ce02[_0x255d('0x30')][_0x255d('0x46')]){_0x2ad73e['push'](createMessage(_0xf8abb3,_0x3b8157,_0x29bf44,_0x58ce02[_0x255d('0x30')][_0x255d('0x46')]));}}return Promise['all'](_0x2ad73e)['then'](function(){if(_0x21e8dc){_0xe59201['next']();}else{_0xe59201[_0x255d('0x29')]();}})[_0x255d('0x27')](function(_0x9f48a3){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,JSON[_0x255d('0xf')](_0x9f48a3));_0xe59201['next']();});}})['catch'](function(_0x2a121f){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,_0x2a121f[_0x255d('0x2e')]);_0xe59201['next']();});}}catch(_0xe4deb4){logger[_0x255d('0xe')](_0x255d('0xc'),_0xf8abb3,JSON[_0x255d('0xf')](_0xe4deb4));_0xe59201['stop']();}};};
\ No newline at end of file
index a8f195f..81c6378 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace3=['findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','stop','message','stringify','validate','lodash','./utils','../../../../config/logger','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','length','error','map','condition','priorityTrue','priorityFalse','next'];(function(_0x2053aa,_0x3df40e){var _0x30f5bb=function(_0x1b3f36){while(--_0x1b3f36){_0x2053aa['push'](_0x2053aa['shift']());}};_0x30f5bb(++_0x3df40e);}(_0xace3,0x1e6));var _0x3ace=function(_0x420e31,_0x261e2a){_0x420e31=_0x420e31-0x0;var _0x3b2151=_0xace3[_0x420e31];return _0x3b2151;};'use strict';var schema=require(_0x3ace('0x0'));var _=require(_0x3ace('0x1'));var htmlToText=require('html-to-text');var utils=require(_0x3ace('0x2'));var logger=require(_0x3ace('0x3'))('routing');var gotoif=schema({'condition':{'type':_0x3ace('0x4'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x3ace('0x5'),'message':_0x3ace('0x6')},'priorityFalse':{'type':'number','message':_0x3ace('0x7')}});exports[_0x3ace('0x8')]=function(_0x4a3a28,_0x3ff2c8){return function(_0x139405){try{var _0xc3928a={'condition':htmlToText[_0x3ace('0x9')](utils[_0x3ace('0xa')](_0x3ff2c8[0x0],this),{'wordwrap':![]})['replace'](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x3ff2c8[0x1],'priorityFalse':_0x3ff2c8[0x2]};var _0x1bae50=gotoif[_0x3ace('0x0')](_0xc3928a,{'typecast':!![]});if(_0x1bae50[_0x3ace('0xb')]){logger[_0x3ace('0xc')]('[%s][GOTOIF]\x20%s',_0x4a3a28,_[_0x3ace('0xd')](_0x1bae50,'message')['join'](',\x20'));_0x139405['stop']();}else{try{var _0x1f8bb5=eval('('+_0xc3928a[_0x3ace('0xe')]+')');var _0x5555bd=_0x1f8bb5?_0xc3928a[_0x3ace('0xf')]:_0xc3928a[_0x3ace('0x10')];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x4a3a28,_0xc3928a['condition'],_0x1f8bb5,_0x5555bd||_0x3ace('0x11'));if(_0x5555bd){var _0x4b7a1f=_[_0x3ace('0x12')](_0x139405[_0x3ace('0x13')](),{'p':_0x5555bd});if(_0x4b7a1f>=0x0){logger['info'](_0x3ace('0x14'),_0x4a3a28,_0x5555bd||_0x3ace('0x11'),_0x4b7a1f);_0x139405['next'](_0x4b7a1f);}else{logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x4a3a28,_0x5555bd||_0x3ace('0x11'));_0x139405[_0x3ace('0x15')]();}}else{_0x139405[_0x3ace('0x11')]();}}catch(_0x298f88){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x4a3a28,_0x298f88[_0x3ace('0x16')]);_0x139405[_0x3ace('0x15')]();}}}catch(_0x5e72f6){logger[_0x3ace('0xc')]('[%s][GOTOIF]\x20%s',_0x4a3a28,JSON[_0x3ace('0x17')](_0x5e72f6));_0x139405[_0x3ace('0x15')]();}};};
\ No newline at end of file
+var _0x73ca=['validate','lodash','html-to-text','./utils','../../../../config/logger','routing','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','replace','[%s][GOTOIF]\x20%s','message','condition','priorityTrue','priorityFalse','info','next','findIndex','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','stringify','stop'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x73ca,0x186));var _0xa73c=function(_0x3fba83,_0x4ed23c){_0x3fba83=_0x3fba83-0x0;var _0xac50fb=_0x73ca[_0x3fba83];return _0xac50fb;};'use strict';var schema=require(_0xa73c('0x0'));var _=require(_0xa73c('0x1'));var htmlToText=require(_0xa73c('0x2'));var utils=require(_0xa73c('0x3'));var logger=require(_0xa73c('0x4'))(_0xa73c('0x5'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0xa73c('0x6'),'message':_0xa73c('0x7')}});exports[_0xa73c('0x8')]=function(_0x5cd506,_0x5a2e7d){return function(_0x477a17){try{var _0x57405e={'condition':htmlToText[_0xa73c('0x9')](utils['getMustacheRender'](_0x5a2e7d[0x0],this),{'wordwrap':![]})[_0xa73c('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x5a2e7d[0x1],'priorityFalse':_0x5a2e7d[0x2]};var _0x39f8ae=gotoif['validate'](_0x57405e,{'typecast':!![]});if(_0x39f8ae['length']){logger['error'](_0xa73c('0xb'),_0x5cd506,_['map'](_0x39f8ae,_0xa73c('0xc'))['join'](',\x20'));_0x477a17['stop']();}else{try{var _0x1229d7=eval('('+_0x57405e[_0xa73c('0xd')]+')');var _0x235fa2=_0x1229d7?_0x57405e[_0xa73c('0xe')]:_0x57405e[_0xa73c('0xf')];logger[_0xa73c('0x10')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x5cd506,_0x57405e['condition'],_0x1229d7,_0x235fa2||_0xa73c('0x11'));if(_0x235fa2){var _0x367d5a=_[_0xa73c('0x12')](_0x477a17[_0xa73c('0x13')](),{'p':_0x235fa2});if(_0x367d5a>=0x0){logger['info'](_0xa73c('0x14'),_0x5cd506,_0x235fa2||_0xa73c('0x11'),_0x367d5a);_0x477a17[_0xa73c('0x11')](_0x367d5a);}else{logger[_0xa73c('0x10')](_0xa73c('0x15'),_0x5cd506,_0x235fa2||'next');_0x477a17['stop']();}}else{_0x477a17[_0xa73c('0x11')]();}}catch(_0x3a4daf){logger[_0xa73c('0x16')](_0xa73c('0x17'),_0x5cd506,_0x3a4daf['message']);_0x477a17['stop']();}}}catch(_0x53c71b){logger['error'](_0xa73c('0xb'),_0x5cd506,JSON[_0xa73c('0x18')](_0x53c71b));_0x477a17[_0xa73c('0x19')]();}};};
\ No newline at end of file
index 8b60874..0aaa611 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0391=['[%s][GOTOP]\x20priority\x20%s\x20not\x20found','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','length','error','[%s][GOTOP]\x20%s','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','rules','next'];(function(_0x177fb0,_0x210ea7){var _0xeb5ec5=function(_0x795f6c){while(--_0x795f6c){_0x177fb0['push'](_0x177fb0['shift']());}};_0xeb5ec5(++_0x210ea7);}(_0x0391,0x1c3));var _0x1039=function(_0x4c2607,_0x4b3852){_0x4c2607=_0x4c2607-0x0;var _0x4774e6=_0x0391[_0x4c2607];return _0x4774e6;};'use strict';var schema=require(_0x1039('0x0'));var _=require(_0x1039('0x1'));var logger=require(_0x1039('0x2'))(_0x1039('0x3'));var gotop=schema({'priority':{'type':_0x1039('0x4'),'required':!![],'message':_0x1039('0x5')}});exports[_0x1039('0x6')]=function(_0x26946a,_0x534073){return function(_0x457910){try{var _0x275a44={'priority':_0x534073[0x0]};var _0x514074=gotop['validate'](_0x275a44,{'typecast':!![]});if(_0x514074[_0x1039('0x7')]){logger[_0x1039('0x8')](_0x1039('0x9'),_0x26946a,_['map'](_0x514074,'message')[_0x1039('0xa')](',\x20'));_0x457910[_0x1039('0xb')]();}else{logger[_0x1039('0xc')](_0x1039('0xd'),_0x26946a,_0x275a44[_0x1039('0xe')]);if(_0x275a44[_0x1039('0xe')]){var _0x4bc3a8=_['findIndex'](_0x457910[_0x1039('0xf')](),{'p':_0x275a44[_0x1039('0xe')]});if(_0x4bc3a8>=0x0){logger[_0x1039('0xc')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x26946a,_0x275a44['priority']||_0x1039('0x10'),_0x4bc3a8);_0x457910['next'](_0x4bc3a8);}else{logger['info'](_0x1039('0x11'),_0x26946a,_0x275a44[_0x1039('0xe')]||'next');_0x457910[_0x1039('0xb')]();}}else{_0x457910[_0x1039('0x10')]();}}}catch(_0x105471){logger[_0x1039('0x8')](_0x1039('0x9'),_0x26946a,JSON['stringify'](_0x105471));_0x457910[_0x1039('0xb')]();}};};
\ No newline at end of file
+var _0x8f15=['length','message','join','stop','info','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','error','[%s][GOTOP]\x20%s','stringify','validate','lodash','../../../../config/logger','routing','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'];(function(_0x3cc5cb,_0x4ccf03){var _0x5c78aa=function(_0x3fd280){while(--_0x3fd280){_0x3cc5cb['push'](_0x3cc5cb['shift']());}};_0x5c78aa(++_0x4ccf03);}(_0x8f15,0xd6));var _0x58f1=function(_0x58b19f,_0x212456){_0x58b19f=_0x58b19f-0x0;var _0xc192f9=_0x8f15[_0x58b19f];return _0xc192f9;};'use strict';var schema=require(_0x58f1('0x0'));var _=require(_0x58f1('0x1'));var logger=require(_0x58f1('0x2'))(_0x58f1('0x3'));var gotop=schema({'priority':{'type':_0x58f1('0x4'),'required':!![],'message':_0x58f1('0x5')}});exports['consequence']=function(_0x29ecb3,_0x48527e){return function(_0x140b6e){try{var _0xf04694={'priority':_0x48527e[0x0]};var _0x74db96=gotop[_0x58f1('0x0')](_0xf04694,{'typecast':!![]});if(_0x74db96[_0x58f1('0x6')]){logger['error']('[%s][GOTOP]\x20%s',_0x29ecb3,_['map'](_0x74db96,_0x58f1('0x7'))[_0x58f1('0x8')](',\x20'));_0x140b6e[_0x58f1('0x9')]();}else{logger[_0x58f1('0xa')](_0x58f1('0xb'),_0x29ecb3,_0xf04694[_0x58f1('0xc')]);if(_0xf04694[_0x58f1('0xc')]){var _0x1e2835=_[_0x58f1('0xd')](_0x140b6e['rules'](),{'p':_0xf04694[_0x58f1('0xc')]});if(_0x1e2835>=0x0){logger['info'](_0x58f1('0xe'),_0x29ecb3,_0xf04694[_0x58f1('0xc')]||_0x58f1('0xf'),_0x1e2835);_0x140b6e['next'](_0x1e2835);}else{logger[_0x58f1('0xa')](_0x58f1('0x10'),_0x29ecb3,_0xf04694[_0x58f1('0xc')]||'next');_0x140b6e[_0x58f1('0x9')]();}}else{_0x140b6e['next']();}}}catch(_0x231e0d){logger[_0x58f1('0x11')](_0x58f1('0x12'),_0x29ecb3,JSON[_0x58f1('0x13')](_0x231e0d));_0x140b6e['stop']();}};};
\ No newline at end of file
index 7e8e6c1..359ce95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c19=['../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','consequence','getMustacheRender','contact','ChatWebsiteId','account','upperFirst','channel','AccountId','interaction','Message','info','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','./utils'];(function(_0x12c870,_0x482756){var _0x56f3b5=function(_0x2c1e79){while(--_0x2c1e79){_0x12c870['push'](_0x12c870['shift']());}};_0x56f3b5(++_0x482756);}(_0x1c19,0x1f2));var _0x91c1=function(_0x21a0c5,_0x586032){_0x21a0c5=_0x21a0c5-0x0;var _0x13d439=_0x1c19[_0x21a0c5];return _0x13d439;};'use strict';var _=require(_0x91c1('0x0'));var utils=require(_0x91c1('0x1'));var logger=require(_0x91c1('0x2'))('routing');var rpc={'chatMessage':require(_0x91c1('0x3')),'openchannelMessage':require(_0x91c1('0x4')),'mailMessage':require(_0x91c1('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x91c1('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x91c1('0x7')]=function(_0x64135e,_0x105260){return function(_0xc05b49){try{var _0x1a2ff5={'body':utils[_0x91c1('0x8')](_0x105260[0x0],this),'ContactId':this[_0x91c1('0x9')]['id']};if(this['channel']==='chat'){_0x1a2ff5[_0x91c1('0xa')]=this[_0x91c1('0xb')]['id'];}else{_0x1a2ff5[_[_0x91c1('0xc')](this[_0x91c1('0xd')])+_0x91c1('0xe')]=this['account']['id'];}_0x1a2ff5[_['upperFirst'](this['channel'])+'InteractionId']=this[_0x91c1('0xf')]['id'];if(rpc[this[_0x91c1('0xd')]+_0x91c1('0x10')]){return rpc[this[_0x91c1('0xd')]+_0x91c1('0x10')]['create'](_0x1a2ff5)['then'](function(_0x5f482a){logger[_0x91c1('0x11')](_0x91c1('0x12'),_0x64135e,_0x1a2ff5[_0x91c1('0x13')]);_0xc05b49[_0x91c1('0x14')]();})[_0x91c1('0x15')](function(_0x410149){logger[_0x91c1('0x16')]('[%s][MESSAGE]\x20%s',_0x64135e,JSON[_0x91c1('0x17')](_0x410149));_0xc05b49[_0x91c1('0x18')]();});}}catch(_0x5cabd3){logger[_0x91c1('0x16')](_0x91c1('0x12'),_0x64135e,JSON[_0x91c1('0x17')](_0x5cabd3));_0xc05b49[_0x91c1('0x18')]();}};};
\ No newline at end of file
+var _0xc00a=['../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','channel','chat','ChatWebsiteId','account','upperFirst','interaction','create','then','info','[%s][MESSAGE]\x20%s','body','catch','error','stringify','stop','lodash','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage'];(function(_0x24a526,_0x14850d){var _0x3135a9=function(_0x45d7b2){while(--_0x45d7b2){_0x24a526['push'](_0x24a526['shift']());}};_0x3135a9(++_0x14850d);}(_0xc00a,0x1f3));var _0xac00=function(_0x21c3ac,_0x2a46bb){_0x21c3ac=_0x21c3ac-0x0;var _0x3c45ad=_0xc00a[_0x21c3ac];return _0x3c45ad;};'use strict';var _=require(_0xac00('0x0'));var utils=require(_0xac00('0x1'));var logger=require('../../../../config/logger')(_0xac00('0x2'));var rpc={'chatMessage':require(_0xac00('0x3')),'openchannelMessage':require(_0xac00('0x4')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xac00('0x5')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xac00('0x6'))};exports[_0xac00('0x7')]=function(_0x59e34e,_0x1487dd){return function(_0x1344d0){try{var _0x22d1c8={'body':utils[_0xac00('0x8')](_0x1487dd[0x0],this),'ContactId':this['contact']['id']};if(this[_0xac00('0x9')]===_0xac00('0xa')){_0x22d1c8[_0xac00('0xb')]=this[_0xac00('0xc')]['id'];}else{_0x22d1c8[_[_0xac00('0xd')](this[_0xac00('0x9')])+'AccountId']=this[_0xac00('0xc')]['id'];}_0x22d1c8[_[_0xac00('0xd')](this[_0xac00('0x9')])+'InteractionId']=this[_0xac00('0xe')]['id'];if(rpc[this[_0xac00('0x9')]+'Message']){return rpc[this[_0xac00('0x9')]+'Message'][_0xac00('0xf')](_0x22d1c8)[_0xac00('0x10')](function(_0x4296c8){logger[_0xac00('0x11')](_0xac00('0x12'),_0x59e34e,_0x22d1c8[_0xac00('0x13')]);_0x1344d0['next']();})[_0xac00('0x14')](function(_0x3b185d){logger[_0xac00('0x15')](_0xac00('0x12'),_0x59e34e,JSON[_0xac00('0x16')](_0x3b185d));_0x1344d0[_0xac00('0x17')]();});}}catch(_0xdda6ab){logger[_0xac00('0x15')](_0xac00('0x12'),_0x59e34e,JSON[_0xac00('0x16')](_0xdda6ab));_0x1344d0[_0xac00('0x17')]();}};};
\ No newline at end of file
index 347dc62..4bae5c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6d9=['[%s][NOOP]\x20%s','error','stringify','stop','./utils','../../../../config/logger','routing','consequence','info'];(function(_0x40b87,_0x209a34){var _0x5dfad8=function(_0x1f797d){while(--_0x1f797d){_0x40b87['push'](_0x40b87['shift']());}};_0x5dfad8(++_0x209a34);}(_0xe6d9,0x1cf));var _0x9e6d=function(_0x580a9a,_0x4e5ad6){_0x580a9a=_0x580a9a-0x0;var _0x2d4ec9=_0xe6d9[_0x580a9a];return _0x2d4ec9;};'use strict';var utils=require(_0x9e6d('0x0'));var logger=require(_0x9e6d('0x1'))(_0x9e6d('0x2'));exports[_0x9e6d('0x3')]=function(_0x1346a8,_0x6c390f){return function(_0x214071){try{logger[_0x9e6d('0x4')](_0x9e6d('0x5'),_0x1346a8,utils['getMustacheRender'](_0x6c390f[0x0],this));_0x214071['next']();}catch(_0x4b384e){logger[_0x9e6d('0x6')](_0x9e6d('0x5'),_0x1346a8,JSON[_0x9e6d('0x7')](_0x4b384e));_0x214071[_0x9e6d('0x8')]();}};};
\ No newline at end of file
+var _0x161f=['./utils','consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop'];(function(_0xb14790,_0x1dd623){var _0x29db68=function(_0x3192b7){while(--_0x3192b7){_0xb14790['push'](_0xb14790['shift']());}};_0x29db68(++_0x1dd623);}(_0x161f,0x19e));var _0xf161=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x161f[_0x167cc1];return _0x10bc4b;};'use strict';var utils=require(_0xf161('0x0'));var logger=require('../../../../config/logger')('routing');exports[_0xf161('0x1')]=function(_0x392cde,_0x9ef9a4){return function(_0xe997aa){try{logger[_0xf161('0x2')](_0xf161('0x3'),_0x392cde,utils[_0xf161('0x4')](_0x9ef9a4[0x0],this));_0xe997aa[_0xf161('0x5')]();}catch(_0x265155){logger[_0xf161('0x6')](_0xf161('0x3'),_0x392cde,JSON[_0xf161('0x7')](_0x265155));_0xe997aa[_0xf161('0x8')]();}};};
\ No newline at end of file
index 511a96a..1d5da94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90aa=['catch','error','create\x20queue\x20report','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','join','find','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','stop','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','log','stack','validate','lodash','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','from','joinAt','emit','clone','queue','format','%sQueuesWaitingInteractions','pick','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','upperFirst','channel','QueueId','interaction','MessageId','message','chat','WebsiteId','info','name','QueueReport','create'];(function(_0x1ec5a9,_0x4efb56){var _0x2ef4fc=function(_0xc4838e){while(--_0xc4838e){_0x1ec5a9['push'](_0x1ec5a9['shift']());}};_0x2ef4fc(++_0x4efb56);}(_0x90aa,0x152));var _0xa90a=function(_0x33f4ba,_0x33f351){_0x33f4ba=_0x33f4ba-0x0;var _0x1a25bf=_0x90aa[_0x33f4ba];return _0x1a25bf;};'use strict';var schema=require(_0xa90a('0x0'));var _=require(_0xa90a('0x1'));var util=require('util');var seqqueue=require(_0xa90a('0x2'));var moment=require(_0xa90a('0x3'));var Redis=require('ioredis');var config=require(_0xa90a('0x4'));var logger=require(_0xa90a('0x5'))(_0xa90a('0x6'));var strategy=require(_0xa90a('0x7'));config[_0xa90a('0x8')]=_[_0xa90a('0x9')](config['redis'],{'host':_0xa90a('0xa'),'port':0x18eb});var io=require(_0xa90a('0xb'))(new Redis(config[_0xa90a('0x8')]));var attributes=['id',_0xa90a('0xc'),_0xa90a('0xd'),'queue',_0xa90a('0xe'),_0xa90a('0xf')];function emit(_0xd2d66c,_0x16018a,_0x43ba86){io['to'](_0xd2d66c)[_0xa90a('0x10')](_0x16018a,_0x43ba86);}function emitChannelQueueInteraction(_0x224908,_0x29cb98,_0x523309,_0x17121b,_0x3afb94,_0x1f7701,_0x12f3a9,_0x37f390){var _0x25eff0=_[_0xa90a('0x11')](_0x523309);_0x25eff0[_0xa90a('0xc')]=_0x37f390;_0x25eff0[_0xa90a('0x12')]=_0x29cb98;_0x25eff0['account']=_0x17121b;_0x25eff0['id']=_0x3afb94;if(_0x1f7701){_0x12f3a9[util[_0xa90a('0x13')](_0xa90a('0x14'),_0x224908)][_0x3afb94]=_[_0xa90a('0x15')](_0x25eff0,attributes);}else{delete _0x12f3a9[util['format'](_0xa90a('0x14'),_0x224908)][_0x3afb94];}emit(util['format'](_0xa90a('0x16'),_0x224908,_0x29cb98),util[_0xa90a('0x13')](_0xa90a('0x17'),_0x224908,_0x1f7701?_0xa90a('0x18'):_0xa90a('0x19')),_[_0xa90a('0x15')](_0x25eff0,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xa90a('0x1a')),'chatQueueReport':require(_0xa90a('0x1b')),'smsQueueReport':require(_0xa90a('0x1c')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':'string','required':!![],'message':_0xa90a('0x1d')},'timeout':{'type':'number','message':_0xa90a('0x1e')}});function startRouting(_0x2f91b5,_0x356696,_0x216a1e,_0x53555e){if(_0x2f91b5&&_0x356696&&_0x216a1e){_0x356696[_0xa90a('0x1f')]+=0x1;var _0x5b6f83={'uniqueid':_0x2f91b5,'from':_0x216a1e['body']?_0x216a1e[_0xa90a('0x20')][_0xa90a('0xe')]:'','joinAt':moment()['format'](_0xa90a('0x21')),'ContactId':_0x216a1e['contact']?_0x216a1e[_0xa90a('0x22')]['id']:null,'ListId':_0x216a1e['list']?_0x216a1e['list']['id']:null};_0x5b6f83[_[_0xa90a('0x23')](_0x216a1e[_0xa90a('0x24')])+_0xa90a('0x25')]=_0x356696['id']||null;_0x5b6f83[_['upperFirst'](_0x216a1e[_0xa90a('0x24')])+'InteractionId']=_0x216a1e[_0xa90a('0x26')]?_0x216a1e['interaction']['id']:null;_0x5b6f83[_[_0xa90a('0x23')](_0x216a1e[_0xa90a('0x24')])+_0xa90a('0x27')]=_0x216a1e[_0xa90a('0x28')]?_0x216a1e[_0xa90a('0x28')]['id']:null;_0x5b6f83[_['upperFirst'](_0x216a1e[_0xa90a('0x24')])+(_0x216a1e[_0xa90a('0x24')]!==_0xa90a('0x29')?'AccountId':_0xa90a('0x2a'))]=_0x216a1e[_0xa90a('0xd')]?_0x216a1e[_0xa90a('0xd')]['id']:null;logger[_0xa90a('0x2b')](util[_0xa90a('0x13')]('[%s][START:QUEUE][NAME:%s]',_0x2f91b5,_0x356696[_0xa90a('0x2c')]));emitChannelQueueInteraction(_0x216a1e['channel'],_0x356696['name'],_0x5b6f83,_0x216a1e[_0xa90a('0xd')][_0xa90a('0x2c')],_0x216a1e[_0xa90a('0x28')]['id'],!![],_0x53555e,_0x356696['id']);if(rpc[_0x216a1e[_0xa90a('0x24')]+'QueueReport']){return rpc[_0x216a1e['channel']+_0xa90a('0x2d')][_0xa90a('0x2e')](_0x5b6f83)[_0xa90a('0x2f')](function(_0x5614b5){logger[_0xa90a('0x30')](_0xa90a('0x31'));});}}}function stopRouting(_0x24b12e,_0x13a877,_0x4a757d,_0x5c18a2){if(_0x24b12e&&_0x13a877){_0x13a877[_0xa90a('0x1f')]-=0x1;var _0x3a8fc4={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'acceptAt':moment()['format'](_0xa90a('0x21')),'reason':_0xa90a('0x32')};logger[_0xa90a('0x2b')](util[_0xa90a('0x13')](_0xa90a('0x33'),_0x24b12e,_0x13a877[_0xa90a('0x2c')]));emitChannelQueueInteraction(_0x4a757d[_0xa90a('0x24')],_0x13a877[_0xa90a('0x2c')],_0x4a757d[_0xa90a('0x20')],_0x4a757d[_0xa90a('0xd')][_0xa90a('0x2c')],_0x4a757d[_0xa90a('0x28')]['id'],![],_0x5c18a2,_0x13a877['id']);if(rpc[_0x4a757d[_0xa90a('0x24')]+_0xa90a('0x2d')]){return rpc[_0x4a757d['channel']+_0xa90a('0x2d')][_0xa90a('0x34')](_0x24b12e,_0x3a8fc4)[_0xa90a('0x2f')](function(_0x1841c6){logger[_0xa90a('0x30')](_0xa90a('0x35'));});}}}function endRouting(_0x3d6bc2,_0x253a93,_0x332362,_0x53a78b){if(_0x3d6bc2&&_0x253a93){_0x253a93['waiting']-=0x1;var _0x1a26b0={'leaveAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xa90a('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0xa90a('0x36')};logger[_0xa90a('0x2b')](util[_0xa90a('0x13')](_0xa90a('0x37'),_0x3d6bc2,_0x253a93['name']));emitChannelQueueInteraction(_0x332362[_0xa90a('0x24')],_0x253a93[_0xa90a('0x2c')],_0x332362[_0xa90a('0x20')],_0x332362[_0xa90a('0xd')][_0xa90a('0x2c')],_0x332362[_0xa90a('0x28')]['id'],![],_0x53a78b);if(rpc[_0x332362[_0xa90a('0x24')]+_0xa90a('0x2d')]){return rpc[_0x332362[_0xa90a('0x24')]+_0xa90a('0x2d')][_0xa90a('0x34')](_0x3d6bc2,_0x1a26b0)['catch'](function(_0x55b1a9){logger[_0xa90a('0x30')](_0xa90a('0x35'));});}}}function handleFindQueue(_0x29fbd4){return function(_0x1e50a3){return _0x1e50a3[_0xa90a('0x2c')][_0xa90a('0x38')]()===_0x29fbd4[_0xa90a('0x38')]();};}exports[_0xa90a('0x39')]=function(_0x45ec2b,_0x4c2809,_0x4c5a51,_0x5dace0){return function(_0x17a349){try{var _0x6e9b77={'name':_0x4c2809[0x0],'timeout':_0x4c2809[0x1]};var _0x32324d=queue[_0xa90a('0x0')](_0x6e9b77,{'typecast':!![]});if(_0x32324d[_0xa90a('0x3a')]){logger[_0xa90a('0x30')](_0xa90a('0x3b'),_0x45ec2b,_[_0xa90a('0x3c')](_0x32324d,_0xa90a('0x28'))[_0xa90a('0x3d')](',\x20'));_0x17a349['stop']();}else{var _0x5d7847=_[_0xa90a('0x3e')](_0x4c5a51[_0x5dace0[_0xa90a('0x24')]+'Queues'],handleFindQueue(_0x6e9b77[_0xa90a('0x2c')]));if(_0x5d7847){startRouting(_0x45ec2b,_0x5d7847,_0x5dace0,_0x4c5a51);var _0x589fe4=(_0x5d7847[_0xa90a('0x36')]||0xa)*0x3e8;var _0x22977e=(_0x6e9b77['timeout']||0x14)*0x3e8;var _0x56a1e8,_0x10c705;if(_0x589fe4>_0x22977e){_0x22977e=_0x589fe4;}var _0x5a9b2b=seqqueue[_0xa90a('0x3f')](_0x589fe4);_0x5a9b2b['id']=_0x45ec2b;_0x5a9b2b[_0xa90a('0x40')]=_0x589fe4;_0x5a9b2b[_0xa90a('0x41')]=_0x22977e;_0x5a9b2b[_0xa90a('0x24')]=_0x5dace0[_0xa90a('0x24')];_0x4c5a51[_0xa90a('0x42')][_0x45ec2b]['on'](_0xa90a('0x43'),function(){logger[_0xa90a('0x2b')](_0xa90a('0x44'),_0x45ec2b);stopRouting(_0x45ec2b,_0x5d7847,_0x5dace0,_0x4c5a51);clearTimeout(_0x56a1e8);_0x56a1e8=undefined;_0x5a9b2b['close'](!![]);if(_0x4c5a51[_0xa90a('0x42')][_0x45ec2b]){delete _0x4c5a51['rules'][_0x45ec2b];}_0x17a349[_0xa90a('0x45')]();});_0x4c5a51[_0xa90a('0x42')][_0x45ec2b]['on'](_0xa90a('0x46'),function(){if(_0x4c5a51[_0xa90a('0x42')][_0x45ec2b]){delete _0x4c5a51[_0xa90a('0x42')][_0x45ec2b];}});_0x56a1e8=setTimeout(function(){logger[_0xa90a('0x2b')](_0xa90a('0x47'),_0x45ec2b);endRouting(_0x45ec2b,_0x5d7847,_0x5dace0,_0x4c5a51);clearTimeout(_0x56a1e8);_0x5a9b2b['close'](!![]);_0x17a349[_0xa90a('0x48')]();},_0x22977e);switch(_0x5d7847['strategy']){case _0xa90a('0x49'):strategy['rrmemory'](_0x5a9b2b,_0x5d7847,_0x4c5a51,_0x5dace0);break;default:strategy[_0xa90a('0x4a')](_0x5a9b2b,_0x5d7847,_0x4c5a51,_0x5dace0);}}else{logger['error']('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x45ec2b,_0x6e9b77[_0xa90a('0x2c')]);_0x17a349[_0xa90a('0x45')]();}}}catch(_0x2d7732){console[_0xa90a('0x4b')](_0x2d7732);logger['error'](_0xa90a('0x3b'),_0x45ec2b,_0x2d7732[_0xa90a('0x4c')]);_0x17a349[_0xa90a('0x45')]();}};};
\ No newline at end of file
+var _0xb82e=['joinAt','emit','clone','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','string','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','InteractionId','interaction','MessageId','message','AccountId','WebsiteId','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','error','create\x20queue\x20report','info','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','[%s][END:QUEUE][NAME:%s]','toLowerCase','length','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','timeout','createQueue','atimeout','qtimeout','rules','end','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','validate','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','localhost','socket.io-emitter','queue_id','account','queue','from'];(function(_0xc14960,_0x16f1b9){var _0x574335=function(_0x555bfe){while(--_0x555bfe){_0xc14960['push'](_0xc14960['shift']());}};_0x574335(++_0x16f1b9);}(_0xb82e,0x172));var _0xeb82=function(_0x5930ba,_0x325f6f){_0x5930ba=_0x5930ba-0x0;var _0x4899a9=_0xb82e[_0x5930ba];return _0x4899a9;};'use strict';var schema=require(_0xeb82('0x0'));var _=require(_0xeb82('0x1'));var util=require(_0xeb82('0x2'));var seqqueue=require(_0xeb82('0x3'));var moment=require('moment');var Redis=require(_0xeb82('0x4'));var config=require(_0xeb82('0x5'));var logger=require(_0xeb82('0x6'))('routing');var strategy=require(_0xeb82('0x7'));config[_0xeb82('0x8')]=_['defaults'](config[_0xeb82('0x8')],{'host':_0xeb82('0x9'),'port':0x18eb});var io=require(_0xeb82('0xa'))(new Redis(config[_0xeb82('0x8')]));var attributes=['id',_0xeb82('0xb'),_0xeb82('0xc'),_0xeb82('0xd'),_0xeb82('0xe'),_0xeb82('0xf')];function emit(_0x1fed2b,_0x2c0bd8,_0x5acaa5){io['to'](_0x1fed2b)[_0xeb82('0x10')](_0x2c0bd8,_0x5acaa5);}function emitChannelQueueInteraction(_0x1bd003,_0x58e2e4,_0x4bf527,_0x518ee4,_0x3d7981,_0x4adcdf,_0x6e1486,_0x3324dc){var _0x3e9403=_[_0xeb82('0x11')](_0x4bf527);_0x3e9403[_0xeb82('0xb')]=_0x3324dc;_0x3e9403['queue']=_0x58e2e4;_0x3e9403['account']=_0x518ee4;_0x3e9403['id']=_0x3d7981;if(_0x4adcdf){_0x6e1486[util[_0xeb82('0x12')]('%sQueuesWaitingInteractions',_0x1bd003)][_0x3d7981]=_['pick'](_0x3e9403,attributes);}else{delete _0x6e1486[util[_0xeb82('0x12')](_0xeb82('0x13'),_0x1bd003)][_0x3d7981];}emit(util['format'](_0xeb82('0x14'),_0x1bd003,_0x58e2e4),util['format'](_0xeb82('0x15'),_0x1bd003,_0x4adcdf?_0xeb82('0x16'):_0xeb82('0x17')),_[_0xeb82('0x18')](_0x3e9403,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0xeb82('0x19')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xeb82('0x1a')),'faxQueueReport':require(_0xeb82('0x1b')),'whatsappQueueReport':require('../../rpc/whatsappQueueReport')};var queue=schema({'name':{'type':_0xeb82('0x1c'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xeb82('0x1d'),'message':_0xeb82('0x1e')}});function startRouting(_0x3fd510,_0x992004,_0x1b844b,_0x53175b){if(_0x3fd510&&_0x992004&&_0x1b844b){_0x992004[_0xeb82('0x1f')]+=0x1;var _0x5d0b71={'uniqueid':_0x3fd510,'from':_0x1b844b[_0xeb82('0x20')]?_0x1b844b[_0xeb82('0x20')][_0xeb82('0xe')]:'','joinAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'ContactId':_0x1b844b[_0xeb82('0x22')]?_0x1b844b['contact']['id']:null,'ListId':_0x1b844b['list']?_0x1b844b[_0xeb82('0x23')]['id']:null};_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b['channel'])+'QueueId']=_0x992004['id']||null;_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b[_0xeb82('0x25')])+_0xeb82('0x26')]=_0x1b844b[_0xeb82('0x27')]?_0x1b844b[_0xeb82('0x27')]['id']:null;_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b[_0xeb82('0x25')])+_0xeb82('0x28')]=_0x1b844b[_0xeb82('0x29')]?_0x1b844b[_0xeb82('0x29')]['id']:null;_0x5d0b71[_[_0xeb82('0x24')](_0x1b844b[_0xeb82('0x25')])+(_0x1b844b[_0xeb82('0x25')]!=='chat'?_0xeb82('0x2a'):_0xeb82('0x2b'))]=_0x1b844b[_0xeb82('0xc')]?_0x1b844b[_0xeb82('0xc')]['id']:null;logger['info'](util[_0xeb82('0x12')](_0xeb82('0x2c'),_0x3fd510,_0x992004[_0xeb82('0x2d')]));emitChannelQueueInteraction(_0x1b844b['channel'],_0x992004[_0xeb82('0x2d')],_0x5d0b71,_0x1b844b[_0xeb82('0xc')]['name'],_0x1b844b[_0xeb82('0x29')]['id'],!![],_0x53175b,_0x992004['id']);if(rpc[_0x1b844b[_0xeb82('0x25')]+_0xeb82('0x2e')]){return rpc[_0x1b844b[_0xeb82('0x25')]+_0xeb82('0x2e')][_0xeb82('0x2f')](_0x5d0b71)['catch'](function(_0x2e463e){logger[_0xeb82('0x30')](_0xeb82('0x31'));});}}}function stopRouting(_0x5cb5c2,_0x1c8dca,_0x4a2c60,_0x21eed0){if(_0x5cb5c2&&_0x1c8dca){_0x1c8dca[_0xeb82('0x1f')]-=0x1;var _0x491718={'leaveAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'acceptAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'reason':'accepted'};logger[_0xeb82('0x32')](util[_0xeb82('0x12')](_0xeb82('0x33'),_0x5cb5c2,_0x1c8dca['name']));emitChannelQueueInteraction(_0x4a2c60['channel'],_0x1c8dca['name'],_0x4a2c60['body'],_0x4a2c60[_0xeb82('0xc')]['name'],_0x4a2c60[_0xeb82('0x29')]['id'],![],_0x21eed0,_0x1c8dca['id']);if(rpc[_0x4a2c60['channel']+_0xeb82('0x2e')]){return rpc[_0x4a2c60[_0xeb82('0x25')]+_0xeb82('0x2e')]['update'](_0x5cb5c2,_0x491718)[_0xeb82('0x34')](function(_0x39d220){logger[_0xeb82('0x30')](_0xeb82('0x35'));});}}}function endRouting(_0x40d735,_0x2251da,_0x3b0f0c,_0x3df4b8){if(_0x40d735&&_0x2251da){_0x2251da[_0xeb82('0x1f')]-=0x1;var _0x4a49d7={'leaveAt':moment()[_0xeb82('0x12')](_0xeb82('0x21')),'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':'timeout'};logger['info'](util[_0xeb82('0x12')](_0xeb82('0x36'),_0x40d735,_0x2251da['name']));emitChannelQueueInteraction(_0x3b0f0c[_0xeb82('0x25')],_0x2251da[_0xeb82('0x2d')],_0x3b0f0c['body'],_0x3b0f0c['account']['name'],_0x3b0f0c[_0xeb82('0x29')]['id'],![],_0x3df4b8);if(rpc[_0x3b0f0c[_0xeb82('0x25')]+'QueueReport']){return rpc[_0x3b0f0c[_0xeb82('0x25')]+'QueueReport']['update'](_0x40d735,_0x4a49d7)[_0xeb82('0x34')](function(_0x502053){logger[_0xeb82('0x30')](_0xeb82('0x35'));});}}}function handleFindQueue(_0x42f36f){return function(_0x2ae5d1){return _0x2ae5d1['name']['toLowerCase']()===_0x42f36f[_0xeb82('0x37')]();};}exports['consequence']=function(_0x6a454c,_0x3c229f,_0x1e89c2,_0x4297c1){return function(_0x4bfd2f){try{var _0xfeac27={'name':_0x3c229f[0x0],'timeout':_0x3c229f[0x1]};var _0x3ff916=queue['validate'](_0xfeac27,{'typecast':!![]});if(_0x3ff916[_0xeb82('0x38')]){logger[_0xeb82('0x30')](_0xeb82('0x39'),_0x6a454c,_[_0xeb82('0x3a')](_0x3ff916,_0xeb82('0x29'))[_0xeb82('0x3b')](',\x20'));_0x4bfd2f[_0xeb82('0x3c')]();}else{var _0x3e4148=_[_0xeb82('0x3d')](_0x1e89c2[_0x4297c1[_0xeb82('0x25')]+_0xeb82('0x3e')],handleFindQueue(_0xfeac27[_0xeb82('0x2d')]));if(_0x3e4148){startRouting(_0x6a454c,_0x3e4148,_0x4297c1,_0x1e89c2);var _0x4e893b=(_0x3e4148[_0xeb82('0x3f')]||0xa)*0x3e8;var _0x5cb7ae=(_0xfeac27['timeout']||0x14)*0x3e8;var _0x2111ee,_0x5a6c61;if(_0x4e893b>_0x5cb7ae){_0x5cb7ae=_0x4e893b;}var _0x1e9799=seqqueue[_0xeb82('0x40')](_0x4e893b);_0x1e9799['id']=_0x6a454c;_0x1e9799[_0xeb82('0x41')]=_0x4e893b;_0x1e9799[_0xeb82('0x42')]=_0x5cb7ae;_0x1e9799['channel']=_0x4297c1['channel'];_0x1e89c2[_0xeb82('0x43')][_0x6a454c]['on'](_0xeb82('0x44'),function(){logger['info'](_0xeb82('0x45'),_0x6a454c);stopRouting(_0x6a454c,_0x3e4148,_0x4297c1,_0x1e89c2);clearTimeout(_0x2111ee);_0x2111ee=undefined;_0x1e9799['close'](!![]);if(_0x1e89c2[_0xeb82('0x43')][_0x6a454c]){delete _0x1e89c2[_0xeb82('0x43')][_0x6a454c];}_0x4bfd2f[_0xeb82('0x3c')]();});_0x1e89c2[_0xeb82('0x43')][_0x6a454c]['on'](_0xeb82('0x46'),function(){if(_0x1e89c2[_0xeb82('0x43')][_0x6a454c]){delete _0x1e89c2['rules'][_0x6a454c];}});_0x2111ee=setTimeout(function(){logger[_0xeb82('0x32')](_0xeb82('0x47'),_0x6a454c);endRouting(_0x6a454c,_0x3e4148,_0x4297c1,_0x1e89c2);clearTimeout(_0x2111ee);_0x1e9799['close'](!![]);_0x4bfd2f[_0xeb82('0x48')]();},_0x5cb7ae);switch(_0x3e4148[_0xeb82('0x49')]){case _0xeb82('0x4a'):strategy[_0xeb82('0x4a')](_0x1e9799,_0x3e4148,_0x1e89c2,_0x4297c1);break;default:strategy['beepall'](_0x1e9799,_0x3e4148,_0x1e89c2,_0x4297c1);}}else{logger[_0xeb82('0x30')](_0xeb82('0x4b'),_0x6a454c,_0xfeac27[_0xeb82('0x2d')]);_0x4bfd2f[_0xeb82('0x3c')]();}}}catch(_0x4e1801){console[_0xeb82('0x4c')](_0x4e1801);logger['error'](_0xeb82('0x39'),_0x6a454c,_0x4e1801['stack']);_0x4bfd2f[_0xeb82('0x3c')]();}};};
\ No newline at end of file
index ad1e672..cd000f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda46=['isNil','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','realtime','agents','channel','busy','busyQueue','showNotification','RINGING','[%s][AGENT]\x20timeout\x20with\x20%s','writeLog','STOP','TIMEOUT','exports','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','push','bind','handleTimeout','timeout','drained','prototype','handleDrained','handleRun','info','[%s][AGENT]\x20try\x20with\x20%s','agent'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0xda46,0x118));var _0x6da4=function(_0x56ee06,_0x1558cf){_0x56ee06=_0x56ee06-0x0;var _0x20032c=_0xda46[_0x56ee06];return _0x20032c;};'use strict';var _=require('lodash');var uuid=require(_0x6da4('0x0'));var util=require(_0x6da4('0x1'));var logger=require(_0x6da4('0x2'))(_0x6da4('0x3'));var Agent=function(_0x476805,_0x7b96a0,_0x119df0,_0x32fbf2){this[_0x6da4('0x4')]=uuid['v4']();this[_0x6da4('0x5')]=_0x476805;this['agent']=_0x7b96a0;this['realtime']=_0x119df0;this['routing']=_0x32fbf2;this[_0x6da4('0x5')][_0x6da4('0x6')](this['handleRun'][_0x6da4('0x7')](this),this[_0x6da4('0x8')][_0x6da4('0x7')](this));this[_0x6da4('0x5')]['on'](_0x6da4('0x9'),this[_0x6da4('0x8')][_0x6da4('0x7')](this));this[_0x6da4('0x5')]['on'](_0x6da4('0xa'),this['handleDrained']['bind'](this));};Agent[_0x6da4('0xb')]['push']=function(){this[_0x6da4('0x5')][_0x6da4('0x6')](this['handleRun'][_0x6da4('0x7')](this),this[_0x6da4('0x8')]['bind'](this));};Agent[_0x6da4('0xb')][_0x6da4('0xc')]=function(){this[_0x6da4('0x8')](!![]);};Agent[_0x6da4('0xb')][_0x6da4('0xd')]=function(_0x377f5e){logger[_0x6da4('0xe')](_0x6da4('0xf'),this[_0x6da4('0x5')]['id'],this[_0x6da4('0x10')]['id']);if(_[_0x6da4('0x11')](this['realtime']['agents'][this[_0x6da4('0x10')]['id']])){logger[_0x6da4('0xe')](_0x6da4('0x12'),this[_0x6da4('0x5')]['id'],this[_0x6da4('0x10')]['id']);setTimeout(this[_0x6da4('0x6')][_0x6da4('0x7')](this),0x3e8);}else{if(this[_0x6da4('0x3')][_0x6da4('0x13')]||util[_0x6da4('0x14')](this[_0x6da4('0x5')]['id'],this[_0x6da4('0x15')][_0x6da4('0x16')][this['agent']['id']],this[_0x6da4('0x5')][_0x6da4('0x17')],![])){this['realtime'][_0x6da4('0x16')][this[_0x6da4('0x10')]['id']][_0x6da4('0x18')]=!![];this['realtime']['agents'][this[_0x6da4('0x10')]['id']][_0x6da4('0x19')]=undefined;util[_0x6da4('0x1a')](this['notificationId'],this[_0x6da4('0x5')]['id'],this[_0x6da4('0x15')]['agents'][this[_0x6da4('0x10')]['id']],null,this[_0x6da4('0x3')]);util['writeLog'](this['squeue']['id'],this['realtime'][_0x6da4('0x16')][this[_0x6da4('0x10')]['id']],_0x6da4('0x1b')+(this['routing'][_0x6da4('0x13')]?':FORCED':''));}else{logger['info']('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x6da4('0x5')]['id'],this[_0x6da4('0x10')]['id']);setTimeout(this[_0x6da4('0x6')][_0x6da4('0x7')](this),0x3e8);}}};Agent[_0x6da4('0xb')][_0x6da4('0x8')]=function(_0x254bbf){if(_[_0x6da4('0x11')](this['realtime'][_0x6da4('0x16')][this[_0x6da4('0x10')]['id']])){return logger[_0x6da4('0xe')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x6da4('0x5')]['id'],this[_0x6da4('0x10')]['id']);}else{logger[_0x6da4('0xe')](_0x6da4('0x1c'),this[_0x6da4('0x5')]['id'],this[_0x6da4('0x10')]['id']);util['hideNotification'](this[_0x6da4('0x4')],this[_0x6da4('0x5')]['id'],this[_0x6da4('0x15')][_0x6da4('0x16')][this[_0x6da4('0x10')]['id']],null,this[_0x6da4('0x3')]);this[_0x6da4('0x15')]['agents'][this[_0x6da4('0x10')]['id']][_0x6da4('0x18')]=![];this[_0x6da4('0x15')][_0x6da4('0x16')][this[_0x6da4('0x10')]['id']][_0x6da4('0x19')]=undefined;util[_0x6da4('0x1d')](this[_0x6da4('0x5')]['id'],this[_0x6da4('0x15')][_0x6da4('0x16')][this[_0x6da4('0x10')]['id']],_0x254bbf?_0x6da4('0x1e'):_0x6da4('0x1f'));}if(!_0x254bbf){setTimeout(this[_0x6da4('0x6')][_0x6da4('0x7')](this),0x3e8);}};function agent(_0x5d5b71,_0x534dd8,_0x547e87,_0x95ac1e){return new Agent(_0x5d5b71,_0x534dd8,_0x547e87,_0x95ac1e);}module[_0x6da4('0x20')]=agent;
\ No newline at end of file
+var _0xa575=['squeue','agent','realtime','push','handleRun','bind','handleTimeout','timeout','drained','prototype','info','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','channel','writeLog',':FORCED','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','exports','uuid','./util','../../../../../config/logger','routing','notificationId'];(function(_0x20108d,_0x3b5ad6){var _0x429092=function(_0x17542d){while(--_0x17542d){_0x20108d['push'](_0x20108d['shift']());}};_0x429092(++_0x3b5ad6);}(_0xa575,0x14b));var _0x5a57=function(_0x1c6bcc,_0x540328){_0x1c6bcc=_0x1c6bcc-0x0;var _0x26aedf=_0xa575[_0x1c6bcc];return _0x26aedf;};'use strict';var _=require('lodash');var uuid=require(_0x5a57('0x0'));var util=require(_0x5a57('0x1'));var logger=require(_0x5a57('0x2'))(_0x5a57('0x3'));var Agent=function(_0xd353b7,_0x4f1cca,_0x2ad776,_0x46e7c5){this[_0x5a57('0x4')]=uuid['v4']();this[_0x5a57('0x5')]=_0xd353b7;this[_0x5a57('0x6')]=_0x4f1cca;this[_0x5a57('0x7')]=_0x2ad776;this[_0x5a57('0x3')]=_0x46e7c5;this[_0x5a57('0x5')][_0x5a57('0x8')](this[_0x5a57('0x9')][_0x5a57('0xa')](this),this[_0x5a57('0xb')]['bind'](this));this[_0x5a57('0x5')]['on'](_0x5a57('0xc'),this[_0x5a57('0xb')][_0x5a57('0xa')](this));this[_0x5a57('0x5')]['on'](_0x5a57('0xd'),this['handleDrained'][_0x5a57('0xa')](this));};Agent[_0x5a57('0xe')]['push']=function(){this[_0x5a57('0x5')][_0x5a57('0x8')](this[_0x5a57('0x9')][_0x5a57('0xa')](this),this[_0x5a57('0xb')]['bind'](this));};Agent[_0x5a57('0xe')]['handleDrained']=function(){this['handleTimeout'](!![]);};Agent[_0x5a57('0xe')]['handleRun']=function(_0xeb369f){logger[_0x5a57('0xf')]('[%s][AGENT]\x20try\x20with\x20%s',this[_0x5a57('0x5')]['id'],this[_0x5a57('0x6')]['id']);if(_['isNil'](this['realtime'][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']])){logger['info'](_0x5a57('0x11'),this['squeue']['id'],this['agent']['id']);setTimeout(this[_0x5a57('0x8')][_0x5a57('0xa')](this),0x3e8);}else{if(this[_0x5a57('0x3')][_0x5a57('0x12')]||util[_0x5a57('0x13')](this['squeue']['id'],this[_0x5a57('0x7')][_0x5a57('0x10')][this['agent']['id']],this['squeue'][_0x5a57('0x14')],![])){this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busy']=!![];this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busyQueue']=undefined;util['showNotification'](this[_0x5a57('0x4')],this[_0x5a57('0x5')]['id'],this[_0x5a57('0x7')]['agents'][this['agent']['id']],null,this[_0x5a57('0x3')]);util[_0x5a57('0x15')](this[_0x5a57('0x5')]['id'],this['realtime']['agents'][this[_0x5a57('0x6')]['id']],'RINGING'+(this['routing'][_0x5a57('0x12')]?_0x5a57('0x16'):''));}else{logger['info'](_0x5a57('0x17'),this[_0x5a57('0x5')]['id'],this[_0x5a57('0x6')]['id']);setTimeout(this[_0x5a57('0x8')]['bind'](this),0x3e8);}}};Agent[_0x5a57('0xe')][_0x5a57('0xb')]=function(_0x52def1){if(_[_0x5a57('0x18')](this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']])){return logger[_0x5a57('0xf')](_0x5a57('0x11'),this[_0x5a57('0x5')]['id'],this['agent']['id']);}else{logger['info'](_0x5a57('0x19'),this[_0x5a57('0x5')]['id'],this[_0x5a57('0x6')]['id']);util[_0x5a57('0x1a')](this[_0x5a57('0x4')],this['squeue']['id'],this['realtime'][_0x5a57('0x10')][this['agent']['id']],null,this[_0x5a57('0x3')]);this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busy']=![];this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']]['busyQueue']=undefined;util[_0x5a57('0x15')](this[_0x5a57('0x5')]['id'],this[_0x5a57('0x7')][_0x5a57('0x10')][this[_0x5a57('0x6')]['id']],_0x52def1?'STOP':'TIMEOUT');}if(!_0x52def1){setTimeout(this[_0x5a57('0x8')]['bind'](this),0x3e8);}};function agent(_0xd55a80,_0x3b8e5a,_0x887da3,_0x40bbf4){return new Agent(_0xd55a80,_0x3b8e5a,_0x887da3,_0x40bbf4);}module[_0x5a57('0x1b')]=agent;
\ No newline at end of file
index cc8f5b5..51c388c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac95=['channel','writeLog','busy','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','TIMEOUT','busyQueue','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','realtime','routing','bind','handleTimeout','timeout','drained','push','handleRun','handleDrained','prototype','isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable'];(function(_0x4e986e,_0x15866c){var _0x14945b=function(_0x559caf){while(--_0x559caf){_0x4e986e['push'](_0x4e986e['shift']());}};_0x14945b(++_0x15866c);}(_0xac95,0xa8));var _0x5ac9=function(_0x3b97e1,_0x44d483){_0x3b97e1=_0x3b97e1-0x0;var _0xbad22f=_0xac95[_0x3b97e1];return _0xbad22f;};'use strict';var _=require(_0x5ac9('0x0'));var uuid=require(_0x5ac9('0x1'));var util=require(_0x5ac9('0x2'));var logger=require(_0x5ac9('0x3'))('routing');var Beepall=function(_0x57ca1c,_0x4562f2,_0x1ebdea,_0x550511){this[_0x5ac9('0x4')]=uuid['v4']();this[_0x5ac9('0x5')]=_0x57ca1c;this['queue']=_0x4562f2;this[_0x5ac9('0x6')]=_0x1ebdea;this[_0x5ac9('0x7')]=_0x550511;this[_0x5ac9('0x5')]['push'](this['handleRun'][_0x5ac9('0x8')](this),this[_0x5ac9('0x9')][_0x5ac9('0x8')](this));this[_0x5ac9('0x5')]['on'](_0x5ac9('0xa'),this[_0x5ac9('0x9')]['bind'](this));this[_0x5ac9('0x5')]['on'](_0x5ac9('0xb'),this['handleDrained'][_0x5ac9('0x8')](this));};Beepall['prototype'][_0x5ac9('0xc')]=function(){this['squeue'][_0x5ac9('0xc')](this[_0x5ac9('0xd')][_0x5ac9('0x8')](this),this[_0x5ac9('0x9')]['bind'](this));};Beepall['prototype'][_0x5ac9('0xe')]=function(_0x5f2d30){this[_0x5ac9('0x9')](!![]);};Beepall[_0x5ac9('0xf')]['handleRun']=function(_0x3dcc9e){var _0x4590f1=!![];if(!_[_0x5ac9('0x10')](this[_0x5ac9('0x11')])&&!_[_0x5ac9('0x10')](this[_0x5ac9('0x11')][_0x5ac9('0x12')])&&this[_0x5ac9('0x11')][_0x5ac9('0x12')]['length']>0x0){for(var _0x53a8db=0x0,_0x352874;_0x53a8db<this[_0x5ac9('0x11')][_0x5ac9('0x12')][_0x5ac9('0x13')];_0x53a8db+=0x1){_0x352874=this[_0x5ac9('0x11')][_0x5ac9('0x12')][_0x53a8db]['id'];if(_[_0x5ac9('0x10')](this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x352874])){logger[_0x5ac9('0x15')](_0x5ac9('0x16'),this[_0x5ac9('0x5')]['id'],_0x352874);}else{if(util[_0x5ac9('0x17')](this['squeue']['id'],this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x352874],this[_0x5ac9('0x5')][_0x5ac9('0x18')],!![])){_0x4590f1=![];util[_0x5ac9('0x19')](this['squeue']['id'],this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x352874],'RINGING');this['realtime']['agents'][_0x352874][_0x5ac9('0x1a')]=!![];this[_0x5ac9('0x6')]['agents'][_0x352874]['busyQueue']=this[_0x5ac9('0x11')]['name'];util['showNotification'](this[_0x5ac9('0x4')],this['squeue']['id'],this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x352874],this[_0x5ac9('0x11')],this[_0x5ac9('0x7')]);}}}if(_0x4590f1){logger[_0x5ac9('0x15')](_0x5ac9('0x1b'),this[_0x5ac9('0x5')]['id']);setTimeout(this[_0x5ac9('0xc')][_0x5ac9('0x8')](this),0x3e8);}}else{logger['info'](_0x5ac9('0x1c'),this[_0x5ac9('0x5')]['id']);setTimeout(this[_0x5ac9('0xc')][_0x5ac9('0x8')](this),0x3e8);}};Beepall[_0x5ac9('0xf')]['handleTimeout']=function(_0x47f6ad){if(!_[_0x5ac9('0x10')](this[_0x5ac9('0x11')])&&!_['isNil'](this[_0x5ac9('0x11')]['Agents'])){for(var _0x16b970=0x0,_0x2c85dc;_0x16b970<this[_0x5ac9('0x11')]['Agents'][_0x5ac9('0x13')];_0x16b970+=0x1){_0x2c85dc=this[_0x5ac9('0x11')][_0x5ac9('0x12')][_0x16b970]['id'];if(_[_0x5ac9('0x10')](this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x2c85dc])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x5ac9('0x5')]['id'],_0x2c85dc);}else{util['hideNotification'](this['notificationId'],this[_0x5ac9('0x5')]['id'],this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x2c85dc],this[_0x5ac9('0x11')],this[_0x5ac9('0x7')]);util[_0x5ac9('0x19')](this[_0x5ac9('0x5')]['id'],this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x2c85dc],_0x47f6ad?'STOP':_0x5ac9('0x1d'));this[_0x5ac9('0x6')]['agents'][_0x2c85dc]['busy']=![];this[_0x5ac9('0x6')][_0x5ac9('0x14')][_0x2c85dc][_0x5ac9('0x1e')]=undefined;}}}if(!_0x47f6ad){setTimeout(this[_0x5ac9('0xc')]['bind'](this),0x3e8);}};function beepall(_0x848f6d,_0x5b55c9,_0x3c540f,_0x4600d8){return new Beepall(_0x848f6d,_0x5b55c9,_0x3c540f,_0x4600d8);}module[_0x5ac9('0x1f')]=beepall;
\ No newline at end of file
+var _0x0048=['uuid','./util','routing','notificationId','squeue','push','bind','handleTimeout','handleDrained','handleRun','prototype','isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','realtime','channel','RINGING','busy','busyQueue','showNotification','[%s][QUEUE]\x20EMPTY','TIMEOUT'];(function(_0x3f5a49,_0x1cb956){var _0xc913c8=function(_0xa53c7a){while(--_0xa53c7a){_0x3f5a49['push'](_0x3f5a49['shift']());}};_0xc913c8(++_0x1cb956);}(_0x0048,0x129));var _0x8004=function(_0x5ac0f0,_0xee4d98){_0x5ac0f0=_0x5ac0f0-0x0;var _0x4aceec=_0x0048[_0x5ac0f0];return _0x4aceec;};'use strict';var _=require('lodash');var uuid=require(_0x8004('0x0'));var util=require(_0x8004('0x1'));var logger=require('../../../../../config/logger')(_0x8004('0x2'));var Beepall=function(_0x38c924,_0x5ba96a,_0x336cf5,_0x360fff){this[_0x8004('0x3')]=uuid['v4']();this[_0x8004('0x4')]=_0x38c924;this['queue']=_0x5ba96a;this['realtime']=_0x336cf5;this[_0x8004('0x2')]=_0x360fff;this[_0x8004('0x4')][_0x8004('0x5')](this['handleRun'][_0x8004('0x6')](this),this[_0x8004('0x7')][_0x8004('0x6')](this));this['squeue']['on']('timeout',this['handleTimeout'][_0x8004('0x6')](this));this['squeue']['on']('drained',this[_0x8004('0x8')][_0x8004('0x6')](this));};Beepall['prototype']['push']=function(){this[_0x8004('0x4')][_0x8004('0x5')](this[_0x8004('0x9')][_0x8004('0x6')](this),this[_0x8004('0x7')][_0x8004('0x6')](this));};Beepall[_0x8004('0xa')]['handleDrained']=function(_0x26dde8){this[_0x8004('0x7')](!![]);};Beepall[_0x8004('0xa')][_0x8004('0x9')]=function(_0x235819){var _0xc47c27=!![];if(!_[_0x8004('0xb')](this[_0x8004('0xc')])&&!_[_0x8004('0xb')](this[_0x8004('0xc')][_0x8004('0xd')])&&this[_0x8004('0xc')][_0x8004('0xd')][_0x8004('0xe')]>0x0){for(var _0x205ff9=0x0,_0x3f3b43;_0x205ff9<this[_0x8004('0xc')][_0x8004('0xd')][_0x8004('0xe')];_0x205ff9+=0x1){_0x3f3b43=this['queue'][_0x8004('0xd')][_0x205ff9]['id'];if(_[_0x8004('0xb')](this['realtime'][_0x8004('0xf')][_0x3f3b43])){logger[_0x8004('0x10')](_0x8004('0x11'),this[_0x8004('0x4')]['id'],_0x3f3b43);}else{if(util[_0x8004('0x12')](this[_0x8004('0x4')]['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x3f3b43],this[_0x8004('0x4')][_0x8004('0x14')],!![])){_0xc47c27=![];util['writeLog'](this['squeue']['id'],this['realtime'][_0x8004('0xf')][_0x3f3b43],_0x8004('0x15'));this['realtime'][_0x8004('0xf')][_0x3f3b43][_0x8004('0x16')]=!![];this[_0x8004('0x13')][_0x8004('0xf')][_0x3f3b43][_0x8004('0x17')]=this[_0x8004('0xc')]['name'];util[_0x8004('0x18')](this[_0x8004('0x3')],this['squeue']['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x3f3b43],this[_0x8004('0xc')],this[_0x8004('0x2')]);}}}if(_0xc47c27){logger['info']('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x8004('0x4')]['id']);setTimeout(this[_0x8004('0x5')]['bind'](this),0x3e8);}}else{logger[_0x8004('0x10')](_0x8004('0x19'),this[_0x8004('0x4')]['id']);setTimeout(this[_0x8004('0x5')][_0x8004('0x6')](this),0x3e8);}};Beepall['prototype'][_0x8004('0x7')]=function(_0x53de79){if(!_[_0x8004('0xb')](this['queue'])&&!_['isNil'](this['queue'][_0x8004('0xd')])){for(var _0x3dff63=0x0,_0x53c21a;_0x3dff63<this[_0x8004('0xc')][_0x8004('0xd')][_0x8004('0xe')];_0x3dff63+=0x1){_0x53c21a=this[_0x8004('0xc')][_0x8004('0xd')][_0x3dff63]['id'];if(_[_0x8004('0xb')](this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],_0x53c21a);}else{util['hideNotification'](this[_0x8004('0x3')],this[_0x8004('0x4')]['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a],this['queue'],this[_0x8004('0x2')]);util['writeLog'](this[_0x8004('0x4')]['id'],this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a],_0x53de79?'STOP':_0x8004('0x1a'));this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a][_0x8004('0x16')]=![];this[_0x8004('0x13')][_0x8004('0xf')][_0x53c21a][_0x8004('0x17')]=undefined;}}}if(!_0x53de79){setTimeout(this[_0x8004('0x5')]['bind'](this),0x3e8);}};function beepall(_0xad3eb3,_0x2b0568,_0x19c376,_0x9c012d){return new Beepall(_0xad3eb3,_0x2b0568,_0x19c376,_0x9c012d);}module['exports']=beepall;
\ No newline at end of file
index a416c03..1c3af1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca19=['./beepall','./rrmemory'];(function(_0x6e6c01,_0x4e36de){var _0x56568a=function(_0x5ca0ea){while(--_0x5ca0ea){_0x6e6c01['push'](_0x6e6c01['shift']());}};_0x56568a(++_0x4e36de);}(_0xca19,0x67));var _0x9ca1=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xca19[_0x174ef5];return _0x1cc379;};'use strict';module['exports']={'rrmemory':require(_0x9ca1('0x0')),'beepall':require(_0x9ca1('0x1')),'agent':require('./agent')};
\ No newline at end of file
+var _0x2a9a=['exports','./beepall','./agent'];(function(_0x477512,_0x2a55fc){var _0x2502d5=function(_0x428170){while(--_0x428170){_0x477512['push'](_0x477512['shift']());}};_0x2502d5(++_0x2a55fc);}(_0x2a9a,0x10b));var _0xa2a9=function(_0x140182,_0x4516c0){_0x140182=_0x140182-0x0;var _0x294023=_0x2a9a[_0x140182];return _0x294023;};'use strict';module[_0xa2a9('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0xa2a9('0x1')),'agent':require(_0xa2a9('0x2'))};
\ No newline at end of file
index fef558f..d1606a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8cc=['[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','notificationId','exports','lodash','uuid','./util','routing','queue','realtime','intervals','squeue','push','bind','handleTimeout','module','handleDrained','prototype','handleRun','handleCheckReject','isAgentAvailable','agents','[%s][QUEUE]\x20available\x20again\x20%s','agentId','done','info','[%s][QUEUE]\x20try\x20with\x20%s','isNil','busy','busyQueue','name','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s'];(function(_0x47c89e,_0x18692c){var _0x1de51e=function(_0x5a8b06){while(--_0x5a8b06){_0x47c89e['push'](_0x47c89e['shift']());}};_0x1de51e(++_0x18692c);}(_0xf8cc,0x19d));var _0xcf8c=function(_0x2f9c3b,_0x5c32fe){_0x2f9c3b=_0x2f9c3b-0x0;var _0x294deb=_0xf8cc[_0x2f9c3b];return _0x294deb;};'use strict';var rr=require('rr');var _=require(_0xcf8c('0x0'));var uuid=require(_0xcf8c('0x1'));var util=require(_0xcf8c('0x2'));var logger=require('../../../../../config/logger')(_0xcf8c('0x3'));var RRMemory=function(_0x3baa83,_0x1f591a,_0x553266,_0x10300d){this['notificationId']=uuid['v4']();this['squeue']=_0x3baa83;this[_0xcf8c('0x4')]=_0x1f591a;this[_0xcf8c('0x5')]=_0x553266;this[_0xcf8c('0x3')]=_0x10300d;this[_0xcf8c('0x6')]={};this[_0xcf8c('0x7')][_0xcf8c('0x8')](this['handleRun'][_0xcf8c('0x9')](this),this[_0xcf8c('0xa')]['bind'](this),this[_0xcf8c('0xb')]);this[_0xcf8c('0x7')]['on']('timeout',this['handleTimeout'][_0xcf8c('0x9')](this));this['squeue']['on']('drained',this[_0xcf8c('0xc')][_0xcf8c('0x9')](this));};RRMemory[_0xcf8c('0xd')][_0xcf8c('0x8')]=function(){this[_0xcf8c('0x7')]['push'](this[_0xcf8c('0xe')][_0xcf8c('0x9')](this),this[_0xcf8c('0xa')][_0xcf8c('0x9')](this));};RRMemory['prototype'][_0xcf8c('0xc')]=function(_0x2aba36){this[_0xcf8c('0xa')](!![]);};RRMemory[_0xcf8c('0xd')][_0xcf8c('0xf')]=function(_0x378b47){if(util[_0xcf8c('0x10')](this['squeue']['id'],this[_0xcf8c('0x5')][_0xcf8c('0x11')][this['agentId']],this['squeue']['channel'],!![])){logger['info'](_0xcf8c('0x12'),this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x13')]);clearInterval(this[_0xcf8c('0x6')][this[_0xcf8c('0x13')]]);_0x378b47[_0xcf8c('0x14')]();setTimeout(this[_0xcf8c('0x8')][_0xcf8c('0x9')](this),0x3e8);}};RRMemory[_0xcf8c('0xd')][_0xcf8c('0xe')]=function(_0x313d7e){this[_0xcf8c('0x13')]=rr(this[_0xcf8c('0x4')]['mapAgentsId']);logger[_0xcf8c('0x15')](_0xcf8c('0x16'),this['squeue']['id'],this[_0xcf8c('0x13')]);if(_[_0xcf8c('0x17')](this[_0xcf8c('0x5')][_0xcf8c('0x11')][this[_0xcf8c('0x13')]])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x13')]);_0x313d7e['done']();setTimeout(this[_0xcf8c('0x8')][_0xcf8c('0x9')](this),0x3e8);}else{if(util[_0xcf8c('0x10')](this['squeue']['id'],this['realtime'][_0xcf8c('0x11')][this['agentId']],this[_0xcf8c('0x7')]['channel'],!![])){this['realtime'][_0xcf8c('0x11')][this['agentId']][_0xcf8c('0x18')]=!![];this[_0xcf8c('0x5')][_0xcf8c('0x11')][this[_0xcf8c('0x13')]][_0xcf8c('0x19')]=this[_0xcf8c('0x4')][_0xcf8c('0x1a')];util['showNotification'](this['notificationId'],this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x5')][_0xcf8c('0x11')][this['agentId']],this['queue'],this[_0xcf8c('0x3')]);util[_0xcf8c('0x1b')](this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x5')]['agents'][this[_0xcf8c('0x13')]],'RINGING');this[_0xcf8c('0x6')][this[_0xcf8c('0x13')]]=setInterval(this[_0xcf8c('0xf')][_0xcf8c('0x9')](this,_0x313d7e),0x3e8);}else{logger['info'](_0xcf8c('0x1c'),this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x13')]);_0x313d7e['done']();setTimeout(this['push']['bind'](this),0x3e8);}}};RRMemory[_0xcf8c('0xd')]['handleTimeout']=function(_0x31eb44){logger['info'](_0xcf8c('0x1d'),this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x13')]);if(_[_0xcf8c('0x17')](this['realtime'][_0xcf8c('0x11')][this['agentId']])){logger[_0xcf8c('0x15')](_0xcf8c('0x1e'),this['squeue']['id'],this[_0xcf8c('0x13')]);}else{clearInterval(this[_0xcf8c('0x6')][this[_0xcf8c('0x13')]]);util[_0xcf8c('0x1f')](this[_0xcf8c('0x20')],this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x5')]['agents'][this[_0xcf8c('0x13')]],this['queue'],this[_0xcf8c('0x3')]);util[_0xcf8c('0x1b')](this[_0xcf8c('0x7')]['id'],this[_0xcf8c('0x5')][_0xcf8c('0x11')][this[_0xcf8c('0x13')]],'TIMEOUT');this[_0xcf8c('0x5')][_0xcf8c('0x11')][this[_0xcf8c('0x13')]][_0xcf8c('0x18')]=![];this['realtime'][_0xcf8c('0x11')][this['agentId']][_0xcf8c('0x19')]=undefined;}if(!_0x31eb44){setTimeout(this[_0xcf8c('0x8')][_0xcf8c('0x9')](this),0x3e8);}};function rrmemory(_0x59ff21,_0x423e00,_0x314834,_0x1588f){return new RRMemory(_0x59ff21,_0x423e00,_0x314834,_0x1588f);}module[_0xcf8c('0x21')]=rrmemory;
\ No newline at end of file
+var _0x7aef=['handleRun','bind','module','timeout','handleTimeout','squeue','drained','handleDrained','prototype','push','handleCheckReject','isAgentAvailable','realtime','agents','agentId','info','[%s][QUEUE]\x20available\x20again\x20%s','queue','mapAgentsId','isNil','done','channel','busy','busyQueue','showNotification','writeLog','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','exports','uuid','routing','notificationId','intervals'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x7aef,0x1dd));var _0xf7ae=function(_0x1a5e71,_0x52d352){_0x1a5e71=_0x1a5e71-0x0;var _0x109f5c=_0x7aef[_0x1a5e71];return _0x109f5c;};'use strict';var rr=require('rr');var _=require('lodash');var uuid=require(_0xf7ae('0x0'));var util=require('./util');var logger=require('../../../../../config/logger')(_0xf7ae('0x1'));var RRMemory=function(_0x45e62a,_0x7e056f,_0x1129b8,_0x3dbf09){this[_0xf7ae('0x2')]=uuid['v4']();this['squeue']=_0x45e62a;this['queue']=_0x7e056f;this['realtime']=_0x1129b8;this[_0xf7ae('0x1')]=_0x3dbf09;this[_0xf7ae('0x3')]={};this['squeue']['push'](this[_0xf7ae('0x4')][_0xf7ae('0x5')](this),this['handleTimeout']['bind'](this),this[_0xf7ae('0x6')]);this['squeue']['on'](_0xf7ae('0x7'),this[_0xf7ae('0x8')][_0xf7ae('0x5')](this));this[_0xf7ae('0x9')]['on'](_0xf7ae('0xa'),this[_0xf7ae('0xb')][_0xf7ae('0x5')](this));};RRMemory[_0xf7ae('0xc')][_0xf7ae('0xd')]=function(){this[_0xf7ae('0x9')][_0xf7ae('0xd')](this[_0xf7ae('0x4')][_0xf7ae('0x5')](this),this['handleTimeout'][_0xf7ae('0x5')](this));};RRMemory[_0xf7ae('0xc')]['handleDrained']=function(_0x319601){this['handleTimeout'](!![]);};RRMemory[_0xf7ae('0xc')][_0xf7ae('0xe')]=function(_0x5df1e7){if(util[_0xf7ae('0xf')](this['squeue']['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],this['squeue']['channel'],!![])){logger[_0xf7ae('0x13')](_0xf7ae('0x14'),this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x12')]);clearInterval(this[_0xf7ae('0x3')][this['agentId']]);_0x5df1e7['done']();setTimeout(this[_0xf7ae('0xd')][_0xf7ae('0x5')](this),0x3e8);}};RRMemory['prototype'][_0xf7ae('0x4')]=function(_0x24f7b1){this[_0xf7ae('0x12')]=rr(this[_0xf7ae('0x15')][_0xf7ae('0x16')]);logger[_0xf7ae('0x13')]('[%s][QUEUE]\x20try\x20with\x20%s',this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x12')]);if(_[_0xf7ae('0x17')](this[_0xf7ae('0x10')][_0xf7ae('0x11')][this['agentId']])){logger['info']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0xf7ae('0x12')]);_0x24f7b1[_0xf7ae('0x18')]();setTimeout(this[_0xf7ae('0xd')][_0xf7ae('0x5')](this),0x3e8);}else{if(util[_0xf7ae('0xf')](this[_0xf7ae('0x9')]['id'],this['realtime'][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],this[_0xf7ae('0x9')][_0xf7ae('0x19')],!![])){this['realtime'][_0xf7ae('0x11')][this[_0xf7ae('0x12')]][_0xf7ae('0x1a')]=!![];this[_0xf7ae('0x10')][_0xf7ae('0x11')][this['agentId']][_0xf7ae('0x1b')]=this['queue']['name'];util[_0xf7ae('0x1c')](this[_0xf7ae('0x2')],this['squeue']['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this['agentId']],this[_0xf7ae('0x15')],this[_0xf7ae('0x1')]);util[_0xf7ae('0x1d')](this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x10')]['agents'][this[_0xf7ae('0x12')]],_0xf7ae('0x1e'));this[_0xf7ae('0x3')][this[_0xf7ae('0x12')]]=setInterval(this['handleCheckReject'][_0xf7ae('0x5')](this,_0x24f7b1),0x3e8);}else{logger[_0xf7ae('0x13')](_0xf7ae('0x1f'),this['squeue']['id'],this[_0xf7ae('0x12')]);_0x24f7b1[_0xf7ae('0x18')]();setTimeout(this[_0xf7ae('0xd')]['bind'](this),0x3e8);}}};RRMemory[_0xf7ae('0xc')][_0xf7ae('0x8')]=function(_0x315029){logger[_0xf7ae('0x13')](_0xf7ae('0x20'),this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x12')]);if(_[_0xf7ae('0x17')](this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]])){logger[_0xf7ae('0x13')](_0xf7ae('0x21'),this['squeue']['id'],this[_0xf7ae('0x12')]);}else{clearInterval(this['intervals'][this[_0xf7ae('0x12')]]);util[_0xf7ae('0x22')](this[_0xf7ae('0x2')],this[_0xf7ae('0x9')]['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],this[_0xf7ae('0x15')],this[_0xf7ae('0x1')]);util['writeLog'](this['squeue']['id'],this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]],_0xf7ae('0x23'));this[_0xf7ae('0x10')][_0xf7ae('0x11')][this[_0xf7ae('0x12')]][_0xf7ae('0x1a')]=![];this['realtime']['agents'][this[_0xf7ae('0x12')]]['busyQueue']=undefined;}if(!_0x315029){setTimeout(this[_0xf7ae('0xd')][_0xf7ae('0x5')](this),0x3e8);}};function rrmemory(_0x28a3aa,_0x97c4c,_0x3d1e,_0x27960c){return new RRMemory(_0x28a3aa,_0x97c4c,_0x3d1e,_0x27960c);}module[_0xf7ae('0x24')]=rrmemory;
\ No newline at end of file
index 4c72bd2..f5db168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2e3=['../../../../../config/logger','routing','redis','defaults','socket.io-emitter','emit','format','user:%s','name','user:save','\x20interaction','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','message','save','remove','info','isAgentAvailable','busy','BUSY','PAUSE','hasOwnProperty','Capacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','../utils','mustache','ioredis','../../../../../config/environment'];(function(_0x502815,_0x34c00e){var _0x101669=function(_0x45b4d3){while(--_0x45b4d3){_0x502815['push'](_0x502815['shift']());}};_0x101669(++_0x34c00e);}(_0xf2e3,0x9b));var _0x3f2e=function(_0x307d86,_0x9264f2){_0x307d86=_0x307d86-0x0;var _0x361745=_0xf2e3[_0x307d86];return _0x361745;};'use strict';var _=require(_0x3f2e('0x0'));var util=require('util');var utils=require(_0x3f2e('0x1'));var Mustache=require(_0x3f2e('0x2'));var Redis=require(_0x3f2e('0x3'));var config=require(_0x3f2e('0x4'));var logger=require(_0x3f2e('0x5'))(_0x3f2e('0x6'));config[_0x3f2e('0x7')]=_[_0x3f2e('0x8')](config[_0x3f2e('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x3f2e('0x9'))(new Redis(config[_0x3f2e('0x7')]));function emit(_0x3c0864,_0xdf499f,_0x12c6e7){io['to'](_0x3c0864)[_0x3f2e('0xa')](_0xdf499f,_0x12c6e7);}function sendNotification(_0x3636f6,_0x434e0c,_0x2676a7,_0x29a6cc,_0x21f22b,_0x32902a){io['to'](util[_0x3f2e('0xb')](_0x3f2e('0xc'),_0x29a6cc[_0x3f2e('0xd')]))[_0x3f2e('0xa')](_0x3f2e('0xe'),_0x29a6cc);var _0x475cd2=_0x32902a||{};var _0x39b819=_0x2676a7['split']('.');var _0x27c697={'uniqueid':_0x434e0c,'channel':_0x39b819[0x0],'id':_0x39b819[0x1],'title':_0x39b819[0x0]+_0x3f2e('0xf'),'interactionId':_0x39b819[0x2],'queue':_0x21f22b?_0x21f22b['name']:null,'sound':_0x475cd2[_0x3f2e('0x10')][_0x3f2e('0x11')],'shake':_0x475cd2[_0x3f2e('0x10')][_0x3f2e('0x12')]};try{if(!_0x475cd2[_0x3f2e('0x13')]){_0x475cd2['body']={};}if(_0x21f22b){_0x475cd2[_0x3f2e('0x13')][_0x3f2e('0x14')]=_0x21f22b;}else if(_0x475cd2[_0x3f2e('0x13')]['queue']){delete _0x475cd2[_0x3f2e('0x13')][_0x3f2e('0x14')];}_0x27c697[_0x3f2e('0x15')]=utils[_0x3f2e('0x16')](_0x475cd2[_0x3f2e('0x10')][_0x3f2e('0x17')],_0x475cd2);}catch(_0x1c2c0c){_0x27c697[_0x3f2e('0x15')]=_0x3f2e('0x18');logger[_0x3f2e('0x19')](util[_0x3f2e('0xb')]('[%s][QUEUE]\x20%s',_0x434e0c,_0x1c2c0c[_0x3f2e('0x1a')]));}io['to'](util[_0x3f2e('0xb')](_0x3f2e('0xc'),_0x29a6cc[_0x3f2e('0xd')]))[_0x3f2e('0xa')](util['format']('notification:%s',_0x3636f6?_0x3f2e('0x1b'):_0x3f2e('0x1c')),_0x27c697);}function writeLog(_0x38bbae,_0x2ac500,_0x4381e5){return logger[_0x3f2e('0x1d')](util['format']('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0x38bbae,_0x2ac500[_0x3f2e('0xd')],_0x4381e5));}exports[_0x3f2e('0x1e')]=function(_0x5a66d6,_0x541292,_0x46bb1c,_0x5646f5){if(_0x541292[_0x3f2e('0x1f')]){writeLog(_0x5a66d6,_0x541292,_0x3f2e('0x20'));return![];}if(!_0x541292['online']){writeLog(_0x5a66d6,_0x541292,'OFFLINE');return![];}if(_0x541292[_0x46bb1c+'Pause']){writeLog(_0x5a66d6,_0x541292,_0x3f2e('0x21'));return![];}if(_0x5646f5&&_0x541292[_0x3f2e('0x22')](_0x46bb1c+'Capacity')&&_0x541292[_0x3f2e('0x22')](_0x46bb1c+'CurrentCapacity')){if(_0x541292[_0x46bb1c+_0x3f2e('0x23')]>0x0&&_0x541292[_0x46bb1c+'CurrentCapacity']>=_0x541292[_0x46bb1c+_0x3f2e('0x23')]){writeLog(_0x5a66d6,_0x541292,_0x46bb1c[_0x3f2e('0x24')]()+_0x3f2e('0x25'));return![];}}return!![];};exports[_0x3f2e('0x26')]=function(_0x11bad1,_0x4799d3,_0x426d68,_0x28ef64,_0x5eab38){return sendNotification(!![],_0x11bad1,_0x4799d3,_0x426d68,_0x28ef64,_0x5eab38);};exports['hideNotification']=function(_0x2b9fda,_0x1e5db4,_0x35f421,_0x22e6ad,_0x5452f5){return sendNotification(![],_0x2b9fda,_0x1e5db4,_0x35f421,_0x22e6ad,_0x5452f5);};exports[_0x3f2e('0x27')]=writeLog;
\ No newline at end of file
+var _0x81c6=['hideNotification','util','../../../../../config/environment','../../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','user:%s','name','emit','user:save','split','\x20interaction','account','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','format','[%s][QUEUE]\x20%s','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','OFFLINE','Pause','PAUSE','hasOwnProperty','Capacity','showNotification'];(function(_0x288ce2,_0xe659e3){var _0x76f196=function(_0x5e5ffa){while(--_0x5e5ffa){_0x288ce2['push'](_0x288ce2['shift']());}};_0x76f196(++_0xe659e3);}(_0x81c6,0x1d5));var _0x681c=function(_0x3bf957,_0x168c65){_0x3bf957=_0x3bf957-0x0;var _0x551cc=_0x81c6[_0x3bf957];return _0x551cc;};'use strict';var _=require('lodash');var util=require(_0x681c('0x0'));var utils=require('../utils');var Mustache=require('mustache');var Redis=require('ioredis');var config=require(_0x681c('0x1'));var logger=require(_0x681c('0x2'))(_0x681c('0x3'));config['redis']=_[_0x681c('0x4')](config[_0x681c('0x5')],{'host':_0x681c('0x6'),'port':0x18eb});var io=require(_0x681c('0x7'))(new Redis(config['redis']));function emit(_0x45331,_0xdc57a5,_0x5624d7){io['to'](_0x45331)['emit'](_0xdc57a5,_0x5624d7);}function sendNotification(_0x1750e2,_0x3fac39,_0x7f090a,_0x5de78e,_0x4f0228,_0x3e3770){io['to'](util['format'](_0x681c('0x8'),_0x5de78e[_0x681c('0x9')]))[_0x681c('0xa')](_0x681c('0xb'),_0x5de78e);var _0x48dc05=_0x3e3770||{};var _0x49729c=_0x7f090a[_0x681c('0xc')]('.');var _0x1d1d5d={'uniqueid':_0x3fac39,'channel':_0x49729c[0x0],'id':_0x49729c[0x1],'title':_0x49729c[0x0]+_0x681c('0xd'),'interactionId':_0x49729c[0x2],'queue':_0x4f0228?_0x4f0228['name']:null,'sound':_0x48dc05[_0x681c('0xe')]['notificationSound'],'shake':_0x48dc05[_0x681c('0xe')]['notificationShake']};try{if(!_0x48dc05[_0x681c('0xf')]){_0x48dc05[_0x681c('0xf')]={};}if(_0x4f0228){_0x48dc05[_0x681c('0xf')][_0x681c('0x10')]=_0x4f0228;}else if(_0x48dc05[_0x681c('0xf')][_0x681c('0x10')]){delete _0x48dc05['body'][_0x681c('0x10')];}_0x1d1d5d[_0x681c('0x11')]=utils[_0x681c('0x12')](_0x48dc05[_0x681c('0xe')][_0x681c('0x13')],_0x48dc05);}catch(_0x1619df){_0x1d1d5d['msg']=_0x681c('0x14');logger[_0x681c('0x15')](util[_0x681c('0x16')](_0x681c('0x17'),_0x3fac39,_0x1619df['message']));}io['to'](util[_0x681c('0x16')](_0x681c('0x8'),_0x5de78e['name']))[_0x681c('0xa')](util['format'](_0x681c('0x18'),_0x1750e2?_0x681c('0x19'):_0x681c('0x1a')),_0x1d1d5d);}function writeLog(_0x33c495,_0x4169b9,_0x51d626){return logger['info'](util['format'](_0x681c('0x1b'),_0x33c495,_0x4169b9[_0x681c('0x9')],_0x51d626));}exports[_0x681c('0x1c')]=function(_0x27b8a0,_0x2ec29f,_0x29f3fa,_0x415a0a){if(_0x2ec29f[_0x681c('0x1d')]){writeLog(_0x27b8a0,_0x2ec29f,_0x681c('0x1e'));return![];}if(!_0x2ec29f[_0x681c('0x1f')]){writeLog(_0x27b8a0,_0x2ec29f,_0x681c('0x20'));return![];}if(_0x2ec29f[_0x29f3fa+_0x681c('0x21')]){writeLog(_0x27b8a0,_0x2ec29f,_0x681c('0x22'));return![];}if(_0x415a0a&&_0x2ec29f[_0x681c('0x23')](_0x29f3fa+_0x681c('0x24'))&&_0x2ec29f[_0x681c('0x23')](_0x29f3fa+'CurrentCapacity')){if(_0x2ec29f[_0x29f3fa+_0x681c('0x24')]>0x0&&_0x2ec29f[_0x29f3fa+'CurrentCapacity']>=_0x2ec29f[_0x29f3fa+_0x681c('0x24')]){writeLog(_0x27b8a0,_0x2ec29f,_0x29f3fa['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0x681c('0x25')]=function(_0x17ea7c,_0x17e8f3,_0x2f7772,_0x4c9fd0,_0x3b1031){return sendNotification(!![],_0x17ea7c,_0x17e8f3,_0x2f7772,_0x4c9fd0,_0x3b1031);};exports[_0x681c('0x26')]=function(_0x2fde4b,_0x936fce,_0x147cda,_0x204006,_0x2c619f){return sendNotification(![],_0x2fde4b,_0x936fce,_0x147cda,_0x204006,_0x2c619f);};exports['writeLog']=writeLog;
\ No newline at end of file
index e5508e0..f9cbc56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4169=['error','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','[%s][SYSTEM]\x20commnad:\x20%s','trim','replace','isNil','body','[%s][SYSTEM]\x20%s','stringify','shelljs','lodash','../../../../config/logger','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','validate'];(function(_0x211831,_0x5e6e93){var _0x7b06b5=function(_0x55237b){while(--_0x55237b){_0x211831['push'](_0x211831['shift']());}};_0x7b06b5(++_0x5e6e93);}(_0x4169,0x14e));var _0x9416=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4169[_0x321bb2];return _0x9c12ed;};'use strict';var schema=require('validate');var sh=require(_0x9416('0x0'));var _=require(_0x9416('0x1'));var utils=require('./utils');var logger=require(_0x9416('0x2'))(_0x9416('0x3'));var system=schema({'command':{'type':'string','required':!![],'message':_0x9416('0x4')}});exports['consequence']=function(_0x32572f,_0x2c1f90){return function(_0x2acb3c){try{var _0x4143f4={'command':_0x2c1f90[0x0]};var _0x53b277=system[_0x9416('0x5')](_0x4143f4,{'typecast':!![]});if(_0x53b277['length']){logger[_0x9416('0x6')]('[%s][SYSTEM]\x20%s',_0x32572f,_[_0x9416('0x7')](_0x53b277,_0x9416('0x8'))[_0x9416('0x9')](',\x20'));logger[_0x9416('0xa')](_0x9416('0xb'),_0x32572f);_0x2acb3c[_0x9416('0xc')]();}else{var _0x3d196e=this;var _0x2101af=utils['getMustacheRender'](_0x2c1f90[0x0],this);logger[_0x9416('0xa')](_0x9416('0xd'),_0x32572f,_0x2101af);sh['exec'](_[_0x9416('0xe')](_0x2101af),function(_0x2c62fe,_0x1eff27){logger[_0x9416('0xa')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x32572f,_0x2c62fe);if(_0x2c62fe==0x0){var _0xaba84d=_0x1eff27[_0x9416('0xf')](/(\r\n|\n|\r)/gm,'');if(_[_0x9416('0x10')](_0x2c1f90[0x1])||_['isEmpty'](_0x2c1f90[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x32572f);_0x3d196e[_0x9416('0x11')][_0x2c1f90[0x1]]=_0xaba84d;}else{logger[_0x9416('0xa')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x32572f,_0x2c1f90[0x1],_0xaba84d);_0x3d196e[_0x9416('0x11')][_0x2c1f90[0x1]]=_0xaba84d;}}_0x2acb3c[_0x9416('0xc')]();});}}catch(_0x4cd31e){logger[_0x9416('0x6')](_0x9416('0x12'),_0x32572f,_['isObject'](_0x4cd31e)?JSON[_0x9416('0x13')](_0x4cd31e):_0x4cd31e);logger[_0x9416('0xa')](_0x9416('0xb'),_0x32572f);_0x2acb3c[_0x9416('0xc')]();}};};
\ No newline at end of file
+var _0x1fa7=['isObject','shelljs','lodash','routing','string','consequence','validate','length','error','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','[%s][SYSTEM]\x20%s'];(function(_0x36df7a,_0x329220){var _0x3e995a=function(_0x196451){while(--_0x196451){_0x36df7a['push'](_0x36df7a['shift']());}};_0x3e995a(++_0x329220);}(_0x1fa7,0x151));var _0x71fa=function(_0xb2202a,_0x5f40e4){_0xb2202a=_0xb2202a-0x0;var _0x317b5c=_0x1fa7[_0xb2202a];return _0x317b5c;};'use strict';var schema=require('validate');var sh=require(_0x71fa('0x0'));var _=require(_0x71fa('0x1'));var utils=require('./utils');var logger=require('../../../../config/logger')(_0x71fa('0x2'));var system=schema({'command':{'type':_0x71fa('0x3'),'required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x71fa('0x4')]=function(_0x54b23d,_0x16b019){return function(_0x221113){try{var _0x37353a={'command':_0x16b019[0x0]};var _0x53b7a9=system[_0x71fa('0x5')](_0x37353a,{'typecast':!![]});if(_0x53b7a9[_0x71fa('0x6')]){logger[_0x71fa('0x7')]('[%s][SYSTEM]\x20%s',_0x54b23d,_['map'](_0x53b7a9,_0x71fa('0x8'))[_0x71fa('0x9')](',\x20'));logger[_0x71fa('0xa')](_0x71fa('0xb'),_0x54b23d);_0x221113[_0x71fa('0xc')]();}else{var _0x52a1d0=this;var _0x27b8f9=utils[_0x71fa('0xd')](_0x16b019[0x0],this);logger[_0x71fa('0xa')](_0x71fa('0xe'),_0x54b23d,_0x27b8f9);sh[_0x71fa('0xf')](_['trim'](_0x27b8f9),function(_0x20433e,_0x360c23){logger['info'](_0x71fa('0x10'),_0x54b23d,_0x20433e);if(_0x20433e==0x0){var _0x23751d=_0x360c23['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x71fa('0x11')](_0x16b019[0x1])||_[_0x71fa('0x12')](_0x16b019[0x1])){logger[_0x71fa('0xa')](_0x71fa('0x13'),_0x54b23d);_0x52a1d0[_0x71fa('0x14')][_0x16b019[0x1]]=_0x23751d;}else{logger[_0x71fa('0xa')](_0x71fa('0x15'),_0x54b23d,_0x16b019[0x1],_0x23751d);_0x52a1d0[_0x71fa('0x14')][_0x16b019[0x1]]=_0x23751d;}}_0x221113['next']();});}}catch(_0x25b825){logger[_0x71fa('0x7')](_0x71fa('0x16'),_0x54b23d,_[_0x71fa('0x17')](_0x25b825)?JSON['stringify'](_0x25b825):_0x25b825);logger['info'](_0x71fa('0xb'),_0x54b23d);_0x221113[_0x71fa('0xc')]();}};};
\ No newline at end of file
index 63457f5..a42d20a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3db7=['interaction','catch','stringify','info','finally','[%s][TAG]\x20%s','isObject','lodash','../../rpc/chatInteraction','../../rpc/smsInteraction','../../../../config/logger','number','consequence','validate','error','map','message','join','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags'];(function(_0x25c1bd,_0x2b9085){var _0x1eea5f=function(_0x3b720c){while(--_0x3b720c){_0x25c1bd['push'](_0x25c1bd['shift']());}};_0x1eea5f(++_0x2b9085);}(_0x3db7,0x1d3));var _0x73db=function(_0x226117,_0xbd4a09){_0x226117=_0x226117-0x0;var _0x234450=_0x3db7[_0x226117];return _0x234450;};'use strict';var schema=require('validate');var _=require(_0x73db('0x0'));var rpc={'chatInteraction':require(_0x73db('0x1')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x73db('0x2')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require(_0x73db('0x3'))('routing');var tag=schema({'tag':{'type':_0x73db('0x4'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x73db('0x5')]=function(_0x7d227c,_0x305f86,_0x296431,_0x9b05aa){return function(_0x2179be){try{var _0x58405c={'tag':_0x305f86[0x0]};var _0x1adc95=tag[_0x73db('0x6')](_0x58405c,{'typecast':!![]});if(_0x1adc95['length']){logger[_0x73db('0x7')]('[%s][TAG]\x20%s',_0x7d227c,_[_0x73db('0x8')](_0x1adc95,_0x73db('0x9'))[_0x73db('0xa')](',\x20'));logger['info'](_0x73db('0xb'),_0x7d227c);_0x2179be[_0x73db('0xc')]();}else{var _0x65529f={'ids':[_0x305f86[0x0]]};if(rpc[_0x9b05aa[_0x73db('0xd')]+_0x73db('0xe')]){rpc[_0x9b05aa[_0x73db('0xd')]+_0x73db('0xe')][_0x73db('0xf')](_0x9b05aa[_0x73db('0x10')]['id'],_0x65529f)['then'](function(_0x3a593a){logger['info']('[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s',_0x7d227c,_0x305f86[0x1],_0x9b05aa[_0x73db('0xd')],_0x9b05aa[_0x73db('0x10')]['id']);})[_0x73db('0x11')](function(_0x373fb2){logger[_0x73db('0x7')]('[%s][TAG]\x20%s',_0x7d227c,JSON[_0x73db('0x12')](_0x373fb2));logger[_0x73db('0x13')](_0x73db('0xb'),_0x7d227c);})[_0x73db('0x14')](function(){_0x2179be[_0x73db('0xc')]();});}}}catch(_0x43cc27){logger[_0x73db('0x7')](_0x73db('0x15'),_0x7d227c,_[_0x73db('0x16')](_0x43cc27)?JSON[_0x73db('0x12')](_0x43cc27):_0x43cc27);logger[_0x73db('0x13')](_0x73db('0xb'),_0x7d227c);_0x2179be[_0x73db('0xc')]();}};};
\ No newline at end of file
+var _0x45e9=['[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','error','stringify','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','next','isObject','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','[%s][TAG]\x20%s','map','message','join','channel','Interaction','addTags','interaction','then'];(function(_0xaf39f1,_0x386ada){var _0xbb039f=function(_0x3fec4e){while(--_0x3fec4e){_0xaf39f1['push'](_0xaf39f1['shift']());}};_0xbb039f(++_0x386ada);}(_0x45e9,0x1d3));var _0x945e=function(_0x3df407,_0x8e0639){_0x3df407=_0x3df407-0x0;var _0x299b84=_0x45e9[_0x3df407];return _0x299b84;};'use strict';var schema=require(_0x945e('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x945e('0x1')),'openchannelInteraction':require(_0x945e('0x2')),'smsInteraction':require(_0x945e('0x3')),'mailInteraction':require(_0x945e('0x4')),'faxInteraction':require(_0x945e('0x5')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require('../../../../config/logger')(_0x945e('0x6'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0x945e('0x7')}});exports[_0x945e('0x8')]=function(_0x33d812,_0x127697,_0x1cf8e9,_0x4f84b7){return function(_0x178e94){try{var _0x42878b={'tag':_0x127697[0x0]};var _0x5041d9=tag[_0x945e('0x0')](_0x42878b,{'typecast':!![]});if(_0x5041d9[_0x945e('0x9')]){logger['error'](_0x945e('0xa'),_0x33d812,_[_0x945e('0xb')](_0x5041d9,_0x945e('0xc'))[_0x945e('0xd')](',\x20'));logger['info']('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x33d812);_0x178e94['next']();}else{var _0x534880={'ids':[_0x127697[0x0]]};if(rpc[_0x4f84b7[_0x945e('0xe')]+_0x945e('0xf')]){rpc[_0x4f84b7[_0x945e('0xe')]+_0x945e('0xf')][_0x945e('0x10')](_0x4f84b7[_0x945e('0x11')]['id'],_0x534880)[_0x945e('0x12')](function(_0x29c2e8){logger['info'](_0x945e('0x13'),_0x33d812,_0x127697[0x1],_0x4f84b7[_0x945e('0xe')],_0x4f84b7['interaction']['id']);})['catch'](function(_0xab378d){logger[_0x945e('0x14')](_0x945e('0xa'),_0x33d812,JSON[_0x945e('0x15')](_0xab378d));logger[_0x945e('0x16')](_0x945e('0x17'),_0x33d812);})[_0x945e('0x18')](function(){_0x178e94[_0x945e('0x19')]();});}}}catch(_0x227b21){logger[_0x945e('0x14')](_0x945e('0xa'),_0x33d812,_[_0x945e('0x1a')](_0x227b21)?JSON[_0x945e('0x15')](_0x227b21):_0x227b21);logger[_0x945e('0x16')](_0x945e('0x17'),_0x33d812);_0x178e94[_0x945e('0x19')]();}};};
\ No newline at end of file
index 3151238..affe841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x211053,_0x169284){var _0x1c0896=function(_0xccfbdf){while(--_0xccfbdf){_0x211053['push'](_0x211053['shift']());}};_0x1c0896(++_0x169284);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x5a894f,_0x1690f5){var _0x413a82=function(_0x4fefb5){while(--_0x4fefb5){_0x5a894f['push'](_0x5a894f['shift']());}};_0x413a82(++_0x1690f5);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
index ffdbc85..fa64d9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd810=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','http','stringify','listen','127.0.0.1','lodash','util','jayson/promise','bluebird','../../../config/logger','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','isNil','IntervalId','Intervals','interval','rules','channel','message','interaction','applications','length','existsSync','join','.js','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','%s:%s:%s','./interval','condition','intervals','./applications/','app','consequence','priority','info','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','error\x20update\x20queue\x20report','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','mailQueues','paused','waiting','openchannelQueues','smsQueues'];(function(_0x5def7a,_0x386e6c){var _0x1a5946=function(_0x4cace2){while(--_0x4cace2){_0x5def7a['push'](_0x5def7a['shift']());}};_0x1a5946(++_0x386e6c);}(_0xd810,0x1dd));var _0x0d81=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0xd810[_0x1b5aea];return _0x15cfc6;};'use strict';var _=require(_0x0d81('0x0'));var util=require(_0x0d81('0x1'));var path=require('path');var fs=require('fs');var jayson=require(_0x0d81('0x2'));var BPromise=require(_0x0d81('0x3'));var uuid=require('uuid');var config=require('../../../config/environment');var logger=require(_0x0d81('0x4'))('routing');var rpc={'openchannelQueueReport':require(_0x0d81('0x5')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x0d81('0x6')),'smsQueueReport':require(_0x0d81('0x7')),'faxQueueReport':require(_0x0d81('0x8')),'whatsappQueueReport':require(_0x0d81('0x9'))};var RuleEngine=require(_0x0d81('0xa'));function getId(_0x11fd91,_0x1a5356,_0x43aee0){return util[_0x0d81('0xb')]('%s.%s.%s',_0x11fd91,_0x1a5356||0x0,_0x43aee0||0x0);}function getIntervals(_0x2417a5,_0x58de7f){var _0x457cee=[];if(!_[_0x0d81('0xc')](_0x58de7f['IntervalId'])&&!_[_0x0d81('0xc')](_0x2417a5[_0x58de7f[_0x0d81('0xd')]])&&!_['isNil'](_0x2417a5[_0x58de7f['IntervalId']][_0x0d81('0xe')])){_0x457cee=_['map'](_0x2417a5[_0x58de7f['IntervalId']][_0x0d81('0xe')],'interval');}else if(!_[_0x0d81('0xc')](_0x58de7f[_0x0d81('0xf')])){_0x457cee=[_0x58de7f[_0x0d81('0xf')]];}return _0x457cee;}exports['listen']=function(_0x436226){_0x436226[_0x0d81('0x10')]={};return new BPromise(function(_0x328221,_0x5ed805){var _0x3d0f74={'Start':function(_0x2967fe){var _0x1c16dd=this;return new Promise(function(_0x2ca06f,_0x237e95){if(_0x2967fe){try{var _0x27c279=[];var _0x5dfe2c=getId(_0x2967fe[_0x0d81('0x11')],_0x2967fe[_0x0d81('0x12')]?_0x2967fe[_0x0d81('0x12')]['id']:0x0,_0x2967fe[_0x0d81('0x13')]?_0x2967fe['interaction']['id']:0x0);if(_0x2967fe[_0x0d81('0x14')]&&_['isArray'](_0x2967fe[_0x0d81('0x14')])&&_0x2967fe[_0x0d81('0x14')][_0x0d81('0x15')]){for(var _0x37e74c=0x0;_0x37e74c<_0x2967fe[_0x0d81('0x14')][_0x0d81('0x15')];_0x37e74c+=0x1){var _0xedac9b=_0x2967fe[_0x0d81('0x14')][_0x37e74c];if(fs[_0x0d81('0x16')](path[_0x0d81('0x17')](__dirname,_0x0d81('0x14'),_0xedac9b['app']+_0x0d81('0x18')))){var _0x10de31=[];switch(_0xedac9b['app']['toLowerCase']()){case _0x0d81('0x19'):var _0x40d50f=_0xedac9b[_0x0d81('0x1a')][_0x0d81('0x1b')](',');if(_0x2967fe[_0x0d81('0x11')]===_0x0d81('0x1c')){_0x10de31[_0x0d81('0x1d')](_0x40d50f[0x0]);_0x10de31[_0x0d81('0x1d')](_0x40d50f[0x1]);_0x10de31['push'](_0x40d50f['slice'](0x2,_0x40d50f[_0x0d81('0x15')])[_0x0d81('0x17')](','));}else{_0x10de31['push'](_0x40d50f[0x0]);_0x10de31[_0x0d81('0x1d')](_0x40d50f[_0x0d81('0x1e')](0x1,_0x40d50f['length'])[_0x0d81('0x17')](','));}break;case _0x0d81('0x1f'):var _0x48560e=_0xedac9b[_0x0d81('0x1a')][_0x0d81('0x1b')](',');_0x10de31[_0x0d81('0x1d')](_0x48560e[0x0]);_0x10de31[_0x0d81('0x1d')](_0x48560e[0x1]);_0x10de31[_0x0d81('0x1d')](_0x48560e[_0x0d81('0x1e')](0x2,_0x48560e[_0x0d81('0x15')])[_0x0d81('0x17')](','));break;case _0x0d81('0x20'):var _0x238da2=_0xedac9b['appdata'][_0x0d81('0x1b')](',');_0x10de31['push'](_0x238da2[0x0]);_0x10de31[_0x0d81('0x1d')](_0x238da2[0x1]);_0x10de31['push'](_0x238da2[0x2]);_0x10de31[_0x0d81('0x1d')](_0x238da2[0x3]);_0x10de31[_0x0d81('0x1d')](_0x238da2[_0x0d81('0x1e')](0x4,_0x238da2[_0x0d81('0x15')])[_0x0d81('0x17')](','));break;case _0x0d81('0x21'):var _0x43cc29=_0xedac9b['appdata'][_0x0d81('0x1b')](',');_0x10de31[_0x0d81('0x1d')](_0x43cc29[0x0]);_0x10de31[_0x0d81('0x1d')](_0x43cc29[0x1]);_0x10de31[_0x0d81('0x1d')](_0x43cc29[0x2]);_0x10de31[_0x0d81('0x1d')](_0x43cc29[0x3]);_0x10de31['push'](_0x43cc29[_0x0d81('0x1e')](0x4,_0x43cc29[_0x0d81('0x15')])['join'](','));break;case _0x0d81('0x12'):_0x10de31[_0x0d81('0x1d')](_0xedac9b['appdata']);break;case _0x0d81('0x22'):_0x10de31[_0x0d81('0x1d')](_0xedac9b[_0x0d81('0x23')]);_0x10de31[_0x0d81('0x1d')](_0xedac9b[_0x0d81('0x1a')]);break;default:_0x10de31=_[_0x0d81('0xc')](_0xedac9b[_0x0d81('0x1a')])?[]:_0xedac9b[_0x0d81('0x1a')][_0x0d81('0x1b')](',');}var _0x123d7e={'id':util[_0x0d81('0xb')](_0x0d81('0x24'),_0x5dfe2c,_0xedac9b['id'],_0xedac9b['app']),'condition':require(_0x0d81('0x25'))[_0x0d81('0x26')](_0x5dfe2c,getIntervals(_0x436226[_0x0d81('0x27')],_0xedac9b),_0x436226),'consequence':require(_0x0d81('0x28')+_0xedac9b[_0x0d81('0x29')])[_0x0d81('0x2a')](_0x5dfe2c,_0x10de31,_0x436226,_0x2967fe),'p':_0xedac9b[_0x0d81('0x2b')]||0x0};logger[_0x0d81('0x2c')]('Push\x20new\x20rule',_0x123d7e['id'],_0x0d81('0x2d'),getIntervals(_0x436226['intervals'],_0xedac9b)[_0x0d81('0x17')](_0x0d81('0x2e')));_0x27c279['push'](_0x123d7e);}else{logger[_0x0d81('0x2f')](_0x0d81('0x30'),path[_0x0d81('0x17')](__dirname,_0x0d81('0x14'),_0xedac9b[_0x0d81('0x29')]+_0x0d81('0x18')));}}_0x436226[_0x0d81('0x10')][_0x5dfe2c]=new RuleEngine(_0x27c279);_0x436226[_0x0d81('0x10')][_0x5dfe2c][_0x0d81('0x31')](_0x2967fe,function(_0x3fcb73){logger[_0x0d81('0x2c')](_0x0d81('0x32'),JSON['stringify'](_0x3fcb73['matchPath']));if(_0x436226[_0x0d81('0x10')][_0x5dfe2c]){_0x436226['rules'][_0x5dfe2c][_0x0d81('0x33')](_0x0d81('0x34'));}});return _0x2ca06f({'code':0xc8,'message':_0x2967fe});}else{logger['info'](_0x0d81('0x35'));return _0x2ca06f({'code':0xc8,'message':_0x2967fe});}}catch(_0x12fbaa){logger[_0x0d81('0x2f')](_0x12fbaa[_0x0d81('0x36')]);return _0x237e95(_0x1c16dd[_0x0d81('0x2f')](0x1f4,_0x12fbaa));}}return _0x237e95(_0x0d81('0x37'));});},'AcceptMessage':function(_0x117391){var _0x28a00c=this;return new Promise(function(_0x4937da,_0x9390d2){if(_0x117391[_0x0d81('0x38')]&&_0x117391[_0x0d81('0x38')]['id']){if(_0x436226[_0x0d81('0x39')][_0x117391[_0x0d81('0x38')]['id']]){_0x436226[_0x0d81('0x39')][_0x117391[_0x0d81('0x38')]['id']][_0x0d81('0x3a')]=![];_0x436226[_0x0d81('0x39')][_0x117391[_0x0d81('0x38')]['id']][_0x0d81('0x3b')]=undefined;}}if(_0x117391[_0x0d81('0x12')]&&_0x117391['message']['id']){try{var _0x526cef=getId(_0x117391[_0x0d81('0x11')],_0x117391[_0x0d81('0x12')]?_0x117391[_0x0d81('0x12')]['id']:0x0,_0x117391[_0x0d81('0x13')]?_0x117391[_0x0d81('0x13')]['id']:0x0);if(_0x436226[_0x0d81('0x10')][_0x526cef]){_0x436226[_0x0d81('0x10')][_0x526cef]['emit'](_0x0d81('0x3c'));if(rpc[_0x117391[_0x0d81('0x11')]+_0x0d81('0x3d')]){rpc[_0x117391[_0x0d81('0x11')]+'QueueReport'][_0x0d81('0x3e')](_0x526cef,{'UserId':_0x117391['message'][_0x0d81('0x3f')]})['catch'](function(_0x3c4eb7){logger['error'](_0x0d81('0x40'));});}}return _0x4937da({'code':0xc8,'message':_0x117391});}catch(_0x2d3120){logger[_0x0d81('0x2f')](_0x2d3120['stack']);return _0x9390d2(_0x28a00c['error'](0x1f4,_0x2d3120));}}logger[_0x0d81('0x2f')](_0x0d81('0x41'));return _0x9390d2(_0x28a00c[_0x0d81('0x2f')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x3afcb6){var _0x57e9c8=this;return new Promise(function(_0x428e63,_0x2e1c4a){if(_0x3afcb6['agent']&&_0x3afcb6[_0x0d81('0x38')]['id']){try{if(_0x436226['agents'][_0x3afcb6[_0x0d81('0x38')]['id']]){_0x436226['agents'][_0x3afcb6[_0x0d81('0x38')]['id']][_0x0d81('0x3a')]=![];_0x436226[_0x0d81('0x39')][_0x3afcb6[_0x0d81('0x38')]['id']][_0x0d81('0x3b')]=undefined;}return _0x428e63({'code':0xc8,'message':_0x3afcb6});}catch(_0x226ede){logger['error'](_0x226ede[_0x0d81('0x36')]);return _0x2e1c4a(_0x57e9c8[_0x0d81('0x2f')](0x1f4,_0x226ede));}}logger[_0x0d81('0x2f')](_0x0d81('0x41'));return _0x2e1c4a(_0x57e9c8[_0x0d81('0x2f')](0x1f4,_0x0d81('0x41')));});},'AbandonInteraction':function(_0x2ac41a){var _0x1ca43b=this;return new Promise(function(_0x4b243a,_0x20969d){if(_0x2ac41a[_0x0d81('0x11')]&&_0x2ac41a[_0x0d81('0x13')]&&_0x2ac41a['interaction']['id']){try{var _0x51635c=getId(_0x2ac41a[_0x0d81('0x11')],_0x2ac41a[_0x0d81('0x12')]?_0x2ac41a['message']['id']:0x0,_0x2ac41a[_0x0d81('0x13')]?_0x2ac41a[_0x0d81('0x13')]['id']:0x0);if(_0x436226[_0x0d81('0x10')][_0x51635c]){_0x436226[_0x0d81('0x10')][_0x51635c][_0x0d81('0x33')]('end');}return _0x4b243a({'code':0xc8,'message':_0x2ac41a});}catch(_0xd4f217){logger[_0x0d81('0x2f')](_0xd4f217['stack']);return _0x20969d(_0x1ca43b['error'](0x1f4,_0xd4f217));}}logger[_0x0d81('0x2f')](_0x0d81('0x41'));return _0x20969d(_0x1ca43b[_0x0d81('0x2f')](0x1f4,_0x0d81('0x41')));});},'AgentCapacity':function(_0x430db2){var _0x457bbe=this;return new Promise(function(_0x135a45,_0x4aee18){if(_0x436226[_0x0d81('0x39')][_0x0d81('0x42')](_0x430db2['id'])){for(var _0x5fb660 in _0x430db2[_0x0d81('0x43')]){if(_0x430db2[_0x0d81('0x43')][_0x0d81('0x42')](_0x5fb660)){if(_0x436226['agents'][_0x430db2['id']][_0x0d81('0x42')](_0x5fb660+_0x0d81('0x44'))){_0x436226[_0x0d81('0x39')][_0x430db2['id']][_0x5fb660+_0x0d81('0x44')]=parseInt(_0x430db2[_0x0d81('0x43')][_0x5fb660],0xa);}}}_0x436226['agents'][_0x430db2['id']][_0x0d81('0x45')]();return _0x135a45({'code':0xc8,'message':_0x436226[_0x0d81('0x39')][_0x430db2['id']]});}else{return _0x4aee18(_0x457bbe[_0x0d81('0x2f')](0x1f4,_0x0d81('0x46')));}});},'Agents':function(_0x4330b9){return new Promise(function(_0x3a84d8,_0x1160f3){var _0x3340cc=_[_0x0d81('0x47')](_0x436226['agents']);_0x3a84d8({'count':_0x3340cc['length'],'rows':_0x3340cc});});},'ChatQueues':function(_0x2ab321){return new Promise(function(_0x4f9276,_0x2f2f9d){var _0x58be9d=[];for(var _0x12906d in _0x436226[_0x0d81('0x48')]){if(_0x436226['chatQueues']['hasOwnProperty'](_0x12906d)){var _0x34bc85=_0x436226['chatQueues'][_0x12906d];var _0x22c42b={'id':_0x34bc85['id'],'available':_0x34bc85[_0x0d81('0x49')],'loggedIn':_0x34bc85[_0x0d81('0x4a')],'name':_0x34bc85[_0x0d81('0x4b')],'paused':_0x34bc85['paused'],'waiting':_0x34bc85['waiting']};_0x58be9d[_0x0d81('0x1d')](_0x22c42b);}}_0x4f9276({'count':_0x58be9d['length'],'rows':_0x58be9d});});},'MailQueues':function(_0x30aa47){return new Promise(function(_0x3aaca3,_0x407f25){var _0x2be9a8=[];for(var _0x28083a in _0x436226[_0x0d81('0x4c')]){if(_0x436226['mailQueues'][_0x0d81('0x42')](_0x28083a)){var _0x21f4c0=_0x436226[_0x0d81('0x4c')][_0x28083a];var _0x3934cb={'id':_0x21f4c0['id'],'available':_0x21f4c0[_0x0d81('0x49')],'loggedIn':_0x21f4c0['loggedIn'],'name':_0x21f4c0[_0x0d81('0x4b')],'paused':_0x21f4c0[_0x0d81('0x4d')],'waiting':_0x21f4c0[_0x0d81('0x4e')]};_0x2be9a8[_0x0d81('0x1d')](_0x3934cb);}}_0x3aaca3({'count':_0x2be9a8[_0x0d81('0x15')],'rows':_0x2be9a8});});},'OpenchannelQueues':function(_0x5f1834){return new Promise(function(_0xbc52ca,_0x1337fe){var _0x17ab78=[];for(var _0x5703b5 in _0x436226[_0x0d81('0x4f')]){if(_0x436226['openchannelQueues'][_0x0d81('0x42')](_0x5703b5)){var _0x27d473=_0x436226[_0x0d81('0x4f')][_0x5703b5];var _0x4193f7={'id':_0x27d473['id'],'available':_0x27d473[_0x0d81('0x49')],'loggedIn':_0x27d473[_0x0d81('0x4a')],'name':_0x27d473['name'],'paused':_0x27d473['paused'],'waiting':_0x27d473[_0x0d81('0x4e')]};_0x17ab78[_0x0d81('0x1d')](_0x4193f7);}}_0xbc52ca({'count':_0x17ab78[_0x0d81('0x15')],'rows':_0x17ab78});});},'SmsQueues':function(_0x277020){return new Promise(function(_0x140c96,_0x196718){var _0x35e9cc=[];for(var _0x392028 in _0x436226[_0x0d81('0x50')]){if(_0x436226[_0x0d81('0x50')]['hasOwnProperty'](_0x392028)){var _0x39aeba=_0x436226[_0x0d81('0x50')][_0x392028];var _0x26d913={'id':_0x39aeba['id'],'available':_0x39aeba[_0x0d81('0x49')],'loggedIn':_0x39aeba[_0x0d81('0x4a')],'name':_0x39aeba[_0x0d81('0x4b')],'paused':_0x39aeba[_0x0d81('0x4d')],'waiting':_0x39aeba[_0x0d81('0x4e')]};_0x35e9cc[_0x0d81('0x1d')](_0x26d913);}}_0x140c96({'count':_0x35e9cc['length'],'rows':_0x35e9cc});});},'FaxQueues':function(_0x399396){return new Promise(function(_0x2463dc,_0x1e8c36){var _0x201744=[];for(var _0xe135df in _0x436226[_0x0d81('0x51')]){if(_0x436226[_0x0d81('0x51')][_0x0d81('0x42')](_0xe135df)){var _0x3a6ea5=_0x436226[_0x0d81('0x51')][_0xe135df];var _0x5609ac={'id':_0x3a6ea5['id'],'available':_0x3a6ea5[_0x0d81('0x49')],'loggedIn':_0x3a6ea5[_0x0d81('0x4a')],'name':_0x3a6ea5[_0x0d81('0x4b')],'paused':_0x3a6ea5[_0x0d81('0x4d')],'waiting':_0x3a6ea5[_0x0d81('0x4e')]};_0x201744[_0x0d81('0x1d')](_0x5609ac);}}_0x2463dc({'count':_0x201744[_0x0d81('0x15')],'rows':_0x201744});});},'WhatsappQueues':function(_0x607814){return new Promise(function(_0x4c6cda,_0x47cfbf){var _0x20633a=[];for(var _0x34652e in _0x436226[_0x0d81('0x52')]){if(_0x436226[_0x0d81('0x52')][_0x0d81('0x42')](_0x34652e)){var _0x199b62=_0x436226['whatsappQueues'][_0x34652e];var _0x23706c={'id':_0x199b62['id'],'available':_0x199b62[_0x0d81('0x49')],'loggedIn':_0x199b62['loggedIn'],'name':_0x199b62['name'],'paused':_0x199b62[_0x0d81('0x4d')],'waiting':_0x199b62[_0x0d81('0x4e')]};_0x20633a[_0x0d81('0x1d')](_0x23706c);}}_0x4c6cda({'count':_0x20633a['length'],'rows':_0x20633a});});},'ChatQueuesWaitingInteractions':function(_0x40faf3){return new Promise(function(_0x23e396,_0x1cdd71){var _0x1585ff=_['values'](_0x436226[_0x0d81('0x53')]);_0x23e396({'count':_0x1585ff['length'],'rows':_0x1585ff});});},'MailQueuesWaitingInteractions':function(_0xfcb51d){return new Promise(function(_0x2bcc53,_0x389225){var _0x1cf285=_[_0x0d81('0x47')](_0x436226[_0x0d81('0x54')]);_0x2bcc53({'count':_0x1cf285['length'],'rows':_0x1cf285});});},'OpenchannelQueuesWaitingInteractions':function(_0x15bec9){return new Promise(function(_0x35842e,_0x5054a7){var _0x148af3=_[_0x0d81('0x47')](_0x436226[_0x0d81('0x55')]);_0x35842e({'count':_0x148af3[_0x0d81('0x15')],'rows':_0x148af3});});},'SmsQueuesWaitingInteractions':function(_0x560268){return new Promise(function(_0x4c8be6,_0x553c69){var _0x92b2ec=_[_0x0d81('0x47')](_0x436226[_0x0d81('0x56')]);_0x4c8be6({'count':_0x92b2ec[_0x0d81('0x15')],'rows':_0x92b2ec});});},'FaxQueuesWaitingInteractions':function(_0x38077d){return new Promise(function(_0x11580c,_0x590960){var _0x25c697=_[_0x0d81('0x47')](_0x436226[_0x0d81('0x57')]);_0x11580c({'count':_0x25c697[_0x0d81('0x15')],'rows':_0x25c697});});},'WhatsappQueuesWaitingInteractions':function(_0xdf1ce3){return new Promise(function(_0x32b615,_0x406e3a){var _0x3f118b=_[_0x0d81('0x47')](_0x436226['whatsappQueuesWaitingInteractions']);_0x32b615({'count':_0x3f118b[_0x0d81('0x15')],'rows':_0x3f118b});});}};var _0x4d36f9=jayson[_0x0d81('0x58')](_0x3d0f74)[_0x0d81('0x59')]();_0x4d36f9['on'](_0x0d81('0x2f'),function(_0x61b162){logger['error'](JSON[_0x0d81('0x5a')](_0x61b162));return _0x5ed805(_0x61b162);});_0x4d36f9[_0x0d81('0x5b')](0x232c,_0x0d81('0x5c'),function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x328221('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x96f9=['127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','uuid','../../../config/environment','../../../config/logger','routing','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','IntervalId','isNil','Intervals','map','interval','listen','rules','message','interaction','applications','isArray','length','existsSync','app','.js','toLowerCase','autoreply','appdata','channel','push','slice','dialogflow','split','join','dialogflowv2','amazonlex','tag','format','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','priority','Push\x20new\x20rule','\x20|\x20','error','execute','info','stringify','matchPath','emit','complete','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','agents','busyQueue','QueueReport','update','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','end','capacity','hasOwnProperty','CurrentCapacity','updateRealtime','agent\x20not\x20found','values','chatQueues','available','paused','waiting','mailQueues','openchannelQueues','loggedIn','name','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http'];(function(_0x59de9e,_0x3bf96f){var _0x853d5a=function(_0x3770a5){while(--_0x3770a5){_0x59de9e['push'](_0x59de9e['shift']());}};_0x853d5a(++_0x3bf96f);}(_0x96f9,0x64));var _0x996f=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x96f9[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0x996f('0x0'));var util=require(_0x996f('0x1'));var path=require(_0x996f('0x2'));var fs=require('fs');var jayson=require(_0x996f('0x3'));var BPromise=require(_0x996f('0x4'));var uuid=require(_0x996f('0x5'));var config=require(_0x996f('0x6'));var logger=require(_0x996f('0x7'))(_0x996f('0x8'));var rpc={'openchannelQueueReport':require('../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x996f('0x9')),'chatQueueReport':require(_0x996f('0xa')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x996f('0xb')),'whatsappQueueReport':require(_0x996f('0xc'))};var RuleEngine=require(_0x996f('0xd'));function getId(_0x5d6b3d,_0x5cddab,_0x599ee0){return util['format']('%s.%s.%s',_0x5d6b3d,_0x5cddab||0x0,_0x599ee0||0x0);}function getIntervals(_0x304dc6,_0x120c79){var _0x226986=[];if(!_['isNil'](_0x120c79[_0x996f('0xe')])&&!_[_0x996f('0xf')](_0x304dc6[_0x120c79[_0x996f('0xe')]])&&!_[_0x996f('0xf')](_0x304dc6[_0x120c79['IntervalId']][_0x996f('0x10')])){_0x226986=_[_0x996f('0x11')](_0x304dc6[_0x120c79['IntervalId']][_0x996f('0x10')],'interval');}else if(!_[_0x996f('0xf')](_0x120c79[_0x996f('0x12')])){_0x226986=[_0x120c79['interval']];}return _0x226986;}exports[_0x996f('0x13')]=function(_0x535a83){_0x535a83[_0x996f('0x14')]={};return new BPromise(function(_0x9318b8,_0x1262b3){var _0x237501={'Start':function(_0x5b129a){var _0x46e8ce=this;return new Promise(function(_0x105920,_0x4e5527){if(_0x5b129a){try{var _0xfb9eac=[];var _0x5dea4c=getId(_0x5b129a['channel'],_0x5b129a[_0x996f('0x15')]?_0x5b129a[_0x996f('0x15')]['id']:0x0,_0x5b129a[_0x996f('0x16')]?_0x5b129a['interaction']['id']:0x0);if(_0x5b129a[_0x996f('0x17')]&&_[_0x996f('0x18')](_0x5b129a['applications'])&&_0x5b129a[_0x996f('0x17')][_0x996f('0x19')]){for(var _0x3f4015=0x0;_0x3f4015<_0x5b129a[_0x996f('0x17')]['length'];_0x3f4015+=0x1){var _0x10efb6=_0x5b129a['applications'][_0x3f4015];if(fs[_0x996f('0x1a')](path['join'](__dirname,_0x996f('0x17'),_0x10efb6[_0x996f('0x1b')]+_0x996f('0x1c')))){var _0x4273b0=[];switch(_0x10efb6[_0x996f('0x1b')][_0x996f('0x1d')]()){case _0x996f('0x1e'):var _0x816890=_0x10efb6[_0x996f('0x1f')]['split'](',');if(_0x5b129a[_0x996f('0x20')]==='mail'){_0x4273b0[_0x996f('0x21')](_0x816890[0x0]);_0x4273b0[_0x996f('0x21')](_0x816890[0x1]);_0x4273b0['push'](_0x816890[_0x996f('0x22')](0x2,_0x816890[_0x996f('0x19')])['join'](','));}else{_0x4273b0['push'](_0x816890[0x0]);_0x4273b0['push'](_0x816890[_0x996f('0x22')](0x1,_0x816890[_0x996f('0x19')])['join'](','));}break;case _0x996f('0x23'):var _0x4b251c=_0x10efb6['appdata'][_0x996f('0x24')](',');_0x4273b0[_0x996f('0x21')](_0x4b251c[0x0]);_0x4273b0[_0x996f('0x21')](_0x4b251c[0x1]);_0x4273b0[_0x996f('0x21')](_0x4b251c[_0x996f('0x22')](0x2,_0x4b251c[_0x996f('0x19')])[_0x996f('0x25')](','));break;case _0x996f('0x26'):var _0x23ecb0=_0x10efb6[_0x996f('0x1f')][_0x996f('0x24')](',');_0x4273b0[_0x996f('0x21')](_0x23ecb0[0x0]);_0x4273b0[_0x996f('0x21')](_0x23ecb0[0x1]);_0x4273b0['push'](_0x23ecb0[0x2]);_0x4273b0[_0x996f('0x21')](_0x23ecb0[0x3]);_0x4273b0[_0x996f('0x21')](_0x23ecb0[_0x996f('0x22')](0x4,_0x23ecb0[_0x996f('0x19')])['join'](','));break;case _0x996f('0x27'):var _0x412567=_0x10efb6[_0x996f('0x1f')][_0x996f('0x24')](',');_0x4273b0['push'](_0x412567[0x0]);_0x4273b0['push'](_0x412567[0x1]);_0x4273b0[_0x996f('0x21')](_0x412567[0x2]);_0x4273b0[_0x996f('0x21')](_0x412567[0x3]);_0x4273b0[_0x996f('0x21')](_0x412567[_0x996f('0x22')](0x4,_0x412567[_0x996f('0x19')])[_0x996f('0x25')](','));break;case _0x996f('0x15'):_0x4273b0[_0x996f('0x21')](_0x10efb6[_0x996f('0x1f')]);break;case _0x996f('0x28'):_0x4273b0[_0x996f('0x21')](_0x10efb6['TagId']);_0x4273b0[_0x996f('0x21')](_0x10efb6[_0x996f('0x1f')]);break;default:_0x4273b0=_[_0x996f('0xf')](_0x10efb6[_0x996f('0x1f')])?[]:_0x10efb6[_0x996f('0x1f')][_0x996f('0x24')](',');}var _0x47802a={'id':util[_0x996f('0x29')](_0x996f('0x2a'),_0x5dea4c,_0x10efb6['id'],_0x10efb6['app']),'condition':require(_0x996f('0x2b'))[_0x996f('0x2c')](_0x5dea4c,getIntervals(_0x535a83[_0x996f('0x2d')],_0x10efb6),_0x535a83),'consequence':require(_0x996f('0x2e')+_0x10efb6[_0x996f('0x1b')])[_0x996f('0x2f')](_0x5dea4c,_0x4273b0,_0x535a83,_0x5b129a),'p':_0x10efb6[_0x996f('0x30')]||0x0};logger['info'](_0x996f('0x31'),_0x47802a['id'],'on\x20interval',getIntervals(_0x535a83['intervals'],_0x10efb6)['join'](_0x996f('0x32')));_0xfb9eac['push'](_0x47802a);}else{logger[_0x996f('0x33')]('Please\x20create\x20a\x20new\x20file\x20under',path[_0x996f('0x25')](__dirname,_0x996f('0x17'),_0x10efb6[_0x996f('0x1b')]+_0x996f('0x1c')));}}_0x535a83['rules'][_0x5dea4c]=new RuleEngine(_0xfb9eac);_0x535a83['rules'][_0x5dea4c][_0x996f('0x34')](_0x5b129a,function(_0x4818ca){logger[_0x996f('0x35')]('Applications\x20executed',JSON[_0x996f('0x36')](_0x4818ca[_0x996f('0x37')]));if(_0x535a83[_0x996f('0x14')][_0x5dea4c]){_0x535a83['rules'][_0x5dea4c][_0x996f('0x38')](_0x996f('0x39'));}});return _0x105920({'code':0xc8,'message':_0x5b129a});}else{logger['info'](_0x996f('0x3a'));return _0x105920({'code':0xc8,'message':_0x5b129a});}}catch(_0x37ab24){logger[_0x996f('0x33')](_0x37ab24[_0x996f('0x3b')]);return _0x4e5527(_0x46e8ce[_0x996f('0x33')](0x1f4,_0x37ab24));}}return _0x4e5527(_0x996f('0x3c'));});},'AcceptMessage':function(_0x335569){var _0x49885d=this;return new Promise(function(_0x3476a2,_0x42e457){if(_0x335569['agent']&&_0x335569[_0x996f('0x3d')]['id']){if(_0x535a83[_0x996f('0x3e')][_0x335569[_0x996f('0x3d')]['id']]){_0x535a83[_0x996f('0x3e')][_0x335569[_0x996f('0x3d')]['id']]['busy']=![];_0x535a83['agents'][_0x335569[_0x996f('0x3d')]['id']][_0x996f('0x3f')]=undefined;}}if(_0x335569[_0x996f('0x15')]&&_0x335569[_0x996f('0x15')]['id']){try{var _0x32ea44=getId(_0x335569['channel'],_0x335569['message']?_0x335569[_0x996f('0x15')]['id']:0x0,_0x335569[_0x996f('0x16')]?_0x335569[_0x996f('0x16')]['id']:0x0);if(_0x535a83['rules'][_0x32ea44]){_0x535a83[_0x996f('0x14')][_0x32ea44][_0x996f('0x38')]('end');if(rpc[_0x335569[_0x996f('0x20')]+'QueueReport']){rpc[_0x335569['channel']+_0x996f('0x40')][_0x996f('0x41')](_0x32ea44,{'UserId':_0x335569[_0x996f('0x15')]['UserId']})[_0x996f('0x42')](function(_0x1bbb44){logger[_0x996f('0x33')](_0x996f('0x43'));});}}return _0x3476a2({'code':0xc8,'message':_0x335569});}catch(_0x13b158){logger[_0x996f('0x33')](_0x13b158[_0x996f('0x3b')]);return _0x42e457(_0x49885d[_0x996f('0x33')](0x1f4,_0x13b158));}}logger['error'](_0x996f('0x44'));return _0x42e457(_0x49885d[_0x996f('0x33')](0x1f4,_0x996f('0x44')));});},'RejectMessage':function(_0x4fc423){var _0x24ef49=this;return new Promise(function(_0x46db2b,_0x27e89c){if(_0x4fc423[_0x996f('0x3d')]&&_0x4fc423['agent']['id']){try{if(_0x535a83[_0x996f('0x3e')][_0x4fc423[_0x996f('0x3d')]['id']]){_0x535a83[_0x996f('0x3e')][_0x4fc423[_0x996f('0x3d')]['id']][_0x996f('0x45')]=![];_0x535a83[_0x996f('0x3e')][_0x4fc423[_0x996f('0x3d')]['id']]['busyQueue']=undefined;}return _0x46db2b({'code':0xc8,'message':_0x4fc423});}catch(_0x598c4b){logger[_0x996f('0x33')](_0x598c4b[_0x996f('0x3b')]);return _0x27e89c(_0x24ef49[_0x996f('0x33')](0x1f4,_0x598c4b));}}logger['error'](_0x996f('0x44'));return _0x27e89c(_0x24ef49['error'](0x1f4,_0x996f('0x44')));});},'AbandonInteraction':function(_0x34a4b2){var _0x55bf25=this;return new Promise(function(_0x7edd28,_0x2f9d4b){if(_0x34a4b2[_0x996f('0x20')]&&_0x34a4b2['interaction']&&_0x34a4b2[_0x996f('0x16')]['id']){try{var _0xceb5d0=getId(_0x34a4b2['channel'],_0x34a4b2[_0x996f('0x15')]?_0x34a4b2[_0x996f('0x15')]['id']:0x0,_0x34a4b2[_0x996f('0x16')]?_0x34a4b2[_0x996f('0x16')]['id']:0x0);if(_0x535a83[_0x996f('0x14')][_0xceb5d0]){_0x535a83[_0x996f('0x14')][_0xceb5d0][_0x996f('0x38')](_0x996f('0x46'));}return _0x7edd28({'code':0xc8,'message':_0x34a4b2});}catch(_0x42b26b){logger[_0x996f('0x33')](_0x42b26b[_0x996f('0x3b')]);return _0x2f9d4b(_0x55bf25['error'](0x1f4,_0x42b26b));}}logger[_0x996f('0x33')](_0x996f('0x44'));return _0x2f9d4b(_0x55bf25[_0x996f('0x33')](0x1f4,_0x996f('0x44')));});},'AgentCapacity':function(_0x5b0d82){var _0x4bcf10=this;return new Promise(function(_0x1686d8,_0x1beca3){if(_0x535a83[_0x996f('0x3e')]['hasOwnProperty'](_0x5b0d82['id'])){for(var _0x1e3e5a in _0x5b0d82[_0x996f('0x47')]){if(_0x5b0d82[_0x996f('0x47')]['hasOwnProperty'](_0x1e3e5a)){if(_0x535a83['agents'][_0x5b0d82['id']][_0x996f('0x48')](_0x1e3e5a+_0x996f('0x49'))){_0x535a83[_0x996f('0x3e')][_0x5b0d82['id']][_0x1e3e5a+_0x996f('0x49')]=parseInt(_0x5b0d82[_0x996f('0x47')][_0x1e3e5a],0xa);}}}_0x535a83['agents'][_0x5b0d82['id']][_0x996f('0x4a')]();return _0x1686d8({'code':0xc8,'message':_0x535a83[_0x996f('0x3e')][_0x5b0d82['id']]});}else{return _0x1beca3(_0x4bcf10[_0x996f('0x33')](0x1f4,_0x996f('0x4b')));}});},'Agents':function(_0x2fa3f2){return new Promise(function(_0x5e1f54,_0x3206e7){var _0x40fb51=_[_0x996f('0x4c')](_0x535a83[_0x996f('0x3e')]);_0x5e1f54({'count':_0x40fb51[_0x996f('0x19')],'rows':_0x40fb51});});},'ChatQueues':function(_0x1f9022){return new Promise(function(_0x4f4430,_0x30d37f){var _0x632aef=[];for(var _0x5ea2ce in _0x535a83[_0x996f('0x4d')]){if(_0x535a83[_0x996f('0x4d')][_0x996f('0x48')](_0x5ea2ce)){var _0x61d4fb=_0x535a83[_0x996f('0x4d')][_0x5ea2ce];var _0x182366={'id':_0x61d4fb['id'],'available':_0x61d4fb[_0x996f('0x4e')],'loggedIn':_0x61d4fb['loggedIn'],'name':_0x61d4fb['name'],'paused':_0x61d4fb[_0x996f('0x4f')],'waiting':_0x61d4fb[_0x996f('0x50')]};_0x632aef[_0x996f('0x21')](_0x182366);}}_0x4f4430({'count':_0x632aef['length'],'rows':_0x632aef});});},'MailQueues':function(_0x28d4b2){return new Promise(function(_0x57fb38,_0x314260){var _0xf04f9b=[];for(var _0x168b92 in _0x535a83[_0x996f('0x51')]){if(_0x535a83[_0x996f('0x51')][_0x996f('0x48')](_0x168b92)){var _0x2b300e=_0x535a83[_0x996f('0x51')][_0x168b92];var _0x4438e0={'id':_0x2b300e['id'],'available':_0x2b300e[_0x996f('0x4e')],'loggedIn':_0x2b300e['loggedIn'],'name':_0x2b300e['name'],'paused':_0x2b300e[_0x996f('0x4f')],'waiting':_0x2b300e['waiting']};_0xf04f9b[_0x996f('0x21')](_0x4438e0);}}_0x57fb38({'count':_0xf04f9b['length'],'rows':_0xf04f9b});});},'OpenchannelQueues':function(_0x242a9b){return new Promise(function(_0x35bd7d,_0x249b73){var _0x495fb5=[];for(var _0x448001 in _0x535a83[_0x996f('0x52')]){if(_0x535a83[_0x996f('0x52')][_0x996f('0x48')](_0x448001)){var _0x4729e5=_0x535a83['openchannelQueues'][_0x448001];var _0x4ec8c4={'id':_0x4729e5['id'],'available':_0x4729e5[_0x996f('0x4e')],'loggedIn':_0x4729e5[_0x996f('0x53')],'name':_0x4729e5[_0x996f('0x54')],'paused':_0x4729e5[_0x996f('0x4f')],'waiting':_0x4729e5[_0x996f('0x50')]};_0x495fb5[_0x996f('0x21')](_0x4ec8c4);}}_0x35bd7d({'count':_0x495fb5[_0x996f('0x19')],'rows':_0x495fb5});});},'SmsQueues':function(_0x49d4b2){return new Promise(function(_0x3258b2,_0x5bf2c5){var _0x222568=[];for(var _0x48c5b8 in _0x535a83[_0x996f('0x55')]){if(_0x535a83['smsQueues'][_0x996f('0x48')](_0x48c5b8)){var _0x57c178=_0x535a83[_0x996f('0x55')][_0x48c5b8];var _0x2f8c34={'id':_0x57c178['id'],'available':_0x57c178[_0x996f('0x4e')],'loggedIn':_0x57c178['loggedIn'],'name':_0x57c178[_0x996f('0x54')],'paused':_0x57c178[_0x996f('0x4f')],'waiting':_0x57c178['waiting']};_0x222568[_0x996f('0x21')](_0x2f8c34);}}_0x3258b2({'count':_0x222568[_0x996f('0x19')],'rows':_0x222568});});},'FaxQueues':function(_0x336632){return new Promise(function(_0x3fc85e,_0x4cf06e){var _0x323d45=[];for(var _0x5f5ba4 in _0x535a83['faxQueues']){if(_0x535a83[_0x996f('0x56')]['hasOwnProperty'](_0x5f5ba4)){var _0x5a7285=_0x535a83[_0x996f('0x56')][_0x5f5ba4];var _0x2b7e02={'id':_0x5a7285['id'],'available':_0x5a7285[_0x996f('0x4e')],'loggedIn':_0x5a7285['loggedIn'],'name':_0x5a7285[_0x996f('0x54')],'paused':_0x5a7285[_0x996f('0x4f')],'waiting':_0x5a7285['waiting']};_0x323d45[_0x996f('0x21')](_0x2b7e02);}}_0x3fc85e({'count':_0x323d45[_0x996f('0x19')],'rows':_0x323d45});});},'WhatsappQueues':function(_0x5e1bd9){return new Promise(function(_0x5b4f51,_0x925816){var _0x4ac38d=[];for(var _0x5066fe in _0x535a83[_0x996f('0x57')]){if(_0x535a83[_0x996f('0x57')]['hasOwnProperty'](_0x5066fe)){var _0x393ab0=_0x535a83[_0x996f('0x57')][_0x5066fe];var _0x4682c0={'id':_0x393ab0['id'],'available':_0x393ab0['available'],'loggedIn':_0x393ab0[_0x996f('0x53')],'name':_0x393ab0['name'],'paused':_0x393ab0[_0x996f('0x4f')],'waiting':_0x393ab0[_0x996f('0x50')]};_0x4ac38d[_0x996f('0x21')](_0x4682c0);}}_0x5b4f51({'count':_0x4ac38d['length'],'rows':_0x4ac38d});});},'ChatQueuesWaitingInteractions':function(_0x40cd39){return new Promise(function(_0x577951,_0x26c787){var _0x21368e=_[_0x996f('0x4c')](_0x535a83[_0x996f('0x58')]);_0x577951({'count':_0x21368e['length'],'rows':_0x21368e});});},'MailQueuesWaitingInteractions':function(_0x286dc8){return new Promise(function(_0x31cb3d,_0x3d8ccf){var _0x445d45=_['values'](_0x535a83[_0x996f('0x59')]);_0x31cb3d({'count':_0x445d45[_0x996f('0x19')],'rows':_0x445d45});});},'OpenchannelQueuesWaitingInteractions':function(_0x563a4a){return new Promise(function(_0x39f96d,_0x1db673){var _0x425fde=_[_0x996f('0x4c')](_0x535a83['openchannelQueuesWaitingInteractions']);_0x39f96d({'count':_0x425fde[_0x996f('0x19')],'rows':_0x425fde});});},'SmsQueuesWaitingInteractions':function(_0x1da5b7){return new Promise(function(_0x149b13,_0x370842){var _0x31b5a4=_[_0x996f('0x4c')](_0x535a83[_0x996f('0x5a')]);_0x149b13({'count':_0x31b5a4['length'],'rows':_0x31b5a4});});},'FaxQueuesWaitingInteractions':function(_0x2966d4){return new Promise(function(_0x1d0f9e,_0x58bbd5){var _0x5e0a34=_[_0x996f('0x4c')](_0x535a83['faxQueuesWaitingInteractions']);_0x1d0f9e({'count':_0x5e0a34[_0x996f('0x19')],'rows':_0x5e0a34});});},'WhatsappQueuesWaitingInteractions':function(_0x3a4ba2){return new Promise(function(_0x262232,_0x17d572){var _0x4d17b3=_['values'](_0x535a83[_0x996f('0x5b')]);_0x262232({'count':_0x4d17b3[_0x996f('0x19')],'rows':_0x4d17b3});});}};var _0x27f1ea=jayson[_0x996f('0x5c')](_0x237501)[_0x996f('0x5d')]();_0x27f1ea['on'](_0x996f('0x33'),function(_0x25b06d){logger[_0x996f('0x33')](JSON[_0x996f('0x36')](_0x25b06d));return _0x1262b3(_0x25b06d);});_0x27f1ea[_0x996f('0x13')](0x232c,_0x996f('0x5e'),function(){console[_0x996f('0x5f')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x9318b8(_0x996f('0x60')+0x232c);});});};
\ No newline at end of file
index 45bd5ac..c42b0d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d46=['when','stack','util','bluebird','lodash','../../../config/logger','http','request','then','error','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','Command','format','iftime\x20%s','message','indexOf','true','[%s][INTERVAL]\x20%s','all','[%s][INTERVAL]\x20%s\x20%s','join'];(function(_0xe789d9,_0x300f89){var _0x2bda33=function(_0x57a5f6){while(--_0x57a5f6){_0xe789d9['push'](_0xe789d9['shift']());}};_0x2bda33(++_0x300f89);}(_0x0d46,0xfe));var _0x60d4=function(_0x523f2c,_0x14e5e9){_0x523f2c=_0x523f2c-0x0;var _0x1312dc=_0x0d46[_0x523f2c];return _0x1312dc;};'use strict';var util=require(_0x60d4('0x0'));var BPromise=require(_0x60d4('0x1'));var jayson=require('jayson/promise');var _=require(_0x60d4('0x2'));var logger=require(_0x60d4('0x3'))('routing');var client=jayson['client'][_0x60d4('0x4')]({'port':0x232a});function request(_0x366099,_0x36ab7e){return new BPromise(function(_0x55e1b8,_0x1d113a){return client[_0x60d4('0x5')](_0x366099,_0x36ab7e)[_0x60d4('0x6')](function(_0x4b809a){if(_0x4b809a[_0x60d4('0x7')]){return _0x1d113a(_0x4b809a[_0x60d4('0x7')]['message']);}else{return _0x55e1b8(_0x4b809a['result']);}})[_0x60d4('0x8')](function(_0x1cc871){return _0x1d113a(_0x1cc871);});});}exports[_0x60d4('0x9')]=function(_0x14d581,_0x4e9830,_0x3fb84c){return function(_0x18cbed){if(_0x3fb84c[_0x60d4('0xa')]&&!_0x3fb84c[_0x60d4('0xa')][_0x14d581]){logger[_0x60d4('0xb')](_0x60d4('0xc'),_0x14d581);return _0x18cbed[_0x60d4('0xd')]();}var _0x4abdba=[];for(var _0x328eb2=0x0;_0x328eb2<_0x4e9830[_0x60d4('0xe')];_0x328eb2+=0x1){_0x4abdba[_0x60d4('0xf')](request(_0x60d4('0x10'),{'command':util[_0x60d4('0x11')](_0x60d4('0x12'),_0x4e9830[_0x328eb2])})[_0x60d4('0x6')](function(_0x3f0feb){return _0x3f0feb&&_0x3f0feb[_0x60d4('0x13')]&&_0x3f0feb[_0x60d4('0x13')][_0x60d4('0x14')](_0x60d4('0x15'))>=0x0?!![]:![];})[_0x60d4('0x8')](function(_0x568c08){logger[_0x60d4('0x7')](_0x60d4('0x16'),_0x14d581,_0x4e9830[_0x328eb2]);}));}BPromise[_0x60d4('0x17')](_0x4abdba)['then'](function(_0x224446){var _0x1e9acd=_['some'](_0x224446);logger['info'](_0x60d4('0x18'),_0x14d581,_0x4e9830[_0x60d4('0x19')]('\x20|\x20'),_0x1e9acd);_0x18cbed[_0x60d4('0x1a')](_0x1e9acd);})['catch'](function(_0x16adae){console['log'](_0x16adae);logger[_0x60d4('0x7')]('[%s][INTERVAL]\x20%s\x20%s',_0x14d581,_0x4e9830[_0x60d4('0x19')]('\x20|\x20'),_0x16adae[_0x60d4('0x1b')]);_0x18cbed[_0x60d4('0xd')]();});};};
\ No newline at end of file
+var _0x44bd=['util','bluebird','jayson/promise','lodash','routing','client','http','request','error','result','catch','condition','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','push','then','message','true','[%s][INTERVAL]\x20%s','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack'];(function(_0x332d33,_0x5109a3){var _0x410080=function(_0x4d35fb){while(--_0x4d35fb){_0x332d33['push'](_0x332d33['shift']());}};_0x410080(++_0x5109a3);}(_0x44bd,0x1b0));var _0xd44b=function(_0x46e341,_0x34388c){_0x46e341=_0x46e341-0x0;var _0x30284b=_0x44bd[_0x46e341];return _0x30284b;};'use strict';var util=require(_0xd44b('0x0'));var BPromise=require(_0xd44b('0x1'));var jayson=require(_0xd44b('0x2'));var _=require(_0xd44b('0x3'));var logger=require('../../../config/logger')(_0xd44b('0x4'));var client=jayson[_0xd44b('0x5')][_0xd44b('0x6')]({'port':0x232a});function request(_0x10286f,_0x5ca9aa){return new BPromise(function(_0x577630,_0xcf6b8b){return client[_0xd44b('0x7')](_0x10286f,_0x5ca9aa)['then'](function(_0xe7442f){if(_0xe7442f[_0xd44b('0x8')]){return _0xcf6b8b(_0xe7442f[_0xd44b('0x8')]['message']);}else{return _0x577630(_0xe7442f[_0xd44b('0x9')]);}})[_0xd44b('0xa')](function(_0x5aeef6){return _0xcf6b8b(_0x5aeef6);});});}exports[_0xd44b('0xb')]=function(_0x4cddeb,_0x2e85c5,_0x36d1fc){return function(_0x750010){if(_0x36d1fc['rules']&&!_0x36d1fc['rules'][_0x4cddeb]){logger[_0xd44b('0xc')](_0xd44b('0xd'),_0x4cddeb);return _0x750010[_0xd44b('0xe')]();}var _0x19f661=[];for(var _0x524c6a=0x0;_0x524c6a<_0x2e85c5[_0xd44b('0xf')];_0x524c6a+=0x1){_0x19f661[_0xd44b('0x10')](request('Command',{'command':util['format']('iftime\x20%s',_0x2e85c5[_0x524c6a])})[_0xd44b('0x11')](function(_0x14606e){return _0x14606e&&_0x14606e[_0xd44b('0x12')]&&_0x14606e[_0xd44b('0x12')]['indexOf'](_0xd44b('0x13'))>=0x0?!![]:![];})[_0xd44b('0xa')](function(_0x43b67e){logger[_0xd44b('0x8')](_0xd44b('0x14'),_0x4cddeb,_0x2e85c5[_0x524c6a]);}));}BPromise['all'](_0x19f661)['then'](function(_0x143a97){var _0x4d5ab5=_[_0xd44b('0x15')](_0x143a97);logger[_0xd44b('0xc')](_0xd44b('0x16'),_0x4cddeb,_0x2e85c5[_0xd44b('0x17')](_0xd44b('0x18')),_0x4d5ab5);_0x750010['when'](_0x4d5ab5);})['catch'](function(_0x45d3a7){console[_0xd44b('0x19')](_0x45d3a7);logger['error'](_0xd44b('0x16'),_0x4cddeb,_0x2e85c5[_0xd44b('0x17')]('\x20|\x20'),_0x45d3a7[_0xd44b('0x1a')]);_0x750010[_0xd44b('0xe')]();});};};
\ No newline at end of file
index 6e9ee64..8892874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['acw','acwtime','agentacw','acwTimeout','CreateVoiceAgentReport','destuniqueid','agentcalled','format','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','isNil','debug','[%s][agents][agentringnoanswer]','info','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','timeout','reason','ringtime','push','queuecallerabandon','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','agentringnoanswerAt','abandoned','holdtime','talktime','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','forIn','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','[%s][agents][agentcomplete]','agentcompleteAt','agentconnectAt','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','blind','transferexten','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','transfertype','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','complete','lodash','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','interface','calleridnum','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentcomplete'];(function(_0x19dd7a,_0x51de21){var _0x3feb6a=function(_0x4a3c84){while(--_0x4a3c84){_0x19dd7a['push'](_0x19dd7a['shift']());}};_0x3feb6a(++_0x51de21);}(_0xf7b4,0x152));var _0x4f7b=function(_0x18947c,_0xa391b){_0x18947c=_0x18947c-0x0;var _0x5ed660=_0xf7b4[_0x18947c];return _0x5ed660;};'use strict';var _=require(_0x4f7b('0x0'));var util=require('util');var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x5ccf30,_0x103165){utils['info'](util['format'](_0x4f7b('0x1'),_0x5ccf30[_0x4f7b('0x2')],_0x5ccf30[_0x4f7b('0x3')],_0x5ccf30[_0x4f7b('0x4')],_0x5ccf30[_0x4f7b('0x5')],_0x5ccf30[_0x4f7b('0x6')],_0x5ccf30[_0x4f7b('0x7')],_0x5ccf30[_0x4f7b('0x8')],_0x5ccf30[_0x4f7b('0x9')]));if(_0x5ccf30[_0x4f7b('0x4')]){utils[_0x4f7b('0xa')](_0x5ccf30[_0x4f7b('0x4')])[_0x4f7b('0xb')](function(_0x5c714d){if(_0x5c714d){_0x5ccf30[_0x4f7b('0xc')]=_0x5c714d[_0x4f7b('0xc')];_0x5ccf30['agentacw']=_0x5ccf30[_0x4f7b('0xd')]?_0x5c714d[_0x4f7b('0xe')]:![];_0x5ccf30[_0x4f7b('0xf')]=_0x5ccf30[_0x4f7b('0x10')]?_0x5c714d[_0x4f7b('0x11')]:0x0;}utils['request'](_0x4f7b('0x12'),_0x5ccf30);});}else{utils['request']('CreateVoiceAgentReport',_0x5ccf30);}if(_0x103165){delete transfers[_0x5ccf30[_0x4f7b('0x2')]];}else{delete agents[_0x5ccf30[_0x4f7b('0x13')]];}}exports[_0x4f7b('0x14')]=function(_0x41a050){try{utils['debug'](util[_0x4f7b('0x15')](_0x4f7b('0x16'),_0x41a050[_0x4f7b('0x2')]),_0x41a050);agents[_0x41a050[_0x4f7b('0x13')]]=_0x41a050;agents[_0x41a050[_0x4f7b('0x13')]][_0x4f7b('0x17')]=utils[_0x4f7b('0x18')]();agents[_0x41a050[_0x4f7b('0x13')]][_0x4f7b('0x9')]=_0x4f7b('0x19');agents[_0x41a050[_0x4f7b('0x13')]][_0x4f7b('0x8')]=null;agents[_0x41a050['destuniqueid']][_0x4f7b('0x1a')]=null;utils['info'](util['format'](_0x4f7b('0x1b'),_0x41a050[_0x4f7b('0x2')],agents[_0x41a050['destuniqueid']][_0x4f7b('0x5')],_0x41a050[_0x4f7b('0x13')]));}catch(_0x13a0f5){utils[_0x4f7b('0x1c')](util['format'](_0x4f7b('0x16'),_0x41a050['uniqueid']),_0x13a0f5);}};exports[_0x4f7b('0x1d')]=function(_0x12374b){try{if(!_[_0x4f7b('0x1e')](agents[_0x12374b[_0x4f7b('0x13')]])){utils[_0x4f7b('0x1f')](util[_0x4f7b('0x15')](_0x4f7b('0x20'),_0x12374b[_0x4f7b('0x2')]),_0x12374b);utils[_0x4f7b('0x21')](util['format'](_0x4f7b('0x22'),_0x12374b[_0x4f7b('0x2')],agents[_0x12374b[_0x4f7b('0x13')]]['membername'],_0x12374b[_0x4f7b('0x13')]));agents[_0x12374b[_0x4f7b('0x13')]]['agentringnoanswer']=!![];agents[_0x12374b[_0x4f7b('0x13')]]['agentringnoanswerAt']=utils[_0x4f7b('0x18')]();agents[_0x12374b[_0x4f7b('0x13')]][_0x4f7b('0x9')]=_0x4f7b('0x23');agents[_0x12374b[_0x4f7b('0x13')]][_0x4f7b('0x24')]=_0x4f7b('0x23');agents[_0x12374b[_0x4f7b('0x13')]]['holdtime']=_0x12374b[_0x4f7b('0x25')]?parseInt(_0x12374b[_0x4f7b('0x25')])/0x3e8:0x0;agents[_0x12374b[_0x4f7b('0x13')]]['talktime']=0x0;unanswered[_0x4f7b('0x26')](_0x12374b[_0x4f7b('0x13')]);}}catch(_0x1db684){utils[_0x4f7b('0x1c')](util[_0x4f7b('0x15')]('[%s][agents][agentringnoanswer]',_0x12374b[_0x4f7b('0x2')]),_0x1db684);}};exports[_0x4f7b('0x27')]=function(_0x9a675c){try{_['forIn'](agents,function(_0x7de561,_0x5d13a1){if(_0x7de561['uniqueid']==_0x9a675c[_0x4f7b('0x2')]&&!_['includes'](unanswered,_0x7de561[_0x4f7b('0x13')])){utils[_0x4f7b('0x1f')](util[_0x4f7b('0x15')](_0x4f7b('0x28'),_0x9a675c[_0x4f7b('0x2')]),_0x9a675c);utils[_0x4f7b('0x21')](util[_0x4f7b('0x15')](_0x4f7b('0x29'),_0x9a675c[_0x4f7b('0x2')],_0x7de561[_0x4f7b('0x5')],_0x7de561[_0x4f7b('0x13')]));_0x7de561[_0x4f7b('0x1d')]=!![];_0x7de561[_0x4f7b('0x2a')]=utils[_0x4f7b('0x18')]();_0x7de561[_0x4f7b('0x9')]=_0x4f7b('0x2b');_0x7de561[_0x4f7b('0x24')]=_0x4f7b('0x2b');_0x7de561[_0x4f7b('0x2c')]=_0x9a675c[_0x4f7b('0x2c')];_0x7de561[_0x4f7b('0x2d')]=0x0;writeDB(_0x7de561);}});}catch(_0x172235){utils['error'](util[_0x4f7b('0x15')]('[%s][agents][queuecallerabandon]',_0x9a675c[_0x4f7b('0x2')]),_0x172235);}};exports[_0x4f7b('0x2e')]=function(_0x579ad4){try{if(agents[_0x579ad4[_0x4f7b('0x13')]]){utils[_0x4f7b('0x1f')](util[_0x4f7b('0x15')]('[%s][agents][agentconnect]',_0x579ad4[_0x4f7b('0x2')]),_0x579ad4);utils[_0x4f7b('0x21')](util[_0x4f7b('0x15')](_0x4f7b('0x2f'),_0x579ad4[_0x4f7b('0x2')],agents[_0x579ad4[_0x4f7b('0x13')]][_0x4f7b('0x5')],_0x579ad4['destuniqueid']));agents[_0x579ad4[_0x4f7b('0x13')]]['agentconnectAt']=utils[_0x4f7b('0x18')]();agents[_0x579ad4[_0x4f7b('0x13')]][_0x4f7b('0x8')]=_0x579ad4['connectedlinenum'];agents[_0x579ad4[_0x4f7b('0x13')]]['connectedlinename']=_0x579ad4[_0x4f7b('0x1a')];agents[_0x579ad4[_0x4f7b('0x13')]]['holdtime']=_0x579ad4['ringtime'];agents[_0x579ad4[_0x4f7b('0x13')]]['lastevent']=_0x4f7b('0x30');_[_0x4f7b('0x31')](agents,function(_0x54f9e8,_0x1d0746){if(_0x54f9e8['destuniqueid']!=_0x579ad4['destuniqueid']&&_0x54f9e8['uniqueid']==_0x579ad4[_0x4f7b('0x2')]){_0x54f9e8[_0x4f7b('0x2d')]=0x0;_0x54f9e8[_0x4f7b('0x2c')]=_0x579ad4[_0x4f7b('0x25')];_0x54f9e8['agentringnoanswer']=!![];_0x54f9e8[_0x4f7b('0x2a')]=utils['now']();_0x54f9e8[_0x4f7b('0x9')]='answered_elsewhere';_0x54f9e8[_0x4f7b('0x24')]='answered_elsewhere';_0x54f9e8[_0x4f7b('0x32')]=_0x579ad4[_0x4f7b('0x13')];_0x54f9e8[_0x4f7b('0x33')]=_0x579ad4[_0x4f7b('0x5')];writeDB(_0x54f9e8);}});}}catch(_0x2986cd){utils[_0x4f7b('0x1c')](util[_0x4f7b('0x15')](_0x4f7b('0x34'),_0x579ad4[_0x4f7b('0x2')]),_0x2986cd);}};exports[_0x4f7b('0xd')]=function(_0x2d0be3){try{if(!_[_0x4f7b('0x1e')](agents[_0x2d0be3[_0x4f7b('0x13')]])){utils[_0x4f7b('0x1f')](util[_0x4f7b('0x15')](_0x4f7b('0x35'),_0x2d0be3[_0x4f7b('0x2')]),_0x2d0be3);utils[_0x4f7b('0x21')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x2d0be3[_0x4f7b('0x2')],agents[_0x2d0be3[_0x4f7b('0x13')]][_0x4f7b('0x5')],_0x2d0be3[_0x4f7b('0x13')]));agents[_0x2d0be3['destuniqueid']]['agentcomplete']=!![];agents[_0x2d0be3[_0x4f7b('0x13')]][_0x4f7b('0x36')]=utils[_0x4f7b('0x18')]();agents[_0x2d0be3[_0x4f7b('0x13')]]['talktime']=utils['diffTime'](agents[_0x2d0be3[_0x4f7b('0x13')]][_0x4f7b('0x36')],agents[_0x2d0be3[_0x4f7b('0x13')]][_0x4f7b('0x37')]);agents[_0x2d0be3[_0x4f7b('0x13')]]['reason']=_0x2d0be3[_0x4f7b('0x24')];agents[_0x2d0be3[_0x4f7b('0x13')]][_0x4f7b('0x9')]='complete';writeDB(agents[_0x2d0be3[_0x4f7b('0x13')]]);}}catch(_0x104e7f){utils[_0x4f7b('0x1c')](util[_0x4f7b('0x15')](_0x4f7b('0x35'),_0x2d0be3[_0x4f7b('0x2')]),_0x104e7f);}};exports[_0x4f7b('0x38')]=function(_0x2e563f){try{if(!_[_0x4f7b('0x1e')](agents[_0x2e563f[_0x4f7b('0x39')]])){utils['debug'](util[_0x4f7b('0x15')](_0x4f7b('0x3a'),_0x2e563f[_0x4f7b('0x2')]),_0x2e563f);utils['info'](util[_0x4f7b('0x15')](_0x4f7b('0x3b'),_0x2e563f[_0x4f7b('0x2')],agents[_0x2e563f[_0x4f7b('0x39')]][_0x4f7b('0x5')],agents[_0x2e563f[_0x4f7b('0x39')]][_0x4f7b('0x2')]));agents[_0x2e563f[_0x4f7b('0x39')]][_0x4f7b('0x3c')]=!![];agents[_0x2e563f[_0x4f7b('0x39')]]['transfertype']=_0x4f7b('0x3d');agents[_0x2e563f[_0x4f7b('0x39')]][_0x4f7b('0x3e')]=_0x2e563f['extension'];agents[_0x2e563f[_0x4f7b('0x39')]][_0x4f7b('0x3f')]=agents[_0x2e563f[_0x4f7b('0x39')]][_0x4f7b('0x2')];}}catch(_0x3437a8){utils[_0x4f7b('0x1c')](util['format'](_0x4f7b('0x3a'),_0x2e563f[_0x4f7b('0x2')]),_0x3437a8);}};exports[_0x4f7b('0x40')]=function(_0x4c9496){try{utils[_0x4f7b('0x1f')](util[_0x4f7b('0x15')](_0x4f7b('0x41'),_0x4c9496[_0x4f7b('0x42')]),_0x4c9496);if(_0x4c9496[_0x4f7b('0x42')]==_0x4c9496[_0x4f7b('0x43')]){if(!_['isNil'](agents[_0x4c9496[_0x4f7b('0x44')]])){utils['info'](util['format']('[%s][agents][attendedtransfer]\x20agent:%s',_0x4c9496[_0x4f7b('0x42')],agents[_0x4c9496[_0x4f7b('0x44')]][_0x4f7b('0x5')]));agents[_0x4c9496['secondtransfereruniqueid']]['transfer']=!![];agents[_0x4c9496[_0x4f7b('0x44')]][_0x4f7b('0x45')]='ATTENDED';agents[_0x4c9496[_0x4f7b('0x44')]][_0x4f7b('0x3e')]=_0x4c9496[_0x4f7b('0x46')];agents[_0x4c9496[_0x4f7b('0x44')]]['transferuniqueid']=_0x4c9496[_0x4f7b('0x42')];}if(_0x4c9496[_0x4f7b('0x47')]&&agents[_0x4c9496[_0x4f7b('0x47')]]){agents[_0x4c9496[_0x4f7b('0x47')]][_0x4f7b('0x48')]=0x1;transfers[_0x4c9496[_0x4f7b('0x47')]]=_[_0x4f7b('0x49')](agents[_0x4c9496['transfereeuniqueid']]);transfers[_0x4c9496['transfereeuniqueid']]['calleridnum']=agents[_0x4c9496[_0x4f7b('0x44')]]['calleridnum'];transfers[_0x4c9496['transfereeuniqueid']]['calleridname']=agents[_0x4c9496['secondtransfereruniqueid']][_0x4f7b('0x4a')];transfers[_0x4c9496[_0x4f7b('0x47')]][_0x4f7b('0x17')]=utils[_0x4f7b('0x18')]();transfers[_0x4c9496[_0x4f7b('0x47')]][_0x4f7b('0x37')]=utils[_0x4f7b('0x18')]();transfers[_0x4c9496[_0x4f7b('0x47')]][_0x4f7b('0x2c')]=0x0;transfers[_0x4c9496[_0x4f7b('0x47')]][_0x4f7b('0x48')]=0x2;}}else if(_0x4c9496[_0x4f7b('0x44')]==_0x4c9496[_0x4f7b('0x4b')]){if(!_[_0x4f7b('0x1e')](agents[_0x4c9496[_0x4f7b('0x42')]])){utils[_0x4f7b('0x21')](util[_0x4f7b('0x15')](_0x4f7b('0x4c'),_0x4c9496['origtransfereruniqueid'],agents[_0x4c9496[_0x4f7b('0x42')]][_0x4f7b('0x5')]));agents[_0x4c9496[_0x4f7b('0x42')]][_0x4f7b('0x3c')]=!![];agents[_0x4c9496[_0x4f7b('0x42')]]['transfertype']='ATTENDED';agents[_0x4c9496[_0x4f7b('0x42')]]['transferexten']=_0x4c9496[_0x4f7b('0x4d')];agents[_0x4c9496[_0x4f7b('0x42')]][_0x4f7b('0x3f')]=_0x4c9496[_0x4f7b('0x44')];}if(_0x4c9496['transfertargetuniqueid']&&agents[_0x4c9496[_0x4f7b('0x4e')]]){agents[_0x4c9496[_0x4f7b('0x4e')]][_0x4f7b('0x48')]=0x1;transfers[_0x4c9496['transfertargetuniqueid']]=_['clone'](agents[_0x4c9496['transfertargetuniqueid']]);transfers[_0x4c9496[_0x4f7b('0x4e')]]['calleridnum']=agents[_0x4c9496['origtransfereruniqueid']]['calleridnum'];transfers[_0x4c9496[_0x4f7b('0x4e')]][_0x4f7b('0x4a')]=agents[_0x4c9496[_0x4f7b('0x42')]]['calleridname'];transfers[_0x4c9496[_0x4f7b('0x4e')]][_0x4f7b('0x17')]=utils['now']();transfers[_0x4c9496['transfertargetuniqueid']][_0x4f7b('0x37')]=utils[_0x4f7b('0x18')]();transfers[_0x4c9496[_0x4f7b('0x4e')]][_0x4f7b('0x2c')]=0x0;transfers[_0x4c9496['transfertargetuniqueid']][_0x4f7b('0x48')]=0x2;}}}catch(_0x40534d){utils[_0x4f7b('0x1c')](util[_0x4f7b('0x15')](_0x4f7b('0x41'),_0x4c9496[_0x4f7b('0x42')]),_0x40534d);}};exports['hangup']=function(_0x1fa0fd){try{utils[_0x4f7b('0x1f')](util[_0x4f7b('0x15')](_0x4f7b('0x4f'),_0x1fa0fd[_0x4f7b('0x2')]),_0x1fa0fd);if(agents[_0x1fa0fd['uniqueid']]&&agents[_0x1fa0fd['uniqueid']]['reason']===_0x4f7b('0x23')){if(_0x1fa0fd[_0x4f7b('0x50')]==='21'){agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x24')]=_0x4f7b('0x51');agents[_0x1fa0fd['uniqueid']][_0x4f7b('0x9')]=_0x4f7b('0x51');}utils[_0x4f7b('0x21')](util[_0x4f7b('0x15')](_0x4f7b('0x52'),_0x1fa0fd[_0x4f7b('0x2')],agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x5')],agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x24')],agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x9')]));writeDB(agents[_0x1fa0fd[_0x4f7b('0x2')]]);var _0x19e4ab=unanswered[_0x4f7b('0x53')](_0x1fa0fd[_0x4f7b('0x2')]);if(_0x19e4ab>-0x1){unanswered[_0x4f7b('0x54')](_0x19e4ab,0x1);}}if(transfers[_0x1fa0fd[_0x4f7b('0x2')]]){transfers[_0x1fa0fd['uniqueid']]['agentcomplete']=!![];transfers[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x36')]=utils[_0x4f7b('0x18')]();transfers[_0x1fa0fd[_0x4f7b('0x2')]]['talktime']=utils[_0x4f7b('0x55')](transfers[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x36')],transfers[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x37')]);transfers[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x24')]=_0x4f7b('0x56');transfers[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x9')]=_0x4f7b('0x57');utils[_0x4f7b('0x21')](util[_0x4f7b('0x15')](_0x4f7b('0x52'),_0x1fa0fd[_0x4f7b('0x2')],transfers[_0x1fa0fd['uniqueid']][_0x4f7b('0x5')],transfers[_0x1fa0fd[_0x4f7b('0x2')]]['reason'],transfers[_0x1fa0fd['uniqueid']][_0x4f7b('0x9')]));writeDB(transfers[_0x1fa0fd[_0x4f7b('0x2')]],!![]);}if(agents[_0x1fa0fd[_0x4f7b('0x2')]]&&agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x37')]){agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0xd')]=!![];agents[_0x1fa0fd['uniqueid']]['agentcompleteAt']=utils[_0x4f7b('0x18')]();agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x2d')]=utils[_0x4f7b('0x55')](agents[_0x1fa0fd['uniqueid']][_0x4f7b('0x36')],agents[_0x1fa0fd[_0x4f7b('0x2')]]['agentconnectAt']);agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x24')]=agents[_0x1fa0fd['uniqueid']]['transfer']?_0x4f7b('0x3c'):'agent';agents[_0x1fa0fd['uniqueid']]['lastevent']=_0x4f7b('0x57');utils['info'](util[_0x4f7b('0x15')](_0x4f7b('0x52'),_0x1fa0fd[_0x4f7b('0x2')],agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x5')],agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x24')],agents[_0x1fa0fd[_0x4f7b('0x2')]][_0x4f7b('0x9')]));writeDB(agents[_0x1fa0fd['uniqueid']]);}}catch(_0x476637){utils[_0x4f7b('0x1c')](util[_0x4f7b('0x15')](_0x4f7b('0x4f'),_0x1fa0fd[_0x4f7b('0x2')]),_0x476637);}};
\ No newline at end of file
+var _0xb469=['agentringnoanswerAt','timeout','holdtime','ringtime','talktime','[%s][agents][agentringnoanswer]','queuecallerabandon','forIn','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','reason','abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connect','agentringnoanswer','answeredelsewheredestinationuniqueid','answeredelsewheremembername','agentcomplete','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','complete','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfertype','blind','transferexten','transferuniqueid','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','transfereeuniqueid','agententerreason','calleridnum','calleridname','secondtransfererlinkedid','secondtransfererexten','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','splice','diffTime','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','lodash','util','./utils','info','format','uniqueid','channel','membername','interface','connectedlinenum','getVoiceQueueByName','then','type','agentacw','acw','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','agentcalledAt','now','lastevent','called','connectedlinename','error','isNil','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout'];(function(_0x5bf504,_0x593370){var _0xf86374=function(_0x30123b){while(--_0x30123b){_0x5bf504['push'](_0x5bf504['shift']());}};_0xf86374(++_0x593370);}(_0xb469,0x13b));var _0x9b46=function(_0x5d86b5,_0x336bd2){_0x5d86b5=_0x5d86b5-0x0;var _0x254f32=_0xb469[_0x5d86b5];return _0x254f32;};'use strict';var _=require(_0x9b46('0x0'));var util=require(_0x9b46('0x1'));var utils=require(_0x9b46('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x34f477,_0x1a41e8){utils[_0x9b46('0x3')](util[_0x9b46('0x4')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x34f477[_0x9b46('0x5')],_0x34f477[_0x9b46('0x6')],_0x34f477['queue'],_0x34f477[_0x9b46('0x7')],_0x34f477[_0x9b46('0x8')],_0x34f477['calleridnum'],_0x34f477[_0x9b46('0x9')],_0x34f477['lastevent']));if(_0x34f477['queue']){utils[_0x9b46('0xa')](_0x34f477['queue'])[_0x9b46('0xb')](function(_0xb9d1b5){if(_0xb9d1b5){_0x34f477[_0x9b46('0xc')]=_0xb9d1b5['type'];_0x34f477[_0x9b46('0xd')]=_0x34f477['agentcomplete']?_0xb9d1b5[_0x9b46('0xe')]:![];_0x34f477['acwtime']=_0x34f477[_0x9b46('0xd')]?_0xb9d1b5['acwTimeout']:0x0;}utils[_0x9b46('0xf')](_0x9b46('0x10'),_0x34f477);});}else{utils['request'](_0x9b46('0x10'),_0x34f477);}if(_0x1a41e8){delete transfers[_0x34f477[_0x9b46('0x5')]];}else{delete agents[_0x34f477['destuniqueid']];}}exports[_0x9b46('0x11')]=function(_0x2cfb35){try{utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x13'),_0x2cfb35[_0x9b46('0x5')]),_0x2cfb35);agents[_0x2cfb35[_0x9b46('0x14')]]=_0x2cfb35;agents[_0x2cfb35[_0x9b46('0x14')]][_0x9b46('0x15')]=utils[_0x9b46('0x16')]();agents[_0x2cfb35[_0x9b46('0x14')]][_0x9b46('0x17')]=_0x9b46('0x18');agents[_0x2cfb35['destuniqueid']]['connectedlinenum']=null;agents[_0x2cfb35['destuniqueid']][_0x9b46('0x19')]=null;utils[_0x9b46('0x3')](util[_0x9b46('0x4')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x2cfb35['uniqueid'],agents[_0x2cfb35[_0x9b46('0x14')]]['membername'],_0x2cfb35['destuniqueid']));}catch(_0xfeb1b9){utils[_0x9b46('0x1a')](util['format'](_0x9b46('0x13'),_0x2cfb35[_0x9b46('0x5')]),_0xfeb1b9);}};exports['agentringnoanswer']=function(_0x55aece){try{if(!_[_0x9b46('0x1b')](agents[_0x55aece[_0x9b46('0x14')]])){utils[_0x9b46('0x12')](util['format']('[%s][agents][agentringnoanswer]',_0x55aece[_0x9b46('0x5')]),_0x55aece);utils['info'](util[_0x9b46('0x4')](_0x9b46('0x1c'),_0x55aece['uniqueid'],agents[_0x55aece[_0x9b46('0x14')]]['membername'],_0x55aece[_0x9b46('0x14')]));agents[_0x55aece[_0x9b46('0x14')]]['agentringnoanswer']=!![];agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x1d')]=utils[_0x9b46('0x16')]();agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x17')]=_0x9b46('0x1e');agents[_0x55aece[_0x9b46('0x14')]]['reason']=_0x9b46('0x1e');agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x1f')]=_0x55aece[_0x9b46('0x20')]?parseInt(_0x55aece[_0x9b46('0x20')])/0x3e8:0x0;agents[_0x55aece[_0x9b46('0x14')]][_0x9b46('0x21')]=0x0;unanswered['push'](_0x55aece[_0x9b46('0x14')]);}}catch(_0xee519e){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x22'),_0x55aece[_0x9b46('0x5')]),_0xee519e);}};exports[_0x9b46('0x23')]=function(_0x17ba3d){try{_[_0x9b46('0x24')](agents,function(_0x20090a,_0x2e1c51){if(_0x20090a['uniqueid']==_0x17ba3d[_0x9b46('0x5')]&&!_[_0x9b46('0x25')](unanswered,_0x20090a[_0x9b46('0x14')])){utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x26'),_0x17ba3d[_0x9b46('0x5')]),_0x17ba3d);utils[_0x9b46('0x3')](util[_0x9b46('0x4')](_0x9b46('0x27'),_0x17ba3d[_0x9b46('0x5')],_0x20090a['membername'],_0x20090a[_0x9b46('0x14')]));_0x20090a['agentringnoanswer']=!![];_0x20090a[_0x9b46('0x1d')]=utils[_0x9b46('0x16')]();_0x20090a[_0x9b46('0x17')]='abandoned';_0x20090a[_0x9b46('0x28')]=_0x9b46('0x29');_0x20090a[_0x9b46('0x1f')]=_0x17ba3d[_0x9b46('0x1f')];_0x20090a[_0x9b46('0x21')]=0x0;writeDB(_0x20090a);}});}catch(_0x5cb73f){utils['error'](util[_0x9b46('0x4')](_0x9b46('0x26'),_0x17ba3d[_0x9b46('0x5')]),_0x5cb73f);}};exports[_0x9b46('0x2a')]=function(_0x4fa731){try{if(agents[_0x4fa731[_0x9b46('0x14')]]){utils['debug'](util[_0x9b46('0x4')](_0x9b46('0x2b'),_0x4fa731[_0x9b46('0x5')]),_0x4fa731);utils[_0x9b46('0x3')](util['format'](_0x9b46('0x2c'),_0x4fa731['uniqueid'],agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x7')],_0x4fa731[_0x9b46('0x14')]));agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x2d')]=utils[_0x9b46('0x16')]();agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x9')]=_0x4fa731[_0x9b46('0x9')];agents[_0x4fa731[_0x9b46('0x14')]][_0x9b46('0x19')]=_0x4fa731['connectedlinename'];agents[_0x4fa731[_0x9b46('0x14')]]['holdtime']=_0x4fa731[_0x9b46('0x20')];agents[_0x4fa731[_0x9b46('0x14')]]['lastevent']=_0x9b46('0x2e');_['forIn'](agents,function(_0x416538,_0x493b0f){if(_0x416538[_0x9b46('0x14')]!=_0x4fa731[_0x9b46('0x14')]&&_0x416538[_0x9b46('0x5')]==_0x4fa731[_0x9b46('0x5')]){_0x416538[_0x9b46('0x21')]=0x0;_0x416538['holdtime']=_0x4fa731['ringtime'];_0x416538[_0x9b46('0x2f')]=!![];_0x416538['agentringnoanswerAt']=utils['now']();_0x416538['lastevent']='answered_elsewhere';_0x416538[_0x9b46('0x28')]='answered_elsewhere';_0x416538[_0x9b46('0x30')]=_0x4fa731['destuniqueid'];_0x416538[_0x9b46('0x31')]=_0x4fa731[_0x9b46('0x7')];writeDB(_0x416538);}});}}catch(_0x2e92aa){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x2b'),_0x4fa731[_0x9b46('0x5')]),_0x2e92aa);}};exports[_0x9b46('0x32')]=function(_0x148d86){try{if(!_['isNil'](agents[_0x148d86[_0x9b46('0x14')]])){utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x33'),_0x148d86[_0x9b46('0x5')]),_0x148d86);utils[_0x9b46('0x3')](util[_0x9b46('0x4')](_0x9b46('0x34'),_0x148d86[_0x9b46('0x5')],agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x7')],_0x148d86[_0x9b46('0x14')]));agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x32')]=!![];agents[_0x148d86['destuniqueid']]['agentcompleteAt']=utils[_0x9b46('0x16')]();agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x21')]=utils['diffTime'](agents[_0x148d86['destuniqueid']][_0x9b46('0x35')],agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x2d')]);agents[_0x148d86[_0x9b46('0x14')]][_0x9b46('0x28')]=_0x148d86[_0x9b46('0x28')];agents[_0x148d86['destuniqueid']][_0x9b46('0x17')]=_0x9b46('0x36');writeDB(agents[_0x148d86[_0x9b46('0x14')]]);}}catch(_0x47a938){utils[_0x9b46('0x1a')](util['format'](_0x9b46('0x33'),_0x148d86[_0x9b46('0x5')]),_0x47a938);}};exports[_0x9b46('0x37')]=function(_0x566bad){try{if(!_[_0x9b46('0x1b')](agents[_0x566bad[_0x9b46('0x38')]])){utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x39'),_0x566bad[_0x9b46('0x5')]),_0x566bad);utils['info'](util[_0x9b46('0x4')](_0x9b46('0x3a'),_0x566bad[_0x9b46('0x5')],agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x7')],agents[_0x566bad[_0x9b46('0x38')]]['uniqueid']));agents[_0x566bad[_0x9b46('0x38')]]['transfer']=!![];agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x3b')]=_0x9b46('0x3c');agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x3d')]=_0x566bad['extension'];agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x3e')]=agents[_0x566bad[_0x9b46('0x38')]][_0x9b46('0x5')];}}catch(_0x3f6b2f){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x39'),_0x566bad[_0x9b46('0x5')]),_0x3f6b2f);}};exports[_0x9b46('0x3f')]=function(_0x2f411f){try{utils['debug'](util['format']('[%s][agents][attendedtransfer]',_0x2f411f[_0x9b46('0x40')]),_0x2f411f);if(_0x2f411f['origtransfereruniqueid']==_0x2f411f[_0x9b46('0x41')]){if(!_['isNil'](agents[_0x2f411f[_0x9b46('0x42')]])){utils['info'](util[_0x9b46('0x4')](_0x9b46('0x43'),_0x2f411f[_0x9b46('0x40')],agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x7')]));agents[_0x2f411f['secondtransfereruniqueid']][_0x9b46('0x44')]=!![];agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x3b')]=_0x9b46('0x45');agents[_0x2f411f[_0x9b46('0x42')]]['transferexten']=_0x2f411f['origtransfererexten'];agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x3e')]=_0x2f411f[_0x9b46('0x40')];}if(_0x2f411f[_0x9b46('0x46')]&&agents[_0x2f411f[_0x9b46('0x46')]]){agents[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x47')]=0x1;transfers[_0x2f411f[_0x9b46('0x46')]]=_['clone'](agents[_0x2f411f[_0x9b46('0x46')]]);transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x48')]=agents[_0x2f411f['secondtransfereruniqueid']][_0x9b46('0x48')];transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x49')]=agents[_0x2f411f[_0x9b46('0x42')]][_0x9b46('0x49')];transfers[_0x2f411f[_0x9b46('0x46')]]['agentcalledAt']=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x2d')]=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x46')]][_0x9b46('0x1f')]=0x0;transfers[_0x2f411f['transfereeuniqueid']][_0x9b46('0x47')]=0x2;}}else if(_0x2f411f['secondtransfereruniqueid']==_0x2f411f[_0x9b46('0x4a')]){if(!_['isNil'](agents[_0x2f411f[_0x9b46('0x40')]])){utils[_0x9b46('0x3')](util['format'](_0x9b46('0x43'),_0x2f411f[_0x9b46('0x40')],agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x7')]));agents[_0x2f411f[_0x9b46('0x40')]]['transfer']=!![];agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x3b')]='ATTENDED';agents[_0x2f411f['origtransfereruniqueid']][_0x9b46('0x3d')]=_0x2f411f[_0x9b46('0x4b')];agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x3e')]=_0x2f411f[_0x9b46('0x42')];}if(_0x2f411f[_0x9b46('0x4c')]&&agents[_0x2f411f[_0x9b46('0x4c')]]){agents[_0x2f411f[_0x9b46('0x4c')]]['agententerreason']=0x1;transfers[_0x2f411f['transfertargetuniqueid']]=_[_0x9b46('0x4d')](agents[_0x2f411f[_0x9b46('0x4c')]]);transfers[_0x2f411f['transfertargetuniqueid']][_0x9b46('0x48')]=agents[_0x2f411f['origtransfereruniqueid']][_0x9b46('0x48')];transfers[_0x2f411f['transfertargetuniqueid']][_0x9b46('0x49')]=agents[_0x2f411f[_0x9b46('0x40')]][_0x9b46('0x49')];transfers[_0x2f411f['transfertargetuniqueid']][_0x9b46('0x15')]=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x4c')]]['agentconnectAt']=utils[_0x9b46('0x16')]();transfers[_0x2f411f[_0x9b46('0x4c')]][_0x9b46('0x1f')]=0x0;transfers[_0x2f411f[_0x9b46('0x4c')]][_0x9b46('0x47')]=0x2;}}}catch(_0x4e8756){utils['error'](util['format']('[%s][agents][attendedtransfer]',_0x2f411f['origtransfereruniqueid']),_0x4e8756);}};exports[_0x9b46('0x4e')]=function(_0x200607){try{utils[_0x9b46('0x12')](util[_0x9b46('0x4')](_0x9b46('0x4f'),_0x200607[_0x9b46('0x5')]),_0x200607);if(agents[_0x200607[_0x9b46('0x5')]]&&agents[_0x200607[_0x9b46('0x5')]]['reason']===_0x9b46('0x1e')){if(_0x200607[_0x9b46('0x50')]==='21'){agents[_0x200607['uniqueid']][_0x9b46('0x28')]='rejected';agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x17')]=_0x9b46('0x51');}utils[_0x9b46('0x3')](util[_0x9b46('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x200607['uniqueid'],agents[_0x200607[_0x9b46('0x5')]]['membername'],agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x28')],agents[_0x200607['uniqueid']]['lastevent']));writeDB(agents[_0x200607['uniqueid']]);var _0x2978aa=unanswered['indexOf'](_0x200607['uniqueid']);if(_0x2978aa>-0x1){unanswered[_0x9b46('0x52')](_0x2978aa,0x1);}}if(transfers[_0x200607[_0x9b46('0x5')]]){transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x32')]=!![];transfers[_0x200607['uniqueid']][_0x9b46('0x35')]=utils[_0x9b46('0x16')]();transfers[_0x200607[_0x9b46('0x5')]]['talktime']=utils['diffTime'](transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x35')],transfers[_0x200607[_0x9b46('0x5')]]['agentconnectAt']);transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x28')]='agent';transfers[_0x200607[_0x9b46('0x5')]][_0x9b46('0x17')]=_0x9b46('0x36');utils[_0x9b46('0x3')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x200607[_0x9b46('0x5')],transfers[_0x200607['uniqueid']][_0x9b46('0x7')],transfers[_0x200607[_0x9b46('0x5')]]['reason'],transfers[_0x200607['uniqueid']]['lastevent']));writeDB(transfers[_0x200607[_0x9b46('0x5')]],!![]);}if(agents[_0x200607['uniqueid']]&&agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x2d')]){agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x32')]=!![];agents[_0x200607['uniqueid']][_0x9b46('0x35')]=utils[_0x9b46('0x16')]();agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x21')]=utils[_0x9b46('0x53')](agents[_0x200607['uniqueid']][_0x9b46('0x35')],agents[_0x200607['uniqueid']][_0x9b46('0x2d')]);agents[_0x200607[_0x9b46('0x5')]]['reason']=agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x44')]?_0x9b46('0x44'):_0x9b46('0x54');agents[_0x200607['uniqueid']][_0x9b46('0x17')]='complete';utils[_0x9b46('0x3')](util[_0x9b46('0x4')](_0x9b46('0x55'),_0x200607['uniqueid'],agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x7')],agents[_0x200607[_0x9b46('0x5')]][_0x9b46('0x28')],agents[_0x200607['uniqueid']][_0x9b46('0x17')]));writeDB(agents[_0x200607['uniqueid']]);}}catch(_0x420d61){utils[_0x9b46('0x1a')](util[_0x9b46('0x4')](_0x9b46('0x4f'),_0x200607[_0x9b46('0x5')]),_0x420d61);}};
\ No newline at end of file
index fd92687..35621f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc579=['[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','transfertargetchannel','origtransfereruniqueid','userfield','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','mohtime','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-phone','value','destination','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','toLowerCase','set','startsWith','appdata','cdr','lastIndexOf','includes','noop','execif','gotoif','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','blinds','uniqueid','transfereeuniqueid','info','format','queue','membername','calleridnum','lastevent','accountcode','getUserByInternal','then','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','channel','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','DOCUMENTATION','newstate','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','now','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','error','[%s][calls][newstate]','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel'];(function(_0x16eeb4,_0x552216){var _0x5ee49e=function(_0x4b814b){while(--_0x4b814b){_0x16eeb4['push'](_0x16eeb4['shift']());}};_0x5ee49e(++_0x552216);}(_0xc579,0x174));var _0x9c57=function(_0x13adab,_0x26d2d2){_0x13adab=_0x13adab-0x0;var _0x2242b2=_0xc579[_0x13adab];return _0x2242b2;};'use strict';var _=require(_0x9c57('0x0'));var util=require(_0x9c57('0x1'));var utils=require(_0x9c57('0x2'));var transfers=require(_0x9c57('0x3'));var dispositions=[_0x9c57('0x4'),_0x9c57('0x5'),_0x9c57('0x5'),_0x9c57('0x4'),_0x9c57('0x4'),'NO\x20ANSWER','ANSWERED','BUSY',_0x9c57('0x5'),'FAILED',_0x9c57('0x5')];var channels={};function writeDB(_0xa833ce){var _0x4b9933;if(transfers[_0x9c57('0x6')][_0xa833ce['uniqueid']]){_0x4b9933=_0xa833ce[_0x9c57('0x7')];_0xa833ce['uniqueid']=transfers[_0x9c57('0x6')][_0xa833ce['uniqueid']][_0x9c57('0x8')];}utils[_0x9c57('0x9')](util[_0x9c57('0xa')]('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0xa833ce['uniqueid'],_0xa833ce['channel'],_0xa833ce[_0x9c57('0xb')],_0xa833ce[_0x9c57('0xc')],_0xa833ce['interface'],_0xa833ce[_0x9c57('0xd')],_0xa833ce['connectedlinenum'],_0xa833ce[_0x9c57('0xe')]));if(_0xa833ce[_0x9c57('0xf')]){utils[_0x9c57('0x10')](_0xa833ce['accountcode'])[_0x9c57('0x11')](function(_0x112550){if(_0x112550){_0xa833ce['UserId']=_0x112550['id'];}utils[_0x9c57('0x12')](_0x9c57('0x13'),_0xa833ce);});}else{utils[_0x9c57('0x12')](_0x9c57('0x13'),_0xa833ce);}if(channels[_0xa833ce['uniqueid']]){delete channels[_0xa833ce[_0x9c57('0x7')]];}else if(_0x4b9933&&channels[_0x4b9933]){delete transfers[_0x9c57('0x6')][_0x4b9933];delete channels[_0x4b9933];}}exports[_0x9c57('0x14')]=function(_0x1d1a5c){try{utils[_0x9c57('0x15')](util[_0x9c57('0xa')](_0x9c57('0x16'),_0x1d1a5c[_0x9c57('0x7')]),_0x1d1a5c);if(_0x1d1a5c[_0x9c57('0x7')]==_0x1d1a5c[_0x9c57('0x17')]&&_0x1d1a5c[_0x9c57('0x18')]!=_0x9c57('0x19')){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x1a'),_0x1d1a5c[_0x9c57('0x7')],_0x1d1a5c[_0x9c57('0x1b')],_0x1d1a5c['exten']));channels[_0x1d1a5c[_0x9c57('0x7')]]={'uniqueid':_0x1d1a5c[_0x9c57('0x7')],'accountcode':_0x1d1a5c['accountcode'],'source':_0x1d1a5c[_0x9c57('0xd')],'destination':_0x1d1a5c[_0x9c57('0x1c')],'destinationcontext':_0x1d1a5c[_0x9c57('0x1b')],'channel':_0x1d1a5c[_0x9c57('0x18')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x9c57('0x4'),'amaflags':_0x9c57('0x1d')};}}catch(_0x345d12){utils['error'](util['format'](_0x9c57('0x16'),_0x1d1a5c[_0x9c57('0x7')]),_0x345d12);}};exports[_0x9c57('0x1e')]=function(_0x134b70){try{utils[_0x9c57('0x15')](util[_0x9c57('0xa')]('[%s][calls][newstate]',_0x134b70['uniqueid']),_0x134b70);if(!_[_0x9c57('0x1f')](channels[_0x134b70[_0x9c57('0x7')]])&&_0x134b70[_0x9c57('0x20')]==0x6){utils[_0x9c57('0x9')](util['format'](_0x9c57('0x21'),_0x134b70['uniqueid'],_0x134b70[_0x9c57('0x1b')],_0x134b70[_0x9c57('0x18')]));if(_[_0x9c57('0x1f')](channels[_0x134b70['uniqueid']][_0x9c57('0x22')])){channels[_0x134b70[_0x9c57('0x7')]][_0x9c57('0x22')]=utils[_0x9c57('0x23')]();}}else if(!_[_0x9c57('0x1f')](channels[_0x134b70['linkedid']])&&_0x134b70[_0x9c57('0x20')]==0x6&&_0x134b70['context']!=_0x9c57('0x24')){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x25'),_0x134b70[_0x9c57('0x7')],_0x134b70[_0x9c57('0x17')],_0x134b70[_0x9c57('0x1b')],_0x134b70[_0x9c57('0x18')]));channels[_0x134b70[_0x9c57('0x17')]][_0x9c57('0xf')]=_0x134b70[_0x9c57('0xf')];channels[_0x134b70[_0x9c57('0x17')]][_0x9c57('0x26')]=_0x134b70['channel'];if(_['isNil'](channels[_0x134b70[_0x9c57('0x17')]][_0x9c57('0x27')])){channels[_0x134b70[_0x9c57('0x17')]][_0x9c57('0x27')]=utils[_0x9c57('0x23')]();}channels[_0x134b70['linkedid']][_0x9c57('0x28')]=dispositions[_[_0x9c57('0x29')](_0x134b70[_0x9c57('0x20')])]||_0x9c57('0x2a');}}catch(_0x47e694){utils[_0x9c57('0x2b')](util[_0x9c57('0xa')](_0x9c57('0x2c'),_0x134b70['uniqueid']),_0x47e694);}};exports[_0x9c57('0x2d')]=function(_0x187978){try{if(!_[_0x9c57('0x1f')](channels[_0x187978['uniqueid']])){utils[_0x9c57('0x15')](util[_0x9c57('0xa')](_0x9c57('0x2e'),_0x187978[_0x9c57('0x7')]),_0x187978);if(_[_0x9c57('0x1f')](channels[_0x187978[_0x9c57('0x7')]]['callerid'])){channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x2f')]=_0x187978[_0x9c57('0x30')]+'\x20<'+_0x187978['calleridnum']+'>';}utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x31'),_0x187978[_0x9c57('0x7')],channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x2f')],_0x187978[_0x9c57('0x32')]));channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x33')]=utils[_0x9c57('0x23')]();channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x34')]=utils[_0x9c57('0x35')](channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x33')],channels[_0x187978['uniqueid']][_0x9c57('0x36')]);channels[_0x187978['uniqueid']][_0x9c57('0x37')]=channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x27')]?utils[_0x9c57('0x35')](channels[_0x187978[_0x9c57('0x7')]][_0x9c57('0x33')],channels[_0x187978['uniqueid']][_0x9c57('0x27')]):0x0;writeDB(channels[_0x187978['uniqueid']]);}}catch(_0x3f37f0){utils[_0x9c57('0x2b')](util[_0x9c57('0xa')](_0x9c57('0x2e'),_0x187978['uniqueid']),_0x3f37f0);}};exports[_0x9c57('0x38')]=function(_0x385591){try{if(!_['isNil'](channels[_0x385591[_0x9c57('0x39')]])){utils[_0x9c57('0x15')](util[_0x9c57('0xa')](_0x9c57('0x3a'),_0x385591['origtransfereruniqueid']),_0x385591);if(channels[_0x385591[_0x9c57('0x39')]][_0x9c57('0x18')]==_0x385591[_0x9c57('0x3b')]){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x3c'),_0x385591['origtransfereruniqueid'],_0x385591[_0x9c57('0x39')],_0x385591[_0x9c57('0x3d')]));channels[_0x385591[_0x9c57('0x39')]]['destinationchannel']=_0x385591[_0x9c57('0x3d')];channels[_0x385591[_0x9c57('0x39')]]['userfield']=_0x9c57('0x3e');}else if(channels[_0x385591[_0x9c57('0x39')]][_0x9c57('0x18')]=_0x385591[_0x9c57('0x3f')]){utils['info'](util[_0x9c57('0xa')](_0x9c57('0x3c'),_0x385591[_0x9c57('0x40')],_0x385591[_0x9c57('0x39')],_0x385591['origtransfererchannel']));channels[_0x385591['localtwolinkedid']][_0x9c57('0x26')]=_0x385591['origtransfererchannel'];channels[_0x385591[_0x9c57('0x39')]][_0x9c57('0x41')]='_attended';}}}catch(_0x17f411){utils['error'](util[_0x9c57('0xa')]('[%s][calls][attendedtransfer]',_0x385591[_0x9c57('0x40')]),_0x17f411);}};exports[_0x9c57('0x42')]=function(_0x2057d1){try{if(!_['isNil'](channels[_0x2057d1[_0x9c57('0x7')]])){utils[_0x9c57('0x15')](util[_0x9c57('0xa')](_0x9c57('0x43'),_0x2057d1[_0x9c57('0x7')]),_0x2057d1);channels[_0x2057d1[_0x9c57('0x7')]]['musiconholdstartAt']=utils['now']();utils['info'](util[_0x9c57('0xa')](_0x9c57('0x44'),_0x2057d1['uniqueid'],channels[_0x2057d1[_0x9c57('0x7')]][_0x9c57('0x45')]));}}catch(_0x218688){utils[_0x9c57('0x2b')](util[_0x9c57('0xa')](_0x9c57('0x43'),_0x2057d1['uniqueid']),_0x218688);}};exports['musiconholdstop']=function(_0x5ede70){try{if(!_[_0x9c57('0x1f')](channels[_0x5ede70[_0x9c57('0x7')]])){utils['debug'](util['format'](_0x9c57('0x46'),_0x5ede70[_0x9c57('0x7')]),_0x5ede70);if(!_[_0x9c57('0x1f')](channels[_0x5ede70[_0x9c57('0x7')]][_0x9c57('0x45')])){channels[_0x5ede70[_0x9c57('0x7')]]['mohtime']+=utils[_0x9c57('0x35')](utils[_0x9c57('0x23')](),channels[_0x5ede70[_0x9c57('0x7')]][_0x9c57('0x45')]);utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x47'),_0x5ede70[_0x9c57('0x7')],channels[_0x5ede70['uniqueid']][_0x9c57('0x48')]));delete channels[_0x5ede70[_0x9c57('0x7')]][_0x9c57('0x45')];}}}catch(_0x556c79){utils[_0x9c57('0x2b')](util[_0x9c57('0xa')]('[%s][calls][musiconholdstop]',_0x5ede70['uniqueid']),_0x556c79);}};exports[_0x9c57('0x49')]=function(_0x2a9cb5){try{if(!_[_0x9c57('0x1f')](channels[_0x2a9cb5[_0x9c57('0x7')]])){utils[_0x9c57('0x15')](util[_0x9c57('0xa')](_0x9c57('0x4a'),_0x2a9cb5[_0x9c57('0x7')]),_0x2a9cb5);if(!_[_0x9c57('0x1f')](_0x2a9cb5[_0x9c57('0x4b')][_0x9c57('0x4c')])){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x4d'),_0x2a9cb5[_0x9c57('0x7')],_0x2a9cb5['value']));channels[_0x2a9cb5[_0x9c57('0x7')]]['source']=_0x2a9cb5['value'];}if(!_[_0x9c57('0x1f')](_0x2a9cb5[_0x9c57('0x4b')][_0x9c57('0x4e')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x2a9cb5[_0x9c57('0x7')],_0x2a9cb5[_0x9c57('0x4f')]));channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x50')]=_0x2a9cb5[_0x9c57('0x4f')];channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x2f')]='\x22'+_0x2a9cb5['value']+'\x22\x20<'+_0x2a9cb5[_0x9c57('0x4f')]+'>';}if(!_[_0x9c57('0x1f')](_0x2a9cb5[_0x9c57('0x4b')][_0x9c57('0x51')])||!_[_0x9c57('0x1f')](_0x2a9cb5['variable'][_0x9c57('0x52')])){utils[_0x9c57('0x9')](util['format'](_0x9c57('0x53'),_0x2a9cb5[_0x9c57('0x7')],!_[_0x9c57('0x1f')](_0x2a9cb5['variable']['xmd-callerid-preview'])?_0x9c57('0x51'):_0x9c57('0x52'),_0x2a9cb5[_0x9c57('0x4f')]));channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x2f')]=_0x2a9cb5[_0x9c57('0x4f')];}if(!_[_0x9c57('0x1f')](_0x2a9cb5[_0x9c57('0x4b')][_0x9c57('0x54')])||!_[_0x9c57('0x1f')](_0x2a9cb5['variable'][_0x9c57('0x55')])){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x53'),_0x2a9cb5[_0x9c57('0x7')],!_[_0x9c57('0x1f')](_0x2a9cb5[_0x9c57('0x4b')]['xmd-queue'])?_0x9c57('0x54'):'xmcs-queue',_0x2a9cb5['value']));channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x56')]='Queue';channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x57')]=_0x2a9cb5[_0x9c57('0x4f')];channels[_0x2a9cb5[_0x9c57('0x7')]]['queue']=!![];}if(!_['isNil'](_0x2a9cb5[_0x9c57('0x4b')][_0x9c57('0x58')])){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x59'),_0x2a9cb5[_0x9c57('0x7')],_0x2a9cb5['value']));channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x5a')]=_0x2a9cb5[_0x9c57('0x4f')];}if(!_[_0x9c57('0x1f')](_0x2a9cb5[_0x9c57('0x4b')]['xmd-cdrtype'])){utils[_0x9c57('0x9')](util[_0x9c57('0xa')]('[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s',_0x2a9cb5['uniqueid'],_0x2a9cb5[_0x9c57('0x4f')]));channels[_0x2a9cb5[_0x9c57('0x7')]]['type']=_0x2a9cb5['value'];}if(!_['isNil'](_0x2a9cb5[_0x9c57('0x4b')]['outboundrouteid'])){utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x5b'),_0x2a9cb5[_0x9c57('0x7')],_0x2a9cb5['value']));channels[_0x2a9cb5['uniqueid']][_0x9c57('0x5c')]=_0x2a9cb5[_0x9c57('0x4f')];}if(!_['isNil'](_0x2a9cb5[_0x9c57('0x4b')][_0x9c57('0x5d')])){utils['info'](util['format']('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x2a9cb5[_0x9c57('0x7')],_0x2a9cb5[_0x9c57('0x4f')]));channels[_0x2a9cb5[_0x9c57('0x7')]][_0x9c57('0x5d')]=_0x2a9cb5[_0x9c57('0x4f')];}}}catch(_0x507068){utils[_0x9c57('0x2b')](util['format'](_0x9c57('0x4a'),_0x2a9cb5[_0x9c57('0x7')]),_0x507068);}};exports[_0x9c57('0x5e')]=function(_0x3555bb){try{if(!_['isNil'](channels[_0x3555bb[_0x9c57('0x7')]])){utils[_0x9c57('0x15')](util[_0x9c57('0xa')](_0x9c57('0x5f'),_0x3555bb['uniqueid']),_0x3555bb);utils[_0x9c57('0x9')](util[_0x9c57('0xa')](_0x9c57('0x60'),_0x3555bb[_0x9c57('0x7')],_0x3555bb['application'],_0x3555bb['appdata']));if(_0x3555bb[_0x9c57('0x61')][_0x9c57('0x62')]()==_0x9c57('0x63')&&_[_0x9c57('0x64')](_0x3555bb[_0x9c57('0x65')][_0x9c57('0x62')](),_0x9c57('0x66'))){var _0x103587=_0x3555bb[_0x9c57('0x65')]['split']('=');var _0x494e61=_0x103587[0x0]['substring'](_0x103587[0x0]['lastIndexOf']('(')+0x1,_0x103587[0x0][_0x9c57('0x67')](')'));var _0x174c1c=_0x103587[0x1];channels[_0x3555bb[_0x9c57('0x7')]][_0x494e61]=_0x174c1c;}if(!_[_0x9c57('0x68')]([_0x9c57('0x2d'),_0x9c57('0x69'),_0x9c57('0x6a'),_0x9c57('0x63'),_0x9c57('0x6b')],_0x3555bb['application']['toLowerCase']())){channels[_0x3555bb[_0x9c57('0x7')]][_0x9c57('0x56')]=_0x3555bb[_0x9c57('0x61')];channels[_0x3555bb[_0x9c57('0x7')]][_0x9c57('0x57')]=_0x3555bb[_0x9c57('0x65')];}}}catch(_0x392418){utils['error'](util[_0x9c57('0xa')]('[%s][calls][newexten]',_0x3555bb[_0x9c57('0x7')]),_0x392418);}};
\ No newline at end of file
+var _0x1c0a=['starttime','billableseconds','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','mohtime','[%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','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr','lastIndexOf','noop','execif','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','blinds','uniqueid','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','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','now','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','error','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime'];(function(_0x4ae8f8,_0x40a58e){var _0x24c8c6=function(_0x2457da){while(--_0x2457da){_0x4ae8f8['push'](_0x4ae8f8['shift']());}};_0x24c8c6(++_0x40a58e);}(_0x1c0a,0x17c));var _0xa1c0=function(_0x47be0c,_0x44a438){_0x47be0c=_0x47be0c-0x0;var _0x40bf94=_0x1c0a[_0x47be0c];return _0x40bf94;};'use strict';var _=require(_0xa1c0('0x0'));var util=require(_0xa1c0('0x1'));var utils=require(_0xa1c0('0x2'));var transfers=require('./transfers.controller');var dispositions=[_0xa1c0('0x3'),_0xa1c0('0x4'),_0xa1c0('0x4'),_0xa1c0('0x3'),_0xa1c0('0x3'),'NO\x20ANSWER',_0xa1c0('0x5'),'BUSY','FAILED',_0xa1c0('0x4'),_0xa1c0('0x4')];var channels={};function writeDB(_0x1af196){var _0xe12be5;if(transfers[_0xa1c0('0x6')][_0x1af196[_0xa1c0('0x7')]]){_0xe12be5=_0x1af196[_0xa1c0('0x7')];_0x1af196[_0xa1c0('0x7')]=transfers[_0xa1c0('0x6')][_0x1af196['uniqueid']][_0xa1c0('0x8')];}utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0xb'),_0x1af196[_0xa1c0('0x7')],_0x1af196[_0xa1c0('0xc')],_0x1af196[_0xa1c0('0xd')],_0x1af196[_0xa1c0('0xe')],_0x1af196[_0xa1c0('0xf')],_0x1af196[_0xa1c0('0x10')],_0x1af196[_0xa1c0('0x11')],_0x1af196['lastevent']));if(_0x1af196[_0xa1c0('0x12')]){utils[_0xa1c0('0x13')](_0x1af196[_0xa1c0('0x12')])[_0xa1c0('0x14')](function(_0x36e888){if(_0x36e888){_0x1af196[_0xa1c0('0x15')]=_0x36e888['id'];}utils[_0xa1c0('0x16')](_0xa1c0('0x17'),_0x1af196);});}else{utils[_0xa1c0('0x16')](_0xa1c0('0x17'),_0x1af196);}if(channels[_0x1af196[_0xa1c0('0x7')]]){delete channels[_0x1af196['uniqueid']];}else if(_0xe12be5&&channels[_0xe12be5]){delete transfers[_0xa1c0('0x6')][_0xe12be5];delete channels[_0xe12be5];}}exports[_0xa1c0('0x18')]=function(_0x16cd22){try{utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x1a'),_0x16cd22[_0xa1c0('0x7')]),_0x16cd22);if(_0x16cd22[_0xa1c0('0x7')]==_0x16cd22[_0xa1c0('0x1b')]&&_0x16cd22[_0xa1c0('0xc')]!=_0xa1c0('0x1c')){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x1d'),_0x16cd22[_0xa1c0('0x7')],_0x16cd22[_0xa1c0('0x1e')],_0x16cd22[_0xa1c0('0x1f')]));channels[_0x16cd22[_0xa1c0('0x7')]]={'uniqueid':_0x16cd22[_0xa1c0('0x7')],'accountcode':_0x16cd22[_0xa1c0('0x12')],'source':_0x16cd22[_0xa1c0('0x10')],'destination':_0x16cd22[_0xa1c0('0x1f')],'destinationcontext':_0x16cd22['context'],'channel':_0x16cd22[_0xa1c0('0xc')],'starttime':utils[_0xa1c0('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xa1c0('0x3'),'amaflags':_0xa1c0('0x21')};}}catch(_0x50df47){utils['error'](util[_0xa1c0('0xa')](_0xa1c0('0x1a'),_0x16cd22[_0xa1c0('0x7')]),_0x50df47);}};exports[_0xa1c0('0x22')]=function(_0x5c1d22){try{utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x23'),_0x5c1d22[_0xa1c0('0x7')]),_0x5c1d22);if(!_[_0xa1c0('0x24')](channels[_0x5c1d22[_0xa1c0('0x7')]])&&_0x5c1d22[_0xa1c0('0x25')]==0x6){utils['info'](util[_0xa1c0('0xa')](_0xa1c0('0x26'),_0x5c1d22['uniqueid'],_0x5c1d22[_0xa1c0('0x1e')],_0x5c1d22[_0xa1c0('0xc')]));if(_[_0xa1c0('0x24')](channels[_0x5c1d22[_0xa1c0('0x7')]][_0xa1c0('0x27')])){channels[_0x5c1d22[_0xa1c0('0x7')]]['systemanswertime']=utils['now']();}}else if(!_[_0xa1c0('0x24')](channels[_0x5c1d22['linkedid']])&&_0x5c1d22[_0xa1c0('0x25')]==0x6&&_0x5c1d22[_0xa1c0('0x1e')]!='transfer'){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x28'),_0x5c1d22['uniqueid'],_0x5c1d22[_0xa1c0('0x1b')],_0x5c1d22[_0xa1c0('0x1e')],_0x5c1d22['channel']));channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x12')]=_0x5c1d22[_0xa1c0('0x12')];channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x29')]=_0x5c1d22[_0xa1c0('0xc')];if(_[_0xa1c0('0x24')](channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x2a')])){channels[_0x5c1d22[_0xa1c0('0x1b')]]['answertime']=utils[_0xa1c0('0x20')]();}channels[_0x5c1d22[_0xa1c0('0x1b')]][_0xa1c0('0x2b')]=dispositions[_[_0xa1c0('0x2c')](_0x5c1d22['channelstate'])]||_0xa1c0('0x5');}}catch(_0x4a265c){utils[_0xa1c0('0x2d')](util['format']('[%s][calls][newstate]',_0x5c1d22[_0xa1c0('0x7')]),_0x4a265c);}};exports[_0xa1c0('0x2e')]=function(_0x1344cb){try{if(!_[_0xa1c0('0x24')](channels[_0x1344cb['uniqueid']])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')]('[%s][calls][hangup]',_0x1344cb['uniqueid']),_0x1344cb);if(_[_0xa1c0('0x24')](channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2f')])){channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2f')]=_0x1344cb[_0xa1c0('0x30')]+'\x20<'+_0x1344cb[_0xa1c0('0x10')]+'>';}utils['info'](util[_0xa1c0('0xa')](_0xa1c0('0x31'),_0x1344cb[_0xa1c0('0x7')],channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2f')],_0x1344cb[_0xa1c0('0x32')]));channels[_0x1344cb[_0xa1c0('0x7')]]['endtime']=utils['now']();channels[_0x1344cb[_0xa1c0('0x7')]]['duration']=utils[_0xa1c0('0x33')](channels[_0x1344cb[_0xa1c0('0x7')]]['endtime'],channels[_0x1344cb['uniqueid']][_0xa1c0('0x34')]);channels[_0x1344cb['uniqueid']][_0xa1c0('0x35')]=channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2a')]?utils[_0xa1c0('0x33')](channels[_0x1344cb['uniqueid']]['endtime'],channels[_0x1344cb[_0xa1c0('0x7')]][_0xa1c0('0x2a')]):0x0;writeDB(channels[_0x1344cb[_0xa1c0('0x7')]]);}}catch(_0x1d29f8){utils['error'](util[_0xa1c0('0xa')](_0xa1c0('0x36'),_0x1344cb[_0xa1c0('0x7')]),_0x1d29f8);}};exports[_0xa1c0('0x37')]=function(_0x113919){try{if(!_[_0xa1c0('0x24')](channels[_0x113919[_0xa1c0('0x38')]])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x39'),_0x113919[_0xa1c0('0x3a')]),_0x113919);if(channels[_0x113919['localtwolinkedid']][_0xa1c0('0xc')]==_0x113919['transfereechannel']){utils['info'](util[_0xa1c0('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x113919['origtransfereruniqueid'],_0x113919['localtwolinkedid'],_0x113919[_0xa1c0('0x3b')]));channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0x29')]=_0x113919['secondtransfererchannel'];channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0x3c')]=_0xa1c0('0x3d');}else if(channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0xc')]=_0x113919[_0xa1c0('0x3e')]){utils['info'](util[_0xa1c0('0xa')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x113919[_0xa1c0('0x3a')],_0x113919['localtwolinkedid'],_0x113919['origtransfererchannel']));channels[_0x113919[_0xa1c0('0x38')]][_0xa1c0('0x29')]=_0x113919[_0xa1c0('0x3f')];channels[_0x113919[_0xa1c0('0x38')]]['userfield']=_0xa1c0('0x3d');}}}catch(_0x471dea){utils['error'](util[_0xa1c0('0xa')](_0xa1c0('0x39'),_0x113919[_0xa1c0('0x3a')]),_0x471dea);}};exports[_0xa1c0('0x40')]=function(_0x184257){try{if(!_['isNil'](channels[_0x184257[_0xa1c0('0x7')]])){utils[_0xa1c0('0x19')](util['format'](_0xa1c0('0x41'),_0x184257[_0xa1c0('0x7')]),_0x184257);channels[_0x184257[_0xa1c0('0x7')]]['musiconholdstartAt']=utils['now']();utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x42'),_0x184257[_0xa1c0('0x7')],channels[_0x184257[_0xa1c0('0x7')]][_0xa1c0('0x43')]));}}catch(_0x2a2686){utils[_0xa1c0('0x2d')](util[_0xa1c0('0xa')](_0xa1c0('0x41'),_0x184257[_0xa1c0('0x7')]),_0x2a2686);}};exports[_0xa1c0('0x44')]=function(_0x4c8f43){try{if(!_[_0xa1c0('0x24')](channels[_0x4c8f43[_0xa1c0('0x7')]])){utils['debug'](util[_0xa1c0('0xa')]('[%s][calls][musiconholdstop]',_0x4c8f43['uniqueid']),_0x4c8f43);if(!_[_0xa1c0('0x24')](channels[_0x4c8f43[_0xa1c0('0x7')]][_0xa1c0('0x43')])){channels[_0x4c8f43[_0xa1c0('0x7')]]['mohtime']+=utils[_0xa1c0('0x33')](utils['now'](),channels[_0x4c8f43[_0xa1c0('0x7')]]['musiconholdstartAt']);utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x4c8f43[_0xa1c0('0x7')],channels[_0x4c8f43['uniqueid']][_0xa1c0('0x45')]));delete channels[_0x4c8f43[_0xa1c0('0x7')]][_0xa1c0('0x43')];}}}catch(_0x2c3277){utils[_0xa1c0('0x2d')](util[_0xa1c0('0xa')]('[%s][calls][musiconholdstop]',_0x4c8f43[_0xa1c0('0x7')]),_0x2c3277);}};exports['varset']=function(_0x12b209){try{if(!_['isNil'](channels[_0x12b209[_0xa1c0('0x7')]])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x46'),_0x12b209['uniqueid']),_0x12b209);if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x48')])){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x49'),_0x12b209[_0xa1c0('0x7')],_0x12b209['value']));channels[_0x12b209['uniqueid']]['source']=_0x12b209[_0xa1c0('0x4a')];}if(!_['isNil'](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4b')])){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x4c'),_0x12b209[_0xa1c0('0x7')],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x4d')]=_0x12b209['value'];channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x2f')]='\x22'+_0x12b209['value']+'\x22\x20<'+_0x12b209[_0xa1c0('0x4a')]+'>';}if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4e')])||!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4f')])){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x50'),_0x12b209[_0xa1c0('0x7')],!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x4e')])?_0xa1c0('0x4e'):_0xa1c0('0x4f'),_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209['uniqueid']][_0xa1c0('0x2f')]=_0x12b209['value'];}if(!_['isNil'](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x51')])||!_['isNil'](_0x12b209[_0xa1c0('0x47')]['xmcs-queue'])){utils['info'](util[_0xa1c0('0xa')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x12b209[_0xa1c0('0x7')],!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x51')])?_0xa1c0('0x51'):_0xa1c0('0x52'),_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x53')]=_0xa1c0('0x54');channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x55')]=_0x12b209[_0xa1c0('0x4a')];channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0xd')]=!![];}if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x56')])){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x57'),_0x12b209[_0xa1c0('0x7')],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x58')]=_0x12b209['value'];}if(!_[_0xa1c0('0x24')](_0x12b209[_0xa1c0('0x47')][_0xa1c0('0x59')])){utils[_0xa1c0('0x9')](util['format'](_0xa1c0('0x5a'),_0x12b209['uniqueid'],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]]['type']=_0x12b209[_0xa1c0('0x4a')];}if(!_[_0xa1c0('0x24')](_0x12b209['variable'][_0xa1c0('0x5b')])){utils[_0xa1c0('0x9')](util[_0xa1c0('0xa')](_0xa1c0('0x5c'),_0x12b209[_0xa1c0('0x7')],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x5d')]=_0x12b209[_0xa1c0('0x4a')];}if(!_[_0xa1c0('0x24')](_0x12b209['variable']['sipcallid'])){utils['info'](util[_0xa1c0('0xa')](_0xa1c0('0x5e'),_0x12b209['uniqueid'],_0x12b209[_0xa1c0('0x4a')]));channels[_0x12b209[_0xa1c0('0x7')]][_0xa1c0('0x5f')]=_0x12b209['value'];}}}catch(_0x36ac80){utils[_0xa1c0('0x2d')](util['format'](_0xa1c0('0x46'),_0x12b209[_0xa1c0('0x7')]),_0x36ac80);}};exports[_0xa1c0('0x60')]=function(_0x1e7839){try{if(!_['isNil'](channels[_0x1e7839[_0xa1c0('0x7')]])){utils[_0xa1c0('0x19')](util[_0xa1c0('0xa')](_0xa1c0('0x61'),_0x1e7839[_0xa1c0('0x7')]),_0x1e7839);utils['info'](util['format'](_0xa1c0('0x62'),_0x1e7839[_0xa1c0('0x7')],_0x1e7839[_0xa1c0('0x63')],_0x1e7839[_0xa1c0('0x64')]));if(_0x1e7839[_0xa1c0('0x63')][_0xa1c0('0x65')]()==_0xa1c0('0x66')&&_['startsWith'](_0x1e7839[_0xa1c0('0x64')][_0xa1c0('0x65')](),_0xa1c0('0x67'))){var _0x4a47e4=_0x1e7839['appdata']['split']('=');var _0x7ae9c9=_0x4a47e4[0x0]['substring'](_0x4a47e4[0x0][_0xa1c0('0x68')]('(')+0x1,_0x4a47e4[0x0][_0xa1c0('0x68')](')'));var _0x9617f7=_0x4a47e4[0x1];channels[_0x1e7839[_0xa1c0('0x7')]][_0x7ae9c9]=_0x9617f7;}if(!_['includes']([_0xa1c0('0x2e'),_0xa1c0('0x69'),_0xa1c0('0x6a'),_0xa1c0('0x66'),_0xa1c0('0x6b')],_0x1e7839['application']['toLowerCase']())){channels[_0x1e7839[_0xa1c0('0x7')]][_0xa1c0('0x53')]=_0x1e7839[_0xa1c0('0x63')];channels[_0x1e7839['uniqueid']][_0xa1c0('0x55')]=_0x1e7839[_0xa1c0('0x64')];}}}catch(_0x87de0b){utils[_0xa1c0('0x2d')](util['format'](_0xa1c0('0x61'),_0x1e7839[_0xa1c0('0x7')]),_0x87de0b);}};
\ No newline at end of file
index e61d3cb..2b9fe23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaccc=['info','[core]\x20connected','shutdown','fullybooted','[core]\x20fullybooted','error','close','[core]\x20close','managerevent','./utils','connect'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xaccc,0xda));var _0xcacc=function(_0x87b0ff,_0x314389){_0x87b0ff=_0x87b0ff-0x0;var _0x3bc0b2=_0xaccc[_0x87b0ff];return _0x3bc0b2;};'use strict';var utils=require(_0xcacc('0x0'));exports[_0xcacc('0x1')]=function(){utils[_0xcacc('0x2')](_0xcacc('0x3'));};exports[_0xcacc('0x4')]=function(){utils[_0xcacc('0x2')]('[core]\x20shutdown');};exports[_0xcacc('0x5')]=function(){utils[_0xcacc('0x2')](_0xcacc('0x6'));};exports[_0xcacc('0x7')]=function(_0x5b38c0){utils[_0xcacc('0x7')]('[core]\x20error',_0x5b38c0);};exports[_0xcacc('0x8')]=function(){utils[_0xcacc('0x2')](_0xcacc('0x9'));};exports[_0xcacc('0xa')]=function(_0x4401bf){};
\ No newline at end of file
+var _0xb235=['connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','[core]\x20close','managerevent','./utils'];(function(_0x2b1de3,_0x5296af){var _0x312361=function(_0x46deef){while(--_0x46deef){_0x2b1de3['push'](_0x2b1de3['shift']());}};_0x312361(++_0x5296af);}(_0xb235,0x6b));var _0x5b23=function(_0x27380a,_0x11b4db){_0x27380a=_0x27380a-0x0;var _0x49557d=_0xb235[_0x27380a];return _0x49557d;};'use strict';var utils=require(_0x5b23('0x0'));exports[_0x5b23('0x1')]=function(){utils[_0x5b23('0x2')](_0x5b23('0x3'));};exports[_0x5b23('0x4')]=function(){utils[_0x5b23('0x2')](_0x5b23('0x5'));};exports[_0x5b23('0x6')]=function(){utils[_0x5b23('0x2')](_0x5b23('0x7'));};exports[_0x5b23('0x8')]=function(_0x4196e0){utils[_0x5b23('0x8')](_0x5b23('0x9'),_0x4196e0);};exports['close']=function(){utils['info'](_0x5b23('0xa'));};exports[_0x5b23('0xb')]=function(_0x3550a0){};
\ No newline at end of file
index 702ad68..10304a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b6=['[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','cause-txt','duration','diffTime','endtime','holdtime','billableseconds','lodash','util','info','format','uniqueid','channel','calleridnum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','appdata','application','toLowerCase','startsWith','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','[%s][dials][dialbegin]','assign','starttime','now','lastevent','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect'];(function(_0x48fb10,_0xa50a89){var _0x534251=function(_0xcdc19e){while(--_0xcdc19e){_0x48fb10['push'](_0x48fb10['shift']());}};_0x534251(++_0xa50a89);}(_0xd8b6,0xf4));var _0x6d8b=function(_0x345344,_0x18a281){_0x345344=_0x345344-0x0;var _0x39937e=_0xd8b6[_0x345344];return _0x39937e;};'use strict';var _=require(_0x6d8b('0x0'));var util=require(_0x6d8b('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x363f43){utils[_0x6d8b('0x2')](util[_0x6d8b('0x3')]('[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s',_0x363f43[_0x6d8b('0x4')],_0x363f43[_0x6d8b('0x5')],_0x363f43['dialstring'],_0x363f43[_0x6d8b('0x6')],_0x363f43['connectedlinenum'],_0x363f43[_0x6d8b('0x7')]));utils[_0x6d8b('0x8')](_0x6d8b('0x9'),_0x363f43);delete dials[_0x363f43[_0x6d8b('0x4')]];}exports[_0x6d8b('0xa')]=function(_0x5a731f){try{utils[_0x6d8b('0xb')](util[_0x6d8b('0x3')](_0x6d8b('0xc'),_0x5a731f['uniqueid']),_0x5a731f);utils[_0x6d8b('0x2')](util[_0x6d8b('0x3')]('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x5a731f[_0x6d8b('0x4')],_0x5a731f['application'],_0x5a731f[_0x6d8b('0xd')]));if(_0x5a731f[_0x6d8b('0xe')][_0x6d8b('0xf')]()=='set'&&_[_0x6d8b('0x10')](_0x5a731f[_0x6d8b('0xd')][_0x6d8b('0xf')](),_0x6d8b('0x11'))){var _0x2443f3=_0x5a731f[_0x6d8b('0xd')][_0x6d8b('0x12')]('=');dials[_0x5a731f[_0x6d8b('0x4')]]={'routeId':_0x2443f3[0x1]};}}catch(_0x11d80e){utils[_0x6d8b('0x13')](util[_0x6d8b('0x3')](_0x6d8b('0xc'),_0x5a731f[_0x6d8b('0x4')]),_0x11d80e);}};exports[_0x6d8b('0x14')]=function(_0x394986){try{utils[_0x6d8b('0xb')](util[_0x6d8b('0x3')](_0x6d8b('0x15'),_0x394986[_0x6d8b('0x4')]),_0x394986);if(!_[_0x6d8b('0x16')](_0x394986[_0x6d8b('0x17')][_0x6d8b('0x18')])){utils[_0x6d8b('0x2')](util['format'](_0x6d8b('0x19'),_0x394986[_0x6d8b('0x4')],_0x394986[_0x6d8b('0x1a')]));dials[_0x394986['uniqueid']]={'routeId':_0x394986[_0x6d8b('0x1a')]};}}catch(_0x28371a){utils[_0x6d8b('0x13')](util['format'](_0x6d8b('0x15'),_0x394986['uniqueid']),_0x28371a);}};exports['dialbegin']=function(_0x30c51a){try{if(!_[_0x6d8b('0x16')](dials[_0x30c51a[_0x6d8b('0x4')]])){utils[_0x6d8b('0xb')](util[_0x6d8b('0x3')](_0x6d8b('0x1b'),_0x30c51a[_0x6d8b('0x4')]),_0x30c51a);dials[_0x30c51a[_0x6d8b('0x4')]]=_[_0x6d8b('0x1c')](dials[_0x30c51a[_0x6d8b('0x4')]],_0x30c51a);dials[_0x30c51a[_0x6d8b('0x4')]][_0x6d8b('0x1d')]=utils[_0x6d8b('0x1e')]();dials[_0x30c51a[_0x6d8b('0x4')]][_0x6d8b('0x1f')]='called';utils['info'](util[_0x6d8b('0x3')](_0x6d8b('0x20'),_0x30c51a[_0x6d8b('0x4')],dials[_0x30c51a['uniqueid']]['starttime']));}}catch(_0x429cf0){utils['error'](util[_0x6d8b('0x3')](_0x6d8b('0x1b'),_0x30c51a[_0x6d8b('0x4')]),_0x429cf0);}};exports[_0x6d8b('0x21')]=function(_0x554c48){try{if(!_[_0x6d8b('0x16')](dials[_0x554c48[_0x6d8b('0x4')]])){utils[_0x6d8b('0xb')](util['format'](_0x6d8b('0x22'),_0x554c48['uniqueid']),_0x554c48);dials[_0x554c48[_0x6d8b('0x4')]][_0x6d8b('0x7')]=_0x554c48[_0x6d8b('0x7')];if(_0x554c48[_0x6d8b('0x7')]==_0x6d8b('0x23')){dials[_0x554c48[_0x6d8b('0x4')]]=_[_0x6d8b('0x1c')](dials[_0x554c48['uniqueid']],_0x554c48);dials[_0x554c48[_0x6d8b('0x4')]][_0x6d8b('0x24')]=utils[_0x6d8b('0x1e')]();dials[_0x554c48[_0x6d8b('0x4')]]['lastevent']='connect';utils[_0x6d8b('0x2')](util['format'](_0x6d8b('0x25'),_0x554c48[_0x6d8b('0x4')],_0x554c48[_0x6d8b('0x7')],dials[_0x554c48['uniqueid']][_0x6d8b('0x24')]));}else{utils[_0x6d8b('0x2')](util[_0x6d8b('0x3')](_0x6d8b('0x26'),_0x554c48[_0x6d8b('0x4')],_0x554c48[_0x6d8b('0x7')]));}}}catch(_0x4384ac){utils['error'](util[_0x6d8b('0x3')](_0x6d8b('0x22'),_0x554c48[_0x6d8b('0x4')]),_0x4384ac);}};exports[_0x6d8b('0x27')]=function(_0x55301c){try{if(!_['isNil'](dials[_0x55301c[_0x6d8b('0x4')]])){utils[_0x6d8b('0xb')](util[_0x6d8b('0x3')]('[%s][dials][hangup]',_0x55301c[_0x6d8b('0x4')]),_0x55301c);utils[_0x6d8b('0x2')](util[_0x6d8b('0x3')](_0x6d8b('0x28'),_0x55301c['uniqueid'],_0x55301c['calleridnum'],_0x55301c['calleridname'],_0x55301c[_0x6d8b('0x29')]));dials[_0x55301c[_0x6d8b('0x4')]]=_[_0x6d8b('0x1c')](dials[_0x55301c[_0x6d8b('0x4')]],{'endtime':utils[_0x6d8b('0x1e')](),'lastevent':'complete'});dials[_0x55301c[_0x6d8b('0x4')]][_0x6d8b('0x2a')]=utils[_0x6d8b('0x2b')](dials[_0x55301c[_0x6d8b('0x4')]][_0x6d8b('0x2c')],dials[_0x55301c[_0x6d8b('0x4')]]['starttime']);dials[_0x55301c[_0x6d8b('0x4')]][_0x6d8b('0x2d')]=utils[_0x6d8b('0x2b')](dials[_0x55301c[_0x6d8b('0x4')]]['answertime']||dials[_0x55301c[_0x6d8b('0x4')]][_0x6d8b('0x2c')],dials[_0x55301c['uniqueid']]['starttime']);dials[_0x55301c['uniqueid']][_0x6d8b('0x2e')]=dials[_0x55301c[_0x6d8b('0x4')]][_0x6d8b('0x24')]?utils['diffTime'](dials[_0x55301c['uniqueid']][_0x6d8b('0x2c')],dials[_0x55301c[_0x6d8b('0x4')]][_0x6d8b('0x24')]):0x0;writeDB(dials[_0x55301c[_0x6d8b('0x4')]]);}}catch(_0x47dd19){utils[_0x6d8b('0x13')](util[_0x6d8b('0x3')]('[%s][dials][hangup]',_0x55301c[_0x6d8b('0x4')]),_0x47dd19);}};
\ No newline at end of file
+var _0xd62d=['./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','newexten','debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','[%s][dials][dialbegin]','starttime','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','[%s][dials][dialend]','ANSWER','answertime','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','calleridname','cause-txt','assign','now','complete','duration','diffTime','endtime','holdtime','billableseconds','lodash','util'];(function(_0x438ad8,_0x56e11b){var _0x1742b2=function(_0x4435c5){while(--_0x4435c5){_0x438ad8['push'](_0x438ad8['shift']());}};_0x1742b2(++_0x56e11b);}(_0xd62d,0x186));var _0xdd62=function(_0x337bac,_0x17cc71){_0x337bac=_0x337bac-0x0;var _0x19601e=_0xd62d[_0x337bac];return _0x19601e;};'use strict';var _=require(_0xdd62('0x0'));var util=require(_0xdd62('0x1'));var utils=require(_0xdd62('0x2'));var dials={};function writeDB(_0x320a2f){utils[_0xdd62('0x3')](util[_0xdd62('0x4')](_0xdd62('0x5'),_0x320a2f[_0xdd62('0x6')],_0x320a2f[_0xdd62('0x7')],_0x320a2f[_0xdd62('0x8')],_0x320a2f[_0xdd62('0x9')],_0x320a2f[_0xdd62('0xa')],_0x320a2f[_0xdd62('0xb')]));utils[_0xdd62('0xc')](_0xdd62('0xd'),_0x320a2f);delete dials[_0x320a2f[_0xdd62('0x6')]];}exports[_0xdd62('0xe')]=function(_0x6d91ad){try{utils[_0xdd62('0xf')](util['format'](_0xdd62('0x10'),_0x6d91ad['uniqueid']),_0x6d91ad);utils[_0xdd62('0x3')](util['format'](_0xdd62('0x11'),_0x6d91ad['uniqueid'],_0x6d91ad[_0xdd62('0x12')],_0x6d91ad[_0xdd62('0x13')]));if(_0x6d91ad['application'][_0xdd62('0x14')]()==_0xdd62('0x15')&&_['startsWith'](_0x6d91ad[_0xdd62('0x13')]['toLowerCase'](),_0xdd62('0x16'))){var _0x584bac=_0x6d91ad['appdata'][_0xdd62('0x17')]('=');dials[_0x6d91ad[_0xdd62('0x6')]]={'routeId':_0x584bac[0x1]};}}catch(_0x28f3c4){utils[_0xdd62('0x18')](util[_0xdd62('0x4')]('[%s][dials][newexten]',_0x6d91ad[_0xdd62('0x6')]),_0x28f3c4);}};exports[_0xdd62('0x19')]=function(_0x531ca0){try{utils[_0xdd62('0xf')](util['format'](_0xdd62('0x1a'),_0x531ca0['uniqueid']),_0x531ca0);if(!_[_0xdd62('0x1b')](_0x531ca0[_0xdd62('0x1c')][_0xdd62('0x1d')])){utils['info'](util[_0xdd62('0x4')](_0xdd62('0x1e'),_0x531ca0['uniqueid'],_0x531ca0[_0xdd62('0x1f')]));dials[_0x531ca0[_0xdd62('0x6')]]={'routeId':_0x531ca0['value']};}}catch(_0x3433f7){utils[_0xdd62('0x18')](util[_0xdd62('0x4')](_0xdd62('0x1a'),_0x531ca0['uniqueid']),_0x3433f7);}};exports[_0xdd62('0x20')]=function(_0x146e91){try{if(!_[_0xdd62('0x1b')](dials[_0x146e91[_0xdd62('0x6')]])){utils[_0xdd62('0xf')](util[_0xdd62('0x4')](_0xdd62('0x21'),_0x146e91[_0xdd62('0x6')]),_0x146e91);dials[_0x146e91['uniqueid']]=_['assign'](dials[_0x146e91[_0xdd62('0x6')]],_0x146e91);dials[_0x146e91[_0xdd62('0x6')]][_0xdd62('0x22')]=utils['now']();dials[_0x146e91['uniqueid']][_0xdd62('0x23')]=_0xdd62('0x24');utils[_0xdd62('0x3')](util['format'](_0xdd62('0x25'),_0x146e91[_0xdd62('0x6')],dials[_0x146e91[_0xdd62('0x6')]][_0xdd62('0x22')]));}}catch(_0x2f6599){utils[_0xdd62('0x18')](util['format'](_0xdd62('0x21'),_0x146e91['uniqueid']),_0x2f6599);}};exports[_0xdd62('0x26')]=function(_0x1034d9){try{if(!_[_0xdd62('0x1b')](dials[_0x1034d9[_0xdd62('0x6')]])){utils[_0xdd62('0xf')](util[_0xdd62('0x4')](_0xdd62('0x27'),_0x1034d9[_0xdd62('0x6')]),_0x1034d9);dials[_0x1034d9['uniqueid']]['dialstatus']=_0x1034d9[_0xdd62('0xb')];if(_0x1034d9['dialstatus']==_0xdd62('0x28')){dials[_0x1034d9[_0xdd62('0x6')]]=_['assign'](dials[_0x1034d9[_0xdd62('0x6')]],_0x1034d9);dials[_0x1034d9[_0xdd62('0x6')]][_0xdd62('0x29')]=utils['now']();dials[_0x1034d9[_0xdd62('0x6')]]['lastevent']='connect';utils[_0xdd62('0x3')](util[_0xdd62('0x4')](_0xdd62('0x2a'),_0x1034d9[_0xdd62('0x6')],_0x1034d9['dialstatus'],dials[_0x1034d9[_0xdd62('0x6')]][_0xdd62('0x29')]));}else{utils[_0xdd62('0x3')](util['format'](_0xdd62('0x2b'),_0x1034d9[_0xdd62('0x6')],_0x1034d9[_0xdd62('0xb')]));}}}catch(_0x5e52b6){utils[_0xdd62('0x18')](util[_0xdd62('0x4')](_0xdd62('0x27'),_0x1034d9[_0xdd62('0x6')]),_0x5e52b6);}};exports[_0xdd62('0x2c')]=function(_0x146499){try{if(!_['isNil'](dials[_0x146499[_0xdd62('0x6')]])){utils[_0xdd62('0xf')](util[_0xdd62('0x4')](_0xdd62('0x2d'),_0x146499[_0xdd62('0x6')]),_0x146499);utils['info'](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x146499[_0xdd62('0x6')],_0x146499[_0xdd62('0x9')],_0x146499[_0xdd62('0x2e')],_0x146499[_0xdd62('0x2f')]));dials[_0x146499[_0xdd62('0x6')]]=_[_0xdd62('0x30')](dials[_0x146499[_0xdd62('0x6')]],{'endtime':utils[_0xdd62('0x31')](),'lastevent':_0xdd62('0x32')});dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x33')]=utils[_0xdd62('0x34')](dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x35')],dials[_0x146499[_0xdd62('0x6')]]['starttime']);dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x36')]=utils[_0xdd62('0x34')](dials[_0x146499[_0xdd62('0x6')]]['answertime']||dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x35')],dials[_0x146499[_0xdd62('0x6')]]['starttime']);dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x37')]=dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x29')]?utils['diffTime'](dials[_0x146499['uniqueid']][_0xdd62('0x35')],dials[_0x146499[_0xdd62('0x6')]][_0xdd62('0x29')]):0x0;writeDB(dials[_0x146499[_0xdd62('0x6')]]);}}catch(_0x183c33){utils[_0xdd62('0x18')](util['format']('[%s][dials][hangup]',_0x146499[_0xdd62('0x6')]),_0x183c33);}};
\ No newline at end of file
index aba28c2..8377625 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f5a=['varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','asterisk','port','username','password','keepConnected','xdr','disabled','XDR\x20DISABLED','./calls.controller','./recordings.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','[%s][index][devicestatechange]','format','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','musiconholdstart','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid'];(function(_0x57838d,_0x4f9daa){var _0x5931ff=function(_0x213a67){while(--_0x213a67){_0x57838d['push'](_0x57838d['shift']());}};_0x5931ff(++_0x4f9daa);}(_0x2f5a,0xcd));var _0xa2f5=function(_0x1cfc39,_0x1d3913){_0x1cfc39=_0x1cfc39-0x0;var _0x957a28=_0x2f5a[_0x1cfc39];return _0x957a28;};var AsteriskManager=require(_0xa2f5('0x0'));var config=require(_0xa2f5('0x1'));var utils=require(_0xa2f5('0x2'));var util=require(_0xa2f5('0x3'));var ami=new AsteriskManager(config[_0xa2f5('0x4')][_0xa2f5('0x5')],config[_0xa2f5('0x4')]['ip'],config[_0xa2f5('0x4')][_0xa2f5('0x6')],config[_0xa2f5('0x4')][_0xa2f5('0x7')],!![]);ami[_0xa2f5('0x8')]();if(config[_0xa2f5('0x9')]&&config[_0xa2f5('0x9')][_0xa2f5('0xa')]){utils['info'](_0xa2f5('0xb'));}else{var agents=require('./agents.controller');var calls=require(_0xa2f5('0xc'));var queues=require('./queues.controller');var recordings=require(_0xa2f5('0xd'));var members=require('./members.controller');var dials=require(_0xa2f5('0xe'));var transfers=require(_0xa2f5('0xf'));var core=require(_0xa2f5('0x10'));ami['on'](_0xa2f5('0x11'),core[_0xa2f5('0x11')]);ami['on'](_0xa2f5('0x12'),core[_0xa2f5('0x12')]);ami['on']('fullybooted',core[_0xa2f5('0x13')]);ami['on']('error',core[_0xa2f5('0x14')]);ami['on']('close',core[_0xa2f5('0x15')]);ami['on'](_0xa2f5('0x16'),core[_0xa2f5('0x16')]);ami['on'](_0xa2f5('0x17'),function(_0x3ec5fb){try{utils[_0xa2f5('0x18')](util['format'](_0xa2f5('0x19'),_0x3ec5fb['device']),_0x3ec5fb);members['devicestatechange'](_0x3ec5fb);}catch(_0x51ae50){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x19'),_0x3ec5fb[_0xa2f5('0x1b')]),_0x51ae50);}});ami['on'](_0xa2f5('0x1c'),function(_0x49996d){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')](_0xa2f5('0x1d'),_0x49996d['uniqueid']),_0x49996d);agents[_0xa2f5('0x1c')](_0x49996d);}catch(_0x176354){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')]('[%s][index][agentcalled]',_0x49996d[_0xa2f5('0x1e')]),_0x176354);}});ami['on'](_0xa2f5('0x1f'),function(_0x40dd58){try{utils['debug'](util[_0xa2f5('0x1a')]('[%s][index][agentringnoanswer]',_0x40dd58['uniqueid']),_0x40dd58);agents['agentringnoanswer'](_0x40dd58);}catch(_0x1e6ad5){utils[_0xa2f5('0x14')](util['format'](_0xa2f5('0x20'),_0x40dd58[_0xa2f5('0x1e')]),_0x1e6ad5);}});ami['on'](_0xa2f5('0x21'),function(_0x39bbf4){try{utils[_0xa2f5('0x18')](util['format']('[%s][index][agentconnect]',_0x39bbf4[_0xa2f5('0x1e')]),_0x39bbf4);agents['agentconnect'](_0x39bbf4);queues[_0xa2f5('0x21')](_0x39bbf4);}catch(_0x534992){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')]('[%s][index][agentconnect]',_0x39bbf4['uniqueid']),_0x534992);}});ami['on'](_0xa2f5('0x22'),function(_0x2ebb5f){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')](_0xa2f5('0x23'),_0x2ebb5f['uniqueid']),_0x2ebb5f);agents[_0xa2f5('0x22')](_0x2ebb5f);queues[_0xa2f5('0x22')](_0x2ebb5f);members[_0xa2f5('0x22')](_0x2ebb5f);}catch(_0x351ee4){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x23'),_0x2ebb5f[_0xa2f5('0x1e')]),_0x351ee4);}});ami['on'](_0xa2f5('0x24'),function(_0x355b12){try{utils[_0xa2f5('0x18')](util['format'](_0xa2f5('0x25'),_0x355b12[_0xa2f5('0x1e')]),_0x355b12);agents[_0xa2f5('0x24')](_0x355b12);queues['queuecallerabandon'](_0x355b12);}catch(_0x1dd89d){utils[_0xa2f5('0x14')](util['format']('[%s][index][queuecallerabandon]',_0x355b12['uniqueid']),_0x1dd89d);}});ami['on'](_0xa2f5('0x26'),function(_0x5d6bd1){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')](_0xa2f5('0x27'),_0x5d6bd1[_0xa2f5('0x1e')]),_0x5d6bd1);queues[_0xa2f5('0x26')](_0x5d6bd1);recordings[_0xa2f5('0x26')](_0x5d6bd1);}catch(_0x22e797){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x27'),_0x5d6bd1['uniqueid']),_0x22e797);}});ami['on'](_0xa2f5('0x28'),function(_0x32fa3c){try{utils[_0xa2f5('0x18')](util['format']('[%s][index][queuecallerleave]',_0x32fa3c[_0xa2f5('0x1e')]),_0x32fa3c);queues[_0xa2f5('0x28')](_0x32fa3c);}catch(_0x4ec4a9){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')]('[%s][index][queuecallerleave]',_0x32fa3c[_0xa2f5('0x1e')]),_0x4ec4a9);}});ami['on'](_0xa2f5('0x29'),function(_0x43f51f){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')]('[%s][index][musiconholdstart]',_0x43f51f[_0xa2f5('0x1e')]),_0x43f51f);queues[_0xa2f5('0x29')](_0x43f51f);calls[_0xa2f5('0x29')](_0x43f51f);}catch(_0x2c568e){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')]('[%s][index][musiconholdstart]',_0x43f51f[_0xa2f5('0x1e')]),_0x2c568e);}});ami['on'](_0xa2f5('0x2a'),function(_0x496a3e){try{utils[_0xa2f5('0x18')](util['format'](_0xa2f5('0x2b'),_0x496a3e[_0xa2f5('0x1e')]),_0x496a3e);queues[_0xa2f5('0x2a')](_0x496a3e);calls[_0xa2f5('0x2a')](_0x496a3e);}catch(_0x320b1b){utils['error'](util[_0xa2f5('0x1a')](_0xa2f5('0x2b'),_0x496a3e[_0xa2f5('0x1e')]),_0x320b1b);}});ami['on'](_0xa2f5('0x2c'),function(_0x2372e1){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')](_0xa2f5('0x2d'),_0x2372e1[_0xa2f5('0x1e')]),_0x2372e1);calls[_0xa2f5('0x2c')](_0x2372e1);recordings['newstate'](_0x2372e1);}catch(_0x3c6bfc){utils[_0xa2f5('0x14')](util['format'](_0xa2f5('0x2d'),_0x2372e1[_0xa2f5('0x1e')]),_0x3c6bfc);}});ami['on'](_0xa2f5('0x2e'),function(_0x59e120){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')](_0xa2f5('0x2f'),_0x59e120[_0xa2f5('0x1e')]),_0x59e120);calls['hangup'](_0x59e120);recordings[_0xa2f5('0x2e')](_0x59e120);dials['hangup'](_0x59e120);agents[_0xa2f5('0x2e')](_0x59e120);queues[_0xa2f5('0x2e')](_0x59e120);}catch(_0x494e81){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x2f'),_0x59e120[_0xa2f5('0x1e')]),_0x494e81);}});ami['on'](_0xa2f5('0x30'),function(_0x334bd7){try{utils['debug'](util[_0xa2f5('0x1a')](_0xa2f5('0x31'),_0x334bd7[_0xa2f5('0x1e')]),_0x334bd7);members[_0xa2f5('0x30')](_0x334bd7);}catch(_0xcf4010){utils['error'](util['format'](_0xa2f5('0x31'),_0x334bd7[_0xa2f5('0x1e')]),_0xcf4010);}});ami['on'](_0xa2f5('0x32'),function(_0x187d26){try{utils[_0xa2f5('0x18')](util[_0xa2f5('0x1a')]('[%s][index][blindtransfer]',_0x187d26[_0xa2f5('0x1e')]),_0x187d26);queues[_0xa2f5('0x32')](_0x187d26);agents[_0xa2f5('0x32')](_0x187d26);transfers[_0xa2f5('0x32')](_0x187d26);}catch(_0x506a5e){utils['error'](util[_0xa2f5('0x1a')](_0xa2f5('0x33'),_0x187d26[_0xa2f5('0x1e')]),_0x506a5e);}});ami['on']('attendedtransfer',function(_0x3798c9){try{utils[_0xa2f5('0x18')](util['format']('[%s][index][attendedtransfer]',_0x3798c9['origtransfereruniqueid']),_0x3798c9);queues[_0xa2f5('0x34')](_0x3798c9);transfers[_0xa2f5('0x34')](_0x3798c9);agents[_0xa2f5('0x34')](_0x3798c9);calls[_0xa2f5('0x34')](_0x3798c9);}catch(_0x59a862){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x35'),_0x3798c9[_0xa2f5('0x36')]),_0x59a862);}});ami['on'](_0xa2f5('0x37'),function(_0x34507d){try{utils[_0xa2f5('0x18')](util['format'](_0xa2f5('0x38'),_0x34507d[_0xa2f5('0x1e')]),_0x34507d);queues['varset'](_0x34507d);recordings[_0xa2f5('0x37')](_0x34507d);calls[_0xa2f5('0x37')](_0x34507d);dials['varset'](_0x34507d);}catch(_0x574148){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x38'),_0x34507d['uniqueid']),_0x574148);}});ami['on'](_0xa2f5('0x39'),function(_0x4dc4c1){try{utils[_0xa2f5('0x18')](util['format']('[%s][index][newexten]',_0x4dc4c1[_0xa2f5('0x1e')]),_0x4dc4c1);calls[_0xa2f5('0x39')](_0x4dc4c1);recordings[_0xa2f5('0x39')](_0x4dc4c1);dials['newexten'](_0x4dc4c1);}catch(_0x170037){utils[_0xa2f5('0x14')](util['format'](_0xa2f5('0x3a'),_0x4dc4c1[_0xa2f5('0x1e')]),_0x170037);}});ami['on'](_0xa2f5('0x3b'),function(_0x2f94e3){try{utils[_0xa2f5('0x18')](util['format'](_0xa2f5('0x3c'),_0x2f94e3[_0xa2f5('0x1e')]),_0x2f94e3);calls[_0xa2f5('0x3b')](_0x2f94e3);recordings['newchannel'](_0x2f94e3);}catch(_0x1585f0){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')]('[%s][index][newchannel]',_0x2f94e3[_0xa2f5('0x1e')]),_0x1585f0);}});ami['on'](_0xa2f5('0x3d'),function(_0x51454b){try{utils['debug'](util[_0xa2f5('0x1a')](_0xa2f5('0x3e'),_0x51454b[_0xa2f5('0x1e')]),_0x51454b);dials[_0xa2f5('0x3d')](_0x51454b);}catch(_0x47c40){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')]('[%s]dialbegin',_0x51454b[_0xa2f5('0x1e')]),_0x47c40);}});ami['on'](_0xa2f5('0x3f'),function(_0x3db606){try{utils['debug'](util['format'](_0xa2f5('0x40'),_0x3db606[_0xa2f5('0x1e')]),_0x3db606);dials[_0xa2f5('0x3f')](_0x3db606);}catch(_0x4929c6){utils[_0xa2f5('0x14')](util[_0xa2f5('0x1a')](_0xa2f5('0x40'),_0x3db606[_0xa2f5('0x1e')]),_0x4929c6);}});}
\ No newline at end of file
+var _0x7790=['asterisk','port','password','keepConnected','xdr','disabled','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./core.controller','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','device','[%s][index][devicestatechange]','agentcalled','[%s][index][agentcalled]','uniqueid','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]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s]dialbegin','[%s][index][dialend]','dialend','asterisk-manager','./utils','util'];(function(_0x3d92a2,_0x36f0ba){var _0x5af51e=function(_0x4b0823){while(--_0x4b0823){_0x3d92a2['push'](_0x3d92a2['shift']());}};_0x5af51e(++_0x36f0ba);}(_0x7790,0x1bd));var _0x0779=function(_0x5ebf8d,_0x18023f){_0x5ebf8d=_0x5ebf8d-0x0;var _0x787a3e=_0x7790[_0x5ebf8d];return _0x787a3e;};var AsteriskManager=require(_0x0779('0x0'));var config=require('../../config/environment');var utils=require(_0x0779('0x1'));var util=require(_0x0779('0x2'));var ami=new AsteriskManager(config[_0x0779('0x3')][_0x0779('0x4')],config['asterisk']['ip'],config[_0x0779('0x3')]['username'],config['asterisk'][_0x0779('0x5')],!![]);ami[_0x0779('0x6')]();if(config[_0x0779('0x7')]&&config[_0x0779('0x7')][_0x0779('0x8')]){utils[_0x0779('0x9')](_0x0779('0xa'));}else{var agents=require(_0x0779('0xb'));var calls=require(_0x0779('0xc'));var queues=require('./queues.controller');var recordings=require(_0x0779('0xd'));var members=require('./members.controller');var dials=require('./dials.controller');var transfers=require('./transfers.controller');var core=require(_0x0779('0xe'));ami['on']('connect',core['connect']);ami['on'](_0x0779('0xf'),core[_0x0779('0xf')]);ami['on'](_0x0779('0x10'),core[_0x0779('0x10')]);ami['on'](_0x0779('0x11'),core[_0x0779('0x11')]);ami['on']('close',core[_0x0779('0x12')]);ami['on'](_0x0779('0x13'),core['managerevent']);ami['on'](_0x0779('0x14'),function(_0x901d89){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][devicestatechange]',_0x901d89[_0x0779('0x17')]),_0x901d89);members[_0x0779('0x14')](_0x901d89);}catch(_0x3430e4){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x18'),_0x901d89[_0x0779('0x17')]),_0x3430e4);}});ami['on'](_0x0779('0x19'),function(_0x33bed3){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x1a'),_0x33bed3[_0x0779('0x1b')]),_0x33bed3);agents[_0x0779('0x19')](_0x33bed3);}catch(_0x1cc94f){utils[_0x0779('0x11')](util['format'](_0x0779('0x1a'),_0x33bed3[_0x0779('0x1b')]),_0x1cc94f);}});ami['on'](_0x0779('0x1c'),function(_0x21071a){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][agentringnoanswer]',_0x21071a[_0x0779('0x1b')]),_0x21071a);agents[_0x0779('0x1c')](_0x21071a);}catch(_0x928a15){utils[_0x0779('0x11')](util['format']('[%s][index][agentringnoanswer]',_0x21071a['uniqueid']),_0x928a15);}});ami['on'](_0x0779('0x1d'),function(_0x139126){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][agentconnect]',_0x139126[_0x0779('0x1b')]),_0x139126);agents[_0x0779('0x1d')](_0x139126);queues[_0x0779('0x1d')](_0x139126);}catch(_0x9673c1){utils[_0x0779('0x11')](util['format'](_0x0779('0x1e'),_0x139126[_0x0779('0x1b')]),_0x9673c1);}});ami['on'](_0x0779('0x1f'),function(_0x125b9f){try{utils[_0x0779('0x15')](util['format'](_0x0779('0x20'),_0x125b9f[_0x0779('0x1b')]),_0x125b9f);agents[_0x0779('0x1f')](_0x125b9f);queues[_0x0779('0x1f')](_0x125b9f);members[_0x0779('0x1f')](_0x125b9f);}catch(_0x5a52ab){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x20'),_0x125b9f[_0x0779('0x1b')]),_0x5a52ab);}});ami['on'](_0x0779('0x21'),function(_0xbedc5d){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x22'),_0xbedc5d['uniqueid']),_0xbedc5d);agents[_0x0779('0x21')](_0xbedc5d);queues[_0x0779('0x21')](_0xbedc5d);}catch(_0x12e18d){utils[_0x0779('0x11')](util[_0x0779('0x16')]('[%s][index][queuecallerabandon]',_0xbedc5d[_0x0779('0x1b')]),_0x12e18d);}});ami['on']('queuecallerjoin',function(_0x340b3a){try{utils['debug'](util[_0x0779('0x16')]('[%s][index][queuecallerjoin]',_0x340b3a['uniqueid']),_0x340b3a);queues[_0x0779('0x23')](_0x340b3a);recordings['queuecallerjoin'](_0x340b3a);}catch(_0x3c31a0){utils['error'](util[_0x0779('0x16')](_0x0779('0x24'),_0x340b3a[_0x0779('0x1b')]),_0x3c31a0);}});ami['on'](_0x0779('0x25'),function(_0x27cfe9){try{utils[_0x0779('0x15')](util['format'](_0x0779('0x26'),_0x27cfe9['uniqueid']),_0x27cfe9);queues[_0x0779('0x25')](_0x27cfe9);}catch(_0x1117b0){utils['error'](util[_0x0779('0x16')]('[%s][index][queuecallerleave]',_0x27cfe9['uniqueid']),_0x1117b0);}});ami['on'](_0x0779('0x27'),function(_0x299000){try{utils['debug'](util[_0x0779('0x16')](_0x0779('0x28'),_0x299000[_0x0779('0x1b')]),_0x299000);queues['musiconholdstart'](_0x299000);calls[_0x0779('0x27')](_0x299000);}catch(_0x2ae4d4){utils['error'](util[_0x0779('0x16')](_0x0779('0x28'),_0x299000[_0x0779('0x1b')]),_0x2ae4d4);}});ami['on'](_0x0779('0x29'),function(_0x20f245){try{utils[_0x0779('0x15')](util['format'](_0x0779('0x2a'),_0x20f245[_0x0779('0x1b')]),_0x20f245);queues[_0x0779('0x29')](_0x20f245);calls[_0x0779('0x29')](_0x20f245);}catch(_0x8d0869){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x2a'),_0x20f245[_0x0779('0x1b')]),_0x8d0869);}});ami['on'](_0x0779('0x2b'),function(_0x19e8ef){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x2c'),_0x19e8ef['uniqueid']),_0x19e8ef);calls['newstate'](_0x19e8ef);recordings['newstate'](_0x19e8ef);}catch(_0x4db3f5){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x2c'),_0x19e8ef[_0x0779('0x1b')]),_0x4db3f5);}});ami['on'](_0x0779('0x2d'),function(_0xb7954b){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][hangup]',_0xb7954b[_0x0779('0x1b')]),_0xb7954b);calls[_0x0779('0x2d')](_0xb7954b);recordings[_0x0779('0x2d')](_0xb7954b);dials[_0x0779('0x2d')](_0xb7954b);agents[_0x0779('0x2d')](_0xb7954b);queues[_0x0779('0x2d')](_0xb7954b);}catch(_0x5ebbd2){utils['error'](util[_0x0779('0x16')](_0x0779('0x2e'),_0xb7954b['uniqueid']),_0x5ebbd2);}});ami['on']('cdr',function(_0x5bf7d3){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][cdr]',_0x5bf7d3['uniqueid']),_0x5bf7d3);members[_0x0779('0x2f')](_0x5bf7d3);}catch(_0xeb1d1f){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x30'),_0x5bf7d3[_0x0779('0x1b')]),_0xeb1d1f);}});ami['on'](_0x0779('0x31'),function(_0x3cc72b){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x32'),_0x3cc72b[_0x0779('0x1b')]),_0x3cc72b);queues['blindtransfer'](_0x3cc72b);agents[_0x0779('0x31')](_0x3cc72b);transfers[_0x0779('0x31')](_0x3cc72b);}catch(_0x59f085){utils[_0x0779('0x11')](util[_0x0779('0x16')]('[%s][index][blindtransfer]',_0x3cc72b[_0x0779('0x1b')]),_0x59f085);}});ami['on'](_0x0779('0x33'),function(_0x4dbe45){try{utils['debug'](util[_0x0779('0x16')](_0x0779('0x34'),_0x4dbe45[_0x0779('0x35')]),_0x4dbe45);queues[_0x0779('0x33')](_0x4dbe45);transfers['attendedtransfer'](_0x4dbe45);agents['attendedtransfer'](_0x4dbe45);calls[_0x0779('0x33')](_0x4dbe45);}catch(_0x3c509f){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x34'),_0x4dbe45[_0x0779('0x35')]),_0x3c509f);}});ami['on']('varset',function(_0x1cc508){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x36'),_0x1cc508[_0x0779('0x1b')]),_0x1cc508);queues[_0x0779('0x37')](_0x1cc508);recordings[_0x0779('0x37')](_0x1cc508);calls[_0x0779('0x37')](_0x1cc508);dials[_0x0779('0x37')](_0x1cc508);}catch(_0x134fc4){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x36'),_0x1cc508[_0x0779('0x1b')]),_0x134fc4);}});ami['on'](_0x0779('0x38'),function(_0x126564){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x39'),_0x126564[_0x0779('0x1b')]),_0x126564);calls[_0x0779('0x38')](_0x126564);recordings['newexten'](_0x126564);dials[_0x0779('0x38')](_0x126564);}catch(_0x5deef3){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x39'),_0x126564[_0x0779('0x1b')]),_0x5deef3);}});ami['on'](_0x0779('0x3a'),function(_0x44ef42){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][newchannel]',_0x44ef42['uniqueid']),_0x44ef42);calls[_0x0779('0x3a')](_0x44ef42);recordings[_0x0779('0x3a')](_0x44ef42);}catch(_0xc21195){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x3b'),_0x44ef42['uniqueid']),_0xc21195);}});ami['on'](_0x0779('0x3c'),function(_0x232a61){try{utils[_0x0779('0x15')](util[_0x0779('0x16')]('[%s][index][dialbegin]',_0x232a61[_0x0779('0x1b')]),_0x232a61);dials['dialbegin'](_0x232a61);}catch(_0x3d8199){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x3d'),_0x232a61[_0x0779('0x1b')]),_0x3d8199);}});ami['on']('dialend',function(_0x4bbbfb){try{utils[_0x0779('0x15')](util[_0x0779('0x16')](_0x0779('0x3e'),_0x4bbbfb[_0x0779('0x1b')]),_0x4bbbfb);dials[_0x0779('0x3f')](_0x4bbbfb);}catch(_0x566970){utils[_0x0779('0x11')](util[_0x0779('0x16')](_0x0779('0x3e'),_0x4bbbfb['uniqueid']),_0x566970);}});}
\ No newline at end of file
index a7aea0b..cf11dff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe0=['type','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','[%s][members][cdr]','lodash','./utils','Local/_attended@transfer','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','channel','data2','getUserByInterface','then','internal','request','CreateMemberReport','getUserByName','interface','split','membername','name','error','some','startsWith','debug','[%s][members][devicestatechange]','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','device','state','INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','isNil','exitAt','diffTime','enterAt','agentcomplete','assign','queue','[%s][members][agentcomplete]','cdr','data1'];(function(_0x1558ca,_0x421787){var _0x5156ea=function(_0x2f4779){while(--_0x2f4779){_0x1558ca['push'](_0x1558ca['shift']());}};_0x5156ea(++_0x421787);}(_0xbfe0,0x6d));var _0x0bfe=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xbfe0[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x0bfe('0x0'));var util=require('util');var utils=require(_0x0bfe('0x1'));var members={};var exclude=[_0x0bfe('0x2'),'Queue:'];function writeDB(_0xbd4e1d){utils[_0x0bfe('0x3')](util[_0x0bfe('0x4')](_0x0bfe('0x5'),_0xbd4e1d[_0x0bfe('0x6')],_0xbd4e1d['interface'],_0xbd4e1d[_0x0bfe('0x7')],_0xbd4e1d[_0x0bfe('0x8')],_0xbd4e1d['membername'],_0xbd4e1d['type']));if(_0xbd4e1d['interface']){utils[_0x0bfe('0x9')](_0xbd4e1d['interface'])[_0x0bfe('0xa')](function(_0x3761ff){if(_0x3761ff){_0xbd4e1d['membername']=_0x3761ff['name'];_0xbd4e1d[_0x0bfe('0xb')]=_0x3761ff['internal'];utils[_0x0bfe('0xc')](_0x0bfe('0xd'),_0xbd4e1d);}else{utils[_0x0bfe('0xe')](_0xbd4e1d[_0x0bfe('0xf')][_0x0bfe('0x10')]('/')[0x1])['then'](function(_0x3abde6){if(_0x3abde6){_0xbd4e1d[_0x0bfe('0x11')]=_0x3abde6[_0x0bfe('0x12')];_0xbd4e1d[_0x0bfe('0xb')]=_0x3abde6['internal'];utils['request']('CreateMemberReport',_0xbd4e1d);}});}})['catch'](function(_0x21ba7b){utils[_0x0bfe('0x13')](util[_0x0bfe('0x4')]('[%s][members][writeDB]',_0xbd4e1d[_0x0bfe('0x6')]),_0x21ba7b);});}delete members[_0xbd4e1d[_0x0bfe('0xf')]];}function startsWith(_0x4b9355,_0x4bcb7c){return _[_0x0bfe('0x14')](_0x4b9355,function(_0x39747c){return _[_0x0bfe('0x15')](_0x4bcb7c,_0x39747c);});}exports['devicestatechange']=function(_0x540d19){try{utils[_0x0bfe('0x16')](util[_0x0bfe('0x4')](_0x0bfe('0x17'),members[_0x540d19['device']]?members[_0x540d19['device']][_0x0bfe('0x6')]:_0x540d19['device']),_0x540d19);utils[_0x0bfe('0x3')](util[_0x0bfe('0x4')](_0x0bfe('0x18'),members[_0x540d19[_0x0bfe('0x19')]]?members[_0x540d19[_0x0bfe('0x19')]]['uniqueid']:_0x540d19[_0x0bfe('0x19')],_0x540d19['state'],_0x540d19[_0x0bfe('0x19')]));switch(_0x540d19[_0x0bfe('0x1a')]){case _0x0bfe('0x1b'):case _0x0bfe('0x1c'):if(!startsWith(exclude,_0x540d19[_0x0bfe('0x19')])){members[_0x540d19[_0x0bfe('0x19')]]={'channel':_0x0bfe('0x1d'),'interface':_0x540d19[_0x0bfe('0x19')],'type':_0x0bfe('0x1e'),'enterAt':utils[_0x0bfe('0x1f')](),'role':_0x0bfe('0x20')};}break;case _0x0bfe('0x21'):if(!_[_0x0bfe('0x22')](members[_0x540d19[_0x0bfe('0x19')]])){members[_0x540d19['device']][_0x0bfe('0x23')]=utils[_0x0bfe('0x1f')]();members[_0x540d19[_0x0bfe('0x19')]]['duration']=utils[_0x0bfe('0x24')](members[_0x540d19['device']]['exitAt'],members[_0x540d19[_0x0bfe('0x19')]][_0x0bfe('0x25')]);if(members[_0x540d19[_0x0bfe('0x19')]]['uniqueid']){writeDB(members[_0x540d19['device']]);}}break;default:break;}}catch(_0x47a610){utils[_0x0bfe('0x13')](util[_0x0bfe('0x4')](_0x0bfe('0x17'),members[_0x540d19[_0x0bfe('0x19')]]?members[_0x540d19[_0x0bfe('0x19')]][_0x0bfe('0x6')]:_0x540d19[_0x0bfe('0x19')]),_0x47a610);}};exports[_0x0bfe('0x26')]=function(_0x1d260d){try{if(!_[_0x0bfe('0x22')](members[_0x1d260d[_0x0bfe('0xf')]])){utils[_0x0bfe('0x16')](util['format']('[%s][members][agentcomplete]',_0x1d260d[_0x0bfe('0x6')]),_0x1d260d);utils['info'](util[_0x0bfe('0x4')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x1d260d[_0x0bfe('0x6')],_0x1d260d[_0x0bfe('0xf')],_0x1d260d['queue']));members[_0x1d260d[_0x0bfe('0xf')]]=_[_0x0bfe('0x27')](members[_0x1d260d['interface']],{'data4':_0x1d260d[_0x0bfe('0x28')],'uniqueid':_0x1d260d[_0x0bfe('0x6')]});}}catch(_0x318db5){utils['error'](util[_0x0bfe('0x4')](_0x0bfe('0x29'),_0x1d260d[_0x0bfe('0x6')]),_0x318db5);}};exports[_0x0bfe('0x2a')]=function(_0xb0c4cf){try{utils[_0x0bfe('0x16')](util[_0x0bfe('0x4')]('[%s][members][cdr]',_0xb0c4cf[_0x0bfe('0x6')]),_0xb0c4cf);if(_0xb0c4cf[_0x0bfe('0x7')]){var _0x1ac3c1=_0xb0c4cf['channel'][_0x0bfe('0x10')]('-')[0x0];if(!_[_0x0bfe('0x22')](members[_0x1ac3c1])){members[_0x1ac3c1]=_['assign'](members[_0x1ac3c1],{'data1':members[_0x1ac3c1][_0x0bfe('0x2b')]||_0xb0c4cf[_0x0bfe('0x2c')],'data2':members[_0x1ac3c1][_0x0bfe('0x8')]||_0xb0c4cf[_0x0bfe('0x2d')],'data3':members[_0x1ac3c1][_0x0bfe('0x2e')]||_0xb0c4cf[_0x0bfe('0x2f')],'uniqueid':members[_0x1ac3c1][_0x0bfe('0x6')]||_0xb0c4cf[_0x0bfe('0x6')]});utils[_0x0bfe('0x3')](util[_0x0bfe('0x4')](_0x0bfe('0x30'),_0xb0c4cf[_0x0bfe('0x6')],members[_0x1ac3c1][_0x0bfe('0x2b')],members[_0x1ac3c1]['data2'],members[_0x1ac3c1]['data3']));if(members[_0x1ac3c1]['exitAt']){writeDB(members[_0x1ac3c1]);}}}if(_0xb0c4cf[_0x0bfe('0x31')]){var _0x5e4ba2=_0xb0c4cf[_0x0bfe('0x31')][_0x0bfe('0x10')]('-')[0x0];if(!_['isNil'](members[_0x5e4ba2])){members[_0x5e4ba2]=_[_0x0bfe('0x27')](members[_0x5e4ba2],{'data1':members[_0x5e4ba2][_0x0bfe('0x2b')]||_0xb0c4cf[_0x0bfe('0x2c')],'data2':members[_0x5e4ba2]['data2']||_0xb0c4cf['source'],'data3':members[_0x5e4ba2][_0x0bfe('0x2e')]||_0xb0c4cf[_0x0bfe('0x2f')],'uniqueid':members[_0x5e4ba2]['uniqueid']||_0xb0c4cf[_0x0bfe('0x6')]});utils[_0x0bfe('0x3')](util['format'](_0x0bfe('0x30'),_0xb0c4cf[_0x0bfe('0x6')],members[_0x5e4ba2][_0x0bfe('0x2b')],members[_0x5e4ba2]['data2'],members[_0x5e4ba2][_0x0bfe('0x2e')]));if(members[_0x5e4ba2][_0x0bfe('0x23')]){writeDB(members[_0x5e4ba2]);}}}}catch(_0x427dd7){utils[_0x0bfe('0x13')](util[_0x0bfe('0x4')](_0x0bfe('0x32'),_0xb0c4cf['uniqueid']),_0x427dd7);}};
\ No newline at end of file
+var _0x26ef=['debug','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][agentcomplete]','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','channel','data2','membername','type','interface','getUserByInterface','then','internal','request','getUserByName','split','CreateMemberReport','error','[%s][members][writeDB]','uniqueid','some','startsWith','devicestatechange','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','BUSY','voice','TALKING','now','agent','isNil','duration','exitAt','enterAt','agentcomplete'];(function(_0x5e89a8,_0x27e49e){var _0x6ab7e1=function(_0x5dca73){while(--_0x5dca73){_0x5e89a8['push'](_0x5e89a8['shift']());}};_0x6ab7e1(++_0x27e49e);}(_0x26ef,0x13e));var _0xf26e=function(_0x2b5974,_0x14f785){_0x2b5974=_0x2b5974-0x0;var _0x53179a=_0x26ef[_0x2b5974];return _0x53179a;};'use strict';var _=require('lodash');var util=require(_0xf26e('0x0'));var utils=require(_0xf26e('0x1'));var members={};var exclude=[_0xf26e('0x2'),_0xf26e('0x3')];function writeDB(_0x536e15){utils[_0xf26e('0x4')](util[_0xf26e('0x5')](_0xf26e('0x6'),_0x536e15['uniqueid'],_0x536e15['interface'],_0x536e15[_0xf26e('0x7')],_0x536e15[_0xf26e('0x8')],_0x536e15[_0xf26e('0x9')],_0x536e15[_0xf26e('0xa')]));if(_0x536e15[_0xf26e('0xb')]){utils[_0xf26e('0xc')](_0x536e15[_0xf26e('0xb')])[_0xf26e('0xd')](function(_0x1600fc){if(_0x1600fc){_0x536e15['membername']=_0x1600fc['name'];_0x536e15[_0xf26e('0xe')]=_0x1600fc[_0xf26e('0xe')];utils[_0xf26e('0xf')]('CreateMemberReport',_0x536e15);}else{utils[_0xf26e('0x10')](_0x536e15[_0xf26e('0xb')][_0xf26e('0x11')]('/')[0x1])['then'](function(_0x1761f6){if(_0x1761f6){_0x536e15[_0xf26e('0x9')]=_0x1761f6['name'];_0x536e15[_0xf26e('0xe')]=_0x1761f6[_0xf26e('0xe')];utils[_0xf26e('0xf')](_0xf26e('0x12'),_0x536e15);}});}})['catch'](function(_0x323c23){utils[_0xf26e('0x13')](util[_0xf26e('0x5')](_0xf26e('0x14'),_0x536e15[_0xf26e('0x15')]),_0x323c23);});}delete members[_0x536e15[_0xf26e('0xb')]];}function startsWith(_0x30f36b,_0x17e94d){return _[_0xf26e('0x16')](_0x30f36b,function(_0x165943){return _[_0xf26e('0x17')](_0x17e94d,_0x165943);});}exports[_0xf26e('0x18')]=function(_0x3c76ae){try{utils['debug'](util['format'](_0xf26e('0x19'),members[_0x3c76ae[_0xf26e('0x1a')]]?members[_0x3c76ae['device']][_0xf26e('0x15')]:_0x3c76ae[_0xf26e('0x1a')]),_0x3c76ae);utils[_0xf26e('0x4')](util[_0xf26e('0x5')](_0xf26e('0x1b'),members[_0x3c76ae[_0xf26e('0x1a')]]?members[_0x3c76ae['device']]['uniqueid']:_0x3c76ae[_0xf26e('0x1a')],_0x3c76ae[_0xf26e('0x1c')],_0x3c76ae['device']));switch(_0x3c76ae['state']){case'INUSE':case _0xf26e('0x1d'):if(!startsWith(exclude,_0x3c76ae[_0xf26e('0x1a')])){members[_0x3c76ae[_0xf26e('0x1a')]]={'channel':_0xf26e('0x1e'),'interface':_0x3c76ae[_0xf26e('0x1a')],'type':_0xf26e('0x1f'),'enterAt':utils[_0xf26e('0x20')](),'role':_0xf26e('0x21')};}break;case'NOT_INUSE':if(!_[_0xf26e('0x22')](members[_0x3c76ae['device']])){members[_0x3c76ae[_0xf26e('0x1a')]]['exitAt']=utils[_0xf26e('0x20')]();members[_0x3c76ae['device']][_0xf26e('0x23')]=utils['diffTime'](members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x24')],members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x25')]);if(members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x15')]){writeDB(members[_0x3c76ae['device']]);}}break;default:break;}}catch(_0xe64711){utils[_0xf26e('0x13')](util[_0xf26e('0x5')]('[%s][members][devicestatechange]',members[_0x3c76ae[_0xf26e('0x1a')]]?members[_0x3c76ae[_0xf26e('0x1a')]][_0xf26e('0x15')]:_0x3c76ae[_0xf26e('0x1a')]),_0xe64711);}};exports[_0xf26e('0x26')]=function(_0x356602){try{if(!_['isNil'](members[_0x356602[_0xf26e('0xb')]])){utils[_0xf26e('0x27')](util[_0xf26e('0x5')]('[%s][members][agentcomplete]',_0x356602[_0xf26e('0x15')]),_0x356602);utils[_0xf26e('0x4')](util[_0xf26e('0x5')](_0xf26e('0x28'),_0x356602[_0xf26e('0x15')],_0x356602['interface'],_0x356602[_0xf26e('0x29')]));members[_0x356602['interface']]=_[_0xf26e('0x2a')](members[_0x356602[_0xf26e('0xb')]],{'data4':_0x356602[_0xf26e('0x29')],'uniqueid':_0x356602[_0xf26e('0x15')]});}}catch(_0x486652){utils[_0xf26e('0x13')](util[_0xf26e('0x5')](_0xf26e('0x2b'),_0x356602[_0xf26e('0x15')]),_0x486652);}};exports['cdr']=function(_0x38d203){try{utils['debug'](util[_0xf26e('0x5')](_0xf26e('0x2c'),_0x38d203[_0xf26e('0x15')]),_0x38d203);if(_0x38d203[_0xf26e('0x7')]){var _0x34d078=_0x38d203[_0xf26e('0x7')][_0xf26e('0x11')]('-')[0x0];if(!_['isNil'](members[_0x34d078])){members[_0x34d078]=_[_0xf26e('0x2a')](members[_0x34d078],{'data1':members[_0x34d078][_0xf26e('0x2d')]||_0x38d203[_0xf26e('0xa')],'data2':members[_0x34d078][_0xf26e('0x8')]||_0x38d203[_0xf26e('0x2e')],'data3':members[_0x34d078][_0xf26e('0x2f')]||_0x38d203[_0xf26e('0x30')],'uniqueid':members[_0x34d078][_0xf26e('0x15')]||_0x38d203[_0xf26e('0x15')]});utils['info'](util[_0xf26e('0x5')](_0xf26e('0x31'),_0x38d203['uniqueid'],members[_0x34d078][_0xf26e('0x2d')],members[_0x34d078][_0xf26e('0x8')],members[_0x34d078][_0xf26e('0x2f')]));if(members[_0x34d078]['exitAt']){writeDB(members[_0x34d078]);}}}if(_0x38d203[_0xf26e('0x32')]){var _0x3e4169=_0x38d203[_0xf26e('0x32')]['split']('-')[0x0];if(!_['isNil'](members[_0x3e4169])){members[_0x3e4169]=_[_0xf26e('0x2a')](members[_0x3e4169],{'data1':members[_0x3e4169][_0xf26e('0x2d')]||_0x38d203[_0xf26e('0xa')],'data2':members[_0x3e4169][_0xf26e('0x8')]||_0x38d203['source'],'data3':members[_0x3e4169][_0xf26e('0x2f')]||_0x38d203['destination'],'uniqueid':members[_0x3e4169]['uniqueid']||_0x38d203['uniqueid']});utils[_0xf26e('0x4')](util[_0xf26e('0x5')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x38d203[_0xf26e('0x15')],members[_0x3e4169][_0xf26e('0x2d')],members[_0x3e4169][_0xf26e('0x8')],members[_0x3e4169][_0xf26e('0x2f')]));if(members[_0x3e4169][_0xf26e('0x24')]){writeDB(members[_0x3e4169]);}}}}catch(_0x55cb0a){utils[_0xf26e('0x13')](util[_0xf26e('0x5')](_0xf26e('0x2c'),_0x38d203[_0xf26e('0x15')]),_0x55cb0a);}};
\ No newline at end of file
index 6d2a64c..0dc4429 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0776=['[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','queuecallerjoinAt','count','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','assigned','destaccountcode','transfer','TRANSFER','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','origtransfereruniqueid','secondtransfererlinkedid','origtransfererexten','ATTENDED','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','transfertargetuniqueid','calleridnum','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','clone','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','util','./utils','info','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','queue','lastAssignedTo','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','format','[%s][queues][queuecallerjoin]','position','assign','now','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerexit','queuecallercomplete','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','error','debug','[%s][queues][varset]','variable','queuestatus','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','value','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','name','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave'];(function(_0x252e67,_0x4f298d){var _0xe1a88f=function(_0x3d3fa7){while(--_0x3d3fa7){_0x252e67['push'](_0x252e67['shift']());}};_0xe1a88f(++_0x4f298d);}(_0x0776,0x16a));var _0x6077=function(_0xb2dfd9,_0x130626){_0xb2dfd9=_0xb2dfd9-0x0;var _0x270d3b=_0x0776[_0xb2dfd9];return _0x270d3b;};'use strict';var _=require(_0x6077('0x0'));var util=require(_0x6077('0x1'));var utils=require(_0x6077('0x2'));var queues={};function writeDB(_0x143487){utils[_0x6077('0x3')](util['format'](_0x6077('0x4'),_0x143487[_0x6077('0x5')],_0x143487['channel'],_0x143487[_0x6077('0x6')],_0x143487[_0x6077('0x7')],_0x143487['calleridnum'],_0x143487[_0x6077('0x8')],_0x143487[_0x6077('0x9')]));if(_0x143487[_0x6077('0x6')]){utils[_0x6077('0xa')](_0x143487[_0x6077('0x6')])[_0x6077('0xb')](function(_0x2ee12e){if(_0x2ee12e){_0x143487[_0x6077('0xc')]=_0x2ee12e[_0x6077('0xc')];}utils[_0x6077('0xd')](_0x6077('0xe'),_0x143487);});}else{utils[_0x6077('0xd')]('CreateVoiceQueueReport',_0x143487);}if(_0x143487['transfereduniqueid']){delete queues[_0x143487[_0x6077('0xf')]];}else{delete queues[_0x143487[_0x6077('0x5')]];}}exports[_0x6077('0x10')]=function(_0x2979be){try{utils['debug'](util[_0x6077('0x11')](_0x6077('0x12'),_0x2979be[_0x6077('0x5')]),_0x2979be);utils[_0x6077('0x3')](util[_0x6077('0x11')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x2979be[_0x6077('0x5')],_0x2979be[_0x6077('0x6')],_0x2979be[_0x6077('0x13')]));queues[_0x2979be['uniqueid']]=_[_0x6077('0x14')](_0x2979be,{'originalposition':_0x2979be[_0x6077('0x13')],'queuecallerjoinAt':utils[_0x6077('0x15')](),'mohtime':0x0});}catch(_0x49694d){utils['error'](util[_0x6077('0x11')]('[%s][queues][queuecallerjoin]',_0x2979be[_0x6077('0x5')]),_0x49694d);}};exports[_0x6077('0x16')]=function(_0x16417a){try{if(!_[_0x6077('0x17')](queues[_0x16417a[_0x6077('0x5')]])){utils['debug'](util[_0x6077('0x11')](_0x6077('0x18'),_0x16417a[_0x6077('0x5')]),_0x16417a);if(queues[_0x16417a['uniqueid']][_0x6077('0x19')]){if(!queues[_0x16417a[_0x6077('0x5')]]['queuecallerabandon']&&!queues[_0x16417a['uniqueid']][_0x6077('0x1a')]){queues[_0x16417a[_0x6077('0x5')]][_0x6077('0x1b')]=!![];queues[_0x16417a[_0x6077('0x5')]][_0x6077('0x1c')]=utils['now']();queues[_0x16417a['uniqueid']][_0x6077('0x9')]='COMPLETEDBYAGENT';}utils['info'](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x16417a['uniqueid'],queues[_0x16417a[_0x6077('0x5')]]['name'],queues[_0x16417a[_0x6077('0x5')]][_0x6077('0x9')]));writeDB(queues[_0x16417a[_0x6077('0x5')]]);}else if(queues[_0x16417a[_0x6077('0x5')]]['transfereduniqueid']){utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x1d'),_0x16417a[_0x6077('0x5')],queues[_0x16417a[_0x6077('0x5')]]['name'],queues[_0x16417a[_0x6077('0x5')]]['transfereduniqueid']));queues[queues[_0x16417a[_0x6077('0x5')]][_0x6077('0xf')]]=queues[_0x16417a['uniqueid']];queues[queues[_0x16417a['uniqueid']]['transfereduniqueid']][_0x6077('0x1e')]=0x2;delete queues[_0x16417a['uniqueid']];}}}catch(_0x231290){utils[_0x6077('0x1f')](util[_0x6077('0x11')](_0x6077('0x18'),_0x16417a['uniqueid']),_0x231290);}};exports['varset']=function(_0x38071f){try{utils[_0x6077('0x20')](util['format'](_0x6077('0x21'),_0x38071f[_0x6077('0x5')]),_0x38071f);if(!_[_0x6077('0x17')](_0x38071f[_0x6077('0x22')][_0x6077('0x23')])&&_0x38071f['value'][_0x6077('0x24')]()!==_0x6077('0x25')){if(!_['isNil'](queues[_0x38071f[_0x6077('0x5')]])){queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x26')]=![];queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x27')]=null;queues[_0x38071f['uniqueid']][_0x6077('0x1a')]=!![];queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x28')]=utils[_0x6077('0x15')]();queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x9')]=_0x38071f[_0x6077('0x29')][_0x6077('0x24')]();utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x2a'),_0x38071f[_0x6077('0x5')],queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x2b')],_0x38071f[_0x6077('0x29')],queues[_0x38071f[_0x6077('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x38071f[_0x6077('0x5')]]);}}else if(!_[_0x6077('0x17')](_0x38071f[_0x6077('0x22')][_0x6077('0x2c')])){if(!_[_0x6077('0x17')](queues[_0x38071f[_0x6077('0x5')]])&&!queues[_0x38071f[_0x6077('0x5')]]['queuecallerabandon']){queues[_0x38071f['uniqueid']][_0x6077('0x26')]=![];queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x27')]=null;queues[_0x38071f[_0x6077('0x5')]][_0x6077('0x1a')]=!![];queues[_0x38071f[_0x6077('0x5')]]['queuecallerexitAt']=utils[_0x6077('0x15')]();queues[_0x38071f['uniqueid']]['queuecallerexitreason']='EXITWITHKEY';utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x2d'),_0x38071f[_0x6077('0x5')],queues[_0x38071f['uniqueid']]['name'],_0x38071f['value'],queues[_0x38071f['uniqueid']][_0x6077('0x9')]));}}}catch(_0x3e693e){utils['error'](util[_0x6077('0x11')]('[%s][queues][varset]',_0x38071f[_0x6077('0x5')]),_0x3e693e);}};exports['queuecallerabandon']=function(_0x5619c3){try{if(!_['isNil'](queues[_0x5619c3[_0x6077('0x5')]])){utils['debug'](util[_0x6077('0x11')](_0x6077('0x2e'),_0x5619c3[_0x6077('0x5')]),_0x5619c3);queues[_0x5619c3[_0x6077('0x5')]][_0x6077('0x1a')]=![];queues[_0x5619c3[_0x6077('0x5')]][_0x6077('0x28')]=null;queues[_0x5619c3['uniqueid']][_0x6077('0x26')]=!![];queues[_0x5619c3[_0x6077('0x5')]][_0x6077('0x27')]=utils[_0x6077('0x15')]();queues[_0x5619c3[_0x6077('0x5')]][_0x6077('0x9')]=_0x6077('0x2f');utils['info'](util['format'](_0x6077('0x30'),_0x5619c3[_0x6077('0x5')],queues[_0x5619c3['uniqueid']][_0x6077('0x2b')],queues[_0x5619c3[_0x6077('0x5')]][_0x6077('0x9')]));}}catch(_0x43b3d3){utils[_0x6077('0x1f')](util['format']('[%s][queues][queuecallerabandon]',_0x5619c3[_0x6077('0x5')]),_0x43b3d3);}};exports[_0x6077('0x31')]=function(_0x16651e){try{if(!_[_0x6077('0x17')](queues[_0x16651e[_0x6077('0x5')]])){utils[_0x6077('0x20')](util[_0x6077('0x11')](_0x6077('0x32'),_0x16651e['uniqueid']),_0x16651e);utils['info'](util[_0x6077('0x11')](_0x6077('0x33'),_0x16651e['uniqueid'],queues[_0x16651e[_0x6077('0x5')]]['name'],_0x16651e[_0x6077('0x34')],_0x16651e[_0x6077('0x35')]));queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x31')]=!![];queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x19')]=utils[_0x6077('0x15')]();queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x36')]=utils['diffTime'](queues[_0x16651e[_0x6077('0x5')]]['queuecallerleaveAt'],queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x37')]);queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x13')]=_0x16651e[_0x6077('0x13')];queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x38')]=_0x16651e['count'];queues[_0x16651e[_0x6077('0x5')]][_0x6077('0x34')]=_0x16651e['connectedlinenum'];queues[_0x16651e[_0x6077('0x5')]]['connectedlinename']=_0x16651e[_0x6077('0x35')];}}catch(_0x3b24a0){utils['error'](util[_0x6077('0x11')]('[%s][queues][queuecallerleave]',_0x16651e[_0x6077('0x5')]),_0x3b24a0);}};exports['agentconnect']=function(_0x1e8cbd){try{if(!_['isNil'](queues[_0x1e8cbd[_0x6077('0x5')]])){utils[_0x6077('0x20')](util[_0x6077('0x11')](_0x6077('0x39'),_0x1e8cbd[_0x6077('0x5')]),_0x1e8cbd);utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x3a'),_0x1e8cbd[_0x6077('0x5')],queues[_0x1e8cbd[_0x6077('0x5')]]['name'],_0x1e8cbd[_0x6077('0x3b')],_0x1e8cbd['destaccountcode']));queues[_0x1e8cbd[_0x6077('0x5')]][_0x6077('0x26')]=![];queues[_0x1e8cbd[_0x6077('0x5')]][_0x6077('0x26')]=![];queues[_0x1e8cbd[_0x6077('0x5')]][_0x6077('0x27')]=null;queues[_0x1e8cbd[_0x6077('0x5')]][_0x6077('0x1a')]=![];queues[_0x1e8cbd[_0x6077('0x5')]]['queuecallerexitreason']=null;queues[_0x1e8cbd[_0x6077('0x5')]][_0x6077('0x28')]=null;queues[_0x1e8cbd['uniqueid']][_0x6077('0x3c')]=!![];queues[_0x1e8cbd['uniqueid']]['accountcode']=_0x1e8cbd[_0x6077('0x3d')];queues[_0x1e8cbd[_0x6077('0x5')]][_0x6077('0x7')]=_0x1e8cbd[_0x6077('0x3b')];}}catch(_0x495190){utils[_0x6077('0x1f')](util[_0x6077('0x11')](_0x6077('0x39'),_0x1e8cbd[_0x6077('0x5')]),_0x495190);}};exports['agentcomplete']=function(_0xb613f1){try{if(!_['isNil'](queues[_0xb613f1[_0x6077('0x5')]])){if(queues[_0xb613f1['uniqueid']]['queuecallerleaveAt']){utils['debug'](util['format']('[%s][queues][agentcomplete]',_0xb613f1[_0x6077('0x5')]),_0xb613f1);queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x26')]=![];queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x26')]=![];queues[_0xb613f1[_0x6077('0x5')]]['queuecallerabandonAt']=null;queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x1a')]=![];queues[_0xb613f1['uniqueid']][_0x6077('0x28')]=null;queues[_0xb613f1[_0x6077('0x5')]]['assigned']=!![];queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x7')]=_0xb613f1[_0x6077('0x3b')];queues[_0xb613f1[_0x6077('0x5')]]['queuecallercomplete']=!![];queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x1c')]=utils[_0x6077('0x15')]();if(_0xb613f1['reason']==_0x6077('0x3e')){if(!queues[_0xb613f1['uniqueid']]['transfer']){queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x9')]=_0x6077('0x3f');}}else{queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x9')]=_0x6077('0x40')+_0xb613f1[_0x6077('0x41')][_0x6077('0x24')]();}utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x42'),_0xb613f1[_0x6077('0x5')],queues[_0xb613f1['uniqueid']]['name'],_0xb613f1['membername'],queues[_0xb613f1[_0x6077('0x5')]][_0x6077('0x9')]));writeDB(queues[_0xb613f1[_0x6077('0x5')]]);}}}catch(_0x4be8a7){utils['error'](util[_0x6077('0x11')](_0x6077('0x43'),_0xb613f1['uniqueid']),_0x4be8a7);}};exports['blindtransfer']=function(_0x2c7143){try{if(!_[_0x6077('0x17')](queues[_0x2c7143['transfereeuniqueid']])){utils[_0x6077('0x20')](util[_0x6077('0x11')](_0x6077('0x44'),_0x2c7143[_0x6077('0x5')]),_0x2c7143);queues[_0x2c7143[_0x6077('0x45')]]['transfer']=!![];queues[_0x2c7143['transfereeuniqueid']][_0x6077('0x46')]=_0x6077('0x47');queues[_0x2c7143[_0x6077('0x45')]][_0x6077('0x48')]=_0x2c7143[_0x6077('0x49')];queues[_0x2c7143[_0x6077('0x45')]][_0x6077('0x4a')]=_0x2c7143[_0x6077('0x45')];queues[_0x2c7143[_0x6077('0x45')]][_0x6077('0x9')]=_0x6077('0x4b');utils['info'](util[_0x6077('0x11')](_0x6077('0x4c'),_0x2c7143[_0x6077('0x5')],queues[_0x2c7143['transfereeuniqueid']][_0x6077('0x2b')],_0x2c7143[_0x6077('0x45')],_0x2c7143[_0x6077('0x49')]));}}catch(_0x34c80f){utils['error'](util[_0x6077('0x11')]('[%s][queues][blindtransfer]',_0x2c7143[_0x6077('0x5')]),_0x34c80f);}};exports[_0x6077('0x4d')]=function(_0x4a636d){try{utils['debug'](util[_0x6077('0x11')]('[%s][queues][attendedtransfer]',_0x4a636d[_0x6077('0x4e')]),_0x4a636d);if(_0x4a636d['origtransfereruniqueid']==_0x4a636d['origtransfererlinkedid']){if(!_[_0x6077('0x17')](queues[_0x4a636d[_0x6077('0x4f')]])){utils[_0x6077('0x3')](util[_0x6077('0x11')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x4a636d[_0x6077('0x4e')],queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x2b')],_0x4a636d[_0x6077('0x50')]));queues[_0x4a636d[_0x6077('0x4f')]]['transfer']=!![];queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x46')]=_0x6077('0x51');queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x48')]=_0x4a636d[_0x6077('0x50')];queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x4a')]=_0x4a636d[_0x6077('0x4e')];queues[_0x4a636d['secondtransfererlinkedid']]['queuecallerexitreason']=_0x6077('0x52');}if(!_[_0x6077('0x17')](queues[_0x4a636d[_0x6077('0x53')]])){if(_0x4a636d[_0x6077('0x54')]&&queues[_0x4a636d[_0x6077('0x54')]]){queues[_0x4a636d[_0x6077('0x54')]][_0x6077('0x1e')]=0x1;queues[_0x4a636d[_0x6077('0x45')]]=_['clone'](queues[_0x4a636d[_0x6077('0x54')]]);queues[_0x4a636d['transfereeuniqueid']][_0x6077('0xf')]=_0x4a636d[_0x6077('0x55')];queues[_0x4a636d[_0x6077('0x45')]][_0x6077('0x1e')]=0x2;queues[_0x4a636d[_0x6077('0x45')]][_0x6077('0x56')]=queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x56')];queues[_0x4a636d[_0x6077('0x45')]][_0x6077('0x57')]=queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x57')];queues[_0x4a636d[_0x6077('0x45')]]['queuecallerjoinAt']=utils['now']();queues[_0x4a636d[_0x6077('0x45')]][_0x6077('0x19')]=utils[_0x6077('0x15')]();queues[_0x4a636d[_0x6077('0x45')]]['holdtime']=0x0;queues[_0x4a636d[_0x6077('0x45')]][_0x6077('0x58')]=0x0;utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x4a636d[_0x6077('0x4e')],queues[_0x4a636d['transfereeuniqueid']][_0x6077('0x2b')],queues[_0x4a636d[_0x6077('0x45')]][_0x6077('0x56')],queues[_0x4a636d[_0x6077('0x45')]]['calleridname']));}else{utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x59'),_0x4a636d[_0x6077('0x4e')],queues[_0x4a636d['origtransfererlinkedid']][_0x6077('0x2b')],_0x4a636d['secondtransfererlinkedid']));queues[_0x4a636d[_0x6077('0x53')]][_0x6077('0xf')]=_0x4a636d['secondtransfererlinkedid'];}}}else if(_0x4a636d[_0x6077('0x5a')]==_0x4a636d[_0x6077('0x4f')]){if(!_[_0x6077('0x17')](queues[_0x4a636d[_0x6077('0x53')]])){utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x5b'),_0x4a636d['origtransfereruniqueid'],queues[_0x4a636d[_0x6077('0x53')]][_0x6077('0x2b')],_0x4a636d[_0x6077('0x5a')],_0x4a636d[_0x6077('0x5c')]));queues[_0x4a636d['origtransfererlinkedid']][_0x6077('0x3e')]=!![];queues[_0x4a636d[_0x6077('0x53')]]['transfertype']=_0x6077('0x51');queues[_0x4a636d[_0x6077('0x53')]][_0x6077('0x48')]=_0x4a636d[_0x6077('0x5c')];queues[_0x4a636d[_0x6077('0x53')]][_0x6077('0x4a')]=_0x4a636d['secondtransfereruniqueid'];queues[_0x4a636d[_0x6077('0x53')]][_0x6077('0x9')]=_0x6077('0x52');}if(!_[_0x6077('0x17')](queues[_0x4a636d[_0x6077('0x4f')]])){if(_0x4a636d[_0x6077('0x5d')]&&queues[_0x4a636d[_0x6077('0x5d')]]){queues[_0x4a636d[_0x6077('0x5d')]]['queuecallerenterreason']=0x1;queues[_0x4a636d[_0x6077('0x55')]]=_[_0x6077('0x5e')](queues[_0x4a636d['transfertargetlinkedid']]);queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0xf')]=_0x4a636d[_0x6077('0x55')];queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x1e')]=0x2;queues[_0x4a636d['transfertargetuniqueid']][_0x6077('0x56')]=queues[_0x4a636d[_0x6077('0x53')]][_0x6077('0x56')];queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x57')]=queues[_0x4a636d[_0x6077('0x53')]]['calleridname'];queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x37')]=utils[_0x6077('0x15')]();queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x19')]=utils[_0x6077('0x15')]();queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x36')]=0x0;queues[_0x4a636d['transfertargetuniqueid']][_0x6077('0x58')]=0x0;utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x5f'),_0x4a636d['origtransfereruniqueid'],queues[_0x4a636d[_0x6077('0x55')]]['name'],queues[_0x4a636d[_0x6077('0x55')]]['transfereduniqueid'],queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x56')],queues[_0x4a636d[_0x6077('0x55')]][_0x6077('0x57')]));}else{utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x59'),_0x4a636d['origtransfereruniqueid'],queues[_0x4a636d[_0x6077('0x4f')]][_0x6077('0x2b')],_0x4a636d[_0x6077('0x53')]));queues[_0x4a636d['secondtransfererlinkedid']][_0x6077('0xf')]=_0x4a636d[_0x6077('0x53')];}}}}catch(_0x1b5e90){utils[_0x6077('0x1f')](util[_0x6077('0x11')](_0x6077('0x60'),_0x4a636d[_0x6077('0x4e')]),_0x1b5e90);}};exports[_0x6077('0x61')]=function(_0x3a73d5){try{if(!_[_0x6077('0x17')](queues[_0x3a73d5[_0x6077('0x5')]])){utils[_0x6077('0x20')](util['format'](_0x6077('0x62'),_0x3a73d5[_0x6077('0x5')]),_0x3a73d5);queues[_0x3a73d5[_0x6077('0x5')]][_0x6077('0x63')]=utils['now']();utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x64'),_0x3a73d5[_0x6077('0x5')],queues[_0x3a73d5[_0x6077('0x5')]]['name'],queues[_0x3a73d5['uniqueid']][_0x6077('0x63')]));}}catch(_0xd83629){utils[_0x6077('0x1f')](util[_0x6077('0x11')](_0x6077('0x62'),_0x3a73d5[_0x6077('0x5')]),_0xd83629);}};exports['musiconholdstop']=function(_0x50e01c){try{if(!_[_0x6077('0x17')](queues[_0x50e01c[_0x6077('0x5')]])){if(!_['isNil'](queues[_0x50e01c['uniqueid']]['musiconholdstartAt'])){utils[_0x6077('0x20')](util[_0x6077('0x11')]('[%s][queues][musiconholdstop]',_0x50e01c[_0x6077('0x5')]),_0x50e01c);queues[_0x50e01c[_0x6077('0x5')]][_0x6077('0x58')]+=utils['diffTime'](utils[_0x6077('0x15')](),queues[_0x50e01c['uniqueid']][_0x6077('0x63')]);utils[_0x6077('0x3')](util[_0x6077('0x11')](_0x6077('0x65'),_0x50e01c[_0x6077('0x5')],queues[_0x50e01c[_0x6077('0x5')]][_0x6077('0x2b')],queues[_0x50e01c['uniqueid']][_0x6077('0x58')]));delete queues[_0x50e01c[_0x6077('0x5')]][_0x6077('0x63')];}}}catch(_0x3c511e){utils['error'](util['format'](_0x6077('0x66'),_0x50e01c['uniqueid']),_0x3c511e);}};
\ No newline at end of file
+var _0xf44a=['musiconholdstop','[%s][queues][musiconholdstop]','diffTime','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','./utils','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','info','position','assign','now','error','hangup','isNil','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','[%s][queues][hangup]','variable','queuestatus','value','toUpperCase','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][varset]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]','connectedlinename','holdtime','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','destaccountcode','assigned','membername','agentcomplete','[%s][queues][agentcomplete]','lastAssignedTo','queuecallercompleteAt','reason','transfer','TRANSFER','COMPLETEDBY','blindtransfer','[%s][queues][blindtransfer]','transfereeuniqueid','transfertype','BLIND','transferexten','extension','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','secondtransfererlinkedid','ATTENDED','transferuniqueid','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','transfertargetlinkedid','queuecallerjoinAt','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s'];(function(_0x5d4deb,_0x35bb40){var _0x4f2974=function(_0x4731a4){while(--_0x4731a4){_0x5d4deb['push'](_0x5d4deb['shift']());}};_0x4f2974(++_0x35bb40);}(_0xf44a,0x145));var _0xaf44=function(_0x234810,_0xe73cc8){_0x234810=_0x234810-0x0;var _0x16af9b=_0xf44a[_0x234810];return _0x16af9b;};'use strict';var _=require(_0xaf44('0x0'));var util=require(_0xaf44('0x1'));var utils=require(_0xaf44('0x2'));var queues={};function writeDB(_0x556468){utils['info'](util[_0xaf44('0x3')](_0xaf44('0x4'),_0x556468[_0xaf44('0x5')],_0x556468[_0xaf44('0x6')],_0x556468[_0xaf44('0x7')],_0x556468['lastAssignedTo'],_0x556468[_0xaf44('0x8')],_0x556468[_0xaf44('0x9')],_0x556468[_0xaf44('0xa')]));if(_0x556468['queue']){utils[_0xaf44('0xb')](_0x556468[_0xaf44('0x7')])[_0xaf44('0xc')](function(_0x239a99){if(_0x239a99){_0x556468[_0xaf44('0xd')]=_0x239a99[_0xaf44('0xd')];}utils[_0xaf44('0xe')]('CreateVoiceQueueReport',_0x556468);});}else{utils[_0xaf44('0xe')](_0xaf44('0xf'),_0x556468);}if(_0x556468[_0xaf44('0x10')]){delete queues[_0x556468[_0xaf44('0x10')]];}else{delete queues[_0x556468[_0xaf44('0x5')]];}}exports[_0xaf44('0x11')]=function(_0xa53daf){try{utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x13'),_0xa53daf[_0xaf44('0x5')]),_0xa53daf);utils[_0xaf44('0x14')](util[_0xaf44('0x3')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0xa53daf['uniqueid'],_0xa53daf[_0xaf44('0x7')],_0xa53daf[_0xaf44('0x15')]));queues[_0xa53daf[_0xaf44('0x5')]]=_[_0xaf44('0x16')](_0xa53daf,{'originalposition':_0xa53daf[_0xaf44('0x15')],'queuecallerjoinAt':utils[_0xaf44('0x17')](),'mohtime':0x0});}catch(_0x41da2a){utils[_0xaf44('0x18')](util['format'](_0xaf44('0x13'),_0xa53daf[_0xaf44('0x5')]),_0x41da2a);}};exports[_0xaf44('0x19')]=function(_0x522716){try{if(!_[_0xaf44('0x1a')](queues[_0x522716[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util['format']('[%s][queues][hangup]',_0x522716['uniqueid']),_0x522716);if(queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x1b')]){if(!queues[_0x522716['uniqueid']][_0xaf44('0x1c')]&&!queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x1d')]){queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x1e')]=!![];queues[_0x522716[_0xaf44('0x5')]]['queuecallercompleteAt']=utils[_0xaf44('0x17')]();queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0xa')]=_0xaf44('0x1f');}utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x20'),_0x522716[_0xaf44('0x5')],queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0xa')]));writeDB(queues[_0x522716['uniqueid']]);}else if(queues[_0x522716['uniqueid']]['transfereduniqueid']){utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x22'),_0x522716['uniqueid'],queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x522716['uniqueid']]['transfereduniqueid']));queues[queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x10')]]=queues[_0x522716['uniqueid']];queues[queues[_0x522716[_0xaf44('0x5')]][_0xaf44('0x10')]][_0xaf44('0x23')]=0x2;delete queues[_0x522716[_0xaf44('0x5')]];}}}catch(_0x27df93){utils[_0xaf44('0x18')](util['format'](_0xaf44('0x24'),_0x522716[_0xaf44('0x5')]),_0x27df93);}};exports['varset']=function(_0x45a3ec){try{utils['debug'](util[_0xaf44('0x3')]('[%s][queues][varset]',_0x45a3ec[_0xaf44('0x5')]),_0x45a3ec);if(!_[_0xaf44('0x1a')](_0x45a3ec[_0xaf44('0x25')][_0xaf44('0x26')])&&_0x45a3ec[_0xaf44('0x27')][_0xaf44('0x28')]()!=='CONTINUE'){if(!_[_0xaf44('0x1a')](queues[_0x45a3ec[_0xaf44('0x5')]])){queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerabandon']=![];queues[_0x45a3ec['uniqueid']][_0xaf44('0x29')]=null;queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexit']=!![];queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x2a')]=utils[_0xaf44('0x17')]();queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0xa')]=_0x45a3ec[_0xaf44('0x27')][_0xaf44('0x28')]();utils[_0xaf44('0x14')](util['format'](_0xaf44('0x2b'),_0x45a3ec[_0xaf44('0x5')],queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x21')],_0x45a3ec[_0xaf44('0x27')],queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexitreason']));writeDB(queues[_0x45a3ec[_0xaf44('0x5')]]);}}else if(!_[_0xaf44('0x1a')](_0x45a3ec['variable'][_0xaf44('0x2c')])){if(!_[_0xaf44('0x1a')](queues[_0x45a3ec['uniqueid']])&&!queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerabandon']){queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x29')]=null;queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexit']=!![];queues[_0x45a3ec[_0xaf44('0x5')]]['queuecallerexitAt']=utils[_0xaf44('0x17')]();queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0xa')]='EXITWITHKEY';utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x2d'),_0x45a3ec[_0xaf44('0x5')],queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0x21')],_0x45a3ec[_0xaf44('0x27')],queues[_0x45a3ec[_0xaf44('0x5')]][_0xaf44('0xa')]));}}}catch(_0x273e5e){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x2e'),_0x45a3ec[_0xaf44('0x5')]),_0x273e5e);}};exports[_0xaf44('0x1c')]=function(_0x58bfed){try{if(!_[_0xaf44('0x1a')](queues[_0x58bfed['uniqueid']])){utils['debug'](util['format']('[%s][queues][queuecallerabandon]',_0x58bfed[_0xaf44('0x5')]),_0x58bfed);queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0x1d')]=![];queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0x2a')]=null;queues[_0x58bfed['uniqueid']][_0xaf44('0x1c')]=!![];queues[_0x58bfed['uniqueid']][_0xaf44('0x29')]=utils[_0xaf44('0x17')]();queues[_0x58bfed['uniqueid']][_0xaf44('0xa')]=_0xaf44('0x2f');utils['info'](util[_0xaf44('0x3')](_0xaf44('0x30'),_0x58bfed[_0xaf44('0x5')],queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x58bfed[_0xaf44('0x5')]][_0xaf44('0xa')]));}}catch(_0x2988a6){utils[_0xaf44('0x18')](util['format'](_0xaf44('0x31'),_0x58bfed['uniqueid']),_0x2988a6);}};exports[_0xaf44('0x32')]=function(_0x1f861e){try{if(!_[_0xaf44('0x1a')](queues[_0x1f861e[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x33'),_0x1f861e['uniqueid']),_0x1f861e);utils['info'](util[_0xaf44('0x3')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x1f861e['uniqueid'],queues[_0x1f861e['uniqueid']][_0xaf44('0x21')],_0x1f861e['connectedlinenum'],_0x1f861e[_0xaf44('0x34')]));queues[_0x1f861e['uniqueid']]['queuecallerleave']=!![];queues[_0x1f861e['uniqueid']][_0xaf44('0x1b')]=utils[_0xaf44('0x17')]();queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x35')]=utils['diffTime'](queues[_0x1f861e['uniqueid']][_0xaf44('0x1b')],queues[_0x1f861e[_0xaf44('0x5')]]['queuecallerjoinAt']);queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x15')]=_0x1f861e[_0xaf44('0x15')];queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x36')]=_0x1f861e[_0xaf44('0x36')];queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x37')]=_0x1f861e[_0xaf44('0x37')];queues[_0x1f861e[_0xaf44('0x5')]][_0xaf44('0x34')]=_0x1f861e[_0xaf44('0x34')];}}catch(_0x29f2e3){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x33'),_0x1f861e[_0xaf44('0x5')]),_0x29f2e3);}};exports[_0xaf44('0x38')]=function(_0x596efe){try{if(!_[_0xaf44('0x1a')](queues[_0x596efe[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x39'),_0x596efe[_0xaf44('0x5')]),_0x596efe);utils['info'](util[_0xaf44('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x596efe[_0xaf44('0x5')],queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x21')],_0x596efe['membername'],_0x596efe[_0xaf44('0x3a')]));queues[_0x596efe['uniqueid']]['queuecallerabandon']=![];queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x29')]=null;queues[_0x596efe['uniqueid']][_0xaf44('0x1d')]=![];queues[_0x596efe['uniqueid']][_0xaf44('0xa')]=null;queues[_0x596efe[_0xaf44('0x5')]]['queuecallerexitAt']=null;queues[_0x596efe[_0xaf44('0x5')]][_0xaf44('0x3b')]=!![];queues[_0x596efe[_0xaf44('0x5')]]['accountcode']=_0x596efe[_0xaf44('0x3a')];queues[_0x596efe[_0xaf44('0x5')]]['lastAssignedTo']=_0x596efe[_0xaf44('0x3c')];}}catch(_0x43508e){utils['error'](util['format']('[%s][queues][agentconnect]',_0x596efe[_0xaf44('0x5')]),_0x43508e);}};exports[_0xaf44('0x3d')]=function(_0x61c662){try{if(!_[_0xaf44('0x1a')](queues[_0x61c662['uniqueid']])){if(queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x1b')]){utils['debug'](util[_0xaf44('0x3')](_0xaf44('0x3e'),_0x61c662[_0xaf44('0x5')]),_0x61c662);queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x1c')]=![];queues[_0x61c662[_0xaf44('0x5')]]['queuecallerabandonAt']=null;queues[_0x61c662[_0xaf44('0x5')]]['queuecallerexit']=![];queues[_0x61c662['uniqueid']][_0xaf44('0x2a')]=null;queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x3b')]=!![];queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x3f')]=_0x61c662[_0xaf44('0x3c')];queues[_0x61c662[_0xaf44('0x5')]]['queuecallercomplete']=!![];queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x40')]=utils[_0xaf44('0x17')]();if(_0x61c662[_0xaf44('0x41')]==_0xaf44('0x42')){if(!queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0x42')]){queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0xa')]=_0xaf44('0x43');}}else{queues[_0x61c662[_0xaf44('0x5')]][_0xaf44('0xa')]=_0xaf44('0x44')+_0x61c662[_0xaf44('0x41')][_0xaf44('0x28')]();}utils[_0xaf44('0x14')](util[_0xaf44('0x3')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x61c662[_0xaf44('0x5')],queues[_0x61c662['uniqueid']]['name'],_0x61c662[_0xaf44('0x3c')],queues[_0x61c662['uniqueid']][_0xaf44('0xa')]));writeDB(queues[_0x61c662['uniqueid']]);}}}catch(_0x5414bc){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x3e'),_0x61c662[_0xaf44('0x5')]),_0x5414bc);}};exports[_0xaf44('0x45')]=function(_0x443b3b){try{if(!_['isNil'](queues[_0x443b3b['transfereeuniqueid']])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x46'),_0x443b3b['uniqueid']),_0x443b3b);queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x42')]=!![];queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x48')]=_0xaf44('0x49');queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x4a')]=_0x443b3b[_0xaf44('0x4b')];queues[_0x443b3b[_0xaf44('0x47')]]['transferuniqueid']=_0x443b3b['transfereeuniqueid'];queues[_0x443b3b[_0xaf44('0x47')]]['queuecallerexitreason']=_0xaf44('0x4c');utils[_0xaf44('0x14')](util['format'](_0xaf44('0x4d'),_0x443b3b[_0xaf44('0x5')],queues[_0x443b3b[_0xaf44('0x47')]][_0xaf44('0x21')],_0x443b3b[_0xaf44('0x47')],_0x443b3b[_0xaf44('0x4b')]));}}catch(_0x2f0deb){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x46'),_0x443b3b[_0xaf44('0x5')]),_0x2f0deb);}};exports[_0xaf44('0x4e')]=function(_0x3a1580){try{utils[_0xaf44('0x12')](util['format'](_0xaf44('0x4f'),_0x3a1580[_0xaf44('0x50')]),_0x3a1580);if(_0x3a1580[_0xaf44('0x50')]==_0x3a1580[_0xaf44('0x51')]){if(!_['isNil'](queues[_0x3a1580['secondtransfererlinkedid']])){utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x52'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x21')],_0x3a1580[_0xaf44('0x53')]));queues[_0x3a1580[_0xaf44('0x54')]]['transfer']=!![];queues[_0x3a1580[_0xaf44('0x54')]]['transfertype']=_0xaf44('0x55');queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0x4a')]=_0x3a1580[_0xaf44('0x53')];queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0x56')]=_0x3a1580[_0xaf44('0x50')];queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0xa')]=_0xaf44('0x57');}if(!_[_0xaf44('0x1a')](queues[_0x3a1580[_0xaf44('0x51')]])){if(_0x3a1580[_0xaf44('0x58')]&&queues[_0x3a1580[_0xaf44('0x58')]]){queues[_0x3a1580['transfereelinkedid']][_0xaf44('0x23')]=0x1;queues[_0x3a1580['transfereeuniqueid']]=_[_0xaf44('0x59')](queues[_0x3a1580['transfereelinkedid']]);queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x10')]=_0x3a1580[_0xaf44('0x5a')];queues[_0x3a1580[_0xaf44('0x47')]]['queuecallerenterreason']=0x2;queues[_0x3a1580['transfereeuniqueid']][_0xaf44('0x8')]=queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x8')];queues[_0x3a1580[_0xaf44('0x47')]]['calleridname']=queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x5b')];queues[_0x3a1580[_0xaf44('0x47')]]['queuecallerjoinAt']=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x1b')]=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x35')]=0x0;queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x5c')]=0x0;utils['info'](util[_0xaf44('0x3')](_0xaf44('0x5d'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580[_0xaf44('0x47')]][_0xaf44('0x21')],queues[_0x3a1580['transfereeuniqueid']][_0xaf44('0x8')],queues[_0x3a1580['transfereeuniqueid']]['calleridname']));}else{utils['info'](util['format'](_0xaf44('0x5e'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580['origtransfererlinkedid']][_0xaf44('0x21')],_0x3a1580[_0xaf44('0x54')]));queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x10')]=_0x3a1580[_0xaf44('0x54')];}}}else if(_0x3a1580[_0xaf44('0x5f')]==_0x3a1580[_0xaf44('0x54')]){if(!_[_0xaf44('0x1a')](queues[_0x3a1580[_0xaf44('0x51')]])){utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x60'),_0x3a1580[_0xaf44('0x50')],queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x21')],_0x3a1580['secondtransfereruniqueid'],_0x3a1580['secondtransfererexten']));queues[_0x3a1580[_0xaf44('0x51')]]['transfer']=!![];queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x48')]=_0xaf44('0x55');queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x4a')]=_0x3a1580[_0xaf44('0x61')];queues[_0x3a1580['origtransfererlinkedid']]['transferuniqueid']=_0x3a1580[_0xaf44('0x5f')];queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0xa')]=_0xaf44('0x57');}if(!_['isNil'](queues[_0x3a1580[_0xaf44('0x54')]])){if(_0x3a1580['transfertargetlinkedid']&&queues[_0x3a1580['transfertargetlinkedid']]){queues[_0x3a1580[_0xaf44('0x62')]][_0xaf44('0x23')]=0x1;queues[_0x3a1580['transfertargetuniqueid']]=_[_0xaf44('0x59')](queues[_0x3a1580[_0xaf44('0x62')]]);queues[_0x3a1580[_0xaf44('0x5a')]]['transfereduniqueid']=_0x3a1580[_0xaf44('0x5a')];queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x23')]=0x2;queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x8')]=queues[_0x3a1580[_0xaf44('0x51')]][_0xaf44('0x8')];queues[_0x3a1580['transfertargetuniqueid']][_0xaf44('0x5b')]=queues[_0x3a1580[_0xaf44('0x51')]]['calleridname'];queues[_0x3a1580['transfertargetuniqueid']][_0xaf44('0x63')]=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x1b')]=utils[_0xaf44('0x17')]();queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x35')]=0x0;queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x5c')]=0x0;utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x64'),_0x3a1580['origtransfereruniqueid'],queues[_0x3a1580[_0xaf44('0x5a')]]['name'],queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x10')],queues[_0x3a1580[_0xaf44('0x5a')]][_0xaf44('0x8')],queues[_0x3a1580['transfertargetuniqueid']][_0xaf44('0x5b')]));}else{utils[_0xaf44('0x14')](util[_0xaf44('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x3a1580['origtransfereruniqueid'],queues[_0x3a1580[_0xaf44('0x54')]][_0xaf44('0x21')],_0x3a1580[_0xaf44('0x51')]));queues[_0x3a1580['secondtransfererlinkedid']][_0xaf44('0x10')]=_0x3a1580[_0xaf44('0x51')];}}}}catch(_0x1a2d39){utils[_0xaf44('0x18')](util[_0xaf44('0x3')](_0xaf44('0x4f'),_0x3a1580[_0xaf44('0x50')]),_0x1a2d39);}};exports['musiconholdstart']=function(_0x451a0f){try{if(!_[_0xaf44('0x1a')](queues[_0x451a0f[_0xaf44('0x5')]])){utils[_0xaf44('0x12')](util['format']('[%s][queues][musiconholdstart]',_0x451a0f[_0xaf44('0x5')]),_0x451a0f);queues[_0x451a0f['uniqueid']][_0xaf44('0x65')]=utils[_0xaf44('0x17')]();utils[_0xaf44('0x14')](util['format'](_0xaf44('0x66'),_0x451a0f[_0xaf44('0x5')],queues[_0x451a0f[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x451a0f['uniqueid']][_0xaf44('0x65')]));}}catch(_0x27b099){utils[_0xaf44('0x18')](util[_0xaf44('0x3')]('[%s][queues][musiconholdstart]',_0x451a0f[_0xaf44('0x5')]),_0x27b099);}};exports[_0xaf44('0x67')]=function(_0x45bbe4){try{if(!_[_0xaf44('0x1a')](queues[_0x45bbe4[_0xaf44('0x5')]])){if(!_[_0xaf44('0x1a')](queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x65')])){utils[_0xaf44('0x12')](util[_0xaf44('0x3')](_0xaf44('0x68'),_0x45bbe4[_0xaf44('0x5')]),_0x45bbe4);queues[_0x45bbe4[_0xaf44('0x5')]]['mohtime']+=utils[_0xaf44('0x69')](utils[_0xaf44('0x17')](),queues[_0x45bbe4[_0xaf44('0x5')]]['musiconholdstartAt']);utils[_0xaf44('0x14')](util[_0xaf44('0x3')](_0xaf44('0x6a'),_0x45bbe4[_0xaf44('0x5')],queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x21')],queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x5c')]));delete queues[_0x45bbe4[_0xaf44('0x5')]][_0xaf44('0x65')];}}}catch(_0x27ba4d){utils['error'](util['format'](_0xaf44('0x68'),_0x45bbe4['uniqueid']),_0x27ba4d);}};
\ No newline at end of file
index 8465726..3f8ffd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bb4=['uniqueid','linkedid','context','exten','channel','error','[%s][recordings][newchannel]','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','replace','.wav49','find','monitors','push','hangup','[%s][recordings][hangup]','calleridnum','calleridname','connectedlinenum','type','outbound','connectedlinename','clone','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','./utils','info','format','[%s][recordings][writeDB]','accountcode','getUserByInternal','then','name','UserId','CreateVoiceRecording','newchannel','debug'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x8bb4,0x11f));var _0x48bb=function(_0x3b75ec,_0x512781){_0x3b75ec=_0x3b75ec-0x0;var _0x265d2f=_0x8bb4[_0x3b75ec];return _0x265d2f;};'use strict';var _=require(_0x48bb('0x0'));var util=require('util');var utils=require(_0x48bb('0x1'));var recordings={};function writeDB(_0x3e2bb2){utils[_0x48bb('0x2')](util[_0x48bb('0x3')](_0x48bb('0x4'),_0x3e2bb2['uniqueid']));if(_0x3e2bb2[_0x48bb('0x5')]){utils[_0x48bb('0x6')](_0x3e2bb2[_0x48bb('0x5')])[_0x48bb('0x7')](function(_0x15fb05){if(_0x15fb05){_0x3e2bb2['membername']=_0x15fb05[_0x48bb('0x8')];_0x3e2bb2[_0x48bb('0x9')]=_0x15fb05['id'];}utils['request'](_0x48bb('0xa'),_0x3e2bb2);});}else{utils['request']('CreateVoiceRecording',_0x3e2bb2);}}exports[_0x48bb('0xb')]=function(_0x417b41){try{utils[_0x48bb('0xc')](util[_0x48bb('0x3')]('[%s][recordings][newchannel]',_0x417b41[_0x48bb('0xd')]),_0x417b41);if(_0x417b41[_0x48bb('0xd')]==_0x417b41[_0x48bb('0xe')]){utils[_0x48bb('0x2')](util[_0x48bb('0x3')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x417b41[_0x48bb('0xd')],_0x417b41[_0x48bb('0xf')],_0x417b41[_0x48bb('0x10')]));recordings[_0x417b41['uniqueid']]={'uniqueid':_0x417b41['uniqueid'],'accountcode':_0x417b41[_0x48bb('0x5')],'exten':_0x417b41[_0x48bb('0x10')],'context':_0x417b41[_0x48bb('0xf')],'channel':_0x417b41[_0x48bb('0x11')],'monitors':[]};}}catch(_0x1e7d72){utils[_0x48bb('0x12')](util['format'](_0x48bb('0x13'),_0x417b41[_0x48bb('0xd')]),_0x1e7d72);}};exports[_0x48bb('0x14')]=function(_0x131e88){try{utils['debug'](util['format'](_0x48bb('0x15'),_0x131e88[_0x48bb('0xd')]),_0x131e88);if(!_[_0x48bb('0x16')](recordings[_0x131e88[_0x48bb('0xd')]])&&_0x131e88[_0x48bb('0x17')]==0x6){utils[_0x48bb('0x2')](util[_0x48bb('0x3')](_0x48bb('0x18'),_0x131e88['uniqueid'],_0x131e88['context'],_0x131e88[_0x48bb('0x11')]));}else if(!_['isNil'](recordings[_0x131e88[_0x48bb('0xe')]])&&_0x131e88[_0x48bb('0x17')]==0x6&&_0x131e88[_0x48bb('0xf')]!='transfer'){utils['info'](util[_0x48bb('0x3')](_0x48bb('0x19'),_0x131e88[_0x48bb('0xd')],_0x131e88[_0x48bb('0xe')],_0x131e88[_0x48bb('0xf')],_0x131e88[_0x48bb('0x11')]));recordings[_0x131e88[_0x48bb('0xe')]]['accountcode']=_0x131e88['accountcode'];}}catch(_0x536def){utils[_0x48bb('0x12')](util[_0x48bb('0x3')]('[%s][recordings][newstate]',_0x131e88[_0x48bb('0xd')]),_0x536def);}};exports['varset']=function(_0x27d6b3){try{if(!_['isNil'](_0x27d6b3[_0x48bb('0x1a')])&&!_[_0x48bb('0x16')](_0x27d6b3['variable'][_0x48bb('0x1b')])){utils[_0x48bb('0xc')](util[_0x48bb('0x3')](_0x48bb('0x1c'),_0x27d6b3[_0x48bb('0xd')]),_0x27d6b3);utils[_0x48bb('0x2')](util[_0x48bb('0x3')](_0x48bb('0x1d'),_0x27d6b3[_0x48bb('0xd')],_0x27d6b3[_0x48bb('0x1a')],_0x27d6b3[_0x48bb('0x1e')]));if(_['endsWith'](_0x27d6b3['value'],'.wav49')){_0x27d6b3[_0x48bb('0x1e')]=_0x27d6b3[_0x48bb('0x1e')][_0x48bb('0x1f')](_0x48bb('0x20'),'.WAV');}if(recordings[_0x27d6b3[_0x48bb('0xe')]]){var _0x216b79=_[_0x48bb('0x21')](recordings[_0x27d6b3[_0x48bb('0xe')]][_0x48bb('0x22')],{'value':_0x27d6b3[_0x48bb('0x1e')]});if(_[_0x48bb('0x16')](_0x216b79)){recordings[_0x27d6b3[_0x48bb('0xe')]][_0x48bb('0x22')][_0x48bb('0x23')]({'value':_0x27d6b3[_0x48bb('0x1e')]});}}}}catch(_0x4ceca8){utils[_0x48bb('0x12')](util[_0x48bb('0x3')]('[%s][recordings][varset]',_0x27d6b3[_0x48bb('0xd')]),_0x4ceca8);}};exports[_0x48bb('0x24')]=function(_0x4699a8){try{if(!_['isNil'](recordings[_0x4699a8[_0x48bb('0xd')]])){utils[_0x48bb('0xc')](util['format'](_0x48bb('0x25'),_0x4699a8['uniqueid']),_0x4699a8);utils[_0x48bb('0x2')](util['format']('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x4699a8[_0x48bb('0xd')],_0x4699a8[_0x48bb('0x26')],_0x4699a8['calleridname'],_0x4699a8['cause-txt']));recordings[_0x4699a8[_0x48bb('0xd')]][_0x48bb('0x26')]=_0x4699a8['calleridnum'];recordings[_0x4699a8['uniqueid']][_0x48bb('0x27')]=_0x4699a8['calleridname'];recordings[_0x4699a8[_0x48bb('0xd')]][_0x48bb('0x28')]=_0x4699a8[_0x48bb('0x28')];recordings[_0x4699a8[_0x48bb('0xd')]]['connectedlinename']=_0x4699a8['connectedlinename'];if(recordings[_0x4699a8[_0x48bb('0xd')]][_0x48bb('0x29')]==_0x48bb('0x2a')&&recordings[_0x4699a8[_0x48bb('0xd')]]['accountcode']){recordings[_0x4699a8['uniqueid']][_0x48bb('0x28')]=recordings[_0x4699a8['uniqueid']][_0x48bb('0x5')];recordings[_0x4699a8['uniqueid']][_0x48bb('0x2b')]='';}recordings[_0x4699a8[_0x48bb('0xd')]]['monitors']['forEach'](function(_0x607943){var _0x343466=_[_0x48bb('0x2c')](recordings[_0x4699a8[_0x48bb('0xd')]]);_0x343466[_0x48bb('0x1e')]=_0x607943[_0x48bb('0x1e')];writeDB(_0x343466);});delete recordings[_0x4699a8[_0x48bb('0xd')]];}}catch(_0x297ae1){utils[_0x48bb('0x12')](util['format'](_0x48bb('0x25'),_0x4699a8['uniqueid']),_0x297ae1);}};exports['newexten']=function(_0x4ec30c){try{if(!_[_0x48bb('0x16')](recordings[_0x4ec30c[_0x48bb('0xd')]])){utils['debug'](util[_0x48bb('0x3')](_0x48bb('0x2d'),_0x4ec30c[_0x48bb('0xd')]),_0x4ec30c);utils[_0x48bb('0x2')](util[_0x48bb('0x3')](_0x48bb('0x2e'),_0x4ec30c[_0x48bb('0xd')],_0x4ec30c[_0x48bb('0x2f')],_0x4ec30c[_0x48bb('0x30')]));if(_0x4ec30c[_0x48bb('0x2f')][_0x48bb('0x31')]()==_0x48bb('0x32')&&_[_0x48bb('0x33')](_0x4ec30c[_0x48bb('0x30')][_0x48bb('0x31')](),_0x48bb('0x34'))){var _0x653e44=_0x4ec30c[_0x48bb('0x30')][_0x48bb('0x35')]('=');var _0x442115=_0x653e44[0x0][_0x48bb('0x36')](_0x653e44[0x0][_0x48bb('0x37')]('(')+0x1,_0x653e44[0x0]['lastIndexOf'](')'));var _0x2b931a=_0x653e44[0x1];recordings[_0x4ec30c[_0x48bb('0xd')]][_0x442115]=_0x2b931a;}}}catch(_0x54e2a3){utils[_0x48bb('0x12')](util[_0x48bb('0x3')]('[%s][recordings][newexten]',_0x4ec30c[_0x48bb('0xd')]),_0x54e2a3);}};exports[_0x48bb('0x38')]=function(_0x543364){try{if(!_['isNil'](recordings[_0x543364[_0x48bb('0xd')]])){utils['debug'](util['format'](_0x48bb('0x39'),_0x543364[_0x48bb('0xd')]),_0x543364);utils[_0x48bb('0x2')](util['format'](_0x48bb('0x3a'),_0x543364[_0x48bb('0xd')],_0x543364[_0x48bb('0x3b')]));recordings[_0x543364['uniqueid']][_0x48bb('0x3b')]=_0x543364[_0x48bb('0x3b')];}}catch(_0x280e62){utils[_0x48bb('0x12')](util['format'](_0x48bb('0x39'),_0x543364[_0x48bb('0xd')]),_0x280e62);}};
\ No newline at end of file
+var _0xb6cb=['channel','error','newstate','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','[%s][recordings][newstate]','varset','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','lodash','util','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','then','request','CreateVoiceRecording','newchannel','debug','format','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xb6cb,0x6f));var _0xbb6c=function(_0x3f1861,_0x7b4285){_0x3f1861=_0x3f1861-0x0;var _0x7ca70a=_0xb6cb[_0x3f1861];return _0x7ca70a;};'use strict';var _=require(_0xbb6c('0x0'));var util=require(_0xbb6c('0x1'));var utils=require('./utils');var recordings={};function writeDB(_0x4a585e){utils['info'](util['format'](_0xbb6c('0x2'),_0x4a585e[_0xbb6c('0x3')]));if(_0x4a585e[_0xbb6c('0x4')]){utils[_0xbb6c('0x5')](_0x4a585e[_0xbb6c('0x4')])[_0xbb6c('0x6')](function(_0x2e6ce3){if(_0x2e6ce3){_0x4a585e['membername']=_0x2e6ce3['name'];_0x4a585e['UserId']=_0x2e6ce3['id'];}utils[_0xbb6c('0x7')](_0xbb6c('0x8'),_0x4a585e);});}else{utils['request']('CreateVoiceRecording',_0x4a585e);}}exports[_0xbb6c('0x9')]=function(_0x323654){try{utils[_0xbb6c('0xa')](util[_0xbb6c('0xb')]('[%s][recordings][newchannel]',_0x323654[_0xbb6c('0x3')]),_0x323654);if(_0x323654[_0xbb6c('0x3')]==_0x323654[_0xbb6c('0xc')]){utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0xe'),_0x323654[_0xbb6c('0x3')],_0x323654[_0xbb6c('0xf')],_0x323654['exten']));recordings[_0x323654[_0xbb6c('0x3')]]={'uniqueid':_0x323654[_0xbb6c('0x3')],'accountcode':_0x323654[_0xbb6c('0x4')],'exten':_0x323654[_0xbb6c('0x10')],'context':_0x323654['context'],'channel':_0x323654[_0xbb6c('0x11')],'monitors':[]};}}catch(_0xa2c9e9){utils[_0xbb6c('0x12')](util['format']('[%s][recordings][newchannel]',_0x323654[_0xbb6c('0x3')]),_0xa2c9e9);}};exports[_0xbb6c('0x13')]=function(_0x1c701d){try{utils[_0xbb6c('0xa')](util['format']('[%s][recordings][newstate]',_0x1c701d[_0xbb6c('0x3')]),_0x1c701d);if(!_['isNil'](recordings[_0x1c701d['uniqueid']])&&_0x1c701d[_0xbb6c('0x14')]==0x6){utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0x15'),_0x1c701d[_0xbb6c('0x3')],_0x1c701d[_0xbb6c('0xf')],_0x1c701d[_0xbb6c('0x11')]));}else if(!_[_0xbb6c('0x16')](recordings[_0x1c701d[_0xbb6c('0xc')]])&&_0x1c701d['channelstate']==0x6&&_0x1c701d[_0xbb6c('0xf')]!=_0xbb6c('0x17')){utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0x18'),_0x1c701d[_0xbb6c('0x3')],_0x1c701d[_0xbb6c('0xc')],_0x1c701d['context'],_0x1c701d[_0xbb6c('0x11')]));recordings[_0x1c701d['linkedid']]['accountcode']=_0x1c701d[_0xbb6c('0x4')];}}catch(_0x335b90){utils['error'](util['format'](_0xbb6c('0x19'),_0x1c701d[_0xbb6c('0x3')]),_0x335b90);}};exports[_0xbb6c('0x1a')]=function(_0x44d54a){try{if(!_[_0xbb6c('0x16')](_0x44d54a['variable'])&&!_['isNil'](_0x44d54a['variable'][_0xbb6c('0x1b')])){utils[_0xbb6c('0xa')](util['format'](_0xbb6c('0x1c'),_0x44d54a[_0xbb6c('0x3')]),_0x44d54a);utils['info'](util[_0xbb6c('0xb')](_0xbb6c('0x1d'),_0x44d54a[_0xbb6c('0x3')],_0x44d54a['variable'],_0x44d54a[_0xbb6c('0x1e')]));if(_['endsWith'](_0x44d54a['value'],_0xbb6c('0x1f'))){_0x44d54a['value']=_0x44d54a[_0xbb6c('0x1e')][_0xbb6c('0x20')]('.wav49',_0xbb6c('0x21'));}if(recordings[_0x44d54a['linkedid']]){var _0x4ee5fb=_[_0xbb6c('0x22')](recordings[_0x44d54a[_0xbb6c('0xc')]]['monitors'],{'value':_0x44d54a['value']});if(_[_0xbb6c('0x16')](_0x4ee5fb)){recordings[_0x44d54a[_0xbb6c('0xc')]][_0xbb6c('0x23')][_0xbb6c('0x24')]({'value':_0x44d54a[_0xbb6c('0x1e')]});}}}}catch(_0x22acb8){utils[_0xbb6c('0x12')](util['format']('[%s][recordings][varset]',_0x44d54a[_0xbb6c('0x3')]),_0x22acb8);}};exports['hangup']=function(_0x100d28){try{if(!_[_0xbb6c('0x16')](recordings[_0x100d28['uniqueid']])){utils[_0xbb6c('0xa')](util['format'](_0xbb6c('0x25'),_0x100d28[_0xbb6c('0x3')]),_0x100d28);utils[_0xbb6c('0xd')](util['format'](_0xbb6c('0x26'),_0x100d28[_0xbb6c('0x3')],_0x100d28[_0xbb6c('0x27')],_0x100d28[_0xbb6c('0x28')],_0x100d28[_0xbb6c('0x29')]));recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x27')]=_0x100d28['calleridnum'];recordings[_0x100d28['uniqueid']][_0xbb6c('0x28')]=_0x100d28[_0xbb6c('0x28')];recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2a')]=_0x100d28[_0xbb6c('0x2a')];recordings[_0x100d28[_0xbb6c('0x3')]]['connectedlinename']=_0x100d28[_0xbb6c('0x2b')];if(recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2c')]==_0xbb6c('0x2d')&&recordings[_0x100d28[_0xbb6c('0x3')]]['accountcode']){recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2a')]=recordings[_0x100d28['uniqueid']][_0xbb6c('0x4')];recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x2b')]='';}recordings[_0x100d28[_0xbb6c('0x3')]][_0xbb6c('0x23')][_0xbb6c('0x2e')](function(_0x5476fc){var _0x183b71=_[_0xbb6c('0x2f')](recordings[_0x100d28['uniqueid']]);_0x183b71[_0xbb6c('0x1e')]=_0x5476fc[_0xbb6c('0x1e')];writeDB(_0x183b71);});delete recordings[_0x100d28[_0xbb6c('0x3')]];}}catch(_0x2ef2f8){utils[_0xbb6c('0x12')](util[_0xbb6c('0xb')]('[%s][recordings][hangup]',_0x100d28[_0xbb6c('0x3')]),_0x2ef2f8);}};exports[_0xbb6c('0x30')]=function(_0x5e81dd){try{if(!_[_0xbb6c('0x16')](recordings[_0x5e81dd[_0xbb6c('0x3')]])){utils[_0xbb6c('0xa')](util[_0xbb6c('0xb')](_0xbb6c('0x31'),_0x5e81dd[_0xbb6c('0x3')]),_0x5e81dd);utils[_0xbb6c('0xd')](util['format'](_0xbb6c('0x32'),_0x5e81dd['uniqueid'],_0x5e81dd[_0xbb6c('0x33')],_0x5e81dd[_0xbb6c('0x34')]));if(_0x5e81dd[_0xbb6c('0x33')][_0xbb6c('0x35')]()==_0xbb6c('0x36')&&_[_0xbb6c('0x37')](_0x5e81dd[_0xbb6c('0x34')]['toLowerCase'](),_0xbb6c('0x38'))){var _0x3cf62f=_0x5e81dd[_0xbb6c('0x34')][_0xbb6c('0x39')]('=');var _0x5050c9=_0x3cf62f[0x0][_0xbb6c('0x3a')](_0x3cf62f[0x0][_0xbb6c('0x3b')]('(')+0x1,_0x3cf62f[0x0][_0xbb6c('0x3b')](')'));var _0x192c2b=_0x3cf62f[0x1];recordings[_0x5e81dd['uniqueid']][_0x5050c9]=_0x192c2b;}}}catch(_0x280b8e){utils[_0xbb6c('0x12')](util[_0xbb6c('0xb')](_0xbb6c('0x31'),_0x5e81dd['uniqueid']),_0x280b8e);}};exports[_0xbb6c('0x3c')]=function(_0x42443b){try{if(!_[_0xbb6c('0x16')](recordings[_0x42443b['uniqueid']])){utils['debug'](util[_0xbb6c('0xb')](_0xbb6c('0x3d'),_0x42443b[_0xbb6c('0x3')]),_0x42443b);utils[_0xbb6c('0xd')](util[_0xbb6c('0xb')](_0xbb6c('0x3e'),_0x42443b[_0xbb6c('0x3')],_0x42443b[_0xbb6c('0x3f')]));recordings[_0x42443b[_0xbb6c('0x3')]]['queue']=_0x42443b[_0xbb6c('0x3f')];}}catch(_0x534883){utils[_0xbb6c('0x12')](util['format'](_0xbb6c('0x3d'),_0x42443b[_0xbb6c('0x3')]),_0x534883);}};
\ No newline at end of file
index 270a0f5..efd7cb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04af=['blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','uniqueid','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransferercontext','attended','transfereechannel','transfertargetchannel','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','lodash','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','request'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x04af,0x70));var _0xf04a=function(_0x361da1,_0x1a6c47){_0x361da1=_0x361da1-0x0;var _0x45528d=_0x04af[_0x361da1];return _0x45528d;};'use strict';var _=require(_0xf04a('0x0'));var util=require('util');var utils=require(_0xf04a('0x1'));function writeDB(_0x4b568c){utils[_0xf04a('0x2')](util[_0xf04a('0x3')](_0xf04a('0x4'),_0x4b568c[_0xf04a('0x5')]==='attended'?_0x4b568c[_0xf04a('0x6')]:_0x4b568c['uniqueid'],_0x4b568c[_0xf04a('0x5')]));utils[_0xf04a('0x7')]('CreateVoiceTransferReport',_0x4b568c);}exports[_0xf04a('0x8')]={};exports[_0xf04a('0x9')]=function(_0x635529){try{utils[_0xf04a('0xa')](util['format'](_0xf04a('0xb'),_0x635529[_0xf04a('0xc')]),_0x635529);utils[_0xf04a('0x2')](util['format'](_0xf04a('0xd'),_0x635529['uniqueid'],_0x635529[_0xf04a('0xe')],_0x635529[_0xf04a('0xf')],_0x635529[_0xf04a('0x10')],_0x635529[_0xf04a('0x11')]));_0x635529[_0xf04a('0x5')]=_0xf04a('0x12');exports[_0xf04a('0x8')][_0x635529[_0xf04a('0x13')]]=_0x635529;writeDB(_0x635529);}catch(_0x1b2f64){utils[_0xf04a('0x14')](util[_0xf04a('0x3')](_0xf04a('0xb'),_0x635529[_0xf04a('0xc')]),_0x1b2f64);}};exports[_0xf04a('0x15')]=function(_0x533222){try{utils[_0xf04a('0xa')](util['format'](_0xf04a('0x16'),_0x533222['origtransfereruniqueid']),_0x533222);utils['info'](util[_0xf04a('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x533222[_0xf04a('0x6')],_0x533222[_0xf04a('0x17')],_0x533222[_0xf04a('0x18')],_0x533222[_0xf04a('0x19')],_0x533222[_0xf04a('0x1a')]));_0x533222=_[_0xf04a('0x1b')](_0x533222,{'transfererchannel':_0x533222[_0xf04a('0x1c')],'transferercalleridnum':_0x533222[_0xf04a('0x17')],'transferercalleridname':_0x533222[_0xf04a('0x18')],'transfererconnectedlinenum':_0x533222['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x533222[_0xf04a('0x1d')],'transfereraccountcode':_0x533222[_0xf04a('0x1e')],'transferercontext':_0x533222[_0xf04a('0x1f')],'transfererexten':_0x533222[_0xf04a('0x20')],'transfererlinkedid':_0x533222['origtransfererlinkedid'],'context':_0x533222[_0xf04a('0x21')],'extension':_0x533222['origtransfererexten'],'type':_0xf04a('0x22')});if(_['isNil'](_0x533222[_0xf04a('0x23')])){_0x533222=_['assign'](_0x533222,{'transfereechannel':_0x533222[_0xf04a('0x24')],'transfereecalleridnum':_0x533222[_0xf04a('0x19')],'transfereecalleridname':_0x533222['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x533222['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x533222['transfertargetconnectedlinename'],'transfereeaccountcode':_0x533222[_0xf04a('0x25')],'transfereecontext':_0x533222['transfertargetcontext'],'transfereeexten':_0x533222[_0xf04a('0x26')],'transfereelinkedid':_0x533222[_0xf04a('0x27')]});}writeDB(_0x533222);}catch(_0x56ea74){utils[_0xf04a('0x14')](util[_0xf04a('0x3')](_0xf04a('0x16'),_0x533222[_0xf04a('0x6')]),_0x56ea74);}};
\ No newline at end of file
+var _0xb1ee=['error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinename','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetcontext','transfertargetexten','transfertargetlinkedid','lodash','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','uniqueid','request','CreateVoiceTransferReport','blinds','blindtransfer','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','transfereruniqueid'];(function(_0x3b0a6c,_0x2fee1e){var _0x10a78f=function(_0x2d9172){while(--_0x2d9172){_0x3b0a6c['push'](_0x3b0a6c['shift']());}};_0x10a78f(++_0x2fee1e);}(_0xb1ee,0x1d9));var _0xeb1e=function(_0x5c6244,_0x112ab8){_0x5c6244=_0x5c6244-0x0;var _0x5800ce=_0xb1ee[_0x5c6244];return _0x5800ce;};'use strict';var _=require(_0xeb1e('0x0'));var util=require(_0xeb1e('0x1'));var utils=require(_0xeb1e('0x2'));function writeDB(_0x3ccf3f){utils[_0xeb1e('0x3')](util[_0xeb1e('0x4')](_0xeb1e('0x5'),_0x3ccf3f[_0xeb1e('0x6')]===_0xeb1e('0x7')?_0x3ccf3f['origtransfereruniqueid']:_0x3ccf3f[_0xeb1e('0x8')],_0x3ccf3f[_0xeb1e('0x6')]));utils[_0xeb1e('0x9')](_0xeb1e('0xa'),_0x3ccf3f);}exports[_0xeb1e('0xb')]={};exports[_0xeb1e('0xc')]=function(_0x2959b4){try{utils[_0xeb1e('0xd')](util[_0xeb1e('0x4')](_0xeb1e('0xe'),_0x2959b4[_0xeb1e('0x8')]),_0x2959b4);utils['info'](util[_0xeb1e('0x4')](_0xeb1e('0xf'),_0x2959b4[_0xeb1e('0x8')],_0x2959b4[_0xeb1e('0x10')],_0x2959b4[_0xeb1e('0x11')],_0x2959b4[_0xeb1e('0x12')],_0x2959b4[_0xeb1e('0x13')]));_0x2959b4[_0xeb1e('0x6')]=_0xeb1e('0x14');exports[_0xeb1e('0xb')][_0x2959b4[_0xeb1e('0x15')]]=_0x2959b4;writeDB(_0x2959b4);}catch(_0x1b4ffb){utils[_0xeb1e('0x16')](util['format']('[%s][transfers][blindtransfer]',_0x2959b4[_0xeb1e('0x8')]),_0x1b4ffb);}};exports[_0xeb1e('0x17')]=function(_0x330ae2){try{utils['debug'](util[_0xeb1e('0x4')](_0xeb1e('0x18'),_0x330ae2[_0xeb1e('0x19')]),_0x330ae2);utils[_0xeb1e('0x3')](util[_0xeb1e('0x4')](_0xeb1e('0x1a'),_0x330ae2['origtransfereruniqueid'],_0x330ae2[_0xeb1e('0x1b')],_0x330ae2[_0xeb1e('0x1c')],_0x330ae2[_0xeb1e('0x1d')],_0x330ae2['transfertargetcalleridname']));_0x330ae2=_[_0xeb1e('0x1e')](_0x330ae2,{'transfererchannel':_0x330ae2[_0xeb1e('0x1f')],'transferercalleridnum':_0x330ae2['origtransferercalleridnum'],'transferercalleridname':_0x330ae2[_0xeb1e('0x1c')],'transfererconnectedlinenum':_0x330ae2['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x330ae2[_0xeb1e('0x20')],'transfereraccountcode':_0x330ae2['origtransfereraccountcode'],'transferercontext':_0x330ae2[_0xeb1e('0x21')],'transfererexten':_0x330ae2[_0xeb1e('0x22')],'transfererlinkedid':_0x330ae2[_0xeb1e('0x23')],'context':_0x330ae2[_0xeb1e('0x24')],'extension':_0x330ae2[_0xeb1e('0x25')],'type':_0xeb1e('0x7')});if(_[_0xeb1e('0x26')](_0x330ae2[_0xeb1e('0x27')])){_0x330ae2=_[_0xeb1e('0x1e')](_0x330ae2,{'transfereechannel':_0x330ae2['transfertargetchannel'],'transfereecalleridnum':_0x330ae2[_0xeb1e('0x1d')],'transfereecalleridname':_0x330ae2[_0xeb1e('0x28')],'transfereeconnectedlinenum':_0x330ae2[_0xeb1e('0x29')],'transfereeconnectedlinename':_0x330ae2['transfertargetconnectedlinename'],'transfereeaccountcode':_0x330ae2['transfertargetaccountcode'],'transfereecontext':_0x330ae2[_0xeb1e('0x2a')],'transfereeexten':_0x330ae2[_0xeb1e('0x2b')],'transfereelinkedid':_0x330ae2[_0xeb1e('0x2c')]});}writeDB(_0x330ae2);}catch(_0x30ddd5){utils['error'](util['format'](_0xeb1e('0x18'),_0x330ae2['origtransfereruniqueid']),_0x30ddd5);}};
\ No newline at end of file
index 29944bd..7a3f10d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7e7=['[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','sumTime','now','isAfter','isBefore','jayson/promise','moment','client','http','../../config/logger','xdr','inspect','debug','error','request','then','[utils][request]\x20name:%s','internal','name','stringify','result','length','getUserByInternal','info','found','notfound','catch','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','getUserByName','getVoiceQueueByName','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s'];(function(_0x5db657,_0x2f40b3){var _0x2d6e70=function(_0x358ed2){while(--_0x358ed2){_0x5db657['push'](_0x5db657['shift']());}};_0x2d6e70(++_0x2f40b3);}(_0xc7e7,0x13a));var _0x7c7e=function(_0x349250,_0x39bc5b){_0x349250=_0x349250-0x0;var _0xa77ba9=_0xc7e7[_0x349250];return _0xa77ba9;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x7c7e('0x0'));var moment=require(_0x7c7e('0x1'));var util=require('util');var client=jayson[_0x7c7e('0x2')][_0x7c7e('0x3')]({'port':0x2329});var logger=require(_0x7c7e('0x4'))(_0x7c7e('0x5'));exports['info']=function(_0x340e4,_0x3bbe68){logger['info'](_0x340e4,_0x3bbe68?util[_0x7c7e('0x6')](_0x3bbe68,{'showHidden':![],'depth':null}):'');};exports[_0x7c7e('0x7')]=function(_0x23e0bc,_0x329ede){logger[_0x7c7e('0x7')](_0x23e0bc,_0x329ede?util['inspect'](_0x329ede,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x186bb4,_0x149db2){logger[_0x7c7e('0x8')](_0x186bb4,_0x149db2?util[_0x7c7e('0x6')](_0x149db2,{'showHidden':![],'depth':null}):'');};exports[_0x7c7e('0x9')]=function(_0x2ba07f,_0x1f464a){return client[_0x7c7e('0x9')](_0x2ba07f,{'body':_0x1f464a})[_0x7c7e('0xa')](function(_0x1011b5){logger[_0x7c7e('0x7')](_0x7c7e('0xb'),_0x2ba07f,_0x1011b5?util[_0x7c7e('0x6')](_0x1011b5,{'showHidden':![],'depth':null}):'');})['catch'](function(_0x48195c){logger[_0x7c7e('0x8')](_0x7c7e('0xb'),_0x2ba07f,_0x48195c?util['inspect'](_0x48195c,{'showHidden':![],'depth':null}):'');});};function getUser(_0x1050cb){return client[_0x7c7e('0x9')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x7c7e('0xc'),_0x7c7e('0xd'),'interface'],'where':_0x1050cb,'limit':0x1}})[_0x7c7e('0xa')](function(_0x53693e){logger[_0x7c7e('0x7')]('[utils][getUser]\x20where:%s',JSON[_0x7c7e('0xe')](_0x1050cb),_0x53693e?util[_0x7c7e('0x6')](_0x53693e,{'showHidden':![],'depth':null}):'');return _0x53693e[_0x7c7e('0xf')][_0x7c7e('0x10')]?_0x53693e[_0x7c7e('0xf')][0x0]:null;});}exports[_0x7c7e('0x11')]=function(_0x2a960b){return new BPromise(function(_0x36a42b,_0x17c76a){if(_0x2a960b){return getUser({'internal':_0x2a960b})[_0x7c7e('0xa')](function(_0x26026a){logger[_0x7c7e('0x12')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x2a960b,_0x26026a?_0x7c7e('0x13'):_0x7c7e('0x14'));return _0x36a42b(_0x26026a);})[_0x7c7e('0x15')](function(_0x70527a){logger[_0x7c7e('0x8')](_0x7c7e('0x16'),_0x70527a?util['inspect'](_0x70527a,{'showHidden':![],'depth':null}):'');return _0x36a42b(null);});}return _0x36a42b(null);});};exports['getUserByInterface']=function(_0x2b934d){return new BPromise(function(_0x32934c,_0x50c8a2){if(_0x2b934d){return getUser({'interface':_0x2b934d})['then'](function(_0x535bf1){logger['info'](_0x7c7e('0x17'),_0x2b934d,_0x535bf1?'found':'notfound');return _0x32934c(_0x535bf1);})['catch'](function(_0x4fb2bc){logger[_0x7c7e('0x8')]('[utils][getUserByInterface]',_0x4fb2bc?util[_0x7c7e('0x6')](_0x4fb2bc,{'showHidden':![],'depth':null}):'');return _0x32934c(null);});}return _0x32934c(null);});};exports[_0x7c7e('0x18')]=function(_0x1a8638){return new BPromise(function(_0x499f33,_0x47ee36){if(_0x1a8638){return getUser({'name':_0x1a8638})[_0x7c7e('0xa')](function(_0x38ef54){logger['info']('[utils][getUserByName]\x20name:%s\x20%s',_0x1a8638,_0x38ef54?'found':_0x7c7e('0x14'));return _0x499f33(_0x38ef54);})[_0x7c7e('0x15')](function(_0x2874e2){logger[_0x7c7e('0x8')]('[utils][getUserByName]',_0x2874e2?util[_0x7c7e('0x6')](_0x2874e2,{'showHidden':![],'depth':null}):'');return _0x499f33(null);});}return _0x499f33(null);});};exports[_0x7c7e('0x19')]=function(_0x3fb2ac){return new BPromise(function(_0x7333db,_0x390dd1){if(_0x3fb2ac){return client[_0x7c7e('0x9')](_0x7c7e('0x1a'),{'options':{'raw':!![],'attributes':['id',_0x7c7e('0xd'),_0x7c7e('0x1b'),'acw',_0x7c7e('0x1c')],'where':{'name':_0x3fb2ac},'limit':0x1}})['then'](function(_0x41c06f){logger['debug'](_0x7c7e('0x1d'),_0x3fb2ac,_0x41c06f?util[_0x7c7e('0x6')](_0x41c06f,{'showHidden':![],'depth':null}):'');logger[_0x7c7e('0x12')](_0x7c7e('0x1e'),_0x3fb2ac,_0x41c06f?_0x7c7e('0x13'):_0x7c7e('0x14'));return _0x7333db(_0x41c06f[_0x7c7e('0xf')][_0x7c7e('0x10')]?_0x41c06f[_0x7c7e('0xf')][0x0]:null);})['catch'](function(_0x200686){logger['error'](_0x7c7e('0x1f'),_0x200686?util[_0x7c7e('0x6')](_0x200686,{'showHidden':![],'depth':null}):'');return _0x7333db(null);});}return _0x7333db(null);});};exports['addTime']=function(_0x36a34c,_0x492489){return moment(_0x36a34c)[_0x7c7e('0x20')](_0x492489,_0x7c7e('0x21'))[_0x7c7e('0x22')](_0x7c7e('0x23'));};exports[_0x7c7e('0x24')]=function(_0x4cbb8d,_0x1de5d2){return moment(_0x4cbb8d)[_0x7c7e('0x25')](_0x1de5d2,_0x7c7e('0x21'))['format'](_0x7c7e('0x23'));};exports[_0x7c7e('0x26')]=function(_0x41458b,_0x29edc4){return moment(_0x41458b)['diff'](moment(_0x29edc4),'seconds');};exports[_0x7c7e('0x27')]=function(_0x23ea72,_0x3fb3ed){return parseInt(_0x23ea72,0xa)+parseInt(_0x3fb3ed,0xa);};exports[_0x7c7e('0x28')]=function(){return moment()[_0x7c7e('0x22')](_0x7c7e('0x23'));};exports['isAfter']=function(_0x51fc45,_0x317636){if(_0x317636){return moment(_0x51fc45)[_0x7c7e('0x29')](_0x317636);}return!![];};exports[_0x7c7e('0x2a')]=function(_0x421cc1,_0x3ffa62){if(_0x3ffa62){return moment(_0x421cc1)['isBefore'](_0x3ffa62);}else if(_0x421cc1){return!![];}return![];};
\ No newline at end of file
+var _0x4ea1=['subtractTime','seconds','sumTime','isAfter','isBefore','jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','request','then','[utils][request]\x20name:%s','error','GetUser','internal','name','interface','stringify','result','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','catch','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x376550,_0x4e935b){var _0x5530df=function(_0x320e15){while(--_0x320e15){_0x376550['push'](_0x376550['shift']());}};_0x5530df(++_0x4e935b);}(_0x4ea1,0x1ac));var _0x14ea=function(_0x2ded08,_0x1046cd){_0x2ded08=_0x2ded08-0x0;var _0x281ce1=_0x4ea1[_0x2ded08];return _0x281ce1;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x14ea('0x0'));var moment=require(_0x14ea('0x1'));var util=require(_0x14ea('0x2'));var client=jayson[_0x14ea('0x3')][_0x14ea('0x4')]({'port':0x2329});var logger=require(_0x14ea('0x5'))(_0x14ea('0x6'));exports[_0x14ea('0x7')]=function(_0x220b1e,_0x115dd7){logger[_0x14ea('0x7')](_0x220b1e,_0x115dd7?util[_0x14ea('0x8')](_0x115dd7,{'showHidden':![],'depth':null}):'');};exports[_0x14ea('0x9')]=function(_0x530440,_0x19c981){logger[_0x14ea('0x9')](_0x530440,_0x19c981?util[_0x14ea('0x8')](_0x19c981,{'showHidden':![],'depth':null}):'');};exports['error']=function(_0x1929b7,_0x2da441){logger['error'](_0x1929b7,_0x2da441?util[_0x14ea('0x8')](_0x2da441,{'showHidden':![],'depth':null}):'');};exports[_0x14ea('0xa')]=function(_0x79879,_0x5a2fae){return client[_0x14ea('0xa')](_0x79879,{'body':_0x5a2fae})[_0x14ea('0xb')](function(_0x2dbec2){logger['debug'](_0x14ea('0xc'),_0x79879,_0x2dbec2?util['inspect'](_0x2dbec2,{'showHidden':![],'depth':null}):'');})['catch'](function(_0xb4b224){logger[_0x14ea('0xd')](_0x14ea('0xc'),_0x79879,_0xb4b224?util[_0x14ea('0x8')](_0xb4b224,{'showHidden':![],'depth':null}):'');});};function getUser(_0x8a6903){return client[_0x14ea('0xa')](_0x14ea('0xe'),{'options':{'raw':!![],'attributes':['id',_0x14ea('0xf'),_0x14ea('0x10'),_0x14ea('0x11')],'where':_0x8a6903,'limit':0x1}})['then'](function(_0x582465){logger[_0x14ea('0x9')]('[utils][getUser]\x20where:%s',JSON[_0x14ea('0x12')](_0x8a6903),_0x582465?util['inspect'](_0x582465,{'showHidden':![],'depth':null}):'');return _0x582465[_0x14ea('0x13')]['length']?_0x582465[_0x14ea('0x13')][0x0]:null;});}exports[_0x14ea('0x14')]=function(_0x254cf6){return new BPromise(function(_0xbe654e,_0x197969){if(_0x254cf6){return getUser({'internal':_0x254cf6})[_0x14ea('0xb')](function(_0x3b1d6c){logger['info'](_0x14ea('0x15'),_0x254cf6,_0x3b1d6c?_0x14ea('0x16'):_0x14ea('0x17'));return _0xbe654e(_0x3b1d6c);})['catch'](function(_0x30e0a7){logger[_0x14ea('0xd')](_0x14ea('0x18'),_0x30e0a7?util[_0x14ea('0x8')](_0x30e0a7,{'showHidden':![],'depth':null}):'');return _0xbe654e(null);});}return _0xbe654e(null);});};exports[_0x14ea('0x19')]=function(_0x1f2bd0){return new BPromise(function(_0x8ed666,_0x437d45){if(_0x1f2bd0){return getUser({'interface':_0x1f2bd0})[_0x14ea('0xb')](function(_0x19680c){logger[_0x14ea('0x7')](_0x14ea('0x1a'),_0x1f2bd0,_0x19680c?_0x14ea('0x16'):_0x14ea('0x17'));return _0x8ed666(_0x19680c);})[_0x14ea('0x1b')](function(_0x5d7fa9){logger[_0x14ea('0xd')](_0x14ea('0x1c'),_0x5d7fa9?util[_0x14ea('0x8')](_0x5d7fa9,{'showHidden':![],'depth':null}):'');return _0x8ed666(null);});}return _0x8ed666(null);});};exports['getUserByName']=function(_0x27a8a8){return new BPromise(function(_0x34e85d,_0x43403e){if(_0x27a8a8){return getUser({'name':_0x27a8a8})[_0x14ea('0xb')](function(_0x264bdf){logger[_0x14ea('0x7')](_0x14ea('0x1d'),_0x27a8a8,_0x264bdf?_0x14ea('0x16'):'notfound');return _0x34e85d(_0x264bdf);})['catch'](function(_0x23f02f){logger[_0x14ea('0xd')](_0x14ea('0x1e'),_0x23f02f?util[_0x14ea('0x8')](_0x23f02f,{'showHidden':![],'depth':null}):'');return _0x34e85d(null);});}return _0x34e85d(null);});};exports['getVoiceQueueByName']=function(_0x83535a){return new BPromise(function(_0x2253bf,_0x804d9b){if(_0x83535a){return client[_0x14ea('0xa')](_0x14ea('0x1f'),{'options':{'raw':!![],'attributes':['id',_0x14ea('0x10'),_0x14ea('0x20'),_0x14ea('0x21'),_0x14ea('0x22')],'where':{'name':_0x83535a},'limit':0x1}})[_0x14ea('0xb')](function(_0x205436){logger[_0x14ea('0x9')](_0x14ea('0x23'),_0x83535a,_0x205436?util[_0x14ea('0x8')](_0x205436,{'showHidden':![],'depth':null}):'');logger['info'](_0x14ea('0x24'),_0x83535a,_0x205436?'found':_0x14ea('0x17'));return _0x2253bf(_0x205436[_0x14ea('0x13')][_0x14ea('0x25')]?_0x205436[_0x14ea('0x13')][0x0]:null);})[_0x14ea('0x1b')](function(_0x39e3aa){logger[_0x14ea('0xd')](_0x14ea('0x26'),_0x39e3aa?util['inspect'](_0x39e3aa,{'showHidden':![],'depth':null}):'');return _0x2253bf(null);});}return _0x2253bf(null);});};exports[_0x14ea('0x27')]=function(_0x3ff1e7,_0x5ba33d){return moment(_0x3ff1e7)['add'](_0x5ba33d,'seconds')[_0x14ea('0x28')](_0x14ea('0x29'));};exports[_0x14ea('0x2a')]=function(_0x55a864,_0xebb30f){return moment(_0x55a864)['subtract'](_0xebb30f,_0x14ea('0x2b'))[_0x14ea('0x28')](_0x14ea('0x29'));};exports['diffTime']=function(_0x579669,_0x42a71d){return moment(_0x579669)['diff'](moment(_0x42a71d),'seconds');};exports[_0x14ea('0x2c')]=function(_0x1f8fa3,_0x22eeb2){return parseInt(_0x1f8fa3,0xa)+parseInt(_0x22eeb2,0xa);};exports['now']=function(){return moment()[_0x14ea('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports['isAfter']=function(_0x201f8f,_0x4c6cfa){if(_0x4c6cfa){return moment(_0x201f8f)[_0x14ea('0x2d')](_0x4c6cfa);}return!![];};exports[_0x14ea('0x2e')]=function(_0x3b804e,_0x47faae){if(_0x47faae){return moment(_0x3b804e)[_0x14ea('0x2e')](_0x47faae);}else if(_0x3b804e){return!![];}return![];};
\ No newline at end of file